[컴퓨터 구조] CPU와 레지스터의 개념과 흐름 정리

송현진·2025년 7월 20일
0

CS공부

목록 보기
16/17

CPU와 레지스터는 어떤 관계일까?

컴퓨터 구조를 공부할 때 CPU와 레지스터는 항상 같이 언급된다. 하지만 막상 설명하려고 하면 “중앙처리장치가 연산하고 레지스터는 저장한다” 정도로만 기억나고 이 둘이 어떻게 협력하는지 흐름이 잘 그려지지 않았다. 이번 TIL에서는 이 두 요소의 개념과 역할 그리고 그 상호작용을 정리해본다.

CPU란?

CPU(Central Processing Unit)는 컴퓨터의 두뇌 역할을 한다. 프로그램의 명령어를 해석하고 실행하는 가장 핵심적인 연산 장치다.

CPU의 주요 구성 요소

구성 요소설명
CU (제어장치)명령어를 해석하고 흐름 제어
ALU (산술논리연산장치)덧셈, 뺄셈 등 연산 수행
레지스터CPU 내부의 초고속 임시 저장소
캐시자주 쓰는 데이터를 임시 저장하는 공간

레지스터란?

레지스터(Register)는 CPU 내부에 내장된 초고속 기억장치이다.
RAM보다 훨씬 빠르고 용량은 적지만 명령어 실행에 필요한 데이터를 아주 빠르게 읽고 쓸 수 있다.

특징

  • 용량: 보통 수십 ~ 수백 바이트 수준
  • 속도: CPU와 동일 클럭으로 작동 → 메모리보다 수십~수백 배 빠름
  • 종류
    • 범용 레지스터 (General Purpose Register): 연산 임시 저장용 (예: R0 ~ R15)
    • 특수 레지스터 (Special Purpose Register): PC, SP, IR 등 제어용

레지스터의 종류와 역할

CPU 내부의 레지스터는 용도에 따라 여러 종류로 나뉘며 각각 고유한 기능을 수행한다. 대표적인 레지스터는 다음과 같다.

레지스터이름 (약어)역할
프로그램 카운터PC (Program Counter)다음에 실행할 명령어의 주소를 저장
명령어 레지스터IR (Instruction Register)현재 실행 중인 명령어를 저장
누산기ACC (Accumulator)연산 결과를 저장하는 범용 레지스터
스택 포인터SP (Stack Pointer)스택의 최상단 주소를 저장. 함수 호출/리턴 시 활용
상태 레지스터 / 플래그 레지스터PSW (Program Status Word) 또는 FLAGS연산 결과에 따른 상태(Zero, Carry, Overflow 등)를 저장
범용 레지스터R0 ~ Rn덧셈, 뺄셈 등 연산에 필요한 값을 임시 저장 (예: RAX, RBX 등)

레지스터를 활용한 연산 흐름

x86 아키텍처에서 두 값을 더하는 예를 보자.
RAX와 RBX는 범용 레지스터로 각각의 값은 CPU 내부에 저장되어 있다.

ADD RAX, RBX   ; RAX = RAX + RBX

이 명령어는 RBX 레지스터의 값을 RAX에 더하고 결과를 다시 RAX에 저장한다. 연산은 ALU에서 수행되고 레지스터 간 데이터 이동과 저장은 CPU 내부 버스를 통해 이루어진다. 결과적으로 이 연산은 모두 레지스터 안에서만 처리되기 때문에 매우 빠르다. 이처럼 레지스터는 연산 대상이자 결과 저장소로 직접 사용되며 CPU 성능에 큰 영향을 미친다.

CPU와 레지스터의 관계

간단히 말하면 CPU는 연산하고 레지스터는 그 과정에 필요한 데이터를 잠깐 보관한다.

이미지 출처: https://i1hwan.com/cs-intro-data-manipulation/

예시로 흐름 정리

1. PC가 다음 명령어의 주소를 가리킴
2. CU가 해당 주소의 명령어를 메모리에서 읽어와 IR에 저장
3. 명령어 실행: 연산에 필요한 값은 범용 레지스터(R1, R2 등)에 저장되어 있음
4. ALU가 연산 수행 후 결과를 ACC에 저장
5. 조건에 따라 FLAGS가 상태 기록 (예: 결과가 0이면 Zero 플래그 세팅)
6. 함수 호출 시 SP가 스택에 현재 위치 저장

이처럼 레지스터는 단순한 저장소 그 이상으로 명령어 처리 흐름 전체에서 중요한 역할을 수행한다. 특히 명령어를 꺼내는(fetch), 해석하는(decode), 실행하는(execute) 과정에서 레지스터 간 정보 전달이 핵심이다.

메모리(RAM)와의 차이점은?

항목레지스터메모리(RAM)
위치CPU 내부CPU 외부
속도매우 빠름느림 (수십 배)
용량매우 작음수 GB 이상
역할즉시 사용 데이터 저장대용량 일반 데이터 저장

메모리는 책장, 레지스터는 손에 들고 있는 종이 쪽지에 비유할 수 있다. 즉, 자주 쓰는 데이터일수록 레지스터에 두고 덜 자주 쓰는 데이터는 메모리에 둔다고 이해하면 쉽다.

📝 배운점

CPU와 레지스터의 관계를 보다 구체적으로 이해할 수 있었다. 단순히 "레지스터는 빠른 저장소"라고만 알고 있었던 개념에서 벗어나 레지스터가 명령어 수행의 핵심적인 연결고리라는 점을 알게 되었다. 특히 명령어를 가져오는 과정(PC -> IR), 연산 수행(범용 레지스터 -> ALU -> ACC), 조건 판별(FLAGS), 함수 호출/복귀(SP)까지 모든 흐름에서 레지스터가 중요한 역할을 수행한다는 것이 인상 깊었다.

또한, CPU 내부 구성 요소 간 협업 구조를 그림과 예시를 통해 직관적으로 파악할 수 있었고, 메모리(RAM)와의 차이점도 '손에 들고 있는 쪽지 vs 책장'이라는 비유로 쉽게 이해할 수 있었다. 앞으로 어셈블리어나 시스템 프로그래밍을 공부할 때 이런 레지스터 구조를 이해하고 있으면 코드 흐름이 더 잘 보일 것 같다.


참고

profile
개발자가 되고 싶은 취준생

0개의 댓글