Главная | Новости | Cтатьи и обзоры | Производители | Драйверы | Cсылки | Об авторе | Высказаться |
AGP: полное руководство
Пожалуй, большинство проблем, возникающих при сборке нового компьютера или модернизации старого, связано с видеокартой. При этом решаются эти проблемы чаще всего методом перебора драйверов или простой заменой одной видеокарты на другую. А может нужно просто получше разобраться в принципах работы графической подсистемы современного компьютера и применить, так сказать, научный подход? Если вы - сторонник второго метода, тогда эта статья - для вас. Зачем AGP?Все знают, что Accelerated Graphics Port (AGP) - особая высокоскоростная шина, предназначенная специально для видеокарты, в отличие от универсальных PCI и ISA. Она появилась одновременно с чипсетами для процессоров семейства Intel Pentium-II и теперь используется повсеместно. Для чего же потребовалось создавать эту шину, ведь до нее видеокарты нормально работали и на шине PCI? Что такое 3D-ускоритель? Это, фактически, процессор, рассчитывающий в реальном масштабе времени трехмерную сцену (рендеринг). Сейчас общепринята полигональная модель этой самой сцены, т.е. объекты состоят из полигонов (треугольников), покрытых текстурами. Задача видеокарты, в составе которой "трудится" 3D-ускоритель - принимать координаты треугольников, заполнять их одной или несколькими текстурами (текстурирование), рассчитывать освещенность, прозрачность, рельефность и т.п., проецировать на двумерную плоскость экрана, рассчитывая перекрытие одних объектов другими (используется Z-буфер) и др. Так как работа должна выполняться максимально быстро (вам ведь нужно хотя бы 30 кадров в том же "кваке"), все операции над каждым пикселем производятся конвейерно - каждый пиксель проходит несколько отдельных независимых стадий, одновременно в обработке находятся несколько пикселей - на разных стадиях. Понятно, что данные (а в первую очередь текстуры, накладываемые попиксельно на каждый треугольник) должны подаваться тоже непрерывно, чтобы конвейер не останавливался. Сначала видеокарты с 3D-ускорителями работали с памятью по шине PCI, закачивая текстуры в свою набортную (локальную) память, к которой и обращался конвейер рендеринга в ходе работы. С ростом сложности трехмерных сцен и повышением качества и размера текстур возникли две проблемы - 1) нужна обширная локальная видеопамять и 2) нужно обеспечить максимальную скорость подачи данных на конвейер. Шина PCI с задачей скорости не справлялась, так как на ней работают много других устройств. Видеопамять дорога, возможности ее расширения в общем случае отсутствуют. В итоге фирма Intel разрабатывает новую локальную шину на основе все той же PCI, но с учетом специфических требований видеокарт с 3D-ускорителем. Шина AGP соединяет всего одно устройство (AGP-мастер) с AGP-контроллером в составе системного чипа - "северного моста", а тот, в свою очередь, связан с контроллером памяти. Таким образом, пересылка данных между видеочипом и памятью производится по выделенному каналу - шине AGP. Для оптимальной загрузки этого канала все запросы на чтение и запись имеют приоритеты и выстраиваются в очереди, причем сам запрос и транзакция (акт передачи блока данных) не обязательно следуют друг за другом. Транзакции могут выполняться как в стиле PCI, так и AGP, когда данные передаются только в направлении "память-мастер". То есть смысл новой шины в том, чтобы предоставить видеочипу возможность обращаться за данными в основную память по своему, отдельному каналу. DMA и DMEЕсть две причины, по которым видеочип обращается к основной (системной, оперативной) памяти. Первое - загрузить оттуда в свою видеопамять необходимые для работы данные (например, текстуры для очередной трехмерной сцены). Это - обычный режим DMA (Direct Memory Access), который используют, например, контроллеры жестких дисков. Не ради этого была задумана новая шина. Режим DME (Direct in Memory Execution) позволяет видеочипу использовать основную память как источник данных для конвейера, добавляя (подключая) основную память к своей локальной видеопамяти при необходимости. Так как основная память выделяется под нужды прикладных программ страницами по 4 Кб, нужно обеспечить имитацию непрерывного блока памяти. Был выбран метод трансляции адресов по таблице, причем то, как строится эта таблица и как обеспечивается переадресация, остается на совести разработчика чипсета и драйвера GART (Graphic Aperture Remapping Table). Апертура - это тот диапазон адресов, при обращении к которому включается механизм переадресации на реальные страницы памяти. Таким образом, конвейер рендеринга может обращаться за данными прямо к основной памяти, а не к своей локальной - это часто называют AGP-текстурированием. SBAПеред тем, как начать перекачку данных (транзакцию), нужно подать запрос и указать адрес блока основной памяти. Шина AGP предусматривает два механизма передачи адреса контроллеру AGP. Первый - передача по тем же каналам, по которым передаются данные. Адрес - 64-битный, передается за два приема (шина AGP - 32-битная, как и PCI). Второй способ - передача по отдельной боковой шине, адрес - 48-битный, боковая шина - 8-битная. Этот режим называется Sideband Addressing, SBA. Основной канал полностью отдается под данные, адреса по нему не передаются, в итоге загрузка шины более полная. Четыре скорости передачиТактовая частота шины AGP в два раза выше частоты PCI и составляет 66 МГц. Таким образом, мы получаем 66x4=264 Мб/c. Этого было мало уже при проектировании шины AGP, поэтому была добавлена возможность передавать по два 4-байтных блока за один такт (добавлен еще один тактовый сигнал с частотой 133 МГц). Первый режим назвали 1x, второй - 2x. Однако и 528 Мб/с (133x4=528) для работающего в режиме DME конвейера недостаточно. Режим 4x подымает вдвое частоту дополнительного тактового сигнала, таким образом уже четыре блока передается за один такт. Рост частоты потребовал снижения диапазона изменения напряжения, поэтому видеочип, работающий в режиме 4х, ориентируется на 1.5В, а не на 3.3В. Вот откуда появились перемычки на некоторых видеокартах, поддерживающих этот режим работы. AGP на практикеОднако жизнь показала несостоятельность ключевых идей, лежащих в основе AGP. Конечно, было бы хорошо вообще выкинуть большую часть памяти из состава видеокарты, оставив только буфер кадра (в котором каждому пикселю на экране соответствует 16 или 32 бита) и Z-буфер, а все текстуры поставлять прямо из основной памяти. Но режим DME современными видеочипами практически не используется! Причина - пропускная способность системной памяти. Например, память PC100 позволяет получать данные со скоростью 8x100=800 Мб/с (шина памяти - 64-битная), половину этой пропускной способности займет процессор (хорошо еще, что у него есть кэш, который позволяет обращаться к памяти только в 5% случаев) и контроллеры, работающие в режиме DMA. В итоге имеем всего 400 Мб/с. Сравните - локальная видеопамять, которая работает на частоте около 200 МГц, имеет шину шириной (на современных видеокартах) 256 бит - 16х200=3200 Мб/c. Какой тогда смысл использовать канал AGP? Лучше нарастить память на борту видеокарты. Выход есть, конечно. Первое - сжимать текстуры. Этот способ одинаково подходит и для основной, и для локальной памяти. Первой до этого додумалась S3 - для ее чипов это было наиболее актуально, потому что "Саваджи" имели узкую шину локальной памяти - 64 бита. Теперь сжатие текстур используют все современные ускорители. Второй трюк - тайловая архитектура (чипы серии PowerVR), текстурирование только тех треугольников, которые не будут закрыты другими на экране. Третий способ - передача данных на удвоенной скорости. Это - память DDR, скоро она будет использоваться в качестве не только локальной видеопамяти, но и обычной системной. Но к тому времени требования к скорости обмена данными между чипом и памятью поднимутся еще выше, так что постоянный рост объемов памяти на борту видеокарт будет продолжаться. Надеюсь, вы уже поняли, что наращивание скорости самой шины AGP не дает ничего при отсутствии роста скорости шины основной памяти. Зачем эти 1.6 Гбайт/c при режиме 4x, если память PC100 даже теоретически не может выдать больше 800 Мбайт/с? Решаем проблемыИтак, вместо облегчения жизни новая шина приносит новые проблемы. Заставить работать AGP-видеокарту удается далеко не каждому. Особенно если используется материнская плата на чипсете не от "автора" самой шины (я имею в виду Intel, конечно), что усугубляется "умелым" производителем вроде Acorp или Zida. Особенно если производитель видеокарты настолько скромен, что не решается обозначить себя. Проблемы именно с AGP диагностируются просто. Видеокарта нормально работает в обычном режиме Windows (GUI), а при попытке запустить любую 3D-игру намертво зависает либо сразу же, либо через весьма непродолжительный промежуток времени. Первое, что нужно сделать - зайти в BIOS Setup и проверить, следующие вещи:
Кроме того, Windows должна иметь версию не ниже 95OSR2.1 с usbsupp-патчем, установлен DirectX 7 и последний видеодрайвер, а для не-Intel-чипсетов - последний AGP-драйвер. Если все это соблюдается, то причину неработоспособности AGP-шины нужно искать в невозможности одной из сторон - чипсета или видеочипа - правильно работать в установленном драйверами режиме. Причем в случае с чипсетами от VIA, ALi или AMD причина, скорее всего, будет в чипсете. Посмотреть текущий режим работы AGP и спланировать свои дальнейшие действия можно с помощью большого количества утилит. Например, Sisoft Sandra показывает в модуле "Motherboard Information" пункт "AGP Bus", можно использовать программу PCIList, или PowerStrip, или WCPUID. Апертура. Этот параметр в BIOS Setup не означает, как думают некоторые, количество видеопамяти. Это диапазон адресов для работы механизма DME. Размер апертуры должен соответствовать половине основной памяти, но не быть меньше 64. Если ее уменьшить до минимума, шина AGP будет работать только в режиме PCI, проблемы сразу исчезнут - вместе с изрядной долей производительности. SBA. Очень часто этот режим нормально не работает, поэтому всегда есть смысл попробовать его отключить. Как это делать - смотрите ниже. При этом вы потеряете около 10% производительности. AGP 1x, 2x, 4x. Если проблема не решается, нужно понижать скорость работы шины AGP - до 1х. Особенно это помогает при разгоне процессора поднятием частоты шины процессора (FSB), так как вместе с ней поднимается частота шины AGP. Для дешевых видеокарт - особенно актуально. Управление режимом AGP со стороны чипсетаЕсли есть возможность установить режим в BIOS Setup - хорошо, но часто такой возможности нет, поэтому придется полазить в реестре. Режимом работы чипсета с шиной AGP управляет тот же драйвер, что осуществляет табличную переадресацию. Называется он VGARTD.VXD - для чипсета Intel, VIAGART.VXD для VIA, AGARTD.VXD для ALi и т.п. ALi. Для этих чипсетов все просто - с AGP-драйвером идет утилита. VIA. Найдите в реестре раздел "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\VIAGART", в нем будут ключи "Sideband" (0-выкл., 1-вкл.) и "Turbo" (0-AGP1x, 1-AGP2x/4x). Intel. Управление отсутствует, хотя точно есть возможность принудительного включения AGP1x (если знаете, как - сообщите). Управление режимом AGP со стороны видеочипаОчень часто производители видеокарт поставляют вместе со своими драйверами утилиты (пример - Creative AGP Wizard), которые позволяют управлять режимом AGP. Фирма AOpen изготовила BIOS с возможностью установки всех параметров с помощью вызываемого при загрузке Setup. ASUS предоставляет возможность заменить VideoBIOS с отключенным Sideband на BIOS со включенным. Но это - только частные случаи. nVidia. Референсные драйверы (т.н. Detonator) имеют возможность управлять скоростью обмена данными по шине AGP. В реестре есть ключи по адресу "HKEY_LOCAL_MACHINE\Software\NVIDIA Corporation\Global\System":
S3. Есть утилитка S3Tweak - она все и решает. Matrox. Совсем недавно появилась утилита Matrox Tweak. С другими видеокартами не сталкивался, либо для них нет подобной возможности. Для них есть кое-что другое. Утилита PowerStrip, разработка фирмы Entech (http://www.entechtaiwan.com/) - универсальное средство настройки частоты развертки монитора и режима работы видеокарты. В последних версиях появилась возможность изменять режим работы AGP "на лету". Для этого есть параметры командной строки:
Вообще-то не каждая видеокарта позволит PowerStrip сменить режим. RivaTNT2 работает, а вот ATI Rage128 вешается намертво. Проблемы с питаниемС современными видеокартами (особенно GeForce и более новые) может случиться и такая проблема. Особенно на старых материнских платах (на чипсете LX, например) или питаемых от блока питания не-ATX. Симптомы - зависание через определенный (постоянный) промежуток времени либо в играх, либо прямо в Windows (самый тяжелый случай). При наличии аппаратного мониторинга срабатывает "сирена", которая отключается через пару секунд. AGP-слот может получать напряжение (3.3 В) либо непосредственно от блока питания, либо через стабилизатор на материнской плате. В последнем случае питание видеокарты получается очень стабильным, но в случае "прожорливого" GeForce или Voodoo3 наверняка возникнут проблемы. Кстати, Voodoo5 использует обычный разъем питания, как CD-ROM или винчестер. У плат Gigabyte есть возможность переключиться на режим питания от БП - перемычки называются "Voodoo3 enable". В других случаях нужно либо менять БП на более мощный, либо менять материнскую плату на более современную. Проблемы с перегревомПроявляются в виде различного рода искажений и ошибок построения трехмерной сцены с последующим зависанием. Видеочип должен перед этим некоторое время интенсивно поработать. Два-три зависания - и можно совсем потерять видеокарту. Если у вас видеочип закрыт только радиатором - обязательно купите обычный кулер для Celeron. Отвинтите и смажьте вентилятор и аккуратно прикрутите его на радиатор видеокарты. Если вентилятор больше радиатора по площади - закрепите его на одном краю одним шурупом, но так, чтобы поток воздуха обдувал и видеопамять. Сделать это надо обязательно, так как высокая температура видеочипа увеличивает общую температуру внутри корпуса, что не может положительно отозваться на остальных компонентах компьютера. Если радиатор такой, что вентилятор не прикрутить - из двух металлических пластин можно изготовить такую конструкцию: один конец пластины изгибается под прямым углом и заправляется под пластину, закрывающую щель для соседнего слота, а в другом конце пластины просверливается отверстие для крепления вентилятора. Таким образом вентилятор закрепляется как раз напротив радиатора, закрывающего чип. |