主頁 >  其他 > 為什么蘋果 M1 芯片如此之快?

為什么蘋果 M1 芯片如此之快?

2020-12-17 11:04:31 其他

蘋果芯片正在快速崛起,無論是從配置還是從其他方面,蘋果在超越自己的同時也遠遠地把同行甩在后面,本文將詳細解答:為什么蘋果的 M1 運行速度會如此之快?

英文名稱:Why is Apple’s M1 Chip So Fast?

作者:Erik Engheim,現居挪威,熱衷于UX、Julia編程、科學與寫作,

本文為 CSDN 翻譯,轉載請注明來源出處,

作者 | Erik Engheim 已獲作者翻譯授權

譯者 | 彎月 責編 | 張文

頭圖 | CSDN 下載自視覺中國

出品 | CSDN(ID:CSDNnews)

以下為譯文:

我通過 YouTube 上的一個視頻看到一位 Mac 用戶在去年購買了一臺 iMac,這臺 4000 美元的電腦配置了最大的 40GB 記憶體,然而后來,他難以置信地看著自己花斥資購買的 iMac 被新型的 M1 Mac Mini 打敗,而這臺設備僅花了約 700 美元,

在現實世界一次又一次的測驗中,M1 Macs 不僅超越了頂配的英特爾 Mac,而且還徹底擊垮了這些電腦,很多人都覺得不可思議,他們開始探究這到底是怎么回事,

如果你也持有這樣的疑問,那么你來對地方了,在本文中,我將深度剖析蘋果的 M1 芯片,具體來說,我認為很多人都持有以下疑問:

  1. 從技術的角度來看,為什么 M1 芯片會如此之快?

  2. 蘋果是否采用了一些非同尋常的技術?

  3. 對于英特爾和 AMD 等競爭對手來說,采用相同的技術是否也很容易?

當然,你可以在網上搜索這些問題的答案,但如果你想深入了解蘋果所做出的努力,那么可能很快就會被高度專業的技術術語淹沒,例如 M1 使用了非常寬的指令解碼器、巨大的重排序緩沖區(ROB)等等,除非你非常了解 CPU 硬體,否則大多數文章對你來說都是天書,

為了方便理解,下面我來簡要介紹一下有關 M1 芯片的基礎知識,

什么是微處理器(CPU)?

通常,我們談論的英特爾與 AMD 芯片指的都是中央處理器(CPU),或稱微處理器,這些芯片從記憶體獲取指令,然后按照順序執行每條指令,

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

指令從存盤器(memory)沿藍色箭頭移動到指令暫存器(register),然后由解碼器(decoder)決議指令,并通過紅色控制線啟動CPU的不同部分,最后由運算器(ALU)將暫存器中的數字相加或相減,

最基本的CPU包含一系列暫存器(register)和若干運算器(ALU),其中暫存器是命名的存盤單元,而運算器則是計算單元,ALU 可以執行加法、減法以及其他基本數學運算之類的操作,但是,ALU 只連接到 CPU 暫存器,如果要想執行兩個數字相加的運算,則必須從記憶體中獲取這兩個數字并放入 CPU 的兩個暫存器中,

以下是 M1 上的 RISC CPU 執行的一些常見的指令示例:

load r1, 15
load r2, 200
add  r1, r2
store r1, 310

上述 r1 和 r2 就是我們所說的暫存器,現代 RISC CPU 無法針對位于暫存器之外的數字進行這樣的操作,例如,它不能將記憶體中兩個不同位置的數字相加,相反,它必須將這兩個數字放入單獨的暫存器中,這就是上述示例中的前兩條指令,我們從記憶體地址 150 中提取數字,并將其放入 CPU 的暫存器 r1 中,接下來,我們將地址 200 中的數字放入暫存器 r2 中,只有這樣,兩個數字才能通過指令 add r1,r2 相加,

圖:一臺舊式機械計算器

擁有兩個暫存器、累加器和輸入暫存器,現代 CPU 通常擁有十幾個暫存器,而且是電子的,

