역사적으로 컴퓨터 유형은 2가지로 나눠진다.
오늘날 컴퓨터는 폰노이만 구조에 기반한 Stored-Program Computers 개념에 기반한다. Stored-Program Computers에서는 프로그램과 데이터가 메모리라는 별도의 저장장치에 저장되며, 동일하게 취급된다.
ISA(Instruction Set Architecture) 컴퓨터라고도 하며, 크게 세 가지 기본 장치가 존재한다.
폰노이만 구조는 현대 컴퓨터 시스템의 발판을 마련했다.
초기 컴퓨터는 reprogramming을 하기 위해 물리적으로 분해하고 재설계를 해야 했다. 폰노이만 구조 이후 data operations과 instrument fetch processes이 동시에 가능해졌다.
폰노이만 구조 이후로는 소프트웨어만 교체하면 되도록 발전했다. CPU에 명령하는 코드를 메모리 위에 순차적으로 올려 놓는 구조를 통해 CPU는 코드대로 수행만 하면서 메모리에 저장된 코드만 변경해줌으로써 CPU라는 하나의 하드웨어로 여러 가지 프로그램을 실행할 수 있는 구조가 가능해졌다.
오늘날 컴퓨터 구조는 폰노이만 구조에 기반을 두므로 기본적으로는 프로그램을 실행하려면 반드시 메모리 위에 프로그램을 올려놓아야 한다.
폰노이만 병목현상.
성능을 향상시키기 위해 어떤 일을 하든 폰노이만 구조를 따른다면,
명령은 한번에 하나씩만 수행할 수 있고 순차적으로만 수행할 수 있다. 이 두 가지 요소는 모두 CPU의 역량을 억제한다.
Pipeline Hazards 중 구조적 해저드(Structural Hazard, 자원은 하나인데 여러 명령이 수행되려 할 때 발생하는 하드웨어 문제)를 발생시킨다.
폰노이만 구조를 따르면 명령(instructions)과 데이터(data) 모두 동일한 메모리에 저장된다. 따라서 명령과 데이터를 가져오는 데 동일한 버스를 사용해야 한다. 이는 CPU가 두 가지 작업(명령 읽기 및 데이터 읽기/쓰기)을 함께 수행할 수 없다는 걸 의미한다.
하버드 아키텍쳐는 명령과 데이터를 위한 별도의 storage와 buses를 포함하는 아키텍쳐이다. 즉 하버드 아키텍쳐는 기본적으로 폰노이만 아키텍쳐의 병목현상을 극복하기 위해 개발되었다.
명령어와 데이터를 위한 별도의 버스를 가짐으로써 CPU가 명령어에 접근하고 동시에 데이터를 읽고 쓸 수 있다.
CPU는 크게 3가지로 구성된다. CPU는 메모리 장치와 상호작용한다.
CPU는 명령어 사이클을 통해 메모리에서 다음 실행할 명령어를 읽어오고 실행하는 과정을 반복한다. 각 명령어에 해당하는 제어 신호를 생성하고 산술/논리 연산을 수행한다.
CPU는 크게 연산과 제어 기능을 제공한다.
기본적인 Main Memory Unit (Registers)에는 6가지가 있다.
- Accumulator (AC) : ALU에서 수행한 계산 결과를 저장한다. AC (Accumulator) 레지스터는 중간 산술/논리 결과를 저장한다.
- Program Counter (PC) : 처리할 다음 명령의 메모리 위치를 추적한다. 그런 다음 PC 레지스터는 이 다음 주소를 메모리 주소 레지스터(MAR)로 전달한다.
- Memory Address Register (MAR) : 메모리에서 가져오거나 메모리에 저장해야 하는 명령어의 메모리 위치를 저장한다.
- Memory Data Register (MDR) : 메모리에서 가져온 명령 또는 메모리로 전송되어 메모리에 저장되는 데이터를 저장한다.
- Current Instruction Register (CIR) : 코딩 및 실행을 기다리는 동안 최근에 가져온 명령어를 저장한다.
- Instruction Buffer Register (IBR) : 즉시 실행되지 않는 명령은 IBR에 배치된다.
메모리는 프로그램과 프로그램 수행에 필요한 코드와 데이터를 저장하는 장치이다.
CPU 내부에는 작은 데이터들을 임시로 저장할 수 있는 레지스터들이 존재한다.
CPU가 메모리에서 데이터를 가져오는 데 생각보다 오래 걸린다. 과거에 한번이라도 데이터를 가져온 기억이 있다면, CPU 내부의 캐시라는 공간에 일정기간 데이터를 저장해둔다. 내부기억장치는 데이터를 가져오는 시간이 빠른 대신, 컴퓨터가 꺼지면 여기 있는 데이터도 날아간다.
외부기억장치는 컴퓨터가 꺼져도 데이터가 남아 있다. 대신 주기억장치보다 느리다.
시스템 버스는 CPU, 메모리, I/O 디바이스들을 연결해주는 장치이다.
Von Neumann architecture
The Complete Guide to Von Neumann Architecture
The System Bus
Computer Organization | Von Neumann architecture
Harvard Architecture