超线程因其显著的多核性能提升,长期以来一直是划分CPU等级的关键。比如英特尔酷睿i7-9700不支持超线程技术,而i9-9900k支持,后者的多线程性能确实强很多。当两个线程不同时,可以提高效率。当两个线程相同时,线程也需要排队。比如电视机组装任务多一倍,但是只有一条流水线。就算有两组工人,也只能等。因此,如果要利用超线程技术,必须对软件进行优化。超线程技术提高的是程序执行的效率,不是整个CPU核心的性能,而是频率的提升,相当于加速了生产线的运行,加速了“工人”的动作。超线程技术提高了复杂应用程序(3D建模等)的效率。)很明显,但是简单应用的体验并不明显。说完什么是超线程,超线程的优缺点,然后回答题主的问题。

电脑CPU有超线程,为什么手机CPU没有超线程设计?

前面的回答没有讲透,甚至有错误,所以我来补充一发。回答的过程中,难免有专业术语,我会尽力用类比的方式软化,并加入生活场景以便易于理解,下面正式开车。先讲什么是超线程技术,超线程(Hyper-Threading,简称HT)技术最早是英特尔提出并应用,它的原理是这样的:在单个核心处理单元中集成两个逻辑处理单元,从而可以在单位时间内处理两个分别进行整数核浮点运算的线程,模拟双内核运作。

一个拥有超线程技术的CPU,可以模拟成2个CPU,打个比方,如果一个核心处理单元(CPU内核)相当于生产车间,那么逻辑处理单元就相当于生产线上的工人。过去的CPU是一个核心处理单元集成一个逻辑处理单元,相当于一个生产车间配一组工人,每个工人都工作在最大负荷下,运用超线程技术的CPU,则相当于一个生产车间配两组工人,人手增加一倍。

超线程技术的工作原理是这样的:程序的一个进程可以分成多个线程,超线程技术可以在单位时间内,让两个逻辑处理单元同时处理两个线程,一个进行密集运算,一个处理输入输出、人机交互等,行话叫“并发异步执行”,没有运用超线程技术的CPU一次只能处理一个线程,先处理密集运算,再处理输入输出、人机交互,让线程排队等待,行话叫“线程堵塞”。

我们假设一个程序可分为两个进程ABCD和EFGH,CPU无超线程技术时,需要先执行完ABCD,再执行EFGH,共耗费8个时间单位,CPU有超线程技术的话,一个逻辑单元执行ABCD,同时,另一个逻辑单元执行EFGH,共耗时4个时间单位,这样就节省了一半的时间。可以看出,超线程技术可以省一半的程序执行时间,

这种线程处理上的效率差别可以打个比方,组装电视可以简单分成运料、装配两个大的步骤,有两组工人的车间(有超线程技术的CPU内核),可以让一组工人运料,另一组工人装配,单位时间内完成两个步骤;只有一组工人的车间(没有超线程技术的CPU内核),只能让工人先运料,运完料再装配,单位时间内只能完成一个步骤。小结一下超线程技术的特点:一个CPU内核集成两个逻辑处理单元,运行时模拟成两个CPU;每个逻辑单元共享执行单元、寄存器,类似于上面说的两组工人共享一条生产线;可同时执行两个线程,节省一半时间;但超线程技术也有短板:当两个线程不同时,可以提高效率,当两个线程相同时,线程也需要排队,好比来了两倍的电视机装配任务,但装配生产线只有一条,即使有两组工人,也只能等待,因此超线程要发挥优势,必须软件优化到位;超线程技术提高的是程序执行效率,不是提高整个CPU内核的性能,提高性能还是离不开频率提升,相当于让生产线加速运转,“工人”手脚动作加快;超线程技术对复杂应用(3D建模等)效率提升明显,一般简单应用体验不明显;说完什么是超线程以及超线程的优缺点后,接着回答题主的问题:手机CPU为什么不采用超线程技术?因为手机的APP绝大多数都不是复杂应用,根本用不到超线程技术,

更重要的是,超线程技术采用的是两个逻辑单元,可以理解成是两个“软核”CPU,和多核CPU这种通过硬核提升程序执行效率的设计理念相比,优势并不突出。此外,手机CPU设计满足的是在减少能耗的前提下提升性能的需求,因此“大核 小核”的多核模式比超线程技术更适合,结果就是,满足重度应用的高性能电脑CPU会采用超线程技术,而满足轻度应用的手机采用能效比更出色的多核设计。

超线程技术和多核是一回事。这是正确的吗?为什么?


文章TAG:为什么超线程只双倍  超线程  双倍  回事  技术  
下一篇