0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

M1芯片如此之快 蘋(píng)果是否采用了一些非同尋常的技術(shù)

ss ? 來(lái)源:OFweek物聯(lián)網(wǎng) ? 作者:OFweek物聯(lián)網(wǎng) ? 2020-12-18 10:20 ? 次閱讀

在現(xiàn)實(shí)世界一次又一次的測(cè)試中,M1 Macs 不僅超越了頂配的英特爾 Mac,而且還徹底擊垮了這些電腦。很多人都覺(jué)得不可思議,他們開(kāi)始探究這到底是怎么回事?

從技術(shù)的角度來(lái)看,為什么 M1 芯片會(huì)如此之快?

蘋(píng)果是否采用了一些非同尋常的技術(shù)?

對(duì)于英特爾和 AMD 等競(jìng)爭(zhēng)對(duì)手來(lái)說(shuō),采用相同的技術(shù)是否也很容易?

當(dāng)然,你可以在網(wǎng)上搜索這些問(wèn)題的答案,但如果你想深入了解蘋(píng)果所做出的努力,那么可能很快就會(huì)被高度專(zhuān)業(yè)的技術(shù)術(shù)語(yǔ)淹沒(méi)。例如 M1 使用了非常寬的指令解碼器、巨大的重排序緩沖區(qū)(ROB)等等。除非你非常了解 CPU 硬件,否則大多數(shù)文章對(duì)你來(lái)說(shuō)都是天書(shū)。

為了方便理解,下面我來(lái)簡(jiǎn)要介紹一下有關(guān) M1 芯片的基礎(chǔ)知識(shí)。

什么是微處理器(CPU)?

通常,我們談?wù)摰挠⑻貭柵c AMD 芯片指的都是中央處理器(CPU),或稱(chēng)微處理器。這些芯片從內(nèi)存獲取指令,然后按照順序執(zhí)行每條指令。

圖:一個(gè)非常基本的 RISC CPU(不是 M1)

指令從存儲(chǔ)器(memory)沿藍(lán)色箭頭移動(dòng)到指令寄存器(register),然后由解碼器(decoder)解析指令,并通過(guò)紅色控制線(xiàn)啟動(dòng)CPU的不同部分,最后由運(yùn)算器(ALU)將寄存器中的數(shù)字相加或相減。

最基本的CPU包含一系列寄存器(register)和若干運(yùn)算器(ALU),其中寄存器是命名的存儲(chǔ)單元,而運(yùn)算器則是計(jì)算單元。ALU 可以執(zhí)行加法、減法以及其他基本數(shù)學(xué)運(yùn)算之類(lèi)的操作。但是,ALU 只連接到 CPU 寄存器。如果要想執(zhí)行兩個(gè)數(shù)字相加的運(yùn)算,則必須從內(nèi)存中獲取這兩個(gè)數(shù)字并放入 CPU 的兩個(gè)寄存器中。

以下是 M1 上的 RISC CPU 執(zhí)行的一些常見(jiàn)的指令示例:

上述 r1 和 r2 就是我們所說(shuō)的寄存器。現(xiàn)代 RISC CPU 無(wú)法針對(duì)位于寄存器之外的數(shù)字進(jìn)行這樣的操作。例如,它不能將內(nèi)存中兩個(gè)不同位置的數(shù)字相加。相反,它必須將這兩個(gè)數(shù)字放入單獨(dú)的寄存器中。這就是上述示例中的前兩條指令。我們從內(nèi)存地址 150 中提取數(shù)字,并將其放入 CPU 的寄存器 r1 中。接下來(lái),我們將地址 200 中的數(shù)字放入寄存器 r2 中。只有這樣,兩個(gè)數(shù)字才能通過(guò)指令 add r1,r2 相加。

擁有兩個(gè)寄存器、累加器和輸入寄存器?,F(xiàn)代 CPU 通常擁有十幾個(gè)寄存器,而且是電子的。

寄存器的概念很早以前就有了。例如,在上圖的舊式機(jī)械計(jì)算器中,寄存器是保存兩個(gè)加數(shù)的地方。寄存器就是存放數(shù)字的地方。

M1 不是 CPU!

了解 M1 的時(shí)候,需要注意一點(diǎn):

M1 不是 CPU,它是一個(gè)集成了多個(gè)芯片的整體系統(tǒng)。而 CPU 只是其中一個(gè)芯片。

簡(jiǎn)單來(lái)說(shuō),M1 就是將一臺(tái)完整的計(jì)算機(jī)集成到了一個(gè)芯片上。M1 包含 CPU、圖形處理單元(GPU)、內(nèi)存、輸入和輸出控制器以及構(gòu)成一臺(tái)整體計(jì)算機(jī)的許多其他組件。這就是我們所說(shuō)的單片系統(tǒng)(System on a Chip,即SoC)。

如今,購(gòu)買(mǎi)英特爾或 AMD 的芯片時(shí),實(shí)際上你得到的是一個(gè)封裝了多個(gè)微處理器的芯片。過(guò)去,計(jì)算機(jī)的諸多芯片會(huì)分散加載到主板上。

內(nèi)存、CPU、顯卡、IO 控制器、網(wǎng)卡以及許多其他組件都連接到了主板上,可以相互通信。

然而,由于如今我們能夠在一塊硅片上放置非常多的晶體管,因此英特爾和AMD等公司紛紛開(kāi)始將多個(gè)微處理器集成到一個(gè)芯片上。我們稱(chēng)這些芯片為CPU核心。一個(gè)核心基本上就是一個(gè)完全獨(dú)立的芯片,可以從內(nèi)存中讀取指令并執(zhí)行計(jì)算。

圖:擁有多個(gè)CPU核心的微芯片

長(zhǎng)期以來(lái),要想提高性能,只需添加更多通用 CPU 核心即可。然而,如今情況發(fā)生了變化,CPU 市場(chǎng)的一位商家開(kāi)始偏離這種趨勢(shì)。

蘋(píng)果的異構(gòu)計(jì)算策略并沒(méi)有那么神秘

蘋(píng)果并沒(méi)有選擇增加通用 CPU 核心,他們采取了另一種策略:添加越來(lái)越多專(zhuān)用芯片來(lái)完成一些專(zhuān)門(mén)的任務(wù)。這樣做的好處是,與通用 CPU 核心相比,專(zhuān)用芯片能夠更快地完成任務(wù),而且耗電量更少。

這不是一個(gè)全新的做法。多年來(lái),英偉達(dá)和 AMD 的顯卡中都搭載了圖形處理單元(GPU)等專(zhuān)用芯片,這些芯片執(zhí)行與圖形相關(guān)的操作要比通用 CPU 快許多。

蘋(píng)果所做的只是更大膽地朝這個(gè)方向轉(zhuǎn)變。M1 不僅具有通用核心和存儲(chǔ)器,而且還包含各種專(zhuān)用芯片:

中央處理單元(CPU):?jiǎn)纹到y(tǒng)的大腦。負(fù)責(zé)運(yùn)行操作系統(tǒng)和應(yīng)用程序的大多數(shù)代碼。

圖形處理單元(GPU):處理與圖形相關(guān)的任務(wù)。例如顯示應(yīng)用程序的用戶(hù)界面,以及 2D/3D 游戲等。

圖像處理單元(ISP):可用于加速圖像處理應(yīng)用程序的常見(jiàn)任務(wù)。

數(shù)字信號(hào)處理器(DSP):能夠比 CPU 更好地處理需要大量數(shù)學(xué)運(yùn)算的任務(wù)。包括解壓縮音樂(lè)文件等。

神經(jīng)處理單元(NPU):用于高端智能手機(jī),可加速機(jī)器學(xué)習(xí)AI)任務(wù)。包括語(yǔ)音識(shí)別和相機(jī)處理。

視頻編碼器/解碼器:處理視頻文件和格式的轉(zhuǎn)換,且耗能更低。

安全領(lǐng)域:加密、身份認(rèn)證以及安全性。

統(tǒng)一內(nèi)存:允許 CPU、GPU 和其他核心快速交換信息。

這就是為什么許多人在使用 M1 Mac 進(jìn)行圖像和視頻編輯時(shí),都能看到速度提升的部分原因。他們執(zhí)行的許多任務(wù)可以直接在專(zhuān)用硬件上運(yùn)行。因此,價(jià)格低廉的 M1 Mac Mini 輕而易舉就能夠編碼大型視頻文件,而昂貴的 iMac 即便所有風(fēng)扇都全力運(yùn)轉(zhuǎn)也趕不上。

在藍(lán)色區(qū)域內(nèi),你可以看到多個(gè) CPU 核心可以同時(shí)訪問(wèn)內(nèi)存,而在綠色框內(nèi),大量 GPU 核心在訪問(wèn)內(nèi)存。

你可能不太理解統(tǒng)一內(nèi)存。共享內(nèi)存與統(tǒng)一內(nèi)存有何不同?過(guò)去,人們不是不贊成視頻內(nèi)存與主內(nèi)存共享嗎?因?yàn)檫@會(huì)導(dǎo)致性能降低。的確,共享內(nèi)存確實(shí)不好。原因是 CPU 和 GPU 必須輪流訪問(wèn)內(nèi)存。共享意味著二者要爭(zhēng)用數(shù)據(jù)總線(xiàn)。簡(jiǎn)單來(lái)說(shuō),GPU 和 CPU 必須輪流使用狹窄的管道來(lái)存儲(chǔ)或提取數(shù)據(jù)。

但統(tǒng)一內(nèi)存的情況不一樣。在統(tǒng)一內(nèi)存中,GPU 核心和 CPU 核心可以同時(shí)訪問(wèn)內(nèi)存。因此,共享內(nèi)存沒(méi)有額外開(kāi)銷(xiāo)。另外,CPU 和 GPU 可以互相通知數(shù)據(jù)在內(nèi)存中的位置。以前,CPU 必須將數(shù)據(jù)從主內(nèi)存區(qū)域復(fù)制到 GPU 使用的區(qū)域。但在統(tǒng)一內(nèi)存中,CPU 會(huì)告知 GPU:“我從內(nèi)存地址 2430 開(kāi)始放置了30MB 的多邊形數(shù)據(jù)?!倍?GPU 無(wú)需復(fù)制就可以使用這段內(nèi)存。

