虽然单处理器的性能改进可能已接近极限,但摩尔定律的预言使得晶体管密度仍在不断提高。芯片制造商利用这一机会,在单个芯片上放置多个指令执行引擎以及相应的高速缓存。这种结构很快得到新的名称“核”(core),因为它代表了一个典型顺序处理器的核心部分。早期的多核芯片有2个、4个或8个核,但是核的数目随着新一代处理器的出现在不断增长。 于2005/2006年问世的第一个多核芯片引起了全社会关于“免费午餐结束”的讨论。讨论的焦点如下: ?由于如前所述的硅工艺和体系结构设计(隐藏并行)的进步,软件开发者几十年来一直享受稳定的性能改进—“免费午餐”。 ?由于无须关心性能,多年来程序员对他们使用的技术和方法学几乎没有什么改变(面向对象的范例是一个值得一提的例外)。 ?现有的软件通常不能直接利用多核芯片。 ?不能利用多核芯片的程序在目前和未来都无法实现性能改进。 ?大多数程序员不知道如何编写并行程序。 令人不快的结论是程序需要改变,为此程序员也必须随之改变。 虽然上述的结论在某些人看来可能是一个坏消息,但同时还有相应的好消息。特别是,如果将一个计算重写成并行形式,而且如果该并行程序是可扩展的(表示它能够使用日益增多的处理器),那么随着硅工艺的进步,随之会有更多的核加到未来的芯片上,则已重写的程序的性能将持续上升。但对不可扩展的并行程序来讲,将不能享受硅工艺进步的好处。因此,获取可扩展并行至关重要。 某些特别是在图形学领域的研究人员,无疑对是否需要并行计算的讨论感到非常奇怪,因为他们多年来一直在使用并行性。图形处理部件(Graphics Processing Unit,GPU),又称为图形卡,已经是加速绘制(rendering)流水线的标准技术。虽然GPU看起来像是一个小巧的协处理器,对通用计算机应用来讲微不足道,但硅工艺的进展已使得在图形处理部件上进行通用计算(General Purpose computing on Graphics Processing Unit,GPGPU)这一概念成为可能。大约18个月的代周期,使得GPU随着每一代的发展正在逐步变得更为通用,并行程序员已将它们应用到许多非图形处理的密集计算场合。如同开发多核芯片一样,开发GPU的潜在能力需要并行程序设计的知识。