Instruction Set (ISA)
- ์๋ก ๋ค๋ฅธ ์ปดํจํฐ๋ค(CPU)์ ์๋ก ๋ค๋ฅธ ๋ช
๋ น์ด ์งํฉ์ ๊ฐ์ง๊ณ ์๋ค.
- ARM ISA - RISK : ๋ช ๋ น์ด ์๊ฐ ์ ๊ณ , ์ฌ์ดํด ์๋ฅผ ์ ๊ฒ ๊ฐ์ ธ๊ฐ.
- X86 ISA - CISK : ๋ช ๋ น์ด ์๊ฐ ๋ง๊ณ , ์ฌ์ดํด ์๋ ๋ค์ํจ.
- ๋ง์ ๋ถ๋ถ์์ ๊ณตํต์ ์ ๊ฐ์ง๊ณ ์๋ค.
- ์ด์ฐฝ๊ธฐ์ ์ปดํจํฐ๋ค์ ๋งค์ฐ ๋จ์ํ ๋ช
๋ น์ด ์งํฉ์ ๊ฐ์ง๊ณ ์์์
- ์ปดํจํฐ์ ๊ตฌํ์ ๊ฐ๋จํ๊ฒ ๋ง๋ค ์ ์์์ง๋ง, ๋จ์ํ ๋ช ๋ น์ด๋ฅผ ์ฌ๋ฌ๋ฒ ์ฌ์ฉํด์ผ ํ์
- ํ๋์ ๋ง์ ์ปดํจํฐ๋ค๋ ๋น๊ต์ ๋จ์ํ ๋ช ๋ น์ด ์งํฉ์ ํํ๊ณ ์๋ค.
ARMv8 Instruction Set
- ์์ผ๋ก์ ์์ ๋ค์ ์ฌ์ฉํ ARMv8์ ๋ถ๋ถ ์งํฉ์ "LEGv8"์ด๋ผ๊ณ ํ์...!
- ARMv8์ ๋ค์ํ ๋ถ์ผ์์ ์์ฉ๋๊ณ ์๋ค.
- ์ ์์ ํ
- ๋คํธ์ํฌ ๋ฐ ์ ์ฅ ์ฅ์น
- ์นด๋ฉ๋ผ, ํ๋ฆฐํฐ...
- ํ๋์ ๋ง์ ISA๋ค์ ์ ํ์ ์ธ ํํ๋ก ๋ณผ ์ ์๋ค.


