CN110083461B - 一种基于fpga的多任务处理***及方法 - Google Patents
一种基于fpga的多任务处理***及方法 Download PDFInfo
- Publication number
- CN110083461B CN110083461B CN201910251092.3A CN201910251092A CN110083461B CN 110083461 B CN110083461 B CN 110083461B CN 201910251092 A CN201910251092 A CN 201910251092A CN 110083461 B CN110083461 B CN 110083461B
- Authority
- CN
- China
- Prior art keywords
- fpga
- host
- task
- data packets
- channel
- 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
- 238000000034 method Methods 0.000 title claims abstract description 27
- 238000012545 processing Methods 0.000 claims abstract description 60
- 239000000872 buffer Substances 0.000 claims description 119
- 230000002093 peripheral effect Effects 0.000 claims description 4
- 238000004148 unit process Methods 0.000 claims description 3
- 230000005540 biological transmission Effects 0.000 abstract description 21
- 230000003993 interaction Effects 0.000 description 4
- 238000007726 management method Methods 0.000 description 3
- 230000007547 defect Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
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
- 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
- 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/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Information Transfer Systems (AREA)
Abstract
本发明提供一种基于FPGA的多任务处理***及方法,所述***包括:FPGA芯片、主机和PCIE接口,PCIE接口连接FPGA芯片和主机,并在FPGA芯片与主机之间构建多个虚拟通道;FPGA芯片包括:DMA模块、通道任务分配器、任务处理器及通道任务收集器;DMA模块通过多个虚拟通道与主机进行数据交换,并对不同虚拟通道读/写请求按照预定的优先级关系进行控制;通道任务分配器用于接收各个虚拟通道的数据包并将其分配给任务处理器;任务处理器用于处理各虚拟通道中的数据包;通道任务收集器用于收集任务处理器处理过的数据包并将其按照预定的规则分配至对应的虚拟通道。本发明通过构建多个虚拟通道能够有效提高数据传输效率,同时,解决了传统单通道易出现数据拥塞的问题。
Description
技术领域
本发明涉及计算机技术领域,具体涉及一种基于FPGA的多任务处理***及方法。
背景技术
FPGA(Field-Programmable Gate Array),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。
PCIE(peripheral component interconnect express)作为一种高速数据传输总线和接口标准,通常用于连接FPGA与主机处理器,由于PCIE本身不支持多通道数据传输和处理,当***中有大量任务需要传输处理时,单通道数据传输容易造成数据拥塞的现象,并且DMA在读/写数据时是依序进行的,不利于对数据传输和处理的分级管理。另外,如果有大量的某任务数据占据数据流的前端,则只有将该任务数据传输完成后,才能传输其它任务的数据,容易造成FPGA中的部分处理单元处于闲置状态,资源利用率不高。
发明内容:
本发明针对上述问题,有必要提供一种基于FPGA的多任务处理***及方法,支持多通道数据传输,实现对多任务数据的快速、有序的传输及处理。
本发明第一方面提出一种基于FPGA的多任务处理***,包括:FPGA芯片、主机和PCIE接口,所述PCIE接口连接FPGA芯片和主机,并在FPGA芯片与主机之间构建多个虚拟通道;
所述FPGA芯片,包括:DMA模块、通道任务分配器、任务处理器及通道任务收集器;
所述DMA模块,通过多个虚拟通道与所述主机进行数据交换,并对不同虚拟通道读/写请求按照预定的优先级关系进行控制;
所述通道任务分配器,用于接收各个虚拟通道的数据包并将其分配给任务处理器;
所述任务处理器,包括多个处理单元,多个处理单元分别接收由所述通道任务分配器分配得到的数据包并进行处理;
所述通道任务收集器,用于收集任务处理器处理过的数据包并将其按照预定的规则分配至对应的虚拟通道。
进一步的,所述主机包括:多个主机发送缓冲区和多个主机接收缓冲区,且多个主机发送缓冲区、多个主机接收缓冲区及多个虚拟通道一一对应;
多个主机发送缓冲区,分别用于缓存待传输至FPGA芯片未处理的数据包;
多个主机接收缓冲区,分别用于接收经由FPGA芯片处理过的数据包。
进一步的,所述FPGA芯片还包括:多个虚拟通道命令字FIFO,且多个虚拟通道命令字FIFO与多个虚拟通道、多个主机发送缓冲区一一对应;
多个虚拟通道命令字FIFO,分别用于指示DMA模块在对应的主机发送缓冲区中是否存在需要传输的数据包。
进一步的,所述FPGA芯片还包括:多个FPGA接收缓冲区和多个FPGA发送缓冲区,且多个FPGA接收缓冲区、多个FPGA发送缓冲区及多个虚拟通道一一对应;
多个FPGA接收缓冲区,用于接收DMA模块传输的数据包并进行缓存处理,以等待通道任务分配器读取;
多个FPGA发送缓冲区,用于接收通道任务收集器传输的数据包并进行缓存处理,以等待DMA模块读取。
进一步的,所述FPGA芯片还包括:多个虚拟通道状态字FIFO,且多个虚拟通道状态字FIFO与多个虚拟通道、多个FPGA发送缓冲区一一对应;
多个虚拟通道状态字FIFO,分别用于指示DMA模块在对应的FPGA发送缓冲区中是否存在需要传输的数据包。
进一步的,所述FPGA芯片还包括:多个接收发送基地址寄存器组,且多个接收发送基地址寄存器组与多个虚拟通道一一对应;
多个接收发送基地址寄存器组,分别用于存放多个主机发送缓冲区和多个主机接收缓冲区的基地址。
进一步的,多个接收发送基地址寄存器组采用指示寄存器、发送数据基地址和接收数据基地址相结合的方法,以完成对寄存器组的赋值。
进一步的,每个虚拟通道支持多任务叠加传输,即每个虚拟通道中有不同任务类型的数据包。
本发明第二方面还提出一种基于FPGA的多任务处理方法,应用于上述多任务处理***,包括:
主机将多个待处理数据包分别存放于对应的主机发送缓冲区中,并写入对应的虚拟通道命令字FIFO;
DMA模块根据虚拟通道命令字FIFO指示,按照预定的优先级依序读取多个主机发送缓冲区中的待处理数据包,并将其传输至对应的FPGA接收缓冲区;
通道任务分配器读取所有FPGA接收缓冲区中的待处理数据包并将其分配给任务处理器不同的处理单元;
各处理单元分别根据预定算法对待处理数据包进行处理;
通道任务收集器收集各处理单元处理过的数据包,并将其分配至对应的FPGA发送缓冲区,写入对应的虚拟通道状态字FIFO;
DMA模块根据虚拟通道状态字FIFO指示读取所有FPGA发送缓冲区中的处理过的数据包,并将其按照预定的优先级依序写入至对应的主机接收缓冲区。
进一步的,在主机将多个待处理数据包分别存放于对应的主机发送缓冲区中之前,还包括:
在主机内为每一个虚拟通道申请主机发送缓冲区和主机接收缓冲区;
将所述主机发送缓冲区基地址和主机接收缓冲区基地址发送至FPGA芯片,并锁存在接收发送基地址寄存器组中,以供启动各虚拟通道的DMA读写操作时使用。
本发明具有突出的实质性特点和显著的进步,具体的说:
(1)在需要有不同任务处理时,本发明的主机与FPGA芯片之间通过PCIE接口,实现了多虚拟通道传输的方式进行数据交换,DMA模块根据不同虚拟通道的优先级实现主机与FPGA芯片各虚拟通道之间数据快速有序传输,相比单通道而言,提高了任务处理器的利用率,进一步提高了接口卡的效率。
(2)本发明的DMA模块能够按照预定的优先级依序读/写操作,实现对多个虚拟通道的数据传输管理,使多个虚拟通道在传输数据时更加有序,解决了单通道传输数据易于造成数据拥塞的现象。
(3)本发明通过设定DMA模块对各虚拟通道的读/写优先级控制,可以合理分配不同虚拟通道的数据包至任务处理器中的各处理单元,使得各处理单元的资源利用率最大化,避免因局部处理单元未能及时分配到数据包而造成资源浪费的问题。
(4)本发明的通道任务分配器将接收缓冲区中数据包按照任务类型的不同分配给任务处理器进行任务的处理,并将处理后的数据包发送给通道任务收集器,通道任务收集器按照任务编号和虚拟通道的编号将处理后的数据包分配至原虚拟通道(即本条数据包流入通道任务分配器时所运用的虚拟通道),使得每个虚拟通道可以传输多个任务,支持多任务叠加传输,满足多通道/多用户、多任务处理场景的需求,进一步满足针对复杂任务的处理需求。
(5)本发明中的任务处理器可以根据任务分配器分配的任务,同时支持多种任务的并行处理,提高***处理多种任务的效率。
(6)本发明的主机通过向虚拟通道命令字FIFO写入一个32位的命令字即可启动DMA模块,启动DMA模块的过程仅需要主机与FPGA芯片一次I/O交互,有效减少了主机与FPGA芯片之间的I/O交互次数,进一步提高传输效率。
附图说明:
图1示出本发明一种基于FPGA的多任务处理***的框图。
图2示出本发明一种基于FPGA的多任务处理方法的流程图。
具体实施方式:
为了使本发明能够更加清楚,下面通过具体实施方式,对本发明的技术方案做进一步的详细描述。
图1示出本发明一种基于FPGA的多任务处理***的框图。
如图1所示,本发明第一方面提出一种基于FPGA的多任务处理***,包括:FPGA芯片、主机和PCIE接口,所述PCIE接口连接FPGA芯片和主机,并在FPGA芯片与主机之间构建多个虚拟通道;
所述FPGA芯片,包括:DMA模块、通道任务分配器、任务处理器及通道任务收集器;
所述DMA模块,通过多个虚拟通道与所述主机进行数据交换,并对不同虚拟通道读/写请求按照预定的优先级关系进行控制;
所述通道任务分配器,用于接收各个虚拟通道的数据包并将其分配给任务处理器;
所述任务处理器,包括多个处理单元,多个处理单元分别接收由所述通道任务分配器分配得到的数据包并进行处理;
所述通道任务收集器,用于收集任务处理器处理过的数据包并将其按照预定的规则分配至对应的虚拟通道。
可以理解,多个虚拟通道可以分别对应多个不同的用户设备、功能需求。但不限于此。
本发明所谓的优先级,可以理解为DMA模块按照虚拟通道编号的顺序依次读/写数据包,即DMA模块经由某编号的虚拟通道读/写一个数据包后,跳转到下一编号的虚拟通道,再读/写一个数据包,按照编号的顺序依次从各虚拟通道读/写数据包;也可以理解为通过设定虚拟通道的优先级别关系,当级别高的虚拟通道有数据需要传输和处理时,DMA模块优选传输级别高的虚拟通道的数据包。但不限于此。
优选的,所述多个处理单元可以为密钥协商单元、SM2算法单元、SM3算法单元、SM4算法单元的一种或几种。但不限于此。
可以理解,不同虚拟通道的数据包可能具有不同的任务处理需求,也可能具有相同的任务处理需求;同一个虚拟通道的数据包可能具有相同的任务处理需求,也可能具有不同的任务处理需求。通道任务分配器可以根据数据包的任务处理需求,将其分配至对应的处理单元。例如:一个数据包的任务处理需求是密钥协商,则通道任务分配器将该数据包分配至密钥协商单元;另一个数据包的任务处理需求是加密,则通道任务分配器将该数据包分配至SM4算法单元。但不限于此。
优选的,所述数据包的包头可以包括:任务类型、任务编号信息及任务所使用的虚拟通道的编号信息。
进一步的,所述主机包括:多个主机发送缓冲区和多个主机接收缓冲区,且多个主机发送缓冲区、多个主机接收缓冲区及多个虚拟通道一一对应;
多个主机发送缓冲区,分别用于缓存待传输至FPGA芯片未处理的数据包;
多个主机接收缓冲区,分别用于接收经由FPGA芯片处理过的数据包。
进一步的,所述FPGA芯片还包括:多个虚拟通道命令字FIFO,且多个虚拟通道命令字FIFO与多个虚拟通道、多个主机发送缓冲区一一对应;
多个虚拟通道命令字FIFO,分别用于指示DMA模块在对应的主机发送缓冲区中是否存在需要传输的数据包。
在实际应用中,当主机有任务需要FPGA芯片处理时,在对应的主机发送缓冲区组织完成待处理的数据包,并通过进程应用写入虚拟通道命令字FIFO,指示DMA模块该虚拟通道有需要传输的数据包。具体的,在某个主机发送缓冲区形成一个待处理的数据包,则向对应的虚拟通道命令字FIFO写入一个32位的命令字,且该命令字包含数据包的长度信息。当某个虚拟通道命令字FIFO不空时,则DMA模块读取该虚拟通道命令字FIFO中的命令字,以获取该命令字对应的数据包长度信息,即可对该数据包进行传输处理。可以理解,虚拟通道命令字FIFO中的命令字可以为多个,且多个命令字满足“先进先出”的要求,即先向虚拟通道命令字FIFO写入的命令字应早于后向虚拟通道命令字FIFO写入的命令字被DMA模块读取。
进一步的,所述FPGA芯片还包括:多个FPGA接收缓冲区和多个FPGA发送缓冲区,且多个FPGA接收缓冲区、多个FPGA发送缓冲区及多个虚拟通道一一对应;
多个FPGA接收缓冲区,用于接收DMA模块传输的数据包并进行缓存处理,以等待通道任务分配器读取;
多个FPGA发送缓冲区,用于接收通道任务收集器传输的数据包并进行缓存处理,以等待DMA模块读取。
进一步的,所述FPGA芯片还包括:多个虚拟通道状态字FIFO,且多个虚拟通道状态字FIFO与多个虚拟通道、多个FPGA发送缓冲区一一对应;
多个虚拟通道状态字FIFO,分别用于指示DMA模块在对应的FPGA发送缓冲区中是否存在需要传输的数据包。
在实际应用中,当任务处理器将处理后的数据包发送给通道任务收集器时,通道任务收集器按照任务编号和虚拟通道编号将处理完成的数据包分配至原虚拟通道对应的FPGA发送缓冲区,同时写入对应的虚拟通道状态字FIFO。具体的,在某个FPGA发送缓冲区增加一个已完成处理的数据包,则向虚拟通道状态字FIFO写入一个32位的状态字,且该状态字包含数据包的长度信息。当某个虚拟通道状态字FIFO不空时,则DMA模块读取该虚拟通道状态字FIFO中的状态字,以获取该状态字对应的数据包长度信息,即可对该数据包进行传输处理。可以理解,虚拟通道状态字FIFO中的状态字可以为多个,且多个状态字满足“先进先出”的要求,即先向虚拟通道状态字FIFO写入的状态字应早于后向虚拟通道状态字FIFO写入的状态字被DMA模块读取。
进一步的,所述FPGA芯片还包括:多个接收发送基地址寄存器组,且多个接收发送基地址寄存器组与多个虚拟通道一一对应;
多个接收发送基地址寄存器组,分别用于存放多个主机发送缓冲区和多个主机接收缓冲区的基地址。
优选的,多个接收发送基地址寄存器组采用指示寄存器、发送数据基地址和接收数据基地址相结合的方法,以完成对寄存器组的赋值。通过采用上述方法可以节省了地址空间。
可以理解,在初始化阶段,可以将主机内为每个虚拟通道所申请的主机发送缓冲区和多个主机接收缓冲区的基地址发送至FPGA芯片,然后FPGA芯片锁存各个基地址,作为启动某个虚拟通道的DMA读写操作时使用。
需要说明的是,每个虚拟通道支持多任务叠加传输,即每个虚拟通道中有不同任务类型的数据包,满足多用户、多任务处理场景的需求,当有大量任务需要传输和处理时,能够有效缩短了任务传输时长,进一步提高了任务处理效率。
可以理解,本发明所述的虚拟通道主要用于表示各个主机发送/接收缓冲区与各个FPGA发送/接收缓冲区之间的映射链路关系,并不存在具体的实体线路。通过建立这种映射链路关系,使得主机发送缓冲区1中的数据包只能由FPGA接收缓冲区1接收,而不会由其它FPGA接收缓冲区接收;同样的,FPGA发送缓冲区1中数据包只能由主机接收缓冲区1接收,而不会由其它主机接收缓冲区接收。
优选的,本发明所适用于的PCIE接口协议版本可以为PCIE1.0、PCIE2.0、PCIE3.0,但不限于此。
图2示出本发明一种基于FPGA的多任务处理方法的流程图。
如图2所示,本发明第二方面还提出一种基于FPGA的多任务处理方法,应用于上述多任务处理***,所述多任务处理方法包括:
S201,主机将多个待处理数据包分别存放于对应的主机发送缓冲区中,并写入对应的虚拟通道命令字FIFO;
S202,DMA模块根据虚拟通道命令字FIFO指示,按照预定的优先级依序读取多个主机发送缓冲区中的待处理数据包,并将其传输至对应的FPGA接收缓冲区;
S203,通道任务分配器读取所有FPGA接收缓冲区中的待处理数据包并将其分配给任务处理器不同的处理单元;
S204,各处理单元分别根据预定算法对待处理数据包进行处理;
S205,通道任务收集器收集各处理单元处理过的数据包,并将其分配至对应的FPGA发送缓冲区,同时写入对应的虚拟通道状态字FIFO;
S206,DMA模块根据虚拟通道状态字FIFO指示读取所有FPGA发送缓冲区中的处理过的数据包,并将其按照预定的优先级依序写入至对应的主机接收缓冲区。
根据本发明的实施例,在上述步骤S201之前,还包括:
在主机内为每一个虚拟通道申请主机发送缓冲区和主机接收缓冲区;
将所述主机发送缓冲区基地址和主机接收缓冲区基地址发送至FPGA芯片,并锁存在接收发送基地址寄存器组中,以供启动各虚拟通道的DMA读写操作时使用。
本发明所谓的优先级,可以理解为DMA模块按照虚拟通道编号的顺序依次读/写数据包,即DMA模块经由某编号的虚拟通道读/写一个数据包后,跳转到下一编号的虚拟通道,再读/写一个数据包,按照编号的顺序依次从各虚拟通道读/写数据包;也可以理解为通过设定虚拟通道的优先级别关系,当级别高的虚拟通道有数据需要传输和处理时,DMA模块优选传输级别高的虚拟通道的数据包。但不限于此。
根据本发明的实施例,在上述步骤S201之前,还包括:
主机与FPGA芯片通过PCIE接口建立连接,并对多任务处理***进行初始化操作,其中,所述初始化操作包括在寄存器组中写入主机发送缓冲区和主机接收缓冲区的基地址;
主机发送缓冲区组织完成一个数据包,同时在对应的虚拟通道命令字FIFO写入一个命令字;
当判别虚拟通道命令字FIFO不为空时,即可触发DMA模块自行启动。
根据本发明的实施例,上述步骤S202具体还包括:
DMA模块循环检测每个虚拟通道命令字FIFO是否为空,若某虚拟通道命令字FIFO不为空,说明该虚拟通道有需要传输的数据包,否则,说明该虚拟通道没有需要传输的数据包;
当某虚拟通道命令字FIFO不为空,DMA模块读取该虚拟通道命令字FIFO中的命令字,并将主机发送缓冲区中的数据包传输至对应的FPGA接收缓冲区。
根据本发明的实施例,上述步骤S206具体还包括:
DMA模块循环检测每个虚拟通道状态字FIFO是否为空,若某虚拟通道状态字FIFO不为空,说明该虚拟通道有需要传输的数据包,否则,说明该虚拟通道没有需要传输的数据包;
当某虚拟通道状态字FIFO不为空,DMA模块读取该虚拟通道命令字FIFO中的状态字,并将FPGA发送缓冲区中的数据包传输至对应的主机接收缓冲区。
本发明的多任务处理***及方法具有以下有益效果:
在需要有不同任务处理时,本发明的主机与FPGA芯片之间通过PCIE接口,实现了多虚拟通道传输的方式进行数据交换,DMA模块根据不同虚拟通道的优先级实现主机与FPGA芯片各虚拟通道之间数据快速有序传输,相比单通道而言,提高了任务处理器的利用率,进一步提高了接口卡的效率。
本发明的DMA模块能够按照预定的优先级依序读/写操作,实现对多个虚拟通道的数据传输管理,使多个虚拟通道在传输数据时更加有序,解决了单通道传输数据易于造成数据拥塞的现象。
本发明通过设定DMA模块对各虚拟通道的读/写优先级控制,可以合理分配不同虚拟通道的数据包至任务处理器中的各处理单元,使得各处理单元的资源利用率最大化,避免因局部处理单元未能及时分配到数据包而造成资源浪费的问题。
本发明的通道任务分配器将接收缓冲区中数据包按照任务类型的不同分配给任务处理器进行任务的处理,并将处理后的数据包发送给通道任务收集器,通道任务收集器按照任务编号和虚拟通道的编号将处理后的数据包分配至原虚拟通道(即本条数据包流入通道任务分配器时所运用的虚拟通道),使得每个虚拟通道可以传输多个任务,支持多任务叠加传输,满足多通道/多用户、多任务处理场景的需求,进一步满足针对复杂任务的处理需求。
本发明中的任务处理器可以根据任务分配器分配的任务,同时支持多种任务的并行处理,提高***处理多种任务的效率。
本发明的主机通过向虚拟通道命令字FIFO写入一个32位的命令字即可启动DMA模块,启动DMA模块的过程仅需要主机与FPGA芯片一次I/O交互,有效减少了主机与FPGA芯片之间的I/O交互次数,进一步提高传输效率。
最后应当说明的是:以上实施例仅用以说明本发明的技术方案而非对其限制,所属领域的普通技术人员在不脱离本发明技术方案的精神下,对本发明的具体实施方式进行修改或者对部分技术特征进行等同替换,其均应涵盖在本发明请求保护的技术方案范围当中。
Claims (10)
1.一种基于FPGA的多任务处理***,其特征在于,包括:FPGA芯片、主机和PCIE接口,所述PCIE接口连接FPGA芯片和主机,并在FPGA芯片与主机之间构建多个虚拟通道;
所述FPGA芯片,包括:DMA模块、通道任务分配器、任务处理器及通道任务收集器;
所述DMA模块,通过多个虚拟通道与所述主机进行数据交换,并对不同虚拟通道读/写请求按照预定的优先级关系进行控制;
所述通道任务分配器,用于接收各个虚拟通道的数据包并将其分配给任务处理器;
通道任务分配器将接收缓冲区中数据包按照任务类型的不同分配给任务处理器进行
任务的处理,并将处理后的数据包发送给通道任务收集器,通道任务收集器按照任务编号
和虚拟通道的编号将处理后的数据包分配至原虚拟通道;所述数据包的包头包括:任务类
型、任务编号信息及任务所使用的虚拟通道的编号信息;
所述任务处理器,包括多个处理单元,多个处理单元分别接收由所述通道任务分配器分配得到的数据包并进行处理;
所述通道任务收集器,用于收集任务处理器处理过的数据包并将其按照预定的规则分配至对应的虚拟通道;
多个虚拟通道分别对应多个不同的用户设备、功能需求,通道任务分配器根据数据包的任务处理需求,将其分配至对应的处理单元。
2.根据权利要求1所述的一种基于FPGA的多任务处理***,其特征在于,所述主机包括:多个主机发送缓冲区和多个主机接收缓冲区,且多个主机发送缓冲区、多个主机接收缓冲区及多个虚拟通道一一对应;
多个主机发送缓冲区,分别用于缓存待传输至FPGA芯片未处理的数据包;
多个主机接收缓冲区,分别用于接收经由FPGA芯片处理过的数据包。
3.根据权利要求2所述的一种基于FPGA的多任务处理***,其特征在于,所述FPGA芯片还包括:多个虚拟通道命令字FIFO,且多个虚拟通道命令字FIFO与多个虚拟通道、多个主机发送缓冲区一一对应;
多个虚拟通道命令字FIFO,分别用于指示DMA模块在对应的主机发送缓冲区中是否存在需要传输的数据包。
4.根据权利要求1所述的一种基于FPGA的多任务处理***,其特征在于,所述FPGA芯片还包括:多个FPGA接收缓冲区和多个FPGA发送缓冲区,且多个FPGA接收缓冲区、多个FPGA发送缓冲区及多个虚拟通道一一对应;
多个FPGA接收缓冲区,用于接收DMA模块传输的数据包并进行缓存处理,以等待通道任务分配器读取;
多个FPGA发送缓冲区,用于接收通道任务收集器传输的数据包并进行缓存处理,以等待DMA模块读取。
5.根据权利要求4所述的一种基于FPGA的多任务处理***,其特征在于,所述FPGA芯片还包括:多个虚拟通道状态字FIFO,且多个虚拟通道状态字FIFO与多个虚拟通道、多个FPGA发送缓冲区一一对应;
多个虚拟通道状态字FIFO,分别用于指示DMA模块在对应的FPGA发送缓冲区中是否存在需要传输的数据包。
6.根据权利要求1所述的一种基于FPGA的多任务处理***,其特征在于,所述FPGA芯片还包括:多个接收发送基地址寄存器组,且多个接收发送基地址寄存器组与多个虚拟通道一一对应;
多个接收发送基地址寄存器组,分别用于存放多个主机发送缓冲区和多个主机接收缓冲区的基地址。
7.根据权利要求6所述的一种基于FPGA的多任务处理***,其特征在于,多个接收发送基地址寄存器组采用指示寄存器、发送数据基地址和接收数据基地址相结合的方法,以完成对寄存器组的赋值。
8.根据权利要求1-7任意一项所述的一种基于FPGA的多任务处理***,其特征在于,每个虚拟通道支持多任务叠加传输,即每个虚拟通道中有不同任务类型的数据包。
9.一种基于FPGA的多任务处理方法,应用于权利要求1-8任意一项所述的多任务处理***,其特征在于,包括:
主机将多个待处理数据包分别存放于对应的主机发送缓冲区中,并写入对应的虚拟通道命令字FIFO;
DMA模块根据虚拟通道命令字FIFO指示,按照预定的优先级依序读取多个主机发送缓冲区中的待处理数据包,并将其传输至对应的FPGA接收缓冲区;
通道任务分配器读取所有FPGA接收缓冲区中的待处理数据包并将其分配给任务处理器不同的处理单元;
各处理单元分别根据预定算法对待处理数据包进行处理;
通道任务收集器收集各处理单元处理过的数据包,并将其分配至对应的FPGA发送缓冲区,写入对应的虚拟通道状态字FIFO;
DMA模块根据虚拟通道状态字FIFO指示读取所有FPGA发送缓冲区中的处理过的数据包,并将其按照预定的优先级依序写入至对应的主机接收缓冲区。
10.根据权利要求9所述的一种基于FPGA的多任务处理方法,其特征在于,在主机将多个待处理数据包分别存放于对应的主机发送缓冲区中之前,还包括:
在主机内为每一个虚拟通道申请主机发送缓冲区和主机接收缓冲区;
将所述主机发送缓冲区基地址和主机接收缓冲区基地址发送至FPGA芯片,并锁存在接收发送基地址寄存器组中,以供启动各虚拟通道的DMA读写操作时使用。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910251092.3A CN110083461B (zh) | 2019-03-29 | 2019-03-29 | 一种基于fpga的多任务处理***及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910251092.3A CN110083461B (zh) | 2019-03-29 | 2019-03-29 | 一种基于fpga的多任务处理***及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110083461A CN110083461A (zh) | 2019-08-02 |
CN110083461B true CN110083461B (zh) | 2021-09-24 |
Family
ID=67413917
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910251092.3A Active CN110083461B (zh) | 2019-03-29 | 2019-03-29 | 一种基于fpga的多任务处理***及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110083461B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110659232B (zh) * | 2019-09-12 | 2021-06-29 | 苏州浪潮智能科技有限公司 | 一种事件信息传输方法、装置、设备及存储介质 |
CN110831010B (zh) * | 2019-10-21 | 2024-04-16 | 上海鹄恩信息科技有限公司 | 一种多通道数据发送及接收方法及装置和数据传输*** |
CN110851363A (zh) * | 2019-11-12 | 2020-02-28 | 广东电网有限责任公司 | 一种云测试***及方法 |
WO2021179218A1 (zh) * | 2020-03-11 | 2021-09-16 | 深圳市大疆创新科技有限公司 | 直接内存存取单元、处理器、设备、处理方法及存储介质 |
CN112181890A (zh) * | 2020-09-30 | 2021-01-05 | 北京锐马视讯科技有限公司 | Pcie_dma数据传输装置和方法及*** |
CN112511215B (zh) * | 2020-11-24 | 2023-03-31 | 泰斗微电子科技有限公司 | 一种数据信道切换方法及终端设备 |
CN112631969B (zh) * | 2020-12-30 | 2024-01-30 | 凌云光技术股份有限公司 | 一种基于pcie接口的虚拟多通道数据传输方法和*** |
CN112765059A (zh) * | 2021-01-20 | 2021-05-07 | 苏州浪潮智能科技有限公司 | 一种基于fpga的dma设备及dma数据搬移方法 |
CN113422738B (zh) * | 2021-05-18 | 2023-07-21 | 上海赫千电子科技有限公司 | 一种智能主机的mcu通信服务方法 |
CN114064550A (zh) * | 2021-11-27 | 2022-02-18 | 积成电子股份有限公司 | 一种基于fpga和emac/gmac控制器的多cpu通信***与方法 |
CN115988161B (zh) * | 2023-03-17 | 2023-06-06 | 上海芯浦科技有限公司 | 一种视频传输设备及传输方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN203858578U (zh) * | 2014-05-30 | 2014-10-01 | 无锡市同飞科技有限公司 | 一种多通道输入/输出设备自适应访问控制*** |
CN104679702A (zh) * | 2013-11-28 | 2015-06-03 | 中国航空工业集团公司第六三一研究所 | 多路高速串行接口控制器 |
CN106951388A (zh) * | 2017-03-16 | 2017-07-14 | 湖南博匠信息科技有限公司 | 一种基于PCIe的DMA数据传输方法及*** |
CN109032010A (zh) * | 2018-07-17 | 2018-12-18 | 阿里巴巴集团控股有限公司 | Fpga器件及基于其的数据处理方法 |
CN109471816A (zh) * | 2018-11-06 | 2019-03-15 | 西安微电子技术研究所 | 一种基于描述符的pcie总线dma控制器及数据传输控制方法 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100375484C (zh) * | 2003-12-31 | 2008-03-12 | 中兴通讯股份有限公司 | Pos-phy总线与pci总线间的数据包转发的装置 |
US9081501B2 (en) * | 2010-01-08 | 2015-07-14 | International Business Machines Corporation | Multi-petascale highly efficient parallel supercomputer |
US9971701B2 (en) * | 2015-10-16 | 2018-05-15 | International Business Machines Corporation | Method to share a coherent accelerator context inside the kernel |
CN106502953B (zh) * | 2016-11-16 | 2019-03-15 | 天津津航计算技术研究所 | 提高1553总线传输带宽的方法 |
CN107766270B (zh) * | 2017-10-20 | 2020-05-26 | 深圳市风云实业有限公司 | 用于PCIe设备的数据读取管理方法及装置 |
CN108255755B (zh) * | 2017-12-08 | 2020-03-27 | 天津津航计算技术研究所 | 基于fpga的pcie通用多功能通信接口模块 |
-
2019
- 2019-03-29 CN CN201910251092.3A patent/CN110083461B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104679702A (zh) * | 2013-11-28 | 2015-06-03 | 中国航空工业集团公司第六三一研究所 | 多路高速串行接口控制器 |
CN203858578U (zh) * | 2014-05-30 | 2014-10-01 | 无锡市同飞科技有限公司 | 一种多通道输入/输出设备自适应访问控制*** |
CN106951388A (zh) * | 2017-03-16 | 2017-07-14 | 湖南博匠信息科技有限公司 | 一种基于PCIe的DMA数据传输方法及*** |
CN109032010A (zh) * | 2018-07-17 | 2018-12-18 | 阿里巴巴集团控股有限公司 | Fpga器件及基于其的数据处理方法 |
CN109471816A (zh) * | 2018-11-06 | 2019-03-15 | 西安微电子技术研究所 | 一种基于描述符的pcie总线dma控制器及数据传输控制方法 |
Also Published As
Publication number | Publication date |
---|---|
CN110083461A (zh) | 2019-08-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110083461B (zh) | 一种基于fpga的多任务处理***及方法 | |
JP3641675B2 (ja) | 分割バッファアーキテクチュア | |
US6577542B2 (en) | Scratchpad memory | |
US20170024340A1 (en) | Delivering interrupts through non-transparent bridges in a pci-express network | |
CN109558344B (zh) | 一种适用于网络传输的dma传输方法及dma控制器 | |
US10496427B2 (en) | Method for managing memory of virtual machine, physical host, PCIE device and configuration method thereof, and migration management device | |
US6889266B1 (en) | Method for delivering packet boundary or other metadata to and from a device using direct memory controller | |
CN110618956B (zh) | 一种bmc云平台资源池化方法与*** | |
CN105487990A (zh) | 一种cpu与芯片之间传输消息报文的方法及装置 | |
WO2024113704A1 (zh) | 一种pcie数据传输方法及相关装置 | |
CN112035898A (zh) | 多节点多通道高速并行处理方法及*** | |
CN101645058B (zh) | 命令处理方法、命令发送方法、装置及*** | |
CN102750245B (zh) | 报文接收方法、报文接收模块、装置及*** | |
CN115718711A (zh) | 一种dma数据传输的***和方法 | |
US20060259648A1 (en) | Concurrent read response acknowledge enhanced direct memory access unit | |
CN112328520B (zh) | 一种pcie设备、基于pcie设备的数据传输方法和*** | |
KR102303424B1 (ko) | 랜덤 액세스 메모리를 포함하는 하나 이상의 처리 유닛을 위한 직접 메모리 액세스 제어 장치 | |
CN116166581A (zh) | 用于pcie总线的队列式dma控制器电路及数据传输方法 | |
CN115994115A (zh) | 芯片控制方法、芯片组及电子设备 | |
CN112328519B (zh) | 一种pcie设备、基于sr-iov的数据包有序传输方法和*** | |
US7451254B2 (en) | System and method for adaptive buffer allocation in a memory device interface | |
CN100472496C (zh) | 数据传输装置 | |
CN103744816B (zh) | 通用串行总线设备以及其数据传输方法 | |
CN101334763B (zh) | 主机与设备之间的数据传送方法 | |
CN104850517A (zh) | 一种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 Multi task Processing System and Method Based on FPGA Granted publication date: 20210924 Pledgee: Bank of Zhengzhou Co.,Ltd. Zhongyuan Science and Technology City Sub branch Pledgor: ZHENGZHOU XINDA JIEAN INFORMATION TECHNOLOGY Co.,Ltd. Registration number: Y2024980007004 |
|
PE01 | Entry into force of the registration of the contract for pledge of patent right |