理论探讨:聚焦线程级并行设计(二)


多内核架构的替代方案

所有用于商业服务器的主要处理器都已经采用了多内核(和多线程)技术,或者将很快采用这种技术。多内核芯片市场目前仅存的几家公司是AMD(x86)、IBM(POWER处理器和大型计算机)、英特尔(x86和安腾处理器)和Sun(UltraSPARC处理器)。还有一些专业厂商。但是,要得到有关他们的设计的准确信息几乎是不可能的。其它公司似乎只是对现有的处理器设计做一些逐步改进,而不是做崭新的设计。

那么,除了上述四家公司之外,其它公司在通用服务器方面还有机会吗?有替代目前的工业标准架构的多内核和多线程版本的其它设计方向吗?我认为,简短的答案是非常确定的“没有”。即使主要OEM厂商和独立软件经销商在支持英特尔安腾芯片方面明显遇到了困难,其它厂商是否有机会也是值得怀疑的。

因此,虽然这里有很多有趣的“替代的”设计,但是我认为,它们并不值得在这里讨论。多内核设计有许多可能的变化和发展方向。

多核心台式电脑处理器

由于AMD和英特尔在台式电脑和便携式电脑市场展开竞争,这两家公司谁也不能降低单线程芯片的性能和价格。此外,大多数PC软件厂商从多处理器(或者多内核)设计中没有得到什么好处。出于同样的原因,超线程总的来说也没有给桌面应用程序带来好处。例如,从TLP设计中受益的游戏程序很少。虽然Photoshop软件和视频编码从中受益了,但是,这些应用程序更像是工作站的任务,而不是大众市场的任务。双内核芯片对于消费者或者企业桌面电脑而言都是一种硬性推销。我对某些充满信心的预测感到意外。这些预测称,双内核处理器将在几年内成为这些市场的主流(尽管不会占统治地位)。

在不增加处理器主频的前题下,增加第二个CPU内核来说将显著增加生产成本和耗电量。而如果以更快的速度运行一个更大的芯片则更加困难。因此,双内核芯片运行的时钟速度将低于同等速度的单内核芯片。从根本上说,制作一个多内核芯片,你将损害单线程性能、同时承担更高的价格和耗电量。虽然双内核芯片具有完成工作站式的任务的优点,但是,双内核处理器在台式电脑领域还很难成为主流。尽管双内核处理器对于一小部分需要强大计算功能的用户和爱好者是非常有用的,但是,这似乎仍然难以证明双内核处理器在台式电脑中的应用是合理的。最低限度的额外成本肯定要使双内核芯片无法进入低端市场。

对于软件优化,我们遇到了一个传统的先有鸡还是先有蛋的问题:对于客户端软件来说,独立软件开发商没有必要花费更大的精力让软件从基于多内核处理器(或多线程)的系统中受益,因为需要的用户很少。同时又由于得不到多内核处理器的好处,用户将很少购买多内核系统。最容易从多内核处理器系统中受益的是游戏市场,因为很多游戏将重新开发,使这些游戏从一开始就很容易增加多线程功能。游戏对于计算能力的需求是无止境的,因此,游戏非常适用于做成多线程的游戏。然而,现代的游戏引擎仍需要很长的开发时间。

SMT(同步多重执行功能)能够稍微提高多线程的性能,并且可能在几年之内成为主流。但是,这种技术对于台式电脑和便携式电脑用户的益处很小。不过,从长远来看,这将缓慢地鼓励独立软件经销商制作更多的多线程软件,使双内核芯片更加有用。

然而,对于处理器公司来说还有一个基本的问题:要销售单个线程性能低于单内核芯片设计的价格昂贵的多内核处理器是很困难的。我认为,正在为台式电脑生产双内核芯片的CPU厂商肯定是受到了生产服务器双内核芯片的影响。这些公司将用更多的时间试验这个市场。我预计,在未来的很多年里,厂商将积极地试验这个市场。但是,在本十年内,双内核桌面处理器还不会成为主流。

不过,索尼是一家值得关注的公司。索尼的PS3游戏机肯定需要先进的并行编程,以便最大限度地提高性能。但是,随着高清晰度电视机的大量出货、市场普及率的提高和高清晰度电视应用的日益增长,索尼很可能把PS3游戏机升级为一种消费者台式电脑。他们将为最常用的应用程序量身订做“足够好”的消费者软件,并且从另一个角度推动家庭娱乐市场的融合。这是一种与PC完全不同的销售和市场营销模式,较低的价格和简单性对消费者是最有吸引力的。

从单内核走向双内核设计需要做出的的多种选择

一家处理器设计公司要根据当前的单内核处理器制作双内核版本的处理器可以有多种选择。让我们考虑一下主要的考虑因素。

最重要的选择之一是功率预算。如果一个单内核芯片在以2.5GHz的速度运行时耗电量为100瓦,由于耗电量主要来自于CPU内核,双内核芯片的耗电量可能会提高一倍。一个200瓦的芯片要进行冷却是很昂贵的。因此,这不能作为升级的选择。也许把耗电量仅增加到120至130瓦还是一种选择。当然,功率预算越小,采用的时钟速度就会越低。

