【发布时间】:2021-01-22 14:04:21
【问题描述】:
就像涡轮增压引擎由于涡轮加速需要时间而具有“涡轮迟滞”一样,我很好奇英特尔处理器中的“涡轮迟滞”是什么。
例如,我的 MacBook Pro 15" 2018(运行 macOS Catalina 10.15.7)中的 i9-8950HK 通常在空闲时位于 1.3 GHz 左右,但当我运行 CPU 密集型程序时,CPU 频率会飙升至比如说 4.3 GHz 左右(最初)。问题是:从 1.3 到 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 的一种方式是有意义的。这就引出了另一个问题:我应该运行这个“spooling-up”代码多长时间?可能一秒钟就足够了,但是如果我试图将其最小化怎么办——“假脱机”代码运行的安全时间是多少,以确保 CPU 将以最大频率运行主代码执行的第一条指令?
【问题讨论】:
-
我认为这部分取决于
energy_performance_preference(或..._bias)设置你(或你的操作系统)为CPU的硬件频率选择设置。 (Linux 问答:What are the implications of setting the CPU governor to "performance"?)。但是,是的,在像你这样的 Skylake 派生 CPU 上远低于 1 毫秒,这让 CPU 可以选择自己的频率,使用激进的 EPP 设置可能需要 10 微秒。 -
请注意,涡轮频率并不是某些基准测试所需的唯一一种“预热”:如果您的基准测试涉及一个数组,那么在您的定时运行之前先触摸它是个好主意;第一次访问会导致页面错误。更多信息请参见Idiomatic way of performance evaluation?
标签: performance x86 benchmarking intel cpu-speed