计算机组成原理(四)指令系统

指令格式

指令的基本格式

基本概念

  • 一条指令就是机器语言的一个语句
  • 一条指令通常包括操作码字段和地址码字段两部分

x 地址指令

根据指令中操作数地址码的数目的不同,可将指令分成:

零地址指令

只给出操作码 O P OP OP ,没有显式地址。这种指令有两种可能:

  • 不需要操作数的指令,如空操作指令、停机指令、关中断指令等。
  • 参与运算的两个操作数隐含地从栈顶和次栈顶弹出,送到运算器进行运算,运算结果再隐含地压入堆栈。

一地址指令

给出操作码 O P OP OP 和一个地址 A 1 A_1 A1,这种指令也有两种可能:

  • 只有目的操作数的单操作数指令,单目运算符,如自增、自减、取反,从 A 1 A_1 A1 取数进行OP操作后,结果存回原地址 A 1 A_1 A1

  • 另一个操作数隐含在 ACC(累加器)中,运算结果也将存放在ACC中。

二地址指令

给出操作码 O P OP OP 和两个地址 A 1 、 A 2 A_1、A_2 A1A2

指令含义: ( A 1 ) O P ( A 2 ) → A 1 (A_1)OP(A_2)\rightarrow A_1 (A1)OP(A2)A1

三地址指令

给出操作码 O P OP OP 和两个地址 A 1 、 A 2 、 A 3 A_1、A_2、A_3 A1A2A3

指令含义: ( A 1 ) O P ( A 2 ) → A 3 (A_1)OP(A_2)\rightarrow A_3 (A1)OP(A2)A3

定长操作码指令格式

  • 设计简单

  • 指令译码和识别速度快

扩展操作码指令格式

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

最常见的变长操作码方法是扩展操作码,它使操作码的长度随地址码的减少而增加,不同地址数的指令可具有不同长度的操作码,从而在满足需要的前提下,有效地缩短指令字长

在这里插入图片描述

指令的寻址方式

指令寻址

顺序寻址方式

  • 程序的顺序结构
  • 通过PC+1,自动形成下一条指令的地址

跳跃寻址方式

  • 通过转移类指令实现(程序的循环、分支、子程序调用结构)
  • 下条指令的地址码不由程序计数器给出,而由本条指令给出下条指令地址的计算方式

数据寻址

数据寻址是指如何在指令中表示一个操作数的地址,如何用这种表示得到操作数或怎样计算出操作数的地址

数据寻址的方式较多,为区别各种方式,通常在指令字中设一个字段,用来指明属于哪种寻址方式

常见的数据寻址方式

指令中的地址为 A A A ,操作数真实地址为 E A EA EA

  • 隐含寻址
    • 指令中不给出操作数地址,如单地址指令的另一个操作数隐藏在ACC中
    • 有利于缩短指令字长;
    • 需増加存储操作数或隐含地址的硬件。
  • 立即寻址
    • 指令的地址字段就是操作数本身
    • 指令在执行阶段不访问主存,指令执行时间最短
    • A 的位数限制了立即数的范围
  • 直接寻址
    • 指令字中的地址就是操作数的真实地址, E A = A EA=A EA=A
    • 指令在执行阶段仅访问一次主存,不需要专门计算操作数的地址
    • A 的位数限制了寻址范围
  • 间接寻址
    • 指令的地址字段给出的形式地址不是操作数的真正地址,而是操作数有效地址所在的存储单元的地址,即 E A = ( A ) EA=(A) EA=(A)
    • 扩大寻址范围,但需要多次访存
  • 寄存器寻址
    • 在指令字中直接给出操作数所在的寄存器编号,即 E A = R i EA=R_i EA=Ri
    • 缩短地址字段,不需要访存
  • 寄存器间接寻址
  • 相对寻址
    • 把程序计数器 PC 的内容加上 A 形成 EA,即 E A = ( P C ) + A EA=(PC)+A EA=(PC)+A
    • 实质是"以下条指令在内存中的首地址为基准位置的偏移量"
    • 便于程序浮动,转移指令
  • 基扯寻址
    • E A = ( B R ) + A EA=(BR)+A EA=(BR)+A ,其中 B R BR BR 是基址寄存器
    • 面向OS,主要实现逻辑地址到物理地址的转换
    • 程序浮动依靠基址寻址实现
  • 变址寻址
    • E A = ( I X ) + A EA=(IX)+A EA=(IX)+A ,其中 I X IX IX 为变址寄存器
    • 面向用户,数组
  • 堆栈寻址
    • 先把操作数压入栈中,用的时候再弹出,汇编语言中调用函数会采用这种方法

复杂指令系统计算机 CISC

**基本思想:**指令系统要完成基本功能和复杂的功能,所以指令数目多

  • x86架构,主要用于笔记本、台式机

精简指令系统计算机 RISC

**基本思想:**指令系统只需要完成那些基本功能,复杂的功能由多条指令组合完成,所以指令数目少

  • ARM架构,主要用于手机、平板(2020年苹果公司已经推出了基于ARM架构的macbook,我觉得RISC是未来的发展趋势)

CISC和RISC的比较

CISCRISC
指令系统复杂,指令数目较多只选取了使用频率最高的一些指令,指令数目少
各种指令使用频度相差很大各种指令都比较常用
指令长度不固定指令长度固定
寻址方式较多寻址方式较少
通用寄存器较少设有多个通用寄存器
必须采用流水线技术不一定要求流水线技术(当然事实上现在的CISC计算机都采用了流水线技术)
各指令执行时间相差很大大多数指令都在一个周期内完成
多采用微程序控制器以硬布线控制器为主(组合逻辑控制)
难以使用编译优化强调编译优化
没有限制只有 Load/Store 指令访存(导致程序长度会更长)
具有更好的兼容性(因为老机器都是CISC结构)

一点问题

指令与指令系统?

  • 指令(又称机器指令)是指示计算机执行某种操作的命令,是计算机运行的最小功能单位。
  • 一台计算机中所有机器指令的集合,称为这台计算机的指令系统
  • 引入指令系统后,避免了用户与机器语言直接接触,使得用户编写程序更为方便
  • 指令系统(ISA)是计算机软件与硬件的界面

操作系统采用不同寻址方式的目的/好处/坏处?

  • 缩短指令字长,扩大寻址空间,增加编程的灵活性
  • 提高了指令译码难度

对于一个指令系统来说,寻址方式多和少有什么影响?

寻址方式的多样化能让用户编程更为方便,但多重寻址方式会造成CPU结构的复杂化(详见中央处理器章节),也不利于指令流水线的运行。而寻址方式太少虽然能够提高CPU的效率,但对于用户而言,少数几种寻址方式会使编程变得复杂,很难满足用户的需求。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值