CN109800558B - 密码服务板卡以及密码服务装置 - Google Patents
密码服务板卡以及密码服务装置 Download PDFInfo
- Publication number
- CN109800558B CN109800558B CN201811607980.6A CN201811607980A CN109800558B CN 109800558 B CN109800558 B CN 109800558B CN 201811607980 A CN201811607980 A CN 201811607980A CN 109800558 B CN109800558 B CN 109800558B
- Authority
- CN
- China
- Prior art keywords
- key
- service
- unit
- interface
- random access
- 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
Images
Landscapes
- Storage Device Security (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种密码服务板卡和密码服务装置,属于信息安全领域。所述密码服务板卡包括:FPGA电路板、DDR芯片和PCIE接口,PCIE接口设置在FPGA电路板上;FPGA电路板包括:处理模块、一级缓存模块、二级缓存模块和DDR接口模块;处理模块,用于向二级缓存模块发送密钥查询指令;向一级缓存模块发送读写指令;二级缓存模块,用于在二级RAM单元或者DDR芯片中,查询密钥的编号对应的密钥;向一级缓存模块发送密钥参数,密钥参数包括查询到的密钥以及进程和线程编号;一级缓存模块,用于将密钥参数中的密钥存入空的一级RAM单元,同时采用密钥参数中的进程和线程编号标识一级RAM单元;根据读写指令中的进程和线程编号,对一级缓存模块中对应的一级RAM单元进行读写操作。
Description
技术领域
本发明涉及信息安全领域,特别涉及一种密码服务板卡以及密码服务装置。
背景技术
随着云计算、大数据等新兴技术的发展,密码技术有了更大更前沿的应用阵地。在新兴技术领域,需要提供的密码服务的性能指标经常是以Gbps为单位的。
传统的密码服务板卡以现场可编程门阵列(Field Programmable Gate Array,FPGA)为基础,在FPGA中通过RAM存储密钥,当主机需要进行加密服务时,FPGA从随机存取存储器(Random Access Memory,RAM)中读取密钥对数据进行加密等操作。
目前,FPGA读取密钥的方式是按照存储位置依次从RAM中查找密钥,当查找到对应的密钥时,采用该密钥进行加密服务。
由于密码服务流量增大,目前这种密钥服务中查找密钥的速度慢,时间消耗大,不利于加密服务的进行。
发明内容
本发明实施例提供了一种密码服务板卡以及密码服务装置,解决现有技术中查找密钥的速度慢,时间消耗大,不利于加密服务的进行的问题。所述技术方案如下:
一方面,本发明实施例提供了一种密码服务板卡,所述密码服务板卡包括:FPGA电路板、DDR芯片和PCIE接口,所述PCIE接口设置在所述FPGA电路板上,所述FPGA电路板同时与所述DDR芯片以及所述PCIE接口电连接;
所述FPGA电路板包括:处理模块、一级缓存模块、二级缓存模块和DDR接口模块;所述处理模块包括多个算法核心单元,所述一级缓存模块包括多个一级RAM单元,所述二级缓存模块包括至少一个二级RAM单元;
所述处理模块,用于向所述二级缓存模块发送密钥查询指令,所述密钥查询指令包括密钥的编号以及进程和线程编号;向所述一级缓存模块发送读写指令,所述读写指令包括进程和线程编号;
所述二级缓存模块,用于接收所述处理模块发送的密钥查询指令;在所述至少一个二级RAM单元中,或者通过所述DDR接口模块从所述DDR芯片中,查询所述密钥的编号对应的密钥;向所述一级缓存模块发送密钥参数,所述密钥参数包括查询到的所述密钥以及所述密钥查询指令中的进程和线程编号;
所述一级缓存模块,用于接收所述密钥参数,将所述密钥参数中的密钥存入空的一级RAM单元,同时采用所述密钥参数中的进程和线程编号标识所述一级RAM单元;接收所述读写指令,根据所述读写指令中的进程和线程编号,对所述一级缓存模块中对应的所述一级RAM单元进行读写操作。
在本发明实施例的一种实现方式中,所述一级缓存模块还包括:
第一配置接口、第一业务接口以及与所述多个一级RAM单元一一对应设置的多个第一伴随寄存器,所述多个一级RAM单元均电连接在所述第一配置接口和所述第一业务接口之间;
所述第一配置接口,用于接收所述密钥参数,将所述密钥参数中的密钥写入空的一级RAM单元,同时设置对应的所述第一伴随寄存器的内容有效标志位和进程线程编号位;
所述第一业务接口,用于接收所述处理模块发送的读写指令;找到所述读写指令中的进程和线程编号对应的所述一级RAM单元,对找到的所述一级RAM单元进行读写操作。
在本发明实施例的一种实现方式中,所述二级缓存模块还包括:
第二配置接口、第二业务接口以及与所述至少一个二级RAM单元一一对应设置的至少一个第二伴随寄存器,所述至少一个二级RAM单元均电连接在所述第二配置接口和所述第二业务接口之间;
所述第二配置接口,用于将所述DDR芯片发送的密钥写入空的二级RAM单元,同时设置对应的所述第二伴随寄存器的内容有效标志位;
所述第二业务接口,用于接收所述密钥查询指令;根据各个所述第二伴随寄存器的业务请求冲突标志位确定对应的所述二级RAM单元是否空闲;从空闲的所述二级RAM单元中查询密钥,同时设置所述第二伴随寄存器的进程线程编号位;在查询到对应的密钥时,向所述一级缓存模块发送密钥参数;在未查询到对应的密钥时,保存所述密钥查询指令,同时向所述DDR芯片查询所述密钥查询指令对应的密钥;
所述第二业务接口,还用于周期性地查询本地保存的所述密钥查询指令对应的密钥。
在本发明实施例的一种实现方式中,所述DDR接口模块包括:DDR控制器和读写选择及预处理单元;
所述DDR芯片,用于存储密钥;
所述DDR控制器,用于从所述DDR芯片中读取密钥,或者向所述DDR芯片中写入密钥;
所述读写选择及预处理单元,用于接收所述密钥查询指令,通过所述DDR控制器从所述DDR芯片中读取密钥;或者,接收密钥,通过所述DDR控制器向所述DDR芯片中写入密钥;在未查询到对应的密钥时,保存所述密钥查询指令;
所述读写选择及预处理单元,还用于周期性地查询本地保存的所述密钥查询指令对应的密钥。
在本发明实施例的一种实现方式中,所述DDR芯片包括多个密钥存储空间;
所述读写选择及预处理单元,还用于记录所述DDR芯片中各个密钥存储空间的存储状态。
在本发明实施例的一种实现方式中,所述FPGA电路板还包括:算法调度与负载均衡模块,所述算法调度与负载均衡模块设置在所述PCIE接口和所述处理模块之间;
所述算法调度与负载均衡模块,用于将所述PCIE接口接收到的任务分配给所述多个算法核心单元,同时控制所述多个算法核心单元负载均衡。
在本发明实施例的一种实现方式中,所述算法调度与负载均衡模块包括:与所述多个算法核心单元一一对应设置的多个业务分片单元、指令解析单元、与所述多个算法核心单元一一对应设置的多个算法状态寄存器、多个线程状态寄存器、算法业务总量计算单元和算法状态比较单元;
所述业务分片单元,用于对业务数据进行分片,然后输出给对应的所述算法核心单元;
所述指令解析单元,用于解析所述PCIE接口发送的报文;当所述报文为业务初始化指令时,将所述业务初始化指令发送给算法业务总量计算单元;当所述报文为业务数据,将所述业务数据发送给对应的所述业务分片单元;
所述算法状态寄存器,用于记录对应的所述算法核心单元的活跃线程数目、活跃线程的进程线程编号以及剩余总任务链;
所述线程状态寄存器,用于记载所述算法核心单元的一个线程的所述算法核心单元的各个线程的总业务量和剩余业务量;
所述算法业务总量计算单元,用于在接收到所述业务初始化指令时,计算各个所述算法核心单元的总业务量,并确定各个所述算法核心单元的活跃线程数目;
所述算法状态比较单元,用于将所述业务初始化指令对应的任务分配给最小任务算法核心单元,所述最小任务算法核心单元为活跃线程数目未达到上限的所述算法核心单元中总业务量最少的算法核心单元。
在本发明实施例的一种实现方式中,所述FPGA电路板还包括:ARM模块和总线接口;
所述总线接口同时与所述ARM模块、所述处理模块、所述算法调度与负载均衡模块、所述一级缓存模块、所述二级缓存模块和所述DDR芯片电连接。
在本发明实施例的一种实现方式中,所述总线接口包括:
AXI互连单元、第一AXI双极随机存取存储器控制器、第二AXI双极随机存取存储器控制器、上行双口RAM、下行双口RAM和DMA寄存器;所述AXI互连单元同时与所述ARM模块、第一AXI双极随机存取存储器控制器、第二AXI双极随机存取存储器控制器和DMA寄存器电连接,所述第一AXI双极随机存取存储器控制器与所述上行双口RAM电连接,所述第二AXI双极随机存取存储器控制器与所述下行双口RAM电连接。
另一方面,本发明实施例还提供了一种密码服务装置,所述密码服务装置包括如前一方面任一项所述的密码服务板卡。
本发明实施例提供的技术方案带来的有益效果是:
通过PCIE接口进行加密服务中数据的传输,保证该密码服务板卡能够适用于大流量的加密服务场景。该密码服务板卡在FPGA电路板的基础上设计有3层缓存来存储密钥,分别是一级缓存模块、二级缓存模块和DDR芯片,其中DDR芯片通过DDR接口模块和FPGA电路板连接。具体地,在进行密码服务时,处理模块向二级缓存模块发送所述密钥查询指令,由二级缓存模块在本地或者DDR芯片中获取密钥存入一级缓存模块,处理模块通过从对应的一级缓存模块中读取该密钥进行密码服务器。该方案通过三级缓存设计,加快了密钥读取速度,减小了时间消耗,更适用于大数据量业务下的密码服务。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种密码服务板卡的结构示意图;
图2是本发明实施例提供的FPGA电路板的结构示意图;
图3是本发明实施例提供的一级缓存模块的结构示意图;
图4是本发明实施例提供的二级缓存模块的结构示意图;
图5是本发明实施例提供的DDR接口模块的结构示意图;
图6是本发明实施例提供的另一种密码服务板卡的结构示意图;
图7是本发明实施例提供的算法调度与负载均衡模块的结构示意图;
图8是本发明实施例提供的总线接口的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
图1是本发明实施例提供的一种密码服务板卡的结构示意图。参见图1,该密码服务板卡10包括:FPGA电路板100、双倍数据速率(Double Data Rate,DDR)芯片200和***组件互连扩展(Peripheral Component Interconnect Expres,PCIE)接口300,PCIE接口300设置在FPGA电路板100上,FPGA电路板100同时与DDR芯片200以及PCIE接口300电连接。
FPGA电路板100包括:处理模块101、一级缓存模块102、二级缓存模块103和DDR接口模块104。如图1所示,处理模块101通过PCIE接口300连接主机20,从而对主机20下发的任务进行处理。该处理模块101还同时与一级缓存模块102、二级缓存模块103电连接,一级缓存模块102与二级缓存模块103电连接,DDR接口模块104同时与二级缓存模块103、DDR芯片200电连接。
图2是本发明实施例提供的FPGA电路板的结构示意图。参见图2,处理模块101包括多个算法核心单元111,一级缓存模块102包括多个一级RAM单元121,二级缓存模块103包括至少一个二级RAM单元131。
处理模块101,用于向二级缓存模块103发送密钥查询指令,密钥查询指令包括密钥的编号以及进程和线程编号;向一级缓存模块102发送读写指令,读写指令包括进程和线程编号。
二级缓存模块103,用于接收处理模块101发送的密钥查询指令;在至少一个二级RAM单元131中,或者通过DDR接口104模块从DDR芯片200中,查询密钥的编号对应的密钥;向一级缓存模块102发送密钥参数,密钥参数包括查询到的密钥以及密钥查询指令中的进程和线程编号。
一级缓存模块102,用于接收密钥参数,将密钥参数中的密钥存入空的一级RAM单元121,同时采用密钥参数中的进程和线程编号标识一级RAM单元121;接收读写指令,根据读写指令中的进程和线程编号,对一级缓存模块102中对应的一级RAM单元121进行读写操作。
其中,进程和线程编号是主机20中下发该任务的进程和线程的编号,携带在主机20下发的任务中,从而便于最后密码服务板卡将处理后的数据返回给相应的进程和线程。
这里的读写操作,包括从一级RAM单元121中读取密钥,向一级RAM单元121中写入中间变量。每个算法核心单元111采用多个一级RAM单元121中的一个一级RAM单元121存储中间变量和密钥,且不同的算法核心单元111采用不同的一级RAM单元121存储中间变量和密钥。
在本发明实施例中,通过PCIE接口进行加密服务中数据的传输,保证该密码服务板卡能够适用于大流量的加密服务场景。该密码服务板卡在FPGA电路板的基础上设计有3层缓存来存储密钥,分别是一级缓存模块、二级缓存模块和DDR芯片,其中DDR芯片通过DDR接口模块和FPGA电路板连接。具体地,在进行密码服务时,处理模块向二级缓存模块发送所述密钥查询指令,由二级缓存模块在本地或者DDR芯片中获取密钥存入一级缓存模块,处理模块通过从对应的一级缓存模块中读取该密钥进行密码服务器。该方案通过三级缓存设计,加快了密钥读取速度,减小了时间消耗,更适用于大数据量业务下的密码服务。
在本发明实施例中,PCIE接口300可以为3.0版本PCIE接口,内置链式直接内存存取(Direct Memory Access,DMA)寄存器,整个PCIE接口可以提供几十个Gbps的带宽,能够应用于大数据量业务下的密码服务。
在本发明实施例中,处理模块101的多个算法核心单元111可以提供多种密码服务,因此,可以在通过各算法核心单元111运行各种不同的密码算法来提供密码服务。例如,处理模块101各通过一个算法核心单元111分别运行签名算法、验证签名算法、协商算法、哈希算法,通过多个算法核心单元111均运行加解密算法,从而为主机提供服务。
在本发明实施例中,每个算法核心单元111(每路密码算法)的一级缓存(一级缓存模块)都是独立的,也即都有自己的私有一级缓存,一级缓存用于存储密钥和运算过程中产生的中间变量。当算法核心单元111的任务处理完毕后,需要释放一级缓存的对应空间;一级缓存的初始内容来自二级缓存(二级缓存模块),在运算过程中存储的中间变量会不断重写。二级缓存为公共缓存,可以同时服务于多个算法核心单元111,其作用是存储最近一段时间内这几个算法最常用到的若干条密钥,这样可以极大的提高查询效率。二级缓存的内容来源于三级缓存(DDR芯片)。二级缓存的内容动态更新,一段时间内没有被查询过或者查询次数比较少的密钥,会被新的来自三级缓存的密钥覆盖。三级缓存即DDR芯片为FPGA的本地密钥库,可以支持存储成千上万条密钥,这些密钥来自于密钥资源管理程序的配置。通过这种三级缓存方案使得查找密钥更加高效,克服了传统设计中存在的密钥获取消耗时间多的问题。
图3是本发明实施例提供的一级缓存模块的结构示意图。参见图3,一级缓存模块102还包括:
第一配置接口122、第一业务接口123以及与多个一级RAM单元121一一对应设置的多个第一伴随寄存器124,多个一级RAM单元121均电连接在第一配置接口122和第一业务接口123之间。
第一配置接口122,用于接收密钥参数,将密钥参数中的密钥写入空的一级RAM单元121,同时设置对应的第一伴随寄存器124的内容有效标志位和进程线程编号位。
第一业务接口123,用于接收处理模块101发送的读写指令;找到读写指令中的进程和线程编号对应的一级RAM单元121,对找到的一级RAM单元121进行读写操作,读写指令包括进程线程编号。
在本发明实施例中,一级缓存模块102中的多个一级RAM单元121可以采用了分布式RAM设计,一级RAM单元为双口RAM。每个一级RAM单元的大小可以为256字节大小,前128字节空间为中间变量空间,在业务线程执行过程中产生的中间变量会不断覆盖该区域,后128字节为密钥空间,其生命周期到对应业务线程的最后一个分片处理完毕截至。分布式RAM结构属于空间上的扩展,加上一级伴随寄存器的配合,使得可以同时查询每一个RAM的状态,通过空间扩展换取查询速度,进而提高密钥获取速度。
第一配置接口122在收到二级缓存模块的密钥参数时,首先通过一级伴随寄存器的内容有效标志位(例如0表示空,1表示已经存储有密钥)找到一个没有存储密钥的一级RAM单元。找到空的一级RAM单元后,把密钥写入到该一级RAM单元的后128字节空间,写入完毕后将内容有效标志位的值置为1,同时将密钥参数里携带的进程和线程编号填入进程线程编号位。
第一业务接口123在读写时,需要首先找到读写指令中的进程线程编号对应的一级RAM单元。具体地,将进程线程编号作为查询基准,同时与每个一级RAM单元对应的一级伴随寄存器的进程线程编号位比对,可以一个时钟周期得到查询结果。由于密钥查询指令在读写指令前发出,所以指令下发顺序保证了第一配置接口和第一业务接口123不会同时对一级RAM单元进行操作。
图4是本发明实施例提供的二级缓存模块的结构示意图。参见图4,二级缓存模块103还包括:
第二配置接口132、第二业务接口133、以及与至少一个二级RAM单元131一一对应设置的至少一个第二伴随寄存器134,至少一个二级RAM单元131均电连接在第二配置接口132和第二业务接口133之间。
第二配置接口132,用于将DDR芯片200发送的密钥写入空的二级RAM单元131,同时设置对应的第二伴随寄存器134的内容有效标志位。
第二业务接口133,用于接收密钥查询指令;根据各个第二伴随寄存器134的业务请求冲突标志位确定对应的二级RAM单元131是否空闲;从空闲的二级RAM单元131中查询密钥,同时设置第二伴随寄存器134的进程线程编号位;在查询到对应的密钥时,向一级缓存模块102发送密钥参数;在未查询到对应的密钥时,保存密钥查询指令,同时向DDR芯片200查询密钥查询指令对应的密钥。
第二业务接口133,还用于周期性地查询本地保存的密钥查询指令对应的密钥。
二级缓存是业务初始化指令(也就是前述密钥查询指令)访问的模块,一个二级RAM单元能够同时服务于多个一级RAM单元,会收到多个不同业务线程的业务初始化指令。每个二级RAM单元对应的第二伴随寄存器的业务请求冲突标志位标识了该RAM当前是否正在被某个业务初始化指令访问,防止其它业务初始化指令的同时访问。多路业务初始化指令可以同时读入,同时并行解析,取出密钥编号,查询对应的二级RAM单元对应的第二伴随寄存器进行冲突检测,若该二级RAM单元正在被访问,则本次查询等待,直至另一个查询完成且业务请求冲突标志位被重置(例如0表示空闲,1表示被占用)。理论上,若不存在查询访问目标冲突,则多个初始化查询指令都可以在几个周期内找到对应的二级RAM单元,这种机制成倍的提高了查询效率。
在本发明实施例中,二级缓存模块103中的多个二级RAM单元131可以采用了分布式RAM设计,二级RAM单元为双口RAM。
在本发明实施例中,第二业务接口133还用于当查询到密钥查询指令对应的密钥时,反馈初始化查询成功指令给主机,随后主机向密码服务板卡下发正式的业务分片包,开始进行密码服务。
第二业务接口133从二级RAM单元131里取出的密钥在放入一级缓存模块之前,需要将密钥编号换成进程线程编号,因为查询一级缓存的是业务线程,而每个业务线程的业务分片包不携带密钥编号信息,携带的是进程线程编号。
在本发明实施例中,二级缓存内部保存了一份未查询到的密钥查询指令,同时将密钥查询指令转发给三级缓存去查找,这样不会造成未命中的密钥查询指令长期等待而占用某个查询输入接口,不影响后续的业务初始化指令的执行。第二业务接口会轮流读取外部输入接口的业务初始化指令和未命中的密钥查询指令,当第二配置接口132收到了来自三级缓存查询到的密钥,则未命中的密钥查询指令会在再次查询时命中(命中后二级缓存内不再保存未命中的密钥查询指令)。
图5是本发明实施例提供的DDR接口模块的结构示意图。参见图5,DDR接口模块104包括:DDR控制器141和读写选择及预处理单元142。
DDR芯片200,用于存储密钥。
DDR控制器141,用于从DDR芯片200中读取密钥,或者向DDR芯片200中写入密钥。
读写选择及预处理单元142,用于接收密钥查询指令,通过DDR控制器141从DDR芯片200中读取密钥。或者,接收密钥,通过DDR控制器141向DDR芯片200中写入密钥。在未查询到对应的密钥时,保存密钥查询指令。
读写选择及预处理单元142,还用于周期性地查询本地保存的密钥查询指令对应的密钥。
在本发明实施例中,DDR芯片200包括多个密钥存储空间。
读写选择及预处理单元142,还用于记录DDR芯片200中各个密钥存储空间的存储状态。
具体地,每条密钥参数占用256字节的存储空间,其存储的基地址是密钥编号乘以256字节,所以每条密钥的编号都是在一个范围内的整数,这样存储可以在查询时迅速得到查询结果,避免了轮询读取逐条比对这种时间不可控的低效查找。
读写选择及预处理单元142中可以存储有一个密钥库状态表,用于记录各个密钥存储空间的存储状态,比如DDR芯片里如果最多存储一万条密钥,则该密钥库状态表里对应设置有一万个1bit的寄存器,每个寄存器表示某个256字节的空间内是否存储了有效的密钥参数,每写入一条密钥参数后就会及时更新密钥库状态表里的对应寄存器。
在本发明实施例中,读写选择及预处理单元142还用于在未查询到密钥查询指令对应的密钥时,反馈初始化查询失败指令给主机。
图6是本发明实施例提供的另一种密码服务板卡的结构示意图。参见图6,FPGA电路板100还包括:算法调度与负载均衡模块105,算法调度与负载均衡模块105设置在PCIE接口300和处理模块101之间。
算法调度与负载均衡模块105,用于将PCIE接口300接收到的任务分配给多个算法核心单元111,同时控制多个算法核心单元111负载均衡。通过针对性的算法调度逻辑达到负载均衡化的目的,进而提高了每个算法的利用率。
算法调度与负载均衡模块是充分发挥多算法核运算能力的关键手段,实现精准调度的前提是对各算法核当前的剩余运算任务量的准确统计,以及估算新业务线程会带来的运算任务量。每个新的业务线程的开始,都会首先发送一个业务初始化命令给FPGA,命令里携带了该业务线程需要下发给逻辑的总的数据量(以分片数表示,一个分片为2K字节)。新业务线程的数据总量信息会被传递给算法调度与负载均衡模块,该模块再结合各算法的当前状态做出仲裁,指示出最空闲的一个算法核心单元111给新业务线程使用。
图7是本发明实施例提供的算法调度与负载均衡模块的结构示意图。参见图7,算法调度与负载均衡模块105包括:与多个算法核心单元111一一对应设置的多个业务分片单元151、指令解析单元152、与多个算法核心单元111一一对应设置的多个算法状态寄存器153(或称算法状态寄存器组)、多个线程状态寄存器154(或称线程状态寄存器组)、算法业务总量计算单元155和算法状态比较单元156。需要说明的是,为了图示的简洁,图中仅示出一个算法状态寄存器153和线程状态寄存器154,实际有多个。
业务分片单元151,用于对业务数据进行分片,然后输出给对应的算法核心单元111。
指令解析单元152,用于解析PCIE接口300发送的报文。当报文为业务初始化指令时,将业务初始化指令发送给算法业务总量计算单元155。当报文为业务数据,将业务数据发送给对应的业务分片单元151。
算法状态寄存器153,用于对应的算法核心单元111的活跃线程数目、活跃线程的进程线程编号以及剩余总任务链。
线程状态寄存器154,用于记载算法核心单元111的一个线程的总业务量和剩余业务量。
算法业务总量计算单元155,用于在接收到业务初始化指令时,计算各个算法核心单元111的总业务量,并确定各个算法核心单元111的活跃线程数目。
算法状态比较单元156,用于将业务初始化指令对应的任务分配给最小任务算法核心单元111,最小任务算法核心单元111为活跃线程数目未达到上限的算法核心单元111中总业务量最少的算法核心单元111。
算法调度与负载均衡模块105的作用是监测并计算每个算法的实时负载及剩余工作量,并为每个业务线程在一开始(即下发业务初始化指令时)分配一个最空闲的算法。每个业务线程从开始到结束的所有业务分片包,只能在一个算法核上被处理,这是密码算法的迭代特征决定的。要统计各算法核(算法核心单元)的剩余业务量,就需要为每个算法核的每个活跃线程设置一个线程状态寄存器组,描述每个线程的总业务量(总业务分片包数目),剩余业务量。另外,还需要为每个算法设置一个算法状态寄存器组,描述该算法的当前活跃线程数目,活跃线程的进程和线程编号,剩余总业务量。算法状态寄存器组对各算法上各线程的进程和线程编号的记录,使得算法调度与负载均衡模块可以将软件业务分片包正确的分发给对应的算法核心单元。
算法调度与负载均衡模块中的算法状态比较单元会统计算法上所有活跃线程的未完成业务量总和,再加上新的业务初始化线程指示的总数据量,然后根据这个结果进行排序,优先考虑总和值小的,如果这样选择的算法其活跃线程数目一级达到上限,则根据排序结果退而求其次,如此迭代,直到找到合适的算法,完成仲裁。当本模块的仲裁结束,必须更新被选定算法的线程状态寄存器组和算法状态寄存器组。
再次参见图6,FPGA电路板100还包括:高级精简指令集处理器(Advanced RISCMachines,ARM)模块106和总线接口107。其中,总线接口107同时与ARM模块106、处理模块101、算法调度与负载均衡模块105、一级缓存模块102、二级缓存模块103和DDR芯片200电连接。
在本发明实施例中,ARM模块106,用于执行开机自检、控制设备状态转换、进行通信接口管理和密钥管理。
其中,ARM模块106的某些功能某些需要调用密码算法,例如用户权限鉴定。
ARM模块106在FPGA内部,与总线接口107的交互通道为64bit的先进微控制器总线体系结构(Advanced Microcontroller Bus Architecture,AMBA)总线,能够提供几个Gbps的带宽。
在本发明实施例中,ARM模块106最重要的功能是密钥管理。三级缓存的密钥即来自于ARM模块106,ARM模块106上运行密钥参数资源管理程序,以进行DDR芯片中的密钥管理。DDR芯片查询不到的密钥会通知ARM模块(该通知携带密钥编号),ARM模块收到该通知,随后ARM模块把需要的密钥参数下发到DDR芯片。密钥参数中的密钥编号由ARM模块上的密钥资源管理程序维护并指定。
另外,在本发明实施例中,业务除了可以直接由主机下发给算法核心单元外,还可以由主机发给ARM模块,由ARM模块发送给算法核心单元,同时ARM模块向二级缓存模块发送业务初始化指令。这种情况下,初始化查询成功指令或者初始化查询失败指令也是反馈给ARM模块。
图8是本发明实施例提供的总线接口的结构示意图。参见图8,总线接口107包括:
先进可扩展接口(Advanced eXtensible Interface,AXI)互连单元171、第一AXI双极随机存取存储器(Bipolar Random Access Memory,BRAM)控制器172、第二AXI BRAM控制器173、上行双口RAM174、下行双口RAM175和DMA寄存器176。AXI互连单元171同时与ARM模块106、第一AXI BRAM控制器172、第二AXI BRAM控制器173和DMA寄存器176电连接,第一AXIBRAM控制器172与上行双口RAM174电连接,第二AXI BRAM控制器173与下行双口RAM175电连接。
其中,AXI互连单元171连接ARM模块106,处理模块101、算法调度与负载均衡模块105、一级缓存模块102、二级缓存模块103和DDR芯片200均同时连接到上行双口RAM174和下行双口RAM175,上行双口RAM174负责存储其他模块到ARM模块106的数据,下行双口RAM175负责存储ARM模块106到其他模块的数据。第一AXI BRAM控制器172和第二AXI BRAM控制器173负责各个模块的数据格式转换。DMA寄存器176用于实现总线接口107的DMA功能。
进一步地,在总线接口107以及PCIE接口300和其他模块之间还设置有数据选择器(multiplexer,MUX),用于进行数据的交换。例如,总线接口107通过ARM MUX与其他模块电连接,PCIE接口300通过PCIE MUX与其他模块电连接,其中每种MUX可以设置1个或2个。
本发明实施例还提供了一种密码服务装置,该密码服务装置包括如图1~图8所示的密码服务板卡10。
当然,该密码服务装置还包括主机,主机通过该PCIE接口与密码服务板卡10电连接。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种密码服务板卡,其特征在于,所述密码服务板卡包括:现场可编程门阵列电路板、双倍数据速率芯片和***组件互连扩展接口,所述***组件互连扩展接口设置在所述现场可编程门阵列电路板上,所述现场可编程门阵列电路板同时与所述双倍数据速率芯片以及所述***组件互连扩展接口电连接;
所述现场可编程门阵列电路板包括:处理模块、一级缓存模块、二级缓存模块和双倍数据速率接口模块;所述处理模块包括多个算法核心单元,所述一级缓存模块包括多个一级随机存取存储器单元,所述二级缓存模块包括至少一个二级随机存取存储器单元;
所述处理模块,用于向所述二级缓存模块发送密钥查询指令,所述密钥查询指令包括密钥的编号以及进程和线程编号;向所述一级缓存模块发送读写指令,所述读写指令包括进程和线程编号;
所述二级缓存模块,用于接收所述处理模块发送的密钥查询指令;在所述至少一个二级随机存取存储器单元中,或者通过所述双倍数据速率接口模块从所述双倍数据速率芯片中,查询所述密钥的编号对应的密钥;向所述一级缓存模块发送密钥参数,所述密钥参数包括查询到的所述密钥以及所述密钥查询指令中的进程和线程编号;
所述一级缓存模块,用于接收所述密钥参数,将所述密钥参数中的密钥存入空的一级随机存取存储器单元,同时采用所述密钥参数中的进程和线程编号标识所述一级随机存取存储器单元;接收所述读写指令,根据所述读写指令中的进程和线程编号,对所述一级缓存模块中对应的所述一级随机存取存储器单元进行读写操作;所述读写操作包括从所述一级随机存取存储器单元中读取密钥,向所述一级随机存取存储器单元中写入中间变量。
2.根据权利要求1所述的密码服务板卡,其特征在于,所述一级缓存模块还包括:
第一配置接口、第一业务接口以及与所述多个一级随机存取存储器单元一一对应设置的多个第一伴随寄存器,所述多个一级随机存取存储器单元均电连接在所述第一配置接口和所述第一业务接口之间;
所述第一配置接口,用于接收所述密钥参数,将所述密钥参数中的密钥写入空的一级随机存取存储器单元,同时设置对应的所述第一伴随寄存器的内容有效标志位和进程线程编号位;
所述第一业务接口,用于接收所述处理模块发送的读写指令;找到所述读写指令中的进程和线程编号对应的所述一级随机存取存储器单元,对找到的所述一级随机存取存储器单元进行读写操作。
3.根据权利要求1所述的密码服务板卡,其特征在于,所述二级缓存模块还包括:
第二配置接口、第二业务接口以及与所述至少一个二级随机存取存储器单元一一对应设置的至少一个第二伴随寄存器,所述至少一个二级随机存取存储器单元均电连接在所述第二配置接口和所述第二业务接口之间;
所述第二配置接口,用于将所述双倍数据速率芯片发送的密钥写入空的二级随机存取存储器单元,同时设置对应的所述第二伴随寄存器的内容有效标志位;
所述第二业务接口,用于接收所述密钥查询指令;根据各个所述第二伴随寄存器的业务请求冲突标志位确定对应的所述二级随机存取存储器单元是否空闲;从空闲的所述二级随机存取存储器单元中查询密钥,同时设置所述第二伴随寄存器的进程线程编号位;在查询到对应的密钥时,向所述一级缓存模块发送密钥参数;在未查询到对应的密钥时,保存所述密钥查询指令,同时向所述双倍数据速率芯片查询所述密钥查询指令对应的密钥;
所述第二业务接口,还用于周期性地查询本地保存的所述密钥查询指令对应的密钥。
4.根据权利要求1所述的密码服务板卡,其特征在于,所述双倍数据速率接口模块包括:双倍数据速率控制器和读写选择及预处理单元;
所述双倍数据速率芯片,用于存储密钥;
所述双倍数据速率控制器,用于从所述双倍数据速率芯片中读取密钥,或者向所述双倍数据速率芯片中写入密钥;
所述读写选择及预处理单元,用于接收所述密钥查询指令,通过所述双倍数据速率控制器从所述双倍数据速率芯片中读取密钥;或者,接收密钥,通过所述双倍数据速率控制器向所述双倍数据速率芯片中写入密钥;在未查询到对应的密钥时,保存所述密钥查询指令;
所述读写选择及预处理单元,还用于周期性地查询本地保存的所述密钥查询指令对应的密钥。
5.根据权利要求4所述的密码服务板卡,其特征在于,所述双倍数据速率芯片包括多个密钥存储空间;
所述读写选择及预处理单元,还用于记录所述双倍数据速率芯片中各个密钥存储空间的存储状态。
6.根据权利要求1-5任一项所述的密码服务板卡,其特征在于,所述现场可编程门阵列电路板还包括:算法调度与负载均衡模块,所述算法调度与负载均衡模块设置在所述***组件互连扩展接口和所述处理模块之间;
所述算法调度与负载均衡模块,用于将所述***组件互连扩展接口接收到的任务分配给所述多个算法核心单元,同时控制所述多个算法核心单元负载均衡。
7.根据权利要求6所述的密码服务板卡,其特征在于,所述算法调度与负载均衡模块包括:与所述多个算法核心单元一一对应设置的多个业务分片单元、指令解析单元、与所述多个算法核心单元一一对应设置的多个算法状态寄存器、多个线程状态寄存器、算法业务总量计算单元和算法状态比较单元;
所述业务分片单元,用于对业务数据进行分片,然后输出给对应的所述算法核心单元;
所述指令解析单元,用于解析所述***组件互连扩展接口发送的报文;当所述报文为业务初始化指令时,将所述业务初始化指令发送给算法业务总量计算单元;当所述报文为业务数据,将所述业务数据发送给对应的所述业务分片单元;
所述算法状态寄存器,用于记录对应的所述算法核心单元的活跃线程数目、活跃线程的进程线程编号以及剩余总任务链;
所述线程状态寄存器,用于记载所述算法核心单元的一个线程的所述算法核心单元的各个线程的总业务量和剩余业务量;
所述算法业务总量计算单元,用于在接收到所述业务初始化指令时,计算各个所述算法核心单元的总业务量,并确定各个所述算法核心单元的活跃线程数目;
所述算法状态比较单元,用于将所述业务初始化指令对应的任务分配给最小任务算法核心单元,所述最小任务算法核心单元为活跃线程数目未达到上限的所述算法核心单元中总业务量最少的算法核心单元。
8.根据权利要求6所述的密码服务板卡,其特征在于,所述现场可编程门阵列电路板还包括:高级精简指令集处理器模块和总线接口;
所述总线接口同时与所述高级精简指令集处理器模块、所述处理模块、所述算法调度与负载均衡模块、所述一级缓存模块、所述二级缓存模块和所述双倍数据速率芯片电连接。
9.根据权利要求8所述的密码服务板卡,其特征在于,所述总线接口包括:
先进可扩展接口互连单元、第一先进可扩展接口双极随机存取存储器控制器、第二先进可扩展接口双极随机存取存储器控制器、上行双口随机存取存储器、下行双口随机存取存储器和直接内存存取寄存器;所述先进可扩展接口互连单元同时与所述高级精简指令集处理器模块、第一先进可扩展接口双极随机存取存储器控制器、第二先进可扩展接口双极随机存取存储器控制器和直接内存存取寄存器电连接,所述第一先进可扩展接口双极随机存取存储器控制器与所述上行双口随机存取存储器电连接,所述第二先进可扩展接口双极随机存取存储器控制器与所述下行双口随机存取存储器电连接。
10.一种密码服务装置,其特征在于,所述密码服务装置包括如权利要求1-9任一项所述的密码服务板卡。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811607980.6A CN109800558B (zh) | 2018-12-27 | 2018-12-27 | 密码服务板卡以及密码服务装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811607980.6A CN109800558B (zh) | 2018-12-27 | 2018-12-27 | 密码服务板卡以及密码服务装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109800558A CN109800558A (zh) | 2019-05-24 |
CN109800558B true CN109800558B (zh) | 2021-01-12 |
Family
ID=66557607
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811607980.6A Active CN109800558B (zh) | 2018-12-27 | 2018-12-27 | 密码服务板卡以及密码服务装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109800558B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110427206B (zh) * | 2019-07-18 | 2022-10-28 | 中国船舶重工集团公司第七0七研究所 | 一种基于zynq的算法动态更新方法 |
CN112995245B (zh) * | 2019-12-12 | 2023-04-18 | 郑州芯兰德网络科技有限公司 | 一种基于fpga的可配置负载均衡***与方法 |
CN112035388B (zh) * | 2020-08-12 | 2023-11-28 | 北京数盾信息科技有限公司 | 一种基于PCI-e通道的高性能加解密方法 |
CN114900486B (zh) * | 2022-05-09 | 2023-08-08 | 江苏新质信息科技有限公司 | 基于fpga的多算法核调用方法及*** |
CN115098040A (zh) * | 2022-07-22 | 2022-09-23 | 北京天融信网络安全技术有限公司 | 基于fpga的数据处理方法、装置、设备及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105337731A (zh) * | 2015-11-24 | 2016-02-17 | 北京三未信安科技发展有限公司 | 一种密码设备的改进及改进后数据同步方法及*** |
CN107526963A (zh) * | 2017-08-30 | 2017-12-29 | 深圳市风云实业有限公司 | 密钥查找设备、方法和计算机可读存储介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105099711B (zh) * | 2015-08-28 | 2018-10-12 | 北京三未信安科技发展有限公司 | 一种基于zynq的小型密码机及数据加密方法 |
CN108345806B (zh) * | 2017-12-14 | 2020-07-07 | 武汉船舶通信研究所(中国船舶重工集团公司第七二二研究所) | 一种硬件加密卡和加密方法 |
CN108898033B (zh) * | 2018-06-15 | 2020-12-08 | 中国电子科技集团公司第五十二研究所 | 一种基于fpga的数据加解密*** |
-
2018
- 2018-12-27 CN CN201811607980.6A patent/CN109800558B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105337731A (zh) * | 2015-11-24 | 2016-02-17 | 北京三未信安科技发展有限公司 | 一种密码设备的改进及改进后数据同步方法及*** |
CN107526963A (zh) * | 2017-08-30 | 2017-12-29 | 深圳市风云实业有限公司 | 密钥查找设备、方法和计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN109800558A (zh) | 2019-05-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109800558B (zh) | 密码服务板卡以及密码服务装置 | |
Li et al. | Kv-direct: High-performance in-memory key-value store with programmable nic | |
CN107003905B (zh) | 针对可配置计算资源的本地服务链而动态分配资源的技术 | |
Chalamalasetti et al. | An FPGA memcached appliance | |
JP4908017B2 (ja) | Dmaデータ転送装置及びdmaデータ転送方法 | |
JP4128956B2 (ja) | デュアル・インライン・メモリモジュール・フォーマットにおいて一連のマルチアダプティブプロセッサを採用したクラスタ型コンピュータ用スイッチ/ネットワークアダプタポート | |
US20160132541A1 (en) | Efficient implementations for mapreduce systems | |
CN104364760B (zh) | 采用多个存储器件的并行计算 | |
Blott et al. | Scaling Out to a {Single-Node} 80Gbps Memcached Server with 40Terabytes of Memory | |
CN111949568A (zh) | 一种报文处理方法、装置及网络芯片 | |
CN103902467A (zh) | 压缩内存访问控制方法、装置及*** | |
Fukuda et al. | Caching memcached at reconfigurable network interface | |
CN112506823B (zh) | 一种fpga数据读写方法、装置、设备及可读存储介质 | |
CN101344861A (zh) | 一种智能卡内存管理方法 | |
CN115080455B (zh) | 一种计算机芯片、计算机板卡、存储空间分配方法及装置 | |
CN105426322B (zh) | 一种数据的预取方法及装置 | |
Qiu et al. | Full-kv: Flexible and ultra-low-latency in-memory key-value store system design on cpu-fpga | |
CN117033275B (zh) | 加速卡间的dma方法、装置、加速卡、加速平台及介质 | |
CN111181874B (zh) | 一种报文处理方法、装置及存储介质 | |
US10248331B2 (en) | Delayed read indication | |
US20200026669A1 (en) | Memory system | |
CN110297785A (zh) | 一种基于fpga的金融数据流控装置和流控方法 | |
Agrawal et al. | Virtually pipelined network memory | |
CN113010454A (zh) | 数据读写方法、装置、终端及存储介质 | |
CN105659216A (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 |