폰 노이만 아키텍처는 최근 60년 중 가장 인기있고 널리 사용된 컴퓨터 구조이다.

우선 그림으로 나타내자면 다음과 같다.

Von Neumann Architecture

    데이터와 명령어, 프로그램 코드는 모두 같은 메모리(위)에 저장되고 CPU(아래)는 메모리와 분리된 구조이다. 이러한 구조 때문에 메모리에 저장되어있는 instruction과 data는 CPU로 pipelining을 통해 전송된다. 이렇게 전송되는 것을 fetch라고 한다. 그리고 CPU에서 이루어진 연산의 결과는 다시 메모리에 저장된다. CPU와 메모리가 인접해 있고 다음 명령어의 위치를 알려주는 PC(Program Counter)값만 바꾸어 branch하면 되기 때문에 반복되는 연산이 굉장히 빠르다. 따라서 이 구조에서는 재귀보다 반복이 더 빠르다.

    앞서 말한 fetch를 통해 전송된 instruction에 있는 opcode를 CPU에 있는 Decoder가 확인하여 어떤 연산을 수행할지 결정한다. 이러한 실행으로 생기는 것이 바로 아래 그림인 fetch-excution(decode) cycle이다.

fetch-execution(decode) cycle

그렇게 결정된 Control Unit의 값에 따라서 ALU에서 레지스터(register)에 저장된 값을 가지고 연산이 수행된다. 그 결과는 다시 메모리에 저장된다. 이때, 실행되는 명령어의 주소를 가리키는 PC 레지스터는 1이 늘어나 다음 명령어를 실행할 준비를 한다. 만약 instruction이 jump일 경우는 PC 레지스터 값이 jump하여 이동한 명령어의 주소로 바뀌게 된다.

+ Recent posts