【IT168 专稿】1971年,世界上第一款可用于微型计算机的四位微处理器4004在Intel诞生。每一个新事物的诞生总是要经历种种磨难,对于微处理器而言更是如此。由于4004功能上的缺陷,随后Intel推出了8008。然而8008依然不能满足客户的需求,其市场反应十分不理想,1974年,8008发展到8080,成为第二代微处理器。同时在这段时间里各大半导体公司相继推出了各自微处理器芯片。Zilog公司生产了8080的增强型Z80,摩托罗拉公司生产了6800,英特尔公司于1976年又生产了增强型8085,但这些芯片基本没有改变8080的基本特点,都属于第二代微处理器。它们均采用NMOS工艺,集成度约9000只晶体管,平均指令执行时间为1μS~2μS,采用汇编语言、BASIC、Fortran编程,使用单用户操作系统。
1978年应该是CPU发展史上值得记忆的一年,Intel凭借在半导体领域的雄厚技术实力推出了第一款16位微处理器8086,这是第三代微处理器的起点。之后微处理器的发展才真正使入了快车道,提高一倍80286、80386……直到今天广为人知的奔腾系列,微处理器的飞速发展充分验证了摩尔定律的正确性。
单线程与超线程
程序由多个执行线程组成,这些线程是一系列相关指令。在个人电脑时代早期,大多数程序仅含有单个线程。当时的操作系统在某一时间仅能运行一个此类程序。结果(很多人均有过这种痛苦经历)电脑在打印文件或电子数据表时就会死机,系统不能同时处理两项任务。操作系统创新引入了多任务处理,从而能够挂起一个程序,以运行另一个程序。通过使用这种方式来迅速地切换程序,系统能够“看上去”同时运行多个程序。然而,事实上处理器一直运行的仅仅是单个线程。
直到近十年,处理器设计才获得了额外的执行资源(例如专用于浮点和整数数学的逻辑),以支持并行处理多个指令。透过这些额外资源,英特尔看到了机遇。英特尔认为通过使用这些资源在相同的处理器内核上同时执行两个单独的线程,可使之得到更充分的利用。英特尔将这种同步处理称为超线程技术,并于 2003 年将其应用于英特尔至强处理器之上。根据英特尔性能指标评测,通过在含超线程技术的处理器上运行,采用多个线程编写的应用可获得高达 30% 的性能提升。更重要的是,两个程序能够同时在一枚处理器上运行,而无需来回切换(参见图 1)。为使操作系统将一枚处理器识别为两个可能的执行流水线,全新芯片针对操作系统将显示为两枚逻辑处理器。
![]() |
图1 超线程技术支持在单个处理器内核上同时执行两个线程
多核的提出
随着个人电脑走入每一个生活家庭,我们对CPU的性能要求越来越高,从简单程序处理,到办公辅助系统,再到休闲娱乐,特别是大型游戏与多媒体对CPU的性能要求越来越高。过去的经验说明要达到提升40%左右性能的复杂超标量CPU,它的晶体管数量就得翻一翻。许多业内分析家和研究人员的结论都是:单核CPU不再有前途了。正如英特尔的Shehar Borkar所说的那样。“多线程技术有着这样的潜力,可以提供接近线性的性能提高。两块相对较小的芯片,而不是一块巨无霸式的芯片,能够提供70%到80%的性能提升,而如果用一块巨无霸式的芯片基本只有40%的提升水平。”请注意“巨无霸”这个词。这里它是有贬义倾向的,暗示了单核CPU是基于过去的技术的。当单核CPU基本只有40%的性能提升时,它却增加了结构的复杂性,同时更带来了头痛的漏电问题。这也解释了为何突然间英特尔的市场推广中不再讨论有关10GHz的CPU,而大谈“线程并行时代”。
一些芯片的厂商指出,当处理器的频率达到某种程度后,处理器在工作量的要求会比速度的要求要大,且0.13微米所含的晶体管已很高,将来65纳米和45纳米,其1组光罩的成本会倍增。但是,这种成本成倍的增长并不会给厂商们带来相应的收入增长。且发热量和干扰的因素的介入使得集成度和处理器的频率已经越来越趋近于一个极限。
因此,使摩尔定律失效的有可能是技术,有可能是经济效益。
单内核处理器技术的发展遇到了瓶颈,而多内核技术则可以提升处理器的整体性能。由于处理器功耗和散热问题日益突出,英特尔逐步放弃了通过提升主频来增强处理器性能的传统方法,转而更加关注处理器的功能以及支持多核技术的软件。
超线程技术的性能提升受到了两个执行线程共享资源可用性的限制。结果,由于这些共享资源之间的争用,超线程技术不能实现两枚独立处理器的处理吞吐率。如欲在单个芯片上实现更出色的性能提升,处理器就需要两个单独的内核,这样每个线程就能拥有其专属的整套执行资源。进入多内核。
为了突破这一障碍,处理器制造商开始采取一项新战略,将两个或更多的完整的、独立的处理器内核安装在一个芯片上。这种多内核处理器直接插在主板上的一个插座中,操作系统将每一个执行内核视为一个可以独立控制的逻辑处理器。拥有两个独立的CPU核,可以让每个CPU核以较低的速度运行,因此降低了温度,并且在大多数情况下,还提高了计算机的总体吞吐量。
从一个角度看,多内核只是多年来我们所采用的两个或更多标准CPU的“n路”服务器设计思想的延伸,我们只是使芯片的封装变得更小、集成得更彻底。但是,实际上,这种多内核战略代表着处理器架构的重大变化,这一变化将迅速席卷计算行业。在一个芯片上集成两个CPU,而不是将它们插入到两个独立的插座上,大大加快了CPU之间的通信速度,减少了等待时间。
多内核处理器,顾名思义,就是在同一个物理封装中包含两个或多个独立的内核。图 2 显示了多内核处理器与前代技术在这方面的不同。
![]() |
图2 多内核处理器在单个芯片上拥有多个执行内核
在此款设计中,每个内核均拥有其专属的执行流水线。此外,每个内核均有其自己所需的运行资源,而不会对其它软件线程所需的资源造成阻塞。虽然图 2 实例中显示的为双内核设计,但实际上对于放置在单个芯片中的内核数量并没有固定的限制。
多内核设计支持两个或多个内核以稍慢的速度同时运行,温度却要低许多。这些内核的吞吐率结合起来可提供更加强大的处理动力,超过了现今单内核处理器的最高水平,功耗也得以大幅降低。这样,英特尔依然如摩尔定律所预言的那样提高了服务器平台的性能,同时该技术不再将物理限制推向新的极限。
多核的发展
“到2007年,发货的大多数处理器将配备两个内核。”Gartner的分析师Martin Reynolds说,“双内核芯片带来了自推出386处理器以后最大的性能提升,不过开发人员和用户必须对软件进行测试和调整,才能享受双核处理器所带来的好处。”
如果需要,英特尔将推出十内核、百内核甚至是千内核的处理器。到2016年,处理器将采用11纳米生产工艺,处理器晶体管数量达到1280亿个;到2018年,处理器将采用8纳米生产工艺,处理器晶体管的数量达到2560亿个。
英特尔将通过软件充分利用这些庞大的晶体管群。英特尔数字企业集团首席技术长帕罗维茨表示:“未来十年内我们将把超级计算能力推广到主流计算机平台,届时每位用户都可以享受到每秒1万亿次数学运算的速度。
Reynolds指出,对于某些应用,双核处理器的性能最多将比同样速度的单核处理器的性能高70%,双核芯片非常适合于处理器利用率非常高的应用(如当服务器运行虚拟化软件时)以及像媒体编辑、计算机辅助设计、仿真程序和Adobe Acrobat等桌面应用程序。
除了运行起来温度更低、速度更快外,多内核处理器尤其适合于具有可以被划分为独立的线程、可以并行执行操作的任务。在双内核处理器上,可以利用多个线程的软件,如数据库查询和绘制图形,运行速度比运行在单核芯片上几乎快100%。但是,很多以线性方式处理的应用程序将享受不到多少好处。
![]() |
图3 具有超线程技术的双核CPU线程执行过程
Sun用于高端服务器的90纳米UltraSPARC IV芯片将于明年推出。有报道说,这款代号为Niagara的处理器也支持8个内核,每个内核可处理4条线程。
同时,随着业界向65纳米制造工艺升级,更多的晶体管将集成在尺寸保持不变的硅片上。Intel业务客户部产品营销经理Jeff Austin解释说:“以略低的频率和电压运行它们,使配备4个或更多内核的芯片可以在不显著增加功率上限的条件下运行。”Intel的第一款用于多路服务器的65纳米处理器系列Tukwila处理器将内含4个或更多的内核,预定于2007年左右推出。Austin说,Intel将在2008年到2010 年推出利用并行执行内核或对称多线程内核最多支持8条线程的单处理器。
Austin说:“在今后10年里,我们将看到一个处理器中的几十个到几百个内核(包括专用和非对称内核),提供数百和数千个能够并行执行的线程。”
多内核设计支持两个或多个内核以稍慢的速度同时运行,温度却要低许多。这些内核的吞吐率结合起来可提供更加强大的处理动力,超过了现今单内核处理器的最高水平,功耗也得以大幅降低。这样,英特尔依然如摩尔定律所预言的那样提高了服务器平台的性能,同时该技术不再将物理限制推向新的极限。
多核技术在服务器领域的应用
第一款来自Intel的多内核CPU已经上市。Intel预测,到2006年年底时,多内核处理器将在Intel推出的桌面CPU中占40%,占移动CPU的70%,在服务器处理器中占到令人吃惊的85%。包括AMD、Sun和IBM都在多内核处理器上押下了巨额赌注。
基于双核处理器的服务器平台使海量数据处理、大规模网络应用、复杂科学计算及大型图形建模为特征的企业级或行业关键应用领域,在处理能力、扩展性,稳定性、可靠性、易管理性等方面实现更大突破,性价比更高,而且能更有效地保护用户的投资。这种处理器能够充分保护用户投资,与客户的业务实现动成长;超大容量内存访问已经迎刃而解,位的内存寻址完全能够满足未来的计算需求;而且在处理器内部集成了内存控制器,使得内存带宽和I/O带宽可以线性增长,解决了CPU的共享内存等资源的瓶颈问题。
也有人认为双核服务器真正的普及性应用还需时日,目前处在“试水阶段”。市场并没有完全接受双核服务器的存在,尽管双核的概念已经不陌生了,但是,双核处理器高昂的价格,加之双内核芯片的制造厂商Intel与AMD在产品和技术上的争夺,使得众多中上游厂商仍在持观望态度,这在一定程度上也阻碍了双核服务器的推广。而且,目前针对双核的应用开发几乎没有。
多核的未来及面临的问题
既然多核技术能够如此有效的提升运算速度,为什么不早早的就开始发展多核技术,而是在单片的运算频率上面拼来拼去呢?
首先就是软件部分,开发工具没有部署到位的时候,能够合理运用多核技术的应用开发几乎无法进行。
有人悲观地预测,应用开发商们将需要几年时间重新编写程序。一旦确立了一种转换方法,IDE工具厂商将开始推出帮助管理多线程开发复杂性的自动化扩展工具。这两个过程很容易用上3~5年的时间。具有全集成多线程控制结构的商业开发语言应当在5~7年后得到广泛使用。但即使那样,个人用户也不要指望在每次推出新CPU时,桌面应用程序的性能都会马上提升。对于多内核系统来说,拥有桌面上的CPU带宽与能够利用它是两件完全不同的事情。
我们必须清醒地认识到,多核的大众时代尚未到来。对于桌面应用,多核的大众化并不会很快变为现实。大家希望能够利用上多核的高性能,在一般人的理解中,也是如果我用了双核芯片,我的电脑速度就会比原来增加一倍。但是实际上不是这样的。每个应用都能随着越来越多的处理器可供使用而适度地提高性能。正如过去提高时钟速度和应用带宽那样,增加处理器内核的数量同样应当提高性能,为什么对桌面应用就不行呢?
尽管利用并行CPU提高总体软件性能的概念至少已经出现35年了,但是在开发工具方面,使这种方法进入商业市场的东西却非常少。可供程序员迅速开发出来的程序还是单线程的。虽然多内核CPU使你可以将多个应用分配到多个处理器上,但是单个应用的性能仍受到单个处理器的速度的限制。夸张一点的说:不管你有一个处理器还是100个处理器,现今的大部分应用程序性能增加不会很大,因为在任何时刻,每个应用只能运行在一个处理器上。
因此,对多核技术的真正有效应用成为了限制多核处理器在PC上面的普及的瓶颈。
今天的情况正在迅速演变为10年前一幕的重现。需要更多CPU带宽的应用厂商再也不能依靠提高时钟速度来获得更好的性能和功能。多数大规模客户端应用是用C或C++编写的,而且历史上一直被设计为单线程。这使应用的多线程优化是个需要耗费大量劳动力的改写过程。就多内核CPU而言,广泛的桌面性能和功能的改进仍需要几年时间。
为了再一次提高性能和功能,一直依靠CPU时钟速度不断提高的桌面应用厂商现在必须向长期的、痛苦的软件改写投资,这个过程,还是只能够用“痛苦而漫长”这几个字来形容。
结束语
发展多核并不能像发展CPU核心频率那样明显的迅速在桌面应用程序层面看到效果,想要真正在桌面应用上普及,人们还要耐心的等待一段时间。
但是,总体而言,多核技术的应用在未来是一种不可阻挡的趋势和潮流。人们对性能要求的最大化决定多核必将取代单核。这只是一个时间上的问题。
