0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

CXL系统启动和复位流程概览

冬至配饺子 来源:老秦谈芯 作者:老秦谈芯 2023-09-22 14:37 次阅读

9.1 CXL启动和复位概览

9.1.1 总体

CXL设备的三种复位:

  • Hot reset:通过链路触发
  • Warm reset:通过外部信号触发
  • Cold reset:通过外部信号触发,并伴随电源开关

这三种复位被归纳为传统(Conventional)复位。Function级复位和CXL复位不是传统复位。

9.1.2 对比CXL和PCIe行为

image.png

  • Warning:即将到来的事件的早期通知
  • Signaling:实际启动状态转换

9.2 CXL设备启动流程

CXL设备将沿用PCIe的Warm reset和Cold reset。

9.3 CXL系统复位进入流程

在系统复位过程中,主机发送下列CXL PM VDM给CXL设备。

•PM Logical Opcode[7:0]=RESETPREP

•Parameter[15:0]=REQUEST

•ResetType = Warm Reset

•PrepType = General Prep

CXL设备应向主机刷新任何相关上下文,清理为主机服务的数据,并将连接到CXL设备的内存置于安全状态。所有复位准备完成后,CXL设备发出下列CXL PM VDM给主机。

•PM Logical Opcode[7:0]=RESETPREP

•Parameter[15:0]=RESPONSE

•ResetType = Warm Reset

•PrepType = General Prep

image.png

9.4 CXL设备睡眠状态进入流程

image.png

9.5 Function-level复位(FLR)

PCIe的FLR机制使软件能够以Function-level粒度停止和复位Endpoint硬件。CXL设备向主机软件公开一个或多个PCIe Function。这些Function可以向主机呈现FLR能力,从而现有的PCIe兼容软件可以向这些Function发出FLR。

9.6 缓存管理

旧有的操作系统或旧有的PCIe总线驱动程序不知道CXL.cache功能。所以,设备驱动程序应该提供CXL.cache功能的支持,以管理CXL缓存。

系统软件可能希望在不复位系统或整个设备的情况下,确保支持CXLcache的设备不包含任何有效的缓存行。由于不需要设备通过FLR清除缓存内容,因此为此定义了单独的控制位和状态位。此功能对于所有支持CXL 2.0 CXLcache的设备都是必需的。软件通过下面的步骤保证设备内没有有效的缓存行:

image.png

9.7 CXL复位

9.7.1 对易失性HDM的影响

由于易失性HDM(Host-managed Device Memory)范围的所有权可能在CXL复位后发生变化,因此必须确保CXL复位之前存在的易失性内存内容没有泄漏。

两种情况需要考虑:

  1. 设备继续绑定到同一主机,但是系统软件将易失性HDM分配给其它的软件实体。
  2. 设备被迁移到另外一个主机。

9.7.2 软件动作

在执行CXL复位时,系统软件应遵循以下步骤:

image.png

重新初始化和联机设备时,系统软件应遵循以下步骤:

image.png

9.8 全局持久刷新(Global Persistent Flush,GPF)

全局持久性刷新(GPF)是一种基于硬件的机制,用于将缓存和内存缓冲区刷新到持久性域(Persistent Domain)。持久性域定义为一个位置,用于保证重新启动设备时保留其数据内容,而不是丢弃数据。比如,当发生突然断电,主机可以启动GPF以确保未完成的数据被写回持久介质中。

9.8.1 主机和交换机职责

所有支持CXL 2.0的主机和交换机都需要支持GPF。GPF流程包含两个阶段:GPF Phase 1和GPF Phase 2。在Phase 1,设备停止新的传输,写回缓存;在Phase 2,持久性设备刷新本地的写缓冲区里的数据到持久性域。在两个阶段之间,主机必须确保停止注入新的CXL.cache事务,并在进入Phase 2之前写回到本地缓存。

9.8.2 设备职责

所有CXL 2.0及更高版本的设备都需要支持GPF,且应在其AGENT_INFO响应中设置CAPABILITY_VECTOR字段的第1个bit。

收到GPF Phase 1请求消息后,CXL设备应按指定顺序执行以下步骤:

image.png

收到GPF Phase 2请求消息后,CXL设备应按指定顺序执行以下步骤:

image.png

9.8.3 能量预算

