-
Die Erfindung betrifft Computersysteme mit mehreren Modulen und spezieller
Vermittlungsprotokolle zur Verwendung durch die Module, um zu ermitteln, welches der Module
bestimmte Systemresourcen verwenden wird.
-
Die EP-A-0 674 272, die ein Dokument des Standes der Technik gemäß Artikel 54(3) EPÜ
ist, beschreibt ein gemeinsam genutztes Bussystem mit einem Bus und einer Gruppe
Klientmodulen, die mit dem Bus verbunden sind. Jedes Klientmodul kann Transaktionen auf dem
Bus zu anderen Klientmodulen senden und Transaktionen auf dem Bus von anderen
Klientmodulen für die Verarbeitung empfangen. Jedes Modul umfaßt eine Warteschlange zum
Speichern von Transaktionen, die von dem Modul zur Verarbeitung empfangen wurden. Ein
Buscontroller begrenzt die Arten der Transaktionen, die auf dem Bus gesendet werden
können, um zu verhindern, daß die Warteschlange eines Moduls überläuft.
-
Computersysteme umfassen üblicherweise mehrere Komponenten, wie Prozessoren, Speicher,
Eingabe/Ausgabeeinrichtungen und gemeinsam genutzte Busse zum Übertragen von
Information zwischen zwei oder mehr Komponenten. Die Komponenten sind üblicherweise mit
dem Bus in der Form von Komponenten-Modulen verbunden, von denen jedes einen oder
mehrere Prozessoren, Speicher und/oder Eingabe/Ausgabe-Einrichtungen enthalten kann.
Information wird auf den Bus zwischen den Komponenten-Modulen, oder einfacher Modulen,
während "Buszyklen" übertragen, wobei jeder Buszyklus eine Zeitspanne ist, während derer
ein Modul den Bus steuert und eine begrenzte Menge Information auf den Bus übertragen
oder treiben kann. Module kommunizieren durch Senden von "Transaktionen" auf den Bus,
die einen oder mehrere Zyklen zu ihrer Beendigung benötigen, wie herkömmliche "Lese"-
und "Schreib"-Transaktionen.
-
Überlicherweise kann in einem gegebenen Zyklus nur ein Modul Information auf einen
gemeinsam genutzten Bus senden oder treiben. Ein gemeinsam genutztes Bussystem benötigt
daher ein Bus-Vermittlungsverfahren, um zu ermitteln, welches Modul in einem bestimmten
Zyklus Information auf den Bus schicken kann. Es gibt viele herkömmliche Bus-
Vermittlungsverfahren. Bei den meisten Vermittlungsverfahren erzeugt jedes Modul in einem
gemeinsam genutzten Bussystem ein Signal, wenn es den Bus ansteuern möchte, und ein
Vermittlungsalgorithmus, der auf einem oder mehreren Prozessoren realisiert ist, bestimmt,
welches Modul den Bus während eines gegebenen Zyklus ansteuern darf.
-
Herkömmliche Vermittlungssysteme sind im allgemeinen so konzipiert, daß jedes Modul, das
den Bus benutzen möchte, eine Gelegenheit bekommt, dies zu tun, so daß jedes Modul mit
den Transaktionen, die es ausführen möchte, vorwärtskommen kann. Bei einem
herkömmlichen Umlauf-Vermittlungsverfahren z. B. bilden die Module Warteschlangen für die
Vermittlungspriorität. Das Modul am Kopf der Warteschlange erhält den Bus während des
nächsten verfügbaren Buszyklus und wird dann an das Ende der Warteschlange gesetzt. Dieses
Bilden von Warteschlangen der Module wird im allgemeinen durch Definieren einer
Reihenfolge für die Module und Verwenden eines Zeigers realisiert, der auf das Modul zeigt, das am
Kopf der Warteschlange liegen soll. Das Modul am Kopf der Warteschlange gewinnt die
Vermittlung für den nächsten verfügbaren Zyklus. Nachdem das Modul am Kopf der
Warteschlange die Vermittlung gewonnen hat, rückt der Zeiger zum nächsten Modul gemäß der
definierten Reihenfolge vor. Nachdem jedes Modul die Steuerung des Bus erhalten hat, kehrt
der Zeiger zum ersten Modul in der Reihenfolge zurück. Auf diese Weise wird sichergestellt,
daß jedes Modul die Gelegenheit hat, den Bus in etwa regelmäßigen Abständen zu steuern, so
daß das Modul mit den Transaktionen, die es ausführen muß, vorwärtskommen kann. Es gibt
viele herkömmliche Vermittlungsverfahren, die komplizierter sind als das Umlaufverfahren.
Allgemein ist es jedoch für jedes Vermittlungsverfahren wünschenswert, sicherzustellen, daß
jedes Modul, das den Bus verwenden möchte, Gelegenheit hat, dies zu tun und dadurch
Fortschritte zu machen.
-
Wenn ein Modul immer Transaktionen ausgeben könnte, wenn es die Vermittlung gewinnt,
würde der Fortschritt für alle Module gesichert. Bei einigen Bussystemen können die Module
jedoch daran gehindert werden, bestimmte Arten von Transaktionen während bestimmter
Zyklen effektiv auszugeben. Während bestimmter Zyklen können z. B. Eingabe/Ausgabe-
Transaktionen gesperrt oder nach dem Ausgeben abgebrochen werden, wenn die
Eingabe/Ausgabemodule zu beschäftigt sind, um irgendwelche neuen Transaktionen anzunehmen.
Ähnlich können dann, wenn der Speichercontroller für ein Computersystem zu beschäftigt ist,
um neue Transaktionen zur Verarbeitung anzunehmen, alle neuen speicherbezogenen
Trans
aktionen gesperrt oder abgebrochen werden, bis der Speichercontroller erneut neue
Transaktionen annehmen kann. Transaktionen, die abgebrochen oder nicht ausgeführt werden können,
werden von dem relevanten Modul zurückgehalten, bis die Transaktionen effektiv ausgeführt
werden können.
-
In Bussystemen, in denen während bestimmter Zyklen Transaktionsklassen nicht effektiv
ausgeführt werden können, kann es vorkommen, daß ein Modul während unerwünscht langer
Zeitspannen verzögert oder daran gehindert wird, mit seiner Ausführung fortzufahren. Ein
Modul kann z. B. die Steuerung des Busses zum Schreiben von Daten auf eine
Eingabe/Ausgabeeinrichtung verlangen, die Steuerung des Busses jedoch während eines Zyklus
erhalten, zu dem Eingabe/Ausgabetransaktionen effektiv nicht ausgeführt werden können.
Das Modul gibt dann üblicherweise die Steuerung des Busses wieder ab und erhält während
einer Zeitspanne im Verhältnis zu anderen Modulen eine niedrigere Priorität (das Modul kann
z. B. an das Ende der Warteschlange in einem Umlauf-Vermittlungsprotokoll gesetzt werden).
Das Modul muß dann erneut warten, bis es die Vermittlung gewinnt, bevor es die Transaktion
ausgeben und fortfahren kann. Während das Modul die niedrigere Priorität hat, könnte die
Transaktion, die es ausführen möchte, vorübergehend zulässig sein. Zu der Zeit, zu der das
Modul wieder die Steuerung des Busses erhält, kann jedoch die Transaktion, die es ausführen
möchte, erneut gesperrt sein. Dies könnte während einer unerwünscht langen Zeitspanne
jedesmal dann auftreten, wenn das Modul die Steuerung des Busses erhält. Es kann daher
vorkommen, daß das Modul während unerwünscht langer Zeitspannen keinen Fortschritt macht.
-
Es wird daher ein Vermittlungsverfahren benötigt, das es jedem Modul erlaubt, in seiner
Ausführung vorwärtszukommen, selbst wenn bestimmte Transaktionsklassen während eines oder
mehrerer Buszyklen nicht auf den Bus ausgegeben werden können.
-
Eine Aufgabe der Erfindung besteht somit darin, ein verbessertes Vermittlungsverfahren
vorzusehen.
-
Eine andere Aufgabe der Erfindung besteht darin, ein Vermittlungsverfahren vorzusehen, daß
es jedem Modul, das an der Vermittlung einer gemeinsam verwendeten Resource teilnimmt,
erlaubt, diese Resource zu steuern, wenn die Resource auf die gewünschte Weise eingesetzt
werden kann.
-
Noch eine weitere Aufgabe der Erfindung besteht darin, ein Bus-Vermittlungsverfahren
vorzusehen, das es jedem Modul, das den Bus verwenden möchte, ermöglicht, Fortschritte zu
machen, selbst wenn bestimmte Transaktionsklassen während eines oder mehrerer Buszyklen
effektiv gesperrt sind.
-
Zur Lösung dieser Aufgabe sieht die Erfindung ein Datenverarbeitungssystem mit den
Merkmalen von Anspruch 1 vor.
-
Diese sowie weitere Aufgaben der Erfindung ergeben sich dem Fachmann aus der folgenden
detaillierten Beschreibung der Erfindung und bevorzugter Ausführungsformen in Verbindung
mit der Zeichnung und den Ansprüchen.
-
Allgemein gesagt betrifft die Erfindung ein Vermittlungsverfahren, das sicherstellt, daß jede
Komponente, die eine gemeinsam genutzte Resource verwendet, Fortschritt machen kann.
Die Erfindung wird in bezug auf ein Bussystem zum Verbinden einer Reihe von Modulen
beschrieben. Der Fachmann wird jedoch erkennen, daß das Vermittlungsverfahren auf andere
gemeinsam genutzte Resourcen angewendet werden kann.
-
Ein gemeinsam genutztes Bussystem gemäß der Erfindung umfaßt einen Bus, eine Reihe von
Komponentenmodulen, oder einfacher Modulen, die mit dem Bus verbunden sind, und einen
Vermittlungsprozessor zum Ermitteln, welches Modul während jedes Zyklus Transaktionen
auf den Bus ausgeben darf. Zu einer gegebenen Zeit darf nur ein Modul Transaktion auf den
Bus ausgeben, und dieses Modul steuert den Bus während einer minimalen Zeitspanne, die
einen Buszyklus definiert.
-
Die Transaktionen werden in zwei oder mehr Klassen aufgeteilt. Wenigstens eine
Transaktionsklasse kann während eines oder mehreren Buszyklen effektiv nicht ausgeführt werden.
-
Der Vermittlungsprozessor stellt sicher, daß jedes Modul, das eine Transaktion ausgeben
möchte, den Bus während eines oder mehrerer Zyklen steuern darf. Der
Vermittlungsprozessor stellt ferner sicher, daß jedes Modul, das Transaktionen einer gegebenen Klasse ausgeben
möchte, die Steuerung des Busses während eines Buszyklus erhält, zu dem die Transaktionen
dieser Klasse effektiv ausgeführt werden können.
-
Fig. 1 zeigt ein Blockdiagramm einer Ausführungsform eines Bussystems, das ein Mehrfach-
Vermittlungsverfahren gemäß der Erfindung verwendet.
-
Die Erfindung umfaßt ein Vermittlungsverfahren, das sicherstellt, daß jede Komponente, die
eine gemeinsam genutzte Resource verwendet, wie einen gemeinsam genutzten Computerbus,
Fortschritt machen kann. In einem gemeinsam genutzten Bussystem gemäß der Erfindung
verhandeln die Module um die Steuerung des Busses während eines oder mehrerer Zyklen
und senden während der Zyklen, in denen sie den Bus steuern, Transaktionen auf den Bus.
Diese Transaktionen werden in eine Gruppe aus Transaktionsklassen aufgeteilt. Während
bestimmter Buszyklen (d. h. beschränkter Zyklen) können bestimmte Transaktionsklassen nicht
ausgegeben werden. Während bestimmter anderer Zyklen (d. h. unbeschränkter Zyklen)
können jedoch Transaktionen aller Klassen ausgegeben werden. Zyklen, die jede Art von
Transaktionen zulassen, treten periodisch auf.
-
Die Erfindung stellt den Fortschritt jedes Moduls sicher, indem gewährleistet wird, daß jedes
Modul, das eine Transaktion einer gegebenen Klasse ausführen möchte, während eines
Zyklusses, während dessen die Transaktion dieser Klasse ausgeführt werden kann, die Steuerung
des Busses erhält. Dies wird mit einem Mehrfachumlauf-Vermittlungsverfahren erreicht.
-
Gemäß der bevorzugten Ausführungsform eines Mehrfachumlauf-Vermittlungsverfahrens
gemäß der Erfindung werden zwei Umlaufzeiger verwendet, um zwei Umlauf-
Vermittlungsprotokolle zu realisieren, um getrennt zu ermitteln, welches Modul während
beschränkter und unbeschränkter Zyklen die Vermittlung gewinnt. Zunächst wird ein
Hauptzeiger verwendet, um ein Hauptumlauf-Vermittlungsprotokoll zu realisieren. Der Hauptzeiger
verfolgt die Priorität jedes Moduls während beschränkter Zyklen. Ein sekundärer oder "jede
Transaktion"-Umlaufzeiger verfolgt die Priorität jedes Moduls in bezug auf unbeschränkte
Zyklen, in denen Transaktionen aller Klassen ausgegeben werden können. Während eines
beschränkten Zyklus ermittelt der Hauptzeiger, welches Modul die Vermittlung gewinnt, und
rückt gemäß einer vorgegebenen Reihenfolge zum nächsten Modul weiter. Während
unbeschränkter Zyklen ermittelt der sekundäre Zeiger, welches Modul die Vermittlung gewinnt
und rückt zum nächsten Modul gemäß einer zweiten vorgegebenen Reihenfolge weiter.
-
Der sekundäre Zeiger stellt sicher, daß ein Modul, das eine Transaktion ausgeben möchte, die
während bestimmter Zyklen verboten ist, schließlich die Gelegenheit erhält, die Transaktion
auszugeben. Wie oben erwähnt, treten Zyklen, die jede Art von Transaktionen zulassen,
periodisch auf. Der sekundäre Zeiger wird also während eines Zyklus, zu dem jede Klasse der
Transaktion zulässig ist, periodisch auf jedes Modul zeigen, so daß jedes Modul die
Gelegenheit erhält, eine Transaktion einer beliebigen Klasse auszugeben. Ein Modul, das eine
Transaktion ausführen möchte, die während bestimmter Zyklen gesperrt ist, kann während eines
solchen Zyklus auf der Grundlage des Hauptzeigers die Vermittlung gewinnen, wobei der
Hauptzeiger sich dann weiterbewegt, so daß das Modul übergangen wird. Der sekundäre
Zeiger wird jedoch schließlich auf das Modul zeigen, so daß es während eines unbeschränkten
Zyklus zugelassen wird, und dadurch sicherstellen, daß die Transaktion schließlich ausgeführt
wird.
-
Ein Blockdiagramm eines beispielshaften Computersystems gemäß der Erfindung ist in Fig. 1
bei 10 dargestellt. Das Computersystem 10 ist ein Computer mit mehreren Prozessoren, der
einen Bus 12 und mehrere Komponenten, die mit dem Bus 12 verbunden sind, aufweist. Die
Komponenten umfassen einen Hauptspeichercontroller 14, Eingabe/Ausgabe-Module 16 und
18 und Prozessormodule 20 und 22. Die Komponenten kommunizieren miteinander durch
Senden und Empfangen von Transaktionen auf den Bus 12.
-
Die Prozessormodule 20 und 22 sind der Hauptprozessor für das Computersystem 10, und
Software für das System wird auf allen Prozessoren simultan ausgeführt. Die
Prozessormodule 20 und 22 können jeweils einen konventionellen Cache-Speicher zum Speichern der
zuletzt verwendeten Daten aufweisen.
-
Die Eingabe/Ausgabe-Module 16 und 18 dienen als Schnittstellen zwischen dem
Computersystem 10 und Eingabe/Ausgabe-Einrichtungen. Die Eingabe/Ausgabe-Module 16 und 18
enthalten jeweils wenigstens einen Eingabe/Ausgabe-Adapter, der zwischen dem Bus 12 und
einer Eingabe/Ausgabe-Einrichtung üblicherweise über einen Eingabe/Ausgabe-Bus
verbunden ist.
-
Die Prozessormodule und die Eingabe/Ausgabe-Module, welche den Bus 12 benötigen,
können während jedes gegebenen Zyklus um die Steuerung des Busses 12 verhandeln. Eine
Vermittlungseinrichtung 30 realisiert ein Busvermittlungsverfahren, um zu bestimmen, welches
Modul die Vermittlung gewinnt und den Bus während eines gegebenen Zyklusses steuert. Das
Busvermittlungsverfahren, das von dem Vermittlungsmodul 30 realisiert wird, ist unten mit
weiteren Einzelheiten beschrieben. Wie unten genauer beschrieben ist, ist das
Busvermittlungsverfahren ein Mehrfachumlauf-Vermittlungsverfahren, das den Fortschritt aller Module
sicherstellt.
-
Der Hauptspeichercontroller 14 ist verantwortlich für das Lesen von Informationen aus dem
Hauptspeicher 15 und das Speichern von Informationen in dem Hauptspeicher 15 auf
konventionelle Weise. Der Hauptspeichercontroller 14 dient vorzugsweise auch als das "Host"-
Modul oder "Buscontroller", um zu bestimmen, wie der Bus 12 von dem verbleibenden
Modulen verwendet werden kann, die als Klient-Module betrachtet werden können. Insbesondere
steuert der Hauptspeichercontroller 14 eine CLIENT_OP-Leitung 24, die mit jedem Klient-
Modul direkt verbunden ist. Der Hauptspeichercontroller 14 sendet Signale an jedes Klient-
Modul auf der CLIENT_OP-Leitung 24, um anzuzeigen, welche Transaktionsklassen
während des nächsten verfügbaren Zyklus auf den Bus 12 ausgegeben werden dürfen.
-
Bei der bevorzugten Ausführungsform unterstützt der CLIENT_OP-Bus die in Tabelle 1
unten gezeigten Klient-Optionssignale, wobei die Tabelle die Transaktionsklassen angibt, die
während eines gegebenen Zyklus zulässig sind.
TABELLE 1
-
Das Klient-Optionssignal NONE_ALLOWED wird dazu verwendet anzuzeigen, daß während
des relevanten Zyklus keine Transaktionen zulässig sind.
-
Das Klient-Optionssignal RET_ONLY zeigt an, daß nur das Zurückgeben (oder
Zurückschreiben) zuvor gehaltener private-dirty-Cache-Leitungen oder Antworten auf vorherige
Transaktionen während des relevanten Zyklus zulässig sind. Wenn z. B. ein Prozessormodul
20 das Lesen von Daten anfordert, die in dem Cache-Speicher des Prozessors 22 private-dirty
(privat, mit modifiziertem Inhalt) gehalten werden, kann der Prozessor 22 versuchen, diese
Cache-Leitung in einer herkömmlichen Cache-auf-Cache-Kopiertransaktion zu liefern. Die
Cache-auf-Cache-Kopiertransaktion kann während eines Zyklus ausgeführt werden, der von
einem RET_ONLY-Klient-Optionssignal bestimmt wird, weil das Kopieren von Cache- auf
Cache-Speicher die Reaktion auf das Lesen ist. Ähnlich kann das Eingabe/Ausgabe-Modul 16
Daten aus einer früheren herkömmlichen Eingabe/Ausgabe-Lesetransaktion während eines
Zyklus zurückgeben, der von dem RET_ONLY-Klient-Optionssignal bestimmt wird, weil die
Datenrückgabe eine Reaktion auf die E/A-Lesetransaktion ist. Das RET_ONLY-Klient-
Optionssignal ist z. B. nützlich, wenn ein Prozessormodul keine neuen kohärenten
Transaktionen annehmen kann, weil es mit der Ausführung anderer Aufgaben beschäftigt ist, oder
wenn der Speichercontroller (oder Speicher) keine Lesetransaktionen annehmen kann.
-
Das Klient-Optionssignal NO_IO zeigt an, daß alle Transaktionen außer Eingabe/Ausgabe-
Transaktion zulässig sind. Der Host kann ein NO_IO-Klient-Optionssignal z. B. ausgeben,
wenn die Eingabe/Ausgabe-Module auf keine neuen Transaktionen reagieren können, weil sie
zu beschäftigt sind.
-
Das Klient-Optionssignal ANY_TRANS zeigt an, daß während des nächsten verfügbaren
Zyklus alle Transaktionen zulässig sind. Um sicherzustellen, daß alle Transaktionsklassen
periodisch zugelassen werden, gibt der Speicher-Controller das Klient-Optionssignal
ANY_TRANS während eines oder mehrerer Zyklen periodisch aus.
-
Wie oben erwähnt, realisiert das Vermittlungsmodul 30 ein Mehrfachumlauf-
Vermittlungsverfahren, um zu bestimmen, welches Modul während jedes Zyklus den Bus 12
steuern darf. Das Mehrfachumlauf-Vermittlungsverfahren stellt sicher, daß jedes Modul
fortfahren kann, auch wenn die Klient-Optionssignale die Klasse der Transaktionen beschränken,
die während bestimmter Zyklen auf dem Bus 12 zugelassen werden.
-
Das Mehrfachumlauf-Vermittlungsverfahren, das dazu verwendet wird zu ermitteln, welches
Modul der Bus 12 steuern darf, kann entweder ein zentralisiertes Vermittlungsverfahren oder
ein verteiltes Vermittlungsverfahren sein. Wenn ein zentralisiertes Vermittlungsverfahren
verwendet wird, sendet jedes Modul, das den Bus verwenden möchte, ein Vermittlungssignal
an eine zentrale Vermittlungsschaltung. Die zentrale Vermittlungsschaltung verarbeitet die
Vermittlungssignale, um das Modul zu ermitteln, das den Bus während des nächsten
verfügbaren Zyklus verwenden darf (d. h. den nächsten Besitzer des Busses). Die zentrale
Vermitt
lungsschaltung sendet dann Vermittlungsantwortsignale zurück an die Module und informiert
jedes Modul, ob es den Bus verwenden darf. Das Modul, das die Vermittlung "gewonnen"
hat, schickt dann Informationen auf den Bus. Wenn ein verteiltes Vermittlungsverfahren
verwendet wird, sendet jedes Modul seine Vermittlungssignale an jedes andere Modul in dem
System. Jedes Modul enthält eine Logikschaltung zum Ausführen eines
Vermittlungsalgorithmus, um den nächsten Besitzer des Busses gestützt auf diese Vermittlungssignale zu
ermitteln. Bei Empfang der Vermittlungssignale bestimmt jedes Modul den nächsten Besitzer
des Busses. Das Modul, das die Vermittlung gewonnen hat, schickt dann seine Informationen
auf den Bus.
-
Das Mehrfachumlauf-Vermittlungsverfahren stellt den Fortschritt aller Module sicher, indem
es gewährleistet, daß jedes Modul, das eine Transaktion ausgeben möchte, während eines
Zyklus, zu dem diese Transaktion ausgegeben werden kann, die Steuerung des Busses erhält.
Das Mehrfachumlauf-Vermittlungsverfahren verwendet wenigstens zwei Zeiger, einen
Hauptzeiger 31 und einen ANY_TRANS-Zeiger 32 (der hier auch als sekundärer Zeiger bezeichnet
ist). Wie weiter unten erläutert ist, registriert jeder Zeiger das Modul am Kopf einer
getrennten Umlauf-"Warteschlange". Somit weist jedes Modul zwei Vermittlungsprioritäten auf, eine
Haupt- oder Primärpriorität und eine ANY_TRANS-Priorität.
-
Der Hauptzeiger wird dazu verwendet, ein Umlaufprotokoll zu realisieren, um zu ermitteln,
welches Modul die Vermittlung gewinnt, wenn das Klient-Optionssignal nicht ANY_TRANS
ist und ein Modul den Bus steuern darf. Der Hauptzeiger zeigt zu dem Modul mit der
höchsten Priorität in bezug auf Zyklen, die nicht durch ANY_TRANS bestimmt werden, und
bestimmt, welches Modul die Vermittlung während dieser Zyklen gewinnt. Wenn das aktuelle
Modul mit der hohen Priorität gewinnt, geht der Hauptzeiger gemäß einer vorgegebenen
Reihenfolge zu dem nächsten Modul weiter. Der Hauptzeiger rückt nicht weiter, wenn ein Modul
den Bus während eines Zyklus gewinnt, der durch das Klient-Optionssignal ANY_TRANS
bestimmt wird.
-
Der ANY_TRANS-Zeiger wird dazu verwendet, ein Umlaufvermittlungs-Protokoll zu
realisieren und zu bestimmen, welches Modul die Vermittlung gewinnt, wenn das Klient-
Optionssignal ANY_TRANS ist und ein Modul den Bus steuern darf. Der ANY_TRANS-
Zeiger zeigt zu dem Modul, das die aktuell höchste Vermittlungspriorität in bezug auf das
Klient-Optionssignal ANY_TRANS hat. Wenn das Modul mit der höchsten Priorität die
Vermittlung während eines ANY_TRANS-Zyklus gewinnt, geht der ANY_TRANS-Zeiger
gemäß einer vorgegebenen Reihenfolge zum nächsten Modul weiter. Der ANY_TRANS-
Zeiger rückt nicht weiter, wenn ein Modul die Vermittlung während eines Zyklus gewinnt,
das durch ein anderes Klient-Optionssignal als ANY_TRANS bestimmt wird:
-
Auf diese Weise erhält ein Modul, das eine Transaktion ausgeben möchte, die manchmal
nicht zulässig ist, schließlich eine Gelegenheit, die Transaktion auszugeben. Ein Modul kann
z. B. eine Eingabe/Ausgabe-Transaktion ausgeben müssen. Wenn dieses Modul die
Vermittlung während eines Zyklus gewinnt, das durch eine Klient-Optionssignal NO_IO bestimmt
wird, kann das Modul die Eingabe/Ausgabetransaktion nicht ausgeben, und der Zyklus geht
verloren. Der Hauptzeiger wird dennoch zum nächsten Modul vorrücken und dem nächsten
Modul erlauben, die Vermittlung zu gewinnen. Der Zeiger ANY_TRANS rückt jedoch nicht
weiter. Das Modul, das die Eingabe/Ausgabe-Transaktion ausgeben möchte, wird daher
weiter an der Vermittlung teilnehmen, weil es seine Eingabe/Ausgabe-Transaktion noch nicht
ausgeben konnte. Da das Klient-Optionssignal ANY-TRANS periodisch auftritt, wird der
ANY_TRANS-Zeiger schließlich zu dem Modul vorrücken, das die
Eingabe/Ausgabetransaktion ausgeben möchte, und das Modul kann diese Transaktion ausführen.
Somit wird durch den ANY_TRANS-Zeiger im Kontext des oben beschriebenen
Vermittlungsverfahrens der Fortschritt garantiert.
-
Der Fachmann wird erkennen, daß auf der Grundlage der vorliegenden Offenbarung ein
getrennter Vermittlungszeiger für jedes Klient-Optionssignal gemäß der Erfindung verwendet
werden kann. Zusätzliche Zeiger sind jedoch nicht notwendig, weil der Fortschritt durch den
ANY_TRANS-Zeiger sichergestellt wird.
-
Man wird auch verstehen, daß es nicht notwendig ist, ein ANY-TRANS (d. h. unbeschränktes)
Klient-Optionssignal zu haben, solange jede Transaktionsart bei wenigstens einer Art von
Klient-Optionssignal zulässig ist. Mit anderen Worten, es muß für jeden Transaktionstyp
wenigstens ein "zulassendes" Klient-Optionssignal geben. Das Klient-Optionssignal ist in bezug
auf einen Transaktionstyp zulassend, wenn es zuläßt, daß dieser Transaktionstyp ausgeführt
wird. Der Fortschritt wird durch periodisches Ausgeben zulassender Klient-Optionssignale
sichergestellt, die jeden Transaktionstyp zulassen. Bei einer bevorzugten Ausführungsform
wird ein Signal ANY_TRANS verwendet, das alle Transaktionstypen zuläßt.
-
Man wird auch verstehen, daß ein Vermittlungsverfahren gemäß der Erfindung einen
Hauptzeiger umfassen kann, der während jedes Zyklus fortschreitet. Dies ist möglich, weil der
Zeiger ANY_TRANS gleichwohl den Fortschritt sicherstellt.
-
Der Fachmann wird verstehen, daß es nicht notwendig ist, sowohl Eingabe/Ausgabe- als auch
Prozessormodule zu haben. Ein Vermittlungsverfahren gemäß der Erfindung kann mit jeder
Art von Modulen realisiert werden, z. B. zwei oder mehr Prozessormodulen.
-
Man wird ferner verstehen, daß die Vermittlungsprotokolle, die für die ANY_TRANS-Zyklen
und/oder die anderen Zyklen verwendet werden, keine Umlaufprotokolle sein müssen. Jedes
Protokoll, das den Fortschritt während der relevanten Zyklen ermöglicht, kann verwendet
werden.
-
Der Fachmann wird ferner verstehen, daß der Speichercontroller 14 nur der Einfachheit halber
als der Host oder Buscontroller dient und daß Hostfunktionen und Speichersteuerfunktionen
in zwei oder mehr Module aufgeteilt werden können.
-
Die in Tabelle 1 gezeigten Klient-Optionssignale wurden zum Zwecke der Erläuterung
gezeigt, um eine mögliche Art zu zeigen, wie der KLIENT_OP-Bus die Transaktionen
begrenzen kann, die während eines gegebenen Zyklus zulässig sind. Man wird verstehen, daß andere
Arten von Klient-Optionssignalen verwendet werden können, um die Arten der Transaktionen
zu begrenzen, die auf den Bus ausgegeben werden können.
-
Die Begriffe "Bus/Busse" und "Leitung/Leitungen" wurden in der Beschreibung jeweils dazu
verwendet, verschiedene Gruppen aus einem oder mehreren elektrischen Pfaden zu
bezeichnen, die oben mit weiteren Einzelheiten beschrieben sind. Der Fachmann wird verstehen, daß
die Begriffe "Bus" und "Leitung" an sich nicht in irgendeiner Weise abschließend oder
beschränkend zu verstehen sind. Die Begriffe "KLIENT_OP-Bus" und "KLIENT_OP-
Leitungen" wurden z. B. austauschbar verwendet, um eine Gruppe aus Hardwareleitungen zu
bezeichnen, die nur durch den Host angesteuert werden, wie oben ausführlich erläutert ist.
-
Der Fachmann wird verstehen, daß mehrere Vermittlungsverfahren gemäß der Erfindung
verwendet werden können, um die Steuerung gemeinsam genutzter Resourcen zu regulieren.
Bei der bevorzugten Ausführungsform ist die gemeinsam genutzte Resource ein
Computer
bus, die Erfindung ist jedoch nicht auf die Vermittlung der Steuerung eines Computerbusses
beschränkt.
-
Zahlreiche Modifikationen der Erfindung ergeben sich dem Fachmann aus der obigen
Beschreibung und den Zeichnungen. Die Erfindung soll allein durch den Bereich der folgenden
Ansprüche beschränkt sein.