Arithmetic Operation
- ๋ง์
๊ณผ ๋บ์
์ ์ธ ๊ฐ์ ํผ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ๋ค.
- ๋ ๊ฐ์ ์์ค(์ ๋ ฅ)์ ํ๋์ ๋ชฉ์ ์ง(์ถ๋ ฅ)์ ๊ฐ์ง๋ค.
- ์) ADD(SUB) a, b, c -> a์ b+c์ ๊ฒฐ๊ณผ๊ฐ ์ ์ฅ๋จ.
- ๋ชจ๋ ์ฐ์ ์ฐ์ฐ์ ์์ ํํ๋ฅผ ๊ฐ์ง๊ณ ์์
๋์์ธ ์์น 1. Simplicity favours Regularity; ๋จ์์ฑ์ ๊ท์น์ฑ์ ์ ํธํ๋ค.
- ๊ท์น์ฑ์ ๊ตฌํ์ ๋ ๊ฐ๋จํ๊ฒ ํด์ค
- ๋จ์์ฑ์ ๋ ๋์ ์ฑ๋ฅ์ ๋ ๋ฎ์ ๋น์ฉ์ผ๋ก ๋ฌ์ฑํ ์ ์๊ฒ ํด์ค.
Arithmetic Example
- C code
- f = ( g + h ) - ( i + j );
- Complied code
- ADD t0, g, h // temp t0 = g + h
- ADD t1, i, j // temp t1 = i + j
- SUB f, t0, t1 // f = t0 - t1
Register Operands
- ์ฐ์ ๋ช ๋ น์ด๋ "๋ ์ง์คํฐ ํผ์ฐ์ฐ์"๋ฅผ ์ฌ์ฉํ๋ค.
- LEGv8์ 64๋นํธ์ ๋ ์ง์คํฐ๊ฐ 32๊ฐ ์๋ค.
- ์์ฃผ ์ ๊ทผํ๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋๋ฐ ์ฌ์ฉ๋๋ค.
- 64๋นํธ์ ๋ฐ์ดํฐ๋ "doubleword"๋ผ๊ณ ๋ถ๋ฆฐ๋ค.
- X0 ~ X30์ ๋ฒ์ฉ ๋ ์ง์คํฐ๊ฐ ์๊ณ X31์ ํน์ํ ๋ชฉ์ ์ ๋ ์ง์คํฐ๊ฐ ์๋ค.
- 32๋นํธ์ ๋ฐ์ดํฐ๋ "word"๋ผ๊ณ ๋ถ๋ฆฐ๋ค.
- W0 ~ W30์ ๋ฒ์ฉ ์๋ธ ๋ ์ง์คํฐ๊ฐ ์๊ณ , W31์ ํน์ํ ๋ชฉ์ ์ ์๋ธ ๋ ์ง์คํฐ๊ฐ ์๋ค.
๋์์ธ ์์น 2. Smaller is Faster; ์์์๋ก ๋น ๋ฅด๋ค.
๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ์ ๋์กฐ๋๋ ์ . ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ๋ ์๋ฐฑ๋ง ๊ฐ์ ์ ์ฅ ์์น๋ฅผ ๊ฐ์ง์ง๋ง, ์ ๊ทผ ์๋๊ฐ ์๋์ ์ผ๋ก ๋๋ฆฌ๋ค.
LEGv8 Registers
- X0 ~ X7 : ํจ์ ํธ์ถ ์ ์ธ์ ์ ๋ฌ ๋ฐ ๋ฐํ ๊ฐ ์ ์ฅ
- ํจ์ ํธ์ถ ์ ์ธ์๋ค์ ์ผ๋ฐ์ ์ผ๋ก X0๋ถํฐ ์์๋๋ก ์ ๋ฌ๋จ.
- X8 : ๊ฐ์ ์ ์ธ ๋ฐํ ๊ฐ ์์น ์ง์
- ํจ์์ ๋ฐํ๊ฐ์ด ์ปค์ ํ๋์ ๋ ์ง์คํฐ์ ๋ด์ ์ ์๋ ๊ฒฝ์ฐ, X8์ ๋ฐํ ๊ฐ์ด ์ ์ฅ๋ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ ์ง์
- X9 - X15 : ์์ ๋ ์ง์คํฐ
- ํจ์ ๋ด๋ถ์์ ์์์ ์ธ ๊ณ์ฐ ๊ฒฐ๊ณผ๋ฅผ ์ ์ฅํ๋ ๋ฐ ์ฌ์ฉ
- X16 ~ X17 (IP0 - IP1) : ๋ง์ปค ์คํฌ๋์น ๋ ์ง์คํฐ ๋๋ ์์ ๋ ์ง์คํฐ
- ๋ง์ปค๊ฐ ์ฌ์ฉํ๊ฑฐ๋ ํจ์ ๋ด๋ถ์์ ์์์ ์ผ๋ก ์ฌ์ฉ๋๋ ๋ ์ง์คํฐ
- X18 : ํ๋ซํผ ๋ ์ง์คํฐ ๋๋ ์์ ๋ ์ง์คํฐ
- ํ๋ซํผ์ ๋ฐ๋ผ ํน์ ํ ์ฉ๋๋ก ์ฌ์ฉ๋๊ฑฐ๋, ์์ ๋ ์ง์คํฐ๋ก ์ฌ์ฉ๋จ.
- X19 ~ X27 : ์ ์ฅ ๋ ์ง์คํฐ
- ํจ์ ํธ์ถ ์ ๊ฐ์ ๋ณด์กดํด์ผ ํ๋ ๋ ์ง์คํฐ
- ํจ์๋ฅผ ํธ์ถํ๊ธฐ ์ ์ ์ด ๋ ์ง์คํฐ๋ค์ ๊ฐ์ ์คํ์ ์ ์ฅํ๊ณ , ํจ์ ํธ์ถ ํ ๋ณต์
- X28(SP) : ์คํ ํฌ์ธํฐ
- ์คํ์ ๊ฐ์ฅ ์์ชฝ์ ๊ฐ๋ฆฌํค๋ ํฌ์ธํฐ.
- ํจ์ ํธ์ถ ์ ์ง์ญ๋ณ์๋ ์ ์ฅ๋ ๋ ์ง์คํฐ ๊ฐ์ ์คํ์ ํ ๋นํ๊ณ ํด์ ํ๋๋ฐ ์ฌ์ฉ
- X29(FP) : ํ๋ ์ ํฌ์ธํฐ
- ํ์ฌ ํจ์์ ์คํ ํ๋ ์์ ์์ ๋ถ๋ถ์ ๊ฐ๋ฆฌํค๋ ํฌ์ธํฐ.
- ์ง์ญ ๋ณ์๋ ์ธ์์ ์ ๊ทผํ๋๋ฐ ์ฌ์ฉ
- X30(LR) : ๋งํฌ ๋ ์ง์คํฐ
- ํจ์ ํธ์ถ ํ ๋ณต๊ทํ ์ฃผ์๋ฅผ ์ ์ฅ.
- ํจ์๊ฐ ๋๋๋ฉด LR์ ์ ์ฅ๋ ์ฃผ์๋ก ์ด๋ํ์ฌ ํ๋ก๊ทธ๋จ์ ๊ณ์ ์คํ
- XZR(register 31) : ์์ 0
- ํญ์ 0์ ๊ฐ์ ๊ฐ์ง๋ ๋ ์ง์คํฐ์ด๋ค.
- ๋ณ์ ์ด๊ธฐํ๋ ์ฐ์ฐ๋ฑ ํน์ํ ์ฉ๋๋ก ์ฌ์ฉํ๋ค.
Register Operand Example
- C code
- f = ( g + h ) - ( i + j ) ;
- f, g, h, i , j ๋ณ์๋ ๊ฐ๊ฐ X19, X20, X21, X22, X23์ ํ ๋น
- Assembly Code
- ADD X9, X20, X21
ADD X10, X22, X23
SUB X19, X9, X10
- ADD X9, X20, X21
** Memory Operands ์ถ๊ฐํ๊ธฐ **
Immediate Operands
- Immediate Operands๋ ๋ช ๋ น์ด์ ํฌํจ๋ ์์๊ฐ์ ์๋ฏธํ๋ค.
- ex) ADDI X22, X22, #4 -> ์ฌ๊ธฐ์ #4๋ ์ค์ ์์๊ฐ 4๋ฅผ ์๋ฏธํ๋ค.
- ์ด๋ฌํ ๋ช ๋ น์ด๊ฐ ํ์ํ ์ด์ ? -> ์์ฃผ ์ฌ์ฉ๋๋๊น.
๋์ง์ธ ์์น 3. Make the Common case fast; ์ผ๋ฐ์ ์ธ ๊ฒฝ์ฐ๋ฅผ ๋น ๋ฅด๊ฒ ํ์
์์ ์์๋ค์ ํ๋ก๊ทธ๋๋ฐ์์ ์์ฃผ ์ฌ์ฉ๋๋ค.
Immediate Operands๋ฅผ ์ฌ์ฉํ๋ฉด ๋ ์ง์คํฐ์ ๊ฐ์ ์ ์ฅํ๊ณ ๋ถ๋ฌ์ค๋ ๊ฒ์ ํผํด ์ฑ๋ฅ์ ๋์ผ ์ ์๋ค.
Unsigned Binary Integers

