Freigeben über


Register für Wanduhr und Verknüpfungsposition

Der HD-Audiocontroller enthält einen 32-Bit-Wanduhrzähler, der bei der Bit-Taktrate des HD-Audiolinks erhöht und ungefähr alle 89 Sekunden überrollt. Software verwendet diesen Zähler, um zwischen zwei oder mehr Controllergeräten zu synchronisieren, indem die relative Drift zwischen den Hardwareuhren der Geräte gemessen wird.

Darüber hinaus enthält der HD-Audiocontroller eine Reihe von Linkpositionsregistern. Jedes DMA-Modul verfügt über ein Linkpositionsregister, das die aktuelle Lese- oder Schreibposition der Daten angibt, die das Modul über den HD-Audiolink überträgt. Das Positionsregister drückt die aktuelle Position als Byteoffset vom Anfang des zyklischen Puffers aus:

  • In einem Renderdatenstrom gibt das Linkpositionsregister den zyklischen Pufferoffset des nächsten Byte an, den das DMA-Modul über die Verknüpfung mit dem Codec sendet.

  • In einem Aufnahmedatenstrom gibt das Link-Positionsregister das zyklische Pufferoffset des nächsten Bytes an, den die DMA-Engine vom Codec über die Verbindung empfängt.

Der zyklische Pufferoffset ist einfach der Offset in Byte der aktuellen Lese- oder Schreibposition vom Anfang des zyklischen Puffers. Beim Erreichen des Endes des Puffers wird die Position auf den Beginn des Puffers zurückgesetzt, und der zyklische Pufferversatz wird auf Null zurückgesetzt. Der zyklische Puffer befindet sich im Systemspeicher. Weitere Informationen finden Sie in der Intel High Definition Audio Specification auf der Intel HD Audio-Website .

Ein Kernelmodus-Funktionstreiber kann die Echtzeituhr und die Positionsregister direkt lesen. Um den direkten Zugriff zu ermöglichen, ordnet der HD-Audiobustreiber den physischen Speicher, der die Register enthält, dem virtuellen Systemspeicher zu. Der Funktionstreiber ruft die GetWallClockRegister - oder GetLinkPositionRegister-Routine auf, um einen virtuellen Systemadresszeiger auf das Wanduhrregister oder ein Linkpositionsregister abzurufen. Diese beiden Routinen sind in beiden Versionen des HD Audio DDI verfügbar.

Die Hardware des HD-Audiocontrollers spiegelt die Wanduhr und die Verknüpfungsposition in Speicherseiten, die keines der anderen Register im Controller enthalten. Wenn der Funktionstreiber also die gespiegelte Wanduhr oder Position dem Benutzermodus zuordnet, können keine Benutzermodusprogramme auf die anderen Register des Controllers zugreifen. Der Treiber ermöglicht es einem Benutzermodusprogramm niemals, diese anderen Register zu berühren und die Hardware zu programmieren.

Die Registerspiegelung muss die Seitengröße des Hostprozessors berücksichtigen. Je nach Hostprozessorarchitektur kann eine typische Seitengröße 4.096 oder 8.192 Bytes betragen.