Эволюция дискретных видеокарт. Часть 1. 1980-е годы
В 70-е годы компьютеры даже не считались роскошью — они банально были недоступны массовому потребителю. Примерно в это же время компанией IBM было принято решение о создании «массового» компьютера. В 1981 году увидел свет первый персональный компьютер IBM PC. Несмотря на то, что прежде известнейшая корпорация предпочитала использовать комплектующие собственного производства, этот десктоп состоял в основном из деталей сторонних производителей. В роли центрального процессора выступил кристалл Intel 8088 с тактовой частотой 4,77 МГц, объем оперативной памяти составлял от 16 до 256 Кбайт. Базовая версия компьютера поставлялась без флоппи-дисководов, жесткого диска и монитора, их необходимо было приобретать отдельно. Кроме этого, отдельно приобретались различные платы расширения, среди которых были и видеоадаптеры.
Начало эры IBM. Видеоадаптеры MDA и CGA
Покупателю предлагались на выбор два видеоадаптера: MDA (Monochrome Display Adapter) и CGA (Color Graphics Adapter). Как показало время, первый акселератор оказался более популярным, нежели второй. Его особенностью была работа с монохромными (одноцветными) мониторами. Он поддерживал исключительно текстовый режим (80 столбцов на 25 строк) и не имел графических режимов. Ядром видеоадаптера служил чип Motorola MC6845, а объем памяти составлял 4 Кбайт. Максимальное рабочее разрешении составляло 720x350 пикселей, или, вернее, 80x25 символов. Тем не менее стоит отметить, что из-за текстового режима MDA не умел работать с отдельными пикселями. Видеоадаптер банально помещал в определенное знакоместо один из 256 символов. Каждый из этих символов мог обладать некоторыми атрибутами. Например, он мог быть невидимым, подчеркнутым, обычным, жирным, инвертированным или мигающим. При этом была возможность комбинировать атрибуты. Цвет символов зависел исключительно от монитора. В зависимости от типа дисплея буквы могли быть белого, изумрудного или янтарного цвета.
Кстати, интересной архитектурной особенностью видеоадаптера MDA являлось то, что сама плата, помимо видеоядра, содержала контроллер параллельного порта, который отвечал за работу с принтером.
Видеоадаптер CGA считался своего рода противоположностью MDA. Помимо работы в текстовом режиме, он также мог функционировать в графическом режиме, причем поддерживалось как черно-белое, так и цветное изображение. В роли ядра адаптера выступал все тот же чип Motorola MC6845, но объем памяти был больше в четыре раза. В режиме работы с цветной графикой максимальное разрешение составляло 320x200 пикселов, с монохромной — 640x200 точек. При этом была возможность обращения к отдельно взятому пикселу. Цветовая глубина адаптера составляла 4 бита. Это позволяло использовать палитру из 16 цветов.
Так же, как и MDA, видеоадаптер CGA поддерживал стандартный текстовый режим. Его разрешение составляло 40x25/80x25 символов, где тоже не было возможности обращения к отдельным пикселам. Может возникнуть вопрос: зачем нужен был видеоадаптер MDA, если CGA поддерживает такие же режимы и к тому же имеет более богатый функционал? Все дело в том, что MDA изначально ориентировался на бизнес-потребителя и «затачивался» под работу с текстом. Поэтому он работал с нестандартными вертикальными и горизонтальными частотами, обеспечивая более четкое изображение символов. CGA же поддерживал только стандартные частоты и заметно проигрывал MDA в качестве выводимого на экран текста.
Работали адаптеры стабильно, однако в случае с CGA известны некоторые баги. Так, временами на экране появлялись рандомные короткие горизонтальные линии, также известные как «снег». Возникали они из-за того, что CGA не поддерживал одновременное чтение и запись в память. Также известно, что цветной графический адаптер не полностью использовал видеопамять.
Очень интересно, что в IBM PC была возможность использования двух адаптеров одновременно. Само собой, эта технология ни в коем случае не была прародителем сложных графических подсистем SLI и CrossFire — она предназначалась для одновременной работы двух мониторов. В ту эпоху адаптеры имели лишь один порт вывода. Забегая вперед, скажем, что ситуация изменилась лишь в 1996 году.
Видеоадаптер EGA
Логическим продолжением MDA и CGA стало тоже решение IBM под названием EGA (Enhanced Graphics Adapter), представленное в сентябре 1984 года для нового персонального компьютера IBM PC/AT. По своей сути новый видеоадаптер стал первым в своем роде решением, способным воспроизводить нормальное цветное изображение. Так же как и CGA, EGA поддерживал текстовый и графический режимы, при этом максимальное разрешение составляло 640x350 пикселов при использовании 16 цветов из 64 возможных. На архитектурном уровне EGA был схож со своими предшественниками: он также использовал видеоконтроллер Motorola MC6845, оснащался увеличенным объемом памяти, равным 64 Кбайт. Для передачи данных применялась шина ISA. Со временем объем памяти был увеличен до внушительных 256 Кбайт. Вся память подразделялась на 4 сегмента (4 цветовых слоя). Процессор умел заполнять сегменты параллельно, что значительно повысило скорость заполнения кадра. Кстати, адаптер дополнительно оснащался 16 Кбайт памяти для расширения графических функций BIOS.
EGA поддерживал три типа текстовых режимов. В первом случае разрешение составляло 80x25 символов и 640x350 пикселов, где каждая ячейка имела размер 8x14 пикселов. Во втором случае разрешение составляло 40x25 символов и 320x200 пикселов с ячейкой 8x8 пикселов. Третий режим не являлся стандартным. Его разрешение равнялось 80x43 символов и 640x350 пикселов, причем использовалась ячейка 8x8 пикселов. Что касается графических режимов, то их также было три: с разрешениями 320x200, 640x200 и 640x350 пикселов. Частота развертки составляла 60 Гц.
Архитектурно адаптер EGA не был полностью совместим с MDA и CGA, однако ограниченно поддерживал работу этих стандартов. Например, к EGA можно было подключить MDA-монитор, но в таком случае поддерживался только один режим работы с разрешением 640x350 пикселов и монохромной графикой.
Занимательно и то, что в то время компания IBM не регистрировала никакие патенты на свои графические разработки. Это означало, что на рынке видеоадаптеров появлялось большое количество «клонов» решений IBM. В наше время такое попросту невозможно! Клоны адаптеров отличались улучшенными характеристиками и порой были избавлены от редких глюков в работе, свойственных адаптерам IBM. К примеру, некоторые клоны были обучены работе в более высоком разрешении 720x540 пикселов. Выпуском клонов занимались многие компании. В их число входили и такие известные производители, как ATI Technologies и подразделение компании Western Digital — Paradise.
Видеоадаптер MCGA
Принято считать, что эра EGA продолжалась вплоть до выпуска адаптера VGA (Video Graphics Array), то есть до 1987 году. Однако в этом году было выпущено еще одно графическое решение — MCGA (Multi Colour Graphics Array). Оно было представлено как видеоадаптер для ранних моделей компьютера IBM PS/2, причем он был встроен в чипсет — дискретных решений MCGA не было выпущено вовсе. Объем его памяти составлял 64 Кбайт, а количество поддерживаемых цветов было увеличено до 262 144 за счет 64 уровней яркости для каждого цвета. MCGA обладал полной поддержкой всех режимов CGA. Вдобавок, адаптер мог работать в монохромном режиме с разрешением 640x480 пикселов и частотой обновления 60 Гц. Кроме того, поддерживался 256-цветной режим с разрешением 320x200 и частотой развертки 70 Гц. 256-цветной режим впоследствии стал очень популярным среди игр. Однако во время появления MCGA многие игры еще не поддерживали такой режим и работали лишь в 4-цветном режиме CGA.
Кстати, именно из-за этого ограничения возникла необходимость использования аналогового сигнала. В качестве разъема MCGA использовал DB-15 семейства D-Sub, в то время как все предшественники использовали цифровой сигнал 9-контактного разъема.
Стандарт MCGA так и не стал таким же распространенным, как предыдущие решения IBM. В первую очередь, это случилось из-за политики самой компании: IBM не предоставляла лицензии на производство адаптеров данного типа сторонним производителям.
Небольшая революция. VGA
Однако в том же 1987 году IBM представила в своем роде революционный продукт на базе стандарта VGA. Так же как и MCGA, адаптеры использовались в новейших на то время компьютерах IBM PS/2. В плане архитектуры VGA схож со своим предшественником EGA. Он состоит из следующих основных подсистем: графического контроллера, памяти, секвенсора, контроллера атрибутов, синхронизатора и контроллера ЭЛТ. Что касается их функционала, то графический контроллер отвечал за обмен данными между центральным процессором и видеопамятью. Между прочим, объем видеопамяти в адаптерах VGA составлял уже 256 Кбайт — по 64 Кбайт на каждый цветовой слой. Секвенсор, или, как его еще называют, сериализатор, преобразует данные из памяти в поток битов, которые впоследствии передаются контроллеру атрибутов. Контроллер атрибутов, в свою очередь, преобразует входные данные в цветовые значения. Синхронизатор управляет временными параметрами адаптера, а также переключает цветовые слои. Ну а контроллер ЭЛТ генерирует сигналы синхронизации для дисплея. Интересно, что основные подсистемы стали располагаться на одной микросхеме. Это позволило уменьшить размеры видеоадаптера. Однако тут стоит отметить, что дискретные VGA-ускорители выпускали лишь сторонние производители. Так, IBM в своих компьютерах встраивала адаптеры в материнскую плату.
Как и в случае с MCGA, видеоадаптер VGA использовал не цифровой, но аналоговый интерфейс. Выбор в пользу D-Sub пал из-за возросшего количества отображаемых цветов. Так, цифровой интерфейс передавал RGB-сигналы управления тремя основными цветами, а с использованием аналогового варианта появилась возможность присвоить каждому сигнал определенный уровень яркости. В результате количество отображаемых цветов возросло до отметки в 262 144. На то время это был большой шаг вперед в плане увеличения реалистичности изображения.
Само собой, из-за увеличения количества отображаемых цветов появились новые графические режимы. Стандартными для VGA являлись режимы: с разрешением 640x480 пикселов и 16 цветами; с разрешением 640x350 и 16 цветами (режим обратной совместимости с EGA); с разрешением 320x200 точек и 16 цветами; с разрешением 320x200 точек и 256 цветами. Последний режим допускал хранение в памяти до 4 страниц одновременно, каждая из которых весила чуть менее 64 Кбайт. В 1991 году программист Майкл Абраш сумел запустить на видеоадаптере VGA режим с разрешением 320x240 и 360x480 пикселов и 256 цветами. При этом использовалась более эффективная организация работы с памятью.
Интересно, что VGA стал первым видеоадаптером, который работал с разрешениями с отношением сторон 4:3 (прежде пикселы растягивалась по вертикали).
Что касается текстовых режимов, то в VGA поддерживались несколько видов шрифтов и режимов, что позволяло использовать различные их комбинации. Стандартный шрифт VGA имеет разрешение 8x16 пикселов. Также поддерживаются шрифты с разрешением 8x14 и 8x8 точек для обратной совместимости с EGA и CGA соответственно.
Стандарт развивался очень быстро. На рынке появилось множество различных клонов видеоадаптеров от сторонних производителей. В отношении VGA компания IBM проводила такую же политику, как и с адаптерами MDA, CGA и EGA, предоставляя другим компаниям лицензию на производство доработанных решений.
В целом VGA стал первым «народным» адаптером, аббревиатуру которого используют и по сей день. А под разрешением VGA подразумевается разрешение 640x480 точек.
Видеоадаптер 8514/A
В 1987 году IBM представила еще один, но уже «профессиональный» видеоадаптер 8514/A. В отличие от других решений, данный ускоритель не был совместим ни с одним из предыдущих решений компании. На выбор пользователю предоставлялись две версии 8514/A с различным объемом видеопамяти: 512 Кбайт или 1 Мбайт. Поддерживались только два разрешения: 640x480 и 1024x768 точек, причем младшая версия адаптера работала с 16 цветами, а старшая поддерживала все 256 цветов. В высоком разрешении адаптер функционировал с малой частотой развертки (43 Гц), что привело к проблеме мерцания изображения. Однако дело было совсем не в ускорителе: возможности 8514/A позволяли работать и с более высокой частотой обновления экрана. Инженеры IBM запрограммировали адаптер таким образом, чтобы использовать в системе более дешевые мониторы, ведь в то время дисплеи с поддержкой высокого разрешения и высокой частоты развертки стоили очень дорого. Тем не менее стоит отметить, что у многочисленных клонов 8514/A данное ограничение было снято.
Важной особенностью 8514/A считалась поддержка аппаратного ускорения рисования. Так, 2D-акселератор ускорял рисование линий, прямоугольников, заливку различных фигур, а также поддерживал функцию BitBLT.
Стоимость IBM 8514/A составляла 1290 долларов США за версию с объемом памяти 512 Кбайт. Для того, чтобы приобрести мегабайтное решение покупателю необходимо было доплатить еще 270 долларов. Однако на низком распространении адаптера сказывалась не столько цена, сколько его работа лишь в системах с шиной MCA (Micro Channel Architecture). Однако к концу 80-х годов появилось большое количество клонов. Многие из них имели поддержку шины ISA, а также дополнительных разрешений (800x600 и даже 1280x1024 точек). Среди видеоадаптеров-близнецов опять выделялись решения компаний Western Digital и ATI. Особенно популярны стали решения Mach 8 и Mach 32.
8514/A никогда не был коммерчески успешным, однако он внес большой вклад в развитие аппаратного ускорения графики, «бум» которого пришелся на 90-е годы.
Развитие VGA. Стандарты XGA и SVGA
Развитием стандарта VGA стали адаптеры SVGA (Super Video Graphics Array) и XGA (Extended Graphics Array). Вторые по списку ускорители впервые были представлены в октябре 1990 года и использовались в компьютерах IBM PS/2. Они устанавливались в Model 90 и 90 XP, но также были доступны в качестве комплектующих. По большому счету, XGA представлял собой расширение стандарта VGA, то есть был своеобразным гибридом 8514/A.
XGA выгодно отличало использование видеопамяти типа VRAM — она была быстрее, чем применявшаяся в VGA DRAM. Ее объем составлял 512 Кбайт. Стоил ускоритель 1095 долларов США. Интересно, что за дополнительную плату в 350 долларов пользователь получал модель с увеличенным до 1 Мбайт объемом видеопамяти. XGA поддерживал разрешение 640x480 точек с 16-битным цветом (всего 65 536 оттенков). Помимо этого, была поддержка 256-цветного изображения с разрешением 1024x768 точек. Интересно, что не поддерживалось промежуточное разрешение 800x600 точек. Поскольку XGA частично перенял функции 8514/A, он также был способен аппаратно ускорять рисование. Графический ускоритель поддерживал алгоритм Брезенхэма (алгоритм, определяющий, какие точки двумерного растра нужно закрасить, чтобы получить близкое приближение прямой линии между двумя заданными точками), заливку прямоугольников, а также операцию BitBLT. Отличительной от 8514/A особенностью стала возможность рисования объектов произвольной формы.
Что касается недостатков XGA, то одним из них являлось то, что адаптер использовал развертку с чередованием в высоком разрешении. Это приводило к тому, что на мониторе было заметно мерцание из-за снижения частоты регенерации.
В сентябре 1992 года был представлен обновленный стандарт XGA с индексом 2. XGA-2 не претерпел никаких кардинальных изменений. Объем памяти был увеличен до 1 Мбайт, причем использовалась еще более быстрая VRAM. Вкупе с движком, отвечающим за аппаратное ускорение рисования, это дало значительную прибавку производительности в некоторых задачах. Видеоадаптер научился работать в высоком разрешении 1024x768 точек с 16-битным цветом и высокой частотой развертки — так была решена проблема мерцающего экрана. Наконец, была добавлена поддержка разрешения 800x600.
Однако с выходом стандарта XGA конкуренты IBM решили не копировать эти устройства, а производить более дешевые видеоадаптеры, но способные функционировать в более высоком разрешении и/или с большим количеством цветов. Эти адаптеры и образовали новый класс устройств под названием SVGA.
Изначально SVGA не являлся стандартом — уж больно различны были все устройства, поскольку для них не существовало четких спецификаций. Само собой, такое положение дел привело к сложности программирования. В 1989 году ассоциация производителей VESA (Video Electronic Standards Association) предложила ввести единый программный интерфейс для всех видеоадаптеров SVGA. Этот интерфейс получил название VESA BIOS Extention. С его помощью программисты могли определять специфические соответствия и использовать их в дальнейшем. При этом для работы с любым SVGA-устройством использовался единый драйвер. Стандарт VESA предусматривал использование всех разрешений, включая самое высокое 1280x1024 точек с 16777216 оттенками (24-разрядное кодирование цвета). Отличительной чертой решений SVGA стал встроенный акселератор, появление которого было связано с необходимостью качественной обработки графической составляющей новых ОС. Например, только набирающей в то время обороты Microsoft Windows.
Вместо заключения
Время шло, и качеством двухмерной графики уже было не удивить. В какой-то степени она себя исчерпала. Вполне естественно, что инженеры начали делать упор на обработку трехмерного изображения. Изначально 3D-ускорители представляли собой отдельные платы, вставляемые в свободные разъемы на материнской плате. Однако со временем микросхемы 3D-ускорителя перекочевали в графический чип, и одна плата отвечала за ускорение как двухмерной, так и трехмерной графики.
Но что-то мы ускорились. О том, как развивалась индустрия 3D-ускорителей в 1990-е годы, мы расскажем в следующий раз. Не пропустите!