AGP

AGP (от англ. Accelerated Graphics Port, ускоренный графический порт) — специализированная 32-разрядная системная шина для видеокарты, разработанная в 1996 году компанией Intel. Появилась одновременно с чипсетами для процессора Intel Pentium MMX; у сторонних производителей появилась в чипсетах MVP3, MVP5 c Super Socket 7. Основной задачей разработчиков было увеличение производительности и уменьшение стоимости видеокарты, за счёт уменьшения количества встроенной видеопамяти. По замыслу Intel, большие объёмы видеопамяти для AGP-карт были бы не нужны, поскольку технология предусматривала высокоскоростной доступ к общей памяти. Её отличия от предшественницы, шины PCI:

  • работа на тактовой частоте 66 МГц;
  • увеличенная пропускная способность;
  • режим работы с памятью DMA и DME;
  • разделение запросов на операцию и передачу данных;
  • возможность использования видеокарт с большим энергопотреблением, нежели PCI.
AGP
Accelerated Graphics Port
AGP slot.jpg
Слот AGP (фиолетовый) и два слота PCI (белые)
Год разработки 1996
Разработчик Intel
Что эта шина заменила PCI
Что заменило эту шину PCI Express (2004)

Ширина в битах 32
Кол-во устройств 1 устройство на слот.
Частота, МГц 66 МГц (AGP 1.0)
Тип Параллельная
Поддерживает горячее подключение? нет
Внешняя шина? нет

Модификации AGPПравить

 
Версии AGP

Первая версия (спецификация AGP 1.0) AGP 1x используется редко, поскольку не обеспечивает необходимой скорости работы с памятью в режиме DME.

Сразу же при проектировании была добавлена возможность посылать 2 блока данных за один такт — это AGP 2x.

AGP 4xПравить

В 1998 году вышла вторая версия (спецификация AGP 2.0) — AGP 4x, которая могла пересылать уже 4 блока за один такт и обладала пропускной способностью около 1 ГБ/с. Уровень напряжения вместо обычных 3,3 В был понижен до 1,5 В.

AGP 8xПравить

Шина AGP 8x (спецификация AGP 3.0) передаёт уже 8 блоков за один такт, таким образом, пропускная способность шины достигает 2 ГБ/с. Также в стандарте была заложена возможность использования двух видеокарт (аналогично AMD CrossFireX, Nvidia SLI), однако эта возможность не была использована производителями. Современные видеокарты требуют большой мощности, более 40 Вт, которую шина AGP дать не может, так появилась спецификация AGP Pro с дополнительными шинами питания на разъёме.

Если поддержка режима AGP 8x не обеспечивалась чипсетом, производители материнских плат реализовывали поддержку этого режима, для Socket 478, разными путями (например, компания ASRock представила технологию A.G.I. 8x, реализующую поддержку AGP 8x через слот PCI). По мере появления решений для платформы LGA 775 проблема преемственности графических интерфейсов стала ещё острее — чипсеты Intel серии i9xx поддержку AGP 8x стандартными средствами не обеспечивали. Одной из первых эту проблему решила компания ECS[en] на своей материнской плате 915P-A, оснащенной слотом AGP Express и слотом PCI Express x16 (при этом первый не только позволял устанавливать видеокарты класса AGP 8x, но и допускал одновременное использование двух видеокарт с разными интерфейсами), однако видеокарты заметно теряли в производительности при установке в слот PCI Express (ведь он на уровне пропускной способности был эквивалентен слоту PCI), на слабых видеокартах потери достигали 48 %, на мощных — до 20 % производительности. Именитая Gigabyte для решения проблемы разработала собственную технологию G.E.A.R. (Gigabyte Enhance AGP Riser), которая также слот AGP 8x реализует средствами PCI. Производитель особо подчеркивает, что это временное решение, предназначенное для непродолжительного замещения видеокарты с интерфейсом PCI Express x16, при этом официально уточняет, что интерфейс G.E.A.R. реализован за счет переключения команд и напряжений PCI на шину AGP, и неизбежное различие в их спецификациях может заметно сократить срок службы установленной в подобный разъем видеокарты класса AGP 8x или AGP 4x.[1]

