0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

全面概述ARM Mali GPU架構(gòu)演進(jìn)!

安芯教育科技 ? 來(lái)源:極術(shù)社區(qū)yuq ? 作者:極術(shù)社區(qū)yuq ? 2021-03-31 13:51 ? 次閱讀

年初有機(jī)會(huì)調(diào)研了一下歷代ARM Mali GPU架構(gòu),目前一共四代【1】,分別是Utgard,Midgard,Bifrost和Valhall。有感于他的演進(jìn)是大GPU架構(gòu)發(fā)展的縮影,所以作文一篇記錄心得。我不打算逐一介紹各代架構(gòu)的細(xì)節(jié),而是針對(duì)Shader處理器聊一聊每代GPU的發(fā)展。對(duì)各代架構(gòu)細(xì)節(jié)有興趣或者希望了解全貌的同學(xué)可以參考【2】【3】【4】【5】。

Shader處理器

圖形API發(fā)展到OpenGL 2.0之后,圖形處理管線擺脫了之前的固定模式,實(shí)現(xiàn)了高度的可定制化。出現(xiàn)了針對(duì)圖形管線各階段的Shader,比如Vertex Shader,F(xiàn)ragment Shader,再到后來(lái)的Geometry Shader,Tessellation Shader和Compute Shader。每個(gè)Shader都是一個(gè)用戶編寫(xiě)的小程序,執(zhí)行這些小程序就是GPU中Shader處理器的工作。

Shader處理器作為核心組件,它的架構(gòu)關(guān)系到GPU的性能表現(xiàn),也是演進(jìn)最為激烈的部分。每代Mali GPU都會(huì)對(duì)Shader處理器做較大調(diào)整以適應(yīng)圖形API和應(yīng)用的發(fā)展。這里著重討論兩個(gè)主要變化——統(tǒng)一處理器架構(gòu)和TLP驅(qū)動(dòng)的架構(gòu)設(shè)計(jì)。

從獨(dú)立到統(tǒng)一

初代的Utgard架構(gòu)有兩種Shader處理器,GP——執(zhí)行Vertex Shader,PP——執(zhí)行Fragment Shader。兩者采用不同的硬件架構(gòu)和指令集,所以編譯器會(huì)將不同的Shader編譯成各自Shader處理器的機(jī)器碼后交由它們分別執(zhí)行。

Vertex Shader是對(duì)每一個(gè)頂點(diǎn)執(zhí)行一次,而Fragment Shader是對(duì)每一個(gè)像素執(zhí)行一次,一般情況下Fragment Shader的執(zhí)行次數(shù)會(huì)多于Vertex Shader;而且很多圖形效果的實(shí)現(xiàn),F(xiàn)ragment Shader都比Vertex Shader更加復(fù)雜。所以Utgard是一個(gè)GP配上多個(gè)PP,比如一個(gè)GP配四個(gè)PP就是MP4,最高能配到MP8。單個(gè)PP的硬件設(shè)計(jì)也相對(duì)GP更加復(fù)雜。

這種獨(dú)立Shader處理器的架構(gòu)Shader處理器之間算力無(wú)法互通,當(dāng)一種Shader算力需求遠(yuǎn)大于另一種時(shí),另一種Shader處理器只能干等著無(wú)法幫忙,造成利用率下降。而且隨著圖形API加入新的Shader種類(lèi),給每一種Shader設(shè)計(jì)一種處理器會(huì)不斷增加軟件和硬件的復(fù)雜度。但其實(shí)這些Shader在純計(jì)算部分幾乎是一樣的,可以復(fù)用大部分的設(shè)計(jì),不必每一個(gè)Shader都搞一套。

所以從Midgard這一代開(kāi)始,采用了統(tǒng)一Shader處理器架構(gòu)。不同種類(lèi)的Shader共享計(jì)算部分作為統(tǒng)一Shader處理器,頂點(diǎn)插值和光柵化這些固定功能操作獨(dú)立于外。這樣每種Shader都能跑滿所有的處理器,提高了硬件利用率。

從ILP到TLP

ILP(Instruction Level Parallelism)和TLP(Thread Level Parallelism)都或多或少同時(shí)存在于每代的Shader處理器架構(gòu)中,但是趨勢(shì)是TLP的比重逐漸加大。

