1995 | 1996 | 1997 | 1998 | 1999 | 2000 | 2001 | 2002 | 2003 | 2004 | Оглавление текущего номера /134, 1996 г./ | Бонус | Поиск  

Тема номера

Персональный компьютер'96

Какой же пользователь не любит быстрой графики!


© 2004, Еженедельник «Компьютерра» | http://www.computerra.ru/offline
Этого материала на сайте "Компьютерры", к сожалению, нет

ет на уровне, близком к операционной системе. Драйвер осуществляет связь между прикладной программой и аппаратной частью компьютера (в данном случае с видеоадаптером). В этом участвует также базовая система ввода-вывода (BIOS), находящаяся, как правило, в ПЗУ – частично на материнской плате компьютера, частично на самой плате адаптера. Благодаря тому, что набор стандартных графических операций (графический интерфейс) для каждой операционной системы (или определенного класса программ) жестко стандартизован, удается достичь полной совместимости этих программ с любым адаптером, имеющим соответствующий драйвер.

Если ваша видеокарта не содержит ускорителя, то все стандартные графические операции драйвер выполняет программно. Когда ускоритель установлен, команды на выполнение графической операции (если только эта операция поддерживаются данным ускорителем) просто переводятся в команды для графического сопроцессора.

Во времена, когда основной операционной системой персональных компьютеров была DOS, для каждой более-менее серьезной программы существовало множество драйверов, рассчитанных на различные видеорежимы и видеоплаты. Кроме того, с каждой новой моделью графического адаптера поставлялось огромное количество новых драйверов для различных программ. Чем больше программных пакетов поддерживала плата, тем "универсальнее" она считалась. И если вам не удавалось найти драйверы для работы вашей любимой программы с той или иной платой, то программа либо вовсе не могла работать, либо работала в одном из стандартных (обычно – EGA или VGA), пользуя акселератор.

Система Windows и подобные ей графические оболочки (OS/2 Presentation Manager, Unix X11 и т.п.) устранили описанную проблему. Windows использует единый для всех своих приложений графический драйвер. Если вы заменили графический адаптер в своем компьютере, то вам не нужно искать и переустанавливать драйверы для каждого приложения в отдельности, а достаточно заменить лишь единственный драйвер Windows.

Ассоциация по стандартизации видео-электронного оборудования (Video Electronics Standard Association – VESA) разработала единый интерфейс для поддержки различных функций адаптеров SVGA. К моменту появления этого стандарта многие фирмы уже имели собственные реализации режимов SVGA, поэтому доступ к функциям VESA SVGA осуществляется с помощью программных прерываний. Теперь для поддержки интерфейса VESA SVGA в DOS достаточно иметь лишь соответствующий драйвер, который загружается в оперативную память, как TSR-npo-грамма, и обрабатывает функции прерывания 10h, адресованные VESA SVGA. Хотя при этом не поддерживаются возможности акселераторов (такие, как аппаратный курсор, вывод битовой графики и другие функции GUI), стандарт VESA обеспечивает полную совместимость различных адаптеров в режимах с высоким пространственным и цветовым разрешением.

Какие бывают акселераторы

Все существующие в настоящее время графические акселераторы можно условно разделить на три группы: акселераторы для графических оболочек и систем автоматизированного проектирования (САПР), акселераторы трехмерной графики (так называемые 3D-акселераторы) и мультимедиа-акселераторы, предназначенные для воспроизведения видеофильмов и динамических изображений.

Акселераторы первой группы используются в настоящее время наиболее широко, так как ускоряют выполнение многих стандартных операций графического интерфейса Windows и других графических оболочек (OS/2, XFree86 и т.п.). Устройства второй группы используются для создания "искусственной" компьютерной анимации, трехмерной визуализации в САПР, а также в интерактивных приложениях типа игр, тренажеров, обучающих систем и т.п. Мультимедиа-акселераторы применяются в мультимедиа-системах для воспроизведения на экране компьютера "живого видео" (упакованных в том или ином формате цифровых видеофильмов).

