CN115617722B - 实现多pcie设备共享dma链表的系统及方法 - Google Patents
实现多pcie设备共享dma链表的系统及方法 Download PDFInfo
- Publication number
- CN115617722B CN115617722B CN202211545781.3A CN202211545781A CN115617722B CN 115617722 B CN115617722 B CN 115617722B CN 202211545781 A CN202211545781 A CN 202211545781A CN 115617722 B CN115617722 B CN 115617722B
- Authority
- CN
- China
- Prior art keywords
- dma
- data
- fifo
- tlp
- address
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0026—PCI express
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Bus Control (AREA)
Abstract
本发明公开了实现多PCIE设备共享DMA链表的系统及方法,涉及数据通信技术领域,包括系统内存地址映射表、资源分配模块、多个事务层数据包TLP发送引擎和DMA完成链表,其中:系统内存地址映射表的每个地址对应映射一段上位机系统内存的DMA地址;资源分配模块轮询TLP发送引擎的FIFO状态执行仲裁操作,将数据和地址写入选中的TLP发送引擎的FIFO;在FIFO非空时,从FIFO读取数据组成TLP发给PCIE设备端,在FIFO的中断标志位置位时,发完当前数据后产生一个完成表项,写入DMA完成链表,触发中断上位机。本发明实现更高性能的传输性能,充分利用了上位机资源,上位机驱动程序无需再数据重组。
Description
技术领域
本发明涉及数据通信技术领域,具体的说,是一种实现多PCIE设备共享DMA链表的系统及方法。
背景技术
PCIE(PCI-Express,peripheral component interconnect express,高速串行计算机扩展总线标准)接口是主板上常用的高速接口,它的传输性能高,串行互连布线方便。比如显卡,RAID(Redundant Array of Independent Disks,独立磁盘冗余阵列,简称磁盘阵列)卡都是PCIE接口。PCIE接口在高速信号采样领域也广泛应用。随着电子技术的进步,采样速率越来越高,需要传输的性能要求也越来越高。PCIE插槽一般有x1、x2、x4、x8、x12、x16和x32,对应1/2/4/8/12/16/32通道,在非常高的传输带宽需求下,一个PCIE接口难以满足系统传输需求。
随着技术的进步,很多芯片上具有多个PCIE接口,这么意味同一颗芯片可以并行使用多个PCIE接口进行更大带宽的数据传输。通常情况下,每个PCIE接口都是作为一个独立的设备,与上位机都一套单独的DMA(Direct Memory Access,直接存储器访问)系统进行数据传输。在大带宽应用下,多个PCIE设备同时传输大流量的数据,现有的方案,一般是把数据拆分到多个PCIE接口进行并行传输。由于DMA机制是单独的,多个PCIE设备间不知道彼此的数据链表情况,上位机收到数据后,还需要进行进一步重组排序,并且多设备的流量控制也变的很繁琐。
发明内容
本发明的目的在于提供一种实现多PCIE设备共享DMA链表的系统及方法,用于解决现有技术中将数据拆分到多个PCIE接口进行并行传输,由于DMA机制是单独的,多个PCIE设备间不知道彼此的数据链表情况,上位机收到数据后,还需要进行进一步重组排序,并且多设备的流量控制也变的很繁琐的问题。
本发明通过下述技术方案解决上述问题:
一种实现多PCIE设备共享DMA链表的系统,包括系统内存地址映射表、资源分配模块、多个事务层数据包TLP发送引擎和直接存储器访问DMA完成链表,其中:
系统内存地址映射表,由上位机通过任意一个PCIE设备端下发并缓存在芯片内部,系统内存地址映射表的每个地址对应映射一段上位机系统内存的直接存储器访问DMA地址;
资源分配模块,用于轮询TLP发送引擎的先进先出队列FIFO状态,执行仲裁操作,当选中某个TLP发送引擎时,将按照仲裁长度分片后的一段数据与从系统内存地址映射表获取的一个DMA地址组成预设数据结构写入该TLP发送引擎的FIFO,该DMA地址作为该段数据的DMA起始地址,并将该DMA地址累加所述仲裁长度后作为下一段数据的DMA起始地址;当DMA地址数据长度累加到指定长度时,再次从系统内存地址映射表获取获取一个DMA地址;
TLP发送引擎,用于在FIFO非空时,从FIFO读取数据并组成事务层数据包TLP发给PCIE设备端,进而传输到上位机的指定地址,以及用于在FIFO的中断标志位置位时,发完当前数据后产生一个完成表项,写入DMA完成链表;
DMA完成链表,用于在更新时,通过某个PCIE设备端中断上位机。
一种实现多PCIE设备共享DMA链表的方法,包括资源分配的工作流程和发送事务层数据包TLP的工作流程,资源分配的工作流程为:
当有待传数据且系统内存映射表有资源时,资源分配模块执行仲裁操作:轮询TLP发送引擎的FIFO状态,查询到某个TLP发送引擎的FIFO状态有效时,将按照仲裁长度分片后的一段数据,与从系统内存地址映射表获取的DMA地址写入该TLP发送引擎的FIFO;
写完仲裁长度的数据后,资源分配模块执行下一个仲裁操作;
发送TLP的工作流程包括:TLP发送引擎检测到FIFO非空时,从FIFO读取数据并组成事务层数据包TLP发给PCIE设备端,当FIFO的中断标志位置位时,TLP发送引擎发完当前数据后,产生一个完成表项,写入DMA完成链表,DMA完成链表的更新触发中断上位机操作。
本发明与现有技术相比,具有以下优点及有益效果:
(1)本发明实现了多个PCIE接口共享一套DMA链表机制,在系统驱动看来,多个PCIE设备的工作效果如同一个PCIE卡,而不会增加上位机驱动程序的开销,实现更高性能的传输性能;充分利用了FPGA芯片里的多个PCIE设备接口IP核(Intellectual PropertyCore,指用于产品应用专用集成电路(ASIC)或者可编辑逻辑器件(FPGA)的逻辑块或数据块)资源;数据在PCIE传输到系统内存时,已经由DMA链表机制保证了顺序,上位机驱动程序无需再进行数据重组。
(2)由于有一个总的数据和DMA资源分配,数据业务的传输和各个PCIE链路层的流控是无关的,降低了FPGA和ASIC电路设计难度。
(3)如果有部分PCIE设备接口出现异常,无法传输数据,其他正常工作的PCIE设备接口仍旧能正常进行业务,具有更高的可靠性。
附图说明
图1为本发明的原理框图;
图2为本发明的流程图。
具体实施方式
下面结合实施例对本发明作进一步地详细说明,但本发明的实施方式不限于此。
实施例1:
结合附图1所示,一种实现多PCIE设备共享DMA链表的系统,包括系统内存地址映射表、资源分配模块、多个事务层数据包TLP发送引擎和直接存储器访问DMA完成链表,其中:
系统内存地址映射表,由上位机通过任意一个PCIE设备端下发并缓存在芯片内部,系统内存地址映射表维护中芯片内地址资源,系统内存地址映射表的每个地址对应映射一段上位机系统内存的直接存储器访问DMA地址;
资源分配模块,用于轮询TLP发送引擎的FIFO状态,执行仲裁操作,轮询可以是从TLP发送引擎0->TLP发送引擎1->TLP发送引擎2->……->TLP发送引擎n。查询到某个TLP发送引擎的FIFO符合要求,则将数据和地址组成图1中的数据结构,写到这个TLP发送引擎的FIFO中。数据结构里设计了终端标志位,用来终端上位机。
在这个过程中,数据是按仲裁长度被分片,这个仲裁长度的一般选取2048BYTE至8192BYTE之间。选取2的幂长度,利于内存管理。选定了一个TLP发送引擎后,从系统内存地址映射表获取一个DMA地址作为DMA起始地址,当前要发送的数据便与此DMA起始地址对应。当仲裁长度完成后,DMA起始地址要累加这个仲裁长度,作为下一段数据的DMA起始地址。系统内存地址映射射表,具有起始地址和指定长度,当DMA地址数据长度累加到指定长度时,需要再次获取一次DMA地址资源,数据分配和DMA地址的对应关系在这个过程中进行确定。
TLP发送引擎,用于在FIFO非空时,从FIFO读取数据并组成PCIE协议的TLP发给PCIE设备端,进而传输到上位机的指定地址;当FIFO的中断标志位置位时,TLP发送引擎发完当前数据后产生一个完成表项,写入DMA完成链表;TLP发送引擎不断从起自身FIFO里读取数据进行TLP组包、发送。读取数据的同时,FIFO输出的还有中断标志位。此中断标志位,是资源分配模块中的仲裁模块给出的标志位,在发生前就已经已经写入到FIFO里了。
DMA完成链表,用于在更新时,通过某个PCIE设备端中断上位机。上位机也可以主动查询DMA完成链表状态,上位机获取DMA完成链表,便知道了系统内存里传输数据的地址信息,进而完成了数据从芯片到系统内存的过程。DMA完成链表包含了完成的DMA地址和数据长度。当这些链表信息被上位机获取解析时,数据已经从PCIE设备传输到系统内存里。由于是同一个资源分配模块按照先后顺序进行分配的DMA地址,传输的也是按照先后顺序完成的。如果遇到传输完成先后顺序异常,也可以由DMA地址的大小进行先后判断,越大的地址,对应的是越靠后的数据。
实施例2:
如图2所示,一种实现多PCIE设备共享DMA链表的方法,包括资源分配的工作流程和发送事务层数据包TLP的工作流程,资源分配的工作流程为:
当有待传数据(数据有效条件生效)且系统内存映射表有资源(系统内存映射表条件有效)时,资源分配模块执行仲裁操作:轮询TLP发送引擎的FIFO状态,查询到某个TLP发送引擎的FIFO状态有效时,将按照仲裁长度分片后的一段数据,与从系统内存地址映射表获取的DMA地址写入该TLP发送引擎的FIFO;
写完仲裁长度的数据后,资源分配模块执行下一个仲裁操作;
发送TLP的工作流程包括:TLP发送引擎一旦检测到FIFO非空时,即从FIFO读取数据并组成事务层数据包TLP发给PCIE设备端,在这个发送过程中当FIFO的中断标志位置位时,TLP发送引擎发完当前数据后,产生一个完成表项,写入DMA完成链表,DMA完成链表被更新,其状态发生变化,执行中断上位机操作。
尽管这里参照本发明的解释性实施例对本发明进行了描述,上述实施例仅为本发明较佳的实施方式,本发明的实施方式并不受上述实施例的限制,应该理解,本领域技术人员可以设计出很多其他的修改和实施方式,这些修改和实施方式将落在本申请公开的原则范围和精神之内。
Claims (2)
1.一种实现多PCIE设备共享DMA链表的系统,其特征在于,包括系统内存地址映射表、资源分配模块、多个事务层数据包TLP发送引擎和直接存储器访问DMA完成链表,其中:
系统内存地址映射表,由上位机通过任意一个高速串行计算机扩展总线标准PCIE设备端下发并缓存在芯片内部,系统内存地址映射表的每个地址对应映射一段上位机系统内存的直接存储器访问DMA地址;
资源分配模块,用于轮询TLP发送引擎的先进先出队列FIFO状态,执行仲裁操作,当选中某个TLP发送引擎时,将按照仲裁长度分片后的一段数据与从系统内存地址映射表获取的一个DMA地址组成预设数据结构写入该TLP发送引擎的FIFO,该DMA地址作为该段数据的DMA起始地址,并将该DMA地址累加所述仲裁长度后作为下一段数据的DMA起始地址;当DMA地址数据长度累加到指定长度时,再次从系统内存地址映射表获取一个DMA地址;
TLP发送引擎,用于在FIFO非空时,从FIFO读取数据并组成事务层数据包TLP发给PCIE设备端,进而传输到上位机的指定地址,以及用于在FIFO的中断标志位置位时,发完当前数据后产生一个完成表项,写入DMA完成链表;
DMA完成链表,用于在更新时,通过某个PCIE设备端中断上位机。
2.一种实现多PCIE设备共享DMA链表的方法,其特征在于,包括资源分配的工作流程和发送事务层数据包TLP的工作流程,资源分配的工作流程为:
当有待传数据且系统内存映射表有资源时,资源分配模块执行仲裁操作:轮询TLP发送引擎的FIFO状态,查询到某个TLP发送引擎的FIFO状态有效时,将按照仲裁长度分片后的一段数据,与从系统内存地址映射表获取的DMA地址写入该TLP发送引擎的FIFO;
写完仲裁长度的数据后,资源分配模块执行下一个仲裁操作;
发送TLP的工作流程包括:TLP发送引擎检测到FIFO非空时,从FIFO读取数据并组成事务层数据包TLP发给PCIE设备端,当FIFO的中断标志位置位时,TLP发送引擎发完当前数据后,产生一个完成表项,写入DMA完成链表,DMA完成链表的更新触发中断上位机操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211545781.3A CN115617722B (zh) | 2022-12-05 | 2022-12-05 | 实现多pcie设备共享dma链表的系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211545781.3A CN115617722B (zh) | 2022-12-05 | 2022-12-05 | 实现多pcie设备共享dma链表的系统及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115617722A CN115617722A (zh) | 2023-01-17 |
CN115617722B true CN115617722B (zh) | 2023-03-07 |
Family
ID=84880669
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211545781.3A Active CN115617722B (zh) | 2022-12-05 | 2022-12-05 | 实现多pcie设备共享dma链表的系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115617722B (zh) |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102693198A (zh) * | 2012-05-12 | 2012-09-26 | 北京忆恒创源科技有限公司 | Dma传输方法及系统 |
CN102789439A (zh) * | 2012-06-16 | 2012-11-21 | 北京忆恒创源科技有限公司 | 控制数据传输过程中的中断的方法 |
CN104426814A (zh) * | 2013-08-30 | 2015-03-18 | 英特尔公司 | Numa节点外围交换机 |
CN105356988A (zh) * | 2015-10-16 | 2016-02-24 | 陕西海泰电子有限责任公司 | 一种基于PCIe的全双工DMA传输方法 |
CN107851163A (zh) * | 2015-07-20 | 2018-03-27 | 英特尔公司 | 用于i/o数据的完整性、防重放和真实性保证的技术 |
CN109033004A (zh) * | 2018-08-27 | 2018-12-18 | 北京计算机技术及应用研究所 | 一种基于Aurora总线的双机内存数据共享系统 |
CN109992543A (zh) * | 2019-04-02 | 2019-07-09 | 山东超越数控电子股份有限公司 | 一种基于zyzq-7000的pci-e数据高效传输方法 |
CN113127391A (zh) * | 2021-05-13 | 2021-07-16 | 西安微电子技术研究所 | 一种多设备兼容的dma数据传输引擎设计方法 |
CN115298656A (zh) * | 2020-06-02 | 2022-11-04 | 微芯片技术股份有限公司 | 用于调度可共享pcie端点设备的系统和方法 |
-
2022
- 2022-12-05 CN CN202211545781.3A patent/CN115617722B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102693198A (zh) * | 2012-05-12 | 2012-09-26 | 北京忆恒创源科技有限公司 | Dma传输方法及系统 |
CN102789439A (zh) * | 2012-06-16 | 2012-11-21 | 北京忆恒创源科技有限公司 | 控制数据传输过程中的中断的方法 |
CN104426814A (zh) * | 2013-08-30 | 2015-03-18 | 英特尔公司 | Numa节点外围交换机 |
CN107851163A (zh) * | 2015-07-20 | 2018-03-27 | 英特尔公司 | 用于i/o数据的完整性、防重放和真实性保证的技术 |
CN105356988A (zh) * | 2015-10-16 | 2016-02-24 | 陕西海泰电子有限责任公司 | 一种基于PCIe的全双工DMA传输方法 |
CN109033004A (zh) * | 2018-08-27 | 2018-12-18 | 北京计算机技术及应用研究所 | 一种基于Aurora总线的双机内存数据共享系统 |
CN109992543A (zh) * | 2019-04-02 | 2019-07-09 | 山东超越数控电子股份有限公司 | 一种基于zyzq-7000的pci-e数据高效传输方法 |
CN115298656A (zh) * | 2020-06-02 | 2022-11-04 | 微芯片技术股份有限公司 | 用于调度可共享pcie端点设备的系统和方法 |
CN113127391A (zh) * | 2021-05-13 | 2021-07-16 | 西安微电子技术研究所 | 一种多设备兼容的dma数据传输引擎设计方法 |
Non-Patent Citations (1)
Title |
---|
李鹏飞 等."基于FPGA的PCIE总线DMA传输研究".2017,第469-472页. * |
Also Published As
Publication number | Publication date |
---|---|
CN115617722A (zh) | 2023-01-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109471816B (zh) | 一种基于描述符的pcie总线dma控制器及数据传输控制方法 | |
CN106257434B (zh) | 一种基于增强型外设互连协议总线的数据传输方法及装置 | |
CN102033840B (zh) | 总线协议转换装置和总线协议转换方法 | |
US7779194B2 (en) | Data modification module | |
CN113742269B (zh) | 用于epa设备的数据传输方法、处理设备和介质 | |
CN116069711B (zh) | 直接内存访问控制器、异构设备、内存访问方法及介质 | |
CN115396527B (zh) | 一种基于fpga的pcie和srio协议转换系统及方法 | |
US8090893B2 (en) | Input output control apparatus with a plurality of ports and single protocol processing circuit | |
KR20060130664A (ko) | Pci 익스프레스 장치, pci 익스프레스 시스템 및정보 통신 방법 | |
CN115617722B (zh) | 实现多pcie设备共享dma链表的系统及方法 | |
US8521943B2 (en) | Data transmission system and method of reading data | |
US7822040B2 (en) | Method for increasing network transmission efficiency by increasing a data updating rate of a memory | |
US10095643B2 (en) | Direct memory access control device for at least one computing unit having a working memory | |
US20080189450A1 (en) | Data transfer device, semiconductor integrated circuit, and processing status notification method | |
CN108228520B (zh) | 一种面向bmc的i2c控制器的快速传输方法 | |
US20050144331A1 (en) | On-chip serialized peripheral bus system and operating method thereof | |
CN115842790B (zh) | 一种应用于PCIe设备的业务数据流量控制方法 | |
CN112835834A (zh) | 数据传输系统 | |
CN113468081B (zh) | 基于ebi总线的串口转udp的装置及方法 | |
CN219574727U (zh) | 一种pcie板卡 | |
US20230325330A1 (en) | Data transmission control device | |
CN115202257B (zh) | 一种lpc总线协议转换及设备并行控制装置及方法 | |
CN108664428B (zh) | 一种基于fpga的通信方法以及fpga控制器和usb适配器 | |
CN209765488U (zh) | 一种srio和usb转换控制板卡 | |
WO1982001607A1 (en) | Data communication bus structure |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |