查看原文
其他

为什么不能用CPU而用GPU挖矿?

程序师 Java后端技术 2022-04-29

首先,CPU可以用来挖矿,最开始都是用CPU挖,但是随着对挖矿算法的深入研究,大家发现原来挖矿都是在重复一样的工作,而CPU作为通用性计算单元,里面设计了很多诸如分支预测单元、寄存单元等等模块,这些对于提升算力是根本没有任何帮助的。

另外,CPU根本不擅长于进行并行运算,一次最多就执行十几个任务,这个和显卡拥有数以千计的流处理器差太远了,显卡高太多了,因此大家慢慢针对显卡开发出对应的挖矿算法进行挖矿。

以BTC为例,它最基本的算法原理就是,把已有的10分钟内的所有交易作为一个输入,加上一个随机数,当10分钟内所有交易记录加上你的这个随机数计算出一个SHA256的hash。里面几乎都是整数运算,这个根本就像是为显卡特别打造一样,显卡非常适合这种无脑性算法,流处理器数目越多约占优势。

就Hash计算而言,它几乎都是独立并发的整数计算,GPU简直就是为了这个而设计生产出来的。相比较CPU可怜的2-8线程和长度惊人的控制判断和调度分支,GPU可以轻易的进行数百个线程的整数计算并发(无需任何判断的无脑暴力破解乃是A卡的强项)。

OpenCL可以利用GPU在片的大量unified shader都可以用来作为整数计算的资源。而A卡的shader(流处理器)资源又是N的数倍(同等级别的卡)

不过到了后来大家发现,显卡还是太弱了,直接上ASIC大规模堆ALU单元就能极大程度提升算力,巴掌大的算力板的算力已经是显卡的好几十倍,所以现在比特币不用专门的ASIC矿机根本挖不动。

尽管后期的币种LTC所使用的Scrypt算法还引入了大量相互依赖的、随机的访存指令,当Footprint足够大时,还会在GPU的L2级别、甚至TLB级别出现大量的缓存失效,从而产生更多的DRAM访问,以弱化矿机(ASIC/FPGA)相较于GPU在整数运算性能上的优势,但是依然被人针对性研发出矿机,目前也只有专门矿机才能挖。

不过像第二代虚拟货币(比如说是ETH、ZEC这种)由于吸取了前辈们被爆算法的经验,在挖掘算法上做了更加特别优化,防止出现无脑的运算,对于显存要求特别高,因此可以有效抵抗矿机的入侵。

也因为ETH这种只能靠显卡挖矿,造成了2017年下半年开始的显卡涨价潮、缺货潮,很多矿主都卖了成千张显卡回去组建矿机挖掘这些虚拟货币。

久而久之,大家都认为CPU不能挖矿,其实只是效率、效益太低了而已!

原文出处:程序师;原文地址:请点击阅读原文进行查看!

点击图片查看更多推荐内容

↓↓↓

【面试题】2018年最全Java面试通关秘籍第二套!

从分布式一致性谈到CAP理论、BASE理论!

为什么新生代内存需要有两个Survivor区?

为什么你创建的数据库索引没有生效?

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存