한양과학기술고등학교

에듀테크 프로젝트 대시보드

폰 노이만 구조 vs 하버드 구조

명령어와 데이터, 같은 길로 갈까 다른 길로 갈까

CPU가 메모리에서 명령어(코드)와 데이터를 가져오는 두 가지 근본 설계 — 버스 구조의 차이가 성능을 가른다.

🖥️ 폰 노이만 구조 Von Neumann
CPU
메모리
(명령어 + 데이터)
공용 버스
명령어와 데이터가 같은 메모리, 같은 버스를 공유한다. 한 사이클에 버스를 쓸 수 있는 건 하나뿐 — 명령어를 가져오는 동안 데이터를 동시에 가져올 수 없다. 이 정체 현상을 폰 노이만 병목(bottleneck)이라 부른다.
⚡ 하버드 구조 Harvard
CPU
명령어 메모리
데이터 메모리
명령어 버스
데이터 버스
명령어 메모리와 데이터 메모리가 물리적으로 분리되고 각자 전용 버스를 갖는다. 같은 사이클에 명령어 fetch와 데이터 접근이 동시에 일어날 수 있어 병목이 없다.
🧪 사이클 시뮬레이터 — 명령어 8개 실행 (LOAD/STORE 3개 포함)
폰 노이만 0 사이클
// 실행 대기 중...
하버드 0 사이클
// 실행 대기 중...
📋 실제 사례
구조대표 예시설명
폰 노이만 일반 PC · 스마트폰 AP 메인 메모리(RAM) 하나에 실행 파일과 데이터가 함께 올라간다. 범용성이 높고 구조가 단순하다.
하버드 AVR·PIC 마이크로컨트롤러, 디지털 신호처리(DSP) 칩 펌웨어(명령어)는 플래시에, 데이터는 SRAM에 고정 분리 — 예측 가능한 실시간 처리에 유리하다.
수정 하버드 (Modified Harvard) 대부분의 현대 CPU (Intel·ARM 등) 메인 메모리는 폰 노이만처럼 하나지만, CPU 내부의 L1 캐시만 I-cache / D-cache로 분리해 두 방식의 장점을 절충한다.