银行 社区服务 每日签到 会员排行 网站地图
  • 6822阅读
  • 34回复

关于超线程在中国象棋软件上的应用的探讨

楼层直达
级别: 少尉
[棋中红钻2级]发帖数量≥100篇 [未点亮棋中黄钻]金币数量<100枚 [未点亮棋中蓝钻]乐币数量<10枚 [未点亮棋中粉钻]贡献值数量<1点 [未点亮棋中彩钻]精华帖数量<1篇
发帖
164
金币
58
威望
1
贡献值
0
乐币
0
主题
7
— 本帖被 棋中论坛 从 棋软讨论 移动到本区(2012-11-24) —

最近坛子里掀起了一阵对超线程及对棋软的作用的讨论,其中出现了一些对超线程认识上的廖误和偏差。特开此帖谈谈本人的看法,欢迎不同意见参加讨论。

一. 什么是超线程

    CPU生产商为了提高CPU的性能,通常做法是提高CPU的时钟频率和增加缓存容量。不过目前CPU的频率越来越快,如果再通过提升CPU频率和增加缓存的方法来提高性能,往往会受到制造工艺上的限制以及成本过高的制约。
基于在实际应用中,很多因素令CPU的执行单元不能被充分使用,如果CPU不能正常读取数据(总线/内存的瓶颈),其执行单元利用率会明显下降, 因而造成了CPU性能不能得到全部的发挥。

    因此,Intel则采用了另一个思路去提高CPU的性能,让CPU可以同时执行多重线程,就能够让CPU发挥更大效率,即所谓“超线程(Hyper-Threading,简称“HT”)”技术。超线程技术就是利用特殊的硬件指令,把一个真正的CPU物理核心分成两个,一个是真正的核心,英文叫physical core(物理核心),另外一个是从属核心,英文叫Logical core(逻辑核心)。逻辑内核只是被模拟成物理芯片,让单个处理器核心都能使用线程级并行计算,也就是说超线程技术是在一颗CPU同时执行多个程序而共同分享一颗CPU内的资源,理论上要像两颗CPU一样在同一时间执行两个线程,这样就减少了CPU的闲置时间,提高的CPU的运行效率。

    以i7 2600K为例,就是把四个逻辑内核模拟成四个物理芯片。当在BIOS里打开超线程设置后(BIOS里的Hyper-threading设置成Enable),在操作系统中看到的CPU数量是实际CPU物理核心数量的两倍,就是原本一个物理核心的可以看到两个,两个的可以看到四个, 四个的可以看到八个......。方法是打开Windows任务管理器(同时按下Ctrl、 Alt、 Del键), 然后在资源监视器的窗口内就可看到原本四个物理内核的2600K变成了八个所谓的CPU: CPU0, 1, 2, 3, 4, 5, 6, 7。

    虽然采用超线程技术能同时执行N个线程,但它并不象N个真正的CPU那样,每个CPU都具有独立的资源。当两个线程都同时需要某一个资源时,其中一个要暂时停止,并让出资源,直到这些资源闲置后才能继续。因此超线程的性能并不等于两颗CPU物理核心的性能。

    需要注意的是,含有超线程技术的CPU需要芯片组、操作系统及应用程序软件支持,才能发挥该项技术的优势。要想使用超线程或将超线程的威力发挥出来,需要五大基本的条件:

1.  CPU要支持HT。
2. 主板芯片要支持HT。
3. 双通道内存。
4. 操作系统的支持。
5. 应用程序的支持。

    据我所知,目前真正支持HT的应用程序可以说是凤毛麟角。已经支持HT的应用程序,其实是无心插柳之作:例如Adobe的Photoshop与微软的Windows Media Decoder在推出之前,都为了查错的原因,而在上市前加入了多线程功能。

二. 超线程可以在中国象棋软件的运行中发挥作用吗?

     这个问题首先要对照上述的关于使用超线程的五大条件,
其中最关键的一点是我们现在使用的中国象棋软件是否支持超线程。很多人有个误解:说棋软的参数设定上有个参数叫THREAD(翻译成中文就是线程), 他就认为既然是线程,
如果棋软信息中显示最大支持线程是8, 就可以设成8线程,尽管他的CPU只有四个物理核心。其实这是个天大的误解,除非你的象棋软件是支持超线程的,否则棋软里说的THREAD是指真正的CPU物理核心。能进行计算的是真正的CPU物理核心,而逻辑核心只是起到减少CPU物理核心空闲的作用。假设一个游戏可以用4核,我们很清楚,这时候最有效的办法是把任务分配到4个真实的物理核心上,如果你明明只有四个CPU物理核心,却在棋软里设置成八线程,不支持超线程的棋软会把八线程需要处理的资料并行交给你的四个物理核心及四个逻辑核心,因为它可分不清哪4个是真实的物理核心,哪4个是HT技术带来的逻辑核心,这时候问题就来了,可是在系统眼里,那8个核心是完全等同的,没有高低贵贱之分,所以很大的可能性是系统把任务分配到了所有物理核心及逻辑核心上了。可悲的事情就这样发生了,逻辑核心与物理核心争抢资源,虽然采用超线程技术能同时执行两个线程,但它并不象两个真正的CPU那样,每个CPU都具有独立的资源。当两个线程都同时需要某一个资源时,其中一个要暂时停止,并让出资源,直到这些资源闲置后才能继续。(这时候物理核心的处理性能大受影响,逻辑核心所发挥的性能还不如物理核心所损失的,所谓得不偿失),这样等于脱了裤子放屁,效率反而低于关掉超线程只用四个物理核心计算的情况。

    这就是为什么当你打开BIOS里超线程而运行棋软的时候,你的CPU占用率不能达到100%, 这说明CPU物理核心没有被充分利用,有一部分工作分配给了逻辑核心,但逻辑核心的工作还是要靠物理核心的计算来完成的,因此造成了真正的CPU物理核心的空闲时间加大。此外,在BIOS里打开超线程支持后,如果处理器以双处理器模式工作,那么处理器内部缓存就会被划分成几区域,互相共享内部资源。对于不支持多处理器工作的软件在运行时效率反而较低,出错的概率也要比单处理器高很多。

    现在再说说当下的棋软有那些是支持超线程的,据我所知,没有一个象棋软件的作者或是代理商宣称他们的软件是支持超线程的,如果有的话那我恭喜你,你可以利用超线程去提高软件的效率,比如你是4核心八线程的CPU,就可以使用支持八线程的软件而把THREAD设置成8。 本人使用的是象棋旋风四,代理商的指引是让你设置成与你物理核心数量相等的线程数,换言之就是旋风四不支持超线程技术。因此我认为如果你使用的是不支持超线程的棋软,就没有必要打开超线程,因为打开超线程后处理器内部缓存就会被划分成多于单纯使用物理核心时所划分的区域,并且互相共享内部资源,结果造成单个的子系统性能下降。

结论:

除非你使用的是支持超线程的软件,否则不要期望HT能为你的机器性能带来什么改变。打开超线程反而降低了处理器的性能,而且打开超线程后要使用CPU内部更多的晶体管,从而产生更多的热量,如果你是一个超频玩家,打开超线程会使得CPU温度比关闭超线程高约9度,自然对超频产生不利的影响。
本帖最近评分记录: 2 条评分 金币 +10 威望 +1
级别: 少尉
[棋中红钻2级]发帖数量≥100篇 [未点亮棋中黄钻]金币数量<100枚 [未点亮棋中蓝钻]乐币数量<10枚 [未点亮棋中粉钻]贡献值数量<1点 [未点亮棋中彩钻]精华帖数量<1篇
发帖
291
金币
55
威望
0
贡献值
0
乐币
0
主题
3
只看该作者 34楼 发表于: 2013-02-06
楼主分析透彻,使人豁然开朗,茅塞顿开。
级别: 宣传大使
[棋中红钻3级]发帖数量≥500篇 [未点亮棋中黄钻]金币数量<100枚 [未点亮棋中蓝钻]乐币数量<10枚 [棋中粉钻5级]贡献值数量≥50点 [未点亮棋中彩钻]精华帖数量<1篇
发帖
558
金币
16
威望
0
贡献值
63
乐币
4
主题
11

只看该作者 33楼 发表于: 2013-02-06
原创内容,感谢分享!
原创内容,感谢分享!其实赢棋不只是机器强就能赢,还有软件,开局库和人机操作的因素。所以居士赢棋不能全归功于
打开了超线程。请照我帖子里的方法测试一下,看看哪种方法你的软件上层快,这比K值的参考价值更大。有的软件K值很高,但棋力却比K值低于它的软件差。比如阿童木64位2U,其K值比旋风四4U 64位版本还高,但棋力的差距还是挺大的。所谓K值是说一秒钟内软件算了多少个走法,如果在计算走法的时候是省略了很多分支或计算,算出的走法自然较多,但关键是质量不是数量。请在BIOS里先关掉超线程,设置成THREAD = 4 ,看看哪种的效率更好一点。像2600K这样快的CPU,也许
打开和关掉超线程从感官上觉得分别不大,但还是让数值来说话,玩棋软毕竟机器性能强一点比弱一点好。能做到的事情又何乐而不为呢?
级别: 三级士官
[棋中红钻1级]发帖数量≥10篇 [未点亮棋中黄钻]金币数量<100枚 [未点亮棋中蓝钻]乐币数量<10枚 [棋中粉钻1级]贡献值数量≥1点 [未点亮棋中彩钻]精华帖数量<1篇
发帖
51
金币
74
威望
0
贡献值
1
乐币
0
主题
2
只看该作者 32楼 发表于: 2013-01-31
这些个理论问题,好多人搞不明白,一句话,尚未定论。
而最有说明力,最可行,最简单的方法,就是在自已的电脑上试验。
与其在理论上,推测来推测去,不如大家都来说说自已的使用效果。
一个人的经验不能算可靠,人多了,验证的效果就可靠多了。
从我个人的使用效果来看,K值有提高,上层快了一些。所以,我愿意开着超线程
级别: 少尉
[棋中红钻1级]发帖数量≥10篇 [未点亮棋中黄钻]金币数量<100枚 [未点亮棋中蓝钻]乐币数量<10枚 [未点亮棋中粉钻]贡献值数量<1点 [未点亮棋中彩钻]精华帖数量<1篇
发帖
71
金币
19
威望
1
贡献值
0
乐币
0
主题
10
只看该作者 31楼 发表于: 2012-12-30
前面一个笔记本就是因为弄的设置不好烧毁了。。。
级别: 中尉
[棋中红钻3级]发帖数量≥500篇 [棋中黄钻2级]金币数量≥1000枚 [棋中蓝钻1级]乐币数量≥10枚 [未点亮棋中粉钻]贡献值数量<1点 [未点亮棋中彩钻]精华帖数量<1篇
发帖
657
金币
1710
威望
0
贡献值
0
乐币
10
主题
13
只看该作者 30楼 发表于: 2012-12-23
高人啊,厉害!
级别: 少尉
[棋中红钻2级]发帖数量≥100篇 [未点亮棋中黄钻]金币数量<100枚 [未点亮棋中蓝钻]乐币数量<10枚 [未点亮棋中粉钻]贡献值数量<1点 [未点亮棋中彩钻]精华帖数量<1篇
发帖
207
金币
48
威望
0
贡献值
0
乐币
0
主题
6
只看该作者 29楼 发表于: 2012-12-05
回 楼主(棋中西风) 的帖子
学习了,谢谢楼主,正在领会文章kingston
级别: 少尉
[棋中红钻2级]发帖数量≥100篇 [未点亮棋中黄钻]金币数量<100枚 [未点亮棋中蓝钻]乐币数量<10枚 [未点亮棋中粉钻]贡献值数量<1点 [未点亮棋中彩钻]精华帖数量<1篇
发帖
164
金币
58
威望
1
贡献值
0
乐币
0
主题
7
只看该作者 28楼 发表于: 2012-11-27
我是看到你这么倾向于原线程说得玩的 AMD的CPU当然不在考虑范围之列,如果还是倾心于原线程可以考虑不支持超线程的英特尔处理器

另外,我最近得到了一个重要认识:超线程的先进性足足大于原线程的一倍!也就是说,当使用超线程的朋友购买的CPU为32条线程时、倾向于原线程的坛友则只有十六核心(线程)。线程数越多的情况越是如此


原线程这个词是你发明的吧?这样会在概念上产生混淆。

如果能满足我文中提到的五个条件,超线程对电脑效率的提升也只不过是百分之十几,到不了百分之二十。这个问题可查询下专业人士。说超线程可以使得电脑性能提升一倍,这个从超线程的原理上根本说不通,CPU的物理核心并没有增加一倍,效能怎么可能成倍增长呢?可以这样说,即使CPU的物理核心数增加了一倍,效能也不可能按比例增加一倍。先生在发表软硬件见解的时候不能道听途说,或凭个人感觉,这样对其他人容易产生误导作用。
级别: 中尉
[棋中红钻2级]发帖数量≥100篇 [棋中黄钻1级]金币数量≥100枚 [未点亮棋中蓝钻]乐币数量<10枚 [未点亮棋中粉钻]贡献值数量<1点 [未点亮棋中彩钻]精华帖数量<1篇
发帖
293
金币
746
威望
3
贡献值
0
乐币
2
主题
21
只看该作者 27楼 发表于: 2012-11-25
回 26楼(棋中西风) 的帖子
我是看到你这么倾向于原线程说得玩的 AMD的CPU当然不在考虑范围之列,如果还是倾心于原线程可以考虑不支持超线程的英特尔处理器

另外,我最近得到了一个重要认识:超线程的先进性足足大于原线程的一倍!也就是说,当使用超线程的朋友购买的CPU为32条线程时、倾向于原线程的坛友则只有十六核心(线程)。线程数越多的情况越是如此
级别: 少尉
[棋中红钻2级]发帖数量≥100篇 [未点亮棋中黄钻]金币数量<100枚 [未点亮棋中蓝钻]乐币数量<10枚 [未点亮棋中粉钻]贡献值数量<1点 [未点亮棋中彩钻]精华帖数量<1篇
发帖
164
金币
58
威望
1
贡献值
0
乐币
0
主题
7
只看该作者 26楼 发表于: 2012-11-25
回 24楼(其中事实) 的帖子
如果不考虑超线程的话,建议考虑AMD的处理器,因为频率极高,用到的又是原线程(不支持超线程);但是相比支持超线程的英特尔高端处理器来说,这是翻不起什么浪的。

绝对不建议玩棋软的玩家买AMD的CPU,CPU不但要看工作频率,还要看它的架构及与之配合的芯片组。INTEL的设计不但过去而且现在都要领先于AMD很多,跑棋软还是尽量考虑INTEL的处理器。
级别: 少尉
[棋中红钻2级]发帖数量≥100篇 [未点亮棋中黄钻]金币数量<100枚 [未点亮棋中蓝钻]乐币数量<10枚 [未点亮棋中粉钻]贡献值数量<1点 [未点亮棋中彩钻]精华帖数量<1篇
发帖
164
金币
58
威望
1
贡献值
0
乐币
0
主题
7
只看该作者 25楼 发表于: 2012-11-25
回 6楼(橘枰博弈) 的帖子
谢谢楼主,能不能出点实例教教我们任何设置线程。

最好把你的CPU,棋软引擎,界面的情况说一下,我告诉你如何设置不就变成实例了?
级别: 中尉
[棋中红钻2级]发帖数量≥100篇 [棋中黄钻1级]金币数量≥100枚 [未点亮棋中蓝钻]乐币数量<10枚 [未点亮棋中粉钻]贡献值数量<1点 [未点亮棋中彩钻]精华帖数量<1篇
发帖
293
金币
746
威望
3
贡献值
0
乐币
2
主题
21
只看该作者 24楼 发表于: 2012-11-24
回 23楼(棋中西风) 的帖子
在软件程序设计上是以线程来表达多任务的管线,而不会说使用几个CPU核心(Core),

这个只能算是一种说法,但没有根据;

如果你的电脑是2核心四线程,你如果想充分利用游戏软件的4线程的话,就需要你的游戏软件的支持来协调你电脑的2个物理核心及2个逻辑核心的工作。如果没有这种协调,你的4条线程的工作会出现互相配合不好的情况,因而加大CPU的空闲。

这个我完全同意;如果引擎不支持4线程的话,多出的2条线程价值不大。

还有,如果不考虑超线程的话,建议考虑AMD的处理器,因为频率极高,用到的又是原线程(不支持超线程);但是相比支持超线程的英特尔高端处理器来说,这是翻不起什么浪的。
级别: 少尉
[棋中红钻2级]发帖数量≥100篇 [未点亮棋中黄钻]金币数量<100枚 [未点亮棋中蓝钻]乐币数量<10枚 [未点亮棋中粉钻]贡献值数量<1点 [未点亮棋中彩钻]精华帖数量<1篇
发帖
164
金币
58
威望
1
贡献值
0
乐币
0
主题
7
只看该作者 23楼 发表于: 2012-11-24
回 16楼(其中事实) 的帖子
棋软引擎本身也是使用线程的,因此开启超线程自然无可非议!

首先你要把CPU的核心(Core)与线程(Thread)的概念搞清楚,在软件程序设计上是以线程来表达多任务的管线,而不会说使用几个CPU核心(Core),如果一个游戏是支持4线程的,最有效的办法是把任务分配到4个真实的物理核心上,如果你的电脑是2核心四线程,你如果想充分利用游戏软件的4线程的话,就需要你的游戏软件的支持来协调你电脑的2个物理核心及2个逻辑核心的工作。如果没有这种协调,你的4条线程的工作会出现互相配合不好的情况,因而加大CPU的空闲。
级别: 少尉
[棋中红钻2级]发帖数量≥100篇 [未点亮棋中黄钻]金币数量<100枚 [未点亮棋中蓝钻]乐币数量<10枚 [未点亮棋中粉钻]贡献值数量<1点 [未点亮棋中彩钻]精华帖数量<1篇
发帖
164
金币
58
威望
1
贡献值
0
乐币
0
主题
7
只看该作者 22楼 发表于: 2012-11-24
回 15楼(棋中双珏) 的帖子
现在计算机内存很大,关于争抢资源,本人不大认同!用小虫0.2a(支持1-4u)的,开启超线程后,基本可以顶和名手3.48(名手配置不变的情况下)!

这是一个误解,不是内存大就可以解决争抢资源的问题,瓶颈在总线和内存的带宽。就算CPU的频率再快,但受制于总线和内存的带宽,不能正常读取数据,其执行单元利用率会明显下降, 因而造成了CPU性能不能得到全部的发挥。
级别: 少尉
[棋中红钻2级]发帖数量≥100篇 [未点亮棋中黄钻]金币数量<100枚 [未点亮棋中蓝钻]乐币数量<10枚 [未点亮棋中粉钻]贡献值数量<1点 [未点亮棋中彩钻]精华帖数量<1篇
发帖
164
金币
58
威望
1
贡献值
0
乐币
0
主题
7
只看该作者 21楼 发表于: 2012-11-24
回 13楼(棋中小楚) 的帖子
据我本人所知,好像只有天机一款引擎支持超线程技术,

听说佳佳的海外版本是支持超线程的,但只是听说,没有任何证据。有这个版本的网友可以发表下意见。
级别: 少尉
[棋中红钻2级]发帖数量≥100篇 [未点亮棋中黄钻]金币数量<100枚 [未点亮棋中蓝钻]乐币数量<10枚 [未点亮棋中粉钻]贡献值数量<1点 [未点亮棋中彩钻]精华帖数量<1篇
发帖
164
金币
58
威望
1
贡献值
0
乐币
0
主题
7
只看该作者 20楼 发表于: 2012-11-24
回 9楼(yne) 的帖子
另外,现在的超线程技术,据说,是优先使用物理核心的,而不是分不清楚。
CPU支持超线程技术,并不代表它就能包揽一切,正如我文中所说的几个条件。大家比较容易忽略的是:

超线程技术必须要应用程序支持才能很好的与CPU及线程协调工作,减低CPU的空闲,从而加强电脑的性能。
级别: 少尉
[棋中红钻2级]发帖数量≥100篇 [未点亮棋中黄钻]金币数量<100枚 [未点亮棋中蓝钻]乐币数量<10枚 [未点亮棋中粉钻]贡献值数量<1点 [未点亮棋中彩钻]精华帖数量<1篇
发帖
164
金币
58
威望
1
贡献值
0
乐币
0
主题
7
只看该作者 19楼 发表于: 2012-11-24
回 7楼(棋中居士) 的帖子
其实赢棋不只是机器强就能赢,还有软件,开局库和人机操作的因素。所以居士赢棋不能全归功于
打开了超线程。请照我帖子里的方法测试一下,看看哪种方法你的软件上层快,这比K值的参考价值更大。有的软件K值很高,但棋力却比K值低于它的软件差。比如阿童木64位2U,其K值比旋风四4U 64位版本还高,但棋力的差距还是挺大的。所谓K值是说一秒钟内软件算了多少个走法,如果在计算走法的时候是省略了很多分支或计算,算出的走法自然较多,但关键是质量不是数量。请在BIOS里先关掉超线程,设置成THREAD = 4 ,看看哪种的效率更好一点。像2600K这样快的CPU,也许
打开和关掉超线程从感官上觉得分别不大,但还是让数值来说话,玩棋软毕竟机器性能强一点比弱一点好。能做到的事情又何乐而不为呢?
级别: 中尉
[棋中红钻3级]发帖数量≥500篇 [棋中黄钻1级]金币数量≥100枚 [未点亮棋中蓝钻]乐币数量<10枚 [未点亮棋中粉钻]贡献值数量<1点 [未点亮棋中彩钻]精华帖数量<1篇
发帖
515
金币
919
威望
0
贡献值
0
乐币
2
主题
6
只看该作者 18楼 发表于: 2012-11-24
回 12楼(棋中西风) 的帖子
经常会出现思考不一致的情况的。。。
级别: 四级士官
[棋中红钻2级]发帖数量≥100篇 [棋中黄钻1级]金币数量≥100枚 [未点亮棋中蓝钻]乐币数量<10枚 [未点亮棋中粉钻]贡献值数量<1点 [未点亮棋中彩钻]精华帖数量<1篇
发帖
133
金币
238
威望
0
贡献值
0
乐币
1
主题
1
只看该作者 17楼 发表于: 2012-11-24
回 12楼(棋中西风) 的帖子
看看9楼朋友的回复:从我个人的使用效果来看,K值有提高,上层快了一些。所以,我愿意开着超线程。这足以说明棋软是支持超线程的。
级别: 中尉
[棋中红钻2级]发帖数量≥100篇 [棋中黄钻1级]金币数量≥100枚 [未点亮棋中蓝钻]乐币数量<10枚 [未点亮棋中粉钻]贡献值数量<1点 [未点亮棋中彩钻]精华帖数量<1篇
发帖
293
金币
746
威望
3
贡献值
0
乐币
2
主题
21
只看该作者 16楼 发表于: 2012-11-24
棋软引擎本身也是使用线程的,因此开启超线程自然无可非议!但问题并非这样简单,因为超线程只是棋软的一个很重要因素,不能单纯的从超线程这方面单纯的看,还必须要看频率;

超线程比原线程提升幅度不多这个观点我同意(比方说2600K使用8线程的引擎、开启超线程,如果设为4与设为8相较,设为8的效率比起设为4的效率高不了多少,但肯定要高一些毋庸置疑。而八核心8线程的处理器运行8线程的引擎效率肯定高于四核心8线程),但不能因此而夸大原线程的作用。

总体来看,还必须考虑各种其它因素,尤其是频率!我以前发过“十六核心32线程运行棋软效果测试”的帖子,但由于频率只有2.3,提升幅度并不大,运行6.2仅有6000多K。因此必须考虑频率这个重要因素;

除了线程和频率外,还应该考虑三级缓存、制程、平台、引擎等各种因素,最后才能得出相对可靠的结论。
快速回复

限56 字节
请不要在回贴只采用字母:“ PP、asdfhjkl、HAO、OK、ddddddd ......”。  请不要在回贴过于简单的内容:“不错、顶、支持、厉害、呵呵、靠、晕........”
 
验证问题: 本站网址是?不带http://
上一个 下一个