阿姆达尔定律是计算机系统设计的重要定量原理之一,于1967年由IBM360系列机的主要设计者阿姆达尔首先提出。该定律是指:系统中对某一部件采用更快执行方式所能获得的系统性能改进程度,取决于这种执行方式被使用的频率,或所占总执行时间的比例。阿姆达尔定律实际上定义了采取增强(加速)某部分功能处理的措施后可获得的性能改进或执行时间的加速比。简单来说是通过更快的处理器来获得加速是由慢的系统组件所限制。
阿姆达尔曾致力于并行处理系统的研究。对于固定负载情况下描述并行处理效果的加速比s,阿姆达尔经过深入研究给出了如下公式:
S=1/(a+(1-a)/n)
其中,a为串行计算部分所占比例,n为并行处理结点个数。这样,当a=0时,最大加速比s=n;当a=1时,最小加速比s=1;当n→∞时,极限加速比s→ 1/a,这也就是加速比的上限。例如,若串行代码占整个代码的25%,则并行处理的总体性能不可能超过4。这一公式已被学术界所接受,并被称做“阿姆达尔定律”(Amdahl law)。
而谈到Amdahl定律对多核时代的影响,需要讲到多核CPU的诞生,CPU从诞生之日起,主频就在不断的提高,如今主频之路已经走到了拐点。桌面处理器的主频在2000年达到了1GHz,2001年达到2GHz,2002年达到了3GHz。但是处理器主频的提升速度已经放慢。电压和发热量成为最主要的障碍,导致在桌面处理器特别是笔记本电脑方面,Intel和AMD无法再通过简单提升时钟频率就可设计出下一代的新CPU。 面对主频之路走到尽头,Intel和AMD开始寻找其它方式用以在提升能力的同时保持住或者提升处理器的能效,而最具实际意义的方式是增加CPU内处理核心的数量。 多核处理器指的是在一个处理器上集成多个运算核心,从而提高计算能力。同时,为充分发挥多核的优势,内存访问、中断处理、总线结构等相关单元也做了大量的修改,多核展现在人们面前的是一个全新的体系架构,在CPU处理、内存访问、IO总线、中端分配机制等方面都有了长足进步,加上多核与生俱来的并行能力正好满足更高性能、更多功能的需求。
多核处理器本身是单核系统达到物理极限而出现的,但是多核处理器本身也有性能提升的限制因素。这个限制因素又引导着多核技术发展的趋势。充分发掘多核处理器的潜力,提升多核处理器的性能,必须使这个限制因素的影响降到最低接。
于是下来不得不面对的问题就是如何有效地利用处理器里面的多个核,也就是并行计算。 然而多核面对一个似乎无法回避的难题:阿姆达尔定律
阿姆达尔定律告诉我们:系统中某一部件由于采用某种更快的执行方式后整个系统性能的提高与这种执行方式使用频率占总执行时间的比例有关。由于采用特殊的方法所能获得的加速比为: 在多核处理器中加速比是衡量并行程序性能的一个重要参数,定义为Speedup=使用单处理器执行时间/使用多处理器执行时间。根据阿姆达尔定律: 其中,s是系统中串行执行部分占整个系统的比例,n是多核处理器中核的数目。当s=5%时,8核的加速比为5.93倍,16核的加速比为9.14倍,与理想状态的8倍、16倍有不小的差距。当s=30%时,8核的加速比仅有2.58倍,16核的加速比仅有2.91倍,完全没有发挥多核的优势。更加糟糕的是,实际情况往往比Amdahl定律给出的结果更差。考虑到核间交互带来的额外开销,核间同步影响整个系统的并发处理,设计糟糕的系统在多核下甚至比单核下的性能还要低得多。
当n趋近于无穷大时(即假设我们有无穷多个核心),速度提升的上限是 1/s,即速度提升的上限取决于程序不能被并行计算的部分。 这个定律的结果就是,即便我们能够有效地并行计算一个程序的95%,剩下 5%只能串行计算的部分限制了这个程序的运行速度最多能提升1/5%=20倍。而现有的程序中很少能够做到95%以上部分的并行计算。 而且,如果你想在一个并行、线程化的应用中使用不只一个内核,就需要某种通信/同步,而且,对于一个固定的工作负载,通信/同步开销是作业所用 CPU 内核数量的单调递增函数。由此,我们需要对阿姆达尔定律做些简单修改: 其中,T为解决某计算问题所需的总时间,Ts是完成串行工作所需的时间,Tp 是完成所有并行工作所需的时间,N是并行工作中所使用的处理器数量,To是每颗处理器的通信与同步开销。T正是传统阿姆达尔定律公式中所没有的——随着处理器的增多,总开销也会增加。
在没有引入通信/同步开销的传统标准模型中,总时间T就是处理器数N的一个单调递减函数,会逐渐接近于Ts。而在修改后的公式中,我们很清楚地看到,由于存在通信开销,随着处理器数N的增加,在达到某一临界点后,总时间T就会开始增加。因此,对于一个完全并行的应用 (即Ts=0)来说,其所需处理器的最优数量是: 因此,能否有效降低串行执行比例和降低交互开销决定了能否充分发挥多核的性能,其中的关键在于:合理划分任务、减少核间通信。这正是当今多核处理器的发展趋势。
阅读(1393) | 评论(0) | 转发(0) |