什么是 FPGA?

FPGA 的全称也就是Field Programmable Gate Array,中文名称叫做现场可编程门阵列,它是一个集成电路,可以“现场”编程并按照预期的设计工作。这意味着它可以作为一个微处理器,或作为一个加密单元,或显卡,甚至是这三者同时工作。顾名思义,FPGA 是可现场编程的。因此,作为微处理器的 FPGA 可以被重新编程,并作为显卡使用,而不是在半导体生产厂商那里重新制造。在 FPGA 上运行的设计通常是使用硬件描述语言 (如 VHDL 和 Verilog) 创建的。

什么是 ASIC?

ASIC 的全称是Application Specific Integrated Circuit,中文名称为应用特定的集成电路。顾名思义,ASIC 是特定于应用程序的。它们的设计目的只有一个,它们的整个使用过程中所能执行的应用都是特定的。例如,手机内部的 CPU 是 ASIC。它的作用只能一个 CPU,其逻辑功能不能被其他任何东西改变,因为它的数字电路是由永久连接的门和硅触发器组成的。ASIC 的逻辑功能与 FPGA 的情况类似,使用 Verilog 或 VHDL 等硬件描述语言指定。ASIC 的不同之处在于,合成电路被永久地嵌入到硅中,而在 FPGAs 中,电路是通过连接许多可配置的模块来实现的。比较一下,用乐高积木建造城堡和用混凝土建造城堡。前者类似于 FPGA,而后者类似于 ASIC。你可以重复使用乐高积木来创造不同的设计,但混凝土城堡是永久的。

不过一个 ASIC 更符合:

  • You can't buy a suitable replacement from the ready-made chip selection
  • You can't sell any extra you might make because nobody else would want them

CPU 虽然功能写死了,符合集成电路设计定义上的 ASIC,但是如果 CPU 所支持的指令集架构是通用的,大家都买账的,那么其实这个 CPU 就可能不称为一个 ASIC。相反,如果你设计了一个 CPU,其指令集架构你没有公布,只有你自己用,别人不会买,你在市场上也买不到,那么这个 CPU 则可以被称为 ASIC。As a term of art, it's not black and white and categorical.

参考文献