사람들이 오해하고 쓰는 단어 중 하나가 폰 노이만 아키텍쳐입니다. 폰 노이만 아키텍쳐는 물리적으로 인스트럭션과 데이터 메모리를 하나로 쓰고 하버드 아키텍쳐는 별도로 나누어서 쓰고 있다고 이해하고 있죠. 일부 교과서에서 그렇게 설명하고 있습니다.

이건 말도 안되는 겁니다. ARM에서는 ARM 칩을 하버드 아키텍쳐라고 부릅니다. MIPS사는 자사의 M14K를 하버드 아키텍쳐라고 부르고 있죠. 인텔은 70년대에 하버드 아키텍쳐를 썼습니다. 우리가 폰 노이만인줄 알고 썼던 대부분의 하드웨어는 벤더들이 스스로를 하버드 아키텍쳐라고 부르고 있습니다. 그럼 혼란이 생기죠. 우리가 쓰는 하드웨어들이 4기가를 인스트럭션에 쓰고 4기가를 데이터 영역으로 나눠서 쓰던 그 하버드란 말인가요? 사실은 일부 교과서와 산업의 기준이 다르기 때문에 이런 오해가 생겨났습니다.

하버드 아키텍쳐는 물리적으로 메모리가 다른 것을 의미하는 것이 아니고 두개의 캐쉬를 가지고 있고 다른 어드레스 라인을 지정할 수 있으며 한번에 인스트럭션과 데이터를 가져올 수 있는 하드웨어를 의미하기도 합니다. 데이터를 동시에 가져오니깐 명령이 데이터를 처리하기 위해 대기할 필요가 없죠.

뭔가 익숙하지 않습니까? 우리가 폰 노이만인 줄 알고 사용하는 지금의 주류 하드웨어죠. 우리가 사용하는 대부분의 하드웨어는 폰 노이만이 아니라 하버드 아키텍쳐입니다.

어 이상한데 메모리가 분리되어 있어야 하지 않습니까? 라고 생각하는 분들이 계실겁니다. CPU의 입장에서 생각해보면 CPU의 개별 코어가 만나는 것은 L1 캐쉬입니다. CPU의 관점에서 보면 캐쉬가 분리되어 있으면 하버드고 하나면 폰 노이만이 되는 거죠.

이 단어를 엄밀히 말해서 수정 하버드 아키텍쳐라고 분류하는 사람들도 있습니다. 하지만 많은 사람들은 이렇게 엄밀하게 정확한 단어를 쓰지 않습니다. 그냥 하버드 아키텍쳐라고 하죠.

더 자세한 내용은 위키백과를 참조하세요.

덧붙임: 이 글은 2011년에 텀블러에 작성했던 글입니다.