Intel推出超线程技术已经很长一段时间了,最先是当时频率最高的P4 3.06GHz一枝独秀,率先支持超线程技术。到了现在,所有的800MHz外频的Northwood都已经搭上这趟快车了。然而很多用户用上了支持超线程的硬件,却从来不知道可以打开超线程功能,更别说更好地利用这项技术带来的性能提高了。笔者在这篇文章里面就要与大家分享有效利用超线程技术的可行方法。
超线程技术简介
通常提高处理器性能的方法是提高主频,加大缓存容量。但是这两个方法因为受工艺的影响在一定的时期有一定的限制。于是处理器厂商希望通过其他方法来提升性能,比如设计良好的扩展指令集,又比如更精确的分支预测算法。超线程技术也是一种提高处理器工作效率的方法。
简单的说,超线程功能把一颗P4处理器由内部分成了两个“虚拟”的处理器,而且操作系统认为自己运行在多处理器状态下。这是一种类似于多处理器并行工作的技术,但是其实只是在一个处理器里面多加了一个架构指挥中心(AS),其实AS就是一些通用寄存器和指针等,两个AS共用一套执行单元,缓存等其他结构,使得在只增加大约5%左右的核心大小的情况下,通过两个AS并行工作提高效率。
上图说明超线程对软件来说看起来象两个处理器。
上图更清晰地说明了双处理器系统(右图)和具有超线程技术的单处理器系统(左图)的区别。
更具体的技术我们可以参看当初Intel推出桌面超线程处理器时的技术文章,我们只要记住超线程就是让操作系统相信你有两个处理器,也就是一个CPU当两个用的技术。
要实现超线程技术需要具备三个条件。
处理器支持
主板支持,包括老主板升级BIOS支持
操作系统支持(windows xp能很好支持,windows 2k也可支持,windows 98,windows NT不支持)
这在当初2002年底推出的时候没有多少人的机器能满足条件,但是目前新配机器的用户应该很容易满足这样的要求。如果您的机器满足这样的条件,不妨继续看下去。
超线程技术对性能的影响
首先我们要知道,超线程技术对性能的影响与使用的软件有直接联系,不能一概而论。有的读者以为两个处理器可以提高双倍性能,笔者要告诉大家就算真的有两个物理CPU并行工作也根本不可能有这样的提高。据Intel方面解释,超线程技术能够提高30%以上的性能。据目前测试和使用的情况来看,除非运行某些特别为超线程,多任务优化代码的软件,否则超线程对系统性能的提高比较有限。当然,因为windows XP系统对超线程支持较好,打开超线程之后,系统整体性能会有一定提高,而且在实际使用中用户一般多项任务同时处理,在这种状态下,打开超线程对整体性能的提高还是比较明显的。
然而,如果程序只支持单线程的话,打开超线程不会有性能上的提高,而且刚刚我们提到超线程技术的两个虚拟逻辑处理器使用一套执行单元,缓存。如果两者之间产生竞争资源的情况,系统会增加一定的延迟,就有可能产生打开超线程之后性能反而下降的情况。因为超线程本身是由服务器领域转化到桌面系统的,甚至有的软件,有的硬件还可能和超线程产生兼容性问题,如果打开超线程,软件就不能运行,或者运行不正常。据我们了解,一些PC供应商,比如DELL,在整机出货的时候默认关闭超线程,就是考虑到可能存在一定兼容性问题,而且性能提高有限甚至有少数反而下降。
当然总的来说,超线程技术带来的是正面的影响,能够在不提高系统频率的情况下提高性能,是当前CPU设计的大势所趋。随着软件的成熟,系统的完善,如今的超线程技术已经基本不会产生多大的兼容性问题了,所以笔者建议如果大家的机器能够打开超线程,又是使用windows XP操作系统,还是打开超线程比较合算。
如何确认超线程技术被打开
当主板BIOS中打开超线程支持之后,系统启动时有的主板就能显示对超线程的支持,认出两个处理器,如下图。
进入系统之后更是可以在设备管理器里面认出两个处理器。
更加直观的方法是打开任务管理器之后,进入性能选项卡,可以看到CPU使用记录栏里面有两个CPU的使用记录,如下图。
完美控制超线程对性能的影响
笔者刚刚的分析中提到,有些特定的应用程序在打开超线程的时候会变慢,有的甚至运行不正常,如果遇到这种问题,你怎么办?通常的办法只能是在BIOS里面关闭超线程,代价就是系统大多数程序以及系统本身效率下降,虽然幅度不大,但是对性能的影响仍然存在。特别是一些专门使用多媒体压缩的用户,哪怕是5%以内的性能提高都可以使压缩时间大为缩短。而且超线程的确在这一方面特别有效。那么有没有方法使得你又享受超线程带来的快感,同时减小它带来的不良影响呢?
首先我们自然而然会想到在操作系统中对那些受超线程不良影响的程序指定使用单处理器模式,这是完全可行的。
在任务管理器里面找到如上图的设置附属,选择CPU0,不要选CPU1,如下图所示。这样这个任务就被分配给了真实的CPU,而不是虚拟的CPU1。
如果你具备了双CPU,又都支持超线程,那么系统里面会出现4个CPU,在这里,前两个是真实的,后两个是虚拟的,大家不要搞错。
这种方法虽然控制了超线程的应用,但是存在一些问题
系统自带的任务管理器太过简单,而且每次都要手动选择,它不会记住你的选择
一些全屏运行的程序在切换时会发生锁死。
笔者介绍一种更有效的工具:THG Task Assignment Manager。这本来是一款用在多处理器系统里面分配任务的工具,但是因为超线程系统也有两个处理器,加上它可以解决上文所说的问题,所以这里成为任务管理器的替代者很合适。下载之后,直接解开运行,看到程序主界面。
这个面板就是用来分配处理器的,只要选中一个任务,点下面的分配就可以调出分配窗口,这里和系统自带的区别不大。
第二个面板才是这款软件的重点,它可以指定分配方案,并且记住,下次只要再开程序还是会产生效果。分配方法是:用Browse找到要分配的程序,点Add后,指定一个CPU。
实际分配方案
按笔者上面提到的方法,我们把我们认为可能受到超线程不利影响的程序都分配给CPU0来执行,那么我们可以在不关闭超线程的情况下,降低超线程带来的负面影响。根据实际测试,使用自己分配的方案可以在超线程起反作用的时候提高性能。
至于到底应该给什么程序分配单线程,什么程序分配超线程,具体情况只有具体分析。每一款程序不同,每一台机器也不一样,大家要自己摸索结论了。笔者这里提供一些经验。
对于打开超线程后产生问题的软件,尝试仅用物理处理器。
如果你经常频繁使用两款软件,比如你一边压mp3,一边写文章,又如一边扫毒,一边上网。这种情况你可以尝试分别分配两个处理器给不同工作,这样比起操作系统自己分配要好。
有一些用户经常整夜压音乐,压MPEG 4或者其他格式电影。这种情况下可以自己作评测:用一段测试片断,分别运行在仅用物理处理器和使用系统默认自动分配任务两种状态,看哪一个更加快。这样可以为你节省很多时间。
有一些用户专门运行科学计算程序,比如MATLAB,比如MATHEMATICA,还有很多行业软件,比如电路设计软件,三维建模软件。一些著名软件已经越来越多地为超线程优化,但是仍有不少软件不能很好支持超线程。这些软件您更有必要自己测试一下,因为很多时候一些程序一运行就是几天,甚至几个礼拜,对这种程序榨干系统的性能很重要。
对游戏用户,超线程并不会有多大帮助。
总结
超线程如今已经不是什么新鲜东西了,但是真正用好超线程仍然不简单,大多数用户仅仅知道让操作系统自动分配任务。通过笔者今天的分析,大家应该更加清楚超线程的优点和缺点,使用笔者推荐的软件和任务分配方案,大家可以做到对自己系统的微调。当然这里笔者只是提出建议,真正的方案一定要大家自己尝试了。希望大家能够利用好超线程,不为新技术白白付钱。
最后笔者提一句:如果你超前于大众,已经使用了多处理器系统,那么本文的方法对你更加有启发作用,你可以尝试多种分配方案,找到适合自己的最佳方案!
超线程技术简介
通常提高处理器性能的方法是提高主频,加大缓存容量。但是这两个方法因为受工艺的影响在一定的时期有一定的限制。于是处理器厂商希望通过其他方法来提升性能,比如设计良好的扩展指令集,又比如更精确的分支预测算法。超线程技术也是一种提高处理器工作效率的方法。
简单的说,超线程功能把一颗P4处理器由内部分成了两个“虚拟”的处理器,而且操作系统认为自己运行在多处理器状态下。这是一种类似于多处理器并行工作的技术,但是其实只是在一个处理器里面多加了一个架构指挥中心(AS),其实AS就是一些通用寄存器和指针等,两个AS共用一套执行单元,缓存等其他结构,使得在只增加大约5%左右的核心大小的情况下,通过两个AS并行工作提高效率。
上图说明超线程对软件来说看起来象两个处理器。
上图更清晰地说明了双处理器系统(右图)和具有超线程技术的单处理器系统(左图)的区别。
更具体的技术我们可以参看当初Intel推出桌面超线程处理器时的技术文章,我们只要记住超线程就是让操作系统相信你有两个处理器,也就是一个CPU当两个用的技术。
要实现超线程技术需要具备三个条件。
处理器支持
主板支持,包括老主板升级BIOS支持
操作系统支持(windows xp能很好支持,windows 2k也可支持,windows 98,windows NT不支持)
这在当初2002年底推出的时候没有多少人的机器能满足条件,但是目前新配机器的用户应该很容易满足这样的要求。如果您的机器满足这样的条件,不妨继续看下去。
超线程技术对性能的影响
首先我们要知道,超线程技术对性能的影响与使用的软件有直接联系,不能一概而论。有的读者以为两个处理器可以提高双倍性能,笔者要告诉大家就算真的有两个物理CPU并行工作也根本不可能有这样的提高。据Intel方面解释,超线程技术能够提高30%以上的性能。据目前测试和使用的情况来看,除非运行某些特别为超线程,多任务优化代码的软件,否则超线程对系统性能的提高比较有限。当然,因为windows XP系统对超线程支持较好,打开超线程之后,系统整体性能会有一定提高,而且在实际使用中用户一般多项任务同时处理,在这种状态下,打开超线程对整体性能的提高还是比较明显的。
然而,如果程序只支持单线程的话,打开超线程不会有性能上的提高,而且刚刚我们提到超线程技术的两个虚拟逻辑处理器使用一套执行单元,缓存。如果两者之间产生竞争资源的情况,系统会增加一定的延迟,就有可能产生打开超线程之后性能反而下降的情况。因为超线程本身是由服务器领域转化到桌面系统的,甚至有的软件,有的硬件还可能和超线程产生兼容性问题,如果打开超线程,软件就不能运行,或者运行不正常。据我们了解,一些PC供应商,比如DELL,在整机出货的时候默认关闭超线程,就是考虑到可能存在一定兼容性问题,而且性能提高有限甚至有少数反而下降。
当然总的来说,超线程技术带来的是正面的影响,能够在不提高系统频率的情况下提高性能,是当前CPU设计的大势所趋。随着软件的成熟,系统的完善,如今的超线程技术已经基本不会产生多大的兼容性问题了,所以笔者建议如果大家的机器能够打开超线程,又是使用windows XP操作系统,还是打开超线程比较合算。
如何确认超线程技术被打开
当主板BIOS中打开超线程支持之后,系统启动时有的主板就能显示对超线程的支持,认出两个处理器,如下图。
进入系统之后更是可以在设备管理器里面认出两个处理器。
更加直观的方法是打开任务管理器之后,进入性能选项卡,可以看到CPU使用记录栏里面有两个CPU的使用记录,如下图。
完美控制超线程对性能的影响
笔者刚刚的分析中提到,有些特定的应用程序在打开超线程的时候会变慢,有的甚至运行不正常,如果遇到这种问题,你怎么办?通常的办法只能是在BIOS里面关闭超线程,代价就是系统大多数程序以及系统本身效率下降,虽然幅度不大,但是对性能的影响仍然存在。特别是一些专门使用多媒体压缩的用户,哪怕是5%以内的性能提高都可以使压缩时间大为缩短。而且超线程的确在这一方面特别有效。那么有没有方法使得你又享受超线程带来的快感,同时减小它带来的不良影响呢?
首先我们自然而然会想到在操作系统中对那些受超线程不良影响的程序指定使用单处理器模式,这是完全可行的。
在任务管理器里面找到如上图的设置附属,选择CPU0,不要选CPU1,如下图所示。这样这个任务就被分配给了真实的CPU,而不是虚拟的CPU1。
如果你具备了双CPU,又都支持超线程,那么系统里面会出现4个CPU,在这里,前两个是真实的,后两个是虚拟的,大家不要搞错。
这种方法虽然控制了超线程的应用,但是存在一些问题
系统自带的任务管理器太过简单,而且每次都要手动选择,它不会记住你的选择
一些全屏运行的程序在切换时会发生锁死。
笔者介绍一种更有效的工具:THG Task Assignment Manager。这本来是一款用在多处理器系统里面分配任务的工具,但是因为超线程系统也有两个处理器,加上它可以解决上文所说的问题,所以这里成为任务管理器的替代者很合适。下载之后,直接解开运行,看到程序主界面。
这个面板就是用来分配处理器的,只要选中一个任务,点下面的分配就可以调出分配窗口,这里和系统自带的区别不大。
第二个面板才是这款软件的重点,它可以指定分配方案,并且记住,下次只要再开程序还是会产生效果。分配方法是:用Browse找到要分配的程序,点Add后,指定一个CPU。
实际分配方案
按笔者上面提到的方法,我们把我们认为可能受到超线程不利影响的程序都分配给CPU0来执行,那么我们可以在不关闭超线程的情况下,降低超线程带来的负面影响。根据实际测试,使用自己分配的方案可以在超线程起反作用的时候提高性能。
至于到底应该给什么程序分配单线程,什么程序分配超线程,具体情况只有具体分析。每一款程序不同,每一台机器也不一样,大家要自己摸索结论了。笔者这里提供一些经验。
对于打开超线程后产生问题的软件,尝试仅用物理处理器。
如果你经常频繁使用两款软件,比如你一边压mp3,一边写文章,又如一边扫毒,一边上网。这种情况你可以尝试分别分配两个处理器给不同工作,这样比起操作系统自己分配要好。
有一些用户经常整夜压音乐,压MPEG 4或者其他格式电影。这种情况下可以自己作评测:用一段测试片断,分别运行在仅用物理处理器和使用系统默认自动分配任务两种状态,看哪一个更加快。这样可以为你节省很多时间。
有一些用户专门运行科学计算程序,比如MATLAB,比如MATHEMATICA,还有很多行业软件,比如电路设计软件,三维建模软件。一些著名软件已经越来越多地为超线程优化,但是仍有不少软件不能很好支持超线程。这些软件您更有必要自己测试一下,因为很多时候一些程序一运行就是几天,甚至几个礼拜,对这种程序榨干系统的性能很重要。
对游戏用户,超线程并不会有多大帮助。
总结
超线程如今已经不是什么新鲜东西了,但是真正用好超线程仍然不简单,大多数用户仅仅知道让操作系统自动分配任务。通过笔者今天的分析,大家应该更加清楚超线程的优点和缺点,使用笔者推荐的软件和任务分配方案,大家可以做到对自己系统的微调。当然这里笔者只是提出建议,真正的方案一定要大家自己尝试了。希望大家能够利用好超线程,不为新技术白白付钱。
最后笔者提一句:如果你超前于大众,已经使用了多处理器系统,那么本文的方法对你更加有启发作用,你可以尝试多种分配方案,找到适合自己的最佳方案!
回复Comments
作者:
{commentrecontent}