在现有的计算机里,程序由多个执行线程组成的,这些线程是一系列相关指令。在个人电脑时代早期,大多数程序仅含有单个线程。当时的操作系统在某一时间仅能运行一个此类程序。由于系统不能同时处理两项任务,下一个任务必须等到上一个任务处理结束时才能处理,后来的操作系统创新引入了多任务处理,从而能够挂起一个程序,以运行另一个程序。通过使用这种方式来迅速地切换程序,系统能够“看上去”同时运行多个程序。然而,事实上处理器一直运行的仅仅是单个线程。
2003 年,Intel在自家的至强上应用了新的技术:超线程技术,
超线程技术是在一颗CPU同时执行多个程序而共同分享一颗CPU内的资源,理论上能像两颗CPU一样在同一时间执行两个线程,这样,处理器需要多加入一个逻辑处理单元,而其余部分如整数运算单元(ALU)、浮点运算单元(FPU)、二级缓存(L2 Cache)则保持不变,这些部分是被分享的。
虽然采用超线程技术能同时执行两个线程,但它并不像两个真正的CPU那样,每个CPU都具有独立的资源。当两个线程都同时需要某一个资源时,其中一个要暂时停止,并让出资源,直到这些资源闲置后才能继续。因此超线程的性能并不等于两颗CPU的性能。
根据英特尔性能指标评测,通过在含有超线程技术的处理器上运行,采用多个线程编写的应用程序可获得高达 30% 的性能提升。更重要的是,两个程序能够同时在一枚处理器上运行,而无需来回切换(参见图1)。
我们能体会到的好处就是,当在运行一个巨大的游戏的时候,而CPU的占用率还没到100%,所以系统还迅速的在DOC文档的攻略,浏览器搜索引擎里的秘籍以及播放自己喜欢音乐的Winamp中自由的切换。
超线程技术支持在单个处理器内核上同时执行两个线程
然而,超线程技术的性能提升受到了两个执行线程共享资源可用性的限制。结果,由于这些共享资源之间的争用,超线程技术不能实现两枚独立处理器的处理吞吐率。如果想在单个芯片上实现更出色的性能提升,处理器就需要两个单独的内核,这样每个线程就能拥有其专属的整套执行资源。