CN115098040A - 基于fpga的数据处理方法、装置、设备及存储介质 - Google Patents

基于fpga的数据处理方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN115098040A
CN115098040A CN202210869578.5A CN202210869578A CN115098040A CN 115098040 A CN115098040 A CN 115098040A CN 202210869578 A CN202210869578 A CN 202210869578A CN 115098040 A CN115098040 A CN 115098040A
Authority
CN
China
Prior art keywords
algorithm
data
processing
core
cores
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.)
Pending
Application number
CN202210869578.5A
Other languages
English (en)
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.)
Beijing Topsec Technology Co Ltd
Beijing Topsec Network Security Technology Co Ltd
Beijing Topsec Software Co Ltd
Original Assignee
Beijing Topsec Technology Co Ltd
Beijing Topsec Network Security Technology Co Ltd
Beijing Topsec Software 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 Beijing Topsec Technology Co Ltd, Beijing Topsec Network Security Technology Co Ltd, Beijing Topsec Software Co Ltd filed Critical Beijing Topsec Technology Co Ltd
Priority to CN202210869578.5A priority Critical patent/CN115098040A/zh
Publication of CN115098040A publication Critical patent/CN115098040A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • 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/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4221Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本申请提供一种基于FPGA的数据处理方法、装置、设备及存储介质。该FPGA包括多个算法核,其中,算法核数量预先设定,每个算法核均包括处理算法,且多个算法核能够对数据进行并行处理;该方法包括:接收待处理数据;确定处于空闲状态的目标算法核;利用目标算法核中的处理算法对待处理数据进行处理;获得目标算法核输出的处理结果,并将处理结果进行存储。本申请实施例通过不同应用场景需求,预先定义多个算法核,并且通过多个算法核对待处理数据并行处理,在满足处理算法对带宽要求的前提下,尽可能降低对FPGA资源的消耗。

Description

基于FPGA的数据处理方法、装置、设备及存储介质
技术领域
本申请涉及数据安全技术领域,具体而言,涉及一种基于PFGA的数据处理方法、装置、电子设备及存储介质。
背景技术
现场可编程逻辑门阵列(Field Programmable Gate Array,FPGA)是在PAL、GAL等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。在FPGA上用硬件编程语言实现哈希算法,可以有效提高哈希算法运行带宽。
然而,在不同的应用场景中,对哈希算法运行带宽需求不同,甚至带宽要求范围极广。目前可通过多级流水线的方式实现哈希算法,这种方式虽然能提高哈希算法的吞吐率,但是需要消耗大量的FPGA的寄存器的资源。
发明内容
本申请实施例的目的在于提供一种基于FPGA的数据处理方法、装置、设备及存储介质,用以兼顾算法性能和对FPGA资源的消耗。
第一方面,本申请实施例提供一种基于FPGA的数据处理方法,该FPGA包括多个算法核,其中,算法核数量预先设定,每个算法核均包括处理算法,且多个算法核能够对数据进行并行处理;该方法包括:接收待处理数据;确定处于空闲状态的目标算法核;利用目标算法核中的处理算法对待处理数据进行处理;获得目标算法核输出的处理结果,并将处理结果进行存储。
本申请实施例通过不同应用场景需求,预先定义多个算法核,并且通过多个算法核对待处理数据并行处理,在满足处理算法对带宽要求的前提下,尽可能降低对FPGA资源的消耗。
在任一实施例中,该FPGA还包括先入先出队列FIFO缓存器,FIFO缓存器包括处于空闲状态的算法核标识;
确定处于空闲状态的算法核,包括:
将FIFO缓存器中,最早写入的处于空闲状态的算法核标识对应的算法核作为目标算法核。
本申请实施例通过利用FIFO缓存器存储处于空闲状态的算法核,并且当有需要处理的数据到来时,选择最先进入到FIFO缓存器的算法核对该数据进行处理,从而使得有序调用算法核。
在任一实施例中,多个算法核预先被划分为多个算法组,每个算法组对应一个一级缓存器;所述将所述处理结果进行存储,包括:将所述处理结果存入对应算法组的一级缓存器中。
本申请实施例通过预先将多个算法核划分为多个算法组,每个算法组对应一个一级缓存器,从而提高了数据写入的效率。
在任一实施例中,将处理结果存入对应算法组的一级缓存器中,包括:获取与目标算法核属于同一算法组,且比目标算法核优先级高的算法核的写入状态;若写入状态均为空闲,则将处理结果存入对应算法组的一级缓存器中。
本申请实施例中,由于一个缓存只有一个对外的写入接口,因此,同一时刻只允许一个算法核调用该写入接口,在将处理结果写入到一级缓存器中时,根据各算法核的优先级顺序写入,使得处理结果能够有序写入。
在任一实施例中,该FPGA还包括二级缓存器;该方法还包括:获取非空的一级缓存器,将非空的一级缓存器中的处理结果存储至二级缓存器。
本申请实施例通过对处理结果进行两次写入,大大减少了对结果情形种类的判断,减少了FPGA的扇出。
在任一实施例中,在确定处于空闲状态的目标算法核之后,该方法还包括:将待处理数据存入目标算法核对应的随机存取存储器RAM块中,并生成起始信号;利用所述目标算法核中的处理算法对待处理数据进行处理,包括:根据起始信号调用对应的目标算法核中的处理算法对待处理数据进行处理。
本申请实施例预先为每个算法核划分一个RAM块,用于存储待处理数据,从而可以使得目标算法核快速获取到待处理数据,提高了对待处理数据的处理效率。
在任一实施例中,该处理算法为哈希算法。本申请实施例可应用于多种哈希算法,可根据项目需要选择对应的哈希算法,即只需要在对数据进行处理之前,采用对应的哈希算法实例化算法核即可,从而实现了该FPGA框架的复用。
第二方面,本申请实施例提供一种基于FPGA的数据处理装置,该FPGA包括多个算法核,其中,算法核数量预先设定,每个算法核均包括处理算法,且多个算法核能够对数据进行并行处理;该装置包括:数据接收模块,用于接收待处理数据;算法核确定模块,用于确定处于空闲状态的目标算法核;数据处理模块,用于利用目标算法核中的处理算法对待处理数据进行处理;结果存储模块,用于获得目标算法核输出的处理结果,并将处理结果进行存储。
第三方面,本申请实施例提供一种电子设备,包括:处理器、存储器和总线,其中,处理器和存储器通过总线完成相互间的通信;存储器存储有可被处理器执行的程序指令,处理器调用所述程序指令能够执行第一方面的方法。
第四方面,本申请实施例提供一种非暂态计算机可读存储介质,包括:非暂态计算机可读存储介质存储计算机指令,计算机指令使计算机执行第一方面的方法。
本申请的其他特征和优点将在随后的说明书阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请实施例了解。本申请的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为对比方案提供的一种SM3算法的流程框图;
图2为本申请实施例提供的一种基于FPGA的数据处理方法流程示意图;
图3为本申请实施例提供的一种算法核连接关系图;
图4为本申请实施例提供的一种数据处理方法流程图;
图5为本申请实施例提供的另一种算法核连接关系图;
图6为本申请实施例提供的一种基于FPGA的数据处理装置结构示意图;
图7为本申请实施例提供的电子设备实体结构示意图。
具体实施方式
下面将结合附图对本申请技术方案的实施例进行详细的描述。以下实施例仅用于更加清楚地说明本申请的技术方案,因此只作为示例,而不能以此来限制本申请的保护范围。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同;本文中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本申请;本申请的说明书和权利要求书及上述附图说明中的术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含。
在本申请实施例的描述中,技术术语“第一”“第二”等仅用于区别不同对象,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量、特定顺序或主次关系。在本申请实施例的描述中,“多个”的含义是两个以上,除非另有明确具体的限定。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
在本申请实施例的描述中,术语“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
在本申请实施例的描述中,术语“多个”指的是两个以上(包括两个),同理,“多组”指的是两组以上(包括两组),“多片”指的是两片以上(包括两片)。
在本申请实施例的描述中,技术术语“中心”“纵向”“横向”“长度”“宽度”“厚度”“上”“下”“前”“后”“左”“右”“竖直”“水平”“顶”“底”“内”“外”“顺时针”“逆时针”“轴向”“径向”“周向”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本申请实施例和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本申请实施例的限制。
在本申请实施例的描述中,除非另有明确的规定和限定,技术术语“安装”“相连”“连接”“固定”等术语应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或成一体;也可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通或两个元件的相互作用关系。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本申请实施例中的具体含义。
哈希算法是指通过对传输消息填充、分组、扩展和压缩等过程,从而将任意长度的传输消息映射成固定长度数据的一种函数,其适用于数字签名、传输消息的完整性检测、消息的起源认证性检测等,在金融、网络传输等领域得到了广泛的应用。目前大多数哈希算法很多是基于OpenSSL库由C语言软件仿真完成,其性能难以满足大量高速应用场景的需求。
FPGA作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。在FPGA上用硬件编程语言实现哈希算法,可以有效提高哈希算法运行带宽。
图1为对比方案提供的一种SM3算法的流程框图,如图1所示,输入缓存模块缓存有64个512位的寄存器,用来存储要进行hash的字符串,这64个寄存器的数值分别给到内容赋值缓存模块里的64个消息扩展子模块作为其输入,每一个子模块包含16个32位的寄存器和运算电路用来消息字的扩展,将输入的数据经过64轮计算生成的W和W`数组作为数据生成模块的输入,数据生成模块的输入还包括A,B,C,D,E,F,G,H八个32位的寄存器,这八个寄存器的值在消息参与首次计算时是一个初始值常量,其后则是由参与一轮hash计算后的值提供,与消息字一起进行64级流水数据迭代,生成256bit的hash值存入到数据缓存。这里的64级流水是64个单轮数据生成模块,每个单轮数据生成模块都对应着SM3中的单轮迭代压缩函数,每一模块数据的输出作为下一模块的输入,直至进行64级算出最后的hash值。数据缓存存入生成的hash值后需进行判断,若参与的消息没有剩余内容则作为该消息的结果存入到输出缓存,否则赋值给数据生成模块的8个寄存器作为新一轮的计算,直至算出最后一组数据的hash值。
采用这种多级流水的方式虽然能大大提高SM3哈希算法的吞吐率,但上述这种算法设计对FPGA的寄存器资源消耗提出了极大要求。对于寄存器资源比较丰富的FPGA可能能够满足,但一旦应用到资源比较少的FPGA上,则可能出现资源不够的情形,另外有些应用场景并不需要这么高的SM3算法性能,这种设计也会造成对FPGA资源的浪费,而且移植也不方便,不利于在不同应用场景上进行复用。
为了解决上述技术问题,本申请实施例提供一种基于FPGA的数据处理方法、装置、设备及存储介质,通过预先定义多个算法核,其中算法核的数量可根据实际情况设定,在接收到待处理数据后,选择空闲的目标算法核对该待处理数据进行处理,从而获得处理结果。本申请实施例可以根据实际应用场景的需求定义算法核的数量,进而调整处理算法所需的性能。
可以理解的是,本申请实施例提供的数据处理方法可以应用于云计算、大数据以及人工智能等领域的电子设备。
图2为本申请实施例提供的一种基于FPGA的数据处理方法流程示意图,如图2所示,该FPGA中预先实例化有多个算法核,可以理解的是,算法核中包括处理算法,且多个算法核可在同一时刻并行工作,因此,算法核也可以理解为是算法模型。算法核的个数根据不同的业务场景需求预先定义,例如:某个业务场景需要10G的算法性能,一个算法核的计算性能为2G,那么可预先定义算法核的个数为5个。具体可通过宏定义的方式定义算法核的个数。后期根据实际业务场景修改宏定义的参数即可改变算法核的数量。该方法包括:
步骤201:接收待处理数据;
步骤202:确定处于空闲状态的目标算法核;
步骤203:利用目标算法核中的处理算法对待处理数据进行处理;
步骤204:获得目标算法核输出的处理结果,并将处理结果进行存储。
其中,在步骤201中,待处理数据可以是电子设备需要往外发送的数据,也可以是接收外部终端发送的数据,因此,待处理数据为需要利用FPGA中的处理算法进行处理的所有类型的数据,本申请实施例对待处理数据的具体内容不作具体限定。
在步骤202中,空闲状态是指算法核当前没有被调用,即没有处理数据的状态。在同一时刻,处于空闲状态的算法核可能有一个,也可能有多个,还可能没有。若没有处于空闲状态的算法核,则待处理数据需等待,等有算法核从工作状态变为空闲状态后,再开始处理。若只有一个处于空闲状态的算法核,则将该算法核确定为目标算法核。若有多个处于空闲状态的算法核,则可以从中任意选择一个算法核作为目标算法核,也可以按照一定的规则从中选择一个算法核作为目标算法核。
在步骤203中,目标算法核中的处理算法为根据业务场景的需求预先写入的,其可以为哈希算法。例如:当业务场景需要对待处理数据进行SM3哈希计算,则处理算法为SM3哈希算法,若业务场景需要对待处理数据进行MD5计算,则处理算法为MD5算法。可以理解的是,处理算法还可以是其他哈希算法,本申请实施例对哈希算法的具体类型及利用哈希算法对待处理数据进行处理的具体过程不作具体限定。
在步骤204中,经过目标算法核对待处理数据进行处理后,电子设备可以获得目标算法核输出的处理结果,并将该处理结果进行存储。
本申请实施例通过不同应用场景需求,预先定义多个算法核,并且通过多个算法核对待处理数据并行处理,在满足处理算法对带宽要求的前提下,尽可能降低对FPGA资源的消耗。
在上述实施例的基础上,该FPGA中包括FIFO缓存器,该FIFO缓存器中存储有处于空闲状态的算法核标识,可以理解的是,每个算法核均有一个能够表示其唯一性的算法核标识,该算法核标识可以是预先为每个算法核生成的。
FIFO缓存器的思想是先进先出,这是简单、公平的一种思想,即如果一个数据是最先进入的,那么可以认为在将来它被访问的可能性很小。空间满的时候,最先进入的数据会被最早置换(淘汰)掉。
FIFO算法的描述:设计一种缓存结构,该结构在构造时确定大小,假设大小为K,并有两个功能:
1、set(key,value):将记录(key,value)插入该结构。当缓存满时,将最先进入缓存的数据置换掉。
2、get(key):返回key对应的value值。
实现:维护一个FIFO队列,按照时间顺序将各数据(已分配页面)链接起来组成队列,并将置换指针指向队列的队首。再进行置换时,只需把置换指针所指的数据(页面)顺次换出,并把新加入的数据插到队尾即可。
基于FIFO缓存器的思想及FIFO算法可知,在FIFO缓存器初始化时,分别写入1,2,3…Y(Y表示总共有Y个算法核)这Y个数据编号,其中每一个数据编号代表第几个算法核处于空闲状态。这样,在FIFO缓存非空时,每来临一个待处理数据,只需要读一下FIFO缓存就知道哪一个算法核处于空闲,待处理数据就知道要进入到哪一个算法核里。在确定了目标算法核后,将该目标算法核对应的算法核标识从FIFO缓存中剔除,另外当算法核处理完数据之后,就释放当前算法核对应的编号,写入到FIFO缓存中。
本申请实施例通过利用FIFO缓存器存储处于空闲状态的算法核,并且当有需要处理的数据到来时,选择最先进入到FIFO缓存器的算法核对该数据进行处理,从而使得有序调用算法核。
在上述实施例的基础上,多个算法核预先被划分为多个算法组,每个算法组对应一个一级缓存器;将处理结果进行存储,包括:
将处理结果存入对应算法组的一级缓存器中。
在具体的实施过程中,由于一个一级缓存器具有一个对外的写入接口,因此,同一时刻只允许一个算法核往该一级缓存器中写入处理结果,为了提高处理结果写入的效率。本申请实施例预先将多个算法核划分为多个算法组,每个算法组包括至少一个算法核,且每个算法组对应一个一级缓存器。目标算法核在获得处理结果后,将该处理结果接入到所属算法组对应的一级缓存器中。例如:若将多个算法核划分为5个算法组,则同一时刻可以有5个算法核将处理结果写入缓存,从而提高了处理结果写入的效率。
另外,在划分算法组时,可以预先设定算法组的个数,然后平均划分算法核,还可以令算法组的个数与每个算法组的算法核的个数尽量相等。
本申请实施例通过预先将多个算法核划分为多个算法组,每个算法组对应一个一级缓存器,从而提高了数据写入的效率。
在上述实施例的基础上,将处理结果存入对应算法组的一级缓存器中,包括:
获取与目标算法核属于同一算法组,且比目标算法核优先级高的算法核的写入状态;
若写入状态均为空闲,则将处理结果存入对应算法组的一级缓存器中。
在具体的实施过程中,定义有Y=M*N个算法核,将Y个算法核划分为N个算法组,每个算法组包括M个算法核。设定每一个算法核的输出接口对应一个单bit算法结果状态信号(busy_state)和输入接口(M-1)个单bit算法结果控制信号(即busy1,busy2,...,busy(m-1))。其中,算法结果状态信号在算法往缓存写结果的时候拉高,表示此时一级缓存器的写使能被当前算法核占用,平时则拉低。每一组算法核中第一个算法核的写结果优先级最高,当它将算法结果写入到结果缓存的时候其他算法核都必须等待它先写完,第二个算法核的写结果优先级次高,只需在第一个算法核写结果空闲的时候才拥有对结果缓存数据写入的权限,依次类推,直到第M个算法核在前面所有算法核写结果都空闲的时候,才拥有对结果缓存数据写入的权限。其连接关系如图3所示。可以理解的是,算法核的优先级为预先设置的。
本申请实施例中,由于一个缓存只有一个对外的写入接口,因此,同一时刻只允许一个算法核调用该写入接口,在将处理结果写入到一级缓存器中时,根据各算法核的优先级顺序写入,使得处理结果能够有序写入。
在上述实施例的基础上,该FPGA还包括二级缓存器;该方法还包括:
获取非空的一级缓存器,将非空的一级缓存器中的处理结果存储至二级缓存器。
在具体的实施过程中,由于进算法核的消息长度是随机的,因此每个算法算出最后结果并写入到结果缓存的时机也是随机的,若直接将所有处理结果写入到一个结果缓存,N个算法核在写入到结果缓存的时候需要讨论2N种情形,这在N比较大时会使得FPGA扇出特别大。为了解决该技术问题,本申请实施例设置了两级缓存,图4为本申请实施例提供的一种数据处理方法流程图,如图4所示,将多个算法核划分为了N组,每个算法组包括M个算法核。每个算法组将该组内的处于空闲状态的算法核标识写入到FIFO缓存中。每个算法组中的算法核将其处理结果写入到对应的一级缓存中。电子设备会按照一定的周期查询各一级缓存是否为空,并获取非空的一级缓存器,将非空的一级缓存器中的处理结果存储在二级缓存器中。
另外,电子设备还可以先检测缓存1是否为空,非空则将缓存1的数据搬运至总缓存直至为空,当缓存1空了之后开始检测缓存2是否为空,非空则将缓存2的数据搬运至总缓存直至为空,如此操作一直到缓存N。
本申请实施例通过对处理结果进行两次写入,大大减少了对结果情形种类的判断,减少了FPGA的扇出。
在上述实施例的基础上,在确定处于空闲状态的目标算法核之后,该方法还包括:
将待处理数据存入目标算法核对应的随机存取存储器RAM块中,并生成起始信号;
利用目标算法核中的处理算法对待处理数据进行处理,包括:
根据起始信号调用对应的目标算法核中的处理算法对待处理数据进行处理。
在具体的实施过程中,根据算法核的个数可以预先将RAM进行划分,使得每个算法核均对应一个RAM块。电子设备在接收到待处理数据,以及确定了处理该待处理数据的目标算法核后,将该目标算法核对应的RAM块中,并生成起始信息,FPGA通过检测该起始信号以及该起始信号对应的算法核标识,来启动相应算法核来读取RAM块中的数据。
本申请实施例预先为每个算法核划分一个RAM块,用于存储待处理数据,从而可以使得目标算法核快速获取到待处理数据,提高了对待处理数据的处理效率。
为了便于理解,本申请实施例以哈希算法为SM3算法为例,对基于FPGA的数据处理方法进行描述,应理解,本申请实施例除了适用于SM3算法外,还可适用于MD5算法等其他哈希算法,具体如下:
SM3算法的执行过程可以概括成三个步骤:消息填充、消息扩展、迭代压缩。其中填充是将消息填充至512bit的整数倍,填充规则是在消息末尾先填充1bit“1”,后面加上k个“0”,其中k是满足(n+1+k)mod512=448的最小正整数。最后再添加64bit的消息长度。消息的扩展则是根据消息的内容,将其每512bit划分成16个消息字(每一个消息字的长度为32bit),并且作为生成的132个消息字的前16个,再用这16个消息字递推生成剩余的116个消息字,其中前68个消息字构成数列W,后64个消息字构成数列W'。最后则是迭代压缩,将扩展得到的消息字和初始向量值通过压缩函数进行64轮压缩迭代,再将生成的数值与当前用到的向量值进行异或,就是压缩函数的输出,这个输出再作为下一次调用压缩函数时的初值。依次类推,直到用完最后一组132个消息字为止。
按照本发明详细描述中的方法,具体的流程如下:
步骤1:数据的输入缓存。数据的输入缓存是用来存储将要进入算法核的数据。该数据是原始数据经过填充处理后的数据,即待处理数据。输入缓存大小的设置是根据算法核数量决定的。假设实际算法性能需要32个算法核,处理的消息数据长度不超过2048字节,可设置一个深度为1024(2048*32/64=1024),位宽为512位的RAM缓存作为数据输入缓存。将RAM划分成32块,与32个算法核相对应,每一RAM块存储一包数据,用地址位宽的高5位来区分当前数据包将要进入哪一个算法核,低5位则表示当前数据包有多少个512bit的数据。例如:假设某包数据长度为258字节,则存放在RAM中需要占据258/64=5个地址才能存放该包数据,若使用的是编号为30的空闲算法核,用5位的地址位宽来表示为11110,因此这258字节的数据在RAM中存放的位置如下:第一个64字节数据:1111000000;第二个64字节数据:1111000001;第三个64字节数据:1111000010;第四个64字节数据:1111000011;第五个64字节数据:1111000100。其中,第五个64字节数据中只有高2字节有效。
由于FIFO缓存里存储着当前哪些算法核处于空闲状态的算法核标识,故在每次往数据输入缓存中存消息时只需通过读取算法核标识就知道要进入到RAM的哪个位置。
步骤2:算法计算的实现。待处理数据进入目标算法核,主要完成两步,待处理数据的扩展和迭代压缩。由于每一小轮的hash计算只需要填充字W和W'数组中的各一个字,因此消息扩展每生成一组填充字,就可以送往迭代压缩函数中进行计算,如此循环64轮,待64个消息字W'生成完毕,刚好最后一次压缩迭代也完成。
消息扩展的具体操作为:将接收来自待处理数据输入缓存中的512位数据分别放到W0、W1…W15这16个32位寄存中,然后将其输入到运算电路中,其中W的生成是按照运算电路公式
Figure BDA0003760032580000141
进行实现,故
Figure BDA0003760032580000142
W'的生成按照运算电路公式
Figure BDA0003760032580000143
进行实现,故
Figure BDA0003760032580000144
在每生成一个W0'的时候,将上述W0、W1…W15这16个所有的寄存器进行错位赋值,即W1的值给W0,W2的值给W1,依次类推,W16的值给W15,同时将W0和W0'的值输出给到迭代压缩模块进行计算,如此循环64次,即可完成消息字的扩展。并且这样做的好处是,只依赖上述16个32位寄存器和两个运算电路进行重复利用,就完成了所有消息字的扩展,大大节省了FPGA寄存器的资源。
迭代压缩的具体操作为:8个32bit寄存器A,B,C,D,E,F,G,H作为压缩函数的输入数据,其初始值由256bit的向量IV决定,与消息扩展字经过如下运算电路:
SS1←((A<<12)+E+(Tj<<j))<<7;
Figure BDA0003760032580000145
TT1←FFj(A,B,C)+D+SS2+Wj';
TT2←GGj(E,F,G)+H+SS1+Wj
实现ABCDEFGH的重新赋值,新得到A`,B`,C`,D`,E`,F`,G`,H`值作为下一轮计算的输入,与新进来一组消息扩展字Wj和Wj',重复上述的流程,直到第64组消息扩展字进入计算完毕,刚好进行了64轮计算,最后一轮生成的数值与本次hash计算使用的V(i)进行异或后缓存到一个寄存器中,然后判断是否还有属于同一消息的剩余数据块需要进行hash,如果有剩余内容,那么需要将该缓存内容作为下一次hash计算的V(i+1),将赋值给上述8个32bit寄存器A,B,C,D,E,F,G,H,再次进入压缩函数进行计算,如果没有剩余的内容,那么将该值作为整个消息数据包的256bit hash值结果进行输出。
步骤3:hash结果的输出。32个算法核可按4个算法核为一组,分成8组将算法结果写入到8个缓存。这样给每个算法核输入接口4个单bit结果控制信号,输出接口用一个算法结果状态信号。输入口的结果控制信号表示其他算法核此时是否正要往结果缓存(即一级缓存)写数据,其中只要有一个高电平,则表示结果缓存写接口被占用,当前算法核不能往里写数据,只有4个结果控制信号都为低时,才表示结果缓存写接口处于空闲,可以往里写数据。当算法核往结果缓存写数据的同时,其输出接口算法结果状态信号处于拉高状态,否则就拉低。四个算法核的连接关系如下图5所示,算法核一具有写结果缓存的最高优先级,故其4个结果控制信号的端口处全部赋0,算法核二写结果优先级次之,算法核四则优先级最低,须判断前面几个算法核的结果状态信号都为低时才具有使用权限。每当算法核将结果写入到缓存的同时,需将当前所用算法通道号也写入到算法空闲通道号缓存中进行存储,以表示当前算法核进入空闲状态。
步骤4:hash结果缓存的二次处理。主要将前面8个结果缓存的数据写入到一个二级缓存,这个处理则比较简单,依次检测第一个结果缓存是否非空,非空则将其数据全部往总缓存里搬,等到为空后开始判断第二个结果缓存,依次类推,直到最后处理第8个结果缓存的数据。
本申请实施例中的算法核可根据实际应用场景实例化,因此,具备可复用性,可适用于不同场景的应用,节省了开发成本。另外通过对处理结果的两次存储,解决了多算法核的处理结果存储过程中产生的扇出过大的问题。
图6为本申请实施例提供的一种基于FPGA的数据处理装置结构示意图,该装置可以是电子设备上的模块、程序段或代码。应理解,该装置与上述图2方法实施例对应,能够执行图2方法实施例涉及的各个步骤,该装置具体的功能可以参见上文中的描述,为避免重复,此处适当省略详细描述。所述FPGA包括多个算法核,其中,算法核数量预先设定,所述算法核包括处理算法,且所述多个算法核能够对数据进行并行处理;所述装置包括:数据接收模块601、算法核确定模块602、数据处理模块603和结果存储模块604,其中:
数据接收模块601用于接收待处理数据;算法核确定模块602用于确定处于空闲状态的目标算法核;其中,所述目标算法核包括处理算法;数据处理模块603用于利用所述目标算法核中的处理算法对所述待处理数据进行处理;结果存储模块604用于获得所述目标算法核输出的处理结果,并将所述处理结果进行存储。
在上述实施例的基础上,所述FPGA还包括先入先出队列FIFO缓存器,所述FIFO缓存器包括处于空闲状态的算法核标识;算法核确定模块602具体用于:将所述FIFO缓存器中,最早写入的处于空闲状态的算法核标识对应的算法核作为所述目标算法核。
在上述实施例的基础上,所述多个算法核预先被划分为多个算法组,每个算法组对应一个一级缓存器;结果存储模块604具体用于:
将所述处理结果存入对应算法组的一级缓存器中。
在上述实施例的基础上,结果存储模块604具体用于:
获取与所述目标算法核属于同一算法组,且比所述目标算法核优先级高的算法核的写入状态;
若所述写入状态均为空闲,则将所述处理结果存入对应算法组的一级缓存器中。
在上述实施例的基础上,所述FPGA还包括二级缓存器;该装置还包括二级存储模块,用于:
获取非空的一级缓存器,将所述非空的一级缓存器中的处理结果存储至所述二级缓存器。
在上述实施例的基础上,该装置还包括:
将所述待处理数据存入所述目标算法核对应的随机存取存储器RAM块中,并生成起始信号;
数据处理模块603具体用于:
根据所述起始信号调用对应的目标算法核中的处理算法对所述待处理数据进行处理。
图7为本申请实施例提供的电子设备实体结构示意图,如图7所示,所述电子设备,包括:处理器(processor)701、存储器(memory)702和总线703;其中,
所述处理器701和存储器702通过所述总线703完成相互间的通信;
所述处理器701用于调用所述存储器702中的程序指令,以执行上述各方法实施例所提供的方法,例如包括:接收待处理数据;确定处于空闲状态的目标算法核;利用所述目标算法核中的处理算法对所述待处理数据进行处理;获得所述目标算法核输出的处理结果,并将所述处理结果进行存储。
处理器701可以是一种集成电路芯片,具有信号处理能力。上述处理器701可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(NetworkProcessor,NP)等;还可以是数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。其可以实现或者执行本申请实施例中公开的各种方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
存储器702可以包括但不限于随机存取存储器(Random Access Memory,RAM),只读存储器(Read Only Memory,ROM),可编程只读存储器(Programmable Read-OnlyMemory,PROM),可擦除只读存储器(Erasable Programmable Read-Only Memory,EPROM),电可擦除只读存储器(Electrically Erasable Programmable Read-Only Memory,EEPROM)等。
本实施例公开一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的方法,例如包括:接收待处理数据;确定处于空闲状态的目标算法核;利用所述目标算法核中的处理算法对所述待处理数据进行处理;获得所述目标算法核输出的处理结果,并将所述处理结果进行存储。
本实施例提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行上述各方法实施例所提供的方法,例如包括:接收待处理数据;确定处于空闲状态的目标算法核;利用所述目标算法核中的处理算法对所述待处理数据进行处理;获得所述目标算法核输出的处理结果,并将所述处理结果进行存储。
在本申请所提供的实施例中,应该理解到,所揭露装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
另外,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
再者,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。
以上所述仅为本申请的实施例而已,并不用于限制本申请的保护范围,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (10)

1.一种基于现场可编程逻辑门阵列FPGA的数据处理方法,其特征在于,所述FPGA包括多个算法核,其中,算法核数量预先设定,所述算法核包括处理算法,且所述多个算法核能够对数据进行并行处理;所述方法包括:
接收待处理数据;
确定处于空闲状态的目标算法核;
利用所述目标算法核中的处理算法对所述待处理数据进行处理;
获得所述目标算法核输出的处理结果,并将所述处理结果进行存储。
2.根据权利要求1所述的方法,其特征在于,所述FPGA还包括先入先出队列FIFO缓存器,所述FIFO缓存器包括处于空闲状态的算法核标识;
所述确定处于空闲状态的算法核,包括:
将所述FIFO缓存器中,最早写入的处于空闲状态的算法核标识对应的算法核作为所述目标算法核。
3.根据权利要求1所述的方法,其特征在于,所述多个算法核预先被划分为多个算法组,每个算法组对应一个一级缓存器;所述将所述处理结果进行存储,包括:
将所述处理结果存入对应算法组的一级缓存器中。
4.根据权利要求3所述的方法,其特征在于,所述将所述处理结果存入对应算法组的一级缓存器中,包括:
获取与所述目标算法核属于同一算法组,且比所述目标算法核优先级高的算法核的写入状态;
若所述写入状态均为空闲,则将所述处理结果存入对应算法组的一级缓存器中。
5.根据权利要求3或4所述的方法,其特征在于,所述FPGA还包括二级缓存器;所述方法还包括:
获取非空的一级缓存器,将所述非空的一级缓存器中的处理结果存储至所述二级缓存器。
6.根据权利要求1所述的方法,其特征在于,在确定处于空闲状态的目标算法核之后,所述方法还包括:
将所述待处理数据存入所述目标算法核对应的随机存取存储器RAM块中,并生成起始信号;
所述利用所述目标算法核中的处理算法对所述待处理数据进行处理,包括:
根据所述起始信号调用对应的目标算法核中的处理算法对所述待处理数据进行处理。
7.根据权利要求1-4任一项所述的方法,其特征在于,所述处理算法为哈希算法。
8.一种基于FPGA的数据处理装置,其特征在于,所述FPGA包括多个算法核,其中,算法核数量预先设定,所述算法核包括处理算法,且所述多个算法核能够对数据进行并行处理;所述装置包括:
数据接收模块,用于接收待处理数据;
算法核确定模块,用于确定处于空闲状态的目标算法核;其中,所述目标算法核包括处理算法;
数据处理模块,用于利用所述目标算法核中的处理算法对所述待处理数据进行处理;
结果存储模块,用于获得所述目标算法核输出的处理结果,并将所述处理结果进行存储。
9.一种电子设备,其特征在于,包括:处理器、存储器和总线,其中,
所述处理器和所述存储器通过所述总线完成相互间的通信;
所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行如权利要求1-7任一项所述的方法。
10.一种非暂态计算机可读存储介质,其特征在于,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令被计算机运行时,使所述计算机执行如权利要求1-7任一项所述的方法。
CN202210869578.5A 2022-07-22 2022-07-22 基于fpga的数据处理方法、装置、设备及存储介质 Pending CN115098040A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210869578.5A CN115098040A (zh) 2022-07-22 2022-07-22 基于fpga的数据处理方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210869578.5A CN115098040A (zh) 2022-07-22 2022-07-22 基于fpga的数据处理方法、装置、设备及存储介质

Publications (1)

Publication Number Publication Date
CN115098040A true CN115098040A (zh) 2022-09-23

Family

ID=83298507

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210869578.5A Pending CN115098040A (zh) 2022-07-22 2022-07-22 基于fpga的数据处理方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN115098040A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116166402A (zh) * 2023-02-20 2023-05-26 广州万协通信息技术有限公司 一种数据安全处理方法、系统、安全芯片以及电子设备

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116166402A (zh) * 2023-02-20 2023-05-26 广州万协通信息技术有限公司 一种数据安全处理方法、系统、安全芯片以及电子设备
CN116166402B (zh) * 2023-02-20 2023-11-24 广州万协通信息技术有限公司 一种数据安全处理方法、系统、安全芯片以及电子设备

Similar Documents

Publication Publication Date Title
EP3493084B1 (en) Method for processing data in bloom filter and bloom filter
US20190052553A1 (en) Architectures and methods for deep packet inspection using alphabet and bitmap-based compression
US10997140B2 (en) Method and apparatus for acceleration of hash-based lookup
CN106685429B (zh) 整数压缩方法及装置
CN115098040A (zh) 基于fpga的数据处理方法、装置、设备及存储介质
WO2018000820A1 (zh) 一种队列管理方法和装置
CN114885045A (zh) 一种在高速智能网卡/dpu内节约dma通道资源方法和装置
US20040093443A1 (en) Apparatus for receiving data packet and method thereof
CN113411380A (zh) 基于fpga可编程会话表的处理方法、逻辑电路和设备
CN115952517A (zh) 一种杂凑值计算方法及系统
WO2017219749A1 (zh) 一种缓存管理方法、装置及计算机存储介质
WO2017036195A1 (zh) 组播报文两级复制方法及装置、存储介质
EP3299965B1 (en) Method and physical device for managing linked lists
US8661162B2 (en) Address handling
CN117520607B (zh) 一种流表压缩方法、计算机设备及介质
CN115442026B (zh) 一种hmac算法处理系统、方法、设备及介质
WO2017220020A1 (zh) 存储资源分配方法和装置
CN117555903B (zh) 一种数据处理方法、计算机设备及介质
WO2024016863A1 (zh) 规则查找方法、装置、设备及计算机可读存储介质
CN117540071B (zh) 一种针对查找引擎的属性表项的配置方法和装置
WO2022222756A1 (zh) 芯片、处理数据的方法和计算机设备
CN113741821B (zh) 基于分类的数据存取方法、系统、介质及程序
CN113890741B (zh) 消息填充方法、芯片、装置、电子设备和存储介质
CN117857447A (zh) 规则处理、规则查找方法、装置、设备及可读存储介质
CN116957902A (zh) 用于GPU的NoC仲裁方法

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