Регистры положения настенных часов и ссылок

Контроллер HD Audio содержит 32-разрядный регистр счетчика настенных часов, который увеличивается на битовую частоту HD Audio Link и переворачивается примерно каждые 89 секунд. Программное обеспечение использует этот счетчик для синхронизации между двумя или более устройствами контроллера путем измерения относительного смещения между аппаратными часами устройств.

Кроме того, контроллер HD Audio содержит набор регистров положения канала. Каждый модуль DMA имеет регистр положения ссылки, который указывает текущую позицию чтения или записи данных, передаваемых обработчиком через канал HD Audio. Регистр позиций выражает текущую позицию в виде смещения в байтах от начала циклического буфера:

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

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

Смещение циклического буфера — это просто смещение в байтах текущей позиции чтения или записи от начала циклического буфера. По достижении конца буфера позиция переносится в начало буфера, и циклическое смещение буфера сбрасывается до нуля. Циклический буфер находится в системной памяти. Дополнительные сведения см. в спецификации Intel High Definition Audio на веб-сайте Intel HD Audio .

Драйвер функции в режиме ядра может считывать настенные часы и регистры положения канала напрямую. Чтобы включить прямой доступ, драйвер шины HD Audio сопоставляет физическую память, содержащую регистры, в виртуальную память системы. Драйвер функции вызывает подпрограмму GetWallClockRegister или GetLinkPositionRegister , чтобы получить указатель системного виртуального адреса на регистр настенных часов или регистр положения ссылки. Эти две процедуры доступны в обеих версиях HD Audio DDI.

Аппаратное обеспечение контроллера HD Audio отражает настенные часы и регистры положения канала на страницах памяти, которые не содержат никаких других регистров в контроллере. Таким образом, если драйвер функции сопоставляет зеркальные настенные часы или регистры положения с пользовательским режимом, никакие программы пользовательского режима не смогут получить доступ к другим регистрам контроллера. Драйвер никогда не позволяет программе пользовательского режима касаться этих других регистров и программировать оборудование.

Зеркальное отображение регистра должно соответствовать размеру страницы процессора узла. В зависимости от архитектуры процессора узла типичный размер страницы может составлять 4096 или 8 192 байта.