FPGA的架构一直伴随着摩尔定律不断演进,与其他类型的芯片相比,FPGA可以说是当前最先进半导体技术的集大成者。1984年,赛灵思(Xilinx)推出了第一款商用FPGA-XC2064,如图1所示。在这个FPGA上,只有64个可编程逻辑单元、2个3输入查找表(LUT)、总共800个逻辑门。35年后,英特尔在2019年底推出了当今世界上最大的FPGA,这款名为Stratix10 GX 10M的FPGA芯片,基于英特尔14nm工艺制造,有着433亿只晶体管、1020万个可编程逻辑单元,以及2304个可编程I/O。
图1 世界上首枚商用FPGA-XC2064
可以看到,在这35年间,FPGA的芯片架构发生了极其巨大的变化,用翻天覆地来形容也不为过。在这期间,有多次根本性的架构变革,它们奠定了现代FPGA架构的核心和发展方向。这些架构变革发生的根本原因,都是基于FPGA新兴应用的驱动。
前赛灵思院士,在FPGA和芯片架构领域拥有超过200项专利的Steve Trimberger博士曾把FPGA的发展历程大致划分为三个阶段,即发明阶段(the age of invention)、扩张阶段(the age of expansion)、累积阶段(the age of accumulation)。这三个发展阶段,也分别代表了FPGA技术从无到有、从小到大、从大到强的发展过程,见证了FPGA从单纯的可编程逻辑单元,逐渐发展到拥有成百上千万个可编程逻辑单元的大型阵列,再发展到集成了各类硬件资源、IP核,甚至处理器内核的复杂片上系统,并形成当前丰富的FPGA产品门类,在各类应用场景中得到越来越广泛的使用。
发明阶段:历史的必然
FPGA的发明阶段横跨20世纪80年代和90年代。当时的芯片设计与生产模式与现在有着较大的不同。在当时,无晶圆厂模式尚未兴起,ASIC公司只有在客户的设计投入生产时才赚钱。然而由于开发过程中需求的变化、流片失败,或者存在无法通过固件升级进行修复的设计漏洞,往往只有1/3的芯片设计实际投入生产。也就是说,在当时有2/3的芯片项目是赔钱的。由于芯片的流片成本巨大,业界急需一种通用的半导体器件,用来进行流片前的测试、验证等工作,从而减少流片失败的可能性。在这个大环境下,可编程逻辑器件应运而生,而这也是FPGA的前身。
正如前文提到的那样,FPGA的本质也是一种芯片,它的主要特殊之处是当制造出来后,可以根据不同用户的需求,通过编程来改变自身的逻辑功能,而且这个过程可以重复进行。同时,FPGA使用固定的开发工具和开发环境,而不需要像ASIC那样开发定制化的工具链。这样一来,不同的ASIC芯片可以在流片前使用相同的FPGA进行测试和验证,这使得ASIC厂商流片前的成本和风险得到了大幅降低。
以现在的标准来看,赛灵思推出的业界第一款FPGA-XC2064更像是一个“玩具”。这个售价55美元的芯片由2.5μm工艺制造,只有64个逻辑单元,以及不超过1000个逻辑门。也就是说,实现一个简单的64位移位寄存器就会占用XC2064的全部片上逻辑。然而在当时看来,作为ASIC流片前的硬件仿真与验证平台,FPGA本身的性能并没有那么重要。此时业界需要的,只是一堆相互连接的可编程逻辑门而已。因此,XC2064的问世,在当时依然引发了不小的轰动。到了20世纪90年代,FPGA芯片的主体架构也在慢慢发展,并逐渐演变成为了现在我们熟悉的可编程逻辑阵列的结构,如图2所示。
图2 FPGA的基本架构