|
Сейчас, когда мы говорим “видеокарта”, то подразумеваем “акселератор”, и наоборот. Когда-то знак равенства между этими словами поставить было нельзя, потому что это были совсем отдельные устройства! А еще раньше акселераторов вообще не было, а были только видеокарты.
Лет пятнадцать назад видеокарта только и делала, что преобразовывала цифровой сигнал от процессора в аналоговый сигнал, понятный монитору. Картинку на экране рассчитывал процессор, а сама картинка хранилась в оперативной памяти. Потом видеокарта обзавелась некоторым количеством своей оперативной памяти (ее называют видеопамять), и образ картинки перенесся из оперативной памяти компьютера “на борт” видеокарты.
С появлением графических интерфейсов стало ясно, что процессор один уже не может справляться с расчетом изображения и надо ему в этом помочь. Тогда на видеокарте разместили небольшой дополнительный процессор, который должен был взять на свои плечи часть забот по отрисовке изображения. Почему только часть? Да потому, что само изображение по-прежнему создавалось процессором, только он посылал видеокарте не готовую картинку, а общие команды для ее создания: там нарисовать линию такой-то толщины, здесь создать прямоугольник и закрасить его таким-то цветом, а вон там — круг пунктиром. Этот дополнительный процессор назвали “2D-акселератором” или ускорителем двумерной графики (ведь, помогая центральному процессору, он как бы ускорял расчет
|
Когда появились первые трехмерные игры (скорее даже — псевдотрехмерные, ведь по традиции первой действительно трехмерной игрой считают Quake), все тяготы по отрисовке трехмерных миров снова легли на центральный процессор, так как 2D-акселератор был для этого практически бесполезен.
Вот тогда-то и возникла идея устройства, которое должно само рассчитывать трехмерную картинку и передавать ее видеокарте. Так появился первый 3D-акселератор — 3dfx Voodoo от 3dfx Interactive. Любопытная подробность: некоторое время буквосочетание “3dfx” было в нашей стране нарицательным синонимом трехмерного ускорителя. Вскоре инженеры поняли, что видеокарта и акселератор — вещи, в общем-то, неотделимые. И стало одним занятым слотом в компьютере меньше — 3D-акселератор переехал на видеокарту, где на тот момент уже были 2D-акселератор и преобразователь видеосигнала (RAMDAC). Раньше или позже, в тех или иных моделях видеокарт, но компанию им составили порты VIVO, аппаратные декодеры MPEG2 и многие другие дополнительные подсистемы.
Немного о стандартах выводимой графики. С самого начала стандартов было довольно много. Потом всех затмил VGA, а за ним — SVGA. И на этом стандарты закончились. Ведь SVGA — это не какой-то один стандарт, а обобщенное наименование “всего, что после VGA”. Организация VESA (Video Electronics Standards Association) решила внести в этот хаос толику упорядоченности и разродилась своим стандартом — SVGA.VESA. Он помог программистам, которые пишут драйвера. Теперь им можно было не задумываться над детальным устройством конкретной видеокарты, а программировать под среднестатистическую типовую модель. Сейчас существует так много разных видеорежимов, что для их стандартизации не хватит аббревиатур. Именно поэтому про SVGA мы слышим все реже и реже.
Ядро
Центральный элемент любой видеокарты — видеопроцессор, он же — видеоядро, он же — видеочипсет. Именно в нем происходят практически все этапы превращения набора цифр в красивую трехмерную картинку. Там миллионная армия кудесников-транзисторов приготавливает из многих ингредиентов
|
Давайте посмотрим на основные параметры видеоядра. Как и у обычного процессора, у видеопроцессора есть определенное количество конвейеров. Каждый конвейер выполняет свою очередь команд, поэтому — чем больше конвейеров, тем больше операций сможет видеопроцессор выполнять одновременно. Как и в центральном процессоре, в нем есть блок предсказания ветвлений, арифметико-логический блок и так далее. Сходства можно перечислять долго, поэтому поговорим о различиях. В первую очередь это текстурные блоки — своеобразные конвейеры, рассчитывающие наложение текстур на объекты. Чем больше текстурных блоков, тем больше текстур на один и тот же объект акселератор сможет наложить за один проход. Однако если на объект накладывается всего одна текстура, будет работать только первый текстурный блок — остальные останутся не у дел. Поэтому количество текстурных блоков важно исключительно для мультитекстурирования.
|
Все современные акселераторы обладают важнейшим блоком с кодовой аббревиатурой T&L — Transforming and Lighting (трансформация и освещение). Вопреки расхожему мнению, этот блок состоит из трех, а не из двух частей.
Модуль трансформации (Transformation) преобразует трехмерные координаты в двумерные, привязанные к конкретной точке пространства, из которой наблюдатель смотрит на мир, и к направлению его взгляда. Именно здесь рассчитывается проекция перспективы.
Модуль отсечения (Clipping) — отсекает от готовой сцены области, которые находятся вне зоны видимости. В простейшем случае область отсечения задается шестью плоскостями. Все, что выходит за границы области, ограниченной этими плоскостями, дальше не обрабатывается. На самом деле все несколько сложнее. Например, если большой полигон попадает и в видимую область, и в невидимую, его, естественно, оставляют или же обрабатывают только частично.
Модуль освещения (Lighting) отвечает за освещение всех объектов сцены. Причем речь идет не только о восьми аппаратно-обрабатываемых источниках света, но и вторичном свете. К примеру, луч света упал на ровную гладкую поверхность, оставив там блик, отразился от нее и нарисовал на потолке световой круг. С появлением этого модуля стали возможны динамические эффекты освещения: качающиеся лампочки, Солнце, которое движется по небу в реальном времени...
До появления этих трех модулей все операции, которые они выполняют, приходилось делать центральному процессору. Теперь он разгружен для более важных вещей, например, расчета искусственного интеллекта.
Ода памяти
На всех современных акселераторах стоит некоторое количество собственной оперативной памяти — видеопамяти. Это не относится только к встроенным в чипсет акселераторам, которые используют для своих нужд часть оперативной памяти компьютера. Зачем же акселераторам оперативная память?
|
Наш глаз обладает некоторой инерционностью, то есть некоторое время продолжает видеть изображение, которое уже исчезло. Представьте себе, что все, что рисует видеокарта в видеобуфере, мгновенно попадает на экран. Рисуем линию — она рисуется поверх предыдущего изображения. Нужно где-то нарисовать что-то новое — закрашиваем только эту часть экрана, там что-то рисуем. Как бы быстро ни происходил этот процесс, глаз все равно будет замечать, что какие-то части изображения остались, какие-то изменились. Из-за этого игрок заметит крайне неприятное мелькание. Именно поэтому новый кадр сначала рисуется в теневой области видеобуфера (так называемый backbuffer), а затем этот кадр и тот, который был на экране, меняются местами. Благодаря этому создается впечатление гладкого и равномерного движения.
|
Используются они в первую очередь на текстуры. Подгружать текстуры из оперативной памяти, а то и с жесткого диска в процессе рендера — неоправданно долго. Поэтому разработчики игр специальными командами дают задание акселератору подгрузить все или хотя бы часть необходимых ему текстур во время загрузки очередной карты или уровня. Современные игры хвастаются текстурами все более высокого качества и разрешения. UT 2004, Half-Life 2 и Doom 3 задают новую моду, по которой текстуры меньше 515х512 считаются неприличными. Средний же размер текстуры — 1024х1024 при качестве 24 или даже 32 бита. Такая текстура будет занимать в памяти около 4 Мб. Значит, в видеопамять объемом 128 Мб влезет от силы 32 таких текстуры. Вспомните уровни того же UT 2004 с несколькими сотнями текстур. Как же акселератор с ними справляется? Один путь — подгружать текстуры из оперативной памяти по мере необходимости, но тогда могут случаться задержки, вызывающие падение FPS. Другой путь — хранить текстуры в видеопамяти сжатыми, хотя бы простым алгоритмом. Одним из первых алгоритмов сжатия текстур был S3TC, разработанный в компании S3 Inc. Он стал индустриальным стандартом и поддерживается в DirectX, начиная с версии 6.0. Компания 3dfx разработала свой метод сжатия — FXT1, который отличается высокой степенью компрессии. В настоящее время в ходу несколько конкурирующих методов сжатия. Время определит лидера.
|
За время существования видеокарт разработчики напридумывали дикое количество типов видеопамяти. Основных подходов два: взять уже существующий тип обычной оперативной памяти или разработать что-то новое, специально “заточенное” под хранение графики. Оба подхода были востребованы в разное время и периодически сменяют друг друга. Сейчас, например, в большинстве видеокарт стоит память типа DDR, практически та же самая, что и обычная оперативная память компьютера. Другие типы видеопамяти, либо канувшие в Лету, либо по тем или иным причинам не получившие (пока) большого распространения: FPM, EDO DRAM, VRAM, WRAM, RDRAM, SDRAM, SGRAM. В профессиональных видеокартах устанавливаются специальные типы видеопамяти, которые оптимизированы под конкретные задачи, но нам они вряд ли будут интересны. Видеопамять, как и оперативная память, работает на какой-то определенной частоте. Вполне естественно, что видеопамять можно разгонять, увеличивая частоту в небольших пределах с помощью специальных утилит или хитрых приемов. В “Железном цехе” мы уже несколько раз рассказывали о процедурах разгона некоторых видеокарт. И видеопамять не была обделена вниманием.
После всего вышеизложенного вы уже наверняка смогли сделать вывод о том, нужно ли акселератору, который вы хотите купить, много видеопамяти. И все-таки — своеобразный небольшой итог. Само по себе количество видеопамяти на борту видеокарты не играет практически никакой роли. Если поставить на старенькую Riva TNT 256 Мб видеопамяти, ее производительность не увеличится ни на йоту — она просто не сможет с дополнительной памятью полноценно работать. В видеоподсистеме все должно быть сбалансировано. Однако современные игры с гигантскими текстурами требуют в видеокартах высокого класса установки большого объема видеопамяти — до 512 Мб. Имейте это в виду, делая выбор.
ЦАП тебя за нос
Допустим, видеокарта сформировала в видеобуфере образ картинки, которую надо вывести на экран монитора. Теперь эту картинку надо как-то до монитора донести. Проблема в том, что большинство современных мониторов — аналоговые. А в недалеком прошлом цифровые мониторы (основанные на технологиях плазменных панелей или LCD) были и вовсе в диковинку. Поэтому цифровой сигнал надо как-то преобразовать в аналоговый, понятный монитору. Эту ответственную миссию взял на себя RAMDAC (Random Access Memory Digital to Analog Converter — цифро-аналоговый преобразователь (ЦАП) с ОЗУ). Кстати, когда-то RAMDAC был единственным компонентом видеокарты.
|
Для того, чтобы нарисовать на экране какую-нибудь картинку, монитор должен получить сигнал, на какой угол отклонять луч в каждый конкретный момент времени (по сути, какое напряжение подавать на отклоняющие магниты) и с какой интенсивностью электронной пушке испускать поток электронов. RAMDAC как раз и занимается тем, что преобразует массив точек картинки из видеобуфера в сигналы, отклоняющие электронный луч. Мониторы нынче пошли умные, и их не надо “водить за ручку”. Поэтому вместо детальных указаний, как каждой конкретной детали монитора работать, RAMDAC через VGA-кабель передает только RGB-сигнал (то есть три составляющих цвета: R — красную, G — зеленую и B — синюю) и сигнал синхронизации, чтобы монитор “не сбился с ритма”.
От работы RAMDAC напрямую зависит качество изображения. Если с этим компонентом видеокарты возникли проблемы или же он просто некачественный, картинка может выглядеть замыленной, мутной и даже дергающейся. Поэтому, если вы купили компьютер и заметили, что монитор ведет себя как-то странно, не спешите винить его — проблема может таиться и в видеокарте. В разных разрешениях и при разных частотах обновления экрана частота RAMDAC должна быть разной. Например, в разрешении 800х600 и при частоте обновления 80 Гц из RAMDAC нужно выжать всего-то 50 Гц. А в разрешении 1600х1200 и с частотой обновления 100 Гц требования гораздо выше: частота регенерации должна быть не меньше 250 Гц.
|
В стандарте DVI есть два подстандарта: DVI-I и DVI-D. Нередко один из этих стандартов указывается в параметрах видеокарты. DVI-D — это стандартный DVI с 24 выводами. А DVI-I — это универсальный разъем, в котором помимо стандартных цифровых выводов есть еще и пять аналоговых. Таким образом, разработчики этого стандарта правильно решили, что чем меньше разъемов на видеокарте, тем лучше, и запихнули все в один. Правда, аналоговых мониторов, которые поддерживали бы этот разъем, что-то не видно. Зато цифровых — предостаточно. И если вы покупаете себе видеокарту под аналоговый монитор, а в ее спецификации затесался стандарт DVI-I, уточните у продавца на всякий случай, есть ли там обычный VGA-выход.
|
Так как видеокарта — это отдельное устройство, ему надо как-то общаться с окружающим компьютером. Первые видеокарты подключались к шине XT-bus через специальный слот. Ему на смену пришел слот ISA. Вскоре его скромных возможностей (16 бит, 8М Гц) стало не хватать, и IBM решила внедрить свою шину и слот для видеокарт и не только под названием MCA (Microchannel Architecture — микроканальная архитектура). Однако затея благополучно провалилась, потому что IBM пожадничала и решила сделать эту шину лицензируемой, то есть разработчики устройств должны были выплачивать ей солидные проценты от продаж.
На смену ISA пришла шина VESA Local Bus (VLB), потом PCI и завершил это победное шествие порт AGP. Необходимость выделить под видеокарту отдельный порт назревала долго и упорно. Действительно, это устройство по требованиям к пропускной способности очень сильно отличается от всех остальных компонентов компьютера, его нельзя причесывать под одну гребенку с другими.
Идея порта AGP (Accelerated Graphics Port) пришла в голову инженерам из Intel. Она проста до гениальности: видеокарта должна иметь возможность обращаться к оперативной памяти, минуя процессор. Ничего не напоминает? По тому же самому принципу работает технология DMA, благодаря которой винчестер может общаться с оперативной памятью в обход процессора. Возможно, через несколько лет устройства и их контроллеры станут настолько умными, что им вообще для работы не нужен будет процессор. Кроме выделенного канала связи с оперативной памятью, видеокарта может также
|
С момента своего появления на свет стандарт AGP дошел до третьей версии. Разные версии порта обозначают на манер скоростей у приводов компакт-дисков: 2x у AGP 1.0, 4x у AGP 2.0 и 8x у AGP 3.0. Получается какая-то несуразица: почему у самого первого слота AGP скорость передачи сразу 2x? А дело вот в чем. Шина AGP 1.0 имеет частоту 66 М Гц и разрядность 32 бита. Значит, скорость передачи данных — 266 Мб/c. Однако шина может также работать в режиме, когда данные передаются и по переднему, и по заднему фронту синхросигнала, и тогда скорость передачи возрастает в два раза — до 532 Мб/c. Отсюда приписка “2x”. В стандарте AGP 2.0 скорость передачи данных выросла еще в два раза — до 1064 Мб/c, и появился новый механизм “быстрой записи” — Fast Write (FW). С его помощью управляющие команды записываются напрямую в AGP-устройство. Раньше в качестве промежуточного звена использовалась оперативная память. В AGP 3.0 частота возросла до 533 М Гц, а скорость обмена данными — до 2.1 Гб/c.
Кроме этих стандартов в Intel придумали еще один — AGP Pro. Этот слот предназначен для сверхмощных профессиональных видеокарт,
Затронем еще один неоднозначный вопрос. Бытует мнение, что возможности AGP 8x избыточны и производство видеокарт с этим слотом бессмысленно или преждевременно. Доля правды в этом есть. Ведь сам стандарт AGP проектировался в Intel в надежде на то, что с его появлением можно будет создать дешевые видеокарты с очень малым количеством видеопамяти. Видеокарта должна активно использовать оперативную память компьютера. Однако они пошли совсем по другому пути развития: видеопамять дешевела, ее становилось все больше и больше. Пропускная способность AGP уже не была камнем преткновения. Однако некоторый прирост производительности при переходе с AGP 4x на 8x все-таки есть. Все равно акселератор общается с оперативной памятью, для подгрузки текстур, которые не уместились в видеопамяти, например. Но AGP 8x с лихвой хватает на все современные акселераторные нужды, поэтому новый стандарт вряд ли появится очень скоро.
* * *
За бортом статьи остались многие тонкости устройства акселераторов, например такие, как VIVO, аппаратные декодеры. Так было сделано не случайно. Во-первых, не будем отбирать хлеб у “Железного цеха”. Там вы сможете прочитать о заинтересовавших вас вещах более подробно. Во-вторых, цель этой части “Энциклопедии” — не ответить на сакраментальный вопрос, какая видеокарта лучше, а логически продолжить начатую в предыдущих частях тему. Теперь вы узнали, как все те хитрые технологии реализуются на практике, что называется, “в железе” и как акселератор “делает нам красиво”. В следующей части цикла мы затронем некоторые передовые и нестандартные технологии трехмерной графики, такие как вершинные и пиксельные шейдеры, NURBS, ray casting, воксели, сферические полигоны и многое другое. Довольно скоро все эти хитрые словечки станут вам понятными и родными. До встречи!