1 / 65

第六章 共享存储多处理机

第六章 共享存储多处理机. 第一节 共享存储多处理机. 一、共享存储系统结构 1 、共享存储结构. P 1. P n. P 1. P n. P 1. P n. …. …. …. C. C. C. C. IN. …. 总线或 IN. 存储器. 存储器. 交叉 的 Cache. …. …. 存储器. 存储器. IN. 交叉的主存. (b) 集中式共享存储器. (c) 分布式共享存储器. (a) 共享缓存. * 体系结构 组成 : 节点结构、互连结构.

Download Presentation

第六章 共享存储多处理机

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第六章 共享存储多处理机

  2. 第一节 共享存储多处理机 一、共享存储系统结构 1、共享存储结构 P1 Pn P1 Pn P1 Pn … … … C C C C IN … 总线或IN 存储器 存储器 交叉的Cache … … 存储器 存储器 IN 交叉的主存 (b) 集中式共享存储器 (c) 分布式共享存储器 (a) 共享缓存 *体系结构组成:节点结构、互连结构 内容—①通信、互连网络的结构与性能设计; ②共享存储系统的结构与性能设计; ③同步操作的结构与性能设计 回下页 回4页 回5页

  3. 2、结构对系统性能的影响 *执行时间:T(n)=Tcomput+WTlocaldata+αWTcomm+Tsynch+Tpara Tlocaldata=HTCache+(1-H)Tmem,Tcomm=T固有+T附加 器件决定了Tcomput的f、Tcache、Tmem (1)共享Cache结构 T(n)=Tcomput+WTlocaldata+WΔTlocaldata+Tsynch+Tpara *结构特征:对Cache、MEM带宽要求较高; IN增加了Tcache、Tmem; n降低了Cache层次的命中率H *可扩放性:可扩放性很差, (WΔTlocaldata随W或n急剧增大, 不能利用Cache访问局部性H, 不能利用MEM访问局部性α) 仅适用于n很小(2~8)的系统 转上页

  4. (2)集中共享MEM、总线互连结构 T(n)=Tcomput+WHTCache+W(1-H)Tmem+Tsynch+Tpara *结构特征:对总线带宽、MEM带宽要求较高, (分时访问冲突) 可利用Cache访问局部性H *可扩放性:可扩放性较差, (WTmem增大很快,不能利用α) 仅适用于n较小(20~30)的系统 (3)集中共享MEM、网络互连结构 T(n)=Tcomput+WHTCache+W(1-H)Tmem+Tsynch+Tpara *结构特征:对IN带宽要求较高, (访存穿过网络) 可利用Cache层次的访存局部性H, 系统扩放时结构变化复杂 *可扩放性:可扩放性一般, (WTmem增大较快,不能利用α) 仅适用于n一般的系统 转2页

  5. (4)分布共享MEM、网络互连结构 T(n)=Tcomput+WTlocaldata+αWTcomm+Tsynch+Tpara Tlocaldata=HTCache+(1-H)Tmem Tcomm=T固有+T附加,每次通信Tcomm’=t0+tl+m/r∞-toverlap *结构特征:可利用Cache和本地MEM访存局部性H和α *结构与性能:存储系统影响H、T附加, 通信系统影响t0、Tsynch、toverlap及Tpara, 互连网络影响tl、r∞及toverlap *可扩放性:可扩放性较好, (W或n增大时结构变化不大, 能用软件优化α和隐藏Tcomm) 适用于n较大的系统 转2页

  6. 3、本章重点讨论内容 —基于集中式共享的体系结构 (1)通信、互连网络结构与性能设计 *结构设计:共享变量通信结构、总线互连结构;(与单P类似) *性能设计:与存储系统密切相关 (在存储系统性能设计中讨论) (2)存储系统结构与性能设计 *结构设计:存储系统结构模型, (与单处理机类似[层次结构]) 单级及多级Cache结构的存储系统一致性实现; *性能设计:存储系统一致性模型(Cache一致性,存储一致性) 的性能设计,通信、总线的性能设计 (3)同步操作结构与性能设计 *结构设计:互斥/点点事件/栅障事件的同步结构/硬件原语; *性能设计:结构/原语转换、同步权获得/等待/释放的性能设计

  7. 二、高速缓存一致性 指各P的Cache中数据副本和SM中数据间的一致性 指相对于没有Cache的存储操作结果←┘ 1、不一致原因 ①绕过Cache的I/O操作(如DMA操作); ②不同P对自身Cache中相同数据副本的异步写操作; ③多处理器中不互相通报的进程迁移 2、Cache一致性解决方法 *第①种原因:禁止法(非仅P访问的数据禁止进入Cache), 刷新法(I/O操作前刷新被改数据副本); *第②③种原因:刷新法(用一致性协议提前刷新数据副本) 实现方法—监听法(基于总线互连)、目录法(基于网络互连)

  8. 3、高速缓存一致的存储系统 *存储操作: 单P操作特征—部分操作到达主存、操作发出=完成 P1 Pn … 操作发出=完成 W完成=后续R返回最近结果 R完成=后续W不影响R返回值 主存 C C 多P操作特征—无全局串行序(最近/后续无法定义) *相关概念: 程序序(程序次序)—程序员认为的源程序操作逻辑顺序; 执行序(执行次序)—进程发出的源程序操作实际次序, MEM操作顺序与执行序相同; 偏序—指所有P对某存储单元的MEM操作次序; 全序—指所有P对所有存储单元的MEM操作次序 回下页

  9. *定义:根据程序任何一次执行结果,对所有存储单元的MEM操作,均可以构造出一个全序,且满足下列条件:*定义:根据程序任何一次执行结果,对所有存储单元的MEM操作,均可以构造出一个全序,且满足下列条件: 1)实际的执行结果=按该全序的执行结果; 2)进程→存储系统的操作次序=该全序的次序; 3)各读操作返回值=全序中该单元偏序的最后写操作的值 偏序3 P0: R1 R5 R2 W3 R4 W2 *Cache一致性隐含的性质: 写传播—某P写操作的效果对其他P可见; 写串行化—各P以相同顺序看到对同一单元的所有写操作 P1: R4 W3 R1 R4 R3 W2 转上页 回21页 回11页

  10. 三、存储一致性 指源程序的程序次序与进程的执行次序间的一致性 编程人员与系统间有关程序行为的约定←┘ *目标:研究编译程序、硬件对程序行为及性能的影响 *模型:顺序一致性模型、放松的一致性模型 1、顺序一致性模型(SC) *SC定义:多处理机系统满足下列条件称为是顺序一致的 ①程序任何一次执行结果都与所有操作按某一顺序执行的结果一致; ②在该顺序中各P的执行序和它的程序序一致 P1 P2 … Pn 按程序序 … 随机设置 主存 *SC对存储操作的约束: ①各进程的执行序=程序序 ②访存操作具有原子性 回下页 回22页

  11. *保证顺序一致性的充分条件: ①每个进程按程序序发出存储操作; ②进程发出写操作后,须等待该写操作相对于所有P完成,才能发出下一个操作; ③进程发出读操作后,须等待该读操作完成及提供所读数据的写操作完成,才能发出下一个操作 条件① P0: R1 R5 R2 W3 R4 R3 MEM操作的全序 *顺序一致性对程序执行序的影响: 要求编译优化(如延迟转移)、体系结构优化(如异步流水)等不改变存储操作次序(即程序次序) P1: R4 W3 R3 条件② 条件③ 转上页 回22页 转9页

  12. 2、放松的一致性模型 *目标:放松程序序对执行序的限制,以提高系统性能 *类型:处理器一致性、弱一致性、释放一致性等 *处理器一致性模型:各P内W遵循程序序(各P间W无要求), 各P内W→R的R可提前(R→R不可以) *弱一致性模型:同步操作与其间存储操作集满足顺序一致性 P0: R1 W1 W2 R2 W3 R1 R2 P0: R1 W1 W2 S2 W3 S2 P1: R2 W2 R3 W4 R3 P1: R3 W3 S3 W4 S4 内部可乱序

  13. 第二节 基于监听的Cache一致性协议 一、一致性协议原理 *Cache块状态: 写直达法--有效态、无效态; 写 回 法—共享态、[独占态]、修改态、无效态 *一致性协议:是一种控制Cache块状态变化、以保证一致性的分布式算法,可用状态转换图表示 算法策略—有基于作废、基于更新2种 分布式实现—各Cache自行产生状态变化及相应操作 一致性保证—动作满足写传播、写串行化及算法策略要求 *状态获取:通过监听总线上其它P操作的总线事务实现 总线事务—有仲裁、操作2个步骤,具有顺序性和原子性

  14. V I 二、VI写直达作废协议 *Cache块状态:有效态(V)--干净块(数据与主存中相同), 该块可同时在多个Cache中存在 无效态(I)—此块不在Cache中[或已作废] *协议基本思想:满足Cache工作流程需求,写操作时写主存、通过总线事务通知其它Cache作废该块 *Cache可见操作/事务: ①PrRd、PrWr;②CaInvd(替换伪定义);③BusRd、BusWB *状态转换图:假设采用不按写分配法写丢失策略 PrWr/BusWB PrRd/— PrWr/BusWB PrRd/BusRd BusRd/— BusWB/— BusWB/— BusRd/— 说明:①A/B表示若A事务被某Cache观察到,则其生成B事务 ② 表示CPU启动的事务, 表示总线监听命中启动的事务

  15. 三、MSI写回作废协议 1、协议状态转换图 (1)Cache块状态 *块状态: 修改态(M)—脏块,该块仅同时在一个Cache中存在 共享态(S)—干净块,该块可同时在多个Cache中存在 无效态(I)—此块不在Cache中[或已作废] 回17页

  16. PrRd、PrWr CPU CPU 主存 CaInvd Cache Cache BusRd、BusRdX、BusWB (2)协议基本思想 *基于作废策略的Cache工作流程: *Cache可见操作/事务: ①PrRd、PrWr;②CaInvd(替换伪定义); ③BusRd、BusWB、BusRdX(总线互斥读[调入+通知]) 回下页

  17. 操作等待 Cache1(块a为I态): Cache2(块a为M态): 主存(块a为旧数据): BusRd BusRd BusRd BusWB 优化 发送数据 接收数据 发送数据 接收数据 时间 时间 Cache2抢占总线 Cache2提供数据、主存接收数据 主存提供数据 *协议基本思想: ①写-无效策略的体现— 接收到PrWr操作时,产生BusRdX事务(通知作废); 监听到BusRdX事务时,块状态变化为S/M→I(被作废) ②工作流程的实现— 实现工作流程时,产生相应总线事务、状态改变 ③总线事务的优化— 监听命中、块为M态时,提供数据(主存接收数据) 块拥有者—块最新数据所在部件(M态的Cache或主存) 转上页

  18. (3)协议思想的实现 *PrRd:块为I态时产生BusRd事务(M/S态时不产生)、 改变状态(I→S、S/M不变) *PrWr:块为S/I态时先产生BusRdX事务(M态时不产生)、 改变状态(I/S/M→M),再在M态写数据 *CaInvd:被替换块为M态时产生BusWB事务(S态时不产生)、改变状态(M/S→I) *BusRd:监听命中时响应(M态需提供数据), 改变状态(M/S→S) *BusRdX:监听命中时响应(M态需提供数据), 改变状态(M/S→I) *BusWB:监听均不会命中 转下页

  19. CaInvd/BusWB PrRd/— M I BusRdX/Flush BusRdX/— BusRd/Flush PrRd/BusRd CaInvd/— S PrRd/— BusRd/— 说明:①实线为处理器操作时的变化,虚线为监听命中时的变化 ②Flush指总线事务由本Cache提供数据(否则由主存提供) ③BusRdX在S态时不需要块数据,在I态时需要块数据 (4)状态转换图 假设采用按写分配法的写丢失策略 PrWr/— PrWr/(BusRdX+newPrWr) PrWr/(BusRdX+newPrWr) 回上页 回25页 回下页

  20. *状态转换示例: 思考:为何BusRdX事务,需包含BusRd功能? (5)协议总线流量的优化 *减少事务数据量:S态块的BusRdX可用BusUpgr(无数据)代替 *减少事务的数量:块只有一个副本时,PrWr不产生总线事务 转上页

  21. 2、协议对Cache一致性的保证 *对写传播特性的保证: ------------------→BusRdX1→newPrWr1 PrWr1 *对写串行化特性的保证: Cache不接收P的其它操作 操作Px: PrWr1 PrRd2 Cache→BusRdX1→newPrWr1 -------------→BusRd2 (总线事务可保证)写传播 写串行化(总线事务串行化保证 +Cache控制器保证) Cache 其他P: 转9页 回43页 回下页

  22. 3、协议对顺序一致性的保证 *对执行序=程序序的保证: 各P需按程序序发出存储操作(与协议无关); 各Cache需按串行方式执行存储操作(PrRd/PrWr) *对存储操作为原子操作的保证: Cache需在P的操作完成前不接收新请求; ←本地原子性 Cache需监听总线事务(并响应); ←全局可见(完成) Cache需在PrWr完成前不放弃总线控制权 ←写原子性 (如在BusRdX与newPrWr间监听命中时插入等待周期) P0: R1 R5 R2 W3 R4 R3 P1: R4 W3 R3 转10页 转11页 转上页 回42页

  23. 四、MESI写回作废协议 (1)协议基本思想 基于MSI协议,增加状态E(块只有一个副本), 使E态块的PrWr操作不产生总线事务 (2)Cache块状态 修改态(M)—脏块,该块仅同时在一个Cache中存在 独占态(E)—干净块,该块仅同时在一个Cache中存在 共享态(S)—干净块,该块可同时在多个Cache中存在 无效态(I)—此块不在Cache中[或已作废] 回下页

  24. (3)协议思想的实现 *PrRd:块为I态时产生BusRd事务(M/E/S态时不产生)、 改变状态(I→E或S、E/S/M不变) └→由块副本的唯一性(S)决定 *PrWr:块为S/I态时先产生BusRdX事务(E态时不产生)、 改变状态(I/E/S/M→M),再写入数据 *CaInvd:被替换块为M态时产生BusWB事务(E/S态时不产生)、改变状态(M/E/S→I) *BusRd:监听命中时响应(监听命中信号S、M态需提供数据), 改变状态(M/E/S→S) *BusRdX:监听命中时响应(M态需提供数据), 改变状态(M/E/S→I) *BusWB:监听均不会命中 转下页 转上页

  25. CaInvd/BusWB PrRd/— PrWr/(BusRdX+newPrWr) PrWr/— M BusRdX/Flush PrRd/BusRd(S#) BusRd/Flush S E PrWr/— PrRd/BusRd(S) BusRdX/— PrWr/(BusRdX+ BusRdX/— CaInvd/— CaInvd/— BusRd/— PrRd/— PrRd/— BusRd/— I 说明:① BusRd(S)中S表示是否有共享,S有效为有共享 ② M/E/S态BusRd监听命中时,向总线发监听命中信号S (4)状态转换图 回上页 转19页

  26. 五、Dragon写回更新协议 (1)协议基本思想 写操作时向各Cache刷新数据,写回时才更新主存 (2)Cache块状态 干净的独占态(E)—干净块,仅同时在一个Cache中存在 干净的共享态(Sc)—干净块或脏块,可同时在多个Cache中存在(全部为Sc态或一个非Sc态) 共享已修改态(Sm)—脏块,可同时在一个Cache中存在 修 改 态(M)—脏块,同时只在一个Cache中存在 块拥有者 回下页 回28页

  27. (3)协议思想的实现 *PrRd:(读命中)不产生总线事务,块状态不变 *PrRdMiss:产生BusRd事务、状态为Sc/E态[信号S决定] *PrWr:块为Sc/Sm态时产生BusUpd事务(E/M态不产生)、 改变状态(Sc/Sm→Sm/M[S决定]、E/M→M),再写入数据 *PrWrMiss:先产生BusRd事务、状态为Sm/M态(信号S决定), 再写入数据 *CaInvd:Sm/M态时产生BusWB事务,改变状态(E/Sc/Sm/M→I) *BusRd:监听命中时响应(监听命中信号S、Sm/M态需提供数据), 改变状态(E/Sc→Sc、M/Sm→Sm) *BusUpd:广播(所写)数据到总线上,监听命中时响应(监听命中信号S、更新数据),改变状态(Sc/Sm→Sc) *BusWB:监听命中时(Sc态时)无需响应,状态不变 转下页 转上页

  28. BusWB/— BusRd/— BusRd/— E Sc M BusRd/Flush Sm BusRd/Flush 说明:①Flush指总线事务由本Cache提供数据(否则由主存提供) (4)状态转换图 CaInvd/— PrRd/— PrRd/— BusUpd/Update PrRdMiss/BusRd(S#) PrRdMiss/BusRd(S) BusUpd/Update PrWr/— PrWr/BusUpd(S) I I PrWr/BusUpd(S) PrWr/BusUpd(S#) PrRd/— PrRd/— PrWr/— PrWr/BusUpd(S#) CaInvd/BusWB PrWrMiss/(BusRd(S)+newPrWr) PrWrMiss/(BusRd(S#)+newPrWr) ②Update指本Cache接收总线事务的数据并更新到相应块 回上页 转26页

  29. 六、一致性协议设计中的相关问题 1、一致性协议设计的基本方法 *协议包含的内容: 协议类型(作废/更新)、协议状态和动作、 低层实现(如总线事务/一致性粒度)等 *协议的性能指标: 总线流量、访存时延 *协议设计的基本方法:分析与模拟方法 ①根据应用需求,选择测试程序 ②初步设计几种协议(各包含多种参数) ③用模拟器分别测量几种协议的总线流量、访存时延 ④根据所测数据,选定一致性协议及其参数 回31页 回34页 回下页

  30. 2、协议下的总线带宽需求 *协议下的总线带宽计算方法:(基于并行的测试程序) 各种事务数/访问=k次MEM访问的状态转移的总线事务数÷k 总线流量/访问=∑每种事务流量×每种事务次数/访问 总线流量/指令=总线流量/访问×MEM访问总数÷总指令数 总线带宽需求=总线流量/指令×处理速度 *协议下的总线带宽需求: 总线带宽≥协议下的总线带宽×150% (突发性及可扩展性) *不同协议的总线带宽需求比较: 协议—MESI、MSI、MSI改进型(S态PrWr产生BusUpgr[非BusRdX]) 条件—Cache大小、块大小等均相同、具有普遍性 结论—MESI比MSI改进型略好(约10%),比MSI好较多 转上页 回下页

  31. 3、协议下的访存时延分析 *协议下的访存时延: TA=T’命中+F’ ·T失效, T’命中=T命中+T一致性,F’=F+F一致性 *访存时延与协议参数的关联: T一致性—与协议的所有内容有关、可能与块大小有关, 所产生的总线流量受协议参数影响; F一致性—与写策略、协议类型、块大小有关, 不受同一类型协议参数影响(方法相同、流量不同) 块大小=一致性粒度时 T命中、F、T失效—与Cache参数、总线带宽等有关, 与协议参数无关 ※协议的选择依据:主要为协议的总线带宽需求! 回下页 转上页 转29页

  32. 4、协议下的Cache块大小选择的权衡 *扑空类型: 冷启动扑空、容量扑空、冲突扑空, 一致性扑空(分为真共享扑空、伪共享扑空) *块大小对扑空率的影响:增加块大小时 冷启动、容量、真共享扑空率减少(容量固定时有拐点), 伪共享扑空率增加(优化方法有减小一致性粒度、更新协议等) *块大小对总线流量的影响:增加块大小时 通信扑空为主时,总线流量增加较快(2~3倍速度) *Cache块大小选择的权衡: 目标—较小的扑空率、较小的总线流量 权衡—优先扑空率及失效开销,兼顾总线带宽成本 转上页

  33. 5、更新协议、作废协议的比较 *更新协议的应用特性: 适合一次写多次读共享、不适合多次写一次读共享 *混合协议: --解决应用不确定性问题 即更新+作废协议,每个块设置一个计数器CNT,本地访问时CNT←k,收到更新时CNT←CNT-1,CNT=0时作废该块 *不同协议的评测结果: --基于更新、混合、作废协议 扑空率递增(差距较小)、刷新速率递减(差距较大) 总线流量递减(差距较大) 扑空时延更重要 ※一致性协议设计小结: ①协议类型常为作废(很少为更新), ②协议状态常为MESI, ③一致性粒度常为块大小 转29页

  34. 第三节 基于监听的Cache一致性实现 *Cache一致性协议实现的目标: 正确性—硬件层非原子操作须保持状态转换图的正确性 高性能—存取操作应流水化 (同时允许多个未完成操作) 额外硬件少—优化设计,减少硬件复杂性和成本 一、正确性要求 *满足一致性要求: 满足Cache一致性要求、保持存储一致性模型的语义 *解决死锁与活锁: 死锁处理(避免资源依赖环、检测并消除死锁),活锁处理(优先级等);挨饿消除(总线仲裁和FIFO队列等) *处理异常:处理各种异常、从异常中恢复状态

  35. Cmd CPU Addr Data 比较器 存储阵列 (SRAM) 目录表 控制器 System Bus 二、基于原子总线的单级Cache设计 *假设:MESI作废协议、原子总线(只有一个未完成请求) *单处理机的Cache结构与原理: 块状态—I/V、M 控制器--有限状态机 总线操作步骤-- 请求、等待获取(仲裁)、地址及命令、等待响应、数据 *设计内容:块标记、状态机、监听系统、非原子状态转换、写回等 回下页

  36. 1、Cache控制器和块标记的设计 *操作要求:Cache可同时响应来自处理器和总线的操作 *控制器设计: 分为总线端、处理器端两部分,并能够相互作用 P端控制器--与单P的Cache控制器类似 (响应P操作、产生总线事务、改变状态) BUS端控制器—监听及响应总线事务、改变状态 *块标记设计: 块标记—标记(同单P结构)、状态(M/E/S/I) 要求--支持P端、BUS端的同时访问 实现--①双端口RAM组成的目录表, ②相互拷贝的两个目录表(改写与其他操作互斥) 转上页 转下页

  37. *双目录表的Cache结构(一部分): 处理器 Addr Cmd Data 比较器 目录表 总线端 控制器 Cache 存储阵列 目录表 处理器端 控制器 比较器 地址 写回缓冲区 监听结果 比较器 Addr Cmd Addr 数据缓冲区 Cmd System Bus 转下页 回上页 回40页 回39页

  38. 2、监听结果提交的设计 涉及提交时间、提交格式2个方面 (1)监听结果提交时间的设计 *设计目标:硬件成本低、延迟小(主存决定是否响应) *可选方案: ①固定监听延迟方案— 延迟=常数(max) 各Cache固定时间内给出监听结果 ②可变监听延迟方案-- 延迟=max{所有Cache监听延迟} 各Cache监听完成时给出监听完成信号及监听结果, ③主存维护修改标志方案— 延迟=主存监听延迟 主存每个块维护1位标志(M位),Cache不提交监听结果 *设计结果:可变监听延迟方案(方案②)较优 回下页

  39. (2)监听结果提交格式的设计 *基于可变监听延迟的格式设计: 总线中增加三根信号线 监听完成--指示监听是否完成(监听结果是否有效) 监听命中--指示某Cache是否有该块的拷贝 修改状态--指示命中的块是否为修改态(M) *Cache及主存对监听结果的响应动作: (状态机[部分]) 转上页 转37页 回41页

  40. 3、写回处理的设计 *基本思路: 采用“读失效优先于写”(推迟写、优先读)的方法 *推迟写回的实现: Cache增设写回缓冲区(WBBuff),WBBuff由控制器管理 *写回缓冲区的管理: 总线空闲时—产生BusWB(WBBuff内容写回主存)、清除相应行 本地操作命中时— 总线监听命中时— WBBuff数据调回阵列、清除相应行 (图中未标出) 提交监听结果(111),总线响应时从WBBuff中提供数据、清除相应行 转37页 回下页

  41. 4、Cache基本结构的设计 2个控制器、2个目录表(同步)、1个写回缓冲区 处理器 Addr Cmd Data 目录表 总线端 控制器 比较器 Cache 存储阵列 目录表 处理器端 控制器 地址 写回缓冲区 比较器 比较器 监听结果 Addr 数据缓冲区 Cmd Addr Cmd System Bus 转39页 转上页 回下页 回43页

  42. 5、结构设计中的相关问题及解决 (1)非原子性的状态转移问题 *举例:P1及P2欲发BusUpgr、P2获得总线(→P1应发BusRdX) *解决:方案②较优 ①使用中间状态扩展状态转换图 ★②将监听结果与自身请求(或事务)比较、并处理 如—修改总线请求,或BusRdX、本地监听命中时使事务无数据阶段 (2)串行化及原子性的性能问题 *术语:写提交—写操作位置确定(新值绑定到存储单元)的时间 写完成—新值写入存储器(单元)的时间 *特性:串行化和原子性不影响写完成、只要求到时候有新值 *解决:可用“提交”代替“完成”,要求是其它Cache在后续事务前插入作废操作、本地Cache完成写新值前不存在冲突事务 转22页 回63页 转上页

  43. (3)死锁问题 *死锁避免:P端和BUS端控制器可并行工作、需相互协调 *活锁避免:本地M态写操作完成前保证不受冲突事务干扰 (如相同地址监听命中时,使“监听完成”信号无效) *挨饿减少:总线仲裁采用计数器法或FIFO策略 (4)读-改-写原子操作的实现问题 *总线支持读-改-写事务时:无实现问题 *总线不支持读-改-写事务时: 方案②较优 ①在BusRd与BusRdX间不放弃总线控制权(性能低、易死锁) ②在BusRd与BusRdX间不放弃块控制权(见活锁避免例) 转21页 回53页 转41页

  44. 三、多级Cache的设计 *假设:原子总线、作废协议 *多级Cache的监听方案选择:方案②较优 P1 Pn P1 Pn L1$ L1$ L1$ L1$ … 处理 … 处理 L2$ L2$ L2$ L2$ 监听 监听 监听 监听 存储器 存储器 I/O设备 I/O设备 方案①--所有级均监听 方案②--连接总线级监听 *多级Cache的一致性需求:--基于方案② ①连接总线的Cache间满足一致性 ②各级Cache间满足包含性 回下页

  45. *包含性的定义: ①上级Cache的内容是下级Cache的子集←上下相关 ②块在上级Cache为拥有态,在下级必是修改态←下上相关 *包含性被破坏的原因: ①各级数据访问历史不一致 ②不同级Cache个数不同(如I$、D$分离) ③各级间存储块大小不同 *包含性对各级Cache参数的要求: ①下级Cache关联度大于上级; ②各级Cache块大小相同; ③下级Cache容量大于上级 转上页 回下页

  46. 1、包含性维持的设计 *包含性维持的设计: --扩充一致性的传播机制 ①Ln$的总线事务或替换引起的块改变,必须传播到L1$ ②L1$写命中的块改变必须传播到所有级 *包含性维持①的实现:方法2较优 方法1—Ln$的所有过程均传递到L1$,由L1$自行处理 方法2—各级的块均设置“包含位”, “包含位”有效的块的过程才传递到L1$ └→Li$的替换均向下传递 *包含性维持②的实现: 方法1—非Ln$均采用写穿法,立即传递状态与数据 方法2—非Ln$均采用写回法,只立即传递状态, 非L1$均设置MI块状态,监听命中时才传递数据 └→已修改但数据无效 转上页

  47. 2、一致性事务的传播设计 *一致性事务的传播要求:向上渗透和向下渗透 *向下渗透的设计: --以PⅡ微机系统为例 操作请求—PrRd、PrWr、CaInvd,新增PrUgr、PrRdX 渗透方法—请求的传递直到碰到适当状态的块或总线为止, 请求的回应逐层向上传递、并更新Cache PrRd PrWr 命中 L1$ L1$ 缺失 (S) 缺失 (M) CaInvd (M) PrRd PrUgr PrRdX PrWr PrWr L2$ L2$ 命中 L1$ S→I态 缺失 (S) 缺失 (M) (M) M→I态 (M) PrWr L2$ BusWB BusRd BusWB BusRdX S→I态 (M) M→I态 BusWB 回下页

  48. *向上渗透的设计: --以PⅡ微机系统为例 监听事务—BusRd、BusRdX、BusWB 渗透方法—逐层修改状态、直到碰到已修改拷贝为止, 部分事务需将数据送回总线 E/S→I态 L1$ M→S态 M→I态 BusRd BusRdX L2$ MI→S态 MI/E/S→I态 (MI) *一致性对传播过程的要求: 要求—请求/数据的上/下传播过程与总线事务保持互斥 互斥实现—在监听命中、传播未完成时,插入等待周期 M→S态 M→I态 BusRd BusRdX ※多级Cache结构中,双标记结构已不太重要 转上页

  49. 第四节 同步操作的设计与实现 一、同步操作 *类型:互斥、点点事件、栅障事件(全局事件) 1、同步事件 *同步事件的组成: 获取方法、等待算法、释放方法 各进程竞争同步权 请求 获得 释放 进程1: {I11} {I12} {I13} 请求 释放 等待 等待 获得 进程2: {I21} {I22} {I23} 请求 等待 获得 释放 进程3: {I31} {I32} {I33} 回下页

  50. *实现方法: 获取方法—硬件线路、硬件原语(原子性的读-改-写指令); 影响因素:性能目标及实现思路 等待算法—忙等待、阻塞,先忙等待后阻塞(自适应) 影响因素:等待周期,争用度、硬件原语、机器结构 设计方法:通用算法、多种算法+可选、折中算法 释放方法—硬件线路、普通操作(W); 2、同步操作的性能 *性能指标:获取时延、流量、公平性、可扩放性 *影响因素:硬件原语的性能及适用性、同步算法的优劣 回下页 转上页

More Related