Доступ к памятиПравить

(написанное ниже неверно почти везде, и выдает отсутствие реальных познаний автора о том, что такое DMA, равно как и отсутствие у автора реального опыта разработки драйверов для PCI/AGP устройств по какую-либо мало-мальски современную ОС, равно как и самих устройств. Информация, скорее всего, почерпнута из "глянцевых" журналов на ИТ-темы типа ComputerWorld, Неверные утверждения в нижеследующем тексте помечены и опровергнуты).

  • DMA (англ. Direct Memory Access) — доступ к памяти, в этом режиме основной памятью считается встроенная видеопамять на карте (неверно. DMA именно и означает - текстуры хранятся в памяти на материнской плате), текстуры копируются туда перед использованием из системной памяти компьютера (неверно: такого стараются избежать практически всегда, и не только в графических контроллерах, ибо копирование будет осуществлять процессор чем-то типа memcpy() или rep movsd, а такие вещи не могут быть отображены на PCI burst транзакции, когда на шину в одной транзакции один раз выставляется адрес, а за ним следует блок из последовательных слов данных. PCI/AGP DMA использует именно последнее, процессор же не способен создавать такие транзакции, и копирование будет производится многими короткими PCI транзакциями, по одному слову в каждой, с огромным protocol overhead). Этот режим работы не был новым, по тому же принципу работают звуковые карты (какие? практически все, если не все вообще, звуковые карты всегда использовали DMA для waveform звука, сначала ISA DMA контроллер 8237 на портах 0 и далее, который есть одно из старейших устройств в архитектуре PC, идущее еще с 80ых годов, именно через него работал флоппи-дисковод, PCI реализации звуковых карт всегда использовали и используют PCI DMA для waveform звука, как правило в виде одного кольцевого DMA common buffer в памяти материнской платы, куда драйвер карты копировал данные звукового сигнала), некоторые контроллеры (какие? размещения какой-бы-то-ни-было памяти, кроме крошечных ее размеров для очередей ввода-вывода, в PCI контроллерах стараются избежать всегда, когда это возможно, даже сейчас, а невозможно это только для server-grade аппаратных RAID, для видеокарт и для сетевых адаптеров со stateful TCP/IP offload, т.е. Chimney или же RDMA. Кроме того, см. выше про PCI burst mode, в силу двух перечисленных причин так могли быть сделаны только очень редкие контроллеры, чудовищно неверно спроектированные).
  • AGP GART: вспомогательное, предназначенное для DMA/DME аппаратное устройство в межшинном мосту от AGP слота к вышестоящим шинам на материнской плате (и внутри северного моста чипсета), разновидность IOMMU. Цель GART, как и всех IOMMU, заключается в том, что bitmap текстуры формируется кодом, исполняющимся под управлением ОС со страничной виртуальной памятью, и при этом может быть много больше 1 страницы, что означает - текстура непрерывна в памяти по виртуальным адресам, и совсем не обязательно непрерывна по физическим. Поскольку PCI/AGP/PCIx-контроллер ничего не знает о виртуальных адресах процессора, в простейшем случае его DMA engine увидит массив разрозненных физических страниц. В дисковых/Ethernet/USB/1394/звуковых контроллерах это не является большой проблемой, поскольку ввод-вывод на них последователен и не использует произвольный доступ к произвольным адресам памяти, потому можно применить chain DMA - создать список структур в DMA common buffer, ссылающихся друг на друга (и на страницы самих данных буфера-ввода-вывода) по шинным ("физическим") адресам, и заставить контроллер поэтапно читать это список через тот же DMA и исполнять его (именно так проектируются практически все мало-мальски известные PCI/PCIx-контроллеры). Однако 3D-процессор видеокарты обращается к текстуре именно что по разрозненным адресам, и, дабы избежать усложнения самих 3D-видеопроцессоров, в самой шине AGP была реализована таблица трансляции адресов страниц с тех, что контроллер выставил по DMA ("шинные") - на физические. Такая технология называется IOMMU. Для ознакомления с данной технологией можно попытаться отыскать в Интернете старый Windows DDK для Windows 2000 или XP, содержащий в разделе "примеры" исходный текст драйвера agp440.sys, который занимался именно программированием AGP GART (и при этом нарушал некоторые правила, изложенные в документации этого же DDK),
  • DME (англ. Direct in Memory Execute) — доступ со стороны видеокарты через DMA уже не к текстурам, а к execute buffer, в котором драйвер видеокарты строил программу для 3D-процессора, ссылающуюся на текстуры. (ДАЛЕЕ НЕВЕРНО) в этом режиме основная и видеопамять находятся как бы в общем адресном пространстве (неверно: за исключением плоскостной видеопамяти EGA конца 80ых годов для 16цветных режимов графики видеопамять всегда находилась и находится в том же пространстве физических адресов, что и основная память, к DMA/DME это отношения не имеет. Другое дело, что доступ процессора к памяти видеокарты - медленный, по очевидным причинам много медленнее, чем доступ 3D-видеопроцессора, находящегося на той же карте, а также - см. выше про PCI burst mode - намного медленнее, чем доступ 3D-видеопроцессора через DMA к памяти на материнской плате). Общее пространство эмулируется с помощью таблицы отображения адресов (англ. Graphic Address Remapping Table, GART) блоками по 4 Кб (неверно, см. выше). Таким образом копировать данные из основной памяти в видеопамять уже не требуется (неверно: хотя Direct3D и дает такую возможность для приложений и игр, этого практически никто и никогда не делал, см. выше), этот процесс называют AGP-текстурированием.