通常有必要评估系统是否有足够的能量在断电情况下处理GPF。系统软件可能会通过使用各种CXL DVSEC寄存器中的可用信息,和系统其余部分的信息来确定。

9.9 热插拔

CXL 1.1主机和CXL 1.1设备不支持热插拔。CXL 2.0根端口、CXL 2.0设备和CXL交换机需要支持Hot-Add和Hot-Remove。

支持热插拔需要什么流程?需要看PCIe协议。

9.10 软件枚举

CXL 2.0设备呈现给主机软件的是一个或多个PCIe Endpoint。CXL 1.1设备则呈现为RCiEP(Root Complex Integrated Endpoints)。CXL设备的发现遵循PCIe规范,但CXL 1.1层次结构和CXL 2.0虚拟层次结构之间存在一些差异。

9.11 CXL 1.1 层次

暂时略过。

9.12 CXL 2.0 枚举

支持CXL 2.0的主机可以在系统软件中表示为零个或多个CXL 2.0主机桥(Host Bridge),零个或多个CXL 1.1主机桥,零个或多个PCIe主机桥。主机桥是一种软件概念,它表示根端口的集合。

9.12.1 CXL 2.0根端口(Root Port)

每个CXL 2.0主机桥与基本总线号(Base Bus Number)关联,该总线号应包含一个或多个支持CXL 2.0的根端口。这些根端口显示在PCIe配置空间中。根端口可以处于以下四种状态之一:

  1. 1.断开连接
  2. 2.连接到CXL 2.0设备/交换机
  3. 3.连接到CXL 1.1设备
  4. 4.连接到PCIe设备/交换机

9.12.2 CXL 2.0虚拟层次

在CXL 2.0模式下运行的根端口可以直接连接到CXL 2.0设备或CXL交换机。这些根端口形成CXL 2.0虚拟层次结构(Virtual Hierarchy,VH)。

9.12.3 枚举支持CXL 2.0的下游端口

软件可以使用下游端口配置空间中的Link Status寄存器和CXL DVSEC ID 7结构的组合来确定具有CXL 2.0功能的下游端口处于哪个状态。

image.png

其它内容暂时略。

9.13 HDM的软件视图

HDM作为正常存储呈现给OS/VMM,但是与主机内存相比,HDM可能具有不同的性能/延迟属性。因此,具有CXL.mem设备的系统可以被视为异构存储器系统。ACPI HMAT表是为此类系统引入的,可以报告不同内存范围的延迟和带宽特性。

9.13.1 内存交织

内存交织允许以统一的间隔将连续的内存地址映射到不同的CXL设备。

9.13.2 CXL内存设备标签存储区

暂时略过。

9.14 CXL OS固件接口扩展

9.14.1 CXL Early Discovery Table (CEDT)

CXL早期发现表(CXL Early Discovery Table)使操作系统能够在启动期间的早期,即在分析ACPI命名空间之前,找到CXL主机桥和主机桥寄存器的位置。此表中的信息可由早期启动代码用于执行CXL主机的预初始化,例如配置CXLcache和CXLmem。

image.png

9.14.2 CXL_OSC

暂时略过

9.15 CXL设备可操作性模型(Manageability Model)

可管理性是被管理实体向管理实体公开的一组功能。CXL设备是被管理实体。这些能力通常分为sensor和effector。性能计数器是sensor的一个示例,而更新设备固件的能力是effector的一个示例。Sensor和effector可以在带内(即通过驻留OS/VMM的软件)访问,也可以在带外(即通过运行在独立于OS的管理控制器上的固件)访问。

带内软件可以通过发出PCIe配置读/写或MMIO读/写事务来访问CXL设备的可管理性功能。S0状态下的带外可管理性可以在PCI Express基础架构上利用MCTP。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 控制器
    +关注

    关注

    112

    文章

    16350

    浏览量

    177949
  • 寄存器
    +关注

    关注

    31

    文章

    5342

    浏览量

    120300
  • 交换机
    +关注

    关注

    21

    文章

    2639

    浏览量

    99593
  • PCIe
    +关注

    关注

    15

    文章

    1237

    浏览量

    82626
  • HDM
    HDM
    +关注

    关注

    0

    文章

    9

    浏览量

    10503
  • PCIe接口
    +关注

    关注

    0

    文章

    120

    浏览量

    9703
