组原学习笔记六:指令系统

    • 7.1 机器指令
        • 1. 指令的一般格式
        • 2. 扩展操作码技术
        • 3. 地址码
        • 4. 指令字长
    • 7.2 操作数类型和操作类型
        • 1. 操作数类型
        • 2. 数据在存储器中的存放方式
        • 3. 操作类型
    • 7.2 寻址方式
        • 指令寻址
        • 数据寻址
            • `1. 立即寻址`
            • `2. 直接寻址`
            • `3. 隐含寻址`
            • `4. 间接寻址`
            • `5. 寄存器寻址` (广泛应用)
            • `6. 寄存器间接寻址`
            • `7. 基址寻址`
            • `8. 变址寻址`
            • `9. 相对寻址`
            • `10. 堆栈寻址`
    • 7.4 指令格式
        • 1. 指令格式设计
        • 2. 指令格式举例
    • 7.5 RISC 技术
        • 1. RISC 的主要特征
        • 2. CISC 的主要特征
        • 3. RISC 和 CISC 的比较

7.1 机器指令

人们习惯把每一条机器语言的语句称为机器指令,将全部机器指令的集合称为机器的指令系统。指令系统反映了机器的功能,与机器的硬件有关。

1. 指令的一般格式

操作码字段 地址码字段

指令由操作码和地址码两部分组成

  • 操作码:反应机器做什么操作。(操作码的长度可以是固定的,也可以是变化的)
  • 地址码:指出指令操作数的地址

2. 扩展操作码技术

操作码的长度随地址数的减少而增加
组原学习笔记六:指令系统_第1张图片

3. 地址码

四地址:

OP A1 A2 A3 A4

OP为操作码; A1 为第一操作数地址; A2 为第二操作数地址; A3 为结果地址; A4 为下一条指令的地址

三地址:
用PC代替A4,将后续指令的地址隐含在程序计数器PC中

OP A1 A2 A3

OP为操作码; A1 为第一操作数地址; A2 为第二操作数地址; A3 为结果地址

二地址:
用 A1 或 A2 代替 A3,即在运算结束后将运算结果放入操作数地址中

OP A1 A2

OP为操作码; A1 为源操作数地址 (和运算结果地址); A2 为源操作数地址 (和运算结果地址)

一地址:
用 ACC 代替 A1 或 A2,即ACC既存放参与运算的操作数,又存放运算的中间结果

OP A1

OP为操作码; A1 为源操作数地址

零地址:
无地址码的指令地址,例如空操作、停机这类指令只有操作码,没有地址码


当用一些硬件资源代替指令字中的地址码字段后

  • 可扩大指令操作数的寻址范围
  • 可缩短指令字长
  • 可减少访存次数

4. 指令字长

指令字长取决于:

  • 操作码的长度
  • 操作数地址的长度
  • 操作数地址的个数

不同的机器指令字长不同,指令字长可以是固定的 (指令字长 = 存储字长),也可以是可变的 (按字节的倍数变化)


7.2 操作数类型和操作类型

1. 操作数类型

  • 地址:无符号整数
  • 数字:定点数、浮点数、十进制数
  • 字符:ASCII
  • 逻辑数据:逻辑运算

2. 数据在存储器中的存放方式

大端模式、小端模式:
组原学习笔记六:指令系统_第2张图片
边界对准、边界未对准:
组原学习笔记六:指令系统_第3张图片

3. 操作类型

  1. 数据传送
  2. 算术逻辑操作: 加减乘除与或非等
  3. 移位: 算术移位、逻辑移位、循环移位三种
  4. 转移: 无条件转移、条件转移、调用与返回、陷阱与陷阱指令
  5. 输入输出
  6. 其他

7.2 寻址方式

  寻址方式是指确定本条指令的数据地址以及下一条将要执行的指令地址的方法,它与硬件结构有关,而且直接影响指令格式和指令功能。
  寻址方式分为指令寻址和数据寻址两大类。

指令寻址

指令寻址比较简单,分为顺序寻址和跳跃寻址两种。

  • 顺序寻址通过程序计数器PC加1自动形成下一条指令的地址 (PC) +1 --> PC
  • 跳跃寻址通过转移指令实现

数据寻址

数据寻址的方式种类较多,因此在指令字中必须设一字段来指明属于哪种寻址方式。指令的地址码字段通常不代表操作数的真实地址,把它称为形式地址,记作A。操作数的真实地址称为有效地址,记作EA,它是由寻址方式和形式地址共同确定的。指令格式如下:

操作码 寻址特征 形式地址A
1. 立即寻址

特点: 形式地址A不是操作数的地址,而是操作数本身,又称为立即数。
优点: 速度快(不访存,可立即获得操作数)
缺点: A 的位数限制了立即数的范围
组原学习笔记六:指令系统_第4张图片

2. 直接寻址

特点: 形式地址A就是操作数的真实地址EA,即 EA = A
优点: 寻找操作数简单(执行阶段访问一次存储器)
缺点: A 的位数决定了该指令操作数的寻址范围, 并且操作数的地址不易修改(必须修改A)
组原学习笔记六:指令系统_第5张图片

3. 隐含寻址

