计组-08-指令系统

计算机组成原理-08-指令系统

前言

  1. 什么是指令?
    • 指令(机器指令)是计算机执行某种操作的命令,是计算机最小的功能单位
    • 一台计算机上的所有指令的集合叫做指令集

mark

1. 指令的格式

一条指令分为两个字段

  • 操作码(OP): 指出指令应该执行什么性质的操作
  • 地址码(A): 被操作信息或者数据的地址

1.1 定长指令字

1.1.1 四地址指令

  • 若指令字长位32位,操作码占8位,4个地址码各占6位
  • 操作数指令寻址范围是2^6 = 64

mark

1.1.2 三地址指令

  • 利用程序计数器自动+1 (进行地址改变)
  • 若指令字长32位,操作码占8位,3个地址码字段各占8位
  • 寻址范围:2^8 = 256
mark

mark

1.1.3 二地址指令

  • 寻址范围 : 2 ^12 = 4K
  • 对于常用的算数和逻辑计算指令:常常会用到两个操作数

mark

1.1.4 一地址指令

  • 寻址范围 : 2^24 = 16M
  • 常用于+1,-1,求补等操作

上述小结:

  • mark

1.1.5 零地址指令

  • 不需要操作数,如空操作,停机,关中断
  • 使用堆栈操作的,两个操作数隐含在栈顶和次栈顶,计算结果压回栈顶

mark

与定长指令字相对的有:变长指令字,这里不再详细描述

1.2 操作码的设计

操作码同样也分为

  • 定长操作码 : n 位 -> 2^n 条指令
  • 变长操作码 : 操作码长度可变

定长操作码:

  • 简化了硬件的设计,提高指令译码和识别的速度,当计算机字长为32位甚至更长的时候,这是最常用的方法

扩展操作码:

  • 在指令字长有限的情况下仍然保持比较丰富的指令种类
  • 即:全部指令的操作码的字段位数不固定,且分散的放在指令字的不同位置上

mark

  • 在设计扩展操作码指令格式时
    • 不允许短码是长码的前缀
    • 各指令的操作码一定不能重复

2. 指令的寻址方式

2.1 数据存储的方式

  • 首先回顾一下数据的存储方式
    • 大端存储 : 高地址数据放在存储低位
    • 小端存储 :低地址数据放在存储高位
  • 编址又分为:
    • 按字编址
    • 按字节编址

mark

2.2 寻址方式

  • 寻址方式分为:
    • 指令寻址:寻找下一条将要执行的指令地址
    • 数据寻址:寻找操作数的地址

2.2.1 指令寻址

指令寻址:使用PC程序计数器来实现

  1. 顺序寻址:通过程序计数器(PC = PC + 1) 实现
  2. 跳跃寻址:通过转移类指令实现(本质还是由当前的指令修改PC的值,使得下一条指令仍然通过PC给出)

mark

2.2.2 数据寻址

  • 数据寻址是指令中表示一个操作数的地址
  • 操作数的类型 : 用寻址特征来表示
    • 地址 : 无符号数
    • 数字 : 定点浮点数,BCD码
    • 字符 : ASCII
    • 逻辑运算
  • 具体的数据寻址分类如下所示:

mark

注意:在接下来的讨论中

  • EA : 表示真实地址
  • A : 表示形式地址
  1. 立即寻址
  • 地址字段不是操作数的地址,而是操作数本身
  • 缺点是:位数限制了立即数的范围

mark

  1. 直接寻址
  • 形式地址A就是操作数的真实地址EA
  • EA = A

mark

  1. 间接寻址
  • 操作数的有效地址所在的存储单元的地址,也就是操作数地址的地址
  • EA = (A)
  • 优点:扩大了寻址范围,方便程序调用的返回
  • 缺点:多次访问主存

mark

  1. 寄存器寻址
  • 操作数放在寄存器中,类似直接寻址
  • EA = R

mark

  1. 寄存器间接寻址
  • 类似于间接寻址,只不过把主存换成了寄存器
  • 寄存器给出的不是一个操作数,而是主存中的地址

mark

  1. 隐含寻址
  • 只给出一个操作数的地址,不明显的在地址中指出第二条操作数的地址
  • 比如使用(ACC)作为第二操作数的地址

mark

上述小结:

mark

接下来介绍三种偏移寻址方式:特点是需要进行运算

mark
  1. 基址寻址

mark

  • 基址寄存器是面向操作系统的,基址寄存器的内容不变,形式地址可变
  • 优点:
    • 可以扩大寻址的范围
    • 利用全局程序的浮动
  • 与直接寻址的对比:不用查主存的状态,操作系统就能判断内存的状态

mark

  1. 变址寻址

mark

  • 变址寻址 : 是面向用户的,寄存器的内容用户可以改变,但是形式地址A不可改变
  • 特别适合编址循环的程序,适合处理数组
  • 变址寻址 :实现程序内的浮动,可与其他寻址配合使用

mark

  1. 相对寻址
  • 把程序计数器PC 的内容加上指令格式中的形式地址A
  • EA = (PC) + A
  • 其中 A 是偏移量,A 用补码表示 ,可正可负
  • 适合程序内部的浮动

mark

3. CISC 和 RISC

mark

  1. CISC
  • 复杂指令系统的计算机
  • 典型的架构是X86
  1. RISC
  • 精简指令集
  • 典型的架构是ARM

小结:

mark

4. 本章小结

mark

打赏
  • 版权声明: 本博客所有文章除特别声明外,均采用 Apache License 2.0 许可协议。转载请注明出处!
  • © 2019-2022 Zhuuu
  • PV: UV:

请我喝杯咖啡吧~

支付宝
微信