比特币挖矿越发火热的现在,想必很多人都知道靠显卡GPU运算挖矿速度远远高于CPU,当然即使GPU运算不能与专业矿机对比,但这不妨碍业余矿工对GPU运算的推崇。那么为什么GPU 运算相对 CPU 在比特币矿业中会占有绝对优势呢?今天就来解读一下 GPU 运算与比特币挖矿。
首先CPU和GPU在计算机中为了不同的使命,设计上不同:
1 CPU 主要为串行指令而优化,而GPU则是为大规模并行运算而优化。
2 现代的多核 CPU 针对的是指令集并行(ILP)和任务并行(TLP),而 GPU 则是数据并行(DLP)。
3 GPU 往往拥有更大带宽的 Memory,也就是所谓的显存,因此在大吞吐量的应用中也会有很好的性能。
CPU需要很强的通用性来处理各种不同的数据类型,同时又要逻辑判断又会引入大量的分支跳转和中断的处理。这些都使得CPU的内部结构异常复杂。而GPU面对的则是类型高度统一的、相互无依赖的大规模数据和不需要被打断的纯净的计算环境。GPU采用了数量众多的计算单元和超长的流水线,但只有非常简单的控制逻辑并省去了Cache。而CPU不仅被Cache占据了大量空间,而且还有有复杂的控制逻辑和诸多优化电路,相比之下计算能力只是CPU很小的一部分。所以与CPU擅长逻辑控制和通用类型数据运算不同,GPU擅长的是大规模并发计算,适合于密码破解。
简单来说,CPU是通用运算简单说就是无脑算、暴力算不管是100个小朋友分苹果还是模拟地球都能分解成 1+1=2这类最基本的给暴力算出来。GPU 就是专门来处理高阶数学算法的,比如算出、光源、物体、视点、阴影的相对位置,这就要三角函数给堆出来。而比特币挖掘器采用的是SHA-256,这是由美国国家安全局发明的一种安全散列函数,一般用于密码加密与解密。这种算法会进行大量32位整数循环右移运算(Right-Rotate),很适合擅长大规模并发计算,破解密码的 GPU来运算。
以Folding@home为例,Folding@home是一个研究蛋白质折叠、误折、聚合及由此引起的相关疾病的分布式计算工程(与比特币模式类似)。最开始F@H仅支持CPU,后来加入了对PS3游戏机的支持,但同样是使用内置的CELL处理器做运算。F@H因ATI的加入为GPU计算翻开了新的一页,如今F@H第二代GPU客户端已经能够支持ATI和NVIDIA的全系列DX10 11 GPU。
不仅CPU 和 GPU存在巨大差距,不同架构的GPU也有相当大的差别。比特币的计算是基于SHA-256算法的,这个算法会有大量的位操作“Right-Rotate”,对于这个操作AMD显卡原生只需要1个硬件指令,而NVIDIA卡则需要用3个硬件指令来模拟,因此即使运算单元数量接近,AMD显卡的挖矿效率仍然比NVIDIA显卡要高。
当然现在也出现了使用动态Hash算法,达到仅限CPU挖矿的YaCoin,目前不支持GPU或者ASIC矿机。想用CPU挖矿的可以关注一下。偶尔玩玩主流的比特币的话,GPU还是最好的选择。