DE69515355T2 - Mehrfacharbitrierungsschema - Google Patents

Mehrfacharbitrierungsschema

Info

Publication number
DE69515355T2
DE69515355T2 DE69515355T DE69515355T DE69515355T2 DE 69515355 T2 DE69515355 T2 DE 69515355T2 DE 69515355 T DE69515355 T DE 69515355T DE 69515355 T DE69515355 T DE 69515355T DE 69515355 T2 DE69515355 T2 DE 69515355T2
Authority
DE
Germany
Prior art keywords
module
bus
during
arbitration
cycles
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 - Lifetime
Application number
DE69515355T
Other languages
English (en)
Other versions
DE69515355D1 (de
Inventor
William R. Bryg
John F. Shelton
Michael L. Ziegler
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.)
Hewlett Packard Development Co LP
Original Assignee
Hewlett Packard Co
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 Hewlett Packard Co filed Critical Hewlett Packard Co
Application granted granted Critical
Publication of DE69515355D1 publication Critical patent/DE69515355D1/de
Publication of DE69515355T2 publication Critical patent/DE69515355T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime 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

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 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.

Claims (3)

1. Datenverarbeitungssystem (10) mit einem Gemeinschaftsbetriebsmittel (12), das von mehreren Modulen (16, 18, 20, 22) verwendet wird, wobei das Datenverarbeitungssystem (10) folgende Merkmale aufweist: die mehreren Module (16, 18, 20, 22), wobei zu jeder gegebenen Zeit nur eines der Module das Gemeinschaftsbetriebsmittel verwenden darf, wobei ein Modul, das das Gemeinschaftsbetriebsmittel (12) zu einer gegebenen Zeit verwenden darf, während einer minimalen Zeitperiode, die einen Zyklus bildet, die Kontrolle über das Gemeinschaftsbetriebsmittel hat, und wobei die Module mehrere Klassen von Operationen ausführen, welche das Gemeinschaftsbetriebsmittel (12) verwenden, wenigstens eine der Klassen von Operationen eine beschränkte Klasse ist, die während eines oder mehrerer beschränkter Zyklen nicht effektiv ausgeführt werden kann, wobei die beschränkten Operationen jeder der beschränkten Klassen während eines oder mehrerer entsprechender zulässiger Zyklen ausgeführt werden dürfen; und eine Vermittlungseinrichtung (30) zum Bestimmen, welches Modul während jedes Zyklus das Gemeinschaftsbetriebsmittel steuern darf, wobei die Vermittlungseinrichtung (30) sicherstellt, daß jedes Modul, das eine Operation ausführen will, die das Gemeinschaftsbetriebsmittel verwendet, das Gemeinschaftsbetriebsmittel während eines oder mehrerer Zyklen kontrollieren darf, und weiterhin sicherstellt, daß jedes Modul, das Operationen in der beschränkten Klasse ausführen möchte, die Kontrolle des Gemeinschaftsbetriebsmittels während eines zulässigen Zyklus erhält, indem ein Mehrfach-Umlauf-Vermittlungverfahren verwendet wird, und der eine oder die mehreren zulässigen Zyklen periodisch ausgegeben werden.
2. Datenverarbeitungssystem (10) nach Anspruch 1, bei dem das Gemeinschaftsbetriebsmittel ein Bus (12) und eine Operation eine Transaktion auf dem Bus sind.
3. Datenverarbeitungssystem (10) nach Anspruch 1 oder 2, bei dem die Vermittlungseinrichtung (30) einen ersten Zeiger (31) zur Realisierung eines Umlaufprotokolls, der bestimmt, welches Modul, während der beschränkten Zyklen das Gemeinschaftsbetriebsmittel steuern darf, und einen zweiten Zeiger (32), der bestimmt, welches Modul während der zulässigen Zyklen das Gemeinschaftsbetriebsmittel steuern darf, aufweist.
DE69515355T 1994-03-24 1995-01-20 Mehrfacharbitrierungsschema Expired - Lifetime DE69515355T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US08/217,500 US5528766A (en) 1994-03-24 1994-03-24 Multiple arbitration scheme

Publications (2)

Publication Number Publication Date
DE69515355D1 DE69515355D1 (de) 2000-04-13
DE69515355T2 true DE69515355T2 (de) 2000-10-19

Family

ID=22811350

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69515355T Expired - Lifetime DE69515355T2 (de) 1994-03-24 1995-01-20 Mehrfacharbitrierungsschema

