영화 '이미테이션 게임'을 보신 적이 있으신가요?
컴퓨터과학의 아버지 앨런 튜링을 다룬 영화로,
최초의 컴퓨터를 개발해 2차 세계 대전에서 어떤 공을 세웠는지 보여주는 영화입니다.
사진에 보이는 거대한 기계가 컴퓨터인데요.
최초의 컴퓨터는 오늘날 우리가 사용하는 프로그램 방식이 아닌,
데이터를 입력하고 연산하기 위해 수많은 전선을 꽂고 빼고 하는 작업을 거쳤습니다.
지금 보면 상당히 비효율적이지만 당시 열세였던 전쟁을 승리로 이끄는 주요 요인 중 하나일 정도로 혁신적이었습니다.
본론으로 돌아와서, CPU라는 개념을 도입함으로써 기존의 전선을 꽂고 빼던 방식에서
오늘날과 같은 0과 1의 회로를 통한 연산이 가능하게 되었습니다.
이 CPU라는 개념을 처음 제시한 사람이 바로 폰 노이만입니다.
미국의 공학자 폰 노이만이 제시한 구조로,
메모리에 저장된 명령어와 데이터를 CPU로 가져와 명령을 수행합니다.
프로그램 내장 방식이라고도 불립니다.
제어 장치(Control Unit) : 명령어를 해석하고, 그것을 실행하기 위한 제어 신호들이 순차적으로 발생하는 하드웨어 모듈입니다.
산술-논리 장치(Arithmetic-Logic Unit) : 각종 산술 연산(+-*/)과 논리 연산(AND, OR, NOT 등) 및 관계 연산, 비교 연산 등을 수행하는 모듈입니다.
버스(Bus) : 프로세서와 메모리 및 여러 장치를 연결하여 정보를 주고 받을 수 있게 하는 통로입니다.
> 그림의 화살표들이 버스에 해당됩니다.
버스는 내부 버스와 외부 버스(시스템 버스) 두 가지가 있습니다.
내부 버스 : CPU 내부의 레지스터, 연산 장치 등의 연결을 담당합니다.
> 내부 버스는 시스템 버스의 인터페이스 회로를 통해 외부 버스와 연결됩니다.시스템 버스(외부 버스) : CPU 또는 외부 장치들 간의 연결을 담당합니다.
> 외부 장치 : 메모리, 입출력 장치
시스템 버스는 다시 주소 버스, 데이터 버스, 제어 버스로 나뉩니다.
- CPU가 기억 장치 또는 입출력 장치로 데이터를 보낼 때 사용하는 통로입니다.
- CPU가 일방적으로 주소를 보내기 때문에 단방향성 버스입니다.
- 주소선의 수에 따라 CPU가 사용 가능한 메모리 용량이나 입출력 장치의 수가 결정됩니다.
> 주소선이 3개라면 2³ 만큼 사용 가능합니다.
https://okky.kr/article/695919
- CPU 또는 외부 장치 간에 데이터를 주고 받기 위한 통로입니다.
- 데이터 출력 또는 입력을 위해 사용하는 양방향성 버스입니다.
- 데이터뿐 아니라 명령어도 이 버스를 사용합니다.
- 데이터 선의 수에 따라 CPU가 한번에 전송 가능한 데이터의 양이 결정됩니다.
> 데이터 선이 32개라면 32비트를 전송 가능합니다.
- CPU가 데이터를 전송할 때, CPU의 상태를 다른 장치에 알리기 위해 사용하는 통로입니다.
- 읽기 신호와 쓰기 신호를 주고 받기 때문에 양방향성 버스입니다.
- CPU가 시스템 내 각종 요소들의 동작을 제어할 때 사용됩니다.
폰 노이만 구조로 인해 전선을 바꿔 끼울 필요 없이 프로그램만 실행하면 연산을 할 수 있게 되었습니다.
하지만 메모리에 있는 값을 계속 읽고 쓰기를 반복해야 하고,
명령어와 데이터가 동일한 버스를 사용하기 때문에 병목현상이 생길 수 밖에 없었습니다.
폰 노이만 구조의 문제점인 병목 현상을 해결하기 위해 등장한 것이 하버드 구조입니다.
기존 단일 버스였던 데이터 버스를 명령어 버스와 데이터 버스로 물리적으로 분할하여
명령어와 데이터를 동시에 읽을 수 있도록 만들었습니다.
폰 노이만 구조를 기반으로 하기 때문에 구조는 비슷합니다.
명령어와 데이터를 동시에 읽을 수 있고, 캐시 메모리를 사용하여
기존 폰 노이만 구조에 비해서 매우 빠른 연산이 가능했습니다.
하지만 그만큼 더 많은 전기 회로들이 필요했던 것이 단점입니다.
현재의 CPU는 폰 노이만 구조와 하버드 구조를 적절히 조합하여 만들어진 결과물입니다.
CPU와 캐시는 하버드 구조, 캐시와 주 기억 장치는 폰 노이만 구조로 이루어져 있습니다.
즉, 하버드 구조는 CPU 내부, 폰 노이만 구조는 CPU 외부에 적용됩니다.
https://adeuran.tistory.com/20
https://ko.wikipedia.org/wiki/%ED%8F%B0_%EB%85%B8%EC%9D%B4%EB%A7%8C_%EA%B5%AC%EC%A1%B0
https://ko.wikipedia.org/wiki/%ED%95%98%EB%B2%84%EB%93%9C_%EC%95%84%ED%82%A4%ED%85%8D%EC%B2%98