当前位置:文档之家› 计算机组成与系统结构课后答案全

计算机组成与系统结构课后答案全

计算机组成与系统结构课后答案全
计算机组成与系统结构课后答案全

第 1 章习题答案

5.若有两个基准测试程序P1和P2在机器M1和M2上运行,假定M1和M2的价格分别是5000元和8000元,下表给出了P1和P2在M1和M2上所花的时间和指令条数。

请回答下列问题:

(1)对于P1,哪台机器的速度快?快多少?对于P2呢?

(2)在M1上执行P1和P2的速度分别是多少MIPS?在M2上的执行速度又各是多少?从执行速度来看,对于P2,哪台机器的速度快?快多少?

(3)假定M1和M2的时钟频率各是800MHz和,则在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/=100MIPS。

对于M2,P1的速度为:150M/5=30MIPS;P2为420k/=70MIPS。

从执行速度来看,对于P2,因为100/70=倍,所以M1比M2快倍。

(3)在M1上执行P1时的平均时钟周期数CPI为:10×800M/(200×106)=40。

在M2上执行P1时的平均时钟周期数CPI为:5×(150×106)=40。

(4)考虑运行P1时M1和M2的性价比,因为该用户主要关心系统的响应时间,所以性价比中的性能应考虑执行时间,其性能为执行时间的倒数。故性价比R为:

R=1/(执行时间×价格)

R越大说明性价比越高,也即,“执行时间×价格”的值越小,则性价比越高。

因为10×5000 > 5×8000,所以,M2的性价比高。应选择M2。

(5)P1和P2需要同等考虑,性能有多种方式:执行时间总和、算术平均、几何平均。

