DP读书:鲲鹏处理器 架构与编程(六)PCI Express 总线

这篇具有很好参考价值的文章主要介绍了DP读书:鲲鹏处理器 架构与编程(六)PCI Express 总线。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

PCI Express 总线

PCI Express(Peripheral Component Interconnect Express)是一种高速串行计算机扩展总线标准,原来的名称为“3GIO”,是由英特尔在2001年提出的。PCIe属于高速串行点对点双通道高带宽传输,所连接的设备分配独享通道带宽,不共享总线带宽,主要支持主动电源管理,错误报告,端对端的可靠性传输,热插拔以及服务质量(QOS)等功能。PCIe交由PCI-SIG(PCI特殊兴趣组织)认证发布后才改名为“PCI-Express”,简称“PCI-e”。PCI Express有多种规格,从PCI Express x1到PCI Express x32,能满足将来一定时间内出现的低速设备和高速设备的需求。

1. PCI Express 总线的特点

a. 高速差分传输

PCI Express总线的特点之一是高速差分传输。这种传输方式使用LVDS(Low Voltage Differential Signaling,低电压差分信号) 技术,允许多个设备通过一条高速数据线进行连接,从而实现更高的数据传输速率。PCI Express x16接口支持的最大数据传输速率可达16GB/s,足以满足各种高速设备的需求。

b. 串行传输

PCI Express总线另一个特点是串行传输。与传统的并行总线不同,PCI Express总线采用串行方式传输数据。这种传输方式具有更高的数据传输速率和更低的传输延迟。串行传输还可以减少所需的信号线数量,从而降低硬件成本和系统复杂性。

c. 全双工端到端连接

PCI Express总线的一个特点是全双工端到端连接。这意味着数据可以在两个方向上同时传输,从而提高了传输效率。这种连接方式是基于数据包的传输,可以实现类似计算机网络中的交换和路由功能。

在PCI Express总线中,每个设备都有自己的专用 通道(Lane),可以直接与其他设备进行通信。这种分布式通信架构提高了系统性能和可dB扩展性。全双工传输方式还可以减少传输延迟,提高数据传输速率。

总之,PCI Express总线通过全双工端到端连接实现了高性能、高带宽的数据传输。这种连接方式提高了传输效率和系统性能,适用于各种高速设备的应用场景。

d. 基于多通道的数据传输方式

PCI Express总线采用基于多通道的数据传输方式。这种传输方式允许多个设备通过一条高速数据线连接,从而实现更高的数据传输速率。PCI Express总线支持1、2、4、8、12、16和32通道的连接,以满足不同系统设备对数据传输带宽的不同需求。

基于多通道的数据传输方式可以提高数据传输的效率和速度。通过将数据分配到不同的通道中,可以同时处理多个数据流,从而减少传输延迟并提高系统性能。

此外,PCI Express总线还支持数据分通道传输模式。在这种模式下,数据可以在不同的通道中同时传输,从而实现更高的数据传输速率。例如,PCI Express x16接口可以实现最大16GB/s的数据传输速率,足以满足高速设备的需求。

总之,PCI Express总线采用基于多通道的数据传输方式,提高了数据传输的效率和速度,适用于各种高速设备的应用场景。

e. 基于数据包的传输

PCI Express总线采用基于数据包的传输方式。这种传输方式将数据封装在数据包中,并通过PCI Express总线进行传输。每个数据包都包含发送方的信息和接收方的信息,从而实现了高效的数据传输

基于数据包的传输方式具有以下优点:

1. 高效性:基于数据包的传输方式可以避免不必要的传输,从而提高了传输效率。
2. 灵活性和扩展性:基于数据包的传输方式可以灵活地支持不同的数据类型和数据长度,并且可以随着系统的扩展而扩展。
3. 支持QoS和虚拟通道:基于数据包的传输方式支持QoS(Quality of Service)和虚拟通道,可以实现优先级控制和特定数据流的传输。
4. 支持热插拔和电源管理:基于数据包的传输方式支持热插拔和电源管理,可以提高系统的可靠性和节能性能。

总之,PCI
Express总线采用基于数据包的传输方式,具有高效性、灵活性和扩展性,支持QoS和虚拟通道,以及热插拔和电源管理等功能,适用于各种高速设备的应用场景。

2. PCI Express 总线的组成与拓扑结构

a. 根复合体

PCI Express总线由多个组件组成,其中最重要的是根复合体(Root Complex)

