[第六章] 深入理解计算机系统第三版 家庭作业参考答案

本文深入探讨了硬盘性能指标如磁道数、总容量、旋转延迟与传送时间的关系,解析了不同条件下的访问时间计算。同时,详细分析了高速缓存的工作原理,包括缓存命中与不命中的场景,以及缓存大小对不命中率的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

6.22

磁道数 d 与 r - x * r 成正比
设 d = k(r - x * r) = kr(1 - x)
总容量 c = 2πxk(r^2)(1 - x) = 2πk(r^2)(x - x^2)
上式实际上是关于 x 的二次式,其对称轴为 1/2,即当 x = 1/2 时取最大值

6.23

平均旋转延迟:
T_arg_rotation = 1/2 * T_max_rotation = 1/2 * 60s/15000 RPM * 1000ms/s = 2ms
平均传送时间:
T_arg_tranfer = 60s/15000 RPM * 1/800扇区/磁道 * 1000ms/s = 0.005ms
总时间:
T_access = T_arg_rotation + T_arg_tranfer + T_arg_seek = 6.005ms

6.24

和书上6.4一样,但是我不懂为什么 1MB / 512B = 2000,有大佬给我解释一下么? 按照我的理解,可能是近似。
这儿按照书上的做法 2MB/512B = 4000,即需要 4000 个逻辑块,所以是 4 整圈
T_max_rotation = 60s/15000 RPM * 1000ms/s = 4ms,T_arg_seek = 4ms, T_arg_rotation = 1/2 * T_max_rotation = 2ms
A.
T = T_max_rotation * 4 + T_arg_rotation + T_arg_seek = 22ms
B.
T = 4000(T_arg_rotation + T_arg_seek) = 24000ms

6.25

高速缓存mCBEStsb
132102444642462
2321024425613002
3321024811282273
4321024812812903
5321024321322255
632102432482435

6.26

高速缓存mCBEStsb
1322048812562183
2322048441282372
332102428642561
4321024322162345

6.27

A.
标记位为 45 时:
CT = 01000101 CI = 001 CO = XX
因此地址为 0x08A4 ~ 0x08A7

标记位为 38 时:
CT = 00111000 CI = 001 CO = XX
因此地址为 0x0704 ~ 0x0707

B.
0x1238 ~ 0x123B

6.28

A.
全都不命中

B.
0x18F0 ~ 0x18F3
0x00B0 ~ 0x00B3

C.
0x0E34 ~ 0x 0E37

D.
0x1BDC ~ 0x1BDF

6.29

A.

1211109876543210
CTCTCTCTCTCTCTCTCTCICICOCO

B.

操作地址命中?读出的值(或者未知)
0x834未命中未知
0x836命中未知
0xFFD命中C0

6.30

A.
C = B * E * S = 128

B.

1211109876543210
CTCTCTCTCTCTCTCTCICICICOCO

6.31

A.

1211109876543210
0011100011010

B.

参数
高速缓存块偏移 CO0x2
高速缓存组索引 CI0x6
高速缓存标记 CT0x38
高速缓存命中?
返回的高速缓存字节0xEB

6.32

A.

1211109876543210
1011011101000

B.

参数
高速缓存块偏移 CO0x0
高速缓存组索引 CI0x2
高速缓存标记 CT0xB7
高速缓存命中?
返回的高速缓存字节-

6.33

CT=B6或BC

0x1788 ~ 0x178B
0x16C8 ~ 0x16CB

6.34

dst数组:

列0列1列2列3
行0mmmm
行1mmmm
行2mmmm
行3mmmm

src数组:

列0列1列2列3
行0mmhm
行1mhmh
行2mmhm
行3mhmh

6.35

dst数组:

列0列1列2列3
行0mhhh
行1mhhh
行2mhhh
行3mhhh

src数组:

列0列1列2列3
行0mhhh
行1mhhh
行2mhhh
行3mhhh

6.36

A.
x[0]的地址是 0,x[1] 的地址是 512,因此 x[0][i]、x[1][i] 会映射到同一块。
不命中率为 100%

B.
不会发生覆盖,一个缓存块为 16 字节,能放 4 个 int,仅有第一个 int 不命中,其余 3 个都命中,因此不命中率为 25%

C.
和 B 差不多

D.
不会,高速缓存再大,第一个 int 都不会命中

E.
会,这样的话,后几个 int 会命中,自然不命中率会降低

6.37

函数N=64N=60
sumA25%25%
sumB100%25%
sumC50%25%

N=64,很简单,不写了。

N=60,A比较简单,总是第一次不命中,后三次命中;BC情况较复杂,建议写程序解决,不过我们手写一下也是可以的。
4KB/16B=256,即 256 个缓存块,我们给这些块命名 1、2、3 … 256,可以写出 B 的访问序列:
1 16 31 46 61 76 91 106 121 136 151 166 181 196 211 226 241 256
15 30 45 60 75 90 105 120 135 150 165 180 195 210 225 240 255
14 29 44 59 74 89 104 119 134 149 164 179 194 209 224 239 254
13 28 43 58 73 88 103 118
上面是从 a[0][0] 到 a[60][0] 的访问序列,全不命中。但是访问 a[0][1] 到 a[60][1] 、a[0][2] 到 a[60][2]、a[0][3] 到 a[60][3] 都会命中(因为 四个为一组 存放在同一个缓存块中,而且不会被覆盖)。很容易将其推广,四次访问命中三次,因此不命中率为 25%。

C 的访问序列虽与 B 有些差别,但是高速缓存的行为类似。

6.38

A. 16 * 16 * 4 = 1024
B. 1024 / 8 = 128
C. 1/8

6.39

A. 1024
B. 1024 / 4 = 128
C. 1/4

6.40

A. 1024
B. 2^7 + 2^7 = 2^8
C. 1/4

6.41

1/4

6.42

1/4

6.43

100%

6.44

6.45

6.46

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CHOOOU

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值