폰 노이만 아키텍처와 하버드 아키텍처

[원본 링크]

현대의 컴퓨터구조는 기본적으로 폰 노이만 아키텍처와 하버드 아키텍처 등을 기반으로 구성되어있다.

하나씩 살펴보자




폰 노이만 아키텍처

그 유명한, 컴퓨터과학의 아버지 중 하나인 노이만이 설계한 컴퓨터구조를 말한다.
1945년에 세상으로 나왔다.

CPU가 모든 제어와 연산을 수행하고, 램 메모리에 프로그램을 올리고, CPU와 램이 데이터를 주고받는 그런것을 전부 노이만이 구상한 것이다.

근데 이 구조에는 치명적인 단점이 있다.

폰 노이만 병목이라고 하는 것인데. CPU가 너무 많은 것을 떠맡아서 발생하는 문제다.
데이터를 읽어오는 것과 명령어를 수행하는 것을 동시에 하지 못하기 때문에 그에 대한 성능 병목이 있을 수 있다는 것이다.

이와 대척점에 있으며, 이러한 병목현상이 존재하지 않는 구조가 있는데.
그게 바로 하버드 구조다.




하버드 아키텍처

이름 그대로 하버드대에서 개발된 구조다.
1939년에 나왔다.

이 구조를 사용하면 CPU가 명령어를 실행하는 것과 메모리(램)에서 데이터를 읽어오는 걸 동시에 수행할 수 있다! 병목이 사라진 것이다.

이게 어떻게 가능할까? 사실 간단하다.
그냥 데이터용 메모리를 하나 더 추가한 것이다. 그렇게 명령어 메모리와 데이터 메모리 둘을 분리하고, 명령어 실행과 데이터 읽기를 각각의 버스로 받아오게 하는 것이다.

하지만 당연히 단점도 있다.
노이만 구조보다 훨씬 복잡한 회로가 필요하단 것이다. 그리고 메모리가 2개나 되므로 CPU 코어에서 잡아먹는 용량도 커진다.




그래서 지금은 뭘 쓰나?

둘다 쓴다.
기본적으론 노이만 아키텍처가 사용되고, 하버드 아키텍처는 CPU-캐시 사이의 통신 등에 응용된다고 한다.