今天,HashFast公司声明了他们正在开源他们用于控制比特币挖掘的专用集成电路的接口协议。这个设计的开源可以让大家很好的理解他们的比特币挖矿模块是怎么操作的,并且还将给驱动开发人员提供一个平台。更多用户在驱动开发方面的合作可以带来更加丰富的选择项设置,和给HashFast用户们带来更好的用户体验。
在7月份,HashFast宣布了他们将与Uniquify 合作来设计400GH/s的 “Golden Nonce”专用集成电路。在9月5日,他们声称台湾的一个半导体公司将开发他们的芯片。为了让驱动开发人员为11月中旬的芯片投放做准备,HashFast给出了一个84页的文档来阐述这个专用集成电路如何使用和接口协议设计的细节。此外,Avalon 在四月份发布的一个关于他们芯片通信规格的类似开源描述,引发了许许多多的合作项目。
HashFast批量发货
在九月初,HashFast的Batch 1 ASICs结束预定,估计速度为225TH/s,价格$3M(400GH/s的563 Baby Jets售价为$5,600)。随着这个月早些时候KNC的出货,HashFast估计也会进军28nm ASIC市场。尽管有报道反映KNC的电容爆炸问题,并且矿工并没有达到他们声称的速度, 但大部分的KNC第一批出货都交到了客户手中。
HashFast公布了他们第一批货的订货量。从中可以看出,在563 Baby Jets的第一批订单中,有157个特殊定制,在所有订单中占了大多数。这群销售的客户形成了一个群体,愿意协助有关HashFast挖矿机的软硬件开发。HashFast的第二、三批出货比第一批要大得多,预计12月到货。第二批预定已经截止,并且将在第一批后几周发货。
随着HashFast将他们的协议开源,在第一批发货的几周时间内,可能会形成一个高阶驱动开发社区。主管市场和销售的HashFast副总裁John Skrodenis表示:“在三批发货中,客户增加了350人。”很明显,稳健的软件有着很大的客户群。
ASIC挖矿
ASIC(专用集成电路)是为特殊目的设计的芯片。在比特币挖矿中,它被用于计算产生新矿区的double-SHA256。HashFast ASIC有四个模块,每个包含96个核心,也就是说每个芯片上有384个核心。设计一个稳健的接口协议是非常复杂的,因为要确保所有这些核心都按照一个确定的顺序工作,并在得到有效值时高效地反馈。
为了在矿池中挖矿,需要利用比特币矿区的block header进行计算。比特币使用公式SHA256(SHA256(Block_Header))
,SHA256是一个返回256位Hash值的Hash算法,例如00000000000000001e8d6829a8a21adc5d38d0a473b144b6765798e61f98bd1d。
用于计算的Block header信息
主要的困难在于需要值前面的0,0越多计算起来越困难。为了在继续寻找新的Hash值时保持原来的block header,一个"nonce"被用于备份。在计算新的Hash值时不断在"nonce"中备份,这样就可以在不破坏原有block header信息的前提下继续计算新的Hash值。当一个有效的Hash值被找到时,它会与block header一起发布,还有与之相关的交易信息。
Hash计算操作
HashFast的开源协议已经提供了驱动ASIC的Hash计算的操作。通过一台主机的CPU发出的操作来控制核心。HashFast从主机的CPU中,通过操作总线(数据链路)提供了例如配置时钟频率(OP_PLL_CONFIG的操作)的核心指令,重启核心(OP_RESET),并提供hash计算的工作信息,来提供每个信息内核。
Hash算法指令是在芯片设计中最重要的方面。在HashFast的设计中,如果当内核在进行Hash计算的时候接收到OP_HASH的指令,它会被存储到一个输入的队列中去。这会允许内核在找到合适的Hash之后进行持续的工作。每个OP_HASH的操作也包含了唯一一个的序列号,方便以后检索Hash的相关信息。
当发现Hash难以满足OP_HASH操作的需求,hash的核心会返回所使用的随机数和OP_HASH的序列号。然后主机可以通过查找序列号来找到block header的信息,无需频繁地再去请求和返回。
USB协议
实际上,所有这些操作都是由HashFast的开源USB通信协议控制的。在他们的USB协议内有更高级的协议,叫做全局工作队列(Global Work Queue,GWQ)。GWQ允许开发者在抽象层控制ASIC核心的操作,允许上面描述的内部低级工作细节。提供给驱动开发者的任务目标输出配置在需要的CPU电源上,使最普通的CPU能控制大规模系统。
CGMiner是一个开源的比特币挖掘驱动,支持大多数GPU、FPGA和ASIC矿工。Adrian Port,HashFast重要的ASIC工程师之一,已经和CGMiner组一起开发实现HashFast的协议。他们在开发GWQ接口时,内部使用CGMiner驱动。
和HashFast文档一起发行的,也有它们使用的头文件。几天内,他们期望发布在github上开发的CGMiner驱动作为未来开发者的一个例子。Adrian说,“我们希望可以在可预见的未来,在几代ASIC上使用这个协议。如果需要添加,协议是可以扩展的。”对应的,在HashFast的协议上花费的任何设计工作都应该可以在几代产品上使用。