PCIe专题学习——2.0

本文介绍了PCIe协议中的事务层,包括其在数据传输过程中的作用,非发布和已发布总线事务的区别,以及流量控制和虚拟通道管理等特性。后续将深入探讨TLP、事务排序等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

PCIe Transaction layer事务层概述

上篇我们对PCIe的一些基础概念做了一个宏观的介绍,了解了PCIe是一种封装分层协议(packet-nased layered protocol),主要包括事务层(Transcation layer),数据链路层(Data link layer)和物理层(physical layer)

一:事务层概述

在PCIe体系结构中,数据报文首先在设备的核心层(Device Core)中产生,然后再经过该设备的事务层(Transaction Layer),数据链路层(Data Link Layer)和物理层(Physical Layer)最终发送出去,而接收端的数据也需要通过物理层,数据链路和事务层,并最终达到Device Core。

 事务层的主要职责可以概述为:

事务层是PCIe总线层级结构的最高层,该层次将接收PCIe设备核心层的数据请求,并将其转换为PCIe总线事务,PCIe总线使用的这些总线事务在TLP头中定义。

PCIe总线集成了PCI/PCI-X总线的大多数总线事务,如存储器读写(Memory Read/Write),I/O读写,配置读写总线事务,并增加了Message总线事务和原子操作等总线事务。

扩展:PCIe中有两大类总线事务:Non-Posted和Posted:

Non-posted:需要completion返回响应包

Posted:不需要completion返回响应包

在PCIe总线中,Non-Posted总线事务分两部分进行,首先是发送端向接收端提交总线读写请求,之后接收端再向发送端发送完成(completion)报文,PCIe总线使用Splite传送方式处理所有Non-posted总线事务,存储器读,I/O读写和配置读写这些Non-Posted总线事务都使用Splite传送方式。

PCIe的事务层还支持流量控制(Flow control)和虚通道管理(VIrtual channel management)等一系列特性,而PCI总线不支持这些新的特性。

在PCIe总线中,不同的总线事务采用的路由方式不相同,PCIe总线使用的数据报文首先在事务层中形成,这个数据报文也被称为事务层数据报文,即TLP,TLP在经过数据链路层时被加上Sequence Number前缀和CRC后缀,然后发向物理层。

本文主要是针对PCIe的事务层作一个大致的表述,后续章节会针对事务层主要的功能TLP,Flow Control,Transaction Ordering等内容进行详细的介绍,敬请期待。

OBJECTIVE OF THE SPECIFICATION.................................................................................... 21 DOCUMENT ORGANIZATION ................................................................................................ 21 DOCUMENTATION CONVENTIONS...................................................................................... 22 TERMS AND ACRONYMS........................................................................................................ 23 REFERENCE DOCUMENTS...................................................................................................... 29 1. INTRODUCTION ................................................................................................................ 31 1.1. A THIRD GENERATION I/O INTERCONNECT ................................................................... 31 1.2. PCI EXPRESS LINK......................................................................................................... 33 1.3. PCI EXPRESS FABRIC TOPOLOGY .................................................................................. 35 1.3.1. Root Complex........................................................................................................ 35 1.3.2. Endpoints .............................................................................................................. 36 1.3.3. Switch.................................................................................................................... 39 1.3.4. Root Complex Event Collector.............................................................................. 40 1.3.5. PCI Express to PCI/PCI-X Bridge........................................................................ 40 1.4. PCI EXPRESS FABRIC TOPOLOGY CONFIGURATION....................................................... 40 1.5. PCI EXPRESS LAYERING OVERVIEW.............................................................................. 41 1.5.1. Transaction Layer................................................................................................. 42 1.5.2. Data Link Layer .................................................................................................... 42 1.5.3. Physical Layer ...................................................................................................... 43 1.5.4. Layer Functions and Services............................................................................... 43 2. TRANSACTION LAYER SPECIFICATION ..................................................................... 47 2.1. TRANSACTION LAYER OVERVIEW.................................................................................. 47 2.1.1. Address Spaces, Transaction Types, and Usage................................................... 48 2.1.2. Packet Format Overview ...................................................................................... 50 2.2. TRANSACTION LAYER PROTOCOL - PACKET DEFINITION............................................... 51 2.2.1. Common Packet Header Fields ............................................................................ 51 2.2.2. TLPs with Data Payloads - Rules ......................................................................... 54 2.2.3. TLP Digest Rules .................................................................................................. 56 2.2.4. Routing and Addressing Rules .............................................................................. 56 2.2.5. First/Last DW Byte Enables Rules........................................................................ 59 2.2.6. Transaction Descriptor......................................................................................... 61 2.2.7. Memory, I/O, and Configuration Request Rules................................................... 66 2.2.8. Message Request Rules......................................................................................... 69 2.2.9. Completion Rules.................................................................................................. 80 2.3. HANDLING OF RECEIVED TLPS...................................................................................... 82 2.3.1. Request Handling Rules........................................................................................ 85
### PCIE1.0PCIE2.0的主要区别及性能对比 #### 主要技术参数差异 PCI Express (PCIe) 技术从1.0版本发展至2.0版本,在多个方面进行了改进。最显著的变化在于数据传输速率的提升。具体来说,PCIe 2.0 将每条lane的数据传输速度由原来的2.5 GT/s 提升到了5.0 GT/s[^3]。 然而需要注意的是,由于采用了不同的编码方案——PCIe 1.0 使用8b/10b 编码而PCIe 2.0继续沿用了这种编码方式——实际有效带宽并非简单地翻倍增长。对于PCIe 2.0而言,考虑到编码开销后的真实传输效率为4 Gbps 每lane, 而不是名义上的5 Gbps。 #### 性能指标比较 当考虑x16配置下的总线宽度时: - **PCIe 1.0**: 双向理论最大吞吐量可达约4 GBps(单向约为2 GBps) - **PCIe 2.0**: 同样条件下双向峰值可达到大约8 GBps(单向接近于4 GBps) 这意味着在同一时间内,基于相同数量lanes的情况下,第二代标准能够处理两倍以上的数据流量。 此外,在功耗管理等方面也有所增强,使得设备可以在不牺牲太多效能的前提下降低能耗水平[^1]。 ```python # 计算不同版本下x1 lane的有效带宽 def calculate_effective_bandwidth(version): if version == "1.0": raw_rate = 2.5 # GT/s elif version == "2.0": raw_rate = 5.0 # GT/s effective_bitrate = raw_rate * 8 / 10 # Considering the encoding overhead return f"{effective_bitrate:.1f} Gbps" print(f"PCIe 1.0 Effective Bandwidth per Lane: {calculate_effective_bandwidth('1.0')}") print(f"PCIe 2.0 Effective Bandwidth per Lane: {calculate_effective_bandwidth('2.0')}") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值