指令系统

指令系统是指计算机所能执行的全部指令的集合,它描述了计算机内全部的控制信息和“逻辑判断”能力。不同计算机的指令系统包含的指令种类和数目也不同。一般均包含算术运算型、逻辑运算型、数据传送型、判定和控制型、移位操作型、位(位串)操作型、输入和输出型等指令。指令系统是表征一台计算机性能的重要因素,它的格式与功能不仅直接影响到机器的硬件结构,而且也直接影响到系统软件,影响到机器的适用范围。

基本概念

  1. 控制部件: 控制器。

  2. 执行部件: 运算器、存储器、外围设备等设备。

  3. 微命令: 控制器通过控制总线向执行部件发送的各种控制命令。

  4. 微操作: 执行部件接受命令后所进行的操作。
    • 相容性微操作:指在同时或同一个CPU周期内可以并行执行微操作。
    • 相斥性微操作:指不能同时或不能在同一个CPU周期内并行执行的微操作。
  5. 微指令: 在一个CPU周期内,一组实现一定操作功能的微命令的组合。

  6. 机器指令(指令): 一组可以完成一个独立的算术运算或逻辑运算的微指令的组合,与硬件紧密关联。

  7. 指令系统: 一台计算机中所有机器指令的集合,它是表征一台计算机性能的重要因数。

  8. 指令系统性能的要求: 完备性、有效性、规整性、兼容性。

指令周期

  • 基本概念:

    • 时钟周期: 时钟周期是CPU的基本时间计量单位,它是CPU一切操作的计时标准和基本控制信号,它有计算机的主频决定。

    • 机器周期(CPU周期): CPU通过总线从内存读取一个机器字的时间。一般需要4个时钟周期。

    • 指令周期: 执行一条需要经过读取指令,指令译码以及指令执行的过程,把执行一条指令所需要的时间。

    • 取指周期:当CPU通过总线从内存读取一个机器字是一个指令的时间。

指令格式

操作码(OP): 指出指令所进行的操作,如加、减、乘、除、取数以及存数等等。

地址码(A): 表示参加运算的数据从存储器那个单元取,运算的结构应存到哪个单元。

指令格式: 用机器码字表示的指令的结构形式。

|操作码字段|地址码字段| |———|———|

  1. 指令字长度: 一个指令字中包含二进制代码的位数。

  2. 机器字长度: 计算机能直接处理的二进制数据的位数,它决定了计算机的运算精度。

  3. 半字长指令: 指令字长度等于半个机器字长度的指令。

  4. 单字长指令:指令字长度等于机器字长度的指令。

  5. 双字长指令: 指令字长度等于两个机器字长度的指令。

  6. 多字长指令: 指令字长度等于几个机器字长度的指令。

操作码

指令助记符: 每条指令用英文缩写字母表示的缩写码。

操作码的字段位数一般取决于计算机指令系统复杂程度。一般来说,包含n位的操作码最多能够表示2^n条指令

操作码的位数是否固定 描述 特点 适用范围
固定长度的操作码 所有指令长度均相同 控制简单,速度快 指令条数较少
可变长度的操作码 频繁使用的指令用位数较少的操作码,不常使用的指令利用操作码扩展技术进行扩展 控制复杂 指令条数较多

地址码

操作数(地址码)类型  
地址型数据 数据地址
数值型数据 定点、浮点、十进制数等
字符性数据 字符串
逻辑型数据

根据一条指令有几个操作数地址,可将该指令称为几操作数指令或几地址指令。

三地址指令格式:

|OP|A1|A2|A3| |–|—|—|–|

其中,A1表示被操作数、A2表示操作数、A3表示操作结果

二地址指令格式:

|OP|A1|A2| |–|–|–|

其中:两个地址码字段分别指明参与的两个数在内存中或运算器中通用寄存器的地址,A1存放操作结果的地址,称为目的操作数(D),A2称为源操作数(S)

操作数的物理位置分类 描述 特点        
存储器–存储器(SS) 操作数都放在内存中 多次访问内存,速度慢        
寄存器–寄存器(RR) 操作数都在寄存器中 不需要访问内存,速度快   寄存器–存储器(RS) 操作数在内存和寄存器中 访问内存和寄存器,速度一般

问题:A2中包含操作数和被操作数??

一地址指令格式:

|OP|A1| |–|–|

一地址指令常称为单操作数指令,通常这种指令以运算器中累加寄存器AC中的数据为被操作数,指令字的地址码字段所指明的数为操作数,操作结果又放回累加寄存器AC中。

零地址指令格式:

|OP|| |–|–|

零地址指令的指令字中只有操作码,而没有地址码。例如停机指令。

地址指令 寻址范围
三地址指令 2^8
二地址指令 2^12
一地址指令 2^24
零地址指令

指令和数据的寻址方式

操作数是什么? 操作数就是数据

指令寻址: 如何确定下一条欲执行指令的指令地址。 操作数寻址:如何确定本条指令的操作数地址。

指令的寻址方式

