DE60029167T2 - Arbiter und Arbitrierungsverfahren - Google Patents

Arbiter und Arbitrierungsverfahren Download PDF

Info

Publication number
DE60029167T2
DE60029167T2 DE60029167T DE60029167T DE60029167T2 DE 60029167 T2 DE60029167 T2 DE 60029167T2 DE 60029167 T DE60029167 T DE 60029167T DE 60029167 T DE60029167 T DE 60029167T DE 60029167 T2 DE60029167 T2 DE 60029167T2
Authority
DE
Germany
Prior art keywords
arbiter
priority
requester
list
transport
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE60029167T
Other languages
English (en)
Other versions
DE60029167D1 (de
Inventor
Andrew Maccormack
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
STMicroelectronics Ltd Great Britain
Original Assignee
STMicroelectronics Ltd Great Britain
SGS Thomson Microelectronics Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by STMicroelectronics Ltd Great Britain, SGS Thomson Microelectronics Ltd filed Critical STMicroelectronics Ltd Great Britain
Publication of DE60029167D1 publication Critical patent/DE60029167D1/de
Application granted granted Critical
Publication of DE60029167T2 publication Critical patent/DE60029167T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/36Handling requests for interconnection or transfer for access to common bus or bus system
    • G06F13/362Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control
    • G06F13/364Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control using independent requests or grants, e.g. using separated request and grant lines

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Bus Control (AREA)

Description

  • 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.
  • Tabelle 1
    Figure 00080001
  • Figure 00090001
  • 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.
  • Tabelle 2
    Figure 00120001
  • 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 6a6d 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.

Claims (13)

  1. Arbiter zur Arbitrierung zwischen mehreren Anfragen von mehreren Anfragern, wobei der Arbiter eingerichtet ist, jedem einzelnen Anfrager eine Priorität (W) zuzuordnen, wobei der Anfrager, der die höchste Priorität hat und eine Anfrage durchgeführt hat, die Arbitrierung gewonnt, dadurch gekennzeichnet, daß: der Arbiter eingerichtet ist, jedem einzelnen Anfrager einen Verweisungs(RV)-Wert zuzuordnen, und der Arbiter eine neue Priorität für den Anfrager bestimmt, der gewonnen hat, durch Addieren in einem Addierer (20) des Verweisungswerts (RVRNW) und der Priorität (W) des Anfragers, der gewonnen hat, um einen Index (nw) zu erstellen, um eine neue Priorität bereitzustellen, wobei sich die neue Priorität von der niedrigsten Priorität unterscheidet.
  2. Arbiter wie in Anspruch 1 beansprucht, bei welchem der Verweisungswert (RV) während der Benutzung des Arbiters geändert werden kann.
  3. Arbiter wie in Anspruch 1 beansprucht, bei welchem der Arbiter eine Liste von Anfragern hat, wobei die Liste der Priorität (W) der Anfrager definiert, wobei die Liste so eingerichtet ist, daß sie wenigstens einen Anfrager in wenigstens zwei verschiedenen Positionen in der Liste aufweist.
  4. Arbiter wie in Anspruch 3 beansprucht, bei welchem die Liste länger als die Anzahl von Anfragern ist.
  5. Arbiter wie in Anspruch 4 beansprucht, bei welchem die Länge der Liste die Priorität (W) jedes Anfragers und der Verweisungswert (RV) jedes Anfragers die Häufigkeit bestimmt, mit welcher jeder Anfrager eine Arbitrierung gewinnt.
  6. Arbiter wie in einem der vorhergehenden Ansprüche beansprucht, wobei der Arbiter vor der Benutzung konfiguriert wird.
  7. Arbiter wie in einem der vorhergehenden Ansprüche beansprucht, bei welchem die Konfiguration des Arbiters während der Benutzung veränderbar ist.
  8. Arbiter wie in einem der vorhergehenden Ansprüche beansprucht zur Arbitrierung zwischen Anfragen von Anfragern, die einen Zugriff auf einen Speicher anfragen.
  9. Arbiter wie in einem der vorhergehenden Ansprüche beansprucht, bei welchem der Anfrager eine Vorrichtung umfaßt.
  10. Arbiter wie in einem der vorhergehenden Ansprüche beansprucht, bei welchem der Anfrager einen Kanal umfaßt.
  11. Arbiter wie in einem der vorhergehenden Ansprüche beansprucht, wobei der Arbiter eingerichtet ist, nur einige der Anfragen zu betrachten, wenn er zwischen den Anfragern arbitriert, wobei die betrachteten Anfrager die höchste Priorität haben.
  12. Integrierter Schaltkreis umfassend einen Arbiter, wie in einem der vorhergehenden Ansprüche beansprucht.
  13. Verfahren zur Abitrierung zwischen mehreren Anfragen von mehreren Anfragern, das Verfahren umfassend: Zuordnen einer Priorität (W) 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 (RV) zu jedem einzelnen Anfrager; Bestimmen einer neuen Priorität für den Anfrager, der gewonnen hat, durch Addieren des Verweisungswerts (RVrnw) und der Priorität (W) des Anfragers, der gewonnen hat, um die neue Priorität (nw) bereitzustellen, wobei die neue Priorität sich von der niedrigsten Priorität unterscheidet.
DE60029167T 1999-08-13 2000-08-11 Arbiter und Arbitrierungsverfahren Expired - Fee Related DE60029167T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GBGB9919208.0A GB9919208D0 (en) 1999-08-13 1999-08-13 An arbiter and a method of arbitrating
GB9919208 1999-08-13

Publications (2)

Publication Number Publication Date
DE60029167D1 DE60029167D1 (de) 2006-08-17
DE60029167T2 true DE60029167T2 (de) 2007-06-28

Family

ID=10859153

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60029167T Expired - Fee Related DE60029167T2 (de) 1999-08-13 2000-08-11 Arbiter und Arbitrierungsverfahren

Country Status (4)

Country Link
US (1) US6618778B1 (de)
EP (1) EP1076293B1 (de)
DE (1) DE60029167T2 (de)
GB (1) GB9919208D0 (de)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6742064B2 (en) * 2000-05-15 2004-05-25 Goodrich Corp. Programmable throttle circuit for each control device of a processing system
US6883031B1 (en) * 2000-09-14 2005-04-19 Lucent Technologies Inc. RUSH-DCS—an adaptable high performance interface for services
US20030158985A1 (en) * 2002-02-15 2003-08-21 Edward Fried Systems and methods for fair arbitration between multiple request signals
KR100532416B1 (ko) * 2003-01-18 2005-11-30 삼성전자주식회사 다중 소스의 다중 채널로의 할당 방법 및 시스템
US7093082B2 (en) * 2003-06-11 2006-08-15 Matsushita Electric Industrial Co., Ltd Microprogrammable SDRAM memory interface controller
US7603672B1 (en) * 2003-12-23 2009-10-13 Unisys Corporation Programmable request handling system and method
WO2006080371A2 (ja) * 2005-01-31 2006-08-03 Matsushita Electric Ind Co Ltd アクセス調停装置、および調停可能条件検証装置
JP4839155B2 (ja) * 2006-08-31 2011-12-21 富士通セミコンダクター株式会社 アクセス調停装置およびアクセス調停方法
JP2008097214A (ja) * 2006-10-10 2008-04-24 Hitachi Ltd アクセス権管理方法、管理計算機、及び管理プログラム
US7685346B2 (en) * 2007-06-26 2010-03-23 Intel Corporation Demotion-based arbitration
US8965881B2 (en) * 2008-08-15 2015-02-24 Athena A. Smyros Systems and methods for searching an index
US8667197B2 (en) 2010-09-08 2014-03-04 Intel Corporation Providing a fine-grained arbitration system
US9921967B2 (en) 2011-07-26 2018-03-20 Intel Corporation Multi-core shared page miss handler
US9699239B1 (en) * 2012-01-12 2017-07-04 Televoice, Inc. Systems and methods for contact management
US20160171167A9 (en) * 2012-07-02 2016-06-16 Physio-Control, Inc. Clinical dashboard for medical device

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3701109A (en) * 1970-11-09 1972-10-24 Bell Telephone Labor Inc Priority access system
US4760515A (en) * 1985-10-28 1988-07-26 International Business Machines Corporation Arbitration apparatus for determining priority of access to a shared bus on a rotating priority basis
US4979100A (en) * 1988-04-01 1990-12-18 Sprint International Communications Corp. Communication processor for a packet-switched network
US4953081A (en) * 1988-12-21 1990-08-28 International Business Machines Corporation Least recently used arbiter with programmable high priority mode and performance monitor
US5303382A (en) 1989-09-21 1994-04-12 Digital Equipment Corporation Arbiter with programmable dynamic request prioritization
US5241632A (en) * 1992-01-30 1993-08-31 Digital Equipment Corporation Programmable priority arbiter
US5623672A (en) * 1994-12-23 1997-04-22 Cirrus Logic, Inc. Arrangement and method of arbitration for a resource with shared user request signals and dynamic priority assignment
US5778200A (en) * 1995-11-21 1998-07-07 Advanced Micro Devices, Inc. Bus arbiter including aging factor counters to dynamically vary arbitration priority
US6385678B2 (en) * 1996-09-19 2002-05-07 Trimedia Technologies, Inc. Method and apparatus for bus arbitration with weighted bandwidth allocation
US5784569A (en) * 1996-09-23 1998-07-21 Silicon Graphics, Inc. Guaranteed bandwidth allocation method in a computer system for input/output data transfers
US6076132A (en) * 1997-05-28 2000-06-13 Integrated Memory Logic, Inc. Arbitration method and circuit to increase access without increasing latency
US6199127B1 (en) * 1997-12-24 2001-03-06 Intel Corporation Method and apparatus for throttling high priority memory accesses
US6363445B1 (en) * 1998-10-15 2002-03-26 Micron Technology, Inc. Method of bus arbitration using requesting device bandwidth and priority ranking

Also Published As

Publication number Publication date
DE60029167D1 (de) 2006-08-17
EP1076293B1 (de) 2006-07-05
GB9919208D0 (en) 1999-10-20
US6618778B1 (en) 2003-09-09
EP1076293A1 (de) 2001-02-14

Similar Documents

Publication Publication Date Title
DE60029167T2 (de) Arbiter und Arbitrierungsverfahren
DE69023018T2 (de) Prozessor-Unterbrechungssteuerung.
DE3642324C2 (de) Multiprozessoranlage mit Prozessor-Zugriffssteuerung
DE60037065T2 (de) Übertragungsteuerung mit Naben- und Torachitektur
DE3134428C2 (de)
DE60223394T2 (de) Verfahren und vorrichtung zum einteilen von anforderungen für einen dynamischen direktzugriffsspeicherbaustein
DE4118331C2 (de) Bussystem zur Anwendung bei einem Informationsverarbeitungsgerät
DE102008034500B4 (de) Arbitrierung
DE69032862T2 (de) Intelligenter Ein-/Ausgabeprozessor und Datenverarbeitungssystem
DE69027515T2 (de) Vorrichtung für Prioritätsarbitrierungskonditionierung bei gepufferter Direktspeicheradressierung
DE69419680T2 (de) Skalierbare Unterbrechungsstruktur für ein Simultanverarbeitungssystem
DE19807872A1 (de) Verfahren zur Verwaltung von Konfigurationsdaten in Datenflußprozessoren sowie Bausteinen mit zwei- oder mehrdimensionalen programmierbaren Zellstruktur (FPGAs, DPGAs, o. dgl.
DE10296959T5 (de) System und Verfahren zum Steuern der Buszuteilung während Cache-Speicher-Burstzyklen
CH628167A5 (de) Prozessoreinrichtung zur prioritaetssteuerung der zugriffe zum gemeinsam benutzten arbeitsspeicher einer mehrprozessoranlage.
DE3783061T2 (de) Datenverarbeitungssystem mit veraenderbarer ein/ausgabe-prioritaetswahl.
DE69230483T2 (de) Quadraturbusprotokoll zum Ausführen von Transaktionen in einer Rechneranordnung
EP0062141B1 (de) Schaltungsanordnung zur Eingabe von Steuerbefehlen in ein Mikrocomputersystem
DE60009817T2 (de) Gemeinsamen Speicher verteilende Multiprozessorvorrichtung
DE102004013635B4 (de) Verfahren zur Vergabe von Buszugriffsrechten in Multimaster-Bussystemen, sowie Multimaster-Bussystem zur Durchführung des Verfahrens
DE10052132A1 (de) Graphikprozessor mit mehrfachen geometrischen Arbeitseinheiten und Verfahren zum Datenverarbeiten
DE69934823T2 (de) Verfahren zur last-regulierung
DE68916413T2 (de) Vermittlungssystem für den gleichzeitigen Datentransfer zwischen Datenprozessoren.
DE2900460A1 (de) Warteschlangenstruktur
DE3247083A1 (de) Mehrprozessorsystem
DE102005010931A1 (de) Mehrtordirektzugriffsspeicher

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee