CN112328520B - 一种pcie设备、基于pcie设备的数据传输方法和系统 - Google Patents
一种pcie设备、基于pcie设备的数据传输方法和系统 Download PDFInfo
- Publication number
- CN112328520B CN112328520B CN202011064470.6A CN202011064470A CN112328520B CN 112328520 B CN112328520 B CN 112328520B CN 202011064470 A CN202011064470 A CN 202011064470A CN 112328520 B CN112328520 B CN 112328520B
- Authority
- CN
- China
- Prior art keywords
- tlp
- packet
- request
- sorting
- packets
- 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/38—Information transfer, e.g. on bus
- G06F13/382—Information transfer, e.g. on bus using universal interface adapter
- G06F13/385—Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
-
- 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
- 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
Abstract
本发明提供一种PCIE设备、基于PCIE设备的数据传输方法和系统;该方法包括:生成N个各自独立的DMA读请求;按照预设的轮询规则轮询N个DMA读请求中的TLP请求包,即:当前轮询过程中,分别先后收集每个DMA读请求中的一个TLP请求包,直至N个DMA读请求均被轮询一个DMA读请求;根据收集先后顺序为各个TLP请求包分配排序标签;通过PCIE内核将携带有排序标签的TLP请求包高速传输给主机,主机分别对接收到的TLP请求包进行处理,形成对应的TLP完成包,每个TLP完成包均携带有请求者标识信息和排序标签;统一接收主机通过PCIE内核高速传输的TLP完成包,根据各TLP完成包的排序标签对各TLP完成包进行统一排序;根据各TLP完成包携带的请求者标识信息依次返回统一排序后的TLP完成包。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种PCIE设备、基于PCIE设备的数据传输方法和系统。
背景技术
随着现代社会科技的发展,PCIE(peripheral component interconnectexpress)总线作为一种高性能I/O总线广泛应用于计算机系统中。SR-IOV(Single-Root I/O Virtualization,单根I/O虚拟化)是PCI-SIG推出的一项标准,定义了一种PCIE设备虚拟化技术的标准机制,是“虚拟通道”的一种技术实现,用于将一个PCIE设备虚拟成多个PCIE设备,每个虚拟PCIE设备都具有自己的PCIE配置空间,如同物理PCIE设备一样为上层软件提供服务。
PCIE事物层与主机内存进行高速数据交互时,当请求方发出一定长度的存储器请求时,请求方根据最大读请求长度发出TLP请求包,主机以数量不等的TLP完成包回应,TLP完成包数据载荷最大为Max Payload Size。由于PCIE的传输有延时现象,可能由多个TLP完成包对应一个TLP请求包,所以返回的TLP完成包有乱序现象。系统中每个虚拟功能模块都是相互独立的,多个虚拟功能模块共同参与数据传输则会导致每个虚拟功能模块的TLP完成包的顺序更加混乱。并且,一般在处理多个PCIE设备的DMA请求时,采用异步方式容易造成多个PCIE设备的等待时间过长,不利于负载均衡。
发明内容
针对现有的数据传输方法存在的TLP完成包的乱序问题以及易造成多个PCIE设备的等待时间过长,不利于负载均衡的问题,本发明提供一种PCIE设备、基于PCIE设备的数据传输方法和系统。
第一方面,本发明提供一种基于PCIE设备的数据传输方法,该方法包括:
步骤1:生成N个各自独立的DMA读请求,所述DMA读请求包括至少一个TLP请求包,每个所述TLP请求包均携带有请求者标识信息,且大小均不会跨越4KB边界;其中,N≥2;
步骤2:按照预设的轮询规则轮询N个DMA读请求中的TLP请求包,所述预设的轮询规则为:当前轮询过程中,分别先后收集每个DMA读请求中的一个TLP请求包,直至N个DMA读请求均被收集一个TLP请求包;间隔预设时间后,进行下一次轮询;
步骤3:根据收集先后顺序为各个TLP请求包分配排序标签;
步骤4:通过PCIE内核将携带有排序标签的TLP请求包高速传输给主机,以供主机分别对接收到的TLP请求包进行处理,形成对应的TLP完成包,每个所述TLP完成包均携带有请求者标识信息和排序标签;
步骤5:统一接收主机通过PCIE内核高速传输的TLP完成包,根据各TLP完成包的排序标签对各TLP完成包进行统一排序;
步骤6:根据各TLP完成包携带的请求者标识信息依次返回统一排序后的TLP完成包。
进一步地,在根据收集先后顺序为各个TLP请求包分配排序标签时,排序标签是依次连续递增的。
进一步地,步骤5中,所述根据各TLP完成包的排序标签对各TLP完成包进行统一排序,具体为:
按照排序标签将TLP完成包填入对应的缓冲区,其中,每个缓冲区均具有唯一的顺序标识,一个缓冲区用于接收一个排序标签的TLP完成包,M≥R,M为缓冲区的总数,R为排序标签最大值。
进一步地,每个所述TLP完成包的载荷数据量不大于预设Payload值;其中,所述Payload为所述PCIE设备与所述主机共同协商制定的一个TLP完成包所允许装载数据的最大长度。
第二方面,本发明提供一种PCIE设备,包括:数据传输模块、PCIE内核以及基于SR-IOV技术的N个虚拟功能模块;所述数据传输模块包括收集单元、统一发送单元、统一排序单元和分配单元;
N个所述虚拟功能模块,用于生成N个各自独立的DMA读请求,所述DMA读请求包括至少一个TLP请求包,每个所述TLP请求包均携带有请求者标识信息,且大小均不会跨越4KB边界;其中,N≥2;
所述收集单元,用于按照预设的轮询规则轮询N个DMA读请求中的TLP请求包,所述预设的轮询规则为:当前轮询过程中,分别先后收集每个DMA读请求中的一个TLP请求包,直至N个DMA读请求均被收集一个TLP请求包;间隔预设时间后,进行下一次轮询;
所述统一发送单元,用于根据收集先后顺序为各个TLP请求包分配排序标签,通过PCIE内核将携带有排序标签的TLP请求包高速传输给主机,以供主机分别对接收到的TLP请求包进行处理,形成对应的TLP完成包,每个所述TLP完成包均携带有请求者标识信息和排序标签;
所述统一排序单元,用于统一接收主机通过PCIE内核高速传输的TLP完成包,根据各TLP完成包的排序标签对各TLP完成包进行统一排序;
所述分配单元,用于根据各TLP完成包携带的请求者标识信息依次返回统一排序后的TLP完成包至对应的虚拟功能模块。
进一步地,所述统一发送单元在根据收集先后顺序为各个TLP请求包分配排序标签时,排序标签是依次连续递增的。
进一步地,所述统一排序单元,包括M个缓冲区,具体用于按照排序标签将TLP完成包填入对应的缓冲区;其中,每个缓冲区均具有唯一的顺序标识,一个缓冲区用于接收一个排序标签的TLP完成包,M≥R,R为排序标签最大值。
进一步地,每个所述TLP完成包的载荷数据量不大于预设Payload值;其中,所述Payload为所述PCIE设备与所述主机共同协商制定的一个TLP完成包所允许装载数据的最大长度。
第三方面,本发明提供一种基于PCIE设备的数据传输系统,包括上述的PCIE设备和主机;
所述主机,用于接收PCIE设备发送的TLP请求包并进行处理,以形成对应的TLP完成包并返回给PCIE设备。
本发明的有益效果:
本发明提供的一种基于PCIE设备的数据传输方法,通过对TLP请求包统一分配排序标签,在PCIE设备收到主机返回的TLP完成包,可以根据TLP完成包携带的排序标签对TLP完成包进行重新排序,实现对返回的TLP完成包出现乱序现象的管理。同时,本发明通过对TLP请求包进行统一分配排序标签和对TLP完成包统一重新排序即可实现对多个独立请求者(即生成DMA读请求的功能模块,例如基于SR-IOV技术的虚拟功能模块)的收发包(TLP请求包、TLP完成包)进行统一排序管理,相较于传统每个虚拟功能模块均需要配备独立排序管理模块的方式,本发明的统一排序管理方式能够有效节省了内存空间,节省资源。并且,本发明在读取DMA读请求中的请求包时,采用同步方式进行读取,可以同时处理多个PCIE设备的DMA读请求,因此可以解决多个PCIE设备等待时间过长的问题,可以实现负载均衡。
本发明提供的PCIE设备和基于PCIE设备的数据传输系统,具有上述同样的有益效果,此处不再赘述。
附图说明
图1为本发明实施例提供的一种基于PCIE设备的数据传输方法的流程示意图;
图2为本发明实施例提供的一种基于PCIE设备的数据传输系统的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例1
如图1所示,本发明实施例提供一种基于PCIE设备的数据传输方法,该方法包括:
S101:PCIE设备生成N个各自独立的DMA读请求,所述DMA读请求包括至少一个TLP请求包,每个所述TLP请求包均携带有请求者标识信息,且大小均不会跨越4KB边界;其中,N≥2;
具体地,所述标识信息具体表征为BAR ID、功能号等信息,但不限于此。
S102:PCIE设备按照预设的轮询规则轮询N个DMA读请求中的TLP请求包,所述预设的轮询规则为:当前轮询过程中,分别先后收集每个DMA读请求中的一个TLP请求包,直至N个DMA读请求均被收集一个TLP请求包;间隔预设时间后,进行下一次轮询;
可以理解的是,若在某次轮询过程中,某个DMA读请求的所有TLP请求包已经被收集完,则跳过该DMA读请求,轮询下一个DMA读请求的TLP请求包。
S103:PCIE设备根据收集先后顺序为各个TLP请求包分配排序标签;
S104:PCIE设备通过PCIE内核将携带有排序标签的TLP请求包高速传输给主机,以供主机分别对接收到的TLP请求包进行处理,形成对应的TLP完成包,每个所述TLP完成包均携带有请求者标识信息和排序标签;
S105:PCIE设备统一接收主机通过PCIE内核高速传输的TLP完成包,根据各TLP完成包的排序标签对各TLP完成包进行统一排序;
S106:PCIE设备根据各TLP完成包携带的请求者标识信息依次返回统一排序后的TLP完成包。
本发明实施例通过对TLP请求包统一分配排序标签,在PCIE设备收到主机返回的TLP完成包,可以根据TLP完成包携带的排序标签对TLP完成包进行重新排序,实现对返回的TLP完成包出现乱序现象的管理。同时,本发明实施例通过对TLP请求包进行统一分配排序标签和对TLP完成包统一重新排序即可实现对多个独立请求者(即生成DMA读请求的功能模块,例如基于SR-IOV技术的虚拟功能模块)的收发包(TLP请求包、TLP完成包)进行统一排序管理,相较于传统每个虚拟功能模块均需要配备独立排序管理模块的方式,本发明实施例的统一排序管理方式能够有效节省了内存空间,节省资源。并且,本发明在读取DMA读请求中的请求包时,采用同步方式进行读取,可以同时处理多个PCIE设备的DMA读请求,因此可以解决多个PCIE设备等待时间过长的问题,可以实现负载均衡。
实施例2
以两个DMA读请求的数据传输过程为例,本发明实施例提供的一种基于PCIE设备的数据传输方法,该方法包括:
S201:生成2个各自独立的DMA读请求,即:第一DMA读请求和第二DMA读请求;
具体地,设定第一DMA读请求中包括4个请求包{ID1-1,ID1-2,ID1-3,ID1-4},第二DMA读请求中包括3个请求包{ID2-1,ID2-2,ID2-3};设定第一DMA读请求的请求者标识信息为ID1,第二DMA读请求的请求者标识信息为ID2;
S202:按照预设的轮询规则轮询2个DMA读请求中的TLP请求包;
具体地,先收集第一DMA读请求中的请求包ID1-1,然后收集第二DMA读请求中的请求包ID2-1,当前轮询过程结束;然后,间隔一定时间后,进行下一个轮询过程:收集第一DMA读请求中的请求包ID1-2,第二DMA读请求中的请求包ID2-2;接着,在进行下一个轮询过程:收集第一DMA读请求中的请求包ID1-3,第二DMA读请求中的请求包ID2-3;直至最后一个轮询过程:收集第一DMA读请求中的请求包ID1-4;
S203:根据收集先后顺序为各个TLP请求包分配排序标签;
具体地,在根据收集先后顺序为各个TLP请求包分配排序标签时,排序标签是依次连续递增的。作为一种可实施方式,排序标签的取值范围为0~R;通过轮询排序标签的取值范围对各个TLP请求包分配相应的排序标签。
例如,第一DMA读请求和第二DMA读请求的7个请求包{ID1-1,ID1-2,ID1-3,ID1-4,ID2-1,ID2-2,ID2-3}的排序标签依次为:0,2,4,6,1,3,5;
S204:通过PCIE内核将携带有排序标签的TLP请求包高速传输给主机,以供主机分别对接收到的TLP请求包进行处理,形成对应的TLP完成包,每个所述TLP完成包均携带有请求者标识信息和排序标签;
具体地,通过PCIE内核传输至主机的TLP请求包携带有排序标签和请求者标识信息,主机处理后形成的TLP完成包也对应携带有排序标签和请求者标识信息。每个所述TLP完成包的载荷数据量不大于预设Payload值;其中,所述Payload为所述PCIE设备与所述主机共同协商制定的一个TLP完成包所允许装载数据的最大长度。
例如,主机处理后形成7个TLP完成包,本实施例中的7个TLP完成包分别为:R-ID1-0,R-ID1-2,R-ID1-4,R-ID1-6,R-ID2-1,R-ID2-3,R-ID2-5。其中,R表示是TLP完成包。
S205:统一接收主机通过PCIE内核高速传输的TLP完成包,根据各TLP完成包的排序标签对各TLP完成包进行统一排序;
具体地,按照排序标签将TLP完成包填入对应的缓冲区,其中,每个缓冲区均具有唯一的顺序标识,一个缓冲区用于接收一个排序标签的TLP完成包,M≥R,M为缓冲区的总数,R为排序标签最大值。
例如,缓冲区的总数M=7,即缓冲区0、1、2、3、4、5、6;假设,先接收到TLP完成包R-ID1-3,则将TLP完成包R-ID1-3存储至缓冲区3中;然后接收到TLP完成包R-ID1-0、R-ID2-1,则将TLP完成包R-ID1-0存储至缓冲区0中,将TLP完成包R-ID2-1存储至缓冲区1中;以此类推,将接收到的TLP完成包存储至对应的缓冲区内。
在实际应用中,还存在一种情况,主机形成的TLP完成包不止7个,可能一个TLP请求包对应多个TLP完成包。例如,TLP请求包ID1-1对应有3个TLP完成包,这3个TLP完成包的排序标签则均为0,即均为R-ID1-0。此时,这3个TLP完成包R-ID1-0则均存储至缓冲区0中。
S206:根据各TLP完成包携带的请求者标识信息依次返回统一排序后的TLP完成包;
具体地,依次将缓冲区0、1、2、3、4、5、6内的TLP完成包根据各TLP完成包携带的请求者标识信息依次返回至请求者。例如,先将缓冲区0中的R-ID1-0返回至生成第一DMA读请求的请求者;再将缓冲区1中的R-ID2-1返回至生成第二DMA读请求的请求者;以此类推,直至将缓冲区6中的R-ID1-6返回至生成第一DMA读请求的请求者。
实施例3
对应上述的基于PCIE设备的数据传输方法,如图2所示,本发明实施例还提供一种PCIE设备,包括数据传输模块、PCIE内核以及基于SR-IOV技术的N个虚拟功能模块;所述数据传输模块包括收集单元、统一发送单元、统一排序单元和分配单元;
N个所述虚拟功能模块用于生成N个各自独立的DMA读请求,所述DMA读请求包括至少一个TLP请求包,每个所述TLP请求包均携带有请求者标识信息,且大小均不会跨越4KB边界;其中,N≥2。所述收集单元用于按照预设的轮询规则轮询N个DMA读请求中的TLP请求包,所述预设的轮询规则为:当前轮询过程中,分别先后收集每个DMA读请求中的一个TLP请求包,直至N个DMA读请求均被收集一个TLP请求包;间隔预设时间后,进行下一次轮询。所述统一发送单元用于根据收集先后顺序为各个TLP请求包分配排序标签,通过PCIE内核将携带有排序标签的TLP请求包高速传输给主机,以供主机分别对接收到的TLP请求包进行处理,形成对应的TLP完成包,每个所述TLP完成包均携带有请求者标识信息和排序标签。所述统一排序单元用于统一接收主机通过PCIE内核高速传输的TLP完成包,根据各TLP完成包的排序标签对各TLP完成包进行统一排序。所述分配单元用于根据各TLP完成包携带的请求者标识信息依次返回统一排序后的TLP完成包至对应的虚拟功能模块。
具体地,TLP请求包和TLP完成包中分别携带有请求者标识信息,在根据排序标签的先后顺序分配TLP完成包时,所述分配单元基于各个TLP完成包携带的请求者标识信息确定对应的虚拟功能模块,然后分配给对应的虚拟功能模块。
作为一种可实施方式,所述统一排序单元,包括M个缓冲区,具体用于按照排序标签将TLP完成包填入对应的缓冲区;其中,每个缓冲区均具有唯一的顺序标识,一个缓冲区用于接收一个排序标签的TLP完成包,M≥R,R为排序标签最大值。
具体地,所述统一排序单元包括多个缓冲区0、1、2、3、…、M,分别用于接收对应排序标签的TLP完成包,所述分配单元轮询多个缓冲区0、1、2、3、…、M并按照TLP完成包携带的请求者的标识信息依次将各个缓冲区的TLP完成包分配给对应的虚拟功能模块。在实际应用中,每个缓冲区的大小可以等于最大读请求长度,也可以根据实际需要进行灵活设定。
可以理解,收集单元轮询多个虚拟功能模块收集多个虚拟功能模块的TLP请求包都是有序的,即排序标签为有序的,但是经由PCIE高速传输以及其它因素影响,所述分配单元可能无法按照排序标签的顺序依次接收TLP完成包,即接收到的TLP完成包排序标签可能是断序的。本发明通过在分配单元之前部署统一排序单元,并使统一排序单元设置多个缓冲区,即可将先接收到的TLP完成包依据排序标签填入对应的缓冲区并进行等待,直到接收到断序的TLP完成包,即可连贯的排序标签进行有序分配TLP完成包。
实施例4
根据本发明实施例,预设PCIE设备包括两个虚拟功能模块,第一虚拟功能模块形成第一DMA读请求,并按照预定的读取规则将第一DMA读请求拆分成多个TLP请求包;第二虚拟功能模块形成有第二DMA读请求,并按照预定的读取规则将第二DMA读请求拆分成多个TLP请求包;所述收集单元读取第一虚拟功能模块的一个TLP请求包,并由统一发送单元对该TLP请求包分配排序标签x,然后将携带有排序标签x的TLP请求包转交给PCIE内核高速传输给主机;然后所述收集单元读取第二虚拟功能模块的一个TLP请求包,并由统一发送单元对该TLP请求包分配排序标签x+1,然后将携带有排序标签x+1的TLP请求包转交给PCIE内核高速传输给主机;稍后收集单元在第一虚拟功能模块和第二虚拟功能模块之间进行轮询,交替收集第一DMA读请求和第二DMA读请求的各个TLP请求包,并由统一发送单元为其分配对应的排序标签。
作为一种可实施方式,所述读取规则表征为:通常DMA读请求应按照最大读请求长度进行拆分形成多个TLP请求包;如果某DMA读请求的长度小于最大读请求长度,则该DMA读请求直接形成单个TLP请求包;如果某DMA读请求跨4KB边界,则遵循拆分的每个TLP请求包均不会跨越4KB边界。
作为一种可实施方式,所述主机接收到第一DMA读请求的TLP请求包和第二DMA读请求的TLP请求包,并对其进行处理以形成对应的TLP完成包,且每个TLP完成包均携带有对应的排序标签;当所述统一排序单元接收到排序标签为0的至少一个TLP完成包,根据其排序标签0统一填入缓冲区0中;当所述统一排序单元接收到排序标签为1的至少一个TLP完成包,根据其排序标签1统一填入缓冲区1中;以上述方式按照排序标签将接收的TLP完成包填入对应的缓冲区,并由分配单元结合排序标签的先后顺序以及请求者的标识信息将对应的TLP完成包分配给第一虚拟功能模块或第二虚拟功能模块。
在实际应用中,受到PCIE传输延迟以及其它方面的影响,所述统一排序单元可能先接收到排序标签为1的至少一个TLP完成包,此时统一排序单元则会将至少一个TLP完成包按照其排序标签1填入缓冲区1中,而缓冲区0则为空,此时统一排序单元继续等待缓冲区0填入后才开始进行分配,稍后统一排序单元继续接收到排序标签为2的至少一个TLP完成包,并按照其排序标签2填入缓冲区2中,直到统一排序单元接收到排序标签为0的至少一个TLP完成包,并按照排序标签0填入到缓冲区0中,此时分配单元即可将缓冲区0的至少一个TLP完成包写入第一虚拟功能模块中,由于排序标签1与排序标签0连续的,且携带排序标签1的TLP完成包也已填满缓冲区1中,此时分配单元可以将缓冲区1的至少一个TLP完成包写入第二虚拟功能模块中,依以此类推,按照上述方式进行轮询写入,直到将所有的TLP完成包分别有序的写入对应的虚拟功能模块中。
可以理解,由于收集单元在收集每个虚拟功能模块的TLP请求包时,是有序收集的,所述统一发送单元在根据收集先后顺序为各个TLP请求包分配排序标签时,排序标签是依次连续递增的。即使存在收集单元需要对多个虚拟功能模块轮询收集的干扰,导致统一发送单元对同一个虚拟功能模块的各个TLP请求包分配的排序标签可能不连贯,比如:第一虚拟功能模块的在前TLP完成包的排序标签为0,在后TLP完成包的排序标签为2,在0和2之间可能存在排序标签为1的第二虚拟功能模块的TLP完成包,但对于第一虚拟功能模块而言,由于只会接收到属于自己的TLP完成包,所以不连贯的排序标签0、2,仍是有序的,且可以进行正常排序。
实施例5
如图2所示,本发明实施例提供一种基于PCIE设备的数据传输系统,包括主机和上述各实施例中的任一种PCIE设备;所述主机,用于接收PCIE设备发送的TLP请求包并进行处理,以形成对应的TLP完成包并返回给PCIE设备。
具体地,在实际应用中,主机安装有多个虚拟机,PCIE设备中的多个虚拟功能模块一一分配给对应的虚拟机。根据本发明实施例,所述主机接收到TLP请求包时,根据当前待读取数据的首地址,对TLP请求包进行处理,以形成对应的TLP完成包,且所述TLP完成包的载荷数据量不超过预设Payload值,所述Payload为所述PCIE设备与所述主机共同协商制定的一个TLP请求包或TLP完成包所允许封装数据的最大长度。
作为一种可实施方式,最大读请求长度为512字节,Payload的大小根据实际需求设定为256字节、128字节、64字节中的任意一种。
预设Payload的大小为256字节,按照最大读请求长度来形成的TLP请求包的大小512字节,由统一发送单元为该TLP请求包分配排序标签,然后发送给主机,主机对该TLP请求包进行处理,受到Payload限制,单个TLP完成包最大装载数据量为256字节,因此512字节的TLP请求包在主机侧完成处理后,则会形成两个256字节的TLP完成包,且两个TLP完成包的排序标签均与对应TLP请求包的排序标签一致,然后主机将同一个排序标签的多个TLP完成包将会有序返回给PCIE设备,PCIE设备中的统一排序单元将会按照接收的先后顺序将两个TLP完成包填入对应的缓冲区。
本发明通过统一发送单元对TLP请求包分配排序标签,当统一排序单元接收到TLP完成包时,即可根据携带的排序标签进行重新排序,实现对返回的TLP完成包出现乱序现象的管理。同时,本发明通过统一发送单元和统一排序单元即可实现对虚拟功能模块的收发包(TLP请求包、TLP完成包)进行统一排序管理,相较于传统每个虚拟功能模块均需要配备独立排序管理模块的方式,本发明的统一排序管理方式能够有效节省了内存空间,节省资源。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (9)
1.一种基于PCIE设备的数据传输方法,其特征在于,包括:
步骤1:生成N个各自独立的DMA读请求,所述DMA读请求包括至少一个TLP请求包,每个所述TLP请求包均携带有请求者标识信息,且大小均不会跨越4KB边界;其中,N≥2;
步骤2:按照预设的轮询规则轮询N个DMA读请求中的TLP请求包,所述预设的轮询规则为:当前轮询过程中,分别先后收集每个DMA读请求中的一个TLP请求包,直至N个DMA读请求均被收集一个TLP请求包;间隔预设时间后,进行下一次轮询;
步骤3:根据收集先后顺序为各个TLP请求包分配排序标签;
步骤4:通过PCIE内核将携带有排序标签的TLP请求包高速传输给主机,以供主机分别对接收到的TLP请求包进行处理,形成对应的TLP完成包,每个所述TLP完成包均携带有请求者标识信息和排序标签;
步骤5:统一接收主机通过PCIE内核高速传输的TLP完成包,根据各TLP完成包的排序标签对各TLP完成包进行统一排序;
步骤6:根据各TLP完成包携带的请求者标识信息依次返回统一排序后的TLP完成包。
2.根据权利要求1所述的方法,其特征在于,在根据收集先后顺序为各个TLP请求包分配排序标签时,排序标签是依次连续递增的。
3.根据权利要求1所述的方法,其特征在于,步骤5中,所述根据各TLP完成包的排序标签对各TLP完成包进行统一排序,具体为:
按照排序标签将TLP完成包填入对应的缓冲区,其中,每个缓冲区均具有唯一的顺序标识,一个缓冲区用于接收一个排序标签的TLP完成包,M≥R,M为缓冲区的总数,R为排序标签最大值。
4.根据权利要求1所述的方法,其特征在于,每个所述TLP完成包的载荷数据量不大于预设Payload值;其中,所述Payload为所述PCIE设备与所述主机共同协商制定的一个TLP完成包所允许装载数据的最大长度。
5.一种PCIE设备,其特征在于,包括:数据传输模块、PCIE内核以及基于SR-IOV技术的N个虚拟功能模块;所述数据传输模块包括收集单元、统一发送单元、统一排序单元和分配单元;
N个所述虚拟功能模块,用于生成N个各自独立的DMA读请求,所述DMA读请求包括至少一个TLP请求包,每个所述TLP请求包均携带有请求者标识信息,且大小均不会跨越4KB边界;其中,N≥2;
所述收集单元,用于按照预设的轮询规则轮询N个DMA读请求中的TLP请求包,所述预设的轮询规则为:当前轮询过程中,分别先后收集每个DMA读请求中的一个TLP请求包,直至N个DMA读请求均被收集一个TLP请求包;间隔预设时间后,进行下一次轮询;
所述统一发送单元,用于根据收集先后顺序为各个TLP请求包分配排序标签,通过PCIE内核将携带有排序标签的TLP请求包高速传输给主机,以供主机分别对接收到的TLP请求包进行处理,形成对应的TLP完成包,每个所述TLP完成包均携带有请求者标识信息和排序标签;
所述统一排序单元,用于统一接收主机通过PCIE内核高速传输的TLP完成包,根据各TLP完成包的排序标签对各TLP完成包进行统一排序;
所述分配单元,用于根据各TLP完成包携带的请求者标识信息依次返回统一排序后的TLP完成包至对应的虚拟功能模块。
6.根据权利要求5所述的PCIE设备,其特征在于,所述统一发送单元在根据收集先后顺序为各个TLP请求包分配排序标签时,排序标签是依次连续递增的。
7.根据权利要求5所述的PCIE设备,其特征在于,所述统一排序单元,包括M个缓冲区,具体用于按照排序标签将TLP完成包填入对应的缓冲区;其中,每个缓冲区均具有唯一的顺序标识,一个缓冲区用于接收一个排序标签的TLP完成包,M≥R,R为排序标签最大值。
8.根据权利要求5所述的PCIE设备,其特征在于,每个所述TLP完成包的载荷数据量不大于预设Payload值;其中,所述Payload为所述PCIE设备与所述主机共同协商制定的一个TLP完成包所允许装载数据的最大长度。
9.一种基于PCIE设备的数据传输系统,其特征在于,包括如权利要求5至8任一所述的PCIE设备和主机;
所述主机,用于接收PCIE设备发送的TLP请求包并进行处理,以形成对应的TLP完成包并返回给PCIE设备。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011064470.6A CN112328520B (zh) | 2020-09-30 | 2020-09-30 | 一种pcie设备、基于pcie设备的数据传输方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011064470.6A CN112328520B (zh) | 2020-09-30 | 2020-09-30 | 一种pcie设备、基于pcie设备的数据传输方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112328520A CN112328520A (zh) | 2021-02-05 |
CN112328520B true CN112328520B (zh) | 2022-02-11 |
Family
ID=74313315
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011064470.6A Active CN112328520B (zh) | 2020-09-30 | 2020-09-30 | 一种pcie设备、基于pcie设备的数据传输方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112328520B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112948298A (zh) * | 2021-04-15 | 2021-06-11 | 新华三信息安全技术有限公司 | 一种报文处理方法及装置 |
CN116582471B (zh) * | 2023-07-14 | 2023-09-19 | 珠海星云智联科技有限公司 | Pcie设备、pcie数据捕获系统和服务器 |
Citations (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2069711A1 (en) * | 1991-09-18 | 1993-03-19 | Donald Edward Carmon | Multi-media signal processor computer system |
WO1996041250A2 (en) * | 1995-06-07 | 1996-12-19 | S Mos Systems, Inc. | System and method for processing multiple requests and out of order returns |
US7124231B1 (en) * | 2002-06-14 | 2006-10-17 | Cisco Technology, Inc. | Split transaction reordering circuit |
US7529245B1 (en) * | 2005-04-04 | 2009-05-05 | Sun Microsystems, Inc. | Reorder mechanism for use in a relaxed order input/output system |
CN101494636A (zh) * | 2008-01-23 | 2009-07-29 | 中兴通讯股份有限公司 | 一种基于快速io互连技术的数据排序方法及装置 |
WO2012013080A1 (zh) * | 2010-07-30 | 2012-02-02 | 中兴通讯股份有限公司 | 一种数据透明传输的方法及系统 |
CN102571609A (zh) * | 2012-03-01 | 2012-07-11 | 重庆中天重邮通信技术有限公司 | 快速串行接口pci-e协议数据完成包的重组排序方法 |
CN103049240A (zh) * | 2011-10-13 | 2013-04-17 | 北京同步科技有限公司 | Pci-e设备及其接收数据重排序方法 |
CN105260332A (zh) * | 2015-09-09 | 2016-01-20 | 北京三未信安科技发展有限公司 | 一种对cpld数据包进行有序存储的方法及系统 |
CN105511954A (zh) * | 2014-09-23 | 2016-04-20 | 华为技术有限公司 | 一种报文处理方法及装置 |
CN106897106A (zh) * | 2017-01-12 | 2017-06-27 | 北京三未信安科技发展有限公司 | 一种sr‑iov环境下多虚拟机并发dma的顺序调度方法及系统 |
CN107766270A (zh) * | 2017-10-20 | 2018-03-06 | 深圳市风云实业有限公司 | 用于PCIe设备的数据读取管理方法及装置 |
CN108337286A (zh) * | 2017-01-20 | 2018-07-27 | 深圳市中兴微电子技术有限公司 | 一种切包方法及装置 |
CN110688333A (zh) * | 2019-09-29 | 2020-01-14 | 郑州信大捷安信息技术股份有限公司 | 一种基于pcie的dma数据传输系统及方法 |
CN111240813A (zh) * | 2018-11-29 | 2020-06-05 | 杭州嘉楠耘智信息科技有限公司 | 一种dma调度方法、装置和计算机可读存储介质 |
CN111352657A (zh) * | 2018-12-21 | 2020-06-30 | 上海都森电子科技有限公司 | FPGA高速高效流水读取x86数据的方法 |
CN111651396A (zh) * | 2020-04-26 | 2020-09-11 | 尧云科技(西安)有限公司 | 一种优化的pcie完成包乱序管理电路实现方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018003629A1 (ja) * | 2016-06-28 | 2018-01-04 | 日本電気株式会社 | パケット処理装置、及び、パケット処理方法 |
-
2020
- 2020-09-30 CN CN202011064470.6A patent/CN112328520B/zh active Active
Patent Citations (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2069711A1 (en) * | 1991-09-18 | 1993-03-19 | Donald Edward Carmon | Multi-media signal processor computer system |
WO1996041250A2 (en) * | 1995-06-07 | 1996-12-19 | S Mos Systems, Inc. | System and method for processing multiple requests and out of order returns |
US7124231B1 (en) * | 2002-06-14 | 2006-10-17 | Cisco Technology, Inc. | Split transaction reordering circuit |
US7529245B1 (en) * | 2005-04-04 | 2009-05-05 | Sun Microsystems, Inc. | Reorder mechanism for use in a relaxed order input/output system |
CN101494636A (zh) * | 2008-01-23 | 2009-07-29 | 中兴通讯股份有限公司 | 一种基于快速io互连技术的数据排序方法及装置 |
WO2012013080A1 (zh) * | 2010-07-30 | 2012-02-02 | 中兴通讯股份有限公司 | 一种数据透明传输的方法及系统 |
CN103049240A (zh) * | 2011-10-13 | 2013-04-17 | 北京同步科技有限公司 | Pci-e设备及其接收数据重排序方法 |
CN102571609A (zh) * | 2012-03-01 | 2012-07-11 | 重庆中天重邮通信技术有限公司 | 快速串行接口pci-e协议数据完成包的重组排序方法 |
CN105511954A (zh) * | 2014-09-23 | 2016-04-20 | 华为技术有限公司 | 一种报文处理方法及装置 |
CN105260332A (zh) * | 2015-09-09 | 2016-01-20 | 北京三未信安科技发展有限公司 | 一种对cpld数据包进行有序存储的方法及系统 |
CN106897106A (zh) * | 2017-01-12 | 2017-06-27 | 北京三未信安科技发展有限公司 | 一种sr‑iov环境下多虚拟机并发dma的顺序调度方法及系统 |
CN108337286A (zh) * | 2017-01-20 | 2018-07-27 | 深圳市中兴微电子技术有限公司 | 一种切包方法及装置 |
CN107766270A (zh) * | 2017-10-20 | 2018-03-06 | 深圳市风云实业有限公司 | 用于PCIe设备的数据读取管理方法及装置 |
CN111240813A (zh) * | 2018-11-29 | 2020-06-05 | 杭州嘉楠耘智信息科技有限公司 | 一种dma调度方法、装置和计算机可读存储介质 |
CN111352657A (zh) * | 2018-12-21 | 2020-06-30 | 上海都森电子科技有限公司 | FPGA高速高效流水读取x86数据的方法 |
CN110688333A (zh) * | 2019-09-29 | 2020-01-14 | 郑州信大捷安信息技术股份有限公司 | 一种基于pcie的dma数据传输系统及方法 |
CN111651396A (zh) * | 2020-04-26 | 2020-09-11 | 尧云科技(西安)有限公司 | 一种优化的pcie完成包乱序管理电路实现方法 |
Non-Patent Citations (2)
Title |
---|
《基于FPGA的PCI Express 3.0 DMA控制器关键技术研究》;业青青;《中国优秀硕士学位论文全文数据库(信息科技辑)》;20180415;第I135-636页 * |
《基于PCIe总线的髙速数据传输技术研究》;彭涛;《中国优秀硕士学位论文全文数据库(信息科技辑)》;20160315;第I136-1109页 * |
Also Published As
Publication number | Publication date |
---|---|
CN112328520A (zh) | 2021-02-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110083461B (zh) | 一种基于fpga的多任务处理系统及方法 | |
CA2069711C (en) | Multi-media signal processor computer system | |
US9128925B2 (en) | System and method for direct memory access buffer utilization by setting DMA controller with plurality of arbitration weights associated with different DMA engines | |
US7975120B2 (en) | Dynamic allocation of message buffers | |
US7827331B2 (en) | IO adapter and data transferring method using the same | |
CN109558344B (zh) | 一种适用于网络传输的dma传输方法及dma控制器 | |
JPH08508592A (ja) | 通信ネットワークのデータステーション内のデータバッファ方法および装置 | |
US20010056513A1 (en) | Data transfer control method and controller for universal serial bus interface | |
CN112328520B (zh) | 一种pcie设备、基于pcie设备的数据传输方法和系统 | |
CN114553635B (zh) | Dpu网络设备中的数据处理方法、数据交互方法及产品 | |
CN102841869B (zh) | 一种基于fpga的多通道i2c控制器 | |
EP0840202A1 (en) | Dynamic peripheral control of I/O buffers in peripherals with modular I/O | |
CN112650558B (zh) | 数据处理方法、装置、可读介质和电子设备 | |
CN116069711B (zh) | 直接内存访问控制器、异构设备、内存访问方法及介质 | |
CN105260332A (zh) | 一种对cpld数据包进行有序存储的方法及系统 | |
CN112181887B (zh) | 数据传输方法及装置 | |
CN113590512A (zh) | 可直连外设设备的自启动dma装置及应用 | |
CN112328519B (zh) | 一种pcie设备、基于sr-iov的数据包有序传输方法和系统 | |
CN112131176B (zh) | 一种基于pcie的fpga快速局部重构方法 | |
CN111290979B (zh) | 数据传输方法、装置及系统 | |
CN115904259B (zh) | 非易失性存储器标准NVMe指令的处理方法及相关装置 | |
US8924683B2 (en) | Storage apparatus and data control method using a relay unit and an interface for communication and storage management | |
CN112256624A (zh) | 用于高速互连网络接口芯片的dma通信装置、芯片、设备及方法 | |
CN116166581A (zh) | 用于pcie总线的队列式dma控制器电路及数据传输方法 | |
CN113742267B (zh) | 一种用于rdma通信设备的dma通信系统及方法 |
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 | ||
PE01 | Entry into force of the registration of the contract for pledge of patent right |
Denomination of invention: A PCIE device, data transmission method and system based on PCIE devices Effective date of registration: 20230412 Granted publication date: 20220211 Pledgee: China Construction Bank Corporation Zhengzhou Jinshui sub branch Pledgor: ZHENGZHOU XINDA JIEAN INFORMATION TECHNOLOGY Co.,Ltd. Registration number: Y2023980037751 |
|
PE01 | Entry into force of the registration of the contract for pledge of patent right |