DE69422221T2 - Genaue und komplette Übertragung zwischen verschiedenen Busarchitekturen - Google Patents
Genaue und komplette Übertragung zwischen verschiedenen BusarchitekturenInfo
- Publication number
- DE69422221T2 DE69422221T2 DE69422221T DE69422221T DE69422221T2 DE 69422221 T2 DE69422221 T2 DE 69422221T2 DE 69422221 T DE69422221 T DE 69422221T DE 69422221 T DE69422221 T DE 69422221T DE 69422221 T2 DE69422221 T2 DE 69422221T2
- Authority
- DE
- Germany
- Prior art keywords
- bus
- data
- pci
- peripheral
- contiguous
- 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
- 230000005540 biological transmission Effects 0.000 title claims description 3
- 238000012546 transfer Methods 0.000 claims abstract description 112
- 230000002093 peripheral effect Effects 0.000 claims abstract description 63
- 238000000034 method Methods 0.000 claims description 17
- 230000010365 information processing Effects 0.000 claims description 15
- 230000004913 activation Effects 0.000 claims description 11
- 238000004513 sizing Methods 0.000 abstract description 3
- 230000007257 malfunction Effects 0.000 abstract 1
- 238000004891 communication Methods 0.000 description 9
- 108050001922 30S ribosomal protein S17 Proteins 0.000 description 8
- 238000001994 activation Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 7
- 230000000977 initiatory effect Effects 0.000 description 6
- 230000008569 process Effects 0.000 description 6
- 238000012360 testing method Methods 0.000 description 6
- 239000000872 buffer Substances 0.000 description 5
- 230000011664 signaling Effects 0.000 description 3
- 238000012545 processing Methods 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 239000003292 glue Substances 0.000 description 1
- 239000003999 initiator Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000000630 rising effect Effects 0.000 description 1
- 238000000926 separation method Methods 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/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4009—Coupling between buses with data restructuring
- G06F13/4018—Coupling between buses with data restructuring with data-width conversion
-
- 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/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Bus Control (AREA)
- Small-Scale Networks (AREA)
- Image Processing (AREA)
- Information Transfer Systems (AREA)
- Radar Systems Or Details Thereof (AREA)
Description
- Die vorliegende Erfindung betrifft im allgemeinen Informationsverarbeitungssysteme, und im einzelnen ein Verfahren und Gerät zum Sicherstellen, daß Datenübermittlungen zwischen Komponenten und Peripheriegeräten, die in einem Informationsverarbeitungssystem an zwei unterschiedliche Busarchitekturen angeschlossen sind, komplett und genau sind, wenn die Übermittlung von einer an eine Busarchitektur angepaßten Vorrichtung oder Komponente zu einer an eine andere Busarchitektur angepaßten Vorrichtung oder Komponente geht.
- Nehmen wir zunächst allgemein Bezug auf Informationsverarbeitungssysteme; diese haben in der Regel als Hauptkomponente eine Zentraleinheit (CPU - Central Processing Unit), die alle Kommunikationen im System lenkt und alle durch das Informationsverarbeitungssystem auszuführende Befehle aufbaut. Informationsverarbeitungssysteme haben im allgemeinen auch ein Netzwerk oder mehrere Netzwerke physikalischer Verbindungsvorrichtungen, die Busse genannt werden. Diese Netzwerke verbinden die CPU mit beliebig vielen Peripheriegeräten und Komponenten, so daß die CPU mit den Peripheriegeräten und den Komponenten kommunizieren kann.
- Ein Bustyp, der in Informationsverarbeitungssystemen benutzt wird, ist ein CPU-Lokalbus. Auch als Systembus bezeichnet, ist der CPU-Lokalbus spezifisch konstruiert, um die CPU direkt mit den Hauptkomponenten des Informationsverarbeitungssystems, wie Systemspeicher und Speicher-Controller, zu verbinden. Ein CPU-Lokalbus ist ein Hochleistungsbus, das bedeutet, daß er Datenübertragungen zwischen der CPU und den anderen an den Bus angeschlossenen Komponenten mit hoher Geschwindigkeit durchführt und eine Vielzahl von Datenübertragungen gleichzeitig behandeln kann. Ein anderer Bustyp, der in einem Informationsverarbeitungssystem vorkommt, ist ein Peripheriebus. Peripheriebusse sind konstruiert, um Peripheriegeräte, wie z. B. Eingangs/Ausgangsvorrichtungen (E/A) (Input/Output - I/O) und Graphikpakete, an das Informationsverarbeitungssystem anzuschließen. Peripheriebusse sind in der Regel über eine Hauptrechnerbrücke, die den Peripheriebus mit einem CPU-Lokalbus verbindet, an die CPU und die übrigen zentralen Komponenten des Informationsverarbeitungssystems angeschlossen.
- Jeder Bustyp hat einen anderen Satz Standardprotokolle d. i. Regeln, die er benutzt, um die Datenübertragungen zwischen den unterschiedlichen, an ihn angeschlossenen Vorrichtungen und Komponenten durchzuführen. Diese Protokolle sind auf den Bus bezogen aufgebaut und heißen die "Architektur" des Busses. Verschiedene Protokolle, die eine Art Busarchitektur umfassen können, sind die Bit-Länge der Datenketten, die der Bus erkennt, ob unterschiedliche Signale aktiviert werden, wenn sie tief bzw. hoch stehen, ob Daten auf dem Bus auf nur einer Leitung gemultiplext werden oder über mehrere Leitungen parallel übertragen werden, oder ob gewisse Datentypen nicht akzeptiert werden und eine Störung im Informationsverarbeitungssystem oder einen "Absturz" bewirken.
- Das IBM Technical Disclosure Bulletin, Bd. 33 Nr. 12, Mai 1991, S. 409, offenbart ein Hochgeschwindigkeits-Datenübertragungs-Protokoll, in dem Vorrichtungen sequentiell Datenblöcke übertragen durch Treiben eines Adressenzyklus, gefolgt von vielen komprimierten Datenzyklen. Das Strömen der Daten wird nur dann bewirkt, wenn die zu übertragenden Daten kein kleiner sequentieller Datenblock sind.
- Die Busarchitekturen der CPU-Lokalbusse und der Peripheriebusse sind in der Regel unterschiedlich. Die unterschiedlichen Architekturen erzeugen Kommunikationsprobleme, wenn Daten zwischen Peripheriegeräten übertragen werden müssen, die an einen Peripheriebus angeschlossen sind, und die CPU oder eine andere Komponente des Systems an den CPU-Lokalbus angeschlossen ist. Da unterschiedliche Busarchitekturen von einer solchen Datenübertragung betroffen sind, können Daten, die von der ersten Busarchitektur her übertragen werden, möglicherweise nicht in einer Form sein, die für die zweite Busarchitektur brauchbar oder für diese verständlich ist.
- Damit wird ein Gerät und ein Verfahren benötigt, um die von einer Busarchitektur zu einer anderen zu übertragenden Daten zu "übersetzen". Die Hardware und die Logik, die zum Übersetzen der zwischen zwei unterschiedlichen Busarchitekturen zu übertragenden Daten benutzt wird, die ist in der Regel in der Brücke enthalten, durch die die beiden unterschiedlichen Busse verbunden sind.
- Daher muß die Hauptrechnerbrücke, die einen CPU-Lokalbus und einen Peripheriebus verbindet, die Logik und die Hardware enthalten, die die Kommunikationen zwischen den beiden Bussen übersetzen, und sicherstellen, daß Daten zwischen den beiden Bussen verständlich übertragen werden.
- Ein Unterschied zwischen den Bus-Architekturen eines CPU- Lokalbusses und eines Peripheriebusses ist die Reaktion der betreffenden Busse auf das Vorkommen nichtzusammenhängender Daten, die auf ihnen übertragen werden. Nichtzusammenhängende Daten bestehen aus Bytes aktivierter Daten, die durch ein Byte oder mehrere Bytes nichtaktivierter Daten getrennt sind. Nichtaktivierte oder deaktivierte Daten sind Daten, die unverständlich sind und bei der betreffenden Datenübertragung ignoriert und nicht übertragen werden sollten. Einige Peripheriebustypen und an diese Peripheriebusse angeschlossene Geräte können nichtzusammenhängende Daten übertragen, ohne daß es zu einer Störung kommt. Im Gegensatz dazu kann die Übertragung nichtzusammenhängender Daten über einen CPU-Bus dazu führen, daß das Informationsverarbeitungssystem abstürzt oder eine ernste Störung auftritt.
- Ein weiterer Unterschied zwischen Peripheriebusarchitektur und CPU-Lokalbus-Architektur besteht darin, daß der CPU- Lokalbus Daten unterschiedlicher Bitlänge verständlich übertragen kann, während Peripheriebusse auf eine Standardbitlänge für Datenübertragungen beschränkt sein können. Somit ist also der CPU-Lokalbus kompatibel mit Komponenten, die zum Übertragen und Empfangen von Daten unterschiedlicher Länge ausgelegt sind. Zum Beispiel kann eine Komponente, die nur acht Bit lange Datenketten übertragen und empfangen kann, Daten empfangen und übertragen, wenn sie an einen CPU-Lokalbus angeschlossen ist. Auf ähnliche Weise kann auch eine 16- Bit- oder 32-Bit-Komponente den CPU-Lokalbus zur Datenübertragung benutzen. Die Fähigkeit des CPU-Lokalbusses zum Bedienen der Datenübertragung unterschiedlicher Bit-Längen heißt dynamische Busbemessung.
- Im Gegensatz dazu kann ein Peripheriebus auf das Übertragen von Datenketten einer Standard-Bit-Länge, wie z. B. 32 Bits, beschränkt sein. Somit kann eine Komponente, die an einen CPU-Lokalbus angeschlossen ist, der nur Daten einer Bitlänge überträgt und empfängt, die sich von der Standardbitlänge für auf einem bestimmten Peripheriebus übertragene Daten unterscheidet, nicht ohne eine Art zwischengeschalteter Datenkonvertierung mit den an den Peripheriebus angeschlossenen Peripheriegeräten kommunizieren.
- Es ist also eine Aufgabe der Erfindung, ein Verfahren und ein Gerät bereitzustellen, das festlegt, ob auf einem CPU-Lokalbus zu übertragende Daten nichtzusammenhängend sind, und wenn doch, die nichtzusammenhängenden Daten durch zusammenhängende Daten ersetzt, um sicherzustellen, daß auf dem CPU-Lokalbus keine Störung auftritt.
- Eine weitere Aufgabe der Erfindung ist es, ein Verfahren und ein Gerät bereitzustellen, das Datenübertragungen zwischen einer Vorrichtung, die an einen Peripheriebus angeschlossen ist, und einer Komponente, die an den CPU-Lokalbus angeschlossen ist, der für eine Daten-Bit-Länge ausgelegt ist, die sich von der Standard-Datenbitlänge in der Architektur des Peripheriebusses unterscheidet, übersetzt.
- Noch eine Aufgabe der Erfindung ist es, diese Verfahren und Geräte als Hardware vorzusehen, die eine Hauptrechnerbrücke umfaßt, die den CPU-Lokalbus mit dem Peripheriebus zusammenschaltet.
- Die Erfindung wird dargelegt in den Ansprüchen 1 und 11, wobei besondere Ausführungsformen in den Ansprüchen 2 bis 10, bzw. 12 bis 14 angezogen werden.
- Gemäß der vorliegenden Erfindung wird eine Härdware-Logik in einer Hauptrechnerbrücke vorgesehen, die einen CPU-Lokalbus mit einem Peripfieriebus zusammenschaltet, und die bestimmt, ob auf einem CPU-Lokalbus zu übertragende Daten nicht- zusammenhängend sind, und wenn ja, die nichtzusammenhängenden Daten durch zusammenhängende Daten ersetzt, um sicherzustellen, daß im CPU-Lokalbus keine Störung auftritt. Die erfindungsgemäße Hardware übersetzt auch die Datenübertragungen zwischen einem Peripheriebus, der durch seine Architektur auf Datenketten einer Standardlänge beschränkt ist, und einem CPU-Lokalbus, der die dynamische Busbemessung ermöglicht.
- Hier nachstehend soll die Erfindung anhand der begleitenden Zeichnungen beschrieben werden; in diesen ist
- Fig. 1 ein Blockschaltbild eines Informationsverarbeitungssystems mit Mehrfachbussen;
- Fig. 2 ist ein Ablaufdiagramm von zwei aufeinanderfolgenden Schreibzyklen in einem PCI-Bus (Peripheral Component Interconnect - Peripheriekomponenten-Verschaltung);
- Fig. 3 ist ein Ablaufdiagramm von zwei aufeinanderfolgenden Lesezyklen auf einem PCI-Bus; und
- Fig. 4 ist ein logisches Diagramm einer Byte-Aktivierungssteuerhardware innerhalb einer Hauptrechnerbrücke.
- Nehmen wir jetzt Bezug auf Fig. 1; ein generell unter 10 dargestelltes Doppelbus-Informationsverarbeitungssystem 10 umfaßt (1) einen Prozessor-, Cache- und Speicherkomplex 12, der über einen S-Bus (Systembus) 16 an S-Bus-Vorrichtungen 14 angeschlossen ist, und (ii) primäre Periphetiekomponenten- Verschaltungs-(PCI)-Vorrichtungen 18, die mit einer der S- Bus-Vorrichtungen, einer Primär-PCI-Hauptrechnerbrücke 2D, über einen primären PCI-Bus 22 angeschlossen sind. Genauere Beschreibungen des Prozessor-, Cache- und Speicherkomplexes 12, der S-Bus-Vorrichtungen 14, der Primär-PCI-Vorrichtungen 18 und der sonstigen Elemente gemäß Fig. 1 werden nachstehend gegeben.
- Der Prozessor-, Cache- und Speicherkomplex 12 enthält eine Zentraleinheit (Central Processing Unit - CPU) 24, eine Eigenprüfungsschaltung 26, einen Speicher-Controller 28, einen CPU-Cache 30 und einen Basissystemspeicher 32. In der bevorzugten Ausführungsform ist die CPU 24 ein 32-Bit-Mikroprozessor, erhältlich bei Intel, Inc. unter der Handelsbezeichnung 1486TM, wobei natürlich zu überlegen ist, daß das System 10 auch mit anderen CPU-Typen, insbesondere mit Mikroprozessoren vom x86-Typ aufgebaut werden kann. Die Eigenprüfungsschaltung 26 sieht eine eingebaute Selbsttestvorrichtung (BIST - built-in-self-test) für die CPU 24 beim Einschalten vor. Die Eigenprüfungsschaltung steuert jede beliebige Selbsttestvorrichtung, die in jeder der S-Bus- Vorrichtungen 14 vorgesehen sein kann.
- Die CPU 24 ist über einen CPU-Lokalbus 34 mit der Selbsttestschaltung 26 und dem Speicher-Controller 28 verbunden. Der Speicher-Controller ist über einen Basissystemspeicherbus 36 mit dem Basissystemspeicher 32 verbunden. Der Speicher- Controller 28 steuert Lese- und Schreiboperationen auf den Basissystemspeicher 32 über den Basissystemspeicherbus 36, wobei diese Operationen entweder von der CPU 24 über den CPU- Lokalbus 34 oder von einer S-Busvorrichtung 14 über den S-Bus 16 ausgelöst werden. Da der Speicher-Controller die Fähigkeit aufweist, Operationen auf zwei Bussen zu verwalten, können Operationen über den Basissystem-Speicherbus 36 und den CPU- Lokalbus 34 gleichzeitig verwaltet werden. Der CPU-Lokalbus 34, der Basissystem-Speicherbus 36 und der S-Bus sind 32-Bit- Busse, deren jeder Daten-, Adressen- und Steuerinformationspfade enthält, wie es für solche Busse typisch ist.
- Der Basissystemspeicher 32 sieht systemweite Speicherfähigkeit vor und kann entweder nichtverschachtelte oder verschachtelte Speicherkarten enthalten. Der CPU-Cache 30 ermöglicht die kurzzeitige Speicherung von Informationen, die entweder im Basissystemspeicher 32 oder in einem Erweiterungsspeicher enthalten sind, der an anderer Stelle innerhalb des Systems 10 sitzt. Ein solcher Erweiterungsspeicher könnte z. B. in einer peripher angeschlossenen E/A-Vorrichtung im System angeordnet sein. Der CPU-Cache 30 beinhaltet einen Direktzugriffsspeicher (RAM - Random Access Memory), der benutzt wird, um zeitweilig Adressenorte des Basissystemspeichers 32 zu speichern, auf die die CPU 24 häufig zugreift. Die CPU 24 greift direkt auf Informationen zu, die im CPU-Cache 30 abgespeichert sind, während Zugriffe auf Informationen, die im Basissystemspeicher 32 gespeichert sind, vom Speicher-Controller 28 abgewickelt werden müssen.
- Alle Zugriffe auf den Basissystemspeicher 32 werden vom Speicher-Controller 28 über den Systemspeicherbus 36 gesteuert. Der Speicher-Controller läßt Systemspeicherzyklen auf dem Basissystemspeicher 32 anlaufen, während dieser Zyklen hat entweder die CPU 24 oder eine der S-Bus-Vorrichtungen 14 über den Speicher-Controller 28 Zugriff auf den Basissystemspeicher. Während eines Speicherzyklus, der auf ihn gerichtet ist, spricht der Speicher-Controller 28 auf den Speicherzyklus an. Wenn jedoch der Speicherzyklus nicht auf den Speicher-Controller 28 gerichtet ist, geht die Information auf den S-Bus 16 über. Wenn der Speicher-Controller 28 feststellt, daß die Operation, die er verwaltet, ein E/A- Zyklus ist, legt der Speicher-Controller die Information auf den S-Bus 16 zum Zugriff darauf durch eine S-Bus-Vorrichtung. Wenn der E/A-Zyklus für eine S-Bus-Vorrichtung bestimmt ist, reagiert der entsprechende S-Bus mit einem Dekodierbefehl an den Speicher-Controller. Wenn die E/A-Operation für eine primäre PCI-Vorrichtung 18 bestimmt ist, reagiert die PCI- Hauptrechnerbrücke 20 mit einem Dekodierbefehl an den Speicher-Controller und legt den E/A-Zyklus auf die entsprechende primäre PCI-Vorrichtung.
- Ein System-Taktmodul 38 liefert ein Einzeltaktsignal für die S-Bus-Vorrichtungen 14, und ein Taktsignalpaar für die CPU 24. In der bevorzugten Ausführungsform arbeitet das an den S- Bus gelegte Taktsignal mit 33 MHz. Die zwei an die CPU 24 gegebenen Signale arbeiten mit 33 MHz bzw. 66 MHz. Die CPU 24 braucht zwei Taktsignale, weil sie intern mit 66 MHz arbeitet, aber mit 33 MHz über den CPU-Lokalbus 34 kommuniziert.
- Kommunikationen zwischen dem Prozessor-, Cache- und Speicherkomplex 12 und den S-Bus-Vorrichtungen werden vom Speicher- Controller 28 über den 32-Bit-S-Bus 16 verwaltet. Angeschlossen an den S-Bus, wie in der bevorzugten Ausführungsform der Fig. 1 gezeigt, sind auch ein Direktspeicherzugriff- (DMA)-Controller 40 (DMA - Direct Memory Access), ein System- Entscheidungs-Steuerpunkt (SACP - System Arbitration Control Point) 42, ein Eingangs/Ausgangs (E/A) - (I/O) Controller 44, ein PCMCIA-Controller 46, und ein Leistungsverwaltungs- Controller 48. Ein wahlweiser Leistungsverwaltungs-Controller 50 kann an den Leistungsverwaltungs-Controller 49 angeschlossen sein, falls eine weiter entwickelte Leistungsverwaltungssteuerung gewünscht wird. Am S-Bus 16 ist ein Puffer 52 zwischen dem DMA-Controller 40 und dem E/A-Controller 44 vorgesehen. Wie jedoch in Fig. 1 gezeigt, ist dabei zu überlegen, daß noch andere S-Bus-Vorrichtungen 14, zusätzlich zu den gezeigten, an den S-Bus 16 angeschlossen werden können.
- Der PCMCIA-Controller 46 ist direkt an die PCMCIA-Kartenschlitze 54 gelegt. Peripherie-E/A-Vorrichtungen 56 können über Puffer 58 an die PCMCIA-Kartenschlitze 54 angeschlossen sein. Die peripheren E/A-Vorrichtungen 56 werden vom E/A- Controller 44 gesteuert. Angeschlossen an die E/A-Controller sind ein Uhrzeitgeber 60 und ein RAM-Modul 62. Der E/A- Controller 44 unterstützt eine Reihe Ports, einschließlich eines Maus-Ports 64, serielle Ports 66, einen Prallelport 68 und einen Tastaturport 70.
- Zusätzlich zur Unterstützung der S-Bus-Vorrichtungen 14 auf dem S-Bus 16 unterstützt das System 10 auch einen zweiten Hochgeschwindigkeits-Hochbandbreiten-Bus, der in der bevorzugten Ausführungsform der primäre PCI-Bus 22 ist. Der PCI- Bus 22 besteht aus einer neuen Bus-Architektur, genannt PCI. Der primäre PCI-Bus 22 ist ein Hochleistungsbus, das heißt, er führt einen signifikanten Datentransfer in verhältnismäßig kurzer Zeit durch, bis zu 120 MBytes Daten die Sekunde. Der PCI-Bus erbringt diese hohe Leistung teilweise weil er direkt an andere Hochgeschwindigkeitsbusse, wie z. B. den S-Bus 14 angeschlossen ist, und kann auf diese Weise für einen schnellen Datentransfer zwischen der CPU 24 oder anderen S- Bus-Vorrichtungen 14 und den primären PCI-Vorrichtungen 18 sorgen. In der Tat, die Operation verschiedener hochintegrierter Vorrichtungen, wie z. B. bestimmte Graphikpackungen, erfordern ein Direktverbindungselement zu einem Systembus, wie z. B. den S-Bus, durch einen Hochleistungsbus, wie z. B. den PCI-Bus 22.
- Zusätzlich braucht die PCI-Busarchitektur keine Randlogik ("glue logic"), um angeschlossene Peripherievorrichtungen zu betreiben. Randlogik für andere Busse besteht in der Regel aus verschiedenen Hardware-Komponenten, wie z. B. Dekodierer, Puffer oder Zwischenspeicher, die zwischen den Peripherievorrichtungen und dem Bus angeordnet sind.
- Der primäre PCI-Bus 22 arbeitet mit einem synchronen Taktsignal von 33 MHz, und die über den PCI-Bus geschickten Datenketten sind 32 Bits lang. Eine 32-Bit-Datenkette auf dem PCI-Bus heißt ein Doppelwort (DWORD), das sich aus 4 Bytes zusammensetzt, die jeweils aus 8 Datenbits bestehen.
- Die vom PCI-Bus getragenen Adressen- und Dateninformationen werden in ein Sighal gemultiplext. Multiplexen beseitigt die Notwendigkeit für gesonderte Adressen- und Datenleitungen, was seinerseits die Menge der Signale reduziert, die in einer PCI-Busumgebung erforderlich sind, im Gegensatz zu anderen Busarchitekturen. Die Anzahl Signale, die in der PCI-Busarchitektur nötig ist, liegt zwischen 45 und 47, während nicht gemultiplexte Standardbusse in der Regel die doppelte Anzahl brauchen. Dementsprechend, weil die Anzahl der Signale reduziert ist, reduziert sich auch die Anzahl der Kontaktstifte, die zur Unterstützung einer an den PCI-Bus angeschlossenen Vorrichtung nötig ist, um eine entsprechende Anzahl. Die PCI-Architektur ist daher besonders für hochintegrierte Desktop-Rechnersysteme geeignet.
- Eine in weitere Einzelheiten gehende Beschreibung der Struktur und des Betriebs der PCI-Busarchitekur findet sich in "Peripheral Component Interconnect (PCI) Revision 1.0 Specification", veröffentlicht am 22. Juni 1992; "Preliminary PCI System Design Guide", Revision 0.6, veröffentlicht am 1. November 1992; "Peripheral Component Interconnect (PCI) Addin Board/Connector Addendum", (Entwurf), veröffentlicht am 6. November 1992; und "Peripheral Component Interconnect (PCI) Revision 2.0 Specification", veröffentlicht am 30. April 1993, alle von der PCI Special Interest Group.
- Primäre PCI-Vorrichtungen 18 im System 10 kommunizieren miteinander über den Primär-PCI-Bus 22. Primär-PCI-Vorrichtungen kommunizieren mit dem CPU-, Cache- und Speicherkomplex 12, und mit anderen auf dem S-Bus 16 residenten S-Bus-Vorrichtungen 14, über die PCI-Hauptrechnerbrücke 20, die selbst eine S-Bus-Vorrichtung ist, die auf dem S-Bus resident ist. Die PCI-Hauptrechnerbrücke 20 dient dann als Schnittstelle zwischen dem S-Bus 16 und dem primären PCI-Bus 22, und liefert ein wirksames Mittel der Kommunikation zwischen diesen zwei Bussen, sowie jeder Peripherievorrichtung, die möglicherweise auf diesen Bussen resident ist.
- Die PCI Hauptrechnerbrücke 20 ist ein Zusammenschaltmechanismus niedriger Latenz, durch den die CPU 24 oder eine andere S-Bus-Vorrichtung 14 direkt auf die Primär-PCI-Vorrichtungen 18 oder damit verbundene Vorrichtungen zugreifen kann. Die Brücke 20 sieht auch einen Hochleistungspfad vor, der den primären PCI-Vorrichtungen oder damit verbundenen Vorrichtungen einen schnellen und direkten Zugriff auf den Basissystemspeicher 32 ermöglicht. Zusätzlich bietet die Hauptrechnerbrücke 20 alle Hardware, die erforderlich ist, um eine Schnittstelle zwischen dem S-Bus 16 und dem Primär-PCI-Bus 22 zu bilden, so daß Daten zwischen diesen Bussen übertragen werden können.
- Der Primär-PCI-Bus 22 ist in der Lage, eine Reihe von Vorrichtungen zu unterstützen, die PCI-kompatibel sind. Wie in Fig. 1 gezeigt wird, können diese Vorrichtungen umfassen einen Graphik-Controller 72, einen seriellen SCSI-Controller 74 (small computer systems Interface - Kleinrechnersystem- Schnittstelle), einen künftigen PCMCIA-Controller 76, eine Standard-Bus-Brücke 78 (z. B. ISA oder MICRO CHANNEL ("MC-A")) und eine PCI-Sekundärbrücke 80. Die Vorrichtungen gemäß Fig. 1, die an den Primär-PCI-Bus angeschlossen sind, sind jedoch nur ein Beispiel für ein System, das die PCI-Busarchitekur und damit die geoffenbarte Konfiguration implementiert, und ist keineswegs einschränkend für die Erfindung zu verstehen. Der Graphik-Controller 72 weist in der Regel eine Speichermöglichkeit in der Form des VRAM 82 auf, der es dem Graphik- Controller gestattet, Videobilder darin zu puffern, und kann jedes bekannte Graphikpaket steuern, das von der PCI Busarchitektur unterstützt wird. Der SCSI-Controller 74 dient als Schnittstelle zwischen SCSI-Vorrichtungen 84, die an einem SCSI-Bus 86 hängen, und dem primären PCI-Bus 22, und kann jede SCSI-Vorrichtung steuern, die von der PCI-Busarchitektur unterstützt wird. Der künftige PCMCIA-Controller 76 ist mit Kartenschlitzen 88 verbunden und steuert diese.
- Die Standardbusbrücke 78 dient als Schnittstelle zwischen E/A-Vorrichtungen 90, die an einem Standardbus 92 (z. B. MC-A oder ISA) und dem primären PCT-Bus 22 hängen. Die Architektur einer MC-A-Version der Standardbusbrücke 78 ist der Gegenstand der folgenden gleichzeitig anhängigen Patentanmeldungen, übertragen auf die IBM Corporation:
- Sekundär-PCI-Vorrichtungen 94 sind über den Sekundär-PCI-Bus 96 mit der PCI-Brücke 80 verbunden. Jede beliebige Anzahl nichtidentifizierter Sekundär-PCI-Vorrichtungen kann mit dem Sekundär-PCI-Bus 96 verbunden sein. Die PCI-Brücke 80 dient als Schnittstelle zwischen einer beliebigen Anzahl an den sekundären PCI-Bus 96 angeschlossenen PCI-Vorrichtungen 94 und dem primären PCI-Bus 22.
- Jede beliebige Anzahl mit der PCI-Busarchitektur kompatibler Peripheriegeräte kann auf dem primären PCI-Bus 22 angeordnet sein, ohne daß andere PCI-Busse im gesamten Rechnersystem 10 vorhanden sind; oder jede beliebige Anzahl PCI Peripherievorrichtungen könnte mit jeder beliebigen Anzahl sekundärer PCI-Busse, zusätzlich zum PCI-Bus 96, an den primären PCT-Bus angeschlossen sein, angeschlossen über die gleiche Anzahl getrennter, entsprechender PCI-Brücken 80 an den primären PCI-Bus 22. Jeder sekundäre PCI-Bus könnte auch jede belie bige Anzahl zusätzlicher PCI-Busse aufweisen, die über PCI- Brücken an ihn angehängt sind, und diese "tertiären" PCI- Busse könnten weitere PCU-Busse in verschiedenen Kombinationen angehängt haben. Auf ähnliche Weise kann jeder PCI-Bus eine beliebige Anzahl PCI-Vorrichtungen angehängt haben. Jede Verbindung zwischen zwei PCI-Bussen muß über eine PCI-Brücke laufen, die identisch mit der Brücke 80 ist.
- Ferner ist es möglich, daß eine Vielzahl von Brücken, die identisch mit der PCI-Hauptrechnerbrücke 20 sind, von S-Bus 16 getrieben werden können. Jede dieser Hauptrechnerbrücken könnte dann eine beliebige Anzahl PCI-Busse, Brücken und Vorrichtungen in jeder beliebigen Anordnung angeschlossen haben, die der Konstrukteur des Systems 10 will. Der Teil des Systems 10, der PCI-Busarchitektur enthält, kann Mehrfachbusse und PCI-Peripherievorrichtungen enthalten, die in verschiedenen gleichgestellten und hierarchischen Kombinationen angeordnet sind (nachstehend im allgemeinen als PCI- Netz bezeichnet).
- Zusätzlich eliminiert eine alternative Konfiguration des Informationsverarbeitungssystems 10 den S-Bus 16, so daß die Hauptrechnerbrücke 20 den primären PCI-Bus 22 direkt an den CPU-Lokalbus 34 hängt. In dieser Konfiguration könnte jede S- Busvorrichtung 14 direkt an den CPU-Lokalbus 34 angeschlossen sein. Da der S-Bus 16 und der CPU-Lokalbus 34 unter Verwendung identischer Architekturen arbeiten, funktioniert die nachstehend beschriebene Erfindung auf gleiche Weise in jeder alternativen Ausführungsform wie in der bevorzugten Ausführungsform, die in Fig. 1 beschrieben ist.
- Nehmen wir jetzt Bezug auf Fig. 2; hier wird ein Ablaufdiagramm verschiedener PCI-Bussignale während zwei aufeinanderfolgender Schreibzyklen auf ein an den Primär-PCI-Bus 22 angeschlossenes Peripheriegerät gezeigt. Dieses Peripherie gerät könnte ein Graphik-Controller 72, eine Standardbusbrücke 78 oder eine beliebige Peripherievorrichtung sein, die von einem PCI-Bus getrieben werden kann. Auf ähnliche Weise sind die in Fig. 2 gezeigten Schreibzyklen typische PCI-Bus- Schreibzyklen und sind nicht allein auf den Primär-PCI-Bus 22 beschränkt. Es kann sich auch um Schreibzyklen auf dem Sekundär-PCI-Bus 96 oder einem anderen PCI-Bus im PCI- Netzwerk handeln.
- Das Taktsignal (CLOCK) sieht den Zeitablauf für alle Kommunikationen auf dem PCI-Netzwerk vor. CLOCK ist ein Eingang zu jeder PCI-Vorrichtung und zu allen PCI-Brücken. CLOCK ist synchron, d. h., alle Kommunikationssignale haben in der PCI- Architektur eine Dauer von mindestens einem Takt, und alle Befehle oder Datentransfers werden für die Dauer mindestens eines Takts übertragen. In Fig. 2 sind die Signale durch senkrechte gestrichelte Linien in einzelne "Takte" getrennt. Jede gestrichelte Linie stellt den Anfang eines Takts und das Ende des unmittelbar vorhergehenden Takts dar. Die Signale auf jeder Leitung werden abgefragt oder haben ihre effektive Bedeutung auf der ansteigenden Flanke des Taktsignals.
- Das Datenblocksignal (FRAME) wird von jeder PCI-Brücke oder Peripherievorrichtung, die mit dem PCI-Bus verbunden ist, benutzt, um zu zeigen, daß es einen Kommunikationszyklus oder einen Zugriff auf eine andere PCI-Brücke oder an den Bus angeschlossene Peripherievorrichtung einleitet. Die Peripherievorrichtung oder PCI-Brücke, die einen Zugriff einleitet, wird Master genannt. Die Vorrichtung oder Komponente, auf die der Zugriff gerichtet ist, wird Slave genannt. In der PCI-Busarchitektur werden viele Signale eingeschaltet d. i. aktiviert, wenn sie von einer höheren Spannung zu einer niedrigeren Spannung getrieben d. i. "tief" gesetzt werden. FRAME ist eines dieser Signale. Wenn also ein Master das ERAME-Signal tief setzt, wie in Takt 2 gezeigt wird, zeigt ein Master einem Slave an, daß er einen Zugriff einleitet.
- Das Signal 'Initiator bereit' (IRDY - Initiator Ready) wird ebenfalls aktiviert, wenn es tief geht, und zeigt an, wenn der Master zum Einleiten des Datentransfers bereit ist. Also setzt der Master IRDY tief, wenn er während eines Lesezyklus zur Datenaufnahme, bzw. während eines Schreibzyklus zum Übertragen der Daten an den Slave bereit ist.
- Das Signal 'Ziel bereit' TRDY - Target Ready) wird aktiviert wenn es tief geht, und zeigt an, daß der Slave zum Beginnen des Datentransfers bereit ist. Also setzt der Slave TRDY tief, wenn er während eines Schreibzyklus zur Datenaufnahme vom Master, bzw. während eines Lesezyklus zum Übertragen der Daten an den Master bereit ist.
- Das Adressen/Daten-Signal (AD) trägt sowohl die Adresse eines Registers, auf das der Datentransfer gerichtet ist, als auch die Daten, die auf eine Leitung gemultiplext, übertragen werden. Die Adresseninformation wird vom Master während einer Adressenphase auf AD gesetzt, wenn er FRAME ansteuert. Während der Datenphase nach der Adressenphase, in Abhängigkeit davon, ob der Zugriff ein Schreibzyklus oder ein Lesezyklus ist, wird der Master bzw. der Slave die Daten vorsehen, die dann auf die AD-Leitung gelegt werden. Die Adressenphase dauert einen Takt und die Datenphase ist mindestens einen Takt lang, kann aber auch länger sein als ein Takt, wenn der Datentransfer ein Burst-Transfer ist oder das Ansteuern von TRDY durch den Slave verzögert ist.
- Das Signal 'Befehl/Byte aktivieren' (C/BE - Command/Byte enable) liefert PCI-Busbefehle und ein Byte-Aktivierungssignal gemultiplext über eine einzige Leitung. Vom Master wird ein Busbefehl angesteuert, wenn er FRAME ansteuert und während der Adressenphase auf AD. Der Busbefehl kann entweder ein Lese- oder ein Schreibbefehl sein, in Abhängigkeit davon, welche Art Zugriff der Master anlaufen läßt.
- Die Byteaktivierungssignale liegen während des Datentransfers über AD auf C/BE. Die Byteaktivierungssignale sind in vier Bits enthalten, die die Identifizierungszahlen 0 bis 3 aufweisen. Wenn alle diese vier Bits tief aktiviert sind (Binärwert 0), zweigen sie an, daß alle vier Bytes, d. i. alle 32 Bits der auf AD übertragenen Daten aktiviert sind und beim Transfer geschrieben werden müssen. Wenn eines der vier Bits hoch liegt (Binärwert 1) dann wird eines der übertragenen vier Datenbits auf dem PCI-Bus deaktiviert.
- Die Funktion der verschiedenen PCI-Bus-Signale während der einfachen Schreiboperation, wie in Fig. 2 gezeigt, ist wie folgt:
- Während des zweiten Takts setzt ein Master den FRAME tief, was heißt, daß der Master einen Zugriff auf einen Slave anlaufen läßt. IRDY und TRDY sind während des zweiten Takts in einem Schleifenzyklus.
- Jetzt liefert der Master die Adresse des Registers im Slave, auf das der Zugriff auf der AD-Leitung abzielt. Gleichzeitig wird vom Master auf der C/BE-Leitung ein Schreibbefehl erzeugt.
- Beim dritten Takt wird FRAME freigegeben, was bedeutet, daß der Zugriff bereit zum Abschluß ist. Der Master hat jetzt die Steuerung der IRDY-Leitung übernommen und setzt sie tief, wodurch er anzeigt, daß der Master bereit zur Datenübertragung zum Slave ist. Auch hat der Slave die Steuerung der TRDY-Leitung übernommen und aktiviert sie tief, wodurch er angibt, daß er die Adresseninformation als eine Adresse eines Registers in such selbst dekodiert hat und bereit zur Über nahme der Daten in dieses Register ist. Somit werden im dritten Takt auf der AD-Leitung Daten vom Master in den Slave in sein dekodiertes Register übertragen.
- Wenn nach der Adressenphase die Datenphase beginnt, steuert der Master die Byteaktivierungssignale auf der C/BE-Leitung an, wodurch er anzeigt, ob die Daten aktiviert sind. Wenn eines oder mehrere der vier Bits hoch sind, dann ist das entsprechende Datenbyte auf der AD-Leitung nicht aktiviert.
- Im fünften Takt wiederholt sich das Ablaufdiagramm, da ein weiterer Schreibzyklus initiiert wurde. Der zweite Schreibzyklus könnte durch den gleichen Master oder auch durch einen anderen angelassen werden. Auf ähnliche Weise könnte auch das Ziel des Schreibzyklus der gleiche Slave sein oder aber auch ein ganz anderer.
- Um das Risiko einer Konkurrenzsituation zwischen den verschiedenen an den PCI-Bus angeschlossenen Vorrichtungen auszuschließen, geht jede Leitung durch einen Schleifenzyklus, bevor der zweite Schreibzyklus eingeleitet wird.
- Nehmen wir jetzt spezifisch Bezug auf Fig. 3; hier wird ein Ablaufdiagramm eines Lesezyklus und das Anlaufen eines weiteren Lesezyklus gezeigt. Während des Taktes Nr. 2 steuert der Master FRAME tief. FRAME bleibt tief für nur ein Taktsignal, während Takt Nr. 2, da es sich um eine Eindatenphasentransfer handelt. Auch die Adresseninformation wird vom Master auf AD geliefert und ein Lesebefehl wird während Takt Nr. 2 auf der C/BE-Leitung übertragen.
- In der dritten Taktfolge muß die AD-Leitung in einen Schleifenzyklus gehen, weil der Slave die Steuerung der AD-Leitung während des vierten Taktsignals übernehmen muß, um die Daten vorzusehen, deren Lesen der Master angefordert hat. Der Schleifenzyklus ist erforderlich um eine Konkurrenzsituation zwischen dem Master und dem Slave auf der AD-Leitung auszuschließen. Der Master setzt während Takt Nr. 3 IRDY tief und signalisiert damit, daß er bereit zum Lesen der angeforderten Daten ist. Während des dritten Taktsignals steuert der Master auch die Byteaktivierungssignale auf der C/BE-Leitung an.
- Im vierten Taktsignal legt der Slave die Daten auf die AD- Leitung und steuert TRDY an. Die Byte-Aktivierungen werden vom PCI-Master noch immer auf der C/BC-Leitung angesteuert. Da das IRDY-Signal im vierte Takt tief bleibt, werden die zu lesenden Daten vom Slave zum Master gesandt.
- Wenn ein mit einem PCI-Bus verbundener Master eine Datenübertragung ausführen muß, die an eine Komponente oder Vorrichtung gerichtet ist, die mit einem CPU-Lokalbus oder einem Systembus verbunden ist, z. B. ein DMA-Controller oder Systemspeicher, muß ein Zweistufen-Verfahren angewandt werden. Während des ersten Schrittes ist die Hauptrechnerbrücke, die den PCI-Bus mit dem CPU-Lokalbus verbindet, ein Slave für eine Datenübertragung auf dem PCI-Bus. Für den zweiten Schritt wird die Hauptrechnerbrücke ein Master für einen Lese- bzw. Schreibzyklus auf dem CPU-Lokalbus oder Systembus, und die Vorrichtung oder Komponente, an die die Datenübertragung gerichtet wird, ist ein Slave auf dem CPU-Lokalbus oder Systembus für diese besondere Datenübertragung.
- Wenn z. B. ein Graphik-Controller 72 einen Schreibzyklus für den DMA-Controller 40 ansteuert, wird die PCI-Hauptrechnerbrücke 20 ein Slave für einen Schreibzyklus auf dem primären PCI-Bus 22. Die während des Schreibzyklus zu schreibenden Daten werden dann auf die Hauptrechnerbrücke 20 gelegt. Die Hauptrechnerbrücke 20 wird dann der Master für den Schreibzyklus auf dem S-Bus 16 mit dem DMA-Controller 40 als Slave oder das Ziel des Schreibzyklus. Die Daten werden dann wieder während des Schreibzyklus auf dem S-Bus 16 von der Hauptrechnerbrücke 20 auf den DMA-Controller 40 übertragen. Lesezyklen arbeiten in einem ähnlichen Zwei-Schritt-Verfahren, in dem die Hauptrechnerbrücke 20 der Slave für einen Lesezyklus auf dem PCI-Bus 22 wird und dann der Master für einen Lesezyklus auf dem S-Bus 16 wird, um den Datentransfer vom S-Bus 16 zurück zum PCI-Bus 22 abzuschließen.
- Wenn dann ein Master auf dem S-Bus 16 einen Datentransfer zu einer Vorrichtung auf dem PCI-Bus 22 einleitet, muß er zunächst die Hauptrechnerbrücke 20 als Slave benutzen. Dann wird die Hauptrechnerbrücke 20 der Master für den Datentransfer auf dem PCI-Bus 22.
- Datenübertragungen zwischen Vorrichtungen, die mit PCI-Bussen unterhalb der PCI-Brücke 80 im PCI-Netzwerk verbunden sind, und Komponenten, die mit dem CPU-Lokalbus 34 oder mit dem S- Bus 16 verbunden sind, müssen durch Ausführen aufeinanderfolgender Datenübertragungen auf und von den PCI-Brücken, die das Netzwerk zusammenverbinden, abgeschlossen werden bis die Daten schließlich auf die Hauptrechnerbrücke 20 übertragen werden. Sobald die PCI-Brücke 80 die zu übertragenden Daten hat, wenn die bestimmte Übertragung ein Schreibzyklus ist, dann wird das oben gezeigte Zwei-Schritt-Verfahren benutzt, um den Datentransfer mit der PCI-Brücke 80 als Master auf dem PCI-Bus 22, und mit der Hauptrechnerbrücke 20 als Slave auf dem PCI-Bus 22 und als Master auf dem S-Bus 16 abzuschließen.
- Datenübertragungen zwischen dem S-Bus 16 und dem PCI-Bus 22 müssen in zwei Stufen abgeschlossen werden, weil sie unterschiedliche Busarchitekturen aufweisen. Die Busarchitektur des CPU-Lokalbusses 34 und des S-Busses 16 sind die gleichen. In der Busarchitektur des CPU-Lokalbusses 34 und des S-Busses 16 sind Daten und Adresseninformationen nicht gemultiplext, wie in der PCI-Busarchitektur; sie werden über gesonderte Leitungen übertragen. Die Datenketten und Adresseninformationen auf diesen Leitungen sind 32 Bits lang.
- Die CPU-Lokalbus-Architektur hat eine Byte-Aktivierungsleitung, die die gleiche Funktion wahrnimmt wie die Byte- Aktivierungssignale in der PCI-Busarchitektur. So sind die Byte-Aktivierungssignale in der CPU-Lokalbusarchitektur vier Bits lang und zeigen an, ob ein bestimmtes Datenbyte auf der Datenleitung aktiviert oder deaktiviert ist.
- Der CPU-Lokalbus 34 und der S-Bus 16 benutzen das Signal CLOCK vom PCI-Bus 22 als Taktsignal. Jede Länge des Taktsignals auf dem CPU-Lokalbus 34 und S-Bus 16 heißt ein Buszyklus.
- Anders als in der PCI-Busarchitektur werden die Daten- und Adresseninformationen des CPU-Lokalbusses 34 und des S-Busses 16 auf getrennten Leitungen übertragen. So kann, sobald ein Slave, an den eine Datenübertragung gerichtet ist, auf die auf der Adressenleitung übertragenen Adresse reagiert, die Datenübertragung in einem Buszyklus auf dem CPU-Lokalbus abgeschlossen werden. Sobald bei einem Burst-Transfer mehrerer 32-Bit-Datenketten an aufeinanderfolgende Adressen der Slave für den ersten Transfer reagiert, kann jede der nachfolgenden Datenübertragungen in einem einzigen Buszyklus abgeschlossen werden. Während einer Datenübertragung generiert der Master die Byte-Aktivierungssignale auf dem CPU-Lokalbus.
- Wenn unter Bezugnahme auf Fig. 2 der in den Takten Nr. 2 bis 4 illustrierte Schreibzyklus schließlich an eine Komponente gerichtet wird, die an den S-Bus 16 angeschlossen ist, wird die Hauptrechnerbrücke 20 zum Slave, an den der PCI-Schreibzyklus gerichtet ist. Dementsprechend übernimmt die Hauptrechnerbrücke 20 die im dritten Takt übertragenen Daten in einem ihrer internen Register durch Ansprechen auf die Adresse, die im zweiten Takt übertragen wurde. Diese Adresse wird auch in einem ihrer internen Register gespeichert.
- Dann, sobald sie die Steuerung des S-Busses 16 erhält, generiert die Hauptrechnerbrücke 20, jetzt als Master handelnd, einen Schreibzyklus auf dem S-Bus 16. Während des ersten Buszyklus überträgt die Hauptrechnerbrücke 20 die gleiche Adresseninformation und die Byte-Aktivierungssignale, die sie während des PCI-Schreibzyklus erhalten hat, auf ihre entsprechenden Leitungen auf dem S-Bus 16. Der betreffende Slave spricht auf die Adresseninformation an und die Daten werden während des nächsten Buszyklus nach diesem Ansprechen auf der Adressenleitung übertragen.
- Die Daten auf einem PCI-Bus während eines Lese- oder Schreibzyklus können auch nichtzusammenhängend sein. Nichtzusammenhängende Daten sind zwei oder mehr aktivierte Datenbytes innerhalb einer 32-Bit-Datenkette, die durch ein Datenbyte oder mehrere Datenbytes getrennt sind, die nicht aktiviert sind. Die vier Bits der Byte-Aktivierungsignale zeigen an, ob Daten deaktiviert und somit nichtzusammenhängend sind. Die nachstehende Tabelle, gekennzeichnet Tabelle 1, zeigt jede mögliche Binärkombination der vier Byte-Aktivierungsbits und ob die jeweilige Kombination nicht-zusammenhängende Daten anzeigt: Tabelle 1 Tabelle 1 (Forts.)
- Die Architekturen des CPU-Lokalbusses 34 und des S-Busses 16 können innerhalb einer einzigen Datenübertragung keine Daten befördern, die nicht zusammenhängend sind, ohne im Informationsverarbeitungssystem eine Störung zu verursachen. Bevor also die Hauptrechnerbrücke 20 Daten vom PCI-Bus 22 auf den S-Bus 16 legen kann, muß sie entscheiden, ob die Daten nicht- zusammenhängend sind, und wenn, die nichtzusammenhängenden Daten in zusammenhängende Daten umzuwandeln. Die Hardware, die die vorliegende Erfindung implementiert, erfüllt diese Aufgabe.
- Das Verfahren, mit dem die nachstehend beschriebene Erfindung die nichtzusammenhängenden Daten in zusammenhängende Daten umwandelt, benutzt das Trennen einer einzelnen nichtzusammenhängenden Datenübertragung auf dem PCI-Bus 22 in zwei oder mehr Übertragungen zusammenhängender Daten auf dem S-Bus 16. Wenn z. B. die nichtzusammenhängenden Daten von einem an den primären PCI-Bus 22 angeschlossenen Master den Byte-Aktivierungswert 0110 haben und der Master diese Daten in einen Slave schreibt, der mit dem S-Bus 16 verbunden ist, dann generiert die Erfindung, die in der Hardware innerhalb der Hauptspeicherbrücke 20 enthalten ist, zwei Schreibzyklen auf dem S-Bus 16 mit den Byte-Aktivierungswerten 1110 bzw. 0111. Die Adressen und Daten für beide Schreibzyklen sind identisch. Das bewirkt, daß das erste und das vierte Datenbyte, die aktiviert sind, übertragen werden und das deaktivierte zweite und dritte Datenbyte nicht übertragen werden.
- Die Erfindung adressiert und löst auch gleichzeitig die Kommunikationsprobleme zwischen 8-Bit- und 16-Bit-Vorrichtungen, die mit einem CPU-Lokalbus oder einem Systembus verbunden sind, und den mit einem PCI-Bus verbundenen Vorrichtungen, die nur Daten in Datenketten mit 32 Bit Länge übertragen. Die Erfindung löst dieses Problem durch Wiederaufbrechen eines 32-Bit-Datentransfers auf dem PCI-Bus in eine Vielzahl von Datentransfers auf dem CPU-Lokalbus oder dem Systembus.
- Wenn zum Beispiel ein Schreibzyklus vom einem mit dem Primär- PCI-Bus 22 verbundenen Master an einen Slave gerichtet ist, der an den S-Bus 16 angeschlossen ist, der nur Daten in 8- Bit-Ketten akzeptiert, muß die 32-Bit-Datenkette vom Master in vier Schreibzyklen auf dem S-Bus 16 aufgeteilt werden, wenn wir annehmen, daß alle Daten aktiviert sind. Die Byte- Aktivierungssignale für jede der vier Übertragungen werden verändert, wenn die Datenbytes zum Slave übertragen werden. Das Byteaktivierungssignal des ersten Schreibvorgangs auf den S-Bus 16 ist 0000, und zeigt an, daß alle vier Datenbytes aktiviert sind. Jedoch wird nur das niedrigstwertige Datenbit vom Slave aufgenommen, weil es sich um eine 8-Bit-Vorrichtung handelt. Dementsprechend wird von der Erfindung in der Hauptrechnerbrücke 20 ein zweiter Schreibzyklus generiert, der ein Byte-Aktivierungssignal 0001 hat, weil das niedrigstwertige Bit bereits auf den Slave übertragen wurde. Beim Übertragen jedes Datenbytes in aufeinanderfolgenden Schreibzyklen verändert sich der Byteaktivierungswert des dritten Schreibzyklus zu 0011 und das Byteaktivierungssignal des vierten Schreibzyklus verändert sich zu 0111.
- Die nachstehende Tabelle, gekennzeichnet als Tabelle 2, zeigt an, ob nach einem individuellen Datentransfer eine zusätzliche Datenübertragung auf dem CPU-Lokalbus oder dem Systembus erforderlich ist, in Abhängigkeit von der Bit-Größe des Slave und dem Byte-Aktivierungssignal des betreffenden Datentransfers. Die Tabelle zeigt ferner den Byte-Aktivierungswert des nächsten Datentransfers. Tabelle 2
- Die nachstehend beschriebene Erfindung implementiert diese Tabelle in die Hardware einer Hauptrechnerbrücke, z. B. in Hauptrechnerbrücke 20.
- Nehmen wir jetzt Bezug auf Fig. 4, hier wird ein Blockschaltbild der erfindungsgemäßen Byte-Aktivierungs-Steuerhardware 100 innerhalb der Hauptrechnerbrücke 20 gezeigt. Die Hardware 100 beinhaltet ein erstes Zwischenspeicherregister 102, das an die C/BE-Leitung des PCI-Busses 22 angeschlossen ist, und ein zweites Zwischenspeicherregister 104. Das Zwischenspeicherregister 104 ist an einen Fünf-Eingang-Multiplexer 106 angeschlossen. Das Zwischenspeicherregister 104 hat eine Ausgangsleitung 108, durch die es an einen Zwei-Eingang- Multiplexer 110 angeschlossen ist.
- Die Zwischenspeicherregister 102 und 104 haben jeweils eine Kapazität zum Abspeichern von 4 Datenbits und zum Zwischenspeichern und Halten eines 4-Bitwerts für ein Taktsignal. Das Zwischenspeicherregister 102 empfängt das 4-Bit Byteaktivierungssignal von der C/BE Leitung des PCI-Busses 22 für einen bestimmten Datentransfer und zwischenspeichert das Signal, bis dieser bestimmte Datentransfer auf dem S-Bus 16 abgeschlossen ist.
- Das Zwischenspeicherregister 104 nimmt ein 4-Bit-Ausgangs- Signal vom Multiplexer 106 auf und speichert diesen Wert, bis der Multiplexer 106 ein anderes Ausgangssignal generiert. Das Zwischenspeicherregister 104 legt seinen vorhandenen 4-Bit- Wert auf die Leitung 108 zu einem zweiten Eingang des Multiplexers 110. Der Ausgang vom Zwischenspeicherregister 104 heißt "Zwischengespeichertes Byte Gültig" (L_BV - latched byte valid).
- Der Multiplexer 106 hat fünf von 1 bis 5 durchnumerierte Eingänge, die seine interne Logik anwählt, so daß sie je nach dem Status der Datenphasen auf dem PCI-Bus 22 und dem S-Bus 16 auf den Ausgang gelegt werden. Jeder dieser Eingänge ist ein 4-Bit-Wert. Der Multiplexer 106 empfängt den Status der Datentransfers auf diesen Bussen über die Hardware der Hauptrechnerbrücke 20. Der Status der Datenphasen auf dem PCI-Bus 22 und dem S-Bus 16, der bewirkt, daß der Multiplexer 106 seine fünf Eingänge entsprechend anwählt, ist wie folgt:
- Eingang Nr. 1 - wird angewählt, wenn die Hauptrechnerbrücke 20 ursprünglich auf einen Lesedatentransfer auf dem PCI-Bus 22 anspricht und ein Datentransfer auf dem S- Bus 16 abgeschlossen ist und ein anderer Datentransfer bereit ist. Eingang Nr. 1 hat immer den Binärwert "1111".
- Eingang Nr. 2 - wird angewählt, wenn ein Schreibdatentransfer auf dem PCI-Bus 22 anläuft, und noch bevor der erste Buszyklus auf dem S-Bus 16, der gebraucht wird, um den entsprechenden Schreibdatentransfer auf dem S-Bus 16 abzuschließen, angelaufen ist. Eingang Nr. 2 ist der 4- Bit-Byteaktivierungswert aus der C/BE-Leitung des PCI- Busses 22.
- Eingang Nr. 3 - wird angewählt, wenn der auf dem S-Bus 16 abzuschließende Datentransfer eine Schreiboperation ist, die vom PCI-Bus 22 eingeleitet wird, und ein Bus-Zyklus des Transfers auf dem S-Bus 16 eben abgeschlossen wurde.
- Eingang Nr. 4 - wird angewählt, wenn der auf dem S-Bus 16 abzuschließende Datentransfer eine Leseoperation ist und ein Bus-Zyklus des Transfers auf dem S-Bus 16 eben abgeschlossen wurde.
- Eingang Nr. 5 - wird angewählt und beibehalten während eines beliebigen Buszyklus auf dem S-Bus 16, bis der Buszyklus abgeschlossen ist. Dieser Eingang ist eine Rückkopplung vom Ausgang des Zwischenspeicherregisters 104.
- Der Multiplexer 110 hat zwei Eingänge, die er wahlweise auf seinen Ausgang legt, in Abhängigkeit davon ob der vom PCI-Bus 22 eingeleitete Datentransfer eine Lese - oder eine Schreiboperation ist. Jeder dieser Eingänge ist 4 Bits lang. Der erste Eingang wird während eines PCI-Lesedatentransfers angewählt und der zweite Eingang wird während eines PCI- Schreibdatentransfers angewählt. Der Multiplexer 110 überwacht über die Hardware der Hauptrechnerbrücke 20 den Status der Datentransfers sowohl auf dem PCI-Bus 22 als auch auf dem S-Bus 16.
- Der Ausgang des Multiplexers 110 ist verbunden mit einem Detektor 114 für nichtzusammenhängende Daten, der erfaßt, ob die Byte-Aktivierungen der während des nächsten Buszyklus auf dem S-Bus 16 zu übertragenden Daten nichtzusammenhängend sind. Der Detektor 114 ist eine Funktionsblock-Hardwarelogik- Kombination, die die Funktion der obigen Tabelle 1 vorsieht. Detektor 114 bestimmt, ob die während des nächsten Buszyklus zu übertragenden Daten nichtzusammenhängend sind, und generiert eine binäre "1" auf einer Ausgangsleitung 116, wenn die Daten wirklich nichtzusammenhängend sind. Der Ausgang des Detektors 114 wird mit NC bezeichnet.
- Die vier Bits Ausgang vom Multiplexer 110 sind auch in drei einzelne Signale auf den Leitungen 118, 120, 122 unterteilt. Die zwei niedrigerwertigen Bits - die Bits haben die Identifizierungsnummern 0 und 1 - werden auf der Leitung 118 ausgegeben, die mit einer Leitung 124 verbunden ist, die ihrerseits am S-Bus 16 liegt ist. Das Bit auf dem Ausgang des Multiplexers 110 mit der Identifizierungsnummer 2 wird auf die Leitung 120 gelegt und wird ein Eingang zu einem ersten ODER-Gatter 126 mit zwei Eingängen. Das Bit des Ausgangs des Multiplexers 110 mit der Identifizierungsnummer 3 wird auf die Leitung 122 gelegt und wird ein Eingang zu einem zweiten ODER-Gatter 128 mit zwei Eingängen.
- Der Ausgang NC des Detektor 114 wird ebenfalls Eingang zu den ODER-Gattern 126 und 128. Die Ausgänge der ODER-Gatter 126 und 128 sind an die Leitung 124 angeschlossen.
- Leitung 124 überträgt ein 4-Bit-Signal PBE auf den S-Bus 16, der die Ausgänge der zwei ODER-Gatter 126 und 128 und die Bits mit den Nummern 0 und 1 vom Ausgang des Multiplexers 110 kombiniert. Dieses 4-Bit-Signal ist das Byte-Aktivierungssignal für den augenblicklichen Buszyklus auf dem S-Bus 16 und ist immer zusammenhängend.
- Der NC-Ausgang vom Detektor 114 liegt auch an einem dritten ODER-Gatter 130 mit zwei Eingängen. Der andere Eingang des ODER-Gatters 130 liegt über die Leitung 134 an einem Byte- Aktivierungsgenerator 132. Der Ausgang vom Generator 132 auf Leitung 134 heißt BSZ. Das ODER-Gatter 130 hat einen Ausgang, der BC heißt und an weitere Hardware innerhalb der Hauptrechnerbrücke 20 angeschlossen ist.
- Der Generator 132 ist ein Funktionsblock bekannter Logikhardware, der die Funktion der obigen generierenden Tabelle 1 vorsieht. Somit bestimmt der Generator 132, ob ein weiterer Buszyklus auf dem S-Bus 16 erforderlich ist, um eine bestimmte Datenübertragung abzuschließen, die vom PCI-Bus 22 eingeleitet worden ist, und liefert die Byte-Aktivierungssignale für diese Übertragung. Die Ausgänge vom Generator 132 hängen davon ab, ob der Slave, zu dem die Datenübertragung gerichtet ist, eine 8-Bit- oder eine 16-Bit-Vorrichtung ist.
- Der Generator 132 ist mit dem S-Bus 16 über zwei Eingangsleitungen, bezeichnet BS8 und BS16, verbunden. Die Signale BSZ, BS8 und BS16 sind Einbit-binäre Signale, die den Wert 0 oder 1 haben können. Sobald der an den S-Bus 16 angeschlossene Slave, an den der Datentransfer gerichtet ist, mit dem Abschluß des Datentransfers reagiert, überträgt er ein Binärsignal auf BS8 bzw. BS16, in Abhängigkeit davon, ob es sich um eine 8-Bit- oder 16-Bit-Vorrichtung handelt. Wenn es nicht um eine 8-Bit- oder 16-Bit-Vorrichtung handelt, dann sind die Werte B58 und BS16 gleich 1. Wenn BS8 oder BS16 einen Wert 0 haben, dann ist der Slave eine 8-Bit- oder 16-Bit-Vorrichtung, und der Generator 132 generiert für den Wert BSZ eine binäre 1 auf der Leitung 134.
- Wenn eines, das NC- oder das BSZ-Signal, einen Wert 1 aufweist, dann setzt das ODER-Gatter 130 das BC-Signal hoch. Ein hohes BC-Signal zeigt der übrigen Hardware in der Hauptrechnerbrücke 20 an, daß mindestens noch ein Buszyklus erforderlich ist, um den augenblicklichen Datentransfer abzuschließen.
- Der Generator 132 hat einen weiteren Eingang von Leitung 124, der das Byte-Aktivierungssignal für den augenblicklichen Buszyklus auf dem S-Bus 16 ist. Der Generator 132 generiert den Byte-Aktivierungswert für den nächsten Buszyklus auf der Grundlage des augenblicklichen Byte-Aktivierungswerts.
- Der Generator 132 hat einen zweiten Ausgang, bezeichnet NBE, der auf einer Leitung 136 ausgegeben wird. NBE ist ein 4-Bit- Wert. NBE bekommt entweder den Wert des Byte-Aktivierungssignals für den nächsten Buszyklus, oder hat den Wert "1111", wenn kein weiterer Buszyklus auf dem S-Bus 16 erforderlich ist, um den Datentransfer abzuschließen, der vom PCI-Bus 22 eingeleitet wurde, weil der Slave eine 8-Bit- oder eine 16- Bit-Vorrichtung ist.
- Das NBE-Signal wird ein Eingang eines Ausschließlich-ODER- Gatters (XOR) 138 mit zwei Eingängen und eines Ausschließlich-ODER-Gatters (NXOR) mit invertiertem Ausgang 140 mit zwei Eingängen. Der andere Eingang des XOR-Gatters 138 und des NXOR-Gatters 140 ist der Wert des Byte-Aktivierungssignals für den augenblicklichen Buszyklus auf dem S-Bus 16 von Leitung 124, der über die Leitung 142 an das XOR-Gatter 138 und das NXOR-Gatter 140 gelegt wird.
- Der Ausgang des XOR-Gatters 138 liegt an einem Eingang eines vierten ODER-Gatter 144 mit zwei Eingängen. Der Ausgang des NXOR-Gatters 140 liegt an einem Eingang eines UND-Gatters 146 mit zwei Eingängen. Der andere Eingang sowohl des ODER- Gatters 144 als auch des UND-Gatters 146 ist der Ausgang des Zwischenspeicherregisters 104 als Rückkopplung über eine Leitung 148. Der Ausgang des ODER-Gatters 144 liegt am Eingang Nr. 3 des Multiplexers 106. Der Ausgang des UND- Gatters 144 liegt am Eingang Nr. 4 des Multiplexers 106.
- Der Ausgang vom Zwischenspeicherregister 104 liegt auch über die Leitung 148 an einem zweiten NXOR-Gatter 150 mit zwei Eingängen, einem UND-Gatter 152 mit vier Eingängen und einem Komparator 154. Die vier Eingänge des UND-Gatters 152 sind die vier Bits des L_BV-Signals vom Zwischenspeicherregister 104. Der Ausgang des UND-Gatters 152 ist Ausgang zu weiterer Hardware innerhalb der Hauptrechnerbrücke 20, und zeigt an, wenn ein vom PCI-Bus 22 eingeleiteter Schreibzyklus auf dem S-Bus 16 abgeschlossen ist. Dieser Ausgang wird bezeichnet W_DONE und hat den Wert binär 1, wenn er aktiviert ist.
- Der andere Eingang zum NXOR-Gatter 150 ist der Ausgang des Zwischenspeicherregisters 102. Wieder hat dieser Ausgang den Wert der Byte-Aktivierungssignale vom Datentransfer, der auf dem PCI-Bus 22 eingeleitet wurde. Dieser Wert bleibt konstant, bis der Datentransfer auf dem S-Bus 16 abgeschlossen ist. Der Ausgang des NXOR-Gatters ist an den ersten Eingang des Multiplexers 110 gelegt.
- Der Ausgang vom Zwischenspeicherregister 102 liegt auch am Komparator 154. Der Komparator 154 vergleicht diesen Wert mit dem Wert L_BV, den er über die Leitung 148 erhält. Wenn diese zwei Werte gleich sind, generiert der Komparator 154 einen Wert binär 1 an seinem Ausgang, der mit anderer Hardware in der Hauptrechnerbrücke 20 verbunden ist. Dieser Ausgang ist bezeichnet R_DONE und zeigt an, wenn ein vom PCI-Bus 22 eingeleiteter Lesedatentransfer auf dem S-Bus 16 abgeschlossen ist.
- Der Betrieb der Hardware 100 ist unterschiedlich, in Abhängigkeit davon, ob der von dem an den PCI-Bus 22 angehängten Master (PCI-Master) eingeleitete Datentransfer ein Lese- oder eine Schreibtransfer ist. Im Betrieb bei einem Lesetransfer leitet der PCI-Master einen Lesezyklus ein, der zum S-Bus 16 auf dem PCI-Bus 22 gerichtet ist, und die Hauptrechnerbrücke 20 reagiert als Slave. Die Byte-Aktivierungssignale vom PCI-Master werden im Zwischenspeicher 102 zwischengepeichert und werden an den Komparator 154 und das NXOR-Gatter 150 gegeben.
- Da der Lesetransfer auf dem S-Bus 16 noch nicht begonnen hat, gibt der Multiplexer 106 den Eingang Nr. 1 aus, der der 4- Bit-Binärwert "1111" ist. Dieser Wert wird dann in das Zwischenspeicherregister 104 zwischengespeichert und über die Leitung 148 als L_BV-Signal an das NXOR-Gatter 150 gegeben.
- Das NXOR-Gatter 150 generiert dann einen 4-Bit-Ausgangswert auf der Grundlage der invertierten Ausschließlich-ODER-Kombination der vom PCI-Bus 22 im Zwischenspeicherregister 102 zwischengespeicherten Byte-Aktivierungssignale und des Werts L_BV. Weil diese Operation eine Leseoperation ist, wählt der Multiplexer 110 den Ausgang vom NXOR-Gatter 150 und legt ihn während des gesamten Datentransfers auf seinen eigenen Ausgang.
- Der Detektor 114 bestimmt dann, ob der Ausgang aus dem Multiplexer 110 nichtzusammenhängend ist, und wenn ja, aktiviert er sein Ausgangssignal, NC, auf Leitung 116 durch Setzen desselben auf einen Wert binär 1. Wenn NC aktiviert ist, geht der Ausgang der ODER-Gatter 126 und 128 hoch und stellt sicher, daß die Bit-Nummern 2 und 3 des PBE-Signals auf Leitung 124 logische 1-en sind. So ist der PBE immer zusammenhängend. Wie oben gesagt, sind die Werte für die Bit- Nummern 0 und 1 des PBE einfach die Bit-Nummern 0 und 1 vom Ausgang des Multiplexers 110.
- Das PBE-Signal wird dann auf Leitung 124 auf den S-Bus 16 als die Byte-Aktivierungssignale für den augenblicklichen Buszyklus gelegt. Wenn der mit dem S-Bus 16 verbundene Slave, an den der Lesetransfer gerichtet ist, für die Datenübertragung anspricht, kann er eine binäre 0 auf den BS8- oder BS16- Leitungen generieren, was signalisiert, daß der Slave eine 8- Bit- oder eine 16-Bit-Vorrichtung ist. Aufgrund der Werte von BS8, B516 und des PBE-Signals generiert der Generator 132 das NBE-Signal auf Leitung 136 gemäß der obigen Tabelle 2.
- Wenn entweder BS8 oder BS16 auf binär 0 aktiviert ist und Generator 132 bestimmt, daß ein weiterer Buszyklus auf dem S- Bus 16 benötigt wird, um den Datenlesetransfer abzuschließen, dann generiert Generator 132 ein binär hochliegendes Signal für BSZ auf Leitung 134. Das bewirkt, daß das ODER-Gatter 130 ein hochliegendes Signal für BC generiert, das der übrigen Hardware in der Hauptrechnerbrücke 20 signalisiert, daß ein weiterer Buszyklus benötigt wird, um den Datentransfer abzuschließen. Auf ähnliche Weise, wenn der Detektor 114 einen hochliegenden Wert für NC auf Leitung 116 generiert, treibt das ODER-Gatter BC binär hoch, und zeigt an, daß ein weiterer Buszyklus benötigt wird, um den Datentransfer abzuschließen.
- Sobald das Signal NBE generiert ist, wird es auf das NXOR- Gatter 140 gelegt zusammen mit dem Signal PBE von Leitung 142. Der sich ergebende 4-Bit-Binärwert, der vom NXOR-Gatter 140 ausgegeben wird, wird auf das UND-Gatter 146 gelegt zusammen mit dem Rückkopplungssignal vom Ausgang des Zwischenspeicherregisters 104. Das UND-Gatter 146 führt eine logische UND-Operation mit diesen beiden Signalen durch und gibt das Ergebnis aus, das auf den vierten Eingang des Multiplexers 106 gelegt wird. Da das ein Lesedatentransfer ist und der erste Buszyklus des Datentransfers auf dem S-Bus 16 abgeschlossen ist, wählt der Multiplexer 106 seinen Eingang Nr. 4, der auf seinen Ausgang gelegt wird.
- Dieser neue Ausgang vom Multiplexer 106 wird in dem Zwischenspeicherregister 104 zwischengespeichert und wird das nächste L_BV-Signal. Dann wiederholt sich der Prozeß für dieses neue L_BV-Signal.
- Der Prozeß wiederholt sich erneut für jeden neuen L_BV-Wert bis alle Daten, wie sie von den Byte-Aktivierungssignalen von der C/BE-Leitung des PCI-Busses 22 angezeigt werden, übertragen sind. Sobald das eintritt, wird der L_BV-Wert gleich den Byte-Aktivierungssignalen vom PCI-Bus 22. Beide Signale werden ständig in den Komparator 154 eingegeben und sobald sie gleich sind, aktiviert der Komparator 154 R_DONE durch Hochsetzen, was dem S-Bus 16 und der Hauptrechnerbrücke 20 signalisiert, daß der Datentransfer abgeschlossen ist. Sobald das eintritt sind alle Daten vom Slave gelesen, der mit dem S-Bus verbunden ist.
- Die Operation der Byte-Aktivierungshardware 100 während eines Schreibtransfers unterscheidet sich von einer Operation während eines Lesetransfers im mehreren Punkten. Der mit dem PCI-Bus 22 verbundene Master beginnt mit dem Einleiten eines Schreibzyklus gerichtet an den S-Bus 16. Die Byte-Aktivierungssignale vom PCI-Bus 22 werden eingegeben in Eingang Nr. 2 des Multiplexers 106. Da der erste Buszyklus des Datentransfers auf dem S-Bus 16 noch nicht angelaufen ist und das eine Schreiboperation ist, wählt der Multiplexer 106 das Signal an seinem Eingang 2 und schickt es an seinen Ausgang. So zwischenspeichert der Zwischenspeicher 104 einen Wert des Byte-Aktivierungssignals vom PCI-Bus 22 und diese Signale werden der Wert von L_BV.
- Da es sich hier um einen Schreibtransfer handelt, wählt der Multiplexer 110 das an seinem Eingang 2 stehende Signal zum Ausgeben an seinen Ausgang, das heißt L_BV. L_BV wird dann an den Detektor 114 gegeben und verteilt sich auf die Leitungen 118, 120 und 122. Der Detektor 114 und die ODER-Gatter 126 und 128 sehen die gleiche Funktion vor, wie sie sie auch für eine Leseoperation vorsehen; sie generieren des Signal PBE auf dem S-Bus 16 und stellen sicher, daß es zusammenhängend ist. Auf ähnliche Weise generieren der Generator 132, BS8 und BS16 das auf gleichen Weise arbeitende Signal NBE, wie sie es für einen Lesetransfer tun, und das ODER-Gatter 130 sieht die gleiche Funktion des Generierens des Signals BC vor.
- Sobald der Generator 132 das Signal NBE generiert, wird es zusammen mit dem Signal PBE über Leitung 136 zum XOR-Gatter 138 geschickt. Das XOR-Gatter 138 führt eine Ausschließlich- ODER-Operation mit den Signalen PBE und NBE durch und legt das Ergebnis auf den Eingang des ODER-Gatters 144. Das ODER- Gatter 144 erhält ferner ein Eingangssignal von der Rückkopplungsleitung 148, das das Signal L_BV ist. Das ODER-Gatter führt eine ODER-Operation mit den beiden eingegebenen Signalen durch, und legt die Ergebnisse auf den Eingang 3 des Multiplexers 106.
- Der Multiplexer 106 wählt das Signal auf einem Eingang 3 und legt es auf seinen Ausgang, weil der augenblickliche Datentransfer eine Schreiboperation ist und der erste Buszyklus des Datentransfers auf dem S-Bus 16 abgeschlossen ist. Der Ausgang des Multiplexers 106 wird im Zwischenspeicherregister 104 zwischengespeichert und wird der neue Wert für L_BV.
- Dieser neue Wert für L_BV wird dann auf den zweiten Eingang des Multiplexers 110 gelegt und der ganze Prozeß wiederholt sich. Der Prozeß wiederholt sich so oft, bis der Wert von L_BV binär "1111" wird. Sobald das eintritt, sind alle Daten vom PCI-Bus 22 auf den mit dem S-Bus verbundenen Slave übertragen.
- Wenn L_BV gleich "1111" ist, aktiviert das UND-Gatter 152 W_DONE. Das gibt dem S-Bus 16 und dem mit dem Bus verbundenen Slave an, daß der Datentransfer abgeschlossen ist.
- Ein Beispiel für die Operation der Hardware 100 während einer Schreiboperation mit den Byte-Aktivierungssignalen vom PCI- Bus 22 gleich "0100", gerichtet an einen 8-Bit-Slave, ist wie folgt:
- Die Byte-Aktivierungssignale "0100" werden auf den Eingang 2 des Multiplekers 106 gelegt. Der Multiplexer 106 gibt dieses gleiche Signal auf das Zwischenspeicherregister 104, das ein L_BV-Signal gleich "0100" ausgibt. Der Multiplexer 110 nimmt dieses Signal auf und gibt es an den Detektor 114 aus.
- Detektor 114 bestimmt, daß L_BV nichtzusammenhängend ist und gibt ein Signal 1 für NC aus. Weil NC gleich 1 ist, bewirken die ODER-Gatter 126 und 128, daß PBE auf Leitung 124 gleich "1100" wird. Dieses Signal wird auf den S-Bus 16 als das Byte-Aktivierungssignal für den ersten Buszyklus übertragen.
- Der Slave, an den das Schreiben gerichtet ist, reagiert mit einem tiefliegenden Signal auf BSB, das bewirkt, daß der Generator 132 eine NBE-Signal "1101" generiert, da nur die der Bit-Nummer 0 des PBE-Signals entsprechenden Daten während des ersten Buszyklus übertragen wurden. Generator 132 bewirkt auch, daß BSZ hoch geht, was zusammen mit dem hochliegenden Signal NC bewirkt, daß das ODER-Gatter 130 ein hochliegendes Signal auf BC erzeugt, das den Bedarf für mindestens noch einen Buszyklus anzeigt, um den Transfer abzuschließen.
- PBE und NBE werden an das XOR-Gatter 138 gegeben, das eine ausschließende ODER-Operation durchführt und einen Ausgang gleich "0001" generiert. Das ODER-Gatter 144 führt dann eine ODER-Operation mit dem Ausgang vom XOR-Gatter und dem Rückkopplungswert vom Zwischenspeicher 104 als Eingänge durch. Das Ergebnis dieser Operation ist "0101", was an den Eingang Nr. 3 des Multiplexers 106 gelegt wird und vom Multiplexer 106 auf das Zwischenspeicherregister 104 übertragen wird. Dieser Wert wird jetzt der Wert für L_BV.
- Damit wird "0101" über den zweiten Eingang des Multiplexers 110 auf den Detektor 114 übertragen, der wieder feststellt, daß dieser Wert nichtzusammenhängend ist, und bewirkt, daß NC auf 1 geht. Das bewirkt, daß die ODER-Gatter 126 und 128 und die Leitung 118 ein Signal PBE gleich "1101" auf Leitung 124 für den zweiten Bus-Zyklus auf dem S-Bus 16 generieren. Das NC-Signal bewirkt auch, daß das ODER-Gatter 130 das BC-Signal aktiviert, und damit der Hauptrechnerbrücke 20 anzeigt, daß noch ein weiterer Buszyklus zum Abschluß des Datentransfers erforderlich ist. Während des zweiten Buszyklus wird das der Bit-Nummer 2 der Byte-Aktivierungssignale PBE entsprechende Datenbyte auf den Slave übertragen.
- Der Slave antwortet wieder mit einem tiefliegenden Signal auf BS8. Dementsprechend aktiviert Generator 132 aufgrund Tabelle 2 das BSZ-Signal nicht und generiert ein NBE-Signal "1111" auf Leitung 136.
- Dieser Wert wird an das XOR-Gatter 138 gegeben zusammen mit dem Wert für PBE. Dementsprechend generiert das XOR-Gatter 138 einen Ausgang "0010", der in das ODER-Gatter 144 mit dem augenblicklichen Wert L_BV über die Rückkopplungsleitung 148 eingegeben wird. Das ODER-Gatter 144 reagiert durch Ausgeben eines Wertes "0111" an den Eingang Nr. 3 des Multiplexers 106, der dann der nächste Wert für L_BV wird.
- Detektor 114 stellt fest, daß der neue Wert von L_BV zusammenhängend ist und aktiviert NC nicht. Somit wird der Wert L_BV einfach als der neue Wert für PBE auf die Leitung 124 gelegt, unberührt von den ODER-Gattern 126 und 128. Dann wird ein dritter Buszyklus auf dem S-Bus generiert, der den Datentransfer mit dem Byte-Aktivierungssignal in Höhe des derzeitigen Werts für PBE oder "0111" abschließt.
- Der Slave reagiert durch Aktivieren der BS8, aber der Generator 132 aktiviert das BSZ-Signal nicht und generiert wieder den Wert "1111" für NBE auf Leitung 136. Der letzte Ausgang der logischen Operationen, die durch das XOR-Gatter 138 und das ODER-Gatter 144 ausgeführt werden, ist jetzt "1111", das an den Eingang Nr. 3 des Multiplexers 106 gelegt und an das Zwischenspeicherregister 104 gegeben wird. Der Wert für L_BV wird somit "1111", was bewirkt, daß das UND- Gatter 152 ein hochliegendes Signal für W_DONE generiert, das den Datentransfer beendet.
- Wenn das obige Beispiel ein Lesedatentransfer wäre, würde der gleiche Byte-Aktivierungswert für PBE für die Buszyklen auf dem S-Bus 16 benutzt werden. Wie aber oben bereits gesagt, würden sie auf eine andere Wiese abgeleitet werden. Das ist deswegen, weil der Lese-"Logikpfad" in der Hardware 100 benutzt würde anstatt des Schreib-"Logikpfades".
Claims (14)
1. Eine Hauptrechnerbrücke (20)zum Anschluß eines
Systembusses (36) an einen Peripheriebus (22) in einem
Informationsverarbeitungssystem (10), enthaltend:
einen Detektor zum Feststellen, ob eine Datenkette, die
von dem Systembus auf den Peripheriebus bzw. vom
Peripheriebus auf den Systembus übertragen werden soll,
nicht zusammenhängend ist;
ein logisches Netzwerk zum Umwandeln der Datenkette in
eine Vielzahl zusammenhängender Datenketten und
Übertragen dieser zusammenhängenden Datenketten auf den
Systembus während aufeinanderfolgender Zyklen des
Systembusses; und
einen Generator zum Ableiten der Aktivierungssignale für
jede der Vielzahl zusammenhängender Datenketten auf der
Grundlage der Bit-Größe einer Komponente des
Informationsverarbeitungssystems, das beim Transfer der
Datenkette als Slave arbeitet.
2. Eine Hauptrechnerbrücke (20) gemäß Anspruch 1, in der das
Logiknetzwerk als Hardware in der Hauptrechnerbrücke (20)
ausgebildet ist.
3. Eine Hauptrechnerbrücke (20) gemäß Anspruch 1, in der das
Logiknetzwerk einen ersten Logikpfad zur Umwandlung der
Datenkette in die Vielzahl zusammenhängender Datenketten
während eines Schreibtransfers, und einen zweiten
Logikpfad zum Umwandeln der Datenkette in die Vielzahl
zusammenhängender Datenketten während eines Lesetransfers
beinhaltet.
4. Eine Hauptrechnerbrücke (20) gemäß Anspruch 3, in der das
Logiknetzwerk mindestens einen Multiplexer zur Auswahl
des ersten Logikpfades bzw. des zweiten Logikpfades
beinhaltet.
5. Eine Hauptrechnerbrücke (20) gemäß Anspruch 4, in der die
Aktivierungssignale durch den ersten Logikpfad während
eines Schreibtransfers, und durch den zweiten Logikpfad
während eines Lesetransfers so verarbeitet werden, daß
sie die Vielzahl zusammenhängender Datenketten ableiten.
6. Eine Hauptrechnerbrücke (20) gemäß Anspruch 1, in der die
Peripheriebusse PCI-Busse sind.
7. Eine Hauptrechnerbrücke (20) gemäß Anspruch 1, in der die
Peripheriebusse gemultiplexte Busse sind.
8. Eine Hauptrechnerbrücke (20) gemäß Anspruch 1, in der
eine an den Peripheriebus angeschlossene
Peripherie-Vorrichtung die Übertragung der Datenkette auf dem Systembus
anlaufen läßt.
9. Eine Hauptrechnerbrücke (20) gemäß Anspruch 1, in der
jede dieser Vielzahl von zusammenhängenden Datenketten
auf dem Systembus der Reihe nach mit einer Eins-zu-Eins-
Entsprechung zwischen den zusammenhängenden Datenketten
und den Buszyklen auf dem Systembus übertragen wird.
10. Ein Informationsverarbeitungssystem (10), enthaltend:
eine Zentraleinheit (24);
einen Systembus (36), der an die Zentraleinheit
angeschlossen ist;
einen Peripheriebus (22) zum Anschließen von Peripherie-
Vorrichtungen (18) an denselben; und
eine Hauptrechnerbrücke (20) gemäß den vorstehenden
Ansprüchen.
11. Ein Verfahren zur Übertragung nichtzusammenhängender
Daten zwischen einer Peripherie-Vorrichtung (18), die an
einen Peripheriebus (22) angeschlossen ist, und einer
Komponente, die an einen Systembus (36) angeschlossen
ist, in einem Informationsverarbeitungssystem (10), das
die folgenden Schritten aufweist:
Vorsehen einer Zentraleinheit (24);
Vorsehen eines Systembusses (36), der an die
Zentraleinheit angeschlossen ist;
Vorsehen eines Peripheriebusses (22) zum Anschließen von
Peripherie-Vorrichtungen an denselben;
Anschluß des Systembusses an den Peripheriebus;
Feststellen, ob eine auf dem Systembus zu übertragende
Datenkette nichtzusammenhängend ist;
Umwandeln dieser Datenkette in eine Vielzahl von
zusammenhängenden Datenketten, wenn die Daten nicht-
zusammenhängend sind und
Übertragen jeder dieser Vielzahl zusammenhängender
Datenketten auf dem Systembus.
12. Ein Verfahren gemäß Anspruch 11, einschließlich des
zusätzlichen Schrittes des Generierens eines
Aktivietungssignals für jede der zusammenhängenden Datenketten auf
der Grundlage der Bit-Größe eines Slave, der an den die
zusammenhängenden Datenketten übertragenden bzw.
empfangenden Systembus angeschlossen ist.
13. Ein Verfahren gemäß Anspruch 11, in dem die
Peripheriebusse PCI-Busse sind.
14. Ein Verfahren gemäß Anspruch 11, in dem die
Peripheriebusse gemultiplexte Busse sind.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/069,234 US5550989A (en) | 1993-05-28 | 1993-05-28 | Bridge circuit that can eliminate invalid data during information transfer between buses of different bitwidths |
Publications (2)
Publication Number | Publication Date |
---|---|
DE69422221D1 DE69422221D1 (de) | 2000-01-27 |
DE69422221T2 true DE69422221T2 (de) | 2000-06-08 |
Family
ID=22087606
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE69422221T Expired - Fee Related DE69422221T2 (de) | 1993-05-28 | 1994-05-25 | Genaue und komplette Übertragung zwischen verschiedenen Busarchitekturen |
Country Status (10)
Country | Link |
---|---|
US (1) | US5550989A (de) |
EP (1) | EP0627688B1 (de) |
JP (1) | JP2565659B2 (de) |
KR (1) | KR970008191B1 (de) |
CN (1) | CN1064463C (de) |
AT (1) | ATE188049T1 (de) |
BR (1) | BR9402108A (de) |
CA (1) | CA2124029A1 (de) |
DE (1) | DE69422221T2 (de) |
TW (1) | TW321743B (de) |
Families Citing this family (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5897667A (en) * | 1993-11-16 | 1999-04-27 | Intel Corporation | Method and apparatus for transferring data received from a first bus in a non-burst manner to a second bus in a burst manner |
SG47015A1 (en) * | 1994-02-24 | 1998-03-20 | Intel Corp | Apparatus and method for prefetching data to load buffers in a bridge between two buses in a computer |
JP3529429B2 (ja) * | 1994-06-10 | 2004-05-24 | 富士通株式会社 | データ送信装置、データ受信装置、データ伝送装置及びデータ伝送方法 |
US5794062A (en) * | 1995-04-17 | 1998-08-11 | Ricoh Company Ltd. | System and method for dynamically reconfigurable computing using a processing unit having changeable internal hardware organization |
US5692219A (en) * | 1995-06-07 | 1997-11-25 | Dell Usa, Lp | System and method for disabling or re-enabling PCI-compliant devices in a computer system by masking the idsel signal with a disable or re-enable signal |
US5978860A (en) * | 1995-06-07 | 1999-11-02 | Dell Usa, L.P. | System and method for disabling and re-enabling at least one peripheral device in a computer system by masking a device-configuration-space-access-signal with a disable or re-enable signal |
US5802560A (en) * | 1995-08-30 | 1998-09-01 | Ramton International Corporation | Multibus cached memory system |
US5689659A (en) * | 1995-10-30 | 1997-11-18 | Motorola, Inc. | Method and apparatus for bursting operand transfers during dynamic bus sizing |
US5850530A (en) * | 1995-12-18 | 1998-12-15 | International Business Machines Corporation | Method and apparatus for improving bus efficiency by enabling arbitration based upon availability of completion data |
US5712986A (en) * | 1995-12-19 | 1998-01-27 | Ncr Corporation | Asynchronous PCI-to-PCI Bridge |
US5793997A (en) * | 1996-01-11 | 1998-08-11 | Hewlett-Packard Company | Interface architecture for connection to a peripheral component interconnect bus |
US5898888A (en) * | 1996-12-13 | 1999-04-27 | International Business Machines Corporation | Method and system for translating peripheral component interconnect (PCI) peer-to-peer access across multiple PCI host bridges within a computer system |
US6230219B1 (en) * | 1997-11-10 | 2001-05-08 | International Business Machines Corporation | High performance multichannel DMA controller for a PCI host bridge with a built-in cache |
US6178462B1 (en) | 1997-11-24 | 2001-01-23 | International Business Machines Corporation | Protocol for using a PCI interface for connecting networks |
US6170034B1 (en) | 1998-03-31 | 2001-01-02 | Lsi Logic Corporation | Hardware assisted mask read/write |
US6314497B1 (en) * | 1998-12-03 | 2001-11-06 | Intel Corporation | Apparatus and method for maintaining cache coherency in a memory system |
US6233632B1 (en) * | 1999-01-07 | 2001-05-15 | Vlsi Technology, Inc. | Optimizing peripheral component interconnect transactions in a mixed 32/64-bit environment by eliminating unnecessary data transfers |
US6284422B1 (en) | 1999-05-14 | 2001-09-04 | Sharp Kabushiki Kaisha | Toner for developing electrostatic latent images and image-forming apparatus |
US6557087B1 (en) | 2000-02-22 | 2003-04-29 | International Business Machines Corporation | Management of PCI read access to a central resource |
US6993619B2 (en) | 2003-03-28 | 2006-01-31 | International Business Machines Corporation | Single request data transfer regardless of size and alignment |
US7757017B2 (en) * | 2007-05-15 | 2010-07-13 | International Business Machines Corporation | Adjusting direction of data flow between I/O bridges and I/O hubs based on real time traffic levels |
US8260980B2 (en) * | 2009-06-10 | 2012-09-04 | Lsi Corporation | Simultaneous intermediate proxy direct memory access |
CN108229196B (zh) * | 2016-12-09 | 2021-09-07 | 上海新微技术研发中心有限公司 | 一种具有存储单元物理保护机制的soc芯片及方法 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4547849A (en) * | 1981-12-09 | 1985-10-15 | Glenn Louie | Interface between a microprocessor and a coprocessor |
US5101478A (en) * | 1985-06-28 | 1992-03-31 | Wang Laboratories, Inc. | I/O structure for information processing system |
EP0303752B1 (de) * | 1987-08-20 | 1993-06-02 | International Business Machines Corporation | Speicherzugriffssteuerungsvorrichtung in einem Gemischtdatenformatsystem |
JPS6491263A (en) * | 1987-10-01 | 1989-04-10 | Nec Corp | Data transfer device |
US4878166A (en) * | 1987-12-15 | 1989-10-31 | Advanced Micro Devices, Inc. | Direct memory access apparatus and methods for transferring data between buses having different performance characteristics |
US5142672A (en) * | 1987-12-15 | 1992-08-25 | Advanced Micro Devices, Inc. | Data transfer controller incorporating direct memory access channels and address mapped input/output windows |
US5317715A (en) * | 1987-12-15 | 1994-05-31 | Advanced Micro Devices, Inc. | Reduced instruction set computer system including apparatus and method for coupling a high performance RISC interface to a peripheral bus having different performance characteristics |
US5025412A (en) * | 1988-02-17 | 1991-06-18 | Zilog, Inc. | Universal bus interface |
US5003463A (en) * | 1988-06-30 | 1991-03-26 | Wang Laboratories, Inc. | Interface controller with first and second buffer storage area for receiving and transmitting data between I/O bus and high speed system bus |
US5140679A (en) * | 1988-09-14 | 1992-08-18 | National Semiconductor Corporation | Universal asynchronous receiver/transmitter |
US5255374A (en) * | 1992-01-02 | 1993-10-19 | International Business Machines Corporation | Bus interface logic for computer system having dual bus architecture |
JP3357920B2 (ja) * | 1991-07-03 | 2002-12-16 | 株式会社日立製作所 | バス制御方式及びそのシステム |
ATE192590T1 (de) * | 1991-09-09 | 2000-05-15 | Siemens Nixdorf Inf Syst | Steuereinrichtung zur steuerung der datenübertragung zwischen einem von mehreren ein- /ausgabemodulen und dem arbeitsspeicher einer datenverarbeitungsanlage |
JPH05128051A (ja) * | 1991-10-31 | 1993-05-25 | Nec Ic Microcomput Syst Ltd | バス制御装置 |
-
1993
- 1993-05-28 US US08/069,234 patent/US5550989A/en not_active Expired - Fee Related
-
1994
- 1994-05-20 CA CA002124029A patent/CA2124029A1/en not_active Abandoned
- 1994-05-24 JP JP6109517A patent/JP2565659B2/ja not_active Expired - Lifetime
- 1994-05-25 AT AT94303781T patent/ATE188049T1/de not_active IP Right Cessation
- 1994-05-25 EP EP94303781A patent/EP0627688B1/de not_active Expired - Lifetime
- 1994-05-25 DE DE69422221T patent/DE69422221T2/de not_active Expired - Fee Related
- 1994-05-26 KR KR94011540A patent/KR970008191B1/ko not_active IP Right Cessation
- 1994-05-26 CN CN94108793A patent/CN1064463C/zh not_active Expired - Fee Related
- 1994-05-27 BR BR9402108A patent/BR9402108A/pt not_active Application Discontinuation
- 1994-08-12 TW TW083107411A patent/TW321743B/zh active
Also Published As
Publication number | Publication date |
---|---|
JP2565659B2 (ja) | 1996-12-18 |
ATE188049T1 (de) | 2000-01-15 |
EP0627688B1 (de) | 1999-12-22 |
JPH06348646A (ja) | 1994-12-22 |
DE69422221D1 (de) | 2000-01-27 |
CN1064463C (zh) | 2001-04-11 |
US5550989A (en) | 1996-08-27 |
CN1118478A (zh) | 1996-03-13 |
BR9402108A (pt) | 1994-12-13 |
KR970008191B1 (en) | 1997-05-21 |
TW321743B (de) | 1997-12-01 |
CA2124029A1 (en) | 1994-11-29 |
EP0627688A1 (de) | 1994-12-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69422221T2 (de) | Genaue und komplette Übertragung zwischen verschiedenen Busarchitekturen | |
DE19580707C2 (de) | PCI-ZU-ISA-Interrupt-Protokoll-Konverter und -Auswahlmechanismus | |
DE69018100T2 (de) | Datenübertragung über Busadressleitungen. | |
DE69421755T2 (de) | Initialisierung von Mehrfachbus-Netzwerken | |
DE69423056T2 (de) | Arbitrierungslogik für Mehrfachbus-Rechnersystem | |
DE69906156T2 (de) | Mikroprozessorvorrichtung mit programmierbaren wartezuständen | |
DE69120586T2 (de) | Rechnersystem mit synchronem Bus | |
DE3909896C2 (de) | ||
DE69936060T2 (de) | Verfahren und Vorrichtung für eine verbesserte Schnittstelle zwischen Computerkomponenten | |
DE68926936T2 (de) | Vorrichtung und Technik für Burstprogrammierung | |
DE19828620B4 (de) | Während des Betriebs aufteilbarer Computerbus für einen verbesserten Betrieb mit sich ändernden Bustaktfrequenzen | |
DE3914265C2 (de) | ||
DE69710515T2 (de) | Verfahren und Vorrichtung zur Bestimmung von Wartezuständen auf einer Zyklusbasis in einem Datenverarbeitungssystem | |
DE68923944T2 (de) | RAM mit doppelten Ein/Ausgängen. | |
DE3909948A1 (de) | Mikrocomputersystem mit mehrfachbus und buszuteilung | |
DE69708933T2 (de) | Adressenuebersetzung in rechnerbusbrueckegeraeten | |
DE3883865T2 (de) | Halbleiterspeicheranordnung mit einem Register. | |
DE4018481C2 (de) | ||
DE69318348T2 (de) | Schnittstelle für asynchronen Bus zur Minimisierung von Übertragungszeiten | |
DE69033412T2 (de) | Datenübertragungssteuervorrichtung für Parallelverarbeitungssysteme | |
DE3502147A1 (de) | Datenverarbeitungssystem mit verbesserter pufferspeichersteuerung | |
DE69122520T2 (de) | Vielfachbus-Systemspeicherarchitektur | |
DE10314175A1 (de) | Bussystem sowie Informationsverarbeitungssystem, das ein Bussystem einschliesst | |
DE69619646T2 (de) | Schnittstellenarchitektur zur Verbindung mit einem PCI-Bus | |
DE69429325T2 (de) | Datenvermittlungsvorrichtung |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |