Homework 02
约 1194 个字 15 张图片 预计阅读时间 6 分钟
2.17


(a)直接映射的访问时间为 0.86ns,2 路组相联的访问时间为 1.12ns,4 路组相联的访问时间为 1.37ns
那么 2 路组相联相对直接映射的比例为 \(1.12/0.86=1.30\),4 路组相联相对直接映射的比例为 \(1.37/0.86=1.59\)
(b)16KB 缓存的访问时间为 1.27ns,32KB 缓存的访问时间为 1.35ns,64KB 缓存的访问时间为 1.37ns
那么 32KB 缓存相对 16KB 缓存的比例为 \(1.35/1.27=1.06\),64KB 缓存相对 16KB 缓存的比例为 \(1.37/1.27=1.08\)
(c)我们有:
\[
\begin{aligned}
\text{Average Access Time} &= \text{Hit Rate} \times \text{Hit Time} + \text{Miss Rate} \times \text{Miss Penalty}\\
\text{Miss Rate} &= \frac{\text{Misses per Instruction}}{\text{References per Instruction}}
\end{aligned}
\]
使用 CACTI 查得直接映射的时钟周期为 0.5ns,2 路组相联的时钟周期为 0.5ns,4 路组相联的时钟周期为 0.83ns,8 路组相联的时钟周期为 0.79ns
综上我们可以得到:
\[
\begin{aligned}
\text{Hit Time}_{\text{Direct Mapped}} &= \frac{0.86}{0.5}=2\text{ cycles}\\
\text{Hit Time}_{\text{2-Way}} &= \frac{1.12}{0.5}=3\text{ cycles}\\
\text{Hit Time}_{\text{4-Way}} &= \frac{1.37}{0.83}=2\text{ cycles}\\
\text{Hit Time}_{\text{8-Way}} &= \frac{2.03}{0.79}=3\text{ cycles}\\
\text{Miss Penalty}_{\text{Direct Mapped}} &= \frac{10}{0.5}=20\text{ cycles}\\
\text{Miss Penalty}_{\text{2-Way}} &= \frac{10}{0.5}=20\text{ cycles}\\
\text{Miss Penalty}_{\text{4-Way}} &= \frac{10}{0.83}=13\text{ cycles}\\
\text{Miss Penalty}_{\text{8-Way}} &= \frac{10}{0.79}=13\text{ cycles}\\
\text{Miss Rate}_{\text{Direct Mapped}} &= 2.2\%\\
\text{Miss Rate}_{\text{2-Way}} &= 1.2\%\\
\text{Miss Rate}_{\text{4-Way}} &= 0.33\%\\
\text{Miss Rate}_{\text{8-Way}} &= 0.09\%\\
\end{aligned}
\]
所以:
\[
\begin{aligned}
\text{Average Access Time}_{\text{Direct Mapped}} &= (1-0.022)\times 2 + 0.022 \times 20 = 2.396\text{ cycles}=1.198\text{ ns}\\
\text{Average Access Time}_{\text{2-Way}} &= (1-0.012)\times 3 + 0.012 \times 20 = 3.24\text{ cycles}=1.62\text{ ns}\\
\text{Average Access Time}_{\text{4-Way}} &= (1-0.0033)\times 2 + 0.0033 \times 13 = 2.06\text{ cycles}=1.69\text{ ns}\\
\text{Average Access Time}_{\text{8-Way}} &= (1-0.0009)\times 3 + 0.0009 \times 13 = 3.01\text{ cycles}=2.37\text{ ns}\\
\end{aligned}
\]
所以直接映射最好
2.18

(a)当前缓存的访问时间为 \(1.69\text{ ns}=3\text{ cycles}\)
对于路预测缓存来说,访问时间为 \((1-0.022)\times (0.8\times 2+(1-0.8)\times 3)+0.022\times 20=2.59\text{ cycles}\)
(b)加速比为 \((0.83-0.5)/0.5=66\%\)
(c)原来的访问时间为 \(2.59\text{ cycles}\),如果是 15 个时钟周期的错误预测损失,访问时间为 \((1-0.022)\times (0.8\times 2+(1-0.8)\times 15)+0.022\times 20=4.94\text{ cycles}\),增加了 \(2.35\text{ cycles}\)
(d)加速比为 \(\frac{2.4\text{ ns}-1.59\text{ ns}}{1.59\text{ ns}}=51\%\)
2.26

(a)LRU 策略新拿到的块会放到优先队列的头部,当块被再次访问时会被放到优先队列的头部,当块被替换时会将优先队列的尾部的块替换掉
(b)将新拿到的块放到队列的倒数第二位,当块被再次访问时放到优先队列的头部,当块被替换时会将优先队列的尾部的块替换掉
2.27


根据每个程序的行为和服务给它们动态地提供缓存当中的一部分路,但是在提供隐私信息的时候,事先确定路的分配且运行时不能改变
2.28

将经常需要使用的块放在靠近处理器核心的 Bank 当中,一些不常用的块放在远离处理器核心的 Bank 当中,如果离处理器核心近的 Bank 能处理更多的请求就能实现更高的性能
2.32

\[
\begin{aligned}
\text{Instructions per Second} &= 8\text{ cores}\times 3\text{ GHz}/2.0\text{ CPI}=1.2\times 10^{10}\\
\text{L2 Misses per Second} &= 1.2\times 10^{10}\times 0.00667= 8\times 10^{7}\\
\text{Bandwidth} &= 8\times 10^{7}\times 32\text{ bytes}\times 2=5120\text{MB/s}\\
\end{aligned}
\]
所以只需要一个就够了
2.33

应该放在不同的通道上,因为如果位于同一个 bank 当中,如果它们命中,需要按顺序取出访问,如果位于不同的 bank 当中,可以并行访问,这样能提高效率
2.36

\(\text{Time} = \frac{8\times 10^9\times 2\times 2.56}{64\times 1.6}=4\times 10^8\text{ seconds}\)(这真的对吗)
2.37

(a)可以,用于在 VM 上安装应用和开发环境
(b)可以,用于在 VM 上启动应用服务作为临时服务
(c)不可以,因为 VM 的性能较差所以不可能会有更高的性能
(d)可以,不同 VM 之间相互独立,可以将应用安装在不同的 VM
(e)可以,VM 是完全独立的,可以独立运行应用
2.38


(a)执行非常多计算,但是数据集比较小,也很少进行 I/O 或系统函数调用的程序
(b)120%
(c)用 Pure Virtualization 是 10.3,用 Paravirtualization 是 3.76
(d)空调用或者空 I/O 调用。这是因为它们没有实际需要做的工作来超过更改保护级别的开销
2.41


移除 Alpha 21264 中支持乱序执行的硬件(发射队列、重命名映射器)后,其释放的面积可将数据缓存从 64 KB 扩大至约 80 KB(假设OOO硬件面积占原数据缓存的25%)