0.44100.561010.4400.26100.30I10.20I30.24I20.121010.1400.06100.06I60.07I50.07I40.03100.03I70.01I90.02I8
由哈夫曼树,得出9条指令的哈夫曼树,如下表: Ii I1 I2 I3 I4 I5 I6 I7 I8 I9 指令 ADD SUB MOV STO JMP LOD ROL SHR STP pi 30% 24% 20% 7% 7% 6% 3% 2% 1% 哈夫曼编码 Ii(位) 2-5扩展编码 Ii(位) 10 00 01 1100 1101 1110 11110 111110 111111 2 2 2 4 4 4 5 6 6 00 01 10 11000 11001 11010 11011 11100 11101 2 2 2 5 5 5 5 5 5 哈夫曼编码的平均码长为:
l??pili?2.61(位)
i?110(2)根据题目要求,指令有两种字长,主存宽度为16位,按字节编址,采用按整数边界存储,任何指令都在一个主存周期取得,那么,短指令字长只能是8位,长指令字长只能是16位。
11
指令都用二地址指令:
短指令位寄存器-寄存器型,据此可得出短指令格式为:
操作码
长指令为寄存器-主存型,且主存地址应能变址寻址,可得出长指令格式为:
操作码 寄存器号 变址寄存器 相对位移 |?---主存逻辑地址----?|
在一般的计算机中,变址寄存器就是某一个通用寄存器,所以,变址寄存器字段的位数与寄存器字段的位数相同。
根据题目的要求,指令操作码可采用扩展编码,并只能用两种码长。从指令使用频度来看,ADD、SUB和MOV的使用频度较高,其余六种指令的使用频度都低得多,因此,短操作码码长应取2位长,可有2=4个码点,用其中三个码点表示这三条指令,余下一个码点作为扩展标志。用一个扩展标志再扩展表示出其余六个操作码,故还需要扩展三位,因此,长操作码码长为5位。由此,得出九条指令的2-5扩展操作码如上表所示。
2-5扩展编码的平均码长为
l??pili?2.78(位)
i?1102
寄存器1 寄存器2 (3)由上述分析,可得出短指令格式中各字段的位数为
操作码 寄存器1 寄存器2 |<----2位--?|?----3位----?|?---3位-------?|
长指令格式中各字段的位数为:
操作码 寄存器 变址寄存器 相对位移 |?--5位-?|?--3位----?|?----3位----?|?----5位----?|
12
由于寄存器的字段长度为3位,因此,该机可使用的可编址通用寄存器的个数最多为23=8个。
由于相对位移长度为5位,因此,访存变址寻址的最大相对位移量为25=32个字节。 练习:
一.某模型机共有7条指令,各指令的使用频度分别为: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(位) LI PI 哈夫曼编码 3/4扩展编码
I1 0.35 00 00
I 0.25 01 01 2
I3 I4 0.20 10 0.10 110 10 1100 1101 1110 1111 I5 0.05 1110 I6 0.03 11110 I7 0.02 11111 (2) 3条8位长的R-R型指令的格式如下:
操作码 寄存器1 寄存器2 2位 3位 3位
由于有8个通用寄存器,所以指令中的寄存器字段应为3位,短操作码字
段应有2位,2位码可以表示4个指令码,用其中的3个码点“00”﹑“01”﹑“10”表示3条8位的短指令的操作码,余下1个码点“11”作为长码
13
的扩展标志。
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扩展遍码如上表第4列所示。
二.★为了显示不同指令系统的性能, 1.请用
(1)三地址指令系统处理机; (2)二地址指令系统处理机;
(3)二地址多通用寄存器指令系统处理机; (4)一地址(累加器)指令系统处理机; (5)零地址指令系统处理机;
分别写出计算下式X数值的五个汇编语言程序,程序都用直接方式寻址,并设数据A~G都已经存放在主存相应的存储单元中,计算结果存放在X单元中.
X={[A+B]*C+E*D}/{F-G}.
2.设操作码(P=1B)为8位﹑存储单元地址码(A=2B)为16位﹑一个数据(D=4B)为32位﹑通用寄存器地址(R=0.5B)为4位. (1) 分别统计五个程序的指令条数;
(2) 分别统计五个程序的访存次数,其中包括存取指令和读取操作数的访存
次数;
(3) 分别统计五个程序指令所用的存储空间(因为不同程序中用的存储空间
大致相同,所以不必统计);
(4) 分别统计五个程序的访存信息量(即所有访存操作所存取的指令和数据
14
的字节数的总和).
3.将五个程序按所用的存储空间大小和访存信息量排队,说明5种指令系统的程序运行时的时空开销.
解:
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,A 2 ADD R1,B 3 MUL R1,C 4 MOVE R2,D 5 MUL R2,E
15