PC的足迹--多核时代《九》

来源:互联网 发布:java中常用关键字 编辑:程序博客网 时间:2024/04/28 21:59

Intel的下一代新内核Nehalem即将问世,AMD代号为“上海”的新一代处理器也发布在即。再此之前KentsfieldYorkfieldPhenom处理器均实现了多核,多核时代已经来临。

在计算机科学领域中,多核不是一个新的概念。远在PC还没有问世之前,多处理器系统就已出现,MPPMassively parallel processing)系统已经集成了成千上万个处理器,这些处理器受限当时的工艺,无法像如今的CMP将多个处理器集成到一个封装中,但是从数学的角度上看,这两者等效,只是MPP集成的处理器间的通信延时大于CMP系统中处理器间的通信延时。而MPP系统需要解决的问题与如今基于CMP的多核不同,MPP系统所要解决的是一些特定问题,如医药模拟、地质勘探、天气预报、核能开发及密码破译等金字塔尖的顶级问题。MPP处理器的用户是这个星球上顶级的科研人员,而CMP系统所面对的是芸芸众生。不同的用户群决定了两者在使用上的区别,CMP的多核使用不能照搬MPP处理器的使用经验。而即便是MPP处理器也没有解决好如何使用的问题,可编程性至今还是MPP处理器需要亟待解决的核心问题。

IntelTick-Tock计划使摩尔定律在近些年看不到失败的迹象,见下表[29]

 

Tick-Tock Roadmap

 

Architectural change

Fabrication process

Year

Tick

Shrink/derivative of previous micro architecture(P6)

65nm

2005

Tock

Intel Core micro architecture

2006

Tick

Shrink/derivative (Penryn)

45nm

2007

Tock

Nehalem micro architecture

2008

Tick

Shrink/derivative (Westmere)

32nm

2009

Tock

Sandy Bridge microarchitecture

2010

Tick

Sandy Bridge Shrink/derivative

22nm

2011

 

目前Intel的第二轮Tick-Tock即将完成,Nehalem面世在即,WestmereSandy Bridge也在有条不紊地进行。更新的半导体工艺进一步提高了芯片的集成度,使得一个芯片内部可以集成更多的处理器内核,目前有许多公司都拥有多核产品。这里面,不仅仅有IntelIBMAMD传统的处理器公司,还有一些近些年Startup的公司。

 

多核处理器

Intel

Xeon 四核和6核处理器

Core 2 Quad

80个内核的Teraflops Research Chip,也被称为Polaris

IBM

3个内核的Xenon处理器

SonyToshiba联合推出的Cell处理器,Cell中包含一个PowerPC内核和8SPUSynergystic Processing Unit)

Sun Microsystems

8核的UltraSPARC T1T2

AMD

Opteron 4核处理器

Phenom 3核、4核处理器

Raza Microelectronic

8核的XLR732

Cavium Networks

16核的CN5860

Tilera

64核的TILE64

 

除此之外还有一些多核的GPU,如AMD/ATIRadeonFireStreamnVidiaGeForce 200多核GPUTesla多核GPGPUGeneral-purpose GPU)。

多核处理器降临并不以人们的意志转移,突然间满城尽是多核。连最保守的科学家也不得不承认目前需要解决的多核问题,不是讨论多核目前适不适用已有的软件平台,而是多核时代已经来临,如何调整软件平台使之适用。摩尔定律的不断成功,面对的挑战除了工艺的继续提高,还面对了来自另外一个定律Amdahl’s law的挑战。

Amdahl’s Law提出了最大并行度(The Maximum Speedup)的计算方法。当使用N个处理器运算一个课题时,理论上最大并行度为N。但是对于一个指定的课题,很难做到所有部分都是可以并行的,假设其可并行的程序比率为P,则这个课题在使用N个处理器运算时,其并行度为

1/((1-P)+(P/N))[30]

如果我们对N取极限将得到并行度=1/(1-P)这个公式,这个公式表明即便我们可以使用无限数目的处理器,也不能进一步提高执行这个课题的效率。如果一个课题的P90%,即这个课题可以并行执行的部分为90%,此时这个程序的最大并行度为10,这也表明片面提高处理器的数目对解决一些并行度不高的课题没有太大意义。当然有些并行度较好的课题当N上升时,P也随之上升,从而课题的最大并行度也会上升,当P1时,最大并行度为N

