《2022年指令格式的优化设计可用》由会员分享,可在线阅读,更多相关《2022年指令格式的优化设计可用(20页珍藏版)》请在金锄头文库上搜索。
1、指令格式的优化设计指令格式的优化设计的目的是用最短的二进制位数表示指令的操作信息和地址信息,使指令的平均字长最短。指令格式的优化设计,首先根据指令集各指令的使用频度的分布 Pi 对操作码进行优化设计, 然后对地址码和寻址方式的表示采取优化措施,使指令格式达到优化。经过优化设计的指令集减少了程序的总位数, 减少 了程序运行的时空开销,从而 提高了系统的性能。我们首先讨论操作码的优化编码方法,然后讨论寻址技术,最后,在操作码和地址码优化表示的基础上,说明指令格式的优化设计。一、操作码的优化设计 1、操作码优化编码的方法操作码优化编码的方法有三种:定长编码、哈夫曼编码和扩展编码。定长编码:是指所有指
2、令的操作码长度都是相等的。如果有 n 个需要编码的操作码,定长操作码的位数最少需要log2n 位。哈夫曼编码: 用哈夫曼方法构造哈夫曼树进行编码。构造哈夫曼树的方法是:每次从指令集中选出两个使用频度最小的指令,将其频度相加, 形成一个节点, 称为父节点,将新生成的父节点放到结点集中,从新的节点集中再选两个使用频度最少的节点生成一个新的父节点,直至节点集成为空集,就生成了一棵哈夫曼树。每个节点的两个分支节点,称为节点,用 0 和 1 标识,上面的节点称根节点,下面的节点称为叶节点。从最上面的根节点到一个叶节点的路径( 由 0 和 1 组成的序列 )就是这个叶节点的哈夫曼编码。由于哈夫曼编码的码长
3、种类较多。既不利于硬件对操作码的译码,也很难与地址码配合形成长度规整的指令格式。因此,实用的操作码编码一般不采用哈夫曼编码而采用扩展编码的方法。扩展编码: 限定使用少数几种长度码长,使用频度高的码点用短码表示,使用频度低的码点用长码表示。特别需要指出的是,不是所有的短码都可以作为长码的前缀,即不是任何短码都可以是任何长码的若干位。否则,编码将会不唯一。所以,要留下若干个短码作为长码的扩展标志,以便长码在扩展编码时使用。这是扩展编码“扩展”一词的含义。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - -
4、 - - 第 1 页,共 20 页 - - - - - - - - - 2 扩展编码的两种表示方法。1)码长表示法 ,用短横线前后的数字分别表示短码码长和长码码长,例如,2-4-6 表示指令操作码的长度有三种,分别是2 位、4位、6 位。 (没有表示三种长度的编码各有多少个码点)。2)码点数表示法 ,用斜线前后的数字分别表示短码码点的个数和长码码点的个数,例如, 3/4/6表示有三种码长,最短码长的码点个数是3,最长码长的码点个数是 4,三种码点的总数是13。 (没有表示各个码点数的码长是多少) 。 2 、操作码优化编码的评价方法(1) 用平均码长评价编码优化的程度,平均码长为:iniilpl
5、1其中ip 是第 i 种码点的使用频度,il 是第 i 种码点的编码长度。(2) 用位冗余量衡量编码优化的程度,位冗余量为lHlHlR1其中, H称为信息熵 (Entropy)niiippH12log表示用二进制编码表示n 个码点时理论上最短平均编码长度。因此对于任何实际编码得出的平均码长l ,都有 l H ,故有 0R1 。3、对于同一个频度分布pi ,应用哈夫曼法有可能生成不同的哈夫曼树。因此,由不同的哈夫曼树得出的各码点的编码不相同。也就是说,从频度分布pi 得出的哈夫曼编码并不唯一。但,计算得到的平均码长l 肯定是唯一的。根据实现编码的码点个数的要求,在采用扩展编码方法进行优化编码时,
6、选用几个短码作为长码扩展码标志的原则:一是根据需要编码的短码的码点个数和长码码点个数进行选择,二是尽量减少编码可表示的冗余码点的个数。总之,应尽可能达到平均码长l 最短的优化要求。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 20 页 - - - - - - - - - 3 例 1:一个处理机共有 I1I10共 10 条指令,经统计各指令在程序中的使用频率分别为:p1=0.25 p2=0.20 p3=0.15 p4=0.10 p5=0.08 p6=0.08 p7=0.0
7、5 p8=0.04 p9=0.03 p10=0.02 (1) 计算该 10 条指令的操作码编码的最短平均码长;(2) 写出该 10 条指令的操作码的哈夫曼编码, 并计算该种编码的平均码长和位冗余量;(3) 采用 3/7 扩展编码和 2/8 扩展编码编写该 10 条指令的操作码, 并分别计算平均码长和位冗余量。问哪一种扩展编码较好?说明其理由。解:(1) 由给出的使用频率p1p10,计算 I1I10的操作码编码的最短平均码长:1012logiiippH=-(0.25log20.25+0.20log20.20+0.15log20.15+0.10log20.10 +0.08log20.08+0.08
8、log20.08+0.05log20.05+0.04log20.04+ 0.03log20.03+0.02log20.02) =2.96 位所以,这十条指令的操作码编码的最短平均码长为2.96 位。(2) 根据给出的使用频度,在用哈夫曼编码算法构造哈夫曼树的过程中,在选两个频度最小的节点合并时,有时有两个以上的节点可供选择,因此就会生成结构不同的哈夫曼树。这里给出了两个哈夫曼树。如下图:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 20 页 - - - - - - -
9、- - 4 0.020.030.050.080.130.100.230.200.430.040.050.090.080.170.150.320.250.571I10I9I6I8I7I4I2I5I3I1111111111000000000名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 20 页 - - - - - - - - - 5 0.020.030.05I10I9100.040.09100.080.17010.150.32010.250.57010.050.080.13
10、I7I6100.100.23100.20010.43101I4I2I8I5I3I1由哈夫曼树得到的两种哈夫曼编码如下表:Ii pi 哈夫曼编码 (a) 码长 Iai 哈夫曼编码 (b) 码长 IbiI10.25 00 2 10 2 I20.20 10 2 00 2 I30.15 010 3 110 3 I40.10 110 3 010 3 I50.08 0110 4 1110 4 I60.08 1110 4 0110 4 I70.05 01110 5 0111 4 I80.04 01111 5 11110 5 I90.03 11110 5 111110 6 I100.02 11111 5 11
11、1111 6 可见哈夫曼编码是不唯一的。两种哈夫曼编码的平均码长为:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 20 页 - - - - - - - - - 6 aiiiaIpI101 =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位biiibIpI101 =0.25*2+0.20*2+0.15*3+0.10*3+0.08*4+0.08*4+0.05*4+0.04
12、*5+0.03*6+0.02*6 =2.99位可见,尽管哈夫曼编码不同,而平均码长却是唯一的。两种哈夫曼编码的位冗余量分别为:%0.199.296.211aalHR%0 .199.296.211bblHR显然, Ra=Rb(3)3/7 扩展编码和2/8 扩展编码如下表所示:Ii pi 3/7 扩展编码码长 Iai 2/8 扩展编码码长 IbiI10.25 00 2 00 2 I20.20 01 2 01 2 I30.15 10 2 1000 4 I40.10 11000 5 1001 4 I50.08 11001 5 1010 4 I60.08 11010 5 1011 4 I70.05 11
13、011 5 1100 4 I80.04 11100 5 1101 4 I90.03 11101 5 1110 4 I100.02 11110 5 1111 4 3/7扩展编码要求短码码点有3 个, 长码码点有 7 个,短码码长取 2 位,可表示 22=4个短码码点。因此只留一个码点作为扩展标志。要表示的长码码点有7 个,因此要扩展名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 20 页 - - - - - - - - - 7 3 位,因此有 238 个扩展点可用,故有一个
14、点即有一个长码码点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位两种扩展编码的位冗余量分别为:%5.72.396.2117/37/3lHR%5.41 .396.2118
15、/28/2lHR显然,由于 R2/8 R3/7,所以, 2/8 扩展编码优于 3/7 扩展编码。二、寻址技术寻址技术对于指令格式的设计十分重要。它决定了指令字中如何表示地址码。寻址技术是指存储数据的空间如何编址和如何寻址的技术。前者称为编址方式,后者称为寻址方式。在主机中,可用于存储数据的空间有:CPU中的通用寄存器、主存储器、堆栈和 I/O 接口中的数据寄存器。 由于这些存储空间的工作速度和存储容量差别很大,因此,采用的编址方式和寻址方式也不同。1、存储空间的组织方式存储空间有如下三种组织方式:(1) 三个地址空间的组织方式存储空间的存储单位数量越多,用于存储单位编址的地址码越长。CPU中的
16、通用寄存器数量较少, I/O 寄存器的数量较多,主存储单元的数量大得多。为了减少指令中用于编址的地址码长度,要对这三个存储空间分别独立编址。三个存储空间的寻址方式也不相同。对寄存器一般采用直接寻址方式,对主存储器一般采用间接寻址和变址寻址等多种寻址方式,以避免在指令中用长的地址码直接表示主存单元的地址。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 20 页 - - - - - - - - - 8 (2) 两个地址空间的组织方式CPU的通用寄存器独立编址, I/O 寄存器
17、和主存储器统一编址。统一编址空间的高端地址一般用于 I/O 接口寄存器的地址。(3) 一个地址空间的组织方式所有数据存储单位统一编址,地址空间的低端地址是CPU 的通用寄存器的地址,高端地址是 I/O 接口寄存器的地址。2、地址单位常用的编址单位有:字编址,字节编址和位编址。字编址是指每个编址地址与访问的数据存储单位相一致。字节编址是指每个编址单位都是一个字节。 位编址是指每个编址单位都是一个二进制位。对 CPU通用寄存器的一次读 / 写访问,要求读出或写入通用寄存器中的是一个字。因此,通用寄存器按字编址,寄存器的编号就是寄存器的地址码。主存储器可以按字编址,也可以按字节编址。按字编址是最容易
18、实现的一种编址方式, 在采用按字编址的计算机中, 可以设置专门的按字节操作的指令和按位操作的指令,用来实现对存储单元中的指令字节或指令位进行操作。3、寻址方式按指令中包含的地址码的个数来分,指令可分为:零地址指令一地址指令、二地址指令和三地址指令。根据指令中给出的地址码来查找数据存储单元的方式称为寻址方式。按指令的寻址空间来分,寻址方式可以分为以下四种:(1) 立即数寻址在指令的地址码位置直接给出操作数,使指令从指令字中获取操作数,不需要访问任何地址空间,指令执行速度很快。缺点是指令字中的地址码长度有限,使操作数的示数范围较小,示数精度较低。(2) 寄存器寻址若寻址空间是通用寄存器,则采用通用
19、寄存器寻址方式。由于通用寄存器的工作速度较快,因此寄存器寻址的执行速度较快。另外,由于通用寄存器的字长比指令中的地址码的长度要大得多,因此,寄存器中的操作数的示数范围和示数精度较大。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 20 页 - - - - - - - - - 9 (3) 主存寻址若寻址空间是主存,则采用主存寻址方式,由于主存的工作速度较慢,因此主存寻址比较费时。另外,由于主存的容量很大,即主存的存储空间很大,因此主存空间的地址码较长,而指令字中分配给地址码
20、的位数很有限,这种矛盾在二地址指令和三地址指令中更突出。为了能用有限长度的指令地址码对应相当大的主存空间寻址,在主存寻址方式中要采用间接寻址和变址寻址等寻址方式。在这些寻址方式中用寄存器存放操作数的主存单元地址,而在指令地址码中给出的是相应的寄存器地址。指令执行时,先访问指令地址码指定的寄存器,从指定的寄存器中获得主存单位地址,然后再访问该主存单元地址指定的主存单元,从而得到所要用的数据。(4) 堆栈地址由于堆栈中的数据只能先进后出, 后进先出,因此对堆栈空间的寻址无需指明地址。标准的堆栈操作指令没有地址码部分,如:PUSH A PUSH B ADD POP C 三、指令格式优化设计的措施在操
21、作码优化编码的基础上,结合地址码和寻址方式在指令中的表示,可使指令字格式优化。指令字格式优化设计的措施主要有:(1) 采用扩展编码 ,以缩短操作码的平均码长。(2) 采用多种寻址方式 ,诸如基址、变址、相对寻址、寄存器寻址、寄存器间接寻址等多种寻址方式,以缩短需要在指令中表示的地址码长度,但不减少地址码寻址空间的大小。(3) 指令集采用零地址、一地址、二地址、三地址等多种地址制,且让常用的短操作码与多地址字段相配合,长操作码与少地址字段相配合。(4) 在同种地址制的若干指令中采用多种地址表示形式,如寄存器寄存器型,寄存器主存型,主存主存型等,让每种地址字段有多种长度,使长度不等的操作码与地址码
22、配合,形成规整(相同)长度的指令字。(5) 保持指令字在存储器中按整数边界存储的前提下,使用多种不同的指令字长度,整数边界存储要求指令字长应是主存存储字长的整数倍。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 20 页 - - - - - - - - - 10 综合应用上述措施,就可以使指令系统的位冗余量减少,操作数的寻址灵活,操作码的备用码总数增多,有利于对指令系统进行扩充。为了说明考虑以上各种措施后实现指令字格式优化设计的过程,现举例如下:例 2 :某模型机有 9条
23、指令,其使用频度分别为:ADD:30% SUB:24% LOD:6% STD:7% JMP:7% SHR:2% ROL:3% MOV:20% STP:1% 要求:用两种指令字长,且都用二地址指令。采用扩展编码,只能用两种操作码码长。短指令为寄存器寄存器型,长指令为寄存器主存型。设该机器有若干个通用寄存器。主存地址能变址寻址,宽度为16 位,按字节编址,采用按整数边界存储,任何指令都在一个主存周期中取得。(1) 仅根据使用频度,不考虑其它要求,设计出哈夫曼编码,并计算平均码长;(2) 根据给出的全部要求,设计优化的操作码编码,并计算平均码长;(3) 画出该机的两种指令字的格式,标出各字段的位数;
24、(4) 该机允许使用多少个可编址的通用寄存器?变址寻址的最大相对位移量是多少字节?解:(1) 根据频度分布,得出哈夫曼树,如下图:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 20 页 - - - - - - - - - 11 0.010.020.03I9I8100.030.06100.06I7I60.070.070.1410I50.12100.260.300.56100.200.240.44100.441010I4I3I2I1由哈夫曼树,得出9 条指令的哈夫曼树,如
25、下表:Ii 指令pi 哈夫曼编码Ii(位) 25 扩展编码Ii(位) I1ADD 30% 10 2 00 2 I2SUB 24% 00 2 01 2 I3MOV 20% 01 2 10 2 I4STO 7% 1100 4 11000 5 I5JMP 7% 1101 4 11001 5 I6LOD 6% 1110 4 11010 5 I7ROL 3% 11110 5 11011 5 I8SHR 2% 111110 6 11100 5 I9STP 1% 111111 6 11101 5 哈夫曼编码的平均码长为:)(61.2101位iiilpl(2) 根据题目要求,指令有两种字长,主存宽度为16位,
26、按字节编址,采用按整数边界存储,任何指令都在一个主存周期取得,那么,短指令字长只能是8 位,长指令字长只能是 16 位。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 20 页 - - - - - - - - - 12 指令都用二地址指令:短指令位寄存器寄存器型,据此可得出短指令格式为:操作码寄存器 1 寄存器 2 长指令为寄存器主存型,且主存地址应能变址寻址,可得出长指令格式为:操作码寄存器号变址寄存器相对位移|- 主存逻辑地址 -| 在一般的计算机中,变址寄存器就是
27、某一个通用寄存器,所以,变址寄存器字段的位数与寄存器字段的位数相同。根据题目的要求,指令操作码可采用扩展编码,并只能用两种码长。从指令使用频度来看,ADD 、SUB 和 MOV 的使用频度较高, 其余六种指令的使用频度都低得多,因此,短操作码码长应取2 位长,可有 22=4个码点,用其中三个码点表示这三条指令,余下一个码点作为扩展标志。用一个扩展标志再扩展表示出其余六个操作码,故还需要扩展三位,因此,长操作码码长为5 位。由此,得出九条指令的2-5 扩展操作码如上表所示。2-5 扩展编码的平均码长为)(78.2101位iiilpl(3) 由上述分析,可得出短指令格式中各字段的位数为操作码寄存器
28、 1 寄存器 2 |-2位-|-3位-|-3位-| 长指令格式中各字段的位数为:操作码寄存器变址寄存器相对位移|-5 位-|-3 位-|-3位-|-5位-| 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 20 页 - - - - - - - - - 13 由于寄存器的字段长度为3 位,因此,该机可使用的可编址通用寄存器的个数最多为 23=8个。由于相对位移长度为5 位, 因此, 访存变址寻址的最大相对位移量为25=32 个字节。练习:一某模型机共有 7 条指令,各指令
29、的使用频度分别为:35% 25% 20% 10% 5%3% 2% ,共有 8 个通用寄存器和 2 个变址寄存器。(1)请设计 7 条指令的哈夫曼编码,并计算操作码的平均码长。(2)若要求设计 8 位长的 R-R型指令 3 条,16 位长 R-M型变址寻址指令4条,变址范围为 -127+127,请设计指令格式,并给出指令各字段的长度和操作码编码。解:(1) 哈夫曼树如下图所示 ( 略) ,得到的哈夫曼编码如下表第3 列所示,由此得到的 7 条指令操作码的平均码长为: L=PILI=2.35( 位) (2) 3 条 8 位长的 R-R型指令的格式如下 : 2位 3位 3位由于有 8 个通用寄存器
30、, 所以指令中的寄存器字段应为3 位, 短操作码字段应有 2 位,2 位码可以表示 4 个指令码 , 用其中的 3 个码点“00” “01”“10”表示 3 条 8 位的短指令的操作码 , 余下 1 个码点“ 11”作为长码 LIPI哈夫曼编码3/4 扩展编码I1 I2 I3 I4 I5I6I70.35 0.25 0.20 0.10 0.05 0.03 0.02 00 01 10 110 1110 11110 11111 00 01 10 1100 1101 1110 1111 操作码寄存器 1 寄存器 2 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - -
31、- - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 20 页 - - - - - - - - - 14 的扩展标志。4 条 16位长的 R-M型变址寻址指令的格式为:操作数寄存器号变址寄存器号相对位移 4位 3位 1位 8位由于有两个变址寄存器,所以变址寄存器号字段只有1 位;由于变址范围是 -127+127,所以相对位移字段为8 位:因此剩下的4 位(因为16-3-1-8=4 )用来表示操作码,其中2 位为扩展标示位,另外扩展的2位刚好表示 4 条指令的操作码。采用上述 3/4 扩展遍码时,使用频率高的指令用短码表示,使用频率低的用长码表示,得到的3/4
32、扩展遍码如上表第4 列所示。二为了显示不同指令系统的性能,1. 请用(1)三地址指令系统处理机;(2)二地址指令系统处理机;(3)二地址多通用寄存器指令系统处理机;(4)一地址(累加器)指令系统处理机;(5)零地址指令系统处理机;分别写出计算下式X 数值的五个程序 , 程序都用直接方式寻址 , 并设数据 AG都已经存放在主存相应的存储单元中, 计算结果存放在X单元中 . X=A+B*C+E*D/F-G. 2. 设操作码(P=1B ) 为 8位存储单元地址码 (A=2B ) 为 16 位一个数据(D=4B )为 32 位一个通用寄存器地址(R=0.5B)为 4 位. (1) 分别统计五个程序的指
33、令条数; (2) 分别统计五个程序的访存次数, 其中包括存取指令和读取操作数的访存次数; (3) 分别统计五个程序指令所用的存储空间( 因为不同程序中用的存储空间大致相同 , 所以不必统计 ); (4) 分别统计五个程序的访存信息量( 即所有访存操作所存取的指令和数据名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 20 页 - - - - - - - - - 15 的字节数的总和 ). 3. 将五个程序按所用的存储空间大小和访存信息量排队, 说明 5 种指令系统的程序运
34、行时的时空开销 . 解: 1. 计算 X数值的五个程序:(1)三地址指令系统编写的程序为: 1 ADD X,A,B ;X 中暂存 2 MUL X,X,C ;X 中暂存 3 MUL Y,D ,E ;Y 中暂存 4 ADD X,X,Y ;X 中暂存 5 SUB Y,F,G ;Y 中暂存 6 DIV X,X,Y ;X 中存(2)二地址指令系统的程序为: 1 MOVE X,A 2 ADD X,B 3 MUL X,C 4 MOVE Y,D 5 MUL Y,E 6 ADD X,Y 7 MOVE Y,F 8 SUB X,Y 9 DIV X,Y (3)二地址多通用寄存器指令系统的程序为: 1 MOVE R1,
35、A 2 ADD R1,B 3 MUL R1,C 4 MOVE R2,D 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 15 页,共 20 页 - - - - - - - - - 16 5 MUL R2,E 6 ADD R1,R2 7 MOVE R2,F 8 SUB R2,G 9 DIV R1, 10 MOVE X,R1 (4)一地址(累加器)指令系统的程序为: 1 LOAD F 2 SUB G 3 STORE X 4 LOAD A 5 ADD B 6 MUL C 7 STORE Y
36、 8 LOAD D 9 MUL E 10 ADD Y 11 DIV X 12 STORE X (5)零地址指令系统的程序为:1 PUSH A 2 PUSH B 3 ADD 4 PUSH C 5 MUL 6 PUSH D 7 PUSH E 8 MUL 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 16 页,共 20 页 - - - - - - - - - 17 9 ADD 10 PUSH F 11 PUSH G 12 SUB 13 DIV 14 POP 2. 五个程序的指令条数访存次
37、数和访存信息量 (1) 用三地址指令编的程序共用6 条指令 , 每条指令含 1 个操作码 ,2 个源操作数地址和 1 个目的操作数地址,每条指令的字长为P+3A=1B+3*2B=7B 。程序所用的存储量为 6*7B=42B 。每条指令需 4 次访存:其中取指令访存 1 次,访存信息量为7B;取 2 个源操作数需访存2 次,访存信息量为 2D=284B=8B ;存计算结果访存1 次,访存信息量为1D=4B 。所以,执行一条指令的访存信息量为7B+8B+4B=19B 。执行 整个程序的访存信息量为6*19B=114B 。(2) 用二地址指令编的程序共用9条指令 , 每条指令含 1个操作码 ,2 个
38、源操作数地址且第 1 个源操作数地址也是目的操作数地址;或者是1 个是源操作数地址一个是目的操作数地址。 每条指令的字长为P+2A=1B+2*2B=5B。程序所用的存储量为 9*5B=45B 。前者每条指令所需访存读 / 写操作数的次数如下表所示。 程序执行的访存信息量包括:取 9 条指令的访存信息量9*5B=45B ;15 次取源操作数的访存信息量15*4B=60B ;9 次存结果数据的访存信息量9*4B=36B 。所以,程序执行的访存信息量为 45B+60B+36B=141B. (3) 用二地址多通用寄存器指令编的程序共用10 条指令 , 每条指令含1 个操作码,2 个源操作数地址且第1
39、个源操作数地址也是目的操作数地址;或者是1个是源操作数地址一个是目的操作数地址。源操作数地址和目的操作数地址可以是存储单元地址,也可以是寄存器地址。由程序可知,有2 条指令的 2个操作数地址是寄存存器地址,指令字长为P+2R=1B+2*0.5B=2B, 其余指令 2个操作数地址都1 个是存储单元地址1 个是寄存器地址, 指令字长为名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 17 页,共 20 页 - - - - - - - - - 18 P+A+R=1B+2B+0.5B=3.5B
40、。所以 , 程序所用的存储量为2*2B+8*3.5B=32B. 10 条指令所需访存读 / 写操作数的次数如下表所示。程序执行的访存信息量:包括取 10 条指令的访存信息量32B; 7 次取源操作数的访存信息量7*4B=28B;1 次存结果数据的访存信息量4B。所以, 程序执行的访存信息量为 32B+28B+4B=64B. (4) 用一地址指令编的程序共用12 条指令 , 每条指令含 1 个操作码 ,1 个源操作数地址或目的操作数地址; 前者把源操作数取到累加器中, 或者与累加器中暂存的操作数进行运算 , 将结果仍暂存于累加器中; 后者把暂存于累加器中的数据送入目的地址指定的存储单元中。每条指
41、令的字长为P+A=1B+2B=3B。所以,程序占用的存储量为12*3B=36B 。每条指令的执行需 2 次访存:其中的 1 次为取指令,访存信息量为指令字长3B;另 1次是取 1 个源操作数或存结果数据访存,访存信息量是1D=4B 。总之, 1 条指令的执行访存信息量为3B+4B=7B 。整个程序执行的访存信息量等于12*7B=84B。(5)用零地址指令编的程序共用14 条指令 。零地址指令是堆栈型,指令,堆栈是内存中的 1 个专用区域,专门用来存放堆栈型指令的操作数。PUSH 指令把指定存储单元中的操作数压入栈顶,指令字长为P+A=1B+2B=3B。一共需要 3 次访存:其中 1 次为取指令
42、, 1 次为取操作数, 1 次为压入栈顶。POP指令是把栈顶的操作数弹出并送入指定的存储单元中,指令字长为P+A=1B+2B=3B。也要访存 3 次:1 次取指,1 次取栈顶操作数, 1 次存操作数。PUSH 和 POP 指令的访存信息量均为P+A+2D=3B+8B=11B。其余运算型堆栈指令的指令字长都是P+1B ,每条指令都是取栈顶和次栈顶的2 个源操作数进行运算,然后把运算结果压入栈顶。指令字长为P+1B 。每条指令需 4 次访存:取指 1 次,取 2 个源操作数 2 次,把结果压入栈顶1 次。 ,每条运算指令执行的访存信息量为P+3D=1B+3*4B=13B。程序中有 PUSH 和 P
43、OP 指令 8 条,其余运算指令6 条,所以,整个程序的存储量为: 8*(P+A )+6*P=8*3B+6*1B=30B. 整个程序的访存信息量为: 8*(P+A+2D )+6*(P+3D )= 8*11B+6*13B=166B. 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 18 页,共 20 页 - - - - - - - - - 19 不同指令编程的访存次数指令编号三址取数次数指令存数次数二址取数次数指令存数次数二址取数次数多寄存数次数指令指令字长一址取数次数指令存数次数零地
44、取数次数址存数次数指令指令字长1 2 1 1 1 1 3.5 1 1 1 3 2 2 1 2 1 1 3.5 1 1 1 3 3 2 1 2 1 1 3.5 1 2 1 1 4 2 1 1 1 1 3.5 1 1 1 3 5 2 1 2 1 1 3.5 1 2 1 1 6 2 1 2 1 2.0 1 1 1 3 7 1 1 1 3.5 1 1 1 3 8 2 1 1 3.5 1 2 1 1 9 2 1 2 1 2 1 1 10 1 3.5 1 1 1 3 11 1 1 1 3 12 1 2 1 1 13 2 1 1 14 1 1 3 合计12 6 15 9 7 1 32 9 3 20 14 3
45、0 3五个程序的时空开销排序用不同指令系统编程的程序存储量和访存信息量如下表所示:由表可见,不同指令系统编程的程序存储量差别不大,但是,决定程序执行速度的访存信息量却有较大的差别。所以,5 个程序的时空开销的优劣可按访存信息量的大小来排序。 时空开销最小的是用二地址多通用寄存器指令系统编的程序;时空开销最大的是用零地址指令系统编的程序。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 19 页,共 20 页 - - - - - - - - - 20 5 种不同指令编程的比较指令类型指令条数访存次数程序存储量访存信息量开销排序三地址指令二地址指令二地多寄指令一地址指令零地址指令6 9 10 12 14 24 33 18 24 48 42 45 32 36 30 114 141 64 84 166 3 4 1 2 5 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 20 页,共 20 页 - - - - - - - - -