系统结构-2指令系统
1. 指令系统的分类

以C=A+B为例说明不同指令系统的特性
- 堆栈型
计算只能从栈顶拿数据,计算完也只能放回栈顶。
代码:
Push A (内存 堆栈)
Push B (内存 堆栈)
Add ([计算数]堆栈 ALU [计算结果]堆栈)
Pop C (堆栈 内存)
- 累加器型
一个操作数必须来自累加器,另一个操作数必须来自内存。结果必须放回累加器。
代码:
Load A (内存 A 累加器)
Add B (累加器 + 内存 B ALU 累加器)
Store C (累加器 内存 C)
寄存器型
- 寄存器-内存型
累加器型的“升级版”。计算时,一个操作数来自任意寄存器,另一个可以来自内存。
代码:
Load R1, A(内存A寄存器R1)
Add R3, R1, B(R1+ 内存BALU 寄存器R3)
Store R3, C(寄存器R3内存C)寄存器-寄存器型
⭐RISC核心:快慢分离。ALU只做快速计算;内存只负责慢速访问
ALU不能直接访问内存。所有操作数必须先从内存
Load到寄存器中代码:
Load R1, A(内存A寄存器R1)
Load R2, B(内存B寄存器R2)
Add R3, R1, R2(寄存器R1+ 寄存器R2ALU 寄存器R3)Store R3, C(寄存器R3内存C)
2.寻址方式

3. 控制指令
①跳转指令:无条件改变控制流
②分支指令:有条件改变控制流
改变控制流大多是分支指令(条件跳转)
分三种
- 条件码
- 条件寄存器(主流)
- 比较与分支
4. 指令操作码的优化
指令 =操作码+地址码
优化:如何用最短的位数来表示指令信息
最短平均码长(信息熵):
理论可达的平均最短码长
平均码长:
信息冗余量
①霍夫曼编码
除该码外还有一种利用霍夫曼概念的拓展操作码

方法:先读取前两位,若是00/01/10则确定是2位操作码,若是11则继续读两位,重复…


