CN213518334U - 执行哈希算法的电路、计算芯片和加密货币矿机 - Google Patents

执行哈希算法的电路、计算芯片和加密货币矿机 Download PDF

Info

Publication number
CN213518334U
CN213518334U CN202023083563.1U CN202023083563U CN213518334U CN 213518334 U CN213518334 U CN 213518334U CN 202023083563 U CN202023083563 U CN 202023083563U CN 213518334 U CN213518334 U CN 213518334U
Authority
CN
China
Prior art keywords
extension
register
stage
data
arithmetic
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
Application number
CN202023083563.1U
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.)
Shenzhen MicroBT Electronics Technology Co Ltd
Original Assignee
Shenzhen MicroBT Electronics Technology Co Ltd
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 Shenzhen MicroBT Electronics Technology Co Ltd filed Critical Shenzhen MicroBT Electronics Technology Co Ltd
Priority to CN202023083563.1U priority Critical patent/CN213518334U/zh
Application granted granted Critical
Publication of CN213518334U publication Critical patent/CN213518334U/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Advance Control (AREA)

Abstract

本公开涉及执行哈希算法的电路、计算芯片和加密货币矿机。一种电路包括:以流水线结构布置的多个运算级,各自包括第0至第15扩展寄存器;和多个扩展数据运算逻辑模块,各自设置在相邻运算级之间,并包括基于当前运算级的第2扩展寄存器的扩展数据计算用于后一运算级的第0扩展寄存器的扩展数据的第一子模块、基于当前运算级的第0和第14扩展寄存器的扩展数据计算用于后一运算级的第14扩展寄存器的扩展数据的第二子模块、基于当前运算级的第3扩展寄存器的扩展数据计算用于后一运算级的第1扩展寄存器的扩展数据的第三子模块和基于当前运算级的第1和第15扩展寄存器的扩展数据计算用于后一运算级的第15扩展寄存器的扩展数据的第四子模块。

Description

执行哈希算法的电路、计算芯片和加密货币矿机
技术领域
本公开总体而言涉及用于执行哈希算法的电路、计算芯片和加密货币矿机。
背景技术
比特币是一种P2P(Peer-to-Peer)形式的虚拟加密数字货币,其概念最初由中本聪在2008年11月1日提出,并于2009年1月3日正式诞生。比特币的独特之处在于,它不依靠特定货币机构发行,而是依据特定算法通过大量运算来产生。比特币交易使用整个P2P网络中众多节点构成的分布式数据库来确认并记录所有的交易行为,并使用密码学设计来确保安全性。从密码学的角度而言,比特币是基于SHA-256哈希算法的工作量证明POW(proof ofwork),其交易完整性取决于SHA-256的碰撞性和前映像阻力。哈希算法是一种将可变长度的数据作为输入并产生固定长度的哈希值作为输出的算法,其本质是对信息的提炼。自1993年以来,美国标准与技术研究所先后设计并发布了多个版本的安全哈希算法SHA(Secure Hash Algorithm),SHA-256正是其中一种哈希长度为256位的安全哈希算法。
使用矿机来进行比特币挖矿的核心是根据矿机计算SHA-256的运算能力来获得奖励。对于矿机而言,芯片尺寸、芯片运行速度和芯片功耗是决定矿机性能的至关重要的三个因素,其中,芯片尺寸决定芯片成本,芯片运行的速度决定矿机运行速度,即算力,芯片功耗决定耗电程度,即挖矿成本。在实际应用中,衡量矿机最为重要的性能指标是单位算力所消耗的功耗,即功耗算力比。为了提高安全性,在比特币协议中,要进行两次SHA-256。因此,对于比特币矿机而言,最重要的就是以较低的功耗算力比来实现哈希算法SHA-256。
实用新型内容
根据本公开的第一方面,提供了一种用于执行哈希算法的电路,包括:输入模块,被配置为接收数据;以及运算模块,被配置为基于接收到的数据计算哈希值,运算模块包括:以流水线结构布置的多个运算级,多个运算级中的每个运算级包括第0扩展寄存器至第15扩展寄存器,每个扩展寄存器被配置为存储当前运算级的扩展数据;以及多个扩展数据运算逻辑模块,每个扩展数据运算逻辑模块设置在多个运算级中的相应的相邻两个运算级之间,相邻两个运算级包括第一运算级和在第一运算级之后的第二运算级,每个扩展数据运算逻辑模块包括:第一子模块,被配置为基于第一运算级的第2扩展寄存器中存储的扩展数据计算用于存储到第二运算级的第0扩展寄存器中的扩展数据;第二子模块,被配置为基于第一运算级的第0扩展寄存器和第14扩展寄存器中存储的扩展数据计算用于存储到第二运算级的第14扩展寄存器中的扩展数据;第三子模块,被配置为基于第一运算级的第3扩展寄存器中存储的扩展数据计算用于存储到第二运算级的第1扩展寄存器中的扩展数据;以及第四子模块,被配置为基于第一运算级的第1扩展寄存器和第15扩展寄存器中存储的扩展数据计算用于存储到第二运算级的第15扩展寄存器中的扩展数据;其中,用于存储到第二运算级的第(i-2)扩展寄存器中的扩展数据是第一运算级的第i扩展寄存器中存储的扩展数据,其中4≤i≤15且i为整数。
根据本公开的第二方面,提供了一种用于执行哈希算法的电路,包括:输入模块,被配置为接收数据;以及运算模块,被配置为基于接收到的数据计算哈希值,运算模块包括:以流水线结构布置的多个运算级,多个运算级中的每个运算级包括第0扩展寄存器至第15扩展寄存器以及第一附加寄存器和第二附加寄存器,每个扩展寄存器被配置为存储当前运算级的扩展数据,每个附加寄存器被配置为存储用于计算扩展数据的中间数据;以及多个扩展数据运算逻辑模块,每个扩展数据运算逻辑模块设置在多个运算级中的相应的相邻两个运算级之间,相邻两个运算级包括第一运算级和在第一运算级之后的第二运算级,每个扩展数据运算逻辑模块包括:第一子模块,被配置为基于第一运算级的扩展寄存器中存储的扩展数据计算用于存储到第二运算级的第一附加寄存器中的中间数据;第二子模块,被配置为基于第一运算级的第一附加寄存器中存储的中间数据和第一运算级的第14扩展寄存器中存储的扩展数据计算用于存储到第二运算级的第14扩展寄存器中的扩展数据;第三子模块,被配置为基于第一运算级的扩展寄存器中存储的扩展数据计算用于存储到第二运算级的第二附加寄存器中的中间数据;以及第四子模块,被配置为基于第一运算级的第二附加寄存器中存储的中间数据和第一运算级的第15扩展寄存器中存储的扩展数据计算用于存储到第二运算级的第15扩展寄存器中的扩展数据;其中,用于存储到第二运算级的第(i-2)扩展寄存器中的扩展数据是第一运算级的第i扩展寄存器中存储的扩展数据,其中2≤i≤15且i为整数。
根据本公开的第三方面,提供了一种用于执行哈希算法的电路,包括:输入模块,被配置为接收数据;以及运算模块,被配置为基于接收到的数据计算哈希值,运算模块包括:以流水线结构布置的多个运算级,多个运算级中的每个运算级包括第0扩展寄存器至第15扩展寄存器以及第二附加寄存器,每个扩展寄存器被配置为存储当前运算级的扩展数据,第二附加寄存器被配置为存储用于计算扩展数据的中间数据;以及多个扩展数据运算逻辑模块,每个扩展数据运算逻辑模块设置在多个运算级中的相应的相邻两个运算级之间,相邻两个运算级包括第一运算级和在第一运算级之后的第二运算级,每个扩展数据运算逻辑模块包括:第一子模块,被配置为基于第一运算级的第2扩展寄存器中存储的扩展数据计算用于存储到第二运算级的第0扩展寄存器中的扩展数据;第二子模块,被配置为基于第一运算级的第0扩展寄存器和第14扩展寄存器中存储的扩展数据计算用于存储到第二运算级的第14扩展寄存器中的扩展数据;第三子模块,被配置为基于第一运算级的扩展寄存器中存储的扩展数据计算用于存储到第二运算级的第二附加寄存器中的中间数据;以及第四子模块,被配置为基于第一运算级的第二附加寄存器中存储的中间数据和第一运算级的第15扩展寄存器中存储的扩展数据计算用于存储到第二运算级的第15扩展寄存器中的扩展数据;其中,用于存储到第二运算级的第(i-2)扩展寄存器中的扩展数据是第一运算级的第i扩展寄存器中存储的扩展数据,其中3≤i≤15且i为整数。
根据本公开的第四方面,提供了一种用于执行哈希算法的电路,包括:输入模块,被配置为接收数据;以及运算模块,被配置为基于接收到的数据计算哈希值,运算模块包括:以流水线结构布置的多个运算级,多个运算级中的每个运算级包括第0扩展寄存器至第15扩展寄存器以及第一附加寄存器,每个扩展寄存器被配置为存储当前运算级的扩展数据,第一附加寄存器被配置为存储用于计算扩展数据的中间数据;以及多个扩展数据运算逻辑模块,每个扩展数据运算逻辑模块设置在多个运算级中的相应的相邻两个运算级之间,相邻两个运算级包括第一运算级和在第一运算级之后的第二运算级,每个扩展数据运算逻辑模块包括:第一子模块,被配置为基于第一运算级的扩展寄存器中存储的扩展数据计算用于存储到第二运算级的第一附加寄存器中的中间数据;第二子模块,被配置为基于第一运算级的第一附加寄存器中存储的中间数据和第一运算级的第14扩展寄存器中存储的扩展数据计算用于存储到第二运算级的第14扩展寄存器中的扩展数据;第三子模块,被配置为基于第一运算级的第3扩展寄存器中存储的扩展数据计算用于存储到第二运算级的第1扩展寄存器中的扩展数据;以及第四子模块,被配置为基于第一运算级的第1扩展寄存器和第15扩展寄存器中存储的扩展数据计算用于存储到第二运算级的第15扩展寄存器中的扩展数据;其中,用于存储到第二运算级的第(i-2)扩展寄存器中的扩展数据是第一运算级的第i扩展寄存器中存储的扩展数据,其中4≤i≤15且i为整数,并且用于存储到第二运算级的第0扩展寄存器中的扩展数据是第一运算级的第2扩展寄存器中存储的扩展数据。
根据本公开的第五方面,提供了一种计算芯片,其包括如以上方面所述的电路。
根据本公开的第六方面,提供了一种加密货币矿机,其包括一个或多个如以上方面所述的计算芯片。
通过以下参照附图对本公开的示例性实施例的详细描述,本公开的其它特征及其优点将会变得更为清楚。
附图说明
构成说明书的一部分的附图描述了本公开的实施例,并且连同说明书一起用于解释本公开的原理。
参照附图,根据下面的详细描述,可以更加清楚地理解本公开,其中:
图1示出了用于执行SHA-256算法的具有64个运算级的示例性流水线结构的示意图;
图2示意性示出了图1中的流水线结构中的相邻两个运算级的扩展寄存器中的扩展数据之间的常规运算逻辑;
图3示意性示出了在图1中的流水线结构被改造为具有32个运算级的情况下相邻两个运算级的扩展寄存器中的扩展数据之间的运算逻辑;
图4示出了根据本公开的一些实施例的用于执行哈希算法的电路的示意性框图;
图5至图7示意性示出了根据本公开的实施例的如图4所示的电路中包括扩展数据运算逻辑模块的部分的示例性配置;
图8示出了根据本公开的一些实施例的用于执行哈希算法的电路的示意性框图;
图9至图12示意性示出了根据本公开的实施例的如图8所示的电路中包括扩展数据运算逻辑模块的部分的示例性配置;
图13示出了根据本公开的一些实施例的用于执行哈希算法的电路的示意性框图;
图14和图15示意性示出了根据本公开的实施例的如图13所示的电路中包括扩展数据运算逻辑模块的部分的示例性配置;
图16示出了根据本公开的一些实施例的用于执行哈希算法的电路的示意性框图;
图17示意性示出了根据本公开的实施例的如图16所示的电路中包括扩展数据运算逻辑模块的部分的示例性配置;以及
图18至图21示出了根据本公开的实施例的用于计算扩展数据的方法的示例性流程图。
注意,在以下说明的实施方式中,有时在不同的附图之间共同使用同一附图标记来表示相同部分或具有相同功能的部分,而省略其重复说明。在本说明书中,使用相似的标号和字母表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
为了便于理解,在附图等中所示的各结构的位置、尺寸及范围等有时不表示实际的位置、尺寸及范围等。因此,所公开的实用新型并不限于附图等所公开的位置、尺寸及范围等。此外,附图不必按比例绘制,一些特征可能被放大以示出具体组件的细节。
具体实施方式
现在将参照附图来详细描述本公开的各种示例性实施例。应当注意,除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本公开的范围。
以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本公开及其应用或使用的任何限制。本领域的技术人员将会理解,它们仅仅说明可以用来实施本实用新型的示例性方式,而不是穷尽的方式。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为授权说明书的一部分。
为了更为清楚和直观地呈现本公开的构思,下文中将简要介绍SHA-256算法并以其作为哈希算法的代表示例来描述根据本公开的实施例的用于执行哈希算法的电路和相关方法。本领域技术人员将理解,根据本公开的实施例的用于执行哈希算法的电路和相关方法适用于任何哈希算法,甚至可以进一步应用到任何其它合适的电路和方法中,而不仅限于实现SHA-256算法。
图1示出了用于执行SHA-256算法的示例性流水线结构的示意图。SHA-256的输入是最大长度小于264位的数据,输出是256位的数据摘要,即哈希值。输入数据以512位的数据块为单位进行处理。为了实现SHA-256算法,需要对于每个512位的数据块要进行64轮重复运算,因此可以采用包括64个运算级的流水线结构来并行运算64组数据。如图1所示,该流水线结构包括第0运算级至第63运算级,每个运算级包括用于存储中间值的8个32位的压缩寄存器A至H以及用于存储扩展数据的16个32位的扩展寄存器R0至R15。第0运算级可以接收输入的数据块,并将其分成8个32位数据分别存入压缩寄存器A至H中,然后对其进行运算处理并提供给第1运算级。之后,每个运算级对其接收到的前一运算级的运算结果进行运算并将自己的运算结果提供给后一运算级。最终在经过64个运算级的运算后,运算核可以输出对输入数据执行过一次SHA-256算法的哈希运算结果。
下面详细讨论SHA-256在每个运算级上进行的一轮运算的内部逻辑。在第t运算级上进行的第t轮运算由如下的运算式定义(t为整数且满足0≤t≤63):
T1=H+∑1(E)+Ch(E,F,G)+Kt+Wt
T2=∑0(A)+Maj(A,B,C);
H=G;
G=F;
F=E;
E=D+T1;
D=C;
C=B;
B=A;
A=T1+T2; (运算式1)
其中:
Figure BDA0002845924890000051
Figure BDA0002845924890000052
Figure BDA0002845924890000053
Figure BDA0002845924890000061
其中,ROTRn(x)表示对32位的变量x循环右移n位;Wt为一个32位字,从当前的256位输入数据块导出;Kt为一个32位附加常数;+为模232加;AND为32位按位与运算;NOT是取反的操作;
Figure BDA0002845924890000062
为异或运算。
接下来描述32位的字Wt是如何从512位的数据块导出的。Wt可以按照以下运算式得出:
对于0≤t≤15:Wt直接取自输入的数据块;
对于16≤t≤63:
Wt=σ1(Wt-2)+Wt-70(Wt-15)+Wt-16 (运算式2)
其中:
Figure BDA0002845924890000063
Figure BDA0002845924890000064
其中,ROTRn(x)表示对32位的变量x循环右移n位;SHRn(x)表示对32位变量x向右移动n位,左边填充0;
Figure BDA0002845924890000065
为异或运算;+为模232加。在本文中可以将上述Wt称为W参数。
注意,以上∑0(x)、∑1(x)、σ0(x)、σ1(x)函数的公式是以SHA-256为示例给出的用于处理32位数据的具体形式,本领域技术人员知道在其它SHA算法(例如SHA-512等)乃至其它哈希算法中这些函数可以适应性地采用其它相应形式用于处理其它大小的数据(例如64位数据等)。
具体地,图2示出了图1中的流水线结构中的相邻两个运算级的扩展寄存器中的扩展数据之间的常规运算逻辑。需要使用每个运算级的扩展寄存器R0、R1、R9和R14中的扩展数据来计算要存储在后一运算级的扩展寄存器R15中的扩展数据,另外扩展寄存器R1到R15中的扩展数据可以直接移位至后一运算级的相应扩展寄存器R0到R14中。具体而言,第t+1运算级的扩展寄存器R15中的扩展数据w15′是通过三个加法器ADD1、ADD2、ADD3将第t运算级的扩展寄存器R0中的扩展数据w0、经σ0运算器进行σ0运算后的第t运算级的扩展寄存器R1中的扩展数据σ0(w1)、第t运算级的扩展寄存器R9中的扩展数据w9、经σ1运算器进行σ1运算后的第t运算级的扩展寄存器R14中的扩展数据σ1(w14)依次相加得到的,即w15′=w00(w1)+w91(w14)。
根据上述内部逻辑,SHA-256在每个运算级上进行的每轮运算需要计算出一个W参数,其随后在第t+16个运算级上进行的运算中参与计算用于存储到压缩存储器的中间值。但是,在一些场景中,可能需要使用两个W参数来计算中间值,因此每轮运算需要能够计算出两个W参数。
这样的场景的非限制性示例例如可以是用于执行SHA-256算法的具有32个运算级的流水线结构。图3示出了用于计算两个W参数的在第y运算级和第y+1运算级的扩展寄存器中的扩展数据之间的运算逻辑,其中0≤y≤31且y为整数。在图3中,用实线箭头指示用于计算第一W参数的数据移动方向,用点划线箭头指示用于计算第二W参数的数据移动方向,用点线指示直接移位而不经历运算的数据移动方向。如图3所示,第y+1运算级的扩展寄存器R14中的扩展数据w14′是通过三个加法器ADD11、ADD21、ADD31将第y运算级的扩展寄存器R0中的扩展数据w0、经σ01运算器进行σ0运算后的第y运算级的扩展寄存器R1中的扩展数据w1、第y运算级的扩展寄存器R9中的扩展数据w9、经σ11运算器进行σ1运算后的第y运算级的扩展寄存器R14中的扩展数据w14依次相加得到的,w14′=w00(w1)+w91(w14)。还如图3所示,第y+1运算级的扩展寄存器R15中的扩展数据w15′是通过三个加法器ADD12、ADD22、ADD32将第y运算级的扩展寄存器R1中的扩展数据w1、经σ02运算器进行σ0运算后的第y运算级的扩展寄存器R2中的扩展数据w2、第y运算级的扩展寄存器R10中的扩展数据w10、经σ12运算器进行σ1运算后的第y运算级的扩展寄存器R15中的扩展数据w15依次相加得到的,w15′=w10(w2)+w101(w15)。由此,这样一轮运算后可以计算出两个W参数(w14′和w15′)。另外,第y运算级的第2扩展寄存器至第15扩展寄存器中的每个扩展寄存器中存储的扩展数据直接移位到第y+1运算级的第0扩展寄存器至第13扩展寄存器中的相应扩展寄存器中。
通过图3所示的运算逻辑设计,每轮运算能够计算出两个W参数,并且这两个W参数的计算过程可以并行执行,即利用原来计算一个W参数所需要花费的时间可以得到两个W参数,由此可以提高流水线结构的运算吞吐率,进一步加快矿机的运算速度进而实现较低的功耗算力比。
然而,从第y运算级的扩展寄存器R0、R1、R9和R14中的扩展数据计算要存储在第y+1运算级的扩展寄存器R14中的扩展数据需要经历的运算逻辑级数包括4级。从第y运算级的扩展寄存器R1、R2、R10和R15中的扩展数据计算要存储在第y+1运算级的扩展寄存器R15中的扩展数据需要经历的运算逻辑级数包括4级。因而,即使并行处理这两个W参数的计算过程,需要经历的运算逻辑级数也高达4级,这带来了显著的计算延时,限制了流水线结构的运算速度,难以进一步实现更低的功耗算力比。
对此,本申请的发明人注意到,第y+1运算级的扩展寄存器R0与第y运算级的扩展寄存器R2二者之间存在直连关系,即第y运算级的扩展寄存器R2中存储的扩展数据被直接移位至第y+1运算级的扩展寄存器R0。因此,本申请的发明人想到,可以利用扩展寄存器R0与R2的这一直连关系,将用于计算第y+2运算级的扩展寄存器R14中要存储的扩展数据的过程中涉及第y+1运算级的扩展寄存器R0中的扩展数据(即第y运算级的扩展寄存器R2中的扩展数据)的部分提前到与用于计算第y+1运算级的扩展寄存器R14中要存储的扩展数据的过程同时进行,并存入第y+1运算级的扩展寄存器R0。这样,可以在将用于计算第y+2运算级的扩展寄存器R14中要存储的扩展数据的过程进行拆解后,将拆解出的部分与用于计算第y+1运算级的扩展寄存器R14中要存储的扩展数据的过程并行地处理。通过并行处理,可以减少每轮运算中计算扩展数据所需要经历的运算逻辑级数。
同样,本申请的发明人也注意到,第y+1运算级的扩展寄存器R1与第y运算级的扩展寄存器R3二者之间存在直连关系,即第y运算级的扩展寄存器R3中存储的扩展数据被直接移位至第y+1运算级的扩展寄存器R1。因此,本申请的发明人想到,可以利用扩展寄存器R1与R3的这一直连关系,将用于计算第y+2运算级的扩展寄存器R15中要存储的扩展数据的过程中涉及第y+1运算级的扩展寄存器R1中的扩展数据(即第y运算级的扩展寄存器R3中的扩展数据)的部分提前到与用于计算第y+1运算级的扩展寄存器R15中要存储的扩展数据的过程同时进行,并存入第y+1运算级的扩展寄存器R1。这样,可以在将用于计算第y+2运算级的扩展寄存器R15中要存储的扩展数据的过程进行拆解后,将拆解出的部分与用于计算第y+1运算级的扩展寄存器R15中要存储的扩展数据的过程并行地处理。通过并行处理,可以减少每轮运算中计算扩展数据所需要经历的运算逻辑级数。
因此,本公开提供了具有改进的扩展数据运算逻辑模块的用于执行哈希算法的电路以及改进的在用于执行哈希算法的电路中计算扩展数据的方法,其能够减少在相邻运算级之间基于前一运算级的扩展数据计算后一运算级的扩展数据所需要经历的运算逻辑级数,显著提高了电路进而包含该电路的计算芯片的运算速度,从而便于实现更低的功耗算力比。
图4示出了根据本公开的一些实施例的用于执行哈希算法的电路100的示意性框图,其中箭头表示数据传递方向。电路100可以包括输入模块110和运算模块120。输入模块110可以被配置为接收数据。运算模块120可以被配置为基于接收到的数据计算哈希值。运算模块120可以包括以流水线结构布置的多个运算级120-0、…、120-31,每个运算级可以包括第0扩展寄存器R0至第15扩展寄存器R15,每个扩展寄存器可以被配置为存储当前运算级的扩展数据。
应理解,虽然在附图中将运算模块120描绘为包括32个运算级,但是如前面已经提到的,本文仅仅以用于执行SHA-256算法的具有包括32个运算级的流水线结构的电路作为非限制性示例,本公开实际上可以适用于每轮运算需要提供两个W参数的任何合适场景,根据本公开的电路也可以适用于执行现在已知的或以后开发的适用于矿机的任何哈希算法(不限于SHA系列算法),并且可以包括任何合适数量的运算级。
还应理解的是,实际的电路还可以具有附加的其它部件(诸如压缩寄存器等),但是为了避免模糊本公开的要点,附图没有示出并且本文也没有去讨论这些其它部件。
通常,运算模块120的最前一个运算级120-0的第0扩展寄存器R0至第15扩展寄存器R15中存储的扩展数据例如可以直接取自由输入模块110接收的数据,而从运算级120-1开始的每个运算级的第0扩展寄存器R0至第15扩展寄存器R15中要存储的扩展数据例如可以基于前一运算级的第0扩展寄存器R0至第15扩展寄存器R15中存储的扩展数据确定。本公开主要讨论的是如何基于前一运算级的第0扩展寄存器R0至第15扩展寄存器R15中存储的扩展数据确定后一运算级的第0扩展寄存器R0至第15扩展寄存器R15中要存储的扩展数据。
运算模块120还可以包括多个扩展数据运算逻辑模块130,每个扩展数据运算逻辑模块130设置在运算模块120的多个运算级120-0、…、120-31中的相应的相邻两个运算级之间。在本文中,可以将相邻两个运算级中在前的运算级称为第一运算级并将相邻两个运算级中在后的运算级称为第二运算级,注意″第一″和″第二″仅是用于区分而非限制性的。例如,如图4所示,相邻两个运算级120-a、120-b之间设置有扩展数据运算逻辑模块130。每个扩展数据运算逻辑模块130可以包括第一子模块131、第二子模块132、第三子模块133和第四子模块134。
扩展数据运算逻辑模块130可以被配置用于基于第一运算级(例如,120-a)的扩展寄存器中存储的扩展数据计算用于存储到第二运算级(例如,120-b)的扩展寄存器中的扩展数据。第一子模块131可以被配置为基于第一运算级的第2扩展寄存器R2中存储的扩展数据计算用于存储到第二运算级的第0扩展寄存器R0中的扩展数据。第二子模块132可以被配置为基于第一运算级的第0扩展寄存器R0和第14扩展寄存器R14中存储的扩展数据计算用于存储到第二运算级的第14扩展寄存器R14中的扩展数据。第三子模块133可以被配置为基于第一运算级的第3扩展寄存器R3中存储的扩展数据计算用于存储到第二运算级的第1扩展寄存器R1中的扩展数据。第四子模块134可以被配置为基于第一运算级的第1扩展寄存器R1和第15扩展寄存器R15中存储的扩展数据计算用于存储到第二运算级的第15扩展寄存器R15中的扩展数据。另外,用于存储到第二运算级的第(i-2)扩展寄存器中的扩展数据可以是第一运算级的第i扩展寄存器中存储的扩展数据,其中4≤i≤15且i为整数。第一子模块131和第二子模块132可以用于计算第一W参数。第三子模块133和第四子模块134可以用于计算第二W参数。
第一子模块131和第二子模块132可以采用多种协作方式来计算扩展数据,从而提供第一W参数。
在一些实施例中,第一子模块131可以被配置为基于第一运算级的第2扩展寄存器R2、第3扩展寄存器R3、第11扩展寄存器R11中存储的扩展数据计算用于存储到第二运算级的第0扩展寄存器R0中的扩展数据,以及第二子模块132可以被配置为基于第一运算级的第0扩展寄存器R0和第14扩展寄存器R14中存储的扩展数据计算用于存储到第二运算级的第14扩展寄存器R14中的扩展数据。
在一些实施例中,第一子模块131可以被配置为基于第一运算级的第2扩展寄存器R2和第3扩展寄存器R3中存储的扩展数据计算用于存储到第二运算级的第0扩展寄存器R0中的扩展数据,以及第二子模块132可以被配置为基于第一运算级的第0扩展寄存器R0、第9扩展寄存器R9和第14扩展寄存器R14中存储的扩展数据计算用于存储到第二运算级的第14扩展寄存器R14中的扩展数据。
第三子模块133和第四子模块134可以采用多种协作方式来计算扩展数据,从而提供第二W参数。
在一些实施例中,第三子模块133可以被配置为基于第一运算级的第3扩展寄存器R3、第4扩展寄存器R4、第12扩展寄存器R12中存储的扩展数据计算用于存储到第二运算级的第1扩展寄存器R1中的扩展数据,以及第四子模块134可以被配置为基于第一运算级的第1扩展寄存器R1和第15扩展寄存器R15中存储的扩展数据计算用于存储到第二运算级的第15扩展寄存器R15中的扩展数据。
在一些实施例中,第三子模块133可以被配置为基于第一运算级的第3扩展寄存器R3和第4扩展寄存器R4中存储的扩展数据计算用于存储到第二运算级的第1扩展寄存器R1中的扩展数据,以及第四子模块134可以被配置为基于第一运算级的第1扩展寄存器R1、第10扩展寄存器R10和第15扩展寄存器R15中存储的扩展数据计算用于存储到第二运算级的第15扩展寄存器R15中的扩展数据。
在一些实施例中,第三子模块133被配置可以为基于第一运算级的第3扩展寄存器R3和第12扩展寄存器R12中存储的扩展数据计算用于存储到第二运算级的第1扩展寄存器R1中的扩展数据,以及第四子模块134可以被配置为基于第一运算级的第1扩展寄存器R1、第2扩展寄存器R2和第15扩展寄存器R15中存储的扩展数据计算用于存储到第二运算级的第15扩展寄存器R15中的扩展数据。
根据本公开的实施例的第一子模块131和第二子模块132的任一协作方式与第三子模块133和第四子模块134的任一协作方式可以自由组合,从而提供第一W参数和第二W参数。
下面结合图5至图7描述根据本公开的实施例的如图4所示的电路100中包括扩展数据运算逻辑模块的部分的几种非限制性示例配置,其示出了第一子模块131和第二子模块132的协作方式与第三子模块133和第四子模块134的协作方式的几种非限制性示例组合。在这些图中,以相邻两个运算级120-a和120-b为例进行说明,可以理解,在运算模块120中的任意相邻两个运算级都可以是以下讨论的运算级120-a和120-b。另外,在这些图中,为了清楚起见,用点线箭头指示直接移位而不经过运算的扩展数据的移动方向,用实线箭头指示经由第一子模块131和第二子模块132处理的扩展数据的移动方向,用点划线箭头指示经由第三子模块133和第四子模块134处理的扩展数据的移动方向,第一子模块至第四子模块131-134的示意性框图在下方另行给出。
在如图5所示的示例中,运算级120-b的第0扩展寄存器R0中的扩展数据w0′是通过由第一子模块131处理运算级120-a的第2扩展寄存器R2中存储的扩展数据w2、第3扩展寄存器R3中存储的扩展数据w3和第11扩展寄存器R11中存储的扩展数据w11得到的。具体地,在这个示例中,第一子模块131包括用于执行σ0运算的σ01运算器和用于执行加法运算的全加器FAA1和加法器ADD1,其中扩展数据w3被输入到σ01运算器,σ01运算器的输出、扩展数据w2和扩展数据w11被输入到全加器FAA1,全加器FAA1的输出被输入到加法器ADD1,加法器ADD1的输出被提供给运算级120-b的第0扩展寄存器R0,使得w0′=w20(w3)+w11
进一步如图5所示,运算级120-b的第14扩展寄存器R14中的扩展数据w14′是通过由第二子模块132处理运算级120-a的第0扩展寄存器R0中存储的扩展数据w0和第14扩展寄存器R14中存储的扩展数据w14得到的。具体地,在这个示例中,第二子模块132包括用于执行σ1运算的σ11运算器以及用于执行加法运算的加法器ADD2,其中扩展数据w14被输入到σ11运算器,σ11运算器的输出和扩展数据w0被输入到加法器ADD2,加法器ADD2的输出被提供给运算级120-b的第14扩展寄存器R14,使得w14′=w01(w14)。
进一步如图5所示,运算级120-b的第1扩展寄存器R1中的扩展数据w1′是通过由第三子模块133处理运算级120-a的第3扩展寄存器R3中存储的扩展数据w3、第4扩展寄存器R4中存储的扩展数据w4和第12扩展寄存器R12中存储的扩展数据w12得到的。具体地,在这个示例中,第三子模块133包括用于执行σ0运算的σ02运算器以及用于执行加法运算的全加器FAA2和加法器ADD3,其中扩展数据w4被输入到σ02运算器,σ02运算器的输出、扩展数据w3和扩展数据w12被输入到全加器FAA2,全加器FAA2的输出被输入到加法器ADD3,加法器ADD3的输出被提供给运算级120-b的第1扩展寄存器R1,使得w1′=w30(w4)+w12
进一步如图5所示,运算级120-b的第15扩展寄存器R15中的扩展数据w15′是通过由第四子模块134处理运算级120-a的第1扩展寄存器R1中存储的扩展数据w1和第15扩展寄存器R15中存储的扩展数据w15得到的。具体地,在这个示例中,第四子模块134包括用于执行σ1运算的σ12运算器以及用于执行加法运算的加法器ADD4,其中扩展数据w15被输入到σ12运算器,σ12运算器的输出和扩展数据w1被输入到加法器ADD4,加法器ADD4的输出被提供给运算级120-b的第15扩展寄存器R15,使得w15′=w11(w15)。
进一步如图5所示,运算级120-a的第i扩展寄存器中存储的扩展数据被直接移位到运算级120-b的第(i-2)扩展寄存器中,其中4≤i≤15且i为整数。
在图5所示的示例中,第一子模块131所经历的运算逻辑级数为3级,第二子模块132所经历的运算逻辑级数为2级,第三子模块133所经历的运算逻辑级数为3级,第四子模块134所经历的运算逻辑级数为2级。四个子模块可以彼此独立地并行操作,使得最终计算用于运算级120-b的扩展数据所需要经历的运算逻辑级数减少至3级,大大降低了计算延时,使得流水线结构的运算速度得到大幅提升。
在如图6所示的示例中,运算级120-b的第0扩展寄存器R0中的扩展数据w0′是通过由第一子模块131处理运算级120-a的第2扩展寄存器R2中存储的扩展数据w2和第3扩展寄存器R3中存储的扩展数据w3得到的。具体地,在这个示例中,第一子模块131包括σ01运算器和加法器ADD1,其中扩展数据w3被输入到σ01运算器,σ01运算器的输出和扩展数据w2被输入到加法器ADD1,加法器ADD1的输出被提供给运算级120-b的第0扩展寄存器R0,使得w0′=w20(w3)。
进一步如图6所示,运算级120-b的第14扩展寄存器R14中的扩展数据w14′是通过由第二子模块132处理运算级120-a的第0扩展寄存器R0中存储的扩展数据w0、第9扩展寄存器R9中存储的扩展数据w9和第14扩展寄存器R14中存储的扩展数据w14得到的。具体地,在这个示例中,第二子模块132包括σ11运算器、全加器FAA1和加法器ADD2,其中扩展数据w14被输入到σ11运算器,σ11运算器的输出、扩展数据w0和扩展数据w9被输入到全加器FAA1,全加器FAA1的输出被输入到加法器ADD2,加法器ADD2的输出被提供给运算级120-b的第14扩展寄存器R14,使得w14′=w0+w91(w14)。
进一步如图6所示,运算级120-b的第1扩展寄存器R1中的扩展数据w1′是通过由第三子模块133处理运算级120-a的第3扩展寄存器R3中存储的扩展数据w3和第4扩展寄存器R4中存储的扩展数据w4得到的。具体地,在这个示例中,第三子模块133包括σ02运算器和加法器ADD3,其中扩展数据w4被输入到σ02运算器,σ02运算器的输出和扩展数据w3被输入到加法器ADD3,加法器ADD3的输出被提供给运算级120-b的第1扩展寄存器R1,使得w1′=w30(w4)。
进一步如图6所示,运算级120-b的第15扩展寄存器R15中的扩展数据w15′是通过由第四子模块134处理运算级120-a的第1扩展寄存器R1中存储的扩展数据w1、第10扩展寄存器R10中存储的扩展数据w10和第15扩展寄存器R15中存储的扩展数据w15得到的。具体地,在这个示例中,第四子模块134包括σ12运算器、全加器FAA2和加法器ADD4,其中扩展数据w15被输入到σ12运算器,σ12运算器的输出、扩展数据w1和扩展数据w10被输入到全加器FAA2,全加器FAA2的输出被输入到加法器ADD4,加法器ADD4的输出被提供给运算级120-b的第15扩展寄存器R15,使得w15′=w1+w101(w15)。
进一步如图6所示,运算级120-a的第i扩展寄存器中存储的扩展数据被直接移位到运算级120-b的第(i-2)扩展寄存器中,其中4≤i≤15且i为整数。
在图6所示的示例中,第一子模块131所经历的运算逻辑级数为2级,第二子模块132所经历的运算逻辑级数为3级,第三子模块133所经历的运算逻辑级数为2级,第四子模块134所经历的运算逻辑级数为3级。四个子模块可以彼此独立地并行操作,使得最终计算用于运算级120-b的扩展数据所需要经历的运算逻辑级数减少至3级,大大降低了计算延时,使得流水线结构的运算速度得到大幅提升。
在如图7所示的示例中,第一子模块131和第二子模块132的协作方式与图6所示的示例相同,并且运算级120-a的第i扩展寄存器中存储的扩展数据被直接移位到运算级120-b的第(i-2)扩展寄存器中,其中4≤i≤15且i为整数。
进一步如图7所示,运算级120-b的第1扩展寄存器R1中的扩展数据w1′是通过由第三子模块133处理运算级120-a的第3扩展寄存器R3中存储的扩展数据w3和第12扩展寄存器R12中存储的扩展数据w12得到的。具体地,在这个示例中,第三子模块133包括加法器ADD3,其中扩展数据w3和w12被输入到加法器ADD3,加法器ADD3的输出被提供给运算级120-b的第1扩展寄存器R1,使得w1′=w3+w12
进一步如图7所示,运算级120-b的第15扩展寄存器R15中的扩展数据w15′是通过由第四子模块134处理运算级120-a的第1扩展寄存器R1中存储的扩展数据w1、第2扩展寄存器R2中存储的扩展数据w2和第15扩展寄存器R15中存储的扩展数据w15得到的。具体地,在这个示例中,第四子模块134包括σ02运算器、σ12运算器、全加器FAA2和加法器ADD4,其中扩展数据w2被输入到σ02运算器,扩展数据w15被输入到σ12运算器,σ0运算与σ1运算可以同时进行。然后σ02运算器的输出、σ12运算器的输出和扩展数据w1被输入到全加器FAA2,全加器FAA2的输出被输入到加法器ADD4,加法器ADD4的输出被提供给运算级120-b的第15扩展寄存器R15,使得w15′=w10(w2)+σ1(w15)。
在图7所示的示例中,第一子模块131所经历的运算逻辑级数为2级,第二子模块132所经历的运算逻辑级数为3级,第三子模块133所经历的运算逻辑级数为1级,第四子模块134所经历的运算逻辑级数为3级。四个子模块可以彼此独立地并行操作,使得最终计算用于运算级120-b的扩展数据所需要经历的运算逻辑级数减少至3级,大大降低了计算延时,使得流水线结构的运算速度得到大幅提升。
相应地,本公开也提供了在用于执行哈希算法的电路中计算扩展数据的方法。图18示出了根据本公开的实施例的在用于执行哈希算法的电路中计算扩展数据的方法500的示例性流程图。这样的电路可以包括被配置为接收数据的输入模块和被配置为基于接收到的数据计算哈希值的运算模块,其中运算模块可以包括以流水线结构布置的多个运算级,每个运算级包括第0扩展寄存器至第15扩展寄存器,每个扩展寄存器可以被配置为存储当前运算级的扩展数据。对于运算模块的多个运算级中的包括第一运算级和在第一运算级之后的第二运算级的相邻两个运算级,方法500可以包括:在S501处,基于第一运算级的第2扩展寄存器中存储的扩展数据计算用于存储到第二运算级的第0扩展寄存器中的扩展数据;在S502处,基于第一运算级的第0扩展寄存器和第14扩展寄存器中存储的扩展数据计算用于存储到第二运算级的第14扩展寄存器中的扩展数据;在S503处,基于第一运算级的第3扩展寄存器中存储的扩展数据计算用于存储到第二运算级的第1扩展寄存器中的扩展数据;在S504处,基于第一运算级的第1扩展寄存器和第15扩展寄存器中存储的扩展数据计算用于存储到第二运算级的第15扩展寄存器中的扩展数据;在S505处,将第一运算级的第i扩展寄存器中存储的扩展数据作为用于存储到第二运算级的第(i-2)扩展寄存器中的扩展数据,其中4≤i≤15且i为整数。注意,S501-S505并不需要以顺序次序执行,而是可以以任何次序执行,或者可以至少部分地并行执行。
方法500还可以采用与根据以上描述的实施例的子模块之间的各种协作方式的各种组合类似的方式来计算扩展数据,在此不再赘述。方法500可以减少在用于执行哈希算法的电路中计算扩展数据导致的计算延时,从而大幅提高电路进而包含该电路的计算芯片的运算速度,从而实现更低的功耗算力比。
此外,在根据本公开的上述实施例的电路和方法中,使用扩展寄存器R0、R1来存储提前进行的在原本用于计算后续运算级的扩展寄存器R14、R15中要存储的扩展数据的过程中涉及先前运算级的扩展寄存器R2、R3中的扩展数据的部分。在一些替代实施例中,也可以使用附加的寄存器来替代地实现扩展寄存器R0、R1在上述实施例中所起到的作用。而且,当使用附加的寄存器时,不仅可以用于提前进行在原本用于计算后续运算级的扩展寄存器R14、R15中要存储的扩展数据的过程中涉及先前运算级的扩展寄存器R0、R1中的扩展数据的部分,而且可以提前进行在原本用于计算后续运算级的扩展寄存器R14、R15中要存储的扩展数据的过程的任何合适部分。
图8示出了根据本公开的另外一些实施例的用于执行哈希算法的电路200的示意性框图。其中箭头表示数据传递方向。电路200可以包括输入模块210和运算模块220。输入模块210可以被配置为接收数据。运算模块220可以被配置为基于接收到的数据计算哈希值。运算模块220可以包括以流水线结构布置的多个运算级220-0、…、220-31,每个运算级可以包括第0扩展寄存器R0至第15扩展寄存器R15以及第一附加寄存器X1和第二附加寄存器X2。每个扩展寄存器可以被配置为存储当前运算级的扩展数据,每个附加寄存器可以被配置为存储用于计算扩展数据的中间数据。在一些实施例中,在最前一个运算级220-0中,第一附加寄存器X1中的中间数据可以与第0扩展寄存器R0中的扩展数据相同,第二附加寄存器X2中的中间数据可以与第1扩展寄存器R1中的扩展数据相同。
运算模块220还可以包括多个扩展数据运算逻辑模块230,每个扩展数据运算逻辑模块230设置在运算模块220的多个运算级220-0、…、220-31中的相应的相邻两个运算级之间。在本文中,可以将相邻两个运算级中在前的运算级称为第一运算级并将相邻两个运算级中在后的运算级称为第二运算级,注意″第一″和″第二″仅是用于区分而非限制性的。例如,如图8所示,相邻两个运算级220-a、220-b之间设置有扩展数据运算逻辑模块230。每个扩展数据运算逻辑模块230可以包括第一子模块231、第二子模块232、第三子模块233和第四子模块234。
第一子模块231可以被配置为基于第一运算级的扩展寄存器中存储的扩展数据计算用于存储到第二运算级的第一附加寄存器X1中的中间数据。第二子模块232可以被配置为基于第一运算级的第一附加寄存器X1中存储的中间数据和第14扩展寄存器R14中存储的扩展数据计算用于存储到第二运算级的第14扩展寄存器R14中的扩展数据。第三子模块233可以被配置为基于第一运算级的扩展寄存器中存储的扩展数据计算用于存储到第二运算级的第二附加寄存器X2中的中间数据。第四子模块234可以被配置为基于第一运算级的第二附加寄存器X2中存储的中间数据和第15扩展寄存器R15中存储的扩展数据计算用于存储到第二运算级的第15扩展寄存器R15中的扩展数据。另外,用于存储到第二运算级的第(i-2)扩展寄存器中的扩展数据可以是第一运算级的第i扩展寄存器中存储的扩展数据,其中2≤i≤15且i为整数。第一子模块231和第二子模块232可以用于计算第一W参数。第三子模块233和第四子模块234可以用于计算第二W参数。
在一些实施例中,第一子模块231可以被配置为基于第一运算级的第2扩展寄存器R2、第3扩展寄存器R3和第11扩展寄存器R11中的两者或三者中存储的扩展数据计算用于存储到第二运算级的第一附加寄存器X1中的中间数据。
在一些实施例中,第二子模块232可以被配置为基于第一运算级的第0扩展寄存器R0、第1扩展寄存器R1和第9扩展寄存器R9中的一者中存储的扩展数据以及第一运算级的第一附加寄存器X1中存储的中间数据和第14扩展寄存器R14中存储的扩展数据计算用于存储到第二运算级的第14扩展寄存器R14中的扩展数据。
在一些实施例中,第三子模块233可以被配置为基于第一运算级的第3扩展寄存器R3、第4扩展寄存器R4和第12扩展寄存器R12中的两者或三者中存储的扩展数据计算用于存储到第二运算级的第二附加寄存器X2中的中间数据。
在一些实施例中,第四子模块234可以被配置为基于第一运算级的第1扩展寄存器R1、第2扩展寄存器R2和第10扩展寄存器R10中的一者中存储的扩展数据以及第一运算级的第二附加寄存器X2中存储的中间数据和第15扩展寄存器R15中存储的扩展数据计算用于存储到第二运算级的第15扩展寄存器R15中的扩展数据。第一子模块231和第二子模块232可以采用多种协作方式来计算扩展数据,从而提供第一W参数。
在一些实施例中,第一子模块231可以被配置为基于第一运算级的第2扩展寄存器R2、第3扩展寄存器R3、第11扩展寄存器R11中存储的扩展数据计算用于存储到第二运算级的第一附加寄存器X1中的中间数据,以及第二子模块232可以被配置为基于第一运算级的第一附加寄存器X1中存储的中间数据和第一运算级的第14扩展寄存器R14中存储的扩展数据计算用于存储到第二运算级的第14扩展寄存器R14中的扩展数据。
在一些实施例中,第一子模块231可以被配置为基于第一运算级的第2扩展寄存器R2和第3扩展寄存器R3中存储的扩展数据计算用于存储到第二运算级的第一附加寄存器X1中的中间数据,以及第二子模块234可以被配置为基于第一运算级的第一附加寄存器X1中存储的中间数据以及第一运算级的第9扩展寄存器R9和第14扩展寄存器R14中存储的扩展数据计算用于存储到第二运算级的第14扩展寄存器R14中的扩展数据。
在一些实施例中,第一子模块231可以被配置为基于第一运算级的第2扩展寄存器R2和第11扩展寄存器R11中存储的扩展数据计算用于存储到第二运算级的第一附加寄存器X1中的中间数据,以及第二子模块234可以被配置为基于第一运算级的第一附加寄存器X1中存储的中间数据以及第1扩展寄存器R1和第14扩展寄存器R14中存储的扩展数据计算用于存储到第二运算级的第14扩展寄存器R14中的扩展数据。
在一些实施例中,第一子模块231可以被配置为基于第一运算级的第3扩展寄存器R3和第11扩展寄存器R11中存储的扩展数据计算用于存储到第二运算级的第一附加寄存器X1中的中间数据,以及第二子模块232可以被配置为基于第一运算级的第一附加寄存器X1中存储的中间数据以及第一运算级的第0扩展寄存器R0和第14扩展寄存器R14中存储的扩展数据计算用于存储到第二运算级的第14扩展寄存器R14中的扩展数据。
第三子模块233和第四子模块234可以采用多种协作方式来计算扩展数据,从而提供第二W参数。
在一些实施例中,第三子模块233可以被配置为基于第一运算级的第3扩展寄存器R3、第4扩展寄存器R4、第12扩展寄存器R12中存储的扩展数据计算用于存储到第二运算级的第二附加寄存器X2中的中间数据,以及第四子模块234可以被配置为基于第一运算级的第二附加寄存器X2中存储的中间数据和第一运算级的第15扩展寄存器R15中存储的扩展数据计算用于存储到第二运算级的第15扩展寄存器R15中的扩展数据。
在一些实施例中,第三子模块233可以被配置为基于第一运算级的第3扩展寄存器R3和第4扩展寄存器R4中存储的扩展数据计算用于存储到第二运算级的第二附加寄存器X2中的中间数据,以及第四子模块234可以被配置为基于第一运算级的第二附加寄存器X2中存储的中间数据以及第一运算级的第10扩展寄存器R10和第15扩展寄存器R15中存储的扩展数据计算用于存储到第二运算级的第15扩展寄存器R15中的扩展数据。
在一些实施例中,第三子模块233被配置可以为基于第一运算级的第3扩展寄存器R3和第12扩展寄存器R12中存储的扩展数据计算用于存储到第二运算级的第二附加寄存器X2中的中间数据,以及第四子模块234可以被配置为基于第一运算级的第二附加寄存器X2中存储的中间数据以及第2扩展寄存器R2和第15扩展寄存器R15中存储的扩展数据计算用于存储到第二运算级的第15扩展寄存器R15中的扩展数据。
在一些实施例中,第三子模块233可以被配置为基于第一运算级的第4扩展寄存器R4和第12扩展寄存器R12中存储的扩展数据计算用于存储到第二运算级的第二附加寄存器X2中的中间数据,以及第四子模块234可以被配置为基于第一运算级的第二附加寄存器X2中存储的中间数据以及第一运算级的第1扩展寄存器R1和第15扩展寄存器R15中存储的扩展数据计算用于存储到第二运算级的第15扩展寄存器R15中的扩展数据。
根据本公开的实施例的第一子模块231和第二子模块232的任一协作方式与第三子模块233和第四子模块234的任一协作方式可以自由组合,从而提供第一W参数和第二W参数。
下面结合图9至图12描述根据本公开的实施例的如图8所示的电路200中包括扩展数据运算逻辑模块的部分的几种非限制性示例配置,其示出了第一子模块231和第二子模块232的协作方式与第三子模块233和第四子模块234的协作方式的几种非限制性示例组合。在这些图中,以相邻两个运算级220-a和220-b为例进行说明,可以理解,在运算模块220中的任意相邻两个运算级都可以是以下讨论的运算级220-a和220-b。另外,在这些图中,为了清楚起见,用点线箭头指示直接移位而不经过运算的扩展数据的移动方向,用实线箭头指示经由第一子模块231和第二子模块232处理的扩展数据的移动方向,用点划线箭头指示经由第三子模块233和第四子模块234处理的扩展数据的移动方向,第一子模块至第四子模块231-234的示意性框图在下方另行给出。
在如图9所示的示例中,运算级220-b的第一附加寄存器X1中的中间数据wx1′是通过由第一子模块231处理运算级220-a的第2扩展寄存器R2中存储的扩展数据w2、第3扩展寄存器R3中存储的扩展数据w3和第11扩展寄存器R11中存储的扩展数据w11得到的。具体地,在这个示例中,第一子模块231包括σ01运算器、全加器FAA1和加法器ADD1,其中扩展数据w3被输入到σ01运算器,σ01运算器的输出、扩展数据w2和扩展数据w11被输入到全加器FAA1,全加器FAA1的输出被输入到加法器ADD1,加法器ADD1的输出被提供给运算级220-b的第一附加寄存器X1,使得wx1′=w20(w3)+w11
进一步如图9所示,运算级220-b的第14扩展寄存器R14中的扩展数据w14′是通过由第二子模块232处理运算级220-a的第一附加寄存器X1中存储的中间数据wx1和运算级220-a的第14扩展寄存器R14中存储的扩展数据w14得到的。具体地,在这个示例中,第二子模块232包括σ11运算器和加法器ADD2,其中扩展数据w14被输入到σ11运算器,σ11运算器的输出和中间数据wx1被输入到加法器ADD2,加法器ADD2的输出被提供给运算级220-b的第14扩展寄存器R14,使得w14′=wx11(w14)。
进一步如图9所示,运算级220-b的第二附加寄存器X2中的中间数据wx2′是通过由第三子模块233处理运算级220-a的第3扩展寄存器R3中存储的扩展数据w3、第4扩展寄存器R4中存储的扩展数据w4和第12扩展寄存器R12中存储的扩展数据w12得到的。具体地,在这个示例中,第三子模块233包括σ02运算器、全加器FAA2和加法器ADD3,其中扩展数据w4被输入到σ02运算器,σ02运算器的输出、扩展数据w3和扩展数据w12被输入到全加器FAA2,全加器FAA2的输出被输入到加法器ADD3,加法器ADD3的输出被提供给运算级220-b的第二附加寄存器X2,使得wx2′=w30(w4)+w12
进一步如图9所示,运算级220-b的第15扩展寄存器R15中的扩展数据w15′是通过由第四子模块234处理运算级220-a的第二附加寄存器X2中存储的中间数据wx2和运算级220-a的第15扩展寄存器R15中存储的扩展数据w15得到的。具体地,在这个示例中,第四子模块234包括σ12运算器和加法器ADD4,其中扩展数据w15被输入到σ12运算器,σ12运算器的输出和中间数据wx2被输入到加法器ADD4,加法器ADD4的输出被提供给运算级220-b的第15扩展寄存器R15,使得w15′=wx21(w15)。
进一步如图9所示,运算级220-a的第i扩展寄存器中存储的扩展数据被直接移位到运算级220-b的第(i-2)扩展寄存器中,其中2≤i≤15且i为整数。
在图9所示的示例中,第一子模块231所经历的运算逻辑级数为3级,第二子模块232所经历的运算逻辑级数为2级,第三子模块233所经历的运算逻辑级数为3级,第四子模块234所经历的运算逻辑级数为2级。四个子模块可以彼此独立地并行操作,使得最终计算用于运算级220-b的扩展数据所需要经历的运算逻辑级数减少至3级,大大降低了计算延时,使得流水线结构的运算速度得到大幅提升。
在如图10所示的示例中,运算级220-b的第一附加寄存器X1中的中间数据wx1′是通过由第一子模块231处理运算级220-a的第2扩展寄存器R2中存储的扩展数据w2和第3扩展寄存器R3中存储的扩展数据w3得到的。具体地,在这个示例中,第一子模块231包括σ01运算器和加法器ADD1,其中扩展数据w3被输入到σ01运算器,σ01运算器的输出和扩展数据w2被输入到加法器ADD1,加法器ADD1的输出被提供给运算级220-b的第一附加寄存器X1,使得wx1′=w20(w3)。
进一步如图10所示,运算级220-b的第14扩展寄存器R14中的扩展数据w14′是通过由第二子模块232处理运算级220-a的第一附加寄存器X1中存储的中间数据wx1、第9扩展寄存器R9中存储的扩展数据w9和第14扩展寄存器R14中存储的扩展数据w14得到的。具体地,在这个示例中,第二子模块232包括σ11运算器、全加器FAA1和加法器ADD2,其中扩展数据w14被输入到σ11运算器,σ11运算器的输出、中间数据wx1和扩展数据w9被输入到全加器FAA1,全加器FAA1的输出被输入到加法器ADD2,加法器ADD2的输出被提供给运算级220-b的第14扩展寄存器R14,使得w14′=wx1+w91(w14)。
进一步如图10所示,运算级220-b的第二附加寄存器X2中的中间数据wx2′是通过由第三子模块233处理运算级220-a的第3扩展寄存器R3中存储的扩展数据w3和第4扩展寄存器R4中存储的扩展数据w4得到的。具体地,在这个示例中,第三子模块233包括σ02运算器和加法器ADD3,其中扩展数据w4被输入到σ02运算器,σ02运算器的输出和扩展数据w3被输入到加法器ADD3,加法器ADD3的输出被提供给运算级220-b的第二附加寄存器X2,使得wx2′=w3+σ0(w4)。
进一步如图10所示,运算级220-b的第15扩展寄存器R15中的扩展数据w15′是通过由第四子模块234处理运算级220-a的第二附加寄存器X2中存储的中间数据wx2、第10扩展寄存器R10中存储的扩展数据w10和第15扩展寄存器R15中存储的扩展数据w15得到的。具体地,在这个示例中,第四子模块234包括σ12运算器、全加器FAA2和加法器ADD4,其中扩展数据w15被输入到σ12运算器,σ12运算器的输出、中间数据wx2和扩展数据w10被输入到全加器FAA2,全加器FAA2的输出被输入到加法器ADD4,加法器ADD4的输出被提供给运算级220-b的第15扩展寄存器R15,使得w15′=wx2+w101(w15)。
进一步如图10所示,运算级220-a的第i扩展寄存器中存储的扩展数据被直接移位到运算级220-b的第(i-2)扩展寄存器中,其中2≤i≤15且i为整数。
在图10所示的示例中,第一子模块231所经历的运算逻辑级数为2级,第二子模块232所经历的运算逻辑级数为3级,第三子模块233所经历的运算逻辑级数为2级,第四子模块234所经历的运算逻辑级数为3级。四个子模块可以彼此独立地并行操作,使得最终计算用于运算级220-b的扩展数据所需要经历的运算逻辑级数减少至3级,大大降低了计算延时,使得流水线结构的运算速度得到大幅提升。
在如图11所示的示例中,运算级220-b的第一附加寄存器X1中的中间数据wx1′是通过由第一子模块231处理运算级220-a的第2扩展寄存器R2中存储的扩展数据w2和第11扩展寄存器R11中存储的扩展数据w11得到的。具体地,在这个示例中,第一子模块231包括加法器ADD1,其中扩展数据w2和w11被输入到加法器ADD1,加法器ADD1的输出被提供给运算级220-b的第一附加寄存器X1,使得wx1′=w2+w11。
进一步如图11所示,运算级220-b的第14扩展寄存器R14中的扩展数据w14′是通过由第二子模块232处理运算级220-a的第一附加寄存器X1中存储的中间数据wx1、第1扩展寄存器R1中存储的扩展数据w1和第14扩展寄存器R14中存储的扩展数据w14得到的。具体地,在这个示例中,第二子模块232包括σ01运算器、σ11运算器、全加器FAA1和加法器ADD2。扩展数据w1被输入到σ01运算器,扩展数据w14被输入到σ11运算器,σ0运算和σ1运算可以同时进行。然后,σ01运算器的输出、σ11运算器的输出和中间数据wx1被输入到全加器FAA1,全加器FAA1的输出被输入到加法器ADD2,加法器ADD2的输出被提供给运算级220-b的第14扩展寄存器R14,使得w14′=wx10(w1)+σ1(w14)。
进一步如图11所示,运算级220-b的第二附加寄存器X2中的中间数据wx2′是通过由第三子模块233处理运算级220-a的第3扩展寄存器R3中存储的扩展数据w3和第12扩展寄存器R12中存储的扩展数据w12得到的。具体地,在这个示例中,第三子模块233包括加法器ADD3,其中扩展数据w3和w12被输入到加法器ADD3,加法器ADD3的输出被提供给运算级220-b的第二附加寄存器X2,使得wx2′=w3+w12。
进一步如图11所示,运算级220-b的第15扩展寄存器R15中的扩展数据w15′是通过由第四子模块234处理运算级220-a的第二附加寄存器X2中存储的中间数据wx2、第2扩展寄存器R2中存储的扩展数据w2和第15扩展寄存器R15中存储的扩展数据w15得到的。具体地,在这个示例中,第四子模块234包括σ02运算器、σ12运算器、全加器FAA2和加法器ADD4,其中扩展数据w2被输入到σ02运算器,扩展数据w15被输入到σ12运算器,σ0运算与σ1运算可以同时进行。然后σ02运算器的输出、σ12运算器的输出和中间数据wx2被输入到全加器FAA2,全加器FAA2的输出被输入到加法器ADD4,加法器ADD4的输出被提供给运算级220-b的第15扩展寄存器R15,使得w15′=wx20(w2)+σ1(w15)。
进一步如图11所示,运算级220-a的第i扩展寄存器中存储的扩展数据被直接移位到运算级220-b的第(i-2)扩展寄存器中,其中2≤i≤15且i为整数。
在图11所示的示例中,第一子模块231所经历的运算逻辑级数为1级,第二子模块232所经历的运算逻辑级数为3级,第三子模块233所经历的运算逻辑级数为1级,第四子模块234所经历的运算逻辑级数为3级。四个子模块可以彼此独立地并行操作,使得最终计算用于运算级220-b的扩展数据所需要经历的运算逻辑级数减少至3级,大大降低了计算延时,使得流水线结构的运算速度得到大幅提升。
在如图12所示的示例中,运算级220-b的第一附加寄存器X1中的中间数据wx1′是通过由第一子模块231处理运算级220-a的第3扩展寄存器R3中存储的扩展数据w3和第11扩展寄存器R11中存储的扩展数据w11得到的。具体地,在这个示例中,第一子模块231包括σ01运算器和加法器ADD1,其中扩展数据w3被输入到σ01运算器,σ01运算器的输出和扩展数据w11被输入到加法器ADD1,加法器ADD1的输出被提供给运算级220-b的第一附加寄存器X1,使得wx1′=σ0(w3)+w11
进一步如图12所示,运算级220-b的第14扩展寄存器R14中的扩展数据w14′是通过由第二子模块232处理运算级220-a的第一附加寄存器X1中存储的中间数据wx1、第0扩展寄存器R0中存储的扩展数据w0和第14扩展寄存器R14中存储的扩展数据w14得到的。具体地,在这个示例中,第二子模块232包括σ11运算器、全加器FAA1和加法器ADD2,其中扩展数据w14被输入到σ11运算器,σ11运算器的输出、扩展数据w0和中间数据wx1被输入到全加器FAA1,全加器FAA1的输出被输入到加法器ADD2,加法器ADD2的输出被提供给运算级220-b的第14扩展寄存器R14,使得w14′=wx1+w01(w14)。
进一步如图12所示,运算级220-b的第二附加寄存器X2中的中间数据wx2′是通过由第三子模块233处理运算级220-a的第4扩展寄存器R4中存储的扩展数据w4和第12扩展寄存器R12中存储的扩展数据w12得到的。具体地,在这个示例中,第三子模块233包括σ02运算器和加法器ADD3,其中扩展数据w4被输入到σ02运算器,σ02运算器的输出和扩展数据w12被输入到加法器ADD3,加法器ADD3的输出被提供给运算级220-b的第二附加寄存器X2,使得wx2′=σ0(w4)+w12
进一步如图12所示,运算级220-b的第15扩展寄存器R15中的扩展数据w15′是通过由第四子模块234处理运算级220-a的第二附加寄存器X2中存储的中间数据wx2、第1扩展寄存器R1中存储的扩展数据w1和第15扩展寄存器R15中存储的扩展数据w15得到的。具体地,在这个示例中,第四子模块234包括σ12运算器、全加器FAA2和加法器ADD4,其中扩展数据w15被输入到σ12运算器,σ12运算器的输出、扩展数据w1和中间数据wx2被输入到全加器FAA2,全加器FAA2的输出被输入到加法器ADD4,加法器ADD4的输出被提供给运算级220-b的第15扩展寄存器R15,使得w15′=wx2+w11(w15)。
进一步如图12所示,运算级220-a的第i扩展寄存器中存储的扩展数据被直接移位到运算级220-b的第(i-2)扩展寄存器中,其中2≤i≤15且i为整数。
在图12所示的示例中,第一子模块231所经历的运算逻辑级数为2级,第二子模块232所经历的运算逻辑级数为3级,第三子模块233所经历的运算逻辑级数为2级,第四子模块234所经历的运算逻辑级数为3级。四个子模块可以彼此独立地并行操作,使得最终计算用于运算级220-b的扩展数据所需要经历的运算逻辑级数减少至3级,大大降低了计算延时,使得流水线结构的运算速度得到大幅提升。
相应地,本公开也提供了在用于执行哈希算法的电路中计算扩展数据的方法。图19示出了根据本公开的实施例的在用于执行哈希算法的电路中计算扩展数据的方法600的示例性流程图。这样的电路可以包括被配置为接收数据的输入模块和被配置为基于接收到的数据计算哈希值的运算模块,其中运算模块可以包括以流水线结构布置的多个运算级,每个运算级包括第0扩展寄存器至第15扩展寄存器以及第一附加寄存器和第二附加寄存器,每个扩展寄存器被配置为存储当前运算级的扩展数据,每个附加寄存器被配置为存储用于计算扩展数据的中间数据。对于运算模块的多个运算级中的包括第一运算级和在第一运算级之后的第二运算级的相邻两个运算级,方法600可以包括:在S601处,基于第一运算级的扩展寄存器中存储的扩展数据计算用于存储到第二运算级的第一附加寄存器中的中间数据;在S602处,基于第一运算级的第一附加寄存器中存储的中间数据和第一运算级的第14扩展寄存器中存储的扩展数据计算用于存储到第二运算级的第14扩展寄存器中的扩展数据;在S603处,基于第一运算级的扩展寄存器中存储的扩展数据计算用于存储到第二运算级的第二附加寄存器中的中间数据;在S604处,基于第一运算级的第二附加寄存器中存储的中间数据和第一运算级的第15扩展寄存器中存储的扩展数据计算用于存储到第二运算级的第15扩展寄存器中的扩展数据;在S605处,将第一运算级的第i扩展寄存器中存储的扩展数据作为用于存储到第二运算级的第(i-2)扩展寄存器中的扩展数据,其中2≤i≤15且i为整数。注意,S601-S605并不需要以顺序次序执行,而是可以以任何次序执行,或者可以至少部分地并行执行。
方法600还可以采用与根据以上描述的实施例的子模块之间的各种协作方式的各种组合类似的方式来计算扩展数据,在此不再赘述。方法600可以减少在用于执行哈希算法的电路中计算扩展数据导致的计算延时,从而大幅提高电路进而包含该电路的计算芯片的运算速度,从而实现更低的功耗算力比。
当然,也无需同时用第一附加寄存器和第二附加寄存器来替代地实现扩展寄存器R0、R1在上述实施例中所起到的作用,而是可以选择用第一附加寄存器来替代地实现扩展寄存器R0在上述实施例中所起到的作用,或者选择用第二附加寄存器来替代地实现扩展寄存器R1在上述实施例中所起到的作用。
例如,图13示出了根据本公开的另外一些实施例的用于执行哈希算法的电路300的示意性框图。其中箭头表示数据传递方向。电路300可以包括输入模块310和运算模块320。输入模块310可以被配置为接收数据。运算模块320可以被配置为基于接收到的数据计算哈希值。运算模块320还可以包括多个扩展数据运算逻辑模块330,每个扩展数据运算逻辑模块330设置在运算模块320的多个运算级320-0、…、320-31中的相应的相邻两个运算级(例如,320-a与320-b)之间。
电路300与电路100、200相比,区别在于电路300的运算模块320的每个运算级可以包括第0扩展寄存器R0至第15扩展寄存器R15和第二附加寄存器X2而没有包括第一附加寄存器X1,并且相应地,每个扩展数据运算逻辑模块330可以包括如前所述的第一子模块131、第二子模块132、第三子模块233和第四子模块234。在一些实施例中,在最前一个运算级320-0中,第二附加寄存器X2中的中间数据可以与第1扩展寄存器R1中的扩展数据相同。
在电路300中:第一子模块131可以被配置为基于第一运算级(例如,320-a)的第2扩展寄存器R2中存储的扩展数据计算用于存储到第二运算级(例如,320-b)的第0扩展寄存器R0中的扩展数据;第二子模块132可以被配置为基于第一运算级的第0扩展寄存器R0和第14扩展寄存器R14中存储的扩展数据计算用于存储到第二运算级的第14扩展寄存器R14中的扩展数据;第三子模块233可以被配置为基于第一运算级的扩展寄存器R3中存储的扩展数据计算用于存储到第二运算级的第二附加寄存器X2中的中间数据;以及第四子模块234可以被配置为基于第一运算级的第二附加寄存器X2中存储的中间数据和第15扩展寄存器R15中存储的扩展数据计算用于存储到第二运算级的第15扩展寄存器R15中的扩展数据。另外,用于存储到第二运算级的第(i-2)扩展寄存器中的扩展数据可以是第一运算级的第i扩展寄存器中存储的扩展数据,其中3≤i≤15且i为整数。在电路300中,第一子模块131和第二子模块132可以用于计算第一W参数,第三子模块233和第四子模块234可以用于计算第二W参数。
如前所述,第一子模块131和第二子模块132可以采用多种协作方式来计算扩展数据,从而提供第一W参数,其实施例在此不再赘述。同样,如前所述,第三子模块233和第四子模块234可以采用多种协作方式来计算扩展数据,从而提供第二W参数,其实施例在此亦不再赘述。在电路300的各种实现方式中,根据本公开的实施例的第一子模块131和第二子模块132的任一协作方式与第三子模块233和第四子模块234的任一协作方式可以自由组合,从而提供第一W参数和第二W参数。
下面结合图14和图15描述根据本公开的实施例的如图13所示的电路300中包括扩展数据运算逻辑模块的部分的几种非限制性示例配置,其示出了第一子模块131和第二子模块132的协作方式与第三子模块233和第四子模块234的协作方式的几种非限制性示例组合。在这些图中,以相邻两个运算级320-a和320-b为例进行说明,可以理解,在运算模块320中的任意相邻两个运算级都可以是以下讨论的运算级320-a和320-b。另外,在这些图中,为了清楚起见,用点线箭头指示直接移位而不经过运算的扩展数据的移动方向,用实线箭头指示经由第一子模块131和第二子模块132处理的扩展数据的移动方向,用点划线箭头指示经由第三子模块233和第四子模块234处理的扩展数据的移动方向,第一子模块至第四子模块的示意性框图在下方另行给出。
在如图14所示的示例中,运算级320-b的第0扩展寄存器R0中的扩展数据w0′是通过由第一子模块131处理运算级320-a的第2扩展寄存器R2中存储的扩展数据w2、第3扩展寄存器R3中存储的扩展数据w3和第11扩展寄存器R11中存储的扩展数据w11得到的。具体地,在这个示例中,第一子模块131包括σ01运算器、全加器FAA1和加法器ADD1,其中扩展数据w3被输入到σ01运算器,σ01运算器的输出、扩展数据w2和扩展数据w11被输入到全加器FAA1,全加器FAA1的输出被输入到加法器ADD1,加法器ADD1的输出被提供给运算级320-b的第0扩展寄存器R0,使得w0′=w20(w3)+w11
进一步如图14所示,运算级320-b的第14扩展寄存器R14中的扩展数据w14′是通过由第二子模块132处理运算级320-a的第0扩展寄存器R0中存储的扩展数据w0和第14扩展寄存器R14中存储的扩展数据w14得到的。具体地,在这个示例中,第二子模块132包括σ11运算器和加法器ADD2,其中扩展数据w14被输入到σ11运算器,σ11运算器的输出和扩展数据w0被输入到加法器ADD2,加法器ADD2的输出被提供给运算级320-b的第14扩展寄存器R14,使得w14′=w01(w14)。
进一步如图14所示,运算级320-b的第二附加寄存器X2中的中间数据wx2′是通过由第三子模块233处理运算级320-a的第3扩展寄存器R3中存储的扩展数据w3、第4扩展寄存器R4中存储的扩展数据w4和第12扩展寄存器R12中存储的扩展数据w12得到的。具体地,在这个示例中,第三子模块233包括σ02运算器、全加器FAA2和加法器ADD3,其中扩展数据w4被输入到σ02运算器,σ02运算器的输出、扩展数据w3和扩展数据w12被输入到全加器FAA2,全加器FAA2的输出被输入到加法器ADD3,加法器ADD3的输出被提供给运算级320-b的第二附加寄存器X2,使得wx2′=w30(w4)+w12
进一步如图14所示,运算级320-b的第15扩展寄存器R15中的扩展数据w15′是通过由第四子模块234处理运算级320-a的第二附加寄存器X2中存储的中间数据wx2和运算级220-a的第15扩展寄存器R15中存储的扩展数据w15得到的。具体地,在这个示例中,第四子模块234包括σ12运算器和加法器ADD4,其中扩展数据w15被输入到σ12运算器,σ12运算器的输出和中间数据wx2被输入到加法器ADD4,加法器ADD4的输出被提供给运算级320-b的第15扩展寄存器R15,使得w15′=wx21(w15)。
进一步如图13所示,运算级320-a的第i扩展寄存器中存储的扩展数据被直接移位到运算级320-b的第(i-2)扩展寄存器中,其中3≤i≤15且i为整数。
在图14所示的示例中,第一子模块131所经历的运算逻辑级数为3级,第二子模块132所经历的运算逻辑级数为2级,第三子模块233所经历的运算逻辑级数为3级,第四子模块234所经历的运算逻辑级数为2级。四个子模块可以彼此独立地并行操作,使得最终计算用于运算级320-b的扩展数据所需要经历的运算逻辑级数减少至3级,大大降低了计算延时,使得流水线结构的运算速度得到大幅提升。
在如图15所示的示例中,运算级320-b的第0扩展寄存器R0中的扩展数据w0′是通过由第一子模块131处理运算级320-a的第2扩展寄存器R2中存储的扩展数据w2和第11扩展寄存器R11中存储的扩展数据w11得到的。具体地,在这个示例中,第一子模块131包括加法器ADD1,其中扩展数据w2和w11被输入到加法器ADD1,加法器ADD1的输出被提供给运算级320-b的第0扩展寄存器R0,使得w0′=w2+w11。
进一步如图15所示,运算级320-b的第14扩展寄存器R14中的扩展数据w14′是通过由第二子模块132处理运算级320-a的第0扩展寄存器R0中存储的扩展数据w0、第1扩展寄存器R1中存储的扩展数据w1和第14扩展寄存器R14中存储的扩展数据w14得到的。具体地,在这个示例中,第二子模块132包括σ01运算器、σ11运算器、全加器FAA1和加法器ADD2,其中w1被输入到σ01运算器,扩展数据w14被输入到σ11运算器,σ0运算和σ1运算可以同时进行。然后,σ01运算器的输出、σ11运算器的输出和扩展数据w0被输入到全加器FAA1,全加器FAA1的输出被输入到加法器ADD2,加法器ADD2的输出被提供给运算级320-b的第14扩展寄存器R14,使得w14′=w00(w1)+σ1(w14)。
进一步如图15所示,运算级320-b的第二附加寄存器X2中的中间数据wx2′是通过由第三子模块233处理运算级320-a的第3扩展寄存器R3中存储的扩展数据w3和第12扩展寄存器R12中存储的扩展数据w12得到的。具体地,在这个示例中,第三子模块233包括加法器ADD3,其中扩展数据w3和w12被输入到加法器ADD3,加法器ADD3的输出被提供给运算级320-b的第二附加寄存器X2,使得wx2′=w3+w12。
进一步如图15所示,运算级320-b的第15扩展寄存器R15中的扩展数据w15′是通过由第四子模块234处理运算级220-a的第二附加寄存器X2中存储的中间数据wx2、第2扩展寄存器R2中存储的扩展数据w2和第15扩展寄存器R15中存储的扩展数据w15得到的。具体地,在这个示例中,第四子模块234包括σ02运算器、σ12运算器、全加器FAA2和加法器ADD4,其中扩展数据w2被输入到σ02运算器,扩展数据w15被输入到σ12运算器,σ0运算与σ1运算可以同时进行。然后σ02运算器的输出、σ12运算器的输出和中间数据wx2被输入到全加器FAA2,全加器FAA2的输出被输入到加法器ADD4,加法器ADD4的输出被提供给运算级320-b的第15扩展寄存器R15,使得w15′=wx20(w2)+σ1(w15)。
进一步如图15所示,运算级320-a的第i扩展寄存器中存储的扩展数据被直接移位到运算级320-b的第(i-2)扩展寄存器中,其中3≤i≤15且i为整数。
在图15所示的示例中,第一子模块131所经历的运算逻辑级数为1级,第二子模块132所经历的运算逻辑级数为3级,第三子模块233所经历的运算逻辑级数为1级,第四子模块234所经历的运算逻辑级数为3级。四个子模块可以彼此独立地并行操作,使得最终计算用于运算级320-b的扩展数据所需要经历的运算逻辑级数减少至3级,大大降低了计算延时,使得流水线结构的运算速度得到大幅提升。
相应地,本公开也提供了在用于执行哈希算法的电路中计算扩展数据的方法。图20示出了根据本公开的实施例的在用于执行哈希算法的电路中计算扩展数据的方法700的示例性流程图。这样的电路可以包括被配置为接收数据的输入模块和被配置为基于接收到的数据计算哈希值的运算模块,其中运算模块可以包括以流水线结构布置的多个运算级,每个运算级包括第0扩展寄存器至第15扩展寄存器以及第二附加寄存器,每个扩展寄存器被配置为存储当前运算级的扩展数据,第二附加寄存器被配置为存储用于计算扩展数据的中间数据。对于运算模块的多个运算级中的包括第一运算级和在第一运算级之后的第二运算级的相邻两个运算级,方法700可以包括:在S701处,基于第一运算级的第2扩展寄存器中存储的扩展数据计算用于存储到第二运算级的第0扩展寄存器中的扩展数据;在S702处,基于第一运算级的第0扩展寄存器和第14扩展寄存器中存储的扩展数据计算用于存储到第二运算级的第14扩展寄存器中的扩展数据;在S703处,基于第一运算级的扩展寄存器中存储的扩展数据计算用于存储到第二运算级的第二附加寄存器中的中间数据;在S704处,基于第一运算级的第二附加寄存器中存储的中间数据和第一运算级的第15扩展寄存器中存储的扩展数据计算用于存储到第二运算级的第15扩展寄存器中的扩展数据;在S705处,将第一运算级的第i扩展寄存器中存储的扩展数据作为用于存储到第二运算级的第(i-2)扩展寄存器中的扩展数据,其中3≤i≤15且i为整数。注意,S701-S705并不需要以顺序次序执行,而是可以以任何次序执行,或者可以至少部分地并行执行。
方法700还可以采用与根据以上描述的实施例的子模块之间的各种协作方式的各种组合类似的方式来计算扩展数据,在此不再赘述。方法700可以减少在用于执行哈希算法的电路中计算扩展数据导致的计算延时,从而大幅提高电路进而包含该电路的计算芯片的运算速度,从而实现更低的功耗算力比。
又例如,例如,图16示出了根据本公开的另外一些实施例的用于执行哈希算法的电路400的示意性框图。其中箭头表示数据传递方向。电路400可以包括输入模块410和运算模块420。输入模块410可以被配置为接收数据。运算模块420可以被配置为基于接收到的数据计算哈希值。运算模块420还可以包括多个扩展数据运算逻辑模块430,每个扩展数据运算逻辑模块430设置在运算模块420的多个运算级420-0、…、420-31中的相应的相邻两个运算级(例如,420-a与420-b)之间。
电路400与电路100、200相比,区别在于电路400的运算模块420的每个运算级可以包括第0扩展寄存器R0至第15扩展寄存器R15和第一附加寄存器X1而没有包括第二附加寄存器X2,并且相应地,每个扩展数据运算逻辑模块430可以包括如前所述的第一子模块231、第二子模块232、第三子模块133和第四子模块134。在一些实施例中,在最前一个运算级220-0中,第一附加寄存器X1中的中间数据可以与第0扩展寄存器R0中的扩展数据相同。
在电路400中:第一子模块231可以被配置为基于第一运算级(例如,420-a)的扩展寄存器R2中存储的扩展数据计算用于存储到第二运算级(例如,420-b)的第一附加寄存器X1中的中间数据;第二子模块232可以被配置为基于第一运算级的第一附加寄存器X1中存储的中间数据和第一运算级的第14扩展寄存器R14中存储的扩展数据计算用于存储到第二运算级的第14扩展寄存器R14中的扩展数据;第三子模块133可以被配置为基于第一运算级的第3扩展寄存器R3中存储的扩展数据计算用于存储到第二运算级的第1扩展寄存器R1中的扩展数据;第四子模块134可以被配置为基于第一运算级的第1扩展寄存器R1和第15扩展寄存器R15中存储的扩展数据计算用于存储到第二运算级的第15扩展寄存器R15中的扩展数据。另外,用于存储到第二运算级的第(i-2)扩展寄存器中的扩展数据可以是第一运算级的第i扩展寄存器中存储的扩展数据,其中4≤i≤15且i为整数,并且用于存储到第二运算级的第0扩展寄存器中的扩展数据是第一运算级的第2扩展寄存器中存储的扩展数据。在电路400中,第一子模块231和第二子模块232可以用于计算第一W参数,第三子模块133和第四子模块134可以用于计算第二W参数。
如前所述,第一子模块231和第二子模块232可以采用多种协作方式来计算扩展数据,从而提供第一W参数,其实施例在此不再赘述。同样,如前所述,第三子模块133和第四子模块134可以采用多种协作方式来计算扩展数据,从而提供第二W参数,其实施例在此亦不再赘述。在电路400的各种实现方式中,根据本公开的实施例的第一子模块231和第二子模块232的任一协作方式与第三子模块133和第四子模块134的任一协作方式可以自由组合,从而提供第一W参数和第二W参数。
下面结合图17描述根据本公开的实施例的如图16所示的电路400中包括扩展数据运算逻辑模块的部分的几种非限制性示例配置,其示出了第一子模块231和第二子模块232的协作方式与第三子模块133和第四子模块134的协作方式的非限制性示例组合。在图17中,以相邻两个运算级420-a和420-b为例进行说明,可以理解,在运算模块420中的任意相邻两个运算级都可以是以下讨论的运算级420-a和420-b。另外,在这些图中,为了清楚起见,用点线箭头指示直接移位而不经过运算的扩展数据的移动方向,用实线箭头指示经由第一子模块231和第二子模块232处理的扩展数据的移动方向,用点划线箭头指示经由第三子模块133和第四子模块134处理的扩展数据的移动方向,第一子模块至第四子模块的示意性框图在下方另行给出。
在如图17所示的示例中,运算级420-b的第一附加寄存器X1中的中间数据wx1′是通过由第一子模块231处理运算级420-a的第2扩展寄存器R2中存储的扩展数据w2、第3扩展寄存器R3中存储的扩展数据w3和第11扩展寄存器R11中存储的扩展数据w11得到的。具体地,在这个示例中,第一子模块231包括σ01运算器、全加器FAA1和加法器ADD1,其中扩展数据w3被输入到σ01运算器,σ01运算器的输出、扩展数据w2和扩展数据w11被输入到全加器FAA1,全加器FAA1的输出被输入到加法器ADD1,加法器ADD1的输出被提供给运算级420-b的第一附加寄存器X1,使得wx1′=w20(w3)+w11
进一步如图17所示,运算级420-b的第14扩展寄存器R14中的扩展数据w14′是通过由第二子模块232处理运算级220-a的第一附加寄存器X1中存储的中间数据wx1和运算级420-a的第14扩展寄存器R14中存储的扩展数据w14得到的。具体地,在这个示例中,第二子模块232包括σ11运算器和加法器ADD2,其中扩展数据w14被输入到σ11运算器,σ11运算器的输出和中间数据wx1被输入到加法器ADD2,加法器ADD2的输出被提供给运算级420-b的第14扩展寄存器R14,使得w14′=wx11(w14)。
进一步如图17所示,运算级420-b的第1扩展寄存器R1中的扩展数据w1′是通过由第三子模块133处理运算级420-a的第3扩展寄存器R3中存储的扩展数据w3、第4扩展寄存器R4中存储的扩展数据w4和第12扩展寄存器R12中存储的扩展数据w12得到的。具体地,在这个示例中,第三子模块133包括σ02运算器、全加器FAA2和加法器ADD3,其中扩展数据w4被输入到σ02运算器,σ02运算器的输出、扩展数据w3和扩展数据w12被输入到全加器FAA2,全加器FAA2的输出被输入到加法器ADD3,加法器ADD3的输出被提供给运算级420-b的第1扩展寄存器R1,使得w1′=w30(w4)+w12
进一步如图17所示,运算级420-b的第15扩展寄存器R15中的扩展数据w15′是通过由第四子模块134处理运算级420-a的第1扩展寄存器R1中存储的扩展数据w1和第15扩展寄存器R15中存储的扩展数据w15得到的。具体地,在这个示例中,第四子模块134包括σ12运算器和加法器ADD4,其中扩展数据w15被输入到σ12运算器,σ12运算器的输出和扩展数据w1被输入到加法器ADD4,加法器ADD4的输出被提供给运算级420-b的第15扩展寄存器R15,使得w15′=w11(w15)。
进一步如图17所示,运算级420-a的第i扩展寄存器中存储的扩展数据被直接移位到运算级420-b的第(i-2)扩展寄存器中,其中4≤i≤15且i为整数,并且运算级420-a的第2扩展寄存器中存储的扩展数据被直接移位到运算级420-b的第0扩展寄存器中。
在图17所示的示例中,第一子模块231所经历的运算逻辑级数为3级,第二子模块232所经历的运算逻辑级数为2级,第三子模块133所经历的运算逻辑级数为3级,第四子模块134所经历的运算逻辑级数为2级。四个子模块可以彼此独立地并行操作,使得最终计算用于运算级420-b的扩展数据所需要经历的运算逻辑级数减少至3级,大大降低了计算延时,使得流水线结构的运算速度得到大幅提升。
相应地,本公开也提供了在用于执行哈希算法的电路中计算扩展数据的方法。图21示出了根据本公开的实施例的在用于执行哈希算法的电路中计算扩展数据的方法800的示例性流程图。这样的电路可以包括被配置为接收数据的输入模块和被配置为基于接收到的数据计算哈希值的运算模块,其中运算模块可以包括以流水线结构布置的多个运算级,每个运算级包括第0扩展寄存器至第15扩展寄存器以及第一附加寄存器,每个扩展寄存器被配置为存储当前运算级的扩展数据,第一附加寄存器被配置为存储用于计算扩展数据的中间数据。对于运算模块的多个运算级中的包括第一运算级和在第一运算级之后的第二运算级的相邻两个运算级,方法800可以包括:在S801处,基于第一运算级的扩展寄存器中存储的扩展数据计算用于存储到第二运算级的第一附加寄存器中的中间数据;在S802处,基于第一运算级的第一附加寄存器中存储的中间数据和第一运算级的第14扩展寄存器中存储的扩展数据计算用于存储到第二运算级的第14扩展寄存器中的扩展数据;在S803处,基于第一运算级的第3扩展寄存器中存储的扩展数据计算用于存储到第二运算级的第1扩展寄存器中的扩展数据;在S804处,基于第一运算级的第1扩展寄存器和第15扩展寄存器中存储的扩展数据计算用于存储到第二运算级的第15扩展寄存器中的扩展数据;在S805处,将第一运算级的第i扩展寄存器中存储的扩展数据作为用于存储到第二运算级的第(i-2)扩展寄存器中的扩展数据,其中4≤i≤15且i为整数,并且将第一运算级的第2扩展寄存器中存储的扩展数据作为用于存储到第二运算级的第0扩展寄存器中的扩展数据,其中4≤i≤15且i为整数。注意,S801-S805并不需要以顺序次序执行,而是可以以任何次序执行,或者可以至少部分地并行执行。
方法800还可以采用与根据以上描述的实施例的子模块之间的各种协作方式的各种组合类似的方式来计算扩展数据,在此不再赘述。方法800可以减少在用于执行哈希算法的电路中计算扩展数据导致的计算延时,从而大幅提高电路进而包含该电路的计算芯片的运算速度,从而实现更低的功耗算力比。
本公开还可以提供了包括如以上任一实施例所述的电路的计算芯片。本公开还可以提供包括一个或多个如上所述的计算芯片的加密货币矿机。根据本公开的加密货币矿机可以具有实现更低的功耗算力比,从而以更低的成本并且更高效地执行挖矿过程。
说明书及权利要求中的词语″左″、″右″、″前″、″后″、″顶″、″底″、″上″、″下″、″高″、″低″等,如果存在的话,用于描述性的目的而并不一定用于描述不变的相对位置。应当理解,这样使用的词语在适当的情况下是可互换的,使得在此所描述的本公开的实施例,例如,能够在与在此所示出的或另外描述的那些取向不同的其它取向上操作。例如,在附图中的装置倒转时,原先描述为在其它特征″之上″的特征,此时可以描述为在其它特征″之下″。装置还可以以其它方式定向(旋转90度或在其它方位),此时将相应地解释相对空间关系。
在说明书及权利要求中,称一个元件位于另一元件″之上″、″附接″至另一元件、″连接″至另一元件、″耦合″至另一元件、或″接触″另一元件等时,该元件可以直接位于另一元件之上、直接附接至另一元件、直接连接至另一元件、直接耦合至另一元件或直接接触另一元件,或者可以存在一个或多个中间元件。相对照的是,称一个元件″直接″位于另一元件″之上″、″直接附接″至另一元件、″直接连接″至另一元件、″直接耦合″至另一元件或″直接接触″另一元件时,将不存在中间元件。在说明书及权利要求中,一个特征布置成与另一特征″相邻″,可以指一个特征具有与相邻特征重叠的部分或者位于相邻特征上方或下方的部分。
如在此所使用的,词语″示例性的″意指″用作示例、实例或说明″,而不是作为将被精确复制的″模型″。在此示例性描述的任意实现方式并不一定要被解释为比其它实现方式优选的或有利的。而且,本公开不受在技术领域、背景技术、实用新型内容或具体实施方式中所给出的任何所表述的或所暗示的理论所限定。如在此所使用的,词语″基本上″意指包含由设计或制造的缺陷、器件或元件的容差、环境影响和/或其它因素所致的任意微小的变化。词语″基本上″还允许由寄生效应、噪声以及可能存在于实际的实现方式中的其它实际考虑因素所致的与完美的或理想的情形之间的差异。
另外,仅仅为了参考的目的,还可以在本文中使用″第一″、″第二″等类似术语,并且因而并非意图限定。例如,除非上下文明确指出,否则涉及结构或元件的词语″第一″、″第二″和其它此类数字词语并没有暗示顺序或次序。还应理解,″包括/包含″一词在本文中使用时,说明存在所指出的特征、整体、步骤、操作、单元和/或组件,但是并不排除存在或增加一个或多个其它特征、整体、步骤、操作、单元和/或组件以及/或者它们的组合。在本公开中,术语″提供″从广义上用于涵盖获得对象的所有方式,因此″提供某对象″包括但不限于″购买″、″制备/制造″、″布置/设置″、″安装/装配″、和/或″订购″对象等。
如本文所使用的,术语″和/或″包括相关联的列出项目中的一个或多个的任何和所有组合。本文中使用的术语只是出于描述特定实施例的目的,并不旨在限制本公开。如本文中使用的,单数形式″一″、″一个″和″该″也旨在包括复数形式,除非上下文另外清楚指示。
本领域技术人员应当意识到,在上述操作之间的边界仅仅是说明性的。多个操作可以结合成单个操作,单个操作可以分布于附加的操作中,并且操作可以在时间上至少部分重叠地执行。而且,另选的实施例可以包括特定操作的多个实例,并且在其它各种实施例中可以改变操作顺序。但是,其它的修改、变化和替换同样是可能的。可以以任何方式和/或与其它实施例的方面或元件相结合地组合以上公开的所有实施例的方面和元件,以提供多个附加实施例。因此,本说明书和附图应当被看作是说明性的,而非限制性的。
虽然已通过示例对本公开的一些特定实施例进行了详细说明,但本领域的技术人员应该理解,以上示例仅是为了进行说明,而不是为了限制本公开的范围。在此公开的各实施例可以任意组合,而不脱离本公开的精神和范围。本领域的技术人员还应理解,可以对实施例进行多种修改而不脱离本公开的范围和精神。本公开的范围由所附权利要求来限定。

