2006-01-24 09:53 | 作者: | 来源: | eNet硅谷动力 |
在现有的计算机里,程序由多个执行线程组成的,这些线程是一系列相关指令。在个人电脑时代早期,大多数程序仅含有单个线程。当时的操作系统在某一时间 仅能运行一个此类程序。由于系统不能同时处理两项任务,下一个任务必须等到上一个任务处理结束时才能处理,后来的操作系统创新引入了多任务处理,从而能够 挂起一个程序,以运行另一个程序。通过使用这种方式来迅速地切换程序,系统能够“看上去”同时运行多个程序。然而,事实上处理器一直运行的仅仅是单个线 程。
2003 年, Intel在自家的至强上应用了新的技术:超线程技术,
超线程技术是在一颗 CPU同时执行多个程序而共同分享一颗CPU内的资源,理论上能像两颗CPU一样在同一时间执行两个线程,这样,处理器需要多加入一个逻辑处理单元,而其余部分如整数运算单元(ALU)、浮点运算单元(FPU)、二级缓存(L2 Cache)则保持不变,这些部分是被分享的。
虽然采用超线程技术能同时执行两个线程,但它并不像两个真正的CPU那样,每个CPU都具有独立的资源。当两个线程都同时需要某一个资源时,其中一个要暂时停止,并让出资源,直到这些资源闲置后才能继续。因此超线程的性能并不等于两颗CPU的性能。
根据 英特尔性能指标评测,通过在含有超线程技术的处理器上运行,采用多个线程编写的应用程序可获得高达 30% 的性能提升。更重要的是,两个程序能够同时在一枚处理器上运行,而无需来回切换(参见图1)。
我们能体会到的好处就是,当在运行一个巨大的游戏的时候,而CPU的占用率还没到100%,所以系统还能迅速的在DOC文档的攻略,浏览器搜索引擎里的秘籍以及播放自己喜欢音乐的Winamp中自由的切换。
![intel,双核](http://images.enet.com.cn/iflow/articleimage/200601/1138001965832.gif)
图1. 超线程技术支持在单个处理器内核上同时执行两个线程
然而,超线程技术的性能提升受到了两个执行线程共享资源可用性的限制。结果,由于这些共享资源之间的争用,超线程技术不能实现两枚独立处理器的处理吞 吐率。如果想在单个芯片上实现更出色的性能提升,处理器就需要两个单独的内核,这样每个线程就能拥有其专属的整套执行资源。
![intel,双核](http://images.enet.com.cn/iflow/articleimage/200601/r_1138002571750.jpg)
图2 不支持超线程技术的单核心处理器
这是一块单核心不支持HT技术的处理器
我们可以看到,当CPU在整数单元工作时,浮点单元是闲置的,而反过来浮点单元工作时,整数单元就闲置,当然这样就造成了CPU资源浪费,为了解决这个问题。HT超线程技术出现了。
支持超线程的单核心CPU HT(Hyper-Threading Technology)超线程技术:
因为在CPU中多集成了一个逻辑处理单元,这个多集成的逻辑处理单元可以使用另外一个逻辑处理单元不使用的资源。这样,在同一时间里,CPU同时可以处理一个整数运算和一个浮点运算。这样大大的改善了之前的资源浪费情况。提高了运行效率。这就是超线程技术
![intel,双核](http://images.enet.com.cn/iflow/articleimage/200601/r_1138002948224.jpg)
图3支持超线程技术的处理器
当然,新的问题也同时诞生了,如果同时只进行整数运算或者只进行浮点运算呢?这样的话,CPU就无法享受HT技术了,在只进行整数运算或只进行浮点运算时,HT技术是不起作用的
![intel,双核](http://images.enet.com.cn/iflow/articleimage/200601/r_1138003033665.jpg)
图4当只进行浮点运算时超线程技术的资源利用情况
那么,怎么改善这种情况呢?OK,双内核技术解决了这个问题
![intel,双核](http://images.enet.com.cn/iflow/articleimage/200601/r_1138003173973.jpg)
图5不支持超线程技术的双内核处理器
双内核处理器因为具有两个完整的内核,所以同时可以进行两个整数或者两个浮点运算,这样极大的提高了系统的利用效率,从而推动了系统性能的提升。
又是但是,现在又回到单核心处理器遇到的问题,另外一个单元在双内核处理器里不是还是闲置么?有人说过双内核 CPU不可以支持HT技术么?
支持超线程技术的双核心处理器
![intel,双核](http://images.enet.com.cn/iflow/articleimage/200601/r_1138003405389.jpg)
图6支持超线程技术的双内核处理器
这种设计带来的好处是前所未有且显而易见,但是唯一的坏处就是较高的制造成本,所以现在拥有超线程技术的双内核处理器只有在高端的PentiumEE 和一部分Xeon上才拥有。我们知道,在支持超线程的处理器的机器上,支持多CPU的WINDOWS会认出两个CPU。而在支持双内核处理的机器上, WINDOWS也会认出两个CPU,在支持超线程双内核的处理器上,WINDOWS会认出四个CPU!哦,这就开始牵扯到一个软件授权的问题了。
软件支持
我们知道,以往的软件,凡是为多路CPU做过优化的软件一般都需要付出额外的资金来获得对多路CPU的支持。比如最典型的Windows,在服务器操 作系统上,如果需要支持更多处理器的Windows,就需要支付更高的价钱。但是这个问题不会发生在装备双核心处理器的电脑上,微软和多家软件公司以及承 诺最后的收费标准是按照物理CPU数量来决定而不是CPU核心的数量来决定。那么大家关心的兼容性问题呢,是不是会造成软件不兼容的情况呢?答案是否定 的,双核心系统在运行没有对其进行优化的软件时和单核心系统不会有什么差异。因此不会造成早先的软件在新处理器上出现兼容性问题。
http://www.enet.com.cn/article/2006/0124/A20060124496415_2.shtml