Interfata AGP



Interfata AGP


Principiul de functionare, transferul datelor, maparea memoriei si aspecte software.


Necesitatea unor rate ridicate de transfer intre procesor si subsistemul video a condus la aparitia magistralelor locale ale calculatoarelor personale, incepand cu magistrala VL Bus (VESA Local Bus) si continuand cu magistrala PCI (Peripheral Component Interconnect). La fel ca in cazul magistralei ISA, traficul pe magistrala PCI a calculatoarelor performante a devenit foarte intens, la acest trafic contribuind adaptorul video, discul fix si alte periferice care sunt conectate la aceeasi magistrala PCI. Pentru a se evita saturarea magistralei PCI din cauza informatiilor video, Intel a creat o noua interfata, proiectata special pentru subsistemul video. Aceasta interfata este numita AGP (Accelerated Graphics Port).




Principiul AGP

AGP este o noua interconexiune pentru acceleratoarele grafice din sistemele bazate pe procesorul Pentium II, utilizate in special pentru grafica 3D si redarea secventelor video.


Procesorul Pentium II consta dintr-un nucleu incapsulat cu o memorie cache integrata de nivel 2 (L2). Acest procesor dispune de asemenea de o arhitectura Dual Independent Bus (DIB), in care doua magistrale independente conecteaza nucleul cu memoria cache L2 si cu magistrala sistem a calculatorului. Faptul ca ambele magistrale pot functiona in acelasi timp imbunatateste semnificativ performantele, deoarece procesorul poate executa instructiuni din memoria cache L2 si simultan poate comunica cu dispozitive externe.


Noile aplicatii grafice 3D impun cerinte riguroase calculatoarelor PC, cuprinzand calcule geometrice mai rapide, o interpretare grafica mai sofisticata si texturi mai detaliate. Cu toate ca Pentium II este adaptat pentru a executa multe calcule geometrice (cu o rata mai mare de triunghiuri pe secunda), iar generatia viitoare de controlere grafice poate implementa o mare varietate de efecte grafice, dimensiunea crescuta a texturilor a devenit o chestiune importanta.


O problema o reprezinta dimensiunea memoriei video utilizata de controlerele grafice. Tipic, aceasta memorie are o dimensiune de 2-4 MB. Totusi, au inceput sa apara aplicatii grafice care utilizeaza peste 20 MB pentru o singura textura. Memoria video poate fi extinsa pentru a satisface aceste cerinte, dar o asemenea solutie este foarte costisitoare.


A doua problema este rata de transfer permisa de magistrala PCI. Controlerele grafice trebuie sa incarce in prealabil texturile din memoria sistem in memoria lor RAM locala. Deoarece dimensiunea texturilor a crescut, magistrala PCI a inceput sa devina congestionata. Problema este chiar mai acuta in cazul aplicatiilor care implica redarea secventelor video.


Tehnologia AGP imbunatateste performantele sistemului punand la dispozitie o cale rapida intre controlerul grafic si memoria sistem. Aceasta cale permite controlerului grafic sa faca acces la texturi direct in memoria sistem in timpul interpretarii grafice, in loc sa le incarce in prealabil in memoria video locala (vezi figura 'Transferuri de date pentru maparea texturilor la interfata AGP').


Sistemul de operare (SO) poate rezerva in mod dinamic segmente din memoria sistem, pentru a fi utilizate de controlerul grafic. Aceasta memorie este numita memorie AGP. Ca urmare, controlerul grafic va trebui sa pastreze un numar mai mic de texturi in memoria video locala, ceea ce permite rezolutii mai mari ale ecranului, sau permite utilizarea unui buffer Z pentru o dimensiune data a ecranului. Aceasta tehnica elimina si restrictia de dimensiune pe care memoria video locala o impune texturilor, si deci permite aplicatiilor sa utilizeze texturi de dimensiuni mult mai mari, imbunatatind realismul si calitatea imaginilor.


AGP este un port, si nu o magistrala, deoarece la o magistrala se pot conecta mai multe dispozitive, in timp ce AGP este o conxiune punct la punct doar intre adaptorul video si procesorul sistemului.


AGP este o interfata de 64 biti care poate functiona la 66 MHz. Specificatiile AGP se bazeaza pe extensia de 64 biti a specificatiilor PCI 2.1, care descriu si un mod de lucru cu o frecventa de 66 MHz, care nu a fost implementat niciodata. AGP este implementat cu un conector similar celui utilizat pentru magistrala PCI, cu 32 de linii pentru adrese si date multiplexate. Exista 8 linii suplimentare pentru adresarea secundara (sideband), descrisa ma jos. Placile de baza AGP au un singur conector de extensie pentru adaptorul video AGP si au, de obicei, cu un conector PCI mai putin, in rest fiind similare cu placile de baza PCI.


