為什麼CPU線程數最多是核心數的一倍,而不能有四核十六線程?
科技
11-20
一般情況下,一個物理核心對應一條線程。而多線程是指一個核心模擬成兩個或多個核心來進行並行計算處理,因為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個。
![](https://pic.pimg.tw/zzuyanan/1488615166-1259157397.png)
![](https://pic.pimg.tw/zzuyanan/1482887990-2595557020.jpg)
TAG:快樂的小聽雲 |