【CXL】CXL QoS Telemetry 介绍

news2024/12/25 12:54:33


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


📢 声明

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

文章目录

  • 1. QoS Telemetry 概念
  • 2. QoS Telemetry 的能力需求
    • 2.1 Multi-QoS
  • 3. QoS Telemetry 实现方式
    • 3.1 DevLoad
    • 3.2 Host 操作
    • 3.3 Device 操作
      • 3.3.1 QoS Telemetry 的管理
      • 3.3.2 Device 对其 Load 的跟踪
  • 4. 问题
  • 5. 参考


1. QoS Telemetry 概念


  Memory 访问时延跟负载程度(已用带宽)的关系示意图如下图所示。从图中可见,负载越重访问时延越大。当负载超过最优负载时,访问延时急剧增长。为了获取最佳性能,Host 可以对发出访问请求的频率进行调整,以平衡访问带宽和延时。

在这里插入图片描述

  QoS Telemetry 最早在 CXL 2.0 版本中出现,是一种工作负载调控机制。常规的 QoS 蕴含在 Req 中,是 Host 发送给 Slave 的指示信息,Device 根据 QoS 的值对接收到的请求提供不同的服务质量。CXL QoS Telemetry 则蕴含在 S2M NDR/DRS 等 Rsp 中,是 Subordinate 反馈给 Master 的指示信息,指示 Subordinate 当前的负载情况,Master 根据该指示信息调整发出请求的速率。

  (注:为便于表述,Host/Switch 在下文中统一表述为 Host。)



2. QoS Telemetry 的能力需求


  CXL QoS Telemetry 是一种 Memory 服务质量控制机制,仅适用于含有 CXL.mem 的 Type 2/3 Device 中,对于 Type 1 类型的 Cache Only 设备则没有强制的要求。对于支持 CXL 的 Host,强烈建议实现 QoS Telemetry,但并不强制,此外 CXL Switch 也没有要求。

  对于包含多种 Memory 类型的 CXL Hierarchy 或多逻辑设备(Multi Logic Device,MLD)组件,CXL QoS Telemetry 机制是至关重要的,协议也要求在 CXL Memory 设备中必须实现该机制。


2.1 Multi-QoS

  在 Host 端,为了更好地支持多类型 Memory 混用,不同类型的 Memory 可采用多种不同的 QoS 分类,每一种 QoS 独立进行带宽等性能控制。通过这种差异化的服务质量来实现不同类型 Memory 之间的性能隔离。显然,要实现不同类型 Memory 之间的性能隔离,需要实现多个请求队列,耗费的软硬件资源较高。跟 Host 一样,在 Device 端同样可以支持多种 QoS 分类。支持多种 QoS 分类的 Memory Device 称为 Multi-QoS Device。典型的分类方法:每一种类型的 Memory 分配一类 QoS,比如 DRAM 一类,PMem 一类。

  在 Device 端,对于 MLD 而言,其可以针对各 LD 提供差异化的带宽资源分配,在 MLD 整体负载不重的情况下加大某负载较重的单 LD 的可用带宽。



3. QoS Telemetry 实现方式


  CXL Memory Device 通过在反馈给 Host 的 S2M Rsp 中添加 DevLoad 信息,来通知 Host 目前 Device 的工作负载情况。Host 通过该 DevLoad 信息来动态评判发往部分 Memory 区域、单个 Device 或一组 Memory Device 的 Req 的频率是否合适并作出优化调整,从而减少各请求在 Fabric 上的冲突,并最终实现整体性能的提升。

3.1 DevLoad

  在 S2M NDR 及 DRS 中有 2b 的 DevLoad 字段来指示 Device 当前的工作负载情况,M2S 方向的 BIRsp 中没有该字段。DevLoad 编码释义如下:

  • 00b, Light Load ,负载较轻,Device Memory 目前相当清闲, Host 可以适当多发请求;
  • 01b, Optimal Load ,最佳负载,不急不缓,Host 不用调整请求频率;
  • 10b, Moderate Overload ,中度负载,Device 有点忙,Host 应立即减少请求频率;
  • 11b, Severe Overload ,严重过载,Device 相当忙,Host 应立即大量减小请求频率。

  DevLoad 仅出现于 CXL 2.0 及之后的版本,CXL 1.1 的 S2M Rsp 中没有 DevLoad 字段,支持 QoS Telemetry 的 Host 会默认 Device 负载为 Light Load。对于 Multi-QoS 的情况,每一笔 Rsp 中携带有 LD-ID 信息,Host 根据 QoS 分类情况将其归类到不同的 QoS Throttling Group (GTP)。


