現僅蘋果M1力挺 UMA已消失在處理器世界?

2021-08-20
作者 黃燁鋒

本文不打算追溯UMA究竟表示什麼——不過無論如何,UMA都基於異質運算,而AMD是提異質運算比較早且積極的選手……

蘋果(Apple) M1晶片發佈之際,在大眾間普及了一個叫統一記憶體架構(Unified Memory Architecture,UMA)的概念——這個詞主要用以形容,M1平台之上的RAM記憶體,針對CPU和GPU等不同的處理器時,採用統一可訪問的記憶體池:如此一來M1的各組成部分不需要像傳統方案那樣,在多個記憶體池之間來回複製資料。

這裡UMA的基本假設是,傳統的CPU和GPU雖然位於同一個SoC晶片上,但它們對於記憶體的不同訪問習慣、資料結構,導致它們雖然使用相同的記憶體RAM,但其存取空間仍然是分開的。而M1則打破了這種界限,提升了頻寬、延遲和性能表現。當然這種「打破」是蘋果和媒體的宣傳。

 

 

事實上,UMA這個詞也有些歷史了,Nvidia、AMD等都做過宣傳。而且似乎在不同語境下,其含義是不一樣的(例如維基百科將UMA等同於整合GPU;且UMA似有各種不同實現方式)。這也未蘋果M1的UMA是否真的領先,打了個問號。本文不打算去追溯UMA究竟表示什麼——不過無論如何,UMA都基於異質運算。所謂異質運算,也就是把CPU、GPU、NPU、FPGA等通用、專用處理器整合在一起,大家協同運算、各司其職。

異質運算是後摩爾時代的基本趨勢。現在異質運算已經不新鮮了,因為如今遍地都是異質運算晶片,手機、PC的處理器即是。不過十多年前,異質運算還是相當新潮,而AMD是提異質運算比較早且積極的選手。

在PC處理器中AMD有個產品線稱APU:現在對APU的大致理解,應該是把CPU、GPU整合到同一顆晶片上的處理器。在這個時代,這種思路也太過稀鬆平常了,英特爾(Intel)、蘋果、高通(Qualcomm)、Arm還有誰不是這麼做?但在AMD提出Fusion專案的2006年,這可是個比較有趣的思路——當年即便是所謂的「整合顯卡」也還都是在主機板上單獨的晶片。

 

 

APU是最早實踐異質運算的處理器產品,而且也比蘋果早很多年嘗試去實現UMA——至於是否成功那是另一回事,現在的APU可能早就沒了當初的使命。本文將談談AMD當年提出的APU架構理念,以及到如今的蘋果M1,世界又發生了什麼的變化,並試圖分析蘋果M1的UMA有多大價值。

與推土機有關的APU歷史

AMD早年提出APU這個概念有其歷史原因。過去十多年,AMD在技術上走過一條長長的彎路,在Zen架構出現以前,AMD一直在研發一種叫Bulldozer推土機的處理器架構。

這種架構的一大特點是,每兩個處理器核心共用一個浮點運算單元(每兩個核心組成一個模組)。也就是說每一個推土機模組,對整數運算來說是2個核心,而對浮點運算而言有時是1個核心,有時又可以算2個核心。

 

1個推土機模組。

 

AMD當年表示,之所以採用這樣的核心設計,是因為大部分作業系統工作都是基於整數運算;而浮點運算日常沒那麼重要——真正需要浮點性能的時候,讓GPU執行即可(似乎和早年高通Kryo的思路完全相反)。

我們現在當然知道,AMD推土機架構是徹底失敗了。不過如果順著AMD當年的這個思路去想,AMD收購了ATI之後手握CPU、GPU兩大資源,那麼弄個CPU、GPU融合的架構出來,向量、浮點這些運算就可以歡樂地交給GPU去完成。完全不難想像當年的推土機CPU架構,可能就是為APU Fusion這個概念而生。

事實上,AMD Fusion專案2006年就提出——AMD也是在這一年收購的ATI。當時AMD表示要開發一種SoC晶片,將CPU和GPU整合到一顆裸晶上。不過要把CPU、GPU以當年的45nm製程放在一起,難度仍相當的大。所以第一顆APU問世已是2011年的事了,推土機CPU也是2011年發佈。

 

 

這套技術邏輯,感覺還是相當的圓滿——至少從理論上來看是如此。當年亦有分析師提出,「APU」這個概念恰是因為AMD在CPU市場上表現越來越差,推土機性能也遠遠落後於Intel同時代產品,所開發出來的。AMD期望藉由APU的新概念,來實現市場的突破,這個觀點可能也有道理,但實際上推土機的問世,比APU概念的誕生至少晚了5年。所以本文更傾向於認為,APU是AMD一早就預備推廣的一種技術。

APU生態與HSA聯盟的建立

AMD在2010年發佈的一份APU技術白皮書中,大肆誇讚了APU在技術上的獨到之處。現在看來CPU + GPU的設定並沒有什麼可吹噓,但這在當年也算是個壯舉。而且APU也不只是把CPU和GPU放在一起這麼單純,畢竟AMD是期望讓GPU在日常工作中也發揮作用,而不只是充當圖形運算加速器。

 

(來源:APU 101: All about AMD Fusion Accelerated Processing Units)

 

在理念宣傳上,AMD畫過一張圖。AMD認為,處理器設計造成的性能提升,歷史上分成了三個階段,如上圖所示。這三個階段分別是單核心時期、多核心時期,以及異質系統時期。這種劃分也算比較前瞻地談到了未來各種專用處理器或單元對於產業的變革:我們現在身處的時代的確實現了這個理念。

AMD最初提APU一詞的時候就談到GPU之類的向量處理器,對於大型資料集,以及密集型數值運算任務非常適用;但對於很多問題來說,CPU也是不可或缺的。異質運算融合CPU、CPU,以及更多處理器的長處,實現更佳的性能和效率表現。

當年的確還沒有「核心顯示卡」的概念,頂多就是「整合顯示卡」IGP (Integrated graphics processor)。而且PC歷史上的IGP性能孱弱,只用於解決最基本的圖形運算問題。IGP是獨立存在於PCB板上的晶片,與記憶體通訊要透過CPU和PCIe匯流排,也存在高延遲、低效的問題。AMD在早期APU宣傳中也會特別提APU架構的速度比PCIe 2.0快4倍(如下圖)。另外,AMD自然也不忘說獨立顯卡對於某些場景的通用運算GPU (GPGPU)不夠高效,尤其表現在CPU到GPU的PCIe資料搬遷上。

 

 

不過很顯然,GPGPU這類思路需要開發生態配合:CPU不會平白無故地把任務分給GPU去做,遠不是「上帝說要有光便有了光」這麼簡單的過程。Nvidia的CUDA生態建置了很久,AMD自然需要配套打造各種工具,並維護標準和生態:一個可以跨不同處理器,做統一開發的生態;也需要更多合作夥伴的加入和開發者的回應。

AMD最初提過沒有一家處理器廠商用真正可程式設計的GPU,來進行CPU和GPU的融合,所以APU生態「用高層級產業標準工具如OpenCL、DirectCompute和DirectX 11讓GPU可程式設計。」AMD雄心壯志地說要讓軟體發展者能夠將高性能向量演算法融入到自己的應用中,不再受制於標量處理器的傳統運算限制。

2012年,AMD帶頭成立了異質系統架構基金會(Heterogeneous System Architecture,HSA Foundation)。這個組織當時還拉進了Arm、Imagination、聯發科(MTK)、高通、三星(Samsung)、德州儀器(TI)等。AMD就是期望HSA架構能夠真正推廣開來,並推進APU這類形態處理器的軟體生態建設,另外,這一年AMD也把APU的「Fusion」平台改名為「HSA」。

不過雖然異質運算現在變得越來越流行,但在個人運算市場,HSA可沒能如AMD預期般繁盛興盛,AMD還是高估了自己在產業內的號召力。

APU的完整形態:hUMA

從當年AMD的形容來看,APU這類晶片的終極理想,或許更靠近於之前Sony PS3遊戲機的CELL處理器,或者富士通(Fujitsu)近年推的A64FX超算晶片——它們在硬體架構層面可謂部分融合了CPU和GPU,而不只是把CPU、GPU做到一顆晶片上。不過APU顯然是無法這麼激進的,畢竟它不像CELL、A64FX那樣只真鎖定某一專門的市場。

Jim Keller (AMD Zen架構之父)還在AMD的時候也是HSA的重要宣導者。Jim Keller多年前說過:「圖形運算需要真正的高頻寬記憶體系統。以前圖形單元有其專門的記憶體系統,而CPU和GPU對話,需借助於PCIe。在HSA架構下,CPU與GPU共用記憶體,圖形單元看得到記憶體,CPU也看得到記憶體,我們在兩者間傳遞指標,兩者有共同的位址空間。」(貌似AMD 總裁兼執行長蘇姿丰(Lisa Su)更是HSA的宣導者,但在CELL處理器時代,Lisa Su還在IBM。)

 

(來源:維基百科)

 

這聽起來是不是和蘋果M1的UMA已經十分類似了?不過HSA的實現,在AMD的APU上也不是一蹴可幾,至少在AMD 2010年發佈的白皮書中還沒有看到AMD大談UMA。從維基百科的資料來看,HSA特性包括很多分項,比如說共用電源管理、HSA-aware MMU (記憶體管理單元)、GPU Compute C++支援等。

Jim Keller口中提到的「共同位址空間」這一項,在實現上可能最晚是2014年PS4遊戲機中的Kaveri APU——這項特性名為Heterogeneous Memory Management,CPU的MMU和GPU的IOMMU共用相同的位址空間。不過2012年的Trinity APU上,也已經實現了HSA-aware MMU,即GPU可以透過HSA MMU的轉譯服務和分頁錯誤管理,來訪問整個系統記憶體…(在2013年以前,APU可能均未從硬體層面實現「共同位址空間」,但可能已經實現了對開發者而言CPU與GPU都看到「共同的資料」,並由中間層實現資料的同步。)

2014年所推的APU另外也實現了CPU與GPU的所謂 「fully coherent memory」,以及GPU可以透過CPU pointer來使用可分頁(pageable)的系統記憶體等。2015年的Carrizo APU又加入了GPU運算上下文切換、QoS等特性……

 

 

實際上,2013年AMD市場宣傳中提出了一個名為hUMA (Heterogeneous Unified Memory Access)的概念,其本質應該沒有脫離廣義上的UMA。筆者的理解,hUMA應該是AMD期望在APU上實現CPU、GPU (以及更多類型處理器)融合運算的完整特性的集合,包括「共用位址空間」、「完全一致儲存」這些特性。從硬體層面實現儲存一致性,相較於由程式標注資料修改,也更符合AMD構建HSA的初衷,對開發者也會更友好。

當年AMD還強調了hUMA的一項重要特性,即在記憶體資源仍然比較緊張的時代,虛擬記憶體交換是很常見的——即將一部分記憶體資料放到硬碟上。CPU如果要訪問硬碟上的這些虛擬記憶體資料,則需要透過作業系統來獲取資料。

 

 

前面提到一般CPU和GPU記憶體區域分開,兩者間是要執行複製資料操作,這個過程是由CPU獨立進行。如此,CPU也就無法處理寫入硬碟的虛擬記憶體部分,複製的資料只能放在RAM上,且要確保不會被寫進硬碟的虛擬記憶體交換區。hUMA當年也著力於解決這個問題,GPU不僅可以用CPU的位址,而且可以用依需求分頁的虛擬記憶體。AMD說除了GPGPU程式設計以外,這對圖形運算中,用到大型紋理的場景很有價值。

其實談這麼多,都為了說明,APU原本在設定上絕對不只是單純地將CPU和GPU放到同一個裸晶上,硬體和生態層面其實還是作了比較大的努力,以期實現CPU、GPU協作的高效性。

