폰 노이만 구조를 정리하며, 현대 컴퓨터와는 어떤 점이 발전했는지? 간략히 정리해보자.
폰 노이만 구조
컴퓨터의 유형
- 역사적으로 컴퓨터는 두가지 유형이 있었다.
- 고정 프로그램 컴퓨터
- 굉장히 특징적이고, 재 프로그래밍 하기 힘든 컴퓨터들을 말한다.
- 과거의 에니악 등의 컴퓨터들은 다시 프로그래밍을 하려면 스위치를 설정하고 케이블 선을 꼽고 연결하는 것을 다시 했었다.
- 현대에도 계산기나 디지털 체중계 같은 특정 분야만 계산하는 컴퓨터들이라고 볼 수 있겠다.
- 저장 프로그램 컴퓨터
- 프로그램들을 저장하게 끔 해서 매우 다양한 일들을 할 수 있게 만든다.
- 여러 어플리케이션들을 한가지 컴퓨터에 저장해놓고 그떄 그때 쓸 수 있다.
폰 노이만 구조 컴퓨터의 구성 요소
CPU
- CPU는 크게 CU (컨트롤 유닛), ALU (산술 논리 장치), 레지스터, 버스로 구성된다.
- 컨트롤 유닛 (CU)
- 전체 프로세서의 신호를 제어한다.
- 모든 인풋과 아웃풋의 흐름을 제어한다.
- 명령어 실행을 위해 코드를 해석한다.
- 산술 논리 장치 (ALU)
- 실질적인 연산이 일어난다.
- 더하기, 빼기, 나누기 등 수학적 연산
- 비트 시프트 연산등 논리적 연산
- 실질적인 연산이 일어난다.
- 레지스터
- 레지스터는 CPU의 매우 빠른 저장 공간을 말한다.
- CPU는 레지스터에서 데이터를 가져와서 처리한다.
- 레지스터의 종류는 다음과 같다.
- Accumulator (누산기)
- ALU에 의해 계산된 결과값을 저장한다.
- 산술 및 논리 연산의 중간 결과를 보유하는 임시 저장장치
- Program Counter (프로그램 카운터)
- 처리할 다음 명령어의 메모리 위치를 추적한다.
- 위에서의 메모리 위치를 MAR에 전달한다.
- Memory Address Register (메모리 주소 레지스터)
- 메모리에서 가져와야 할 명령어 또는 메모리에 저장될 명령어의 메모리 위치를 저장한다.
- Memory Data Register (메모리 데이터 레지스터, MBR)
- 메모리에서 가져온 명령어나 메모리에 전송되어 저장될 데이터를 저장한다.
- Memory Buffer Register로 부르기도 함.
- Current Instruction Register (현재 명령어 레지스터)
- 가장 최근에 가져온 명령어를 코드화 하여 저장해 놓는다.
- Instruction Buffer Register (명령어 버퍼 레지스터)
- 즉시 실행되지 않을 명령어를 저장한다.
- Accumulator (누산기)
- Bus
- 데이터가 컴퓨터의 한 부분에서 다른 쪽으로 옮겨갈때, CPU와 메모리를 연결한 구성 요소들을 버스라고 한다.
- 버스는 크게 3가지로 나눠진다.
- Data Bus
- 메모리 유닛, 입줄력 장치, 프로세서 간의 데이터를 전달한다.
- Address Bus
- 메모리와 프로세서 간의 주소를 전달한다. (실제 데이터는 아님)
- Control Bus
- 컴퓨터 내의 장치들을 제하기 위해 CPU에서 내린 명령들을 전달한다.
- Data Bus
- 한번에 하나의 장치만 버스에 접근이 가능하다.
- 누군가 버스를 사용중이라면 다른 장치들을 순서를 대기해야함.
- 컨트롤 유닛 (CU)
메모리
- RAM, ROM
- 롬은 흔히 닌텐도 스위치에 쓰이는 롬들.. 읽기 전용이 특징
- RAM도 DRAM, SRAM등 다양한 종류가 있으나 일단 휘발성이고, 랜덤 억세스가 가능한 메모리로 이해하고 넘어가자.
입/출력 장치
- 입력 장치
- 입력장치나 보조 기억 장치를 통해 전달된 데이터들은 메모리에 올라간후 CPU에 전달된다.
- 출력 장치
- 출력 장치들은 컴퓨터에 나온 결과물들을 사용자들에게 보여줄때 사용된다.
폰 노이만 구조의 단점 - 폰 노이만 병목현상
- 성능을 향상시키기 위해 어떤것을 하던지, 명령어는 한번에 하나씩만, 순차적으로 수행될 수 있다.
- 버스도 위에 나와있듯이 한번에 한 장치만 사용 할 수 있다.
- CPU에 비교해 메모리는 처리 속도가 매우 느린편이다.
- 종합적으로 CPU는 램에서 데이터를 불러올때 기다리는 시간이 많아진다.
- 두 장치간의 속도가 다른것이 병목의 주요한 요소이다. (최근 더 이슈로 부각되고있음)
폰 노이만 병목 현상을 완화하기 위한 방법들
- CPU와 메인 메모리의 사이에 캐시를 둔다.
- 다른 별도의 캐시나 데이터나 명령어를 위한 별도의 경로를 둔다 (수정된 하버드 아키텍쳐라고 부르기도 함.)
- 분기 예측 알고리즘과 로직을 사용한다.
- 메모리 접근을 줄이기 위해 제한된 CPU 스택이나 다른 온칩 스크래치패드 메모리를 제공하기
- 프로세서 레지스터와 주 메모리 간의 지연 시간을 줄이고 처리량을 증가시키기 위해 CPU와 메모리 계층 구조를 시스템 온 칩으로 구현하기.