CXL.cache H2D/D2H 请求响应对应关系

news2025/1/20 18:25:58


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


📢 声明

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

文章目录

  • 1. D2H Req – H2D Rsp
    • 1.1 Host Memory 区域
    • 1.2 Device Memory 区域
  • 2. H2D Req – D2H Rsp


1. D2H Req – H2D Rsp

  对于 D2H 方向,不同类型的设备访问不同 Memory 区域时支持的 CXL.cache 请求及 D2H Req 跟 H2D 的映射关系有所不同。

  Device 是如何知道所请求的地址是 Host 还是 Device Memory 区域?——首先,Device 知道自己是哪种类型;其次,有 Bias Table。Type 1 只能访问 Host Memory 区域,Type 3 不支持 CXL.cache,Type 2 HDM 有 Bias Table 来指明地址区域所属的 Bias 类型,在这张表里的就是 Device Memory 区域。

1.1 Host Memory 区域

  如果访问的为 Host Memory 区域,D2H Req 跟 H2D Rsp 的 Mapping 关系如下表所示。

在这里插入图片描述

  请求不是随便发的,需要根据 Device Cacheline 当前状态来发,是有前提条件的。Cacheline 不同状态下允许发送的请求如上表右半部。

1.2 Device Memory 区域

  如果访问的为 Device Memory 区域,D2H Req 跟 H2D Rsp 的 Mapping 跟 HDM 的类型有关:

  • 对于 HDM-H 区域,其仅用于 Type 3 类型的 Device,不支持 CXL.cahce 操作。
  • 对于 HDM-D Device Bias 区域,Host Cache 内没有其备份,Device 不应(Not Expected)向 Host 发送该地址的 CXL.cache 相关请求,相关请求全部在 Device 内部完成。不期望发,但就是发了怎么办?——Spec 里没说,大概率是 Host 回复 GO-Err。
  • 对于 HDM-D Host Bias 区域,不同请求有所不同:
    • 对于 WrCur、ItoMWr、WrInv、CacheFlushed,可以发往 Host,其流程跟访问 Host-attached Memory 相同;
    • 对于 CleanEvict、DirtyEvict 及 CleanEvictNoData 等带有驱逐 Device Cacheline 的请求,不应发往 Host,无论哪种 Bias Mode 均在 Device 内部完成;

  猜测的内部处理方式:对于 E 或 S 状态的 Cacheline,数据是干净的,直接把该 Device Cacheline Invalidate 掉就好了;对于 M 状态的 Cacheline,该 Cacheline 为 Device 独享,Peer Cache 中不存在该 Cacheline,Device 内部直接把脏数据写回到 Device Memory 即可,不必通知 Peer Cache。

  • 对于其他请求,可以发往 Host,Host 通过 CXL.mem 把相关地址访问请求 Forward 回 Device。
  • 如果 Host Cache 内 Cache Hit 也要 Fwd 回来吗?为什么?(待阐释)
  • 为什么 CLFlush Fwd 回来是 MemRdFwd? (待阐释)
  • 对于 HDM-DB 区域,支持的 CXL.cache 请求有:ItoMWr、WrCur、WrInv 及 CacheFlushed,其他的不支持,采用 CXL.mem 的 Back Invalidation 来实现相同功能。

在这里插入图片描述



2. H2D Req – D2H Rsp

  H2D 方向的请求为 Snoop 请求,只能是 Host Memory 区域。H2D Req 跟 D2H Rsp 的 Mapping 关系如下表所示。

在这里插入图片描述

  总结如下:

  • 对于任意 H2D 的 Snoop 请求,若 Device Cache 内不存在该 Cacheline,则 Device 直接回复 RspIHitI。
  • 对于 SnpData,如果 Device Cache 内存在该 Cacheline 且数据 Clean(为 S/E 状态),Host 只要求共享并不独占,Device 回复 RspSHitSE;如果数据 Dirty(为 M 状态),Device 将脏数据写回后可以 Invalidate 该 Cachline 也可以仍然保留该 Cacheline 并很 Host 共享。
  • 对于 SnpInv,如果 Device Cache 内存在该 Cacheline,不管其状态如何都必须将其 Invalidate 掉,有脏数据要写回。
  • 对于 SnpCur,如果 Device Cache 内存在该 Cacheline,Device 可以像回复 SnpData 那样回复 SnpCur;考虑到 Host 并不关心 Device 内该 Cacheline 的状态,Device 也可以回复 RspV*不指明状态(这里的 V 可以认为是 Valid,有效)。如果 Device 需要写回脏数据,则通过 Rsp*Fwd*来告知 Host。

