预测未来是出了名的困难。有时我觉得唯一真正的保证是未来会发生,并且有人会指出它与预测的不同。尽管如此,我们似乎仍然执着于试图弄清楚将会发生什么,更糟糕的是,记录下这些观点,以便日后用来反驳我们。所以,我就开始了...
规模化一直在推动整个电子产业的发展,使其能够以更低的成本生产出更多晶体管的芯片。但这种趋势是一把双刃剑:我们不仅需要弄清楚人们想要的更复杂的设备,还必须确定很多人想要的复杂设备,因为我们必须销售大量的芯片才能摊销巨大的设计成本。
这种寻找具有广泛应用类别的复杂设备的推动力是早期微处理器诞生的驱动力。请记住,在 1970 年代初期,英特尔创建了 4004,这样它就不必为每个想要计算器芯片的公司创建新的计算器芯片。通过对 4004 进行编程,每家公司都可以根据自己的应用配置芯片。在过去的 30 年里,可编程处理器模型已成为半导体行业最成功的抽象概念之一。请记住,销售的大部分处理器(超过一个数量级)并非用于 PC 或我们认为是计算机的其他设备;相反,它们用于在其他电子设备中创建一些所需的功能。处理器确实是一种可重构的设备;配置是通过执行一系列指令来完成的。
随着我们不断扩展技术规模,这些处理器变得越来越复杂,消耗可用的晶体管以生产更快的机器。这种规模化导致了现在著名的摩尔定律推论:处理器性能每 18 个月翻一番。这种性能增长的显著之处在于,基本的机器抽象概念,即顺序执行指令,保持不变。这种稳定的编程抽象使得在这些更快的机器上运行旧代码成为可能,并可以逐步修改代码以创建所需的更复杂的系统。
正如尼克·特雷德尼克和布里恩·岛本在随附文章《可重构系统的必然性》中正确指出的那样,通用处理器的这种主导地位如今正面临来自多个方面的压力,而且似乎很可能需要构建其他解决方案。(但这并不意味着对简单处理器的需求会消失。毕竟,运行微波炉需要多少计算能力呢?)
正如作者指出的那样,一个驱动因素是功耗。我们不仅在朝着无线系统发展,而且之前的性能扩展不幸地增加了功耗和性能。如果您使用当今的技术构建您能想到的最高性能解决方案,您可能会消耗超出您承受能力的功耗。即使在高端台式机中,芯片现在也受到功耗限制,而不是晶体管限制。当您查看通用处理器时,与其他方法相比,它们显得特别耗电。
所以现在我们面临着一个真正的困境:未来最好的计算平台是什么?特雷德尼克和岛本认为这将是可重构系统。在某种意义上,他们是对的。显然,拥有足够大的市场需要可以为多种不同应用编程的系统。用户将必须能够重新配置他们的硬件。作者也正确地指出,最终的硬件将是显式并行的。不会再有单个处理器运行一段代码。
众所周知,如果应用程序中存在显式并行性,那么并行执行该计算比顺序执行计算在给定的性能水平下消耗更少的功率。虽然我们知道未来的计算基板将是并行和可重构的,但不太清楚的是基本的可重构模块将是什么。当前的现场可编程门阵列 (FPGA) 为其客户提供了一个逻辑门阵列,可以配置和重新配置为复杂的逻辑。然而,使用这些逻辑门并非最佳选择,原因有二。首先,用于实现可重编程互连的内存会在功耗、面积和延迟方面造成巨大的开销。其次,FPGA 的程序员通常使用寄存器传输级 (RTL) 语言,例如 Verilog 或 VHSIC(超高速集成电路)硬件描述语言 (VHDL),而不是编程语言,例如 C,后者对于大多数程序员来说会更熟悉。为了使可重构系统获得成功,它们需要开发一种语言编译器可以使用的计算模型。
遵循这个论点通常会让人得出结论,即更大的功能模块应该是处理器,特别是考虑到整个系统将如何配置/编程。虽然我们知道如何通过编写硬件描述语言(如 Verilog 或 VHDL)在门级进行编程,这些语言可以综合成逻辑门,但我们不想强迫软件程序员在整个应用程序中都工作在这个级别。显然,程序员将需要工作在更高的抽象级别。一旦程序员使用这些更高级别的抽象,他们就需要有一个编译器,可以将这些抽象转换为可配置的硬件。FPGA 开始通过使用更大的组件库和 Simulink 风格的框图编辑器来看到更高级别的抽象。但尚不清楚门级 FPGA 是否是这种类型编程的最佳目标。
许多人声称,正确的可重构模块是处理器,因为它与编译器理解的计算模型相匹配。然而,如何将所有处理器一起使用以解决此模型中的大型问题,这取决于程序员——而且历史表明,如果没有足够的工具,通用的并行编程并不容易。
毫无疑问,我们可以构建可重构的硬件基板,无论模块是处理器还是门。真正的问题是如何编程它们。关键是考虑适合大型应用程序类别的计算模型或编程抽象,然后找到由晶体管构建的计算基板,以便它们能够很好地映射到该基板上。当今最常用的编程抽象是同步数据流模型(有时称为流计算模型)。这是特雷德尼克和岛本的文章中提到的许多工具使用的模型;它也是 Simulink 风格的框图编辑器中使用的模型。同步数据流模型非常适用于具有大量数据并行性的应用程序,这是许多需要更高性能计算(例如信号处理)的应用程序的特征。鉴于这种计算模型,现在的问题是:流编译器的最佳计算基板是什么?我认为这看起来不像我们今天认为的可重构系统;也不像处理器。
许多人正在研究这些类型的机器,我的同事比尔·达利是该领域的领导者之一。他的提议有许多分布式简单处理器,其中配置看起来更像是许多指令合并在一起形成一个超长指令字 (VLIW) 程序,而不是 FPGA 位 [1]。这是否会成为流机器的“正确”架构仍然是一个开放的研究问题,但它清楚地表明,解决方案很可能看起来更像处理器,而不是 FPGA。
存储器件的未来发展趋势更难预测,但同样重要的是要理解。虽然许多令人兴奋的新技术即将出现,但取代现有标准始终是困难的。问题在于存储器件的标准非常高。我们期望动态 RAM (DRAM) 和可擦除可编程 ROM (EPROM) 在每个器件上具有近 10 亿个工作存储位,在活动状态下功耗小于 1 瓦,且成本仅为几美元。要使任何新技术达到这一点都需要大量资金。
更糟糕的是,设计人员已经变得聪明起来,他们可以使用几个器件使系统看起来像拥有性能更好的器件。例如,快速静态 RAM (SRAM) 缓存主要隐藏了 DRAM 速度慢的事实。事实上,它们隐藏得非常好,以至于大多数人不会花费额外的金钱/功耗来获得更快的 DRAM。同样,您可以使用 SRAM 和 EPROM 来获得一个看起来像具有非易失性 SRAM 的系统。因此,请密切关注新的存储技术,但不要指望这种新技术能够立即解决您的所有问题。
显然,在未来,我们将拥有可以配置为执行多种不同功能的芯片。但与许多项目一样,构建硬件是问题中较容易的部分。我们知道如何构建这些芯片,其重构可以在门级 (FPGA)、指令级(芯片级多处理器)以及两者之间的任何级别执行。不幸的是,对这些芯片进行编程以产生高效的解决方案仍然没有解决,而正是这个“软件”问题的解决方案最终将选择未来的芯片组织形式。
Q
1. VLIW 指令是编译器能够静态调度许多并行执行单元在每个周期并发运行的结果。这种方法比当今 CPU 的超标量、乱序处理器架构简单得多,后者试图在硬件中动态提取并行调度。
最初发表于 Queue 第 1 卷,第 7 期—
在 数字图书馆 中评论这篇文章
迈克尔·马蒂奥利 - 客户端计算硬件中的 FPGA
FPGA(现场可编程门阵列)具有非凡的通用性。它们广泛应用于各种应用和行业,在这些应用和行业中,使用 ASIC(专用集成电路)的经济可行性较低。尽管设计人员在将 FPGA 集成到设备时面临面积、成本和功耗方面的挑战,但它们提供了显着的安全性和性能优势。其中许多优势可以在客户端计算硬件(如笔记本电脑、平板电脑和智能手机)中实现。
克里斯托夫·拉梅特 - NUMA(非一致性内存访问):概述
NUMA(非一致性内存访问)是一种现象,即处理器地址空间中不同位置的内存具有不同的性能特征。在当前的处理器速度下,从处理器到内存的信号路径长度起着重要作用。增加信号路径长度不仅会增加内存延迟,而且如果信号路径由多个处理器共享,则很快会成为吞吐量瓶颈。内存的性能差异首先在大型系统中变得明显,在这些系统中,数据路径跨越主板或机箱。这些系统需要修改后的具有 NUMA 支持的操作系统内核,该内核明确理解系统内存的拓扑属性(例如内存区域所在的机箱),以避免过长的信号路径长度。
比尔·徐,马克·索斯尼克-佩雷斯 - 实时 GPU 音频
今天的 CPU 能够为许多流行的应用程序支持实时音频,但一些计算密集型音频应用程序需要硬件加速。本文着眼于一些实时声音合成应用程序,并分享了作者在 GPU(图形处理单元)上实现它们的经验。
大卫·培根,罗德里克·拉巴赫,苏尼尔·舒克拉 - 面向大众的 FPGA 编程
在研究硬件如何影响计算性能时,我们在一端看到了 GPP(通用处理器),在另一端看到了 ASIC(专用集成电路)。处理器具有高度可编程性,但在功耗和性能方面通常效率低下。ASIC 实现专用和固定功能,并提供最佳的功耗和性能特性,但任何功能更改都需要完全(且极其昂贵地)重新设计电路。