Dezavantajele conductei grafice clasice

Istoria dezvoltării procesoarelor grafice a trecut până acum într-o direcție - numărul de conducte a crescut. Conceptul de "transportor" este stabil, dar nu poate fi considerat un termen tehnic strict. Faptul este că procesorul grafic utilizează conducte diferite, care îndeplinesc diferite funcții. În acest sens, este mai corect să vorbim despre conducte de vârf sau pixeli, dar nu despre conducte în general. Anterior, conducta a fost înțeleasă ca un procesor pixel care a fost conectat la unitatea de cartografiere a textului (TMU). De exemplu, dacă GPU utilizează opt procesoare pixel, fiecare dintre care este conectat la TMU, atunci se spune că GPU are opt conducte. În același timp, identifica numărul de conducte cu numărul de procesoare pixel shader nu este în întregime corectă, deoarece pipelining implică de lucru nu numai cu pixelii, dar cu vârfurile, și, prin urmare, este necesar să se ia în considerare numărul de procesoare vertex. Prin urmare, numărul de conducte poate acționa ca caracteristici GPU corespunzătoare numai dacă numărul de benzi transportoare egal cu numărul de procesoare pixel și vertex, unitățile TMU, adică care fiecare transportor include la un procesoare vertex și pixel, precum și o unitate de TMU. În același timp, această abordare a arhitecturii procesorului grafic nu poate fi considerată optimă. Ideea este că o astfel de organizare liniară a transportorului implică o distribuție uniformă a sarcinii între etapele individuale ale transportorului. În același timp, în aplicații reale, sarcina pe unitățile GPU individuale poate fi diferită. Rezolvarea parțială a problemei optimizării încărcării procesorului grafic permite o astfel de arhitectură, în care numărul de procesoare pixel nu coincide cu numărul de procesoare de vertex. În același timp, dezvoltatorii trebuie să găsească media aurului între numărul de procesoare de vârf și pixeli.







Este clar că într-un astfel de caz nu este complet corect să vorbim despre o bandă transportoare clasică.

De exemplu, GPU-ul NVIDIA GeForce 6800 utilizează șase procesoare vertex și procesoare de 16 pixeli. Fiecare dintre procesoarele cu 16 pixeli are două blocuri de programe pixel și un modul TMU pentru texturi. Dacă primul bloc de programe de pixeli de pe fiecare conductă poate efectua atât operații aritmetice, cât și citirea texturii și normalizarea, atunci al doilea bloc este limitat doar de aritmetică. Cu alte cuvinte, primul bloc este asociat cu texturi. Dacă blocul nu este implicat în textură, atunci poate efectua (în acest pas) umbrirea pixelilor. Al doilea este întotdeauna disponibil pentru umbrirea pixelilor.







Din punct de vedere istoric, numărul de conducte dintr-un GPU este înțeles ca numărul de procesoare pixel (deși acest lucru nu este în întregime corect). Pentru luarea în considerare a arhitecturii NVIDIA GeForce 6800, precum și pentru multe alte GPU, o astfel de abordare este acceptabilă, dar o astfel de organizație se rezolvă doar parțial problema de echilibrare a sarcinii pe GPU. Următorul pas în această direcție a fost propus de ATI, trecând la o arhitectură modulară și fragmentată în procesoarele grafice ale familiei ATI Radeon X1000.

Luați în considerare, de exemplu, procesul de formare a imaginii în procesorul grafic ATI Radeon X1800.

Prima etapă este destul de tradițională: prelucrarea datelor prin procesoare vertex, care calculează geometria unei imagini tridimensionale. În acest stadiu, datele (Vertex Data) sunt procesate de opt procesoare vertex (Procesor Shader Vertex).

După calcularea geometriei vârfurilor, tăierea suprafețelor ascunse, tăierea etc. Datele se referă la motorul de configurare, care conține rasterizatorul de geometrie, apoi la Ultra-Threading Dispatch Processor. Aceasta noua unitate de distributie ne permite sa vorbim despre conceptul multi-threaded al arhitecturii procesoarelor grafice. Procesorul de distribuție Ultra-Threading Dispatch Processor este capabil să paraleze codul shader la sute de fire (până la 512 de fluxuri), sporind eficiența executării shader-ului pixel.

După trecerea procesorului de distribuire, fluxurile intră în blocurile de pixeli (nuclee de Shad Quad Pixel Shader). Fiecare astfel de unitate (totală de patru în procesorul grafic) este alcătuită din patru procesoare pixel combinate, fiecare dintre acestea putând procesa un shader pentru un bloc de 2x2 pixeli per ceas. În consecință, blocul de pixeli poate procesa shader-ul pentru un bloc de pixeli de 4x4 per ceas.

Este clar că în această arhitectură termenul "conductă", precum și "conducta pixel", și-a pierdut deja importanța.

În același timp, în ciuda utilizării incorecte a termenului „numărul transportorului“ în arhitectura de familie procesor grafic ATI Radeon X1000, trebuie remarcat faptul că metoda de construire a unei imagini transportoare, procesoare vertex și pixel aplicații specifice au rămas neschimbate. Deși problema unei distribuții de sarcină optimă între blocurile individuale în procesor arhitectura GPU ATI Radeon X1000 rezolvat (deși nu în mod dramatic), această arhitectură nu permite să scape de lipsa unei alte arhitecturi transportor GPU. Există de multe ori o situație în care datele deja prelucrate parțial trebuie schimbate. Acest lucru necesită așteptarea finalizării întregului proces de procesare a conductelor, în care conducta este risipită, prelucrarea datelor care trebuie încă schimbate și procesate din nou.

Dezavantajele de transmitere a datelor către unitatea de procesare vizuală poate fi rezolvată prin a merge la arhitectura de procesoare unificate, adică, atunci când nu există nici un singur procesoare vertex sau pixel, și există procesoare de uz general, care pot efectua atât vertex și pixel shader. Firește, pentru procesoare unificate, vor fi necesare noi programe de procesare, adică shadere (Shader Model, SM). Procesoarele unificate sunt acceptate în API-ul DirectX 10.







Trimiteți-le prietenilor: