# Accelerated Graphics Port

Accelerated Graphics Port (kurz AGP oder A.G.P.) ist ein Industriestandard zur direkten Verbindung einer Grafikkarte mit der Hauptplatine eines PCs. AGP wurde 1996 von Intel eingeführt. Ab 2003 wurde er sukzessive durch PCI Express abgelöst.

## Eigenschaften

Sogenannte „Bursts“ ermöglichen in diesem zusammenhängenden Speichermanagement ein schnelles Lesen der Daten. Es erlaubt auch die effizientere Nutzung des Framebuffer-Speichers und beschleunigt so ebenfalls 2D-Grafik. Von einigen RAID-Controllern wird der AGP-Steckplatz wegen seiner höheren Transferrate anstelle von PCI benutzt, obwohl er eigentlich nicht dafür entwickelt worden ist.
Es gibt einige wenige Hauptplatinen mit mehreren unabhängigen AGP-Steckplätzen (denen dann jeweils ein eigener Controller zugeordnet sein muss), im Normalfall ist aber nur ein AGP-Steckplatz vorhanden.

## Entwicklung

AGP wurde von Intel entwickelt und kam erstmals 1997 im i440LX-Chipsatz für den Intel-Pentium-II-Prozessor zum Einsatz. Ab 1998 tauchte AGP in großem Stil in handelsüblichen PCs auf, die auch mit Chipsätzen anderer Hersteller bestückt waren. Auf der Hauptplatine sind im Wesentlichen der AGP-Steckplatz und die AGP-Bridge erforderlich, die meistens in der Northbridge des Chipsatzes untergebracht ist. Die Grafikkarte ist auf diese Weise auf dem schnellsten Weg mit dem Hauptprozessor und dem Arbeitsspeicher verbunden, die beide für die Grafikleistung von essentieller Bedeutung sind.

## Versionen

AGP 1.0 erschien 1996 mit zwei Modi: „1x“ überträgt pro Takt 32 Bits an Daten mit einer (gegenüber PCI verdoppelten) Taktrate von 66 MHz und erreicht eine theoretische Datenübertragungsrate von 266 MB/s. „2x“ überträgt die Daten im Double-Data-Rate-Verfahren und erreicht bei gleicher Taktrate 533 MB/s. Die Signalspannung bei AGP 1.0 beträgt 3,3 Volt. Die schnellsten nativen kompatiblen Karten basieren auf den ATI-Radeon-9700- bzw. Nvidia-GeForce-FX-Grafikprozessoren, einige Grafikkarten der Geforce-7-Reihe (bis zur 7950GT) lassen sich jedoch durch ihren universell kompatiblen PCI-Express-Brückenchip auch auf AGP-1.0-Hauptplatinen betreiben. Die Stromversorgung erfolgt bei diesen ohnehin nicht über den AGP-Anschluss.
AGP 2.0 (1999) bot zusätzlich den Modus „4x“ mit einer maximalen Datenübertragungsrate von 1.066 MB/s bei einer reduzierten Signalspannung von 1,5 Volt. Die Geschwindigkeitssteigerung wurde erreicht, indem nun vier Datenpakete pro Takt übertragen wurden. Die meisten Grafikkarten dieser Generation waren voll abwärtskompatibel zum älteren Standard und ließen sich auf Hauptplatinen mit 3,3 V bei AGP 2x betreiben. Diese Modelle werden nach der AGP-Spezifikation Universal AGP-Karten genannt und haben zwei Einschnitte in ihrem Platinenstecker.
AGP 3.0 (2002) erreichte im neuen Modus „8x“ bei nur noch 0,8 Volt Signalspannung die mit 2.133 MB/s höchste Datenübertragungsrate. Statt vier wurden nun acht Datenpakete pro Takt übertragen. Die Modi 1x und 2x existieren in diesem Standard nicht mehr. Praktisch alle Grafikkarten dieser Generation unterstützen jedoch für den Betrieb auf älteren Hauptplatinen auch AGP 2.0 mit 1,5 V und dessen langsamere Modi („Universal 1.5V AGP 3.0“), einige sogar AGP 1.0 mit 3,3 V („Universal AGP 3.0“) – das ist an den zwei Einschnitten im Platinenstecker erkennbar. Da die mechanische Kodierung von AGP-3.0-Modellen mit der von 2.0 identisch ist, tolerieren alle 3.0-Karten den Einbau in 2.0-Systeme, Nicht-Universalkarten starten darin jedoch nicht. Ältere Karten verursachen in Hauptplatinen mit AGP-3.0-Standard dank der im Standard bereits vorgesehenen Schutzschaltung ebenfalls keinen Schaden, starten jedoch nur in den gleichsam benannten Universalmodellen.
AGP 3.5 (2004) führte keine neuen Transfermodi ein, sondern widmete sich der Stabilisierung der Umsetzung. Einheitliche Standards für die Graphics Adress Remapping Table und Aperture (siehe AGP-Begriffe) sollten einen einheitlichen AGP-Treiber für alle Mainboards bringen, welcher in Form der Datei uagp35.sys über das Service Pack 2 in Microsoft Windows XP einzog. Die vorher verwendeten chipsatzeigenen Treiber führten immer wieder zu Problemen bei AGP-Optionen wie FastWrites und schnelleren Transfermodi. Auch Dual-AGP-Mainboards zur Zusammenschaltung mehrerer Grafikkarten sollten möglich werden, das kam aber durch die Entwicklung von PCI Express und den darauf aufbauenden Multi-Grafikkarten-Verfahren (z. B. ATI Crossfire oder Scalable Link Interface) kaum zum Tragen.
Zusätzlich existieren noch Karten, die auf dem sogenannten AGP-Pro-Steckplatz basieren. Deren Kontaktleisten sind etwas länger als die normaler AGP-Karten. AGP Pro versorgt Karten mit bis zu 50 anstatt der 25 Watt des normalen Steckplatzes. Als Alternative dazu können stromhungrige Grafikkarten extern über eine eigens angebrachte Spannungsversorgung gespeist werden (5 V/12 V, Molex-Steckverbinder), was wegen der geringen Verbreitung der Pro-Steckplätze die häufiger verwendete Lösung war. Ein AGP-Pro-Steckplatz nimmt auch normale AGP-Karten auf und war zumeist im semiprofessionellen Workstation-Bereich zu finden.
AGP-Steckkarten besitzen an unterschiedlichen Stellen eine Einkerbung im Stecker, in den der entsprechende Steg im Steckplatz auf der Hauptplatine passen muss. Bei AGP 1.0 (1x/2x) sitzt der Steg weiter in Richtung Slotblech, ab AGP 2.0 dagegen in Richtung der Gehäusevorderwand. Das soll verhindern, dass Karten mit 3,3 V Signalspannung in Hauptplatinen mit nur noch 1,5 bzw. 0,8 V Signalspannung gesteckt werden, da sonst bei Inbetriebnahme eine Beschädigung droht (siehe nächster Absatz).