Очередь запросовПравить

Передача данных из основной памяти в видеопамять карты осуществляется в два этапа, сначала передаётся 64-битный адрес, откуда данные нужно считать, затем идут сами данные. Шина AGP предусматривает два варианта передачи:

  • первый — совместим с шиной PCI — запросы данных и адреса происходят по одному каналу;
  • второй — в режиме SBA (SideBand Addressing), по отдельной боковой шине, таким образом, можно посылать запросы на новые данные, не дожидаясь получения предыдущих.

РазвитиеПравить

 
AGP Видеокарта (NVIDIA GeForce4 Ti 4600 Apple Macintosh)

С середины 2000-х материнские платы со слотами AGP практически не выпускаются; стандарт AGP был повсеместно вытеснен на рынке более быстрым и универсальным PCI Express[2][3]. Массовая замена разъема AGP на PCI-express в новых продуктах началась с середины 2004 года, и уже в 2006 году процесс перехода был, в целом, завершен[4]. Последними материнскими платами с AGP стали платы на чипсетах Intel поколения 8xx, сокет 775 и nForce 3 от nVidia, сокеты 939 и AM2.

Некоторое время в малом количестве выпускались видеокарты с подключением AGP для установки в более старые материнские платы. Они стоили дороже аналогичных PCI-E карт из-за использования микросхемы-переходника PCI-E → AGP.

Последней серийно выпускавшейся видеокартой NVIDIA для шины AGP была GeForce 7800gs (XFX, nVidia, 2007)[5][6], позже компанией XFX была выпущена модель 7900GS на 256 и 512Мб, а также самая мощная AGP видеокарта на чипе от NVIDIA - 7950GT AGP. Помимо XFX, выпуском AGP версий 7900GS и 7950GT занимался ряд китайских компаний у которых остались запасы чипов G71: Axle, Galaxy, Palit, Gainward. Для мирового рынка компания Gainward выпускала модели Bliss 7800GS с 20 пиксельными конвеерами (аналог 7900GS) и Bliss 7800GS+ с 24 пиксельными конвеерами (аналог 7950GT, но с немного меньшей частотой). Последними AGP видеокартами от ATI были Radeon HD4650 и Radeon HD4670 (PowerColor, HIS, AMD, представлены летом 2009 года), первая видеокарта использовала видеопамять типа DDR2, вторая же имела на борту более быструю память типа GDDR3. Несмотря на новизну, HD4670 уступала более старой HD3850 из-за того, что имела вдвое более узкую шину - 128 бит против 256 бит у предшественника.

См. такжеПравить

СсылкиПравить

ПримечанияПравить