CXL Meta Data 介绍

2023-12-01 19:10
文章标签 meta 介绍 data cxl

本文主要是介绍CXL Meta Data 介绍,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!



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


📢 声明

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

文章目录

  • 1. MetaData 概念
  • 2. MetaData@CXL
  • 3. CXL MetaData 用法
  • 4. Q&A
  • 5. 参考


在 CXL.mem 协议 M2S Req/RwD、S2M NDR/DRS Message 中均有两个 Meta Data 相关字段:Meta Field 及 Meta Value。关于 Meta Data,初读会较为费解,本文对 Meta Data 进行部分解读。



1. MetaData 概念

  Meta Data,元数据,描述数据的数据,用以描述数据的属性信息,便于对数据进行组织、查找和理解。如果把一本书的正文内容作为数据,那么该本书的书名、作者、出版社、目录、页码等信息都是元数据。

  再回到 Memory。我们知道,Cache 中的 Cacheline 有相关 Tag 来指示当前 Cacheline 的 Cache 状态,同样,内存中也可以有若干组 Meta Data 来描述当前 Data 的属性。


2. MetaData@CXL

  CXL 中的 Meta Data 可认为 Host 给 Device 的暗示信息,告知 Device 该 CacheLine 在 Host Cache 的当前状态,而非 Device Cache 内的状态,便于 DCOH 进行一致性相关操作。CXL Meta Data 相关操作是 CXL Memory 的一项可选属性,只对带有 CXL.mem 的设备有用,Type 1 CXL.cache 设备没有相关要求。CXL 链路中 Host 跟 Device 协商之后才能使用 Meta 相关操作,具体协商机制 CXL Spec 中未体现。

  对于 CXL Memory,每 64B 地址对齐的一组 64B Data 为 CXL.cachemem 访问的最小数据单位(下称 Data Line),最多支持 3 组 2b 的 Meta Data 对该 Data Line 进行描述(示意图如下)。

在这里插入图片描述

  为了支持 Meta 操作,在 CXL.mem 的 M2S、S2M 两个方向均支持 Meta 的传递,其中,M2S 方向的 Meta 信息由 Host 填充并更新到 Memory Meta 中(若有),S2M 方向的 Meta 信息为从 Memory 读出的该 Data 的 Meta Data 或由 DCOH 填充。具体而言,M2S Req/RwD、S2M NDR/DRS Message 中通过 Meta Field、Meta Value 两个字段来描述当前 Message 中的 Data。其中,Meta Field 相当于 Meta Entry,用以指示当前 Message 中所携带的 Meta Value 所属的 Meta ID;Meta Value 相当于 Meta Data 实体,携带有 Meta Field 所指向的 Meta Data 的值。

  截至 CXL 3.0,只用了 1 组 Meta Data 来指示当前 Data Line 在 Host 内的 Cache 状态,即 Meta Field 只在唯一特定值时其对应的 Meta Value 有效。MetaField=2’b00 表示 Meta0-State,2’b01/10->Reserved,2’b11->No-Op。当 MetaValue=Meta0-State 时,MetaValue 编码及释义如下:

  • Invalid(2’b00),Host 没有该 Cacheline 的副本,该 Cacheline 在 Host 内是 Invalid 的。DCOH 在收到该消息后可以授予 Device 对该 Cacheline 的独享权限。如果 MemOp=MemInv 且 SnpType=SnpInv,Device 应该把该 Cacheline Flush 到 Device Memory 中去,不然数据就丢了(双方都没有备份)。
  • Any(2’b10),Host 告知 Device 该 Cacheline 可能在 Host Cache 内有备份,状态可能为 MES,常用于获取 Cacheline 的 Exclusive 权限。Device 收到该通知后,大概能知道 Host 可能要更新这个 Line 了,Device 在解决跟 Host 的一致性之前不能创建副本。
  • Shared(2’b11),Host 告知 Device 该 Line 在 Host 内可能有状态为 Shared 的备份,能确定的是该 Line 在 Host 内非 ME 独享。Device DCOH 在不通知 Host 的情况下就可以搞一份状态为 Shared 的副本,但是想要独享的话,必须先解决跟 Host 的一致性问题。
  • Reserved(2’b01)

  Meta Data 用以描述 Data 信息,但 Meta Data 能否随 Data 存储到 Memory 介质中取决于 Memory 介质对 Meta 的支持,即取决于 Memory 中有没有地方来存储这 2b 的 Meta Data。若 Device Memory 介质不支持 Meta Data 存储,DCOH 仍然需要通过 Host 发来的 Meta Data 来推测 Host 访问意图,且反馈给 Host 的 Rsp 中 MetaField 字段必须为 No-Op;若 Device Memory 介质支持 Meta Data 存储,DCOH 负责将 Meta Data 更新到 Memory 介质中,Host 也可以依据 Rsp 中的 Meta Data 来实现对 CPU Sockets 的 Coarse Snoop Filter。

  说到这里可能还不甚明了,Meta Data 到底有什么用呢?举个例子:对于 Multi-headed 的多 Host CXL 系统,MLD 内的某 Data Line 可能被缓存在了多个 Host 域的 Host Cache 内。当某个 Host 想要对该 Data Line 进行操作时,有必要在多个 Host Cache 之间实现缓存一致性。Host 如何知道该 Data Line 在多个 Host 域内的缓存情况呢?——看 Meta Data!Host 把该地址的 Meta Data 读回来,该 Data Line 的缓存情况便知一二。


