在底层应用环境中有许多加速处理过程的方法。这些方法应用在FPGA和数字信号处理器(DSPs)和微处理器设计中。 这些技术可以在高级应用环境中得到复用,在高级应用环境中会有许多处理器一起工作来完成雷达或传感器的数据处理。这些加速技术包括并行计算和流水线技术。 流水线和并行计算
流水线技术在计算机和雷达数据处理技术的早期就已经用来提高算法的数据吞吐率。这项技术允许较长的等待期(得到第一个结果所消耗的时间)来得到更好的运算吞吐率。 流水线技术有使用并行计算来提高速度的潜力,但这并不是真正的并行计算。例如,一个整数乘法可以将40ns的等待期分成八个5ns的阶段,但是每一个5ns周期会产生一对新的操作数和新的结果。 应用流水线技术有三个简单的前提: 1. 需要执行的操作可以分成多个小的步骤来执行,每个步骤执行起来比整体执行时要快。 2. 执行的操作预计将持续执行很多次。 3. 等待期冗余的时钟周期不会带来任何问题。 现在,应用处理器有许多创建模块的方法。选择哪一个将取决于应用场景的需要、方法的成本和收益。
全定制IC电路设计
这中处理器具有最高性能、最低功率和尺寸最小的优点。然而,在最新的CMOS技术中,实现具有最高可用性能的大型定制集成电路设计的设计成本非常高,并且只在每年的需求达到百万级,或者当没有其他数字逻辑电路可以提供足够的速度或性能时才会使用。
ULAs,ASICs和门阵列
20世纪70年代末开发了一种创建半定制化集成电路的方法,该方法允许设计人员以集成电路的形式实现他们的处理电路,而不用负担定制电路的全部一次性成本。 这些半定制电路的初始版本基于不约束的逻辑阵列(ULAs)。在这些设备中,晶体管或门电路分散预置在晶片上并存储起来。设计者创建他们自己的电路,然后将需要的门电路用金属连起来。专门有一金属层连接预置的晶体管和门电路来产生需要的电路。
随着时间的推移,基阵(预金属化)中的电路范围从简单的门增加到包括更复杂的设备,如算术单元和小内存。根据细节特点,这些也被称为专用集成电路或门电路阵列。这些设备的一次性工程成本虽然依旧比较高,但是已经是全定制设计的十分之一。 FPGA
定制处理电路发展的下一个阶段是电可编程和可擦门阵列。这些设备没有使用昂贵的掩模组实现电路互连,而是使用存储在设备内存中的编程来实现可编程内部连接。这种设备的可重复编程允许现场重新编程电路。因此,这些设备被称为FPGAs。 随着CMOS电路的小型化,用于定制或半定制集成电路的掩模组的成本从20世纪90年代初的10万美元增加到今天的数百万美元。这增加了FPGAs在需求量不大的设备中的应用优势。 FPGAs提供了许多与定制集成电路设计相同的优势。利用FPGA结构具有硬件并行性,设计人员可以实现快速整数处理,这可以应付实时性强,高速数据数据流应用。例如,如果数字化的雷达数据流在接收的时候就需要进行处理,那么FPGA是除了专用集成电路和定制化集成电路之外唯一的低延迟解决方案。
FPGA优势还包括非经常性工程成本低,另外FPGA供应商会提供许多有用的IP或复杂的电路模块,并且可以以较低的成本对设计进行修改。FPGA还可以在设计中包含嵌入式处理器。 FPGA的劣势是进行整数运算时比同代技术的微处理器或DSP(现在是28纳米技术)会慢5倍,而进行单精度浮点数运算时会慢十倍。 由于晶体管的数量决定了可编程的路径资源,并且有些电路单元无论是否需要,都需要进行大量的重复。 因此,FPGA的效率可能比定制化集成电路的效率要低,FPGA的门电路是后者的大概十倍或者更高,这也可以从单元成本和功率消耗上反映出来。 DSP
DSPs提供了一种介于FPGA和微处理器应用之间的选择,它可以提供时钟速率媲美于微处理器的多核整数和浮点数运算能力。DSPs通常提供支持多维矩阵寻址,收集/分散操作,指令和数据分别存储的SIMD运算器和地址产生器。 这些部件再加上DMA技术使DSPs可以达到很高的周期操作数。为了实现高性能,DSP设备需要进行细致的编程和优化。虽然有专用优化的编译器可以使用,仍然需要使用设备仿真器来检查和提高每一步操作的正确性和性能。 DSP设备上的软件价值通常比微处理器上的要高,并且代码通常不能移植。DSPs的另一个优势是他们相对于多核微处理器和FPGA来说,有低功耗解决方案。 嵌入式处理器。这些微处理器被嵌入到其他集成电路中以提供可编程性。有32位和64位版本可用,并且支持多核和SIMD加速。嵌入式处理器在移动电话、平板电脑和大多数家庭娱乐设备中应用最为广泛。 仅在2012年,arm嵌入式处理器内核的出货量就超过了80亿。嵌入式处理器可以采用多核制式,本文写作时最多可达8核。这些设备的性能还不到高端、多核、通用微处理器的十分之一,但是其功耗只有后者的2%。它们目前最有前途的应用场景之一是在FPGAs和DSP处理器中使用嵌入式处理器,使这两种解决方案具备方便的高级编程语言接口。 微处理器
现代微处理器设备具有多个相同的微处理核心,这些微处理核心可以有独立的或者共享的高速缓存。笔者完成文章的时候,已经有了12核心的设备,而且处理器的核心数在将来还会增长。为了支持这些核心的工作,芯片的很大一部分区域都被高速缓存所占用,而且随着核心数的增长,高速缓存占据芯片面积的百分比也会增长。 每个处理器核心都有多个逻辑运算单元,包括可以提供信号处理能力和弹性雷达信号处理能力的单指令多数据流协处理器。优化的和矢量化的编译器可以使这些设备充分发挥性能。最好的信号处理性能通常是通过高度人工优化的矢量信号处理函数库来得到的。 然而,由于操作系统的高速缓存管理,以及微处理器操作系统的多线程特征,很难保证设备的强实时性需求。另外,为了保持最好的性能,数据必须保存在高速缓存中,这使得信号处理对数据量特别敏感。现在这代设备的另一个问题是热耗散问题,这也限制了处理器的性能或者需要液体冷却系统。 GPU
图形处理单元(GPU)是单个集成电路执行大规模并行处理的应用实例。它可以有几十万个逻辑运算单元并行运行,在底层可以看成单指令多数据流,而在上层就可以看成多指令多数据流设备。 事实上,具有支持多线程计算的软件和硬件是区分GPU编程与单核或多核处理器编程的主要特点。如今,大多数多核心处理器的单个核心都支持两个硬件支持的线程同时运行(超线程技术),而且在写作本文时,最先进的GPU已经能支持超过1,6000个线程。 图所示为具有8个组件的GPU的框图,每个组件有两个流处理器,每个流处理器有八个单元。现在GPUs仍需要X86系列CPU作为主机。 如果GPU可以维持它的流处理单元的高利用率,那么它的性能将超过多核心处理器的10倍到100倍。为了实现这一目标,求解问题必须高度并行化,GPU通用内存数据的访问必须允许大量的连续数据传输,并且与主处理器的交联时间保持最小。GPU的缺点是耗电量大,有时会达到大型微处理器的2到3倍。
|