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 |