suxxsfe

一言(ヒトコト)

ics3

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
posted @ 2024-11-02 21:40  suxxsfe  阅读(15)  评论(0编辑  收藏  举报