赞
踩
我们生活中丰富多彩的应用程序是通过计算机底层大量的数字逻辑运算实现的,而处理这些数字逻辑运算的芯片我们称为数字芯片,常见的处理器如CPU,GPU多是以定制化的形式制造的,大多数的芯片在设计制造流片之后无法更改,完全以软件编程的方式来完成各种应用,而在标准器件中有一类被称为PLD的芯片,他们和定制芯片采用相同的工艺制造,但其中的应用电路可以在出厂后通过编程的方式重新构造。PLD允许开发者自由的实现数字电路,其中包括CPU,以及其他复杂的高性能处理器,因此PLD也被称为万能芯片。70年代早期,PLD规模小结构简单,称为simple PLD;后来大规模的PLD,称为complex PLD。自从赛灵思在80年代发明FPGA之后,FPGA就作为PLD类芯片代表性器件,得到越来越广泛的应用。
我们从可重构逻辑要素方面比较一下FPGA和早期的PLD有哪些优势?
PLD的可重构要素是内部最小的门级,因此连线容易较多,这在大规模的电路中就显得力不从心了。而基于早期PLD思想发展起来的FPGA所采用的可重构逻辑要素是力度较大的逻辑cu级别,连线容易较少,因此更适合构建大规模逻辑电路。
Freeman的早期FPGA专利和后来Carter的布线架构专利共同奠定了FPGA技术的基础
胶水逻辑(glue logic):在电路板上将接口互相不兼容的其他芯片连联起来降低开发成本。
ASIC验证(定制芯片的验证)
经典的早期FPGA架构是在赛灵思Freeman专利中提出的,它有大量的可重编程逻辑块、布线资源以及IO块共同组成。逻辑块的核心是Logic Element,一个LE是由一个查找表和一个触发器组成,查找表用来实现组合逻辑,触发器则根据需要实现时序逻辑。每个逻辑块可以包含多个LE,这些LE通过高速的本地,交叉开关矩阵互联形成一个更大规模的逻辑cu;逻辑块之间则通过可重编程的布线通道以及布线开关来连接。
一个逻辑块及其近邻的布线资源可以形成一个Logic Tile。Logic Tile作为一个设计模块在FPGA芯片上大量复制,这样就可以得到一个规模可随意扩展的FPGA芯片设计。
FPGA设计流程和PLD的设计流程较为相似。
FPGA的特别之处在于要通过工艺映射工具将门级网表转换为查找表,之后逻辑打包工具将独立的查找表打包成逻辑块,布局工具决定每个逻辑块在FPGA上的位置,然后通过布线工具决定逻辑块之间的连线通路后,一个电路的编译工作就完成了。最后将所有的IO、查找表、布线资源的配置信息导出为二进制bit流文件,将bit流加载到FPGA上,就可以实现用户的电路逻辑功能。
FPGA到底是一个什么样的技术?只有这样我们才能在合适的场景使用FPGA和高效的使用FPGA。
我们所有的数字芯片都在VLSI技术上构建的,应用逻辑最朴素最高效的实现方式就是固化为专用电路。可以用专用电路通过寄存器或者特定的软件去实现具有一定的弹性但功能具有极高的针对性,例如,网络解码器。
而CPU的硬件电路是固定的,但可以通过强大的软件实现任意的逻辑,其本质是利用大规模的存储器实现一种在时间维度的复用处理单元的方法(复用方法损失了处理单元的并行处理带来了性能损失)。
而另一种流行的处理器GPU,则是利用大量的处理单元来提高并行处理能力,但每个单元的自由度不如CPU,只能实现部分的软件逻辑。
FPGA:PLD之外的器件在硬件无法更改的前提下设计的,因此不得不在有限的面积上去折中逻辑表达能力与处理能力。而FPGA允许我们通过编程的方式重新构建硬件,故其长处是兼顾专用电路级别的性能和通用处理器的自由度。因此可以认为PLD技术就是VLSI工艺上的逻辑实现虚拟化层,允许用户来决定电路逻辑。这种由软件定义的硬件称为软核。那么,当硬件软化如何进行高效的软硬协同开发将是未来计算机领域的重大课题之一!
FPGA带来的逻辑虚拟化优势也是有代价的:性能上,FPGA实现的软核专用电路通常比ASIC低一个数量级,但比CPU高一个到两个数量级。FPGA还具有重构时间慢等使用上的限制,那么,什么样的应用适合FPGA实现呢?
FPGA真正有优势是**MISD(多指令多数据流)**比如神经网络推理和网络处理器等,通常比CPU性能高几十倍以上。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。