레지스터란?
레지스터는 CPU의 임시 저장 장치입니다. 데이터와 명령어를 실행 전후로 레지스터에 저장하며 사용합니다.
레지스터의 역할
레지스터는 다양한 종류가 있으며 각기 다른 역할과 특징을 가지고 있습니다. 이번에는 공통적으로 CPU에서 사용되는 8개의 레지스터를 설명하겠습니다.
레지스터의 종류 8가지
- 프로그램 카운터 (PC)
- 명령어 레지스터 (IR)
- 메모리 주소 레지스터 (MAR)
- 메모리 버퍼 레지스터 (MBR)
- 플래그 레지스터 (FR)
- 범용 레지스터 (GPR)
- 스택 포인터 (SP)
- 베이스 레지스터 (BR)
프로그램 카운터 (Program Counter, PC)
Program Counter는 다음에 실행할 명령어의 메모리 주소를 가지고 있는 레지스터입니다. 현재 실행 중인 명령어의 메모리 주소가 4번지라면, 프로그램 카운터는 5번지를 가리킵니다.
명령어 레지스터 (Instruction Register, IR)
CPU가 메모리에서 명령어를 가져오면 저장하는 레지스터입니다. 제어 장치(CU)는 명령어 레지스터를 통해 명령어를 읽고 해석합니다.
메모리 주소 레지스터 (Memory Address Register, MAR)
CPU가 메모리에서 읽기/쓰기를 할 때 필요한 주소를 저장하는 레지스터입니다.
주소 버스를 통해 메모리 주소 레지스터를 거치며 이동합니다. CPU에서 메모리로의 단방향 전송만 가능합니다.
메모리 버퍼 레지스터 (Memory Buffer Register, MBR)
CPU와 메모리 간의 데이터를 저장하는 레지스터입니다. CPU와 메모리가 데이터 버스를 통해 값을 주고 받을 때 메모리 버퍼 레지스터를 거치며 이동합니다. 이는 양방향 전송이 가능합니다. (메모리 데이터 레지스터라고도 불립니다)
4가지 레지스터 사용 예시
- 프로그램 카운터가 다음에 실행할 명령어가 있는 메모리 주소를 메모리 주소 레지스터에 보낸 뒤,
메모리의 해당 주소로 접근합니다. 이와 동시에 제어 장치는 읽기 신호를 제어 버스를 통해 메모리에 전송합니다.
해당 주소에 있는 명령어를 가져옵니다. 이때 프로그램 카운터의 값은 +1이 됩니다
(다음에 실행할 명령어의 주소를 저장하고 있기 때문). - 해당 명령어는 메모리 버퍼 레지스터를 통해 가져옵니다.
- 명령어는 명령어 레지스터에 저장됩니다.
- 제어 장치가 명령어를 읽고 해석하여 처리합니다.
범용 레지스터 (General Purpose Register, GPR)
이름 그대로 다양한 상황에서 자유롭게 사용할 수 있는 레지스터입니다.
프로그램 카운터나 명령어 레지스터와 달리 데이터와 주소를 모두 저장할 수 있습니다.
일반적으로 CPU에는 여러 개의 범용 레지스터가 있습니다.
플래그 레지스터 (Flag Register, FR)
플래그는 데이터의 부가적인 정보를 가지고 있는 데이터입니다.
플래그 레지스터는 연산 결과와 CPU 상태에 대한 부가적인 정보를 저장합니다.
스택 포인터 (Stack Pointer, SP)
스택의 꼭대기를 가리키는 레지스터입니다.
메모리에는 스택이라는 영역이 할당되어 있으며,
스택 포인터는 이 영역에 저장된 데이터가 어디까지 채워져 있는지를 나타냅니다.
베이스 레지스터 (Base Register, BR)
베이스 레지스터는 메모리 주소의 기준 주소를 정해주는 레지스터입니다.
예를 들어, 메모리 주소 50을 가져올 때 베이스 레지스터가 200을 가리키고 있다면
실제 메모리에서는 250 주소에 해당하는 값을 가져옵니다.
'CS > 컴퓨터 구조' 카테고리의 다른 글
[컴퓨터 구조] CPU 속도에 관여하는 것 (1) | 2024.10.13 |
---|---|
[컴퓨터 구조] 명령어 사이클과 인터럽트 (0) | 2024.07.16 |
[컴퓨터 구조] CPU 제어장치 (CU) (0) | 2024.07.05 |
[컴퓨터 구조] CPU의 ALU (0) | 2024.07.02 |
[컴퓨터 구조] 컴퓨터 4가지 핵심부품(CPU) (0) | 2024.06.28 |