双核多核时代的Windows 7如何跑的更快

微软Windows7发布后受到了市场和用户的追捧 。虽然Windows7的内核主要建立在Vista代码的基础上,但其几个主要的进展摆脱 Vista给用户带来的烦恼,大大改善了用户体验 。在内核中,一项重大的改变就是如何提升多线程应用的运行 。该进展带来的好处就是降低了能耗,提升了可扩展性,并在理论上提高了性能 。
为了验证Windows7对桌面电脑带来的好处,技术人员采用最常用的反映多线程能力的桌面应用程序(即图形导向的软件)进行了测试 。例如Adobe Photoshop和其它图形应用软件在启动和功能配置时自我检测桌面系统的负载量 。在这种状况下,图形软件一般会使用所有的处理器内核和几乎全部的内存,使得系统能够提供最快的性能 。技术人员一般用VIEwperf基准测试(一个综合性的图形测试软件,由SPEC标准性能评估公司颁布的)和 Cinebench测试(这是一个单纯的图形渲染测试基准工具),这两个软件是免费的,可以从相关的网站下载后使用 。
测试的硬件平台是戴尔PrecisionT3500工作站 。戴尔T3500是一款入门级工作站,一般用于高端图形用户 。它有四核心 XeonW3540(Nehalem架构)处理器,2.93GHz的主频,一块NvidiaFXquadro4800显示卡,4GB的内存 。这种配置大约是12至18个月后高端桌面系统的主流水平 。
在此次测试中,技术人员使用了三块相同的硬盘驱动器,戴尔工作站预装了WindowsXP专业版、Vista旗舰版和Windows7旗舰版,都是基于32位的,并且是最新版本的驱动程序 。然后,技术人员在每个操作系统运行的基准测试 。当测试下一个操作系统时,会将前一次测试时用的硬盘换掉,以确保每次测试时不同版本的操作系统运行在系统的硬件上 。最后的测试结果如下表:
三个版本Windows的性能基准测试结果
测试基准 (数值大的好)Windows XP SP3Windows Vista SP2Windows 7 UltimateSPEC Viewperf 10 (SMT off)95.84142.95139.35SPEC Viewperf 10 (SMT on)93.45145.30138.80Cinebench 10 (SMT off)3.433.403.48Cinebench 10 (SMT on)3.984.074.09
这些结果表明,在考虑是否部署Windows7时,性能应该被视为是从WindowsXP升级到Windows7的合理理由,但性能的因素不足以让Vista用户转向Windows7 。Windows7基于Vista内核的因素使得两者的性能比较接近 。
让人惊讶的是,Windows7的多线程变化并没有提供更多的性能提升 。对此的解释是Windows7如何来管理超线程 。Windows7多线程能力的主要变化包括增加处理器的亲和力和 Windows内核调度锁定的变化 。这种被称作“玻璃眼的技术是现代操作系统的核心内容,也即内核如何阻止两个线程在同一时间内访问相同的数据或资源 。
任何时候,一个线程想要访问一个可能另一个线程也需要访问的数据,就必须使用锁定机制,以确保只有一个线程可以修改该数据 。在 Windows7之前,当一个线程需要获取或访问一个锁定时,它需要通过一个全球性的锁定机制 。这种机制通过内核调度锁来处理提出的要求 。但因为它是独特的、全球性的,它处理的需求可能来自数以千计的Windows硬件平台 。因此,这个调度锁就成为了一个主要瓶颈 。事实上,这也是 WindowsServer在相当长的一段时间内最多只能在64个处理器上运行的主要原因 。
新的锁定机制
Windows7包括一个全新的机制,摆脱了全球锁定的概念,将推锁定管理进入到对资源的锁定 。这允许Windows7扩展到256个处理器而没有性能损失 。在只有少数处理器的系统里,由于旧的内核调度锁不是负担过重,所以这个新的机制对于台式机和小型服务器而言性能的提升不是很明显 。
虽然SMT运行时不可见,但可以预料的是,基准测试会利用一切可用的资源 。当运行四个线程的带SMT功能的Viewperf基准测试时,结果基本保持不变 。

推荐阅读