VGA убивает аудио

Уже достаточно давно статья с подобным заголовком "украшает" собой сервер известной компании Zefiro Acoustics, специализирующейся на производстве плат для хард-диск рекординга. Давно - означает с конца 1996 года, а тот факт, что она находится там и сейчас, доказывает лишь то, что за это время мало что изменилось: проблема как была, так и осталась.

Статья написана Грегом Хансеном (Greg Hanssen - hanssen@zefiro.com) и посвящена весьма щекотливой теме сосуществования видеоакселераторов и звуковых плат. Сегодня, когда звуковая плата уже является не экзотической диковинкой, а стандартным элементом компьютера, любые сложности с обеспечением ее нормального функционирования касаются очень большого количества людей. С другой стороны, в эпоху тотального промывания мозгов при помощи рекламы такие вещи, как откровенное признание собственных недоработок и последующее их устранение, вовсе не являются обязательными для всех. Думается, во многом именно поэтому проблемы, описанные в статье Грега Хансена, можно обнаружить практически на любом компьютере, имеющем в своем составе звуковую плату (мой - не исключение). В этой связи я посчитал уместным после небольшой преамбулы изложить основное содержание указанной статьи с сохранением по мере возможности ее оригинальной стилистики:

"Очень многие производители видеоакселераторов в погоне за рекордными очками при прохождении тестов (в частности, Ziff-Davis' Winbench) прибегают к недозволенным приемам, главным из которых является "запирание" шины PCI. Этот трюк, как правило, хорошо срабатывает, так как большинство подсистем PC (в т.ч. жесткие диски) его даже не замечает. К сожалению, это не относится к аудиосистемам, которым "запирание" шины PCI просто противопоказано.

Подавляющее большинство звуковых плат используют ISA/DMA для передачи данных через шину со скоростью одно слово за раз. Даже PCI платы, такие как AMIII, подвержены влиянию данной проблемы, поскольку осуществляют передачу данных через шину с наименьшей возможной для PCI скоростью. Когда же любое другое устройство незаконно "запирает" шину на время, превышающее 1/88200-тысячную секунды, появляется "неплохая" возможность того, что аудиоданные в процессе записи либо воспроизведения подвергнуться искажениям.

Как вы можете узнать, есть ли у вашей системы подобная проблема? Откройте свою любимую программу редактирования wave-данных (не максимизируя изображение на весь экран), загрузите wave-файл и щелкните кнопку воспроизведения. Во время воспроизведения файла щелкните мышкой по верхней части окошка вашего редактора, и, не отпуская кнопки, попробуйте перетаскивать окно с места на место по поверхности рабочего стола. Если вы владелец звуковой платы, совместимой с саундбластером, то услышите треск и щелчки, если же у вас плата ZA-2 [звуковая плата, выпускаемая Zefiro Acoustics], то с вероятностью 50/50 после треска и щелчков ваши левый и правый каналы поменяются местами. В случае наличия ADB-платы [компания ADBDIGITAL выпускает семейство плат "Multi!Wav", куда входят Digital PRO18 и PRO Analog 24, обеспечивающие возможность соответственно цифрового и аналогового ввода/вывода звука с разрядностью 24-бит] возможен не только однократный реверс каналов, но есть вероятность того, что треск не исчезнет и после прекращения перетаскивания вами окошка wave-редактора, каналы станут "прыгать" непрерывно, в результате чего появится высокочастотный "царапающий" шум.

 

Здесь я [здесь и далее имеется в виду Грег Хансен — В.М.] хочу особо подчеркнуть, что все это происходит НЕ по вине звуковой карты. Более того, это даже не вина непосредственно видеоакселератора… на самом деле виноват во всем VGA-драйвер. Если вы в процессе описанных выше опытов не услышали никаких искажений звучания, тогда, наверное, вы можете проигнорировать все, что будет сказано далее! Кроме того, я слышал, что VGA-драйверы, поставляемые Microsoft и являющиеся аналогами оригинальных драйверов производителей видеоакселераторов, не подвержены этой проблеме.

Я думаю, что Matrox была первой компанией, которая пошла по этой скользкой дорожке, но сейчас уже не важно, кто был первым, т.к. практически все высокопроизводительные видеоакселераторы, рассчитанные на шину PCI, работают так же. Как известно, когда необходимо осуществить какие-либо графические операции, соответствующие команды посылаются VGA-драйвером к VGA-плате через шину PCI. VGA-чипсет имеет встроенный буфер, способный вместить несколько таких команд одновременно, в котором они располагаются в порядке очередности их поступления. В обычных условиях драйвер проверяет бит статуса буфера команд VGA-платы на предмет установления факта: полон он или нет. Если буфер полон, то драйвер ждет, пока освободится место, и лишь затем посылает новую команду. В свое время Matrox обнаружила (а вскоре и другие производители видеоакселераторов взяли данное открытие на вооружение), что можно увеличить VGA-производительность, если НЕ ПРОВЕРЯТЬ бит статуса буфера команд!!! Что происходит, если команды вслепую записываются в переполненный буфер VGA-платы? Совершенно верно, шина "виснет"В Bus master уже начинает PCI-транзакцию, но цель (VGA-плата) еще не может принять данные, поскольку не имеет места для их размещения. Как только в буфере команд VGA-платы освобождается место для следующей команды, транзакция продолжается, но до тех пор шина остается полностью заблокированной. Никаких других PCI или ISA транзакций в это время осуществлено быть не может. Блокировка может продолжаться в течение достаточно большого времени (40 или даже более аудиоциклов), если текущая VGA-операция представляет собой, например, огромный BITBLT на 24-битный экран.

Единственным приемлемым решением в данной ситуации является возобновление VGA-драйвером проверки статуса буфера команд VGA-платы. Я обсуждал эту проблему с рядом инженеров Matrox и Tseng Labs и они предложили способы ее устранения.

Tseng Labs выпустила новую версию своего ЕТ6000 VGA-драйвера, который ведет себя по отношению к PCI достаточно корректно. Этот драйвер также подходит к изделиям STB и Hercules, использующим чип ЕТ6000. На BBS Hercules (но почему-то не на web-страничке этой компании) есть новый драйвер DV95112 (Version 1.12) для платы Hercules Dynamite 128. При использовании этого драйвера для решения ваших аудио проблем придется добавить кое-что в файл system.ini. После заголовка [Hercules] там следует строка "Optimization=0". Все, что вам нужно, так это заменить ноль на единицу, т.е. поставить "Optimization=1".

В свою очередь Matrox ВСЕГДА оставляет потайную дверцу, позволяющую возобновить проверку статуса буфера команд. Если вы используете Matrox Millennium, то для решения этого вопроса следует также внести некоторые коррективы в system.ini:

[mga.drv]

PCIChipset=1

Этот шаг практически полностью устраняет вышеизложенную проблему, но совсем не лишним будет деактивировать режим "Use PowerGDI acceleration" в Advanced Matrox setup (Control Panel > Display Properties > MGA Settings > Advanced > Performance).

Также я слышал от хороших парней из S3, что все драйвера для всех их VGA-плат (www.s3.com) позволяют возобновить проверку статуса буфера команд путем добавления в раздел [display] system.ini строки "bus-throttle=1":

[display]

bus-throttle=1

[Грег Хансен также уверяет, что можно обойтись и без тире, т.е. достаточно написать BusThrottle=1]

Владельцы Matrox Mystique в свою очередь должны, щелкнув правой кнопкой мыши по главному окну, обратиться к свойствам экрана, далее выбрать установки и щелкнуть кнопку PowerDesk. После этого следует убрать "Use Bus Mastering" и "Use Automatic PCI Bus retries", а на компьютерах с Pentium Pro - "Use Write-Combining". Остается только нажать OK и ждать, что из этого что-нибудь получится.

К сожалению, существуют и такие производители видеоакселераторов (ATI, Number 9...), которые не признают наличия данной проблемы. Очевидно, они считают, что пользователи должны либо отключать VGA-акселерацию, либо уменьшать размеры экрана и глубину цвета. Это абсолютно неприемлемые решения!"

В заключение хотелось бы добавить несколько слов и от себя лично. Для меня проблема мирного сосуществования high end'овых аудиоплат и высокопроизводительного видеоакселератора стоит остро и уже достаточно давно. Поэтому я не особо удивился, когда, проделав все процедуры описанные Грегом Хансеном, услышал вышеупомянутые "треск и щелканье". Думается, что в своих бедах я не одинок, т.к. мощные видеоакселераторы, работающие с шиной PCI, сегодня имеются едва ли не в каждом более или менее современном компьютере. Так что тем, кто действительно нуждается в качественном звуке, стоит хорошенько подумать, прежде чем остановить свой выбор на той или иной плате. С другой стороны, если ваша аудиофилия не распространяется дальше прослушивания компакт-дисков и звукового сопровождения компьютерных игр, то после прочтения данной статьи не следует слишком волноваться: едва ли вы когда-нибудь вообще заметите наличие подобного рода недостатков.

Виктор МОРОЗОВ

При подготовке материала были использованы данные Zefiro Acoustics

Версия для печатиВерсия для печати

Номер: 

42 за 1997 год

Рубрика: 

Hardware
Заметили ошибку? Выделите ее мышкой и нажмите Ctrl+Enter!