保持较低的功率预算的另一个理由是,目前配置2个处理器的1U服务器对于许多数据中心来说实际上都太热了。增加功率预算就会提高用户选择时钟速度较低的服务器或者刀片式服务器的机会。对于用户来说,热密度正在成为一个日益严重的问题。

不过,设计者可以调整双内核处理器的设计,通过降低双内核处理器的最大运行速度使双内核处理器更省电。降低处理器的时钟速度意味着将采用不太激进的和更省电的晶体管设计。换句话说,由于这些设计的改变,在时钟速度和电压相同的情况下,一个单内核CPU的内核耗电量可能会稍微高于双内核芯片中的一个CPU内核的耗电量。

缓存采取什么设计也是非常重要的。一级缓存从来不允许不同的内核共享,因为那需要大量修改设计,不值得。但是,共享更高一级的缓存如何呢?对于服务器程序来说,共享4MB的二级缓存肯定比每个内核都配置2MB的二级缓存更有利,因为在大多数情况下,这两个内核都会共享大量的有用的数据(和程序)。单线程程序也会从大容量缓存中受益。共享缓存的不利因素是可能轻微地影响最小延迟时间。此外,随着两个内核共享较小的缓存,缓存的共享部分很可能会出现冲突。对于共享问题的简短答案是,你拥有的缓存越多,共享缓存就越好。

IBM的POWER4和POWER5处理器共享芯片上的二级缓存(1.5至2MB),多内核处理器能够共享庞大的三级缓存。Sun的第一款UltraSPARC IV处理器的设计已经把外部的二级缓存分开了(每个内核8MB)。但是,第二代的这种处理器在芯片上有2MB的二级缓存以及一个在芯片之外共享的32MB三级缓存。Sun的“Gemini”处理器有两个分开的0.5MB的二级缓存,每个内核一个缓存。

AMD计划在2005年晚些时候推出的双内核Opterons处理器中每个内核配置一个1MB的二级缓存。我认为,那是缓存的最大极限了,超过2MB的缓存就应该分开。对于英特尔双内核的安腾处理器,二级缓存和三级缓存都是不可以共享的。虽然这看起来有些浪费,但是,为此进行额外的设计也许不值得。英特尔的双内核Xeons处理器是个什么样子目前还不清楚。也许这种处理器的任何缓存也都不能共享。

TLP如何影响服务器的竞争

到目前为止,IBM是惟一一家从双内核处理器中受益最大的公司,因为IBM出货双内核处理器已经有很长时间了。几年之内,市场上销售的大多数服务器处理器都将是双内核(或更多内核)和64位的处理器。从厂商的市场份额来看,这个影响并不大,因为如果每一家厂商都以同样的速度改善产品,所以厂商的竞争地位就不会发生太大的变化。

另一方面,多内核处理器和多线程内核将以更快的速度提高实际性能。这将导致每个服务器配置的处理器的平均数量下降:很多客户将购买双/多内核的单处理器的服务器,而不是购买双处理器的服务器;购买配置两个双/多内核处理器的服务器,而不是购买配置4个单内核处理器的服务器,以此类推。这将使整个高端服务器市场的价格降下来,更接近x86服务器领域。随着AMD和英特尔的x86处理器采用64位技术,这对多内核处理器更有帮助。

对于安腾、POWER和SPARC处理器的设计者来说,开发成本将会减少。比较简单的内核意味着设计工作量的减少,以及测试和生产更简单。这种设计方式在被全新的设计方式取代之前可能会持续较长的时间。最后,多内核芯片在生产方面的不利因素很少,因为多内核芯片在台式电脑领域用处不大,所以英特尔和AMD不会像以前那样利用它们在台式电脑芯片设计和产量上的优势。

英特尔好像仍将对未来的安腾处理器采用通用的设计。但是,AMD和Sun似乎更愿意进行“仅用于服务器”的芯片设计。这并不意味着这些厂商将放弃工作站市场,或者追求最低限度的单线程功能,而是为了减少对设计更好的工作站、台式电脑或者便携式电脑的处理器的担心。由于IBM和Sun对处理器和服务器的设计是同时进行的,这将包括它们系统设计的主要变化。英特尔未来将协调安腾和x86服务器系统的设计,使这两种产品线的插座兼容。不过,英特尔新的首席执行官似乎并不急于改变他们工作的优先次序。

虽然多内核处理器向低端市场的扩张对于x86服务器是有帮助的,但是,这将使IBM和Sun更容易地生产出具有更高的性价比和竞争力的低端服务器,因为产量低,这些产品的设计成本非常高。对于Sun来说,制作Niagara处理器好像一直是没有实际意义的,因为一个更简单的CUP内核的开发成本更低,更容易投放市场。Sun似乎要专门为Niagara芯片增加更高的性能与耗电量的比例,以便获得额外的优势。在许多数据中心,1U服务器的耗电量正成为一个严重的问题。

(未完待续)


相关内容