【发布时间】:2012-02-20 05:41:05
【问题描述】:
我见过的平均内存访问时间经常被引用为:
AMAT = (L1 cache hit time + L1 miss rate*(L2 hit time + L2 miss rate*(memory access time)))
命中次数不乘以命中率有什么原因吗?并且只有未命中次数乘以未命中率?
【问题讨论】:
标签: performance memory
我见过的平均内存访问时间经常被引用为:
AMAT = (L1 cache hit time + L1 miss rate*(L2 hit time + L2 miss rate*(memory access time)))
命中次数不乘以命中率有什么原因吗?并且只有未命中次数乘以未命中率?
【问题讨论】:
标签: performance memory
那是因为无论缓存是否命中,这次在缓存中查找数据的时间都已经花费了。
AMAT=HitTime * (1-MissRate) + MissRate * (HitTime + MissPenalty)
=HitTime + MissRate * MissPenalty
【讨论】:
家庭作业?
在大多数缓存中,所有请求都进入 L1 缓存,然后,只有在确定为未命中后,才会进入 L2。以此类推。
或者:
在 100 次访问中
L1 命中所用时间 = L1 缓存命中时间 * L1 缓存命中率
进入内存的 L1 未命中所花费的时间 = L1 缓存未命中率 *(L1 缓存命中时间 + 进入内存的时间)
Total time = Thit * Phit*100 + Pmuss*100 * (Thit + Tmiss)
= Thit * (1-Pmiss)*100 + Pmiss*100 (Thit+Tmiss)
= Thit * ( 1-Pmiss+Pmiss ) * 100 + Pmiss*100*Tmiss
= 100* (Thit + Pmiss*Tmiss)
如果你有 L2,依此类推。
即他们取消了。
现在,有缓存系统,或者至少曾经有过,访问同时发送到缓存和内存。在这样的系统中
Tavg = Phit*Thit + Pmiss*Tmiss.
但这些并不常见。它们往往会浪费电力,因为您已经启动了您可能不需要的 L2 或主内存访问。
我称前者为透视缓存,后者为后备缓存。
(我后来了解到,我的一些同事将后一种情况称为“对缓存和内存的访问同时发送到缓存和内存的推测性缓存未命中”。这不是不合理的使用术语“推测”,但也可能与产生的“推测性缓存未命中”混淆,例如,由具有分支预测的机器。考虑两种情况:(1)没有分支预测的机器,没有推测性执行。在这样的一台机器,指令,内存引用,不是推测性的,所以我们只是推测是否将此访问发送到缓存或内存。(2)具有分支预测或其他形式的推测执行的机器。这样的机器,实际的内存操作是推测性的。两者可以结合起来:一条我们还不知道实际将要执行的推测性指令,可以产生一个内存访问,它可能会或可能不会在它之前推测性地发送到内存被确定为缓存未命中。)
【讨论】: