-
Die
vorliegende Erfindung betrifft einen Arbiter und ein Verfahren zur
Arbitrierung und insbesondere, aber nicht ausschließlich, einen
Arbiter für
Anfragen zum Erhalten eines Speicherzugriffs.
-
Es
sind Hardware-Speicher-Arbiter von verschiedenen unterschiedlichen
Arten bekannt. Die einfachste Art ist ein festes Prioritätssystem.
In diesem System wird jeder Vorrichtung, die einen Zugriff auf den
Speicher anfragt, eine Priorität
zugewiesen. Die Vorrichtung, die die höchste zugewiesene Priorität besitzt
und die den Zugriff anfragt, wird immer den Zugriff auf dem Speicher
gewinnen. Während
feste-Priorität-Arbiter
sicherstellen, daß immer
bekannt ist, welche Vorrichtung den Zugriff zu dem Speicher gewinnt,
kann das zu einer Vorrichtung mit einer niedrigen Priorität führen, die
von einem Zugriff auf dem Speicher ausgehungert wird. Mit anderen
Worten, können
unter bestimmten Umständen
Niedrig-Prioritäts-Vorrichtungen
von einem Zugriff auf dem Speicher abgehalten werden. Allerdings
erlaubt dieses Schema denjenigen Vorrichtungen, welche häufig Zugriff
auf den Speicher anfragen, einen größeren Anteil an den verfügbaren Zugriffen
zu haben.
-
Eine
zweite Art eines Speicher-Arbiters ist eine rotierende Priorität oder ein
Wettkampf-Arbiter. Dies ist in 1 veranschaulicht.
A, B, C und D stellen Vorrichtungen dar, die Zugriff auf den Speicher
anfragen. Die Vorrichtung mit der aktuell höchsten Priorität ist an
der Spitze der Liste, während
die Vorrichtung mit der aktuell niedrigsten Priorität sich an
dem unteren Ende der Vorrichtung befindet. Ein X neben der Vorrichtung zeigt
an, daß diese
Vorrichtung Zugriff auf den Speicher anfragt. Anfangs, da die Vorrichtung
A die höchste Priorität besitzt
und den Zugriff zu dem Speicher anfragt, wird der Zugriff zum Speicher
erteilt. Dies ist in 1a veranschaulicht.
-
Danach,
wie in 1b veranschaulicht, wird Vorrichtung
A die niedrigste Priorität
zugewiesen und Vorrichtung B hat jetzt die höchste Priorität. Da Vorrichtung
B Zugriff auf den Speicher anfragt, und sie die höchste Priorität hat, wird
der Zugriff zu dem Speicher erteilt. Danach, wie in 1c gezeigt,
wird Vorrichtung B die niedrigste Priorität gegeben und die Vorrichtung
C hat jetzt die höchste
Priorität.
Da Vorrichtung C Zugriff auf den Speicher angefragt hat, gewinnt
sie den Zugriff auf den Speicher.
-
Gleichermaßen besitzt
Vorrichtung B, in 1d, die höchste Priorität und hat
Zugriff auf den Speicher angefragt und gewinnt folglich den Zugriff
auf den Speicher. Vorrichtung C hat die niedrigste Priorität.
-
Allerdings
hat Vorrichtung A, in 1e, die höchste Priorität, obwohl
sie nicht den Zugriff auf den Speicher angefragt hat. Dementsprechend
gewinnt die Vorrichtung, die die höchste Priorität besitzt
und welche den Zugriff auf den Speicher angefragt hat. Im Falle
von 1e ist das die Vorrichtung B.
-
Vorrichtung
B wird dann die niedrigste Priorität zugewiesen, aber Vorrichtung
A behält
ihre höchste
Priorität.
Dies ist in 1f gezeigt. Allerdings ist die
Vorrichtung C die Vorrichtung mit der höchsten Priorität, die den
Zugriff anfragt, und folglich die Arbitrierung gewinnt.
-
Dieses
System hat den Vorteil, daß über die
Zeit jede Vorrichtung die gleiche Chance des Gewinnens hat. Allerdings
erlaubt es nicht, daß eine
Vorrichtung einen größeren Anteil
an der verfügbaren
Bandbreite hat. Dies bedeutet, daß der Betrieb des Systems unnötigerweise
verlangsamt werden kann.
-
Es
wurden komplexere Schemata vorgeschlagen, welche beispielsweise
die letzten N Zugriffe/Zyklen betrachten und den Gewinner für einen
aktuellen Zugriff oder Zyklus bestimmen, unter Berücksichtigung
der Anzahl vergangener Gewinne jeder Vorrichtung ebenso wie ihrer
Priorität.
Allerdings benötigen
diese Systeme eine große
Anzahl von Hardware zur Implementierung. Das kann bedeuten, daß der Arbiter
einen großen
Bereich eines integrierten Schaltkreises einnimmt, was nicht wünschenswert
ist, da dies die Zeit zur Durchführung von
Arbitrierungsentscheidungen verlangsamt. Dieser letztere Nachteil
kann in Verzögerungen
resultieren, die in das System eingebracht werden, die jeden Vorteil
aufheben können,
der durch den speziellen Gebrauch des komplexen Arbitrierungsschemas
erhalten wurde.
-
US-Patent
Nr. 5,303,382 betrifft eine Arbitrierungsvorrichtung zum Arbitrieren
zwischen mehreren Anfragen für
eine gemeinsame Quelle mit mehreren Priorisierungsbefehlen, die
entsprechend der gewinnenden Anfrage für jeden Arbitragebetrieb gewählt werden.
-
US-Patent
5,623,672 betrifft ein Verfahren und eine Vorrichtung zur Arbitrierung
zwischen Benutzern für
eine Quelle, die eine einzelne gemeinsame Benutzeranfrageleitung
aufweist, über
die jeder der Benutzer Anfragesignale zur Benutzung der Quelle geltend
macht. Arbitrierung wird durch Zeitmultiplexen erreicht, die Priorität jedes
Anfragers ändert
sich zwischen Leitungsteilen.
-
Dementsprechend
ist es ein Ziel der Ausführungsbeispiele
der vorliegenden Erfindung, einen Arbiter und ein Verfahren zur
Arbitrierung bereitzustellen, welcher die Nachteile der verschiedenen
bekannten Schemata überwindet.
-
Nach
einem Aspekt der vorliegenden Erfindung, wird ein Arbiter zur Arbitrierung
zwischen mehreren Anfragen von mehreren Anfragern bereitgestellt,
wobei der Arbiter eingerichtet ist, jedem einzelnen Anfrager eine
Priorität
zuzuordnen, wobei der Anfrager, der die höchste Priorität hat und
eine Anfrage durchgeführt
hat, die Arbitrierung gewinnt, dadurch gekennzeichnet, daß der Arbiter
eingerichtet ist, jedem einzelnen Anfrager einen Verweisungswert
zuzuordnen, und der Arbiter eine neue Priorität für den Anfrager bestimmt, der
gewonnen hat, durch Addieren in einem Addierer des Verweisungswertes
und der Priorität
des Anfragers, der gewonnen hat, um einen Index zu erstellen, um
eine neue Priorität
bereitzustellen, wobei sich die neue Priorität von der niedrigsten Priorität unterscheidet.
-
Arbiter,
die die vorliegende Erfindung verkörpern, können einfach implementiert
werden und ein Maß an
Komplexität
der Arbitrierung bereitstellen.
-
Die
Verweisungsinformation kann während
der Benutzung des Arbiters geändert
werden. In anderen Worten kann der Arbiter während der Benutzung eingerichtet
werden.
-
Vorzugsweise
hat der Arbiter eine Liste von Anfragern, wobei die Liste die Priorität der Anfrager
definiert, wobei die Liste so eingerichtet ist, daß sie wenigstens
einen Anfrager mit wenigstens zwei verschiedenen Positionen in der
Liste aufweist. Die Liste ist vorzugsweise länger als die Anzahl von Anfragern.
Der Gewinner einer Arbitrierung kann entweder zu dem Ende der Liste
gehen oder in eine Position innerhalb der Liste eingefügt werden.
-
Es
sollte anerkannt werden, daß nicht
allen Gewinnern eine Priorität
gegeben wird, die sich von der niedrigsten Priorität unterscheidet.
In einigen Ausführungsbeispielen
der vorliegenden Erfindung wird wenigstens einem Gewinner eine Priorität gegeben,
die sich von der niedrigsten Priorität unterscheidet.
-
Der
Arbiter kann so eingerichtet sein, daß die Länge der Liste, die Priorität jedes
Anfragers und der Verweisungswert jedes Anfragers die Häufigkeit
bestimmen, mit der jeder Anfrager an Arbitrierung gewinnt.
-
Der
Arbiter kann vor der Benutzung eingerichtet werden und/oder er kann
während
der Benutzung veränderbar
sein.
-
Der
Arbiter kann zwischen Anfragen von Anfragern arbitrieren, die Zugriff
auf einen Speicher anfragen. Der Anfrager kann eine Vorrichtung
oder ein Kanal sein.
-
Der
Arbiter kann eingerichtet sein, um einige der Anfragen zu betrachten,
wenn er zwischen den Anfragern arbitriert, wobei die betrachteten
Anfrager die höchste
Priorität
haben.
-
Es
sollte anerkannt werden, daß die
verschiedenen Aspekte, die hier vorher beschrieben wurden, in Verbindung
miteinander benutzt werden können.
-
Nach
einem weiteren Aspekt der vorliegenden Erfindung, wird ein Verfahren
zur Arbitrierung zwischen mehreren Anfragen von mehreren Anfragern
bereitgestellt, wobei das Verfahren umfaßt Zuordnen einer Priorität zu jedem
der Anfrager, Bestimmen, welcher Anfrager die höchste Priorität hat und
welcher eine Anfrage durchgeführt
hat, wobei der Anfrager die Arbitrierung gewinnt, gekennzeichnet
durch Zuordnen eines Verweisungswerts zu jedem einzelnen Anfrager,
Bestimmen einer neuen Priorität
für den
Anfrager, der gewonnen hat, durch Addieren des Verweisungswerts
und der Priorität
des Anfragers, der gewonnen hat, um die neue Priorität bereitzustellen,
wobei die neue Priorität
sich von der niedrigeren Priorität
unterscheidet.
-
Zum
besseren Verständnis
der vorliegenden Erfindung und wie selbige verwirklicht werden kann,
wird nun beispielhaft auf die beigefügte Zeichnung Bezug genommen,
in welcher:
-
1 einen
bekannten Rotations-Prioritäts-Arbiter
zeigt;
-
2 einen
Arbiter zeigt, der die vorliegende Erfindung verkörpert;
-
3 die
Implementierung des Arbiters des ersten Ausführungsbeispiels zeigt;
-
4 ein
Beispiel der Implementierung der Prioritätsliste von 3 zeigt;
-
5 einen
Teil eines Transportstroms veranschaulicht;
-
6 ein
Block in schematischer Form eine programmierbare Transportschnittstelle
veranschaulicht; und
-
7 detaillierter
die Verbindung der DMA-Steuerung
von 6 zeigt.
-
Es
wird nun auf die 2 verwiesen, welche einen Arbiter
zeigt, der die vorliegende Erfindung verkörpert. Insbesondere zeigen
die 2a bis 2g sieben
aufeinanderfolgende Arbitrierungsentscheidungen. Anfangs hat die
Vorrichtung A die höchste
Priorität
und Vorrichtung D hat die niedrigste Priorität, wobei Vorrichtung B und
C die zweit- bzw. dritthöchste
Priorität
haben. Wie bei 1 gezeigt, zeigt ein X an, daß ein Zugriff
angefragt wurde. Da Vorrichtung A die höchste Priorität besitzt
und den Zugriff anfragt, in 2a, wird Vorrichtung
A die Arbitrierung gewinnen.
-
Allerdings,
wie in 2b gezeigt, wird Vorrichtung
2A nicht die niedrigste Priorität
zugewiesen, sondern ihr wird stattdessen die zweithöchste Priorität zugewiesen
und wird zwischen Vorrichtung B und Vorrichtung C in die Prioritätsliste
eingefügt.
Da Vorrichtung B nun die höchste
Priorität
besitzt und Zugriff angefragt hat, wird sie die Arbitrierung gewinnen.
-
Als
Nächstes
wird Vorrichtung B an das untere Ende der Liste verschoben und hat
folglich die niedrigste Priorität,
wie in 2c gezeigt. Vorrichtung A hat
folglich die höchste
Priorität
und wenn sie Zugriff anfragt, gewinnt die sie Arbitrierung.
-
Wie
in 2d veranschaulicht, wird Vorrichtung A wieder
die zweithöchste
Priorität
gegeben und wird in die Liste zwischen den Vorrichtungen C und D
eingefügt.
Da Vorrichtung C die höchste
Priorität
besitzt und Zugriff angefragt hat, gewinnt sie die Arbitrierung.
-
In 2e gewinnt
Vorrichtung A wieder die Arbitrierung und, wie in 2f veranschaulicht,
wird sie in die Liste mit der zweithöchsten Priorität eingefügt. Vorrichtung
D gewinnt die Arbitrierung und, wie in 2g gezeigt,
wird ihr die niedrigste Priorität
zugewiesen. Vorrichtung A erhält
wieder die höchste
Priorität
und wenn sie Zugriff anfragt, gewinnt sie die Arbitrierung.
-
In
dem in 2 gezeigten Beispiel, wenn alle Vorrichtungen
kontinuierlich Anfragen durchführen,
wird Vorrichtung A 50% ihrer Anfragen gewinnen und die anderen Vorrichtungen
B, C und D werden sich die anderen 50% der Zugriffe teilen.
-
Das
in Verbindung mit 2 veranschaulichte Prinzip kann
erweitert werden, um den Umfang zu steuern, in welchem jede Vorrichtung
bzgl. ihrer Priorität
verwiesen wird, wenn sie eine Arbitrierung gewinnt. In dem gezeigten
Beispiel wird die Vorrichtung A um eine Position verwiesen, während die
Vorrichtungen B, C und D alle um drei Positionen verwiesen werden,
wenn sie die Arbitrierung gewinnen.
-
Durch
Programmierung des Werts, durch welchen jede Vorrichtung nach dem
Gewinnen einer Arbitrierung verwiesen wird, kann der Arbiter so
konfiguriert werden, daß er
in der geeigneten Art und Weise betrieben wird, unter Einbeziehung
der Natur der Vorrichtungen. Wenn alle Verweisungswerte Null sind,
bedeutet das, daß kein
Gewinner in der Liste bewegt wird und ein Fest-Prioritäts-Arbiter
folglich eingerichtet wird. Jede Vorrichtung kann die gleichen oder
verschiedenen Programmierwerte zwischen Null (bei welchem die Vorrichtung,
die die Arbitrierung gewinnt, in der gleichen Position bleibt) und
einen Wert von L – 1
haben, wobei L die Zahl der Vorrichtungen in der Liste ist.
-
Es
wird auf Tabelle 1 verwiesen, welche zeigt, wie ein Arbiter mit
vier Vorrichtungen umgehen kann.
-
-
-
In
dem ersten in der Tabelle angegebenen Beispiel, ist der Verweisungswert,
der die Position angibt, an die eine Vorrichtung verwiesen wird,
wenn sie die Arbitrierung gewinnt, für jede der Vorrichtungen A,
B, C und D Null. In anderen Worten handelt der Arbiter als ein Fest-Prioritäts-Arbiter. Zum Beispiel,
wenn Vorrichtung A die höchste
Priorität
besitzt und sie immer eine Anfrage hat, dann wird Vorrichtung A
immer gewinnen. In diesem Beispiel, genauso wie in den folgenden
Beispielen, wird die anfängliche
Priorität
angenommen, wie für
Vorrichtungen A, B, C und dann Vorrichtung D. Wie in diesem Beispiel
gezeigt, in welchem ein Mitbewerber den Verweisungswert Null hat,
wird sie alle anderen Vorrichtungen aussperren, wenn sie eine höhere Priorität hat und
immer anfragt. Das kann natürlich
zu einem Verhungern führen,
bei welchem Vorrichtungen vom Zugreifen auf den Speicher abgehalten
werden. Zu bestimmten Szenarien können feste Prioritäten wünschenswert
sein, allerdings muß dies
immer gegen das Risiko des Verhungerns abgewogen werden.
-
Allerdings
kann in einem dynamisch programmierbaren System eine Vorrichtung
mit dem Risiko des Verhungerns einen Time-out bei ihrer Anfrage haben, welcher
einer Unterbrechung der CPU auslöst,
wobei angefragt wird, daß sie
den Verweisungswert in einen etwas günstigeren Verweisungswert umprogrammiert.
-
Wie
begrüßt werden
wird, kann der Arbiter durch die CPU neu programmiert werden, während des
Betriebes der Vorrichtung von der der Arbiter einen Teil bildet
oder er kann in seinem Betrieb festgelegt werden durch seine anfängliche
Programmierung.
-
Es
wird auf das zweite Beispiel verwiesen, bei welchem die Vorrichtung
mit der höchsten
Priorität
anfangs einen Verweisungswert von Null hat. Die anderen drei Vorrichtungen
B, C und D haben Verweisungswerte von 3, was bedeutet, daß sie rotieren.
Wenn Vorrichtung A eine Anfrage während jedes Zyklusses durchführt, wird
sie 100% der Zeit gewinnen, wobei die Vorrichtungen B, C und D auf
einen Zugriff verhungern.
-
Indes,
betrachte das dritte Beispiel, in dem die erste Vorrichtung, Vorrichtung
A einen Verweisungswert von 1 besitzt und die drei übrig bleibenden
Vorrichtungen einen Verweisungswert von 3 besitzen. Vorrichtung A
wird 50% der Zugriffe erhalten, wobei die verbleibenden 50% zwischen
den verbleibenden 3 Vorrichtungen aufgeteilt werden.
-
Das
vierte Beispiel ist ähnlich
dem dritten Beispiel, ausgenommen, daß die erste Vorrichtung, Vorrichtung
A einen Verweisungswert von 2 hat. Das bedeutet, daß die erste
Vorrichtung, Vorrichtung A 1/3 der Zeit die Arbitrierungen gewinnen
wird. Die verbleibenden 2/3 der Zeit und die verbleibenden drei
Vorrichtungen die gleiche Anzahl von Zugriffen gewinnen, d.h. um
die 22% der Zugriffe.
-
In
dem fünften
Beispiel besitzt Vorrichtung A einen Verweisungswert von 1, Vorrichtung
B hat einen Verweisungswert von 2, während Vorrichtungen C und D
einen Verweisungswert von 3 besitzen. A wird 50% der Zeit gewinnen.
-
Vorrichtung
B wird 25% der Zeit gewinnen, während
Vorrichtungen C und D 12,5% der Zeit gewinnen werden.
-
In
dem nächsten
Beispiel haben sowohl die Vorrichtung A und Vorrichtung B einen
Verweisungswert von 2, während
die Vorrichtungen C und D einen Verweisungswert von 3 haben. Dementsprechend
werden Vorrichtungen A und B jeweils 1/3 der Zeit gewinnen. Allerdings
werden Vorrichtungen C und D nur 1/6 der Zeit gewinnen.
-
Schlußendlich,
wenn alle Verweisungswerte 3 sind, erhält man einen Rotations-Prioritäts-Arbiter,
bei welchem jede Vorrichtung eine gleiche Chance auf Gewinnen des
Zugriffs hat.
-
In
der Praxis werden nicht alle Vorrichtungen zu jeder Zeit Zugriff
anfragen. Zum Beispiel, wenn Vorrichtungen A bis C einen Verweisungswert
von 2 hatten und Vorrichtung D einen Verweisungswert von 3 hatte, wird
Vorrichtung D vor dem Zugriff verhungern, wenn alle Vorrichtungen
die ganze Zeit Zugriff anfragen würden. Wenn das nicht der Fall
ist, wird die Vorrichtung immer noch relativ häufig Zugriff auf die Vorrichtung
haben.
-
Die
Natur des Zugriffs kann mit einbezogen werden, wenn die anfängliche
Reihenfolge der Prioritätsliste
betrachtet wird. Eine Vorrichtung an dem oberen Ende der Liste,
aber mit einem höheren
Verweisungswert, wird nicht mehr an dem oberen Ende der Liste sein,
wenn sie ihre erste Anfrage durchgeführt hat. Dies kann als Vorteil
benutzt werden, wenn das Verhalten der Vorrichtung unmittelbar nach
dem Neustart unterschiedlich ist oder, alternativ, gibt dies niedrigen
Prioritätsaufgaben
die Möglichkeit
eine Arbitrierung zu gewinnen. Es ist natürlich offensichtlich, daß eine Vorrichtung
mit einem Verweisungswert von Null in der Liste nicht nur zurück nach unten
gehen wird, wenn sie einmal das obere Ende erreicht hat und immer
die höchste
Priorität
haben wird.
-
Wie
hier vorangehend erwähnt
wurde, kann der Arbiter dieselbe Konfiguration haben, welche vorprogrammiert
ist. Alternativ kann die Programmierung des Arbiters während des
Betriebes des integrierten Schaltkreises mit welchem er einen Teil
bildet, beispielsweise, der CPU, verändert werden.
-
Ein
weiteres Ausführungsbeispiel
der vorliegenden Erfindung wird nun unter Bezugnahme auf Tabelle 2
beschrieben.
-
-
In
diesem Ausführungsbeispiel
hat die Liste der Anfrager oder Vorrichtungen mehr Stellen als die
Gesamtzahl der Anfrager.
-
Das
bedeutet, daß einige
Vorrichtungen mehr als einmal in der Liste auftauchen können. In
den Beispielen sind vier Anfrager oder Vorrichtungen A bis D vorhanden.
Die Liste ist 9 Stellen tief, mit der höchsten Priorität auf der
linken und der niedrigsten Priorität auf der rechten Seite. Es
geht jeweils die Vorrichtung an das Ende der Liste, welche die Arbitrierung
gewinnt. Anfang ist A an dem oberen Ende der Liste und fragt an und
gewinnt deshalb die Arbitrierung. A wird dann an das Ende der Liste
gesendet (siehe die zweite Zeile der Tabelle) und B ist nun an dem
Anfang der Liste. B hat die höchste
Priorität
und wenn sie anfragt, gewinnt sie die Arbitrierung, und wird an
das Ende der Liste gesendet, wie in der dritten Spalte der Tabelle
gezeigt werden kann.
-
Vorrichtung
C ist nun an dem oberen Ende der Liste und wenn sie anfragt, gewinnt
sie die Arbitrierung und geht deshalb an das Ende der Liste, wie
in Sp. 4 der Tabelle gezeigt. Vorrichtung A ist nun an dem oberen Ende
der Liste, fragt aber nicht an. Dementsprechend gewinnt Vorrichtung
B die Arbitrierung und geht an das Ende der Liste, wie in Sp. 5
der Tabelle gezeigt ist.
-
In
dem in Verbindung mit Tabelle 2 gezeigten Beispiel, werden die Gewinner
der Arbitrierung immer an das Ende der Liste geschickt. Allerdings
ist dies nicht notwendiger Weise der Fall und die Gewinner der Arbitrierung
können
an verschiedene Stellen in der Liste gesendet werden, abhängig von
der Identität
der Vorrichtung, wie im Zusammenhang mit dem ersten Ausführungsbeispiel
beschrieben wurde.
-
Der
Umfang der benutzten Logik, um solche langen Ketten zu beobachten,
können,
beispielsweise, durch ausschließliches
Betrachten des oberen Endes der Liste reduziert werden, vielleicht
der obersten vier oder sogar drei Elemente der Liste. Diese Technik
kann auch dort benutzt werden, wo die Liste nur so lang wie die
Zahl der Anfrager ist. Das kann zu dem Nachteil führen, daß Anfrager
mit niedriger Priorität
ihre Chance verpassen können,
wenn sie sich außerhalb
des überprüften Fensters
befinden, wenn sie ihre Anfrage durchführen. Allerdings sollte in
bestimmten Situationen, wenn die anderen Anfrager sowieso nicht
anfragen, eine Möglichkeit
für einen
Anfrager mit niedrigerer Priorität
gegeben sein, um einen Zugriff zu einem späteren Zeitpunkt zu erhalten.
-
In
einem alternativen Ausführungsbeispiel
der vorliegenden Erfindung kann der Verweisungsumfang, die Position
einer Vorrichtung in einer Liste und sogar die Länge der Liste in Abhängigkeit
eines Faktors des Systems berechnet werden. Dieser Faktor kann die
Aktivität
des Systems, der Status des Systems, der Modus des Systems, ein
Faktor der Vorrichtung oder ähnliches
sein. Die Länge
der Liste kann auch programmierbar sein. Zum Beispiel kann die Liste
vorprogrammiert sein, so daß sie
immer eine vorbestimmte Länge
hat. Allerdings kann der Arbiter während seines Betriebes gesteuert
werden, um die Länge
der Liste zu ändern.
-
Das
erste und das zweite Ausführungsbeispiel
können
in Verbindung miteinander benutzt werden.
-
Es
wird auf 3 verwiesen, welche zeigt wie
das erste Ausführungsbeispiel
der vorliegenden Erfindung implementiert werden kann.
-
Die
Prioritätsliste 2 ist
als vier Zweibit-Register 6a, 6b, 6c und 6d implementiert.
Diese Register 6a–6d sind
miteinander verbunden, um ein Hochschieben, Verweisen durch einen
programmierbaren Umfang und Programmieren durch eine externe Vorrichtung,
wie eine CPU, zu ermöglichen.
Jeder Vorrichtung ist eine Zweibit-Zahl zugeordnet, welche benutzt
wird, um die Vorrichtung darzustellen. Das erste Register 6a speichert
die Identität
der Vorrichtung mit der höchsten Priorität, während das
letzte Register 6d die Identität der Vorrichtung mit der niedrigsten
Priorität
speichert. Das zweite und dritte Register 6b und 6c speichern
die Identität
der Vorrichtungen mit den zwischenliegenden Prioritäten.
-
Die
Verweisungswerte werden auch in vier Zweibit-Registern 8a bis 8d gespeichert.
Jedes Register speichert den Verweisungswert RV für eine der
Vorrichtungen. Im Falle des ersten Ausführungsbeispiels ist der maximale
Verweisungswert 3 (dargestellt durch 11 in binärer Form). In andern Worten
kann der Verweisungswert RV jeden beliebigen Wert von 0 bis 3 annehmen.
-
Jedes
Register 6a bis 6d steuert einen entsprechenden
4 zu 1 Multiplexer 10a bis 10d. Jeder der Multiplexer 10 erhält eine
Eingabe von jedem der Anfrager oder der Vorrichtungen. Der erste
Multiplexer 10a wird durch das erste Register 6a der
Prioritätsliste
gesteuert, um die Anfrage der Vorrichtung mit der höchsten Priorität auszugeben.
Das wird Anfrage PR0 sein. Das zweite Register 6b der
Prioritätsliste 2 wird
die Ausgabe des zweiten Multiplexers 10b steuern, um die
Anfrage mit der zweithöchsten
Priorität
PR1 auszugeben. Auf ähnliche Weise steuert das dritte
Register 6c den dritten Multiplexer 10c, um die
Anfrage mit der dritthöchsten Priorität PR2 auszugeben und das vierte Register 6d steuert
den vierten Multiplexer 10d, um die Anfrage PR3 von
der Vorrichtung mit der niedrigsten Priorität auszugeben. Der Multiplexer 10d mit
der niedrigsten Priorität kann
als eine festgelegte Prioritätseingabe
ausgelassen werden und stattdessen kann der Inhalt des vierten Registers
das Vorgaberegister sein.
-
Ein
Arbiter 12 ist zum Arbitrieren zwischen den verschiedenen
Anfragen eingerichtet. Die Vorrichtung mit der höchsten Priorität, die eine
Anfrage durchführt,
gewinnt die Arbitrierung. Der Prioritätsarbiter stellt eine Zweibitausgabe
bereit, die anzeigt, welche Position in der Prioritätsliste
gewonnen hatte (Index W). Dies wird zur Steuerung eines fünften Multiplexers 14 benutzt.
Der fünfte
Multiplexer 14 erhält
eine Eingabe von jedem der vier Register 6a bis 6d der
Prioritätsliste.
Der fünfte
Multiplexer 14 wird gesteuert, um die Identität der Vorrichtung,
die die Arbitrierung gewonnen hat, auszugeben. Die Ausgabe des fünften Multiplexers
wird benutzt, um einen sechsten Multiplexer 16 zu steuern
und einen siebten Multiplexer 18.
-
Der
sechste Multiplexer 16 ist mit jedem der vier Register 8 der
Verweisungsliste verbunden. Die Ausgabe des fünften Multiplexers 14 steuert
den sechsten Multiplexer 16, um den Verweisungswert für die Vorrichtung,
die die Arbitrierung gewonnen hat, auszugeben, d.h. Wert RVrnw.
-
Die
Ausgabe des fünften
Multiplexers 14 wird auch benutzt, um die Ausgabe des siebten
Multiplexers 18 zu steuern. Der siebte Multiplexer 18 erhält die Vorgänge von
jedem der vier Vorrichtungen und gibt den Vorgang Trnw aus,
der mit der Vorrichtung verknüpft
ist, die die Arbitrierung gewonnen hat. Die Signale, die an der
Anfrage beteiligt sind, können
eines oder mehr der folgenden Beispiele sein: Anfrage, Genehmigung,
gültig,
Adresse, Lesedaten, Schreibedaten, OP Code etc. Diese Werte werden
behalten bis die Anfrage genehmigt ist, anerkannt oder zurückgezogen.
In einigen Ausführungsbeispielen
der vorliegenden Erfindung können zurückgezogene
Anfragen nicht erlaubt werden.
-
In
einem leitungsbasierenden System mit strikter Abwicklung der Anfragen,
wird die Anfrageidentität in
einem FIFO gespeichert, so daß jede
beliebigen Rückgabedaten
oder Vorgänge
zu dem richtigen Anfrager zurückverfolgt
werden können.
In einem System, in dem zurückkommende
Vorgänge
selbst Information enthalten, kann die Rückverfolgung zu dem richtigen
Anfrager ohne die Notwendigkeit eines FIFO bestimmt werden.
-
Die
gewinnende Anfrageidentität
wird zum Nachsehen des Verweisungswertes benutzt, was die Ausgabe
des sechsten Multiplexers 16 ist. Dieser Verweisungswert
wird benutzt, um den nächsten
Zustand der Prioritätsliste
zu bestimmen, zusammen mit der Position in der Liste, die der Gewinner
hat. Alle Elemente, die sich weiter unten in der Liste als der Gewinner
befinden, werden um eine Platzierung nach oben geschoben.
-
Es
wird nun auf 4 verwiesen, welche eine Implementierung
der Prioritätsliste
zeigt.
-
Ein
Addierer 20 erhält
den Verweisungswert für
den Gewinner RVrnw von dem fünften Multiplexer 16 und
die Priorität
W des Gewinners werden zusammen addiert, wodurch ein Index nw erstellt
wird, wobei jeder Überlauf
eines Zweibitergebnisses in 3 geändert
wird. In anderen Worten kann der Gewinner nicht an eine Position
verwiesen werden, die unterhalb des unteren Endes ist. Die Dreibitausgabe
des Addierers 20 wird in einen Begrenzer 22 eingegeben,
welche, wenn die Ausgabe des Addierers in einem Dreibitformat ist,
in ein Zweibitformat begrenzt wird, wobei der Wert 3 ist (d.h. 11).
Die Ausgabe des Begrenzers 22 wird in einen ersten 2 bis
4 Leitungsdecoder 24 eingegeben.
-
Der
Wert w wird auch direkt in einen zweiten 2 bis 4 Leitungsdecoder 26 eingegeben.
Der erste und zweite Decoder hat jeweils eine Eingabe zu jedem der
Register 6a bis 6d, die die Prioritätsliste
erstellen. Jede Logik eines Registers teilt der darunterliegenden
mit, wenn sie nach oben geschoben werden soll. Dies geschieht, wenn
ihre w Auswahlleitung (WS) des zweiten 2 bis 4 Leitungsdecoders 26 hoch
ist oder, wenn er angewiesen wird durch das Register über ihn über das Signal
SHn zu schieben und das nicht die neue Position des Gewinners ist,
d.h. seine NW Auswahlleitung (NWSn) des ersten 2 bis 4 Leitungsdekoders 24 ist
hoch.
-
Das
erste Register 6a hat seine SH Leitung tief gebunden, da
es nicht höher
geschoben werden kann und die SH Ausgabe des letzten Registers 16 nicht
benutzt wird. Dieses Vorgehen kann auf eine Liste beliebiger Tiefe
erweitert werden.
-
Betrachte
das Beispiel, in dem das Register 6a aktuell einen Wert
01 hat, Register 6d den Wert 11 hat, Register 6c den
Wert 10 und Register 6d den Wert 00 hat. Die Vorrichtung,
die mit Register 6a verknüpft ist, hat die Arbitrierung
gewonnen und hat einen Verweisungswert von 2. Das erste Register 6a erhält den Wert, der
in dem zweiten Register 6b enthalten ist. Die Werte, die
in dem dritten Register 6c enthalten sind, werden in das
zweite Register 6b geschoben. Die Werte des ersten Registers
werden in das dritte Register 6c geschoben und das vierte
Register bleibt unverändert.
-
Dieses
Verfahren kann mit einer Liste von beliebiger Tiefe verwendet werden
und kann auch, mit geeigneten Veränderungen, mit dem zweiten
Ausführungsbeispiel
verwendet werden.
-
Innerhalb
jedes Registers bei Index n in der Prioritätsliste, wird der neue Wert,
der von RNw sein, wenn NWSn aktiv ist, ansonsten wird er der eingehende
Verschiebewert von unten sein, wenn SHn aktiv ist, ansonsten bleibt
er gleich. Es ist ein Fehler im System, wenn SH3 hoch ist, wenn
RN3 niedrig ist, so daß er
eliminiert werden kann, um Platz zu sparen, wenn nötig. Auch
WS3 wird nicht benötigt,
da das SH4 Signal ignoriert wird.
-
Ausführungsbeispiele
der vorliegenden Erfindung können
in einer Direktspeicherzugriffsteuerung implementiert werden. Ausführungsbeispiele
der vorliegenden Erfindung, die hierin weiter oben beschrieben wurden,
wurden im Zusammenhang mit einer Anordnung beschrieben, in der vier
Vorrichtungen Zugriff zu beispielsweise einem Speicher anfragen.
Dieselbe Technik kann auch benutzt werden, um zwischen verschiedenen
Kanälen
oder verschiedenen Anfragen zu arbitrieren und in der Tat bei jeder
Art von Anfragern. Ausführungsbeispiele
der vorliegenden Erfindung können
benutzt werden, um zwischen Anfragen vor Zugriff auf jede beliebige
Quelle zu arbitrieren, die einen Bus, einen Speicher oder ähnliches
enthalten.
-
Der
Arbiter, der die vorliegende Erfindung verkörpert, kann in jeder geeigneten
Anwendung verwendet werden. Eine mögliche Anwendung wird nun beschrieben.
-
Die
folgende Beschreibung bezieht sich auf ein beispielhaftes Ausführungsbeispiel,
in dem ein MPEG-2-Transportstrom in einer programmierbaren Transportschnittstelle
eines Empfängers
in einer digitalen Set-Top-Box gemultiplext wird.
-
5 veranschaulicht
einen Bereich eines Transportstroms 51, welcher aus einer
Reihe von N Transportpaketen 52 zusammengesetzt ist. Jedes
Transportpaket 52 weist einen Transportpaketkopf 54 und
eine Transportpaketladung 56 auf. Der Transportstrom ist
ein Bitstrom, welcher in den Transportpaketladungen 56 Information
zur Wiederherstellung trägt,
z.B. eine Zahl von verschiedenen Fernsehprogrammen. Der Transportstrom
wird durch eine Quelle gebildet, die die Fernsehprogramme kodiert.
Der Transportstrom ist dann typischerweise zur Übertragung (durch Satellit
oder Kabel) kanalkodiert und beim Empfang kanaldekodiert, um den
Transportstrom zu reproduzieren. Der Transportstrom wird dann quelldekodiert,
um ein von den verschiedenen Fernsehprogrammen gewähltes wiederherzustellen.
Jedes einzelne Fernsehprogramm benötigt drei Arten von Information
(Audioinformation, Videoinformation und Tabellen von Programminformation)
für seine Widerherstellung.
Jedes Transportpaket 52 ist vorzugsweise mit einem einzelnen
Fernsehprogramm verknüpft,
einer einzelnen Quellkodierungszeit und einer speziellen Art der
Information. Die einzelnen Transportpakete sind zeitmultiplext,
um den Transportstrom zu bilden und die Echtzeitwiederherstellung
jedes beliebigen der verschiedenen Fernsehprogramme des Transportstroms
zu ermöglichen.
Um ein Fernsehprogramm wiederherzustellen, wird der Transportstrom
nachfolgend demultiplext, um nur die Transportladungen 56 der Audioinformation
wiederherzustellen, Videoinformation und die Tabellen der Programminformation,
welche mit dem gewählten
Fernsehprogramm verknüpft
sind. Die wiederhergestellten Ladungen werden dann dekodiert und
benutzt, um das Fernsehprogramm wieder herzustellen.
-
Entsprechend
den MPEG-2 digitalen Videoübertragungsstandard
(DVB) ist jedes der Transportpakete 52 188 Bytes lang und
der Transportpaketkopf 54 ist 4 Bytes lang. Die Transportpaketladung 56 enthält entweder
Audio- oder Videoinformation oder Sektionen. Die Sektionen sind
Teile von Tabellen. Die Audio- und Videoinformation und die Sektionen
in den Ladungen 56 werden in Übereinstimmung mit dem MPEG-2
DVB Kompressionsstandard paketiert und kodiert.
-
Eine
programmierbare Transportschnittstelle 110, veranschaulicht
in 6, wird benutzt, um einen Transportstrom 51 auszuführen und
einen Datenausgabestrom 506 zu erzeugen, der geeignet ist
zur Wiederherstellung als ein Fernsehprogramm nach MPEG-2 Dekodierung
durch MPEG-2 Dekoder (nicht gezeigt). Die programmierbare Transportschnittstelle 110 ist
in einem Empfänger
enthalten, der den Transportstrom 51 erhält.
-
Der
Transportpaketkopf 54 enthält ein Synchronisationsbyte,
welches den Anfang eines jeden Transportpakets 52 identifiziert.
Der Transportkopf enthält
auch Paketidentifikation (PID), welches die Informationsart und
das Fernsehprogramm identifiziert, das mit der Transportpaketladung 56 verknüpft ist.
Das Transportpaket 52 enthält auch Information, die die
Quellkodierungszeit des Transportpakets enthält. Der Transportkopf 54,
der das Synchronisationsbyte und das PID enthält, ist nicht verschlüsselt. Die
Transportpaketladung 56 kann verschlüsselt sein.
-
Die
programmierbare Transportschnittstelle (PTI) 110 führt verschiedene
Funktionen aus, aufweisend:
- (i) Benutzen des
Synchronisationsbytes, um den Anfang eines Transportpakets 52 zu
identifizieren;
- (ii) Benutzen der Paketidentifikation (PID) um, unter anderen
Funktionen, die Art der Information zu identifizieren, die in dem
Paket enthalten ist (d.h. Audio- oder Videoinformation oder Sektionen)
und das Fernsehprogramm, welches sie darstellt;
- (iii) Entschlüsseln
der Transportpaketladung 56; und
- (iv) Demultiplexen des Transportstroms 51, um einen
Datenausgabestrom 506 zu erzeugen.
-
Der
Datenausgabestrom 506 umfaßt einen Strom von Audioinformation,
die mit dem gewählten
Fernsehprogramm verknüpft
ist, einen Strom von Videoinformation, der mit dem gewählten Fernsehprogramm
verknüpft
ist, oder Tabellen von Programminformation, die mit dem gewählten Fernsehprogramm
verknüpft
ist. Die PTI gibt diese Ströme
an die notwendigen MPEG-2 Dekoder aus, um die gewählten Fernsehprogramme zu
reproduzieren.
-
Die
programmierbare Transportschnittstelle 110 umfaßt fünf primäre funktionale
Blöcke:
Ein Eingabemodul 100; eine Transportsteuerung 200;
ein Befehls-SRAM (statisches RAM) 300; ein Daten-SRAM (statisches
RAM) 400; und einen Vielkanal DMA (Direktspeicherzugriff)
Steuerung 500.
-
Das
Eingabemodul 100 empfängt
den Transportstrom 51 und gibt einen alternativen Ausgabestrom 106 aus.
Das Eingabemodul 100 identifiziert das Synchronisationsbyte
von jedem Transportpaket, welches benutzt wird, um den Systemtakt
und den Transportstrom zu synchronisieren. Das Eingabemodul 100 wird
durch die Transportsteuerung 200 gesteuert über ein
Eingabemodulsteuersignal 112, welches ein Entschlüsselungssteuersignal 114 aufweist,
ein alternatives Stromsteuersignal 116 und Ausgabestromsteuersignale 118.
Das Eingabemodul 100 stellt der Transportsteuerung 200 Bits
bereit, über
eine Verbindung 108 und es empfängt Bits zurück von der
Transportsteuerung 200 über
die Verbindung 110. Das Eingabemodul, unter der Steuerung der
Transportsteuerung 200 über
das Eingabemodulsteuersignal 112, entschlüsselt die
Ladung 56 der gewählten
Transportpakete 52 und liefert die ausgewählten entschlüsselten
Ladungen an die Transportsteuerung 200 über die Verbindung 108.
Die Entschlüsselung
der Ladungen wird durch das Entschlüsselungssteuersignal 114 gesteuert,
welches durch die Transportsteuerung 200 geliefert wird
und die Anzahl und Rate von Bits, geliefert über die Verbindung 108,
wird durch das Ausgabestromsteuersignal 118 gesteuert.
Das Eingabemodul 100 empfängt, über die Verbindung 110,
Bits von der Transportsteuerung 200, welche als der alternative
Ausgabestrom 106 ausgegeben werden können, unter der Steuerung des
alternativen Stromsteuersignals 116.
-
Die
Transportsteuerung 200 arbeitet mit den Bits, die über die
Verbindung 108 von dem Eingabemodul 100 empfangen
wurden.
-
Die
Transportsteuerung 200 empfängt von dem Eingabemodul 100 über die
Verbindung 108 den Transportkopf 54 von dem Transportpaket 52,
welches an der Transportstromeingabeschnittstelle 102 ankommt.
Die Transportsteuerung 200 benutzt den Paketidentifizierer
(PID) in dem Transportpaketkopf 54, um zu bestimmen, ob
das Transportpaket 52, das jetzt in das Eingabemodul 100 kommt,
mit einem gewählten Fernsehprogramm
verknüpft
ist für
die programmierbare Transportschnittstelle 110. Wenn dem
nicht so ist, wird das empfangene Transportpaket 52 verworfen.
Wenn dem so ist, steuert es das Eingabemodul 100, um (wenn
nötig)
die Transportpaketladung zu entschlüsseln (wie oben beschrieben)
und, um die Transportpaketladung 56 über die Verbindung 108 an
die Transportsteuerung 200 zu liefern. Die Transportsteuerung 200 kann eine
Ladung 56, die mit Audio- oder Videoinformation für das gewählte Programm
verknüpft
ist, geradewegs an die Transportsteuerausgabe 502 weiterreichen.
Wenn die Ladung 56 zu einer Sektion einer Tabelle gehört, kann
die Transportsteuerung 200 die Information abarbeiten,
bevor sie sie an ihrer Ausgabe 502 bereitstellt. Alternativ
kann die Transportsteuerung 200 die empfangenen Ladungen 56 abarbeiten
und diese in Übereinstimmung
mit einem anderen Übertragungsstandard
repaketieren. Der neu formatierte Transportstrom wird dann an das
Eingabemodul 100 bereitgestellt, über die Verbindung 110,
und sie wird dann an den alternativen Ausgabestrom 106 ausgegeben,
unter Steuerung des alternativen Stromsteuersignals 116.
-
Die
Transportsteuerung 200 umfaßt einen Transportprozessor
(nicht gezeigt), welcher Befehlssätze von den Befehls-SRAM 300 liest.
Die Transportsteuerung 200 ist mit dem SRAM 300 über die
Verbindung 304 verbunden und sie liest seine Befehle über die
Verbindung 304. Ein Systemprozessor (nicht gezeigt) kann
aus und in das Befehls-SRAM 300 lesen und schreiben über einen
Systemschnittstellenbus 402. Allerdings hat die Transportsteuerung 200 bevorzugter
Weise Zugriff auf das Befehls-SRAM 300, bestimmt durch
einen Arbiter (nicht gezeigt), welcher zwischen Zugriffen durch
die Transportsteuerung 200 und dem Systemprozessor arbitriert.
Der Systemprozessor kann auch auf die Transportsteuerung 200 über den
Systemschnittstellenbus 402 zugreifen.
-
Auf
das Daten SRAM 400 kann über den Prozessor der Transportsteuerung 200 über die
Verbindung 404 und 406 zugegriffen werden. Der
Prozessor der Transportsteuerung benutzt die Verbindung 404,
um aus und in das Daten SRAM 400 zu lesen und zu schreiben.
Eine Suchmaschine innerhalb der Transportströme 200 liest aus den
Daten SRAM 400 über
Verbindung 406. Die Suchmaschine durchsucht das Daten SRAM 400 nach
dem Paketidentifizierer (PID) in den eingehenden Transportpaketkopf 104.
Wenn das Paket nicht verworfen werden soll, dann wird das PID für dieses
Paket in den Daten SRAM gespeichert sein und kann durch die Suchmaschine
der Transportsteuerung geortet werden. Mit jedem PID in den Daten
SRAM sind mehrere Zeiger verknüpft,
welche auf andere Adressen in den Daten SRAM zeigen, wo andere Information
gespeichert ist, die mit dem eingehenden Transportpaket verknüpft ist.
Die Suchmaschine fragt die gespeicherten Zeiger mit einer speziellen
PID für
die Transportsteuerprozessor ab. Der Transportsteuerprozessor benutzt dann
die Zeiger, um auf alle Informationen zuzugreifen, die er braucht,
um die Ladung des eingehenden Transportpakets abzuarbeiten. Die
Zeiger können
beispielsweise sein: Zeige auf ein Entschlüsselungsschlüssel für die Benutzung
durch das Eingabemodul 100; Zeige auf Adressen zur Benutzung
durch die DMA Steuerung 500; Identifizieren, ob die Ladung
Video- oder Audioinformation oder Sektionen ist, Identifizieren,
ob die Ladung spezielle Daten sind, die an einen alternativen Ausgabestrom 106 ausgegeben
werden sollen; oder lokalisiere Information zur Maskierung des Suchfilters
etc.
-
Folglich
versetzt diese Information die Transportsteuerung in die Lage, die
Eingabemodulsteuersignale 112 in geeigneter Weise zu erzeugen
und das Abarbeiten, falls vorhanden, der von der Verbindung 108 empfangenen
Bits zu steuern.
-
Die
Transportsteuerung 200 produziert eine Transportsteuerausgabe 502,
welche an die Vielkanal DMA Steuerung 500 geliefert wird.
Die Vielkanal DMA Steuerung 500 liefert den Datenausgabestrom 506 indirekt
an die MPEG-2 Dekoder (nicht gezeigt in 6).
-
Der
Systemprozessor schreibt in das Befehls SRAM 300, die Transportsteuerung 200 und
das Daten SRAM 400 über
den Systemschnittstellenbus 402. Das Befehls SRAM 300 kann
nur durch den Systemprozessor beschrieben werden: die Transportsteuerung
kann nur Auslesen, und nicht Schreiben, in ihren eigenen Befehls
SRAM 300 über
die Schnittstelle 304. Der Systemprozessor kann auch aus
dem Befehls SRAM auslesen. Ein Arbiter (wie hierin weiter oben beschrieben)
wird bereitgestellt, um zwischen den Zugriffen auf das Befehls SRAM 300 durch
sowohl den Systemprozessor als auch die Transportsteuerung 200 zu
arbitrieren.
-
Der
Systemprozessor, über
den Systemschnittstellenbus 402, und die Transportsteuerung 200, über den
Schnittstellenbus 404, können beide aus und in den Daten
SRAM 400 lesen und schreiben. Die Suchmaschine der Transportsteuerung 200 kann
nur aus dem Daten SRAM 400 über den Schnittstellenbus 406 lesen. Der
Arbiter wird bereitgestellt, um Zugriffe auf das Daten SRAM 400 durch
sowohl den Systemprozessor als auch die Transportsteuerung 200 und
die Suchmaschine innerhalb der Transportsteuerung 200 zu
arbitrieren. Die Transportsteuerung kann durch den Systemprozessor über ein
Neustartsignal auf dem Schnittstellenbus 302 neu gestartet
werden.
-
Der
Systemprozessor, über
den Systemverbindungsbus 402, und die Transportsteuerung 200, über den
Bus 404, können
beide aus und in die Register lesen und schreiben innerhalb der
DMA Steuerung 500. Der Arbiter wird bereitgestellt, um
zwischen dem Systemprozessor und dem Transportsteuerungszugriff
auf die DMA Steuerung zu arbitrieren.
-
Der
Systemprozessor greift auch über
die Systemschnittstelle 402 auf die Register innerhalb
der Transportsteuerung 200 zu, um sie auszulesen und darin
zu schreiben.
-
Der
Systemprozessor schreibt anfangs in das Befehls-SRAM 300,
das Daten SRAM 400 und die Register innerhalb der Transportsteuerung 200 und
der DMA Steuerung 500, um diese zu konfigurieren.
-
Die
DMA-Steuerung 500 der programmierbaren Transportschnittstelle 10 von 6,
steuert die Eingabe in den Speicher von demultiplexten Daten auf
den Leitungen 502 von der Transportsteuerung 200.
Die Ausgabe 506 der DMA-Steuerung 500 gibt,
wie nachfolgend detaillierter beschrieben wird, Daten, die durch die
Transportsteuerung 200 demultiplext wurden, in geeignete
Bereiche des Hauptprozessorspeichers aus.
-
Bezugnehmend
nun auf 7, ist dort detaillierter die
Verbindung der DMA Steuerung 500 mit der Transportsteuerung 200 gezeigt,
ein Hauptprozessor 700, ein Hauptspeicher 702,
ein erster MPEG-Dekoder 704, ein zweiter MPEG-Dekoder 706,
ein dritter MPEG-Dekoder 708 und ein Arbiter 710.
Der Arbiter 710 ist in 6 der Übersichtlichkeit
halber nicht gezeigt, aber er arbitriert in der Tat zwischen Zugriffen
auf die DMA-Steuerung 500 über dem
Systemverbindungsbus 402 und dem Transportsteuerungsverbindungsbus 404.
Folglich empfängt
der Arbiter 710 den Transportsteuerungsverbindungsbus 404 von
der Transportsteuerung 200 und den Hauptprozessorverbindungsbus 402 von
dem Hauptprozessor 700. Der Arbiter 710 stellt dann
den Zugriff auf die DMA-Steuerung 500 bereit, für die eine
der Transportsteuerung 200 und den Hauptprozessor 700,
welcher gewählt
wurde, um die Steuerung über
die DMA-Steuerung 500 zu
haben. Der Arbiter 710 erzeugt ein Arbiter-Anfragesignal ARBREQ
auf Leitung 712 an die DMA-Steuerung 500, empfängt ein
Arbitergenehmigungssignal ARBGRANT auf Leitung 714 von
der DMA-Steuerung 500, erzeugt eine Arbiteradresse ARBADD
auf Leitungen 716 an die DMA-Steuerung 500, erzeugt
Arbitereingabedaten ARBDATAIN auf Leitung 718 an die DMA-Steuerung,
empfängt
Arbiterausgabedaten ARBDATAOUT auf Leitung 720 von der DMA-Steuerung,
und erzeugt ein Arbiterlese/Schreibsignal ARBR/W auf Leistung 720 an
die DMA-Steuerung 500.
-
Die
Transportsteuerung 200 gibt die Daten, die an den Prozessorspeicher 702 ausgegeben
werden sollen, an die DMA-Steuerung 500 über Ausgabeleitungen 502.
Wie in 7 gezeigt, weisen die Ausgabeleitungen 502 einen
Satz von Datenleitungen DATA 724 auf, ein Transportsteueranfragesignal
TCREQ auf Leitung 726, ausgegeben durch die Transportsteuerung 200 an
die DMA-Steuerung 500, und ein Transportsteuergenehmigungssignal
TCGRANT auf Leitung 728, ausgegeben von der DMA-Steuerung 500 an
die Transportsteuerung 200.
-
Der
Speicher, an dem die DMA-Steuerung 500 Daten zur Speicherung
ausgibt, ist der Hauptsystemspeicher 702, und deshalb ist
die Ausgabe der in 6 gezeigten DMA-Steuerung 500,
in dieser bevorzugten Implementierung der Erfindung, der Systemverbindungsbus 402.
Folglich ist in 7 die DMA-Steuerung 500 gezeigt, die
Daten auf dem Hauptsystemverbindungsbus 402 gezeigt, eher
als an die Ausgabesignale 506.
-
Der
Hauptsystemverbindungsbus 402 zwischen der DMA-Steuerung 500 und
dem Hauptspeicher 702 weist ein DMA-Lese/Schreibsignal DMAR/W auf Leitung 730 auf,
von der DMA-Steuerung 500 an
den Hauptspeicher 702, DMA-Datenausgabesignale DMADATAOUT auf Leitungen 732 von
der DMA-Steuerung 500 an den
Hauptspeicher 702, ein DMA-Anfragesignal DMAREQ auf Leitung 738 von
der DMA-Steuerung 500 an den Hauptspeicher 702,
ein DMA-Genehmigungssignal DMAGRANT auf Leitung 736 von
dem Hauptspeicher 702 an die DMA-Steuerung 500,
ein DMA-Gültigsignal
DMAVALID auf Leitung 730 von dem Hauptspeicher 702 an
die DMA-Steuerung 500, DMA-Eingabedaten DMADATAIN auf Leitungen 740 von
dem Hauptspeicher 702 an die DMA-Steuerung 500,
und ein DMA-Adresssignal DMAADD auf Leitungen 743 von der
DMA-Steuerung 500 an den Hauptspeicher 702.
-
In
alternativen Ausführungsbeispielen
der vorliegenden Erfindung, kann der Arbiter, der die vorliegende
Erfindung verkörpert,
benutzt werden, um zwischen Anfragen von verschiedenen Direktzugriffspeicherkanälen zu arbitrieren.
-
In
einigen Ausführungsbeispielen
der vorliegenden Erfindung kann ein Satz von Regeln angenommen werden,
um zu verhindern, daß eine
Vorrichtung vor dem Zugriff verhungert. Zum Beispiel können wenigstens zwei
der Anfrage einen Verwaltungswert haben, der gleich der Länge der
Liste ist. Nicht mehr als eine der Vorrichtungen sollte einen Verweisungswert
von 1 haben. Schlußendlich
sollte eine Vorrichtung einen Verweisungswert von 0 haben.