pcie接口介绍

注:以下内容主要参考《PCI Express System Architecture》文档,下载地址:https://www.mindshare.com/Books/Titles/PCI_Express_System_Architecture

一、PCIe接口的发展历程

  PCI-Express(peripheral component interconnect express)是一种高速串行计算机扩展总线标准,它原来的名称为“3GIO”,是由英特尔在2001年提出的,旨在替代旧的PCI,PCI-X和AGP总线标准。pci或pcie接口在pc机上很常见,显卡、网卡、声卡都是通过pci或在pcie接口跟cpu连接的。

  

  PCIe是有PCI和PCI-X发展而来,如下表所示:

  

 PCIe的发展历程如下图所示:

 

二、PCIe 通讯协议

2.1 PCIe层划分

PCIe总线的层次组成结构与网络中的层次结构有类似之处,但是PCIe总线的各个层次都是使用硬件逻辑实现的。在PCIe体系结构中,数据报文首先在设备的核心层(Device Core)中产生,然后再经过该设备的事务层(Transaction Layer)、数据链路层(Data Link Layer)和物理层(Physical Layer),最终发送出去。而接收端的数据也需要通过物理层、数据链路和事务层,并最终到达Device Core。

1 事务层

        事务层定义了PCIe总线使用总线事务,其中多数总线事务与PCI总线兼容。这些总线事务可以通过Switch等设备传送到其他PCIe设备或者RC。RC也可以使用这些总线事务访问PCIe设备。 

       事务层接收来自PCIe设备核心层的数据,并将其封装为TLP(Transaction Layer Packet)后,发向数据链路层。此外事务层还可以从数据链路层中接收数据报文,然后转发至PCIe设备的核心层。

        事务层的一个重要工作是处理PCIe总线的“序”。在PCIe总线中,“序”的概念非常重要,也较难理解。在PCIe总线中,事务层传递报文时可以乱序,这为PCIe设备的设计制造了不小的麻烦。事务层还使用流量控制机制保证PCIe链路的使用效率。有关事务层的详细说明见第6章。

2 数据链路层

        数据链路层保证来自发送端事务层的报文可以可靠、完整地发送到接收端的数据链路层。来自事务层的报文在通过数据链路层时,将被添加Sequence Number前缀和CRC后缀。数据链路层使用ACK/NAK协议保证报文的可靠传递。

        PCIe总线的数据链路层还定义了多种DLLP(Data Link Layer Packet),DLLP产生于数据链路层,终止于数据链路层。值得注意的是,TLP与DLLP并不相同,DLLP并不是由TLP加上Sequence Number前缀和CRC后缀组成的。

3 物理层

        物理层是PCIe总线的最底层,将PCIe设备连接在一起。PCIe总线的物理电气特性决定了PCIe链路只能使用端到端的连接方式。PCIe总线的物理层为PCIe设备间的数据通信提供传送介质,为数据传送提供可靠的物理环境。

        物理层是PCIe体系结构最重要,也是最难以实现的组成部分。PCIe总线的物理层定义了LTSSM(Link Training and Status State Machine)状态机,PCIe链路使用该状态机管理链路状态,并进行链路训练、链路恢复和电源管理。

         PCIe总线的物理层还定义了一些专门的“序列”,有的书籍将物理层这些“序列”称为PLP(Phsical Layer Packer),这些序列用于同步PCIe链路,并进行链路管理。值得注意的是PCIe设备发送PLP与发送TLP的过程有所不同。对于系统软件而言,物理层几乎不可见,但是系统程序员仍有必要较为深入地理解物理层的工作原理。

数据包在各个层的处理如下所示:

 

 

 二、PCIe主要特性

2.1 PCIe事务层协议

  PCIe设备之间的数据是是以数据包的形式传递的,事务层的包为Transaction Layer packets (TLPs),事务层按照事务类型可分为存储器读事务、存储器写事务、存储器读锁、IO读、IO写、读配置、写配置、信息事务。如下表所示:

Non-Posted模式:请求者发送一个LTP请求包给完成者,完成者随后需要返回一个LTP完成包给请求者,这样请求者就能知道完成者成功接收到了信息。

Posted模式:请求者发送一个LTP请求包给完成者,完成者不需要返回一个LTP完成包给请求者,这种方式请求者无法知道完成者成功接收到了信息。

2.2 PCIe TLP包类型

  TLP数据包类型有以下几种:

 

Non-Posted模式的TLP包含memory read request (MRd), IO readrequest (IORd), and configuration read request type 0 or type 1 (CfgRd0,CfgRd1) TLPs,交互方式如下所示:

 Post模式的TLP包含

Memory Write Request(MWr)、Message Request without Data(MSG)、Message Request with Data(MsgD)

 下面是一个传输的例子:

 

 

 

2.3 PCIe路由形式

   不同与PCI和PCI-X用共享总线的方式,PCIe使用路由的方式完成数据传输

 

2.4 PCIe 协议层次划分

 

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2021-09-26 20:55  YYFaGe  阅读(10029)  评论(0编辑  收藏  举报