- n-bit์ ์ซ์๊ฐ ์ฃผ์ด์ง๋ค ํ์ ๋
- 0 ~ 2^n - 1 ์ ๊ฐ์ ํํํ ์ ์๋ค.
- 32-bit์ ๊ฒฝ์ฐ์๋ 0์์ 4,294,967,295๊น์ง์ ๊ฐ์ ํํํ ์ ์๋ค.
- Example
- 0000 0000 0000 0000 0000 0000 0000 1011_(2)
- = 0 + ... + 1x2^3 + 0x2^2 + 1x2^1 + 1x2^0
- = 0 + 8 + 0 + 2 + 1 = 11_(10)
2's Complement Signed Integers

- n-bit์ ์ซ์๊ฐ ์ฃผ์ด์ง๋ค ํ์ ๋
- -2^(n-1) ์์ 2^(n-1) - 1์ ๊ฐ์ ํํํ ์ ์๋ค.
- 32๋นํธ์ ๊ฒฝ์ฐ์๋ -2,147,483,648 ์์ 2,147,483,647๊น์ง์ ๊ฐ์ ํํํ ์ ์๋ค.
- Example
- 1111 1111 1111 1111 1111 1111 1111 1100_(2)
- = -1x2^31 + 1x2^30 + ... + 1x2^2 + 0x2^1 + 0x2^0
- = -2,147,483,648 + 2,147,483,644 = -4_(10)
- ๊ฐ์ฅ ์ผ์ชฝ ๋นํธ(31๋ฒ์งธ ๋นํธ)๋ ๋ถํธ ๋นํธ์ด๋ค.
- ๋ถํธ ๋นํธ๊ฐ 1์ด๋ฉด ์์๋ฅผ
- ๋ถํธ ๋นํธ๊ฐ 0์ด๋ฉด 0๊ณผ ์์๋ฅผ ๋ํ๋ธ๋ค.
- ๊ฐ์ฅ ํฐ ์์ : 1000 0000 ... 0000
- ๊ฐ์ฅ ์์ ์์ : 1111 1111 .... 1111
- ๊ฐ์ฅ ํฐ ์์ : 0111 1111 .... 1111
Signed Negation

