CXL协议中 Register Locator DVSEC详解

✨ 前言:

Register Locator DVSEC(Designated Vendor-Specific Extended Capability)是一种PCI Express(PCIe)配置空间的能力,专为CXL(Compute Express Link)技术中的设备设计。这包括CXL根端口、CXL下行交换端口、CXL上行交换端口以及非RCD(即非寄存器配置数据)设备。这项能力的主旨是帮助这些设备实现额外的寄存器块,以便更好地配置和管理CXL技术提供的高级功能。

🌟DVSEC的主要作用包括:

寄存器块定位:DVSEC能力向软件公开了在PCIe配置空间内CXL 2.0根端口、下游交换端口、上游交换端口和CXL 2.0设备相关的寄存器块的位置。这对于软件正确配置和管理这些端口和设备至关重要。

支持多寄存器块条目:一个DVSEC实例可以包含一个或多个寄存器块条目。这意味着DVSEC提供了一种灵活的方式来描述多个相关寄存器块的位置信息,从而支持复杂的硬件功能。

标准化配置空间访问:通过在PCIe配置空间中实现DVSEC能力,CXL硬件组件的配置和管理可以遵循统一的标准。这有助于提高系统的可扩展性和互操作性,同时简化了软件的开发。

促进CXL和PCIe技术的集成:CXL是建立在PCIe基础上的互连技术,DVSEC强化了两者之间的集成。它允许软件利用标准PCIe机制来发现和配置CXL特定的高级功能,这样可以无缝地在系统中融合使用PCIe和CXL技术。

🌟实践中的应用:

在这里插入图片描述
一个Register Locator DVSEC实例中包含3个寄存器块:

寄存器块1:
Designated Vendor-specific Header开始于00h。
Register Block 1 - Register Offset Low在0Ch。
Register Block 1 - Register Offset High在10h。

寄存器块2:
Reserved Designated Vendor-specific Header开始于08h。
Register Block 2 - Register Offset Low在14h。
Register Block 2 - Register Offset High在18h。

寄存器块3:
Register Block 3 - Register Offset Low在1Ch。
Register Block 3 - Register Offset High继续往下。

🌟Register Locator DVSEC

如何在pcie的cap中找到Register Locator DVSEC的偏移呢?
在这里插入图片描述
要在PCI Express (PCIe) 配置空间中找到 Register Locator DVSEC,您需要寻找具有DVSEC ID为0008h的PCIe设备的扩展能力(capability)。PCIe配置空间包括一系列的标准和供应商特定的能力,这些能力通过链接的列表结构连接。每个能力都有一个头部,其中包含能力的ID和指向下一个能力的指针。

通过Register Locator DVSEC 找到CXL中CPMU Registers,步骤大致如下:

🌟1. 首先找到Register Locator DVSEC 的偏移

lspci -s 你的bdf -vvv在这里插入图片描述
对应cap的base addr为d04。

🌟2.读取Register offset Low寄存器

根据协议BAR寄存器信息(Register BIR)位于Register offset Low的 bit【2:0】,Componet registers的Register Block Identifier(01h)位于Register offset Low的 bit【15:8】,如下图:
在这里插入图片描述
Register offset Low位于Register Locator DVSEC Cap + offset (0xc):即 0xd04 + 0xc= 0xd10.

🌟3. 定位CPMU register

读取Register offset Low的寄存器bit 2:0为00,代表是在Bar0上
在这里插入图片描述
如上图我们读到的CXL设备的地址中 Register Block 3 0xd04 + 0x1c=0xd20,代表的是CPMU Registers,因为读到的数据中bit2:0为00b代表是在BAR0上,bit15:8为0x4代表CPMU Registers,bit31:16为0x2,并且寄存器块偏移量为 64 KB 对齐,这里需要低位补0为0x20000,至此我们确定了CPMU register是在Register Block 3 上。

