指令系统

指令系统是从程序设计者看到的机器的主要属性,是软、硬件的主要界面。

  • 指令系统是软件与硬件分界面的一个主要标志;
  • 指令系统是软件与硬件之间互相沟通的桥梁;
  • 指令系统与软件之间的语义差距越来越大;
  • 指令系统的设计主要包括指令的功能(操作类型、具体操作内容)和指令格式的设计。

如何评价指令系统?

  • 完备性:指令齐全、编程方便
  • 高效性:占主存空间小,运行速度快
  • 规整性
  • 兼容性:向后兼容

一、指令的基本格式

image-20210823102713698

存储模式:

1.数据存储顺序

大端存储:大部分RISC最低有效字节存储在最高地址位置

小端存储:Intel/AMD x86最低有效字节存储在最低地址位置

image-20210823102908282

2.边界对齐

若边界未对齐,则存储效果变差

image-20210823103330894

编译器会自动进行边界对齐。

3.堆栈

堆栈(栈):后入先出

PUSH、POP指令

隐含寻址

管理堆栈:最栈指针寄存器

堆栈的典型应用:

  • 作为临时存储区域
  • CALL指令,保存返回地址
  • 调用过程中,传递参数
  • 过程内的局部变量

image-20210823104422799

4.冯诺依曼结构和哈佛结构

image-20210823104759622

指令功能的设计

指令的典型分类:

数据传送类;算术运算类;逻辑运算类;程序控制类(转移指令、循环控制指令、过程调用和返回指令、程序自中断指令);系统控制类:(通常是特权指令,虚拟管理、任务切换);数据转换类;输入/输出类。

基本寻址方式:指令获取操作数的方式

image-20210823105612236

image-20210823105754867

image-20210823142548609

image-20210823142423600

PC相对寻址:8位补码偏移量;适用于短跳转,比如小循环。

  • 节省指令的存储空间。
  • 与程序所在内存位置无关。

image-20210823144209920

二、操作码的编码

指令长度设计

指令长度与机器字长无固定关系。

(1)定长操作码设计

一般原则

  • 指令长度为存储器最小可寻址单位的整数倍:CISC
  • 指令长度一般设计为总线宽度的整数倍:RISC

常用设计方案

  • 变长操作码,变长指令码:CISC
  • 定长操作码,定长指令码:RISC
    • MIPS,6位定长操作码,32位定长指令码。
    • RISC-V,7位定长操作码,32位定长指令码。

image-20210823144956980

(2)霍夫曼编码

变长操作码的设计原则:

  • 如果指令字长度固定,则长地址码对应短操作码,操作码长度随地址码长度缩短而增加.
  • 如果指令字长度可变,则以指令使用频度作为设计依据,使用频度高的指令用短码,使用频度低的指令用长码–霍夫曼编码原理。
  • 设计总是从短操作码开始,并要保证当前使用的操作码与未来要扩展的操作码能够有效区分。

原则:短码不能是长码的前缀。

image-20210823150047086

image-20210823150340742

(3)两种码长的扩展操作码

image-20210823150850487

基于特定规则扩展操作码

image-20210823151206383

根据地址码数量扩展操作码

image-20210823151940104

练习

image-20210823193044263

image-20210823193536625

image-20210823194159696

CISC与RISC

CISC:复杂指令集计算机结构

  • 用一条指令代替一串指令
  • 增加新的指令
  • 增强指令功能,设置功能复杂的指令
  • 增加寻址方式
  • 增加数据表示方法

RISC:精简指令集计算机结构

  • 只保留功能简单的指令
  • 功能较复杂的之指令用软件实现
  • 提高流水线效率

CISC指令系统存在的问题:

  • 28定律:大约20%的指令占据了80%的处理指令时间。
  • VLSI工艺要求规整性:RISC正好适应了VLSI工艺的要求。
  • 复杂的指令使指令周期大大增长。

RISC的特点:

  • 指令系统简单
    • 指令条数少、格式少、长度固定、功能简单
    • 寻址方式少
    • 采用硬布线控制逻辑(不用或少用微程序控制)
  • Load/Store结构
    • 只有LOAD和STORE指令可以访问存储器
    • 寄存器多
    • 寄存器窗口技术
  • 十分重视提高流水线的执行效率
    • 大部分指令可以单周期执行完成
    • 延迟转移技术
  • 十分强调优化编译技术的作用

发展方向:RISC和CISC正逐渐融合。

  • 随着芯片密度和硬件速度的提高,RISC系统已经越来越复杂。
  • CISC设计也关注于RISC相同的技术焦点,如增加通用寄存器数量和更加强调指令流水线设计等。

典型指令系统

一、Intel CPU指令系统

二、MIPS 指令系统

1.MIPS 指令格式

image-20210824150830467

image-20210824150848385

2.MIPS64指令格式及指令示例

image-20210824150955961

image-20210824151012846

image-20210824151029458