CN110083461B - 一种基于fpga的多任务处理系统及方法 - Google Patents

一种基于fpga的多任务处理系统及方法 Download PDF

Info

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
Application number
CN201910251092.3A
Other languages
English (en)
Other versions
CN110083461A (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 CN201910251092.3A priority Critical patent/CN110083461B/zh
Publication of CN110083461A publication Critical patent/CN110083461A/zh
Application granted granted Critical
Publication of CN110083461B publication Critical patent/CN110083461B/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/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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes

Abstract

本发明提供一种基于FPGA的多任务处理系统及方法,所述系统包括:FPGA芯片、主机和PCIE接口,PCIE接口连接FPGA芯片和主机,并在FPGA芯片与主机之间构建多个虚拟通道;FPGA芯片包括:DMA模块、通道任务分配器、任务处理器及通道任务收集器;DMA模块通过多个虚拟通道与主机进行数据交换,并对不同虚拟通道读/写请求按照预定的优先级关系进行控制;通道任务分配器用于接收各个虚拟通道的数据包并将其分配给任务处理器;任务处理器用于处理各虚拟通道中的数据包;通道任务收集器用于收集任务处理器处理过的数据包并将其按照预定的规则分配至对应的虚拟通道。本发明通过构建多个虚拟通道能够有效提高数据传输效率,同时,解决了传统单通道易出现数据拥塞的问题。

Description

一种基于FPGA的多任务处理系统及方法
技术领域
本发明涉及计算机技术领域,具体涉及一种基于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读写操作时使用。
CN201910251092.3A 2019-03-29 2019-03-29 一种基于fpga的多任务处理系统及方法 Active CN110083461B (zh)

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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110659232B (zh) * 2019-09-12 2021-06-29 苏州浪潮智能科技有限公司 一种事件信息传输方法、装置、设备及存储介质
CN110831010A (zh) * 2019-10-21 2020-02-21 上海鹄恩信息科技有限公司 一种多通道数据发送及接收方法及装置和数据传输系统
CN110851363A (zh) * 2019-11-12 2020-02-28 广东电网有限责任公司 一种云测试系统及方法
CN112823343A (zh) * 2020-03-11 2021-05-18 深圳市大疆创新科技有限公司 直接内存存取单元、处理器、设备、处理方法及存储介质
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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通用多功能通信接口模块

Patent Citations (5)

* Cited by examiner, † Cited by third party
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的多任务处理系统及方法
US9465760B2 (en) Method and apparatus for delivering MSI-X interrupts through non-transparent bridges to computing resources in PCI-express clusters
JP3641675B2 (ja) 分割バッファアーキテクチュア
US6577542B2 (en) Scratchpad memory
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
US20090119460A1 (en) Storing Portions of a Data Transfer Descriptor in Cached and Uncached Address Space
US6889266B1 (en) Method for delivering packet boundary or other metadata to and from a device using direct memory controller
JP2000010901A (ja) ディスクアレイ制御装置
CN102906726A (zh) 协处理加速方法、装置及系统
CN105487990A (zh) 一种cpu与芯片之间传输消息报文的方法及装置
CN112035898A (zh) 多节点多通道高速并行处理方法及系统
CN115298656A (zh) 用于调度可共享pcie端点设备的系统和方法
CN101645058B (zh) 命令处理方法、命令发送方法、装置及系统
CN110618956B (zh) 一种bmc云平台资源池化方法与系统
CN102750245B (zh) 报文接收方法、报文接收模块、装置及系统
US20060259648A1 (en) Concurrent read response acknowledge enhanced direct memory access unit
CN112328520B (zh) 一种pcie设备、基于pcie设备的数据传输方法和系统
KR102303424B1 (ko) 랜덤 액세스 메모리를 포함하는 하나 이상의 처리 유닛을 위한 직접 메모리 액세스 제어 장치
CN115994115A (zh) 芯片控制方法、芯片组及电子设备
CN115718711A (zh) 一种dma数据传输的系统和方法
CN112328519B (zh) 一种pcie设备、基于sr-iov的数据包有序传输方法和系统
CN100472496C (zh) 数据传输装置
US20050027906A1 (en) System and method for adaptive buffer allocation in a memory device interface
CN103744816B (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

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