走入双(多)内核处理器的世界

硬件周刊

  CPU的频率越来越快,已经超越了现今一般程序的需求,进一步加快频率所带来的效能增长越来越不明显。故此,处理器厂商便需要开发新的技术去提高CPU的效能,并不只是单纯地加快频率……2004年9月1日,AMD向业界展示了首款x86双内核处理器── AMD Opteron (皓龙)处理器。它的到来,向我们展示了未来一段时间内CPU的发展方向,双(多)内核处理器将为我们提供性能更加强劲的计算机系统!

  模拟双内核处理器──超线程技术

  谈到双内核处理器技术,我们不得不谈一下英特尔的Hyper-Threading(超线程,简称HT)技术。正是因为此技术,让我们首先体验了双内核处理器的性能。

  从原理上来说,超线程技术属于英特尔版本的多线程技术。这种技术可以让单CPU拥有处理多线程的能力,而物理上只使用一个处理器。超线程技术为每个物理处理器设置了两个入口──AS(Architecture State,架构状态)接口,从而使操作系统等软件将其识别为两个逻辑处理器。这两个逻辑处理器像传统处理器一样,都有独立的IA-32架构,它们可以分别进入暂停、中断状态,或直接执行特殊线程,并且每个逻辑处理器都拥有APIC(Advanced Programmable Interrupt Controller,高级可编程中断控制器)。

  虽然支持超线程的P4能同时执行两个线程,但不同于传统的双处理器平台或双内核处理器,超线程中的两个逻辑处理器并没有独立的执行单元、整数单元、寄存器甚至缓存等等资源。它们在运行过程中仍需要共用执行单元、缓存和系统总线接口。在执行多线程时两个逻辑处理器均是交替工作,如果两个线程都同时需要某一个资源时,其中一个要暂停并要让出资源,要待那些资源闲置时才能继续。因此,超线程技术所带来的性能提升远不能等同于两个相同时钟频率处理器带来的性能提升。

  可以说Intel的超线程技术仅可以看做是对单个处理器运算资源的优化利用。因此,如果要让处理器资源真正实现并行处理模式,还需要处理器引入物理双(多)内核设计!

  物理双内核处理器技术

  与上面谈到的超线程技术不一样,双内核或多核处理器属于通过“硬”物理实现多线程工作:每个核心拥有独立的指令集、执行单元,与超线程中所采用的模拟共享机制完全不一样。简而言之,处理器其实可以看做两个或多个处理器整合到一个内核空间内,并通过并行总线将各处理器核心连接起来。在操作系统看来,它是实实在在的双(多)处理器,可以同时执行多项任务。理论上说,双内核处理器的性能几乎比单内核处理器高50%~70%。目前处理器厂商已经或正在准备推出双(多)内核处理器,而走在前列的是IBM。

  1.IBM 的双内核武器

  在双(多)内核处理器开发上,IBM一直走在Intel、AMD这两个通用型处理器厂商的前面。IBM早在2001年就在POWER 4处理器中引入了物理上的双内核设计。

  POWER4处理器拥有两个子处理器,这两个处理器拥有各自的执行单元以及独立的一级指令、数据缓存,并且一个内核接口单元(CIU)共享一个统一的L2高速缓存。接口单元是L2(其实现形式为3个独立高速缓存控制器)和两个处理器之间的一个交叉开关。每个CPU与L2 Cache之间的数据带宽达到100GB/s,到L3 Cache和系统主存的数据带宽则可以达到10GB/s,其总线频率也达到500MHz。

  值得一提的是,目前IBM已经推出了第二代多内核处理器POWER5。POWER5是POWER4处理器的增强衍生版本,最重要的特色就是引入同步多线程架构(简称SMT,类似于英特尔的超线程技术),每个处理器核心在逻辑上等同于两颗处理器。使CPU性能进一步得到提高。

  2.Intel的双内核计划

  相对于IBM,Intel在去年才正式提出自己的双内核产品开发计划。Intel原计划只是先在安腾中引入类似的设计。不过由于Prescott处理器在与对手竞争时并不占优势,因此Intel改弦更张,准备将双内核心设计引入到下一代处理器──基于Pentium M架构的Jonah处理器中。

  像IBM的POWER4/5一样,Intel的Jonah将采用整合两个物理处理器内核的设计,可以同时独立运行两个截然不同的任务。不过,Jonah并没像POWER4/5那样采用共享L2缓存设计,而是采用独占式缓存设计。这意味着每个处理内核都拥有独自的L2缓存资源,可以在执行多任务时获取更好的性能。不过这样的设计也有一定的缺点,如果各核心所占用的缓存与Dothan(2MB的L2缓存)一样,那么处理器的晶管体、功耗都将大大增加,而如果缩减缓存的话,在单任务状态下处理核心可使用的缓存资源就变少。

  英特尔之所以采用这样的设计,相信最大原因是受限于Pentium M架构──此架构原来并不是为双内核心处理器准备的。如果采用共享缓存设计,需要重新设计Pentium M内核,无疑会增加研发时间及费用。但Intel在时间上已经等不起了,在与AMD的竞争中必须有性能更高的产品推出。而Jonah如果采用独占式缓存设计,Intel需要考虑的仅仅是如何利用一条并行总线将双内核并行起来,其设计、技术相对要简单许多。只是当前Intel还需要解决的问题是如何设计出一条高带宽、低延迟的内部总线来连接两个核心。另外,Intel必须考虑如何让Jonah实现对EM64T的支持,执行64位x86指令,毕竟64位运算已经是大势所趋。

  3.AMD的双子星

  作为Intel的冤家,AMD当然也不甘落后,抢先发布了双内核的Opteron。相比之下,AMD的双内核处理器实现起来比Intel要简单、容易一些,因为AMD的Opteron双内核处理器仍采用K8架构──AMD在1999年开发K8处理器的时候就为升级到双内核预留了空间。

  众所周知, Opteron核心内部拥有三个Hyper Transport总线控制单元,分别用于处理它与北桥芯片、PCI-X控制器和其他处理器的连接。此前,我们只要利用Hyper Transport总线,就可以将两颗或多颗Opteron处理器并行起来,组成双路、四路处理器系统。

  基于这个理念,这意味着AMD只需要将两个Opteron处理核心整合到一块基板上,通过Hyper Transport总线将两个核心连接起来就是一款双内核处理器。AMD这个双内核处理器解决方案与目前的双路处理器架构几乎没有任何区别,只不过是将两个支持双路功能的处理器整合在一起罢了。这也意味着支持双Opteron处理器的主板芯片组完全可以兼容多内核的Opteron处理器。

  在缓存方面,AMD的Opteron双内核处理器像Intel的Jonah一样采用独占式缓存设计──集成两个1MB L2缓存,分别对应每个内核。不过,Opteron整合内存控制器却采用共享式设计。大家都知道,Opteron整合了一个双通道DDR内存控制器,这意味着双内核的Opteron理论上可以拥有两个双通道内存控制器,在配备DDR2-533情况下内存带宽将达到17GB/s,几乎是目前800MHz FSB P4平台的3倍。但或许考虑到双内存控制器设计将会大大增加内核面积,毕竟两组内存信号针脚是一个不少的数量,而两个双通道内存系统对主板布线也提出了更高的要求,造成开发成本较高的问题,也带来了同样的升级困难。因此AMD暂时决定采用两个核心共享一个内存控制器的设计,而且利用多出来的那条与内存连接的Hyper Transport总线,AMD可以轻易地推出4核心、8核心的多内核处理器。

  结语

  可以说,双(多)内核处理器其实并不像大家想象中那样神秘。大多数厂商的双(多)内核处理器都不是什么新的处理器核心,而是借用了原有处理器核心。这样一方面可以缩短研发时间,另一方面可以实现平滑升级。同时由于多内核处理器对外的“界面”还是统一的(有的多内核产品甚至不会改变针脚数),系统升级门槛也大大降低。尽管双(多)内核处理器的前景看起来很美好,但散热仍然是一个大问题,如何改进或应用新生产技术是各个处理器厂商急需解决的问题。不管怎么说,双(多)内核技术被引入到通用处理器中,对未来处理器设计、发展将带来巨大的影响。