一种基于PCIE通道的多算法IP核的高速加解密系统及方法转让专利

申请号 : CN202210572363.7

文献号 : CN114662136B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 王亮何军颜昕明

申请人 : 广州万协通信息技术有限公司

摘要 :

本发明公开了一种基于PCIE通道的多算法IP核的高速加解密系统及方法,在本发明设计方案下,PCIE加解密芯片所有的加解密业务是基于算法IP核X驱动的,芯片内部可用算法核的状态寄存器ALG_KERNEL_IDLE_Reg位于PCIe内存空间中,便于上位机PCIe驱动使用配置,用户的加解密源数据存储在上层主机系统内存中,由PCIE加解密芯片内部的DMA主动进行读取源数据,算法IP核进行加解密运算,完成后由内部DMA主动将加解密后的数据写回到同一内存中,直到将目标数据全部处理完毕后,最后产生PCIe MSI中断,ISR向“算法核完成状态消息对列”写入消息,唤醒用户线程,从而完成全部加解密工作,同时算法IP核被释放成空闲可用状态。

权利要求 :

1.一种基于PCIE通道的多算法IP核的高速加解密系统,其特征在于,包括上位机以及通过PCIe3.0通道相连的加密算法芯片,所述加密算法芯片包括PCIe3.0核、DMA模块、密钥控制器、算法控制器、多个算法IP核及其内部的第一存储单元、第二存储单元,所述DMA模块提供多个通道供加解密数据搬移,所述算法控制器接收上位机下发的加解密命令,并使用命令中的算法IP核进行加解密操作,所述算法IP核内部的第一存储单元和第二存储单元缓存加解密源数据,算法IP核按乒乓方式对第一存储单元和第二存储单元中缓存数据进行加解密操作,所述密钥控制器用于接收上位机下发的密钥、初始化向量,根据命令中指定的算法,产生密钥,以备算法IP核运行时从密钥控制器中获取密钥执行加解密过程;

所述算法IP核数量为32个,对任一个算法IP核采用算法IP核X表示,X取值为1,2,…,

32;

每个算法IP核内有第一存储单元和第二存储单元,用于缓存从PCIE接口读取的加解密源数据,RAM采用简单双口RAM;

允许待写入一定数量的加解密源数据到第一存储单元或第二存储单元后,算法IP核即开始读取数据进行加解密工作,并将结果写回到对应的存储单元中;

算法控制器控制DMA通道按乒乓方式向加解密命令中的算法IP核的第一存储单元和第二存储单元输入加解密源数据,以及输出加解密后的结果数据到主机系统的PCIE总线地址内存中;

算法IP核X按乒乓方式对第一存储单元和第二存储单元数据分别进行加解密操作,加解密完成后以硬件信号的方式通知算法控制器;

所述算法控制器包括算法IP核空闲状态寄存器ALG_KERNEL_IDLE_Reg;

所述算法IP核空闲状态寄存器中每个比特位对应一个算法IP核,当有算法IP核X产生加解密业务时,算法IP核X对应的比特位清除成0,表示繁忙状态;当某个算法IP核X产生作业完成状态时,该算法IP核X对应的比特位会被置成1,表示空闲可用状态;

根据算法IP核X输出的第一存储单元或第二存储单元空闲状态信号,从算法IP核X的内部寄存器中读取待加密源数据的PCIE总线地址以及数据长度,选取一个DMA通道将待加解密数据搬移到算法IP核X的第一存储单元或第二存储单元中,算法IP核X就开始加解密数据操作,并清除给算法控制器对应的存储单元空闲状态信号;

根据算法IP核X的输出的第一存储单元或第二存储单元加解密完成状态信号,再次从算法IP核X的内部寄存器中读取待加密源数据的PCIE总线地址,配置DMA通道将加解密完成后的数据搬移到源数据的PCIE总线地址处,待确认数据搬移完成后,算法IP核X输出作业完成状态给算法控制器,空闲状态寄存器中算法IP核X对应的比特位会被置成1,表示空闲可用状态。

2.根据权利要求1所述的基于PCIE通道的多算法IP核的高速加解密系统,其特征在于,所述DMA模块包括8个Tx通道和8个Rx通道,并且每个DMA通道的选择是由算法控制器确定,即由算法控制器选定某一个DMA通道进行数据的搬移操作。

3.根据权利要求1所述的基于PCIE通道的多算法IP核的高速加解密系统,其特征在于,从算法IP核X的内部寄存器中读取待加密源数据的PCIE总线地址以及数据长度,具体包括:读取待加密源数据的PCIE总线起始地址StartAddr_X及数据长度Size_X,读取Offset_X_Rd信息,如果Offset_X_Rd寄存器值小于Size_X值,则从8个DMA Rx通道中选定DMA Rx通道_K,配置DMA Rx通道_K寄存器并启动搬移数据,DMA Rx通道_K从源地址搬移数据到算法IP核X内部空闲的第一存储单元或第二存储单元;当第一存储单元或第二存储单元中有数据写入时,算法IP核X开启加解密过程,并将结果写回到对应的存储单元中;当DMA Rx通道_K搬移数据完成时,算法控制器更新算法IP核X的Offset_X_Rd寄存器值,增加4096。

4.根据权利要求1所述的基于PCIE通道的多算法IP核的高速加解密系统,其特征在于,根据算法IP核X的输出的第一存储单元或第二存储单元加解密完成状态信号,再次从算法IP核X的内部寄存器中读取待加密源数据的PCIE总线地址,配置DMA通道将加解密完成后的数据搬移到源数据的PCIE总线地址处,待确认数据搬移完成后,算法IP核X输出作业完成状态给算法控制器,算法IP核X对应的比特位会被置成1,表示空闲可用状态,具体包括:算法IP核X的输出的第一存储单元或第二存储单元加解密完成状态信号,从算法IP核X的内部寄存器中读取待加密数据PCIE总线起始地址StartAddr_X及长度Size_X,读取Offset_X_Wt信息,当Offset_X_Wt寄存器值小于Size_X值,则从8个DMA Tx通道中选定DMA Tx通道_L,配置DMA Tx通道_L寄存器并启动搬移数据,算法IP核X按用户选定算法进行计算,将计算完成结果通过DMA Tx通道_L将结果数据从算法IP核其内部第一存储单元或第二存储单元中输出到主机系统中的源PCIE总线地址内存地址处;当DMA Tx通道_L搬移数据完成时,算法控制器更新算法IP核X的Offset_X_Wt寄存器值,增加4096;如果Offset_X_Wt寄存器值小于Size_X值,则算法IP核X继续输出第一存储单元或第二存储单元加解密完成信号给算法控制器;如果Offset_X_Wt寄存器值等于Size_X值,算法IP核X输出作业完成状态给算法控制器。

5.一种基于PCIE通道的多算法IP核的高速加解密方法,其特征在于,采用权利要求1‑4任一所述的基于PCIE通道的多算法IP核的高速加解密系统,包括以下步骤:S1,配置上位机,初始化上位机,此时所有算法IP核均为空闲状态;创建算法核完成状态消息队列,获取可用的算法IP核X,创建加解密线程Thread_X;

S2,将用户待加解密的源数据PCIE总线地址信息以及选定的密钥信息组成数据包,通过PCIE接口传给算法IP核X,算法IP核X启动加解密过程;

根据算法IP核X输出的第一存储单元或第二存储单元空闲状态信号,从算法IP核X的内部寄存器中读取待加密源数据的PCIE总线地址以及数据长度,选取一个DMA通道将待加解密数据搬移到算法IP核X的第一存储单元或第二存储单元中,算法IP核X就开始加解密数据操作,并清除给算法控制器对应的存储单元空闲状态信号;

根据算法IP核X的输出的第一存储单元或第二存储单元加解密完成状态信号,再次从算法IP核X的内部寄存器中读取待加密源数据的PCIE总线地址,配置DMA通道将加解密完成后的数据搬移到源数据的PCIE总线地址处,待确认数据搬移完成后,算法IP核X输出作业完成状态给算法控制器,算法控制器将算法IP核空闲状态寄存器算法IP核X对应的比特位会被置成1,表示空闲可用状态;

S3,线程Thread_X从算法核完成状态消息队列获取加解密完成消息,被阻塞住,等待算法IP核X加密操作完成,待加密芯片DMA通道搬移结果数据完毕后,最后发出PCIe MSI中断;

S4,系统内核接收到MSI中断,向“算法核完成状态消息队列”写入值为 2^X 的消息,内核唤醒Thread_X;

S5,Thread_X刷新源数据PCIE总线地址StartAddr_X处的数据高速缓存,用户进程取出加解密后的数据,释放加解密线程Thread_X的系统资源。

6.根据权利要求5所述的基于PCIE通道的多算法IP核的高速加解密方法,其特征在于,步骤S2中的用户待加解密的源数据PCIE总线地址信息以及选定的密钥信息包括选定算法的密钥信息、用户待加解密数据PCIE总线起始地址StartAddr_X、数据长度Size_X,读写Offset、算法IP核编号X及其算法种类寄存器配置信息。

7.根据权利要求6所述的基于PCIE通道的多算法IP核的高速加解密方法,其特征在于,步骤S2具体包括:

S21,采用算法控制器将算法IP核空闲状态寄存器ALG_KERNEL_IDLE_Reg中算法IP核X对应的比特位设定成0表示繁忙;并确认算法IP核X的第一存储单元是否空闲,若是,则向算法控制器发送空闲信号,否则进入步骤S23;

S22,PCIe加密芯片内部算法控制器接收到算法IP核X第一存储单元空闲信号,算法控制器选择一个空闲DMA Rx通道_I,算法控制器从算法IP核X获得数据源PCIE总线地址信息,配置DMA Rx通道_I,从上层主机端数据源PCIE总线地址StartAddr_X+Offset_X_Rd寄存器值处读取第一包数据,并写入到算法IP核X的第一存储单元中,当DMA写满第一组数据后,算法IP核X就会自动开始加解密操作;并将加解密结果写回到第一存储单元中;当DMA Rx通道_I搬移数据完成时,算法控制器更新算法IP核X的Offset_X_Rd寄存器值,增加4096;

S23, 确认算法IP核X的第二存储单元是否空闲,若是,则将空闲信号发送到算法控制器,并由算法控制器从空闲DMA通道中选取DMA Rx通道_J;

