什么是Speed Shift?
英特尔第六代Skylake处理器对原Speed Step技术进行了改进,升级后被称为Speed Shift。这项技术可提升电脑响应速度。它是怎么做到的呢?听我缓缓道来。
为什么要变频?
本专栏前面一篇文章介绍了频率和功耗的关系(为什么CPU的频率止步于4G?我们触到频率天花板了吗?)这里我们来简单回顾一下。
CPU芯片里面有几十亿个晶体管,它们可以简化如下:
Vin的每次变化都要充放电一次,放电的能量被浪费掉了。所以功耗和频率正相关,而且在频率升高后,充放电跟不上这个频率,必须通过提高电压来加速充放电。电压的加大,会导致充放电浪费的电能更加严重。能耗公式如下:
可以看出能耗P和f线性相关,而和电压V是幂函数的关系。由于前面提高的V和f的关系,实际上P=a × f^3,是大致3次幂函数的关系。从下面的实际例子可以验证
i7-2600K频率和功耗的关系
合适的才是最好的
那为了节省能耗,是不是就是低频慢慢干就好了呢?答案是否定的。我们排除浪费时间等因素,只从能耗上考量,如果我们衡量干完某件事需要消耗的整体能量,实际上有两种策略:
1. 保持固定频率,将事情干完,然后CPU进入休息状态。
2. 加速干事情,忍受短时功耗上升,尽快干完事情,尽早让CPU休息。
这和人一样,有些人是慢性子,徐徐图之;而有些人性子急,希望早干完早休息。很难判断哪种好,这就需要量化分析了,好在Intel的工程师已经为我们找到这个平衡点:
既不能磨洋工也不能一味蛮干,只有将频率调整到最合适才是真的好。
Speed Shift出场
那么如何动态调节CPU频率和电压呢?长期关注本专栏的同学也许还记得Intel EIST技术(CPU省电的秘密(一):EIST),是的,它的确可以让操作系统按需调节频率。而这次推出的Speed Shift技术就是它的升级版。它可以让频率转换时间急速缩短:
如上图,蓝色是老的EIST技术,绿色是Speed Shift。可以看出,特殊的频率调变从20ms降到1ms,而整体从最低频到最高频也从100ms降到30ms。这里注意它们都不能从最低频直接跳到最高频,主要是因为电压需要慢慢增加,急速的加压会带来严重问题。
Speed Shift技术概述
Speed Shift技术是EIST的提高版,专栏EIST文章详细介绍了EIST的细节。这里简单总结一下,便于比较它和加强版的区别:EIST技术是BIOS通过一组ACPI表告诉操作系统怎么改变频率,而操作系统负责根据工作量通过这个表改变CPU频率。
我们可以看出,改变频率是操作系统的行为,它全面掌控所有变频行为,而硬件和BIOS只是配合它。这点在Speed Shift做出了彻底改变。它的名字原本叫做Hareware Performance State或Hardware P-state,简称HWP。顾名思义,它的本质是操作系统让渡变频的操控权给硬件,转而只提供性能提示(hint)和控制变频范围,而由硬件自主根据提示工作量快速变化频率。
Skylake的架构如下图:
Intel IDF Skylake架构图片
PCU在电源的管理中扮演的主要角色,正式因为它的就近管理才让变频变得如此迅速。Speed Shift的细节见新的IA32手册(参考资料1),有兴趣的同学可以参阅一下,在第三卷14节。其他Skylake硬件架构方面的探究敬请期待后续文章。
真实性能
是骡子是马,拉出来溜溜。anandtech网站已经做了评测,见参考资料2。这里摘录部分内容:
从中可以看出对于一般家庭使用环境,性能变化只提高了3%-5%。对于突发性能要求高的应用可以提高30%!另据其他评测资料,系统整体突发相应时间减少了20%,还是相当可观的。
结论
看了这些你是不是也跃跃欲试了呢?且慢,用上Speed Shift需要操作系统支持,Windows 10最新版已经提供了支持,但你如果是Win7/Win8那就没有希望了。Linux世界似乎还没有完全支持。
另外Kabylake和Coffeelake对Speed Shift做了调整提升,相应时间更低了。更妙的是这个调整是软件透明的,操作系统不需要改变就能尽享提升带来的好处。还在等什么,快在BIOS里面打开Speed Step吧!
参考资料:
[1] : https://software.intel.com/sites/default/files/managed/39/c5/325462-sdm-vol-1-2abcd-3abcd.pdf
[2]: Examining Intel's New Speed Shift Tech on Skylake: More Responsive Processors