标题：内存墙
什么是“内存墙”
内存墙，指的是内存性能严重限制CPU性能发挥的现象。 提到系统的性能瓶颈，也许大家最先想到的是硬盘，但你知道内存同样也是系统中的性能“短板”吗？由于处理器厂商与内存厂商相互分离的产业格局，导致了内存技术与处理器技术发展的不同步。在过去的20多年中，处理器的性能以每年大约55%速度快速提升，而内存性能的提升速度则只有每年10%左右。长期累积下来，不均衡的发展速度造成了当前内存的存取速度严重滞后于处理器的计算速度，内存瓶颈导致高性能处理器难以发挥出应有的功效，这对日益增长的高性能计算(High Performance Computing,HPC)形成了极大的制约。事实上，早在1994年就有科学家分析和预测了这一问题，并将这种严重阻碍处理器性能发挥的内存瓶颈命名为"内存墙"(Memory Wall)。
“内存墙”问题日趋严重
当处理器厂商意识到单纯依靠提高处理器频率并不能持续提升计算性能时，便把目光转向了利用多核心并行计算技术来提升计算性能，同时也希望该技术能缓解内存瓶颈。         但处理器核心越多，性能就越高吗？实际情况并没有那么简单，除了如何有效地给多核心分配任务这一难题之外(核心越多，任务分配的难度越大)，多核心并行计算还遭遇到了更为严重的“内存墙”问题。这是因为在高度并行的处理方式下，多核心共享有限的内存带宽将会造成更大的延迟，就好像一条高速公路只有4条道，却有4辆以上的车要并列行驶，当然会造成道路拥堵、行驶缓慢了。
美国桑迪亚国家实验室(Sandia National Laboratories，SNL)所进行的一项多核处理器性能仿真测试也正好验证了上述问题，SNL研究人员在一篇题为《多核对超级计算机是一个坏消息》的文章中指出：在信息科学领域，更多核心的处理器并不一定会带来更高的处理性能。SNL的仿真测试结果表明：由于“内存墙”的制约，超过8核心之后，处理器性能几乎没有提升，而16核处理器的性能甚至不升反降。由此可见，随着处理器核心的不断增多、处理性能的不断提升，“内存墙”产生的瓶颈效应对基于多核处理器的高性能计算的制约将日趋严重。
解决“内存墙”问题的途径
内存的性能指标主要有“带宽”(Bandwidth)和“等待时间”(Latency)，从这两项指标的基本概念出发，更便于我们理解与“内存墙”问题相关的技术发展。1.内存带宽及其提升技术内存带宽(Bandwidth)指内存在单位时间内通过总线传输的数据量，可以用公式“内存带宽=(传输倍率×总线位宽×工作频率)÷8”进行计算，单位为“字节/秒”(Byte/s)。总线位宽指内存数据总线的位数，工作频率也就是内存的时钟频率，传输倍率是指每条内存数据线在一个时钟脉冲周期内传输数据的次数。显然，提高内存带宽的基本方法当就是公式中决定内存带宽的三个因素，即总线位宽、工作频率和传输倍率。
提高内存总线位宽：在现有采用独立内存芯片的架构下，进一步增加内存位宽受到了内存芯片数据线引脚数量的限制，所以通过增加位宽来提升内存带宽的方式，需要采用能有效消除这种引脚限制的新型内存架构。例如受到广泛关注的“内存与处理器集成”技术，就具有通过增加内存位宽来明显提升内存带宽的特点。
提高内存工作频率：单纯依靠提高工作频率来提升内存带宽的方法，会受到内存芯片发热量和工艺难度增加等方面的制约，所以采用这种方法进一步提高内存带宽的空间非常有限。
提高内存传输倍率：通过增加传输倍率来提升内存带宽的方法对大家来说更为熟悉。例如DDR内存是双倍数据率(Double Data Rate)，其每条数据线都能够从存储单元预取2位数据，并分别在时钟脉冲的上升沿和下降沿各传输1位数据，即在一个时钟周期的传输倍率为2，在相同频率下DDR内存的数据传输量是SDRAM内存的2倍。同理，DDR2内存、DDR3内存的传输倍率分别为4、8，而Rambus的“百万兆字节带宽”技术则可将传输倍率提高到32，从而大幅度提升内存的带宽。2.内存等待时间及其屏蔽技术内存等待时间(Latency)，即从处理器向内存发出访问请求到内存发出数据所用的时间，一般用“纳秒”(ns)来度量。相对于处理器的高速处理能力而言，内存等待时间显得过长，在现有内存技术还不能从根本上大幅度降低等待时间的情况下，利用高速缓存技术和并行处理技术来尽量降低“内存墙”的影响目前仍然是有效的方法。
内存等待时间屏蔽技术：将处理器可能访问的数据和程序代码预先保存到高速缓存中，尽可能地减少处理器对内存的直接访问，而是从高速的缓存中获取数据，就是一种典型的内存等待时间屏蔽(Latency Hiding)技术。这种基于缓存机制的技术一直是降低“内存墙”影响的常规方法。
硬件支持的并行处理技术：虽然由硬件支持的多线程、乱序执行等并行处理技术并不能直接解决“内存墙”问题，但多线程和乱序执行的并行处理机制，能够更有效地减少在处理任务过程中处理器资源被闲置的情况，当处理器处理大量任务时其“资源不被闲置”所产生的累积效应，就能使吞吐量明显增加，因此整体的处理效率就相应地有所提升，从而在一定程度上屏蔽了“内存墙”的影响。3.更先进的内存与处理器集成技术相比上述单纯降低内存等待时间和提升内存带宽的现有技术，业界还致力于研究更加先进的内存与处理器集成技术。这类技术中最有代表性的就是“在内存中处理”(Processingin Memory，PIM)，其基本思路是将内存与多核处理器集成到同一颗芯片中。此外，“智能随机存取存储器”(Intelligent Random Access Memory，IRAM)和“嵌入式动态随机存储器”(Embedded Dynamic Random Access Memory，EDRAM)技术也是基于将内存与处理器集成的原理。
PIM技术的优势主要体现在两个方面：一是能够有效降低内存等待时间，由于处理器各核心与内存之间的物理距离明显缩短，核心访问内存的等待时间也随之被有效减少，即由原来的芯片间延时变为芯片内延时；二是具有提升内存带宽的潜力，传统的独立式内存架构由于受到内存芯片引脚数目的限制，难以通过采用增加数据线引脚来提高内存的位宽，而PIM技术则能使核心与内存在同一芯片内部建立更宽的数据传输通道，没有引脚的限制，因而更容易通过增加位宽来提升内存带宽。
理论计算表明，PIM技术所具有的这些特点，将有可能使内存的反应时间降低5～10倍，带宽提升50～100倍，能耗降低50%～75%。目前很多厂商都在研发“三维堆叠芯片”(3D Stacking Chip)封装技术，以最终制造出基于3D堆叠的PIM芯片。
例如桑迪亚国家实验室(SNL)研发的X-Caliber处理器，就是将DRAM内存堆叠在多核处理器逻辑电路层上的PIM芯片，其性能可随核心数量的不断增加呈现上升的平稳趋势。不过，3D堆叠芯片封装技术目前面临的一个主要难题是散热问题，还需要在堆叠方式、散热、电源和热管理技术等方面取得进一步的突破。
摆脱“内存墙”围困的远景展望
更多的核心≠更高的性能：由于“内存墙”等问题对多核处理器性能提升形成的严重阻碍，AMD认为单纯依靠增加处理器核心的办法不可行，Intel也表示在现有发展环境下超过16核心不会明显提高性能。对于未来处理器性能的提升，Intel比较关注处理器浮点运算能力的增强，而AMD似乎更倾向于采用基于GPU的流处理技术。由此看来，在多核处理器的“内存墙”等问题还不能从根本上有所突破的情况下，将不大可能继续大幅度增加处理器的核心数量来提升处理性能，而需要另辟蹊径满足日益增长的对高性能计算的需求。        “将一切多重化”的思路：据报道，美国专家Joseph Ashwood设计了一种全新架构的存储系统，其最大特点是能够实现并行存取，存取速度明显高于现在的串行存取方式存储器。由于这种新型存储系统与多核处理器的并行处理机制相适应，故而被称作“多核存储器”。虽然“多核存储器”目前只完成了书面设计，距离实际应用还有很远，但其思路却与一些研究人员提出的“将一切多重化”(Multi-Everything)的理论不谋而合，也许“多线程”、“多核处理器”、“多核内存”等技术的发展轨迹，就是解决“内存墙”问题的一种可能途径。
未来新一代存储技术的发展：开发基于全新架构和新型器件的存储器，从而缩小内存与处理器性能差距应该是解决“内存墙”问题的一种更有效的途径。例如正在发展的“相变存储器”(PCM)、“可编程金属单元存储器”(PMCM)、“磁性随机存取存储器(MRAM)、“铁电随机存取存储器”(FRAM)、“纳米管随机存取存储器”(NRAM)和“记忆电阻”(Memristor)等新型存储技术，其中一些非易失存储器已有望取代目前的闪存。而随着技术的进一步发展，某些新型的高速存储器将有可能最终取代现在的DRAM内存。
各种全新计算机构架的研究：迄今为止的计算机系统架构都是基于冯·诺伊曼的“存储程序原理”，因此根本的解决办法或许是采用非“冯·诺伊曼”的全新计算机架构。例如“数据流机器”(DFM)、“人工神经网络”(ANN)等均摒弃了存储程序的原理，因而不再存在“内存墙”的问题。
总之，我们从计算机技术的发展历程中不难看出，科学家很早就意识到了“内存墙”问题。针对内存带宽和内存等待时间两大基本途径，前者的应对方法是采用提高内存总线位宽和传输倍率的技术；后者是采用多级缓存和预取、多线程和乱序执行等技术；而近期热门的内存与处理器集成技术更彻底地同时优化内存带宽和内存等待时间。不过，人们对更高性能计算的追求是没有止境的，在多核处理器性能越来越强的情况下，人们必须突破“内存墙”的重重阻碍，找到走向更高性能计算的通途。