手機 CPU 為什麼不採用超執行緒技術?

時間 2021-05-06 02:13:37

1樓:過期的白菜

超執行緒誕生的原因是因為單執行緒喂不飽流水線。大部分情況下,影響cpu執行效率的原因是因為cpu要等io,所以額外弄了一組暫存器在等待的時候可以切換到另乙個任務不要讓流水線閒著,本質就是提高cpu的利用率。

如果已經喂得飽那其實超執行緒沒什麼用,還需要多做一組暫存器。

ia這邊超執行緒能提公升20%左右的效能吧。

2樓:心息相依

除了木頭龍的回答,我再補充一點:

超執行緒,並不是多了乙個執行緒就效能翻倍了,因為多出來的執行緒只是利用空閒的電晶體來執行,因此雖然整個CPU工作更複雜了,但綜合性能最多只能提高30%,而功耗提高的可就不止30%了,還容易拖累原本的單執行緒效能、降低執行可靠性!而手機要的是節能高效的晶元,所以超執行緒在手機上是不划算的

3樓:李安平

超執行緒那是單核心效能過剩,用來處理不需要發力的大量小任務。

手機cpu核心還沒有強到這個程度,再加上長期以來軟體都是在這個基礎上開發的,貿然加入可能不會提高效能還會倒退,畢竟超執行緒都會讓核心效能下降15%。

4樓:qin meng

上學的時候體系結構老師講過ARM屬於RISC,RISC流水線長度比CISC的X86要短,所以多發射(超執行緒)加速比不高,因此多出來的面積來說並不划算,再多點面積就可以放下另乙個核了為什麼要搞這麼麻煩呢?ARM並不是沒有超執行緒的CPU,但是在手機上沒有用。

所以簡單來說就是架構決定的划不來,成本划不來。

5樓:夢羽靈泉

因為應用場景的原因

桌面系統要考慮多應用、跨應用、多程序、多線大吞吐量的應用場景,比如伺服器和高階家用機、工作站,多執行緒能力還是很重要的

手機互動端你一共能開幾個程式?開了之後能把注意力集中在多少程式?

6樓:Shisoft

首先要弄明白超執行緒是怎麼實現的

超執行緒實際上是 Superscalar 和亂序執行的產物用以提高 IPC(理論上能達到 <1),具體原理就是在執行一條需要消耗更長時間的指令時可以拿別的指令去填充流水線中空閒的執行單元。

超執行緒就是告訴作業系統有超過實際核心數量的 CPU 能使用,而真正多出來的大概就只是一套暫存器和指令讀取而已。CPU 會在有空閒單元的情況下拿同乙個核心其他執行緒的指令去填充。這類技術普遍用於高速處理器並且需要需要消耗大量矽片面積。

一些長流水線的處理器甚至有乙個核心 4 個執行緒的設計。

手機處理器考慮到散熱,耗電,矽片尺寸問題一般不會採用這類技術,所以也就自然得沒有超執行緒了。

另外再次吐槽一下不要拿同樣核心數和頻率手機上的處理器去和桌面處理器去比了

7樓:

超執行緒會影響單執行緒的延遲,也就是說單核雙線程的每個執行緒都比單核單執行緒的執行緒要慢,而單執行緒的能力在手機應用中是非常甚至第一重要的。

多核心對於單核更多的是設計複雜,對每個核心的絕對效能影響不是很大。

8樓:578778152

現在手機軟體多核都呼叫不過來還搞多執行緒? 常年一核有難七核圍觀的優化實在是不需要那麼多執行緒還不如把大核做好了再說

超執行緒技術本身就不會增加物理核心的處理能力只是釋放他原本的能力現在大核自己的頻寬都吃不滿低功耗還有小核心所以就不需要超執行緒了 Intel的阿童木CPU要超執行緒是本身就執行緒不夠現在的手機CPU動不動就是起手6個核還大核帶小核就不需要超執行緒了

9樓:Fluoxetine

現在公版arm其實也出了超執行緒的處理器只不過不是功耗上很適合手機罷了手機沒有超執行緒多半是乙個歷史問題隨著big.little架構的出現手機處理器普遍邁入了八核時代超執行緒變得沒有什麼實際價值(跑分不算~) 而且big.little本身功耗效能表現也很不錯沒必要去搞超執行緒了

不過或許以後會有超執行緒的手機也說不定

10樓:Entropy.XCY

簡短回答:1. 是否選擇超執行緒,在於權衡利弊。2. 超執行緒在之前優勢很明顯,但隨著異構計算(尤其是非對稱通用處理器)的出現和普及,很難適應新的環境。

加速處理器的很重要的兩個方法:ILP(Instruction Level Parallelism,指令級並行,加速單核效能),TLP(Thread Level Parallelism,執行緒級並行,用多核提公升效能)

整個處理器界最開始嘗試的一直是加速單核,後來發現單核效能提公升是有極限的,所以轉向了多核發展。但是在發展單核效能的時候留下了乙個精美的設計,並且一直被多核結構繼承(亂序核心),那就是Tomasolo演算法。

用T演算法的亂序核心並不是只有乙個單一的線形的流水線,而是有很多組流水線。這就導致乙個問題,那就是單程序很多時候可以完全利用所有計算資源,但是大多數時候都無法完全利用計算資源。這種浪費對於效能和能耗比來說都是致命的。

於是乎,順理成章的,為了利用所有本來屬於乙個核心乙個執行緒的計算資源,有人就想到了可以再開乙個小程序,讓這個小程序「寄生」在乙個物理核心上,讓這個小程序在有空閒計算資源的時候「見縫插針」。這就是最初的多執行緒,目前被叫做:Coarse grained multi-threading(粗粒度多執行緒,目前已經過時,基本上沒有處理器在用)。

後來,這種做法的問題也越來越明顯,那就是大執行緒和小執行緒的效能相差太大,難以排程。於是就有了Fine-grained multi-threading(細粒度超執行緒),本質上說就是讓大小執行緒有同樣的優先性去搶占計算資源,缺點是會降低單執行緒效能。Fine grained MT目前的例子有Sparc系列。

目前大家講的多執行緒主要是講的SMT多執行緒。SMT比fine-grained更近了一步,在FGMT的基礎上,把對執行緒的分割通過register renaming和scheduler完成,而不再單單僅僅基於時間。SMT技術可以很大程度上降低超執行緒對單執行緒效能的影響。

(具體原理講起來比較複雜,有興趣的話推薦看一看《量化方法》)

扯了這麼多,回到原題:為什麼手機核心很少用呢?很簡單,因為大多數Arm核心的單核效能(單物理核心)還遠遠不及X86,簡單的說就是乙個執行緒都已經幾乎能把所有計算資源吃完了,沒必要再超了。

舉幾個具體的例子來說,Cortex-A53微構架,雙發射,順序取指,順序執行,順序寫回,8級流水線,雙整數流水線,單乘法流水線,單記憶體讀寫流水線,單分支流水線,外掛程式Neon和FPU。本身作為乙個順序核心,本身就沒法上SMT技術(SMT技術依賴scheduler和register renaming),然而CGMT和FGMT在當代都有點過時,原因可以看我上面大致談了一下。深層次原因去看《量化方法》。

再比方說Cortex-A57,三發射,順序取指,亂序執行,順序寫回。18級流水線,雙整數,單乘法,雙讀寫,內嵌雙NEON/FPU。為什麼不上SMT呢?

可以,但是沒必要。3寬度的發射已經可以很大程度上塞滿這些計算資源了。如果再上乙個執行緒的話,即使是SMT技術也很難保證單執行緒效能不受影響。

畢竟計算資源只有那麼多,不會因為你超執行緒而憑空增多計算資源,超執行緒只能說是增加了計算資源的利用程度。

接下來就是權衡問題了,那為什麼不另起爐灶造乙個可以超執行緒的Arm微構架呢?其實也有很多人這麼想過,也有真的造出來的(Broadcom, NVIDIA)。但是目前的Arm市場普遍對大型CPU不那麼感興趣,於是乎一般人也不是很知道有這樣的東西存在。

更進一步說,超執行緒技術在學術界也不是非常受待見,有乙個很大的問題就是超執行緒技術會讓暫存器變得非常複雜,而且會讓核心的設計難度也大大提高。在沒有big.LITTLE之前,在作業系統核心還不支援非對稱核心之前,超執行緒是很有意義的一件事情,因為它降低了晶元面積也降低了能耗。

但是隨著big.LITTLE的出現,超執行緒的存在意義就大打折扣了。因為通常來說,big.

LITTLE可以以更低的功耗更低的晶元面積實現與超執行緒相當的併發能力。但是畢竟X86構架還沒有成熟的大小核,所以還得依賴SMT。

11樓:重走此間路

這事不用猜,Arm設計過超執行緒的小核,Cortex-A65,是Armv8.2A的指令集和微架構,網上可能資料不多。要看結論的話,那就是,可以,不過要有15-20%單執行緒效能犧牲。

要用A65替代A55,在手機上,最主要的是確定幾件事:

執行在單執行緒的時候,漏電是不是一致,動態功耗是不是一致,能跑到多少頻率,SPECINT2K效能如何。

執行在雙線程的時候,多執行緒效能比單執行緒提公升多少,面積密度是不是更小。

那比較結果如何?

答案是,A65比A55,頻率低10%(SSG),動態功耗能效一樣(功耗高30%,效能高30%),漏電高了50%。如果用些方法提公升A65頻率,可能漏電要高100%。

單看這些,A65其實就不太適合手機,手機晶元的漏電要求很高。但是反過來,如果可以接受A65頻率低些,那漏電是可以做到一致的。

再看多執行緒,A65雙線程整數效能除以面積,密度是A55的1.8倍,這很好,但是不能消除漏電大對手機的負面影響。當然,此時的漏電如果除以兩個核,那是持平或者更小。

從這個角度看,就需要統計手機到底有多少時間是乙個小核在執行的。

A65用在哪?Arm給了明確的定義,乙個是網路處理器資料面的小核,乙個是汽車自動駕駛晶元的高能效比核,這兩個場景對漏電都不敏感,且很多讀寫操作。此時,超執行緒能很好的隱藏訪存延遲。

另外,Arm在V9的小核上,用了不同的『多執行緒』策略。A65是加入一組暫存器給第二個執行緒,兩個執行緒共享執行單元。而V9的小核是共享TLB/NEON等不常用的單元,只開啟乙個核的話,同樣條件下,漏電基本不變。

12樓:田園大大

參考intel9代9700k和9900k,沒超執行緒的9700k溫度低很多,手機對溫度敏感

另外同頻率下打遊戲沒超執行緒的97k更強,說明超執行緒會降低單執行緒效能

13樓:木頭人

一道綜合體,非得用一兩個論點得滿分,不合理;

超執行緒技術在cpu上比較成熟的,廠家在設計的時候都會考慮,但是考慮到諸多因素,如指令集的自身特點,硬體的設計,產品的使用場景,投入產出比等諸多因素,最後決定用和不用都是乙個綜合的結果;

所以為何不用,因為廠家比我們聰明;

為什麼小公尺手機不採用預售模式?

預售模式不能刺激市場 預售模式不算好的營銷手段 預售模式和競爭對手沒有差異 這些理由還不夠嗎 物以稀為貴 再補充一些淺顯沒人願意說的道理 miui和小公尺的崛起我是基本上經歷了的 從miui最開始有些卡頓 最開始的解鎖畫面是個扎著蝴蝶結的禮盒濃濃的山寨IOS風 只能在有限的手機上刷機體驗的時候 我在...

為什麼 Intel 的超執行緒技術是乙個核兩條執行緒,而不是更多?

回眸一笑倒蒼生 因為cpu的平行計算需求沒那麼高,沒必要在單核裡面堆太多計算資源,自然也沒有那麼多可能閒置的資源來跑另乙個執行緒了。反觀gpu,平行計算需求很高,單核的計算資源就遠超cpu。例如v100,通常我們說他有5376個cuda核心,其實並不代表他真的是5376核的處理器。5376這個數字只...

為什麼 iPhone 不採用 USB Type C 介面?

iphone 太耐用了,手機長時間下去賺不了太多的錢,cook就想了乙個主意,你們可以5年換一部iphone但是我們的線可是 200塊錢一根,一年保證壞 O O哈哈 有乙個廣為流傳的說法是,當年蘋果開發出 USB Type C 後準備給 iPhone 6 用的,但是 Ive 拿著 Lightning...