CN214670605U - 采用全定制布局摆放的芯片以及用于实现挖矿算法的电子装置 - Google Patents
采用全定制布局摆放的芯片以及用于实现挖矿算法的电子装置 Download PDFInfo
- Publication number
- CN214670605U CN214670605U CN202120363831.0U CN202120363831U CN214670605U CN 214670605 U CN214670605 U CN 214670605U CN 202120363831 U CN202120363831 U CN 202120363831U CN 214670605 U CN214670605 U CN 214670605U
- Authority
- CN
- China
- Prior art keywords
- modules
- row
- register
- group
- bit
- 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
Landscapes
- Executing Machine-Instructions (AREA)
Abstract
本公开涉及采用全定制布局摆放的芯片以及用于实现挖矿算法的电子装置。提供有一种采用全定制布局摆放的芯片,包括具有多个运算级的流水线结构,其中每个运算级包括:在平行于芯片的衬底的X方向上依次排列并且在X方向上具有统一的行高度的多个行,所述多个行包括第一类型的行,每个第一类型的行包括:第一组寄存器模块,包括以a行b列的阵列的形式排列的a*b个寄存器模块,其中每个寄存器模块在X方向上具有第一高度,所述行高度是第一高度的a倍,其中a、b为正整数;以及第一组逻辑运算模块,包括以a行c列的阵列的形式排列的a*c个逻辑运算模块,其中每个逻辑运算模块在X方向上具有第一高度,其中c为正整数。
Description
技术领域
本公开总体而言涉及采用全定制布局摆放的芯片,更具体而言,涉及包括采用全定制布局摆放的芯片的用于实现挖矿算法的电子装置。
背景技术
传统的自动布局布线(APR,Auto Place and Route)技术通常采用电子设计自动化(EDA,Electronic Design Automation)综合工具来进行单元(cell)的综合(synthesis)和布局布线(P&R,Place&Route)。自动布局布线的综合是指将RTL代码自动转换成网表(netlist),网表由单元组成,具体的单元由库(library)提供;自动布局布线的布局布线(APR PR)则是指自动将单元按规则(RULE)进行摆放,其中规则包括但不限于:单元不能重叠、数据互联关系尽量接近、走线短、避免往返走线,等等。
传统的自动布局布线技术虽然能极大地提高设计效率,但是也会带来一些弊端。例如,如果设计者使用RTL代码描述了复杂、具有层次(hierarchy)的算法表达式,之后再采用EDA综合工具对该表达式进行自动布局布线,那么得到的网表是通过将整个算法表达式作为一个整体而得出的,因此不会体现出算法表达式的层次,并且其中每个单元的摆放关系也不可控,这会导致最终的布局布线中存在诸多冗余和浪费,亟待进一步优化。
实用新型内容
本实用新型通过采用全定制的布局摆放来实现性能更为优越的芯片,包括但不限于使得芯片的面积更小、关键路径更短等等。采用全定制布局摆放的芯片的最大特点在于,芯片的设计通过人工代码优化和人工编码来实现,无需用到EDA综合工具,因此能够直接得到具有预期的布局摆放的芯片,从而使得芯片的性能得到最大优化。
根据本公开的第一方面,提供了一种采用全定制布局摆放的芯片,包括具有多个运算级的流水线结构,其中每个运算级包括:在平行于芯片的衬底的X方向上依次排列并且在X方向上具有统一的行高度的多个行,所述多个行包括第一类型的行,每个第一类型的行包括:第一组寄存器模块,包括以a行b列的阵列的形式排列的a*b个寄存器模块,其中每个寄存器模块在X方向上具有第一高度,所述行高度是第一高度的a倍,其中a、b为正整数;以及第一组逻辑运算模块,包括以a行c列的阵列的形式排列的a*c个逻辑运算模块,其中每个逻辑运算模块在X方向上具有第一高度,其中c为正整数;其中,所述第一组寄存器模块和所述第一组逻辑运算模块在Y方向上相邻设置,并且所述第一组逻辑运算模块用于处理所述第一组寄存器模块中的数据。
优选地,其中:所述第一组寄存器模块中的每个寄存器模块为p比特的寄存器模块,并且在其靠近所述第一组逻辑运算模块的一侧设置有沿X方向依次排列的p个1比特的数据输出端口,其中p为正整数;所述第一组寄存器模块包括在Y方向上依次设置的用于共同存储一个p*q比特的数据的q个寄存器模块,其中q为正整数;所述第一组逻辑运算模块中的至少部分逻辑运算模块中的每个包括沿X方向依次排列的p个1比特的运算单元;以及所述第一组逻辑运算模块中的所述至少部分逻辑运算模块包括在Y方向上依次设置的用于共同处理一个或多个长度为p*q比特的数据的q个逻辑运算模块。
优选地,其中,第一类型的行中的至少一个行还包括:第二组寄存器模块,包括以d行e列的阵列的形式排列的d*e个寄存器模块,其中每个寄存器模块在X方向上具有第二高度,所述行高度是第二高度的d倍,其中d、e为正整数;以及第二组逻辑运算模块,包括以d行f列的阵列的形式排列的d*f个逻辑运算模块,其中每个逻辑运算模块在X方向上具有第二高度,其中f为正整数,其中,所述第二组寄存器模块和所述第二组逻辑运算模块在Y方向上相邻设置,并且所述第二组逻辑运算模块用于处理所述第二组寄存器模块中的数据。
优选地,其中:所述第二组寄存器模块中的每个寄存器模块为r比特的寄存器模块,并且在其靠近所述第二组逻辑运算模块的一侧设置有沿X方向依次排列的r个1比特的数据输出端口,其中r为正整数并且满足a*p=d*r;所述第二组寄存器模块包括在Y方向上依次设置的用于共同存储一个r*s比特的数据的s个寄存器模块,其中s为正整数;所述第二组逻辑运算模块中的至少部分逻辑运算模块中的每个包括沿X方向依次排列的r个1比特的运算单元;以及所述第二组逻辑运算模块中的所述至少部分逻辑运算模块包括在Y方向上依次设置的用于共同处理一个或多个长度为r*s比特的数据的s个逻辑运算模块。
优选地,其中,所述多个行包括第二类型的行,每个第二类型的行包括:第三组寄存器模块,包括以g行h列的阵列的形式排列的g*h个寄存器模块,其中每个寄存器模块在X方向上具有第三高度,所述行高度是第三高度的g倍,其中g、h为正整数;以及第三组逻辑运算模块,包括以g行i列的阵列的形式排列的g*i个逻辑运算模块,其中每个逻辑运算模块在X方向上具有第三高度,其中i为正整数;其中,所述第三组寄存器模块和所述第三组逻辑运算模块在Y方向上相邻设置,并且所述第三组逻辑运算模块用于处理所述第三组寄存器模块中的数据。
优选地,其中:所述第三组寄存器模块中的每个寄存器模块为t比特的寄存器模块,并且在其靠近所述第三组逻辑运算模块的一侧设置有沿X方向依次排列的t个1比特的数据输出端口,其中t为正整数并且满足a*p=g*t;所述第三组寄存器模块包括在Y方向上依次设置的用于共同存储一个t*u比特的数据的u个寄存器模块,其中u为正整数;所述第三组逻辑运算模块中的至少部分逻辑运算模块中的每个包括沿X方向依次排列的t个1比特的运算单元;以及所述第三组逻辑运算模块中的所述至少部分逻辑运算模块包括在Y方向上依次设置的用于共同处理一个或多个长度为t*u比特的数据的u个逻辑运算模块。
优选地,其中,所述多个行中的至少一个行包括:第四组模块,包括以j行k列的阵列的形式排列的j*k个模块,其中每个模块是寄存器模块或逻辑运算模块并且在X方向上具有第四高度,所述行高度是第四高度的j倍,其中j、k为正整数。
优选地,其中,所述第一类型的行中的至少一行还包括:第五组寄存器模块,包括以a行m列的阵列的形式排列的a*m个寄存器模块,其中每个寄存器模块在X方向上具有第一高度,m为正整数;其中,所述第一组逻辑运算模块和所述第五组寄存器模块在Y方向上相邻设置,并且所述第五组寄存器模块用于存储经所述第一组逻辑运算模块处理所得的数据;以及/或者其中,所述第二类型的行中的至少一行还包括:第六组寄存器模块,包括以g行n列的阵列的形式排列的g*n个寄存器模块,其中每个寄存器模块在X方向上具有第三高度,n为正整数;其中,所述第三组逻辑运算模块和所述第六组寄存器模块在Y方向上相邻设置,并且所述第六组寄存器模块用于存储经所述第三组逻辑运算模块处理所得的数据。
优选地,其中:所述芯片用于实现SHA-256算法;每个运算级的第一类型的行包括第一行、第二行和第三行,其中:第一行包括第一组寄存器模块和第一组逻辑运算模块,第一行的第一组寄存器模块包括以1行4列的阵列的形式排列的4个32比特的缓存寄存器模块A、B、C和D,第二行包括第一组寄存器模块和第一组逻辑运算模块,第二行的第一组寄存器模块包括以1行4列的阵列的形式排列的4个32比特的缓存寄存器模块E、F、G和H,以及第三行包括第一组寄存器模块、第一组逻辑运算模块和第五组寄存器模块,第三行的第一组寄存器模块包括以1行4列的阵列的形式排列的4个32比特的扩展寄存器模块R0、R1、R9和R14,第三行的第五组寄存器模块包括1个32比特的扩展寄存器模块R15;每个运算级的所述多个行还包括第四行,第四行包括第四组模块,第四行的第四组模块包括以1行11列的阵列形式排列的11个32比特的扩展寄存器模块R2、R3、R4、R5、R6、R7、R8、R10、R11、R12、R13;以及每个32比特的缓存寄存器模块用于存储一个32比特的中间值,每个32比特的扩展寄存器模块用于存储一个32比特的扩展数据。
优选地,其中:所述芯片用于实现SHA-256算法;以及每个运算级的第一类型的行包括第一行和第二行,其中:第一行包括第一组寄存器模块、第一组逻辑运算模块、第二组寄存器模块和第二组逻辑运算模块,其中第一行的第一组寄存器模块包括以1行4列的阵列的形式排列的4个32比特的缓存寄存器模块A、B、C和D,并且第一行的第二组寄存器模块包括以1行4列的阵列的形式排列的4个32比特的缓存寄存器模块E、F、G和H,第二行包括第一组寄存器模块、第一组逻辑运算模块、第五组寄存器模块和第四组模块,其中第二行的第一组寄存器模块包括以1行4列的阵列的形式排列的4个32比特的扩展寄存器模块R0、R1、R9和R14,第二行的第五组寄存器模块包括1个32比特的扩展寄存器模块R15,并且第二行的第四组模块包括以1行11列的阵列形式排列的11个32比特的扩展寄存器模块R2、R3、R4、R5、R6、R7、R8、R10、R11、R12、R13;以及每个32比特的缓存寄存器模块用于存储一个32比特的中间值,每个32比特的扩展寄存器模块用于存储一个32比特的扩展数据。
优选地,其中:所述芯片用于实现SHA-256算法;每个运算级的第一类型的行包括第一行、第二行和第三行,其中:第一行包括第一组寄存器模块和第一组逻辑运算模块,第一行的第一组寄存器模块包括以1行8列的阵列的形式排列的8个16比特的缓存寄存器模块A1、A2、B1、B2、C1、C2、D1、D2,第二行包括第一组寄存器模块和第一组逻辑运算模块,第二行的第一组寄存器模块包括以1行8列的阵列的形式排列的8个16比特的缓存寄存器模块E1、E2、F1、F2、G1、G2、H1、H2,以及第三行包括第一组寄存器模块、第一组逻辑运算模块和第五组寄存器模块,第三行的第一组寄存器模块包括以1行8列的阵列的形式排列的8个16比特的扩展寄存器模块R0-1、R0-2、R1-1、R1-2、R9-1、R9-2、R14-1、R14-2,第三行的第五组寄存器模块包括以1行2列的阵列的形式排列的2个16比特的扩展寄存器模块R15-1和R15-2;每个运算级的所述多个行还包括第四行,第四行包括第四组模块,第四行的第四组模块包括以1行22列的阵列形式排列的22个16比特的扩展寄存器模块R2-1、R2-2、R3-1、R3-2、R4-1、R4-2、R5-1、R5-2、R6-1、R6-2、R7-1、R7-2、R8-1、R8-2、R10-1、R10-2、R11-1、R11-2、R12-1、R12-2、R13-1、R13-2;以及第一行和第二行中的每个行中的每两个相邻的16比特的缓存寄存器模块用于共同存储一个32比特的中间值,第三行和第四行中的每个行中的每两个相邻的16比特的扩展寄存器模块用于共同存储一个32比特的扩展数据,第一行、第二行和第三行中的每个行中的第一组逻辑运算模块包括用于共同处理一个或多个长度为32比特的数据的、在Y方向上相邻的2个逻辑运算模块。
优选地,其中:所述芯片用于实现SHA-256算法;以及每个运算级的第一类型的行包括第一行,其中:第一行包括第一组寄存器模块和第一组逻辑运算模块,第一行的第一组寄存器模块包括以1行4列的阵列的形式排列的4个32比特的缓存寄存器模块A、B、C和D,每个运算级的第二类型的行包括第二行和第三行,其中:第二行包括第三组寄存器模块和第三组逻辑运算模块,第二行的第三组寄存器模块包括以2行4列的阵列的形式排列的8个16比特的缓存寄存器模块E1、E2、F1、F2、G1、G2、H1、H2;第三行包括第三组寄存器模块、第三组逻辑运算模块和第六组寄存器模块,第三行的第三组寄存器模块包括以2行4列的阵列的形式排列的8个16比特的扩展寄存器模块R0-1、R0-2、R1-1、R1-2、R9-1、R9-2、R14-1、R14-2,第三行的第六组寄存器模块包括以2行1列的阵列的形式排列的2个16比特的扩展寄存器模块R15-1、R15-2;每个运算级的所述多个行还包括第四行,第四行包括第四组模块,第四行的第四组模块包括以1行11列的阵列形式排列的11个32比特的扩展寄存器模块R2、R3、R4、R5、R6、R7、R8、R10、R11、R12、R13;每个32比特的缓存寄存器模块用于存储一个32比特的中间值,每个32比特的扩展寄存器模块用于存储一个32比特的扩展数据,第二行中的在Y方向上依次设置的每两个相邻的16比特的缓存寄存器模块用于共同存储一个32比特的中间值,第三行中的在Y方向上依次设置的每两个相邻的16比特的扩展寄存器模块用于共同存储一个32比特的扩展数据,第二行和第三行中的每个行中的第三组逻辑运算模块包括用于共同处理一个或多个长度为32比特的数据的、在Y方向上相邻的2个逻辑运算模块。
优选地,其中:所述芯片用于实现SHA-256算法;以及每个运算级的第一类型的行包括第一行和第二行,其中:第一行包括第一组寄存器模块、第一组逻辑运算模块、第二组寄存器模块、第二组逻辑运算模块和第四组模块,其中第一行的第一组寄存器模块包括以1行4列的阵列的形式排列的4个32比特的缓存寄存器模块A、B、C和D,第一行的第二组寄存器模块包括以1行4列的阵列的形式排列的4个32比特的缓存寄存器模块E、F、G和H,并且第一行的第四组模块包括以2行2列的阵列的形式排列的4个16比特的扩展寄存器模块,第二行包括第一组寄存器模块、第一组逻辑运算模块、第五组寄存器模块和第四组模块,其中第二行的第一组寄存器模块包括以1行4列的阵列的形式排列的4个32比特的扩展寄存器模块R0、R1、R9和R14,第二行的第五组寄存器模块包括1个32比特的扩展寄存器模块R15,并且第二行的第四组模块包括以2行2列的阵列的形式排列的4个16比特的扩展寄存器模块;以及每个32比特的缓存寄存器模块用于存储一个32比特的中间值,每个32比特的扩展寄存器模块用于存储一个32比特的扩展数据,第一行和第二行中的每个行中的第四组模块中的在Y方向上依次设置的每两个16比特的扩展寄存器模块用于共同存储一个32比特的扩展数据。
根据本公开的第二方面,提供了一种用于实现挖矿算法的电子装置,其包括前文中所述的采用全定制布局摆放的芯片。
本实用新型所提出的采用全定制布局摆放的芯片,对于不采用或仅采用少量SRAM的芯片都具备优化的效果,并且尤其适宜用作需要采用大量寄存器的芯片,例如矿机芯片。矿机芯片基于散列(Hash)运算,散列运算(例如MD5、SHA-256等等)通常采用大量的寄存器来存储多比特数据。例如,MD5至少基于4个32比特的数据,SHA-256则至少基于8个32比特的数据。以比特币矿机芯片为例,其基于SHA-256运算,运算过程多轮循环,因此通常采用流水线结构来实现多轮循环的运算过程,并且流水线结构的每个运算级都包括寄存器和组合逻辑以至少处理8个32比特的数据。基于此,通过采用本实用新型所提出的采用全定制布局摆放的芯片来实现比特币矿机能够使得比特币矿机的性能得到有效提升。
通过以下参照附图对本公开的示例性实施例的详细描述,本公开的其它特征及其优点将会变得清楚。
附图说明
构成说明书的一部分的附图描述了本公开的实施例,并且连同说明书一起用于解释本公开的原理。
参照附图,根据下面的详细描述,可以更加清楚地理解本公开,其中:
图1A示出了根据本公开的实施例的采用全定制布局摆放的芯片10的结构示意图;
图1B示出了第一组寄存器模块的结构示意图;
图1C示出了第一组逻辑运算模块中的至少部分逻辑运算模块的结构示意图;
图1D示出了第二组寄存器模块的结构示意图;
图1E示出了第二组逻辑运算模块中的至少部分逻辑运算模块的结构示意图;
图1F示出了第三组寄存器模块的结构示意图;
图1G示出了第三组逻辑运算模块中的至少部分逻辑运算模块的结构示意图;
图2示出了SHA-256进行数据处理并输出数据摘要的总体过程;
图3示出了SHA-256的轮运算的运算过程;
图4示出了用于生成Wt的映射结构;
图5示出了用于实现SHA-256算法的电路中进行轮运算的流水线结构的一个运算级所进行的第t轮运算的运算示意图;
图6示例性地示出了根据本公开的实施例的用于执行SHA-256运算的采用全定制布局摆放的芯片20的结构示意图;
图7示例性地示出了根据本公开的实施例的用于执行SHA-256运算的采用全定制布局摆放的芯片30的结构示意图;
图8A示例性地示出了根据本公开的实施例的用于执行SHA-256运算的采用全定制布局摆放的芯片40的结构示意图;
图8B示出了相邻的两个缓存寄存器模块A1和A2的结构示意图;
图8C示出了相邻的两个扩展寄存器模块R0-1和R0-2的结构示意图;
图8D示出了相邻的两个16比特的CH模块的结构示意图;
图9示例性地示出了根据本公开的实施例的用于执行SHA-256运算的采用全定制布局摆放的芯片50的结构示意图;
图10示例性地示出了根据本公开的实施例的用于执行SHA-256运算的采用全定制布局摆放的芯片60的结构示意图。
注意,在以下说明的实施方式中,有时在不同的附图之间共同使用同一附图标记来表示相同部分或具有相同功能的部分,而省略其重复说明。在本说明书中,使用相似的标号和字母表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
为了便于理解,在附图等中所示的各结构的位置、尺寸及范围等有时不表示实际的位置、尺寸及范围等。因此,所公开的实用新型并不限于附图等所公开的位置、尺寸及范围等。此外,附图不必按比例绘制,一些特征可能被放大以示出具体组件的细节。
具体实施方式
现在将参照附图来详细描述本公开的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本公开的范围。
以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本公开及其应用或使用的任何限制。也就是说,本文中的用于实现散列算法的电路和方法是以示例性的方式示出,来说明本公开中的电路或方法的不同实施例,而并非意图限制。本领域的技术人员将会理解,它们仅仅说明可以用来实施本实用新型的示例性方式,而不是穷尽的方式。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为授权说明书的一部分。
图1A示出了根据本公开的实施例的采用全定制布局摆放的芯片10的结构示意图。芯片10包括具有多个运算级的流水线结构,为了清楚起见,图1A中仅示出了流水线结构中的一个运算级100而省略了其它结构,但本领域技术人员将理解,芯片10的流水线结构可以包括任意数量的运算级100,并且芯片10还可以包括任意其它结构。
芯片10的流水线结构的每个运算级100可以包括:在平行于芯片的衬底的X方向上依次排列并且在X方向上具有统一的行高度的多个行。所述多个行可以包括第一类型的行,每个第一类型的行可以包括:第一组寄存器模块,包括以a行b列的阵列的形式排列的a*b个寄存器模块,其中每个寄存器模块在X方向上具有第一高度,行高度是第一高度的a倍,其中a、b为正整数;以及第一组逻辑运算模块,包括以a行c列的阵列的形式排列的a*c个逻辑运算模块,其中每个逻辑运算模块在X方向上具有第一高度,其中c为正整数。第一组寄存器模块和第一组逻辑运算模块可以在Y方向上相邻设置,并且第一组逻辑运算模块可以用于处理第一组寄存器模块中的数据。注意,本文中所提到的对″高度″的大小关系的表述,都并非意图表示严格的大小关系,而是表示近似的或大致的大小关系。例如,″行高度是第一高度的a倍″,表示行高度大致是第一高度的a倍,即,允许实际的行高度与第一高度的a倍之间存在可接受范围内的差异。再例如,″每个逻辑运算模块在X方向上具有第一高度″,表示逻辑运算模块在X方向上的高度大致为第一高度,即,允许逻辑运算模块在X方向上的高度与第一高度之间存在可接受范围内的差异。差异的可接受范围可以是本领域能够接受的通常的范围,也可以是由采用本公开的方案的技术人员根据需要设定的范围。
例如,参考图1A,行102为第一类型的行中的一个,包括第一组寄存器模块和第一组逻辑运算模块。行102的第一组寄存器模块包括以1行2列的阵列的形式排列的2个寄存器模块112,即a=1并且b=2;行102的第一组逻辑运算模块包括以1行2列的阵列的形式排列的2个逻辑运算模块114,即c=2。本领域技术人员将理解,图1A中所示的行102仅是第一类型的行的一个示例,而并不意图构成限制,a、b和c都可以采用其他数值。
在一些实施例中,第一组寄存器模块中的每个寄存器模块可以为p比特的寄存器模块,并且在其靠近第一组逻辑运算模块的一侧设置有沿X方向依次排列的p个1比特的数据输出端口,其中p为正整数。第一组寄存器模块可以包括在Y方向上依次设置的用于共同存储一个p*q比特的数据的q个寄存器模块,其中q为正整数,q不大于第一组寄存器模块的列数和第一组逻辑运算模块的列数。相应地,第一组逻辑运算模块中的至少部分逻辑运算模块中的每个可以包括沿X方向依次排列的p个1比特的运算单元,并且第一组逻辑运算模块中的至少部分逻辑运算模块可以包括在Y方向上依次设置的用于共同处理一个或多个长度为p*q比特的数据的q个逻辑运算模块。具体而言,当q=1时,第一组寄存器模块中的每个用于独立地存储一个p比特的数据,并且第一组逻辑运算模块包括用于独立地处理一个或多个长度为p比特的数据的逻辑运算模块;当q>1时,第一组寄存器模块包括在Y方向上依次设置的用于共同存储一个p*q比特的数据的q个相邻的寄存器模块,并且第一组逻辑运算模块包括在Y方向上依次设置的用于共同处理一个或多个长度为p*q比特的数据的q个相邻的逻辑运算模块。
图1B示出了第一组寄存器模块的结构示意图。如图1B所示,第一组寄存器模块112为p比特的寄存器模块,并且在其靠近第一组逻辑运算模块的一侧设置有沿X方向依次排列的p个1比特的数据输出端口Out[0]到Out[p-1]。
图1C示出了第一组逻辑运算模块中的至少部分逻辑运算模块的结构示意图。如图1C所示,第一组逻辑运算模块中的至少部分逻辑运算模块114包括沿X方向依次排列的p个1比特的运算单元Unit[0]到Unit[p-1]。
在一些实施例中,第一类型的行中的至少一行还可以包括:第五组寄存器模块,包括以a行m列的阵列的形式排列的a*m个寄存器模块,其中每个寄存器模块在X方向上具有第一高度,m为正整数。第一组逻辑运算模块和第五组寄存器模块可以在Y方向上相邻设置,并且第五组寄存器模块可以用于存储经第一组逻辑运算模块处理所得的数据。
例如,参考图1A,行102可以包括第五组寄存器模块。第五组寄存器模块可以包括以1行1列的阵列的形式排列的1个寄存器模块126,即m=1。
在一些实施例中,运算级100的第一类型的行中的至少一个行还可以包括:第二组寄存器模块,包括以d行e列的阵列的形式排列的d*e个寄存器模块,其中每个寄存器模块在X方向上具有第二高度,行高度是第二高度的d倍,其中d、e为正整数;以及第二组逻辑运算模块,包括以d行f列的阵列的形式排列的d*f个逻辑运算模块,其中每个逻辑运算模块在X方向上具有第二高度,其中f为正整数。第二组寄存器模块和第二组逻辑运算模块在Y方向上相邻设置,并且第二组逻辑运算模块用于处理第二组寄存器模块中的数据。
例如,参考图1A,行102可以包括第二组寄存器模块和第二组逻辑运算模块。行102的第二组寄存器模块可以包括以2行2列的阵列的形式排列的4个寄存器模块116,即d=2并且e=2;行102的第二组逻辑运算模块可以包括以2行2列的阵列的形式排列的4个逻辑运算模块118,即f=2。本领域技术人员将理解,图1A中所示出的行102仅是第一类型的行的一个示例,而并不意图构成限制,d、e和i都可以采用其他数值。
在一些实施例中,第二组寄存器模块中的每个寄存器模块为r比特的寄存器模块,并且在其靠近第二组逻辑运算模块的一侧设置有沿X方向依次排列的r个1比特的数据输出端口,其中r为正整数并且满足a*p=d*r,即,在第一组寄存器模块的任意一列中的寄存器模块所能存储的总比特数与在第二组寄存器模块的任意一列中的寄存器模块所能存储的总比特数相同,从而使得第一行的行高度保持一致。第二组寄存器模块可以包括在Y方向上依次设置的用于共同存储一个r*s比特的数据的s个寄存器模块,其中s为正整数,s不大于第二组寄存器模块的列数和第二组逻辑运算模块的列数。第二组逻辑运算模块中的至少部分逻辑运算模块中的每个可以包括沿X方向依次排列的r个1比特的运算单元,该至少部分逻辑运算模块可以包括在Y方向上依次设置的用于共同处理一个或多个长度为r*s比特的数据的s个逻辑运算模块。具体而言,当s=1时,第二组寄存器模块中的每个用于独立地存储一个r比特的数据,并且第二组逻辑运算模块包括用于独立地处理一个或多个长度为r比特的数据的逻辑运算模块;当s>1时,第二组寄存器模块包括在Y方向上依次设置的用于共同存储一个r*s比特的数据的s个相邻的寄存器模块,并且第二组逻辑运算模块包括在Y方向上依次设置的用于共同处理一个或多个长度为r*s比特的数据的s个相邻的逻辑运算模块。
图1D示出了第二组寄存器模块的结构示意图。如图1D所示,第二组寄存器模块116为r比特的寄存器模块,并且在其靠近第二组逻辑运算模块的一侧设置有沿X方向依次排列的r个1比特的数据输出端口Out[0]到Out[r-1]。
图1E示出了第二组逻辑运算模块中的至少部分逻辑运算模块的结构示意图。如图1E所示,第二组逻辑运算模块中的至少部分逻辑运算模块118包括沿X方向依次排列的r个1比特的运算单元Unit[0]到Unit[r-1]。
在一些实施例中,运算级100的多个行还可以包括第二类型的行。每个第二类型的行可以包括:第三组寄存器模块,包括以g行h列的阵列的形式排列的g*h个寄存器模块,其中每个寄存器模块在X方向上具有第三高度,行高度是第三高度的g倍,g、h为正整数;以及第三组逻辑运算模块,包括以g行i列的阵列的形式排列的g*i个逻辑运算模块,其中每个逻辑运算模块在X方向上具有第三高度,i为正整数。第三组寄存器模块和第三组逻辑运算模块在Y方向上相邻设置,并且第三组逻辑运算模块用于处理第三组寄存器模块中的数据。
例如,参考图1A,行104为第二类型的行中的一个,包括第三组寄存器模块和第三组逻辑运算模块。行104的第三组寄存器模块包括以2行2列的阵列的形式排列的4个寄存器模块122,即g=2并且h=2;行104的第三组逻辑运算模块包括以2行2列的阵列的形式排列的4个逻辑运算模块124,即i=2。本领域技术人员将理解,图1A中所示出的行104仅是第二类型的行的一个示例,而并不意图构成限制,g、h和i都可以采用其他数值。
在一些实施例中,第三组寄存器模块中的每个寄存器模块可以为t比特的寄存器模块,并且在其靠近第三组逻辑运算模块的一侧设置有沿X方向依次排列的t个1比特的数据输出端口,其中t为正整数并且满足a*p=g*t,即,在第一类型的行中的第一组寄存器模块的任意一列中的寄存器模块所能存储的总比特数与在第二类型的行中的第三组寄存器模块的任意一列中的寄存器模块所能存储的总比特数相同,从而使得第一类型的行和第二类型的行的行高度保持一致。第三组寄存器模块可以包括在Y方向上依次设置的用于共同存储一个t*u比特的数据的u个寄存器模块,其中u为正整数,u不大于第三组寄存器模块的列数和第三组逻辑运算模块的列数。相应地,第三组逻辑运算模块中的至少部分逻辑运算模块中的每个可以包括沿X方向依次排列的t个1比特的运算单元,并且第三组逻辑运算模块中的至少部分逻辑运算模块可以包括在Y方向上依次设置的用于共同处理一个或多个长度为t*u比特的数据的u个逻辑运算模块。具体而言,当u=1时,第三组寄存器模块中的每个用于独立地存储一个t比特的数据,并且第三组逻辑运算模块包括用于独立地处理一个或多个长度为t比特的数据的逻辑运算模块;当u>1时,第三组寄存器模块可以包括在Y方向上依次设置的用于共同存储一个t*u比特的数据的u个相邻的寄存器模块,并且第三组逻辑运算模块包括在Y方向上依次设置的用于共同处理一个或多个长度为t*u比特的数据的u个逻辑运算模块。
图1F示出了第三组寄存器模块的结构示意图。如图1F所示,第三组寄存器模块122为t比特的寄存器模块,并且在其靠近第三组逻辑运算模块的一侧设置有沿X方向依次排列的t个1比特的数据输出端口Out[0]到Out[t-1]。
图1G示出了第三组逻辑运算模块中的至少部分逻辑运算模块的结构示意图。如图1G所示,第三组逻辑运算模块中的至少部分逻辑运算模块124包括沿X方向依次排列的t个1比特的运算单元Unit[0]到Unit[t-1]。
在一些实施例中,第二类型的行中的至少一行还可以包括:第六组寄存器模块,包括以g行n列的阵列的形式排列的g*n个寄存器模块,其中每个寄存器模块在X方向上具有第三高度,n为正整数。第三组逻辑运算模块和第六组寄存器模块在Y方向上可以相邻设置,并且第六组寄存器模块可以用于存储经第三组逻辑运算模块处理所得的数据。
例如,参考图1A,行104可以包括第六组寄存器模块。第六组寄存器模块可以包括以以2行1列的阵列的形式排列的2个寄存器模块128,即n=1。
在一些实施例中,运算级100的多个行中的至少一个行可以包括:第四组模块,包括以j行k列的阵列的形式排列的j*k个模块,其中每个模块可以是寄存器模块或逻辑运算模块并且在X方向上具有第四高度,行高度是第四高度的j倍,其中j、k为正整数。即,第一类型的行、第二类型的行以及除了第一类型的行和第二类型的行以外的行都可以包括第四组模块。第四组模块中的每个模块都可以任意设置为寄存器模块或逻辑运算模块,因此,第四组模块可以全部是寄存器模块,可以全部是逻辑运算模块,还可以是寄存器模块和逻辑运算模块的任意组合。
例如,参考图1A,第二类型的行104可以包括第四组模块。行104的第四组模块包括以2行4列的阵列的形式排列的8个模块,即j=2并且k=4。该8个模块中包括寄存器模块130和136以及逻辑运算模块132和134。本领域技术人员将理解,图1A中所示的第四组模块的排列方式仅用作例示而并不意图构成限制,其还可以采用其他的排列方式,例如寄存器模块与逻辑运算模块交替排列的方式。例如,在一个实施例中,如图1A所示的相邻的两个寄存器模块130可以为16比特的寄存器,并且用于共同存储一个32比特的数据;如图1A所示的相邻的两个逻辑运算模块132可以为16比特的逻辑运算模块,并且用于共同处理存储在两个寄存器模块130中的32比特的数据。在另一个实施例中,用于共同存储一个32比特的数据的两个16比特的寄存器模块130和用于共同处理存储在两个寄存器模块130中的32比特的数据的两个逻辑运算模块132可以采用彼此交替的方式排列,即,在Y方向上按照一个寄存器模块130、一个逻辑运算模块132,第二个寄存器模块130和第二个逻辑运算模块132的顺序依次排列。
根据本公开的实施例通过使得流水线结构的每个运算级的各个行的行高度保持一致并且使得寄存器模块和用于处理寄存器模块中的数据的逻辑运算模块相邻设置,实现了非常规律且整齐的芯片布局摆放,这有效地降低了布线的长度和复杂度,从而使得芯片的面积利用率提高、关键路径缩短、整体性能得到极大提升。
尽管图1A示出了运算级包括2个行并且示出了每个行的具体结构(例如寄存器模块的数量、逻辑运算模块的数量、不同模块的摆放顺序等等),但本领域技术人员将理解,图1A中的芯片10仅用作例示而并不意图构成任何限制,根据本公开的实施例的采用全定制布局摆放的芯片的流水线结构的每个运算级可以包括在X方向上具有统一的行高度的任意数量的行,其中各个行的具体结构可以根据应用需要任意设置,并且可以包括除了前述的寄存器模块和/或逻辑运算模块以外的其它结构,例如,运算级可以包括如图1A中所示的各种不同的行的任意组合。在应用时,芯片设计者能够采用上述全定制布局摆放结构来实现具有多个层级的复杂算法,使得算法的硬件实现完全遵循算法的预设的层级结构,从而实现最佳的芯片性能。
当确定了用于实现芯片的工艺时,采用如上所述的结构(即其一侧设置有沿X方向依次排列的若干个1比特的数据输出端口)的寄存器模块的在X方向的高度取决于寄存器模块的规模,即所能存储的比特数。因此,在设计芯片的过程中,可以先依据所要实现的算法确定流水线结构的每个运算级中的寄存器模块的规模,再依据该规模确定所采用的寄存器模块在X方向上的高度,从而确定运算级的每个行在X方向上的行高度。之后,为每个行配置在X方向上具有相同高度的逻辑运算模块,最终实现如前文中所述的采用全定制布局摆放的芯片。本领域技术人员将理解,根据本公开的实施例的运算级100的各个行在Y方向上的宽度可以根据需要任意设置,各个行中的寄存器模块的数量和逻辑运算模块的数量可以根据需要任意设置,各个行中的相邻模块之间的间距可以根据需要任意设置,并且各个行中的寄存器模块和逻辑运算模块的在Y方向上的宽度可以根据需要任意设置。
为了更为清楚和直观的呈现本公开的发明构思,下文中将简要介绍SHA-256算法并详细介绍以本公开提出的采用全定制布局摆放的芯片来实现SHA-256算法的示例。本领域技术人员将理解,根据本公开的实施例的采用全定制布局摆放的芯片可以用来实现各种算法,包括但不限于散列算法(例如MD5、SHA-256等等),而不仅限于实现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分别初始化为如下列表格中所示的整数(十六进制)。
步骤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)
其中:
其中,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)
其中:
本领域技术人员将理解,上述对SHA-256的详细介绍是为了更为清楚的呈现本申请的发明构思,而不意图构成任何限制。本文中所提及的SHA-256包括公知可知的任何版本的SHA-256及其变型例和修改例。
针对散列算法中的多轮重复运算,可以采用流水线结构来并行运算多组不同的数据以提高运算效率。以实现SHA-256算法为例,由于对于每个512比特的数据块要进行64轮重复运算,因此可以采用64级的流水线结构来并行运算64组数据。
图5示出了用于实现SHA-256算法的电路中进行轮运算的流水线结构的一个运算级所进行的第t轮运算的运算示意图。注意,图5示出的是该运算级所要实现的运算(包括运算式1和运算式2的运算),并不代表电路实际的布局摆放。
如图5所示,每个运算级包括用于存储中间值的8个32比特的缓存寄存器模块A到H和分别用于存储扩展数据Wt到Wt+15的16个32比特的扩展寄存器模块R0至R15。每个运算级还具有多个逻辑运算模块,包括:全加器模块FAA1、FAA2、FAA3、FAA4、FAA5、FAA6、FAA7、FAA8,超前进位加法器模块CLA1和CLA2,用于进行运算式1中所定义的MAJ运算的MAJ模块,用于进行运算式1中所定义的CH运算的CH模块,用于进行运算式1中所定义的∑0运算的∑0模块,用于进行运算式1中所定义的∑1运算的∑1模块,用于进行运算式2中所定义的σ0运算的σ0模块,以及用于进行运算式2中所定义的σ1运算的σ1模块。
图6示例性地示出了根据本公开的实施例的用于执行SHA-256运算的采用全定制布局摆放的芯片20的结构示意图。图6所示的芯片20是图1A所示的芯片10的变型示例,前述关于芯片10的相同或相应结构的描述均适用于芯片20。为了清楚起见,图6中仅示出了流水线结构的一个运算级200的结构而省略了其它结构,但本领域技术人员将理解,芯片20的流水线结构可以包括任意数量的运算级,并且芯片20还可以包括任意其他结构。
芯片20用于实现SHA-256算法,包括具有多个运算级的流水线结构,其中,运算级200用于实现图5所示的单个运算级的运算。运算级200包括在平行于芯片的衬底的X方向上依次排列并且在X方向上具有统一的行高度的多个行210、220、230和240。其中,第一类型的行包括第一行210、第二行220和第三行230。第一行210包括第一组寄存器模块和第一组逻辑运算模块,第一行210的第一组寄存器模块包括以1行4列的阵列的形式排列的4个32比特的缓存寄存器模块A、B、C和D,第一行210的第一组逻辑运算模块包括以1行5列的阵列的形式排列的32比特的MAJ模块、∑0模块、FAA4模块、FAA5模块和CLA1模块。第二行220包括第一组寄存器模块和第一组逻辑运算模块,第二行220的第一组寄存器模块包括以1行4列的阵列的形式排列的4个32比特的缓存寄存器模块E、F、G和H,第二行的第一组逻辑运算模块包括以1行7列的阵列的形式排列的32比特的CH模块、∑1模块、FAA1模块、FAA2模块、FAA3模块、FAA6模块和CLA2模块。第三行230包括第一组寄存器模块、第一组逻辑运算模块和第五组寄存器模块,第三行230的第一组寄存器模块包括以1行4列的阵列的形式排列的4个32比特的扩展寄存器模块R0、R1、R9和R14,第三行的第一组逻辑运算模块包括以1行5列的阵列的形式排列的32比特的σ0模块、σ1模块、FAA7模块、FAA8模块和CLA3模块,并且第三行的第五组寄存器模块包括1个32比特的扩展寄存器模块R15。运算级200的多个行还包括第四行240。第四行240包括第四组模块,第四行的第四组模块包括以1行11列的阵列形式排列的11个32比特的扩展寄存器模块R2、R3、R4、R5、R6、R7、R8、R10、R11、R12、R13。其中,32比特的缓存寄存器模块A、B、C、D、E、F、G和H中的每个在其靠近第一组逻辑运算模块的一侧设置有沿X方向依次排列的32个1比特的数据输出端口并且用于存储一个32比特的中间值,32比特的扩展寄存器模块R0到R15中的每个在其一侧设置有沿X方向依次排列的32个1比特的数据输出端口并且用于存储一个32比特的扩展数据。各个逻辑运算模块的具体功能与图5中所示的一致。其中,每个行中的第一组逻辑运算模块中的至少部分模块包括沿X方向依次排列的32个1比特的运算单元,例如,FAA1模块包括沿X方向依次排列的32个1比特的全加器单元。注意,为了清楚起见,图6中并未示出运算级200的全部模块,运算级200还可以包括其他结构。本领域技术人员将理解,图6所示的各组逻辑运算模块中各个模块的排列顺序可以根据应用需要灵活调整,而并不仅限于图6中所示的顺序。
图7示例性地示出了根据本公开的实施例的用于执行SHA-256运算的采用全定制布局摆放的芯片30的结构示意图。图7所示的芯片30是图1A所示的芯片10的变型示例,前述关于芯片10的相同或相应结构的描述均适用于芯片30。为了清楚起见,图7中仅示出了流水线结构的一个运算级300的结构而省略了其它结构,但本领域技术人员将理解,芯片30的流水线结构可以包括任意数量的运算级300,并且芯片30还可以包括任意所需的其他结构。
芯片30用于实现SHA-256算法,包括具有多个运算级的流水线结构,其中的运算级300用于实现图5所示的单个运算级的运算。运算级300包括在平行于芯片的衬底的X方向上依次排列并且在X方向上具有第一高度的多个行310和320。其中,第一类型的行包括第一行310和第二行320。第一行310包括第一组寄存器模块、第一组逻辑运算模块、第二组寄存器模块和第二组逻辑运算模块。第一行310的第一组寄存器模块包括以1行4列的阵列的形式排列的4个32比特的缓存寄存器模块A、B、C和D,第一行310的第一组逻辑运算模块包括以1行5列的阵列的形式排列的32比特的MAJ模块、∑0模块、FAA4模块、FAA5模块和CLA1模块,第一行310的第二组寄存器模块包括以1行4列的阵列的形式排列的4个32比特的缓存寄存器模块E、F、G和H,第一行310的第二组逻辑运算模块包括以1行7列的阵列的形式排列的32比特的CH模块、∑1模块、FAA1模块、FAA2模块、FAA3模块、FAA6模块和CLA2模块。第二行320包括第一组寄存器模块、第一组逻辑运算模块、第五组寄存器模块和第四组模块。第二行320的第一组寄存器模块包括以1行4列的阵列的形式排列的4个32比特的扩展寄存器模块R0、R1、R9和R14,第二行320的第一组逻辑运算模块包括以1行5列的阵列的形式排列的32比特的σ0模块、σ1模块、FAA7模块、FAA8模块和CLA3模块,第二行320的第五组寄存器模块包括1个32比特的扩展寄存器模块R15,并且第二行的第四组模块包括以1行11列的阵列形式排列的11个32比特的扩展寄存器模块R2、R3、R4、R5、R6、R7、R8、R10、R11、R12、R13。其中,32比特的缓存寄存器模块A、B、C和D中的每个在其靠近所述第一组逻辑运算模块的一侧设置有沿X方向依次排列的32个1比特的数据输出端口并且用于存储一个32比特的中间值,32比特的缓存寄存器模块E、F、G和H中的每个在其靠近所述第二组逻辑运算模块的一侧设置有沿X方向依次排列的32个1比特的数据输出端口并且用于存储一个32比特的中间值,32比特的扩展寄存器模块R0到R15中的每个在其一侧设置有沿X方向依次排列的32个1比特的数据输出端口并且用于存储一个32比特的扩展数据。各个逻辑运算模块的具体功能与图5中所示的一致。其中,每个行中的第一组逻辑运算模块中的至少部分模块包括沿X方向依次排列的32个1比特的运算单元,例如,FAA4模块包括沿X方向依次排列的32个1比特的全加器单元;并且第一行310第二组逻辑运算模块中的至少部分模块包括沿X方向依次排列的32个1比特的运算单元,例如,FAA1模块包括沿X方向依次排列的32个1比特的全加器单元。注意,为了清楚起见,图7中并未示出运算级300的全部模块,运算级300还可以包括其他结构。图7所示的各组逻辑运算模块中各个模块的排列顺序可以根据应用需要灵活调整,而并不仅限于图7中所示的顺序。
图8A示例性地示出了根据本公开的实施例的用于执行SHA-256运算的采用全定制布局摆放的芯片40的结构示意图。图8A所示的芯片40是图1A所示的芯片10的变型示例,前述关于芯片10的相同或相应结构的描述均适用于芯片40。为了清楚起见,图8A中仅示出了流水线结构的一个运算级400的结构而省略了其它结构,但本领域技术人员将理解,芯片40的流水线结构可以包括任意数量的运算级400,并且芯片40还可以包括任意所需的其他结构。
芯片40用于实现SHA-256算法,包括具有多个运算级的流水线结构,其中的运算级400用于实现图5所示的单个运算级的运算。运算级400包括在平行于芯片的衬底的X方向上依次排列并且在X方向上具有第一高度的多个行410、420、430和440。其中,第一类型的行包括第一行410、第二行420和第三行430。第一行410包括第一组寄存器模块和第一组逻辑运算模块,第一行410的第一组寄存器模块包括以1行8列的阵列的形式排列的8个16比特的缓存寄存器模块A1、A2、B1、B2、C1、C2、D1、D2(部分未示出),第一行的第一组逻辑运算模块包括两个16比特的MAJ模块、两个16比特的∑0模块和一个32比特的CLA1模块等等。第二行420包括第一组寄存器模块和第一组逻辑运算模块,第二行420的第一组寄存器模块包括以1行8列的阵列的形式排列的8个16比特的缓存寄存器模块E1、E2、F1、F2、G1、G2、H1、H2(部分未示出),第二行420的第一组逻辑运算模块包括两个16比特的CH模块、两个16比特的∑1模块和一个32比特的CLA2模块等等。第三行430包括第一组寄存器模块、第一组逻辑运算模块和第五组寄存器模块,第三行430的第一组寄存器模块包括以1行8列的阵列的形式排列的8个16比特的扩展寄存器模块R0-1、R0-2、R1-1、R1-2、R9-1、R9-2、R14-1、R14-2(部分未示出),第三行的第一组逻辑运算模块包括两个16比特的σ0模块、两个16比特的σ1模块和一个32比特的CLA3模块等等,并且第三行的第五组寄存器模块包括以1行2列的阵列的形式排列的2个16比特的扩展寄存器模块R15-1和R15-2。运算级400的多个行还可以包括第四行440,第四行包括第四组模块,第四行的第四组模块包括以1行22列的阵列形式排列的22个16比特的扩展寄存器模块R2-1、R2-2、R3-1、R3-2、R4-1、R4-2、R5-1、R5-2、R6-1、R6-2、R7-1、R7-2、R8-1、R8-2、R10-1、R10-2、R11-1、R11-2、R12-1、R12-2、R13-1、R13-2。注意,为了清楚起见,图8A中并未示出运算级400的全部模块,运算级还可以包括其他结构。图8A所示的各组逻辑运算模块中各个模块的排列顺序可以根据应用需要灵活调整,而并不仅限于图8A中所示的顺序。
继续参考图8A,其中,第一行410和第二行420中的每个行中的每两个相邻的16比特的缓存寄存器模块用于共同存储一个32比特的中间值,例如,第一行410中的相邻的两个16比特的缓存寄存器模块A1和A2用于共同存储如图5所示的轮运算中的一个32比特的中间值。图8B示出了两个相邻的缓存寄存器模块A1和A2的结构示意图,其中一个缓存寄存器模块A1在其靠近第一组逻辑运算模块的一侧设置有沿X方向依次排列的16个1比特的数据输出端口Out[0]、Out[2]直到Out[30],另一个缓存寄存器模块A2在其靠近第一组逻辑运算模块的一侧设置有沿X方向依次排列的16个1比特的数据输出端口Out[1]、Out[3]直到Out[31]。
第三行430和第四行440中的每个行中的每两个相邻的16比特的扩展寄存器模块用于存储一个32比特的扩展数据,例如,第三行430中的两个相邻的16比特的扩展寄存器模块R0-1和R0-2用于存储如图5所示的轮运算中的一个32比特的扩展数据。图8C示出了两个相邻的扩展寄存器模块R0-1和R0-2的结构示意图,其中一个扩展寄存器模块R0-1在其一侧设置有沿X方向依次排列的16个1比特的数据输出端口Out[0]、Out[2]直到Out[30],另一个扩展寄存器模块R0-2在其一侧设置有沿X方向依次排列的16个1比特的数据输出端口Out[1]、Out[3]直到Out[31]。
第一行410、第二行420和第三行430中的每个行中的第一组逻辑运算模块可以包括用于共同处理一个或多个长度为32比特的数据的相邻的2个逻辑运算模块,例如,第二行420中的相邻的两个16比特的CH模块用于依据运算式1中所定义的运算共同处理长度为32比特的三个数据。图8D示出了相邻的两个16比特的CH模块的结构示意图,其中一个CH模块包括16个用于依据运算式1中所定义的运算共同处理长度为1比特的三个数据的CH运算单元CH[0]、CH[2]直到CH[30],该16个CH运算单元沿X方向依次排列;另一个CH模块包括16个用于依据运算式1中所定义的运算共同处理长度为1比特的三个数据的CH运算单元CH[1]、CH[3]直到CH[31],该16个CH运算单元沿X方向依次排列。
对比参考图6所示的运算级200和图8A所示的运算级400,运算级200的整体结构高且瘦,即,沿X方向较长而沿Y方向较短,这使得运算级200中的沿X方向的跨越各个行的布线较长,沿Y方向的同一行内的布线较短;运算级400的整体结构矮且胖,即,沿X方向较短而沿Y方向较长,这使得运算级400中的沿X方向的跨越各个行的布线较短,沿Y方向的同一行内的布线较长。在应用时,可以根据需要选择更为适宜的方案。例如,当同一行内的布线更多时,可以采用图6所示的运算级200的结构,当跨越各个行的布线更多时,可以采用图8A所示的运算级400的结构。
图9示例性地示出了根据本公开的实施例的用于执行SHA-256运算的采用全定制布局摆放的芯片50的结构示意图。图9所示的芯片50是图1A所示的芯片10的变型示例,前述关于芯片10的相同或相应结构的描述均适用于芯片50。为了清楚起见,图9中仅示出了流水线结构的一个运算级500的结构而省略了其它结构,但本领域技术人员将理解,芯片50的流水线结构可以包括任意数量的运算级,并且芯片50还可以包括任意其他结构。图9所示的运算级500也可以看作是通过组合图6所示的运算级200和图8A所示的运算级400而得到的变形示例。本领域技术人员将理解,在保证各个行的行高度一致的前提下,本公开的各个实施例中所示出的各种类型的行均可以根据应用需要进行任意重排和组合。
芯片50用于实现SHA-256算法,包括具有多个运算级的流水线结构,其中,运算级500用于实现图5所示的单个运算级的运算。运算级500包括在平行于芯片的衬底的X方向上依次排列并且在X方向上具有统一的行高度的多个行510、520、530和540。其中,第一类型的行包括第一行510。第一行510包括第一组寄存器模块和第一组逻辑运算模块,第一行510的第一组寄存器模块包括以1行4列的阵列的形式排列的4个32比特的缓存寄存器模块A、B、C和D,第一行510的第一组逻辑运算模块包括以1行5列的阵列的形式排列的32比特的MAJ模块、∑0模块、FAA4模块、FAA5模块和CLA1模块。第二类型的行包括第二行520和第三行530。第二行520包括第三组寄存器模块和第三组逻辑运算模块,第二行的第三组寄存器模块包括以2行4列的阵列的形式排列的8个16比特的缓存寄存器模块E1、E2、F1、F2、G1、G2、H1、H2,第二行的第三组逻辑运算模块包括以2行多列的阵列的形式排列的两个16比特的CH模块、两个16比特的∑1模块、两个16比特的FAA1模块、两个16比特的FAA2模块、两个16比特的FAA3模块和两个16比特的FAA6模块。第二行520还可以包括在X方向上具有行高度的一个32比特的CLA2模块。第三行430包括第三组寄存器模块、第三组逻辑运算模块和第六组寄存器模块。第三行430的第三组寄存器模块包括以2行4列的阵列的形式排列的8个16比特的扩展寄存器模块R0-1、R0-2、R1-1、R1-2、R9-1、R9-2、R14-1、R14-2,第三行的第三组逻辑运算模块包括以2行多列的阵列形式设置的两个16比特的σ0模块、两个16比特的σ1模块、两个16比特的FAA7模块和两个16比特的FAA8模块等。第三行还可以包括在X方向上具有行高度的一个32比特的CLA3模块。第三行的第六组寄存器模块包括以2行1列的阵列的形式排列的2个16比特的扩展寄存器模块R15-1和R15-2。运算级500的多个行还包括第四行540。第四行540包括第四组模块,第四行的第四组模块包括以1行11列的阵列形式排列的11个32比特的扩展寄存器模块R2、R3、R4、R5、R6、R7、R8、R10、R11、R12、R13。
继续参考图9,其中,每个32比特的缓存寄存器模块用于存储一个32比特的中间值,每个32比特的扩展寄存器模块用于存储一个32比特的扩展数据。第二行520中的在Y方向上依次设置的每两个16比特的缓存寄存器模块用于共同存储一个32比特的中间值,例如,第二行520中的相邻的两个16比特的缓存寄存器模块E1和E2用于共同存储如图5所示的轮运算中的一个32比特的中间值。第三行530中的每两个在Y方向上依次设置的16比特的扩展寄存器模块用于共同存储一个32比特的扩展数据。例如,第三行530中的两个相邻的16比特的扩展寄存器模块R0-1和R0-2用于共同存储如图5所示的轮运算中的一个32比特的扩展数据。第二行520和第三行530中的每个行中的第三组逻辑运算模块可以包括用于共同处理一个或多个长度为32比特的数据的相邻的2个逻辑运算模块,例如,第二行520中的相邻的两个16比特的CH模块用于依据运算式1中所定义的运算共同处理长度为32比特的三个数据。注意,为了清楚起见,图9中并未示出运算级500的全部模块,运算级500还可以包括其他结构。本领域技术人员将理解,图9所示的各组逻辑运算模块中各个模块的排列顺序可以根据应用需要灵活调整,而并不仅限于图9中所示的顺序。
图10示例性地示出了根据本公开的实施例的用于执行SHA-256运算的采用全定制布局摆放的芯片60的结构示意图。图10所示的芯片60是图1所示的芯片10的变型示例,前述关于芯片10的相同或相应结构的描述均适用于芯片60。为了清楚起见,图10中仅示出了流水线结构的一个运算级600的结构而省略了其它结构,但本领域技术人员将理解,芯片60的流水线结构可以包括任意数量的运算级600,并且芯片60还可以包括任意所需的其他结构。
芯片60用于实现SHA-256算法,包括具有多个运算级的流水线结构,其中的运算级600用于实现图5所示的单个运算级的运算。运算级600包括在平行于芯片的衬底的X方向上依次排列并且在X方向上具有第一高度的多个行610和620。其中,第一类型的行包括第一行610和第二行620。第一行610包括第一组寄存器模块、第一组逻辑运算模块、第二组寄存器模块、第二组逻辑运算模块和第四组模块。第一行610的第一组寄存器模块包括以1行4列的阵列的形式排列的4个32比特的缓存寄存器模块A、B、C和D,第一行610的第一组逻辑运算模块包括以1行5列的阵列的形式排列的32比特的MAJ模块、∑0模块、FAA4模块、FAA5模块和CLA1模块,第一行610的第二组寄存器模块包括以1行4列的阵列的形式排列的4个32比特的缓存寄存器模块E、F、G和H,第一行610的第二组逻辑运算模块包括以1行7列的阵列的形式排列的32比特的CH模块、∑1模块、FAA1模块、FAA2模块、FAA3模块、FAA6模块和CLA2模块,并且第一行610的第四组模块包括以2行2列的阵列的形式排列的4个16比特的扩展寄存器模块R4-1、R4-2、R5-1和R5-2。
第二行620包括第一组寄存器模块、第一组逻辑运算模块、第五组寄存器模块和第四组模块。第二行620的第一组寄存器模块包括以1行4列的阵列的形式排列的4个32比特的扩展寄存器模块R0、R1、R9和R14,第二行620的第一组逻辑运算模块包括以1行5列的阵列的形式设置的32比特的σ0模块、σ1模块、FAA7模块、FAA8模块和CLA3模块,第二行620的第五组寄存器模块包括1个32比特的扩展寄存器模块R15;并且第二行620的第四组模块包括以2行2列的阵列的形式排列的4个16比特的扩展寄存器模块R7-1、R7-2、R8-1和R8-2。运算级600的各个行还可以包括除前文中所述的模块以外的其他结构,例如,第二行620还可以包括32比特的扩展寄存器模块R2-R3、R6、R10-R13。其中,32比特的缓存寄存器模块A、B、C和D中的每个在其靠近所述第一组逻辑运算模块的一侧设置有沿X方向依次排列的32个1比特的数据输出端口并且用于存储一个32比特的中间值;32比特的缓存寄存器模块E、F、G和H中的每个在其靠近所述第二组逻辑运算模块的一侧设置有沿X方向依次排列的32个1比特的数据输出端口并且用于存储一个32比特的中间值;32比特的扩展寄存器模块R0到R3、R6、R9到R15中的每个在其一侧设置有沿X方向依次排列的32个1比特的数据输出端口并且用于存储一个32比特的扩展数据;16比特的扩展寄存器模块R4-1、R4-2、R5-1、R5-2、R7-1、R7-2、R8-1和R8-2中的每个在其一侧设置有沿X方向依次排列的16个1比特的数据输出端口,并且第一行610和第二行620中的每个行中的第四组模块中的在Y方向上依次设置的每两个相邻的16比特的扩展寄存器模块用于共同存储一个32比特的扩展数据,例如,第一行610中的两个在Y方向上相邻的16比特的扩展寄存器模块R4-1和R4-2用于共同存储一个32比特的扩展数据。图10中各个逻辑运算模块的具体功能与图5中所示的一致,其中,第一行610和第二行620中的每个行中的第一组逻辑运算模块中的至少部分模块包括沿X方向依次排列的32个1比特的运算单元,例如,FAA4模块包括沿X方向依次排列的32个1比特的全加器单元。第一行610的第三组逻辑运算模块中的至少部分模块包括沿X方向依次排列的32个1比特的运算单元,例如,FAA1模块包括沿X方向依次排列的32个1比特的全加器单元。注意,为了清楚起见,图10中并未示出运算级600的全部模块,运算级600还可以包括其他结构。
关于本公开中对第一组寄存器模块、第一组逻辑运算模块、第二组寄存器模块、第二组逻辑运算模块、第三组寄存器模块和第三组逻辑运算模块的定义,此处做一些补充性质的解释说明以方便本领域技术人员的理解。注意,此处的解释说明仅用于辅助理解而并不意图构成额外的限制。在采用本公开技术方案的流水线结构的一个运算级中,如果某一行包括以矩阵形式设置的一组寄存器模块和与之相邻的、以矩阵形式设置的且用于处理该组寄存器模块中的数据的一组逻辑运算模块,并且两组模块的行数相同,则该组寄存器模块和该组逻辑运算模块可以分别认定为第一组寄存器模块和第一组逻辑运算模块,其中,第一组寄存器模块的行数认定为a,第一组寄存器模块的列数认定为b,第一组逻辑运算模块的列数认定为c,并且该行认定为第一类型的行。在运算级中,如果其他任何一行也包括符合第一组寄存器模块和第一组逻辑运算模块的定义的若干模块,则该行也可以认定为第一类型的行,并且相应模块也可以认定为第一组寄存器模块和第一组逻辑运算模块。如果运算级的某个第一类型的行除了第一组寄存器模块和第一组逻辑运算模块以外,还包括以矩阵形式设置的另一组寄存器模块和与之相邻的、以矩阵形式设置的且用于处理该组寄存器模块中的数据的另一组逻辑运算模块,并且两组模块的行数相同,则该另一组寄存器模块和该另一组逻辑运算模块可以认定为第二组寄存器模块和第二组逻辑运算模块,其中,第二组寄存器模块的行数认定为d,第二组寄存器模块的列数认定为e,第二组逻辑运算模块的列数认定为f。如果该运算级的某一行包括以矩阵形式设置的一组寄存器模块和与之相邻的、以矩阵形式设置的并且用于处理该组寄存器模块中的数据的一组逻辑运算模块,两组模块的行数相同,但是该组寄存器模块和该组逻辑运算模块不符合第一组寄存器模块和第一组逻辑运算模块的定义(例如该组寄存器模块并非a行b列,或者该组逻辑运算模块并非a行c列等),则该组寄存器模块和该组逻辑运块可以分别认定为第三组寄存器模块和第三组逻辑运算模块,其中,第三组寄存器模块的行数认定为g,第三组寄存器模块的列数认定为h,第三组逻辑运算模块的列数认定为i,并且该行认定为第二类型的行。
根据本公开的实施例,还提供一种用于实现挖矿算法的电子装置,其包括如前文中所述的采用全定制布局摆放的芯片,包括但不限于芯片10、芯片20、芯片30、芯片40、芯片50和芯片60。
在这里示出和讨论的所有示例中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它示例可以具有不同的值。
在说明书及权利要求中的词语″前″、″后″、″顶″、″底″、″之上″、″之下″等,如果存在的话,用于描述性的目的而并不一定用于描述不变的相对位置。应当理解,这样使用的词语在适当的情况下是可互换的,使得在此所描述的本公开的实施例,例如,能够在与在此所示出的或另外描述的那些取向不同的其他取向上操作。
如在此所使用的,词语″示例性的″意指″用作示例、实例或说明″,而不是作为将被精确复制的″模型″。在此示例性描述的任意实现方式并不一定要被解释为比其它实现方式优选的或有利的。而且,本公开不受在上述技术领域、背景技术、实用新型内容或具体实施方式中所给出的任何所表述的或所暗示的理论所限定。
如在此所使用的,词语″基本上″意指包含由设计或制造的缺陷、器件或元件的容差、环境影响和/或其它因素所致的任意微小的变化。词语″基本上″还允许由寄生效应、噪音以及可能存在于实际的实现方式中的其它实际考虑因素所致的与完美的或理想的情形之间的差异。
上述描述可以指示被″连接″或″耦合″在一起的元件或节点或特征。如在此所使用的,除非另外明确说明,″连接″意指一个元件/节点/特征与另一种元件/节点/特征在电学上、机械上、逻辑上或以其它方式直接地连接(或者直接通信)。类似地,除非另外明确说明,″耦合″意指一个元件/节点/特征可以与另一元件/节点/特征以直接的或间接的方式在机械上、电学上、逻辑上或以其它方式连结以允许相互作用,即使这两个特征可能并没有直接连接也是如此。也就是说,″耦合″意图包含元件或其它特征的直接连结和间接连结,包括利用一个或多个中间元件的连接。
还应理解,″包括/包含″一词在本文中使用时,说明存在所指出的特征、整体、步骤、操作、单元和/或组件,但是并不排除存在或增加一个或多个其它特征、整体、步骤、操作、单元和/或组件以及/或者它们的组合。
本领域技术人员应当意识到,在上述操作之间的边界仅仅是说明性的。多个操作可以结合成单个操作,单个操作可以分布于附加的操作中,并且操作可以在时间上至少部分重叠地执行。而且,另选的实施例可以包括特定操作的多个实例,并且在其他各种实施例中可以改变操作顺序。但是,其它的修改、变化和替换同样是可能的。因此,本说明书和附图应当被看作是说明性的,而非限制性的。
虽然已经通过示例对本公开的一些特定实施例进行了详细说明,但是本领域的技术人员应该理解,以上示例仅是为了进行说明,而不是为了限制本公开的范围。在此公开的各实施例可以任意组合,而不脱离本公开的精神和范围。本领域的技术人员还应理解,可以对实施例进行多种修改而不脱离本公开的范围和精神。本公开的范围由所附权利要求来限定。
Claims (14)
1.一种采用全定制布局摆放的芯片,其特征在于,包括具有多个运算级的流水线结构,其中每个运算级包括:
在平行于芯片的衬底的X方向上依次排列并且在X方向上具有统一的行高度的多个行,所述多个行包括第一类型的行,每个第一类型的行包括:
第一组寄存器模块,包括以a行b列的阵列的形式排列的a*b个寄存器模块,其中每个寄存器模块在X方向上具有第一高度,所述行高度是第一高度的a倍,其中a、b为正整数;以及
第一组逻辑运算模块,包括以a行c列的阵列的形式排列的a*c个逻辑运算模块,其中每个逻辑运算模块在X方向上具有第一高度,其中c为正整数;
其中,所述第一组寄存器模块和所述第一组逻辑运算模块在Y方向上相邻设置,并且所述第一组逻辑运算模块用于处理所述第一组寄存器模块中的数据。
2.根据权利要求1所述的芯片,其特征在于,其中:
所述第一组寄存器模块中的每个寄存器模块为p比特的寄存器模块,并且在其靠近所述第一组逻辑运算模块的一侧设置有沿X方向依次排列的p个1比特的数据输出端口,其中p为正整数;
所述第一组寄存器模块包括在Y方向上依次设置的用于共同存储一个p*q比特的数据的q个寄存器模块,其中q为正整数;
所述第一组逻辑运算模块中的至少部分逻辑运算模块中的每个包括沿X方向依次排列的p个1比特的运算单元;以及
所述第一组逻辑运算模块中的所述至少部分逻辑运算模块包括在Y方向上依次设置的用于共同处理一个或多个长度为p*q比特的数据的q个逻辑运算模块。
3.根据权利要求2所述的芯片,其特征在于,第一类型的行中的至少一个行还包括:
第二组寄存器模块,包括以d行e列的阵列的形式排列的d*e个寄存器模块,其中每个寄存器模块在X方向上具有第二高度,所述行高度是第二高度的d倍,其中d、e为正整数;以及
第二组逻辑运算模块,包括以d行f列的阵列的形式排列的d*f个逻辑运算模块,其中每个逻辑运算模块在X方向上具有第二高度,其中f为正整数,
其中,所述第二组寄存器模块和所述第二组逻辑运算模块在Y方向上相邻设置,并且所述第二组逻辑运算模块用于处理所述第二组寄存器模块中的数据。
4.根据权利要求3所述的芯片,其特征在于,其中:
所述第二组寄存器模块中的每个寄存器模块为r比特的寄存器模块,并且在其靠近所述第二组逻辑运算模块的一侧设置有沿X方向依次排列的r个1比特的数据输出端口,其中r为正整数并且满足a*p=d*r;
所述第二组寄存器模块包括在Y方向上依次设置的用于共同存储一个r*s比特的数据的s个寄存器模块,其中s为正整数;
所述第二组逻辑运算模块中的至少部分逻辑运算模块中的每个包括沿X方向依次排列的r个1比特的运算单元;以及
所述第二组逻辑运算模块中的所述至少部分逻辑运算模块包括在Y方向上依次设置的用于共同处理一个或多个长度为r*s比特的数据的s个逻辑运算模块。
5.根据权利要求2所述的芯片,其特征在于,所述多个行包括第二类型的行,每个第二类型的行包括:
第三组寄存器模块,包括以g行h列的阵列的形式排列的g*h个寄存器模块,其中每个寄存器模块在X方向上具有第三高度,所述行高度是第三高度的g倍,其中g、h为正整数;以及
第三组逻辑运算模块,包括以g行i列的阵列的形式排列的g*i个逻辑运算模块,其中每个逻辑运算模块在X方向上具有第三高度,其中i为正整数;
其中,所述第三组寄存器模块和所述第三组逻辑运算模块在Y方向上相邻设置,并且所述第三组逻辑运算模块用于处理所述第三组寄存器模块中的数据。
6.根据权利要求5所述的芯片,其特征在于,其中:
所述第三组寄存器模块中的每个寄存器模块为t比特的寄存器模块,并且在其靠近所述第三组逻辑运算模块的一侧设置有沿X方向依次排列的t个1比特的数据输出端口,其中t为正整数并且满足a*p=g*t;
所述第三组寄存器模块包括在Y方向上依次设置的用于共同存储一个t*u比特的数据的u个寄存器模块,其中u为正整数;
所述第三组逻辑运算模块中的至少部分逻辑运算模块中的每个包括沿X方向依次排列的t个1比特的运算单元;以及
所述第三组逻辑运算模块中的所述至少部分逻辑运算模块包括在Y方向上依次设置的用于共同处理一个或多个长度为t*u比特的数据的u个逻辑运算模块。
7.根据权利要求5或6所述的芯片,其特征在于,所述多个行中的至少一个行包括:
第四组模块,包括以j行k列的阵列的形式排列的j*k个模块,其中每个模块是寄存器模块或逻辑运算模块并且在X方向上具有第四高度,所述行高度是第四高度的j倍,其中j、k为正整数。
8.根据权利要求7所述的芯片,其特征在于,
其中,所述第一类型的行中的至少一行还包括:
第五组寄存器模块,包括以a行m列的阵列的形式排列的a*m个寄存器模块,其中每个寄存器模块在X方向上具有第一高度,m为正整数;
其中,所述第一组逻辑运算模块和所述第五组寄存器模块在Y方向上相邻设置,并且所述第五组寄存器模块用于存储经所述第一组逻辑运算模块处理所得的数据;以及/或者
其中,所述第二类型的行中的至少一行还包括:
第六组寄存器模块,包括以g行n列的阵列的形式排列的g*n个寄存器模块,其中每个寄存器模块在X方向上具有第三高度,n为正整数;
其中,所述第三组逻辑运算模块和所述第六组寄存器模块在Y方向上相邻设置,并且所述第六组寄存器模块用于存储经所述第三组逻辑运算模块处理所得的数据。
9.根据权利要求8所述的芯片,其特征在于,其中:
所述芯片用于实现SHA-256算法;
每个运算级的第一类型的行包括第一行、第二行和第三行,其中:
第一行包括第一组寄存器模块和第一组逻辑运算模块,第一行的第一组寄存器模块包括以1行4列的阵列的形式排列的4个32比特的缓存寄存器模块A、B、C和D,
第二行包括第一组寄存器模块和第一组逻辑运算模块,第二行的第一组寄存器模块包括以1行4列的阵列的形式排列的4个32比特的缓存寄存器模块E、F、G和H,以及
第三行包括第一组寄存器模块、第一组逻辑运算模块和第五组寄存器模块,第三行的第一组寄存器模块包括以1行4列的阵列的形式排列的4个32比特的扩展寄存器模块R0、R1、R9和R14,第三行的第五组寄存器模块包括1个32比特的扩展寄存器模块R15;
每个运算级的所述多个行还包括第四行,第四行包括第四组模块,第四行的第四组模块包括以1行11列的阵列形式排列的11个32比特的扩展寄存器模块R2、R3、R4、R5、R6、R7、R8、R10、R11、R12、R13;以及
每个32比特的缓存寄存器模块用于存储一个32比特的中间值,每个32比特的扩展寄存器模块用于存储一个32比特的扩展数据。
10.根据权利要求8所述的芯片,其特征在于,其中:
所述芯片用于实现SHA-256算法;以及
每个运算级的第一类型的行包括第一行和第二行,其中:
第一行包括第一组寄存器模块、第一组逻辑运算模块、第二组寄存器模块和第二组逻辑运算模块,其中第一行的第一组寄存器模块包括以1行4列的阵列的形式排列的4个32比特的缓存寄存器模块A、B、C和D,并且第一行的第二组寄存器模块包括以1行4列的阵列的形式排列的4个32比特的缓存寄存器模块E、F、G和H,
第二行包括第一组寄存器模块、第一组逻辑运算模块、第五组寄存器模块和第四组模块,其中第二行的第一组寄存器模块包括以1行4列的阵列的形式排列的4个32比特的扩展寄存器模块R0、R1、R9和R14,第二行的第五组寄存器模块包括1个32比特的扩展寄存器模块R15,并且第二行的第四组模块包括以1行11列的阵列形式排列的11个32比特的扩展寄存器模块R2、R3、R4、R5、R6、R7、R8、R10、R11、R12、R13;以及
每个32比特的缓存寄存器模块用于存储一个32比特的中间值,每个32比特的扩展寄存器模块用于存储一个32比特的扩展数据。
11.根据权利要求8所述的芯片,其特征在于,其中:
所述芯片用于实现SHA-256算法;
每个运算级的第一类型的行包括第一行、第二行和第三行,其中:
第一行包括第一组寄存器模块和第一组逻辑运算模块,第一行的第一组寄存器模块包括以1行8列的阵列的形式排列的8个16比特的缓存寄存器模块A1、A2、B1、B2、C1、C2、D1、D2,
第二行包括第一组寄存器模块和第一组逻辑运算模块,第二行的第一组寄存器模块包括以1行8列的阵列的形式排列的8个16比特的缓存寄存器模块E1、E2、F1、F2、G1、G2、H1、H2,以及
第三行包括第一组寄存器模块、第一组逻辑运算模块和第五组寄存器模块,第三行的第一组寄存器模块包括以1行8列的阵列的形式排列的8个16比特的扩展寄存器模块R0-1、R0-2、R1-1、R1-2、R9-1、R9-2、R14-1、R14-2,第三行的第五组寄存器模块包括以1行2列的阵列的形式排列的2个16比特的扩展寄存器模块R15-1和R15-2;
每个运算级的所述多个行还包括第四行,第四行包括第四组模块,第四行的第四组模块包括以1行22列的阵列形式排列的22个16比特的扩展寄存器模块R2-1、R2-2、R3-1、R3-2、R4-1、R4-2、R5-1、R5-2、R6-1、R6-2、R7-1、R7-2、R8-1、R8-2、R10-1、R10-2、R11-1、R11-2、R12-1、R12-2、R13-1、R13-2;以及
第一行和第二行中的每个行中的每两个相邻的16比特的缓存寄存器模块用于共同存储一个32比特的中间值,第三行和第四行中的每个行中的每两个相邻的16比特的扩展寄存器模块用于共同存储一个32比特的扩展数据,第一行、第二行和第三行中的每个行中的第一组逻辑运算模块包括用于共同处理一个或多个长度为32比特的数据的、在Y方向上相邻的2个逻辑运算模块。
12.根据权利要求8所述的芯片,其特征在于,其中:
所述芯片用于实现SHA-256算法;以及
每个运算级的第一类型的行包括第一行,其中:
第一行包括第一组寄存器模块和第一组逻辑运算模块,第一行的第一组寄存器模块包括以1行4列的阵列的形式排列的4个32比特的缓存寄存器模块A、B、C和D,
每个运算级的第二类型的行包括第二行和第三行,其中:
第二行包括第三组寄存器模块和第三组逻辑运算模块,第二行的第三组寄存器模块包括以2行4列的阵列的形式排列的8个16比特的缓存寄存器模块E1、E2、F1、F2、G1、G2、H1、H2;
第三行包括第三组寄存器模块、第三组逻辑运算模块和第六组寄存器模块,第三行的第三组寄存器模块包括以2行4列的阵列的形式排列的8个16比特的扩展寄存器模块R0-1、R0-2、R1-1、R1-2、R9-1、R9-2、R14-1、R14-2,第三行的第六组寄存器模块包括以2行1列的阵列的形式排列的2个16比特的扩展寄存器模块R15-1、R15-2;
每个运算级的所述多个行还包括第四行,第四行包括第四组模块,第四行的第四组模块包括以1行11列的阵列形式排列的11个32比特的扩展寄存器模块R2、R3、R4、R5、R6、R7、R8、R10、R11、R12、R13;
每个32比特的缓存寄存器模块用于存储一个32比特的中间值,每个32比特的扩展寄存器模块用于存储一个32比特的扩展数据,第二行中的在Y方向上依次设置的每两个相邻的16比特的缓存寄存器模块用于共同存储一个32比特的中间值,第三行中的在Y方向上依次设置的每两个相邻的16比特的扩展寄存器模块用于共同存储一个32比特的扩展数据,第二行和第三行中的每个行中的第三组逻辑运算模块包括用于共同处理一个或多个长度为32比特的数据的、在Y方向上相邻的2个逻辑运算模块。
13.根据权利要求8所述的芯片,其特征在于,其中:
所述芯片用于实现SHA-256算法;以及
每个运算级的第一类型的行包括第一行和第二行,其中:
第一行包括第一组寄存器模块、第一组逻辑运算模块、第二组寄存器模块、第二组逻辑运算模块和第四组模块,其中第一行的第一组寄存器模块包括以1行4列的阵列的形式排列的4个32比特的缓存寄存器模块A、B、C和D,第一行的第二组寄存器模块包括以1行4列的阵列的形式排列的4个32比特的缓存寄存器模块E、F、G和H,并且第一行的第四组模块包括以2行2列的阵列的形式排列的4个16比特的扩展寄存器模块,
第二行包括第一组寄存器模块、第一组逻辑运算模块、第五组寄存器模块和第四组模块,其中第二行的第一组寄存器模块包括以1行4列的阵列的形式排列的4个32比特的扩展寄存器模块R0、R1、R9和R14,第二行的第五组寄存器模块包括1个32比特的扩展寄存器模块R15,并且第二行的第四组模块包括以2行2列的阵列的形式排列的4个16比特的扩展寄存器模块;以及
每个32比特的缓存寄存器模块用于存储一个32比特的中间值,每个32比特的扩展寄存器模块用于存储一个32比特的扩展数据,第一行和第二行中的每个行中的第四组模块中的在Y方向上依次设置的每两个16比特的扩展寄存器模块用于共同存储一个32比特的扩展数据。
14.一种用于实现挖矿算法的电子装置,其特征在于,包括权利要求1-13中任一项所述的采用全定制布局摆放的芯片。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202120363831.0U CN214670605U (zh) | 2021-02-08 | 2021-02-08 | 采用全定制布局摆放的芯片以及用于实现挖矿算法的电子装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202120363831.0U CN214670605U (zh) | 2021-02-08 | 2021-02-08 | 采用全定制布局摆放的芯片以及用于实现挖矿算法的电子装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN214670605U true CN214670605U (zh) | 2021-11-09 |
Family
ID=78447566
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202120363831.0U Active CN214670605U (zh) | 2021-02-08 | 2021-02-08 | 采用全定制布局摆放的芯片以及用于实现挖矿算法的电子装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN214670605U (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022166528A1 (zh) * | 2021-02-08 | 2022-08-11 | 深圳比特微电子科技有限公司 | 采用全定制布局摆放的芯片以及用于实现挖矿算法的电子装置 |
-
2021
- 2021-02-08 CN CN202120363831.0U patent/CN214670605U/zh active Active
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022166528A1 (zh) * | 2021-02-08 | 2022-08-11 | 深圳比特微电子科技有限公司 | 采用全定制布局摆放的芯片以及用于实现挖矿算法的电子装置 |
US11947889B2 (en) | 2021-02-08 | 2024-04-02 | Shenzhen Microbt Electronics Technology Co., Ltd. | Chips placed in full-custom layout and electronic device for implementing mining algorithm |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Singh et al. | PITIA: an FPGA for throughput-intensive applications | |
US7992117B2 (en) | System and method for designing a common centroid layout for an integrated circuit | |
CN214670605U (zh) | 采用全定制布局摆放的芯片以及用于实现挖矿算法的电子装置 | |
CN109564585A (zh) | 基于点积的处理元件 | |
CN213042269U (zh) | 计算芯片、算力板和数字货币挖矿机 | |
US20240062842A1 (en) | Programmable linear-feedback shift register systems and methods | |
US5047974A (en) | Cell based adder with tree structured carry, inverting logic and balanced loading | |
US11947889B2 (en) | Chips placed in full-custom layout and electronic device for implementing mining algorithm | |
WO2022088683A1 (zh) | 计算芯片、算力板和数据处理设备 | |
JP2001195235A (ja) | 乗算装置 | |
Namin et al. | A Fully Serial-In Parallel-Out Digit-Level Finite Field Multiplier in $\mathbb {F} _ {2^{m}} $ Using Redundant Representation | |
Namin et al. | Digit-level serial-in parallel-out multiplier using redundant representation for a class of finite fields | |
Namin et al. | A High-Speed Word Level Finite Field Multiplier in ${\BBF} _ {2^ m} $ Using Redundant Representation | |
KR100954843B1 (ko) | 센서 모트에서의 블록 인덱싱 기반의 타원 곡선 암호 연산 방법, 그 장치 및 이를 기록한 기록 매체 | |
JP3702475B2 (ja) | 回路自動生成装置 | |
TWI766754B (zh) | 執行哈希算法的電路、計算晶片、數據處理設備和方法 | |
Cevrero et al. | Architectural improvements for field programmable counter arrays: enabling efficient synthesis of fast compressor trees on FPGAs | |
KR100632928B1 (ko) | 모듈라 곱셈장치 | |
US7890559B2 (en) | Forward shifting of processor element processing for load balancing | |
US6643838B2 (en) | System and method of placing components for minimizing wire congestion and wire length in performing a function | |
Chrzanowska-Jeske et al. | Synthesis approach to multi-level regular representation for combinational circuits | |
JP3012557B2 (ja) | 10進2進変換回路 | |
Chen | Parallel-prefix structures for binary and modulo {2 (n-1), 2 (n), 2 (n+ 1)} adders | |
Lai | Logic Networks of Carry–Save Adders | |
CN114648319A (zh) | 执行哈希算法的电路、计算芯片、加密货币矿机和方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
GR01 | Patent grant | ||
GR01 | Patent grant |