摩尔定律延续了几十年后,在2000年左右开始放缓,到2018年,摩尔的预测与目前能力之间的差距大约是15倍。目前的预期是随着CMOS技术接近基本极限,差距将继续扩大。
与摩尔定律相伴而来的是罗伯特·登纳德(Robert Dennard)的预测,称为“登纳德缩放比例定律”(Dennard Scaling)。该定律指出,随着晶体管密度的增加,每个晶体管的功耗会下降,因此,每平方毫米硅的功耗几乎是恒定的。由于硅的计算能力随着每一代新技术的发展而提高,计算机将变得更加节能。登纳德缩放比例定律在2007年开始显著放缓,到2012年几乎变为零。
在1986年到2002年之间,指令级并行(Instruction Level Parallelism,ILP)的开发是提高性能的主要方法,随着晶体管速度的提高,每年的性能增长可达50%左右。登纳德缩放比例定律的结束意味着设计人员必须寻找更有效的方法来利用并行性。
要理解增加ILP导致更大的效率低下的原因,可以考虑一个现代处理器内核,比如ARM、Intel和AMD。假设它拥有深度为15的流水线,每个时钟周期可以发射4条指令,那么,任何时刻在流水线中都有多达60条指令,最坏情况下会包括15个分支,占指令的25%。为了使流水线保持完整,需要预测分支,并将预测执行的指令放入流水线中以便执行。这种“投机性”的使用是ILP性能和效率低下的根源。当分支预测完美时,预测可以在提高性能的同时几乎不产生额外的能耗——甚至可以节省能源;但当分支预测出错时,处理器必须丢掉错误预测的指令,并且恢复到错误预测分支之前的状态,这将花费更多额外的时间和能耗。
为了理解这些浪费的工作是如何累加起来的,有效执行但由于处理器的预测错误而被浪费的指令。在 Intel Core i7上,这些基准测试平均浪费了19%的指令。相比来说,预测错误造成的能耗浪费更大,因为处理器在推测错误时必须使用额外的能量来恢复状态。
这样的度量结果使人们相信,设计人员需要新方法来实现性能改进。多核时代就这样诞生了。多核将识别并行性和决定如何利用并行性的责任转移给程序员和语言系统。多核并不能解决由于登纳德缩放比例定律结束而加剧的能耗挑战。无论一个计算核对计算效率是否有贡献,它都会消耗能量。除了能耗问题外,另一个主要的障碍是阿姆达尔定律(Amdahl's Law),它指出并行计算机的加速比受到串行执行部分的限制。为了理解这一古老观察的重要性,图5显示了不同串行执行比例的程序(每条曲线)在最多64个处理器的情况下的加速比,在串行部分执行时,只有一个内核参与计算。例如,当只有1%的时间是串行执行时,64个处理器的加速比大约是35,而不幸的是,64个处理器的功耗是单个处理器的64倍,这导致大约45%的能量被浪费了。
当然,真正的程序有更复杂的结构,其中部分允许在任何给定的时间点使用不同数量的处理器。尽管如此,定期通信和同步的需求意味着大多数应用程序的某些部分只能有效地使用一部分处理器。尽管阿姆达尔定律已有50多年的历史,但它仍然是一个困难的障碍。
热门跟贴