Answers:
超线程为单个物理 CPU内核公开了多个逻辑内核。简而言之,超线程使每个CPU内核的上下文切换效率更高。
另一方面,双核芯片实际上具有两个物理CPU内核,可以同时执行不同的进程。
还有其他多核芯片具有两个以上的内核,而且-正如Svish提到的-英特尔最新的多核产品还支持所有内核上的超线程。
您可以使用CPU识别实用程序(如CPU-Z)来确定您拥有多少个内核。如您在屏幕快照底部附近所见,在这种情况下,CPU具有2个物理内核。如果线程数大于内核数,则启用超线程。迄今为止,所有具有超线程功能的面向消费者的CPU每个内核都有2个线程,因此,如果启用HT,则线程数将是内核数的2倍。
如果您有Intel CPU,则可以下载Intel的CPU ID实用程序。
超线程是拥有双核的一种更便宜,更慢的选择
在英特尔手册卷3系统编程指南- 325384-056US 2015年9月 8.7“英特尔超线程技术架构”描述HT简单。它包含下图:
TODO在实际应用中的平均速度要慢百分之几?
超线程是可能的,因为现代的单CPU内核已经通过指令流水线https://en.wikipedia.org/wiki/Instruction_pipelining一次执行了多条指令
指令流水线是单个内核内部功能的分离,以确保在任何给定时间使用电路的每个部分:读取存储器,解码指令,执行指令等。
超线程通过使用以下方法进一步分离功能:
一个后端,它实际上通过其管道运行指令。
双核有两个后端,这说明了更高的成本和性能。
两个前端,它们采用两条指令流,并通过避免危险的方式对它们进行排序,以最大程度地利用单个后端的流水线使用方式。
双核还将有2个前端,每个后端一个。
在某些情况下,指令重新排序没有任何好处,从而使超线程变得毫无用处。但是,它的平均水平有了显着提高。
与仅共享L3的两个不同内核相比,单个核心中的两个超线程共享更多的缓存级别(TODO多少?L1?),请参见:
每个超线程提供给操作系统的接口都类似于实际内核的接口,并且可以分别控制两者。这样就cat /proc/cpuinfo
显示了4个处理器,即使我只有2个内核,每个内核有2个超线程。
但是,操作系统可以利用知道在同一内核上的哪些超线程来在单个内核上运行给定程序的多个线程的优势,这可能会提高缓存的使用率。
此LinusTechTips视频包含轻松的非技术性说明:https : //www.youtube.com/watch?v= wnS50lJicXc