存储缓冲区是否发送读取无效消息或使req消息无效?

时间:2018-04-17 00:51:44

标签: cpu cpu-architecture mesi

我认为,为了使CPU继续执行后续指令,存储缓冲区必须执行MESI处理的一部分以获得缓存一致性,因为最新值存储在存储缓冲区而不是缓存中。因此,存储缓冲区发送读取无效或无效的REQ消息,并在ACK到达后刷新最新值以进行缓存。
并且Cache无法做到。

我的分析和结果是对的吗? 或者所有MESI处理都应由缓存完成?

1 个答案:

答案 0 :(得分:3)

在大多数设计中,存储缓冲区不会直接发送无效请求,并且通常甚至不被外部请求窥探 1 。也就是说,它是连贯域的私有/核心方面的一部分,因此不需要参与连贯性。相反,存储缓冲区最终与缓存子系统的第一级交互,缓存子系统本身将负责MESI协议的各个部分。

该交互的工作方式完全取决于设计,当然。一个简单的设计一次只能处理一个商店:最旧的一个位于商店缓冲区的头部,并为该地址执行RFO,并在完成时移动到下一个元素。一个更复杂的设计可能会为几个即将到来的"请求在商店缓冲区中尝试利用更多MLP。在x86上我的确切机制并不清楚:L2的存储似乎表现得相当差in some scenarios,但我很确定一堆存储错过RAM会比它们表现得更好是连续处理的。

1 有一些例外,例如同时多线程(x86上的超线程)涉及两个共享所有级别缓存的逻辑核心,因此能够利用正常的缓存一致性机制,可能需要存储缓冲区窥探。