内存很慢
计算机的主内存相对于它内部的逻辑门和寄存器来说非常慢。将电子从微处理器芯片中注入
相对广阔的一块铜制电路板上的电路,然后将其沿着电路推到几厘米外的内存芯片中,这个
过程所花费的时间为电子穿越微处理器内各个独立的微距晶体管所需时间的数千倍。主内存
太慢,所以桌面级处理器在从主内存中读取一个数据字的时间内,可以执行数百条指令。
优化的根据在于处理器访问内存的开销远比其他开销大,包括执行指令的开销。
冯 • 诺伊曼瓶颈
通往主内存的接口是限制执行速度的瓶颈。这个瓶颈甚至有一个名字,叫冯 • 诺伊曼
瓶颈。它是以著名的计算机体系结构先锋和数学家约翰 • 冯 • 诺伊曼(1903—1957)的
名字命名的。
例如,一台使用主频为 1000MHz 的 DDR2 内存设备的个人计算机(几年前典型的计
算机,容易计算其性能),其理论带宽是每秒 20 亿字,也就是每字 500 皮秒(ps)。但
这并不意味着这台计算机每 500 皮秒就可以读或写一个随机的数据字。
首先,只有顺序访问才能在一个周期内完成(相当于频率为 1000MHz 的时钟的半个时
标)。而访问一个非连续的位置则会花费 6 至 10 个周期。
多个活动会争夺对内存总线的访问。处理器会不断地读取包含下一条需要执行的指
令的内存。高速缓存控制器会将数据内存块保存至高速缓存中,刷新已写的缓存行。
DRAM 控制器还会“偷用”周期刷新内存中的动态 RAM 基本存储单元的电荷。多核
处理器的核心数量足以确保内存总线的通信数据量是饱和的。数据从主内存读取至某
个核心的实际速率大概是每字 20 至 80 纳秒(ns)。
根据摩尔定律,每年处理器核心的数量都会增加。但是这也无法让连接主内存的接口
变快。因此,未来核心数量成倍地增加,对性能的改善效果却是递减的。这些核心只
能等待访问内存的机会。上述对性能的隐式限制被称为内存墙(memory wall)。