這意味著,由于 M1 上各種特殊的處理器都可以使用相同的內(nèi)存池,并快速交換信息,因此可以大幅提升性能。

在統(tǒng)一內(nèi)存出現(xiàn)之前,Mac 使用 GPU 的方式。你甚至可以選用計(jì)算機(jī)外部安裝的顯卡(通過(guò) Thunderbolt 3 線(xiàn)安裝)。有人猜測(cè)未來(lái)這種情況仍有可能出現(xiàn)。

為什么英特爾和 AMD 不使用相同的戰(zhàn)略?

既然蘋(píng)果的做法如此聰明,為何大家不照搬呢?從某種程度上來(lái)說(shuō),有些人確實(shí)在照抄蘋(píng)果。有些 ARM 芯片制造商在專(zhuān)用硬件上的投資越來(lái)越多。

AMD還嘗試在某些芯片上安裝功能更強(qiáng)大的GPU,并逐步采用加速處理單元(APU),向著單片系統(tǒng)邁進(jìn),這些處理器的CPU核心和GPU核心基本上都位于同一個(gè)芯片之上。

AMD Ryzen 加速處理單元(APU)在一塊芯片上集成了 CPU 和 GPU(Radeon Vega)。但是不包含其他協(xié)同處理器、IO 控制器或統(tǒng)一內(nèi)存。

然而,還有一些重要的原因致使他們無(wú)法完全貫徹蘋(píng)果的做法。單片系統(tǒng)本質(zhì)上是在一塊芯片上構(gòu)建整個(gè)計(jì)算機(jī)。因此,這種做法更適合于真正的計(jì)算機(jī)制造商,比如惠普和戴爾等。我用汽車(chē)來(lái)做一個(gè)簡(jiǎn)單的類(lèi)比:如果你的業(yè)務(wù)模型是制造和銷(xiāo)售汽車(chē)發(fā)動(dòng)機(jī),那么對(duì)你來(lái)說(shuō),制造和銷(xiāo)售整車(chē)將是一次不尋常的飛躍。

相比之下,這對(duì)于 ARM 來(lái)說(shuō)并不是大問(wèn)題。戴爾或惠普等計(jì)算機(jī)制造商只需要購(gòu)買(mǎi) ARM 和其他廠商芯片的授權(quán),就可以利用各種專(zhuān)用硬件制作自己的單片系統(tǒng)。接下來(lái),他們將完成的設(shè)計(jì)移交給 GlobalFoundries 或臺(tái)積電等半導(dǎo)體代工廠,這些工廠如今就在為 AMD 和蘋(píng)果生產(chǎn)芯片。

在英特爾和 AMD 的商業(yè)模式下,我們遇到了一個(gè)很大的問(wèn)題。他們的商業(yè)模式的基礎(chǔ)是銷(xiāo)售通用 CPU,人們只需將其插入大型 PC 主板即可。因此,計(jì)算機(jī)制造商只需從其他供應(yīng)商那里購(gòu)買(mǎi)主板、內(nèi)存、CPU 和顯卡,并將這些芯片集成到一個(gè)解決方案中。

但是,如今的發(fā)展趨勢(shì)正在迅速遠(yuǎn)離這種模式。在新的單片系統(tǒng)世界中,你無(wú)需組裝來(lái)自不同供應(yīng)商的物理組件。相反,你需要組裝不同供應(yīng)商的知識(shí)產(chǎn)權(quán)。首先,你需要從各個(gè)供應(yīng)商那里購(gòu)買(mǎi)顯卡、CPU、調(diào)制解調(diào)器、IO 控制器和其他產(chǎn)品的設(shè)計(jì),并將其用于內(nèi)部的單片系統(tǒng)設(shè)計(jì)。然后,再通過(guò)某家代工廠來(lái)生產(chǎn)。

那么,問(wèn)題來(lái)了:因?yàn)橛⑻貭?、AMD 或英偉達(dá)都不會(huì)向戴爾或惠普發(fā)放知識(shí)產(chǎn)權(quán)許可,不會(huì)給他們機(jī)會(huì)制造自己的單片系統(tǒng)。

當(dāng)然,英特爾和 AMD 可能也會(huì)銷(xiāo)售完整的單片系統(tǒng)。但是其中包含什么呢?每個(gè) PC 制造商對(duì)單片系統(tǒng)所包含的內(nèi)容可能都有各自的看法。英特爾、AMD、微軟和 PC 制造商之間可能會(huì)出現(xiàn)沖突,因?yàn)檫@些芯片需要軟件支持。

