CN115934092A - 一种基于sha-256算法的并行调度实现方法、系统、介质及设备 - Google Patents

一种基于sha-256算法的并行调度实现方法、系统、介质及设备 Download PDF

Info

Publication number
CN115934092A
CN115934092A CN202210907513.5A CN202210907513A CN115934092A CN 115934092 A CN115934092 A CN 115934092A CN 202210907513 A CN202210907513 A CN 202210907513A CN 115934092 A CN115934092 A CN 115934092A
Authority
CN
China
Prior art keywords
sha
optimization
algorithm
parallel scheduling
scheduling
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
CN202210907513.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.)
Xian Jiaotong University
Original Assignee
Xian Jiaotong University
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 Xian Jiaotong University filed Critical Xian Jiaotong University
Priority to CN202210907513.5A priority Critical patent/CN115934092A/zh
Publication of CN115934092A publication Critical patent/CN115934092A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

本发明公开了一种基于SHA‑256算法的并行调度实现方法、系统、介质及设备,针对申威26010处理器,设计SHA‑256算法的并行调度实现。通过全方面的性能优化,包括编译选项优化、DMA传输优化、并行调度优化、指令减少优化以及汇编级别的循环展开和双发射技术优化,得到一个SHA‑256算法的并行调度高效实现。相比于优化过访存效率的原始SHA‑256算法实现,对于1MB消息的哈希计算,运行时间从45.01s减少到16.25s,运行效率提升了2.77倍。

Description

