回顧2006年,當時包括智慧型手機、數位電視以及平板電腦等裝置採用的繪圖處理器(GPU),出貨總量達到1.35億顆的規模,著眼未來技術發展的安謀國際(ARM)也在該年強化其矽智財(IP)解決方案陣容,併購挪威的Falanx將其行動GPU技術納入旗下。如今十年之後的市場規模,光是智慧型手機的全球GPU晶片銷售量就達到15億顆(根據ARM內部資料與Gartner的估計),而且在不到十年的期間,ARM的Mali就躍升為全球銷售量第一的GPU,2015年出貨量超過7.5億顆。
本文將探討包括市場、技術、使用情境以及裝置的發展,這些因素促使此類繪圖產品呈現爆炸性成長。另外還將分析ARM Mali GPU以及其底層架構在過去十年的發展歷程,最終累積出Mali-G71這款採用全新Bifrost架構的產品(圖1)。
全新API陸續問世 製程發展腳步加快
2015是繪圖技術令人振奮的一年,許多全新應用程式介面(API)的問世,協助開發業者充分發揮底層繪圖硬體的性能。
|
圖1 採用全新Bifrost架構的Mali-G71 |
在這一年,Khronos工作小組開始討論Vulkan,Vulkan當時被界定為下一代OpenGL API,設計用來作為繪圖API的下一階段目標,透過這種能滿足所有需求的API來終結OpenGL ES與OpenGL這類各自獨立的API時代。
2016年2月釋出的Vulkan是第一個由開發者需求主導設計的Khronos API(圖2),由遊戲引擎開發商、矽智財業者以及作業系統供應商組成的工作小組負責設計,藉以針對各方的需求規劃出最佳解決方案。發展出的Vulkan API能充分發揮現代異質化系統的性能,因為它內建多重執行緒的支援能力,再加上主要目標之一就是發揮硬體資料同步化的效益。Vulkan是一種低階API,它讓開發者能自行決定如何與硬體進行最佳的互動,更深入底層硬體資源,進而在各方面性能之間取得最佳的平衡點。
|
圖2 Vulkan架構示意圖 |
這對於像是虛擬實境(VR)等新使用情境而言尤其重要,因為開發者除了必須將延遲減至最小,還得要改進對繪圖管線(Pipeline)的控制能力。
對於專注開發GPU運算程式的開發者而言,OpenCL 2的釋出帶來許多關鍵概念,協助簡化開發高效能通用繪圖處理器(GPGPU)應用的流程。當中特別重要的一點是共用虛擬記憶體,這種記憶體讓中央處理器(CPU)與GPU能夠共用虛擬定址空間。硬體資料同步化帶來可微調的共用緩衝區機制,由於不必在CPU與GPU之間往返傳遞資料,開發者可省去為CPU與GPU設計共同作業負載的工作。
另一項促成大幅變革的科技則是半導體製程的精進。台積電與三星(Samsung)在2014年推出的20奈米(nm)製程,終結了長達10年的平面製程時代。三星晶圓代工部門(Samsung Foundry)代工的Exynos 7420晶片在2015年採用14奈米FinFET製程,接著台積電也用16奈米FinFET製程生產蘋果(Apple)的A9處理器。到了2016年,這些製程經歷許多改良,不僅成本降低,良率也有所提升,為2017年邁向10奈米做好準備。
從GPU的角度來看,這些製程技術的進步對業界有許多方面的意義。第一,製程越現代化,單位空間(或電力)就能容納更多電晶體。由於GPU屬於平行運算的處理器,因此隨著GPU架構的演進,邁向更先進的製程將使效能跟著攀升。
然而,在現代化製程中,導線與電晶體的微縮幅度並不一致。就以Ergo為例,從28奈米轉進14奈米,系統單晶片(SoC)設計業者獲得更高的電晶體密度,但導線的微縮幅度卻沒有達到同樣的程度。這意謂著在10奈米製程環境中以28奈米的設定來開發GPU,只會得到次佳的設計成果,因為電晶體與導線的關係不會和過去一致。矽智財調適至特定製程節點總是會有一定的取捨考量,隨著邁向更先進的製程,這樣取捨的重要性也隨之升高。
回顧行動GPU與時俱進,會發現從2011到2016年效能提升幅度高達二十倍(圖3)。隨著手機越來越輕薄,這方面的數據雖然並沒有完全反應出背後科技進步的全貌,卻也讓大家有一定的認識,了解開發者在研發現代行動裝置必須因應隨幅度增加的效能。
|
圖3 GPU效能從2011到2016年提升幅度高達二十倍 |
使用情境急速發展 提供更好操作體驗
各家開發廠商推陳出新,利用這方面的效能提升來改善現有各種使用情境,並著手研究如何發展全新的行動應用。
隨著行動平台持續演進,各種額外新增的感測器不斷加入到產品中。再加上系統效能的大幅提升,以及螢幕與電池續航力的改良,使得開發業者獲得創新研發的終極平台。
讓現代智慧型手機能夠大展身手的其中一個領域,就是擴增實境(AR)。AR運用先進攝影機拍攝影像,然後傳遞到CPU、GPU、影像處理器(ISP)、視覺處理器(VPU)以及資料處理器(DPU)等運算單元進行處理,最後把結果顯示在高解析螢幕上。在整個過程中,系統會把想要的擴增訊息疊加到真實影像上。依據鎖定的應用,處理過程中還會涉及到物件辨識、方向補償(使用羅盤與加速儀)或是先進的著色技巧。
在像是Snapchat這類熱門行動應用程式(App)中,會運用AR功能在使用者的臉部影像上套用濾鏡功能,再把處理後的影像與影片和網友分享,或是在Pokemon Go這類程式中,讓使用者看到疊加在真實景點影像上的動畫人物,讓AR一舉推廣到大眾市場。
此外,各種更先進的AR使用情境陸續問市,App將三維(3D)物件疊加到攝影機拍到的影像上,促成許多行業更廣泛的應用創新,像是零售與先進遊戲。這類應用的實例之一,就是預先檢視產品是否適合擺放在自己家中。DIY組裝家具龍頭IKEA就準備在2017年推出AR版本的產品型錄。
雖然虛擬實境並非新技術,它的基礎卻出現根本性的改變。許多裝置問市之後,帶來充裕的效能,足以運行極吸引目光的VR內容,背後要歸功於廣大開發商的產業體系促成這方面的創新。特別是行動平台方面,讓產品普及至幾乎所有客層,平台的行動力也發揮顯著的優勢。在擺脫纜線的束縛後,走出桌機與遊戲主機的VR讓使用者自由走動觀看虛擬實境世界,再加上行動平台搭載的各種感測器,讓開發者在其App中善加發揮創意。事實上,VR在行動平台已有許多關鍵性的突破。雲霄飛車業者運用VR呈現嶄新的體驗,完全發揮行動平台的超強效能。
各種嶄新革命性使用情境,持續拓展智慧型手機的應用疆界,讓人很容易忘記最常見的使用功能仍然是瀏覽網頁和遊戲。近幾年來,螢幕解析度與更新率持續攀升,使用者期盼獲得流暢的使用者介面(UI)以及自然直覺的操控功能。這些要求隨著GPU的演進跟著水漲船高,同時也對追求低成本的產品市場形成嚴苛的挑戰。
容易取得入手的行動裝置已成為全球主要遊戲平台,行動裝置的遊戲玩家不斷成長,促使各家廠商推出越來越多的遊戲。現代行動遊戲玩家涵蓋各種類型,廠商推出眾多價位與品質的遊戲讓顧客自由挑選,從獨立製作的免費遊戲一路涵蓋到耗資數百萬美元的鉅作。遊戲的視覺品質也隨之大幅提升。在引進各種GPU之後,原本畫質粗糙的3D遊戲,如今連背景都變得精緻且動感十足,就連先前世代的專用遊樂器也相形失色。
圖4顯示ARM展示片團隊製作的三個展示片。從TrueForce展示片中相對較簡單(以現今的標準而言)的3D內容開始,這部在2010年製作的內容,在2011年出廠的Galaxy S2手機上播放。這部展示片中用到1.6萬個模型元素,片段處理(Fragment Processing)方面每個像素(Pixel)耗用3.7個週期,採用OpenGL ES 2.0標準。
|
圖4 ARM展示片團隊製作的三個展示片比較 |
3年之後,也就是2013年,Open GLES 3.0釋出,促成GPU支援GPU運算功能(雖然不是OpenGL ES 3.0 API的一部分,但它隨後被納入到OpenGL ES 3.1),並讓各界在行動GPU上運用更先進的著色技巧。再加上底層硬體的發展,使得視覺品質有顯著的改進。若拿Trollheim的複雜度和TrueForce相比,繪圖單元(Primitive)數量是15萬比上1.6萬,Trollheim與TrueForce兩部展示片在片斷處理方面每像素分別耗用16個週期與3.7個週期。
在2016年,Vulkan釋出,象徵API效率跨出一大步,協助開發者充分發揮硬體的效能,而且耗用的資源比OpenGL ES大幅減少。當然硬體方面也有顯著的演進,若拿Lofoten和Trollheim相比,可明顯看出複雜度的提升;每幀的繪圖單元增加300%,片段(Fragment)複雜度則增加150%。
更輕薄更持久更快速 手機設計門檻不斷加高
出現演化的不僅只有使用情境,裝置本身也有大幅的改變。智慧型手機市場方面,旗艦機種不僅智能度越來越高,還提供更多的個人電腦功能,然而主要焦點仍然放在各種通訊功能上。多年以來,業界的趨勢是人們用智慧型手機做更廣泛的用途。語音通話不再是智慧型手機的主要焦點,各界關注的目標已轉向螢幕。
|
圖5 螢幕在整個裝置的占比越來越高 |
以往,電池續航力的數據是指手機充飽電後能支撐的通話時數,現今的業界標準是瀏覽網頁或高端遊戲等應用的時數。隨著螢幕獲得越來越多的關注,各界也對GPU投注越來越多的目光。使用者期盼得到更高品質的視覺效果,在此同時智慧型手機的設計也與時俱進,螢幕的美感與流線性也持續提升。其中一點就是螢幕周圍的邊框越做越小,業界趨勢是把螢幕封裝到裝置本身內,把空間留給使用者介面而不是像過去留給硬體。從圖5顯示的數據可看出,螢幕在整個裝置的占比越來越高。這個趨勢在三星Galaxy S7 Edge這類裝置上特別顯著,因為螢幕幾乎覆蓋整支手機。
現今的智慧型手機除了打電話外,還能執行眾多功能,包括處理電子郵件、社群媒體、定位、支付、瀏覽網頁、遊戲、拍照片與影片等。使用者期盼裝置在執行這些功能時能發揮卓越品質與更長的電池續航力。在技術多方面的演進,加上現今的智慧型手機搭載容量更勝以往的電池,可觀察到如圖6所示的趨勢。
除此之外,智慧型手機機身厚度越來越薄,有些甚至不到7毫米(mm),考量到手機裝入這麼多的科技,這樣的輕薄機身更讓人印象深刻。
然而,這些發展並非毫無缺點。螢幕越來越大,電池尺寸越來越大,但手機卻越做越薄;裝置能散掉的熱卻降低了。在散熱方面,由於螢幕本身的散熱效率比不上金屬機身,因此隨著螢幕在整個裝置的占比越來越高,散熱能力也隨之下滑。另外,隨著裝置越來越薄,可用來散熱的表面積也更少。現今高階手機的最高持續效能往往受限於散熱能力,因而對底層零組件形成另一項挑戰。
現代的智慧型手機內含眾多需要耗電的核心零組件,它們都會產生熱量,包括攝影機子系統、螢幕、數據機晶片、無線區域網路(Wi-Fi)、非揮發性記憶體、動態隨機存取記憶體(DRAM)以及主系統單晶片本身(內含CPU、GPU以及其他處理器)。因此降低其中任何一個元件的功耗,都能為任何其他零組件騰出更多電力,因為總耗電預算是所有零組件共同承受,每個系統耗用的電力比例取決於使用情境。
|
圖6 智慧型手機搭載的電池容量逐年提升 |
現代的GPU相當複雜,且依賴CPU運行驅動程式,藉以讓程式透過此介面建立溝通管道。驅動程式可藉由如Vulkan這類現代API達到更低的作業負載,但仍需要在CPU上運行驅動程式。這方面的作業需要耗電,加上電力來自同樣的總系統耗電預算,因此CPU用在與GPU建立介面所耗用的電力,就無法供給GPU本身使用。因此,降低CPU的作業負荷至關重要,不光是避免成為GPU作業的瓶頸,也能盡量為GPU分配更多電力。
同樣的狀況,現代系統在執行複雜3D遊戲時,GPU會耗用大量的DRAM頻寬。在處理大量的資料(在上述的Lofoten展示片中,每幀須處理60萬個三角形),實際的DRAM讀寫作業相當耗電,而且會占用系統耗電預算。因此降低DRAM頻寬可節省DRAM耗電,騰出電力提供給其他作業有效運用。
就現代智慧型手機設計而言,日趨複雜的使用情境對GPU形成嚴苛的挑戰。接下來探討ARM下一代GPU與GPU架構如何因應這些挑戰。
追求更好使用體驗 Mali-G71瞄準新一代裝置
Mali-G71是ARM高效能GPU藍圖的最新成員,是第一款採用全新Bifrost架構的GPU,在效能與功耗方面都有大幅的提升(圖7)。
|
圖7 Mali-G71特性說明 |
Mali-G71是迄今效能最高的ARM繪圖處理器,除了具備滿足各種現代用途的效能,還能從一個著色核心一路延伸至三十二個核心(圖8)。這讓系統單晶片製造商能根據目標市場的需求,在晶片面積、效能、耗電等因素之間取得最佳的平衡點,因此可望出現很多各種不同組態的Mail-G71出貨。
|
圖8 Mali繪圖處理器具備可擴展性與高性能 |
如上所述,有些智慧型手機受限於發熱量,有些受限的因素則是成本,或是晶片所占用的空間(這決定了效能)。為達到更高的效能,Mali-G71與Bifrost架構不僅提升能耗(Energy Efficiency)亦即每瓦效能,還增加效能密度(Performance Density)亦即單位矽晶片面積提供的效能。
如此一來,面臨功率與發熱挑戰的晶片供應商就能達到更高的GPU效能水準。在類似的條件下,Mali-G71的能源效率比Mali-T880提高20%,效能密度則增加40%。此外,外部記憶體耗用的總頻寬減少20%,這對降低系統耗電至關重要(圖9)。
|
圖9 Mali-G71繪圖處理器提供更高的效能水準 |
Bifrost架構演進 推升ARM GPU表現
為說明Mali-G71如何達到大幅超越先前ARM GPU的表現,必須更詳盡地檢視架構本身,以及為發揮這些優勢所採用的方法。
Bifrost是ARM第三代可程式化GPU架構,它是以開發Utgard與Midgard架構所累積的知識與經驗作為基礎(圖10)。
|
圖10 ARM Mali繪圖處理器發展簡史 |
先前的ARM GPU架構Utgard和Midgard創下輝煌戰果,它們在數量以及底層的技術方面都針對持續演進的GPU市場量身設計。Utgard是ARM第一個可程式化GPU架構,本身針對GLES 2.x進行最佳化,採用獨立的片段與頂點(Vertex)著色器核心。Midgard則推出統一著色器(Unified Shader),支援GLES 3.x,並透過OpenCL 1.x Full Profile組態支援GPGPU運算。Midgard屬於前瞻性架構,甚至還預先納入支援Vulkan的功能--考量到該架構是在5年多前設計,這點實屬極具遠見的規劃。
然而,隨著內容與使用情境出現大幅的演化,在架構方面也必須納入重大的革新才能配合次世代的應用情境(圖11)。
|
圖11 Bifrost繪圖處理器設計架構 |
從最頂層的角度觀察,相較於Midgard架構,GPU核心並沒有顯著的改變。其內部包含幾個可延伸的著色器核心、負責與驅動程式溝通的作業管理器、處理記憶體分頁表與分塊(Tiler)的記憶體管理單元(MMU),因為Bifrost本身仍是將影像拆成分塊的著色架構。然而,上述每個區塊都有長足的進展。
L2子系統負責透過AMBA ACE或AXI-Lite與外界互動,本身也設計用來支援AMBA 4 ACE。這讓Mali-G71全球具備完全的硬體資料同步性,還能微調GPU與其他單元之間的資料共用,像是硬體之間的CPU透明性。
分塊器經過重新設計,藉以支援全新的著色流程,亦即索引式的定位著色(Index Driven Position Shading)。其想法是把頂點著色分成兩個部分,藉以節省頻寬,省略處理螢幕上看不到的頂點的變量(Varying),省下讀寫作業所耗費的頻寬。這樣的設計還能省下更多頻寬,因為螢幕上看不到的頂點,系統不必寫回其座標(圖12)。
|
圖12 索引式的定位著色技術與Bifrost核心設計 |
觀察著色器核心本身,就會發現有更大的變革。在Bifrost架構中,ARM根據全面的內容與趨勢分析,加上多年累積的產業經驗,推出一套全新的指令集。現今的趨勢是現代GPU執行比以往更加複雜的可程式化著色器,大多用來執行演算作業,並使用到大量的純量程式碼。在這種全新的執行引擎中,Bifrost帶來極具效率的全新演算單元,在執行先進著色器核心時極具效率。此外,它們還能輕易地擴展,未來若有需要,這個架構還能讓使用者輕鬆擴充。
由於這些作業大多是繪圖領域,因此Bifrost設計了獨立的屬性(Attribute)以及變量(Varying)的單元,而這些單元本身都有自己高度最佳化的硬體區塊。新指令集還加入四緒組(Quad)的設計,透過管線將四個執行緒綁在一起執行,節省控制邏輯。四緒組管理員(Quad Manager)負責把Quad交給執行引擎。同時也納入一種控制架構,藉以提高實作利用率,這是因應如上所述現代製程演進的重要設計。
Bifrost引進一種名為子句著色器(Clause Shader)的概念,用來應付執行引擎本身內部的高導線密度(圖13)。你可以把子句想成一群能背對背自動執行的指令。自動執行意謂子句不能被中斷,包括分支(Branch),分支僅出現在子句邊界,任何種類的岔斷都不能打斷子句的執行。這代表子句的執行完全可預測,因此資料路徑的邏輯控制就更為簡易。舉例來說,不需要更新子句內部的程式計數器,因為GPU在子句執行之前(或之後)就會依據子句中的指令數量往前執行。
|
圖13 條件式著色器運作示意圖 |
|
圖13 條件式著色器運作示意圖 |
對於CPU而言,通常不會想看到這樣行為,因為快速回應中斷是必要的,而且分支也經常出現。然而對於GPU來說,這種技巧可用來進一步優化整個設計。試想來了一串指令,通常接連的指令會拿前一個指令的運算結果作為輸入值(下面例子中,多個ADD加法運算接連執行,累積出結果)。如果經常出現這類程序,而且知悉存取暫存器區塊的代價相當昂貴(大的記憶體區塊),則可運用暫時的暫存器來減少暫存器區塊的存取次數。這只有在子句確保子包內的執行是不可分割中斷的(Atomic),而且暫存器內的暫時性資料也只會維持一個週期。
舉如圖14所示的簡單著色程式為例,從指令集的角度觀察著色器如何運行。值得一提的是,這方面的工作是由編譯器負責處理,開發者是看不到的。
|
圖14 著色程式執行過程解說 |
硬體規格推陳出新 新使用情境值得期待
以上詳細探討Bifrost架構如何達到更高的效率與效能,很明顯地看出許多大幅創新讓Mali-G71為裝置GPU效能帶來重大進展,滿足使用者的期盼。藉由支援如Vulkan與OpenCL 2.0這類現代API,Mali-G71將讓使用者體驗各種令人振奮的新使用情境。ARM持續發展Bifrost架構,以滿足新一代內容的各種需求,甚至超越業界的期盼。我們可以期待ARM Mali多媒體套件(Multimedia Suite)在之後將出現更大的進展。
(本文作者為安謀國際GPU產品經理)