對(duì)于蘋(píng)果來(lái)說(shuō),這并不是什么難事,因?yàn)樗麄兛刂浦协h(huán)節(jié)。例如,他們?yōu)殚_(kāi)發(fā)人員提供了 Core ML 庫(kù),方便他們編寫(xiě)機(jī)器學(xué)習(xí)代碼。至于 Core ML 是在蘋(píng)果的 CPU 上運(yùn)行還是在 Neural Engine 上運(yùn)行,并不是開(kāi)發(fā)人員所關(guān)心的實(shí)現(xiàn)細(xì)節(jié)。

加快 CPU 運(yùn)行的根本難題

因此,異構(gòu)計(jì)算是 M1 芯片實(shí)現(xiàn)高性能的部分原因,但不是唯一的原因。M1 芯片上的通用 CPU 核心 Firestorm 確實(shí)非???。這是 Firestorm 與過(guò)去的ARM CPU 的一個(gè)重大差異,過(guò)去的 ARM CPU 核心與 AMD 和英特爾的核心相比非常弱。

然而,F(xiàn)irestorm 擊敗了大多數(shù)英特爾核心,而且?guī)缀鯌?zhàn)勝了最快的 AMD Ryzen 核心。按照傳統(tǒng)經(jīng)驗(yàn)來(lái)看,這種情況并不會(huì)發(fā)生。

在討論 Firestorm 運(yùn)行速度如此之快的原因之前,我們先來(lái)了解一下哪些核心理念可以真正加快 CPU 的速度。

原則上,你可以結(jié)合以下兩種策略來(lái)加快 CPU 的速度:

快速執(zhí)行更多指令。

并行執(zhí)行大量指令。

在上個(gè)世紀(jì) 80 年代,快速執(zhí)行更多指令很容易。只要增加時(shí)鐘頻率,指令就會(huì)加速完成。一個(gè)時(shí)鐘周期是計(jì)算機(jī)執(zhí)行某項(xiàng)操作的時(shí)間。但是一個(gè)時(shí)鐘周期可能不夠用,因此,有時(shí)一條指令可能需要多個(gè)時(shí)鐘周期才能完成,因?yàn)樗蓭讉€(gè)較小的任務(wù)組成。

但是,如今我們幾乎不可能再提高時(shí)鐘頻率了。經(jīng)過(guò)人們十多年堅(jiān)持不懈的努力,如今摩爾定律已經(jīng)失效了。

因此,我們所能做的只能是并行執(zhí)行盡可能多的指令。

多核與亂序處理器

并行執(zhí)行大量指令的方法有兩種。一種是添加更多 CPU 核心。從軟件開(kāi)發(fā)人員的角度來(lái)看,這就如同添加線(xiàn)程。每個(gè) CPU 核心就是一個(gè)硬件線(xiàn)程。如果你不知道線(xiàn)程是什么,則可以將其視為執(zhí)行任務(wù)的進(jìn)程。一個(gè)擁有兩個(gè)核心的 CPU可以同時(shí)執(zhí)行兩個(gè)單獨(dú)的任務(wù),即兩個(gè)線(xiàn)程。而任務(wù)可以理解為存儲(chǔ)在內(nèi)存中的兩個(gè)單獨(dú)的程序,或者是同一個(gè)程序執(zhí)行兩次。每個(gè)線(xiàn)程都需要一些記錄,例如該線(xiàn)程在程序指令序列中的當(dāng)前位置。每個(gè)線(xiàn)程可以存儲(chǔ)臨時(shí)的結(jié)果,而且應(yīng)該分開(kāi)保存。

原則上來(lái)說(shuō),處理器即便只擁有一個(gè)核心也可以運(yùn)行多個(gè)線(xiàn)程。在這種情況下,處理器需要暫停一個(gè)線(xiàn)程,將當(dāng)前進(jìn)程保存下來(lái),然后再切換到另一個(gè)線(xiàn)程。稍后再切換回去。這種做法無(wú)法帶來(lái)太多性能上的提升,而且只能在某個(gè)線(xiàn)程需要頻繁停下來(lái)等待用戶(hù)輸入,或網(wǎng)絡(luò)連接速度太慢的情況才能使用。以上這些可以稱(chēng)為軟件線(xiàn)程。硬件線(xiàn)程則意味著需要使用額外的物理硬件(例如額外的核心)來(lái)加快處理速度。

然而,問(wèn)題在于,開(kāi)發(fā)人員需要編寫(xiě)代碼才能利用這一點(diǎn)。有一些任務(wù)(例如服務(wù)器軟件)很容易做到這一點(diǎn)。例如單獨(dú)處理每個(gè)用戶(hù),這些任務(wù)之間彼此獨(dú)立,因此擁有大量核心是服務(wù)器(尤其是基于云的服務(wù))的絕佳選擇。

這就是為什么 Ampere 等 ARM CPU 制造商生產(chǎn)出的 Altra Max 等 CPU 擁有 128 個(gè)核心的原因。該芯片是專(zhuān)門(mén)為云計(jì)算而設(shè)計(jì)的。單個(gè)核心不需要擁有瘋狂的性能,因?yàn)樵谠浦欣煤妹恳煌咛氐墓模幚肀M可能多的并發(fā)用戶(hù)才是重中之重。

