首先,hyperthreading是Intel公司的專利技術,倒是由數字設備公司(Digital Equipment Corporation)於2002年開發出來的。其次,這個技術能夠同時執行多個程序進程的片段(這個片段被稱爲線程,thread),是一種指令級的並行(instruction level parellelism)。找到一張圖,能夠清晰地解釋超線程的CPU是如何工做並提升效率的。node
上圖上半部分是沒有超線程的中央處理器,下半部是超線程的中央處理器。git
在操做系統看來,超線程的CPU同時執行了線程1和線程2,其後黃、藍、桔三色表示的是CPU的時間片分佈示意,最後是結果。明顯要優於沒有超線程的CPU。使用這個技術的處理器須要主板、操做系統提供相應的支持。硬件須要在BIOS/UEFI中打開固件的支持。缺省的狀況下,通常是啓用的。es6
如何在操做系統中查看是否使用了超線程呢?在Windows操做系統中,查看任務管理器,以下圖:api
上圖中,12個小方塊表明12個邏輯CPU。下面的文字則代表,只有1個插槽,6個內核,而邏輯處理器有12個,說明每一次內核都提供了超線程,變成12核。bash
在CentOS 7內,能夠運行命令查看。socket
# dmidecode | grep Count Core Count: 6 Thread Count: 12
從輸出的信息可知,6個核,12個線程,也是啓用了超線程。ide
#lscpu //輸出結果以下 Architecture: x86_64 CPU op-mode(s): 32-bit, 64-bit Byte Order: Little Endian CPU(s): 12 On-line CPU(s) list: 0-11 Thread(s) per core: 2 Core(s) per socket: 6 Socket(s): 1 NUMA node(s): 1 Vendor ID: GenuineIntel CPU family: 6 Model: 158 Model name: Intel(R) Core(TM) i7-8850H CPU @ 2.60GHz Stepping: 10 CPU MHz: 999.914 CPU max MHz: 4300.0000 CPU min MHz: 800.0000 BogoMIPS: 5184.00 Virtualization: VT-x L1d cache: 32K L1i cache: 32K L2 cache: 256K L3 cache: 9216K NUMA node0 CPU(s): 0-11 Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch epb invpcid_single intel_pt ssbd ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm mpx rdseed adx smap clflushopt xsaveopt xsavec xgetbv1 dtherm ida arat pln pts hwp hwp_notify hwp_act_window hwp_epp md_clear spec_ctrl intel_stibp flush_l1d
從lscpu命令的輸出中也能讀到超線程的信息:fetch
CPU(s): 12flex
On-line CPU(s) list: 0-11,編號從0到11ui
Thread(s) per core: 2,每一個核提供了2個線程,直截了當地講了,就是超線程
Core(s) per socket: 6,每插槽有6個核
Socket(s): 1,插槽1個
#grep -i HT /proc/cpuinfo flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_ tsc arch_perfmon pebs bts rep_good xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm pcid dca sse4_1 sse4_2 popcnt aes lahf_lm arat epb dts tpr_shadow vnmi flexpriority ept vpid
原來,這個裏面的ht,就是超線程
參考來源:https://www.techopedia.com/definition/2866/hyperthreading-ht