폰 노이만 vs 하버드 아키텍처: 차이점 설명
폰 노이만 아키텍처에서는 명령어와 데이터가 하나의 메모리와 하나의 버스를 공유하므로, 프로세서가 명령어 인출과 데이터 접근을 동시에 할 수 없습니다. 이 한계를 폰 노이만 병목이라고 합니다. 하버드 아키텍처에서는 명령어와 데이터가 별도의 버스를 가진 별도의 메모리에 있어 둘을 동시에 접근할 수 있습니다. 현대 CPU 대부분은 둘을 결합합니다. 메인 메모리는 통합되어 있지만 L1 캐시는 명령어 캐시와 데이터 캐시로 분리되어 있으며, 이를 수정된 하버드 아키텍처라고 합니다.
| 비교 항목 | 폰 노이만 | 하버드 |
|---|---|---|
| 메모리 | 하나의 메모리에 명령어와 데이터를 모두 저장 | 명령어용과 데이터용으로 메모리가 분리됨 |
| 버스 | 공유 버스 하나 | 분리된 버스 |
| 명령어 인출과 데이터 접근 | 같은 버스를 두고 경쟁(폰 노이만 병목) | 동시에 수행 가능 |
| 처리량 | 같은 버스 속도에서 더 낮음 | 병렬 접근 덕분에 더 높음 |
| 유연성 | 높음: 프로그램이 데이터이므로 쉽게 로드, 생성, 수정할 수 있음 | 더 낮음: 코드와 데이터가 분리되어 있음 |
| 메모리 할당 | 코드와 데이터 간 유연한 분할 | 각 메모리의 크기가 고정 |
| 하드웨어 복잡도 | 더 단순 | 더 복잡함: 메모리 두 개와 버스 두 개 |
| 주요 장치 | 범용 컴퓨터 | 디지털 신호 처리기(DSP)와 많은 마이크로컨트롤러(AVR, PIC 등) |
| 현대 CPU에서 | 통합된 메인 메모리 | 분리된 L1 명령어 캐시와 데이터 캐시(수정된 하버드) |
수치는 대략적인 자릿수 기준이며, 공정 세대와 제품에 따라 달라져요.