Country Status (4)

Country Link
US (1) US5528766A (de)
EP (1) EP0675444B1 (de)
JP (1) JP3583183B2 (de)
DE (1) DE69515355T2 (de)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5923859A (en) * 1995-04-13 1999-07-13 Compaq Computer Corporation Dual arbiters for arbitrating access to a first and second bus in a computer system having bus masters on each bus
US5758105A (en) * 1995-12-04 1998-05-26 International Business Machines Corporation Method and apparatus for bus arbitration between isochronous and non-isochronous devices
US5754865A (en) * 1995-12-18 1998-05-19 International Business Machines Corporation Logical address bus architecture for multiple processor systems
US6108741A (en) * 1996-06-05 2000-08-22 Maclaren; John M. Ordering transactions
US5872939A (en) * 1996-06-05 1999-02-16 Compaq Computer Corporation Bus arbitration
US6075929A (en) * 1996-06-05 2000-06-13 Compaq Computer Corporation Prefetching data in response to a read transaction for which the requesting device relinquishes control of the data bus while awaiting data requested in the transaction
US5903906A (en) * 1996-06-05 1999-05-11 Compaq Computer Corporation Receiving a write request that allows less than one cache line of data to be written and issuing a subsequent write request that requires at least one cache line of data to be written
US5872941A (en) * 1996-06-05 1999-02-16 Compaq Computer Corp. Providing data from a bridge to a requesting device while the bridge is receiving the data
US6035362A (en) * 1996-06-05 2000-03-07 Goodrum; Alan L. Storing data associated with one request while continuing to store data associated with a previous request from the same device
US5987539A (en) * 1996-06-05 1999-11-16 Compaq Computer Corporation Method and apparatus for flushing a bridge device read buffer
US6055590A (en) * 1996-06-05 2000-04-25 Compaq Computer Corporation Bridge circuit comprising independent transaction buffers with control logic adapted to store overflow data in second buffer when transaction size exceeds the first buffer size
US6021480A (en) * 1996-06-05 2000-02-01 Compaq Computer Corporation Aligning a memory read request with a cache line boundary when the request is for data beginning at a location in the middle of the cache line
US6052513A (en) * 1996-06-05 2000-04-18 Compaq Computer Corporation Multi-threaded bus master
US5954809A (en) * 1996-07-19 1999-09-21 Compaq Computer Corporation Circuit for handling distributed arbitration in a computer system having multiple arbiters
US5784569A (en) * 1996-09-23 1998-07-21 Silicon Graphics, Inc. Guaranteed bandwidth allocation method in a computer system for input/output data transfers
EP0939928B1 (de) * 1996-11-06 2003-08-20 Motorola, Inc. Verfahren und vorrichtung zur feststellung der anzahl von zugeteilten zugriffen während der latenz des schlechtesten falles
US6138192A (en) * 1996-12-31 2000-10-24 Compaq Computer Corporation Delivering a request to write or read data before delivering an earlier write request
US5832278A (en) * 1997-02-26 1998-11-03 Advanced Micro Devices, Inc. Cascaded round robin request selection method and apparatus
US6105094A (en) * 1998-01-26 2000-08-15 Adaptec, Inc. Method and apparatus for allocating exclusive shared resource requests in a computer system
US6330646B1 (en) * 1999-01-08 2001-12-11 Intel Corporation Arbitration mechanism for a computer system having a unified memory architecture
JP2007026022A (ja) * 2005-07-15 2007-02-01 Nec Electronics Corp バス調停装置及びバス調停方法
US9280503B2 (en) * 2013-04-12 2016-03-08 Apple Inc. Round robin arbiter handling slow transaction sources and preventing block

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4787032A (en) * 1986-09-08 1988-11-22 Compaq Computer Corporation Priority arbitration circuit for processor access
US5001652A (en) * 1987-03-20 1991-03-19 International Business Machines Corporation Memory arbitration for video subsystems
US4937781A (en) * 1988-05-13 1990-06-26 Dallas Semiconductor Corporation Dual port ram with arbitration status register
US5265257A (en) * 1990-06-22 1993-11-23 Digital Equipment Corporation Fast arbiter having easy scaling for large numbers of requesters, large numbers of resource types with multiple instances of each type, and selectable queuing disciplines
CA2051029C (en) * 1990-11-30 1996-11-05 Pradeep S. Sindhu Arbitration of packet switched busses, including busses for shared memory multiprocessors
US5280591A (en) * 1991-07-22 1994-01-18 International Business Machines, Corporation Centralized backplane bus arbiter for multiprocessor systems
US5301282A (en) * 1991-10-15 1994-04-05 International Business Machines Corp. Controlling bus allocation using arbitration hold
US5345562A (en) * 1992-02-12 1994-09-06 Industrial Technology Research Institute Data bus arbitration for split transaction computer bus
US5420985A (en) * 1992-07-28 1995-05-30 Texas Instruments Inc. Bus arbiter system and method utilizing hardware and software which is capable of operation in distributed mode or central mode
US5375089A (en) * 1993-10-05 1994-12-20 Advanced Micro Devices, Inc. Plural port memory system utilizing a memory having a read port and a write port
US6182176B1 (en) * 1994-02-24 2001-01-30 Hewlett-Packard Company Queue-based predictive flow control mechanism
US5586274A (en) * 1994-03-24 1996-12-17 Hewlett-Packard Company Atomic operation control scheme

Also Published As

Publication number Publication date
JPH07271717A (ja) 1995-10-20
EP0675444A1 (de) 1995-10-04
JP3583183B2 (ja) 2004-10-27
US5528766A (en) 1996-06-18
EP0675444B1 (de) 2000-03-08
DE69515355D1 (de) 2000-04-13

Similar Documents

Publication Publication Date Title
DE69515355T2 (de) Mehrfacharbitrierungsschema
DE3853574T2 (de) Steuerung von Benutzerantworten in einem Übertragungsbus.
DE3810231C2 (de)
DE68928772T2 (de) Datenverarbeitungssystem mit sich um Zugriff auf verteilte Betriebsmittel bewerbenden Einheiten und mit auf den Status der verteilten Betriebsmittel reagierender Schiedsrichtereinheit
DE69222469T2 (de) Verfahren zur Verminderung der Restbandbreite eines Busses in einem Rechnersystem
DE2856483C2 (de)
DE69027515T2 (de) Vorrichtung für Prioritätsarbitrierungskonditionierung bei gepufferter Direktspeicheradressierung
DE68922784T2 (de) Mehrfachbus-Mikrorechnersystem mit Busarbitrierung.
DE68913914T2 (de) Multiprozessorsystem mit Vervielfältigung von globalen Daten.
DE69519816T2 (de) Anordnung mit Duplikat des Cache-Etikettenspeichers
DE3851534T2 (de) Vorrichtung und verfahren zur buszugriffssteuerung.
DE3883532T2 (de) Knoten für die bedienung von unterbrechungsanforderungsnachrichten auf einem anstehenden bus.
DE3751164T2 (de) Datenprozessor mit verschiedenen Unterbrechungsverarbeitungsarten.
DE69424272T2 (de) Auf Warteschlangen basierender prädiktiver Durchflusssteuerungsmechanismus
EP0006164B1 (de) Multiprozessorsystem mit gemeinsam benutzbaren Speichern
DE10296959T5 (de) System und Verfahren zum Steuern der Buszuteilung während Cache-Speicher-Burstzyklen
EP0929041A2 (de) Verfahren und Anordnung zum Betreiben eines Bussystems
EP0179936A1 (de) Verfahren und Einrichtung zur Steuerung einer Sammelleitung
DE4035837A1 (de) Bus-hauptschnittstellenschaltung mit transparenter unterbrechung einer datenuebertragungsoperation
DE69219848T2 (de) Verfahren zur Behandlung von Datenübertragungen in einen Computersystem mit einem Zweibusbau
DE3642324A1 (de) Multiprozessoranlage mit prozessor-zugriffssteuerung
DE4018481C2 (de)
DE69122142T2 (de) Steuerungsanlage für ein Mehrprozessorsystem
DE3882991T2 (de) Anordnung und methode zur erzielung von unterbrechungen mit einem "pended bus".
DE69513211T2 (de) Schnelles verteiltes Pipeline-Arbitrierungsschema

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8327 Change in the person/name/address of the patent owner

Owner name: HEWLETT-PACKARD CO. (N.D.GES.D.STAATES DELAWARE),

8327 Change in the person/name/address of the patent owner

Owner name: HEWLETT-PACKARD DEVELOPMENT CO., L.P., HOUSTON, TE