特点: 操作数的地址隐含在操作码或某个寄存器中
优点: 指令字中少了一个地址字段,可缩短指令字长
组原学习笔记六:指令系统_第6张图片

4. 间接寻址

特点: 形式地址不直接指出操作数的地址,而是指出操作数有效地址所在的存储地址。EA = (A) 有效地址由形式地址间接提供
优点: 扩大了操作数的寻址范围, 便于编制程序
组原学习笔记六:指令系统_第7张图片

5. 寄存器寻址 (广泛应用)

特点:有效地址即为寄存器编号
优点: 1. 执行阶段不访存,只访问寄存器,执行速度快所有寻址方式中最快的一种
     2. 因为计算机中寄存器个数有限,所以指令字较短,可缩短指令字长,节省了存储空间
组原学习笔记六:指令系统_第8张图片

6. 寄存器间接寻址

特点: Ri中的内容不是操作数,而是操作数所在主存单元的地址号,即有效地址在寄存器中, 操作数在存储器中,执行阶段访存。EA = ( Ri )
优点: 便于编制循环程序
组原学习笔记六:指令系统_第9张图片

7. 基址寻址

特点: 1. 有效地址等于指令字中的形式地址与基址寄存器中的内容(基地址)相加。EA = ( BR ) + A。
     2. 基址寄存器的内容由操作系统给定,且在程序的执行过程中不可变。
优点: 可扩大操作数的寻址范围, 有利于分段管理
组原学习笔记六:指令系统_第10张图片

8. 变址寻址

特点: 1. 有效地址等于指令字中的形式地址与变址寄存器中的内容相加。EA = ( IX ) +A
     2. 变址寄存器的内容由用户给定,且在程序的执行过程中可变。
优点: 可扩大寻址范围,便于处理数组问题
组原学习笔记六:指令系统_第11张图片

9. 相对寻址

特点: 1. 有效地址等于指令字中的形式地址与程序计数器PC中的内容(即当前指令地址)相加。 EA = ( PC ) + A
     2. 形式地址A相对于当前指令的位移量(可正可负,补码)
     3. 转移地址不固定,可随PC值的变化而变,广泛用于转移指令
缺点: A 的位数决定操作数的寻址范围
组原学习笔记六:指令系统_第12张图片

10. 堆栈寻址

堆栈: 用作数据暂时存储的一组寄存器或存储单元称为堆栈。
堆栈的特点: 硬堆栈: 多个寄存器; 软堆栈: 指定的存储空间
栈顶地址由堆栈指针SP指出
组原学习笔记六:指令系统_第13张图片

7.4 指令格式

1. 指令格式设计

  为了继承已有的软件,必须考虑新机器的指令系统与同一系列机器指令系统的兼容性,即高档机必须能兼容低档机的程序运行,称之为“向上兼容”。

  设计指令格式需要考虑的因素:

  1. 操作类型:包括指令数及操作的难易程度
  2. 数据类型:确定哪些数据类型可以参与操作
  3. 指令格式:包括指令字长、操作码位数、地址码位数、地址个数、寻址方式,以及指令字长和操作码位数是否可变等
  4. 寻址方式:指令寻址、操作数寻址
  5. 寄存器个数:寄存器的多少直接影响指令的执行时间

2. 指令格式举例

组原学习笔记六:指令系统_第14张图片组原学习笔记六:指令系统_第15张图片

7.5 RISC 技术

RISC精简指令系统计算机,与其对应的是CISC 复杂指令系统计算机

为了解决日益复杂的计算机的运算速度问题,人们研究CISC发现了80-20 规律,即典型程序中 80% 的语句仅仅使用处理机中 20% 的指令

这就导致执行频度高的简单指令,因复杂指令的存在,执行速度无法提高。那么能否用 20% 的简单指令组合不常用的 80% 的指令功能呢?这便引发出RISC技术。

1. RISC 的主要特征

  1. 选用使用频度较高的一些简单指令以及一些很有用但不复杂的指令,让复杂指令的功能由简单指令的组合来实现
  2. 指令长度固定指令格式种类少寻址方式少
  3. 只有取数/存数 (LOAD / STORE) 指令访存,其余指令的操作都在寄存器内完成
  4. CPU 中有多个通用寄存器
  5. 采用流水线技术,大部分指令在一个时钟周期内完成
  6. 控制器采用组合逻辑控制,不用微程序控制
  7. 采用优化编译程序

2. CISC 的主要特征

  1. 系统指令复杂庞大,各种指令使用频度相差大
  2. 指令长度不固定、指令格式种类多、寻址方式多
  3. 访存指令不受限制
  4. CPU 中设有专用寄存器
  5. 大多数指令需要多个时钟周期执行完毕
  6. 采用微程序控制器
  7. 难以用优化编译生成高效的目的代码

3. RISC 和 CISC 的比较

  1. RISC更能充分利用 VLSI 芯片的面积
  2. RISC更能提高计算机运算速度
    (指令数、指令格式、寻址方式少, 通用寄存器多, 采用组合逻辑, 便于实现指令流水)
  3. RISC 便于设计, 可降低成本, 提高可靠性
  4. RISC 有利于编译程序代码优化
  5. RISC 不易实现指令系统兼容

(完)

你可能感兴趣的:(计算机组成原理)