当前位置: 首页 > news >正文

CXL.mem M2S Message 释义



🔥点击查看精选 CXL 系列文章🔥
🔥点击进入【芯片设计验证】社区,查看更多精彩内容🔥


📢 声明

  • 🥭 作者主页:【MangoPapa的CSDN主页】。
  • ⚠️ 本文首发于CSDN,转载或引用请注明出处【https://mangopapa.blog.csdn.net/article/details/132647102】。
  • ⚠️ 本文目的为 个人学习记录知识分享。因个人能力受限,存在协议解读不正确的可能。若您参考本文进行产品设计或进行其他事项并造成了不良后果,本人不承担相关法律责任。
  • ⚠️ 若本文所采用图片或相关引用侵犯了您的合法权益,请联系我进行删除。
  • 😄 欢迎大家指出文章错误,欢迎同行与我交流 ~
  • 📧 邮箱:mangopapa@yeah.net
  • 💬 直达博主:loveic_lovelife 。(搜索或点击扫码)

文章目录

  • 0. 前言
  • 1. Req
    • 1.1 MemOp
    • 1.2 SnpType
    • 1.3 Meta
  • 2. RwD
  • 3. BIRsp
  • 4. 参考




0. 前言

  M2S 方向有 3 个 Channel:Req,RwD,BIRsp,本文对 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 Read,Meta Field 及 MetaData 字段可用。若 Meta Field 包含有效字段,则执行 Meta 数据更新。
  • MemRdData ,常规的 Memory Read,忽略 MetaField 及 MetaValue 不用。Device 收到该请求后,若原 Meta0-State=I 则更新为 A,其他状态(SA)保持不变。
  • MemRdFwd ,将 D2H 的 Read 请求转发回去,仅适用于 HDM-D Host-bias 区域,Device DCOH 直接到其 Memory 内读数据,且完成后无需给 Host 回 Completion。该请求内的 Tag 采用 D2H Req 的 CQID,SnpType 必须为 NoOp。
  • MemWrFwd ,跟 MemRdFwd 类似,将 D2H 的 Write 请求转发回去,仅适用于 HDM-D Host Bias 区域,Device 完成后无需给 Host 回 Completion
  • MemSpecRd ,在 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 Line;
  • SnpCur ,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 Data,DCOH 仍然可以采用该字段来推测 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 为 M,DCOH 会将其 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:

  • BIRspI
  • BIRspS
  • BIRspE
  • BIRspIBlk
  • BIRspSBlk
  • BIRspEBlk


4. 参考

  1. CXL Base Spec, r3.0
  2. 非时态数据- 知乎 (zhihu.com)

— END —


🔥 精选往期 CXL 协议系列文章,请查看【 CXL 专栏】🔥

⬆️ 返回顶部 ⬆️

http://www.lryc.cn/news/153379.html

相关文章:

  • 使用boost::geometry::union_ 合并边界(内、外):方案二
  • ICCV 2023 | 小鹏汽车纽约石溪:局部上下文感知主动域自适应LADA
  • stable diffusion实践操作-黑白稿线稿上色
  • Python学习教程:集合操作的详细教程
  • 球球的排列
  • 1783_CMD启动MATLAB同时执行一个脚本
  • C语言中内存分配的几种方式
  • 组相联cache如何快速实现cache line eviction并使用PMU events验证
  • 【Stable Diffusion安装】支持python3.11 window版
  • Anycloud37D平台移植wirelesstools
  • 海康机器人工业相机 Win10+Qt+Cmake 开发环境搭建
  • 使用MDK5的一些偏僻使用方法和谋个功能的作用
  • 【实战】十一、看板页面及任务组页面开发(六) —— React17+React Hook+TS4 最佳实践,仿 Jira 企业级项目(二十八)
  • 在 Amazon 搭建无代码可视化的数据分析和建模平台
  • Pinely Round 2 (Div. 1 + Div. 2) G. Swaps(组合计数)
  • elasticSearch+kibana+logstash+filebeat集群改成https认证
  • GPT带我学-设计模式-迭代器模式
  • 数学建模--层次分析法(AHP)的Python实现
  • 机器学习笔记之最优化理论与方法(三)凸集的简单认识(下)
  • Apipost:API文档、调试、Mock与测试的一体化协作平台
  • Homebrew下载安装及使用教程
  • 【Codeforces】CF193D Two Segments
  • 内存管理概述
  • Spring的重试机制-SpringRetry
  • 水稻叶病害数据集(目标检测,yolo使用)
  • 鸿蒙系列-如何使用好 ArkUI 的 @Reusable?
  • 展锐平台音频框架
  • webpack loader和plugins的区别
  • 适配器模式:接口的平滑过渡
  • vscode搭建springboot开发环境