通过缓存写入的内存访问频率(写入分配/无写入分配)?
Memory access frequency in write through cache (write allocate/ No write allocate)?
对于 write through 缓存的内存访问,我有点困惑 write allocate 和 不写 allocate.
假设我们有一个行大小为 4 字的缓存。如果:
,在缓存 hi 和 miss 的情况下,将在缓存和内存之间传输多少字
- 写入分配
- 没有写入分配
谢谢...
我认为它取决于实现。
让我们考虑无写分配和缓存写 HIT。由于它的缓存 HIT,您不需要从内存中获取,但是由于它是直写的,您需要更新主内存。如果您的体系结构支持掩码写入,即它可以以 4 字粒度发送地址和实际脏字的掩码,那么您只需发送一个字即可。所以在内存端,当它收到直写请求时,它应该能够根据掩码和地址只更新正在修改的字。在缓存写 MISS 的情况下,因为它是无写分配,所以你不需要获取任何东西。还是需要更新主存,同上。
当您考虑写入分配时,当它是 HIT 时,行为与上述类似。当它未命中时,您需要在修改之前获取条目。通常这是类似于读取未命中的实现。所以你会取4个字,其余的写回内存是一样的。
所以最重要的是,从内存中获取将始终是 4 个单词。写入内存将是 1 个字或 4 个字,具体取决于实现方式。
对于 write through 缓存的内存访问,我有点困惑 write allocate 和 不写 allocate.
假设我们有一个行大小为 4 字的缓存。如果:
,在缓存 hi 和 miss 的情况下,将在缓存和内存之间传输多少字- 写入分配
- 没有写入分配
谢谢...
我认为它取决于实现。
让我们考虑无写分配和缓存写 HIT。由于它的缓存 HIT,您不需要从内存中获取,但是由于它是直写的,您需要更新主内存。如果您的体系结构支持掩码写入,即它可以以 4 字粒度发送地址和实际脏字的掩码,那么您只需发送一个字即可。所以在内存端,当它收到直写请求时,它应该能够根据掩码和地址只更新正在修改的字。在缓存写 MISS 的情况下,因为它是无写分配,所以你不需要获取任何东西。还是需要更新主存,同上。
当您考虑写入分配时,当它是 HIT 时,行为与上述类似。当它未命中时,您需要在修改之前获取条目。通常这是类似于读取未命中的实现。所以你会取4个字,其余的写回内存是一样的。
所以最重要的是,从内存中获取将始终是 4 个单词。写入内存将是 1 个字或 4 个字,具体取决于实现方式。