ALU,제어장치에 이어서 마지막으로 CPU의 구성 요소인 레지스터에 대해 정리해보려고 합니다.
CPU마다 여러 개의 레지스터를 가지고 있고, 각기 다른 역할을 가지고 있습니다. 그 중 많은 CPU가 공통으로 포함하고 있고, 중요한 8개의 레지스터에 대해 정리하겠습니다.
1. 프로그램 카운터 (Program Counter,PC)
프로그램 카운터는 메모리에서 가져올 명령어의 주소, 즉 다음에 실행할 명령어의 주소를 저장합니다. 프로그램 카운터를 명령어 포인터라고 부르는 CPU도 있습니다.
2. 명령어 레지스터 (Instruction Registr, IR)
명령어 레지스터는 해석할 명령어, 즉 방금 메모리에서 읽어 들인 명령어를 저장하는 레지스터입니다. 제어장치에 대한 포스팅에서 정리한 것 처럼 제어장치는 명령어 레지스터 속 명령어를 받아들이고 해석한 뒤에 제어신호를 내보냅니다.
3. 메모리 주소 레지스터 (Memory Address Register, MAR)
메모리 주소 레지스터는 메모리의 주소를 저장하는 레지스터입니다. CPU가 주소 버스를 통해서 읽어 들이고자하는 주소 값을 보낼 때 메모리 주소 레지스터를 거치게 됩니다.
4. 메모리 버퍼 레지스터 (Memory Buffer Register, MBR)
메모리 버퍼 레지스터는 메모리와 주고 받을 값(데이터와 명령어)을 저장하는 레지스터입니다. 즉, 메모리에 쓰고 싶은 값이나 메모리로부터 전달받은 값은 메모리 버퍼 레지스터를 거칩니다.
이 4개의 레지스터와 ALU, 제어장치가 어떻게 협력하는 지 간단한 예를 통해 살펴보겠습니다.
예시: 간단한 덧셈 명령어 실행
CPU가 메모리에 저장된 "두 수를 더하라"는 명령어(ADD 100, 200, 즉 메모리 주소 100과 200의 값을 더함)를 실행한다고 가정하겠습니다.
단계 1: 명령어 가져오기 (Fetch)
- PC: 현재 값이 500(명령어가 저장된 메모리 주소)이라고 가정. PC는 500을 MAR로 전달.
- MAR: 500을 저장하고 메모리에 "주소 500에서 데이터를 읽어달라"고 요청.
- 메모리 → MBR: 메모리 주소 500에 저장된 명령어(ADD 100, 200)가 MBR로 전달됨.
- MBR → IR: MBR에 저장된 명령어가 IR로 이동. 이제 IR에는 ADD 100, 200이 저장됨.
- PC 증가: 명령어가 가져와졌으므로 PC 값이 501로 증가(PC ← PC + 1).
단계 2: 명령어 해석 (Decode)
- IR → 제어장치: IR에 저장된 ADD 100, 200을 제어장치가 분석. "덧셈 연산을 수행하고, 주소 100과 200에서 데이터를 가져오라"는 신호를 생성.
단계 3: 데이터 가져오기 (Operand Fetch)
- 제어장치 → MAR: 주소 100을 MAR에 저장.
- 메모리 → MBR: 주소 100에 저장된 값(예: 5)이 MBR로 전달.
- MBR → ALU: MBR의 값(5)이 ALU의 한쪽 입력으로 전달.
- 반복: 주소 200을 MAR에 저장하고, 값(예: 7)이 MBR을 거쳐 ALU의 다른 입력으로 전달.
단계 4: 연산 수행 (Execute)
- ALU: 제어장치의 신호를 받아 5와 7을 더함. 결과(12)를 출력.
- ALU → MBR: 연산 결과(12)가 MBR에 임시 저장.
단계 5: 결과 저장 (Store)
- 제어장치 → MAR: 결과를 저장할 메모리 주소(예: 300)를 MAR에 저장.
- MBR → 메모리: MBR의 값(12)이 메모리 주소 300에 기록됨.
5. 플래그 레지스터 (Flag Register)
ALU의 연산 결과나 CPU 상태를 나타내는 비트 플래그를 저장합니다. 제어장치가 플래그 값을 확인하여 조건에 맞는 신호를 발생시킵니다.
6. 범용 레지스터
7. 스택 포인터 (Stack Pointer)
자료구조를 공부해보신 분들이라면 스택 자료구조에 대하여 들어보셨을 겁니다. 스택 포인터는 스택 메모리의 최상단 주소를 저장하는 레지스터입니다.
8. 베이스 레지스터 (Base Register)
'CS > 컴퓨터 구조' 카테고리의 다른 글
| 🖥️컴퓨터 구조 - 명령어 사이클과 인터럽트 (0) | 2025.03.17 |
|---|---|
| 🖥️컴퓨터 구조 - CPU의 제어 장치 (0) | 2025.03.07 |
| 🖥️컴퓨터 구조 - CPU의 ALU (0) | 2025.03.06 |
| 🖥️컴퓨터 구조 - 컴퓨터의 4가지 핵심 부품과 역할 (1) | 2025.03.05 |