ics3

suxxsfe發表於2024-11-02

T1

1

\(\lfloor \log_2(32786)\rfloor = 15\)

最少 15 位。

2

  • 5 位 opcode
  • 兩個暫存器共 6 位
  • 1 位指示指令為立即數的加
  • 剩 4 位立即數

補碼,最大數為 \(2^3-1=7\)

3

  • 5 位 opcode
  • 暫存器 3 位
  • 剩 8 位 PCoffset

地址範圍 \([PC-256,PC+255]\)

T2

1

  • Fetch 從記憶體中獲取指令,使用 PC 中的地址。然後將PC遞增,指向下一條指令。
  • Decode 對獲取的指令進行譯碼,確定操作碼及相關運算元。此階段識別要執行的操作及將要訪問的暫存器或記憶體位置。
  • Evaluate Address 如果指令需要訪問記憶體,透過偏移量等,計算運算元的有效地址。
  • Fetch Operands 從指定的暫存器或記憶體位置獲取指令所需的運算元。
  • Execute 執行指令所指定的實際操作。
  • Store Result 將執行結果寫回到指令指定的目標,暫存器或記憶體位置。

2

Opcode Fetch Decode Evaluate Address Fetch Operands Execute Store Result
ADD 1 1 1 1 1
AND 1 1 1 1 1
ST 1 1 1 1 1 1
STR 1 1 1 1 1 1
LDI 1 1 1 1 1 1
LD 1 1 1 1 1 1
LEA 1 1 1 1 1
BR 1 1 1
JMP 1 1 1

3

LEA:6
ADD:6
ST:106
AND:6
ADD:6
STR:205
LDI:106

總共:441

4

ADD 指令

FETCH DECODE EVALUATE ADDRESS FETCH OPERANDS EXECUTE STORE RESULT
PC RW
IR W R R R R
MAR W
MDR
MEM R
registers R W W
NZP W

STR 指令

FETCH DECODE EVALUATE ADDRESS FETCH OPERANDS EXECUTE STORE RESULT
PC RW
IR W R R R R R
MAR W W
MDR W
MEM R W
registers R R
NZP W

JMP 指令

FETCH DECODE EVALUATE ADDRESS FETCH OPERANDS EXECUTE STORE RESULT
PC RW W
IR W R R R
MAR W
MDR
MEM R
registers
NZP

5

除了前 5 個週期外,每個週期處理完一個指令。
共 995 個。

T3

1

7

2

x3000: 1101 000 000 0 00 000
x3001: 0001 000 000 1 00001
x3002: 0001 010 001 0 00 000
x3003: 0001 010 001 0 00 010
x3004: 1001 010 010 111111
x3005: 0000 010 000000001
x3006: 1111 0000 00100101

3

  • 引入一個新的操作碼用於 XOR 指令,將 XOR 新增到指令集
  • 更新指令解碼器,識別新的 XOR 操作碼,並將其路由到適當的執行路徑。
  • 修改控制邏輯,能向 ALU 發出執行 XOR 操作的訊號。
  • 在 ALU 內部實現邏輯電路,新增 XOR 操作
  • 更新彙編器,識別新的 XOR 指令並生成適當的機器程式碼。

T4

R/W MAR MDR
W x4000 11110
R x4003 10110
W x4001 10110
R x4002 01101
W x4003 01101

memory1:
01101
11010
01101
10110
11110

memory2:
11110
10110
01101
10110
11110

memory3:
11110
10110
01101
01101
11110

T5

X Does the program halt? Value stored in R0
000000010 y 2
000000001 y 3
000000000 y 6
111111111 n
111111110 n