首页> 中国专利> 基于多算法IP核实现MSI中断处理的高速加解密系统及方法

基于多算法IP核实现MSI中断处理的高速加解密系统及方法

摘要

本发明提供一种基于多算法IP核实现MSI中断处理的高速加解密系统及方法,包括上位机以及通过PCIe3.0通道相连的加密算法芯片,所述加密算法芯片包括PCIe3.0核、DMA模块、密钥控制器、算法控制器、多个算法IP核及其内部的第一存储单元、第二存储单元;本系统在PCIe多算法IP核的应用环境下,解决了上位机中断向量不够,以及MSI中断丢失问题。减少PCIe加解密芯片发出的MSI消息中断的个数,减轻了上位机MSI中断处理负载,提高了系统处理MSI中断的效率,提高了多线程加解密的作业处理效率,大幅提高PCIe加解密板卡性能。

著录项

  • 公开/公告号CN114817965A

    专利类型发明专利

  • 公开/公告日2022-07-29

    原文格式PDF

  • 申请/专利权人 广州万协通信息技术有限公司;

    申请/专利号CN202210579931.6

  • 发明设计人 颜昕明;何军;王亮;

    申请日2022-05-25

  • 分类号G06F21/60;G06F13/40;G06F13/28;G06F9/48;

  • 代理机构北京市盛峰律师事务所;

  • 代理人于国富

  • 地址 510400 广东省广州市白云区北太路1633号广州民营科技园科盛路8号配套服务大楼5层A505-63房

  • 入库时间 2023-06-19 16:09:34

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2022-07-29

    公开

    发明专利申请公布

说明书

技术领域

本发明涉及计算机加解密技术领域,尤其涉及一种基于多算法IP核实现MSI中断处理的高速加解密系统及方法。

背景技术

PCIe有三种中断,分别为INTx中断,MSI中断,MSI-X中断,其中INTx是可选的(Legacy),MSI/MSI-X是必须实现的。

INTx:PCI时期的产物,为了兼容PCI的INTA,INTB,INTC,INTD四个中断线而采用的一种中断机制。由于仅支持四个中断,且采用一个状态来控制,这种机制导致多中断场景软件处理复杂特别是有中断嵌套的场景,比较多的PCIe设备都没有支持该特性。

MSI中断机制最多支持32个中断请求,而且要求中断向量连续;

MSI-X可以支持更多的中断请求,而且并不要求中断向量连续。

MSI-X中断机制提出目的是扩展PCIe设备使用的中断向量个数(次要),同时解决MSI中断要求使用中断向量必须保持连续的问题(主要)。

例如,有时在一个PCIe中断控制器中,虽然有8个以上的中断向量号,但是很难保证这8个中断向量号是连续的。使用MSI-X机制可以很好地解决该问题,在MSI-XCapability结构中,每一个中断向量使用独立的Meaasge Address和Message Data字段,从而中断控制器可以更加合理的为PCIe设备分配中断资源。

MSI-X中断机制,在PCIe多算法核加解密板卡系统中,也会有MSI-X中断处理延时大,在某些情形下存在MSI-X中断丢失的可能,上位机中断处理负载重等的不足之处,并且硬件及软件设计较复杂,研发成本高的缺点。

现有技术中PCIE加密卡是将数据包组织成适合加密芯片处理的数据包格式,由上层中间件PCIE加密卡驱动程序通过PCIE接口送入加密模块内部,然后等待加密模块处理后,上位机使用查询的方式,或者是底下芯片通过MSI、MSI-X中断的方式告诉上位机,当前加解密作业事务已完成。上位机中间件对处理后的数据使用上位机CPU或内核系统中DMA再送至PCIE驱动程序,再由驱动程序送给用户加解密程序。

在使用MSI、MSX-X中断PCIE多算法核加密卡系统中,特别是在SR-IOV虚拟化PF及VF应用时,在上位机可用连续中断数较少及PCIE中断虚拟化时,当多算法核近乎同时产生多个MSI、MSX-X中断时,由于上位机主机内核系统的PCIE中断处理延时,还是会存在MSI、MSX-X中断丢失的情形,进而会导致系统可能出现问题。

发明内容

本发明的目的在于提供一种基于多算法IP核实现MSI中断处理的高速加解密系统及方法,从而解决现有技术中存在的前述问题。

为了实现上述目的,本发明采用的技术方案如下:

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

所述算法控制器包括算法控制器内部的中断状态寄存器和算法IP核空闲状态寄存器,根据算法IP核X输出的作业完成状态,即MSI消息中断的硬件信号,算法控制器将PCIe内存空间里的算法IP核空闲状态寄存器对应的X比特位设置成1,表示该算法IP核空闲可用;算法控制器检测到其内部的中断状态寄存器对应的X比特位是高电平时,算法控制器从算法IP核X的MSI中断向量寄存器ALG_KERNEL_MSI_IV_Reg中读出中断向量号并写入MSI消息中断“Message Data”寄存器,为算法IP核X产生相对应的MSI消息中断,通知上位机PCIE驱动已完成加解密操作。

优选的,所述DMA模块包括8个TX通道和8个RX通道,并且每个DMA通道的选择是由算法控制器确定,即由算法控制器选定某一个DMA通道进行数据的搬移操作。

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

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

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

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

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

优选的,所述算法控制器包括算法IP核空闲状态寄存器;

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

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

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

优选的,所述中断状态寄存器具有读操作清零属性并与算法IP核中断输出硬件信号相连接,中断状态寄存器中的每个比特位连接到一个算法IP核,当算法IP核X完成所有的作业操作时,输出高电平给中断状态寄存器的X比特位,当上位机驱动在MSI ISR中读取PCIe加解密芯片内部的中断状态寄存器时,得到比特位X的值是1,随后的X比特位会变成低电平,即比特位X的值变成了0。

优选的,从算法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。

优选的,根据算法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输出作业完成状态给算法控制器。

本发明的另一个目的在于提供了一种基于PCIE通道的多算法IP核的高速加解密方法,采用所述的基于PCIE通道的多算法IP核的高速加解密系统,包括以下步骤:

S1,配置上位机,初始化上位机,此时所有算法IP核均为空闲状态;从PCIe配置空间的MSI相关寄存器中读取PCIe加解密芯片的PCIe3.0核的MSI Message Control寄存器中的Multiple Message Enable字段,获取PCIe加解密芯片可以使用的连续的中断个数n以及读取PCIe3.0核的MSI Message Data字段,获得MSI初始中断向量;

创建算法核完成状态消息队列,获取可用的算法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核空闲状态寄存器对应的比特位X会被置成1,表示空闲可用状态;

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

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

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

优选的,步骤S2中的用户待加解密的源数据PCIE总线地址信息以及选定的密钥信息包括选定算法的密钥信息、用户待加解密数据起始PCIE总线起始地址StartAddr_X、数据长度Size_X,读写Offset、算法IP核编号X及其算法种类寄存器配置信息。

优选的,步骤S2具体包括:

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

S22,PCIe加密芯片内部算法控制器接收到算法IP核X第一存储单元空闲信号,算法控制器选择一个空闲DMARx通道_I,算法控制器从算法IP核X获得数据源地址信息,配置DMA_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获得数据源PCIE总线地址信息,配置DMA_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对应的X比特位设定成1表示算法IP核处于空闲状态。

优选的,每一包数据的大小为4KB;步骤S22中当DMA写满第一组数据具体为当DMA写满第一组数据128比特数据。

本发明的有益效果是:

本发明提供一种基于多算法IP核实现MSI中断处理的高速加解密系统及方法,在PCIe多算法IP核的应用环境下,解决了上位机中断向量不够,以及MSI中断丢失问题,减少PCIe加解密芯片发出的MSI消息中断的个数,减轻了上位机MSI中断处理负载,提高了系统处理MSI中断的效率,提高了多线程加解密的作业处理效率,大幅提高PCIe加解密板卡性能。

附图说明

图1是实施例1中提供的基于多算法IP核实现MSI中断处理的高速加解密系统示意图;

图2是实施例2中提供的基于多算法IP核实现MSI中断处理的高速加解密系统中的算法控制器原理流程图;

图3是实施例2中提供的基于多算法IP核实现MSI中断处理的高速加解密方法流程图;

图4是实施例2中提供的PCIe加密芯片算法控制器加解密输入数据处理流程;

图5是实施例2中提供的PCIe加密芯片算法控制器加解密输出数据处理流程;

图6是实施例2中提供的PCIe加密芯片算法控制器加解密中断处理流程;

图7是实施例2中上位机PCIe MSI ISR统一处理流程。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施方式仅仅用以解释本发明,并不用于限定本发明。

实施例1

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

