개념 정리
폰 노이만 구조와 CPU 아키텍처
단원 개요
프로그램 내장 방식의 폰 노이만 구조와 하버드 구조를 비교하고, CPU 내부 구성요소(ALU, 제어장치, 레지스터)와 명령어 파이프라이닝을 이해합니다.선수 개념
필수 키워드:하버드 구조와 현대 하이브리드 CPU하버드 구조플래그 레지스터(Flag Register)제어장치 (Control Unit, CU): 방금 메모리에서 읽어온AC (Accumulator, 누산기)제어 해저드(Control Hazard)분기 예측(Branch Prediction)
유물과 표본
사진은 출처와 이용 조건을 확인한 경우에만 표시합니다.
사진 출처·이용 조건 확인 중
1
폰 노이만 구조(Von Neumann) vs 하버드 구조(Harvard)
•
폰 노이만 구조 (프로그램 내장 방식, Stored-Program Concept):
•
초기 컴퓨터(ENIAC)는 새로운 계산을 할 때마다 전선을 일일이 다시 꽂아야 하는 하드와이어링 방식이었습니다.
•
수학자 존 폰 노이만은 명령어(프로그램 코드)와 데이터를 동일한 주기억장치(RAM)에 구분 없이 저장하고, CPU가 순차적으로 인출해 실행하는 구조를 제안했습니다. 덕분에 소프트웨어만 교체하면 범용적인 작업을 수행할 수 있게 되었습니다.
•
폰 노이만 병목 현상 (Von Neumann Bottleneck):
•
명령어와 데이터가 하나의 시스템 버스(Bus)와 메모리를 공유하므로, CPU가 명령어를 읽는 동안 동시에 데이터를 읽거나 쓸 수 없어 CPU의 연산 속도가 메모리 전송 속도에 묶이는 현상입니다.
•
하버드 구조와 현대 하이브리드 CPU:
•
하버드 구조는 명령어용 메모리와 데이터용 메모리의 물리적 공간과 버스를 완전히 분리하여 동시에 접근합니다.
•
현대 CPU는 외부 메인 메모리(RAM)는 폰 노이만 구조를 따르되, CPU 내부의 L1 캐시는 명령어 캐시(L1i)와 데이터 캐시(L1d)로 분리한 수정된 하버드 구조를 채택하여 병목을 극복합니다.
핵심 원리
현대 컴퓨터는 '외부(RAM)는 폰 노이만 구조, 내부(L1 캐시)는 하버드 구조'를 결합하여 범용성과 초고속 동시 접근 성능을 모두 확보하고 있습니다.2
CPU의 3대 핵심 구성 요소와 필수 레지스터
•
ALU (Arithmetic Logic Unit, 산술논리연산장치): 레지스터에서 피연산자를 받아 덧셈·뺄셈·시프트·비트 논리 연산을 수행하고, 연산 결과의 특징(오버플로우, 0 여부, 음수 여부)을 플래그 레지스터(Flag Register)에 기록합니다.
•
제어장치 (Control Unit, CU): 프로그램 카운터가 가리키는 명령어를 가져와 해독(Decode)하고, CPU 내부와 메모리·입출력 장치로 제어 신호(Control Signal)를 내보내는 지휘자입니다.
•
핵심 레지스터(Register) 5총사:
1
PC (Program Counter, 프로그램 카운터): 다음에 인출할 명령어의 메모리 주소를 저장합니다.
2
IR (Instruction Register, 명령어 레지스터): 방금 메모리에서 읽어온 현재 실행할 명령어 자체를 보관합니다.
3
MAR (Memory Address Register): CPU가 읽거나 쓸 메모리 주소를 주소 버스로 내보내기 전에 거치는 레지스터입니다.
4
MBR / MDR (Memory Buffer Register): 메모리에서 읽어온 데이터나 메모리에 쓸 데이터가 데이터 버스를 오갈 때 거치는 버퍼입니다.
5
AC (Accumulator, 누산기) 및 범용 레지스터: 연산 결과를 일시적으로 저장합니다.
풀이
1) 인출(Fetch) 단계:
•
PC에 담긴 주소(100)가 MAR로 전달됩니다 (MAR ← PC).
•
메모리 100번지의 명령어('ADD 250')가 버스를 통해 MBR로 읽혀 오고, PC는 다음 명령어 주소인 101로 자동 증가합니다 (PC ← PC + 1).
•
MBR의 명령어가 IR로 이동합니다 (IR ← MBR).
2) 해독(Decode) 및 실행(Execute) 단계:
•
제어장치(CU)가 IR의 'ADD 250'을 해독합니다.
•
피연산자 주소 250을 MAR에 넣고(MAR ← 250), 메모리 250번지의 실제 데이터 값을 MBR로 가져옵니다.
•
ALU가 기존 AC 값과 MBR의 값을 더하여 결과를 다시 AC에 저장합니다 (AC ← AC + MBR).
3
명령어 파이프라이닝(Pipelining)과 CISC vs RISC
•
명령어 파이프라이닝 (Instruction Pipelining):
•
명령어 실행 주기인 인출(IF) ➔ 해독(ID) ➔ 실행(EX) ➔ 메모리 접근(MEM) ➔ 저장(WB) 단계를 마치 공장의 컨베이어 벨트처럼 겹쳐서 동시에 여러 명령어를 중첩 실행하는 기법입니다.
•
단, 조건 분기문(
if)으로 인해 실행 흐름이 갑자기 바뀌면 미리 인출해 둔 명령어들을 버려야 하는 제어 해저드(Control Hazard)가 발생하며, CPU는 이를 분기 예측(Branch Prediction) 기술로 완화합니다.•
명령어 집합 구조(ISA): CISC vs RISC:
•
CISC (Complex Instruction Set Computer, 인텔/AMD x86-64): 복잡하고 다양한 가변 길이 명령어를 지원하여 적은 수의 명령어로 프로그램을 작성할 수 있으나, 명령어 크기가 제각각이라 파이프라이닝 효율이 떨어지고 전력 소모가 큽니다.
•
RISC (Reduced Instruction Set Computer, ARM / Apple M시리즈 / RISC-V): 단순하고 규격화된 고정 길이 명령어만 두어 1클럭 내 실행과 고효율 파이프라이닝을 극대화하며, 저전력·고성능이 요구되는 스마트폰과 최신 노트북·서버 시장을 주도하고 있습니다.
학습 도움말
기술 면접 단골 질문: 'PC(프로그램 카운터)와 IR(명령어 레지스터)의 차이는?' -> PC는 '다음에 실행할 명령어의 주소(번지)'를 담고 있고, IR은 '현재 실행 중인 명령어 코드 자체'를 담고 있습니다.핵심 요약
- ✓폰 노이만 구조는 명령어와 데이터를 같은 메모리에 내장하여 범용성을 얻었으나 버스 공유로 인한 병목 현상이 존재한다.
- ✓PC(Program Counter)는 다음에 실행할 명령어의 주소를, IR(Instruction Register)은 현재 실행할 명령어를 저장한다.
- ✓CPU 명령어 사이클은 인출(Fetch) ➔ 해독(Decode) ➔ 실행(Execute) ➔ 저장(Writeback) 순서로 동작한다.
- ✓파이프라이닝과 RISC 아키텍처(ARM 등)는 명령어 처리를 컨베이어 벨트처럼 병렬화하여 클럭당 처리량(IPC)을 극대화한다.