为什么有人说CPU只能是线程数最多是核心数的一倍,而不能有四核十六线程?

木公3851930


一般情况下,一个物理核心对应一条线程。而多线程是指一个核心模拟成两个或多个核心来进行并行计算处理。

因为CPU的处理方式是顺序处理,任务都根据排队来决定先后顺序(可以遵循算法来调度顺序),这就意味着CPU的一个核心同一时间内只能处理一个任务。

而英特尔最早提出的超线程技术(Hyper-Threading,AMD的是SMT技术,两个其实一样)就是在当年压榨CPU的性能而搞出来的技术,把一个核心模拟成两个核心来进行并行计算减少CPU闲置时间。

但是模拟核心并不是说不需要硬件基础的无限制模拟,在英特尔超线程最初的设计中,按照英特尔的说法是模拟核心是需要额外的晶体管支撑的,比如最早的奔4在超线程上占用5%晶体管数目却能额外带来30%以内的性能提升。用较少的晶体管占用数来提升CPU性能看来是很划算的东西。

一个物理核心模拟出来的多核心会共享这个物理核心的资源,当计算的时候两个或多个模拟核心都需要调用这些资源的时候其中的一个模拟核心只能等另外的模拟核心把资源闲置下来才能使用这些资源,所以1+1≠2。

在英特尔和AMD的桌面处理器平台上超线程一直以来是遵循一个物理核心模拟两个核心的原则。但是生产CPU的并不只有这两家,比如老牌巨头IBM在其POWER处理器上就采用了一个物理核心模拟多个核心的超线程技术,比如POWER 7处理器每个内核模拟了4个线程,POWER 8每个内核模拟了8个线程,POWER 9也是如此,但逻辑线程总数规定了上限。如果POWER 9处理器可以用WINDOWS的任务监视器来看框框的话,你会看到明明是12核或者24核处理器但框框却能数到96个。


IT数码大排档


Intel CPU的超线程只做到一个核心两个线程,这是因为x86体系结构可供挖掘的并行度有限。

其他体系结构的CPU就不止是2了,比如IBM POWER9 有每核4线程SMT4和每核8线程SMT8两种配置。


分享到:


相關文章: