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

更新时间:2023-12-02 17:58:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第 四 章

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)得:q?由式(4-5)得:

p?log(log1037log2?1)log2?log10?16?53.2log2 = 6.99,上取整,得到阶码字长q=7。

,上取整,得到尾数字长p=24。

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

位序 39 38 9 8 7 0 尾符S 尾数M 阶符F 阶码E 长度 1 p=30 1 q=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树,如图所示,

相应的Huffman编码如表所示。l=?pi×li = 3.23(位)。

i?1n(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.00

1 0 0.60 0.40

1 0 1 0 0.33 0.20 ︼ 0.20 0.27 1 0 1 0 1 0 0.09 0.11 0.16 0.17 0.14 0.13 3 7 0 0.04 0.05 0.06 0.08 0.08 0.08 5 1 6 4 2 0.01 0.03 Ii Pi Huffman编码 Li 9 8 ︼ 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

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

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

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

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

相应的Huffman编码如表所示。l=?pi×li = 2.35(位)

i?1n

1.00 0.40 0.20 0.10 0.05 0.02 0.05 0.03 0.60 0.25 0.20 0.10 0.35 Ii I1 I2 I3 I4 I5 I6 I7 Pi 0.35 0.25 0.20 0.10 0.05 0.03 0.02 Huffman编码 Li 2-4编码(3/4) Li 00 01 10 110 1110 11110 11111 2 2 2 3 4 5 5 00 01 10 1100 1101 1110 1111 2 2 2 4 4 4 4 (2)由于通用寄存器有8个,则指令中通用寄存器字段应为3位;操作码字段2位可有4个码点,用三个码点表示三条指令,另一个码点则作为扩展标志。所以3条8位长的寄存器—寄存器型指令格式如下:

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

操作码(4位)寄存器(3位)变址寄存器(1位)相对位移(8位) 特别地,当采用3/4扩展编码时,使用频度高的用短码表示,使用频度低的用长码表示,其相应的编码如表所示。

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

ADD(加) 30% SUB(减) 24% JOM(按负转移)6% STO(存) 7% JMP(转移)7% SHR(右移)2% CIL(循环左移)3% CLA(清除)20% STP(停机)1%

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

(1)仅根据使用频度,不考虑其它要求,设计出全Huffman操作码,计算其平均码长; (2)考虑题目全部要求,设计优化实用的操作码形式,并计算其操作码的平均码长; (3)该机允许使用多少可编址的通用寄存器?

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

(5)指出访存操作数地址寻址的最大相对位移量为多少个字节? 解:(1)根据给出的使用频度,在构造Huffman树的过程中,有两个结点可供合并,因此可生成不同的Huffman树,其中给出一棵如图所示,相应的Huffman编码如表所示。

∴ Huffman编码的平均长度为:l=?pi×li

i?1nl=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(位)

1.00 0.56 0.44

ADD CLA SUB 0.26 0.30 0.20 0.24

0.12 0.14

0.06 0.06 0.07 0.07 J0M JMP STO

0.03 0.03 CIL 指令 Ii Pi Huffman编码 Li 2-5编码(3/6) Li

0.01 0.02 STP SHR

ADD SUB CLA STO JMP JOM CIL SHR STP I1 0.30 01 I2 0.24 11 I3 0.20 10 I4 0.07 0011 I5 0.07 0010 I6 0.06 0001 I7 0.03 00001 I8 0.02 000001 I9 0.01 000000 2 2 2 4 4 4 5 6 6 00 01 10 11001 11010 11011 11100 11101 11110 2 2 2 5 5 5 5 5 5 (2)任何指令都在一个主存周期中取得,那么短指令字长为8位,长指令字长为16位。又指令都是二地址指令,所以短指令寄存器--寄存器型的格式为:

操作码(2位)寄存器1(3位)寄存器2(3位) 长指令为寄存器--主存型的格式为:

操作码(5位)寄存器(3位)变址寄存器(3位)相对位移(5位) 由题意可知:指令操作码采用扩展编码,且只能有两种码长。从指令使用频度来看,ADD、

SUB和CLA三条指令的使用频度与其它指令的使用频度相差较大,所以用两位操作码的三个码点来表示三条指令,一个码点作为扩展码点,且扩展三位来表示六条指令,即采用2--4扩展编码构成3/6编码,2--4扩展编码如表所示。

∴ 2--4扩展编码(3/6)的平均长度为:l=?pi×li=2.78

i?1n(3)(4)由短指令寄存器--寄存器型的格式可知,寄存器号字段长度为3位,寄存器个数为8个。则各字段长度如图格式所标识。

而对于长指令寄存器--主存型,一般变址寄存器是某通用寄存器,则变址寄存器号的字段长度为3位,则各字段长度如图格式所标识。

(5)由于相对位移字段长度为5位,因此访存地址寻址的最大相对位移量为25=32字节。

4.79 下面是一段数据块搬家程序。在RISC处理机中,为了提高指令流水线的执行效率,通常要采用指令取消技术。

START:MOVE AS,R1 ;把源数组的起始地址送入变址寄存器R1

MOVE NUM,R2 ;把传送的数据个数送入R2 LOOP: MOVE (R1),AD-AS(R1) ;AD-AS为地址偏移量,在汇编过程中计算 INC R1 ;增量变址寄存器 DEC R2 ;剩余数据个数减1 BGT LOOP ;测试N个数据是否传送完成 HALT ;停机

NUM: N ;需要传送的数据总数

(1)如果一条指令的执行过程分解为“取指令”和“分析”两个阶段,并采用两级流水线。为了采用指令取消技术,请修改上面的程序。

(2)如果N=100,采用指令取消技术后,在程序执行过程中,能够节省多少个指令周期? (3)如果把一条指令的执行过程分解为“取指令”、“分析”(包括译码和取操作数等)和“执行”(包括运算和写回结果等)三个阶段,并采用三级流水线。仍然要采用指令取消技术,请修改上面的程序。

解:(1)START:MOVE AS,R1

MOVE NUM,R2

MOVE (R1),AD-AS(R1) LOOP:INC R1 DEC R2

BGT LOOP

MOVE (R1),AD-AS(R1) HALT NUM:N

(2)解决转移指令引起的流水线断流可插入一条无效的空操作指令(NOP)。空操作指令也要占用一个机器周期,又不执行任何实际的操作。当N=100时,则要浪费100个机器周期(50个指令周期)。采用指令取消技术后,仅在转移不成功时取消指令,浪费1个机器周期(0.5个指令周期)。因此可节省49.5个指令周期。

(3)START:MOVE AS,R1

MOVE NUM,R2

MOVE (R1),AD-AS(R1) INC R1 LOOP:DEC R2

BGT LOOP

MOVE (R1),AD-AS(R1) INC R1 HALT NUM:N

BGT LOOP

MOVE (R1),AD-AS(R1) HALT NUM:N

(2)解决转移指令引起的流水线断流可插入一条无效的空操作指令(NOP)。空操作指令也要占用一个机器周期,又不执行任何实际的操作。当N=100时,则要浪费100个机器周期(50个指令周期)。采用指令取消技术后,仅在转移不成功时取消指令,浪费1个机器周期(0.5个指令周期)。因此可节省49.5个指令周期。

(3)START:MOVE AS,R1

MOVE NUM,R2

MOVE (R1),AD-AS(R1) INC R1 LOOP:DEC R2

BGT LOOP

MOVE (R1),AD-AS(R1) INC R1 HALT NUM:N

本文来源:https://www.bwwdw.com/article/rptt.html

Top