一、什么是PCIe
PCIe,全称Peripheral Component Interconnect Express,是一种高速串行计算机扩展总线标准。简单来说,它就是让电脑硬件之间通信更快的一种技术。
传输方式
PCIe使用全双工传输,即TX和RX都采用串行差分信号进行数据传输。这样,数据可以同时双向传输,大大提高了传输效率。
Lane
一条Lane由一对TX差分线和一对RX差分线组成。理论上,可以有2的n次方条Lane,最多支持32条Lane。Lane越多,带宽越高。
带宽
PCIe 4.0的最高时钟频率是16GHz,一条Lane的带宽约为1.969GB/s。这意味着,PCIe 4.0的带宽是非常惊人的。
发送端和接收端
发送端将原始数据包封装成协议规定的格式,再转化成串行数据流发出。接收端将串行数据流收集后,按照协议规定逆向解析出原始的数据包。
PCIe与PCI的区别
PCIe使用的串行传输方式取代了PCI的并行传输方式。因为并行总线在时钟频率和布线方面会有很多限制,而高速串行在很多领域有着取代传统并行的趋势。
二、PCIe结构拓扑
Root Complex(RC)
RC是PCIe树的根,连接CPU、Memory子系统,并可以连接多个PCIe端口。
Switch
Switch可以将一个PCIe端口转换成多个PCIe端口。
Endpoint
PCIe终端设备成为Endpoint,可以挂在RC上,也可以挂在Switch上。
三、PCIe封/拆包流程
一个原始的数据包通过Transaction、Data Link、Physical三层逻辑的处理,变成了可以发送的包。反之,接收的包也可以通过这三层逻辑解出原始的数据包。
四、各层逻辑功能
事务层
PCIe上的通信是基于Transaction的。根据地址空间不同,Transaction可以分为Memory、I/O、Configuration、Message四类。
Prefixes
Prefixes是Header的扩展,可以省去,也可以有一个或多个。
Header
Header包含了Fmt、Type、TC、LN、TH、TD、EP、Attr[2] & Attr[5:4]、AT、Length、Transaction ID、字节使能等重要信息。
地址
Transaction的路由规则有三种方式:基于地址、基于ID、隐式路由。
Payload
要传输的数据。
Digest
如果Header中的TD有效,会有一个DW的ECRC。
链路层
主要是为了确保TLP传输的可靠性,在TLP头部增加了序列号,在TLP尾部增加了校验。
物理层
Logical Sub-Block
主要实现发送逻辑和接收逻辑。
Electrical Sub-Block
主要实现差分信号的收发。
本文只是对PCIe 4.0协议的概述,更详细的内容,请关注「新派编程网」(www.xjpbg.com)的后续文章。
——「新派编程网」资深编辑 林译川 敬上