Вообще говоря, эти группы в значительной степени перекрываются. Так, платы из второй и третьей групп, как правило, поддерживают и функции плат первой группы. Существуют даже такие платы, которые могут выполнять все перечисленные функции (например, Matrox Millenium), однако абсолютно универсальных ускорителей, которые были бы лидерами во всех классах приложений, пока не существует, да и вряд ли они вообще появятся. Например, плата показывает великолепную производительность в Windows, но, если ее использовать в том же графическом режиме, скажем, в OS/2, из-за плохой оптимизации драйверовдля этой ОС она может показать весьма скромные результаты. Очень важным фактором также является наличие дополнительных удобств: например, средств цветовой калибровки и центрирования, расширенного виртуального экрана, возможности изменения графических режимов без перезагрузки и т.п. Поэтому, выбирая видеокарту, следует заранее рассчитывать ее под конкретное будущее применение.

Все большую популярность приобретают графические карты, область применения которых может быть расширена за счет установки на них дочерней карты. Таких дочерних карт с различными характеристиками, назначением и стоимостью может быть выпущено несколько, и они предлагаются пользователю дополнительно на выбор.

"Классические" акселераторы

Эти карты обеспечивает аппаратную поддержку большинству самых стандартных операций двухмерной графики, как-то: рисование линий, многоугольников, окружностей и других геометрических фигур; закраска замкнутых областей изображения определенным цветом или по шаблону; перемещение участков битовых изображений (например, графических окон) из одного участка экрана в другой либо между основной памятью и видеопамятью, и т.п.

Часто встречающийся термин "Windows-акселераторы" вовсе не означает, что данные устройства используются только при работе с MS Windows. Их можно применять в любых графических оболочках со стандартизованным графическим интерфейсом при наличии соответствующих драйверов.

Большинство современных акселераторов рассчитано на 32-разрядные шины VESA Local Bus или PCI. Теоретически, шина VESA может работать на более высокой тактовой частоте и обеспечивать большую пропускную способность, однако на высоких частотах (40 МГц и более) она функционирует неустойчиво, и это сводит ее преимущества на нет. Шина PCI работает на частоте 33 или 66 МГц. Ее работа не зависит от типа процессора, она более устойчива и, что очень важно, поддерживает стандарт самоконфигурирования Plug-and-Play (чего не скажешь о VESA).

Современные графические платы для профессиональных применений способны устойчиво работать в графических режимах с разрешением (при наличии 6 Мбайт видеопамяти и более) до 1600x1200x16,5 млн. цветов с прогрессивной разверткой (без чередования строк) и высокой частотой кадров (более 70 Гц). В режиме 1600x1200x65 тыс. цветов частота кадровой развертки большинства хороших плат поддерживается на уровне 80 Гц и более. Это обстоятельство чрезвычайно важно, так как работа при низкой частоте кадровой развертки (менее 70 Гц) отрицательно влияет на здоровье.

При большой частоте развертки в режимах с высоким разрешением остро встает вопрос об эффективности видеопамяти. Дело в том, что память графического адаптера должна работать как бы на два фронта. С одной стороны, центральный процессор и видеоакселератор при перерисовке изображения заносят в нее данные. Чем быстрее заносятся новые данные, тем быстрее перерисовывается изображение. С другой стороны, чтобы воспроизводить изображение на экране, необходимо несколько десятков раз в секунду считывать из видеопамяти всю информацию о нем. Например, в режиме 1600x1200x16 млн.цветов (3 байта на пиксель) и частоте кадровой развертки 72 Гц ежесекундно из видеопамяти считывается поток данных, эквивалентный 1600x1200x3x72=405 Мбайт.

Если в качестве видеопамяти для этого режима применять обычную динамическую память, то она практически постоянно будет занята только выборкой данных для вывода на экран и не сможет обеспечить нормальной пропускной способности для записи. Поэтому в современных графических адаптерах применяется так называемая двухпортовая память, которая позволяет сравнительно малыми затратами устранить эту проблему.

Двухпортовая память имеет два канала, обращение к которым может происходить одновременно. По одному каналу информация только считывается (для воспроизведения на экране), а по другому в тот же самый момент может либо записываться (для перерисовки или регенерации), либо также считываться (скажем, для последующего перемещения в другую область).

