计算机组成原理作业.docx
- 文档编号:14681892
- 上传时间:2023-06-26
- 格式:DOCX
- 页数:43
- 大小:297.11KB
计算机组成原理作业.docx
《计算机组成原理作业.docx》由会员分享,可在线阅读,更多相关《计算机组成原理作业.docx(43页珍藏版)》请在冰点文库上搜索。
计算机组成原理作业
第1章习题答案
5.若有两个基准测试程序P1和P2在机器M1和M2上运行,假定M1和M2的价格分别是5000元和8000元,下表给出了P1和P2在M1和M2上所花的时间和指令条数。
程序
M1
M2
指令条数
执行时间(ms)
指令条数
执行时间(ms)
P1
200×106
10000
150×106
5000
P2
300×103
3
420×103
6
请回答下列问题:
(1)对于P1,哪台机器的速度快?
快多少?
对于P2呢?
(2)在M1上执行P1和P2的速度分别是多少MIPS?
在M2上的执行速度又各是多少?
从执行速度来看,对于P2,哪台机器的速度快?
快多少?
(3)假定M1和M2的时钟频率各是800MHz和1.2GHz,则在M1和M2上执行P1时的平均时钟周期数CPI各是多少?
(4)如果某个用户需要大量使用程序P1,并且该用户主要关心系统的响应时间而不是吞吐率,那么,该用户需要大批购进机器时,应该选择M1还是M2?
为什么?
(提示:
从性价比上考虑)
(5)如果另一个用户也需要购进大批机器,但该用户使用P1和P2一样多,主要关心的也是响应时间,那么,应该选择M1还是M2?
为什么?
参考答案:
(1)对于P1,M2比M1快一倍;对于P2,M1比M2快一倍。
(2)对于M1,P1的速度为:
200M/10=20MIPS;P2为300k/0.003=100MIPS。
对于M2,P1的速度为:
150M/5=30MIPS;P2为420k/0.006=70MIPS。
从执行速度来看,对于P2,因为100/70=1.43倍,所以M1比M2快0.43倍。
(3)在M1上执行P1时的平均时钟周期数CPI为:
10×800M/(200×106)=40。
在M2上执行P1时的平均时钟周期数CPI为:
5×1.2G/(150×106)=40。
(4)考虑运行P1时M1和M2的性价比,因为该用户主要关心系统的响应时间,所以性价比中的性能应考虑执行时间,其性能为执行时间的倒数。
故性价比R为:
R=1/(执行时间×价格)
R越大说明性价比越高,也即,“执行时间×价格”的值越小,则性价比越高。
因为10×5000>5×8000,所以,M2的性价比高。
应选择M2。
(5)P1和P2需要同等考虑,性能有多种方式:
执行时间总和、算术平均、几何平均。
若用算术平均方式,则:
因为(10+0.003)/2×5000>(5+0.006)/2×8000,所以M2的性价比高,应选择M2。
若用几何平均方式,则:
因为sqrt(10×0.003)×5000 8.假设某机器M的时钟频率为4GHz,用户程序P在M上的指令条数为8×109,其CPI为1.25,则P在M上的执行时间是多少? 若在机器M上从程序P开始启动到执行结束所需的时间是4秒,则P占用的CPU时间的百分比是多少? 参考答案: 程序P在M上的执行时间为: 1.25×8×109×1/4G=2.5s,从启动P执行开始到执行结束的总时间为4秒,其中2.5秒是P在CPU上真正的执行时间,其他时间可能执行操作系统程序或其他用户程序。 程序P占用的CPU时间的百分比为: 2.5/4=62.5%。 10.假定机器M的时钟频率为1.2GHz,某程序P在机器M上的执行时间为12秒钟。 对P优化时,将其所有的乘4指令都换成了一条左移2位的指令,得到优化后的程序P’。 已知在M上乘法指令的CPI为5,左移指令的CPI为2,P的执行时间是P’执行时间的1.2倍,则P中有多少条乘法指令被替换成了左移指令被执行? 参考答案: 显然,P’的执行时间为10秒,因此,P比P’多花了2秒钟,因此,执行时被换成左移指令的乘法指令的条数为1.2G×2/(5–2)=800M。 第二章习题答案 3.实现下列各数的转换。 (3)(010110010110.0011)8421=(? )10=(? )2=(? )16 参考答案: (3)(010110010110.0011)8421=(596.3)10=(.011…)2=(254.4CCC…)16 4.假定机器数为8位(1位符号,7位数值),写出下列各二进制数的原码和补码表示。 +0.1001,–0.1001,+1.0,–1.0,+0.,–0.,+0,–0 参考答案: 原码补码 +0.1001: 0.0. –0.1001: 1.1. +1.0: 溢出溢出 –1.0: 溢出1. +0.: 0.0. –0.: 1.1. +0: 0.0. –0: 1.0. 5.假定机器数为8位(1位符号,7位数值),写出下列各二进制数的补码和移码表示。 +1001,–1001,+1,–1,+10100,–10100,+0,–0 参考答案: 移码补码 +1001: –1001: +1: –1: +10100: –10100: +0: –0: 7.假定一台32位字长的机器中带符号整数用补码表示,浮点数用IEEE754标准表示,寄存器R1和R2的内容分别为R1: BH,R2: BH。 不同指令对寄存器进行不同的操作,因而,不同指令执行时寄存器内容对应的真值不同。 假定执行下列运算指令时,操作数为寄存器R1和R2的内容,则R1和R2中操作数的真值分别为多少? (1)无符号数加法指令 (2)带符号整数乘法指令 (3)单精度浮点数减法指令 参考答案: R1=BH=00000000000000000001000010001011b R2=BH=10000000100000000001000010001011b (1)对于无符号数加法指令,R1和R2中是操作数的无符号数表示,因此,其真值分别为R1: 108BH,R2: BH。 (2)对于带符号整数乘法指令,R1和R2中是操作数的带符号整数补码表示,由最高位可知,R1为正数,R2为负数。 R1的真值为+108BH,R2的真值为–(01111111011111111110111101110100b+1b)=–7F7FEF75H。 (3)对于单精度浮点数减法指令,R1和R2中是操作数的IEEE754单精度浮点数表示。 在IEEE754标准中,单精度浮点数的位数为32位,其中包含1位符号位,8位阶码,23位尾数。 由R1中的内容可知,其符号位为0,表示其为正数,阶码为00000000,尾数部分为00000000001000010001011,故其为非规格化浮点数,指数为–126,尾数中没有隐藏的1,用十六进制表示尾数为+0.H,故R1表示的真值为+0.H×10-126。 由R2中的内容可知,其符号位为1,表示其为负数,阶码为00000001,尾数部分为00000000001000010001011,故其为规格化浮点数,指数为1–127=–126,尾数中有隐藏的1,用十六进制表示尾数为–1.H,故R2表示的真值为–1.H×10-126 9.以下是一个C语言程序,用来计算一个数组a中每个元素的和。 当参数len为0时,返回值应该是0,但是在机器上执行时,却发生了存储器访问异常。 请问这是什么原因造成的,并说明程序应该如何修改。 1floatsum_elements(floata[],unsignedlen) 2{ 3inti; 4floatresult=0; 5 6for(i=0;i<=len–1;i++) 7result+=a[i]; 8returnresult; 9} 参考答案: 参数len的类型是unsigned,所以,当len=0时,执行len-1的结果为11…1,是最大可表示的无符号数,因而,任何无符号数都比它小,使得循环体被不断执行,引起数组元素的访问越界,发生存储器访问异常。 只要将len声明为int型,或循环的测试条件改为i 13.设一个变量的值为4098,要求分别用32位补码整数和IEEE754单精度浮点格式表示该变量(结果用十六进制表示),并说明哪段二进制序列在两种表示中完全相同,为什么会相同? 参考答案: 4098=+1000000000010B=+1.00000000001×212 32位2-补码形式为: 00000000000000000001000000000010(H) IEEE754单精度格式为: 000000000001000000000000(H) 粗体部分为除隐藏位外的有效数字,因此,在两种表示中是相同的序列。 17.假定在一个程序中定义了变量x、y和i,其中,x和y是float型变量(用IEEE754单精度浮点数表示),i是16位short型变量(用补码表示)。 程序执行到某一时刻,x=–0.125、y=7.5、i=100,它们都被写到了主存(按字节编址),其地址分别是100,108和112。 请分别画出在大端机器和小端机器上变量x、y和i在内存的存放位置。 参考答案: –0.125=–0.001B=–1.0×2-3 x在机器内部的机器数为: 100…0(BE000000H) 7.5=+111.1B=+1.111×22 y在机器内部的机器数为: 011100…0(40F00000H) 100=64+32+4=B i在机器内部表示的机器数为: 0000000001100100(0064H) 大端机小端机 地址内容内容 100BEH00H 10100H00H 10200H00H 10300HBEH 10840H00H 109F0H00H 11000HF0H 11100H40H 11200H64H 11364H00H 18.假定某计算机的总线采用奇校验,每8位数据有一位校验位,若在32位数据线上传输的信息是8F3CAB96H,则对应的4个校验位应为什么? 若接受方收到的数据信息和校验位分别为873CAB96H和0101B,则说明发生了什么情况,并给出验证过程。 参考答案: 传输信息8F3CAB96H展开为10001111001111001010101110010110,每8位有一个奇校验位,因此,总线上发送方送出的4个校验位应该分别为0、1、0、1。 接受方的数据信息为873CAB96H,展开后为10000111001111001010101110010110;接收到的校验位分别为0、1、0、1。 在接受方进行校验判断如下: 根据接收到的数据信息计算出4个奇校验位分别为1、1、0、1,将该4位校验位分别和接收到的4位校验位进行异或,得到1、0、0、0,说明数据信息的第一个字节发生传输错误。 对照传输前、后的数据信息,第一字节8FH变成了87H,说明确实发生了传输错误,验证正确。 第3章习题答案 3.考虑以下C语言程序代码: intfunc1(unsignedword) { return(int)((word<<24)>>24); } intfunc2(unsignedword) { return((int)word<<24)>>24; } 假设在一个32位机器上执行这些函数,该机器使用二进制补码表示带符号整数。 无符号数采用逻辑移位,带符号整数采用算术移位。 请填写下表,并说明函数func1和func2的功能。 W func1(w) func2(w) 机器数 值 机器数 值 机器数 值 0000007FH 127 0000007FH +127 0000007FH +127 00000080H 128 00000080H +128 FFFFFF80H –128 000000FFH 255 000000FFH +255 FFFFFFFFH –1 00000100H 256 00000000H 0 00000000H 0 函数func1的功能是把无符号数高24位清零(左移24位再逻辑右移24位),结果一定是正的有符号数;而函数func2的功能是把无符号数的高24位都变成和第25位一样,因为左移24位后进行算术右移,高24位补符号位(即第25位)。 5.以下是两段C语言代码,函数arith()是直接用C语言写的,而optarith()是对arith()函数以某个确定的M和N编译生成的机器代码反编译生成的。 根据optarith(),可以推断函数arith()中M和N的值各是多少? #defineM #defineN intarith(intx,inty) { intresult=0; result=x*M+y/N; returnresult; } intoptarith(intx,inty) { intt=x; x<<=4; x-=t; if(y<0)y+=3; y>>2; returnx+y; 参考答案: 可以看出x*M和“intt=x;x<<=4;x-=t;”三句对应,这些语句实现了x乘15的功能(左移4位相当于乘以16,然后再减1),因此,M等于15; y/N与“if(y<0)y+=3;y>>2;”两句对应,功能主要由第二句“y右移2位”实现,它实现了y除以4的功能,因此N是4。 而第一句“if(y<0)y+=3;”主要用于对y=–1时进行调整,若不调整,则–1>>2=–1而–1/4=0,两者不等;调整后–1+3=2,2>>2=0,两者相等。 7.用SN74181和SN74182器件设计一个16位先行进位补码加/减运算器,画出运算器的逻辑框图,并给出零标志、进位标志、溢出标志、符号标志的生成电路。 参考答案(图略): 逻辑框图参见教材中的图3.15和图3.16,将两个图结合起来即可,也即只要将图3.15中的B输入端的每一位Bi取反,得到Bi,和原码Bi一起送到一个二路选择器,由进位C0作为选择控制信号。 当C0为1时做减法,此时,选择将Bi作为SN74181的B输入端;否则,当C0为1时,做加法。 零标志ZF、进位标志CF、溢出标志OF、符号标志SF的逻辑电路根据以下逻辑表达式画出即可。 ZF=F15+F14+F13+F12+F11+F10+F9+F8+F7+F6+F5+F4+F3+F2+F1+F0 CF=C16 OF=C0(A15B15F15+A15B15F15)+C0(A15B15F15+A15B15F15) SF=F15 9.已知x=10,y=–6,采用6位机器数表示。 请按如下要求计算,并把结果还原成真值。 (1)求[x+y]补,[x–y]补。 (2)用原码一位乘法计算[x×y]原。 (4)用不恢复余数法计算[x/y]原的商和余数。 参考答案: [10]补=[–6]补= [6]补=[10]原=[–6]原= (1)[10+(–6)]补=[10]补+[–6]补=+=(+4) [10–(–6)]补=[10]补+[–(–6)]补=+=(+16) (2)先采用无符号数乘法计算×的乘积,原码一位乘法过程(前面两个0省略)如下: CPY说明 000000110P0=0 +0000y4=0,+0 00000C,P和Y同时右移一位 000000011得P1 +1010y3=1,+X 01010C,P和Y同时右移一位 001010001得P2 +1010y2=1,+X 011110000C,P和Y同时右移一位 001111000得P3 +0000y1=0,+0 00111C,P和Y同时右移一位 000111100得P4 若两个6位数相乘的话,则还要右移两次,得 符号位为: 0⊕1=1,因此,[X×Y]原=100000111100 即X×Y=–111100B=–60 (4)因为除法计算是2n位数除n位数,所以[6]原=0110,[10]原=00001010,[–6]补=1010, 商的符号位: 0⊕1=1,运算过程(前面两个0省略)如下: 余数寄存器R余数/商寄存器Q说明 00001010开始R0=X +1010R1=X–Y 101010100R1<0,则q4=0,没有溢出 010101002R1(R和Q同时左移,空出一位商) +0110R2=2R1+Y 101101000R2<0,则q3=0 011010002R2(R和Q同时左移,空出一位商) +0110R3=2R2+Y 110010000R3<0,则q2=0 100100002R3(R和Q同时左移,空出一位商) +0110R3=2R2+Y 111100000R4<0,则q1=0 111000002R4(R和Q同时左移,空出一位商) +0110R5=2R4+Y 010000001R5>0,则q0=1 商的数值部分为: 00001。 所以,[X/Y]原=00001(最高位为符号位),余数为0100。 13.假设浮点数格式为: 阶码是4位移码,偏置常数为8,尾数是6位补码(采用双符号位),用浮点运算规则分别计算在不采用任何附加位和采用2位附加位(保护位、舍入位)两种情况下的值。 (假定对阶和右规时采用就近舍入到偶数方式) (1)(15/16)×27+(2/16)×25 (2)(15/16)×27–(2/16)×25 参考答案(假定采用隐藏位): X=(15/16)×27=0.B×27=(1.)2×26 Y1=(2/16)×25=0.B×25=(1.)2×22 Y2=(–2/16)×25=–0.B×25=(–1.)2×22 K=(15/16)×25=0.B×25=(1.)2×24 J1=(2/16)×27=0.B×27=(1.)2×24 J2=(–2/16)×27=–0.B×27=(–1.)2×24 根据题目所给的各种位数,可以得到在机器中表示为: [X]浮=001110 (1)[Y1]浮=001010 (1)[Y2]浮=111010 (1) [K]浮=001100 (1)[J1]浮=001100 (1)[J2]浮=111100 (1) 所以,Ex=1110,Mx=00 (1).,Ey1=1010,My=00 (1).,Ey2=1010,My=11 (1). Ek=1100,MK=00 (1).,EJ1=1100,MJ1=00 (1).,EJ2=1100,MJ2=11 (1). 尾数M中小数点前面有三位,前两位为数符,表示双符号,第三位加了括号,是隐藏位“1”。 没有附加位时的计算: (1)X+Y1 [ΔE]补=[Ex]移+[–[Ey1]移]补(mod2n)=1110+0110=0100 ΔE=4,根据对阶规则可知需要对y1进行对阶,结果为: Ey1=Ex=1110,My1=000. 尾数相加: Mb=Mx+My1=001.+000.=001.,两位符号相等,数值部分最高位为1,不需要进行规格化,所以最后结果为: E=1110,M=00 (1).,即(31/32)×27 (2)X+Y2 [ΔE]补=[Ex]移+[–[Ey2]移]补(mod2n)=1110+0110=0100; ΔE=4,根据对阶规则可知需要对y2进行对阶,结果为: Ey2=Ex=1110,My2=111. 尾数相加: Mb=Mx+My2=001.+111.=001.,两位符号相等,数值部分最高为1,不需要进行规格化,所以最后结果为: E=1110,M=00 (1).,即(29/32)×27 14.采用IEEE754单精度浮点数格式计算下列表达式的值。 (1)0.75+(–65.25) (2)0.75–(–65.25) 参考答案: x=0.75=0.110...0B=(1.10...0)2×2-1 y=–65.25=–.01000...0B=(–1....0)2×26 用IEEE754标准单精度格式表示为: [x]浮=010...0[y]浮=1...0 所以,Ex=,Mx=0 (1).1...0,Ey=,My=1 (1)....0 尾数Mx和My中小数点前面有两位,第一位为数符,第二位加了括号,是隐藏位“1”。 以下是计算机中进行浮点数加减运算的过程(假定保留2位附加位: 保护位和舍入位) (1)0.75+(–65.25) 对阶: [ΔE]补=[Ex]移+[–[Ey]移]补(mod2n)=01111110+01111011=11111001 ΔE=–7,根据对阶规则可知需要对x进行对阶,结果为: Ex=Ey=,Mx=00....000 x的尾数Mx右移7位,符号不变,数值高位补0,隐藏位右移到小数点后面,最后移
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 组成 原理 作业