相比之下,蘋(píng)果的情況則完全不同。蘋(píng)果的產(chǎn)品都是單用戶(hù)的設(shè)備。大量線(xiàn)程并不是他們的優(yōu)勢(shì)。他們的設(shè)備可用于玩游戲、編輯視頻、開(kāi)發(fā)等。他們希望臺(tái)式機(jī)擁有精美的、響應(yīng)速度超快的圖像和動(dòng)畫(huà)。

桌面軟件通常不會(huì)利用很多核心。例如 8 個(gè)核心對(duì)電腦游戲來(lái)說(shuō)就足夠了,128 個(gè)核心完全是浪費(fèi)。相反,這些軟件需要少量更強(qiáng)大的核心。

接下來(lái)我們要講的內(nèi)容很有意思。亂序執(zhí)行是一種能夠并行執(zhí)行更多指令、但不需要多線(xiàn)程的方式。開(kāi)發(fā)人員無(wú)需專(zhuān)門(mén)編寫(xiě)軟件即可享受亂序執(zhí)行的優(yōu)勢(shì)。從開(kāi)發(fā)人員的角度來(lái)看,似乎每個(gè)核心的運(yùn)行速度都加快了。

為了理解其中的工作原理,我們先來(lái)了解一些內(nèi)存方面的知識(shí)。請(qǐng)求位于某個(gè)特定內(nèi)存位置中的數(shù)據(jù)會(huì)很慢。但是,獲取 1 個(gè)字節(jié)的延遲與獲取 128 個(gè)字節(jié)的延遲并沒(méi)有區(qū)別。數(shù)據(jù)是通過(guò)數(shù)據(jù)總線(xiàn)發(fā)送的。你可以將數(shù)據(jù)總線(xiàn)視為連接內(nèi)存與 CPU 各個(gè)部分的一條通道或管道,數(shù)據(jù)正是通過(guò)這條管道傳輸?shù)?。?shí)際上,數(shù)據(jù)總線(xiàn)就是一些可以導(dǎo)電的銅線(xiàn)。如果數(shù)據(jù)總線(xiàn)足夠?qū)?,則可以同時(shí)獲取多個(gè)字節(jié)。

因此,CPU 一次可以獲取整塊指令,但是這些指令必須逐條執(zhí)行。現(xiàn)代微處理器采用了亂序執(zhí)行。

這意味著,這些處理器能夠快速分析指令緩沖區(qū),并檢查哪些指令之間有相互依賴(lài)關(guān)系。我們舉一個(gè)簡(jiǎn)單的例子:

乘法是相對(duì)較慢的操作,假設(shè)它需要多個(gè)時(shí)鐘周期才能執(zhí)行完成。這時(shí),第二條指令就需要等待,因?yàn)樗枰婪湃?r1 寄存器的結(jié)果。

然而,第三條指令(03 行)并不依賴(lài)于前面的計(jì)算結(jié)果。因此,亂序處理器可以開(kāi)始并行計(jì)算這條指令。

但實(shí)際情況是,處理器每時(shí)每刻都需要處理成百上千的指令,而 CPU 能夠找出這些指令之間的所有依賴(lài)關(guān)系。

它會(huì)分析指令,檢查每條指令的輸入,看一看這些輸入是否依賴(lài)于其他一個(gè)或多個(gè)指令的輸出。這里的輸入和輸出指的是包含先前計(jì)算結(jié)果的寄存器。

例如,指令 add r4, r1, 5 的輸入 r1 依賴(lài)于前一個(gè)指令 mul r1, r2, r3 的結(jié)果。這些依賴(lài)關(guān)系鏈接在一起就可以形成關(guān)系圖,而CPU可以使用這個(gè)圖進(jìn)行處理。圖中的節(jié)點(diǎn)就是指令,而邊就是連接這些指令的寄存器。

CPU 可以分析這樣的節(jié)點(diǎn)圖,并確定它可以并行執(zhí)行哪些指令,以及在執(zhí)行哪個(gè)指令之前需要等待多個(gè)相關(guān)的計(jì)算結(jié)果。

盡管許多指令都可以提前完成,但我們不能將它們作為最終的結(jié)果。我們不能提交這些指令的執(zhí)行結(jié)果,因?yàn)樗鼈兊膱?zhí)行順序不正確。而在用戶(hù)看來(lái),這些指令都是按照發(fā)行的順序執(zhí)行的。

就像棧一樣,CPU 將從頂部彈出完成的指令,直到遇到一條未完成的指令。

雖然上述說(shuō)明不夠充分,但希望能讓你有大致的了解?;旧?,你可以選擇讓程序員實(shí)現(xiàn)并行,或者讓 CPU 假裝一切都是單線(xiàn)程執(zhí)行,但幕后采用亂序執(zhí)行。