Сегодня уже разработано и применяется несколько разновидностей двухпортовой памяти. Самая распространенная из них – Video

RAM (VRAM). Этот вид памяти значительно дороже обычной динамической памяти DRAM. Далее, все шире внедряется новая "оконная" память WRAM (Window RAM). Она тоже является двухпортовой, как и VRAM, однако благодаря некоторым технологическим усовершенствованиям оказывается в среднем заметно быстрее последней; преимущество особенно заметно при выводе текста в графическом режиме и закраске по шаблону. При этом WRAM не дороже, а даже немного дешевле VRAM.

Акселераторы 3D-графики

При отображении трехмерных образов в компьютерной графике применяется проекция трехмерного мира на двухмерную плоскость экрана дисплея (на стерео-дисплеях – две проекции: для каждого глаза в отдельности).

Проекция рассчитывается следующим образом. Внешние поверхности всех трехмерных объектов представляются в виде множества плоских многоугольников (чаще – треугольников). Чем больше треугольников и чем меньше их размеры, тем точнее можно изобразить гладкую поверхность. Для каждого такого треугольника задается направление внешней нормали (чтобы знать, какой стороной он повернут к наблюдателю: наружной, т.е. видимой, или внутренней – невидимой). При желании получить более качественное изображение можно еще задать характеристики поверхности каждого треугольника: коэффициент отражения света, падающего под различными углами, материал, текстуру поверхности, шероховатость и т.п. Далее для всей сцены задаются положение наблюдателя, положение плоскости проектирования ("плоскости экрана") и ее ориентация в пространстве.

Собственно расчет состоит в нахождении особой проекции каждого треугольника на плоскость экрана и генерации текстуры, которой эту проекцию необходимо заполнить. Помимо того, в процессе расчета необходимо определять, не будет ли данный треугольник полностью или частично заслонен другими объектами. Если треугольник целиком открыт – он отображается полностью. Если целиком закрыт -не отображается вообще. Более сложный вариант – когда треугольник заслонен частично. Естественно, на экране должна отображаться только видимая часть. И еще одна тонкость: более удаленные объекты обычно изображаются более затемненными – это создает "эффект старины" и усиливает реалистичность картины.

Описанный процесс расчета обычно называют "рендерингом". Надо сказать, что занятие это крайне трудоемкое: чтобы отобразить на экране пусть даже неподвижную сцену из нескольких сложных трехмерных объектов, требуется провести огромный объем вычислений. До недавнего времени аппаратная реализация этой операции существовала лишь на мощных графических станциях Silicon Graphics, Digital Equipment, Sun и т.п. На персональных компьютерах весь объем вычислений возлагался на центральный процессор, поскольку аппаратной поддержки 3D-графики предусмотрено не было. Для расчета несложной сцены в реальном времени (подобные задачи решаются в играх, тренажерах и т.п.) не хватает мощности даже такого процессора, как Pentium, – либо мала частота кадров, либо картинка получается далеко не реалистичной. Однако совсем недавно на рынке появились мощные (и при этом недорогие!) платы 30-ускорителей и для PC.

Для обеспечения совместимости этих плат используется несколько стандартов на графические интерфейсы трехмерной графики. Наиболее популярным из них по-прежнему остается спецификация OpenGL, разработанная фирмой Silicon Graphics и поддержанная многими независимыми производителями аппаратного и программного обеспечения. OpenGL поддерживает ряд разнообразных функций: рисование простых геометрических элементов (точек, линий и многоугольников), вывод битовых изображений, удаление невидимых линий и поверхностей, вычисление специфических полиномов (для поддержки аппроксимации сплайнами) и даже специальные атмосферные эффекты (дым, туман, пылевое облако).

Разумеется, не все эти функции реализуются аппаратно. В большинстве случаев аппаратной поддержки достаточно лишь для вычисления проекций и прорисовки треугольников с закраской их по шаблону, удалением невидимых поверхностей и антиалиасингом (antialiasing – сглаживание ступенчатых краев линий и геометрических фигур путем смешения цветов соседних пикселей). Производительность современных 30-акселе-раторов достигает порядка сотен тысяч таких треугольников в секунду. Существуют также варианты ускорителей с представлением поверхностей не в виде плоских треугольников, а в виде гораздо меньшего числа искривленных поверхностей, аппроксимируемых сплайнами. Часто такой способ дает определенные преимущества.

