隨著人工智能的飛速發(fā)展,和業(yè)界對人工智能項(xiàng)目落地的巨大需求,移動端GPU的競爭也日益激烈,除了來自各GPU廠商之間的競爭之外,也要與專用芯片展開競爭(例如寒武紀(jì)的NPU等),可謂群雄逐鹿。
在之前的一篇淺析移動端GPU的文章中介紹過移動端GPU領(lǐng)域主要的三家廠商。隨著蘋果棄用PowerVR,在手機(jī)領(lǐng)域Mali和Adreno有著絕對的優(yōu)勢,而在物聯(lián)網(wǎng)和自動駕駛領(lǐng)域,三家都并未建立起完整的生態(tài)。這兩個(gè)領(lǐng)域除了GPU,也有一些專用芯片廠商入局,隨著物聯(lián)網(wǎng)和自動駕駛的發(fā)展,競爭將更加激烈。相對于其他移動廠商,PowerVR在GPU的技術(shù)方面披露的比較多,其中比較經(jīng)典當(dāng)屬Rogue架構(gòu)。Rogue架構(gòu)采用的是延后式分塊渲染架構(gòu)(TBDR),憑借該技術(shù),Rogue架構(gòu)曾一直是移動端GPU的標(biāo)桿。作為蘋果移動端GPU的獨(dú)家供應(yīng)商,也曾風(fēng)光無限。本文就對Rogue架構(gòu)進(jìn)行一些分析,歡迎高手點(diǎn)評斧正。
架構(gòu)概述
Rogue架構(gòu)是一種可編程的架構(gòu),能夠支持通用計(jì)算和圖形渲染。Rogue架構(gòu)針對頂點(diǎn)和像素的傳輸、計(jì)算數(shù)據(jù)在內(nèi)存之間的傳輸以及數(shù)據(jù)和計(jì)算核心之間的交互等提供了不同的硬件。本文將側(cè)重于通用計(jì)算方面的特性。
如上圖所示,Rogue架構(gòu)中通用計(jì)算相關(guān)的部件有計(jì)算數(shù)據(jù)控制器(Compute Data Master,CDM),粗粒度調(diào)度器(Coarse Grain Scheduler,CGS),統(tǒng)一渲染集群(Unified Shading Clusters),L1混合緩存(L1 Mixed Cache)。
GPU的整個(gè)計(jì)算流程是,CDM負(fù)責(zé)將CPU分配的單個(gè)任務(wù)拆分為多個(gè)子任務(wù),然后傳遞給CGS,由CGS將多個(gè)獨(dú)立的子任務(wù)部署到USC上去執(zhí)行。只有計(jì)算任務(wù)是由CDM處理的,所以CDM是計(jì)算任務(wù)專用的通道。
每個(gè)USC pair包含兩個(gè)USCs和一個(gè)紋理處理單元(Texture Processing Unit,TPU),這樣可以有效的平衡紋理訪問和計(jì)算。USC是Rogue架構(gòu)中的主要計(jì)算單元。TPU是一種專門加速內(nèi)核代碼中訪問圖像和紋理的硬件,它擁有獨(dú)立的緩存,能夠加速處理器對圖像數(shù)據(jù)的訪問。對于一些需要對圖像進(jìn)行專門訪問的算法和一些大尺寸的圖像,TPU可以提供很好的加速效果。
L1混合緩存是Rogue架構(gòu)的主要緩存,所有對內(nèi)存的訪問都會首先在這里緩存。當(dāng)數(shù)據(jù)讀取不能使用該緩存的時(shí)候,則會使用系統(tǒng)級緩存。系統(tǒng)級的高速緩存直接與系統(tǒng)RAM交互,也是數(shù)據(jù)命中緩存的最后機(jī)會。
統(tǒng)一渲染集群(USC)
Rogue架構(gòu)中負(fù)責(zé)計(jì)算的核心部件是USC,是一個(gè)可編程的標(biāo)量SIMD處理器,通常包含16個(gè)ALU Pilelines,用來執(zhí)行計(jì)算內(nèi)核中代碼。下圖為Rogue架構(gòu)中的USC示意圖。
圖中包含多種部件,我們只關(guān)心兩種,一種是內(nèi)存,一種是ALU。USC內(nèi)部的內(nèi)存空間主要包括兩個(gè)寄存器組,一個(gè)是Common Store,由整個(gè)USC共享;一個(gè)是Unified Store,每4個(gè)ALU 管線(Pipelines)共享一塊。
Unified Store是USC中4個(gè)小的由寄存器組成的存儲體,每個(gè)存儲體被4個(gè)ALU Pipes所共享,對應(yīng)于OpenCL中的私有存儲。每個(gè)Unified store包含1280個(gè)128-bit的寄存器,也就是說,每個(gè)ALU管線平均擁有320個(gè)寄存器。例如,如果每個(gè)線程申請10個(gè)寄存器,那么,每個(gè)USC上只能執(zhí)行512個(gè)線程(每個(gè)ALU管線執(zhí)行32個(gè)線程,需要320個(gè)寄存器),這也是達(dá)到推薦占有率所需最小的線程數(shù)。由于每個(gè)線程擁有獨(dú)立的寄存器等資源,所以可以實(shí)現(xiàn)0開銷的warp切換,切換的時(shí)候不需要進(jìn)行中間數(shù)據(jù)轉(zhuǎn)存。當(dāng)然在具體計(jì)算中,每個(gè)線程即OpenCL的WorkItem所能擁有的寄存器,與多種因素有關(guān)。
這128位的寄存器可以像4個(gè)32位寄存器一樣,被內(nèi)核有效的訪問,所以內(nèi)核最多可以使用40個(gè)32位寄存器,達(dá)到推薦的利用率。如果一個(gè)給定的內(nèi)核需要的寄存器不止這些,此時(shí)駐留的任務(wù)就會減少,減少執(zhí)行每個(gè)任務(wù)的線程數(shù)量,這樣每個(gè)線程就會獲得更多的寄存器空間。Imagination的編譯器只會降低利用率,因?yàn)檎加新蕦τ陔[藏線程中的延遲是至關(guān)重要的。
USC利用率(USC/Multiprocessor utilization),是指USC執(zhí)行活動的warp所用的時(shí)間與被阻斷的時(shí)間之比。如下圖所示,其利用率為75%。
USC的占有率是指駐留的warps與可用的駐留槽的比率。如下圖所示,展示了駐留的warps和可用warps的示意圖。駐留槽的數(shù)量與具體產(chǎn)品有關(guān),大多是16個(gè)。圖中的占有率為6/16。
所以,當(dāng)寄存器不夠用的時(shí)候,編譯器會犧牲利用率,保證占有率,有利于隱藏延遲。如果寄存器溢出嚴(yán)重,利用率不會無限制降低,會達(dá)到一個(gè)限度后,將溢出的寄存器分配到主存儲器中,也就是全局存儲(global memory),這樣會造成很高的帶寬和延遲成本,大幅度降低程序的性能。當(dāng)然,這種調(diào)度是有軟件控制的,所以不同的設(shè)備之間會有區(qū)別。
Common Store就是通常意義上的共享內(nèi)存,它是對一個(gè)USC中的所有ALU Pipelines可見的,主要用于線程之間的數(shù)據(jù)交換,任何共享的內(nèi)存都存儲在這個(gè)位置,例如OpenCL的local memory,OpenGL的share memory。它也用于存儲對象句柄,例如圖像,紋理和采樣器狀態(tài)等。
Common Store被分配在4個(gè)存儲體中,每個(gè)存儲體可看作是一個(gè)128位寬的數(shù)列,如下圖所示。
在Common Store中,可以同時(shí)從4個(gè)存儲體中獲取數(shù)據(jù),整個(gè)數(shù)據(jù)行可以在單周期內(nèi)讀取,例如一個(gè)任務(wù)中的16個(gè)線程從同一行獲取連續(xù)數(shù)據(jù)(綠色部分),那么每個(gè)線程可以在一個(gè)周期內(nèi)獲取32位值。但是,如果多于一個(gè)線程試圖從同一列訪問數(shù)據(jù)(紅色部分),則會導(dǎo)致存儲體沖突,因?yàn)槊總€(gè)周期,存儲體只能提供一次訪問請求,因此請求將被序列化,大大降低訪問性能。為了避免存儲體沖突,Common Store中的數(shù)據(jù)應(yīng)該跨行訪問,每周期訪問不同存儲體中的4個(gè)128位寄存器。
ALU Pipelines是USC中的計(jì)算單元,結(jié)構(gòu)圖如下圖所示。這是Series7XT ALUs示意圖。Rogue架構(gòu)中每個(gè)USC包含16個(gè)ALU Pipelines,每個(gè)ALU中包含有FP16,F(xiàn)P32等核心用于計(jì)算。不同型號的GPU包含的ALU core類型不同,數(shù)量也不同。例如在Series7XT Plus GPU中增加了Integer Pipelines,能夠支持Int8和Int16等整數(shù)類型,可以大幅度提升GPU性能,在Series7XT GPU中增加了FP64。FP16核心也不是Rogue架構(gòu)的標(biāo)配,早期型號也是沒有的。
根據(jù)ALU core的數(shù)量和時(shí)鐘頻率,可以很方便的計(jì)算出GPU的理論峰值??刹捎萌缦鹿剑?/p>
例如Series7XT系列中的GT7600包含6個(gè)USC,一共有192個(gè)FP32 core or 384個(gè)FP16 core。時(shí)鐘頻率有三種可定制,分別為650MHz, 800MHz和1GHz。以650MHz為例,其峰值性能為:
-
gpu
+關(guān)注
關(guān)注
28文章
4729瀏覽量
128890 -
人工智能
+關(guān)注
關(guān)注
1791文章
47183瀏覽量
238239 -
架構(gòu)
+關(guān)注
關(guān)注
1文章
513瀏覽量
25468 -
寒武紀(jì)
+關(guān)注
關(guān)注
11文章
186瀏覽量
73882
原文標(biāo)題:移動GPU的經(jīng)典:淺析Rogue架構(gòu)
文章出處:【微信號:SSDFans,微信公眾號:SSDFans】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論