从零搭建FPGA区块链运算机——ASIC、GPU、FPGA对比
开源!开源!开源! 只分享技术!只分享技术!只分享技术!
2020年末到2021年初,区块链技术被持续看好,各路英雄好汉涌入,导致游戏显卡的需求和价格暴增。这使得我只能给新攒的电脑配一张50元亮机卡,苟且偷生。显卡奸商们的唯利是图,让我和我的小伙伴愤愤不平,决定根据自身所学,使用FPGA做个区块链运算机。以寻求区块链运算机需求分流,显卡价格下降的“曲线救卡”路线,或者说是一种充满希望的尝试。
在项目的前期,我们在网上查阅了大量的相关资料。其中更多是对区块链原理科普性质的介绍,鲜有从零搭建FPGA区块链运算机的技术分享。我们只好逐步摸索,制定了区块链运算机三步走策略。终于历经半年,我们逐步实现了纯软件的基于Python3的CPU区块链运算机,基于FPGA的1.0区块链运算机,还有现在想和大家分享的基于FPGA的2.0区块链运算机(后面简称FPGA运算机)。
三步走策略的第一步是最难的,这里主要想感谢GitHub上ricmoo大神开源的基于Python2的CPU区块链运算机工程(https://github.com/ricmoo/nightminer)。它很好地帮助我们了解了整个区块链运算的流程。我们也将其升级到了Python3的版本,尽可能多地添加了中文注释,并分享给大家(https://github.com/WF-2021/BTC-Miner)。
我们想把整个区块链运算机搭建的过程分享出来,一个是分享我们独立做出FPGA运算机的喜悦,另一个是希望给想要了解区块链,以及想要自己搭建区块链运算机的朋友一些参考和交流的机会,尽可能帮助大家少走弯路。
我们FPGA运算机的硬件部分,使用Vivado2019.2开发环境,和Xilinx公司CX7A100T的FPGA实现,而软件部分使用Python3实现。目前使用SHA-256加密算法,可实现100MHash/s的算力。这是我们在该型号FPGA下,可实现的最高算力(也希望有大神可以提供更好的改进建议)。使用Vivado2019.2进行功耗评估,其功耗约为0.5W,算力功耗比约为200MHash/sW。 同时我们也查阅了相关GPU在区块链中的算力(https://technical.city/en/video/bitcoin-rating)。可以看到,主流显卡的算力虽然很高,但是功耗也很高。算力功耗比最高不会超过6MHash/sW。在这个方面,我们的FPGA运算机是主流显卡的约33倍,具有绝对的优势。 当然,对于使用SHA-256加密算法的区块链运算机来说,ASIC是绝对的霸主,我们以蚂蚁区块链运算机DR5 35T版本为例,其算力为35THash/s,功耗为1610W,算力功耗比约为21739MHash/sW。这是我们的FPGA运算机的100多倍。 综上,从算力和功耗的角度分析,ASIC >> FPGA >> GPU。这是芯片的设计初衷所导致的。ASIC专为特定加密算法的区块链而设计,不能实现其他功能;FPGA相比于ASIC具有可编程性,牺牲了一些性能;GPU本身是做图形处理的,只是因为核多和并行计算,才用来搭建区块链。
从硬件成本的角度讲,ASIC和GPU都具有很完整的产品供应链,性价比都很高。而FPGA在区块链运算这个行业,更多是技术验证,没有形成完整的产品供应链,所以性价比要低很多,没有任何“曲线救卡”的可能性的。但我们认为技术验证才是FPGA的定位,所以前面才说是“一种充满希望的尝试”。
我们希望以多篇连载的方式分享整个区块链运算机的搭建过程,一个是因为我们的业余时间都很少。另一个是我在给小伙伴讲解其中的设计思路时,发现有很多问题不是一两句能说明白的。如果我们力争用一篇万字长文,把算法原理、设计思路和搭建实现都和大家说清楚是不可能的。所以也希望感兴趣的朋友可以保持关注。像对区块链运算非常感兴趣,已经按耐不住的朋友,我们也提前将FPGA区块链运算机的开源工程连接放在了这里(https://github.com/WF-2021/BTC_FPGA_MINER),它仅需符合BSD开源协议即可被二次开发。
后面我们会从区块链算法原理、FPGA设计实现(主要)、Python3上位机设计实现和集成联调这几方面,和大家分享,敬请期待。
|