CXL寄存器介绍(3)- CXL MMIO

news2024/11/25 21:16:17


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


📢 声明

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

文章目录

  • 0. 引言
  • 1. CXL RCRB
    • 1.1 RCRB 基地址
    • 1.2 RCH DP RCRB
    • 1.3 RCD UP RCRB
  • 2. CXL Component Registers
    • 2.1 RCH/RCD Component Register
    • 2.2 Component Register for ALL Other CXL Components
    • 2.3 CXL CHBCR
  • 3. 参考


0. 引言

  CXL Device/Port 相关寄存器一部分位于 PCIe 配置空间内,一部分位于 MMIO 空间内。早前《CXL寄存器分类》简单介绍了 CXL 的寄存器分布及 CXL 相关的 DVSEC,接下来进一步介绍下 MMIO 中的 CXL RCRB 及 Component Registers。



1. CXL RCRB

  CXL RCH DP 及 RCD UP 没有配置空间,通过扫描 PCIe 配置空间的方式无法发现 RCH DP 及 RCD UP。RCH DP 及 RCD UP 相关的寄存器实现在了 RCRB 范围内。

  RCRB 功能类似于 PCIe 配置空间,其内部实现了 CXL 链路相关控制、状态寄存器及各种所需的能力结构。Flex Bus Port DVSEC 是所有 Port RCRB 中必须实现的能力结构,相关介绍可参考《CXL DVSEC》PCIe DVSEC for Flex Bus Port。

1.1 RCRB 基地址

  RCRB 的基地址由 System Firmware 指定,

  • 对于 eRCD,其 RCRB 基地址由 System Firmware 直接指定;
  • 对于工作在 RCD Mode 的 RP 或 DSP,System Firmware 通过配置 PCIe 配置空间中的 CXL DVSEC ID3 中的 RCRB Base/Base_High 并使能 RCRB 来指示 RCRB 的基地址;
  • 对于 RCD UP(只能是 eRCD UP 不能为 USP,eRCH 下不能直接挂载 USP),RCD 捕获复位之后收到的第一笔 MRd(CXL 1.1 时 MWr/MRd 均可)的地址(低 12b 清零)作为 RCRB 地址。

  上述 RCH 和 RCD 的 RCRB 占用相邻的两个 4KB 地址空间,RCRB 的地址范围不能与 Device 配置空间及内存空间出现交叠。

1.2 RCH DP RCRB

  下图是 RCH DP RCRB 寄存器布局图,其带有 Type 1 类型的配置头。RCRB 中的 MEMBAR0 用以指示该 Port 相关的 Component 寄存器在 MMIO 中的基地址。

在这里插入图片描述

1.3 RCD UP RCRB

  下图是 RCD UP RCRB 寄存器布局图,其带有 Type 0 类型的配置头。对于 RCD UP RCRB,其:

  • MEMBAR0 用以指示该 Port 相关的 Component 寄存器在 MMIO 中的基地址;
  • Config Header 中 的 Command 寄存器及 Status 寄存器 Reserved;
  • Device Capabilities、Control、Status 及 Device Capabilities 2、Control 2、Status 2 Reserved;
  • Device/Port Type、Slot 实现、中断消息数量等字段均 Reserved。

在这里插入图片描述



2. CXL Component Registers

  早前简单介绍了 CXL 的寄存器分布、CXL 相关的 DVSEC 及 MMIO 中的 CXL RCRB,接下来进一步介绍下 MMIO 中的 Component Registers。

2.1 RCH/RCD Component Register

  CXL Component Register 包括 CXL.io、CXL.cachemem、CXL ARB/MUX 寄存器等常规 CXL Component 的寄存器,对于实现了 RCRB 的 RCH 及 RCD,该寄存器块唯一 RCRB MEMBAR 内;对于未实现 RCRB 的 RCD 该寄存器块位于 Register Locator DVSEC 指定的 PCIe BAR MMIO 空间内;对于 CXL Host Bridge,该寄存器块位于 CHBCR 内,由 ACPI CEDT 指定其在 Memory Mapped 空间内的基地址。

  CXL Component Register 寄存器块 Size 为 64KB,按照地址从前到后的顺序分别为:

  • CXL.io 寄存器块,4KB;预留。
  • CXL.cachemem 寄存器块 1,4KB;
  • 预留给 CXL.cachemem 的扩展寄存器块,48KB;
  • CXL ARB/MUX 寄存器块,1KB;
  • 预留 7KB。