若用算术平均方式,则:因为(10+/2×5000 > (5+/2×8000,所以M2的性价比高,应选择M2。

若用几何平均方式,则:因为sqrt(10× ×5000 < sqrt(5××8000,所以M1的性价比高,应选择M1。

6.若机器M1和M2具有相同的指令集,其时钟频率分别为1GHz和。在指令集中有五种不同类型的指令

请回答下列问题:

(1)M1和M2的峰值MIPS各是多少?

(2)假定某程序P的指令序列中,五类指令具有完全相同的指令条数,则程序P在M1和M2上运行时,哪台机器更快?快多少?在M1和M2上执行程序P时的平均时钟周期数CPI各是多少?

参考答案:

(1)M1上可以选择一段都是A类指令组成的程序,其峰值MIPS为1000MIPS。

M2上可以选择一段A和B类指令组成的程序,其峰值MIPS为1500/2=750MIPS。

(2)5类指令具有完全相同的指令条数,所以各占20%。

在M1和M2上执行程序P时的平均时钟周期数CPI分别为:

M1:20%×(1+2+2+3+4)= ×12 =

M2:20%×(2+2+4+5+6)= ×19 =

假设程序P的指令条数为N,则在M1和M2上的执行时间分别为:

M1:× N×1/1G = (ns)

M2:×N×1/ = N (ns)

M1执行P的速度更快,每条指令平均快,也即M1比M2快×100%≈5%。

(思考:如果说程序P在M1上执行比M2上快–/×100%= %,那么,这个结论显然是错误的。请问错在什么地方?)

7.假设同一套指令集用不同的方法设计了两种机器M1和M2。机器M1的时钟周期为,机器M2的时钟周期为。某个程序P在机器M1上运行时的CPI为4,在M2上的CPI为2。对于程序P来说,哪台机器的执行速度更快?快多少?

参考答案:

假设程序P的指令条数为N,则在M1和M2上的执行时间分别为:

M1:4 N× = (ns)

M2:2 N× = N (ns)

所以,M2执行P的速度更快,每条指令平均快,比M1快×100%=25%。

8.假设某机器M的时钟频率为4GHz,用户程序P在M上的指令条数为8×109,其CPI为,则P在M上的执行时间是多少?若在机器M上从程序P开始启动到执行结束所需的时间是4秒,则P占用的CPU时间的百分比是多少?

参考答案:

程序P在M上的执行时间为:×8×109×1/4G = s,从启动P执行开始到执行结束的总时间为4秒,其中秒是P在CPU上真正的执行时间,其他时间可能执行操作系统程序或其他用户程序。

程序P占用的CPU时间的百分比为:4 = %。

9.假定某编译器对某段高级语言程序编译生成两种不同的指令序列S1和S2,在时钟频率为500MHz的机器M上运行,目标指令序列中用到的指令类型有A、B、C和D四类。四类指令在M上的CPI和两个指令序列所用的各类指令条数如下表所示。

请问:S1和S2各有多少条指令?CPI各为多少?所含的时钟周期数各为多少?执行时间各为多少?

参考答案:

S1有10条指令,CPI为 (5×1+2×2+2×3+1×4)/10=, 所含的时钟周期数为10×=19,执行时间为19/500M = 38ns。

S2有8条指令,CPI为 (1×1+1×2+1×3+5×4)/8 =, 所含的时钟周期数为8×=26,执行时间为26/500M = 52ns。

(注:从上述结果来看,对于同一个高级语言源程序,在同一台机器上所生成的目标程序不同,其执行时间可能不同,而且,并不是指令条数少的目标程序执行时间就一定少。)

10.假定机器M的时钟频率为,某程序P在机器M上的执行时间为12秒钟。对P优化时,将其所有的乘4指令都换成了一条左移2位的指令,得到优化后的程序P’。已知在M上乘法指令的CPI为5,左移指令的CPI为2,P的执行时间是P’执行时间的倍,则P中有多少条乘法指令被替换成了左移指令被执行?

参考答案:

显然,P’的执行时间为10秒,因此,P比P’多花了2秒钟,因此,执行时被换成左移指令的乘法指令的条数为×2/(5–2) = 800M。

第二章习题答案

3.实现下列各数的转换。

(1)10= (?)2= (?) 8= (?) 16

(2) 2 = (?)10= (?) 8= (?) 16= (?) 8421

(3)(0101 1001 8421 = (?)10= (?) 2= (?) 16

(4)16 = (?)10= (?) 2

参考答案:

(1)10 = (1 2 = 8 = 16

(2)2 = 10 = 8 = 16 = (0100 0111 0101) 8421

(3)(0101 1001 8421 = 10 = …) 2 = …) 16

(4)16 = 10 = (0100 2

4.假定机器数为8位(1位符号,7位数值),写出下列各二进制数的原码和补码表示。

+,–,+,–,+,–,+0,–0

参考答案:

原码补码

+:

–:

+:溢出溢出

–:溢出

+:

–:

+0:

–0:

5.假定机器数为8位(1位符号,7位数值),写出下列各二进制数的补码和移码表示。

+1001,–1001,+1,–1,+10100,–10100,+0,–0

参考答案:

移码补码

+1001: 00001001

–1001:01110111

+1:00000001

–1:0

+10100:00010100

–10100:01101100

+0:00000000

–0:00000000

6.已知 [x]补,求x

(1)[x]补= (2)[x]补=

(3)[x]补= (4)[x]补=

参考答案:

(1)[x]补= x = –

(2)[x]补= x = –B = –128

(3)[x]补= x = +

(4)[x]补= x = – 101101B = – 45

7.假定一台32位字长的机器中带符号整数用补码表示,浮点数用IEEE 754标准表示,寄存器R1和R2的内容分别为R1:0000108BH,R2:8080108BH。不同指令对寄存器进行不同的操作,因而,不同指令执行时寄存器内容对应的真值不同。假定执行下列运算指令时,操作数为寄存器R1和R2的内容,则R1和R2中操作数的真值分别为多少?

(1)无符号数加法指令

(2)带符号整数乘法指令

(3)单精度浮点数减法指令

参考答案:

R1 = 0000108BH = 0000 0000 0000 0000 0001 0000 1000 1011b

R2 = 8080108BH = 1000 0000 1000 0000 0001 0000 1000 1011b

(1)对于无符号数加法指令,R1和R2中是操作数的无符号数表示,因此,其真值分别为R1:108BH, R2:8080108BH。

(2)对于带符号整数乘法指令,R1和R2中是操作数的带符号整数补码表示,由最高位可知, R1为正数, R2为负数。R1的真值为+108BH, R2的真值为–(0111 1111 0111 1111 1110 1111 0111 0100b + 1b) = –7F7FEF75H。

(3)对于单精度浮点数减法指令,R1和R2中是操作数的IEEE754单精度浮点数表示。在IEEE 754 标准中,单精度浮点数的位数为32位,其中包含1位符号位,8位阶码,23位尾数。

由R1中的内容可知,其符号位为0,表示其为正数,阶码为0000 0000,尾数部分为000 0000 0001 0000 1000 1011,故其为非规格化浮点数,指数为–126,尾数中没有隐藏的1,用十六进制表

示尾数为+,故R1表示的真值为+ × 10-126。

由R2中的内容可知,其符号位为1,表示其为负数,阶码为0000 0001,尾数部分为000 0000 0001 0000 1000 1011,故其为规格化浮点数,指数为1–127 = –126,尾数中有隐藏的1,用

十六进制表示尾数为–,故R2表示的真值为–× 10-126

8.假定机器M的字长为32位,用补码表示带符号整数。下表第一列给出了在机器M上执行的C语言程

9.以下是一个C语言程序,用来计算一个数组a中每个元素的和。当参数len为0时,返回值应该是0,但是在机器上执行时,却发生了存储器访问异常。请问这是什么原因造成的,并说明程序应该如何修改。

1 float sum_elements(float a[], unsigned len)

2 {

3 int i;

4 float result = 0;

5

6 for (i = 0; i <= len–1; i++)

7 result += a[i];

8 return result;

9 }

参考答案:

参数len的类型是unsigned,所以,当len=0时,执行len-1的结果为11…1,是最大可表示的无符号数,因而,任何无符号数都比它小,使得循环体被不断执行,引起数组元素的访问越界,发生存储器访问异常。

只要将len声明为int型,或循环的测试条件改为i

10. 设某浮点数格式为:

其中,移码的偏置常数为16,补码采用一位符号位,基数为4。

(1)用这种格式表示下列十进制数:+,–,+19,–1/8。

(2)写出该格式浮点数的表示范围,并与12位定点补码整数表示范围比较。

参考答案:(假定采用0舍1入法进行舍入)

(1) + = + = × 41, 故阶码为1 +16 = 17 = 10001B, 尾数为+的补码,即,所以+表示为0 10001 011011。

– = – = –× 4–1, 故阶码为–1 + 16 =15 = 01111B, 尾数为–的补码,即, 所以–

表示为1 01111 100001。

+19 = +10011B = × 43,故阶码为3 + 16 = 19 = 10011B, 尾数为,所以+19表示为0 10011 010011。

–1/8 = – = – = –× 4–1,阶码为–1 + 16 = 15 = 01111B,尾数为–的补码,即,所以–1/8表示为1 01111 100000。

(2)该格式浮点数表示的范围如下。

正数最大值:× 411111,即:× 415 (≈230 ≈109)

正数最小值:× 400000,即:× 4–16 (≈2–34≈10–10)

负数最大值:–× 400000,即:–× 4–16

负数最小值:–× 411111,即:–× 415

因此,该格式浮点数的数量级在10–10~109之间。

12位定点补码整数的表示范围为:–211~+(211–1),即:–2048~2047

由此可见,定点数和浮点数的表示范围相差非常大。

11. 下列几种情况所能表示的数的范围是什么?

(1)16位无符号整数

(2)16位原码定点小数

(3)16位补码定点小数

(4)16位补码定点整数

(5)下述格式的浮点数(基数为2,移码的偏置常数为128)

1位8位移码7位原码

参考答案:

(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 ~–2–7×2–128。

正数:+2–135 ~ (1–2–7) ×2+127。

12. 以IEEE 754单精度浮点数格式表示下列十进制数。

+,+19,–1/8,258

参考答案:

+ = + = × 20, 故阶码为0+127=01111111B, 数符为0,尾数为…0,小数点前为隐藏位,所以+表示为0 01111111 110 0000 0000 0000 0000 0000,用十六进制表示为3FE00000H。

+19 = +10011B = + ×24,故阶码为4+127 = B, 数符为0,尾数为…0,所以+19表示为0 001 1000 0000 0000 0000 0000,用十六进制表示为H。

–1/8 = – = – = –× 2–3,阶码为–3+127 = 01111100B,数符为1,尾数为…0,所以–1/8表示为1 01111100 000 0000 0000 0000 0000 0000,用十六进制表示为BE000000H。

258=0B= ×28, 故阶码为8+127=B, 数符为0,尾数为,所以258表示为0 000 0001 0000 0000 0000 0000,用十六进制表示为H。

13.设一个变量的值为4098,要求分别用32位补码整数和IEEE 754单精度浮点格式表示该变量(结果用十六进制表示),并说明哪段二进制序列在两种表示中完全相同,为什么会相同?

参考答案:

4098 = +1 0000 0000 0010B = +1. 0000 0000 001 × 212

32位2-补码形式为:0000 0000 0000 0000 0001 0000 0000 0010(00001002H)IEEE754单精度格式为:0 0000 0000 0010 0000 0000 000 (H)

粗体部分为除隐藏位外的有效数字,因此,在两种表示中是相同的序列。

14.设一个变量的值为–47,要求分别用32位补码整数和IEEE754单精度浮点格式表示该变量(结果用十六进制表示),并说明哪种表示其值完全精确,哪种表示的是近似值。

参考答案:

–47 = –111 1111 1111 1111 1111 1111 1111 1111B

= – 1111 1111 1111 1111 1111 1111 1111 × 230

32位2-补码形式为:1000 0000 0000 0000 0000 0000 0000 0001 (H)

IEEE 754单精度格式为:1 1111 1111 1111 1111 1111 111 (CEFFFFFFH)

32位2-补码形式能表示精确的值,而浮点数表示的是近似值,低位被截断

15.下表给出了有关IEEE 754浮点格式表示中一些重要数据的取值,表中已经有最大规格化数的相应内

16.已知下列字符编码:A=100 0001,a=110 0001,0=011 0000,求E、e、f、7、G、Z、5的7位ACSII 码和第一位前加入奇校验位后的8位编码。

参考答案:

E的ASCII码为‘A’ + (‘E’–‘A’) = 100 0001 + 100 = 100 0101, 奇校验位P = 0,第一位前加入奇校验位后的8位编码是0 100 0101。

e的ASCII码为‘a’+ (‘e’–‘a’) = 110 0001 + 100 = 110 0101,奇校验位P = 1, 第一位前加入奇校验位后的8位编码是1 110 0101。

f的ASCII码为‘a’+ (‘f’–‘a’) = 110 0001 + 101 = 110 0110, 奇校验位P = 1, 第一位前加入奇校验位后的8位编码是 1 110 0110。

7的ASCII码为‘0’+ (7 - 0) = 011 0000 + 111 = 011 0111,奇校验位P = 0, 第一位前加入奇校验位后的8位编码是0 011 0111。

G的ASCII码为‘A’+ (‘G’–‘A’) = 100 0001 + 0110 = 100 0111, 奇校验位P = 1, 第一位前加入奇校验位后的8位编码是1 100 0111。

Z的ASCII码为‘A’+(‘Z’–‘A’) = 100 0001 + 11001 = 101 1010, 奇校验位P = 1, 第一位前加入奇校验位后的8位编码是 1 101 1010。

5的ASCII码为‘0’+(5 – 0) = 011 0000 + 101 = 011 0101,奇校验位P = 1, 第一位前加入奇校验位后的8位编码是 1 011 0101。

17.假定在一个程序中定义了变量x、y和i,其中,x和y是float型变量(用IEEE754单精度浮点数表示),i是16位short型变量(用补码表示)。程序执行到某一时刻,x = –、y=、i=100,它们都被写到了主存(按字节编址),其地址分别是100,108和112。请分别画出在大端机器和小端机器上变量x、y和i在内存的存放位置。

参考答案:

– = – = –× 2-3

x在机器内部的机器数为:1 01111100 00…0 (BE00 0000H)

= += + × 22

y在机器内部的机器数为:0 11100…0 (40F0 0000H)

100=64+32+4=1100100B

i在机器内部表示的机器数为:0000 0000 0110 0100(0064H)

大端机小端机

地址内容内容

100 BEH 00H

101 00H 00H

102 00H 00H

103 00H BEH

108 40H 00H

109 F0H 00H

110 00H F0H

111 00H 40H

112 00H 64H

113 64H 00H

18.假定某计算机的总线采用奇校验,每8位数据有一位校验位,若在32位数据线上传输的信息是8F 3C

AB 96H,则对应的4个校验位应为什么?若接受方收到的数据信息和校验位分别为87 3C AB 96H和0101B,则说明发生了什么情况,并给出验证过程。

参考答案:

传输信息8F 3C AB 96H展开为1000 1111 0011 1100 1010 1011 1001 0110,每8位有一个奇校验位,因此,总线上发送方送出的4个校验位应该分别为0、1、0、1。

接受方的数据信息为87 3C AB 96H,展开后为1000 0111 0011 1100 1010 1011 1001 0110;接收到的校验位分别为0、1、0、1。在接受方进行校验判断如下:

根据接收到的数据信息计算出4个奇校验位分别为1、1、0、1,将该4位校验位分别和接收到的4位校验位进行异或,得到1、0、0、0,说明数据信息的第一个字节发生传输错误。对照传输前、后的数据信息,第一字节8FH变成了87H,说明确实发生了传输错误,验证正确。

19.写出16位数据的SEC码。假定数据为0101 0001 0100 0110,说明SEC码如何正确检测数据位5的错误。

参考答案:

对于16位数据,可以如下插入校验位:

M16 M15 M14 M13 M12 P5 M11 M10 M9 M8 M7 M6 M5 P4 M4 M3 M2 P3 M1 P2 P1

其中M i是原信息数据, P i是加入的校验位,对于各个校验位的值可以如下计算

P1 = M1⊕M2⊕M3⊕M4⊕M5⊕M7⊕M9⊕M11⊕M12⊕M14⊕M16 = 1

P2 = M1⊕M3⊕M4⊕M6⊕M7⊕M10⊕M11⊕M13⊕M14 = 1

P3 = M2⊕M3⊕M4⊕M8⊕M9⊕M10⊕M11⊕M15⊕M16 = 0

P4 = M5⊕M6⊕M7⊕M8⊕M9⊕M10⊕M11 = 0

P5 = M12⊕M13⊕M14⊕M15⊕M16 = 0

所以此时P5P4P3P2P1= 00011,第五位数据出错时,数据字变为:0101 0001 0101 0110,P5’P4’P3’P2’P1’= 01010,故障字 = 00011⊕01010 = 01001,说明码字第9位出错,即M5出错。

20.假设要传送的数据信息为:100011,若约定的生成多项式为:G(x)= x3+1,则校验码为多少?假定在接收端接收到的数据信息为100010,说明如何正确检测其错误,写出检测过程。

参考答案:

原数据信息为100011,对应的报文多项式为M(x) = x5 + x + 1, 生成多项式的位数为4位,所以在原数据信息后面添加3个0,变为M’(x) = x3M(x) = x8 + x4 + x3, 用M(x)去模2除G(x),得到的余数为111,所以得到CRC码为100011 111。

检测时,用接收到的CRC码去模2除生成多项式1001,若得到的余数为0,则表明正确,否则说明传输时发生了错误。此题中接收到的CRC码为100010 111(即数据100010加检验位111),显然,用100010 111 模2除 1001,得到余数为001,不为0,说明传输时发生错误。

第 3 章习题答案

2(4)高级语言中的运算和机器语言(即指令)中的运算是什么关系?假定某一个高级语言源程序P中有乘、除运算,但机器M中不提供乘、除运算指令,则程序P能否在机器M上运行?为什么?

参考答案:(略)

3.考虑以下C语言程序代码:

int func1(unsigned word)

{

return (int) (( word <<24) >> 24);

}

int func2(unsigned word)

{

return ( (int) word <<24 ) >> 24;

}

假设在一个32位机器上执行这些函数,该机器使用二进制补码表示带符号整数。无符号数采用逻辑

函数func1的功能是把无符号数高24位清零(左移24位再逻辑右移24位),结果一定是正的有符号数;而函数func2的功能是把无符号数的高24位都变成和第25位一样,因为左移24位后进行算术右移,高24位补符号位(即第25位)。

4

5.以下是两段C语言代码,函数arith( )是直接用C语言写的,而optarith( )是对arith( )函数以某个确定的M和N编译生成的机器代码反编译生成的。根据optarith( ),可以推断函数arith( ) 中M和N的值各是多少?

#define M

#define N

int arith (int x, int y)

{

int result = 0 ;

result = x*M + y/N;

return result;

}

int optarith ( int x, int y)

{

int t = x;

x << = 4;

x - = t;

if ( y < 0 ) y += 3;

y>>2;

return x+y;

参考答案:

可以看出x*M和“int t = 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,两者相等。

思考:能否把 if ( y < 0 ) y += 3; 改成 if ( y < 0 ) y += 2; ?

不能!因为y = - 4时不正确。

6.设A4A1和B4B1分别是四位加法器的两组输入,C0为低位来的进位。当加法器分别采用串行进位和先行进位时,写出四个进位C4 C1的逻辑表达式。

参考答案:

串行进位:

C1 = X1C0+Y1C0 + X1 Y1

C2 = X2C1+Y2C1 + X2 Y2

C3 = X3C2+Y3C2 + X3 Y3

C4 = X4C3+Y4C3 + X4 Y4

并行进位:

C1 = X1Y1 + (X1+Y1)C0

C2 = X2Y2 + (X2 +Y2) X1Y1 + (X2+Y2) (X1+Y1)C0

C3 = X3Y3 + (X3 + Y3) X2Y2 + (X3 + Y3) (X2 + Y2) X1Y1 + (X3 + Y3) (X2 + Y2)(X1 + Y1)C0

C4=X4Y4+(X4+Y4)X3Y3+(X4+Y4)(X3+Y3)X2Y2+(X4+Y4)(X3+Y3)(X2+Y2)X1Y1+(X4+Y4)(X3+Y3)

(X2+Y2)(X1+Y1)C0

7.用SN74181和SN74182器件设计一个16位先行进位补码加/减运算器,画出运算器的逻辑框图,并给出零标志、进位标志、溢出标志、符号标志的生成电路。

参考答案(图略):

逻辑框图参见教材中的图和图,将两个图结合起来即可,也即只要将图中的B输入端的每一位B i取反,得到B i,和原码B i一起送到一个二路选择器,由进位C0作为选择控制信号。当C0为1时做减法,此时,选择将B i作为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

8.用SN74181和SN74182器件设计一个32位的ALU,要求采用两级先行进位结构。

(1)写出所需的SN74181和SN74182芯片数。

(2)画出32位ALU的逻辑结构图。

参考答案(图略):

将如图所示的两个16位ALU级联起来即可,级联时,低16位ALU的高位进位C16作为高16位ALU的低位进位C0,因此,只要用8片SN74181和2片SN74182。

9.已知x = 10,y = – 6,采用6位机器数表示。请按如下要求计算,并把结果还原成真值。

(1)求[x+y]补,[x–y]补。

(2)用原码一位乘法计算[x×y]原。

(3)用MBA(基4布斯)乘法计算[x×y]补。

(4)用不恢复余数法计算[x/y]原的商和余数。

(5)用不恢复余数法计算[x/y]补的商和余数。

参考答案:

[10]补= 001010 [–6]补= 111010 [6]补= 000110 [10]原= 001010 [–6]原= 100110

(1) [10+(– 6)]补= [10]补+[– 6]补= 001010+111010 = 000100 (+4)

[10–(–6)]补= [10]补+[– (–6)]补= 001010+000110 = 010000 (+16) (2)先采用无符号数乘法计算001010× 000110的乘积,原码一位乘法过程(前面两个0省略)如下:

C P Y 说明

0 0 0 0 0 0 1 1 0 P0 = 0

+ 0 0 0 0 y4 = 0,+0

0 0 0 0 0 C, P 和Y同时右移一位

0 0 0 0 0 0 0 1 1 得P1

+ 1 0 1 0 y3 = 1,+X

0 1 0 1 0 C, P 和Y同时右移一位

0 0 1 0 1 0 0 0 1 得P2

+ 1 0 1 0 y2 = 1,+X

0 1 1 1 1 0 0 0 0 C, P 和Y同时右移一位

0 0 1 1 1 1 0 0 0 得P3

+ 0 0 0 0 y1 = 0,+0

0 0 1 1 1 C, P 和Y同时右移一位

0 0 0 1 1 1 1 0 0 得P4

若两个6位数相乘的话,则还要右移两次,得 000000 111100

符号位为:0 1 = 1,因此,[X×Y]原= 1000 0011 1100

即X × Y = –11 1100B = – 60

(3) [–10]补= 110110,布斯乘法过程如下:

P Y y-1说明

0 0 0 0 0 0 1 1 1 0 1 0 0 设y-1 = 0,[P0]补= 0

y0 y-1 = 00,P、Y直接右移一位

0 0 0 0 0 0 0 1 1 1 0 1 0 得[P1]补

+ 1 1 0 1 1 0 y1 y0 =10,+[–X]补

1 1 0 1 1 0 P、Y同时右移一位

1 1 1 0 1 1 0 0 1 1 1 0 1 得[P2]补

+ 0 0 1 0 1 0 y2 y1 =01,+[X]补

0 0 0 1 0 1 P、Y同时右移一位

0 0 0 0 1 0 1 0 0 1 1 1 0 得[P3]补

+ 1 1 0 1 1 0 1 0 0 1 1 1 0 y3 y2 = 10,+[–X]补

1 1 1 0 0 0 P、Y同时右移一位

1 1 1 1 0 0 0 1 0 0 1 1 1 得[P4]补

+ 0 0 0 0 0 0 0 1 0 0 1 1 1 y4 y3 = 11,+0

1 1 1 1 0 0 P、Y同时右移一位

1 1 1 1 1 0 0 0 1 0 0 1 1 得[P5]补

+ 0 0 0 0 0 0 0 0 1 0 0 1 1 y5 y4 = 11,+0

1 1 1 1 1 0 P、Y同时右移一位

1 1 1 1 1 1 0 0 0 1 0 0 1 得[P6]补

因此,[X × Y]补=1111 1100 0100,即X × Y = –11 1100B= – 60

(4)因为除法计算是2n位数除n位数,所以[6]原=0110,[10]原=0000 1010,[–6]补=1010,商的符号位:0 1 = 1,运算过程(前面两个0省略)如下:

0 0 0 0 1 0 1 0 开始R0 = X

+ 1 0 1 0 R1 = X–Y

1 0 1 0 1 0 1 0 0 R1< 0,则q 4 = 0,没有溢出

原0100。

(5)将10和–6分别表示成补码形式为:[10]补= 0 1010 , [–6]补= 1 1010,计算过程如下:先对被除数进行符号扩展,[10]补=00000 01010,[6]补= 0 0110

余数寄存器R 余数/商寄存器Q 说明

0 0 0 0 0 0 1 0 1 0 开始R0 = [X]

+ 1 1 0 1 0 R1=[X] +[Y]

1 1 0 1 0 0 1 0 1 0 R1与[Y]同号,则q5 =1

1 0 1 0 0 1 0 1 0 1 2R1(R和Q同时左移,空出一位上商1)

+0 0 1 1 0 R2 = 2R1+[–Y]

1 1 0 1 0 1 0 1 0 1 R2与[Y]同号,则q4= 1,

1 0 1 0 1 0 1 0 1 1 2R2(R和Q同时左移,空出一位上商1)

+ 0 0 1 1 0 R3 = 2R2 +[-Y]

1 1 0 1 1 0 1 0 1 1 R3与[Y]同号,则q3 = 1

1 0 1 1 0 1 0 1 1 1 2R3(R和Q同时左移,空出一位上商1)

+ 0 0 1 1 0 R4 = 2R3 +[–Y]

1 1 1 0 0 1 0 1 1 1 R4与[Y]同号,则q

2 = 1

1 1 0 0 1 0 1 1 1 1 2R4(R和Q同时左移,空出一位上商0)

+ 0 0 1 1 0 R5= 2R4 +[-Y]

1 1 1 1 1 0 1 1 1 1 R5与[Y]同号,则q1= 1,

1 1 1 1 0 1 1 1 1 1 2R5(R和Q同时左移,空出一位上商1)

+ 0 0 1 1 0 R6= 2R5 +[–Y]

0 0 1 0 0 1 1 1 1 0 R6与[Y]异号,则q 0 = 0,Q左移,空出一位上商1

+ 0 0 0 0 0 + 1 商为负数,末位加1;余数不需要修正

0 0 1 0 0 1 1 1 1 1

所以,[X/Y]补=11111,余数为00100。

即:X/Y= – 0001B = – 1,余数为 0100B = 4

将各数代入公式“除数×商+余数= 被除数”进行验证,得:(–6)×(–1) +4= 10。

10.若一次加法需要1ns,一次移位需要。请分别计算用一位乘法、两位乘法、基于CRA的阵列乘法、基于CSA的阵列乘法四种方式计算两个8位无符号二进制数乘积时所需的时间。

参考答案:

一位乘法:8次右移,8次加法,共计12ns;

二位乘法:4次右移,4次加法,共计6ns;

基于CRA的阵列乘法:每一级部分积不仅依赖于上一级部分积,还依赖于上一级最终的进位,而每一级进位又是串行进行的,所以最长的路径总共经过了8+2×(8–1)=22次全加器,共计约22ns;

基于CSA的阵列乘法:本级进位和本级和同时传送到下一级,同级部分积之间不相互依赖,只进行O

(N)次加法运算,因此,共计约8ns。

11.在IEEE 754浮点数运算中,当结果的尾数出现什么形式时需要进行左规,什么形式时需要进行右规?

如何进行左规,如何进行右规?

参考答案:

(1) 对于结果为±1x .xx……x的情况,需要进行右规。右规时,尾数右移一位,阶码加1。右规操

作可以表示为:M b M b ×2 -1,E b E b+1。右规时注意以下两点:

a)尾数右移时,最高位“1”被移到小数点前一位作为隐藏位,最后一位移出时,要考虑舍入。

b)阶码加1时,直接在末位加1。

(2) 对于结果为±……01x……x的情况,需要进行左规。左规时,数值位逐次左移,阶码逐次减1,

直到将第一位“1”移到小数点左边。假定k为结果中“±”和左边第一个1之间连续0的个数,则左规操作可以表示为:M b M b ×2k,E b E b–k。左规时注意以下两点:

a) 尾数左移时数值部分最左k个0被移出,因此,相对来说,小数点右移了k位。因为进行尾数相

加时,默认小数点位置在第一个数值位(即:隐藏位)之后,所以小数点右移k位后被移到了第一位1后面,这个1就是隐藏位。

b) 执行E b E b–k时,每次都在末位减1,一共减k次。

12.在IEEE 754浮点数运算中,如何判断浮点运算的结果是否溢出?

参考答案:

浮点运算结果是否溢出,并不以尾数溢出来判断,而主要看阶码是否溢出。尾数溢出时,可通过右规操作进行纠正。阶码上溢时,说明结果的数值太大,无法表示;阶码下溢时,说明结果数值太小,可以把结果近似为0。

在进行对阶、规格化、舍入和浮点数的乘/除运算等过程中,都需要对阶码进行加、减运算,可能会发生阶码上溢或阶码下溢,因此,必须对阶码进行溢出判断。

(有关对阶码进行溢出判断的方法可参见教材中相关章节。)

13.假设浮点数格式为:阶码是4位移码,偏置常数为8,尾数是6位补码(采用双符号位),用浮点运算规则分别计算在不采用任何附加位和采用2位附加位(保护位、舍入位)两种情况下的值。(假定对阶和右规时采用就近舍入到偶数方式)

(1)(15/16) ×27 +(2/16) ×25(2)(15/16) ×27–(2/16) ×25

(3)(15/16) ×25 +(2/16) ×27(4)(15/16) ×25–(2/16) ×27

参考答案(假定采用隐藏位):

X= (15/16) ×27 = ×27= 2 × 26

Y1= (2/16) ×25 = ×25= 2 × 22

Y2= (–2/16) ×25 = –×25= (–2 × 22

K= (15/16) ×25 = ×25= 2 × 24

J1= (2/16) ×27 = ×27= 2 × 24

J2= (–2/16) ×27 = –×27= (–2 × 24

根据题目所给的各种位数,可以得到在机器中表示为:

[X]浮= 00 1110 (1)111000 [Y1]浮= 00 1010 (1)000000 [Y2]浮= 11 1010 (1)000000 [K]浮= 00 1100 (1)111000 [J1]浮= 00 1100 (1)000000 [J2]浮= 11 1100 (1)000000所以,E x= 1110,M x = 00 (1). 111000 ,E y1= 1010,M y = 00(1).000000,E y2= 1010,M y = 11(1).000000

E k= 1100,M K = 00 (1). 111000 ,E J1= 1100,M J1 = 00(1).000000,E J2= 1100,M J2 = 11(1).000000

尾数M中小数点前面有三位,前两位为数符,表示双符号,第三位加了括号,是隐藏位“1”。

没有附加位时的计算:

(1)X+Y1

[ΔE]补= [E x]移+ [–[E y1]移]补(mod 2n) = 1110 + 0110 = 0100

ΔE = 4,根据对阶规则可知需要对y1进行对阶,结果为:E y1 = E x = 1110,M y 1=

尾数相加:M b = M x + M y1 = 001. 111000+ = ,两位符号相等,数值部分最高位为1,不需要进行规格化,所以最后结果为:E=1110,M=00(1).111100, 即(31/32) ×27

(2)X+Y2

[ΔE]补= [E x]移+ [–[E y2]移]补(mod 2n) = 1110 + 0110 = 0100;

ΔE = 4,根据对阶规则可知需要对y2进行对阶,结果为:E y2 = E x = 1110,M y2=

尾数相加:M b = M x + M y2 = 001. 111000+ =,两位符号相等,数值部分最高为1,不需要进行规格化,所以最后结果为:E=1110,M=00(1).110100, 即(29/32) ×27

(3)K+J1

[ΔE]补= [E K]移+ [–[E J1]移]补(mod 2n) = 1100 + 0100 = 0000;

ΔE = 0,根据对阶规则可知不需要进行对阶。

尾数相加:M b = M K + M J1 = 001. 111000+ = ,两位符号不等,说明尾数溢出,需要进行右规,最后结果为:E=1101,M=00(1).011100, 即(23/32) ×26

(4)K+J2

[ΔE]补= [E K]移+ [–[E J2]移]补(mod 2n) = 1100 + 0100 = 0000;

ΔE = 0,根据对阶规则可知不需要进行对阶。

尾数相加:M b = M K + M J2 = 00 1. 111000+ = ,两位符号相等,数值部分最高位为0,需要进行左规,所以最后结果为:E=1011,M=00(1).110000, 即(7/8) ×24

如果有两位附加位精度上会有提高,在对阶的时候要注意小数点后就不是6位,而是8位,最后两位为保护位和舍入位。但是由于本题6位尾数已经足够,再加2位附加位,其结果是一样的。14.采用IEEE 754单精度浮点数格式计算下列表达式的值。

(1)+(–)(2)–(–)

参考答案:

x = = ...0B = ...0)2 × 2-1

y = – = – ...0B = (–...0) 2 × 26

用IEEE 754标准单精度格式表示为:

[x]浮= 0 01111110 10...0 [y]浮= 1 000001010 0

所以,E x = 01111110,M x = 0 (1). 1...0 ,E y = ,M y = 1(1).000001010 0

尾数M x和M y中小数点前面有两位,第一位为数符,第二位加了括号,是隐藏位“1”。

以下是计算机中进行浮点数加减运算的过程(假定保留2位附加位:保护位和舍入位)

(1)+ (–)

①对阶: [ΔE]补= [E x]移+ [–[E y]移]补(mod 2n) = 0111 1110 + 0111 1011 = 1111 1001

ΔE = –7,根据对阶规则可知需要对x进行对阶,结果为:E x = E y = ,M x = (000)

x的尾数M x右移7位,符号不变,数值高位补0,隐藏位右移到小数点后面,最后移出的2位保留

②尾数相加:M b = M x + M y = ...000+ ...000 (注意小数点在隐藏位后)

根据原码加/减法运算规则,得:...000+ ...000 = (000)

上式尾数中最左边第一位是符号位,其余都是数值部分,尾数后面两位是附加位(加粗)。

③规格化:根据所得尾数的形式,数值部分最高位为1,所以不需要进行规格化。

④舍入:把结果的尾数M b中最后两位附加位舍入掉,从本例来看,不管采用什么舍入法,结果

都一样,都是把最后两个0去掉,得:M b = 0

⑤溢出判断:在上述阶码计算和调整过程中,没有发生“阶码上溢”和“阶码下溢”的问题。

因此,阶码E b = 。

最后结果为E b = ,M b = 1(1).00000010…0,即:–。

(2)–(–)

①对阶: [ΔE]补= [E x]移+ [–[E y]移]补(mod 2n) = 0111 1110 + 0111 1011 = 1111 1001

ΔE = -7,根据对阶规则可知需要对x进行对阶,结果为:E x = E y = ,M x = (000)

x的尾数M x右移一位,符号不变,数值高位补0,隐藏位右移到小数点后面,最后移出的位保留

②尾数相加:M b = M x– M y = ...000 – ...000 (注意小数点在隐藏位后)

根据原码加/减法运算规则,得:...000 – ...000= (000)

上式尾数中最左边第一位是符号位,其余都是数值部分,尾数后面两位是附加位(加粗)。

③规格化:根据所得尾数的形式,数值部分最高位为1,不需要进行规格化。

④舍入:把结果的尾数M b中最后两位附加位舍入掉,从本例来看,不管采用什么舍入法,结果

都一样,都是把最后两个0去掉,得:M b = 0

⑤溢出判断:在上述阶码计算和调整过程中,没有发生“阶码上溢”和“阶码下溢”的问题。

因此,阶码E b = 。

最后结果为E b = ,M b = 0(1).00001000…0,即:+66。

思考题:对阶时发生什么情况,就可以不再继续进行计算?

15.假定十进制数用8421 NBCD码表示,采用十进制加法运算计算下列表达式的值,并讨论在十进制BCD 码加法运算中如何判断溢出。

(1)234+567 (2)548+729

参考答案:

(1)234+567

0010 0011 0100

+ 0101 0110 0111

0111 1001 1011

结果为: (801)10

(2)548+729

0000 0101 0100 1000

结果为: (1277)10

在第(2)题中,如果是采用12位数表示加数548和729,则能看出最后得到的答案是1100 0111 0111,这时就是BCD码加法溢出了。所以我们在判断的时候不能仅仅看BCD码最高位是不是丢失,而要看结果的最高4位是不是大于9,如果大于9,就可以认为是溢出了。

16.假定十进制数用8421 NBCD码表示,十进制运算673–356可以采用673加上(–356)的模10补码实现。画出实现上述操作的3位十进制数的BCD码减法运算线路,列出线路中所有的输入变量和输出变量。

参考答案:

[– (356) 10]补= 0110 0100 0100

0110 0111 0011

+ 0110 0100 0100

1100 1011 0111

最高位产生进位,因此,结果为正数:0011 0001 0111,故结果为:(+317)10

电路图分为两部分,一个是求出模10补码,另一个是计算以及判断输出结果的电路图(参见教材图)。

求模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=μ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×2 = 8片。

因为ROM区在0000H~7FFFH,RAM区在8000H~FFFFH,所以可通过最高位地址A15来区分,当A15为0时选中ROM芯片;为1时选中RAM芯片,此时,根据A14和A13进行译码,得到4个译码信号,

分别用于4组字扩展芯片的片选信号。(图略,可参照图)

若CPU地址线为24位,ROM区为000000H~007FFFH,则ROM区大小为32KB,总大小为16MB=214KB=512×32KB,所以RAM区大小为511×32KB,共需使用RAM芯片数为511×32KB/8K×4位=511×4×2个芯片。

7.假定一个存储器系统支持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)=位。

11.假定某计算机的cache共16行,开始为空,块大小为1个字,采用直接映射方式。CPU执行某程序时,

依次访问以下地址序列:2,3,11,16,21,13,64,48,19,11,3,22,4,27,6和11。要求:(1)说明每次访问是命中还是缺失,试计算访问上述地址序列的命中率。

(2)若cache数据区容量不变,而块大小改为4个字,则上述地址序列的命中情况又如何?

参考答案

(1)cache采用直接映射方式,其数据区容量为16行×1字/行=16字;主存被划分成1字/块,所以,主存块号 = 字号。因此,映射公式为:cache行号 = 主存块号 mod 16 = 字号 mod 16。

开始cache为空,所以第一次都是miss,以下是映射关系(字号-cache行号)和命中情况。

2-2: miss,3-3: miss,11-11: miss,16-0: miss, 21-5: miss,13-13: miss,64-0: miss、replace,

48-0: miss、replace,19-3: miss、replace,11-11: hit, 3-3: miss、replace,22-6: miss,4-4: miss,27-11: miss、replace,6-6: miss、replace,11-11: miss、replace。

只有一次命中!

(2)cache采用直接映射方式,数据区容量不变,为16个字,每块大小为4个字,所以,cache共有4行;主存被划分为4个字/块,所以,主存块号 = [字号/4]。因此,映射公式为:cache

行号 = 主存块号 mod 4 = [字号/4] mod 4。

以下是映射关系(字号-主存块号-cache行号)和命中情况。

2-0-0: miss,3-0-0: hit,11-2-2: miss,16-4-0: miss、replace,21-5-1、13-3-3: miss,

64-16-0、48-12-0、19-4-0: miss, replace,11-2-2: hit,3-0-0: miss、replace,

22-5-1: hit,4-1-1: miss、replace,27-6-2: miss、replace,6-1-1: hit,11-2-2: miss、replace。

命中4次。

由此可见,块变大后,能有效利用访问的空间局部性,从而使命中率提高!

12.假定数组元素在主存按从左到右的下标顺序存放。试改变下列函数中循环的顺序,使得其数组元素的

访问与排列顺序一致,并说明为什么修改后的程序比原来的程序执行时间短。

int sum_array ( int a[N][N][N])

{

int i, j, k, sum=0;

for (i=0; i < N; i++)

for (j=0; j < N; j++)

for (k=0; k < N; k++) sum+=a[k][i][j];

return sum;

}

参考答案:

int sum_array ( int a[N][N][N])

{

int i, j, k, sum=0;

for (k=0; k < N; k++)

for (i=0; i < N; i++)

for (j=0; j < N; j++) sum+=a[k][i][j];

return sum;

}

修改后程序的数组元素的访问与排列顺序一致,使得空间局部性比原程序好,故执行时间更短。13.分析比较以下三个函数的空间局部性,并指出哪个最好,哪个最差?

参考答案:

对于函数clear1,其数组访问顺序与在内存的存放顺序完全一致,因此,空间局部性最好。

对于函数clear2,其数组访问顺序在每个数组元素内跳越式访问,相邻两次访问的单元最大相差3个int型变量(假定sizeof(int)=4,则相当于12B),因此空间局部性比clear1差。若主存块大小比12B小的话,则大大影响命中率。

对于函数clear3,其数组访问顺序与在内存的存放顺序不一致,相邻两次访问的单元都相差6个int型变量(假定sizeof(int)=4,则相当于24B)因此,空间局部性比clear2还差。若主存块大小比24B小的话,则大大影响命中率。

14.以下是计算两个向量点积的程序段:

float dotproduct (float x[8], float y[8])

{

float sum = ;

int i,;

for (i = 0; i < 8; i++) sum += x[i] * y[i];

return sum;

}

要求:

(1)试分析该段代码中数组x和y的时间局部性和空间局部性,并推断命中率的高低。

(2)假定该段程序运行的计算机的数据cache采用直接映射方式,其数据区容量为32字节,每个主存块大小为16字节。假定编译程序将变量sum和i分配给寄存器,数组x存放在00000040H 开始的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] ~ x[3]在第4块,x[4] ~ x[7]在第5块中;数组y的8个元素(共32B)分别在主存第

6块和第7块中。所以,x[0] ~ x[3]和y[0] ~ y[3]都映射到cache第0行;

1行。

都不命中,命中率为0.

(3)改用2路组相联,块大小为8B,则cache共有4行,每组两行,共两组。

数组x有4个主存块,x[0] ~ x[1]、x[2] ~ x[3],x[4] ~ x[5],x[6] ~ x[7]分别在第8~11块中;

数组y有4个主存块,y[0] ~ y[1]、y[2] ~ y[3],y[4] ~ y[5],y[6] ~ y[7]分别在第12~15块中;

50%。

(4)若(2)中条件不变,数组x定义了12个元素,共有48B,使得y从第7块开始,因而,x[i]和y[i]就不会映射到同一个cache行中,即:x[0] ~ x[3]在第4块,x[4] ~ x[7]在第5块,x[8] ~ x[11]在第6块中,y[0] ~ y[3]在第7块,y[4] ~ x[7]在第8块。

每调入一块,装入4个数组元素,第一个元素不命中,后面3个总命中,故命中率为75%。15.以下是对矩阵进行转置的程序段:

typedef int array[4][4];

void transpose(array dst, array src)

{

int i, j;

for (i = 0; i < 4; i++)

for (j = 0; j < 4; j++)

dst[j][i] = src[i][j];

}

计算机组成原理 课后答案

第一章计算机系统概论p.19 1.1什么是计算机系统、计算机硬件和计算机软件?硬件和软件哪个更重要? 计算机系统:计算机硬件、软件和数据通信设备的物理或逻辑的综合体 计算机硬件:计算机的物理实体 计算机软件:计算机运行所需的程序及相关资料 硬件和软件在计算机系统中相互依存,缺一不可,因此同样重要 1.2如何理解计算机系统的层次结构? 实际机器M1向上延伸构成了各级虚拟机器,机器M1内部也可向下延伸而形成下一级的微程序机器M0,硬件研究的主要对象归结为传统机器M1和微程序机器M0,软件研究对象主要是操作系统及以上的各级虚拟机 1.3说明高级语言、汇编语言和机器语言的差别及其联系。 机器语言是可以直接在机器上执行的二进制语言 汇编语言用符号表示指令或数据所在存储单元的地址,使程序员可以不再使用繁杂而又易错的二进制代码来编写程序 高级语言对问题的描述十分接近人们的习惯,并且还具有较强的通用性 1.4如何理解计算机组成和计算机体系结构? 计算机体系结构是对程序员可见的计算机系统的属性 计算机组成对程序员透明,如何实现计算机体系结构所体现的属性 1.5冯·诺依曼计算机的特点是什么? 由运算器、控制器、存储器、输入设备、输出设备五大部件组成 指令和数据以同一形式(二进制形式)存于存储器中 指令由操作码、地址码两大部分组成 指令在存储器中顺序存放,通常自动顺序取出执行 以运算器为中心(原始冯氏机) 1.6画出计算机硬件组成框图,说明各部件的作用及计算机硬件的主要技术指标。 计算机硬件各部件 运算器:ACC, MQ, ALU, X 控制器:CU, IR, PC 主存储器:M, MDR, MAR I/O设备:设备,接口 计算机技术指标: 机器字长:一次能处理数据的位数,与CPU的寄存器位数有关 存储容量:主存:存储单元个数×存储字长 运算速度:MIPS, CPI, FLOPS 1.7解释概念 主机:计算机硬件的主体部分,由CPU+MM(主存或内存)组成 CPU:中央处理器,是计算机硬件的核心部件,由运算器+控制器组成 主存:计算机中存放正在运行的程序和数据的存储器,可随机存取;由存储体、各种逻辑部件及控制电路组成 存储单元:可存放一个机器字并具有特定存储地址的存储单位 存储元件/存储基元/存储元:存储一位二进制信息的物理元件,是存储器中最小的存储单位,不能单独存取 存储字:一个存储单元所存二进制代码的逻辑单位 存储字长:一个存储单元所存二进制代码的位数

计算机系统结构课后答案

1、数据结构和机器的数据表示之间是什么关系?确定和引入数据表示的基本原则是什么? 答:数据表示是能由硬件直接识别和引用的数据类型。数据结构反映各种数据元素或信息单元之间的结构关系。数据结构要通过软件映象变换成机器所具有的各种数据表示实现,所以数据表示是数据结构的组成元素。不同的数据表示可为数据结构的实现提供不同的支持,表现在实现效率和方便性不同。数据表示和数据结构是软件、硬件的交界面。 除基本数据表示不可少外,高级数据表示的引入遵循以下原则:(1)看系统的效率有否提高,是否养活了实现时间和存储空间。(2)看引入这种数据表示后,其通用性和利用率是否高。 2、标志符数据表示与描述符数据表示有何区别?描述符数据表示与向量数据表示对向量数据结构所提供的支持有什么不同? 答:标志符数据表示指将数据类型与数据本身直接联系在一起,让机器中每个数所都带类型樗位。其优点是:(1)简化了指令系统和程序设计;(2)简化了编译程序;(3)便于实现一致性校验;(4)能由硬件自动变换数据类型;(5)支持数据库系统的实现与数据类型无关;(6)为软件调试和应用软件开发提供支持。缺点是:(1)会增加程序所点的主存空间;(2)在微观上对机器的性能(运算速度)不利。 数据描述符指数据的描述与数据分开存放,描述所访问的数据是整块还是单个的,及访问该数据块或数据元素的地址住处它具备标志符数据表示的优点,并减少了标志符数据表示所占的空间,为向量和数组结构的实现提供支持。 数据描述符方法优于标志符数据表示,数据的描述与数据分开,描述所访问的数据是整块还是单个的,及访问该数据块或数据元素的地址信息,减少了樗符数据表示所占的窨。用描述符方法实现阵列数据的索引比用变址方法实现要方便,且便于检查出程序中的阵列越界错误。但它不能解决向量和数组的高速运算问题。而在有向量、数组数据表示的向量处理机上,硬件上设置有丰富的赂量或阵列运算指令,配有流水或阵列方式处理的高速运算器,不仅能快速形成向量、数组的元素地址,更重要的是便于实现把向量各元素成块预取到中央处理机,用一条向量、数组指令流水或同时对整个向量、数组高速处理.如让硬件越界判断与元素运算并行。这些比起用与向量、阵列无关的机器语言和数据表示串行实现要高效的多。 3、堆栈型机器与通用寄存器型机器的主要区别是什么?堆栈型机器系统结构为程序调用的哪些操作提供了支持? 答:有堆栈数据表示的机器称为堆栈机器。它与一般通用寄存器型机器不同。通用寄存器型

计算机系统结构考试计算题

3.12 有一指令流水线如下所示 (1) 求连续输入10条指令,该流水线的实际吞吐率和效率; (2) 该流水线的“瓶颈”在哪一段?请采取两种不同的措施消除此“瓶颈”。 对于你所给出的两种新的流水线,连续输入10条指令时,其实际吞吐率和效率各是多少? 解:(1) 2200(ns)2009200)10050(50t )1n (t T max m 1 i i pipeline =?++++=?-+?=∑= )(ns 220 1 T n T P 1pipeline -== 45.45%11 5 4400T P m t T P E m 1 i i ≈=? =?? =∑= (2)瓶颈在3、4段。 ? 变成八级流水线(细分) 850(ns)509850t 1)(n t T max m 1 i i pipeline =?+?=?-+?=∑= )(ns 85 1 T n T P 1pipeline -== 58.82%17 10 8400T P m ti T P E m 1 i ≈=? =?? =∑= ? 重复设置部件 出 50ns 50ns 100ns 200ns

)(ns 85 1 T n T P 1pipeline -== 58.82%17 10885010400E ≈=??= 3.13 4段组成,3段时,一次,然4段。如果 需要的时间都是,问: (1) 当在流水线的输入端连续地每时间输入任务时,该流水线会发生 什么情况? (2) 此流水线的最大吞吐率为多少?如果每输入一个任务,连续处理 10个任务时的实际吞吐率和效率是多少? (3) 当每段时间不变时,如何提高该流水线的吞吐率?仍连续处理10个 任务时,其吞吐率提高多少? (2) t ?t ?2

计算机组成原理_第四版课后习题答案(完整版)[]

第一章 1.比较数字计算机和模拟计算机的特点 解:模拟计算机的特点:数值由连续量来表示,运算过程是连续的;数字计算机的特点:数值由数字量(离散量)来表示,运算按位进行。两者主要区别见 P1 表 1.1 。 2.数字计算机如何分类?分类的依据是什么? 解:分类:数字计算机分为专用计算机和通用计算机。通用计算机又分为巨型机、大型机、 中型机、小型机、微型机和单片机六类。分类依据:专用和通用是根据计算机的效率、速度、价格、运行的经济性和适应性来划分的。 通用机的分类依据主要是体积、简易性、功率损耗、性能指标、数据存储容量、 指令系统规模和机器价格等因素。 3.数字计算机有那些主要应用?(略) 4.冯 . 诺依曼型计算机的主要设计思想是什么?它包括哪些主要组成部分? 解:冯 . 诺依曼型计算机的主要设计思想是:存储程序和程序控制。存储程序:将解题的程序(指令序列)存放到存储器中;程序控制:控制器顺序执行存储的程序,按指令功能控制全机协调地完成运算任务。 主要组成部分有:控制器、运算器、存储器、输入设备、输出设备。 5.什么是存储容量?什么是单元地址?什么是数据字?什么是指令字? 解:存储容量:指存储器可以容纳的二进制信息的数量,通常用单位KB MB GB来度量,存储 容 量越大,表示计算机所能存储的信息量越多,反映了计算机存储空间的大小。单元地址:单元地址简称地址,在存储器中每个存储单元都有唯一的地址编号,称为单元地 址。 数据字:若某计算机字是运算操作的对象即代表要处理的数据,则称数据字。指令字:若某计算机字代表一条指令或指令的一部分,则称指令字。 6.什么是指令?什么是程序? 解:指令:计算机所执行的每一个基本的操作。程序:解算某一问题的一串指令序列称为该问题的计算程序,简称程序。 7.指令和数据均存放在内存中,计算机如何区分它们是指令还是数据? 解:一般来讲,在取指周期中从存储器读出的信息即指令信息;而在执行周期中从存储器中读出的信息即为数据信息。

计算机系统结构课后答案unit3

第3章总线、中断与输入输出系统 3.1.简要举出集中式串行链接,定时查询和独立请求3种总线控制方式的优缺点。同时分析硬件产生故障时通讯的可靠性。 答:集中式串行链连接方式。其过程为: ①所有部件都经公共的“总线请求”线向总线控制器发使用总线申请。 ②当“总线忙”信号未建立时,“总线请求”才被总线控制器响应,送出“总线可用”信号,它串行地通过每个部件。 ③如果某部件未发过“总线请求”,则它将“总线可用”信号往下一部件转,如果某部件发过“总线请求”,则停止“总线可用”信号的传送。 ④该部件建立“总线忙”,并除去“总线请求”,此时该部件获得总线使用权,准备传送数据。 ⑤数据传送期间,“总线忙”维持“总线可用”的建立。 ⑥传送完成后,该部件去除“总线忙”信号和“总线可用”信号。 ⑦当“总线请求”再次建立时,就开始新的总线分配过程。 优点:①选择算法简单;②控制总线数少;③可扩充性好;④可靠性高。 缺点:①对“总线可用”线及其有关电路失效敏感,②不灵活;③总线中信号传送速度慢。 集中式定时查询方式,过程: ①总线上每个部件通过“总线请求”发请求。 ②若“总线忙”信号未建立,则计数器开始计数,定时查询个部件,以确定是谁发的请求。 ③当查询线上的计数值与发出请求的部件号一致时,该部件建立“总线忙”,计数停止,查询也停止。除去“总线请求”,该部件获得总线使用权。 ④“总线忙”维持到数据传送完毕。 ⑤数据传送完,去除“总线忙”。 ⑥当“总线请求”线上有新的请求,就开始下一个总线分配过程。 优点:①优先次序灵活性强;②可靠性高。 缺点:①控制线数较多;②扩展性较差;③控制较为复杂;④总线分配受限于计数信号,不能很高。 集中式独立请求方式,过程:

计算机系统结构试卷B

《计算机系统结构B卷》 一、填空题(每小题1.5分,共30分)。 1.对系列机而言,必须保证做到软件,力争做到软件向上兼容。 2.由软件实现的计算机称之为。 3. 多处理机系统按组织形式分有三种,功能分布是多处理机系统分工方式。 4.依据从哪一层开始设计,计算机体系结构设计的主要方法有三种,占据主导地位的是设计。 5. 在先行控制方式实现流水线的处理器中,有先行指令、先行操作、先行读数和后行写数等四个缓冲栈,缓冲深度最大的是。 6.按流水线的功能多寡分,可分为单功能流水线和。 7. 用于表示非线性流水线中的任务对未进入流水线的后继任务流入流水线的时间间隔的约束称为。 8.中断转移相关处理的基本方法包括不精确断点法和。 9. 互连网络中任意两个结点之间距离的最大值称为。 10.在多级交叉开关互联网络中,交叉开关的控制方式有、组控制和单元控制。 11. 在多计算机系统的互连网络中,通信模式包括、选播、广播和会议等四种。 12. 描述网络寻径效率常用的两个参数是通道流量和。 13.自定义数据表示包括标志符和两种数据表示。 14. 浮点数尾数基值越大,浮点数表示的数据范围。 15. 根据运算类型指令操作数存储方法不同,指令集结构可分为堆栈型、累加器型和。 16. 标量处理机是否高度并行是以指令级并行度(ILP)为来区分。 17.存储系统的基本存储层次有、主存储器和辅助存储器。 18. 采用并行存储器的目的是。 19. 从时间开销来看,伪命中的时间正常命中的时间。 20. 增加Cache存储系统的相联度,可降低Cache的不命中率,但会增加Cache 的。

二、简答题(每小题6分,共30分)。 1.多计算机系统和多处理机系统的差别有哪几方面?其中最根本的差别是哪个方面? 2. 什么是流水线相关?流水线相关可分为哪几大类? 3. 什么是动态互连网络?动态互连网络的互联形式有哪几种? 4. 指令系统设计包括哪两个方面?指令格式优化设计的目的是什么? 5. 维护Cache与主存一致性的更新算法有哪些? 三、分析题(第一小题8分,第二小题12分,共20分)。 1.某种处理机10条指令的使用频度分别为:0.25,0.20,0.15,0.10,0.08,0.08,0.05,0.04 ,0.03 ,0.02,试画出该处理机进行Huffman编码时的一棵Huffman树。 2. 在某采用全相联映象、相联目录表实现地址变换Cache存储器中,Cache 的容量是8KB,主存是由4个存储体组成的低位交叉访问存储器,主存总容量是32MB,每一个存储体的字长是32位,。 (1)写出主存地址和Cache地址的格式,并标出各字段的长度。 (2)说明目录表的行数、相联比较的位数和目录表的宽度。 四、计算题(第一小题8分,第二小题12分,共20分)。 1. 设16个处理器编号分别为0、1、……、15,用单级互连网络连接,当互连函数分别为:(1)Cube3、(2)PM+3、(3)Shuffle(Shuffle)时,第13号处理器分别与哪一个处理器相连? 2. 有一条5个功能段的线性动态多功能流水线如图所示,其中1→2→3→5功能段组成加法流水线,1→4→5功能段组成乘法流水线,设每个功能段的延迟时间 均相等为△t。用这条流水线计算F=4 1() i i i a b = + ∏,画出流水线时空图,并计算流水线的实际吞吐率、加速比和效率。 Z

计算机组成原理课后答案

… 第一章计算机系统概论 什么是计算机系统、计算机硬件和计算机软件硬件和软件哪个更重要 计算机系统:计算机硬件、软件和数据通信设备的物理或逻辑的综合体 计算机硬件:计算机的物理实体 计算机软件:计算机运行所需的程序及相关资料 硬件和软件在计算机系统中相互依存,缺一不可,因此同样重要 如何理解计算机系统的层次结构 实际机器M1向上延伸构成了各级虚拟机器,机器M1内部也可向下延伸而形成下一级的微程序机器M0,硬件研究的主要对象归结为传统机器M1和微程序机器M0,软件研究对象主要是操作系统及以上的各级虚拟机 》 说明高级语言、汇编语言和机器语言的差别及其联系。 机器语言是可以直接在机器上执行的二进制语言 汇编语言用符号表示指令或数据所在存储单元的地址,使程序员可以不再使用繁杂而又易错的二进制代码来编写程序 高级语言对问题的描述十分接近人们的习惯,并且还具有较强的通用性 如何理解计算机组成和计算机体系结构 计算机体系结构是对程序员可见的计算机系统的属性 计算机组成对程序员透明,如何实现计算机体系结构所体现的属性 冯·诺依曼计算机的特点是什么 。 由运算器、控制器、存储器、输入设备、输出设备五大部件组成 指令和数据以同一形式(二进制形式)存于存储器中 指令由操作码、地址码两大部分组成 指令在存储器中顺序存放,通常自动顺序取出执行 以运算器为中心(原始冯氏机) 画出计算机硬件组成框图,说明各部件的作用及计算机硬件的主要技术指标。 计算机硬件各部件 运算器:ACC, MQ, ALU, X ' 控制器:CU, IR, PC 主存储器:M, MDR, MAR I/O设备:设备,接口 计算机技术指标: 机器字长:一次能处理数据的位数,与CPU的寄存器位数有关 存储容量:主存:存储单元个数×存储字长 运算速度:MIPS, CPI, FLOPS 解释概念 & 主机:计算机硬件的主体部分,由 CPU+MM(主存或内存)组成 CPU:中央处理器,是计算机硬件的核心部件,由运算器+控制器组成 主存:计算机中存放正在运行的程序和数据的存储器,可随机存取;由存储体、各种逻辑部件及控制电路组成

完整版计算机体系结构课后习题原版答案_张晨曦著

第1章计算机系统结构的基本概念 (1) 第2章指令集结构的分类 (10) 第3章流水线技术 (15) 第4章指令级并行 (37) 第5章存储层次 (55) 第6章输入输出系统 (70) 第7章互连网络 (41) 第8章多处理机 (45) 第9章机群 (45) 第1章计算机系统结构的基本概念 1.1 解释下列术语 层次机构:按照计算机语言从低级到高级的次序,把计算机系统按功能划分成多级层次结构,每一层以一种不同的语言为特征。这些层次依次为:微程序机器级,传统机器语言机器级,汇编语言机器级,高级语言机器级,应用语言机器级等。 虚拟机:用软件实现的机器。 翻译:先用转换程序把高一级机器上的程序转换为低一级机器上等效的程序,然后再在这低一级机器上运行,实现程序的功能。

解释:对于高一级机器上的程序中的每一条语句或指令,都是转去执行低一级机器上的一段等效程序。执行完后,再去高一级机器取下一条语句或指令,再进行解释执行,如此反复,直到解释执行完整个程序。 计算机系统结构:传统机器程序员所看到的计算机属性,即概念性结构与功能特性。 在计算机技术中,把这种本来存在的事物或属性,但从某种角度看又好像不存在的概念称为透明性。 计算机组成:计算机系统结构的逻辑实现,包含物理机器级中的数据流和控制流的组成以及逻辑设计等。 计算机实现:计算机组成的物理实现,包括处理机、主存等部件的物理结构,器件的集成度和速度,模块、插件、底板的划分与连接,信号传输,电源、冷却及整机装配技术等。 系统加速比:对系统中某部分进行改进时,改进后系统性能提高的倍数。 Amdahl定律:当对一个系统中的某个部件进行改进后,所能获得的整个系统性能的提高,受限于该部件的执行时间占总执行时间的百分比。 程序的局部性原理:程序执行时所访问的存储器地址不是随机分布的,而是相对地簇聚。包括时间局部性和空间局部性。

计算机系统结构期末考试题目

第一章: 1.计算机系统结构的定义 答:由程序设计者看到的一个计算机系统的属性,即概念性结构和功能特性。 2.透明性概念 答:在计算机技术中,一种本来是存在的事物或属性,但从某种角度看似乎不存在,称为透明性现象。 3.兼容性向后兼容 兼容性:同一个软件可以不加修改地运行于系统结构相同的各档机器,可获得相同的结果,差别只在于不同的运行时间。 向后兼容:按某个时期投入市场的某种型号机器编制的程序,不加修改就能运行于在它之后投入市场的机器。 4.Amdahl定律 答:系统中某一部件由于采用某种更快的执行方式后整个系统性能的提高与这种执行方式的使用频率或占总执行时间的比例有关。 5.CPI 答:每条指令的平均时钟周期数。 6.MIPS 答:每秒百万条指令数!MIPS=时钟频率/(CPI*10^6) 7.MFLOPS 答:每秒百万次浮点操作次数。MFLOPS=程序中的浮点操作次数/(执行时间*10^6) 8.命中率的概念 答: 9.Flynn分类法是按指令流和数据流的多倍性特征进行计算机系统结构的划分 答:①单指令流单数据流SISD ②单指令流多数据流SIMD ③多指令流单数据流MISD (实际不存在)④多指令流多数据流MIMD 10.计算机系统设计的定量原理(四个) 答:①加快经常性事件的速度②Amdahl定律③CPU性能公式④访问的局部性原理11.CPI和加速比的计算 答:CPI=CPU时钟周期数/IC CPU时间=CPU时钟周期数/频率 CPU时间=CPU时钟周期*时钟周期长 加速比=(采用改进措施后的性能)/(没有采用改进措施前的性能) =(没有采用改进措施前执行某任务的时间)/(采用改进措施后执行某任务的时间) 12.软硬件实现的特点 硬件实现:速度快、成本高;灵活性差、占用内存少 软件实现:速度低、复制费用低;灵活性好、占用内存多 13.系统评价的标准 ①运算速度②存储器系统③其他性能④成本标准

(完整版)计算机系统结构试题及答案

计算机系统结构复习题 单选及填空: 计算机系统设计的主要方法 1、由上往下的设计(top-down) 2、由下往上的设计(bottom-up) 3、从中间开始(middle-out) Flynn分类法把计算机系统的结构分为以下四类: (1)单指令流单数据流 (2)单指令流多数据流 (3)多指令流单数据流 (4) 多指令流多数据流 堆栈型机器:CPU 中存储操作数的单元是堆栈的机器。 累加器型机器:CPU 中存储操作数的单元是累加器的机器。 通用寄存器型机器:CPU 中存储操作数的单元是通用寄存器的机器。 名词解释: 虚拟机:用软件实现的机器叫做虚拟机,但虚拟机不一定完全由软件实现,有些操作可以由硬件或固件(固件是指具有软件功能的固件)实现。 系列机:由同一厂家生产的具有相同系统结构、但具有不同组成和实现的一系列不同型号的计算机。 兼容机:它是指由不同公司厂家生产的具有相同系统结构的计算机。 流水线技术:将一个重复的时序过程,分解成为若干个子过程,而每一个子过程都可有效地在其专用功能段上与其它子过程同时执行。 单功能流水线:指流水线的各段之间的连接固定不变、只能完成一种固定功能的流水线。 多功能流水线:指各段可以进行不同的连接,以实现不同的功能的流水线。 顺序流水线:流水线输出端任务流出的顺序与输入端任务流入的顺序完全相同。 乱序流水线:流水线输出端任务流出的顺序与输入端任务流入的顺序可以不同,允许后进入流水线的任务先完成。这种流水线又称为无序流水线、错序流水线、异步流水线。 吞吐率:在单位时间内流水线所完成的任务数量或输出结果的数量。 指令的动态调度:

是指在保持数据流和异常行为的情况下,通过硬件对指令执行顺序进行重新安排,以提高流水线的利用率且减少停顿现象。是由硬件在程序实际运行时实施的。 指令的静态调度: 是指依靠编译器对代码进行静态调度,以减少相关和冲突。它不是在程序执行的过程中、而是在编译期间进行代码调度和优化的。 超标量: 一种多指令流出技术。它在每个时钟周期流出的指令条数不固定,依代码的具体情况而定,但有个上限。 超流水:在一个时钟周期内分时流出多条指令。 多级存储层次: 采用不同的技术实现的存储器,处在离CPU不同距离的层次上,各存储器之间一般满足包容关系,即任何一层存储器中的内容都是其下一层(离CPU更远的一层)存储器中内容的子集。目标是达到离CPU最近的存储器的速度,最远的存储器的容量。 写直达法: 在执行写操作时,不仅把信息写入Cache中相应的块,而且也写入下一级存储器中相应的块。写回法: 只把信息写入Cache中相应块,该块只有被替换时,才被写回主存。 集中式共享多处理机: 也称为对称式共享存储器多处理SMP。它一般由几十个处理器构成,各处理器共享一个集中式的物理存储器,这个主存相对于各处理器的关系是对称的, 分布式共享多处理机: 它的共享存储器分布在各台处理机中,每台处理机都带有自己的本地存储器,组成一个“处理机-存储器”单元。但是这些分布在各台处理机中的实际存储器又合在一起统一编址,在逻辑上组成一个共享存储器。这些处理机存储器单元通过互连网络连接在一起,每台处理机除了能访问本地存储器外,还能通过互连网络直接访问在其他处理机存储器单元中的“远程存储器”。 多Cache一致性: 多处理机中,当共享数据进入Cache,就可能出现多个处理器的Cache中都有同一存储器块的副本,要保证多个副本数据是一致的。 写作废协议: 在处理器对某个数据项进行写入之前,它拥有对该数据项的唯一的访问权 。 写更新协议: 当一个处理器对某数据项进行写入时,它把该新数据广播给所有其它Cache。这些Cache用该新数据对其中的副本进行更新。 机群:是一种价格低廉、易于构建、可扩放性极强的并行计算机系统。它由多台同构或异构

计算机组成原理第二版课后习题答案

第1章计算机系统概论 1. 什么是计算机系统、计算机硬件和计算机软件?硬件和软件哪个更重要? 解: 计算机系统:由计算机硬件系统和软件系统组成的综合体。 计算机硬件:指计算机中的电子线路和物理装置。 计算机软件:计算机运行所需的程序及相关资料。 硬件和软件在计算机系统中相互依存,缺一不可,因此同样重要。 2. 如何理解计算机的层次结构? 答:计算机硬件、系统软件和应用软件构成了计算机系统的三个层次结构。 (1)硬件系统是最层的,它是整个计算机系统的基础和核心。 (2)系统软件在硬件之外,为用户提供一个基本操作界面。 (3)应用软件在最外层,为用户提供解决具体问题的应用系统界面。 通常将硬件系统之外的其余层称为虚拟机。各层次之间关系密切,上层是下层的扩展,下层是上层的基础,各层次的划分不是绝对的。 3. 说明高级语言、汇编语言和机器语言的差别及其联系。 答:机器语言是计算机硬件能够直接识别的语言,汇编语言是机器语

言的符号表示,高级语言是面向算法的语言。高级语言编写的程序(源程序)处于最高层,必须翻译成汇编语言,再由汇编程序汇编成机器语言(目标程序)之后才能被执行。 4. 如何理解计算机组成和计算机体系结构? 答:计算机体系结构是指那些能够被程序员所见到的计算机系统的属性,如指令系统、数据类型、寻址技术组成及I/O机理等。计算机组成是指如何实现计算机体系结构所体现的属性,包含对程序员透明的硬件细节,如组成计算机系统的各个功能部件的结构和功能,及相互连接方法等。 5. ?诺依曼计算机的特点是什么? 解:?诺依曼计算机的特点是:P8 ●计算机由运算器、控制器、存储器、输入设备、输出设备五大 部件组成; ●指令和数据以同同等地位存放于存储器,并可以按地址访问; ●指令和数据均用二进制表示; ●指令由操作码、地址码两大部分组成,操作码用来表示操作的 性质,地址码用来表示操作数在存储器中的位置; ●指令在存储器中顺序存放,通常自动顺序取出执行; ●机器以运算器为中心(原始?诺依曼机)。

计算机系统结构_课后答案

习题一 1、解释下列术语 计算机系统的外特性:通常所讲的计算机系统结构的外特性是指机器语言程序员或编译程序编写者所看到的外特性,即由他们所看到的计算机的基本属性(概念性结构和功能特性)。 计算机系统的内特性:计算机系统的设计人员所看到的基本属性,本质上是为了将有关软件人员的基本属性加以逻辑实现的基本属性。 模拟:模拟方法是指用软件方法在一台现有的计算机上实现另一台计算机的指令系统。 可移植性:在新型号机出台后,原来开发的软件仍能继续在升级换代的新型号机器上使用,这就要求软件具有可兼容性,即可移植性。可兼容性是指一个软件可不经修改或只需少量修改,便可由一台机器移植到另一台机器上运行,即同一软件可应用于不同环境。 Amdahl 定律:系统中对于某一部件采用某种更快的执行方式所能获得的系统性能改进程度,取决于这种执行方式被使用的频度或占总执行时间的比例。 虚拟机(Virtual Machine ):指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。 6、 7、假定求浮点数平方根的操作在某台机器上的一个基准测试程序中占总执行时间的20%,为了增强该操作的性能,可采用两种不同的方法:一种是增加专门的硬件,可使求浮点数平方根操作的速度提高为原来的20倍;另一种方法是提高所有浮点运算指令的速度,使其为原来的2倍,而浮点运算指令的执行时间在总执行时间中占30%。试比较这两种方法哪一种更好些。 答:增加硬件的方法的加速比23.120 /2.0)2.01(1 1=+-= p S , 另一种方法的加速比176.12 /3.0)3.01(1 2=+-=p S ,经计算可知Sp1>Sp2第一种方 法更好些。 9、假设高速缓存Cache 的工作速度为主存的5倍,且Cache 被访问命中的概率

计算机系统结构考试题库及答案

计算机系统结构试题及答案 一、选择题(50分,每题2分,正确答案可能不只一个,可单选 或复选) 1.(CPU周期、机器周期)是内存读取一条指令字的最短时间。 2.(多线程、多核)技术体现了计算机并行处理中的空间并行。 3.(冯?诺伊曼、存储程序)体系结构的计算机把程序及其操作数 据一同存储在存储器里。 4.(计算机体系结构)是机器语言程序员所看到的传统机器级所具 有的属性,其实质是确定计算机系统中软硬件的界面。 5.(控制器)的基本任务是按照程序所排的指令序列,从存储器取 出指令操作码到控制器中,对指令操作码译码分析,执行指令操作。 6.(流水线)技术体现了计算机并行处理中的时间并行。 7.(数据流)是执行周期中从内存流向运算器的信息流。 8.(指令周期)是取出并执行一条指令的时间。 9.1958年开始出现的第二代计算机,使用(晶体管)作为电子器件。 10.1960年代中期开始出现的第三代计算机,使用(小规模集成电路、 中规模集成电路)作为电子器件。 11.1970年代开始出现的第四代计算机,使用(大规模集成电路、超 大规模集成电路)作为电子器件。 12.Cache存储器在产生替换时,可以采用以下替换算法:(LFU算法、 LRU算法、随机替换)。

13.Cache的功能由(硬件)实现,因而对程序员是透明的。 14.Cache是介于CPU和(主存、内存)之间的小容量存储器,能高 速地向CPU提供指令和数据,从而加快程序的执行速度。 15.Cache由高速的(SRAM)组成。 16.CPU的基本功能包括(程序控制、操作控制、时间控制、数据加 工)。 17.CPU的控制方式通常分为:(同步控制方式、异步控制方式、联合 控制方式)反映了时序信号的定时方式。 18.CPU的联合控制方式的设计思想是:(在功能部件内部采用同步控 制方式、在功能部件之间采用异步控制方式、在硬件实现允许的情况下,尽可能多地采用异步控制方式)。 19.CPU的同步控制方式有时又称为(固定时序控制方式、无应答控 制方式)。 20.CPU的异步控制方式有时又称为(可变时序控制方式、应答控制 方式)。 21.EPROM是指(光擦可编程只读存储器)。 22.MOS半导体存储器中,(DRAM)可大幅度提高集成度,但由于(刷 新)操作,外围电路复杂,速度慢。 23.MOS半导体存储器中,(SRAM)的外围电路简单,速度(快),但 其使用的器件多,集成度不高。 24.RISC的几个要素是(一个有限的简单的指令集、CPU配备大量的 通用寄存器、强调对指令流水线的优化)。

计算机组成课后答案

第一章计算机系统概论 1. 什么是计算机系统、计算机硬件和计算机软件?硬件和软件哪个更重要? 解:P3 计算机系统:由计算机硬件系统和软件系统组成的综合体。 计算机硬件:指计算机中的电子线路和物理装置。 计算机软件:计算机运行所需的程序及相关资料。 硬件和软件在计算机系统中相互依存,缺一不可,因此同样重要。 5. 冯?诺依曼计算机的特点是什么? 解:冯?诺依曼计算机的特点是:P8 计算机由运算器、控制器、存储器、输入设备、输出设备五大部件组成;指令和数据以同同等地位存放于存储器内,并可以按地址访问;指令和数据均用二进制表示;指令由操作码、地址码两大部分组成,操作码用来表示操作的性质,地址码用来表示操作数在存储器中的位置;指令在存储器中顺序存放,通常自动顺序取出执行;机器以运算器为中心(原始冯?诺依曼机)。 7. 解释下列概念: 主机、CPU、主存、存储单元、存储元件、存储基元、存储元、存储字、存储字长、存储容量、机器字长、指令字长。 解:P9-10主机:是计算机硬件的主体部分,由CPU和主存储器MM合成为主机。CPU:中央处理器,是计算机硬件的核心部件,由运算器和控制器组成;(早期的运算器和控制器不在同一芯片上,现在的CPU内除含有运算器和控制器外还集成了CAC HE)。 主存:计算机中存放正在运行的程序和数据的存储器,为计算机的主要工作存储器,可随机存取;由存储体、各种逻辑部件及控制电路组成。

存储单元:可存放一个机器字并具有特定存储地址的存储单位。 存储元件:存储一位二进制信息的物理元件,是存储器中最小的存储单位,又叫存储基元或存储元,不能单独存取。 存储字:一个存储单元所存二进制代码的逻辑单位。 存储字长:一个存储单元所存二进制代码的位数。 存储容量:存储器中可存二进制代码的总量;(通常主、辅存容量分开描述)。 机器字长:指CPU一次能处理的二进制数据的位数,通常与CPU的寄存器位数有关。指令字长:一条指令的二进制代码位数。 8. 解释下列英文缩写的中文含义: CPU、PC、IR、CU、ALU、ACC、MQ、X、MAR、MDR、I/O、MIPS、CPI、FLOPS 解:全面的回答应分英文全称、中文名、功能三部分。 CPU:Central Processing Unit,中央处理机(器),是计算机硬件的核心部件,主要由运算器和控制器组成。 PC:Program Counter,程序计数器,其功能是存放当前欲执行指令的地址,并可自动计数形成下一条指令地址。 IR:Instruction Register,指令寄存器,其功能是存放当前正在执行的指令。 CU:Control Unit,控制单元(部件),为控制器的核心部件,其功能是产生微操作命令序列。 ALU:Arithmetic Logic Unit,算术逻辑运算单元,为运算器的核心部件,其功能是进行算术、逻辑运算。 ACC:Accumulator,累加器,是运算器中既能存放运算前的操作数,又能存放运算结果的寄存器。

计算机体系结构课后答案

计算机体系结构课后答案

计算机体系结构课后答案 【篇一:计算机体系结构习题(含答案)】 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) 要求操作码的平均长度最短,请设计操作码的编码,并计算所设计操作码的平均长度。 6.某处理机的指令字长为16位,有双地址指令、单地址指令和零地址指令3类,并假设每个地址字 段的长度均为6位。 (1) 如果双地址指令有15条,单地址指令和零地址指令的条数基本相同,问单地址指令和零地址指令各有多少条?并且为这3类指令分配操作码。 (2) 如果要求3类指令的比例大致为1:9:9,问双地址指令、单地址指令和零地址指令各有多少条?并且为这3类指令分配操作码。 7.别用变址寻址方式和间接寻址方式编写一个程序,求c=a+b,其中,a与b都是由n个元素组成的一维数组。比较两个程序,并回答下列问题: (1) 从程序的复杂程度看,哪一种寻址方式更好?

计算机系统结构期末考试试题及其答案

计算机系统结构期末考试试题及其答案

《计算机系统结构》期末考试试卷A 卷第 2 页 共 24 页 计算机科学系《计算机系统结构》期末考试试卷(A 卷) 2、此试卷适用于计算机科学与技术本科专业。 一 单选题:(10分,每题1分) 1、 ."启动I/O"指令是主要的输入输出指 令,是属于( B ) A.目态指令 B.管态指令 C.目态、管态都能用的指令 D.编译程序只能用的指令 2、 输入输出系统硬件的功能对(B )是透 明的 A.操作系统程序员 B.应用程序员 C.系统结构设计人员 D.机器语言程序设计员 3、 全相联地址映象是指(A ) A.任何虚页都可装入主存中任何实页的位置 B.一个虚页只装进固定的主存实页位置 C.组之间固定,组内任何虚页可装入任何实页位

置 D.组间可任意装入,组内是固定装入 4、( C ) 属于MIMD系统结构 A.各处理单元同时受一个控制单元的管理 B.各处理单元同时受同个控制单元送来的指令 C.松耦合多处理机和多计算机系统 D.阵列处理机 5、多处理机上两个程序段之间若有先写 后读的数据相关,则(B ) A.可以并行执行 B.不可能并行 C.任何情况均可交换串行 D.必须并行执行 6、计算机使用的语言是(B) A.专属软件范畴,与计算机体系结构无关 B.分属于计算机系统各个层次 C.属于用以建立一个用户的应用环境 D.属于符号化的机器指令 7、指令执行结果出现异常引起的中断是 (C ) A.输入/输出中断 B.机器校验中断 C.程序性中断 D.外部中断 《计算机系统结构》期末考试试卷A卷第 3 页共 24 页

《计算机系统结构》与参考答案

2.以下各类中断中,属于自愿中断的是 C. A. 外部中断 B. I/O中断 C. 执行“访管”指令 D. 机器校验中断 3.高速外部设备磁盘机适合连接于 C. A. 选择通道或字节多路通道 B. 数组多路通道或字节多路通道 C.数组多路通道或选择通道 D.任意一种通道 4.页式虚拟存储器页表的作用是 A . A. 反映虚页在主存的存储情况 B.仅反映虚页是否调入主存 C. 反映主存实页与Cache 的对应关系 D. 反映虚页在辅存的存储情况5.软件和硬件的功能在逻辑上是C的 . A.固件优于软件 B.不等价 C.等价 D.软件优于固件 6.计算机中最优化的操作码编码方法是D. A.BCD 码 B.ASCII码 C.扩展操作码 D.哈夫曼编码 7.从计算机系统执行程序的角度看,并行性等级由低到高分为四级A. A .指令内部——指令之间——进程之间——程序之间 B .指令之间——指令内部——进程之间——程序之间 C.进程之间——指令之间——指令内部——程序之间 D .程序之间——进程之间——指令之间——指令内部 8.计算机系统多级层次结构中,操作系统机器级的直接上层是D. A .传统机器级 B .高级语言机器 C.应用语言机器级D.汇编语言机器级 9.全相联地址映像是指A. A. 任何虚页都可装入主存中任何实页的位置 B.一个虚页只装进固定的主存实页位置 C.组之间是固定的,而组内任何虚页可以装入任何实页位置 D.组间可任意装入,组内是固定装入 10.对于同一系列机,必须保证软件能够C. A .向前兼容,并向上兼容 B .向前兼容,并向下兼容C.向后兼容,力争向上兼容D .向后兼容,力争向下兼容11.设有 16 个处理单元的并行处理机系统, 采用共享主存的方式. 若同时存取16 个数据 , 为避免存储器访问冲突, 共享主存的多体数量应该为C才合理 . A. 15 B. 16 C. 17 D. 19 12.软件兼容的根本特征是C. A.向前兼容 B.向后兼容 C. 向上兼容 D. 向下兼容 13.在下列机器中,能够实现软件兼容的机器是 B. A.完全不同种类的机型 B.系统结构相同的机器 C. 宿主机和目标机 D.虚拟机 14.输入输出系统硬件的功能对C是透明的。 A. 操作系统程序员 B. 所有类别的程序员 C. 应用程序员 D. 系统结构设计师 15.在下列各项选择中,对于机器( 汇编 ) 语言程序员透明的是 D. A.通用寄存器 B. 条件码 C.中断字 D.主存储器地址寄存器 一、单项选择题 1.在流水机器中,全局性相关是指 B. A.指令相关 B. 由条件转移指令引起的相关 C “先读后写”相关 D.“先写后读”相关 2.以下不属于多处理机操作系统类型的是A. A .Windows 操作系统B.主从型操作系 C.浮动型操作系统 D .各自独立型操作系统 3.下列不是数据流计算特点的是D. A. 设置状态 B.没有指令计数器 C.没有变量的概念 D.操作结果不产生副作用 4.若输入流水线的指令既无局部性相关,也不存在全局性相关,则B. A. 可获得高的吞吐率和效率 B.出现瓶颈 C.流水线的效率和吞吐率恶化 D.可靠性提高 5.消除“一次重叠”中的“指令相关”最好方法是B. A. 不准修改指令 B.设置相关专用通路 C.推后分析下条指令 D.推后执行下条指令 6.流水线的技术指标不包括A. A. 数据宽度 B.吞吐率 C.加速比 D.效率 7.按照弗林对处理机并行性定义的分类原则,阵列机ILLIAC IV属于B. A.SISD B.SIMD C.MISD D.MIMD 8.设 8 个处理器编号分别为0,1, 2,?,7 用 Cube0 互联函数时,第7 号处理机可以与第D号处理机相联 . A. 0 B. 2 C. 4 D. 6 9.多端口存储器适合于连接 B. A .松耦合多处理机B.紧耦合多处理机C.机数很多的多处理机 D .机数可变的多处理机 10.以下不属于堆栈型替换算法的是A. A .先进先出法B.近期最久未用过法 C.近期最少使用法D.页面失效频率法 11.解决主存空间数相关的办法是C. A.基址值一次相关直接通路法 B.基址值二次相关直接通路法 C.通用寄存器组相关专用通路相关法 D. 推后读法 12. 一般来说 , 以下替换算法中 , 效果最优的替换算法是C. A. LRU 替换算法 B. FIFO 替换算法 C. OPT 替换算法 D. RAND替换算法

《计算机组成原理》课后习题答案

第1章计算机组成原理考试大纲 第一章 计算机体系结构和计算机组成 冯。诺伊曼体系的特点 Amdahl定律 第二章 数制和数制转换 各种码制的表示和转换 浮点数的表示 补码加减法 布思算法 浮点数的加减法 海明码的计算 练习:5,6,7,8,10 1、已知X=19,Y=35,用布思算法计算X×Y和X×(-Y)。 2、使用IEEE 754标准格式表示下列浮点数:-5,-1.5,1/16,-6,384,-1/32。 3、已知X=-0.1000101×2-111,Y=0.0001010×2-100。试计算X+Y,X-Y,X×Y和X/Y。 4、某浮点数字长12位,其中阶符1位,阶码数值3位,尾符1位,尾数数值7位,阶码和尾数均 用补码表示。它所能表示的最大正数是多少?最小规格化正数是多少?绝对值最大的负数是多少? 5、求有效信息位为01101110的海明码校验码。 第三章 练习:5 解释下列概念:PROM,EPROM,E2PROM,Flash memory,FPGA,SRAM和DRAM。 第四章 总线的分类 总线操作周期的四个传输阶段 总线仲裁的概念及其分类 异步通信方式的种类 总线的最大传输率 第五章 存储器的分类 存储容量的扩展 RAID的概念、特点以及分类 Cache的地址映射 Cache的写策略 Cache的性能分析 3C 练习:4,5,7 1.一个容量为16K×32位的存储器,其地址线和数据线的总和是多少?用下列存储芯片时,各需要多少片? 1K×4位,2K×8位,4K×4位,16K×l位,4K×8位,8K×8位 2.现有1024×l的存储芯片,若用它组成容量为16K×8的存储器。 (1)实现该存储器所需的芯片数量? (2)若将这些芯片分装在若干块板上,每块板的容量为4K×8,该存储器所需的地址线总数是多少?

相关主题
文本预览
相关文档 最新文档