SIC/XE Machine Architecture
#
์์คํ ์ํํธ์จ์ด์ ๊ธฐ๊ณ ์ข ์์ฑ์์คํ ์ํํธ์จ์ด์ ์ค๊ณ๋ ๊ทธ ์ํํธ์จ์ด๊ฐ ๋์ํ ๋จธ์ ์ ๊ตฌ์กฐ์ ๋ฐ์ ํ ๊ด๋ จ์ด์๋ค.
- ์๋ฅผ ๋ค์ด, ์ด์ ๋ธ๋ฌ๋ mnemonic instruction์ machine code๋ก ํด์ํ๊ณ , ์ด์์ฒด์ ๋ ์ปดํจํ ์์คํ ์ ์์์ ์ง์ ์ ์ผ๋ก ๊ด๋ฆฌํ๋ค.
์์คํ ์ ๊ตฌ์ฒด์ ์ธ ๊ตฌํ๋ฒ์ ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ๋ณํ์ง๋ง, ๋ฐํ์ ๊น๋ ค์๋ ์ปจ์ ์ ์ฌ์ ํ๋ค.
์์คํ ์ํํธ์จ์ด์ ๊ธฐ๋ณธ์ ์ธ ๊ตฌ์กฐ์ ์ค๊ณ๋ ๋๋ถ๋ถ์ ์ปดํจํฐ์์ ๋น์ทํ๋ค.
- ์๋ฅผ ๋ค์ด, ์ด์ ๋ธ๋ฌ์ ์ผ๋ฐ์ ์ธ ์ค๊ณ์ ๋ก์ง์ ๋ค๋ฅธ ๋จธ์ ์ํคํ ์ณ์์ ๊ฑฐ์ ๋์ผํ๋ค.
#
SIC์ SIC/XE์ค์ ๋จธ์ ์ ๋งค์ฐ ๋ณต์กํ์ฌ ํ์ตํ๊ธฐ ์ข์ง ์๊ณ , ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ๊ธฐ๋ฅ์ ์ถฉ์คํ ์ ์์ผ๋ฏ๋ก, SIC์ SIC/XE๋ฅผ ํตํด ์ดํดํ๋๋ก ํ๋ค. SIC์ SIC/XE๋ ๊ฐ์์ ์ปดํจํฐ (hypothetical computer)๋ก ์ค์ ๋จธ์ ์์ ๋ณผ ์ ์๋ ํ๋์จ์ด์ ๊ธฐ๋ฅ๋ค์ ํฌํจํ๊ณ , ์ผ๋ฐ์ ์ด์ง ์๊ณ ๊ด๋ จ ์๋ ๋ณต์ก์ฑ๋ค์ ์ ๊ฑฐํ๋ค.
๊ตฌ์ฒด์ ์ธ ์ธ๋ถ์ฌํญ์ผ๋ก๋ถํฐ ๋จ์ด์ ธ์ ์์คํ ์ํํธ์จ์ด์ ๊ธฐ๋ณธ์ ์ธ ์ปจ์ ์ ์ดํดํ๋๋ก ํ๋ค.
SIC๋ Simplified Instructional Computer๋ก ๊ฐ์ ์ปดํจํฐ์ ํ์ค์ ์ธ ๋ชจ๋ธ์ด๊ณ , SIC/XE๋ SIC์ ํ์ฅ๋ ๋ฒ์ (the eXtra Equipment(or Expensive))์ด๋ค. SIC์์ ์๋ํ๋ ํ๋ก๊ทธ๋จ์ ๋ชจ๋ SIC/XE์์ ์ ์์ ์ผ๋ก ๋์ํ๋ ์์ํธํ(upward compatibility)์ ๋ณด์ฅํ๋ค. ํ์ง๋ง SIC/XE์์ ์๋ํ๋ ํ๋ก๊ทธ๋จ์ด SIC์์ ์๋๋๋ค๋ ํ์ํธํ(backward compatibility)์ ๋ณด์ฅํ์ง ์๋๋ค.
#
SIC Machine Architecture#
๋ฉ๋ชจ๋ฆฌ8๋นํธ ๋ฐ์ดํธ๋ก ๊ตฌ์ฑ
3๋ฐ์ดํธ ์๋(Word)๋ก ๊ตฌ์ฑ(24๋นํธ)
์ ์ฒด ๋ฉ๋ชจ๋ฆฌ๋ 32KB(2^15 ๋ฐ์ดํธ)
#
๋ ์ง์คํฐSIC์๋ ํน์ํ ๋ชฉ์ ์ ๊ฐ์ง 5๊ฐ์ ๋ ์ง์คํฐ๊ฐ ์กด์ฌํ๋ค. ๊ธธ์ด๋ ๊ฐ๊ฐ 24๋นํธ์ด๊ณ ์ซ์ ํํ๊ณผ Mnemonic ํํ์ ๊ฐ์ง๋ค.
A(0) : Accumulator register
X(1) : Index register
L(2) : Linkage register
PC(8) : Program Counter register
SW(9) : Status Word register
#
๋ฐ์ดํฐ ํฌ๋งทInteger์ Character ๋ ๊ฐ์ง ๋ฐ์ดํฐ ํฌ๋งท์ ์ง์ํ๋ค. (Floating-point๋ ์ง์ํ์ง์์)
Character๋ 8๋นํธ(ASCII), Integer๋ 24๋นํธ
#
๋ช ๋ น์ด ํฌ๋งท(Instruction format)opcode(8๋นํธ) : ๋ช ๋ น์ด๋ฅผ ๊ตฌ๋ถํ๊ธฐ ์ํ ๋ถ๋ถ
X(1๋นํธ) : Indexed addressing or Direct addressing ์ธ์ง๋ฅผ ๋ํ๋ด๋ ํ๋๊ทธ.
address(15๋นํธ) : ์ฃผ์๋ฅผ ๋ํ๋ด๋ ๋ถ๋ถ
#
Addressing ModesDirect addressing mode (x=0) : Target Address = address
Indexed addressing mode (x=1) : Target Address = address + (X)
์ง์ ์ฃผ์๋ ์ฃผ์๋ฅผ ์ง์ ์ฌ์ฉํ๊ณ ์ธ๋ฑ์ค ์ฃผ์๋ ํด๋น ์ฃผ์์ Index ๋ ์ง์คํฐ์ ๊ฐ์๋ํ ๊ฒ์ ์ฃผ์๋ก ์ฌ์ฉํ๋ค.
#
๋ช ๋ น์ด ์ข ๋ฅ(Instruction Type)Load & Store
Arithmetic & Logic
Comparison
Conditional Jumps
Subroutine Linkage
I/O
๋ช ๋ น์ด ํ๊ธฐ๋ฒ
A โ (A) + (m .. m+2) : A ๋ ์ง์คํฐ์ A ๋ ์ง์คํฐ์ ๊ฐ๊ณผ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์ m, m+1, m+2 ์ ์๋ ๊ฐ(3Bytes word ์ด๋ฏ๋ก)์ ๋ํด์ ๋ฃ๋๋ค.
()
๋ก ๊ฐ์ธ ์์ผ๋ฉด ๋ฉ๋ชจ๋ฆฌ ์ฃผ์ ๋๋ ๋ ์ง์คํฐ ์ฃผ์์ ๋ด๊ฒจ์๋ ๊ฐ์ ๋งํ๊ณ ๊ฐ์ธ์์ง ์์ผ๋ฉด ํด๋น ์ฃผ์๋ฅผ ๋งํ๋ค.
#
Load & StoreLDA, LDX, STA, STX, etc.
LDA
m
: A ๋ ์ง์คํฐ โ (m .. m+2), A ๋ ์ง์คํฐ์ m ์ด ๊ฐ๋ฅดํค๋ ๋ฉ๋ชจ๋ฆฌ์ฃผ์์ ์๋ ๊ฐ์ Loadํจ.LDX
m
: X ๋ ์ง์คํฐ โ (m .. m+2), X ๋ ์ง์คํฐ์ m ์ด ๊ฐ๋ฅดํค๋ ๋ฉ๋ชจ๋ฆฌ์ฃผ์์ ์๋ ๊ฐ์ Loadํจ.STA
m
: (m .. m+2) โ A ๋ ์ง์คํฐ, A ๋ ์ง์คํฐ์ ์๋ ๊ฐ์ m ์ด ๊ฐ๋ฅดํค๋ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์์ Storeํจ.STX
m
: (m .. m+2) โ X ๋ ์ง์คํฐ, X ๋ ์ง์คํฐ์ ์๋ ๊ฐ์ m ์ด ๊ฐ๋ฅดํค๋ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์์ Storeํจ.
LDCH, STCH ์ Character ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃฐ ๋๋ ์์ 16๋นํธ๋ฅผ ์๋ฅด๊ณ ๋งจ ๋ค์ 8์๋ฆฌ๋ง Loadํ๊ณ Storeํ๋ค
#
Arithmetic & Logic์ด ๋ช ๋ น์ด๋ค์ ๋ชจ๋ A ๋ ์ง์คํฐ์ ๊ด๋ จ์ด ์๋ค.
ADD
m
: A โ (A) + (m .. m+2)SUB
m
: A โ (A) - (m .. m+2)MUL
m
: A โ (A) * (m .. m+2)DIV
m
: A โ (A) / (m .. m+2)AND
m
: A โ (A) & (m .. m+2)OR
m
: A โ (A) | (m .. m+2)
#
Comparison2๊ฐ์ง ๋ช ๋ น์ด COMP ์ TIX
COMP
m
: ๋น๊ต๋์ด ๋์จ ๊ฐ(ํฌ๋ค, ์๋ค, ๊ฐ๋ค)์ SW ๋ ์ง์คํฐ์ Condition code์ ์ ์ฅํ๋คTIX
m
: X โ (X) + 1; ํ X์ (m .. m+2) ๋ฅผ ๋น๊ตํ ๊ฒฐ๊ณผ๋ฅผ SW ๋ ์ง์คํฐ์ Condition code์ ์ ์ฅํ๋ค
#
Conditional JumpsSW ๋ ์ง์คํฐ์ Condition code์ ๋ฐ๋ผ ์ ํํ๋ ๋ช ๋ น์ด์ด๋ค.
J
m
: PC โ (m .. m+2)
JLT
m
: PC โ (m .. m+2) if CC set to <
JGT
m
: PC โ (m .. m+2) if CC set to >
JEQ
m
: PC โ (m .. m+2) if CC set to =
#
Subroutine LinkageJSUB
m
: L โ(PC); PC โ m
RSUB
: PC โ (L)
JSUB
์ L(๋ง์ปค) ๋ฆฌํด ํ ๋ ๋์๊ฐ ๊ฐ์ ๋ณด๊ดํ๋ ๋ ์ง์คํฐ์ PC๋ฅผ ์ ์ฅํด๋๊ณ PC ์ ์๋ธ๋ฃจํด(m) ์ ๋ถ๋ฅธ๋ค. ๊ทธ๋ฆฌ๊ณ m ์ ์๋ ๋ช
๋ น๋ค์ ์ํํ ํ, ๋ค์ ์๋์๋ฃจํด์ผ๋ก L ๋ ์ง์คํฐ๋ฅผ ์ฐธ์กฐํด ๋์์จ๋ค.
RSUB
์ ๋ฆฌํด๊ณผ ์ ์ฌํ ์๋ฏธ์ด๋ค.
#
I/O์ธํ๊ณผ ์์ํ์ ํ๋ฒ์ 1๋ฐ์ดํธ ์ฉ๋ง ์ ์กํ๋ค. A ๋ ์ง์คํฐ์ ๋ง์ง๋ง 1๋ฐ์ดํธ (rightmost byte)๋ฅผ ์ฌ์ฉํ๋ค. ๋ชจ๋ ๋๋ฐ์ด์ค๋ ๊ฐ๊ฐ์ ๊ตฌ๋ณํ๊ธฐ ์ํด uniqueํ 8๋นํธ์ ์ฝ๋๊ฐ ๋ถ์ฌ๋๋ค. ๋ฐ๋ผ์ ๊ตฌ๋ณ๋๋ ํ๋ ๋ด 2^8 ๊ฐ์ ๋๋ฐ์ด์ค๊ฐ ๋ถ์ ์ ์๋ค.
TD
m
: Test device specified by (m), (sets CC), < : device is ready, = device isn't ready
RD
m
: A[rightmost byte] โ data from device specified by (m)
WD
m
: Device specified by (m) โ (A)[rightmost byte]
#
SIC/XE Machine ArchitectureSIC/XE๋ SIC์ ์ ๊ทธ๋ ์ด๋ํ์ผ๋ก ๋ง์ ๊ธฐ๋ฅ๋ค์ ๋์ผํ๋ค. ๋์ผํ ๋ถ๋ถ์ ์ ์ธํ๊ณ ๋ณํ๋ ๋ถ๋ถ์ ์์๋ณธ๋ค.
#
๋ฉ๋ชจ๋ฆฌ- ์ ์ฒด ๋ฉ๋ชจ๋ฆฌ๋ 1MB(2^20 ๋ฐ์ดํธ)
#
๋ ์ง์คํฐSIC๊ฐ ๊ฐ์ง 5๊ฐ์ ๋ ์ง์คํฐ์ ๋ํด 4๊ฐ๊ฐ ๋ ์ถ๊ฐ๋์ด 9๊ฐ๊ฐ ๋์๋ค. F ๋ ์ง์คํฐ๋ง 48 ๋นํธ์ด๊ณ ๋๋จธ์ง๋ ๋ชจ๋ 24๋นํธ์ด๋ค.
#
๋ฐ์ดํฐ ํฌ๋งท48๋นํธ ๋ถ๋์์์ (Floating-point data type)์ด ์ถ๊ฐ๋์๋ค. ์ด๊ฒ์ ๋ค์์ ํฌ๋งท์๊ฐ์ง๋ค.
#
๋ช ๋ น์ด ํฌ๋งทSIC์๋ ๋ฌ๋ฆฌ ๋ช ๋ น์ด๋ฅผ ์ฒ๋ฆฌํ๋ ํฌ๋งท์ด ์กด์ฌํ๋ค.
Format 1 (1 byte) : Opcode(8bits)
Format 2 (2 byte) : Opcode(8bits) + r1(4bits) + r2(4bits)
Format 3 (3 byte) (Flag e = 0) : Opcode(6bits) + | n | i | x | b | p | e | + address(12bits)
- Format 4 (4 byte) (Flag e = 1) : Opcode(6bits) + | n | i | x | b | p | e | + address(20bits)
#
Addressing ModesRelative addressing modes for Format 3
Base relative addressing, when b=1, p=0 : TA = (B) + disp/addr
PC relative addressing, when b=0, p=1 : TA = (PC) + disp/addr
Direct addressing mode for Format 3 & 4
- b = p = 0 : TA = disp/addr
when x=1 ์ผ ๋, indexed addressing์ด ๊ฒฐํฉ๋์ด (X)๊ฐ TA ๊ณ์ฐ์ ๋ํด์ง๋ค
i=1, n=0 : immediate addressing, ๋ฉ๋ชจ๋ฆฌ ์ฐธ์กฐ ์์ด TA๊ฐ operand ๊ฐ์ผ๋ก ์ฐ์ธ๋ค.
i=0, n=1 : indirect addressing, ๋ฉ๋ชจ๋ฆฌ ์ฐธ์กฐ ๊ฐ์ผ๋ก ๋ค์ ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ
indexed๋ immediate or indirect์์ ์ฌ์ฉ๋ ์ ์๋ค.
i=0, n=0 : simple addressing for SIC
- b, p, e ๊ฐ์ด address field๋ก ์ฐ์ธ๋ค. (SIC์ address๋ 15bits์ด๋ฏ๋ก)
i=1, n=1 : simple addressing for SIC/XE
#
์ฐธ๊ณ ์๋ฃSIC ๋จธ์ ์ด๋? (๊ฐ์ ์ปดํจํฐ)
SIC/XE ๋จธ์ ์ด๋ ๋ฌด์์ธ๊ฐ?
SIC/XE์ ๊ตฌ์กฐ(Architecture), SIC๊ณผ ์ด๋ป๊ฒ ๋ค๋ฅธ๊ฐ?, Special symbols