혼공컴운_CH4-2_레지스터

Today Jeeho Learned·2025년 10월 21일

💾 레지스터

레지스터의 종류와 역할을 학습하고, 각 레지스터를 통해 명령어가 처리되는 과정을 이해해보자.

  • 명령어와 데이터는 실행 전후로 반드시 레지스터에 저장된다.
  • 따라서 레지스터의 상태를 살펴보면 CPU 내부에서 어떤 일이 일어나는지를 알 수 있다.

📘 반드시 알아야 할 8개의 주요 레지스터

여러 전공 서적에서 공통적으로 중요하게 다루는 8개의 대표적인 레지스터를 살펴보자.

번호레지스터 이름역할 요약
1프로그램 카운터 (PC)다음에 실행할 명령어의 주소 저장
2명령어 레지스터 (IR)현재 실행 중인 명령어 저장
3메모리 주소 레지스터 (MAR)접근할 메모리 주소 저장
4메모리 버퍼 레지스터 (MBR/MDR)메모리와 주고받는 데이터 저장
5플래그 레지스터 (FR)연산 결과의 상태 정보 저장
6범용 레지스터 (GPR)일반적인 데이터 임시 저장
7스택 포인터 (SP)스택의 꼭대기(top) 위치 저장
8베이스 레지스터 (BR)기준(base) 주소 저장

🔹 프로그램 카운터 (Program Counter, PC)

  • 다음에 가져올 명령어의 주소를 저장한다.
  • 명령어 포인터(Instruction Pointer, IP)라고도 불린다.
  • 자료구조에서 포인터가 ‘다음 데이터를 가리키는 역할’을 하는 것과 유사하다.

🔹 명령어 레지스터 (Instruction Register, IR)

  • 메모리에서 읽어온 명령어를 일시적으로 저장한다.
  • 제어장치는 IR의 명령어를 해석하여 적절한 제어 신호를 발생시킨다.

🔹 메모리 주소 레지스터 (Memory Address Register, MAR)

  • 접근할 메모리의 주소를 저장하는 레지스터.
  • CPU가 주소 버스를 통해 메모리에 접근할 때, 주소 정보는 MAR을 거쳐 전달된다.

🔹 메모리 버퍼 레지스터 (Memory Buffer Register, MBR / MDR)

  • 메모리와 주고받는 데이터나 명령어를 임시 저장한다.
  • CPU가 데이터 버스를 통해 주고받는 모든 데이터는 MBR을 통과한다.

🔹 범용 레지스터 (General Purpose Register, GPR)

  • 임의의 데이터나 주소를 자유롭게 저장할 수 있는 다목적 레지스터.
  • CPU 내부에 여러 개 존재하며, 연산 시 중간 결과를 보관하는 데 사용된다.

🔹 플래그 레지스터 (Flag Register)

  • ALU의 연산 결과 상태(부호, 0, 캐리, 오버플로우 등) 를 저장한다.
  • CPU가 조건 분기나 예외 처리를 수행할 때 이 정보를 참고한다.

🔹 스택 포인터 (Stack Pointer, SP)

  • 스택의 꼭대기(top) 를 가리키는 레지스터.
  • 데이터를 스택에 넣거나 꺼낼 때 자동으로 값이 변하며,
    스택 주소 지정 방식에서 핵심적인 역할을 한다.

🔹 베이스 레지스터 (Base Register, BR)

  • 기준 주소(base address) 를 저장한다.
  • 프로그램이나 데이터 블록의 시작점을 나타내며,
    변위(Displacement) 주소 지정 방식에서 활용된다.

🧩 참고:
스택 포인터(SP)와 베이스 레지스터(BR)는 주소 지정 방식(Addressing Mode) 에서 특별한 역할을 한다.
주소 지정 방식은 CPU가 연산에 필요한 데이터의 메모리 위치를 찾는 방법을 의미한다.


🧮 특정 레지스터를 이용한 주소 지정 방식

1️⃣ 스택 주소 지정 방식 (Stack Addressing Mode)

  • 스택과 스택 포인터(SP) 를 이용하여 데이터를 처리하는 방식.
  • 스택은 LIFO(Last In First Out) 구조로,
    가장 나중에 들어온 데이터가 먼저 사용된다.
  • 프로그램 카운터가 “리스트 구조에서 다음 명령의 위치”를 가리킨다면,
    스택 포인터는 “스택 구조에서 다음 명령의 위치”를 가리킨다.

💡 메모리에는 스택으로 사용할 특정 영역이 정해져 있으며,
이 영역은 일반 메모리 공간과 달리 스택 형태(FIFO 구조) 로 사용된다.


2️⃣ 변위 주소 지정 방식 (Displacement Addressing Mode)

  • 오퍼랜드 필드 값 + 특정 레지스터 값을 더해 유효 주소를 계산한다.
  • 명령어는 일반적으로 연산 코드, 레지스터, 오퍼랜드로 구성된다.
  • 어떤 레지스터를 사용하는지에 따라
    상대 주소 지정 방식베이스 레지스터 주소 지정 방식으로 나뉜다.

🔸 (1) 상대 주소 지정 방식 (Relative Addressing)

  • 프로그램 카운터(PC) 와 오퍼랜드 값을 더해 유효 주소를 계산한다.
  • PC는 “다음에 읽을 명령어의 주소”를 가지고 있으므로,
    • +1이면 PC + 1번지의 명령어 실행
    • -1이면 PC - 1번지의 명령어 실행

예: 분기 명령어(Branch)는 주로 이 방식을 사용한다.


🔸 (2) 베이스 레지스터 주소 지정 방식 (Base Register Addressing)

  • 베이스 레지스터(BR) 에는 기준 주소가,
    오퍼랜드에는 기준 주소로부터 떨어진 거리가 저장된다.
  • 두 값을 더해 유효 주소를 계산하고, 해당 위치의 명령어를 실행한다.

예: 운영체제가 프로그램을 메모리의 여러 위치에 배치할 때 유용하다.


📑 정리

구분레지스터주요 역할
제어프로그램 카운터다음 명령어 주소 관리
제어명령어 레지스터현재 명령어 저장 및 해석
메모리 관련메모리 주소 레지스터접근할 메모리 주소 저장
메모리 관련메모리 버퍼 레지스터메모리와 데이터 교환
연산 관련범용 레지스터데이터 임시 저장 및 연산 보조
상태 관리플래그 레지스터연산 결과 상태 정보 저장
주소 지정스택 포인터스택의 꼭대기 주소 추적
주소 지정베이스 레지스터기준 주소 관리

✅ 핵심 요약

  • 레지스터는 CPU 내부에서 가장 빠르게 접근 가능한 기억장소이다.
  • 모든 명령어 처리 과정은 레지스터를 거친다.
  • 레지스터는 제어, 연산, 메모리 접근, 주소 계산 등
    CPU의 모든 동작의 중심 역할을 수행한다.
profile
기록해야 (살아)남는다 !

0개의 댓글