【发布时间】:2017-03-14 01:10:55
【问题描述】:
我发现很难理解本地和全局未命中率之间的差异以及如何计算内存访问的平均时间,我只想举一个我试图解决的问题的例子。如果有人能告诉我我是否走在正确的轨道上,或者我错了我错过了什么,我将不胜感激。
考虑以下多级缓存层次结构及其查找时间和未命中率:
- 一级缓存,0.5 ns,20%
- 二级缓存,1.8 ns,5%
- 三级缓存,4.2 ns,1.5%
- 主存储器,70 ns,0%
在这种情况下,给定的查找时间是指检查请求的数据在当前层次结构中是否可用以及将数据传输到上一层(或 CPU)所花费的总时间。这和命中时间一样,对吧? 给出的未命中率是当地的。而且据我了解,一个级别的未命中率需要乘以所有先前级别的未命中率,才能正确处理该级别。
假设我们有 1000 次内存访问,在 L1 中有 20% 的访问会丢失。所以他们中的 20% 会去 L2,其中 5% 会错过。因此,从 1000 次内存访问中,1000 * 20% * 5% 将到达那里。 现在,据我所知......如果我错了,请纠正我,以上未命中率是本地的,但它们的乘积是每个相应级别的全局未命中率。这意味着 L2 的全局未命中率为 0,2*0,05 = 1%。
现在,我可能对这个计算非常错误,但这是我的想法:
AMAT (Average Memory Access Time) = Hit time + Miss rate * Miss penalty
AMAT = 0.5 + 0.2 * (1.8 + 0.2 * 0.05 * (4.2 + 0.2 * 0.05 * 0.015 * 70))
计算后我得到 AMAT = 0.868421 ns
我这样做对吗?
【问题讨论】:
-
也许可以定义
AMAT... -
@MarkSetchell 平均内存访问时间 (AMAT) 是一种衡量内存层次结构配置性能的方法。它考虑到层次结构不同级别的未命中对整体系统性能的影响不同。
-
我确定您误解了缓存未命中率。 1.5% 的 L3 缓存未命中意味着 1.5% 的所有内存访问未命中。
-
@gnasher729 感谢您的回复。你确定你的建议适用于这个例子,其中小姐率是当地的吗?
标签: performance memory computer-science cpu-architecture cpu-cache