指令格式的优化设计(2)

2020-04-15 12:36

Ia??piIai

i?110 =0.25*2+0.20*2+0.15*3+0.10*3+0.08*4+0.08*4+0.05*5+0.04*5+0.03*5+0.02*5 =2.99位

Ib??piIbi

i?110 =0.25*2+0.20*2+0.15*3+0.10*3+0.08*4+0.08*4+0.05*4+0.04*5+0.03*6+0.02*6 =2.99位

可见,尽管哈夫曼编码不同,而平均码长却是唯一的。两种哈夫曼编码的位冗余量分别为:

Ra?1?H2.96?1??1.0% la2.99H2.96?1??1.0% lb2.99Rb?1?显然, Ra=Rb

(3)3/7Ii I1 I2 I3 I4 I5 I6 I7 I8 I9 I10 pi 扩展编码和2/8扩展编码如下表所示:

3/7扩展编码 码长Iai 2 2 2 5 5 5 5 5 5 5 2/8扩展编码 00 01 1000 1001 1010 1011 1100 1101 1110 1111 码长Ibi 2 2 4 4 4 4 4 4 4 4 0.25 00 0.20 01 0.15 10 0.10 11000 0.08 11001 0.08 11010 0.05 11011 0.04 11100 0.03 11101 0.02 11110 3/7扩展编码要求短码码点有3个,长码码点有7个,短码码长取2位,可表示22=4个短码码点。因此只留一个码点作为扩展标志。要表示的长码码点有7个,因此要扩展

6

3位,因此有23=8个扩展点可用,故有一个点即有一个长码码点11111未被用到,或称有一个冗余码点。而采用2/8扩展编码则没有冗余码点。由此判断,2/8扩展编码优于3/7扩展编码。但是,准确地评价编码的优劣仍需要比较平均码长。两种扩展编码的平均码长分别为:

I3/7=(0.25+0.20+0.15)*2+(0.10+0.08+0.08+0.05+0.04+0.03+0.02)*5=3.2位 I2/8=(0.25+0.20)*2+(0.15+0.10+0.08+0.08+0.05+0.04+0.03+0.02)*4=3.1位 两种扩展编码的位冗余量分别为: R3/7?1?Hl3/7Hl2/8?1?2.96?7.5% 3.22.96?4.5% 3.1R2/8?1??1?显然,由于 R2/8〈 R3/7,所以,2/8扩展编码优于3/7扩展编码。

二、寻址技术

寻址技术对于指令格式的设计十分重要。它决定了指令字中如何表示地址码。寻址技术是指存储数据的空间如何编址和如何寻址的技术。前者称为编址方式,后者称为寻址方式。在主机中,可用于存储数据的空间有:CPU中的通用寄存器、主存储器、堆栈和I/O接口中的数据寄存器。由于这些存储空间的工作速度和存储容量差别很大,因此,采用的编址方式和寻址方式也不同。

1、存储空间的组织方式

存储空间有如下三种组织方式: (1)三个地址空间的组织方式

存储空间的存储单位数量越多,用于存储单位编址的地址码越长。CPU中的通用寄存器数量较少,I/O寄存器的数量较多,主存储单元的数量大得多。为了减少指令中用于编址的地址码长度,要对这三个存储空间分别独立编址。三个存储空间的寻址方式也不相同。对寄存器一般采用直接寻址方式,对主存储器一般采用间接寻址和变址寻址等多种寻址方式,以避免在指令中用长的地址码直接表示主存单元的地址。

7

(2)两个地址空间的组织方式

CPU的通用寄存器独立编址,I/O寄存器和主存储器统一编址。统一编址空间的高端地址一般用于I/O接口寄存器的地址。

(3)一个地址空间的组织方式

所有数据存储单位统一编址,地址空间的低端地址是CPU的通用寄存器的地址,高端地址是I/O接口寄存器的地址。

2、 地址单位

常用的编址单位有:字编址,字节编址和位编址。

字编址是指每个编址地址与访问的数据存储单位相一致。字节编址是指每个编址单位都是一个字节。位编址是指每个编址单位都是一个二进制位。

对CPU通用寄存器的一次读/写访问,要求读出或写入通用寄存器中的是一个字。因此,通用寄存器按字编址,寄存器的编号就是寄存器的地址码。

主存储器可以按字编址,也可以按字节编址。按字编址是最容易实现的一种编址方式,在采用按字编址的计算机中,可以设置专门的按字节操作的指令和按位操作的指令,用来实现对存储单元中的指令字节或指令位进行操作。

3、 寻址方式

按指令中包含的地址码的个数来分,指令可分为:零地址指令﹑一地址指令、二地址指令和三地址指令。

根据指令中给出的地址码来查找数据存储单元的方式称为寻址方式。 按指令的寻址空间来分,寻址方式可以分为以下四种: (1)立即数寻址

在指令的地址码位置直接给出操作数,使指令从指令字中获取操作数,不需要访问任何地址空间,指令执行速度很快。缺点是指令字中的地址码长度有限,使操作数的示数范围较小,示数精度较低。

(2)寄存器寻址

若寻址空间是通用寄存器,则采用通用寄存器寻址方式。由于通用寄存器的工作速度较快,因此寄存器寻址的执行速度较快。另外,由于通用寄存器的字长比指令中的地址码的长度要大得多,因此,寄存器中的操作数的示数范围和示数精度较大。

8

(3)主存寻址

若寻址空间是主存,则采用主存寻址方式,由于主存的工作速度较慢,因此主存寻址比较费时。另外,由于主存的容量很大,即主存的存储空间很大,因此主存空间的地址码较长,而指令字中分配给地址码的位数很有限,这种矛盾在二地址指令和三地址指令中更突出。为了能用有限长度的指令地址码对应相当大的主存空间寻址,在主存寻址方式中要采用间接寻址和变址寻址等寻址方式。在这些寻址方式中用寄存器存放操作数的主存单元地址,而在指令地址码中给出的是相应的寄存器地址。指令执行时,先访问指令地址码指定的寄存器,从指定的寄存器中获得主存单位地址,然后再访问该主存单元地址指定的主存单元,从而得到所要用的数据。

(4)堆栈地址

由于堆栈中的数据只能先进后出,后进先出,因此对堆栈空间的寻址无需指明地址。 标准的堆栈操作指令没有地址码部分,如:

PUSH A PUSH B ADD POP C

三、指令格式优化设计的措施

在操作码优化编码的基础上,结合地址码和寻址方式在指令中的表示,可使指令字格式优化。指令字格式优化设计的措施主要有:

(1)采用扩展编码,以缩短操作码的平均码长。

(2)采用多种寻址方式,诸如基址、变址、相对寻址、寄存器寻址、寄存器间接寻址等多种寻址方式,以缩短需要在指令中表示的地址码长度,但不减少地址码寻址空间的大小。

(3)指令集采用零地址、一地址、二地址、三地址等多种地址制,且让常用的短操作码与多地址字段相配合,长操作码与少地址字段相配合。

(4)在同种地址制的若干指令中采用多种地址表示形式,如寄存器-寄存器型,寄存器-主存型,主存-主存型等,让每种地址字段有多种长度,使长度不等的操作码与地址码配合,形成规整(相同)长度的指令字。

(5)保持指令字在存储器中按整数边界存储的前提下,使用多种不同的指令字长度,整数边界存储要求指令字长应是主存存储字长的整数倍。

9

综合应用上述措施,就可以使指令系统的位冗余量减少,操作数的寻址灵活,操作码的备用码总数增多,有利于对指令系统进行扩充。

为了说明考虑以上各种措施后实现指令字格式优化设计的过程,现举例如下: 例 2:某模型机有9条指令,其使用频度分别为:

ADD:30(27)% SUB:24(21)% LOD:6(7)% STO:7(8)% JMP:7(8)% SHR:2(4)% ROL:3(6)% MOV:20(18)% STP:1(1)%

要求:用两种指令字长,且都用二地址指令。

采用扩展编码,只能用两种操作码码长。短指令为寄存器-寄存器型,长指令为寄存器-主存型。

设该机器有若干个通用寄存器。

主存地址能变址寻址,宽度为16位,按字节编址,采用按整数边界存储,任何指令都在一个主存周期中取得。

(1)仅根据使用频度,不考虑其它要求,设计出哈夫曼编码,并计算平均码长; (2)根据给出的全部要求,设计优化的操作码编码,并计算平均码长; (3)画出该机的两种指令字的格式,标出各字段的位数;

(4)该机允许使用多少个可编址的通用寄存器?变址寻址的最大相对位移量是多少

字节?

註:题文括弧中的数字是课后同学练习题用的数字。 解:

(1)根据频度分布,得出哈夫曼树,如下图:

10


指令格式的优化设计(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2013年感动中国十大人物事迹及颁奖词

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: