指令系统结构分类

按照存储分类

  1. 堆栈结构
  2. 累加器结构
  3. 通用寄存器结构:根据操作数来源分为RM,RR (R寄存器,M存储器)

对于不同结构操作数位置和给出方式会不同。

  • 显式给出:例如mov
  • 隐式给出:例如push,pop

通用寄存器型结构

现代指令系统主流结构。
根据ALU指令操作数个数可以分为:

  1. 3操作数指令
  2. 2操作数指令
指令结构类型 优点 缺点
RR 字长固定,结构简洁 指令条数多,程序占用空间大
RM 不必load加载,易于编码 从R和M中读取时间差异大
MM 代码最紧凑,不需要寄存器保存变量 指令字长变化大,速度慢

寻址方式

寻找有效地址EA
表达方式:
image-1654697899593

  1. 寄存器寻址ADD R1,R2
  2. 立即数寻址ADD R1,#6
  3. 偏移寻址ADD R1,120(R2)
  4. 寄存器间接寻址ADD R1,(R2)
  5. 索引寻址ADD R1,(R2+R3)
  6. 直接寻址ADD R1,(1000)
  7. 存储器间接寻址ADD R2,@(R1)
  8. 自增寻址ADD R1,(R2)+ //R2会自增
  9. 自减寻址ADD R1,-(R2)
  10. 缩放寻址ADD R1,80(R2)[R3]

不同寻址方式使用频率不同
最高为立即数寻址和偏移寻址

物理空间的信息存放问题:
image-1654698935808
如果使用左侧则会降低读入效率,右侧浪费存储空间。

指令系统的设计与优化

指令系统的设计

功能设计,格式设计。
指令系统的设计需要考虑速度,成本,灵活性

指令系统的基本要求

  1. 完整性:提供的指令对于程序而言足够
  2. 规整性:每种操作要对所有数据类型都兼容
  3. 正交性:不同含义字段互不相干,互相独立
  4. 高效率:速度快
  5. 兼容性:向后兼容

控制指令

包括:跳转,分支。
对于控制指令而言,分支指令最为常用。
分支条件的方法:
image-1655605265132

优化

哈夫曼编码

使用频率最高的用最短的编码。
构造方式:哈夫曼树
缺点:变长,难以处理。
改进:使用几种固定长度的编码,但是也是概率高的用短的。

操作码优化程度的判定

信息熵:
image-1654865460945
信息冗余计算=(实际平均编码长度-理论最短平均长度)/实际平均编码长度 *100%

等长扩展码

15/15/15编码 每一轮的1111作为扩展位
8/64/512编码 每四位选第一为做扩展位
image-1654867059473

定长操作码:目前常用

优点:编译速度快
缺点:存储空间占用大

编码格式

  1. 可变长度编码格式:
  2. 固定长度编码:操作码和寻址方式放到一起,大部分RISC使用
  3. 混合型编码格式:类似哈夫曼改进。

指令系统的发展和改进

CISC方向

指令数量多,功能多。
改进方向:

  1. 面向目标程序增强指令功能:增强处理速度,I/O,控制
  2. 面向高级语言优化
  3. 面向操作系统优化:进程同步互斥信号量。

RISC方向

只对常用指令编码。
指令定长,指令条数少。

操作数的类型和大小

表示操作数的方法

  1. 给指令操作码制定的操作数
  2. 给数据加上表示,数据本身给出操作类型。

操作数大小

字节,半字,字,双字

操作数表示

字符:ASCII
整数:二进制补码
浮点:IEEE 754

MIPS指令系统结构

MIPS寄存器:

  1. 32个64位通用寄存器
  2. 32个64位浮点数寄存器
  3. 特殊寄存器,如溢出
    数据表示:
    字节8b半字16b字32b双子64b
    存储方式:
    大端存储:低地址放高位,高地址放地位

MIPS指令格式分类:

  1. I类指令(立即跳转),如load,store,立即数,分支,寄存器跳转
    image-1655713665768
  2. R类指令(Register)
    image-1655713848575
  3. J类指令(Jump)
    image-1655713918821

Q.E.D.


寄蜉蝣于天地,渺沧海之一粟