在内核级别上,Windows 7相对于Windows Vista的一个重要改进就是完善对多核心处理器和多线程应用程序的支持,理论上可以带来更高的性能、更大的灵活性和更低的能耗。
那么在多核心处理器上,Windows 7的性能是否真的会高于Vista呢?我们在一台戴尔Precision T3500工作站上进行测试,配置有Nehalem Xeon W3540 2.93GHz四核心处理器、4GB内存、NVIDIA Quadro FX 4800显卡等,并使用三块完全相同的硬盘,分别安装Windows XP SP3、Windows Vista Ultimate SP2、Windows 7 Ultimate,均是32位版本。
测试项目 (结果越大越好) | XP SP3 | Vista Ultimate SP2 | 7 Ultimate |
SPEC Viewperf 10(关闭SMT) | 95.84 | 142.95 | 139.35 |
SPEC Viewperf 10(开启SMT) | 93.45 | 145.30 | 138.80 |
CineBench R10(关闭SMT) | 3.43 | 3.40 | 3.48 |
CineBench R10(开启SMT) | 3.98 | 4.07 | 4.09 |
在SPEC Viewperf 10测试中,Windows 7的得分相比于XP高出了45-49% 之多,看起来绝对值得升级,不过注意相比于Vista却有轻微下滑,好在差距不大。CineBench R10结果略有不同,三套系统的成绩其实相差无几,就绝对值而言Windows 7倒是最好的。
另外在开启超线程技术后,三套系统的CineBench R10成绩都有明显提升,但SPEC Viewperf 10里只有Vista获得了稍好的性能,Windows 7和XP都有小幅度倒退。
Windows 7的多线程性能看起来似乎并不比Vista强,但事实上并没有这么简单。一个线程如果要读取某个可能被其他线程使用的项目,必需使用程序锁保证任何时候只 能有一个线程对其进行修改。在此前的操作系统中,线程需要访问程序锁的时候必需向内核指令分配程序锁发送请求,但这种处理机制是全局性的,所以一旦系统内 处理器数量增加,就会出现瓶颈。其实这正是Windows系统(包括服务器版本)此前最多只能运行在64个处理器核心上的根本原因。
Windows 7则引入了一种新的机制,绕过全局程序锁概念,支持处理器核心数量因此增加到了256个 ,而且不会同时伴随性能损失,只不过在系统处理器核心较少的时候旧有机制并不会超载,所以Windows 7在桌面和小型服务器工作站上很难明显提高多线程性能。
再来看看另外一个话题:能耗。
Windows 7可以将多个线程处理到同一条执行管线里,因此处理器能够关闭空闲管线上的晶体管,节省能耗。我们在开启超线程的情况下在SPEC Viewperf中执行四个线程,这就意味着会有一半管线很清闲甚至空闲。
Viewperf能耗测试 | XP SP3 | Vista Ultimate SP2 | 7 Ultimate |
平均能耗(W) | 247 | 248 | 207 |
测试结果证明了Windows 7内核多线程处理机制的有效性,系统能耗相比XP/Vista都降低了16% ,整整40W,所以从建设节约型社会的角度说,也应该升级到Windows 7。