3. CXL MetaData 用法

  对于 HDM-H 区域,只有 Host 可以访问该区域,Meta 的用法取决于 Host,本文不做过多解释;对于 HDM-D 或 HDM-DB 区域,DCOH 负责依据收到的 Req 中的 Meta 信息对 Host 发来的 Memory 访问意图进行推测、处理并反馈。

  Host 对 Device Memory 的访问主要是在 MemOp、Meta、SnpType 共同作用下完成的,MemOp 指定 Memory 操作类型,SnpType 指定对 Device Cache 的操作,MetaField/MetaValue 指示 Host Cache 的状态。下文以这几个关键要素为例,介绍几种 Memory 访问。下文中,若 MetaValue 为有效字段,则省略 MetaField=Meta0-State,以 Meta=xx 替代;若 MetaValue=No-Op,则以 Meta=No-Op 替代。

  • Host 想要获取 Device Memory 某 Data Line 的 Exclusive 权限,发送 MemOp=MemRd/MemInv/MemInvNT、SnpType=SnpInv、Meta=Any 的 M2S Req。对于 MemRd,需要有 Cmp-E 及 MemData 反馈给 Host;对于 MemInv*,则只需反馈 Cmp-E 无需反馈 MemData。
  • Host 想要获取 Device Memory 某 Data Line 的 Shared 权限,发送 MemOp=MemRd、SnpType=SnpData、Meta=Shared 的 M2S Req。Device 反馈 Cmp-S/E 及 MemData 给 Host。
  • Host 想要读取 Device Memory 某 Data Line 的数据且不会进行 Cache,发送 MemOp=MemRd、SnpType=SnpInv/SnpCur、Meta=Invalid 的 M2S Req。Device 反馈 Cmp 及 MemData 给 Host 并根据 SnpType 决定是否将 Device Cacheline 数据 Flush 到 Device Memory。
  • Host 想要将 Device Cache 内的 Cacheline Invalid 掉,发送 MemOp=MemInv、SnpType=SnpInv、Meta=Invalid 的 M2S Req。
  • Host 打算将 Host Cache 内的 Data Line 写回到 Device Memory,发送 MemOp=MemWr、SnpType=No-Op、Meta=Invalid/Any 的 M2S RwD。Device 反馈 Cmp 给 Host。

  对于 MemRdData 请求,若 Host 只想读取 Memory 的 Data,不涉及 Meta Data 的操作,Meta Field 应该置 Reserved。对于其他请求,若 MetaValue 为非 Reserved 的有效字段且 Device 支持 Meta 存储,Device 获取到 Memory Data 和 Meta Data 之后,还应将 Meta Data 写入 Memory 介质。

在这里插入图片描述

  上图中,左图为一次需要更新 Meta Data 的 MemRd 操作流程,右图为无需 Meta 操作的 MemRd 流程。


4. Q&A

  1. Meta 是什么?
    Meta 是 Data 的描述信息。M2S 中的 Meta 为 Host 给 Device 的暗示信息,告知 Device 该 Cacheline 在 Host 侧的 Cache 状态,而非 Device 内的状态,便于 DCOH 进行一致性相关操作;S2M 中的 Meta 用以描述该 Data Line 在若干 Host 内的缓存情况。

  2. S2M 的 Meta 是做什么的?
    指示当前 Data Line 在若干 Host 内的缓存状态,可用于粗粒度 Snoop Filter。

  3. 什么时候需要 Meta?其应用场景是怎样的?
    多用于 Multi-Headed 场景下某 Host 对 Data Line 的较粗粒度的 Snoop Filter。

  4. Meta Value 是怎么使用的?如何跟 Snoop、MemOp 配合的?
    MemOp 指定 Memory 操作类型,SnpType 指定对 Device Cache 的操作,MetaField/MetaValue 指示 Host Cache 的状态。

  5. Meta 操作跟 Snoop 操作有何却别?Meta 中的 Valid/Any/Shared 等等,跟 Snoop 有何区别?
    Snoop 的对象通常为 Host Memory 在 Device Cache 内的副本,由 Host 内的 SF 来管理一致性;Meta 操作的对象为 Device Memory,可以存储在 Memory 媒质中,由 DCOH 维护缓存一致性。

  6. 目前只支持一个 Meta 吗?预留了多个 MetaField 是打算做什么?
    目前只有一个 Meta,预留的 2 个 Meta 是描述更多信息,尚不明确具体意图。

  7. Meta 功能是必选的吗?是怎么协商的?
    是可选的。不支持 Meta 的话,M2S 的访问功能受限,比如 Host 在没有 Meta 的情况下无法指示 DCOH 以获取 Data Line Exclusive 权限。CXL3.0 Spec 中未指出具体协商机制。

  8. Meta Data 需要 Memory 的支持吗?
    需要 Memory 介质的支持。