所述算法控制器包括算法控制器内部的中断状态寄存器和算法IP核空闲状态寄存器,原理示意图如图2所示,根据算法IP核X输出的作业完成状态,即MSI消息中断的硬件信号,算法控制器将PCIe内存空间里的算法IP核空闲状态寄存器对应的X比特位设置成1,表示该算法IP核空闲可用;算法控制器检测到其内部的中断状态寄存器对应的X比特位是高电平时,算法控制器从算法IP核X的MSI中断向量寄存器ALG_KERNEL_MSI_IV_Reg中读出MSI中断向量号并写入MSI消息中断“Message Data”寄存器,为算法IP核X产生相对应的MSI消息中断,通知上位机PCIE驱动已完成加解密操作。

本实施例中的所述DMA模块包括8个TX通道和8个RX通道,并且每个DMA通道的选择是由算法控制器确定,即由算法控制器选定某一个DMA通道进行数据的搬移操作。

本实施例中的算法IP核数量为32个,对任一个算法IP核采用算法IP核X表示,X取值为1,2,…,32;

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

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

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

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

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

根据算法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

根据算法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输出作业完成状态给算法控制器。

实施例2

本实施例提供了一种基于多算法IP核实现MSI中断处理的高速加解密方法,基于实施例1中所记载的一种基于多算法IP核实现MSI中断处理的高速加解密系统所实现,包括以下步骤:

S1,配置上位机,初始化上位机,此时所有算法IP核均为空闲状态;

当上位机完成初始化后,本设计PCIe加解密芯片驱动软件会从PCIe配置空间的MSI相关寄存器中读取PCIe加解密芯片的PCIe3.0核的MSI Message Control寄存器中的Multiple Message Enable字段,获取本PCIe加解密芯片可以使用的连续的中断个数n,读取PCIe核的MSI Message Data字段,生成n个中断向量值,PCIe加解密芯片可以在合适的时机,将中断向量值写入PCIe MSI消息Message Data字段,从而发送不同的MSI消息中断请求;

创建算法核完成状态消息队列,获取可用的算法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核空闲状态寄存器对应的比特位X会被置成1,表示空闲可用状态;

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

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

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

本实施例以选定SM1算法加密1000K数据举例,详细说明整个过程,其中的线程处理流程,如图2所示;

第一步,用户进程请求使用SM1算法加密数据,从中间件读取PCIe内存空间的ALG_KERNEL_IDLE_Reg寄存器,找到比特位X是1,表示空闲,即可获取PCIe可用的算法IP核的编号是X。

第二步,中间件驱动创建线程Thread_X,假设用户待加密数据1000K已存储在上层主机系统的内存中,并且起始PCIE总线地址是0x8000000。

第三步,中间件线程Thread_X通过向系统内核映射的内存空间,密钥控制器写入选定的目标算法的密钥控制信息数据包,算法控制器算法核X对应的地址处写入一包数据,其内容包括组织好的SM1加密寄存器配置,待加密数据起始PCIE总线地址0x8000000,加密数据大小1000K,Offset_X_Rd=0,Offset_X_Wt=0。通过PCIE接口下发给算法IP核X,并写入算法IP核X的对应的寄存器中,并启动加密。

第四步,中间件线程Thread_X调用获取消息系统API从“算法核完成状态消息对列”获取2^X消息,在此时线程Thread_X会阻塞住,主动放弃本线程的运行权,当这1000K的数据加密完成后,被系统内核调度唤醒,线程Thread_X刷新PCIE总线地址0x8000000处对应的逻辑地址处的数据高速缓存内容,而后从0x8000000处对应的逻辑地址处读出加密后的1000K数据,从而完成本次加密任务,最后释放中间件线程Thread_X相关资源。

其中,本实施例中的PCIE加密芯片的处理流程如图3所示,具体步骤如下:

第一步,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开始加密第二存储单元的数据,并将加密结果写回到第二存储单元中。

第二步,PCIe加密芯片使用DMA Rx1通道从PCIE总线地址0x8000000+8K处读取第三包4KB待加密数据到芯片SM1加密内核的算法4KB第一存储单元中,当第二存储单元中4KB的待加密数据完成后,PCIe加密芯片使用DMA Tx1通道将第二存储单元中4KB的加密后的数据写入到系统PCIE总线地址0x8000000+4K处,从而完成第二包数据的加密。

第三步,重复第一步,第二步直到将全部的1000K数据加密完毕,同时在在本次作业的最后的一包,DMA Tx1通道向系统内存写完加密后的结果数据后,算法控制器先将ALG_KERNEL_IDLE_Reg对应的X比特位设定成1表示空闲。同时根据算法核X的中断请求硬件信号控制产生远程MSI消息中断,用于上位机PCIe MSI中断服务程序向“算法核完成状态消息对列”,写入值为2^X的消息,退出中断后,中间件线程Thread_X被系统内核唤醒,Thread_X刷新系统PCIE总线地址0x8000000处的数据高速缓存,进而可取出加解后的数据,从而完成本次的加密任务。

