计算机体系结构第四章练习题参考解答

  • 格式:doc
  • 大小:128.16 KB
  • 文档页数:7

-可编辑修改- 第 四 章

4.52 浮点数系统使用的阶码基值re=2,阶值位数q=2,尾数基值rm=10,尾数位数p′=1,即按照使用的二进制位数来说,等价于p=4。计算在非负阶、正尾数、规格化情况下的最小尾数值、最大尾数值、最大阶值、可表示的最小值和最大值及可表示数的个数。

解: 最小尾数值:rm-1 = 10-1 = 0.1

最大尾数值:1- rm-p′ =1-10-1 = 0.9

最大阶值:2q-1=3

可表示数的最小值:1×rm-1 = 10-1 = 0.1

可表示数的最大值:rm2q-1×(1- rm-p′)=103(1-10-1)= 900

可表示数的个数:2q×rmp′(rm-1)/rm = 22×101(10-1)/10 = 36

4.53 一台机器要求浮点数的字长的精度不低于10-7.2,表数的范围正数不小于1038,且正负对称。尾数用原码、纯小数表示,阶码用移码、整数表示。设计这种浮点数的格式。

解 依题意,取表数范围N =1038,表数精度δ=10-7.2。

由式(4-4)得:37log(log10log21)log2q = 6.99,上取整,得到阶码字长q=7。

由式(4-5)得:16log1053.2log2p,上取整,得到尾数字长p=24。

从而加上一个尾数符号位和一个阶码符号位,浮点数的总字长为:p+q+2=24+7+2=33。

实际浮点数总字长应为8的倍数,故取浮点数总字长为40位。多出的7位可以加到尾数字长p中用于提高浮点数的表数精度,也可以加到阶码字长q中来扩大浮点数的表数范围。暂且让p增加6位,q增加1位,即p=30,q=8。如图4-8所示是设计出来的浮点数格式。

图4-8 例4.2浮点数的设计格式

4.58 用于文字处理的某专用机,每个文字符用4位十进制数字(0~9)编码表示,空格用︼表示。在对传送的文字符和空格进行统计后,得出它们的使用频度如下:

︼:0.20 0:0.17 1:0.06 2:0.08 3:0.11 4:0.08

5: 0.05 6:0.08 7:0.13 8:0.03 9:0.01

(1)若对数字0~9和空格采用二进制编码,试设计编码平均长度最短的编码。

(2)若传送106个文字符号,且每个文字符号后均自动跟一个空格,按最短的编码,共需传送多少个二进制位?若传送波特率为9600bPS,共需传送多少时间?

(3)若对数字0~9和空格采用4位定长码编码,重新计算问题(2)。

解:(1)∵操作码编码的平均长度最短为Huffman编码,生成的Huffman树,如图所示,长度 1 p=30 1 q=8 位序 39 38 9 8 7 0

尾符S 尾数M 阶符F 阶码E 。

-可编辑修改- 相应的Huffman编码如表所示。l=niip1×li = 3.23(位)。

(2)根据题意,每个字符的二进制码的平均长度为:3.23×(4+1)=16.15(位)。若要传输106个字符,则要传输二进制位数为:106×16.15 =1.615×107(位)

若波特率为56Kb/s,则传输时间为:1.615×107/(56×103)=288(s)。

(3)当采用四位定长编码时,则需要传输二进制位数为:106×4(4+1)=2×107(位),传输时间为:2×107/(56×103)=357(s)。

1 0

1 0 1 0

1 0 1 0 1 0

3 7 0

5 1 6 4 2

9 8

4.60 一台模型机共有7条指令,各指令的使用频度分别为:35%,25%,20%,10%,5%,3%,2%,有8个通用数据寄存器,2个变址寄存器。

(1)要求操作码的平均长度最短,请设计操作码的编码,并计算操作码编码的平均长度。

(2)设计8位字长的寄存器—寄存器型指令3条,16位字长的寄存器一存储器型变址寻址方式指令4条,变址范围不小于正、负127。请设计指令格式,并给出指令各字段的长度和操作码的编码。

解:(1)∵操作码编码的平均长度最短为Huffman编码,生成的Huffman树如图所示,Ii Pi Huffman编码 Li

︼ 0.20 10 2

0 0.17 000 3

7 0.13 010 3

3 0.11 110 3