根复合体是PCI Express总线中的一个关键组件,它负责将主机系统连接到PCI Express总线。根复合体通常由一个或多个**根端口(Root Port)**组成,每个根端口都可以连接一个或多个PCI设备。

根复合体还可以包含其他组件,例如串行总线(Serial Bus)中断控制器(Interrupt Controller) 等。串行总线用于连接多个设备,而中断控制器则负责处理中断请求。

PCI Express总线的拓扑结构可以根据具体应用场景进行调整。常见的拓扑结构包括星型、树型和Mesh型等。在星型拓扑中,所有设备都直接连接到根复合体;在树型拓扑中,设备可以按照层次结构进行连接,形成类似树的形状;在Mesh型拓扑中,设备之间可以有多条连接路径,从而提高了系统的可靠性和可扩展性。

总之,PCI Express总线由多个组件组成,其中最重要的是根复合体。根复合体负责将主机系统连接到PCI Express总线,并可以包含其他组件。PCI Express总线的拓扑结构可以根据具体应用场景进行调整,常见的拓扑结构包括星型、树型和Mesh型等。

b. PCI Express桥

除了根复合体之外,PCI Express总线还包括PCI Express桥。

PCI Express桥是PCI Express总线中的一个重要组件,它的作用是将PCI Express总线连接到其他类型的总线或设备。通过桥接,PCI Express总线可以与其他总线或设备进行通信和数据传输。

PCI Express桥可以连接不同类型的总线或设备,例如PCI总线、AGP总线、USB总线等。通过桥接,这些设备可以与PCI Express总线进行通信和数据传输。

在PCI Express总线的拓扑结构中,桥是常见的组件之一。通过桥接,可以将多个总线或设备连接在一起,形成一个更大的网络。这种网络可以是星型、树型或Mesh型等,具体取决于应用场景和系统设计。

总之,PCI Express总线中的另一个重要组件是PCI Express桥,它的作用是将PCI Express总线连接到其他类型的总线或设备,从而形成一个更大的网络。

c. 功能单元

PCI Express总线由以下几个主要功能单元组成:

  1. 根组件(Root Complex)。 根组件是PCI Express总线的一个关键组件,它负责将主机系统连接到PCI E xpress总线。根组件通常由一个或多个**根端口(Root Port)组成,每个根端口都可以连接一个或多个PCI设备。根组件还可以包含其他组件,例如串行总线(Serial Bus)中断控制器(Interrupt Controller)**等。
  2. 交换器(Switch)。 交换器是PCI Express总线中的一个重要组件,它的功能主要是为I/O总线提供输出端,并支持在不同终端设备间进行对等数据传输。交换器通常以软件的形式提供,包括多个逻辑PCI到PCI的桥连接,以及与传统PCI设备的兼容性。
  3. 终端设备(Endpoint)。 终端设备是PCI Express总线中的另一个重要组件,它可以被视为一个单独的设备,该设备通过PCI Express端口连接到总线上。终端设备通常具有高速数据传输能力,可以支持各种不同的数据类型和数据长度。

这些功能单元在PCI Express总线的拓扑结构中也扮演着重要的角色。例如,根组件可以形成一个星型或树型的拓扑结构,而交换器则可以在这个拓扑结构中提供更复杂的连接。同时,终端设备可以被视为拓扑结构中的节点,它们可以通过交换器进行通信和数据传输。

除了这些主要的功能单元外,PCI Express总线还包括其他一些组件,例如事务层、数据链路层和物理层等,这些组件提供了更高级别的功能和特性。

3. PCI Express 总线的层次结构

a. 层次结构

PCI Express总线采用分层设计,共分为四层,从下到上分别是物理层、数据链路层、处理层和软件层。

1. 物理层:物理层定义了电气和机械规范,包括线路规格、信号定义、传输速率等内容,它实现了比特流的传输。
2. 数据链路层:数据链路层负责在设备之间建立连接,并实现可靠的数据传输。数据链路层还处理错误检测和纠正,例如奇偶校验和冗余校验。
3. 处理层:处理层负责处理事务,例如数据包的封装、解封装和排序。处理层还负责处理各种请求类型,例如内存读/写请求、IO读/写请求等。
4. 软件层:软件层包括驱动程序和操作系统接口,它提供了标准的API接口,使得各种应用程序可以方便地使用PCI Express总线。

这种分层设计使得PCI Express总线具有灵活性和可扩展性,可以适应不同类型的应用需求。同时,分层设计也便于系统设计和管理,提高了系统的可靠性和稳定性。

b. 分组结构

PCI Express总线的分组结构是指数据包被分为多个组(Packet Group),每个组包含一个或多个数据包(Packet)。这种分组结构有助于提高数据传输的效率和可靠性。

在PCI Express总线的分组结构中,每个分组都包含以下信息:

1. 包头(Header):包头包含了该分组的元信息,例如分组的长度、类型、序列号等。
2. 数据段(Data):数据段包含了实际需要传输的数据,其长度由包头中的长度字段指定。
3. 帧间隔(Interframe Spacing):帧间隔是指在连续的两个帧之间插入的空闲时间,以保障总线稳定和避免数据冲突。

通过采用分组结构,PCI Express总线可以更好地处理数据传输过程中的各种问题,例如数据包的丢失、错误检测和纠正等。同时,分组结构也提高了数据传输的效率和可靠性,可以适应不同类型的应用需求。

4. PCI Express 总线的拓扑发现

PCI Express总线的拓扑发现是指通过一定的协议和机制,在系统中识别和确定PCI Express设备的连接关系和数据传输路径的过程。PCI Express总线采用了基于交换机和端点设备的拓扑结构,因此拓扑发现的结果可以反映这种结构的特点。

在PCI Express总线中,拓扑发现主要依赖于以下两个协议:

  1. PCI Express链路层协议:链路层协议定义了在PCI Express设备之间传输数据时所需的各种信号和消息,包括设备检测、配置、复位等操作。通过链路层协议,可以获取设备的链路状态和连接关系。
  2. PCI Express配置空间协议:配置空间协议定义了在设备初始化阶段,操作系统如何读取和配置设备的寄存器、接口、功能等信息。通过配置空间协议,可以获取设备的配置信息和能力。

在拓扑发现的过程中,通常需要执行以下步骤:

1. 设备检测:检测系统中是否存在PCI Express设备,以及设备的类型和数量。
2. 设备初始化:对设备进行初始化操作,包括分配设备号、设置设备参数等。
3. 设备枚举:通过读取配置空间协议中的设备寄存器和配置信息,获取设备的接口、功能、资源等信息。
4. 设备配置:根据设备的配置信息和能力,为设备分配必要的资源,并设置设备的参数。
5. 设备连接:通过链路层协议,检测设备的连接关系和链路状态,并建立设备之间的通信路径。

通过以上步骤,可以获取PCI Express总线的拓扑结构,包括设备的连接关系、设备的配置信息和数据传输路径等。这对于系统管理和应用程序开发都具有重要的意义。

5. PCI Express 总线的总线事务

PCI Express总线支持多种总线事务,包括存储器读写、IO读写、配置读写总线事务,以及Message消息总线事务等。

这些总线事务在PCIe设备之间传递数据时起到重要作用。例如,存储器读写事务用于直接操作硬件,产生总线周期实现数据传递;IO读写事务用于读写I/O端口的数据;配置读写事务用于读取或写入设备的配置信息;而Message消息事务则用于发送和接收消息类型的报文。

为了处理这些总线事务,PCI Express总线使用分层结构,其中事务层负责相应总线事务的转换。根据不同的事务类型,事务层会产生不同类型的TLP报文,并根据不同的路由方式进行数据转发。

graph TB
A[PCI Express总线]
B[南桥/北桥控制器]
C[设备]
D[I/O地址空间 (0x0000-0x3FFF)]
E[内存地址空间 (0xC0000000-0xF8000000)]
F[PCI总线编号 (Bus, Device, Function, Register)]
G[基址寄存器]
H[限制寄存器]
A -->|连接| B
B -->|映射到系统的I/O地址空间| D
B -->|映射到系统的内存地址空间| E
C -->|通过PCI总线编号进行寻址| F
C -->|提供基址寄存器和限制寄存器| G
C -->|提供基址寄存器和限制寄存器| H

6. PCI Express 总线的地址空间

PCI Express总线的地址空间分为两个部分:I/O地址空间和内存地址空间

I/O地址空间用于访问设备的I/O端口,其地址范围是0x0000-0x3FFF。这些地址通过南桥或北桥控制器映射到系统的I/O地址空间,并通过PCI总线编号(Bus, Device, Function和Register) 进行寻址。

