世界变化太快,本来生活中就只有CPU,后来又闯入了MCU、FPGA、GPU、DSP、ASIC,已经难以分辨了。现在又多了SoC、SiP、TPU、XPU,让我们读书看报越发艰难啦。
它们共同特点是都属于IC(Integrate Circuit,集成电路),并且具有运算功能。这篇文章就是要区分开它们。
FPGA就如一块生铁,其它都是工具
生铁买回家没法直接使用,但它能做成各种工具。
FPGA (Field Programmable Gate Array,现场可编程门阵列),把它装在电路板上也没法直接使用。FPGA工程师的任务就是通过改变物理上的连接关系,实现各种逻辑和运算功能。
就像一块生铁能打造出很多工具,FPGA最强大的地方在于,可以灵活实现各种结构,对事件进行即时响应。比如对于大量的运算:
把累加操作变成流水线操作,一个时钟周期就完成一次很多数的累加。类似接力搬砖,只要人足够多,可以迅速把砖头移动到很远的地方。
可以模拟出100块CPU计算单元,大幅提升并行计算速度。类似于有很多个人在不同的位置同时搬砖,只要人数够多,砖头一会儿就搬完了。
为了应对人工智能深度学习对运算的需求,百度和赛灵思合作,基于FPGA推出XPU(X Processing Unit),X应该就是想表明很厉害、万能的意思吧。
FPGA的缺点也明显:
不可能对每个门电路进行优化,用户连接只在一定颗粒度上是可行的。比起专用芯片来,速度慢、功耗大。
受工艺限制,比起专用芯片来,量产成本高很多。
FPGA的开发比起软件编程来,麻烦很多。需要考虑一些硬件设计的问题,比如信号时间上对齐、资源的评估、节能等。
FPGA名字当然有其演化的历史,但实践上看,名字起得并非完美。
由于名字中有“可编程”的字眼,导致很多人认为FPGA工程师是软件设计人员。而软件工程师只是忿忿的说,“FPGA能实现递归函数吗?不行吧。你这也叫编程?”他们绝对不会认为FPGA工程师是自己的一员。
如果从避免混淆的角度来看,我觉得叫FCGA (Field Connectable Gate Array,现场可连接门阵列)更清晰。 “连接”表明从硬件上改变了它,这样FCGA工程师就清晰无误地属于硬件设计工程师了。如果对应到其它硬件电路设计流程,他们同时负责设计、仿真、原理图、PCB布线、和测试工作。
CPU是通用工具,其它都是专用的
通用工具有很多种。当一个人说工具时,我们很难具体指明他在说什么。
CPU(Central Processing Unit,中央处理器),它在电路板上的地位是配置和控制其它所有设备,当然也包括FPGA。从功能上看,它是最要的器件。当电源正常工作后,第一件事情就是启动CPU系统,之后CPU检查其它硬件的状态,并依次配置和启动它们,最终让系统进入工作状态。我所认知的CPU都是支持软件编程的,这保持了通用性。
从控制其它设备和可以编程的角度来看,MCU、DSP、SoC、甚至ASIC都可以划分到CPU的范畴。
因特尔、AMD等大厂的CPU广泛应用于PC上,它们构成CPU最经典的概念。
MCU(Micro Controller Unit,微控制器),通常称为单片机。常说的ARM,就是单片机的一种。跟PC上的CPU相比:
内部集成了很多设备,比如存储器、数模、模数转换器、时钟单元、各种通信接口等。MCU只需加上很少的外部器件,就能做出很实用、高可靠性的产品,比如Pad、白色电器、汽车控制系统等等,生活中无处不在。
通常MCU处理速度比CPU低,毕竟大部分的应用场景对运算的要求并不高。
功耗比CPU低很多,对于需要电池的设备有很大的吸引力。
种类繁多,便宜的几块钱就能买到,也能满足很多简单控制的需求。
DSP(Digtial Signal Processor,数字信号处理器),可以看成MCU的一种,它强调对运算的优化,适用于视频、音频大数据流的处理。
ASIC是专用工具,精益求精
干特定的活,用专门的工具,无比顺手啊。
ASIC(Application Specific Integrated Circuit,专用集成电路),为了应对某一特定领域大量的需求,优化到每一个门电路,在性能上做到极致。牺牲了通用性,主要功能无法更改,好处是批量生产成本低、速度快(比FPGA更迅速)、能耗低。
GPU(Graphic Processing Unit,图形处理器),分担CPU对显示部分主要的工作量。顺序运算能力远不如CPU,但可以比较灵活的配置多进程,并行计算能力比CPU有数十倍的提升。也因此,现在常被借用来进行加速计算,跟图形已经没有关系了。编程通常是通过CUDA(Compute Unified Device Architecture)平台来实现的。由于人工智能深度学习的兴起,对计算能力要求飞速提升,GPU的行业老大英伟达的股价也一柱冲天。
麒麟芯片,华为用在手机里,硬件实现了对各种通信协议的处理。手机出货量大,能大幅摊薄前期ASIC的开发成本,而且手机对功耗要求很高,尤其适合采用ASIC。
麒麟960
TPU(Tensor Processing Unit,张量处理器),谷歌为了深度学习开发的芯片,架构不详。从名字来看,应该是对矩阵的运算做了优化,适配自己的深度学习软件框架TensorFlow。谷歌购买了世界5%的服务器处理器,这个量完全足够支持它开发一套专用的芯片。目前,谷歌还没有计划向外销售TPU。
由于深度学习的算法目前还处于迅速演进过程中,对深度学习ASIC的高度定制,比如针对某种神经网络的定制,是件高风险的事情。也许上午花了上千万定制的ASIC刚刚问世,下午就出现一种效率提高10倍的算法,那这块ASIC也就几乎没有什么价值了。
FPGA、CPU和ASIC比较
下图表明了它们的位置关系。
它们之间的对话是这样的:
SoC 和 SiP 是工具包
工具包的意思就是里面啥都可以有。
FPGA、CPU和ASIC各有优缺点,现在它们已经有融合的趋势了。
因特尔,传统的CPU厂商收购了Altera(FPGA的主力厂商),CPU融合FPGA的心不言自明。
而FPGA的老大赛灵思也早就开始在它的FPGA里面集成了CPU,构成Zynq系列的FPGA产品。
华为专用麒麟芯片更是集成了CPU和GPU。
不仅如此,很多芯片也像单片机那样,集成数模、模数转换、存储器、各种通信协议。这些集成了的东西,你中有我,我中有你,难以再区分它们。SoC (System on Chip,片上系统),可以笼统的指代它们。单片机就是很典型的SoC。
而把很多器件融合到一颗芯片里面难度比较大。直接把它们拼接到一起,然后再加个壳,外观上构成一个器件,就是SiP(System in Package,封装系统),技术难度比较低,模块化较好,紧凑度差些,算是SoC的初级形式吧。
总结
FPGA像块生铁,自己怎么锻造就怎么用,CPU适应性强,怎么编程就怎么用,ASIC让你怎么用你就怎么用。SoC和SiP是多种芯片的融合体。各种芯片比较一遍,验证了一个朴素的道理,世上没有免费的午餐。性能(速度和功耗)、灵活性、价格三者,最多只能占两样。
联系客服