[go: up one dir, main page]

DE19636381C1 - Bus mit anforderungsabhängiger Anpassung der in beiden Richtungen zur Verfügung stehenden Bandbreite - Google Patents

Bus mit anforderungsabhängiger Anpassung der in beiden Richtungen zur Verfügung stehenden Bandbreite

Info

Publication number
DE19636381C1
DE19636381C1 DE19636381A DE19636381A DE19636381C1 DE 19636381 C1 DE19636381 C1 DE 19636381C1 DE 19636381 A DE19636381 A DE 19636381A DE 19636381 A DE19636381 A DE 19636381A DE 19636381 C1 DE19636381 C1 DE 19636381C1
Authority
DE
Germany
Prior art keywords
bus
transmission
lines
data
state
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
Application number
DE19636381A
Other languages
English (en)
Inventor
Gottfried Goldrian
Hans-Werner Tast
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Priority to DE19636381A priority Critical patent/DE19636381C1/de
Priority to US08/712,033 priority patent/US5872944A/en
Priority to JP9235642A priority patent/JPH10105308A/ja
Application granted granted Critical
Publication of DE19636381C1 publication Critical patent/DE19636381C1/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4234Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a memory bus
    • G06F13/4243Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a memory bus with synchronous protocol

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Bus Control (AREA)
  • Small-Scale Networks (AREA)

Description

Die Erfindung betrifft einen Bus zur Übertragung von Information in einem Datenverarbeitungssystem, sowie ein Verfahren zur Übertragung von Information über einen Bus in einem Datenverarbeitungssystem.
Um Informationen zwischen funktionalen Einheiten in einem Datenverarbeitungssystem zu übertragen, sind Bussysteme bekannt, die eine Datenübertragung lediglich in einer Richtung erlauben, sogenannte unidirektionale Busse.
Desweiteren ist bekannt, zwischen zwei funktionalen Einheiten A und B bidirektionale Busse zu verwenden, die zwei mögliche Übertragungsrichtungen aufweisen. Informationen können entweder auf der vollen Bandbreite des Busses von A nach B, oder aber von B nach A übertragen werden. Wenn also eine Informationsübertragung ansteht, muß der Sender zuerst das Senderecht auf dem Bus zugeteilt bekommen, bevor er die Daten übertragen kann.
Dieser Modus ist deshalb für die Übertragung zeitkritischer Commands wenig geeignet, da bis zur Zuteilung des "Right to send" Wartezeiten auftreten. Insbesondere zeitkritisch sind Kurzbefehle zur Synchronisation und zum Timing eines Protokollablaufs.
Man hat deshalb zur Übertragung dieser Befehle eigene Commandbusse sowie eine Vielzahl von Kontroll-Leitungen eingeführt. Dadurch war zwar eine korrekte Übermittlung der Commands unter Beachtung der zeitlichen Limits möglich, allerdings war der Aufwand an Leitungen für einen derartigen Bus erheblich.
Aus der US Patentschrift 4 250 547, "Information Processing Apparatus Capable Of Effecting Parallel Processings By Using A Divided Common Bus" von K. Matsumoto sind ein Bus und ein Datenübertragungsverfahren für einen Bus beschrieben, bei dem ein Bus (22, 23) entweder als für alle Busteilnehmer gemeinsamer Bus mit voller Bitbreite betrieben werden kann, oder dieser Bus in mindestens 2 Gruppen von Übertragungsleitungen geteilt werden kann, die unabhängig voneinander eine Datenübertragung durchführen. Dadurch ist es insbesondere möglich, eine Datenübertragung zwischen peripheren Eingabe-/Ausgabe-Einheiten und dem Hauptspeicher auf der einen Gruppe von Übertragungsleitungen durchzuführen, ohne die Ausführung eines Tasks auf dem an die zweite Gruppe von Übertragungsleitungen gekoppelten Prozessor unterbrechen zu müssen. Eine Verbindung zwischen den verschiedenen Gruppen von Busübertragungsleitungen kann mittels einer Treibereinheit hergestellt werden, so daß die CPU mit Hauptspeicher und Peripherie kommunizieren kann.
Insbesondere in Multiprozessorsystemen, wo viele Prozessoren über Prozessorbusse mit einem gemeinsamen L2-Cache verbunden werden müssen, sind die am L2 verfügbaren Pins knapp. Die Zahl dieser Pins kann aus verbindungstechnischen Gründen nicht beliebig vergrößert werden. Je besser man nun eine hohe Übertragungsbandbreite zwischen Cache und Prozessor mit einer geringen Zahl von Leitungen realisieren kann, desto mehr Prozessoren können an den L2 gekoppelt werden.
Aufgabe der Erfindung ist deshalb, einen Bus zur Verfügung zu stellen, der zum einen zeitkritische Befehle zwischen den Übertragungspartnern unter Beachtung der Zeitlimits übertragen kann, und der zum anderen die zur Verfügung stehenden Busleitungen in Hinblick auf die Übertragungsbandbreite optimal nutzt.
Diese Aufgabe wird erfindungsgemäß durch einen Bus gelöst, der einen ersten Zustand aufweist, in dem die Übertragungsleitungen in zwei Gruppen mit entgegengesetzter Übertragungsrichtung eingeteilt sind, wobei die Übertragungsrichtung mindestens einer Gruppe von Übertragungsleitungen umkehrbar ist, der einen zweiten Zustand aufweist, in dem die Übertragungsrichtung der zwei Gruppen von Übertragungsleitungen übereinstimmt, und der Mittel zum Umschalten des Busses zwischen dem ersten und dem zweiten Zustand aufweist.
Desweiteren wird die Aufgabe durch ein Verfahren gelöst, bei dem die Übertragungsleitungen des Busses in zwei Gruppen eingeteilt werden, und wobei von einem ersten Zustand, in dem die beiden Gruppen entgegengesetzte Übertragungsrichtung aufweisen, zu einem zweiten Zustand, in dem die Übertragungsrichtung der zwei Gruppen von Übertragungsleitungen übereinstimmt, umgeschaltet wird.
Im ersten Zustand des Busses können Befehle in beiden Richtungen verzögerungsfrei übertragen werden. Dadurch wird es möglich, den aufgesplitteten Bus zur Übertragung von Befehlen zu verwenden. Wenn eine Datenübertragung erfolgen soll, ist es möglich, zum zweiten Zustand des Busses überzugehen, bei dem die Übertragungsrichtung beider Gruppen von Busleitungen übereinstimmt. Dadurch können Daten bei Bedarf mit der vollen Bandbreite des Busses übertragen werden. Auf diese Weise ist eine flexible Anpassung der Busbandbreite an die jeweiligen Erfordernisse möglich.
Bei einer weiteren vorteilhaften Ausgestaltung der Erfindung sind die Übertragungsleitungen der einen Gruppe von Übertragungsleitungen bidirektionale Leitungen, deren Übertragungsrichtung umschaltbar ist, und die Übertragungsleitungen der anderen Gruppe von Übertragungsleitungen sind unidirektionale Leitungen, deren Übertragungsrichtung feststeht.
Der Vorteil dieser Ausführungsform ist, daß in einer Richtung des Busses von der halben Busbandbreite auf die volle Busbandbreite übergegangen werden kann. Insofern kann ein vorteilhafter Übertragungsmodus für diejenige Busrichtung vorgesehen werden, in der der Großteil des Datenaustauschs erfolgt. Dadurch, daß eine Bushälfte aus unidirektionalen Leitungen besteht, ist der Hardwareaufwand für die Implementierung dieser Lösung deutlich geringer als bei einem Bus gemäß dem Stand der Technik, bei dem alle Leitungen als bidirektionale Leitungen ausgeführt sein müssen.
Bei einer weiteren vorteilhaften Ausführungsform der Erfindung sind die Übertragungsleitungen beider Gruppen von Übertragungsleitungen bidirektionale Leitungen, deren Übertragungsrichtung umschaltbar ist.
Bei dieser Lösung kann in beiden Busrichtungen ein Übergang von einer Datenübertragung mit halber Bandbreite zu einer Datenübertragung mit voller Bandbreite stattfinden. Dies erlaubt eine besonders flexible Dimensionierung der für die Befehls- und Datenübertragung erforderlichen Bandbreite. Insbesondere in Systemen, in denen sich die zu übertragenden Datenmengen in der einen und der anderen Richtung ungefähr entsprechen, ist diese Lösung von Vorteil.
Bei einer weiteren Ausführungsform der Erfindung ist für die beiden Übertragungsrichtungen jeweils mindestens eine Tagleitung vorhanden, wobei der Status der Tagleitung den Typ der auf dem Bus übertragenen Information spezifiziert.
Auf diese Weise kann auf Empfängerseite eine typspezifische Verarbeitung der übertragenen Information erfolgen. Insbesondere ist es möglich, die empfangene Information sofort in die richtigen Register zu schreiben.
Bei einer weiteren Ausführungsform der Erfindung erfolgt die Umschaltung zwischen dem ersten und dem zweiten Zustand in Abhängigkeit vom Status der Tagleitungen.
Auf diese Art und Weise kann eine Anforderung, die volle Übertragungsbandbreite zugeteilt zu bekommen, zwischen den Partnern der Übertragung schnell übermittelt werden.
Bei einer weiteren Ausführungsform der Erfindung erfolgt die Umschaltung zwischen dem ersten und dem zweiten Zustand in Abhängigkeit von Informationen, die über den Bus übertragen werden.
Bei dieser Ausführungsform können Tagleitungen, die speziell für den Übergang des Busses vom ersten zum zweiten Zustand - und umgekehrt - verantwortlich sind, entfallen. Dadurch werden Pins gespart.
Bei einer weiteren vorteilhaften Ausführungsform findet die Übertragung von Tagsignalen über die Tagleitungen um einen Bruchteil eines Taktzyklus früher statt als die Übertragung der Information über den Bus.
Auf diese Art und Weise wird auf Empfängerseite die zur Verfügung stehende Zeit, um eine typspezifische Verarbeitung der ankommenden Bussignale zu veranlassen, vergrößert. Es ist auf diese Weise auch möglich, eine Vorverarbeitung der ankommenden Information zu veranlassen.
Bei einer weiteren vorteilhaften Ausführungsform der Erfindung wird für den Fall, daß sich der Bus im Grundzustand befindet, daß Information in der einen Übertragungsrichtung übertragen werden soll, daß aber der Bus in der entgegengesetzten Übertragungsrichtung noch aktiv ist, der Übergang vom ersten Zustand in den zweiten Zustand solange aufgeschoben, bis die Busaktivität in der entgegengesetzten Übertragungsrichtung abgeschlossen ist.
Der Vorteil dieser Ausführungsform ist, daß für den Fall, daß die eine Bushälfte noch belegt ist, eine Datenübertragung in Gegenrichtung mit halber Busbandbreite begonnen werden kann, und in dem Moment, in dem die Übertragung auf der Gegenseite abgeschlossen ist, auf die volle Busbandbreite übergegangen werden kann. Dies erlaubt eine sehr flexible Nutzung des Busses.
FIGURENBESCHREIBUNG
Fig. 1 zeigt eine Busstruktur, die aus einem bidirektionalen Datenbus, zwei unidirektionalen Commandbussen, sowie Kontroll-Leitungen in beiden Richtungen besteht.
Fig. 2A stellt die in Fig. 1 gezeigte Busstruktur noch einmal schematisch dar.
Fig. 2B zeigt die erfindungsgemäße Busstruktur, die einen bidirektionalen Bus zur Übertragung von Daten und Befehlen in beide Richtungen sowie Kontroll- bzw. Tag-Leitungen umfaßt.
Fig. 2C zeigt eine Sonderform der erfindungsgemäßen Busstruktur, bei der lediglich eine Bushälfte aus bidirektionalen Leitungen, die andere Bushälfte dagegen aus unidirektionalen Leitungen besteht.
Fig. 3A stellt dar, wie die einzelnen Tag-Leitungen den beiden Bushälften zugeordnet werden können.
Fig. 3B zeigt eine Möglichkeit, wie die auf dem Bus übertragene Information mittels der Tag-Leitungen codiert werden kann.
Fig. 4 zeigt eine technische Realisierung der in Fig. 2B vorgestellten Busstruktur.
Fig. 5 stellt eine technische Lösung für die in Fig. 2C gezeigte Sonderform des erfindungsgemäßen Busses dar.
Fig. 6A zeigt den Ablauf des Befehls "Cache Line Invalidate".
Fig. 6B ist die Response auf diesen Befehl dargestellt.
Fig. 7 stellt den Ablauf des Store-Befehls entsprechend der erfindungsgemäßen Lösung nach Fig. 2B dar.
Fig. 8 zeigt den Ablauf eines Store-Befehls, wenn eine Busstruktur gemäß Fig. 2C realisiert ist.
Fig. 9A zeigt den Ablauf des Fetch-Befehls.
Fig. 9B stellt den Ablauf der Response auf einen Fetch-Befehl sowie die Datenübertragung zur PU dar.
Fig. 10A zeigt die Übertragung des Control-Befehls durch den erfindungsgemäßen Bus.
Fig. 10B stellt die Response auf diesen Control-Befehl dar.
Fig. 11A stellt dar, wie mittels eines Sense-Befehls Information über den Status einer funktionellen Einheit angefordert werden kann.
Fig. 11B zeigt die Response auf einen Sense-Befehl.
Fig. 12 zeigt, wie der Übergang der Busstruktur vom Grundzustand zu einem Zustand voller Bandbreite für den Fall, daß eine Bushälfte noch aktiv ist, aufgeschoben werden kann.
Fig. 13A stellt dar, wie während einer Datenübertragung auf dem erfindungsgemäßen Bus die Übertragung eines OP_IM in der gleichen Richtung eingeschleift werden kann.
Fig. 13B zeigt, wie während einer Datenübertragung auf dem erfindungsgemäßen Bus, welche die gesamte Busbandbreite beansprucht, ein OP_IM in der Gegenrichtung übertragen werden kann.
Die zwischen den funktionalen Einheiten eines Computersystems übertragene Information kann in vier Gruppen gegliedert werden: Das sind zum einen die Befehle, durch die die von einer funktionelle Einheit auszuführenden Operationen spezifiziert werden. Zusammen mit diesen Befehlen werden Daten und Speicheradressen als Operanden der Befehle mit übertragen. Weiterhin existieren Kontrollsignale, mit denen zum einen der Status der an der Datenübertragung beteiligten funktionellen Einheiten mitgeteilt werden kann, zum anderen eine Synchronisation der Datenübertragung erfolgt.
Ein Bussystem in einem Computer muß nun alle vier genannten Informationstypen in beiden Richtungen übertragen können. Als Beispiel für ein derartiges Bussystem ist in Fig. 1 ein Prozessorbus gemäß dem Stand der Technik gezeigt. Dieser Prozessorbus verbindet einen Prozessor mit dem Second-Level-Cache (L2). Der gezeigte Bus ist in drei Segmente aufgeteilt:
in einen Datenbus zur Übertragung von Daten und/oder Adressen, in einen Commandbus zur Übertragung von Befehlen, sowie in Leitungen zur Übertragung von Kontrollinformation.
Der Datenbus ist dabei als bidirektionaler Bus ausgeführt. Dies bedeutet, daß beide an der Datenübertragung beteiligten Partner, der Prozessor und der Second-Level-Cache Chip, im Besitz des Senderechts auf den 64 Datenleitungen (102) sein können. Wenn der Prozessor Daten an den L2 übertragen will, so werden diese Daten zunächst in das Data-Out-Register 100 geschrieben, von wo aus sie - vorausgesetzt, der Prozessor hat das Senderecht - über den Sendetreiber 101, die Busleitungen 102 und den empfangsseitigen Treiber 103 zu den Data-In-Registern 106 auf der Empfängerseite, also auf der Seite des L2, übertragen werden.
Im umgekehrten Fall, wenn also der Second-Level-Cache das Recht zum Senden hat, gelangen die Daten über das Data-Out-Register 110 des L2, den sendeseitigen Treiber 109, die Busleitung 102 und den empfangsseitigen Treiber 108 zum Data-In-Register 111 des Prozessors. Die Verwaltung des Senderechts wird über eine Control Unit 104 vorgenommen, deren Ausgangssignal sowohl den prozessorseitigen Sende- und Empfangstreibern (107, 108), als auch den Sende- und Empfangstreibern (109, 103) auf der Cacheseite zugeführt wird. Je nachdem, welchen Pegel das Ausgangssignal der Control Unit 104 hat, werden entweder die beiden Treiber 101 und 103, oder aber die beiden Treiber 109 und 108 aktiviert. Das Ausgangssignal der Control Unit legt also die Datenübertragungsrichtung auf dem Datenbus fest.
Die Leitungen der beiden Command-Busse dagegen sind unidirektional ausgelegt, d. h., es ist von vornherein festgelegt, welcher der beiden an der Datenübertragung teilnehmenden Partner das Senderecht hat. Zur Übertragung von Commands vom Prozessor zum Second-Level-Cache wird das Command zunächst vom Prozessor in das sendeseitige Command-Register 120 geschrieben. Von dort wird es über die fünf Leitungen (121) des Command-Busses zum Second-Level-Cache übertragen, das ankommende Command wird in das dortige Command-Register 122 geschrieben, von wo aus es weiter verarbeitet werden kann. Entsprechend läuft die Übertragung von Commands vom Second-Level-Cache zum Prozessor ab. Wieder wird das Command zunächst in das sendeseitige Command-Register 123 geschrieben, von dort aus über die unidirektionalen Leitungen 124 zum Prozessor übertragen, und in das prozessorseitige Command-Register 125 geschrieben.
Desweiteren existieren eine ganze Reihe von unidirektionalen Kontroll-Leitungen vom Prozessor zum L2, und auch vom L2 zum Prozessor. So gibt es beispielsweise in beiden Richtungen je eine Kontroll-Leitung "address valid" (130, 138), welche anzeigt, daß auf dem bidirektionalen Bus valide Adreßdaten übertragen werden. In Analogie dazu gibt es in beiden Richtungen je eine Kontroll-Leitung "data valid", die anzeigt, daß die auf dem Bus übertragenen Daten valide sind. Die Übertragung eines Commands über den Command Bus wird angezeigt, indem das jeweilige Kontrollsignal "command valid" (131, 139) gesetzt wird. Desweiteren gibt es in jeder Richtung Request- und Response-Leitungen, Leitungen zum Anzeigen von Übertragungsfehlern, sowie weitere Kontroll-Leitungen, deren Aufgabe es ist, einen korrekten Ablauf des Busprotokolls zu gewährleisten.
Die Kontrollsignale werden vom Prozessor zum L2 übertragen, indem sie vom Prozessor in ein sendeseitiges Kontrollregister 126 geschrieben werden, von dort über eine sendeseitigen Treiber, über die jeweilige unidirektionale Kontroll-Leitung und den empfangsseitigen Treiber zum empfangsseitigen Kontrollregister 133, gelangen, aus dem sie vom L2 ausgelesen werden können. Die Übertragung von Kontrollsignalen vom L2 zum Prozessor verläuft analog.
In Fig. 2A ist die in Fig. 1 beschriebene Buskonfiguration, die dem Stand der Technik entspricht, noch einmal schematisch dargestellt. In Abhängigkeit von den Commands, die auf den beiden unidirektionalen Befehlsbussen 203 und 204 übertragen werden, und vom Status der Kontroll-Leitungen 200 wird das Senderecht auf dem bidirektionalen Daten- und Adreßbus zugeteilt. Für den bidirektionalen Bus gibt es zwei mögliche Zustände. Es seien A und B die beiden durch den bidirektionalen Bus verbundenen funktionalen Einheiten. Im ersten Zustand 201 ist die Einheit A im Besitz des Senderechts auf sämtlichen Busleitungen, so daß sie Daten an B mit der vollen Bandbreite des Busses übertragen kann. Im zweiten Zustand 202 ist die Einheit A im Empfangsmodus, das Senderecht hat nun die Einheit B.
Um vom ersten zum zweiten Zustand zu wechseln, oder umgekehrt, ist es erforderlich, die Richtung der Datenübertragung auf sämtlichen bidirektionalen Busleitungen umzukehren. Dies geschieht, indem das Ausgangssignal der BIDI Control Unit 104 invertiert wird; allerdings erfordert ein derartiges Umschalten der Übertragungsrichtung des Busses einige Prozessorcycles.
Um Signalleitungen einzusparen und den Bus besser auszunutzen, könnte man auf die Idee kommen, nicht nur Daten und Adressen, sondern auch die Befehle über den bidirektionalen Bus zwischen den Einheiten zu übertragen. Auf diese Weise könnten zwar die beiden unidirektionalen Befehlsbusse (203, 204) komplett entfallen, man müßte dies jedoch mit einem eklatanten Performanceverlust bezahlen. Wenn ein Kurzbefehl von A nach B gesandt werden soll, auf dem bidirektionalen Bus aber noch eine Datenübertragung von B nach A ausgeführt wird, so muß zunächst die Datenübertragung unterbrochen oder aber zu Ende ausgeführt werden, anschließend muß die Übertragungsrichtung des Busses geändert werden, und erst dann kann der Kurzbefehl von A nach B übermittelt werden. Die auf diese Weise erzeugten Verzögerungen lassen eine derartige Lösung als wenig vorteilhaft erscheinen.
In der erfindungsgemäßen Lösung, die in Fig. 2B vorgestellt wird, werden diese Probleme durch ein Aufsplitten des bidirektionalen Busses gelöst. Im Grundzustand des Busses ist für die eine Bushälfte 211 bzw. für den einen Teil der Busleitungen eine Datenübertragungsrichtung von Einheit A nach Einheit B vorgesehen, während auf der anderen Hälfte des Busses 212 bzw. auf dem anderen Teil der Busleitungen die Datenübertragung von B nach A erfolgt. Durch den so definierten Grundzustand können Befehle zwischen den beiden durch den Bus verbundenen funktionalen Einheiten auf sehr schnelle Art und Weise in beiden Richtungen ausgetauscht werden, da das zeitaufwendige Umschalten des Busses vollständig entfällt. Befehle, Daten und Adressen können auf diesem im Grundzustand gesplitteten Bus instantan, allerdings nur auf der halben Bandbreite des Busses übermittelt werden. Für kurze Befehle und geringe zu übertragende Datenmengen stellt die verminderte Bandbreite keinen eklatanten Nachteil dar. Lediglich bei großen Datenmengen, die zwischen den durch den Bus gekoppelten Einheiten ausgetauscht werden sollen, wäre eine Erhöhung der zur Verfügung stehenden Bandbreite vorteilhaft. Auf dem Prozessorbus, der einen Prozessor mit dem Cache verbindet, treten große Datenmengen lediglich im Zusammenhang mit dem Store- und dem Fetch-Befehl auf.
Erfindungsgemäß ist dazu vorgesehen, vom Grundzustand des Busses zu einem Zustand voller Bandbreite überzugehen, indem die Übertragungsrichtung auf der einen (211) oder der anderen (212) Hälfte des Busses in Anhängigkeit von den zu übertragenden Daten invertiert werden kann. Soll beispielsweise eine größere Datenmenge von A nach B übertragen werden, so wird die Übertragungsrichtung der Bushälfte 211 nicht geändert (213), die Übertragungsrichtung der Bushälfte 212 dagegen wird geändert (214). Auf diese Weise können Daten von A nach B über die volle Busbandbreite übertragen werden. Wenn die Datenübertragung beendet ist, wird die Datenübertragungsrichtung der Bushälfte 214 erneut umgekehrt (212), so daß wieder der Grundzustand erreicht wird.
Analog stellt sich der Fall dar, wenn eine Datenmenge von B nach A übertragen werden soll. In diesem Fall bleibt die Übertragungsrichtung auf der Bushälfte 212 unverändert (216), dagegen wird die Übertragungsrichtung auf der Bushälfte 211 geändert (215). Wieder kann durch diese flexible Bandbreitenanpassung im Bedarfsfall die volle Bandbreite zur Verfügung gestellt werden.
Auch bei diesem Buskonzept ist es erforderlich, zusätzlich zu den Befehlen, Daten und Adressen Kontrollsignale zu übertragen, um ein korrektes Timing des Protokollablaufs sicherzustellen. Dazu sind wiederum eigene Kontroll-Leitungen 210 vorgesehen. Allerdings kann die Zahl der notwendigen Kontroll-Leitungen gegenüber dem Stand der Technik deutlich reduziert werden. Der Grund dafür ist, daß das Senden und Empfangen von Befehlen, Daten und Adressen nun ja nicht völlig unabhängig voneinander stattfinden kann, sondern in einer bestimmten zeitlichen Reihenfolge auf ein und demselben Bus erfolgt. Insofern können während der Übertragung eines Befehls keine Daten übertragen werden, und der während der Übertragung von Daten liegt mit Sicherheit keine Adresse an. Daher ist es lediglich erforderlich, die auf dem Bus anliegende Information typgemäß zu spezifizieren, was durch Verwendung einer geeigneten Kodierung mit Hilfe einiger weniger Tag-Leitungen bewerkstelligt werden kann. Dadurch, daß Befehle, Daten und Adressen über einen gemeinsamen Bus übertragen werden und insofern zwingend serialisiert sind, kann also zusätzlich die Zahl der notwendigen Kontroll-Leitungen verringert werden.
Eine Variante der erfindungsgemäßen Lösung für ein neuartiges Buskonzept ist in Fig. 2C dargestellt. Analog zu Fig. 2B ist der Bus im Grundzustand in zwei Hälften (221, 222) gesplittet, wobei auf der einen Hälfte 221 eine Übertragung von A nach B, auf der anderen Hälfte 222 eine Übertragung von B nach A vorgesehen ist. Wieder kann eine Anpassung der Bandbreite in Abhängigkeit von den zu übertragenden Daten vorgenommen werden, im Unterschied von der in Fig. 2B gezeigten Lösung jedoch nur in einer Richtung: Lediglich die Übertragungsrichtung auf der Bushälfte 221 kann invertiert werden (223). Da die Übertragungsrichtung auf der Bushälfte 222 unverändert erhalten bleibt (224), können die Busleitungen dieser Bushälfte als unidirektionale Leitungen ausgelegt werden. Der Hardwareaufwand wird dadurch, daß lediglich eine Bushälfte bzw. ein Teil der Busleitungen bidirektional ausgeführt werden muß, deutlich verringert.
Genau wie bei der Lösung nach Fig. 2B kann auch bei der Lösung nach Fig. 2C die Zahl der erforderlichen Kontroll-Leitungen 220 gegenüber dem Stand der Technik deutlich verringert werden, da sich auch bei der in Fig. 2C gezeigten Busstruktur eine Serialisierung von Befehlen, Daten und Adressen zwingend ergibt. Eine geringe Zahl von Kontroll-Leitungen genügt, um den Typ der auf dem Bus anliegenden Information geeignet zu spezifizieren.
Will man das Konzept, lediglich eine Bushälfte bidirektional auszulegen, auf den Prozessorbus zwischen Prozessor und Cache anwenden, so stellt sich die Frage, für welche der beiden Datenübertragungsrichtungen die Möglichkeit der Nutzung der vollen Busbandbreite vorgesehen werden sollte. Die beiden für die Datenübertragung zwischen L2 und Prozessor relevanten Befehle sind "Store" und "Fetch". Aus statistischen Analysen ergibt sich, daß eine Datenübertragung aufgrund eines Fetch-Befehls mehr als doppelt so häufig erfolgt wie eine Datenübertragung aufgrund eines Store-Befehls. Insofern ist es sinnvoll, für den Datenübertragungsweg vom L2 zum Prozessor die Möglichkeit vorzusehen, auf volle Busbandbreite zu schalten, da dann der häufigere Fetch entsprechend schneller durchgeführt werden kann. Ein weiterer Grund, dies zu tun, ergibt sich daraus, daß der Prozessor nach Aussenden eines Fetch-Requests auf die angeforderten Daten wartet. Erst wenn die Daten eintreffen, kann der anfordernde Prozessor mit der Verarbeitung fortfahren. Daraus ergibt sich, daß sich die aufgrund eines Fetch-Befehls erfolgende Datenübertragung direkt auf die Performance auswirkt, und dies unterscheidet "Fetch" ganz wesentlich von "Store".
In Fig. 3A und 3B ist eine Möglichkeit gezeigt, wie der Typ der durch den erfindungsgemäßen Bus übertragenen Information mittels eigens dafür vorgesehener Tag-Leitungen spezifiziert werden kann. Dazu werden der Bushälfte A (303) die beiden Tag-Leitungen 1A und 2A (301), der Bushälfte B (304) die beiden Tag-Leitungen IB und 2B (302) zugeordnet. In Fig. 3B ist anhand eines Beispiels explizit gezeigt, wie die Art der übertragenen Information mit Hilfe der Tag-Leitungen kodiert werden kann. Das Kürzel OP_IM steht für "Immediate Operation" und bezeichnet Kurzbefehle, die keine weiteren Argumente bzw. Operanden erfordern. Wenn eine derartige "Immediate Operation" auf dem Bus übertragen wird, befindet sich die Tag-Leitung 1 (also die Leitung 1A für Bushälfte A (303) bzw. 1B für die Bushälfte B (304) ) auf "high", während sich die Tag-Leitung 2 (also die Tag-Leitung 2A für die Bushälfte A (303) bzw. die Tag-Leitung 2B für die Bushälfte B (304) ) auf "low" befindet.
Als "Operation Identifiers", abgekürzt OP_ID, werden alle Commands und Responses codiert, deren Übertragung mehr als einen Prozessorcycle erfordert. Auch Adreßinformation, die zusammen mit dem Command bzw. der Response übertragen wird, wird als "Operation Identifier" behandelt. Zur Tag-Codierung eines derartigen OP_ID werden beide Tag-Leitungen, die Tag-Leitung 1 sowie die Tag-Leitung 2, auf "high" gesetzt.
Falls im Anschluß an ein Command oder eine Response eine Datenübertragung auf dem Bus stattfindet, so wird dieser Informationstyp als "Data" codiert. Dazu wird Tag-Leitung 1 auf "low" gelegt, Tag-Leitung 2 auf "high".
Für den Fall, daß gerade keine Busaktivität vorliegt, sind beide Tag-Leitungen, die Tag-Leitung 1 sowie die Tag-Leitung 2, auf "low". Man bezeichnet diesen Busstatus als "No Operation", abgekürzt NOOP.
Um einen optimalen Datentransfer auf einem Bus zu gewährleisten, ist es erforderlich, die Bandbreite des Busses so auszulegen, daß der Bus nur zum Teil ausgelastet ist.
Andernfalls behindern sich Befehle und Datenübertragungen gegenseitig, und die Wartezeit, die ein Befehl durchlaufen muß, bevor er auf den Bus gegeben werden kann, wird im Durchschnitt zu hoch. Typischerweise ist ein Prozessorbus in einem Multiprozessorsystem nur zu etwa 30% ausgelastet, was bedeutet, daß der Bus während 70% der Zeit "idle" ist, sich also im Status "No Operation" befindet.
Die in Fig. 3B dargestellte Art und Weise, die auf einem Bus übertragene Information mit Hilfe von Tag-Leitungen zu spezifizieren, stellt nur eine von vielen möglichen Lösungen dar. So kann es aus Gründen der Übertragungseffizienz sinnvoll sein, einige der im Zusammenhang mit Fig. 1 beschriebenen Kontroll-Leitungen auch bei dem erfindungsgemäßen Buskonzept zu implementieren. Beispielsweise könnte es von Vorteil sein, zusätzlich zu den beschriebenen Tag-Leitungen eine Request- sowie eine Response-Line vorzusehen, welche anzeigen, ob es sich bei dem übertragenen OP_ID bzw. OP_IM um ein Command oder aber um eine Response auf ein Command handelt. Aus der in Fig. 3B skizzierten Lösung wird jedoch deutlich, daß man bereits mit sehr wenigen Tag-Leitungen eine Vielzahl von auf dem Bus übertragenen Informationstypen codieren kann.
In Fig. 4 ist eine Hardware-Implementierung des erfindungsgemäßen Buskonzepts dargestellt. Jede der beiden Bushälften besteht aus bidirektionalen Busleitungen, und insofern kann die Übertragungsrichtung jeder der beiden Bushälften umgeschaltet werden. Die dargestellte Lösung entspricht insofern der in Fig. 2B gezeigten Lösung (BIDI-BIDI Split Bus). Wenn die PU Befehle oder Daten an den L2 senden will, so schreibt sie die zu übermittelnde Information zunächst in die PU-seitigen Out-Register. Für jeden Informationstyp, für "Immediate Operations", für "Operation Identifiers" sowie für "Data" gibt es ein eigenes Out-Register (404, 405, 406). Der Informationstyp wird auch durch den Tag-Status angegeben, der im Tag-Register 401 gespeichert ist. Dieser Tag-Status steuert einen Selektor 408, durch den dasjenige Out-Register ausgewählt wird, dessen Inhalt über den halben Bus 409 übertragen werden soll. Damit auf dem Halbbus 409 eine Übertragung von der PU zum L2 möglich ist, ist es notwendig, daß der PU-seitige Sendetreiber 413 und der L2-seitige Empfangstreiber 415 durch ihre jeweiligen BIDI-Control Units 410 bzw. 411 aktiviert sind. Dies impliziert, daß die PU-seitigen Empfangstreiber 414 und die L2-seitigen Sendetreiber 416 desaktiviert sind, weil diese die Ausgangssignale 411, 412 der BIDI-Control Units an ihren invertierenden Eingängen anliegen haben. Die entsprechend dem Tag-Status durch den Selektor 408 ausgewählte Information wird nun über den PU-seitigen Treiber 413, den Halbbus 409 und den L2-seitigen Treiber 415 in ein empfangsseitiges In-Register geschrieben, wobei wieder der Status der Tag-Leitungen das passende In-Register selektiert. Zur Verfügung stehen ein Register für "Immediate Operations" 420, ein Register für "Operation Identifiers" 421, sowie ein Register für "Data" 422.
Die angekommenen Daten können dann auf der L2-Seite weiterverarbeitet werden. Dazu wird beispielsweise der Inhalt des Registers für "Immediate Operations" 420 einer Immediate Operation Decode Unit 424 zugeleitet, welche die ankommenden OP_IMs in Commands und Controls decodiert. Auf ähnliche Art und Weise können die "Operation Identifiers", welche ja für Commands, Responses und Adressen stehen können, decodiert werden.
Die Übertragung der Tag-Information von der PU zum Second Level Cache geschieht folgendermaßen: Die zwei Tag-Signale werden in das Tag-Register 401 geschrieben. Von dort aus werden sie über einen sendeseitigen Treiber, über die eigentlichen Tag-Leitungen 402 und einen empfangsseitigen Treiber zu einer Tag-Decode-Unit 403 übertragen. Der Status der Tag-Leitungen wird zum einen dem Selektor 408 mitgeteilt, der entsprechend dem Tag die zu übertragende Information auswählt, zum anderen dienen die Tag-Leitungen zur Selektion des passenden In-Registers auf Empfängerseite.
Es ist vorteilhaft, die Übertragung der Tag-Information mittels einer Early-Clock 400 zu takten, deren Taktimpulse um einen Bruchteil eines Cycles früher erfolgen als die Taktimpulse der System-Clock. Auf diese Art und Weise können die Übertragungspfade im Selektor 408 sowie das passende In-Register auf Empfangsseite bereits vor der eigentlichen Datenübertragung bestimmt werden, da diese Datenübertragung mit der System-Clock erfolgt. Die im Vergleich zum Datentransfer verfrühte Übertragung der Tag-Information hat also generell den Vorteil, bereits vor dem Ankommen der Busdaten Informationen über diese zur Verfügung zu stellen, um die ankommenden Daten sofort adäquat prozessieren zu können.
Im Grundzustand des Busses überträgt die erste Bushälfte 409 Informationen von der PU zum L2, während auf der zweiten Bushälfte 436 in Gegenrichtung, also vom L2 zur PU, übertragen wird. Wenn nun auf der PU-Seite Daten zur Übertragung anstehen, die mit der vollen Busbandbreite übertragen werden sollen, so muß die Übertragungsrichtung des Halbbusses 436 umgeschaltet werden. Dies geschieht dadurch, daß die Ausgangssignale 437, 438 der BIDI Control Units 410, 411 invertiert werden, so daß die Treiber 440 und 442, die vorher aktiv waren, deaktiviert werden, während die Treiber 439 und 441 in den aktiven Zustand übergehen. Die höherwertigen vier Datenbytes werden nach wie vor auf dem Halbbus 409 von der PU zum L2 übertragen. Die niederwertigen vier Datenbytes jedoch werden, nachdem sie in das "Data Low" Register 407 geschrieben wurden, über den Treiber 439, den Halbbus 436 und den Treiber 441 in das Empfangsregister "Data Low" 423 des L2 geschrieben, von wo aus sie weiter verarbeitet werden können. Nach Beendigung der Datenübertragung wird der Bus wieder in seinen Grundzustand geschaltet, die Übertragungsrichtung auf dem Halbbus 436 wechselt also wieder.
Die Übertragung in der Gegenrichtung, also vom L2 zur PU, geschieht analog. Auf L2-Seite stehen Out-Register für "Data High" 430, "Data Low" 431, "Operation Identifiers" 432 sowie "Immediate Operations" 433 zur Verfügung, in die die zu übertragende Information vom L2 geschrieben wird. Über den tag-gesteuerten Selektor 434, den Treiber 442, den Halbbus 436 sowie den Treiber 440 gelangen die Informationen dann zu den passenden prozessorseitigen In-Registern für "Data Low", für "Operation Identifiers" 452 sowie für "Immediate Operations" 453. Die Auswahl des dem zu übertragenden Informationstyp entsprechenden In-Registers geschieht in Abhängigkeit von dem dem Halbbus 436 zugeordneten Tag. Zwei Tag-Leitungen werden vom L2 über das Tag-Register 460, über die beiden unidirektionalen Tag-Leitungen 461 und den Tag-Decoder 462 zur PU übertragen.
Auch für Daten, die vom L2 zur PU übertragen werden sollen, gibt es die Möglichkeit, die volle Busbandbreite zu nutzen. Dazu wird der Halbbus 409 mittels der BIDI Controls 410, 411 umgepolt, anschließend können die höherwertigen vier Datenbytes über das Out-Register "Data High" (430), den Halbbus 409 und das In-Register "Data High" (450) zur PU übertragen werden. Die niederwertigen vier Datenbytes werden wie gehabt über den Halbbus 436 übertragen. Nach Abschluß der Datenübertragung vom L2 zur PU geht der Bus wieder in seinen Grundzustand über.
In Fig. 5 ist eine Hardwareimplementierung der in Fig. 2C dargestellten erfindungsgemäßen Lösung gezeigt. Hier ist die eine Bushälfte 508, die Daten und Commands von der PU zum L2 überträgt, bidirektional ausgeführt. Insofern kann die Übertragungsrichtung der Bushälfte 508 in Abhängigkeit von den Bandbreiteerfordernissen umgeschaltet werden; dies entspricht den beiden Zuständen 221 und 223 der bidirektionalen Bushälfte in Fig. 2C. Die andere Bushälfte 535 dagegen besteht aus unidirektionalen Datenleitungen, die Übertragungsrichtung vom L2 zur PU ist damit festgelegt. Sie entspricht der unidirektionalen Bushälfte 222, 224 in Fig. 2C.
Daten und Commands können also von der PU zum L2 immer nur über die halbe Busbandbreite übertragen werden. Dies geschieht, indem die PU die zu übertragende Information, also OP_IMs, OP_IDs und "Data", in die entsprechenden Out-Register 504, 505, 506 schreibt. Der Typ der zu übertragenden Information wird durch das Tag spezifiziert; dazu wird die entsprechende Kennung in das Tag-Register 501 geschrieben. Diese Tag-Information dient zum einen zur Selektion (507) des Registers, dessen Inhalt übertragen werden soll, zum anderen wird das Tag über zwei unidirektionale Tag-Leitungen 502 mittels der Early-Clock 500 zum L2-seitigen Tag Decoder 503 übertragen. Im Grundzustand werden durch den Halbbus 508 Daten und Commands von der PU zum L2 übertragen. Das Ausgangssignal 510 der BIDI Controls 509 aktiviert die beiden Treiber 511 und 513, während die beiden Treiber 512 und 514, an denen ein invertiertes BIDI Control Signal anliegt, desaktiviert werden. Die übertragene Information wird in Abhängigkeit vom Tag-Status in eines der drei zur Verfügung stehenden In-Register 520, 521, 522 geschrieben, auf die der L2 dann zugreifen kann, um die Information weiter zu verarbeiten. Da auch bei einer anstehenden Datenübertragung die zweite, unidirektionale Bushälfte nicht genutzt werden kann, ist es notwendig, sowohl die niederwertigen als auch die höherwertigen vier Bytes der Daten ("Low Data" und "High Data") über den Halbbus 508 zu übertragen.
In der umgekehrten Richtung, also vom L2 zu PU, ist dagegen die Nutzung beider Bushälften zur Datenübertragung möglich. Dazu müssen die Treiber 512 und 514 mittels der BIDI Controls 509 und 515 aktiviert werden, um vom Grundzustand zu einem Zustand voller Bandbreite überzugehen. Die niederwertigen vier Datenbytes werden in das Out-Register "Data Low" 531 geschrieben, die höherwertigen vier Bytes in das "Data High" Register 530. Der Inhalt des Registers "Data High" kann dann über den Halbbus 508 zum prozessorseitigen In-Register 536 übertragen werden, während der Inhalt des "Data Low" Registers 531 über den Selektor 534 und den Halbbus 535 zum In-Register 537 übertragen wird. Zur Übertragung von OP_IDs und OP_IMs ist die Nutzung der Bushälfte 508 nicht erforderlich; hier wird mit halber Bandbreite übertragen.
In den Fig. 6 bis 11 ist der Ablauf des typischen Datenverkehrs auf einem Prozessorbus zwischen Prozessor und L2-Cache dargestellt. Auch für den Fall, daß mehrere PUs über ihren jeweiligen Prozessorbus mit einem gemeinsamen L2-Cache verbunden sind (Multiprozessorsystem), läuft der Datenverkehr auf jedem der Prozessorbusse nach dem dargestellten Schema ab.
In Fig. 6A sendet der L2 über den Halbbus 601, der dem Halbbus 436 in Fig. 4 entspricht, das Command "Cache Line Invalidate" (602) an eine PU. Der Bus befindet sich im Grundzustand, eine Informationsübertragung in der Gegenrichtung, also auf der Bushälfte 600, findet nicht statt. Das Command "Cache Line Invalidate" wird vom L2 an sämtliche PUs ausgesendet, um die PUs zu einer Invalidierung der betroffenen Cache Line in den ihnen zugeordneten L1-Caches zu veranlassen. Eine Invalidierung der lokal abgespeicherten Instanzen der Cache Line kann notwendig werden, wenn einer der Prozessoren signalisiert hat, die Cache Line im L2 überschreiben zu wollen, also einen diese Cache Line betreffenden Store-Zugriff veranlassen möchte. Ein weiterer Grund kann sein, daß die im L2 gespeicherte Cache Line aufgrund eines Least Recently Used Algorithmus gelöscht werden soll. Zur Invalidierung der Cache Line in den den einzelnen Prozessoren zugeordneten L1 Caches ist es notwendig, den PUs neben dem Command "Cache Line Invalidate" auch die Speicheradresse der Cache Line mitzuteilen. Desweiteren wird dem Invalidierungsbefehl eine ID zugeordnet. Dieser Kurzbefehl wird der PU als "Immediate Operation" (OP_IM, 602) übermittelt. Als Antwort darauf sendet die PU eine Response (603) an den L2, welche wiederum die ID sowie die Cache Line Adresse enthält. Auch für die Übermittlung dieser Response ist, wie in Fig. 6B dargestellt, die halbe Busbandbreite völlig ausreichend; auch bei der Response auf das "Cache Line Invalidate" handelt es sich um eine "Immediate Operation".
Wenn von seiten einer PU ein Schreibzugriff auf den L2 bzw. das Memory durchgeführt werden soll, so sendet die PU einen Store-Befehl, zusammen mit den abgespeicherten Daten, an den L2. Der Ablauf des Store Commands ist in Fig. 7 für den Fall dargestellt, daß beide Bushälften 700 und 701 bidirektional ausgeführt sind und deshalb auch die Übertragungsrichtung der Bushälfte 701, die im Grundzustand Daten von der PU zum L2 überträgt, geändert werden kann. Dies entspricht der erfindungsgemäßen Lösung nach Fig. 2B. Zur Durchführung eines Store ist es erforderlich, in einem ersten Cycle (702) neben dem Command selbst Information über die Länge des sich anschließenden Datenpakets sowie eine ID zu übertragen. In einem zweiten Cycle (703) wird dann die Zieladresse im Memory, ab der mit dem Schreibvorgang begonnen werden soll, mitgeteilt. Es kann vorteilhaft sein, die Adresse im ersten Cycle zu übertragen, und Command, ID und Length erst im zweiten Cycle zu übermitteln, um die Zieladresse auf L2-Seite früher zur Verfügung zu stellen.
In den ersten beiden Cycles werden also Informationen übertragen, die die auszuführende Operation näher spezifizieren. Insofern werden die ersten beiden Cycles als OP_IDs codiert, und die dem Halbbus 700 zugeordneten Tag-Leitungen liegen beide auf "high". Ab dem dritten Cycle wird mit der eigentlichen Datenübertragung begonnen. Da zunächst nur die halbe Bandbreite zur Datenübertragung zur Verfügung steht, wird ein voller, 8 Byte umfassender Datenschuß aufgeteilt in seine höherwertigen 4 Bytes ("High Data", 704) und seiner niederwertigen 4 Bytes ("Low Data", 705). Diese werden dann sequentiell auf dem Halbbus übertragen. Die Codierung auf den Tag-Leitungen hat inzwischen von OP_ID zu "Data" gewechselt, d. h. Tag-Leitung 1 liegt auf "low", während Tag-Leitung 2 auf "high" liegt. Falls auf dem Halbbus 701, der im Grundzustand Informationen vom L2 zur PU überträgt, keine Aktivität vorliegt, kann die Übertragungsrichtung dieses Halbbusses umgeschaltet werden, um ihn für die Datenübertragung nutzen zu können. Ab dem Zeitpunkt, zu dem die Übertragungsrichtung des Halbbusses 701 umgeschaltet wird (708), ist die Übertragung eines vollen Datenschusses in einem Cycle möglich, "High Data" (706) wird auf dem Halbbus 700, "Low Data" (707) auf dem Halbbus 701 von der PU zum L2 übertragen. Auch die Tag-Codierung in dieser Übertragungsrichtung ist nun "Data". Mit dem Abschluß der Datenübertragung wechselt das Bussystem vom Zustand voller Bandbreite zurück zum Grundzustand, d. h. der Halbbus 701 überträgt wieder Informationen vom L2 zur PU.
Eine Abwandlung des in Fig. 7 gezeigten Store-Vorgangs für ein der Fig. 2C entsprechendes Bussystem, das eine bidirektionale und eine unidirektionale Bushälfte aufweist, ist in Fig. 8 dargestellt. Hier kann die Übertragungsrichtung des Halbbusses 800, der im Grundzustand Informationen von der PU zum L2 überträgt, geändert werden, während der Halbbus 801 unidirektional ist und Informationen nur vom L2 zur PU transferieren kann. Hier schließt sich an die ersten beiden OP_IDs 802 und 803 die eigentliche Datenübertragung an. Da lediglich ein Halbbus zur Verfügung steht, muß jeder Datenschuß in "High Data" (805 bzw. 807) und "Low Data" (806 bzw. 808) zerlegt werden.
In Fig. 9A und 9B ist der Ablauf eines Fetch-Vorgangs dargestellt. Wenn eine PU Daten benötigt, die sie nicht in ihrem lokalen L1-Cache vorfindet, so sendet sie einen Fetch über den Halbbus 900 an den L2. Das Fetch-Command besteht aus zwei "Operation Identifiers" (902 und 903), welche die ID des Fetch-Vorgangs, das Fetch-Command selbst, die Länge des angeforderten Datenpakets sowie die Startadresse der benötigten Daten enthalten. Zur Übertragung des Fetch befindet sich der Bus im Grundzustand. Nach Empfang des Fetch beginnt der L2 in seinem Directory nach der angeforderten Cacheline zu suchen. Wenn er fündig wird ("hit"), können die benötigten Daten sofort zur PU übertragen werden; falls der L2 nicht fündig wird ("miss"), muß die Cacheline erst vom Memory angefordert werden.
Statistisch betrachtet treten mehr als doppelt so viele Fetch-Vorgänge wie Store-Vorgänge auf. Der Datenübertragung aufgrund eines "Fetch" kommt also eine höhere Relevanz zu als den Datenübertragungen aufgrund von "Store". Hinzu kommt, daß die PU eine bestimmte Cacheline ja deshalb angefordert hat, um die für eine Operation benötigten Argumente zur Verfügung stellen zu können. Insofern kann die PU mit der weiteren Verarbeitung erst nach Erhalt der Cacheline fortfahren. Aus beiden Argumenten ergibt sich, daß für die Datenübertragung vom L2 zur PU die volle Bandbreite zur Verfügung stehen soll.
Es ist deshalb sowohl in der Buskonfiguration nach Fig. 2B als auch in der nach Fig. 2C vorgesehen, die Übertragungsrichtung für Informationen auf dem Halbbus 900 von der PU zum L2 abändern zu können. Dieser Halbbus 900 muß also bidirektional ausgeführt sein, während der Halbbus 901 unidirektional oder bidirektional ausgelegt sein kann.
In Fig. 9B ist die Response auf einen Fetch dargestellt. Nach der Umschaltung der Übertragungsrichtung (911) auf dem Halbbus 900 wird im ersten Cycle ein OP_ID 904 vom L2 zur PU übertragen. Dabei signalisieren die Tag-Leitungen, daß ein OP_ID vorliegt. In den nächsten Cycles findet dann die eigentliche Datenübertragung statt. Da die volle Busbandbreite zur Verfügung steht, können "High Data" (906, 908, 910) und "Low Data" (905, 907, 909) jeweils in einem Cycle übertragen werden, pro Cycle kann also ein Datenschuß übertragen werden. Die Tag-Leitungen zeigen dabei an, daß es sich bei der übertragenen Information um "Data" handelt. Nach Abschluß der Datenübertragung geht der Bus wieder in den Grundzustand über, indem die Übertragungsrichtung auf dem Halbbus 900 erneut wechselt.
Es stellt sich nun die Frage, wie das "Right to Send" auf den beiden Bushälften vergeben wird, welcher der beiden Busteilnehmer, PU und/oder L2, also den Input für die in Fig. 4 und 5 gezeigten BIDI Controls liefert. Eine Möglichkeit ist, entweder nur für die PU oder aber für PU und L2 eigene (unidirektionale) Leitungen vorzusehen, mit denen der jeweilige Busteilnehmer signalisiert, ob er bereit wäre, die ihm im Grundzustand zugeordnete Bushälfte dem anderen Partner zu überlassen oder nicht. Bei der in Fig. 9B dargestellten Fetch Response bedeutet dies, daß der L2 das Senderecht auf der Bushälfte 900, die im Grundzustand der PU zugeordnet ist, nur dann übernehmen kann, wenn die PU auf der ihr zugeordneten Leitung signalisiert, daß sie ihr Senderecht momentan nicht beanspruchen will. Wenn jedoch auf PU-Seite gerade eine Store-Operation zur Ausführung ansteht, so kann die PU verhindern, daß der L2 das Senderecht auf der Bushälfte 900 bekommt.
Eine derartige Lösung wäre für die in Fig. 2C gezeigte Buskonfiguration bereits völlig ausreichend. Bei der in Fig. 2B gezeigten Buskonfiguration ist auch eine eigene Kontrolleitung für den L2 vorzusehen, mit deren Hilfe der L2 verhindern kann, daß auf seiner Bushälfte die PU das Senderecht bekommt. Bei dem in Fig. 7 gezeigten Ablauf eines Store Commands könnte die PU die Bushälfte 701 also nur dann übernehmen, wenn der L2 signalisiert, daß er gerade nicht senden möchte.
Anstelle von eigenen Kontrolleitungen wäre auch der Austausch von "Immediate Operations" zwischen den Busteilnehmern möglich, um eine Änderung der Übertragungsrichtung auf einer Bushälfte anzufordern und/oder zu gestatten.
Die Umschaltung der Übertragungsrichtung einer Bushälfte erfordert mindestens zwei Prozessor-Cycles, weil die entsprechenden Sende- und Empfangstreiber aktiviert bzw. desaktiviert werden müssen. Um also gleich mit Beginn der "Response to Fetch" die volle Busbandbreite zur Verfügung zu haben, ist es sinnvoll, wenn die PU einige Cycles nach dem Absenden des "Fetch" (902, 903) mit dem Umschalten der Übertragungsrichtung der Bushälfte 900 beginnt. Auch das Durchsuchen der Directory auf L2-Seite sowie der Zugriff auf die angeforderte Cacheline erfordern einige Cycles. Insofern ist es möglich, die Umschaltung der Übertragungsrichtung (911) vor Beginn der "Fetch Response" abzuschließen, so daß von Anfang an die volle Busbandbreite zur Datenübertragung zur Verfügung steht. Es kann aber sinnvoll sein, der PU das Recht zu geben, für den Fall, daß ein Store zum L2 erfolgen soll, die Umschaltung zu verhindern. In diesem Fall würde die Übermittlung der Fetch Response zumindest zum Teil nur über den Halbbus 901 erfolgen.
Fig. 10A und 10B zeigen den Ablauf des Control Commands, mit dem die PU einen Schreibzugriff auf die Register von funktionalen Einheiten des Computersystems ausführen kann. Der Bus bleibt zur Übertragung des Control Commands im Grundzustand, die Übertragung des Commands erfolgt lediglich auf dem Halbbus (1000) von der PU zum L2. In den ersten beiden Cycles werden zwei OP_IDs (1002, 1003) übertragen, die die ID des Commands, das Control Command selbst, die Nummer des Chips, auf den zugegriffen werden soll, sowie die Registeradresse enthalten. Das Tag ist dabei im OP_ID Status.
Im Anschluß an diese beiden Cycles werden zweimal vier Byte an Daten übertragen, die die in die Chipregister zu schreibende Information enthalten. Da nur die halbe Bandbreite zur Verfügung steht, ist eine Aufteilung in "High Data" (1004) und "Low Data" (1005) erforderlich. Während der Übermittlung dieser Daten hat das Tag den Status "Data".
Fig. 10B zeigt die Response 1006 auf dieses Control Command, welche als "Immediate Operation" auf dem Halbbus (1001) vom L2 zur PU übertragen wird. Diese Response enthält die ID des Control Commands sowie die Kennung der PU, die das Control Command initiiert hat.
Wenn umgekehrt ein Registerinhalt eines zu einer funktionalen Einheit des Computersystems gehörigen Chips ausgelesen werden soll, sendet die PU einen Sense-Befehl an den L2. Dies ist in Fig. 11A dargestellt. Der auf dem Halbbus (1100) übertragene Sense-Befehl umfaßt zwei Cycles (1102, 1103), in denen die ID des Commands, das Command selbst, die Nummer des betroffenen Chips sowie die Registeradresse übermittelt werden. Während der Übermittlung zeigt das Tag die Codierung für OP_ID.
Mit der Response zu diesem Sense-Command wird der Status der ausgelesenen Register übermittelt. Dies ist in Fig. 11B dargestellt. Nach einem "Operation Identifier" (1104), der die ID sowie eine Kennung der PU enthält, werden zweimal vier Byte an Daten ("Low Data", 1105 und "High Data", 1106) an die PU übertragen. Diese Datenbytes enthalten den Status der ausgelesenen Register. Während die Tag-Leitungen während des Cycles 1104 OP_ID signalisieren, zeigen sie während der Cycles 1105 und 1106 an, daß "Data" übertragen wird.
In Fig. 12 ist die Situation dargestellt, daß der L2 an die PU eine "Fetch Response" zu übermitteln hat, der Halbbus 1200 von der PU zum L2 aber aktiv ist. In dem gezeigten Fall wird gerade ein Store-Befehl (1202) ausgeführt. Der L2 kann nun entweder mit der Datenübertragung warten, bis die Bushälfte 1200 wieder verfügbar ist, dann die Übertragungsrichtung der Bushälfte (1200) umschalten, und anschließend die Daten mit voller Bandbreite vom L2 zur PU übertragen. Alternativ kann aber auch auf der Bushälfte 1201 mit der Übertragung der "Fetch Response" (1203) begonnen werden, die Übertragung erfolgt daher zunächst mit halber Bandbreite. Sobald der Halbbus 1200 verfügbar ist, kann auch seine Übertragungsrichtung umgeschaltet werden (1204), anschließend kann die Datenübertragung vom L2 zur PU mit voller Bandbreite fortgesetzt werden. Auf diese Weise ist eine flexible Auslastung der zur Verfügung stehenden Bandbreite möglich.
In Fig. 13A ist die Situation dargestellt, daß die PU eine OP_IM an den L2 übermitteln will, die im Grundzustand dafür vorgesehene Bushälfte 1300 aber gerade nicht verfügbar ist. Im gezeigten Beispiel ist die Bushälfte 1300 durch die Übertragung eines Store-Befehls 1302 blockiert. Um nun mit der Übermittlung des OP_IM nicht bis zum Ende des Store-Befehls warten zu müssen, kann es vorteilhaft sein, die Datenübertragung zu unterbrechen (1306), den OP_IM 1303 zu übermitteln, und anschließend (1305) mit der Übertragung der Daten (1304) fortzufahren. Durch die Möglichkeit, eine OP_IM in den regulären Datenfluß einzuschleifen, wird ein beschleunigter Austausch von Kurzbefehlen zwischen PU und L2 möglich.
In Fig. 13B ist ein ähnlicher Fall dargestellt, bei dem ein OP_IM von der PU zum L2 übermittelt werden soll, obwohl beide Bushälften 1310 und 1311 durch eine "Fetch Response" (1312) blockiert sind. In diesem Fall muß zunächst die Datenübertragung durch die "Fetch Response" auf die halbe Bandbreite beschränkt werden. Anschließend kann die Übertragungsrichtung auf dem Halbbus 1310 invertiert werden (1313). Nach der Übertragung des OP_IM 1314 von der PU zum L2 wird die Übertragungsrichtung der Bushälfte 1310 erneut umgedreht, um wieder die volle Busbandbreite für die Fortsetzung der Fetch Response zur Verfügung zu haben. Auch diese Lösung dient einem beschleunigten Austausch von "Immediate Operations" zwischen PU und L2.

