CN111738703A - 一种加速安全散列算法的加速器 - Google Patents

一种加速安全散列算法的加速器 Download PDF

Info

Publication number
CN111738703A
CN111738703A CN202010474004.9A CN202010474004A CN111738703A CN 111738703 A CN111738703 A CN 111738703A CN 202010474004 A CN202010474004 A CN 202010474004A CN 111738703 A CN111738703 A CN 111738703A
Authority
CN
China
Prior art keywords
task
module
instruction
accelerator
subtask
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
Application number
CN202010474004.9A
Other languages
English (en)
Other versions
CN111738703B (zh
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.)
Institute of Computing Technology of CAS
Original Assignee
Institute of Computing Technology of CAS
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 Institute of Computing Technology of CAS filed Critical Institute of Computing Technology of CAS
Priority to CN202010474004.9A priority Critical patent/CN111738703B/zh
Publication of CN111738703A publication Critical patent/CN111738703A/zh
Application granted granted Critical
Publication of CN111738703B publication Critical patent/CN111738703B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/04Payment circuits
    • G06Q20/06Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme
    • G06Q20/065Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme using e-cash
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/382Payment protocols; Details thereof insuring higher security of transaction
    • G06Q20/3827Use of message hashing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/382Payment protocols; Details thereof insuring higher security of transaction
    • G06Q20/3829Payment protocols; Details thereof insuring higher security of transaction involving key management
    • 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

  • Business, Economics & Management (AREA)
  • Accounting & Taxation (AREA)
  • Engineering & Computer Science (AREA)
  • Finance (AREA)
  • Strategic Management (AREA)
  • Physics & Mathematics (AREA)
  • General Business, Economics & Management (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

本发明提供一种加速安全散列算法的加速器,包括:存储模块、PE运算模块、任务划分模块、算法映射模块。本发明相比于现有技术,首先可以降低计算的时间开销,提高计算性能;其次,可以降低计算带来的功耗开销;此外,本发明可以实现安全散列函数的高通量计算,显著提高哈希率,使用本发明设计的计算机系统具有良好的可扩展性和兼容性。

Description

一种加速安全散列算法的加速器
技术领域
本发明属于计算机体系结构领域,具体涉及一种加速安全散列算法的加速器。
背景技术
随着数字货币的兴起,安全散列函数进入研究人员的视野。安全散列函数是实现安全散列算法的函数。安全散列算法(Secure Hash Algorithm,简称SHA)是一类常用的数据加密算法,可以实现数据保密、防止数据更改和身份验证等功能,广泛地应用于密码学、电子商务以及信息安全领域。安全散列算法能计算出一个数字消息所对应的长度固定的字符串,且若输入的消息不同,它们对应到不同字符串的机率很高。SHA系列算法可分为两类:SHA-1和SHA-2,其中,SHA-1是由美国国家安全局设计,并由美国国家标准技术研究所发布为联邦数据处理标准。SHA-1可以生成一个被称为消息摘要的160位(20字节)散列值,散列值通常的呈现形式为40个十六进制数。SHA-2也由美国国家安全局研发,是SHA-1的后继者,可细分为SHA-224、SHA-256、SHA-384以及SHA-512。与SHA-1相比,SHA-2在算法强度和消息摘要的长度上有所区别。
在数字货币的挖矿过程中,如何快速且低能耗地计算安全散列函数值成为矿机能否高效工作的关键。现有的解决方案分为以下三类:
第一类解决方案是用多个处理器并行计算多个哈希值,这类方法存在的问题不仅是会带来较大的功耗,而且对于每个处理器而言,加速比并没有改变;
第二类解决方案是通过编译器将原有安全散列算法的指令进行软件层次优化,但安全散列函数由于运算复杂、指令条数多、指令之间数据依赖严重,通过编译器进行优化的效果并不明显;
第三类解决方案是为安全散列函数定制专用加速电路,但安全散列函数簇包括众多函数且发展迅速,专用电路存在可扩展性差、兼容性差等缺点。
发明内容
为了解决上述问题,本发明提出了一种用于安全散列算法的加速器,包括:存储模块、PE运算模块、任务划分模块、算法映射模块,其中,
所述存储模块负责存储待运算的数据;
所述PE运算模块由多个PE单元组成,负责对存储模块中的数据进行运算,每个所述PE单元内部具有对应SHA指令集的数据通路和流水线结构;
所述任务划分模块,用于将所述安全散列算法的初始指令文件进行任务划分,生成多任务的数据流图,其中所述初始指令文件包含所述SHA指令集的指令,每个所述任务划分为一个或者多个子任务;
所述算法映射模块,根据所述多任务的数据流图将所述各个任务的子任务映射到对应的所述PE单元。
优选的,所述加速器,还包括编译器,所述编译器用于将高级语言程序翻译为所述初始指令文件。
优选的,所述加速器,还包括控制模块,用于控制所述存储模块、PE运算模块、任务划分模块以及算法映射模块的操作,并用于生成所述存储模块、PE运算模块、任务划分模块以及算法映射模块之间的数据传输的路由信息。
优选的,所述SHA指令集还包含如下SHA专用指令格式:
Figure BDA0002515231350000021
该指令完成的功能是:(A>>x)^(B>>y)^(C>>z),其中,>>表示向右移位,^表示按位异或。
优选的,所述安全散列算法包括SHA1、SHA-224、SHA-256、SHA-384以及SHA-512。
优选的,所述算法映射模块用于根据需要使用的PE个数k以及每个PE单元映射的子任务数n计算每个任务的初始子任务计算节点对应的PE序号fi,计算每个任务的各个子任务对应的PE序号,以及根据每个子任务对应的PE序号将指令传输至相应PE;其中,k值由
Figure BDA0002515231350000022
确定,n由
Figure BDA0002515231350000023
确定,fi由i mod k确定,每个子任务对应的PE序号由fi+j/n确定,J表示每个计算任务被划分为J个子任务,K表示PE阵列有K个可用PE单元,i表示第i个任务,j表示第j个子任务,
Figure BDA0002515231350000031
表示向上取整。
优选的,所述任务划分模块用于读取PE阵列的配置信息,生成约束条件,根据约束条件计算划分的子任务数以及子任务的指令数阈值,根据计算得到的子任务数和子任务指令数阈值将初始指令文件划分为多个子任务文件。
优选的,所述任务划分模块还用于判断划分是否满足逻辑寄存器数量的约束,以及添加数据流流动指令后是否超过指令数阈值,如若不满足,则根据受限约束条件重新调整子任务数和子任务指令数阈值,对初始指令文件进行划分;如若满足,则根据该划分生成子任务之间的数据搬运指令,生成该计算任务的数据流图。
本发明还提供一种用于安全散列算法的系统,包括主机和上述的加速器,所述主机用于编写安全散列算法语言程序、启动加速器,将安全散列算法语言程序传输至所述加速器,以及接收加速器返回的计算结果。
本发明还提供一种基于上述系统的加速安全散列算法的方法,包括:
步骤1,根据从主机端获得的SHA程序生成初始指令文件;
步骤2,将初始指令文件划分为多个子任务文件并生成数据流图;
步骤3,将数据流图映射到PE阵列,为每个子任务分配PE单元;
步骤4,启动PE阵列,执行计算子任务,并将结果返回主机端。
本发明相比于现有技术,首先可以降低计算的时间开销,提高计算性能;其次,可以降低计算带来的功耗开销;此外,本发明可以实现安全散列函数的高通量计算,显著提高哈希率;使用本发明设计的计算机系统具有良好的可扩展性和兼容性。
附图说明
图1示出了SHA-1算法核心运算过程;
图2示出了SHA-2算法核心运算过程;
图3示出了根据本发明一个实施例的加速安全散列算法的系统的结构图。
图4示出了根据本发明一个实施例的加速器的结构图;
图5示出了根据本发明一个实施例的加速安全散列算法过程;
图6示出了根据本发明一个实施例的任务划分过程;
图7是根据本发明一个实施例的用于SHA-256算法任务划分的效果图;
图8示出了根据本发明一个实施例的多任务错位映射过程;
图9是根据本发明一个实施例的用于SHA-256算法的多任务数据流图与PE映射效果图;
具体实施方式
以下结合附图和具体实施例介绍本发明的具体实施方式。
发明人针对现有技术存在的问题,意图在以下几个方面作出改进。
第一,由于安全散列算法本身具有的运算复杂、指令条数多、数据依赖严重等原因,仅通过编译优化等软件技术进行优化时效果不明显;仅通过制定专用电路结构对某一安全散列算法进行加速虽然可以带来明显加速效果,但是该专用电路结构很难适用于其他安全散列算法,可扩展性和兼容性差。发明人认为只有通过一套完整的软件与硬件协同配合的系统,才能高效加速安全散列函数。
第二,现有加速安全散列算法方法存在的指令数多、加速比低等缺陷是由于现有处理器的指令集缺少针对安全散列算法设计的指令。图1示出了SHA-1算法的核心运算过程,表示SHA-1算法中的一个循环,其中,a、b、c、d和e是5个32位初始值,A、B、C、D和E是计算生成的值;f是变化的非线性函数;<<<代表比特位向左循环移动;带方框的加号代表模为232的加法,W是扩展的消息字,K是一个常量。图2示出了SHA-2算法的核心运算过程,表示算法中的一个循环,Ch、s1、Maj、s0是预定义的非线性函数;A、B、C、D、E、F、G、H分别是八个区段值,K是密钥,W是本区块产生的字;原消息被切成固定长度的区块,对每一个区块,产生n个字(n视算法而定),通过n次循环对A、B、C、D、E、F、G、H这八个工作区段循环加密,最后一次循环所产生的八段字符串合起来即是此区块对应的散列字符串。若原消息包含数个区块,则最后还要将这些区块产生的散列字符串加以混合才能产生最后的散列字符串。发明人经过对现有安全散列算法SHA-1、SHA-2等系列算法进行对比与分析,为安全散列算法中频繁调用的函数设计了专用指令,这些频繁调用的函数通常需要多条RISC-V指令实现,而指令条数太多会带来指令存储空间不足和计算效率低的问题,导致无法同时计算较多任务。采用专用指令可显著减少算法所需的指令条数,解决现有加速方法指令多、加速比低、能耗高的问题。
第三,传统的冯诺依曼结构计算机由存储、运算器、控制器、输入输出设备组成,采用存储程序的思想,运算器从存储器中取出数据,进行运算,再将结果写回存储器,并且计算机中的指令按照其在存储器中顺序依次执行。随着摩尔定律的放缓,冯诺依曼结构的性能瓶颈逐渐体现,“内存墙”问题是一个典型的代表。“内存墙”问题是指内存性能严重限制CPU性能发挥的现象。在过去的20多年中,处理器的性能以每年大约55%速度快速提升,而内存性能的提升速度则只有每年10%左右,长期累积下来,处理器与内存不均衡的发展速度造成了当前内存的存取速度严重滞后于处理器的计算速度。数据流体系结构计算机将计算任务转化为数据流图,通过数据在运算节点之间的流动进行计算,并减少访存带来的开销,能有效的解决“内存墙”问题。为解决“内存墙”问题,减少访存次数,发明人使用粗粒度的数据流结构,数据在节点之间流动完成计算。另外,粗粒度的数据流具有良好的可扩展性,针对不同的算法可生成不同的数据流图,映射到的处理器阵列进行计算,可解决已有硬件加速方法可扩展性差、兼容性差等问题。
第四,发明人在进行算法移植时发现,安全散列函数的任务节点之间存在数据依赖,后继节点需要等待前驱节点的运算结果传输到该节点之后才可以进行计算,换言之,后继节点的处理单元存在等待时间,这会带来部件利用率低的问题。发明人为解决这一问题,提出“错位映射”的方法,来解决部件利用率低的问题并提高了哈希率。
基于以上分析,根据本发明的一个实施例,提供一种加速安全散列算法的系统,如图3所示,概括来说,该系统包括主机和加速器,其中,主机的功能为编写高级语言程序、启动加速器,可以采用现有的商用通用处理器实现;加速器用于对安全散列函数进行运算、将运行结果送回主机端,采用专用芯片实现。主机端与加速器通过扩展槽总线连接进行数据传输与交互。
根据本发明的一个实施例,加速器包括6个模块,如图4所示,包括:编译器、任务划分模块、算法映射模块、控制模块、存储模块以及PE运算模块。
以下分别介绍加速器中每个模块的功能。
PE运算模块即PE阵列,PE阵列由PE单元组成,在每个PE单元内部都有对应SHA指令集的数据通路和流水线结构,负责对存储模块中的数据进行运算。
编译器接受控制模块的控制信息,将高级语言编写的安全散列函数经过汇编以及编译过程生成初始指令文件,初始指令文件包含常规指令以及本发明提供的SHA指令集的汇编代码。其中,汇编过程是指从高级语言程序生成低级指令的过程,编译过程是做一些相应的优化。编译完毕后通知控制模块。
根据本发明的一个实施例,SHA指令集是一种适用于安全散列算法簇的专用指令集,可适用于SHA系列算法的核心计算,由于将频繁调用的多条指令减少为一条指令,并且专用指令的逻辑延时未超过PE运算模块的主频限制,故专用指令与ADD、SUB等指令的执行速度相同。因此,相比于不使用专用指令,可以显著减少安全散列算法指令条数,将指令数目减少为原来的1/3左右,并显著提升计算效率。本发明提供的SHA专用指令格式如下:
Figure BDA0002515231350000061
该指令完成的功能是:(A>>x)^(B>>y)^(C>>z),其中,>>表示向右移位,^表示按位异或运算。
任务划分模块,将编译器生成的初始指令文件进行任务划分,生成多任务的数据流图。当编译器生成初始指令文件后,通知控制模块,控制模块激活任务划分模块。任务划分模块的输入为编译器输出的文件即初始指令文件,该模块的功能为生成包含约束条件的约束文件,约束条件包括闲置可用PE数、每个PE指令存储空间大小、每个PE逻辑寄存器数。任务划分模块根据约束条件将初始指令文件划分多个子任务文件,并且根据各子任务文件之间的数据依赖关系,在每个子任务文件中增加数据流动指令,指明各子任务之间的数据依赖关系,构成多任务的数据流图。任务划分模块的划分工作结束后通知控制模块。
任务划分模块采用基于粗粒度数据流结构的任务划分方法进行任务划分。数据流计算模式在最初提出时,实际上是细粒度数据流计算模式,通过数据流指令集来实现,建立指令间的数据依赖关系,将一个程序按指令划分构建数据流图。本发明的粗粒度数据流是将细粒度数据流的计算模式扩展到粗粒度的实现方式,它以一个线程或者指令块为粒度,即数据流图上的一个结点表示一个指令块。粗粒度数据流计算模式中,将一个程序划分成多个程序块,建立程序块间的数据依赖关系,构成数据流图。如图6所示,基于粗粒度数据流结构的任务划分方法包括以下步骤:
S1032,任务划分模块读取PE阵列的配置信息,生成包含约束条件的约束文件;
S1033,根据约束文件中的约束条件计算划分的子任务的指令数阈值和子任务数,其中,
子任务指令数阈值=每个PE的指令存储空间/指令位宽,
Figure BDA0002515231350000071
S1034,根据计算得到的子任务数和子任务指令数阈值将初始指令文件进行划分;判断该划分是否满足逻辑寄存器数量的约束,以及添加本段程序的数据流流动指令后是否超过指令数阈值,如若不满足,则根据受限约束条件重新调整子任务数和子任务指令数,重复上述过程;如若满足上述约束,则进入以下步骤;
S1035,根据该划分生成子任务之间的数据流动指令,在每个划分的子任务文件内添加数据流动指令,指定需要流向下游节点的数据,以及该数据的流动方向,生成该计算任务的数据流图。
基于粗粒度数据流结构的任务划分方法中的子任务内的指令数阈值通过做除法算出,即保证每个子任务内的指令数靠近且小于阈值,而且每条指令的执行时间相同,能够为PE阵列上每个PE单元分配尽可能均衡的计算负载,减少由于PE负载不均衡带来的PE等待开销。
算法映射模块,将多任务的数据流图映射到具体的PE单元。任务划分模块工作结束后,控制模块激活算法映射模块,为每个子任务分配PE序号,通过片上网络将子任务文件发送至相应PE的指令存储器上。算法映射模块工作结束后通知控制模块。
算法映射模块采用基于粗粒度数据流结构的多任务错位映射的方法,将多任务的数据流图通过本发明提供的“错位映射”方法映射到PE阵列上。此处“多任务数据流图”是指一个应用程序生成一个数据流图,例如一个SHA-256会有一个数据流图,多任务是指PE阵列可在同一时间并行计算多个应用程序,例如同时进行4个SHA-256计算任务。假设现在有I个计算任务要同时运行,每个计算任务被划分为J个子任务,PE阵列有K个可用PE单元。如图8所示,该错位映射方法包括以下步骤:
S1041,计算需要使用的PE个数k,k值由
Figure BDA0002515231350000081
确定,其中,
Figure BDA0002515231350000082
表示向上取整;
S1042,计算每个PE单元映射的子任务数n,n由
Figure BDA0002515231350000083
确定;
S1043,计算每个任务的初始子任务对应的PE序号fi,该序号由(i mod k)确定,其中i表示第i个任务,mod表示取余运算;
S1044,计算每个计算任务的各个子任务对应的PE序号,该序号由(fi+j/n)确定,其中,j表示第j个子任务;
S1045,片上网络根据每个子任务映射的PE序号,将指令传输上相应PE。
将指令传输上相应PE之后,控制模块向PE阵列发送启动信号,即可开始计算过程。
基于粗粒度数据流结构的多任务错位映射的方法使PE阵列可同时运行多个计算任务,可以掩盖由于数据依赖带来的PE等待时间,大大提高PE阵列的部件利用率。
存储模块负责存储待运算的数据;存储模块与主机端的数据传输,包括两方面,一方面接受控制模块的地址、数据量信号,从主机端取SHA算法需要的数据,包括常数和加密数据。另一方面是SHA程序执行结束之后,根据控制模块的地址信号将结果数据送回主机端。存储模块还与PE之间进行数据传输,PE单元根据指令中的地址偏移从存储中取数。
控制模块用于控制所述存储模块、PE运算模块、任务划分模块以及算法映射模块的操作,并用于生成所述存储模块、PE运算模块、任务划分模块以及算法映射模块之间的数据传输的路由信息。。
下面以并行计算4个SHA-256程序为例,描述本系统的操作过程。
首先,用户在主机端编写SHA-256程序,设置PE阵列任务并行度,即PE阵列需要并行计算多少个SHA-256程序,本例子中设置任务并行度为4,启动加速器。
加速器中的编译器将高级程序语言编写的SHA-256程序优先编译为本发明提供的SHA专用指令,生成初始指令文件。
任务划分模块读取PE配置信息,生成包含约束条件的约束文件,例如可用PE序号为0-4,任务数为4,约束条件是PE内可容纳最大指令数为2000条;任务划分模块将PE可容纳最大指令数做为优先考虑的约束条件,通过计算得出子任务数例如为5,每个子任务包含指令数阈值例如为500;任务划分模块将初始指令文件划分为5个子任务指令文件,并且该划分满足PE内部逻辑寄存器;任务划分模块,生成该划分的数据流图,并生成子任务间数据流动指令,在每个子任务内通过添加数据流动指令生成具有前后依赖关系的文件。任务划分的结果如图7所示。
划分任务之后,算法映射模块将数据流图映射到PE阵列,为每个子任务分配PE单元。算法映射模块计算一个任务需要的PE数,此实施例k值为5;计算每个PE分配的子任务数,此实施例每个PE分配子任务数为1;计算每个任务的初始子任务节点,此实施例依次为0-3;计算4个任务各子任务节点对应的PE序号。子任务节点与PE对应关系以及数据流动结果如图9所示,PE阵列共有5个PE单元,分别为PE0-PE4;共有4个任务并行执行,第1个任务分为5个子任务,分别是1-1、1-2、1-3、1-4、1-5,第2个任务也分为5个子任务,分别是2-1、2-2、2-3、2-4、2-5,以此类推,第4个任务也分为5个子任务,分别是4-1、4-2、4-3、4-4。算法映射模块将第1个任务的第1个子任务1-1分配至PE0,将第2个任务的第1个子任务2-1分配至PE1,以此类推,第4个任务的第1个子任务分配至PE3。从一个任务执行的角度看,第1个任务在PE中的流动顺序是PE0→PE1→PE2→PE3→PE4,第2个任务在PE中的流动顺序是PE1→PE2→PE3→PE4→PE0,第3个任务在PE中的流动顺序是PE2→PE3→PE4→PE0→PE1,第4个任务在PE中的流动顺序是PE3→PE4→PE0→PE1→PE2。从一个PE单元的角度看,PE0中顺序执行的子任务是1-1、4-3、3-4、2-5,PE1中顺序执行的子任务是2-1、1-2、4-4、3-5,PE2中顺序执行的子任务是3-1、2-2、1-3、4-5,PE3中顺序执行的子任务是4-1、3-2、2-3、1-4,PE4中执行的子任务是4-2、3-3、2-4、1-5。算法映射模块根据PE序号将指令文件传输至相应PE,映射过程结束。
控制模块启动PE阵列,数据在PE阵列上按照数据流图在PE之间传输,PE执行指令完成计算任务,将结果返回主机端,完成整个加速过程。
需要说明的是,上述实施例中介绍的各个步骤并非都是必须的,本领域技术人员可以根据实际需要进行适当的取舍、替换、修改等。
最后所应说明的是,以上实施例仅用以说明本发明的技术方案而非限制。尽管上文参照实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,对本发明的技术方案进行修改或者等同替换,都不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的权利要求范围当中。

Claims (10)

1.一种用于安全散列算法的加速器,包括:存储模块、PE运算模块、任务划分模块、算法映射模块,其中,
所述存储模块负责存储待运算的数据;
所述PE运算模块由多个PE单元组成,负责对存储模块中的数据进行运算,每个所述PE单元内部具有对应SHA指令集的数据通路和流水线结构;
所述任务划分模块,用于将所述安全散列算法的初始指令文件进行任务划分,生成多任务的数据流图,其中所述初始指令文件包含所述SHA指令集的指令,每个所述任务划分为一个或者多个子任务;
所述算法映射模块,根据所述多任务的数据流图将所述各个任务的子任务映射到对应的所述PE单元。
2.根据权利要求1所述的加速器,还包括编译器,所述编译器用于将高级语言程序翻译为所述初始指令文件。
3.根据权利要求1所述的加速器,还包括控制模块,用于控制所述存储模块、PE运算模块、任务划分模块以及算法映射模块的操作,并用于生成所述存储模块、PE运算模块、任务划分模块以及算法映射模块之间的数据传输的路由信息。
4.根据权利要求1所述的加速器,所述SHA指令集还包含如下SHA专用指令格式:
Figure FDA0002515231340000011
该指令完成的功能是:(A>>x)^(B>>y)^(C>>z),其中,>>表示向右移位,^表示按位异或。
5.根据权利要求1所述的加速器,所述安全散列算法包括SHA1、SHA-224、SHA-256、SHA-384以及SHA-512。
6.根据权利要求1所述的加速器,所述算法映射模块用于根据需要使用的PE个数k以及每个PE单元映射的子任务数n计算每个任务的初始子任务计算节点对应的PE序号fi,计算每个任务的各个子任务对应的PE序号,以及根据每个子任务对应的PE序号将指令传输至相应PE;其中,k值由
Figure FDA0002515231340000012
确定,n由
Figure FDA0002515231340000021
确定,fi由i mod k确定,每个子任务对应的PE序号由fi+j/n确定,J表示每个计算任务被划分为J个子任务,K表示PE阵列有K个可用PE单元,i表示第i个任务,j表示第j个子任务,
Figure FDA0002515231340000022
表示向上取整。
7.根据权利要求1所述的加速器,所述任务划分模块用于读取PE阵列的配置信息,生成约束条件,根据约束条件计算划分的子任务数以及子任务的指令数阈值,根据计算得到的子任务数和子任务指令数阈值将初始指令文件划分为多个子任务文件。
8.根据权利要求7所述的加速器,所述任务划分模块还用于判断划分是否满足逻辑寄存器数量的约束,以及添加数据流流动指令后是否超过指令数阈值,如若不满足,则根据受限约束条件重新调整子任务数和子任务指令数阈值,对初始指令文件进行划分;如若满足,则根据该划分生成子任务之间的数据搬运指令,生成该计算任务的数据流图。
9.一种用于安全散列算法的系统,包括主机和权利要求1-8任一项所述的加速器,所述主机用于编写安全散列算法语言程序、启动加速器,将安全散列算法语言程序传输至所述加速器,以及接收加速器返回的计算结果。
10.一种基于权利要求9所述系统的加速安全散列算法的方法,包括:
步骤1,根据从主机端获得的SHA程序生成初始指令文件;
步骤2,将初始指令文件划分为多个子任务文件并生成数据流图;
步骤3,将数据流图映射到PE阵列,为每个子任务分配PE单元;
步骤4,启动PE阵列,执行计算子任务,并将结果返回主机端。
CN202010474004.9A 2020-05-29 2020-05-29 一种加速安全散列算法的加速器 Active CN111738703B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010474004.9A CN111738703B (zh) 2020-05-29 2020-05-29 一种加速安全散列算法的加速器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010474004.9A CN111738703B (zh) 2020-05-29 2020-05-29 一种加速安全散列算法的加速器

Publications (2)

Publication Number Publication Date
CN111738703A true CN111738703A (zh) 2020-10-02
CN111738703B CN111738703B (zh) 2023-06-02

Family

ID=72647937

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010474004.9A Active CN111738703B (zh) 2020-05-29 2020-05-29 一种加速安全散列算法的加速器

Country Status (1)

Country Link
CN (1) CN111738703B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112433914A (zh) * 2020-11-26 2021-03-02 成都海光集成电路设计有限公司 获取并行计算任务进度的方法及系统
CN113505383A (zh) * 2021-07-02 2021-10-15 中国科学院计算技术研究所 一种ecdsa算法执行系统及方法

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104216685A (zh) * 2013-06-02 2014-12-17 洛克泰克科技有限公司 依赖性问题的有效率的并行计算
CN105659222A (zh) * 2013-11-27 2016-06-08 英特尔公司 用于计算消息摘要的系统和方法
CN106383695A (zh) * 2016-09-14 2017-02-08 中国科学技术大学苏州研究院 基于fpga的聚类算法的加速系统及其设计方法
CN107835071A (zh) * 2017-11-03 2018-03-23 中国人民解放军国防科技大学 一种提高键入‑散列法运算速度的方法和装置
CN109144702A (zh) * 2018-09-06 2019-01-04 陈彦楠 一种用于行列并行粗粒度可重构阵列多目标优化自动映射调度方法
CN110034920A (zh) * 2019-04-09 2019-07-19 中国人民解放军战略支援部队信息工程大学 粗粒度可重构密码逻辑阵列的映射方法及装置
CN110890120A (zh) * 2019-10-21 2020-03-17 中国科学院计算技术研究所 基于阻变存储器的通用区块链应用处理加速方法及系统

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104216685A (zh) * 2013-06-02 2014-12-17 洛克泰克科技有限公司 依赖性问题的有效率的并行计算
CN105659222A (zh) * 2013-11-27 2016-06-08 英特尔公司 用于计算消息摘要的系统和方法
CN106383695A (zh) * 2016-09-14 2017-02-08 中国科学技术大学苏州研究院 基于fpga的聚类算法的加速系统及其设计方法
CN107835071A (zh) * 2017-11-03 2018-03-23 中国人民解放军国防科技大学 一种提高键入‑散列法运算速度的方法和装置
CN109144702A (zh) * 2018-09-06 2019-01-04 陈彦楠 一种用于行列并行粗粒度可重构阵列多目标优化自动映射调度方法
CN110034920A (zh) * 2019-04-09 2019-07-19 中国人民解放军战略支援部队信息工程大学 粗粒度可重构密码逻辑阵列的映射方法及装置
CN110890120A (zh) * 2019-10-21 2020-03-17 中国科学院计算技术研究所 基于阻变存储器的通用区块链应用处理加速方法及系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
曹丹等: ""一种面向无线安全的双核SOC平台"", 《武汉大学学报》 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112433914A (zh) * 2020-11-26 2021-03-02 成都海光集成电路设计有限公司 获取并行计算任务进度的方法及系统
CN112433914B (zh) * 2020-11-26 2023-06-13 成都海光集成电路设计有限公司 获取并行计算任务进度的方法及系统
CN113505383A (zh) * 2021-07-02 2021-10-15 中国科学院计算技术研究所 一种ecdsa算法执行系统及方法

Also Published As

Publication number Publication date
CN111738703B (zh) 2023-06-02

Similar Documents

Publication Publication Date Title
US10768989B2 (en) Virtual vector processing
CN106575215B (zh) 处理指令的系统、设备、方法、处理器、介质和电子设备
US5226131A (en) Sequencing and fan-out mechanism for causing a set of at least two sequential instructions to be performed in a dataflow processing computer
US20090172353A1 (en) System and method for architecture-adaptable automatic parallelization of computing code
EP0315647A1 (en) Dataflow processing element, multiprocessor, and processes
US9262243B2 (en) Analyzing update conditions for shared variable directory information in a parallel computer
KR19980703033A (ko) 프로세서
WO2007065308A1 (en) Speculative code motion for memory latency hiding
CN111738703B (zh) 一种加速安全散列算法的加速器
CN112559053B (zh) 可重构处理器数据同步处理方法及装置
Bhagyanath et al. Exploring the potential of instruction-level parallelism of exposed datapath architectures with buffered processing units
Bhagyanath et al. Exploring different execution paradigms in exposed datapath architectures with buffered processing units
Wang et al. HE-Booster: an efficient polynomial arithmetic acceleration on GPUs for fully homomorphic encryption
TW202217600A (zh) 向量運算裝置和方法
Bosselaers et al. SHA: a design for parallel architectures?
Hoefler et al. Group operation assembly language-a flexible way to express collective communication
CN116092587B (zh) 一种基于生产者-消费者模型的生物序列分析系统及方法
KR20060103965A (ko) 단일명령 복수데이터 관리를 위한 방법 및 컴퓨터 프로그램
US11853762B1 (en) Single instruction multiple data execution with variable size logical registers
Ruggiero Throttle Mechanisms for the Manchester Dataflow Machine
Janssen et al. A specification invariant technique for regularity improvement between flow-graph clusters
CN110704193A (zh) 一种适合向量处理的多核软件架构的实现方法及装置
Rafique et al. Generating efficient parallel code from the rvc-cal dataflow language
Zaki et al. Partial expansion graphs: Exposing parallelism and dynamic scheduling opportunities for DSP applications
Falcao et al. Heterogeneous implementation of a voronoi cell-based svp solver

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