读取CXL EP设备的MMIO BAR0地址,可以通过lspci工具查看设备的MMIO的地址,Region0代表BAR0
在这里插入图片描述
然后通过这个地址0x183eff000000 + 0x20000

🌟4. 读取 CPMU Capability

从协议里可以看CPMU Capability 是的偏移为00h,读取的地址就是0x183eff020000,后续所有的CPMU的寄存器偏移都是通过这个基地址来加偏移,可以通过devmem工具来读取对应的寄存器
在这里插入图片描述

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

HTML静态网页成品作业(HTML+CSS)—— 名人霍金介绍网页(6个页面)

🎉不定期分享源码,关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 🏷️本套采用HTMLCSS,未使用Javacsript代码,共有6个页面。 二、作品演示 三、代…

【简单介绍下Sass,什么是Sass?】

🎥博主:程序员不想YY啊 💫CSDN优质创作者,CSDN实力新星,CSDN博客专家 🤗点赞🎈收藏⭐再看💫养成习惯 ✨希望本文对您有所裨益,如有不足之处,欢迎在评论区提出…

cilium关闭vxlan

说明 操作 启用标志 yum -y install net-tools.x86_64 ifconfig | grep vxlan cilium_vxlan: flags4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500修改相关配置 ks get cm cilium-config -oyaml | grep -E tunnel|ipv4-native-routing-cidr|auto-direct-node-routes…

单位经常要你加班却不发加班费,你想到这一招没有?

单位经常要你加班却不发加班费&#xff0c;你想到这一招没有&#xff1f; 你也许经常在忙碌的工作和繁重的加班中度过&#xff0c;然而&#xff0c;却从未得到过应有的加班费。但你又不想离开这个单位&#xff0c;或许单位的工作环境人性化&#xff0c;同事之间的关系融洽&…

Kubernetes 如何删除 Terminating 状态的 Pod

在 Kubernetes (k8s) 中&#xff0c;Pod 是运行容器化应用的最小部署单元。当我们删除一个 Pod 时&#xff0c;通常它会快速进入 Terminating 状态并被删除。然而&#xff0c;有时由于种种原因&#xff0c;Pod 会长时间停留在 Terminating 状态。本文将详细介绍如何处理和删除这…

10.GLM

智谱AI GLM 大模型家族 最强基座模型 GLM-130B GLM (General Language Model Pretraining with Autoregressive Blank Infilling) 基于自回归空白填充的通用语言模型&#xff08;GLM&#xff09;。GLM通过增加二维位置编码并允许以任意顺序预测跨度来改进空白填充预训练&…

高创新 | CEEMDAN-VMD-BiLSTM-Attention双重分解+双向长短期记忆神经网络+注意力机制多元时间序列预测

目录 效果一览基本介绍模型设计程序设计参考资料 效果一览 基本介绍 高创新 | CEEMDAN-VMD-BiLSTM-Attention双重分解双向长短期记忆神经网络注意力机制多元时间序列预测 本文提出一种基于CEEMDAN 的二次分解方法&#xff0c;通过样本熵重构CEEMDAN 分解后的序列&#xff0c;复…

PHP聚合通多平台支付平台源码

源码介绍 php聚合通多平台支付平台源码&#xff0c;源码搭建了一下&#xff0c;这个源码不复杂&#xff0c;修改一下数据库账号密码然后导入数据库就可以&#xff0c;和网站恢复备份一样简单&#xff01; 源码截图 源码下载 PHP聚合通多平台支付平台源码

Landsat8的质量评估波段的一个应用

Landsat8一直是遥感界的热门话题。这不仅延续了自1972年以来NASA连续对地观测&#xff0c;而且这颗卫星为科学界带来了一些新的东西——质量评估波段&#xff08;the Quality Assessment (QA) Band&#xff09;。根据USGS Landsat Missions webpage&#xff0c;“QA通过标示哪个…

shell循环以及实验