S24, 算法控制器从算法IP核X获得数据源地址信息,配置DMA Rx通道_J,从PCIE总线地址StartAddr_X+Offset_X_Rd寄存器值处读取第二包数据,并写入到算法IP核X的第二存储单元中;当DMA Rx通道_J搬移数据完成时,算法控制器更新算法IP核X的Offset_X_Rd寄存器值,增加4096;

S25,当第一存储单元中待加密数据完成后,PCIe加密芯片内部算法控制器接收到算法IP核X的加解密完成信号,算法控制器选择一个空闲DMA Tx通道_M,配置使用DMA Tx通道_M将第一存储单元中加密后的数据写入到系统源数据PCIE总线地址处,从而完成第一包数据的加密;当DMA Tx通道_M搬移数据完成时,算法控制器更新算法IP核X的Offset_X_Wt寄存器值,增加4096;

S26,开始加密第二存储单元的数据,并将加密结果写回到第二存储单元;

S27,PCIe加密芯片使用DMA Rx通道_I读取第三包待加密数据到算法IP核X第一存储单元中,当第二存储单元中第二包数据的待加密数据完成后,PCIe加密芯片使用DMA Tx通道_N将第二存储单元中的加密后的数据写入到源数据PCIE总线地址处,从而完成第二包数据的加密;当DMA Tx通道_N搬移数据完成时,算法控制器更新算法IP核X的Offset_X_Wt寄存器值,增加4096;

S28,重复步骤S22‑S27,直到将全部的待加解密数据加解密完毕,同时在本次作业的最后的一包,DMA Tx通道_N向系统内存写完加密后的结果数据后,算法控制器将算法IP核空闲状态寄存器ALG_KERNEL_IDLE_Reg中算法IP核X对应的比特位设定成1表示算法IP核处于空闲状态。

8.根据权利要求7所述的基于PCIE通道的多算法IP核的高速加解密方法,其特征在于,每一包数据的大小为4KB;步骤S22中当DMA写满第一组数据具体为当DMA写满第一组数据

128比特数据。

说明书 :

一种基于PCIE通道的多算法IP核的高速加解密系统及方法

技术领域

[0001] 本发明涉及计算机加解密技术领域,尤其涉及一种基于PCIE通道的多算法IP核的高速加解密系统及方法。

背景技术

[0002] PICE加密卡是通过PCIE插槽,使用PCIE标准接口和主机进行通讯的并提供加解密服务的产品,主要应用于加密机、服务器,视频监控等数据流量大有加解密需求的应用场景。为了解决现有技术上层主机中间件的数据传输中间环节和不必要的等待时间,有的方案是使用FPGA:包括一个PCI‑e 3.0核,两个SWITCH模块和若干个算法核组成。其PCI‑e 3.0核与SWITCH模块之间有若干个DMA通道负责搬运数据,PCI‑e 3.0核它通过物理接口直接与客户机相连,客户机通过PCI‑e 3.0通道与加密卡进行通信,并且可以通过PCIE寄存器指定特定的DMA通道搬运数据;这种基于PCIE加密卡的高性能加解密方法的工作流程为:多个数据通道组成,有两个DMA通道,一个SWITCH模块,两个算法核模块构成一个数据通道,每个数据通道有三个线程:发送线程,接收线程,回调线程。每个数据通道能独立完成加解密操作。可以看到其上层中间件驱动的参于加解密的过程较多,其加解密的数据是由发送线程及接收线程控制下进行传输的,存在多次调度及搬移数据‑等待完成‑搬移数据的过程,其性能会受到上层主机当时环境影响。
[0003] 现有技术中PCIE加密卡是将数据包组织成适合加密芯片处理的数据包格式,由上层中间件PCIE加密卡驱动程序通过PCIE接口送入加密模块内部,然后等待加密模块处理后,将处理后的数据使用主机CPU资源或上层主机内核系统中的DMA再送至PCIE驱动程序,再由驱动程序送给用户加解密程序,这种“等待传输数据‑处理数据‑等待返回数据”的加解密处理模式,中间会产生使用多个中断,中断处理延时大,内核负载重,其加解密性能不够高效。
[0004] 目前的PCIE接口安全芯片,多数是使用PCIE的内存空间映射方式,在上层主机Linux内核基础上,编写中间件直接控制PCIE接口安全芯片进行数据的加解密处理操作,由于PCIE接口安全芯片内部的RAM存储器存储空间大小是固定的,而需要加解密的数据有可能会非常大,这就需要将加解密源数据进行分包处理,并通过系统内核使用内存拷贝的方式或者是系统内核的DMA,通过PCIE接口进行下发一包数据给芯片加密,等待加密完成,读取加密结果数据,重复此操作直到全部数据加密完成,我们可以看到加密是完全在上层主机系统中间件的驱动控制下完成的,下发加解密数据小数量数据包给PCIe加密芯片时,会大量使用上层主机CPU资源或是内核DMA资源,因而系统内核存在多次调度执行的情形,在服务器多进程,多线程等高业务量的环境下,存在查询中断延时大加解密效率降低等问题。例如当使用PCIE加解密板卡加密1000K数据,加密线程的流程是将1000K 数据进行分包,当底下PCIE接口芯片加密时,因为待加密的数据包还没有完成加密操作,那么这个加密线程将会被上层主机系统内核阻塞,系统内核调度其他线程运行, 当一包数据加密完成时,线程被唤醒继续进行下一包数据的处理,直到完成1000K数据的加密,我们可以看到同一个线程存在多次调度执行的情形。
[0005] 目前PCIE接口上支持SR‑IOV虚拟化功能的加解密板卡,其PF、VF功能多数是使用虚拟机内核的DMA或芯片内部DMA进行与数据传输有关的操作,当需要使用加解密核时,因为PCIE加解密芯片内部的硬件资源间的耦合度较高,可能会存在排队等待关键资源操作的时候,有的VF与加解密核存在固定的绑定关系,其上层中间件的设计复杂度高,存在多个排队机制,在虚拟化的使用环境下多进程、多线程时加解密的性能会大大下降。

