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