暫存器的概念很早以前就有了,例如,在上圖的舊式機械計算器中,暫存器是保存兩個加數的地方,暫存器就是存放數字的地方,

M1 不是 CPU!

了解 M1 的時候,需要注意一點:

M1 不是 CPU它是一個集成了多個芯片的整體系統,而 CPU 只是其中一個芯片,

簡單來說,M1 就是將一臺完整的計算機集成到了一個芯片上,M1 包含 CPU、圖形處理單元(GPU)、記憶體、輸入和輸出控制器以及構成一臺整體計算機的許多其他組件,這就是我們所說的單片系統(System on a Chip,即SoC),

如今,購買英特爾或 AMD 的芯片時,實際上你得到的是一個封裝了多個微處理器的芯片,過去,計算機的諸多芯片會分散加載到主板上,

圖:計算機主板示例

記憶體、CPU、顯卡、IO 控制器、網卡以及許多其他組件都連接到了主板上,可以相互通信,

然而,由于如今我們能夠在一塊硅片上放置非常多的晶體管,因此英特爾和AMD等公司紛紛開始將多個微處理器集成到一個芯片上,我們稱這些芯片為CPU核心,一個核心基本上就是一個完全獨立的芯片,可以從記憶體中讀取指令并執行計算,

圖:擁有多個CPU核心的微芯片

長期以來,要想提高性能,只需添加更多通用 CPU 核心即可,然而,如今情況發生了變化,CPU 市場的一位商家開始偏離這種趨勢,

蘋果的異構計算策略并沒有那么神秘

蘋果并沒有選擇增加通用 CPU 核心,他們采取了另一種策略:添加越來越多專用芯片來完成一些專門的任務,這樣做的好處是,與通用 CPU 核心相比,專用芯片能夠更快地完成任務,而且耗電量更少,

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

蘋果所做的只是更大膽地朝這個方向轉變,M1 不僅具有通用核心和存盤器,而且還包含各種專用芯片:

  1. 中央處理單元(CPU):單片系統的大腦,負責運行作業系統和應用程式的大多數代碼,

  2. 圖形處理單元(GPU):處理與圖形相關的任務,例如顯示應用程式的用戶界面,以及 2D/3D 游戲等,

  3. 影像處理單元(ISP):可用于加速影像處理應用程式的常見任務,

  4. 數字信號處理器(DSP):能夠比 CPU 更好地處理需要大量數學運算的任務,包括解壓縮音樂檔案等,

  5. 神經處理單元(NPU):用于高端智能手機,可加速機器學習(AI)任務,包括語音識別和相機處理,

  6. 視頻編碼器/解碼器:處理視頻檔案和格式的轉換,且耗能更低,

  7. 安全領域:加密、身份認證以及安全性,

  8. 統一記憶體:允許 CPU、GPU 和其他核心快速交換資訊,

這就是為什么許多人在使用 M1 Mac 進行影像和視頻編輯時,都能看到速度提升的部分原因,他們執行的許多任務可以直接在專用硬體上運行,因此,價格低廉的 M1 Mac Mini 輕而易舉就能夠編碼大型視頻檔案,而昂貴的 iMac 即便所有風扇都全力運轉也趕不上,

在藍色區域內,你可以看到多個 CPU 核心可以同時訪問記憶體,而在綠色框內,大量 GPU 核心在訪問記憶體,

你可能不太理解統一記憶體,共享記憶體與統一記憶體有何不同?過去,人們不是不贊成視頻記憶體與主記憶體共享嗎?因為這會導致性能降低,的確,共享記憶體確實不好,原因是 CPU 和 GPU 必須輪流訪問記憶體,共享意味著二者要爭用資料總線,簡單來說,GPU 和 CPU 必須輪流使用狹窄的管道來存盤或提取資料,

但統一記憶體的情況不一樣,在統一記憶體中,GPU 核心和 CPU 核心可以同時訪問記憶體,因此,共享記憶體沒有額外開銷,另外,CPU 和 GPU 可以互相通知資料在記憶體中的位置,以前,CPU 必須將資料從主記憶體區域復制到 GPU 使用的區域,但在統一記憶體中,CPU 會告知 GPU:“我從記憶體地址 2430 開始放置了30MB 的多邊形資料,”而 GPU 無需復制就可以使用這段記憶體,

這意味著,由于 M1 上各種特殊的處理器都可以使用相同的記憶體池,并快速交換資訊,因此可以大幅提升性能,

在統一記憶體出現之前,Mac 使用 GPU 的方式,你甚至可以選用計算機外部安裝的顯卡(通過 Thunderbolt 3 線安裝),有人猜測未來這種情況仍有可能出現,

為什么英特爾和 AMD 不使用相同的戰略?

既然蘋果的做法如此聰明,為何大家不照搬呢?從某種程度上來說,有些人確實在照抄蘋果,有些 ARM 芯片制造商在專用硬體上的投資越來越多,

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

AMD Ryzen 加速處理單元(APU)在一塊芯片上集成了 CPU 和 GPU(Radeon Vega),但是不包含其他協同處理器、IO 控制器或統一記憶體,

然而,還有一些重要的原因致使他們無法完全貫徹蘋果的做法,單片系統本質上是在一塊芯片上構建整個計算機,因此,這種做法更適合于真正的計算機制造商,比如惠普和戴爾等,我用汽車來做一個簡單的類比:如果你的業務模型是制造和銷售汽車發動機,那么對你來說,制造和銷售整車將是一次不尋常的飛躍,

相比之下,這對于 ARM 來說并不是大問題,戴爾或惠普等計算機制造商只需要購買 ARM 和其他廠商芯片的授權,就可以利用各種專用硬體制作自己的單片系統,接下來,他們將完成的設計移交給 GlobalFoundries 或臺積電等半導體代工廠,這些工廠如今就在為 AMD 和蘋果生產芯片,

圖:臺積電半導體代工廠,負責為AMD、蘋果、英偉達和高通等公司生產芯片,

在英特爾和 AMD 的商業模式下,我們遇到了一個很大的問題,他們的商業模式的基礎是銷售通用 CPU,人們只需將其插入大型 PC 主板即可,因此,計算機制造商只需從其他供應商那里購買主板、記憶體、CPU 和顯卡,并將這些芯片集成到一個解決方案中,

但是,如今的發展趨勢正在迅速遠離這種模式,在新的單片系統世界中,你無需組裝來自不同供應商的物理組件,相反,你需要組裝不同供應商的知識產權,首先,你需要從各個供應商那里購買顯卡、CPU、調制解調器、IO 控制器和其他產品的設計,并將其用于內部的單片系統設計,然后,再通過某家代工廠來生產,

那么,問題來了:因為英特爾、AMD 或英偉達都不會向戴爾或惠普發放知識產權許可,不會給他們機會制造自己的單片系統,

當然,英特爾和 AMD 可能也會銷售完整的單片系統,但是其中包含什么呢?每個 PC 制造商對單片系統所包含的內容可能都有各自的看法,英特爾、AMD、微軟和 PC 制造商之間可能會出現沖突,因為這些芯片需要軟體支持,

對于蘋果來說,這并不是什么難事,因為他們控制著所有環節,例如,他們為開發人員提供了 Core ML 庫,方便他們撰寫機器學習代碼,至于 Core ML 是在蘋果的 CPU 上運行還是在 Neural Engine 上運行,并不是開發人員所關心的實作細節,

加快 CPU 運行的根本難題

因此,異構計算是 M1 芯片實作高性能的部分原因,但不是唯一的原因,M1 芯片上的通用 CPU 核心 Firestorm 確實非常快,這是 Firestorm 與過去的ARM CPU 的一個重大差異,過去的 ARM CPU 核心與 AMD 和英特爾的核心相比非常弱,

然而,Firestorm 擊敗了大多數英特爾核心,而且幾乎戰勝了最快的 AMD Ryzen 核心,按照傳統經驗來看,這種情況并不會發生,

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

原則上,你可以結合以下兩種策略來加快 CPU 的速度:

  1. 快速執行更多指令

  2. 并行執行大量指令

