如果我们将 hierarchical single level write back cache 与 write allocate policy 一起考虑,则 write operation 期间的平均访问时间公式由下式给出: -
Twrite =(H)(Tc)(1-H)(Tc Tm(x * Tm)) .
哪里,
H =缓存的命中率 .
Tc =缓存的访问时间 .
Tm =内存的访问时间 .
x =脏的高速缓存块的一部分 .
但是,我认为这个公式并不完全正确 . 根据我的说法,在写入分配的情况下,我们首先在缓存中找到要替换的块,如果它是脏的,我们更新主内存 . 现在我们将包含该字的所需高速缓存块带入高速缓存然后 update the cache . 这是我在hamacher和patterson书中读到的内容 .
所以不应该是公式
Twrite =(H)(Tc)(1-H)(Tc Tm(x * Tm) Tc ) . ?
这里我添加了 extra Tc 时间,一旦从主存储器中取出块,就需要更新缓存中的字 . 第一个Tc是我们在未命中的情况下添加的时间,因为它的 hierarchical 缓存
1 回答
我建议你再次检查写分配策略 . Norman P. Jouppi写的miss miss polocies非常好paper .
顾名思义,写入分配,在写入未命中的情况下在缓存中分配条目 . 如果为写入未命中分配的行是脏的,我们需要使用脏缓存行的内容更新主存储器 . 因此,更新脏缓存行的主内存所花费的时间将是
使用脏缓存行的内容更新主内存后,可以使用它来存储写入未命中的数据 . 因此我们需要访问缓存 . 所以我们的新时代将是
但是,当缓存未命中时,我们只会执行此操作 . 因此整个事物需要乘以未命中率 .
以上公式涵盖了未命中的情况 . 当它成为命中时,我们只需要访问缓存 . 这将是Tc乘以命中率
添加它们会给我们平均访问时间: