不同架构上的单线程软件性能

时间:2013-12-10 07:36:23

标签: multithreading performance

在一些论文中,作者正在测量他们的sinlge线程软件的加速程度(加速是输入处理延迟的减少)。他们展示了三种不同架构的加速结果。以下是详细信息:

  • 1.5 GHz奔腾M
  • 2.4 GHz的英特尔酷睿2
  • Xeon E5520 2.27 GHz

这是结果图 enter image description here

现在,Xeon是一个多核,它表现出了良好的加速性能。我的问题是,当你的程序是单线程时,单个线程将一次在一个核心上运行。是的,但是当一个核心上有负载时,您的操作系统可能会将该线程切换到另一个核心,但它仍然只使用一个核心用于您的软件的单个线程。那么,为什么Xeon与其他两种架构相比表现出良好的性能呢?

与其他架构相比,还有其他因素使Xeon的性能更好吗?这是使其性能更快的时钟速度吗?

3 个答案:

答案 0 :(得分:2)

如果我理解正确,那么您正在测量不同处理器上2种算法之间的性能差异。具有较大加速的处理器可能特别擅长新算法,或者对旧算法(或两者)特别差。以下答案给出了这种差异的可能原因。如果我的问题出错,你现在就可以停止阅读了。

最有可能的差异与核心数量无关。测试的算法是单线程的。在测量程序的性能时,PC不得受到其他未指定程序的重大负载 - 否则整个测量无效。因此,操作系统不太可能经常中断算法,因为它会对性能产生重大影响。

差异也不直接归因于时钟速度,因为这会同等地影响两种算法。它可能间接地与时钟速度有关,例如由于计算速度与读/写访问的比率不同。

差异肯定会受到各种处理器特定“功能”的影响(缺少更好的词),包括但不限于:

  • 分割,乘法,加法和其他指令使用了多少个时钟周期。
  • 分支预测对给定算法的准确程度如何(参见branch prediction)。
  • 获取程序中使用的不同类型数据需要多长时间(请参阅caching)。

如果针对特定体系结构编译算法,则编译器还可以执行各种处理器特定的优化,用另一个特定于当前处理器的指令替换一组指令。或者它可以在为一个体系结构创建程序时重新排序一组指令,因为隐式保证对该处理器有效。

程序还可能依赖于处理器以外的硬件,例如,如果它访问RAM或硬盘。算法还可以调用操作系统,例如在控制台上打印某些内容,写入硬盘或保留/释放内存。此时,操作系统及其配置将成为差异的一部分。

非常有趣,您可以在选择不同的防病毒软件时测量算法的性能。

答案 1 :(得分:1)

时钟速度不是决定CPU性能的唯一因素。其他主要因素是每时钟指令(IPC)速率和CPU高速缓存大小。 Xeon E5520比Core 2更新,因此它可能更有效地执行正在执行的指令,从而提供更高的IPC。此外,英特尔的Xeon芯片通常比台式机芯片(如Core 2)或笔记本电脑芯片(如Pentium M)具有更大的L2和L3缓存,因此CPU正在使用的代码或数据更可能位于快速缓存内存中比缓慢的主记忆。

答案 2 :(得分:1)

流程技术是这里的核心选择。 Pentium M具有90纳米的特征尺寸,Core2为65纳米,Xeon为45纳米。

小一些更好:

  • 更高的时钟速度。过去几天在Pentium M时代几乎无效,今天已经完成。处理器停留在当前的时钟速度。略微调整的是动态时钟速率,Xeon标称值为2.26 GHz,但可以提升至2.53
  • 信号传输距离越短,允许它们以更高的速率切换。
  • 核心中的更多晶体管,允许额外的执行引擎,同时有更多的飞行指令。超线程利用额外引擎中的冗余。
  • 更大的缓存。 Pentium M有2MB的L2缓存,Core2有4MB,Xeon有8MB。
  • 更多核心。 Pentium M有1,Core2有2,Xeon有4(与这个问题无关)。

缓存大小可能是最大的选择器。 Xeon很昂贵,并且通常与更好的内存总线结合,从测试中不清楚基准是否是总线限制的。可能不是。