第1章 绪论

在2003年以前,计算机性能的提升主要依赖CPU主频的提升,科研人员只要写好程序,几乎用不着优化,因为下一代CPU主频的提升会轻易地提升软件的性能,这使得计算机行业进入一个良性循环:由于性能的提升,人们能够使用计算机做更多的事,当人们习惯当前计算机的速度后,又会提出新的性能要求,让计算机以更快的速度做更多的事;CPU生产商也乐于升级硬件以赚取更多的利润。计算机行业在这种良性互动下发展了几十年,但是由于CPU的功耗与频率的三次方近似成正比,无限制地提升频率已不可能。到2003年,CPU频率的提升接近停止,为了能够卖出自己的产品,各CPU生产商纷纷通过各种方式提升计算能力,如提高指令级并行能力、在一个时钟周期内执行更多指令、向量指令、多核和超线程技术等。从长远来看,最有可能引领未来的是向量化和多核技术:向量化是指使用同一条指令同时操作多个数据;多核技术是采用在同一个芯片上集成多个核心的办法。而高端的服务器版本则会集成多个多核处理器,这称为“多路”。相比CPU从单核到多核、多路,从标量到向量的发展,图形处理单元(GPU)一出世即通过将几百、几千核心集成在一块硅片上以满足图形图像及视频对性能的需求,这称为“众核”。一方面:众核处理器集成的核心数量远远超过多核;另一方面:众核处理器将更高比例的晶体管用于计算,因此其原生性能也超过多核。

作为本书的绪论,本章会从并行和性能优化的作用及为什么需要并行开始,既而介绍并行和代码性能优化面临的现实困难;然后针对某些特殊情况,介绍一些不修改代码也能利用多核处理器性能的几种替代方法;再介绍与多核技术息息相关的进程、线程等相关概念;最后介绍目前主流的向量和多核计算平台;最后本章以笔者对多核和向量化的点评结束。