AGP – Zmodyfikowana magistrala PCI
AGP (ang. Accelerated Graphics Port, znana również jako Advanced Graphics Port) to zmodyfikowana wersja magistrali PCI, stworzona przez firmę Intel, która została zaprojektowana z myślą o obsłudze kart graficznych. Jest to 32-bitowa magistrala PCI, zoptymalizowana do szybkiego transferu dużych ilości danych między pamięcią operacyjną a kartą graficzną. Z czasem AGP została wyparta przez szybszą magistralę PCI Express.
Intel wprowadził magistralę AGP 1.0 (1x, 2x) na rynek 26 sierpnia 1997 roku, wraz z chipsetem Intel 440LX przeznaczonym dla procesora Pentium II (Klamath). W odpowiedzi na silną konkurencję ze strony firm takich jak AMD, Cyrix oraz innych producentów na platformie Socket 7, Intel nie oferował wsparcia dla magistrali AGP w swoich chipsetach dla Socket 7. Pierwszymi chipsetami obsługującymi karty AGP na płytach głównych Socket 7 były VIA Apollo VP3, SiS 5591/5591 oraz ALi Aladdin V.
Wersja AGP 2.0 (4x) zadebiutowała w 1998 roku, a AGP 3.0 (8x) w 2002 roku. Po wprowadzeniu standardu PCI Express w 2004 roku, AGP wkrótce została całkowicie zastąpiona. Najbardziej zaawansowane i najszybsze karty ze złączem AGP to GeForce serii 7950 GT oraz Radeon serii HD 4670.
Podstawowe informacje
Data wprowadzenia: 1997
Stworzony przez: Intel
Następca: PCI Express (2004)
Szerokość magistrali: 32 bity
Maksymalna liczba urządzeń: 1 urządzenie/slot
Maksymalna przepustowość: 2133 MB/s
Maksymalna moc, jaką karta może pobierać przez slot AGP, wynosi od 35 do 40W. W przypadku wyższego zapotrzebowania, konieczne jest zastosowanie dodatkowego zasilania, zazwyczaj przez złącze typu Molex.
W czasach przed wprowadzeniem akceleratorów graficznych, to główny procesor (CPU) odpowiadał za generowanie obrazu. Postęp w grafice komputerowej spowodował, że obliczenia związane z generowaniem obrazu zaczęły obciążać CPU, co doprowadziło do powstania specjalnych procesorów do przetwarzania danych graficznych, nazywanych akceleratorami. Na początku akceleratory te przyspieszały generowanie grafiki 2D (np. S3 Trio), a później pojawiły się także akceleratory do grafiki 3D (np. 3dfx Voodoo, Nvidia Riva 128), które potrafiły obsługiwać tekstury oraz bufor głębi.
Dążenie do uzyskania coraz wyższej jakości obrazu wymagało większych rozmiarów tekstur, co z kolei skutkowało potrzebą większej ilości pamięci do ich przechowywania. Wysoki koszt pamięci VRAM podnosił ceny kart graficznych. Dodatkowo, przepustowość magistrali PCI, używanej do przesyłania tekstur między pamięcią operacyjną a kartą graficzną, wynosiła maksymalnie 132 MB/s (33 MHz x 32 bity). Ze względu na to, że magistrala PCI obsługiwała także inne urządzenia (np. karty dźwiękowe, sieciowe), w praktyce osiągała jedynie 50-80% tej wartości.
AGP zostało zaprojektowane w celu ominięcia ograniczeń wydajnościowych magistrali PCI oraz wysokich kosztów pamięci VRAM. Jedną z kluczowych zalet AGP jest zastosowanie tzw. sideband addressing. Sideband to dodatkowe 8-bitowe pasmo, niezależne od 32-bitowej magistrali danych, wykorzystywane do przesyłania adresów. Dzięki temu AGP oddziela magistralę adresową od danych (ang. demultiplexing) i stosuje technologię potokową (ang. pipeline), co pozwala na przetwarzanie nowych poleceń przed zakończeniem poprzednich transakcji.
Inną ważną cechą AGP jest możliwość wykorzystania standardowej pamięci operacyjnej RAM komputera do przechowywania i przetwarzania tekstur (DiME – Direct Memory Execute), eliminując konieczność wcześniejszego ładowania ich do pamięci lokalnej karty graficznej poprzez magistralę PCI. AGP umożliwia dynamiczne przydzielanie części pamięci operacyjnej dla systemu graficznego, traktując ją jako część pamięci video. Taki dostęp pozwala na użycie większych tekstur przy niezmienionych wymaganiach dotyczących pamięci na karcie. Maksymalna ilość pamięci operacyjnej dostępna w tym trybie dla karty AGP określana jest jako AGP aperture. Pamięć operacyjna dostępna za pośrednictwem AGP dla akceleratora graficznego jest widziana jako liniowa przestrzeń adresowa, mimo że nie musi być kontynuacją przestrzeni adresowej pamięci video na karcie. Fizycznie przydzielona pamięć może być nieciągła, a translacja adresu fizycznego na liniowy jest zapewniana przez układy płyty głównej, wykorzystujące tablicę GART (ang. Graphics Address Remapping Table).
Alternatywnym rozwiązaniem, działającym na podobnej zasadzie, jest UMA (Unified Memory Architecture), stosowane w niektórych modelach płyt głównych. UMA wykorzystuje wolniejszą magistralę PCI do komunikacji oraz zastępuje bufor ekranu pamięcią RAM. AGP natomiast jest magistralą dedykowaną do współpracy z kartą graficzną, działającą niezależnie od PCI. Dzięki temu, że nie ma potrzeby dzielenia magistrali PCI z innymi urządzeniami i dzięki bezpośredniemu połączeniu z kontrolerem pamięci, AGP może pracować z wyższą częstotliwością zegara (66 MHz). W trybie 2x efektywne taktowanie AGP wynosi 133 MHz, a maksymalna teoretyczna przepustowość to 528 MB/s (2 x 66 MHz x 32 bity). Podobną wartość ma maksymalny teoretyczny transfer do pamięci RAM dla procesorów klasy Pentium (66 MHz x 64 bity).
Pierwsze zastosowania i benchmarki
Początkowo różnice między AGP a PCI nie były wyraźnie zauważalne. W codziennych zastosowaniach oraz w klasycznych benchmarkach (np. Business Winstone 97, HighEnd Winstone 97), obie technologie osiągały niemal identyczne wyniki. Dopiero system Windows 95 OSR 2.1 w połączeniu z DirectX 5 oraz programami (grami) wykorzystującymi wyższe rozdzielczości ekranu (od 1024×768 wzwyż) i bardzo duże tekstury (przekraczające 4 MB) ujawniały przewagę AGP. W takich warunkach wydajność AGP przewyższała PCI nawet kilkukrotnie (np. test 3D Winstone 97 w artykule AnandTech z września 1997 roku).
Początkowo przyjęcie nowej technologii było ostrożne. Recenzje w prasie podkreślały jej zalety, ale jednocześnie wskazywały na brak znaczących różnic w wydajności w porównaniu do kart PCI z odpowiednią ilością VRAM. Z upływem czasu i rosnącymi wymaganiami stawianymi przez twórców gier, magistrala AGP praktycznie całkowicie wyparła PCI z rynku kart graficznych. Pierwszymi kartami graficznymi z interfejsem AGP były: Rendition Vérité V2200, 3dfx Voodoo Banshee, Nvidia RIVA 128, 3Dlabs PERMEDIA 2, Intel i740, ATI Rage, Matrox Millennium II oraz S3 ViRGE GX/2. Niektóre z pierwszych kart graficznych z interfejsem AGP były oparte na układach zaprojektowanych dla magistrali PCI i miały tylko mostek AGP, co skutkowało brakiem pełnego wykorzystania potencjału nowego złącza. Jedyną korzyścią była wyższa częstotliwość taktowania (66 MHz) oraz ekskluzywne wykorzystanie magistrali. Przykładami takich kart są: Voodoo Banshee, Vérité V2200, Millennium II oraz S3 ViRGE GX/2. Układ Intel i740 był projektowany specjalnie z myślą o AGP, w pełni wykorzystując oferowane możliwości, chociaż jego wydajność nie spełniła oczekiwań.
Posiadanie płyty głównej ze złączem AGP oraz chipsetu wspierającego tę magistralę, a także odpowiedniej karty graficznej, nie wystarcza do efektywnego wykorzystania zalet AGP. Niezbędne jest również wsparcie w postaci odpowiednich sterowników. Wsparcie programowe dla AGP po raz pierwszy pojawiło się w Windows 95 OEM Service Release 2 (OSR2) za pośrednictwem USB SUPPLEMENT (łatka OSR2). Zainstalowanie tej poprawki podniosło wersję systemu do Windows 95 version 4.00.950B. W systemach z rodziny NT pierwszym systemem wspierającym AGP był Windows NT 4.0 z Service Pack 3. Sterownik oprogramowania obsługujący magistralę AGP w systemach Windows 9x i NT nosi nazwę VGARTD.VXD. System Linux wspiera AGP od 1999 roku, kiedy to zaimplementowano moduł jądra AGPgart (AGP graphics address remapping table).
Podstawowe rodzaje portów i kart AGP
Rodzaje portów i kart AGP to:
- AGP 1.0 – napięcie sygnału 3,3V oraz mnożniki 1x i 2x
- AGP 2.0 – napięcie sygnału 1,5V oraz mnożniki 1x, 2x i 4x
- AGP 3.0 – napięcie sygnału 0,8V oraz mnożniki 4x i 8x