## Inkompatibilitäten

Durch die Zuordnung der Stege zu den Signalspannungen sollte ein versehentliches Einbauen inkompatibler Grafikkarten physisch verhindert werden. Dennoch gab es sowohl Hersteller von Grafikkarten als auch Hauptplatinen, die einen AGP-Universalanschluss verbauten, obwohl ihr Produkt zwingend an eine AGP-Version und damit Spannung gebunden war. Ein somit mögliches Einbauen inkompatibler Karten führt mit großer Wahrscheinlichkeit zur Beschädigung von Grafikkarte und Hauptplatinen-Komponenten.
So wurden einige Nvidia-Riva-TNT2- und SiS305-basierende Grafikkarten gefertigt, welche mit AGP 1.0 arbeiten, mit ihrem irreführenden Universalanschluss mit zwei Kerben aber auch in Hauptplatinen mit reinem AGP-2.0-Anschluss passen. Diese reinen AGP-2.0-Hauptplatinen sind jedoch inkompatibel mit der für Version 1.0 vorgesehenen Spannung. Einige dieser Hauptplatinentypen haben daher eine Schutzschaltung, die bei solchen 3,3-V-Karten einen Start mit daraus folgendem Schaden verhindert. Diesen Fall zeigen sie meist akustisch oder via LED an.
Es gab Hauptplatinen-Modelle mit Intel 845, Intel 850 und Nvidia nForce. Diese besaßen versehentlich einen AGP-Universalanschluss, obwohl sie AGP 1.0 nicht unterstützen. Auch hier bewirkte das so mögliche Einsetzen einer 3,3-V-Karte meist eine spannungsverursachte Beschädigung beider Komponenten. Die Verwendung dieser Universalanschlüsse könnte an den tatsächlich universalkompatiblen Vorgängermodellen der Chipsätze liegen. So unterstützte der Intel 815-Chipsatz AGP 1.0 und 2.0-Karten. Er erschien zwei Jahre vor dem i845, welcher die Unterstützung für Version 1.0 und damit allen 3,3 V-Karten kappte.
AGP 3.0-Karten haben standardgemäß den gleichen Anschluss wie 2.0-Karten, verwenden daher jedoch alle die vorgesehene Schutzschaltung, um beim Betrieb in 2.0-Mainboards mit deren höherer Spannung keinen Schaden zu nehmen. Zur Kompatibilität siehe obigen Absatz zu AGP 3.0.

## AGP-Begriffe

