gpt4 book ai didi

caching - 使用 MESI 协议(protocol),写入命中也会使处理器停止运行,对吗?

转载 作者:行者123 更新时间:2023-12-02 21:12:17 24 4
gpt4 key购买 nike

我正在做一个项目,该项目是在 VHDL 中实现具有某种缓存一致性(我选择 MESI)的双处理器系统。我只想确认这一件事:共享缓存行上的写入命中应该会导致缓存 Controller 在共享总线上发送无效消息,并且根据争用情况,它应该使处理器停顿一段时间,对吗?

我正在考虑这个场景;假设处理器执行以下操作:

for (int i = 0; i < 5; ++i)
arr[i * 10] = 0; //just so each write is in a different cache line

如果数组完全驻留在缓存中,并且与其他处理器共享,则每次写入都会生成一条无效消息,每个消息都需要多个周期才能完成;为了让处理器继续执行,所有这些无效消息都必须被缓冲,并且缓冲区不会受到限制,因此写入命中将不得不使 CPU 停顿一段时间。我的说法正确吗?

编辑:愿意解释一下否决票吗?这个问题哪一部分不清楚?或者,如果您认为这是一个愚蠢且可怕的问题,我想您一定已经找到答案了?

最佳答案

不要将延迟与吞吐量混淆。无效消息将需要多个周期才能完成,但您可以管道化该过程。可以构建一个管道式缓存,它能够在先前的失效消息完成之前开始处理新的失效消息。

MESI 协议(protocol)不要求在开始新消息之前,发送到不同缓存行的所有先前消息都已完成。

只要缓存提供足够的吞吐量,传输中的失效消息数量就会受到限制。如果您可以每个周期生成 1 条无效消息,并且每条消息需要 10 个周期来处理,但您的缓存也可以每个周期处理 1 条无效消息,那么最多 10 条无效消息将在运行中,并且您的处理器不必在写入时停止点击共享线路。

关于caching - 使用 MESI 协议(protocol),写入命中也会使处理器停止运行,对吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30558517/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com