2.2 Component Register for ALL Other CXL Components

  其他 CXL Component 的寄存器块,比如:

  • BAR Virtualization ACL Register Block
  • CPMU Register Block
  • CXL Device Register
  • Designated Vendor Specific Register

  这组寄存器的具体类型及位置 由 Register Locator DVSEC 来指定。

2.3 CXL CHBCR

  CXL 主桥中用以控制一到多个 RP 相关功能的 Component Register Block,其基地址从 ACPI CEDT 中取得。



3. 参考

  1. CXL Base Spec, r3.0

— END —


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

⬆️ 返回顶部 ⬆️

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

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

相关文章

【SpringSecurity】六、基于数据库的认证与授权

文章目录 1、数据库表设计2、测试代码准备3、新建安全用户类4、实现UserDetailsService接口5、授权 1、数据库表设计 接下来基于数据库里的用户信息进行登录认证,以RBAC设计表,分别为: 用户表sys_user :除了基本信息外&#xff…

pytorch(b站小土堆学习笔记P1-P15)

P3. Python学习中的两大法宝函数(当然也可以用在PyTorch) import torch#查看pytorch有哪些指令 print(dir(torch)) print(dir(torch.cuda)) #查看每条指令怎么用 help(torch.cuda.is_available) P4. PyCharm及Jupyter使用及对比 P5 dataset和dataloade…

肖sir__设计测试用例方法之场景法04_(黑盒测试)

设计测试用例方法之场景法 1、场景法主要是针对测试场景类型的,顾也称场景流程分析法。 2、流程分析是将软件系统的某个流程看成路径,用路径分析的方法来设计测试用例。根据流程的顺序依次进行组合,使得流程的各个分支能走到。 举例说明&…

Pinely Round 2 (Div. 1 + Div. 2) F. Divide, XOR, and Conquer(区间dp)

题目 给定长为n(n<1e4)的数组&#xff0c;第i个数为ai(0<ai<2的60次方) 初始时&#xff0c;区间为[1,n]&#xff0c;也即l1&#xff0c;rn&#xff0c; 你可以在[l,r)中指定一个k&#xff0c;将区间分成左半边[l,k]、右半边[k1,r] 1. 如果左半边异或和与异或和的异…

肖sir__设计测试用例方法之判定表06_(黑盒测试)

设计测试用例方法之判定表 1、判定表&#xff1a;是一种表达逻辑判断的工具。 2、判定表&#xff1a;包含四部分 1&#xff09;条件桩&#xff08;condition stub&#xff09;:列出问题的 所有条件&#xff08;通常条件次序无关紧要&#xff09;。 2&#xff09;条件项&#x…

面试官:介绍一下CSS定位?absolute和relative分别依据什么定位?

能说服一个人的&#xff0c;从来不是道理&#xff0c;而是南墙。 一、position属性介绍 取值名称效果static静态定位(默认值)元素按照标准流布局 (不脱标) , top、bottom、left 、right等属性不起作用relative相对定位元素按照标准流布局 (不脱标) &#xff0c;可以通过top、b…

Medium:做AB test需要多少时间?

文章链接&#xff1a;https://medium.com/alfredcamera/%E5%81%9A-ab-test-%E9%9C%80%E8%A6%81%E5%A4%9A%E5%B0%91%E6%99%82%E9%96%93-c401fbe00eb0 其中&#xff0c;最关键的是确定&#xff1a;总共需要多少样本数量。由以下2个指标决定&#xff1a; 由工具得到&#xff1a; 特…

监听器Listener -,钝化,活化,利用监听器实现简易版 统计网站在线用户功能

监听绑定到HttpSession域中某个对象状态 1.HttpSessionBindingListener 实体类 package com.etime.enetity;import javax.servlet.http.HttpSessionBindingEvent; import javax.servlet.http.HttpSessionBindingListener;//此处需要实现HttpSessionBindingListener接口&…

使用MDK5的一些偏僻使用方法和谋个功能的作用

程序下载后无法运行 需要勾选如下库&#xff0c;是优化后的库&#xff1b; MicroLib和标准C库之间的主要区别是: 1、MicroLib是专为深度嵌入式应用程序而设计的。 2、MicroLib经过优化&#xff0c;比使用ARM标准库使用更少的代码和数据内存。 3、MicroLib被设计成在没有操作…

科技成果鉴定之鉴定测试报告

鉴定测试 由于软件类科技成果的复杂、内部结构难以鉴别等特点&#xff0c;我们提供了软件类科技成果鉴定测试服务。软件类科技成果鉴定测试是依据其科研项目计划任务书或技术合同书&#xff0c;参照相应的国家标准对要申请鉴定的软件类科技成果进行的一种符合性测试&#xff0…

【100天精通Python】Day51:Python 数据分析_数据分析入门基础与Anaconda 环境搭建

目录 1 科学计算和数据分析概述 2. 数据收集和准备 2.1 数据收集 2.1.1 文件导入&#xff1a; 2.1.2 数据库连接&#xff1a; 2.1.3 API请求&#xff1a; 2.1.4 网络爬虫&#xff1a; 2.2 数据清洗 2.2.1 处理缺失值&#xff1a; 2.2.2 去除重复值&#xff1a; 2.2…

数学建模--Python绘图

目录 1.绘制散点图 1.1.绘制过程解释 1.2.绘制图像代码 1.3.绘制图像展示 2.绘制折线统计图 2.1.绘制过程解释 2.2.绘制图像代码 2.3.绘制图像展示 3.绘制柱形图 3.1.绘制图像解释 3.2.绘制图像代码 3.3.绘制图像展示 4.多种图形的综合绘制 4.1.绘制图像解释 4.2.绘制图像…

二级web操作题(1-6)

第二套 1.对数组排序 <html> <title>对数组排序</title> <body> <script> //生成一个m、n之间的整数 function rand(m,n){ /* **********Found********** */ var iMath.random(); /* **********Found********** */ return Math.round((n-m…

内存管理之:内存空间分布和栈攻击(黑客常用攻击手段)

目录 C语言内存管理及栈攻击 内存管理 Linux虚拟内存空间分布&#xff08;重要&#xff09; 栈溢出&#xff08;栈攻击&#xff09; 堆栈的特点 栈攻击 栈攻击的实现 原理 编译器选项 实现案例 linux修改栈空间大小方式 内存泄漏 如何避免野指针&#xff1f; 如何…

C++智能指针之weak_ptr(保姆级教学)

目录 C智能指针之weak_ptr 概述 作用 本文涉及的所有程序 使用说明 weak_ptr的常规操作 lock(); use_count(); expired(); reset(); shared_ptr & weak_ptr 尺寸 智能指针结构框架 常见使用问题 shared_ptr多次引用同一数据&#xff0c;会导致两次释放同一内…

Medium:How to check the correctness of the AB test?

有以下两种错误&#xff1a; 通常&#xff0c;type 1 error is more important&#xff01;因此我们type 2 error就是在“委曲求全”&#xff1a; The probability of Type II error can be adjusted to the desired value by changing the size of the groups or by reducing…

【LeetCode每日一题合集】2023.8.14-2023.8.20(⭐切披萨3n块披萨)

文章目录 617. 合并二叉树833. 字符串中的查找与替换&#xff08;模拟&#xff09;2682. 找出转圈游戏输家&#xff08;模拟&#xff09;1444. 切披萨的方案数&#xff08;⭐⭐⭐⭐⭐&#xff09;解法——从递归到递推到优化&#xff08;二维前缀和记忆化搜索&#xff09; 1388…

【LeetCode每日一题合集】2023.8.7-2023.8.13(动态规划分治)

文章目录 344. 反转字符串1749. 任意子数组和的绝对值的最大值&#xff08;最大子数组和&#xff09;1281. 整数的各位积和之差1289. 下降路径最小和 II解法1——动态规划 O ( n 3 ) O(n^3) O(n3)解法2——转移过程优化 O ( n 2 ) O(n^2) O(n2) ⭐ 1572. 矩阵对角线元素的和解法…

13.Redis 事务

Redis 事务 redis 事务事务操作multi 开启事务exec 执行事务discard 放弃当前事务watchunwatch redis 事务 Redis 的事务和 MySQL 的事务概念上是类似的。 都是把⼀系列操作绑定成⼀组。 让这⼀组能够批量执⾏。 Redis 的事务和 MySQL 事务的区别: 弱化的原⼦性: 这里指的是 …

Pinely Round 2 (Div. 1 + Div. 2) G. Swaps(组合计数)

题目 给定一个长度为n(n<1e6)的序列&#xff0c;第i个数ai(1<ai<n)&#xff0c; 操作&#xff1a;你可以将当前i位置的数和a[i]位置的数交换 交换可以操作任意次&#xff0c;求所有本质不同的数组的数量&#xff0c;答案对1e97取模 思路来源 力扣群 潼神 心得 感…