在上個世紀 80 年代,快速執行更多指令很容易,只要增加時鐘頻率,指令就會加速完成,一個時鐘周期是計算機執行某項操作的時間,但是一個時鐘周期可能不夠用,因此,有時一條指令可能需要多個時鐘周期才能完成,因為它由幾個較小的任務組成,

但是,如今我們幾乎不可能再提高時鐘頻率了,經過人們十多年堅持不懈的努力,如今摩爾定律已經失效了,

因此,我們所能做的只能是并行執行盡可能多的指令,

多核與亂序處理器

并行執行大量指令的方法有兩種,一種是添加更多 CPU 核心,從軟體開發人員的角度來看,這就如同添加執行緒,每個 CPU 核心就是一個硬體執行緒,如果你不知道執行緒是什么,則可以將其視為執行任務的行程,一個擁有兩個核心的 CPU可以同時執行兩個單獨的任務,即兩個執行緒,而任務可以理解為存盤在記憶體中的兩個單獨的程式,或者是同一個程式執行兩次,每個執行緒都需要一些記錄,例如該執行緒在程式指令序列中的當前位置,每個執行緒可以存盤臨時的結果,而且應該分開保存,

原則上來說,處理器即便只擁有一個核心也可以運行多個執行緒,在這種情況下,處理器需要暫停一個執行緒,將當前行程保存下來,然后再切換到另一個執行緒,稍后再切換回去,這種做法無法帶來太多性能上的提升,而且只能在某個執行緒需要頻繁停下來等待用戶輸入,或網路連接速度太慢的情況才能使用,以上這些可以稱為軟體執行緒,硬體執行緒則意味著需要使用額外的物理硬體(例如額外的核心)來加快處理速度,

然而,問題在于,開發人員需要撰寫代碼才能利用這一點,有一些任務(例如服務器軟體)很容易做到這一點,例如單獨處理每個用戶,這些任務之間彼此獨立,因此擁有大量核心是服務器(尤其是基于云的服務)的絕佳選擇,

圖:Ampere Altra Max ARM CPU,擁有 128 個核心,專為云計算而設計,多硬體執行緒是其優勢之一,

這就是為什么 Ampere 等 ARM CPU 制造商生產出的 Altra Max 等 CPU 擁有 128 個核心的原因,該芯片是專門為云計算而設計的,單個核心不需要擁有瘋狂的性能,因為在云中利用好每一瓦特的功耗,處理盡可能多的并發用戶才是重中之重,

相比之下,蘋果的情況則完全不同,蘋果的產品都是單用戶的設備,大量執行緒并不是他們的優勢,他們的設備可用于玩游戲、編輯視頻、開發等,他們希望臺式機擁有精美的、回應速度超快的影像和影片,

桌面軟體通常不會利用很多核心,例如 8 個核心對電腦游戲來說就足夠了,128 個核心完全是浪費,相反,這些軟體需要少量更強大的核心,

接下來我們要講的內容很有意思,亂序執行是一種能夠并行執行更多指令、但不需要多執行緒的方式,開發人員無需專門撰寫軟體即可享受亂序執行的優勢,從開發人員的角度來看,似乎每個核心的運行速度都加快了,

為了理解其中的作業原理,我們先來了解一些記憶體方面的知識,請求位于某個特定記憶體位置中的資料會很慢,但是,獲取 1 個位元組的延遲與獲取 128 個位元組的延遲并沒有區別,資料是通過資料總線發送的,你可以將資料總線視為連接記憶體與 CPU 各個部分的一條通道或管道,資料正是通過這條管道傳輸的,實際上,資料總線就是一些可以導電的銅線,如果資料總線足夠寬,則可以同時獲取多個位元組,

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

這意味著,這些處理器能夠快速分析指令緩沖區,并檢查哪些指令之間有相互依賴關系,我們舉一個簡單的例子:

01: mul r1, r2, r3    / / r1 ← r2 × r3
02: add r4, r1, 5     // r4 ← r1 + 5
03: add r6, r2, 1     // r6 ← r2 + 1

乘法是相對較慢的操作,假設它需要多個時鐘周期才能執行完成,這時,第二條指令就需要等待,因為它需要知道放入 r1 暫存器的結果,

然而,第三條指令(03 行)并不依賴于前面的計算結果,因此,亂序處理器可以開始并行計算這條指令,

但實際情況是,處理器每時每刻都需要處理成百上千的指令,而 CPU 能夠找出這些指令之間的所有依賴關系

它會分析指令,檢查每條指令的輸入,看一看這些輸入是否依賴于其他一個或多個指令的輸出,這里的輸入和輸出指的是包含先前計算結果的暫存器,

例如,指令 add r4, r1, 5 的輸入 r1 依賴于前一個指令 mul r1, r2, r3 的結果,這些依賴關系鏈接在一起就可以形成關系圖,而CPU可以使用這個圖進行處理,圖中的節點就是指令,而邊就是連接這些指令的暫存器,

CPU 可以分析這樣的節點圖,并確定它可以并行執行哪些指令,以及在執行哪個指令之前需要等待多個相關的計算結果,

盡管許多指令都可以提前完成,但我們不能將它們作為最終的結果,我們不能提交這些指令的執行結果,因為它們的執行順序不正確,而在用戶看來,這些指令都是按照發行的順序執行的,

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

雖然上述說明不夠充分,但希望能讓你有大致的了解,基本上,你可以選擇讓程式員實作并行,或者讓 CPU 假裝一切都是單執行緒執行,但幕后采用亂序執行,

M1 芯片上的 Firestorm 核心正是借助了出色的亂序執行功能才變得如此強大,事實上,它比英特爾或 AMD 的任何產品都要強大,甚至可能超過了主流市場上的任何其他產品,

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

前面在解釋亂序執行的時候,我略過了一些重要的細節,這里需要再說明一下,否則就很難理解為什么蘋果能領先,而且英特爾和 AMD 很難超越,

前面說的“堆疊”的真正名稱叫做“重排序緩沖”(Re-Order Buffer,ROB),它并不包括普通的機器代碼指令,其中的內容并不是 CPU 從記憶體中獲取并執行的指令,后者屬于 CPU 指令架構(ISA),是那些我們稱為 x86、ARM、PowerPC 等的指令,

但是在內部,CPU 執行的是一系列完全不同的指令集,這些指令對于程式員是不可見的,我們稱之為微指令(簡稱 μops),ROB 中包含的都是微指令,

由于 CPU 盡一切努力并行執行指令,所以 ROB 的這種做法更實際一些,原因是,微指令非常寬(包含更多位元),可能包含各種元資訊,而 ARM 或 x86指令集中無法添加這么多資訊,因為:

  1. 這樣做會導致程式的可執行檔案體積膨脹;

  2. 會暴露 CPU 的內部作業原理,是否有亂序執行單元,是否有暫存器重命名等各種細節;

  3. 許多元資訊僅在當前執行背景關系中有意義,

你可以將這個程序理解成寫程式,你有一個公開的 API,需要保持穩定,供所有人使用,這就是 ARM、x86、PowerPC、MIPS等指令集,而微指令是那些用來實作公開 API 的私有 API,

而且,微指令通常更容易被 CPU 處理,為什么?因為每條指令只做一件非常容易的任務,正常的 ISA 指令可以非常復雜,可能會引發一系列操作,因此需要翻譯成多條微指令,

CISCCPU 通常別無選擇,只能使用微指令,否則復雜的 CISC 指令會讓流水線和亂序執行幾乎無法實作,

而 RISC CPU 還有別的選擇,例如,小型的 ARM CPU 完全不使用微指令,但這也意味著它們沒辦法實作亂序執行之類的操作,

但你可能會問,你說這些有什么關系嗎?為什么需要知道這些細節,才能理解為何蘋果超越了 AMD 和英特爾呢?

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

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

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

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

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

下面,我們來看一看 RISC 的優勢,以及 M1 Firestorm 核心采用的 ARM RISC 架構有哪些出色表現,