- ๋ถํธ๋ฅผ ๋ฐ๊พธ๋ ๋ฐฉ๋ฒ : ๋นํธ ๋ฐ์ ํ 1 ๋ํ๊ธฐ
- ๋นํธ ๋ฐ์ : 1 -> 0, 0 -> 1
- Example
- +2 = 0000 0000 ... 0010
- -2 = 1111 1111 ... 1101 + 1
= 1111 1111 ... 1110
Sign Extension
- ๋ถํธ ํ์ฅ์ ์ซ์๋ฅผ ๋ ๋ง์ ๋นํธ๋ฅผ ์ฌ์ฉํด์ ๋ํ๋ด๋ ๋ฐฉ๋ฒ์ ์๋ฏธํ๋ค.
- ์ซ์ ๊ฐ์ ์ ์งํ์ฑ ๋นํธ์ ์๋ฅผ ๋๋ฆฐ๋ค.
- ๋ถํธ ํ์ฅ์ ๋ถํธ ๋นํธ๋ฅผ ์ผ์ชฝ์ผ๋ก ๋ณต์ฌํ๋ ๋ฐฉ๋ฒ์ผ๋ก ์ด๋ฃจ์ด์ง๋ค.
- Example 8-bit -> 16-bit
- +2 = 0000 0010 -> 0000 0000 0000 0010
- -2 = 1111 1110 -> 1111 1111 1111 1110
- ํด๋น ๊ธฐ๋ฅ์ ํ๋ ๋ช
๋ น์ด
- LDURSB : Sign-Extend loaded byte
- LDURB : zero-extend loaded byte
Representing Instructions
- ๋ช ๋ น์ด๋ค์ ๋ฐ์ด๋๋ฆฌ๋ก ์ธ์ฝ๋ฉ ๋์ด์์ผ๋ฉฐ, "machine code"๋ผ๊ณ ๋ถ๋ฆฐ๋ค.
- LEGv8 ๋ช
๋ น์ด
- 32๋นํธ ๋ช ๋ น์ด ๋จ์ด๋ก ์ธ์ฝ๋ฉ ๋จ
- ์ฐ์ฐ์ฝ๋(opcode), ๋ ์ง์คํฐ ๋ฒํธ๋ฅผ ์ธ์ฝ๋ฉํ๋ ์ ์ ์์ ํฌ๋ฉง์ด ์๋ค.
- ๊ท์น์ฑ์ด ์๋ค.
Hexadecimal

- ๋นํธ ๋ฌธ์์ด์ ๊ฐ๊ฒฐํ ํํ์ ์ ํฉํ๋ค.
- 4๋นํธ์ฉ ๋ฌถ์ด์ ํ๋์ 16์ง์๋ฅผ ํํํ๋ค.
- Example
- eca8 6420
- = 1110 1100 1010 10000 0110 0100 0010 0000
LEGv8 R-format Instruction

- R(egister)-Format
- ํผ์ฐ์ฐ์๋ก๋ ๋ ์ง์คํฐ๋ง ์กด์ฌํ๋ค.
- 32๊ฐ์ ๋ ์ง์คํฐ๋ฅผ ๊ตฌ๋ถํ๊ธฐ ์ํ 5๋นํธ.
- ๋ช
๋ น์ด ํ๋
- opcode : ๋ช ๋ น์ด ์ฝ๋
- Rm : ๋๋ฒ ์งธ ๋ ์ง์คํฐ ์์ค ์ฐ์ฐ์
- shamt : ์ํํธ๋ฅผ ํ ์
- Rn : ์ฒซ๋ฒ ์งธ ๋ ์ง์คํฐ ์์ค ์ฐ์ฐ์
- Rd : ๋ช ๋ น์ด ์คํ ๊ฒฐ๊ณผ๊ฐ ์ ์ฅ๋ ๋ ์ง์คํฐ(destination)
- Example

LEGv8 D-format Instructions

- D(ata)-format Instruction
- Load / Store Instruction
- Rn : ๋ฒ ์ด์ค ๋ ์ง์คํฐ
- address : ๋ฒ ์ด์ค ๋ ์ง์คํฐ์ ๋ด์ฉ(์ฃผ์๊ฐ)์ผ๋ก ๋ถํฐ์ ์์ ์คํ์
- Rt : Destination (load) ํน์ source (store) ๋ ์ง์คํฐ
๋์์ธ ์์น 3 : Good Design demands Good compromises ; ์ข์ ๋์์ธ์ ์ข์ ํํ์ ์๊ตฌํ๋ค.
- ๋ค๋ฅธ ํ์์ ํฌ๋ฉง์ ๋์ฝ๋ฉ์ ๋ณต์กํ๊ฒ ํ์ง๋ง, 32bit ๋ช ๋ น์ด์ ์ผ๊ด์ฑ์ ๊ฐ์ง ์ ์๋ฐ.
- ํฌ๋ฉง์ ๊ฐ๋ฅํ ๋น์ทํ๊ฒ ์ ์งํ ์ ์๋ค.
LEGv8 I-format Instruction

- I(mediate)-format
'๐ฅCS > ์ปดํจํฐ ๊ตฌ์กฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [์ปดํจํฐ๊ตฌ์กฐ] 1. Computer Abstractionsand Technology (0) | 2024.09.11 |
|---|