3.2 Host 操作

  对于支持 CXL 的 Host,强烈建议实现 QoS Telemetry,但并不强制。

  注意: CXL 协议目前未给出明确的 Host QoS Telemetry 方案,下文提到的方案,均为 CXL Spec 的建议方案。)

  Host 采用 Throttling 节流的方式对发送请求频率(或带宽)进行调控。Host 对设备负载进行监控时,并非针对每一个地址进行监控,而是在指定的 HDM 地址范围(HDM Range)进行监控。

  若 Host 支持多个 QoS 分类,不同 QoS 分类之间的 Throttling 可以依据 DevLoad 在一定范围内波动到不同的 Throttle Level,这个波动范围称为该 QoS 类型的 Host Throttling Range。Throttle 范围越大表明该区域可用的带宽上限越大。Throttle Range 并非一成不变的,Host 根据 NormalDelta、SevereDelta 参数 在一定 Limit 之内 定期进行调整 Host Throttle Range。在每一次 Throttle Range 调整期间,Host 记录该 HDM 范围内最高(而非最新)的 DevLoad,记为 LoadMax。若 LoadMax 为 Light Load,则适当减小 Throttle Range;若 LoadMax 为 Optimal Load,Throttle Range 保持不变;若 LoadMax 为 Moderate/Severe Overload,则根据 NormalDelta/SevereDelta 加大 Throttle Range。

  在调整范围上,Throttling Range 的收缩及扩大并非无限制调整,而是在一定 Limit 范围内调整。在调整时间上,Throttling Range 的定期调整间隔(tH)可以通过软件进行配置,且每一个 Throttling Range 可独立配置。协议建议把更新间隔时间 tH 稍大于发出请求到收到 Rsp 的 Round-trip 时间。为了避免 Device 过载,若 Host 收到了 Moderate/Severe Overload 类型的 DevLoad,Host 立即更新 Throttling Range 而不必等待计满 tH 时间。


3.3 Device 操作

3.3.1 QoS Telemetry 的管理

  Device 系统软件通过 SLD/MLD 中的 QoS 相关 Command 来管理 QoS Telemetry。

  对于 SLD 而言,若其支持 Command Set,必须实现 SLD QoS Telemetry 相关 SLD Commands,主要包括以下几种:

  • Set SLD QoS Control,设置 QoS 控制信息。
  • Get SLD QoS Control,获取 QoS 控制信息。
  • Get SLD QoS Status,获取 QoS 状态。

  对于 MLD,为了便于 FM 通过 API 来访问 QoS Telemetry 相关的 Capability、控制、状态等寄存器,MLD 必须支持 QoS Telemetry 相关的命令集(Command Sets)。QoS Telemetry 相关的 Command 有以下几种:

  • Get LD Info,通过该请求来获取该 LD 是否具备 QoS Telemetry Capability。
  • Get QoS Control,获取 QoS 控制信息。
  • Set QoS Control,设置 QoS 控制信息。
  • Get QoS Status,可选,获取 QoS 状态。
  • Set QoS Allocated BW,设置 QoS 分配的带宽。
  • Get QoS Allocated BW,获取 QoS 分配的带宽。
  • Set QoS BW Limit,设置 QoS 带宽上下限。
  • Get QoS BW Limit,获取 QoS 带宽上下限。

3.3.2 Device 对其 Load 的跟踪

  对于支持 QoS Telemetry 的 Device,其需要对其内部的负载情况进行跟踪,Multi-QoS Device 不同 QoS 分类之间独立跟踪。具体跟踪方法取决于 CXL Device 的设计,协议不具体指定,常见的方法有以下三种:

  • Memory Device Internal Loading (IntLoad),这种方法比较简单,通过监测请求队列(可理解为 Tx Buffer,存放待发出的 Req/Rsp/Data 等)的剩余可用深度来指示当前的工作负载情况,剩余可用深度越小表示负载越大。
  • Egress Port Backpressure ,根据 Egress Port 反压情况进行 DevLoad 反馈。若 Host 无法介绍相关请求,Device Egress Port 会出现反压。
  • Temporary Throughput Reduce ,特定情况下 Device 根据自身需要临时降低 Throughput。

  以上几种方法可同时启用。以 Type 3 Device 为例,上述方法中提到的相关队列在 Device 中的分布如下图所示。

在这里插入图片描述

  对于 SLD 而言,若 SLD 同时采用了以上三种方法且测得的 DevLoad 不同,则以测得的较大的 DevLoad 为准。

  对于 MLD,DevLoad 的评判除了要考量 SLD 中提到的三个要素,还要考量带宽等额外的因素以对不同 LD 提供差异化的 QoS。在 MLD 总体未过载的前提下,单个 LD 过载时其可使用的带宽可在一定 Limit 范围内超出预分配给该 LD 的带宽。

  MLD 总体负载及反馈的 DevLoad 如下表所示。

