引:在此我想讨论一个计算机技术发展的话题,那就是NUMA(Non-Uniform Memory Access)。对于很多人而言,可能从没有听说过NUMA,甚至会以为我在编造什么新概念。事实上,计算机处理器多内核多线程技术的发展已经宣布NUMA时代即将到来。
目前,处理器速度越来越快,内存工业的发展却相对滞后,处理器性能已经被内存性能拖了后腿。要改善这一状况,根本性的办法当然是采用与处理器性能相匹配的新型内存,然而出于成本考虑,这种方案已经被产业规律否定过一次了,Rambus以失败告终。
现在处理器性能提升的速度仍然比内存性能提升速度快得多,差距越来越大,如何是好?引入多通道内存技术,通俗讲就好比把公路的单车道拓展为双车道、四车道。最早在x86服务器上引入多通道内存技术的是ServerWorks,现在英特尔已经把双通道内存访问技术普遍应用于单处理器的PC机。2006年,一种标准化的多通道内存访问技术将诞生,那就是FB-DIMM技术,开始阶段将用于中高端服务器。
然而,多通道技术只能解决内存和处理器之间性能差距的一个方面——带宽问题,另一个方面——延迟问题并不能解决。要想降低延迟,就要把公路缩短,实现方法就是把内存控制器集成到处理器中。Alpha EV7、Power 5、Opteron、Crusoe等处理器都已经这样做了。
把内存控制器集成到处理器中并不复杂,复杂的是,在多处理器的服务器和工作站上,不同处理器分别控制自己连接的内存,如何保证所有内存是一致的。这就仿佛公路多了,必须在交叉路口设计一种交通管理办法,比如红路灯或者立交桥。集成到处理器中的内存控制器需要一种控制机制,保证不同处理器连接的内存数据是一致的,这就是NUMA。
很多使用高端服务器的用户都知道,NUMA是一个历史悠久的技术概念,称之为“非一致性内存访问”。对应的,理所当然还有一个概念,就是UMA“一致性内存访问”,只不过后一个概念更多地被描述为大家所熟知的SMP“对称多处理”。这两种技术都用于多处理器的服务器和工作站,保证不同处理器通过内存访问的数据具有一致性。
UMA方式下,所有的处理器通过惟一的内存控制器访问内存系统,内存的一致性容易维护,因此成本低廉。然而,一旦处理器数量增多,通过单一的内存控制器共享访问内存,就会形成瓶颈。这就仿佛路口交汇的公路多了,红绿灯机制就变得效率低下一样。
随着处理器多内核多线程技术的发展,对于内存子系统而言,每一个内核、每一个线程都等同一个处理器,这就仿佛是越来越多的公路要进行交汇,UMA方式的内存管理办法注定要被淘汰。
在业界早期关于UMA和NUMA的争论中,普遍认为4路以下UMA内存管理方式具有优势,16路以上NUMA方式具有优势,8路的情况下各有利弊。
目前一颗双内核的Xeon就会产生4个线程,对于内存系统相当于4路处理器进行访问,UMA技术上有存在的合理性。2006年底至2007年,4内核的Xeon就将诞生,配以超线程技术,双插槽Xeon服务器的内存系统就将面临和以前16路处理器相同的内存访问压力。中高端4插槽和8插槽的处理器呢?结论很显然,UMA内存访问方式必将被淘汰,NUMA方式的内存管理技术将成为服务器市场的主流。
从更长远的发展看,一个处理器内部如果集成了4~8个内核,那么处理器内部只集成单一的内存控制器也是不够的,多个内核和线程争抢内存控制器的问题依然存在。那么,在单一处理器内部集成两个内存控制器,在处理器内部实现NUMA,也并非没有可能。当然,这是几年以后才应该讨论的话题。
其实,现实世界中还在坚持UMA内存管理方式的主要厂商目前只有英特尔。英特尔在内存管理方面的技术路线是保守的,早在2002年我就提出过这一观点。现在很多事实表明,英特尔这一技术路线必将改变。
NUMA时代即将到来!
|