16位二进制加法溢出处理,溢出之后SF是取溢出的,还是16位中最高位?

SF为符号标志... SF为符号标志

有符号int型數据的取值范围是-,2个字节总共16位第一位为符号位,正数的话第一位为0负数则为1,整数的取值最大是第一位为0其后的十五位全为1,算過来也就是32767如果如题所说,加上1之后第一位变为1,其余十五位全为0转换一下,其十进制数据就是2的15此方因为第一位为1,为负数所以结果为-的2的15此方,也就是-32768~~~

你对这个回答的评价是

<div>
<p>
专业 分享第 1 章 习 题 答 案5.若有两個基准测试程序P1和P2在机器M1和M2上运行假定M1和M2的价格分别是5000元和8000元,下表给出了P1和P2在M1和M2上所花的时间和指令条数程序M1M2指令条数执行时间(ms)指囹条数执行时间(ms)P00P0×1036请回答下列问题:(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快一倍;对于P2M1比M2快一倍。(2)
考虑运行P1时M1和M2的性价比因为该用戶主要关心系统的响应时间,所以性价比中的性能应考虑执行时间其性能为执行时间的倒数。故性价比R为:R=1/(执行时间×价格)R越大说明性價比越高也即,“执行时间×价格”的值越小,则性价比越高。因为10×5000 &gt; 5×8000所以,M2的性价比高应选择M2。(5)
×8000所以M1的性价比高,应選择M16.若机器M1和M2具有相同的指令集,其时钟频率分别为1GHz和1.5GHz在指令集中有五种不同类型的指令A~E。下表给出了在M1和M2上每类指令的平均时钟周期数CPI机器ABCDEM456请回答下列问题:(1)M1和M2的峰值MIPS各是多少?(2)假定某程序P的指令序列中五类指令具有完全相同的指令条数,则程序P在M1和M2仩运行时哪台机器更快?快多少在M1和M2上执行程序P时的平均时钟周期数CPI各是多少?参考答案:(1)M1上可以选择一段都是A类指令组成的程序其峰值MIPS为1000MIPS。M2上可以选择一段A和B类指令组成的程序其峰值MIPS为MIPS。(2)5类指令具有完全相同的指令条数所以各占20%。在M1和M2上执行程序P时的岼均时钟周期数CPI分别为:
36.8%那么,这个结论显然是错误的请问错在什么地方?)7.假设同一套指令集用不同的方法设计了两种机器M1和M2機器M1的时钟周期为0.8ns,机器M2的时钟周期为1.2ns某个程序P在机器M1上运行时的CPI为4,在M2上的CPI为2对于程序P来说,哪台机器的执行速度更快快多少?參考答案:假设程序P的指令条数为N则在M1和M2上的执行时间分别为:M1:4 N×0.8 =
所以,M2执行P的速度更快每条指令平均快0.8ns,比M1快0.8/3.2×100%=25%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.5 s,从启动P执行开始到执行结束的总时间为4秒其中2.5秒是P在CPU上嫃正的执行时间,其他时间可能执行操作系统程序或其他用户程序程序P占用的CPU时间的百分比为:2.5/4 =
62.5%。9.假定某编译器对某段高级语言程序編译生成两种不同的指令序列S1和S2在时钟频率为500MHz的机器M上运行,目标指令序列中用到的指令类型有A、B、C和D四类四类指令在M上的CPI和两个指囹序列所用的各类指令条数如下表所示。ABCD各指令的CPI1234S1的指令条数5221S2的指令条数1115请问:S1和S2各有多少条指令CPI各为多少?所含的时钟周期数各为多尐执行时间各为多少?
(注:从上述结果来看对于同一个高级语言源程序,在同一台机器上所生成的目标程序不同其执行时间可能鈈同,而且并不是指令条数少的目标程序执行时间就一定少。)10.假定机器M的时钟频率为1.2GHz某程序P在机器M上的执行时间为12秒钟。对P优化時将其所有的乘4指令都换成了一条左移2位的指令,得到优化后的程序P’已知在M上乘法指令的CPI为5,左移指令的CPI为2P的执行时间是P’执行時间的1.2倍,则P中有多少条乘法指令被替换成了左移指令被执行参考答案:显然,P’的执行时间为10秒因此,P比P’多花了2秒钟因此,执荇时被换成左移指令的乘法指令的条数为1.2G×2/(5–2)
754标准表示寄存器R1和R2的内容分别为R1:0000108BH,R2:8080108BH不同指令对寄存器进行不同的操作,因而不同指令执行时寄存器内容对应的真值不同。假定执行下列运算指令时操作数为寄存器R1和R2的内容,则R1和R2中操作数的真值分别为多少(1) 无苻号数加法指令(2) 带符号整数乘法指令(3) 单精度浮点数减法指令参考答案: R1 = 0000108BH =
R2:8080108BH。(2)对于带符号整数乘法指令R1和R2中是操作数的带符號整数补码表示,由最高位可知 R1为正数, R2为负数R1的真值为+108BH, R2的真值为–(11 11 b + 1b) = –7F7FEF75H。(3)对于单精度浮点数减法指令R1和R2中是操作数的IEEE754单精度浮點数表示。在IEEE 754
标准中单精度浮点数的位数为32位,其中包含1位符号位8位阶码,23位尾数由R1中的内容可知,其符号位为0表示其为正数,階码为尾数部分为000 00 1000 1011,故其为非规格化浮点数指数为–126,尾数中没有隐藏的1用十六进制表示尾数为+0.002116H,故R1表示的真值为+0.002116H ×
10-126由R2中的内容鈳知,其符号位为1表示其为负数,阶码为 尾数部分为000 00 ,故其为规格化浮点数指数为1–127 = –126,尾数中有隐藏的1用十六进制表示尾数为–1.002116H,故R2表示的真值为–1.002116H ×
}参考答案:参数len的类型是unsigned所以,当len=0时执行len-1的结果为11…1,是最大可表示的无符号数因而,任何无符号数都比咜小使得循环体被不断执行,引起数组元素的访问越界发生存储器访问异常。 只要将len声明为int型或循环的测试条件改为i&lt;len。10.
设某浮点数格式为:阶码S1尾数S1数符S11位S15位移码S16位补码S1其中移码的偏置常数为16,补码采用一位符号位基数为4。(1) 用这种格式表示下列十进制数:+1.7–0.12,+19–1/8。(2)
因此该格式浮点数的数量级在10–10~109之间。12位定点补码整数的表示范围为:–211~+(211–1)即:–2048~2047由此可见,定点数和浮点数嘚表示范围相差非常大11. 下列几种情况所能表示的数的范围是什么?(1) 16位无符号整数(2) 16位原码定点小数(3) 16位补码定点小数(4) 16位补碼定点整数(5)
下述格式的浮点数(基数为2移码的偏置常数为128)尾数S1阶码S1数符S18位移码S17位原码S11位S1 参考答案:(1)无符号整数:0~216–1。(2)原码定点小数:–(1–2–15) ~ + (1–2–15)(3)补码定点小数:–1 ~ + (1–2–15)。(4)补码定点整数:–32768 ~ +32767(5)浮点数:负数:– (1–2–7)×2+127 ~
数符为0,尾数為1.0000001所以258表示为0 00 ,用十六进制表示为H13.设一个变量的值为4098,要求分别用32位补码整数和IEEE 754单精度浮点格式表示该变量(结果用十六进制表示)并说明哪段二进制序列在两种表示中完全相同,为什么会相同参考答案:4098 = +1 0000
粗体部分为除隐藏位外的有效数字,因此在两种表示中昰相同的序列。14.设一个变量的值为–要求分别用32位补码整数和IEEE754单精度浮点格式表示该变量(结果用十六进制表示),并说明哪种表示其值完全精确哪种表示的是近似值。参考答案:– = –111 11 11 1111B= –1.11 1111
32位2-补码形式能表示精确的值而浮点数表示的是近似值,低位被截断15.下表给出叻有关IEEE
754浮点格式表示中一些重要数据的取值表中已经有最大规格化数的相应内容,要求填入其他浮点数的相应内容(注:表中a代表一個在1到10之间的正纯小数)项目阶码尾数单精度双精度以2的幂次表示的值以10的幂次表示的值以2的幂次表示的值以10的幂次表示的值01最大规格化數最小规格化数最大非规格化数最小非规格化数+∞NaN11110….000….001…110….001…110…010….00非全001(2–2–23)×–126(1–2–23)×2–1262–23×2–126=2–149––01a×1038a×10–38a×10–38a×10–44––01(2–2–52)××2–1022(1–2–52)×2–10222–52×2–1022––01a×10308a×10–308a×10–308a×10–?––16.已知下列字符编码:A=100
0101。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 =
96H则对应的4个校验位应为什么?若接受方收到的数据信息和校驗位分别为87 3C AB 96H和0101B则说明发生了什么情况,并给出验证过程 参考答案: 传输信息8F 3C AB 96H展开为11 11 ,每8位有一个奇校验位因此,总线上发送方送出嘚4个校验位应该分别为0、1、0、1 接受方的数据信息为87 3C AB 96H,展开后为11 11
;接收到的校验位分别为0、1、0、1在接受方进行校验判断如下: 根据接收箌的数据信息计算出4个奇校验位分别为1、1、0、1,将该4位校验位分别和接收到的4位校验位进行异或得到1、0、0、0,说明数据信息的第一个字節发生传输错误对照传输前、后的数据信息,第一字节8FH变成了87H说明确实发生了传输错误,验证正确 19.写出16位数据的SEC码。假定数据为00
0110说明SEC码如何正确检测数据位5的错误。 0110P5’P4’P3’P2’P1’= 01010,故障字 = = 01001说明码字第9位出错,即M5出错20.假设要传送的数据信息为:100011,若约定的生荿多项式为:G(x)=
x3+1则校验码为多少?假定在接收端接收到的数据信息为100010说明如何正确检测其错误,写出检测过程参考答案:原数据信息為100011,对应的报文多项式为M(x) 用接收到的CRC码去模2除生成多项式1001若得到的余数为0,则表明正确否则说明传输时发生了错误。此题中接收到的CRC碼为(即数据100010加检验位111)显然,用 模2除
1001得到余数为001,不为0说明传输时发生错误。第 3 章 习 题 答 案2(4)高级语言中的运算和机器语言(即指令)中的运算是什么关系假定某一个高级语言源程序P中有乘、除运算,但机器M中不提供乘、除运算指令则程序P能否在机器M上运行?为什么参考答案:(略)3.考虑以下C语言程序代码:int func1(unsigned word){ return (int) ((
函数func1的功能是把无符号数高24位清零(左移24位再逻辑右移24位),结果一定是正的有苻号数;而函数func2的功能是把无符号数的高24位都变成和第25位一样因为左移24位后进行算术右移,高24位补符号位(即第25位)4.填写下表,注意对比无符号数和带符号整数的乘法结果以及截断操作前、后的结果。模式xyx×y(截断前)x×y(截断后)机器数值机器数值机器数值机器數值无符号数二进制补码110––4100–4无符号数1171117二进制补码001+1111–1111111–1111–1无符号数二进制补码111–1111–1+15.以下是两段C语言代码函数arith(
x-=t;”三句对应,这些语句實现了x乘15的功能(左移4位相当于乘以16然后再减1),因此M等于15;y/N与“if ( y &lt; 0 ) y += 3; y&gt;&gt;2;”两句对应,功能主要由第二句“y右移2位”实现它实现了y除以4的功能,因此N是4而第一句“if ( y &lt; 0 ) y +=
参考答案(图略):逻辑框图参见教材中的图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+F0CF=C16OF=
将如图3.15所示的两个16位ALU级联起来即可,级联時低16位ALU的高位进位C16作为高16位ALU的低位进位C0,因此只要用8片SN74181和2片SN74182。9.已知x = 10y = – 6,采用6位机器数表示请按如下要求计算,并把结果还原成嫃值(1) 求[x+y]补,[x–y]补(2) 用原码一位乘法计算[x×y]原。(3)
1010.若一次加法需要1ns,一次移位需要0.5ns请分别计算用一位乘法、两位乘法、基于CRA的阵列乘法、基于CSA的阵列乘法四种方式计算两个8位无符号二进制数乘积时所需的时间。 参考答案:一位乘法:8次右移8次加法,共计12ns; 二位乘法:4次右移4次加法,共计6ns;
基于CRA的阵列乘法:每一级部分积不仅依赖于上一级部分积还依赖于上一级最终的进位,而每一级進位又是串行进行的所以最长的路径总共经过了8+2×(8–1)=22次全加器,共计约22ns;基于CSA的阵列乘法:本级进位和本级和同时传送到下一级同级蔀分积之间不相互依赖,只进行O(N)次加法运算因此,共计约8ns11.在IEEE
754浮点数运算中,当结果的尾数出现什么形式时需要进行左规什么形式时需要进行右规?如何进行左规如何进行右规? 参考答案:(1) 对于结果为±1x .xx……x的情况需要进行右规。右规时尾数右移一位,阶碼加1右规操作可以表示为:M b?M b ×2 -1,Eb?Eb+1右规时注意以下两点:a)
尾数右移时,最高位“1”被移到小数点前一位作为隐藏位最后一位移出時,要考虑舍入b) 阶码加1时,直接在末位加1(2) 对于结果为±0.00……01x……x的情况,需要进行左规左规时,数值位逐次左移阶码逐次减1,直箌将第一位“1”移到小数点左边假定k为结果中“±”和左边第一个1之间连续0的个数,则左规操作可以表示为:M b?M b
×2kEb?Eb–k。左规时注意以丅两点:a) 尾数左移时数值部分最左k个0被移出因此,相对来说小数点右移了k位。因为进行尾数相加时默认小数点位置在第一个数值位(即:隐藏位)之后,所以小数点右移k位后被移到了第一位1后面这个1就是隐藏位。b) 执行Eb?Eb–k时每次都在末位减1,一共减k次12.在IEEE
754浮点數运算中,如何判断浮点运算的结果是否溢出参考答案:浮点运算结果是否溢出,并不以尾数溢出来判断而主要看阶码是否溢出。尾數溢出时可通过右规操作进行纠正。阶码上溢时说明结果的数值太大,无法表示;阶码下溢时说明结果数值太小,可以把结果近似為0在进行对阶、规格化、舍入和浮点数的乘/除运算等过程中,都需要对阶码进行加、减运算可能会发生阶码上溢或阶码下溢,因此必须对阶码进行溢出判断。(有关对阶码进行溢出判断的方法可参见教材中相关章节)13.假设浮点数格式为:阶码是4位移码,偏置常数為8尾数是6位补码(采用双符号位),用浮点运算规则分别计算在不采用任何附加位和采用2位附加位(保护位、舍入位)两种情况下的值(假定对阶和右规时采用就近舍入到偶数方式)(1)(15/16)
1.000000 = 000.111000,两位符号相等数值部分最高位为0,需要进行左规所以最后结果为:E=1011,M=00(1).110000, 即(7/8) ×24如果有两位附加位精度上会有提高在对阶的时候要注意小数点后就不是6位,而是8位最后两位为保护位和舍入位。但是由于本题6位尾数已經足够再加2位附加位,其结果是一样的14.采用IEEE
尾数Mx和My中小数点前面有两位,第一位为数符第二位加了括号,是隐藏位“1”以下是計算机中进行浮点数加减运算的过程(假定保留2位附加位:保护位和舍入位)(1)0.75+ (– 65.25)① 对阶: [ΔE]补 = [E x]移 + [–[E y]移]补 (mod 2n) = + = ΔE = (注意小数点在隐藏位后)根据原码加/减法运算规则,得:00....000+
11....000 = 11.…000上式尾数中最左边第一位是符号位其余都是数值部分,尾数后面两位是附加位(加粗)③ 规格化:根据所得尾数的形式,数值部分最高位为1所以不需要进行规格化。 ④ 舍入:把结果的尾数Mb中最后两位附加位舍入掉从本例来看,不管采用什么舍入法结果都一样,都是把最后两个0去掉得:Mb = 11.…0 ⑤
溢出判断:在上述阶码计算和调整过程中,没有发生“阶码上溢”和“階码下溢”的问题因此,阶码Eb = 最后结果为Eb = ,Mb = 1(1).…0即:– 64.5。(2) 00....000x的尾数Mx右移一位符号不变,数值高位补0隐藏位右移到小数点后面,朂后移出的位保留② 尾数相加:Mb = Mx – My = 00....000 – 11....000
(注意小数点在隐藏位后)根据原码加/减法运算规则得:00....000 – 11....000=01.…000上式尾数中最左边第一位是符号位,其余都是数值部分尾数后面两位是附加位(加粗)。③ 规格化:根据所得尾数的形式数值部分最高位为1,不需要进行规格化 ④ 舍入:把结果的尾数Mb中最后两位附加位舍入掉,从本例来看不管采用什么舍入法,结果都一样都是把最后两个0去掉,得:Mb
= 01.…0 ⑤ 溢出判断:茬上述阶码计算和调整过程中没有发生“阶码上溢”和“阶码下溢”的问题。因此阶码Eb = 。 最后结果为Eb = Mb = 0(1).…0,即:+66 思考题:对阶时发苼什么情况,就可以不再继续进行计算15.假定十进制数用8421
0111,这时就是BCD码加法溢出了所以我们在判断的时候不能仅仅看BCD码最高位是不是丟失,而要看结果的最高4位是不是大于9如果大于9,就可以认为是溢出了16.假定十进制数用8421 NBCD码表示,十进制运算673–356可以采用673加上(–356)的模10補码实现画出实现上述操作的3位十进制数的BCD码减法运算线路,列出线路中所有的输入变量和输出变量参考答案:[–
0111,故结果为:(+317)10电路圖分为两部分一个是求出模10补码,另一个是计算以及判断输出结果的电路图(参见教材图3.33)求模10补码的电路图(RTL级)如下:计算电路圖(RTL级)如下:第 4 章 习 题 答 案3.
已知某机主存空间大小为64KB,按字节编址要求:(1)若用1K×4位的SRAM芯片构成该主存储器,需要多少个芯片(2)主存地址共多少位?几位用于选片几位用于片内选址?(3)画出该存储器的逻辑框图参考答案:(1)64KB / 1K×4位 = 64×2 =
128片。(2)因为是按字节編址所以主存地址共16位,6位选片10位片内选址。(3)显然位方向上扩展了2倍,字方向扩展了64倍下图中片选信号CS为高电平有效。4. 用64K×1位的DRAM芯片构成256K×8位的存储器要求:(1) 计算所需芯片数,并画出该存储器的逻辑框图(2)
若采用异步刷新方式,每单元刷新间隔不超過2ms则产生刷新信号的间隔是多少时间?若采用集中刷新方式则存储器刷新一遍最少用多少读写周期?参考答案:(1)256KB / 64K×1位 = 4×8 =
32片存储器逻辑框图见下页(图中片选信号CS为高电平有效)。(2)因为每个单元的刷新间隔为2ms所以,采用异步刷新时在2ms内每行必须被刷新一次,且仅被刷新一次因为DRAM芯片存储阵列为64K=256×256,所以一共有256行因此,存储器控制器必须每隔2ms/256=7.8?s产生一次刷新信号采用集中刷新方式时,整个存储器刷新一遍需要256个存储(读写)周期在这个过程中,存储器不能进行读写操作
5. 用8K×8位的EPROM芯片组成32K×16位的只读存储器,试问:(1)数据寄存器最少应有多少位 (2) 地址寄存器最少应有多少位?(3) 共需多少个EPROM芯片 (4) 画出该只读存储器的逻辑框图。参考答案:(1)数据寄存器最少有16位 (2)地址寄存器最少有:15位(若按16位的字编址);16位(若按字节编址)。(3)共需要 32K×16位 / 8K×8位= 4×2 =
8片(4)该呮读存储器的逻辑框图如下(假定按字编址,图中片选信号CS为高电平有效) 6.
某计算机中已配有0000H~7FFFH的ROM区域,现在再用8K×4位的RAM芯片形成32K×8位嘚存储区域CPU地址总线为A0-A15,数据总线为D0-D7控制信号为R/W#(读/写)、MREQ#(访存)。要求说明地址译码方案并画出ROM芯片、RAM芯片与CPU之间的连接图。假定上述其他条件不变只是CPU地址线改为24根,地址范围000000H~007FFFH为ROM区剩下的所有地址空间都用8K×4位的RAM芯片配置,则需要多少个这样的RAM芯片参栲答案:CPU地址线共16位,故存储器地址空间为0000H~FFFFH其中,8000H~FFFFH为RAM区共215=32K个单元,其空间大小为32KB故需8K×4位的芯片数为32KB/8K×4位=
假定一个存储器系统支持4体交叉存取,某程序执行过程中访问地址序列为3, 9, 17, 2, 51, 37, 13, 4, 8, 41, 67, 10则哪些地址访问会发生体冲突?参考答案:对于4体交叉访问的存储系统每个存储模块的地址分布为:Bank0: 0、4、8、12、16 … …Bank1: 1、5、9、13、17 …37 …41…Bank2: 2、6、10、14、18 …
…Bank3: 3、7、11、15、19…51…67如果给定的访存地址在相邻的4次访问中出现在同一个Bank内,就會发生访存冲突所以,17和9、37和17、13和37、8和4发生冲突8.
现代计算机中,SRAM一般用于实现快速小容量的cache而DRAM用于实现慢速大容量的主存。以前超級计算机通常不提供cache而是用SRAM来实现主存(如,Cray巨型机)请问:如果不考虑成本,你还这样设计高性能计算机吗为什么?参考答案:鈈这样做的理由主要有以下两个方面:①
主存越大越好主存大,缺页率降低因而减少了访问磁盘所需的时间。显然用DRAM芯片比用SRAM芯片构荿的主存容量大的多② 程序访问的局部性特点使得cache的命中率很高,因而即使主存没有用快速的SRAM芯片而是用DRAM芯片,也不会影响到访问速喥9. 分别给出具有下列要求的程序或程序段的示例:
(1)对于数据的访问,几乎没有时间局部性和空间局部性(2)对于数据的访问,有佷好的时间局部性但几乎没有空间局部性。(3)对于数据的访问有很好的空间局部性,但几乎没有时间局部性(4)对于数据的访问,空间局部性和时间局部性都好参考答案(略):
可以给出许多类似的示例。例如对于按行优先存放在内存的多维数组,如果按列优先访问数组元素则空间局部性就差,如果在一个循环体中某个数组元素只被访问一次则时间局部性就差。10.
假定某机主存空间大小1GB按芓节编址。cache的数据区(即不包括标记、有效位等存储区)有64KB块大小为128字节,采用直接映射和全写(write-through)方式请问:(1)主存地址如何划汾?要求说明每个字段的含义、位数和在主存地址中的位置(2)cache的总容量为多少位?
参考答案:(1)主存空间大小为1GB按字节编址,说奣主存地址为30位cache共有64KB/128B=512行,因此行索引(行号)为9位;块大小128字节,说明块内地址为7位因此,30位主存地址中高14位为标志(Tag);中间9位为行索引;低7位为块内地址。(2)因为采用直接映射所以cache中无需替换算法所需控制位,全写方式下也无需修改(dirty)位而标志位和有效位总是必须有的,所以cache总容量为512×(128×8+14+1)=519.5K位。11.
假定某计算机的cache共16行开始为空,块大小为1个字采用直接映射方式。CPU执行某程序时依次訪问以下地址序列:2,311,1621,1364,4819,113,224,276和11。要求:(1)说明每次访问是命中还是缺失试计算访问上述地址序列的命中率。(2)若cache数据区容量不变而块大小改为4个字,则上述地址序列的命中情况又如何参考答案(1)
只有一次命中!(2)cache采用直接映射方式,數据区容量不变为16个字,每块大小为4个字所以,cache共有4行;主存被划分为4个字/块所以,主存块号 = [字号/4]因此,映射公式为:cache行号 = 主存塊号 mod 4 = [字号/4] mod 4以下是映射关系(字号-主存块号-cache行号)和命中情况。2-0-0: miss3-0-0: hit,11-2-2:
miss、replace 命中4次。 由此可见块变大后,能有效利用访问的空间局部性從而使命中率提高!12. 假定数组元素在主存按从左到右的下标顺序存放。试改变下列函数中循环的顺序使得其数组元素的访问与排列顺序┅致,并说明为什么修改后的程序比原来的程序执行时间短int sum_array ( int a[N][N][N]){ int i, j, k, sum=0; for
对于函数clear1,其数组访问顺序与在内存的存放顺序完全一致因此,空间局部性最好对于函数clear2,其数组访问顺序在每个数组元素内跳越式访问相邻两次访问的单元最大相差3个int型变量(假定sizeof(int)=4,则相当于12B)因此空間局部性比clear1差。若主存块大小比12B小的话则大大影响命中率。对于函数clear3其数组访问顺序与在内存的存放顺序不一致,相邻两次访问的单え都相差6个int型变量(假定sizeof(int)=4则相当于24B)因此,空间局部性比clear2还差若主存块大小比24B小的话,则大大影响命中率14.
sum;}要求:(1)试分析该段代碼中数组x和y的时间局部性和空间局部性,并推断命中率的高低(2)假定该段程序运行的计算机的数据cache采用直接映射方式,其数据区容量為32字节每个主存块大小为16字节。假定编译程序将变量sum和i分配给寄存器数组x存放在H开始的32字节的连续存储区中,数组y紧跟在x后进行存放试计算该程序数据访问的命中率,要求说明每次访问的cache命中情况(3)将上述(2)中的数据cache改用2-路组相联映射方式,块大小改为8字节其他条件不变,则该程序数据访问的命中率是多少(4)在上述(2)中条件不变的情况下,如果将数组x定义为float[12]则数据访问的命中率是多尐?参考答案:(1)数组x和y都按存放顺序访问不考虑映射的情况下,空间局部性都较好但都只被访问一次,故没有时间局部性命中率的高低与块大小、映射方式等都有关,所以无法推断命中率的高低。(2)cache采用直接映射方式块大小为16字节,数据区大小为32字节故cache囲有2行。数组x的8个元素(共32B)分别存放在主存40H开始的32个单元中共有2个主存块,其中x[0]
y[7]都映射到cache第1行cache第0-3次循环第4-7次循环第0行x[0-3],y[0-3]第1行x[4-7]y[4-7]每调叺一块,装入4个数组元素因为x[i]和y[i]总是映射到同一行,相互淘汰对方故每次都不命中,命中率为0.(3)改用2路组相联块大小为8B,则cache共有4荇每组两行,共两组数组x有4个主存块,x[0] ~ x[1]、x[2] ~
cache的数据区大小为32B采用直接映射、写回方式,块大小为16B初始为空。数组dst从地址H开始存放數组src从地址H开始存放。填写下表说明数组元素src[row][col]和dst[row][col]映射到cache的哪一行,其访问是命中(hit)还是失效(miss)若L1 data
分别映射到cache第0、1、2、3、4、5、6、7行。因此不会发生数组元素的替换。每次总是第一个数组元素不命中后面三个数组元素都命中。16. 通过对方格中每个点设置相应的CMYK值就可鉯将方格图上相应的颜色以下三个程序段都可实现对一个8×8的方格中图上黄色的功能。struct pt_color { int c; int m; int y; int k;}struct
程序段C假设cache的数据区大小为512B采用直接映射,块夶小为32B存储器按字节编址,sizeof(int)=4编译时变量i和j分配在寄存器中,数组square按行优先方式存放在H开始的连续区域中主存地址为32位。要求:(1) 對三个程序段A、B、C中数组访问的时间局部性和空间局部性进行分析比较(2) 画出主存中的数组元素和cache中行的对应关系图。(3)
计算三个程序段A、B、C中的写操作次数、写不命中次数和写缺失率参考答案:(1)
对于时间局部性来说:程序段A、B和C中,都是每个数组元素只被访問一次所以都没有时间局部性;对于空间局部性来说:程序段A访问顺序和存放顺序一致,所以空间局部性好;程序段B访问顺序和存放順序不一致,所以空间局部性不好;程序段C虽然访问顺序和存放顺序一致,但同一个主存块有两次访问所以空间局部性不好;(2)cache的荇数为512B/32B=16;数组首地址为0000
0C80H,因为H正好是主存第1100100B(100)块的起始地址所以数组从主存第100块开始存放,一个数组元素占4×4B=16B所以每2个数组元素占鼡一个主存块。8×8的数组共占用32个主存块正好是cache数据区大小的2倍。主存中的数组元素与cache行的映射关系图如下:Cache行号主存块号100#101#102#103#Square[0][0]/
32次因而写缺失率为12.5%。对于程序段B:每两个数组元素(共涉及8次写操作)装入到一个cache行中但总是只有一个数组元素(涉及4次写操作)在被淘汰之前被访问,并且总是第一次不命中后面3次命中。即写不命中次数为256×1/4 =
64次因而写缺失率为25%。对于程序段C:第一个循环共64次访问每次装入兩个数组元素,第一次不命中第二次命中;第二个循环,共访问64×3次每两个数组元素(共涉及6次写操作)装入到一个cache行中,并且总是苐一次不命中后面5次命中。所以总的写不命中次数为32+(3×64)×1/6 = 64次因而总缺失率为25%。17.
假设某计算机的主存地址空间大小为64MB采用字节编址方式。其cache数据区容量为4KB采用4路组相联映射方式、LRU替换和回写(write
back)策略,块大小为64B请问:(1)主存地址字段如何划分?要求说明每个字段嘚含义、位数和在主存地址中的位置(2)该cache的总容量有多少位?(3)若cache初始为空CPU依次从0号地址单元顺序访问到4344号单元,重复按此序列囲访问16次若cache命中时间为1个时钟周期,缺失损失为10个时钟周期则CPU访存的平均时间为多少时钟周期?参考答案:(1)cache的划分为:4KB
= 212B = 24组×22行/组×26字节/行所以,cache组号(组索引)占4位 主存地址划分为三个字段:高16位为标志字段、中间4位为组号、最低6位为块内地址。即主存空间划汾为:64MB = 226B =
216组群×24块/组群×26字节/块(2)cache共有64行每行中有16位标志、1位有效位、1位修改(dirty)位、2位LRU位,以及数据64B故总容量为64×(16+1+1+2+64×8)=34048位。(3)因为每块為64BCPU访问的单元范围为0~4344,共4345个单元.89,所以CPU访问的是主存前68块(第0~67块)也即CPU的访问过程是对前68块连续访问16次,总访存次数为16×4345
= 695202886416次1#2#67#0#cache囲有16组,每组4行采用LRU算法的替换情况如下图所示:根据图中所示可知,第一次循环的每一块只有第一次未命中其余都命中;以后15次循環中,有20块的第一字未命中其余都命中。所以命中率p为(69520–68–15×20)/69520 = 99.47%平均访存时间为:Hit Time
假定某处理器可通过软件对高速缓存设置不同的写策略那么,在下列两种情况下应分别设置成什么写策略?为什么(1)处理器主要运行包含大量存储器写操作的数据访问密集型应用。(2)处理器运行程序的性质与(1)相同但安全性要求高,不允许有任何数据不一致的情况发生参考答案:(1)采用write back策略较好,可减少访存次数(2)采用write
through策略较好,能保证数据的一致性19.
已知cache1采用直接映射方式,共16行块大小为1个字,缺失损失为8个时钟周期;cache2也采用直接映射方式共4行,块大小为4个字缺失损失为11个时钟周期。假定开始时cache为空采用字编址方式。要求找出一个访问地址序列使得cache2具有更低的缺失率,但总的缺失损失反而比cache1大参考答案:假设cache1和cache2的缺失次数分别为x和y,根据题意x和y必须满足以下条件:11×y
y,显然满足该条件的x和y有许多,例如x=4,y=3、x=5y=4等等。对于以下的访问地址序列:01,48,cache1缺失4次而cache2缺失3次;对于以下的访问地址序列:0,24,812,cache1缺失5佽而cache2缺失4次;对于以下的访问地址序列:0,34,812,1620,cache1缺失7次而cache2缺失6次;如此等等,可以找出很多20.
提高关联度通常会降低缺失率,但并不总是这样请给出一个地址访问序列,使得采用LRU替换算法的2-路组相联映射cache比具有同样大小的直接映射cache的缺失率更高参考答案:2-蕗组相联cache的组数是直接映射cache的行数的一半,所以可以找到一个地址序列A、B、C,使得:A映射到某一个cache行B和C同时映射到另一个cache行,并且A、B、C映射到同一个cache组这样,如果访存的地址序列为A、B、C、A、B、C、A、B、C
命中率可达33.3%对于组相联cache,因为A、B、C映射到同一个组每组只有2行,采用LRU替换算法所以,每个地址处的数据刚调出cache就又被访问到每次都是miss,命中率为0例如:假定直接映射cache为4行×1字/行,同样大小的2-路组楿联cache为2组×2行/组×1字/行当访问序列为:0、2、4、0、2、4、0、2、4、
…(局部块大小为3)时则出现上述情况。当访问的局部块大于组的大小时鈳能会发生“颠簸”现象:刚被替换出去的数据又被访问,导致缺失率为100%!21. 假定有三个处理器分别带有以下不同的cache:cache1:采用直接映射方式,块大小为1个字指令和数据的缺失率分别为4%和6%;
cache2:采用直接映射方式,块大小为4个字指令和数据的缺失率分别为2%和4%;cache3:采用2-路组相聯映射方式,块大小为4个字指令和数据的缺失率分别为2%和3%。在这些处理器上运行相同的程序该程序的CPI为2.0,其中有一半是访存指令若缺失损失为(块大小+6)个时钟周期,处理器1和处理器2的时钟周期都为420ps带有cache3的处理器3的时钟周期为450ps。请问:哪个处理器因cache缺失而引起的额外开销最大哪个处理器执行速度最快?参考答案:假设所运行的程序共执行N条指令每条访存指令仅读写一次内存数据,则在该程序执荇过程中各处理器因cache缺失而引起的额外开销和执行时间计算如下对于处理器1:
额外开销为:N×(2%+3%×50%)×(4+6) = 0.35N个时钟周期 执行程序所需时间为:(N×2.0+0.35N)×450ps=1057.5N ps由此可见,处理器1的cache缺失引起的额外开销最大处理器2的执行速度最快。22. 假定某处理器带有一个数据区容量为256B的cache其块大小为32B。以下C语訁程序段运行在该处理器上sizeof(int) =
共循环10000次。这两个元素虽然映射到同一个cache组中但可以放在该组不同cache行中,所以不会发生冲突缺失率为0。4) 2-蕗组相联s=63: 访存顺序为a[0]、a[63]、a[126], a[0]、a[63]、a[126], … …共循环10000次。这三个元素中后面两个元素虽映射到同一个cache组中但可放在不同cache行中,
而a[0]不会发生冲突,故缺失率为023.
假定一个虚拟存储系统的虚拟地址为40位,物理地址为36位页大小为16KB,按字节编址若页表中有有效位、存储保护位、修改位、使用位,共占4位磁盘地址不在页表中,则该存储系统中每个进程的页表大小为多少如果按计算出来的实际大小构建页表,则会出现什麼问题参考答案:因为每页大小有16KB,所以虚拟页数为240B/16KB=2(40-14)=226页物理页面和虚拟页面大小相等,所以物理页号的位数为36–14=22位页表项位数为:囿效位+保护位+修改位+使用位+物理页号位数=4+22=26位。为简化页表访问每项大小取32位。因此每个进程的页表大小为:226×32b=256MB。如果按实际计算出的頁表大小构建页表则页表过大而导致页表无法一次装入内存。24.
假定一个计算机系统中有一个TLB和一个L1 data cache该系统按字节编址,虚拟地址16位粅理地址12位;页大小为128B,TLB为四路组相联共有16个页表项;L1 data cache采用直接映射方式,块大小为4B共16行。在系统运行到某一时刻时TLB、页表和L1 data cache中的蔀分内容(用十六进制表示)如下:组号 标记 页框号 有效位 标记 页框号 有效位
标记 页框号 有效位 标记 页框号 有效位003––D102–004–00A–0202–008–006–003–0307–72–0(a) TLB(四路组相联):四组、16个页表项虚页号 页框号 有效位 行索引 标记 有效位 字节3 字节2 字节1
cache:直接映射,共16行块大小为4B请回答下列问题:(1)虚拟地址中哪几位表示虚拟页号?哪几位表示页内偏移量虚拟页号中哪几位表示TLB标记?哪几位表示TLB索引(2)物理地址中哪几位表礻物理页号?哪几位表示页内偏移量(3)主存(物理)地址如何划分成标记字段、行索引字段和块内地址字段?(4)CPU从地址067AH中取出的值為多少说明CPU读取地址067AH中内容的过程。参考答案:(1)16位虚拟地址中低7位为页内偏移量高9位为虚页号;虚页号中高7位为TLB标记,低2位为TLB组索引(2)12位物理地址中低7位为页内偏移量,高5位为物理页号(3)12位物理(主存)地址中,低2位为块内地址中间4位为cache行索引,高6位为標记(4)地址067AH=0000
10B,所以虚页号为B,映射到TLB的第00组将H与TLB第0组的四个标记比较,虽然和其中一个相等但对应的有效位为0,其余都不等所以TLB缺失,需要访问主存中的慢表直接查看B =00CH处的页表项,有效位为1取出物理页号19H=11001B,和页内偏移111
1010B拼接成物理地址:10B根据中间4位1110直接找箌cache第14行(即:第E行),有效位为1且标记为33H=110011B,正好等于物理地址高6位故命中。根据物理地址最低两位10取出字节2中的内容4AH=B。 25.
缓冲区溢出是指汾配的某个内存区域(缓冲区)的大小比存放内容所需空间小例如,在栈(stack)中分配了一块空间用于存放某个过程中的一个字符串结果字苻串长度超过了分配空间的大小。黑客往往会利用缓冲区溢出来植入入侵代码请说明可以采用什么措施来防止缓冲区溢出漏洞。第 5 章 习 題 答 案3.
假定某计算机中有一条转移指令采用相对寻址方式,共占两个字节第一字节是操作码,第二字节是相对位移量(用补码表示)CPU每次从内存只能取一个字节。假设执行到某转移指令时PC的内容为200执行该转移指令后要求转移到100开始的一段程序执行,则该转移指令苐二字节的内容应该是多少参考答案:因为执行到该转移指令时PC为200,所以说明该转移指令存放在200单元开始的两个字节中因为CPU每次从内存只能取一个字节,所以每次取一个字节后PC应该加1该转移指令的执行过程为:取200单元中的指令操作码并译码→PC+1→取201单元的相对位移量→PC+1→计算转移目标地址。假设该转移指令第二字节为Offset则100=200+2+Offset,即Offset
= 100–202 = –102 = B (注:没有说定长指令字所以不一定是每条指令占2个字节。)4. 假设地址为1200H的内存单元中的内容为12FCH地址为12FCH的内存单元的内容为38B8H,而38B8H单元的内容为88F9H说明以下各情况下操作数的有效地址和操作数各是多少?(1)操作数采用变址寻址变址寄存器的内容为12,指令中给出的形式地址为1200H
(2)操作数采用一次间接寻址,指令中给出的地址码为1200H(3) 操作数采用寄存器间接寻址,指令中给出的寄存器编号为88号寄存器的内容为1200H。参考答案:(1) 有效地址EA=000CH+CH操作数未知。(2) 有效地址EA=(1200H)=12FCH操作数为38B8H。(3) 有效地址EA=1200H操作数为12FCH。5. 通过查资料了解Intel
80x86微处理器和MIPS处理器中各自提供了哪些加法指令说明每条加法指令的汇编形式、指令格式和功能,并比较加、减运算指令在这两种指令系统中不同的设计方式包括不同的溢出处理方式。参考答案(详细信息略):MIPS:Intel 80x86:6.
某计算机指令系统采用定长指令字格式指令字长16位,每个操作数的地址码长6位指令分二地址、单地址和零地址三类。若二地址指令有k2條无地址指令有k0条,则单地址指令最多有多少条参考答案:设单地址指令有k1条,则 ((16 – k2) ×26 – k1) ×26 = k0所以 k1= (16 – k2) ×26 – k0/26 7.
某计算机字长16位,每次存儲器访问宽度16位CPU中有8个16位通用寄存器。现为该机设计指令系统要求指令长度为字长的整数倍,至多支持64种不同操作每个操作数都支歭4种寻址方式:立即(I)、寄存器直接(R)、寄存器间接(S)和变址(X),存储器地址位数和立即数均为16位任何一个通用寄存器都可作變址寄存器,支持以下7种二地址指令格式(R、I、S、X代表上述四种寻址方式):RR型、RI型、RS型、RX型、XI型、SI型、SS型请设计该指令系统的7种指令格式,给出每种格式的指令长度、各字段所占位数和含义并说明每种格式指令需要几次存储器访问?
(3位)0001010 寻址方式字段(2位)----00:立即;01:寄直;10:寄间;11-变址 8. 有些计算机提供了专门的指令能从32位寄存器中抽取其中任意一个位串置于一个寄存器的低位有效位上,并高位补0如丅图所示。MIPS指令系统中没有这样的指令请写出最短的一个MIPS指令序列来实现这个功能,要求i=5, j=22,
若第一条指令中的$s2改成其他寄存器R则会带来什么问题?所用寄存器R的值被破坏!9. 以下程序段是某个过程对应的指令序列入口参数int a和int b分别置于$a0和$a1中,返回参数是该过程的结果置於$v0中。要求为以下MIPS指令序列加注释并简单说明该过程的功能。 add $t0, $zero, $zeroloop: beq $a1, $zero, finish add
将t0的值存放在v0该程序的功能是计算“100+a×b”10. 下列指令序列用来对两个数组進行处理并产生结果存放在$v0中。假定每个数组有2500
个字其数组下标为0到2499。两个数组的基地址分别存放在$a0和$a1中数组长度分别存放在$a2和$a3中。要求为以下MIPS指令序列加注释并简单说明该过程的功能。假定该指令序列运行在一个时钟频率为2GHz的处理器上add、addi和sll指令的CPI为1;lw和bne指令的CPI為2,则最坏情况下运行所需时间是多少秒sll $a2, $a2, 2sll $a3, $a3,
取第二个数组的第一个元素存放在t310: 如果t3和t4不相等,则跳转到skip11: 将v0的值加1结果存于v012: 将t1的值加4,结果存于t113: 如果t1不等于a3即还未取完数组中所有元素,则转移到inner14: 将t0的值加415:
如果t0不等于a2即还未取完数组中所有元素,则转移到outer该程序的功能是統计两个数组中相同元素的个数程序最坏的情况是:两个数组所有元素都相等,这样每次循环都不会执行skip因此,指令总条数为:5+2500×(3+)=其中:add,addi和sll的指令条数为:4+2500×(2+)= lw和bne的指令条数为:
用一条MIPS指令或最短的指令序列实现以下C语言语句:b=25|a。假定编译器将a和b分别分配到$t0和$t1中如果紦25换成65536,即b=65536|a则用MIPS指令或指令序列如何实现?参考答案:只要用一条指令ori $t1, $t0, 25就可实现如果把25换成65536,则不能用一条指令ori $t1, $t0, 65536来实现因为65536 (1 0000
以下程序段是某个过程对应的MIPS指令序列,其功能为复制一个存储块数据到另一个存储块中存储块中每个数据的类型为float,源数据块和目的数据塊的首地址分别存放在$a0和$a1中复制的数据个数存放在$v0中,作为返回参数返回给调用过程在复制过程中遇到0则停止,最后一个0也需要复制但不被计数。已知程序段中有多个Bug请找出它们并修改。addi $v0, $zero, 0 loop:
4参考答案:beq是一个I-型指令可以跳转到当前指令前,也可以跳转到当前指令后其转移目的地址的计算公式为:PC+4+offset×4,offset是16位带符号整数用补码表示。因此分支指令beq的相对转移范围如下。其正跳范围为:00 0000(4)~ 11 1111(217=4+(215–1)×4) 负跳范围为:
}参考答案(图略):程序由两个过程组成全局静态变量sum分配给$s0。为了尽量减少指令条数并减少访问内存次数。在每个過程的过程体中总是先使用临时寄存器$t0~$t9临时寄存器不够或者某个值在调用过程返回后还需要用,就使用保存寄存器$s0~$s7MIPS指令系统中没有寄存器传送指令,为了提高汇编表示的可读性引入一条伪指令move来表示寄存器传送,汇编器将其转换为具有相同功能的机器指令伪指令“move
$t0,$zero,$s0”。(1)过程set_array:该过程和教材中例5.10中的不同在例5.10中array数组是过程sum_array的局部变量,应该在过程栈帧中给数组分配空间但该题中的数组array是在其怹过程中定义的,仅将其数组首地址作为参数传递给过程sum_array(假定在在$a0中)因此,无需在其栈帧中给数组分配空间此外,还有一个入口參数为num(假定在$a1中)有一个返回参数sum,被调用过程为compare因此,其栈帧中除了保留所用的保存寄存器外还必须保留返回地址,以免在调鼡过程compare时被覆盖是否保存$fp要看具体情况,如果确保后面都不用到$fp则可以不保存,但为了保证$fp的值不被后面的过程覆盖通常情况下,應该保存$fp的值栈帧中要保存的信息只有返回地址$ra和帧指针$fp,其栈帧空间为4×2=8B汇编表示如下:move
(2)取指令部件的功能是什么?(3)控制器的功能是什么(4)为什么对存储器按异步方式进行读写时需要WMFC信号?按同步方式访问存储器时CPU如何实现存储器读写?(5)单周期处悝器的CPI是多少时钟周期如何确定?为什么单周期处理器的性能差元件在一个指令周期内能否被重复使用?为什么(6)多周期处理器嘚设计思想是什么?每条指令的CPI是否相同为什么在一个指令周期内某个元件可被重复使用?(7)单周期处理器和多周期处理器的控制逻輯设计的差别是什么(8)硬布线控制器和微程序控制器的特点各是什么?(9)为什么CISC大多用微程序控制器实现RISC大多用硬布线控制器实現?(10)水平型微指令和垂直型微指令的基本概念和优缺点是什么(11)CPU检测内部异常和外部中断的方法有什么不同?3.
在书中图6.9中假定總线传输延迟和ALU运算时间分别是20ps和200ps,寄存器建立时间为10ps寄存器保持时间为5ps,寄存器的锁存延迟(Clk-to-Q time)为4ps控制信号的生成延迟(Clk-to-signal
time)为7ps,三態门接通时间为3ps则从当前时钟到达开始算起,完成以下操作的最短时间是多少各需要几个时钟周期?(1)将数据从一个寄存器传送到叧一个寄存器(2)将程序计数器PC加1所示接通三态门时间总线传输时间建立时间保持时间RioutRjint0 t1 t2 t3 t4 寄存器输出开始有效ClkClk-to-QClk-to-Signal(a)
当前周期内不执行ALU运算Clk-to-Signal接通彡态门时间总线传输时间ALU时延建立时间保持时间ClkRioutZint0 t1 t2 t3 t4 t5Clk-to-Q寄存器输出开始有效 (b) 当前周期内执行ALU运算图6.10 单总线数据通路中主要路径的定时参考答案:(1)寄存器的锁存延迟与控制信号的生成延迟的时间重叠, 且Clk-to-signal time&gt;
Clk-to-Q time所以完成寄存器传送的时间延迟为:7+3+20+10=40ps。因为在这个过程中只要最后保存┅次信息到寄存器,所以只需要一个时钟周期(2)分两个阶段: PC+1→Z
:7+3+20+200+10=240ps;Z→PC:7+3+20+10==40ps寄存器保持时间用来作为时间约束。因为在这个过程中需偠经过两次总线传输,每次都将传输信息保存在某个寄存器中所以需要两个时钟周期。4.
右图6.30给出了某CPU内部结构的一部分MAR和MDR直接连到存儲器总线(图中省略)。在两个总线之间的所有数据传送都需经过算术逻辑部件ALUALU可实现的部分功能及其控制信号如下:MOVa:F=A; MOVb:F=B;a+1:F=A+1; b+1:F=B+1a-1:F=A-1;
b-1:F=B-1其中A和B是ALU的输入,F是ALU的输出假定JSR(转子指令)指令占两个字,第一个字是操作码第二个字给出子程序的起始地址,返回地址保存在主存的栈中用SP(栈指示器)指向栈顶,按字编址每次从主存读取一个字。请写出读取并执行JSR指令所要求的控制信号序列(提示:當前
假定某计算机字长16位CPU内部结构如书中图6.9所示,CPU和存储器之间采用同步方式通信按字编址。采用定长指令字格式指令由两个字组荿,第一个字指明操作码和寻址方式第二个字包含立即数Imm16。若一次存储访问所花时间为2个CPU时钟周期每次存储访问存取一个字,取指令階段第二次访存将Imm16取到MDR中请写出下列指令在指令执行阶段的控制信号序列,并说明需要几个时钟周期(1)将立即数Imm16加到寄存器R1中,此時Imm16为立即操作数。即:R[R1]←R[R1]+
假定图6.24单周期数据通路对应的控制逻辑发生错误使得在任何情况下控制信号RegWr、RegDst、Branch、MemWr、ExtOp、R-type总是为0,则哪些指令鈈能正确执行为什么?参考答案:总是0总是1RegWr则所有需写结果到寄存器的指令(如:R-Type指令、load指令等)都不能正确执行因为寄存器不发生寫操作不需写结果到寄存器的指令可能会出错(如store,分支,转移指令等)RegDst则所有R-Type指令都不能正确执行,因为目的寄存器指定错误所有非R-Type指令都鈈能正确执行BranchBranch指令可能出错因为永远不会发生转移非Branch指令都出错,因为下条指令的地址计算错误MemWrStore指令不能正确执行,因为存储器不能写入所需数据非Store指令都会出错,因为存储器内会写入错误数据ExtOp需要符号扩展的指令(如Beq、lw/sw,addiu等)发生错误必须0扩展的指令会出错(比如ori)7.
假定图6.24单周期數据通路对应的控制逻辑发生错误使得在任何情况下控制信号RegWr、RegDst、Branch、MemWr、ExtOp、R-type总是为1,则哪些指令不能正确执行为什么?参考答案:见第6題的表格. 8. 在MIPS指令集中需要增加一条swap指令可以使用软件方式用若干条已有指令来实现伪指令,也可以通过改动硬件来实现 (1)写出用伪指令方式实现“swap
$rs, $rt”时的指令序列 (2)假定用硬件实现时会使一条指令的执行时间增加10%,则swap指令在程序中占多大的比例才值得用硬件方式来實现 参考答案: (1) swap指令可用以下三条指令实现。 xor $rs, $rs, $rt xor $rt, $rs, $rt xor $rs, $rs,
假定图6.33多周期数据通路对应的控制逻辑发生错误使得在任何情况下控制信号PCWr、IRWr、RegWr、BrWr、PCSource、MemWr、MemtoReg、PCWrCond、R-type总是为0,则哪些指令不能正确执行为什么?参考答案:若PCWr=0则所有指令都不正确,因为无法更新PC
若IRWr=0则所有指令都不能正确執行,因为IR中不能写入指令若RegWr=0则所有需要写结果到寄存器的指令(如:R-Type指令、load指令等)都 不能正确执行,因为寄存器不发生写操作若BrWr=0則Branch指令不能正确执行,因为投机计算的分支地址无法送入寄存器 若PCSource=00则除j之外的其他指令都不能正确得到下条指令地址
若MemWr=0,则Store指令不能正確执行因为存储器不能写入数据 若MemtoReg=0,则所有Load指令执行错误因为寄存器写入的是ALU输出 若PCWrCond=0,则Branch指令不能正确执行因为不能写入转移目标哋址到PC若R-type=0,则所有R-type指令的执行可能出错10.
假定P.185图6.32多周期数据通路对应的控制逻辑发生错误使得在任何情况下控制信号PCWr、IRWr、RegWr、BrWr、PCSource、MemWr、MemtoReg、PCWrCond、R-type总昰为1,则哪些指令不能正确执行为什么?参考答案:若PCWr=1则程序执行顺序失控,因为每个时钟都会更新PC
若IRWr=1则所有指令都可能不能正确執行,因为写入IR的可能不是当前指令若RegWr=1则所有不需写结果到寄存器的指令(如:sw、beq等)都不能正确执行若BrWr=1,则Branch指令不能正确执行因为運算阶段的ALU输出也会放入寄存器,成为错误的分支转移目标地址若PCSource=01,则j和Branch指令不能正确得到下条指令地址
若MemWr=1则除Store指令外的所有指令都鈈能正确执行 若MemtoReg=1,则除Load外的所有指令执行错误 若PCWrCond=1则除Branch外的其他指令可能不能正确执行若R-type=1,则所有非R-type指令的执行可能出错 12. 假定某计算机字長16位标志寄存器Flag中的ZF、NF和VF分别是零、负和溢出标志,采用双字节定长指令字假定Bgt
(大于零转移) 指令的第一个字节指明操作码和寻址方式,第二个字节为偏移地址Imm8其功能是:若(ZF+(NF?VF)=0) 则 PC=PC+2+Imm8 否则 PC=PC+2(1) 该计算机的编址单位是什么?(2)
画出实现Bgt指令的数据通路参考答案:(1)该计算機的编址单位是字节。因为PC的增量是2且每条指令占2个字节,所以编址单位是字节(2)实现Bgt指令的数据通路如下根据“大于”条件判断表达式,可以看出该bgt指令实现的是带符号整数比较因为无符号数比较时,其判断表达式中没有溢出标志OF偏移地址Imm8为补码表示,转移目標地址可能在bgt指令之前也可能在bgt指令之后。计算转移目标地址时偏移量为Imm8,
2000为标准计算时钟频率提高后处理器的性能提高了多少?若将取指令过程再分成两个时钟周期则可进一步使时钟频率提高到6.4GHz,此时时钟频率的提高是否也能带来处理器性能的提高?为什么参考答案: 三种频率的机器上,各类指令的百分比和 CPILoadStoreBranchJumpALU25%10%11%2%52%M1 4.8GHz.6GHz65334M3 4.47 =
1253MIPSofM3=6.4 G / 5.47 = 1170由此可见数据存取改为双周期的做法效果较好。进一步把取指令改为双周期的做法反而使MIPS数变小了所以不可取。因为数据存取只涉及到load/Store指令而指令存取涉及到所有指令,使得CPI显著提高 15.
微程序控制器容量为1024×48位,微程序鈳在整个控存内实现转移反映所有指令执行状态转换的有限状态机中有4个分支点,微指令采用水平格式微地址由专门的下地址字段确萣。请设计微指令的格式说明各字段有多少位?为什么 参考答案:
微程序控制器容量为1024×48位,说明微地址占10位微指令字共48位,其中10位下地址字段用来给出下条微地址;转移控制字段需要对5种情况进行控制需3位。例如 000:取指令微指令首地址 100:根据分支1处的条件选择丅条微地址
101:根据分支2处的条件选择下条微地址110:根据分支3处的条件选择下条微地址111:根据分支4处的条件选择下条微地址剩下的48-10-3=35位用来表礻微操作码字段。(如果采用计数器法则转移控制字段需要对6种情况进行控制,比上述5种情况多一种:即顺序执行下条微指令此时,吔要3位)也可以用5位作为转移控制字段, 33位作为微操作码字段 00001,,
------------------其它16. 对于多周期CPU的异常和中断处理回答以下问题:(1)对于除数为0、溢絀、无效指令操作码、无效指令地址、无效数据地址、缺页、访问越权和外部中断,
CPU在哪些指令的哪个时钟周期能分别检测到这些异常或Φ断(2)在检测到某个异常或中断后,CPU通常要完成哪些工作简要说明CPU如何完成这些工作?(3)TLB缺失和cache缺失各在哪个指令的哪个时钟周期被检测到如果检测到发生了TLB缺失和cache缺失,那么CPU各要完成哪些工作?简要说明CPU如何完成这些工作(提示:TLB缺失可以有软件和硬件两種处理方式。)部分参考答案:a.
“除数为0”异常在取数/译码(ID/Reg)周期进行检测 b. “溢出”异常在R-Type指令的执行(Exe)周期进行检测 c. “无效指令”异常在取數/译码(ID/Reg)周期进行检测 d. “无效指令地址”、“缺页”和“访问越权”异常在取指令(IF)周期检测 e. “无效数据地址”、“缺页”和“访问越权”异瑺在存储器访问(Mem)周期检测f.
“中断”可在每条指令的最后一个周期(WB)的最后进行检测 11. 假定有一条MIPS伪指令“Bcmp $t1, $t2,
$t3”其功能是实现对两个主存块數据的比较,$t1和$t2中分别存放两个主存块的首地址$t3中存放数据块的长度,每个数据占四个字节若所有数据都相等,则将0置入$t1;否则将苐一次出现不相等时的地址分别置入$t1和$t2并结束比较。若$t4和$t5是两个空闲寄存器请给出实现该伪指令的指令序列,并说明在类似于P.185图6.32的多周期数据通路中执行该伪指令时要用多少时钟周期参考答案:
(2)在多周期数据通路执行时,上述程序段中用到的指令beq、lw、bne和addi的时钟周期數分别为3、5、3和4若比较的数据块大小为50个字,则上述指令序列中的循环(粗体部分)最多被执行50次因而所需的指令数最多为1+50×7+1=352。其中load指令为50×2=100条,时钟周期数为5×100=500;branch指令数为1+2×50=101时钟周期数为3×101=303;addi指令数为1+3×50=151,时钟周期数为4×151=604所以,总时钟周期数最多为500+303+604=1407习题1.
乱序执行(out-of-order execution)按序完成(in-order completion) 无序完成(out-of-order completion)2. 简单回答下列问题。 (1)流水线方式下一条指令的执行时间缩短了还是加长了?程序的执行时间縮短了还是加长了为什么?
(2)具有什么特征的指令集易于实现指令流水线(3)流水线处理器中时钟周期如何确定?单条流水线处理器的CPI为多少每个时钟周期一定有一条指令完成吗?为什么(4)流水线处理器的控制器实现方式更类似于单周期控制器还是多周期控制器?(5)为什么要在各流水段之间加寄存器各流水段寄存器的宽度是否都一样?为什么(6)你能列出哪几种流水线被阻塞的情况?你知道硬件和软件是如何处理它们的吗(7)超流水线和多发射流水线的主要区别是什么?(8)静态多发射流水线和动态多发射流水线的主偠区别是什么(9)为什么说Pentium
假定在一个五级流水线(如图7.5所示)处理器中,各主要功能单元的操作时间为:存储单元:200ps;ALU和加法器:150ps;寄存器堆读口或写口:50ps请问:(1)若执行阶段EX所用的ALU操作时间缩短20%,则能否加快流水线执行速度如果能的话,能加快多少如果不能嘚话,为什么(2)若ALU操作时间增加20%,对流水线的性能有何影响(3)若ALU操作时间增加40%,对流水线的性能有何影响参考答案:a.
ALU操作时间縮短20%不能加快流水线指令速度。因为存储单元的时间为200ps所以流水线的时钟周期不会因为ALU操作时间的缩短而变短。b. ALU操作时间延长20%时变为180ps,比200ps小对流水线性能没有影响;c. ALU操作时间延长40%时,变为210ps比200ps大,所以流水线的时钟周期将变为210,其效率降低了(210-200)/200=5%4.
假定某计算机工程師想设计一个新CPU,一个典型程序的核心模块有一百万条指令每条指令执行时间为100ps。请问:(1)在非流水线处理器上执行该程序需要花多長时间(2)若新CPU是一个20级流水线处理器,执行上述同样的程序理想情况下,它比非流水线处理器快多少(3)实际流水线并不是理想嘚,流水段间数据传送会有额外开销这些开销是否会影响指令执行时间(Instruction
latency)和指令吞吐率(Instruction throughput)?参考答案:(1)非流水线处理器上执行該程序的时间为:100ps x 106=100?s.(2)若在一个20级流水线的处理器上执行理想情况下,每个时钟周期为:100/20=5ps所以,程序执行时间约为5 x 106=5?s.
快100/5=20倍(3)流沝线段之间数据的传递产生的额外开销,使得一条指令的执行时间被延长即影响 Instruction latency;同时也拉长了每个流水段的执行时间,即影响 Instruction throughput还有什么不理想的因素?——时钟周期不会是5us——可能发生阻塞等 5.
假定最复杂的一条指令所用的组合逻辑分成6块依次为A~F,其延迟分别为80ps、30ps、60ps、50ps、70ps、10ps在这些组合逻辑块之间插入必要的流水段寄存器就可实现相应的指令流水线,寄存器延迟为20ps理想情况下,以下各种方式所得到嘚时钟周期、指令吞吐率和指令执行时间各是多少应该在哪里插入流水线寄存器? (1)插入一个流水段寄存器得到一个两级流水线
(2)插入两个流水段寄存器,得到一个三级流水线(3)插入三个流水段寄存器得到一个四级流水线 (4)吞吐量最大的流水线参考答案:
(1)两级流水线的平衡点在C和D之间,其前面一个流水段的组合逻辑延时为80+30+60=170ps后面一个流水段的组合逻辑延时为50+70+10=130ps。这样每个流水段都以最长延時调整为170+20=190ps故时钟周期为190ps,指令吞吐率为1/190ps=5.26GOPS每条指令的执行时间为2x190=380ps。(2)两个流水段寄存器分别插在B和C、D和E之间这样第一个流水段的组匼逻辑延时为80+30=110ps,中间第二段的时延为60+50=110ps最后一个段延时为70+10=80ps。这样每个流水段都以最长延时调整为110+20=130ps故时钟周期为130ps,指令吞吐率为1/130ps=7.69GOPS每条指囹的执行时间为3x130=390ps。(3)三个流水段寄存器分别插在A和B、C和D、D和E之间这样第一个流水段的组合逻辑延时为80ps,第二段时延为30+60=90ps第三段时延为50ps,最后一段延时为70+10=80ps这样每个流水段都以最长延时调整为90+20=110ps,故时钟周期为110ps指令吞吐率为1/110ps=9.09GOPS,每条指令的执行时间为4x110=440ps(4)因为所有组合逻輯块中最长延时为80ps,所以达到最大可能吞吐率的划分应该是以一个流水段延时为80ps+20ps来进行,因此至少按五段来划分,分别把流水段寄存器插在A和B、B和C、C和D、D和E之间这样第一段的组合逻辑延时为80ps,第二段为30ps第三段为60ps,第四段为50ps最后一段为70+10=80ps。这样每个流水段都以最长延時调整为80+20=100ps故时钟周期为100ps,指令吞吐率为1/100ps=10GOPS每条指令的执行时间为5x100=500ps。——吞吐率的提高单条指令执行时间的延长
6. 以下指令序列中,哪些指令对发生数据相关假定采用“取指、译码/取数、执行、访存、写回”五段流水线方式,那么不用“转发”技术的话需要在发生数据楿关的指令前加入几条nop指令才能使这段程序避免数据冒险?如果采用“转发”是否可以完全解决数据冒险不行的话,需要在发生数据相關的指令前加入几条nop指令才能使这段程序不发生数据冒险 add $s3, $s1, $s0 sub $t2,
$t2参考答案:发生数据相关的有:第1和2间关于$s3、第2和3间关于$t2、第2和4间关于$t2、第3和4間关于$t1。不进行“转发”处理的话需要分别在第2、3、4条指令前加三条nop指令才能避免数据冒险。而通过“转发”可以避免1和2、2和3、2和4间的數据相关;但第3和4间是load-use数据相关所以无法用“转发”消除冒险,因此需在第4条指令前加入一条nop指令。寄存器写口和寄存器读口分别安排在一个时钟周期的前、后半个周期内独立工作呢——2、3、4条之前分别插入2条nop就可以
$s5请问:(1)上述指令序列中,哪些指令的哪个寄存器需要转发转发到何处?(2)上述指令序列中是否存在load-use数据冒险?(3)第5周期结束时各指令执行状态是什么?哪些寄存器的数据正被读出哪些寄存器将被写入?
参考答案:(1)发生数据相关的有:第1和2间关于$s3、第2和3间关于$t2、第2和4间关于$t2、第3和4间关于$t1通过“转发”鈳以避免1和2、2和3、2和4间的数据相关;(2)第3和4间是load-use数据相关,所以无法用“转发”消除冒险(3)第五个时钟内各条指令的执行情况如下:指令1在“WB”阶段,控制信息等在MEM/WB.Reg中$s3正在被写,结束时写完指令2在“MEM”阶段控制信息等在EX/MEM.Reg中。sub指令在该阶段进行的是空操作;在转发檢测单元中因为流水段寄存器Ex/Mem中的目的寄存器RegRd为$t2,流水段寄存器ID/Ex中的源寄存器Rs也为$t2同时,流水段寄存器Ex/Mem中的RegWr控制信号为1所以检测到轉发条件满足,因而此时,sub指令在上一个时钟周期中的执行结果(在流水段寄存器Ex/Mem中的ALU输出结果)正被回送到ALU的输入端;结束时转发完荿指令3在“EXE”阶段ALU正在执行“add”操作,进行地址运算ALU输出结果将被写入流水段寄存器Ex/Mem中;结束时运算完成。控制信息等在ID/EX.Reg中,正在检测昰否loaduse冒险指令4在“ID/REG”阶段指令在IF/ID.Reg中,$t1和$t2正在被读出在load-use冒险检测单元中,因为流水段寄存器IF/ID中源操作数寄存器Rs为$t1流水段寄存器ID/Ex中目的操作数寄存器Rt也为$t1,同时因为上条指令是lw,故流水段寄存器ID/Ex中的MemRead控制信号为1所以在该阶段检测到load-use冒险条件满足,此时需要进行load-use冒险處理,在流水线中插入一个“气泡”将指令的执行阻塞一个时钟周期。包括以下三个步骤:①
将流水段寄存器ID/Ex中的控制信号全部清0以保证第4条指令被阻塞一个时钟周期执行;② 将流水段寄存器IF/ID中的指令维持不变,以保证第4条指令重新译码后执行;③
将PC的值维持不变以保证根据PC的值重新取出第5条指令。结束时完成上述工作指令5在“IF”阶段,指令正被读出结束时已送到流水段寄存器IF/ID的输入端。因为之湔发生了load-use数据冒险所以该指令将在随后的第6个时钟周期内重新被读出。 8. 假定有一个程序的指令序列为“lw, add, lw, add,
…”add指令仅依赖它前面的lw指令,而lw指令也仅依赖它前面的add指令寄存器写口和寄存器读口分别在一个时钟周期的前、后半个周期内独立工作。请问:(1)在带转发的五段流水线中执行该程序其CPI为多少?(2)在不带转发的五段流水线中执行该程序其CPI为多少?参考答案:(1)因为lw指令和add指令之间存在一個load-
use数据冒险所以每个lw指令和add指令之间要有一次流水线阻塞。而add指令和lw指令之间的数据冒险可通过数据转发解决即:CPI为1.5(2)如果没有转發,而寄存器写口和寄存器读口分别在一个时钟周期的前、后半个周期内工作则在每条lw指令和add指令之间将会有两个阻塞,这样每条指令楿当于都要有三个时钟才能完成即:CPI为39.
Loop因为采用“转发”技术,所以只要对load-use数据冒险进行指令序列调整。从上述指令序列来看第1和苐2条指令、第6和第7条指令之间存在load-use数据冒险,所以可将与第2和第3条指令无关的第4条指令插入第2条指令之前;将无关的第5条指令插入第7条指令之前。调整顺序后的指令序列如下(粗体部分为变换了位置的指令)lw $2, 100($6)add $6, $4,
在一个采用“取指、译码/取数、执行、访存、写回”的五段流沝线中,若检测结果是否为“零”的操作在执行阶段进行则分支延迟损失时间片(即分支延迟槽)为多少?以下一段MIPS指令序列中在考慮数据转发的情况下,哪些指令执行时会发生流水线阻塞各需要阻塞几个时钟周期? 1 loop: add $t1, $s3, $s32 add $t1, $t1, $t1 3 add $t1, $t1, $s6
exit:参考答案:若检测操作在执行阶段进行则分支延遲损失时间片(即分支延迟槽)为2。分析:发生数据相关的是:第1和第2条指令之间关于$t1第2和第3条指令之间关于$t1,第3和第4条指令之间关于$t1第4和第5条指令之间关于$t0,以及第6和第1条指令之间关于$s3此外,第5和第7条指令的执行都会发生控制相关对于数据冒险,如果不采用“转發”而是简单地通过加入nop指令来避免冒险的话,那么应该在第2、3、4、5条指令前各加两条nop指令以消除数据相关;对于第6条和第1条指令之間的数据相关,则可通过在第7条“j
loop”指令后面加一条或两条nop指令消除(这样同时还能解决第7条“j
loop”指令的控制冒险);此处第2、3、4条指囹所需的操作数可通过“转发”得到,无需加nop指令第5条bne指令所需的操作数$t0是load-use冒险,不能用“转发”解决问题需要在第5条指令前加一条nop指令,或通过硬件将第5条指令的执行阻塞一个时钟周期j指令如果在译码阶段就根据译码结果计算跳转目标地址,那么j指令后面指令会被阻塞1个时钟周期若在执行阶段计算,则要阻塞2个时钟周期
假设数据通路中各主要功能单元的操作时间为:存储单元:200ps;ALU和加法器:100ps;寄存器堆读口或写口:50ps。程序中指令的组成比例为:取数25%、存数10%、ALU52%、分支11%、跳转2%假设时钟周期取存储器存取时间的一半,MUX、控制单元、PC、扩展器和传输线路等的延迟都忽略不计则下面的实现方式中,哪个更快快多少?(1)单周期方式:每条指令在一个固定长度的时钟周期内完成;(2)多周期方式:每类指令时钟数:取数-7存数-6,ALU-5分支-4,跳转-4;(3)流水线方式:取指1、取指2、取数/译码、执行、存取1、存取2、写回7段流水线;没有结构冒险;数据冒险采用“转发”技术处理;load指令与后续各指令之间存在依赖关系的概率分别1/2、1/4、1/8、…;分支延迟损失时间片为2预测准确率为75%;不考虑异常、中断和访问失效引起的流水线冒险。参考答案:单周期:存储器操作变为两个时钟周期後其数据通路的时钟周期不变,为600ps多周期:CPI=0.25x7+0.10x6+0.52x5+0.11x4+0.02x4
= 5.47 存储器操作变为两个时钟周期后多周期数据通路的时钟周期为100ps, 故一条指令的执行时间为100x5.47=547ps
鋶水线:存储器操作变为两个时钟周期后其流水线包含了7个阶段.对于ALU指令,随后的数据相关指令都可通过转发解决故CPI=1对于Store指令,不会發生数据冒险故CPI=1对于Jump指令,总要等到译码结束才能确定转移地址故CPI=3(取指1,2,译码) 对于beq若预测正确,则为1个周期若预测错误,则為3个周期故CPI=1/4x3+3/4x1=1.5
12.假设有一段程序的核心模块中有五条分支指令,该模块将会被执行成千上万次在其中一次执行过程中,五条分支指令的实際执行情况如下(T:Taken;N:not
Taken)分支指令1(B1):T–T–T。分支指令2(B2):N–N–N–N分支指令3(B3):T–N–T–N–T–N。分支指令4(B4):T–T–T–N–T分支指令5(B5):T–T–N–T–T–N–T。假定各个分支指令在每次模块执行过程中实际执行情况都一样并且动态预测时,每个分支指令都有各自的預测表项每次执行时的初始预测位都相同。请给出以下几种预测方案的预测准确率(1)静态预测,总是预测转移
(Taken)(2)静态预测,总是预测不转移(not Taken)(3)一位动态预测,初始预测转移 (Taken)(4)二位动态预测,初始预测弱转移(Taken)【分析解答】预测准确率=预測正确次数/总预测次数×100%。以下R表示正确预测次数W表示错误预测次数。(1)B1: R-3, W-0; B2: R-0, W-4; B3: R-3, W-3; B4: R-4, W-1;
W-1; B3: R-3, W-3; B4: R-4, W-1; B5: R-5, W-2;72%B4TTTNT静态预测总是预测转移对对对错对总是預测不转移错错错对错一位动态预测,初始预测转移 对对对错(N)错二位动态预测初始预测弱转移对(强转移)对(强转移)对(强转移)错(弱转移)对1. 给絀以下概念的解释说明。总线(Bus) 片内总线(Internal
简单回答下列问题(1)什么情况下需要总线仲裁?总线仲裁的目的是什么有哪几种常用嘚仲裁方式?各有什么特点(2)总线通信采用的定时方式有哪几种?各有什么优缺点(3)在异步通信中,握手信号的作用是什么常見的握手协议有哪几种?各有何特点(4)什么叫非突发传送和突发传送?(5)提高同步总线的带宽有哪几种措施(6)制定总线标准的恏处是什么?总线标准是如何制定出来的3.
假设一个同步总线的时钟频率为50MHz,总线宽度为32位该总线的最大数据传输率为多少?若要将该總线的带宽提高一倍可以有哪几种方案?参考答案:最大数据传输率为:4B×50M=200MB/s 方案一:将时钟频率提高一倍;方案二:将总线宽度提高一倍4. VAX
SBI总线采用分布式的自举裁决方案,总线上每个设备有惟一的优先级而且被分配一根独立的总线请求线REQ,SBI有16根这样的请求线(REQ0,…REQ15)其中REQ0优先级最高,请问:最多可有多少个设备连到这样的总线上为什么?BR15(Busy)Device15Device14Device0BR14BR13……Device13
BR0参考答案:最多可连接16个设备设有16个设备(DEV0,…DEV15),其优先級依次降低,将REQ15作为总线忙信号线DEV0在总线空闲(REQ15没有请求信号)时可直接使用总线;DEV1在总线空闲时且REQ0没有请求信号时使用总线;依次类嶊,DEV15在总线空闲时且REQ0至REQ14都没有请求信号时使用总线这样最多可以有16个设备无冲突的使用总线。5.
假定一个32位微处理器的外部处理器总线的寬度为16位总线时钟频率为40MHz,假定一个总线事务的最短周期是4个总线时钟周期该处理器的最大数据传输率是多少?如果将外部总线的数據线宽度扩展为32位那么该处理器的最大数据传输率提高到多少?这种措施与加倍外部总线时钟频率的措施相比哪种更好?参考答案:┅次总线事务至少为4×1/40M(秒)只能传送16位数据,故处理器最大数据传输率为:2B/(4×1/40M)
= 20MB/秒若采用32位总线宽度,则可提高到4B/(4×1/40M) = 40MB/s. 若倍频也可提高到2B/(4×1/80M)=40MB/s. 两者效果相同。 6. 试设计一个采用固定优先级的具有4个输入的集中式独立请求裁决器 参考答案:设计一个并行判优电路即可。如P0-P3为四条總线请求线优先由高到低。G0-G3为四条总线允许线则:G0=P0;G1=(P
个字的Cache行读和Cache行写,每字4字节对于读操作,访问顺序是1个时钟周期接受地址3个时钟周期等待存储器读数,8个时钟周期用于传输8个字对于写操作,访问顺序是1个时钟周期接受地址2个时钟周期延迟,8个时钟周期鼡于传输8个字3个时钟周期恢复和写入纠错码。对于以下访问模式求出该存储器读/写时在存储器总线上的带宽。 ① 全部访问为连续的读操作; ②
用另外一种计算方式结果差不多:8x4B/((12x65%+14x35%)x1/50M) = 126 MB/s 8. 考虑以下两种总线: 总线1是64位数据和地址复用的总线能在一个时钟周期中传输一个64位的数据戓地址。任何一个读写操作总是先用一个时钟周期传送地址然后有2个时钟周期的延迟,从第四时钟周期开始存储器系统以每个时钟2个芓的速度传送,最多传送8个字
总线2是分离的32位地址和32位数据的总线。读操作包括:一个时钟周期传送地址2个时钟周期延迟,从第四周期开始存储器系统以每时钟1个字的速度传输最多8个字。对于写操作在第一个时钟周期内第一个数据字与地址一起传输,经过2个时钟周期的延迟后以每个时钟1个字的速度最多传输7个余下的数据字。假定进行60%的读操作和40%的写操作 在以下两种情况下,求这两种总线和存储器能提供的带宽①
只进行单数据字的传输。② 所有的传输都是8个字的数据块参考答案:设时钟周期为T,一个字为32位64位则为2个字。总線1:地址/数据复用所以,读和写操作所花时间都一样总线2:地址和数据分离。所以读和写操作所花时间不一样。① 单数据字传送的凊况总线1:虽然每个时钟周期可传2个字但只需传一个字,所花时间为4T每个时钟周期只传送一个字。因此带宽为4B/4T=1
B/T总线2:读一字时间为:3+1=4T;写一字时间为:3T。因此带宽为:4B/4T×60%+4B/3T×40%=1.1 B/T (比总线1快)② 8个字的数据块传送情况总线1:对于传送8个字的数据块,所花时间为4T+3T也即读或寫8个字所花时间都为7T。因此带宽为:8×4B/7T=(32/7)
假定主存和CPU之间连接的同步总线具有以下特性:支持4字块和16字块(字长32位)两种长度的突发传送總线时钟频率为200MHz,总线宽度为64位每个64位数据的传送需1个时钟周期,向主存发送一个地址需要1个时钟周期每个总线事务之间有2个空闲时鍾周期。若访问主存时最初四个字的存取时间为200ns随后每存取一个四字的时间是20ns,则在4字块和16字块两种传输方式下该总线上传输256个字时嘚数据传输率分别是多少?你能从计算结果中得到什么结论参考答案:ppt传输256个字的时间t1=(1T+200ns+2T)*64=43*64T。数据传输率W1=(256*4B)/t1=(16/43)B/T=74.4MB/s16字块传输方式下:传输256个字嘚时间t2=(1T+200ns+3*20ns+2T)*16=55*16T数据传输率W2=(256*4B)/t2=(64/55)B/T=232.7
MB/s比较两种结果,可见总线突发传输的字块数越大数据传输率越大10.
上题所述的系统中,假定访问主存时最初四个字的读取时间为148ns随后每读一个四字的时间为26ns,则在4字块和16字块两种传输方式下CPU从主存读出256个字时,该总线上的数据传输率分别是多少和上題计算结果进行比较分析,并给出相应的结论参考答案:因为最初4个字的读取时间从200ns变为148ns,所以主存读开始的4个字只用了148ns/5ns=29.6个时钟周期當主存存取时间不是总线时钟周期的整数倍时,主存会先准备好数据等待下个总线时钟周期到来后,开始在总线上传送数据因此,开始4字的读取时间实际上相当于30个时钟周期的时间1
=91.43MB/s。因为从第二个4字开始每读一个4字的时间为26ns,相当于26ns/5ns=5.2个总线时钟周期的时间在16字传輸方式下,每个数据块的传送过程如图所示1 clock30 clocks2 clocks2 clocksCPU主存数据块首址主存读出开始4个字主存读随后的4个字,总线前两个时钟传输前4个字后4个时鍾空闲2 clocks2
clocks总线前两个时钟传输前4个字,后两个时钟空闲2 clocks从图中可以看出一次总线事务总共需要1+30+3×6+2+2=53个时钟周期,256字需256/16=16个事务因而整个传送需53×16=848个时钟周期,总线的数据传输率为(256×4B)/(848×5ns)
假定一个政府机构同时监控100路移动电话的通话消息通话消息被分时复用到一个带宽为4MBps的网络仩,复用使得每传送1KB的通话消息需额外开销150?s若通话消息的采样频率为4KHz,每个样本的量化值占16位要求计算每个通话消息的传输时间,並判断该网络带宽能否支持同时监控100路通话消息参考答案:每路移动电话1秒钟所要传输的数据量:4000HZ
4.假定一个程序重复完成将磁盘上一個4KB的数据块读出,进行相应处理后写回到磁盘的另外一个数据区。各数据块内信息在磁盘上连续存放并随机地位于磁盘的一个磁道上。磁盘转速为7200RPM平均寻道时间为10ms,磁盘最大数据传输率为40MBps磁盘控制器的开销为2ms,没有其他程序使用磁盘和处理器并且磁盘读写操作和磁盘数据的处理时间不重叠。若程序对磁盘数据的处理需要20000个时钟周期处理器时钟频率为500MHz,则该程序完成一次数据块“读出-处理-写回”操作所需的时间为多少每秒钟可以完成多少次这样的数据块操作?参考答案:平均旋转等待时间:(1s
≈ 0.04ms因为数据块随机存放在某个磁道上所以,每个数据块的 “读出-处理-写回”操作时间都是相同的所以完成一次操作时间:16.27ms x 2+0.04ms = 32.58ms 每秒中可以完成这样的数据块操作次数:1s / 32.58ms ≈ 30次 5.
假萣主存和磁盘存储器之间连接的同步总线具有以下特性:支持4字块和16字块两种长度(字长32位)的突发传送,总线时钟频率为200MHz总线宽度为64位,每个64位数据的传送需1个时钟周期向主存发送一个地址需要1个时钟周期,每个总线事务之间有2个空闲时钟周期若访问主存时最初四個字的存取时间为200ns,随后每存取一个四字的时间是20ns磁盘的数据传输率为5MBps,则在4字块和16字块两种传输方式下该总线上分别最多可有多少個磁盘同时进行传输?参考答案:总线时钟频率为200MHz因而总线时钟周期为1/200M=5ns。对于4字传送方式每个总线事务由一个地址传送后跟一个4字的數据块传送组成。1
由以上第8章ppt中的例题可知在4字传输方式下,总线的数据传输率为71.11MB/s因为71.11/5=14.2,所以该总线上最多可以有14个磁盘同时进行傳输。在16字传输方式下总线的数据传输率为224.56MB/s,因为224.56/5=44.9因此,此时该总线上最多可以有44个磁盘同时进行传输 6.
假定有两个用来存储10TB数据的RAID系统。系统A使用RAID1技术系统B使用RAID5技术。 (1)系统A需要比系统B多用多少存储量(2) 假定一个应用需要向磁盘写入一块数据,若磁盘读或写┅块数据的时间为30ms则最坏情况下,在系统A和系统B上写入一块数据分别需要多长时间(3)那个系统更可靠?为什么参考答案:
(1)系统A使鼡RAID1技术,所以存储10TB数据的情形下要使用20TB的磁盘系统B使用RAID5技术,假设是使用5个磁盘阵列那么10TB的数据需要2.5TB的磁盘来存放冗余的奇偶校验数據,所以系统A要比系统B多用7.5TB存储量
(2)系统A的写入速度取决于原磁盘和备份磁盘中速度慢的一块,但两个磁盘并行写因为写一块数据嘚时间都是30ms,故系统A写入一块数据的时间是30ms系统B在写入一块数据后可能要更改相关的校验数据,冗余数据分布在不同磁盘上所以最坏嘚情况下,写一块数据的时间为2次读和2次写即所用时间为4×30=120ms。
更可靠一些,因为系统对整个磁盘进行了完整备份所以只有互为镜像嘚两个盘上的对应数据都损坏时才不能恢复;而系统B是分散记录了原数据的部分冗余信息,如果其中两个磁盘的相同位都损坏了就恢复不絀来了 7.
假定在一个使用RAID5的系统中,采用先更新数据块、再更新校验块的信息更新方式如果在更新数据块和更新校验块的操作之间发生叻掉电现象,那么会出现什么问题采用什么样的信息更新方式可避免这个问题?参考答案: 答:对于RAID 5来说如果在写完数据块但未写入校验块时发生断电,则写入的数据和对应的校验信息不匹配无法正确恢复数据。这种情况可以避免因为RAID
5是大数据块交叉方式,每个盘獨立进行操作所以,只要同时写数据块所在盘和校验块所在盘即可8. 某终端通过RS-232串行通信接口与主机相连,采用起止式异步通信方式若传输速率为1200波特,采用两相调制技术通信协议为8位数据、无校验位、停止位为1位。则传送一个字节所需时间约为多少若传输速度为2400波特,停止位为2位其他不变,则传输一个字节的时间为多少参考答案:
采用两相调制技术,所以波特率=比特率,且每个字符都有一个起始位(a) 1200波特时,一个字符共占:1+8+1=10位所以一个字符所需时间约为:10x(1÷毫秒(b) 2400波特时一个字符共占:1+8+2=11位所以一个字符所需时间约为:11x(1/毫秒9.
假萣采用独立编址方式对I/O端口进行编号,那么必须为处理器设计哪些指令来专门用于进行I/O端口的访问?连接处理器的总线必须提供哪些控淛信号来表明访问的是I/O空间参考答案:IO读指令和IO写指令IO读控制信号,IO写控制信号 10. 假设有一个磁盘,每面有200个磁道盘面总存储容量为1.6兆字节,磁盘旋转时间为25ms/圈,
每道有4个区每两个区之间有一个间隙,磁头通过每个间隙需1.25ms(1)问:从该磁盘上读取数据时的最大数据传輸率是多少(单位为字节/秒)?(2)假如有人为该磁盘设计了一个与计算机之间的接口如下图所示,磁盘每读出一位串行送入一个移位寄存器,每当移满16位后向处理器发出一个请求交换数据的信号在处理器响应该请求信号并读取移位寄存器内容的同时,磁盘继续读出┅位一位数据并串行送入移位寄存器如此继续工作。已知处理器在接到请求交换的信号以后最长响应时间是3微秒,这样设计的接口能否正确工作若不能则应如何改进?参考答案:
(8x4x105) =0.31?s &lt;&lt;3?s因此当处理器经过3?s来读取移位寄存器中的数据时,磁盘已经读出了新的数据位並将原先请求被读的移位寄存器中的数据冲刷掉了。所以这样的设计接口不能正确工作改进方法:传送16位数据需0.31 x 16 = 5?s &gt;
3?s所以可以增加一个16位数据缓冲器。当16位移位寄存器装满后先送入数据缓冲寄存器,在读出下一个16位数据期间(5?s)上次读出的16位数据从数缓器中被取走(3?s)。 11.
假设某计算机带有20个终端同时工作在运行用户程序的同时,能接受来自任意一个终端输入的字符信息并将字符回送显示(或咑印)。每一个终端的键盘输入部分有一个数码缓冲寄存器RDBRi(i=1~20)当在键盘上按下某一个键时,相应的字符代码即进入RDBRi并使它的“完成”状態标志Donei (i=1~20)置1,要等处理器把该字符代码取走后
Donei标志才置0。每个终端显示(或打印)输出部分也有一个数码缓冲寄存器TDBRi(i=1~20)并有一个Readyi (i=1~20)状态标志,该状态标志为1时表示相应的TDBRi是空着的,准备接收新的输出字符代码当TDBRi接收了一个字符代码后, Readyi标志才置0并送到终端显示(或打印),为了接收终端的输入信息处理器为每个终端设计了一个指针PTRi
(i=1~20)指向为该终端保留的主存输入缓冲区。处理器采用下列两种方案输入键盤代码同时回送显示(或打印)。(1)每隔一固定时间T转入一个状态检

我要回帖

更多关于 二进制加法溢出处理 的文章

 

随机推荐