Вся информация о расположении в трехмерном пространстве объектов, сцены, наблюдателя, плоскости проектирования, источников света и т.д. поступает в плату акселератора в "сыром" виде, то есть практически без предварительной обработки центральным процессором. Большинство плат акселераторов кроме обычной дисплейной памяти имеет еще и дополнительную память для хранения этой "сырой" информации, а вместе с ней и Z-буфера, кэшпамяти шрифтов, битовых изображений и т.п. Объем дополнительной памяти может составлять несколько мегабайт.

Среди других, менее популярных интерфейсов трехмерной графики можно назвать MEGA-3D, PHIGS, Randerman и т.п. Эти стандарты не так широко распространены, и для них гораздо труднее найти соответствующие драйверы с аппаратной поддержкой 30-ак-селераторов.

Видеоускорители для систем мультимедиа

Основная задача при воспроизведении видеофильмов на дисплее компьютера – обеспечить быструю распаковку большого объема видеоинформации, записанной со сжатием в стандартах MPEG, Indeo, Cinepak и т.п., а также масштабирование изображения (увеличение) без заметного ухудшения качества картинки и без снижения частоты кадров.

Распаковку нетрудно реализовать программно, что уже сделано многими фирмами. Сегодня на рынке уже существует огромное число подобных чисто программных проигрывателей видеофильмов. Правда, качество воспроизведения сильно зависит от производительности процессора. Для получения приемлемого эффекта (30 кадров/с) необходим процессор не хуже Pentium-120.

Труднее обеспечить масштабирование изображения видеофильма на полный экран (в типичном случае окно видеофильма имеет размеры порядка 320x240 точек). Для качественного масштабирования необходимо перемещать в памяти и обрабатывать большие объемы графической информации, что требует огромных затрат процессорного времени. Если центральный процессор с программной распаковкой еще худо-бедно успевает справиться, то на масштабирование изображения мощности даже самых производительных процессоров пока не хватает. Поэтому без платы видеоакселератора здесь, скорее всего, не обойтись. К тому же, купив видеоакселератор, вы заодно сможете улучшить качество распаковки видеоинформации (на медленном процессоре), так как масштабирующие акселераторы, как правило, предоставляют еще и мощные средства аппаратной декомпрессии: преобразование YUV в RGB, растрирование (dithering) и т.п.

Для упаковки "живого видео" наиболее широкое применение находит стандарт, разработанный Ассоциацией по стандартизации движущихся изображений – MPEG (Moving Pictures Experts Group). Он позволяет сжимать информацию, содержащуюся в цифровых видеофильмах, с коэффициентом порядка 1:100.

В настоящее время существует уже две разновидности этого стандарта – MPEG-1 и MPEG-2. Первая, предварительная версия стандарта MPEG-1, была принята еще в январе 1992 года. MPEG-1 ограничивает поток сжатых данных об изображении и звуковом сопровождении до величины порядка 1,5 Мбит/с, таким образом позволяя воспроизводить видеофильмы с обычных компакт-дисков на обычной (однократной) скорости воспроизведения.

Упаковка MPEG-1 реализуется в следующей последовательности. Берутся кадры видеофильма с разрешением 352x240 или 352x288 точек (в зависимости от телевизионного стандарта, в котором записан исходный видеофильм) и сигнал звукового сопровождения, записанный с высоким качеством (стандарта CD-Audio). Затем изображение каждого кадра переводится из цветовой системы RGB (Red, Green, Blue) в систему YUV. (В данном случае непонятно, от каких слов происходит аббревиатура YUV. В телевизионном стандарте NTSC, принятом в США, Y обозначает сигнал яркости, a U и Y – цветоразностные сигналы, вычисляемые по формулам U=0,493х(B-Y) и V=0,877х(R-Y), где B и R – сигналы синего и красного цветов соответственно.) Далее для каналов U и V выполняется так называемое прореживание: берутся отсчеты только для каждого второго пикселя по горизонтали и по вертикали. В результате поток данных по этим каналам уменьшается в 4 раза (безвозвратно теряется три четверти цветовой информации). Однако при последующем просмотре видеофильма это оказывается практически незаметно (по крайней мере, для "натуральных" фильмов, то есть снятых видеокамерой). Человеческое зрение устроено так, что мы получаем гораздо больше информации по каналу яркости нежели по каналам цветности. (Поэтому, например, в телевидении для передачи цветовой информации отводится более узки частотный диапазон, чем для яркостной).

