蘋果今年最大的亮點也許不是手機,而是一塊小小的芯片。M1發布會雖然已經過去了一陣子,但圍繞著它的討論依然不見平息。不過,對它的討論很多都不在點子上,在技術方面解釋得既不夠深入也不夠易懂。在這方面,Erik Engheim在Medium上發表的這篇文章也許是最詳細最易懂的技術指南了。閱讀本文,你將了解以下幾點:1)為什么M1會這么快?2)蘋果是不是用了什么獨門絕招才做到這一點?3)英特爾和AMD能不能效仿?原文標題是:Why Is Apple’s M1 Chip So Fast?篇幅關系,我們分兩部分刊出,此為第一部分。
劃重點:
700美元的新M1 Mac Mini戰勝了4000美元的舊iMac
M1不是CPU,而是SoC
蘋果采取異構計算策略來提高性能:不是增加內核,而是加入更多的專用芯片
CPU與GPU消耗內存之別猶如法國大餐與垃圾食品,蘋果的統一內存架構很關鍵
英特爾和AMD抄不了蘋果的作業
在YouTube上,我看到有位Mac用戶去年買了一臺iMac。它把內存配到了40 GB,花了他大約4000美元。但是,這么一臺超貴的iMac,結果卻被他用少得可憐的700美元買來的新M1 Mac Mini令人難以置信地給干掉了。
在一次又一次的實測當中,M1 Macs不僅僅只是超過了頂級的Intel Macs,而且還是壓倒性的優勢。大家一臉的不敢相信,開始問這怎么可能?
如果你是其中之一的話,你算是來對地方了。在本文中,我打算把這個問題拆解成比較容易消化的幾個部分,就像蘋果對M1所做的一樣。具體來說,我認為很多人會有以下一些問題:
這個M1芯片這么之快的技術原因是什么?
蘋果是不是做出了一些真正具有獨創性的技術選擇來實現這一目標?
像英特爾和AMD這樣的競爭對手采用相同的技術花招的容易程度如何?
當然,你也可以試著Google一下,但如果你試圖了解蘋果都干了什么的話,你能找到的除了膚淺的解釋以外,就會使一堆技術含量很高的術語,比方說M1用了非常寬泛的指令解碼器,龐大的重排序緩沖器(ROB)等。除非你是CPU硬件極客,否則這些東西大多跟沒說一樣。
為了更好地理解本文,我建議可以先看看我之前的一篇文章:“2020年對于RISC和CISC來說意味著什么?” 在那篇文章里,我解釋什么是微處理器(CPU)以及各種重要概念,比方說:
指令集架構(ISA)
流水線
加載/存儲架構
微碼與微指令
不過,如果你不耐煩的話,我可以簡要介紹一下有助于理解我對M1芯片的解釋所需要了解的材料。
什么是微處理器(CPU)?
一般來說,當談到英特爾和AMD的芯片時,我們談論的是指中央處理器(CPU)或微處理器。CPU會從內存中提取指令。然后,一般會按順序執行每個一條指令。
就最底層而言,CPU是一種有若干叫做寄存器的命名存儲單元,以及若干叫做算術邏輯單元(ALU)的計算單元組成的設備。ALU執行加法、減法及其他基本數學運算之類的操作。不過,這些操作指跟CPU寄存器連接。如果要讓兩個數相加,你得從內存取出這兩個數字,然后放進CPU的兩個寄存器里面。
以下是RISC CPU(M1也屬于這種)執行的一些典型的指令示例。
load r1, 150
load r2, 200
add r1, r2
store r1, 310
這里的r1和r2就是我所說的寄存器。如果數字不在像這樣的寄存器內的話,現代RISC CPU是沒法進行操作的。比方說,它沒法對位于RAM不同位置的兩個數字進行相加。相反,它必須把這兩個數字放到一個獨立的寄存器里面。我們這里所舉的那個簡單例子干的就是這個。我們從RAM內存位置150處提取出數字,并將其放入CPU的寄存器r1中。然后,我們把地址200的內容放入寄存器r2中。只有這樣,數字才可以用add r1,r2指令進行相加。
寄存器的概念很古老了。比方說,在這個舊的機械計算器上,寄存器是用來保存要相加的數字的。收銀機(cash register)也許就源于此。寄存器就是登記輸入數字的地方。
M1不是CPU!
不過關于M1,了解這一點非常重要:
M1不是CPU,而是由多個芯片組成的整個系統,全部都封裝進放一大塊硅里面。CPU只是其中一顆芯片。
基本上,M1算是把整個計算機都集成到了一塊芯片上面。M1含有一顆CPU,有圖形處理單元(GPU),內存,輸入和輸出控制器,以及構成整臺計算機的眾多其他功能。這就是所謂的片上系統(SoC)。
今天,如果你買芯片的話(不管是從英特爾還是從AMD那里買),你得到的實際上是封裝在一起的多顆微處理器。在過去,計算機的主板上會配置有多顆物理上獨立的芯片。
但是,由于今天我們能夠往硅晶上面放太多的晶體管了,所以英特爾和AMD等公司開始把多個微處理器集成到一塊芯片上。我們把這些芯片叫做CPU內核。一個內核基本上算是一個完全獨立的芯片,可以從內存中讀取指令并執行計算。
長期以來,就提高性能而言,這一直是問題的實質:就是不斷增加更多的通用CPU內核。不過這種做法受到了干擾。在CPU市場里面,有一個玩家開始背道而馳。
蘋果沒那么神秘的異構計算策略
蘋果沒有往里面添加更多的通用CPU內核,而是采取了另一種策略:他們開始加入更多的專用芯片來完成一些特殊的任務。這樣做的好處是,專用芯片的耗電往往比通用CPU內核少得多,執行特定任務往往又快得多。
其實這不是什么新知識。多年以來來,Nvidia和AMD的圖形卡就內置了類似圖形處理單元(GPU)之類的專用芯片,它們執行跟圖形相關的操作要比通用CPU快得多。
蘋果所做的只是朝這個方向做出了更大的轉變。M1不僅配置了通用內核和內存,還包含有各種專用芯片:
中央處理器(CPU)——該片上系統的“大腦”。跑操作系統和應用的大部分代碼。
圖形處理單元(GPU)——處理跟圖形相關的任務,比方說可視化應用的用戶界面和2D / 3D游戲渲染。
圖像處理單元(ISP)——可用于加速圖像處理應用完成的常見任務。
數字信號處理器(DSP)——處理CPU所不為的數學密集型功能。包括音樂文件解壓縮等。
神經處理單元(NPU)——用于高端智能手機,可加速機器學習(AI)任務。其中包括語音識別和相機處理。
視頻編碼器/解碼器——高能效地處理視頻文件和格式轉換。
Secure Enclave——加密身份驗證和安全性。
統一內存——可讓CPU、GPU以及其他內核快速交換信息。
這就是為什么很多人用M1 Mac進行圖像和視頻編輯時看到速度快得飛起的部分原因所在。他們執行的很多任務都可以直接在專用硬件上運行。這樣一來,廉價的M1 Mac Mini不費吹灰之力就可以對大型視頻文件進行編碼,而昂貴的iMac就算讓所有的風扇轉到飛起也沒法跟上前者的原因。
蘋果的統一內存架構有何特殊之處?
蘋果的“統一內存架構”(UMA)有點費解(我剛開始的時候就搞錯了)。
為了解釋原因,我們需要退后一步。
長期以來,廉價的計算機系統已經把CPU和GPU集成到同一塊芯片(同一塊硅片)里面。這種做法的慢是眾所周知的。過去所說的“集成顯卡”跟 “圖形處理慢”基本上是一個意思。
之所以慢,是因為若干的原因:
內存的單獨區域要預留給CPU和GPU。如果CPU想要讓GPU使用大量數據,它不能夠告訴對方說“這是我的部分內存”就了事。不行,CPU必須把數據復制一份到GPU控制的存儲區域上。
CPU和GPU對內存的使用期望不一樣。不妨用食物做一個愚蠢的類比:CPU希望服務員快點上菜(裝數據的碟子),一點點上也沒關系。想象有一家豪華的法國餐廳,里面的服務員都是穿旱冰鞋的,所以可以為你提供快速服務。
相反,GPU可以接受上菜(數據)慢。但是你不能一點點地上,要上就得上大菜。它們需要吞噬大量的數據,因為GPU是規模龐大的并行機器,可以并行讀取大量數據。不妨想象有一家垃圾食品店,上菜需要花點時間,因為他們要全部備好食物才一起上。
鑒于需求如此的不一樣,把CPU和GPU放在同一塊物理芯片上顯然不是一個好主意。如果只上一點點的法國菜,GPU就只能坐在那里挨餓。其結果是,把強大的GPU放進SoC毫無意義。那一點點數據都不夠GPU塞牙縫。
第二個問題是大型GPU會產生大量熱量,所以如果跟CPU集成在一起你沒法不遇到發熱過大的問題。所以,獨立顯卡看起來往往像下面這樣的:有著大型冷卻風扇的大怪獸。這種顯卡有專用的內存,旨在為貪婪的顯卡提供大量數據。
這就是為什么這些顯卡性能高的原因所在。但是它們有一個致命的弱點:當它們必須從CPU使用的內存里面獲取數據時,得通過印刷在主板上的一組銅線,也就是所謂的PCIe總線進行。你試試用一根超級細的吸管喝水看看。水倒是一下子就吸上來了,但是水量不夠啊。
蘋果的統一內存架構試圖把所有這些問題都解決掉,但又避免掉過去那種共享內存的缺點。為了實現這一目標,他們采取了以下一些手段:
沒有專門給CPU或GPU保留的特殊區域。內存同時分配給兩種處理器。它們都可以使用同樣的內存。不需要數據復制。
蘋果采用的內存既可存儲大量數據,又可以快速存儲數據。用計算機的術語來說,就是所謂的低延遲和高吞吐量。所以,就不需要將不同類型的內存連接起來了。
蘋果降低了GPU的功耗,因此可以集成功能相對強大的GPU,而又不會導致SoC過熱。
有人會說統一內存也不是什么新概念。的確,過去就有不同的系統有個這種玩意兒。但那時候對內存需求的差異可能并沒有那么大。其次,Nvidia所謂的統一內存并不是一回事。在Nvidea的世界里,統一內存只是意味著有軟件和硬件專門負責在獨立的CPU和GPU內存之間來回復制數據。因此,從程序員的角度來看,蘋果和Nvidia的統一內存也許是一樣的,但是從物理意義上來說并不相同。
當然,這種策略需要有權衡取舍。要想實現這種高帶寬的內存(份量大),要求內存要完全集成進來,這意味著客戶升級內存的機會被剝奪了。但是,蘋果在尋求盡量提高內存與SSD硬盤的通信速度,讓它們在本質上相當于舊式內存一樣,從而讓這個問題最小化。
既然SoC這么智能,英特爾和AMD為什么不抄作業呢?
既然蘋果在做的事情這么聰明的話,為什么不是每個人都這么做呢?從某種程度上來說,別人也在抄作業。其他的ARM芯片制造商在專用硬件方面的投入也越來越大。
AMD也開始在自家的某些芯片上部署功能更強大的GPU,并部署加速處理單元(APU,這種處理器基本上算是放在同一塊硅片上的CPU內核加GPU內核),可以說是朝著某種形式的SoC邁進。
不過他們做不到這一點。因為一個重要的原因。SoC本質上是整臺計算機都集成在一塊芯片上。所以這種做法更適合計算機制造商,比方說HP和Dell。不妨讓我再用一個愚蠢的類比來澄清:如果你原來的商業模式是制造和銷售汽車發動機的話,那制造和銷售整車就會是一次不同尋常的飛躍。
相比之下,對于ARM而言,這倒不是問題。戴爾或惠普等計算機制造商完全可以賣ARM的知識產權許可,并購買其他芯片的IP,就可以把它們認為自己的SoC應該具備的特殊硬件添加進來了。然后,他們再把做好的設計交給格羅方德(GlobalFoundries)或臺積電(TSMC,現在在給AMD和蘋果代工芯片)等半導體代工廠即可。
英特爾和AMD的商業模式遇到了大問題。他們的商業模式是以賣通用CPU為基礎的,大家只需要把CPU插入大型PC主板即可。因此,計算機制造商只需要從不同的供應商處購買主板、內存、CPU和顯卡,然后將其集成為一個解決方案即可。
但是我們現在正在迅速遠離那個世界。在新的SoC的世界里,你不需要組裝來自不同供應商的物理組件,而是組裝來自其他供應商的IP(知識產權)。你從不同的供應商處購買顯卡、CPU、調制解調器、IO控制器以及其他產品的設計,然后用來設計自己的的SoC 。之后再找一家晶圓代工廠生產即可。
但現在你會遇到一個大問題,因為英特爾、AMD或Nvidia都不會把自己的知識產權許可給戴爾或惠普,讓他們給自己的機器制造SoC 。
當然,英特爾和AMD完全可以賣整塊完工的SoC 。但是這些SoC會包含些什么呢?PC制造商對SoC應該包含的東西可能會有不同的想法。英特爾、AMD、微軟和PC制造商之間的想法可能會因為SoC應包含哪種專用芯片而發生沖突,因為這些芯片需要軟件的支持。
對于蘋果來說,這件事情很簡單。因為他們控制了電子產品的全部。比方說,蘋果提供了Core ML庫給開發者編寫機器學習程序。Core ML究竟是在蘋果的CPU上面跑還是在Neural Engine上面跑,開發者并不需要關心。
責任編輯:tzh
-
芯片
+關注
關注
463文章
54010瀏覽量
466156 -
手機
+關注
關注
36文章
6996瀏覽量
161031 -
蘋果
+關注
關注
61文章
24600瀏覽量
208379
發布評論請先 登錄
神眸再發新品!M1智能親情可視通搭起遠程陪伴橋梁
Microchip擴展maXTouch? M1觸摸屏控制器系列,實現更廣泛的屏幕尺寸覆蓋
中興微電子撼域M1芯片與ETAS AUTOSAR軟件完成適配
EVAL - M1 - 101T評估板:電機控制應用的理想選擇
探索Eval - M1 - CM610N3評估板:電機驅動應用的理想之選
EVAL - M1 - IM523評估板:助力電機驅動應用設計
EVAL-M1-IM241評估板:電機驅動應用的理想之選
IP5356M至為芯支持雙向PD快充協議的22.5W移動電源方案芯片
蘋果AI革命:M5芯片10核GPU、AI處理速度翻倍,Apple Glass在路上
22.5W PD快充電源芯片應用方案概述
用于 Cat M1/1/NTN 和 WCDMA HSDPA/HSUPA/HSPA(頻段 1、2、4、5、8)和 CDMA(頻段類別 0、1、6、15)的多模式、多頻段功率放大器模塊 skyworksinc
M3 Ultra 蘋果最強芯片 80 核 GPU,32 核 NPU
蘋果M1芯片如此之快的技術原因是什么?
評論