CN212515801U - 时钟树、哈希引擎、计算芯片、算力板和加密货币挖矿机 - Google Patents
时钟树、哈希引擎、计算芯片、算力板和加密货币挖矿机 Download PDFInfo
- Publication number
- CN212515801U CN212515801U CN202021414137.9U CN202021414137U CN212515801U CN 212515801 U CN212515801 U CN 212515801U CN 202021414137 U CN202021414137 U CN 202021414137U CN 212515801 U CN212515801 U CN 212515801U
- Authority
- CN
- China
- Prior art keywords
- register
- clock
- registers
- stage
- coupled
- 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
Abstract
本公开涉及一种时钟树、哈希引擎、计算芯片、算力板和加密货币挖矿机。该哈希引擎包括:运算模块,包括以流水线结构布置的多个运算级以使得数字信号沿着多个运算级依次传递,每个运算级包括第一、第二、第三和第四组寄存器,第四组寄存器中的每个寄存器的输入端耦接到前一运算级的相应寄存器的输出端,且输出端耦接到下一运算级中的相应寄存器的输入端;和时钟模块,包括多级时钟驱动电路,用于传递来自于时钟源的时钟信号,时钟信号和数据信号的传递方向相同;和向每个寄存器提供时钟信号的多个时钟缓冲电路,用于向第四组寄存器提供时钟信号的时钟缓冲电路的输入端耦接到用于向前一运算级中的相应寄存器提供时钟信号的时钟缓冲电路的输出端。
Description
技术领域
本公开涉及用于执行哈希算法的电路,更具体地,涉及包含时钟树电路、哈希引擎、计算芯片、算力板和加密货币挖矿机。
背景技术
比特币系统是最早提出并且目前得到最广泛认可的区块链系统。比特币系统的主要作用之一是用作去中心化的公共记账本,其可以记录各种金融交易。之所以称为″去中心化″,是因为比特币不是由单一的中心化的货币机构发行的,而是依据特定算法通过运算来产生的。比特币系统使用计算机网络的各节点构成的分布式数据库来确认并记录所有的交易行为,并使用密码学设计来确保安全性。
目前比特币协议采用安全哈希算法SHA(Secure Hash Algorithm)-256。SHA系列算法是美国标准与技术研究所发布的,其中SHA-256是一种哈希长度为256位的安全哈希算法。
根据比特币协议,第一个成功确定候选区块的工作量证明POW(proof of work)的节点有权将该区块添加到区块链,并有权生成新的加密货币单元作为奖励。这个过程就被称为″挖矿″,执行比特币算法的节点被称为挖矿机或矿机。
如果使用专用集成电路(ASIC)来执行挖矿过程,也即使用ASIC芯片来执行SHA-256算法,则设计目标的关键是改善芯片尺寸、芯片运行速度和芯片功耗。芯片尺寸决定芯片成本,芯片运行速度决定矿机运行速度即算力,芯片功耗决定耗电程度即挖矿成本。在实际应用中,衡量矿机最为重要的性能指标是单位算力所消耗的功率,即功耗算力比。因此,对于比特币矿机而言,最重要的就是以较低的功耗算力比来实现SHA-256算法。
因此,存在对于具有更低功耗算力比的用于实现哈希算法的电路的需求。
实用新型内容
根据本公开的第一方面,提供了一种哈希引擎,包括:输入模块,被配置为接收数据块;运算模块,被配置为对接收的数据块进行哈希运算,所述运算模块包括以流水线结构布置的多个运算级以使得基于所述数据块的数字信号沿着所述多个运算级依次传递,所述多个运算级中的每个运算级包括多个寄存器和组合逻辑模块,所述多个寄存器包括:第一组寄存器,所述第一组寄存器中的每个寄存器的输出端耦接到当前运算级的组合逻辑模块的输入端并且耦接到下一运算级中的相应寄存器的输入端;第二组寄存器,所述第二组寄存器中的每个寄存器的输出端耦接到当前运算级的组合逻辑模块的输入端但不耦接到下一运算级中的寄存器的输入端;第三组寄存器,所述第三组寄存器中的每个寄存器的输入端耦接到前一运算级的组合逻辑模块的输出端;以及第四组寄存器,所述第四组寄存器中的每个寄存器的输入端耦接到前一运算级中的相应寄存器的输出端,并且其输出端耦接到下一运算级中的相应寄存器的输入端;和时钟模块,被配置为向所述多个运算级的每个运算级的所述多个寄存器提供时钟信号,所述时钟模块包括:多级时钟驱动电路,被配置为传递来自于时钟源的时钟信号并且向所述多个运算级提供时钟信号,其中对于所述多个运算级中的每个运算级的所述多个寄存器,所述数字信号的传递方向与所述时钟信号的传递方向相同;和多个时钟缓冲电路,被配置为接收来自所述多级时钟驱动电路的时钟信号并且向所述多个寄存器中的每个寄存器提供时钟信号,其中用于向当前运算级的所述第四组寄存器中的每个寄存器提供时钟信号的时钟缓冲电路的输入端耦接到用于向前一运算级中的相应寄存器提供时钟信号的时钟缓冲电路的输出端。
用于每一当前运算级的所述第一组寄存器和所述第三组寄存器中的每个寄存器的时钟缓冲电路的输入端耦接到用于当前运算级的时钟驱动电路的输出端,以及用于向当前运算级的所述第二组寄存器中的每个寄存器提供时钟信号的时钟缓冲电路的输入端耦接到用于向前一运算级中的相应寄存器提供时钟信号的时钟缓冲电路的输出端。
每一当前运算级的所述多个寄存器还包括一个或多个附加寄存器,所述一个或多个附加寄存器中的一个附加寄存器的输出端耦接到当前运算级的所述第一组寄存器中的特定寄存器的输入端,其输入端耦接到前一运算级的对应于所述特定寄存器的相应寄存器的输出端,并且其时钟信号端耦接到所述多个时钟缓冲电路中的一个时钟缓冲电路的输出端,该一个时钟缓冲电路的输入端耦接到用于向前一运算级中的对应于所述特定寄存器的相应寄存器提供时钟信号的时钟缓冲电路的输出端。
根据本公开的哈希引擎可以用于执行SHA-256算法。
根据本公开的第二方面,提供了一种时钟树电路,包括:时钟源,用于提供基本时钟信号;和多级时钟驱动电路,其中来自于所述时钟源的基本时钟信号沿着所述多级时钟驱动电路依次传递,所述多级时钟驱动电路中的每一级时钟驱动电路用于为多个运算级的每个运算级提供时钟信号,其中所述多个运算级以流水线结构布置以使得基于接收的数据块的数字信号沿着所述多个运算级依次传递,所述多个运算级中的每个运算级包括多个寄存器和组合逻辑模块,其中对于所述多个运算级中的每个运算级的所述多个寄存器,所述数字信号的传递方向与所述时钟信号的传递方向相同,所述多个寄存器包括第一组寄存器、第二组寄存器、第三组寄存器和第四组寄存器,所述第一组寄存器中的每个寄存器的输出端耦接到当前运算级的组合逻辑模块的输入端并且耦接到下一运算级中的相应寄存器的输入端,所述第二组寄存器中的每个寄存器的输出端耦接到当前运算级的组合逻辑模块的输入端但不耦接到下一运算级中的寄存器的输入端,所述第三组寄存器中的每个寄存器的输入端耦接到前一运算级的组合逻辑模块的输出端,以及所述第四组寄存器中的每个寄存器的输入端耦接到前一运算级中的相应寄存器的输出端,并且其输出端耦接到下一运算级中的相应寄存器的输入端;和多个时钟缓冲电路,用于接收来自于所述多级时钟驱动电路的信号并且向所述多个寄存器中的每个寄存器提供时钟信号,其中用于向当前运算级的所述第四组寄存器中的每个寄存器提供时钟信号的时钟缓冲电路的输入端耦接到用于向前一运算级中的相应寄存器提供时钟信号的时钟缓冲电路的输出端。
根据本公开的第三方面,提供了一种计算芯片,包括一个或多个如前所述的哈希引擎。
根据本公开的第四方面,提供了一种算力板,包括一个或多个如前所述的计算芯片。
根据本公开的第五方面,提供了一种加密货币挖矿机,包括一个或多个如前所述的算力板。
根据参照附图的以下描述,本公开的其它特性特征和优点将变得清晰。
附图说明
所包括的附图用于说明性目的,并且仅用于提供本文所公开的发明性装置以及将其应用到计算设备的方法的可能结构和布置的示例。这些附图决不限制本领域的技术人员在不脱离实施方案的实质和范围的前提下可对实施方案进行的在形式和细节方面的任何更改。所述实施方案通过下面结合附图的具体描述将更易于理解,其中类似的附图标记表示类似的结构元件。
图1是根据本公开的实施例的SHA-256哈希引擎的示意图。
图2A是示出了在流水线架构中通过正向时钟树来驱动寄存器的示意图。
图2B是示出了在流水线架构中通过反向时钟树来驱动寄存器的示意图。
图3A和3B是示出了寄存器的建立时间和保持时间的示意图。
图4是示出了一种正向时钟树结构的简化示意图。
图5是示出了根据本公开的实施例的时钟树结构的示意图。
图6是示出了采用图5的时钟树结构的哈希引擎的示意图。
注意,在以下说明的实施方式中,有时在不同的附图之间共同使用同一附图标记来表示相同部分或具有相同功能的部分,而省略其重复说明。在本说明书中,使用相似的标号和字母表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
为了便于理解,在附图等中所示的各结构的位置、尺寸及范围等有时不表示实际的位置、尺寸及范围等。因此,所公开的发明并不限于附图等所公开的位置、尺寸及范围等。此外,附图不必按比例绘制,一些特征可能被放大以示出具体组件的细节。
具体实施方式
现在将参照附图来详细描述本公开的各种示例性实施例。应当注意,除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本公开的范围。
以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本公开及其应用或使用的任何限制。也就是说,本文中的哈希引擎是以示例性的方式示出,来说明本公开中的电路的不同实施例,而并非意图限制。本领域的技术人员将会理解,它们仅仅说明可以用来实施本公开的示例性方式,而不是穷尽的方式。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为授权说明书的一部分。
本公开提出了一种新颖的时钟树方案,其可以用于具有流水线(pipeline)架构的任何加密算法电路中。为了描述方便,下面以SHA-256哈希算法电路为例进行阐述。本领域技术人员应当理解,SHA-256仅仅是本公开的时钟树方案可以应用于其中的一个示例,本公开还可用于其他具有流水线结构的加密算法电路中。
现在参考图1,其是根据本公开的实施例的SHA-256哈希引擎的示意图。本领域技术人员将理解,以下对 SHA-256的介绍是为了更为清楚的呈现本申请的发明构思,而不意图构成任何限制。本文中所提及的SHA-256 包括公知可知的任何版本的SHA-256及其变型例和修改例。
如图1所示,哈希引擎10包括输入模块101、运算模块102和时钟模块103。输入模块101用于接收数据块。运算模块102可以对接收的数据块执行SHA-256哈希运算。时钟模块103用于为运算模块102提供所需的时钟信号。
如图1所示,运算模块102包括以流水线结构布置的多个运算级,第1级......第i级......第N级。N可以是 32、64、128等。每个运算级可以包括寄存器AvH和对应的运算逻辑、寄存器W0~W15和对应的组合逻辑以及用于存储常数K的存储器。寄存器W0~W15通常被称为扩展寄存器,因为它们被配置为将输入数据块进行扩展。寄存器A~H通常被称为压缩寄存器,因为它们被配置为将扩展的数据压缩成哈希值。
如图1所示,在寄存器W0~W15中,每一级的寄存器W1~W15的输出提供给下一级的寄存器W0~W14作为输入,而寄存器W0、W1、W9、W14的输出提供给组合逻辑作为输入,该组合逻辑的输出提供给下一级的寄存器W15作为输入。也就是说,每一级的寄存器W0、Wi、W9、W14、W15与前一级或当前级的组合逻辑运算有关,其余寄存器则与前一级或当前级的组合逻辑运算无关。
时钟模块103可以为运算模块102提供时钟信号,具体来说,为运算模块102中的每个寄存器提供时钟信号。通常,时钟模块103输出的时钟信号是由单个时钟源导出的。然而在像SHA-256这样的芯片中,存在着大量的诸如寄存器之类的时序器件。如果用单个时钟源信号直接驱动时序器件,则驱动负载能力会成为问题,并且从时钟源到寄存器时钟端的布线过长带来的延时过大。因此,通常采用时钟树的架构来提供时钟信号,即在时钟源和时序器件之间插入缓冲器或者反相器来形成一个时钟分布网络。在流水线架构中,存在正向时钟树和反向时钟树两种时钟树结构。
图2A是示出了在流水线架构中通过正向时钟树来驱动寄存器的示意图。如图所示,由时钟源200和多级时钟驱动电路201-1......201-N组成的时钟树来驱动各流水线运算级202-1......202-N。由于时钟信号的传递方向(从左到右)与流水线的数据传递方向(从左到右)一致,因此该时钟树被称为正向时钟树。
图2B是示出了在流水线架构中通过反向时钟树来驱动寄存器的示意图。如图所示,由时钟源200和多级时钟驱动电路201-1......201-N组成的时钟树来驱动各流水线运算级202-N......202-1。由于时钟信号的传递方向 (从右到左)与流水线的数据传递方向(从左到右)相反,因此该时钟树被称为反向时钟树。
不管采用何种时钟树结构,都应当满足寄存器的建立时间(Setup Time)和保持时间(Hold Time)要求。图 3A和3B是示出了寄存器的建立时间和保持时间的示意图。建立时间Tsetip是指在时钟沿到来之前数据必须维持稳定的时间。如果建立时间不满足要求,那么数据不能在这个时钟沿被稳定地打入寄存器。保持时间Thold是指在时钟沿到来之后数据必须维持稳定的时间。如果保持时间不满足要求,那么数据同样不能被稳定地打入寄存器。
这里以数字电路设计中一个常见的电路来进行详细说明。如图3A所示,该电路包括触发器301和303以及组合逻辑302。触发器301输出的数据信号Q1经组合逻辑302传送到触发器303的输入,时钟信号CLK控制触发器303捕获数据信号。为使数据信号被触发器303正确地捕获,数据信号应当在时钟沿之前至少Tsetip的时间到达触发器303的输入,而在时钟沿之后至少保持Thold的时间。
在满足Tsetip和Thold的基础上,可以确定中间的组合逻辑电路的传输延时的范围。假设时钟周期为Tclk,触发器输出延时为Tco,组合逻辑的延时为Tcomb。
对于Tsetip,需满足:
Tclk-Tco-Tcomb>Tsetup (公式1)
考虑最坏的情况,即触发器的输出延时最大,组合逻辑电路的延时也最大,则上述公式1变为:
Tclk-Tco-max-Tcomb-max>Tsetup (公式2)
对于Th。ld,需满足:
Tco+Tcomb>Thold (公式3)
考虑到最坏的情况,即触发器的输出延时最小,组合逻辑电路的延时也最小,则上述公式3变为
Tco-min+Tcomb-min>Thold (公式4)
结合图2A和2B的正向时钟树和反向时钟树,假设每一级时钟驱动电路的延时为Tclklatency,上述公式2和 4分别变成下述公式。
对于正向时钟树:
考虑Tsetup:
Tclk+Tclklatency-Tco-max-Tcomb-max>Tsetup (公式5)
也即,
Tclk>Tsetup+Tco-max+Tcomb-max-Tclklatency (公式6)
考虑Thold:
Tco-min+Tcomb-min>Thold+Tclklatency (公式7)
也即,
Tco-min+Tcomb-min-Tclklatency>Thold (公式8)
对于反向时钟树:
考虑Tsetup:
Tclk-Tclklatency-Tco-max-Tcomb-max>Tsetup (公式9)
也即,
Tclk>Tsetup+Tco-max+Tcomb-max+Tclklatency (公式10)
考虑Thold:
Tco-min+Tcomb-min>Thold-Tclklatency (公式11)
也即,
Tco-min+Tcomb-min+Tclklatency>Thold (公式12)
对比公式6和公式10,可知正向时钟树的Tclk可以更小,也即周期更小,相应地芯片的频率可以更快,达到更高性能。而反向时钟树的Tclk需要较大,也即周期更大,于是芯片的频率变慢,性能降低。
但是对比公式8和公式12,可知在采用正向时钟树时触发器的保持时间更不容易满足,而在采用反向时钟树时触发器的保持时间更容易满足。特别是如果两个触发器之间的组合逻辑的延时很小或者甚至不存在组合逻辑时,即Tcomb-min为0,则正向时钟树的保持时间将难以满足。
同步时序电路正常工作的前提是触发器的建立时间和保持时间都得到满足。保持时间是更重要的指标,必须满足。保持时间如果不满足,芯片就无法正常工作。因此,在现有技术中,通常使用反向时钟树以保证满足保持时间Thold要求。但是这会牺牲芯片的频率从而导致芯片的性能降低。
此外,不管是正向时钟树还是反向时钟树,在先进工艺中,对芯片进行时序分析时还需要考虑片上偏差 (on-chip variation,OCV)因素。OCV指的是同一种电路单元在芯片中的不同位置处的延时是不相同的。延时符合高斯分布,可能快也可能慢。下面参考图4进行说明。
图4是示出了一种正向时钟树结构的简化示意图。本领域技术人员应当注意,这里为了说明OCV的影响,使用正向时钟树作为示例,本领域技术人员应当理解反向时钟树可以采用同样的分析方法。此外,为了简化描述,每一运算级仅示出了一个寄存器。本领域技术人员应当理解,每个运算级不限于一个寄存器,而是可以存在多个寄存器以及相应的连接关系。对其他寄存器的OCV的分析可以采用类似的方法。
如图4所示,时钟树包括时钟源400、时钟驱动电路401i和多个时钟缓冲器11~15和21~25。时钟驱动电路401i通常由反相器(inverter)构成。流水线电路第i-1运算级的寄存器402i-1由时钟缓冲器11~15驱动,流水线电路第i运算级的寄存器402i由时钟缓冲器21~25驱动。由于寄存器402i-1将信号发送到寄存器402i,因此寄存器402i-1也可以被称为发射寄存器,而寄存器402i可以被称为接收寄存器。
假设图4中用到的时钟缓冲器是同一种完全一样的电路单元。由图中可以看到从时钟源400到寄存器402i-1的时钟路径是:时钟源→......→时钟驱动电路401i-1→时钟缓冲器11→......→时钟缓冲器15→寄存器402i-1,而到寄存器402i的时钟路径是:时钟源→......→时钟驱动电路401i-1→时钟驱动电路401i→时钟缓冲器21→...... →时钟缓冲器25→寄存器402i。可以看到寄存器402i的时钟延时比寄存器402i-1的时钟延时仅仅多一个时钟驱动电路401i的延时。如果是单纯一个时钟驱动电路401i的延时,一般情况下,寄存器402i-1到寄存器402i这种直接相连的寄存器的保持时间都是可以满足的,即,寄存器402i-1的输出延时Tco-min>时钟驱动电路401i的延时Tclklatency+寄存器402i的Thold。
但是由于时钟缓冲器的延时在不同位置处不是固定的,因此在实际的芯片设计时会分析最恶劣的情况。对于保持时间的时序分析,当发射寄存器402i-1的路径更快而接收寄存器402i的路径更慢是最恶劣的情况。因此在例如图4的结构中,所有从时钟源到寄存器402i-1经过的时钟缓冲器都会减去一个随机值α,这个α的值跟这个寄存器402i-1的输入的快慢以及输出负载的大小有关系。而从时钟源到寄存器402i经过的时钟缓冲器都会加上一个随机值β,这个β的值跟这个寄存器402i输入的快慢以及输出负载的大小有关系。在时序分析中,寄存器 402i相比较寄存器402i-1的时钟的延时不再仅仅是一个时钟缓冲器的延时,而是还要加上寄存器402i-1的时钟路径上各级时钟单元减去的随机值之和sum(α),以及寄存器402i的时钟路径上各级时钟单元加上的随机值之和 sum(β)。
这时,根据公式8,寄存器402i-1到寄存器402i的保持时间要求变为:
寄存器402i-1的输出延时Tco-min>时钟驱动电路401i的延时Tclklatency+sum(α)+sum(β)+寄存器402i的Thold (公式13)
此时的保持时间要求就比较难满足了。
本公开提供了一种新颖的时钟树方案,可以在满足保持时间Thold要求的同时提高芯片的运行频率从而提高芯片性能。
图5是示出了根据本公开的实施例的时钟树结构的原理图。如图5所示,时钟树包括时钟源500、多级时钟驱动电路501j......501i......、第一组时钟缓冲电路507i......、第二组时钟缓冲电路508i......、第三组时钟缓冲电路509i......和第四组时钟缓冲电路510i......。第i级时钟驱动电路用于为流水线的第i运算级提供时钟。这里的i、 j小于等于流水线的总级数N。时钟树用于为包括寄存器和组合逻辑的运算模块提供时钟。
这里以第i运算级为例进行说明。如图5所示,运算模块的第i运算级包括第一类寄存器502i、第二类寄存器503i、第三类寄存器504i和第四类寄存器505i。第一类寄存器502i的输出端除了耦接到第i+1运算级的相应寄存器的输入端外,还要耦接到第i运算级的组合逻辑506i的输入端。第二类寄存器503i的输入端耦接到前一运算级的对应寄存器,其输出端耦接到第i运算级的组合逻辑506i的输入端但不耦接到第i+1运算级中的任何寄存器的输入端。第三类寄存器504i的输入端耦接到第i-1运算级的组合逻辑506i-1的输出端,也即第三类寄存器 504i的输入接收自第i-1运算级的组合逻辑的输出。第四类寄存器505i的输入端耦接到第i-1运算级的寄存器 505i-1的输出端,并且其输出端耦接到第i+1运算级的寄存器505i+1的输入端。
需要注意的是,这里为了描述简便,每一类寄存器只示出了一个寄存器。但是本领域技术人员应当理解,每一类寄存器的数目不限于一,而是根据实际的电路结构具有任意数目。以图1所示出的SHA-256电路为例,第一类寄存器502i可以包括W1、W9、W14,第二类寄存器503i可以包括W0,第三类寄存器504i可以包括W15,第四类寄存器505i可以包括W2~W8以及W10~W13。应当注意,SHA-256电路的寄存器的这样的分类仅仅是一个示例,本领域技术人员根据实际情况可以进行不同的分类方式。
如图5所示,根据本公开的实施例,对于各运算级的寄存器来说,采用的是正向时钟树结构,因为时钟信号的传递方向与数据信号的传递方向是相同的。
以第i运算级为例,具体来说,用于第一类寄存器502i的时钟缓冲电路507i的输入端耦接到当前第i运算级的时钟驱动电路501i的输出端。用于第三类寄存器504i的时钟缓冲电路509i的输入端耦接到当前第i运算级的时钟驱动电路501i的输出端。也就是说,第一类寄存器502i和第三类寄存器504i的时钟信号端耦接到主时钟树上。
对于第四类寄存器505i,其时钟信号端耦接到时钟缓冲电路510i,也即时钟缓冲电路510i用于为第四类寄存器505i提供时钟信号。如图5所示,时钟缓冲电路510i的输入端耦接到用于为第i-1运算级的相应寄存器505i-1提供时钟信号的时钟缓冲电路510i-1的输出端。以此类推,用于向第i+1运算级的第四类寄存器505i+1提供时钟信号的时钟缓冲电路510i+1的输入端耦接到用于向第i运算级中的相应寄存器505i提供时钟信号的时钟缓冲电路510i的输出端,直到流水线的从主时钟树上接收时钟信号的寄存器。这里的相应寄存器505i-1指的是第i 运算级的寄存器505i的信号输入端所耦接到的第i-1运算级的那个寄存器505i-1。以SHA-256为例,比如第i 运算级的寄存器W11的信号输入端耦接到第i-1运算级的寄存器W12的输出端,因此用于向第i运算级的寄存器 W11提供时钟信号的时钟缓冲电路的输入端耦接到用于向第i-1运算级中的寄存器W12提供时钟信号的时钟缓冲电路的输出端。
如图5所示,包括时钟缓冲电路510i-1、510i的子时钟树的起点在第i运算级之前的第j运算级处。在该第 j运算级处,用于为第j运算级的某一类寄存器(例如,第一类寄存器,图中未示出)提供时钟信号的时钟缓冲电路510j的输入端耦接到主时钟树上,同时该时钟缓冲电路510j的输出端也耦接到用于为j+1运算级的相应第四类寄存器提供时钟信号的时钟缓冲电路的输入端。以SHA-256为例,时钟缓冲电路510j可以是为第j运算级的W9提供时钟信号的时钟缓冲电路,同时该时钟缓冲电路510j的输出端也耦接到用于为j+1运算级的寄存器 W8提供时钟信号的时钟缓冲电路的输入端。
对于第二类寄存器503i,其时钟信号端耦接到时钟缓冲电路508i,也即时钟缓冲电路508i用于为第二类寄存器503i提供时钟信号。第二类寄存器503i虽然参与了逻辑运算,但其输入也由前一运算级的相应寄存器传递而来且其通常处于流水线信号路径的末尾,因而其时钟信号也可以不从当前运算级的主时钟树上来,也即时钟缓冲电路508i可以不耦接到第i运算级的时钟驱动电路501i,而是可以耦接到用于为第i-1运算级的相应寄存器提供时钟信号的时钟缓冲电路的输出端。例如,以SHA-256为例,第二类寄存器503i可以是图1中的寄存器W0,用于为当前运算级的寄存器W0提供时钟信号时钟缓冲电路可以耦接到用于为前一运算级的寄存器W1提供时钟信号的时钟缓冲电路的输出端。
根据前面的公式8和13,由于第一类寄存器502i和第三类寄存器504i参与组合逻辑运算,Tcomb-min不为0且相对时钟信号的延时往往较大,因此即使采用正向时钟树,也能满足Thold。而第二类寄存器503i和不参与组合逻辑运算的第四类寄存器505i,通过建立局部的子时钟树,即用于当前运算级的寄存器的时钟缓冲电路连接到用于前一运算级的相应寄存器的时钟缓冲电路,可以避免直连的寄存器由于时钟路径差距过大进而由OCV的影响导致保持时间违例,由此解决正向时钟树结构中保持时间不容易满足的问题。同时,由于时钟模块整体上采用了正向时钟树结构,因此可以提高芯片的运行频率从而提高芯片性能。
下面结合SHA-256的电路结构来说明本公开的上述发明构思的应用示例。
图6是示出了根据本公开的实施例的采用图5的时钟树结构的一个哈希引擎的示意图。图6中的实线箭头表示时钟信号的传递方向,虚线箭头表示数据的传递方向。注意这里省略了不必要的图示和描述以避免模糊主旨。例如,图6的哈希引擎省略了压缩寄存器A~H,只示出了扩展寄存器W0~W15。此外,为了简明,图6仅示出了每一运算级中的一部分寄存器的数据传递和时钟传递情况,而省略了其他寄存器的数据传递和时钟传递。本领域技术人员根据本公开的教导,可以容易地想到各运算级中各寄存器的数据传递和时钟传递情况。
如图6所示,哈希引擎包括多个运算级,每一运算级包括多个寄存器W0~W15,并且由相应的时钟驱动电路601驱动。根据图6所示的实施例,哈希引擎整体上采用正向时钟树结构并且局部的子时钟树(例如,从W14到W9)也是正向的。如前所述,每一运算级的寄存器W1、W9、W14、W15的时钟耦接到主时钟树上,而其余寄存器Wk(W0、W2~W8和W10~W13)的时钟则是由前一运算级的寄存器Wk+1的时钟传递过来的,也即为当前运算级的寄存器Wk(W0、W2~W8和W10~W13)提供时钟的时钟缓冲电路的输入端耦接到用于为前一运算级的寄存器Wk+1提供时钟的时钟缓冲电路的输出端。图6为了方便说明省略了时钟缓冲电路,而仅以实线箭头表示寄存器的时钟信号的传递路径。本领域技术人员在本公开的教导下应当理解,每个寄存器的时钟端均耦接到相应的时钟缓冲电路的输出端。
对于每一运算级的寄存器W9来说,其参与组合逻辑运算,因而接收来自正向时钟树的时钟信号,同时寄存器W9还接收前一运算级的寄存器W10的信号,因此前一运算级的寄存器W10的时钟信号需要传递到当前运算级的寄存器W9以满足子时钟树的要求。寄存器W1类似。
为此,在图6的实施例中,每一运算级除了第一至第十六寄存器W0~W15外,还包括第十七寄存器W1_t和第十八寄存器W9_t。
第十七寄存器W1_t的输出端耦接到当前运算级的第二寄存器W1的输入端,其输入端耦接到前一运算级的第三寄存器W2的输出端,以及用于向该第十七寄存器W1_t的时钟信号端提供时钟信号的时钟缓冲电路的输入端耦接到用于向前一运算级的第三寄存器(W2)提供时钟信号的时钟缓冲电路的输出端。也即第十七寄存器W1_t的时钟是由前一运算级的W2的时钟传递过来的。
第十八寄存器W9_t的输出端耦接到当前运算级的第十寄存器W9的输入端,其输入端耦接到前一运算级的第十一寄存器W10的输出端,以及用于向该第十八寄存器W9_t的时钟信号端提供时钟信号的时钟缓冲电路的输入端耦接到用于向前一运算级的第十一寄存器W10提供时钟信号的时钟缓冲电路的输出端。也即寄存器W9_t的时钟由前一运算级的寄存器W10的时钟传递而来。
从整个流水线角度来看,第i运算级的寄存器W1、W9、W14、W15的时钟耦接到主时钟树上。第i运算级的寄存器W9_t的时钟由第i-1运算级的寄存器W10的时钟传递而来。第i-1运算级的寄存器W10的时钟由第i-2 运算级的寄存器W11的时钟传递而来。以此类推,第i-4运算级的寄存器W13的时钟由第i-5运算级的寄存器 W14的时钟传递而来。第i运算级的寄存器W9的时钟传递给第i+1运算级的寄存器W8。以此类推,第i+6运算级的寄存器W3的时钟传递给第i+7运算级的寄存器W2。第i+7运算级的寄存器W2的时钟传递给第i+8运算级的寄存器W1_t。第i+8运算级的寄存器W1的时钟传递给第i+9运算级的寄存器W0。
通过增加如上配置的第十七寄存器W1_t和第十八寄存器W9_t,可以实现对流水线结构使用正向的主时钟树和正向的子时钟树二者,从而在满足寄存器的Thold要求的同时提高芯片的运行频率从而提高芯片性能。
在根据本公开的实施例中,前文所述的寄存器可以包括边沿触发型寄存器,例如上升沿触发的寄存器和/或下降沿触发的寄存器。寄存器可以包括D触发器(DFF)和/或锁存器(Latch),锁存器可以例如是采用脉冲类型的时钟信号的锁存器。
根据本公开的实施例,前文所述的多级时钟驱动电路中的每一级时钟驱动电路可以包括奇数个反相器。例如,每一级时钟驱动电路可以包括一个反相器。
根据本公开的实施例,前文所述的时钟缓冲电路可以包括一个或多个时钟缓冲器。
本领域技术人员将理解,虽然前文结合SHA-256的一个电路结构描述了本公开的构思,但是该电路结构不意图对本公开构思构成任何限制。本公开构思可以应用于公知可知的任何版本的SHA-256及其变型例和修改例。甚至,本公开构思可以应用于具有流水线结构且包括时序器件的任何计算电路中。
根据本公开的实施例,如上所述的哈希引擎可以被实施为一种计算芯片。
本领域技术人员将理解,可以通过用诸如Verilog或VHDL的硬件描述语言(HDL)来实现根据本公开的电路和/或芯片。可以针对给定集成电路制造技术设计的单元库合成HDL描述,并可以出于定时、功率和其他原因修改,以获得最终的设计数据库,可以将最终的设计数据库传输到工厂以通过半导体制造系统生产集成电路。半导体制造系统可通过(例如在可包括掩膜的晶片上)沉积半导体材料、移除材料、改变所沉积材料的形状、(例如通过掺杂材料或利用紫外处理修改介电常数)对材料改性等等来生产集成电路。集成电路可以包括晶体管并还可以包括其他电路元件(例如,诸如电容器、电阻器、电感器等无源元件)以及晶体管和电路元件之间的互连。
根据本公开的实施例,如上所述的计算芯片可以包括在算力板中。具体来说,算力板可以包括一个或多个计算芯片。多个计算芯片可以并行地执行计算任务。
根据本公开的实施例,如上所述的算力板可以包括在一种计算设备中,该计算设备优选地用于执行加密货币的挖掘。例如计算设备可以是比特币挖矿机。具体来说,加密货币挖矿机可以包括一个或多个算力板。多个算力板可以并行地执行计算任务,例如执行SHA-256算法。
在这里示出和讨论的所有示例中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它示例可以具有不同的值。
还应理解,″包括/包含″一词在本文中使用时,说明存在所指出的特征、整体、步骤、操作、单元和/或组件,但是并不排除存在或增加一个或多个其它特征、整体、步骤、操作、单元和/或组件以及/或者它们的组合。
虽然已通过示例详细展示了本公开的一些具体实施例,但是本领域技术人员应当理解,上述示例仅意图是说明性的而不限制本公开的范围。本领域技术人员应该理解,上述实施例可以在不脱离本公开的范围和实质的情况下被修改。本公开的范围是通过所附的权利要求限定的。
Claims (12)
1.一种哈希引擎,其特征在于,该哈希引擎包括:
输入模块,被配置为接收数据块;
运算模块,被配置为对接收的数据块进行哈希运算,所述运算模块包括以流水线结构布置的多个运算级以使得基于所述数据块的数字信号沿着所述多个运算级依次传递,所述多个运算级中的每个运算级包括多个寄存器和组合逻辑模块,所述多个寄存器包括:
第一组寄存器,所述第一组寄存器中的每个寄存器的输出端耦接到当前运算级的组合逻辑模块的输入端并且耦接到下一运算级中的相应寄存器的输入端;
第二组寄存器,所述第二组寄存器中的每个寄存器的输出端耦接到当前运算级的组合逻辑模块的输入端但不耦接到下一运算级中的寄存器的输入端;
第三组寄存器,所述第三组寄存器中的每个寄存器的输入端耦接到前一运算级的组合逻辑模块的输出端;以及
第四组寄存器,所述第四组寄存器中的每个寄存器的输入端耦接到前一运算级中的相应寄存器的输出端,并且其输出端耦接到下一运算级中的相应寄存器的输入端;和
时钟模块,被配置为向所述多个运算级的每个运算级的所述多个寄存器提供时钟信号,所述时钟模块包括:
多级时钟驱动电路,被配置为传递来自于时钟源的时钟信号并且向所述多个运算级提供时钟信号,其中对于所述多个运算级中的每个运算级的所述多个寄存器,所述数字信号的传递方向与所述时钟信号的传递方向相同;和
多个时钟缓冲电路,被配置为接收来自所述多级时钟驱动电路的时钟信号并且向所述多个寄存器中的每个寄存器提供时钟信号,其中用于向当前运算级的所述第四组寄存器中的每个寄存器提供时钟信号的时钟缓冲电路的输入端耦接到用于向前一运算级中的相应寄存器提供时钟信号的时钟缓冲电路的输出端。
2.如权利要求1所述的哈希引擎,其特征在于,用于每一当前运算级的所述第一组寄存器和所述第三组寄存器中的每个寄存器的时钟缓冲电路的输入端耦接到用于当前运算级的时钟驱动电路的输出端,以及
用于向当前运算级的所述第二组寄存器中的每个寄存器提供时钟信号的时钟缓冲电路的输入端耦接到用于向前一运算级中的相应寄存器提供时钟信号的时钟缓冲电路的输出端。
3.如权利要求2所述的哈希引擎,其特征在于,每一当前运算级的所述多个寄存器还包括一个或多个附加寄存器,所述一个或多个附加寄存器中的一个附加寄存器的输出端耦接到当前运算级的所述第一组寄存器中的特定寄存器的输入端,其输入端耦接到前一运算级的对应于所述特定寄存器的相应寄存器的输出端,并且其时钟信号端耦接到所述多个时钟缓冲电路中的一个时钟缓冲电路的输出端,该一个时钟缓冲电路的输入端耦接到用于向前一运算级中的对应于所述特定寄存器的相应寄存器提供时钟信号的时钟缓冲电路的输出端。
4.如权利要求3所述的哈希引擎,其特征在于,所述哈希引擎用于执行SHA-256算法,每一当前运算级的所述多个寄存器至少包括第一至第十六寄存器(W0......W15),所述第一组寄存器包括第二、第十和第十五寄存器(W1、W9、W14),所述第二组寄存器包括第一寄存器(W0),所述第三组寄存器包括第十六寄存器(W15),以及所述第四组寄存器包括第三至第九寄存器(W2......W8)和第十一至第十四寄存器(W10......W13),
用于每一当前运算级的第二、第十、第十五寄存器和第十六寄存器(W1、W9、W14、W15)的时钟缓冲电路的输入端耦接到用于当前运算级的时钟驱动电路的输出端,以及
用于每一当前运算级的第一寄存器(W0)的时钟缓冲电路的输入端耦接到用于前一运算级的第二寄存器(W1)的时钟缓冲电路的输出端。
5.如权利要求4所述的哈希引擎,其特征在于,对于每一当前运算级的第k寄存器(Wk-1),其中k为整数且3≤k≤9或11≤k≤14,用于向所述第k寄存器(Wk-1)提供时钟信号的时钟缓冲电路的输入端耦接到用于向前一运算级中的第k+1寄存器(Wk)提供时钟信号的时钟缓冲电路的输出端。
6.如权利要求5所述的哈希引擎,其特征在于,所述一个或多个附加寄存器包括:
第十七寄存器(W1_t),其输出端耦接到当前运算级的第二寄存器(W1)的输入端,其输入端耦接到前一运算级的第三寄存器(W2)的输出端,以及用于向该第十七寄存器(W1_t)的时钟信号端提供时钟信号的时钟缓冲电路的输入端耦接到用于向前一运算级的第三寄存器(W2)提供时钟信号的时钟缓冲电路的输出端;和
第十八寄存器(W9_t),其输出端耦接到当前运算级的第十寄存器(W9)的输入端,其输入端耦接到前一运算级的第十一寄存器(W10)的输出端,以及用于向该第十八寄存器(W9_t)的时钟信号端提供时钟信号的时钟缓冲电路的输入端耦接到用于向前一运算级的第十一寄存器(W10)提供时钟信号的时钟缓冲电路的输出端。
7.如权利要求1所述的哈希引擎,其特征在于,所述多级时钟驱动电路中的每一级时钟驱动电路包括奇数个反相器。
8.如权利要求1所述的哈希引擎,其特征在于,用于所述第一组寄存器和所述第三组寄存器中的每个寄存器的时钟缓冲电路包括两个时钟缓冲器,并且用于所述第二组寄存器和所述第四组寄存器中的每个寄存器的时钟缓冲电路包括一个时钟缓冲器。
9.一种时钟树,其特征在于,所述时钟树包括:
时钟源,用于提供基本时钟信号;和
多级时钟驱动电路,其中来自于所述时钟源的基本时钟信号沿着所述多级时钟驱动电路依次传递,所述多级时钟驱动电路中的每一级时钟驱动电路用于为多个运算级的每个运算级提供时钟信号,其中所述多个运算级以流水线结构布置以使得基于接收的数据块的数字信号沿着所述多个运算级依次传递,所述多个运算级中的每个运算级包括多个寄存器和组合逻辑模块,其中对于所述多个运算级中的每个运算级的所述多个寄存器,所述数字信号的传递方向与所述时钟信号的传递方向相同,所述多个寄存器包括第一组寄存器、第二组寄存器、第三组寄存器和第四组寄存器,所述第一组寄存器中的每个寄存器的输出端耦接到当前运算级的组合逻辑模块的输入端并且耦接到下一运算级中的相应寄存器的输入端,所述第二组寄存器中的每个寄存器的输出端耦接到当前运算级的组合逻辑模块的输入端但不耦接到下一运算级中的寄存器的输入端,所述第三组寄存器中的每个寄存器的输入端耦接到前一运算级的组合逻辑模块的输出端,以及所述第四组寄存器中的每个寄存器的输入端耦接到前一运算级中的相应寄存器的输出端,并且其输出端耦接到下一运算级中的相应寄存器的输入端;和
多个时钟缓冲电路,用于接收来自于所述多级时钟驱动电路的信号并且向所述多个寄存器中的每个寄存器提供时钟信号,其中用于向当前运算级的所述第四组寄存器中的每个寄存器提供时钟信号的时钟缓冲电路的输入端耦接到用于向前一运算级中的相应寄存器提供时钟信号的时钟缓冲电路的输出端。
10.一种计算芯片,其特征在于,所述计算芯片包括一个或多个如权利要求1-8中任一项所述的哈希引擎。
11.一种算力板,其特征在于,所述算力板包括一个或多个如权利要求10所述的计算芯片。
12.一种加密货币挖矿机,其特征在于,所述加密货币挖矿机包括一个或多个如权利要求11所述的算力板。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202021414137.9U CN212515801U (zh) | 2020-07-16 | 2020-07-16 | 时钟树、哈希引擎、计算芯片、算力板和加密货币挖矿机 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202021414137.9U CN212515801U (zh) | 2020-07-16 | 2020-07-16 | 时钟树、哈希引擎、计算芯片、算力板和加密货币挖矿机 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN212515801U true CN212515801U (zh) | 2021-02-09 |
Family
ID=74436494
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202021414137.9U Active CN212515801U (zh) | 2020-07-16 | 2020-07-16 | 时钟树、哈希引擎、计算芯片、算力板和加密货币挖矿机 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN212515801U (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113590200A (zh) * | 2021-08-03 | 2021-11-02 | 北京中科芯蕊科技有限公司 | 一种基于sr锁存器的异步微流水线控制器 |
-
2020
- 2020-07-16 CN CN202021414137.9U patent/CN212515801U/zh active Active
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113590200A (zh) * | 2021-08-03 | 2021-11-02 | 北京中科芯蕊科技有限公司 | 一种基于sr锁存器的异步微流水线控制器 |
CN113590200B (zh) * | 2021-08-03 | 2024-01-30 | 北京中科芯蕊科技有限公司 | 一种基于sr锁存器的异步微流水线控制器 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20220271753A1 (en) | Clock tree, hash engine, computing chip, hash board and data processing device | |
TWI784457B (zh) | 時鐘電路系統、計算晶片、算力板和資料處理設備 | |
JP2735034B2 (ja) | クロック信号分配回路 | |
CN111930682A (zh) | 时钟树、哈希引擎、计算芯片、算力板和数字货币挖矿机 | |
CN212160484U (zh) | 时钟电路系统、计算芯片、算力板和数字货币挖矿机 | |
Sushma et al. | QCA Based Universal Shift Register using 2 to 1 Mux and D flip-flop | |
CN212515801U (zh) | 时钟树、哈希引擎、计算芯片、算力板和加密货币挖矿机 | |
Papaphilippou et al. | An adaptable high-throughput FPGA merge sorter for accelerating database analytics | |
Alioto et al. | A simple strategy for optimized design of one-level carry-skip adders | |
CN212515800U (zh) | 时钟树、哈希引擎、计算芯片、算力板和加密货币挖矿机 | |
CN111651403A (zh) | 时钟树、哈希引擎、计算芯片、算力板和数字货币挖矿机 | |
WO2021244113A1 (zh) | 时钟电路、计算芯片、算力板和数据处理设备 | |
Wu et al. | A high-performance parallel hardware architecture of SHA-256 hash in ASIC | |
CN212515799U (zh) | 时钟树、哈希引擎、计算芯片、算力板和加密货币挖矿机 | |
US20050132313A1 (en) | Optimization of the design of a synchronous digital circuit | |
Dorojevets et al. | Development and evaluation of design techniques for high-performance wave-pipelined wide datapath RSFQ processors | |
CN112580278B (zh) | 逻辑电路的优化方法、优化装置以及存储介质 | |
CN110673689B (zh) | 时钟控制电路及方法 | |
TW202230074A (zh) | 流水線時鐘驅動電路、計算晶片、算力板和計算設備 | |
JPS6369262A (ja) | 半導体集積回路 | |
Zhou et al. | 64-bit prefix adders: Power-efficient topologies and design solutions | |
CN213399572U (zh) | 运算核、计算芯片和加密货币矿机 | |
CN213399573U (zh) | 运算核、计算芯片和加密货币矿机 | |
WO2022105252A1 (zh) | 运算核、计算芯片和数据处理设备 | |
EP1308862A1 (en) | Optimization of the design of a synchronous digital circuit |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
GR01 | Patent grant | ||
GR01 | Patent grant |