寻址方式 描述 特点
顺序寻址 指下一条欲执行指令的指令地址其值由程序计数器PC自动加1的顺序执行的过程 指令在内存中是顺序存放,由此顺序执行高效
跳跃寻址 指下条指令的地址不是有程序计数器PC加一产生,而是将本条指令给出的目标地址装入PC作为下条指令的地址的过程 执行循环指令或转移指令

操作数的寻址方式

寻址方式特征位格式:

|变址X|间址I| |—-|—–|

指令格式:

|操作码|变址X|间址I|形式地址D| |—–|—–|—-|———|

形式地址是指令字中的地址,有效地址是操作数的内存地址,指令中的地址码有形式地址和寻址方式特征位等组合形成,因此一般来说,指令中所给出的形式地址并不是操作数的有效地址。因此,寻址过程就是把操作数的形式地址,变换为操作数的有效地址的过程。

存储器寻址

非偏移寻址
  1. 立即数寻址:地址码中的形式地址D就是操作数,而不是操作数的地址。S=D

    • 优点和缺点:立即数:可正可负,补码表示,D的位数限制了立即数的范围。指令执行阶段不访问存。
  2. 直接内存寻址:指令格式的形式地址字段D中直接指出操作数在内存的有效地址E,即E=D,S=[E]=[D]

    • 优点和缺点: 执行阶段访问一次存储器,D的位数决定了该指令操作数的寻址范围。操作数的地址不宜修改。
  3. 间接寻址:指令地址字段中的形式地址D不是操作数的有效地址,D单元的内容才是操作数的有效地址。E=[D]。

    • 优点和缺点:执行指令阶段2次放存,可扩大寻址范围。便于编制程序。
  4. 寄存器寻址:指令中给出的操作数的地址不是内存的地址单元号,而是通用寄存器的编号。相当于直接内存寻址。

    • 优点和缺点:执行阶段只访问寄存器,执行速度快。寄存器个数有限,可缩短指令字长。
  5. 寄存器间接寻址:指令中的操作数地址指示出的寄存器中的内容不是操作,而是操作数的有效地址,即寄存器中是操作数的有效地址。相当于间接寻址。真实操作数存在于内存中。

    • 优点和缺点: 有效地址在寄存器中,执行阶段访存,便于编制循环程序。

偏移寻址 :

  1. 相对寻址:把程序计数器PC的内容加上指令格式中的形式地址D而形成操作数的有效地址。
    • 优点:D的位数决定操作数的寻址范围;广泛用于转移指令;程序员无须用指令的绝对地址编程。
  2. 基址寻址:将CPU中基址寄存器(BR)的内容加上指令格式中的形式地址而形成操作数的有效地址。
    • 优点:扩大寻址能力。在程序的执行过程中BR内容,由操作系统指定,形式地址D可变。
  3. 变址寻址:将CPU中变址寄存器(IX)的内容与形式地址D相加从而形成操作数的有效地址。
    • 优点:IX的内容由用户给定;在程序的执行过程中IX内容可变,形式地址D不变;便于处理数组问题。
    • 目的:实现程序块的规律性变化。

堆栈寻址

  1. 存储位置分类:

    存储位置 数据的存取方式
    存储器 随机存储方法
    堆栈 先进后出的存储方法
  2. 根据堆栈组成分类:

    类别 基本单元 缺点 优点 特点
    串联堆栈 CPU内的寄存器 寄存器的数目有限;堆栈的读出是破坏性的 速度快  
    存储器堆栈 主存单元 速度慢 堆栈能够具有程序员要求的任意长度;堆栈的数目由程序员自己决定;可以使用任意存储器寻址方式寻址 高地址向低地址延伸的空间;堆栈指针SP

典型指令

  1. 指令的分类

    类别 实例
    数据传送 MOV 传送;STO 存数等
    算术运算 ADD 加法;SUB 减法等
    逻辑运算 AND 与; OR 或等
    程序控制 JMP 无条件转移等
    输入输出 IN 输入指令;OUT 输出指令等
    字符串处理 lodsb; lodsw等
    特权 停机指令等
    其它  

指令框图

  1. 描述

    • 方框代表一个CPU周期,方框中的内容表示数据通路的操作或某种控制操作。

    • 菱形表示某种判别或测试,不过时间上它依附于紧接它的前面一个方框的CPU周期,而不单独占用一个CPU周期。

    • ~符号是公操作符号,表示一条指令已经执行完毕而转入公操作(CPU每执行完一条指令,都要测试外部设备 有无中断请求,DMA控制器有无DMA请求,这些操作称为公操作).如果没有公操作,CPU转入下一条指令的执行。

    • DBUS表示数据总线。

    • IBUS表示指令总线

    • ABUS(D)表示数据地址总线

    • ABUS(I)表示指令地址总线

    • RD(I) 表示读指存,RD(D)表示读数存。

    • WE(D) 表示写数存,WE(I)表示写指存

    • DR 表示数据缓存寄存器,AR 表示地址寄存器,IR 表示指令寄存器

    • PC 表示程序计数器,SP 表示堆栈寄存器

    • PSW 表示状态寄存器