蘋果幾乎沒有公開多少有關M1晶片UMA架構的資訊,但AMD對類似思路的實踐應該早了很多年,只是不知道蘋果是否在實現上應用了什麼獨特技術。

 

(來源:維基百科)

 

另外值得一提的是,AMD的APU、HSA、hUMA並不只是針對CPU和GPU,還包括其他處理器。AMD預想中的如加密加速器、FPGA等;HSA在架構設計上也擴展到了(有VRAM的)獨立顯卡,其實現主要是通過PCIe傳遞指針(而不是完整複製資料)實現unified virtual memory (如上圖)。

當代APU名存實亡

完整實踐了AMD APU這套思路的,應該就是遊戲主機了,比如PS4開始對上述特性就有相對完整的實踐。或許APU的完美適配領域,就在遊戲機市場上——這也是AMD的主場。

不過在PC領域,像HSA這樣的方案,說到底還是需要開發者回應。除了硬體支援之外,還需要在生態方面多做投入。為了實現互通性、簡化開發,對於CPU和其他處理器而言,HSA實現是ISA無關的,同時要對高階語言實現支援。所以HSA生態上實際包含了HSAIL (中間層)、記憶體模型、dispatcher和運作時之類的組成部分,HSA特性也需要受到作業系統核心、設備驅動的支援等。

 

(來源:維基百科)

 

目前PC平台的HSA生態基本處在荒廢狀態,顯示APU with HSA在PC平台是名存實亡的。現在的APU,其本質大概也就是帶GPU核心顯卡的AMD處理器產品。其實即便只看今年AMD所推APU產品的GPU性能(Ryzen 7 5700G – RX Vega 8),也已被Intel Xe核心顯卡超過,早就不復AMD開闢APU形態產品之初,要讓高性能GPU與CPU協同工作的心思了。

APU現如今在PC市場上的角色,可能與帶核心顯卡的筆記型電腦一類低功耗行動市場的晶片產品並沒有本質區別,這顯然與AMD當初宣稱APU/HSA是第三次性能革命的誓言背道而馳。

AMD對HSA生態的疏於維護,一方面是對這個方向的不再看好,以及鑒於AMD在PC市場上的號召力不足,開發者對AMD的這套方案始終也真的沒有太大的興趣。而另一方面,AMD如今的Zen架構處理器,在性能和效率上早不再是當年推土機的模樣,也實現超越Intel Core處理器,自然也不再需要藉由APU這樣一個概念去為競爭找補。

不過說到生態,除了像遊戲機這類AMD的固有主場,在PC市場上,蘋果的號召力和AMD可不在一個次元。蘋果作為晶片設計商、作業系統開發商、PC設備OEM多重角色,對生態的牢牢把控,以M1為硬體基礎推行自己的異質運算和UMA架構,難度大概會小得多。蘋果在此的主要成就,大概就是超強的生態掌控力了吧。

不過這則故事還沒完,UMA在AMD/Intel的處理器上真的已經不復存在了嗎?APU的傳奇是否就此結束?是否只有蘋果才能機會將UMA貫徹到底?這些將在本文的下篇解讀。或許UMA只是以另一種方式存在於x86和Arm世界,只是它不叫HSA而已。

本文原刊登於EE Times China

 

 

 

 

 

 

活動簡介

人工智慧(AI)無所不在。這一波AI浪潮正重塑並徹底改變科技產業甚至整個世界的未來。如何有效利用AI協助設計與開發?如何透過AI從設計、製造到生產創造增強的體驗?如何以AI作為轉型與變革的力量?打造綠色永續未來?AI面對的風險和影響又是什麼?

AI⁺ 技術論壇聚焦人工智慧/機器學習(AI/ML)技術,涵蓋從雲端到邊緣、從硬體到軟體、從演算法到架構的AI/ML技術相關基礎設施之設計、應用與部署,協助您全面掌握AI最新技術趨勢與創新,接軌AI生態系佈局,讓機器學習更快速、更經濟、更聰明也更有效率。

贊助廠商

黃燁鋒

暫無

發表評論

訂閱EETT電子報