Additional Factors for Determining DevLoad in MLDs
TotalLoadLD over Limit BW?LD over Adjusted Allocated BW?Returned DevLoad Indication
Light/Optimal LoadNo-TotalLoad
Yes-Moderate Overload
Moderate OverloadNoNoOptimal Load
NoYesModerate Overload
Yes-Moderate Overload
Severe Overload-NoModerate Overload
-YesSevere Overload

  更多 LD 带宽计算、带宽调整、Egress Port Congestion 测量、最近传输 Rsp 策略等相关技术细节可参考 CXL Spec。



4. 问题


  • Back Invalidation Channel 中有 QoS Telemetry 吗?没有。
  • M2S Rsp 中可以有 DevLoad 吗?没有,注意方向。
  • 每一笔 Rsp 都有 DevLoad 吗?有必要这么密集地发吗?每笔都有,便于 Host 及时响应。
  • 同一个 Flit 中多笔 Rsp 的 DevLoad 信息一致吗?不一致怎么办?可能不一致,取最严峻的情况。
  • QoS 分类是怎么分的?体现在哪?取决于设计。
  • MLD 各个 LD 之间的 DevLoad 是通过什么区分的?Rsp 中有 LD-ID。


5. 参考


  1. CXL Base Spec, r3.0
  2. CXL(计算高速链路)第 15 部分 - QoS 和 CXL.io 命令:SLD QoS 遥测 - Qiita
  3. 介绍Telemetry 网络遥感技术

— END —


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

⬆️ 返回顶部 ⬆️

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

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

相关文章

51单片机的智能交通控制系统【含仿真+程序+演示视频带原理讲解】

51单片机的智能交通控制系统【含仿真程序演示视频带原理讲解】 1、系统概述2、核心功能3、仿真运行及功能演示4、程序代码 1、系统概述 该系统由AT89C51单片机、LED灯组、数码管组成。通过Protues对十字路口红绿灯控制逻辑进行了仿真。 每个路口包含了左转、右转、直行三条车道…

rapid_latex_ocr: 更快更好用的公式图像转latex工具

Rapid Latex OCR rapid_latex_ocr是一个将公式图像转为latex格式的工具。仓库中的推理代码来自修改自LaTeX-OCR,模型已经全部转为ONNX格式,并对推理代码做了精简,推理速度更快,更容易部署。仓库只有基于ONNXRuntime或者OpenVINO推…

AI辅助瞄准系统开发与实战(一)

文章目录 前言系统窗体设计提示弹窗功能主体页面 windows窗体绘制矩形绘制自定义线程池完整代码 总结 前言 直接看效果,狗头: 之所以搞这个的话,当然主要一方面是因为确实有点意思在里面,此外在很久以前,也有很多的UP…

光伏并网逆变器低电压穿越MATLAB仿真模型

使用MATLAB 2017b搭建 光伏逆变器低电压穿越仿真模型,boost加NPC拓扑结构,基于MATLAB/Simulink建模仿真。具备中点平衡SVPWM控制,正负序分离控制,pll,可进行低电压穿越仿真。 控制结构完整,波形完美&…

Web入门-HTTP协议

目录 HTTP概述 HTTP特点 HTTP请求协议 请求数据的格式 响应数据的格式 响应的状态码 HTTP协议的解析 HTTP概述 HTTP:Hyper Text Transfer Protocol,超文本传输协议,规定浏览器和服务器之间数据传输的规则。(即请求数据和响应数据的格式)以上一篇…

动态规划之119杨辉三角 II(第7道)

题目:给定一个非负索引 rowIndex,返回「杨辉三角」的第 rowIndex 行。 在「杨辉三角」中,每个数是它左上方和右上方的数的和。 题目链接:119. 杨辉三角 II - 力扣(LeetCode) 示例: 解法&…

高阶C语言|字符函数和字符串函数--函数的模拟实现

C语言中对字符和字符串的处理很是频繁,但是C语言本身是没有字符串类型的,字符串通常放在常量字符串中或者字符数组中。字符串常量适用于那些对它不做修改的字符串函数 字符函数和字符串函数 一、求字符串长度1.1strlen的使用1.2strlen函数的模拟实现 二…

基于linux下的高并发服务器开发(第一章)- 模拟实现 ls-l 命令

