AGP
Accelerated Graphics Port
Все хорошее когда-нибудь кончается. Обидно - но истинно. Сколько писали про то, что шина PCI наконец-то
устранила «узкое место» РС - обмен с видеокартами - но не тут-то было! Прогресс, как известно, не
стоит на месте. Появление разных там 3D ускорителей привело к тому, что ребром встал вопрос: что делать? Либо
увеличивать количество дорогой памяти непосредственно на видеокарте, либо хранить часть информации в дешевой
системной памяти, но при этом каким-нибудь образом организовать к ней быстрый доступ.
Как это практически всегда бывает в компьютерной индустрии, вопрос решен не был. Казалось бы, вот вам
простейшее решение: переходите на 66-мегагерцовую 64-разрядную шину PCI с огромной пропускной способностью,
так нет же. Intel на базе того же стандарта PCI R2.1 разрабатывает новую шину - AGP (R1.0, затем 2.0),
которая отличается от своего «родителя» в следующем:
- шина способна передавать два блока данных за один 66 MHz цикл (AGP 2x);
- устранена мультиплексированность линий адреса и данных (напомню, что в PCI для удешевления конструкции
адрес и данные передавались по одним и тем же линиям);
- дальнейшая конвейеризация операций чтения/записи, по мнению разработчиков, позволяет устранить влияние
задержек в модулях памяти на скорость выполнения этих операций.
В результате пропускная способность шины была оценена в 500 МВ/сек, и предназначалась она для того, чтобы
видеокарты хранили текстуры в системной памяти, соответственно имели меньше памяти на плате, и,
соответственно, дешевели.
Парадокс в том, что видеокарты все-таки предпочитают иметь БОЛЬШЕ памяти, и ПОЧТИ НИКТО не хранит текстуры
в системной памяти, поскольку текстур такого объема пока (подчеркиваю - пока) практически нет. При этом в
силу удешевления памяти вообще, карты особенно и не дорожают. Однако практически все считают, что будущее -
за AGP, а бурное развитие мультимедиа-приложений (в особенности - игр) может скоро привести к тому, что
текстуры перестанут влезать и в системную память. Поэтому имеет смысл, особо не вдаваясь в технические
подробности, рассказать, как же это все работает.
Итак, начнем с начала, то есть с AGP 1.0. Шина имеет два основных режима работы: Execute и DMA. В режиме
DMA основной памятью является память карты. Текстуры хранятся в системной памяти, но перед использованием
(тот самый execute) копируются в локальную память карты. Таким образом, AGP действует в качестве «тыловой
структуры», обеспечивающей своевременную «доставку патронов» (текстур) на передний край (в локальную память). Обмен ведется большими последовательными пакетами.
В режиме Execute локальная и системная память для видеокарты логически равноправны. Текстуры не копируются
в локальную память, а выбираются непосредственно из системной. Таким образом, приходится выбирать из памяти
относительно малые случайно расположенные куски. Поскольку системная память выделяется динамически, блоками
по 4К, в этом режиме для обеспечения приемлемого быстродействия необходимо предусмотреть механизм,
отображающий последовательные адреса на реальные адреса 4-х килобайтных блоков в системной памяти. Эта
нелегкая задача выполняется с использованием специальной таблицы (Graphic Address Re-mapping Table или GART),
расположенной в памяти.
При этом адреса, не попадающие в диапазон GART (GART range), не изменяются и непосредственно отображаются
на системную память или область памяти устройства (device specific range). На рисунке в качестве такой
области показан локальный фрейм-буфер карты (Local Frame Buffer или LFB). Точный вид и функционирование GART
не определены и зависят от управляющей логики карты.
Шина AGP полностью поддерживает операции шины PCI, поэтому AGP-траффик может представлять из себя смесь
чередующихся AGP и PCI операций чтения/записи. Операции шины AGP являются раздельными (split). Это означает,
что запрос на проведение операции отделен от собственно пересылки данных.
Такой подход позволяет AGP-устройству генерировать очередь запросов, не дожидаясь завершения текущей
операции, что также повышает быстродействие шины.
В 1998 году спецификация шины AGP получила дальнейшее развитие - вышел Revision 2.0. В результате
использования новых низковольтных электрических спецификаций появилась возможность осуществлять 4 транзакции
(пересылки блока данных) за один 66-мегагерцовый такт (AGP 4x), что означает пропускную способность шины
в 1GB/сек! Единственное, чего не хватает для полного счастья, так это чтобы устройство могло динамически
переключаться между режимами 1х, 2х и 4х, но с другой стороны, это никому и не нужно.
Полный текст статьи на iXBT.com