I den hÀr artikeln kommer vi inte att ta itu med en specifik GPU-arkitektur, utan den för dem alla i allmÀnhet och dÀrför kan du förstÄ det utan problem nÀr du ser diagrammet som tillverkarna brukar lansera om organisationen av deras nÀsta GPU. Oavsett om detta Àr en integrerad eller dedikerad GPU och graden av kraft de har.
Organisation av en samtida GPU
För att förstÄ hur en GPU Àr organiserad mÄste vi tÀnka pÄ en rysk docka eller matrioshka, som bestÄr av flera dockor inuti. Vilket vi ocksÄ skulle kunna tala om en uppsÀttning som lagrar en serie delmÀngder progressivt. Med andra ord Àr GPU:er organiserade pÄ ett sÄdant sÀtt att de olika uppsÀttningarna som sammanstÀller dem i mÄnga fall Àr en i varandra.
Tack vare denna uppdelning kommer vi att förstÄ nÄgot sÄ komplext som en GPU mycket bÀttre, eftersom vi frÄn det enkla kan bygga komplexet. Med det sagt, lÄt oss börja med den första komponenten.
SĂ€tt A i organisationen av en GPU: shader-enheterna
Den första av uppsÀttningarna Àr shader-enheterna. I sig Àr de processorer, men till skillnad frÄn CPU:er Àr de inte designade för parallellism frÄn instruktioner, ILP, utan frÄn exekveringstrÄdar, TLP. Oavsett om vi pratar om GPU:er frÄn AMD, NVIDIA, Intel eller nÄgot annat mÀrke, sÄ bestÄr alla samtida GPU:er av:
- SIMD-enheter och deras register
- SkalÀra enheter och deras register.
- Planerare
- Delat lokalt minne
- Texturfiltreringsenhet
- Top-notch data och/eller texturcache
- Ladda / Lagra enheter för att flytta data till och frÄn cache och delat minne.
- Lightning Intersection Unit.
- Systoliska matriser eller tensorenheter
- Exportbuss som exporterar data frÄn set A och till de olika komponenterna i set B.
Set B i organisationen av en GPU : Shader Array / Shader Engine / GPC
UppsÀttning B inkluderar uppsÀttning A i dess inre, men lÀgger initialt till instruktionen och konstanta cacher. I GPU:er, sÄvÀl som processorer, Àr cachen pÄ första nivÄn uppdelad i tvÄ delar, en för data och den andra för instruktioner. Skillnaden Àr att i fallet med GPU:er Àr instruktionscachen utanför shader-enheterna och dÀrför finns de i set B.
UppsÀttning B i organisationen av en GPU inkluderar dÀrför en serie shader-enheter, som kommunicerar med varandra genom det gemensamma kommunikationsgrÀnssnittet mellan dem, vilket gör att de kan kommunicera med varandra. à andra sidan Àr de olika shader-enheterna inte ensamma i Set B, eftersom det Àr dÀr det finns flera fasta funktionsenheter för att rendera grafik, som nu.
- Primitiv enhet: Detta Äberopas under World Space Pipeline eller Geometric Pipeline, det Àr ansvarig för tessellation av scenens geometri.
- Rasteriseringsenhet: It utför rastreringen av primitiva, omvandlar trianglarna till pixelfragment och dess stadium Àr det som börjar den sÄ kallade Screen Space Pipeline eller Rasterization Phase.
- ROPS: Enheter som skriver bildbuffertarna verkar under tvÄ steg. I rasterfasen före textureringsfasen genererar de djupbufferten (Z-buffert) medan de i fasen efter textureringsfasen fÄr resultatet av detta steg för att generera fÀrgbufferten eller de olika renderingsmÄlen (fördröjd rendering) .
Set C i arkitekturen för en GPU :
Vi har redan nÀstan hela GPU:n eller GPU:n utan acceleratorerna, den bestÄr av följande komponenter:
- Flera B-set inuti.
- Delat globalt minne : En Scratchpad och dÀrför utanför cachehierarkin för att kommunicera B-Sets med varandra.
- Geometrisk enhet: Den har förmÄgan att lÀsa pekarna till RAM-minnet som pekar pÄ scenens geometri, med detta Àr det möjligt att eliminera icke-synlig eller överflödig geometri sÄ att den inte renderas vÀrdelöst i ramen.
- Kommandoprocessorer (grafik och datorer)
- Senaste nivÄns cache: Alla element i GPU:n Àr klienter till denna cache sÄ den mÄste ha en enorm kommunikationsring, alla komponenter i Set B har direkt kontakt med L2-cachen sÄvÀl som alla komponenter i Set C sjÀlv.
Last Level Cache (LLC) Àr viktig eftersom det Àr cachen som ger oss koherens mellan alla element i Set C med varandra, uppenbarligen inklusive set B i den. Inte bara det, men det tillÄter inte att övermÀtta den externa minneskontrollern eftersom det med detta Àr LLC sjÀlv, tillsammans med MMU-enheterna i GPU:n, som Àr ansvariga för att fÄnga instruktioner och data frÄn RAM. TÀnk pÄ Last Level Cache som ett slags logistiklager dÀr alla element i Set C skickar och/eller tar emot sina paket och deras logistik styrs av MMU, som Àr den enhet som ansvarar för att göra det.
Slutsats, full GPU
Med allt detta har vi redan den fullstÀndiga GPU:n, set D innehÄller huvudenheten som Àr GPU:n som ansvarar för att Äterge grafiken i vÄra favoritspel, men det Àr inte den högsta nivÄn av en GPU, eftersom vi saknar en serie medprocessorer Stöd. Dessa fungerar inte för att rendera grafik direkt, men utan dem skulle GPU:n inte kunna fungera. Dessa element Àr i allmÀnhet:
- GFX-enheten inklusive dess toppnivÄcache
- North Bridge eller Northbridge av GPU:n, om detta Àr i en heterogen SoC (med en CPU) men med en delad minnesbrunn kommer de att anvÀnda en gemensam Northbridge. Alla delar av set D Àr anslutna till Northbridge
- Acceleratorer: Videokodare, bildskÀrmsadaptrar, Àr anslutna till Northbridge. NÀr det gÀller Display Adapter Àr det den som skickar videosignalen till DisplayPort- eller HDMI-porten
- DMA-enheter: Om det finns tvÄ RAM-adresseringsutrymmen (Àven med samma fysiska brunn) tillÄter DMA-enheten att data överförs frÄn ett RAM-utrymme till ett annat. I fallet med en separat GPU fungerar DMA-enheterna som kommunikation med CPU eller andra GPU:er.
- Styrenhet och minnesgrÀnssnitt: It gör det möjligt att kommunicera elementen i set D med det externa RAM-minnet. De Àr anslutna till Northbridge och det Àr den enda vÀgen till det yttre RAM-minnet.
Med allt detta har du redan den fullstÀndiga organisationen av en GPU, med vilken du kan lÀsa diagrammet över en GPU mycket bÀttre och förstÄ hur den Àr organiserad internt.