5. 参考

  1. CXL Base Spec, r3.0
  2. 什么是元数据(Metadata)_steventian72 的博客-CSDN 博客

— END —


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

⬆️ 返回顶部 ⬆️

这篇关于CXL Meta Data 介绍的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/442369

相关文章

性能测试介绍

性能测试是一种测试方法,旨在评估系统、应用程序或组件在现实场景中的性能表现和可靠性。它通常用于衡量系统在不同负载条件下的响应时间、吞吐量、资源利用率、稳定性和可扩展性等关键指标。 为什么要进行性能测试 通过性能测试,可以确定系统是否能够满足预期的性能要求,找出性能瓶颈和潜在的问题,并进行优化和调整。 发现性能瓶颈:性能测试可以帮助发现系统的性能瓶颈,即系统在高负载或高并发情况下可能出现的问题

水位雨量在线监测系统概述及应用介绍

在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,

Hadoop数据压缩使用介绍

一、压缩原则 (1)运算密集型的Job,少用压缩 (2)IO密集型的Job,多用压缩 二、压缩算法比较 三、压缩位置选择 四、压缩参数配置 1)为了支持多种压缩/解压缩算法,Hadoop引入了编码/解码器 2)要在Hadoop中启用压缩,可以配置如下参数

图神经网络模型介绍(1)

我们将图神经网络分为基于谱域的模型和基于空域的模型,并按照发展顺序详解每个类别中的重要模型。 1.1基于谱域的图神经网络         谱域上的图卷积在图学习迈向深度学习的发展历程中起到了关键的作用。本节主要介绍三个具有代表性的谱域图神经网络:谱图卷积网络、切比雪夫网络和图卷积网络。 (1)谱图卷积网络 卷积定理:函数卷积的傅里叶变换是函数傅里叶变换的乘积,即F{f*g}

C++——stack、queue的实现及deque的介绍

目录 1.stack与queue的实现 1.1stack的实现  1.2 queue的实现 2.重温vector、list、stack、queue的介绍 2.1 STL标准库中stack和queue的底层结构  3.deque的简单介绍 3.1为什么选择deque作为stack和queue的底层默认容器  3.2 STL中对stack与queue的模拟实现 ①stack模拟实现

论文翻译:arxiv-2024 Benchmark Data Contamination of Large Language Models: A Survey

Benchmark Data Contamination of Large Language Models: A Survey https://arxiv.org/abs/2406.04244 大规模语言模型的基准数据污染:一项综述 文章目录 大规模语言模型的基准数据污染:一项综述摘要1 引言 摘要 大规模语言模型(LLMs),如GPT-4、Claude-3和Gemini的快

Mysql BLOB类型介绍

BLOB类型的字段用于存储二进制数据 在MySQL中,BLOB类型,包括:TinyBlob、Blob、MediumBlob、LongBlob,这几个类型之间的唯一区别是在存储的大小不同。 TinyBlob 最大 255 Blob 最大 65K MediumBlob 最大 16M LongBlob 最大 4G

FreeRTOS-基本介绍和移植STM32

FreeRTOS-基本介绍和STM32移植 一、裸机开发和操作系统开发介绍二、任务调度和任务状态介绍2.1 任务调度2.1.1 抢占式调度2.1.2 时间片调度 2.2 任务状态 三、FreeRTOS源码和移植STM323.1 FreeRTOS源码3.2 FreeRTOS移植STM323.2.1 代码移植3.2.2 时钟中断配置 一、裸机开发和操作系统开发介绍 裸机:前后台系

nginx介绍及常用功能

什么是nginx nginx跟Apache一样,是一个web服务器(网站服务器),通过HTTP协议提供各种网络服务。 Apache:重量级的,不支持高并发的服务器。在Apache上运行数以万计的并发访问,会导致服务器消耗大量内存。操作系统对其进行进程或线程间的切换也消耗了大量的CPU资源,导致HTTP请求的平均响应速度降低。这些都决定了Apache不可能成为高性能WEB服务器  nginx:

多路转接之select(fd_set介绍,参数详细介绍),实现非阻塞式网络通信

目录 多路转接之select 引入 介绍 fd_set 函数原型 nfds readfds / writefds / exceptfds readfds  总结  fd_set操作接口  timeout timevalue 结构体 传入值 返回值 代码 注意点 -- 调用函数 select的参数填充  获取新连接 注意点 -- 通信时的调用函数 添加新fd到