PCIe 系统拓朴结构和基本组件介绍

2024-03-21 08:40

本文主要是介绍PCIe 系统拓朴结构和基本组件介绍,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本文从PCIe常见的系统应用和BaseSpec的角度,简要介绍PCIe拓扑结构和各个组件的功能及基本概念。

PCIe 系统拓扑结构

        

PCIe 拓扑结构

此图是BaseSpec中关于PCIe fabric及拓扑结构的示意图,一个常见的PCIe系统内,一般的会包含一个或多个RootPort及SoC其他组件共同组成的RootComplex。一个或多个PCIe Switch,以及多个PCIe Endpoint(或Legacy Endpoint)组件。

上图以AMD Ryzen CPU为例,Ryzen CPU SoC可以认为是Root Complex,其下挂了若干个Endpoint设备,如Storage,Graphics等。AMD X570可以认为是Switch的部分,因为往往chipset下面还会连接更多的PCIe Endpoint设备,比如更多的PCIe/NVME/SSD/USB等存储设备,以太网控制器,声卡等等。

PCIe系统组件

Root Complex

PCIe BaseSpec中描述的RootComplex不只是描述一个SoC中的IP,而是一系列功能。一般的PCIe接口协议相关的叫Root Port,是pcie系统结构中的一个port。BaseSpec定义的RootComplex是:

  • RC 表示IO Hierarchy的Root,并且和CPU/Memory子系统相连。
  • RC可以包含一个或多个PCIe port (Root Port). 每一个interface分别定义了PCIe域及其层级结构。 每一个PCIe域和层级结构可以包含一个或多个PCIe Switch和Endpoints。
  • RC需要支持产生configuration request。
  • RC可选的支持产生I/O request。
  • 当RC作为Completer时,不允许支持Lock操作。相反的,RC可以支持发送Locked requester as Requester。

上面是一段从BaseSpec翻译过来的,阅读起来非常绕口。稍微总结几句:

1. RC是整个PCIe树形数据结构中唯一的主控者,一个PCIe tree结构下只允许有一个PCIe RC,可以有多个Switch和Endpoint。

2. RC是整个属性结构的发起者和建立者,换言之,因为PCIe是使用Configuration request来枚举和建立PCIe层级结构的,所以只有RC允许发起configuration request。所有其他的PCIe 设备均不允许发送configuration request。

3. RC也是传统PCIe设备中唯一的Host (可以理解为CPU),而传统设备中,只有Host CPU可以发送IO指令,所以BaseSpec描述,RC支持IO Request。因为现代CPU大多使用IOMMU,而非传统IO操作,所以IO request基本已经很少使用了,所以这个IO request对RC来说是Optional。

4. 不支持作为Lock completer, 这个用的比较少,应该是因为RC作为唯一的主控设备,如果他的内存或者某compoment被PCIe hierarchy下面的某个Endpoint给Lock住了,要防止互锁的发生,所以RC是不允许被Lock的。

PCIe Switch

       

上图PEX9797就是AVAGO推出的PCIe Gen3多端口PCIe switch及典型应用场景。
  • 向上连接一个PCIe 的Root Complex (CPU)
  • 下面挂在若干个高速设备(此处是4个GPU)
  • 另外此PCIe switch支持一个端口对接到另一个PEX9797 switch,用于扩展PCIe endpoint设备数量,或者作为transparent bridge (Optional)对接另一个PCIe tree。

下图是一个PCIe Switch的内部结构概念图。一个Switch由一个Upstream Port,负责和上一级Switch或者Root Port对接。和若干个downstream port,以及一个内部的“交换器/桥接器/路由器”,名称可能很多,工程差不多,主要实现TLP或者Message的路由。

PCIe Endpoint

再PC和Server领域,我们大量的能看到PCIe Endpoint(终端)设备,比如个人PC上用的显卡(金手指那个接口就是PCIe),NVMe硬盘,网卡(特别是万兆网卡),插在PCIe插槽上的声卡等。服务器上的GPGPU,AI算力卡等等,基本上全部使用PCIe接口。Endpoint常见支持的Feature有:

  • 支持Memory read/write requestor和completor。
  • 支持发送MSI/MSI-X/INT-x等中断消息。
  • 支持最大实现6个BAR(Base Address Registers)
  • Endpoint只能作为Configuration和IO requester的重点。不能转发和自己发送configuration/IO request.
  • Endpoint可以支持多个function,physical function 和virtual function。


