最近这段时间,随着Intel正式发布其双核心XEON处理器和国内外多家厂商的积极跟进,人们对双内核这个已经一度冷淡下来的技术似乎又提起了很大的兴趣。
什么是双核技术,相信大部分人都可以理解,但是为什么要使用双核?它能够给我们带来哪些好处?怎么用才能发挥双核的真正威力?这些问题还是缺少比较明确的答复。其实国内几个专业媒体也发表了一些技术文章探讨过这方面的话题,不过都有点以DIY的角度去分析双核这种味道。我们觉得,双核处理器在个人电脑上的应用价值和普及速度应该是远赶不上这种技术用于服务器领域,因此,今天笔者就完全站在服务器应用的立场,结合自己的一些观点,给大家谈谈双核技术:
什么是双核技术?
采用一种比较容易被大家接受的说法,双核处理器就是基于单个半导体的一个处理器上拥有两个一样功能的处理器核心,但是,这种说法很难在本质上解释双核心诞生的的原因,如果要追究双核的起源,还得从一些物理和电子的基础知识谈起:
无法克服的功耗和发热量
现在的芯片都是在单晶硅大圆片上制成的,大面积的圆片本身也难免存在一些缺陷,生产中的流程有时候也会给硅晶体带来缺陷。另外虽然工厂的清洁程度非常之高,但在生产过程中还是免不了带入一些杂质,互连层在制造中也会引入自己的缺陷形式。这样大规模的芯片很难保证全无任何缺陷。现在半导体进入90纳米以下的工艺,缺陷和杂质带来的影响就更为普遍,晶体管的尺寸已经和某些缺陷或杂质的尺寸在一个量级,甚至晶体管尺寸更小。一般来说,非致命的缺陷会造成电路性能下降,为弥补缺陷带来的损失,就需要给电路更高的电压和更大的电流,许多缺陷在降低晶体管性能的同时还会增加晶体管的功耗,以前CMOS数字电路的主要功耗是工作时的动态功耗,但到了90nm工艺以后,情况发生了很大变化,许多原来基本可以忽略不计的功耗因素现在都占据了较大的比重,例如电路互连损耗,泄漏损耗。其中,泄漏损耗的影响急剧增加。这就是为什么采用0.09微米工艺之后,各种处理器的发热量和功耗还是一路呈攀升趋势的原因,高频的Prescott处理器功耗将近100W,要知道,一个可以把焊锡快速融化的电烙铁也不过50W左右,因此,高功耗和吓人的发热量成为CPU继续向高频挺进的一大障碍,当时就有很多人预言,4GHz的处理器诞生之后,大家将可以通过CPU散热片来煮鸡蛋。
高频之外的解决方案
既然无法通过继续提升频率来实现更高的频率,那么用户对产品性能提升的需要应该如何得到满足?
第一种做法当然是使用64位技术,为什么64位运算会比32位运算性能强大,这个比较好理解,例如你使用32位的CPU,要向外输出一个64位的数据,需要消耗两个时脉,但是如果你使用64位的CPU,只要一个时脉就完成了。
另外一种做法就是使用多路对称技术,其基本理论当然就是用两个处理器去完成一个处理器做的事,看上去就跟磁盘阵列技术一样,RAID 0就是使用两块硬盘来同时存取一个文件,各存取一半,因此花费的时间减半,假如使用4块硬盘,就是每块各存取1/4,所需时间自然更短;CPU的多路对称工作原理也是这样的,因此,中高端的服务器很多都使用4路、8路配备,就是为了提高产品性能。
多路对称的难处
要通过2个甚至4个硬盘实现高性能的阵列存储并不难,安装RAID控制器驱动即可,因为RAID控制器会自动控制各块硬盘的工作方式,程序员或者说CPU只要告诉RAID控制器要读出或写入什么数据,具体怎么分拆数据,几块硬盘如何分配读写等问题根本不需要计算机用户、编程人员考虑,因此原有操作系统和软件都不需要进行改动;但是CPU的多路对称工作就不同了,因为计算机的所有指令都是经CPU去执行的,要是编程人员只下令CPU去执行什么指令而不告诉计算机哪颗CPU去执行这条指令,那么就会天下大乱,而且如果是两颗CPU,指令的调度分配还比较好设计,如果是4-8颗,那么情况就非常复杂,就像两台电梯的联合控制程序容易写,但是4台电梯的联合控制程序非常难写一样,因为他们之间是2的2次方跟4的2次方这种关系。
另外,由于多内核芯片将两个或更多的独立CPU核心集成在一块硅片上,一些人怀疑它们致命的弱点会是这些CPU核心之间的数据移动,当多内核系统运行争夺同一条I/O路径的不同应用程序时,存在一些性能瓶颈。不过到目前为止,这些瓶颈的影响很小。
如何用好多路对称
多路对称工作模式需要程序员设计的软件本身就能支持多个CPU的指令调度,这样所有CPU才是以最合理最高效的调度安排去协同工作。由于应用软件大多都是采用大量的API函数开发的,所以担任指令-机器交互角色的操作系统就是多路对称开发的根本和关键所在,一套操作系统能不能很好的协调多个CPU之间的工作关系,是多路模式能否成功发挥其性能的关键。
微软的SERVER级操作系统都支持多路模式,最新的2003 SERVER还改进了多路对称的指令调度设计,使服务器在多路模式下性能可以更加出色。另外,应用程序本身的设计也是多路对称工作效果的决定性因素,例如,现在的3D游戏都是基于单线程开发的,也就是说游戏运行时不会调用操作系统的多线程函数,这样的话即使是使用支持多路对称的操作系统,仍然无法提升应用程序的执行效率,因此,大家可以注意到,至今为止多路设计还是只出现在服务器、工作站等高端领域,因为从成本和效果上看,在个人消费领域使用多路设计都是很不明智的。
双核的优势:
双核的难处
双核技术的思想跟多路对称是一样的,只不过它实现的方式不再需要两个CPU和两个CPU插槽,而是跟普通单路配置一样,一颗CPU搭载两个核心,也就是1 die 2 cores,在一片单晶硅上集成了2个核心,当然,这在制作上难度是相当大的,因为双核设计意味着晶体管的数量将倍增,因此,在生产工艺没有太大改进的前提下,成品率会降低。
另外,双核心既然需要更多的晶体管,就意味着它的发热量会更大,如何解决CPU的散热问题也是非常令处理器厂商头痛的,正如大家所见,目前市面上的双核处理器基本都不敢出高频版本,其中一个重要因素就是发热量的问题;只有当厂商改进生产工艺,减少CPU内部由于瑕疵引起的功率损耗和电泄漏问题之后,才有可能往高频的版本发展。
还有一个问题,就跟多路对称一样,双核也需要操作系统和应用软件的支持才能发挥其性能,虽然现在的服务器操作系统可以为双核提供不错的支持,很多分布式应用软件在双核模式下也取得了令人满意的成绩,但是,对于双核的软件计费却成为令人头痛的问题,一些数据库系统和应用软件厂商之前对于多路服务器的多个处理器是有额外许可证收费设计的,三家最大的软件厂商采取了不同的许可方式:IBM将根据不同的情况做出许可决定,Oracle将双内核芯片算为两个芯片,微软则打算将双内核芯片作为单个芯片来对待。
双核的优势
既然推广双核技术有着如此大的难度,那么,双核技术的优势究竟何在?
首先,双核可以提供跟双路一样出色的科学计算性能和多线程处理能力,这就是为什么我们一直强调说多核处理器应该先在服务器领域推广,而不是先用于个人消费领域,毕竟科学计算中针对多线程开发的软件还是非常多的。
另外,AMD和Intel的双核都可以与目前的平台架构兼容,它们的双核心处理器均能在对应的单核主板上正常工作,这就意味着用户升级到双路和多路的成本可以得到很大的节省,因为一块支持双路的主板售价要比一块单路的主板贵80-100%,如果采用双核处理器,用户就可以使用单路的主板实现双路的性能,而成本上却节省了不少,这对于那些需要高性能多路产品的用户来说无疑是一大福音。 |