专栏
天翼云开发者社区

PCI Express体系架构概述

2022-12-30 10:23:18 33阅读

PCI Express是一种高性能、通用的I/O互连技术,为各种未来的计算和通信平台而定义。PCI Express的关键属性,如使用模型、负载存储架构和软件接口,被保留和继承下来,而其并行总线的实现被高度可扩展的完全串行接口所取代。PCI Express利用在点对点互连、基于交换机的技术和分组协议方面的最新进展,提供新的性能和功能水平。PCI Express的电源管理、服务质量(QoS)、热插拔支持、数据完整性和错误处理是PCI Express支持的一些高级功能。

1.1 PCI Express 链路

基本的PCI Express链路由两个低电压、差分驱动的信号对组成:一个发送对和一个接收对,如图1-1所示。

                         图1-1 PCI Express链路

PCI Express Link的主要链路属性是:

  • 基本链路 -- PCI Express链路由两个单向的差分链路组成,实现为一对发送和一对接收。使用编码方案嵌入数据时钟,以实现非常高的数据速率。
  • 信令速率 -- 一旦初始化,每个链路必须只在支持的信令水平之一上运行。

对于第一代PCI Express技术,只定义了一个信令率,它提供了有效的2.5 Gigabits/second/Lane/direction的原始带宽;第二代技术提供有效的5.0 Gigabits/second/Lane/direction的原始带宽;第三代提供有效的8.0 Gigabits/second/Lane/direction的原始带宽;第四代产品提供有效的16.0 Gigabits/second/Lane/direction的原始带宽;第五代提供有效的32.0 Gigabits/second/Lane/direction原始带宽。

  • 通道 -- 一个链路必须支持至少一个通道 - 每个通道代表一组差分信号对(一对用于传输,一对用于接收)。为了扩大带宽,一个链路可以聚集多个通道,用xN表示,其中N可以是任何支持的链路宽度。在5GT/s数据速率下运行的x8链路代表了每个方向20GT/s的原始带宽的聚合带宽。
  • 初始化 -- 在硬件初始化过程中,每个PCI Express链路都是在链路两端的两个代理协商通道带宽和操作频率后设置的。不涉及固件或操作系统软件。
  • 对称性 -- 每个链路必须支持每个方向上的对称数量的Lane,即一个x16链路表示每个方向上有16个差分信号对。

1.2 PCI Express结构拓扑

图1-2是一个PCI Express结构拓扑示例。该图说明了一个单一结构实例 -- 由一个根复合体(RC)、多个端点(I/O设备)、一个交换机和一个PCI Express到PCI/PCI-X桥组成,所有这些都通过PCI Express链路互连起来。

                 图1-2 PCI Express拓扑结构

1.2.1 根复合体

  • Root Complex表示I/O层次结构的根,它将CPU/内存子系统与I/O连接起来。
  • 如图1-2所示,一个RC可以支持一个或多个PCI Express端口。每个接口定义了一个单独的层次结构域。每个层次结构域可以由一个单一的端点或一个包含一个或多个交换机组件和端点的子层次结构组成。
  • 层次域之间通过RC路由点对点交易的能力是可选的,并且取决于实施。
  • 一个RC必须支持生成配置请求,作为一个请求者。
  • 允许一个RC作为请求者支持生成I/O请求。
  • 一个RC必须不支持锁定语义作为一个完成器。
  • 允许RC作为请求者支持生成锁定的请求。

1.2.2 端点

Endpoint指的是一种功能,它可以代表自己或代表独特的非PCI Express设备(除PCI设备或主机CPU外)成为PCI Express交易的请求者或完成者,例如,PCI Express附属图形控制器或PCI Express-USB主机控制器。端点分为legacy端点、PCI Express端点或根复杂集成端点(RCiEPs)。

1.2.2.1 legacy端点规则

  • legacy端点必须是一个具有00h类型配置空间头的功能。
  • legacy端点必须支持作为完成者的配置请求。
  • legacy端点可以支持I/O请求作为完成者。
  • legacy端点可以产生I/O请求。
  • 如果设备的legacy软件支持,legacy端点可以支持锁定内存语义作为一个完成者。
  • legacy端点不得发出锁定的请求。
  • legacy端点可以实现扩展配置空间能力,但这种能力可能被软件忽略。
  • 作为内存事务请求者操作的legacy端点不需要能够生成4GB或更大的地址。
  • 如果请求中断资源,legacy端点需要支持MSI或MSI-X或两者。如果实现了MSI,legacy端点被允许支持MSI能力结构的32位或64位消息地址版本。
  • legacy端点被允许支持32位寻址,用于请求内存资源的基址寄存器。
  • legacy端点必须出现在由根复合体发起的一个层次结构域中。

1.2.2.2 PCI Express端点规则

  • 一个PCI Express端点必须是一个具有00h类型配置空间头的功能。
  • 一个PCI Express端点必须支持作为完成者的配置请求。
  • 一个PCI Express端点必须不依赖于操作系统对通过BAR(s)申请的I/O资源的分配。
  • 一个PCI Express端点必须不产生I/O请求。
  • PCI Express端点不得作为完成者支持锁定请求,也不得作为请求者产生锁定请求。必须编写符合PCI Express标准的软件驱动程序和应用程序,以防止在访问PCI Express端点时使用锁定语义。
  • 作为内存事务的请求者运行的PCI Express端点必须能够生成大于4GB的地址。
  • 如果请求中断资源,PCI Express端点需要支持MSI或MSI-X或两者。 如果实施MSI,PCI Express端点必须支持MSI能力结构的64位消息地址版本。
  • 通过BAR请求内存资源的PCI Express端点必须设置BAR的Prefetchable位,除非该范围包含具有读取副作用的位置或功能不允许写入合并的位置。
  • 对于PCI Express端点来说,对于所有具有Prefetchable位设置的BAR,必须支持64位寻址。对于所有没有预取位设置的BAR,允许32位寻址。
  • 一个BAR所要求的最小内存地址范围是128字节。
  • 一个PCI Express端点必须出现在由根复合体发起的一个层次结构域内。

1.2.3 交换机

交换机被定义为多个虚拟PCI到PCI桥接设备的逻辑组合,如图1-3所示。所有的交换机受以下基本规则的约束。

            图1-3 交换机的逻辑框图

  • 交换机在配置软件中显示为两个或多个逻辑PCI到PCI桥。
  • 交换机使用PCI桥机制转发交易;例如,基于地址的路由,除非参与组播。
  • 除了本文件中提到的情况,交换机必须在任何一组端口之间转发所有类型的事务层数据包(TLP)。
  • 必须按照规定支持锁定请求。交换机不需要支持下游端口作为锁定请求的启动端口。
  • 每个启用的交换机端口必须遵守流量控制规范。
  • 交换机不允许将一个数据包分割成更小的数据包,例如,一个具有256字节有效载荷的单一数据包不得被分割成两个各有128字节有效载荷的数据包。
  • 当同一虚拟通道上发生抢占时,交换机的入口端口(入站链路)之间的仲裁可以使用轮回或加权轮回来实现。
  • 端点(由00h类型的配置空间头表示)不得出现在交换机内部总线的配置软件中,作为代表交换机下游端口的虚拟PCI-to-PCI桥的对等物。

1.3 PCI Express分层概述

PCI Express用三个离散的逻辑层来指定架构:交易层、数据链接层和物理层。这些层中的每一个都被分为两个部分:一个处理出站(要传输)信息,一个处理入站(接收)信息,如图1-4所示。这种分层定义的根本目的是为了方便理解。但是,这种分层并不意味着一种特定的PCI Express实现。

        图1-4 High-Level分层图

PCI Express使用数据包在组件之间通信信息。数据包是在交易层和数据链路层中形成的,用于将信息从发送组件传送到接收组件。当传输的数据包流经其他层时,它们被扩展为处理这些层的数据包所必需的额外信息。在接收端,采用相反的过程,数据包从它们的物理层表示转化为数据链路层表示,最后(对于事务层数据包)转化为可由接收设备的事务层处理的形式。图1-5显示了交易层数据包信息在各层的流动情况。

                    图1-5 数据包在各层的流动情况

1.3.1 交易层

架构的上层是事务层。交易层的主要职责是组装和拆卸TLPs。TLPs用于通信事务,如读和写,以及某些类型的事件。事务层还负责管理TLPs的基于信用的流量控制。

