
先看一张截图:

读者可以自己测试一下8线程能否跑出这样的分数,而且是8个真核心全工作。
参考了二川二水的资料室两篇文章和夢想歌一篇文章,这里先定义一下文章次序,下面以“文章1”指向Windows电源设置注释,“文章2”指向反驳关于英特尔大小核的一些传统看法&Windows大小核调度策略的注释 ,“文章3”指向将cpu的线程模拟成大小核,适用于超线程、大小核或x3d。
发现全网的傻瓜教程都有一个错误,那就是SmallProcessorMask这个二进制数值对应核心是倒序的,以“文章2”为准,以Ryzen 5700X为例,以电源计划中的“平衡”计划为模板,指定真核为大核,超线程为小核,那么SmallProcessorMask的二进制数值为1010101010101010,第一个1实际上映射的是第16个线程,即任务管理器中的CPU 15,将二进制数值转化为16进制得出AAAA。支持该数据的证据在电源计划中“生效的异类策略”设置成“使用异类策略3”,Fritz Chess Benchmark跑8线程就会出现本文第一张截图一样全真核满负载跑象棋,超线程接管低负载线程的情况,所以“文章3”里关于SmallProcessorMask的值的描述是错误的。本次测试中,DynamicHeteroCpuPolicyMask=6,DefaultDynamicHeteroCpuPolicy、DynamicHeteroCpuPolicyImportant、DynamicHeteroCpuPolicyImportantShort三个DWORD值=2,DynamicHeteroCpuPolicyImportantPriority=8,注意“文章2”DynamicHeteroCpuPolicyImportantShort是少了一个英文字母的,千万要检查好。
纠正好SmallProcessorMask这个问题后,新问题又出现了,由于Windows电源计划中对第0类的处理器的设置不是很丰富,并且将SmallProcessorMask设置成AAAA后,真核心会非常容易进入休眠状态,因为Windows总是希望第1类核心(即高性能核心)进入休眠状态,Fritz Chess Benchmark跑4线程会出现以下情况:

真核心就跑满两个,其它全交给超线程了(艹)。
尽管这并不影响跑分,但是本人有强迫症,希望大多数真核心使用,而超线程更倾向休眠,那么怎么办呢?将错就错,将真核心定义成第0类处理器,将SmallProcessorMask设置成5555,将DefaultDynamicHeteroCpuPolicy、DynamicHeteroCpuPolicyImportant、DynamicHeteroCpuPolicyImportantShort三个DWORD值=4,如下图:

看到了吧,真核心负载正常了,但又得出另一个问题,就是前后台切换会出现线程迁移的问题,如下图:

注意看本次测试,象棋窗口是出于非激活状态哦,CPU的负载跟SmallProcessorMask设置成AAAA的情况是不是很相似?只是反过来而已。
这时候就要祭出电源计划里“异类线程调度策略 & 异类短运行线程调度策略”,将这两个选项设置成“首选高效处理器”,即可,即绝大部分线程都运行在真核心上,如下图:

4线程测试时前两个真核心在摸鱼,不影响跑分。

6线程测试时,所有真核心都正常工作,调试进入正轨。
先测试一下象棋和CB20同时各用6个线程跑分看看,毕竟超线程只是倾向休眠,而不是真的要禁用超线程:

全部线程都利用上了,有个别负载比较低,因为测试加起来才12个线程。

象棋跑完了,超线程马上摸鱼。
再跑跑两个软件同时各用8个线程看看:

全部线程吃满。

也是象棋跑完,超线程马上摸鱼。
再跑跑两个软件同时各用4线程的情况:

真核心吃满,超线程低负载。

跑完象棋,真核心依然正常运行,但由于CB20窗口是非激活状态,所以第一第二个真核心是低负载。
至此已完成CPU的调度调整,接下来就是一些关于省电的调整,详细可以参考“文章1”的项目说明,或者本人会另外写一篇文章另作说明。