百科问答小站 logo
百科问答小站 font logo



x86架构CPU的超线程技术是否会长期保持逻辑处理器数量为物理核心两倍的现状?未来可能会怎样发展? 第1页

  

user avatar   mu-tou-long 网友的相关建议: 
      

x86应该会继续保持1:2的现状。

IBM的POWER已经有SMT4甚至SMT8了,但这是有前提的:超宽架构。如果CPU的超流水线只能同时并行处理6条指令,那么SMT4还是可以做的,但做SMT8就完全没意义了。


然而做一个并行处理8条指令的CPU核心,然后让它可以配置为SMT4,和做两个只能并行处理4条指令并且配置为SMT2的核心,消耗的晶体管大致上是一样的,而1×4和2×2的多线程性能理论上也是相近的。那么做SMT4有什么好处呢?起码有两个:


有助于提高单线程性能

更高的指令并行度有助于提升单线程性能。跟据不同应用中指令可并行度不同,SMT4的单线程性能通常会比SMT2高25%~75%。此外,单个核心使用双倍的缓存容量,也有助于提升性能,这个也是要看具体应用的缓存命中率的。


但这有个前提,解码单元的性能跟得上。近几年的CPU,引入了μOP cache,可以把指令解码后的微操作缓存起来备用,也最高6条指令并行处理,解码单元也要并行处理5(Intel)/4(AMD)条指令。所以8指令并行,对应的解码单元每时钟周期应该有6~7解码能力。


这对于定长的RISC指令来说,很简单:一次抓取一大段指令,然后数位截出来给多个解码器处理就是了。但对于x86这样的变长CISC指令来说,这就要了命了。在解析完毕前一条指令之前,你根本不知道后一条指令的开始地址在哪,解码单元只能一条一条指令来处理。这个前提下,解码单元能做到每周期3解码都很厉害了。


幸好还会碰到跳转、CALL这样直接带地址操作数的指令,解码单元直接抓取对应地址的指令来并行解码。题外话,解码处理AMD和Intel的处理不同:Intel是一个复杂解码器加若干个简单解码器,AMD是多个复杂解码器。所以Intel从Skylake可以做到1+4解码,AMD则是从Zen开始4解码。但如果要做更宽的6~7解码,这个我只能说我想不到如何处理这个变长指令的问题,首先是没见过。从现有情况去推测的话,跳转指令的密度是有限的,即便加大L1I、μOP Cache,可以根据更多跳转指令的地址并行进行更多解码,很可能解码出来的分支在很多个时钟周期内都用不上,结果就是超流水线虽然可以并发8指令,但因为从解码单元开始就无法填满流水线,实际单线程性能提升很小。


减少核心数量降低内部互联开销

当CPU核心数量达到一定数量后,用于内核间以及其它模块如共享的末级缓存、内存控制器、PCIe控制器等的内部互联,开销也是非常大的。例如至强随着核心数量的增加,内部互联结构从单环到双环到现在的Mesh,晶体管开销、功耗占用都相当不小(AMD很鸡贼的做SMP on Package,最新的Zen3也不过8 Core/CCX,先不提)。所以你可以看到50~70核心的Xeon Phil采用了SMT4,50核心的互联比200+的互联简单方便多了。


那么回到问题本身,对于现在单线程性能说不上强但其实也够用,反倒随着智能设备普及、网络提速,要处理的数据越来越多,也越来越多的应用对多线程优化;而功耗限制、晶体管规模限制了单个CPU可以容纳多少核心的x86市场。那么CPU厂家到底是费心费力去做超宽架构顺手做个SMT4,还是对内核稍作小幅优化,然后多放几个SMT2的核心进去好呢?




  

相关话题

  为什么 CPU 没有实时开关超线程的功能,有什么难度吗? 
  英特尔致信供应商「禁用新疆产品」,将产生哪些影响? 
  AMD处理器真的很不待见很折腾吗? 
  CPU 单核性能为什么难以提升? 
  为什么电脑 CPU 这么贵? 
  为什么游戏主机(PS3/XBOX 360)和次世代游戏主机(PS4/XBOX One)不采用Intel/nVidia平台? 
  芯片中只有极少晶体管用于实际工作吗? 
  如果未来英特尔不再为大陆提供服务,对中国发展有何影响? 
  为什么我认为AMD的显卡比不过同时期NVIDIA的显卡? 
  RISC-V 架构能否有效挑战 ARM 和英特尔? 

前一个讨论
如何打开微信里的dat文件?
下一个讨论
硅基生物在理论上存在吗?或者有对它们的猜测吗?





© 2024-06-02 - tinynew.org. All Rights Reserved.
© 2024-06-02 - tinynew.org. 保留所有权利