热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

CXL2.0设备配置空间解析

本文详细介绍了CXL2.0设备的配置空间结构,包括基本配置空间和扩展配置空间的具体组成部分及其功能。

概述

CXL(Compute Express Link)2.0设备的配置空间总共为4KB(地址范围从0x000到0xFFF),主要分为基本配置空间(0x000-0x0FF)和扩展配置空间(0x100-0xFFF)两大部分。

基本配置空间通常包含Header和多个Capability;而扩展配置空间则主要由多个扩展Capability构成。

1 基本配置空间

作为Endpoint类型的设备,其Header采用Type 0格式,长度固定为64字节。Type 0 Header的结构如下,偏移地址为0x00-0x3F:

在Endpoint的基本配置空间中,必须包含的Capability位于偏移地址0x40-0xFF,具体包括:

  • PCI Power Management Capability Structure
  • PCI Express Capability Structure

1.1 PCI Power Management Capability Structure

该结构对PCI总线是可选的,但对于PCIe总线则是必需的。它占用8字节的空间,具体布局如下:

1.2 PCI Express Capability Structure

该结构占用60字节,其中一些关键寄存器如Device Capabilities、Device Status、Device Control等是每个设备都必须支持的。对于具有链路的设备,还需支持Link系列寄存器,但这部分寄存器并非所有设备都必须实现,而是可选的。具体布局如下:

2 扩展配置空间

扩展配置空间中的Extended Capabilities从偏移量0x100开始,并以一个PCI Express Extended Capability header开头。如果没有Extended Capabilities,则Next Capability字段为0。PCI Express Extended Capability header占用4字节,具体布局如下:

在PCIe标准中,有一类名为Designated Vendor-Specific Extended Capability (DVSEC Capability)的扩展功能,CXL 2.0设备必须实现的DVSEC Capability包括:

  • PCIe DVSEC for CXL Device
  • GPF DVSEC for CXL Devices
  • PCIe DVSEC for Flex Bus Port
  • Register Locator DVSEC

2.1 PCIe DVSEC for CXL Device

此DVSEC用于定义CXL设备特定的功能和配置选项,确保设备能够在CXL环境中正确操作。

2.2 GPF DVSEC for CXL Devices

此DVSEC提供了与CXL设备相关的高级电源管理功能,有助于提高系统的能效。

2.3 PCIe DVSEC for Flex Bus Port

此DVSEC定义了Flex Bus端口的特性,支持多种不同的连接模式,增加了系统的灵活性。

2.4 Register Locator DVSEC

此DVSEC提供了一种机制来定位和访问设备内部的特定寄存器,便于系统管理和调试。


推荐阅读
  • 深入理解Redis的数据结构与对象系统
    本文详细探讨了Redis中的数据结构和对象系统的实现,包括字符串、列表、集合、哈希表和有序集合等五种核心对象类型,以及它们所使用的底层数据结构。通过分析源码和相关文献,帮助读者更好地理解Redis的设计原理。 ... [详细]
  • Explore how Matterverse is redefining the metaverse experience, creating immersive and meaningful virtual environments that foster genuine connections and economic opportunities. ... [详细]
  • DNN Community 和 Professional 版本的主要差异
    本文详细解析了 DotNetNuke (DNN) 的两种主要版本:Community 和 Professional。通过对比两者的功能和附加组件,帮助用户选择最适合其需求的版本。 ... [详细]
  • UNP 第9章:主机名与地址转换
    本章探讨了用于在主机名和数值地址之间进行转换的函数,如gethostbyname和gethostbyaddr。此外,还介绍了getservbyname和getservbyport函数,用于在服务器名和端口号之间进行转换。 ... [详细]
  • ImmutableX Poised to Pioneer Web3 Gaming Revolution
    ImmutableX is set to spearhead the evolution of Web3 gaming, with its innovative technologies and strategic partnerships driving significant advancements in the industry. ... [详细]
  • Codeforces Round #566 (Div. 2) A~F个人题解
    Dashboard-CodeforcesRound#566(Div.2)-CodeforcesA.FillingShapes题意:给你一个的表格,你 ... [详细]
  • 深入解析Spring Cloud Ribbon负载均衡机制
    本文详细介绍了Spring Cloud中的Ribbon组件如何实现服务调用的负载均衡。通过分析其工作原理、源码结构及配置方式,帮助读者理解Ribbon在分布式系统中的重要作用。 ... [详细]
  • 在金融和会计领域,准确无误地填写票据和结算凭证至关重要。这些文件不仅是支付结算和现金收付的重要依据,还直接关系到交易的安全性和准确性。本文介绍了一种使用C语言实现小写金额转换为大写金额的方法,确保数据的标准化和规范化。 ... [详细]
  • 扫描线三巨头 hdu1928hdu 1255  hdu 1542 [POJ 1151]
    学习链接:http:blog.csdn.netlwt36articledetails48908031学习扫描线主要学习的是一种扫描的思想,后期可以求解很 ... [详细]
  • 题目Link题目学习link1题目学习link2题目学习link3%%%受益匪浅!-----&# ... [详细]
  • 本文详细探讨了VxWorks操作系统中双向链表和环形缓冲区的实现原理及使用方法,通过具体示例代码加深理解。 ... [详细]
  • 在多线程编程环境中,线程之间共享全局变量可能导致数据竞争和不一致性。为了解决这一问题,Linux提供了线程局部存储(TLS),使每个线程可以拥有独立的变量副本,确保线程间的数据隔离与安全。 ... [详细]
  • 本次考试于2016年10月25日上午7:50至11:15举行,主要涉及数学专题,特别是斐波那契数列的性质及其在编程中的应用。本文将详细解析考试中的题目,并提供解题思路和代码实现。 ... [详细]
  • 本文介绍了如何利用 Spring Boot 和 Groovy 构建一个灵活且可扩展的动态计算引擎,以满足钱包应用中类似余额宝功能的推广需求。我们将探讨不同的设计方案,并最终选择最适合的技术栈来实现这一目标。 ... [详细]
  • 2018-2019学年第六周《Java数据结构与算法》学习总结
    本文总结了2018-2019学年第六周在《Java数据结构与算法》课程中的学习内容,重点介绍了非线性数据结构——树的相关知识及其应用。 ... [详细]
author-avatar
上海蓝色的梦在哪
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有