Hardware Support for MESI Tag State Data Shared signal s wired-OR Memory VO devices 总线互连的新要求 增加一个称为 shared signal S,必须对所有 Cache控制器可用 可以实现成wred-ORne 所有 cache controllers监测 BusRd 如果所访问的块的状态是( state S,E,orM) 请求 Cache根据 shared signa选择E或S 2021/2/1 计算机体系结构
Hardware Support for MESI • 总线互连的新要求 – 增加一个称为shared signal S, 必须对所有Cache控制器可用 – 可以实现成 wired-OR line • 所有cache controllers 监测 BusRd – 如果所访问的块的状态是(state S, E, or M) – 请求Cache 根据shared signal选择E或S 2021/2/1 计算机体系结构 17 Shared signal S wired-OR I/O devices Memory P1 Tag State Data P2 Tag State Data P3 Tag State Data
O MESI State Transition Diagram Processor read 读失效时产生 BusRd事务 BusRd(s)=> shared line asserted 在其他 Cache中有有效的copy · Goto state s PrWr/- Flush BusRd(s)=> shared line not asserted PrWr/ BusUpgr 在其他 Cache中不存在该块 E Bus RdX Goto state e PwR/ Bus Rd/- 读命中时不产生总线事务 Bus RdX PrRd/- BusWB Processor Write Bus RdX- PrRd/ Replace/- 该 Cache块的状态转至M Bus Rd(-s) Bus RdX or I 在或s态(命中)产生 BusRdX/ BusUpgr PrNdl- Bus Upgrh- Bus Rd/ Replace PrRd/ 作废其他 Cache中的 Copies Bus Rd(s) Cache块处于状态 E and m时,不产生总线事务 E或S态写失效时,引起 replace动作 M态写失效时,引起 replace和 BUsWB 2021/2/1 计算机体系结构
MESI State Transition Diagram • Processor Read – 读失效时产生BusRd事务 – BusRd(S) => shared line asserted • 在其他Cache中有有效的copy • Goto state S – BusRd(~S) => shared line not asserted • 在其他Cache中不存在该块 • Goto state E – 读命中时不产生总线事务 • Processor Write – 该Cache块的状态转至 M – 在I或S态(命中)产生 BusRdX / BusUpgr • 作废其他Cache中的Copies – Cache块处于状态E and M时,不产生总线事务 – E或S态写失效时,引起replace动作 – M态写失效时,引起replace和BusWB PrWr/— PrRd/— E M I S PrRd PrRd/ BusRd(S) BusRdX /Flush BusRd/— PrWr/ BusUpgr PrWr/ BusRdX BusRd/ Flush BusRdX or BusUpgr/— BusRdX/— PrRd/— BusRd/— PrRd/ BusRd(~S) PrWr/— Replace/ BusWB Replace/— Replace/— 2021/2/1 计算机体系结构 18
OMESI State Transition Diagram-cont'd observing a busrd 该块的状态从E降至S PoRk- 因为存在其他copy 该块从M降至S ·将引起更新过的块刷新操作 PrWr/- 刷新内存和其他有需求的 Cache Flush PrWr/ observing a busRdX or busupgr BusUpgr 将作废相应的bock Bus RdX BusRd/ Flush PwR/ 对于处于 modified状态的块,将产生fush事 EBusRdX PrRd/- 务 Bus WB BusUpgr:仅引起作废其他块,不产生读块pRu Bus RdXc2C 操作 BusRd(-s) Bus Upgrk-;, Cache-to-Cache( C2C)Sharing Bus Rd/C2C PrRd/ 原来的 inos version支持这种共享 Bus Rd(s) 由 Cache提供数据,而不是由内存提供数据 2021/2/1 计算机体系结构 19
MESI State Transition Diagram – cont’d • Observing a BusRd – 该块的状态从E降至 S • 因为存在其他copy – 该块从M降至 S • 将引起更新过的块刷新操作 • 刷新内存和其他有需求的Cache • Observing a BusRdX or BusUpgr – 将作废相应的 block – 对于处于modified状态的块,将产生flush事 务 – BusUpgr:仅引起作废其他块,不产生读块 操作 • Cache-to-Cache (C2C) Sharing – 原来的Illinois version支持这种共享 – 由Cache 提供数据,而不是由内存提供数据 PrWr/— PrRd/— E M I S PrRd PrRd/ BusRd(S) BusRdX/ Flush BusRd/ C2C PrWr/ BusUpgr PrWr/ BusRdX BusRd/ Flush BusRdX/C2C PrRd/— BusRd/C2C PrRd/ BusRd(~S) PrWr/— Replace/ BusWB BusRdX/— BusUpgr/— Replace/— Replace/— 2021/2/1 计算机体系结构 19
e MESI Lower-level Design Choices ·在E或S态时,由谁为 BusRd/ BusRdx事务提供数据 Original, linois mes|: cache,因为它假设 Cache比 memory.更快 ·但 cache-to- cache共享增加了实现的复杂性 这种实现的代价高于从 memory获取数据 存储器如何知道它该提供数据( must wait for caches) 如果多个 Cache共享数据,要有 Selection过程 当块状态为 Modified,总线上的刷新( Flushing)数据操作 需要更新的块以及存储器接收数据,但存储器速度比 Cache的速度慢。 是否可以仅让 Cache接收数据, memory.不接收数据? 这就要求第5个状态: Owned state→ MOESI Protocol Owned态是共享的 Modified态,此时存储器不是最新数据 该块可以被多个 Cache共享,但所有者( owner)只有一个 2021/2/1 计算机体系结构
MESI Lower-level Design Choices • 在E或S态时,由谁为BusRd/BusRdx事务提供数据 – Original, Illinois MESI: cache, 因为它假设Cache比memory更快 • 但 cache-to-cache 共享增加了实现的复杂性 – 这种实现的代价高于从memory获取数据 – 存储器如何知道它该提供数据(must wait for caches) – 如果多个Cache共享数据,要有Selection过程 • 当块状态为Modified,总线上的刷新(Flushing)数据操作 – 需要更新的块以及存储器 接收数据,但存储器速度比Cache的速度慢。 – 是否可以仅让Cache接收数据,memory不接收数据? • 这就要求第5个状态: Owned state MOESI Protocol • Owned 态是共享的Modified态,此时存储器不是最新数据 • 该块可以被多个Cache共享,但所有者(owner)只有一个 2021/2/1 计算机体系结构 20
MOES中的 Owned和 Shared状态 Owned位 0位为1表示在当前 Cache块中包含的数据是当前处理器系统最新 的数据拷贝,而且在其他CPU中一定具有该 Cache块的副本,其他 CPU的 Cache块状态为S。 如果存储器的数据在多个CPU的 Cache中都具有副本时,有且仅有 一个CPU的 Cache块状态为0,其他CPU的 Cache块状态只能为S。 与MES协议中的S状态不同,状态为0的 Cache块中的数据与存储 器中的数据并不一致 Shared位 当 Cache块状态为S时,其包含的数据并不一定与存储器致。 如果在其他CPU的 Cache中不存在状态为0的副本时,该ache块中 的数据与存储器一致 如果在其他CPU的 Cache中存在状态为0的副本时, Cache块中的数 据与存储器不一致。 2021/2/1 计算机体系结构
MOESI中的Owned 和Shared 状态 • Owned位。 – O位为1表示在当前Cache块中包含的数据是当前处理器系统最新 的数据拷贝,而且在其他CPU中一定具有该Cache块的副本,其他 CPU的Cache块状态为S。 – 如果存储器的数据在多个CPU的Cache中都具有副本时,有且仅有 一个CPU的Cache块状态为O,其他CPU的Cache块状态只能为S。 – 与MESI协议中的S状态不同,状态为O的Cache块中的数据与存储 器中的数据并不一致。 • Shared位。 – 当Cache块状态为S时,其包含的数据并不一定与存储器一致。 – 如果在其他CPU的Cache中不存在状态为O的副本时,该Cache块中 的数据与存储器一致; – 如果在其他CPU的Cache中存在状态为O的副本时,Cache块中的数 据与存储器不一致。 2021/2/1 计算机体系结构 21