第三部分:CHI事务类型与流程
第7章读取事务全解析本章系统性地解析CHI协议中各类读取事务从基础功能到高级优化机制揭示其设计哲学与性能权衡。7.1 基础读取事务ReadNoSnp、ReadOnce这两类事务是读取操作的基础但设计目标和行为有本质区别。特性/事务ReadNoSnpReadOnce目标地址区域不可侦听(Non-snoopable)可侦听(Snoopable)核心目的获取数据的最终副本用于I/O或非缓存访问。获取一致性数据的快照不打算长期缓存。一致性保证无。系统不保证返回的数据是最新的若其他缓存有脏数据。有。系统保证返回的数据是一致的通过必要的侦听或内存读取。请求者缓存行为预期不缓存。若缓存也不以系统一致的方式维护。预期不缓存。若缓存也不以系统一致的方式维护。典型应用访问设备寄存器、非一致性内存、DMA缓冲区。一次性数据采集、流式处理、软件预取不打算修改的数据。变体与提示无。ReadOnceCleanInvalid建议清理并无效化其他副本脏数据写回。ReadOnceMakeInvalid建议无效化其他副本脏数据可丢弃需谨慎使用。关键区别ReadNoSnp用于无需一致性的场景速度快但数据可能过时ReadOnce用于需要一致性但无需缓存的场景保证数据最新但可能涉及侦听开销。7.2 一致性读取事务ReadClean、ReadShared、ReadUnique这些是分配式读取事务请求者意图将数据以系统一致的方式缓存用于后续的加载或存储操作。它们的主要区别在于能接受的返回数据状态。特性/事务ReadCleanReadNotSharedDirtyReadSharedReadUnique核心要求只要干净数据UC或SC。可接受干净或唯一脏数据但不要共享脏(SD)。可接受任何状态的数据UC, UD, SC, SD。必须获得唯一所有权UC或UD。目的加载到不支持脏状态的缓存如指令缓存。加载数据但不愿接受SD状态的写回责任。常规数据加载能处理SD状态的写回责任。为后续的存储操作做准备获取独占权。最终缓存状态UC 或 SCUC, UD, SCUC, UD, SC, SDUC 或 UD对等缓存影响其他缓存可保持SC但SD必须被清理写回并降级。同ReadCleanSD状态不被允许。其他缓存可保持SC或SD。所有其他缓存副本必须被无效化I。类比“我只读干净的书。”“我可以读做了笔记的书但不能读别人做了笔记且没还图书馆的书。”“什么书我都能读。”“我要独占这本书来写。”设计哲学通过细分请求类型让请求者向系统明确表达其能力和意图如“我不能处理脏数据”或“我准备写入”使系统能做出最优的一致性决策避免不必要的状态转换或数据移动从而提升整体效率。7.3 直接内存传输(DMT)绕过主节点的优化路径DMT是一种优化机制允许从属节点(SN-F)将读取数据直接发送给原始请求者(RN)绕过主节点(HN-F)的中转。触发条件当HN-F确定数据最终来自内存SN-F且无需从其他RN-F缓存获取数据时。工作原理RN向HN发送读取请求如ReadShared。HN向SN发送ReadNoSnp请求并在请求中设置ReturnNID返回节点ID即RN的ID和ReturnTxnID返回事务ID即原始请求的TxnID。SN接受请求准备数据。SN使用DataSepResp消息将数据直接发送给RN使用ReturnNID路由TxnID与ReturnTxnID匹配。RN收到数据后向HN发送CompAck完成事务。优势减少延迟省去了数据从SN到HN再到RN的“一跳”传输。节省带宽减轻了HN的数据通道压力。关键字段ReturnNID,ReturnTxnID,HomeNID在数据消息中标识原始HN。7.4 直接缓存传输(DCT)缓存间直传的高效机制DCT是更进一步的优化允许持有所需数据的另一个RN-F缓存拥有者将数据直接转发给请求者(RN)绕过HN和内存。触发条件当HN-F通过侦听发现其他RN-F缓存拥有所需数据且状态合适如UC、UD、SC时。工作原理RN0向HN发送读取请求如ReadShared。HN向缓存拥有者RN1发送转发式侦听如SnpSharedFwd。RN1收到侦听后将数据通过CompData消息直接发送给RN0TxnID与原始请求匹配。同时RN1向HN发送侦听响应如SnpRespFwded告知HN操作已完成。RN0收到数据后向HN发送CompAck。优势大幅减少延迟避免了速度较慢的内存访问。节省内存带宽数据直接在缓存间流动。典型场景生产者-消费者模型、信号量、频繁共享的数据。7.5 分离响应机制RespSepData与DataSepResp这是CHI-B及以后版本引入的高级流控与优化机制将事务的“完成确认”和“数据交付”在协议上分离。传统方式CompData消息将完成响应和数据绑定在一起发送。分离方式RespSepData一个无数据的响应消息在RSP通道上发送仅表示“事务已被接受并将被处理你可以进行后续操作如下一个有序请求或发送CompAck”。DataSepResp一个纯数据消息在DAT通道上发送携带实际读取的数据。工作流程以DMT优化为例RN发送ReadNoSnp给HN。HN向SN发送ReadNoSnpSep请求分离响应。HN向RN发送RespSepData。此时RN已可发送CompAck给HN无需等待数据SN向RN发送DataSepResp数据。核心优势提前释放HN资源HN在发出RespSepData并收到CompAck后即可释放跟踪该事务的资源不必等到数据从SN返回。这显著减少了事务在HN的驻留时间。支持灵活流控允许数据和响应独立流控。优化有序请求对于有顺序要求的请求RespSepData作为排序点允许后续有序请求提前发出。应用广泛用于ReadNoSnp、ReadOnce*以及使用DMT的读取事务中。总结CHI的读取事务是一个层次化的优化体系。基础事务定义语义一致性事务表达意图DMT/DCT优化数据路径分离响应机制优化控制流和资源利用。这些机制共同作用在保证正确性的前提下极致地追求低延迟和高带宽。第8章写入事务全解析本章系统解析CHI协议中的写入事务涵盖从基础的非一致性写入到复杂的一致性写入以及关键的优化机制。8.1 非一致性写入WriteNoSnp系列事务WriteNoSnp事务用于向不可侦听地址区域写入数据系统不保证写入操作的一致性。它适用于设备寄存器、非缓存内存等场景。事务类型数据大小字节使能(BE)要求核心特性与用途WriteNoSnpFull完整缓存行 (64B)所有BE位必须为1。写入一整行数据。用于批量写入或对齐写入。WriteNoSnpPtl最多一行 (≤64B)在指定数据大小内BE位可以是任意组合包括全1或全0。部分写入。对于设备内存BE位必须仅对等于或高于指定地址的字节置1。WriteNoSnpDef完整缓存行 (64B)所有BE位必须为1。可延迟写入。允许来自同一请求者的多个此类事务同时处于未完成状态系统可优化处理顺序。WriteNoSnpZero完整缓存行 (64B)不传输数据字节。写入全零值。用于快速清零内存区域无需传输数据节省带宽。关键点无侦听不触发任何一致性侦听操作。对等缓存状态事务完成时对请求者或其他RN-F的缓存状态不适用无影响。数据来源数据完全由请求者提供。8.2 一致性写入WriteUnique系列事务WriteUnique事务用于向可侦听地址区域写入数据系统保证写入操作的一致性。写入前必须使系统中所有其他缓存副本无效并确保脏数据被写回内存。事务类型数据大小BE要求核心特性与用途WriteUniqueFull完整缓存行 (64B)所有BE位必须为1。写入一整行并获取独占权。WriteUniquePtl最多一行 (≤64B)在指定数据大小内BE位可以是任意组合。部分写入并获取独占权。WriteUniqueZero完整缓存行 (64B)不传输数据字节。写入全零值并获取独占权。WriteUniqueFullStash完整缓存行 (64B)所有BE位必须为1。写入一整行获取独占权并提示将数据暂存到指定目标。WriteUniquePtlStash最多一行 (≤64B)在指定数据大小内BE位可以是任意组合。部分写入获取独占权并提示将数据暂存。关键流程以WriteUniquePtl为例请求与侦听RN-F0向HN-F发送WriteUniquePtl请求。HN-F向其他可能持有该行副本的RN-F如RN-F1、RN-F2发送SnpCleanInvalid侦听使其无效并可能返回脏数据。数据请求与提供HN-F向RN-F0发送DBIDResp。RN-F0收到后向HN-F发送NonCopyBackWriteData。数据合并如果从其他缓存如RN-F2收到了脏数据片段(SnpRespData_I_PD)HN-F需要将RN-F0提供的新写数据与这些旧数据/脏数据合并生成一个完整的、更新的缓存行。最终写入与完成HN-F将合并后的完整行写入内存SN-F并向RN-F0发送完成响应Comp。对等缓存状态事务完成时请求者(RN-F0)的缓存状态必须为无效(I)因为它以“无效”状态发起写入且写入后数据已移交系统管理。其他被侦听的RN-F副本状态转换为I。8.3 立即写入与写回写入的区别这是CHI中写入事务的两种根本性分类区别在于数据的所有权来源。特性立即写入 (Immediate Write)写回写入 (CopyBack Write)代表事务WriteNoSnp*,WriteUnique*WriteBack*,WriteClean*,WriteEvict*数据来源请求者提供的新数据。请求者缓存中已有的、可能被修改过的数据脏数据。核心目的更新内存内容。管理缓存层次将脏数据写回内存以腾出缓存空间或维护一致性。所有权转移请求者不持有数据的所有权以I状态发起。请求者移交数据的所有权给HN-F状态从UD/UC等转换为I。HN-F角色协调者与可能的合并器对于一致性写入。数据接收站与写入发起者。典型场景CPU核心执行存储指令。缓存替换算法逐出脏行CMO操作清理脏数据。关键洞察WriteBack等事务是缓存管理协议的一部分而WriteUnique等是处理器存储指令在一致性协议中的映射。两者共同完成了从处理器核心到物理内存的数据写入链条。8.4 字节使能(BE)部分写入的关键控制字节使能(BE)是伴随写数据的关键控制信号用于标识数据字节的有效性。通用规则BE1关联的数据字节有效必须在内存或缓存中更新。BE0关联的数据字节无效不得更新。对于所有写事务不在由Addr和Size指定的数据窗口内的BE位必须为0。特殊要求在WriteDataCancel以及CopyBackWriteData_I用于写回事务数据包中所有BE值必须设置为0。对于WriteNoSnpPtl访问设备内存时BE位必须仅对位于或高于事务中指定地址的字节置1。这是为了符合设备访问的典型约束不支持“写合并”到更低地址。原子事务数据窗口内的所有BE位必须为1。8.5 直接写入传输(DWT)CHI-E引入的写入优化DWT是WriteUnique和WriteNoSnp事务的优化机制允许HN-F授权从属节点(SN-F)直接向请求者(RN)索取写入数据从而绕过HN-F的数据中转。工作原理RN向HN发送写入请求如WriteNoSnpFull。HN决定使用DWT向SN发送下游写入请求如WriteNoSnpFull并设置DoDWT 1。SN收到请求后直接向RN发送DBIDResp。RN收到DBIDResp后直接向SN发送NonCopyBackWriteData写入数据。SN收到数据后向HN发送完成响应Comp。HN向RN发送完成响应Comp。优势减少延迟数据直接从RN到SN省去了RN→HN→SN的路径。节省HN带宽减轻了HN数据通道的负担。限制条件不能用于有序写观测(OWO)序列的写入。不能用于WriteNoSnpZero和WriteUniqueZero因为这些事务不传输数据。当原始请求来自RN且不使用OWO时才允许在RN和SN之间使用DWT流程。与DMT/DCT的类比DWT是写入事务的“直接传输”优化类似于读取事务的DMT直接内存传输和DCT直接缓存传输共同构成了CHI协议中减少数据中转、提升效率的核心优化体系。总结CHI的写入事务协议在确保数据正确性和一致性的前提下通过细分事务类型Full/Ptl/Zero/Stash、区分数据来源立即/写回、利用BE精细控制、并引入DWT等优化实现了对各类写入场景的高效、灵活支持。第9章高级事务类型本章深入解析CHI协议中用于实现复杂同步、缓存管理和一致性保证的高级事务类型。9.1 原子操作事务AtomicStore、AtomicLoad、AtomicCompare原子事务将“读-改-写”操作作为一个不可分割的单元在靠近数据的位置HN或SN执行以提升性能并减少阻塞。事务类型数据流返回数据支持操作数据大小 (出站/入站)AtomicStore请求者 →TxnData→ 目标无8种算术/位操作 (STADD, STCLR等)1/2/4/8 字节 / -AtomicLoad请求者 →TxnData→ 目标InitialData(原始值)8种算术/位操作 (LDADD, LDCLR等)1/2/4/8 字节 / 同出站AtomicSwap请求者 →SwapData→ 目标InitialData(原始值)1种 (交换)1/2/4/8 字节 / 同出站AtomicCompare请求者 →CompareData SwapData→ 目标InitialData(原始值)1种 (比较并交换)2/4/8/16/32 字节 /出站一半核心流程与优势集中执行操作在目标节点拥有ALU的HN或SN执行避免了传统“独占加载-计算-独占存储”序列中数据在多个组件间来回移动和长时间锁定。确定性延迟原子操作的延迟更可预测。减少阻塞对目标内存位置的访问阻塞时间缩短减少了对其他代理内存访问的影响。简化公平性对同一内存位置的原子操作访问在串行化点(PoS)或一致性点(PoC)进行仲裁简化了公平性实现。关键数据对齐规则AtomicStore/Load/Swap字节地址按出站数据大小对齐。AtomicCompare字节地址在数据包中必须按入站数据大小即出站大小的一半对齐。比较数据位于寻址字节位置交换数据位于有效数据的另一半。9.2 无数据事务MakeUnique、CleanShared、Evict无数据事务用于执行一致性状态管理而不在请求者和完成者之间传输数据。事务类型核心目的关键要求典型使用场景对等缓存影响MakeUnique无数据获取cache line的独占所有权。1. 请求者必须保证会覆盖该行的所有字节。2. 其他缓存中的任何脏副本必须被无效化不写回。准备执行对整个cache line的存储操作前。所有其他副本转为无效(I)。CleanUnique将请求者缓存状态从共享升级为“唯一”以执行存储。1. 请求者必须已有该行的共享副本。2. 其他缓存中的任何脏副本必须写回内存。已有共享副本需要进行部分写入时。其他副本转为干净共享(SC)或无效(I)。Evict提示性地通知系统一个干净的cache line不再被本节点缓存。请求者在发送请求前必须已将该行本地状态置为无效(I)。缓存替换算法决定释放一个干净行时。无仅为提示HN-F可立即响应。核心区别MakeUnique用于获取所有权但不读数据保证覆盖脏数据可丢弃CleanUnique用于升级所有权并可能触发写回已有数据脏数据必须写回Evict是轻量级提示用于缓存管理。9.3 缓存维护操作(CMO)Clean、Invalidate操作CMO事务是软件发起的缓存管理指令在硬件协议中的映射用于保证缓存与内存视图的一致性。类别事务类型核心功能数据写回要求持久化点适用场景清理类CleanShared确保所有副本为非脏状态。脏副本必须写回内存。-常规缓存清理。CleanSharedPersist确保所有副本为非脏状态。脏副本必须写回持久化点(PoP)。PoP持久化内存维护。CleanSharedPersistSep功能同CleanSharedPersist。脏副本必须写回PoP。PoP需分离响应的持久化操作。清理并无效CleanInvalid清理后使所有副本无效。脏副本必须写回内存。-完整缓存行清理。CleanInvalidPoPA确保PoPA前副本无效。脏副本必须写回并通过PoPA。PoPA跨地址空间同步。CleanInvalidStorage清理后使所有副本无效。脏副本必须写回持久存储点(PoPS)。PoPS存储持久化保证。仅无效MakeInvalid直接使所有副本无效。允许丢弃脏副本。-快速缓存无效化。关键机制分离响应CleanSharedPersistSep支持Comp一致性完成和Persist持久化确认响应分离允许请求者提前释放资源。持久化保证Persist类事务确保数据到达指定持久化层级对于防止断电数据丢失至关重要。与写入组合CMO事务可与写入事务如WriteBack组合以原子方式完成“写回并清理”操作。9.4 独占访问事务Exclusive机制详解独占访问是CHI支持的另一种同步原语用于实现“加载-链接/存储-条件”(LL/SC)语义。它依赖于本地监控器和协议事务的配合。1. 核心组件逻辑处理器监控器 (LP Monitor)每个LP如CPU核心内部维护跟踪其对可侦听地址的独占访问序列。由独占加载置位因其他LP更新该位置而复位。系统监控器 (System Monitor)部署在PoS或端点跟踪对非可侦听地址的独占访问。2. 支持的事务与属性可侦听位置加载ReadClean,ReadNotSharedDirty,ReadShared,ReadPreferUnique(设置Excl1)。存储CleanUnique,MakeReadUnique(设置Excl1)。非可侦听位置加载ReadNoSnp(设置Excl1)。存储WriteNoSnp(设置Excl1)。必须使用正确的LPID。3. 执行流程与规则启动 (独占加载)LP执行独占加载Excl1置位其LP监控器。监控加载后、存储前LP监控器持续监控目标位置是否被其他LP更新。提交 (独占存储) 决策检查LP监控器若已复位则必须失败不发事务直接重启序列。检查本地缓存状态若为Unique且监控器置位通过可直接更新数据无需发出协议事务。若为Shared且监控器置位必须发出独占存储事务如MakeReadUnique(Excl)。处理事务响应Exclusive Okay(RespErr0b01)表示通过且其他副本已失效。必须再次检查LP监控器若仍置位则更新数据否则失败重启。Normal Okay(RespErr0b00)表示失败。LP可选择直接失败重启或检查监控器后决定。4. 与原子事务的对比原子事务将操作“下推”到互连/内存控制器执行确定性更强阻塞时间更短。独占访问在请求者本地执行计算依赖监控器在高争用场景下可能因频繁失败而性能下降但实现更灵活。总结CHI的高级事务类型构成了一个强大的工具箱原子事务提供高效的硬件级“读-改-写”无数据事务和CMO实现精细的缓存状态管理独占访问提供灵活的软件级同步原语。这些机制共同支撑了现代多核处理器对高性能、可扩展同步和一致性管理的复杂需求。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2441210.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!