-
ALLGEMEINER STAND DER TECHNIK
-
Rechenvorrichtungen
sind im Begriff, sich von allgemein einsetzbaren, nicht in Echtzeit
operierenden Zahlenschiebern hin zu Echtzeitverarbeitungsvorrichtungen
zu entwickeln, die Hauptprozessoren umfassen, welche Aufgaben der
digitalen Verarbeitung ausführen.
Bei modernen Rechenvorrichtungen gestaltet eine Kombination von
Faktoren wie Cache-Speichern, verzögerter Unterbrechungsbearbeitung
und gemeinsamen Ressourcen die Verarbeitungszeit dieser Vorrichtungen
höchst
variabel und unvorhersehbar. Beispielsweise kann das erstmalige Durchlaufen
einer Programmschleife aufgrund von Cache-Füllungszyklen 10- bis 15mal
mehr Zeit in Anspruch nehmen als nachfolgende Durchlaufe derselben
Programmschleife. Eine konventionelle Verarbeitung von Strömen verlangt
jedoch typischerweise vorhersehbare und im wesentlichen nichtvariable Verarbeitungszeiten,
um Ergebnisse hoher Qualität zu
erzielen.
-
KURZE BESCHREIBUNG DER FIGUREN
-
Die
Patentschrift
US-A-5
822 317 beschreibt eine Sendevorrichtung in einer Paketübermittlungsvorrichtung,
die Datenpakete bereitstellt, wobei jedes Paket mit einem Zeitstempel
versehen wird, um eine Synchronisation des Betriebs zwischen dem
Sender und dem Empfänger
herzustellen.
-
Ein
Aspekt der Erfindung ist ein System, wie es im unabhängigen Anspruch
1 definiert ist. "Weitere
Aspekte der Erfindung sind ein Verfahren und ein maschinenlesbares
Medium, wie sie in den unabhängigen
Ansprüchen
14 bzw. 23 definiert sind. Andere Ausführungsformen der Erfindung
gehen aus den jeweils untergeordneten Ansprüchen hervor.
-
Die
hier beschriebene Erfindung ist veranschaulichend und in nicht einschränkender
Weise in den begleitenden Figuren dargestellt. Aus Gründen der
einfachen und klaren Darstellung sind in den Figuren gezeigte Elemente
nicht notwendigerweise maßstabsgetreu
dargestellt. Beispielsweise können die
Abmessungen einiger Elemente relativ zu anderen Elementen zur Verdeutlichung übertrieben
dargestellt sein. Soweit möglich,
werden Bezugszeichen in den Figuren wiederholt, um auf einander
entsprechende oder analoge Elemente hinzuweisen.
-
1 zeigt
eine Ausführungsform
einer Rechenvorrichtung, die eine Zeitstempelungsschaltung umfaßt.
-
2 zeigt
eine Ausführungsform
der Zeitstempelungsschaltung aus 1.
-
3 zeigt
eine Ausführungsform
eines Streaming-Systems, das einen Server und die Rechenvorrichtung
aus 1 umfaßt.
-
4 zeigt
eine Ausführungsform
eines Verfahrens zum Verarbeiten eines Stroms, das durch das Strömungssystem
aus 3 implementierbar ist.
-
DETAILLIERTE BESCHREIBUNG
-
Eine
Ausführungsform
einer Rechenvorrichtung 100, die eine Zeitstempelungsschaltung 102 umfaßt, ist
in 1 gezeigt. Wie dargestellt, kann die Rechenvorrichtung 100 einen
oder mehrere Prozessoren 104 umfassen. Die Prozessoren 104 können in Reaktion
auf das Ausführen
von Befehlen eines Betriebssystems 106, einer Anwendung 108,
eines Gerätetreibers 110,
einer Basis-Eingabe-/Ausgabesystem-(RIOS)-Firmware 112 und/oder
einer anderen Software oder eines anderen Firmwaremoduls Aktionen
durchführen.
-
Die
Rechenvorrichtung 100 kann ferner einen Chipsatz (Chipset) 114 umfassen,
der über
einen Prozessorbus an die Prozessoren 104 gekoppelt ist. Der
Chipsatz 114 kann ein oder mehrere integrierte Schaltkreisverkapselungen
oder Chips umfassen, die die Prozessoren 104 an andere
Bauteile der Rechenvorrichtung 100 koppeln, z.B. an einen
Speicher 116. Der Speicher 116 kann Speichervorrichtungen (nicht
dargestellt) umfassen, die adressierbare Speicherorte aufweisen,
die abgelesen und/oder beschrieben werden können. Die Speichervorrichtungen
können
eine oder mehrere Arten flüchtiger
Speicher umfassen, beispielsweise RAM-(Random Access Memory – Schreib-/Lesespeicher)-Vorrichtungen,
SRAM-(statische RAM)-Vorrichtungen, DRAM-(dynamische RAM)-Vorrichtungen, SDRAM-(synchrone
DRAM)-Vorrichtungen, DDR-(doppelte Datenrate)-SDRAM-Vorrichtungen usw.
Die Speichervorrichtungen können
ferner eine oder mehrere Arten nichtflüchtiger Speicher umfassen,
beispielsweise Flash-Speichervorrichtungen, ROM-(Read
Only Memory – Lesespeicher)-Vorrichtungen,
PROM- (programmierbare
Lesespeicher)-Vorrichtungen, EPROM-(löschbare PROM)-Vorrichtungen,
EEPROM-(elektrisch löschbare
PROM)-Vorrichtungen, ferroelektrische Speichervorrichtungen, batteriegestützte Speichervorrichtungen
usw.
-
Der
Chipsatz 114 kann die Prozessoren 104 ferner an
die BIOS-Firmware 112 koppeln. Die BIOS-Firmware kann Hilfsprogramme
umfassen, welche die Rechenvorrichtung 100 während des
Systemstarts ausführen
kann, um die Prozessoren 104, den Chipsatz 114,
und andere Bauteile der Rechenvorrichtung 100 zu initialisieren.
Außerdem
kann die BIOS-Firmware 112 Hilfsprogramme oder Treiber umfassen,
die die Rechenvorrichtung 100 ausführen kann, um mit einem oder
mehreren Bauteilen der Rechenvorrichtung 100 zu kommunizieren.
-
Der
Chipsatz 114 kann die Prozessoren 104 über einen
oder mehrere Busse 124 außerdem an eine oder mehrere
Medienvorrichtungen 118, Netzwerkschnittstellen 120,
und/oder I/O-Vorrichtungen 122 koppeln.
Die Medienvorrichtungen können
Audio-/Video-Wiedergabevorrichtungen,
Audio-/Video-Aufnahmevorrichtungen, Audio-/Video-Transportvorrichtungen usw. umfassen.
Die Netzwerkschnittstellen 120 können LAN-(lokales Netzwerk)-Steuerungen,
Modems, und/oder Funknetzwerksteuerungen umfassen, die die Rechenvorrichtung 100 mit
Kommunikationsverbindungen zu anderen Rechenvorrichtungen, Servern,
und/oder anderen netzwerkfähigen
Vorrichtungen versorgen. Ferner können die I/O-Vorrichtungen 122 Mäuse, Tastaturen,
Videosteuerungen, Festplattenlaufwerke, Diskettenlaufwerke usw.
umfassen.
-
Wie
dargestellt, können
eine oder mehrere Medienvorrichtungen 118, Netzwerkschnittstellen 120 und/oder
I/O-Vorrichtungen 122 gemeinsam einen Bus 124 nutzen.
Entsprechend kann die Rechenvorrichtung 100 ein Vermittlungssystem
umfassen, um den Zugriff auf den gemeinsamen Bus 124 zu
erteilen. In einer Ausführungsform
kann die Rechenvorrichtung 100 einen Vermittler 126 umfassen,
der Anforderungssignale oder -nachrichten von den Vorrichtungen 118, 120, 122 empfängt, die
den Bus gemeinsam nutzen, und der Zuteilungssignale oder -nachrichten
erzeugt, um einer der anfordernden Vorrichtungen 118, 120, 122 den
Zugriff auf den gemeinsamen Bus 124 oder dessen Besitz
zu erteilen. Wie dargestellt, kann der Chipsatz 114 den
Vermittler 126 für
den gemeinsamen Bus 124 aufweisen. In anderen Ausführungsformen
kann der Vermittler 126 aber auch außerhalb des Chipsatzes 114 vorgesehen sein.
Ferner kann die Rechenvorrichtung 100 ohne einen zentralen
Vermittler 126 für
den gemeinsamen Bus 124 implementiert sein. In einer solchen
Ausführungsform
können
die Vorrichtungen 118, 120, 122 Signale
erzeugen, die bewirken, daß die
Vorrichtungen 118, 120, 122 miteinander
vermitteln, um in den Besitz des gemeinsamen Busses 124 zu
gelangen.
-
Ferner
kann der Chipsatz 114 eine Unterbrechungssteuerung 127 umfassen,
um Unterbrechungsereignisse (z.B. Signale, Nachrichten) von den
Vorrichtungen 118, 120, 122 zu empfangen,
und die Unterbrechungsereignisse 104 zur Verarbeitung weiterzuleiten.
Insbesondere kann die Unterbrechungssteuerung 127 das Auftreten
von einem oder mehreren Unterbrechungsereignissen erfassen, und kann
die erfaßten
Unterbrechungsereignisse an den Prozessor 104 weiterleiten,
und zwar in einer Reihenfolge, die auf einer Priorität basiert,
die jedem der Unterbrechungsereignisse zugeordnet wird.
-
Bezugnehmend
auf 1 und 2 kann der Chipsatz 114 ferner
die Ereignis-Zeitstempelungsschaltung 102 umfassen;
allerdings kann die Zeitstempelungsschaltung in anderen Ausführungsformen
in den Vermittler 126, in die Unterbrechungssteuerung 127,
oder in ein Bauteil integriert sein, das separat von dem Chipsatz 114 vorgesehen
ist. Die Zeitstempelungsschaltung 102 kann von einem Taktgeber 128 ein
Bezugstaktsignal empfangen, und kann in Reaktion auf das Bezugstaktsignal
periodisch einen lokalen Zählwert 130 aktualisieren.
Die Zeitstempelungsschaltung 102 kann ferner Ereignisse
mit einem Zeitstempel 132 versehen, der auf dem lokalen
Zählwert 130 basiert.
Ein Anforderer (z.B. ein Prozessor 104) kann später den
Zeitstempel 132 für das
Ereignis von der Zeitstempelungsschaltung 102 anfordern,
um eine relativ genaue Angabe darüber zu erhalten, wann das Ereignis
stattgefunden hat. Indem die Zeitstempelungsschaltung 102 in
der Nähe von
Ereignisquellen (z.B. den Vorrichtungen 118, 120, 122 und
dem Vermittler 126) angeordnet wird, bringt die Zeitstempelungsschaltung 102 nur
eine geringfügige
Verzögerung
zwischen dem Zeitpunkt, an dem das Ereignis stattgefunden hat, und
dem Zeitpunkt, an dem das Ereignis erfaßt und von der Zeitstempelungsschaltung 102 mit
einem Stempel versehen wurde, ein. Je weniger Bauteile und gemeinsame
Ressourcen zwischen den Quellen der Ereignisse und der Zeitstempelungsschaltung 102 vorliegen, desto
weniger variiert zudem die eingebrachte Verzögerung zwischen einzelnen Ereignissen.
Entsprechend können
Rechenvorrichtungen 100 implementiert werden, bei denen
Prozessoren 104 sehr genaue Zeitunterschiede zwischen dem
Auftreten von zwei oder mehr Ereignissen bestimmen können.
-
Wie
in 2 gezeigt, kann die Zeitstempelungsschaltung 102 einen
Zähler 134,
eine Steuerung 136, einen Ereignisspeicher 138,
und eine Schnittstelle 140 umfassen. Der Zähler 134 kann
an den Bezugstaktgeber 128 gekoppelt sein, um ein Bezugstaktsignal
mit einer Bezugsfrequenz zu empfangen, z.B. von 27 MHz. Ferner kann
der Zähler 134 als ein
32-Bit-Überlaufzähler implementiert
sein, der seinen Zählwert 130 in
Reaktion auf jeden Zyklus des Bezugstaktsignals aktualisieren kann.
-
Die
Steuerung 136 kann von den Medienvorrichtungen 118,
den Netzwerkschnittstellen 120, I/O-Vorrichtungen 122,
und/oder dem Vermittler 126 Ereignisse wie z.B. Unterbrechungsanforderungssignale,
Unterbrechungsanforderungsnachrichten, Vermittlungserteilungssignale
usw. empfangen. Die Steuerung 136 kann ferner dazu programmiert
sein, bestimmte interessierende Ereignisse zu stempeln, und andere
Ereignisse grundsätzlich
zu ignorieren. Beispielsweise kann die Steuerung 136 dazu
programmiert oder in anderer Weise konfiguriert sein, das erste
Vermittlungserteilungssignal nach einer Unterbrechungsanforderung
von einer Audioschnittstelle der Medienvorrichtung 118 zu
stempeln. Ebenso kann eine Medienvorrichtung 118 dazu vorgesehen
sein, Unterbrechungsanforderungen an einer bestimmten Unterbrechungsleitung
(z.B. Unterbrechungssignalleitung INT_5) zu erzeugen, und die Steuerung 136 kann
dazu programmiert oder in anderer Weise konfiguriert sein, alle
Unterbrechungsanforderungen zu stempeln, die an der Unterbrechungsleitung
empfangen werden, die der Medienvorrichtung 118 zugewiesen
ist.
-
In
Reaktion auf die Erfassung eines interessierenden Ereignisses kann
die Steuerung 136 einen Zeitstempel 132 für das erfaßte Ereignis
im Ereignisspeicher 138 speichern. In einer Ausführungsform kann
die Steuerung 136 einfach den aktuellen Zählwert 130 der
Zählers 134 als
Zeitstempel 132 für
das erfaßte
Ereignis speichern. In einer anderen Ausführungsform kann die Steuerung 136 den
Zeitstempel 132 auf Basis des Zählwertes 130 des Zählers 134 erzeugen.
Beispielsweise kann die Steuerung 136 den Zeitstempel 132 erzeugen,
indem sie den Zählwert 130 derart
codiert, daß der
Zeitstempel 132 weniger Bits aufweist als der Zählwert 130,
und/oder indem sie den Zeitstempel 132 in einer Form anordnet, die
für einen
Anforderer (z.B. einen Prozessor 104) geeignet ist oder
von diesem erwartet wird.
-
In
Reaktion auf das Erfassen eines interessierenden Ereignisses kann
die Steuerung 136 ferner zusammen mit dem Zeitstempel 132 eine
Ereigniskennung 142 im Ereignisspeicher 138 speichern.
Die Ereigniskennung 142 kann eine Quelle (z.B. eine bestimmte
Medienvorrichtung) oder eine Ereignisart (z.B. Unterbrechungssignal
INT_5 oder Vermittlungserteilung GNT_1) angeben. Die Ereigniskennung 142 kann
dazu benutzt werden, den Zeitstempel 132 für ein bestimmtes
Ereignis aus dem Ereignisspeicher 138 abzurufen. In einer
Ausführungsform
kann der Ereignisspeicher 138 eine Vielzahl von Ereignissen sowie
eine Vielzahl von Ereignissen derselben Art speichern. Der Ereignisspeicher 138 kann
ferner gespeicherte Zeitstempel 132 auf Basis der Ereigniskennung 142 in
einer First-In-First-Out-(FIFO)-Reihenfolge abrufen.
-
In
einer Ausführungsform
kann der Ereignisspeicher 138 als eine einzelne, markierte
FIFO-warteschlangenartige
Struktur implementiert sein, wie in 2 gezeigt.
In einer solchen Ausführungsform kann
die Steuerung 136 beim Erfassen der Ereignisse Ereigniskennungen 142 und
diesen zugeordnete Zeitstempel 132 in das Ende 144 der
FIFO-Struktur schieben. Die Schnittstelle 140 kann später von
der FIFO-Struktur den Zeitstempel 132 einer Ereigniskennung 142 anfordern.
In Reaktion auf die Anforderung kann die FIFO-Struktur einen Zeitstempel 132 mit
der zugeordneten Ereigniskennung 142 an die Schnittstelle 140 bereitstellen.
Wenn die FIFO-Struktur eine Vielzahl von Zeitstempeln 132 mit
zugeordneter Ereigniskennung 142 aufweist, gibt die FIFO-Struktur
denjenigen Zeitstempel aus, der sich am nächsten zum Kopf der FIFO-Struktur
befindet.
-
Beispielsweise
zeigt 2 die FIFO-Struktur, nachdem die Steuerung 136 mehrere
Ereignisse mit den Ereigniskennungen 142 EID_0, EID_2 und EID_5
und den ihnen zugeordneten Zeitstempeln 132 in das Ende 144 der
FIFO-Struktur geschoben hat. In Reaktion auf eine Anforderung des
Zeitstempels 132, der der Ereigniskennung EID_0 zugeordnet ist,
kann die FIFO-Struktur
den Zeitstempel TS_0 ausgeben, der der ältesten Ereigniskennung EID_0 zugeordnet
ist, indem sie den Zeitstempel TS_0 ausgibt, der dem Kopf 146 der
FIFO-Struktur am nächsten
ist. Ebenso kann die FIFO-Struktur in Reaktion auf eine Anforderung
des Zeitstempels 132, der der Ereigniskennung EID_5 zugeordnet
ist, den Zeitstempel TS_5 ausgeben, der der ältesten Ereigniskennung EID_0
zugeordnet ist, indem sie den Zeitstempel TS_5 ausgibt, der dem
Kopf 146 der FIFO-Struktur am nächsten ist.
-
Der
Ereignisspeicher 138 ist jedoch auch unter Benutzung anderer
Speicherstrukturen implementierbar. Beispielsweise kann der Ereignisspeicher 138 eine
separate FIFO-Struktur für
jede unterstützte
Ereignisart/-quelle umfassen, und die Steuerung 136 kann
Zeitstempel 132 in die passende FIFO-Struktur schieben.
In einer solchen Ausführungsform
ist es möglich,
daß Ereigniskennungen 142 nicht
im Ereignisspeicher 138 gespeichert werden, da die Zeitstempel 132 einfach
von dem Kopf 146 der passenden FIFO-Struktur abgezogen
werden können.
Man wird auch verstehen, daß die FIFO-Strukturen
auf unterschiedliche Weise implementierbar sind. Beispielsweise
können
die FIFO-Strukturen als Ringpuffer mit Kopf- und Endzeigern implementiert
sein, um den Kopf 146 und das Ende 144 jeder FIFO-Struktur
zu verfolgen.
-
Bezugnehmend
auf 3 zeigt diese eine Ausführungsform eines Streaming-Systems 148.
Wie dargestellt, kann das Streaming-System 148 einen Server 150 zum Übertragen
von Strömen 152 wie z.B.
Audio-Strömen,
Video-Strömen,
Audio-/Videoströmen,
Datenströmen
usw. über
ein Netzwerk 154 an die Rechenvorrichtung 100 umfassen.
Wie dargestellt, kann der Server 150 einen Programmtaktgeber 156 umfassen,
der ein Programmtaktsignal mit einer Programmtaktrate (PTR) erzeugt.
In Reaktion auf das Programmtaktsignal kann der Server 150 den Strom 152 mit
der PTR des Programmtaktgebers 156 übertragen. In einer Ausführungsform
kann der Server 150 den Strom 152 als eine Sequenz
von Datenblöcken 158 mit
eingefügten
PTR-Stempeln 160 übertragen,
die von dem Programmtaktgeber 156 erzeugt werden. Die PTR-Stempel 160 stellen
allgemein eine Bezugszeitbasis zum Wiedergeben oder Verarbeiten
des Stroms 152 bereit.
-
Der
oder die Prozessoren 104 der Rechenvorrichtung 100 können die
Datenblöcke 158 des empfangenen
Stroms 152 so vorbereiten, daß die Datenblöcke 158 in
ein Format gebracht werden, das zum Verarbeiten durch eine Medienvorrichtung 118 geeignet
ist. Die Prozessoren 104 können dann veranlassen, daß die vorbereiteten
Datenblöcke 158 zur Verarbeitung
an eine Medienvorrichtung 118 (z.B. einen Audio-Codec) übertragen
werden. Die Medienvorrichtung 118 kann die Datenblöcke 158 in
Audio-Samples und/oder Videovollbilder umwandeln, und/oder die Audio-Samples
und/oder Videovollbilder mit einer Verarbeitungsrate wiedergeben und/oder
verarbeiten, die auf dem Bezugstaktgeber 128 der Rechenvorrichtung 100 basiert.
-
Idealerweise
stimmen die Frequenz des Bezugstaktgebers 128 und die Frequenz
des Programmtaktgebers 156 überein. In diesem Fall kann die
Medienvorrichtung 118 in Synchronisation mit dem Server 150 bleiben,
indem sie einfach die Datenblöcke 158 mit
einer Verarbeitungsrate verarbeitet, die durch den Bezugstaktgeber 128 eingestellt wird.
In der Praxis stimmen jedoch die Frequenz des Bezugstaktgebers 128 und
die Frequenz des Programmtaktgebers 156 nicht genau überein.
Solange also keine korrigierende Maßnahme ergriffen wird, kommt
es wahrscheinlich zu einem Überlauf-
oder Unterlaufzustand, sodaß beim
Wiedergeben oder Verarbeiten des Stroms 152 Artefakte entstehen.
Insbesondere für
den Fall, daß der
Programmtaktgeber 156 schneller ist als der Bezugstaktgeber 128, kommt
es wahrscheinlich zu einem Überlauf
der Puffer der Rechenvorrichtung 100, da die Datenblöcke 158 mit
einer höheren
Rate empfangen werden, als sie verarbeitet werden. Wenn der Programmtaktgeber 156 langsamer
ist als der Bezugstaktgeber 128, kommt es ebenso wahrscheinlich
zu einem Unterlauf von einem oder mehreren Puffer der Rechenvorrichtung 100,
da die Datenblöcke 158 mit
einer geringeren Rate empfangen werden, als sie verarbeitet werden.
-
In
einer Ausführungsform
kann die Medienvorrichtung 118 jedesmal dann ein Unterbrechungssignal
erzeugen, wenn die Medienvorrichtung 118 bereit ist, weitere
Datenblöcke 158 zum
Verarbeiten zu empfangen. In einer solchen Ausführungsform können die
Unterbrechungssignale die tatsächliche Verarbeitungsrate
der Medienvorrichtung 118 genau reflektieren. Wenn also
der Prozessor 104 die Zeitpunkte, an denen diese Unterbrechungssignale
erzeugt werden, präzise
bestimmen kann, kann der Prozessor 104 die tatsächliche
Verarbeitungsrate der Medienvorrichtung 118 präzise bestimmen.
Um es dem Prozessor 104 zu ermöglichen, die Zeitpunkte dieser
Unterbrechungssignale präzise
zu bestimmen, kann die Zeitstempelungsschaltung 102 diese Unterbrechungssignale
erfassen und mit einem Stempel versehen, ohne daß es zu einer nennenswerten
Latenz und/oder Latenzabweichung zwischen dem Auftreten des Ereignisses
und dem Stempeln des Ereignisses kommt.
-
In
einer anderen Ausführungsform
kann der Vermittler 126 jedesmal dann, wenn Datenblöcke 158 zum
Verarbeiten an die Medienvorrichtung 118 übertragen
werden, ein Erteilungssignal erzeugen, das der Medienvorrichtung 118 Zugriff
auf den Bus 124 erteilt. Wieder kann der Prozessor 104 die
tatsächliche
Verarbeitungsrate der Medienvorrichtung 118 präzise bestimmen,
wenn der Prozessor 104 die Zeitpunkte präzise bestimmen
kann, an denen solche Erteilungssignale erzeugt werden. Um es dem Prozessor 104 zu
ermöglichen,
die Zeitpunkte dieser Erteilungssignale präzise zu bestimmen, kann die Zeitstempelungsschaltung 102 diese
Erteilungssignale erfassen und mit einem Stempel versehen, ohne daß es zu
einer nennenswerten Latenz und/oder Latenzabweichung zwischen dem
Erzeugen des erfaßten
Erteilungssignals und dem Stempeln des erfaßten Erteilungssignals kommt.
Man wird jedoch verstehen, daß andere
Ereignisse ebenfalls die Verarbeitungsrate der Medienvorrichtung 118 präzise reflektieren
können.
Deshalb kann die Zeitstempelungsschaltung 102 dazu konfiguriert
sein, diese anderen Ereignisse mit einem Stempel zu versehen, sodaß die Zeitpunkte
des Auftretens dieser Ereignisse präzise bestimmbar sind.
-
Eine
Ausführungsform
eines Stromverarbeitungsverfahrens ist in 4 gezeigt.
Eine Anwendung 108, wie z.B. eine MP3-(MPEG-Audioschicht-3)-Wiedergabevorrichtung
oder eine QuickTimeTM-Filmwiedergabevorrichtung
kann in Block 200 einen Strom 152 von dem Server 150 anfordern.
In Block 202 kann der Server 150 den angeforderten Strom 152 mit
PTR-Stempeln 160,
die auf dem Programmtaktgeber 156 des Servers 150 basieren,
an die Anwendung 108 übertragen.
In Block 104 kann die Anwendung 108 die Datenblöcke 158 des
empfangenen Stroms 152 vorbereiten, und kann eine Medienvorrichtung 118 anweisen,
die vorbereiteten Datenblöcke 158 zu
verarbeiten. In einer Ausführungsform
kann die Anwendung 108 die Transportschicht-Anfangskennsätze des
Stroms 152 entfernen, und kann die Datenblöcke 158 des
Stroms 152 in dem Speicher 116 speichern. Ferner
kann die Anwendung 108 die Medienvorrichtung 118 anweisen, die
im Speicher 116 gespeicherten Datenblöcke 158 wiederzugeben.
-
In
Reaktion darauf, daß die
Anwendung 108 die Medienvorrichtung 118 anweist,
einen oder mehrere Datenblöcke 158 zu
verarbeiten, kann in Block 206 ein Vorrichtungstreiber 110 für die Medienvorrichtung 118 die
Medienvorrichtung 118 zum Verarbeiten des Stroms 152 konfigurieren,
und kann die Zeitstempelungsschaltung 102 zum Stempeln
von Ereignissen konfigurieren, die die Verarbeitungsrate der Medienvorrichtung 118 angeben.
In einer Ausführungsform
kann der Vorrichtungstreiber 110 die Zeitstempelungsschaltung 102 dazu
programmieren, Unterbrechungssignale mit einem Stempel zu versehen,
die von der Medienvorrichtung 118 erzeugt werden, wenn
die Medienvorrichtung 118 bereit ist, mehr Datenblöcke 158 zu
verarbeiten. In einer anderen Ausführungsform kann der Vorrichtungstreiber 110 die
Zeitstempelungsschaltung 102 dazu programmieren, Erteilungssignale
mit einem Stempel zu versehen, die von dem Vermittler 126 erzeugt
werden, bevor Datenblöcke 158 über den
gemeinsamen Bus 124 an die Medienvorrichtung 118 übertragen
werden.
-
Die
Medienvorrichtung 118 kann in Block 208 ein Unterbrechungsereignis
(z.B. ein Unterbrechungssignal INT_5) erzeugen, wenn die Medienvorrichtung 118 bereit
ist, einen oder mehrere Datenblöcke 158 des
Stroms 152 zu empfangen. Die Steuerung 136 der
Zeitstempelungsschaltung 102 kann in Block 210 bestimmen,
ob das erfaßte
Unterbrechungsereignis ein interessierendes Ereignis ist, für dessen
Stempelung die Steuerung 136 programmiert ist. In Reaktion
auf die Bestimmung, das Unterbrechungsereignis mit einem Zeitstempel
zu versehen, kann die Steuerung 136 im Ereignisspeicher 138 einen
Zeitstempel 132 und eine Ereigniskennung 142 für das Ereignis
speichern (Block 212).
-
In
Reaktion auf das Unterbrechungsereignis kann der Vorrichtungstreiber 110 für die Medienvorrichtung 118 in
Block 214 von der Zeitstempelungsschaltung 102 einen
Zeitstempel 132 für
ein Ereignis anfordern, das die Verarbeitungsrate der Medienvorrichtung 118 angibt.
In einer Ausführungsform
kann der Vorrichtungstreiber 110 die Schnittstelle 140 mit einer
Ereigniskennung 142 für
ein solches Ereignis (z.B. ein Unterbrechungssignal und/oder ein
Vermittlungssignal) versorgen. Die Zeitstempelungsschaltung 102 kann
den Vorrichtungstreiber 110 in Block 216 auf Basis
der empfangenen Ereigniskennung 142 mit einem Zeitstempel
aus ihrem Ereignisspeicher 138 versorgen.
-
In
Block 218 kann der Vorrichtungstreiber 110 auf
Basis des empfangenen Zeitstempels 132 die Verarbeitungsrate
der Medienvorrichtung 118 bestimmen, und kann auf Basis
der PTR-Stempel 160 des Stroms 152 die PTR des
Stroms 152 bestimmen. In einer Ausführungsform kann der Vorrichtungstreiber 110 auf
Basis des empfangenen Zeitstempels 132 und eines oder mehrerer
zuvor empfangener Zeitstempel 132 eine Verarbeitungsrate
bestimmen. Ebenso kann der Vorrichtungstreiber 110 auf
Basis eines PTR-Stempels und eines oder mehrerer zuvor empfangener
PTR-Stempel 160 eine PTR bestimmen. Beispielsweise kann
der Vorrichtungstreiber 110 eine Differenz zwischen dem
aktuellen Zeitstempel 132 und einem zuvor empfangenen Zeitstempel 132 bestimmen,
und kann eine bestimmte Verarbeitungsrate auf Basis der ermittelten
Differenz aktualisieren. Ebenso kann der Vorrichtungstreiber 110 eine Differenz
zwischen einem aktuellen PTR-Stempel 160 und einem zuvor
empfangenen PTR-Stempel 160 bestimmen, und kann eine bestimmte
PTR auf Basis der ermittelten Differenz aktualisieren.
-
In
Block 220 kann der Vorrichtungstreiber 110 die
Verarbeitungsrate der Medienvorrichtung 118 auf Basis der
bestimmten Verarbeitungsrate und PTR anpassen. In einer Ausführungsform
kann der Vorrichtungstreiber 110 die Frequenz des Bezugstaktgebers 128 anpassen,
und/oder kann die Medienvorrichtung 118 neu konfigurieren,
um ihre Verarbeitungsrate im Verhältnis zu der Frequenz des Bezugstaktgebers 128 anzupassen.
In einer anderen Ausführungsform
können
der Vorrichtungstreiber 110 und/oder die Anwendung 108 einen
oder mehrere Datenblöcke 158 des
Stroms 152 erneut abtasten, um die PTR der erneut abgetasteten
Datenblöcke 158 im
wesentlichen in Übereinstimmung
mit der Verarbeitungsrate der Medienvorrichtung 118 zu
bringen. Beispielsweise können
der Vorrichtungstreiber 110 und/oder die Anwendung 108 einen
oder mehrere Datenblöcke 158 aufwärts abtasten,
wenn die Verarbeitungsrate der Medienvorrichtung 118 höher ist als
die PTR des Stroms 152. Ebenso können der Vorrichtungstreiber 110 und/oder
die Anwendung 108 einen oder mehrere Datenblöcke 158 abwärts abtasten,
wenn die Verarbeitungsrate der Medienvorrichtung 118 niedriger
ist als die PTR des Stroms 152.
-
In
Block 222 kann der Vorrichtungstreiber 110 den
Chipsatz 114 und/oder die Medienvorrichtung 118 dazu
veranlassen, Datenblöcke 158 aus dem
Speicher 116 zu übertragen.
In einer Ausführungsform
kann der Vorrichtungstreiber 110 eine DMA-(Direct Memory
Access – Direktspeicherzugriff)-Maschine
des Chipsatzes 114 oder der Medienvorrichtung 118 dazu
veranlassen, Datenblöcke 158 aus
dem Speicher 116 zur Verarbeitung an die Medienvorrichtung 118 zu übertragen.
In Block 224 können
der Chipsatz 114 und/oder die Medienvorrichtung 118 den
Besitz des gemeinsamen Busses 124 für die Medienvorrichtung 118 anfordern,
und die Vermittlung 126 224 kann dem Anforderer 114, 118 den Besitz
des gemeinsamen Busses 124 erteilen. Die Steuerung 136 der
Zeitstempelungsschaltung 102 kann in Block 226 bestimmen,
ob das Erteilungsereignis mit einem Zeitstempel zu versehen ist.
In einer Ausführungsform
kann die Steuerung 136 bestimmen, ob das erfaßte Erteilungsereignis
ein interessierendes Ereignis ist, für dessen Zeitstempelung die
Steuerung 136 programmiert ist. In Reaktion auf die Bestimmung,
das Erteilungsereignis mit einem Zeitstempel zu versehen, kann die
Steuerung 136 einen Zeitstempel 132 und eine Ereigniskennung 142 für das Ereignis
im Ereignisspeicher 138 speichern (Block 228).
-
Die
Medienvorrichtung 118 kann in Block 230 die Datenblöcke 158 empfangen,
und kann die Datenblöcke 158 mit
einer Verarbeitungsrate verarbeiten, die von dem Bezugstaktgeber 128 gesteuert wird.
Insbesondere kann die Medienvorrichtung 118 Audio-Samples
und/oder Videovollbilder aus den Datenblöcken 158 erzeugen,
und kann die Audio-Samples und/oder Videovollbilder mit einer Rate
abspielen, die von dem Bezugstaktgeber 128 vorgegeben wird. In
Block 232 kann die Medienvorrichtung 118 bestimmen,
ob sie die Verarbeitung des Stroms 152 abgeschlossen hat.
Wenn die Medienvorrichtung 118 bestimmt, weitere Datenblöcke 158 des
Stroms 152 zu verarbeiten, kann die Medienvorrichtung 118 zu Block 208 zurückkehren,
um ein Unterbrechungssignal zu erzeugen, das angibt, daß die Medienvorrichtung 118 bereit
ist, weitere Datenblöcke 158 zu
empfangen. Anderenfalls kann die Medienvorrichtung 118 das
Verarbeiten des Stroms 152 einstellen.