CN113378194A - 一种加解密运算加速方法、***及存储介质 - Google Patents
一种加解密运算加速方法、***及存储介质 Download PDFInfo
- Publication number
- CN113378194A CN113378194A CN202110635184.9A CN202110635184A CN113378194A CN 113378194 A CN113378194 A CN 113378194A CN 202110635184 A CN202110635184 A CN 202110635184A CN 113378194 A CN113378194 A CN 113378194A
- Authority
- CN
- China
- Prior art keywords
- data
- module
- encryption
- decryption
- processed
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- 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/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4022—Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F5/06—Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请提供一种加解密运算加速方法、***及存储介质,用于改善进行加解密运算的效率比较低的问题。该方法包括:通过第一先进先出模块接收待处理数据包的多个数据片段,并向加密解密模块发送待处理数据包的多个数据片段;通过加密解密模块接收待处理数据包的多个数据片段,并对待处理数据包的多个数据片段进行加解密并行运算,获得多个数据片段的运算结果数据,然后向第二先进先出模块发送多个数据片段的运算结果数据;通过第二先进先出模块接收多个数据片段的运算结果数据,并将多个数据片段的运算结果数据缓存。
Description
技术领域
本申请涉及计算机安全和网络安全的技术领域,具体而言,涉及一种加解密运算加速方法、***及存储介质。
背景技术
目前,对加解密运算进行加速的方法通常都是基于缓存机制(Buffer Mechanism)的方法,以需要计算32轮计算的国密SM4算法为例,具体例如:先将待处理数据包缓存到存储模块,即将存储模块作为缓存使用,假设待处理数据包有3K,在接收并缓存有1K数据时不作任何处理,继续接收并缓存;在接收并缓存有2K数据时不作任何处理,继续接收并缓存。直到在缓存中的待处理数据包3K全部接收完成之后,再将待处理数据包从该存储模块提取并发送给加解密运算模块,通过加解密运算模块对3K大小的待处理数据包进行加解密运算;然后,在加解密运算全部结束之后,再将加解密的运算结果全部缓存至存储模块;最后,将该存储模块中缓存的加解密的运算结果输出。在具体的实践过程中发现,使用基于缓存机制的方法进行加解密运算的效率比较低。
发明内容
本申请实施例的目的在于提供一种加解密运算加速方法、***及存储介质,用于改善进行加解密运算的效率比较低的问题。
本申请实施例提供了一种加解密运算加速方法,包括:通过第一先进先出模块接收待处理数据包的多个数据片段,并向加密解密模块发送待处理数据包的多个数据片段;通过加密解密模块接收待处理数据包的多个数据片段,并对待处理数据包的多个数据片段进行加解密并行运算,获得多个数据片段的运算结果数据,然后向第二先进先出模块发送多个数据片段的运算结果数据;通过第二先进先出模块接收多个数据片段的运算结果数据,并将多个数据片段的运算结果数据缓存。在上述的实现过程中,通过使用能够并行处理的加密解密模块、第一先进先出模块和第二先进先出模块来处理数据的多个数据片段,有效地避免了在缓存中的待处理数据包全部接收完成之后再进行处理导致数据输入阶段无法实现并行运算的问题,使得加解密运算在数据输入阶段和数据输出阶段的过程中均能够完全实现并行,明显地提高处理数据的吞吐量,从而有效地提高对待处理数据进行加解密运算的效率。
可选地,在本申请实施例中,对待处理数据包的多个数据片段进行加解密并行运算,包括:以流水线运算的方式对待处理数据包的多个数据片段进行加解密并行运算。在上述的实现过程中,通过加密解密模块中的多个轮运算模块采用流水线运算的方式设计,从而能够保障加密解密模块对数据片段进行高速加密解密计算,从而最大限度地利用了加密解密模块的数据带宽。
可选地,在本申请实施例中,对待处理数据包的多个数据片段进行加解密并行运算,包括:通过相互独立的多个轮运算模块运行国密SM4算法,并以流水线运算的方式对待处理数据包的多个数据片段进行加解密并行运算。在上述的实现过程中,由于该加解密运算加速中的数据输入、数据运算和数据输出三个过程均是可以同时并行进行的,因此,整个加密解密运算加速***的运算处理吞吐量只与数据输入和数据输出的耗时相关,约等于待处理数据包在数据输入或者数据输出两个过程中耗时较长的时长,而不是一个待处理数据包在数据输入阶段的耗时、数据处理阶段的耗时以及数据输出阶段的耗时之和。故相比于缓存待处理数据包再加解密运算的方式,加密解密运算加速***能够有效地提高加解密运算的吞吐量。
可选地,在本申请实施例中,在通过第一先进先出模块接收待处理数据包的多个数据片段之前,还包括:通过外设组件互连PCI-E接口接收待处理数据包的多个数据片段,并向第一先进先出模块发送待处理数据包的多个数据片段;在将多个数据片段的运算结果数据缓存之后,还包括:通过第二先进先出模块向PCI-E接口发送多个数据片段的运算结果数据;通过PCI-E接口接收第二先进先出模块发送的多个数据片段的运算结果数据,并输出多个数据片段的运算结果数据。在上述的实现过程中,通过根据先进先出模块的数据流量来控制PCI-E接口处理数据的速度,从而保障了加解密运算加速***的稳定性。
可选地,在本申请实施例中,还包括:若第一先进先出模块的数据流量初次高于第一预设阈值,则控制加密解密模块开始处理数据片段;若第二先进先出模块的数据流量高于第二预设阈值,则控制PCI-E接口加快数据的发送速度,并减慢数据的接收速度;若第二先进先出模块的数据流量低于第三预设阈值,则控制PCI-E接口加快数据的接收速度,并减慢数据的发送速度;其中,第三预设阈值小于第一预设阈值,且第一预设阈值小于第二预设阈值。在上述的实现过程中,通过根据第一先进先出模块和第二先进先出模块进行实时控制,使得第二先进先出模块的数据流量始终保持在第二预设阈值至第三预设阈值的范围之内,从而保障了加密解密模块输入带宽和输出带宽的平衡,使得加解密运算加速***整体性能始终处于最优状态,从而有效地提高了***性能的稳定性。
本申请实施例还提供了一种加解密运算加速***,包括:加密解密模块、第一先进先出模块和第二先进先出模块;第一先进先出模块、加密解密模块和第二先进先出模块依次通信;第一先进先出模块用于接收待处理数据包的多个数据片段,并向加密解密模块发送待处理数据包的多个数据片段;加密解密模块用于接收待处理数据包的多个数据片段,并对待处理数据包的多个数据片段进行加解密并行运算,获得多个数据片段的运算结果数据,然后向第二先进先出模块发送多个数据片段的运算结果数据;第二先进先出模块用于接收多个数据片段的运算结果数据,并将多个数据片段的运算结果数据缓存。
可选地,在本申请实施例中,加密解密模块包括相互独立的多个轮运算模块;多个轮运算模块用于通过相互独立的多个轮运算模块运行国密SM4算法,并以流水线运算的方式对待处理数据包的多个数据片段进行加解密并行运算。
可选地,在本申请实施例中,还包括:外设组件互连PCI-E接口;PCI-E接口与第一先进先出模块通信;PCI-E接口用于接收待处理数据包的多个数据片段,并向第一先进先出模块发送待处理数据包的多个数据片段;以及接收第二先进先出模块发送的多个数据片段的运算结果数据,并输出多个数据片段的运算结果数据。
可选地,在本申请实施例中,还包括:流量控制模块;流量控制模块分别与PCI-E接口、加密解密模块、第一先进先出模块和第二先进先出模块相互通信;流量控制模块用于若第一先进先出模块的数据流量初次高于第一预设阈值,则控制加密解密模块开始处理数据片段;流量控制模块还用于若第二先进先出模块的数据流量高于第二预设阈值,则控制PCI-E接口加快数据的发送速度,并减慢数据的接收速度;流量控制模块还用于若第二先进先出模块的数据流量低于第三预设阈值,则控制PCI-E接口加快数据的接收速度,并减慢数据的发送速度;其中,第三预设阈值小于第一预设阈值,且第一预设阈值小于第二预设阈值。
本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如上面描述的方法。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请实施例的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出的本申请实施例提供的加解密运算加速***的结构示意图;
图2示出的本申请实施例提供的加密解密模块的组成示意图;
图3示出的本申请实施例提供的数据片段流水线运算的工作流程示意图;
图4示出的本申请实施例提供的完整的加解密运算加速***的结构示意图;
图5示出的本申请实施例提供的加解密运算加速方法的流程示意图;
图6示出的本申请实施例提供的使用PCI-E接口来管理数据片段和运算数据结果的流程示意图。
图标:100-加解密运算加速***;110-第一先进先出模块;120-第二先进先出模块;130-加密解密模块;140-外设组件互连接口;150-流量控制模块。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整的描述。
在介绍本申请实施例提供的加解密运算加速方法之前,先介绍本申请实施例中所涉及的一些概念:
现场可编程逻辑门阵列(Field Programmable Gate Array,FPGA),是以可编程阵列逻辑(Programmable Array Logic,PAL)、通用阵列逻辑(Generic Array Logic,GAL)、复杂可编程逻辑器件(Complex Programming Logic Device,CPLD)等可编程逻辑器件为技术基础发展而成的技术。FPGA作为特殊应用集成电路中的一种半定制电路,FPGA既弥补全定制电路不足,又克服原有可编程逻辑控制器门电路数有限的缺点。
需要说明的是,本申请实施例提供的加解密运算加速方法可以被电子设备执行,这里的电子设备是指具有执行计算机程序功能的设备终端或者服务器,也可以是设备终端中设置的硬件加解密运算芯片,或者服务器中设置的硬件加解密运算芯片。
在介绍本申请实施例提供的加解密运算加速方法之前,先介绍该加解密运算加速方法适用的应用场景,这里的应用场景包括但不限于:目前采用缓存机制来进行加解密运算,整个加解密运算的耗时等于数据加解密前的接收耗时、数据加解密运算耗时和数据加解密后的输出耗时,在这种应用场景下,可以使用该加解密运算加速方法来减少数据加解密前的接收耗时和数据加解密后的输出耗时,即使用该加解密运算加速方法提升硬件芯片(例如专用密码算法芯片)加解密的运算效率。
请参见图1示出的本申请实施例提供的加解密运算加速***的结构示意图;在介绍本申请实施例提供的加解密运算加速方法之前,先介绍本申请实施例提供的其中一种加解密运算加速***,该加解密运算加速***可以是通过现场可编程逻辑门阵列(FPGA)的方式实现的,也可以是通过特殊用途集成电路(Application Specific IntegratedCircuit,ASIC)芯片的方式实现的。当然,该加解密运算加速***还可以包括多个能以软件或固件(firmware)的形式存储于存储器中或固化在***的操作***(operating system,OS)中的软件功能模块。
本申请实施例提供了一种加解密运算加速***100,包括:第一先进先出模块110和第二先进先出模块120和加密解密模块130;第一先进先出模块110、加密解密模块130和第二先进先出模块120依次通信,其中,第一先进先出模块110和第二先进先出模块120是指以先进先出(First-In-First-Out,FIFO)的方式存储和管理数据的软件模块或者硬件模块,因此,第一先进先出模块110又被简称为FIFO_1,第二先进先出模块120又被简称为FIFO_2。可以理解的是,加密解密模块在不同场景下也可以有不同的名称,具体例如:在加密解密模块专门用于国密SM4算法的加密运算和解密运算时,可以将加密解密模块称之为SM4算法模块。
第一先进先出模块110用于接收待处理数据包的多个数据片段,并向加密解密模块发送待处理数据包的多个数据片段。其中,数据片段是指待处理数据包按照预设尺寸划分的数据部分,因此,数据片段又可以被称为数据组或者第i组数据等等。
请参见图2示出的本申请实施例提供的加密解密模块的组成示意图;加密解密模块130用于接收待处理数据包的多个数据片段,并对待处理数据包的多个数据片段进行加解密并行运算,获得多个数据片段的运算结果数据,然后向第二先进先出模块发送多个数据片段的运算结果数据。上述的加密解密模块130包括相互独立的多个轮运算模块;假设多个轮运算模块的数量是n,那么多个轮运算模块可以包括:第1轮运算模块、第2轮运算模块、第3轮运算模块、……、第n轮运算模块。
请参见图3示出的本申请实施例提供的数据片段流水线运算的工作流程示意图;使用上述多个轮运算模块处理数据的工作流程如下:
在T1时刻,第1个数据片段进入第1轮运算模块进行第1轮运算。
在T2时刻,第1个数据片段进入第2轮运算模块进行第2轮运算,同时,第2个数据片段进入第1轮运算模块进行第1轮运算。
在T3时刻,第1个数据片段进入第3轮运算模块进行第3轮运算,同时,第2个数据片段进入第2轮运算模块进行第2轮运算,且第3个数据片段进入第1轮运算模块进行第1轮运算。
……,以此类推。假设加密解密模块是用于运行国密SM4算法的,运行国密SM4算法是需要进行32轮运算的,对应每个数据片段来说,每个数据片段进入加密解密模块仍然是需要进行32轮运算的。但是,由于这32个轮运算模块均是相互独立的,前一个数据片段进行完第i轮运算后直接进入第i+1轮运算,当前数据片段可直接进行第i轮运算,不会因为前一个数据片段未完成运算而导致后续分组数据阻塞,故不需要等待前一个数据片段的运算结果,这种数据运算方式又被称为流水线运算的方式。因此,可以通过相互独立的32个轮运算模块运行国密SM4算法,并以流水线运算的方式对待处理数据包的多个数据片段进行加解密并行运算,且运行国密SM4算法的运算耗时约等于0,在没有增加硬件成本的情况下,能够极大地减少运行国密SM4算法数据运算的耗时。由于加密解密模块中的多个轮运算模块采用流水线运算的方式设计,从而能够保障加密解密模块对数据片段进行高速加密解密计算,从而最大限度地利用了加密解密模块的数据带宽。
第二先进先出模块120用于接收多个数据片段的运算结果数据,并将多个数据片段的运算结果数据缓存。在上述的实现过程中,第一先进先出模块和第二先进先出模块能够组成数据流控的物理缓冲区,可以通过控制PCI-E接口发送数据和接收数据的速度,从而使得整个加密解密运算加速***处于一个高速且稳定的工作状态。当然,在具体的实践过程中,还可以通过控制加密解密模块处理数据的速度,来让加密解密模块处于一个高速工作状态。
请参见图4示出的本申请实施例提供的完整的加解密运算加速***的结构示意图;可选地,上述加解密运算加速***100中还可以包括:外设组件互连PCI-E接口140;PCI-E接口140与第一先进先出模块110通信;PCI-E接口140用于接收待处理数据包的多个数据片段,并向第一先进先出模块110发送待处理数据包的多个数据片段;以及接收第二先进先出模块120发送的多个数据片段的运算结果数据,并输出多个数据片段的运算结果数据。
可选地,上述加解密运算加速***100中还可以包括:流量控制模块150;流量控制模块150分别与PCI-E接口140、加密解密模块130、第一先进先出模块110和第二先进先出模块120相互通信。
流量控制模块150用于若第一先进先出模块110的数据流量初次高于第一预设阈值,则控制加密解密模块130开始处理数据片段。
流量控制模块150还用于若第二先进先出模块120的数据流量高于第二预设阈值,则控制PCI-E接口140加快数据的发送速度,并减慢数据的接收速度;
流量控制模块150还用于若第二先进先出模块120的数据流量低于第三预设阈值,则控制PCI-E接口140加快数据的接收速度,并减慢数据的发送速度;其中,第三预设阈值小于第一预设阈值,且第一预设阈值小于第二预设阈值。
在上面的实现过程中,流量控制模块可以根据第一先进先出模块和第二先进先出模块进行实时控制,从而保障了加密解密模块输入带宽和输出带宽的平衡,使得加解密运算加速***整体性能始终处于最优状态,从而有效地提高了***性能的稳定性。进一步地,由于加密解密运算加速***采用双FIFO(即第一先进先出模块FIFO_1和第二先进先出模块FIFO_2)的数据缓冲结构,输入的数据片段通过FIFO_1进入SM4算法模块(SM4算法的计算需要32个时钟周期才能计算完)的同时,32个时钟周期之前的数据片段已经全部计算完成,可以将计算完成的数据片段传输至FIFO_2进行缓存。
在宏观上看来,该加解密运算加速***中的数据输入、数据运算和数据输出三个过程均是可以同时并行进行的。由于这三个过程是并行进行的,且加密解密模块正常工作时的速度比数据输入的速度和数据输出的速度快,因此,整个加密解密运算加速***的运算处理吞吐量只与数据输入和数据输出的耗时相关,约等于待处理数据包在数据输入或者数据输出两个过程中耗时较长的时长,而不是一个待处理数据包在数据输入阶段的耗时、数据处理阶段的耗时以及数据输出阶段的耗时之和。故相比于缓存待处理数据包再加解密运算的方式,加密解密运算加速***能够有效地提高加解密运算的吞吐量。应理解的是,该***与下面的加解密运算加速方法实施例对应,能够执行下面的方法实施例涉及的各个步骤,该***具体的功能可以参见下文中的详细描述,为避免重复,此处适当省略详细描述。
请参见图5示出的本申请实施例提供的加解密运算加速方法的流程示意图;该加解密运算加速方法的主要思路是,通过使用能够并行处理的加密解密模块、第一先进先出模块和第二先进先出模块来处理数据的多个数据片段,有效地避免了在缓存中的待处理数据包全部接收完成之后再进行处理导致数据输入阶段无法实现并行运算的问题,使得加解密运算在数据输入阶段和数据输出阶段的过程中均能够完全实现并行,明显地提高处理数据的吞吐量,从而有效地提高对待处理数据进行加解密运算的效率;上述的加解密运算加速方法可以包括:
步骤S210:通过第一先进先出模块接收待处理数据包的多个数据片段,并向加密解密模块发送待处理数据包的多个数据片段。
上述步骤S210的实施方式例如:如图4所示,PCI-E接口接收到待处理数据包的数据片段,并向第一先进先出模块发送数据片段;然后,第一先进先出模块接收PCI-E接口发送的数据片段,并向加密解密模块发送待处理数据包的多个数据片段。因为在具体实践过程中,需要控制数据片段流入加密解密模块的流量速度,因此,设置了第一先进先出模块来控制数据片段流入加密解密模块的流量速度。
在步骤S210之后,执行步骤S220:通过加密解密模块接收待处理数据包的多个数据片段,并对待处理数据包的多个数据片段进行加解密并行运算,获得多个数据片段的运算结果数据,然后向第二先进先出模块发送多个数据片段的运算结果数据。
上述步骤S220的实施方式例如:使用硬件流水线运算的方式实现加密解密模块的并行运算,具体可以在加密解密模块中设置相互独立的多个轮运算模块,具体可以设置32个轮运算模块,该实施方式具体例如:加密解密模块接收待处理数据包的数据片段,并使用相互独立的32个轮运算模块运行国密SM4算法,并以流水线运算的方式对待处理数据包的数据片段进行加解密并行运算,获得该数据片段的运算结果数据,然后向第二先进先出模块发送该数据片段的运算结果数据。
在步骤S220之后,执行步骤S230:通过第二先进先出模块接收多个数据片段的运算结果数据,并将多个数据片段的运算结果数据缓存。
在上述的实现过程中,首先,通过第一先进先出模块接收待处理数据包的多个数据片段,并向加密解密模块发送待处理数据包的多个数据片段;然后,使用加密解密模块接收待处理数据包的多个数据片段,并对待处理数据包的多个数据片段进行加解密并行运算获得多个数据片段的运算结果数据,接着向第二先进先出模块发送多个数据片段的运算结果数据;最后,通过第二先进先出模块接收并将加密解密模块发送的运算结果数据缓存。也就是说,通过使用能够并行处理的加密解密模块、第一先进先出模块和第二先进先出模块来处理数据的多个数据片段,有效地避免了在缓存中的待处理数据包全部接收完成之后再进行处理导致数据输入阶段无法实现并行运算的问题,使得加解密运算在数据输入阶段和数据输出阶段的过程中均能够完全实现并行,明显地提高处理数据的吞吐量,从而有效地提高对待处理数据进行加解密运算的效率。
请参见图6示出的本申请实施例提供的使用PCI-E接口来管理数据片段和运算数据结果的流程示意图;可选地,在加解密运算加速方法中,还可以通过设置在内部的外设组件互连PCI-E接口来管理数据片段和运算数据结果,还包括:
步骤S310:通过外设组件互连PCI-E接口接收待处理数据包的多个数据片段,并向第一先进先出模块发送待处理数据包的多个数据片段。
在步骤S310之后,执行步骤S320:通过第一先进先出模块接收待处理数据包的多个数据片段,并向加密解密模块发送待处理数据包的多个数据片段。
在步骤S320之后,执行步骤S330:通过加密解密模块接收待处理数据包的多个数据片段,并对待处理数据包的多个数据片段进行加解密并行运算,获得多个数据片段的运算结果数据,然后向第二先进先出模块发送多个数据片段的运算结果数据。
在步骤S330之后,执行步骤S340:通过第二先进先出模块接收多个数据片段的运算结果数据,并将多个数据片段的运算结果数据缓存,然后向PCI-E接口发送多个数据片段的运算结果数据。
在步骤S340之后,执行步骤S350:通过PCI-E接口接收第二先进先出模块发送的多个数据片段的运算结果数据,并输出该运算结果数据。
可选地,在加解密运算加速方法中,还可以控制处理数据片段的输入输出速度,即根据先进先出模块的数据流量来控制PCI-E接口处理数据的速度,该实施方式包括:
在步骤S310之后,执行步骤S360:若第一先进先出模块的数据流量初次高于第一预设阈值,则控制加密解密模块开始处理数据片段。
上述的步骤S360的实施方式例如:若第一先进先出模块的数据流量初次高于第一预设阈值,则启动并让加密解密模块一直保持在工作运行状态(即加密解密模块计算完一个数据片段,获得该数据片段的运算结果数据,则立即将该数据片段的运算结果数据发送给FIFO_2,而不是等待全部数据包的所有数据片段计算完成才发送),直到数据包的所有数据片段都处理完成;也就是说,只有第一先进先出模块的数据流量在初次达到第一预设阈值时,才会开始处理数据片段,如果后续因为通信阻塞或者繁忙等异常导致第一先进先出模块的数据流量减少至无,也会一直处理数据片段(不再等第一先进先出模块的数据流量达到第一预设阈值);其中,第一预设阈值可以根据具体情况进行设置,例如将第一预设阈值设置为0.4、0.5或者0.6等等,0.5表示FIFO_1的数据流量是FIFO_1可容纳数据的一半。
在步骤S330之后,执行步骤S370:若第二先进先出模块的数据流量高于第二预设阈值,则控制PCI-E接口加快数据的发送速度,并减慢数据的接收速度。
上述的步骤S370的实施方式例如:若第二先进先出模块的数据流量高于第二预设阈值,则控制PCI-E接口加快数据的发送速度,并减慢数据的接收速度,具体控制过程例如:让数据片段的运算结果数据尽快从FIFO_2中输出,与此同时,控制PCI-E接口尽量接收从FIFO_2中输出的运算结果数据,且让PCI-E接口加快发送运算结果数据的速度,并减慢上面数据片段的接收速度,从而让数据流量像水流一样在整个加解密运算加速***中保持平衡且高效的流转;其中,同上面一样,第二预设阈值也可以根据具体情况进行设置的,具体参照第一预设阈值的描述。由于PCI-E接口写入数据的流量带宽和PCI-E接口读取数据的流量带宽不一致,因此,流量控制模块可以根据FIFO_2的数据流量水位超出预设阈值的部分,来对FIFO_1的写入操作进行实时地控制,从而让FIFO_2的数据流量水位始终保持在合适位置(具体例如保持在FIFO_2的中间水位附近)。
在步骤S330之后,执行步骤S380:若第二先进先出模块的数据流量低于第三预设阈值,则控制PCI-E接口加快数据的接收速度,并减慢数据的发送速度。
需要说明的是,上述的步骤S380实施原理和实施方式与步骤S370的实施原理和实施方式是类似的,因此,这里不再说明其实施原理和实施方式,如有不清楚的地方,可以参考对步骤S370的描述。上述的预设阈值均是指数据流量占各自先进先出模块最大容纳数据流量所占的比例数值,例如第一预设阈值是指第一先进先出模块实时的数据流量占第一先进先出模块最大容纳数据流量的比例数值,而第二预设阈值和第三预设阈值均是指第二先进先出模块实时的数据流量占第二先进先出模块最大容纳数据流量的比例数值。在具体的实践过程中,可以将上面的三个预设阈值的具体关系设置为:第三预设阈值小于第一预设阈值,且第一预设阈值小于第二预设阈值,具体例如:分别将第一预设阈值、第二预设阈值和第三预设阈值设置为50%、70%和30%,当然也可以分别将第一预设阈值、第二预设阈值和第三预设阈值设置为50%、80%和20%等等。
在上述的实现过程中,通过根据先进先出模块的数据流量来控制PCI-E接口处理数据的速度,以及加密解密模块是否处理数据,从而保障了加解密运算加速***的稳定性,并通过第一先进先出模块、第二先进先出模块和PCI-E接口来控制整体的数据流带宽,从而使得加解密运算加速***的带宽利用率稳定且高效。
本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如上的方法。其中,计算机可读存储介质可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(Static Random Access Memory,简称SRAM),电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,简称EEPROM),可擦除可编程只读存储器(Erasable Programmable Read Only Memory,简称EPROM),可编程只读存储器(Programmable Read-Only Memory,简称PROM),只读存储器(Read-Only Memory,简称ROM),磁存储器,快闪存储器,磁盘或光盘。
本申请实施例提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其他的方式实现。以上所描述的装置实施例仅是示意性的,例如,附图中的流程图和框图显示了根据本申请实施例的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以和附图中所标注的发生顺序不同。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这主要根据所涉及的功能而定。
另外,在本申请实施例中的各个实施例的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。
以上的描述,仅为本申请实施例的可选实施方式,但本申请实施例的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请实施例揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请实施例的保护范围之内。
Claims (10)
1.一种加解密运算加速方法,其特征在于,包括:
通过第一先进先出模块接收待处理数据包的多个数据片段,并向加密解密模块发送所述待处理数据包的多个数据片段;
通过所述加密解密模块接收所述待处理数据包的多个数据片段,并对所述待处理数据包的多个数据片段进行加解密并行运算,获得所述多个数据片段的运算结果数据,然后向第二先进先出模块发送所述多个数据片段的运算结果数据;
通过所述第二先进先出模块接收所述多个数据片段的运算结果数据,并将所述多个数据片段的运算结果数据缓存。
2.根据权利要求1所述的方法,其特征在于,所述对所述待处理数据包的多个数据片段进行加解密并行运算,包括:
以流水线运算的方式对所述待处理数据包的多个数据片段进行加解密并行运算。
3.根据权利要求1所述的方法,其特征在于,所述对所述待处理数据包的多个数据片段进行加解密并行运算,包括:
通过相互独立的多个轮运算模块运行国密SM4算法,并以流水线运算的方式对所述待处理数据包的多个数据片段进行加解密并行运算。
4.根据权利要求1-3任一所述的方法,其特征在于,在所述通过第一先进先出模块接收待处理数据包的多个数据片段之前,还包括:
通过外设组件互连PCI-E接口接收待处理数据包的多个数据片段,并向所述第一先进先出模块发送所述待处理数据包的多个数据片段;
在所述将所述多个数据片段的运算结果数据缓存之后,还包括:
通过所述第二先进先出模块向所述PCI-E接口发送所述多个数据片段的运算结果数据;
通过所述PCI-E接口接收所述第二先进先出模块发送的所述多个数据片段的运算结果数据,并输出所述多个数据片段的运算结果数据。
5.根据权利要求4所述的方法,其特征在于,还包括:
若所述第一先进先出模块的数据流量初次高于第一预设阈值,则控制所述加密解密模块开始处理数据片段;
若所述第二先进先出模块的数据流量高于第二预设阈值,则控制所述PCI-E接口加快数据的发送速度,并减慢数据的接收速度;
若所述第二先进先出模块的数据流量低于第三预设阈值,则控制所述PCI-E接口加快数据的接收速度,并减慢数据的发送速度;其中,所述第三预设阈值小于所述第一预设阈值,且所述第一预设阈值小于所述第二预设阈值。
6.一种加解密运算加速***,其特征在于,包括:加密解密模块、第一先进先出模块和第二先进先出模块;所述第一先进先出模块、所述加密解密模块和所述第二先进先出模块依次通信;
所述第一先进先出模块用于接收待处理数据包的多个数据片段,并向加密解密模块发送所述待处理数据包的多个数据片段;
所述加密解密模块用于接收所述待处理数据包的多个数据片段,并对所述待处理数据包的多个数据片段进行加解密并行运算,获得所述多个数据片段的运算结果数据,然后向所述第二先进先出模块发送所述多个数据片段的运算结果数据;
所述第二先进先出模块用于接收所述多个数据片段的运算结果数据,并将所述多个数据片段的运算结果数据缓存。
7.根据权利要求6所述的***,其特征在于,所述加密解密模块包括相互独立的多个轮运算模块;所述多个轮运算模块用于通过相互独立的多个轮运算模块运行国密SM4算法,并以流水线运算的方式对所述待处理数据包的多个数据片段进行加解密并行运算。
8.根据权利要求6-7任一所述的***,其特征在于,还包括:外设组件互连PCI-E接口;所述PCI-E接口与所述第一先进先出模块通信;
所述PCI-E接口用于接收待处理数据包的多个数据片段,并向所述第一先进先出模块发送所述待处理数据包的多个数据片段;以及接收所述第二先进先出模块发送的所述多个数据片段的运算结果数据,并输出所述多个数据片段的运算结果数据。
9.根据权利要求8所述的***,其特征在于,还包括:流量控制模块;所述流量控制模块分别与所述PCI-E接口、所述加密解密模块、所述第一先进先出模块和所述第二先进先出模块相互通信;
所述流量控制模块用于若所述第一先进先出模块的数据流量初次高于第一预设阈值,则控制所述加密解密模块开始处理数据片段;
所述流量控制模块还用于若所述第二先进先出模块的数据流量高于第二预设阈值,则控制所述PCI-E接口加快数据的发送速度,并减慢数据的接收速度;
所述流量控制模块还用于若所述第二先进先出模块的数据流量低于第三预设阈值,则控制所述PCI-E接口加快数据的接收速度,并减慢数据的发送速度;其中,所述第三预设阈值小于所述第一预设阈值,且所述第一预设阈值小于所述第二预设阈值。
10.一种计算机可读存储介质,其特征在于,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如权利要求1至5任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110635184.9A CN113378194B (zh) | 2021-06-09 | 2021-06-09 | 一种加解密运算加速方法、***及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110635184.9A CN113378194B (zh) | 2021-06-09 | 2021-06-09 | 一种加解密运算加速方法、***及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113378194A true CN113378194A (zh) | 2021-09-10 |
CN113378194B CN113378194B (zh) | 2023-02-28 |
Family
ID=77576295
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110635184.9A Active CN113378194B (zh) | 2021-06-09 | 2021-06-09 | 一种加解密运算加速方法、***及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113378194B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114461553A (zh) * | 2022-04-12 | 2022-05-10 | 北京象帝先计算技术有限公司 | 数据处理***、电子装置、电子设备及数据处理方法 |
Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080065796A1 (en) * | 1999-08-04 | 2008-03-13 | Super Talent Electronics Inc. | High-Level Bridge From PCIE to Extended USB |
CN101290569A (zh) * | 2008-05-06 | 2008-10-22 | 国网南京自动化研究院 | 一种采用多密码芯片并行数据处理的方法 |
CN102111263A (zh) * | 2011-02-21 | 2011-06-29 | 山东中孚信息产业股份有限公司 | 一种数据流加密的方法 |
CN102117342A (zh) * | 2011-01-21 | 2011-07-06 | 中国科学院上海技术物理研究所 | 基于PCI Express总线的多波段红外图像实时采集***及方法 |
CN102789439A (zh) * | 2012-06-16 | 2012-11-21 | 北京忆恒创源科技有限公司 | 控制数据传输过程中的中断的方法 |
CN103679061A (zh) * | 2013-11-22 | 2014-03-26 | 北京民芯科技有限公司 | 国密sm4算法的可扩展高吞吐率的实现方法及装置 |
CN105224482A (zh) * | 2015-10-16 | 2016-01-06 | 浪潮(北京)电子信息产业有限公司 | 一种fpga加速卡高速存储*** |
CN105224286A (zh) * | 2015-09-15 | 2016-01-06 | 清华大学无锡应用技术研究院 | 用于可重构密码处理器的缓存装置 |
CN106529314A (zh) * | 2016-10-28 | 2017-03-22 | 成都力雅信息技术有限公司 | 一种应用fpga加密卡的微型股市数据处理*** |
CN109408523A (zh) * | 2018-10-10 | 2019-03-01 | 罗克佳华科技集团股份有限公司 | 数据共享方法、装置、数据共享平台、电子设备 |
CN111832051A (zh) * | 2020-07-10 | 2020-10-27 | 郑州信大捷安信息技术股份有限公司 | 一种基于fpga的对称加解密方法及*** |
CN112100119A (zh) * | 2020-08-18 | 2020-12-18 | 中国科学院声学研究所 | 一种基于fpga的高速以太网帧重构*** |
CN112329038A (zh) * | 2020-11-15 | 2021-02-05 | 珠海市一微半导体有限公司 | 一种基于usb接口的数据加密控制***及芯片 |
CN112328202A (zh) * | 2020-11-26 | 2021-02-05 | 山东云海国创云计算装备产业创新中心有限公司 | 一种流量控制方法、装置及电子设备和存储介质 |
-
2021
- 2021-06-09 CN CN202110635184.9A patent/CN113378194B/zh active Active
Patent Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080065796A1 (en) * | 1999-08-04 | 2008-03-13 | Super Talent Electronics Inc. | High-Level Bridge From PCIE to Extended USB |
CN101290569A (zh) * | 2008-05-06 | 2008-10-22 | 国网南京自动化研究院 | 一种采用多密码芯片并行数据处理的方法 |
CN102117342A (zh) * | 2011-01-21 | 2011-07-06 | 中国科学院上海技术物理研究所 | 基于PCI Express总线的多波段红外图像实时采集***及方法 |
CN102111263A (zh) * | 2011-02-21 | 2011-06-29 | 山东中孚信息产业股份有限公司 | 一种数据流加密的方法 |
CN102789439A (zh) * | 2012-06-16 | 2012-11-21 | 北京忆恒创源科技有限公司 | 控制数据传输过程中的中断的方法 |
CN103679061A (zh) * | 2013-11-22 | 2014-03-26 | 北京民芯科技有限公司 | 国密sm4算法的可扩展高吞吐率的实现方法及装置 |
CN105224286A (zh) * | 2015-09-15 | 2016-01-06 | 清华大学无锡应用技术研究院 | 用于可重构密码处理器的缓存装置 |
CN105224482A (zh) * | 2015-10-16 | 2016-01-06 | 浪潮(北京)电子信息产业有限公司 | 一种fpga加速卡高速存储*** |
CN106529314A (zh) * | 2016-10-28 | 2017-03-22 | 成都力雅信息技术有限公司 | 一种应用fpga加密卡的微型股市数据处理*** |
CN109408523A (zh) * | 2018-10-10 | 2019-03-01 | 罗克佳华科技集团股份有限公司 | 数据共享方法、装置、数据共享平台、电子设备 |
CN111832051A (zh) * | 2020-07-10 | 2020-10-27 | 郑州信大捷安信息技术股份有限公司 | 一种基于fpga的对称加解密方法及*** |
CN112100119A (zh) * | 2020-08-18 | 2020-12-18 | 中国科学院声学研究所 | 一种基于fpga的高速以太网帧重构*** |
CN112329038A (zh) * | 2020-11-15 | 2021-02-05 | 珠海市一微半导体有限公司 | 一种基于usb接口的数据加密控制***及芯片 |
CN112328202A (zh) * | 2020-11-26 | 2021-02-05 | 山东云海国创云计算装备产业创新中心有限公司 | 一种流量控制方法、装置及电子设备和存储介质 |
Non-Patent Citations (1)
Title |
---|
陶徐咏: "基于PCIExpress的可信计算平台的硬件研究与设计", 《中国优秀硕士学位论文全文数据库信息科技辑》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114461553A (zh) * | 2022-04-12 | 2022-05-10 | 北京象帝先计算技术有限公司 | 数据处理***、电子装置、电子设备及数据处理方法 |
CN114461553B (zh) * | 2022-04-12 | 2022-06-17 | 北京象帝先计算技术有限公司 | 数据处理***、电子装置、电子设备及数据处理方法 |
Also Published As
Publication number | Publication date |
---|---|
CN113378194B (zh) | 2023-02-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108768873B (zh) | 一种流量控制方法及相关设备 | |
US8654798B2 (en) | Barrier synchronization apparatus, barrier synchronization system, and barrier synchronization method | |
CN106095604A (zh) | 一种多核处理器的核间通信方法及装置 | |
CN111400212B (zh) | 一种基于远程直接数据存取的传输方法、设备 | |
CN113378194B (zh) | 一种加解密运算加速方法、***及存储介质 | |
CN111124270A (zh) | 缓存管理的方法、设备和计算机程序产品 | |
WO2016202158A1 (zh) | 一种报文传输方法、装置及计算机可读存储介质 | |
CN114422799B (zh) | 视频文件的解码方法、装置、电子设备、程序产品 | |
CN113504894B (zh) | 一种随机数产生器、生成伪随机数的方法和一种芯片 | |
CN114780215A (zh) | 一种任务调度方法、装置、设备及存储介质 | |
CN112418389A (zh) | 数据处理方法、装置、电子设备及计算机可读存储介质 | |
CN107113323B (zh) | 一种数据存储方法、装置和*** | |
CN113986969A (zh) | 数据处理方法、装置、电子设备和存储介质 | |
CN108616598B (zh) | 数据同步方法、装置和分布式存储*** | |
CN110740138B (zh) | 数据传输方法和装置 | |
WO2012149775A1 (zh) | 数据处理的方法和装置 | |
WO2018090573A1 (zh) | 缓存空间的管理方法和装置、电子设备和存储介质 | |
US9509780B2 (en) | Information processing system and control method of information processing system | |
CN111061682B (zh) | 一种数据缓存方法、读取方法、电子设备及存储介质 | |
US20170346753A1 (en) | Method and device for forwarding data messages | |
CN109391556B (zh) | 一种报文调度方法、装置及存储介质 | |
JP2005303787A (ja) | パケット生成装置 | |
JP4265778B2 (ja) | ストリームデータ処理方法および装置 | |
CN111177194B (zh) | 一种流式数据的缓存方法及装置 | |
US11755522B1 (en) | Method, electronic device, and computer program product for implementing blockchain system on switch |
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 |