PCIE配置

PCIE 性能

下表列举了各代PCIE的性能,可见 PCIE总的传输速率 = lane数 * 单lane带宽


PCIe架构

PCIe和PCI最大的改变是由并行转为串行,并通过差分信号传输。

BAR(BaseAddress Register)
DW(32bit)

  • user_lnk_up:当该信号拉高时表示PCIE连接了一个Host设备

PCIE 传输的数据包(TLP)格式

PCIe属于封装分层协议,数据报文在Device Core产生之后,在分别经过事务层(Transaction Layer)、数据链路层(Data Link Layer)、物理层(Physical Layer)之后会依次被增加ECRC,Sequence Number,LCRC,Start,END等数据块。


该链接有计算吞吐量的方式
https://blog.csdn.net/zhuzongpeng/article/details/78949249

存储器的读写请求TLP
  • 1.存储器读请求TLP和读完成TLP
    当PCIe主设备,RC或者EP,访问目标设备的存储器空间时,使用Non-Posted总线事务向目标设备发出存储器读请求TLP,目标设备收到这个存储器读请求TLP后,使用存储器读完成TLP,主动向主设备传递数据。当主设备收到目标设备的存储器读完成TLP后,将完成一次存储器读操作。

  • 2.存储器写请求TLP
    在PCIe总线中,存储器写使用Posted总线事务。PCIe主设备仅使用存储器写请求TLP即可完成存储器写操作,主设备不需要目标设备的回应报文。

    1. 配置读写请求TLP和配置读写完成TLP
      从总线事务的角度上看,配置读写请求操作的过程与I/O读写操作的过程类似。配置读写请求TLP都需要配置读写完成作为应答,从而完成一个完成的配置读写操作。
TLP包结构:

在PCIe总线中,存储器写请求TLP使用Posted数据传送方式。而其他与存储器和I/O相关的报文都使用Split方式进行数据传送,这些请求报文需要完成报文,通知发送端之前的数据请求报文已经被处理完毕。存储器读写请求TLP使用地址路由方式进行数据传递,在这类TLP头中包含Address字段,Address字段具有两种地址格式,分别是32位和64位地址。在存储器读写和I/O读写请求的第3和第4个双字中,存放TLP的32或者64位地址。存储器、I/O和原子操作读写请求使用的TLP头较为类似。

  • 1.length字段
    在存储器读请求TLP中并不包含Data Payload,在该报文中,Length字段表示需要从目标设备数据区域读取的数据长度;而在存储器写TLP中,Length字段表示当前报文的DataPayload长度。Length字段的最小单位为DW。当该字段为n时,表示需要获得的数据长度或者当前报文的数据长度为n个DW,其中0£n£0x3FF。值得注意的是,当n等于0时,表示数据长度为1024个DW。

三种常用的TLP类型

  • Memory Read Request
  • Memory Write Request
  • Comple-tion with Data


PCIe的endpoint的接口已经被组织成了4个AXI4-Stream接口和许多其他的控制信号:

Completer接口常常被用来对应FPGA的slave接口
  • Completer Request(CQ):用来接受来自host的内存读写指令
  • Completer Completion(CC):读指令的结果常常被打包成一个COMPLETION TLP 经由CC接口回传到host端
当FPGA在DMA transfer中作为一个master时,RC与RQ被利用起来
  • Requester Request (RQ) : RQ用来发送读写memory请求
  • Requester Completion (RC) : RC用来接受前一个读请求的完成信号

TLP中与数据负载相关的参数

在PCIe总线中,有些TLP含有Data Payload,如存储器写请求、存储器读完成TLP等。在PCIe总线中,TLP含有的Data Payload大小与Max_Payload_SizeMax_Read_Request_Size和RCB参数相关。

  • RC和EP的概念
    RC可以理解成PCIe host bridge, 有时也叫PCIe控制器,完成CPU域地址到PCI域
    地址的转换,RC在Soc的内部。switch是一个独立的器件,和RC的接口相连,提供扩展。
    EP是具有PCIe接口的网卡,SATA控制器等。

