第四章 指令系统

4.1 指令系统的发展与性能要求

指令系统的发展

指令,就是要求计算机执行某种操作的命令.

从结构层次来说,指令可以分为以下三部分:

  • 微指令 (第五章)
  • 机器指令 (本章重点)
  • 宏指令 (C语言指令)

指令系统: 一台计算机中所有机器指令的集合.

指令系统是表征一台计算机性能的重要因素,它的格式与功能不仅直接影响到机器的硬件结构,而且也直接影响到系统软件,影响到机器的适用范围。指令是设计一台计算机的硬件与低层软件的接口

计算机五级层次结构

目前主要分为:

  • CISC 复杂指令集系统
    • 具有大量指令和寻址方式
    • 使用比较普遍,如Inter AMD
  • RISC 精简指令集系统
    • 通道中只包含最有用的指令
    • 确保数据通道快速执行每一条指令,硬件结构设计简单
    • 超标量、超流水结构,提高并行能力

CISC是基于存储容量紧缺的背景,强调编译优化,节省存储空间。但由于指令复杂,通常CPI>5.同时指令使用不均衡、指令长度不固定等原因不适用于VLSI工艺以及流水线技术。

RISC的基本思想是减少CPI(指令执行周期), 保留最基本的、去掉复杂 使用频率不高的指令。
采用Load/Store结构,减少指令格式,统一存储器访问方式(更多的通用寄存器)。
采用硬连线控制代替微程序。

性能要求

  • 完备性
    • 指令足够丰富、功能齐全、使用方便
  • 有效性
    • 能够高效运行,程序占用存储空间小,执行速度快。
  • 规整性
    • 包括对称性、匀齐性、指令格式和数据格式的一致性。
    • 对称性:在指令系统中所有的寄存器和存储器单元都可同等对待,所有的指令都可使用各种寻址方式。
    • 匀齐性:一种操作性质的指令可以支持各种数据类型,如算术运算指令可支持字节、字、双字整数的运算,十进制数运算和单、双精度浮点数运算等;
    • 一致性:指令长度和数据长度有一定的关系,以方便处理和存取。
  • 兼容性:系列机各机种之间具有相同的基本结构和共同的基本指令集。因而指令系统是兼容的,即各机种上基本软件可以通用。

4.2 指令格式

一条指令通常由操作码字段和地址码字段构成
<!– 图片 –>
一条指令会告诉我们:

  • 做什么
  • 从哪取
  • 存到哪

影响机器指令格式的因素:

  • 机器的字长(指令的长度)
  • 存储器的容量(寻址范围)
  • 指令的功能(操作码)

操作码

指令的操作码OP表示该指令应该进行什么操作。
不同的编码代表了不同的指令。

n位的操作码可以表示的指令范围为 $2_n$.

地址码

根据一条指令中包含几个操作数地址,可以称为“ 几地址指令 ”:

  • 零地址指令
    • 只有操作码,执行如“停机”“空操作”等指令
  • 单地址指令
    • 只有一个地址码指定一个操作数,另一个操作数是隐含的。
    • 这类操作如+1 -1 取反等等
    • 功能描述:$$ (AC) \theta (A_1) \rightarrow AC $$
  • 二地址指令
    • 包含两个地址码字段A1 A2
    • 两个操作数执行操作后将结果存入$A1$
    • 功能描述:$$ (A_1) \theta (A_2) \rightarrow (A_1)$$
  • 三地址指令
    • 包含三个操作数地址 $A1$ $A2$ $A3$
    • 最终计算结果存入 $A3$
    • 功能描述:$$ (A_1) \theta (A_2) \rightarrow (A_3)$$

4.3 操作数类型

指令格式

  • 指令字长度: 指令包含的二进制位数
  • 机器字长: 计算机能直接处理的二进制数据的位数
    • 单字长
    • 半字长

多字长指令优缺点:

  • 优点:地址位足够多,可以访问任何单元,减少寻址方式

  • 缺点:必须要多次访问内存才能取出完整指令,降低了运算速度,占用了存储空间

  • 等长指令长度相等,指令字结构简单,且指令字长度不变。

  • 非等长指令可以随功能长短变化,结构灵活,能充分利用指令长度,但指令控制较为复杂。

汇编语言使用指令助记符,汇编程序会将其编译为二进制代码

4.4 指令和数据的寻址方式

操作数一般在四个地方:

  • 指令中
  • 寄存器中
  • 存储器中
  • I/O设备中

九种寻址方式

  • 隐含寻址 操作数在专用寄存器,不需要给出操作数地址
  • 寄存器寻址 操作数在寄存器中,给出的地址位寄存器地址
  • 立即寻址 不是操作数地址,而是操作数本身
  • 直接寻址 给出操作数在内存中的地址
  • 间接寻址 给出一个内存地址,操作数的地址在这个内存单元中
  • 寄存器间接寻址 给出一个寄存器地址,操作数地址在寄存器中
  • 偏移寻址 通过一个给定的地址和一个隐含(默认)的地址或者基数组成操作数地址
    • 相对寻址 通过程序计数器(PC)加上指令中地址字段即是操作时地址
    • 基址寻址 一个专用寄存器中存放有一个存储器的地址,地址中含有关于地址字段的偏移量
    • 变址寻址
  • 段寻址 一个基地址+寄存器提供的16位偏移量形成实际的20个物理地址
  • 堆栈寻址 通过一个隐式或者显式的堆栈指示器,

指令格式特点

  • 几地址几字长,有多少位
  • 操作码(OP)分析(有多少中操作)
  • 操作数分析
    例如:

    • 单子长二地址,用于访问存储器
    • OP 6位,64种操作
    • 一个操作数在(寄存器)中,一个操作数在(存储器)中
    • 该指令为(RS)型指令
    • 寻址占2位,共有4中寻址方式。
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