함께 배우는 수업 · 컴퓨터/정보

폰 노이만 구조와 CPU 아키텍처

프로그램 내장 방식의 폰 노이만 구조와 하버드 구조를 비교하고, CPU 내부 구성요소(ALU, 제어장치, 레지스터)와 명령어 파이프라이닝을 이해합니다.

이 수업에서 해 볼 일

  • 명령어 인출부터 실행까지 CPU의 상태 변화를 설명한다

먼저 알면 좋은 것: 논리 게이트와 가산기(ALU) 및 플립플롭(레지스터) · 2진수 기계어 명령어와 메모리 주소 개념 · 하드웨어와 소프트웨어의 기본 역할 구분

오늘의 목표

가입 없이 시작할 수 있어요. 설명을 읽고, 함께 연습한 뒤, 처음 보는 문제에서 직접 확인합니다.

판단 과정과 비교 사례

명령 실행은 주소를 정하고, 명령을 가져오고, 해독하고, 실행하는 흐름으로 추적하자. PC는 다음 명령의 주소, IR은 가져온 명령, ALU는 산술·논리 연산을 맡는다.두 수의 비교 명령에서도 제어장치가 실행 신호를 만들고 ALU가 비교를 수행한다. '지시하는 역할'과 '계산하는 역할'을 나누면 구성요소를 혼동하지 않는다.폰 노이만 구조의 경로 공유는 CPU와 메모리 사이 병목을 만들 수 있다. 파이프라인의 명령 의존성, 운영체제의 프로세스 전환과는 서로 다른 층위의 문제다.

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, 누산기) 및 범용 레지스터: 연산 결과를 일시적으로 저장합니다.

예제로 살펴보기

메모리 100번지에 저장된 'ADD 250'(250번지의 값을 누산기 AC에 더하라) 명령어가 실행될 때 레지스터(PC, MAR, MBR, IR, AC)의 동작 순서를 설명하시오.
  1. 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은 '현재 실행 중인 명령어 코드 자체'를 담고 있습니다.

참고 근거와 확인 범위

설명·예제·문제 구성 및 오류 수정 책임: 프리런. 위 자료는 표시한 주제를 확인하거나 더 읽기 위한 근거이며, 외부 기관의 공식 수업이나 감수본을 뜻하지 않습니다.

참고 자료 연결 점검: 2026-11-02. 제작 방식·검수 범위와 수정 기록에서 확인 범위를 볼 수 있습니다. 오류는 상단의 의견 보내기 또는 contact@freelearn.io로 알려 주세요.

이 단원의 개념서 읽기 →