随着英特尔全新酷睿微体系架构(Nehalem)的发布,很多人对该架构内采用的一些新技术表示出了浓厚的兴趣。英特尔超线程(HT)技术即在其中。超线程技术适用于全新的英特尔酷睿i7 处理器和英特尔至强5500 系列处理器。下文将详细介绍英特尔超线程技术的一些细节:
问:什么是英特尔超线程技术?
答:英特尔超线程技术是全新英特尔酷睿i7处理器和英特尔至强5500系列处理器所具有的一种性能特点。简单来说,它可使处理器中的1颗内核如2颗内核那样在操作系统中发挥作用。这样一来,操作系统可使用的执行资源扩大了一倍,大幅提高了系统的整体性能。
在谈论内核、线程、超线程这些术语时容易让人产生混淆。为使后文便于理解,将把“超线程”称为“硬件线程”,将“操作系统级线程”称为“软件线程”。为简化概念,1 个内核就是 1 个CPU。每个英特尔酷睿i7或英特尔至强5500 处理器在出厂时均有 4 个内核(未来可能会提供其他版本)。
问:如何知道我的系统是否在使用超线程(HT)技术?
答:首先,可以先确认下,是否使用的处理器、芯片组、操作系统及 BIOS支持这项技术。当然,采用基于英特尔全新酷睿微体系架构(Nehalem)的处理器的台式机和服务器平台一般都支持该技术。其中大多数系统都允许把超线程技术作为一种 BIOS 选择来启用或禁用(一般预设为启用状态)。用户可以通过 Windows中的任务管理器或 Linux的 /proc/cpuinfo 命令查看处理器 信息。如果系统支持超线程(HT)技术且启用了超线程,则可看到的处理器数将是平台实际拥有的物理内核数的一倍。例如,如使用的是双路的英特尔至强5500 系列服务器,则会看到这套系统拥有16 个处理器。(8 个物理内核上运行 16 个软件线程,每个内核运行 2 个线程。)
在超线程技术禁用状态(上图)和启用状态(下图)下,同一平台上可用的 CPU 数量。
问:我可以在同一内核的 2 个不同线程上同时执行 2 个应用程序么?
答:可以。在 1 个内核上运行的 2 个软件线程不一定非得是同一进程的线程。这 2 个软件线程既可以是同一进程的线程(在多线程软件情况下),也可以是 2 个单独的应用程序的线程。至于哪 2 个软件线程可以在 1 个超线程内核的 2 个硬件线程上运行则由操作系统决定。因此,答案是肯定的,即可以在同一内核上同时执行 2 个不同的应用程序。
问:超线程技术是如何实现的?
答:所有基于英特尔全新酷睿微体系架构(Nehalem)的处理器内核都可以执行两个独立的指令集。不同的任务切换会需要处理器从一个指令的解码/任务调配工作迅速切换到另一个指令的解码/任务调配。而所有运算资源在在两个硬件线程内是可以共享或是重复的。
问:我是否可以赋予一个硬件线程优先权以保证它不会“饿着”?
答:软件开发人员有很多方法可以通过优化代码来配合超线程技术的使用。尽管不能特别指出让某一个硬件线程具有优先权(当然一些操作系统层面的工具是允许你将处理器设定运算优先级的)。采用英特尔超线程技术可以确保某个硬件线程不会“饿着”。而需要做的只是采用英特尔VTune Performance Analyzer和英特尔线程档案器来诊断使用中的硬件线程是否运转效率足够,并正在进行最优化的运作。
问:如果使用英特尔超线程技术,会对系统的性能有什么样的提高?
答:英特尔超线程技术可以有多种方式帮助提升运算性能。对于台式机系统来说,英特尔超线程技术可以帮助台式机同时进行多项应用。针对软件编程者来说,通过英特尔超线程技术,你可以采用更多的软件线程以获得更多的运算核心。对于运算负荷更大的服务器来说,英特尔超线程技术可以激发出每个核心的运算潜能,将从而提升系统的资源利用率。总而言之,由于英特尔超线程技术将通过提供更多的软件线程,从而在运算时可以享受到更大内存等的应用体验。