内容:
主要介绍FPGA,SoC,ASIC的一些基本概念
读完这篇文章,你将会学到FPGA,SoC,ASIC的含义,它们之间的异同点,以及它们分别都是做什么的,加深对它们的理解
ASIC:专用集成电路,是一种为专门目的而设计的集成电路,(固化电路)
通常意义上的ASIC指的是模块级别的含义,如视频解码器,音频解码器,USB,神经网络加速计算等模块。
但是现在的ASIC通常包含 处理器,存储单元(ROM,RAM,flash等)和其他模块。这样的ASIC通常称为SoC(System on Chip)
FPGA:可编程门阵列(和ASIC是一个近亲的概念),内部集成了大量的数字电路基本门电路以及存储器,(非固化电路,电路可根据配置文件重新生成)
用户可以通过烧入 FPGA 配置文件来来定义这些门电路以及存储器之间的连线。
这种烧入不是一次性的,即用户今天可以把 FPGA 配置成一个微控制器 MCU,明天可以编辑配置文件把同一个 FPGA 配置成一个音频编解码器。
SoC:片上系统,集成了CPU核,内存单元,以及其他外设。亦即集成了许多不同模块的芯片。
FPGA和ASIC的主要区别就是,一个是固化了的电路,一个是非固化的电路。所以FPGA的灵活性更强,但是性能比ASIC更低,而且大规模做生产应用的时候,ASIC的价格更加便宜。
SoC的执行:是由CPU控制的,即程序是由执行单元顺序执行的
FPGA和ASIC(此处指的是模块级)的执行:程序并不由任何执行单元顺序执行,而是由硬件电路直接执行,可能是并行,并不会存在流水线和周期的概念
注:软件执行,一般指的是通过CPU执行,由执行单元顺序执行,会有流水线,指令周期的概念;硬件执行,一般指的是通过硬件模块执行
如,执行一个乘法操作,cpu会通过流水线的执行路线执行,需要花费几个时钟周期,但是专门的硬件乘法电路模块执行乘法运算的时候,没有时钟周期和流水线的概念,肯定运算速度会快很多
现在的ASIC的实现模式是SoC+IP:
电子业界发现每个模块都做 ASIC 成本太高,而且速度太慢,而且最后电子产品的体积也很难做小,不如把所有的模块都集成到同一块芯片上。这块芯片集成了多个模块,并由一个中央控制单元通过总线控制每个模块的运作,就是 SoC。例如,现在高通公司的 Snapdragon 就是一块典型的 SoC,上面集成了 GPU,视频/音频编解码,相机图像信号处理单元(ISP),GPS 以及有线/无线连接单元等等。
SoC 上面的每一个模块都可以称为 IP,这些 IP 既可以是自己公司设计的(如 Snapdragon 上面的调制解调器就是高通自己设计的),也可以是购买其他公司的设计并整合到自己的芯片上,例如苹果 A 系列处理器里用的 GPU 就使用了 ImaginaTIon 的 PowerVR IP。SoC+IP 提供了一种灵活而快速的模式,可以想象如果苹果不是购买 IP 而是自己组建团队慢慢做 GPU,其 A 系列处理器芯片上市的时间至少要被延迟一年。
对于深度学习加速器而言,做成 IP 也是一个加速上市速度的模式。当深度加速器成为 IP 时,它就不再自己做成 ASIC,而是成为 SoC 的一部分,当 SoC 需要做深度学习相关运算时就交给加速器去做。
做成 IP 对于加速器来说能够更灵活地满足客户的需求。 IP 公司可以根据客户的需求快速微调自己的设计并在一两个月内交付(由于并不需要真正生产芯片,只需要交付设计);但是如果加速器已经做成 ASIC,那要改动设计就必须重新做一块芯片,这个过程牵扯到耗时巨大的物理设计和验证,改动完的芯片上市时间可能是一年之后了。
在 SoC+IP 的模式下,IP 公司可以专注于加速器的前端设计并且根据客户的需求量体裁衣,大公司则做自己擅长的后端以及芯片/封装级验证,可以说是大公司和小公司都可以扬长避短,各取所需,最终实现快速加速器设计迭代(如半年甚至一个季度一次)并跟上深度学习发展的步伐。
ASIC(现代SOC级别)和FPGA做AI算法硬件加速运算:(性能,成本)
结语:
FPGA 和 ASIC 在实现深度学习加速器方面各有所长,FPGA 的可配置性更适合企业、军工等应用,而 ASIC 的高性能和低成本则适合消费电子领域(包括移动终端)。为了实现快速迭代,ASIC 可以采用 SoC+IP 的模式,而这种模式也使得没有资源量产芯片的中小公司可以专注于深度学习加速器 IP 的架构和前端设计,并在人工智能市场上占有一席之地。