一、跑分原理:
CPUZ跑分实质是用一个二维噪声函数,来测量浮点运算性能。该跑分程序用C++编写,并使用Visual C++2008来编译。X64版本使用标量SSE/SSE2指令来进行浮点运算,而X86版本使用旧版X87指令(性能几乎是x64性能的一半),不使用任何特殊指令集。
15版跑分:仅在1.78及之前的版本中提供。
17版跑分:取代15版跑分,分数大概是15版跑分除以4。
19版跑分:分数降低约3倍,并附带支持纯AVX指令集跑分功能。
在跑分界面有版本选择。
二、CPUZ跑分优点
CPUZ跑分有如下优点:
- CPUZ程序很小,为最常用软件,且不需要安装。
- CPUZ跑分很快,若分数基本稳定,则只跑10秒,若分数不稳定,会多出一两秒,但总体而言非常短。
- CPUZ跑分不需要任何运行库,且在PE下也能运行,是最大优点。
- 快速测试全核算力和单核算力,可作为CPU性能的衡量指标。
- 分数实时波动,实时输出,可掌握跑分时CPU频率变化。
- 浮点性能与频率基本呈线性相关,可较为容易地看出CPU频率。多核跑分与核心数正相关,并对超线程有良好的适应。
- 不使用任何特殊指令集,确保不同年代产品,不同平台产品比较的公平性。Cinebench R15跑分虽然表面上衡量SSE性能,但是它却与AVX指令集相关,是一个掺杂AVX分数的SSE分数。对于775等没有AVX指令集的CPU,分数降低25%-30%。
而CPUZ恰恰克服了这一缺点,主要跑分使用纯SSE/SSE2进行浮点运算,即使是19跑分中的AVX2和AVX512,也是使用纯AVX2和AVX512指令集进行浮点测量,并不掺杂其他指令集,更具代表性。
三、CPUZ跑分计算方法
CPUZ跑分计算方法(17版本)。CPU频率以GHz为单位,可直观看到每一代酷睿处理器的SSE指令集IPC变化:
后775时代:包括酷睿2双核,奔腾E6系,酷睿2四核,每核跑分等于CPU频率乘以88。
酷睿1代:包括X58系列,等于CPU频率乘以90。
酷睿2代:等于CPU频率乘以98.6
酷睿3代:等于CPU频率乘以105
酷睿4代:等于CPU频率乘以107.8
酷睿5代:数据暂缺,预计与4代相近。
酷睿6代到10代:等于CPU频率乘以120
酷睿SunnyCove:等于CPU频率乘以137
超线程分数计算方法:超线程倍数等于核心数乘以1.26
频率计算方法:
(1)多核分除以超线程倍数,再除以核心数,即可得到全核频率下的单核分。
(2)直接用单核分除以单核跑分时的频率。
计算举例:全核5.0频率的9900K,多核跑分为6050,单核跑分为600,均与公式相差无几。
四、CPUZ跑分问题:
1、如何测量IPC?测单核跑分再除以频率即可。由于CPUZ全核跑分时CPU满载,其他软件难以测得实时频率,所以用单核跑分来测量IPC。
2、为什么跑分不准?主要有如下原因。
① CPUZ跑分会波动,不可能一直保持在某个值。系统负载越小,CPUZ波动幅度越小,在PE下,可以达到基本0波动。
② 系统服务会占用性能,如打开任务管理器,资源监视器,或者后台QQ等程序,都会在一定程度上影响跑分,CPUZ跑分与算力实时相关,所以对系统服务非常敏感。下图为诊断模式下,CPU跑分达到最高。若启动资源监视器,则跑分降低。
③ CPUZ压力比AIDA64的Stress CPU大,比Stress FPU小,在一些笔记本电脑上会造成高温降频,导致分数偏低,一直呈下降趋势,如战66系列。
④ CPUZ单核跑分有BUG,具体体现在两个方面。
第一方面是超线程Bug。实测表明,在2核4线程的CPU上,单核分会偏低,具体体现为单核跑分与上述公式严重不符,多核倍率高达每核1.3到1.35。原因是在核心数少的时候由于Windows 线程调配,使得CPUZ占不满一个核心性能,而仅仅是一个线程的性能。在1核2线程的CPU该问题更为严重,而4核8线程以上CPU则基本无此问题。下图可见,双核的超线程倍率几乎达到了3,而单核分数明显偏低。
关闭超线程后,在PE下跑到了真实的单核分数。可见这一BUG在双核四线程CPU上产生了严重影响,这也是为何CPUZ跑分性状复杂的重要原因。
第二方面是单核频率Bug,intel的CPU往往有较高的单核频率,但多核频率较低。在单核跑分时由于系统有一定负载,而CPUZ跑分程序吃满一个核心,所以极有可能造成CPU频率降低,达不到最高睿频。事实上,只有低负载时,CPU才较有可能升到最高的睿频。
除了上述两个原因之外,也有可能是多核跑分时触发降频,导致核心频率低,在单核跑分时频率上不去,这种情况不是CPUZ跑分Bug,而是系统散热和功耗释放问题。在轻薄本8代之后的CPU上十分常见。
五、关于CPUZ的几个问题和回答。
①为什么多核倍率达不到核心数乘以1.26,而只有核心数乘以1.2左右?
多核倍率等于多核分除以单核分,所以有两个原因:
一是多核跑分偏低,因为系统过热或功耗不够,触发降频机制,而单核跑分时并没有太多功耗和发热控制压力,睿频上升。这种一般在笔记本电脑上多核处理器上常见。另外也有可能是系统负载过高导致分数偏低。
二是单核睿频高,说明CPU全核频率与单核频率差距较大,跑单核分时CPU睿频更高。这种在icelake处理器上十分常见。
②如何跑到正确的分数?
注意以下几点。
(1)关闭其他无关程序,包括任务管理器,资源监视器,和打开的程序。
(2)先勾选线程数为1,跑单核分,再选择所有线程,跑多核分。该方法对于某些多线程处理器不适用,因为CPUZ线程数选择没有提供1,最低提供2。这种情况选择最小的即可。
若有条件,在PE下跑分,若想探究IPC,设法关闭超线程再跑。
下图:多核的CPU可能不提供1线程选项,如10710U,为6核12线程的规格。所以设法关闭超线程是最佳办法。
关于CPUZ跑分的其他内容:
(1)CPUZ压力测试:压力弱于Stress FPU,分数会不断降低,优点是实时可看CPU性能变化情况,但目前还没有测试标准,笔者可能以后会进行研究。
(2)其他:CPUZ跑分具有数据库,位于valid.x86.fr网站上,个人用户也可以上传自己的跑分数据进行比较,但数据库数据并不准确。
六、Win10系统、CPU漏洞对跑分的影响
1、研究方法:
CPUZ跑分的最大特点是PE下仍能完成测试,由于PE基本没有系统负载,故该环境下可视为CPU性能的真实反映。
在诊断模式下,能获得CPU性能较为接近真实的反映。
【PS1:为什么不在安全模式:因为安全模式CPU不能睿频。】
【PS2:注意!进入诊断模式之前,请确认你的Win10能否使用密码登录!因为诊断模式下无网络,故登录界面会要求用密码登录。若你从未用过密码登录,请先确认!万一在该界面无法用密码登录,意味着无法登入诊断模式,也无法回到正常模式!】
系统负载压力比较:
PE下<Win7<Win10诊断模式=Win8. 1<Win10正常模式
系统负载压力越大,跑分越低,系统负载查看方法是资源监视器,服务CPU占用。
研究思路:
(1)PE环境排除了所有因素影响,为CPU的真实性能。
(2)正常模式混杂Win10系统服务和漏洞补丁影响;
(3)诊断模式可视为只有漏洞补丁影响。
2、研究结果
利用CPU这一特性,能够探究CPU漏洞对多核性能的影响,如下表。KB4100347补丁是针对幽灵和熔断漏洞发布的微码补丁,严重影响性能并引发了多种问题。为了探究Win10系统和漏洞补丁究竟有多少影响,笔者作了以下研究,所有数据均来自实测数据。CPUZ跑分有波动性,故读者自测跑分结果不一定是图中分数。
值得一提的是,i7-4720HQ在诊断模式下跑分时,分数一度上升到1914(但并未到1915),而后降低到1910,针对该CPU性能而言,诊断模式已经发挥了完全的性能,与PE下的分数的比较再次说明:漏洞补丁的影响已经降得很低。
另外,幽灵漏洞和熔断漏洞是针对超线程的漏洞,但我们仍看到i5-7500无超线程却受到严重影响,甚至诊断模式下也无法达到PE值,说明诊断模式下仍有一部分Win10系统占用。
★结论:
事实上,从带超线程CPU的测试结果可以看出,Win10 1809已经大幅度缓解CPU微码漏洞补丁造成的性能损失。用户无需担心该问题,也无需讨论漏洞带来的安全问题。对于个人计算机而言,安装大厂杀毒软件(如卡巴斯基、Bitdefender等)+防火墙永远是计算机安全的最佳保障。







