除了有关于超线程的部分的部分我不完全赞同以外(因为开启超线程以后,K值提升、层数与棋力未见下降啊!),其余部分完全赞同;如果说棋软分为“核心派”与“线程派”的话,我则是属于“线程派”的 ;但还需要特别说明1点,是个超线程方面的重大误区,如果不对,就会如楼主所言成为“不听话的小孩”,反而拖累整体程序的整体效能!:那就是开启及使用超线程以后,CPU使用率不能达到100%、75%最好;如果办不到(有些引擎不支持),这时才应该关闭超线程,以物理核心运行。
棋中事实先生不能接受楼主关于超线程的说法的根本原因是:你没有搞清楚CPU核心与线程的概念。你把两者看成了独立的,截然不同的东西。我的理解是线程是CPU物理核心以及逻辑核心与软件操作系统及应用程序沟通的渠道,甚至也包括硬件比如芯片组,内存等。比如一个棋软最大支持8线程,也就是通过八条渠道与操作系统和硬件系统沟通,当然最终要通过CPU来运作。如果你的CPU是2600K, 4核心八线程,你把棋软设置成4线程,那么棋软就用四条线程与软硬件系统沟通,最终由CPU的四个物理内核来运算处理。如果你把棋软设置成8线程,则会有八条渠道与软硬件系统沟通,其中的四条渠道最终会交给逻辑核心来处理。也就是所谓的超线程。这时候运行八线程的棋软如果想能最大效率的工作,必要的条件是棋软本身必须具备协调这八条渠道的机制,它应该知道什么时候输送什么信息资料给哪条渠道,每条渠道输送多少信息资料,最终让CPU各个核心(包括物理核心及逻辑核心)顺滑的,尽量无缝的把各种工作的请求处理好。如果棋软没有这样的机制,就会出现楼主所比喻的情况出现,反而造成更多的CPU的空闲,从而更影响CPU的处理性能。怎么样才能有这样的机制?这就需要编写软件的程序员重新编写程序,这项工作需要适合的编译器,以前的编译器对超线程的软件的支持会有这样或那样的不方便或问题,所以把软件编写成支持超线程并非那么简单的事情。据说英特尔已经开始推出新的新编译器,程序设计师很快就可以充分利用HT功能,写出支持HT的单机应用程序,或能在Xeon处理器上运行的网络应用程序。