본문 바로가기
운영체제

[컴퓨터 구조] 레지스터

by 송파감자 2024. 8. 8.

CPU 안에는 다양한 레지스터가 있다

 

1. 꼭 알아야 할 레지스터 8가지

  • 프로그램 카운터
  • 명령어 레지스터
  • 메모리 주소 레지스터
  • 메모리 버퍼 레지스터
  • 플래그 레지스터
  • 범용 레지스터
  • 스택 포인터
  • 베이스 레지스터

 

1.1 프로그램 카운터?

  • PC 프로그램 카운터는 메모리에서 일을 명령어의 주소 저장
  • 명령어 포인터(IP : Instruction Pointers)라고도 부름

1.2. 명령어 레지스터?

  • IR(Instruction Register)은 해석할 명령어를 저장하는 레지스터
  • 제어장치는 명령어 레지스터 속 명령어를 받아서 해석하고 제어신호를 보냄

1.3. 메모리 주소 레지스터?

  • MAR(Memory Address Register)는 메모리의 주소를 저장하는 레지스터
  • CPU가 읽을 주소 값을 버스로 보낼 때 메모리 주소 레지스터 거침

1.4. 메모리 버퍼 레지스터?

  • MBR(Memory Buffer Register)는 메모리와 주고 받을 값(데이터, 명령)을 저장하는 레지스터
  • MDR(Memory Data Register)라고도 부름
  • 메모리에 쓰고 싶은 값이나 메모리로부터 전달 받은 값은 메모리 버퍼 레지스터를 거침

 

 

예시

1)

  • CPU가 실행할 프로그램은 1000 ~1500번지까지 저장
  • 1000번지에는 1101(2)가 저장되어 있음


2) 

  • 프로그램을 처음 실행하려면 프로그램 카운터에는 1000이 저장됨
  • == 메모리에서 가져올 명령어가 1000번지에 있다


3)

  • 1000번지를 읽으려면 주소버스로 1000번지를 보내야 함
  • 이를 위해서 메모리 주소 레지스터에는 1000이 저장..


4)

  • '메모리 읽기' 제어 신호와 메모리 주소 레지스터 값이 각각 제어버스와 주소 버스를 통해서 메모리로 보내짐

 


 

5)

  • 메모리 1000번지에 저장된 값은 데이터 버스를 통해서 메모리 버퍼 레지스터로 저장됨
  • 프로그램 카운터는 증가돼서 다음 명령어 읽을 준비


6)

메모리 버퍼 레지스터에 저장된 값은 명령어 레지스터로 이동함


7) 제어 장치는 명령어 레지스터의 명령어 해석하고 제어 신호 발생시킴

 


1.5. 범용 레지스터?

  • General Purpose Register는 일반적인 상황에서 자유롭게 사용할 수 있는 레지스터
  • 데이터랑 주소 모두 저장할 수 있음
  • CPU 안에는 여러개의 범용 레지스터 있음

1.6. 플래그 레지스터?

  • 연산결과 또는 CPU 상태에 대산 부가적인 정보 저장하는 레지스터

 

2. 특정 레지스터를 이용한 주소 지정 방식1 : 스택 주소 지정 방식

  • 스택포인터와 베이스 레지스터는 주소 지정에 사용하는 특별한 레지스터임
  • 스택포인터는 스택 주소 지정방식이라는 주소 지정방식에 사용됨
  • 프로그램 카운터, 베이스 레지스터는 변위주소 지정 방식이라는 주소 지정 방식에 사용

2.1. 스택 주소 지정 방식?

  • 스택, 스택 포인터를 이용한 주소 지정 방식
  • 스택은 접시 쌓기 개념
  • 스택 포인터는 스택 꼭대기 가리키는 레지스터임-> 스택에 마지막으로 저장한 값의 위치를 저장하는 레지스터

3. 특정 레지스터를 이용한 주소 지정 방식2 : 변위 주소 지정 방식

  • 명령어는 연산코드와 오퍼랜드로 이루어져있음
  • 오퍼랜드 필드에는 메모리의 주소가 담길 때도 있음
  • 변위 주소 지정방식은 오퍼랜드 필드의 값과 특정 레지스터의 값 더해서 유효 주소 얻어내는 주소 지정 방식임,,,
  • 오퍼랜드 필드의 주소와 어떤 레지스터를 더하는지 따라 상대 주소 지정 방식, 베이스 레지스터 주소 지정방식으로 나눔

 

 

3.1. 상대 주소 지정방식

  • 오퍼랜드와 프로그램 카운터의 값을 더해 유효 주소를 얻는 방식
  • -3 이라면? 세 번째 이전 번지로 이동
  • 그냥 3? 세 번째 이후 번지로 이동
  • if문 처럼 분기하여 특정 주소의 코드 실행할 때 사용함

 

3.2. 베이스 레지스터 주소 지정 방식

  • 오퍼랜드와 베이스 레지스터의 값을 더해 유효 주소 얻는 방식
  • 베이스레지스터는 기준 주소
  • 오퍼랜드는 기준주소로 부터 떨어진 거리 역할!

 

 

 

 

 

전공생 동생에게 물어보니, 동생은 왕 기초 개념이라고 열심히 설명해주지만 추상적으로 개념이 둥둥 떠다니기만 한다. 복습하면서 익숙해지는 방법을 택하겠다.