Aperture Size ist eine Menge an Arbeitsspeicher, die der Grafikchip über den AGP-Port zur Speicherung von Texturen verwenden kann. Er wird auch als AGP Memory bezeichnet und sollte günstige Grafikkarten durch geringere Mengen lokalen, auf der Grafikkarte verbauten Speichers ermöglichen.
Es gibt zwei Modi der Verwendung, deren Bezeichnung oft vermischt wird. Im DiME-Modus (Direct Memory Execute) kann der Grafikchip nur Texturen aus dem Aperture-Bereich zur Fertigstellung eines Bildes verwenden, sein lokaler Speicher wird ausschließlich für Rendering und Framebuffer verwendet. Der Intel-i740-Chip nutzte diesen Modus zur Demonstration der Aperture, obwohl er auch zum DiMEL-Modus (Direct Memory Execute and Local Memory) fähig war. Dieser Modus erlaubt die sinnvolle Kombination aus lokalem und AGP-Speicher. Hierzu werden die meistverwendeten Texturen lokal gehalten. Dieses Vorgehen beherrschten zuvor auch manche PCI-Grafikkarten; AGP bewirkte mit DiMEL jedoch den Vorteil der schnelleren AGP-Bandbreite zum Arbeitsspeicher sowie die Sicherheit, dass Texturen nicht auf die Festplatte ausgelagert werden.
System Memory bezeichnet normalen Arbeitsspeicher außerhalb der „aperture size“, welcher auch AGP-Grafikkarten wie ihren Vorgängern zur Verfügung steht. Der wohl erste Chip, der diesen Speicher nutzte, war der in vielerlei Hinsicht exotische nVidia NV1.
GART – Die zum Auslagern von Texturen vorgesehene Aperture Size wird im Arbeitsspeicher erst bei Bedarf reserviert. Zuvor steht sie dem System für andere Zwecke zur Verfügung. Kommt sie dann zum Einsatz, findet der im Mainboard-Chipsatz befindliche Speicher-Controller kaum einen zusammenhängenden Speicherabschnitt dieser Größe. Daher werden die Daten verteilt (fragmentiert) abgelegt. Dem Grafikchip wird jedoch ein zusammenhängender Speicher vermittelt. Die Übersetzung übernimmt eine GART (Graphics Address Remapping Table). Diese ähnelt der Memory Management Unit eines Hauptprozessors.
Sideband Addressing ist die zeitversetzte Übermittlung von Adressen auf dem AGP. Auf diesen acht „Sideband lines“ kann der Grafikchip neue Daten anfordern, während die aktuellen noch auf den 32 Leitungen des gemultiplexten Adress- und Datenbusses transferiert werden. Damit stehen die neuen Daten dann direkt nach Versendung der aktuellen zur Verfügung.
Fast-Writes wurde erst mit AGP 2.0 eingeführt und ist für die AGP-Modi 2x, 4x und 8x verfügbar. Es wurde zuerst von den Nvidia-Geforce-256-Grafikkarten umgesetzt. Dabei können Grafikkarte und CPU Daten direkt austauschen, anstatt sie erst in den Arbeitsspeicher zu schreiben und von dem Empfänger nochmals von dort lesen zu lassen. Diese Transfer-Dopplung ohne Fast-Writes halbiert folglich effektiv die RAM-Bandbreite. Zum Tragen kommt das, sobald die Grafikkarte entsprechend viele Daten anfordert. Fast-Writes behebt dies und umfasst allen Datenaustausch, 2D wie 3D. Oft unterstützt die Grafikkarte jedoch AGP-Modi, die sie mit ihrer Rechenleistung gar nicht auslasten kann. Speziell im Einsteigersegment wurden hohe AGP-Modi mehr wegen ihrer Vermarktungswirkung implementiert. Fehlt hier das Fast-Writes-Feature, bewirkt das demnach genauso wenig Nachteil wie bei allen AGP-Mainboards, bei denen die RAM-Bandbreite etwa dem Doppelten der AGP-Datenrate entspricht (wie bei Modellen mit Dual-Channel-DDR). Zudem achteten Spielehersteller meist auf eine möglichst bandbreitenschonende Programmierung, so dass die Maximalauslastung des AGP und damit der Bedarf an Fast-Writes seltener zustande kam. Herausforderung bei der Fast-Writes-Umsetzung ist ein sauberes Daten-Signal. Daher deaktivierte Intel im 815-Chipsatz diese Funktion ebenso wie der ATI-Catalyst-Treiber in als instabil diagnostizierten Systemen. Einen entsprechenden Test vollzieht er nach seiner Installation. Generell kann es bei Grafikkartentreiberproblemen helfen, Fast-Writes im BIOS zu deaktivieren. So verweigert der nouveau-Treiber, der den Betrieb von Grafikkarten des Herstellers Nvidia unter Linux ermöglicht, bei aktivierten Fast-Writes meist die Arbeit. Fast-Writes ist durch Heruntersetzen des AGP-Modus oft möglich, wo es zuvor instabil lief, und kann so dennoch zu einer Geschwindigkeitssteigerung verhelfen. Dies erfordert jedoch individuelle Messungen mittels Benchmarks.

## Der Übergang von AGP zu PCI-Express

Der Standard-PCI-Bus erlaubte eine theoretische Bandbreite von 133 MByte/s, kumulativ für alle an diesem Bus angeschlossenen Geräte. In der Anfangszeit (ca. 1995) stellte dies eine gigantische Bandbreite dar, die gar nicht ausgeschöpft werden konnte. Die ersten Mainboards erlaubten Transferraten von max. 42 MByte/s bei typischen Bandbreiten zum Hauptspeicher von knapp 200 MByte/s.
Mit zunehmender Leistungsfähigkeit von CPUs und Mainboards wurden diese 133 MByte/s weitgehend ausgereizt, wobei Grafikkarten die Hauptkonsumenten waren. Mit der Schaffung eines eigenen dedizierten Grafikbusses AGP und mit dem Aufbau mehrerer PCI- oder PCI-X-Busse auf Server-Mainboards wurde dieses Problem gelöst, führte allerdings zu einer größeren Menge Spezialsteckplätzen auf Server-Mainboards mit komplexen Wechselwirkungen durch Nicht-Punkt-zu-Punkt-Verbindungen zwischen den Komponenten. Außerdem blieb es bei 133 MByte/s für den „Rest“ auf normalen Mainboards, den zunehmend einzelne Komponenten (z. B. Kopieren von einer IDE-Platte auf eine andere) weitgehend ausreizen konnten.
Mit der Entwicklung von PCI-Express wurde diese Entwicklung wieder gerade gezogen, es gab wieder einen Standard, die Bandbreite wurde im ersten Schritt knapp verdoppelt, die Übertragung wechselte von halbduplex zu vollduplex, die Bandbreite zwischen Geräten stand immer exklusiv zur Verfügung und musste nie geteilt werden.
| PCI | Bandbreite (halbduplex) | Verwendung (Beispiele) | PCI Express | Bandbreite (vollduplex) | Verwendung (Beispiele) |
| PCI 32 bit/33 MHz | 0133 MByte/s shared | „Kleinverbraucher“ | PCIe 1.0 ×1 | 0250 MByte/s | „Kleinverbraucher“, IEEE 1394b-Karten |
| PCI 32 bit/66 MHz | 0266 MByte/s shared | IEEE 1394b-Karten | PCIe 1.0 ×1 | 0250 MByte/s | „Kleinverbraucher“, IEEE 1394b-Karten |
| PCI 64 bit/66 MHz | 0533 MByte/s shared | SCSI-Karten, … | PCIe 1.0 ×4 | 1000 MByte/s | SCSI-Karten, … |
| PCI-X 64 bit/133 MHz | 1066 MByte/s | | PCIe 1.0 ×8 | 2000 MByte/s | |
| AGP 8x | 2133 MByte/s | Grafikkarten | PCIe 1.0 ×16 | 4000 MByte/s | Grafikkarten |
Mit Version AGP 8x war diese Technik zu Ende entwickelt, da sich aufgrund von Timing-Problemen bei hohen Taktungen, die durch die parallele Datenübertragung entstehen, und dem dadurch zunehmend komplizierter werdenden Platinendesign die Geschwindigkeit nicht weiter steigern lässt. Das Merkmal von AGP einer schnellen Punkt-zu-Punkt-Verbindung zum Arbeitsspeicher hatte an Bedeutung verloren, da Grafikkarten zunehmend genügend eigenen RAM-Speicher mitbrachten. Dazu kommt, dass AGP nur als Schnittstelle für Grafikkarten konzipiert ist, aber auch immer mehr andere Komponenten, die bis dahin immer noch über PCI oder PCI-X angebunden wurden, höhere Anforderungen bezüglich der Datenübertragungsrate aufweisen. Unter anderem deswegen hat die PCI-SIG den Standard PCI Express als Nachfolger von PCI und AGP entworfen, der eine noch größere Datenübertragungsrate als AGP bot. Für die (nach z. B. Sockel 939) Chipsätze mit DDR2-800-Speicher-Unterstützung wurden keine Windows-9x-Treiber mehr geliefert. Seit Mitte 2006 wurden kaum noch neue Hauptplatinen für AGP-Grafikkarten vorgestellt. Grafikkarten für einen älteren 1-Kern-Prozessor-AGP-Slot sind selten geworden.