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

評論