内容导航
Hyper-Threading技术和操作系统
主板通过BIOS同操作系统进行通讯,所以如果要构建一个支持HT技术的系统,主板的BIOS也是关键的一个因素。只有通过支持HT技术的BIOS,系统才能识别出来应用了HT技术的处理器中的逻辑处理器。目前,Intel推荐用户使用Windows XP系统来支持HT技术,不过用户如果使用支持多处理器的Windows操作系统,那么操作系统依然可以利用其内部的逻辑处理器。操作系统还是认为系统中安装了两颗处理器,并且像传统的DP系统一样分配任务。
基于Windows的服务器从主板的BIOS中取得处理器信息。主板厂商或者说BIOS厂商需要按照Intel的规格开发相应的BIOS。假设BIOS是按照Intel规范编写的,它就开始计算安装在主板上的每一个物理处理器中的第一个逻辑处理器,当它找到所有的处理器中的第一个逻辑处理器,那么马上就会计算所有物理处理器核心中的第二个逻辑核心,如此继续,如下图所示:

对于上图需要说明的是逻辑处理器的概念对于BIOS和Windows系统是存在的,但是Windows系统报告处理器的数目还是安装物理处理器的数目来计算的
BIOS采用上述方式对于系统中的逻辑处理器进行计数非常的重要,不然的话,Windows 2000或者其它的应用程序可能仅仅会利用一个逻辑处理器而不是利用整合物理处理器来进行计算了,这样的结果是事倍功半了。
对于一个支持双处理器的应用程序来说,在上图所示的情况下,如果它无法识别逻辑处理器而把逻辑处理器当做物理处理器,那么很可能会把一颗处理器中的两个逻辑核心当做两个独立的物理核心来使用,这样的它的性能肯定不如同时使用两颗物理处理器的时候性能更高。也就是说当这个程序使用1、2两个逻辑核心的性能肯定比使用1、5两个逻辑核心的性能要高。
Windows 2000 Server是无法区分物理处理器和逻辑处理器之间的差别的,它仅仅能够利用BIOS识别出来的每一个物理处理器当中的第一个逻辑处理器。比如,当你启动一个安装有Windows 2000 Server系统的4路计算机系统的时候,假设这个系统使用的处理器都应用了HT技术,Windows仅仅会利用8个逻辑处理器中的四个,也就是对于W2K Sever来说使用了HT技术的处理器同普通的处理器一样使用。
但是当你在同样的计算机系统上安装Windows 2000 Advanced Server (支持8CPU),这个时候系统就会把4颗采用了HT技术的处理器中的8个逻辑处理器全部利用起来,如下图所示:

虽然Windows在这种情况下利用了所有的逻辑处理器,但是说到性能还是8个物理处理器更高一些。
只要BIOS支持HT技术,Windows .NET Server就可以区别逻辑处理器和物理处理器之间的区别。这是.NET相对于Windows2000最大的优势之一,即使你购买的是支持双处理器的Windows.NET,那么它也能利用其中全部的4个逻辑处理器,而不是其中的两个逻辑处理器,如下图所示:

目前的Windows.NET Beta3已经实现了对于HT技术的支持。这对于用户来说,应该是物尽其用了,否则由于你的版本的限制,无法完全发挥采用了HT技术的处理器的性能。
顺便提及的是,不管应用程序是否专为HT技术设计,还是采用了多线程技术编写,Intel希望现在应用程序可以不经过修改就能在应用了HT技术的系统上正确的运行,并且为这个目标努力着。
虽然Windows2000兼容HT技术,或者说可以在使用了HT技术的处理器上正常的运行,但是并不能充分的发挥这种处理器的优势,所以建议在采用了这种技术的计算机系统上使用Windows.NET Server操作系统。主要是因为Windows .NET Server可以充分的利用采用HT技术的处理器中的逻辑处理器,不在把逻辑处理器同物理处理器混淆,导致本来8处理器的版本的系统只能使用4颗采用了HT技术的处理器的情况的发生。我们都希望HT技术能够进一步提高Windows .NET Server系统的性能。
下面的表格列出了不同版本的Windows对于处理器的支持情况:
|
2-way |
4-way |
8-way |
Windows Server Product |
Physical |
Logical |
Physical |
Logical |
Physical |
Logical |
Windows 2000 Server |
2 |
4 |
4 |
4 |
n/a |
n/a |
Windows 2000 Advanced Server |
2 |
4 |
4 |
8 |
8 |
8 |
Windows 2000 Datacenter Server |
n/a |
n/a |
4 |
8 |
8 |
16 |
Windows .NET Web Server |
2 |
4 |
2 |
4 |
n/a |
n/a |
Windows .NET Standard Server |
2 |
4 |
2 |
4 |
n/a |
n/a |
Windows .NET Enterprise Server |
2 |
4 |
4 |
8 |
8 |
16 |
Windows .NET Datacenter Server |
n/a |
n/a |
4 |
8 |
8 |
16 |
|
16-way |
24-way |
32-way |
|
Physical |
Logical |
Physical |
Logical |
Physical |
Logical |
Windows 2000 Server |
n/a |
n/a |
n/a |
n/a |
n/a |
n/a |
Windows 2000 Advanced Server |
n/a |
n/a |
n/a |
n/a |
n/a |
n/a |
Windows 2000 Datacenter Server |
16 |
32 |
24 |
32 |
32 |
32 |
Windows .NET Web Server |
n/a |
n/a |
n/a |
n/a |
n/a |
n/a |
Windows .NET Standard Server |
n/a |
n/a |
n/a |
n/a |
n/a |
n/a |
Windows .NET Enterprise Server |
n/a |
n/a |
n/a |
n/a |
n/a |
n/a |
Windows .NET Datacenter Server |
16 |
32 |
24 |
32 |
32 |
32 |