简介
ASIC指的是专用集成电路(Application Specific Integrated Circuit),是专门针对单一用途而设计的集成电路产品。我第一次看到这个名词是在比特币矿机的新闻里。比特币的挖矿方式从CPU发展到GPU,再到FPGA和ASIC,也表明了对于挖矿这种特定应用,CPU的通用计算模式远不如ASIC来得高效。
FPGA是Field Programmable Gate Array(现场可编程逻辑门阵列)的缩写,属于ASIC中的一种半定制电路。FPGA既有硬件电路的高性能,又能通过编程对电路做一定程度的灵活定制,算是介于CPU和ASIC之间的产品。由于它兼具性能和可编程性,加上最近成本在快速下降,因此未来发展前景非常可观,这两年一些云计算厂商都开始提供FPGA的云服务。
CPU则是用于通用计算。世界上第一台通用电子计算机是ENIAC,不过它的通用计算是通过手工改变面板的插接线来实现的,灵活性较差。后来的计算机采用了冯诺依曼提出的存储程序模型,可以从存储设备加载程序,解码和执行指令,具有更高的灵活度。
FPGA则跟ENIAC有点类似,但不再是靠手工改变面板的插接线,而是在特定模式下加载指令程序来设置电路状态,实现指定的计算功能,这样既能拥有一定的灵活度,又能达到较高的计算性能。
我对FPGA和ASIC的认识很有限,只是前段时间看到一篇讲FPGA的公众号文章(老石谈芯-可定制计算的“自动化”和“民主化”),开始对CPU和FPGA/ASIC的差别有了一些思考,所以想写篇文章来梳理一下自己的想法。