RC (PCI Express root complex) ,在RC模式时,使用PCIE类型1配置头
EP (endpoint device)工作方式,在EP模式时,使用PCIE类型0配置头

Max_Payload_Size参数 )

PCIe总线规定在TLP报文中,数据有效负载的最大值为4KB,但是PCIe设备并不一定能够发送这么大的数据报文。PCIe设备含有“Max_Payload_Size”和“Max_Payload_SizeSupported”参数,这两个参数分别在Device Capability寄存器和Device Control寄存器中定义。
而Max_Payload_Size参数的大小与PCIe链路的传送效率成正比,该参数越大,PCIe链路带宽的利用率越高,该参数越小,PCIe链路带宽的利用率越低。


Max_Read_Request_Size参数

Max_Read_Request_Size参数在Device Control寄存器中定义。该参数与存储器读请求TLP的Length字段相关,其中Length字段不能大于Max_Read_Request_Size参数。在存储器读请求TLP中,Length字段表示需要从目标设备读取多少数据。
值得注意的是,Max_Read_Request_Size参数与Max_Payload_Size参数间没有直接联系,Max_Payload_Size参数仅与存储器写请求和存储器读完成报文相关。


中断

在PCI总线中,所有需要提交中断请求的设备,必须能够通过INTx引脚提交中断请求,而MSI机制是一个可选机制。而在PCIe总线中,PCIe设备必须支持MSI或者MSI-X中断请求机制,而可以不支持INTx中断消息。在PCIe总线中,MSI和MSI-X中断机制使用存储器写请求TLP向处理器提交中断请求。
与Legacy中断方式相比,PCIe设备使用MSI或者MSI-X中断机制,可以消除INTx这个边带信号,而且可以更加合理地处理PCIe总线的“序”。目前绝大多数PCIe设备使用MSI或者MSI-X中断机制提交中断请求。

DMA的过程

RT->EP DMA(存储器读):

1、驱动程序向操作系统申请一片物理连续的内存;

2、主机向该地址写入数据;

3、主机将这个内存的物理地址告诉FPGA;

4、FPGA向主机发起读TLP请求—连续发出多个读请求;

5、主机向FPGA返回CPLD包—连续返回多个CPLD;

6、FPGA取出CPLD包中的有效数据;

7、FPGA发送完数据后通过中断等形式通知主机DMA完成;

EP->RT DMA(存储器写):

1、驱动程序向操作系统申请一片物理连续的内存;

2、主机将这个内存的物理地址告诉FPGA;

3、FPGA向主机发起写TLP请求,并将数据放入TLP包中—连续发出多个写请求;

4、FPGA发送完数据后通过中断等形式通知主机DMA完成;

5、主机从内存中获取数据;

参考下文:https://blog.csdn.net/eagle217/article/details/81736822

DMA 操作

AXI-MM transfer for H2C

AXI-MM transfer for C2H

Descriptors

DMA Subsysterm for PCIe用了一系列的descriptors,这些descriptors组成了一个链接列表。它们用来指明DMA transfers的源地址。目的地址以及DMA transfer的长度。他们由驱动程序产生。并且存储在host 内存中。DMA中的控制器会发起抓取descriptor lists来完成初始化并开始执行DMA操作。描述符的结构如下:




每个DMA通道都会有自己的descriptors列表。DMA读取到一个descriptor之后会提取其中的src_addr与Dst_addr,然后根据这些地址来完成memory transfer。完成当前descriptor对应的transfer之后。DMA 通道会根据当前descriptor的Nxt_addr来抓取下一个descriptor。而且descriptor中的Nxt_adj记录了列表中还剩下未完成的descriptor的个数。一旦为0,那么当前descriptor的control字段中的STOP位会置高。DMA就会停止抓取descriptor。

DMA channel在在每次的抓取descriptor的请求中都会尽可能抓取最多的descriptors。这个数目被MRRS限制。也被descriptors buffer的容量限制


DMA有Bit_width * 512深的FIFO来存储所有descriptor.这个FIFO是所有通道通用的

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,185评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,445评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,684评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,564评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,681评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,874评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,025评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,761评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,217评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,545评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,694评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,351评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,988评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,778评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,007评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,427评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,580评论 2 349