PCIE总线协议

PCIE总线(协议简述)

PCIe 规范

设备的设计采用分层的结构 有事务层数据链路层物理层组成,各层有都分为发送接收两功能块。
在发送端,应用程序(设备核A)在事务层形成事务层包(TLP——Transaction Layer Package),储存在发送缓冲器里,等待推向下层。在数据链路层,在TLP 包上再串接一些附加信息,这些信息是对方接收TLP 包时进行错误检查要用到的,形成数据链路层包(DLLP——Data Link Layer Package);在物理层,对DLLP 包进行编码,占用链路中的可用通道,从发送器发送出去。

在接收端,实际上是发送端的“逆”过程。如果说发送端是在不断组包,那么接收端就是不断的拆包,最后提取出有用的数据信息供B设备的应用程序使用。

在这里插入图片描述

名称 含义
带宽 数据的传送速率 1秒钟传送的数据大小
延时 传送处理一个数据单元所需要的时间
PCIe总线的带宽 每秒钟传送的“TLP中有效数据”的大小 PCIe总线的有效带宽 ( 去掉物理层8/10b转换,PCIe总线的协议开销、TLP Payload的大小、传送延时、流量控制 )

计算双向延时。
在这里插入图片描述
存储器写请求TLP使用Posted总线事务
存储器读请求TLP使用Split总线事务

流水线技术 掩盖数据传送中的延时,提高带宽
在PCIe设备中,通常使用Ring Buffer技术,实现多路DMA读写操作的并发执行

使用了Interrupt Swizzling技术将来自PCIe设备的中断请求平均分配到I/O APIC几个引脚中.

PCIe的TLP(Transaction Layer Packet)结构 事务层数据包
三部分 Header,Data和CRC 生于发送端的事务层(Transaction Layer),终于接收端的事务层。
每个TLP都有一个Header 内容包括发送者的相关信息、目标地址(该TLP要发给谁)、TLP类型(前面提到的诸如Memory read,Memory Write之类的)、数据长度(如果有的话)
Data Payload域,用以放有效载荷数据 不是必须 一个TLP最大载重是4KB,数据长度大于4KB的话,就需要分几个TLP传输。可以设置不加CRC。

每个设备在PCIe系统中都有唯一的ID,该ID由总线(Bus)、设备(Device)、功能(Function)三者唯一确定。这个后面也会专门讲,这里只需知道一个PCIe组成有唯一的ID,不管是RC, Switch还是Endpoint。

在PCIe总线中,存储器写TLP使用Posted总线传送方式,实现DMA写操作只需要使用存储器写TLP。 存储器读操作使用Split总线传送方式,一个DMA读过程由EP向RC发送“存储器读请求TLP”,之后再由RC使用“存储器读完成TLP”将数据传递给EP。

猜你喜欢

转载自blog.csdn.net/qq_44710568/article/details/131801146