电脑/软件/周边产品 |
|
| 按行业筛选 |
|
|
| 按产品筛选 |
|
|
| |
查看本类全部文章 |
| |
|
|
|
服务器CPU设计趋势:回归简约与TLP |
|
newmaker |
|
这篇文章主要介绍关于处理器未来发展趋势的一些基本概念,这个趋势看起来正变得越来越明显,这个趋势就是线程级并行处理(TLP/Thread Level Parallelism)技术来使多线程应用更高效。
向许多其它工业一样,计算机工业也有很多概念在流行与过时之间反复循环--强大还是简单,巨型机还是集群,肥客户端还是瘦客户端,特写用途还是通用目的,革命还是演化……,对处理器设计而言,80年代以来的一个主要发展趋势就是RISC风格的设计,这种设计风格让人们使用更简单的指令集从而简化核心设计进而带来更高的执行效率。这是KISS(Keep It Simple Stupid)原则的一个典型实例,虽然实际上并非所有有的RISC处理器都那么简单。到了90年代,处理器设计的焦点开始移向了指令并行处理(ILP/Instruction Level Parallelism)与时钟频率上,处理器变得复杂多了。这篇文章主要介绍关于处理器未来发展趋势的一些基本概念,这个趋势看起来正变得越来越明显,这个趋势就是线程级并行处理(TLP/Thread Level Parallelism)技术来使多线程应用更高效。
使用多线程来提高性能
目前,多处理器的工作站与服务器已经很普遍了,很年这些机型的销售都达到数百万台,随英特尔推出的超线程技术,多处理器技术也开始普及在桌面上,一些追求运算速度的应用对单一的处理器而言常常不容易达到要求,通过把处理扩展到多颗处理器上,可以提高处理效率。编写采用多处理技术的程序会有一些额外的复杂性,但这不是个大问题,除非使用多处理器技术带来的性能优势不足以抵偿这个开销。
事实上,很少有关键性应用不支持多线程处理的,如果它不支持多线程,有可能是因为过于高昂的开发代价或者是市场上没有支持的硬件。例如,桌面2D或3D图形处理硬件大多数是单线程的或对于主要的处理使用单线程。而高端SGI图形处理系统则使用上百颗处理器,3D处理软件常常是高可并行性的并且也可以用于桌面图形系统上,不过目前大多数桌面系统都仅有一颗处理器。不过索尼的PlayStation 3 游戏控制台将使用多处理器,那意味着这个游戏平台的游戏软件可以获益于多线程处理以取得更好的性能。
多处理器系统已经存在了很长时间,然而通过多个处理器核心来实现多线程的技术则刚出现不久,这种称为芯片多处理(CMP/ Chip Multi-Processing)的技术将多个CPU核心放在一个处理器内,已经在一些关键任务的嵌入式应用中变得很普遍。全有的主要CPU公司都在计划推出CMP产品,通常做法是在现有设计上加入另一个同样的核心,这些产品目前主要针对服务器市场。
这些可能听起来枯燥而简单,不过它涉及到一些深层次的问题,那就是在对处理器核心进行CMP优化时的取舍问题。这也是这篇文章的主要内容。这些优化的最终结果还是KISS--让CPU核心设计再次变得更加简单和有效率。不过和80年代的RISC设计风潮不同,这次不需要处理器指令集的任何改变。
这次的改变涉及到操作系统核心的设计实现,也会影响到编译器的设计和一些涉及到线程的软件,使用CMP技术并且每个核心也支持多线程的处理器会使只有一个处理器的系统支持大量的线程,这些线程被规划得越合理,它们被阻塞的可能性就越小,系统执行效率也将越高。另外还有一些优化工作如对代码片断和特定驱动器的更有效的锁定以使应用对于多线程处理器更加友好。对操作系统而言,现在对于多线程模型的不充分支持是个大问题,而在消费者市场上,多线程技术的硬件实现也需要时间。
减肥与增效
在一些设计CPU发展方向的讨论里,传统的CPU设计常常被相对于采用TLP优化的多个瘦核心被称为“FAT(肥)”,目前仅一个核心的的设计主要面向的单线和性能的优化,而对于提高多线程程序执行效率的考虑则相对次要。面向TLP优化的处理器则正好相反,单线程性能向多线程性能让步,设计的目的是当有多个活跃线程时,最优化线程组的执行效率而不是单一线程的性能。
为了达到这个目标有两个方面值得考虑,一是使用更小的CPU核心,这通常用带来更高的执行效率,二是针对多线程应用对核心内部实行优化,相当也会涉及到缓存和内存系统的优化。因为面向TLP优化的处理器在一定程序上已经是面向特定用途了,他们也许会针对特殊的应用例如高性能计算HPC(比如IBM和SUN的HPC实现)或者网络性能敏感的应用(比如一些嵌入式设计或SUN的Niagara处理器)进行特别的优化,当然通常用途服务器(比如IBM和SUN的主流POWER和UltraSPARC处理器)也可以采用这项技术。
现在,让我们分析一个面向用于处理高负荷工作的服务器的处理器(例如IBM的POWER处理器或Sun的UltraSPARC处理器)在设计时如何处理上面提到的两个方面问题。无论如果处理,假设它们都使用90nm技术,最大能量消耗为130W(其中10W用于缓存和I/O系统),封装尺寸都是300平方毫米,为了简单起见,I/O系统、内存系统与多处理方面暂不考虑,一个传统的“肥”处理器设计和一个经过TLP优化的“瘦”核心的设计图分别如下:一个评论处理器测试性能的简单指标是处理器每秒执行的实际指令数目,但是当处理器的使用的指令集不同时,这个标准不便于进行比较。另一个比较方法是比较平均与个处理器周期执行的指令数(IPC)与处理器周期频率,以G赫兹做为单位,就是BIPS,它等于平均IPC×主频,BIPS也即每秒十亿条指令的含义。实际测试中平均每个时钟周期执行指令数(IPC)总是比CPU可以取得的最大可并行执行指令数(Instruction Level Parallelism/ILP)要小,运行最新处理器使用最新服务器测试程序得到的结果是很少有IPC大于1.0的情况,如果使用Xeon处理器,这个值很少大于0.5,这比可能达到的理论值小多了,如果使用的软硬件未经过优化,这种情况还会更糟。
使用一个3GHz 6路核心,肥处理器可以达到峰值18BIPS的处理能力,然而对于单线程的程序而言,然难达到高于1.5IPC的执行速度,那么它的处理能力仅为4.5BIPS,对于可以利用多线程的服务器程序而言,可以达到2.0IPC,从而把处理能力提高到6BIPS。而假如使用八个1.5GHz的三路经TLP优化的核心峰值处理能力将达到36BIPS,如果实际对于单线程系统达到1.0IPC对服务器多线程程序达到2.0IPC,它将为单线程程序提供2BIPS和为多线程程序带来24BIPS的处理能力,四倍的对于多线程程序的性能提升是我们这样做的原因。至于为什么这些“瘦”核心可以在减小体积和能耗的情况下带来更高的速度,这是我们在以后的内容中讨论的问题。(end)
|
|
文章内容仅供参考
(投稿)
(如果您是本文作者,请点击此处)
(3/21/2005) |
对 电脑/软件/周边产品 有何见解?请到 电脑/软件/周边产品论坛 畅所欲言吧!
|