Performance 什么是「;假脱机时间“;英特尔涡轮增压器?

Performance 什么是「;假脱机时间“;英特尔涡轮增压器?,performance,x86,benchmarking,intel,cpu-speed,Performance,X86,Benchmarking,Intel,Cpu Speed,就像涡轮发动机由于涡轮增压需要的时间而具有“涡轮滞后”,我很好奇英特尔处理器中的“涡轮滞后”是什么 例如,我的MacBook Pro 15“2018(运行macOS Catalina 10.15.7)中的i9-8950HK在空闲时通常位于1.3 GHz左右,但当我运行CPU密集型程序时,CPU频率会飙升,比如说4.3 GHz左右(最初)。问题是:从1.3 GHz到4.3 GHz需要多长时间?1微秒?1毫秒?100毫秒 我甚至不确定这取决于硬件或操作系统 这是在一些CPU密集型代码的上下文中,它需

就像涡轮发动机由于涡轮增压需要的时间而具有“涡轮滞后”,我很好奇英特尔处理器中的“涡轮滞后”是什么

例如,我的MacBook Pro 15“2018(运行macOS Catalina 10.15.7)中的i9-8950HK在空闲时通常位于1.3 GHz左右,但当我运行CPU密集型程序时,CPU频率会飙升,比如说4.3 GHz左右(最初)。问题是:从1.3 GHz到4.3 GHz需要多长时间?1微秒?1毫秒?100毫秒

我甚至不确定这取决于硬件或操作系统

这是在一些CPU密集型代码的上下文中,它需要10毫秒才能运行。问题是,在这段CPU密集型代码运行之前,CPU基本上是空闲的(因此时钟速度将下降到1.3 GHz).我想知道我的基准测试的哪一部分运行在1.3 GHz,哪一部分运行在4.3 GHz:1%/99%?10%/90%?50%/50%?甚至更糟


根据答案,我认为在启动基准测试之前运行一些CPU密集型代码是有意义的,这是一种“启动”TurboBoost的方法。这引出了另一个问题:我应该运行这个“启动”多久“密码?也许一秒钟就足够了,但是如果我试图最小化这个问题——为了确保CPU以执行第一条指令时的最高频率运行主代码,“假脱机”代码的安全运行时间是多少呢?

我编写了一些代码来检查这一点,并借助于。它休眠一秒钟(因此CPU回到其最慢的速度),测量时钟速度,在给定的时间内运行一些代码,然后再次测量时钟速度

我只在运行macOS Catalina 10.15.7的2018 15英寸MacBook Pro(i9-8950HK CPU)上尝试过这一点。时钟速度测量之间运行的特定CPU密集型代码也可能会影响结果(是否仅为整数?FP?SSE?AVX?AVX-512?),所以不要把这些作为精确的数字,而只是数量级/大概的数字。我不知道结果如何转化为不同的硬件/操作系统/代码组合

在我的配置中,空闲时的最小时钟速度是1.3 GHz。以下是我以表格形式获得的结果

+--------+-------------+
| T (ms) | Final clock |
|        | speed (GHz) |
+--------+-------------+
| <1     | 1.3         |
| 1..3   | 2.0         |
| 4..7   | 2.5         |
| 8..10  | 2.9         |
| 10..20 | 3.0         |
| 25     | 3.0-3.1     |
| 35     | 3.3-3.5     |
| 45     | 3.5-3.7     |
| 55     | 4.0-4.2     |
| 66     | 4.6-4.7     |
+--------+-------------+
+--------+-------------+
|T(毫秒)|最终时钟|
||速度(GHz)|
+--------+-------------+
|本文介绍了各种英特尔处理器的转换延迟。简言之,延迟取决于内核当前的状态以及目标状态。对于经过评估的常春藤桥接处理器(i7-3770@3.4 GHz),延迟从23(1.6 GHz->1.7 GHz)到52(2.0 GHz->3.4 GHz)微秒不等

在会议上,已经介绍了未来冰湖处理器的一项重大转换延迟改进,这将主要影响使用AVX-512指令的部分矢量化代码。虽然这些指令不支持SSE或AVX-2指令那样高的频率,但使用这些指令的孤岛会导致性能下降-以及处理器频率的后续缩放

预热处理器以及“预热”内存显然是有意义的。先前工作负载的一秒钟足以达到最高可用的涡轮频率,但是您还应该考虑处理器的温度,这可能会降低频率(如果谈到最新的英特尔处理器之一,实际上是CPU核心和非核心频率)。您无法在一秒钟内达到温度限制。但这取决于您希望通过基准测试测量什么,以及您是否希望考虑温度限制。在谈到温度限制时,请注意处理器也有功率限制,这是在测试期间降低频率的另一个可能原因应用程序运行


在对代码进行基准测试时,您应该考虑的另一个想法是,代码的运行时间非常短。请注意运行时/资源消耗测量的可靠性。我建议人为地扩展运行时(运行代码10次,并测量总体消耗)为了获得更好的结果。

我认为这部分取决于您(或您的操作系统)为CPU的硬件频率选择设置的
能量性能偏好
(或
…\u偏差
).但是,是的,在Skylake衍生的CPU上,如您的CPU,它可以让CPU选择自己的频率,可能是10微秒,具有积极的EPP设置。请注意,涡轮频率不是唯一的“预热”"一些基准测试需要:如果你的基准测试接触到一个阵列,在定时运行之前先接触它是一个好主意;第一次访问会导致页面错误。更多信息,请参阅。我想笔记本电脑的CPU频率提升非常保守是有意义的。这是电池还是交流电源?我不知道MacOS是否使用硬件p-state,或者它是否使用软件是否控制CPU频率(直到“额定”最大非turbo,在这一点上,即使在较旧的CPU上,也由硬件决定何时实际turbo)。我的Arch GNU/Linux i7-6700k桌面在1ms内跳到最大值,我敢肯定,通过硬件p状态控制,能量性能参数设置=“平衡性能”。它是交流电源。好奇的是,你怎么知道你的桌面在1毫秒内就能完成呢?
perf stat./a.out
显示整个过程的平均时钟速度(使用硬件性能计数器测量周期,除以CPU时间),即使是很短的总时间也显示出接近max turbo的平均值。此外,我从Intel关于Skylake硬件p-state功能的IDF2015演示中了解到,其中一个主要点是对突发性工作负载(如网页渲染)做出非常快的反应为了使其快速,然后迅速降低到空闲状态。板载电源管理微控制器评估数据并以微秒为单位做出决策。已经