Часто бывает так, что на совершенно новых и продвинутых платформах в процессе воспроизведения аудио-файлов качество звука оставляет желать лучшего. И проблема не в частотном диапазоне выходного усилителя или акустической системы. Проблема в цифровом тракте, которую даже ребенок может сформулировать просто: «Компьютер заикается». Так ли все безнадежно для владельца? И, главное, — как устранить возможную неисправность?
Начнем с того, что искажение звука в компьютере может оказаться вовсе и не аппаратным дефектом, а результатом неудачной настройки параметров системы. В частности, его базовой системы, — BIOS.
Как изменить настройки BIOS
Давно стало традицией, что производители материнских плат при молчаливом согласии разработчиков BIOS некоторые параметры, существенно влияющие на производительность, стараются спрятать подальше от любопытных глаз юзера. Связано это с тем, что изменение таких настроек может привести к сбоям платформы и, как результат, — к дополнительной нагрузке на службы поддержки всей дистрибъюторской цепочки. Что, безусловно, скажется и на реноме фирмы-производителя, и на популярности конкретного изделия.
Но то, что не позволено быку, позволено Юпитеру. Это значит, что для технологических нужд много полезных параметров в BIOS доступны для редактирования — вопрос только в подборе подходящего инструментария. Для релиза микрокода AMIBIOS, известного под маркой Aptio, такой утилитой служит AMIBIOS Configuration Programm. Мы воспользовались одной из версий AMIBCP, применив ее к файлу прошивки для платы Supermicro X9SCL:

Наиболее важным и интересным для нас будет то, что напрямую связано с обслуживанием шины PCI Express. Таким параметром на представленном скриншоте является PCIe Maximum Read Request. Постараемся разобраться, что означает запрос на чтение в применении к логике работы PCIe-шины.
Read Request и производительность
Параметр PCIe Max Read Request, доступный в меню настроек AMIBIOS, определяет максимально допустимый размер блока данных, передаваемого за одну транзакцию. Для потоковых операций, например, при работе с видеопамятью, когда существует высокая вероятность обращения по смежным адресам, увеличение размера блока повышает производительность системы. Это происходит потому, что за одну транзакцию передается больше данных. Кроме того, накладные расходы на передачу блока большего размера уменьшаются, так как меньше рабочего времени шины уходит на передачу заголовков.
Во всех прочих случаях при передаче малоформатных и фрагментированных данных пользы от увеличения размера блока нет. Напротив, иногда даже происходит снижение быстродействия, связанное с передачей данных, которые инициатор запроса проигнорирует. Если при выполнении некоторого 3D-приложения «узким местом» является производительность видеоакселератора или центрального процессора, но не шины PCI Express, то время, сэкономленное на передаче заголовков запросов, прибавится ко времени простоя шины и приращения производительности не будет.
Таким образом, увеличение размера блока может принести максимальную пользу тогда, когда фактором, ограничивающим быстродействие, является пропускная способность шины, и мы работаем с большими и непрерывными блоками данных. Негативным эффектом от увеличения размера блока может явиться увеличение латентности при арбитраже шины и нарушение изохронности (требования гарантированной доставки данных к заранее определенному моменту времени).
Выводы
Если во время передачи блока одним устройством возник запрос от другого устройства, то удовлетворение запроса от него возможно только после завершения транзакции. Поэтому справедливо утверждение: «Чем длиннее блок, тем выше латентность». На практике это может привести к ухудшению качества воспроизведения звука при интенсивном использовании шины видеоадаптером, если видео адаптер занимает шину часто и надолго. В тех случаях, когда возникают задержки при воспроизведении звука, иногда полезно уменьшить значение параметра PCIe Max Read Request.