循环是一种重复执行的代码结构&#xff0c;只要满足循环的条件&#xff0c;会一直执行这个代码 循环条件&#xff1a;在一定范围之内&#xff0c;按照指定次数来执行循环。 循环体&#xff1a;在指定的次数内&#xff0c;执行的命令序列&#xff0c;只要条件满足&#xff0c;…

unidbg讲解V1

前言 unidbg是什么? unidbg是一个Java项目,可以帮助我们去模拟一个安卓或IOS设备,用于去执行so文件中的算法,从而不需要再去逆向他内部的算法。最终会产出一个jar包,可以被python进行调用。 如何使用unidbg? 下载github上开源的项目:https://github.com/zhkl0228/un…

【SkiaSharp绘图02】从绘制和填充圆开始

文章目录 准备工作从绘制和填充圆开始与Window GDI的差异 准备工作 【SkiaSharp绘图】系列文章的代码都是基于在窗体中拖入一个SkiaSharp.Views.Desktop.SKGLControl控件并平铺于窗体上&#xff08;有需要的可以查看【SkiaSharp绘图01】使用SkiaSharp绘制Hello World一文&…

平板消解加热台-温度均匀,防腐蚀-实验室化学分析

DBF系列防腐电热板 是精致路合金加热板块表面经进口高纯实验级PFATeflon氟塑料防腐不粘处理&#xff0c;专为实验室设计的电加热产品&#xff0c;是样品前处理中&#xff0c;加热、消解、煮沸、蒸酸、赶酸等处理的得力助手。可以满足物理、化学、生物、环保、制药、食品、饮品…

将Firefox插件导入Edge/Chrome中

目录 前言导出火狐插件.xpi格式插件导入edge/chorme中错误示范1错误示范2修改过程manifest.jsondict文件夹修改backgroundScript.jsinjectedScript.jsdebug过程最终backgroundScript.js和injectedScript.js代码 完工阶段修改后的源码 前言 因为博主本人想在edge/chrome中使用c…

深度解析ONLYOFFICE协作空间2.5版本新功能

深度解析ONLYOFFICE协作空间2.5版本新功能 上个月&#xff0c;4月份&#xff0c;ONLYOFFICE协作空间推出了V2.5版本&#xff0c;丰富了一些很实用的新功能&#xff0c;之前已经有文章介绍过了&#xff1a; ONLYOFFICE 协作空间 2.5 现已发布https://blog.csdn.net/m0_6827469…

vscode切换Python解释器

在vscode上切换解析器解决方案&#xff1a; 1、确认自己已经安装了python环境 2、command shift p ,在这里切换即可&#xff0c;见下图&#xff1a; 3、如果状态栏也就是右下角不现实切换操作的话&#xff0c;打开设置&#xff1a;

Redis跳表

Redis跳表 跳表是一种有序数据结构&#xff0c;它通过在每个节点维持多个指向其他节点的指针&#xff0c;从而达到快速访问节点的目的 跳表支持平均O&#xff08;logN&#xff09;&#xff0c;最坏O&#xff08;N&#xff09;复杂度的节点查找&#xff0c;还可以通过顺序性操作…

SCI二区|鲸鱼优化算法(WOA)原理及实现【附完整Matlab代码】

目录 1.背景2.算法原理2.1算法思想 3.结果展示4.参考文献5.代码获取 1.背景 2016年&#xff0c;S Mirjalili受到自然界座头鲸社会行为启发&#xff0c;提出了鲸鱼优化算法&#xff08;Whale Optimization Algorithm, WOA&#xff09;。 2.算法原理 WOA模拟了座头鲸的社会行为…

[linux]如何跟踪linux 内核运行的流程呢

前面已经可以把内核编译出来&#xff0c;但是作为技术狗想看到内核是怎么运行的怎么办&#xff1f; 内核很多代码都是C语言写的&#xff0c;那简单&#xff0c;添加2行代码&#xff1a; include/linux/printk.h 529和530原来的&#xff1a; #define pr_info(fmt, ...) \ …

App UI 风格打造独特体验

App UI 风格打造独特体验