— END —


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

⬆️ 返回顶部 ⬆️

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/966770.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【大数据】Apache Iceberg 概述和源代码的构建

Apache Iceberg 概述和源代码的构建 1.数据湖的解决方案 - Iceberg1.1 Iceberg 是什么1.2 Iceberg 的 Table Format 介绍1.3 Iceberg 的核心思想1.4 Iceberg 的元数据管理1.5 Iceberg 的重要特性1.5.1 丰富的计算引擎1.5.2 灵活的文件组织形式1.5.3 优化数据入湖流程1.5.4 增量…

手写RPC框架--3.搭建服务注册与发现目录结构

RPC框架-Gitee代码(麻烦点个Starred, 支持一下吧) RPC框架-GitHub代码(麻烦点个Starred, 支持一下吧) 搭建服务注册与发现目录结构 搭建服务注册与发现目录结构a.基于ZooKeeper的服务发现b.搭建基础工程c.基础代码d.编写架子工程e.创建zookeeper基础目录结构 搭建服务注册与发现…

ISP——3A算法

目录 前沿一. 自动曝光AE1.1. 自动曝光1.2. 18%灰1.3. 测光区域1.4. 摄影曝光加法系统1.5. AE算法1.5.1. 考虑事项1.5.2. AE实现过程 1.6. AE算法 二. 自动对焦AF2.1. 什么是自动对焦2.2. 图像清晰度评价方法2.2.1. Brenner 梯度函数2.2.2. Tenengrad 梯度函数2.2.3. Laplacian…

设计模式-8--模板方法模式(Template Method Pattern)

一、什么是模板方法模式(Template Method Pattern) 模板方法模式(Template Method Pattern)是一种行为型设计模式,它定义了一个算法的骨架,将一些步骤的实现延迟到子类中。模板方法模式允许在不改变算法的…

多机单目标跟踪Cross-Drone Transformer Network for Robust Single Object Tracking

1. 摘要 无人机已被广泛用于各种应用,如空中摄影和军事安全,因为与固定摄像机相比,无人机具有高机动性和广阔的视野。多架无人机跟踪系统可以通过收集不同视角的互补视频片段来提供丰富的目标信息,特别是当目标在某些视角下被遮挡…

微信小程序分包-主包尺寸 (不包合插件) 应小于 1.5 M

目录 起因 分包 最后 起因 更新一个之前的小程序, 上传的时候提示主包尺寸 (不包合插件) 应小于 1.5 M 怎么办?查看教程啊 开发者可通过开发者工具中的性能扫描工具提前发现代码中的可优化项: 1. 代码包不包含插件大小超过 1.5 M 【建议】…

1777_树莓派截图功能实现

全部学习汇总: GitHub - GreyZhang/little_bits_of_raspberry_pi: my hacking trip about raspberry pi. 最近入手了树莓派的3B版本,安装了官方推荐的Debian版本。之前使用Linux的几个发行版本的时候,系统中通常会有KDE等集成的截图工具&…

第一个实例:QT实现汽车电子仪表盘

1.实现效果 1.1.视频演示 QT 实现汽车仪表盘 1.2.实现效果截图 2.生成的安装程序 此程序是个windows下的安装程序,可以直接安装,看到汽车仪表盘的实现效果,安装程序从下面链接下载: 【免费】使用QT实现的汽车电子仪表盘,在windows下的安装程序资源-CSDN文库 3.功能概述…

go语言基础操作--二

a : 10str : "mike"//匿名函数,没有函数名字 形成一个闭包,函数定义,还没有调用f1 : func() { //:自动推到类型fmt.Println("a ", a)fmt.Println("str ", str)}f1()//给一个函数类型起别名 这个写法不推荐type FuncType …