2 0.08 0010 4

4 0.08 0011 4

6 0.08 0110 4

1 0.06 0111 4

5 0.05 1110 4

8 0.03 11110 5

9 0.01 11111 5 1.00

0.01 0.04 0.09 0.20 0.40

0.03 0.05 0.11 0.20

0.08 0.06 0.14 0.27 0.60

0.16

0.08 0.13 0.33

0.17

0.08 。

-可编辑修改- 相应的Huffman编码如表所示。l=niip1×li = 2.35(位)

(2)由于通用寄存器有8个,则指令中通用寄存器字段应为3位;操作码字段2位可有4个码点,用三个码点表示三条指令,另一个码点则作为扩展标志。所以3条8位长的寄存器—寄存器型指令格式如下:

由于变址寄存器有2个,则指令中变址寄存器字段应为1位;变址范围-127~+127,则指令中相对位移字段应为8位;操作码字段前2位可有4个码点,用三个码点表示三条指令,另一个码点则作为扩展标志。扩展2位正好可表示四条指令,操作码字段则为4位。所以4条16位长的寄存器—存储器型指令格式如下:

特别地,当采用3/4扩展编码时,使用频度高的用短码表示,使用频度低的用长码表示,其相应的编码如表所示。

4.65 某模型机9条指令使用频度为:

ADD(加) 30% SUB(减) 24% JOM(按负转移)6% STO(存) 7%

JMP(转移)7% SHR(右移)2% CIL(循环左移)3% CLA(清除)20%

STP(停机)1% Ii Pi Huffman编码 Li 2-4编码(3/4) Li

I1 0.35 00 2 00 2

I2 0.25 01 2 01 2

I3 0.20 10 2 10 2

I4 0.10 110 3 1100 4

I5 0.05 1110 4 1101 4

I6 0.03 11110 5 1110 4

I7 0.02 11111 5 1111 4 1.00

0.02 0.05 0.10 0.20 0.40

0.03 0.05 0.10 0.20 0.25 0.60

0.35

操作码(2位)寄存器1(3位)寄存器2(3位)

操作码(4位)寄存器(3位)变址寄存器(1位)相对位移(8位) 。

-可编辑修改- 要求有两种指令字长,都按双操作数指令格式编排,采用扩展操作码,并限制只能有两种操作码码长。设该机有若干通用寄存器,主存为16位宽,按字节编址,采用按整数边界存储,任何指令都在一个主存周期中取得,短指令为寄存器--寄存器型,长指令为寄存器--主存型,主存地址应能变址寻址。

(1)仅根据使用频度,不考虑其它要求,设计出全Huffman操作码,计算其平均码长;

(2)考虑题目全部要求,设计优化实用的操作码形式,并计算其操作码的平均码长;

(3)该机允许使用多少可编址的通用寄存器?

(4)画出该机两种指令字格式,标出各字段之位数;

(5)指出访存操作数地址寻址的最大相对位移量为多少个字节?

解:(1)根据给出的使用频度,在构造Huffman树的过程中,有两个结点可供合并,因此可生成不同的Huffman树,其中给出一棵如图所示,相应的Huffman编码如表所示。

∴ Huffman编码的平均长度为:l=niip1×li

l=0.3×2+0.24×2+0.2×2+0.07×4+0.07×4+0.06×4+0.03×5+0.02×6+0.01×6=2.61(位)

ADD CLA SUB

J0M JMP STO

CIL

STP SHR

(2)任何指令都在一个主存周期中取得,那么短指令字长为8位,长指令字长为16位。又指令都是二地址指令,所以短指令寄存器--寄存器型的格式为: 指令 Ii Pi Huffman编码 Li 2-5编码(3/6) Li

ADD I1 0.30 01 2 00 2

SUB I2 0.24 11 2 01 2

CLA I3 0.20 10 2 10 2

STO I4 0.07 0011 4 11001 5

JMP I5 0.07 0010 4 11010 5

JOM I6 0.06 0001 4 11011 5

CIL I7 0.03 00001 5 11100 5

SHR I8 0.02 000001 6 11101 5

STP I9 0.01 000000 6 11110 5 0.56

0.01 0.03 0.06 0.12 0.26

0.02 0.03 0.06 0.07 0.14 1.00

0.20

0.07 0.44

0.24 0.30