본문 바로가기

Computer

폰 노이만 / 하버드 구조

 

폰 노이만 / 하버드 구조


1. stored program concept

예를 들어 2 * 3 = 6라는 계산을 한다고 생각한다. 우리는 순간적으로 2와 3을 곱하니까 6이군 하고 계산할 수 있다. 하지만 컴퓨터는 다르다. 2 * 3을 입력한다(fetch). 그럼 명령 받은 컴퓨터는 해석을 한다(decode). 그리고 순식간에 2와 3을 곱해서 6을 만들어 낸다(execute). 그럼 그 결과를 우리한테 보여준다(store).

명령어가 저장된 곳에서 지금 실행할 순서의 명령을 가지고 오고(fetch), 그 명령어가 무엇인지 해석하고(decode), 실행하고(execute), 결과를 저장한다(store).

이런 stored program concept를 폰 노이만이 1945년 제안하였고, 현재 가장 많이 사용하고 있다. 그래서 stored program concept를 사용한 구조를 폰 노이만 architecture라고 한다.


2. 폰 노이만 구조

폰 노이만 구조는 존 폰 노이만이 고안한 메모리 순차처리 방식이다.

데이터 메모리와 프로그램 메모리가 구분되어 있지 않고 하나의 버스를 가지고 있는 구조를 말한다.
메모리에 우리가 실행시키고 싶은 명령어가 저장되어 있다. 그것중 하나를 control unit로 가져온다(fetch). 그리고 control unit는 명령어를 해석한다(decode). 해석한 명령에 따라서 control unit가 메모리에서 계산할 값을 꺼내서 ALU에 던져주고 명령도 내린다. 그럼 ALU는 시키는대로 계산을 한다(execute). 그 후에 나온 결과를 필요하다면 다시 메모리에 저장한다(store).

실행할 명령에 따라서 다르지만 fetch, decode, execute, store과정에서 메모리를 계속 읽고 쓰게 된다.

하지만, 인텔이나AMD같은 CPU회사에서 광고문구에 종종 써먹는 ‘파이프 라이닝’이라는 기술을 구현하면 이런 폰 노이만 구조는 문제가 된다.

 

3. 파이프 라이닝(pipelining)

앞서 stored program concept에서 프로그램 실행 순서는 fetch, decode, execute, store의 4단계를 반복하는 것이라 했다. 그럼 “프로그램의 속도를 높이고 싶다”라는 요청이 들어왔다 해보자. 가장 간단한 대답은 저 4단계를 아주 빠르게 하면 된다. 하지만 그렇게 속도를 올리는 것은 한계가 있다. 반도체 생산이나 기술적인 문제로 못하는 것이 아니라, 효과 대비 비용이 너무 많이 들게 되기 때문이다. 그래서 나온 방법이 파이프 라이닝이다.


4. 하버드 구조

프로그램과 데이터가 메모리에 저장되는 방식에서 프로그램과 데이터가 각기 다른 메모리에 저장되는 컴퓨터 구조를 말한다. 폰 노이만 구조는 파이프 라이닝을 구현하기 어렵다. 하지만 하버드 구조는 파이프 라이닝을 위해 구조를 변경한 것이다.

폰 노이만과 다른 부분은 데이터 전용 메모리와 명령어 전용 메모리를 가졌다는 것이다.

하버드 구조를 쓰면 속도를 높일 수 있다. 하지만 비싸고 공간을 많이 차지한다. 원래 폰 노이만 구조에서는 연산의 결과를 명령어 위치에 쉽게 저장할 수 있다. 하지만 하버드는 메모리를 분리시켜 두기 때문에 구현하려면 복잡하다.


'Computer' 카테고리의 다른 글

리눅스(linux) 단축키  (0) 2011.06.22
RISC/CISC  (0) 2011.04.18
vi(visual edit) 명령어  (0) 2011.04.11
PC의 역사  (0) 2011.03.29
CPU 발전사  (0) 2011.03.29