第四章-指令系统

XCurry Lv3

指令:指示计算机执行某种操作的命令,是计算机运行的最小功能单位。
指令是由操作码和若干个地址码组成
零地址指令:

  • 不需要操作数,如空操作、停机、关中断等指令
  • 堆栈计算机,另个操作数隐含存放在栈顶和次栈顶,计算结果压回栈顶
    一地址指令:
  • 只需要单操作数,如加1、减1、取反、求补等
  • 需要两个操作数,但其中一个操作数隐含在某个寄存器
    二、三地址指令:
  • 需要两个操作数的算术运算、逻辑运算相关指令,需要访存4次
  • 常用于需要两个操作数的算数运算、逻辑运算相关指令
    四地址指令:需要访存4次
    定长指令字结构:指令系统中所有指令的长度都相等
    变长指令字结构:指令系统中各种指令的长度不等
    定长操作码:指令系统中所有指令的操作码长度都相同
    可变长操作码:指令系统中个指令的操作码长度可变

寻址方式

指令寻址

  • 顺序寻址:PC + “1”->PC
  • 跳跃寻址:有转移指令指出

数据寻址

确定本条指令的地址码指明的真实地址

  • 直接寻址:指令字中的形式地址A就是操作数的真实地址EA,即EA=A,需要访存两次
    • 优点:简单,指令执行阶段进访问一次主存,不需专门计算操作数的地址
    • 缺点:A的位数决定了该指令操作数的寻址范围。操作数的地址不易修改
  • 间接寻址:指令的地址字段给出的形式地址不是操作数的真正地址,而是操作数有效地址所在的存储单元的地址,也就是操作数地址的地址,需要访存3次
    • 优点:可扩大寻址范围(有效地址EA的位数大于形式地址A的位数);便于编制程序(用间接寻址可以方便地完成子程序返回)
    • 缺点:指令在执行阶段要多次访存(一次间接寻址需要两次访存,多次寻址需根据存储字地最高位确定几次访存)
  • 寄存器寻址:在指令字中直接给出操作数所在的寄存器编号,即EA=R,其操作数在由R所指地寄存器内。需访存1次
    • 优点:指令在执行阶段不访问主存,只访问寄存器,指令字短且执行速度快,支持向量/矩阵运算
    • 缺点:寄存器价格昂贵,计算机中寄存器个数有限
  • 寄存器间接寻址:寄存器R中给出的不是一个操作数,而是操作数所在主存单元的地址。需访存2次
    • 特点:与一般间接寻址相比速度更快,但指令的执行阶段需要访问主存
  • 隐含寻址:不是明显的给出操作数的地址,而是在指令中隐含着操作数的地址。
    • 优点:有利于缩短指令字长
    • 缺点:需增加存储操作数或隐含地址地硬件
  • 立即寻址:形式地址A就是操作数本身,又称为立即数,一般采用补码形式。需访存1次
    • 优点:指令执行阶段不访问主存,指令执行时间最短
    • 缺点:A的位数限制了立即数的范围
  • 基址寻址:将CPU中基址寄存器(BR)的内容加上指令格式中的形式地址A,而形成操作数的有效地址,即EA=(BR)+A。(面向操作系统的,其内容由操作系统或管理程序确定)
    • 便于程序“浮动”,方便实现多道程序并发执行,可扩大寻址范围
  • 变址寻址:有效地址EA等于指令字中的形式地址A与变址寄存器IX的内容相加之和,即EA=(IX)+A,其中IX可为变址寄存器(专用),也可用通用寄存器作为变址寄存器。(面向用户的,变址寄存器的内容可有用户改变)
  • 相对寻址:把程序计数器PC的内容加上指令格式中的形式地址A而形成操作数的有效地址,即EA=(PC)+A,其中A是相对于PC所指地址(相对于下一条指令)的位移量,可正可负,==补码表示。==
    • 某一段代码在程序内浮动时不用更改跳转指令的地址码
  • 堆栈寻址:操作数存放在堆栈中,隐含使用堆栈指针(SP)座位操作数地址

CISC和RISC

CISC:一条指令完成一个复杂的基本功能(x86架构,主要用于笔记本、台式机等)80-20规律:典型程序中80%的语句仅仅使用处理机中的20%的指令
RISC:一条指令完成一个基本“动作”;多条指令组合完成一个复杂的基本功能(ARM架构,主要用于手机、平板等)

  • 标题: 第四章-指令系统
  • 作者: XCurry
  • 创建于 : 2024-09-28 16:30:00
  • 更新于 : 2024-10-02 15:02:23
  • 链接: https://github.com/XYXMichael/2024/09/28/计算机组成原理/第四章-指令系统/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论
此页目录
第四章-指令系统