M1 芯片上的 Firestorm 核心正是借助了出色的亂序執(zhí)行功能才變得如此強(qiáng)大。事實(shí)上,它比英特爾或 AMD 的任何產(chǎn)品都要強(qiáng)大,甚至可能超過(guò)了主流市場(chǎng)上的任何其他產(chǎn)品。

為什么 AMD 和英特爾的亂序執(zhí)行不如 M1?

前面在解釋亂序執(zhí)行的時(shí)候,我略過(guò)了一些重要的細(xì)節(jié),這里需要再說(shuō)明一下,否則就很難理解為什么蘋(píng)果能領(lǐng)先,而且英特爾和 AMD 很難超越。

前面說(shuō)的“?!钡恼嬲Q(chēng)叫做“重排序緩沖”(Re-Order Buffer,ROB),它并不包括普通的機(jī)器代碼指令。其中的內(nèi)容并不是 CPU 從內(nèi)存中獲取并執(zhí)行的指令,后者屬于 CPU 指令架構(gòu)(ISA),是那些我們稱(chēng)為 x86、ARM、PowerPC 等的指令。

但是在內(nèi)部,CPU 執(zhí)行的是一系列完全不同的指令集,這些指令對(duì)于程序員是不可見(jiàn)的。我們稱(chēng)之為微指令(簡(jiǎn)稱(chēng) μops)。ROB 中包含的都是微指令。

由于 CPU 盡一切努力并行執(zhí)行指令,所以 ROB 的這種做法更實(shí)際一些。原因是,微指令非常寬(包含更多比特),可能包含各種元信息。而 ARM 或 x86指令集中無(wú)法添加這么多信息,因?yàn)椋?/p>

這樣做會(huì)導(dǎo)致程序的可執(zhí)行文件體積膨脹;

會(huì)暴露 CPU 的內(nèi)部工作原理,是否有亂序執(zhí)行單元,是否有寄存器重命名等各種細(xì)節(jié)

許多元信息僅在當(dāng)前執(zhí)行上下文中有意義。

你可以將這個(gè)過(guò)程理解成寫(xiě)程序。你有一個(gè)公開(kāi)的 API,需要保持穩(wěn)定,供所有人使用。這就是 ARM、x86、PowerPC、MIPS等指令集。而微指令是那些用來(lái)實(shí)現(xiàn)公開(kāi) API 的私有 API。

而且,微指令通常更容易被 CPU 處理。為什么?因?yàn)槊織l指令只做一件非常容易的任務(wù)。正常的 ISA 指令可以非常復(fù)雜,可能會(huì)引發(fā)一系列操作,因此需要翻譯成多條微指令。

CISCCPU 通常別無(wú)選擇,只能使用微指令,否則復(fù)雜的 CISC 指令會(huì)讓流水線(xiàn)和亂序執(zhí)行幾乎無(wú)法實(shí)現(xiàn)。

而 RISC CPU 還有別的選擇。例如,小型的 ARM CPU 完全不使用微指令。但這也意味著它們沒(méi)辦法實(shí)現(xiàn)亂序執(zhí)行之類(lèi)的操作。

但你可能會(huì)問(wèn),你說(shuō)這些有什么關(guān)系嗎?為什么需要知道這些細(xì)節(jié),才能理解為何蘋(píng)果超越了 AMD 和英特爾呢?

這是因?yàn)?,芯片的運(yùn)行速度取決于填充 ROB 的速度以及使用的微指令數(shù)量。填充得越快、越多,并行獲取指令的可能性就越大,因此能夠提高性能。

機(jī)器指令由指令解碼器拆分成微指令。如果有多個(gè)解碼器,就能并行地拆分更多指令,從而更快地填充 ROB。

這里就是蘋(píng)果和其他廠商出現(xiàn)重大差別的地方。最次的英特爾和和 AMD 的微處理器核心只有四個(gè)解碼器,意味著它們可以同時(shí)解碼四條指令。

但蘋(píng)果有 8 個(gè)解碼器。不僅如此,蘋(píng)果的 ROB 是英特爾和 AMD 的三倍大小,可以容納三倍的指令。沒(méi)有任何主流芯片制造商的 CPU 中有這么多解碼器。

為什么英特爾和 AMD 不能添加更多的指令解碼器?

下面,我們來(lái)看一看 RISC 的優(yōu)勢(shì),以及 M1 Firestorm 核心采用的 ARM RISC 架構(gòu)有哪些出色表現(xiàn)。

你知道,在 x86 中,指令長(zhǎng)度約為 1~15 字節(jié)。而在 RISC 上指令是固定長(zhǎng)度。這有什么關(guān)系?

如果每條指令的長(zhǎng)度都一樣,那么將一個(gè)字節(jié)流分割,并行發(fā)送給 8 個(gè)不同的解碼器就非常容易。

但是在 x86 CPU 上,解碼器并不知道下一條指令從什么地方開(kāi)始。它必須按順序分析每一條指令才能得知具體的長(zhǎng)度。

