CPU的睿频、超线程、SIMD指令集等特性对密码算法性能的影响

news/2024/10/17 15:06:40/

摘要:本文档以XX密码算法为例,研究对CPU的睿频、超线程、SIMD指令集等特性对密码算法性能的影响。初步结结论为:1)睿频很重要,默认是开启的,尽量不要关闭,注意全核睿频通常小于最大睿频(单核睿频);2)超线程的1核2线程性能要打折扣,资源竞争使得2个线程的性能并不是1个线程的2倍,要乘个系数;3)SIMD指令集的确可以改善算法,但与超线程相遇时会显著降低性能;越是高级的SIMD指令就越是降得多。线程个数开到物理核心数而不是逻辑核心数可能是更好的选择。

1. 背景

测试XX密码算法的多线程性能时,多线程的性能数据比我们想象的低得多,多线程时在Intel 10th I7 CPU(8核/16线程)和Intel 11th I7 CPU(8核/16线程)上分别测试了单线程和多线程的性能,每个线程的性能只有单线程性能的60%左右。如下表1。

表1 单线程和多线程性能对比

测试平台

单线程性能S1

(mbps)

16线程性能S16

(mbps)

16线程平均每个线程性能SA(mbps)

效率比值

(SA / S1)

10th I7

Linux GCC

7342

73658

4604

62.7%

11th I7

Win10 VS2019

9790

84156

5260

53.7%

基于此现象,探索下CPU相关设定对多线程性能的影响。

2. 测试平台与测试参数设定

2.1 测试平台

后续测试基于如下平台进行。

  1. CPU:Intel 11th I7(以下信息来至于www.cpu-world.com
    • 基准频率:2.5GHz
    • 睿频:睿频加速技术2.0(Turbo Boost technology 2.0)时,单核最大睿频4.8GHz,全核最大睿频4.4GHz;睿频加速技术3.0(Turbo Boost technology 3.0)时,单核最大睿频4.9GHz;全核最大睿频未列出(估计也是4.4GHz)
    • 核心数:8核/16线程
  2. 操作系统:Win10工作站版
  3. 编译器:VS2019,Release、“最大优化优选速度/O2”、“启用增强指令集:未设置”

2.2 要探究的CPU特征

测试了如下CPU特征在开关时对密码算法性能的影响:

  • 睿频:根据睿频开闭,了解睿频对CPU主频和密码算法性能的影响;
  • 超线程:因该CPU为8个物理核,所以超线程未开启时测试了1、8线程,超线程开启时测试了1、8、16线程,以此了解线程达到物理核心数和逻辑核心数时的性能,以及物理核全功率(线程数等于物理核心数)核逻辑核全功率(开启超线程时线程数设置为逻辑核心数)时的密码算法的性能表现。
  • 指令:分为普通指令、SSE指令、AVX指令、AVX512指令,以了解不同类型指令集实现的密码算法受多线程的影响程度。

3. 测试结果与解释

3.1 测试结果

下表2列出了多线程时每个线程的效率,它是同样参数配置下多线程并行时每个线程的性能除以单线程测试时的性能。例:在“1-3”行和“普通指令”列的数字为75.8%,75.8% =在“1-3”行的参数设定下每个线程的性能 / 同样配置下仅开1线程的性能。测试数据显示,在“1-3”行的参数设定下(睿频开、超线程开),16个线程的总性能为11491 mbps,平均每个线程的性能为11494 / 16 = 718.4 mbps,而仅运行1个线程的性能为948 mbps,因此,效率 = 多线程时每个线程的性能 / 单线程的性能 = 718.4 / 948 = 75.8%

表2 测试效率汇总

序号

睿频

超线程

线程数

普通指令

SSE系列

指令

AVX1+2

指令

AVX512

指令

性能

效率

性能

效率

性能

效率

性能

效率

1-1

1

948

100.0%

2811

100.0%

9790

100.0%

13780

100.0%

1-2

8

6785

89.5%

20262

90.1%

69580

88.8%

90999

82.5%

1-3

16

11491

75.8%

32519

72.3%

84156

53.7%

104483

47.4%

2-1

1

941

100.0%

2828

100.0%

9868

100.0%

13528

100.0%

2-2

8

6784

90.1%

20415

90.2%

69930

88.6%

82439

76.2%

3-1

1

484

100.0%

1450

100.0%

5070

100.0%

7089

100.0%

3-2

8

3881

100.2%

11605

100.0%

39119

96.4%

52201

92.0%

3-3

16

6505

84.0%

18674

80.5%

50987

62.9%

67371

59.4%

4-1

1

485

100.0%

1449

100.0%

5053

100.0%

7095

100.0%

4-2

8

3856

99.4%

11474

99.0%

40325

99.8%

55968

98.6%

3.2 睿频及其对性能的影响

睿频依靠处理器的智能自主处理,会根据实际运行情况智能调整处理器的频率、电压。简言之,忙时提升主频快速处理任务,闲时降低主频省电节能。参见表3。

表3 睿频对主频的影响

CPU闲置时

CPU繁忙时

开启睿频

由设定而定(注1)

高频率运行(如4.8G左右)

关闭睿频

以基准频率运行(如2.5G)

以基准频率运行(如2.5G)

1:根据系统设置不同,闲置状态下的CPU频率可能差异较大;如Win10操作系统的电源计划设定为平衡,则闲置时以低于基准频率的较低频率运行(如1.0GHz);如Win10操作系统的电源计划设定为卓越性能,则闲置时以也会以较高的睿频运行(如4.7GHz)。

例如,图1为开启睿频技术时,CPU繁忙态的CPU处于4.69GHz的高频率状态;图2为关闭睿频技术时,即使CPU处于繁忙状态CPU仍然按基准频率2.5GHz运行。

 

1a) CPU睿频开启时             1b) CPU睿频关闭时

