如果我们将分层单级写回缓存与写入分配策略一起考虑,那么写入操作期间的平均访问时间公式为由下列人员给出: -
Twrite =(H)(Tc)+(1-H)(Tc + Tm +(x * Tm))。
其中,
H =缓存的命中率。
Tc =缓存的访问时间。
Tm =内存的访问时间。
x =脏的缓存块的一部分。
中给出但是,我认为这个公式并不完全正确。根据我的说法,在写入分配的情况下,在写入错过期间,我们首先在缓存中找到要替换的块,如果它是脏的, 我们更新主内存。现在我们将包含该字的所需缓存块放入缓存中,然后更新缓存。这是我在hamacher和patterson书中读到的内容。
所以不应该公式
Twrite =(H)(Tc)+(1-H)(Tc + Tm +(x * Tm)+ Tc )。 ?
这里我添加了额外的Tc 时间,一旦从主存储器中取出块,就需要更新缓存中的字。 First Tc是我们在未命中时添加的时间,因为它的分层缓存
答案 0 :(得分:1)
我建议你再次检查写分配策略。 Norman P. Jouppi撰写了一篇非常好的paper写错过的小说。
顾名思义,write allocate,在写入未命中的情况下在缓存中分配一个条目。如果为写入未命中分配的行是脏的,我们需要使用脏缓存行的内容更新主存储器。因此,更新脏缓存行的主内存所花费的时间将是
x * Tm
使用脏缓存行的内容更新主内存后,可以使用它来存储写入未命中的数据。因此我们需要访问缓存。所以我们的新时间将是
Tc + (x * Tm)
但是,当缓存未命中时,我们只会执行此操作。因此,整个事情需要乘以未命中率。
(1-H)(Tc + (x * Tm))
以上公式涵盖了未命中的情况。当它成为命中时,我们只需要访问缓存。这将是Tc乘以命中率
Tc * H
全部添加它们可以获得平均访问时间:
(Tc * H) + (1-H)(Tc + (x * Tm))