1. Basic components
- 컴퓨터의 Basic components에는 CPU, I/O module, Memory가 있다.
- CPU는 'ALU'라는 만능 계산기, 'Register'라는 임시 저장소, 'Cache (SRam)'라는 휘발성 메모리 장치로 구성되어 있다.
- Memory (DRam)에는 program의 구성요소인 Instruction (명령어), Data가 저장되어 있다.
- I/O module에는 Hard Disk Drive를 비롯하여 모니터, 키보드 등의 입출력 장치가 있다.
- File System
- 여기에서 집중할 부분은 Boot Block이다.
- Boot Block에서는 loader가 작동한다.
- 컴퓨터가 시작할 때 program이 메모리에 올라간다. 일반적으로 program은 Disk에 위치하며, 사용자가 요청하면 memory에 loading이 되는 방식이다.
- program은 instruction과 data의 집합이므로, disk에 instruction과 data가 저장된다.
- 그 후 CPU에서는 disk를 system bus를 통해 접근하고, instruction을 가져온다. (fetch)
2. Processor (처리기)
(1) ALU (Arithmetic / Logic Unit)
- 수학적 계산과 논리적 연산을 수행한다.
(2) CPU (Central Processing Unit)
- ALU, control unit, register을 통해 명령어를 utilizing하는 Hardware 구성요소이다.
(3) Multiprocessors
- 각 chip은 'core'라고 불리는 multiple processor를 가지고 있다. 각각의 processor는 cache memory를 구성한다.
- CPU의 clock speed (Frequency)가 증가할 수록 power consumption (Power)도 커지는 것을 볼 수 있다.
- 이세돌과 알파고의 대결에서 알파고가 이겼다고 말할 수 있겠지만, 알파고의 전력 소모량이 어마어마했다고 한다. 따라서, power consumption은 CPU의 성능에서 아주 중요한 요소가 될 수 있겠다.
3. Evolution of Processors
(1) GPU (Graphical Processing Units)
- CPU의 반복적인 연산으로 인한 업무 과중으로 GPU의 필요성이 대두되었다.
(2) SoC (System on a Chip)
- handheld devices, 즉 모바일 환경에서 적합한 처리기이다.
- CPU와 cache에 DSP, GPU, codec, main memory 등이 한 chip에 들어있다.
(3) big, little core
- CPU에는 little core와 big core가 있다.
- 두 core의 computation과 power 그래프를 보면, Big core는 초기에 필요한 power consumption이 큰 것을 볼 수 있다.
- 따라서, Big core는 연산 수행 정도가 큰 작업에 배당하고, Little core는 연산 수행 정도가 작은 작업에 배당한다.
4. Memory
(1) RAM (Random Access Memory)
- 휘발성이 있는 메모리로, 전원이 꺼지면 상태가 저장되지 않고 날아간다.
① SRAM (Static RAM) == Cache
- 집적도가 낮다. (8 transistors / bit)
- 값이 비싸다.
- 매우 빠르다.
- 충전이 필요하지 않다.
② DRAM (Dynamic RAM) == Main Memory
- 집적도가 높다. (1 transistors / bit)
- 값이 저렴하다.
- 느리다.
- 대용량 memory에 많이 쓰인다.
- 충전이 필요하다.
5. Flash Memory
(1) ROM (Read Only Memory)
- 비휘발성 메모리로, 전원을 꺼도 상태가 저장된다.
(2) Flash Memory
- Digital camera나 MP3, 핸드폰에 주로 쓰이는 비휘발성 메모리이다.
- HDD에 비해 높은 밀도를 가지고 있으며, low access latency, 충격에 강하다는 장점이 있다.
(3) Flash Memory의 기본적인 특징 (주로 HDD에 상대적인 특징)
ⓐ Reading이 Writing보다 빠르다.
- HDD는 두 작업의 속도가 같다.
ⓑ No in-place Update : clean한 상태에서만 write이 가능하다.
- HDD는 in-place update이다.
ⓒ Limited endurance : 한 블럭이 100,000번 반복되어 쓰여지면 wear out (마모) 된다.
- 따라서 모든 블록들의 사용 빈도가 비슷해야 utilization이 높아진다. (wear leveling)
6. Hard Disk Drive
- 자성체의 자기화되어 만들어진 장치로, 비휘발성인 특징을 가지고 있다.
- HDD의 arm이 직접 데이터를 읽어야 하기 때문에 시간이 오래 걸린다.
- 따라서 대용량 저장 장치의 보조장치로 쓰인다. (느리지만 저렴하기 때문에)
7. SSD (Solid State Disk)
- Flash memory를 기반으로 만든 non-volatile 장비이다.
- FTL (Flash Translation Layer)
: HDD와 Flash memory의 특성을 반영하여 interface를 추상화하는 sw 계층이다. 이 계층을 통해서 SSD를 논리적으로 HDD와 같은 Disk 장비로 사용하도록 한다.
8. Comparison
- Cache Access : register, SRam
- Memory Access : DRam
- SSD Access : Flash Memory
- Disk Access : HDD
- SSD Access와 Disk Access가 매우 느림에도 사용하는 이유는 non-volatile이기 때문이다. 따라서 이들은 보조 기억 장치로써 사용한다.
9. Processor Registers
(1) General purpose registers
- 일반적인 목적으로서의 레지스터는 중간 단계의 결과나 데이터 값을 저장하는 데에 쓰인다.
- Program == Instructions와 Data의 집합
- Program은 non-volatile memory에 있다가 Main Memory로 이동한다.
- 그 후 CPU에서 Memory의 명령어를 처리한다.
(2) Special purpose registers
- 총 다섯 종류의 특수 목적 레지스터가 있다.
① PC (Program counter)
: 다음에 수행될 명령어의 주소를 저장한다.
② IR (Instruction register)
: 가장 최근에 fetch된 명령어 자체를 저장한다.
③ PSW (Program Status Word)
: 상태를 저장한다. 예컨대, Privilege states (user mode인지, kernell mode인지)와 Condition code (상태 정보를 flag로 저장) 등이 있다.
④ MAR (Memory Address Register)
: CPU에서 가장 최근에 처리한 Memory 안의 명령어의 주소를 저장한다.
⑤ MBR (Memory buffer register)
: CPU에서 처리할 Memory 안의 명령어의 주소를 저장한다.
10. ISA (Instruction Set Architecture)
- programmer 입장에서 가장 낮은 API는 instruction이다.
- 명령어가 실행되고 난 후의 변화할 state를 정의한다.
- state == Registers + Memory
ex. x86
: 펜티엄 또는 펜티엄 프로로 구성할 수 있다. 두 종류의 성능은 다를 수 있다. 하지만 동일한 state로 바뀔 것을 기대한다.
ex. x86-64, IA64, ARM
※ ADT (Abstract Data Type)과 유사한 개념이다.
Performance는 고려 대상이 아닌 것처럼 ISA도 동일한 상태로 변화하는 것을 목표로 한다.
11. Instruction Format
- Machine-specific : machine, architecture에 특화되어 정의되어 있다.
- opcode + operands
(1) Opcode
- 명령어 코드
- 수행될 명령어에 대한 부분
- 4bit로 구성되어 있어서 총 16개의 명령어 표현 가능 (2^4)
ex. mov, add, jump
(2) Operands
- 피연산자
- input / output data와 주소에 대한 부분
0001 : memory에서 CPU register로 load 시킴
0010 : CPU register에서 memory로 store 시킴
0101 : memory에 있는 값을 AC (Accumulate)에 더함
12. Instruction Fetch
- CPU는 Fetch와 Execute를 반복한다.
- PC (Program counter)는 fetch할 다음 명령어의 주소를 저장한다.
- IR (Instruction Register)는 fetch한 명령어를 저장한다.
- AC (Accumlator)는 임시 저장소로써 사용된다.