服务器 频道

AMD:多核革命的希望、风险及影响-中

2)单线程性能和多线程性能的矛盾

     下面,我们需要进一步探讨的是,如何在保持功耗水平不变的情况下,通过多核心设计来提高CPU的吞吐量和性能。我们知道,在假定其他条件不变的情况下,功耗往往是以CPU主频的平方倍或立方倍增长的,而性能提升却要低于主频的线性增长速度。可见,在主频发展到一定程度,试图继续通过提升主频来提高每瓦特性能的做法会越来越难以凑效。

    多核为我们提供了一种新的方法。对于那些可以充分利用多线程的应用负载来说,多核可以极大地提高CPU的每瓦特吞吐量。但是,多核也存在缺陷,就象我们前文讨论过的,这种吞吐量的提升是以牺牲单线程性能为代价的。

     为了在一颗芯片上放入更多的内核,一方面,我们可以不断改进平版印刷工艺,以把更多的当前内核放进去,另一种方法就是设计尺寸更小、也更节能的新内核。但问题在于,过去数年来,我们把单线程看得太重要了,使得后一种方法并没得到大规模使用(除了SUN的TI处理器外)。

    通过上文的性能模型分析表明,只要我们能够保证CPU内核的功耗下降速度快于峰值吞吐量的下降速度,我们就能够通过无数个高效率的微小核心来获得最优的吞吐量性能。很显然,这样一种系统会使单线程性能很低。

    那么,在多核系统中,如何来解决“多线程应用性能提高、单线程应用性能下降”的这种矛盾呢?到底多少个处理器内核才是最优的呢?\

    为此,我们可以事先定义好可以接受的最低单线程性能(minimum acceptable single-thread performance),然后对芯片进行优化,在限定的面积和功耗水平下,使其能包含尽可能多的内核。
此外,还有其他一些因素会限定内核的数量。一个因素就是通信(communication)和同步(synchronization),这一点在简单的吞吐量模型中往往被忽视了。而实际情况是,如果你想在一个并行、线程化的应用中使用不只一个内核,就需要某种通信/同步,而且,对于一个固定的工作负载,通信/同步开销是作业所用 CPU 内核数量的单调递增函数(monotonically increasing function)。由此,我们需要对 Amdahl 定律做些简单修改:

    其中,T 为解决某计算问题所需的总时间,Ts 是完成串行(非重叠性,non-overlapped)工作所需的时间,Tp 是完成所有并行工作所需的时间,N 是并行工作中所使用的处理器数量,To 是每颗处理器的通信与同步开销。To正是传统 Amdahl 定律公式中所没有的——随着处理器的增多,总开销也会增加。

     在没有引入通信/同步开销的传统标准模型中,总时间T就是处理器数N的一个单调递减函数(monotonically decreasing function),会逐渐接近于Ts。而在修改后的公式中,我们很清楚地看到,由于存在通信开销,随着处理器数N 的增加,在达到某一临界点后,总时间T就会开始增加。因此,对于一个完全并行的应用 (即Ts=0) 来说,其所需处理器的最优数量是:

    比如,假设通信同步开销 To 是并行化时间 Tp 的 1%,那么,我们可以算出:使用 10 个处理器就能获得最大的性能表现。当然,在实际系统设计时,我们还需要权衡其他一些影响性能和性价比的因素。

0
相关文章