CN111290787B - 运算装置及运算方法 - Google Patents

运算装置及运算方法 Download PDF

Info

Publication number
CN111290787B
CN111290787B CN201910531627.2A CN201910531627A CN111290787B CN 111290787 B CN111290787 B CN 111290787B CN 201910531627 A CN201910531627 A CN 201910531627A CN 111290787 B CN111290787 B CN 111290787B
Authority
CN
China
Prior art keywords
operation unit
data
variable value
operated
variable
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201910531627.2A
Other languages
English (en)
Other versions
CN111290787A (zh
Inventor
石玲宁
唐平
胡均浩
葛维
李振中
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Keen Chongqing Microelectronics Technology Co ltd
Original Assignee
Keen Chongqing Microelectronics Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Keen Chongqing Microelectronics Technology Co ltd filed Critical Keen Chongqing Microelectronics Technology Co ltd
Priority to CN201910531627.2A priority Critical patent/CN111290787B/zh
Publication of CN111290787A publication Critical patent/CN111290787A/zh
Application granted granted Critical
Publication of CN111290787B publication Critical patent/CN111290787B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands

Abstract

本公开涉及运算装置及运算方法,所述装置包括:级联的多个处理芯片,每个处理芯片包括多个运算单元;控制芯片,被配置为:按照预设的延迟时间依次启动所述多个处理芯片中的N个运算单元,其中,N为大于1的整数;向所启动的N个运算单元发送待运算数据;控制所述N个运算单元利用所述待运算数据进行并行运算,输出运算结果。本公开可以实现运算装置的稳定运行,避免芯片内部逻辑出错,从而提高运算装置的稳定性,并降低功耗。

Description

运算装置及运算方法
技术领域
本公开涉及计算机技术领域,尤其涉及一种运算装置及运算方法。
背景技术
随着电子技术及计算机技术的不断发展,单个处理芯片的运算能力越来越强,然而,在当今时代,单个处理芯片的运算能力还是无法满足日益增长的运算需求。在相关技术中,为满足运算需求,可以将多个处理芯片级联进行并行运算从而提高运算能力。然而,利用级联的多个处理芯片进行并行运算时会产生很大的瞬时电流,极有可能导致处理芯片内部逻辑出错,出现不稳定的问题。
发明内容
有鉴于此,本公开提出了一种运算装置,所述装置包括:
级联的多个处理芯片,每个处理芯片包括多个运算单元;
控制芯片,被配置为:
按照预设的延迟时间依次启动所述多个处理芯片中的N个运算单元,其中,N为大于1的整数;
向所启动的N个运算单元发送待运算数据;
控制所述N个运算单元利用所述待运算数据进行并行运算,输出运算结果。
在一种可能的实施方式中,所述控制所述N个运算单元利用所述待运算数据进行并行运算,包括:
控制所述N个运算单元利用所述待运算数据进行并行运算,并同时结束运算。
在一种可能的实施方式中,所述待运算数据包括区块的区块头,所述区块头包括变量值,
控制所述N个运算单元利用所述待运算数据进行并行运算,并同时结束运算,包括:
通过控制每个运算单元中参与运算的变量值数目,来控制所述N个运算单元同时结束运算。
在一种可能的实施方式中,控制每个运算单元中参与运算的变量值数目,包括:
在所述区块头包括的变量值中,确定所述N个运算单元中每个运算单元对应的最小变量值和最大变量值,
根据每个运算单元的所述最小变量值,确定该运算单元的初始运算数据。
在一种可能的实施方式中,在所述区块头包括的变量值中,确定所述N个运算单元中每个运算单元对应的最小变量值和最大变量值,包括:
将所述变量值按大小排序后平均划分为N个变量值集合,每个变量值集合与所述N个运算单元中的一个运算单元一一对应,其中,每个变量值集合中的最小值作为对应的运算单元的最小变量值、最大值作为对应的运算单元的最大变量值;
根据每个运算单元的所述最小变量值,确定该运算单元的初始运算数据,包括:
在每个运算单元等待启动的延迟时间内,控制每个运算单元对所对应的最小变量值进行循环自加处理,并利用得到的循环自加结果确定每个运算单元的初始运算数据。
在一种可能的实施方式中,在所述区块头包括的变量值中,确定所述N个运算单元中每个运算单元对应的最小变量值和最大变量值,包括:
根据所述待运算数据中变量值的总数、每个运算单元在单位时间的运算量及每个运算单元等待启动的延迟时间确定每个运算单元进行运算的运算数据中的变量值数目;
根据每个运算单元进行运算的运算数据中的变量值数目确定每个运算单元的最小变量值和最大变量值。
在一种可能的实施方式中,所述根据所述待运算数据中变量值的总数、每个运算单元在单位时间的运算量及每个运算单元等待启动的延迟时间确定每个运算单元进行运算的运算数据中的变量值数目,包括:
根据如下公式确定每个运算单元进行运算的运算数据中的变量值数目:
X+(X-1*b)+(X-2*b)+…+(X-(N-2)*b)+(X-(N-1)*b)=T,其中,b表示每个运算单元在单位时间的运算量,b的系数1~N-1表示每个运算单元等待启动的以单位时间为单位的延迟时间,T表示所述待运算数据中变量值的总数,X、(X-1*b)、(X-2*b)、…、(X-(N-2)*b)、(X-(N-1)*b)分别表示第一个运算单元、第二个运算单元、第三个运算单元、…、第N-1个运算单元、第N个运算单元进行运算的运算数据中的变量值数目。
在一种可能的实施方式中,所述控制所述N个运算单元利用所述待运算数据进行并行运算,并同时结束运算,还包括:
控制每个运算单元利用所述初始运算数据进行哈希运算,得到中间运算结果,在所述中间运算结果小于目标值的情况下,存储所述中间运算结果对应的变量值;
对所述初始运算数据中的变量值进行自加处理形成新的运算数据;
利用所述新的运算数据更新所述初始运算数据并重新进行哈希运算,直到所述初始运算数据中的变量值达到该运算单元对应的最大变量值,将所存储的变量值作为所述运算结果。
根据本公开的另一方面,提出了一种运算方法,所述方法应用于运算装置的控制芯片中,所述运算装置还包括级联的多个处理芯片,每个处理芯片包括多个运算单元,所述方法包括:
按照预设的延迟时间依次启动所述多个处理芯片中的N个运算单元,其中,N为大于1的整数;
向所启动的N个运算单元发送待运算数据;
控制所述N个运算单元利用所述待运算数据进行并行运算,输出运算结果。
在一种可能的实施方式中,所述控制所述N个运算单元利用所述待运算数据进行并行运算,包括:
控制所述N个运算单元利用所述待运算数据进行并行运算,并同时结束运算。
在一种可能的实施方式中,所述待运算数据包括区块的区块头,所述区块头包括变量值,
控制所述N个运算单元利用所述待运算数据进行并行运算,并同时结束运算,包括:
通过控制每个运算单元中参与运算的变量值数目,来控制所述N个运算单元同时结束运算。
在一种可能的实施方式中,控制每个运算单元中参与运算的变量值数目,包括:
在所述区块头包括的变量值中,确定所述N个运算单元中每个运算单元对应的最小变量值和最大变量值,
根据每个运算单元的所述最小变量值,确定该运算单元的初始运算数据。
在一种可能的实施方式中,在所述区块头包括的变量值中,确定所述N个运算单元中每个运算单元对应的最小变量值和最大变量值,包括:
将所述变量值按大小排序后平均划分为N个变量值集合,每个变量值集合与所述N个运算单元中的一个运算单元一一对应,其中,每个变量值集合中的最小值作为对应的运算单元的最小变量值、最大值作为对应的运算单元的最大变量值;
根据每个运算单元的所述最小变量值,确定该运算单元的初始运算数据,包括:
在每个运算单元等待启动的延迟时间内,控制每个运算单元对所对应的最小变量值进行循环自加处理,并利用得到的循环自加结果确定每个运算单元的初始运算数据。
在一种可能的实施方式中,在所述区块头包括的变量值中,确定所述N个运算单元中每个运算单元对应的最小变量值和最大变量值,包括:
根据所述待运算数据中变量值的总数、每个运算单元在单位时间的运算量及每个运算单元等待启动的延迟时间确定每个运算单元进行运算的运算数据中的变量值数目;
根据每个运算单元进行运算的运算数据中的变量值数目确定每个运算单元的最小变量值和最大变量值。
在一种可能的实施方式中,所述根据所述待运算数据中变量值的总数、每个运算单元在单位时间的运算量及每个运算单元等待启动的延迟时间确定每个运算单元进行运算的运算数据中的变量值数目,包括:
根据如下公式确定每个运算单元进行运算的运算数据中的变量值数目:
X+(X-1*b)+(X-2*b)+…+(X-(N-2)*b)+(X-(N-1)*b)=T,其中,b表示每个运算单元在单位时间的运算量,b的系数1~N-1表示每个运算单元等待启动的以单位时间为单位的延迟时间,T表示所述待运算数据中变量值的总数,X、(X-1*b)、(X-2*b)、…、(X-(N-2)*b)、(X-(N-1)*b)分别表示第一个运算单元、第二个运算单元、第三个运算单元、…、第N-1个运算单元、第N个运算单元进行运算的运算数据中的变量值数目。
在一种可能的实施方式中,所述控制所述N个运算单元利用所述待运算数据进行并行运算,并同时结束运算,还包括:
控制每个运算单元利用所述初始运算数据进行哈希运算,得到中间运算结果,在所述中间运算结果小于目标值的情况下,存储所述中间运算结果对应的变量值;
对所述初始运算数据中的变量值进行自加处理形成新的运算数据;
利用所述新的运算数据更新所述初始运算数据并重新进行哈希运算,直到所述初始运算数据中的变量值达到该运算单元对应的最大变量值,将所存储的变量值作为所述运算结果。
本公开的运算装置,可以通过控制芯片按照预设的延迟时间依次启动多个处理芯片中N个运算单元,并控制N个运算单元进行并行运算,可以避免相关技术中进行并行运算时因同时启动多个运算单元而产生的较大的瞬时电流的问题,本公开按照预设的延迟时间依次启动多个处理芯片中的N个运算单元,可以实现运算装置的稳定运行,避免芯片内部逻辑出错,从而提高运算装置的稳定性,并降低功耗。
根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。
附图说明
包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本公开的示例性实施例、特征和方面,并且用于解释本公开的原理。
图1示出了根据本公开一实施方式的运算装置的示意图。
图2示出了根据本公开一实施方式的运算装置中控制芯片控制处理芯片的流程图。
图3示出了根据本公开一实施方式的待运算数据的示意图。
图4示出了根据本公开一实施方式的运算装置中控制芯片控制处理芯片的流程图。
图5示出了根据本公开一实施方式的运算示意图。
图6a示出了相关技术中进行并行运算的效果示意图,图6b示出了采用本公开运算装置进行并行运算的效果示意图。
具体实施方式
以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
另外,为了更好的说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。
请参阅图1,图1示出了根据本公开一实施方式的运算装置的示意图。
请参阅图2,图2示出了根据本公开一实施方式的运算装置中控制芯片控制处理芯片的流程图。
如图1及图2所示,本公开提出的运算装置,包括:
级联的多个处理芯片20,每个处理芯片20包括多个运算单元201;
控制芯片10,被配置为:
步骤S110,按照预设的延迟时间依次启动所述多个处理芯片中的N个运算单元201,其中,N为大于1的整数;
步骤S120,向所启动的N个运算单元201发送待运算数据;
步骤S130,控制所述N个运算单元201利用所述待运算数据进行并行运算,输出运算结果。
本公开的运算装置,可以通过控制芯片按照预设的延迟时间依次启动多个处理芯片中N个运算单元,并控制N个运算单元进行并行运算,可以避免相关技术中进行并行运算时因同时启动多个运算单元而产生的较大的瞬时电流的问题,本公开按照预设的延迟时间依次启动多个处理芯片中的N个运算单元,可以实现运算装置的稳定运行,避免芯片内部逻辑出错,从而提高运算装置的稳定性,并降低功耗。
在一种可能的实施方式中,如图1所示,控制芯片10可以电连接于级联的多个处理芯片20中的一个。在其他的实施方式中,控制芯片10也可以通过总线电连接于全部或部分处理芯片20(未示出)。
在一种可能的实施方式中,处理芯片20可以为数字芯片,也可以是模拟芯片,可以是处理器芯片(例如中央处理器CPU、图形处理器NPU等)、记忆和存储芯片(例如DRAM,NAND等),也可以是特定功能芯片(例如深度学习运算芯片,云计算芯片,挖矿芯片等),本公开对处理芯片的类型不做限定。
在一种可能的实施方式中,处理芯片20中的多个运算单元201可以是相同的(例如结构相同、功能相同)或不同的,每一个处理芯片20中的运算单元201的数目可以根据实际情况确定,对此本公开不做限定。
对于步骤S110:
在一种可能的实施方式中,运算单元的数目N可以根据实际情况确定,例如,可以根据将要进行的运算的运算量确定需要启动的运算单元的数目N,也可以确定需要启动哪些运算单元。需要启动的N个运算单元具体分布在哪些处理芯片中,可以根据需要确定,本公开对此不做限制。
预设的延迟时间可表示每个运算单元的启动时间相对于第一个运算单元的启动时间的延迟时间。在一种可能的实施方式中,所述预设的延迟时间可以根据实际情况进行确定,例如,预设的延迟时间可以是以时钟周期(cycle)为单位确定的,例如,预设的延迟时间可以包括a个cycle,其中,a的具体值可以根据需要设定,本公开不做限制。
在一个示例中,在启动第一个运算单元后,间隔a个cycle后启动第二个运算单元,间隔2a个cycle后启动第三个运算单元,…,间隔(N-1)a个cycle后启动第N个运算单元。
对于步骤S120:
在一种可能的实施方式中,可以在运算单元启动后发送所述待运算数据,例如,第一个运算单元启动后,发送所述待运算数据给第一个运算单元;第二运算单元启动后,发送所述待运算数据给第二个运算单元,以此类推。
在一种可能的实施方式中,也可以将待运算数据通过数据总线发送给每一个运算单元,每一个运算单元在被启动后,可以从数据总线中获取待运算数据。
在一种可能的实施方式中,每一个运算单元可以包括存储模块(例如ROM,RAM等),在运算单元还没有启动前,控制芯片可以将待运算数据发送给每一个运算单元的存储模块,当任意一个运算单元被启动后,可以从自身的存储模块中获取所述待运算数据。
请参阅图3,图3示出了根据本公开一实施方式的待运算数据的示意图。
在一种可能的实施方式中,所述待运算数据可以包括比特币的区块头(blockheader),所述区块头可以包括以下字段:
int32_t nVersion,4字节,表示版本号,一般固定不变,仅在升级时改变。
uint256 hashPrevBlock,32字节,表示前一个区块的区块头哈希,由前一个区块决定。
uint256 hashMerkleRoot,32字节,可以包含进区块的所有交易构造的Merkle根,调整区块中的交易次序、增删交易、或修改Coinbase交易时改变。
uint32_t nTime,4字节,表示时间戳,后一个区块时间略早于前一个区块是被允许的,但必须在合理的时间区间,一般会直接使用机器当前时间戳。
uint32_t nBits,4字节,表示挖矿难度,由全网决定,每2016个区块按算法重新调整。
uint32_t nNonce,4字节,表示变量值,是随机数,提供2^32种取值,即4,294,967,296。
其中nVersion、hashPrevBlock、nBits是固定的,其他hashMerkleRoot、nTime、nNonce为可变的。
在一种可能的实施方式中,可以对所述区块头进行比特填充(Bits padding),使得所述区块头达到1024bit(如图3所示),将比特填充后的区块头作为所述待运算数据。
以上仅为区块头的一个示例,本公开不限制区块头的具体形式。
当然,在其他的实施方式中,所述待运算数据也可以是其他,对此,本公开不做限定。
请参阅图4,图4示出了根据本公开一实施方式的运算装置中控制芯片控制处理芯片的流程图。
在一种可能的实施方式中,如图4所示,步骤S130控制所述N个运算单元利用所述待运算数据进行并行运算,可以包括:
步骤S131,控制所述N个运算单元利用所述待运算数据进行并行运算,并同时结束运算。
本公开通过控制所述N个运算单元同时结束运算,可以使得运算装置稳定,并降低功耗。
可以通过控制N个运算单元中每个运算单元的运算量,例如控制N个运算单元中每个运算单元参与运算的变量值数目,来控制N个运算单元同时结束运算。例如,可以使得先启动的运算单元参与运算的变量值数目最大,后续启动的运算单元参与运算的变量值数目依次减小,从而使得各运算单元尽管依次启动,但同时结束运算。
在一种可能的实施方式中,步骤S131控制所述N个运算单元利用所述待运算数据进行并行运算,并同时结束运算,可以包括:
在所述区块头包括的变量值中,确定所述N个运算单元中每个运算单元对应的最小变量值和最大变量值,
根据每个运算单元的所述最小变量值,确定该运算单元的初始运算数据。
可从该初始运算数据中的变量值开始,按照依次增大的顺序基于后续的变量值形成后续的运算数据,由该运算单元进行运算,直至达到该运算单元的最大变量值。
本公开通过对每个运算单元对应的最小变量值和最大变量值进行确定,从而根据每个运算单元对应的最小变量值确定每个运算单元的初始运算数据,由此,通过最小变量值确定初始运算数据中的变量值,就可以控制每个运算单元的运算量,可以使得N个运算单元通过并行方式完成运算,且同时结束运算,从而使得运算装置可以稳定的运行,并节省功耗。
在一种可能的实施方式中,在所述区块头包括的变量值中,确定所述N个运算单元中每个运算单元对应的最小变量值和最大变量值,可以包括:
将所述变量值按大小排序后平均划分为N个变量值集合,每个变量值集合与所述N个运算单元中的一个运算单元一一对应,其中,每个变量值集合中的最小值作为对应的运算单元的最小变量值、最大值作为对应的运算单元的最大变量值;
根据每个运算单元的所述最小变量值,确定该运算单元的初始运算数据,包括:
在每个运算单元等待启动的延迟时间内,控制每个运算单元对所对应的最小变量值进行循环自加处理,并利用得到的循环自加结果确定每个运算单元的初始运算数据。
下面将以示例进行说明。
请参阅图5,图5示出了根据本公开一实施方式的运算示意图。
在一个示例中,假设变量值nonce为0~99的整数,总数为100,假设N为4,根据“将所述变量值按大小排序后平均划分为N个变量值集合,每个变量值集合与所述N个运算单元中的一个运算单元一一对应”,则4个变量值集合分别为(0,24)、(25,49)、(50,74)、(75,99),每一个变量值集合的变量值的数目为25,变量值集合(0,24)、(25,49)、(50,74)、(75,99)分别与第一个运算单元、第二个运算单元、第三个运算单元、第四个运算单元相对应,其中,第一个运算单元的最小变量值为0,最大变量值为24,第二个运算单元的最小变量值为25,最大变量值49,第三个运算单元的最小变量值为50,最大变量值74,第四个运算单元的最小变量值为75,最大变量值为99。
假设第一个运算单元等待启动的延迟时间为0,第二个运算单元等待启动的延迟时间为a个cycle,第三个运算单元等待启动的延迟时间为2a个cycle,第四个运算单元等待启动的延迟时间为3a个cycle,则根据“在每个运算单元等待启动的延迟时间内,控制每个运算单元对所对应的最小变量值进行循环自加处理,并利用得到的循环自加结果确定每个运算单元的初始运算数据”,如图5所示,控制第一个运算单元直接启动,并控制第一个运算单元从最小变量值nonce0开始运算(即以最小变量值nonce0作为初始运算数据中的变量值,对初始运算数据进行运算,本示例中最小变量值为0);控制第二个运算单元在a个cycle的延迟时间内进行最小变量值nonce1(本示例中最小变量值为25)的循环自加(N支路,nonce++,即连续进行+1运算),在延迟时间结束后,得到循环自加结果,并利用循环自加结果得到第二个运算单元的初始运算数据以进行运算(Y支路);控制第三个运算单元在2a个cycle的延迟时间内进行最小变量值(在本示例中最小变量值为50)的循环自加,在延迟时间结束后,得到循环自加结果,并利用循环自加结果得到第三个运算单元的初始运算数据以进行运算(未示出);控制第四个运算单元在3a个cycle的延迟时间内进行最小变量值nonce3(在本示例中最小变量值为75)的循环自加(N支路),在延迟时间结束后,得到循环自加结果,并利用循环自加结果得到第四个运算单元的初始运算数据以进行运算。
应该说明的是,本公开对每个运算单元在各自的等待启动的延迟时间内可以进行的循环自加次数不做限定,数值可以根据实际情况确定。
本公开的各个运算单元(例如,示例中的第二个运算单元、第三个运算单元、第四个运算单元)在等待启动的延迟时间内,仅仅进行变量值的循环自加操作(或其他与实际运算无关的操作,例如比较操作等),而不进行实际运算(例如双重SHA256运算)。
本公开通过以上设置,可以控制每个运算单元在等待启动的延迟时间内对最小变量值进行循环自加,在延迟时间结束后得到循环自加结果,并利用循环自加结果确定每个运算单元的初始运算数据,通过放弃部分变量值,本公开可以实现每个运算单元同时结束运算。
在一种可能的实施方式中,在所述区块头包括的变量值中,确定所述N个运算单元中每个运算单元对应的最小变量值和最大变量值,还可以包括:
根据所述待运算数据中变量值的总数、每个运算单元在单位时间的运算量及每个运算单元等待启动的延迟时间确定每个运算单元进行运算的运算数据中的变量值数目;
根据每个运算单元进行运算的运算数据中的变量值数目确定每个运算单元的最小变量值和最大变量值。
在一种可能的实施方式中,可以通过以下公式确定每个运算单元进行运算的运算数据中的变量值数目:
X+(X-1*b)+(X-2*b)+…+(X-(N-2)*b)+(X-(N-1)*b)=T,其中,b表示每个运算单元在单位时间的运算量(例如单位时间运算数据的个数),b的系数(1~N-1)表示第二个运算单元至第N个运算单元等待启动的延迟时间(以单位时间为单位,即1个单位时间……N-1个单位时间,单位时间的长度可根据需要设定),T表示所述待运算数据中变量值的总数,X、(X-1*b)、(X-2*b)、…、(X-(N-2)*b)、(X-(N-1)*b)分别表示第一个运算单元、第二个运算单元、第三个运算单元、…、第N-1个运算单元、第N个运算单元进行运算的运算数据中变量值数目。
因此,根据所述待运算数据中变量值的总数T、每个运算单元在单位时间的运算量b及每个运算单元等待启动的延迟时间(0~N-1)可以确定每个运算单元进行运算的运算数据中的变量值数目,即,已知b、N、T,可以根据以上公式计算X,进而得到X、(X-1*b)、(X-2*b)、…、(X-(N-2)*b)、(X-(N-1)*b)。
在一种可能的实施方式中,可以首先确定第一个运算单元进行运算的运算数据中的变量值数目(X),然后得到第二个运算单元(X-1*b)、第三个运算单元(X-2*b)、…、第N-1个运算单元(X-(N-2)*b)、第N个运算单元(X-(N-1)*b)进行运算的运算数据中变量值数目。
举例而言,假设变量值nonce为0~99,则可得变量值的总数T为100;以a个cycle为单位时间,在单位时间内,每个运算单元可以运算4个数据(运算量b为4);可以分成4个运算单元进行并行运算(N=4),则可以设置:
第一个运算单元等待启动的延迟时间为0(b的系数为0),第二个运算单元等待启动的延迟时间为a个cycle(1个单位时间),第三个运算单元等待启动的延迟时间为2a个cycle(2个单位时间),第四个运算单元等待启动的延迟时间为3a个cycle(3个单位时间)。
根据“根据所述待运算数据中变量值的总数、每个运算单元在单位时间的运算量及每个运算单元等待启动的延迟时间确定每个运算单元进行运算的运算数据中的变量值数目”及上述公式,可得:
X+(X-1*4)+(X-2*4)+(X-3*4)=100,可得第一个运算单元可以运算31个数据,第二个运算单元可以运算27个数据,第三个运算单元可以运算23个数据,第四个运算单元可以运算19个数据。
根据“根据每个运算单元进行运算的运算数据中的变量值数目确定每个运算单元的最小变量值和最大变量值”,第一个运算单元的最小变量值为0,最大变量值为30;第二个运算单元的最小变量值为31,最小变量值为57;第三个运算单元的最小变量值为58,最大变量值为80;第四个运算单元的最小变量值为81,最大变量值为99。
当然,以上描述是示例性的,不应视为是对本公开的限制。
在一种可能的实施方式中,步骤S131控制所述N个运算单元利用所述待运算数据进行并行运算,并同时结束运算,还可以包括:
控制每个运算单元利用所述初始运算数据进行哈希运算,得到中间运算结果,在所述中间运算结果小于目标值的情况下,存储所述中间运算结果对应的变量值;
对所述初始运算数据中的变量值进行自加处理形成新的运算数据;
利用所述新的运算数据更新所述初始运算数据并重新进行哈希运算,直到所述初始运算数据中的变量值达到该运算单元对应的最大变量值,将所存储的变量值作为所述运算结果。
在一种可能的实施方式中,存储的变量值的数目可以根据实际情况确定,可以为1个,也可以为多个,对此本公开不做限定。
在一种可能的实施方式中,所述哈希运算可以为双重SHA256运算,本公开对双重SHA256运算的具体运算过程不做限定,本领域技术人员可以参考相关技术实现。
在一种可能的实施方式中,当所述待运算数据包括比特币的区块头的情况下,可以将进行比特填充(如图3所示)后对区块头数据作为待运算数据,并将待运算数据以预设大小划分(例如,将1024bit划分为2个512bit),并利用划分后的待运算数据进行双重SHA256运算。
在一种可能的实施方式中,所述自加处理可以为在当前变量值的基础上加1(例如nonce++操作)。
在一种可能的实施方式中,所述目标值可以根据实际情况确定,对此本公开不做限制。
请继续参阅图5,图5中的运算可以为哈希运算,target为所述目标值,在运算中,如果存在运算结果小于目标值target的值,则存储对应的变量值。在运算中,当变量值达到最大变量值或超过最大变量值的情况下,结束运算。应该明白的是,根据本公开各个实施方式,本公开运算装置中各个运算单元可以同时结束运算,以实现运算装置正常、稳定工作。
请参阅图6a及图6b,图6a示出了相关技术中进行并行运算的效果示意图,图6b示出了采用本公开运算装置进行并行运算的效果示意图。
如图6a所示,相关技术在启动多个运算单元进行并行运算时,进行依次运算会产生很大的瞬时电流,这很可能会导致装置、芯片内部逻辑出错、不稳定,且造成功耗提高,不利于对装置、芯片进行控制。
如图6b所示,本公开运算装置通过分步启动各个运算单元,是电流逐渐上升到稳定状态,可以保证装置、芯片内部运算逻辑正确,可以使得运算装置稳定运行,同时便于外部对装置、芯片的控制。
本公开还提出了一种运算方法,所述方法应用于运算装置的控制芯片中,所述运算装置还包括级联的多个处理芯片,每个处理芯片包括多个运算单元,所述方法包括:
按照预设的延迟时间依次启动所述多个处理芯片中的N个运算单元,其中,N为大于1的整数;
向所启动的N个运算单元发送待运算数据;
控制所述N个运算单元利用所述待运算数据进行并行运算,输出运算结果。
本公开的运算方法,可以按照预设的延迟时间依次启动多个处理芯片中N个运算单元,并控制N个运算单元进行并行运算,可以避免相关技术中进行并行运算时因同时启动多个运算单元而产生的较大的瞬时电流的问题,本公开按照预设的延迟时间依次启动多个处理芯片中的N个运算单元,可以实现运算装置的稳定运行,避免芯片内部逻辑出错,从而提高运算装置的稳定性,并降低功耗。
在一种可能的实施方式中,所述控制所述N个运算单元利用所述待运算数据进行并行运算,包括:
控制所述N个运算单元利用所述待运算数据进行并行运算,并同时结束运算。
在一种可能的实施方式中,所述待运算数据包括区块的区块头,所述区块头包括变量值,
控制所述N个运算单元利用所述待运算数据进行并行运算,并同时结束运算,包括:
通过控制每个运算单元中参与运算的变量值数目,来控制所述N个运算单元同时结束运算。
在一种可能的实施方式中,控制每个运算单元中参与运算的变量值数目,包括:
在所述区块头包括的变量值中,确定所述N个运算单元中每个运算单元对应的最小变量值和最大变量值,
根据每个运算单元的所述最小变量值,确定该运算单元的初始运算数据。
在一种可能的实施方式中,在所述区块头包括的变量值中,确定所述N个运算单元中每个运算单元对应的最小变量值和最大变量值,包括:
将所述变量值按大小排序后平均划分为N个变量值集合,每个变量值集合与所述N个运算单元中的一个运算单元一一对应,其中,每个变量值集合中的最小值作为对应的运算单元的最小变量值、最大值作为对应的运算单元的最大变量值;
根据每个运算单元的所述最小变量值,确定该运算单元的初始运算数据,包括:
在每个运算单元等待启动的延迟时间内,控制每个运算单元对所对应的最小变量值进行循环自加处理,并利用得到的循环自加结果确定每个运算单元的初始运算数据。
在一种可能的实施方式中,在所述区块头包括的变量值中,确定所述N个运算单元中每个运算单元对应的最小变量值和最大变量值,包括:
根据所述待运算数据中变量值的总数、每个运算单元在单位时间的运算量及每个运算单元等待启动的延迟时间确定每个运算单元进行运算的运算数据中的变量值数目;
根据每个运算单元进行运算的运算数据中的变量值数目确定每个运算单元的最小变量值和最大变量值。
在一种可能的实施方式中,所述根据所述待运算数据中变量值的总数、每个运算单元在单位时间的运算量及每个运算单元等待启动的延迟时间确定每个运算单元进行运算的运算数据中的变量值数目,包括:
根据如下公式确定每个运算单元进行运算的运算数据中的变量值数目:
X+(X-1*b)+(X-2*b)+…+(X-(N-2)*b)+(X-(N-1)*b)=T,其中,b表示每个运算单元在单位时间的运算量,b的系数1~N-1表示每个运算单元等待启动的以单位时间为单位的延迟时间,T表示所述待运算数据中变量值的总数,X、(X-1*b)、(X-2*b)、…、(X-(N-2)*b)、(X-(N-1)*b)分别表示第一个运算单元、第二个运算单元、第三个运算单元、…、第N-1个运算单元、第N个运算单元进行运算的运算数据中的变量值数目。
在一种可能的实施方式中,所述控制所述N个运算单元利用所述待运算数据进行并行运算,并同时结束运算,还包括:
控制每个运算单元利用所述初始运算数据进行哈希运算,得到中间运算结果,在所述中间运算结果小于目标值的情况下,存储所述中间运算结果对应的变量值;
对所述初始运算数据中的变量值进行自加处理形成新的运算数据;
利用所述新的运算数据更新所述初始运算数据并重新进行哈希运算,直到所述初始运算数据中的变量值达到该运算单元对应的最大变量值,将所存储的变量值作为所述运算结果。
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

Claims (12)

1.一种运算装置,其特征在于,所述装置包括:
级联的多个处理芯片,每个处理芯片包括多个运算单元;
控制芯片,被配置为:
按照预设的延迟时间依次启动所述多个处理芯片中的N个运算单元,其中,N为大于1的整数;
向所启动的N个运算单元发送待运算数据;
控制所述N个运算单元利用所述待运算数据进行并行运算,输出运算结果,所述控制所述N个运算单元利用所述待运算数据进行并行运算,包括:
控制所述N个运算单元利用所述待运算数据进行并行运算,并同时结束运算,
所述待运算数据包括区块的区块头,所述区块头包括变量值,控制所述N个运算单元利用所述待运算数据进行并行运算,并同时结束运算,包括:
通过控制每个运算单元中参与运算的变量值数目,来控制所述N个运算单元同时结束运算。
2.根据权利要求1所述的装置,其特征在于,控制每个运算单元中参与运算的变量值数目,包括:
在所述区块头包括的变量值中,确定所述N个运算单元中每个运算单元对应的最小变量值和最大变量值,
根据每个运算单元的所述最小变量值,确定该运算单元的初始运算数据。
3.根据权利要求2所述的装置,其特征在于,在所述区块头包括的变量值中,确定所述N个运算单元中每个运算单元对应的最小变量值和最大变量值,包括:
将所述变量值按大小排序后平均划分为N个变量值集合,每个变量值集合与所述N个运算单元中的一个运算单元一一对应,其中,每个变量值集合中的最小值作为对应的运算单元的最小变量值、最大值作为对应的运算单元的最大变量值;
根据每个运算单元的所述最小变量值,确定该运算单元的初始运算数据,包括:
在每个运算单元等待启动的延迟时间内,控制每个运算单元对所对应的最小变量值进行循环自加处理,并利用得到的循环自加结果确定每个运算单元的初始运算数据。
4.根据权利要求2所述的装置,其特征在于,在所述区块头包括的变量值中,确定所述N个运算单元中每个运算单元对应的最小变量值和最大变量值,包括:
根据所述待运算数据中变量值的总数、每个运算单元在单位时间的运算量及每个运算单元等待启动的延迟时间确定每个运算单元进行运算的运算数据中的变量值数目;
根据每个运算单元进行运算的运算数据中的变量值数目确定每个运算单元的最小变量值和最大变量值。
5.根据权利要求4所述的装置,其特征在于,所述根据所述待运算数据中变量值的总数、每个运算单元在单位时间的运算量及每个运算单元等待启动的延迟时间确定每个运算单元进行运算的运算数据中的变量值数目,包括:
根据如下公式确定每个运算单元进行运算的运算数据中的变量值数目:
X+(X-1*b)+(X-2*b)+…+(X-(N-2)*b)+(X-(N-1)*b)=T,其中,b表示每个运算单元在单位时间的运算量,b的系数1~N-1表示每个运算单元等待启动的以单位时间为单位的延迟时间,T表示所述待运算数据中变量值的总数,X、(X-1*b)、(X-2*b)、…、(X-(N-2)*b)、(X-(N-1)*b)分别表示第一个运算单元、第二个运算单元、第三个运算单元、…、第N-1个运算单元、第N个运算单元进行运算的运算数据中的变量值数目。
6.根据权利要求2-5任一项所述的装置,其特征在于,所述控制所述N个运算单元利用所述待运算数据进行并行运算,并同时结束运算,还包括:
控制每个运算单元利用所述初始运算数据进行哈希运算,得到中间运算结果,在所述中间运算结果小于目标值的情况下,存储所述中间运算结果对应的变量值;
对所述初始运算数据中的变量值进行自加处理形成新的运算数据;
利用所述新的运算数据更新所述初始运算数据并重新进行哈希运算,直到所述初始运算数据中的变量值达到该运算单元对应的最大变量值,将所存储的变量值作为所述运算结果。
7.一种运算方法,其特征在于,所述方法应用于运算装置的控制芯片中,所述运算装置还包括级联的多个处理芯片,每个处理芯片包括多个运算单元,所述方法包括:
按照预设的延迟时间依次启动所述多个处理芯片中的N个运算单元,其中,N为大于1的整数;
向所启动的N个运算单元发送待运算数据;
控制所述N个运算单元利用所述待运算数据进行并行运算,输出运算结果,所述控制所述N个运算单元利用所述待运算数据进行并行运算,包括:
控制所述N个运算单元利用所述待运算数据进行并行运算,并同时结束运算,
所述待运算数据包括区块的区块头,所述区块头包括变量值,控制所述N个运算单元利用所述待运算数据进行并行运算,并同时结束运算,包括:
通过控制每个运算单元中参与运算的变量值数目,来控制所述N个运算单元同时结束运算。
8.根据权利要求7所述的方法,其特征在于,控制每个运算单元中参与运算的变量值数目,包括:
在所述区块头包括的变量值中,确定所述N个运算单元中每个运算单元对应的最小变量值和最大变量值,
根据每个运算单元的所述最小变量值,确定该运算单元的初始运算数据。
9.根据权利要求8所述的方法,其特征在于,在所述区块头包括的变量值中,确定所述N个运算单元中每个运算单元对应的最小变量值和最大变量值,包括:
将所述变量值按大小排序后平均划分为N个变量值集合,每个变量值集合与所述N个运算单元中的一个运算单元一一对应,其中,每个变量值集合中的最小值作为对应的运算单元的最小变量值、最大值作为对应的运算单元的最大变量值;
根据每个运算单元的所述最小变量值,确定该运算单元的初始运算数据,包括:
在每个运算单元等待启动的延迟时间内,控制每个运算单元对所对应的最小变量值进行循环自加处理,并利用得到的循环自加结果确定每个运算单元的初始运算数据。
10.根据权利要求8所述的方法,其特征在于,在所述区块头包括的变量值中,确定所述N个运算单元中每个运算单元对应的最小变量值和最大变量值,包括:
根据所述待运算数据中变量值的总数、每个运算单元在单位时间的运算量及每个运算单元等待启动的延迟时间确定每个运算单元进行运算的运算数据中的变量值数目;
根据每个运算单元进行运算的运算数据中的变量值数目确定每个运算单元的最小变量值和最大变量值。
11.根据权利要求10所述的方法,其特征在于,所述根据所述待运算数据中变量值的总数、每个运算单元在单位时间的运算量及每个运算单元等待启动的延迟时间确定每个运算单元进行运算的运算数据中的变量值数目,包括:
根据如下公式确定每个运算单元进行运算的运算数据中的变量值数目:
X+(X-1*b)+(X-2*b)+…+(X-(N-2)*b)+(X-(N-1)*b)=T,其中,b表示每个运算单元在单位时间的运算量,b的系数1~N-1表示每个运算单元等待启动的以单位时间为单位的延迟时间,T表示所述待运算数据中变量值的总数,X、(X-1*b)、(X-2*b)、…、(X-(N-2)*b)、(X-(N-1)*b)分别表示第一个运算单元、第二个运算单元、第三个运算单元、…、第N-1个运算单元、第N个运算单元进行运算的运算数据中的变量值数目。
12.根据权利要求8-11任一项所述的方法,其特征在于,所述控制所述N个运算单元利用所述待运算数据进行并行运算,并同时结束运算,还包括:
控制每个运算单元利用所述初始运算数据进行哈希运算,得到中间运算结果,在所述中间运算结果小于目标值的情况下,存储所述中间运算结果对应的变量值;
对所述初始运算数据中的变量值进行自加处理形成新的运算数据;
利用所述新的运算数据更新所述初始运算数据并重新进行哈希运算,直到所述初始运算数据中的变量值达到该运算单元对应的最大变量值,将所存储的变量值作为所述运算结果。
CN201910531627.2A 2019-06-19 2019-06-19 运算装置及运算方法 Active CN111290787B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910531627.2A CN111290787B (zh) 2019-06-19 2019-06-19 运算装置及运算方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910531627.2A CN111290787B (zh) 2019-06-19 2019-06-19 运算装置及运算方法

Publications (2)

Publication Number Publication Date
CN111290787A CN111290787A (zh) 2020-06-16
CN111290787B true CN111290787B (zh) 2022-11-08

Family

ID=71025860

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910531627.2A Active CN111290787B (zh) 2019-06-19 2019-06-19 运算装置及运算方法

Country Status (1)

Country Link
CN (1) CN111290787B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115061789B (zh) * 2022-06-09 2024-02-09 海光信息技术股份有限公司 瞬态电流控制方法及相关装置

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1061482A (zh) * 1990-11-13 1992-05-27 国际商业机器公司 并行相联处理器系统
CN205353655U (zh) * 2015-12-11 2016-06-29 北京科力恒久电力技术股份有限公司 高集成并行运算配电监测与控制系统
CN106249658A (zh) * 2016-08-31 2016-12-21 中国船舶重工集团公司第七〇二研究所 一种基于SoC‑FPGA的电机单片控制装置及方法
CN108345555A (zh) * 2018-03-13 2018-07-31 算丰科技(北京)有限公司 基于高速串行通信的接口桥接电路及其方法
CN108415771A (zh) * 2018-02-01 2018-08-17 深圳市安信智控科技有限公司 多芯片分布式并行计算加速系统
CN208985151U (zh) * 2018-09-06 2019-06-14 常州第四无线电厂有限公司 一种基于移位寄存器级联的ssi数据采集电路

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6807556B1 (en) * 2000-10-27 2004-10-19 Synplicity, Inc. Method and apparatus for parallel carry chains
JP5949213B2 (ja) * 2012-06-28 2016-07-06 セイコーエプソン株式会社 シフトレジスター回路、電気光学装置、及び電子機器
CN107632965B (zh) * 2017-10-17 2019-11-29 中国科学院计算技术研究所 可重构的s型运算装置及运算方法
CN108984470A (zh) * 2018-06-19 2018-12-11 四川斐讯信息技术有限公司 一种fpga矿机算力的提升系统及方法
CN109144230B (zh) * 2018-08-01 2019-07-12 广芯微电子(广州)股份有限公司 串联供电电路的控制方法、终端及虚拟数字币挖矿机

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1061482A (zh) * 1990-11-13 1992-05-27 国际商业机器公司 并行相联处理器系统
CN205353655U (zh) * 2015-12-11 2016-06-29 北京科力恒久电力技术股份有限公司 高集成并行运算配电监测与控制系统
CN106249658A (zh) * 2016-08-31 2016-12-21 中国船舶重工集团公司第七〇二研究所 一种基于SoC‑FPGA的电机单片控制装置及方法
CN108415771A (zh) * 2018-02-01 2018-08-17 深圳市安信智控科技有限公司 多芯片分布式并行计算加速系统
CN108345555A (zh) * 2018-03-13 2018-07-31 算丰科技(北京)有限公司 基于高速串行通信的接口桥接电路及其方法
CN208985151U (zh) * 2018-09-06 2019-06-14 常州第四无线电厂有限公司 一种基于移位寄存器级联的ssi数据采集电路

Also Published As

Publication number Publication date
CN111290787A (zh) 2020-06-16

Similar Documents

Publication Publication Date Title
JP5269610B2 (ja) ユーザレベル命令に応じた巡回冗長検査演算の実行
US7653805B2 (en) Processing in pipelined computing units with data line and circuit configuration rule signal line
US11630994B2 (en) Optimized asynchronous training of neural networks using a distributed parameter server with eager updates
CN113031920B (zh) 一种芯片和用于芯片的批量模运算方法
KR20210118067A (ko) 클러스터링 장치 및 클러스터링 방법
CN111290787B (zh) 运算装置及运算方法
US20220253668A1 (en) Data processing method and device, storage medium and electronic device
CN111506154A (zh) 计算机提高算力和降低功耗算力比的方法及系统
CN110162340B (zh) 串联电路的id配置方法、串联电路及相关设备
CN110413561B (zh) 数据加速处理系统
KR20200011362A (ko) 신경망 가속 장치 및 그것의 동작 방법
US7136892B2 (en) Method for multiplying two factors from the Galois field and multiplier for performing the method
US20200034699A1 (en) Accelerating appratus of neural network and operating method thereof
Venieris et al. unzipFPGA: Enhancing FPGA-based CNN engines with on-the-fly weights generation
Aasaraai et al. Fpga acceleration of multi-scalar multiplication: Cyclonemsm
US20150149746A1 (en) Arithmetic processing device, information processing device, and a method of controlling the information processing device
US6795954B2 (en) Method of decreasing instantaneous current without affecting timing
US11522680B2 (en) Method and apparatus for computing hash function
JP3830526B2 (ja) 第1および第2のロード可能なカウンタを具えたパラメータ化可能な制御モジュールと、複数のかかるパラメータ化可能な制御モジュールを具えた電子回路と、かかる回路を合成する方法
Wu et al. Skeletongcn: a simple yet effective accelerator for gcn training
JP6961950B2 (ja) 格納方法、格納装置および格納プログラム
CN112463116A (zh) 用于划分组合逻辑的方法和电路
US11475311B2 (en) Neural network instruction streaming
CN111324793B (zh) 对存储感兴趣区域的数据的操作进行控制的方法和装置
CN111832714A (zh) 运算方法及装置

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