0

对于write allocateno write allocate,我对内存访问有点困惑。

假设我们有一个行大小为 4 个字的缓存。在高速缓存高和未命中的情况下,高速缓存和内存之间将传输多少字,如果:

  • 写分配
  • 没有写分配

谢谢...

4

1 回答 1

2

我认为它的实现依赖。

让我们考虑无写入分配和缓存写入命中。由于它的缓存命中,您不需要从内存中获取,但是由于它是直写,您需要更新主内存。如果您的架构支持屏蔽写入,即它可以以 4 个字的粒度发送地址和实际脏字的掩码,那么您可以只发送一个字就可以逃脱。所以在内存端,当它接收到 write through 请求时,它应该只能根据掩码和地址更新正在修改的单词。在缓存写入 MISS 的情况下,由于它的无写入分配,您不需要获取任何内容。您仍然需要更新主内存,再次与上述相同。

当您考虑写入分配时,当它是 HIT 时,行为类似于上面。当它未命中时,您需要在修改之前获取条目。通常,这与读取未命中类似。因此,您将获取 4 个单词,其余的与写回内存相同。

所以底线是,从内存中提取总是 4 个字。写入内存将是 1 个字或 4 个字,具体取决于实现。

于 2016-12-12T10:40:38.477 回答