当前位置: 首页 > 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 专栏】🔥

⬆️ 返回顶部 ⬆️

相关文章:

CXL.mem M2S Message 释义

🔥点击查看精选 CXL 系列文章🔥 🔥点击进入【芯片设计验证】社区,查看更多精彩内容🔥 📢 声明: 🥭 作者主页:【MangoPapa的CSDN主页】。⚠️ 本文首发于CSDN&#xff0c…...

使用boost::geometry::union_ 合并边界(内、外):方案二

使用boost::geometry::union_ 合并边界&#xff08;内、外&#xff09;&#xff1a;方案二 typedef boost::geometry::model::d2::point_xy<double> boost_point; typedef boost::geometry::model::polygon<boost_point> boost_Polygon;struct Point {float x;floa…...

ICCV 2023 | 小鹏汽车纽约石溪:局部上下文感知主动域自适应LADA

摘要 主动域自适应&#xff08;ADA&#xff09;通过查询少量选定的目标域样本的标签&#xff0c;以帮助模型从源域迁移到目标域。查询数据的局部上下文信息非常重要&#xff0c;特别是在域间差异较大的情况下&#xff0c;然而现有的ADA方法尚未充分探索这一点。在本文中&#…...

stable diffusion实践操作-黑白稿线稿上色

系列文章目录 本文专门开一节【黑白稿线稿上色】写相关的内容&#xff0c;在看之前&#xff0c;可以同步关注&#xff1a; stable diffusion实践操作 文章目录 系列文章目录前言一、操作步骤1. 找到黑白线稿图 总结 前言 本章主要介绍黑白稿线稿上色&#xff0c;这是通过Cont…...

Python学习教程:集合操作的详细教程

前言 大家早好、午好、晚好吖 ❤ ~欢迎光临本文章 Python中有两种可以遍历的容器类型&#xff1a; 序列类型&#xff1a;包含字符串、列表、元祖 序列类型是线性表&#xff0c;就像数组一样&#xff0c;是在内存中开辟一块连续空间&#xff0c;连续存储的&#xff0c; 那么查找…...

球球的排列

题目传送门 引 计数DP,好像特别经典&#xff0c;有两种做法&#xff0c;我只会 O ( n 3 ) O(n^3) O(n3),有 O ( n 2 ) O(n^2) O(n2)的 解法 首先&#xff0c; 若 x y p 2 且 x z q 2 , 则 y z ( p q x ) 2 若xyp^2且xzq^2,则yz(\frac{pq}{x} )^2 若xyp2且xzq2,则yz(xpq…...

1783_CMD启动MATLAB同时执行一个脚本

全部学习汇总&#xff1a; GitHub - GreyZhang/g_matlab: MATLAB once used to be my daily tool. After many years when I go back and read my old learning notes I felt maybe I still need it in the future. So, start this repo to keep some of my old learning notes…...

C语言中内存分配的几种方式

目录 C语言中内存分配的几种方式静态内存分配栈内存分配堆内存分配内存映射文件 C语言中内存分配的几种方式 静态内存分配 静态内存分配是在程序编译时分配内存&#xff0c;通常用于全局变量和静态变量。这些变量的内存空间在程序的整个运行期间都是存在的。 栈内存分配 栈内存…...

组相联cache如何快速实现cache line eviction并使用PMU events验证

如何快速实现cache line eviction 一&#xff0c;什么是cache hit、miss、linefill、evict &#xff1f;1.1 如果要程序员分别制造出cache hit、miss、linefill、evict这四种场景&#xff0c;该怎么做&#xff1f; 二&#xff0c;实现cache line eviction的方法1.1 直接填充法3…...

【Stable Diffusion安装】支持python3.11 window版

前言 主要的安装步骤是参考B站播放量第一的视频&#xff0c;但是那位阿婆主应该是没有编程经验&#xff0c;只强调使用3.10&#xff0c;而python最新版本是3.11。 理论上来说&#xff0c;只是一个小版本的不同&#xff0c;应该是可以安装成功了。自己摸索了下&#xff0c;挺费…...

Anycloud37D平台移植wirelesstools

0. 环境准备 下载 &#xff1a;https://www.linuxfromscratch.org/blfs/view/svn/basicnet/wireless_tools.html 1. 交叉编译wireless_tools tar xzf wireless_tools.29.tar.gz cd wireless_tools.29/打开Makefile&#xff0c;修改配置&#xff1a; ## Compiler to use (mo…...

海康机器人工业相机 Win10+Qt+Cmake 开发环境搭建

文章目录 一. Qt搭建海康机器人工业相机开发环境 一. Qt搭建海康机器人工业相机开发环境 参考这个链接安装好MVS客户端 Qt新建一个c项目 cmakeList中添加海康机器人的库&#xff0c;如下&#xff1a; cmake_minimum_required(VERSION 3.5)project(HIKRobotCameraTest LANG…...

使用MDK5的一些偏僻使用方法和谋个功能的作用

程序下载后无法运行 需要勾选如下库&#xff0c;是优化后的库&#xff1b; MicroLib和标准C库之间的主要区别是: 1、MicroLib是专为深度嵌入式应用程序而设计的。 2、MicroLib经过优化&#xff0c;比使用ARM标准库使用更少的代码和数据内存。 3、MicroLib被设计成在没有操作…...

【实战】十一、看板页面及任务组页面开发(六) —— React17+React Hook+TS4 最佳实践,仿 Jira 企业级项目(二十八)

