https://www.jianshu.com/p/342480d917e3
When someone refers to a P-state, generally only the frequency is talked about. For example, on my Intel® Core™ processor, P0 is 2.3 GHz, and P1 is 980 MHz. In truth, a P-state is both a frequency and voltage operating point. Both are scaled as the P-state increases.
The effect of reducing frequency
It's obvious that performance is directly related to frequency. We all know that increasing the frequency, increases a processor's performance. The same applies for decreasing the frequency. If you halve the frequency, a compute bound task runs half as fast. For example, if your task is compute bound, requiring 100 % of the CPU for 1 second at 2 GHz, it will take 2 seconds to execute at 1 GHz. (This is roughly correct. There are a host of other factors influencing runtime, such as cache size and speed, interrupts, etc.)
Now wait a moment. If we reduce the frequency, increasing the runtime of an application, how does this increase battery life? If we are decreasing the frequency, we are increasing the CPU utilization and reducing the % idle time. See the frequency half of Figure A below. This shouldn't have any effect on the power usage of the processor. It's running all that time anyway.
You're right, historically. This was the case years ago with those ancient generations old processors. Though I don't know this for a fact, I suspect that in some cases, decreasing the percent idle time might have increased energy usage since increased processor activity increases instantaneous power, and we're decreasing the % idle time (i.e. time of low activity). This is where voltage scaling comes into play. There are two primary reasons for P-states, one is to reduce the peak thermal load, and the other is to save power.
Reducing peak thermal load
The reasons why you want to reduce the peak thermal load is pretty obvious. The instantaneous energy usage (power) of the processor is related to its activity. If the processor is very busy, requiring a lot of gates to do a lot of switching, it runs hotter. So reducing the frequency reduces the peak thermal output even if the total energy usage is not reduced. The advantage of reducing peak thermal load has to do with cost. The effectiveness of your cooling is based upon peak power, not average power. (I'm neglecting the effect of thermal inertia.) So if you can reduce peak power, you reduce the cost and size of the equipment having to do the cooling.
P-state 在Intel平台上通常指的是EIST
P-state是CPU频率和操作点电压的结合;
处理器性能和主频是直接相关的。增加主频可以增加处理器性。反之,即哪个低主频则降低性能。如果将主频减半,计算任务就会降低一半速度。不过,如果降低主频,但是增加CPU使用率并且降低idle时间百分比,则会影响电池使用时间。
引入P-state的两个主要原因是:降低尖峰时热能负载,以及降低能耗。
注:Linux下的pstate是一个driver,指的是intel_pstate。
Intel_pstate driver
• 调节器(Governors)反映了用户策略决定:
§ intel_pstate只支持powersave和performance策略,其他驱动支持更多策略。
§ intel_pstate是一个调节器,并且hw驱动是一个整体,所以传统上这个governor是和hw驱动隔离的。
• intel_pstate "performance" 策略总是选择最高的p-state
§ 完全不考虑节能
• intel_pstate "powersave" 策略尝试平衡性能和节能
intel_pstate驱动监视使用率并能够决定何时增加或减少p-state。这个方式和其他governors类似。
CPU有一个标称频率(BASE Frequency),即在普通状态下,BIOS关闭Turbo开关的话,CPU的最高频率;即P1;
P0 - P1 是 turbo频率;P0是Turbo的最高频率,不保证;
P1 - Pn 是 保证范围(操作系统可见的状态)
Pn - LFM 是 温度控制范围