每一个需要响应数据包的请求数据包都被实现为一个分割事务。每个数据包都有一个唯一的标识符,使响应数据包能够被引导到正确的发起人那里。数据包格式支持不同形式的寻址,这取决于事务的类型(内存、I/O、配置和消息)。数据包还可以有无窥探、宽松排序和基于ID的排序(IDO)等属性。

事务层支持四个地址空间:它包括三个PCI地址空间(内存、I/O和配置)并增加了消息空间。PCI Express使用消息空间来支持所有先前的边带信号,如中断、电源管理请求等,作为带内消息事务。可以把PCI Express消息事务看作是 "虚拟线路",因为它们的作用是消除目前在平台实现中使用的各种边带信号。

1.3.2 数据链路层

堆栈中的中间层,即数据链路层,是交易层和物理层之间的一个中间阶段。数据链路层的主要职责包括链路管理和数据完整性,包括错误检测和错误纠正。

数据链路层的传输端接受由事务层组装的TLP,计算并应用数据保护码和TLP序列号,并将其提交给物理层,以便在链路上传输。接收数据链路层负责检查收到的TLPs的完整性,并将其提交给交易层作进一步处理。在检测到TLP错误时,该层负责要求重发TLP,直到信息被正确接收,或确定链路失败。

数据链路层还产生和消耗用于链路管理功能的数据包。

1.3.3 物理层

物理层包括所有用于接口操作的电路,包括驱动器和输入缓冲器、并联到串行和串行到并行的转换、PLL(s)和阻抗匹配电路。它还包括与接口初始化和维护有关的逻辑功能。物理层以具体实施的格式与数据链路层交换信息。该层负责将从数据链路层收到的信息转换为适当的序列化格式,并以连接到链路另一端的设备兼容的频率和宽度在PCI Express链路上传输。

PCI Express架构有 "hooks",通过速度升级和先进的编码技术支持未来的性能提升。未来的速度、编码技术或媒体可能只影响物理层的定义。

 

 

 

  • 0
  • 0
  • 0
0 评论
0/1000
评论(0) 发表评论
乘风

乘风

11 篇文章 2 粉丝
关注

PCI Express体系架构概述

2022-12-30 10:23:18 33阅读

PCI Express是一种高性能、通用的I/O互连技术,为各种未来的计算和通信平台而定义。PCI Express的关键属性,如使用模型、负载存储架构和软件接口,被保留和继承下来,而其并行总线的实现被高度可扩展的完全串行接口所取代。PCI Express利用在点对点互连、基于交换机的技术和分组协议方面的最新进展,提供新的性能和功能水平。PCI Express的电源管理、服务质量(QoS)、热插拔支持、数据完整性和错误处理是PCI Express支持的一些高级功能。

1.1 PCI Express 链路

基本的PCI Express链路由两个低电压、差分驱动的信号对组成:一个发送对和一个接收对,如图1-1所示。

                         图1-1 PCI Express链路

PCI Express Link的主要链路属性是:

  • 基本链路 -- PCI Express链路由两个单向的差分链路组成,实现为一对发送和一对接收。使用编码方案嵌入数据时钟,以实现非常高的数据速率。
  • 信令速率 -- 一旦初始化,每个链路必须只在支持的信令水平之一上运行。

对于第一代PCI Express技术,只定义了一个信令率,它提供了有效的2.5 Gigabits/second/Lane/direction的原始带宽;第二代技术提供有效的5.0 Gigabits/second/Lane/direction的原始带宽;第三代提供有效的8.0 Gigabits/second/Lane/direction的原始带宽;第四代产品提供有效的16.0 Gigabits/second/Lane/direction的原始带宽;第五代提供有效的32.0 Gigabits/second/Lane/direction原始带宽。

  • 通道 -- 一个链路必须支持至少一个通道 - 每个通道代表一组差分信号对(一对用于传输,一对用于接收)。为了扩大带宽,一个链路可以聚集多个通道,用xN表示,其中N可以是任何支持的链路宽度。在5GT/s数据速率下运行的x8链路代表了每个方向20GT/s的原始带宽的聚合带宽。
  • 初始化 -- 在硬件初始化过程中,每个PCI Express链路都是在链路两端的两个代理协商通道带宽和操作频率后设置的。不涉及固件或操作系统软件。
  • 对称性 -- 每个链路必须支持每个方向上的对称数量的Lane,即一个x16链路表示每个方向上有16个差分信号对。

1.2 PCI Express结构拓扑

图1-2是一个PCI Express结构拓扑示例。该图说明了一个单一结构实例 -- 由一个根复合体(RC)、多个端点(I/O设备)、一个交换机和一个PCI Express到PCI/PCI-X桥组成,所有这些都通过PCI Express链路互连起来。

                 图1-2 PCI Express拓扑结构

1.2.1 根复合体

  • Root Complex表示I/O层次结构的根,它将CPU/内存子系统与I/O连接起来。
  • 如图1-2所示,一个RC可以支持一个或多个PCI Express端口。每个接口定义了一个单独的层次结构域。每个层次结构域可以由一个单一的端点或一个包含一个或多个交换机组件和端点的子层次结构组成。
  • 层次域之间通过RC路由点对点交易的能力是可选的,并且取决于实施。
  • 一个RC必须支持生成配置请求,作为一个请求者。
  • 允许一个RC作为请求者支持生成I/O请求。
  • 一个RC必须不支持锁定语义作为一个完成器。
  • 允许RC作为请求者支持生成锁定的请求。

1.2.2 端点

Endpoint指的是一种功能,它可以代表自己或代表独特的非PCI Express设备(除PCI设备或主机CPU外)成为PCI Express交易的请求者或完成者,例如,PCI Express附属图形控制器或PCI Express-USB主机控制器。端点分为legacy端点、PCI Express端点或根复杂集成端点(RCiEPs)。

1.2.2.1 legacy端点规则

  • legacy端点必须是一个具有00h类型配置空间头的功能。
  • legacy端点必须支持作为完成者的配置请求。
  • legacy端点可以支持I/O请求作为完成者。
  • legacy端点可以产生I/O请求。
  • 如果设备的legacy软件支持,legacy端点可以支持锁定内存语义作为一个完成者。
  • legacy端点不得发出锁定的请求。
  • legacy端点可以实现扩展配置空间能力,但这种能力可能被软件忽略。
  • 作为内存事务请求者操作的legacy端点不需要能够生成4GB或更大的地址。
  • 如果请求中断资源,legacy端点需要支持MSI或MSI-X或两者。如果实现了MSI,legacy端点被允许支持MSI能力结构的32位或64位消息地址版本。
  • legacy端点被允许支持32位寻址,用于请求内存资源的基址寄存器。
  • legacy端点必须出现在由根复合体发起的一个层次结构域中。

1.2.2.2 PCI Express端点规则

  • 一个PCI Express端点必须是一个具有00h类型配置空间头的功能。
  • 一个PCI Express端点必须支持作为完成者的配置请求。
  • 一个PCI Express端点必须不依赖于操作系统对通过BAR(s)申请的I/O资源的分配。
  • 一个PCI Express端点必须不产生I/O请求。
  • PCI Express端点不得作为完成者支持锁定请求,也不得作为请求者产生锁定请求。必须编写符合PCI Express标准的软件驱动程序和应用程序,以防止在访问PCI Express端点时使用锁定语义。
  • 作为内存事务的请求者运行的PCI Express端点必须能够生成大于4GB的地址。
  • 如果请求中断资源,PCI Express端点需要支持MSI或MSI-X或两者。 如果实施MSI,PCI Express端点必须支持MSI能力结构的64位消息地址版本。
  • 通过BAR请求内存资源的PCI Express端点必须设置BAR的Prefetchable位,除非该范围包含具有读取副作用的位置或功能不允许写入合并的位置。
  • 对于PCI Express端点来说,对于所有具有Prefetchable位设置的BAR,必须支持64位寻址。对于所有没有预取位设置的BAR,允许32位寻址。
  • 一个BAR所要求的最小内存地址范围是128字节。
  • 一个PCI Express端点必须出现在由根复合体发起的一个层次结构域内。

1.2.3 交换机