文章目录 一、项目起航&#xff1a;项目初始化与配置二、React 与 Hook 应用&#xff1a;实现项目列表三、TS 应用&#xff1a;JS神助攻 - 强类型四、JWT、用户认证与异步请求五、CSS 其实很简单 - 用 CSS-in-JS 添加样式六、用户体验优化 - 加载中和错误状态处理七、Hook&…...

在 Amazon 搭建无代码可视化的数据分析和建模平台

现代企业常常会有利用数据分析和机器学习帮助解决业务痛点的需求。如制造业中&#xff0c;利用设备采集上来的数据做预测性维护&#xff0c;质量控制&#xff1b;在零售业中&#xff0c;利用客户端端采集的数据做渠道转化率分析&#xff0c;个性化推荐等。 亚马逊云科技开发者…...

Pinely Round 2 (Div. 1 + Div. 2) G. Swaps(组合计数)

题目 给定一个长度为n(n<1e6)的序列&#xff0c;第i个数ai(1<ai<n)&#xff0c; 操作&#xff1a;你可以将当前i位置的数和a[i]位置的数交换 交换可以操作任意次&#xff0c;求所有本质不同的数组的数量&#xff0c;答案对1e97取模 思路来源 力扣群 潼神 心得 感…...

elasticSearch+kibana+logstash+filebeat集群改成https认证

文章目录 一、生成相关证书二、配置elasticSearh三、配置kibana四、配置logstash五、配置filebeat六、连接https es的java api 一、生成相关证书 ps&#xff1a;主节点操作 切换用户&#xff1a;su es 进入目录&#xff1a;cd /home/es/elasticsearch-7.6.2 创建文件&#x…...

GPT带我学-设计模式-迭代器模式

1 什么是迭代器设计模式&#xff1f; 迭代器设计模式是一种行为型设计模式&#xff0c;用于提供一种统一的方式来遍历一个集合对象中的元素&#xff0c;而不需要暴露该对象的内部结构。它将集合对象的遍历操作与集合对象本身分离开来&#xff0c;使得遍历操作可以独立于集合对…...

数学建模--层次分析法(AHP)的Python实现

目录 1.算法流程简介 2.算法核心代码 3.算法效果展示 1.算法流程简介 """ AHP:层次分析法,层次分析法还是比较偏向于主观的判断的,所以在建模的时候尽可能不要去使用层次分析法 不过在某些创新的评价方法上,也是能够运用层次分析使得评价变得全面一些,有可…...

机器学习笔记之最优化理论与方法(三)凸集的简单认识(下)

机器学习笔记之最优化理论与方法——凸集的简单认识[下] 引言回顾&#xff1a;基本定义——凸集关于保持集合凸性的运算仿射变换 凸集基本性质&#xff1a;投影定理点与凸集的分离支撑超平面定理 引言 继续凸集的简单认识(上)进行介绍&#xff0c;本节将介绍凸集的基本性质以及…...

【网络】每天掌握一个Linux命令 - iftop

在Linux系统中&#xff0c;iftop是网络管理的得力助手&#xff0c;能实时监控网络流量、连接情况等&#xff0c;帮助排查网络异常。接下来从多方面详细介绍它。 目录 【网络】每天掌握一个Linux命令 - iftop工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景…...

内存分配函数malloc kmalloc vmalloc

内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...

C++:std::is_convertible

C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...

关于nvm与node.js

1 安装nvm 安装过程中手动修改 nvm的安装路径&#xff0c; 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解&#xff0c;但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后&#xff0c;通常在该文件中会出现以下配置&…...

汽车生产虚拟实训中的技能提升与生产优化​

在制造业蓬勃发展的大背景下&#xff0c;虚拟教学实训宛如一颗璀璨的新星&#xff0c;正发挥着不可或缺且日益凸显的关键作用&#xff0c;源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例&#xff0c;汽车生产线上各类…...

跨链模式:多链互操作架构与性能扩展方案

跨链模式&#xff1a;多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈&#xff1a;模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展&#xff08;H2Cross架构&#xff09;&#xff1a; 适配层&#xf…...

C++ 基础特性深度解析

目录 引言 一、命名空间&#xff08;namespace&#xff09; C 中的命名空间​ 与 C 语言的对比​ 二、缺省参数​ C 中的缺省参数​ 与 C 语言的对比​ 三、引用&#xff08;reference&#xff09;​ C 中的引用​ 与 C 语言的对比​ 四、inline&#xff08;内联函数…...

【单片机期末】单片机系统设计

主要内容&#xff1a;系统状态机&#xff0c;系统时基&#xff0c;系统需求分析&#xff0c;系统构建&#xff0c;系统状态流图 一、题目要求 二、绘制系统状态流图 题目&#xff1a;根据上述描述绘制系统状态流图&#xff0c;注明状态转移条件及方向。 三、利用定时器产生时…...

微信小程序云开发平台MySQL的连接方式

注&#xff1a;微信小程序云开发平台指的是腾讯云开发 先给结论&#xff1a;微信小程序云开发平台的MySQL&#xff0c;无法通过获取数据库连接信息的方式进行连接&#xff0c;连接只能通过云开发的SDK连接&#xff0c;具体要参考官方文档&#xff1a; 为什么&#xff1f; 因为…...

Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)

目录 一、&#x1f44b;&#x1f3fb;前言 二、&#x1f608;sinx波动的基本原理 三、&#x1f608;波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、&#x1f30a;波动优化…...