본문 바로가기
[ CS 전공 ]

[ OS ] Basic component, ISA, Instruction Cycle, PIC

by 불주먹고양이 2022. 3. 27.

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)는 임시 저장소로써 사용된다.