win7操作系统对多核的支持

来源:互联网 发布:免费伪装地理位置软件 编辑:程序博客网 时间:2024/04/30 08:49
微软从windows vista开始增加对多核的支持,但是直到win7才真正改善了底层的技术。

第一款桌面双处理器处理器于2005年出现在市场上,发型的产品包括Intel Pentium D和AMD Althon 64 X2.这时的双处理器只是工艺上允许在一个封装里容纳两个CPU,而非真正意义上的双核。这些年来,有很多双处理器可以选择,然而这些仅仅意味物理上把两个CPU放在一起,并且功耗增加一倍。

市场上主流的操作系统Windows XP只提供了最基本的双核支持。Windows XP和Windows Server 2003能够把两个逻辑核看成Core0和Core1,并且可以支持进程亲和(Process Affinity),用户程序可以被指定在某一个核上运行。在绝大多数时间里,应用程序都在第一个核上运行,但在一些情况下,比如游戏程序可以同时在两个核上运行。然而运行情况并不是很理想。

微软从vista开始着手于双核的问题,引入了多种机制来避免冲突、死锁等问题。多核技术在不断发展,而vista的开发周期虽然很混乱,但是也有很多重要特性被引入。

微软在操作系统内核层能对多核提供的支持非常有限。微软更多的是在应用层利用多核的优势,通过大量修改Visual StudioIDE和各种SDK在尽可能的支持多线程。

Intel也在研究工具来将程序并行化,同AMD一起想微软提供他们自己的开发者支持。但是,Intel,AMD在CPU上、以及微软在操作系统上做出的努力都无法让Adobe Photoshop并行化,这样的工作只能由Adobe自己完成。

通过微软的Visual Studio 2010以及即将发布的一系列工具可以更容易的设计多线程、并行化应用。这里面包括Task ParallelLibrary尽可能并行的运行重复的任务,Parallel Language Intergrated Query用于并行数据运算,Microsoft ConcurrencyRuntime用于将资源调度管理构建到应用中,Asynchronous Agents Library以及用于C++的Parallel Pattern Library。


从Vista开始

也有微软可以做的事情。从XP开始,然后扩展到Vista,微软逐渐引入对一些新技术的支持,如非一致性存储结构(NUMA)系统,普适预取(pervasive prefetching),改进的DLL加载器让进城创建更高效,以及改进的线程池技术。Vista可以支持单个进城多个线程池。


Vista有一种称为"反护航(anti-convoy)特性"来避免大量线程被阻塞时性能的下降。比如我们经常发现某个时候整个系统突然停住了,并且不接受任何输入,然后突然又恢复正常。这就是convoy锁住了一切。

如果有10个线程需要某一资源,但只有9个线程得到资源,那么10个线程都会被锁住。而Vista会让需要资源的线程进入得到资源的状态,然后让实际上不能获得资源的线程回退。

Win7在这基础上建立
Win7和Windows Server 2008一同开发,两者基于同一内核,可以支持最多256个核。AMD和Intel已经开发出6/8核处理器,因而一个
多处理器系统的核数会很大,比如四个八核多处理器封装在一起共有32个核和64个线程。

Windows  XP是在对称多处理(SMP)时代开发的产物,而在多线程CPU如新的i5/i7上,多个核被视为独立的物理节点,每个节点有自己本地的Memory,节点访问本地的Memory比访问其他节点的Memory更快。Win7基于NUMA概念。把每个核视为一个功能节点,在节点间管理线程,并且允许在多个核间分割和分配Memory。

这带来很多头痛的问题,比如对分配的同一块memory的覆盖和冲突。NUMA架构下允许把一块memroy分配给一个core,但是其他core也可能需要访问这快数据,这时就需要能把memory从一个核上搬运到另一个核,从vista开始微软增加实现这种功能的C函数。

Win7在多核,尤其是支持NUMA的处理器如i5/i7上表现更佳。而功耗方面的管理能力也增强了。Intel的Nehalem结构动态监控各个核,并在某个核休息时关闭它来节电。而在win7以前,处理器只要空闲就可以分配线程,这样很难有处理器可以休息,应用程序只能创建线程,而不能决定线程被分配到那个核上。而在Win7下,同一应用的多个线程尽可能的被调度在一个核上,这样重复利用了处理器的affinity,并且使得其他核有空闲节电的机会。

另外微软实现了基于“SMT Parking”技术的多任务的改进.这个技术对于Windows 7支持英特尔超线程技术的调度程序提供了额外的支持.采用超线程技术,Windows 7操作系统能够把一个处理器内核看作是两个内核.例如,一个4核的系统看起来会像8核的系统一样,因此,可能改善多任务功能,或者能够同时完成多项任务.

另外码农小店请支持哦~http://deepdiscuz.taobao.com/


原创粉丝点击