计算机体系结构第四章练习题参考解答第 四 章4.52 浮点数系统使用的阶码基值r e =2,阶值位数q=2,尾数基值r m =10,尾数位数p ′=1,即按照使用的二进制位数来说,等价于p=4。
计算在非负阶、正尾数、规格化情况下的最小尾数值、最大尾数值、最大阶值、可表示的最小值和最大值及可表示数的个数。
解: 最小尾数值:r m -1 = 10-1 = 0.1最大尾数值:1- r m -p ′ =1-10-1 = 0.9 最大阶值:2q -1=3可表示数的最小值:1×r m -1 = 10-1 = 0.1可表示数的最大值:r m 2q-1×(1- r m -p ′)=103(1-10-1)= 900可表示数的个数:2q ×r m p ′(r m -1)/r m = 22×101(10-1)/10 = 364.53 一台机器要求浮点数的字长的精度不低于10-7.2,表数的范围正数不小于1038,且正负对称。
尾数用原码、纯小数表示,阶码用移码、整数表示。
设计这种浮点数的格式。
解 依题意,取表数范围N =1038,表数精度δ=10-7.2。
由式(4-4)得:37log(log10log 21)log 2q +> = 6.99,上取整,得到阶码字长q=7。
由式(4-5)得:16log1053.2log 2p -->=,上取整,得到尾数字长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 树,如图所示,相应的Huffman 编码如表所示。
l=∑=ni i p 1×l i = 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×1079 84.60 一台模型机共有7条指令,各指令的使用频度分别为:35%,25%,20%,10%,5%,3%,2%,有8个通用数据寄存器,2个变址寄存器。
(1)要求操作码的平均长度最短,请设计操作码的编码,并计算操作码编码的平均长度。
(2)设计8位字长的寄存器—寄存器型指令3条,16位字长的寄存器一存储器型变址寻址方式指令4条,变址范围不小于正、负127。
请设计指令格式,并给出指令各字段的长度和操作码的编码。
解:(1)∵操作码编码的平均长度最短为Huffman 编码,生成的Huffman 树如图所示,相应的Huffman 编码如表所示。
l=∑ni p ×l i = 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%要求有两种指令字长,都按双操作数指令格式编排,采用扩展操作码,并限制只能有两种操作码码长。
设该机有若干通用寄存器,主存为16位宽,按字节编址,采用按整数边界存储,任何指令都在一个主存周期中取得,短指令为寄存器--寄存器型,长指令为寄存器--主存型,主存地址应能变址寻址。
(1)仅根据使用频度,不考虑其它要求,设计出全Huffman 操作码,计算其平均码长;(2)考虑题目全部要求,设计优化实用的操作码形式,并计算其操作码的平均码长; (3)该机允许使用多少可编址的通用寄存器?(4)画出该机两种指令字格式,标出各字段之位数;(5)指出访存操作数地址寻址的最大相对位移量为多少个字节?解:(1)根据给出的使用频度,在构造Huffman 树的过程中,有两个结点可供合并,因此可生成不同的Huffman 树,其中给出一棵如图所示,相应的Huffman 编码如表所示。
∴ Huffman 编码的平均长度为:l=∑=ni i p 1×l il=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(位)STP SHR(2)任何指令都在一个主存周期中取得,那么短指令字长为8位,长指令字长为16位。
又指令都是二地址指令,所以短指令寄存器--寄存器型的格式为: 长指令为寄存器--主存型的格式为: 由题意可知:指令操作码采用扩展编码,且只能有两种码长。
从指令使用频度来看,ADD 、SUB 和CLA 三条指令的使用频度与其它指令的使用频度相差较大,所以用两位操作码的三个码点来表示三条指令,一个码点作为扩展码点,且扩展三位来表示六条指令,即采用2--4扩展编码构成3/6编码,2--4扩展编码如表所示。
∴ 2--4扩展编码(3/6)的平均长度为:l=∑=ni i p 1×l i =2.78(3)(4)由短指令寄存器--寄存器型的格式可知,寄存器号字段长度为3位,寄存器个数为8个。
则各字段长度如图格式所标识。
而对于长指令寄存器--主存型,一般变址寄存器是某通用寄存器,则变址寄存器号的字段长度为3位,则各字段长度如图格式所标识。
(5)由于相对位移字段长度为5位,因此访存地址寻址的最大相对位移量为25=32字节。
4.79 下面是一段数据块搬家程序。
在RISC 处理机中,为了提高指令流水线的执行效率,通常要采用指令取消技术。
START :MOVE AS ,R1 ;把源数组的起始地址送入变址寄存器R1MOVE NUM ,R2 ;把传送的数据个数送入R2LOOP : 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,R1MOVE NUM,R2MOVE (R1),AD-AS(R1)LOOP:INC R1DEC R2BGT LOOPMOVE (R1),AD-AS(R1)HALTNUM:N(2)解决转移指令引起的流水线断流可插入一条无效的空操作指令(NOP)。
空操作指令也要占用一个机器周期,又不执行任何实际的操作。
当N=100时,则要浪费100个机器周期(50个指令周期)。
采用指令取消技术后,仅在转移不成功时取消指令,浪费1个机器周期(0.5个指令周期)。
因此可节省49.5个指令周期。
(3)START:MOVE AS,R1MOVE NUM,R2MOVE (R1),AD-AS(R1)INC R1LOOP:DEC R2BGT LOOPMOVE (R1),AD-AS(R1)INC R1HALTNUM:N。