收藏 人收藏

    评论

    相关推荐

    TL3588--系统启动卡制作及系统固化

    TL3588--系统启动卡制作及系统固化
    的头像 发表于 01-25 09:50 1626次阅读
    TL3588--<b class='flag-5'>系统启动</b>卡制作及<b class='flag-5'>系统</b>固化

    IAR系统启动流程及修改方法

    硬件初始化和软件运行环境初始化两个部分的工作。一、系统硬件初始化对于硬件初始化,执行步骤流程如下:图‑1CPU复位时,会从系统启动程序代码cstartup中的__iar_program
    发表于 08-06 13:57

    请问怎样去设计嵌入式系统启动程序?

    如何去编写嵌入式系统启动程序?设计嵌入式系统启动程序的步骤流程有哪些?设计嵌入式系统启动程序有哪些技术难点?
    发表于 04-25 09:18

    详细分析嵌入式Linux系统启动流程

    在嵌入式Linux专题(一)中已经对嵌入式Linux系统的架构及启动流程有了初步的介绍,本文将详细分析嵌入式Linux系统启动流程
    发表于 11-05 09:25

    Linux文件系统启动流程

    与 Linux 命令的结合使用Linux 文件系统启动流程sysvinit服务的管理与裁剪systemd服务的管理与裁剪了解 qt4、qt5 的移植了解 yocto构建文件系统常规 Linux 应用
    发表于 12-17 06:00

    系统启动过程

    系统启动过程系统启动过程主要由一下几步组成(以硬盘启动为例):1. 开机2. BIOS 加电自检 ( Power On Self Test -- POST ),内存地址为 0ffff:00003. 将硬盘第一个
    发表于 10-11 12:17 2259次阅读

    改进的直接转矩控制系统启动方法

    改进的直接转矩控制系统启动方法
    发表于 01-21 11:54 1次下载

    嵌入式Linux系统启动时序和快速启动的优化方法分析

    目前,嵌入式系统的硬件平台和应用方向区别很大,但总体启动流程是一致的。这里的系统启动是指从用户执行上电/复位操作,到
    的头像 发表于 10-04 14:29 4933次阅读
    嵌入式Linux<b class='flag-5'>系统</b>的<b class='flag-5'>启动</b>时序和快速<b class='flag-5'>启动</b>的优化方法分析

    UM2012_osxMotionXX系统启动

    UM2012_osxMotionXX系统启动
    发表于 11-22 19:24 0次下载
    UM2012_osxMotionXX<b class='flag-5'>系统启动</b>

    一张图了解嵌入式系统启动流程

    如下图所示是嵌入式系统启动流程图,图中红色的数字圆点表示启动的先后顺序。主要分为4个阶段,分别是第一阶段 bootloader,第二阶段uboot,第三阶段内核启动,第四阶段app
    发表于 03-07 09:44 869次阅读

    Rockchip 系统启动流程

    Rockchip 系统启动流程,包括 Boot ROM、Mask ROM、U-Boot、Linux 内核等。 Boot ROM 阶段: 在 Rockchip 系统启动的第一阶段,处
    的头像 发表于 01-04 15:54 1312次阅读

    Rockchip 3588 系统启动流程

    Rockchip 3588是一款高性能、低功耗的ARM处理器,广泛应用于智能电视、智能音箱和车载娱乐系统等领域。在本文中,我们将深入探讨Rockchip 3588的系统启动流程系统启动
    的头像 发表于 01-07 16:08 2620次阅读

    RK3568--系统启动阶段LOGO显示

    RK3568--系统启动阶段LOGO显示
    的头像 发表于 01-19 14:44 1116次阅读
    RK3568--<b class='flag-5'>系统启动</b>阶段LOGO显示

    TL3588-系统启动阶段LOGO显示

    TL3588-系统启动阶段LOGO显示
    的头像 发表于 01-24 14:29 395次阅读
    TL3588-<b class='flag-5'>系统启动</b>阶段LOGO显示

    TLT507--系统启动阶段LOGO显示

    TLT507--系统启动阶段LOGO显示
    的头像 发表于 01-26 09:42 393次阅读
    TLT507--<b class='flag-5'>系统启动</b>阶段LOGO显示