Apple M1的問世,讓沉潛已久、長期活在x86陰影下的「RISC十字軍」,紛紛起死回生「扭動」了起來,累積20年「怨念」一次性爆發的結果,就是網路上充滿了人腦當機產生的亂碼,彷彿活在Apple早已統治地球的平行世界,只能讓人越看越搖頭,越寫越脫力。
從2018年至今,筆者曾在癮科技陸續寫過數篇文章,分析Apple自研處理器為何如此強大、為何會想關起門來自己搞,看來又有重新解釋的必要性。這次就用自問自答的體裁,方便各位科科理解這些用點大腦就不難理解的道理。
Apple是外星人開的公司嗎?
不是,Apple是地球人企業。他們的產品和技術,也是奠基在同一個時代的基礎之上,不會因為他們叫做Apple,半導體製程的物理限制就不存在,計算機組織結構的原理就被改寫,軟體技術的演進就此逆轉,商業市場的邏輯就被顛覆。
不過看來某些果粉似乎並不是這樣想。
Mac在個人電腦的市占率有幾趴?
不超過7%,請不要因為常跑咖啡廳裝文青就產生「100%」的幻覺。
Apple仰賴的基本盤是iPhone和iPad,而不是1年出貨量不到2000萬台的Mac,某種程度上像是重現當年Intel靠著個人電腦市場「向上發展」侵入伺服器的模式,但「手機/平板→個人電腦」和「個人電腦→伺服器」那個跳躍幅度比較大,完全著毋庸議。
M1在技術規格上有何出色之處?
如果要筆者評價M1的歷史地位,左思右想只能擠出一句話:總算可以看到「當背後的基本盤大同小異時,RISC可以跟x86在個人電腦的處理器,較量到什麼程度 (專精高階伺服器的IBM Power算是例外)」。理論上,在相同的條件和資源,RISC的ARM (邁向64位元的ARMv8-A使其脫胎換骨) 應當更容易誕生明顯優於CISC的x86 (還是特別糟糕「毫無道理可尋」的那種) 的高效能處理器微架構。
M1的特色,條列如下:
- 台積電5nm製程、台積電5nm製程、台積電5nm製程,這很重要,所以寫3次。
- 160億電晶體、160億電晶體、160億電晶體,這也很重要,再寫3次。
- 由4個高效能Firestorm處理器核心 (共用12MB L2快取,時脈0.6–3.204 GHz,最高功耗13.8W)、4個低功耗Icestorm處理器核心 (共用4MB L2快取,時脈0.6–2.064 GHz,最高功耗1.3W)、8核心GPU (理論運算效能2.6 TFLOPs)、16核心神經網路引擎 (理論運算效能11 TOPs)、容量不明的系統層級快取 (SLC, System Level Cache,由所有運算單元共享) 和雙通道總計128位元寬的LPDDR4X記憶體控制器 (理論頻寬68.2GB/s) 所組成。
- 整顆M1的標準設計功耗 (TDP) 約為20-24W。
- 近似IBM Power10和被取消的Samsung M6,Firestorm的指令解碼器寬度多達8個指令,目前主流Intel/AMD分別是4+1/4。但這本來就是RISC該佔便宜的地方,據信從A11就保持不變。況且CISC的x86指令集,隨便1個指令的工作量,就相當於1.5-2個ARM指令。
- Firestorm的指令排程緩衝區 (Re-Order Buffer) 約為現有x86微架構的2-3倍 (630,相對於Intel Wiilow Cove的352和AMD Zen 3的256,ARM最高階的Cortex-X1則是224)。
- Firestorm的浮點運算輸出吞吐量為現有新型x86微架構的2倍。
- Firestorm具備更深的記憶體載入/回存緩衝區 (154/106,對比Intel的128/72和AMD的44/64)。
- Firestorm有現行x86處理器核心6倍容量的L1指令快取記憶體容量 (192kB vs 32kB),而且看似毫無存取延遲。
- Firestorm的L1資料快取記憶體128kB,存取延遲僅3時脈週期,而Intel是48kB/5時脈週期,AMD則32kB/4時脈週期。
- Icestorm的L1指令與資料快取容量分別是128kB和64kB,但也多於現有x86核心。
這種讓人突然「見證上帝顯靈」的感覺並不陌生,歷代IBM Power就幹過很多次了。順便一提,時下的王者IBM Power10單一核心可同時處理 (In-Flight) 的指令數,多達「1000個」。
但筆者也需要提醒,Apple和Intel/AMD兩邊的「包袱」實在差太大了,光x86指令集1個指令編碼長度從1-17 Bytes都有可能這檔事,加上一堆指令都會以記憶體做為運算目標,就對快取記憶體的設計帶來了一大堆麻煩,諸如此類的瓶頸可謂不計勝數。Apple M1讓長達數十年的「RISC指令集終極優勢論」有了被公平驗證的機會。
為何Apple的Ax處理器的性能如此優異?特別在A11突飛猛進?
一言以蔽之,因為那時候Apple已經沒有32位元的包袱了,可以集中全力針對AArch64最佳化。換言之,Apple M1的效能表現是「果」,不是「因」,一切都來自於其生態系統的封閉性。Apple並不是吃飽太閒才逼使開發者全面轉向64位元,一切都是布局好的,環環相扣。但也因為封閉性,讓Apple的處理器註定難以在自家環境以外的地方發揮實際的威力,甚至連「可用性」都是一個天大的問號。
為何Apple自產自銷的ARM處理器這麼厲害(上)
為何Apple自產自銷的ARM處理器這麼厲害(中)
為何Apple自產自銷的ARM處理器這麼厲害(下)
學過計算機組織結構的科科,上課不會太混,或多或少記得,無論是RISC指令集和近代高效能處理器微架構的產品設計,有一條叫做 “Make The Common Case Fast” 的原則,將資源砸在「最常用工作」的刀口上。最近的案例是AMD的Zen 3,冒著犧牲部份指令效率的風險(如退化的x87浮點乘法),一口氣提昇40%那伺服器應用最經常用到的指令效能。
Apple是不是吃飽太閒才強行推進「純64位元」?
A11應該是第一個「可能」沒有支援32位元ARM指令集支援的Ax處理器,因為A11不需要跑到任何32位元程式,這等於一口氣釋放了ARM在64位元擴張時蘊含的一切潛能(放棄引述執行、倍增資料暫存器、丟掉Banked Register這些專注於嵌入式應用的遺產),更能讓那票來自P.A Semi的研發團隊,更能放手一搏打造出指令執行寬度更寬、更強力的非循序指令執行心臟。這是連高度垂直整合數十年的IBM都無福消受的「主場優勢」,畢竟過去幾十年來累積的老舊企業端應用程式還是太多了,一堆還在跑得好好的。
此外,macOS也很早就取消32位元x86應用程式相容性,這也簡化了Rosetta 2要面對的問題,少了難搞的32位元x86指令集,僅需進行x86-64對AArch64的動態二進位轉譯,也不會碰到AVX、AVX2和AVX-512,這對改善轉換效能也有立竿見影的助益。
蘋果園風格的「瓶中生態系」能套用到其他地方嗎?
Apple自家的ARM指令集相容處理器與對應作業系統,也不需要像早期的x86個人電腦一樣,為了維持相容性,需要以16位元的真實模式開機,完全沒有保留32位元的必要性。這也是為何Apple應用程式開發的社群,會普遍認定A11之後都是「純64位元」的主因。就算能跑32位元,恐怕也是慘不忍睹。
會有比較認真的科科舉手發問:「聽說」ARM本家的高效能核心,從Cortex-A76開始,Kernel Mode就限定64位元,那為何還是追不上Apple?首先,作業系統要支援32位元,還是得要有32位元函式庫,有些也許可以轉換,但大部份都很難,特別是跟指標有關的部份。其次,雖然Android大部份的程式都是用虛擬機,但是還是有不少用到原生碼,特別是須追求效能表現的遊戲。
更何況,ARM的軟體生態系統也不只Android,還有其他作業系統和相關應用,「資產」和「包袱」本來就是一體的兩面。Intel和AMD也一定也很渴望64位元以外的x86軟體都瞬間從地球上消失 (這兩間公司的工程研發團隊一想到丟掉什麼節區記憶體定址、虛擬86模式和很多有的沒有的,大概晚上睡覺作夢也會笑),但光看到一狗票動輒用個十來年的工控嵌入式應用,就知道這是根本不可能的任務。
你是有什麼資格評論Apple?你有用過Apple的產品嗎?
筆者曾經擁有過的Apple產品的確不多,就只有iPhone 4 (不小心弄丟在計程車上)、iPhone 4S、iPhone 5S、iPhone 6S、iPhone 7、iPhone SE2、iPad Mini 2、iPad第五代、初代iPad Pro、初代Macbook 12吋 (體驗最爛的筆電鍵盤)、Macbook Air 2019、Magic Keyboard (日本旅行還不小心打壞按鍵)、Magic Mouse。因為筆者沒有聽音樂戴手錶的習慣,就無緣AirPods和Apple Watch了,「信仰純度」不夠,真是非常抱歉。
但我要講的不是過去「年輕時犯下的錯誤」,後面還有更重要的議題:Apple自身要承受的風險、Windows登陸M1的可能、以及「Apple重返伺服器市場的狂想曲」。
31 則回應
美國海軍都掏錢請微軟維護32bit Windows XP了,還有多少工控電腦跑Windows 98?
Apple和Intel本質就是完全不同的公司,獲利來源和客戶也不同。Apple能做的,Intel不一定能,這不是因為Intel無能,而是Intel很大部分營收得仰賴這些不願意升級、換新系統的企業用戶。
你Intel放生他們,你以為AMD不會撿起來做?
說Intel不願意擺脫包袱,人家好歹也搞過一個IA32。反觀x86-64這種超大歷史共業還是AMD搞出來的,照著邏輯鄉民是不是要去批評AMD造成x86共業?
另外扯一些舊的軟體不升級,導致硬體無法跟著進步,關我們普通消費者何事啊?第一次聽到擠牙膏擠的這麼理直氣壯。
今天文章就是在分析是否會影響x86的市場
一部分就是包含那些中小企業會不會轉移
你跟我拿掉不討論???
邏輯已死嗎?
可以讓我知道一下還有哪個業界的中小企業是2-30年來都用蘋果的?
如果是設計、影像相關的軟體基本上都是訂閱制了
除非跟樓下某個回應一樣用永久試用版aka盜版
你不用到20-30年付出的軟體費用都比硬體貴了好嗎?
舊軟體不升級就不能用
關消費者何事???
....
你在搞笑嗎?
軟體不升級不能用
升級是要成本的好嗎?
成本不用轉嫁到消費者身上?
廠商做佛心的不用賺錢?
看就知道你是個對底層毫無概念的盲粉
甚麼叫牽一髮而動全身都不懂
多讀點書好嗎?
沒事叫原PO去下指導棋幹嘛?
原PO去做intel產品開發就能丟掉x86嗎?
果粉真的是厲害了
有什麼好說的?
搞清楚探討的東西那麼難嗎?
這篇文盲不多
理盲到不少
看不懂就攻擊真的很蠢
舊的東西總有機會有時機汰換的
還遲早會宣布咧 笑死
ㄏㄏ
遲早要做的事情等到快來不及甚至已經來不及了才做,這樣還想討拍簡直太好笑,Intel會這樣擠牙膏也是因為你們這類人縱容造成的,不用再找理由了。
我不是業內人士沒有內幕消息,但我很確定遲早Intel會宣佈放棄32位元來打你們的臉,想必到時候各位一定能邊摸著臉頰邊找出很多理由幫它合理化,哈哈
結果就是那些廠商乾脆舊硬體/軟體繼續撐,死不更新設備,然後品況良好的舊硬體的價格還可能被炒高
最終就是雙輸
看看到現在都還有跑Windows XP甚至是98的電腦在持續使用就知道
當更新的代價對於廠商來說大過更新的好處的話,多數廠商寧可不更新
樓上說的Itanium也算一個例子,當初Intel也是處心積慮想要用IA-64取代x86(甚至影響到Intel在64位元x86的布局,間接造就AMD K8的輝煌)
結果最終失敗了,除了Itanium的一些問題之外,最主要的原因就是軟體開發者不挺
連微軟都不挺的結果,就是Intel最終被迫放棄IA-64,回頭專心搞x86
你真以為一切都可以是硬體廠商說了算?除了像蘋果這樣的封閉生態系之外,在開放的市場競爭,就得面臨其他對手/方案的競爭,而誰掌握了誰能脫穎而出的主導權?還是軟體開發者/使用者們
當越多軟體開發者/使用者選擇某方案,某方案勝出的機率就越大
而這也是x86最終能成為PC產業霸主的原因,因為多數人選擇了它
不是因為它最優秀(甚至可以說x86根本就是缺陷滿滿),而只是因為最多人用它,以它的指令集來開發程式,而且賴著不走不願意轉到其他陣營,才使其最終能勝出,僅此而已
而很多人用x86的理由是甚麼?還不是因為它們的老程式也能在上面跑,不須多費功夫去整個重寫
"經濟效益最高",才持續使用
沒了這個優勢,誰還要用這個"缺陷滿滿"的x86?
封閉使人無知嗎?
連過去的與現今的市場需求都搞不懂
你以為廠商說換就換?
程式說改就改?
就是逼你花錢花資源更新
還好我錢夠 蘋果整套該換的還跟得上
喜歡是可以 但盲目就不好了
不知道發狂的果粉看不看得清
(但我猜他們連指令集都還是搞不懂)
少在那隨便誣人用盜版
我老早就買著 fcpx 等整套正版在用了
講話帶點腦行不行
"你以為做單純做新功能跟改底層架構的成本一樣嗎?"
搞不清楚狀況建議你閉嘴
沒必要秀你的無知
adobe cc可是年年訂閱一年快兩萬!
adobe才貴好嗎~
免費試用版?不就是盜版?
那是因為你是個人告你贏了沒賺多少,
adobe可是告過好幾間公司
作業系統每次升級,我的Parallels VM 跟 備份程式 Carbon Copy Cloner 就要跟著更新一次。這種工具小軟體,每年花個三四千塊是基本的... FCPX Adobe CC 自從沒有跟德誼買機器,沒有永久免費試用版之後,超級痛苦的。很多事情本來很簡單現在用免費工具花好幾倍時間得出更爛的結果。
蘋果生態圈是有閑錢敢花錢的人才能悠遊自在的在圈子裡晃...