使用写分配策略

时间:2018-01-16 09:29:56

标签: caching x86 cpu cpu-architecture

如果我们将分层单级写回缓存写入分配策略一起考虑,那么写入操作期间的平均访问时间公式为由下列人员给出: -

Twrite =(H)(Tc)+(1-H)(Tc + Tm +(x * Tm))。

其中,

H =缓存的命中率。

Tc =缓存的访问时间。

Tm =内存的访问时间。

x =脏的缓存块的一部分。

上述公式在此网站https://gateoverflow.in/14480/formula-write-back-write-through-access-time-parallel-serial?show=14502#a14502

中给出

但是,我认为这个公式并不完全正确。根据我的说法,在写入分配的情况下,在写入错过期间,我们首先在缓存中找到要替换的块,如果它是脏的,  我们更新主内存。现在我们将包含该字的所需缓存块放入缓存中,然后更新缓存。这是我在hamacher和patterson书中读到的内容。

所以不应该公式

Twrite =(H)(Tc)+(1-H)(Tc + Tm +(x * Tm)+ Tc )。 ?

这里我添加了额外的Tc 时间,一旦从主存储器中取出块,就需要更新缓存中的字。 First Tc是我们在未命中时添加的时间,因为它的分层缓存

1 个答案:

答案 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))