图1 CPU睿频对运行程序的影响

表1中“3-X”和“4-X”关闭睿频使得执行性能大大降低,在实际中没有太多实用价值,这两栏仅供了解即可。

通常有如下两个睿频概念。

  1. 最大睿频:个人理解就是在极少量的高能耗线程(如1个线程)运行时,CPU能够达到的最大频率,基本就是单核最大睿频,如这颗CPU的最大睿频能达到4.9GHz。
  2. 全核最大睿频:所有核都忙于干活儿时,CPU达到的最大睿频。随着开启的高能耗线程越来越多,睿频会逐渐降低,睿频降低的原因估计是功率和温度限制。因此全核最大睿频一般比最大睿频小,如这颗CPU的全核最大睿频能达到4.4GHz。

在测试过程中就发现CPU主频从单线程时的4.8GHz降低至16线程时的4.4GHz,前者就是最大睿频,后者就是全核最大睿频。

3.4 SIMD指令集及其对性能的影响

SIMD指令集有很多,比如128比特并行的SSE指令集、256比特并行的AVX指令集、512比特并行的AVX512指令集。目前已经有很多使用SIMD指令集与其它特定指令集来优化提升密码算法性能的研究,的确也显著改善了密码算法的性能。其性能提升主要与SIMD并行处理的分组数m有关,但性能提升并不会简单粗暴的提升至m倍,这与优化实现的算法、使用指令的指令延时、指令吞吐量等众多因素相关。

3.5 超线程及其对性能的影响

超线程把两个逻辑内核模拟成两个物理核/芯片,让单个处理器就能使用线程级的并行计算,进而兼容多线程操作系统和软件。超线程技术充分利用空闲CPU资源,在相同时间内完成更多工作。

虽然采用超线程技术能够同时执行两个线程,当两个线程同时需要某个资源时,其中一个线程必须让出资源暂时挂起,直到这些资源空闲以后才能继续。因此,超线程的性能并不等于两个CPU的性能。这就使得超线程技术下的两个线程之间会争抢CPU资源。与超线程相关的现象分析如下表。

表4 分析超线程相关测试现象

现象

例子

原因分析

线程数未超过物理核心数时,超线程开关对性能无影响

表1中“1-2”和“2-2”8线程时各指令的效率差异小,如89.5%和90.1%。

显然

线程数未超过物理核心数时,效率有10%的降低

表1中的“1-2”和“1-3”在8线程时,普通指令、SSE指令、AVX指令的效率相差不大,都在90%左右。

应为睿频降低所致,从最大睿频(单核睿频)到全核睿频约降10%。

线程数未超过物理核心数时,超线程使得性能显著降低

表1中的“1-2”和“2-2”开16线程后,普通指令效率骤降为75.8%SSE进一步降至72.3%AVX指令更是降为惊人的53.7%如表5和图2。

物理核内资源竞争所致。猜测越高级指令集,内部越复杂,资源越有限,竞争越激烈,导致效率降低越显著。

表5 普通指令和AVX指令在8线程和16线程时的局部对比

序号

睿频

超线程

线程数

普通指令效率

SSE指令效率

AVX1+2效率

1-2

8

89.5%

90.1%

88.8%

1-3

16

75.8%

72.3%

53.7%

图5 不同指令集在满线程和超线程时的效率对比图

因此,超线程的确是可以提升性能,使用普通指令和SSE指令时,可以考虑利用超线程开启超过物理核心数的线程;但是如果超线程遇到AVX指令或AVX512指令,那性能提升就非常有限了,此时建议谨慎考虑。

4. 初步结论

经过以上初步分析,结论为:

  1. 睿频很重要,默认是开启的,尽量不要关闭,注意全核睿频通常小于最大睿频(单核睿频);虽然在不开启睿频也不开启超线程时,多线程几乎无性能损失,但是又有多少场景能接受CPU全程以低速的基准频率来运行呢。
  2. 指令集对算法的性能提升较为显著,当然这更多取决于密码算法怎样使用SIMD指令来优化密码算法以及SIMD并行处理的分组数。从快速实现的角度讲,也希望更多的密码算法在设计时将并行实现考虑进去。
  3. 超线程可以提升性能,但资源竞争使得2个线程的性能并不是1个线程的2倍;特别是当超线程遇到SIMD指令集时,若使用普通指令和SSE指令时,建议利用超线程开启超过物理核心数的线程,可以进一步提升性能;但超线程遇到AVX/AVX512指令,那性能提升就非常有限了,而且越是高级的SIMD指令有效率越是有限,所以建议谨慎考虑。

密码算法多线程运行时的建议:在密码算法用到了AVX/AVX512等高级SIMD指令时,如果不是一味的追求性能,线程个数开到物理核心数而不是逻辑核心数可能是更均衡的选择。这感觉有点像老鸟在画《龙珠》时,比特兰特斯追求更高能量的超1变身,虽然力量更大但膨胀的肌肉降低了速度,孙悟空更均衡的超1变身考虑了力量和速度的折中。


http://www.ppmy.cn/news/733569.html

相关文章

linux(五)——TX1的cpu/gpu锁频(设置最大频率)

一、背景介绍 主频:CPU自己运算的频率 外频:CPU和外部设备协作的频率 倍频:主频/外频 超频:升高主频,提高运算效率 锁频:一般是为了防止超频,把倍频锁定在特定数字 二、频率的修改 这里以…

MacBook笔记本安装win10后cpu被锁频,无法以满速运行的解决办法

最近把自己的老款08年的MacBook安装了win10,进系统发现本来2.0Ghz的cpu却一直运行在1.5Ghz下,由于MacBook不像普通Windows笔记本可以进BIOS调节参数,只能在安装的系统上想办法,用以下三板斧可以让cpu满速运行 1 在Power Options中…

对Android设备CPU进行锁频

本文对Android设备CPU的状态查看方法和锁频(lock frequency)方法进行详细介绍。这有什么用?作为测试工程师,你值得了解。 CPU频率 首先说下CPU的频率。我们都知道,CPU的工作频率越高,运算就越快,但能耗也更高。然而很多时候&…

笔记本电脑使用电池时CPU锁频0.78GHz

问题 解决方案 下载并打开ThrottleStop,将BD PROCHOT选项的勾去掉,并保存即可。 解决笔记本电脑使用电池时CPU锁频0.79GHz的问题

ThinkpadCPU锁频0.4G问题

1.问题描述 Thinkpad型号:E15 CPU:i5-10210U1.6GHz 系统:Win10家庭版 ThinkpadCPU锁频0.4G,具体是过程是今天我需要去楼下打印东西,要带着笔记本电脑,拔掉电源我就去楼下。 刚开始还是好好的,…

linux下cpu锁定频率以及频率设置

linux下cpu锁定频率以及频率设置 环境如下 ubuntu22.04cpu为5700g 前期准备 使用工具为:cpufrequtils sudo apt-get install cpufrequtils查询cpu相关信息 cpufreq-info# 部分信息如下 analyzing CPU 0:driver: amd-pstateCPUs which run at the same hardware f…

cpu被锁频解除方法_CPU如何去锁频 CPU去锁频的方法

今天给大家带来CPU如何去锁频,CPU去锁频的方法,让您轻松解决问题。 CPU怎么去锁频,你可知道吗?下面将由学习啦小编带大家来解答这个疑问吧,希望对大家有所收获! cpu锁频方法一 这里需要从CPU的倍频和外频和主频说起了 主频=倍频X外频 倍频就是CPU的内部频率,以前的CPU可以…

cpu锁频(cpu锁频软件)

NOKIA6680可以锁频吗?怎样锁频 你要找到专用的6680锁频软件才行.或者拿到手机维修店去,让他们帮你解决,现在很多维修店都有这服务的. 刚卖的E8400是不是没锁频的啊?CPU倍频6.0到9.0一直在 这个很正常,一般用软件测试&a…