์ปดํจํฐ๊ฐ ์ดํดํ๋ 0๊ณผ 1๋ก๋ ์ ๋ณด์๋ ๋ฐ์ดํฐ(Data)์ ๋ช ๋ น์ด(Instruction)์ด ์์ต๋๋ค. ํด๋น ํฌ์คํธ์์๋ ๋ช ๋ น์ด์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค.
๐ฅ๏ธ Programming Language
- Low-Level Programming Language
- ๊ธฐ๊ณ์ด(Machine Code): 0๊ณผ 1๋ก ์ด๋ฃจ์ด์ง ๋ช ๋ น์ด ์งํฉ
- ์ด์ ๋ธ๋ฆฌ์ด(Assembly Language): ๊ธฐ๊ณ์ด๋ฅผ ์ฝ๊ธฐ ํธํ ์ํ๋ก ๋ฒ์ญํ ์ธ์ด
- High-Level Programming Language
- High-Level Programming Language โ Assembly Language โ Machine Code๋ก ๋ณํ๋์ด์ผ ํจ
- Compiled Language: Compiler๊ฐ
Source Code
์ ์ฒด๋ฅผ ๋ณด๋ฉฐ ์ค๋ฅ๋ฅผ ํ์ธํ๊ณ ๊ธฐ๊ณ์ด๋ก ๋ณํ๋ ๊ฒฐ๊ณผ์ธObject Code
๋ฅผ ์ป์ - Interpreter Language: Interpreter๊ฐ
Source Code
๋ฅผ ํ ์ค์ฉ ๊ธฐ๊ณ์ด๋ก ๋ณํํ๊ณ ์คํ
๐ฅ๏ธ ๋ช ๋ น์ด ๊ตฌ์กฐ
๋ช ๋ น์ด๋ Opcode(Operation Code)์ Operand๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค.
๐ฅ๏ธ Opcode
Opcode๋ ๋ช ๋ น์ด์์ ๋ช ๋ น ์ฆ, ์ํํ ์ฐ์ฐ์ด ๋ฌด์์ธ์ง๋ฅผ ๋ํ๋ด๋ ๋ถ๋ถ์ ๋๋ค. Opcode์ ์ข ๋ฅ์ ์๊น์๋ CPU(Central Processing Unit; ์ค์์ฒ๋ฆฌ์ฅ์น)๋ง๋ค ๋ค๋ฅด์ง๋ง ํฌ๊ฒ ๋ถ๋ฅํ๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ๋ฐ์ดํฐ ์ ์ก
- ์ฐ์ / ๋ ผ๋ฆฌ ์ฐ์ฐ
- ์ ์ด ํ๋ฆ ๋ณ๊ฒฝ
- ์ ์ถ๋ ฅ ์ ์ด
๐ฅ๏ธ Operand
Operand๋ ์ฐ์ฐ์ ์ฌ์ฉํ ๋ฐ์ดํฐ ๋๋ ์ฃผ์(Address)๋ฅผ ๋ํ๋ด๋ ๋ถ๋ถ์ ๋๋ค. Opcode์ ๋ฐ๋ผ ํ์ํ Operand์ ์๊ฐ ๋ฌ๋ผ์ง ์ ์๋๋ฐ ๋ฌ๋ผ์ง๋ Operand์ ๊ฐ์์ ๋ฐ๋ผ ๋ช ๋ น์ด๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ๋๋์ด ๋ถ๋ฆ ๋๋ค.
Instruction | Operand ๊ฐ์ |
---|---|
$0$-Address Instruction | $0$๊ฐ |
$1$-Address Instruction | $1$๊ฐ |
$2$-Address Instruction | $2$๊ฐ |
$3$-Address Instruction | $3$๊ฐ |
๐ฅ๏ธ ์ฃผ์ ์ง์ ๋ฐฉ์
Operand์๋ ์ฃผ๋ก ์ ํจ ์ฃผ์(Effective Address)๋ฅผ ๋ช ์ํ๋ฉฐ ์ฃผ์ ์ง์ ๋ฐฉ์์ด๋ ์ ํจ ์ฃผ์(Effective Address)๋ฅผ ์ฐพ๋ ๋ฐฉ๋ฒ์ ๋งํฉ๋๋ค.
์ ํจ ์ฃผ์(Effective Address): ์ฐ์ฐ์ ๋์์ด ๋๋ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋ ์์น(Ex. Memory Address, Register Address)
Operand์ ๋ฐ์ดํฐ ๋์ ์ฃผ์๋ฅผ ํฌํจ์ํค๋ ์ด์ ๊ฐ ๋ฌด์์ธ๊ฐ์?
- ๋ช ๋ น์ด์ ๊ณ ์ ๋ ๊ธธ์ด ๋๋ฌธ์ ๋ค์ํ ๋ฐ์ดํฐ๋ฅผ ํํํ๊ธฐ ์ ํ๋๊ธฐ ๋๋ฌธ์ ๋๋ค.
์ฃผ์ ์ง์ ๋ฐฉ์์ ์ข ๋ฅ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
Addressing Mode | Operand |
---|---|
์ฆ์ ์ฃผ์ ์ง์ ๋ฐฉ์(Immediate Addressing Mode) | ์ฐ์ฐ์ ๋์์ด ๋๋ ๋ฐ์ดํฐ๋ฅผ ์ง์ ๋ช ์ |
์ง์ ์ฃผ์ ์ง์ ๋ฐฉ์(Direct Addressing Mode) | ์ ํจ ์ฃผ์(Memory Address)๋ฅผ ์ง์ ๋ช ์ |
๊ฐ์ ์ฃผ์ ์ง์ ๋ฐฉ์(Indirect Addressing Mode) | ์ ํจ ์ฃผ์(Memory Address)๋ฅผ ์ ์ฅํ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ ๋ช ์ |
๋ ์ง์คํฐ ์ฃผ์ ์ง์ ๋ฐฉ์(Register Addressing Mode) | ์ ํจ ์ฃผ์(Register Address)๋ฅผ ์ง์ ๋ช ์ |
๋ ์ง์คํฐ ๊ฐ์ ์ฃผ์ ์ง์ ๋ฐฉ์(Register Indirect Addressing Mode) | ์ ํจ ์ฃผ์(Memory Address)๋ฅผ ์ ์ฅํ ๋ ์ง์คํฐ ์ฃผ์๋ฅผ ๋ช ์ |
์คํ ์ฃผ์ ์ง์ ๋ฐฉ์(Stack Addressing Mode) | Operand ์์ด Opcode๋ฅผ ํตํด ์คํ ์ฃผ์ ์ง์ ๋ฐฉ์์์ ์์๋ด๊ณ Stack Pointer(Register)๋ฅผ ์ฌ์ฉํด ์ ํจ ์ฃผ์(Memory Address)๋ฅผ ์์๋ |
๋ณ์ ์ฃผ์ ์ง์ ๋ฐฉ์(Displacement Addressing Mode) | Operand์ ํน์ ๋ ์ง์คํฐ์ ๊ฐ์ ๋ํ์ฌ ์ ํจ ์ฃผ์๋ฅผ ์ป๋ ๋ฐฉ๋ฒ(Ex. Relative, Base-Register Addressing Mode) |
์๋ ์ฃผ์ ์ง์ ๋ฐฉ์(Relative Addressing Mode) | Operand์ PC(Program Counter)์ ๊ฐ์ ๋ํ์ฌ ์ ํจ ์ฃผ์๋ฅผ ์ป๋ ๋ฐฉ๋ฒ(Ex. if ๋ฌธ๊ณผ ๊ฐ์ด ๋ถ๊ธฐํ๋ ๊ฒฝ์ฐ) |
๋ฒ ์ด์ค ๋ ์ง์คํฐ ์ฃผ์ ์ง์ ๋ฐฉ์(Base-Register Addressing Mode) | Operand์ Base Register์ ๊ฐ์ ๋ํ์ฌ ์ ํจ ์ฃผ์๋ฅผ ์ป๋ ๋ฐฉ๋ฒ |
๐ฅ๏ธ Instruction Cycle
Instruction Cycle์ด๋ ํ๋์ ๋ช ๋ น์ด๋ฅผ ์ฒ๋ฆฌํ๋ ์ ํํ๋ ํ๋ฆ์ ๋งํฉ๋๋ค.
- Fetch Cycle: ๋ฉ๋ชจ๋ฆฌ์ ์๋ ๋ช
๋ น์ด๋ฅผ CPU๋ก ๊ฐ์ง๊ณ ์ค๋ ๋จ๊ณ
- PC(Program Counter)์ ๋ค์ ๋ช ๋ น์ด์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ ์ ์ฅ
- PC์ ์ ์ฅ๋์๋ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ MAR(Memory Address Register)๋ก ์ด๋
- MAR์ ์ ์ฅ๋ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์์ ์ ์ด ์ ํธ๋ฅผ ํตํด ํด๋น ๋ฉ๋ชจ๋ฆฌ ์ฃผ์์ ์ ์ฅ๋์ด์๋ ๋ช ๋ น์ด๋ฅผ ๊ฐ์ ธ์ MBR(Memory Buffer Register)์ ์ ์ฅ
- PC๊ฐ ์ฆ๊ฐํ์ฌ ๋ค์ ๋ช ๋ น์ด๋ฅผ ์ฝ์ด๋ค์ผ ์ค๋น
- MBR์ ์ ์ฅ๋ ๋ช ๋ น์ด๋ฅผ IR(Instruction Register)๋ก ์ด๋
- Execution Cycle: ์ ์ด ์ฅ์น(Control Unit)๊ฐ IR์ ๋ด๊ธด ๊ฐ์ ํด์ํ๊ณ , ์ ์ด ์ ํธ๋ฅผ ๋ฐ์์ํค๋ ๋จ๊ณ
- Indirect Cycle: ์ถ๊ฐ์ ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ์ ์ ๊ทผ์ด ํ์ํ ๊ฒฝ์ฐ(Ex. ๊ฐ์ ์ฃผ์ ์ง์ ๋ฐฉ์(Indirect Addressing Mode))
- Interrupt Cycle: CPU๋ Execution Cycle์ด ๋๋ ํ ๋ช ๋ น์ด๋ฅผ Fetch ํ๊ธฐ ์ ํญ์ Interrupt ์ฌ๋ถ๋ฅผ ํ์ธํ๊ณ Interrupt๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ ์คํํ๋ ๋จ๊ณ
๐ฅ๏ธ Interrupt
Interrupt๋ CPU์ ์์ ์ ๋ฐฉํดํ๋ ์ ํธ๋ฅผ ๋งํ๋ฉฐ Interrupt ์ข ๋ฅ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๐ฅ๏ธ Exception(Synchronous Interrupt)
Exception์ CPU์ ์ํด์ ๋ฐ์ํ๋ Interrupt๋ก Exception์ด ๋ฐ์ํ๋ฉด CPU๋ ํ๋ ์ผ์ ์ค๋จํ๊ณ ํด๋น Exception์ ์ฒ๋ฆฌํฉ๋๋ค.
Exception | Definition | Example |
---|---|---|
Fault | Exception์ ์ฒ๋ฆฌํ ์งํ Exception์ด ๋ฐ์ํ ๋ช ๋ น์ด๋ถํฐ ์คํ์ ์ฌ๊ฐํ๋ Exception | ๋ฐ์ดํฐ๊ฐ ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์๋ ๋ณด์กฐ๊ธฐ์ต์ฅ์น์ ์๋ ๊ฒฝ์ฐ Fault๋ฅผ ๋ฐ์์ํด |
Trap | Exception์ ์ฒ๋ฆฌํ ์งํ Exception์ด ๋ฐ์ํ ๋ค์ ๋ช ๋ น์ด๋ถํฐ ์คํ์ ์ฌ๊ฐํ๋ Exception | Debugging |
Abort | CPU๊ฐ ์คํ์ค์ธ ํ๋ก๊ทธ๋จ์ ๊ฐ์ ๋ก ์ค๋จ์ํฌ ์ ๋ฐ์ ์๋ ์ฌ๊ฐํ ์ค๋ฅ๋ฅผ ๋ฐ๊ฒฌํ์ ๋ ๋ฐ์ํ๋ Exception | ย |
Software Interrupt | System call์ด ๋ฐ์ํ์ ๋ ๋ฐ์ํ๋ Exception | ย |
๐ฅ๏ธ Hardware Interrupt(Asynchronous Interrupt)
Hardware Interrupt๋ ์ฃผ๋ก I/O Device์ ์ํด์ ๋ฐ์ํ๋ Interrupt์ ๋๋ค.
- Non-Maskable Interrupt: Hardware ๊ณ ์ฅ์ผ๋ก ์ธํ Interrupt์ ๊ฐ์ด ๋ฐ๋์ ๋จผ์ ์ฒ๋ฆฌํด์ผ ํ๋ Interrupt
- Maskable Interrupt: Interrupt Flag๋ก ๋ง์ ์ ์๋ Interrupt
- I/O Device์์ CPU๋ก Interrupt ์์ฒญ ์ ํธ ์ ๋ฌ
- CPU๋ Interrupt ์์ฒญ ์ ํธ๋ฅผ ํ์ธํ๊ณ Interrupt Flag๋ฅผ ํตํด ํ์ฌ Interrupt ์ฌ๋ถ๋ฅผ ํ์ธ
- Interrupt๋ฅผ ๋ฐ์๋ค์ผ ์ ์๋ค๋ฉด CPU๋ ์ง๊ธ๊น์ง์ ์์ ์ Stack Area์ ๋ฐฑ์
- CPU๋ Interrupt Vector๋ฅผ ์ฐธ์กฐํ์ฌ Interrupt Service Routine์ ์คํ
- Interrupt Service Routine์ด ๋๋๋ฉด ๋ฐฑ์ ํด ๋ ์์ ์ ๋ณต๊ตฌํ์ฌ ์คํ์ ์ฌ๊ฐ
- Interrupt Service Routine(Interrupt Handler): Interrupt๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํ ํ๋ก๊ทธ๋จ
- Interrupt Service Routine(Interrupt Handler): Interrupt Service Routine๊ฐ ์ ์ฅ๋ ๋ฉ๋ชจ๋ฆฌ์ ์์ ์ฃผ์
๐ฅ๏ธ ๋ช ๋ น์ด ๋ณ๋ ฌ ์ฒ๋ฆฌ ๊ธฐ๋ฒ(ILP)
๋ช ๋ น์ด ๋ณ๋ ฌ ์ฒ๋ฆฌ ๊ธฐ๋ฒ(ILP; Instruction-Level Parallelism)์ด๋ ๋ช ๋ น์ด๋ฅผ ๋์์ ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌํ๋ ๊ธฐ๋ฒ์ ๋งํฉ๋๋ค.
๋ช ๋ น์ด ๋ณ๋ ฌ ์ฒ๋ฆฌ ๊ธฐ๋ฒ์ ์์๋ณด๊ธฐ์ ์์ Instruction Cycle์ Clock ๋จ์๋ก ๋๋ Instruction Pipeline์ ์ดํด๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ๋ช ๋ น์ด ์ธ์ถ(Instruction Fetch)
- ๋ช ๋ น์ด ํด์(Instruction Decode)
- ๋ช ๋ น์ด ์คํ(Execute Instruction)
- ๊ฒฐ๊ณผ ์ ์ฅ(Write Back)
์์ ๊ฐ์ด 4๋จ๊ณ๊ฐ ์๋ 2๋จ๊ณ ํน์ 5๋จ๊ณ๋ก ๋๋๊ธฐ๋ ํฉ๋๋ค.
๐ฅ๏ธ Instruction Pipelining
Instruction Pipelining์ด๋ ์์ ๊ทธ๋ฆผ์ฒ๋ผ ๋์์ ์ฌ๋ฌ ๊ฐ์ ๋ช ๋ น์ด๋ฅผ ๊ฒน์ณ์ ์คํํ๋ ๊ธฐ๋ฒ์ ๋๋ค. ์ด๋ฌํ Instruction Piepelining์ ์ฑ๋ฅ ํฅ์์ ๊ฐ์ ธ์ค์ง๋ง Pipeline Hazzard๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ ์ฑ๋ฅ ํฅ์์ ํ์ง ๋ชปํฉ๋๋ค.
Pipeline Hazzard์๋ ๋ค์๊ณผ ๊ฐ์ ๊ฒ๋ค์ด ํฌํจ๋์ด ์์ต๋๋ค.
- Data Hazzard: ๋ช
๋ น์ด๋ค ์ฌ์ด์ Data Dependecy๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ(Ex.
a = 1
โb = a + 1
) - Control Hazzard: PC๊ฐ ์์ฐจ์ ์ผ๋ก ์ฆ๊ฐํ์ง ์๊ณ ๊ฐ์๊ธฐ ๋ณํ๋ ๊ฒฝ์ฐ(Ex.
if
๋ฌธ๊ณผ ๊ฐ์ ๋ถ๊ธฐ) - Structural Hazzard(Resource Hazzard): ์๋ก ๋ค๋ฅธ ๋ช ๋ น์ด๋ค์ด ๋์์ ๊ฐ์ CPU Resource(Ex. ALU, Register)๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ
๐ฅ๏ธ Superscalar
Superscalar๋ ์์ ๊ทธ๋ฆผ์ฒ๋ผ ์ฌ๋ฌ ๊ฐ์ Instruction Pipeline์ ๋๋ ๊ธฐ๋ฒ์ด๋ฉฐ Superscalar ์ฌ์ฉ์ด ๊ฐ๋ฅํ CPU๋ฅผ Superscalar Processor(Superscalar CPU)๋ผ๊ณ ํฉ๋๋ค.
Superscalar๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฐ์ Clock์์ ๋์์ Fetch๊ฐ ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ ์ด๋ก ์ ์ผ๋ก๋ Instruction Pipeline์ ๊ฐ์์ ๋น๋กํ์ฌ ์ฒ๋ฆฌ ์๋๊ฐ ์ฆ๊ฐํฉ๋๋ค. ํ์ง๋ง Pipeline Hazzard๊ฐ ๋ฐ์ํ ์ ์๊ธฐ ๋๋ฌธ์ ์ค์ ๋ก๋ Instruction Pipeline์ ๊ฐ์์ ๋น๋กํ์ฌ ์ฒ๋ฆฌ ์๋๊ฐ ์ฆ๊ฐํ์ง๋ ์์ต๋๋ค.
๐ฅ๏ธ OoOE(Out-of-Order Execution)
OoOE(Out-of-Order Execution; ๋น์์ฐจ์ ๋ช ๋ น์ด ์ฒ๋ฆฌ)๋ Instruction Pipeline์ ์ค๋จ์ ๋ฐฉ์งํ๊ณ ์ ๋ช ๋ น์ด๋ฅผ ์์ฐจ์ ์ผ๋ก ์ฒ๋ฆฌํ์ง ์๋ ๊ธฐ๋ฒ์ ๋๋ค.
OoOE๋ ์ค๋๋ CPU ์ฑ๋ฅ ํฅ์์ ํฌ๊ฒ ๊ธฐ์ฌํ ๊ธฐ๋ฒ์ด์ ๋๋ถ๋ถ์ CPU๊ฐ ์ฌ์ฉํ๋ ๊ธฐ๋ฒ์ ๋๋ค.
๐ฅ๏ธ ๋ช ๋ น์ด ์งํฉ ๊ตฌ์กฐ(ISA)
ISA(Instruction Set Architecture; ๋ช ๋ น์ด ์งํฉ ๊ตฌ์กฐ)๋ CPU๊ฐ ์ดํดํ ์ ์๋ ๋ช ๋ น์ด์ ๋ชจ์์ ๋๋ค.
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ CPU๋ง๋ค ISA๊ฐ ๋ฌ๋ผ์ง ์ ์์ต๋๋ค. ๋ํ์ ์ผ๋ก ISA๊ฐ ๋ฌ๋ผ์ง๋ฉด ๋ช ๋ น์ด์ ํํ, ์ ์ด์ฅ์น๊ฐ ๋ช ๋ น์ด๋ฅผ ํด์ํ๋ ๋ฐฉ์, ์ฌ์ฉ๋๋ ๋ ์ง์คํฐ์ ์ข ๋ฅ์ ๊ฐ์, ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ๋ฐฉ๋ฒ ๋ฑ์ด ๋ฌ๋ผ์ง๋๋ค.
์ฆ, ISA๋ CPU์ ์ธ์ด ๋ชจ์์ด์ H/W๊ฐ S/W๋ฅผ ์ด๋ป๊ฒ ์ดํดํ ์ง์ ๋ํ ์ฝ์์ด๋ผ ํ ์ ์์ต๋๋ค.
์ด๋ฌํ ISA๋ ์ด๋ป๊ฒ ์ค๊ณํ๋์ง์ ๋ฐ๋ผ ํฌ๊ฒ CISC(Complex Instruction Set Computer)์ RISC(Reduced Instruction Set Computer)๋ก ๋๋๋๋ค.
CISC | RISC(load-store ๊ตฌ์กฐ) |
---|---|
๋ณต์กํ๊ณ ๋ค์ํ ๋ช ๋ น์ด | ๋จ์ํ๊ณ ์ ์ ๋ช
๋ น์ด(load , store ) |
๊ฐ๋ณ ๊ธธ์ด ๋ช ๋ น์ด | ๊ณ ์ ๊ธธ์ด ๋ช ๋ น์ด |
๋ค์ํ ์ฃผ์ ์ง์ ๋ฐฉ์ | ์ ์ ์ฃผ์ ์ง์ ๋ฐฉ์ |
ํ๋ก๊ทธ๋จ์ ์ด๋ฃจ๋ ๋ช ๋ น์ด์ ์๊ฐ ์ ์ | ํ๋ก๊ทธ๋จ์ ์ด๋ฃจ๋ ๋ช ๋ น์ด์ ์๊ฐ ๋ง์ |
์ฌ๋ฌ Clock์ ๊ฑธ์ณ ๋ช ๋ น์ด ์ํ | 1 Clock ๋ด์ธ๋ก ๋ช ๋ น์ด ์ํ |
Instruction Pipelining์ด ์ด๋ ค์ | Instruction Pipelining์ด ์ฌ์ |
Intel์ CPU(x86, x86-64) | Apple์ CPU(ARM) |