计算机体系结构期末复习
由于知识点繁复,且又是开卷,在此仅将一些重大例题列出,知识点和其余略去。
同时,目前优先从课本配套的题集,码蹄集中选取题目,如下图所示,其中部分题目由于题集中没有,暂时没有放出,正在更新中。。。
本博客配合课后练习复习效果更佳!!!
Amdahl 定理
知识点
例题
-
(判断题)Amdahl 定律中“系统加速比”指计算机体系结构改进后的性能的提高。
A. 对
B. 错
正确答案: 对 -
(单选题)假设高速缓存 Cache 工作速度为主存的 5 倍,且 Cache 被访问命中的概率为 90%,则采用 Cache 后,能使整个系统获得加速比为( )。
A. 5
B. 3.57
C. 5.17
D. 4.21
正确答案: B:3.57;
答案解析:Cache 存储器访问时间为 t,主存储器为 5t。Sn = T0/Tn = 5t / (0.9*t+0.1*5t) = 3.57 -
某计算机有 3 个部件可以改进,且各改进后的性能提高倍数分别为: S e 1 = 30 S_{e1}=30 Se1=30, S e 2 = 20 S_{e2}=20 Se2=20, S e 3 = 10 S_{e3}=10 Se3=10,试问:
(1)如果部件 1 和部件 2 在计算机中的重要度均为 30%,那么部件 3 在计算机中的重要度为多少时,系统加速比才可以达到 10?
(2)如果 3 个部件在计算机中的重要度分别为 30%、30%、20%,同时对 3 个部件进行改进,那么计算机性能提高倍数为多少?
(1)在多个部件可改进情况下,Amdahl 定理的扩展:
已知 S1=30,S2=20,S3=10,Sn=10,F1=0.3,F2=0.3,得:
Sn = 1 / ( (1-F1-F2-F3) + F1/S1 + F2/S2 + F3/S3)
得 F3=0.36,即部件 3 的可改进比例为 36%。
(2)设系统改进前的执行时间为 T,则 3 个部件改进前的执行时间为:(0.3+0.3+0.2)T = 0.8T,不可改进部分的执行时间为 0.2T。
已知 3 个部件改进后的加速比分别为 S1=30,S2=20,S3=10,因此 3 个部件改进后的执行时间为:0.3T/S1 + 0.3T/S2 + 0.2T/S3 = 0.045T
改进后整个系统的执行时间为:Tn = 0.045T+0.2T = 0.245T
那么系统中不可改进部分的执行时间在总执行时间中占的比例是:
Sn = T / 0.245T = 4.08
浮点数
知识点
例题
-
(单选题)
浮点数在机器中的表示形式如下所示,若阶码位数为 Q,尾数位数为 P,
则以下关于浮点数表示的叙述中,正确的是( )。
① Q 的值影响浮点数的精度,Q 越大,所表示的浮点数精度越高
② Q 的值影响浮点数的范围,Q 越大,所表示的浮点数值范围越大
③ P 的值影响浮点数的范围,P 越大,所表示的浮点数范围越大
④ P 的值影响浮点数的精度,P 越大,所表示的浮点数精度越高
A. ①③
B. ②③
C. ①④
D. ②④
正确答案: D:②④; -
(单选题)在计算机中,一位 R 进制数需要( )位二进制数来表示?
A.
B. R
C.
D.
正确答案: D:; -
(单选题)
A. 4
B. 1
C. 6
D. 2
正确答案: C:6; -
(单选题)
在浮点数表示中,决定浮点数数据个数的参数是( )① 阶码位数 Q
② 阶码数值 E
③ 尾数数值 M
④ 尾数位数 P
A. ①③
B. ②④
C. ②③
D. ①④
正确答案: D:①④; -
(单选题)浮点数阶码位数采用二进制 Q 位,尾数位数为 P,则该浮点数的最大阶值为( )
A.
B.
C.
D.
正确答案: B :; -
(单选题)计算机的浮点数采用阶码基值 S=2,阶码位数为 2,尾数基值为 16,尾数位数 P=4。计算机在非负阶、规格化情况下的浮点数个数是多少( )
A. 32
B. 60
C. 245760
D. 24
正确答案: B:60; -
(单选题)
A. 31
B. 33
C. 32
D. 40
正确答案: D:40; -
(多选题)浮点数数据表示包含哪些参数( )
A. 尾数数值 M
B. 阶码数值 E
C. 尾数位数 P
D. 尾数基值 R
E. 阶码基值 S
F. 阶码位数 Q
正确答案: ABCDEF:尾数数值 M; 阶码数值 E; 尾数位数 P; 尾数基值 R; 阶码基值 S; 阶码位数 Q; -
(多选题)在浮点数表示中,随着尾数基值 R 的不断增大,下列选项正确有( )
A. 运算精度损失增大
B. 运算速度提高
C. 表示数据范围缩小
D. 表示数据个数增多
正确答案: BD:运算速度提高; 表示数据个数增多; -
(多选题)浮点数的表示格式由哪几部分组成( )
A. 尾数位数
B. 数据符号位
C. 阶码符号位
D. 阶码基值
E. 阶码位数
正确答案: ABCE:尾数位数; 数据符号位; 阶码符号位; 阶码位数;
指令字格式
知识点
例题
(单选题)某计算机按字节编址,指令字长固定且只有两种指令格式,其中三地址指令 29 条,二地址指令 107 条,每个地址字段 6 位,则指令字长至少应该是( )?
A. 23
B. 32
C. 28
D. 24
正确答案: D:24;
答案解析:三地址指令有 29 条,所以需要操作码 5 位,剩余 32-29=3 条,提供给二地址指令使用,而二地址比三地址指令多出 6 位,则可以表示 3×2^6=192 条 >107 条,所以至少需要 3×6+5=23 条,而指令字长应为 8 的倍数,所以指令字长至少应该是 24 条。
(单选题)一个计算机系统采用 32 位单字长指令,地址码为 12 位,若定义了 250 条二地址指令,还可以有几条单地址指令?
A. 6144
B. 24576
C. 384
D. 16384
正确答案: B:24576;
操作码的编码
知识点
注意:R表示的是信息冗余量,计算R的1.96为第二张图中的H(信息源熵)
例题
-
(单选题)n(n≥2)个权值均不相同的字符构成哈夫曼树,关于该树的叙述中,错误的是( )
A. 树中一定没有度为1的结点
B. 树中任一非叶结点的权值一定不小于下一层任一结点的权值
C. 树中两个权值最小的结点一定是兄弟结点
D. 该树一定是一棵完全二叉树
正确答案: D:该树一定是一棵完全二叉树; -
(单选题)已知字符集{ a, b, c, d, e, f, g, h }。若各字符的哈夫曼编码依次是 0100, 10, 0000, 0101, 001, 011, 11, 0001,则编码序列 0100011001001011110101 的译码结果是( )
A. acgabfh
B. afbeagd
C. afeefgd
D. adbagbb
正确答案: C:afeefgd; -
(单选题)设一台模拟计算机的指令系统有I1、I2、I3、I4共4条指令,其出现次数相应为{4,2,5,1},则该指令系统的哈夫曼编码比固定长度编码节省了多少位数?
A. 2
B. 5
C. 0
D. 4
正确答案: A:2; -
(多选题)通常操作码的编码方法有哪些( )?
A. 固定长度编码法
B. Huffman编码法
C. 等长扩展编码法
D. 不等长扩展编码法
正确答案: ABCD:固定长度编码法; Huffman编码法; 等长扩展编码法; 不等长扩展编码法; -
一台处理机有1~110共10条指令,经统计指令在程序中出现的概率如下:l1:0.25、l2:0.20、l3:0.15、l4:0.10、l5:0.08、l6:0.08、l7:0.05、l8:0.04、l9:0.03、l10:0.02。
(1)计算这10条指令操作码编码的最短平均长度(信息源熵)。
(2)写出这10条指令的Huffman编码,并计算操作码编码的平均长度和信息余量。
(3)采用3/7扩展编码法和2/8扩展编码法编制这10条指令的操作码编码,并分别计算它的平均长度和信息冗余量,说明哪一种扩展编码较好及其理由。(1) 根据 Huffman 压缩编码准则,指令系统所有指令操作码的最短平均长度 H(即信息源熵) 为:
H = − ∑ i = 1 N ( p i × l o g 2 p i ) H=-\displaystyle\sum_{i=1}^N(p_i×log_2p_i) H=−i=1∑N(pi×log2pi)
所以有:
H = − ( 0.25 × l o g 2 0.25 + 0.20 × l o g 2 0.20 + 0.15 × l o g 2 0.15 + 0.10 × l o g 2 0.10 + 0.08 × l o g 2 0.08 + 0.08 × l o g 2 0.08 + 0.05 × l o g 2 0.05 + 0.04 × l o g 2 0.04 + 0.03 × l o g 2 0.03 + 0.02 × l o g 2 0.02 ) = 2.96 H=-(0.25×log_2~0.25+0.20×log_2~0.20+0.15×log_2~0.15+0.10×log_2~0.10+0.08×log_2~0.08+0.08×log_2~0.08+0.05×log_2~0.05+0.04×log_2~0.04+0.03×log_2~0.03+0.02×log_2~0.02)=2.96 H=−(0.25×log2 0.25+0.20×log2 0.20+0.15×log2 0.15+0.10×log2 0.10+0.08×log2 0.08+0.08×log2 0.08+0.05×log2 0.05+0.04×log2 0.04+0.03×log2 0.03+0.02×log2 0.02)=2.96
(2) 根据给出的使用频度,在构造 Huffman 树的过程中,有两个结点可供合并,因此可生成不同的 Huffman 树,其中给出一棵如图所示,相应的 Huffman 编码如表所示。
因为 Huffman 编码的平均长度为:
L = ∑ i = 1 N ( p i × l i ) L=\displaystyle\sum_{i=1}^N(p_i×l_i) L=i=1∑N(pi×li)
所以有:L=0.25×2+0.20×2+0.15×3+0.10×3+0.08×4+0.08×4+0.05×5+0.04×5+0.03×5+0.02×5=2.99(位)
(3)3/7 扩展编码和 2/8 扩展编码如表所示。
3/7 扩展编码要求短码码点数为 3,长码码点数为 7。所以短码长取 2 位,有码点 2 2 = 4 2^2=4 22=4 个,用一个作扩展标志;长码长取 3 位,有码点 2 3 = 8 2^3=8 23=8 个,有一个未被利用,即有一个多余码点。编码的平均长度为:
L=(0.25+0.20+0.15)×2+(0.10+0.08+0.08+0.05+0.04+0.03+0.02)×5
=3.2(位)
2/8 扩展编码要求短码码点数为 2,长码码点数为 8。所以短码长取 2 位,有码点 2 2 = 4 2^2=4 22=4 个,用二个作扩展标志;长码长取 2 位,有码点 2 2 × 2 = 8 2^2×2=8 22×2=8 个,码点全部被利用,即没有多余码点。
L=(0.25+0.20)×2+(0.15+0.10+0.08+0.08+0.05+0.04+0.03+0.02)×4
=3.1(位)
可见,3/7 扩展编码优于 2/8 扩展编码。
-
某处理机指令字长为16位,有二地址指令、一地址指令和零地址指令三类,每个地址码字段均为6位。
(1)如果二地址指令有15条,一地址指令和零地址指令的条数基本相等。问一地址指令和零地址指令各有多少条?并为这三类指令分配操作码。
(2)如果要求这三类指令条数的比例大约为1:9:9,请问这三类指令各有多少条?(1) 由题意可知,当指令为双地址时,其操作码长度为 4 位(16-2×6),所以用于扩展一个地址码为操作码的编码数为 2 4 − 15 = 1 2^4-15=1 24−15=1。
要使一地址指令和零地址指令的条数基本相等,则一地址指令操作码也应留一个编码用于扩展一个地址码为操作码而使指令变为零地址。这时,一地址指令数为: 2 6 − 1 = 63 2^6-1=63 26−1=63,零地址指令数为: 2 6 = 64 2^6=64 26=64。
15 条双地址指令操作码编码可以为:0000~1110,1111 为扩展编码。
63 条一地址指令操作码编码可以为:1111 000000~1111 111110,一个扩展编码为:1111 111111。
64 条零地址指令操作码编码可以为:1111 111111 000000~1111 111111 111111。
(2) 由题意可知,设二地址指令数为 X,则一地址指令和零地址指令数为 9X。
当指令为双地址时,其操作码长度为 4 位(16-2×6),总的编码数为: 2 4 2^4 24,其中 X 个编码用于二地址指令的操作码编码,可以用于扩展一个地址码为操作码的扩展编码数为: 2 4 − X 2^4-X 24−X;扩展一个地址码为操作码后,总的编码数为: 2 6 ( 2 4 − X ) 2^6(2^4-X) 26(24−X)。
当指令为单地址时,其中 9X 个编码用于单地址指令的操作码编码,可以用于扩展一个地址码为操作码的扩展编码数为: 2 6 ( 2 4 − X ) − 9 X 2^6(2^4-X)-9X 26(24−X)−9X;扩展一个地址码为操作码后,总的编码数为: 2 6 [ 2 6 ( 2 4 − X ) − 9 X ] 2^6[2^6(2^4-X)-9X] 26[26(24−X)−9X]。
当指令为零地址时,全部编码用于零单地址指令的操作码编码,且为 9X,所以有:
2 6 [ 2 6 ( 2 4 − X ) − 9 X ] = 9 X 2^6[2^6(2^4-X)-9X]=9X 26[26(24−X)−9X]=9X
解之有:X=14.0004,取整即 X=14,所以二地址指令的条数为 14、一地址指令的条数为: 2 6 ( 2 4 − 14 ) − 2 = 126 2^6(2^4-14)-2=126 26(24−14)−2=126、零地址指令的条数为: 2 6 × 2 = 128 2^6×2=128 26×2=128。
-
一台处理机有I1~I11共11条指令,且指令的使用频率分别为0.20、0.19、0.14、0.i3、0.09、0.09、0.07、0.04、0.03、0.01、0.01。请构造 Huffman 树,并分别计算出操作码长度固定编码、Huffman 编码和2-5扩展编码的平均长度。
答:由题可得以下Huffman树(不唯一)
操作码长度固定编码、Huffman 编码和2-5扩展编码如下面表格所示:
指令 Pi 固定编码 Li 哈夫曼编码 Li 2-5扩展编码 Li I1 0.20 0000 4 11 2 00 2 I2 0.19 0001 4 10 2 01 2 I3 0.14 0010 4 011 3 10 2 I4 0.13 0011 4 010 3 11000 5 I5 0.09 0100 4 0011 4 11001 5 I6 0.09 0101 4 0001 4 11010 5 I7 0.07 0110 4 0010 4 11011 5 I8 0.04 0111 4 00000 5 11100 5 I9 0.03 1000 4 000010 6 11101 5 I10 0.01 1001 4 0000110 7 11110 5 I11 0.01 1010 4 0000111 7 11111 5 操作码长度固定编码平均长度:
L = 4 * (0.20+0.19+0.14+0.13+0.09+0.09+0.07+0.04+0.03+0.01+0.01) = 4
Huffman 编码平均长度:
L = 2 x (0.20+0.19) + 3 x (0.14+0.13) + 4 x (0.09+0.09+0.07) + 5 x 0.04 + 6 x 0.03 + 7 x (0.01+0.01) = 3.11
2-5扩展编码平均长度:
L = 2 x (0.20+0.19+0.14) + 5 x (0.13+0.09+0.09+0.07+0.04+0.03+0.01+0.01) = 3.41
-
一台处理机有11~18共8条指令,且指令的使用频率分别为0.30、0.25、0.20、0.10、0.06、0.05、0.03、0.01,请分别求出操作码采用长度固定编码、Huffman 编码和只有两种码长扩展编码的码值与平均长度。
答:由题可得以下Huffman树(不唯一)
操作码长度固定编码、Huffman 编码和只有两种码长扩展编码如下面表格所示:
指令 Pi 固定编码 Li 哈夫曼编码 Li 2-4扩展编码 Li 2-5扩展编码 Li I1 0.30 000 3 00 2 00 2 00 2 I2 0.25 001 3 01 2 01 2 01 2 I3 0.20 010 3 10 2 1000 4 10 2 I4 0.10 011 3 111 3 1001 4 11000 5 I5 0.06 100 3 1101 4 1010 4 11001 5 I6 0.05 101 3 11001 5 1011 4 11010 5 I7 0.03 110 3 110001 6 1100 4 11011 5 I8 0.01 111 3 110000 6 1101 4 11100 5 操作码长度固定编码平均长度:
L = 3 * (0.30+0.25+0.20+0.10+0.06+0.05+0.03+0.01) = 3
Huffman 编码平均长度:
L = 2 x (0.30+0.25+0.20) + 3 x 0.10 + 4 x 0.06 + 5 x 0.05 + 6 x (0.03+0.01) = 2.53
2-4扩展编码平均长度:
L = 2 x (0.30+0.25) + 4 x (0.20+0.10+0.06+0.05+0.03+0.01) = 2.90
2-5扩展编码平均长度:
L = 2 x (0.30+0.25+0.20) + 5 x (0.10+0.06+0.05+0.03+0.01) = 2.75
指令序列的处理方式
知识点
例题
由于该流水线为动态双功能流水线,计算要求先加后乘,因此应先设置加法功能,连续计算出 ( a 1 + b 1 ) (a_1+b_1) (a1+b1)、 ( a 2 + b 2 ) (a_2+b_2) (a2+b2)、 ( a 3 + b 3 ) (a_3+b_3) (a3+b3)、 ( a 4 + b 4 ) (a_4+b_4) (a4+b4)四个加法后;再设置乘法功能,而且按 [ ( a 1 + b 1 ) × ( a 2 + b 2 ) ] × [ ( a 3 + b 3 ) × ( a 4 + b 4 ) ] [(a_1+b_1)×(a_2+b_2)]×[(a_3+b_3)×(a_4+b_4)] [(a1+b1)×(a2+b2)]×[(a3+b3)×(a4+b4)]顺序做 3 个乘法。因此可画出该流水线的时空图如图所示,图中 A = a 1 + b 1 , B = a 2 + b 2 , C = a 3 + b 3 , D = a 4 + b 4 A=a_1+b_1,B=a_2+b_2,C=a_3+b_3,D=a_4+b_4 A=a1+b1,B=a2+b2,C=a3+b3,D=a4+b4。
由时空图可以看出,在总共 13 个Δt 的时间内输出 7 个结果,所以有:
TP = n/Tn = 7/13Δt
而当用串行方法完成操作时,需要四次加法和三次乘法,完成一次加法需要 4Δt,完成一次乘法需要 3Δt,完成该运算总共需要时间为:
T0 = 4×4Δt+3×3Δt = 25Δt
所以 S = T0/Tn = 1.92
E = 有效时空区面积 / 全部时空区面积
= (4×4Δt+3×3Δt)/(5×13Δt) = 0.38
流水线的相关冲突
知识点
例题
待补充
地址变换
知识点
例题
暂无
Cache块替换算法
知识点
例题
暂无