以上是Nehalem在性能方面的改进,下面我们主要来关注一下Nehalem的功耗设计。
功耗的组成部分与工艺的关系
芯片的功耗主要由两部分组成:动态功耗与静态功耗。动态功耗指的是在芯片在工作时,由于晶体管需要开启-关闭,以及电源网络、传输线上的信号翻转所造成的功耗。静态功耗指得是芯片无论是否工作都要引发的功耗。(详细介绍可以参考:http://www.itocp.com/viewthread.php?tid=16611&highlight=%2Bspinup)。在130nm以前,芯片的功耗主要是动态功耗,静态功耗所占比例很小。而在90nm以后,由于特征尺寸变小,漏电的问题越严重。芯片在设计时就不得不考虑静态功耗的问题。在之前CPU厂商所发布的桌面处理器中,很少考虑静态功耗的问题。直到最近几年,这个问题才逐渐被大家所重视。Intel早先发布的45nm Penryn处理器,就通过使用High-K介电质和金属门减轻了静态功耗的问题。而在芯片处于空闲时,使用降低频率和工作电压的方式,来削弱漏电流的影响。但是这仍然无法完全解决漏电引起的问题。尤其在芯片处于空闲时,大量的逻辑门单元和复杂的时钟网络仍然需要耗去一定的电量。
优化芯片的功耗水平,需要从多方面着手进行。目前已经出现的功耗优化技术主要包括:针对应用使用功耗优化的软件算法,在软件编译时生成低功耗的代码,使用功耗优化的架构和微架构,将芯片划分为多个时钟域或/和电源域、将不同的应用需求分配到不同域的电路中完成,门控时钟和门控电源、降低电路的电压或/和频率,使用低功耗的材料和工艺如铜互联、High-K介质、高阈值晶体管等等。Nehalem中几乎采用了硬件可用的所有方面的技术以保证较好的功耗水平。
在架构和微架构层次,正如我们前面所讲到的,Nehalem通过加入了SSE4.2和增强的虚拟机减少了特定任务的操作数量,并通过支持SMT、优化的宏融合、循环流检测器、分支预测和对非对齐高速缓存访问的增强提升了处理器的能耗比。下面让我们来看一下其他的方面。
首先是多时钟域结构。Nehalem的芯片分为两部分:核心与非核心部分。时钟由位于主板上的晶振和对应的PLL产生,并传送入非核心部分。非核心部分将这个时钟(BCLK)分频,为每个核心产生单独的时钟。因非核心部分工作在较慢的时钟域下,有利于减少非核心部分的功耗;核心部分被设计的非常高速,以达到更高的计算能力。
其次是门控电源。门控电源与门控时钟原理类似,都是采用逻辑电路来动态控制电路的电源或时钟。在电路不工作时,控制端即会关闭晶体管,电路的电源即被切断。这样对应的电路就不会产生任何的功耗。与门控时钟相比,门控电源对功耗的降低作用更加明显,因为消除了电路在不工作时的静态功耗;但相应的,使用门控电源也会增加电路的唤醒时间。因为在门控时钟关闭时,电路的时钟停止工作,但电路里的数据因为仍有电源所以仍然可以被保存起来;而门控电源切断时,唤醒则需要再次从外部加载相应的数据。Nehalem对每个核心都使用单独的门控电源,在核心不工作时,相应的电源可以被动态的切断,而不影响其他核心上执行的程序。
然后是动态调节电压和频率。由于动态功耗和工作电路的电压、频率关系重大(动态功耗=常数*电容*频率*电压*电压),因此降低电路的电压和频率对于降低功耗具有重要的意义。Intel在多年以前就开始使用EIST技术以动态降低工作电路的电压和频率,但在Nehalem中,Intel对优化功耗的技术有了进一步的诠释。
这种技术被成为Turbo Mode(加速模式)。Intel相信,降低处理器的功率并不是唯一的解决之道。提高能耗比,在完成相同的任务量前提下减少耗电,或者在相同耗电量的前提下完成更多的任务,才是评价处理器效率的标准。Turbo Mode正是基于这种思想的产物。Turbo Mode可以通过软件或BIOS开启或关闭。在打开Turbo Mode时,处理器可以自动侦测CPU的负载情况,智能的关闭不用的核心,并提高其他核心的性能。在极端的情况下,如果只运行单线程程序,其他三个核心可以全部被关闭,并对运行任务的核心进一步提升工作频率。Turbo Mode的出现真正做到了按需供电、按需提供性能。
最后,Nehalem也使用High-K介质和金属门等Penryn处理器上刚刚采用的工艺,从制造角度降低了处理器的功耗水准。