原文地址:http://www.ed-china.com/ART_8800045174_400004_500008_OT_8f4eb612.HTM
多核处理器是当今计算领域的主导,而多核芯片则遍布从苹果的iPad到富士通K超级计算机的各种平台。2005年,由于功耗将单核CPU的时钟速度限制在3GHz,英特尔推出了双核的酷睿(Core 2 Duo)处理器。从那时起,多核CPU和图形处理单元(GPU)就主导了计算机架构。在每个插槽上集成更多内核便成为处理器继续拓展摩尔定律的方式。
在迈向多核的道路中出现了一件有趣的事情:对处理器的利用率开始降低。初看来,英特尔Sandy Bridge服务器有8个3GHz内核,Nvidia Fermi GPU有512个浮点运算引擎,似乎能线性地发挥多核的优势。
但超级计算领域出现了令人担忧的趋势:为大型数据应用部署数千个多核CPU和GPU插槽预示着多核有严重的问题。根据每秒百万个浮点操作(Mflops)峰值的比例,当今的超级计算机的利用率还不到10%。原因很简单:输入-输出(I/O)并没有随着多核的每秒百万条指令(MIPS)同步发展。
内存体系和内存墙
早在80年代,“内存墙”的说法就已经出现了,用于描述CPU时钟速度和芯片外内存和硬盘I/O速度差距。一个有关GPU的例子就能说明内存墙的问题。
2005年,当时领先的GPU有192个浮点运算内核,而今天的领先GPU则有512个浮点运算内核。这六年间,主要的GPU的I/O管道(I/O pipe)却没有变。6年前的GPU采用16显得PCI Express Gen2接口,今天的GPU也是如此。结果造成从2005年以来,GPU每个内核的I/O速率就以2.7倍速度降低。
片上缓存的速度是片外DRAM的10倍至100倍,这本应该解决内存墙的问题。但缓存也有自身问题,ARM架构应用处理器的L1和L2缓存占据了一半以上的硅片空间。所以缓存,而非计算部分消耗了相当比例的处理能力。
缓存控制算法和应用密切相关:有时缓存包含了应用所需的数据,有时不包含。与其让缓存控制算法进行有根据的猜测,决定数据的存储位置,还不如优化缓存利用率,降低缓存功耗,如果程序员可以控制缓存和片外存储数据交换的话。
当今的内存架构包括四类:DRAM、Flash闪存和硬盘。主流的DDR3内存运行速度为4Gb/s,flash闪存速度为500Mb/s, 硬盘仅有100Mb/s的数据传输速度。
如果不使用片上缓存,就面临着带宽降低、延迟增加的情况,这会进一步降低内存的有效速度。只有在应用呈现良好数据分布,或者在重用的时候才能达到超过20Gb/s的缓存带宽。如果没有数据的局部性,缓存就不会降低内存的瓶颈。
超级计算之前将计算密集型应用和I/O密集型应用分开,武断地划分出了“每条指令不会有多于一个的存储器操作数”(one operand per instruction)的临界值。如果一个应用中每条指令需要多于1个存储器操作,就会被视为I/O密集型,如果少于1个操作,就视其为计算密集型。
推出多核、单指令流多数据流(SIMD)和多媒体加速器等特性,CPU和GPU的计算能力早已超过了I/O速率。计算能力的进步让多核应用成为I/O密集型应用,使得超级计算能力的利用率低于前文所述的10%。
架构方案
计算机架构师改进了动态内存存取(DMA)技术以降低I/O瓶颈。通常通过硬件来支持DMA,让内存读取操作和CPU、GPU的操作同步进行。
硬件DMA技术的例子包括英特尔 的I/O加速技术(I/OAT),Nvidia的GPUdirect和ARM的AMBA DMA引擎。最近,Nvidia为其CUDA工具箱增加了CudaDMA软件,借助CudaDMA,应用线程可以从计算中独立出来进行I/O操作。类似地,超级计算应用也开始采用专门的多核处理器内核进行I/O(DMA)操作。
最终,企业级软件公司如Google Sawzall和ApacheHadoop都正在部署新的并行计算模式如Map/Reduce(MR)。讽刺的是Map和Reduce通过磁盘文件交换中间数据,而磁盘文件是存储速度最慢的架构。MR和Hadoop线程只在包含大量数据输入或中间输出文件的磁盘或者磁盘附近执行操作。
不同于建构传统包含三个分工明确但昂贵的子系统(一个存储服务器、一个计算服务器和连接二者的高速互联系统)的超级计算机,MR和Hadoop从头颠覆了传统的超级计算,而是运行在本地的分布式数据上。原因很简单:数据迁移而非计算才是超级计算最耗能的部分。
移动“更小的”数据集
为了在更接近存储输入数据集的硬盘的地方进行计算,一些研究人员(包括我)正在开拓新方法以减少用于超级计算和多核处理的数据集的量。来自气象建模、多个物理实验、基因序列和地震处理等“大型数据”通常都以数TB计,因此数据量减少2倍或者4倍对于这类数据结构来说,将带来非常显著的经济效益。
从医学影像、无线基础设施的数据压缩结果来看, 真实世界的X光的数据集,超声波反射和3G/4G无线信号可以在不改变最终结果的情况下被压缩。类似的技术正在用于为包括浮点值等更广泛的数据类型降低多核内存墙。
总之,革新的DMA技术、新的编程模式和创新的数据压缩技术可能会显著降低多核内存墙,让多核用户能够更快速地得到结果。
作者:Al Wegener,Samplify System CTO兼创始人,拥有巴克内尔大学EE学士学位和斯坦福大学计算机硕士学位。