프로그램 카운터 (PC)
해석할 명령어를 저장하는 레지스터입니다.CPU 내의 제어장치는 명령어 레지스터 속 명령어를 해석한 뒤, 산술논리연산장치(ALU)로 연산하고 제어신호를 보냅니다.
명령어 레지스터 (IR)
해석할 명령어를 저장하는 레지스터입니다.CPU 내의 제어장치는 명령어 레지스터 속 명령어를 해석한 뒤, 산술논리연산장치(ALU)로 연산하고 제어신호를 보냅니다.
범용 레지스터 (GPR)
일반적인 상황에 자유롭게 사용 할 수 있는 레지스터입니다.일반적으로 CPU안에 여러 개의 범용 레지스터가 존재합니다.
플래그 레지스터 (FR)
플래그 값을 저장하는 레지스터입니다.CPU 상태에 대한 부가정보인 플래그 값 또는 연산의 결과를 저장하는 레지스터입니다.
플래그는 다양한 종류가 있습니다.
| 종류 | 설명 | 사용 예시 |
| 부호 플래그 | 부호 | 1일 경우 연산 결과는 음수 0일 경우 연산 결과는 양수 |
| 제로 플래그 | 0 인지 여부 | 1일 경우 연산 결과 0 0일 경우 연산 결과 0이 아님 |
| 캐리 플래그 | 올림수나 빌림수 발생여부 | 1일 경우 연산 결과에 올림수나 빌림수가 발생 0일 경우 발생 X |
| 오버플로우 플래그 | 오버플로우 발생여부 | 1일 경우 오버플로우 발생 0일 경우 발생 X |
| 인터럽트 플래그 | 인터럽트 가능 여부 | 1일 경우 인터럽트가 가능 0일 경우 불가능 |
| 슈퍼바이저 플래그 | 모드 종류 | 1일 경우 커널 모드로 실행 중 0일 경우 사용자 모드로 실행 중 |
스택 포인터
스택 데이터 위치를 가리키는 레지스터입니다.암묵적으로 스택처럼 사용하자고 약속된 메모리 영역을 스택 영역이라고 합니다.
스택 포인터는 메모리 내 스택 영역의 최상된 스택 데이터 위치를 가리키는 특별한 레지스터입니다.
마지막으로 스택에 저장된 데이터의 위치를 가리키며, 스택이 채워진 정도를 나타내는 레지스터입니다.
CPU의 개인 저장소: 레지스터(Register)
CPU는 메모리(RAM)에서 데이터를 읽고 쓰지만, 메모리까지 오가는 속도는 CPU의 연산 속도에 비해 매우 느립니다. 그래서 CPU 내부에는 **가장 빠르고 가까운 임시 저장 공간인 '레지스터'**가 존재합니다. 명령어의 주소, 데이터의 중간 값, CPU의 상태 등 모든 핵심 정보가 이 레지스터들을 거쳐 처리됩니다.
명령어 처리 관련 레지스터
명령어의 인출과 해석을 담당합니다.1. 프로그램 카운터 (PC): 다음에 실행할 명령어의 주소를 저장합니다. 명령어가 인출되면 자동으로 다음 주소를 가리키며 프로그램의 흐름을 제어합니다.
2. 명령어 레지스터 (IR): 메모리에서 방금 읽어 들인 명령어를 저장합니다. 제어장치는 여기에 담긴 명령어를 해석하여 연산을 지시합니다.
3. 메모리 주소 레지스터 (MAR): 읽거나 쓰고자 하는 메모리의 주소를 보관합니다. 주소 버스로 나가기 전의 관문입니다.
4. 메모리 버퍼 레지스터 (MBR): 메모리와 주고받는 데이터(값)를 임시 저장합니다. 데이터 버스와 연결되는 통로입니다.
연산 및 상태 관련 레지스터
데이터 계산과 현재의 상태를 나타냅니다.5. 범용 레지스터 (GPR): 특정한 용도 없이 데이터와 주소를 모두 저장할 수 있는 다목적 공간입니다. CPU 안에 여러 개가 존재하여 연산 중 발생하는 중간 값들을 자유롭게 저장합니다.
6. 플래그 레지스터 (FR): 연산 결과의 상태(양수/음수, 0 여부, 오버플로우 등)나 CPU의 현재 모드 정보를 비트 단위로 저장합니다.
| 종류 | 의미 | 값이 1일 때의 예시 |
| 부호 플래그 | 음수 여부 | 연산 결과가 음수임 |
| 제로 플래그 | 0 여부 | 연산 결과가 0임 (비교문에서 일치함) |
| 캐리 플래그 | 올림/빌림 | 자리 올림이나 빌림이 발생함 |
| 인터럽트 플래그 | 수용 여부 | 외부 신호(인터럽트)를 받아들일 수 있음 |
주소 지정 관련 레지스터
메모리의 특정 위치를 효율적으로 가리킵니다.7. 스택 포인터 (SP): 메모리 내 '스택 영역'의 최상단(마지막 데이터 위치)을 가리킵니다. 함수 호출과 복귀 시 데이터를 관리하는 데 필수적입니다.
8. 베이스 레지스터: 기준 주소를 저장합니다. 이 값에 변위(Offset)를 더해 실제 데이터의 위치를 찾는 '인덱스 주소 지정 방식' 등에 활용됩니다.
🎓 핵심 정리
레지스터는 종류마다 역할이 다르지만, 결국 "CPU가 지금 당장 처리해야 할 정보"를 담고 있다는 공통점이 있습니다. 프로그램 카운터(PC)가 흐름을 만들고, MAR/MBR이 메모리와 소통하며, ALU가 범용 레지스터의 데이터를 계산하고, 그 결과를 플래그 레지스터에 기록하는 이 일련의 과정을 이해하는 것이 컴퓨터 구조의 핵심입니다.