指令系统

指令系统

指令

  • 计算机执行某种操作的命令

指令的基本格式

一条指令通常包括操作码字段地址码字段两部分

操作码字段

操作码指出指令中应该执行什么性质的操作以及具有哪种功能(算术加减操作,程序转移返回操作等)

地址码字段

地址码给出被操作信息的地址(参加运算的操作数地址,运算结果存放地址等)

  • 指令长度是指一条指令中所包含的二进制代码的位数
  • 指令字长取决于操作码的长度,操作数地址码的长度以及操作数地址的个数

扩展操作码

为在指令字长有限的前提下,保持比较丰富的指令种类,可采取可变长度的操作码。

指令的寻址方式

  • 寻址方式是指确定本条指令的操作数地址以及下一条待执行指令的地址的方法
  • 寻址方式分为指令寻址数据寻址两大类

指令寻址

寻找下一条将要执行的指令地址
方式:

  1. 顺序寻址:程序计数器 \(PC+1\) ,自动形成下一条指令的地址
  2. 跳跃寻址:由转移指令实现,跳跃地址=绝对地址+相对地址,结果是当前指令修改 \(PC\) 的值,下一条指令仍通过 \(PC\) 给出

数据寻址

寻找本条指令的数据地址

指令格式

方式:

  1. 隐含寻址
    不明显给出操作数的地址,而在指令中隐含操作数的地址
  • 优点:有利于缩短指令字长
  • 缺点:需增加存储操作数的硬件
  1. 立即寻址
    指令的地址字段给出操作数本身
  • 优点:不访问主存,指令执行时间最短
  • 缺点:A的位数限制了立即数的范围
  1. 直接寻址
    指令字中的形式地址A是操作数的真实地址EA,EA=A
  • 优点:指令在执行阶段仅访问一次主存
  • 缺点:A的位数决定了该指令操作数的寻址范围
  1. 间接寻址
    指令的地址字段给出的地址是操作数所在存储单元的地址(操作数地址的地址),EA=(A)
  • 执行指令阶段 2 次访存
  • 优点:可扩大寻址范围
  • 缺点:指令在执行阶段需要多次访存
  1. 寄存器寻址
    在指令字中直接给出操作数所在寄存器的编号,其操作数在寄存器内,EA=Ri
  • 优点:指令在执行阶段不访问主存,只访问寄存器。寄存器数量少,对引发的地址码长度较小,使得指令字短
  • 缺点:寄存器个数有限,价格昂贵
  1. 寄存器间接寻址
    在寄存器中给出操作数所在主存单元的地址,EA=(Ri)
  2. 相对寻址
    把PC的内容加上指令格式中的形式地址A而形成操作数的有效地址,EA=(PC)+A
  • 优点:操作数的地址不是固定的,广泛用于转移指令
    s
  1. 基址寻址
    将CPU中基址寄存器(BR)的内容加上指令格式中的形式地址A而形成操作数的有效地址,EA=(BR)+A
  • 可采用专用寄存器或者通用寄存器作基址寄存器
  • 基址寄存器的内容由操作系统确定
  • 可扩大寻址范围,常用于为程序和数据分配存储空间
  1. 变址寻址
    将变址寄存器(IX)的内容加上指令格式中的形式地址A而形成操作数的有效地址,EA=(IX)+A
  • 变址寄存器的内容由用户给定
  • 便于处理数组问题
  1. 堆栈寻址
  • 硬堆栈:多个寄存器
  • 软堆栈:指定的存储空间

复杂指令系统计算机 \(CISC(Complex \ Instruction \ Set \ Computer )\)

  1. 复杂,庞大
  2. 指令长度不固定
  3. 访存指令不受限制
  4. 大多数指令需要多个时钟周期执行完毕
  5. 微程序控制
  6. 难以优化编译

精简指令系统计算机 \(RISC(Reduced \ Instruction \ Set \ Computer )\)

  1. 简单,精简
  2. 指令长度固定
  3. 只有 LOAD / STORE (取数,存数)指令访存
  4. 一定采用指令流水线技术,大部分指令在一个时钟周期内完成
  5. 组合逻辑控制
  6. 重视编译优化,来减少程序运行时间

两者的比较

  1. RISC更能充分利用 VLSI 芯片的面积
  2. RISC更能提高计算机运算速度
  3. RISC便于设计,可降低成本,提高可靠性
  4. RISC有利于编译程序代码优化
  5. RISC不易实现指令系统兼容

一个操作数在内存中可能占多个单元,怎样在指令中给出操作数的地址?
两种不同的地址指定方式:

  1. 大端方式:指令中给出的地址是操作数最高有效字节所在的地址
  2. 小段方式:指令中给出的地址是操作数最低有效字节所在的地址

对于一个指令系统来说,寻址方式多和少有什么影响?
寻址方式的多样化能让用户编程更加方便,但会造成CPU结构的复杂化,也不利于指令流水线的运行。而寻址方式较少虽然能够提高CPU的效率,但会使编程变得复杂,很难满足用户的需求。

posted @ 2023-06-02 03:30  风雨zzm  阅读(15)  评论(0编辑  收藏  举报