6.22
磁 道 数 量 与 ( 1 − x ) r 成 正 比 , 不 妨 设 磁 道 数 为 ( 1 − x ) r k 磁 道 位 数 与 中 心 圆 洞 半 径 成 正 比 , 因 此 不 妨 设 磁 道 位 数 2 π x r z 因 此 C ( x ) = ( 1 − x ) r k × 2 π x r z = ( x − x 2 ) 2 π r 2 k z 因 此 x = 0.5 \begin{aligned} &磁道数量与(1-x)r成正比,不妨设磁道数为(1-x)rk\\ &磁道位数与中心圆洞半径成正比,因此不妨设磁道位数2\pi xrz\\ &因此C (x)= (1-x)rk\times2\pi xrz = (x-x^2)2\pi r^2kz\\ &因此x=0.5 \end{aligned} 磁道数量与(1−x)r成正比,不妨设磁道数为(1−x)rk磁道位数与中心圆洞半径成正比,因此不妨设磁道位数2πxrz因此C(x)=(1−x)rk×2πxrz=(x−x2)2πr2kz因此x=0.5
6.23
平
均
寻
道
时
间
4
m
s
平
均
旋
转
时
间
1
15000
R
P
M
×
60
s
1
m
i
n
×
1
2
×
1000
m
s
1
s
=
2
m
s
平
均
传
送
时
间
1
800
×
1
15000
R
P
M
×
60
s
1
m
i
n
×
1000
m
s
1
s
=
0.005
m
s
因
此
平
均
时
间
为
4
m
s
+
2
m
s
+
0.005
m
s
=
6.005
m
s
\begin{aligned} &平均寻道时间4ms \\ &平均旋转时间\frac{1} {15000RPM} \times \frac {60s}{1min} \times \frac 1 2 \times \frac {1000ms} {1s}= 2ms \\ &平均传送时间 \frac {1} {800} \times \frac{1} {15000RPM} \times \frac {60s}{1min} \times \frac {1000ms} {1s} = 0.005ms \\ &因此平均时间为4ms + 2ms + 0.005ms = 6.005ms \end{aligned}
平均寻道时间4ms平均旋转时间15000RPM1×1min60s×21×1s1000ms=2ms平均传送时间8001×15000RPM1×1min60s×1s1000ms=0.005ms因此平均时间为4ms+2ms+0.005ms=6.005ms
6.24
A.
需
要
读
的
扇
区
块
数
2
M
B
=
512
B
×
2
×
1024
=
4096
个
块
最
好
情
况
是
这
4096
个
区
块
在
一
个
柱
面
因
此
时
间
是
4
m
s
(
T
a
v
g
−
s
e
e
k
)
+
2
m
s
(
T
a
v
g
−
r
o
t
a
t
i
o
n
)
+
4
m
s
×
4096
1000
=
22.384
m
s
\begin{aligned} &需要读的扇区块数2MB=512B \times 2 \times 1024 = 4096个块\\ &最好情况是这4096个区块在一个柱面\\ &因此时间是4ms(T_{avg-seek}) + 2ms(T_{avg-rotation}) + 4ms \times \frac {4096} {1000} = 22.384ms \end{aligned}
需要读的扇区块数2MB=512B×2×1024=4096个块最好情况是这4096个区块在一个柱面因此时间是4ms(Tavg−seek)+2ms(Tavg−rotation)+4ms×10004096=22.384ms
B.
每
读
一
个
块
需
要
的
时
间
是
4
m
s
(
T
a
v
g
−
s
e
e
k
)
+
2
m
s
(
T
a
v
g
−
r
o
t
a
t
i
o
n
)
+
1
1000
×
1
15000
R
P
M
×
60
s
1
m
i
n
×
1000
m
s
1
s
=
6.004
m
s
随
机
情
况
下
,
每
一
个
块
可
以
看
作
分
布
在
不
同
的
磁
道
中
,
因
此
总
的
时
间
是
4096
×
6.004
=
24592.384
m
s
\begin{aligned} &每读一个块需要的时间是4ms(T_{avg-seek}) + 2ms(T_{avg-rotation})+\frac {1} {1000} \times \frac{1} {15000RPM} \times \frac {60s}{1min} \times \frac {1000ms} {1s} = 6.004ms \\ &随机情况下,每一个块可以看作分布在不同的磁道中,因此总的时间是4096 \times 6.004 = 24 592.384ms \end{aligned}
每读一个块需要的时间是4ms(Tavg−seek)+2ms(Tavg−rotation)+10001×15000RPM1×1min60s×1s1000ms=6.004ms随机情况下,每一个块可以看作分布在不同的磁道中,因此总的时间是4096×6.004=24592.384ms
6.25
高速缓存 | m | C | B | E | S | t | s | b |
---|---|---|---|---|---|---|---|---|
1. | 32 | 1024 | 4 | 4 | 64 | 24 | 6 | 2 |
2. | 32 | 1024 | 4 | 256 | 1 | 30 | 0 | 2 |
3. | 32 | 1024 | 8 | 1 | 128 | 22 | 7 | 3 |
4. | 32 | 1024 | 8 | 128 | 1 | 29 | 0 | 3 |
5. | 32 | 1024 | 32 | 1 | 32 | 22 | 5 | 5 |
6. | 32 | 1024 | 32 | 4 | 8 | 24 | 3 | 5 |
6.26
高速缓存 | m | C | B | E | S | t | s | b |
---|---|---|---|---|---|---|---|---|
1. | 32 | 2048 | 8 | 1 | 256 | 21 | 8 | 3 |
2. | 32 | 2048 | 4 | 4 | 128 | 23 | 7 | 2 |
3. | 32 | 1024 | 2 | 8 | 64 | 25 | 6 | 1 |
4. | 32 | 1024 | 32 | 2 | 16 | 23 | 4 | 5 |
6.27
A.行0 : 0x08a4,0x08a5,0x08a6,0x08a7
行1:0x0704,0x0705,0x0706,0x0707
B.0x1238,0x1239,0x123a,0x123b
6.28
A.无
B.行0:0x18f0,0x18f1,0x18f2,0x18f3
行1:0x00B0 0x00B1 0x00B2 0x00B3
C.行0:0x0E34 0x0E35 0x0E36 0x0E37
D.行1:0x1BDC 0x1BDD 0x1BDE 0x1BDF
6.29
A.CTCTCTCTCTCTCTCT, CICI, COCO
B.
操作 | 地址 | 命中? | 读出的值(或者未知) |
---|---|---|---|
读 | 0x834 | 未命中 | - |
写 | 0x836 | 命中 | 未知 |
读 | 0xffd | 命中 | 0xc0 |
6.30
A.128
B.CTCTCTCTCTCTCTCT, CICICI, COCO
6.31
A.
0 | 0 | 1 | 1 | 1 | 0 | 0 | 0 | 1 | 1 | 0 | 1 | 0 |
---|
B.
参数 | 值 |
---|---|
高速缓存块偏移(CO) | 0x2 |
高速缓存组索引(CI) | 0x6 |
高速缓存标记(CT) | 0x38 |
高速缓存命中?(是/否) | 命中 |
返回的高速缓存字节 | 0xeb |
6.32
A.
1 | 0 | 1 | 1 | 0 | 1 | 1 | 1 | 0 | 1 | 0 | 0 | 0 |
---|
B.
参数 | 值 |
---|---|
高速缓存块偏移(CO) | 0x0 |
高速缓存组索引(CI) | 0x2 |
高速缓存标记(CT) | 0xb7 |
高速缓存命中?(是/否) | 未命中 |
返回的高速缓存字节 | - |
6.33
0x1788 0x1789 0x178A 0x178B
0x16C8 0x16C9 0x16CA 0x16CB
6.34
dst | 列0 | 列1 | 列2 | 列3 |
---|---|---|---|---|
行0 | m | m | m | m |
行1 | m | m | m | m |
行2 | m | m | m | m |
行3 | m | m | m | m |
src | 列0 | 列1 | 列2 | 列3 |
---|---|---|---|---|
行0 | m | m | h | m |
行1 | m | h | m | h |
行2 | m | m | h | m |
行3 | m | h | m | h |
6.35
dst | 列0 | 列1 | 列2 | 列3 |
---|---|---|---|---|
行0 | m | m | m | m |
行1 | m | m | m | m |
行2 | m | m | m | m |
行3 | m | m | m | m |
src | 列0 | 列1 | 列2 | 列3 |
---|---|---|---|---|
行0 | m | h | h | h |
行1 | m | h | h | h |
行2 | m | h | h | h |
行3 | m | h | h | h |
6.36
A. 100 % 100\% 100%
B. 25 % 25\% 25%
C. 25 % 25\% 25%
D.不能,因为已经抵达下限了,此时只受块的大小限制。
E.能,每次命中失败一次后,下次命中的次数增多。
6.37
高速缓存大小为总共4096个字节,可以存256个块,因此对于N=64的情况,每16行被mod到同一个位置
对于N=60的情况比较复杂对于B和C比较复杂,先略
函数 | N=64 | N=60 |
---|---|---|
sumA | 25 % 25\% 25% | 25 % 25\% 25% |
sumB | 100 % 100\% 100% | |
sumC | 50 % 50\% 50% |
6.38
A.$16 \times 16 \times 4 = 1028 $ 次
B.由题意知高速缓存总共64个块,而square有128个块。因此缓存不命中的写总数是$1024 \times 0.125=128 $次
C. 12.5 % 12.5\% 12.5%
6.39
A.$16 \times 16 \times 4 = 1028 $ 次
B.256次
C. 25 % 25 \% 25%
6.40
A.$16 \times 16 \times 4 = 1028 $ 次
B.对于y来说 16 × 16 × 0.5 = 128 16 \times 16 \times 0.5 = 128 16×16×0.5=128次,对于剩下的c,m,k来说 16 × 16 × 3 × 1 6 = 128 16 \times 16 \times3 \times \frac 1 6=128 16×16×3×61=128次
C. 25 % 25\% 25%
6.41
总计 480 × 640 = 307 , 200 480\times640=307,200 480×640=307,200次写
缓存大小65,536字节,能存16,384行
不命中率是 25 % 25\% 25%
因此写不命中次数是72800次
6.42
25 % 25\% 25%
6.43
100 % 100\% 100%
6.44
运行结果如下
可以看出吞吐量在32K到64K剧变,512K到1024K剧变,4m到8m剧变
因此我的系统上的高速缓存为L3:32K,L2:512K,L3:4m
使用lscpu查看实际上的值,确实如此
6.45
这题正好是我的实验,实验回来在做
6.46