-
Gebiet der
Erfindung
-
Die
vorliegende Erfindung bezieht sich auf Arbitrierungsverfahren, die
im Rahmen von Informationsverarbeitungssystemen implementiert werden.
-
Beschreibung
des Standes der Technik
-
Die
zunehmende Komplexität
hinsichtlich der Architektur von Informationsverarbeitungssystemen
und insbesondere der so genannten "eingebetteten" Systeme macht die Optimierung der Zyklen der Übertragung
(Transfer) des Datenstroms von den so genannten "Initiatoren" zu den so genannten "Zielen" (Targets) eines
Systems immer wichtiger.
-
Allgemein
ist definitionsgemäß ein Initiator eine
beliebige Einheit, die autonom eine Transaktion einleiten kann,
mit der sie die Benutzung einer Ressource (zum Beispiel eines dedizierten
oder gemeinsam genutzten Busses) beansprucht, um Daten zu lesen
oder zu schreiben.
-
Definitionsgemäß ist ein
Ziel eine beliebige Einheit, von der ausgehend oder mit der ein
Initiator Daten lesen oder schreiben kann.
-
Ein
System, wie zum Beispiel ein eingebettetes System, kann eine große Anzahl
von Initiatoreinheiten und auch eine große Anzahl von Zieleinheiten aufweisen.
-
Zu
dem Zeitpunkt, in dem zwei oder mehr Initiatoren gleichzeitig versuchen,
eine Transaktion zu starten, die auf ein identisches Ziel gerichtet
ist, ist es notwendig, den Konflikt mittels einer Arbitrierungsfunktion
zu lösen.
Die Implementierung einer derartigen Funktion kann, insbesondere
hinsichtlich der Ausführungsgeschwindigkeit,
oft sehr aufwendig sein.
-
In 2 der
beiliegenden Zeichnungen ist ein Arbitrierungsvorgang gezeigt, der
gemäß einer Lösung des
Standes der Technik im Rahmen eines gattungsgemäßen Systems (zum Beispiel des
eingebetteten Typs) durchgeführt
wird, das in 1 dargestellt ist, wobei sich
diese Figur selbst sowohl auf den Stand der Technik als auch auf
die vorliegende Erfindung bezieht.
-
Zum
Zeitpunkt des Beginns der entsprechenden Transaktion legt jeder
Initiator I1, I2, I3 usw. dem so genannten Systemarbitrator A eine
Priorität vor,
der den Konflikt dadurch löst,
dass er den Beginn der Transaktionen denjenigen Initiatoren ermöglicht, welche
die höchste
Priorität
haben, und einen nach dem anderen zu denjenigen mit der niedrigsten
Priorität
fortschreitet. Datentransaktionen zu einem beliebigen Ziel T werden
daher durch den Arbitrator A geregelt, der die möglichen Konflikte mittels der
Prioritätsinformation
löst, die
von den Initiatoren selbst geliefert wird. Eine Transaktion besteht
aus dem Transfer eines Datenpakets vom beteiligten Initiator zum Ziel
T oder umgekehrt.
-
Zum
Zeitpunkt des Beginns der Transaktion legt jeder Initiator I1, I2,
I3 usw. dem Arbitrator A ein Anfragesignal vor. Der Arbitrator gibt
mittels eines Bewilligungssignals, das dem Initiator mit der höchsten Priorität, unter
denjenigen, welche gleichzeitig die Transaktion beginnen möchten, zugesendet
wird, zu erkennen, dass die Transaktion angenommen wurde. Dann signalisiert
er in den nachfolgenden Zyklen die Annahme der Transaktionen an
diejenigen Initiatoren, welche niedrigere Prioritäten haben,
wenn die Transaktionen mit den höheren
Prioritäten
abgeschlossen sind.
-
Dieser
Vorgang ist in 2 anhand eines Systems schematisch
gezeigt, das drei Initiatoren I1, I2, I3 und ein Ziel T aufweist.
Der Arbitrator A, der gemäß dem im
Diagramm in 2 oben gezeigten Taktsignal
betrieben wird, löst
jegliche Konflikte auf der Grundlage der Prioritäten, die zu den in der Figur gezeigten
Zeiten empfangen wurden. All dies erfolgt, indem im Grunde genommen
ein Mechanismus zum Vergleich der Ungleichheiten der Reihenfolge
angewendet wird, wie er in 2 dargestellt
ist. Hierbei wird angenommen, dass der Initiator I1 eine höhere Priorität als der
Initiator I2 hat, der seinerseits eine höhere Priorität als der
Initiator I3 hat, so dass Bewilligungen in der Reihenfolge zuerst
dem Initiator I1, dann dem Initiator I2 und schließlich dem
Initiator I3 gegeben werden.
-
Auch
wenn der oben beschriebene Mechanismus funktioniert, so hat er doch
intrinsische Grenzen hinsichtlich der Ausführungsgeschwindigkeit des Arbitrierungsalgorithmus,
der Empfindlichkeit der Ausführungsgeschwindigkeit
der Arbitrierung gegenüber
der Codierung der Priorität
(typischerweise eine generische Anzahl n von Bits) und hinsichtlich
einer merklichen Erhöhung
der Ausführungsverzögerung mit
der Erhöhung
der Anzahl von Initiatoren. Aus der
EP 552 507 A geht ein Arbitrierungssystem
hervor, bei dem relative Prioritätssignale
aus Teilmengen von Eingabesignalen abgeleitet werden. Nach der Konfliktlösung wird
ein absolutes Prioritätssignal
erzeugt.
-
Aufgaben und
Zusammenfassung der Erfindung
-
Aufgabe
der vorliegenden Erfindung ist es, eine Lösung vorzusehen, welche die
oben erwähnten Nachteile überwinden
kann.
-
Erfindungsgemäß wird diese
Aufgabe anhand eines Arbitrierungsverfahrens gelöst, das die spezifisch in den
beiliegenden Ansprüchen
geforderten Merkmale hat. Die Erfindung bezieht sich auch auf das
entsprechende System.
-
Das
erfindungsgemäße Arbitrierungsverfahren
ist im Wesentlichen ein Arbitrierungsmechanismus mit variabler Priorität, der vorteilhafterweise
in Hochgeschwindigkeitsanwendungen, wie zum Beispiel in Decodern
für HDTV-Signale, verwendet
werden kann. Das entsprechende Verbindungsuntersystem, das drei
Initiatoren bzw. anfordernde Einheiten (LMI, Aufwärtsschnittstelle
und GPx-Schnittstelleneinheiten)
und ein Ziel T (die SDRAM-Speicherschnittstelle) umfasst, kann mit
einem Taktsignal, zum Beispiel mit 100 MHz, betrieben werden. Die
erfindungsgemäße Lösung ermöglicht es,
zwischen Prozessen zu unterscheiden, die unterschiedliche Prioritäten haben,
die über
denselben Initiator auf den externen SDRAM zugreifen können.
-
Allgemein
kann die erfindungsgemäße Lösung jedoch
auch in N × M-Systemen
(d.h. mit N Initiatoren und M Zielen) eingesetzt werden, indem für jede Zieladresse
ein Arbitrator eingeführt
wird. Die Ausführungszeit
des Vorgangs verlängert
sich nur auf Grund der Decodierung der Zieladresse; das heißt – unter
Bezugnahme auf aktuelle Technologien (wie zum Beispiel die 0,25-Mikrometer-Technologie) – mit Werten
von wenigen Zehnteln von Nanosekunden für jede Zieladresse.
-
Kurze Beschreibung
der Zeichnungen
-
Es
folgt eine Beschreibung der vorliegenden Erfindung lediglich als
ein nicht einschränkendes
Beispiel anhand der beiliegenden Zeichnungen.
-
Die 1 und 2,
wobei sich die letztere spezifisch auf den Stand der Technik bezieht,
wurden schon im Voraus beschrieben; und
-
3 zeigt
in der Form eines Blockdiagramms, die mögliche Architektur eines Arbitrierungssystems,
das erfindungsgemäß betrieben
wird.
-
Detaillierte Beschreibung
einer bevorzugten Ausführungsform
der Erfindung
-
Die
erfindungsgemäße Lösung ist
dazu konstruiert, dass sie in einer Situation betrieben wird, die hinsichtlich
der Aspekte allgemeinerer Art der in 1 dargestellten
Lösung
entspricht.
-
Insbesondere
stellt das Blockdiagramm von 3 die Architektur
des Arbitrators A dar, der zum Implementieren der erfindungsgemäßen Lösung in einem
eingebetteten System eingesetzt werden kann, bei dem drei Initiatoren
I1, I2 und I3, die konstruktionsgemäß auf ein einziges Ziel T zugreifen, vorhanden
sind.
-
In
der Praxis umfasst die Architektur des in 3 dargestellten
Arbitrators drei Stufen, die mit A1, A2 und A3 bezeichnet und dazu
konstruiert sind, in einer abgestuften Anordnung drei aufeinanderfolgende
Schritte des Arbitrierungsvorgangs durchzuführen.
-
Die
oben erwähnten
Schritte (und folglich die entsprechenden Stufen A1, A2 und A3)
können
allgemein wie folgt identifiziert werden:
- – Vergleich
von Prioritäten
(Stufe A1);
- – Überkreuz-Erzeugung
von Anfragen (Stufe A2); und
- – Überkreuz-Erzeugung
von Bewilligungen (Stufe A3).
-
Jede
der Stufen A1, A2 und A3 weist ihrerseits drei Module oder Blöcke auf,
die im Wesentlichen miteinander identisch sind.
-
Die
drei Blöcke
der Stufe A1, die mit A11, A12 und A13 bezeichnet sind, empfangen
als ihre Eingaben die Prioritätssignale
oder Daten, die einem entsprechenden Paar von Initiatoren entsprechen; diese
sind (in der gezeigten Ausführungsform)
in dieser Reihenfolge das Paar I1, I2, das Paar I1, I3 und das Paar
I2, I3.
-
Die
entsprechenden Ausgabesignale werden in dieser Reihenfolge an die
Module der Stufe A2, die mit A21, A22 und A23 bezeichnet sind, gesendet.
Die letzteren empfangen in der entsprechenden Reihenfolge ebenfalls
die von den Initiatoren des Paares I1, I2, des Paares I1, I3 bzw.
des Paares I2, I3 erzeugten Anfragesignale.
-
Jedes
der Module A21, A22 und A23 erzeugt als seine Ausgabe zwei Überkreuz-Anfrage-Signale, die
ihrer Bestimmung gemäß an die
drei Module der Stufe A3, die in ihrer Reihenfolge mit A31, A32
und A33 bezeichnet sind, zu senden sind.
-
Insbesondere
wird von den beiden Ausgaben der Module A21, eine an das Modul A31
und die andere an das Modul A32 gesendet. Von den beiden Ausgaben
der Module A22 wird eine an das Modul A31 und die andere an das
Modul A33 gesendet. Schließlich
wird von den beiden Ausgaben des Moduls A23 eine an das Modul A32
und die andere an das Modul A33 gesendet.
-
Die
Ausgabesignale der Module A31, A32 und A33 stellen die Bewilligungssignale
dar, welche die Ergebnisse des Arbitrierungsvorgangs repräsentieren,
und werden ihrer Bestimmung gemäß dem Initiator
I1, dem Initiator I2 bzw. dem Initiator I3 zugewiesen.
-
Im
Folgenden wird in der vorliegenden Beschreibung der erfindungsgemäße Arbitrierungsvorgang
jedoch unter allgemeiner Bezugnahme auf das generische Vorhandensein
von N Initiatoren bzw. anfragenden Einheiten beschrieben.
-
Stufe Nr. 1: Vergleich
-
Angenommen,
es gibt N anfordernde Einheiten und der i-ten anfordernden Einheit
ist die Priorität Pi
zugeordnet (zum Beispiel ist P1 die Priorität für die anfordernde Einheit 1),
werden die folgenden Operationen parallel durchgeführt.
P1 >= P2 (erzeugt das Signal
sel1not2, hoch, wenn das Ergebnis der Operation wahr ist)
P1 >= P3 (erzeugt das Signal
sel1not3)
...
P1 >=
Pn (erzeugt das Signal sel1notn)
P2 >= P3 (erzeugt das Signal sel2not3)
P2 >= P4 (erzeugt das Signal
sel2not4)
...
P2 >=
P3 (erzeugt das Signal sel2notn)
...
Pn-1 >= Pn (erzeugt das Signal
sel1n-1notn)
-
Daher
erzeugt allgemein ausgedrückt
für jedes
Paar anfordernder Einheiten, die allgemein als x und y bezeichnet
sind, die Stufe A1 das Signal selxnoty mit einem hohen Pegel, wenn
Px >= Py zutrifft.
-
Zum
Beispiel:
- 1. bei 2 anfordernden Einheiten:
P1 >= P2 (1 Komparator)
- 2. bei 3 anfordernden Einheiten: P1 >= P2, P1 >= P3, P2 >= P3 (2 Komparatoren)
- 3. bei 4 anfordernden Einheiten: P1 >= P2, P1 >= P3, P1 >= P4, P2 >= P3, P2 >= P4, P3 >= P4 (6 Komparatoren)
- 4. bei 6 anfordernden Einheiten: P1 >= P2, P1 >= P3, P1 >= P4, P1 >= P5, P1 >= P6, P2 >= P3, P2 >= P4, P2 >= P5, P2 >= P6, P3 >= P4, P3 >= P5, P3 >= P6, P4 >= P5, P4 >= P6, P5 >= P6 (insgesamt 15 Komparatoren)
- 5. bei n anfordernden Einheiten: (insgesamt = 1 + 2 + 3 + 4
+ ... n – 2
+ n – 1,
was mit y = n – 1
insgesamt bedeutet, dass es (y/2*(y + 1)) Komparatoren gibt.
-
Vorzugsweise
werden alle Vergleiche gleichzeitig durchgeführt und hängt ihre Komplexität von der
Prioritätsauswahl
ab. Zum Beispiel kann bei einem HDTV-Decoder die Prioritätsauswahl von 0 bis 15 reichen.
-
Stufe Nr. 2: Überkreuz-Erzeugung
von Anfragen
-
Diese
Stufe verwendet die von den Initiatoren kommenden Anfragen und die
von den Komparatoren der übergeordneten
Stufe kommenden Ergebnisse, um so Zwischenparameter zu berechnen,
die für
die Erzeugung der Bewilligungen nützlich sind.
-
Insbesondere
wird die folgende Funktion implementiert: req_arb (selxnoty, req_x,
req_y, req_x_y, req_y_x), wobei req_x (bzw. req_y) die Anfrage ist, die
vom Initiator x (bzw. y) kommt, während req_x_y und req_y_x die
entsprechenden Ausgaben der folgenden Funktionen sind:
req_x_y
= req_y AND (selxnoty OR NOT req_y), and
req_y_x = req_y AND
(NOT selxnoty) OR (NOT req_x)).
-
In
der Praxis entspricht req_arb einem Modul mit drei Eingaben (INPUTS)
und zwei Ausgaben (OUTPUTS):
req_arb (INPUTS: selxnoty, reqx,
reqy
OUTPUTS: reqx_y, reqy_x)
-
Hierdurch
wird eine Arbitrierungsfunktion zwischen den Anfragenpaaren reqx,
reqy durchgeführt
(in dem in 3 gezeigten Beispiel: req1,
req2 oder req1, req3 oder aber req2, req3), wobei das Ergebnis in
einem One-Hot-Coding-Verfahren codiert wird, d.h. es gibt n Ergebnisse,
die unter der Verwendung von n binären Zahlen darstellbar sind,
im vorliegenden Fall 01 bzw. 10.
-
Das
Ergebnis einer solchen Operation hängt von den folgenden Faktoren
ab:
- i) Priorität von reqx bezüglich reqy:
reqx hat dabei eine höhere
Priorität
als reqy, wenn selxnoty auf einem hohen logischen Pegel ist, und
umgekehrt, wenn es bei einem niedrigen logischen Pegel ist;
- ii) Anwesenheit der Anfragen: Die Entscheidung wird beeinflusst
durch die tatsächliche
Anwesenheit von Anfragen; es könnte
nämlich
in der Situation, in der selxnoty auf einem hohen logischen Pegel
ist, reqy bedient werden (wobei das nur ein Zwischenergebnis wäre), wenn
kein reqx vorliegt.
-
Daraus
folgt:
- – Die
Ausgabe reqx_y ist dann auf einem hohen logischen Pegel (reqx wird
mit Sicherheit gegenüber
reqy bevorzugt), wenn das Signal reqx auf einem hohen logischen
Pegel ist (Anwesenheit der Anfrage) und wenn gleichzeitig reqx eine
höhere Priorität als reqy
hat (selxnoty auf einem hohen logischen Pegel ist) oder wenn reqy
auf einem niedrigen logischen Pegel ist (Abwesenheit einer Anfrage);
- – Die
Ausgabe reqy_x ist dann auf einem hohen logischen Pegel (reqy wird
mit Sicherheit gegenüber
reqx bevorzugt), wenn das Signal reqy auf einem hohen logischen
Pegel ist (Anwesenheit der Anfrage) und gleichzeitig, wenn reqy
die höhere Priorität als reqx
hat (selxnoty auf einem niedrigen logischen Pegel ist) oder wenn
reqx auf einem niedrigen logischen Pegel ist (Abwesenheit einer Anfrage).
-
Insgesamt
werden y/2*(y + 1) req_arb-Module benötigt.
-
Stufe Nr. 3: Überkreuz-Erzeugung
von Bewilligungen
-
Nachdem
die Anfragen umgeordnet wurden, besteht die abschließende Operation
aus der Erzeugung der Bewilligungen (Grants).
-
Für jede i-te
anfordernde Einheit wird die Bewilligung grant_i einfach dadurch
erhalten, dass unter allen Signalen req_i_x die logische UND-Operation
(AND) durchgeführt
wird, mit x von 1 bis N, wobei der Fall von x = i ausgeschlossen
ist.
-
Beispiele:
-
a) 3 anfordernde Einheiten
-
Stufe 1:
-
Parallele
Berechnung von
P1 >=
P2, P1 >= P3, P2 >= P3
-
Stufe 2:
-
Parallele
Berechnung von
req_arb (P1 >=
P2, req1, req2, req1_2, req2_1)
req_arb (P1 >= P3, req1, req3, req1_3,
req3_1)
req_arb (P2 >=
P3, req2, req3, req2_3, req3_2)
-
Stufe 3:
-
- grant1 = req1_2 AND req1_3
- grant2 = req2_1 AND req2_3
- grant3 = req3_1 AND req3_2
-
b) 4 anfordernde Einheiten
-
Stufe 1:
-
Parallele
Berechnung von
P1 >=
P2, P1 >= P3, P1 >= P4, P2 >= P3, P2 >= P4, P3 >= P4
-
Stufe 2:
-
Parallele
Berechnung von
req_arb (P1 >=
P2, req1, req2, req1_2, req2_1)
req_arb (P1 >= P3, req1, req3, req1_3,
req3_1)
req_arb (P1 >=
P4, req1, req4, req1_4, req4_1)
req_arb (P2 >= P3, req2, req3, req2_3,
req3_2)
req_arb (P2 >=
P4, req2, req4, req2_4, req4_2)
req_arb (P3 >= P4, req3, req4, req3_4,
req4_3)
-
Stufe 3:
-
- grant1 = req1_2 AND req1_3 AND req1_4
- grant2 = req2_1 AND req2_3 AND req2_4
- grant3 = req3_1 AND req3_2 AND req3_4
- grant4 = req4_1 AND req4_2 AND req4_3
-
Zusammengefasst
ermöglicht
die erfindungsgemäße Lösung eine
schnellere Ausführung des
Arbitrierungsalgorithmus mit variabler Priorität. All dies in einer Situation,
in der die Ausführungszeit gegenüber der
Codierung der Priorität
nicht sehr empfindlich ist. Außerdem
wird die Ausführungszeit der
Arbitrierung von der Anzahl von Initiatoren nicht stark beeinflusst.
Die Implementierung ist modular, wobei die sie auszeichnenden Elemente
(siehe Darstellung von 3) zum Implementieren von Arbitratoren
mit einer generischen Anzahl n von Wahlmöglichkeiten repliziert werden
können.
-
Zum
Beispiel hat sich bei vom vorliegenden Anmelder durchgeführten Experimenten
herausgestellt, dass im Falle eines eingebetteten Systems mit 9
Initiatoren in 0,25-Mikrometer-Technik die Erzeugungszeit der Bewilligungen
gegenüber
den Anfragen 3 Nanosekunden betrug.
-
Selbstverständlich können ohne
Beeinträchtigung
des Prinzips der vorliegenden Erfindung die Konstruktionseinzelheiten
und die Ausführungsformen
gegenüber
dem hier Beschriebenen und Veranschaulichten weit abweichen, ohne
dass dadurch vom Umfang der vorliegenden Erfindung abgewichen wird,
wie er in den beiliegenden Ansprüchen
definiert ist.