发明内容

[0006] 本发明的目的在于提供一种基于PCIE通道的多算法IP核的高速加解密系统及方法,从而解决现有技术中存在的前述问题。
[0007] 为了实现上述目的,本发明采用的技术方案如下:
[0008] 一种基于PCIE通道的多算法IP核的高速加解密系统,包括上位机以及通过PCIe3.0通道相连的加密算法芯片,所述加密算法芯片包括PCIe3.0核、DMA模块、密钥控制器、算法控制器、多个算法IP核及其内部的第一存储单元、第二存储单元,所述DMA模块提供多个通道供加解密数据搬移,所述算法控制器接收上位机下发的加解密命令,并使用命令中的算法IP核进行加解密操作,所述算法IP核内部的第一存储单元和第二存储单元缓存加解密源数据,算法IP核按乒乓方式对第一存储单元和第二存储单元中缓存数据进行加解密操作,所述密钥控制器用于接收上位机下发的密钥、初始化向量,根据命令中指定的算法,产生密钥,以备算法IP核运行时从密钥控制器中获取密钥执行加解密过程。
[0009] 优选的,所述DMA模块包括8个TX通道和8个RX通道,并且每个DMA通道的选择是由算法控制器确定,即由算法控制器选定某一个DMA通道进行数据的搬移操作。
[0010] 优选的,所述算法IP核数量为32个,对任一个算法IP核采用算法IP核X表示,X取值为1,2,…,32;
[0011] 每个算法IP核内有第一存储单元和第二存储单元,用于缓存从PCIE接口读取的加解密源数据,RAM采用简单双口RAM;
[0012] 允许待写入一定数量的加解密源数据到第一存储单元或第二存储单元后,算法IP核即开始读取数据进行加解密工作,并将结果写回到对应的存储单元中;
[0013] 算法控制器控制DMA通道按乒乓方式向加解密命令中的算法IP核的第一存储单元和第二存储单元输入加解密源数据,以及输出加解密后的结果数据到主机系统的PCIE总线地址内存中;
[0014] 算法IP核X按乒乓方式对第一存储单元和第二存储单元数据分别进行加解密操作,加解密完成后以硬件信号的方式通知算法控制器。
[0015] 优选的,所述算法控制器包括算法IP核空闲状态寄存器;
[0016] 所述算法IP核空闲状态寄存器中每个比特位对应一个算法IP核,当有算法IP核X产生加解密业务时,对应的X比特位清除成0,表示繁忙状态;当某个算法IP核X产生作业完成状态时,其对应的比特位X会被置成1,表示空闲可用状态;
[0017] 根据算法IP核X输出的第一存储单元或第二存储单元空闲状态信号,从算法IP核X的内部寄存器中读取待加密源数据的PCIE总线地址以及数据长度,选取一个DMA通道将待加解密数据搬移到算法IP核X的第一存储单元或第二存储单元中,算法IP核X就开始加解密数据操作,并清除给算法控制器对应的存储单元空闲状态信号;
[0018] 根据算法IP核X的输出的第一存储单元或第二存储单元加解密完成状态信号,再次从算法IP核X的内部寄存器中读取待加密源数据的PCIE总线地址,配置DMA通道将加解密完成后的数据搬移到源数据的PCIE总线地址处,待确认数据搬移完成后,算法IP核X输出作业完成状态给算法控制器,算法IP核空闲状态寄存器中对应的比特位X会被置成1,表示空闲可用状态。
[0019] 优选的,从算法IP核X的内部寄存器中读取待加密源数据的PCIE总线地址以及数据长度,具体包括:读取待加密源数据的PCIE总线起始地址StartAddr_X及数据长度Size_X,读取Offset_X_Rd信息,如果Offset_X_Rd值小于Size_X值,则从8个DMA Rx通道中选定DMA Rx 通道_X, 配置DMA Rx 通道_X寄存器并启动搬移数据,DMA Rx 通道_X从源地址搬移数据到算法IP核X内部空闲的第一存储单元或第二存储单元;当第一存储单元或第二存储单元中有数据写入时,算法IP核X开启加解密过程,并将结果写回到对应的存储单元中;当DMA Rx通道_X搬移数据完成时,算法控制器更新算法IP核X的Offset_X_Rd寄存器值,增加4096。
[0020] 优选的,根据算法IP核X的输出的第一存储单元或第二存储单元加解密完成状态信号,再次从算法IP核X的内部寄存器中读取待加密源数据的物理PCIE总线地址,配置DMA通道将加解密完成后的数据搬移到源数据的物理PCIE总线地址处,待确认数据搬移完成后,算法IP核X输出作业完成状态给算法控制器,空闲状态寄存器中对应的比特位X会被置成1,表示空闲可用状态,具体包括:算法IP核X的输出的第一存储单元或第二存储单元加解密完成状态信号,从算法IP核X的内部寄存器中读取待加密数据起始PCIE总线地址StartAddr_X及长度Size_X,读取Offset_X_Wt信息,当Offset_X_Wt值小于Size_X值,则从8个DMA Tx通道中选定DMA Tx 通道_X,配置DMA Tx 通道_X寄存器并启动搬移数据,将算法IP核X,用户选定算法,计算完成结果通过DMA Tx 通道_X将结果数据从算法IP核其内部第一存储单元或第二存储单元中输出到主机系统中的源PCIE总线地址内存处;当DMA Tx 通道_X搬移数据完成时,算法控制器更新算法IP核X的Offset_X_Wt寄存器值,增加4096,如果Offset_X_Wt小于Size_X值,则算法IP核X继续输出第一存储单元或第二存储单元加解密完成信号给算法控制器;如果Offset_X_Wt等于Size_X值,算法IP核X输出作业完成状态给算法控制器。
[0021] 本发明的另一个目的在于提供了一种基于PCIE通道的多算法IP核的高速加解密方法,采用所述的基于PCIE通道的多算法IP核的高速加解密系统,包括以下步骤:
[0022] S1,配置上位机,初始化上位机,此时所有算法IP核均为空闲状态;创建算法核完成状态消息队列,获取可用的算法IP核X,创建加解密线程Thread_X;
[0023] S2, 将用户待加解密的源数据PCIE总线地址信息以及选定的密钥信息组成数据包,通过PCIE接口传给算法IP核X,算法IP核X启动加解密过程;
[0024] 根据算法IP核X输出的第一存储单元或第二存储单元空闲状态信号,从算法IP核X的内部寄存器中读取待加密源数据的PCIE总线地址以及数据长度,选取一个DMA通道将待加解密数据搬移到算法IP核X的第一存储单元或第二存储单元中,算法IP核X就开始加解密数据操作,并清除给算法控制器对应的存储单元空闲状态信号;
[0025] 根据算法IP核X的输出的第一存储单元或第二存储单元加解密完成状态信号,再次从算法IP核X的内部寄存器中读取待加密源数据的PCIE总线地址,配置DMA通道将加解密完成后的数据搬移到源数据的PCIE总线地址处,待确认数据搬移完成后,算法IP核X输出作业完成状态给算法控制器,算法控制器将算法IP核空闲状态寄存器对应的比特位X会被置成1,表示空闲可用状态;
[0026] S3,线程Thread_X从算法核完成状态消息队列获取加解密完成消息,被阻塞住,等待算法IP核X加密操作完成,待加密芯片DMA通道搬移结果数据完毕后,最后发出PCIe MSI中断;
[0027] S4, 系统内核接收到MSI中断,向“算法核完成状态消息队列”写入值为 2^X 的消息,内核唤醒Thread_X;
[0028] S5, Thread_X刷新源数据PCIE总线地址StartAddr_X处的数据高速缓存,用户进程取出加解密后的数据,释放加解密线程Thread_X的系统资源。
[0029] 优选的,步骤S2中的用户待加解密的源数据PCIE总线地址信息以及选定的密钥信息包括选定算法的密钥信息、用户待加解密数据PCIE总线起始地址StartAddr_X、数据长度Size_X,读写Offset、算法IP核编号X及其算法种类寄存器配置信息。
[0030] 优选的,步骤S2具体包括:
[0031] S21,算法控制器将算法IP核空闲状态寄存器ALG_KERNEL_IDLE_Reg对应的X比特位设定成0表示繁忙;并确认算法IP核X的第一存储单元是否空闲,若是,则向算法控制器发送空闲信号,否则进入步骤S23;
[0032] S22,PCIe加密芯片内部算法控制器接收到算法IP核X第一存储单元空闲信号,算法控制器选择一个空闲DMA Rx通道_I,算法控制器从算法IP核X获得数据源PCIE总线地址信息,配置DMA_I读通道,从上层主机端数据源PCIE总线地址StartAddr_X+Offset_X_Rd处读取第一包数据,并写入到算法IP核X的第一存储单元中,当DMA写满第一组数据后,算法IP核X就会自动开始加解密操作;并将加解密结果写回到第一存储单元中;当DMA Rx通道_I搬移数据完成时,算法控制器更新算法IP核X的Offset_X_Rd寄存器值,增加4096;
[0033] S23,确认算法IP核X的第二存储单元是否空闲,若是,则将空闲信号发送到算法控制器,并由算法控制器从空闲DMA通道中选取DMA Rx通道_J;
[0034] S24,算法控制器从算法IP核X获得数据源地址信息,配置DMA_J读数通道,从PCIE总线地址StartAddr_X+Offset_X_Rd处读取第二包数据,并写入到算法IP核X的第二存储单元中;当DMA Rx通道_J搬移数据完成时,算法控制器更新算法IP核X的Offset_X_Rd寄存器值,增加4096;
[0035] S25,当第一存储单元中待加密数据完成后,PCIe加密芯片内部算法控制器接收到算法IP核X的加解密完成信号,算法控制器选择一个空闲DMA Tx通道_M,配置使用DMA Tx 通道_M将第一存储单元中加密后的数据写入到系统源数据PCIE总线地址处,从而完成第一包数据的加密;当DMA Tx通道_M搬移数据完成时,算法控制器更新算法IP核X的Offset_X_Wt寄存器值,增加4096;
[0036] S26,开始加密第二存储单元的数据,并将加密结果写回到第二存储单元;
[0037] S27,PCIe加密芯片使用DMA Rx通道_I 读取第三包待加密数据到算法IP核X第一存储单元中,当第二存储单元中第二包数据的待加密数据完成后,PCIe加密芯片使用DMA Tx通道_N将第二存储单元中的加密后的数据写入到源数据PCIE总线地址处,从而完成第二包数据的加密;当DMA Tx通道_N搬移数据完成时,算法控制器更新算法IP核X的Offset_X_Wt寄存器值,增加4096;
[0038] S28,重复步骤S22‑S27,直到将全部的待加解密数据加解密完毕,同时在本次作业的最后的一包,DMA Tx通道_N向系统内存写完加密后的结果数据后,算法控制器将算法IP核空闲状态寄存器ALG_KERNEL_IDLE_Reg对应的X比特位设定成1表示算法IP核处于空闲状态。
[0039] 优选的,每一包数据的大小为4KB;步骤S22中当DMA写满第一组数据具体为当DMA写满第一组数据128比特数据。
[0040] 本发明的有益效果是:
[0041] 本发明提供一种基于PCIe通道的多算法核高性能加解密系统及方法,可以 保证算法IP核模块满负荷运算工作,上层主机系统中间件的设计简单化了,并且上层中间件参与加解密的过程大大减少,进而使得PCIe加密卡在不同的使用环境,包括虚拟机环境下,均具有较高的稳定的加解密性能。

