新型M1 Mac的真實體驗已經開始流行。它們執行很快。真快。但為什麼?什麼是魔術?
圖片:蘋果
上YouTube,我看到一位Mac使用者去年購買了iMac。它已用完40 GB的RAM,花了他大約4,000美元。他難以置信地看著自己的超貴iMac被新的M1 Mac Mini拆毀了,為此他花了700美元。
在一次又一次的實際測試中,M1 Macs不僅超越了頂級的Intel Macs,而且還在銷燬它們。人們難以置信地開始問這到底是怎麼可能的?
如果你是一個O ˚F那些人,你來對地方了。在這裡,我計劃將其分解為易於消化的部分,就像蘋果公司對M1所做的一樣。具體來說,我認為很多人有以下問題:
此M1晶片如此之快的技術原因是什麼?蘋果公司是否做出了一些真正具有異國情調的技術選擇以實現這一目標?像英特爾和AMD這樣的競爭對手採用相同的技術技巧有多容易?當然,您可以嘗試使用Google,但如果您嘗試瞭解蘋果公司所做的工作,除了膚淺的解釋,您將很快陷入技術含量高的術語中,例如使用非常寬的指令解碼器,巨大的重排序緩衝區(ROB)等的M1。除非您是CPU硬體的極客,否則很多都是“傻瓜”。
為了充分利用這個故事,我建議閱讀我之前的文章:“ RISC和CISC在2020年意味著什麼?” 在這裡,我解釋什麼是微處理器(CPU)以及各種重要概念,例如:
指令集架構(ISA)流水線載入/儲存架構微碼與微操作但是,如果您不耐煩,我將簡要介紹您需要理解的材料,以幫助我理解M1晶片。
一個非常基本的RISC CPU,而不是M1。指令從儲存器沿藍色箭頭移動到指令暫存器中。解碼器在那裡找出指令是什麼,並透過紅色控制線啟用CPU的不同部分。ALU加減暫存器中的數字。
一個最基本的CPU是一種裝置,它具有許多稱為暫存器的命名儲存單元和許多稱為算術邏輯單元(ALU)的計算單元。ALU執行加法,減法和其他基本數學運算之類的操作。但是,這些僅連線到CPU暫存器。如果要相加兩個數字,則必須從記憶體中獲得這兩個數字並放入CPU的兩個暫存器中。
這是M1上的RISC CPU執行的一些典型指令示例。
載入r1,150載入r2,200加r1,r2儲存r1,310
這裡r1和r2是我談到的暫存器。現代RISC CPU無法對不在暫存器中的數字進行這樣的操作。例如,它不能在兩個不同位置的RAM中新增兩個數字。相反,它必須將這兩個數字放入一個單獨的暫存器中。這就是我們在此簡單示例中所做的。我們在RAM的儲存器位置150處提取數字,並將其放入r1CPU的暫存器中。接下來,我們將地址200的內容放入register r2。只有這樣,數字才能與add r1, r2指令相加。
一個有兩個暫存器的舊式機械計算器:累加器和輸入暫存器。現代CPU通常具有十幾個暫存器,並且它們是電子的而不是機械的。
暫存器的概念是古老的。例如,在這個舊的機械計算器上,暫存器是儲存您要新增的數字的函式。術語收銀機的起源。暫存器是您註冊輸入數字的地方。
M1不是CPU!但是要了解M1,這是一件非常重要的事情:
M1不是CPU,它是將多個晶片放入一個大的矽封裝中的整個系統。CPU只是這些晶片之一。
基本上,M1是將整個計算機整合到一個晶片上。M1包含CPU,圖形處理單元(GPU),記憶體,輸入和輸出控制器,以及構成一臺整體計算機的許多其他功能。這就是我們所說的片上系統(SoC)。
M1是片上系統。這意味著構成計算機的所有部件都放在一個矽晶片上。
今天,如果您購買晶片(無論是從Intel還是AMD獲得的),實際上可以在一個封裝中獲得相當於多個微處理器的數量。過去,計算機的主機板上會在物理上具有多個單獨的晶片。
計算機主機板示例。記憶體,CPU,圖形卡,IO控制器,網絡卡和許多其他元件可以連線到主機板上以相互通訊。
但是,由於今天我們能夠在矽晶片上放置如此多的電晶體,因此英特爾和AMD等公司開始將多個微處理器整合到一個晶片上。今天,我們將這些晶片稱為CPU核心。一個核心基本上是一個完全獨立的晶片,可以從記憶體中讀取指令並執行計算。
具有多個CPU核心的微晶片。
長期以來,就提高效能而言,這一直是遊戲的名稱:只需新增更多的通用CPU核心即可。但是部隊受到了干擾。CPU市場中有一個參與者偏離了這一趨勢。
蘋果並不是那麼秘密的異構計算策略蘋果沒有新增更多的通用CPU核心,而是採取了另一種策略:他們開始新增越來越多的專用晶片來完成一些專門的任務。這樣做的好處是,專用晶片趨向於使用比通用CPU核心少得多的電流來顯著更快地執行其任務。
這不是全新的知識。多年來,已經在Nvidia和AMD圖形卡中安裝了諸如圖形處理單元(GPU)之類的專用晶片,它們執行與圖形相關的操作要比通用CPU快得多。
蘋果所做的只是簡單地朝這個方向做出更大的轉變。M1不僅具有通用核心和儲存器,還包含各種專用晶片:
中央處理器(CPU)-SoC的“大腦”。執行作業系統和應用程式的大多數程式碼。圖形處理單元(GPU)-處理與圖形相關的任務,例如視覺化應用程式的使用者介面和2D / 3D遊戲。影象處理單元(ISP)-可用於加速影象處理應用程式完成的常見任務。數字訊號處理器(DSP)-處理比CPU更復雜的數學功能。包括解壓縮音樂檔案。神經處理單元(NPU)-用於高階智慧手機,以加速機器學習(AI)任務。這些包括語音識別和相機處理。影片編碼器/解碼器—處理影片檔案和格式的節能轉換。Secure Enclave-加密,身份驗證和安全性。統一記憶體-允許CPU,GPU和其他核心快速交換資訊。這就是為什麼許多使用M1 Mac進行影象和影片編輯的人看到這種速度提高的部分原因。他們執行的許多工可以直接在專用硬體上執行。這樣一來,廉價的M1 Mac Mini就能對大型影片檔案進行編碼而又不費吹灰之力,而昂貴的iMac卻讓其所有粉絲全力以赴,但仍無法跟上潮流。
閱讀有關異構計算的更多資訊:Apple M1預示RISC-V的興起。
在藍色中,您可以看到多個CPU核心正在訪問記憶體,在綠色中,您可以看到大量的GPU核心正在訪問記憶體。
蘋果的統一記憶體架構有何特別之處?蘋果公司的“統一記憶體架構”(UMA)有點棘手(我第一次在這裡寫下來時就錯了)。
為了解釋原因,我們需要退後一步。
長期以來,廉價的計算機系統已將CPU和GPU整合到同一晶片(相同的矽晶片)中。這些都是眾所周知的緩慢。過去說“整合圖形”與說“慢圖形”基本相同。
這些由於某些原因而變慢的地方:
該記憶體的單獨區域已預留給CPU和GPU。如果CPU希望讓GPU使用大量資料,它就不會說“這裡有我的一些記憶體”。不,CPU必須在GPU控制的儲存區域上顯式複製整個資料塊。
CPU不需要提供大量資料,但它們希望快速提供資料。
CPU和GPU不希望它們的記憶體以相同的方式提供。讓我們做一個愚蠢的食物類比:CPU希望服務員非常快速地提供他們的資料盤,但是它們卻很酷,只有很小的一部分。想象一下一家豪華的法國餐廳,那裡的侍者身穿旱冰鞋,可以為您提供快速服務。
這就是您的GPU想要記憶體的方式:很大的一部分。多多益善。
相反,GPU很酷,服務員處理資料的速度很慢。但是GPU需要大量的食物。它們吞噬大量資料,因為它們是巨大的平行計算機,可以並行讀取大量資料。想象一下一個美國垃圾食品店,那裡的食物需要一些時間才能到達,因為他們正在將整車食物推到您的座位區。
面對如此不同的需求,將CPU和GPU放在同一物理晶片上並不是一個好主意。如果提供少量法國菜,GPU將坐在那裡捱餓。結果是在SoC上放置功能強大的GPU毫無意義。弱小的GPU可以輕易地消耗掉少量的資料。
第二個問題是大型GPU會產生大量熱量,因此您無法將它們與CPU整合在一起,而不會出現自行消除產生熱量的問題。因此,獨立顯示卡往往看起來像下面的顯示卡:具有大型冷卻風扇的大型野獸。它們具有專用的專用儲存器,旨在為貪婪的卡提供大量資料。
GeForce RTX 3080
這就是為什麼這些卡具有高效能的原因。但是它們有一個致命的弱點:每當它們必須從CPU所使用的記憶體中獲取資料時,就會在計算機主機板上的一組稱為PCIe匯流排的銅走線上發生這種情況。嘗試透過超薄的稻草攪打水。它可能很快進入您的嘴,但是吞吐量完全不足。
蘋果的統一記憶體體系結構試圖解決所有這些問題,而又沒有老式共享記憶體的缺點。他們透過以下方式實現這一目標:
沒有專門為CPU或GPU保留的特殊區域。記憶體分配給兩個處理器。它們都可以使用相同的記憶體。無需複製。蘋果使用的記憶體既可以儲存大量資料,又可以快速儲存資料。用計算機的話來說,這就是所謂的低延遲和高吞吐量。因此,不需要連線到不同型別的儲存器。蘋果降低了GPU的功耗,因此可以整合功能相對強大的GPU,而不會導致SoC過熱。而且ARM晶片產生的熱量更少,從而使GPU具有比與AMD或Intel CPU在相同矽晶片上的GPU更高的熱量預算。有人會說統一記憶體並不是全新的。的確,過去有不同的系統擁有它。但是,記憶體需求的差異可能並沒有那麼大。其次,Nvidia所謂的統一記憶體並不是一回事。在Nvidea世界中,統一記憶體僅表示存在軟體和硬體,它們負責自動在單獨的CPU和GPU記憶體之間來回複製資料。因此,從程式設計師的角度來看,Apple和Nvidia統一記憶體可能看起來相同,但是從物理意義上來說並不相同。
當然,這種策略需要權衡。要獲得這種高頻寬記憶體(大份量),需要進行完全整合,這意味著您會剝奪客戶升級記憶體的機會。但是,Apple試圖透過使與SSD磁碟的通訊如此之快以使它們本質上像老式記憶體一樣工作,來最小化此問題。
Mac在統一記憶體之前如何使用GPU。甚至可以選擇使用Thunderbolt 3電纜在計算機外部安裝圖形卡。有人猜測這在將來仍然可能。
如果SoC如此智慧,為什麼英特爾和AMD不復制這種策略?如果蘋果公司正在做的事情如此聰明,為什麼不是每個人都這樣做呢?在某種程度上,它們是。其他ARM晶片製造商越來越多地投入專用硬體。
AMD還開始在其某些晶片上安裝功能更強大的GPU,並逐步採用加速處理單元(APU)向某種形式的SoC邁進,這些處理器基本上是CPU核心和GPU核心位於同一矽晶片上。
AMD Ryzen加速處理單元(APU)在一塊矽晶片上結合了CPU和GPU(Radeon Vega)。但是,不包含其他協處理器,IO控制器或統一記憶體。
然而,有重要的原因使他們無法做到這一點。SoC本質上是晶片上的整個計算機。這使其更適合實際的計算機制造商,例如HP和Dell。讓我用一個愚蠢的汽車類比來澄清:如果您的業務模型是製造和銷售汽車發動機,那麼開始製造和銷售整車將是不尋常的飛躍。
相反,對於ARM而言,這不是問題。戴爾或惠普等計算機制造商可以簡單地授予ARM智慧財產權許可,併購買其他晶片的IP,以新增他們認為自己的SoC應該具有的任何專用硬體。接下來,他們將完成的設計運送到GlobalFoundries或TSMC等半導體代工廠,後者今天為AMD和Apple生產晶片。
臺積電在臺灣的半導體代工廠。臺積電為AMD,蘋果,英偉達和高通等其他公司生產晶片。
在這裡,我們遇到了Intel和AMD業務模型的大問題。他們的商業模式基於銷售通用CPU,人們只需將其插入大型PC主機板即可。因此,計算機制造商只需從不同的供應商那裡購買主機板,記憶體,CPU和圖形卡,然後將它們整合到一個解決方案中即可。
但是我們正在迅速遠離那個世界。在新的SoC世界中,您無需組裝來自不同供應商的物理元件。而是,您從其他供應商處組裝IP(智慧財產權)。您從不同的供應商那裡購買了圖形卡,CPU,調變解調器,IO控制器以及其他產品的設計,並將其用於內部設計SoC。然後,您將得到一個鑄造廠來製造它。
現在您遇到了一個大問題,因為英特爾,AMD或Nvidia都不會將其智慧財產權許可給戴爾或惠普,讓他們為自己的機器製造SoC。
當然,英特爾和AMD可能只是開始銷售完整的SoC。但是這些包含什麼?PC製造商可能對它們包含的內容有不同的想法。英特爾,AMD,微軟和PC製造商之間可能會出現衝突,涉及應包含哪種專用晶片,因為這些晶片需要軟體支援。
對於蘋果公司來說,這很簡單。他們控制整個小部件。例如,它們為您提供了Core ML庫,供開發人員編寫機器學習內容。Core ML是在Apple的CPU上執行還是在Neural Engine上執行,是開發人員無需關心的實現細節。
使任何CPU快速執行的根本挑戰因此,異構計算是原因的一部分,而不是唯一的原因。M1上稱為Firestorm的快速通用CPU核心確實非常快。與過去的ARM CPU核心相比,這是一個重大偏差,與AMD和Intel核心相比,ARM CPU核心通常非常弱。
相比之下,Firestorm擊敗了大多數Intel核心,幾乎擊敗了最快的AMD Ryzen核心。傳統觀點認為這不會發生。
原則上,您可以結合以下兩種策略來完成任務:
快速執行更多指令。並行執行大量指令。上世紀80年代,這很容易。只要增加時鐘頻率,指令就會更快地完成。每個時鐘週期都是計算機執行某項操作的時間。但是,這東西可以說是相當的小。因此,一條指令可能由多個較小的任務組成,因此可能需要多個時鐘週期才能完成。
但是,如今幾乎不可能提高時鐘頻率。這就是人們十多年來一直在努力的整個“摩爾定律的終結”。
因此,實際上是關於並行執行儘可能多的指令。
多核還是亂序處理器?有兩種方法。
新增更多的CPU核心。每個核心獨立且並行地工作。使每個CPU核心並行執行多個指令。對於軟體開發人員來說,新增核心就像新增執行緒。每個CPU核心都像一個硬體執行緒。
如果您不知道執行緒是什麼,則可以將其視為執行任務的過程。一個CPU具有兩個核心,可以同時執行兩個單獨的任務:兩個執行緒。可以將任務描述為兩個單獨的程式儲存在記憶體中,或者實際上可以是同一程式執行兩次。每個執行緒需要一些簿記,諸如其中以程式指令序列的執行緒當前是。每個執行緒可以儲存臨時結果,應將其分開儲存。
原則上,一個處理器只能有一個核心並執行多個執行緒。在這種情況下,它只是暫停一個執行緒並存儲當前程序,然後再切換到另一執行緒。稍後它將切換回去。除非執行緒不得不經常停止執行以下操作,否則不會帶來很多效能提升:
等待使用者輸入網路連線速度慢等資料讓我們稱這些軟體執行緒。硬體執行緒意味著您可以使用實際的物理CPU核心來加快處理速度。
執行緒的問題在於軟體開發人員必須編寫所謂的多執行緒程式碼。這通常很困難。過去,這是最難編寫的程式碼。但是,使伺服器軟體成為多執行緒往往很容易。只需在單獨的執行緒上處理每個使用者請求即可。因此,在這種情況下,具有很多核心是一個明顯的優勢。特別是對於雲服務。
具有128個核心的Ampere Altra Max ARM CPU專為雲計算而設計,其中許多硬體執行緒是一個好處。
這就是為什麼您會看到諸如Ampere之類的ARM CPU製造商製造諸如Altra Max之類的CPU的原因,該處理器擁有瘋狂的128核。該晶片是專門為雲計算的。您不需要瘋狂的單核效能,因為在雲中,每瓦特具有儘可能多的執行緒來處理儘可能多的併發使用者。
閱讀有關具有許多核心的ARM CPU的更多資訊:Apple的伺服器是否下一步?
相比之下,蘋果則處於另一端。它們構成單使用者裝置。大量執行緒不是優勢。他們的裝置用於遊戲,影片編輯,開發等。他們希望桌上型電腦具有精美的響應圖形和動畫。
桌面軟體通常不會利用很多核心。例如,計算機遊戲可能會受益於8個核心,但是像128個核心之類的東西將完全浪費。取而代之的是,您需要更少但更強大的核心。
亂序執行的工作方式為了使核心更強大,我們需要它並行執行更多指令。亂序執行(OoOE)是一種並行執行更多指令但不將該功能公開為多個執行緒的方式。
有關替代解決方案,請閱讀:超長指令字微處理器
開發人員不必專門編碼其軟體即可利用OoOE。從開發人員的角度來看,看起來每個核心的執行速度都更快。請注意,它不是硬體執行緒的直接替代方法。您要同時使用這兩種方法,具體取決於要解決的特定問題。
要了解OoOE的工作原理,您需要了解一些有關記憶體的知識。在一個特定的記憶體位置中請求資料很慢。但是CPU能夠同時獲取多個位元組。因此,在記憶體中獲取1個特定位元組所花的時間不會少於在該位元組之後獲取100個以上的位元組。
挪威線上商店Komplett.no倉庫中的機器人撿取器
這是一個類比:考慮倉庫中的揀貨員。可能是上圖中的紅色小機器人。移動到多個位置遍佈各地需要時間。但是從彼此相鄰的插槽中拾取物品很快。計算機記憶體非常相似。您可以快速獲取相鄰的儲存單元的內容。
資料透過我們所謂的資料匯流排傳送。您可以將其視為記憶體與資料被推送透過的CPU不同部分之間的一條通道或管道。實際上,當然只有一些銅導線可以導電。如果資料匯流排足夠寬,則可以同時獲取多個位元組。
因此,CPU一次執行一整條指令。但是它們被編寫為一個接一個地執行。現代微處理器會執行我們所謂的無序執行(OoOE)。
這意味著他們能夠快速分析指令緩衝區,並檢視哪些指令取決於哪個指令。看下面的簡單例子:
01:mul r1,r2,r3 // r1←r2×r3 02:加r4,r1,5 // r4←r1 + 5 03:加r6,r2,1 // r6←r2 + 1
乘法往往是一個緩慢的過程。可以這麼說,它需要多個時鐘週期來執行。第二條指令將僅需等待,因為其計算取決於知道放入r1暫存器的結果。
但是,該行的第三條指令03不依賴於先前指令的計算。因此,亂序處理器可以開始平行計算此指令。
但實際上,我們正在談論數百條指令。CPU能夠找出這些指令之間的所有依賴關係。
它透過檢視每個指令的輸入來分析指令。輸入是否取決於一個或多個其他指令的輸出?所謂輸入和輸出,是指包含先前計算結果的暫存器。
例如,add r4, r1, 5指令取決於r1產生的輸入mul r1, r2, r3。我們可以將這些關係連結在一起,成為CPU可以處理的詳細圖形。節點是指令,邊是連線它們的暫存器。
CPU可以分析這樣的節點圖,並確定它可以並行執行哪些指令,以及在繼續執行之前需要在哪裡等待多個相關計算的結果。
許多指令將盡早完成,但我們無法將其結果正式化。我們不能承諾他們;否則,我們將以錯誤的順序提供結果。對於世界其他地區,它看起來必須彷彿按照發出指令的順序執行。
像堆疊一樣,CPU將從頂部彈出已完成的指令,直到找到未完成的指令。
基本上,您有兩種形式的並行性:一種是開發人員在編寫程式碼時必須顯式處理的,另一種是完全透明的。當然,後者依賴於CPU上大量用於無序執行魔術的電晶體。對於電晶體很少的小型CPU,這不是可行的解決方案。
正是出眾的亂序執行能力使M1踢屁股上的Firestorm核心和舉足輕重。實際上,它比Intel或AMD的任何產品都要強大得多,它們可能永遠無法追趕。要了解原因,我們需要深入瞭解一些技術細節。
ISA指令與微操作以前,我跳過了一些有關亂序執行(OoOE)如何工作的細節。
載入到記憶體中的程式由為特定指令集體系結構(ISA)設計的機器程式碼指令組成,例如x86,ARM,PowerPC,68K,MIPS,AVR等。
例如,x86指令將一個記憶體位置24中的數字提取到暫存器中,您可以編寫:
MOV斧頭,24
86已登記命名ax,bx,cx和dx(記住這些是你在執行操作的CPU內部儲存單元)。但是,等效的ARM指令如下所示:
LDR r0、24
AMD和Intel處理器瞭解x86 ISA,而Apple Silicon晶片(例如M1)則瞭解ARM指令集體系結構(ISA)。
但是,在內部,CPU會使用程式設計師無法看到的完全不同的指令集。我們稱這些微操作(微操作或微操作)。這些是亂序硬體配合使用的說明。
但是,為什麼OoOE硬體不能與常規機器程式碼指令一起工作?因為CPU需要在指令中附加很多不同的資訊,才能並行執行它們。
因此,儘管正常的ARM指令可能是32位(0和1的32位數字),但微操作可能會更長。它包含有關其順序的資訊。
01:mul r1,r2,r3 // r1←r2×r3 02:加r4,r1,5 // r4←r1 + 5 03:加r1,r2,1 // r1←r2 + 1
試想,如果我們執行指令01: mul和03: add並行。兩者都將結果儲存在register中r1。如果我們在03: add之前編寫指令的結果01: mul,則指令02: add將得到錯誤的輸入。因此,跟蹤指令順序非常重要。訂單與每個微操作一起儲存。它還儲存例如該指令02: add取決於的輸出01: mul。
這就是為什麼我們不能使用微操作編寫程式的原因。它們包含許多特定於每個微處理器內部的細節。兩個ARM處理器內部可能具有完全不同的微操作。
閱讀有關帶微操作的CPU的更多資訊,如指令:超長指令字微處理器。
對於CISC CPU,通常只有使用微操作,否則別無選擇,否則大型複雜的CISC指令會使流水線和OoOE幾乎無法實現。
閱讀更多:為什麼要流水線處理微處理器?
RISC CPU可以選擇。因此,例如,較小的ARM CPU根本不使用微操作。但這也意味著他們無法做OoOE之類的事情。
為什麼AMD和Intel的亂序執行不如M1?但是您想知道,為什麼這有什麼關係?為什麼要了解為什麼Apple在AMD和Intel上佔上風呢?
這是因為快速執行的能力取決於您填充微操作緩衝區的速度。如果緩衝區很大,那麼OoOE硬體將可以更輕鬆地找到可以並行執行的兩個或更多指令。但是,如果在選擇和執行指令後不能足夠快地重新填充指令緩衝區,那麼沒有足夠的指令緩衝區。
快速填充指令緩衝區的能力取決於將機器程式碼指令快速切成微操作的能力。執行此操作的硬體單元稱為解碼器。
最後,我們瞭解M1的殺手級功能。最大,最卑鄙的Intel和AMD微處理器共有四個解碼器,它們忙於將機器程式碼指令切成微指令。
但這與M1完全不同,M1的解碼器數量絕對是聞所未聞的:八個。遠遠超過行業內其他任何人。這意味著它可以更快地填充指令緩衝區。
為了解決這個問題,M1還具有一個指令緩衝器,該指令緩衝器的容量是業界正常緩衝器的三倍。
為什麼英特爾和AMD無法新增更多的指令解碼器?這是我們最終看到RISC報仇的地方,而M1 Firestorm核心具有ARM RISC架構的事實開始變得重要起來。
您會看到,x86指令的長度可以是1–15位元組。RISC指令的長度是固定的。每個ARM指令的長度為4個位元組。為什麼在這種情況下有意義呢?
因為如果每個指令具有相同的長度,將位元組流分成指令以並行饋入八個不同的解碼器變得微不足道。
但是,在x86 CPU上,解碼器不知道下一條指令在哪裡開始。它必須實際分析每條指令以檢視其長度。
英特爾和AMD處理這些問題的蠻力方法是簡單地嘗試在每個可能的起點解碼指令。這意味著x86晶片必須處理許多錯誤的猜測和錯誤,必須將其丟棄。這造成了如此複雜且複雜的解碼器階段,以至於很難新增更多的解碼器。但是對於蘋果來說,與之相比增加更多的東西是微不足道的。
實際上,新增更多的東西會導致很多其他問題,以至於根據AMD本身的四個解碼器基本上是它們的上限。
這就是讓M1 Firestorm核心進行實質性處理的原因 兩次 與AMD和Intel CPU一樣多的指令 相同 時鐘頻率。
有人可能會說,CISC的指令會變成更多的微型指令,這是對立的。例如,如果每條x86指令變成2微操作,而每條ARM指令變成1微操作,那麼四個x86解碼器在每個時鐘週期將產生與具有8個解碼器的ARM CPU相同數量的微操作。
除非在現實世界中情況並非如此。高度最佳化的x86程式碼很少使用複雜的CISC指令,這會轉化為許多微操作。實際上,大多數只會轉換為1個微操作。
但是,所有這些簡單的x86指令都無法幫助Intel或AMD。因為即使那15個位元組長的指令很少見,也必須使解碼器來處理它們。這會導致複雜性,從而阻止AMD和Intel新增更多解碼器。
但是AMD的Zen3核心仍然更快嗎?據效能基準測試,我記得最新的AMD CPU核心Zen3比Firestorm核心快一點。但是這裡有一個問題:這僅是因為Zen3核心的時鐘頻率為5 GHz。Firestorm核心的時鐘頻率為3.2 GHz。儘管時鐘頻率提高了近60%,但Zen3勉強能超越Firestorm。
那蘋果為什麼不也增加時鐘頻率呢?因為更高的時鐘頻率使晶片執行溫度更高。那是蘋果的主要賣點之一。與Intel和AMD產品不同,他們的計算機幾乎不需要冷卻。
從本質上講,可以說Firestorm核心確實優於Zen3核心。Zen3只能透過吸收更大的電流並變得更熱來保持在遊戲中。蘋果只是選擇不做某事。
如果蘋果想要更高的效能,他們只會增加更多的核心。這樣一來,他們可以降低功耗,同時提供更高的效能。
未來看來AMD和Intel在兩個方面都陷入了困境:
他們沒有一個可以輕鬆實現異構計算和SoC設計的業務模型。他們傳統的x86 CISC指令集又回來困擾了他們,從而難以提高OoO效能。閱讀更多:英特爾,ARM和創新者困境
這並不意味著遊戲結束了。它們可以提高時鐘頻率並使用更多的散熱功能,可以提供更多的核心,可以增強CPU快取等。但是,它們都處於劣勢。英特爾處於最糟糕的情況,因為它們的核心已經被Firestorm擊敗,並且它們的GPU薄弱,無法與SoC解決方案整合。
引入更多核心的問題在於,對於典型的桌面工作負載,使用過多核心會導致收益遞減。當然,很多核心都非常適合伺服器。
但是在這裡,諸如Amazon和Ampere之類的公司正在使用128核的巨型CPU進行攻擊。這就像在同時打敗西方和東方。
但是幸運的是,對於AMD和Intel,Apple並未在市場上出售其晶片。因此,PC使用者將只需要忍受他們提供的任何產品。PC使用者可能會跳船,但這是一個緩慢的過程。您不會立即離開自己投入大量資金的平臺。
但是,年輕的專業人士在沒有任何平臺上投入太多資金的情況下就可以花光錢,將來可能會越來越多地轉向蘋果,從而擴大了他們在高階市場的份額,從而擴大了他們在PC市場總利潤中的份額。
原文:https://debugger.medium.com/why-is-apples-m1-chip-so-fast-3262b158cba2