ABOUT

성능과 운영 안정성을 함께 끌어올리는 개발자입니다.

92% Positional Error Reduction
79% p95 Latency Improvement
90%+ Long Tasks Reduction

2022.02 · 한국장학재단

우수 멘티

한국장학재단 사회 리더 대학생 멘토링 IT

2022.10 · 동작구청

우수 인재상

동작구청 우수 SW 인재

2025.05 · (주) 그랩

프로그래밍 우수상

(주) 그랩 우수 프로그램 개발

2025.05 · AWSKRUG

AWS한국사용자모임 발표

AI agent 스크립트 튜닝 관련 발표

ComputerScience

Development

Engineering

Trouble Shooting

GUESTBOOK

첫 마음부터
함께 나누는 온기

방명록 작성하러 가기

SUBSCRIBE

최신소식을
편하게 만나보세요.

레지스터 종류

 

프로그램 카운터 (PC)

해석할 명령어를 저장하는 레지스터입니다.
메모리에서 방금 읽어 들일 명령어를 저장하는 레지스터입니다.
CPU 내의 제어장치는 명령어 레지스터 속 명령어를 해석한 뒤, 산술논리연산장치(ALU)로 연산하고 제어신호를 보냅니다.

 

명령어 레지스터 (IR)

해석할 명령어를 저장하는 레지스터입니다.
메모리에서 방금 읽어 들일 명령어를 저장하는 레지스터입니다.
CPU 내의 제어장치는 명령어 레지스터 속 명령어를 해석한 뒤, 산술논리연산장치(ALU)로 연산하고 제어신호를 보냅니다.

 

범용 레지스터 (GPR)

일반적인 상황에 자유롭게 사용 할 수 있는 레지스터입니다.
데이터와 명령어, 주소 모두를 저장할 수 있습니다.
일반적으로 CPU안에 여러 개의 범용 레지스터가 존재합니다.

 

플래그 레지스터 (FR)

플래그 값을 저장하는 레지스터입니다.
플래그란 CPU가 명령어를 처리하는 과정에서 반드시 팜조할 상태 정보를 의미하는 비트입니다.
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가 범용 레지스터의 데이터를 계산하고, 그 결과를 플래그 레지스터에 기록하는 이 일련의 과정을 이해하는 것이 컴퓨터 구조의 핵심입니다.

728x90