存储成本降低85%,携程历史库场景的降本实践

携程,一家中国领先的在线票务服务公司,从 1999 年创立至今,数据库系统历经三次替换。在移动互联网时代,面对云计算卷积而来的海量数据,携程通过新的数据库方案实现存储成本降低 85% 左右,性能提升数倍。本文…

TensorRT来加速YOLO v5推理与检测

TensorRT来加速YOLO v5推理与检测 文章目录 TensorRT来加速YOLO v5推理与检测TensorRT简介一、TensorRT安装1. 电脑基础环境2. 查看 cuda 版本3. 安装TensorRT4. 验证TensorRT 二、YOLO v5模型导出函数1.onnx 模型导出(def export_onnx()函数…

nmon性能监控工具介绍【杭州多测师_王sir】

nmon监控工具 (nmon监控centos6X)1) 工具准备nmon16X(性能监控)和nmon_analyser(性能报告分析器);2) 下载nmon页面地址:http://nmon.sourceforge.net/pmwiki.php?nSite.Download3) 下载指定版本nmon到centos6X:wget https://nchc.dl.sourceforge.net/project/nmon…

HTTP协议初识·中篇

加上目录,会出现导向不正确的情况,可能是bug,目录一长就容易出错? 本篇主要讲解了: 网页分离(网页代码和.c文件分离) html链接跳转 网页添加图片 确认并返回资源类型 填写正文长度属性 添加表单 临时重定向 补充知识&a…

04. 函数和函数调用机制

1. 先学习/复习C语言的入门知识 1.1 C语言简介 C语言是一种通用的编程语言,于1972年由丹尼斯里奇(Dennis Ritchie)创建。C语言最初目的是为了开发UNIX操作系统,但由于其简洁的语法、快速的执行速度和可移植性,自此成…

Linux系统中驱动入门设备树DTS(经典)

设备树(DTS:device tree source),字面意思就是一块电路板上设备如上图中CPU、DDR、I2C、GPIO、SPI等,按照树形结构描绘成的一棵树。按照策略和功能分离的思路,就是驱动代码(功能)和设备树DTS配置…

算法通关村16关 | 滑动窗口如此简单

1. 滑动窗口基本思想 滑动窗口就是快慢指针问题,快指针走一步,慢指针走一步,维护窗口的大小。 下图有大小为3的滑动窗口移动示例。 窗口:窗口是left和right之间的元素,也可以理解为一个区间。窗口的大小可能固定&#…

Win7设备和打印机里空白,0个对象,但是可以打印的处理办法

呉師傅 你是不是遇到过Win7系统打开设备和打印机的时候显示是空白的,0个设备的情况?要怎么操作才能解决这一问题呢,下面就分享一下如何处理这个问题的小方法大家可以尝试一下。 问题如下: 解决方法: 1、点击桌面左下…

Unity中Shader的消融视觉效果优化smoothstep(min,max,x)

文章目录 前言Unity中Shader的消融视觉效果优化 一、在clip(value) 的 基础上 用 smoothstep(min,max,x),并且增加一个渐变纹理对消融边缘进行视觉上的优化二、进行优化 前言 Unity中Shader的消融视觉效果优化 一、在clip(value) 的 基础上 用 smoothstep(min,max…

3.0 Dubbo的可扩展机制SPI源码解析

1. Dubbo SPI 架构图 2. Demo ExtensionLoader<Protocol> extensionLoader ExtensionLoader.getExt ensionLoader(Protocol.class); Protocol http extensionLoader.getExtension("dubbo"); System.out.println(http); 上⾯这个Demo就是Dubbo常⻅的写法&am…

java八股文面试[多线程]——newWorkStealingPool

newWorkStealingPool是什么&#xff1f; newWorkStealingPool简单翻译是任务窃取线程池。 newWorkStealingPool 是Java8添加的线程池。和别的4种不同&#xff0c;它用的是ForkJoinPool。 使用ForkJoinPool的好处是&#xff0c;把1个任务拆分成多个“小任务”&#xff0c;把这…