Utgard和Midgard架構(gòu)下TLP僅限于處理器級(jí)別,Shader處理器就像CPU的一個(gè)核心,一次運(yùn)行一個(gè)頂點(diǎn)或者像素的Shader,有幾個(gè)處理器就有幾個(gè)線程。比如Mali400MP4,有四個(gè)PP,可以并行處理四個(gè)像素的fragment shader。每個(gè)處理器完全采用了ILP的方式著重優(yōu)化單線程的處理能力。

我們可以從兩種架構(gòu)所使用的VLIW指令【6】一窺ILP的設(shè)計(jì)。Utgard PP的指令編碼可以參見(jiàn)【7】,包含兩個(gè)向量處理單元、兩個(gè)標(biāo)量處理單元、一個(gè)函數(shù)處理單元,還有負(fù)責(zé)各類(lèi)數(shù)據(jù)加載和執(zhí)行控制的單元。這種VLIW指令和普通的CPU指令不同,一條指令可以完成多個(gè)操作。它對(duì)應(yīng)了硬件上的管線(pipeline)結(jié)構(gòu),如圖一所示。管線是處理器執(zhí)行指令的一條流水線,可以分成多個(gè)階段(stage)。VLIW指令里的各個(gè)操作由這條管線里的各個(gè)階段完成。

1db5cd5c-91ca-11eb-8b86-12bb97331649.jpg

圖一:Utgard PP處理器管線【7】

比如這一系列操作:取貼圖數(shù)據(jù),然后做加法,再做乘法,最后寫(xiě)結(jié)果到內(nèi)存。精簡(jiǎn)指令集(RISC)一般需要四條指令,每條指令都有各自的取指令,執(zhí)行,寫(xiě)結(jié)果的步驟;但是VLIW可以在一條指令里將這些操作依序串起來(lái),取出的貼圖數(shù)據(jù)不需要寫(xiě)進(jìn)寄存器文件,直接傳給加法單元處理,加法單元的結(jié)果也是這樣直接傳遞給乘法單元,最后輸出到內(nèi)存。所以VLIW管線會(huì)更長(zhǎng),但是由于略去了操作的中間步驟,整合后更加高效。

普通CPU會(huì)通過(guò)復(fù)雜的硬件設(shè)計(jì),動(dòng)態(tài)調(diào)度要執(zhí)行的指令來(lái)提高單線程性能,比如并行執(zhí)行和亂序執(zhí)行。VLIW卻是通過(guò)在編譯階段,依靠編譯器靜態(tài)調(diào)度各個(gè)操作填充到VLIW指令的單元中。所以很多早期的GPU包括桌面和移動(dòng)的,為了簡(jiǎn)化硬件降低功耗,都采用VLIW來(lái)加強(qiáng)ILP。但是這種設(shè)計(jì)對(duì)編譯器要求很高。如何調(diào)度Shader里的操作以充分利用一條指令里的所有操作單元決定了硬件的執(zhí)行效率。當(dāng)然Shader本身的邏輯也決定了有沒(méi)有足夠可以并行的操作。這些都是ILP發(fā)展方向的限制條件。

好在圖形計(jì)算是一個(gè)天生的數(shù)據(jù)并行良好的鄰域——有大量的圖元需要計(jì)算,而且每個(gè)圖元的計(jì)算可以獨(dú)立進(jìn)行,不依賴其他圖元。所以每個(gè)圖元的計(jì)算都可以作為一個(gè)線程,繪制出一幀畫(huà)面就是跑完這成千上萬(wàn)個(gè)線程的工作。利用大量的線程,獲得很多可以并行執(zhí)行的操作,不用很復(fù)雜的調(diào)度就能達(dá)到很高的硬件利用率,這就是GPU里TLP設(shè)計(jì)的出發(fā)點(diǎn)。

從Bifrost架構(gòu)開(kāi)始,ARM在單處理器內(nèi)部也引入了TLP。方法是將大量線程每4個(gè)一組(后來(lái)擴(kuò)展為8、16個(gè)),然后一組一組在單個(gè)處理器中運(yùn)行。同組的線程執(zhí)行相同的指令,類(lèi)似于SIMD。這樣就不需要為每個(gè)線程都準(zhǔn)備一套完整的處理器設(shè)計(jì),而是可以多個(gè)線程共享除了執(zhí)行器和寄存器以外的部分。再乘上核心數(shù),同時(shí)運(yùn)行的線程數(shù)量大大增加。