英特爾和 AMD 采取暴力的方式來(lái)解決這個(gè)問(wèn)題,即在每個(gè)可能的開(kāi)始位置嘗試解碼。也就是說(shuō),許多錯(cuò)誤的猜測(cè)就只能拋棄。這就導(dǎo)致解碼器變得非常復(fù)雜,因此很難添加更多的解碼器。但這對(duì)于蘋(píng)果不是問(wèn)題,他們可以很容易地添加更多解碼器。

實(shí)際上,添加更多解碼器會(huì)帶來(lái)更多問(wèn)題,因此對(duì)于 AMD 而言,4 個(gè)解碼器就是上限了。

所以,M1 Firestorm 核心能在同一時(shí)鐘頻率下產(chǎn)生比 AMD 和英特爾 CPU 多一倍的指令。

有人會(huì)說(shuō),可以將 CISC 拆分成多條微指令,增加指令的密度,這樣解碼一條x86 指令就可以達(dá)到解碼兩條 ARM 指令的效果。

但實(shí)際情況并非如此。高度優(yōu)化的x86代碼很少使用復(fù)雜的 CISC 指令,甚至看上去更像 RISC。

但這對(duì)英特爾和 AMD 并沒(méi)有什么用,因?yàn)榧词?15 字節(jié)的指令非常罕見(jiàn),解碼器也必須處理它們。這種復(fù)雜性成為了 AMD 和英特爾添加更多解碼器的阻礙。

但 AMD 的 Zen3 核心更快吧?

據(jù)我所知,從性能的角度來(lái)看,最新的 AMD CPU 核心 Zen3 比 Firestorm 核心稍稍快一些。但這只是因?yàn)?Zen3 核心的時(shí)鐘是 5GHz,而 Firestorm 核心的時(shí)鐘是 3.2GHz。盡管 Zen3 的時(shí)鐘頻率超出了 60%,但性能只不過(guò)比Firestorm 快了一點(diǎn)點(diǎn)。

那么為什么蘋(píng)果不提高時(shí)鐘頻率呢?因?yàn)楦叩臅r(shí)鐘頻率會(huì)增加芯片發(fā)熱。這是蘋(píng)果的主要賣(mài)點(diǎn)。與英特爾和 AMD 不同,他們的電腦很少需要散熱。

所以本質(zhì)上可以說(shuō),F(xiàn)irestorm 核心確實(shí)優(yōu)于 Zen3 核心。 Zen3 雖然性能優(yōu)秀,但代價(jià)是高能耗與較大的發(fā)熱量。而蘋(píng)果并不選擇這條路。

如果蘋(píng)果需要更高的性能,那么他們會(huì)添加更多的核心。這樣就能在保持低功率的條件下提高性能。

未來(lái)的發(fā)展

似乎AMD和英特爾已經(jīng)陷入了困境:

他們的商業(yè)模式很難設(shè)計(jì)異構(gòu)計(jì)算和單片系統(tǒng);

由于舊的x86 CISC指令集的負(fù)擔(dān),很難提高亂序執(zhí)行性能。

但這并不意味著窮途末路。他們?nèi)匀豢梢酝ㄟ^(guò)提高時(shí)鐘頻率、使用更好的散熱、添加更多核心、提高CPU緩存等方式。但每一項(xiàng)都有缺點(diǎn)。英特爾的處境最糟糕,因?yàn)樗麄兊暮诵臄?shù)已經(jīng)不及 Firestorm,而且他們的單片系統(tǒng)解決方案中的 GPU 也更弱。

添加更多核心的問(wèn)題在于,對(duì)于一般的桌面負(fù)載而言,過(guò)多核心帶來(lái)的收益很低。當(dāng)然對(duì)于服務(wù)器而言,核心數(shù)多多益善。

但是,亞馬遜、Ampere 等公司都在研究 128 核心的 CPU。這就意味著英特爾和 AMD 即將面臨雙重夾擊。

但對(duì)于 AMD 和英特爾來(lái)說(shuō),幸運(yùn)的是,蘋(píng)果并沒(méi)有在市場(chǎng)上銷(xiāo)售芯片。所以PC 用戶(hù)別無(wú)選擇。PC 用戶(hù)可能會(huì)轉(zhuǎn)而使用蘋(píng)果,但畢竟這是一個(gè)緩慢的過(guò)程。切換日常使用的平臺(tái)并不是一蹴而就的事情。

但對(duì)于口袋里有錢(qián)、沒(méi)有太多平臺(tái)依賴(lài)的年輕人來(lái)說(shuō),以后會(huì)越來(lái)越多地選擇蘋(píng)果,從而提高蘋(píng)果在高端市場(chǎng)的占有率,最終會(huì)提高蘋(píng)果在整個(gè)PC市場(chǎng)的占有率。

