我记得在大学读书的时候还会兼职卖几台二手电脑来挣点早餐钱,当时还是谈了电脑奔腾系统,有时间的话去广州天河看看人山人海的电脑城,其中配置电脑时候看的核心就是电脑的CPU,但近年来约来约少人讨论。
第一个原因当然是因为移动互联网的到来,以互联网为代表的电脑转转移到手机了,曾经如雷贯耳的戴尔没落了,联想即使排名第一也没有什么引起大家关注。
另外一个原因就是技术变化。没有关系技术的人可能也不知道当今比较热门的芯片有哪些,今天就介绍一下,新进的芯片包括了GPU,FGPA,还有专门挖矿用的ASIC芯片。
区块链大家应该都听说过,而挖掘虚拟货币的挖矿运动差点就成为了一种颠覆。在挖币高潮时候,矿机是千金难求,而比特大陆就是最出名的,而专门挖矿的旷工用的挖矿机所用的芯片就是ASIC。
ASIC英文是Application-Specific Integrated Circuit( 应用型专用集成电路)的缩写,是一种专用芯片。小米的口号是为发烧而生,那么ASIC就是为挖矿而生。
那么还有GPU,FGPA芯片呢,我引用一下来自有其他平台写的文章内
FPGA相比如何?
CPU与GPU都是我们常见的通用型芯片,它们在各自领域都可以高效地完成任务,但当同样应用于通用基础计算领域时,设计架构的差异直接导致了两种芯片性能的差异。
CPU作为通用处理器,除了满足计算要求,为了更好的响应人机交互的应用,它要能处理复杂的条件和分支,以及任务之间的同步协调,所以芯片上需要很多空间来进行分支预测与优化(control),保存各种状态(cache)以降低任务切换时的延时。这也使得它更适合逻辑控制、串行运算与通用类型数据运算。
而GPU拥有一个由数以千计的更小、更高效的ALU核心组成的大规模并行计算架构,大部分晶体管主要用于构建控制电路和Cache,而控制电路也相对简单,且对Cache的需求小,只有小部分晶体管来完成实际的运算工作。所以大部分晶体管可以组成各类专用电路、多条流水线,使得GPU的计算速度有了突破性的飞跃,拥有了更强大的处理浮点运算的能力。这决定了其更擅长处理多重任务,尤其是没有技术含量的重复性工作,比如图形计算。由于深度学习通常需要大量的训练,训练算法并不复杂,但数据非常量大,而GPU的多内核、并行处理的优势,使得其相比CPU更适合深度学习运算。
FPGA(现场可编程门阵列)是一直可编程的半定制芯片,其与GPU一样具有并行处理优势,并且也可以设计成具有多内核的形态,当然其最大的优势还是在于其可编程的特性。这也意味着用户可以根据需要的逻辑功能对电路进行快速烧录。即使是出厂后的成品FPGA的逻辑块和连接,用户无需改变硬件,就可通过升级软件来配置这些芯片来实现自定义硬件功能。
相较于我们常见的CPU、GPU等通用型芯片以及半定制的FPGA来说,ASIC芯片的计算能力和计算效率都直接根据特定的算法的需要进行定制的,所以其可以实现体积小、功耗低、高可靠性、保密性强、计算性能高、计算效率高等优势。所以,在其所针对的特定的应用领域,ASIC芯片的能效表现要远超CPU、GPU等通用型芯片以及半定制的FPGA。这一点,我们从前面提到的“矿机”市场所采用的芯片的变化上就能够看到。
在比特币诞生之初,由于单位时间内比特币的产量较多,对于算力要求也不高,所以早期人们大都采用的是电脑的CPU来“挖矿”。随后来大家发现用GPU“挖矿”效率更高,于是便转向开始采用GPU来挖矿。直到2013年左右,低成本灵活性强的FPGA才被用于挖掘比特币。而随着挖掘比特币所需的算力越来越高,以及挖掘成本(主要是电费)的提升,主要的矿机厂商都开始采用能效更高的ASIC芯片取代了GPU/FPGA来运行比特币SHA-256哈希算法。正因为这些ASIC芯片是针对运行SHA-256哈希算法而设计的,这也使得它在挖掘比特币的能效上要远高于CPU/GPU/FPGA。
当然,ASIC芯片的缺点也很明显,因为其是针对特定算法设计的,一旦芯片设计完毕,其所适应的算法就是固定的,所以一旦算法发生变化就可能将会无法使用。比如近期,比特大陆发表了一种基于新款ASIC芯片的矿机蚂蚁矿机 X3,主要是针对门罗币(XMR)以及依赖 CryptoNight 算法的加密货币。但是随后门罗币随即发出反制声明,将改变核心算法以对抗ASIC算力的入侵。如果门罗币的核心算法真的改变的话,那么比特大陆的这款新的ASIC芯片的能效将会大打折扣,甚至可能会面临效能低下的尴尬局面。另外由于是专用的芯片,所以如果出货量不大的话,那么芯片成本就会比较高,当然出货量越大成本会越低。
同样对于人工智能应用来说,由于目前人工智能技术还是处于发展当中,大量的算法不断涌现和持续优化,而且这种变化以各自的方式在加速。而ASIC芯片由于其在设计之时就是针对特定算法进行固化的,所以无法做到适应各种算法。虽然一些手机芯片厂商开始在SoC当中集成专用的AI内核(比如麒麟970的NPU),但是其主要还是只能针对一些特定的AI算法进行加速。而对于其他的算法还需要依赖于SoC当中的CPU、GPU来实现。
特别是在云端的服务器/数据中心,目前更多的还是依赖于CPU、GPU以及可重复编程和可重新配置的FPGA来进行人工智能运算和推理。