内存地址空间用于访问设备的内存,其地址范围是0xC0000000-0xF8000000。这些地址通过南桥或北桥控制器映射到系统的内存地址空间,并通过PCI总线编号(Bus, Device, Function) 进行寻址。在映射过程中,设备需要向北桥或南桥控制器提供基址寄存器(Base Register)限制寄存器(Limit Register),以确定该设备所使用的内存范围。

需要注意的是,不同的操作系统和硬件平台可能对I/O地址空间和内存地址空间的映射方式有所不同,因此在进行系统设计时需要仔细考虑。

7. PCI Express 总线的中断机制

PCI Express总线中断机制与PCI总线类似,它支持传统的基于IRQ(Interrupt Request) 的中断方式,也引入了新的消息中断方式。

在传统的基于IRQ的中断方式中,每个设备有一个单独的IRQ线路,通过IRQ共享来减少中断的开销。这种方式在较老的PCI设备中比较常见。

在新的消息中断方式中,设备使用MSI(Message Signaled Interrupt)或 MSI-X(Message Signaled Interrupt eXtension) 发送中断请求到根设备。MSI使用32位消息地址和32位消息数据,而MSI-X使用更复杂的消息格式。这种方式可以提高中断处理的效率,适用于高性能、高吞吐量的设备。

在PCI Express总线中,中断控制器不再是必需的,根设备可以直接接收和处理中断请求。对于传统的基于IRQ的中断方式,中断控制器仍然需要,但可以通过PCI Express端点驱动程序进行配置和管理。

总之,PCI Express总线的中断机制支持传统基于IRQ的方式和新的消息中断方式,以满足不同设备的需要。

8. PCI Express 总线的差错处理和差错报告

PCI Express总线定义了三种错误报告方式:Completions、Poisoned Packet(又称为错误传递)和Error Message。这些错误类型可以通过设备控制寄存器中的相关位进行使能或者禁止,也可以通过设备状态寄存器相关位查询错误状态。

对于Completions错误,当Request在Completion阶段返回错误状态时,会通过Completion中的状态位向Request返回错误信息。

对于Poisoned Packet错误,当接收端收到一个已经被破坏的TLP数据包时,接收端会返回一个Poisoned
Packet错误,告知发送端该数据包已经被破坏。

对于Error Message错误,当出现致命错误或者某些特定类型的非致命错误时,可以通过Error Message报告错误信息。

对于链路错误,一般发生在物理层与数据链路层通信的过程中。对于Downstream的设备,如果链路上发生了Fatal错误,此时该设备并不能够向Root报告错误。这种情况下,需要Upstream设备向Root来报告错误。文章来源地址https://www.toymoban.com/news/detail-664921.html

class PCIExpressDevice {
   - 控制寄存器: ControlRegister
   - 状态寄存器: StatusRegister
   + 使能Completions错误()
   + 禁止Completions错误()
   + 使能PoisonedPacket错误()
   + 禁止PoisonedPacket错误()
   + 使能ErrorMessage错误()
   + 禁止ErrorMessage错误()
   + 查询错误状态(): ErrorStatus
}

class DownstreamDevice {
   + 向Root报告错误()
}

class UpstreamDevice {
   + 向Root报告错误()
}

class RootComplex {
   - 错误报告信息: ErrorReport
}

PCIExpressDevice --> ControlRegister
PCIExpressDevice --> StatusRegister
PCIExpressDevice --> ErrorStatus
PCIExpressDevice --> ErrorReport
DownstreamDevice --> UpstreamDevice
UpstreamDevice --> RootComplex
 +-------------------+              +----------------+              +----------------+
|    PCI Express    |              |   Root Complex  |              |    Device      |
|                   |              |                 |              |                |
| +---------------+ |   Req to     | +-------------+ |   Req to     |                |
| |   Endpoint      |----------->  | |  Downstream | |----------->  |                |
| |    Device       |     TLP      | |   Port/Link | |     TLP      |                |
| +---------------+ |              | +-------------+ |              |                |
|                   |              |                 |              |                |
+-------------------+              +-----------------+              +----------------+