对于产生的MSI消息中断的处理流程,具体如下:

算法控制器将ALG_KERNEL_IDLE_Reg对应的X比特位设置成1表示核X空闲。算法控制器检测到ALG_KERNEL_INT_STATUS_Reg对应的X比特位是高电平时,为算法IP核X产生作业完成MSI消息中断。

上位机从内存空间读取ALG_KERNEL_INT_STATUS_Reg寄存器并赋值给IntStatus,此时ALG_KERNEL_INT_STATUS_Reg寄存器的值因为被上位机CPU读操作而被清成零值。

到此时刻,可能会有另一个算法核Y的完成状态信息被同步到了上位机PCIe驱动,因算法控制器对算法核的处理存在时间差,因而算法核Y不会产生MSI消息中断。虽然中断向量号不同,但是因为功能是一样的,故它们对应的中断服务程序ISR是同一个实现方式,如图7所示。

假设可用的中断个数是4个,读取的中断向量号数值是0x8800,那么本PCIe加解密芯片可用的4个中断向量号即是0x8800,0x8801,0x8802,0x8803,PCIe加解密芯片可以在合适的时机,将这四个值分别写入PCIe MSI消息Message Data字段,从而发送不同的MSI消息中断请求。PCIe加解密芯片驱动软件按顺序的方式,每4个一组,循环的将这四个中断向量号0x8800,0x8801,0x8802,0x8803,写入到每个算法IP核的MSI中断向量号寄存器ALG_KERNEL_MSI_IV_Reg中,从而,每个算法IP核按上位机系统分配的中断向量号产生MSI消息中断请求,每个算法IP核按实时的方式去向上位机发出MSI消息中断,无需按常规的方式去使用中断掩码。

这种加解密的处理机制具有如下的优点:

1.本设计的PCIe加解密芯片驱动软件根据上位机分配的连续中断的个数n,读取PCIe核的MSI Message Data字段,生成n个中断向量,按顺序的方式,每n个一组,循环的将这n个中断向量写入到芯片内部每个算法IP核的ALG_KERNEL_X_MSI_IV_Reg寄存器中,每个算法IP核按上位机系统分配的中断向量号实时地产生MSI消息中断请求,无需按常规方式去使用中断掩码字段,上位机PCIe驱动中断服务程序ISR是简单的同一个实现方式。这样就可以解决芯片多算法核加解密时,上位机中断向量不够及共享中断的问题。

2.每个PCIe加解密算法核完成加解密操作后,最后产生MSI消息中断,通知上位机作业完成状态。因为设计使用ALG_KERNEL_INT_STATUS_Reg寄存器具有读清零属性,可以减少PCIe接口上的MSI中断相关寄存器读写事务,所以相比常规的MSI使用中断掩码方式更高效。

3.在PCIe多算法IP核的应用环境下,每个PCIe加密算法核完成状态可以在第一时间上传同步给上位机PCIe驱动,因为算法核完成状态信息是被别的MSI中断ISR同步到上位机的,算法控制器统一管理并将中断向量号写入MSI中断“Message Data”寄存器从而产生MSI消息中断,由于算法核完成作业的时间点不同,算法控制器存在处理时间差,可以减少PCIe加解密芯片发出的MSI消息中断的个数,减轻了上位机MSI中断处理负载,提高了系统处理MSI中断的效率,提高了多线程的作业处理效率。

4.在PCIe多算法IP核的应用环境下,每个PCIe加密算法核完成状态,均能够同步到上位机PCIe驱动中,可以解决MSI中断丢失问题。在任何场景下,不会出现上位机与PCIe芯片算法IP核完成状态不一致的情形,因而上位机的每个线程都能够高效正常工作并释放系统资源。

5.按本发明设计的MSI中断使用方案,硬件及软件设计比较简单,可以为PCIe加解密操作提供高效的工作方式,降低整体研发成本,缩短研发时间。

通过采用本发明公开的上述技术方案,得到了如下有益的效果:

本发明提供一种基于多算法IP核实现MSI中断处理的高速加解密系统及方法,在PCIe多算法IP核的应用环境下,解决了上位机中断向量不够,以及MSI中断丢失问题,减少PCIe加解密芯片发出的MSI消息中断的个数,减轻了上位机MSI中断处理负载,提高了系统处理MSI中断的效率,提高了多线程加解密的作业处理效率,大幅提高PCIe加解密板卡性能。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本发明的保护范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号