PCIe(一)、PCIe PIO分析一

2020-06-30 11:06:54 浏览数 (2)

一、PCIe基础知识

1.1 关于接口

PCIe2x接口,对比其他系列,该接口包含2对发送与接收接口,

数据部分包含双向八个接口:

PETp0与PETn0:发送器差动线对,通道0

PETp1与PETn1:发送器差动线对,通道1

PERp0与PERn0:接收器差动线对,通道0

PERp1与PERn1:接收器差动线对,通道1

故链路宽度为2,有几对链路差分对链路宽度即为多大。

1.2 TLP包

1.2.1 AXI-Stream总线上的数据

在赛灵思7系列FPGA中,使用AXIStream总线进行通信,PCIe的TLP包使用AXI总线传输,在AXI总线上数据大端对齐,即高位数据在地址的高位,在传输时AXIS总线上的数据形式:

图1.1 3DW_TLP包

图1.2 4DW_TLP包

What’s more,TLP是Transaction Layer Packet事务层包的检测,关于其详细内容可查看PICe的物理结构,主要是事务层(TransactionLayer)、数据链路层(Data LinkLayer)和物理层(PhysicalLayer)。

事务(处理)层:高层事务源事务源与传送设备的设备核心,结束于接收设备的设备核心,处理层是组装出站处理层数据包的起点,也是接收层拆解入站TLP的终点。在发送数据时,处理层根据设备核心的请求构建TLP头、数据有效载荷和摘要。在发送TLP给数据链路层之前,先使用流控制信任和排列规则,也就是查看接收方有没有足够的接收信用(空间),排列规则就是对任务进行类似优先级处理,确保数据发送的有效执行。

数据链路层:在接收来自事务层的TLP时候,会给其分配一个序列号,并且计算该TLP的链路CRC(包含序列号),然后将TLP传送到物理层。

物理层:进行字节拆分、加扰、编码和串行处理,并在数据包上添加STP和END控制(K)字符,之后从链路的发送端发出数据包。

接收器对数据的处理即为以上的反向操作,但是数据链路层计算CRC检查接受的数据出错时,接收器的数据链路层会发出一个Nack DLLP,通知发送器数据发送错误,此时保存在发送器的数据链路层重放缓冲区的TLP副本就会再次处理并进行发送。

1.2.2 TLP头的格式

上图中标准的TLP包中包含TLP头、TLP数据(DATA)和TLP Digest(摘要)。R表示reserved,保留。

TLP头中,根据头可以确定的事物参数有:事务类型、预期的接受者的地址和ID等、传送的有效数据负载大小(单位:DW)、顺序属性、缓存一致性属性、流量类别。

TLP数据(DATA):可选字段,0~1024DW,0~4kb。

TLP Digest(摘要):可选,头中的TD位决定,大小总是一个DW(32bit),用于ECRC和数据中毒。

Fmt Type:组合表示传输的TLPpacket的类型。

TC:表示流量类别,从流量类别0~流量类别7,即000~111,用于在进行传输时进行VC传输等级仲裁。

TH:为1时表示当前TLP中含有TPH(没搞懂什么作用)

TD:是否有TLP摘要

EP:数据负载是否有效,poisoned

AT:地址转换,有PCIe总线的地址转换相关(也没太搞懂)

Attr:属性,位于字节2的[5:4],位[5]设置是否采用灵活的顺序,当设置为1时,对于此TLP使用灵活的顺序(Realxed-order).

在使用强序模型时,在数据的整个传送路径中,PCIe设备在处理相同类型的TLP时,如PCIe设备发送两个存储器写TLP时,后面的写TLP必须等待前一个存储器写TLP完成后才能被处理,几遍当前报文在传输过程中阻塞,后一个报文也必须等待。但是对于不同类型的TLP间可以乱序通过同一条PCIe链路。

在使用Realaxed Ordering模型时,后一个写TLP可以越过前一个存储器写TLP提前执行,从而能提高PCIe总线利用率。

Attr的位[1],表示No Snoop Attribute,该位为0时表示当前TLP所传送的数据在通过FSB时需要和Cache保持一致。

1.2.3 TLP的路由

TLP的路由指的是TLP通过Switch或者PCIe桥片时采用哪一条路景,最终到达EP或者RC(Root Complex,跟联合体)的方法,一共有三种:基于地址的路由、基于ID的路由和隐式路由方式。

基于地址路由:存储器和IO读写请求。

基于ID路由:配置读写报文、Cpl和CplD报文,该方式使用PCIe总线好进行路由路径 选择,在switch或者多端口RC的P2P(PCI to PCI)桥配置空间中,使用PCI总线号进行路由路径的选择。

隐式路由:Message报文的传递,指的是从下游端口到上游端口进行数据传递所使用的的路由方式,或者用于RC向EP发出广播报文。注意和物理层通信的控制字K字符区分。

1.3 32bit与64bit操作

寻址空间一般指的是CPU对于内存寻址的能力,也就是最多用到多少个内存的问题,数据在RAM中的存放是有规律的,CPU在运算时根据地址寻找数据的过程就是寻址操作,但是如果地址太多就超出了CPU的寻址能力。

CPU的寻址能力以字节为单位,如32位寻址的CPU可以寻址2的32次方大小的地址也就是4Gb,1kb=1024byte,1mb=1024kb,1gb=1024mb。

0 人点赞