交换机被定义为多个虚拟PCI到PCI桥接设备的逻辑组合,如图1-3所示。所有的交换机受以下基本规则的约束。

            图1-3 交换机的逻辑框图

  • 交换机在配置软件中显示为两个或多个逻辑PCI到PCI桥。
  • 交换机使用PCI桥机制转发交易;例如,基于地址的路由,除非参与组播。
  • 除了本文件中提到的情况,交换机必须在任何一组端口之间转发所有类型的事务层数据包(TLP)。
  • 必须按照规定支持锁定请求。交换机不需要支持下游端口作为锁定请求的启动端口。
  • 每个启用的交换机端口必须遵守流量控制规范。
  • 交换机不允许将一个数据包分割成更小的数据包,例如,一个具有256字节有效载荷的单一数据包不得被分割成两个各有128字节有效载荷的数据包。
  • 当同一虚拟通道上发生抢占时,交换机的入口端口(入站链路)之间的仲裁可以使用轮回或加权轮回来实现。
  • 端点(由00h类型的配置空间头表示)不得出现在交换机内部总线的配置软件中,作为代表交换机下游端口的虚拟PCI-to-PCI桥的对等物。

1.3 PCI Express分层概述

PCI Express用三个离散的逻辑层来指定架构:交易层、数据链接层和物理层。这些层中的每一个都被分为两个部分:一个处理出站(要传输)信息,一个处理入站(接收)信息,如图1-4所示。这种分层定义的根本目的是为了方便理解。但是,这种分层并不意味着一种特定的PCI Express实现。

        图1-4 High-Level分层图

PCI Express使用数据包在组件之间通信信息。数据包是在交易层和数据链路层中形成的,用于将信息从发送组件传送到接收组件。当传输的数据包流经其他层时,它们被扩展为处理这些层的数据包所必需的额外信息。在接收端,采用相反的过程,数据包从它们的物理层表示转化为数据链路层表示,最后(对于事务层数据包)转化为可由接收设备的事务层处理的形式。图1-5显示了交易层数据包信息在各层的流动情况。

                    图1-5 数据包在各层的流动情况

1.3.1 交易层

架构的上层是事务层。交易层的主要职责是组装和拆卸TLPs。TLPs用于通信事务,如读和写,以及某些类型的事件。事务层还负责管理TLPs的基于信用的流量控制。

每一个需要响应数据包的请求数据包都被实现为一个分割事务。每个数据包都有一个唯一的标识符,使响应数据包能够被引导到正确的发起人那里。数据包格式支持不同形式的寻址,这取决于事务的类型(内存、I/O、配置和消息)。数据包还可以有无窥探、宽松排序和基于ID的排序(IDO)等属性。

事务层支持四个地址空间:它包括三个PCI地址空间(内存、I/O和配置)并增加了消息空间。PCI Express使用消息空间来支持所有先前的边带信号,如中断、电源管理请求等,作为带内消息事务。可以把PCI Express消息事务看作是 "虚拟线路",因为它们的作用是消除目前在平台实现中使用的各种边带信号。

1.3.2 数据链路层

堆栈中的中间层,即数据链路层,是交易层和物理层之间的一个中间阶段。数据链路层的主要职责包括链路管理和数据完整性,包括错误检测和错误纠正。

数据链路层的传输端接受由事务层组装的TLP,计算并应用数据保护码和TLP序列号,并将其提交给物理层,以便在链路上传输。接收数据链路层负责检查收到的TLPs的完整性,并将其提交给交易层作进一步处理。在检测到TLP错误时,该层负责要求重发TLP,直到信息被正确接收,或确定链路失败。

数据链路层还产生和消耗用于链路管理功能的数据包。

1.3.3 物理层

物理层包括所有用于接口操作的电路,包括驱动器和输入缓冲器、并联到串行和串行到并行的转换、PLL(s)和阻抗匹配电路。它还包括与接口初始化和维护有关的逻辑功能。物理层以具体实施的格式与数据链路层交换信息。该层负责将从数据链路层收到的信息转换为适当的序列化格式,并以连接到链路另一端的设备兼容的频率和宽度在PCI Express链路上传输。

PCI Express架构有 "hooks",通过速度升级和先进的编码技术支持未来的性能提升。未来的速度、编码技术或媒体可能只影响物理层的定义。

 

 

 

文章来自专栏

服务器硬件

11 篇文章 1 订阅
0 评论
0/1000
评论(0) 发表评论
  • 0
    点赞
  • 0
    收藏
  • 0
    评论