如果我们考虑采用写分配策略的分层单级写回缓存,则写操作期间的平均访问时间的公式为由以下给出:-
Twrite = (H)(Tc) + (1-H)(Tc + Tm + (x*Tm))。
哪里,
H=缓存命中率。
Tc=缓存的访问时间。
Tm=内存的访问时间。
x= 脏缓存 block 的比例。
但是,我认为这个公式并不完全正确。根据我的说法,在写分配的情况下写未命中期间,我们首先在缓存中找到一个要替换的 block ,如果它脏了, 我们更新主存储器。现在我们将包含该单词的所需缓存 block 放入缓存中,然后更新缓存。这是我在哈马赫和帕特森的书中读到的内容。
那么公式不应该是
Twrite = (H)(Tc) + (1-H)(Tc + Tm + (x*Tm) + Tc)。 ?
在这里,我在末尾添加了额外 Tc 时间,该时间是在从主内存中取出 block 后更新缓存中的字所需的。 第一个 Tc 是我们在未命中时添加的时间,因为它的分层缓存
最佳答案
建议您再次检查写入分配策略。有一个真不错paper诺曼·P·乔皮 (Norman P. Jouppi) 撰写的《写错过政策》。
顾名思义,写入分配,在写入未命中的情况下在缓存中分配一个条目。如果为写未命中分配的行是脏的,我们需要用脏缓存行的内容更新主内存。因此,更新脏缓存行的主内存所花费的时间为
x * Tm
使用脏缓存行的内容更新主内存后,可以使用它来存储写入未命中的数据。因此我们需要访问缓存。所以我们的新时间是
Tc + (x * Tm)
但是,只有当存在缓存未命中时,我们才会这样做。因此,整个事情需要乘以失误率。
(1-H)(Tc + (x * Tm))
上面的公式涵盖了未命中的情况。当它命中时,我们只需要访问缓存即可。这就是 Tc 乘以命中率
Tc * H
将它们全部相加得出平均访问时间:
(Tc * H) + (1-H)(Tc + (x * Tm))
关于caching - 使用写分配策略写回缓存公式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48277970/