首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >您如何发现单级缓存的未命中惩罚?

您如何发现单级缓存的未命中惩罚?
EN

Stack Overflow用户
提问于 2019-12-10 06:35:15
回答 1查看 4.1K关注 0票数 0

我正在尝试找出单级缓存的平均内存访问时间(AMAT)。为了做到这一点,必须计算未命中惩罚,因为AMAT公式需要它。

对多级缓存执行此操作需要使用下一级缓存惩罚。但对于单个级别,显然没有其他的高速缓存级别。

那么这是如何计算的呢?

公式: AMAT =命中时间+未命中率*未命中惩罚

EN

回答 1

Stack Overflow用户

发布于 2020-01-11 08:59:24

您有正确的公式来计算AMAT,但是您可能曲解了公式的组成部分。让我们看看如何使用这个等式,首先使用单级缓存,然后使用多级缓存。

假设您有一个单级缓存。命中时间表示从缓存中搜索和检索数据所需的时间量。未命中率表示请求的数据中没有驻留在缓存中的百分比,即您必须到主存中检索的数据的百分比。未命中惩罚是在缓存中未命中时检索数据所需的时间量。因为我们处理的是单级缓存,所以内存层次结构中唯一要考虑的其他级别是用于未命中惩罚的主内存。

代码语言:javascript
复制
Here’s a good example for single-level cache:
L1 cache has an access time of 5ns and a miss rate of 50%
Main memory has an access time of 500ns

AMAT = 5ns + 0.5 * 500ns = 255ns

你总是先检查缓存,所以你总会产生5 ns的命中时间开销。因为我们的失败率是0.5,所以我们有一半的时间在L1缓存中找到我们要找的东西,剩下的一半时间必须到主存中去。您可以使用加权平均值以以下方式计算未命中惩罚:(0.5 * 0ns) + (0.5 * 500ns) = (0.5 * 500ns) = 250ns

现在,假设您有一个多级缓存,即L1和L2缓存。命中时间现在表示在L1缓存中检索数据的时间量。未命中率表示我们在L1缓存中未命中的频率。在多级缓存中计算未命中惩罚不像以前那样简单,因为我们需要考虑从L2缓存读取数据所需的时间以及在L2缓存中未命中的频率。

代码语言:javascript
复制
Here’s a good example: 
L1 cache has an access time of 5 ns and miss rate of 50%
L2 cache has an access time of  50 ns and miss rate of 20%
Main memory has an access time of 500 ns

AMAT = 5ns + 0.5 * (50ns  + 0.2 * 500ns) = 80 ns

同样,您总是首先检查L1缓存,因此您总是产生5 ns的命中时间开销。因为我们的失败率是0.5,所以我们在L1缓存中找到我们正在寻找的东西的时间占了一半,而在剩下的一半时间里,我们必须沿着内存层次结构(L2缓存,主存)向下。如果我们在L1缓存中找不到数据,那么我们总是接着在L2缓存中查找。因此,每次在L1缓存中未命中时,我们都会产生50 ns的命中时间开销。在数据也不在L2缓存中的情况下(这是20%的时间),我们必须访问内存访问时间为500 ns的主内存。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59257656

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档