그라운드 임베디드 유튜브 구독

노트 / 컴퓨터구조

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

코드와 데이터를 같은 길로 읽느냐, 따로 읽느냐. Cortex-M이 두 구조를 섞어 쓰는 이유까지 정리했습니다.

GROUND EMBEDDED · 정리 노트컴퓨터구조 01폰 노이만과 하버드 구조구조장점예폰 노이만단순, 유연초기 PC, Cortex…하버드동시 접근, 빠름AVR, DSP

폰 노이만 구조

명령어와 데이터가 같은 메모리, 같은 버스를 씁니다. 구조가 단순하지만 명령어를 가져오는 동안 데이터를 읽을 수 없어서 버스가 병목이 됩니다.

하버드 구조

명령어 메모리와 데이터 메모리가 따로 있고 버스도 따로입니다. 다음 명령어를 가져오면서 동시에 데이터를 읽고 쓸 수 있어 빠릅니다. AVR(ATmega)이 대표적인 하버드 구조라서 Flash에 있는 상수를 읽으려면 PROGMEM과 pgm_read_byte() 같은 특별한 방법이 필요합니다.

Cortex-M은 둘 다

Cortex-M3/M4는 내부적으로 명령어 버스(I-Code)와 데이터 버스(D-Code, System)가 분리된 하버드 구조지만, 주소 공간은 하나로 합쳐져 있어 프로그래머에게는 폰 노이만처럼 보입니다. 그래서 C에서 Flash의 const 배열을 일반 포인터로 바로 읽을 수 있습니다.

구조 장점 예
폰 노이만 단순, 유연 초기 PC, Cortex-M0
하버드 동시 접근, 빠름 AVR, DSP
수정 하버드 둘의 장점 Cortex-M3/M4/M7