一,背景知识

芯片的分类

常见的芯片种类:CPU,GPU,ASIC,FPGA,(小众:类脑芯片(intel),量子芯片(谷歌)

按照应用场景分类

服务器端(云端):注重芯片的算力,扩展能力,以及对现有基础设置的兼容性等

移动端(终端):注重芯片的低功耗,低延时,低成本

AI芯片的评价标准

性能(算力):比如芯片做浮点或定点运算时候每秒的运算次数,以及芯片的峰值性能,平均性能等。

灵活性:芯片对不同场景的适应程度,是否可应用于各种不同的AI算法和应用

同构性:当大量部署AI芯片时候,能否可利用现有的软硬件基础设施架构,少引用其它东西才能让芯片工作。比如一个显示器的接口是HDMI,可直接与电脑相连,但是如果显示器的接口是VGA或者雷电3,就需要加一个转接头才能与电脑相连

功耗:芯片对数据中心带来的额外功耗负担

成本:包括芯片的研发成本和芯片的部署和运维成本

二,常见芯片在不同评价标准上的分析

GPU T系列的芯片卡 gpu芯片特点_集成电路

CPU芯片

        中央处理器(Central Processing Unit, CPU)作为计算机系统的运算和控制核心,是信息处理、程序运行的最终执行单元

指令集也在不断的变化。CPU在灵活性和同构性维度有明显的优势。

GPU芯片

        图形处理器(Graphics Processing Unit, GPU),是一种专门在个人电脑,工作站,游戏机和一些移动设备上做图像和图形相关运算工作的微处理器。

        GPU有大规模的并行架构,非常适合对于数据密集型的应用和处理,如深度学习的训练过程。和CPU相比,GPU的性能会高很多倍。很多公司会选择GPU对各种AI应用进行加速,如分析处理图片,视频,音频等。GPU有一个非常成熟的应用框架,如CUDA。

        CPU最大的问题是功耗,比如intel的 P100,V100, A100系列都在250-400瓦之间,而ASIC和FPGA只有几十瓦或者几瓦。而神经网络的训练往往需要大量的GPU集群来提供充足的算力,这样一个机柜的功耗会超过几十千瓦,就需要数据中心为它修改供电和散热等结构,如把风冷散热修改为水冷散热,对于数据中心来说是一笔巨大的开销。高功耗就会带来高昂的电费开支,现代数据中心中超过40%的运维成本都是电费开支。所以对于GPU在数据中心的大规模部署,通常考虑的是它所能带来的算力优势是否可以抵消它带来的额外的电费。

ASIC芯片

        专用集成电路 (Application Specific Integrated Circuit, ASIC),是指应特定用户要求和特定电子系统的需要而设计、制造的集成电路。

        指人工智能专用芯片,典型代表是谷歌的AlphaGo里TPU,AlphaGo里替代了1000多个CPU和上百个GPU。在人工智能专用芯片的各项指标都非常极端,有极高的性能和极低的功耗。比如和GPU相比,性能高10倍,功耗低100倍。但是这样的芯片研发有极高的成本和风险。和软件开发不同,芯片研发往往需要投入大量的人力和物力,开发周期往往长达数年,而且失败的风险很大。

        AI专用芯片的灵活度比较低,比如TPU通常是针对某些具体的应用开发的,不能适用于其它的应用场景。如果想要使用基于ASIC的方案,就需要目标应用有足够大的使用量来分摊高昂的研发成本,同时这类应用要足够稳定来避免核心算法或者协议不断的变化。

FPGA芯片

        现场可编程门阵列(Field Programmable Gate Array, FPGA),是一种可以重构电路的芯片,是一种硬件可重构的体系结构

        可以在各种指标中达到一个比较理想的平衡。在性能方面FPGA可以实现定制化的硬件流水线,在硬件层面可以进行大规模的并行运算,很高的吞吐量。FPGA具有很高的灵活性可以极好的应对计算密集型和通信密集型在内的很多应用。此外,FPGA有动态可编程和部分可编程的特点,也就是说FPGA可以在同时处理多个应用或者在不同时刻处理多个不同的应用,这和CPU类似,但性能远超于CPU。在数据中心里面,FPGA通常是以加速卡的形式来配合现有的CPU进行大规模的部署。功耗通常只有几十瓦,对于供电和散热没有特殊的需求,因此可以兼容现有数据中心的基础设施架构。衡量芯片时候,经常使用性能功耗比的技术指标,所以FPGA比CPU具有优势。

        在开发成本方面,FPGA的一次性成本要远低于ASIC芯片,因为FPGA在制造出来之后,可以通过不断的编程,来改变它上面的逻辑功能;而ASIC在流片之后,它的功能就确定了,如果要改变功能,就需要再进行流片。

基础概念

指令集

        CPU执行计算任务时都需要遵从一定的规范,程序在被执行前都需要先翻译为CPU可以理解的语言。这种规范或语言就是指令集(ISA,Instruction Set Architecture)。程序被按照某种指令集的规范翻译为CPU可识别的底层代码的过程叫做编译(compile)。x86、ARM v8、MIPS都是指令集的代号。指令集可以被扩展,如x86增加64位支持就有了x86-64。厂商开发兼容某种指令集的CPU需要指令集专利持有者授权,典型例子如Intel授权AMD,使后者可以开发兼容x86指令集的CPU。

微架构

        CPU的基本组成单元即为核心(core)。核心的实现方式被称为微架构(microarchitecture)。微架构的设计影响核心可以达到的最高频率、核心在一定频率下能执行的运算量、一定工艺水平下核心的能耗水平等等。

        微架构与指令集是两个概念:指令集是CPU选择的语言,而微架构是具体的实现。