Claims (16)

1. Bus zur Übertragung von Information in einem Datenverarbeitungssystem, welcher mindestens zwei Übertragungsleitungen aufweist, gekennzeichnet durch
einen ersten Zustand, in dem die Übertragungsleitungen in zwei Gruppen mit entgegengesetzter Übertragungsrichtung eingeteilt sind, wobei die Übertragungsrichtung mindestens einer Gruppe von Übertragungsleitungen umkehrbar ist,
einen zweiten Zustand, in dem die Übertragungsrichtung der zwei Gruppen von Übertragungsleitungen übereinstimmt, und
Mittel zum Umschalten des Busses zwischen dem ersten und dem zweiten Zustand.
2. Bus nach Anspruch 1, dadurch gekennzeichnet, daß für die beiden Übertragungsrichtungen jeweils mindestens eine Tagleitung vorhanden ist,
wobei der Status der Tagleitung den Typ der auf dem Bus übertragenen Information spezifiziert.
3. Bus nach Anspruch 2, dadurch gekennzeichnet, daß die Umschaltung zwischen dem ersten und dem zweiten Zustand in Abhängigkeit vom Status der Tagleitungen erfolgt.
4. Bus nach Anspruch 1 und/oder 2, dadurch gekennzeichnet, daß die Umschaltung zwischen dem ersten und dem zweiten Zustand in Abhängigkeit von Information erfolgt, die über den Bus übertragen wird.
5. Bus nach einem der Ansprüche 1 bis 4, dadurch gekennzeichnet, daß
die Übertragungsleitungen der einen Gruppe von Übertragungsleitungen bidirektionale Leitungen sind, deren Übertragungsrichtung umschaltbar ist, und
die Übertragungsleitungen der anderen Gruppe von Übertragungsleitungen unidirektionale Leitungen sind, deren Übertragungsrichtung feststeht.
6. Bus nach einem der Ansprüche 1 bis 4, dadurch gekennzeichnet, daß die Übertragungsleitungen beider Gruppen von Übertragungsleitungen bidirektionale Leitungen sind, deren Übertragungsrichtung umschaltbar ist.
7. Bus nach einem der Ansprüche 1 bis 6, dadurch gekennzeichnet, daß die Übertragung von Tagsignalen über die Tagleitungen um einen Bruchteil eines Taktzyklus früher stattfindet als die Übertragung der Information über den Bus.
8. Bus nach einem der Ansprüche 1 bis 7, dadurch gekennzeichnet, daß
für den Fall, daß sich der Bus im ersten Zustand befindet, daß Information in der einen Übertragungsrichtung übertragen werden soll, daß aber der Bus in der entgegengesetzten Übertragungsrichtung noch aktiv ist,
der Übergang vom ersten Zustand in den zweiten Zustand solange aufgeschoben wird, bis die Busaktivität in der entgegengesetzten Übertragungsrichtung abgeschlossen ist.
9. Verfahren zur Übertragung von Information über einen Bus in einem Datenverarbeitungssystem, wobei der Bus mindestens zwei Übertragungsleitungen aufweist, wobei
die Übertragungsleitungen in zwei Gruppen eingeteilt werden,
und wobei von einem ersten Zustand, in dem die beiden Gruppen entgegengesetzte Übertragungsrichtung aufweisen, zu einem zweiten Zustand, in dem die Übertragungsrichtung der zwei Gruppen von Übertragungsleitungen übereinstimmt, umgeschaltet wird.
10. Verfahren nach Anspruch 9, dadurch gekennzeichnet, daß für die beiden Übertragungsrichtungen jeweils mindestens eine Tagleitung vorhanden ist,
wobei durch den Status der Tagleitung der Typ der auf dem Bus übertragenen Information spezifiziert wird.
11. Verfahren nach Anspruch 10, dadurch gekennzeichnet, daß in Abhängigkeit vom Status der Tagleitungen zwischen dem ersten und dem zweiten Zustand umgeschaltet wird.
12. Verfahren nach Anspruch 9 oder 10, dadurch gekennzeichnet, daß die Umschaltung zwischen dem ersten und dem zweiten Zustand in Abhängigkeit von Information erfolgt, die über den Bus übertragen wird.
13. Verfahren nach einem der Ansprüche 9 bis 12, dadurch gekennzeichnet, daß
die Übertragungsleitungen der einen Gruppe von Übertragungsleitungen bidirektionale Leitungen sind, deren Übertragungsrichtung umschaltbar ist, und
die Übertragungsleitungen der anderen Gruppe von Übertragungsleitungen unidirektionale Leitungen sind, deren Übertragungsrichtung feststeht.
14. Verfahren nach einem der Ansprüche 9 bis 12, dadurch gekennzeichnet, daß die Übertragungsleitungen beider Gruppen von Übertragungsleitungen bidirektionale Leitungen sind, deren Übertragungsrichtung umschaltbar ist.
15. Verfahren nach einem der Ansprüche 9 bis 14, dadurch gekennzeichnet, daß Tagsignale über die Tagleitungen um einen Bruchteil eines Taktzyklus früher übertragen werden als die Information über den Bus.
16. Verfahren nach einem der Ansprüche 9 bis 15, dadurch gekennzeichnet, daß
für den Fall, daß sich der Bus im ersten Zustand befindet, daß Information in der einen Übertragungsrichtung übertragen werden soll, daß aber der Bus in der entgegengesetzten Übertragungsrichtung noch aktiv ist,
der Übergang vom ersten Zustand in den zweiten Zustand solange aufgeschoben wird, bis die Busaktivität in der entgegengesetzten Übertragungsrichtung abgeschlossen ist.
DE19636381A 1996-09-09 1996-09-09 Bus mit anforderungsabhängiger Anpassung der in beiden Richtungen zur Verfügung stehenden Bandbreite Expired - Fee Related DE19636381C1 (de)