而且為了隱藏一些操作比如內(nèi)存訪問(wèn)的延遲,還有一個(gè)線程組的池,里面可以準(zhǔn)備執(zhí)行到不同指令的幾十組線程,在一組線程因?yàn)閿?shù)據(jù)訪問(wèn)等依賴無(wú)法馬上執(zhí)行時(shí),硬件調(diào)度器可以掛起這組線程執(zhí)行另一組的線程。也算是利用線程數(shù)量的例子。

不過(guò)Bifrost架構(gòu)里依然有很多ILP的設(shè)計(jì),比如句式(Clause)指令(圖二):將很多串行指令組成一個(gè)指令塊——句子,句子是硬件調(diào)度器調(diào)度的最小單位。句子內(nèi)部可以有一些加速操作,比如當(dāng)一個(gè)加法指令輸出是一個(gè)減法指令輸入的時(shí)候,可以不通過(guò)寄存器文件直接傳遞數(shù)據(jù)。而且單個(gè)指令雖然減少了單元數(shù)量,但還是有三個(gè)計(jì)算單元。所以編譯器還是需要考慮單指令單元填充以及多指令組成句子的問(wèn)題。

1e167ecc-91ca-11eb-8b86-12bb97331649.jpg

圖二:Bifrost句式指令【4】

Valhall架構(gòu)就更加依賴TLP來(lái)提升性能了,為此放棄了句式指令和多單元指令這些依賴軟件的ILP特性,減小了調(diào)度粒度的同時(shí)也縮短了處理器管線。如圖三所示,Valhall的處理器有三個(gè)計(jì)算單元,包括一個(gè)FMA(Fused-Multiply-Add),一個(gè)CVT(Convert)和一個(gè)SFU(Special Function Unit),線程組調(diào)度器可以在線程組池里找出三個(gè)當(dāng)前指令使用不同計(jì)算單元的線程組,讓他們?cè)谒膫€(gè)時(shí)鐘周期內(nèi)同時(shí)在三個(gè)計(jì)算單元內(nèi)執(zhí)行。而B(niǎo)ifrost雖然也有三個(gè)計(jì)算單元,但是他們屬于一條長(zhǎng)指令,而且ADD和Table排在FMA下游,是一個(gè)串行結(jié)構(gòu),這一條管線需要八個(gè)時(shí)鐘周期。

對(duì)比來(lái)看Valhall再次加強(qiáng)了TLP,一個(gè)處理器最多可以同時(shí)運(yùn)行三個(gè)線程組,而B(niǎo)ifrost最多只有一個(gè)。反過(guò)來(lái)看Valhall將三個(gè)Bifrost處理器壓縮為一個(gè),減少了控制邏輯,就可以有更多的空間增加處理器的數(shù)量,也是增加了TLP。

1ee043d8-91ca-11eb-8b86-12bb97331649.jpg

圖三:Valhall和Bifrost處理器對(duì)比【5】

結(jié)語(yǔ)

在GPU架構(gòu)歷史上,統(tǒng)一Shader處理器和TLP驅(qū)動(dòng)架構(gòu)設(shè)計(jì)都是趨勢(shì)。各家各代的GPU都或多或少經(jīng)歷了這個(gè)過(guò)程。我們純從架構(gòu)上看后期的GPU都比前期來(lái)的先進(jìn),但是放在當(dāng)時(shí)的環(huán)境下,早期的圖形應(yīng)用Shader負(fù)載不是很復(fù)雜,而且移動(dòng)鄰域處理器對(duì)于面積和功耗方面的嚴(yán)格控制,都是他合理性的來(lái)源。

引用

Mali (GPU):https://zh.wikipedia.org/wiki/Mali_(GPU)

Lima driver status update:https://xdc2019.x.org/event/5/contributions/328/attachments/420/670/lima.pdf

ARM‘s Mali Midgard Architecture Explored:https://www.anandtech.com/show/8234/arms-mali-midgard-architecture-explored

ARM Unveils Next Generation Bifrost GPU Architecture & Mali-G71: The New High-End Mali:https://www.anandtech.com/show/10375/arm-unveils-bifrost-and-mali-g71

Arm’s New Mali-G77 & Valhall GPU Architecture: A Major Leap:https://www.anandtech.com/show/14385/arm-announces-malig77-gpu

Very long instruction word:https://en.wikipedia.org/wiki/Very_long_instruction_wordA4%E5%AD%97

Mali ISA:https://gitlab.freedesktop.org/panfrost/mali-isa-docs/-/tree/master

編輯:jq

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • GP
    GP
    +關(guān)注

    關(guān)注

    0

    文章

    29

    瀏覽量

    23495
  • 編譯器
    +關(guān)注

    關(guān)注

    1

    文章

    1634

    瀏覽量

    49134
  • TLP
    TLP
    +關(guān)注

    關(guān)注

    0

    文章

    32

    瀏覽量

    15632
  • GPU架構(gòu)
    +關(guān)注

    關(guān)注

    0

    文章

    15

    瀏覽量

    8466

原文標(biāo)題:ARM Mali GPU架構(gòu)演進(jìn)

文章出處:【微信號(hào):Ithingedu,微信公眾號(hào):安芯教育科技】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    芯原發(fā)布新一代Vitality架構(gòu)GPU IP系列

    芯原股份近日宣布,正式推出全新Vitality架構(gòu)的圖形處理器(GPU)IP系列。這一新一代GPU架構(gòu)以其卓越的計(jì)算性能和廣泛的應(yīng)用領(lǐng)域,吸引了業(yè)界的廣泛關(guān)注。 Vitality
    的頭像 發(fā)表于 12-24 10:55 ?143次閱讀

    一文詳解Arm架構(gòu)Armv9.6-A中的最新功能

    Arm CPU 是當(dāng)今人工智能 (AI) 賦能軟件的關(guān)鍵,它可解釋、處理和執(zhí)行指令。Arm 指令集架構(gòu) (ISA) 作為硬件和軟件的接口,指示處理器做什么和怎么做。Arm ISA 持續(xù)
    的頭像 發(fā)表于 12-17 10:22 ?1174次閱讀
    一文詳解<b class='flag-5'>Arm</b><b class='flag-5'>架構(gòu)</b>Armv9.6-A中的最新功能

    《算力芯片 高性能 CPUGPUNPU 微架構(gòu)分析》第3篇閱讀心得:GPU革命:從圖形引擎到AI加速器的蛻變

    在數(shù)據(jù)挖掘工作中,我經(jīng)常需要處理海量數(shù)據(jù)的深度學(xué)習(xí)任務(wù),這讓我對(duì)GPU架構(gòu)和張量運(yùn)算充滿好奇。閱讀《算力芯片》第7-9章,讓我對(duì)這些關(guān)鍵技術(shù)有了全新認(rèn)識(shí)。 GPU架構(gòu)從早期的固定功能流
    發(fā)表于 11-24 17:12

    GPU服務(wù)器AI網(wǎng)絡(luò)架構(gòu)設(shè)計(jì)

    眾所周知,在大型模型訓(xùn)練中,通常采用每臺(tái)服務(wù)器配備多個(gè)GPU的集群架構(gòu)。在上一篇文章《高性能GPU服務(wù)器AI網(wǎng)絡(luò)架構(gòu)(上篇)》中,我們對(duì)GPU
    的頭像 發(fā)表于 11-05 16:20 ?356次閱讀
    <b class='flag-5'>GPU</b>服務(wù)器AI網(wǎng)絡(luò)<b class='flag-5'>架構(gòu)</b>設(shè)計(jì)

    【「算力芯片 | 高性能 CPU/GPU/NPU 微架構(gòu)分析」閱讀體驗(yàn)】--了解算力芯片GPU

    本篇閱讀學(xué)習(xí)第七、八章,了解GPU架構(gòu)演進(jìn)及CPGPU存儲(chǔ)體系與線程管理 █從圖形到計(jì)算的GPU架構(gòu)演進(jìn)
    發(fā)表于 11-03 12:55

    Arm全面設(shè)計(jì)助力Arm架構(gòu)生態(tài)發(fā)展

    Arm 控股有限公司(納斯達(dá)克股票代碼:ARM,以下簡(jiǎn)稱 Arm)近日分享了Arm 全面設(shè)計(jì) (Arm
    的頭像 發(fā)表于 10-21 09:58 ?382次閱讀

    【「算力芯片 | 高性能 CPU/GPU/NPU 微架構(gòu)分析」閱讀體驗(yàn)】--全書(shū)概覽

    、GPU、NPU,給我們剖析了算力芯片的微架構(gòu)。書(shū)中有對(duì)芯片方案商處理器的講解,理論聯(lián)系實(shí)際,使讀者能更好理解算力芯片。 全書(shū)共11章,由淺入深,較系統(tǒng)全面進(jìn)行講解。下面目錄對(duì)全書(shū)內(nèi)容有一個(gè)整體了解
    發(fā)表于 10-15 22:08

    ARM進(jìn)軍GPU領(lǐng)域,挑戰(zhàn)英偉達(dá)與英特爾

    英國(guó)芯片設(shè)計(jì)巨頭ARM正悄然在以色列拉阿納納的研發(fā)中心布局其GPU(圖形處理器)戰(zhàn)略,意圖在全球圖形處理市場(chǎng)與英偉達(dá)和英特爾等業(yè)界巨頭一較高下。據(jù)悉,ARM已在該開(kāi)發(fā)中心組建了一支由約100名精英芯片與軟件工程師構(gòu)成的全球圖形處
    的頭像 發(fā)表于 08-21 10:19 ?503次閱讀

    Arm發(fā)布針對(duì)旗艦智能手機(jī)的新一代CPU和GPU IP

    全球領(lǐng)先的芯片設(shè)計(jì)公司Arm宣布了針對(duì)旗艦智能手機(jī)市場(chǎng)的全新CPU和GPU IP設(shè)計(jì)方案——Cortex-X925 CPU和Immortalis G925 GPU。這兩款產(chǎn)品均基于Armv9
    的頭像 發(fā)表于 05-31 09:44 ?598次閱讀

    Arm發(fā)布Arm v9架構(gòu)CPU、GPU IP及設(shè)計(jì)軟件,助力AI計(jì)算

    長(zhǎng)期以來(lái),全球智能手機(jī)處理器均采用Arm架構(gòu),包括蘋(píng)果、高通、聯(lián)發(fā)科在內(nèi)的眾多廠商均依賴Arm提供的IP,且該應(yīng)用范圍已逐漸擴(kuò)展至個(gè)人電腦與數(shù)據(jù)中心領(lǐng)域。
    的頭像 發(fā)表于 05-30 09:17 ?827次閱讀

    X-Silicon發(fā)布RISC-V新架構(gòu) 實(shí)現(xiàn)CPU/GPU一體化

    X-Silicon 的芯片與其他架構(gòu)不同,其設(shè)計(jì)將 CPU 和 GPU 的功能整合到單核架構(gòu)中。這與英特爾和 AMD 的典型設(shè)計(jì)不同,前者有獨(dú)立的 CPU 內(nèi)核和 GPU 內(nèi)核。
    發(fā)表于 04-08 11:34 ?587次閱讀
    X-Silicon發(fā)布RISC-V新<b class='flag-5'>架構(gòu)</b> 實(shí)現(xiàn)CPU/<b class='flag-5'>GPU</b>一體化

    fpga封裝技術(shù)和arm架構(gòu)的優(yōu)缺點(diǎn)

    FPGA封裝技術(shù)和ARM架構(gòu)是兩個(gè)不同的概念,分別屬于硬件設(shè)計(jì)的不同領(lǐng)域。
    的頭像 發(fā)表于 03-26 15:51 ?871次閱讀

    Arm v9芯片新架構(gòu)揭秘

    從中長(zhǎng)期來(lái)看,隨著單芯片 ARM 核數(shù)增加、基于 ARM 架構(gòu)芯片數(shù)量的上升以及ARM 應(yīng)用場(chǎng)景的增加,公司仍將保持增長(zhǎng)。據(jù)公司公告數(shù)據(jù)顯示,2023 財(cái)年,高端芯片采用
    發(fā)表于 02-27 14:14 ?5424次閱讀
    <b class='flag-5'>Arm</b> v9芯片新<b class='flag-5'>架構(gòu)</b>揭秘

    arm架構(gòu)和x86架構(gòu)區(qū)別 linux是x86還是arm

    、ARM架構(gòu)和x86架構(gòu)概述 1.1 ARM架構(gòu) ARM
    的頭像 發(fā)表于 01-30 13:46 ?1.8w次閱讀

    深入解讀AMD最新GPU架構(gòu)

    GCN 取代了 Terascale,并強(qiáng)調(diào) GPGPU 和圖形應(yīng)用程序的一致性能。然后,AMD 將其 GPU 架構(gòu)開(kāi)發(fā)分為單獨(dú)的 CDNA 和 RDNA 線路,分別專(zhuān)門(mén)用于計(jì)算和圖形。
    發(fā)表于 01-08 10:12 ?1227次閱讀
    深入解讀AMD最新<b class='flag-5'>GPU</b><b class='flag-5'>架構(gòu)</b>