-
Die
vorliegende Erfindung bezieht sich auf einen PCI-Arbiter (PCI =
Peripheral Component Interconnect), und insbesondere auf einen PCI-Arbiter mit
einem dynamischen Prioritätsschema.
-
Ein
PCI-Bus (PCI = Peripheral Component Interconnect) ist ein Industriestandard-Erweiterungsbus,
welcher viel von der Information und den Signalen eines Computersystems übermittelt.
Idealerweise sollte, wenn das Computersystem seine Programmierung
ausführt,
Information möglichst
schnell fließen,
um sicherzustellen, dass der Computer auf den Benutzer reagiert.
Um Fehler in der Übertragung
von jener Information zu vermeiden, schließt eine Ausführung eines
PCI-Busses eine spezielle logische Schaltung und zugeordnete Signale
ein, um den Fluss von jeder Information zu steuern.
-
Insbesondere
ermöglicht
ein typischer PCI-Bus einem Buscontroller, auch Arbiter genannt, Busübertragungen
zu steuern. Eine Vorrichtung, welche die Steuerung des Busses übernimmt,
um seine eigene Übertragung
abzuwickeln, wird "Master" genannt, wohingegen
eine Vorrichtung, welche Daten von dem Master empfängt, als "Ziel" bezeichnet wird. Der
Arbiter verwendet einen Algorithmus, um zu ermitteln, welcher Master
die Steuerung des Busses übernehmen
kann und um die Zeitspanne jener Steuerung zu ermitteln.
-
Eine
Arbitration muss die konkurrierenden Ziele von Fairness und Priorität lösen. Fairness
erfordert, dass es nicht einem Master erlaubt sein sollte, das Monopol über den
Bus zu erringen. Priorität
jedoch erfordert, dass unter gewissen Umständen vorbestimmte Master-Vorrichtungen den
Bus häufiger nützen sollten,
um zeitkritische Ziele zu erreichen. Einige typische von Arbitern
verwendete Algorithmen sind die Single-Level Round Robin, Multi-Level Round Robin,
Least Recently Used und die Priority Based Verfahren.
-
Im
Single Level Round Robin Verfahren wird eine kleine Zeiteinheit,
d.h. ein Quantum, definiert. Alle Prozesse (welche mit bestimmten
Master-Vorrichtungen verbunden sind) werden in eine Kreis-Warteschlange
eingefügt.
Der Arbiter folgt der Warteschlange und reserviert die Verwendung
des Busses durch einen Master, um den Prozess für die Dauer eines Zeitintervalls
von einem Quantum durchzuführen.
Ein beliebiger neuer Prozess wird nach dem letzten Prozess in der
Warteschlange hinzugefügt.
-
Wenn
der Prozess vor dem Ende des Quantums beendet ist, gibt der Master
den Bus freiwillig frei. Jedoch wird, falls der Prozess am Ende
des Quantums noch läuft,
der Master abgelöst
und der Prozess an das Ende der Warteschlange hinzugefügt. In jedem
Fall ordnet der Arbiter den Bus zu dem nächsten Prozess in der Warteschlange
zu.
-
Im
Multi-Level Round Robin Verfahren werden mindestens zwei Kreis-Warteschlangen
gebildet. Zum Beispiel, unter der Annahme, dass eine erste und zweite
Warteschlange gebildet werden, werden Prozesse, welche den Bus häufig nützen, in
der ersten Warteschlange und Prozesse, welche den Bus weniger häufig nützen, in
der zweiten Warteschlange angeordnet. Prozesse in der zweiten Warteschlange haben
gleichen Zugriff auf den Bus, wenn sie in der gleichen Warteschlange
sind. Jedoch haben die Prozesse in der zweiten Warteschlange, als
Gruppe, gleichen Zugriff auf den Bus wie jeder Prozess in der ersten
Warteschlange. Mit anderen Worten, die Prozesse der zweiten Warteschlange
bilden gewissermaßen
einen "Super-Prozess", wobei der Super-Prozess
als einer der Prozesse in der ersten Warteschlange angesehen wird.
Daher wird für
jede Runde der Prozesse in der ersten Warteschlange ein Prozess
in der zweiten Warteschlange ausgeführt. In diesem Verfahren gibt
der Master den Bus freiwillig frei, wenn der Prozess vor dem Ende
des Quantums beendet ist. Jedoch wird, wenn der Prozess am Ende des
Quantums noch läuft,
der Master abgelöst
und der Prozess wird an das Ende der geeigneten Warteschlange hinzugefügt.
-
Im
Least Recently Used Verfahren wird eine beliebige Warteschlange
gebildet. Anfänglich
folgt der Arbiter der Warteschlange und lässt jeden Prozess abschließen, bevor
er dem nächsten
Master in der Warteschlange ermöglicht,
die Steuerung des Busses zu erlangen. Wenn jedoch der Arbiter eine Anfrage
nach einer Steuerung des Busses von einem Master empfängt, welcher
nicht der nächste
in der Warteschlange ist, gibt der Arbiter die Steuerung des Busses
(nach Beendigung des laufenden Prozesses) an den Master, dessen
Benutzung des Busses am längsten
zurückliegt.
-
Schließlich, in
einem Priority-Based Verfahren, entscheidet der Arbiter über die
Steuerung des Busses allein basierend auf der Priorität des zugeordneten
von dem Master durchgeführten
Prozesses. In diesem Verfahren wird jeder Prozess vollendet, bevor
der nächste
Prozess begonnen wird.
-
Jedes
der oben beschriebenen Verfahren hat seine Nachteile. Zum Beispiel,
sowohl im Single-, als auch Multi-Level Round Robin Verfahren, gewährt ein
Quantum einem Master vielleicht nicht die Zeit, um einen kritischen
Prozess zu beenden. Demzufolge kann die Vollendung jenes kritischen
Prozesses mehrere vollständige
Durchläufe
der Warteschlange erfordern, wodurch eine erhebliche Ineffizienz
in das System eingebracht wird.
-
Im
Least Recently Used Verfahren erlangen Prozesse, welche nicht kritisch
sind, mehr Kontrolle über
den Bus als in anderen Verfahren. Obwohl dies den weniger häufig benützten Prozessen
eine Gelegenheit bietet, abzuschließen, erfordert sie auch, dass
Zeit-Resourcen für
andere kritischere Prozesse verloren gehen. Daher führt diese
Verfahren auch häufig
zu signifikanter Ineffizienz in dem System.
-
Im
Priority Based Verfahren werden, abhängig von der durch das System
zu vollendenden Aufgabe, nicht-kritische Prozesse vielleicht nur
selten ausgeführt.
Obwohl diese nicht-kritischen
Prozesse sich vielleicht nur auf Prozesse beziehen, wie Erweiterungsbus-Anfragen, kann eine
sporadische oder sogar eine Nicht-Ausführung jener Prozesse zu einer gewissen
Systemineffizienz beitragen.
-
All
diese Verfahren verwenden statische Algorithmen, um die Steuerung über den
Bus festzulegen. Wie oben dargelegt, scheitert jeder dieser statischen
Algorithmen daran, die Flexibilität bereitzustellen, um die Systemeffizienz
zu optimieren. Daher besteht ein Bedarf nach einem flexiblen Arbitrationsschema,
welches eine Systemeffizienz optimiert.
-
US-A-5
592 631 betrifft ein System und ein Verfahren zum Entkoppeln der
Adress- und Datenbusse eines Computersystems, welches eine Vielzahl
von Master- und Slave-Vorrichtungen
aufweist, wobei den Master-Vorrichtungen der Zugriff auf den Datenbus
basierend auf einer festen Prioritätsordnung der Master-Vorrichtungen
gewährt
wird.
-
Es
ist eine Aufgabe der vorliegenden Erfindung, ein Busarbitrationsschema
bereitzustellen, welches die Effizienz von Datenübertragungen auf einem PCI-Bus
verbessert.
-
Diese
Aufgabe wird durch das Verfahren gemäß Anspruch 1 und durch das
System gemäß Anspruch
5 erfüllt.
Bevorzugte Ausführungsbeispiele der
vorliegenden Erfindung sind in den abhängigen Ansprüchen definiert.
-
Die
vorliegende Erfindung stellt ein dynamisches Prioritätsschema
bereit, welches beim Entscheiden, welchem Master das Eigentum an
einem PCI-Bus zugeordnet werden soll, Information verwendet, die
den Status des Ziels und Datenverfügbarkeit einschließt, wodurch
Leistung und Ausnutzung des PCI-Busses optimiert werden. Insbesondere
stellt die vorliegende Erfindung mehrere Stufen von Master-Priorität zur Verfügung. In
einem Ausführungsbeispiel
werden drei Prioritätsstufen
bereitgestellt: HIGH, MEDIUM und LOW.
-
Sobald
eine Anfrage von einem Master gesendet wird, gibt ein Arbiter in
dem System ein vorläufiges
Gewährungssignal
an den Master aus. An diesem Punkt ordnet der Arbiter in dem System
dem anfragenden Master eine MEDIUM-Priorität zu und leitet die Anfrage
an das Ziel weiter. Der Arbiter entscheidet dann, ob Daten von dem
Ziel verfügbar
sind. Wenn die Daten verfügbar
sind, ordnet der Arbiter dem anfragenden Master eine HIGH-Piorität neu zu. Jedoch,
wenn die Daten nicht verfügbar
sind, dann ordnet der Arbiter dem anfragenden Master eine LOW-Priorität neu zu
und übergeht
den anfragenden Master, bis dem Arbiter mitgeteilt wird, dass Daten von
dem Ziel verfügbar
sind.
-
Gemäß der vorliegenden
Erfindung schließt jedes
Ziel eine Speicherschnittstelle ein, um den Priorisierungsprozess
zu erleichtern. Insbesondere speichert das Ziel auf einen Empfang
einer Speicherzugriffsanfrage von einem Master (über den Arbiter) diese Anfrage
in einer Anfrage-Warteschlange ab, welche einen Teil der Speicherschnittstelle
bildet, und fährt
dann fort, die benötigte
Information zu erfassen, um den Zugriff auf den Speicher zu vervollständigen.
Nachdem die Daten in die Anfrage-Warteschlange kopiert worden sind
(d.h. die Daten sind nun verfügbar),
erzeugt das Ziel eine Master-ID zum Auslösen einer Zustandsänderung
des anfragenden Masters. In einem bevorzugten Ausführungsbeispiel erzeugt
das Ziel die Master-ID, indem die Anfrage von dem Master (wird modifizierte
Anfrage genannt) verwendet wird. Diese Master-ID wird dann an den Arbiter
geliefert.
-
Nachdem
der Arbiter die modifizierte Anfrage empfangen hat, ändert der
Arbiter die Priorität
des Masters zu HIGH und sendet, in der Annahme, dass der PCI-Bus
verfügbar
ist und keine weiteren Master-Vorrichtungen eine frühere hohe
Priorität
besitzen, dem anfragenden Master ein endgültiges Gewährungssignal, wodurch dem Master
ermöglicht wird,
die Steuerung des PCI-Busses zu übernehmen. Es
ist zu beachten, dass, wenn der PCI-Bus gerade von einem weiteren
Master gesteuert wird, oder wenn andere Master-Vorrichtungen eine
frühere hohe
Priorität
besitzen, der Arbiter das endgültige Gewährungssignal
zu der nächsten
frühesten
Zeitspanne sendet, nachdem der Prozess, welcher von dem letzten
steuernden Master durchgeführt
wird, vollendet ist.
-
Um
weiter die Effizienz der vorliegenden Erfindung zu erhöhen, kann
die Anfrage-Warteschlange
ein Eingabe-/Ausgabe-Cache aufweisen. Ein Cache-Controller hält das Cache
mit Daten oder Befehlen gefüllt,
die eine oder mehrere Master-Vorrichtungen am wahrscheinlichsten
als Nächstes
benötigen. Auf
diese Weise kann Information ohne Verzögerung aufgerufen werden.
-
Kurze Beschreibung
der Zeichnungen
-
1 zeigt
ein vereinfachtes Diagramm einer PCI-Bus-Architektur.
-
2 zeigt
ein vereinfachtes Diagramm einer Anfrage-/Gewährungs-Architektur.
-
3 zeigt
ein Flussdiagramm des Prioritätsschemas
für einen
anfragenden Master.
-
4 zeigt
einen beispielhaften Priorisierungsprozess, welcher vier anfragende
Master-Vorrichtungen
einschließt.
-
5 zeigt
eine beispielhafte Anfrage-Warteschlange gemäß der vorliegenden Erfindung.
-
Ausführliche
Beschreibung der Zeichnungen
-
1 zeigt
eine PCI-Bus-Architektur 100, welche einen PCI-Bus 106 einschließt. Mit
dem PCI-Bus 106 sind die Master-Vorrichtungen 101A, 101B und 101C verbunden.
Ein Mikroprozessor 105 überträgt die Arbitration
von PCI-Bus 106 an einen Arbiter 103 (welcher
mit dem Mikroprozessor 105 über einen lokalen Bus 108 verbunden
ist) und wird von dem System als ein weiterer Master in der Architektur 100 betrachtet.
An diesem Punkt, wenn der Mikroprozessor 105 nicht die
Steuerung wiederaufnimmt, ordnet der Arbiter 103 das Eigentum
an dem PCI-Bus 106 an anfragende PCI-Master-Vorrichtungen
zu.
-
Ziele 102A und 102B,
auf welche jeder Master zugreifen kann, sind mit dem Arbiter 103 über Speicherbusse 107A bzw. 107B verbunden.
Zur Verwendung in dieser Beschreibung schließen die Ziele 102A und 102B zugeordnete
Speicher 104A bzw. 104B ein.
-
In
einer PCI-Ausführung
schließt
eine Bus-Arbitration die folgenden Schritte ein. Ein Master gibt
ein Anfragesignal (REQ) aus, wenn er die Steuerung des Busses übernehmen
will. Der Arbiter sendet ein Gewährungssignal
(GNT) an den Master, wenn die Erlaubnis gewährt wird, die Steuerung des Busses
zu übernehmen.
Bezugnehmend auf 2 hat jeder Master in der Anfrage-/Gewährungs-Architektur 200 seine
eigenen Verbindungen in einen PCI-Bus, um die Bussteuerung anzufragen
und die Bestätigung
zu empfangen, dass die Steuerung gewährt worden ist. Daher besitzt
jeder Master seine eigenen zugeordneten REQ# und GNT# Verbindungen,
wobei # den Master kennzeichnet. Wenn mehrere Master-Vorrichtungen PCI-Bus-Eigentum
anfordern, aktiviert jeder anfragende Master 101/103 seine
entsprechende Anfrageverbindung. Zum Beispiel stellt Master 101B seine
Anfrage, indem er die zugeordnete Anfrageverbindung REQ#2 verwendet.
Arbiter 103 ermittelt, welcher Master das Eigentum an dem
PCI-Bus 106 (1) erhalten soll und bestätigt die
jenem Master zugeordnete Gewährungsverbindung.
Zum Beispiel empfängt
Master 101B sein Gewährungssignal
von Arbiter 103 über
Verbindung GNT#2 (es ist zu beachten, dass, der Einfachheit halber,
sowohl die Anfrage-/Gewährungs-Verbindungen,
als auch die darauf befindlichen Signale mit den gleichen Kennungen
bezeichnet werden).
-
Gemäß der vorliegenden
Erfindung wird dynamische Information, wie der Zustand des Ziels,
auf welches der Master zugreift und die Verfügbarkeit der Daten, welche
die Master- Vorrichtung
anfragt, im Arbitrationsalgorithmus eingegliedert ist, wodurch die Systemleistung
stark erhöht
wird und die Systemeffizienz maximiert wird. Insbesondere schließt die Arbiter-Logik
in der vorliegenden Erfindung verschiedene Stufen von Master-Priorität ein.
-
In
einem Ausführungsbeispiel
werden drei Stufen von Priorität
bereitgestellt: HIGH, MEDIUM und LOW. Wie unten ausführlicher
beschrieben, besitzt ein Master, welcher eine Anfrage in der Anfrage-Warteschlange
des Ziels gesendet hat, aber keine verfügbaren Daten in dem Ziel hat,
eine LOW-Priorität.
Jeder Master, welcher seine Anfrage nicht in die Anfrage-Warteschlange
des Ziels gesendet hat, besitzt eine MEDIUM-Priorität. Schließlich besitzt
ein Master, welcher eine Anfrage in der Anfrage-Warteschlange des
Ziels gesendet hat, und Daten in dem Ziel verfügbar sind, eine HIGH-Priorität.
-
3 zeigt
ein Flussdiagramm 300, welches das Prioritätsschema
für jeden
Master gemäß der vorliegenden
Erfindung zusammenfasst. Nachdem der Priorisierungsprozess in Schritt 301 begonnen hat,
weist der Arbiter dem Master in Schritt 302 eine MEDIUM-Priorität zu. An
diesem Punkt ist der Master inaktiv, bis der Master ein Anfragesignal
ausgibt, wenn er die Steuerung des Busses in Schritt 303 übernehmen
will. Nachdem der Arbiter ein vorläufiges Gewährungssignal an den Master
in Schritt 304 gesendet hat, ermittelt der Arbiter in Schritt 305,
ob Daten von dem mit der Anfrage verbundenen Ziel verfügbar sind.
-
In
der Annahme, dass Daten nicht verfügbar sind, weist dann der Arbiter
dem Master in Schritt 306 eine LOW-Priorität zu. Der
Master behält
diese Priorität,
bis die Zieldaten verfügbar
sind, wie in Schritt 307 ermittelt. An diesem Punkt wird
die von dem Master gesendete Anfrage in Schritt 308 modifiziert (d.h.,
eine Master-ID wird erzeugt) und an den Arbiter gesendet. Nachdem
der Arbiter die modifizierte Anfrage erhalten hat, ändert er
die Priorität
des Masters zu einer HIGH-Priorität in Schritt 309.
-
In
der Annahme, dass der PCI-Bus verfügbar ist und keine weiteren
Master-Vorrichtungen mit einer HIGH-Priorität frühere Rechte an dem Bus besitzen, wie
in Schritt 310 ermittelt, sendet der Arbiter ein endgültiges Gewährungssignal
an den Master, wodurch dem Master ermöglicht wird, die Steuerung
des PCI-Busses zu übernehmen.
Nachdem die Daten in Schritt 311 von dem Ziel übertragen
worden sind, kehrt der Arbiter zu Schritt 302 zurück und ändert die Priorität des Masters
zurück
zu einer MEDIUM-Priorität.
Es ist zu beachten, dass, wenn Zieldaten in Schritt 305 verfügbar sind,
der Arbiter die Anfrage sofort in Schritt 308 modifiziert
und dann mit den Schritten 309–311 fortfährt, wie
oben beschrieben.
-
4 zeigt
einen beispielhaften Priorisierungsprozess, in welchem jede der
Master-Vorrichtungen 101A, 101B, 101C und 105 (der
Mikroprozessor) eine Bussteuerung anfragen. Zum Zeitpunkt t1 fragt
Master 105 eine Bussteuerung an. Demzufolge ordnet der
Arbiter dem Master 105 eine MEDIUM-Priorität zu. Zum
Zeitpunkt t2 fragt der Master 101A eine Bussteuerung zum
gleichen Zeitpunkt an, an welchem Daten für den Master 105 verfügbar werden. Gemäß der vorliegenden
Erfindung ordnet der Arbiter dem Master 101A eine MEDIUM-Priorität zu und ändert die
Priorität
von Master 105 zu einer HIGH-Priorität. Folglich wird dem Master 105 die Steuerung
des Busses zum Zeitpunkt t2 bis zum Vollenden seines Prozesses zum
Zeitpunkt t5 gegeben.
-
In
der Zwischenzeit sind Daten für
den Master 101A zum Zeitpunkt t3 nicht verfügbar. Demzufolge
ordnet der Arbiter zum Zeitpunkt t3 dem Master 101A eine
LOW-Priorität
neu zu. Auch zum Zeitpunkt t3 fragt der Master 101B eine
Bussteuerung an und ihm wird eine MEDIUM-Priorität zugeordnet. Zum Zeitpunkt
t4 werden Daten für
den Master 101B verfügbar.
Demzufolge weist der Arbiter dem Master 101B eine HIGH-Priorität neu zu
und ermöglicht
dem Master 101B, die Steuerung des Busses zum Zeitpunkt
t5 zu übernehmen
(d.h., nachdem der mit dem Master 105 verbundene Prozess
vollendet ist). Der von dem Master 101B durchgeführte Prozess
endet zum Zeitpunkt t6.
-
Es
ist zu beachten, dass zum Zeitpunkt t5 der Master 101C eine
Bussteuerung anfragt. Da jedoch Daten für den Master 101C zum
Zeitpunkt t6 nicht verfügbar
sind, weist der Arbiter dem Master 101C eine LOW-Priorität neu zu.
Daher besitzen zu diesem Zeitpunkt beide Master-Vorrichtungen 101A und 101C eine
LOW-Priorität.
Zum Zeitpunkt t7 werden Daten für
den Master 101C verfügbar.
Daher weist der Arbiter dem Master 101C eine HIGH-Priorität neu zu
und ermöglicht
dem Master 101C, die Steuerung des Busses zum Zeitpunkt
t7 zu übernehmen.
-
Zum
Zeitpunkt t7 fragt der Master 105 eine Steuerung des Busses
an und folglich wird ihm eine MEDIUM-Priorität zugeordnet. Zum Zeitpunkt
t8 werden Daten für
beide Master-Vorrichtungen 101A und 105 verfügbar. Gemäß der vorliegenden
Erfindung übernimmt
der Master 105 (welcher zuvor eine MEDIUM-Priorität besitzt)
die Steuerung des Busses vor dem Master 101A (welcher zuvor
eine LOW-Priorität besitzt).
Insbesondere übernimmt
der Master 105 die Steuerung zum Zeitpunkt t9, wenn der
von dem Master 101C durchgeführte Prozess vollendet ist.
Der Master 101A übernimmt
die Steuerung des Busses, nachdem der von dem Master 105 durchgeführte Prozess
vollendet ist.
-
Gemäß der vorliegenden
Erfindung schließt jedes
Ziel 102 eine Speicherschnittstelle ein, um den Priorisierungsprozess
zu vereinfachen. Zum Beispiel, bezugnehmend auf 2,
schließt
das Ziel 102A eine Schnittstelle 201A zu seinem
zugeordneten Speicher 104A ein und das Ziel 102B schließt eine
Schnittstelle 201B zu seinem zugeordneten Speicher 104B ein.
Das folgende Beispiel beschreibt die Funktionalität der Speicherschnittstelle 201A,
wobei die Funktionalität
von Speicherschnittstelle 201B identisch zu jener von Speicherschnittstelle 201A ist. Angenommen,
der Master 101A fragt einen Zugriff auf Speicher 104A an.
Eine Anfrage REQ#1 wird an den Arbiter 103 gesendet, welcher
dem Master 101A eine MEDIUM-Priorität zuordnet und die Anfrage
an das Ziel 102A weiterleitet. In einem Ausführungsbeispiel
wird die Anfrage REQ#1 an das Ziel 102A über einen
Speicherbus 107A (1) gesendet.
Jedoch wird in anderen Ausführungsbeispielen
die Anfrage REQ#1 zu dem Ziel 102A über eine zugeordnete Verbindung
gesendet, ebenso wie die Anfrage-/Gewährungs-Signale.
Auf den Empfang von REQ#1 hin fährt
das Ziel 102A fort, die Information zu erfassen, welche
zum Vervollständigen
des Zugriffs auf den Speicher 104A benötigt wird.
-
Die
erfasste Information wird in einer Anfrage-Warteschlange in der
Schnittstelle 201A des Ziels 102A gespeichert. 5 stellt
eine beispielhafte Anfrage-Warteschlange 500 dar, welche
Anfrageinformation 501, eine Vielzahl von Master-Identifizierungen
(IDs) 502 und Daten 503 einschließt. In einem Ausführungsbeispiel
erzeugt das Ziel 102A eine Master-ID 502A, indem
die Anfrage REQ#1 (d.h., die Anfrageinformation 501A) verwendet
wird, nachdem Daten 503A verfügbar sind und in der Anfrage-Warteschlange 500 gespeichert
worden sind. Die Master-ID 502A, dargestellt als modifizierte
Anfrage MREQ#1 in 2, wird dann an den Arbiter 103 geliefert.
In einem Ausführungsbeispiel
wird die modifizierte Anfrage MREQ#1 an den Arbiter 103 über den Speicherbus 107a (1)
gesendet. Jedoch wird in anderen Ausführungsbeispielen die modifizierte
Anfrage MREQ#1 an den Arbiter 103 über eine zugeordnete Verbindung
gesendet, ebenso wie die Anfrage-/Gewährungs-Signale.
-
Nachdem
der Arbiter 103 die modifizierte Anfrage MREQ#1 empfangen
hat, ändert
der Arbiter 103 die Priorität von Master 101A zu
HIGH und, in der Annahme, dass der PCI-Bus 106 (1)
verfügbar
ist und keine weiteren Master-Vorrichtungen eine frühere HIGH-Priorität besitzen,
sendet ein endgültiges
Gewährungs-Signal
GNT#1 an den Master 101A, wodurch dem Master 101A ermöglicht wird, die
Steuerung von PCI-Bus 106 zu übernehmen. Es ist zu beachten,
dass, wenn der PCI-Bus 106 gerade von einem weiteren Master
gesteuert wird oder wenn andere Master-Vorrichtungen eine frühere HIGH-Priorität besitzen,
der Arbiter 103 dann dem Master 101A ermöglicht,
die Steuerung von PCI-Bus 106 zur nächsten frühesten Zeitspanne zu übernehmen, nachdem
der Prozess vollständig
ist, welcher von dem letzten steuernden Master durchgeführt wird.
-
Wie
unter Bezugnahme auf 4 beschrieben, ändert der
Arbiter 103 die Priorität
von dem Master 101A zu LOW, wenn Daten nicht in der nächsten Zeitspanne
(Zeitpunkt t3), welche der Anfrage REQ#1 (Zeitpunkt t2) folgt, verfügbar sind.
Auf diese Weise muss der Master 101A REQ#1 nicht wiederholen
und wird in der Tat in einem bevorzugten Ausführungsbeispiel von einem Wiederholen
von REQ#1 abgehalten, wenn das Ziel 102A nicht bereit ist,
die Daten zu liefern. Wie zuvor beschrieben, ordnet der Arbiter 103 während der
Zeitspanne, in welcher dem Master 101A eine LOW-Priorität zugeordnet
ist (in 4, vom Zeitpunkt t3 zu Zeitpunkt
t8) das Eigentum am PCI-Bus 106 einem anderen PCI-Master
zu, welcher den Bus anfragt und verfügbare Daten besitzt (wie zum
Beispiel der Master 101B zum Zeitpunkt t5 und der Master 101C zum Zeitpunkt
t7).
-
Gemäß einem
Ausführungsbeispiel
der vorliegenden Erfindung kann das Ziel 102A verschiedene
Anfragen in die Anfrage-Warteschlange der Schnittstelle 201A senden.
Auf diese Weise können mehrere
Master-Vorrichtungen auf den Speicher des gleichen Zieles zugreifen
(tatsächlich
können,
wegen des sequenziellen Bedienens der vorliegenden Erfindung, mehrere
Master-Vorrichtungen sogar auf die gleichen Daten in einem Speicher
zugreifen). Das Beispiel weiter ausführend, welches den obigen Master 101A einschließt, wird
angenommen, dass der Master 101B auch eine Anfrage REQ#2
an den Arbiter 103 sendet, um auf den Speicher 104A des
Ziels 102A zuzugreifen. In diesem Fall sendet das Ziel 102A REQ#2
(d.h. die Anfrage-Information 501B) von dem Master 101B in
die Anfrage-Warteschlange 500 (4).
Es ist zu beachten, dass, obwohl nur zwei Anfragen von der Anfrage-Warteschlange 500 bearbeitet
werden können,
andere Ausführungsbeispiele
eine beliebige Anzahl von Anfragen mit zugehörigen Master-IDs und Daten
einschließen
können. Ferner
wird angenommen, dass die von dem Master 101B angefragten
Daten vor den von dem Master 101A angefragten Daten verfügbar sind.
In der vorliegenden Erfindung wird ein modifiziertes Anfragesignal
MREQ#2 (d.h. Master-ID 502B von 5) (beide nicht
in 2 dargestellt) an den Arbiter 103 geliefert,
bevor die modifizierte Anfrage MREQ#1 geliefert wird. Daher ändert sich
die Priorität
von Master 101B zu HIGH vor jener von Master 101A.
-
Um
weiter die Effizienz der vorliegenden Erfindung zu erhöhen, kann
die Anfrage-Warteschlange
ein Eingabe-/Ausgabe-Cache einschließen. Das Cache schaltet einen
schnellen Speicherblock zwischen Speicher 104 und Arbiter 103.
Eine Cache-Steuerung hält
das Cache mit Daten oder Befehlen gefüllt, welche eine oder mehrere
Master-Vorrichtungen am wahrscheinlichsten als Nächstes benötigen. Auf diese Weise kann
Information ohne Verzögerung
abgefragt werden (siehe zum Beispiel 4, in welcher
der Master 105 eine Anfrage zum Zeitpunkt t1 sendet und
Information zum Zeitpunkt t2 abfragt). Für die meisten Systemanwendungen
ist eine Cache-Größe von ungefähr 256 KB
ausreichend.
-
In
einem Ausführungsbeispiel
implementiert eine PCI-Brücke
das oben beschriebene Prioritätsschema
der vorliegenden Erfindung. Wie bei Fachleuten bekannt, ist eine
Brücke
ein Systembaustein, welcher verwendet wird, um Daten zwischen verschiedenen
Bussen zu befördern.
Eine Brücke
kann verschiedene Bustypen verbinden. Daher, bezugnehmend auf 1,
kann eine Brücke
den PCI-Bus 106, die Speicherbusse 107 und den
lokalen Bus 108 verbinden. Eine Brücke kann eine ASIC-Vorrichtung sein,
oder kann Teil einer Chipgruppe in dem System sein. In einem bevorzugten
Ausführungsbeispiel schließt die PCI-Brücke eine
Chipgruppe ein, welche die Ziele 102 und den Arbiter 103 integriert.
-
Zusammenfassend
schließt
die vorliegende Erfindung ein Prioritätsschema ein, welches von dem Arbiter
in Verbindung mit den Speicherschnittstellen in den Ziel-Vorrichtungen
implementiert wird. Die Priorität
von verschiedenen anfragenden Master-Vorrichtungen ändert sich
basierend auf Datenverfügbarkeit
und einem Anfrage-Zustand dynamisch. Unter Ver wendung der obigen
Merkmale maximiert die vorliegende Erfindung eine Auslastung der PCI-Bandbreite
und des PCI-Durchsatzes.
-
Die
bestimmten Ausführungsbeispiele
der vorliegenden Erfindung sind allein zum Zwecke der Beschreibung
und Erläuterung
dargestellt. Diese Ausführungsbeispiele
sollen nicht erschöpfend
sein oder die Erfindung in irgendeiner Weise beschränken. Fachleute
werden Modifikationen und Abänderungen
der vorliegenden Erfindung klar erkennen. Die vorliegende Erfindung
wird nur durch die angefügten
Patentansprüche
definiert.