北京网站建设签约,网站管理助手建站,wordpress标题不居中,免费培训学校网站源码#x1f525;点击查看精选 CXL 系列文章#x1f525; #x1f525;点击进入【芯片设计验证】社区#xff0c;查看更多精彩内容#x1f525; #x1f4e2; 声明#xff1a; #x1f96d; 作者主页#xff1a;【MangoPapa的CSDN主页】。⚠️ 本文首发于CSDN#xff0c… 点击查看精选 CXL 系列文章 点击进入【芯片设计验证】社区查看更多精彩内容 声明 作者主页【MangoPapa的CSDN主页】。⚠️ 本文首发于CSDN转载或引用请注明出处【https://mangopapa.blog.csdn.net/article/details/132647102】。⚠️ 本文目的为 个人学习记录 及 知识分享。因个人能力受限存在协议解读不正确的可能。若您参考本文进行产品设计或进行其他事项并造成了不良后果本人不承担相关法律责任。⚠️ 若本文所采用图片或相关引用侵犯了您的合法权益请联系我进行删除。 欢迎大家指出文章错误欢迎同行与我交流 ~ 邮箱mangopapayeah.net 直达博主loveic_lovelife 。搜索或点击扫码 文章目录 0. 前言1. Req1.1 MemOp1.2 SnpType1.3 Meta 2. RwD3. BIRsp4. 参考 0. 前言 M2S 方向有 3 个 ChannelReqRwDBIRsp本文对 M2S 方向各 Channel 的 Message 进行释义。 1. Req Req 是指未携带数据的 M2S 请求多为 Read 及 Forward 相关。M2S Req 主要是在 MemOp、Meta、SnpType 共同作用下完成的MemOp 指定 Memory 操作类型SnpType 指定对 Device Cache 的操作MetaField/MetaValue 指示 Host Cache 的状态。
1.1 MemOp Req 包含以下几种 MemOp
MemInv Master 发起的 Invalidation 操作主要用于更新 Meta Data无需读写数据。常用于 Master 获取归属于 Device Memory 的指定 Cacheline 的 Exclusive 或 Shared 权限。MemInvNT 跟 MemInv 类似多了一层 Hint 的意思暗示但不保证该 Invalidation 是非时态的预计很快会写回。该请求读 Device Meta State但是不修改。MemRd 常规的 Memory ReadMeta Field 及 MetaData 字段可用。若 Meta Field 包含有效字段则执行 Meta 数据更新。MemRdData 常规的 Memory Read忽略 MetaField 及 MetaValue 不用。Device 收到该请求后若原 Meta0-StateI 则更新为 A其他状态SA保持不变。MemRdFwd 将 D2H 的 Read 请求转发回去仅适用于 HDM-D Host-bias 区域Device DCOH 直接到其 Memory 内读数据且完成后无需给 Host 回 Completion。该请求内的 Tag 采用 D2H Req 的 CQIDSnpType 必须为 NoOp。MemWrFwd 跟 MemRdFwd 类似将 D2H 的 Write 请求转发回去仅适用于 HDM-D Host Bias 区域Device 完成后无需给 Host 回 CompletionMemSpecRd 在 Home Agent 解决一致性之前就发出从而减小 Latency需要 MemData 但无需 Completion。Tag, MetaField, MetaValue, and SnpType 均 Reserved。MemClnEvct 跟 MemInv 类似但是该请求还用于指示 Host 正在变为 I 状态且无需返回 Meta0 状态。仅用于 HDM-DB 地址域。 以上几种请求有特定的应用范围对于 HDM-H 区域只能发送 MemRd、MemInv、MemInvNT、MemRdData、MemSpecRd 这 5 种请求MemRdFwd、MemWrFwd 是转发 Device 发来的请求只适用于 HDM-D Host Bias 区域MemClnEvct 仅用于 HDM-DB 区域。 对于 MemInv、MemRd、MemRdData若 SnpType 包含有效命令应按需求执行。
1.2 SnpType
SnpType 可认为是 Host 对 Device Cache 内 Cacheline 的操作请求Host 通过该字段对 Device Cache 内的相关 Cacheline 进行 Snoop。SnpType 同样分为 SnpCur、SnpData 及 SnpInv释义如下
SnpData Requestor 需要至少一条 Shared LineSnpCur Requestor 读取 Device 侧该 Cacheline 的数据且保证不会对齐进行缓存Device 无需改变该 Cacheline 的状态SnpInv Requestor 想要独占该 Cacheline。
1.3 Meta Meta 可认为 Host 给 Device 的暗示信息告知 Device 该 CacheLine 在 Host 侧的 Cache 状态而非 Device 内的状态便于 DCOH 进行一致性相关操作。 Meta 有 MetaField、MetaValue 两个字段释义如下
MetaField 指定 Meta 的 Entry最大支持 3 个 Meta Field目前只有 Meta0-State。如果存在 Meta Field则需要更新相关 Meta Data 的值。如果 Device Memory 不支持 Meta DataDCOH 仍然可以采用该字段来推测 Host 的指令意图。MetaValue 需要更新到指定 Meta 的值。对于 Meta0不同的值代表不同的 Meta0-State。 更多 Meta Data 相关释义可参考《CXL Meta Data 介绍》 。 2. RwD RwD 为带有 Data 的 Memory 操作请求通常为写 Memory 操作也包含来借道的冲突指示操作。RwD 为独立 Channel 且不依赖于 M2S Req 或 S2M BISnp。 RwD 请求包括以下几种
MemWr 常规 Memory 写操作整行写。MetaField 及 SnpType 按其既定意义执行。若 Snoop 到 Device 中该 Cacheline 为 MDCOH 会将其 Invalidate 掉并将 Host 中的数据写回 Device Memory。MemWrPtl 部分写跟 MemWr 的区别在于 MemWrPtl 带有 Byte Enable。如果 Device 内该 Cacheline 为 M会先将 Host 发来的数据与当前数据 Merge将 Cacheline Invalidate 掉并将 Merged 数据写入 Device Memory。MemWr 不涉及这个 Merge 操作。BIConflict Host 在相同地址的 Cacheline 上检测到了一致性冲突。该请求的 Datapayload 字段全零即不携带有意义的数据。之所以采用 RwD是因为该 Channel 的复杂度较低能够避免死锁。 3. BIRsp BIRsp 是对 S2M BISnp 的响应, 指示 Host 完成 Back Invalidation 之后该 Cacheline 的状态。BIRsp 包含以下 Message
BIRspIBIRspSBIRspEBIRspIBlkBIRspSBlkBIRspEBlk 4. 参考
CXL Base Spec, r3.0非时态数据- 知乎 (zhihu.com) — END — 精选往期 CXL 协议系列文章请查看【 CXL 专栏】 ⬆️ 返回顶部 ⬆️