責(zé)任編輯:xj

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 芯片
    +關(guān)注

    關(guān)注

    452

    文章

    50027

    瀏覽量

    419831
  • 蘋(píng)果
    +關(guān)注

    關(guān)注

    61

    文章

    24251

    瀏覽量

    195155
  • 微處理器
    +關(guān)注

    關(guān)注

    11

    文章

    2237

    瀏覽量

    82223
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    M1芯片M3芯片相差大嗎

    M1芯片M3芯片在性能和應(yīng)用上確實(shí)存在定的差異。
    的頭像 發(fā)表于 03-13 16:41 ?2676次閱讀

    m3芯片m3pro芯片怎么選 蘋(píng)果m1芯片m3芯片區(qū)別在哪

    ,具有8核CPU和10核GPU,能夠提供出色的計(jì)算能力和圖形處理性能。對(duì)于日常使用、輕度游戲和一些基本的圖形處理任務(wù),M3芯片能夠輕松應(yīng)對(duì),同時(shí)保持較低的功耗,為設(shè)備提供長(zhǎng)久的續(xù)航能力。 蘋(píng)果
    的頭像 發(fā)表于 03-12 17:24 ?3719次閱讀

    蘋(píng)果M3芯片和英特爾芯片的差距

    蘋(píng)果M3芯片和英特爾芯片在多個(gè)方面存在顯著差異。首先,M3芯片
    的頭像 發(fā)表于 03-11 18:21 ?3314次閱讀

    M3芯片M1芯片的比較

    M3芯片M1處理器相比,在多個(gè)方面表現(xiàn)出顯著優(yōu)勢(shì)。首先,M3芯片在架構(gòu)上采用了更先進(jìn)的制程
    的頭像 發(fā)表于 03-11 18:20 ?2772次閱讀

    蘋(píng)果M3芯片性能提升

    蘋(píng)果在2023年發(fā)布的M3芯片系列,在CPU性能和效率內(nèi)核方面相較于M1系列有了顯著的提升。具體來(lái)說(shuō),M3 CPU的性能核心比
    的頭像 發(fā)表于 03-11 17:13 ?1072次閱讀

    M3芯片M1芯片差別大嗎

    M3芯片M1芯片在多個(gè)方面存在顯著的差異。首先,M3芯片
    的頭像 發(fā)表于 03-11 16:52 ?2134次閱讀

    M1芯片M3芯片的區(qū)別

    M1芯片M3芯片都是蘋(píng)果自家研發(fā)的處理器,它們?cè)谛阅芎驮O(shè)計(jì)上各有特點(diǎn)。
    的頭像 發(fā)表于 03-11 16:37 ?3054次閱讀

    蘋(píng)果M3芯片發(fā)布時(shí)間

    蘋(píng)果M3芯片的發(fā)布時(shí)間是2023年10月31日。這款芯片蘋(píng)果次新品發(fā)布會(huì)上正式亮相,引起了
    的頭像 發(fā)表于 03-08 16:41 ?1143次閱讀

    蘋(píng)果M3芯片什么水平

    蘋(píng)果M3芯片蘋(píng)果M3芯片款高性能的處理器,其性
    的頭像 發(fā)表于 03-08 16:27 ?2108次閱讀

    蘋(píng)果M3芯片性能怎么樣

    蘋(píng)果M3芯片性能非常出色。它采用了蘋(píng)果自家研發(fā)的先進(jìn)技術(shù),擁有更高的處理速度和圖形處理性能。相比
    的頭像 發(fā)表于 03-08 16:14 ?1897次閱讀

    蘋(píng)果M3芯片與英特爾芯片對(duì)比

    蘋(píng)果M3芯片與英特爾芯片在多個(gè)方面存在顯著差異。首先,M3芯片
    的頭像 發(fā)表于 03-08 16:12 ?2549次閱讀

    M1M2和M3芯片是什么意思

    M1、M2和M3芯片都是蘋(píng)果公司推出的自研處理器芯片,具有不同的特點(diǎn)和發(fā)布時(shí)間。
    的頭像 發(fā)表于 03-08 15:51 ?5098次閱讀

    高通推出Snapdragon X Elite處理器,挑戰(zhàn)蘋(píng)果M3系列

    在Snapdragon X Elite發(fā)布周后,蘋(píng)果也推出了其全新的M3系列芯片。蘋(píng)果聲稱(chēng)其CPU性能核心和效率核心比
    的頭像 發(fā)表于 12-18 15:57 ?717次閱讀

    非同尋常的業(yè)余電臺(tái)天線(xiàn)指南

    我們都聽(tīng)說(shuō)過(guò)八木天線(xiàn)、偶極子和 G5RV。但還有其他一些天線(xiàn),無(wú)論是名稱(chēng)還是配置都有點(diǎn)不同尋常。
    的頭像 發(fā)表于 11-27 11:41 ?893次閱讀
    <b class='flag-5'>非同尋常</b>的業(yè)余電臺(tái)天線(xiàn)指南

    蘋(píng)果發(fā)布M3系列新款MacBook Pro/iMac:業(yè)界首批PC 3nm芯片

    蘋(píng)果m3系列的渲染速度是m1系列的2.5倍。cpu搭載的高性能核心和能源效率高的核心比m1系列芯片分別
    的頭像 發(fā)表于 11-01 10:34 ?787次閱讀