本文已参与「新人创作礼」活动,一起开启掘金创作之路。
FPGA、ASIC和TPU
FPGA
我们知道CPU其实就是很多的的门电路搭出来的,搭好以后电路是不能更改的。而FPGA(现场可编程门阵列),我们可以对它的电路不断的排列组合,来组装成自己想要的芯片。这个排列组合我们可以通过软件编程来实现。
FPGA到底是如何通过编程来控制这些电路?
-
将电路的功能逻辑化后存储起来,实现组合逻辑。实际上各种复杂的电路实现的功能,都有对应的真值表。CPU是通过布线来实现电路功能。而FPGA是直接将这些真值表存储在LUT(Look-Up Table)的电路里边。就相当于把一个硬件电路软件化,然后存起来。
-
需要实现时序逻辑电路时,直接放边沿D触发器作为寄存器即可。当我们把很多个LUT和寄存器组合在一起时,我们可以实现功能更复杂的电路。这样的电路也被叫做CLB(Configurable Logic Block,可配置逻辑块)。
-
通过可编程布线,来连接不同的CLB实现我们想要的功能。
ASIC
ASIC(Application-Specific Integrated Circuit)专用集成电路。
ASIC就是为了特定场景而设计的专用的芯片,比如GPU就可以看作是一种ASIC,因为它就是用来专门处理图像的。
与FPGA不同的是,ASIC同CPU相同,电路是连死的,不像FPGA可编程。
TPU
TPU(Tensor Processing Unit)张量处理单元,属于ASIC,专门为了深度学习而生。
深度学习主要分为两部分,深度学习的训练和深度学习的推断。
训练就是通过跑海量的数据,形成一个模型,而这个模型有很多的参数。
推断就是根据这些参数,去计算我们输入的结果。
整个深度学习所消耗的时间,大部分都在推断上。TPU就是为了加快深度学的推断而产生的。