von Neumann 아키텍처와 Harvard 아키텍처를 비교해서 정리해보았다.
CPU 레벨에서 메모리에 접근하는 방법에 관해 고려해야할 두 가지 설계(design)가 있는데,
첫번째는 Von Neumann architecture이고 두번째는 Harvard architecture이다.
메모리 사용방식에 따라서 두 프로세서 architecture를 분류할 수 있다.
이 두 architecture의 중요한 차이점은 Von Neumann architecture 에서는 동일한 메모리와 버스가 프로그램을 실행하는 데이터 및 명령어를 저장할 수 있다는 것이다.
프로그램 메모리와 데이터 메모리에 동시에 접근할 수 없기 때문에 Von architecture는 병목 현상에 취약하고, 이것은 시스템 성능에도 영향을 미친다.
Harvard architecture에서 메모리는 두 가지 메모리로 나뉘는데, 데이터 메모리와 명령어 메모리로 나뉜다.
이 아키텍처는 명령어와 데이터를 서로 다른 버스로 연결된 별도의 메모리 장치에 저장한다.
이 경우에 작업할 메모리 주소 공간이 2개 이상 있고 명령용 메모리 레지스터와 데이터용 메모리 레지스터가 존재한다. Harvard architecture 로 설계된 컴퓨터는 프로그램을 실행하고 동시에 데이터에 독립적으로 액세스가 가능하다. Harvard architecture 는 데이터와 코드를 엄격하게 분리하기 때문에 더 복잡하지만 이 별도의 파이프라인 덕분에 Von Neumann이 가지는 병목현상을 제거할 수 있다.
어떤 architecture를 사용할지 결정하는데 있어서 제일 중요한 건 일부 작업이 실행할 명령어들을 가져오고, 작업을 수행할 데이터에 접근할 수 있다는 것이다.
왜냐하면 메모리에는 클럭 사이클 한번 당 한번 접근할 수 있기 때문에 Von architecture 에서는 명령을 실행하는데 적어도 클럭 사이클이 2번 필요한 반면, Harvard architecture는 한번의 사이클이면 명령을 실행할 수 있다.
Harvard architecture에서 하나의 명령어로 하나의 명령어를 실행할 수 있는 기능은 Von Neumann architecture를 사용해서 구현한 것보다 훨씬 간단하고 깔끔한 CPU 설계를 가능하게 한다.
ref :
https://www.microcontrollertips.com/difference-between-von-neumann-and-harvard-architectures/