Priority Applications (3)

Application Number Priority Date Filing Date Title
DE19636381A DE19636381C1 (de) 1996-09-09 1996-09-09 Bus mit anforderungsabhängiger Anpassung der in beiden Richtungen zur Verfügung stehenden Bandbreite
US08/712,033 US5872944A (en) 1996-09-09 1996-09-11 Bus with request-dependent matching of the bandwidth available in both directions
JP9235642A JPH10105308A (ja) 1996-09-09 1997-09-01 情報伝送バス及び方法

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
DE19636381A DE19636381C1 (de) 1996-09-09 1996-09-09 Bus mit anforderungsabhängiger Anpassung der in beiden Richtungen zur Verfügung stehenden Bandbreite
US08/712,033 US5872944A (en) 1996-09-09 1996-09-11 Bus with request-dependent matching of the bandwidth available in both directions

Publications (1)

Publication Number Publication Date
DE19636381C1 true DE19636381C1 (de) 1998-03-12

Family

ID=26029152

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19636381A Expired - Fee Related DE19636381C1 (de) 1996-09-09 1996-09-09 Bus mit anforderungsabhängiger Anpassung der in beiden Richtungen zur Verfügung stehenden Bandbreite

Country Status (3)

Country Link
US (1) US5872944A (de)
JP (1) JPH10105308A (de)
DE (1) DE19636381C1 (de)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6032211A (en) 1998-06-17 2000-02-29 Advanced Micro Devices, Inc. Method of mode control in a bus optimized for personal computer data traffic
US6202116B1 (en) * 1998-06-17 2001-03-13 Advanced Micro Devices, Inc. Write only bus with whole and half bus mode operation
US6539450B1 (en) 1998-11-29 2003-03-25 Sony Corporation Method and system for adjusting isochronous bandwidths on a bus
US6748442B1 (en) 1998-12-21 2004-06-08 Advanced Micro Devices, Inc. Method and apparatus for using a control signal on a packet based communication link
US6631415B1 (en) 1999-03-19 2003-10-07 Sony Corporation Method and system for providing a communication connection using stream identifiers
US6374316B1 (en) 1999-03-19 2002-04-16 Sony Corporation Method and system for circumscribing a topology to form ring structures
US6810452B1 (en) 1999-03-19 2004-10-26 Sony Corporation Method and system for quarantine during bus topology configuration
US6502158B1 (en) 1999-04-23 2002-12-31 Sony Corporation Method and system for address spaces
US6728821B1 (en) 1999-11-29 2004-04-27 Sony Corporation Method and system for adjusting isochronous bandwidths on a bus
WO2001038996A1 (en) * 1999-11-29 2001-05-31 Sony Electronics, Inc. Method and system for adjusting isochronous bandwidths on a bus
US6647446B1 (en) 2000-03-18 2003-11-11 Sony Corporation Method and system for using a new bus identifier resulting from a bus topology change
US6757773B1 (en) 2000-06-30 2004-06-29 Sony Corporation System and method for determining support capability of a device coupled to a bus system
US6622194B1 (en) * 2000-08-28 2003-09-16 Intel Corporation Efficient use of multiple buses for a scalable and reliable high-bandwidth connection
TW507128B (en) * 2001-07-12 2002-10-21 Via Tech Inc Data memory controller supporting the data bus invert
US7836252B2 (en) * 2002-08-29 2010-11-16 Micron Technology, Inc. System and method for optimizing interconnections of memory devices in a multichip module
US7245145B2 (en) 2003-06-11 2007-07-17 Micron Technology, Inc. Memory module and method having improved signal routing topology
US7120743B2 (en) 2003-10-20 2006-10-10 Micron Technology, Inc. Arbitration system and method for memory responses in a hub-based memory system
JP4391200B2 (ja) * 2003-11-05 2009-12-24 株式会社日立製作所 ディスクアレイ装置及びディスクアレイ装置の制御方法
JP4104538B2 (ja) * 2003-12-22 2008-06-18 三洋電機株式会社 リコンフィギュラブル回路、リコンフィギュラブル回路を備えた処理装置、リコンフィギュラブル回路における論理回路の機能決定方法、回路生成方法および回路
US7366864B2 (en) * 2004-03-08 2008-04-29 Micron Technology, Inc. Memory hub architecture having programmable lane widths
US7590797B2 (en) * 2004-04-08 2009-09-15 Micron Technology, Inc. System and method for optimizing interconnections of components in a multichip memory module
US7392331B2 (en) 2004-08-31 2008-06-24 Micron Technology, Inc. System and method for transmitting data packets in a computer system having a memory hub architecture
US7266667B2 (en) * 2004-11-12 2007-09-04 Infineon Technologies Ag Memory access using multiple sets of address/data lines
JP4892852B2 (ja) * 2005-03-29 2012-03-07 富士通セミコンダクター株式会社 シリアルインターフェースの制御方法
JP4158935B2 (ja) * 2005-09-12 2008-10-01 シャープ株式会社 メモリカード用入出力装置及びその制御方法
US7803732B1 (en) * 2006-05-09 2010-09-28 BAE Systems Advanced Ceramics, Inc. Compositions for improved ceramic armor
JP5179834B2 (ja) * 2007-10-31 2013-04-10 ルネサスエレクトロニクス株式会社 半導体装置及びデータ処理システム
US8341303B2 (en) * 2008-06-30 2012-12-25 Intel Corporation Asymmetrical universal serial bus communications
US8412900B1 (en) * 2011-09-27 2013-04-02 Hitachi, Ltd. Storage system and volume pair synchronization method
US11822484B2 (en) * 2021-12-20 2023-11-21 Advanced Micro Devices, Inc. Low power cache

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4250547A (en) * 1977-08-27 1981-02-10 Nippon Electric Co., Ltd. Information processing apparatus capable of effecting parallel processings by using a divided common bus

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5951186B2 (ja) * 1979-10-19 1984-12-12 日本電信電話株式会社 制御装置
DE3242958A1 (de) * 1982-11-20 1984-05-24 Philips Kommunikations Industrie AG, 8500 Nürnberg Nebenstellenanlage
US4707673A (en) * 1986-06-10 1987-11-17 Gulton Industries, Inc Directional coupling transformer for bi-directional full duplex data bus
JP2910303B2 (ja) * 1990-06-04 1999-06-23 株式会社日立製作所 情報処理装置
JP2502403B2 (ja) * 1990-07-20 1996-05-29 三菱電機株式会社 Dma制御装置
US5195089A (en) * 1990-12-31 1993-03-16 Sun Microsystems, Inc. Apparatus and method for a synchronous, high speed, packet-switched bus
DE4207573C2 (de) * 1992-03-10 1996-08-01 Siemens Nixdorf Inf Syst Parallele Schnittstelle zum Verbinden von Datenverarbeitungsgeräten
JP3369227B2 (ja) * 1992-11-09 2003-01-20 株式会社東芝 プロセッサ
DE4239461A1 (de) * 1992-11-24 1994-05-26 Siemens Ag Anordnung zur Übertragung von Daten über einen Bus
US5373467A (en) * 1993-11-10 1994-12-13 Silicon Storage Technology, Inc. Solid state memory device capable of providing data signals on 2N data lines or N data lines
US5649127A (en) * 1994-05-04 1997-07-15 Samsung Semiconductor, Inc. Method and apparatus for packing digital data

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4250547A (en) * 1977-08-27 1981-02-10 Nippon Electric Co., Ltd. Information processing apparatus capable of effecting parallel processings by using a divided common bus

