CN111612622B - 用于执行散列算法的电路和方法 - Google Patents
用于执行散列算法的电路和方法 Download PDFInfo
- Publication number
- CN111612622B CN111612622B CN202010432370.8A CN202010432370A CN111612622B CN 111612622 B CN111612622 B CN 111612622B CN 202010432370 A CN202010432370 A CN 202010432370A CN 111612622 B CN111612622 B CN 111612622B
- Authority
- CN
- China
- Prior art keywords
- registers
- extension
- stage
- data
- circuit
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION 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
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03K—PULSE TECHNIQUE
- H03K5/00—Manipulating of pulses not covered by one of the other main groups of this subclass
- H03K5/13—Arrangements having a single output and transforming input signals into pulses delivered at desired time intervals
- H03K5/135—Arrangements having a single output and transforming input signals into pulses delivered at desired time intervals by the use of time reference signals, e.g. clock signals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30047—Prefetch instructions; cache control instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30101—Special purpose registers
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03K—PULSE TECHNIQUE
- H03K3/00—Circuits for generating electric pulses; Monostable, bistable or multistable circuits
- H03K3/02—Generators characterised by the type of circuit or by the means used for producing pulses
- H03K3/027—Generators characterised by the type of circuit or by the means used for producing pulses by the use of logic circuits, with internal or external positive feedback
- H03K3/037—Bistable circuits
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0643—Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
- H04L9/3239—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/50—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/12—Details relating to cryptographic hardware or logic circuitry
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/12—Details relating to cryptographic hardware or logic circuitry
- H04L2209/122—Hardware reduction or efficient architectures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/12—Details relating to cryptographic hardware or logic circuitry
- H04L2209/125—Parallelization or pipelining, e.g. for accelerating processing of cryptographic operations
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- General Physics & Mathematics (AREA)
- Business, Economics & Management (AREA)
- General Engineering & Computer Science (AREA)
- Nonlinear Science (AREA)
- Power Engineering (AREA)
- Accounting & Taxation (AREA)
- Finance (AREA)
- Development Economics (AREA)
- Economics (AREA)
- Marketing (AREA)
- Strategic Management (AREA)
- Technology Law (AREA)
- General Business, Economics & Management (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Power Sources (AREA)
Abstract
本公开涉及用于实现散列算法的电路和方法。提供有一种用于执行散列算法的电路,包括:输入模块,用于接收数据;以及运算模块,用于基于接收到的数据计算散列值,运算模块包括以流水线结构布置的多个运算级,多个运算级包括第0运算级、第1运算级、直到第P运算级,P为大于1且小于流水线结构中运算级的数量的固定的正整数,其中,从第1运算级到第P运算级中的每个运算级包括:多个缓存寄存器,用于存储当前运算级的中间值并且以第一频率运行,以及多个扩展寄存器,用于存储当前运算级的扩展数据,并且包括以第一频率运行的第一组扩展寄存器和以第二频率运行的第二组扩展寄存器,其中,第二频率是第一频率的1/N倍。
Description
技术领域
本公开总体而言涉及用于实现散列算法(也可以称为哈希算法)的电路和方法,更具体而言,涉及用于实现比特币挖矿的电路和方法。
背景技术
比特币是一种P2P(Peer-to-Peer)形式的虚拟加密数字货币,其概念最初由中本聪在2008年11月1日提出,并于2009年1月3日正式诞生。比特币的独特之处在于,它不依靠特定货币机构发行,而是依据特定算法通过大量运算来产生。比特币交易使用整个P2P网络中众多节点构成的分布式数据库来确认并记录所有的交易行为,并使用密码学设计来确保安全性。
从密码学的角度而言,比特币是基于SHA-256散列算法的工作量证明POW(proofof work),其交易完整性取决于SHA-256的碰撞性和前映像阻力。散列算法是一种将可变长度的数据作为输入并产生固定长度的散列值作为输出的算法,其本质是对信息的提炼。自1993年以来,美国标准与技术研究所先后设计并发布了多个版本的安全散列算法SHA(Secure Hash Algorithm),SHA-256正是其中一种散列长度为256位的安全散列算法。
使用矿机来进行比特币挖矿的核心是根据矿机计算SHA-256的运算能力来获得奖励。对于矿机而言,芯片尺寸、芯片运行速度和芯片功耗是决定矿机性能的至关重要的三个因素,其中,芯片尺寸决定芯片成本,芯片运行的速度决定矿机运行速度,即算力,芯片功耗决定耗电程度,即挖矿成本。在实际应用中,衡量矿机最为重要的性能指标是单位算力所消耗的功耗,即功耗算力比。
为了提高安全性,在比特币协议中,SHA-256要进行两次。因此,对于比特币矿机而言,最重要的就是以较低的功耗算力比来实现散列算法SHA-256。
因此,存在对于具有更低功耗算力比的用于实现散列算法的电路和方法的需求,更具体而言,存在对于具有更低功耗算力比的用于实现比特币挖矿的电路和方法的需求。
发明内容
根据本公开的第一方面,提供了一种用于执行散列算法的电路,包括:输入模块,用于接收数据;以及运算模块,用于基于接收到的数据计算散列值,所述运算模块包括以流水线结构布置的多个运算级,所述多个运算级包括第0运算级、第1运算级、直到第P运算级,P为大于1且小于流水线结构中运算级的数量的固定的正整数,其中,从第1运算级到第P运算级中的每个运算级包括:多个缓存寄存器,用于存储当前运算级的中间值并且以第一频率运行,以及多个扩展寄存器,用于存储当前运算级的扩展数据,并且包括以所述第一频率运行的第一组扩展寄存器和以第二频率运行的第二组扩展寄存器,其中,第二频率是第一频率的1/N倍,N为大于1且不大于第二组扩展寄存器中扩展寄存器的数量的固定的正整数。
根据本公开的第二方面,提供了一种用于执行比特币挖矿算法的装置,包括如上所述的用于执行散列算法的电路。
根据本公开的第三方面,提供了一种用于执行算法的方法,该方法采用前文中所述的电路来执行该算法。
通过以下参照附图对本公开的示例性实施例的详细描述,本公开的其它特征及其优点将会变得清楚。
附图说明
构成说明书的一部分的附图描述了本公开的实施例,并且连同说明书一起用于解释本公开的原理。
参照附图,根据下面的详细描述,可以更加清楚地理解本公开,其中:
图1示出了散列算法的运算过程;
图2示出了SHA-256进行数据处理并输出数据摘要的总体过程;
图3示出了SHA-256的轮运算的运算过程;
图4示出了用于生成Wt的映射结构;
图5示出了用于实现SHA-256的电路中进行轮运算的流水线结构的示意图;
图6示例性地示出了根据本公开的实施例的用于执行散列算法的电路;
图7A示例性地示出了根据本公开的实施例的用于执行SHA-256的电路的部分结构的示意图,图7B示例性地示出了图7A中的用于执行SHA-256的电路所采用的时钟信号;
图8A示例性地示出了根据本公开的实施例的用于执行SHA-256的电路的部分结构的示意图,图8B示例性地示出了图8A中的用于执行SHA-256的电路所采用的时钟信号。
注意,在以下说明的实施方式中,有时在不同的附图之间共同使用同一附图标记来表示相同部分或具有相同功能的部分,而省略其重复说明。在本说明书中,使用相似的标号和字母表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
为了便于理解,在附图等中所示的各结构的位置、尺寸及范围等有时不表示实际的位置、尺寸及范围等。因此,所公开的发明并不限于附图等所公开的位置、尺寸及范围等。此外,附图不必按比例绘制,一些特征可能被放大以示出具体组件的细节。
具体实施方式
现在将参照附图来详细描述本公开的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本公开的范围。
以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本公开及其应用或使用的任何限制。也就是说,本文中的用于实现散列算法的电路和方法是以示例性的方式示出,来说明本公开中的电路或方法的不同实施例,而并非意图限制。本领域的技术人员将会理解,它们仅仅说明可以用来实施本发明的示例性方式,而不是穷尽的方式。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为授权说明书的一部分。
如前文中所述,散列算法将可变长度的数据作为输入并产生固定长度的散列值作为输出。散列算法具有这样的特点:对于包括多个数据的大的输入集合中的每个数据分别使用散列算法,相应的产生的多个散列值均匀地分布且看起来随机,概括地说,散列算法的首要目标是保证数据完整性,使得对于输入的数据中任何一位或几位的改变,都将极大可能改变所得到的散列值。
图1示意性地示出了散列算法的运算过程。首先,任意长度的输入数据被填充,以使得填充后的数据长度为某固定长度(例如512位)的整数倍,即,使得填充后的数据可以划分为多个具有上述固定长度的数据块。填充位的内容包括原始数据的位长度信息。接着散列算法会对各个固定长度的数据块分别进行运算处理,例如包括数据扩展和\或压缩等操作的多轮运算。当所有数据块都被使用以后,得到最终的固定长度的散列值。
对于包括多轮运算的散列算法(例如SHA-256)而言,可以使用具有多个运算级的流水线结构的电路来实现高速运算,其中每个运算级可以使用寄存器来存储在运算中实时变化的大量数据。寄存器基于时钟信号更新存储在其中的数据,时钟信号频率越高,寄存器的翻转频率越高,通常功耗也就越高。
本申请的发明人认为,现有的用于实现散列算法的电路的结构及其运行模式仍有待优化,特别是其流水线结构中大量寄存器的布置与运行模式。具体而言,在流水线结构中,每个运算级的寄存器都随着统一的时钟信号频率翻转,以确保更新的数据能够被存储在寄存器中。在这些数据更新之中,包括在相邻运算级的寄存器之间的数据移位,例如,在第一个时钟周期中,存储在第1运算级的寄存器中的数据D被移位到第2运算级的寄存器中,在第二个时钟周期中,第2运算级的寄存器中的数据D又被移位到第3运算级的寄存器。本申请的发明人想到,如果数据D在第2运算级中时并未参与任何运算,而是直到被移位到第3运算级中后才参与运算,那么第2运算级的寄存器的翻转其实是冗余的。如果能够在第一个时钟周期内使得第1运算级的寄存器不翻转,仍存储数据D,然后在第二时钟周期内使得该数据D直接从第1运算级移位到第3运算级,就能够在确保数据D能够正确参与运算的前提下,消除第2运算级的寄存器的冗余翻转,降低所需要的功耗。
但是,这样的设想在现有的使用统一时钟信号控制的电路结构中是无法实现的。因此,本申请的发明人提出改进的用于实现散列算法的电路和方法,从而实现上述优化设想。
为了更为清楚和直观的呈现本公开的发明构思,下文中将简要介绍SHA-256并以其作为散列算法的代表示例来描述根据本公开的实施例的用于实现散列算法的电路和方法。本领域技术人员将理解,根据本公开的实施例的用于实现散列算法的电路和方法适用于任何散列算法,甚至可以进一步应用到任何可以采用流水线结构且存在数据移位的电路和方法中,而不仅限于实现SHA-256。
SHA-256的输入是最大长度小于264位的数据,输出是256位的数据摘要,即散列值。输入数据以512位的数据块为单位进行处理。图2示出了SHA-256进行数据处理并输出数据摘要的总体过程。这个过程包含如后文中详细描述的步骤1到步骤5。
步骤1:附加填充位。对原始长度为L位的数据进行填充,使数据的长度模512 与448同余,即长度=448(mod 512)。即使原始数据已经满足上述长度要求,仍然需要进行填充,因此填充位数在1到512之间。填充由一个1和后续的0组成。
步骤2:附加长度。在填充后的数据后再附加一个64位的无符号整数,该64位的无符号整数表示填充前数据的长度L。
前述步骤1和步骤2的结果是产生了一个长度为512位的整数倍的扩展数据,扩展数据的长度可以表示为Q*512位,Q为大于1的正整数。如图2所示,该扩展数据被划分为Q个长度为512位的数据块M1、M2直到MQ。
步骤3:初始化散列缓存区。散列算法的初始值H0、中间值H1、H2直到HQ-1以及最终结果HQ依次保存于256位的散列缓冲区中,散列缓冲区可以包括8个32位的寄存器A、B、C、D、E、F、G和H。在运算开始时,首先将散列缓冲区初始化为初始值H0,即,将寄存器A、B、C、D、E、F、G和H分别初始化为如下列表格中所示的整数(十六进制)。
A=0X7A09E667 | E=0X510E527F |
B=0XBB67AE85 | D=0X9B05688C |
C=0X3C6EF372 | F=0X1F83D9AB |
D=0XA54FF53A | H=0X5BE0CD19 |
步骤4:以512位的数据块为单位处理数据。SHA-256的核心是依次针对512位的数据块M1、M2直到MQ中的每个数据块进行包括64轮运算的轮运算,轮运算在图 2中标记为f。
图3示出了SHA-256的轮运算的运算过程。在轮运算的64轮运算的每一轮中,都将散列缓存区的寄存器A到H中的数据作为输入,并更新散列缓存区的寄存器A到 H中的数据。在对数据块Mi的轮运算中的第0轮,散列缓存区里的值是中间值Hi-1,其中i为正整数且i≤Q。在对数据块Mi的轮运算中的每一轮,如第t轮(t为整数且满足0≤t≤63),使用一个32位的值Wt,该值由当前的512位的数据块Mi导出,导出算法是下面将要讨论的数据扩展算法。每一轮还将使用附加的常数Kt,用来使每轮的运算不同。第63轮的输出和第0轮的输入Hi-1相加就产生Hi,其中散列缓存区中的寄存器A到H中的每个寄存器中的32位的数据和Hi-1中对应的32位的数据进行模232的加法运算。
步骤5:输出。所有的Q个512位数据块都处理完以后,从第Q阶段输出的是256 位的数据摘要HQ,即散列值。
下面详细讨论SHA-256的轮运算中的64轮运算中的每一轮的内部逻辑。第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)
其中:
Ch(x,y,z)=(x AND y)⊕((NOT x)AND z)
Maj(x,y,z)=(x AND y)⊕(x AND z)⊕(y AND z)
Σ0(x)=ROTR2(x)⊕ROTR13(x)⊕ROTR22(x)
Σ1(x)=ROTR6(x)⊕ROTR11(x)⊕ROTR25(x)
其中,ROTRn(x)表示对32位的变量x循环右移n位;Wt为一个32位字,从当前的 256位输入数据块导出;Kt为一个32位附加常数;+为模232加;AND为32位按位与运算;NOT是取反的操作;⊕为异或运算。
接下来描述32位的字Wt是如何从512位的数据块Mi里导出的。图4例示了用于生成Wt的映射结构。如图4所示,Wt按照以下运算式得出:
对于0≤t≤15:Wt直接取自数据块Mi;
对于16≤t≤63:
Wt=σ1(Wt-2)+Wt-7+σ0(Wt-15)+Wt-16 (运算式2)
其中:
σ0(x)=ROTR7(x)⊕ROTR18(x)⊕SHR3(x)
σ1(x)=ROTR17(x)⊕ROTR19(x)⊕SHR10(x)
其中,ROTRn(x)表示对32位的变量x循环右移n位;SHRn(x)表示对32位变量x向左移动n位,右边填充0;⊕为异或运算;+为模232加。
SHA-256算法具有如下特性:所生成的散列码的每一个位都是全部输入位的函数。轮运算f多次复杂重复的运算使得结果充分混淆,从而使得随机选择两个数据,甚至于这两个数据有相似特征,都不太可能产生重复的散列码。
本领域技术人员将理解,上述对SHA-256的详细介绍是为了更为清楚的呈现本申请的发明构思,而不意图构成任何限制。本文中所提及的SHA-256包括公知可知的任何版本的SHA-256及其变型例和修改例。
针对散列算法中的多轮重复运算,可以采用流水线结构来并行运算多组不同的数据以提高运算效率。以实现SHA-256算法为例,由于对于每个512位的数据块要进行 64轮重复运算,因此可以采用64级的流水线结构来并行运算64组数据。
图5示出了用于实现SHA-256的电路中进行轮运算的流水线结构的示意图。如图 5所示,以虚线划分了流水线结构中的第t运算级、第t+1运算级和第t+2运算级。其中,每一运算级包括用于存储中间值的8个32位的寄存器A到H和分别用于存储扩展数据Wt到Wt+15的16个32位的寄存器R0至R15。参见前文中的运算式2可知,计算扩展数据Wt+16需要用到数据Wt+14、Wt+9、Wt+1、Wt,即,需要用到最多相隔16 轮的数据,因此流水线的每个运算级包括16个寄存器R0至R15,用以存储连续的16 轮的扩展数据Wt至Wt+15,从而使得能够计算下一个扩展数据Wt+16。
在散列算法的轮运算中,存在大量的数据移位操作。以SHA-256为例,对比参考图5以及运算式2可知,在每个运算级中,需要使用寄存器R0、R1、R9和R14中的数据来计算要存储在下一运算级的寄存器R15中的数据,而其余的寄存器R2到R8和R10到R13中的数据不需要经过逻辑运算,而是通过硬连线直接移位到下一运算级的相应寄存器中。而且,寄存器R13中的数据依次移位到寄存器R12、R11和R10,期间并不参与除数据移位以外的逻辑运算,这使得在流水线结构中存在不参与除数据移位以外的逻辑运算的一条数据移位路径R13-R12-R11-R10,类似的还存在另一条数据移位路径R8-R7-R6-R5-R4-R3-R2。
本申请的发明人认为,对于包括仅用于数据移位而不参与逻辑运算的寄存器(例如,寄存器R2到R8和R10到R13)的流水线结构,特别是包含数据移位路径的流水线结构,存在进一步优化的空间。在现有的用于实现散列运算的流水线结构中,所有寄存器都采用同一时钟信号进行控制,使得在每个时钟周期,所有寄存器都要发生翻转以存储新的数据。但是,对于仅用于数据移位而不参与逻辑运算的寄存器,其翻转操作其实并不是必要的,会造成功耗浪费。
基于此,本申请的发明人想到,可以使用降低的频率来控制运算级中仅用于数据移位而不参与逻辑运算的寄存器(例如,扩展寄存器R2到R8和R10到R13)以减少寄存器的冗余翻转,从而降低功耗。另外,由于用于生成中间值的逻辑运算(例如,参见运算式1)比用于生成扩展数据的逻辑运算(例如,参见运算式2)更为复杂,散列运算的流水线结构中的关键路径通常出现在计算中间值的逻辑硬件中,因此在计算扩展数据的逻辑硬件中存在一定的时序冗余,这使得即便对用于计算扩展数据的逻辑硬件进行一定修改,也不会导致出现的新的关键路径(即,不会导致最高运行频率降低),从而为对流水线结构进行改进提供了便利。
图6示出了根据本公开的实施例的用于执行散列算法的电路100,该电路100包括:输入模块110,用于接收数据;以及运算模块120,用于基于接收到的数据计算散列值。运算模块120包括以流水线结构布置的多个运算级,所述多个运算级包括第0运算级、第1运算级、直到第P运算级,P为大于1且小于流水线结构中运算级的数量的固定的正整数。为了附图清楚起见,图1中仅示意性地示出了两个运算级。
从第1运算级到第P运算级中的每个运算级可以包括:多个缓存寄存器,用于存储当前运算级的中间值并且以第一频率运行;以及多个扩展寄存器,用于存储当前运算级的扩展数据,并且包括以第一频率运行的第一组扩展寄存器和以第二频率运行的第二组扩展寄存器。其中,第二频率是第一频率的1/N倍,N为大于1且不大于第二组扩展寄存器中扩展寄存器的数量的固定的正整数。在根据本公开的实施例中,第二组扩展寄存器可以是各个运算级中仅用于数据移位而不参与逻辑运算的寄存器,而N的大小可以取决于流水线结构中的数据移位路径的长度。在根据本公开的一些实施例中,用电路100来实现 SHA-256,多个缓存寄存器可以包括用于存储中间值的寄存器A到H,多个扩展寄存器可以包括用于存储扩展数据的寄存器R0到R15,而数据移位路径可以是R13-R12-R11-R10或者R8-R7-R6-R5-R4-R3-R2。
在根据本公开的实施例中,第0运算级到第P运算级是流水线结构中连续的(P+1)个运算级,流水线结构还可以包括除第0运算级到第P运算级以外的其他运算级,例如,可以包括连接在第0运算级之前的一个或多个运算级,和/或可以包括连接在第P运算级之后的一个或多个运算级。在根据本公开的一些实施例中,流水线结构中的除第0运算级到第P运算级以外的其他运算级可以包括与第0运算级到第P运算级类似的结构。例如,流水线结构可以包括总共64个运算级,其中前12个运算级采用如上文中所述的第0运算级到第P运算级的结构(此时P取值为11,N例如可以取值为3),并且第13到第18个运算级也采用如上文中所述的第0运算级到第P运算级的结构(此时P取值为5,N例如可以取值为3)。
在根据本公开的实施例中,多个缓存寄存器和多个扩展寄存器可以包括边沿触发寄存器,例如上升沿触发的寄存器和/或下降沿触发的寄存器。多个缓存寄存器和多个扩展寄存器可以包括D触发器(DFF)和/或锁存器(Latch),锁存器可以例如是采用脉冲类型的时钟信号的锁存器。
继续参考图6,用于执行散列算法的电路100还包括时钟模块130,该时钟模块可以用于提供基准时钟信号CLK。基准时钟信号CLK具有第一频率和与第一频率对应的基准时钟周期,从第1运算级到第P运算级中的每个运算级的多个缓存寄存器和第一组扩展寄存器基于基准时钟信号运行。在运算模块120的多个运算级中,第1运算级到第P运算级中的每个运算级被配置为:在每个基准时钟周期内,基于来自相邻的前一运算级中的第一组扩展寄存器中的至少一个扩展寄存器中的扩展数据,生成用于存储在当前运算级的多个缓存寄存器中的中间值。
在根据本公开的一些实施例中,在运算模块120的多个运算级中,第N运算级到第P运算级中的每个运算级可以被配置为:在每个基准时钟周期内,基于在当前运算级的相邻的前N个运算级中的至少一个扩展寄存器中的扩展数据,生成用于存储在当前运算级的第一组扩展寄存器中的扩展数据。第i+j1*N运算级可以被配置为,在第C1+i+k*N个基准时钟周期内,基于在当前运算级的相邻的前N个运算级中的至少一个扩展寄存器中的扩展数据,生成用于存储在当前运算级的第二组扩展寄存器中的扩展数据。其中,N的定义如前文中所述,即,为大于1的固定的正整数,且第二频率是第一频率的1/N倍;C1为固定的正整数,其大小取决于在电路100启动的初始阶段进行数据初始化所需要的时钟周期数;i为0或小于 N的任意正整数,j1为小于P/N的任意正整数,k为0或任意正整数。例如,如果N=2,则i为0或1,那么第2运算级在第C1、第C1+2、第C1+4、第C1+6等等基准时钟周期内基于在第0 运算级和第1运算级中的至少一个扩展寄存器中的扩展数据,生成用于存储在第2运算级的第二组扩展寄存器中的扩展数据;第3运算级在第C1+1、第C1+3、第C1+5、第C1+7等等基准时钟周期内基于在第1运算级和第2运算级中的至少一个扩展寄存器中的扩展数据,生成用于存储在第3运算级的第二组扩展寄存器中的扩展数据;第4运算级在第C1、第C1+2、第C1+4、第C1+6等等基准时钟周期内,基于在第2运算级和第3运算级中的至少一个扩展寄存器中的扩展数据,生成用于存储在第4运算级的第二组扩展寄存器中的扩展数据,等等,依此类推。
在根据本公开的一些实施例中,第0运算级可以被配置为基于由输入模块110接收到的数据来确定第0运算级中的多个扩展寄存器中的扩展数据。
在根据本公开的一些实施例中,可以通过使用时钟模块130生成多个不同的时钟信号来实现对各个运算级的如前文中所述的控制。具体而言,时钟模块130除了能够生成基准时钟信号CLK以外,还可以被配置为生成具有第二频率的第1时钟信号CLK1到第N时钟信号 CLKN。其中,第1时钟信号CLK1到第N时钟信号CLKN的上升沿与基准时钟信号的上升沿对准,并且第2时钟信号到第N时钟信号中的每个时钟信号的上升沿比其前一个时钟信号的上升沿晚一个基准时钟周期,例如,第2时钟信号的上升沿比第1时钟信号的上升沿晚一个基准时钟周期,第3时钟信号的上升沿比第2时钟信号的上升沿晚一个基准时钟周期,依次类推。
注意,在本文中,当提及某个时钟信号时,并不意图表示电路中实际存在的某一个脉冲信号,而是可以表示电路中实际存在的、具有特定的某个频率和相位的一个或多个脉冲信号。以图6为例,虽然在文中表述为每个运算级的多个缓存寄存器都基于基准时钟信号CLK操作,但第0运算级和第p+q*N运算级各自使用的基准时钟信号CLK可以是由时钟模块130中的时钟树生成的各自独立但具有基准时钟信号CLK所要求的频率和相位的两个脉冲信号之一。
相应的,第p+q*N运算级中的第二组扩展寄存器基于第p时钟信号运行,p为不大于N的任意正整数,q为0或使得满足(p+q*N)不大于P的任意正整数,即,任意相邻的两个运算级的各自的第二组扩展寄存器所使用的时钟信号彼此频率相同、上升沿相差一个基准时钟周期。例如,第1运算级中的第二组扩展寄存器基于第1时钟信号CLK1运行,第2运算级中的第二组扩展寄存器基于第2时钟信号CLK2运行,第3运算级中的第二组扩展寄存器基于第1时钟信号CLK1运行,第4运算级中的第二组扩展寄存器基于第2时钟信号CLK2运行,等等。
在根据本公开的一些实施例中,从第1运算级到第P-N运算级中的每个运算级的第一组扩展寄存器中的一个扩展寄存器的输出端可以被耦接到相邻的后N个运算级中的每个运算级的第二组扩展寄存器中的一个扩展寄存器的输入端。第N+1运算级到第P运算级中的每个运算级的第一组扩展寄存器中的一个扩展级寄存器的输入端可以通过N选1多路选择器耦接到相邻的前N个运算级中的每个运算级的第二组扩展寄存器中的一个扩展寄存器的输出端。具体而言,由于第一频率是第二频率是N倍,因此以第一频率运行的寄存器的数据吞吐率是以第二频率运行的寄存器的数据吞吐率的N倍。因此,如果需要将以第一频率运行的寄存器的输出连接到以第二频率运行的寄存器的输入,则可以连接到N个以第二频率运行的寄存器。反之亦然,如果需要将以第二频率运行的寄存器的输出连接到以第一频率运行的寄存器的输入,则可以将N个以第二频率运行的寄存器的输出通过N选1多路选择器连接到一个以第一频率运行的寄存器。当以第二频率运行的寄存器的输出需要连接到另一个以第二频率运行的寄存器的输入时,由于频率一致,可以采用一对一的方式连接,但是需要跳过(N-1)个运算级。
在根据本公开的一些实施中,从第1运算级到第P运算级中的每个运算级的所述多个扩展寄存器还可以包括以第三频率运行的第三组扩展寄存器,其中第三频率是第一频率的 1/M倍,M为大于1、小于第三组扩展寄存器中扩展寄存器的数量且不等于N的固定的正整数。其中,第r+j2*M运算级可以被配置为,在第C2+r+k*M个基准时钟周期内,基于在当前运算级的相邻的前M个运算级中的至少一个扩展寄存器中的扩展数据,生成用于存储在当前运算级的第三组扩展寄存器中的扩展数据。其中,C2为固定的正整数,其大小取决于在电路启动的初始阶段进行数据初始化所需要的时钟周期数;r为0或小于M的任意正整数, j2为小于P/M的任意正整数,k为0或任意正整数。在一些实施例中,时钟模块可以相应地配置为生成用于控制第三组扩展寄存器的M个时钟信号。
根据本公开的实施例的用于执行散列算法的电路100可以用于实现SHA-256算法,并且可以以多种不同的配置来实现SHA-256算法。本领域技术人员将理解,根据本公开的实施例的用于实现散列算法的电路和方法适用于任何散列算法,甚至可以进一步应用到任何可以采用流水线结构且存在数据移位的电路和方法中,而不仅限于实现 SHA-256。
在采用根据本公开的电路100来实现SHA-256算法的一些实施例中,每个运算级的多个扩展寄存器可以包括16个32位寄存器R0至R15。寄存器R0至R15分别用于存储扩展数据Wt到Wt+15,因此其所参与的操作如运算式2所示。在SHA-256的轮运算中,存在一条数据移位路径R13-R12-R11-R10和另一条数据移位路径R8-R7-R6-R5-R4-R3-R2,这些数据移位路径中的寄存器可以用作运算级中的第二组扩展寄存器或第三组扩展寄存器,而其余的寄存器R0、R1、R9、R14和R15则可以用作运算级中的第一组扩展寄存器。
在采用根据本公开的电路100来实现SHA-256算法的一个优选实施例中,第二组扩展寄存器包括寄存器R2到R8以及R10到R13。由于第二组扩展寄存器中的较短的数据移位路径R13-R12-R11-R10的长度为4(即,包括4个串联移位的寄存器),因此N的最大值为4,即N 可以为2、3或4。相应地,第二组扩展寄存器R2到R8以及R10到R13的运行频率可以是第一组扩展寄存器R0、R1、R9、R14和R15的运行频率的1/N,因此第二组扩展寄存器R2到R8以及 R10到R13的功耗可以相应地降低(N-1)/N。
在采用根据本公开的电路100来实现SHA-256算法的另一个优选实施例中,可以采用不同的频率来分别控制寄存器R2到R8和寄存器R10到R13这两组寄存器。例如,第二组扩展寄存器可以包括寄存器R2到R8,而第三组扩展寄存器可以包括寄存器R10到R13。相应地,第二组扩展寄存器R2到R8用第二频率来控制,而第三组扩展寄存器R10到R13用第三频率来控制,这两组扩展寄存器的控制各自独立,互不影响。由于第二组扩展寄存器中的数据移位路径R8-R7-R6-R5-R4-R3-R2的长度为7,因此N的最大值为7,即,N=2、3、4、5、6或7。相应地,第二组扩展寄存器R2到R8的运行频率可以是多个扩展寄存器R0、R1、R9和R14和 R15的运行频率的1/N,因此第二组扩展寄存器R2到R8的功耗可以相应地降低(N-1)/N。由于第三组扩展寄存器中的数据移位路径R13-R12-R11-R10的长度为4,因此M的最大值为4,即,M=2、3或4。相应地,第三组扩展寄存器R10到R13的运行频率可以是多个扩展寄存器 R0、R1、R9和R14和R15的运行频率的1/M,因此第三组扩展寄存器R10到R13的功耗可以相应地降低(M-1)/M。有利地,根据本公开的实施例的用于实现散列算法的电路的功耗算力比得到了显著的提高。
在采用根据本公开的电路100来实现SHA-256算法的再一个优选实施例中,可以将参与逻辑运算的扩展寄存器也进行降频控制。例如,寄存器R9既用于数据移位又参与每一运算级的逻辑运算,但是与寄存器R9之间存在数据移位关系的寄存器R8和R10都是仅用于数据移位的寄存器,因此,可以对寄存器R9也进行降频控制。虽然这会导致对电路100中其他部分的额外修改,但是可以将两个数据移位的路径R13-R12-R11-R10和R8-R7-R6-R5-R4-R3-R2连接在一起,从而实现R13直到R2的超长数据移位路径。对电路100中的其他部分的额外修改例如可以包括,对与使用寄存器R9的输出相关的硬件部分的修改,例如,如果在修改之前寄存器R9的输出被硬连线到进行逻辑运算的硬件部分,则在修改之后,可能需要将寄存器R9的输出和另外一个寄存器的输出通过2选1多路选择器连接到进行逻辑运算的硬件部分。在一个实施例中,第一组扩展寄存器包括寄存器R0、R1、R14和R15,则,第二组扩展寄存器包括寄存器R2到R13,由于数据移位路径的长度延长到了12,因此N的最大值可以为 12,即,N可以为2、3、4、5、6、7、8、9、10、11或12。相应地,第二组扩展寄存器R2到R13的运行频率可以是多个扩展寄存器R0、R1和R14和R15的运行频率的1/N,因此第二组扩展寄存器R2到R13的功耗可以相应地降低(N-1)/N。
图7A示例性地示出了根据本公开的实施例的用于执行SHA-256的电路200的部分结构的示意图,图7B示例性地示出了图7A中的用于执行SHA-256的电路所采用的时钟信号。图7A所示的电路200是采用图6中所示的电路100来执行SHA-256的一个具体示例,因此前述关于用于执行散列算法的电路100的所有描述均适用于此。注意,为了使得附图更为清楚,图7A中仅示意性地示出了用于执行SHA-256的电路200的部分结构的部分连接关系,例如,图中的部分寄存器并未与任何表示数据移位的箭头连接,但这并不代表该寄存器没有参与操作,只是未在图中示出而已。
在图7A所示的用于执行SHA-256的电路中,每个运算级的多个扩展寄存器可以包括 16个32位寄存器R0至R15。寄存器R0至R15分别用于存储扩展数据Wt到Wt+15,因此其所参与的操作如运算式2所示。第二组扩展寄存器包括寄存器R10到R13,并且第二频率是第一频率的1/2,即N=2。
图7A中的箭头指示数据在寄存器间的移位关系。箭头的线条类型与其所代表的时钟信号的线条类型一致,三种不同的箭头分别对应于基准时钟信号CLK、第1时钟信号CLK1和第2时钟信号CLK2。每个箭头的线条类型指示其所指向的寄存器所采用的时钟信号是CLK、CLK1还是CLK2。图7A中还以寄存器的不同样式来区分寄存器所使用的时钟信号,如图7B中所示,使用时钟信号CLK、CLK1和CLK2的寄存器的样式被置于相应的时钟信号之后,作为示意。图7A中采用虚线框的寄存器表示其采用的时钟信号可以根据具体需要灵活确认。
在根据本公开的实施例中,多个缓存寄存器和多个扩展寄存器可以采用上升沿触发的寄存器,也可以采用下降沿触发的寄存器。本领域技术人员将理解,图7B示出的是采用上升沿触发的寄存器时所需的时钟信号,将这些时钟信号翻转180°,就可以得到采用下降沿触发的寄存器时所需的时钟信号。
如图7A和7B所示,每个运算级中的第一组扩展寄存器中的寄存器R9和R15依据基准时钟信号CLK运行。
进一步参考图7A和7B,第i+j1*2运算级被配置为,使得该运算级在第C1+i+k*2个基准时钟周期内,基于在当前运算级的相邻的前2个运算级中的至少一个扩展寄存器中的扩展数据,生成要存储在当前运算级的第二组扩展寄存器R10到R13的扩展数据。其中,C1为固定的正整数,其大小取决于在电路100启动的初始阶段进行数据初始化所需要的时钟周期数;i为0或1,j1为小于P/2的任意正整数,k为0或任意正整数。
继续参考图7A和7B,第p+q*2运算级中的第二组扩展寄存器R10到R13基于第p时钟信号CLKp运行,其中,p为1或2,q为0或使得满足(p+q*2)不大于P的任意正整数。具体而言,诸如第1运算级、第3运算级、第5运算级等等的第1+q*2运算级中的第二组扩展寄存器R10到R13基于第1时钟信号CLK1运行;诸如第2运算级、第4运算级等等的第2+q*2运算级中的第二组扩展寄存器R10到R13基于第2时钟信号CLK2运行。其中,第1时钟信号CLK1和第2时钟信号CLK2的上升沿与基准时钟信号CLK的上升沿对准,并且第2时钟信号CLK2 的上升沿比第1时钟信号CLK1的上升沿晚一个基准时钟周期。
图8A示例性地示出了根据本公开的实施例的用于执行SHA-256的电路300的部分结构的示意图,图8B示例性地示出了图8A中的用于执行SHA-256的电路所采用的时钟信号。图8A所示的电路300是采用图6中所示的电路100来执行SHA-256的一个具体示例,因此前述关于用于执行散列算法的电路100的所有描述均适用于此。注意,为了使得附图更为清楚,图8A中仅示意性地示出了用于执行SHA-256的电路300的部分结构的部分连接关系,例如,图中的部分寄存器并未与任何表示数据移位的箭头连接,但这并不代表该寄存器没有参与操作,只是未在图中示出而已。
在图8A所示的用于执行SHA-256的电路中,每个运算级的多个扩展寄存器可以包括 16个32位寄存器R0至R15。寄存器R0至R15分别用于存储扩展数据Wt到Wt+15,因此其所参与的操作如等式2所示。第二组扩展寄存器包括寄存器R10到R13,并且第二频率是第一频率的1/3,即N=3。
图8A中的箭头指示数据在寄存器间的移位关系。箭头的线条类型与其所代表的时钟信号的线条类型一致,四种不同的箭头类型分别对应于准时钟信号CLK、第1时钟信号CLK1、第2时钟信号CLK2和第3时钟信号CLK3。每个箭头的线条类型指示其所指向的寄存器所采用的时钟信号是CLK、CLK1还是CLK2、CLK3。图8A中还以寄存器的不同样式来区分寄存器所使用的时钟信号,如图8B中所示,使用时钟信号CLK、CLK1、CLK2和 CLK3的寄存器的样式被置于相应的时钟信号之后,作为示意。图8A中采用虚线框的寄存器表示其采用的时钟信号可以根据具体需要灵活确认。
在根据本公开的实施例中,多个缓存寄存器和多个扩展寄存器可以采用上升沿触发的寄存器,也可以采用下降沿触发的寄存器。本领域技术人员将理解,图8B示出的是采用上升沿触发的寄存器时所需的时钟信号,将这些时钟信号翻转180°,就可以得到采用下降沿触发的寄存器时所需的时钟信号。
如图8A和8B所示,每个运算级中的第一组扩展寄存器中的寄存器R9和R15依据标准时钟信号CLK运行。
进一步参考图8A和8B,第i+j1*3运算级被配置为,使得该运算级在第C1+i+k*3个基准时钟周期内,基于在当前运算级的相邻的前3个运算级中的至少一个扩展寄存器中的扩展数据,生成要存储在当前运算级的第二组扩展寄存器R10到R13的扩展数据。其中,C1为固定的正整数,其大小取决于在电路100启动的初始阶段进行数据初始化所需要的时钟周期数;i为0、1或2,j1为小于P/3的任意正整数,k为0或任意正整数。
继续参考图8A和8B,第p+q*3运算级中的第二组扩展寄存器R10到R13基于第p时钟信号CLKp运行,其中,p为1、2或3,q为0或使得满足(p+q*3)不大于P的任意正整数。具体而言,诸如第1运算级、第4运算级等等的第1+q*3运算级中的第二组扩展寄存器R10到R13基于第1时钟信号CLK1运行;诸如第2运算级、第5运算级等等的第2+q*3运算级中的第二组扩展寄存器R10到R13基于第2时钟信号CLK2运行;诸如第3运算级等等的第3+q*3运算级中的第二组扩展寄存器R10到R13基于第3时钟信号CLK3运行。其中,第1时钟信号CLK1、第2时钟信号CLK2和第3时钟信号CLK3的上升沿与基准时钟信号CLK的上升沿对准,第2 时钟信号CLK2的上升沿比第1时钟信号CLK1的上升沿晚一个基准时钟周期,并且第3时钟信号CLK3的上升沿比第2时钟信号CLK2的上升沿晚一个基准时钟周期。
根据本公开的实施例,还提供有用于执行比特币挖矿算法的装置,其包括根据前文中所述的用于执行散列算法的电路,例如电路100、电路200或电路300。本公开所提出的用于执行散列算法的电路非常适合于以降低的功耗算力比来实现SHA-256算法,从而非常适合于以降低的功耗算力比来实现比特币矿机。有利地,根据本公开的实施例的用于执行比特币挖矿算法的装置的功耗算力具有显著的优势。
根据本公开的实施例,还提供有用于执行算法的方法,其采用根据本公开所述的电路来执行算法。具体而言,该方法可以包括:使用输入模块来接收数据;以及使用运算模块基于接收到的数据计算散列值。运算模块可以包括以流水线结构布置的多个运算级,包括例如第0运算级、第1运算级、直到第P运算级,P为大于1且小于流水线结构中运算级的数量的固定的正整数。从第1运算级到第P运算级中的每个运算级可以包括:多个缓存寄存器,用于存储当前运算级的中间值并且以第一频率运行,以及多个扩展寄存器,用于存储当前运算级的扩展数据。多个扩展寄存器可以包括以第一频率运行的第一组扩展寄存器和以第二频率运行的第二组扩展寄存器,其中,第二频率是第一频率的1/N倍,N为大于1且不大于第二组扩展寄存器中扩展寄存器的数量的固定的正整数。
在根据本公开的一些实施例中,多个缓存寄存器和多个扩展寄存器可以包括边沿触发寄存器,例如上升沿触发的寄存器和/或下降沿触发的寄存器。多个缓存寄存器和多个扩展寄存器可以包括D触发器和/或锁存器,锁存器可以例如是采用脉冲类型的时钟信号的锁存器。
在根据本公开的一些实施例中,用于执行散列算法的方法还可以包括使用时钟模块提供基准时钟信号。基准时钟信号具有第一频率和与第一频率对应的基准时钟周期,从第1运算级到第P运算级中的每个运算级的多个缓存寄存器和第一组扩展寄存器可以基于基准时钟信号运行。从第1运算级到第P运算级中的每个运算级可以被配置为:在每个基准时钟周期内,基于来自相邻的前一运算级中的第一组扩展寄存器中的至少一个扩展寄存器中的扩展数据,生成用于存储在当前运算级的多个缓存寄存器中的中间值。第N运算级到第P运算级中的每个运算级可以被配置为:在每个基准时钟周期内,基于在当前运算级的相邻的前N个运算级中的至少一个扩展寄存器中的扩展数据,生成用于存储在当前运算级的第一组扩展寄存器中的扩展数据。第i+j1*N运算级可以被配置为,在第C1+i+k*N个基准时钟周期内,基于在当前运算级的相邻的前N个运算级中的至少一个扩展寄存器中的扩展数据,生成用于存储在当前运算级的第二组扩展寄存器中的扩展数据。其中,C1为固定的正整数,i为0或小于N的任意正整数,j1为小于P/N的任意正整数,k为0或任意正整数。
在根据本公开的用于执行散列算法的方法的一些实施例中,时钟模块还可以被配置为生成具有第二频率的第1时钟信号到第N时钟信号,其中,第1时钟信号到第N时钟信号的上升沿与基准时钟信号的上升沿对准,并且第2时钟信号到第N时钟信号中的每个时钟信号的上升沿比其前一个时钟信号的上升沿晚一个基准时钟周期。第p+q*N运算级中的第二组扩展寄存器可以基于第p时钟信号运行,p为不大于N的任意正整数,q为0使得满足(p+q*N)不大于P的或任意正整数。
在根据本公开的用于执行散列算法的方法的一些实施例中,从第1运算级到第P-N运算级中的每个运算级的第一组扩展寄存器中的一个扩展寄存器的输出端可以被耦接到相邻的后N个运算级中的每个运算级的第二组扩展寄存器中的一个扩展寄存器的输入端。第N+1运算级到第P运算级中的每个运算级的第一组扩展寄存器中的一个扩展级寄存器的输入端可以通过N选1多路选择器耦接到相邻的前N个运算级中的每个运算级的第二组扩展寄存器中的一个扩展寄存器的输出端。
在根据本公开的用于执行散列算法的方法的一些实施例中,从第1运算级到第P运算级中的每个运算级的多个扩展寄存器还可以包括以第三频率运行的第三组扩展寄存器,第三频率是第一频率的1/M倍,M为大于1、小于第三组扩展寄存器中扩展寄存器的数量且不等于N的固定的正整数。相应地,第r+j2*M运算级可以被配置为,在第 C2+r+k*M个基准时钟周期内,基于在当前运算级的相邻的前M个运算级中的至少一个扩展寄存器中的扩展数据,生成用于存储在当前运算级的第三组扩展寄存器中的扩展数据;其中,C2为固定的正整数,r为0或小于M的任意正整数,j2为小于P/M的任意正整数,k为0或任意正整数。
在根据本公开的用于执行散列算法的方法的一些实施例中,所述方法可以用于执行 SHA-256,在这种情况下,多个扩展寄存器包括16个32位寄存器R0至R15,其中,第一组扩展寄存器包括寄存器R0、R1、R9和R14和R15,第二组扩展寄存器包括寄存器R2到R8以及寄存器R10到R13,以及其中,N=2、3或4。
在根据本公开的用于执行散列算法的方法的一些实施例中,所述方法可以用于执行 SHA-256,在这种情况下,多个扩展寄存器包括16个32位寄存器R0至R15,其中,第一组扩展寄存器包括寄存器R0、R1和R14和R15,第二组扩展寄存器包括寄存器 R2到R13,以及其中,N=2、3、4、5、6、7、8、9、10、11或12。
在根据本公开的用于执行散列算法的方法的一些实施例中,所述方法可以用于执行SHA-256,在这种情况下,多个扩展寄存器包括16个32位寄存器R0至R15,其中,第一组扩展寄存器包括寄存器R0、R1、R9和R14和R15,第二组扩展寄存器包括寄存器R10到R13,第三组扩展寄存器包括寄存器R2到R8,以及其中,N=2、3、4, M=2、3、4、5、6或7。
根据本公开的实施例,还提供有用于执行比特币挖矿算法的方法,其包括根据前文中所述的用于执行散列算法的方法的步骤。
在这里示出和讨论的所有示例中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它示例可以具有不同的值。
在说明书及权利要求中的词语“前”、“后”、“顶”、“底”、“之上”、“之下”等,如果存在的话,用于描述性的目的而并不一定用于描述不变的相对位置。应当理解,这样使用的词语在适当的情况下是可互换的,使得在此所描述的本公开的实施例,例如,能够在与在此所示出的或另外描述的那些取向不同的其他取向上操作。
如在此所使用的,词语“示例性的”意指“用作示例、实例或说明”,而不是作为将被精确复制的“模型”。在此示例性描述的任意实现方式并不一定要被解释为比其它实现方式优选的或有利的。而且,本公开不受在上述技术领域、背景技术、发明内容或具体实施方式中所给出的任何所表述的或所暗示的理论所限定。
如在此所使用的,词语“基本上”意指包含由设计或制造的缺陷、器件或元件的容差、环境影响和/或其它因素所致的任意微小的变化。词语“基本上”还允许由寄生效应、噪音以及可能存在于实际的实现方式中的其它实际考虑因素所致的与完美的或理想的情形之间的差异。
上述描述可以指示被“连接”或“耦合”在一起的元件或节点或特征。如在此所使用的,除非另外明确说明,“连接”意指一个元件/节点/特征与另一种元件/节点/特征在电学上、机械上、逻辑上或以其它方式直接地连接(或者直接通信)。类似地,除非另外明确说明,“耦合”意指一个元件/节点/特征可以与另一元件/节点/特征以直接的或间接的方式在机械上、电学上、逻辑上或以其它方式连结以允许相互作用,即使这两个特征可能并没有直接连接也是如此。也就是说,“耦合”意图包含元件或其它特征的直接连结和间接连结,包括利用一个或多个中间元件的连接。
还应理解,“包括/包含”一词在本文中使用时,说明存在所指出的特征、整体、步骤、操作、单元和/或组件,但是并不排除存在或增加一个或多个其它特征、整体、步骤、操作、单元和/或组件以及/或者它们的组合。
本领域技术人员应当意识到,在上述操作之间的边界仅仅是说明性的。多个操作可以结合成单个操作,单个操作可以分布于附加的操作中,并且操作可以在时间上至少部分重叠地执行。而且,另选的实施例可以包括特定操作的多个实例,并且在其他各种实施例中可以改变操作顺序。但是,其它的修改、变化和替换同样是可能的。因此,本说明书和附图应当被看作是说明性的,而非限制性的。
虽然已经通过示例对本公开的一些特定实施例进行了详细说明,但是本领域的技术人员应该理解,以上示例仅是为了进行说明,而不是为了限制本公开的范围。在此公开的各实施例可以任意组合,而不脱离本公开的精神和范围。本领域的技术人员还应理解,可以对实施例进行多种修改而不脱离本公开的范围和精神。本公开的范围由所附权利要求来限定。
Claims (13)
1.一种用于执行散列算法的电路,其特征在于,包括:
输入模块,用于接收数据;以及
运算模块,用于基于接收到的数据计算散列值,所述运算模块包括以流水线结构布置的多个运算级,所述多个运算级包括第0运算级、第1运算级、直到第P运算级,P为大于1且小于流水线结构中运算级的数量的固定的正整数,
其中,从第1运算级到第P运算级中的每个运算级包括:
多个缓存寄存器,用于存储当前运算级的中间值并且以第一频率运行,以及
多个扩展寄存器,用于存储当前运算级的扩展数据,并且包括以所述第一频率运行的第一组扩展寄存器和以第二频率运行的第二组扩展寄存器,
其中,第二频率是第一频率的1/N倍,N为大于1且不大于第二组扩展寄存器中扩展寄存器的数量的固定的正整数。
2.根据权利要求1所述的电路,其特征在于,所述电路还包括:
时钟模块,用于提供基准时钟信号,所述基准时钟信号具有第一频率和与第一频率对应的基准时钟周期,从第1运算级到第P运算级中的每个运算级的多个缓存寄存器和第一组扩展寄存器基于所述基准时钟信号运行;
其中,从第1运算级到第P运算级中的每个运算级被配置为:在每个基准时钟周期内,基于来自相邻的前一运算级中的第一组扩展寄存器中的至少一个扩展寄存器中的扩展数据,生成用于存储在当前运算级的多个缓存寄存器中的中间值。
3.根据权利要求2所述的电路,其特征在于,
其中,第N运算级到第P运算级中的每个运算级被配置为:在每个基准时钟周期内,基于在当前运算级的相邻的前N个运算级中的至少一个扩展寄存器中的扩展数据,生成用于存储在当前运算级的第一组扩展寄存器中的扩展数据;
其中,第i+j1*N运算级被配置为,在第C1+i+k*N个基准时钟周期内,基于在当前运算级的相邻的前N个运算级中的至少一个扩展寄存器中的扩展数据,生成用于存储在当前运算级的第二组扩展寄存器中的扩展数据;
其中,C1为固定的正整数,i为0或小于N的任意正整数,j1为小于P/N的任意正整数,k为0或任意正整数。
4.根据权利要求2所述的电路,其特征在于,
其中,所述时钟模块还被配置为生成具有第二频率的第1时钟信号到第N时钟信号,
其中,第1时钟信号到第N时钟信号的上升沿与基准时钟信号的上升沿对准,并且第2时钟信号到第N时钟信号中的每个时钟信号的上升沿比其前一个时钟信号的上升沿晚一个基准时钟周期;以及
其中,第p+q*N运算级中的第二组扩展寄存器基于第p时钟信号运行,p为不大于N的任意正整数,q为0或使得满足(p+q*N)不大于P的任意正整数。
5.根据权利要求3所述的电路,其特征在于,
其中,从第1运算级到第P-N运算级中的每个运算级的第一组扩展寄存器中的一个扩展寄存器的输出端被耦接到相邻的后N个运算级中的每个运算级的第二组扩展寄存器中的一个扩展寄存器的输入端;以及
其中,第N+1运算级到第P运算级中的每个运算级的第一组扩展寄存器中的一个扩展级寄存器的输入端通过N选1多路选择器耦接到相邻的前N个运算级中的每个运算级的第二组扩展寄存器中的一个扩展寄存器的输出端。
6.根据权利要求2所述的电路,其特征在于,从第1运算级到第P运算级中的每个运算级的所述多个扩展寄存器还包括以第三频率运行的第三组扩展寄存器,
其中,第三频率是第一频率的1/M倍,M为大于1、小于第三组扩展寄存器中扩展寄存器的数量且不等于N的固定的正整数。
7.根据权利要求6所述的电路,其特征在于,
其中,第r+j2*M运算级被配置为,在第C2+r+k*M个基准时钟周期内,基于在当前运算级的相邻的前M个运算级中的至少一个扩展寄存器中的扩展数据,生成用于存储在当前运算级的第三组扩展寄存器中的扩展数据;
其中,C2为固定的正整数,r为0或小于M的任意正整数,j2为小于P/M的任意正整数,k为0或任意正整数。
8.根据权利要求1至5中任一项所述的电路,其特征在于,所述电路用于执行SHA-256,
其中,所述多个扩展寄存器包括16个32位寄存器R0至R15,
其中,所述第一组扩展寄存器包括寄存器R0、R1、R9和R14和R15,所述第二组扩展寄存器包括寄存器R2到R8以及寄存器R10到R13,以及
其中,N=2、3或4。
9.根据权利要求1至5中任一项所述的电路,其特征在于,所述电路用于执行SHA-256,
其中,所述多个扩展寄存器包括16个32位寄存器R0至R15,
其中,所述第一组扩展寄存器包括寄存器R0、R1和R14和R15,所述第二组扩展寄存器包括寄存器R2到R13,以及
其中,N=2、3、4、5、6、7、8、9、10、11或12。
10.根据权利要求6至7中任一项所述的电路,其特征在于,所述电路用于执行SHA-256,
其中,所述多个扩展寄存器包括16个32位寄存器R0至R15,
其中,所述第一组扩展寄存器包括寄存器R0、R1、R9和R14和R15,所述第二组扩展寄存器包括寄存器R10到R13,所述第三组扩展寄存器包括寄存器R2到R8,以及
其中,N=2、3、4,M=2、3、4、5、6或7。
11.根据权利要求1所述电路,其特征在于,所述多个缓存寄存器和所述多个扩展寄存器包括D触发器和/或锁存器。
12.一种用于执行比特币挖矿算法的装置,包括根据权利要求1至11中任一项所述的电路。
13.一种用于执行算法的方法,其特征在于,采用根据权利要求1-11中任一项所述的电路来执行所述算法。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010432370.8A CN111612622B (zh) | 2020-05-20 | 2020-05-20 | 用于执行散列算法的电路和方法 |
PCT/CN2021/093612 WO2021233198A1 (zh) | 2020-05-20 | 2021-05-13 | 用于执行散列算法的电路和方法 |
TW110117281A TWI779606B (zh) | 2020-05-20 | 2021-05-13 | 用於執行散列算法的電路和方法 |
US17/602,166 US11716076B2 (en) | 2020-05-20 | 2021-05-13 | Circuits and methods for performing hash algorithm |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010432370.8A CN111612622B (zh) | 2020-05-20 | 2020-05-20 | 用于执行散列算法的电路和方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111612622A CN111612622A (zh) | 2020-09-01 |
CN111612622B true CN111612622B (zh) | 2021-03-23 |
Family
ID=72203478
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010432370.8A Active CN111612622B (zh) | 2020-05-20 | 2020-05-20 | 用于执行散列算法的电路和方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11716076B2 (zh) |
CN (1) | CN111612622B (zh) |
TW (1) | TWI779606B (zh) |
WO (1) | WO2021233198A1 (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111612622B (zh) | 2020-05-20 | 2021-03-23 | 深圳比特微电子科技有限公司 | 用于执行散列算法的电路和方法 |
CN114648319A (zh) | 2020-12-18 | 2022-06-21 | 深圳比特微电子科技有限公司 | 执行哈希算法的电路、计算芯片、加密货币矿机和方法 |
CN114648318A (zh) * | 2020-12-18 | 2022-06-21 | 深圳比特微电子科技有限公司 | 执行哈希算法的电路、计算芯片、加密货币矿机和方法 |
CN112787799B (zh) * | 2020-12-30 | 2022-07-26 | 浙江萤火虫区块链科技有限公司 | 一种Poseidon Hash算法实现电路及其实现方法 |
CN113642725B (zh) * | 2021-10-13 | 2022-03-08 | 清华大学 | 用于消息散列算法的消息扩展的光电集成电路 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102981797A (zh) * | 2012-11-02 | 2013-03-20 | 中国航天科技集团公司第九研究院第七七一研究所 | 基于cordic算法的反馈和流水线结构相结合的三角函数运算器 |
CN106575215A (zh) * | 2014-09-04 | 2017-04-19 | 英特尔公司 | Sm3哈希算法加速处理器、方法、系统和指令 |
CN108427575A (zh) * | 2018-02-01 | 2018-08-21 | 深圳市安信智控科技有限公司 | 全流水结构sha-2消息扩展优化方法 |
CN109936441A (zh) * | 2019-01-28 | 2019-06-25 | 湖北大学 | 一种基于数据存储的流水sha256硬件实现方法 |
CN110543481A (zh) * | 2019-08-23 | 2019-12-06 | 紫光展锐(重庆)科技有限公司 | 数据处理方法、装置、计算机设备及存储介质 |
US20200036517A1 (en) * | 2018-07-24 | 2020-01-30 | Martin Spence Denham | Secure hash algorithm implementation |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5442498A (en) * | 1993-11-08 | 1995-08-15 | International Business Machines Corporation | Asynchronous track code encodement and detection for disk drive servo control system |
US6879341B1 (en) * | 1997-07-15 | 2005-04-12 | Silverbrook Research Pty Ltd | Digital camera system containing a VLIW vector processor |
US5987620A (en) * | 1997-09-19 | 1999-11-16 | Thang Tran | Method and apparatus for a self-timed and self-enabled distributed clock |
US7827223B2 (en) * | 2004-04-22 | 2010-11-02 | Fortress Gb Ltd. | Accelerated throughput synchronized word stream cipher, message authenticator and zero-knowledge output random number generator |
US7428652B2 (en) | 2005-05-10 | 2008-09-23 | Intel Corporation | Programmable phase generator for cross-clock communication where the clock frequency ratio is a rational number |
US8762439B2 (en) * | 2011-04-14 | 2014-06-24 | Apple Inc. | System and method for random number generation using asynchronous boundaries and phase locked loops |
US8874933B2 (en) * | 2012-09-28 | 2014-10-28 | Intel Corporation | Instruction set for SHA1 round processing on 128-bit data paths |
US10108805B2 (en) * | 2013-06-26 | 2018-10-23 | Intel Corporation | Method and apparatus to process SHA-2 secure hashing algorithm |
US9658854B2 (en) | 2014-09-26 | 2017-05-23 | Intel Corporation | Instructions and logic to provide SIMD SM3 cryptographic hashing functionality |
CN105577363B (zh) * | 2016-01-29 | 2018-06-01 | 江苏沁恒股份有限公司 | 针对sm4密码算法的可扩展流水线电路及其实现方法 |
US10140458B2 (en) * | 2016-04-07 | 2018-11-27 | Intel Corporation | Parallelized authentication encoding |
US10142098B2 (en) * | 2016-06-29 | 2018-11-27 | Intel Corporation | Optimized SHA-256 datapath for energy-efficient high-performance Bitcoin mining |
US10755242B2 (en) * | 2016-09-23 | 2020-08-25 | Intel Corporation | Bitcoin mining hardware accelerator with optimized message digest and message scheduler datapath |
US10326596B2 (en) * | 2016-10-01 | 2019-06-18 | Intel Corporation | Techniques for secure authentication |
CN107835071B (zh) | 2017-11-03 | 2020-02-21 | 中国人民解放军国防科技大学 | 一种提高键入-散列法运算速度的方法和装置 |
US10705842B2 (en) * | 2018-04-02 | 2020-07-07 | Intel Corporation | Hardware accelerators and methods for high-performance authenticated encryption |
CN108959168B (zh) * | 2018-06-06 | 2020-09-18 | 厦门大学 | 基于片上内存的sha512全流水电路及其实现方法 |
US11251781B2 (en) * | 2018-06-25 | 2022-02-15 | Canaan Creative Co., Ltd. | Dynamic D flip-flop, data operation unit, chip, hash board and computing device |
US10928847B2 (en) * | 2018-09-29 | 2021-02-23 | Intel Corporation | Apparatuses and methods for frequency scaling a message scheduler data path of a hashing accelerator |
CN110489370B (zh) * | 2019-07-15 | 2023-05-23 | 广东工业大学 | 一种哈希算法sha256消息预处理的硬件填充方法 |
CN110430040B (zh) * | 2019-07-31 | 2024-01-30 | 武汉芯昌科技有限公司 | 一种低功耗sha256算法中的消息扩展电路 |
CN111612622B (zh) | 2020-05-20 | 2021-03-23 | 深圳比特微电子科技有限公司 | 用于执行散列算法的电路和方法 |
-
2020
- 2020-05-20 CN CN202010432370.8A patent/CN111612622B/zh active Active
-
2021
- 2021-05-13 US US17/602,166 patent/US11716076B2/en active Active
- 2021-05-13 WO PCT/CN2021/093612 patent/WO2021233198A1/zh active Application Filing
- 2021-05-13 TW TW110117281A patent/TWI779606B/zh active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102981797A (zh) * | 2012-11-02 | 2013-03-20 | 中国航天科技集团公司第九研究院第七七一研究所 | 基于cordic算法的反馈和流水线结构相结合的三角函数运算器 |
CN106575215A (zh) * | 2014-09-04 | 2017-04-19 | 英特尔公司 | Sm3哈希算法加速处理器、方法、系统和指令 |
CN108427575A (zh) * | 2018-02-01 | 2018-08-21 | 深圳市安信智控科技有限公司 | 全流水结构sha-2消息扩展优化方法 |
US20200036517A1 (en) * | 2018-07-24 | 2020-01-30 | Martin Spence Denham | Secure hash algorithm implementation |
CN109936441A (zh) * | 2019-01-28 | 2019-06-25 | 湖北大学 | 一种基于数据存储的流水sha256硬件实现方法 |
CN110543481A (zh) * | 2019-08-23 | 2019-12-06 | 紫光展锐(重庆)科技有限公司 | 数据处理方法、装置、计算机设备及存储介质 |
Non-Patent Citations (1)
Title |
---|
面向密码算法的存储计算结构研究;赵宽;《中国优秀硕士学位论文全文数据库 信息科技辑》;20150515(第05期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
US11716076B2 (en) | 2023-08-01 |
WO2021233198A1 (zh) | 2021-11-25 |
TWI779606B (zh) | 2022-10-01 |
US20220149827A1 (en) | 2022-05-12 |
CN111612622A (zh) | 2020-09-01 |
TW202143076A (zh) | 2021-11-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111612622B (zh) | 用于执行散列算法的电路和方法 | |
KR102137956B1 (ko) | 블록 마이닝 방법 및 장치 | |
CN111600699A (zh) | 用于实现散列算法的电路和方法 | |
US5943248A (en) | w-bit non-linear combiner for pseudo-random number generation | |
Noor et al. | Resource shared galois field computation for energy efficient AES/CRC in IoT applications | |
Van Hieu et al. | Hardware implementation for fast block generator of Litecoin blockchain system | |
CN212231468U (zh) | 用于执行散列算法的电路以及执行比特币挖矿算法的装置 | |
CN213518334U (zh) | 执行哈希算法的电路、计算芯片和加密货币矿机 | |
Namin et al. | A new finite-field multiplier using redundant representation | |
CN112988235B (zh) | 一种高效率第三代安全散列算法的硬件实现电路及方法 | |
CN116155481A (zh) | 一种sm3算法的数据加密实现方法和装置 | |
Alam et al. | An area optimized reconfigurable encryptor for AES-Rijndael | |
TW202141302A (zh) | 執行哈希算法的電路、計算晶片、數據處理設備和方法 | |
CN112003603B (zh) | 一种消息扩展电路、方法、芯片、家用电器以及存储介质 | |
Van Beirendonck et al. | A Lyra2 FPGA core for Lyra2REv2-based cryptocurrencies | |
Jansen et al. | Cascade jump controlled sequence generator (CJCSG) | |
Jeon | One-way hash function based on cellular automata | |
TWI766754B (zh) | 執行哈希算法的電路、計算晶片、數據處理設備和方法 | |
Hulle et al. | Compact Reconfigurable Architecture for Sosemanuk Stream Cipher | |
Mihajloska Trpcheska et al. | Programmable processing element for crypto-systems on FPGAs | |
CN213482935U (zh) | 执行哈希算法的电路、计算芯片和加密货币矿机 | |
CN221466006U (zh) | 一种逻辑运算电路,安全散列算法的压缩电路和芯片 | |
Hasan et al. | Sequential multiplier with sub-linear gate complexity | |
Bevi et al. | FPGA based pipelined architecture for RC5 encryption | |
Stefan | Hardware framework for the rabbit stream cipher |
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 |