一种基于SHA-256算法的并行调度实现方法、系统、介质及设备
技术领域
本发明属于网络安全技术领域,具体涉及一种基于SHA-256算法的并行调度实现方法、系统、介质及设备。
背景技术
网络安全是一门综合性的学科,包含网络设备安全、网络信息安全和网络软件安全。信息的安全传输是网络信息安全中的一部分,主要涉及密码学的知识。密码学哈希算法在安全传输过程中必不可少的,用于安全且高效的获得消息的摘要,其中,安全哈希函数(Secure Hash Algorithms,SHAs)是最为广泛使用的密码学哈希函数。
安全哈希函数通常用于其他密码学算法中,如数字签名算法、键控哈希的消息认证码和随机数的产生中。安全哈希函数通过保证两种不可计算性来保证安全性,一是找到对应消息摘要的消息是不可计算的,二是找到两个产生相同消息摘要的不同消息是不可计算的。同时,安全哈希函数广泛的应用于抗量子计算密码中,这些密码可以用于抵抗量子计算机的攻击,但是这些算法通常需要更多计算量,对性能的要求更高。因此,随着量子计算机的发展,抗量子计算的更多需求,更为高效的安全哈希函数变得更为必要。
超级计算机上存在一些需要安全保护的敏感数据。作为世界上最快的超级计算机之一,神威太湖之光对数据安全的需求日益增加。最近,对称加密算法已经被部署到了神威太湖之光,如AES算法和CHACHA20算法。但是要实现网络安全传输,还需要在数据安全传输前进行安全协商,此时就需要安全哈希函数的参与。目前仍然安全且最为高效的SHA算法是SHA-256,因此将这个算法部署到神威太湖之光上是理想的。在部署后,神威太湖之光上可以开展进一步的安全传输建设,从而最终实现一套完整的安全数据传输体系。
在申威26010芯片上缺乏高效进行长消息SHA-256算法的实现,缺乏适配芯片架构的技术方案,这不利于国产超算构建安全高效的网络安全传输环境,严重妨碍网络安全。
发明内容
本发明所要解决的技术问题在于针对上述现有技术中的不足,提供一种基于SHA-256算法的并行调度实现方法、系统、介质及设备,通过为申威SW26010处理器设计定制的指令优化方法和指令集并行策略,并结合高效的并行调度算法设计,相比于优化过访存效率的原始SHA-256算法实现,运行效率提升了2.77倍。解决SHA-256算法在申威SW26010处理上运行效率低下的问题,也可以有效提升其他需要使用SHA-256算法的密码学算法的效率。
本发明采用以下技术方案:
一种基于SHA-256算法的并行调度实现方法,包括以下步骤:
S1、将SHA-256算法的C代码移植到申威SW26010处理器上,并使用申威SW26010处理器的sw5gcc编译器分别编译从核和主核的代码;
S2、使用优化后的DMA传输方式对步骤S1得到的从核代码和主核代码进行处理,得到经过DMA传输优化的主核代码和从核代码;
S3、利用步骤S2得到的主核代码提供待传输数据接口,依据步骤S2得到的从核代码对SHA-256算法的调度部分进行向量并行化,得到最终的并行调度结果,然后通过标量寄存器得到经过DMA传输优化和并行调度优化的从核代码;
S4、依据步骤S3得到的经过DMA传输优化和并行调度优化的从核代码,对SHA-256算法的Ch操作、Maj操作和循环移位操作的指令进行等价替换,得到经过DMA传输优化、并行调度优化和指令操作优化的从核代码;
S5、对步骤S4得到的经过DMA传输优化、并行调度优化和指令操作优化的从核代码进行循环展开,调整汇编代码顺序,并限制中间寄存器的使用数量,实现申威26010处理器上SHA-256算法的并行调度。
具体的,步骤S1具体为:
S101、将OpenSSL中SHA-256算法的C代码移植到申威SW26010处理器上,提供函数接口,输入为消息长度和消息的指针,输出为消息摘要;
S102、使用sw5gcc编译SHA-256算法的主核代码,编译选项为-O2,-msimd;
S103、使用sw5gcc编译器编译从核代码,编译选项为-O2-msimd-funroll-all-loops-mslave;
S104、使用sw5gcc编译器将编译生成主核中间文件和从核中间文件进行链接,与调用函数接口的文件进行链接,生成可执行文件,并添加-sw3run swrun-5a运行参数用于运行sw5gcc编译生成的可执行文件。
具体的,步骤S2具体为:
S201、在申威SW26010处理器从核的局部存储器开辟静态空间供DMA传输使用;
S202、对DMA传输接口使用的数据传输量进行调整,设定最大块数为M,对于块数小于M的消息,仅执行一次DMA传输,对于块数大于M的消息,执行多次DMA传输,得到经过DMA传输优化的从核代码。
具体的,步骤S3具体为:
S301、依据消息的块数判断调用的并行调度接口,对于长度大于8个块的消息,使用8个调度接口进行依次处理,当剩下的块数小于8个块时,依据剩下的块数,调用处理不同块数接口;对于长度小于等于8个块的消息,直接调用对应的接口;
S302、将消息的S块加载到向量寄存器中,S≤8,将小端数据转换成大端数据,得到最终的消息调度结果;将调度结果卸载出向量寄存器,串行地完成消息压缩地计算,得到经过DMA传输优化和并行调度优化的从核代码。
具体的,步骤S4中,将SHA-256标准定义的Ch操作进行数学操作的等价变换;将SHA-256标准定义的Maj操作进行数学操作的等价变换;将SHA-256标准定义的循环移位操作进行硬件指令的等价变换,使用simd接口或者通过调用汇编语言接口调用指令,得到经过DMA传输优化、并行调度和指令操作优化的从核代码。
进一步的,将数据v向左循环移动n位,实现SHA-256标准定义的循环移位操作与硬件指令的等价变换,转换如下:
(((v)<<(n))|((v)>>(32-(n))))→vrotlw(v,n)
其中,‘<<’和‘>>’操作表示逻辑左移和逻辑右移操作,vrotlw表示申威26010提供的循环移位指令,。
具体的,步骤S5具体为:
S501、在汇编代码中对从核代码进行循环展开,使并行调度和消息压缩部分循环展开;
S502、步骤S501并行调度和消息压缩部分循环展开后,错开访存指令,进行指令顺序调整;
S503、使用8个寄存器,其中3个是存储变量的寄存器,5个是消息调度用的中间寄存器,将指令存储到寄存器中,实现申威26010处理器上SHA-256算法的并行调度。
第二方面,本发明实施例提供了一种基于SHA-256算法的并行调度实现系统,其特征在于,包括移植模块、替换模块、并行模块、操作模块和实现模块;
移植模块,用于将SHA-256算法的C代码移植到申威SW26010处理器上,并使用申威SW26010处理器的sw5gcc编译器分别编译从核和主核的代码;
替换模块,用于使用优化后的DMA传输方式对移植模块得到的从核和主核代码进行处理,得到经过DMA传输优化的从核代码;
并行模块,用于利用替换模块得到的主核代码提供待传输数据接口,依据替换模块得到的从核代码对SHA-256算法的调度部分进行向量并行化,得到最终的并行调度结果,然后通过标量寄存器得到经过DMA传输和并行调度优化的从核代码;
操作模块,用于依据并行模块得到的经过DMA传输优化和并行调度优化的从核代码,对SHA-256算法的Ch操作、Maj操作和循环移位操作的指令进行等价替换,得到经过DMA传输、并行调度和指令操作优化的从核代码;
实现模块,用于对操作模块得到的经过DMA传输优化、并行调度优化和指令操作优化的从核代码进行循环展开,调整汇编代码顺序,并限制中间寄存器的使用数量,实现申威26010处理器上SHA-256算法的并行调度。
第三方面,一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述基于SHA-256算法的并行调度实现方法的步骤。
第四方面,本发明实施例提供了一种计算机可读存储介质,包括计算机程序,所述计算机程序被处理器执行时实现上述基于SHA-256算法的并行调度实现方法的步骤。
与现有技术相比,本发明至少具有以下有益效果:
本发明一种基于SHA-256算法的并行调度实现方法,通过全方面的性能优化,包括编译选项优化、DMA传输优化、并行调度优化、指令减少优化以及汇编级别的循环展开和双发射技术优化,得到一个SHA-256算法的并行调度高效实现。
进一步的,提供了一种最有益于SHA-256算法高效运行的编译选项,利用申威新的sw5gcc编译器,结合优化级别选项和循环展开控制选项实现编译上的高效汇编代码生成,为了运行sw5gcc编译生成的可执行文件,需要修改运行命令,额外添加-sw3run swrun-5a运行参数。
进一步的,提供有利于SHA-256算法访存性能提升的访存方案,从而大幅提高SHA-256算法的执行效率。
进一步的,利用SHA-256算法中调度部分可以被并行的特点,设计了并行调度的实现方案,将调度部分所占时间大幅度减少,提供不同长度消息的并行优化方法,使程序尽可能地提高并行度,从而高效地利用并行调度技术。
进一步的,提供SHA-256算法在申威26010上专门的指令优化方案,包括Ch操作、Maj操作、大端转换操作以及循环移位操作,从而进一步提高SHA-256算法在申威260101上的执行效率。
进一步的,使用sw5gcc编译器提供的循环移位指令替换软件实现的循环移位指令,可以将循环移位操作使用的周期数从四个降到一个,从而提高运行效率。
进一步的,提供汇编级别的SHA-256算法在申威26010上的优化方案,包括循环展开,提高双发射效率以及减少寄存器数量的方案,更大程度的提高算法执行效率。
可以理解的是,上述第二方面至第四方面的有益效果可以参见上述第一方面中的相关描述,在此不再赘述。
综上所述,本发明通过对DMA传输、并行调度、指令操作以及汇编代码进行优化,提供了一种充分利用国产申威-26010计算性能的SHA-256算法的并行调度方法。
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
附图说明
图1为本发明并行调度示意图;
图2是本发明一实施例提供的计算机设备的示意图;
图3为本发明方法流程图;
图4为本发明系统示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本发明的描述中,需要理解的是,术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在本发明说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本发明。如在本发明说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
还应当进一步理解,在本发明说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
应当理解,尽管在本发明实施例中可能采用术语第一、第二、第三等来描述预设范围等,但这些预设范围不应限于这些术语。这些术语仅用来将预设范围彼此区分开。例如,在不脱离本发明实施例范围的情况下,第一预设范围也可以被称为第二预设范围,类似地,第二预设范围也可以被称为第一预设范围。
取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”或“响应于检测”。类似地,取决于语境,短语“如果确定”或“如果检测(陈述的条件或事件)”可以被解释成为“当确定时”或“响应于确定”或“当检测(陈述的条件或事件)时”或“响应于检测(陈述的条件或事件)”。
在附图中示出了根据本发明公开实施例的各种结构示意图。这些图并非是按比例绘制的,其中为了清楚表达的目的,放大了某些细节,并且可能省略了某些细节。图中所示出的各种区域、层的形状及它们之间的相对大小、位置关系仅是示例性的,实际中可能由于制造公差或技术限制而有所偏差,并且本领域技术人员根据实际所需可以另外设计具有不同形状、大小、相对位置的区域/层。
本发明提供了一种基于SHA-256算法的并行调度实现方法,针对国产申威26010处理器,设计SHA-256算法的并行调度实现。通过全方面的性能优化,包括编译选项优化、DMA传输优化、并行调度优化、指令减少优化以及汇编级别的循环展开和双发射技术优化,得到一个SHA-256算法的并行调度高效实现。相比于优化过访存效率的原始SHA-256算法实现,运行效率提升了2.77倍。
请参阅图3,本发明一种基于SHA-256算法的并行调度实现方法,包括以下步骤:
S1、将SHA-256算法的C代码移植到申威SW26010处理器上,并使用申威SW26010处理器的sw5gcc编译器分别编译从核和主核的代码;
S101、将OpenSSL中SHA-256算法的C代码移植到申威SW26010处理器上,提供函数接口,输入为消息长度和消息的指针,输出为消息摘要;
S102、使用sw5gcc编译SHA-256算法的主核代码,编译选项为-O2,-msimd;
其中,-O2选项为SHA-256算法的编译优化等级,相比于其他编译等级,如-O1,-O3能够提供更高的性能;-msimd选项提供主核进行向量计算的能力;
S103、使用sw5gcc编译器编译从核代码,编译选项为-O2-msimd-funroll-all-loops-mslave;
其中,-O2选项能够提供SHA-256算法最高的编译性能,-funroll-all-loops选项表示使用激进的循环展开优化,-mslave选项表示此次为从核编译;
S104、使用sw5gcc编译器将编译生成主核中间文件和从核中间文件进行链接,与调用函数接口的文件进行链接,生成可执行文件。
为了运行sw5gcc编译生成的可执行文件,需要修改运行命令,额外添加-sw3runswrun-5a运行参数。
S2、使用优化后的DMA传输方式对步骤S1得到的从核代码和主核代码进行处理,得到经过DMA传输优化的主核代码和从核代码;
本发明使用DMA传输替换直接访问主存方法,并依据消息长度优化DMA传输的单次数据量,短消息进行单次传输,长消息分段进行传输,从而提高DMA传输效率,提高整体访存带宽。
S201、在从核局部存储器开辟新的静态空间,供DMA传输使用,使用DMA接口替换直接访问主存的从核接口;
具体来说,从核取消息时使用athread_get接口从主存取数据到从核局部存储中,从核将消息摘要写回时使用athread_put接口将从核局部存储中的数据写回主存。
S202、对于长消息,可以将消息的多个块(块大小为64字节)在一次DMA传输中同时加载进来,因为从核局部存储器的大小有限,因此设定最大块数为M(为保证并行调度,M是8的倍数),对于块数小于M的消息,仅执行一次DMA传输,对于块数大于M的消息,会执行多次DMA传输。
经过实验验证,M为64时,DMA传输开销几乎可以忽略,因此不需要再提高M的数值。
S3、利用步骤S2得到的主核代码提供待传输数据接口,依据步骤S2得到的从核代码,对SHA-256算法的调度部分进行向量层面的并行化,得到最终的并行调度结果,然后通过标量寄存器得到经过DMA传输优化和并行调度优化的从核代码;
进行向量层面的并行化即将一个消息的多个块同时加载进向量寄存器,将多块小端数据存储到向量寄存器中进行大端转换,完成大端转换和调度计算后,将调度数据卸载出向量寄存器。
S301、依据消息的块数判断调用的并行调度接口;
因为申威26010处理器的向量寄存器长度为256位,而SHA-256调度部分的操作对象为32位数据,因此最多可以利用向量寄存器同时处理8个调度,但是,消息的块数并不总是8的倍数。
对于长度大于8个块的消息,首先使用处理8个调度的接口进行依次处理,直到剩下的块数小于8个块时,依据剩下的块数,调用处理不同块数接口。
对于长度不大于8个块的消息,直接调用对应的接口即可。
S302、进行并行调度设计;
请参阅图1,首先将消息的S(S≤8)块加载到向量寄存器中,将小端数据转换成大端数据,之后完成不存在依赖的计算,得到最终的消息调度结果;之后将调度结果卸载出向量寄存器,串行地完成消息压缩地计算。调度描述的是将消息块加载的过程,多个消息的调度过程是相互独立的,而消息压缩的过程存在依赖性,很难进行并行加速。因此仅对消息调度进行并行化加速。
S4、依据步骤S3得到的经过DMA传输优化和并行调度优化的从核代码,对SHA-256算法的Ch操作、Maj操作和循环移位操作的指令进行等价替换,得到经过DMA传输优化、并行调度优化和指令操作优化的从核代码;
S401、将SHA-256标准定义的Ch操作进行等价变换;
通过等价变换实现指令周期数从4个周期降到了3个周期,等价变换如下所示:
其中,x,y,z为Ch操作中的第一个、第二个和第三个操作数。
S402、将SHA-256标准定义的Maj操作进行等价变换;
等价变换实现指令周期数从5个周期降到了4个周期,等价变换如下所示:
S403、将SHA-256标准定义的循环移位操作进行等价变换,实现指令周期数从4个周期降为1个。
例如将数据v向左循环移动n位,转换如下所示:
(((v)<<(n))|((v)>>(32-(n))))→vrotlw(v,n)
其中,‘<<’和‘>>’操作表示逻辑左移和逻辑右移操作,vrotlw表示申威26010提供的循环移位指令。
指令可以通过两种方式调用,一是使用simd接口调用,二是通过调用汇编语言接口调用,两者的效果是一致的。
S5、对步骤S4得到的经过DMA传输优化、并行调度优化和指令操作优化的从核代码进行循环展开,调整汇编代码顺序来充分利用双发射技术,限制使用的寄存器数量,最终实现申威26010处理器上SHA-256算法的并行调度。
通过限制使用的寄存器数量进一步提高效率,相比于优化过访存效率的原始SHA-256算法实现,对于1MB消息的哈希计算,运行时间从45.01s减少到16.25s,运行效率提升了2.77倍。
S501、进行手动循环展开;
为了避免循环索引的开销,手动在汇编代码中进行循环展开,并行调度和消息压缩部分都可以循环展开。
S502、调整指令顺序;
为了充分利用双发射技术,通过调整指令的顺序,从而更高效的执行代码;最终完成算法的性能优化;指令调整方案的关键点在于错开访存指令,因为访存指令通常较慢,且在一条流水线完成。
S503、较少寄存器数量。
通过在设计汇编代码减少使用的临时寄存器,可以进一步的减少算法执行时间。
在本实施例中,消息调度中使用的中间寄存器数量为5个,消息压缩使用的中间寄存器数量也是5个。
请参阅图4,本发明再一个实施例中,提供一种基于SHA-256算法的并行调度实现系统,该系统能够用于实现上述基于SHA-256算法的并行调度实现方法,具体的,该基于SHA-256算法的并行调度实现系统包括移植模块、替换模块、并行模块、操作模块以及实现模块。
其中,移植模块,用于将SHA-256算法的C代码移植到申威SW26010处理器上,并使用申威SW26010处理器的sw5gcc编译器分别编译从核和主核的代码;
替换模块,用于使用优化后的DMA传输方式对移植模块得到的从核和主核代码进行处理,得到经过DMA传输优化的从核代码;
并行模块,用于利用替换模块得到的主核代码提供待传输数据接口,依据替换模块得到的从核代码对SHA-256算法的调度部分进行向量并行化,将多块小端数据存储到向量寄存器中进行大端转换,得到最终的并行调度结果,然后通过标量寄存器得到经过DMA传输和并行调度优化的从核代码;
操作模块,用于依据并行模块得到的经过DMA传输优化和并行调度优化的从核代码,对SHA-256算法的Ch操作、Maj操作和循环移位操作的指令进行等价替换,得到经过DMA传输、并行调度和指令操作优化的从核代码;
实现模块,用于对操作模块得到的经过DMA传输优化、并行调度优化和指令操作优化的从核代码进行循环展开,调整汇编代码顺序,并限制中间寄存器的使用数量,实现申威26010处理器上SHA-256算法的并行调度。
本发明再一个实施例中,提供了一种终端设备,该终端设备包括处理器以及存储器,所述存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器用于执行所述计算机存储介质存储的程序指令。处理器可能是中央处理单元(Central ProcessingUnit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor、DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,其是终端的计算核心以及控制核心,其适于实现一条或一条以上指令,具体适于加载并执行一条或一条以上指令从而实现相应方法流程或相应功能;本发明实施例所述的处理器可以用于基于SHA-256算法的并行调度实现方法的操作,包括:
将SHA-256算法的C代码移植到申威SW26010处理器上,并使用申威SW26010处理器的sw5gcc编译器分别编译从核和主核的代码;使用优化后的DMA传输方式对步骤S1得到的从核代码和主核代码进行处理,得到经过DMA传输优化的主核代码和从核代码;通过主核代码提供待传输数据接口,依据从核代码对SHA-256算法的调度部分进行向量并行化,将多块小端数据存储到向量寄存器中进行大端转换,得到最终的并行调度结果,然后通过标量寄存器得到经过DMA传输优化和并行调度优化的从核代码;依据经过DMA传输优化和并行调度优化的从核代码,对SHA-256算法的Ch操作、Maj操作和循环移位操作的指令进行等价替换,得到经过DMA传输优化、并行调度优化和指令操作优化的从核代码;对经过DMA传输优化、并行调度优化和指令操作优化的从核代码进行循环展开,调整汇编代码顺序,并限制中间寄存器的使用数量,实现申威26010处理器上SHA-256算法的并行调度。
本发明再一个实施例中,本发明还提供了一种存储介质,具体为计算机可读存储介质(Memory),所述计算机可读存储介质是终端设备中的记忆设备,用于存放程序和数据。可以理解的是,此处的计算机可读存储介质既可以包括终端设备中的内置存储介质,当然也可以包括终端设备所支持的扩展存储介质。计算机可读存储介质提供存储空间,该存储空间存储了终端的操作系统。并且,在该存储空间中还存放了适于被处理器加载并执行的一条或一条以上的指令,这些指令可以是一个或一个以上的计算机程序(包括程序代码)。需要说明的是,此处的计算机可读存储介质可以是高速RAM存储器,也可以是非不稳定的存储器(Non-Volatile Memory),例如至少一个磁盘存储器。
可由处理器加载并执行计算机可读存储介质中存放的一条或一条以上指令,以实现上述实施例中有关基于SHA-256算法的并行调度实现方法的相应步骤;计算机可读存储介质中的一条或一条以上指令由处理器加载并执行如下步骤:
将SHA-256算法的C代码移植到申威SW26010处理器上,并使用申威SW26010处理器的sw5gcc编译器分别编译从核和主核的代码;使用优化后的DMA传输方式对步骤S1得到的从核代码和主核代码进行处理,得到经过DMA传输优化的主核代码和从核代码;通过主核代码提供待传输数据接口,依据从核代码对SHA-256算法的调度部分进行向量并行化,将多块小端数据存储到向量寄存器中进行大端转换,得到最终的并行调度结果,然后通过标量寄存器得到经过DMA传输优化和并行调度优化的从核代码;依据经过DMA传输优化和并行调度优化的从核代码,对SHA-256算法的Ch操作、Maj操作和循环移位操作的指令进行等价替换,得到经过DMA传输优化、并行调度优化和指令操作优化的从核代码;对经过DMA传输优化、并行调度优化和指令操作优化的从核代码进行循环展开,调整汇编代码顺序,并限制中间寄存器的使用数量,实现申威26010处理器上SHA-256算法的并行调度。
请参阅图2所示,该实施例的计算机设备60包括:处理器61、存储器62以及存储在存储器62中并可在处理器61上运行的计算机程序63,该计算机程序63被处理器61执行时实现实施例中的基于SHA-256算法的并行调度实现方法,为避免重复,此处不一一赘述。或者,该计算机程序63被处理器61执行时实现实施例基于SHA-256算法的并行调度实现系统中各模型/单元的功能,为避免重复,此处不一一赘述。
计算机设备60可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。计算机设备60可包括,但不仅限于,处理器61、存储器62。本领域技术人员可以理解,图2仅仅是计算机设备60的示例,并不构成对计算机设备60的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如计算机设备还可以包括输入输出设备、网络接入设备、总线等。
所称处理器61可以是中央处理单元(Central Processing Unit,CPU),还可以是其它通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其它可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
存储器62可以是计算机设备60的内部存储单元,例如计算机设备60的硬盘或内存。存储器62也可以是计算机设备60的外部存储设备,例如计算机设备60上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。
进一步地,存储器62还可以既包括计算机设备60的内部存储单元也包括外部存储设备。存储器62用于存储计算机程序以及计算机设备所需的其它程序和数据。存储器62还可以用于暂时地存储已经输出或者将要输出的数据。
综上所述,本发明一种基于SHA-256算法的并行调度实现方法、系统、介质及设备,通过全方面的性能优化,包括编译选项优化、DMA传输优化、并行调度优化、指令减少优化以及汇编级别的循环展开和双发射技术优化,得到一个SHA-256算法的并行调度高效实现。相比于优化过访存效率的原始SHA-256算法实现,运行效率提升了2.77倍。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上内容仅为说明本发明的技术思想,不能以此限定本发明的保护范围,凡是按照本发明提出的技术思想,在技术方案基础上所做的任何改动,均落入本发明权利要求书的保护范围之内。

Claims (10)

1.一种基于SHA-256算法的并行调度实现方法,其特征在于,包括以下步骤:
S1、将SHA-256算法的C代码移植到申威SW26010处理器上,并使用申威SW26010处理器的sw5gcc编译器分别编译从核和主核的代码;
S2、使用优化后的DMA传输方式对步骤S1得到的从核代码和主核代码进行处理,得到经过DMA传输优化的主核代码和从核代码;
S3、利用步骤S2得到的主核代码提供待传输数据接口,依据步骤S2得到的从核代码对SHA-256算法的调度部分进行向量并行化,得到最终的并行调度结果,然后通过标量寄存器得到经过DMA传输优化和并行调度优化的从核代码;
S4、依据步骤S3得到的经过DMA传输优化和并行调度优化的从核代码,对SHA-256算法的Ch操作、Maj操作和循环移位操作的指令进行等价替换,得到经过DMA传输优化、并行调度优化和指令操作优化的从核代码;
S5、对步骤S4得到的经过DMA传输优化、并行调度优化和指令操作优化的从核代码进行循环展开,调整汇编代码顺序,并限制中间寄存器的使用数量,实现申威26010处理器上SHA-256算法的并行调度。
2.根据权利要求1所述的基于SHA-256算法的并行调度实现方法,其特征在于,步骤S1具体为:
S101、将OpenSSL中SHA-256算法的C代码移植到申威SW26010处理器上,提供函数接口,输入为消息长度和消息的指针,输出为消息摘要;
S102、使用sw5gcc编译SHA-256算法的主核代码,编译选项为-O2,-msimd;
S103、使用sw5gcc编译器编译从核代码,编译选项为-O2-msimd-funroll-all-loops-mslave;
S104、使用sw5gcc编译器将编译生成主核中间文件和从核中间文件进行链接,与调用函数接口的文件进行链接,生成可执行文件,并添加-sw3run swrun-5a运行参数用于运行sw5gcc编译生成的可执行文件。
3.根据权利要求1所述的基于SHA-256算法的并行调度实现方法,其特征在于,步骤S2具体为:
S201、在申威SW26010处理器从核的局部存储器开辟静态空间供DMA传输使用;
S202、对DMA传输接口使用的数据传输量进行调整,设定最大块数为M,对于块数小于M的消息,仅执行一次DMA传输,对于块数大于M的消息,执行多次DMA传输,得到经过DMA传输优化的从核代码。
4.根据权利要求1所述的基于SHA-256算法的并行调度实现方法,其特征在于,步骤S3具体为:
S301、依据消息的块数判断调用的并行调度接口,对于长度大于8个块的消息,使用8个调度接口进行依次处理,当剩下的块数小于8个块时,依据剩下的块数,调用处理不同块数接口;对于长度小于等于8个块的消息,直接调用对应的接口;
S302、将消息的S块加载到向量寄存器中,S≤8,将小端数据转换成大端数据,得到最终的消息调度结果;将调度结果卸载出向量寄存器,串行地完成消息压缩地计算,得到经过DMA传输优化和并行调度优化的从核代码。
5.根据权利要求1所述的基于SHA-256算法的并行调度实现方法,其特征在于,步骤S4中,将SHA-256标准定义的Ch操作进行数学操作的等价变换;将SHA-256标准定义的Maj操作进行数学操作的等价变换;将SHA-256标准定义的循环移位操作进行硬件指令的等价变换,使用simd接口或者通过调用汇编语言接口调用指令,得到经过DMA传输优化、并行调度和指令操作优化的从核代码。
6.根据权利要求5所述的基于SHA-256算法的并行调度实现方法,其特征在于,将数据v向左循环移动n位,实现SHA-256标准定义的循环移位操作与硬件指令的等价变换,转换如下:
(((v)<<(n))|((v)>>(32-(n))))→vrotlw(v,n)
其中,‘<<’和‘>>’操作表示逻辑左移和逻辑右移操作,vrotlw表示申威26010提供的循环移位指令,。
7.根据权利要求1所述的基于SHA-256算法的并行调度实现方法,其特征在于,步骤S5具体为:
S501、在汇编代码中对从核代码进行循环展开,使并行调度和消息压缩部分循环展开;
S502、步骤S501并行调度和消息压缩部分循环展开后,错开访存指令,进行指令顺序调整;
S503、使用8个寄存器,其中3个是存储变量的寄存器,5个是消息调度用的中间寄存器,将指令存储到寄存器中,实现申威26010处理器上SHA-256算法的并行调度。
8.一种基于SHA-256算法的并行调度实现系统,其特征在于,包括移植模块、替换模块、并行模块、操作模块和实现模块;
移植模块,用于将SHA-256算法的C代码移植到申威SW26010处理器上,并使用申威SW26010处理器的sw5gcc编译器分别编译从核和主核的代码;
替换模块,用于使用优化后的DMA传输方式对移植模块得到的从核和主核代码进行处理,得到经过DMA传输优化的从核代码;
并行模块,用于利用替换模块得到的主核代码提供待传输数据接口,依据替换模块得到的从核代码对SHA-256算法的调度部分进行向量并行化,得到最终的并行调度结果,然后通过标量寄存器得到经过DMA传输和并行调度优化的从核代码;
操作模块,用于依据并行模块得到的经过DMA传输优化和并行调度优化的从核代码,对SHA-256算法的Ch操作、Maj操作和循环移位操作的指令进行等价替换,得到经过DMA传输、并行调度和指令操作优化的从核代码;
实现模块,用于对操作模块得到的经过DMA传输优化、并行调度优化和指令操作优化的从核代码进行循环展开,调整汇编代码顺序,并限制中间寄存器的使用数量,实现申威26010处理器上SHA-256算法的并行调度。
9.一种存储一个或多个程序的计算机可读存储介质,其特征在于,所述一个或多个程序包括指令,所述指令当由计算设备执行时,使得所述计算设备执行根据权利要求1至7所述的方法中的任一方法。
10.一种计算设备,其特征在于,包括:
一个或多个处理器、存储器及一个或多个程序,其中一个或多个程序存储在所述存储器中并被配置为所述一个或多个处理器执行,所述一个或多个程序包括用于执行根据权利要求1至7所述的方法中的任一方法的指令。
CN202210907513.5A 2022-07-29 2022-07-29 一种基于sha-256算法的并行调度实现方法、系统、介质及设备 Pending CN115934092A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210907513.5A CN115934092A (zh) 2022-07-29 2022-07-29 一种基于sha-256算法的并行调度实现方法、系统、介质及设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210907513.5A CN115934092A (zh) 2022-07-29 2022-07-29 一种基于sha-256算法的并行调度实现方法、系统、介质及设备

Publications (1)

Publication Number Publication Date
CN115934092A true CN115934092A (zh) 2023-04-07

Family

ID=86647758

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210907513.5A Pending CN115934092A (zh) 2022-07-29 2022-07-29 一种基于sha-256算法的并行调度实现方法、系统、介质及设备

Country Status (1)

Country Link
CN (1) CN115934092A (zh)

Similar Documents

Publication Publication Date Title
CN109791488B (zh) 用于执行用于复数的融合乘-加指令的系统和方法
Gupta et al. Pqc acceleration using gpus: Frodokem, newhope, and kyber
CN106878021B (zh) 用于处理sha-2安全散列算法的方法和设备
EP2872987B1 (en) Parallel processing of a single data buffer
CN110879724A (zh) 用于深度学习和其它算法的fp16-s7e8混合精度
CN112543095A (zh) 处理指令的系统、设备、方法、处理器、介质和电子设备
CN117724766A (zh) 用于执行将矩阵变换为行交错格式的指令的系统和方法
Vidal et al. A multi-GPU implementation of a cellular genetic algorithm
CN112152787A (zh) 用于后量子密码学安全的基于哈希的签名和验证的消息索引感知多哈希加速器
CN111767079A (zh) 用于矩阵操作加速器的转置指令的装置、方法和系统
CN114546490A (zh) 用于散列指令的装置、方法和系统
US11922133B2 (en) Processor and method for processing mask data
CN110806897B (zh) 面向多代码粒度的向量并行性发掘方法
Tran et al. BCA: A 530-mW multicore blockchain accelerator for power-constrained devices in securing decentralized networks
Wang et al. Parallel SHA-256 on SW26010 many-core processor for hashing of multiple messages
CN111767512A (zh) 离散余弦变换/反离散余弦变换dct/idct系统和方法
CN116880906A (zh) 用于8位浮点矩阵点积指令的装置、方法和系统
US20150095389A1 (en) Method and system for generating pseudorandom numbers in parallel
CN111738703B (zh) 一种加速安全散列算法的加速器
Le et al. Mrsa: A high-efficiency multi romix scrypt accelerator for cryptocurrency mining and data security
CN115934092A (zh) 一种基于sha-256算法的并行调度实现方法、系统、介质及设备
Haaß et al. Automatic custom instruction identification in memory streaming algorithms
US20220255757A1 (en) Digital signature verification engine for reconfigurable circuit devices
CN116308989A (zh) 一种全同态快速数论变换的gpu加速方法
Muri et al. Embedded Processor-In-Memory architecture for accelerating arithmetic operations

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