---
# System prepended metadata

title: 為什麼 M1 晶片跑很快？工程師發現祕密：非對稱核心設計
tags: [manager_share]

---

# 為什麼 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 年發佈。
