CXL Memory Cache 分类及 Cacheline 归属问题

news2025/1/21 1:01:01


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


📢 声明

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

文章目录

  • 0. 前言
  • 1. Memory
    • 1.1 Host Memory
    • 1.2 Device Memory
  • 2. Cache
  • 3. Cacheline 归属




0. 前言

  本文以单 CPU 的 CXL 系统为例,简要介绍 Memory、Cache 在系统中的分布情况,并介绍不同 Cache 中 Cacheline 数据的归属情况。

在这里插入图片描述

1. Memory

1.1 Host Memory

  Host 侧的 Memory 称为 Host Memory(Host-attached Memory),Device 无法直接访问。CXL.cache 提供了一种机制,能够把 Host Memory 缓存到 Device 一侧,这样 Device 就能够快速拿到 Host Memory 的数据。CXL.cache 协议需要在 Host 侧实现 Coherency Bridge,在 Device 侧实现 Cache。

1.2 Device Memory

  Device 侧的 Memory 称为 Device Memory(Device-attached Memory)。Device Memory 支持不同的 Memory 类型,比如 DRAM 易失性内存、PMem 持久内存;支持不同的 Memory 构造配置,比如扁平(Flat)结构、分层(Hierarchical)结构等。

  Device Memory 又进一步分为设备私有内存(Private Device Memory, PDM)和 Host 管理下的 Device Memory(Host-managed Device Memory,HDM)。PDM 只能由 Device 访问或 Host 通过 CXL.io/PCIe 的 MWr/MRd 请求发起访问。对于 HDM,CXL.mem 提供了一种机制,把 Device 侧的 Memory 开放给 Host,这样 Host 能够直接拿到 Device Memory 的数据。CXL.mem 协议需要在 Host 端实现 Home Agent。

  HDM 一致性的管理方案有三种选择:

  • HDM-H,Host-only Coherent,仅用于 Type 3 类型的设备,只通过 Host 来保证一致性。
  • HDM-D,Bias based Device Coherent,是一种带有偏向性的一致性模型,仅用于 Type 2 设备,采用是一种带有偏向性的一致性模型,依赖 CXL.cache 来管理一致性,由 Device 来管理 Device Cache。
  • HDM-DB,可用于 Type 2 或 Type 3 设备,具备一组独立的 Channel,是一种基于 Back Invalidation 的设备一致性模型。HDM-DB 出现于 CXL 3.0,若 HDM 支持 256B Flit Mode,必须支持 HDM-DB。

  Host 和 Device 需要对 HDM 类型达成共识,以对地址范围进行管理。HDM-D/H 类型不可以修改,但是 HDM-D 的 Bias Mode 可以动态修改。更多 HDM-D Bias Mode 相关介绍可参考《CXL Bias Mode》。

2. Cache

  跟 Memory 相似,Host 和 Device 内均存在 Cache。Host 侧的 Cache 称为 Host Cache,通常包含多级。Device 内的 Cache 称为 Device Cache。

  根据文首三级 CPU Cache Hierarchy 的图, CXL Device 的 Cache 是挂在 LLC (Last Level Cache) 下的 ,跟当前 CPU Socket LLC 下一级的 CPU Cache、Device Cache 以及其他 CPU Socket 的 Cache 属于 Peer 关系。

3. Cacheline 归属

  Host Cache、Device Cache 内的 Cacheline 归属关系示意图如下图所示。