Interfata AGP functioneaza la viteza maxima a magistralei sistem, spre deosebire de magistrala PCI care functioneaza la jumatatea acestei viteze. Aceasta inseamna ca la o placa de baza standard Pentium II, AGP functioneaza la 66 MHz in locul frecventei de 33 MHz a magistralei PCI. Astfel se dubleaza rata de transfer a portului. In locul limitei de 133 MB/s a magistralei PCI, in modul sau cu viteza minima AGP are o rata de transfer de 266 MB/s. In plus, are avantajul ca nu trebuie sa partajeze rata de transfer cu alte dispozitive PCI.


Exista mai multe cerinte pentru ca un sistem sa poata utiliza avantajele AGP:


Placa de baza cu un set de circuite AGP (de exemplu setul 440LX al Intel pentru procesorul Pentium II).

Sistem de operare cu drivere pentru noua interfata (Windows 98).

Drivere speciale ale adaptorului video pentru interfata AGP, care pot utiliza modul 2X al acesteia.

Moduri de transfer a datelor

Pe langa dublarea vitezei magistralei, AGP a definit un mod 2X care utilizeaza un protocol special pentru a putea transmite unu volum dublu de date prin port la aceeasi frecventa de ceas. Cresterea de viteza este obtinuta prin transferarea datelor atat pe frontul crescator, cat si pe cel descrescator al ceasului de 66 MHz, si prin utilizarea modurilor de transfer amai eficiente. Rezultatul este ca performantele se dubleaza din nou, la o rata de transfer la varf de 533 MB/s. Rata de transfer efectiva variaza la diferite sisteme si aplicatii, dar uzual sistemele pot atinge in jur de 50-80% din valorile la varf in cazul transferurilor prelungite. Exista si o intentie de a implementa un mod 4X (rata de transfer de 1,07 GB/s).


AGP pune la dispozitia controlerului grafic doua moduri pentru accesul direct al texturilor in memoria sistem: modul pipeline si adresarea secundara (sideband addressing). In cazul modului pipeline, AGP suprapune timpii de acces ai memoriei si ai magistralei pentru o cerere n cu generarea cererilor urmatoare (n+1, n+2 etc). In cazul magistralei PCI, cererea n+1 nu incepe pana cand nu se termina transferul de date al cererii n (figura 'Cereri suprapuse la interfata AGP').


Desi atat AGP, cat si PCI permit transferuri in mod exploziv (elemente multiple de date transferate in mod continuu ca raspuns la o singura cerere), asemenea transferuri nu schimba natura de tip non-pipeline a magistralei PCI.


In cazul adresarii secundare, AGP utilizeaza 8 linii suplimentare de adrese care permit controlerului grafic sa transmita noi adrese si cereri simultan cu transferurile de date pe liniile principale de adrese/date ca urmare a cererilor anterioare (Figura 2).


Maparea memoriei AGP

Memoria AGP consta din zone alocate in mod dinamic ale memoriei sistem, pe care controlerul grafic le poate accesa rapid. Viteza de acces se datoreaza hardului incorporat in setul de circuite ale sistemului, set necesar pentru utilizarea AGP. Acesta translateaza adresele, permitand controlerului grafic si programelor acestuia sa observe un spatiu contiguu in memoria principala, desi paginile sunt disjuncte. Astfel, controlerul grafic poate accesa structuri de date cu dimensiuni mari, de exemplu o harta de biti a unei texturi , ca o singura entitate. Hardul incorporat este numit GART (Graphics Address Remapping Table), cu functii similare circuitelor de paginare din UCP.


Adresele virtuale liniare ale procesorului sunt translatate de circuitele sale de paginare in adrese fizice. Aceste adrese fizice sunt utilizate pentru accesul la memoria sistem. Accesurile UCP la memoria video si memoria AGP utilizeaza aceleasi adrese ca si cele utilizate de controlerul grafic. De aceea SO seteaza circuitele de paginare ale UCP astfel incat sa nu translateze adresele virtuale in adrese fizice pentru aceste memorii.


Pentru accesul la memoria AGP, controlerul grafic si UCP utilizeaza o fereastra contigua de cativa MB. Circuitul GART translateaza insa adresele din aceasta fereastra in diferite adrese, eventual disjuncte, ale unor pagini de 4 KB din memoria sistem. Dispozitivele PCI care fac acces la fereastra memoriei AGP (de exemplu, pentru capturarea imaginilor video) utilizeaza de asemenea circuitul GART.


Aspecte software

Aplicatiile care nu sunt scrise in mod special pentru AGP pot fi utilizate pe sistemele AGP, daca sistemul de operare dispune de drivere si rutine interne pentru aceasta interfata. Totusi, aplicatiile pot fi optimizate pentru AGP. In ambele cazuri, avantajul important al AGP este numarul mai mare de texturi detaliate, fara reducerea performantelor in timp real.


Calculatoarele PC cu interfata AGP pot fi de trei tipuri:


