CPU는 컴퓨터에서 가장 핵심적인 역할을 수행하는 부분으로, '인간의 두뇌'에 해당하며 크게 연산장치, 제어장치, 레지스터 3가지로 구성된다.
1+2를 계산하면 그 결과인 3을 잠시 보관했다가, 나중에 다른 연산에 다시 쓰거나 메모리로 보낼 때 사용한다.| 레지스터 | 핵심 키워드 | 비유 |
|---|---|---|
| PC | 다음 명령어 주소 | 다음 페이지를 가리키는 책갈피 |
| IR | 현재 실행 명령어 | 지금 읽고 있는 문장 |
| MAR | 메모리 주소 | 택배를 보낼 집 주소 |
| MBR | 메모리 데이터 | 택배 상자 안의 물건 |
| AC | 연산 결과 저장 | 계산기의 결과창 |
주기억장치 준비: 주기억장치는 입력장치에서 입력받은 데이터 또는 보조기억장치에 저장된 프로그램을 읽어온다.
CPU의 처리: CPU는 프로그램을 실행하기 위해 주기억장치에 저장된 프로그램 명령어와 데이터를 읽어와 처리하고, 그 결과를 다시 주기억장치에 저장한다.
결과 처리: 주기억장치는 처리 결과를 보조기억장치에 저장하거나 출력장치로 보낸다.
제어: 제어장치는 위 과정에서 명령어가 순서대로 실행되도록 각 장치를 제어한다.
🌟 컴퓨터 시스템 동작 과정 이해하기
컴퓨터 시스템의 동작 과정을 '요리하는 주방'에 비유해서 이해해 보자.
👉️ 컴퓨터 시스템: "최고급 레스토랑 주방"
- 각 부분의 역할 매칭
- CPU (요리사): 모든 연산과 제어를 담당하는 핵심 주인공
- 레지스터 (조리대/손): 요리사가 지금 당장 손에 들고 있거나 조리대 위에 올려둔 아주 좁지만 가장 빠른 공간
- 연산 장치 (가스레인지): 실제로 재료를 볶고 지지는(연산) 곳
- 제어 장치 (주방장): 레시피를 읽고 "지금은 불을 켜!", "지금은 재료를 가져와!"라고 지시한다.
- 주기억장치/RAM (작업대): 요리하기 위해 냉장고에서 꺼내온 재료들을 펼쳐 놓는 넓은 공간
- 보조기억장치/SSD·HDD (냉장고): 수많은 재료(데이터)와 레시피(프로그램)를 오랫동안 보관하는 큰 창고
- 입력장치 (주문서): 손님이 주문한 내용
- 출력장치 (완성된 요리): 손님 식탁에 나가는 음식
- 전체 동작 흐름 (주방의 업무 루틴)
컴퓨터가 일을 시작하면 다음과 같은 순서로 움직인다.
- 준비 단계: 냉장고(보조기억장치)에 있던 레시피와 재료를 작업대(RAM)로 꺼내온다.
- 인출 단계: 요리가(CPU)가 작업대(RAM)에서 레시피 한 줄을 읽어 조리대(레지스터)로 가져온다.
- 실행 단계: 주방장(제어 장치)의 지시에 따라 가스레인지(연산 장치)에서 요리를 한다.
- 저장 단계: 완성된 요리나 중간 결과물을 다시 작업대(RAM)에 놓거나, 나중을 위해 냉장고(보조기억장치)에 넣는다.
🌟 SSD에서 CPU로 가기 전 RAM을 거치는 이유
가장 큰 이유: 압도적인 속도 차이 때문이다.
요리사(CPU)는 1초에 수십억 번의 칼질을 할 수 있을 정도로 엄청나게 빠르다. 반면, 냉장고(SSD/HDD)는 문을 열고 재료를 찾는 데 시간이 꽤 걸린다.
- 만약 RAM이 없다면? 요리사가 양파 한 조각 썰 때마다 저 멀리 있는 냉장고까지 걸어갔다 와야 한다. 요리사는 0.1초만에 칼질을 끝내는데, 재료 가져오는 데만 10분이 걸리는 셈이다.
- 결과: 요리사는 하루 종일 멍하니 재료를 기다리는 시간(Idle Time)이 더 많아지게 되고, 컴퓨터는 엄청나게 느려진다. 이 현상을 병목 현상(Bottleneck)이라고 부른다.
기억장치 계층 구조의 효율성 때문이다.
모든 데이터를 CPU 옆에 두면 좋겠지만, 기술적·경제적 한계가 있다.
구분 레지스터 (손) RAM (작업대) SSD/HDD (냉장고) 속도 가장 빠름 빠름 느림 용량 아주 작음 적당함 매우 큼 가격 매우 비쌈 비쌈 저렴함 휘발성 전원 꺼지면 사라짐 전원 꺼지면 사라짐 영구 저장 비유: 조리대(레지스터)를 운동장만큼 크게 만들면 요리사가 움직이기 힘들고 비용이 어마어마하게 들 것이다. 그래서 '자주 쓰는 것만 작업대(RAM)에 꺼내놓고 쓰자'는 전략을 취하는 것이다.
CPU의 집중력을 유지하기 위해서이다.
CPU는 한 번에 하나의 일에 집중할 때 최고의 성능을 낸다.
- RAM의 역할: 보조기억장치에서 실행할 프로그램과 데이터를 미리 RAM으로 옮겨두는 과정을 '로딩(Loading)'이라고 한다.
- 일단 로딩이 끝나면, CPU는 느린 SSD 신경 안 쓰고 빠른 RAM하고만 대화하며 미친 듯이 일을 처리할 수 있게 된다.
명령어 실행 반복 과정: CPU는 프로그램 실행을 위해 주기억장치에서 명령어를 순차적으로 인출하여 해독하고 실행하는 과정을 반복한다.
명령어 사이클: CPU가 주기억장치에서 한 번에 하나의 명령어를 인출하여 실행하는 데 필요한 일련의 활동
사이클 종류: 명령어 사이클은 인출 사이클, 실행 사이클, 간접 사이클, 인터럽트 사이클로 나누어진다.
🌟 명령어 사이클 종류
CPU가 하나의 명령어를 처리하는 전체 과정을 명령어 사이클(Instruction Cycle)이라고 한다. 이 사이클은 크게 4가지 단계로 나뉜다.
- 인출 사이클 (Fetch Cycle)
- 역할: 주기억장치(메모리)에 있는 명령어를 CPU로 가져오는 단계
- 핵심 동작
1) PC에 저장된 주소를 MAR로 전달한다.
2) 메모리의 해당 주소에서 명령어를 꺼내 MBR에 담는다.
3) PC 값을 증가시켜 다음 명령어를 준비한다.
4) MBR의 명령어를 IR(명령어 레지스터)로 옮긴다.- 실행 사이클 (Execute Cycle)
- 역할: 가져온 명령어를 해독(Decode)하고 실제로 수행하는 단계
- 핵심 동작: 제어 장치가 IR에 있는 명령어를 분석하여 필요한 제어 신호를 보낸다. 예를 들어
ADD명령이라면 연산 장치(ALU)를 통해 값을 더하고 결과를 AC(누산기)에 저장한다.- 간접 사이클 (Indirect Cycle)
- 역할: 명령어가 '간접 주소 지정 방식'일 때, 실제 데이터가 있는 주소를 한 번 더 찾아가는 단계이다.
- 필요성: 명령어에 적힌 주소에 데이터가 바로 있는 게 아니라, "진짜 주소는 저기 있어"라고 또 다른 주소가 적혀 있는 경우에 필요하다.
- 흐름: 인출 사이클과 실행 사이클 사이에 위치하며, 메모리에 한 번 더 접근하여 유효 주소를 가져온다.
- 인터럽트 사이클 (Interrupt Cycle)
- 역할: 프로그램 실행 중에 예기치 않은 상황(입출력 요청, 오류 등)이 발생했을 때, 이를 처리하기 위해 잠시 멈추는 단계
- 핵심 동작
1) 실행 사이클이 끝나면 인터럽트 요청이 있는지 확인한다.
2) 요청이 있다면 현재 하던 일(PC 값 등)을 안전한 곳에 저장한다.
3) 인터럽트 서비스 루틴(ISR)으로 점프하여 긴급한 일을 처리한 후, 다시 원래 자리로 돌아온다.
🌟 명령어 사이클 흐름도
![]()
인출 및 실행
인출 사이클에서 가장 중요한 부분은 PC(프로그램 카운터) 값 증가이다.