在这里插入图片描述

  如无特殊说明,下文所述

  • Host Memory 是指跟当前 CXL Device 直接对连的 Host 所有的 Memory,或称 Host-attached Memory。
  • Device Memory 是指当前 CXL Device 内开放给 Host 使用的 Memory,可以为 Device-attached Memory,也可以为 Accelerator-attached Memory。
  • Host Cache 是指 LLC。

  对于归属于 Host Memory 的 Cacheline,

  • 无论哪种 Type、哪种 Bias Mode 的 Device,其都可以出现在 Host Cache;
  • 可以缓存在 Type 1、Type 2 等 Device Cache 中;
  • 不能出现在 Type 3 的 Device Cache 中。

  对于归属于 Device Memory 的 Cacheline,

  • Type 1 设备没有 Device Memory,不能出现在 Host Cache;
  • 归属于 HDM-H 区域的 Data Line 只能缓存在 Host Cache;
  • 归属于 HDM-D Host Bias 区域的 Data Line 可以缓存在 Host 及 Device Cache;
  • 归属于 HDM-D Device Bias 区域的 Data Line 只能缓存在 Device Cache;
  • 归属于 HDM-DB 区域的 Data Line 可以缓存在 Device Cache 和 Host Cache,如果 Device Cache 内有 HDM-DB 的 Line,那 Host Cache 内一定也有该备份,是一种 Inclusive 的 Cache 结构。

  如果 Host Memory 的 Data Line 出现在了 Device Cache 中,或者 Device Memory 的 Line 缓存在了 Host Cache 中,那么 Data Line 归属方的 Snoop Filter 负责对对端 Cache 内该 Cacheline 进行 Snoop 监测:Host 通过 CXL.cache 的 H2D Req Channel、Device 通过 CXL.mem 的 S2M BISnp 来 Snoop。


— END —


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

⬆️ 返回顶部 ⬆️

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

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

相关文章

【原创】鲲鹏ARM构架openEuler操作系统安装Oracle 19c

作者:einyboy 【原创】鲲鹏ARM构架openEuler操作系统安装Oracle 19c | 云非云计算机科学、自然科学技术科谱http://www.nclound.com/index.php/2023/09/03/%E3%80%90%E5%8E%9F%E5%88%9B%E3%80%91%E9%B2%B2%E9%B9%8Farm%E6%9E%84%E6%9E%B6openeuler%E6%93%8D%E4%BD%9C%E7%B3%BB%…

进程、操作系统

文章目录 一、冯诺依曼体系(Von Neumann Architecture)1. 概述2. CPU 二、操作系统(Operating System)三、进程(process)/任务(task) 一、冯诺依曼体系(Von Neumann Architecture) 1. 概述 分类 CPU 中央处…

自建音乐播放器之一

这里写自定义目录标题 1.1 官方网站 2. Navidrome 简介2.1 简介2.2 特性 3. 准备工作4. 视频教程5. 界面演示5.1 初始化页5.2 专辑页 前言 之前给大家介绍过 Koel 音频流服务,就是为了解决大家的这个问题:下载下来的音乐,只能在本机欣赏&…

2023年“羊城杯”网络安全大赛 Web方向题解wp 全

团队名称:ZhangSan 序号:11 不得不说今年本科组打的是真激烈,初出茅庐的小后生没见过这场面QAQ~ D0n’t pl4y g4m3!!! 简单记录一下,实际做题踩坑很多,尝试很多。 先扫了个目录,扫出start.sh 内容如下…

网络协议分析-http/https/tcp/udp

文章目录 TCP三次握手/TCP三次挥手TCP三次握手TCP四次挥手完整报文 实例代码HttpSampleClientHttpSampleServerHttpsSampleClientHttpsSampleServerTcpSampleClientTcpSampleServerUdpSampleClientUdpSampleSever 资料 TCP三次握手/TCP三次挥手 “三次握手”的目的是“为了防止…

ModaHub魔搭社区专访百度智能云李莅:以后所有的数据库它都会原生地支持用向量?

ModaHub魔搭社区:您是否认为,以后所有的数据库它都会原生地支持用向量? 李莅:传统数据库广义上也分好几类:一类是关系型的,一类是 NoSQL 类的,还有一类是分析型的数据库。我觉得关系型的这种数据…

创建10个线程并发执行(STL/Windows/Linux)

C并发编程入门 目录 STL 写法 #include <thread> #include <iostream> using namespace std;void thread_fun(int arg) {cout << "one STL thread " << arg << " !" << endl; }int main(void) {int thread_count 1…

JS踩坑: for let 和 for var的区别

最近踩了一个js的坑 踩坑代码 如下两段代码&#xff0c;看起来没什么区别&#xff0c;但是实际运行效果却不一样 for (let i 0; i < 10; i) {console.log("for:" i);setTimeout(() > {console.log("setTimeout:" i);}, 1000); }输出&#xff1…

个性化定制你的AI助手,AI指令提示词专家

『个性化定制你的AI助手』围观不如下场&#xff01;需要学习AI指令提升能力的&#xff0c;精准输出想要内容的&#xff0c;快来订阅 javastarboy『AI指令保姆级拆解』合集&#xff01; ▶️你是否尚未挖掘到 AI 的潜力&#xff1f; ▶️你是否经常遇到“答非所问”的“人工智障…

手撕二叉平衡树

今天给大家带来的是平衡树的代码实现&#xff0c;如下&#xff1a; #pragma once #include <iostream> #include <map> #include <set> #include <assert.h> #include <math.h> using namespace std; namespace cc {template<class K, clas…

重装系统全流程

重点&#xff1a; 下载镜像网址&#xff1a;下载 Windows 10 (microsoft.com) 不过不用下载&#xff0c;你的美均相U盘里面有下载好的Win10系统 重点注意&#xff0c;重启后拔优盘&#xff0c;安装时不要联网

sql:SQL优化知识点记录(九)

&#xff08;1&#xff09;小表驱动大表 对sql调优的分析&#xff1a; 排序优化&#xff1a; 数据库的连接方式&#xff0c;里面的数据尽量这样连接&#xff0c;尽量选择第一个方式&#xff0c;因为两个表的连接一共建立5次连接&#xff0c;第二个建立1000次连接&#xff0c;从…

谁该来负责拥塞控制

寻找一种 host 公平而非 packet 公平的方法&#xff0c;有趣的是&#xff0c;CSMA/CD 网络就体现了这种方法。 端到端拥塞控制算法(cca)准不准先不论&#xff0c;仅说让它们运行&#xff0c;被控制的流至少要持续 2 个 RTT&#xff0c;一条持续传输的流是多数 cca 的约束。持续…

12. 自动化项目实战

目录 1. 登录测试 2. 测试首页的帖子列表数不为0 3. 帖子详情页校验 4. 发布帖子 5. 退出登录 自动化项目实施的基本流程如下图所示&#xff1a; 手工测试用例、自动化测试用例。 1. 登录测试 校验登录后主页显示的用户名称和登录时输入的用户名是否相等。 public class…

牛客小白月赛77 D-小Why的密码锁 双哈希做法

这道题没卡自然溢出的哈希&#xff0c;但mod为1e9的哈希被卡了。 双哈希只需把单哈希做法中的lst和ans转换成 <PII&#xff0c; int>类型的即可。 #include<bits/stdc.h> #define IOS ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); #define endl \nusing nam…

使用Docker安装和部署kkFileView

&#x1f388;1 参考文档 kkFileView官方文档 &#x1f680;2 安装kkFileView 拉取Redis镜像。 docker pull keking/kkfileview启动docker容器。 docker run -it -d -p 8012:8012 keking/kkfileview --restart always解释&#xff1a; docker run redis # 从kkfileview镜像运行…

ArcGIS Pro实践技术应用、制图、空间分析、影像分析、三维建模、空间统计分析与建模、python融合

GIS是利用电子计算机及其外部设备&#xff0c;采集、存储、分析和描述整个或部分地球表面与空间信息系统。简单地讲&#xff0c;它是在一定的地域内&#xff0c;将地理空间信息和 一些与该地域地理信息相关的属性信息结合起来&#xff0c;达到对地理和属性信息的综合管理。GIS的…

c语言每日一练(13)

前言&#xff1a;每日一练系列&#xff0c;每一期都包含5道选择题&#xff0c;2道编程题&#xff0c;博主会尽可能详细地进行讲解&#xff0c;令初学者也能听的清晰。每日一练系列会持续更新&#xff0c;上学期间将看学业情况更新。 五道选择题&#xff1a; 1、程序运行的结果…

理解 std::thread::join

C多线程并发编程入门&#xff08;目录&#xff09; 本文用最简单易懂的实际案例&#xff0c;讲清楚了 join 的实际内涵&#xff0c;保证你过目不忘。 Hello join 示例 join 函数是我们接触C多线程 thread 遇到的第一个函数。 比如&#xff1a; int main() {thread t(f);t.…