随着信息技术的不断发展, 当前处理器的运算速度与性能已经不能满足人们的需求, 所 以在很早以前,人们就开始研究提高处理器性能的各项技术。 影响处理器性能的技术指标很多,在体系结构上能采取的主要方法有:提高主频,多线 程,提高 IPC(每拍的指令数) ,2Bump 技术等。在当前处理器大都采用相同的体系结构的 情况下,发展并行算法,即多核处理技术,是解决当前问题最主流的趋势。 从英特尔在 2005 年推出第一代双核处理器, 到如今每秒峰值运算速度超过 200 万亿次, 拥有上万核心的超级计算机,多核技术以不可阻挡的速度迅猛发展。
我们知道:处理器性能 = 主频 x IPC 上面的公式可以看出, 衡量处理器性能的主要指标是每个时钟周期内可以执行的指令数 (IPC: Instruction Per Clock)和处理器的主频。 因此,提高处理器性能就是两个途径:提高主频和提高每个时钟周期内执行的指令数 (IPC)。处理器微架构的变化就可以提高 IPC 从而提高处理器的性能。但是,对于同一代的 架构,改良架构来提高 IPC 的幅度是非常有限的,所以在单核处理器时代通过提高处理器 的主频来提高性能就成了唯一的手段。 不幸的是,给处理器提高主频不是没有止境的,从下面的推导中可以看出,处理器的功 耗和处理器内部的电流、电压的平方和主频成正比,而主频和电压成正比。 因为: “处理器功耗 正比于 电流 x 电压 x 电压 x 主频”“主频 正比于 电压” , 所以: “处理器功耗 正比于 主频的三次方” 。如果通过提高主频来提高处理器的性能, 就会使处理器的功耗以指数(三次方)而非线性(一次方)的速度急剧上升,很快就会触及所谓 的“频率的墙”(frequency wall)。 功耗问题限制了单核处理器不断提高性能的发展途径。 过快的能耗上升, 使得业界的多 数厂商寻找另外一个提高处理器性能的因子,提高 IPC。 提高 IPC 可以通过提高指令执行的并行度来实现,而提高并行度有两种途径:一是提 高处理器微架构的并行度;二是采用多核架构。 在采用同样的微架构的情况下,为了达到处理器 IPC 的目的,我们可以采用多核的方 法,同时有效地控制功耗的急剧上升。看看下面的推导。 因为: “处理器功耗 正比于 电流 x 电压 x 电压 x 主频”“IPC 正比于 电流” , 所以: “处理器功耗 正比于 IPC” 由单核处理器增加到多核处理器,如果主频不变的话,IPC 理论上可以提高一倍,功耗 理论上也就最多提高一倍,
因为功耗的增加是线性的。而实际情况是,双核处理器性能达到 单核处理器同等性能的时候,前者的主频可以更低,因此功耗的下降也是指数方(三次方)下 降的。反映到产品中就是双核处理器的起跳主频可以比单核处理器更低,性能更好。 由此可见,处理器发展的趋势是:为了达到更高的性能,在采用相同微架构的情况下, 可以增加处理器的内核数量同时维持较低的主频。较低的主频也有效地控制了功耗的上升。
阿姆达尔(Amdahl)定律:系统优化某部件所获得的系统性能的改善程度,取决于该
部件被使用的频率,或所占总执行时间的比例。 Amdahl 定律定义了加速比: 加速比 = 采用改进措施后性能/未采用改进措施前的性能 或者 = 未采用改进措施前执行某任务时间/采用改进措施后执行某任务的时间 假设处理执行的任务中包含串行执行部分和并行执行部分。 我们定义 f 为并行执行部分 所占的百分比,则(1-f)为串行执行部分所占的百分比。改进后比改进前性能的提高倍数 记为 n。 则改进后整个任务的执行时间 Tn 为:
Tn = T0 [(1 ? f ) +
f ] n
进后整个系统的加速比 S p :
Sp =
T0 1 = Tn (1 ? f ) + f / n
我们通过定量计算来比较增加核心数与增加主频率对处理器性能的影响。 增加处理器核心个数 在这种情况下,改进后的系统加速比为:
S p1 =
1 ; (1 ? f ) + f / n
提高某个单一核心的频率 在这种情况,提高某一核心的频率,并将串行部分固定在此频率上执行,则改进后的加 速比为:
S p1 = S p1 = S p 2
1 ; (1 ? f ) / n + f
则有:
令
(1 ? f ) + f / n =1 (1 ? f ) / n + f
求得 f=0.5 以上计算表明,当 f<0.5 时, S p1 < S p 2 ;f=0.5 时, S p1 = S p 2 ;f>0.5 时, S p1 > S p 2 ; 由此得出结论: 只有当并行执行任务大于总任务量的一半时, 增加处理器核心个数才会 更好地提高处理器的运算性能。
并行计算或称平行计算是相对于串行计算来说的。 所谓并行计算可分为时间上的并行和 空间上的并行。 时间上的并行就是指流水线技术,而空间上的并行则是指用多个处理器并 发的执行计算。 为利用并行计算,通常计算问题表现为以下特征:
(1)将工作分离成离散部分,有助于同时解决; (2)随时并及时地执行多个程序指令; (3)多计算资源下解决问题的耗时要少于单个计算资源下的耗时。 并行计算科学中主要研究的是空间上的并行问题。从程序和算法设计人员的角度来看, 并行计算又可分为数据并行和任务并行。 空间上的并行导致了两类并行机的产生,按照 Flynn 的说法分为:单指令
流多数据流 (SIMD)和多指令流多数据流(MIMD) 。 并行计算机没有一个统一的计算模型。不过,人们已经提出了几种有价值的参考模型: PRAM 模型,BSP 模型,LogP 模型,C^3 模型等。 并行算法是解决并行计算问题的方法和步骤。 由于人们的思维能力以及思考问题的方法 对并行不太习惯,且并行算法理论不成熟,所以总是出现了需求再来研究算法,不具有导向 性,同时实现并行算法的并行程序性能较差,往往满足不了人们的需求。并行算法的研究历 史可简单归纳为:上世纪 70 到 80 年代,并行算法研究处于高潮;到上世纪 90 年代跌入低 谷;目前,又处于研究的热点阶段。现在,人们已经可以自己搭建 PC cluster,利用学习到 的理论知识来解决实际问题,不再是纸上谈兵,这也为我们提供了新的机遇和挑战。