我正在查看此link
中的内存层次结构问题该问题要求计算AMAT(平均内存访问时间)
以下是给出的公式:
我还看到了斯坦福在link2
的演讲有这样的公式:
从网上搜索,我的理解是任何级别的AMAT都是:
AMAT = hit time + local miss rate X miss penalty
所以对于斯坦福的公式来说,一定是因为:
AMAT = hit time (L1) + local miss rate (L1) X miss penalty (L1)
= hit time (L1) + local miss rate (L1) X [ hit time (L2) + local miss rate (L2) X miss penalty (L2) ]
= hit time (L1) + local miss rate (L1) X hit time (L1) + **global miss rate (L2)** X miss penalty (L2)
(a)是斯坦福公式中的L2未命中率L2缓存的全局未命中率?
(b)为什么第一个链接的问题公式乘以命中时间与L1的命中率?
(c)为什么在第一个公式中,TLB未命中罚分加上TLB命中时间(在缓存公式中,未命中率只是乘以未命中罚分)?
(d)如果第一个链接的公式是错误的,那么在出现这样的问题时计算AMAT的正确公式是什么?
感谢。
答案 0 :(得分:1)
我意识到这是一个老问题,但无论如何。
(a)是斯坦福公式中L2未命中率的全局未命中率 二级缓存?
我不确定“全局”是什么意思,但是公式中的L2未命中率是指发出请求的核心的整个L2,考虑到来自该核心的所有对L2的需求访问。
(b)为什么第一个链接的问题公式成倍增加 命中时间与L1的命中率?
出现混淆是因为公式中使用的术语没有精确定义。在第一个公式中,命中时间和未命中罚分是独立的数量。也就是说,它们不重叠。我认为最好把它称为“错过时间”,而不是“错过点球”。
但是在第二个公式中,未命中罚分是在命中时间内的附加数量。因此,基本上命中时间是100%的时间内产生的基本延迟,无论是命中还是未命中。第二个公式可以改写如下:
AMAT = 100%X命中时间(L1)+局部未命中率(L1)X未命中罚分(L1)
因此,两个公式都以相同的方式计算AMAT(暂时忽略TLB)。只是术语的定义不同。
(c)为什么在第一个公式中,TLB命中增加了TLB未命中惩罚 时间(在缓存公式中,未命中率只是乘以 错过点球?)
如果你看一下VM II讲座的幻灯片17,你会看到发出访问权限的指令在TLB未命中时重新启动(这意味着所有TLB未命中都由操作系统处理,而不是硬件)。因此,在TLB未命中时,TLB命中延迟再次发生(除了TLB未命中惩罚)。
(d)如果第一个链接的公式错误,那么正确的公式是什么 在出现这样的问题时计算AMAT?
公式很好。