Tipul 1: Acest tip dispune de o interfata AGP, dar nu utilizeaza facilitatile interfetei legate de interpretarea texturilor, ci doar transfera datele mai rapid decat un dispozitiv PCI. Sistemul nu utilizeaza posibilitatile transferului pipeline sau adresarea secundara.


Tipul 2: Acest tip interpreteaza texturile din memoria AGP, deci aplicatiile nu trebuie sa transfere texturile in memoria video. Circuitele pot avea posibilitatea de interpretare a texturilor si din memoria video. Executia poate fi mai rapida daca texturile nu sunt interpretate din memoria video, datorita conflictelor de acces la memoria video pentru scrierea pixelilor, reimprospatarea ecranului, citirea elementelor de textura si a valorilor Z.


Tipul 3: Acest tip are performantele cele mai bune atunci cand interpretarea texturilor se poate realiza atat din memoria video, cat si din memoria AGP. Texturile utilizate cel mai frecvent sau cele de dimensiuni mai mici pot fi plasate in memoria video, in timp ce texturile de dimensiuni mai mari sau cele utilizate mai putin frecvent pot fi plasate in memoria sistem. Astfel conflictele dintre UCP si controlerul grafic vor fi minimizate.


Aplicatii DOS


Interpretarea texturilor direct din memoria sistem necesita utilizarea circuitului GART din cauza tehnicii de adresare virtuala utilizata in sistemele de operare actuale. Insa, pentru aplicatiile executate sub sisteme de operare mai vechi (de exemplu, DOS) fara adresare virtuala, circuitul GART este inutil.


Aplicatiile vechi executate sub DOS vor beneficia de viteza mai mare a AGP, dar vor necesita anumite modificari ale driverelor pentru a activa posibilitatea controlerului grafic de a accesa texturile direct in memoria sistem.


Aplicatii Windows


Aplicatiile Windows nemodificate pot beneficia de avantajele AGP, deoarece versiunile noi ale SO si biblioteca DirectDraw au fost actualizate pentru a permite utilizarea ei.


Pentru implementarile hardware curente, SO va marca memoria AGP (ca si o alta memorie video) pentru a nu fi incarcata in memoria cache, astfel incat nu va exista o problema de coerenta intre memoriile cache ale UCP si datele utilizate de controlerul grafic. In caz contrar, accesele controlerului grafic la memoria AGP ar necesita golirea zonelor cache ale UCP, ceea ce ar putea cauza intarzieri.


Alocarea memoriei de catre DirectDraw


DirectDraw va aloca in mod implicit memoria pentru texturi in ordinea de mai jos, cu exceptia cazului in care aplicatia solicita in mod expres o alta alocare:


- Memoria video locala.


- Memoria AGP.


- Memoria sistem.


In cazul in care controlerul grafic nu poate interpreta texturile din memoria AGP, se poate impiedica alocarea de catre DirectDraw a oricarei memorii diferite de memoria video locala pentru texturi. Driverul controlerului grafic raporteaza posibilitatile sale catre SO si DirectDraw, si daca controlerul grafic nu poate accesa direct memoria sistem, DirectDraw va aloca aplicatiei numai memorie video locala si memorie sistem. Similar, in cazul in care controlerul grafic nu poate interpreta texturile din memoria video locala, DirectDraw nu va aloca memorie video locala pentru texturi.


Daca aplicatia nu poate plasa toate texturile in memoria AGP alocata de DirectDraw, atunci ea trebuie sa copieze texturile de pe disc in memoria AGP. Aplicatiile care utilizeaza texturi de dimensiuni mari pot necesita incarcarea texturilor de pe disc sau din retea in memoria AGP, indiferent de cantitatea de memorie alocata de DirectDraw.


Avantajele AGP


Principalele avantaje ale AGP sunt rezumate mai jos.


Rata de transfer mai ridicata. Rata de transfer la varf este de 2-4 ori mai mare decat cea a magistralei PCI, datorita modului pipeline, adresarii secundare si a transferurilor de date care au loc atat pe frontul crescator, cat si pe cel descrescator al ceasului.

Interpretarea directa a texturilor din memoria sistem. AGP permite accesul direct cu viteza ridicata la memoria sistem de catre controlerul grafic, in locul incarcarii prealabile a texturilor in memoria video locala.

Grafica de calitate mai ridicata. Se pot utiliza texturi cu dimensiuni, si nivele de detaliere nelimitate.

Costuri mai reduse. Prin minimizarea necesarului de memorie video, AGP ajuta la reducerea costurilor noilor sisteme.

Congestie mai redusa pe magistrala PCI. AGP functioneaza concurent cu, si independent de cele mai multe tranzactii de pe magistrala PCI. Sistemele vor avea o stabilitate mai mare atunci cand traficul necesar pentru imaginile grafice si cele video este eliminat de pe magistrala PCI