Also Published As

Publication number Publication date
JPH10105308A (ja) 1998-04-24
US5872944A (en) 1999-02-16

Similar Documents

Publication Publication Date Title
DE19636381C1 (de) Bus mit anforderungsabhängiger Anpassung der in beiden Richtungen zur Verfügung stehenden Bandbreite
DE69127101T2 (de) System für verteilte mehrfachrechnerkommunikation
DE3114961C2 (de)
DE69029648T2 (de) Hochleistungsschnittstelle für anteilig genutzten Hauptspeicher
DE68927172T2 (de) Multiprozessorsystem mit cache-speichern
DE3688893T2 (de) Datentransfer und Puffersteuerung mit mehrfachen prozesstransparenten Speicherbetriebsarten.
DE60010907T2 (de) Sram-steuerungvorrichtung für parallele prozessorarchitektur mit adressen- und befehlswarteschlange und arbiter
DE3782335T2 (de) Speichersteuersystem.
DE69323790T2 (de) Verfahren und Vorrichtung für mehreren ausstehende Operationen in einem cachespeicherkohärenten Multiprozessorsystem
EP0006164B1 (de) Multiprozessorsystem mit gemeinsam benutzbaren Speichern
DE69721394T2 (de) Verfahren und Vorrichtung für einen Kohärenzumwandler mit begrenztem Speicher zur Verbindung von Rechnersystem-Kohärenzdomänen
DE1299145B (de) Schaltungsanordnung zum Steuern von peripheren Ein- und Ausgabegeraeten von Datenverarbeitungssystemen
DE2226382B2 (de) Datenverarbeitungsanlage mit mehreren Prozessoren und diesen zugeordneten Pufferspeichern
DE2755897A1 (de) Ein/ausgabe-system
DE3741850A1 (de) Ausfuehrungseinheit fuer einen i/o-prozessor
DE69219848T2 (de) Verfahren zur Behandlung von Datenübertragungen in einen Computersystem mit einem Zweibusbau
DE10045915A1 (de) Verfahren und System zum Steuern von Datenübertragungen mit physikalischer Trennung der Datenfunktionalität von der Adressen- und Steuerfunktionalität in einem verteilten Multi-Bus-Mehrprozessorsystem
DE69033412T2 (de) Datenübertragungssteuervorrichtung für Parallelverarbeitungssysteme
DE69601750T2 (de) Videoverarbeitungseinheit mit nicht-abstellender Unterbrechungsverarbeitung
DE3502147A1 (de) Datenverarbeitungssystem mit verbesserter pufferspeichersteuerung
DE3936339C2 (de) DMA-Controller
DE69712587T2 (de) Mikrorechner mit Zugriff auf einen externen Speicher
DE69031960T2 (de) Mikroprozessor, der mit einem Coprozessor zusammenarbeitet
EP1308846B1 (de) Datenübertragungseinrichtung
DE3200042C2 (de)

Legal Events

Date Code Title Description
8100 Publication of the examined application without publication of unexamined application
D1 Grant (no unexamined application published) patent law 81
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee