前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PCIe(一)、PCIe PIO分析一

PCIe(一)、PCIe PIO分析一

作者头像
根究FPGA
发布2020-06-30 11:06:54
2.8K0
发布2020-06-30 11:06:54
举报
文章被收录于专栏:根究FPGA根究FPGA

一、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。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-02-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 根究FPGA 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、PCIe基础知识
    • 1.1 关于接口
      • 1.2 TLP包
        • 1.2.1 AXI-Stream总线上的数据
        • 1.2.2 TLP头的格式
        • 1.2.3 TLP的路由
      • 1.3 32bit与64bit操作
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档