CPU 내부에는 매우 빠르게 접근 가능한 작은 저장 공간인 레지스터(Register) 가 존재한다.
메모리보다 훨씬 빠른 접근 속도를 가지고 있어 프로그램 실행 과정에서 핵심적인 역할을 담당한다.
이번 글에서는 레지스터의 개념 → 주요 레지스터 종류 → 플래그 레지스터 구조 → 스택 포인터까지 한 번에 정리해본다.
1. 레지스터란
레지스터는 CPU 내부에 존재하는 초고속 임시 저장장치이다.
✔ 레지스터의 특징
- 메모리(RAM)보다 훨씬 작지만 훨씬 빠르다.
- CPU는 프로그램 수행 중 필요한 값(데이터, 주소, 명령어)을 레지스터에 저장하여 처리 속도를 높인다.
- 디버거(WinDbg, gdb)를 통해 현재 레지스터의 상태를 직접 확인할 수도 있다.
2. 주요 레지스터 종류
1️⃣ 프로그램 카운터 (PC, Program Counter)
프로그램 카운터는 다음에 실행할 명령어의 주소를 가지고 있는 레지스터이다.
✔ 프로그램 카운터의 역할
- 현재 프로그램에서 어떤 명령어가 다음에 실행될 것인지를 결정한다.
- 명령어가 하나 실행될 때마다 보통 PC 값은 자동으로 +1 증가한다.
- 일부 CPU는 PC를 Instruction Pointer(IP) 라고 부르기도 한다.
2️⃣ 명령어 레지스터 (IR, Instruction Register)
명령어 레지스터는 방금 메모리에서 읽어온 명령어를 저장하는 레지스터이다.
✔ IR 역할 요약
- 메모리에서 가져온 명령어를 잠시 보관
- 제어장치는 IR에 저장된 명령어를 해석
- 해석한 내용에 따라 ALU(산술논리연산장치)나 다른 CPU 구성 요소로 제어 신호 전달
3️⃣ 범용 레지스터 (General Purpose Register)
범용 레지스터는 일반적인 작업에 자유롭게 사용되는 레지스터이다.
- 데이터를 저장
- 주소를 저장
- 연산 중간값을 저장
- 여러 개 존재 (예: x86의 eax, ebx, ecx, edx 등)
3. 플래그 레지스터 (Flag Register)
플래그 레지스터는 연산 결과 또는 CPU 상태에 대한 추가 정보를 저장하는 비트들의 집합이다.
각 비트는 특정한 의미를 가지며, 이 값들을 통해 CPU는 다음 명령어 수행 여부나 조건 분기를 결정한다.
1️⃣ 플래그 레지스터 도식
아래는 플래그 레지스터를 비트 단위로 표현한 시각적 구조이다.
┌───────────────────────────────────────────────────────────────┐
│ 부호 │ 제로 │ 캐리 │ 오버플로우 │ 인터럽트 │ 슈퍼바이저 │ 예약 │ ... │
│ (SF) │ (ZF) │ (CF) │ (OF) │ (IF) │ (SF) │ ... │ ... │
├───────┼────────┼────────┼─────────────┼───────────┼─────────────┼─────┼─────┤
│ 0 │ 1 │ 0 │ 0 │ 0 │ 0 │ ... │ ... │
└───────────────────────────────────────────────────────────────┘
각 비트 의미 요약
- 부호 플래그(SF) : 연산 결과가 음수인지 양수인지
- 제로 플래그(ZF) : 연산 결과가 0인지 여부
- 캐리 플래그(CF) : 자리올림/자리내림 발생 여부
- 오버플로우 플래그(OF) : 연산 오버플로우 발생 여부
- 인터럽트 플래그(IF) : 인터럽트 가능 여부
- 슈퍼바이저 플래그(SF) : 커널 모드인지 사용자 모드인지
4. 스택 포인터 (Stack Pointer)
스택 포인터는 메모리의 스택 영역에서 가장 최근에 push된 데이터(즉, 스택의 top)를 가리킨다.
스택은 LIFO(Last-In-First-Out) 구조이므로,
- push(데이터 삽입) → 스택 포인터가 위로 이동
- pop(데이터 제거) → 스택 포인터가 아래로 이동
1️⃣ 스택 포인터 도식도
메모리 (Stack 영역)
┌───────────────┐ ← 높은 메모리 주소
│ │
│ (비어있음) │
│---------------│
│ 스택 데이터3 │ ← SP (Stack Pointer: top)
│---------------│
│ 스택 데이터2 │
│---------------│
│ 스택 데이터1 │
└───────────────┘ ← 낮은 메모리 주소
스택 포인터(SP)는 항상 스택의 가장 위(top) 를 가리킨다.
정리하면
| 레지스터 종류 | 기능 |
| PC(프로그램 카운터) | 다음에 실행할 명령어 주소 저장 |
| IR(명령어 레지스터) | 방금 가져온 명령어 저장 |
| 범용 레지스터 | 데이터/주소 등 작업용 |
| 플래그 레지스터 | 연산 결과 상태를 단일 비트로 저장 |
| 스택 포인터 | 스택의 최상단 데이터 주소 저 |
CPU 레지스터는 프로그램 실행의 “핵심 좌석”이라고 할 수 있다.
CPU가 무엇을 하고 있는지 진짜로 이해하려면 레지스터를 이해하는 것이 필수적이다.
'컴퓨터 과학' 카테고리의 다른 글
| [컴퓨터 구조] CPU - 성능 향상을 위한 설계 (0) | 2025.11.23 |
|---|---|
| [컴퓨터 구조] CPU - 인터럽트 (0) | 2025.11.23 |
| [컴퓨터 구조] 컴퓨터가 이해하는 정보 -명령어 (0) | 2025.11.23 |
| [컴퓨터 구조] 컴퓨터가 이해하는 정보 - 데이터 문자 (0) | 2025.11.22 |
| [컴퓨터 구조] 컴퓨터가 이해하는 정보 - 데이터 숫자 (0) | 2025.11.22 |