🔥点击查看精选 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。
|
🔥 精选往期 CXL 协议系列文章,请查看【 CXL 专栏】🔥
⬆️ 返回顶部 ⬆️