CPU Architect · Technical / Simulator Design

MOESI:脏共享所有者与写权限转移

先解释稳定状态,再分析消息中的过渡状态与并发。

题目重点:先解释稳定状态,再分析消息中的过渡状态与并发。

题意与假设

这道练习题保留了面经中值得训练的核心约束,并将需要澄清的条件单独列出。现场拿到变体时,先和面试官确认这些条件。

  • 训练write-back、多核invalidate-based模型;M/O/E/S/I仅为稳定状态概念,具体消息FSM依协议实现。
  • cache coherence约束单地址观察,memory consistency还约束跨地址顺序,二者不可混同。

解题路线

  1. M独占脏,E独占干净,S共享,O持有脏共享权威副本,I无效。O使脏数据可给其他reader共享而不要求立即写回内存;谁负责后续供数/写回由协议所有权定义。
  2. 新writer需取得独占并确认其他副本失效,再允许写完成。两个核同时GETX由directory/bus序列化,必须有暂态和ack计数,稳定五状态不能覆盖请求在途。
  3. 验证不变量:同line最多一个有写权限;读不能得到过期值;脏数据必须有负责保存/回写者;消息不丢与资源有序保证进展。不同协议实现可以在非关键路径时延/结构上不同。

手动走一遍

coreA的M line被coreB读取,典型可让A变O、B变S,由A供最新数据,内存仍旧。B随后要写,必须让A及其他S失效并移交责任,不能B直接S→M后任意写。

规模与取舍

按line维护owner/sharer元数据;N核全bit-vector directory每line O(N)bits,稀疏sharer可节省但有溢出与消息取舍。失效消息量依共享者数。

易错点与追问

容易失分的边界

  • 把O解释成另一种允许多writer的Modified。
  • 只有稳定状态图不证明无死锁,需要暂态、队列和网络依赖。

继续深挖

  • owner驱逐但sharer仍在时,脏数据责任怎样转移?
  • false sharing为什么即使不同变量也可能大量失效?

技术参考

✓已复制微信号!