全文完

这篇关于PCIe 系统拓朴结构和基本组件介绍的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Python进阶之Excel基本操作介绍

《Python进阶之Excel基本操作介绍》在现实中,很多工作都需要与数据打交道,Excel作为常用的数据处理工具,一直备受人们的青睐,本文主要为大家介绍了一些Python中Excel的基本操作,希望... 目录概述写入使用 xlwt使用 XlsxWriter读取修改概述在现实中,很多工作都需要与数据打交

在C#中获取端口号与系统信息的高效实践

《在C#中获取端口号与系统信息的高效实践》在现代软件开发中,尤其是系统管理、运维、监控和性能优化等场景中,了解计算机硬件和网络的状态至关重要,C#作为一种广泛应用的编程语言,提供了丰富的API来帮助开... 目录引言1. 获取端口号信息1.1 获取活动的 TCP 和 UDP 连接说明:应用场景:2. 获取硬

JAVA系统中Spring Boot应用程序的配置文件application.yml使用详解

《JAVA系统中SpringBoot应用程序的配置文件application.yml使用详解》:本文主要介绍JAVA系统中SpringBoot应用程序的配置文件application.yml的... 目录文件路径文件内容解释1. Server 配置2. Spring 配置3. Logging 配置4. Ma

2.1/5.1和7.1声道系统有什么区别? 音频声道的专业知识科普

《2.1/5.1和7.1声道系统有什么区别?音频声道的专业知识科普》当设置环绕声系统时,会遇到2.1、5.1、7.1、7.1.2、9.1等数字,当一遍又一遍地看到它们时,可能想知道它们是什... 想要把智能电视自带的音响升级成专业级的家庭影院系统吗?那么你将面临一个重要的选择——使用 2.1、5.1 还是

java脚本使用不同版本jdk的说明介绍

《java脚本使用不同版本jdk的说明介绍》本文介绍了在Java中执行JavaScript脚本的几种方式,包括使用ScriptEngine、Nashorn和GraalVM,ScriptEngine适用... 目录Java脚本使用不同版本jdk的说明1.使用ScriptEngine执行javascript2.

使用Python进行文件读写操作的基本方法

《使用Python进行文件读写操作的基本方法》今天的内容来介绍Python中进行文件读写操作的方法,这在学习Python时是必不可少的技术点,希望可以帮助到正在学习python的小伙伴,以下是Pyth... 目录一、文件读取:二、文件写入:三、文件追加:四、文件读写的二进制模式:五、使用 json 模块读写

高效管理你的Linux系统: Debian操作系统常用命令指南

《高效管理你的Linux系统:Debian操作系统常用命令指南》在Debian操作系统中,了解和掌握常用命令对于提高工作效率和系统管理至关重要,本文将详细介绍Debian的常用命令,帮助读者更好地使... Debian是一个流行的linux发行版,它以其稳定性、强大的软件包管理和丰富的社区资源而闻名。在使用

Ubuntu系统怎么安装Warp? 新一代AI 终端神器安装使用方法

《Ubuntu系统怎么安装Warp?新一代AI终端神器安装使用方法》Warp是一款使用Rust开发的现代化AI终端工具,该怎么再Ubuntu系统中安装使用呢?下面我们就来看看详细教程... Warp Terminal 是一款使用 Rust 开发的现代化「AI 终端」工具。最初它只支持 MACOS,但在 20

windows系统下shutdown重启关机命令超详细教程

《windows系统下shutdown重启关机命令超详细教程》shutdown命令是一个强大的工具,允许你通过命令行快速完成关机、重启或注销操作,本文将为你详细解析shutdown命令的使用方法,并提... 目录一、shutdown 命令简介二、shutdown 命令的基本用法三、远程关机与重启四、实际应用

Debian如何查看系统版本? 7种轻松查看Debian版本信息的实用方法

《Debian如何查看系统版本?7种轻松查看Debian版本信息的实用方法》Debian是一个广泛使用的Linux发行版,用户有时需要查看其版本信息以进行系统管理、故障排除或兼容性检查,在Debia... 作为最受欢迎的 linux 发行版之一,Debian 的版本信息在日常使用和系统维护中起着至关重要的作