首先我们要知道,超线程并没有增加处理器的绝对性能,但是由于现实中绝大多数程序不能完全占满一个核心的所有资源,所以,通过多增加一个管道(线程),让别的任务挤占进来,以充分利用核心的闲置资源。在大部分情况下,超线程能带来20%-30%的实际性能提升。
https://www.zhihu.com/question/288205882/answer/460036503
然后回答超线程对于游戏的作用,首先看下面的图:
HT/SMT那项就是超线程的开关状态,三个处理器在开关超线程下的游戏帧数改变很明显不同。
先看G4560的成绩,这是个2C4T处理器,如果说超线程对游戏没用,那么不应该发生2C4T的帧数都比2C2T的帧数高很多的情况,甚至部分游戏在关闭超线程后根本不能开启。
然后R5 1400,这是个4C8T处理器,开启超线程后帧数提升。
最后i7 8700K,这是个6C12T处理器,关闭超线程后帧数提升。
接下来分析下以上三种状况的原因:
首先我们要知道,目前绝大多数3A游戏都是4-6线程优化(为什么?因为PS4,8个核心只有6个核心给游戏),以下拿一个6T优化的游戏举例。
在G4560上,几乎任何时候,6T游戏都倾向于占满2C4T,关了超线程,就等于游戏只能使用2C2T,2个核心有20%的资源没被充分利用,所以帧数暴降,这是最糟糕的情况。
在1400上,一个6T优化的游戏,关闭超线程只能利用4C4T,开启超线程后就能多利用一些核心资源了,所以性能略有提升。
但在8700K上就有点不同,关闭超线程后,6T游戏恰巧被分配到6C6T上,这时候所有线程都有专用的核心运算,且没有别的线程抢占运算资源,这算是性能最优情况。但为什么开启超线程后性能出现下降呢?我猜可能是由于windows线程分配机制和游戏优化的问题,出现了6T被全部分配到3个核心这种极端状况,这时候实际上用于运算游戏的资源是减少的,所以帧数下降。
所以由以上得知,目前可能六核i5才是最适合游戏的CPU吧(8400可以吹几年)~