附图说明

[0042] 图1是实施例1中提供的基于PCIe通道的多算法核高性能加解密系统示意图;
[0043] 图2是实施例2中提供的基于PCIe通道的多算法核高性能加解密方法流程图;
[0044] 图3是实施例2中提供的PCIe加密芯片算法控制器加解密输入数据处理流图;
[0045] 图4是实施例2中提供的PCIe加密芯片算法控制器加解密输出数据处理流程图。

具体实施方式

[0046] 为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施方式仅仅用以解释本发明,并不用于限定本发明。
[0047] 实施例1
[0048] 本实施例提供了一种基于PCIE通道的多算法IP核的高速加解密系统,如图所示,包括上位机以及通过PCIe3.0通道相连的加密算法芯片,所述加密算法芯片包括PCIe3.0核、DMA模块、密钥控制器、算法控制器、多个算法IP核及其内部的第一存储单元、第二存储单元,所述DMA模块提供多个通道供加解密数据搬移,所述算法控制器接收上位机下发的加解密命令,并使用命令中的算法IP核进行加解密操作,所述算法IP核内部的第一存储单元和第二存储单元缓存加解密源数据,算法IP核按乒乓方式对第一存储单元和第二存储单元中缓存数据进行加解密操作,所述密钥控制器用于接收上位机下发的密钥、初始化向量,根据算法,产生密钥,传输给所述算法IP核。
[0049] 本实施例中的所述DMA模块包括8个TX通道和8个RX通道,并且每个DMA通道的选择是由算法控制器确定,即由算法控制器选定某一个DMA通道进行数据的搬移操作。
[0050] 本实施例中的算法IP核数量为32个,对任一个算法IP核采用算法IP核X表示,X取值为1,2,…,32;
[0051] 每个算法IP核内有第一存储单元和第二存储单元,用于缓存从PCIE接口读取的加解密源数据,RAM采用简单双口RAM;
[0052] 允许待写入一定数量的加解密源数据到第一存储单元或第二存储单元后,算法IP核即开始读取数据进行加解密工作,并将结果写回到对应的存储单元中;
[0053] 算法控制器控制DMA通道按乒乓方式向每个算法IP核的第一存储单元和第二存储单元输入加解密源数据,以及输出加解密后的结果数据到主机系统的PCIE空间内存中;
[0054] 算法IP核X按乒乓方式对第一存储单元和第二存储单元数据分别进行加解密操作,加解密完成后以硬件信号的方式通知算法控制器。
[0055] 本实施例中的所述算法控制器包括算法IP核空闲状态寄存器;
[0056] 所述算法IP核空闲状态寄存器中每个比特位对应一个算法IP核,当有算法IP核X产生加解密业务时,对应的X比特位清除成0,表示繁忙状态;当某个算法IP核X产生作业完成状态时,其对应的比特位X会被置成1,表示空闲可用状态;
[0057] 根据算法IP核X输出的第一存储单元或第二存储单元空闲状态信号,从算法IP核X的内部寄存器中读取待加密源数据的PCIE总线起始地址StartAddr_X及数据长度Size_X,读取Offset_X_Rd信息,如果Offset_X_Rd值小于Size_X值,则从8个DMA Rx通道中选定DMA Rx 通道_X, 配置DMA Rx 通道_X寄存器并启动搬移数据,DMA Rx 通道_X从源地址搬移数据到算法IP核X内部空闲的第一存储单元或第二存储单元;当第一存储单元或第二存储单元中有数据写入时,算法IP核X开启加解密过程,并将结果写回到对应的存储单元中,清除给算法控制器对应的存储单元空闲状态信号;当DMA Rx通道_X搬移数据完成时,算法控制器更新算法IP核X的Offset_X_Rd寄存器值,增加4096。
[0058] 根据算法IP核X的输出的第一存储单元或第二存储单元加解密完成状态信号,再次从算法IP核X的内部寄存器中读取待加密源数据的PCIE总线地址,配置DMA通道将加解密完成后的数据搬移到源数据的PCIE总线地址处,待确认数据搬移完成后,算法IP核X输出作业完成状态给算法控制器,对应的比特位X会被置成1,表示空闲可用状态,具体包括:算法IP核X的输出的第一存储单元或第二存储单元加解密完成状态信号,从算法IP核X的内部寄存器中读取待加密数据起始PCIE总线地址StartAddr_X及长度Size_X,读取Offset_X_Wt信息,当Offset_X_Wt值小于Size_X值,则从8个DMA Tx通道中选定DMA Tx 通道_X,配置DMA Tx 通道_X寄存器并启动搬移数据,将算法IP核X,用户选定算法,计算完成结果通过DMA Tx 通道_X将结果数据从算法IP核其内部第一存储单元或第二存储单元中输出到主机系统中的源PCIE总线地址内存处;当DMA Tx 通道_X搬移数据完成时,算法控制器更新算法IP核X的Offset_X_Wt寄存器值,增加4096;如果Offset_X_Wt小于Size_X值,则算法IP核X继续输出第一存储单元或第二存储单元加解密完成信号给算法控制器;如果Offset_X_Wt等于Size_X值,算法IP核X输出作业完成状态给算法控制器。
[0059] 实施例2
[0060] 本实施例提供了一种基于PCIE通道的多算法IP核的高速加解密方法,基于实施例1中所记载的一种基于PCIE通道的多算法IP核的高速加解密系统所实现,包括以下步骤:
[0061] S1,配置上位机,初始化上位机,此时所有算法IP核均为空闲状态;创建算法核完成状态消息队列,获取可用的算法IP核X,创建加解密线程Thread_X;
[0062] S2, 将用户待加解密的源数据PCIE总线地址、长度等信息以及选定的密钥信息组成数据包,通过PCIE接口传给算法IP核X,算法IP核X启动加解密过程;
[0063] 根据算法IP核X输出的第一存储单元或第二存储单元空闲状态信号,从算法IP核X的内部寄存器中读取待加密源数据的PCIE总线地址以及数据长度,选取一个DMA通道将待加解密数据搬移到算法IP核X的第一存储单元或第二存储单元中,算法IP核X就开始加解密数据操作,并清除给算法控制器对应的存储单元空闲状态信号;
[0064] 根据算法IP核X的输出的第一存储单元或第二存储单元加解密完成状态信号,再次从算法IP核X的内部寄存器中读取待加密源数据的PCIE总线地址,配置DMA通道将加解密完成后的数据搬移到源数据的PCIE总线地址处,待确认数据搬移完成后,算法IP核X输出作业完成状态给算法控制器,算法控制器将算法IP核空闲状态寄存器对应的比特位X会被置成1,表示空闲可用状态;
[0065] S3,线程Thread_X从算法核完成状态消息队列获取加解密完成消息,被阻塞住,等待算法IP核X加密操作完成,待加密芯片DMA通道搬移结果数据完毕后,最后发出PCIe MSI中断;
[0066] S4, 系统内核接收到MSI中断,向“算法核完成状态消息队列”写入值为 2^X 的消息,内核唤醒Thread_X;
[0067] S5, Thread_X刷新源数据PCIE总线地址StartAddr_X处的数据高速缓存,用户进程取出加解密后的数据,释放加解密线程Thread_X的系统资源。
[0068] 本实施例以选定SM1算法加密1000K数据举例,详细说明整个过程,其中的线程处理流程,如图2所示;
[0069] 第一步,用户进程请求使用SM1算法加密数据,从中间件读取PCIe内存空间的ALG_KERNEL_IDLE_Reg寄存器,找到比特位X是1,表示空闲,即可获取PCIe可用的算法IP核的编号是X。
[0070] 第二步,中间件驱动创建线程Thread_X,假设用户待加密数据1000K 已存储在上层主机系统的内存中,并且起始PCIE总线地址是0x8000000。
[0071] 第三步,中间件线程Thread_X通过向系统内核映射的内存空间,密钥控制器写入选定的目标算法的密钥控制信息数据包,算法控制器算法核X对应的地址处写入一包数据,其内容包括组织好的SM1 加密寄存器配置,待加密数据起始PCIE总线地址0x8000000,加密数据大小1000K,Offset_X_Rd=0,Offset_X_Wt=0。通过PCIE接口下发给算法IP核X,并写入算法IP核X的对应的寄存器中,并启动加密。
[0072] 第四步,中间件线程Thread_X调用获取消息系统API从“算法核完成状态消息对列”获取2^X 消息,在此时线程Thread_X会阻塞住,主动放弃本线程的运行权,当这1000K的数据加密完成后,被系统内核调度唤醒,线程Thread_X刷新PCIE总线地址0x8000000处对应的逻辑地址处数据高速缓存内容,而后从0x8000000对应的读出加密后的1000K数据,从而完成本次加密任务,最后释放中间件线程Thread_X相关资源。
[0073] 其中,本实施例中的PCIE加密芯片的处理流程如图3所示,具体步骤如下:
[0074] 第一步,PCIe加密芯片内部算法控制器将ALG_KERNEL_IDLE_Reg对应的X比特位设定成0表示繁忙。PCIe加密芯片内部算法控制器接收到算法IP核X第一存储单元空闲信号,配置使用DMA Rx1 通道 从PCIE总线地址0x8000000 读取第一包4KB待加密数据到芯片SM1加密内核的算法4KB 第一存储单元中,SM1开始加密第一存储单元的数据,并将加密结果写回到第一存储单元中。PCIe加密芯片内部算法控制器接收到算法IP核X第二存储单元空闲信号,配置使用DMA Rx2 通道 从PCIE总线地址0x8000000+4K处读取第二包4KB待加密数据到芯片SM1加密内核的算法4KB 第二存储单元中;当第一存储单元中4KB的待加密数据完成后,PCIe加密芯片内部算法控制器接收到算法IP核X的加解密完成信号,配置使用DMA Tx1 通道将第一存储单元中4KB的加密后的数据写入到系统PCIE总线地址0x8000000处,从而完成第一包数据的加密。SM1开始加密第二存储单元的数据,并将加密结果写回到第二存储单元中。
[0075] 第二步, PCIe加密芯片使用DMA Rx1 通道从0x8000000+8K处读取第三包4KB待加密数据到芯片SM1加密内核的算法4KB 第一存储单元中,当第二存储单元中4KB的待加密数据完成后,PCIe加密芯片使用DMA Tx1 通道将第二存储单元中4KB的加密后的数据写入到系统PCIE总线地址0x8000000+4K处,从而完成第二包数据的加密。
[0076] 第三步,重复第一步,第二步直到将全部的1000K数据加密完毕, 同时在本次作业的最后的一包,DMA Tx1 通道向系统内存写完加密后的结果数据后,算法控制器先将ALG_KERNEL_IDLE_Reg对应的X比特位设定成1表示空闲。同时根据算法核X的中断请求硬件信号控制产生远程MSI消息中断,用于上位机PCIe MSI中断服务程序向“算法核完成状态消息对列”,写入值为 2^X 的消息,退出中断后,中间件线程Thread_X被系统内核唤醒,Thread_X刷新系统PCIE总线地址0x8000000处对应的逻辑地址的数据高速缓存,进而可取出加解后的数据,从而完成本次的加密任务。
[0077] 这种加解密的处理机制具有如下的优点:
[0078] 1. 针对每个加解密线程,只有一次的被系统调用的时机,大大减少了系统内核调度开销,当目标PCIe加密算法核完成加解密操作后,最后产生一次MSI中断通知上位机,产生完成状态消息,目标加解密线程被系统内核唤醒,加解密线程刷新数据高速缓存后,即可以从原地址处读取加解密结果数据。
[0079] 2. 只要系统内核及内存资源允许,就可以开启多个进程及多个线程进行加解密操作。可以很好的适应服务器系统中频繁的大数据量加解密应用场景。
[0080] 3. 因为PCIE加解密芯片内算法IP核加解密数据处理时间较慢,在考虑到芯片成本及算法IP核个数固定的情形下,相比目前市面上已有的PCIe加密卡,按本设计方案流程处理将具有较高的稳定的加解密性能。
[0081] 4. 按本发明设计方案,用户加解密源数据的读取及将结果数据写回,是由PCIE加解密芯片内部DMA主动操作完成的,这样的设计使得PCIE加密卡无论在什么样的环境下测试,均具有较高的稳定的加解密性能,并在最后产生一个MSI中断,上层主机中间件的参与程度较小,受到上层主机系统当前使用环境及DMA资源影响较小。
[0082] 5. 由于本PCIe加解密芯片所有的加解密业务是基于算法IP核X驱动的,芯片内部可用算法核的状态寄存器位于PCIe内存空间中,便于上位机PCIe驱动使用配置,并且使用PCIe加解密芯片内部DMA进行数据搬移,这样的设计架构能够更好的适应SR‑IOV虚拟化的使用环境,上位主机PF可以为虚拟机VF动态分配算法IP核,能快速加解密,与其他的PCIE上支持SR‑IOV虚拟化功能的加解密板卡相比,本设计的芯片能够更好地更灵活地支持SR‑IOV虚拟化功能,具有更高的稳定的加解密性能指标。
[0083] 通过采用本发明公开的上述技术方案,得到了如下有益的效果:
[0084]  在本发明设计方案下,PCIE加解密芯片所有的加解密业务是基于算法IP核X驱动的,芯片内部可用算法核的状态寄存器ALG_KERNEL_IDLE_Reg位于PCIe内存空间中,便于上位机PCIe驱动使用配置,用户的加解密源数据存储在上层主机系统内存中,由PCIE加解密芯片内部的DMA主动进行读取源数据,算法IP核进行加解密运算,完成后由内部DMA主动将加解密后的数据写回到同一内存中,直到将目标数据全部处理完毕后,最后产生PCIe MSI中断,ISR向“算法核完成状态消息对列”写入消息,唤醒用户线程,从而完成全部加解密工作,同时算法IP核被释放成空闲可用状态。
[0085] 以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本发明的保护范围。