许多世界顶级“建筑师”是你可能从未听说过的人。他们设计并创造了许多前所未见的神奇结构,包括芯片内的复杂系统。木片的基本原料是沙子,木片本身已经成为现代人生活中必不可少的一部分。每当您使用手机或电脑,或通过互联网发送和接收信息时,您总是可以从这些建筑师的伟大作品中受益。
自20 世纪80 年代诞生以来,FPGA 已经从简单的可编程门阵列发展到具有大量可编程逻辑的复杂片上系统。不仅是硬件结构,FPGA开发工具和应用场景也显着进步和扩展,增加了FPGA在整个半导体行业中的重要性。 FPGA芯片的演进离不开这些“架构师”的不断发明创造。
几年前,这些顶级FPGA 架构师评选出了从20 世纪90 年代开始的过去20 年来FPGA 领域最具影响力的25 个研究成果。通过这些重要结果,您可以了解FPGA 如何随时间演变,并了解FPGA 技术未来将向何处发展。
这25 项研究成果大致分为架构、EDA 工具、电路和应用等研究领域,每项成果均由该领域的领先专家推荐。我们将分几个部分介绍这些改变了FPGA开发流程的重要研究成果。本文是一篇应用文章,主要介绍FPGA在实际领域的主要突破。
有关FPGA 领域的架构创新、布局和布线算法创新,请参阅以下文章:《系统架构篇》 《微架构篇》 《布局布线算法篇》 《其他 FPGA CAD 算法篇》。
(本文提到的六项成就原文均已上传至知识星球:老石探心进阶版,请扫文末二维码进入知识星球查看。)
01
DPGA的用途和应用领域
一句话概括:FPGA动态重构领域的基础研究
英文名称:DPGA的利用与应用
作者:安德烈·迪翁
推荐人:John Wawrzynek(加州大学伯克利分校)
该成果是最早关于FPGA动态重配置(运行时重配置)的工作之一,为后续大量工作奠定了坚实的基础。
在这项研究中,作者对可以提高FPGA 运行效率的器件架构和应用程序设计模式进行了详细分析。在这项工作之前,许多研究人员对FPGA 的动态重配置功能着迷,并且有几项研究基于商用FPGA 构建了示例动态重配置应用程序。其中的代表作是Chris Jones 等人的“Issues in Wireless Videocoding using Run-time-reconfigurable FPGAs”。
然而,除了一些想法之外,动态重构及其设计模式还没有被清楚地理解。此外,缺乏关于动态重新配置的成本和收益的定量标准和理论分析。
安德烈·德洪很早就开始关注和思考这些问题。当他还是麻省理工学院的研究生时,他将动态可重构设备的概念引入到他的研究中。在这项研究中,他详细介绍了一组有用的设计模式,并严格演示了这些模式和动态可重构设备如何为系统带来显着的领域优势。
尽管这项工作的学术贡献是重大的,但它在更广泛的意义上影响和启发了其他研究人员。在本研究中,我们演示了如何将定量分析用于可重构设备的架构和系统级研究,包括功能的成本与收益分析。而且,与市售的可编程逻辑阵列相比,作者在系统架构层面有着完全不同且大胆的想法,这也是微架构研究领域其他研究人员创新思维的一个例子。一般来说,研究人员仅限于针对商业设备和特定领域优化这些FPGA,这也在一定程度上限制了整个领域的创新和发展。
总的来说,这项研究在几个方面产生了持久的影响。它为可重构计算的定量分析设定了标准,并激励了一代研究人员探索动态重构的方法和应用。这项工作中包含的架构和设计思想已被许多研究团队和初创公司采用。
02
使用高性能FPGA 进行250MHz 信号处理
一句话总结:高性能FPGA 设计的典范,使FPGA 时钟频率明显高于当代x86 CPU。
英文名称:使用高性能FPGA 进行250 MHz 信号处理
作者:布赖恩·冯·赫尔岑
介绍人:Andr DeHon(宾夕法尼亚大学)、Steve Trimberger(DARPA 国防高级项目研究机构)
这一结果是FPGA 设计领域一项令人兴奋的研究,展示了FPGA 可以实现的最大性能以及如何设计以实现这种性能。
为了理解这一成就,我们首先需要解释1997 年左右的FPGA 设计是什么样子的。当时,英特尔的奔腾CPU是高时钟频率设计的缩影,运行频率仅在75至100MHz之间,并且采用0.5um和0.6um工艺制造。 Pentium CPU 只能在200MHz 时钟频率下运行0.35um 进程。此外,当时大多数FPGA 设计都在25-40MHz 范围内运行。业界的基本共识是FPGA 的运行速度应该比ASIC 或处理器慢得多。
然而,在1997 年,这一努力使得设计能够使用基于0.6um 工艺的Xilinx XC2100A FPGA 以250MHz 的时钟频率运行。时至今日,这样的性能对于大多数45nm 设备的用户来说是非常可以接受的。
诚然,实现这种性能需要对FPGA设计进行大量优化,包括仔细布局、流水线设计以及严格规划一个周期内信号传输的距离和位置。值得注意的是,这项研究详细介绍了整体设计方法,并为CAD 工具和FPGA 架构研究提供了大量前瞻性指导,以充分利用FPGA 的最大性能。随后的许多作品,如GARP、HSRA、CHESS、SFRA、Tabula、Internet 重定时和流计算模型,都是基于这项工作衍生的愿景。
该成果是FPGA应用领域具有代表性的研究成果之一。我们展示了超越传统理解的FPGA 性能结果,并详细介绍了如何利用FPGA 架构特性来实现这一目标。这些为FPGA相关研究提供了宝贵的经验。尽管有些结果令人困惑,例如实验室报告,但它们在今天仍然非常具有可读性和最新性。
03
基于FPGA的CORDIC算法研究综述
一句话总结:利用FPGA高效实现算法的经典研究
英文名称:基于FPGA 的计算机的CORDIC 算法综述
作者:雷·安德拉卡
推荐人:Paul Chow(多伦多大学)
该工作详细描述了如何在FPGA上实现高效算法,是同类工作的代表作。
1998 年,可编程DSP 芯片普遍用于信号处理,当时最先进的设备具有大约128 KB 的片上存储器和100 MIPS 的性能。 FPGA 允许您构建无法用DSP 完成的信号处理系统,但比开发ASIC 容易得多。 1998 年的FPGA 比现在小得多,可能有数千个4 输入LUT,如本次工作中使用的Xilinx 4013E 设备。因此,对于此类FPGA 设计来说,在较小的面积内高效地实现DSP 功能非常重要。
自出版以来,这部著名的著作已成为FPGA 设计工程师在硬件中构建信号处理算法的重要参考。 DSP算法包括许多超越函数,例如正弦和余弦。然而,在硬件中计算这些函数并不像直接在软件中调用库函数那么容易。随着信号处理工程师开始使用FPGA,这项工作向他们表明,实现高效的DSP 算法需要不同的硬件架构和设计方法。具体来说,这项工作描述了CORDIC算法的基本理论。 CORDIC 算法基于移位和加法运算,非常适合在FPGA 上实现。
传统的FPGA应用研究主要研究特定应用在FPGA上的实现。这项工作的不同之处在于,它主要针对广泛的应用设计工程师群体,并为该群体提供技术传播和教育。这使我们能够继续在更广泛的层面上影响后来的研究人员。
04
管理流水线和可重构FPGA
一句话概括:可重构计算与硬件虚拟化的第一次结合与探索。
英文名称:Managing Pipeline-Reconfigurable FPGAs
作者:Srihari Kadambi、Jeffrey Weiner、Seth Copen Goldstein、Herman Schmidt、Donald E. Thomas
推荐人:凯瑟琳·康普顿、安德烈·德洪
1998 年,即使是最大的FPGA 也只有50,000 个LUT,因此通常很难将整个设计安装到单个FPGA 上。此外,即使您的设计适用于当前的FPGA,当下一代FPGA 出现时,也需要重新设计或至少重新编译,以更好地利用新FPGA 的附加逻辑元件和容量。 FPGA 现在拥有数百万个可编程逻辑资源,因此大多数设计通常不受FPGA 容量的限制。然而,对于不同代FPGA的兼容性和可扩展性的研究仍然缺乏。
在本研究中,PipeRench架构被提出来为FPGA开发人员提供动态可重构逻辑模型。将计算视为大型静态前向图,并使用动态重新配置技术来控制和切换电路的不同部分。当电路太大而无法利用可用资源来实现时,电路的不同部分会被换入或换出系统,以最终满足资源需求。
PipeRench的独特之处在于它展示了如何通过计算实现管道重新配置,并在可用内存带宽有限的情况下实现快速配置切换。在编译PipeRench 实例并获得FPGA 映像后,PipeRench 还可以将该映像加载到其他更大或更小的PipeRench 实例中,从而相应地提高或降低性能。这样可以灵活扩展FPGA。
其结果是一个突破性的大型系统项目,涵盖可重构计算的许多领域。这项工作描述了配置数据管理并介绍了PipeRench 架构的许多低级设计细节。它还描述了可重新配置硬件的配置过程和机制,以及如何确保数据通过虚拟管道到达适当的物理位置。综上所述,这项工作是可重构计算领域的一项突破,这项工作及其后续工作将帮助该领域的研究人员了解未来的方向、他们可能遇到的问题,并提出一些创新的方法来解决这些问题。
05
FPGA 和CPU:浮点峰值性能趋势
一句话总结:FPGA在浮点计算领域的开创性努力。
英文名称:FPGA vs. CPUs: Peak Floating Point Performance Trend
作者:基思·安德伍德
推荐人:Paul Chow(多伦多大学)
这项研究表明,FPGA 在未来通常需要密集高精度浮点运算的超级计算应用中大有可为。
从FPGA出现之初,业界就有一种观点认为FPGA可以用来加速计算过程,但这并不是FPGA出现的最初目的,也不是FPGA的主要应用市场。截至本文发表时,FPGA 在定点计算方面已显示出潜力,特别是在信号处理领域,其使用比可编程DSP 具有性能优势。然而,大多数科学计算和应用都是基于IEEE风格的浮点数,尤其是双精度浮点数,以获得稳定的计算结果。在这项研究之前,人们普遍认为FPGA 无法提供足够的浮点性能来与当代CPU 竞争。
本研究在多代FPGA上实现了浮点加法、乘法、除法、乘累加等基本运算单元,并对它们的时钟频率和硬件面积进行了定量分析。在本工作中,我们结合相应FPGA器件的特点,构建了这些基本单元的最佳性能趋势曲线。对于CPU,摩尔定律指出这些计算单元的性能趋势曲线每18 个月翻一番。然而,对于FPGA 来说,结果表明FPGA 上的峰值浮点性能已经超过或即将超过CPU,并将继续增长(见下图)。
本研究是定量分析和证明FPGA 可以充当浮点加速器的首次尝试。通过模型建立和分析可以看出,这一趋势在一定程度上有利于FPGA与CPU之间的竞争。这也证明可重构计算研究仍然具有光明的前景。然而,客观地说,这项研究的结果高度依赖于计算的峰值性能,我们不知道如何在实际应用中获得这样的性能,并且峰值性能和实际性能之间的相关性仍然是研究人员争论的焦点。问题。
06
在FPGA 上设计高效多端口存储器
一句话概括:现代FPGA 存储器设计和容量的根本性变化
英文名称:Efficient Multi-Ported Memory for FPGAs
作者:查尔斯·埃里克·拉福雷斯特、J·格雷戈里·斯蒂芬
推荐人:斯科特·霍克
FPGA 的一个关键特性是能够构建大量简单的逻辑块,这些逻辑块可以组合起来形成更大、更复杂的设计。尽管FPGA 中的每个可编程单元只有4 到6 个输入,但一组LUT 可以支持任意数量的输入并执行任意函数的计算。触发器只能存储1 位数据,但这些触发器可以组合起来支持32 位数据,或者组合起来形成多级FIFO。
随着FPGA 技术的不断发展,我们开始向FPGA 添加针对特定任务进行优化的硬核单元,例如乘法器、内存,甚至处理器内核。虽然这些模块从根本上提高了FPGA 的通用计算性能,但它们的相对缺乏灵活性使得将这些模块级联在一起形成更大的逻辑单元变得困难。此外,在某些应用中,如果这些硬核单元不具备相应的逻辑功能,设计人员就很难继续使用它们,迫使他们依赖传统的使用LUT和寄存器的方法来进行逻辑。设计。这个问题的一个典型例子是内存。如果内存单元容量太小或者地址空间不够大,您也许可以组合多个内存单元来满足您的设计需求。然而,如果内存端口的数量是固定的,例如特定内存单元每个周期只允许2次写入,但应用程序要求每个周期3次写入,就会发生这种情况。事实上,额外的读端口可以通过复制内存来实现,但对于RAM来说,独立写端口的数量才是性能的关键。
这项工作从根本上解决了这个问题。一个重要的事实是,底层硬件的运行速度通常比用户设计的实际速度快得多,因此可以对内存端口进行时间复用,以增加独立内存访问的数量。此外,通过巧妙的设计,多个存储器可以组合在一起,以支持增加的读写带宽,同时保持对整个机制的控制。两者相结合提供了一种有效的解决方案,可提供更多内存端口。
结论
这六篇FPGA应用领域的重要著作有的为FPGA动态重配置研究奠定了坚实的理论和实践基础,有的则首次将FPGA与虚拟化技术结合并实现了高性能的FPGA应用设计应该是什么样子。其中有一些是高效的?更重要的是,这些研究所采用的方法论、思想以及前瞻性与实用性的统一,以及严谨的学术态度,为后来的学术和工业研究树立了最好的榜样。