资源描述
第2章 课后习题
窗体顶端
1、尾数用补码、小数表达,阶码用移码、整数表达,尾数字长p=6(不涉及符号位),阶码字长q=6(不涉及符号位),为数基值rm=16,阶码基值re=2。对于规格化浮点数,用十进制表达式写出如下数据(对于前11项,还要写出16进值编码)。
(1)最大尾数 (8)最小正数
(2)最小正尾数 (9)最大负数
(3)最小尾数 (10)最小负数
(4)最大负尾数 (11)浮点零
(5)最大阶码 (12)表数精度
(6)最小阶码 (13)表数效率
(7)最大正数 (14)能表达规格化浮点数个数
2.一台计算机系统规定浮点数精度不低于10-7.2,表数范畴正数不不大于1038,且正、负数对称。尾数用原码、纯小数表达,阶码用移码、整数表达。
(1) 设计这种浮点数格式
(2) 计算(1)所设计浮点数格式事实上可以表达最大正数、最大负数、表数精度和表数效率。
3.某解决机规定浮点数在正数区积累误差不不不大于2-p-1 ,其中,p是浮点数尾数长度。
(1) 选取适当舍入办法。
(2) 拟定警戒位位数。
(3) 计算在正数区误差范畴。
4.假设有A和B两种不同类型解决机,A解决机中数据不带标志符,其指令字长和数据字长均为32位。B解决机数据带有标志符,每个数据字长增长至36位,其中有4位是标志符,它指令数由最多256条减少到不到64条。如果每执行一条指令平均要访问两个操作数,每个存储在存储器中操作数平均要被访问8次。对于一种由1000条指令构成程序,分别计算这个程序在A解决机和B解决机中所占用存储空间大小(涉及指令和数据),从中得到什么启发?
5.一台模型机共有7条指令,各指令使用频率分别为35%,25%,20%,10%,5%,3%和2%,有8个通用数据寄存器,2个变址寄存器。
(1) 规定操作码平均长度最短,请设计操作码编码,并计算所设计操作码平均长度。
(2) 设计8字长寄存器-寄存器型指令3条,16位字长寄存器-存储器型变址寻址方式指令4条,变址范畴不不大于±127。请设计指令格式,并给出各字段长度和操作码编码。
6.某解决机指令字长为16位,有双地址指令、单地址指令和零地址指令3类,并假设每个地址字段长度均为6位。
(1) 如果双地址指令有15条,单地址指令和零地址指令条数基本相似,问单地址指令和零地址指令各有多少条?并且为这3类指令分派操作码。
(2) 如果规定3类指令比例大体为1:9:9,问双地址指令、单地址指令和零地址指令各有多少条?并且为这3类指令分派操作码。
7.别用变址寻址方式和间接寻址方式编写一种程序,求C=A+B,其中,A与B都是由n个元素构成一维数组。比较两个程序,并回答下列问题:
(1) 从程序复杂限度看,哪一种寻址方式更好?
(2) 从硬件实当代价看,哪一种寻址方式比较容易实现?
(3) 从对向量运算支持看,哪一种寻址方式更好?
8.假设X解决机数据不带标志符,其指令字长和数据字长均为32位。Y解决机数据带有标志符,每个数据字长增长至35位,其中有3位是标志符,其指令字长由32位减少至30位。并假设一条指令平均访问两个操作数,每个操作数平均被访问R次。既有一种程序,它指令条数为I,分别计算在这两种不同类型解决机中程序所占用存储空间,并加以比较。
9.一种浮点数表达方式精度不低于10-19,能表达最大正数不不大于104000,并且正负数对称。尾数用原码、小数表达,阶码用移码、整数表达,尾数和阶码基值都是2。
(1)设计这种浮点数格式,给出各字段名称和长度。
(2)计算(1)所设计浮点数格式可以表达最大正数、最大负数和表达数精度。
(3)如果在运算器中没有设立硬件警戒位,则这种浮点数也许采用了哪一种舍入办法?给出这种舍入办法舍入规则,在正数区误差范畴和积累误差。
10.有研究人员指出,如果在采用通用寄存器构造计算机里加入寄存器-存储器寻址方式也许提高计算机效率。做法是用:
ADD R2,0(Rb)
代替指令序列
LOAD R1,0(Rb)
ADD R2,R2,R1
假定使用新指令能使时钟周期增长10%,并且假定只对时钟产生影响,而不影响CPI那么:
(1) 采用新指令,要达到与本来同样性能需要去掉load操作所占比例?(假定load指令占总指令22.8%)
(2) 举出一种多指令序列,该序列不能使用上述寄存器-存储器寻址方式。虽然得load R1背面紧接着执行对R1操作(该操作可以是任意某一操作码),但这一指令序列不能被一条指令(假定存在这条指令)代替。
11.试比较下面4种不同类型指令构造存储效率:
(1) 累加型:所有操作都在单个寄存器和单个内存地址之间进行
(2) 存储器-存储器型:每个指令3个操作数都在内存中进行
(3) 堆栈型:所有操作都在栈顶进行。只有push和pop操作会访问内存,其他指令执行时都会删除栈中操作数,然后写入执行成果。
(4) 通用寄存器型:所有操作都在寄存器中进行。这些寄存器-寄存器指令中每个指令都包括3个操作数。通用寄存器一共有16个,寄存器标志符占4位长。
为比较存储效率,咱们对以上4种指令集作了如下商定:
操作码占一种字节(8位)
内存地址占2个字节(16位)
操作数占4字节(32位)
所有指令长度都以整数个字节计算
此外,还假定访问内存不使用其他优化办法,变量A、B、C和D初值都已经放在内存中。
针对以上4种不同指令系统,回答下列问题:
(1) 分别用汇编指令写出下面3个赋值语句:
A = B + C;
B = A + C;
D = A – B;
(2) 分别计算所执行指令字节数和转移内存数据字节数,并指出如果依照代码大小来计算话,哪种构造效率是最高?如果按需要总内存带宽(代码+数据)来计算,又是哪种构造效率最高?
12.考虑为DLX构造计算机增长一种新寻址模式。虽然得地址模式增长两个寄存器和一种11位长带符号偏移量来得到有效地址。这样,编译器就会用新寻址模式来代替
ADD R1,R1,R2
LW Rd,0(R1) (或是Store指令)
如果已知在DLX构造计算机上对测得某些程序load和store指令分别平均占26%和9%,在此基本上,计算:
(1) 假定10%load和store指令可以用新寻址模式代替,那么采用新寻址模式后指令计数与采用前之比为多少?
(2) 如果新寻址模式使得时钟周期增长5%,那么采用了新寻址模式机器和未采用新寻址模式机器相比,哪种机器会更快某些,快多少?
窗体底端
1、解答:
在尾数采用补码、小数表达且p=6,阶码采用移码、整数表达且q=6,尾数基rm为16,阶码基re为2状况下:
(1) 最大尾数为:1-rm-p=1-16-6,0.FFFFFF
(2) 最小正尾数为:1/rm=1/16,0.100000
(3) 最小尾数为: -1, 1.000000
(4) 最大负尾数为:-(rm-1 + rm-p)=(16-1 + 16-6),1.EFFFFF
(5) 最大阶码为:req-1=26-1=63,7F,涉及符号位共7个1
(6) 最小阶码为:-req=-26=-64,00,涉及符号位共7个0
(7) 最大正数为:(1-16-6)1663,7FFFFFFF
(8) 最小正数为:16-65,00100000
(9) 最大负数为:-(16-1 + 16-6) 16-64,80EFFFFF
(10) 最小负数为:-1663,FF000000
(11) 浮点零为:00000000
(12) 表数精度为:16-5/2=2-21
(13) 表数效率为:15/16=93.75%
(14) 能表达规格化浮点数个数为:2×15×165×27+1
2、解答:
(1)取尾数和阶码基都为2,即:rm=2 且 re=2
依照表达数精度规定:
于是可以取p=24;
依照表达数范畴规定:
即
因而可以取q=7
数据格式可以表达如下(尾数采用隐藏位):
1位
1位
7位
23位
符号
阶符
阶码
尾数
(2)可以表达最大正数:(1-2-24)2127,
可以表达最大负数:-2-129,
表达数精度:2-24,
表数效率:100%。
3、解答:
(1) 舍入办法:下舍上入法、查表法
(2) 警戒位位数:2位
(3) 正数区误差范畴:-2-p-1(1-2-g+1) ~ 2-p-1
4、解答:
咱们可以计算出数据大体数量:
1000条指令访问数据总数为1000*2=个;
每个数据平均访问8次,因此,不同数据个数为:÷8=250个
对于A解决机,所用存储空间大小为:
Mem_size = Meminstruction+Memdata = 1000×32+250×32=40000bit
对于B解决机,指令字长由32位变为了30位(条数由256减少到64),这样,所用存储空间大小为:
Mem_size = Meminstruction+Memdata = 1000×32+250×36=39000bit
由此咱们可以看出,由于数据平均访问次数要不不大于指令,因此,通过改进数据格式来减少指令长度,可以减少总存储空间大小。
5、解答:
(1) 要使得到操作码长度最短,应采用Huffman编码,构造Huffman树如下:
由此可以得到7条指令编码分别如下:
这样,采用Huffman编码法得到操作码平均长度为:
H = 2×(0.35+0.25+0.20) + 3×0.10 + 4 ×0.05 + 5×(0.03 + 0.02)
= 1.6+0.3+0.2+0.25
=2.35
(2) 设计8位字长寄存器-寄存器型变址寻址方式指令如下:
由于只有8个通用寄存器,因此寄存器地址需3位,操作码只有两位,设计格式如下:
2位
2位
3位
操作码OP
源寄存器R1
目寄存器R2
3条指令操作码分别为00,01,10
设计16位字长寄存器-存储器型变址寻址方式指令如下:
4位
3位
1位
8位
操作码OP
通用寄存器
变址寄存器
偏移地址
4条指令操作码分别为1100, 1101,1110,1111
6、解答:
(1) 一方面,可以依照指令地址数量来决定各种指令在指令空间上分布:
如果按照从小到大顺序分派操作码,并且按照指令数值从小到大顺序,分别为双地址指令、单地址指令和零地址指令。
另一方面可以依照指令条数来大体预计操作码长度:
双指令15条,需要4位指令来区别,剩余12位指令平均分给单地址和零地址指令,每种指令可以用6位指令来区别,这样,各指令条数为:
双地址指令15条,地址码:0000~1110;
单地址指令26-1=63条,地址码:1111 000000~1111 111110;
零地址指令64条,地址码:1111 111111 000000~1111 111111 111111。
(2) 与上面分析相似,可以得出答案:
双地址指令14条,地址码:0000~1101;
单地址指令26*2-2 = 126条,1110 000000~1110 111110,1111 000000~1111 111110;
零地址指令128条1110 111111.000000~1110 111111.111111,1111
7、解答:
(1) 变址寻址方式
(2) 间接寻址方式
(3) 变址寻址方式
8、解答:
X解决机程序占用存储空间总和为: ,
Y解决机程序占用存储空间总和为: ,
Y解决机与X解决机程序占用存储空间比值:
当R>3时,有 ,即对于同样程序,在Y解决机中所占用存储空间比在X解决机中所占用存储空间要小。在实际应用中经常是R>10,因此带标志符解决机所占用存储空间普通要小。
9、解答:
(1)依照表达数精度规定:
依照表达数范畴规定:
取p=64,q=14
1位
1位
14位
64位
符号
阶符
阶码
尾数
(2)可以表达最大正数:(1-2-64)216383,
可以表达最大负数:-2-16385,
表达数精度:2-64。
(3)采用舍入办法为恒置法,
舍入规则:在规格化之后,尾数最低位置为1,
在正数区误差范畴:-2-64(1-2-g)~+2-64,
在正数区积累误差:+2-64。
10、解答:
(1) 计算CPU时间为:
对本来指令:
对修改后指令序列:
在等式(2)中,CPI new = CPI old, ,R为新指令设计方案中比本来方案中减少指令数。
要使去掉某些load操作,使得修改指令后性能和本来性能相似,必要满足:
又已知load指令占总指令22.8%
即要达到本来性能,39.5%load指令必要去掉。
((2) 给出下面两条指令:
ld r1,0(r1)
add r1,r1,r1
在上面指令中,咱们将题目中寄存器r2和rb用寄存器r1来代替。如果假定r1值为47,指令执行前内存中地址为47位置存储了整数4,那么上面指令序列执行后r1存储值将变为8。
然而,如果咱们使用了寄存器-存储器模式后,上面指令序列成为:
add r1,0(r1)
假设寄存器和内存初值相似话,指令执行结束后,寄存器值将变为51(r1+MEM[0+r1]即47+4)。因此,在这种状况下,不能做指令替代。
11、解答:
一台采用累加型指令集构造计算机实现程序段如下:
在上面代码中,loada,storea和adda每个都是24位长(操作码8位,操作数地址16位),negatea指令只需8位,因此整个代码一共需要22个字节。对存取数据操作来说,每条指令访问操作数值需要访问4字节数据,因此,整个程序需要在内存和CPU之间转移28字节数据。
一台采用存储器-存储器型指令集构造计算机实现程序段如下:
在上面代码中,每个指令为56位长(操作码8位,3个操作数48位),这样程序需要21个字节。对存取数据操作来说,每条指令执行3个各访问4字节数据操作,这样,整个程序在内存和CPU之间共转移36字节数据。
一台采用堆栈型指令集构造计算机实现程序段如下:
上面代码中,每条load和store指令都为28位长(操作码8位,地址16位,寄存器4位),每条add和sub指令都为20位长(操作码8位,3个寄存器12位),因此整个代码一共需要29个字节存储。对存取数据操作来说,每条load和store指令访问操作数值需要访问4字节数据,因此整个程序在内存和CPU之间共转移20字节数据。
依照上面讨论,可以得到如下表格:
由上图咱们可以看出采用不同构造指令带宽和数据带宽之间关系。其中采用存储器-存储器型指令集构造指令带宽较小,但数据带宽较大,而采用通用寄存器指令集构造正好相反。
依照写出代码,从总指令和数据带宽角度来看,采用通用寄存器指令集构造计算机是效率最高,另一方面是采用累加型指令集构造计算机。
12、解答:
(1) 设IC为指令条数,ICclassic和IC new分别表达未采用新寻址模式和采用新寻址模式所执行指令数。
(2) 为比较哪一种机器更快某些,需要考虑CPU时间。计算CPU时间公式为:
由(1)可知,采用新寻址模式机器执行指令数占未采用新寻址模式机器执行指令数96.5%,又由于要支持新寻址模式,时钟周期增长5%
由此咱们可以看出,尽管未采用新寻址模式机器比采用新寻址模式机器执行指令数多,但由于时钟周期影响,采用了新寻址模式机器比未采用机器事实上慢了1-98.7%=1.3%。
展开阅读全文