硬科技:科科應該要知道的Apple M1盲點 續篇

2020.12.16 06:30PM
照片中提到了Macs with、Apple Silicon、Desktops,包含了蘋果矽、2020蘋果全球開發者大會、蘋果移動應用處理器、蘋果、蘋果機

天底下任何事物都有其邏輯的極限,當然,Apple的產品也是。當採用M1處理器做為心臟的新款Mac陸續送到消費者的手上,透過常識即可預料的疑難雜症,就紛紛一個一個出籠了,甚至讓一堆人興奮到失去理智、知識和常識的「跑分」,現在看來也不是那麼厲害了。以一位做為替癮科技的科科們寫了100多篇科科文的作者立場,沒人知道未來會發生什麼事情,也沒人蓋棺論定Apple未來能做到什麼程度,但好好的理解當下的狀況和現實,並不需要多天才的腦袋。

在這之前,筆者不厭其煩的再說一次:所謂「Apple神蹟」,說穿了就是其封閉生態系商業模式,可以讓他們集中「最充沛的資源」把「最簡單的事情」做到「最完美的程度」,每年2.5億的手機平板出貨量,讓Apple有本錢帶頭使用台積電最新的製程,而純64位元軟體生態系,更讓他們設計處理器微架構時,更毫無後顧之憂。某位之前負責Apple歐洲業務的法國人Jean-Louis Gassée說過的「創新來自市場,而非產品」其實講的就是這件事情。但即使如此,Apple在M1的表現,實際上還是一堆不如人意之處。

建議科科再次複習一下筆者近期的幾篇科科文。如果覺得無聊,也可以「瞻仰」一下底下的留言,彷彿徜徉在平行時空,對放空腦袋很有幫助。筆者原本打算花點時間談談P.A Semi這間構成Apple晶片研發團隊骨幹的公司、他們的歷史、幹過的好事和為什麼如此這麼厲害,現在看來也沒有必要浪費時間了。

硬科技:科科應該要知道的Apple M1盲點
硬科技:科科需要知道的Apple M1的可能性(上) 過去篇
硬科技:科科需要知道的Apple M1的可能性(中) 現在篇
硬科技:科科需要知道的Apple M1的可能性(下) 未來篇

首先,「Rosetta 2跑得不順、甚至無法安裝應用程式」、「印表機等週邊驅動程式無法正常運作」、「電池續航力遠不如官方宣稱的那麼持久」等等,一點都不讓人感到意外。講白了,除非你只用Apple自家的軟體,或著只需要瀏覽器就可搞定一切的工作 (反而長期靠著Google服務和Office 365搞定大半個人事務的筆者,似乎還比較有這個本錢),或許只是為了追求精神上的勝利 (如坐在咖啡廳裝文青,跑來只為了跑CineBench R23讓自己爽),否則當下並不是入手新版Mac的好時機。

想購入新 M1 處理器的 Mac?最好再等等 (已取得原作者同意轉載)

其次,Rosetta 2不對應AVX、AVX2和AVX-512,看似減輕了Apple開發人員的負擔,但碰到用到SSE系列指令集 (SSE已取代x87的地位) 的x86應用程式,從x86的SSE轉譯成ARM的NEON,看來還是很麻煩的事情,這也充分反應在慘烈異常的4K HEVC轉檔效率上。畢竟這票SIMD指令集也並非可一對一「等價交換 (筆者就真的完全不知道AVX-512和SVE到底該怎麼互換)」,盡速將應用程式移植成原生ARM版本才是正本清源之道。但還是回到前一個問題:這絕對需要好一段時間才能搞定,絕非一朝一夕之功。

硬科技:淺談x86的SIMD指令擴張史(上):MMX到SSE
硬科技:淺談x86的SIMD指令擴張史(中):SSE2到SSE4
硬科技:淺談x86的SIMD指令擴張史(下):AVX到AVX-512

然後筆者也得烏鴉嘴一下,假若科科會重度使用Rosetta 2,建議記憶體容量越高越好,天知道日後Apple為了提高Rosetta 2的效能表現,用來暫存二進位轉譯成果的快取,究竟會吃掉多少空間。至於先前講過的「解決Adobe和微軟Office即可解決80%的蘋果園生態圈需求」,看來筆者又要抱持保留的態度了。

最後,前陣子讓無數人「高潮到失神」的M1跑分,特別是同時跨Windows MacOS雙平台、懶人超級愛用的CineBench,那個比肩Intel和AMD的單執行緒表現,也開始掉漆了:因為Intel和AMD都沒有啟動同時多執行緒 (SMT),等於變相封印了20-30%的效率,所以只要「解除封印」,M1照樣被x86雙雄甩開,這測試還沒把AMD Zen 3拉進來,結果就是讓Intel Tiger Lake-U的Willow Cove核心繼續一枝獨秀

坦白講,你們是第一次看過用過CineBench嗎?會不知道測試項目極度有限的CineBench很難測出單一SMT核心的真正能耐嗎?很不幸的是,諸多「興奮到模糊」的媒體,也通通忘掉這件事了。

說到這個,M1不是內部執行單元很寬嗎?幹嘛也不像當年IBM Power5一樣,一加掛SMT一口氣效能一飛沖天嗎?問題是「M1和A14共用核心微架構」啊,誰會在需要對電力效益斤斤計較的手機處理器導入SMT?這裡還不提SMT會激增產品設計的驗證難度這件事,要不然AMD的Zen微架構有什麼理由會拖這麼多年才問世?還吃飽太閒去弄個叢集多執行緒?

硬科技:AMD同時多執行緒SMT4是什麼?圖解CPU各種核心與執行緒關係

總之,大概就是這樣,之後應該還會出現更多讓人想要科科笑的事件。硬體平台轉換本來就是「動搖國本」的大事,時下Apple要轉移的軟體生態系統規模,更非2005年的昔日吳下阿蒙 (雖然Mac的個人電腦市占率還是維持7%上下,不是文青咖啡廳近100%),筆者也很納悶到底某些果粉是哪來的「勇氣」,相信這次可「無痛轉型」?該不會是梁靜茹借給你們的嗎?

在入手沒多久的Filco FKBC104M/CFB2鍵盤 (住處和辦公室同時個別佈署1把) 上敲字至此,筆者又不能不提起「生態封閉性這檔事,哪是硬體廠商就能單獨決定」的基本常識了。

先不講Intel完全對微軟等軟體廠商根本毫無約束力,光看在世界各地一堆老舊程式還在跑的份上(尤其是嵌入式工控),別說「捨棄32位元指令」,你連8086時代的遺產都丟不掉好不好?Intel這麼厲害,那為何會被微軟硬逼著相容AMD的x86-64,而不是強推自家的Yamhill?更何況Intel真的這樣幹,爽到的也只會是AMD,他們巴不得Intel自廢武功、雙手奉上x86處理器市場的霸權,難道Itanium的失敗教訓還不夠嗎?

啊,這些果粉可能連Itanium處理器和IA-64指令集是什麼都不知道吧?唉。

回顧消失在歷史洪流的Intel旗艦處理器Itanium(上)
回顧消失在歷史洪流的Intel旗艦處理器Itanium(中)
回顧消失在歷史洪流的Intel旗艦處理器Itanium(下)
硬科技:為何Intel的競爭者都要如此辛苦
硬科技:為何Intel的競爭者還是如此辛苦?
 

8 則回應

  • 在後端更分離的zen2.zen3架構SMT表現非常強勢,9900K甚至不敵3700X,分析了一下2077複雜畫面下Draw Call高達5千,是巫師3的5倍,可見其物件數量之驚人
    2020-12-31
  • 2077發售讓我重新檢視多執行緒在遊戲上的優勢,8核8線的9700K被6核12線的8700K打敗,過去的遊戲受到Draw call的數量限制太大了
    2020-12-31
  • 我以前還蠻愛看硬科技這個系列的文章,但幾個月回來看到這篇文章真的讓我對癮科技編輯的專業度感到失望。尤其看得下去還決定引用 WccfTech 上 Usman Pirzada 寫的文章的論述,代表編輯可能連對 Single threading 和 Multi threading 以及 SMT 這些基礎概念的理解都有嚴重問題。

    國外權威科技網站 AnandTech 主編 Ian Cutress 博士最近寫的 SMT 分析文也不敢講 SMT 一定是 CPU 設計的最佳解,引用 WccfTech 這種原文作者快成為各界笑柄的爭議文章,尤其是論述和最後結果都錯誤百出,還能拿來影射成 SMT 比較好的論證只能說令人對貴站編輯的思辨能力感到十分遺憾。

    回文很長,所以先稍微點出該原文哪裡錯誤,首先提出軟體上不存在的實體核心概念然後要求本應該要反映實際軟體執行性能的跑分新增這種虛構項目本身就是一個嚴重的謬誤。另外最後結論的部分,基本上在實際會使用 SMT 的情況下,M1 單一大核對上開了 SMT 的 4900HS 和 1165G7 的實體單核的兩個執行緒,M1 還是比較快,與原文的虛構跑分相差甚遠,詳情跑分和解釋請見下文。

    這篇來源文章發布的時候,該原文作者馬上被包括 AnandTech 主編之一 Andrei Frumusanu 等多名科技和半導體網站的編輯們在 Twitter 和 Reddit 上教訓了一頓,不但發現 Usman 連 Multi-processing 和 Muti-threading 的差別都不知道,最後還惱羞成怒封鎖了其他人。該文章下方留言區數百名網友也加入了圍剿作者的行列,我第一次在 WccfTech 這個完全被各大CPU GPU品牌的 Fanboy/ Troll 盤據的地方,在往往被惡搞圖廢文刷屏的留言區,在這篇居然變成正經的討論,而且還很多人幫蘋果說話指出原作者論述的謬誤。

    這篇原文不但出發點有問題連最後的結論也完全錯誤。原文作者首先搞不清楚 Single threading 和 Multi threading 性能所代表的意義,就想要妄想研發一個新的「Single core benchmark」。Usman 寫這篇文章的出發點就只是因為他對 Cinebench 把 Single threading benchmark 叫做 Single Core 這個語病以及對 M1 的不滿。但 SMT 的第二個 threads 也叫做 Virtual Core,所以也只能說是個語病,但軟體來說並沒有實體核心的這個概念,從軟體的角度看來所有的 thread 和 core 沒有區別,所以並沒有錯誤。

    Single threading 和 Multi threading 跑分各自在軟體實際執行性能佔據了重要的一席之地,尤其由於不是所有的軟體都能簡單多線程化(九個女人不能一起只花一個月生出一個小孩),有一大部分的軟體都還是以單線程為主,Single threading 性能不能透過純粹堆核心增加,除了可以顯示一家廠商的設計功力也能體現用戶實際使用常見情況的性能;相反的 Usman 所發明的「single core benchmark」這種放著其他空閒的核心不用只使用一個實體核心的情況在現實世界是基本上不會發生的,那做這種不會發生的虛構情境下的跑分有任何實際意義嗎?

    所謂的 SMT 就是增加一個核心在多線程工作時閒置時的利用效率,但是由於在同一個實體核心上執行兩個線程必須要共用搶奪同一個處理管道,會大幅降低至少其中一個線程的效率,幾乎所有作業系統的排程器都會盡量先填滿所有的實體核心最後才會動到 SMT 的 virtual core,也就是說基本上只有在執行可以完全飽和整個處理器的純多線程軟體才會動用到SMT,也就是我們平常所說的 Multi threading benchmark。

    Multi threading benchmark 在 Cinebench 早就有了,而且 Cinebench 的 CPU 光追還是對多線程執行 scaling 最為友善的工作類型之一,以下轉載來自 AnandTech 主編 Andrei Frumusanu 在 Reddit 上打臉 Usman 的數據
    4900HS: 10641 / 8 = 1330 per core MT versus 1260 ST score
    1165G7: 4904 / 4 = 1226 per core MT versus 1532 ST score
    M1: 5601 / 4 = 1400 per core MT versus 1522 ST score.
    所以可以看到在真正會使用SMT的時候,允許開 SMT 的「單核」兩個線程比上 M1 大核一個線程的情況下,這三款處理器多線程速度還是 M1 大核平均貢獻1400分最快,Usman 的圖表上預測會發生的開 SMT 後,會在單核心性能之上額外解封額外20-30%性能然後大幅超越 M1 的情形在實際情況是完全錯誤不存在,這顯示了 SMT 不一定是仙丹,一定是 CPU 多線程性能的最佳解。而且除此之外 SMT 還有軟體之間快取隔離上的安全疑慮,蘋果沒用 SMT 就可以達到多線程的高效能的設計理念也許反而才是未來的潮流。
    2020-12-22
    • 想一想,碰到這種只是看網路上的文章就看數字說故事、這些基礎概念的理解都有嚴重問題的高論,還是得解釋仔細一點。

      第一個問題:為何要多執行緒架構?基本上有兩個理由:第一個是記憶體延遲會降低處理器內部執行單元的利用率,第二個則是近代OOOE核心的資源都太過浪費了,總得想個辦法去提高利用率,讓電晶體預算發揮到最高的效益。說到底都是要提高整顆CPU的Throughput。

      只要是科班的讀者,都應該記得計量方法第三版對於SMT優勢的描述。請記得,SMT也只是MT的其中一種。IBM Power4到Power5的演進,或著Sun Throughput Computing,都是很好的例證。

      SMT的問題在哪裡?最大的問題其實也就是激增產品開發驗證的複雜度,以及降低單執行緒效率,特別對於追求反應時間的應用。至於增加功耗,則是更明顯的問題,這也是為何行動式處理器幾乎看不到這東西的主因。

      今天M1之所以沒有SMT,最主要的理由也不外乎和手機沿用相同核心設計,而不是「Apple高瞻遠矚」,哪天假如Apple需要打造為了資料中心和高階桌機量身訂做的微架構,他們也很難拒絕SMT的誘惑,看看AMD的發展就知道了,用不用提IBM和被Oracle併購後的Sun。

      所以對於這些SMT架構的處理器來說,你一旦關掉,就是浪費掉這些原本多出來的Throughput。這有這麼難理解嗎?

      至於那票人的文字嘴砲戰,講難聽一點,如果SMT無用,那就乾脆比較一下Intel和AMD關掉前和關掉後的Multi-Threading的CineBench效能表現,不就得了?
      2020-12-23
    • SMT的優劣勢其實都已經是計算機結構教科書上的內容,而IBM Power5之後的表現已經是最好的例證,特別是伺服器相關的應用,我只能說這種先設定Apple的設計是未來的潮流而否定現有高效能SMT的價值,根本就是先射箭再畫靶。

      www.cool3c.com/article/151760
      2020-12-23
  • ㄟ,對不起,我還是很期待能看到P.A. Semi的介紹
    2020-12-17
  • 真的嗆得太好了
    看到一堆自以為是果粉的腦粉生氣就覺得活該
    整天看自慰文看不夠
    還到處亂嗆 被打臉又搞不清楚狀況
    身為果粉就應該好好去了解蘋果
    搞清楚蘋果要面對的是什麼
    為什麼要這樣做 然後又會碰到什麼困難
    而不是只會拿跑分到處酸
    或是特化過的軟體功能到處比
    到底懂不懂什麼是通用處理器啊?
    2020-12-17