这一小节会用到上面两张图的红色框里面的变量 任务&#xff1a; 模拟实现 ls -l 指令 -rw-rw-r-- 1 nowcoder nowcoder 12 12月 3 15:48 a.txt #include <stdio.h> #include <sys/types.h> #include <sys/stat.h> #include <unistd.h> #include <p…

C++中菱形继承中继承不明确问题

C中菱形继承中继承不明确问题 class A { public:virtual void func1(){cout << "A::func1()" << endl;}int _a; };class B:virtual public A { public:virtual void func1(){cout << "B::func1()" << endl;}int _b; };class C:vi…

JavaScript混淆加密:Ty2y平台配置参数详解

Ty2y是国内一个JavaScript混淆加密平台&#xff0c;可以实现在线JS代码混淆加密。它有多达20多项的参数配置。如下图所示&#xff1a; 添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; 本文将对这些配置实现的混淆加密的效果&#xff0c;进行详细说明&…

基于自注意和残差结构的跨模态情感识别融合网络

题目A cross-modal fusion network based on self-attention and residual structure for multimodal emotion recognition译题基于自注意和残差结构的跨模态情感识别融合网络时间2021年代码https://github.com/skeletonNN/CFN-SR A cross-modal fusion network based on self…

verilog实现数码管静态显示

文章目录 verilog实现数码管静态显示一、任务要求二、实验代码三、仿真代码四、仿真结果五、总结 verilog实现数码管静态显示 一、任务要求 六个数码管同时间隔0.5s显示0-f。要求&#xff1a;使用一个顶层模块&#xff0c;调用计时器模块和数码管静态显示模块。 二、实验代码…

DS-SLAM论文翻译

DS-SLAM:面向动态环境的语义可视化SLAM 摘要-同时定位与绘图(SLAM)被认为是智能移动机器人的一项基本能力。在过去的几十年里&#xff0c;许多印象深刻的SLAM系统已经开发出来&#xff0c;并在某些情况下取得了良好的性能。然而&#xff0c;一些问题仍然没有很好地解决&#x…

windows下mingw 编译boost-1.78.0

1.mingw环境设置 添加C:\cygwin64\bin 到环境变量&#xff0c;cmd运行检查是否安装成功 打开cmd&#xff0c;验证&#xff1a; 2.boost编译 创建文件夹 #后期可以删除&#xff0c;安装Boost.Buildmkdir D:\boost_build#后期可以删除&#xff0c;存放mkdir D:\boost_1_78_0\b…

SpringBoot使用Redis作为缓存器缓存数据的操作步骤以及避坑方案

1.非注解式实现 2.1使用之前要明确使用的业务场景 例如我们在登录时&#xff0c;可以让redis缓存验证码&#xff0c;又如在分类下显示菜品数据时&#xff0c;我们可以对分类和菜品进行缓存数据等等。 2.2导入Redis相关依赖 <dependency><groupId>org.springfra…

Leetcode每日一题(困难):834. 树中距离之和(2023.7.16 C++)

目录 834. 树中距离之和 题目描述&#xff1a; 实现代码与解析&#xff1a; DFS 原理思路&#xff1a; 834. 树中距离之和 题目描述&#xff1a; 给定一个无向、连通的树。树中有 n 个标记为 0...n-1 的节点以及 n-1 条边 。 给定整数 n 和数组 edges &#xff0c; edge…

重定向与转发

转发 package com.qf.controller;import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping;import javax.servlet.http.HttpServletRequest; import javax.servlet.http.Htt…

很强!Windows11 渗透测试工具包

项目介绍 基于Windows11打造的一个渗透测试工具包&#xff1b;本项目制作的初衷是帮助渗透新手快速搭建工作环境&#xff0c;工欲善其事&#xff0c;必先利其器&#xff1b; 关注【Hack分享吧】公众号&#xff0c;回复关键字【230516】获取下载链接 目前已集成了各类常用开发环…

MySQL(一)基本架构、SQL语句操作、试图

MySQL系列文章 MySQL&#xff08;一&#xff09;基本架构、SQL语句操作、试图 MySQL&#xff08;二&#xff09;索引原理以及优化 MySQL&#xff08;三&#xff09;SQL优化、Buffer pool、Change buffer MySQL&#xff08;四&#xff09;事务原理及分析 MySQL&#xff08;五&a…

B2B商城赋能传统企业加速转型

企业和企业之间的交易涉及大量的人力、财力、物力的投入&#xff0c;还需要花大量的时间进行审核&#xff0c;其中的工作量是十分巨大的&#xff0c;而B2B电商模式的出现&#xff0c;妥善的处理了以上这些难题&#xff0c;来一起看看B2B电商模式给企业之间的交易带来了哪些便利…