为什么GPU挖掘速度优于CPU?为什么AMD ATI Radeon 5970效率优秀? AMD ATI Radeon 5970 是挖掘比特币的热门显卡,也是到目前为止干这活儿最出色的显卡。 为什么CPU和GPU在挖掘比特币的时候存在非常巨大的差距? CPU(中央处理单元)是计算机的主要执行器件,根据程序代码来控制其他所有元件的运作。有的计算机拥有多个CPU,有的CPU拥有多核(这类似于多个CPU集成到一个物理封装上)。 CPU通常是插在计算机主板上的可拆装部件,在上部有较大的金属散热片或风扇。 GPU(图形处理单元)是计算机视频渲染系统的一部分。很多时候GPU位于一块单独的电路板(也就是视频卡)供插入主板使用,GPU的典型功能是协助渲染三维图像以及处理视觉效果。 也有很多电脑没有GPU,GPU不是必需的,不过在现代的电脑上GPU近似于标准配置,因为现在新的操作系统支持依靠GPU处理的增强视觉效果。例如Windows7的半透明窗口,或Mac OS X图标行在鼠标指针附近的凸起效果,这都是GPU的功劳。 GPU类似于CPU,但是它们内部的重要区别是的他们各自适应自己的特殊专有任务,这些差异使得使用GPU进行比特币挖掘更为有利。 一个典型的CPU核心可以在一个时钟周期内执行4个32位的指令(使用128位的SSE指令),而类似于AMD Radeo HD5970 这样的GPU可以每周期执行3200个32位指令(使用它的3200个算术逻辑单元或称流处理器)。这就是800倍于CPU的指令执行速度。截至2011年,最快的CPU拥有6核、8核或12核,以及多少高一点的时钟频率(2000-3000MHz ,而 Radeon HD 5970是725MHz),但是这远远不足以弥补速度上的巨大差异。 CPU如同执行长官,它被设计为通过软件的操控作出决定,CPU能进行所有种类的数学运算在每一个CPU里都有一个或多个算术逻辑单元(ALU),CPU同样非常适于快速的任务切换与逻辑判断。CPU也要处理其他的复杂事务,诸如不同程序间的优先级设定,向后兼容旧有代码等等。 GPU类似于劳工,GPU虽然也能做数学运算,但是它最主要的设计用途是进行视觉图形处理而不是执行者的角色。图形处理是大量的重复任务,因为它被安排对屏幕上大量的像素进行处理,为了更有效率的运算,图形处理器的巨大优势在于执行大量重复劳动,而不是快速的任务切换。GPU拥有大量的算术逻辑单元,数量远远超过CPU,这使得它在执行大批量的重复算术运算时远远胜于CPU。 一个形象的比喻是CPU如同一小组快速执行任务的精兵良将,GPU如同一大群相对迟缓的笨人,他们单个看上去并不那么精干快捷,但是被训练去做大量的重复劳动,而在整体的角度上可能就会更有效率。 GPU的算术逻辑单元ALU被分区为多组,每一组算术逻辑单元共享管理,这样组内成员就完成进行不同的任务,他们彼此协作集群完成那些单一环节变化很小的任务。比特币挖掘的背后是重复尝试Hash(散列)运算,这就是非常适合GPU的重复劳动,每一次运算尝试只改变被散列数据的一个数字。 AMD ATI Radeon 5970 是挖掘比特币的热门显卡,也是到目前为止干这活儿最出色的显卡。 5970有3200个流处理器,这可以理解成是3200个很笨的处理单元被训练用于大量重复劳动而不用做决策工作来打断工作流。这些处理单元构建于群组内,5970使用VLIW-5架构,也就相当于这3200个流处理器事实上是640个核,每个核能在一个时钟周期内处理5条指令。Nvidia把这些核称为Cuba Cores,但他们不是VLIW,这意味着他们单位周期内的运算能力低些。这也是为什么仅仅比较显卡的核数来判定性能是不准确的原因,也是为什么nVidia在做SHA-256 hash的时候落后ATI这么多的原因。 算术逻辑单元ALU决定了比特币挖掘的效率,可用的ALU数目对最终的散列输出结果有直接影响。这就是为什么GPU在挖掘比特币的时候会比CPU高效很多的原因,因为比特币挖掘不需要CPU那样的决策任务,而只是重复的数学运算,比特币挖掘中唯一的决策任务是求证“我是否拥有一个有效的区块?”因此这样的任务很适合GPU完成。 起初,AMD为GPU设计了很多在相对低的时钟频率上(通常是1120-3200个算术逻辑单元运行于626-900MHz)运行的简单ALU填充器(VLIW架构),而Nvidia的微处理器架构包含相对少一些更复杂的算术逻辑单元,通过在更高的渲染时钟频率上(通常是448-1024个算术逻辑单元运行于1150-1544MHz)运行来补偿总体效率。因为VLIW和非VLIW架构的差异,Nvidia每个ALU多占用更多面积的空间,这样每个芯片里的ALU数量就更低,比AMD更早地触及频率上的性能瓶颈。这在AMD那里就体现为单个ALU的运行优势: AMD Radeon HD 6990: 3072 ALUs x 830 MHz = 2550 billion 32位指令/秒 这大致表现AMD和Nvidia的GPU在全线产品上存在的2倍-3倍性能差异,这在跟ALU相关的GPU运算中表现明显,例如比特币挖掘、密码暴力破解等等。 此外,推荐使用AMD GPU的另一个原因在于挖掘算法基于SHA-256,这大量进行32位整数循环右移运算,这易操作在AMD GPU那里可以通过单一硬件指令实现,而在Nvidia GPU那里需要三步硬件指令来模拟(2移+1加),仅这一条就为AMD带来额外的1.7倍运算效率优势(大约1900指令来执行SHA-256压缩操作,而不是Nvidia的大约3250指令)。 综合以上两点因素,AMD GPU在挖掘比特币时有大约3倍到5倍的性能优势. |