你知道,在 x86 中,指令長度約為 1~15 位元組,而在 RISC 上指令是固定長度,這有什么關系?

如果每條指令的長度都一樣,那么將一個位元組流分割,并行發送給 8 個不同的解碼器就非常容易,

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

英特爾和 AMD 采取暴力的方式來解決這個問題,即在每個可能的開始位置嘗試解碼,也就是說,許多錯誤的猜測就只能拋棄,這就導致解碼器變得非常復雜,因此很難添加更多的解碼器,但這對于蘋果不是問題,他們可以很容易地添加更多解碼器,

實際上,添加更多解碼器會帶來更多問題,因此對于 AMD 而言,4 個解碼器就是上限了,

所以,M1 Firestorm 核心能在同一時鐘頻率下產生比 AMD 和英特爾 CPU 多一倍的指令,

有人會說,可以將 CISC 拆分成多條微指令,增加指令的密度,這樣解碼一條x86 指令就可以達到解碼兩條 ARM 指令的效果,

但實際情況并非如此,高度優化的x86代碼很少使用復雜的 CISC 指令,甚至看上去更像 RISC,

但這對英特爾和 AMD 并沒有什么用,因為即使 15 位元組的指令非常罕見,解碼器也必須處理它們,這種復雜性成為了 AMD 和英特爾添加更多解碼器的阻礙,

但 AMD 的 Zen3 核心更快吧?

據我所知,從性能的角度來看,最新的 AMD CPU 核心 Zen3 比 Firestorm 核心稍稍快一些,但這只是因為 Zen3 核心的時鐘是 5GHz,而 Firestorm 核心的時鐘是 3.2GHz,盡管 Zen3 的時鐘頻率超出了 60%,但性能只不過比Firestorm 快了一點點,

那么為什么蘋果不提高時鐘頻率呢?因為更高的時鐘頻率會增加芯片發熱,這是蘋果的主要賣點,與英特爾和 AMD 不同,他們的電腦很少需要散熱,

所以本質上可以說,Firestorm 核心確實優于 Zen3 核心, Zen3 雖然性能優秀,但代價是高能耗與較大的發熱量,而蘋果并不選擇這條路,

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

未來的發展

似乎AMD和英特爾已經陷入了困境:

  • 他們的商業模式很難設計異構計算和單片系統

  • 由于舊的x86 CISC指令集的負擔,很難提高亂序執行性能

但這并不意味著窮途末路,他們仍然可以通過提高時鐘頻率、使用更好的散熱、添加更多核心、提高CPU快取等方式,但每一項都有缺點,英特爾的處境最糟糕,因為他們的核心數已經不及 Firestorm,而且他們的單片系統解決方案中的 GPU 也更弱,

添加更多核心的問題在于,對于一般的桌面負載而言,過多核心帶來的收益很低,當然對于服務器而言,核心數多多益善,

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

但對于 AMD 和英特爾來說,幸運的是,蘋果并沒有在市場上銷售芯片,所以PC 用戶別無選擇,PC 用戶可能會轉而使用蘋果,但畢竟這是一個緩慢的程序,切換日常使用的平臺并不是一蹴而就的事情,

但對于口袋里有錢、沒有太多平臺依賴的年輕人來說,以后會越來越多地選擇蘋果,從而提高蘋果在高端市場的占有率,最侄訓提高蘋果在整個PC市場的占有率,

網友評論

M1 之所以如此之快并不是因為技術好,而是因為蘋果堆積了很多硬體,

M1 非常寬(8 個解碼器),還有很多執行單元,它的重排序緩沖有 630 之深,擁有巨大的快取,還有大量的記憶體帶寬,非常強悍的芯片,設計也非常平衡,

另外,這并不是什么新技術,蘋果的 A 系列芯片每年都在逐步提升,只不過沒人相信手機上用的芯片能超過筆記本電腦的芯片,

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/236021.html

標籤:AI

上一篇:阿里淘系自研編解碼器包攬兩項世界冠軍!

下一篇:論文淺嘗 - AAAI2020 | 多輪對話系統中的歷史自適應知識融合機制

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more