Claims (19)

1.一种用于执行哈希算法的电路,其特征在于,所述电路包括:
输入模块,被配置为接收数据;以及
运算模块,被配置为基于接收到的数据计算哈希值,所述运算模块包括:
以流水线结构布置的多个运算级,所述多个运算级中的每个运算级包括第0扩展寄存器至第15扩展寄存器,每个扩展寄存器被配置为存储当前运算级的扩展数据;以及
多个扩展数据运算逻辑模块,每个扩展数据运算逻辑模块设置在所述多个运算级中的相应的相邻两个运算级之间,所述相邻两个运算级包括第一运算级和在所述第一运算级之后的第二运算级,每个扩展数据运算逻辑模块包括:
第一子模块,被配置为基于所述第一运算级的第2扩展寄存器中存储的扩展数据计算用于存储到所述第二运算级的第0扩展寄存器中的扩展数据;
第二子模块,被配置为基于所述第一运算级的第0扩展寄存器和第14扩展寄存器中存储的扩展数据计算用于存储到所述第二运算级的第14扩展寄存器中的扩展数据;
第三子模块,被配置为基于所述第一运算级的第3扩展寄存器中存储的扩展数据计算用于存储到所述第二运算级的第1扩展寄存器中的扩展数据;以及
第四子模块,被配置为基于所述第一运算级的第1扩展寄存器和第15扩展寄存器中存储的扩展数据计算用于存储到所述第二运算级的第15扩展寄存器中的扩展数据;
其中,用于存储到所述第二运算级的第(i-2)扩展寄存器中的扩展数据是所述第一运算级的第i扩展寄存器中存储的扩展数据,其中4≤i≤15且i为整数。
2.根据权利要求1所述的电路,其特征在于,所述第一子模块被配置为基于所述第一运算级的第2扩展寄存器、第3扩展寄存器、第11扩展寄存器中存储的扩展数据计算用于存储到所述第二运算级的第0扩展寄存器中的扩展数据。
3.根据权利要求1所述的电路,其特征在于,所述第一子模块被配置为基于所述第一运算级的第2扩展寄存器和第3扩展寄存器中存储的扩展数据计算用于存储到所述第二运算级的第0扩展寄存器中的扩展数据,以及所述第二子模块被配置为基于所述第一运算级的第0扩展寄存器、第9扩展寄存器和第14扩展寄存器中存储的扩展数据计算用于存储到所述第二运算级的第14扩展寄存器中的扩展数据。
4.根据权利要求1所述的电路,其特征在于,所述第三子模块被配置为基于所述第一运算级的第3扩展寄存器、第4扩展寄存器、第12扩展寄存器中存储的扩展数据计算用于存储到所述第二运算级的第1扩展寄存器中的扩展数据。
5.根据权利要求1所述的电路,其特征在于,所述第三子模块被配置为基于所述第一运算级的第3扩展寄存器和第4扩展寄存器中存储的扩展数据计算用于存储到所述第二运算级的第1扩展寄存器中的扩展数据,以及所述第四子模块被配置为基于所述第一运算级的第1扩展寄存器、第10扩展寄存器和第15扩展寄存器中存储的扩展数据计算用于存储到所述第二运算级的第15扩展寄存器中的扩展数据。
6.根据权利要求1所述的电路,其特征在于,所述第三子模块被配置为基于所述第一运算级的第3扩展寄存器和第12扩展寄存器中存储的扩展数据计算用于存储到所述第二运算级的第1扩展寄存器中的扩展数据,以及所述第四子模块被配置为基于所述第一运算级的第1扩展寄存器、第2扩展寄存器和第15扩展寄存器中存储的扩展数据计算用于存储到所述第二运算级的第15扩展寄存器中的扩展数据。
7.一种用于执行哈希算法的电路,其特征在于,所述电路包括:
输入模块,被配置为接收数据;以及
运算模块,被配置为基于接收到的数据计算哈希值,所述运算模块包括:
以流水线结构布置的多个运算级,所述多个运算级中的每个运算级包括第0扩展寄存器至第15扩展寄存器以及第一附加寄存器和第二附加寄存器,每个扩展寄存器被配置为存储当前运算级的扩展数据,每个附加寄存器被配置为存储用于计算扩展数据的中间数据;以及
多个扩展数据运算逻辑模块,每个扩展数据运算逻辑模块设置在所述多个运算级中的相应的相邻两个运算级之间,所述相邻两个运算级包括第一运算级和在所述第一运算级之后的第二运算级,每个扩展数据运算逻辑模块包括:
第一子模块,被配置为基于所述第一运算级的扩展寄存器中存储的扩展数据计算用于存储到所述第二运算级的第一附加寄存器中的中间数据;
第二子模块,被配置为基于所述第一运算级的第一附加寄存器中存储的中间数据和所述第一运算级的第14扩展寄存器中存储的扩展数据计算用于存储到所述第二运算级的第14扩展寄存器中的扩展数据;
第三子模块,被配置为基于所述第一运算级的扩展寄存器中存储的扩展数据计算用于存储到所述第二运算级的第二附加寄存器中的中间数据;以及
第四子模块,被配置为基于所述第一运算级的第二附加寄存器中存储的中间数据和所述第一运算级的第15扩展寄存器中存储的扩展数据计算用于存储到所述第二运算级的第15扩展寄存器中的扩展数据;
其中,用于存储到所述第二运算级的第(i-2)扩展寄存器中的扩展数据是所述第一运算级的第i扩展寄存器中存储的扩展数据,其中2≤i≤15且i为整数。
8.根据权利要求7所述的电路,其特征在于,所述第一子模块被配置为基于所述第一运算级的第2扩展寄存器、第3扩展寄存器、第11扩展寄存器中存储的扩展数据计算用于存储到所述第二运算级的第一附加寄存器中的中间数据。
9.根据权利要求7所述的电路,其特征在于,所述第一子模块被配置为基于所述第一运算级的第2扩展寄存器和第3扩展寄存器中存储的扩展数据计算用于存储到所述第二运算级的第一附加寄存器中的中间数据,以及所述第二子模块被配置为基于所述第一运算级的第一附加寄存器中存储的中间数据以及所述第一运算级的第9扩展寄存器和第14扩展寄存器中存储的扩展数据计算用于存储到所述第二运算级的第14扩展寄存器中的扩展数据。
10.根据权利要求7所述的电路,其特征在于,所述第一子模块被配置为基于所述第一运算级的第2扩展寄存器和第11扩展寄存器中存储的扩展数据计算用于存储到所述第二运算级的第一附加寄存器中的中间数据,以及所述第二子模块被配置为基于所述第一运算级的第一附加寄存器中存储的中间数据以及所述第一运算级的第1扩展寄存器和第14扩展寄存器中存储的扩展数据计算用于存储到所述第二运算级的第14扩展寄存器中的扩展数据。
11.根据权利要求7所述的电路,其特征在于,所述第一子模块被配置为基于所述第一运算级的第3扩展寄存器和第11扩展寄存器中存储的扩展数据计算用于存储到所述第二运算级的第一附加寄存器中的中间数据,以及所述第二子模块被配置为基于所述第一运算级的第一附加寄存器中存储的中间数据以及所述第一运算级的第0扩展寄存器和第14扩展寄存器中存储的扩展数据计算用于存储到所述第二运算级的第14扩展寄存器中的扩展数据。
12.根据权利要求7所述的电路,其特征在于,所述第三子模块被配置为基于所述第一运算级的第3扩展寄存器、第4扩展寄存器、第12扩展寄存器中存储的扩展数据计算用于存储到所述第二运算级的第二附加寄存器中的中间数据。
13.根据权利要求7所述的电路,其特征在于,所述第三子模块被配置为基于所述第一运算级的第3扩展寄存器和第4扩展寄存器中存储的扩展数据计算用于存储到所述第二运算级的第二附加寄存器中的中间数据,以及所述第四子模块被配置为基于所述第一运算级的第二附加寄存器中存储的中间数据以及所述第一运算级的第10扩展寄存器和第15扩展寄存器中存储的扩展数据计算用于存储到所述第二运算级的第15扩展寄存器中的扩展数据。
14.根据权利要求7所述的电路,其特征在于,所述第三子模块被配置为基于所述第一运算级的第3扩展寄存器和第12扩展寄存器中存储的扩展数据计算用于存储到所述第二运算级的第二附加寄存器中的中间数据,以及所述第四子模块被配置为基于所述第一运算级的第二附加寄存器中存储的中间数据以及所述第一运算级的第2扩展寄存器和第15扩展寄存器中存储的扩展数据计算用于存储到所述第二运算级的第15扩展寄存器中的扩展数据。
15.根据权利要求7所述的电路,其特征在于,所述第三子模块被配置为基于所述第一运算级的第4扩展寄存器和第12扩展寄存器中存储的扩展数据计算用于存储到所述第二运算级的第二附加寄存器中的中间数据,以及所述第四子模块被配置为基于所述第一运算级的第二附加寄存器中存储的中间数据以及所述第一运算级的第1扩展寄存器和第15扩展寄存器中存储的扩展数据计算用于存储到所述第二运算级的第15扩展寄存器中的扩展数据。
16.一种用于执行哈希算法的电路,其特征在于,所述电路包括:
输入模块,被配置为接收数据;以及
运算模块,被配置为基于接收到的数据计算哈希值,所述运算模块包括:
以流水线结构布置的多个运算级,所述多个运算级中的每个运算级包括第0扩展寄存器至第15扩展寄存器以及第二附加寄存器,每个扩展寄存器被配置为存储当前运算级的扩展数据,所述第二附加寄存器被配置为存储用于计算扩展数据的中间数据;以及
多个扩展数据运算逻辑模块,每个扩展数据运算逻辑模块设置在所述多个运算级中的相应的相邻两个运算级之间,所述相邻两个运算级包括第一运算级和在所述第一运算级之后的第二运算级,每个扩展数据运算逻辑模块包括:
第一子模块,被配置为基于所述第一运算级的第2扩展寄存器中存储的扩展数据计算用于存储到所述第二运算级的第0扩展寄存器中的扩展数据;
第二子模块,被配置为基于所述第一运算级的第0扩展寄存器和第14扩展寄存器中存储的扩展数据计算用于存储到所述第二运算级的第14扩展寄存器中的扩展数据;
第三子模块,被配置为基于所述第一运算级的扩展寄存器中存储的扩展数据计算用于存储到所述第二运算级的第二附加寄存器中的中间数据;以及
第四子模块,被配置为基于所述第一运算级的第二附加寄存器中存储的中间数据和所述第一运算级的第15扩展寄存器中存储的扩展数据计算用于存储到所述第二运算级的第15扩展寄存器中的扩展数据;
其中,用于存储到所述第二运算级的第(i-2)扩展寄存器中的扩展数据是所述第一运算级的第i扩展寄存器中存储的扩展数据,其中3≤i≤15且i为整数。
17.一种用于执行哈希算法的电路,其特征在于,所述电路包括:
输入模块,被配置为接收数据;以及
运算模块,被配置为基于接收到的数据计算哈希值,所述运算模块包括:
以流水线结构布置的多个运算级,所述多个运算级中的每个运算级包括第0扩展寄存器至第15扩展寄存器以及第一附加寄存器,每个扩展寄存器被配置为存储当前运算级的扩展数据,所述第一附加寄存器被配置为存储用于计算扩展数据的中间数据;以及
多个扩展数据运算逻辑模块,每个扩展数据运算逻辑模块设置在所述多个运算级中的相应的相邻两个运算级之间,所述相邻两个运算级包括第一运算级和在所述第一运算级之后的第二运算级,每个扩展数据运算逻辑模块包括:
第一子模块,被配置为基于所述第一运算级的扩展寄存器中存储的扩展数据计算用于存储到所述第二运算级的第一附加寄存器中的中间数据;
第二子模块,被配置为基于所述第一运算级的第一附加寄存器中存储的中间数据和所述第一运算级的第14扩展寄存器中存储的扩展数据计算用于存储到所述第二运算级的第14扩展寄存器中的扩展数据;
第三子模块,被配置为基于所述第一运算级的第3扩展寄存器中存储的扩展数据计算用于存储到所述第二运算级的第1扩展寄存器中的扩展数据;以及
第四子模块,被配置为基于所述第一运算级的第1扩展寄存器和第15扩展寄存器中存储的扩展数据计算用于存储到所述第二运算级的第15扩展寄存器中的扩展数据;
其中,用于存储到所述第二运算级的第(i-2)扩展寄存器中的扩展数据是所述第一运算级的第i扩展寄存器中存储的扩展数据,其中4≤i≤15且i为整数,并且用于存储到所述第二运算级的第0扩展寄存器中的扩展数据是所述第一运算级的第2扩展寄存器中存储的扩展数据。
18.一种计算芯片,其特征在于,所述计算芯片包括根据权利要求1-17中任一项所述的电路。
19.一种加密货币矿机,其特征在于,所述加密货币矿机包括一个或多个根据权利要求18所述的计算芯片。
CN202023083563.1U 2020-12-18 2020-12-18 执行哈希算法的电路、计算芯片和加密货币矿机 Active CN213518334U (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202023083563.1U CN213518334U (zh) 2020-12-18 2020-12-18 执行哈希算法的电路、计算芯片和加密货币矿机

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202023083563.1U CN213518334U (zh) 2020-12-18 2020-12-18 执行哈希算法的电路、计算芯片和加密货币矿机

Publications (1)

Publication Number Publication Date
CN213518334U true CN213518334U (zh) 2021-06-22

Family

ID=76428279

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202023083563.1U Active CN213518334U (zh) 2020-12-18 2020-12-18 执行哈希算法的电路、计算芯片和加密货币矿机

Country Status (1)

Country Link
CN (1) CN213518334U (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022127084A1 (zh) * 2020-12-18 2022-06-23 深圳比特微电子科技有限公司 执行哈希算法的电路、计算芯片、数据处理设备和方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022127084A1 (zh) * 2020-12-18 2022-06-23 深圳比特微电子科技有限公司 执行哈希算法的电路、计算芯片、数据处理设备和方法

Similar Documents

Publication Publication Date Title
CN111612622B (zh) 用于执行散列算法的电路和方法
Azarderakhsh et al. Parallel and high-speed computations of elliptic curve cryptography using hybrid-double multipliers
CN111600699A (zh) 用于实现散列算法的电路和方法
CN115344237A (zh) 结合Karatsuba和蒙哥马利模乘的数据处理方法
CN213518334U (zh) 执行哈希算法的电路、计算芯片和加密货币矿机
El-Razouk et al. New architectures for digit-level single, hybrid-double, hybrid-triple field multiplications and exponentiation using Gaussian normal bases
US6957243B2 (en) Block-serial finite field multipliers
Noor et al. Resource shared galois field computation for energy efficient AES/CRC in IoT applications
Lee et al. Area-efficient subquadratic space-complexity digit-serial multiplier for type-II optimal normal basis of $ GF (2^{m}) $ using symmetric TMVP and block recombination techniques
CN116318660B (zh) 一种消息扩展与压缩方法及相关装置
CN213482935U (zh) 执行哈希算法的电路、计算芯片和加密货币矿机
CN114648318A (zh) 执行哈希算法的电路、计算芯片、加密货币矿机和方法
Namin et al. A Fully Serial-In Parallel-Out Digit-Level Finite Field Multiplier in $\mathbb {F} _ {2^{m}} $ Using Redundant Representation
CN114978473B (zh) 一种sm3算法的处理方法、处理器、芯片及电子设备
CN104951279A (zh) 一种基于NEON引擎的向量化Montgomery模乘器的设计方法
CN212411183U (zh) 用于执行散列算法的运算电路、芯片和计算装置
CN114648319A (zh) 执行哈希算法的电路、计算芯片、加密货币矿机和方法
CN214151680U (zh) 运算电路、计算芯片和加密货币矿机
Gayathree et al. Design of High-Speed Adder with three operands for Image Blending Applications
Bernstein What output size resists collisions in a xor of independent expansions
KR100954843B1 (ko) 센서 모트에서의 블록 인덱싱 기반의 타원 곡선 암호 연산 방법, 그 장치 및 이를 기록한 기록 매체
CN212231468U (zh) 用于执行散列算法的电路以及执行比特币挖矿算法的装置
Mihajloska Trpcheska et al. Programmable processing element for crypto-systems on FPGAs
KR20000000770A (ko) 모듈러 곱셈장치
Liu et al. Multiprecision multiplication on ARMv8

Legal Events

Date Code Title Description
GR01 Patent grant
GR01 Patent grant