到了这里,关于DP读书:鲲鹏处理器 架构与编程(六)PCI Express 总线的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • DP读书:鲲鹏处理器 架构与编程(十四)ACPI与软件架构具体调优

    ACPI (Advanced Configuration and Power Interface) 是一种由英特尔、微软、惠普、索尼等公司共同开发的电源管理标准。它提供了一种通用的电源管理接口,用于管理计算机系统的电源状态、性能和配置等方面。 在计算机系统中, ACPI负责处理电源管理事件 ,例如系统启动、关机、休

    2024年02月10日
    浏览(31)
  • DP读书:鲲鹏处理器 架构与编程(十二)鲲鹏软件实战案例Docker+KVM的部署

    配置云服务器需要执行以下步骤: 登陆云服务器,方法包括使用远程桌面连接工具和Web SSH连接工具。 选择合适的操作系统,推荐选择Linux操作系统。 进行网络设置。 安装宝塔Linux面板,以便方便地向云服务器传输文件。 安装code-server,实现在浏览器上访问vscode,编写代码。

    2024年02月10日
    浏览(35)
  • DP读书:鲲鹏处理器 架构与编程(十三)操作系统内核与云基础软件

    补更,因为前几天画图的原因… 鲲鹏处理器的软件生态是一个不断发展的软件生态,服务器本身也具有复杂度多样性,经过很长时间的发展服务器硬件有不同的操作系统方案,这些操作系统往往还实现了软件的分层组合,很难简单描述其 软件架构 。 本节从一个比较高的层次

    2024年02月10日
    浏览(30)
  • DP读书:鲲鹏处理器 架构与编程(七)ARMv8-A 体系结构

    大家好,我是DP,一名最近开始研究处理器与服务器的小白,以下是我在阅读 鲲鹏处理器 架构与编程 第二章 ARMv8-A体系结构 的笔记,希望能加深大家对该种架构的理解,但这是相当底层的原理,也是很多提供云原生的服务器底层架构。 2011年11月 ,ARM公司发布 首个支持64位指

    2024年02月12日
    浏览(30)
  • DP读书:不知道干什么就和我一起读书吧——以《鲲鹏处理器 架构与编程》中鲲鹏软件的构成为例

    虽然清楚知识需要靠时间沉淀,但在看到自己做不出来的题别人会做,自己写不出的代码别人会写时还是会感到焦虑怎么办? 你是否也因为自身跟周围人的差距而产生过迷茫,这份迷茫如今是被你克服了还是仍旧让你感到困扰?来分享一下吧! 我就读了几天书,就这样了。

    2024年02月09日
    浏览(30)
  • 处理器架构和配置

    成功之前我们要做应该做的事情,成功之后我们才可以做喜欢做的事情。 CPU 架构是 CPU 厂商给属于同一系列的 CPU 产品定的一个规范,主要目的是为了区分不同类型 CPU 的重要标示。市面上的 CPU 分类主要分有两大阵营,一个是 intel、AMD 为首的 复杂指令集 CPU,另一个是以 I

    2024年02月04日
    浏览(42)
  • ARM微处理器体系架构

    ARM(Advanced RISC Machine)微处理器体系架构是一种广泛应用于嵌入式系统和移动设备的处理器架构。它以其低功耗、高性能和高度可定制化等特点而闻名。本文将深入探讨ARM微处理器体系架构的原理、特点和应用场景。 以下是我整理的关于嵌入式开发的一些入门级资料,免费分

    2024年03月26日
    浏览(38)
  • 一文深入搞懂ARM处理器架构

    典型的微处理器由控制单元、程序计数器(PC)、指令寄存器(IR)、数据通道、存储器等组成 。 指令执行过程一般分为:   取指: 从存储器中获得下一条执行的指令读入指令寄存器; PC: 程序计数器, 总是指向下一条将要执行的指令; IR: 指令寄存器,用于保持已取得指令

    2024年04月28日
    浏览(36)
  • ARM架构版本及处理器系列详细介绍

    ARM是一家微处理器行业的知名企业,该企业设计了大量高性能、廉价、耗能低的RISC (精简指令集)处理器,它只设计芯片而不生产。ARM的经营模式在于出售其知识产权核(IP core),将技术授权给世界上许多著名的半导体、软件和OEM厂商,并提供技术服务。         ARM的版本

    2024年02月16日
    浏览(33)
  • RISC-V架构的开源处理器分析

    摘要: RISC-V架构本身面积小、性能较高,最为关键的是这一架构本身功耗较低且作为全新的开源精简指令集,无论是技术还是产品都得到了迅速的发展,效果突出。基于此,本文深入研究RISC-V架构开源处理器内部情况,明确不同模块的功能以及运行方式,并且围绕着实际案例

    2024年02月06日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包