文章目录
指令系统
一.指令系统概述
程序,指令和指令系统的概念
- 程序:程序是由一系列有时间顺序,有逻辑关系的指令构成的。
- 指令:指令是控制计算机硬件完成指定的基本操作的命令(如加减,传送等),指令是用户使用计算机和计算机本身运行的最小功能单位。
- 指令系统(指令集):能被一台计算机执行的全部指令的集合称为该机的指令系统,也称为指令集。
指令系统的评价
(1)完备性:常用指令齐全,编程方便
(2)高效性:程序占主存空间少,运行速度快
(3)规整性:指令和数据使用规则统一简单
(4)兼容性:同一系列的低档计算机的程序能在高档计算机上直接运行,即向后兼容
二.指令系统的结构层
指令系统的结构层定主要定义了计算机的存储模式,寄存器组织,数据类型,I/O模式,指令类型等信息。
1.存储模式
存储模式的定义包括存储器结构,特殊存储区(堆栈等),数据存储顺序,边界对齐等的确定。
数据存储顺序
- 大端存储:大端存储是指将数据的最低有效位存储在相应的高地址单元中,将最高字节的地址作为字地址。
- 小端存储:小端存储是指将数据的最低有效位存储在相应的低地址单元中,将最低字节的地址作为字地址。
边界对齐
所谓边界对其,是指数据存储在地址为2的整数倍(16位字长),4的整数倍(32位字长),或8的整数倍(64位字长)起始的连续存储单元中。当所存数据不能满足此对齐限制要求时,可填充一个或多个空白字节。
在数据未对齐的计算机中,数据的存储将跨两个边界对齐的存储单元,此时读/写一个完整数据需要访问两次存储器(花费两个总线周期)。所以为了简化硬件实现,缩短存储器访问时间,通常选择多字节的数据在主存中存放时满足边界对齐的要求。
堆栈(stack)
计算机主存中堆栈的概念有别于数据结构中堆栈的概念,数据结构中堆和栈是两种不同的数据结构,而计算机主存中所说的堆栈是指类似于数据结构中栈的结构,即后进先出,先进后出的顺序存储结构。
冯·诺伊曼结构和哈佛结构
- 冯诺依曼结构规定指令和数据均用二进制表示,并以同等地位混合存放在主存中。其优点是指令和数据可以共享并充分利用主存资源;缺点是不正确的数据可能会对指令造成破坏,导致程序运行异常。
- 哈佛结构将主存分为指令存储器和数据存储器两个实体,所有程序必须存放在指令存储器的地址空间中,而数据必须存储在数据存储器的地址空间中,其结构与优点如下图:
缺点是指令存储器和数据存储器可能得不到充分利用。
2.寄存器组织(略)
3.数据类型(略)
4.指令类型(略)
5.I/O模式(略)
三.指令设计
1.定长操作码的编码方式
对所有指令均使用相同位数的二进制数进行编码,例如某计算机的指令系统需要N条指令,若所采用定长编码的方式,所有指令都用n位二进制数进行编码,则应满足关系: N ≤ 2 n N\le2^n N≤2n
2.变长操作码的编码方式
变长操作码也叫扩展操作码
对于不同类型的指令操作码用不固定长度的二进制数进行编码
变长操作码的设计原则如下:
- (1)如果指令字长固定,则长地址码对应短操作码,操作码长度随地址码长度缩短而增加
- (2)如果指令字长可变,则以指令使用频度作为设计依据,使用指令频度高的指令用短操作码,频度低的指令用长操作码。(霍夫曼编码)
- (3)设计总是从短码开始,并要保证短操作码不能是长操作码的前缀(目的是能有效区分)
(1)霍夫曼编码
霍夫曼编码算法的内容在数据结构中有详细学习,这里只简单举例介绍:
编码思想:使用频率较高的指令采用较短的位数进行编码,使用频率较低的指令采用较长的位数进行编码,并且较短的指令不能是较长指令的前缀。
特点:霍夫曼编码的结果不是唯一的,但是其平均码长是唯一且在所有编码方式中最优。
缺点:编码长度种类太多,硬件控制器译码电路设计复杂
(2)基于特定规则扩展操作码
如图所示,假如对出现概率较大的指令采用3位二进制编码,对出现概率较小的指令采用5位二进制编码,则编码结果和平均码长如下:
(3)依据地址码数量扩展操作码
对于指令字长度固定的指令系统,为了充分利用指令的二进制位,操作码长度一般随地址码数量多少而变化。
四.寻址方式
五.综合例题解析:
例5.12(西电计组课后题)某指令操作系统字长16位,有零地址,一地址,二地址,三地址指令格式,每个地址字段均为4位,且三地址指令有L条,二地址指令有M条,零地址指令有N条。若采用定长操作码设计方法,一地址指令最多可以有多少条?若采用扩展操作码设计方法,一地址指令最多可以有多少条?
解答:
(1)第一问:
若采用定长操作码设计方法,则地址码长度应是固定的12位,而操作码长度固定为4位。
操作码数量最多有
2
4
2^4
24条,显然其中一地址码最多有:
2
4
−
L
−
M
−
N
2^4-L-M-N
24−L−M−N条
(2)第二问: