-
1 # 嘟嘟聊數碼
-
2 # 魔鐵的世界
前面的回答沒有講透,甚至有錯誤,所以我來補充一發。回答的過程中,難免有專業術語,我會盡力用類比的方式軟化,並加入生活場景以便易於理解。下面正式開車。
先講什麼是超執行緒技術。
超執行緒(Hyper-Threading,簡稱HT)技術最早是英特爾提出並應用,它的原理是這樣的:在單個核心處理單元中整合兩個邏輯處理單元,從而可以在單位時間內處理兩個分別進行整數核浮點運算的執行緒,模擬雙核心運作。
一個擁有超執行緒技術的CPU,可以模擬成2個CPU。
打個比方,如果一個核心處理單元(CPU核心)相當於生產車間,那麼邏輯處理單元就相當於生產線上的工人。過去的CPU是一個核心處理單元整合一個邏輯處理單元,相當於一個生產車間配一組工人,每個工人都工作在最大負荷下。運用超執行緒技術的CPU,則相當於一個生產車間配兩組工人,人手增加一倍。
超執行緒技術的工作原理是這樣的:程式的一個程序可以分成多個執行緒,超執行緒技術可以在單位時間內,讓兩個邏輯處理單元同時處理兩個執行緒,一個進行密集運算,一個處理輸入輸出、人機互動等,行話叫“併發非同步執行”。沒有運用超執行緒技術的CPU一次只能處理一個執行緒,先處理密集運算,再處理輸入輸出、人機互動,讓執行緒排隊等待,行話叫“執行緒堵塞”。
我們假設一個程式可分為兩個程序ABCD和EFGH,CPU無超執行緒技術時,需要先執行完ABCD,再執行EFGH,共耗費8個時間單位。CPU有超執行緒技術的話,一個邏輯單元執行ABCD,同時,另一個邏輯單元執行EFGH,共耗時4個時間單位,這樣就節省了一半的時間。
可以看出,超執行緒技術可以省一半的程式執行時間。
這種執行緒處理上的效率差別可以打個比方,組裝電視可以簡單分成運料、裝配兩個大的步驟,有兩組工人的車間(有超執行緒技術的CPU核心),可以讓一組工人運料,另一組工人裝配,單位時間內完成兩個步驟;只有一組工人的車間(沒有超執行緒技術的CPU核心),只能讓工人先運料,運完料再裝配,單位時間內只能完成一個步驟。
小結一下超執行緒技術的特點:一個CPU核心整合兩個邏輯處理單元,執行時模擬成兩個CPU;
每個邏輯單元共享執行單元、暫存器,類似於上面說的兩組工人共享一條生產線;
可同時執行兩個執行緒,節省一半時間;
但超執行緒技術也有短板:當兩個執行緒不同時,可以提高效率,當兩個執行緒相同時,執行緒也需要排隊,好比來了兩倍的電視機裝配任務,但裝配生產線只有一條,即使有兩組工人,也只能等待,因此超執行緒要發揮優勢,必須軟體最佳化到位;
超執行緒技術提高的是程式執行效率,不是提高整個CPU核心的效能,提高效能還是離不開頻率提升,相當於讓生產線加速運轉,“工人”手腳動作加快;
超執行緒技術對複雜應用(3D建模等)效率提升明顯,一般簡單應用體驗不明顯;
說完什麼是超執行緒以及超執行緒的優缺點後,接著回答題主的問題:手機CPU為什麼不採用超執行緒技術?
因為手機的APP絕大多數都不是複雜應用,根本用不到超執行緒技術。更重要的是,超執行緒技術採用的是兩個邏輯單元,可以理解成是兩個“軟核”CPU,和多核CPU這種透過硬核提升程式執行效率的設計理念相比,優勢並不突出。
此外,手機CPU設計滿足的是在減少能耗的前提下提升效能的需求,因此“大核+小核”的多核模式比超執行緒技術更適合。
結果就是,滿足重度應用的高效能電腦CPU會採用超執行緒技術,而滿足輕度應用的手機採用能效比更出色的多核設計。
-
3 # 大米數碼科技說
1. 是否選擇超執行緒,在於權衡利弊。2. 超執行緒在之前優勢很明顯,但隨著異構計算(尤其是非對稱通用處理器)的出現和普及,很難適應新的環境。
加速處理器的很重要的兩個方法:ILP(Instruction Level Parallelism,指令級並行,加速單核效能),TLP(Thread Level Parallelism,執行緒級並行,用多核提升效能)
整個處理器界最開始嘗試的一直是加速單核,後來發現單核效能提升是有極限的,所以轉向了多核發展。但是在發展單核效能的時候留下了一個精美的設計,並且一直被多核結構繼承(亂序核心),那就是Tomasolo演算法。
用T演算法的亂序核心並不是只有一個單一的線形的流水線,而是有很多組流水線。這就導致一個問題,那就是單程序很多時候可以完全利用所有計算資源,但是大多數時候都無法完全利用計算資源。這種浪費對於效能和能耗比來說都是致命的。
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等不常用的單元,只開啟一個核的話,同樣條件下,漏電基本不變。
回覆列表
CPU的超執行緒技術可以大幅度提升CPU的多核效能,儘管本身佔用的電晶體數量比純粹的物理核心少得多,但是超執行緒技術的開啟也需要消耗不少額外的電晶體和功耗的,像電腦CPU,沒有超執行緒技術的i7-9700功耗發熱就比i9-9900少得多。
因此對於目前的手機CPU來說,8核心已經完全夠用了,不管是幾個高效能核心與幾個低功耗核心結合,都可以在效能與功耗之間取得平衡,如果再加上超執行緒技術的話,那麼手機CPU將達到16個執行緒,這樣勢必會帶來功耗發熱的大幅度提升,而對於手機這樣的產品來說顯然並不需要這麼強的效能。
另外就是目前的手機APP大部分還沒有對多核心CPU進行最佳化,因為多核最佳化本身就是很複雜的工作,所以這幾年手機CPU發展到8核心之後已經減緩了發展速度,說明手機CPU目前還不需要超執行緒技術,畢竟功耗和續航往往更重要,手機本身也不是電腦那樣的生產力工具,所以對效能的需求也不迫切。