# 為什麼 M1 晶片跑很快?工程師發現祕密:非對稱核心設計 [為什麼 M1 晶片跑很快?工程師發現祕密:非對稱核心設計](https://buzzorange.com/techorange/2021/06/02/m1-chip-core-design/) ###### tags: `manager_share` ![](https://i.imgur.com/YtMzL9O.png) > 蘋果 M1 又快又省電,除了跑分很高之外,實際體驗上也有一種流暢感。蘋果到底怎麼做到的?原來除了硬體性能強大以外,軟體層面也有優化技巧。 一位名叫 Hoakley 的工程師偶然發現了其中的秘密。 ## 工程師發現,M1 只有一半的核心在跑 這老哥總之是有錢,M1 和英特爾版的 iMac 都買了。業餘時間他喜歡自己開發點實用小工具,比如壓縮軟體。 老哥在後台測試自己的壓縮程式時發現,M1 上只有 4 個核心在跑,還有 4 個閒著。 ![](https://i.imgur.com/zkWB7nj.png) 換到英特爾上試試,因為還沒用到虛擬核心,是由 8 個真實核心共同承擔了工作。 ![](https://i.imgur.com/D56RoxK.png) 回到 M1 裡仔細一看,使用率高的還不是性能高的那 4 個,而是「效率核心」。 ![](https://i.imgur.com/DwP1jV8.png) 在 M1 晶片的 8 個 CPU 核心裡,有 4 個被稱作「Firestorm」的性能核心,另外 4 個是「Icestorm」效率核心,性能弱一些,不過功耗更低。 ![](https://i.imgur.com/fjx4XkY.png) 研究了一下,老哥發現是自己把任務優先級設低了,提高以後,就能讓 4 個性能核心參與進來。 老哥恍然大悟,原來這就是蘋果的策略。 ==讓優先度低的任務只占用效率核心,慢點就慢點吧,誰讓你優先度低呢。性能核心保持空閒狀態,隨時應對突發的高優先度任務。App 啟動速度快,切換流暢的原因找到了:4 個高性能的核心一直候著呢。== ## M1 採用非對稱核心,提升使用者體驗 MacOS 給開發者提供了 4 種優先級,分別是後台(background)、實用(utility)、用戶發起的(user Initiated)、用戶交互的(user Interactive)。 如果不指定的話就歸為默認,由操作系統自己安排。 Hoakley 老哥把自己的壓縮軟體改造成可以隨時調整優先級的,然後準備了一個 10 GB 的文件開始測試。 ![](https://i.imgur.com/NuecREx.png) 在英特爾 CPU 上,最高優先級完成壓縮需要 23.3 秒,調成最低優先級需要 26 秒。**在 M1 上,最高優先級運行只要 14.1 秒,調成後台優先級直接漲到 101 秒。** 老哥認為,犧牲一些不重要任務的運行速度,換來的使用體驗上的流暢,太值了。比如備份文件就不用著急,即使慢到用 15 分鐘備份不到 1G 也無所謂。 歷史上也有這樣一個反面教材。 2006 年的時候,Linux 內核引入了一種叫完全公平隊列(Completely Fair Queuing)的 I/O 調度機制。雖然在理論上能提升總體的運行效率,但用戶正需要完成的任務總是有一些延遲才能執行。 因為用戶體驗太差,最終完全公平隊列被大多數 Linux 發行版放棄了。 不過也有人不喜歡 M1 的這種機制,他認為在筆電上這樣做可以延長續航。但桌機 iMac 真的要犧牲運行速度嗎?反正都是插電源的。 ![](https://i.imgur.com/KFHr3fC.png) ## 英特爾也在開發非對稱核心的晶片 其實 CPU 內核分性能核心和效率核心這件事,手機上的 Arm 晶片早就在做了。 甚至高通還在研發中的驍龍 875,被曝光在這種架構基礎上還增加了一個「超大核心」Cortex X1。總共 1 + 3 + 4 構成 8 個核心。 ![](https://i.imgur.com/vb61BDe.png) 蘋果 M1 將 Arm 平台帶到了 PC 市場,讓英特爾開了眼。在 CES 2021 上曝光的 12 代酷睿 Alder Lake,英特爾也宣佈要區分兩種核心了。 ![](https://i.imgur.com/7nzKhVE.png) AMD 知道了這個消息後,直接把擠牙膏的 Zen3+ 專案給取消了,轉而全力研發下一代 Zen4 架構處理器,代號 Raphael,預計 2022 年發佈。