🌟 PC 값을 미리 증가시킨다?
PC를 미리 증가시키는 이유
- 인출 사이클 도중에 PC 값을 증가시키는 것은 "이번 거 가져왔으니, 다음엔 여기를 봐야 해"라고 미리 포스트잇(주소)만 붙여두는 과정이다.
- 만약 실행 중에 인터럽트가 발생하거나 다른 곳으로 점프해야 한다면, 이 증가된 PC 값을 기준으로 돌아올 위치를 결정하기 때문에 미리 바꿔두는 것이 효율적이다.
기본 모델: "하나씩 순서대로"
- 명령어 사이클은 기본적으로 하나의 명령어 실행이 완료되면 그 다음 명령어에 대한 인출 사이클이 시작된다.
- 즉, 인출 → (PC 증가) → 실행 → (완료) → 다음 인출 순서로 진행된다.
- PC 값은 이미 증가해 있으니, 다음 인출 사이클이 시작될 때 CPU는 고민 없이 그 주소로 바로 달려갈 수 있는 것이다.
추가 개념: 파이프라이닝(Pipelining)
현대의 고성능 CPU는 현재 명령어를 실행하는 동안 다음 명령어를 미리 인출하기도 한다. 이를 파이프라이닝 기법이라고 한다.
기본 명령어 사이클: 요리사가 재료를 다 썰고(인출), 볶기(실행)를 완전히 끝낸 다음에야 다음 재료를 썬다.
시간 인출 단계 실행 단계 T1 명령어 1 인출 (PC 증가) - T2 - 명령어 1 실행 T3 명령어 2 인출 (PC 증가) - 파이프라이닝 (현대 CPU): 요리사가 재료를 볶는(실행) 동안, 보조 요리사가 다음 재료를 미리 썬다(인출).
시간 인출 단계 실행 단계 T1 명령어 1 인출 - T2 명령어 2 인출 명령어 1 실행 T3 명령어 3 인출 명령어 2 실행
인출이 이미 진행되었으므로, 명령어를 실행하는 과정에서는 PC를 증가할 필요가 없다.