【转】weibo/陶马文
发布时间 2023-10-05 00:52:12作者: Fancy2333
结果今天的消息就是Intel要卖Altera了。看来这段时间,即使傍身于半导体巨头,大家都没能找到FPGA最佳的落脚点。
在2013年我还在读EE的时候,关于FPGA的最热门的话题是“动态可重构”(dynamic reconfiguration)。这涉及到FPGA本身的一些知识。
FPGA(Field Programmable Gate Array)是一种可编程逻辑器件,但是如果您有电子工程,工业控制和自动化的背景,您或许知道可编程逻辑器件其实有很多,在FPGA出现之前,还有一种有趣的设备叫做CPLD。CPLD和FPGA都是可编程逻辑器件,就是它们都是逻辑块构成的阵列,每个逻辑块里有不同的运算单元,而这些逻辑块可以通过不同的连接方式构成不同的电路。
它们之所以称为“可编程”,是因为这些逻辑块连接的情况可以作为二进制的数据储存下来,你可以将你用硬件描述语言写的控制逻辑转变成基于二进制的描述这些逻辑块之间连接的情况,如果这些逻辑块可以抽象成图中的顶点,那么您可以想象成您的代码被编译成了一个巨大的邻接矩阵(当然实践中这个图显然不是全连通的,而是hierarchal的,所以编程的最终产物也不是个邻接矩阵)。
二者的主要差异是,CPLD用的是EEPROM,而FPGA用的是SRAM。EEPROM实现简单,但是想要改动时必须得全部擦除重写。但是FPGA用的可是SRAM,这就好像是,你CPU中的高速缓存被MMIO到了电路上,这个电路结构的改变速度完全取决于你有多频繁地改写这片SRAM,这就是FPGA的F之处。
还有个次要差异,首先商品化实现CPLD的正是Altera,而首先商品化实现FPGA的正是Xilinx。CPLD和FPGA其实可以看作是同一代的技术,而CPLD和FPGA这些酷炫的名字更像是marketing的需要。但是随着半导体工艺的提高和SRAM的成本降低,Altera也赶紧做起了FPGA,单独的CPLD几乎被淘汰了。
FPGA从诞生起就在探索如何发挥出SRAM可以快速存取修改的可能性,但事实上这个特性目前完全受制于FPGA的综合部署工具(Quartus/Vivado/etc.),在门级电路发挥出SRAM的存取速度几乎不可能,而在IP级意义也不太大,因为一个综合了若干个IP的设计,你想要替换掉其中的一个IP,其中的面积和时序全都会发生变化,所以IP级的替换也很困难。
所以非常遗憾,FPGA在大家心目中的地位是比较鸡肋的,目前最佳的场景是做芯片的原性验证,但是FPGA是个黑盒,ASIC也是个黑盒,用一个黒盒去验证另一个黑盒,也不知道是在忙活啥,可能还不如基于CPU的仿真综合工具更有意义。
但事实上FPGA显然不是鸡肋,谁不想要一块能够快速改变的电路呢?CPU可以emulate一切,而FPGA不仅可以emulate一块CPU,还可以emulate一个天然的并发系统,还可以瞬间来回切换。关于FPGA最大的问题不是FPGA本身,而是出在针对FPGA的EDA工具上。
一般的EDA工具追求的是静态的全局优化,这个在ASIC上没问题,因为ASIC本身就是静态的,但是在一个具有动态优势的设备上追求静态的全局优化,就是在教一个田径运动员下围棋,确切地说是设法通过教一名运动员下围棋来提高他的4x100接力成绩。
所以为了发挥出FPGA的潜力,一个可能的途径是放弃掉现在面向ASIC设计的工作流,以及配套的EDA工具。你想到些什么了吗?