Amdahl’s Law是一个理想模型,这个定律没有考虑多核之间通信的延时与带宽。如果考虑通信所花费的时间,采用多核处理器解决一个课题所耗费的总时间如下

T=f(N)=Ts+Tp/N+Tis*N[31]

其中Ts为这个课题串行执行所需要的时间,Tp为这个课题并行执行所需要的时间,而Tis为单个处理器所花费的通信时间。利用以上公式,我们可以轻易得出解决一个特定课题所需要的最优的处理器数目。

f'(N)=-Tp/sqr(N)+Tis=0<==>N=sqrt(Tp/Tis)

由以上公式可以看出,处理器间通信时间Tis与解决一个问题可能使用的处理器数目直接相关,Tis越大则可能使用的处理器数目越小。从这个公式也可以看出片面提高处理器内核的数目并不能提高一个课题执行的效率。

这个公式也为CMP的发展指明了方向,CMP的发展不应该是将多个处理器内核放在一个Die中,然后再找一条总线将多个处理器内核连接在一起,而是根据多核间的互联结构的延时与带宽决定在一个Die中到底集成多少个内核,多核处理器的设计核心是处理器内核间的互联结构而不单纯是处理器核心。Freescale即将推出的MPC8578处理器在这方面做了许多工作,MPC8578处理器中将CoreNet Architecture(互联网结构)作为设计重心,这个CoreNet Architecture可以连接的处理器内核数目的最大值为32

摆在多核处理器面前的除了处理器的延时与带宽外,还有一个大的难题就是并行程序的可编程性。并行程序的编写、调试与维护的难度远大于串行程序。熟练掌握并行编程模型并不是一件简单的事情。

对于之前使用在巨型计算机上运行的程序在CMP运行上没有太大问题,因为这些程序本身就是由并行运算的专家编制,并经过精心并行优化的。书写这些程序的编程人员本身不仅掌握了MPIOpenMP这些并行编程模型,对高性能计算机体系结构也有充分的认识。

对于一些银行,网站等服务性部门,他们的程序的并发性非常好。业务的无关性使得处理器间的通信与延时几乎可以忽略不计。这种程序的天然并发性使得多核处理器在CMP没有出现之前就得到了充分的应用。

多核面对的最大挑战来自PC领域的用户,这些用户良莠不齐,各种不利于程序并行化的现象都会出现在这些用户使用的机器中。而这些用户却是使用CMP人数最多的群体,这些用户正在使用的程序绝大多数都没有经过并行化处理,而这些程序的数目过于庞大,基本不可能做到将其一一优化。这些用户所执行的程序连多核处理所需要的最基本的负载均衡这个特性也很难满足。目前这些客户使用的操作系统也不能有效帮助这些客户完成这些工作。既然如此,4核、8核或者更多的内核对于他们并没有意义。

多核处理器如果不能真正解决这些人群所面临的挑战,CMP又将被重新回到高端计算的领域,而这个高端领域所蕴含的能量不足以支撑整个多核产业链的继续发展。这也可能是制约多核技术继续向前发展的决定力量。

多核处理器崭露头角的背后蕴藏着太多的危机,而这个危机的解决需要牵扯到计算机科学的所有领域,并行算法、编译器、运行时库、操作系统、处理器及制作工艺。如何提高多核处理器的可编程性高悬在每一个计算机科学研究人员心里。而这个问题,即便在超级计算机中也没有解决。发明一个聪明的编译器将串行程序直接翻译成并行程序,是一个很容易想到的方法,但是这种方法目前还很难推广到PC领域。目前已有的几个并行语言,如UPCUnified Parallel C)、CAFCo-Array Fortune)并不足以推广到PC用户。而IBMX10SunFortnessCrayChapel还在开发阶段。并行处理需要的函数库急需完善。

而目前在多核领域,唯一令人欣慰的是处理器及制作工艺的提高使得在一个封装中可以集成更多的处理器,这也正是令人担忧的。在多核领域跑得过快的硬件迟早会被几乎停滞不前的软件拖住后腿。也许在不远的将来,Life will find a way

0 0