Далее. Используется похожесть нескольких последовательных кадров фильма. Для небольшой последовательности из нескольких кадров определяются так называемые векторы движения и находятся коэффициенты дискретно-косинусного преобразования (ДКП), выполняемого над блоками пикселей 16х16. Потом у коэффициентов ДКП дополнительно отбрасываются младшие биты. Для каждого из блоков 16x16 число отброшенных битов у коэффициентов ДКП может быть разным. Полученная в результате последовательность данных дополнительно сжимается по алгоритму Хаффмана, причем для сжатия используется специальная "двумерная" таблица.

 

 Звуковой поток также упаковывается путем динамического изменения его спектрального состава. Здесь опять-таки используется особенность человеческого слуха. Человек может различить два звука лишь в том случае, если они достаточно сильно различаются по амплитуде или по частоте. Если в спектре звукового сигнала присутствует сильный звук частотой 1000 Гц и одновременно с ним слабый звук частотой 1100 Гц, то последний мы практически не слышим. Поэтому при упаковке он "маскируется", то есть удаляется. В результате такой маскировки звуковые данные упаковываются приблизительно в 6 раз. И хотя сжатие происходит с потерями, заметить разницу между исходной и упакованной фонограммой очень сложно.

Стандарт MPEG-2 обеспечивает более высокое качество изображения и звука, но поток сжатых данных в этом стандарте возрастает до 3-10 Мбит/с. Окончательно MPEG-2 пока не утвержден, однако уже сейчас на рынке начинают появляться аппаратные и программные средства для воспроизведения видеофильмов этого формата.

При воспроизведении MPEG-1 все операции производятся в порядке, обратном порядку упаковки. Распаковка, как правило, сложностей не вызывает. Труднее обеспечить масштабирование полученного изображения. Для этого существует несколько технологий. Самый простой способ – это просто размножение пикселей. Каждый пиксель изображения превращается в блок 2x2 или NxN пикселей. Большой недостаток такого масштабирования – изображение получается неестественным (рябым). Чем больше коэффициент масштабирования, тем хуже качество. Схема более качественного масштабирования предполагает интерполяцию цвета пикселей, окружающих данный пиксель. В недорогих масштабирующих платах применяется интерполяция только по горизонтали (по вертикали же действует размножение пикселей). В более совершенных – интерполяция производится по обеим осям, причем в отдельных системах учитывается цвет до 64 пикселей, окружающих данный пиксель.

Стандарт MPEG требует гораздо больших вычислительных ресурсов для упаковки, нежели для paспаковки. Существующие системы упаковки MPEG в реальном времени пока малодоступны. Например, плата MPEG VIDEOPRO фирмы Optibase, производящая упаковку видеофильмов в полном соответствии стандарту MPEG-1 в реальном времени, стоит 8995 долларов. Системы упаковки в реальном времени MPEG-2 стоят еще дороже. Однако, несмотря на столь высокую цену, подобные платы пользуются спросом, так как популярность систем передачи цифровых видеофильмов "по запросу" с использованием низкоскоростных каналов (начиная от сетей ISDN и кончая спутниковыми системами связи) стремительно растет.

 


1995 | 1996 | 1997 | 1998 | 1999 | 2000 | 2001 | 2002 | 2003 | 2004 | Оглавление текущего номера /134, 1996 г./ | Бонус | Поиск  

© 2004, Издательский дом «Компьютерра» | http://www.computerra.ru
Телефон редакции: (095) 232-22-61
E-mail редакции: inform@computerra.ru