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

2023-12-01 19:10
文章标签 介绍 寄存器 cxl mmio

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



🔥点击查看精选 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 专栏】🔥

⬆️ 返回顶部 ⬆️

这篇关于CXL寄存器介绍(3)- CXL MMIO的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

性能测试介绍

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

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

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

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模拟实现

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到

火语言RPA流程组件介绍--浏览网页

🚩【组件功能】:浏览器打开指定网址或本地html文件 配置预览 配置说明 网址URL 支持T或# 默认FLOW输入项 输入需要打开的网址URL 超时时间 支持T或# 打开网页超时时间 执行后后等待时间(ms) 支持T或# 当前组件执行完成后继续等待的时间 UserAgent 支持T或# User Agent中文名为用户代理,简称 UA,它是一个特殊字符串头,使得服务器