【转载】解密CPU的超线程原理与性能

        所谓超线程,就是我们平时说的CPU双核四线程这种线程数多余核心数的情况,比如大部分的i5和i7都是支持超线程的。很多人,尤其是一些伪大神认为超线程的两个线程实际上还是一个核心,运行效率低下,不值一提。其实,超线程技术对CPU而言还是有很大性能提升的,因为超线程技术不仅仅是逻辑技术,还是一个硬件技术。

        我们先看CPU是如何处理指令的。通俗的说可以分成两部分,第一部分是负责读取指令,第二部分是负责执行指令。一般执行部分是非常复杂的,通俗的来讲,比如加减乘除等需要不同的执行机构,一套执行机构要包括多种运算法则的执行单元。通常的CPU是读取部分和执行部分一对一的,而超线程的CPU则是多个读取部分和一个执行机构对应的,也就是说一个核心里有好几套的读取机构和一套执行机构。

        超线程的优势:首先读取机构1和读取机构2分别读取不同的指令,假设指令1是乘法,指令2是加法,那么CPU就可以调用一套执行机构中的不同部分来同时处理;而对于不支持超线程的CPU,执行指令1时尽管加法执行单元是空闲的但是也只能等指令1执行完成之后且指令2读取完毕后才能执行。在这种情况下多线程效率接近多核。

        另一种情况:如果指令1和指令2都是加法,那么指令2就必须等待指令1执行完成,这时的超线程和单核是一样的。此外,如果指令2的执行需要指令1的结果,那么指令2也是必须等待指令1的。

        那么,多线程技术的效果实际上取决于对指令的排列顺序。在通常的CPU上这是取决于当前执行的程序,而为了提升CPU的性能以intel为首的CPU巨头使用了一个叫做指令预测和乱序的技术。通过数学逻辑上的优化可以相当程度的重排CPU指令顺序这样就能有效的避免指令2等待指令1的悲剧,性能也就提升了不少。

        所以,超线程技术其实可以利皆为介于多核和单核的过度,是软件和硬件优化的结合,很难说性能是单核心的多少倍,在合适的条件和性能可以接近多核心,在另外的情况下又可能几乎没有作用,而成本却比多核心要低的多,也能有效的减少多核引起的功耗增加

猜你喜欢

转载自blog.csdn.net/github_38885296/article/details/103813832