为什么英特尔的下一代处理器取消了超线程?
简单来说,去掉超线程可以充分发挥每一颗CPU核心的性能,Ultra 2代明显提升的单核性能很大程度上就是受益于此。
而当两颗处理器多核性能相当,一个有超线程,一个没有超线程,那么用户实际体验会是没有超线程的更好。这既有实际的性能释放优势,也有处理器的能效优势。
英特尔真正值得表扬的地方,其实是它没有做既当又立的决策,比如从原来默认开启超线程改成默认关闭超线程,然后还允许用户开启,而是很果敢的直接去掉了超线程。为什么我很欣赏这一点呢?原因待会会提到。

超线程说白了,就是让一个CPU核心同时运行两个甚至更多的上下文调度,本质上就是把一个CPU核心拆分成多个逻辑核心使用。
这样为什么可以提升性能呢?原理其实很简单,以一个CPU核心为例,如果这个物理核只运行一个主线程,然后调度一个软件运行,一旦这个软件的某个操作在等待其它任务的运行结果时,其实这个物理核就在空转了,白白浪费CPU时间。比如读写内存或者硬盘的操作,IO的延时是远远大于CPU时钟跳动的,也就是CPU总是执行一会,休息一会。
而超线程本质上就是要把这部分空闲时间利用上,那么如果在一个CPU核心上并行运行两个内核线程,分别调度不同的软件运行,这样一旦主线程调度的软件处于等待状态,那么就可以立刻把CPU核心资源分配给另一个线程执行其它任务。

这个过程可以简单理解为,你如果只有一台电脑,那么一旦CPU满跑卡顿,你就只能等着任务执行完再做其他事情。而如果你有两台电脑,一旦某一台电脑CPU满跑,你就切换到另一台电脑做其它事情。而操作电脑的你,其实就相当于开启超线程的CPU核心。
所以吧?超线程本质上就是尽可能利用CPU的所有时间,进而提升CPU核心的吞吐量。理论上,这玩意最好的情况下能让一个核心提升30%左右的性能。比如很多人最关注的CPU多核性能,有了超线程就可以明显更高。
但是很显然,这玩意是有适用场景的,比如首先得是多线程需求,其次得是具体应用支持很多的线程并发运行,再次则是CPU物理核心不够多。很多老游戏其实超级依赖单核性能,这个时候超线程不仅不能提升性能表现,反而会降低性能表现。
这其实就说到超线程的代价了!
首先就是成本问题。
很多人可能不知道的是,超线程实际上是有独立的电路设计的,也就是说,支持超线程是需要占用硅晶圆面积的,而这其实就是实打实的成本了。无论你能否受益于超线程,你都得买单。

而增加了这部分电路以后,即便不使用,也一样会增加功耗开销。是不是一下子就想到了芯片能效了呢!是的,如今Intel处理器能效有了很大的提升,去掉超线程也起了不小的作用。
其次则是调度问题。
如今英特尔处理器采用的是异构设计,本来就是为了平衡性能和能效,通过调度实现既有高性能释放,又有高能效表现。比如Ultra 5 225H就是4个性能核,8个能效核,以及2个低功耗高能效核。
且不说这么多核心还要开超线程的意义到底有多大,就说一个简单的场景,在支持超线程的情况下,如果一个4线程的软件需要高速运行时,是分配给4个性能核的8个内核线程中的4个,还是分配给8个能效核心中的4个呢?
其实英特尔自家的APO调度,本质上就是想要尽可能发挥性能核的作用,同时加速能效核心,而在支持超线程的情况下,APO也会遇到一样的调度困境。

更糟糕的是,4个性能核一旦开启了超线程,8T的多核性能大概能到不开超线程的4T的1.3倍左右,但是开启超线程的8T选出4T运行4线程的软件时,实际性能就只有不开超线程情况下4T的0.7倍左右了,因为超线程技术其实弱化了单线程的性能。
简单来说,4个性能核心的情况下,除非是真的运行7个或者8个线程,否则整体性能输出还不如不开超线程呢!
这其实就说到了更重要的一个点,单核性能。
再次则是单核性能损失。
Ultra二代处理器单核性能明显提升,其实也和去掉超线程有关系。
简单来说,单核跑两个内核线程,调度开销是不可忽视的,即便另一个并没有真正执行任务,其实也在消耗CPU核心的性能。

说以上这些只是想说明一个简单的道理,那就是很多乍一看很好的东西,实际上不仅有额外成本,而且很多人甚至是大部的人并不能真正的受益。
大部分人能让不开超线程的英特尔处理器跑出50%的占用率都很难,为什么还要花费额外的成本,牺牲处理器能效,牺牲单核性能,换一个仅仅是在CPU多核渲染中获得更高跑分的超线程呢?