DE3788805T2 - Prioritaetstechnik für einen zerteilten transaktionsbus in einem multiprozessorrechnersystem. - Google Patents
Prioritaetstechnik für einen zerteilten transaktionsbus in einem multiprozessorrechnersystem.Info
- Publication number
- DE3788805T2 DE3788805T2 DE3788805T DE3788805T DE3788805T2 DE 3788805 T2 DE3788805 T2 DE 3788805T2 DE 3788805 T DE3788805 T DE 3788805T DE 3788805 T DE3788805 T DE 3788805T DE 3788805 T2 DE3788805 T2 DE 3788805T2
- Authority
- DE
- Germany
- Prior art keywords
- bus
- module
- signal
- initiator
- signals
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 239000003999 initiator Substances 0.000 claims description 263
- 238000012546 transfer Methods 0.000 claims description 211
- 230000015654 memory Effects 0.000 claims description 161
- 230000004044 response Effects 0.000 claims description 42
- 238000012360 testing method Methods 0.000 claims description 38
- 238000004891 communication Methods 0.000 claims description 14
- 230000001360 synchronised effect Effects 0.000 claims description 12
- 230000000977 initiatory effect Effects 0.000 claims description 7
- 238000003860 storage Methods 0.000 claims description 6
- 238000012545 processing Methods 0.000 claims description 5
- 230000002123 temporal effect Effects 0.000 claims description 2
- 230000000694 effects Effects 0.000 description 47
- 239000004020 conductor Substances 0.000 description 39
- 238000000034 method Methods 0.000 description 35
- 230000006870 function Effects 0.000 description 17
- 238000010586 diagram Methods 0.000 description 15
- 238000004140 cleaning Methods 0.000 description 7
- 230000003111 delayed effect Effects 0.000 description 7
- 230000008569 process Effects 0.000 description 7
- 230000008901 benefit Effects 0.000 description 6
- 230000001934 delay Effects 0.000 description 6
- 102100040862 Dual specificity protein kinase CLK1 Human genes 0.000 description 5
- 101000749294 Homo sapiens Dual specificity protein kinase CLK1 Proteins 0.000 description 5
- 238000012937 correction Methods 0.000 description 5
- 230000006872 improvement Effects 0.000 description 5
- 101100524346 Xenopus laevis req-a gene Proteins 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 230000001186 cumulative effect Effects 0.000 description 3
- 239000004065 semiconductor Substances 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 210000004027 cell Anatomy 0.000 description 2
- 230000007717 exclusion Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 238000005201 scrubbing Methods 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 230000001174 ascending effect Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 210000004899 c-terminal region Anatomy 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000002789 length control Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 239000002245 particle Substances 0.000 description 1
- 238000012913 prioritisation Methods 0.000 description 1
- 230000002250 progressing effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000000630 rising effect Effects 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 239000013598 vector Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/36—Handling 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)
- Information Transfer Systems (AREA)
- Multi Processors (AREA)
Description
- Die vorliegende Erfindung gehört zu einem neuen und verbesserten synchronen, transaktionsgeschlichteten oder -arbitrierten Transaktionsteilungsbus zur vorteilhaften Ausnutzung eines eng gekoppelten Multiprozessorcomputersystems, um Datentransfers mit hohem Gesamtdurchsatz, fair aufgeteilt unter einer Vielzahl von Initiatoren (z. B. Prozessoren) und Respondern (z. B. Speichern) als ein Ergebnis einer verbesserten Schlichtungs- oder Arbitrationstechnik, zu erzielen.
- In einem Computersystem ist ein Bus die Einrichtung, über die die elektrischen Signale zwischen einem zentralen Prozessor, einem Speicher und anderen Vorrichtungen wie Eingangs- und Ausgangsadaptern hin und her übertragen werden. In einem Uniprozessorcomputersystem kann der Bus einfach aus einer Vielzahl von elektrischen Leitern bestehen, welche die verschiedenen Komponenten des Systems verbinden. In Multiprozessor- und anderen ausgeklügelteren Computersystemen kann jedoch der Bus komplexer werden und eine aktive Rolle beim übertragen der verschiedenen Signale zwischen den Komponenten des Computersystems spielen, üblicherweise für den Zweck, einen Betrieb mit größerem Datendurchsatz oder größerer Geschwindigkeit zu erzielen.
- Eine der signifikanten Restriktionen bei dem Betrieb eines modernen Hochgeschwindigkeitscomputers ist die Speicherzugriffszeit des Hauptspeichers. Die Speicherzugriffszeit ist die Zeit, die der Speicher benötigt, um die Information in seinem internen Speicher wiederaufzufinden, nachdem er ein Leseadreßsignal empfangen hat. Da ein hoher Prozentsatz an Datenverarbeitungsaktivitäten in einem Computersystem das Lesen von Information aus einem Speicher beinhaltet, kann das kumulative Ausmaß an Speicherzugriffszeit bei typischen Datenverarbeitungsaktivitäten bedeutsam sein. Der kumulative Effekt des Wartens während Zugriffszeitperioden besteht darin, daß der Datendurchsatz des Computersystems reduziert wird. In einem Uniprozessorcomputersystem ist das System während der Speicherzugriffszeit inaktiv, weil der Prozessor auf eine Antwort aus dem Speicher während der Speicherzugriffszeit wartet. In einem Uniprozessorsystem ist das kein besonderes Problem, weil es nichts anderes gibt, was das System während der Zugriffszeitperiode tun könnte. In Multiprozessorsystemen könnten jedoch die anderen Prozessoren die Zugriffszeitperioden benutzen, um andere Aktivitäten auszuführen und dadurch den Durchsatz des Systems zu steigern.
- Diese Probleme sind erkannt worden, und als ein Resultat sind Transaktionsteilungsbusse ersonnen worden. Bei einem Transaktionsteilungsbus ist der Bus so ausgebildet, daß er ein Leseadreßsignal aus dem Initiator (z. B. einem Prozessor) zu dem Responder (z. B. einem Speicher) in einer Transaktion überträgt, die von der zeitlich verzögerten Transaktion getrennt ist, während welcher der adressierte Speicher die Lesedateninformation aus seinem internen Speicher zurück zu dem Initiator überträgt oder kommuniziert. Während der Zeitperiode, die zwischen dem Leseadreßsignal und der Antwort aus dem Speicher verstreicht, übertragen die anderen Prozessoren in dem Computersystem andere Signale zu anderen Komponenten des Systems über den Bus.
- Um die Konfusion zu vermeiden, die aus konkurrierenden Kommunikationen zwischen den verschiedenen Komponenten des Computersystems resultiert, ist eine Schlichtungs- oder Arbitrationstechnik in jedem Transaktionsteilungsbus notwendig. Die Arbitrationstechnik bestimmt, welche der besonderen Komponenten des Systems exklusiven Zugriff auf den Bus zu irgendeiner besonderen Zeit hat. Die Zeitintervalle, während welchen Information über den Bus übertragen werden kann, sind als Buszyklen bekannt. Zum Lösen des Problems von konkurrierenden Anforderungen zur Benutzung des Busses muß jeder der Komponenten des Systems eine Priorität zugeordnet werden.
- Eine typische Lösung für die Busschlichtung oder -arbitration ist als Aktivitätsarbitration bekannt, bei der einer Systemkomponente höherer Priorität exklusiver Zugriff auf den Bus für eine ausreichende Zahl von Buszyklen oder für eine ausreichende Zeit gegeben wird, um irgendeine besondere Aktivität zu vollenden. Der Nachteil von aktivitätsarbitrierten Bussen besteht darin, daß die Komponente höherer Priorität den Zugriff auf den Bus für eine ausreichend lange Zeitperiode behalten und andere Komponenten daran hindern kann, zum übertragen von Information in der Lage zu sein, wodurch diese Information verlorengeht.
- Ein weiterer Typ von Arbitrationstechnik ist die Zyklusarbitration, bei der jeder Zyklus des Busses individuell arbitriert wird. Der Nachteil der Zyklusarbitration ist, daß ein übermäßiges Ausmaß an Zeit beim individuellen Arbitrieren von jedem Zyklus verbraucht wird, was zu einem reduzierten Informationsdurchsatz führen kann.
- Die Zyklusarbitration ist besonders zeitraubend bei Systemen, bei denen eine zentralisierte Arbitration benutzt wird. In Systemen mit zentralisierter Arbitration schlichtet ein einzelner Prozessor oder eine andere Komponente alle konkurrierenden Anforderungen zur Benutzung des Busses und bestimmt, welcher der einzelnen Komponenten Zugriff auf den Bus gegeben wird. Die zentralisierte Arbitration verlangt üblicherweise, daß die konkurrierenden Systemkomponenten Anforderungssignale zu dem zentralisierten Arbiter übertragen und daß der zentralisierte Arbiter die Signale, die einer besonderen Komponente Zugriff auf den Bus geben, überträgt, nachdem die Arbitration erfolgt ist. Dieser Prozeß, der als ""Handshaking"" bekannt ist, verbraucht ebenfalls Zeit, während welcher keine nutzbare Information über den Bus übertragen werden kann. Diese zentralisierten Arbitrationstechniken tendieren außerdem dazu, die Kapazität zum Datentransfer, bekannt als "Bandbreite" des Busses, zu reduzieren.
- Verteilte Arbitrationstechniken sind ersonnen worden, um die Probleme zu vermeiden, die mit zentralisierter Arbitration verbunden sind. In einem System mit verteilter Arbitration enthält jede einzelne Komponente des Computersystems ihre eigene Schaltungsanordnung oder Logik zum Arbitrieren der Anforderungen aus allen Systemkomponenten und zum Bestimmen, welcher Komponente exklusiver Zugriff auf den Bus während eines besonderen Buszyklus gegeben wird. Die verteilten Arbitrationstechniken beinhalten üblicherweise weniger zeitraubende Aktivitäten auf dem Bus selbst und erhöhen die Kapazität des Busses.
- Zur gegenwärtigen Zeit tragen synchrone Busse ebenfalls zu höherer Buskapazität bei. Ein synchroner Bus ist einer, bei dem alle Informationstransfers in Synchronismus mit einem einzelnen Taktsignal erfolgen. Ein asynchroner Bus ist einer, bei dem die Aktivitäten auf dem Bus nicht in regelmäßigen Intervallen getaktet sind. Bei einem synchronen Bus wird es im allgemeinen eine höhere Informationskapazität geben, weil der getaktete Synchronismus von sämtlichen Transfers von Information auf der Annahme beruht, daß die Komponente, die die Information empfängt, diese tatsächlich empfangen haben wird. Im Gegensatz dazu verlangt ein asynchroner Bus, daß die Komponente, die die Information empfängt, ein Signal zurücksendet, welches ihren Empfang bestätigt. Das separate Bestätigungssignal benutzt auch die Buskapazität, ohne zum Datendurchsatz beizutragen. Solange, wie die Speicherzykluszeiten, d. h. die Speicherzugriffszeit plus der zusätzlichen Mindestzeit, die erforderlich ist, um auf das nächste folgende Leseadreßsignal zu antworten, wesentlich größer sind als die Buszykluszeit, wird ein höherer Datendurchsatz mit synchronen Bussen als mit asynchronen Bussen erzielt. Traditionell sind synchrone Busse auch zuverlässiger gewesen, weil der Betrieb des Busses geprüft werden kann, indem Signale in bestimmten Zeitpunkten abgetastet werden und nach Unstimmigkeiten in dem abgetasteten Signal geschaut wird. Schließlich, und vielleicht am wichtigsten, synchrone Busse erlauben die Implementierung von ausgeklügelten Arbitrationstechniken. Bei einem asynchronen Bus gibt es sehr wenig, wenn überhaupt, Arbitration, da Anforderungen für den Gebrauch des Busses auf der Basis, welche Anforderung zeitlich zuerst empfangen wird, berücksichtigt werden. Bei synchronen Bussen können ausgeklügeltere Bestimmungen realisiert werden, weil Anforderungen in ausgewählten, festen Zeitpunkten abgetastet werden, statt aperiodisch, und weil konkurrierende Anforderungen auf der Basis der Priorität von Bedeutung, welche der besonderen Systemkomponente zugeordnet ist, die die Anforderung erzeugt, berücksichtigt werden können. Ein solches System ist z. B. in der GB 2 171 542 beschrieben.
- In ihren signifikanten Aspekten bezieht sich die Erfindung auf Verbesserungen der Arbitrationstechnik, die bei einem synchronen Transaktionsteilungsbus benutzt wird. Die Arbitrationstechnik nach der vorliegenden Erfindung ordnet eindeutige Prioritätszuweisungen jedem bzw. jeder der Vielzahl von Moduln oder Komponenten in dem Computersystem zu. Diese zugeordnete Priorität wird benutzt, um konkurrierende Streitigkeiten oder Kollisionen zwischen verschiedenen Moduln zu schlichten, die exklusiven Zugriff auf den Bus oder die "Meisterschaft" über diesen verlangen. Die Arbitrationstechnik beinhaltet außerdem eine Unterscheidung zwischen "Initiator"-Moduln, welche Transaktionen über den Bus initiieren, wie z. B. Prozessoren oder Eingangs/Ausgangsvorrichtungen, und "Responder"-Moduln, welche auf Initiatoren antworten, wie z. B. Speicher.
- Bei der Arbitrationstechnik nach der vorliegenden Erfindung wird Respondern Priorität gegenüber Initiatoren gegeben, basierend auf der Prämisse, daß die Verzögerungszeiten reduziert und der Datendurchsatz gesteigert wird, indem die Antworten an wartende Initiatoren nicht länger verzögert werden, als die Responder benötigen, um die Information zu liefern, welche die Initiatoren zuvor verlangt haben. Sowohl die Initiatoren als auch die Responder werden infolgedessen aktiver werden und weniger Wartezustände haben. Das Problem der Konkurrenz hinsichtlich der Meisterschaft zwischen Respondern wird auf der Basis der Priorität gelöst, die jedem Modul zugeordnet ist. Diese Arbitration mit fester Priorität zwischen Respondern kann nicht dazu führen, daß ein Responder den Bus zum Nachteil von anderen Respondern "monopolisiert", weil die Responder Busaktivität allein aufgrund von vorheriger Busaktivität durch Initiatoren entwickeln.
- Die Arbitration von konkurrierenden Anforderungen durch Initiatoren verlangt "Fairness", um schnellere oder eine höhere Priorität aufweisende Initiatoren daran zu hindern, so viel Bandbreite zu benutzen, daß langsamere oder eine niedrigere Priorität aufweisende Initiatoren nicht in der Lage sind, effektiv zu arbeiten. Die Arbitrationsfairness weist die Meisterschaft konkurrierenden Initiatoren auf der Basis von festen Prioritäten für Anforderungen zu, die während eines bestimmten Buszyklus ankommen. Alle Anforderungen aus Initiatoren, die während irgendeines bestimmten Zyklus ankommen, werden in der Reihenfolge der Priorität vor irgendwelchen Anforderungen aus Initiatoren, die während anschließenden Zyklen ankommen, gehandhabt.
- Initiatoren, welche besetzte Responder adressieren, d. h. einen Responder, der gegenwärtig damit beschäftigt ist, auf eine vorherige Anforderung aus einem anderen Initiator zu antworten, werden mit einer Anzeige versorgt, wenn der Responder nicht mehr besetzt ist. Bis diese Anzeige geliefert wird, wird ein Wiederversuch für diesen besonderen Modul zurückgestellt, bis es eine Gelegenheit gibt, daß dieser besondere Modul die Anforderung des Initiators akzeptieren kann. Um diese Wiederversuchsaktivitäten zu beschleunigen, werden Anforderungen aus nichtwiederversuchenden Initiatoren temporär rückgängig gemacht, wenn ein Responder anzeigt, daß er bereit ist, einen Wiederversuch zu empfangen.
- Transaktionen im Gegensatz zu Transfers über den Bus werden arbitriert. Jede Transaktion kann bis zu einer maximalen vorbestimmten Zahl von Buszyklen verbrauchen, und die maximale Zahl von Buszyklen wird so ausgewählt, daß kein besonderer Modul den Bus für ein derart exzessives Ausmaß an Zeit monopolisieren wird, daß andere Information aus anderen Moduln verlorengehen könnte. Für Transaktionen, die mehr als einen Buszyklus verlangen, wird ein Signal, das anzeigt, daß der Bus für mehr als einen anschließenden Zyklus zu halten ist, geliefert, um die Arbitration bis zur Vollendung der vorherigen Transaktion aufzuschieben. Die Moduln enthalten jeweils ihren eigenen verteilten Arbiter zum Gewähren der Meisterschaft über den Bus.
- Ein relativ hoher Gesamtdatendurchsatz wird aufgrund der vorliegenden Erfindung erzielt, weil die gleiche Konkurrenz zwischen Initiatoren und Respondern um die Busmeisterschaft eliminiert wird. Dadurch, daß den Respondern gegenüber den Initiatoren der Vortritt gelassen wird, werden die Initiatoren beim Empfang der Information, die früher von den Respondern verlangt worden ist, eher aktiv. Dadurch, daß wartenden Initiatoren signalisiert wird, daß ein vorher besetzter Responder verfügbar geworden und nicht länger besetzt ist, und daß wiederversuchenden Initiatoren der Vortritt vor nichtwiederversuchenden Initiatoren gelassen wird, wird Busbandbreite nicht übermäßig für nutzlose Wiederversuche vergeudet, wie es der Fall bei arbiträr initiierten Wiederversuchsanforderungen der Fall ist, die bei bekannten Bussen üblich sind. Ebenso wird die Buskapazität erweitert und gleichmäßiger auf die Moduln verteilt, indem alle anschließenden Anforderungen aufgeschoben werden, bis die früheren Anforderungen in der Reihenfolge ihrer Priorität abgearbeitet worden sind. Durch Arbitrieren auf der Basis von einzelnen Transaktionen, im Gegensatz zu Aktivitäten oder Buszyklen, wird der Datendurchsatz ebenfalls gesteigert.
- Diese und andere Faktoren tragen zu den Verbesserungen bei, die aufgrund der Erfindung verfügbar sind. Die vorliegende Erfindung wird vollständiger verständlich durch Bezugnahme auf die beigefügte ausführliche Beschreibung einer gegenwärtig bevorzugten Ausführungsform der Erfindung und der beigefügten Zeichnungen. Selbstverständlich wird die Erfindung selbst durch die unabhängigen Ansprüche 1 und 19 definiert.
- Fig. 1 ist ein Blockschaltbild, das ein Computersystem veranschaulicht, welches eine Vielzahl von Prozessormoduln, eine Vielzahl von Eingangs-/Ausgangsadaptermoduln, eine Vielzahl von Hauptspeichermoduln, eine Vielzahl von Spezialspeichermoduln und den verbesserten Bus nach der vorliegenden Erfindung aufweist.
- Fig. 2 ist ein Blockschaltbild des in Fig. 1 gezeigten Busses nach der vorliegenden Erfindung, die gewisse signifikante Signale veranschaulicht, welche über den Bus geleitet werden, und Teile eines Initiatormoduls und eines Respondermoduls, die ebenfalls in Fig. 1 gezeigt sind.
- Die Fig. 3A, 3B, 3C, 3D, 3E, 3F, 3H, 3I; 3J, 3K, 3L, 3M und 3N sind Impulsdiagramme, die Buszyklen, Komponenten von Buszyklen und die Zeitsteuerung von verschiedenen Signalen auf dem Bus, welche in Fig. 2 dargestellt sind, veranschaulichen. Fig. 3G bezeichnet separate Buszyklen und Zustände jedes Buszyklus.
- Fig. 4 ist ein Logikschaltbild eines Taktsignalempfängers jedes Buskopplers des in Fig. 2 gezeigten Busses.
- Fig. 5A ist eine Darstellung eines Doppelwortes, welches über den Bus nach der vorliegenden Erfindung als grundlegende Einheit eines Datentransfers in einer einzelnen Transaktion übertragen werden kann, und Fig. 5B veranschaulicht vier Doppelwörter, d. h. die maximale Zahl von Doppelwörtern, die über den Bus in einer einzelnen Transaktion übertragen werden können.
- Die Fig. 6A, 6B, 6C, 6D und 6E sind Darstellungen von Datenschreib-, Datenlese-, Test- und Setz- und Speicherreinigungs-, Steuerschreib- bzw. Steuerlesetransaktionen, welche auf dem Bus nach der vorliegenden Erfindung auftreten, dargestellt mit Bezug auf die Zahl und die räumliche und zeitliche Beziehung von verschiedenen Buszyklen, während welchen Transfers dieser Transaktionen erfolgen.
- Die Fig. 7A, 7B und 7C sind Darstellungen der Bitformate einer Adresse, eines Lese- und Schreibdaten- und eines Steuerdoppelwortes, die über den Bus nach der vorliegenden Erfindung während der in Fig. 6 dargestellten verschiedenen Transaktionen übertragen werden können.
- Fig. 8 ist ein Blockschaltbild eines Initiatordatenweglogikelements, das in Fig. 2 gezeigt ist.
- Fig. 9 ist ein Blockschaltbild eines Responderdatenweglogikelements, das in Fig. 2 gezeigt ist.
- Fig. 10 ist ein Diagramm, welches die Art der Transaktionsteilung des Betriebes des in Fig. 2 gezeigten Busses veranschaulicht, und zwar in bezug auf Arbitrationssignale, Informationstransfer- und Transfersteuersignale sowie den Transfer von Statussignalen während aufeinanderfolgenden Zyklen des Busses unter einer Vielfalt von unterschiedlichen Arbitrationssituationen.
- Fig. 11 ist ein Impulsdiagramm, das ein Beispiel von mehrfachen Anforderungen und die Lösung dieses Problems, unter anderem, unter der Arbitrationstechnik nach der vorliegenden Erfindung veranschaulicht.
- Fig. 12 ist ein Impulsdiagramm, das ein Beispiel einer rückgängig gemachten Anforderung, unter anderem, unter der Arbitrationstechnik nach der vorliegenden Erfindung veranschaulicht.
- Fig. 13 ist ein Impulsdiagramm, das ein Beispiel von mehreren wiederversuchenden, unter anderem, Initiatoren unter der Arbitrationstechnik nach der vorliegenden Erfindung veranschaulicht.
- Fig. 14 ist ein Impulsdiagramm, das ein Beispiel von mehrfachen Wiederversuchen durch einen Initiator, unter anderem, unter der Arbitrationstechnik nach der vorliegenden Erfindung veranschaulicht.
- Die Fig. 11 bis 14 benutzen Pfeile, die verschiedene Signale verbinden, zum Zeigen von Bedingungen, welche zu kausativen Ereignissen führen. Die Kreise an den Enden der Pfeile repräsentierten die verschiedenen Bedingungen, welche die am Kopf des Pfeils gezeigte Situation erzeugen oder verursachen.
- Fig. 15 ist eine verallgemeinerte Darstellung von Stiftverbindern zum Verbinden der in Fig. 1 gezeigten Moduln jeweils mit einer Mutterplatine oder Rückebene des Busses und veranschaulicht weiter die Einrichtung, durch welche Anforderungssignale aus jedem Modul mit anderen Moduln verbunden werden.
- Die Fig. 16A, 16B und 16C sind gemeinsam ein Schaltbild der Logikschaltungsanordnung der Arbitrationslogik eines Initiators des Busses, wie er in Fig. 2 gezeigt ist.
- Die Fig. 16D, 16B und 16E sind gemeinsam ein Schaltbild der Logikschaltungsanordnung der Arbitrationslogik eines Responders des Busses, wie er in Fig. 2 gezeigt ist.
- Die Fig. 16A, 16B, 16C, 16D und 16E sind idealisierte schematische Darstellungen einer Logikschaltungsanordnung, die sich in der tatsächlichen Realisierung nur in dem Sinne unterscheiden, daß gewisse zusätzliche Komponenten erforderlich sind, um eine Kompensation für Zeit- und Ausbreitungsverzögerungen zu erzielen, wenn mit sehr hohen Geschwindigkeiten gearbeitet wird.
- Ein fest gekoppeltes Multiprozessorcomputersystem ist in Fig. 1 dargestellt. Der Bus nach der vorliegenden Erfindung, der in Fig. 1 mit 50 bezeichnet ist, dient als eine Hochleistungskommunikationseinrichtung zum übertragen von Daten-, Steuertransfer-, Steuerstatus- und Arbitrationssignalen zwischen einer Vielzahl von zentralen Prozessormoduln 52, einer Vielzahl von Eingabe/Ausgabe("E/A")-Adaptermoduln 54, einer Vielzahl von Hauptspeichermoduln 56 und einer Vielzahl von Spezialspeichermoduln 58. Der Bus 50 gestattet der Vielzahl von Prozessoren 52 und E/A-Adaptern 54, miteinander zu kommunizieren und sich einen gemeinsamen Hauptspeicher- und Spezialspeicherpool 56 bzw. 58 teilen. Das Computersystem, das in Fig. 1 gezeigt ist, ist eng gekoppelt, weil seine Vielzahl von zentralen Prozessormoduln 52 über den einzelnen Bus 50 mit einem gemeinsamen Hauptspeicherpool kommuniziert.
- Die Speichermoduln 56 und 58 enthalten jeweils konventionelle Speicherkomponenten. Der Hauptspeichermodul 56 ist der Universalspeicher des Systems. Die Speicherkomponenten des Spezialspeichermoduls 58 können ebenfalls konventionell sein, sie können aber von einer Quelle her, bei der es sich nicht um die in Fig. 1 gezeigte handelt, modifiziert werden. Zum Beispiel, die Spezialspeichermoduln können Grafikspeichermoduln sein, und eine externe Zeichenmaschine (nicht gezeigt) kann benutzt werden, um Vektoren, Zeichen und andere Symbole über einen Kommunikationsweg, der nicht über den Bus 50 geht, in den Grafikspeicher zu zeichnen. Einige oder sämtliche Speicher in den Moduln 56 und 58 können Cachespeicher sein, und die Cachespeicher können in den Prozessor- und E/A-Adaptermoduln 52 und 54 enthalten sein. Selbstverständlich ist es der Gesamtzweck von jedem der Speicher, Daten festzuhalten, die an vorbestimmten Adressen in die Speicher geschrieben oder darin aufgezeichnet worden sind, und die Information, die an besonderen Adressen aufgezeichnet ist, zurück zu einer anderen Komponente oder einem anderen Modul zu leiten, der die Information an der besonderen Adresse verlangt hat.
- Jeder zentrale Prozessormodul 52 enthält einen herkömmlichen Prozessor, der Daten in dem Speicher manipuliert. Die Prozessoren können auch die Speicherinhalte als besondere Befehle, Daten usw. interpretieren, um Daten zu verarbeiten.
- Jeder E/A-Adaptermodul 54 ist mit einer E/A-Vorrichtung (nicht gezeigt) verbunden. Jede E/A-Vorrichtung kann eine von einer Vielfalt unterschiedlicher externer Vorrichtungen sein, die mit dem Computersystem verbunden sind. Zum Beispiel, die E/A-Vorrichtungen können ein Lokalbereichsnetzwerk, ein weiterer Computer wie z. B. ein kleiner Computer oder ein Personalcomputer und ein Plattenspeicher sein. Jeder E/A-Adapter 54 repräsentiert eine gleichmäßige elektrische Schnittstelle mit dem Bus 50, damit eine Kommunikation zwischen den E/A-Vorrichtungen über die E/A-Adaptermoduln 54 zu den anderen Moduln, die mit dem Bus 50 verbunden sind, aufgebaut wird.
- Jeder der Moduln 52, 54, 56 und 58 enthält einen Koppler, durch den Signale aus dem Bus zu den anderen Komponenten des Moduls übertragen werden und Kommunikationen, die von den anderen Komponenten des Moduls ausgehen, zu dem Bus über den Koppler rückgekoppelt werden. Die Koppler sind ausführlicher in Fig. 2 beschrieben und sind Teil des Busses 50, wie im folgenden beschrieben.
- Die Moduln, die an den Bus 50 angeschlossen sind, sind entweder "Initiatoren" oder "Responder". Ein Initiatormodul und ein Respondermodul sind jeweils ein besonderer Typ von Modul, dessen Eigenschaften festgelegt sind und nicht geändert werden können.
- Ein Initiatormodul ist ein Modul, der in der Lage ist, eine Busaktivität für den Zweck des Ausführens von Speicherraumdatentransfers aufgrund von exogenen oder intern erzeugten Bedingungen zu initiieren. Die zentralen Prozessormoduln 52 und die E/A-Adaptermoduln 54 sind Initiatoren und sind bezeichnet, beispielsweise mit 60. Der Prozessor in jedem zentralen Prozessormodul 52 initiiert eine Busaktivität aus intern erzeugten Zuständen heraus, z. B. denjenigen, die aufgrund der Ausführung von Befehlen auftreten. Die E/A-Adaptermoduln 54 leiten eine Busaktivität aufgrund von exogenen Ereignissen wie Signalen, die von den E/A-Vorrichtungen geliefert werden, ein.
- Respondermoduln sind diejenigen, die allein in der Lage sind, eine Busaktivität für den Zweck der Ausführung von Transfers aufgrund von Anforderungen, die von Initiatoren ausgehen, zu initiieren. Das heißt, ein Responder ist in der Lage, eine Busaktivität aufgrund einer zuvor empfangenen Busaktivität zu initiieren, und nicht aufgrund von exogenen Ereignissen. Daher sind die Speichermoduln 56 und 58 als Responder bei 62 gezeigt, weil sie nur auf vorherige Anforderungen durch die Initiatormoduln 52 und 54 ansprechen.
- Die schnittstellenverbindung der Responder mit dem Bus 50 erfolgt auf einer Transaktionsteilungsbasis. Die Responder empfangen ein Leseanforderungssignal in einem Buszyklus oder Zeitpunkt und senden zu einem späteren Buszyklus oder späteren Zeitpunkt, der größer als oder gleich der Speicherzugriffszeit ist, und in Verbindung mit einem besonderen Buszyklus die Antwort zurück zu dem Initiator.
- Weil die Moduln Signale über den Bus 50 senden und Signale über den Bus 50 empfangen, können alle Moduln als ein "Master" zu einer besonderen Zeit und als ein "Slave" zu einer anderen Zeit arbeiten. Zu irgendeiner bestimmten Zeit ist der Bus 50 entweder im Leerlauf (null), was bedeutet, daß kein "Transfer" oder eine Aktivität auf ihm vonstatten geht; oder der Bus ist aktiv, was bedeutet, daß exakt ein "Transfer" oder eine Aktivität über ihn vonstatten geht. Während jedes aktiven Buszyklus arbeitet ein Modul als ein Master und ein Modul als ein Slave. Der Modul, der als ein Master arbeitet, ist derjenige Modul, welcher den Transfer und die Transfersteuersignale steuert, und der Modul, der als der Slave arbeitet, ist derjenige Modul, der ausgewählt wird, um den Transfer und die Transfersteuersignale, die durch den Master gesteuert werden, zu empfangen. Die Begriffe "Master" und "Slave" sind deshalb dynamische Konzepte, die in Beziehung zur Busarbitration und -verwendung stehen. Zum Beispiel, wenn ein Prozessormodul 52 eine Leseanforderung zu einem Speichermodul 56 sendet, ist der Prozessormodul 52 der Master, und der Speichermodul 56 ist der Slave. Wenn jedoch der Speichermodul 56 auf eine Leseanforderung antwortet, die zuvor durch den Prozessor 52 gesendet worden ist, ist der Speichermodul 56 der Master und der Prozessor, der die Information verlangte, ist der Slave.
- Gemäß Fig. 1 gibt es, anders als bei vielen Computersystemen, keine körperliche zugeordnete Verbindung zwischen den E/A-Adaptern und den Prozessoren. Der einzelne gemeinsam benutzte Bus 50 ist die einzige Einrichtung zur Interkommunikation zwischen sämtlichen Moduln des Computersystems. Die Kommunikation zwischen der Software, die auf dem Prozessormodul 52 läuft, und einem E/A-Adaptermodul 54, der die Eingabe/Ausgabe an einer E/A-Vorrichtung physikalisch ausführen wird, geht über gemeinsam benutzte Datenstrukturen, die in dem Hauptspeicher in den Hauptspeichermoduln 56 gespeichert sind. Diese Datenstrukturen werden beim Erstellen eines gleichförmigen Kommunikationsprotokolls zwischen sämtlichen Moduln, die mit dem Bus 50 verbunden sind, benutzt. Ein derartiges Kommunikationsprotokoll ist in der Anmeldung für eine "Eingabe/Ausgabe-Steuertechnik", Serial Number 910 006, PCT/US87/02394, gleichzeitig hiermit eingereicht und derselben Anmelderin gehörend, beschrieben.
- Mehr Einzelheiten über den Bus 50 sind in Fig. 2 dargestellt. Der Bus 50 hat einen Initiatorkoppler 64, der mit jedem Initiatormodul 60 verbunden ist, und einen Responderkoppler 66, der mit jedem Respondermodul 62 verbunden ist. Der Initiatorkoppler 64 und der Responderkoppler 66 sind sehr ähnlich. Jede signifikante Differenz wird im folgenden beschrieben. Signale zwischen den Buskopplern 64 und 66 von jedem der Moduln werden über eine Vielzahl von elektrischen Leitern geleitet, die kollektiv mit 68 bezeichnet sind. Zur Vereinfachung der Darstellung sind Vielzahlen von Leitern durch einzelne Leitungen in Fig. 2 gezeigt. Der Buskoppler 64 dient als eine Einrichtung zum Koppeln der Bussignale mit den übrigen Komponenten der Schaltungsanordnung in jedem Modul 60 oder 62 und zum übertragen der Signale aus den Komponenten der Schaltungsanordnung in jedem Modul 60 oder 62 zu den Busleitern 68. Die Busleiter 68 sind räumlich auf einer Rückebene 70 oder "Mutter"-Schaltungsplatine angeordnet. Die Koppler 64 und 66 sind mit der Rückebene 70 über einen herkömmlichen Mehrstiftverbinder (nicht gezeigt) verbunden, und sämtliche Signale zwischen den Kopplern 64 und 66 und den Busleitern 68 gehen über diese Verbinder.
- Die Gruppen von Signalen, die über die Busleiter 68 des Busses 50 geleitet werden, welche zu der vorliegenden Erfindung gehören, sind bezeichnet als Initialisierungssignale, Taktsignale, Arbitrationssignale, Informationstransfersignale, Transfersteuersignale, Transferstatussignale und ein Bereitsignal, die in Fig. 2 gezeigt sind. Eine Konvention, die in der gesamten Beschreibung benutzt wird, besteht darin, daß die Signale, die auf dem Bus 50 vorhanden sind, mit großen Buchstaben geschrieben werden und mit "B" beginnen, gefolgt von einem "·". Ein Präfix von "-" wird bei den Bussignalnahmen benutzt, welche aktiv sind, wenn das Signal in einem logischen L-Zustand abgegeben wird. Das Fehlen eines Präfix zeigt an, daß das Signal in einem logischen H-Zustand abgegeben wird.
- Jeder Buskoppler 64 und 66 enthält eine Initialisierungsschaltung 22, die die Initialisierungssignale empfängt. Jede Initialisierungsschaltung 22 spricht auf die Initialisierungssignale an, um vorbestimmte Initialisierungsbedingungen in den Buskopplern 64 und 66 zu erzeugen und um den normalen Betrieb des Busses und der angeschlossenen Moduln rückzusetzen oder anderweitig zu übersteuern. Die Initialisierungssignale beinhalten ein Signal, um das System in einen bekannten Zustand zu bringen, wenn das Computersystem anfänglich mit Strom versorgt wird, ein Signal, um das Computersystem in einen bekannten, möglicherweise anderen Zustand bei der Erholung von katastrophalen Fehlern zu bringen, und ein Fehlersignal, welches benutzt wird, um sich mit dem Auftreten eines unkorrigierbaren Fehlerzustands zu befassen. Diese Initialisierungssignale und die Initialisierungsschaltungsanordnung 22, welche auf diese Signale anspricht, sind in Computersystemen herkömmlich und werden deshalb nicht weiter beschrieben.
- Der Bus 50 enthält außerdem einen zentralisierten Taktgenerator 74, der an der Rückebene 70 separat von den Moduln befestigt ist. Der Taktgenerator 74 liefert Taktsignale über Taktsignalleiter der Gruppe von Busleitern 68 zu Taktempfängern 76, die in jedem Buskoppler 64 oder 66 angeordnet sind. Die Taktsignale sind diejenigen Signale, die die grundlegende Synchronisierung für alle Transfers und andere Aktivität auf dem Bus erzeugen. Diese Taktsignale definieren auch jeden Buszyklus und eine Vielzahl von Buszuständen während jedes Buszyklus. Weil die Synchronisation für den richtigen Betrieb des Busses von grundlegender Bedeutung ist und weil der Busbetrieb mit einer relativ hohen Geschwindigkeit vonstatten geht, erstrecken sich Leiter gleicher Länge zwischen dem Taktgenerator 74 und den Taktempfängern 76, und es werden separate Takttreiber für die Signale an jedem Buskoppler 64 und 66 benutzt, um einen Taktversatz zu vermeiden oder zu minimieren. Durch Minimieren eines Taktversatzes wird die Synchronisation enger aufrecht erhalten.
- Der Taktgenerator 74 ist ein herkömmlicher Generator, der die Signale B.CLK1 und B.CLK0 liefert, die in den Fig. 3A bzw. 3B gezeigt sind. Die Signale B.CLK1 und B.CLK0 sind ein Paar Rechteckschwingungen, die um 90º phasenverschoben sind. Weil die Taktsignale benutzt werden, um alle Transfers über den Bus zu synchronisieren, ist es unter einem praktischen Gesichtspunkt wichtig, sicherzustellen, daß die Taktsignale an allen Moduln zur selben Zeit ankommen. Wenn die Taktsignale zu einer unterschiedlichen Zeit ankommen, wird dieser resultierende Unterschied als Taktversatz bezeichnet. Taktversatz könnte, wenn er stark genug ist, bewirken, daß ein Modul Daten in einem Zeitpunkt abtastet, in welchem ein anderer Modul diese Daten noch nicht auf die Busleiter gebracht hat, beispielsweise, und die Datenkommunkationszuverlässigkeit reduzieren. Die Lösung, die bei der vorliegenden Erfindung benutzt wird, besteht darin, separate Kopien der Taktsignale B.CLK1 und B.CLK0 an jeden Modul zu verteilen und dem Busleiter, über den die Taktsignale angelegt werden, von dem Taktgenerator 74 bis zu einem Taktempfänger 76 in jedem Modul die gleiche Länge zu geben. Infolgedessen wird der Taktversatz, der aus unterschiedlicher Signalfortpflanzungsgeschwindigkeit resultiert, und der Taktversatz, der aus unterschiedlicher Belastung an den Signalen resultiert, minimiert.
- Jeder Taktempfänger 76 ist schematisch in Fig. 4 dargestellt und enthält vier Exklusiv-ODER(XOR)-Schaltungen 78, 80, 82 und 84. Die vier XOR-Schaltungen sind körperlich in einer einzelnen integrierten Schaltungs(IS)-Komponente enthalten, wie z. B. einer üblichen "74F86"-Komponente. Durch Verknüpfen von allen vier XOR-Schaltungen zu einer einzelnen IS sind alle vier Schaltungen derselben Temperatur und derselben Spannung ausgesetzt, so daß unterschiedliche Signalverzögerung und -ausbreitung durch jede dieser Schaltungen minimal sein wird. Eine der Eingangsklemmen jeder XOR-Schaltung 78 und 80 liegt an Masse, und eine der Eingangsklemmen jeder XOR-Schaltung 82 und 84 wird auf einem logischen H-Pegel gehalten. Das Signal B.CLK1 wird an die andere Eingangsklemme der XOR-Schaltungen 78 und 82 angelegt, das Signal B.CLK0 wird an die andere Eingangsklemme der XOR-Schaltungen 80 und 84 angelegt. Buszykluszustandssignale B0, B1, B2 und B3 werden durch die vier XOR-Schaltungen 78, 80, 82 und 84 auf das Anlegen der Signale B.CLK1 und B.CLK0 hin erzeugt. Die Zustandssignale B0, B1, B2 und B3 sind in den Fig. 3C, 3D, 3E bzw. 3F dargestellt.
- Jeder Buszyklus überspannt die Zeitperiode zwischen der Vorderflanke der Signale B0, und jeder Buszyklus ist in Fig. 3G durch ein "T" mit einem Index, der aufeinanderfolgende Zyklen anzeigt, dargestellt. Vier Buszustände existieren innerhalb jedes Buszyklus, und jeder Buszustand existiert beginnend zu der Zeit, zu der die Signale B0, B1, B2 und B3 von dem logischen L-Pegel auf den logischen H-Pegel übergehen, und setzt sich fort, bis das nächste Buszustandssignal abgegeben wird. Diese vier Buszustände sind auch in Fig. 3G dargestellt. Ereignisse, die als auftretend bei einem bestimmten Buszustand oder als auftretend während eines bestimmten Buszustands beschrieben werden, beginnen an der Taktflanke an dem Beginn dieses Zustands. Nur die ansteigenden Flanken der Signale B0, B1, B2 und B3 werden durch die Buskopplerlogik benutzt.
- Die Verwendung der vier XOR-Schaltungen in jedem Taktempfänger 76 führt zu einer Gray-Code-Taktgabe für jedes der Buszustandssignale B0, B1, B2 und B3, um die Möglichkeit von Zustandsdecodierfehlern zu eliminieren. Vier unterschiedliche Buszustände werden erzielt, während die maximale Frequenz, die über die Taktbusleiter 68 übertragen wird, reduziert wird. In der bevorzugten Ausführungsform der vorliegenden Erfindung treten die Buszyklen mit 10 MHz auf, wobei jeder Buszyklus etwa 100 ns überspannt, und jeder Buszustand existiert für etwa 25 ns. Die vier Buszustandssignale werden an andere Elemente innerhalb der Buskoppler 64 und 66 angelegt, wie es in Fig. 2 gezeigt ist.
- Die Signale B.DAT31-0, die in Fig. 2 gezeigt sind, übertragen Information zwischen den Buskopplern 64 und 66. Die grundlegende Informationstransfereinheit ist eine 32-Bit- Entität, die als ein "Doppelwort" bezeichnet wird und in Fig. 5A dargestellt ist. Das Doppelwort besteht aus vier Bytes, die mit der Bytenumerierung gezeigt sind. Das Doppelwort besteht auch aus zwei Wörtern mit der dargestellten Reihenfolge. Während jedes aktiven Buszyklus wird ein Doppelwort übertragen. In einer einzelnen Transaktion können entweder ein, zwei oder vier Doppelwörter übertragen werden. Vier Doppelwörter sind in Fig. 5B dargestellt. Eine "Transaktion" ist, wie der Begriff hier benutzt wird, eine Aktivität, welche die Funktion höheren Niveaus ausführt, über den Bus ein, zwei oder vier Doppelwörter oder eine vergleichbare Entität zu übertragen, und welche einen oder mehrere aufeinanderfolgende Buszyklen verbraucht. Für diese Transaktionen, die mehr als einen sequentiellen Buszyklus verlangen, wird die Busmeisterschaft oder -exklusivität in dem Mastermodul aufrechterhalten, der an der Übertragung der mehreren Doppelwörter während einer einzelnen Transaktion beteiligt ist.
- Die grundlegenden Typen von Transaktionen, die durch den Bus nach der vorliegenden Erfindung gestützt werden, sind in den Fig. 6A, 6B, 6C, 6D und 6E dargestellt. Jede dieser Transaktionen hat die gezeigten unterschiedlichen Zeitsteuermuster in bezug auf die Buszyklen.
- Eine Datenschreibtransaktion ist in Fig. 6A dargestellt. Eine Datenschreibtransaktion verbraucht zwei bis fünf aufeinanderfolgende Buszyklen. Alle Datenschreibtransaktionen verbrauchen die Buszyklen X und X+1, wobei die Adresse des Speicherplatzes, in welchen die Daten einzuschreiben sind, während des Buszyklus X von dem Initiator zu dem Responder übertragen wird, und wobei während des Buszyklus X+1 der Initiator das einzelne Datenwort, das zu schreiben ist, dem Responder zuführt. Der Buszyklus X+2 wird verbraucht, wenn die Transaktion den Transfer von zwei Datendoppelwörtern beinhaltet. Die Buszyklen X+3 und X+4 werden verbraucht, wenn die Transaktion den Transfer von vier Datendoppelwörtern beinhaltet. Ein Nebeneffekt der minimalen Länge einer Datenschreibtransaktion, die zwei Buszyklen beträgt, ist, daß die Cachekohärenzlogik von irgendwelchen Cachespeichern in dem System garantiertermaßen ausreichend Zeit hat, um die während des Zyklus X übertragene Adresse zu verarbeiten, da keine andere Adresse während des Zyklus X+1 auf dem Bus erscheinen kann. In dem Fall von mehrfachen Datendoppelworttransfers in Datenschreibtransaktionen werden das zweite, dritte und vierte Doppelwort in sequentiell aufsteigende Doppelwortadreßplätze des Speichers eingeschrieben, beginnend mit dem einen Adreßwert, der während des Buszyklus X der Transaktion gesendet wird.
- Eine Datenlesetransaktion ist in Fig. 6B dargestellt. Während des ersten Zyklus der Datenlesetransaktion, die durch den Buszyklus X in Fig. 6B gezeigt ist, überträgt der Initiator die zu lesende Adresse zu dem Responder. Eine gewisse Zeit später, die immer eine ganze Zahl von Buszyklen ist und die immer größer als die oder gleich der Lesezugriffszeit des Speichers ist, beginnt der Responder, die Information aus dem adressierten Speicheradreßplatz im Zyklus Y zu liefern. Die Länge der Zeit zwischen den Zyklen X und Y kann mit Busarbitrationsverzögerungen verbunden sein, sie ist aber immer größer als die oder gleich der Lesezugriffszeit. Während dieser Zeitspanne zwischen den Zyklen X und Y ist der Bus verfügbar, um Signale zwischen anderen Moduln des Computersystems zu übertragen, um so einen höheren Datendurchsatz zu erzielen. Bei einem Bus mit ungeteilter Transaktion würde der Bus über die Zeitspanne zwischen den Zyklen X und Y im Leerlauf bleiben, und es würden keine Daten während dieser Zeitspanne übertragen. Der Buszyklus Y+1 wird auch verbraucht, wenn die Leseanforderung, die während des Buszyklus x geliefert wurde, zwei Doppelwörter betraf. Ebenso werden auch die Buszyklen Y+2 und Y+3 der Reihe nach verbraucht, wenn die Leseanforderung vier Doppelwörter betraf.
- Fig. 6C veranschaulicht eine Test- und Setz- und Speicherreinigungstransaktion. Die Test- und Setz- und Speicherreinigungstransaktionen werden bei der vorliegenden Erfindung durch eine Busfunktion realisiert, im Gegensatz zu anderen Aktivitäten, die andernfalls mehr Overhead oder Einbuße an Verarbeitungszeit, Störung zwischen Prozessoren oder Informationstransfer über den Bus verlangen würden. Die Transaktion, die in Fig. 6C gezeigt ist, verlangt drei Buszyklen, und zwar mit einem zeitlichen Abstand zwischen dem zweiten und dritten Zyklus. Der erste Zyklus X ist ein Transfer einer Adresse von einem Initiator zu einem Responder. In dem Buszyklus X+1, welcher dem Adreßtransfer während einer Test- und Setz- und/oder Speicherreinigungstransaktion unmittelbar folgt, wird der Bus null oder im Leerlauf sein und keine Aktivität irgendeiner Art haben. Die Nullaktivität auf dem Bus während des Zyklus X+1 dient dem Zweck, einer Cachekohärenzlogik von irgendwelchen Cachespeichern in dem System ausreichend Zeit zum Arbeiten an der in dem Zyklus X übertragenen Adresse zu gewähren. Der letzte Buszyklus Y ist durch eine ganze Zahl von Buszyklen und um nicht weniger als die Speicherzugriffszeit von den ersten beiden Buszyklen X und X+1 zeitlich getrennt. Während des letzten Buszyklus Y wird ein einzelnes Doppelwort von dem Responder zu dem Initiator an der in dem Zyklus X bezeichneten Adresse gesendet.
- Das Vorhandensein einer separaten, diskreten Test- und Setzoperation als eine Busgrundfunktion im Gegensatz zu einer Prozessorgrundfunktion ist eine Verbesserung der vorliegenden Erfindung. In einem Multiprozessorcomputersystem und insbesondere in einem eng gekoppelten Multiprozessorsystem bedarf es gewisser Maßnahmen des gegenseitigen Ausschließens von gewissen Strukturen oder Ressourcen im Speicher. Einer der Prozessoren oder Initiatoren muß exklusiven Zugriff auf die Struktur oder den Speicherplatz gewinnen, so daß die Struktur nicht durch irgendeinen anderen Initiator modifiziert werden kann.
- Die üblichste Maßnahme, durch die ein gegenseitiges Ausschließen erreicht wird, ist eine Softwarestruktur, die als ein "Semaphor" oder ein "Drehschloß" bezeichnet wird, und die in Hardware im allgemeinen als eine "Test- und Setzoperation" bezeichnet wird. Bei diesen Operationen liest der Prozessor, der exklusiven Zugriff sucht, einen Speicherplatz, um seinen Wert zu testen, und schreibt einen bekannten festen Wert in diesen Speicherplatz auf eine Weise ein, daß das Lesen zum Testen und das Schreiben zum Setzen unsichtbar sind. So wird der Wert dieses Speicherplatzes in einer garantierten, zwangsläufigen Sequenz auf einen festen Wert gesetzt oder "verriegelt". Wenn in dem Prozeß des Testens des Speicherplatzes die Inhalte, die zurück zu dem Initiator gelesen werden, anzeigen, daß der Speicherplatz zuvor gesetzt worden ist, ist diese Ressource exklusiv irgendeinem anderen Initiator vorbehalten. Wenn die Daten, die zurückgelesen werden, irgendeinen Wert haben, der von dem gesetzten Wert verschieden ist, dienen sie exklusiv zur Verwendung durch den Initiator, weil der Wert zuvor nicht auf den verriegelten Wert gesetzt worden ist.
- Die konventionelle Maßnahme zum Realisieren eines Testens und Setzens ist eine Lesen-Modifizieren-Schreiben-Aktivität durch den Prozessor, wo die Daten aus dem Speicherplatz in den Prozessor eingelesen, getestet und dann zurückgeschrieben werden. Praktisch jeder Mikroprozessor hat ein Signal, das als Verriegeln oder gegenseitiges Verriegeln oder irgendetwas ähnliches bezeichnet wird, durch welches der Bus für exklusiven Zugriff verriegelt werden kann, so daß kein anderer Initiator die Test- und Setzoperation stören kann. Das ist eine übliche Notwendigkeit, und alle bekannten Implementierungen der Test- und Setzoperation erfolgen auf diese Weise.
- Das Problem bei herkömmlichen Test- und Setzgrundfunktionen in Multiprozessorcomputersystemen ist die erforderliche Zeit. Es braucht Zeit, um den Zugriff zum Lesen auszuführen, Zeit für das Testen und Zeit, um das Schreiben auszuführen, um das Setzen vorzunehmen. Eine beträchtliche Zeit, z. B. mehrere Mikrosekunden, wird benötigt, wenn der Bus nicht durch andere Initiatoren benutzt werden kann, obgleich der Gebrauch möglich wäre, ohne Konflikte zu verursachen. Bei der vorliegenden Erfindung wird eine spezielle Test- und Setztransaktion bei dem Bus benutzt, die dem Speicher sagt, das Setzen auszuführen und über den Test zu berichten, wie wenn er gelesen würde. So wird die Test- und Setztransaktion nach der vorliegenden Erfindung als ein Lesen betrachtet, d. h. ein Aussenden einer Adresse und ein Zurückbekommen der Daten, ganz so, als würde es sich um einen Lesevorgang handeln, und die Daten, die zurückgesendet werden, sind der ursprüngliche Inhalt des Speicherplatzes, der getestet und gesetzt wird. Die Test- und Setztransaktion veranlaßt den Speichermodul, alle Einsen in den Speicherplatz einzuschreiben, um dadurch den Platz zu setzen oder zu verriegeln. Weil das nicht übermäßig viele Buszyklen benötigt, wird die Nullzeit auf dem Bus auf wenigstens einen Zyklus reduziert, X+1, wie in Fig. 6C gezeigt, und es werden höhere Datendurchsätze erzielt. Darüber hinaus ist es nicht notwendig, separate Leiter vorzusehen, um die Verriegelungssignale aus den Prozessoren zu den Speichern zu leiten.
- Die Test- und Setzfunktion ist im wesentlichen aus der Verantwortung des Prozessors herausgenommen worden, exklusiven Zugriff auf den Bus und den Speicher zu verlangen, um etwas zu lesen, es zu testen und es zu schreiben. Statt dessen hat gemäß der vorliegenden Erfindung ein Prozessor niemals exklusiven Zugriff auf irgendeinen Modul. Der Bus ist niemals exklusiv verriegelt. Der Prozessor sendet ein Test- und Setzsignal über den Bus, welches den Speicher veranlaßt, den Platz zu testen, ihn zu setzen und die Testergebnisse zurückzusenden, und während das vonstatten geht, sind alle anderen Initiatoren und Responder frei, andere Datenübertragungen auszuführen.
- Speicherreinigen ("memory scrubbing") ist eine weitere Sache, die für Effizienz in einem Multiprozessorcomputersystem sorgen kann. Der Grund für Speicherreinigen ist, daß dynamische Halbleiterspeicherzellen sogenannten weichen Fehlern ausgesetzt sind. Weiche Fehler treten hauptsächlich auf, wenn Alphateilchen auf Speicherstellen in der Speichermatrix auftreffen und die darin gespeicherten Bits verfälschen. Das ist ein bekanntes Attribut von Halbleiterspeichern. Die typische Methode, um dem entgegenzuwirken, besteht darin, Fehlerkorrekturcodes in dem Speicher zu benutzen. Wenn ein Bit in einem Wort oder einem Doppelwort verfälscht worden ist, kann der Fehlerkorrekturcode benutzt werden, um es zu korrigieren. Die Kosteneffektivität von Fehlerkorrekturcodes gestattet die Korrektur von nur einem einzelnen Bitfehler in dem Wort oder Doppelwort. Die Rate, mit der diese weichen Fehler auftreten, ist relativ gering, obgleich, wenn Speicher beginnen, schlecht zu werden, die Raten beträchtlich ansteigen. Die Möglichkeit, daß nach einem Fehler ein weiterer in demselben Wort oder Doppelwort auftreten wird, der durch Fehlerkorrekturcodes nicht korrigiert werden kann, nimmt mit der Zeit zu. Infolgedessen wurde die Speicherreinigung entwickelt.
- Speicherreinigung beinhaltet, die Daten aus dem Speicher periodisch auszulesen und wieder in ihn einzuschreiben. In dem Prozeß des Lesens desselben werden einzelne Bitfehler korrigiert, und die korrigierten Daten werden zurückgeschrieben. Die Tatsache, daß es sich bei diesen um weiche Fehler handelt, bedeutet, daß die Speicherzelle in dem Speicher durch den Alphaaufprall nicht beschädigt wurde, sondern daß lediglich die Daten darin verfälscht wurden. Das wird periodisch durchgeführt, z. B. einmal pro Woche, als eine Maßnahme zum Korrigieren oder Eliminieren des Fehlers.
- Die Fehlerkorrektur ist in einem Uniprozessorcomputersystem einfach und leicht zu realisieren, aber in einem Multiprozessorcomputersystem kann die Fehlerkorrektur ein komplexeres Problem erzeugen. Zum Beispiel, es werde angenommen, daß ein Prozessor "A" die Korrektur- oder Reinigungsroutine ausführt, wobei er Speicherplätze einen nach dem anderen liest und wieder in diese einschreibt. Es werde weiter angenommen, daß ein Prozessor "B" exklusiven Zugriff auf einen dieser Speicherplätze über normale Softwareprotokolle hat und den Platz mit der Absicht liest, seinen Inhalt zu modifizieren und ihn zurückzuschreiben. Zwischen der Zeit, zu der der Prozessor "B" den Speicherplatz liest, und der Zeit, zu der der Prozessor "B" den modifizierten Inhalt zurückschreibt, liest der Prozessor "A" den Speicherplatz. Dann schreibt der Prozessor "B" in ihn ein, und nun schreibt die Reinigungsroutine des Prozessors "A" in ihn ein. Die Reinigungsroutine hat nun den modifizierten Wert eliminiert, der durch den Prozessor B geschrieben worden ist, so daß die Daten in dem Speicherplatz total verfälscht worden sind. Der Reinigungsroutine zu ermöglichen, alle globalen Datenstrukturen und gegenseitigen Verriegelungen des Betriebssystems zu kennen, ist eine prohibitiv komplexe Aufgabe, da sie darüber unterrichtet sein müßte, was alle anderen Prozessoren die gesamte Zeit über tun. Alternativ, die Reinigungsroutine brauchte nur zu laufen, wenn nichts anderes in dem System vonstatten geht.
- Um diese Probleme zu vermeiden, ist eine Speicherreinigungsoperation auf eine analoge Weise zum Testen und Setzen realisiert worden. Ein Speicherreinigungssignal wird zu dem Speicherplatz gesendet, und der Speicher interpretiert das Speicherreinigungssignal, um den Speicherplatz zu lesen und seinen Inhalt zurück zu den Prozessoren zu senden, ganz wie bei einem normalen Lesevorgang, und um bei diesem Prozeß auch den korrigierten Fehler zurück in den Speicher zu schreiben. So wurde durch Realisieren einer Test- und Setzoperation als einer Busgrundfunktion die Speicherreinigung auch ohne zusätzliche Komplexität erzielt, und die Aufgabe des Speicherreinigens in einem Multiprozessorcomputersystem wurde vereinfacht.
- Eine Steuerschreibtransaktion ist in Fig. 6D dargestellt. Eine Steuerschreibtransaktion ist eine einzelne Buszyklustransaktion, die Steuerinformation von einem Initiator zu einem anderen bezeichneten Modul überträgt, welches entweder ein weiterer Initiator oder ein Responder sein kann. Die Tatsache, daß Steuerschreibtransaktionen sowohl an Initiator- als auch an Respondermoduln adressiert werden können, wird durch die Verwendung von M angezeigt, wodurch die Adresse angezeigt wird, an die der Initiator die Steuerschreibtransaktion adressiert, wie es in Fig. 6D gezeigt ist. Die Steuerinformation innerhalb der Steuerschreibtransaktion ist der Art nach eine Überwachungsinformation zwischen Moduln, im Gegensatz zu einer Dateninformation oder Adreßinformation. Der Bestimmungsort, an den die Steuerschreibtransaktionen adressiert werden, wird durch die Platz-(oder "Schlitz")-Nummer bestimmt, welche jedem besonderen Modul zugeordnet ist und durch die physikalische Verbindung des Moduls mit der Rückebene des Busses bestimmt wird.
- Eine Steuerlesetransaktion ist in Fig. 6E dargestellt. Eine Steuerlesetransaktion ist einer Datenlesetransaktion ein wenig analog, denn es handelt sich um eine Anforderung und um eine Antwort, die durch eine ganze Zahl von Buszyklen getrennt sind. In dem Buszyklus X wird das Steuerlesesignal von einem Initiator zu einem Responder gesendet. Nur Responder erkennen Steuerlesesignale. Eine gewisse Zeit später, die als Buszyklus Y bezeichnet wird, welcher eine ganze Zahl von Buszyklen zeitlich von dem Buszyklus X getrennt ist, werden Antwortdaten durch den Responder zurück zu dem Initiator gesendet. In Abhängigkeit von dem Typ der Steueroperation, die ausgeführt wird, kann die Steuerantwortzeit, welche die Buszyklen X und Y trennt, in Beziehung oder nicht in Beziehung zu einer besonderen Speicherzugriffszeit stehen.
- Der Inhalt oder das Format von jedem Doppelworttransfer während jedem der Buszyklen, die an jeder der Transaktionen beteiligt sind, die in den Fig. 6A, 6B, 6C, 6D und 6E gezeigt sind, ist in den Fig. 7A, 7B und 7C dargestellt. Es gibt drei grundlegende Typen von Doppelwortformaten: das Adreßformat, das in Fig. 7A dargestellt ist, das Datenformat, das in Fig. 7B dargestellt ist, und das Steuerformat, das in Fig. 7C dargestellt ist. Jedes dieser Formate hat eine Länge von 32 Bits, und jedes der Formate hat eine Anzahl von relevanten Feldern. Die Bitpegelsignale in jedem der Felder werden durch die geeignete Logik in den Buskopplern 64 und 66 unter Abgabe des passenden Transfersteuersignals (Fig. 2) decodiert, um die beschriebenen Funktionen zu erzielen.
- Das Adreßformat, das in Fig. 7A gezeigt ist, ist das Format zur Kommunikation von Adreßinformation und anderer Steuerinformation von dem Initiator zu dem Responder in dem ersten Zyklus von Datenlese-, Datenschreib-, Test- und Setz- sowie Speicherreinigungstransaktionen. Es gibt drei relevante Felder innerhalb des Adreßformatdoppelwortes: Das erste Feld, das mit 86 bezeichnet ist, ist ein Zweibitfeld, welches anzeigt, ob das Doppelwort eine Lesetransaktion, eine Test- und Setz- oder Reinigungstransaktion oder eine Schreibtransaktion ist, was durch Decodieren dieser beiden Bits höherer Ordnung in dem Feld 86 bestimmt wird. Ein zweites Feld 88 besteht aus einer 28-Bit-Adresse, die den Platz in dem Speicherraum des Responders anzeigt, an welchem die Transaktion auszuführen ist, die durch die Signale in dem Feld 86 angegeben wird. Das Speicherraumadreßfeld 88 erstreckt sich von dem Bit Nr. 2 bis zu dem Bit Nr. 27. Die Speicherraumadresse in dem Feld 88 ist eine Doppelwortadresse und keine Byteadresse. Infolgedessen kann die Speicherraumadresse bei dem Bit Nr. 2 des Doppelwortes beginnen. Ein drittes Feld, das mit 90 bezeichnet ist, zeigt an, ob es sich bei der Größe der Daten, die durch die Adresse in dem Feld 88 angegeben werden, um ein Doppelwort (00), zwei Doppelwörter (01) oder vier Doppelwörter (10) an der angegebenen Adresse handelt. Ein viertes Feld 92 besteht aus den Bits Nr. 28 und 29, die nicht benutzt werden.
- Der Bus nach der vorliegenden Elfindung unterstützt eine ausgerichtete Operation, was bedeutet, daß auf die Adressen im Speicher als Doppelwörter zugegriffen wird und daß diese Doppelwörter Adressen haben, welche auf Modulo-4-Byte-Grenzen fallen. Infolgedessen ist eine Modulo-4-Einstellung mit einer 2-Bit-Verschiebung in dem in Fig. 7A gezeigten Format vorhanden. Solche Adressieranordnungen sind unter dem Datendurchsatzgesichtspunkt üblicherweise effizienter als diejenigen Typen von Speicherzugriffsanordnungen, bei denen mit unausgerichteten Daten gearbeitet wird. Wenn Datenlese- und -schreibvorgänge ausgeführt werden, decodieren alle Speicher- oder Respondermoduln des Computersystems die Information, die in dem Speicherraumadreßfeld 88 enthalten ist. Wenn die decodierte Adresse in den Bereich von Adressen fällt, welcher einem besonderen Speichermodul zugeordnet ist, wird dieser eine Speichermodul der Slave für diesen besonderen Transfer.
- Das Adreßformatdoppelwort, das in Fig. 7A gezeigt ist, ist das Format des Doppelwortes, welches übertragen wird in Buszyklen X in der Datenschreibtransaktion, die in Fig. 6A gezeigt ist, in dem Buszyklus X in der Datenlesetransaktion, die in Fig. 6B gezeigt ist, und in dem Buszyklus X in der Test- und Setz- und Speicherreinigungstransaktion, die in Fig. 6C gezeigt ist.
- Das Lese- und Schreibdatenformat, das in Fig. 7B gezeigt ist, stellt ein ausgerichtetes Doppelwort aus vier Datenbytes dar. Das Byte 0 ist das niederwertigste Byte und ist an dem Bitplatz 0 bis 7 angeordnet. Die anderen drei Bytes haben einen Stellenwert, wie er in Fig. 7B angegeben ist.
- Das Lese- und Schreibdatenformat, das in Fig. 7B gezeigt ist, ist das Format für jedes Doppelwort, das in den Buszyklen X+1, X+2, X+3 und X+4 in der Datenschreibtransaktion übertragen wird, die in Fig. 6A gezeigt ist; ist das Datenformat für jede Doppelwortübertragung während der Buszyklen Y, Y+1, Y+2 und Y+3 in der Datenlesetransaktion, die in Fig. 6B gezeigt ist; ist das Doppelwortformat, das während des Zyklus Y in den Test- und Setz- und Speicherreinigungstransaktionen übertragen wird, die in Fig. 6C dargestellt sind; und ist das Doppelwortformat, das während des Zyklus Y in der Steuerlesetransaktion übertragen wird, die in Fig. 6E dargestellt ist. Somit ist das Datenformat, das in Fig. 7B gezeigt ist, dasjenige, das für Datenschreibtransaktionen, Datenlesetransaktionen und Steuerdatenlesetransaktionen benutzt wird.
- Das Format für Steuerdoppelwörter ist in Fig. 7C gezeigt. Das Steuerformatdoppelwort wird für Steuerschreibtransaktionen und für den Anforderungsteil der Steuerlesetransaktionen decodiert. Es gibt fünf Felder in dem Steuerformatdoppelwort, das in Fig. 7C gezeigt ist. Ein einzelnes Bit an dem Bitplatz 31 bildet ein Feld 94, um anzuzeigen, ob das Doppelwort eine Lese(1)- oder eine Schreib(0)-Transaktion ist. Ein Vierbitfeld 96 von den Bits 27 bis 24 identifiziert einen physikalischen Schlitz, zu dem das Steuerdoppelwort gerichtet wird. Dieser besondere physikalische Schlitz ist der Verbinder auf der Rückebene, mit dem der besondere Modul des Computersystems verbunden ist, und identifiziert auch einen besonderen Modul. Der Slave einer Steuertransaktion wird ausgewählt durch Decodieren der Information in dem Schlitzfeld 96 und Anpassen derselben gegenüber der physikalischen Schlitznummer, mit der jeder besondere Modul verbunden ist. Ein Adreßfeld 98 ist bei den Bytes 16 bis 27 angeordnet und bezeichnet eine von 256 möglichen Steueradressen innerhalb des Moduls. Demgemäß können bis zu 256 verschiedene Steuerregister bei jedem besonderen Modul benutzt werden. Ein Feld 100 in den niederwertigen 16 Bits des Doppelwortes stellt ein 16-Bit-Datenwort dar, welches von dem Master zu dem Slave bei allen Steuertransferdoppelwörtern übertragen wird. In dem Fall eines Steuerschreibvorganges ist es das 16-Bit-Datenwort in dem Feld 100, das geschrieben wird. Ein weiteres Feld 102 ist bei den Bits 28 bis 30 angeordnet und wird nicht benutzt.
- Das Vorhandensein des 16-Bit-Datenfeldes 100 und des 8-Bit- Adreßfeldes 96 gestattet, sowohl die Daten einzuschreiben als auch die Adresse des Platzes für das Einschreiben der Daten in einer einzelnen Steuerdoppelworttransaktion zu übertragen. Dieses besondere Format und diese besondere Anordnung sind von Nutzen, denn sie können benutzt werden, um auf die Seitenrahmentabellen eines Speichermoduls zuzugreifen, in welchem die Seitenrahmentabellen viel länger als 256 Plätze sind. In dem Fall des Steuerdoppelwortformats, das in Fig. 7C gezeigt ist, ist das Feld bei 98 nicht ausreichend groß, um eindeutig anzugeben, um welchen Platz der Seitenrahmentabelle es sich handelt, der gelesen wird. Was getan wird, ist, daß eine 8-Bit-Adresse in dem Feld 98 zugeordnet wird, um den Seitenrahmentabellenzugriff anzuzeigen, und die aktuelle Seitenrahmentabellenadresse ist dem Datenwortfeld 100 zugeordnet. Somit wird einige Schreibdateninformation in der Leseanforderung in dieser Anordnung übertragen.
- Das Steuerdoppelwortformat, das in Fig. 7C gezeigt ist, wird während der Steuerschreibtransaktion übertragen, die in Fig. 6D gezeigt ist, und während des Buszyklus X der Steuerlesetransaktion, die in Fig. 6E gezeigt ist.
- Der Bus 50, wie er in Fig. 2 gezeigt ist, enthält ein Datenweglogikelement 104 in jedem Buskoppler 64 des Initiatormoduls 60 und ein Responderdatenweglogikelement 106 in jedem Buskoppler 66 eines Respondermoduls 62. Eine Gruppe von Informationstransfersignalen wird über die Busleiter 68 zwischen den Datenweglogikelementen 104 und 106 der Koppler 64 und 66 übertragen. Die Informationstransfersignale übertragen Adressen, Daten, Bytesteuerinformation und Modulidentifikationsinformation zwischen den Kopplern. Die Verwendung und die Interpretation der Informationstransfersignale werden durch den Zustand der Transfersteuersignale bestimmt, welche über die Busleiter 68 zwischen den Transferlogiksteuerelementen 108 in jedem Buskoppler 64 und 66 übertragen werden.
- Eingeschlossen in die Informationstransfergruppe von Signalen ist eine Gruppe von Datentransfersignalen, die mit B.DAT31-0 bezeichnet ist. Diese Gruppe von Signalen sind die 32-Bit-Paralleldatentransfersignale, die in den Fig. 7A, 7B und 7C dargestellt sind und Adreß-, Daten- oder Steuerinformation von dem Master zu dem Slave transportieren. Diese Signale werden über den Bus durch 32 Leiter der Gruppe von Busleitern 68 übertragen. Die Informationstransfersignale werden während des Zustands B0 eines Buszyklus abgegeben und während des Zustands B3 desselben Buszyklus negiert. Das Abgeben und Negieren der Signale B.DAT31-0 sind in Fig. 3H relativ zu dem Buszyklus T0 dargestellt.
- Eine Gruppe von Bytefreigabesignalen, die mit B.BE3-0 bezeichnet ist, ist in der Gruppe von Informationstransfersignalen ebenfalls enthalten. Die Bytefreigabesignale transportieren Information, welche die relevanten Datenbytes angibt, die in der Gruppe von Signalen B.DAT31-0 übertragen werden. Die Bytefreigabesignale sind nur während Speicherraumadreßübertragungen von Bedeutung, welche durch die geeigneten Transfersteuersignale festgelegt werden, und werden nur durch Speichermoduln für Schreib- und für Test- und Setz- und Speicherreinigungstransaktionen benutzt. Während dieser Typen von Transfers werden Bytes des Adreßspeicherdoppelwortes nur modifiziert, wenn die entsprechenden Bytefreigabesignale abgegeben werden. Das Bytefreigabesignal für das Byte bei B.DAT31-24 (vgl. Fig. 7B) wird auf dem Leiter übertragen, welcher das Signal B.BE3 überträgt, das Bytefreigabesignal für das Byte bei B.DAT23-16 wird auf einem Leiter übertragen, welcher das Signal B.BE2 überträgt, das Bytefreigabesignal für das Byte bei B.DAT15-8 wird auf dem Leiter übertragen, welcher das Signal B.BE1 überträgt, und das Bytefreigabesignal für das Byte bei B.DAT7-0 wird auf dem Leiter übertragen, welcher das Signal B.BE0 überträgt. Demgemäß werden die Signale B-BE3-0 über vier parallele Leiter übertragen, die in der Gruppe von Busleitern 68 enthalten sind. Die Bytefreigabesignale werden mit derselben allgemeinen Zeitsteuerung wie die anderen Informationstransfersignale abgegeben und negiert, wie es in Fig. 3H gezeigt ist.
- Initiatormodulidentifikationssignale, die mit B.ID3-0 bezeichnet sind, sind ebenfalls Teil der Informationstransfersignale. Die Initiatormodulidentifikationssignale identifizieren den Initiator einer Transaktion, die über den Bus erfolgt. Während Buszyklen, in denen der Initiator der Busmaster ist, überträgt B.ID3-0 den Schlitz oder die physikalische Adresse des Initiators zu dem adressierten Slave. Das Signal B.ID3-0 wird während Zyklen von Adreßtransfers, Schreibdatentransfers und Steuertransfers übertragen. Die Schlitznummer wird durch den Initiator als ein Ergebnis von Signalen erzielt, die aus der physikalischen Verbindung des Initiatormoduls mit dem besonderen Schlitz oder Verbinder auf der Rückebene 70 des Busses 50 gewonnen werden. Das Schlitznummersignal wird in jedem Koppler 64 und 66 erzeugt und wird aus der Rückebenenverbindung gewonnen, die bei 110 gezeigt ist.
- Während Lesen-Antwort-Buszyklen, wenn der Responder der Busmaster ist, werden die Signale B.ID3-0 unter Verwendung des Wertes bewirkt, der durch den Responder dem Lesebefehl entnommen wird, welcher zuvor durch den Initiator gesendet worden ist. Der Initiatormodul, der als Busslave arbeitet, vergleicht den Wert des Signals B.ID3-0, das durch den Responderbusmaster geliefert wird, mit seiner besonderen Schlitznummer und akzeptiert den Transfer nur, wenn es eine Übereinstimmung gibt. Die Informationstransfersignale B.ID3-0 werden über vier einzelne Busleiter 68 angelegt. Die Signale B.ID3-0 werden abgegeben und negiert, wie es in Fig. 3H gezeigt ist.
- Das letzte der Informationstransfersignale ist ein Signal, -B.NOC, welches anzeigt, daß eine Antwort aus einem Spezialspeichermodul 68 statt aus einem Universalspeichermodul 56 (Fig. 1) kommt. Ein Beispiel eines Spezialspeichermoduls ist ein Modul, bei dem die Aktualisierungen von Quellen aus erfolgen, bei denen es sich nicht um den Bus handelt. Da die Inhalte des Spezialspeichermoduls einer Modifikation von Quellen außerhalb des Busses aus unterliegen, dürfen die Inhalte dieses Spezialspeichermoduls nicht in einem Cachespeicher irgendwo in dem Computersystem abgespeichert werden, weil die Cachekohärenz von solchen Speichern nicht richtig funktionieren würde. -B.NOC wird abgegeben, um einen Spezialspeicher anzuzeigen, der nichtcachierbar ist. Die Verwendung des Signals -B.NOC vermeidet das Problem, zur Original zeit der Fertigung des Systems eine Adreßkarte festzulegen, die diejenigen Speicheradreßplätze anzeigt, welche cachierbar sind, und diejenigen, welche es nicht sind. Diese Originalfertigungsentscheidungen können sich zu einer späteren Zeit als Beschränkung erweisen. Die Verwendung des Signals -B.NOC schafft Flexibilität beim Ändern der Adreßkarte auf eine beliebige Weise in der Zukunft, ohne darauf beschränkt zu sein, Änderungen bei den Initiatoren oder in den Originaladreßkarten vorzunehmen.
- Um eine effektive Kommunikation zwischen den verschiedenen Moduln des Computersystems zu erzielen, ist es notwendig, daß jeder Modul sich gegenüber allen anderen Moduln auf dem Bus eindeutig selbst identifiziert. Um das Problem zu vermeiden, jeden Modul auf eine besondere Identifikation einstellen zu müssen, wenn er gefertigt wird, und dann möglicherweise den Modul in einem arbeitenden Computersystem unkorrekt installiert zu haben, besteht die bevorzugte Anordnung darin, jedem Modul ein Signal von seiner physikalischen Verbindung mit der Rückebene 70 aus liefern zu lassen. Die Rückebene 70 hat eine Vielzahl von Verbindern oder Schlitzen, in denen die Schaltungsplatine jedes Moduls angeschlossen wird. Jeder Schlitzort oder jede Verbindung mit der Rückebene ist eindeutig und ist in Fig. 2 bei 110 gezeigt. Bei jeder Schlitzverbindung 110 ist ein eindeutiges Muster von Verbindungen mit einer Versorgungsspannung und Masse an dieser Schlitznummer vorhanden. Diese eindeutige Anordnung von Signalen erzeugt ein 4-Bit-Signal B.SLOT3-0 für jeden Modul. Das Signal B.SLOT3-0 wird in jedem Modul zur Modulidentifikation benutzt, wie oben erläutert, sowie für etwas, was als geographische Adressierung bezeichnet wird. Die geographische Adressierung ist die Möglichkeit, eine Steuertransaktion an einen besonderen Schlitz zu richten, ungeachtet dessen, was mit diesem Schlitz verbunden ist.
- Eine Gruppe von Transfersteuersignalen und eine weitere Gruppe von Transferstatussignalen wird zwischen dem Transfersteuerlogikelement 108 jedes Buskopplers 64 und dem Transfersteuerlogikelement 109 jedes Buskopplers 66 übertragen. Die Transfersteuersignale definieren den Typ von Transaktion, der während jedes besonderen Buszyklus auftritt, und bestimmen die Interpretation der Inhalte der Informationstransfersignale. Die Transferstatussignale liefern Information von dem Slave zu dem Master über den Status des Transfers von dem Master zu dem Slave, der während des vorhergehenden Buszyklus erfolgte.
- Die Transfersteuersignale sind vier gegenseitig exklusive Signale, die zeigen, daß die Information B.DAT31-0 während des Buszyklus zu interpretieren ist, während welchem die Informationstransfersignale B. DAT31-0 vorhanden sind. Das Signal -B.AX wird abgegeben, wenn die Information B.DAT31-0 Adreßinformation enthält. Das Signal -B.CX wird abgegeben, wenn die Signale B.DAT31-0 Steuerinformation enthalten. Das Signal -B.DX wird abgegeben, wenn die Signale B.DAT31-0 Schreibdaten enthalten, d. h. Daten, die in den Speicher einzuschreiben sind. Das Signal -B.RX wird abgegeben, wenn die Signale B.DAT31-0 Lesedaten enthalten, d. h. Daten, die aus einem Speicher geholt worden sind. Somit wird die Information B.DAT31-0 auf vier verschiedenen Wegen interpretiert, abhängig davon, welches der vier Transfersteuersignale gleichzeitig mit der Information B.DAT31-0 abgegeben wird. Die vier Transfersteuersignale sind gegenseitig exklusiv, was bedeutet, daß nur eines von ihnen gleichzeitig abgegeben werden kann. Wenn keines der Transfersteuersignale abgegeben wird, ist der Bus im Leerlauf. Die Transferstatusgruppe der Signale wird benutzt, um Attribute des Transfers anzuzeigen, der während des vorhergehenden Taktzyklus vonstatten ging. Das Signal -B.ACP zeigt die erfolgreiche Akzeptanz der Information an, die übertragen worden ist. Das Signal -B.RET zeigt an, daß der Responder, der in dem vorhergehenden Zyklus als der Slave adressiert worden war, besetzt war und daß diese Transaktion zu einem späteren Zeitpunkt wieder versucht werden muß. Das Signal -B.ERR zeigt einen Fehlerzustand an.
- Die Transfersteuersignale und die Transferstatussignale sind separat bezeichnet, weil die relative Zeitsteuerung jeder Gruppe von Signalen unterschiedlich ist. Die Transfersteuersignale werden in Verbindung mit dem Abgeben und Negieren der Informationstransfersignale abgegeben und negiert. Gemäß der Darstellung in Fig. 3I erfolgen das Abgeben und Negieren der Transfersteuersignale in demselben Zyklus und in denselben Buszuständen wie das Abgeben und Negieren der Informationstransfersignale. Die Transferstatussignale werden einen Buszyklus nach dem Abgeben des ersten Informationstransfersignals, das während des ersten Buszyklus einer Transaktion auftritt, abgegeben und negiert. Deshalb werden, wie es in Fig. 3H gezeigt ist, die Transferstatussignale während des Buszyklus T1 abgegeben und negiert, einen Buszyklus nach dem Buszyklus T0, als der Informationstransfer erfolgte.
- Das eine der Transfersteuersignale, das abgegeben wird, um Adreßtransfers zu identifizieren, ist das Signal -B.AX. Nur Initiatoren geben das Signal -B.AX ab, und alle anderen Transfersteuersignale werden in Zyklen negiert, in denen das Signal -B.AX abgegeben wird. Das Format für die Signale B.DAT31-0, wenn das Signal -B.AX abgegeben wird, ist in Fig. 7A dargestellt. Die Abgabe des Signals -B.AX veranlaßt alle Responder, die Speicherraumadresse in dem Feld 88 (Fig. 7A) zu decodieren. Wenn selektives Aktualisieren eines Doppelwortes bei Schreib- oder Test- und Setztransaktionen notwendig ist, wird diese Bedingung durch den Zustand der Bytefreigabeinformationstransfersignale B. BE3-0 angezeigt. Wenn der adressierte Responder nicht in der Lage ist, eine Transaktion des Typs und/oder der Länge auszuführen, die das Abgeben des Signals -B.AX verlangt, muß der adressierte Responder die Transaktion unterdrücken, indem er mit einem Busfehlerstatussignal -B.ERR (Fig. 2) als einem Transferstatussignal während des Buszyklus antwortet, der dem Adreßtransferzyklus unmittelbar folgt. Eine Speicherreinigungstransaktion unterscheidet sich von einer Test- und Setztransaktion dadurch, daß keines der Signale B.BE3-0 abgegeben wird. In dem Fall von Test- und Setz- und Speicherreinigungstransaktionen muß ein Nullzyklus, d. h. ein Zyklus, in welchem keine Transfersteuersignale abgegeben werden, dem Adreßtransferbuszyklus unmittelbar folgen, um Zeit für eine Cachekohärenzaktivität bei irgendwelchen Moduln, die Cachespeicher enthalten, zu geben.
- Das eine der Transfersteuersignale, welches abgegeben wird, um Steuertransfers zu identifizieren, ist das Signal -B.CX. Nur Initiatoren geben das Signal -B.CX ab, und alle anderen Transfersteuersignale werden in Zyklen negiert, in denen das Signal -B.CX abgegeben wird. Das Abgeben des Signals - B.CX veranlaßt alle Moduln, das Steuerdoppelwortinformationstransfersignal in den Feldern 96 und 98 (Fig. 7C) zu decodieren. Diese beiden Felder enthalten eine Vier-Bit- Schlitznummer und eine Acht-Bit-Steuerregisteradresse. Alle Moduln vergleichen die übertragene Schlitznummer mit dem Wert, den jeder Modul aus seinem eigenen Signal B.SLOT3-0 gewinnt. In vielen Fällen wird die Steuerfunktion durch den Akt des Adressierens des besonderen Steuerregisters aktiviert, welches durch das Feld 98 adressiert wird. Das 16- Bit-Datenwort in dem Feld 100 kann durch den Slave außer Betracht gelassen werden, es steht aber zur Verwendung bei Steuerleseanforderungs- und Steuerschreibaktivitäten zur Verfügung.
- Das Steuersignal -B.DX wird abgegeben, um Schreibdatentransfers zu identifizieren. Nur Initiatoren geben dieses Signal ab, und alle anderen Transfersteuersignale werden negiert, wenn -B.DX abgegeben wird. Das Abgeben des Signals -B.DX veranlaßt den durch den unmittelbar vorhergehenden Adreßtransferzyklus (als -B.AX abgegeben wurde) adressierten Respondermodul, die Inhalte von B.DAT31-0 als ein Doppelwort der Daten zu akzeptieren, die in den adressierten Speicherplatz einzuschreiben sind.
- Leseantwortdatentransfers werden durch das Abgeben des Transfersteuersignals -B.RX identifiziert. Nur Responder geben das Signal -B.RX ab. Alle anderen Transfersteuersignale werden negiert, wenn -B.RX abgegeben wird. Das Abgeben des Signals -B.RX veranlaßt den Initiator, dessen Wert B.SLOT3-0 mit dem Wert B.ID3-0 übereinstimmt, die Inhalte von B.DAT31-0 als ein Doppelwort von aus dem verlangten Speicherplatz ausgelesenen Daten zu akzeptieren. In dem Fall von Leseantworten auf Steuerlesetransaktionen wird das adressierte Steuerwort bei B.DAT15-0 übertragen.
- Das Transferstatussignal, welches abgegeben wird, um den erfolgreichen Empfang und die Akzeptanz des Informationstransfers während des vorhergehenden Buszyklus anzuzeigen, ist das Signal -B.ACP. Das Signal -B.ACP ist die erwartete Antwort auf alle Adreßtransferzyklen, wenn -B.AX abgegeben wird, und auf alle Steuerzyklen, wenn -B.CX abgegeben wird.
- Das Transferstatussignal, das abgegeben wird, um anzuzeigen, daß ein adressierter Responderslavemodul besetzt ist und daß die Transaktion zu einer späteren Zeit wieder versucht werden muß, ist das Signal -B.RET. Das Signal -B.RET kann nur aufgrund von Adreßtransferzyklen abgegeben werden, wenn -B.AX abgegeben wird, und aufgrund von Steuerzyklen, wenn -B.CX abgegeben wird.
- Der besetzte Responder gibt das Signal -B.RET ab. Der Initiator, der das abgegebene Signal -B.RET empfängt, wartet auf das Abgeben eines Signals -B.RDY, welches einen Nichtbesetzt- oder Bereitzustand anzeigt, was weiter unten erläutert wird, bevor der Initiator die Transaktion erneut versucht.
- Das letzte der Transferstatussignale ist ein Signal -B.ERR, das abgegeben wird, um einen Befehlsfehler anzuzeigen. Das Signal -B.ERR kann nur aufgrund von Adreßtransferzyklen abgegeben werden, wenn -B.AX abgegeben wird, oder aufgrund von Steuerzyklen, wenn -B.CX abgegeben wird. Der adressierte Slavemodul gibt das Signal -B.ERR ab, wenn er nicht in der Lage ist, die verlangte Transaktion auszuführen. Zum Beispiel, ein Responder, der nur eines von zwei Doppelwörtern stützt, wird das Signal -B.ERR abgeben, wenn eine Anforderung empfangen wurde, einen Vierdoppelwortblock aus diesem Speichermodul zu lesen. Die Abgabe des Signals - B.ERR übersteuert alle anderen Transferstatussignale.
- Ein typisches Initiatordatenweglogikelement 104 ist ausführlicher in Fig. 8 dargestellt. Der "interne Bus" ist der interne Datentransferweg, der Information von den anderen funktionalen Elementen innerhalb des Initiatormoduls zu und aus dem Buskoppler an dem Initiatormodul überträgt. Die Kenndaten des internen Busses sind total speziell für die Erfordernisse des einzelnen Initiatormoduls und können bei verschiedenen Typen von Initiatoren verschieden sein. Die Initiatordatenweglogikelemente umfassen ein Ausgangsadreßregister 112, das benutzt wird, um die Adresse festzuhalten, die auf den Busleitern für Datenlese- und Datenschreibtransaktionen zu senden ist. Ein Ausgangsdatenregister 114 überträgt Daten zu den Busleitern für Datenschreibtransaktionen. Ein Ausgangssteuerregister 116 überträgt Steuerwörter zu den Busleitern für Steuerschreibtransaktionen. Ein Eingangsdatenregister 118 empfängt Leseantworten von den Busleitern. Ein Eingangssteuerlogikelement 120 empfängt Steuertransfers. Der einzige Typ von Steuertransfers, der durch Initiatoren erkannt wird, wenn sie als Slaves adressiert werden, sind Steuerschreibsignale, die durch einen anderen Modul geliefert werden, so daß keine Notwendigkeit für eine Antwortlogik von einem Initiator zu einem anderen Initiator für Steuerlesefunktionen vorhanden ist. Der Zweck von Initiator-zu-Initiator-Steuerfunktionen ist es, einem Prozessor zu erlauben, Unterbrechungsanforderungen zu einem anderen Prozessor zu senden. Die Ausgangssignale des Eingangssteuerlogikelements 120 sind Unterbrechungsanforderungen an den Prozessor in dem Initiatormodul.
- Ein 32-Bit-Signalweg 122 verbindet die verschiedenen Eingänge und Ausgänge der 32-Bit-Register 112, 114, 116 und 118. Während jedes aktiven Zyklus wird nur eine 32-Bit-Informationsgröße zu oder aus einem der Register 112, 114, 116 oder 118 übertragen, so daß alle diese verschiedenen 32-Bit-Register den Weg 122 auf zeitmultiplexierte Weise gemeinsam benutzen können. Eine Gruppe von 32-Bit-Bidirektionalbus-Senderempfängern 124 verbindet den 32-Bit-Signalweg mit den Busleitern, welche die Signale B.DAT31-0 leiten. Die Senderempfänger 124 werden Innenbords freigegeben, ausgenommen dann, wenn der Modul Busmaster ist, um zu gestatten, daß eine Adreßdecodierung stattfinden kann.
- Ein Bytesteuerlogikelement ist sowohl mit dem Ausgangsadreßregister 112 als auch mit dem Ausgangsdatenregister 114 verbunden. Das Bytesteuerlogikelement enthält die notwendige Logik, um anzuzeigen, welche der 4 Bytes irgendwo von 0 bis 4 des Ausgangsdatenregisters bedeutsame Information für den Zielslavemodul enthalten. In Abhängigkeit von der Implementierung des Initiators kann das der abgehenden Adresse des Ausgangsadreßregisters 114 oder der Ladung des Ausgangsdatenadreßregisters 112 entnommen werden. Die Ausgangssignale des Bytesteuerlogikelements 126 sind die vier Signale B.BE3-0, die auf die Busleiter 68 getrieben und durch eine Gruppe von Bustreibern 128 während Adreßtransferzyklen verstärkt werden, wenn dieser Modul Busmaster ist. Außerdem werden durch den Bustreiber 128 während dieser Zeit die Signale B.ID3-0 auf die Busleiter 68 getrieben. Die Signale B.ID3-0 sind eine Kopie der Signale B.SLOT3-0, die in dem Schlitz dieses Moduls erzeugt werden, und die Signale B.ID3-0 informieren den Slave über die Quelle dieses Transfers. Der Responder benutzt ebenfalls diese Signale B.ID3-0, um seine Antwort zurück zu dem Initiator zu leiten, der die Anforderung gesendet hat.
- Die Komparatoren 130 und 132 sind jeweils 4-Bit-Komparatoren, welche das Signal B.SLOT3-0 dieses Moduls mit den verschiedenen Größen vergleichen, die anschließend erläutert werden. In dem Fall des Komparators 130 vergleicht er B.SLOT3-0 mit B.ID3-0 und wird freigegeben, wenn -B.RX abgegeben wird, was einen Leseantwortzyklus auf dem Bus anzeigt. Wenn das Signal B.ID3-0 aus dem Responder während eines Zyklus -B.RX mit dem Signal B.SLOT3-0 dieses Moduls übereinstimmt, wird eine Antwort zu diesem Modul geleitet, und ein Freigabesignal wird von dem Komparator 130 gesendet, um das Eingangsdatenregister 118 zum Abtasten der ankommenden Leseantwortdatensignale B.DAT31-0 freizugeben. Der andere Komparator 132 vergleicht B.SLOT3-0 mit den Bits Nr. 27 bis 24 (Fig. 7C) des Signals B.DAT31-0 während der Abgabe von -B.CX während Steuerzyklen. In dem Steuerdatenwortformat sind die Bits 27 bis 24 die Schlitznummer, zu welcher der Steuertransfer gerichtet wird. Wenn während eines Zyklus -B.CX der Komparator 132 eine Übereinstimmung erkennt, wird ein Freigabesignal zu dem Eingangssteuerlogikelement 120 gesendet, welches andere Bits in B.DAT23-0 zum Erzeugen von Unterbrechungsanforderungen decodiert.
- Wenn der Modul Mehrfachdoppelworttransfers während Lese- oder Schreibdatentransaktionen stützt, können das Ausgangsdatenregister 114 und das Eingangsdatenregister 118 körperlich mehrere 32-Bit-Register enthalten, um die mehrfachen Doppelwörter festzuhalten.
- Fig. 9 zeigt ausführlicher das Responderdatenwegelement 106. Die Hauptelemente des Responderdatenwegelements umfassen ein Eingangsadreßregister 134, ein Eingangsdatenregister 136 und ein Eingangssteuerregister 138, bei denen es sich jeweils um 32-Bit-Register handelt, und ein ID-Halteregister 142, welches ein 4-Bit-Register ist. Ein interner 32-Bit-Signalweg 144 verbindet die Register 134, 136, 138 und 140. Da nur ein Register während irgendeines aktiven Buszyklus aktiv ist, benutzen alle Register 134, 136, 138 und 140 den internen Signalweg 144 auf zeitmultiplexierte Weise gemeinsam. Eine einzelne Gruppe von 32-Bit-Bus-Senderempfängern 146 wird benutzt, um die Signale B.DAT31-0 zwischen den Busleitern und den Registern 134, 136, 138 und 140 zu koppeln. Diese Senderempfänger sind Innenbords zu allen Zeiten freigegeben, ausgenommen dann, wenn eine Leseantwort übertragen wird.
- Das Eingangsadreßregister 134 empfängt die Adresse, die während Adreßtransferzyklen -B.AX gesendet wird, und gibt die Adresse an die Speicheradressierlogik ab, die in dem Modul benutzt wird. Das Eingangsdatenregister 136 empfängt die Datenwörter, die während Datenschreibtransaktionen gesendet werden, und gibt diese an die Speicherdatenlogik ab, die in dem Modul benutzt wird. Das Eingangssteuerregister 138 empfängt Steuerwörter während Steuerschreibzyklen und gibt sie an die interne Steuerlogik des Moduls ab. Das Ausgangsdatenregister 140 empfängt Datenleseinformation aus dem Speicher in dem Modul oder Steuerleseinformation aus der Steuerlogik in dem Modul und macht sie an dem Bus 50 während Antwortzyklen verfügbar, wenn -B.RX abgegeben wird.
- Die Selektion dieses Moduls als einen Slave kann entweder aus einem Adreßdecoder 148 oder aus einem Komparator 150 kommen. Der Adreßdecoder 148 decodiert die Inhalte der Bits 27 bis 2 des Datenbusses während Zyklen -B.AX und stellt fest, ob die Adresse in den Bereich fällt, der durch diesen Modul erkannt wird. Wenn dem so ist, gibt der Adreßdecoder 148 Freigabesignale an das Eingangsadreßregister 134 ab, um es zu veranlassen, die Adresse zwischenzuspeichern, an ein Bytesteuerlogikelement 152, um es zu veranlassen, die Inhalte von B.BE3-0 abzutasten, und an das Identifikationsregister 142, um es zu veranlassen, die Inhalte des Signals B.ID3-0 zwischenzuspeichern. Das Signal B.BE3-0, welches durch das Bytesteuerlogikelement 152 abgetastet wird, zeigt an, welche Bytes von Interesse sind. Das Signal B.ID3-0 wird zwischengespeichert, so daß, wenn ein Lesezyklus auftritt, die Modulidentifikation verfügbar ist, um die Antwort über einen Senderempfänger 154 zurück zu dem Initiatormodul zu leiten.
- In dem Fall des erfolgreichen Decodierens einer Adresse werden anschließende Zyklen -B.DX ohne einen intervenierenden Zyklus -B.AX oder einen Leerlaufzyklus durch den Adreßdecoder 148 erkannt, der die Freigabesignale zu dem Eingangsdatenregister 134 sendet, so daß es die Schreibdaten festhalten kann. Die Bytesteuerlogik 152 wird während Datentransferzyklen nicht wieder verriegelt. Ein Empfänger 156 gibt die Signale B.BE3-0 an das Bytesteuerlogikelement 152 ab.
- Der Komparator 150 wird während Steuerzyklen benutzt und durch ein Signal -B.CX freigegeben. Der Komparator 150 vergleicht die Bits 27 bis 24 aus dem Senderempfänger 146 mit dem B.SLOT3-0-Wert dieses Moduls, um festzustellen, ob ein Steuerwort an diesen Modul adressiert ist. Wenn das der Fall ist, gibt der Komparator 150 das Eingangssteuerregister 138 und das ID-Register 142 frei, so daß die Modulidentifikation in dem Fall verfügbar ist, daß dies ein Steuerlesetransfer ist und eine Antwort notwendig sein wird. Das Eingangsdatenregister 136 und das Ausgangsdatenregister 140 können mehrere 32-Bit-Register-Entitäten umfassen, wenn der Modul Mehrfach-Doppelworttransaktionen stützt. Die Signale B.DAT1-0 werden in der Längensteuerlogik 149 während Zyklen -B.AX abgetastet, um die Länge des verlangten Transfers zu bestimmen.
- Die Transfersteuerlogik 108, die in Fig. 2 gezeigt ist, wird nicht weiter in Einzelheiten zerlegt, weil die Logikschaltungsanordnung zum Realisieren eines solchen Elements aus den verschiedenen Signalen bestimmbar ist, die hier beschrieben sind, und durch den einschlägigen Fachmann ermittelt werden kann.
- Gemäß der Darstellung in Fig. 2 enthält jeder Initiatorbuskoppler 64 und 66 seine eigene Arbiterschaltung 160, und jeder Responderbuskoppler 66 enthält seine eigene Arbiterschaltung 162. Durch Verteilen der Arbiterschaltungen 160 und 162 an jedem Buskoppler 64 und 66 kann die Arbitration in einem einzelnen Buszyklus vollständig bestimmt und ausgeführt werden, im Gegensatz zu dem Erfordernis von mehreren Buszyklen zum vollständigen Ausführen der Arbitration mit einem zentralisierten Arbiter, wie er bei einigen bekannten Systemen typisch ist. Mit dem verteilten Arbiter nach der vorliegenden Erfindung kann jeder Buszyklus unabhängig arbitriert werden, in Abhängigkeit von der Transaktion. Infolgedessen werden die Geschwindigkeit und der Datendurchsatz des Busses erhöht, weil der verteilte Arbiter nicht die Grundwanderungsfortpflanzungsverzögerungen von mehrfachen Buszyklen zum Etablieren des verriegelten "Quittierens" erfordert, das für einen zentralen Arbiter notwendig ist. Der verteilte Arbiter verlangt nicht die kumulativen Verzögerungen eines Busgewährungs-Daisy-Chain- Verfahrens der Arbitration, das bei bekannten Bussen ebenfalls üblich ist.
- Die Initiatorarbiterschaltungsanordnung 160 ist etwas anders aufgebaut als die Responderarbiterschaltungsanordnung 162. Ein Schaltbild einer Initiatorarbiterschaltung 160 ist unten in Verbindung mit den Fig. 16A, 16B und 16C beschrieben. Die Schaltungsanordnung eines Responderarbiters 162 ist ebenfalls unten beschrieben, und zwar in Verbindung mit den Fig. 16D, 16B und 16E. Die Zeitsteuerung und die Funktion, die durch die Arbitrationsgruppe von Signalen, welche zwischen den Arbitern 160 und 162 über die Busleiter 68 geleitet werden, erzielt werden, werden ebenfalls anhand der folgenden allgemeinen Beschreibung verständlich und erklärlich.
- Die Arbitrationsgruppe von Signalen sind diejenigen Signale, die benutzt werden, um verschiedenen Initiator- und Respondermoduln zu gestatten, um exklusiven Zugriff auf oder "Meisterschaft" über den Bus 50 zu konkurrieren. Die Arbitrationssignale geben die verteilte Arbiterschaltungsanordnung 160 und 162 frei, um festzustellen, ob jeder besondere Modul, dem die Arbitrationsschaltungsanordnung zugeordnet ist, während des nächsten Buszyklus der Busmaster werden soll. Die Arbitration erfolgt auf der Basis Transaktion für Transaktion, und in einigen Fällen haben die Transaktionen eine Länge von einem Buszyklus. Die Differenzen in der Arbeitsweise und der Schaltungsanordnung eines Initiatorarbiters und eines Responderarbiters basieren hauptsächlich auf der Arbitrationsfairness zwischen konkurrierenden Initiatoren und auf der Priorität, die Respondermoduln gegenüber Initiatormoduln gegeben wird, was im folgenden noch ausführlicher erläutert ist.
- Die Arbitrationsgruppe von Signalen enthält eine Gruppe von Busanforderungssignalen -B.REQ14-0, die durch Indizes bezeichnet sind, beginnend mit 0 und fortschreitend über eins weniger als die Gesamtzahl von Moduln, die in dem Computersystem vorhanden ist. Die Indexnummer gibt das Prioritätsniveau eines Moduls innerhalb des Computersystems an, wobei die niedriger bezifferten Indizes einen höheren Prioritätsstatus anzeigen. In dem in Fig. 2 gezeigten Beispiel ist angenommen, daß 16 Moduln in dem Computersystem vorhanden sind, und deshalb werden 15 Busanforderungssignale (- B.REQ14-0) geliefert. Ein Signal -B.REQ wird nicht von dem Modul geliefert, der die niedrigste Priorität hat (Modul 16, der in diesem Beispiel -B.REQ15 liefern würde), weil der verteilte Arbiter auf diesem besonderen Modul ihm automatisch die Busmeisterschaft geben wird, wenn keine Signale -B.REQ von Moduln abgegeben werden, die höhere Prioritäten haben.
- Ein Signal -B.REQ wird am Beginn des Zustands B1 des Zyklus abgegeben, der demjenigen Zyklus vorangeht, über den der Modul die Busmeisterschaft wünscht. Das Signal -B.REQ wird am Beginn des Zustands B0 des Zyklus negiert, in welchem der Modul der Busmaster wird. Das ist in Fig. 3L dargestellt, wo das Signal -B.REQ aus einem Modul in dem Zustand B1 während des Zyklus T0 abgegeben und am Beginn des Zyklus T1 negiert wird, wenn dieser besondere Modul Busmaster wird. Es ist zwar in Fig. 2 nicht speziell gezeigt, immer dann jedoch, wenn ein Modul ein Signal -B.REQ abgibt, erzeugt er intern ein Signal -B.REQOUT, welches anzeigt, daß dieser besondere Modul die Busmeisterschaft verlangt. Das abgehende Signal -B.REQOUT wird mit dem passenden Signal - B.REQ auf der Rückebene verbunden, wie im folgenden erläutert.
- Ein weiteres der Arbitrationsgruppe von Signalen ist ein Anhängige-Anforderung-Signal, das mit -B.PEND bezeichnet ist. Das Signal -B.PEND wird durch Moduln abgegeben, die die Meisterschaft des Busses verlangen, aber die Arbitration für den nächsten Zyklus verlieren. Wenn zwei Moduln die Meisterschaft über den Bus während des Zustands B1 desselben Buszyklus verlangen, wird der Modul mit niedrigerer Priorität das Signal -B.PEND abgeben, weil der Modul niedrigerer Priorität die Arbitration zugunsten des Moduls mit höherer Priorität verloren hat. Das Abgeben von -B.PEND zeigt an, daß mehr als eine Anforderung anhängig ist und daß deshalb Fairness hinsichtlich der Priorität aufgebracht werden muß. Der Mechanismus, der benutzt wird, um die Arbitrationsfairness zu realisieren, besteht darin, daß das Abgeben von -B.PEND das Abgeben von irgendwelchen neuen Anforderungen, d. h. -B.REQ, durch irgendwelche Initiatoren verhindert, die nicht bereits Anforderungen abgeben, während alte Anforderungen noch anhängig sind. Das Signal - B.PEND wird durch eine Verknüpfungslogik in jedem Arbiter 160 und 162 erzeugt und kann deshalb nicht speziell mit einem besonderen Buszustand während eines bestimmten Buszyklus identifiziert werden. -B.PEND ist ein Offener-Kollektor- oder verdrahtetes ODER-Signal, das durch alle Moduln gleichzeitig benutzt wird, die um die Busmeisterschaft konkurrieren. Allgemein ausgedrückt läßt sich jedoch sagen, daß das Signal -B.PEND zu irgendeiner Zeit während der Zeitspanne zwischen dem Beginn der Buszyklen B1 und B2 abgegeben wird und negiert wird. Die Zeitsteuerung ist zwar nicht genau dargestellt, ein Signal -B.PEND ist jedoch in Fig. 3M zum Zwecke des allgemeinen Verständnisses der Zeitsteuerbeziehungen dargestellt. Die Arbiterschaltungsanordnung in allen Moduln kann -B.PEND abgeben, aber nur die Arbiterschaltungen 160 in den Initiatormoduln empfangen das Signal -B.PEND und benutzen es in der Arbitrationstechnik.
- Das Signal -B.HOLD der Arbitrationsgruppe von Signalen wird durch den Modul abgegeben, welches der Busmaster ist, wenn dieser Modul eine Transaktion über den Bus ausführt und die Transaktion die Verwendung des nächsten folgenden Buszyklus verlangt. Das Abgeben des Signals -B.HOLD übersteuert die normale Arbitration und erlaubt dem dann laufenden Busmastermodul, die Steuerung des Busses über den nächsten Zyklus oder die nächsten Zyklen zu behalten. Das Signal - B.HOLD wird ab dem Zustand B1 des ersten Buszyklus bis zu dem Zustand B1 desjenigen Buszyklus abgegeben, welcher dem Buszyklus unmittelbar vorangeht, wenn der Modul die Busmeisterschaft aufgeben will. Das Abgeben des Signals -B.HOLD wird somit einen Zyklus vor dem Ende der Transaktion negiert. Fig. 3N veranschaulicht die allgemeine Zeitsteuerung des Signals -B.HOLD.
- Ein Signal, das Signifikanz sowohl als ein Transferstatussginal als auch als ein Arbitrationssignal hat, ist das mit -B.RDY bezeichnete Bereitsignal. Das Signal -B.RDY wird benutzt, um anzuzeigen, daß ein vorher besetzter Respondermodul nicht länger besetzt ist und bereit geworden ist, einen Transfer zu akzeptieren. Das Abgeben des Signals - B.RDY zeigt an, daß ein Initiator eine früher versuchte Transaktion zu einem Responder erneut versuchen kann. Das Signal -B.RDY wird nur durch Responder abgegeben, die das Transferstatussignal -B.RET während der Besetztperiode abgegeben haben, welche bei dem Abgeben des Signals -B.RDY endigt. Das Signal -B.RDY ist ein Offener-Kollektor- oder verdrahtetes ODER-Signal, das durch alle Respondermoduln als ein Mittel gemeinsam benutzt wird, anzuzeigen, daß sie bereit geworden sind, nachdem sie zuvor besetzt gewesen sind. Die Responderkoppler 66 setzen ein internes Flag immer dann, wenn sie einen Transferstatus -B.RET berichten, weil sie besetzt und nicht in der Lage sind, eine Transaktion zu akzeptieren. Anschließend, wenn der Responderkopp- 1er bei diesem gesetzten internen Flag bereit wird, gibt der Responderkoppler -B.RDY für den Taktzyklus ab, der dem endenden Taktzyklus unmittelbar vorangeht, wenn der Respondermodul nicht länger besetzt ist. Die Zeitsteuerung des Abgebens von -B.RDY wird durch alle Initiatormoduln überwacht, die auf einen erneuten Versuch warten.
- Der Empfang eines Signals -B.RDY durch einen wartenden Initiator bewirkt, daß der wartende Initiator den Bus für einen Wiederversuch verlangt. Weil die Busanforderung wenigstens einen Buszyklus verlangen wird, um die Busmeisterschaft zu gewinnen, sollten die Responder das Signal -B.RDY einen Buszyklus, bevor der Responder tatsächlich bereit wird, abgeben. Das Signal -B.RDY kann in demselben Buszyklus wie das Abgeben des Signals -B.RET abgegeben werden, wenn der Responder in seinem letzten oder nahe bei dem letzten Buszyklus ist, wenn die Anforderung empfangen wird. Die relative Zeitsteuerung des Signals -B.RDY ist in Fig. 3K veranschaulicht.
- Wenn ein früher besetzter Respondermodul -B.RDY abgibt, zwingt das Signal -B.RDY alle Initiatormoduln bei abgegebenem -B.REQOUT, ihre Anforderung vorübergehend rückgängig zu machen, indem sie -B.REQOUT negieren, bis -B.RDY negiert wird. Alle Initiatormoduln, die auf einen Wiederversuch warten, antworten auf das Signal -B.RDY durch erneutes Abgeben von -B.REQOUT. Das gibt den wiederversuchenden Initiatoren vorübergehend den Vortritt vor Initiatoren, die versuchen, neue Transaktionen einzuleiten, wobei die Arbitrationsfairness übersteuert wird. Das gibt insgesamt eine Reduktion an Wartezeit, indem Wiederversuche schneller bedient werden.
- Die Betriebsart des Busses kann als "Pipeline"-Betriebsart bezeichnet werden. Pipeline-Betriebsart bezieht sich auf die Tatsache, daß es drei Komponenten für jede Transferaktivität gibt, welche in drei sequentiellen Buszyklen auftreten. Während des ersten Zyklus wählt die Arbitration den Master des Busses für den nächsten sequentiellen oder zweiten Zyklus, wenn die Informationstransfer- und Transfersteuersignale vorhanden sind. Die Transferstatussignale werden während des dritten sequentiellen Zyklus präsentiert, um den Status des vorhergehenden zweiten Zyklus anzuzeigen. Tatsächlich wird der Bus während eines bestimmten Zyklus für den Zweck benutzt, die Transferinformations- und Transfersteuersignale von dem ausgewählten Master zu dem Slave während dieses Zyklus zu übertragen. Der Master muß eine Arbitrationsaktivität in dem Buszyklus, der dem Informationstransfer vorangeht, gewonnen haben, und in dem Buszyklus, der dem Informationstransfer folgt, wird der Master ein Transferstatussignal empfangen, welches anzeigt, ob der Transfer durch den adressierten Slave akzeptiert wurde oder ob der Master erneut versuchen muß, ob der adressierte Slave den Transfer empfangen kann.
- Die Transaktionen, die in Fig. 10 dargestellt sind, sind repräsentativ und nicht erschöpfend für die Typen von Aktivität, welche auf dem Bus vorkommen können. Das Diagramm in Fig. 10 zeigt die drei prinzipiellen Gruppen von Signalen: die Arbitrationsgruppe, die Informationstransfer- und Transfersteuergruppen; und die Transferstatusgruppe, und zwar in drei separaten horizontalen Zeilen. Aufeinanderfolgende Buszyklen sind in den vertikalen Spalten gezeigt.
- Eine gestrichelte diagonale Linie veranschaulicht eine einzelne Transaktion, die in drei Buszyklen sukzessive stattfindet und die alle Gruppen von Signalen umfaßt. In irgendeinem bestimmten Zyklus zeigt jede dieser drei Signalgruppen Aktivitäten an, die unterschiedlichen Transaktionen wegen der Zeitsequenzierung zugeordnet sind, obgleich eine oder mehrere Gruppen im Leerlauf sein können, wenn keine Notwendigkeit besteht, diese Gruppe während dieses Zyklus abzugeben. Jede Aktivität jeder Signalgruppe benötigt genau einen Zyklus. In der Zeile für die Arbitrationssignalgruppe ist für jeden Zyklus derjenige Modul angegeben, welcher der Gewinner der Arbitration während dieses Zyklus ist, d. h. der Modul, der zum Busmaster in dem nächsten Zyklus werden wird. Es kann Fälle geben, wie im folgenden erläutert, wo mehr als eine Anforderung während eines Zyklus anhängig ist, aber das wird durch die unten beschriebenen Arbitrationstechniken gelöst. In der Zeile für die Informationstransfer- und Transfersteuersignalgruppe ist die Aktivität des Busmasters gezeigt ebenso wie der Slave, zu dem die Information übertragen wird. In der Zeile für die Transferstatussignalgruppe ist der Status des Transfers gezeigt, der zurück zu dem Master des Transfers des vorherigen Zyklus gesendet worden ist, und zwar zu dem Zweck, die Transferaktivität zu bestätigen.
- Eine Lesetransaktion erfolgt während der Zyklen 1, 2 und 3. Während des Zyklus 1 gewann der Initiator A die Arbitration und wurde zu dem Busmaster im Zyklus 2. Während des Zyklus 2 übertrug der Initiator A die Leseadresse zu dem Responder C. Während des Zyklus 3 sendete der Responder C ein Akzeptierensignal (-B.ACP) zurück zu dem Initiator A, um den erfolgreichen Empfang der Leseadresse anzuzeigen, die während des Zyklus 2 übertragen wurde.
- Eine einzelne Doppelwortschreibdatentransaktion wird durch die Aktivitäten veranschaulicht, die in den Zyklen 2, 3 und 4 auftreten. In dem Zyklus 2 gewann der Initiator B die Arbitration und wurde zum Busmaster im Zyklus 3. Im Zyklus 3 sandte der Initiator B die Schreibadresse von Daten, die er zum Responder E zu übertragen wünschte. Im Zyklus 4 signalisierte der Responder E dem Initiator B, daß er die Schreibadresse akzeptiert hatte. Gleichzeitig schrieb im Zyklus 4 der Initiator B die Daten an den Responder E an der im Zyklus 3 übertragenen Adresse. Weil eine einzelne Doppelwortschreibdatentransaktion zwei aufeinanderfolgende Buszyklen verlangt, wurde während des Zyklus 3 ein Arbitrationshaltesignal (-B.HOLD) durch den Initiator B geliefert, um andere Moduln daran zu hindern, Zugriff auf den Bus zu gewinnen, so daß die dem Responder E geschriebenen Daten während des Zyklus 4 übertragen werden konnten. Wegen der Abgabe des Haltesignals durch den Initiator B im Zyklus 3 traten im Zyklus 5 keine Transferstatussignale auf, da der Status des Transfers zuvor im Zyklus 4 bestätigt worden war. Für diejenigen Informations- und Transfersteuertransfers, die mehrere sequentielle Buszyklen verlangen, wird der Status der Transaktion erst in dem nächsten Buszyklus berichtet, welcher dem ersten Buszyklus folgt, in welchem der Initiator zum erstenmal den Informationstransfer und Transfersteuersignale der Transaktion gesendet hatte. Informationstransferzyklen werden, wenn ein Responder Busmaster ist, nicht durch einen Transferstatus bestätigt.
- Eine Besetztantwort ist in den Zyklen 5, 6 und 7 dargestellt. In dem Zyklus 5 gewann der Initiator D die Arbitration und wurde zum Busmaster in dem Zyklus 6. In dem Zyklus 6 initiiert der Initiator D eine Lesetransaktion zum Responder C. In dem Zyklus 7 empfängt der Initiator D ein Signal, das der Responder C zu der Zeit, zu der der Transfer versucht wurde, besetzt war. Die Transaktion, die im Zyklus 6 versucht wurde, wird deshalb wiederversucht, wenn der Responder C bereit ist. In dem nächsten Zyklus 8 wurde eine Bereitanzeige durch den Initiator D geliefert und empfangen. Der Initiator D verlangte erneut den Bus in dem Zyklus 9 als einen Wiederversuch, versuchte erneut den Leseadreßtransfer in dem Zyklus 10 und empfing anschließend eine Bestätigung der Akzeptanz in dem Zyklus 11. Schließlich überträgt der Responder C die Lesedaten zurück zu dem Initiator D in dem Zyklus 13, nachdem der Responder C die Busmeisterschaft als ein Ergebnis der Arbitration in dem Zyklus 12 gewonnen hat. Andere Beispiele von Buszyklusaktivitäten sind in Fig. 10 veranschaulicht.
- Einer der bedeutsamen Vorteile des Betriebes des Busses nach der vorliegenden Erfindung ist, daß die Transferstatussignale einen Buszyklus, nachdem die Informationstransfer- und Transfersteuersignale geliefert worden sind, geliefert werden. Infolgedessen kennt der Initiator sobald wie möglich den Status des Transfers. Durch Liefern der Transferstatussignale sobald wie möglich nach dem Transfer von Informations- oder Steuersignalen wird der Andrang auf dem Bus in Gegenwart von besetzten Respondern verringert. Weiter, bei mehrfachen Doppelwortschreibtransaktionen lernt der Initiator während des Zyklus, in welchem das erste Doppelwort übertragen wird, ob der Slave die Schreibdatentransaktion akzeptieren kann. Wenn der Slave die Schreibdatentransaktion nicht akzeptieren kann, kann die Schreibdatentransaktion abgebrochen werden, nachdem das erste Doppelwort übertragen worden ist und bevor die anderen Doppelwörter des Transfers gesendet worden sind. Die Busbandbreite wird vergrößert, indem das Transferstatussignal unmittelbar in dem nächsten folgenden Zyklus geliefert wird, nachdem die Information und Steuersignale zuerst übertragen werden, so daß andere Transaktionen sofort vonstatten gehen können, ohne viele Buszyklen lang zu warten, bevor der Status berichtet wird.
- Die Arbitrationstechnik nach der vorliegenden Erfindung beinhaltet die Verwendung von Fairness für das Lösen von andrängenden Anforderungen aus Moduln unterschiedlicher Prioritäten, den Vortritt für Responder ohne Rücksicht auf früher anhängige Anforderungen aus Initiatoren, und vorübergehenden Vortritt für Moduln, die wiederversuchen, durch Rückgängigmachen von irgendwelchen anhängigen Anforderungen. Die Fairness in der Arbitration nach der vorliegenden Erfindung gilt nur für Anforderungen, die in demselben Buszyklus ankommen. Die Fairness wird ausgeübt, indem dem anfordernden Modul höchster Priorität die Busmeisterschaft zuerst und dann jedem sich bewerbenden Modul in absteigender Prioritätsordnung gegeben wird. Während der Zeitspanne, während der mehrere Anforderungen anhängig sind, werden keine anderen Anforderungen erkannt. Diese Fairness gilt nur für Initiatoren. Respondern wird Priorität gegenüber allen Initiatoren gegeben, und Fairness wird ausgeübt, um Bewerbungen zwischen konkurrierenden Initiatoren zu lösen. Wiederversuchenden Initiatormoduln wird der Vortritt gegenüber allen anhängigen Anforderungen aus allen anderen Initiatormoduln gelassen. Wenn ein wiederversuchender Modul nicht in der Lage ist, einen Transfer zu einem bestimmten Modul auszuführen, weil dieser Modul belegt geworden ist und der wiederversuchende Modul eine vorbestimmte Anzahl von Wiederversuchen versucht hat, wird diesem wiederversuchenden Modul absoluter Vortritt gelassen, indem der Bus in einen Leerlaufzustand verriegelt wird, bis der Transfer von dem wiederversuchenden Initiator zu dem zuvor besetzten Responder erfolgen kann.
- Ausgedrückt durch die zuvor beschriebenen Signale besteht die Arbitrationsfairnesstechnik darin, daß einem Modul, der ein Signal -B.REQOUT abgibt, die Busmeisterschaft gegeben wird, vorausgesetzt, daß kein anderer Modul ein Signal - B.REQOUT während dieses bestimmten Buszyklus abgibt. Wenn zwei oder mehr als zwei Moduln -B.REQOUT in demselben Buszyklus abgeben, wird dem Modul mit der höchsten Priorität die Busmeisterschaft gegeben, und ein Signal -B.PEND wird durch den Modul (die Moduln) niedrigerer Priorität abgegeben, der anzeigt, daß es keine anderen Anforderungen gibt, die in der Prioritätsreihenfolge bedient werden müssen, bevor irgendwelche neu abgegebenen Anforderungen aus Initiatoren betrachtet werden können. Jedes verbleibende anhängige Signal -B.REQOUT wird in der Prioritätsreihenfolge bedient, bis alle anhängigen Anforderungen bedient worden sind. Kein anderer Initiator kann ein Signal -B.REQOUT abgeben, solange es andere anhängige Anforderungen gibt, d. h. -B.PEND abgegeben wird. Ein Responder braucht nicht auf die Negation des Signals -B.PEND zu warten, sondern kann sein Signal -B.REQOUT zu jeder Zeit während der Anhängigkeit von anderen Anforderungen abgeben. Da Respondern automatisch eine höhere Priorität als Initiatormoduln gegeben wird, wird das Abgeben des Signals -B.REQOUT durch einen Responder während der Anhängigkeit von anderen Anforderungen aus Initiatoren sofort dazu führen daß dem Responder die Busmeisterschaft gegeben wird. Wenn zwei Responder -B.REQOUT abgeben, wird die Busmeisterschaft zwischen den beiden Respondern auf der Basis ihrer zugeordneten Prioritäten zugewiesen. Wenn ein zuvor besetzter Modul -B.RDY abgibt, was anzeigt, daß er nicht länger besetzt ist, werden alle Initiatoren, die ihre Signale -B-REQOUT abgeben, ihre Signale -B.REQOUT negieren, um denjenigen Moduln, die danach trachten, Wiederversuche zu machen, vorübergehend den Vortritt zu lassen.
- Die Arbitrationstechnik, die bei der vorliegenden Erfindung realisiert wird, verbessert den Datendurchsatz durch Eliminieren von übermäßigen Wiederversuchen, welche bei einigen bekannten Bussen mit geteilter Transaktion vorkommen. Dadurch, daß dem Responder absolute Priorität gegenüber dem Initiator gegeben wird und dem Responder gestattet wird, seine Antwort zu geben, obwohl ein Initiator eine Anforderung früher gestellt haben kann, ein Initiator auf den Responder wartet, wird ein Initiator, der darauf wartet, daß der Responder antwortet, nicht länger verzögert. Dadurch, daß wartende Initiatoren nur zum Wiederversuchen auf die Bereitanzeige (-B.RDY) hin veranlaßt werden, wird die Möglichkeit reduziert, daß wiederversuchende Moduln nutzlos Buskapazität gebrauchen, wenn ein besetzter Responder noch nicht bereit geworden ist. Das ist ein besonderer Vorteil gegenüber einigen bekannten Busarbitrationsanordnungen, die verlangen, daß Wiederversuche nach arbiträren oder festgelegten Zeitverzögerungen gemacht werden. Ein Modul, der einen Wiederversuch nach einer festgelegten oder arbiträren Verzögerung macht, kann noch immer auf einen besetzten Slave treffen. Die Verwendung eines einzelnen Bereitsignals hat den Vorteil, daß die Anzahl der elektrischen Leiter und Verbindungen reduziert wird, welche erforderlich sind, um Wiederversuche aufgrund des Bereitsignals einzuleiten.
- Einem wiederversuchenden Modul wird die absolute Meisterschaft über den Bus gegeben, nachdem er es eine vorbestimmte Zahl mal versucht hat und gescheitert ist. Eine absolute obere Begrenzung oder Grenze wird so für die Verzögerung festgelegt, die dieser wiederversuchende Modul erfahren wird. Selbstverständlich werden die festgelegten Grenzwerte nur ins Spiel kommen, wenn der wiederversuchende Modul erfolglos gewesen ist, trotz der sehr hohen Wahrscheinlichkeit, daß er einen Transfer nach nur einem oder zwei Wiederversuchen erreicht haben könnte.
- Der Zweck des Rückgängigmachens von Anforderungen ist es, einem wiederversuchenden Modul den Vortritt für den Zugriff auf den Bus gegenüber anderen Initiatoren zu lassen, die darauf warten, eine neue Aktivität zu der Zeit einzuleiten, zu der ein Wiederversuch möglich wird, um die Busbandbreite fairer aufzuteilen, da andere Initiatoren, die auf eine neue Initiierung zu einer Zeit warten, zu der ein Wiederversuch möglich ist, den Responder, zu dem der Wiederversuch geht, wieder besetzt machen können und zusätzliche Wiederversuche verursachen. Rückgängig gemachte Anforderungen eliminieren diese Möglichkeit zwar nicht, sie machen sie aber weniger üblich. Das Signal -B.RDY ist ein Einzelparteileitungssignal, welches allen Initiatoren, die auf Wiederversuche warten, anzeigt, daß ein gewisser Responder, der zuvor besetzt gewesen ist und einen Wiederversuch verlangte, nun in der Lage ist, einen Wiederversuch zu akzeptieren. Es könnte mehr als einen Initiator geben, der einen Wiederversuch mit demselben oder einem anderen Responder erwartet. Es ist deshalb der Fall, daß, wenn mehrere Initiatoren einen Wiederversuch zu einem einzelnen Responder erwarten, die Abgabe von -B.RDY zur Folge haben wird, daß alle diese wartenden Initiatoren ihre Anforderung gleichzeitig einleiten und daß möglicherweise die mit der niedrigsten Priorität einen zusätzlichen Wiederversuch machen müssen, weil der Responder aufgrund des Wiederversuches höherer Priorität besetzt sein kann. Es ist außerdem der Fall, daß, wenn mehrere Initiatoren Wiederversuche mit mehreren Respondern erwarten, wenn der erste dieser Responder bereit wird, alle Initiatoren Anforderungen erneut initiieren werden, von denen einige durch den (die) noch besetzten Modul(n) wiederversucht werden, bei dem (den) es sich nicht um denjenigen (diejenigen) handelt, der (die) das Bereitsignal abgegeben hat (haben). Der Grund, daß diese beiden Bedingungen, die auftreten können und tatsächlich auftreten, keine Hauptprobleme darstellen, ist, daß sie sehr selten sind. Die Dauer der Zeit, in welcher moderne Moduln während eines Zyklus besetzt bleiben, wird nach höchstens einigen hundert Nanosekunden bemessen, d. h. kann zwei oder höchstens drei Buszyklen betragen. Es gibt demgemäß keine lange Zeitspanne für andere Anforderungen, um wiederversucht zu werden, während der Zeit, zu der ein einzelner Modul einen Wiederversuch erwartet. Die maximale Anzahl von Moduln, die einen Wiederversuch erwarten können, wird typisch nicht mehr als eins betragen, und sehr selten gibt es eine Gelegenheit dafür, daß es mehr als zwei sind. Der andere bedeutsame Punkt ist, daß das eine äußerst effiziente Realisierung ist, weil sie nur einen einzelnen Busleiter mit nur einem einzelnen Treiber und einem einzelnen Empfänger verlangt, um das übliche Problem zu verhindern, mit dem bekannte Busse behaftet sind, vergebliche Wiederversuche, die gemacht worden sind, bevor der Zielmodul bereit ist, oder vergeudete Zeit, weil der Wiederversuch über den Punkt hinaus verzögert wurde, an dem das Ziel bereit ist. In der Lage zu sein, dieses Problem mit einem gemeinsamen Signal zu verhindern, ist ziemlich effizient.
- Fig. 11 zeigt die Arbitrationstechnik der vorliegenden Erfindung an einem Beispiel von mehreren Anforderungen. Die Fairness in der Arbitrationstechnik ist nur beim Klären der Busmeisterschaft zwischen Anforderungen, die während desselben Buszyklus ankommen, bedeutsam. Die Arbitrationsfairness bewirkt, daß Anforderungen niedrigerer Priorität, die in früheren Buszyklen ankommen, den Vortritt gegenüber Anforderungen höherer Priorität erhalten, welche in späteren Buszyklen ankommen. In dem in Fig. 11 gezeigten Beispiel werden der Responder 0, der Initiator 5 und der Initiator 12 alle Busanforderungssignale während des Zyklus 0 abgeben. Infolge der mehreren Anforderungen, die in demselben Buszyklus abgegebenwerden, wird das Signal -B.PEND während des Buszyklus 0 ebenfalls abgegeben. Da der Responder 0 die höchste Priorität hat, negiert er sein Signal -B.REQ0 in dem Zyklus 1, während welchem er Busmaster ist. Während des Buszyklus 1 ist der Initiator 5 der Modul mit höchster Priorität, und er wird zum Busmaster während des Zyklus 2 und negiert sein Signal -B.REQ5. Während des Zyklus 1 wurde der Initiator 9 bereit zum Abgeben seines Signals -B.REQ9, wurde aber daran gehindert durch das Abgeben des Signals - B.PEND durch die Moduln 5 und 12. Der Initiator 9 wird am Abgeben seines Signals -B.REQ9 gehindert, bis alle anhängigen Anforderungen, die in dem Buszyklus 0 gemacht worden sind, bedient worden sind. Der Transfer, der durch den Initiator 5 ausgeführt wird und in dem Buszyklus 2 beginnt, verlangt zwei aufeinanderfolgende Buszyklen, und demgemäß wird -B.HOLD durch den Initiator 5 während des Zyklus 2 abgegeben und wird während des Zyklus 3 negiert. In dem Zyklus 3 ist die Anforderung aus dem Initiator 12 die einzige ausstehende Anforderung, und demgemäß wird er die Busmeisterschaft in dem Zyklus 4 erlangen, so daß das Signal - B.PEND während des Zyklus 3 negiert wird.
- In dem Zyklus 4 geben der Respondermodul 0 und der Initiatormodul 9 gleichzeitige Anforderungen ab. Der Zyklus 4 ist die erste Gelegenheit für den Initiator 9, seine Anforderung abzugeben, obgleich eine solche Anforderung in dem Zyklus 1 bevorzugt wurde. Die Abgabe des Signals -B.PEND verzögerte die Anforderung des Initiators 9 bis zu dem Zyklus 4. In dem Zyklus 4 wird wegen des Abgebens von Anforderungen durch den Responder 0 und den Initiator 9 das Signal - B.PEND wieder abgegeben. Der Respondermodul 0 erlangt die Busmeisterschaft in dem Zyklus 5 und negiert sein Signal - B.REQ0 während des Zyklus 5. Außerdem gibt während des Zyklus 5 der Responder 1 sein Anforderungssignal -B.REQ1 ab. Da Anforderungen durch Responder nicht durch das Abgeben von -B.PEND verzögert werden und Priorität gegenüber allen Initiatoren erhalten, wird der Responder 1 zum Busmaster in dem Zyklus 6 und negiert sein Signal -B.REQ1 in dem Zyklus 6. Da die Anforderung des Initiators 9 die einzige verbleibende Anforderung während des Zyklus 6 ist, wird das Signal -B.PEND während des Zyklus 6 negiert, und der Initiator 9 wird zu dem Busmaster in dem Zyklus 7.
- In dem Zyklus 8 geben der Responder 0 und der Responder 1 gleichzeitige Anforderungen ab. Das Signal -B.PEND wird als Ergebnis der gleichzeitigen Anforderungen abgegeben. Da der Responder 0 von höherer Priorität als der Responder 1 ist, wird der Responder 0 zum Busmaster in dem Zyklus 9 und bleibt der Busmaster in dem Zyklus 10 als Ergebnis des Abgebens des Signals -B.HOLD während des Zyklus 9. In dem Zyklus 10 wird das Signal -B.HOLD negiert, und die Anforderung des Responders 1 ist die einzige ausstehende Anforderung. Das Signal -B.PEND wird deshalb negiert. Der Responder 1 wird zu dem Busmaster in dem Zyklus 11. In dem Zyklus 11 behauptet der Initiator 12 seine Anforderung, die durch die Abgabe von -B.PEND ab dem Zyklus 9 verzögert worden ist. Initiatoren können ihre Anforderungen nur bei Negation des Signals -B.PEND behaupten.
- Fig. 12 zeigt ein Arbitrationsbeispiel einer rückgängig gemachten Anforderung. Der Initiator 12 verlangt den Bus ohne Streit in dem Zyklus 0, empfängt den Bus während des Zyklus 1, führt einen Informationstransfer zur Nummer 0 aus und erhält einen Wiederversuch in dem Zyklus 2, weil der Responder 0 besetzt ist (wovon der Ursprung nicht gezeigt ist). Außerdem ist in dem Zyklus 2 an dem Punkt, in welchem der Initiator 12 die Wiederversuchsanzeige zurückerhält, der Responder 0 bereit, eine Antwort auf dem Bus zu senden, so daß er den Bus verlangt und seinen Transfer während des Zyklus 3 ausführt. Infolgedessen wird der Responder 0 nicht belegt, was er durch Abgabe von -B.RDY in dem Zyklus 3 anzeigt. Die Abgabe von -B.RDY in dem Zyklus 3 gestattet dem Initiator 12, seine Anforderung während des Zyklus 4 wieder zu behaupten. Während des Zyklus 3 haben jedoch sowohl der Initiator 5 als auch der Initiator 9 den Bus verlangt. Der Initiator 5 empfing den Bus während des Zyklus 4, und der Initiator 9 hatte zu warten. Der Initiator 9 würde die Arbitration in dem Zyklus 4 gewonnen haben und würde in dem Zyklus 5 zum Master geworden sein, wenn nicht die Abgabe von -B.RDY gewesen wäre. Das Signal -B.RDY hatte zwei Auswirkungen: es veranlaßte den Initiator 9, seine Anforderung rückgängig zu machen, wie es in dem Zyklus 4 gezeigt ist, und gestattete dem Modul 12, seine Anforderung in dem Zyklus 4 zu behaupten. Das Signal -B.PEND wurde durch den Modul 9 zu der Zeit abgegeben, zu der der Modul 5 ebenfalls den Bus verlangte, und -B.PEND bleibt während der Periode abgegeben, während der die Anforderung aufgrund des Abgebens von -B.RDY rückgängig gemacht wird. Anforderungen können aufgrund einer Abgabe von -B.RDY wieder freigegeben werden, ohne Rücksicht auf das Abgeben von -B.PEND. Weil es keine anderen anhängigen Wiederversuche gibt, wird der Modul 12 in dem Zyklus 5 Master und führt seinen Informationstransfer aus. Der Modul 9 wird für den Zyklus 6 Master und aufgrund dessen, daß er -B.HOLD abgibt, auch für den Zyklus 7.
- Fig. 13 zeigt ein Arbitrationsbeispiel von mehreren wiederversuchenden Initiatoren und einer rückgängig gemachten Anforderung. Der Modul 7 verlangt den Bus in dem Zyklus 0, empfängt ihn in dem Zyklus 1 und erhält einen Wiederversuch in dem Zyklus 2. Der Modul 12 verlangt den Bus in dem Zyklus 1, empfängt ihn in dem Zyklus 2 und bekommt einen Wiederversuch in dem Zyklus 3. Zwei Initiatoren 7 und 12 warten nun darauf, einen Wiederversuch auszuführen. Während des Zyklus 3 verlangt der Modul 0, welches der besetzte Responder ist, den Bus und gibt gleichzeitig -B.RDY ab. Das Signal -B.RDY gestattet beiden Moduln 7 und 12, Busanforderungen während des Zyklus 4 abzugeben. Der Modul 5 machte ebenfalls eine streitige Anforderung mit dem Modul 9 während des Zyklus 3, was zur Abgabe von -B.PEND durch den Modul 5 geführt hat. Selbstverständlich wird wegen -B.RDY die Anforderung des Moduls 5 während des Zyklus 4 rückgängig gemacht. Die Moduln 7 und 12 verlangen beide den Bus während des Zyklus 4 aufgrund der Abgabe von -B.RDY. Der Modul 1, der ein Responder ist, verlangt ebenfalls den Bus in dem Zyklus 4, und es wird ihm das gestattet, weil die Responder weder -B.RDY noch -B.PEND bei der Wahl, wann sie den Bus verlangen, berücksichtigen. In dem Zyklus 4 gibt es drei streitige Anforderungen, und der Modul 1 gewinnt, weil er die höchste Priorität hat. Für den Zyklus 5 kann eine Antwort durch einen Responder (Modul 1) nicht einen weiteren Responder besetzt machen, so daß der Modul 7 die Arbitration während des Zyklus 5 gewinnt, und er ist Master während des Zyklus 6. Der Modul 12 gewinnt die Arbitration während des Zyklus 6, und er ist Master während des Zyklus 7. Der Modul 5 gibt seine Anforderung während des Zyklus 7 nicht wieder ab. Das Rückgängigmachen einer Anforderung aufgrund von -B.RDY berücksichtigt nur die Anforderung, die in dem Zyklus 4 nicht vorhanden ist. Wäre es nicht wegen des Vorhandenseins von mehreren anderen bereits anhängigen Anforderungen gewesen, würde -B.REQ5 während des Zyklus 5 erneut abgegeben worden sein. Die Moduln 7 und 12 gaben jedoch zu dieser Zeit -B.PEND ab, weil sie die Arbitration gegen den Modul 1 verloren hatten.
- Dieses Abgeben von -B.PEND hinderte den Modul 5 am Wiederabgeben seiner Anforderung, bis schließlich der Modul 7 bedient wurde und der Modul 12 die einzige ausstehende Anforderung war. Das ist es, was gewährleistet, daß der einzelne Zyklus der Anforderungsrückgängigmachung ausreicht, um alle mehreren wiederversuchenden Initiatoren einzulassen und den Buszugriff vor irgendwelchen anderen Initiatoren zu gewähren, obgleich es mehr als einen von ihnen geben könnte und sie eine niedrigere Priorität haben könnten als ein Modul, der seine Anforderung rückgängig gemacht hat.
- Außerdem wurde -B.PEND während des Zyklus 6 nicht negiert, sondern es wurde bis zu dem Zyklus 7 gewartet, obgleich während des Zyklus 6 nur eine Anforderung auf dem Bus aktiv war. Das ist deshalb so, weil, nachdem -B.PEND durch einen Modul abgegeben worden ist, es durch einen Modul abgegeben bleibt, selbst wenn seine Anforderung rückgängig gemacht wird, bis er bedient wird. Da der Modul 5 -B.PEND während des Zyklus 3 abgegeben hat, bleibt -B.PEND während des Zyklus 7 abgegeben und wird nicht negiert, bis der Modul 5 Busmaster in dem Zyklus 7 wird. Das hat den vorteilhaften Effekt, daß andere Moduln höherer Priorität daran gehindert werden, während des letzten Zyklus von Wiederversuchen um den Bus zu streiten, wenn es mehrere Initiatoren gibt, die gleichzeitig einen Wiederversuch ausführen. Andernfalls, wenn die Anforderung des Moduls 12 die einzige tatsächlich ausstehende Anforderung gewesen wäre, wäre -B.PEND negiert worden und hätte einem weiteren Initiator gestattet, seine Anforderung abzugeben. Dadurch, daß -B.PEND gehalten wird, bis der Modul 5 Master wird, wird gewährleistet, daß der Modul 5 bedient wird, sobald er dazu nach der Rückgängigmachung in der Lage ist, da der Modul 5 tatsächlich begonnen hatte, den Bus in dem Zyklus 3 zurückzuerlangen. Es hätte sich nicht mit der Fairness für einen Priorität-4-Initiator vertragen, die Kontrolle über den Bus durch Anfordern in dem Zyklus 7 zu erlangen, z. B.
- Fig. 14 zeigt den Fall, wo trotz all der zuvor erläuterten Situationen zum Verhindern des Auftretens dieses Falles, wie z. B. rückgängig gemachte Anforderungen, mehrere Wiederversuche bei einer einzelnen Anforderung auftreten. Das ist nicht ein übliches, aber ein mögliches Ereignis, und es gibt eine obere Grenze dafür, wieviele dieser Wiederversuche erfolgen können. Der typische Fall, wo eine solche Bedingung auftreten kann, ist der, in welchem ein bestimmter Initiator einen Wiederversuch ausführt, weil er auf einen besetzten Responder trifft und gleichzeitig mit dem Bereitwerten dieses Responders ein weiterer Initiator mit einer bereits anhängigen Anforderung ihn wieder besetzt machen kann. Diese Wiederholung kann mehrmals in einer Umgebung auftreten, wo es eine starke Busbelastung gibt, und das ist in Fig. 14 veranschaulicht. Der Initiator in dem Beispiel ist der Modul 5, und der Responder, mit dem alle Initiatoren 5, 9 und 12 Kommunikationen versuchen, ist der Responder 0. Der Einfachheit halber haben alle Transaktionen die Länge eines Doppelwortes.
- Wenn das Beispiel beginnt, ist der Modul 0 in dem Zyklus 0 besetzt, und der Modul 5 macht eine Anforderung, wird zu dem Busmaster in dem Zyklus 1 und empfängt einen Wiederversuch aus dem Modul 0 in dem Zyklus 2. Zu derselben Zeit, zu der er Anforderungen aus dem Modul 5 zurückweist, verlangt der Modul 0 auch den Bus, um eine Antwort zu geben, und wird nicht besetzt. Der Responder 0 wird in dem Zyklus 2 Master und gibt gleichzeitig -B.RDY ab. Der Modul 9 hat jedoch bereits eine ausstehende Anforderung und wird, da er der einzige Anforderer während des Zyklus 2 ist, während des Zyklus 3 Master. Wäre der Modul 9 während des Zyklus 3 nicht Master geworden, hätte er seine Anforderung wegen der Abgabe von -B.RDY in dem Zyklus 2 rückgängig machen müssen. Das ist jedoch hier nicht der Fall, wo der Modul 9 einen Transfer zu dem Modul 0 macht, wodurch er wieder besetzt wird. Deshalb, obgleich der Modul 5 ohne Streit den Bus in dem Zyklus 3 wiederverlangt und in dem Zyklus 4 Master wird, erhält er einen Wiederversuch in dem Zyklus 5. Der Modul 0 verlangt den Bus in dem Zyklus 5, weil seine Antwort während des Zyklus 6 bereit anzeigt. Der Modul 12 verlangt den Bus während des Zyklus 6 und wird Master in dem Zyklus 7, bevor er gezwungen werden konnte, seine Anforderung rückgängig zu machen und so den Modul 0 wieder besetzt zu machen. Der Modul 5, der wegen -B.RDY in dem Zyklus 6 seine Anforderung erneut macht, gewinnt die Arbitration in dem Zyklus 7, wird Master in dem Zyklus 8 und empfängt einen Wiederversuch in dem Zyklus 9.
- Es sei beachtet, daß gleichzeitig mit der erneuten Anforderung des Busses in dem Zyklus 7 der Modul 5 auch -B.PEND abgab, obgleich keine anderen Anforderungen zu der Zeit anhängig waren. Das ist die Wirkung der Begrenzungsfunktion der Arbitrationsschaltung, die in Fig. 16C unten gezeigt ist. -B.PEND wird abgegeben, beginnend in dem Zyklus 7, und obgleich der Modul 9 den Bus in dem Zyklus 8 verlangt haben wird, wird es bis zu dem Zyklus 14 nicht gestattet. Die Abgabe von -B.PEND gewährleistet unter diesen Umständen, nachdem der Modul 0 in die Lage versetzt wird, seine existierende Operation zu beenden, was er in dem Zyklus 10 tat und weshalb er in dem Zyklus 10 bereits angezeigt hat, daß es keinen Konflikt geben wird und daß der Modul 5 der Busmaster werden wird.
- Der Zyklus 11 ist Leerlauf, wenn der Modul 5 den Bus verlangt; und in dem Zyklus 12 ist der Modul 5 der Master. Der Zyklus 13 ist Leerlauf, weil -B.PEND noch abgegeben wird, und schließlich, der Zyklus 14 ist Leerlauf, weil es nicht bis zu dem Zyklus 14 dauert, daß der Modul 5 in der Lage ist, -B.PEND beim Empfangen des Akzeptierenstatussignals während des Zyklus 13 zu negieren. Schließlich ist in dem Zyklus 14 der Modul 9 in der Lage, den Bus zu verlangen, und er wird anschließend Master in dem Zyklus 15 werden.
- Wenigstens drei dieser Leerlaufzyklen, nämlich die Zyklen 11, 13 und 14, sind ein direktes Ergebnis des Erzwingens des Zugriffes auf den Bus durch den Modul 5. Die Alternative wäre jedoch gewesen, potentiell mehr Wiederholungen dieses Falles zu gestatten, wo zu der Zeit, zu der der Modul 5 einen Wiederversuch ausführen konnte, der Modul 0 wieder besetzt war. Die Wahl von zwei erfolglosen Wiederversuchen, bevor der Zugriff erzwungen wird, ist eine beachtete Zahl mit Rücksicht auf die Tatsache, daß ein Wiederversuch relativ üblich ist, zwei Wiederversuche ziemlich unüblich sind, und die Möglichkeit von drei Wiederversuchen nur existiert, wo dieser exakte Typ von Überlappung wiederholt aufgetreten ist. Nachdem es aufzutreten begonnen hat, ist es sehr wahrscheinlich, daß es weitergeht, und zwar wegen der Bedingungen der Mikroprozessoren, die ihm gestatten, weiterzugehen, und es ist wahrscheinlich, daß es sich über eine gewisse Zeitdauer fortsetzt. Der einzige Gewinn dadurch, daß die Wiederversuchszahl mehr als drei gemacht wird, würde darin bestehen, weitere Wartezustände durch den wiederversuchenden Modul zu bewirken. In dem Fall, daß derselbe Modul während genau desselben Zyklus, in welchem er - B.RDY abgibt, welches der eine Zyklus ist, der zu bald ist, als daß die rückgängig gemachte Anforderung Wirkung zeigte, wiederholt besetzt gemacht wird, ist, wenn es zweimal hintereinander erfolgt, gibt es eine hohe Wahrscheinlichkeit, daß es weiterhin erfolgen wird, so daß die Busmeisterschaftswartezeit begrenzt wird, wobei -B.PEND benutzt wird, um einen nichtkonkurrierenden Buszugriff bei dem 3. Auftreten zu erzwingen.
- Fig. 15 zeigt einen Teil der physikalischen Verdrahtungsleiter 164, durch die jeder Responder- und Initiatormodul mit der Mutterplatine oder Rückebene 70 (Fig. 2) verbunden wird. Fig. 15 zeigt außerdem die elektrische Verbindung der Signale -B.REQOUT von jedem Modul aus mit allen Moduln geringerer Priorität in dem Computersystem. Die Verbindungsstifte der Verbinder 164 sind durch kleine Kreise dargestellt, und diejenigen kleinen Kreise, die geschwärzt sind, repräsentieren die Situation, wo einer der Leiter mit einem Verbindungsstift verbunden ist. Jeder Verbinder 164 veranschaulicht nur fünfzehn Verbindungsstifte, aber die tatsächlichen Verbinder 164 haben Stifte zum Leiten von sämtlichen Bussignalen. Die Bussignale werden einfach an den Bus angelegt, und zwar direkt mit einer Verbindung jedes Moduls und abgeschlossen an jedem Ende der Rückebene. Die Taktsignale werden von dem Taktgenerator 74 (Fig. 2 aus) über Spezialsignale gleicher Länge auf jeden Modul verteilt. Die Schlitznummeridentifizierersignale -B.SLOT3-0 werden zwischen den Moduln nicht auf den Bus übertragen, sondern sind tatsächlich mit der Binärdarstellung der Schlitznummer an jedem Verbinder 164 durch eine festverdrahtete Verbindung von Stiften festverdrahtet.
- Die Busanforderungssignale -B.REQ14-0 werden auf andere Weise gehandhabt, wie es in Fig. 15 veranschaulicht ist. In jedem Schlitz ist ein Stift abgehenden Anforderungen - B.REQOUT aus diesem Modul zugeordnet. Streng genommen wird das Signal -B.REQOUT zwischen den Moduln nicht über den Bus übertragen, weil es mit einem Bussignal in jedem Schlitz unterschiedlich verbunden ist. Die Schaltungsanordnung innerhalb des Arbiters in jedem Buskoppler plaziert ihre abgehende Anforderung an dem Stift -B.REQOUT in ihrem Schlitz, und -B.REQOUT wird mit einem Stift -B.REQ14-0 für jeden Schlitz oder Modul niedrigerer Priorität verbunden. Moduln höherer Priorität sind mit niedriger bezifferten Schlitzen verbunden. Alle Respondermoduln sind mit den niedriger bezifferten Schlitzen verbunden, und alle Initiatoren sind in Schlitzen höherer Ziffern als der höchste bezifferte Schlitz angeordnet, mit welchem irgendein Responder verbunden ist. Deshalb wird -B.REQOUT des Schlitzes 0 zu -B.REQ0, gesehen von den Schlitzen 1-15 her. -B.REQOUT des Schlitzes 1 wird zu -B.REQ1, gesehen von den Schlitzen 2-15 her. -B.REQOUT des Schlitzes 2 wird zu -B.REQ12, gesehen durch den Schlitz 3-15. Die Anordnung setzt sich auf diese Weise fort.
- Die abgehende Anforderung ist nur physikalisch mit den Schlitzen niedrigerer Priorität verbunden. Es besteht keine Verbindung an den Schlitzen höherer Priorität mit den niedrigere Priorität aufweisenden Signalen -B.REQ. Das Signal - B.REQOUT aus einem Modul wird durch einen Leiter (z. B. 166) zu allen Stiften -B.REQ einer entsprechenden Zahl in allen Verbindern 164 zu Moduln niedrigerer Priorität geleitet. Pull-up-Widerstände (nur ein solcher Widerstand 168 ist gezeigt) sind mit jedem der Stifte jedes Moduls verbunden, so daß Signale an diesen Stiften dadurch negiert erscheinen, daß sie den logischen H-Zustand haben. Zum Beispiel, da es keine Verbindungen mit irgendeinem der Stifte bei -B.REQ14- 10 in dem Schlitz 0 gibt, wird der Modul höchster Priorität niemals das Abgeben von irgendwelchen Signalen -B.REQ sehen. Ohne Änderung kann jedoch dieselbe Modulschaltungskarte in den Schlitz 9 gesteckt werden, und der Modul wird die Anforderungen höherer Priorität aus den Schlitzen 8, 7, 6, 5, 4, 3, 2, 1 und 0 sehen, wogegen er die Anforderungen niedrigerer Priorität aus den Schlitzen 10, 11, 12, 13, 14 und 15 nicht sehen wird.
- Ohne Schalter, Schaltdrähte oder Schaltungsanordungsänderungen wird die Prioritierung oder Prioritätszuordnung realisiert, indem die Moduln in den Verbindern 164 verbunden werden, die in Fig. 10 gezeigt sind. Zum Beispiel, in Fig. 11, wo die Moduln 0, 5 und 12 in dem Zyklus 0 alle Anforderungen abgeben, wird die Anforderung des Moduls 0, weil sie durch die Verdrahtungsanordnung, die in Fig. 15 gezeigt ist, aus -B.REQOUT in dem Schlitz 0 zu allen anderen Schlitzen 1-15 gebracht wird, die Abgabe von -B.REQ0, durch den Modul in dem Schlitz 5 und dem Modul in dem Schlitz 12 elektrisch gesehen. Die Abgabe von -B.REQOUT in dem Schlitz 5 ist so verdrahtet, daß sie durch den Modul in dem Schlitz 12 gesehen wird, aber nicht durch den Modul in dem Schlitz 0. Und die Abgabe von -B.REQOUT in dem Schlitz 12 wird durch die Moduln in den Schlitzen 13, 14 und 15 gesehen, aber nicht durch den Modul 5 oder 0. Die Prioritätserkennung in den Moduln wird leicht realisiert, da, wenn keines der Signale -B.REQ14-0 und -B.HOLD abgegeben wird, dieser Modul ein neuer Busmaster wird, in dem einfach die Anforderungssignale ausgewertet werden.
- Die idealisierte Logikschaltungsanordnung zum Realisieren der Arbitrationstechnik nach der vorliegenden Erfindung in einem Initiatormodul ist kollektiv in den Fig. 16A, 16B und 16C veranschaulicht. Die Fig. 16A und 16B sind in den Punkten (a) und (b) miteinander zu verbinden. Die Fig. 16B und 16C sind in den Punkten, die mit (d) und (e) bezeichnet sind, miteinander zu verbinden. Die Fig. 16A und 16C werden in dem Punkt (c) miteinander verbunden. Gemeinsam bilden die Fig. 16A, 16B und 16C den Initiatorarbiter 160, der in Fig. 2 gezeigt ist.
- Der Teil des Initiatorarbiters, der in Fig. 16A gezeigt ist, fungiert als eine Einrichtung zum Erzeugen der Signale -B.REQOUT aus jedem Initiatormodul. Der Initiatorarbiter wird ein Signal -B.REQOUT aufgrund von Signalen aus anderen Komponenten des Initiatormoduls erzeugen, um entweder eine Speicherraumoperation oder eine Steuerraumoperation durchzuführen. Das Signal -I.MEM wird von den anderen Komponenten dem Initiatormodul zugeführt, damit eine Speicherraumoperation ausgeführt wird. Das Signal -I-CTRL wird durch die anderen Komponenten dem Initiatormodul zugeführt, damit eine Steuerraumoperation ausgeführt wird. Der negative Präfix vor den Signalnamen zeigt an, daß das Signal abgegeben, d. h. geltend gemacht wird, wenn es logisch Low oder L ist. Die Signalnamen, die mit "I." beginnen, bezeichnen diejenigen, die durch andere oder interne Komponenten des Moduls erzeugt und dem Buskoppler zugeführt werden. Die Signale - I.MEM und -I.CTRL schließen sich gegenseitig aus, weil der Modul nur Speicherraumoperationen oder Steuerraumoperationen in einem Buszyklus ausführen wird, nicht aber beide gleichzeitig.
- Ein Flipflop 170 empfängt das Signal -I.MEM an seiner Eingangsklemme D und wird durch das Taktzustandssignal B0 getaktet, das an die Eingangsklemme C angelegt wird. Das Signal -I.CTRL wird an die Eingangsklemme D eines Flipflops 172 angelegt,- und der Zustand des Flipflops 172 wird mit dem Taktzustandssignal B0 getaktet, das an seine Klemme C angelegt wird. Immer dann, wenn eines der Signale -I.MEM oder -I.CTRL an die Flipflops 170 bzw. 172 angelegt wird, wird der Initiatorarbiter danach trachten, der Busmaster zu werden, indem er das Signal -B.REQOUT abgibt. Weil die Ausgänge Q der Flipflops 170 und 172 mit den übersteuernden Lösch- oder R-Eingängen verbunden sind, bleiben die Flipflops 170 und 172, nachdem diese Flipflops an der Flanke des Taktzustandssignals B0 gesetzt worden sind, gesetzt, bis sie durch ein Übersteuerungseingangssignal gelöscht werden, das an die Setzklemme S angelegt wird. Die Flipflops 170 und 172 dienen effektiv zum Zwischenspeichern eines Ausgangssignals, das eine Busanforderung anzeigt, bei dem Anlegen von einem der Signale -I.MEM oder -I.CTRL.
- Eine UND/ODER/INVERT-Schaltung 174 ist eine Einrichtung zum Realisieren der Arbitrationsfairness und zum Wiederaussenden von Anforderungen gemäß der Arbitrationstechnik nach der vorliegenden Erfindung. Das Ausgangssignal der UND/ODER/INVERT-Schaltung 174 wird an den Eingang D eines Flipflops 176 angelegt. Das Taktzustandssignal B1 wird an die Eingangsklemme C des Flipflops 176 angelegt. Ein Ausgangssignal wird von der Q-Quer-Klemme des Flipflops 176 in Synchronisation mit der Vorderflanke des Taktzustandssignals B1 geliefert. Das Q-Quer-Ausgangssignal des Flipflops 176 wird durch einen Inverter 178 invertiert und wird zu dem Signal -B.REQOUT für diesen Modul. Das Ausgangssignal der UND/ODER/INVERT-Schaltung 174 wird auch der Eingangsklemme D eines Flipflops 180 zugeführt. Das Taktzustandssignal B1 wird an die Klemme C des Flipflops 180 angelegt. Da die Flipflops 176 und 180 beide dasselbe Eingangssignal an ihren Klemmen D empfangen und durch das Taktzustandssignal B1 gleichzeitig getaktet werden, ändern beide Flipflops 176 und 178 ihren Zustand gleichzeitig. Der Ausgang Q des Flipflops 180 ist mit dessen übersteuerndem Löscheingang verbunden und verriegelt deshalb das Flipflop 180 in einem Zustand, der eine Anforderung anzeigt. Das Q-Quer-Ausgangssignal des Flipflops 180 wird als eines der Eingangssignale an den C-UND-Schaltungsteil der UND/ODER/INVERT-Schaltung 174 angelegt und ist auch in dem Punkt (c) vorhanden. Das Signal in dem Punkt (a) ist die Inversion des Signals - B.REQOUT.
- Die UND/ODER/INVERT-Schaltung 174 dient zum Realisieren der Fairness und zum Rückgängigmachen von Anforderungen gemäß den Pegeln der verschiedenen Eingangssignale, die an sie angelegt werden. Die Ausgangssignale der Flipflops 170 und 172 werden an die Eingangsklemmen der B- und D-UND-Schaltungsteile der Schaltung 174 angelegt. Die Signale aus den Flipflops 170 und 172 werden durch die B- und D-UND-Schaltungsteile nur dann geleitet, wenn das Signal -B.PEND nicht abgegeben wird und wenn das Signal -B.RDY nicht abgegeben wird. Bei Abgabe entweder des Signals -B.PEND oder des Signals -B.RDY gehen die Ausgangssignale aus den B- und D- UND-Schaltungsteilen in den L-Zustand. Somit wird jeweils die Abgabe des Signals -B.PEND, was anzeigt, daß frühere Anforderungen ausstehend sind, den Initiatorarbiterschaltungsteil, der in Fig. 16A gezeigt ist, am Erzeugen seines eigenen Signals -B.REQOUT hindern. Ebenso wird die Abgabe des Signals -B.RDY das Ausgangssignal aus der Schaltung 174 beendigen. Nachdem anhängige Anforderungen bei der Abgabe des Signals -B.RDY, das für nur einen Buszyklus vorhanden ist, rückgängig gemacht worden sind, wird eine Anforderung als Ergebnis des Anlegens des Q-Quer-Signals durch das Flipflop 180 an eine Eingangsklemme des C-UND-Schaltungsteils der Schaltung 174 wiederhergestellt. Das Wrap-around- Signal aus dem Ausgang Q des Flipflops 180 bewirkt, daß das Flipflop 180 verriegelt bleibt, selbst wenn die Abgabe von -B.PEND und/oder -B.RDY das Flipflop 176 veranlassen wird, den Zustand zu ändern. Bei der Negation des Signals -B.RDY und/oder -B.PEND bewirkt das Vorhandensein des Q-Quer-Ausgangssignals aus dem Flipflop 180, daß der C-UND-Schaltungsteil ein Signal der Eingangsklemme D des Flipflops 176 zuführt, wodurch die Anforderung wiederhergestellt oder eine Anforderung eingeleitet wird, die zuvor aufgrund der Abgabe von -B.PEND verzögert wurde.
- In dem Fall, wo der Initiatormodul auf einen Wiederversuch wartet, wird das Signal I.RDYWT als ein Eingangssignal an den A-UND-Schaltungsteil der Schaltung 174 angelegt. Das andere Eingangssignal an dem A-UND-Schaltungsteil der Schaltung 174 ist die Inversion des Signals -B.RDY. Der Inverter 182 invertiert das Signal -B.RDY, und der Inverter 184 bringt dieses Signal auf den ursprünglichen Pegel des Signals -B.RDY zurück. Das Signal I.RDYWT wird aufgrund dessen erzeugt, daß dieser Modul das Wiederversuchsstatussignal -B.RET empfängt, und es zeigt an, daß der Initiatormodul bereit ist und auf einen Wiederversuch wartet. Somit wird bei Abgabe des Signals -B.RDY das Signal I.RDYWT durch den A-UND-Schaltungsteil der Schaltung 174 geleitet, um das Flipflop 176 zu setzen und ein Signal -B.REQOUT zu erzeugen, wenn der besondere Modul auf einen Wiederversuch wartet. Der Initiator, der auf einen Wiederversuch wartet, kann den Bus erneut anfordern, sobald der Responder anzeigt, daß er bereit ist, ungeachtet des Zustands des Signals -B.PEND und ungeachtet anderer Anforderungen, die ausstehen könnten, da diese Anforderungen als ein Ergebnis des Durchlaßvorgangs rückgängig gemacht werden, der mit der Abgabe von -B.RDY in die B-, C- und D-UND-Schaltungsteile der Schaltung 174 verbunden ist.
- Die UND/ODER/INVERT-Schaltung 174 steigert die Funktionalität beträchtlich, ohne eine Einbuße an Leistungsfähigkeit. Die Flipflops 170 und 172 werden an dem Taktzustandssignal B0 getaktet, und das Flipflop 176 wird an dem Taktzustandssignal B1, einen Taktzustand entfernt, getaktet. Die Dauer des einzelnen Buszustandssignals läßt sehr kurze Zeit zum Erzielen der Kombination von Signalen, die benötigt wird, um die Arbitrationsfairness zu ermöglichen. Außerdem, trotz der besten Bemühungen, sie zu vermeiden, wird es eine gewisse Taktverschiebung geben. Infolge der Zeitsteuerung, die in der bevorzugten Ausführungsform der vorliegenden Erfindung vorgenommen wird, ist nur Zeit für einen Pegel des Durchschaltens zwischen den Flipflops 170 und 172 einerseits und den Flipflops 176 und 180 andererseits. Nur eine logische Torschaltung kann zwischen diesen Flipflops benutzt werden. Die UND/ODER/INVERT-Torschaltung 174 liefert eine relativ große Anzahl von brauchbaren Eingangssignalen zum Erzielen der Arbitrationstorsteuerung in grob einer Torschaltungsverzögerungszeit, im Gegensatz zu anderen Formen der Torsteuerung, die zwei oder mehr sequentielle Torschaltungen benötigen könnten, um die logische Arbitrationsfunktion zu erzielen.
- Die Funktion der Torschaltung 174 ist besonders wichtig, weil sie die Realisierung des Rückgängigmachens von Anforderungen gestattet, was ein beträchtlicher Vorteil ist. Wenn es das Ziel ist, den nutzbaren Durchsatz des Busses zu maximieren, ist es eine wichtige Notwendigkeit, unnötige Buszyklen zu minimieren, die bei erfolglosen Wiederversuchen vergeudet werden. Zum Maximieren des nutzbaren Durchsatzes ist es notwendig, die erfolglosen Wiederversuche zu minimieren. Zum Minimieren von erfolglosen Wiederversuchen leitet der Modul, der auf einen Wiederversuch wartet, seinen Wiederversuch erst ein, nachdem der Responder bereit geworden ist. Es gibt jedoch eine hohe Wahrscheinlichkeit in einem Computersystem mit mehreren Initiatoren, daß in einem Zeitpunkt, wo der Responder bereit wird, ein oder mehrere andere Initiatoren den Bus verlangen werden. Wenn es kein Mittel zum Rückgängigmachen dieser vorher vorhandenen Anforderungen gibt, wird die Arbitrationsfairness erfordern, daß die Wiederversuchsanforderung bis nach dem Bedienen dieser vorher vorhandenen Anforderungen verzögert wird. Es gibt eine vernünftige Wahrscheinlichkeit, daß eine oder mehrere dieser vorher vorhandenen Anforderungen genau auf den Responder zugreifen werden, der gerade bereit geworden ist, und ihn deshalb wieder belegt machen, was noch einen weiteren Wiederversuch durch den wartenden Modul verlangt, bevor er die Buskontrolle erhält. Eine solche Anordnung verletzt das Fairnesskonzept, das bei der vorliegenden Erfindung benutzt wird, indem ein Modul, der seine Aktivität viel früher begann, noch länger verzögert wird. Durch Rückgängigmachen von vorher vorhandenen Anforderungen, wenn ein Responder aufhört besetzt zu sein, hat die vorliegende Erfindung den Vorteil, daß sie das Auftreten des Wiederversuches sobald wie möglich mit der höchstmöglichen Wahrscheinlichkeit des Findens eines nichtbesetzten Responders gestattet.
- Der Teil der Arbiterschaltungsanordnung, der in Fig. 16B gezeigt ist, führt die tatsächliche Prioritätsarbitration durch und erzeugt die Signale der Busmeisterschaft. Zwei wichtige Elemente der in Fig. 16B gezeigten Schaltungsanordnung sind UND-Schaltungen 186 und 188 mit mehreren Eingängen. Die fünfzehn Busanforderungssignale -B.REQ14-0 werden zu den Eingangsklemmen jeder dieser UND-Schaltungen 186 und 188 geleitet. Die Pull-up-Widerstände 168 sind mit allen Verbinderstiften einschließlich denjenigen verbunden, welche Signale -B.REQOUT aus Moduln von größerer Priorität nicht empfangen, wie es in Verbindung mit Fig. 15 erläutert worden ist. Die Signale, die an den Stiften erscheinen, an denen die Signale -B.REQOUT nicht aus Moduln von höherer Priorität vorhanden sind, erscheinen negiert (logisch H) aufgrund der Pull-up-Wirkung der Widerstände, da die Signale -B.REQ14-0 aktive L-Signale sind.
- Die UND-Schaltung 186 erkennt, ob Anforderungen höherer Priorität ausstehen, und bestimmt so, ob dieser besondere Initiatormodul die Arbitration gewinnen wird. Zusätzlich zu allen Signalen -B.REQ14-0 wird auch das Signal -B.HOLD an eine Eingangsklemme der UND-Schaltung 186 angelegt. Das letzte Eingangssignal an der UND-Schaltung 186 ist die Inversion des Signals -B.REQOUT dieses besonderen Moduls, das in dem Punkt (a) aus der Schaltungsanordnung angelegt wird, die in Fig. 16A gezeigt ist. Das Ausgangssignal aus der UND-Schaltung 186 wird somit erzeugt, wenn dieser Modul den Bus als ein Ergebnis der Präsentation eines Signals in dem Punkt (a) anfordert, es wird kein Signal -B.REQ14-0 höherer Priorität abgegeben, und -B.HOLD wird nicht abgegeben.
- Das Ausgangssignal der UND-Schaltung 186 wird an eine NOR- Schaltung 190 und an die Eingangsklemme D eines Flipflops 192 angelegt. Das Flipflop 192 wird an dem Taktzustandssignal B0 getaktet. Das Flipflop 192 taktet die Busmeisterschaft, wenn sein Q-Quer-Ausgang im H-Zustand ist und ein Signal I.SBMSTR abgibt. Das Signal I.SBMSTR gibt die Treiber dieses Moduls frei, um die Informationstransfersignale und die Transfersteuersignale anzusteuern, und leitet auch eine Zeitsteuerkette ein, um geeignete Information zu geeigneten Zeiten zu dem Bus durchzulassen.
- Weil die Anforderung aus einem Modul, der Busmaster geworden ist, negiert werden muß, unmittelbar nachdem der Modul seinen Zyklus oder seine Zyklen der Busmeisterschaft beginnt, wird das Q-Ausgangssignal des Flipflops 192 zu einer NOR-Schaltung 194 geleitet. Das Ausgangssignal der NOR- Schaltung 194 wird in dem Punkt (b) angelegt und wird zum Rücksetzen der Flipflops 170, 172, 176 und 180 benutzt, die am Erzeugen des Signals -B.REQOUT beteiligt sind (Fig. 16A). Sobald das Flipflop 192 gesetzt wird, werden die Flipflops 170, 172, 176 und 180 nach einer oder zwei Torschaltungsausbreitungsverzögerungen (im wesentlichen weniger als ein Taktzyklus) gelöscht, wodurch das Signal - B.REQOUT vor dem Zustand B1 des Zyklus negiert wird, wenn der Modul Busmaster ist. Ein Signal an der Übersteuerungseingangsklemme S der Flipflops 170, 172, 176 und 180 wird benutzt, um diese Flipflops zu löschen, bevor das Buszustandssignal B1 auftritt. Deshalb stört das Signal - B.REQOUT aus diesem Initiatormodul nicht die Erzeugung von -B.PEND für den nächsten Zyklus. Diese Anordnung vermeidet störende Bedingungen, wenn der Bus mit relativ hoher Geschwindigkeiten betrieben wird.
- Das andere Signal, das an die NOR-Schaltung 194 angelegt wird. Ist ein internes Rücksetzsignal -I.RESET, das zum Rücksetzen beim Einschalten der Stromversorgung benutzt wird, um sicherzustellen, daß eine Busanforderung beim Einschalten der Stromversorgung des Systems nicht erzeugt wird.
- Die Erzeugung des Signals -B.HOLD erfolgt durch ein Flipflop 196, das an dem Taktzustandssignal B1 getaktet wird. Die Zeitsteuerung des Signals -B.HOLD ist deshalb der Zeitsteuerung des Signals -B.REQOUT äquivalent, welches ebenfalls an dem Taktzustandssignal B1 aus dem Flipflop 180 (Fig. 16A) erzeugt wird. Eine Torschaltung 198 gibt die Erzeugung des Signals -B.HOLD aus dem Flipflop 196 frei. Eines der Eingangssignale an der Torschaltung 198 ist das Signal -I.SBHOLD, das durch eine andere Steuerlogik in dem Modul erzeugt wird, wenn der Modul an einer Mehrfachdoppelwortoperation oder an einer Test- und Setz- oder Speicherreinigungsoperation beteiligt ist. Die Abgabe des Signals -I.SBHOLD erfolgt, wenn erkannt wird, daß der Modul die Busmeisterschaft für mehr als einen aufeinanderfolgenden Buszyklus behalten sollte. Die Torschaltung 198 erfüllt diese Torsteuerfunktion während der Abgabe von I.SBMSTR, da die Torschaltung 198 das Ausgangssignal Q aus dem Flipflop 192 empfängt. Dadurch, daß die Torschaltung 198 auf diese Weise torgesteuert wird, wird gewährleistet, daß dieser Modul -B.HOLD nicht abgibt, wenn er nicht der Busmaster ist.
- Das Ausgangssignal aus dem Ausgang Q des Flipflops 196 wird zu einer der Eingangsklemmen der NOR-Schaltung 190 zurückgeleitet. Die Abgabe von I.SBMSTR aus dem Flipflop 192 wird -B.REQOUT rücksetzen, und deshalb wird der Ausgang der Torschaltung 186 nicht länger im H-Zustand sein, weil eines der Eingangssignale an dieser Torschaltung, nämlich das Signal -B.REQOUT aus diesem Modul, negiert wird. Wenn dieser Modul -B.HOLD abgibt, zwingt demgemäß das Signal aus dem Flipflop 196 an der Torschaltung 190 das Flipflop 192, gesetzt zu bleiben, so daß dieser Modul für die Dauer der Abgabe des Signals -B.HOLD der Master bleibt.
- An dem Ende jeder Transaktion, in welcher dieser Initiatormodul Busmaster ist, ändert das Flipflop 192 die Zustände und negiert I.SBMSTR durch die Torsteuersequenz über das Flipflop 200 und die Torschaltungen 202, 204 und 206. Das normale Abschaltsignal für das Flipflop 192 wird aus dem Ausgangssignal Q des Flipflops 200 gewonnen. Das Signal I.SBMSTR aus dem Q-Quer-Ausgang des Flipflops 192 wird an die Eingangsklemme D des Flipflops 200 angelegt. Bei dem Taktstatussignal B1 wird das Flipflop 200 gesetzt, und das Ausgangssignal Q aus dem Flipflop 200 wird an eine Eingangsklemme der Torschaltung 202 angelegt. Sobald der Modul Busmaster wird, d. h. wenn I.SBMSTR abgegeben wird, beginnt somit das Flipflop 200 den Abschaltprozeß genau bei dem nächsten Taktzustandssignal (B1). Das Ausgangssignal Q aus dem Flipflop 200 wird an eine Eingangsklemme der UND-Schaltung 202 angelegt. Das andere Eingangssignal an der UND- Schaltung 202 ist das Ausgangssignal Q aus dem Flipflop 196. Das Ausgangssignal Q aus dem Flipflop 196 wird immer dann abgegeben, wenn das Signal -B.HOLD nicht abgegeben wird. Wenn angenommen wird, daß -B.HOLD nicht abgegeben wird, ist ein Ausgangssignal aus der Torschaltung 202 an der Eingangsklemme der UND-Schaltung 204 vorhanden, und zwar kurz nach dem Beginn des Taktzustandssignals B1. Bei dem Taktzustandssignal B3, das als das andere Eingangssignal an die UND-Schaltung 204 angelegt wird, wird ein Ausgangssignal aus der Torschaltung 204 an den Eingang der Torschaltung 206 angelegt, und das Ausgangssignal aus der Torschaltung 206 setzt oder löscht das Flipflop 192, so daß das Flipflop 192 bei dem Taktzustandssignal B3 abgeschaltet wird. Ein internes Rücksetzsignal -I.RESET wird ebenfalls an die Torschaltung 206 angelegt. Das interne Rücksetzsignal wird ebenfalls das Flipflop 192 abschalten. Durch Anlegen des Taktzustandssignals B3 als ein Eingangssignal an die UND-Schaltung 204 wird gewährleistet, daß die Abschaltung an dem Ende eines Buszyklus erfolgt, statt in der Zyklusmitte, so daß geeignete Haltezeiten für den letzten Zyklus der Transaktion erreicht werden. Das Anlegen des Q- Ausgangssignals aus dem Flipflop 196 an die Eingangsklemme der UND-Schaltung 202 gewährleistet, daß das Flipflop 192 nicht abgeschaltet wird, solange wie ein Signal -B.HOLD abgegeben wird. Das Abgeben des Signals I.RESET löscht auch die Flipflops 196 und 200.
- Die Torschaltungen 186, 188 und 198 werden tatsächlich in einem programmierbaren Arraylogikchip des Typs PAL-20L8A realisiert, der von Monolithic Memories Inc., National Semiconductor Corp. und anderen hergestellt wird. Eine programmierbare Arraylogikvorrichtung gestattet, die 17 Eingangssignale an der Torschaltung 186 und die 15 Eingangssignale an der Torschaltung 188 logisch UND-zu-Verknüpfen.
- Der Teil der Arbiterschaltung, der in Fig. 16C gezeigt ist, dient als ein Mittel zum Erzeugen des Signals -B.PEND. Der Zweck des Signals -B.PEND ist es, zu verhindern, daß neue Busanforderungen aus Initiatoren abgegeben werden, wenn zwei oder mehr als zwei Anforderungen bereits anhängig sind, und um die Arbitrationsfairness unter widerstreitenden Initiatoren zu realisieren. Die Torschaltung 188 (Fig. 16B) erkennt alle relevanten anhängigen Anforderungen aus Initiatoren höherer Priorität. Da die Signale -B.REQ aus den Initiatoren aktive L-Signale sind, wird eine UND-Funktion ein Ausgangssignal nur dann erzeugen, wenn alle Signale -B.REQ14-0 negiert sind. Wenn alle Signale -B.REC14-0 negiert sind, was bedeutet, daß es keine ausstehende Anforderung gibt oder daß dieser besondere Modul, dem die Arbiterschaltung zugeordnet ist, nicht dabei ist, eine Anforderung zu machen, bei welcher es sich um das andere Eingangssignal in dem Punkt (a) handelt, das durch einen Inverter 212 zu der ODER-Schaltung 208 geleitet wird, dann wird - B.PEND nicht erzeugt werden, weil die ODER-Schaltung 208 ein L-Ausgangssignal in dem Punkt (d) liefert (Fig. 16B). Wenn beide Eingangssignale an der NOR-Schaltung 208 im L- Zustand sind, was bedeutet, daß dieser Modul eine Anforderung abgegeben hat und es wenigstens eine andere anhängige Anforderung gibt, die durch einen weiteren Modul höherer Priorität abgegeben wird, wird das Ausgangssignal der Torschaltung 208 ein H-Signal in dem Punkt (d) sein. Dieses H- Signal in dem Punkt (d) wird das Signal -B.PEND infolge der Wirkung der NOR-Schaltung 214 erzeugen, wie es in Fig. 16C gezeigt ist.
- Die Abgabe des Signals -B.PEND ist auch durch das Verriegeln des Q-Ausgangs eines Flipflops 216 begleitet. Das Flipflop 216 zeichnet an dem Taktzustandssignal B0 die Tatsache auf, daß -B.PEND abgegeben worden ist. Der Q-Quer- Ausgang des Flipflops 216 ist in einem Rückkopplungsweg zu dem übersteuernden Setzeingang zurückverbunden, und diese Rückkopplung verriegelt den Zustand des Ausgangssignals der Torschaltung 208 (Fig. 16B) bis zu der Zeit, zu der der Modul der Busmaster wird. Wenn der Modul der Busmaster wird, wird das Flipflop 200 (Fig. 16B) bei dem Taktbuszustandssignal B1 gesetzt, und sein Q-Quer-Ausgangssignal in dem Punkt (e) wird geliefert, um das Flipflop 216 rückzusetzen. Demgemäß wird -B.PEND in diesem Modul ein Buszustandstaktsignal in die Periode hinein, in welcher der Modul Busmaster wird, negiert. Es ist wichtig, den Zustand von -B.PEND in dem Flipflop 216 separat zu verriegeln, weil, wenn eine Anforderung aus diesem Modul aufgrund der Abgabe von -B.RDY rückgängig gemacht worden ist, die Arbitrationsfairness unter den Moduln mit anhängigen Anforderungen verletzt wird, wenn das Signal -B.PEND negiert war. So wird durch Setzen des Flipflops 216 die Abgabe von -B.PEND infolge des Q-Ausgangssignals aus dem Flipflop 216, das durch die ODER- Schaltung 218 zu der Torschaltung 214 geleitet wird, nicht negiert.
- Es ist, wie erläutert, theoretisch möglich, daß ein Modul auf eine verlängerte Zahl von Besetztstatusantworten trifft und ein übermäßiges Ausmaß an Zeit während Wiederversuchen wartet, obgleich der Initiator und der Responder richtig funktionieren. Das Mittel, durch welches diese Möglichkeit verhindert wird, besteht darin, daß eine Serie von Flipflops 220, 222, 224 und 226 das Auftreten von Wiederversuchen zu derselben Transaktion erkennt und zählt. Die Flipflops 220, 222, 224, 226 und 228 sind so gewählt worden, daß das Konzept realisiert wird, daß nach dem zweiten erfolglosen Wiederversuch bei derselben Transaktion der dritte Wiederversuch immer Erfolg haben wird. Empirisch ist festgestellt worden, daß diese Anordnung eine geringe Vergeudung von Buszyklen ergab. Die exakte Anzahl von Wiederversuchen ist jedoch ein Parameter, der nur die maximale Wartezeit und die maximale Vergeudung an Busbandbreite beeinflußt. Er beeinflußt nicht die funktionalen Eigenschaften des Busses, solange die Zählung kleiner als eine sehr hohe Zahl ist.
- Das Signal in dem Punkt (c) zeigt die Abgabe eines Signals -B.REQOUT aus diesem Modul an, und es wird an einen Eingang einer UND-Schaltung 230 angelegt. Ein Signal I.BUSY wird durch die interne Schaltungsanordnung des Moduls zu der Zeit abgegeben, zu der eine Bustransaktion benötigt wird. Der Buskoppler geht in einen logischen Besetztzustand, bis die Transaktion vollendet worden ist, ungeachtet der Anzahl von Wiederversuchen, die benötigt werden könnte. Das Signal I.BUSY ist gewöhnlich dasselbe Signal, das Wartezustände für den auf der Platine befindlichen Prozessor während der Zeit erzeugen würde, während der die Transaktion wartete, obgleich das nicht der Fall zu sein braucht. Eine Schaltung (nicht gezeigt) wird das Abgeben des Signals I.BUSY beenden, nachdem eine vorbestimmte Zahl von Taktzyklen aufgetreten ist, z. B. 512. Das Verstreichen dieser Zahl von Taktimpulsen zeigt im allgemeinen einen Versuch an, ein nicht richtig funktionierendes Ziel zu adressieren, welches die Leseanforderung akzeptiert, aber niemals eine Antwort erzeugt hat.
- Das erste Flipflop 220 wird bei dem Taktzustandssignal B1 gesetzt, während welchem dieser Modul eine Anforderung für irgendeine Transaktion abgibt, wie es durch das Signal aus der UND-Schaltung 230 angezeigt wird. Der Wrap-around-Signalweg von dem Q-Quer-Ausgang des Flipflops 220 zu dem übersteuernden Setzeingang bewirkt, daß das Flipflop 220 gesetzt bleibt, bis der Modul auf nicht besetzt geht, d. h. die Negation von I.BUSY, was erfolgen wird, wenn die Transaktion erfolgreich vollendet worden ist. Die Torschaltung 232 kombiniert das Q-Ausgangssignal des Flipflops 220 mit einem Signal, welches die Inversion des Signals in dem Punkt (c) aufgrund der Effekte des Inverters 234 ist. Da das Signal, das von dem Flipflop 180 (Fig. 16A) stammt, in dem Punkt (c) negiert wird, sobald der Modul Busmaster wird, wird, ungeachtet dessen, ob eine erfolgreiche Vollendung einer Transaktion erfolgt oder ob es einfach ein versuchter Wiederversuch ist, das Flipflop 222 bei dem Taktzustandssignal B1 gesetzt, sobald der Modul Busmaster während einer Transaktion einmal geworden ist. Das Flipflop 222 hat einen Wrap-around-Rückkopplungsweg, um sich selbst zu setzen. Die Torschaltung 236 verknüpft die abgegebenen Signale in dem Punkt (c) mit dem Q-Ausgangssignal aus dem Flipflop 222, so daß bei der nächsten Abgabe einer Busanforderung das Flipflop 224 gesetzt wird. Die zweite Abgabe einer Anforderung wird nur vorhanden sein, wenn ein Besetztsignal noch durch den Adreßresponder abgegeben wurde und deshalb ein Wiederversuch notwendig war. Das Signal -B.RDY gestattet dem Wiederversuch vonstatten zu gehen. Deshalb zeigt das Flipflop 224 an, daß der erste Wiederversuch (zweiter Versuch) dieser Transaktion begonnen hat. Bei der Negation des zweiten Busanforderungssignals, welche durch das Signal in dem Punkt (c) angezeigt wird, wird das Flipflop 226 gesetzt, was anzeigt, daß die tatsächliche Busmeisterschaft für den ersten Wiederversuch aufgetreten ist. Da die einzige Bedingung, unter welcher eine weitere Anforderung vorhanden sein könnte, während Besetzt kontinuierlich weiterhin abgegeben wird, nachdem das Flipflop 226 bereits gesetzt ist, ist, ob der erste Wiederversuch nicht erfolgreich vollendet wurde und ein zweiter Wiederversuch notwendig ist, zeigt das Signal in dem Punkt (c) an der UND- Schaltung 240 an, daß ein zweiter Wiederversuch notwendig ist und daß die Abgabe von -B.RDY dem zweiten Wiederversuch zu beginnen gestattet. Das Flipflop 228 wird gesetzt, welches wieder für die Dauer des Besetztzustands gesetzt bleibt und sein Q-Ausgangssignal an eine der Eingangsklemmen der Torschaltung 218 anlegt.
- Die Tatsache, daß ein zweiter Wiederversuch notwendig ist und daß das Abgeben von -B.RDY gestattet, daß ein zweiter Wiederversuch beginnt, führt zum Setzen des Flipflops 228, welches das Q-Ausgangssignal an die Torschaltung 218 für die Dauer des Besetztzustands anlegt. Die Bedingung in bezug auf -B.RDY wird durch die UND/ODER/INVERT-Torschaltung 174 (Fig. 16A) geklärt, was dazu führt, daß das Flipflop 180 zu einer Zeit gesetzt wird, wenn das Flipflop 226 bereits gesetzt ist. Demgemäß wird die Torschaltung 240 bei dem nächsten Bustaktzustandssignal B1 in den H-Zustand gehen, das Flipflop 228 wird gesetzt, und das Signal aus dem Q-Ausgang des Flipflops 228 wird durch die ODER-Schaltung 218 und die NOR-Schaltung 214 geleitet, um zur Abgabe von - B.PEND zu führen. Ab dieser Zeit und bis der Modul die Transaktion erfolgreich vollendet, wird -B.PEND abgegeben bleiben. Das Abgeben von -B.PEND wird alle anschließenden Initiatoren daran hindern, eine Busanforderung zu beginnen, und da schließlich alle anhängigen Antworten vollendet sein werden, wird die Busmeisterschaft schließlich durch diesen Modul garantiert. In den meisten Fällen wird der zweite Wiederversuch erfolgreich sein, und deshalb wird diese redundante Abgabe von -B.PEND einen minimalen, wenn überhaupt einen Einfluß auf den Busdurchsatz haben. Wenn jedoch der zweite Wiederversuch fehlschlägt, wird -B.PEND jede weitere Initiatoraktivität daran hindern, den bezeichneten Responder zu veranlassen, wieder besetzt zu werden, und deshalb ist bei dem folgenden Empfang des Signals -B.RDY, also des dritten Wiederversuchssignals, dieser Modul bei seiner Transaktion garantiert erfolgreich. Eine obere Grenze wird deshalb festgelegt, wie lange irgendein Initiatormodul ungeachtet der Busaktivität oder der Störung zwischen Moduln warten kann. Er tut dies auf eine Weise, die im normalen Betrieb die verfügbare Bandbreite des Busses nicht reduziert, und ist somit ein sehr brauchbares Merkmal. In den meisten Fällen wird die Funktionalität der Schaltungsanordnung, welche durch die Flipflops 220, 222, 224, 226 und 228 gebildet wird, wahrscheinlich nicht benötigt, sofern es nicht eine sehr hohe Busbelastung gibt.
- Die Schaltungsanordnung eines typischen Responderarbiters 162 (Fig. 2) ist kollektiv durch die Fig. 16D, 16B und 16C gezeigt. Fig. 16D ist in den Punkten (a) und (b) mit ähnlichen Punkten in Fig. 16B verbunden. Fig. 16E ist mit Punkten (d) und (b) in Fig. 16B verbunden.
- In Responderarbitern werden nur Antworten initiiert, und diese Tatsache wird durch das Abgeben eines Signals I.RESP dargestellt, welches anzeigt, daß ein Responder wünscht, den Bus zu verlangen. Das Signal I.RESP wird an ein Flipflop 242 angelegt, welches bei dem Buszustandstaktsignal B0 gesetzt wird und dessen Q-Quer-Ausgangssignal an eine Eingangsklemme einer NOR-Schaltung 244 angelegt wird, wie es in Fig. 16D gezeigt ist. Da Responder nicht an dem Blockieren von Anforderungen aufgrund der Abgabe von - B.PEND teilnehmen, ist das Signal -B.PEND nicht eines von den Signalen, die an die NOR-Schaltung 244 angelegt werden. Ebenso, -B.RDY wird nicht an einen Responderarbiter angelegt, weil Responderarbiter ihre Anforderungen bei dem Auftreten eines Signals -B.RDY nicht rückgängig machen. Weiter, Bereit-Warten-Signale (I.RDYWT - Fig. 16A) werden nicht berücksichtigt, weil Antworten aus Respondern nicht wiederversucht werden. Demgemäß sind die einzigen Eingangssignale der NOR-Schaltung 244 das Q-Quer-Ausgangssignal aus dem Flipflop 242 und das Q-Quer-Ausgangssignal aus dem Flipflop 180. Die Flipflops 176 und 180 in Fig. 16D haben dieselbe Funktion, die zuvor in Verbindung mit Fig. 16A beschrieben worden ist. Demgemäß verzögern Responderarbiter nicht das Abgeben von Busanforderungen aufgrund von -B.PEND und machen nicht Busanforderungen aufgrund der Abgabe von - B.RDY rückgängig und machen keinen Wiederversuch, da Antwortzyklen niemals ein besetztes Ziel antreffen.
- Die Funktion des Schaltungsteils, der in Fig. 16B gezeigt ist, ist so, wie es oben in Verbindung mit einem Initiatorarbiter beschrieben worden ist.
- Die Funktion des Schaltungsteils, der in Fig. 16E gezeigt ist, ist beträchtlich vereinfacht. Da Responder nicht wiederversuchen, ist kein Grund vorhanden, die Busmeisterschaft in bezug auf einen Responder zu beschränken oder zu begrenzen. Demgemäß arbeiten das Flipflop 216 und die NOR- Schaltung 214 in Fig. 16E so, wie es in Verbindung mit ähnlichen Elementen in Fig. 16C beschrieben worden ist. Da es keine Begrenzung oder Beschränkung in bezug auf Wiederversuche in einem Respondermodul gibt, wird das Q-Ausgangssignal aus dem Flipflop 216 direkt an einen Eingang der NOR- Schaltung 214 angelegt.
- Eine Anzahl von wesentlichen Verbesserungen ist als Ergebnis der vorliegenden Erfindung verfügbar. Die Art und die Einzelheiten dieser Verbesserungen sind oben mit einem Grad an Spezifizität beschrieben worden. Es dürfte jedoch klar sein, daß die Beschreibung ein bevorzugtes Beispiel betrifft und daß die Erfindung selbst durch die beigefügten Ansprüche definiert wird.
Claims (22)
1. Computersystem mit einer Vielzahl von Moduln (52, 54,
56, 58) und einer Buseinrichtung (50), die mit allen Moduln
gemeinsam verbunden ist, zum Leiten von
Informationssignalen zwischen den Moduln auf einer synchronen
Transaktionsteilungsbasis,
wobei jeder Modul eine Einrichtung (64) aufweist zum
Übertragen von Informationssignalen als einen Transfer über die
Buseinrichtung (50) und währenddessen als ein Mastermodul
arbeitet,
wobei jeder Modul außerdem eine Einrichtung (66) aufweist
zum Empfangen des Transfers von Informationssignalen aus
der Buseinrichtung (50) und währenddessen als ein
Slavemodul arbeitet,
wobei eine vorbestimmte Anzahl weniger als die gesamte
Vielzahl von Moduln (52, 54, 56, 58) eine Einrichtung
aufweist zum Initiieren eines Transfers über die
Buseinrichtung (50) aufgrund von exogen oder intern erzeugten
Ereignissen und dadurch als ein Initiatormodul (60) arbeitet,
wobei jeder Modul der anderen als der Initiatormoduln (60)
eine Einrichtung aufweist zum Übertragen eines Transfers
auf der Buseinrichtung (50) nur aufgrund eines vorherigen
Transfers, der durch einen Initiatormodul (60) übertragen
worden ist, und dadurch als ein Respondermodul (62)
arbeitet,
einer Einrichtung (164), die jedem Modul zugeordnet ist, um
jedem Modul eine vorbestimmte Priorität zuzuordnen, wobei
die Prioritäten jedes Moduls voneinander verschieden sind,
wobei jeder Respondermodul (62) eine höhere Priorität als
irgendein Initiatormodul (60) hat, einer Einrichtung (176,
180), die jedem Modul zugeordnet ist, um ein
Anforderungssignal (-B.REQOUT) abzugeben, das die vorbestimmte
Priorität dieses Moduls anzeigt, wenn dieser Modul wünscht, ein
Mastermodul zu werden, um einen Transfer über die
Buseinrichtung (50) zu übertragen, und
einer Arbitrationseinrichtung (160, 162), die mit der
Buseinrichtung verbunden ist und auf die Anforderungssignale
(-B.REQOUT) anspricht und während einer Vielzahl von
sequentiellen Arbitrationszeitperioden jeweils operativ ist,
um festzustellen, welchen Moduln von der Vielzahl von
Moduln (52, 54, 56, 58), die Anforderungssignale (-B.REQOUT)
abgeben, exklusiver Zugriff auf die Buseinrichtung (50) als
ein Mastermodul für eine vorbestimmte Zeitperiode zu
gewähren ist, um einen Transfer zu einem adressierten Slavemodul
zu übertragen,
dadurch gekennzeichnet, daß die Arbitrationseinrichtung in
Kombination aufweist:
eine Einrichtung, die jedem Respondermodul (62) zugeordnet
ist, um ein Wiederversuchssignal (-B.RET) abzugeben, wenn
ein Versuch durch einen Initiatormodul (60) erkannt wird,
einen Transfer zu dem einen Respondermodul (62) zu
übertragen, während dieser eine Respondermodul (62) besetzt ist
und einen früher übertragenen Transfer verarbeitet, wobei
jeder Respondermodul, der ein Wiederversuchssignal abgibt,
zu einem besetzten Respondermodul (62) wird;
eine Einrichtung (174A, 176, 182), die jedem Initiatormodul
(60) zugeordnet ist, welcher erfolglos versucht hat, zu
einem besetzten Respondermodul zu übertragen, um das
Wiederversuchssignal (-B.RET) zu erkennen, das durch den
besetzten Respondermodul abgegeben wird, wobei jeder
Initiatormodul, der das Wiederversuchssignal (-B.RET)
erkennt, zu einem wartenden Initiatormodul (60) wird, wobei
jeder wartende Initiatormodul von der Arbitration für den
Buszugriff temporär ausgeschlossen wird,
eine Einrichtung, die jedem besetzten Respondermodul (62)
zugeordnet ist, um ein Bereitsignal (-B.RDY) abzugeben,
wenn der besetzte Respondermodul nach Vollendung der
Verarbeitung des früher übertragenen Transfers aufhört besetzt
zu sein;
eine Einrichtung (174C, 176, 180), die jedem wartenden
Initiatormodul (60) zugeordnet ist, um sein
Anforderungssignal (-R.REQOUT) bei Empfang des Bereitsignals (-B.RDY)
anzugeben;
eine Einrichtung (174B, 174C, 174D), die jedem
Initiatormodul (60) zugeordnet ist, welcher ein nichtwartender
Initiatormodul ist, um bei Empfang des Bereitsignals (-B.RDY)
jedes Anforderungssignal (-B.REQOUT) aufzuheben, das er
abgegeben haben kann, um wartenden Initiatormoduln in der
Reihenfolge ihrer vorbestimmten Prioritäten gegenüber
nichtwartenden Initiatormoduln (60) den Vortritt zu lassen;
und
eine Einrichtung (186, 188, 192), die während jeder
vorbestimmten Arbitrationsperiode operativ ist und auf die
Anforderungs- und Bereitsignale anspricht, um erstens
exklusiven Zugriff auf die Buseinrichtung (50) den
Respondermoduln (62), die Anforderungssignale (-B.REQOUT)
abgeben, in der Reihenfolge ihrer vorbestimmten Prioritäten
ohne Rücksicht auf die Abgabe der Anforderungssignale (-
B.REQOUT) aus Initiatormoduln (60) zu gewähren und um
zweitens exklusiven Zugriff auf die Buseinrichtung (50)
wartenden Initiatormoduln (60), die temporär von der Arbitration
für den Buszugriff ausgeschlossen waren und
Anforderungssignale (-B.REQOUT) abgeben, in der Reihenfolge
ihrer vorbestimmten Prioritäten während der vorbestimmten
Arbitrationsperiode zu gewähren, nachdem ein Respondermodul
ein Bereitsignal abgegeben hat, um dadurch wartenden
Initiatormoduln Priorität gegenüber den anderen
Initiatormoduln zu geben.
2. Computersystem nach Anspruch 1, wobei die
Arbitrationseinrichtung dadurch gekennzeichnet ist, daß sie weiter
aufweist:
eine Einrichtung (208, 214, 216, 218), die auf eine
Vielzahl von Anforderungssignalen (-B.REQOUT) anspricht und ein
Anhängigsignal (-B.PEND) bei Empfang von zwei
Anforderungssignalen abgibt, die während einer
Arbitrationsperiode abgegeben werden;
eine Einrichtung (170, 172, 174B, 174D), die jedem
Initiatormodul (60) zugeordnet ist, der nicht zuvor ein
Anforderungssignal (-B.REQOUT) abgegeben hat, und auf die
Abgabe des Anhängigsignal (-B.PEND) hin bewirkt, daß die
Abgabe
seines Anforderungssignals blockiert wird, bis das
Anhängigsignal (-B.PEND) negiert wird; und
eine Einrichtung (186, 188, 192), die während jeder
vorbestimmten Arbitrationsperiode operativ ist und auf die
Anforderungs-, Anhängig- und Bereitsignale hin operativ ist,
um drittens exklusiven Zugriff auf die Buseinrichtung (50),
während das Anhängigsignal (-B.PEND) abgegeben wird,
denjenigen Initiatormoduln, die Anforderungssignale (-B.REQOUT)
während derselben vorbestimmten Arbitrationsperiode
abgegeben haben, in der Reihenfolge der wartenden Initiatoren
zuerst nach der Priorität und dann den nichtwartenden
Initiatoren danach nach der Priorität zu gewähren und um viertens
den anderen nichtwartenden Initiatormoduln (60) auf der
Basis des zeitlichen Vorausgehens ihrer abgegebenen
Anforderungssignale (-B.REQOUT) Priorität zu gewähren, wenn das
Anhängigsignal (-B.PEND) nicht abgegeben wird.
3. Computersystem nach Anspruch 2, wobei die
Arbitrationseinrichtung dadurch gekennzeichnet ist, daß sie
aufweist:
eine Einrichtung (214, 216, 218) zum Aufrechterhalten der
Abgabe des Anhängigsignals (-B.PEND) während der temporären
Aufhebung von Anforderungssignalen (-B.REQOUT) aus
nichtwartenden Initiatormoduln.
4. Computersystem nach Anspruch 3, wobei die
Arbitrationseinrichtung dadurch gekennzeichnet ist, daß sie weiter
aufweist:
eine Einrichtung (196, 198) zum Abgeben eines Haltesignals
(-B.HOLD), wenn ein Modul exklusiven Buszugriff für den
Zweck gewinnt, eine Transaktion auszuführen, die mehr als
eine Busperiode verlangt, um eine Serie von sequentiellen
Transfers auszuführen, und wobei:
die Arbitrationseinrichtung auf das Haltesignal (-B.HOLD)
anspricht und bewirkt, daß bis zur Negation des
Haltesignals (-B.HOLD) verhindert wird, daß einem anderen Modul
exklusiver Buszugriff gewährt wird.
5. Computersystem nach Anspruch 2, wobei die
Arbitrationseinrichtung dadurch gekennzeichnet ist, daß sie weiter
aufweist:
eine Einrichtung (196, 198) zum Abgeben eines Haltesignals
(-B.HOLD), wenn ein Modul exklusiven Buszugriff für den
Zweck gewinnt, eine Transaktion auszuführen, die mehr als
eine Busperiode verlangt, um eine Serie von sequentiellen
Transfers auszuführen, und wobei:
die Arbitrationseinrichtung auf das Haltesignal (-B.HOLD)
anspricht und bewirkt, daß bis zur Negation des
Haltesignals (-B.HOLD) verhindert wird, daß einem anderen Modul
exklusiver Buszugriff gewährt wird.
6. Computersystem nach Anspruch 2, wobei die
Arbitrationseinrichtung dadurch gekennzeichnet ist, daß sie weiter
aufweist:
eine Einrichtung (220, 222, 224, 226, 228) zum Zählen, wie
oft ein Anforderungssignal (-B.REQOUT) durch einen
wartenden Initiatormodul abgegeben wird, bevor er erfolgreich ist
beim Übertragen des auf die Übertragung wartenden
Transfers, und zum Abgeben des Anhängigsignals (-B.PEND),
nachdem die Zählung eine vorbestimmte Zahl überschritten hat,
und um das Anhängigsignal (-B.PEND) aufrechtzuerhalten, bis
dem wartenden Initiatormodul, dessen Anforderungssignale
gezählt wurden, exklusiver Zugriff auf die Buseinrichtung
(50) gewährt wird.
7. Computersystem nach Anspruch 2, wobei die
Arbitrationseinrichtung dadurch gekennzeichnet ist, daß das
Bereitsignal (-B.RDY) allen wartenden Initiatormoduln (60)
aus jedem Respondermodul (62), der aufhört besetzt zu sein,
zugeführt wird.
8. Computersystem nach Anspruch 2, wobei die
Arbitrationseinrichtung dadurch gekennzeichnet ist, daß die
Einrichtungen zum Abgeben der Anforderungssignale (-B.REQOUT),
zum Abgeben des Anhängigsignals (-B.PEND), zum Abgeben des
Wiederversuchssignals (-B.RET), zum Abgeben des
Bereitsignals
(-B.RDY), zum temporären Aufheben der
Anforderungssignale (-B.REQOUT) und zum Gewähren von exklusivem Zugriff
auf die Buseinrichtung (50) jeweils jedem Modul (60, 62)
zugeordnet sind, der zu dem Modultyp paßt, welcher diese
Signale abgibt.
9. Computersystem nach Anspruch 2, wobei die
Arbitrationseinrichtung dadurch gekennzeichnet ist, daß die
Einrichtungen zum Abgeben der Anforderungssignale (-B.REQOUT),
zum Abgeben des Anhängigsignal (-B.PEND), zum Abgeben des
Wiederversuchssignals (-B.PET), zum Abgeben des
Bereitsignals (-B.RDY), zum temporären Aufheben der
Anforderungssignale (-B.REQOUT) und zum Gewähren von exklusivem Zugriff
auf die Buseinrichtung (50) in jedem Modul (60, 62)
enthalten sind, der zu dem Modultyp paßt, welcher diese Signale
abgibt.
10. Computersystem nach Anspruch 2, wobei die
Arbitrationseinrichtung dadurch gekennzeichnet ist, daß jeder Modul
(60, 62) mit der Buseinrichtung (50) durch eine
Einrichtung, die einen elektrischen Verbinder (164) umfaßt,
verbunden ist, und daß die elektrischen Verbinder (164)
miteinander elektrisch verbunden sind, um die Priorität
jedes Moduls (60, 62) gemäß dem körperlichen Verbinder, mit
dem der Modul verbunden ist, festzulegen.
11. Computersystem nach Anspruch 10, wobei die
Arbitrationseinrichtung dadurch gekennzeichnet ist, daß jedes
Anforderungssignal (-B.REQOUT) aus einem Modul (60, 62)
höherer Priorität zu jedem Modul (60, 62) niedrigerer
Priorität geleitet wird.
12. Computersystem nach Anspruch 2, wobei die
Arbitrationseinrichtung dadurch gekennzeichnet ist, daß sie weiter
aufweist:
eine Einrichtung (108, 109), die jedem Slavemodul
zugeordnet ist und auf den Transfer von Informationssignalen
anspricht, um ein Statussignal zu liefern, das den Status
des Transfers durch den Slavemodul angibt, und wobei:
die Perioden der Buseinrichtung (50) und der
Arbitrationseinrichtung (160, 162) Zeitintervalle mit regelmäßiger
und gleichmäßiger Länge sind, wobei jedes Zeitintervall ein
Buszyklus ist;
die Einrichtungen zum Abgeben der Anforderungs-, Bereit-
und Wiederversuchssignale (-B.REQOUT, -B.RDY, -B.RET) diese
in vorbestimmten Punkten in jedem Buszyklus abgeben;
die Einrichtung (160, 162) zum Arbitrieren des exklusiven
Buszugriffes das während eines einzelnen Buszyklus tut;
der erste Transfer von Informationssignalen über die
Buseinrichtung (50) in einem Buszyklus durch den Mastermodul
erfolgt, dessen exklusiver Zugriff auf die Buseinrichtung
(50) in dem unmittelbar vorhergehenden Zyklus festgelegt
wurde; und
die Einrichtung (108, 109) zum Liefern des Statussignals
dieses in dem Buszyklus nach dem einen Zyklus liefert, in
welchem der Transfer von Informationssignalen erfolgt.
13. Computersystem nach Anspruch 12, wobei die
Arbitrationseinrichtung dadurch gekennzeichnet ist, daß die
synchrone Transaktionsteilungsbasis des Leitens von
Informationssignalen während aufeinanderfolgenden Buszyklen
auftritt, und wobei die Informationssignale, die in einer
Anforderung für eine Lesetransaktion übertragen werden, in
einem Buszyklus übertragen werden, welcher um wenigstens
einen vollständigen Buszyklus von dem Buszyklus getrennt
ist, in welchem die Leseinformation zurückübertragen wird.
14. Computersystem nach Anspruch 2, wobei die
Arbitrationseinrichtung dadurch gekennzeichnet ist, daß die Perioden
der Buseinrichtung (50) und der Arbitrationseinrichtung
(160, 162) Zeitintervalle mit regelmäßiger, gleichmäßiger
Länge sind, wobei jedes Zeitintervall ein Buszyklus ist;
wobei die Informationssignale einen Befehl für eine
Lese/Modifizier-/Schreiboperation enthalten, welcher einen
Speicher (56) eines Respondermoduls (62) veranlaßt, die
ursprünglichen Daten an einem besonderen Speicherplatz
funktional
zu lesen und vorbestimmte Daten in den Platz
einzuschreiben und die ursprünglichen Daten zurück in den Modul
zu schreiben, der den Lese-/Modifizier-/Schreibbefehl
abgibt; und weiter mit:
einer Einrichtung zum Ausführen einer vorbestimmten Test-
und Setzoperation an einer vorbestimmten Stelle in einem
Speicher (56) eines Respondermoduls (62) durch Übertragen
eines Lese-/Modifizier-/Schreibbefehls aus einem
Initiatormodul (60) zu dem Speicher des Respondermoduls (62) in
einem Buszyklus; und wobei
der Speicher (56) des Respondermoduls (62) eine Einrichtung
enthält zum Ausführen des Lese-/Modifizier-/Schreibbefehls
und zum Zurückübertragen der ursprünglichen Daten während
eines Buszyklus im Anschluß an den einen Zyklus.
15. Computersystem nach Anspruch 14, wobei die
Arbitrationseinrichtung dadurch gekennzeichnet ist, daß wenigstens
ein Respondermodul (62), an den die Test- und Setzoperation
adressiert ist, einen Cachespeicher enthält, der eine
Kohärenzlogik hat, und daß die Einrichtung (160, 162) zum
Arbitrieren des exklusiven Buszugriffes weiter einen Null
zustand über die Buseinrichtung (50) in dem Buszyklus
verhängt, welcher dem Buszyklus als nächster unmittelbar
folgt, in welchem der Befehl für eine
Lese-/Modifizier/Schreiboperation zu dem Cachespeicher übertragen wurde, um
der Koheränzlogik des Cachespeichers Zeit zum Arbeiten zu
geben.
16. Computersystem nach Anspruch 2, wobei wenigstens ein
Initiatormodul einen Prozessor (52) enthält, wenigstens ein
Respondermodul einen Speicher (56) enthält und die
Buseinrichtung (50) die Moduln (60, 62) miteinander verbindet,
dadurch gekennzeichnet, daß die Arbitrationseinrichtung
weiter eine Einrichtung (74, 76) aufweist zum Festlegen von
Buszyklen, während welchen separate Transfers von
Informationssignalen zwischen den Moduln (60, 62) übertragen
werden, und eine Einrichtung (160, 162) zum Arbitrieren des
exklusiven Zugriffes auf den Bus (50), um ausgewählte
Kommunikationswege
zwischen einem ausgewählten Initiator (60)
und einem Responder (62), der durch den ausgewählten
Initiator (60) adressiert wird, festzulegen;
wobei das Computersystem weiter eine Einrichtung enthält
zum Ausführen von Test- und Setzoperationen in dem Speicher
(56), die eine Einrichtung (104, 108) umfaßt zum Übertragen
eines Befehls für eine Lese-/Modifizier-/Schreiboperation
zu dem Speicher (56) während eines Buszyklus;
wobei der Speicher (56) weiter eine Einrichtung (106, 109)
enthält zum Ausführen einer
Lese-/Modifizier/Schreiboperation auf den Lese-/Modifizier-/Schreibbefehl
hin, um die ursprünglichen Daten an einem adressierten
Speicherplatz zu lesen und vorbestimmte Daten in den
adressierten Platz einzuschreiben und die ursprünglichen Daten
zurückzuschreiben, wobei das Zurückschreiben der
ursprünglichen Daten während eines an den einen Buszyklus
anschließenden Buszyklus erfolgt, und
wobei die Busarbitrationseinrichtung (160, 162) die
Kommunikation über den Bus (50) für einen Buszyklus nach dem
einen Buszyklus blockiert, um dem Speicher (56) zu
gestatten, die vorbestimmten Daten in den adressierten Platz
während der Lese-/Modifizier-/Schreiboperation
einzuschreiben, ohne durch einen anderen Befehl adressiert zu
werden, nachdem die vorbestimmten Daten in den adressierten
Speicherplatz eingeschrieben worden sind.
17. Computersystem nach Anspruch 16, dadurch
gekennzeichnet, daß die Arbitrationseinrichtung (160, 162) einen
Nullkommunikationszustand auf dem Bus (50) während des nächsten
Buszyklus erzeugt, der dem einen Buszyklus unmittelbar
folgt.
18. Computersystem nach Anspruch 16, dadurch
gekennzeichnet, daß das Computersystem außerdem eine Einrichtung (104)
enthält zum Liefern von Signalen (B.BE 3-0) über den Bus
(50), die vorbestimmte Bytes von Daten angeben, welche für
Computeroperationen im Zusammenhang mit einem Transfer
dieser Daten freigegeben werden, und wobei der Speicher (56)
weiter eine Einrichtung (109) enthält zum Korrigieren von
Fehlern in den ursprünglichen Daten, die in den
Speicherplätzen enthalten sind; und weiter eine Einrichtung zum
Ausführen eines Speicherreinigungsvorganges als eine
spezielle Version einer Test- und Setzoperation, die eine
Einrichtung (106) umfaßt, welche dem Speicher (56) zugeordnet
ist und die Bytefreigabesignale (B.BE 3-0) empfängt, um zu
veranlassen, daß fehlerkorrigierte ursprüngliche Daten
zurück in den adressierten Speicherplatz geschrieben werden,
statt die vorbestimmten Daten beim Ausführen der
Lese/Modifizier-/Schreiboperation zurückzuschreiben.
19. In einem Computersystem mit einer Vielzahl von Moduln
(52, 54, 56, 58) und einer Buseinrichtung (50), die mit
sämtlichen Moduln gemeinsam verbunden ist, zum Leiten von
Informationssignalen zwischen den Moduln auf einer
Synchrontransaktionsteilungsbasis,
wobei jeder Modul eine Einrichtung (64) aufweist zum
Übertragen von Informationssignalen als einen Transfer über die
Einrichtung (50) und währenddessen als ein Mastermodul
arbeitet,
wobei jeder Modul außerdem eine Einrichtung (66) enthält
zum Empfangen des Transfers von Informationssignalen aus
der Buseinrichtung (50) und währenddessen als ein
Slavemodul arbeitet,
wobei eine vorbestimmte Zahl weniger als alle der Vielzahl
von Moduln eine Einrichtung aufweist zum Initiieren eines
Transfers über die Buseinrichtung (50) aufgrund von exogen
oder intern erzeugten Ereignissen und dadurch als ein
Initiatormodul (60) arbeitet,
wobei jeder Modul der Vielzahl von anderen als den
Initiatormoduln (60) eine Einrichtung aufweist zum Übertragen
eines Transfers auf der Buseinrichtung (50) nur aufgrund
eines vorherigen Transfers, der durch einen Initiatormodul
(60) übertragen worden ist, und dadurch als ein
Respondermodul (62) arbeitet,
eine Einrichtung (164) jedem Modul zugeordnet ist, um jedem
Modul eine vorbestimmte Priorität zuzuordnen, wobei die
Prioritäten jedes Moduls voneinander verschieden sind,
wobei jeder Respondermodul (62) eine höhere Priorität als
irgendein Initiatormodul (60) hat, wobei eine Einrichtung
(176, 180) jedem Modul zugeordnet ist, um ein
Anforderungssignal (-B.REQOUT) abzugeben, das die vorbestimmte
Priorität dieses Moduls angibt, wenn dieser Modul wünscht, ein
Mastermodul zu werden, um einen Transfer über die
Buseinrichtung (50) zu übertragen, und
eine Arbitrationseinrichtung (160, 162) mit der
Buseinrichtung verbunden ist und auf die Anforderungssignale
(-B.REQOUT) anspricht und während jeder von einer Vielzahl
von sequentiellen Arbitrationszeitperioden operativ ist, um
festzustellen, welchem der Vielzahl von Moduln (52, 54, 56,
58), die Anforderungssignale (-B.REQOUT) abgeben,
exklusiver Zugriff auf die Buseinrichtung (50) als einem
Mastermodul für eine vorbestimmte Zeitperiode zu gewähren ist, um
einen Transfer zu einem adressierten Slavemodul zu
übertragen, dadurch gekennzeichnet, daß die
Arbitrationseinrichtung in Kombination aufweist:
eine Einrichtung (208, 214, 216, 218), die auf eine
Vielzahl von Anforderungssignalen (-B.REQOUT) aus
Initiatormoduln (60) anspricht, um bei Empfang von zwei
Anforderungssignalen (-B.REQOUT), die während einer
Arbitrationsperiode abgegeben werden, ein Anhängigsignal (-B.PEND)
abzugeben;
eine Einrichtung (170, 172, 174B, 174D), die jedem
Initiatormodul (60) zugeordnet ist, der nicht früher ein
Anforderungssignal (-B.REQOUT) abgegeben hat, und auf die
Abgabe des Anhängigsignals (-B.PEND) hin bewirkt, daß die
Abgabe seines Anforderungssignals blockiert wird, bis das
Anhängigsignal (-B.PEND) negiert wird;
eine Einrichtung (176, 180), die jedem Respondermodul (62)
zugeordnet ist, um sein Anforderungssignal (-B.REQOUT) ohne
Rücksicht auf die Abgabe des Anhängigsignals (-B.PEND)
abzugeben;
eine Einrichtung (186, 188, 192), die während jeder
vorbestimmten Arbitrationsperiode operativ ist und auf die
Anforderungs- und Anhängigsignale anspricht, um erstens
exklusiven Zugriff auf die Buseinrichtung (50)
Respondermoduln (62), die Anforderungssignale (-B.REQOUT) abgeben,
in der Reihenfolge ihrer vorbestimmten Prioritäten ohne
Rücksicht auf die Abgabe des Anhängigsignals oder von
Anforderungssignalen aus Initiatormoduln (60) zu gewähren,
und um zweitens exklusiven Zugriff auf die Buseinrichtung
(50) jedem einer Vielzahl von Initiatormoduln (60), die
Anforderungssignale (-B.REQOUT) abgeben, während der einen
Arbitrationsperiode in der Reihenfolge ihrer vorbestimmten
Prioritäten zu gewähren, bis allen Initiatormoduln (60),
die Anforderungssignale (-B.REQOUT) abgeben, während der
einen Arbitrationsperiode exklusiver Zugriff auf den Bus
gewährt wird, und bevor Anforderungssignale von
irgendwelchen anderen Initiatormoduln (60) abgegeben werden.
20. Computersystem nach Anspruch 19, wobei die
Arbitrationseinrichtung dadurch gekennzeichnet ist, daß sie weiter
aufweist:
eine Einrichtung (196, 198) zum Abgeben eines Haltesignals
(-B.HOLD), wenn ein Modul exklusiven Buszugriff für den
Zweck gewinnt, eine Transaktion auszuführen, die mehr als
eine Busperiode verlangt, um eine Reihe von sequentiellen
Transfers auszuführen, und wobei:
die Arbitrationseinrichtung (160, 162) auf das Haltesignal
(-B.HOLD) anspricht und bewirkt, daß bis zur Negation des
Haltesignals verhindert wird, daß einem anderen Modul
exklusiver Buszugriff gewährt wird.
21. Computersystem nach Anspruch 19, wobei die
Arbitrationseinrichtung dadurch gekennzeichnet ist, daß die Perioden
der Buseinrichtung (50) und der Arbitrationseinrichtung
(160, 162) Zeitintervalle mit regelmäßiger und
gleichmäßiger Länge sind, wobei jedes Zeitintervall ein Buszyklus
ist;
die Einrichtung (208, 214, 216, 218) zum Abgeben des
Anhängigsignals (-B.PEND) das Anhängigsignal einen Buszyklus
operativ negiert; bevor dem letzten Modul der Vielzahl von
(-B.REQOUT) während der einen Arbitrationsperiode abgegeben
haben, exklusiver Zugriff auf die Buseinrichtung (50)
gewährt wird, und
die Initiatormoduln (60), die daran gehindert wurden, ihre
Anforderungssignale (-B.REQOUT) während der Abgabe des
Anhängigsignals (-B.PEND) abzugeben, gleichzeitig ihre
Anforderungssignale während des Buszyklus abgeben, wenn dem
letzten Modul exklusiver Zugriff auf die Buseinrichtung
(50) gewährt wird.
22. Computersystem nach Anspruch 2, wobei die
Arbitrationseinrichtung dadurch gekennzeichnet ist, daß sie weiter
aufweist:
eine Einrichtung (220, 222, 224, 226, 228) zum Zählen, wie
oft ein Anforderungssignal (-B.REQOUT) durch einen
wartenden Initiatormodul abgegeben wird, bevor er beim Übertragen
des auf die Übertragung wartenden Transfers erfolgreich
ist, und zum Abgeben eines Anhängigsignals (-B.PEND),
nachdem die Zählung eine vorbestimmte Zahl überschritten hat;
und
eine Einrichtung (170, 172, 174B, 174D), die jedem
Initiatormodul (60) zugeordnet ist und auf das Anhängigsignal
(-B.PEND) hin bewirkt, daß die Abgabe eines
Anforderungssignals (-B.REQOUT) verhindert wird, bis das
Anhängigsignal negiert wird, wodurch das Abgeben von neuen
Anforderungssignalen (-B.REQOUT) aus Initiatormoduln (60)
verhindert wird, bis dem wartenden Initiatormodul
exklusiver Zugriff auf die Buseinrichtung (50) gewährt wird.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US06/909,773 US4785394A (en) | 1986-09-19 | 1986-09-19 | Fair arbitration technique for a split transaction bus in a multiprocessor computer system |
PCT/US1987/002391 WO1988002150A1 (en) | 1986-09-19 | 1987-09-18 | Arbitration technique for a split transaction bus in a multprocessor computer system |
Publications (2)
Publication Number | Publication Date |
---|---|
DE3788805D1 DE3788805D1 (de) | 1994-02-24 |
DE3788805T2 true DE3788805T2 (de) | 1994-08-04 |
Family
ID=25427808
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE3788805T Expired - Fee Related DE3788805T2 (de) | 1986-09-19 | 1987-09-18 | Prioritaetstechnik für einen zerteilten transaktionsbus in einem multiprozessorrechnersystem. |
Country Status (6)
Country | Link |
---|---|
US (1) | US4785394A (de) |
EP (1) | EP0329664B1 (de) |
AU (1) | AU620318B2 (de) |
CA (1) | CA1294057C (de) |
DE (1) | DE3788805T2 (de) |
WO (1) | WO1988002150A1 (de) |
Families Citing this family (111)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5113494A (en) * | 1987-02-27 | 1992-05-12 | Eastman Kodak Company | High speed raster image processor particularly suited for use in an image management system |
DE3706734C1 (de) * | 1987-03-02 | 1988-03-17 | Force Computers Gmbh | Verfahren zur UEbertragung von Daten sowie Computer |
US5029111A (en) * | 1987-04-29 | 1991-07-02 | Prime Computer, Inc. | Shared bit-plane display system |
US5193197A (en) * | 1987-09-24 | 1993-03-09 | Digital Equipment Corporation | Apparatus and method for distributed dynamic priority arbitration for access to a shared resource |
US5587962A (en) * | 1987-12-23 | 1996-12-24 | Texas Instruments Incorporated | Memory circuit accommodating both serial and random access including an alternate address buffer register |
US5093807A (en) | 1987-12-23 | 1992-03-03 | Texas Instruments Incorporated | Video frame storage system |
IL89355A0 (en) * | 1988-02-24 | 1989-09-10 | Ardent Computer Corp | Method and apparatus for controlling access to a system bus |
US5349690A (en) * | 1988-05-11 | 1994-09-20 | Digital Equipment Corporation | Fair arbitration scheme for arbitrating between multiple nodes in a computer system seeking control of a common bus |
US5005120A (en) * | 1988-07-29 | 1991-04-02 | Lsi Logic Corporation | Compensating time delay in filtering signals of multi-dimensional reconvigurable array processors |
JPH02128267A (ja) * | 1988-11-09 | 1990-05-16 | Fujitsu Ltd | 共有メモリによる通信方式 |
US5203007A (en) * | 1988-12-30 | 1993-04-13 | International Business Machines Corporation | Overriding programmable priority and selective blocking in a computer system |
JPH0630094B2 (ja) * | 1989-03-13 | 1994-04-20 | インターナショナル・ビジネス・マシーンズ・コーポレイション | マルチプロセツサ・システム |
US5276818A (en) * | 1989-04-24 | 1994-01-04 | Hitachi, Ltd. | Bus system for information processing system and method of controlling the same |
JPH0387958A (ja) * | 1989-06-30 | 1991-04-12 | Nec Corp | バスロツク制御方式 |
US5113514A (en) * | 1989-08-22 | 1992-05-12 | Prime Computer, Inc. | System bus for multiprocessor computer system |
US5081578A (en) * | 1989-11-03 | 1992-01-14 | Ncr Corporation | Arbitration apparatus for a parallel bus |
EP0514428B1 (de) * | 1990-01-19 | 1999-07-07 | Codex Corporation | Entscheidung zwischen mehreren benutzern bei einem gemeinsamen betriebsmittel |
US5263163A (en) * | 1990-01-19 | 1993-11-16 | Codex Corporation | Arbitration among multiple users of a shared resource |
CA2037491C (en) * | 1990-03-02 | 1998-07-28 | Yuji Shibata | System bus control system in a multi-processor system |
US5243703A (en) * | 1990-04-18 | 1993-09-07 | Rambus, Inc. | Apparatus for synchronously generating clock signals in a data processing system |
US6751696B2 (en) | 1990-04-18 | 2004-06-15 | Rambus Inc. | Memory device having a programmable register |
IL96808A (en) * | 1990-04-18 | 1996-03-31 | Rambus Inc | Introductory / Origin Circuit Agreed Using High-Performance Brokerage |
US6324120B2 (en) | 1990-04-18 | 2001-11-27 | Rambus Inc. | Memory device having a variable data output length |
JPH04119445A (ja) * | 1990-09-11 | 1992-04-20 | Canon Inc | 計算機システム |
US5257356A (en) * | 1991-05-28 | 1993-10-26 | Hewlett-Packard Company | Method of reducing wasted bus bandwidth due to slow responding slaves in a multiprocessor computer system |
US5546587A (en) * | 1991-05-30 | 1996-08-13 | Tandem Computers Incorporated | Decentralized bus arbitration system which continues to assert bus request signal to preclude other from asserting bus request signal until information transfer on the bus has been completed |
US5369748A (en) * | 1991-08-23 | 1994-11-29 | Nexgen Microsystems | Bus arbitration in a dual-bus architecture where one bus has relatively high latency |
US5454082A (en) * | 1991-09-18 | 1995-09-26 | Ncr Corporation | System for preventing an unselected controller from transferring data via a first bus while concurrently permitting it to transfer data via a second bus |
EP0535822B1 (de) * | 1991-09-27 | 1997-11-26 | Sun Microsystems, Inc. | Arbitrierungsverriegelungverfahren und -vorrichtung für einen entfernten Bus |
US5261106A (en) * | 1991-12-13 | 1993-11-09 | S-Mos Systems, Inc. | Semaphore bypass |
CA2080608A1 (en) * | 1992-01-02 | 1993-07-03 | Nader Amini | Bus control logic for computer system having dual bus architecture |
JP3411300B2 (ja) * | 1992-02-18 | 2003-05-26 | 株式会社日立製作所 | 情報処理装置 |
DE69320508T2 (de) * | 1992-03-04 | 1999-03-04 | Motorola, Inc., Schaumburg, Ill. | Verfahren und Gerät zur Busarbitrierungsdurchführung mit einem Arbiter in einem Datenverarbeitungssystem |
USRE39879E1 (en) * | 1992-03-06 | 2007-10-09 | Rambus, Inc. | Method of transferring data by transmitting lower order and upper order memory address bits in separate words with respective op codes and start information |
US5355391A (en) * | 1992-03-06 | 1994-10-11 | Rambus, Inc. | High speed bus system |
WO1993018459A1 (en) * | 1992-03-06 | 1993-09-16 | Rambus Inc. | Prefetching into a cache to minimize main memory access time and cache size in a computer system |
DE4390991T1 (de) * | 1992-03-06 | 1995-02-23 | Rambus Inc | Verfahren und Schaltungsanordnung zum Minimieren der Takt-Daten-Schieflage in einem Bussystem |
US5715407A (en) * | 1992-03-06 | 1998-02-03 | Rambus, Inc. | Process and apparatus for collision detection on a parallel bus by monitoring a first line of the bus during even bus cycles for indications of overlapping packets |
US5392397A (en) * | 1992-03-30 | 1995-02-21 | International Business Machines Corporation | Command execution system for using first and second commands to reserve and store second command related status information in memory portion respectively |
US5301283A (en) * | 1992-04-16 | 1994-04-05 | Digital Equipment Corporation | Dynamic arbitration for system bus control in multiprocessor data processing system |
US5254883A (en) * | 1992-04-22 | 1993-10-19 | Rambus, Inc. | Electrical current source circuitry for a bus |
US5321818A (en) * | 1992-05-12 | 1994-06-14 | Hughes Aircraft Company | System for arbitrating for access on VME bus structures |
USRE38482E1 (en) * | 1992-05-28 | 2004-03-30 | Rambus Inc. | Delay stage circuitry for a ring oscillator |
US5485490A (en) * | 1992-05-28 | 1996-01-16 | Rambus, Inc. | Method and circuitry for clock synchronization |
US5268639A (en) * | 1992-06-05 | 1993-12-07 | Rambus, Inc. | Testing timing parameters of high speed integrated circuit devices |
EP0575651A1 (de) * | 1992-06-24 | 1993-12-29 | International Business Machines Corporation | Mehrprozessorsystem |
US5430848A (en) * | 1992-08-14 | 1995-07-04 | Loral Fairchild Corporation | Distributed arbitration with programmable priorities |
US5553248A (en) * | 1992-10-02 | 1996-09-03 | Compaq Computer Corporation | System for awarding the highest priority to a microprocessor releasing a system bus after aborting a locked cycle upon detecting a locked retry signal |
US5553310A (en) * | 1992-10-02 | 1996-09-03 | Compaq Computer Corporation | Split transactions and pipelined arbitration of microprocessors in multiprocessing computer systems |
GB2273376B (en) * | 1992-12-11 | 1997-03-12 | Sony Corp | Data processing |
US5666515A (en) * | 1993-02-18 | 1997-09-09 | Unisys Corporation | Information processing system having multiple modules and a memory on a bus, where any module can lock an addressable portion of the memory by sending retry signals to other modules that try to read at the locked address |
US5649206A (en) * | 1993-09-07 | 1997-07-15 | Motorola, Inc. | Priority arbitration protocol with two resource requester classes and system therefor |
US5509125A (en) * | 1993-09-29 | 1996-04-16 | Silicon Graphics, Inc. | System and method for fair arbitration on a multi-domain multiprocessor bus |
CA2140685A1 (en) * | 1994-01-28 | 1995-07-29 | Randy M. Bonella | Bus master arbitration circuitry having improved prioritization |
US5471590A (en) * | 1994-01-28 | 1995-11-28 | Compaq Computer Corp. | Bus master arbitration circuitry having improved prioritization |
TW400483B (en) * | 1994-03-01 | 2000-08-01 | Intel Corp | High performance symmetric arbitration protocol with support for I/O requirements |
US5515516A (en) * | 1994-03-01 | 1996-05-07 | Intel Corporation | Initialization mechanism for symmetric arbitration agents |
US6061599A (en) * | 1994-03-01 | 2000-05-09 | Intel Corporation | Auto-configuration support for multiple processor-ready pair or FRC-master/checker pair |
US5533204A (en) * | 1994-04-18 | 1996-07-02 | Compaq Computer Corporation | Split transaction protocol for the peripheral component interconnect bus |
US5535345A (en) * | 1994-05-12 | 1996-07-09 | Intel Corporation | Method and apparatus for sequencing misaligned external bus transactions in which the order of completion of corresponding split transaction requests is guaranteed |
US5598542A (en) * | 1994-08-08 | 1997-01-28 | International Business Machines Corporation | Method and apparatus for bus arbitration in a multiple bus information handling system using time slot assignment values |
CN1191533C (zh) * | 1994-08-31 | 2005-03-02 | 国际商业机器公司 | 用于设备间通信的系统与方法 |
EP0706138A1 (de) * | 1994-10-03 | 1996-04-10 | International Business Machines Corporation | Abwechselnde Datengültigkeitssteuerungssignale für Hochgeschwindigkeitsdatenübertragung |
US5659707A (en) * | 1994-10-07 | 1997-08-19 | Industrial Technology Research Institute | Transfer labeling mechanism for multiple outstanding read requests on a split transaction bus |
US5564114A (en) * | 1995-01-09 | 1996-10-08 | Cirrus Logic Inc. | Method and an arrangement for handshaking on a bus to transfer information between devices in a computer system |
KR0155269B1 (ko) * | 1995-01-16 | 1998-11-16 | 김광호 | 버스 중재방법 및 그 장치 |
US5689660A (en) * | 1995-02-28 | 1997-11-18 | Hewlett-Packard Co. | Enhanced peripheral component interconnect bus protocol |
US5625824A (en) * | 1995-03-03 | 1997-04-29 | Compaq Computer Corporation | Circuit for selectively preventing a microprocessor from posting write cycles |
US5621897A (en) * | 1995-04-13 | 1997-04-15 | International Business Machines Corporation | Method and apparatus for arbitrating for a bus to enable split transaction bus protocols |
US5706446A (en) * | 1995-05-18 | 1998-01-06 | Unisys Corporation | Arbitration system for bus requestors with deadlock prevention |
US5826045A (en) * | 1995-12-11 | 1998-10-20 | Ncr Corporation | Arbitration parking apparatus and method for a split transaction bus in a multiprocessor computer system |
US5943483A (en) * | 1995-12-11 | 1999-08-24 | Lsi Logic Corporation | Method and apparatus for controlling access to a bus in a data processing system |
US5701422A (en) * | 1995-12-13 | 1997-12-23 | Ncr Corporation | Method for ensuring cycle ordering requirements within a hierarchical bus system including split-transaction buses |
US5717872A (en) * | 1996-01-11 | 1998-02-10 | Unisys Corporation | Flexible, soft, random-like counter system for bus protocol waiting periods |
US6009487A (en) * | 1996-05-31 | 1999-12-28 | Rambus Inc. | Method and apparatus for setting a current of an output driver for the high speed bus |
US5954809A (en) * | 1996-07-19 | 1999-09-21 | Compaq Computer Corporation | Circuit for handling distributed arbitration in a computer system having multiple arbiters |
US5928346A (en) * | 1996-09-11 | 1999-07-27 | Hewlett-Packard Company | Method for enhanced peripheral component interconnect bus split data transfer |
US5805836A (en) * | 1996-12-10 | 1998-09-08 | International Business Machines Corporation | Method and apparatus for equalizing grants of a data bus to primary and secondary devices |
US6032178A (en) * | 1998-01-12 | 2000-02-29 | Siemens Aktiengesellschaft | Method and arrangement for data transmission between units on a bus system selectively transmitting data in one of a first and a second data transmission configurations |
DE19810293A1 (de) * | 1998-03-10 | 1999-09-16 | Bayerische Motoren Werke Ag | Betriebsverfahren für einen Datenbus mit mehreren Teilnehmern |
DE19810292A1 (de) | 1998-03-10 | 1999-09-16 | Bayerische Motoren Werke Ag | Datenbus für mehrere Teilnehmer |
US6122692A (en) * | 1998-06-19 | 2000-09-19 | International Business Machines Corporation | Method and system for eliminating adjacent address collisions on a pipelined response bus |
US7013305B2 (en) | 2001-10-01 | 2006-03-14 | International Business Machines Corporation | Managing the state of coupling facility structures, detecting by one or more systems coupled to the coupling facility, the suspended state of the duplexed command, detecting being independent of message exchange |
EP1112539A2 (de) * | 1998-09-18 | 2001-07-04 | Clearspeed Technology Limited | Rechnersystem mit latenzzeit-/toleranten und intoleranten modulen |
US6223244B1 (en) * | 1998-12-10 | 2001-04-24 | International Business Machines Corporation | Method for assuring device access to a bus having a fixed priority arbitration scheme |
JP4412852B2 (ja) * | 1999-04-07 | 2010-02-10 | クレイドル・テクノロジーズ | 無応答検出を備えたグローバルバス同期トランザクション肯定応答 |
US6701398B1 (en) | 1999-04-07 | 2004-03-02 | Cradle Technologies, Inc. | Global bus synchronous transaction acknowledge with nonresponse detection |
US6792495B1 (en) * | 1999-07-27 | 2004-09-14 | Intel Corporation | Transaction scheduling for a bus system |
DE19947657A1 (de) * | 1999-10-04 | 2001-04-12 | Bayerische Motoren Werke Ag | Betriebsverfahren für einen Datenbus für mehrere Teilnehmer mit flexiblem zeitgesteuertem Zugriff |
US6646953B1 (en) | 2000-07-06 | 2003-11-11 | Rambus Inc. | Single-clock, strobeless signaling system |
US7028115B1 (en) * | 2000-10-06 | 2006-04-11 | Broadcom Corporation | Source triggered transaction blocking |
US6889283B2 (en) * | 2001-02-23 | 2005-05-03 | Hewlett-Packard Development Company, L.P. | Method and system to promote arbitration priority in a buffer queue |
US6868469B2 (en) * | 2001-05-31 | 2005-03-15 | Intel Corporation | Data bridge and bridging |
US7028124B2 (en) * | 2001-09-26 | 2006-04-11 | Intel Corporation | Method and apparatus for dual queue head processing of interrupt endpoints |
US6718444B1 (en) | 2001-12-20 | 2004-04-06 | Advanced Micro Devices, Inc. | Read-modify-write for partial writes in a memory controller |
KR100495657B1 (ko) * | 2002-05-03 | 2005-06-16 | 삼성전자주식회사 | 복수의 통신 모드들을 갖는 집적 회로 장치 및 그것의동작 방법 |
US7149824B2 (en) * | 2002-07-10 | 2006-12-12 | Micron Technology, Inc. | Dynamically setting burst length of memory device by applying signal to at least one external pin during a read or write transaction |
DE10234992A1 (de) * | 2002-07-31 | 2004-02-19 | Advanced Micro Devices, Inc., Sunnyvale | Retry-Mechanismus für blockierende Schnittstellen |
US7107375B2 (en) * | 2003-05-13 | 2006-09-12 | Lsi Logic Corporation | Method for improving selection performance by using an arbitration elimination scheme in a SCSI topology |
US7342969B2 (en) * | 2003-07-28 | 2008-03-11 | Intel Corporation | Signaling with multiple clocks |
DE102004004843B4 (de) * | 2004-01-30 | 2010-07-22 | Siemens Ag | Bussystem zur Steuerung einer Komponente einer Druckmaschine und entsprechendes Verfahren |
US20060026329A1 (en) * | 2004-07-30 | 2006-02-02 | Yu James K | System and method for an arbiter rewind |
EP1632854A1 (de) * | 2004-08-23 | 2006-03-08 | Sun Microsystems France S.A. | Verfahren und Vorrichtung zur Benutzung eines seriellen Kabels als Quorum-Gerät in einem Cluster |
EP1748361A1 (de) * | 2004-08-23 | 2007-01-31 | Sun Microsystems France S.A. | Verfahren und Vorrichtung zur Benutzung eines USB-Kabels als Quorum-Gerät in einem Cluster |
US7376771B1 (en) * | 2005-04-13 | 2008-05-20 | Hewlett-Packard Development Company, L.P. | Generic interface for operating modes of modules |
GB2450148A (en) * | 2007-06-14 | 2008-12-17 | Advanced Risc Mach Ltd | Controlling write transactions between initiators and recipients via interconnect logic |
US8984198B2 (en) * | 2009-07-21 | 2015-03-17 | Microchip Technology Incorporated | Data space arbiter |
US8403539B2 (en) | 2010-02-26 | 2013-03-26 | Research In Motion Limited | Light guide for improving device lighting |
US9471522B2 (en) * | 2013-12-04 | 2016-10-18 | International Business Machines Corporation | Resource allocation by virtual channel management and bus multiplexing |
GB2529180B (en) | 2014-08-12 | 2021-07-14 | Advanced Risc Mach Ltd | Arbitration and hazard detection for a data processing apparatus |
US11221795B2 (en) | 2019-02-25 | 2022-01-11 | International Business Machines Corporation | Queue management for multiway queues |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3997896A (en) * | 1975-06-30 | 1976-12-14 | Honeywell Information Systems, Inc. | Data processing system providing split bus cycle operation |
US4038644A (en) * | 1975-11-19 | 1977-07-26 | Ncr Corporation | Destination selection apparatus for a bus oriented computer system |
US4229791A (en) * | 1978-10-25 | 1980-10-21 | Digital Equipment Corporation | Distributed arbitration circuitry for data processing system |
US4263648A (en) * | 1978-12-26 | 1981-04-21 | Honeywell Information Systems Inc. | Split system bus cycle for direct memory access of peripherals in a cathode ray tube display system |
US4300194A (en) * | 1979-01-31 | 1981-11-10 | Honeywell Information Systems Inc. | Data processing system having multiple common buses |
US4373183A (en) * | 1980-08-20 | 1983-02-08 | Ibm Corporation | Bus interface units sharing a common bus using distributed control for allocation of the bus |
US4375639A (en) * | 1981-01-12 | 1983-03-01 | Harris Corporation | Synchronous bus arbiter |
US4375183A (en) * | 1981-01-14 | 1983-03-01 | Lynch William R | Insulated shutter assembly |
US4648030A (en) * | 1983-09-22 | 1987-03-03 | Digital Equipment Corporation | Cache invalidation mechanism for multiprocessor systems |
US5067071A (en) * | 1985-02-27 | 1991-11-19 | Encore Computer Corporation | Multiprocessor computer system employing a plurality of tightly coupled processors with interrupt vector bus |
-
1986
- 1986-09-19 US US06/909,773 patent/US4785394A/en not_active Expired - Fee Related
-
1987
- 1987-09-17 CA CA000547180A patent/CA1294057C/en not_active Expired - Lifetime
- 1987-09-18 DE DE3788805T patent/DE3788805T2/de not_active Expired - Fee Related
- 1987-09-18 AU AU80374/87A patent/AU620318B2/en not_active Ceased
- 1987-09-18 WO PCT/US1987/002391 patent/WO1988002150A1/en active IP Right Grant
- 1987-09-18 EP EP87906623A patent/EP0329664B1/de not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
AU8037487A (en) | 1988-04-07 |
EP0329664A4 (de) | 1989-12-12 |
WO1988002150A1 (en) | 1988-03-24 |
AU620318B2 (en) | 1992-02-20 |
EP0329664B1 (de) | 1994-01-12 |
US4785394A (en) | 1988-11-15 |
CA1294057C (en) | 1992-01-07 |
EP0329664A1 (de) | 1989-08-30 |
DE3788805D1 (de) | 1994-02-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE3788805T2 (de) | Prioritaetstechnik für einen zerteilten transaktionsbus in einem multiprozessorrechnersystem. | |
DE69032481T2 (de) | Buszugriff für Digitalrechnersystem | |
DE3689198T2 (de) | Systembus für Kommunikation zwischen Prozessoren. | |
DE69130106T2 (de) | Arbitrierung von paketvermittelten Bussen, einschliesslich Bussen von Multiprozessoren mit gemeinsam genutztem Speicher | |
DE69228582T2 (de) | Vorrichtung zur Vermeidung von Prozessorblockierungen in einem Multiprozessorsystem | |
DE69108434T2 (de) | Mehrgruppen-Signalprozessor. | |
DE19580707C2 (de) | PCI-ZU-ISA-Interrupt-Protokoll-Konverter und -Auswahlmechanismus | |
DE3851534T2 (de) | Vorrichtung und verfahren zur buszugriffssteuerung. | |
DE68915701T2 (de) | Multiprozessorsystem mit verteilten gemeinsamen Betriebsmitteln und mit Verklemmungsverhinderung. | |
DE3883532T2 (de) | Knoten für die bedienung von unterbrechungsanforderungsnachrichten auf einem anstehenden bus. | |
DE69307717T2 (de) | Priorisierung von mikroprozessoren in multiprozessorrechnersystemen | |
DE3882977T2 (de) | Verfahren und anordnung zur implementierung von mehrverriegelungsanzeigen in einem multiprozessordatenverarbeitungssystem. | |
DE3889366T2 (de) | Interface für ein Rechnersystem mit reduziertem Befehlssatz. | |
US5621897A (en) | Method and apparatus for arbitrating for a bus to enable split transaction bus protocols | |
DE69316022T2 (de) | Steuerungsvorrichtung fuer speicherplattenanordnung mit steuerbloecken fuer steuerungsinformation | |
DE69322248T2 (de) | Reservierung, die den normalen vorrang von mikroprozessoren in multiprozessorrechnersystemen annulliert | |
US4797815A (en) | Interleaved synchronous bus access protocol for a shared memory multi-processor system | |
DE3882991T2 (de) | Anordnung und methode zur erzielung von unterbrechungen mit einem "pended bus". | |
DE3850387T2 (de) | Vorrichtung und verfahren zum zugriff eines knotens auf einen bus. | |
EP0675444B1 (de) | Mehrfacharbitrierungsschema | |
EP0428330A2 (de) | Rechnerschnittstellenschaltung | |
DE3882988T2 (de) | Verfahren und anordnung zur einleitung von vorgängen in einem multiprozessordatenverarbeitungssystem mit verwendung von mehrverriegelungsanzeigen. | |
DE3888353T2 (de) | Unterbrechungsknoten zum vorsehen von unterbrechungsanforderungen auf einem anstehenden bus. | |
DE69111764T2 (de) | Übereinstimmungsprotokolle für Mehrprozessoren mit gemeinsam genutztem Speicher. | |
DE69230483T2 (de) | Quadraturbusprotokoll zum Ausführen von Transaktionen in einer Rechneranordnung |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |