CN112328519A - 一种pcie设备、基于sr-iov的数据包有序传输方法和系统 - Google Patents

一种pcie设备、基于sr-iov的数据包有序传输方法和系统 Download PDF

Info

Publication number
CN112328519A
CN112328519A CN202011064015.6A CN202011064015A CN112328519A CN 112328519 A CN112328519 A CN 112328519A CN 202011064015 A CN202011064015 A CN 202011064015A CN 112328519 A CN112328519 A CN 112328519A
Authority
CN
China
Prior art keywords
tlp
packet
request
packets
completion
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.)
Granted
Application number
CN202011064015.6A
Other languages
English (en)
Other versions
CN112328519B (zh
Inventor
苏庆会
吴世勇
李银龙
冯驰
王凯霖
王斌
王中原
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhengzhou Xinda Jiean Information Technology Co Ltd
Original Assignee
Zhengzhou Xinda Jiean Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Zhengzhou Xinda Jiean Information Technology Co Ltd filed Critical Zhengzhou Xinda Jiean Information Technology Co Ltd
Priority to CN202011064015.6A priority Critical patent/CN112328519B/zh
Publication of CN112328519A publication Critical patent/CN112328519A/zh
Application granted granted Critical
Publication of CN112328519B publication Critical patent/CN112328519B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/385Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明提供一种PCIE设备、基于SR‑IOV的数据包有序传输方法和系统;该方法包括:生成N个各自独立的DMA读请求;按照预设的轮询规则轮询N个DMA读请求中的TLP请求包,即:当前轮询过程中,分别先后收集一个DMA读请求中的TLP请求包,直至收集完一个DMA读请求中的所有TLP请求包;然后进行下一个DMA读请求的轮询过程;为各个TLP请求包分配排序标签;将携带有排序标签的TLP请求包高速传输给主机,主机形成对应的TLP完成包,每个TLP完成包均携带有请求者标识信息和排序标签;统一接收主机通过PCIE内核高速传输的TLP完成包,根据各TLP完成包的排序标签对各TLP完成包进行统一排序;根据各TLP完成包携带的请求者标识信息依次返回统一排序后的TLP完成包。

Description

一种PCIE设备、基于SR-IOV的数据包有序传输方法和系统
技术领域
本发明涉及计算机技术领域,尤其涉及一种PCIE设备、基于SR-IOV的数据包有序传输方法和系统。
背景技术
随着现代社会科技的发展,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完成包的顺序更加混乱。
发明内容
针对现有的数据传输方法存在的TLP完成包的乱序问题,本发明提供一种PCIE设备、基于SR-IOV的数据包有序传输方法和系统。
第一方面,本发明提供一种基于SR-IOV的数据包有序传输方法,该方法包括:
步骤1:生成N个各自独立的DMA读请求,所述DMA读请求包括至少一个TLP请求包,每个所述TLP请求包均携带有请求者标识信息,且大小均不会跨越4KB边界;其中,N≥2;
步骤2:按照预设的轮询规则轮询N个DMA读请求中的TLP请求包,所述预设的轮询规则为:当前轮询过程中,分别先后收集一个DMA读请求中的TLP请求包,直至收集完一个DMA读请求中的所有TLP请求包;待当前DMA读请求已被收集完所有TLP请求包,则进行下一个DMA读请求的轮询过程;
步骤3:根据收集先后顺序为各个TLP请求包分配排序标签;
步骤4:通过PCIE内核将携带有排序标签的TLP请求包高速传输给主机,以供主机分别对接收到的TLP请求包进行处理,形成对应的TLP完成包,每个所述TLP完成包均携带有请求者标识信息和排序标签;
步骤5:统一接收主机通过PCIE内核高速传输的TLP完成包,根据各TLP完成包的排序标签对各TLP完成包进行统一排序;
步骤6:根据各TLP完成包携带的请求者标识信息依次返回统一排序后的TLP完成包,直至返回的所有TLP完成包的大小等于其对应的DMA读请求的大小。
进一步地,在根据收集先后顺序为各个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请求包,直至收集完一个DMA读请求中的所有TLP请求包;待当前DMA读请求已被收集完所有TLP请求包,则进行下一个DMA读请求的轮询过程;
所述统一发送单元,用于根据收集先后顺序为各个TLP请求包分配排序标签,通过PCIE内核将携带有排序标签的TLP请求包高速传输给主机,以供主机分别对接收到的TLP请求包进行处理,形成对应的TLP完成包,每个所述TLP完成包均携带有请求者标识信息和排序标签;
所述统一排序单元,用于统一接收主机通过PCIE内核高速传输的TLP完成包,根据各TLP完成包的排序标签对各TLP完成包进行统一排序;
所述分配单元,用于根据各TLP完成包携带的请求者标识信息依次返回统一排序后的TLP完成包至对应的虚拟功能模块,直至返回的所有TLP完成包的大小等于其对应的DMA读请求的大小。
进一步地,所述统一发送单元在根据收集先后顺序为各个TLP请求包分配排序标签时,排序标签是依次连续递增的。
进一步地,所述统一排序单元,包括M个缓冲区,具体用于按照排序标签将TLP完成包填入对应的缓冲区;其中,每个缓冲区均具有唯一的顺序标识,一个缓冲区用于接收一个排序标签的TLP完成包,M≥R,R为排序标签最大值。
进一步地,每个所述TLP完成包的载荷数据量不大于预设Payload值;其中,所述Payload为所述PCIE设备与所述主机共同协商制定的一个TLP完成包所允许装载数据的最大长度。
第三方面,本发明提供一种基于SR-IOV的数据包有序传输系统,包括上述述的PCIE设备和主机;
所述主机,用于接收PCIE设备发送的TLP请求包并进行处理,以形成对应的TLP完成包并返回给PCIE设备。
本发明的有益效果:
本发明提供的一种基于SR-IOV的数据包有序传输方法,通过对TLP请求包统一分配排序标签,在PCIE设备收到主机返回的TLP完成包,可以根据TLP完成包携带的排序标签对TLP完成包进行重新排序,实现对返回的TLP完成包出现乱序现象的管理。同时,本发明通过对TLP请求包进行统一分配排序标签和对TLP完成包统一重新排序即可实现对多个独立请求者(即生成DMA读请求的功能模块,例如基于SR-IOV技术的虚拟功能模块)的收发包(TLP请求包、TLP完成包)进行统一排序管理,相较于传统每个虚拟功能模块均需要配备独立排序管理模块的方式,本发明的统一排序管理方式能够有效节省了内存空间,节省资源。
本发明提供的PCIE设备和基于SR-IOV的数据包有序传输系统,具有上述同样的有益效果,此处不再赘述。
附图说明
图1为本发明实施例提供的一种基于SR-IOV的数据包有序传输方法的流程示意图;
图2为本发明实施例提供的一种基于SR-IOV的数据包有序传输系统的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例1
如图1所示,本发明实施例提供一种基于SR-IOV的数据包有序传输方法,该方法包括:
S101:PCIE设备生成N个各自独立的DMA读请求,所述DMA读请求包括至少一个TLP请求包,每个所述TLP请求包均携带有请求者标识信息,且大小均不会跨越4KB边界;其中,N≥2;
具体地,所述标识信息具体表征为BAR ID、功能号等信息,但不限于此。
S102:PCIE设备按照预设的轮询规则轮询N个DMA读请求中的TLP请求包,所述预设的轮询规则为:按照预设的轮询规则轮询N个DMA读请求中的TLP请求包,所述预设的轮询规则为:当前轮询过程中,分别先后收集一个DMA读请求中的TLP请求包,直至收集完一个DMA读请求中的所有TLP请求包;待当前DMA读请求已被收集完所有TLP请求包,则进行下一个DMA读请求的轮询过程。
S103:PCIE设备根据收集先后顺序为各个TLP请求包分配排序标签;
S104:PCIE设备通过PCIE内核将携带有排序标签的TLP请求包高速传输给主机,以供主机分别对接收到的TLP请求包进行处理,形成对应的TLP完成包,每个所述TLP完成包均携带有请求者标识信息和排序标签;
S105:PCIE设备统一接收主机通过PCIE内核高速传输的TLP完成包,根据各TLP完成包的排序标签对各TLP完成包进行统一排序;
S106:PCIE设备根据各TLP完成包携带的请求者标识信息依次返回统一排序后的TLP完成包,直至返回的所有TLP完成包的大小等于其对应的DMA读请求的大小。
本发明实施例通过对TLP请求包统一分配排序标签,在PCIE设备收到主机返回的TLP完成包,可以根据TLP完成包携带的排序标签对TLP完成包进行重新排序,实现对返回的TLP完成包出现乱序现象的管理。同时,本发明实施例通过对TLP请求包进行统一分配排序标签和对TLP完成包统一重新排序即可实现对多个独立请求者(即生成DMA读请求的功能模块,例如基于SR-IOV技术的虚拟功能模块)的收发包(TLP请求包、TLP完成包)进行统一排序管理,相较于传统每个虚拟功能模块均需要配备独立排序管理模块的方式,本发明实施例的统一排序管理方式能够有效节省了内存空间,节省资源。
实施例2
以两个DMA读请求的数据传输过程为例,本发明实施例提供的一种基于SR-IOV的数据包有序传输方法,该方法包括:
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,接着收集请求包ID1-2,再接着收集请求包ID1-3,最后收集请求包ID1-4,当前DMA读请求的轮询过程结束;然后,进行第二DMA读请求的轮询过程:先收集第二DMA读请求中的请求包ID2-1,接着收集请求包ID2-2,最后收集请求包ID2-3。
S203:根据收集先后顺序为各个TLP请求包分配排序标签;
具体地,在根据收集先后顺序为各个TLP请求包分配排序标签时,排序标签是依次连续递增的。作为一种可实施方式,排序标签的取值范围为0~R;通过轮询排序标签的取值范围对各个TLP请求包分配相应的排序标签。
例如,第一DMA读请求和第二DMA读请求的7个请求包{ID1-1,ID1-2,ID1-3,ID1-4,ID2-1,ID2-2,ID2-3}的排序标签依次为:0,1,2,3,4,5,6;
S204:通过PCIE内核将携带有排序标签的TLP请求包高速传输给主机,以供主机分别对接收到的TLP请求包进行处理,形成对应的TLP完成包,每个所述TLP完成包均携带有请求者标识信息和排序标签;
具体地,通过PCIE内核传输至主机的TLP请求包携带有排序标签和请求者标识信息,主机处理后形成的TLP完成包也对应携带有排序标签和请求者标识信息。每个所述TLP完成包的载荷数据量不大于预设Payload值;其中,所述Payload为所述PCIE设备与所述主机共同协商制定的一个TLP完成包所允许装载数据的最大长度。
例如,主机处理后形成7个TLP完成包,本实施例中的7个TLP完成包分别为:R-ID1-0,R-ID1-1,R-ID1-2,R-ID1-3,R-ID2-4,R-ID2-5,R-ID2-6。其中,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-ID1-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完成包,直至返回的所有TLP完成包的大小等于其对应的DMA读请求的大小。
具体地,依次将缓冲区0、1、2、3、4、5、6内的TLP完成包根据各TLP完成包携带的请求者标识信息依次返回至请求者。例如,先将缓冲区0中的R-ID1-0返回至生成第一DMA读请求的请求者;再将缓冲区1中的R-ID1-1返回至生成第一DMA读请求的请求者;以此类推,直至将缓冲区3中的R-ID1-3返回至生成第一DMA读请求的请求者;此时TLP完成包R-ID1-0、R-ID1-1、R-ID1-2和R-ID1-3的总大小等于第一DMA读请求的大小,即表示第一DMA读请求已被返回所有TLP完成包。紧接着,先将缓冲区4中的R-ID2-4返回至生成第二DMA读请求的请求者,再将缓冲区5中的R-ID2-5返回至生成第二DMA读请求的请求者,最后将缓冲区6中的R-ID2-6返回至生成第二DMA读请求的请求者,此时TLP完成包R-ID2-4、R-ID2-5、R-ID2-6的总大小等于第二DMA读请求的大小,即表示第二DMA读请求已被返回所有TLP完成包。
实施例3
对应上述的基于SR-IOV的数据包有序传输方法,如图2所示,本发明实施例还提供一种PCIE设备,包括数据传输模块、PCIE内核以及基于SR-IOV技术的N个虚拟功能模块;所述数据传输模块包括收集单元、统一发送单元、统一排序单元和分配单元;
N个所述虚拟功能模块用于生成N个各自独立的DMA读请求,所述DMA读请求包括至少一个TLP请求包,每个所述TLP请求包均携带有请求者标识信息,且大小均不会跨越4KB边界;其中,N≥2。所述收集单元用于按照预设的轮询规则轮询N个DMA读请求中的TLP请求包,所述预设的轮询规则为:当前轮询过程中,分别先后收集一个DMA读请求中的TLP请求包,直至收集完一个DMA读请求中的所有TLP请求包;待当前DMA读请求已被收集完所有TLP请求包,则进行下一个DMA读请求的轮询过程。所述统一发送单元用于根据收集先后顺序为各个TLP请求包分配排序标签,通过PCIE内核将携带有排序标签的TLP请求包高速传输给主机,以供主机分别对接收到的TLP请求包进行处理,形成对应的TLP完成包,每个所述TLP完成包均携带有请求者标识信息和排序标签。所述统一排序单元用于统一接收主机通过PCIE内核高速传输的TLP完成包,根据各TLP完成包的排序标签对各TLP完成包进行统一排序。所述分配单元用于根据各TLP完成包携带的请求者标识信息依次返回统一排序后的TLP完成包至对应的虚拟功能模块,直至返回的所有TLP完成包的大小等于其对应的DMA读请求的大小。
具体地,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读请求被拆分成r个TLP请求包);第二虚拟功能模块形成有第二DMA读请求,并按照预定的读取规则将第二DMA读请求拆分成多个TLP请求包(假设第二DMA读请求被拆分成s个TLP请求包);所述收集单元先后读取第一虚拟功能模块的r个TLP请求包,并由统一发送单元对该r个TLP请求包分配排序标签x、x+1、x+2……x+r-1,然后将携带有排序标签x、x+1、x+2……x+r-1的TLP请求包转交给PCIE内核高速传输给主机;然后所述收集单元先后读取第二虚拟功能模块的s个TLP请求包,并由统一发送单元对该s个TLP请求包分配排序标签x+r、x+r+1、x+r+2……x+r+s-1,然后将携带有排序标签x+r、x+r+1、x+r+2……x+r+s-1的TLP请求包转交给PCIE内核高速传输给主机。
作为一种可实施方式,所述读取规则表征为:通常DMA读请求应按照最大读请求长度进行拆分形成多个TLP请求包;如果某DMA读请求的长度小于最大读请求长度,则该DMA读请求直接形成单个TLP请求包;如果某DMA读请求跨4KB边界,则遵循拆分的每个TLP请求包均不会跨越4KB边界。
作为一种可实施方式,所述主机接收到第一DMA读请求的TLP请求包和第二DMA读请求的TLP请求包,并对其进行处理以形成对应的TLP完成包,且每个TLP完成包均携带有对应的排序标签;当所述统一排序单元接收到排序标签为0的至少一个TLP完成包,根据其排序标签0统一填入缓冲区0中;当所述统一排序单元接收到排序标签为1的至少一个TLP完成包,根据其排序标签1统一填入缓冲区1中;以上述方式按照排序标签将接收的TLP完成包填入对应的缓冲区;然后,所述分配单元轮询多个缓冲区0、1、2、3、…、M并按照在前的TLP完成包携带的标识信息识别出第一虚拟功能模块,然后依次将各个缓冲区的TLP完成包顺序分配给第一虚拟功能模块,直到分配给第一虚拟功能模块的TLP完成包的总量大小达到第一DMA读请求的大小,则判定已将TLP完成包全部返回给第一虚拟功能模块;然后继续按照后续在前的TLP完成包携带的标识信息识别出第二虚拟功能模块,然后依次将各个缓冲区的TLP完成包顺序分配给第二虚拟功能模块,直到分配给第二虚拟功能模块的TLP完成包的总量大小达到第二DMA读请求的大小,则判定已将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完成包分别有序的写入对应的虚拟功能模块中。
实施例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.一种基于SR-IOV的数据包有序传输方法,其特征在于,包括:
步骤1:生成N个各自独立的DMA读请求,所述DMA读请求包括至少一个TLP请求包,每个所述TLP请求包均携带有请求者标识信息,且大小均不会跨越4KB边界;其中,N≥2;
步骤2:按照预设的轮询规则轮询N个DMA读请求中的TLP请求包,所述预设的轮询规则为:当前轮询过程中,分别先后收集一个DMA读请求中的TLP请求包,直至收集完一个DMA读请求中的所有TLP请求包;待当前DMA读请求已被收集完所有TLP请求包,则进行下一个DMA读请求的轮询过程;
步骤3:根据收集先后顺序为各个TLP请求包分配排序标签;
步骤4:通过PCIE内核将携带有排序标签的TLP请求包高速传输给主机,以供主机分别对接收到的TLP请求包进行处理,形成对应的TLP完成包,每个所述TLP完成包均携带有请求者标识信息和排序标签;
步骤5:统一接收主机通过PCIE内核高速传输的TLP完成包,根据各TLP完成包的排序标签对各TLP完成包进行统一排序;
步骤6:根据各TLP完成包携带的请求者标识信息依次返回统一排序后的TLP完成包,直至返回的所有TLP完成包的大小等于其对应的DMA读请求的大小。
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请求包,直至收集完一个DMA读请求中的所有TLP请求包;待当前DMA读请求已被收集完所有TLP请求包,则进行下一个DMA读请求的轮询过程;
所述统一发送单元,用于根据收集先后顺序为各个TLP请求包分配排序标签,通过PCIE内核将携带有排序标签的TLP请求包高速传输给主机,以供主机分别对接收到的TLP请求包进行处理,形成对应的TLP完成包,每个所述TLP完成包均携带有请求者标识信息和排序标签;
所述统一排序单元,用于统一接收主机通过PCIE内核高速传输的TLP完成包,根据各TLP完成包的排序标签对各TLP完成包进行统一排序;
所述分配单元,用于根据各TLP完成包携带的请求者标识信息依次返回统一排序后的TLP完成包至对应的虚拟功能模块,直至返回的所有TLP完成包的大小等于其对应的DMA读请求的大小。
6.根据权利要求5所述的PCIE设备,其特征在于,所述统一发送单元在根据收集先后顺序为各个TLP请求包分配排序标签时,排序标签是依次连续递增的。
7.根据权利要求5所述的PCIE设备,其特征在于,所述统一排序单元,包括M个缓冲区,具体用于按照排序标签将TLP完成包填入对应的缓冲区;其中,每个缓冲区均具有唯一的顺序标识,一个缓冲区用于接收一个排序标签的TLP完成包,M≥R,R为排序标签最大值。
8.根据权利要求5所述的PCIE设备,其特征在于,每个所述TLP完成包的载荷数据量不大于预设Payload值;其中,所述Payload为所述PCIE设备与所述主机共同协商制定的一个TLP完成包所允许装载数据的最大长度。
9.一种基于SR-IOV的数据包有序传输系统,其特征在于,包括如权利要求5至8任一所述的PCIE设备和主机;
所述主机,用于接收PCIE设备发送的TLP请求包并进行处理,以形成对应的TLP完成包并返回给PCIE设备。
CN202011064015.6A 2020-09-30 2020-09-30 一种pcie设备、基于sr-iov的数据包有序传输方法和系统 Active CN112328519B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011064015.6A CN112328519B (zh) 2020-09-30 2020-09-30 一种pcie设备、基于sr-iov的数据包有序传输方法和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011064015.6A CN112328519B (zh) 2020-09-30 2020-09-30 一种pcie设备、基于sr-iov的数据包有序传输方法和系统

Publications (2)

Publication Number Publication Date
CN112328519A true CN112328519A (zh) 2021-02-05
CN112328519B CN112328519B (zh) 2022-02-18

Family

ID=74314437

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011064015.6A Active CN112328519B (zh) 2020-09-30 2020-09-30 一种pcie设备、基于sr-iov的数据包有序传输方法和系统

Country Status (1)

Country Link
CN (1) CN112328519B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113485951A (zh) * 2021-07-31 2021-10-08 郑州信大捷安信息技术股份有限公司 一种基于fpga的dma读操作实现方法、fpga设备以及通信系统

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5404522A (en) * 1991-09-18 1995-04-04 International Business Machines Corporation System for constructing a partitioned queue of DMA data transfer requests for movements of data between a host processor and a digital signal processor
US7124231B1 (en) * 2002-06-14 2006-10-17 Cisco Technology, Inc. Split transaction reordering circuit
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数据包进行有序存储的方法及系统
CN107766270A (zh) * 2017-10-20 2018-03-06 深圳市风云实业有限公司 用于PCIe设备的数据读取管理方法及装置
CN110688333A (zh) * 2019-09-29 2020-01-14 郑州信大捷安信息技术股份有限公司 一种基于pcie的dma数据传输系统及方法
CN111651396A (zh) * 2020-04-26 2020-09-11 尧云科技(西安)有限公司 一种优化的pcie完成包乱序管理电路实现方法

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5404522A (en) * 1991-09-18 1995-04-04 International Business Machines Corporation System for constructing a partitioned queue of DMA data transfer requests for movements of data between a host processor and a digital signal processor
US7124231B1 (en) * 2002-06-14 2006-10-17 Cisco Technology, Inc. Split transaction reordering circuit
CN103049240A (zh) * 2011-10-13 2013-04-17 北京同步科技有限公司 Pci-e设备及其接收数据重排序方法
CN102571609A (zh) * 2012-03-01 2012-07-11 重庆中天重邮通信技术有限公司 快速串行接口pci-e协议数据完成包的重组排序方法
CN105260332A (zh) * 2015-09-09 2016-01-20 北京三未信安科技发展有限公司 一种对cpld数据包进行有序存储的方法及系统
CN107766270A (zh) * 2017-10-20 2018-03-06 深圳市风云实业有限公司 用于PCIe设备的数据读取管理方法及装置
CN110688333A (zh) * 2019-09-29 2020-01-14 郑州信大捷安信息技术股份有限公司 一种基于pcie的dma数据传输系统及方法
CN111651396A (zh) * 2020-04-26 2020-09-11 尧云科技(西安)有限公司 一种优化的pcie完成包乱序管理电路实现方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
业青青: "《基于FPGA的PCI Express 3.0 DMA控制器关键技术研究》", 《中国优秀硕士学位论文全文数据库(信息科技辑)》 *
彭涛: "《基于PCIe总线的高速数据传输技术研究》", 《中国优秀硕士学位论文全文数据库(信息科技辑)》 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113485951A (zh) * 2021-07-31 2021-10-08 郑州信大捷安信息技术股份有限公司 一种基于fpga的dma读操作实现方法、fpga设备以及通信系统
CN113485951B (zh) * 2021-07-31 2022-02-11 郑州信大捷安信息技术股份有限公司 一种基于fpga的dma读操作实现方法、fpga设备以及通信系统

Also Published As

Publication number Publication date
CN112328519B (zh) 2022-02-18

Similar Documents

Publication Publication Date Title
CN110083461B (zh) 一种基于fpga的多任务处理系统及方法
US7975120B2 (en) Dynamic allocation of message buffers
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
CN109558344B (zh) 一种适用于网络传输的dma传输方法及dma控制器
JPH08508592A (ja) 通信ネットワークのデータステーション内のデータバッファ方法および装置
CN114553635B (zh) Dpu网络设备中的数据处理方法、数据交互方法及产品
CN112328520B (zh) 一种pcie设备、基于pcie设备的数据传输方法和系统
CN112650558B (zh) 数据处理方法、装置、可读介质和电子设备
CN116069711B (zh) 直接内存访问控制器、异构设备、内存访问方法及介质
CN113225307A (zh) 卸载引擎网卡中描述符预读取的优化方法、系统及终端
CN113590512B (zh) 可直连外设设备的自启动dma装置及应用
CN105260332A (zh) 一种对cpld数据包进行有序存储的方法及系统
CN111290979B (zh) 数据传输方法、装置及系统
CN112181887B (zh) 数据传输方法及装置
CN112328519B (zh) 一种pcie设备、基于sr-iov的数据包有序传输方法和系统
CN111258932A (zh) 加速ufs协议处理的方法与存储控制器
CN112256624B (zh) 用于高速互连网络接口芯片的dma通信装置、芯片、设备及方法
CN115904259B (zh) 非易失性存储器标准NVMe指令的处理方法及相关装置
CN115563038B (zh) 基于dma控制器的数据处理系统、方法和数据处理设备
CN109167740B (zh) 一种数据传输的方法和装置
CN116166581A (zh) 用于pcie总线的队列式dma控制器电路及数据传输方法
CN113742267B (zh) 一种用于rdma通信设备的dma通信系统及方法
CN112597080B (zh) 读请求控制装置及方法以及存储器控制器
CN114020662A (zh) 桥接模块、数据传输系统和数据传输方法
CN112948298A (zh) 一种报文处理方法及装置

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
PE01 Entry into force of the registration of the contract for pledge of patent right

Denomination of invention: A PCIE device, SR-IOV based data packet ordered transmission method and system

Effective date of registration: 20230412

Granted publication date: 20220218

Pledgee: China Construction Bank Corporation Zhengzhou Jinshui sub branch

Pledgor: ZHENGZHOU XINDA JIEAN INFORMATION TECHNOLOGY Co.,Ltd.

Registration number: Y2023980037751