超线程性能比较

Hyper-threading Performance Comparison

本文关键字:比较 性能比 性能 超线程      更新时间:2023-10-16

我写了一个项目,它使用了openssl中的一些基本函数,如RAND_bytesdes_ecb_encrypt

我的电脑有i7-2600(4核和8逻辑CPU)。当我用4个线程运行我的项目时,它将花费10秒。当我用8个线程运行它时,它也需要10秒。

我的意思是,超线程并没有给我带来任何性能改进。在Linux中,实验结果是相同的。

我发现这里告诉我,过度阅读在某些情况下并没有给我一些改善。此外,我在这里发现了一些直观的结果。

然而,我试着写了一些简单的测试,发现了一些简单例子,这些例子表明超线程不会给我带来明显的改进。遗憾的是,我找不到。

因此,我的问题是,是否有一些simple测试表明超线程不会给我带来任何性能改进。

您可能会发现,超线程对使用大量内存的代码有更多帮助,因此处理器在从内存获取数据时会经常被阻止。

根据我的经验,很难找到显示超线程好处的"简单代码"。往往是更复杂的例子显示了这种好处。尽管如此,其好处很可能不会是"无超线程"的两倍。指望得到20-30%的改善。

超线程利用了这样一个事实,即CPU有许多组件,当使用其中一个组件时,当没有超线程时,其他组件只是闲置着。您可以尝试编写两种类型的线程,一种执行整数计算(希望使用ALU),另一种执行浮点运算(希望使用FPU)。

我自己没有尝试过,但在这种情况下,超线程应该会提高性能。

若要显示相反的情况,您只能使用一种类型的线程(或者只执行整数运算的线程,或者只执行浮点运算的线程)。

也可能是你的测试有缺陷,但为了知道是否是这样,我们需要更多关于该测试的信息。

我写了一个项目,它使用了openssl中的一些基本函数,如RAND_bytes和des_ecb_encrypt。。。我的电脑有i7-2600(4核和8逻辑CPU)。当我用4个线程运行我的项目时,它将花费10秒。当我用8个线程运行它时,它也需要10秒。

当使用RDRAND(在这种情况下RAND_bytes会这样做)时,总线是限制因素。您的峰值应该在800MB/秒左右。有多少线程并不重要——总线无法足够快地传输数据。请参阅重新访问的英特尔rdrand指令。

如果你使用AES,那么你可能会看到比DES/3DES观测更好的加速。你的Ivy Bridge有AES-NI,它可以实现几乎1.3个周期/字节,这应该是大约两个或三个AES软件。为了确保使用AES-NI指令,必须使用EVP_*接口。


我在这里发现告诉我,在某些情况下,过度阅读并不能给我带来一些改善。此外,我在这里发现了一些直观的结果。

我想@sellarer和@Mats-Petersson回答了你的问题。这个问题不是线性的,你会遇到最大的加速。英特尔表示其持股比例约为30%。

英特尔最新的体系结构倾向于无序执行,而不是超线程执行,因为它应该更高效。阅读有关Silvermont处理器核心的信息。

但如果你想正式深入研究,那就去看一本关于计算机工程的书。这是我在大学学习时我们用过的一本书:《计算机组织与设计》(现在可能有点过时了)。


然而,我尝试写一些简单的测试,发现了一些简单的例子,这些例子表明超线程不会给我带来明显的改进。

OpenSSL还有一个基准测试应用程序。请参阅<openssl source>/apps/speed.c中的源代码。

此外,基准测试应用程序也有自己的个性。加密压力测试可能不会像你希望看到的那样主要揭示差异。例如,请参见基准测试工具。

以下是我的Linux和Windows MP基准测试的详细信息和结果,它们的行为可能有所不同。HT不多,但Linux测试包括Atom(1核2线程)和Windows的core i7结果(4+4)。

http://www.roylongbottom.org.uk/linux%20multithreading%20benchmarks.htm

http://www.roylongbottom.org.uk/quad%20core%208%20thread.htm

根据您想要证明HT提供更好还是更差的性能,您可以选择。以下是i7上的RandMem结果(Linux使用此测试似乎更好)。对于i7,您还需要考虑Turbo Boost,它可能在多线程的情况下更低。

CPUs          MBytes Per Second Using Threads        Gain At Threads
/HTs         1       2       4       6       8     2     4     6     8
Serial RD
Core i7     4/8 L1   11458   22661   37039   43717   46374   2.0   3.2   3.8   4.0
930             L2   10380   20832   32853   41711   42839   2.0   3.2   4.0   4.1
#### MHz        L3    8828   17743   29610   38414   40330   2.0   3.4   4.4   4.6
Win 764        RAM    4266    8712   17347   24946   25589   2.0   4.1   5.8   6.0
Serial RW
Core i7     4/8 L1   15282   13724   16240   16209   18379   0.9   1.1   1.1   1.2
930             L2   12223   18216   25326   28104   27047   1.5   2.1   2.3   2.2
#### MHz        L3   10234   19266   21931   24450   26351   1.9   2.1   2.4   2.6
Win 764        RAM    4533    7656   13876   14543   13390   1.7   3.1   3.2   3.0
Random RD
Core i7     4/8 L1   11266   22548   38174   45592   47141   2.0   3.4   4.0   4.2
930             L2    6233   12463   20059   24986   25667   2.0   3.2   4.0   4.1
#### MHz        L3    3499    6915    9211   10002    9531   2.0   2.6   2.9   2.7
Win 764        RAM     459     909    1241    1398    1364   2.0   2.7   3.0   3.0
Random RW
Core i7     4/8 L1   14375    3027    2780    2901    3297   0.2   0.2   0.2   0.2
930             L2    5887    4555    6117    6693    7281   0.8   1.0   1.1   1.2
#### MHz        L3    3104    4604    4721    5047    4933   1.5   1.5   1.6   1.6
Win 764        RAM     428     860     899     948    1026   2.0   2.1   2.2   2.4
#### 2.8 GHz running at up to 3.06 GHz via Turbo Boost, dual channel 1066 MHz DDR3 RAM 

然后显示实际收益的MP Whetstone基准

MWIPS  MFLOP  MFLOP  MFLOP   COS    EXP   FIXPT   IF    EQUAL
CPU              MHz            1      2      3    MOPS   MOPS   MOPS   MOPS   MOPS
Core i7 1 Thrd  ####   3115   1065    886    738   79.3   39.7   2447   2936   1154
Core i7 Win7    ####  21690   8676   7621   5844    531    291  16643  12027   5034
Quad Core Thread 1            1091   1027    728   66.4   36.5   2050   1501    629
Plus HT   Thread 2            1089   1037    742   66.0   36.5   2090   1507    630
Thread 3            1090    946    742   66.8   36.5   2069   1534    631
Thread 4            1092   1037    727   66.6   36.6   2031   1501    630
Thread 5            1042    959    736   66.4   36.5   1912   1483    630
Thread 6            1091    874    723   66.6   36.1   2049   1507    629
Thread 7            1090    867    725   65.6   36.3   2094   1516    631
Thread 8            1091    874    722   66.3   36.3   2350   1476    624
Gain %                  696    815    860    792    670    733    680    410    436