-
Die Erfindung bezieht sich auf Verfahren
und Vorrichtung zum Leiten von Datenwörtern zwischen den Komponenten
eines Computersystems und insbesondere auf Verfahren und Vorrichtung
zum Leiten von Datenwörtern
zwischen den Komponenten eines Computer-Systems, wie z. B. dem Prozessor,
dem Speicher und/oder Eingangs/Ausgangs-Vorrichtungen unabhängig davon,
ob die Komponenten so konfiguriert sind, daß sie Datenwörter mit
der gleichen Breite verarbeiten.
-
Wie den Fachleuten wohlbekannt ist,
besteht ein Computer-System aus einer Anzahl Teilsysteme, die durch
die Pfade untereinander verbunden sind, die Daten zwischen den Teilsystemen übertragen.
Zwei derartige Teilsysteme sind die Zentraleinheit ("Prozessor") oder das Prozessor-Teilsystem
und ein Speicher und das Speicher-Teilsystem ("Speicher"), das mehrere Speichervorrichtungen
umfassen kann. Der Prozessor steuert den Betrieb des Computer-Systems,
indem er eine Folge von Befehlen ausführt, um eine Folge mathematischer
Operationen an den Daten auszuführen.
Sowohl die Befehle als auch die Daten sind im Speicher des Computers
als binäre
Informationen, Muster aus logischen Einsen und Nullen, gespeichert.
Während
der Prozessor und der Speicher die wesentlichsten Teilsysteme eines
Computer-Systems darstellen, enthalten praktisch alle Computer-Systeme außerdem irgendeine
Anzahl an Eingangs/Ausgangs-Vorrichtungen ("E/A"-Vorrichtungen)
für die Übertragung
von Informationen in das und aus dem Computer-System. Die häufigsten E/A-Vorrichtungen,
die mit einem Computer-System
verwendet werden, umfassen eine Tastatur zum Eingeben von Informationen
und Befehlen, einen Videomonitor und einen Drucker, um die Informationen
für den
Anwender zurückzuerhalten,
und ein Diskettenlaufwerk oder eine Festplatte, um permanente Aufzeichnungen
der gespeicherten Informationen zu machen oder um zusätzliche
Software auszuführen.
Um eine E/A-Vorrichtung in einem Computer-System zu installieren,
wird die E/A-Vorrichtung an einen Ausgang des Computers ("E/A-Anschluß") angeschlossen,
der wiederum einen Pfad zwischen der E/A-Vorrichtung und den Teilsystemen
des Computers bereitstellt.
-
Es ist den Fachleuten weiter wohlbekannt,
daß alle
Computer-Systeme ferner Kommunikationskanäle oder "Busse" zwischen dem Prozessor, dem Spei cher
und allen anderen Teilsystemen, die in einem speziellen Computer-System
enthalten sind, enthalten. Typischerweise sind Computer-Systeme
mit einem Datenbus, der die Daten zum und vom Speicher überträgt, einem
Adressenbus, der Signale überträgt, um eine
gegebene Speicheradresse zu lokalisieren, und einen Steuerbus, der
Takt- und Steuerimpulse an alle Teilsysteme überträgt, die in einem Computer-System
enthalten sind, versehen. Außerdem
sind die E/A-Anschlüsse
ebenfalls an die Busse angeschlossen, um die E/A-Vorrichtungen mit
dem Computer-System zu verbinden.
-
Die Informationen werden zwischen
den Computer-Komponenten in der Form von Datenwörtern übertragen. Ein Datenwort ist
eine Folge binärer
Ziffern oder "Bits", wobei jedes Bit
zu einer "1" oder einer "0" äquivalent
ist. Während
die Größe eines
Datenwortes zwischen den Computer-Komponenten mit verschiedener Konstruktion
variieren kann, weisen die Datenwörter am häufigsten eine Länge zwischen
8 und 32 Bits auf. Im allgemeinen, da zunehmend schnellere Computer-Systeme
gesucht sind, hat die Größe der Datenwörter zugenommen,
so daß die
Daten in größeren Einheiten
verarbeitet werden können,
wobei pro Zeiteinheit mehr Datenbits durch das System bewegt werden.
Während
z. B. Prozessor-Teilsysteme, die 16-Bit-Wörter verwendeten, erst vor
ein paar Jahren üblich
waren, verwenden die Prozessor-Teilsysteme des gegenwärtigen Standes
der Technik, wie z. B. die von der Intel Corporation hergestellten
Mikroprozessoren 80386 und 80486, 32-Bit Architekturen, sogenannte
Doppelwort-Architekturen, um die Daten schneller zu handhaben. Ähnlich können die
Speicher-Teilsysteme des Computer-Systems abermals für den schnelleren
Zugriff nun Daten in Einheiten von 64 Bits speichern und handhaben,
d. h. vier zusammenhängende
Wörter
aus jeweils 16 Bits oder zwei zusammenhängende Doppelwörter aus
jeweils 32 Bits.
-
Jedes Computer-Teilsystem und/oder
jede E/A-Vorrichtung, die kombiniert sind, um ein Computer-System
zu bilden, sind konfiguriert, um die Daten in Einheiten zu übertragen,
die eine spezifizierte Anzahl von Bits umfassen. Die Anzahl der
Bits, die ein Teilsystem oder eine E/A-Vorrichtung als eine einzelne
Einheit verarbeiten kann, wird im allgemeinen als seine "Datenbreite" bezeichnet. Wenn
ein Teilsystem-Paar, wie z. B. ein E/A-Vorrichtungs-Paar oder eine
E/A-Vorrichtung und ein Teilsystem so konfiguriert sind, daß sie die
gleiche Datenbreite aufweisen, sind die zwei "homogen" oder aneinander "angepaßt". Wenn die sendende Vorrichtung die
Daten in Einheiten mit der gleichen Größe ausgibt, für deren
Zugriff die empfangende Vorrichtung konstruiert ist, sind die Datenübertragun gen
zwischen homogenen Vorrichtungen entlang eines Verbindungsbusses
relativ einfach. Falls jedoch ein Teilsystem-Paar, ein E/A-Vorrichtungs-Paar
oder eine E/A-Vorrichtung und das Teilsystem mit verschiedenen Datenbreiten
konfiguriert sind, sind die zwei "heterogen" oder "fehlangepaßt". Da heterogene Vorrichtungen den Verbindungsbus
nicht mit Dateneinheiten in der gleichen Größe adressieren können, sind
die Datenübertragungen
zwischen heterogenen Vorrichtungen komplizierter.
-
Computer-Systeme, die aus fehlangepaßten Teilsystemen
und/oder E/A-Vorrichtungen
aufgebaut sind, ergeben sich aus irgendeiner Anzahl von Gründen. Die
technologischen Entwicklungen, die die Übertragung von Daten in zunehmend
größeren Einheiten
erlauben, sind z. B. oft chronologisch unregelmäßig verteilt. Während folglich
eine bestehende E/A-Vorrichtung an ein älteres 8- oder sogar 16-Bit-Prozessor-Teilsystem angepaßt sein
kann, würde
die gleiche E/A-Vorrichtung fehlangepaßt sein, falls sie an ein neueres
32-Bit-Prozessor-Teilsystem angeschlossen wird. Im Ergebnis würde ein
Systemkonstrukteur gezwungen sein, um aus einer Verbesserung der
Betriebsgeschwindigkeit eines Computer-Teilsystems zu profitieren,
die sich aus einem verbesserten Teilsystem ergibt, das größerer Dateneinheiten
handhabt, alle Teilsysteme und E/A-Vorrichtungen zu ersetzen, die
nicht auf die gleiche Größe einer
Dateneinheit zugreifen können,
wenn es nicht irgendeinen Weg gibt, um die Fehlanpassung der Vorrichtungen
zu kompensieren.
-
Das US-Patent Nr. 4.716.527 an Graciotti
ist z. B. auf eine Vorrichtung gerichtet, die einen Mikroprozessor
mit einem 16-Bit-Datenbus mit Peripheriegeräten, Erweiterungsvorrichtungen
und zugeordneter Software, die für
einen 8-Bit-Datenbus
konstruiert sind, kompatibel macht, indem es einen Busumsetzer vorsieht, der
die Daten vom 16-Bit-Datenbus empfängt und den Datenbus in hohe
und tiefe Abschnitte unterteilt. Die hohen und tiefen Abschnitte
können
dann selektiv an den 8-Bit-Datenbus gekoppelt werden. Das heißt, falls ein
16-Bit-Wort vom Mikroprozessor zu einer 8-Bit-breiten externen Vorrichtung übertragen
wird, werden die oberen und unteren Abschnitte selektiv an die 8-Bit-breite
externe Vorrichtung gekoppelt.
-
Während
die Verbindung eines breiteren Datenbusses an einen schmalen Datenbus
mittels eines Datenregisters, das eine Breite aufweist, die der
des breiteren Datenbusses entspricht, und einer Wähl-Schaltungsanordnung,
die die verschiedenen Abschnitte des Datenregisters, einen zu einem
Zeitpunkt, in einer geeigneten Reihenfolge an den schmaleren Datenbus
anschließt,
einen zufriedenstellenden Betrieb schaffen kann, können derartige
Typen von Schnittstellenmechanismen einen Engpaß für die Bewegung der Daten in anderen
Anwendungen darstellen. Insbesondere wenn mehrere Einheiten, die
Daten handhaben, an eine Seite des Schnittstellenmechanismus angeschlossen
sind, während
die Einheften, die Daten handhaben, auf den entgegengesetzten Seiten
des Schnittstellenmechanismus nicht immer bereit sind, um zum gleichen
Zeitpunkt eine Datenübertragung
auszuführen,
dann kann Verzögerungen
begegnet werden, wenn eine der mehreren Einheiten auf den Abschluß einer
Datenübertragung
von einer anderen der mehreren Einheiten warten muß.
-
Ähnlich
ist das US-Patent Nr. 4.309.754 an Dinwiddie Jr. auf einen Daten-Schnittstellenmechanismus gerichtet,
um Busse mit verschiedenen Bitbreiten zu koppeln. Um die Datenbytes
in Datenwörter
mit mehreren Bytes umzusetzen, sieht Dinwiddie Jr. mehrere Schreib-Lese-Speichereinheiten
(RAM-Speichereinheiten), die sich zwischen den zwei Datenbussen
befinden, und eine Adressierungsstruktur, die Steuersignale erzeugt, vor.
Für aufeinanderfolgende
Datenübertragungen
zu dem oder von dem schmaleren Datenbus wählt eine . Folge verschiedener
Chip-Auswahlsignale die verschiedenen RAM-Einheiten, eine nach der
anderen, in einer sich wiederholenden Folge, um aufeinanderfolgende
Datenbytes zu übertragen.
Wie Graciotti macht jedoch die sich wiederholende Zugriffsfolge
Dinwiddie Jr. besonders unflexibel, sollten sich die relativen Breiten
der gekoppelten Busse ändern.
Außerdem
würden
die durch die Schaltungsanordnung von Dinwiddie Jr. erzeugten Chip-Auswahlsignale
nicht in der Lage sein, Daten zwischen Schnittstellenunterschieden
mit sich ändernder
Breite zu übertragen.
-
Die europäische Patentanmeldung Nr. 0
255 593 offenbart ein Busschnittstellen-System, das Informationssignale
zwischen zwei Bussen mit unterschiedlicher Breite durch die Verwendung
eines Mehrwort-Pufferspeichers und eines Registers übertragen
kann, die durch einen Mikroprozessor gesteuert werden, wobei die Informationssignale
von einem Bus mit einer ersten Breite in den Mehrwort-Speicher gelesen
und in Informationssignale einer zweiten Breite in dem Register
für die Übertragung
zu einem Bus mit der zweiten Breite zusammengesetzt werden.
-
Die französische Anmeldung Nr. 2 634
919 offenbart einen Mikroprozessorbus, wobei sie GB 2 221 553A als äquivalent
besitzt. Entsprechend ihrer Zusammenfassung offenbart GB 2 221 553A
einen Mikroprozessor, der eine Breite des internen Datenbusses von
n Bytes aufweist, wobei n größer als
2 ist (in der bevorzugten Ausführungsform
ein 32-Bit-Bus), wobei sie Adressensignale für eine n-Byte-Übertragung
(Lesen oder Schreiben) der Daten vorsieht, einen Eingang, der wenigstens
ein "Größen"-Signal empfängt, das
die Anzahl der Bytes anzeigt, die ein externer Speicher beim nächsten Bereitsignal übertragen
wird, wobei der Mikroprozessor Logikmittel und einen Ausgang umfaßt, die
ein "letztes" Signal bereitstellen,
das anzeigt, daß eine
Datenübertragungs-Anforderung
durch den Mikroprozessor mit der Datenübertragung erfüllt wird,
die beim nächsten
Bereitsignal erfolgt, wobei dieses Logikmittel, das die Anzahl der
Bytes verfolgt, die periodisch übertragen
worden sind, das Byte-Bemessungssignal abtasten und . den Status
des "letzten" Signals liegend" ändern können; deshalb kann der externe
Speicher beispielhaft ein spezielles Byte-Größensignal als einen vorgegebenen
Zustand bereitstellen und dann das Signal ändern, wenn der Speicher die
Anzahl der Bytes bestimmt, die der Speicher tatsächlich übertragen kann, wobei das "letzte" Signal dementsprechend
geändert wird.
GB 2 221 553A enthält
die spezifische Offenbarung, daß in
einigen Mikroprozessoren ein interner Datenbus aus z. B. 32 Bits
direkt mit einem externen Datenbus gekoppelt werden kann, der weniger
Leitungen aufweist, wie z. B. im Fall des Intel 80386, in dem ein
8-Bit-Datenbus direkt
mit den unteren 8 Leitungen/Bits des internen Datenbusses diees
Mikroprozessors gekoppelt werden kann, wobei Signale an den Mikroprozessor angelegt
werden, um anzuzeigen, daß lediglich
die unteren 8 Leitungen des Datenbusses im Gebrauch sind, obwohl
fast immer der Mikroprozessor einen internen Multiplexer enthält, der
erlaubt, daß die
Leitungen des externen Datenbusses selektiv an die vier Byte-Leitungen
des internen Datenbusses gekoppelt werden.
-
Die vorliegende Erfindung schafft
eine Vorrichtung zum Leiten von Datenwörtern zwischen Komponenten
eines Computersystems, umfassend:
einen ersten Eingangs/Ausgangs-Anschluß zum Anschließen an eine
erste Eingangs/Ausgangs-Vorrichtung, die eine erste Komponente des
Computersystems bildet und Datenwörter mit einer Breite von n
Bits handhaben kann,
einen zweiten Eingangs/Ausgangs-Anschluß zum Anschließen an eine
zweite Eingangs/Ausgangs-Vorrichtung, die eine zweite Komponente
des Computersystems bildet und Datenwörter mit einer Breite eines
Vielfachen von n Bits handhaben kann, wobei ein erster Teil des
zweiten Eingangs/Ausgangs-Anschlus ses n Bits handhabt, die den n
Bits entsprechen, die von dem ersten Eingangs/Ausgangs-Anschluß gehandhabt
werden, und ein zweiter Teil des zweiten Eingangs/Ausgangs-Anschlusses
die übrigen
Bits handhabt,
mehrere Eingangs-Schaltmultiplexer, die erste
Eingangsanschlüsse
enthalten, die an den ersten Eingangs/Ausgangs-Anschluß und an
den ersten Teil des zweiten Eingangs/Ausgangs-Anschlusses angeschlossen
sind, wobei die Eingangs-Schaltmultiplexer weitere Eingangsanschlüsse enthalten,
die an den zweiten Teil des zweiten Eingangs/Ausgangs-Anschlusses
angeschlossen sind,
eine erste Speichervorrichtung, die einen
Eingangsanschluß enthält, der
an den ersten Eingangs/Ausgangs-Anschluß und an den ersten Teil des
zweiten Eingangs/Ausgangs-Anschlusses angeschlossen ist, wobei die
erste Speichervorrichtung einen Ausgangsanschluß enthält,
mehrere weitere Speichervorrichtungen,
die Eingangsanschlüsse,
die an die Ausgangsanschlüsse
der Eingangs-Schaltmultiplexer angeschlossen sind, sowie jeweilige
Ausgangsanschlüsse
enthalten,
einen dritten Eingangs/Ausgangs-Anschluß, der Datenwörter mit
einer Breite von m Bits handhaben kann und an die Ausgangsanschlüsse der
ersten und der weiteren Speichervorrichtungen angeschlossen ist,
einen
ersten Ausgangs-Schaltmultiplexer, der einen ersten Eingangsanschluß enthält, der
an die Ausgangsanschlüsse
der ersten und der weiteren Speichervorrichtungen angeschlossen
ist,
weitere Ausgangs-Schaltmultiplexereinrichtungen, die Eingangsanschlüsse enthalten,
die an den Ausgangsanschluß des
ersten Ausgangs-Schaltmultiplexers angeschlossen sind,
mehrere
Ausgangs-Speicherpuffer, die Eingangsanschlüsse, die an den Ausgangsanschluß der weiteren
Ausgangs-Schaltmultiplexereinrichtungen angeschlossen sind, sowie
jeweilige Ausgangsanschlüsse
enthalten, wobei der Ausgangsanschluß eines ersten der Ausgangs-Speicherpuffer
an den ersten Eingangs/Ausgangs-Anschluß und an den ersten Teil des
zweiten Eingangs/Ausgangs-Anschlusses angeschlossen ist und die
Ausgangsanschlüsse
der verbleibenden Ausgangs-Speicherpuffer an den zweiten Teil des
zweiten Eingangs/Ausgangs-Anschlusses angeschlossen sind,
einen
Eingangs-Lenkungscode-Decodierer, der so angeschlossen ist, daß er erste
Steuersignale empfängt und
die Eingangs-Schaltmultiplexer und die ersten und weiteren Speichervorrichtungen
in Übereinstimmung mit
den ersten Steuersignalen steuert, um Daten von den ersten und zweiten
Eingangs/Ausgangs-Anschlüssen
an den dritten Eingangs/Ausgangs-Anschluß zu leiten, wobei Böcke der
Datenwörter
gegebenenfalls durch die Eingangs-Schaltmultiplexer und die ersten
und weiteren Speichervorrichtungen umgruppiert werden, um die Daten
dem dritten Eingangs/Ausgangs-Anschluß in Wörtern mit einer Breite von
m Bits zu präsentieren, und
einen
Ausgangs-Lenkungscode-Decodierer, der so angeschlossen ist, daß er zweite
Steuersignale empfängt und
den ersten Ausgangs-Schaltmultiplexer die weiteren Ausgangs-Schaltmultiplexereinrichtungen
und die Ausgangs-Speicherpuffer
in Übereinstimmung
mit den zweiten Steuersignalen steuert, um Daten von den Ausgangsanschlüssen der
ersten und weiteren Speichervorrichtungen an die ersten und zweiten
Eingangs/Ausgangs-Anschlüsse
zu leiten, indem Daten vom ersten Eingangsanschluß des ersten
Ausgangs-Schaltmultiplexers gewählt
werden, wobei Datenwörter
gegebenenfalls durch den ersten Ausgangs-Schaltmultiplexer, die weiteren
Ausgangs-Schaltmultiplexereinrichtungen und die Ausgangs-Speicherpuffer
umgruppiert werden, um die Daten den ersten und zweiten Eingangs/Ausgangs-Anschlüssen in
Wörtern
mit einer Breite von n Bits bzw. in Wörtern mit einer Breite eines
Vielfachen von n Bits zu präsentieren.
-
Vorzugsweise enthält der erste Ausgangs-Schaltmultiplexer
einen zweiten Eingangsanschluß,
wovon ein Teil an den ersten Eingangs/Ausgangs-Anschluß angeschlossen
ist und der Rest an die Eingangsanschlüsse der weiteren Speichervorrichtungen
angeschlossen ist, wobei der Ausgangs-Lenkungscode-Decodierer so
angeschlossen ist, daß er
die Eingangs-Schaltmultiplexer und die ersten und weiteren Speichervorrichtungen
in Übereinstimmung
mit weiteren Steuersignalen steuert, um durch die Wahl von Daten
vom zweiten Eingangsanschluß des
ersten Ausgangs-Schaltmultiplexers Daten zwischen den ersten und
zweiten Eingangs/Ausgangs-Anschlüssen über die
Eingangsanschlüsse
der ersten und der weiteren Speichervorrichtungen zu leiten.
-
In einer Anordnung umfaßt die Vorrichtung
eine erste zusätzliche
Speichervorrichtung, wovon ein Eingangsanschluß dem Anschluß an einen
Prozessor dient, wobei der erste Ausgangs-Schaltmultiplexer einen dritten
Eingangsanschluß enthält und Einrichtungen
enthalten sind, um einen Ausgangsanschluß der ersten zusätzlichen
Speichervorrichtung an den dritten Eingangsanschluß des ersten
Ausgangs-Schaltmultiplexers anzuschließen.
-
Vorzugsweise umfaßt die Vorrichtung eine zweite
zusätzliche
Speichervor richtung und einen zweiten Ausgangs-Schaltmultiplexer,
wobei die zweite zusätzliche
Speichervorrichtung einen Eingangsanschluß für den Anschluß an einen
Speicher enthält
und der zweite Ausgangs-Schaltmultiplexer so betreibbar ist, daß er entweder
den Ausgangsanschluß der
ersten zusätzlichen
Speichervorrichtung oder einen Ausgangsanschluß der zweiten zusätzlichen
Speichervorrichtung an den dritten Eingangsanschluß des ersten
Ausgangs-Schaltmultiplexers anschließt.
-
Vorzugsweise umfaßt die Vorrichtung eine dritte
zusätzliche
Speichervorrichtung, die zwischen einen Ausgangsanschluß des zweiten
Ausgangs-Schaltmultiplexers und den dritten Eingangsanschluß des ersten Ausgangs-Schaltmultiplexers
geschaltet ist.
-
Vorzugsweise umfaßt die Vorrichtung eine vierte
zusätzliche
Speichervorrichtung, die einen Eingangsanschluß für den Anschluß an den
Speicher und einen Ausgangsanschluß, der an einen zusätzlichen
Eingangsanschluß des
zweiten Ausgangs-Schaltmultiplexers angeschlossen ist, enthält.
-
Die Vorrichtung kann in einem Computer-System
enthalten sein.
-
Die vorliegende Erfindung kann besser
verstanden werden, wobei ihre zahlreichen Aufgaben, Merkmale und
Vorteile für
die Fachleute durch Bezugnahme auf die beigefügte Zeichnung offensichtlich
werden, worin:
-
1 ein
Basisblockschaltplan eines Computer-Systems ist;
-
2 ein
Blockschaltplan eines Prozessor-Teilsystems ist, wie es z. B. in
dem Computer-System nach 1 verwendet
werden könnte;
-
3 ein
Blockschaltplan eines Speicher-Teilsystems ist, wie es z. B. in
dem Computer-System nach 1 verwendet
werden könnte;
und
-
4 ein
Blockschaltplan der Schnittstelle zwischen dem Prozessorbus des
Computer-Systems nach 1 und
einer E/A-Vorrichtung ist.
-
In der Zeichnung, in der gleiche
Bezugszeichen völlig
gleiche oder ähnliche
Elemente durch die verschiedenen Ansichten hindurch bezeichnen,
ist in 1 ein allgemeiner
Basisblockschaltplan eines Computer-Systems dargestellt. Die vorliegende
Erfindung wird hierin anfangs auf dieser Ebene und einer Anzahl
aufeinanderfolgender, ausführlicherer
Ebenen betrachtet, um ein vollständiges
Verständnis
und eine vollständige Anerkennung
der Rolle und des Betriebs der vorliegenden Erfindung in einer Umgebung
zu sichern, in der sie zweckmäßig verwendet
werden kann.
-
1 veranschaulicht
ein Personal-Computer-System, das die vorliegende Erfindung verwendet.
Es sind vier Hauptbusse zu sehen, die die Haupt schnittstellen auf
der höchsten
Ebene darstellen. Diese Hauptbusse sind ein erster Speicherverbinder 2,
ein zweiter Speicherverbinder 4, ein Prozessorbus 16 und
ein E/A-Bus 20. Der erste Speicherverbinder ist eine proprietäre Schnittstelle
zwischen einem Prozessor-Teilsystems 6, einem ersten Speicher-Teilsystem 10,
das für
das Prozessor-Teilsystem 6 dediziert ist, und einen zweiten
Speicher-Teilsystem 12, das ebenfalls für das Prozessor-Teilsystem 6 dediziert
ist. Vorzugsweise sind das erste Speicher-Teilsystem 10 und
das zweite Speicher-Teilsystem 12 jedes als ein verschachtelter
64-Bit-Speicher mit zwei zugeordneten Bänken für die Speicherung jeweils eines
32-Bit-Doppelworts, einer ungeraden und einer geraden, konfiguriert.
Das Prozessor-Teilsystem 6, das erste Speicher-Teilsystem 10 und
das zweite Speicher-Teilsystem 12 sind durch die Speicher-Schnittstellen 3, 102 bzw. 5 an
den Speicherverbinder 2 angeschlossen. Das Prozessor-Teilsystem 6 ist
außerdem
durch eine Prozessorschnittstelle 11 an den Prozessorbus 16 angeschlossen.
-
Der zweite Speicherverbinder 4 ist
ebenfalls eine proprietäre
Schnittstelle, hier zwischen einem ersten Computer-Teilsystem 8 und
einem zweiten Computer-Teilsystem 14.
Es ist vorstellbar, daß verschiedene
Typen von Teilsystemen, abhängig
von den speziellen, für
das Gesamt-Computer-System gewünschten
Betriebsfähigkeiten,
als die Computer-Teilsysteme 8, 14 installiert
sind. Das Computer-Teilsystem 8 kann z. B. ein Prozessor-Teilsystem
oder eine E/A-Vorrichtung sein, obwohl für die Zwecke der folgenden
Erörterung
ein Prozessor 8 als das Computer-Teilsystem 8 ausgewählt werden
sollte. Außerdem
kann das Computer-Teilsystem 14 ein
Prozessor-Teilsystem, eine E/A-Vorrichtung oder ein Speicher-Teilsystem sein,
obwohl für
die Zwecke der folgenden Erörterung
eine intelligente E/A-Vorrichtung 14 als das Computer-Teilsystem 14 ausgewählt werden
sollte. Jedes Computer-Teilsystem 8, 14 ist mit
einer Speicherschnittstelle 7 bzw. 9, um an den
Speicherverbinder 4 angeschlossen zu werden, und einer
Prozessorschnittstelle 13 bzw. 15, um an den Prozessorbus 16 angeschlossen
zu werden, versehen.
-
Der Prozessorbus 16 ist
ein Mehrfach-Master-Bus, der die architektonische Bruchstelle zwischen
den Verarbeitungs-Teilsystemen (dem Prozessor 6 und dem
Prozessor 8) und der E/A-Vorrichtung ist, die eine E/A-Vorrichtung 18,
die E/A-Vorrichtung 14 und über einen E/A-Bus 20 die
E/A-Erweiterungssteckplätze 22, 24, 26, 28, 30, 32, 34, 36, 38, 40 enthält. Der
Prozessorbus 16 führt
verschiedene Funktionen aus. Zuerst dient der Prozessorbus 16 als
eine Verbindung zwi schen den Prozessoren 6 und 8 und
der intelligenten E/A-Vorrichtung 14; allem Systemspeicher einschließlich des
ersten Speicher-Teilsystems 10 und des zweiten Speicher-Teilsystems 12;
und den E/A-Vorrichtungen, die die E/A-Vorrichtung 18 und die E/A-Erweiterungssteckplätze 22, 24, 26, 28, 30, 32, 34, 36, 38, 40 enthält, die
alle für
die Installation einer E/A-Vorrichtung darin konfiguriert sind.
-
Wie oben beschrieben ist, erlaubt
der Prozessorbus 16 jedem Prozessor-Teilsystem 6, 8, auf
das Speicher-Teilsystem eines anderen Prozessor-Teilsystems 8, 6 zuzugreifen.
Dieser Zugriff wird "durch" den Prozessor erlaubt,
der direkt an den Speicher angeschlossen ist. Das heißt, wenn
ein Prozessor, der an den Prozessorbus 16 angeschlossen
ist, den Zugriff auf eine Speicherstelle im Speicher irgendeines
anderen Prozessors anfordert, vervollständigt der andere Prozessor
den Zugriff lokal, empfängt
die Adresse vom Prozessorbus 16 und überträgt die Daten vom und zum Prozessorbus 16.
Außerdem
dient der Prozessorbus 16 als eine Kommunikationsverbindung
zwischen den Prozessoren 6 und B. Durch einen Kommunikationsmechanismus zwischen
den Prozessoren kann jeder Prozessor jeden anderen Prozessor adressieren
und unterbrechen.
-
Außer dem vorangegangenen wirkt
der Prozessorbus 16 außerdem
als eine Schnittstelle zwischen den Prozessor-Speicherkomplexen
und der E/A-Vorrichtung 18. Durch einen System- und Bus-Controller 42 werden
die Adressen und die Daten zwischen dem Prozessorbus 16 und
dem E/A-Bus 20 durch eine Gruppe von Sendern/Empfängern 44, 46 (wie
z. B. den Sendern/Empfängern
des von Texas Instruments Incorporated hergestellten Modells 74ALS245)
umgesetzt. Durch diese Schnittstelle kann der Prozessor-Bus-Master
sowohl auf die E/A-Vorrichtung 18 als
auch auf die E/A-Erweiterungssteckplätze 22, 24, 26, 28, 30, 32, 34, 36, 38, 40 zugreifen.
Noch weiter wirkt der Prozessorbus 16 als der Datenpfad
für E/A-zu-E/A-Zugriffe.
Wie im folgenden ausführlicher
beschrieben ist, erzeugt der System- und Bus-Controller 42 "Lenkungscodes", die das für die Kommunikation
zwischen den Vorrichtungen notwendige Protokoll formatieren und
die erlauben, daß intelligente
Karten in einen E/A-Erweiterungssteckplatz gesteckt werden, um auf
andere E/A-Karten oder sogar den Prozessorbus-Speicher zuzugreifen.
Außer
der Bereitstellung der Lenkungsinformationen und der Erzeugung der
Lenkungscodes handhabt der System- und Bus-Controller 42 außerdem die
gesamte Arbitrierung des Prozessorbusses 16 und verbindet
alle Steuersignale mit der System-E/A 18 (wie z. B. ISA-"Befehle", DMA-Steuersignale
und Unterbrechungen).
-
In 2 ist
ein Blockschaltplan der Hauptkomponenten einer Prozessorkarte gezeigt.
Unter Bezugnahme auf 1 kann
dieses Prozessor-Teilsystem 6 als über den Speicherverbinder 2 und
den Prozessorbus 16 an den Rest des Computer-Systems angeschlossen
betrachtet werden. Das Prozessor-Teilsystem 6 enthält einen
Mikroprozessor 48 (z. B. einen Intel 80386), einen numerischen
Coprozessor 50 (z. B. einen Intel 80387), einen optischen
Coprozessor 52 (z. B. einen Weitek 3167), ein Cache-Teilsystem
(das im folgenden erörtert
ist), eine Taktschaltung 54, einen Festwertspeicher mit
Selbsttest beim Einschalten oder "POST-ROM" 56, einen Datenfluß- und ECC-Controller 58 und
einen Speicherund Bus-Controller 60.
-
Das Cache-Teilsystem enthält einen
Cache-Speicher (der als aus zwei separaten SRAM-Bänken 62A, 62B und
einem Cache-Controller 64 (z. B. einen Intel 82385) bestehend
gezeigt ist). Es sollte für
die Fachleute selbstverständlich
sein, daß das
Cache-Teilsystem als ein äußerst schneller, "notizblockartiger" Speicher funktioniert,
der einen schnellen Zugriff auf die Daten bereitstellt, die vom
Prozessor am häufigsten
benötigt
werden. Das System der vorliegenden Erfindung kann einen Cache-Speicher
mit Cache-Zeilengrößen von
jeweils 4 Doppelwörtern
verwenden, so daß,
falls ein cache-barer Lesevorgang vom Prozessor ausgeführt wird,
der Speicher-Controller 4 aufeinanderfolgende Doppelwörter aus
dem Systemspeicher in den Cache zurückschickt.
-
Der Betrieb des Cache-Teilsystems
ist in US-A-5325508, veröffentlicht
am 28. 06. 1994, ausführlicher beschrieben.
-
Für
Systeme mit einem Cache 62A, 62B ist ein Abfrage-Adressenspeicher 66 enthalten,
um jede Prozessoradresse zu erfassen, die erzeugt wird, um, falls
notwendig, Adressen ungültig
zu machen. Außerdem ist
in Systemen mit einem Cache-Speicher eine Zeilenerweiterungslogik 68 in
Form einer programmierbaren Anordnungslogik ("PAL")
enthalten, um Adressen- und Steuersignale zu steuern, die zwischen
dem Cache 62A, 62B, dem Cache-Controller 64 und
dem Speicherund Bus-Controller 60 geleitet werden.
-
Das Prozessor-Teilsystem 6 enthält außerdem lokale
Adressen-, Datenund Steuerbusse (die durch die verschiedenen Pfeile
angegeben sind, die in 2 gezeigt
sind), die den Mikroprozessor 48, die Coprozessoren 50, 52,
die Caches 62A, 62B, den Datenfluß- und ECC-Controller 58 und
den Speicher- und Bus-Controller 60 untereinander
verbinden. Diese Busse werden für
lokale Zyklen verwendet, wie z. B. Lesevorgänge des POST-ROMs 56,
Coprozessor-Zyklen und Cache-Lesertreffer. Der Zugriff auf den POST-ROM 56 kann über den
Betrieb des Datenfluß-
und ECC-Controllers 58 erreicht werden. Für globale
Zyklen, wie z. B. Cache-Schreibvorgänge, Cache-Lese-Fehltreffer,
nicht-cache-bare Zyklen und E/A-Zyklen muß das Prozessor-Teilsystem 6 seinen
Zugriff jedoch außerhalb
der Leiterplatte abschließen.
-
Für
Zyklen außerhalb
der Leiterplatte decodiert der Speicher- und Bus-Controller
60 die lokalen Adressen-
und Steuersignale und bestimmt, ob der Zugriff für den Prozessorbus
16 oder
für den
dedizierten Speicher bestimmt ist. Für einen Speicherzyklus erzeugt
der Speicher- und Bus-Controller
60 die Speichersteuersignale (d.
h. RAS, CAS und WE) und die Adressen für den Zugriff auf die Speicherkarte.
Der Speicher- und Bus-Controller
60 erzeugt außerdem die
Auftrischsignale für
die Speicherkarte, z. B. das Element
10, für jede Auffrischperiode.
Im Zusammenhang mit dem Speicherbus-Controller
60 führt der
Datenflußund
ECC-Controller
58 außerdem
die Fehlerprüfung
und -korrektur aus. Die Fehlerprüfung
und -korrektur ist in
US 5598422 ,
veröffentlicht
am 28. 01. 1997, ausführlich
beschrieben.
-
Für
Zyklen außerhalb
der Leiterplatte, die nicht für
die Speicherkarte 10 bestimmt sind, erzeugt der Speicher-
und Bus-Controller 60 ein Prozessorbus-Anforderungssignal und übernimmt
die Steuerung des Prozessorbusses 16, wenn sie gewährt wird.
Der Speicher- und Bus-Controller 60 schließt in Zusammenarbeit
mit dem Datenfluß-
und ECC-Controller 58 abermals den Zugriff auf den Prozessorbusses 16 ab.
-
In 3 ist
ein Blockschaltplan der Hauptkomponenten der Speicherkarte 10 dargelegt.
Unter Bezugnahme auf 1 ist
die Speicherkarte 10 über
den Speicherverbinder 2 an den Rest des Systems angeschlossen.
Wie oben erörtert
ist, implementiert jede Speicherkarte 10 vorzugsweise die
Speicherung von virtuellen 64-Bit-Wörtern in der Form von 2 verschachtelten
Bänken
aus 32-Bit-Doppelwörtern,
einer ungeraden und einer geraden. Jede Karte 10 enthält einen
RAS-, CAS- und Auffrisch-Controller 68, vier Adressenpuffer 70, 72, 74, 76,
acht SIMM-Einbauplätze
(Einbauplätze
für Speichermodule
mit einseitiger, geradliniger Anschlußfolge) 78, 80, 82, 84, 86, 88, 90, 92,
und vier Verschachtelungs-Controller 94, 96, 98, 100.
Der RAS-, CAS- und Auffrisch-Controller 68, der in der
ebenfalls anhängigen
US-Patentanmeldung mit der SerienNr. 07/540.049 mit dem Titel "A Digital Computer
Having a System for Sequentially Refreshing an Expandable Dynamic
RAM Memory Circuit",
eingereicht am 19. Juni 1990, auf den Anmelder dieser Erfindung,
dem diese Erfindung übertragen
wurde, übertragen
und hiermit durch Literaturhinweis eingefügt, ausführlicher beschrieben ist, empfängt die
Steuersignale von der Speicherschnittstelle 102 (siehe 1) und wird vom Speicher-
und Bus-Controller 60 angesteuert (siehe 2). Der RAS-, CAS- und Auffrisch-Controller 68 steuert
wiederum die Steuersignale für
die SIMM-Einbauplätze 68, 80, 82, 84, 86, 88, 90, 92 für Lese-,
Schreib- und Auffrischvorgänge
an. Jeder der vier Verschachtelungs-Controller 94, 96, 98, 100,
die in der ebenfalls anhängigen
US-Patentanmeldung mit der SerienNr. 07/530.137 mit dem Titel "Dual Path Memory
Retrieval System for an Interleaved Dynamic RAM Memory Unit", eingereicht am
25. Mai 1990, auf den Anmelder dieser Erfindung, dem diese Erfindung übertragen
wurde, übertragen
und hiermit durch Literaturhinweis eingefügt, ausführlicher beschrieben sind, multiplexieren
acht Datenbits zwischen dem Speicherverbinder 2 und den
SIMM-Einbauplätzen 78, 80, 82, 84, 86, 88, 90, 92.
-
Wie im folgenden ausführlicher
erklärt
wird, werden die Daten zwischen den geraden und ungeraden Bänken aus
32 Datenbits aufgeteilt, um eine wahre Verschachtelung zu erreichen.
Das heißt,
für jeden
Lesevorgang wird auf 64 Datenbits zugegriffen, wobei die vier Verschachtelungs-Controller 94, 96, 98, 100 32
Bits (entweder die geraden oder die ungeraden Daten) für den aktuellen
Zugriff auswählen.
Der anschließende
Zugriff kann in einem einzigen Prozessortaktzyklus abgeschlossen
werden, weil auf das zweite 32-Bit-Doppelwort bereits zugegriffen
wurde und es bereits aufgefangen wurde.
-
Wie oben erwähnt ist, enthält die Speicherkarte 10 die
Adressenpuffer 70, 72, 74, 76 und
die SIMM-Einbauplätze 78, 80, 82, 84, 86, 88, 90, 92.
Lediglich beispielhaft könnten
die von VTC hergestellten Datenpuffer der Modelle 74FCT828 und 74FCT827
als die Adressenpuffer 70, 72, 74, 76 verwendet
werden. Es werden invertierende (74FCT828) und nichtinvertierende
(74FCT827) Puffer verwendet, um die durchschnittliche Signalumschaltung
der Adressenleitung zu minimieren, um das elektrische Rauschen zu
minimieren. Die SIMM-Einbauplätze 78, 80, 82, 84, 86, 88, 90, 92 können angepaßt werden,
um 1-, 2-, 4-oder 8-MByte-SIMMs
mit Parität
oder ECC-Organisation aufzunehmen.
-
Bevor die Datenschnittstelle und
die Daten-Leittechniken beschrieben werden, die das Leiten der Daten
zwischen einer E/A-Vorrichtung und einem fehlangepaßten Prozessorbus
oder zwischen einem Paar fehlangepaßter E/A-Vorrichtungen erlauben,
müssen
zuerst bestimmte Definitionsmerkmale des in den 1–3 veranschaulichten Computersystems
dargelegt werden.
-
Das hierin beschriebene Computer-System
verarbeitet die Informationen in Einheiten von 32-Bit-Datenblöcken, wobei
jedes Bit das äquivalent
einer logischen "1" oder einer logischen "0" darstellt. Im folgenden wird jede 32-Bit-Dateneinheit
als ein Daten-"Wort" bezeichnet. Ähnlich wird
ein Block aus 16 Datenbits im folgenden als ein "Halbwort" bezeichnet, während ein Block aus 8 Datenbits
im folgenden als ein "Byte" bezeichnet wird.
Folglich ist jedes 32-Bit-Wort aus zwei Halbwörtern zusammengesetzt, von
denen jedes aus zwei Bytes zusammengesetzt ist. Abermals lediglich
für Definitionszwecke
werden im folgenden die Bytes und die Halbwörter, die in jeweils 32 Bits
enthalten sind, in Übereinstimmung
mit dem Folgenden bezeichnet:
-
-
Wie oben erörtert ist, sind die Prozessor-Teilsysteme 6, 8,
die Speicher-Teilsysteme 10, 12,
die Speicherverbinder 2, 4 und der Prozessorbusses 16 alle
konfiguriert, um die Daten in 32-Bit-Wörtern zu verarbeiten. Die E/A-Vorrichtungen
verarbeiten jedoch die Daten typischerweise nicht in 32-Bit-Einheiten.
Statt dessen verarbeiten die E/A-Vorrichtungen die Daten am häufigsten
in Einheiten von 8 oder 16 Bits. Für 16-Bit-E/A-Vorrichtungen
erfolgen die Datenübertragungen
während
des Halbwortes 0. Für
8-Bit-E/A-Vorrichtungen erfolgen die Datenübertragung in während des
Bytes 0.
-
Für
ein vollständiges
Verständnis
der vorliegenden Erfindung muß außerdem das "Byte-Freigabe"-Signal erörtert werden.
Es ist beabsichtigt, daß 32-Bit-Wörter, 16-Bit-Halbwörter und
8-Bit-Bytes zwischen den E/A-Vorrichtungen und dem Prozessorbus 16 übertragen
werden. Um dies auszuführen,
steuert die vorliegende Erfindung das Leiten jedes Datenbytes, ob
das Byte die Dateneinheit selbst oder eine Komponente eines größeren Datenblocks
ist, wie r. B. eines Halbwortes oder eines Wortes. Demzufolge muß die Übertragung
jedes Bytes innerhalb eines Wortes oder einer anderen Einheit gesteuert
werden. Wie im folgenden ausführlicher
beschrieben ist, wird die Übertragung
der Datenbytes durch eine Folge von Signalen gesteuert, die als "Byte-Freigabe"-Signale bezeichnet
werden. Falls das Byte-Freigabesignal für ein spezielles Byte gesendet wird,
wird dieses Byte dann durch die spezielle Schaltungsanordnung übertragen,
an die das im Byte-Freigabesignal gesendet wird. Demzufolge gibt
es für
jedes Datenbyte B0, B1, B2 und B3 ein entsprechendes Byte-Freigabesignal
BE0, BE1, BE2 und BE3, das nach der Sendung an die geeignete Schaltungsanordnung die Übertragung
des entsprechenden Datenbytes steuern wird.
-
Unter Bezugnahme auf 4 werden nun die Schnittstelleneinrichtung
und die Daten-Leittechniken ausführlich
beschrieben, die die Übertragung
von Daten zwischen dem 32-Bit-Prozessorbus 16 (oder angepaßten Computer-Komponenten
wie z. B. dem Prozessor 6 oder dem Prozessor 8,
die daran angeschlossen sind) und einer E/A-Vorrichtung erlauben,
die konfiguriert ist, um die Daten lediglich in 8-, 16- oder 32-Bit-Einheiten
zu verarbeiten. Wie in der ebenfalls anhängigen US-Patentanmeldung mit
der SerienNr. 490.003 mit dem Titel "Method and Apparatus for Performing
Multi-Master Bus Pipelining ",
eingereicht am 7. März
1990, auf den Anmelder dieser Erfindung, dem diese Erfindung übertragen
wurde, übertragen
und hiermit durch Literaturhinweis eingefügt, ausführlicher beschrieben ist, können sowohl
das Prozessor-Teilsystem 6 als auch das Prozessor-Teilsystem 8 als
ein Bus-Master dienen, um die Übertragung
der Informationen über
den Prozessorbus 16 zu und von einer Slave-Vorrichtung,
wie z. B. der E/A-Vorrichtung 18, steuern. Wie in der obenerwähnten Patentanmeldung
außerdem
beschrieben ist, kann, während
sowohl das Prozessor-Teilsystem 6 als auch das Prozessor-Teilsystem 8 Berechnungen
gleichzeitig ausführen
können,
lediglich eines zu einem Zeitpunkt ein Bus-Master sein. Um der Bus-Master
zu werden, muß das
Prozessor-Teilsystem 6 oder 8 den Prozessorbus 16 anfordern,
wobei ihm der Zugriff auf den Prozessorbus 16 gewährt werden
muß, damit
es der Bus-Master
wird. Der Prozessor 6, 8 muß dann die beabsichtigter Transaktion
abschließen
und den Bus loslassen.
-
Wie in der Patentanmeldung, auf die
oben Bezug genommen wird, ferner beschrieben ist, enthält der System-
und Bus-Controller 42 einen Busverwalter, der zwischen
zwei oder mehr anfordernden Prozessoren, wie z. B. dem Prozessor-Teilsystem 6 und
dem Prozessor-Teilsystem 8, arbitriert, falls beide Prozessoren
zum gleichen Zeitpunkt den Prozessorbus 16 anfordern, wobei
er den Bus einem der anfordernden Prozessor-Teilsysteme gewährt. Das
ausgewählte
Prozessor-Teilsystem wird sich danach aus einem anfordernden Zustand in
einen ausgewählten
Adressen-Master-Zustand bewegen, wenn der aktuelle Bus-Master die
Adressenleitungen des Busses freigibt. Der ausgewählte Adressen-Master adressiert
dann die Slave-Vorrichtung, z. B. die E/A-Vorrichtung 18,
um die Übertragung
der Daten auszulösen.
Zum gleichen Zeitpunkt wird der aktuelle Bus-Master der aktuelle Daten-Master, wobei
die Daten zu der vorausgehend adressierten Speicherstelle übertragen
werden. Wenn der aktuelle Daten-Master anzeigt, daß er die
Datenleitungen des Busses freigibt, wird der ausgewählte Adressen-Master
der ausgewählte
Bus-Master, während
der aktuelle Daten-Master aus dem Bus- in einen Ruhezustand übergeht.
Es ist offensichtlich, daß deshalb
der aktuelle Master der Daten-Master ist, während der ausgewählte Master
der Adressen-Master ist. In dem Fall, in dem es lediglich zwei mögliche Master-Vorrichtungen
gibt, gibt es keine Arbitrierung, weil eine der Vorrichtungen immer
eine Master-Vorrichtung sein wird, ohne die Notwendigkeit zu arbitrieren.
In der bevorzugten Ausführungsform
wird der Busverwalter trotzdem verwendet, um ein Bus-Gewährungssignal
an die anfordernde Vorrichtung zu erzeugen.
-
In 4 werden
nun die Schnittstelle zwischen den Computer-Teilsystemen und/oder
den E/A-Vorrichtungen und die Techniken für das Leiten der Daten zwischen
derartigen Teilsystemen und/oder E/A-Vorrichtungen beschrieben,
die der Gegenstand der vorliegenden Erfindung sind. Spezifischer
werden nun die Datenschnittstelle und das Leiten der Daten von einer
fehlangepaßten
E/A-Vorrichtung 18, die konfiguriert ist, um entweder 8,
16, 24 oder 32 Bits (1, 2, 3 oder 4 Bytes) zu verarbeiten, zu dem
32-Bit-Prozessorbus (4-Byte-Prozessorbus) 16 ausführlicher
beschrieben.
-
Während
eines Lesezyklus des Prozessors sind die Daten von der Slave-E/A-Vorrichtung 18 über den Prozessorbus 16 zum
Master-Daten-Prozessor-Teilsystem 6 zu übertragen. Während eines
derartigen Zyklus sendet die Slave-E/A-Vorrichtung 18 Dateneinheiten
einer ihrer Breite entsprechenden Größe von der Slave-E/A-Vorrichtung 18 an
die ersten, zweiten und dritten Eingangs-Byte-Austausch-Multiplexer
(oder "IS-Multiplexer") 108, 110 bzw. 112 und
an einen Eingangs-Signalspeicher (oder "IL")
114. Abhängig
von der Breite der E/A-Vorrichtung wird sich jede Dateneinheit aus
8, 16 oder 32 Bits zusammensetzen, wobei jede Gruppe der Bits 0–7 im folgenden
als ein "erstes" Byte, jede Gruppe
der Bits 8–15
als ein "zweites" Byte, jede Gruppe der
Bits 16–23
als ein "drittes" Byte und jede Gruppe
der Bits 24–31
als ein "viertes" Byte bezeichnet
werden.
-
Jeder der IS-Multiplexer 108, 110, 112 ist
an die Ausgangstreibereinrichtung 106 angeschlossen, so daß jeder
IS-Multiplexer 108, 110, 112 eine Gruppe
von Bits empfängt,
die von der Slave-E/A-Vorrichtung 18 ausgegeben wird, die einem
Mehrfachen der Anzahl der oben bezeichneten Bytegruppierungen entspricht. Spezifischer
ist der die IS-Multiplexer 108 konfiguriert, jede Gruppe
aus Datenbits, die von der Slave-E/A-Vorrichtung ausgegeben wird,
die als das erste Byte B0 bezeichnet wird, und jede Gruppe der Ausgangsdatenbits, die
als das zweite Byte B1 bezeichnet wird, zu empfangen. Der IS-Multiplexer 110 ist
konfiguriert, um jede Gruppe aus Datenbits zu empfangen, die als
das erste Byte B0 und ein drittes Byte B2 bezeichnet worden ist. Schließlich ist
der IS-Multiplexer 112 konfiguriert, um jede Gruppe aus
Datenbits zu empfangen, die als die erste Bytegruppe B0, die zweite
Bytegruppe B1 und die vierte Bytegruppe B3 bezeichnet worden ist.
-
Während
jeder IS-Multiplexer 108, 110, 112 konfiguriert
ist, um mehrere Bytegruppen zu empfangen, wird für die Ausgabe lediglich eine
der Eingangsbytegruppen durch den speziellen Multiplexer ausgewählt. Die Auswahl
der Eingangsbytegruppe für
die Ausgabe durch jeden Multiplexer wird durch eine Folge aus Lenkungscodes
(oder "RC"s) gesteuert, die
durch den System- und Bus-Controller 42 erzeugt wird und
dann zu einem ersten Lenkungscode-Decodierer 104 übertragen
wird. Der erste Lenkungscode-Decodierer 104 decodiert den
vom System- und Bus-Controller 42 übertragenen RC, wobei er, abhängig vom
speziellen empfangenen RC, entweder ein Byte-Freigabesignal BE0
oder ein Byte-Freigabesignal
BE1 an den IS-Multiplexer 108, um entweder B0 oder B1 für die Ausgabe
auszuwählen,
entweder das Byte-Freigabesignal BE0 oder das Byte-Freigabesignal BE2
an den IS-Multiplexer 110, um entweder B0 oder B2 für die Ausgabe
auszuwählen, und
entweder das Byte-Freigabesignal BE0 und das Byte-Freigabesignal BE1
oder das Byte-Freigabesignal BE3 an den IS-Multiplexer 112,
um entweder B0, B1 oder B3 für
die Ausgabe auszuwählen,
sendet. Derartige durch den ersten Lenkungscode-Decodierer erzeugten
Datenübertragungssignale
sind mit dem IOCLK-Signal von der E/A-Vorrichtung 18 und
einer taktgesteuerten Dienstprogramm-SCLK-Eingabe von der E/A-Vorrichtung 18 synchronisiert.
-
Weil der Eingang des Eingangs-Signalspeichers 114 direkt
an die Ausgangstreibereinrichtung 106 angeschlossen ist,
während
die Eingänge
der Eingangs-Signalspeicher 116, 118 und 120 an
die Ausgängen
der IS-Multiplexer 108, 110 bzw. 112 angeschlossen
sind, wird eine Kombination der Bytes B0, B1, B2 und B3, die durch
die durch den System- und Bus-Controller 42 erzeugten RCs
gesteuert wird, an die Eingänge
der Eingangs-Signalspeicher 114, 116, 118 bzw. 120 geliefert.
Der System- und Bus-Controller 42 erzeugt außerdem die
Signal speicher-Freigabesignale LE0, LE1, LE2 und LE3 für die Signalspeicher 114, 116, 118 bzw. 120,
um eine spezielle Kombination der Bytes B0, B1, B2 und B3 aufzufangen,
die von den Eingängen
der Signalspeicher 114, 116, 118 und 120 an
die Ausgänge
der Signalspeicher geliefert werden. Durch das Auffangen der Ausgaben
wird ein 32-Bit-Datenwort (4-Byte-Datenwort) am Ausgang der Eingangs-Signalspeicher 114, 116, 118 und 120 für die Übertragung
zum Prozessor 6 gesammelt.
-
Die durch den System- und Bus-Controller
42 erzeugten
Lenkungscodes sowohl für
die Steuerung der Prozessor-Leseoperation als auch für irgendeine
andere Datenübertragung
von einer Slave-E/A-Vorrichtung zu einem 32-Bit-Computer-Teilsystem,
das an den Prozessorbus
16 angeschlossen ist, sind in der
folgenden Tabelle 1 dargelegt:
-
Wenn die Datenschnittstelle inaktiv
ist, d. h. keine Daten übertragen
werden, erzeugt der Systembus-Controller 42 den Lenkungscode "04". Der Lenkungscode
04 gibt weder die IS-Multiplexer 108, 110 oder 112 noch
die IL-Signalspeicher 114, 116, 118 oder 120 frei.
Das System ist inaktiv, wobei kein Byteaustausch erfolgt.
-
Wenn eine 8-Bit-Slave-Vorrichtung
Daten an den 32-Bit-Prozessorbus 16 liefert (und an das Computer-Teilsystem
angeschlossen ist), erzeugt der Systemund Bus-Controller 42 während jedes
Zyklus des Prozessorbusses 16.4 Teilzyklen, indem er die Lenkungscodes "05", "01", "03" und "02" aufeinanderfolgend
erzeugt. Wie aus der obigen Tabelle entnommen werden kann, steuert
jeder erzeugte Teilzyklus das Auffangen des von der E/A-Vorrichtung
ausgegebenen ersten Bytes 0 für
das Byte 0 des Prozessorbusses 16. Das von der E/A-Vorrichtung
ausgegebene zweite Byte 0 wird für
das Byte 1 des Prozessorbusses 16 aufgefangen, das dritte
Byte 0 für
das Byte 2 und das vierte Byte 0 für das Byte 3.
-
Wenn spezifischer eine 8-Bit-Slave-E/A
verwendet wird, wird ein einzelnes Byte von der E/A-Vorrichtung
18 in die Treibereinrichtung 106 eingegeben. Der Ausgang
aus der Treibereinrichtung 106 ist direkt an den Signalspeicher 114 und
die B0-Eingänge
der IS-Multiplexer 108, 110 bzw. 112 angeschlossen.
Während des
ersten E/A-Teilzyklus (RC = 05) liefert der Lenkungscode-Decodierer 104 ein
Freigabesignal an den Eingangs-Signalspeicher 114, wobei
dadurch die Ausgabe der E/A im Signalspeicher 114 aufgefangen
und das Byte 0 der E/A-Vorrichtung 18 im Byte 0 des Prozessorbusses
angeordnet wird. Während
des zweiten E/A-Teilzyklus
(RC = 01) liefert der Lenkungscode-Decodierer 104 ein Byte-Freigabesignal
an den IS-Multiplexer 108, der den Ausgang des IS-Multiplexers 108 an
den B0-Eingang schaltet, und ein Freigabesignal an den Eingangs-Signalspeicher 116,
wobei dadurch die Ausgabe der E/A-Vorrichtung 18 während des
zweiten Teilzyklus im Signalspeicher 116 aufgefangen wird
und das nächste
Byte 0 der E/A-Vorrichtung 18 im
Byte 1 des Prozessorbusses angeordnet wird. Während des dritten E/A-Teilzyklus
(RC = 03) liefert der Lenkungscode-Decodierer 104 ähnlich ein
Byte-Freigabesignal an den IS-Multiplexer 110 und während des
dritten E/A-Teilzyklus
ein Freigabesignal an den Eingangs-Signalspeicher 118,
um im Signalspeicher 118 die Ausgabe der E/A-Vorrichtung
im dritten Teilzyklus aufzufangen und das nächste Byte 0 von der E/A-Vorrichtung
18 im Byte 2 des Prozessorbusses anzuordnen. Schließlich liefert
der Lenkungscode-Decodierer 104 während des vierten E/A-Teilzyklus
(RC = 02) ein Byte-Freigabesignal an den IS-Multiplexer 112 und
ein Freigabesignal an den Eingangs-Signalspeicher 120,
um dadurch im Eingangs-Signalspeicher 120 die Ausgabe des
vierten E/A-Teilzyklus aufzufangen und das nächste Byte 0 von der E/A-Vorrichtung
18 im Byte 3 des Prozessorbusses anzuordnen.
-
Wenn eine 16-Bit-E/A-Vorrichtung
an den Prozessorbus angeschlossen ist, ist keine zusätzliche Scheidungsanordnung
erforderlich, um das 16-Bit-Teilsystem an den 32-Bit-Datenbus anzupassen.
Eine 16-Bit-E/A-Vorrichtung wird während jedes Prozessorbus-Zyklus
zwei E/A-Teilzyklen aufweisen. In einer derartigen Konfiguration
erzeugt der System- und Bus-Controller 42 während des
ersten E/A-Teilzyklus einen ersten Lenkungscode und während des
zweiten E/A-Teilzyklus einen zweiten Lenkungscode, wobei er diese
an den Lenkungscode-Decodierer 104 sendet. Während des
ersten E/A-Teilzyklus (RC = 07) wird ein Byte-Freigabesignal an
den IS-Multiplexer 108 gesendet, während Signalspeicher-Freigabesignale
an die Signalspeicher 114, 116 gesendet werden.
Folglich wird das von der E/A-Vorrichtung 18 ausgegebene
Byte B0 des ersten Halbwortes durch den Signalspeicher 114 aufgefangen,
während
das von der E/A-Vorrichtung 18 ausgegebene Byte B1 des
ersten Halbwortes am B1-Eingang des IS-Multiplexers 108 bereitgestellt
wird, wobei auf den Empfang des BE1-Signals der IS-Multiplexer 108 das
Byte B1 an den Signalspeicher 116 für das Auffangen ausgibt. Ein
zweites Halbwort wird durch die E/A-Vorrichtung 18 gesendet und
während
des zweiten E/A-Teilzyklus (RC = 06) als die oberen Bytes des Prozessorworts
aufgefangen. Während
des zweiten E/A-Teilzyklus wird das Byte B0 an den Eingang des Signalspeichers 114 und
an den B0-Eingang der IS-Multiplexer 110 und 112 ausgegeben.
Während
dieser Periode erzeugt der Lenkungscode-Decodierer 104 ein
Byte-Freigabesignal BE für
den IS-Multiplexer 110, wobei dadurch der Multiplexer so
geschaltet wird, daß das
Byte B0 am Ausgang des IS-Multiplexers 110 bereitgestellt
wird. Der Lenkungscode-Decodierer 104 sendet außerdem ein
Signalspeicher-Freigabesignal LE2 an den Signalspeicher 118,
wobei dadurch am Ausgang des Signalspeichers 118 das Byte
B0 aufgefangen wird. Während
der zweiten Hälfte
des zweiten Teilzyklus sendet die E/A-Vorrichtung 18 das
Byte B1 an die B1-Eingänge
der IS-Multiplexer 108, 112. Während der zweiten Hälfte des
zweiten Teilzyklus sendet der Lenkungscode-Decodierer 104 das
Byte-Freigabesignal BE1 an den IS-Multiplexer 112, wobei
dadurch der Multiplexer so geschaltet wird, daß das Byte B1 am Ausgang des
IS-Multiplexers 112 bereitgestellt wird. Der Len kungscode-Decodierer
sendet außerdem
ein Signalspeicher-Freigabesignal LE3 an den Signalspeicher 120,
wobei dadurch am Ausgang des Signalspeichers 120 das Byte
B1 aufgefangen wird.
-
Wenn eine 32-Bit-E/A-Vorrichtung
(4-Byte-E/A-Vorrichtung) 18 an den Prozessorbus 16 angeschlossen
ist, sind die E/A-Vorrichtung und der Prozessorbus 16 angepaßt, wobei
die Lenkungscodes abermals geändert
werden müssen,
um die Steuerung der 32-Bit-Ausgabe aus der E/A-Vorrichtung 18 zu
modifizieren. Es ist abermals keine zusätzliche Schaltungsanordnung
notwendig. In der angepaßten-Konfiguration
erzeugt die Lenkungscode-Erzeugungseinrichtung des System- und Bus-Controllers 42 einen
einzelnen Lenkungscode RC = 00 und sendet diesen an den Lenkungscode-Decodierer 104.
Während
der Datenübertragung
wird das Byte B0 an den Signalspeicher 114 und an die B0-Eingänge der
IS-Multiplexer 108, 110 und 112 geliefert.
Das Byte B1 wird an die B1-Eingänge
der IS-Multiplexer 108 und 112,
das Byte B2 an den B2-Eingang des IS-Multiplexer 110 und
das Byte B3 an den B3-Eingang des IS-Multiplexer 112 geliefert.
Der Lenkungscode-Decodierer 104 sendet das Byte-Freigabesignal
BE1 an den IS-Multiplexer 108, das Byte-Freigabesignal
BE2 an den IS-Multiplexer 110 und das Byte-Freigabesignal BE3
an den IS-Multiplexer 112, wobei dadurch die IS-Multiplexer 108, 110 und 112 so
geschaltet werden, daß die
Bytes B1, B2 und B3 an den Ausgängen
der IS-Multiplexer 108, 110 bzw. 112 bereitgestellt
werden. Der Lenkungscode-Decodierer 104 sendet außerdem ein
Signalgeber-Freigabesignal LE0 an den Signalspeicher 114,
LE1 an den Signalspeicher 116, LE2 an den Signalspeicher 118 und
LE3 an den Signalspeicher 120, wobei dadurch am Ausgang
der Signalspeicher 114, 116, 118 und 120 die
Bytes B0, B1, B2 bzw. B3 aufgefangen werden.
-
Nachdem das Leiten der Daten von
einer E/A-Vorrichtung 18 zum Prozessorbus 16 beschriebenen wurde,
der wiederum die Daten zu einem Computer-Teilsystem übertragen wird, wie z. B. dem
Prozessor-Teilsystem 6, wird nun das Leiten der Daten vom
Prozessorbus 16 zur E/A-Vorrichtung 18 beschrieben. Während einer
Schreiboperation werden die Daten vom Prozessor-Teilsystem 6 in
einen Signalspeicher 122 eingegeben. Da das Speichersystem 10 verschachtelt
ist, werden die Daten aus dem Speicher 10 während einer Schreibe-aus-dem-Speicher-Operation
an einem geraden Signalspeicher 124 und an einem ungeraden
Signalspeicher 126 bereitgestellt. Sobald die Ausgaben
aus den Daten-Signalspeichern 122, 124 und 126 durch die
(nicht gezeigten) entsprechenden vom System- und Bus-Controller 42 gesendeten
Signalspeicher-Freigabesignale freigegeben sind, werden sie als
die entsprechenden Eingaben in einen Multiplexer 128 bereitgestellt.
Abhängig
vom Typ der Schreiboperation, die geleitet wird, wird ein Schaltsignal
in den Multiplexer eingegeben, um den Multiplexer 128 so
zu schalten, daß entweder
die Daten aus dem Speicher-Teilsystem 10 oder dem Prozessor-Teilsystem 6 an
den Eingang eines Signalspeicher 130 ausgegeben werden.
-
Während
den entsprechenden Speicher- oder Prozessor-Schreiboperationen wird
ein (nicht gezeigtes) Signalspeicher-Freigabesignals an dem Signalspeicher 130 bereitgestellt,
um die Ausgabe der Daten aus dem Speicher-Teilsystem 10 oder
dem Prozessor-Teilsystem 6 an einem ersten Eingang eines
Multiplexers 134 aufzufangen. Ein zweiter Lenkungscode-Decodierer 132 sendet
dann ein Schaltsignal an den Multiplexer 134, um den Ausgang
des Multiplexers 134 an den Eingang zu schalten, der an
den Signalspeicher 130 angeschlossen ist. In einer derartigen
Weise gibt der Multiplexer 134 das 32-Bit-Datenwort aus,
das entweder vom Prozessor-Teilsystem 6 oder vom Speicher-Teilsystem 10 zur
E/A-Vorrichtung 18 zu übertragen
ist, die eine Datenbreite von entweder 8, 16 oder 32 Bits aufweist.
Um dies auszuführen,
wird der Ausgang des Multiplexer 134 an einen ersten Ausgangsbyte-Austauschmultiplexer
("OS"-Multiplexer) 136 und
einen zweiten OS-Multiplexer 138 angeschlossen. Das Byte
B0 wird als eine erste Eingabe in den OS-Multiplexer 138,
das Byte B1 als eine zweite Eingabe in den OS-Multiplexer 138 und
eine erste Eingabe in den OS-Multiplexer 136, das Byte
B2 als eine dritte Eingabe in den OS-Multiplexer 138 und
als eine erste Eingabe in die Ausgangstreibereinrichtung 140,
die die ersten, zweiten, dritten und vierten Ausgangstreiber 140a, 140b, 140c und 140d enthalten
kann, und das Byte B3 als eine vierte Eingabe in den OS-Multiplexer 138,
eine zweite Eingabe in den OS-Multiplexer 136 und
als eine zweite Eingabe in die Ausgangstreibereinrichtung 140a–d bereitgestellt. Die
Ausgaben der OS-Multiplexer 136, 138 werden außerdem in
die Ausgangstreibereinrichtung 140a–d eingegeben.
-
Der zweite Lenkungscode-Decodierer
132 empfängt die
RC-Signale vom System- und Bus-Controller
42, wobei er
wiederum die Byte-Freigabesignale BE0–BE3 an den OS-Multiplexer
138,
die Byte-Freigabesignale BE1 und BE3 an den OS-Multiplexer
136 und
die Freigabesignale OD an die Ausgangstreibereinrichtung
140a–d sendet,
wie es erforderlich ist, um den Byteaustausch zu erreichen, der
für eine
spezielle Schreiboperation erforderlich ist, z. B. von einem 32-Bit-Computer-Teilsystem
zu entweder einer 8-, 16- oder 32-Bit-E/A-Vorrichtung. Die Lenkungscodes,
die Byte-Freigabesignale und die Ausgangstreiber-Freigabesignale, die die verschiedenen
angemerkten Schreiboperationen erfolgreich abschließen werden,
sind in der folgenden Tabelle 2 dargelegt:
-
Nach dem Abschluß einer Erörterung des Leitens der Daten
zwischen einer 8-, 16- und 32-Bit-E/A-Vorrichtung und einem 32-Bit-Computer-Teilsystem,
das an den 32-Bit-Prozessorbus 16 angeschlossen ist, wird die spezielle
Aufmerksamkeit nun auf die notwendigen Modifikationen an den Techniken
gerichtet, die hierin beschrieben sind, um die Daten zwischen einem
Paar 8-, 16- oder 32-Bit-E/A-Vorrichtungen über den
Prozessorbus 16 zu leiten. In einer E/A-zu-E/A-Übertragung muß eine E/A
als der E/A-Bus-Master bezeichnet werden, während die andere als der E/A-Bus-Slave
bezeichnet wird. Um die Daten zwischen Slaveund Master-E/As zu leiten,
müssen
die Daten zuerst von der Slave-E/A-Vorrichtung 18 zum Prozessorbus 16 und
dann zur Master-E/A-Vorrichtung übertragen
werden. Während
einer derartigen Übertragung
sendet die Slave-E/A-Vor richtung 18 die Dateneinheiten in einer
Größe, die
ihrer Breite entspricht, von der Slave-E/A-Vorrichtung 18 zu
den ersten, zweiten und dritten IS-Multiplexern 108, 110 bzw.
112 und an den IL-Signalspeicher 114. Abhängig von
der Breite der E/A-Vorrichtung
wird jede Dateneinheit aus 8-, 16- oder 32 Bits zusammengesetzt
sein, wobei jede Gruppe aus den Bits 0–7 ein erstes Byte, jede Gruppe
aus den Bits 8–15
ein zweites Byte, jede Gruppe aus den Bits 16–32 ein drittes Byte und jede
Gruppe aus den Bits 24–31
ein viertes Byte ist.
-
Jeder der IS-Multiplexer 108, 110, 112 ist
an die Ausgangstreibereinrichtung 106 angeschlossen, so daß jeder
IS-Multiplexer 108, 110; 112 eine von
der Slave-E/A-Vorrichtung 18 ausgegebene Gruppe von Bits empfängt, die
einem Mehrfachen der Anzahl der oben bezeichneten Bytegruppierungen
entspricht. Spezifischer ist der die IS-Multiplexer 108 konfiguriert,
jede Gruppe aus Datenbits, die von der Slave-E/A-Vorrichtung 18 ausgegeben
wird, die als das erste Byte B0 bezeichnet wird, und jede Gruppe
der Ausgangsdatenbits, die als das zweite Byte B1 bezeichnet wird,
zu empfangen. Der IS-Multiplexer 110 konfiguriert, um jede
Gruppe aus Datenbits zu empfangen, die als das erste Byte B0 oder
ein drittes Byte B2 bezeichnet worden ist. Schließlich ist
der IS-Multiplexer 112 konfiguriert, um jede Gruppe aus
Datenbits zu empfangen, die als die erste Bytegruppe B0, die zweite
Bytegruppe B1 und die vierte Bytegruppe B3 bezeichnet worden ist.
-
Während
jeder IS-Multiplexer 108, 110, 112 konfiguriert
ist, um mehrere Bytegruppen zu empfangen, wird für die Ausgabe lediglich eine
der Eingangsbytegruppen durch den speziellen Multiplexer ausgewählt. Die Auswahl
der Eingangsbytegruppe für
die Ausgabe durch jeden Multiplexer wird durch eine Folge aus Lenkungscodes
(oder "RC"s) gesteuert, die
durch den System- und Bus-Controller 42 erzeugt wird und
dann zu einem ersten Lenkungscode-Decodierer 104 übertragen
wird. Der erste Lenkungscode-Decodierer 104 decodiert den
vom System- und Bus-Controller 42 übertragenen RC, wobei er, abhängig vom
speziellen empfangenen RC, entweder ein Byte-Freigabesignal BE0
oder ein Byte-Freigabesignal
BE1 an den IS-Multiplexer 108, um entweder B0 oder B1 für die Ausgabe
auszuwählen,
entweder das Byte-Freigabesignal BE0 oder das Byte-Freigabesignal BE2
an den IS-Multiplexer 110, um entweder B0 oder B2 für die Ausgabe
auszuwählen, und
entweder das Byte-Freigabesignal BE0 und das Byte-Freigabesignal BE1
oder das Byte-Freigabesignal BE3 an den IS-Multiplexer 112,
um entweder B0, B1 oder B3 für
die Ausgabe auszuwählen,
sendet. Derartige durch den ersten Lenkungscode-Decodierer erzeugten
Datenübertragungssignale sind
mit dem IOCLK-Signal von der Slave-E/A-Vorrichtung 18 und
einer taktgesteuerten Dienstprogramm-SCLK-Eingabe von der Slave-E/A-Vorrichtung 18 synchronisiert.
-
Weil der Eingang des Eingangs-Signalspeichers 114 direkt
an die Ausgangstreibereinrichtung 106 angeschlossen ist,
während
die Eingänge
der Eingangs-Signalspeicher 116, 118 und 120 an
die Ausgänge
der IS-Multiplexer 108, 110 bzw. 112 angeschlossen
sind, wird eine Kombination der Bytes B0, B1, B2 und B3, die durch
die durch den System- und Bus-Controller 42 erzeugten RCs
steuert wird, an die Eingänge
der Eingangs-Signalspeicher 114, 116, 118 bzw. 120 geliefert.
Der System- und Bus-Controller 42 erzeugt außerdem die
Signalspeicher-Freigabesignale LE1, LE2, LE3 und LE4 für die Signalspeicher 114, 116, 118 bzw. 120,
um eine spezielle Kombination der Bytes B0, B1, B2 und B3, die an
die Eingänge
der Signalspeicher 114, 116, 118 und 120 geliefert
werden, an den Ausgängen
der Signalspeicher aufzufangen.
-
Die durch den System- und Bus-Controller
42 erzeugten
Lenkungscodes für
die Steuerung der Übertragung
der Daten von der Slave-E/A-Vorrichtung
18 zum 32-Bit-Prozessorbus
16 als Teil der nachfolgenden Übertragung
der Daten von der Slave-E/A-Vorrichtung
18 zur Master-E/A-Vorrichtung
sind in der folgenden Tabelle 3 dargelegt:
-
Wenn eine 8-Bit-Slave-Vorrichtung
die Daten an den 32-Bit-Prozessorbus 16 als Teil der Übertragung zur
Master-Slave-Vorrichtung liefert, erzeugt der System- und Bus-Controller 42 während jedes
Zyklus des Prozessorbusses 16 4 Teilzyklen, indem er aufeinanderfolgend
die Lenkungscodes "15", "11", "13" und "12" erzeugt. Wie aus
der obigen Tabelle entnommen werden kann, steuert jeder erzeugte
Teilzyklus das Auffangen des von der Slave-E/A-Vorrichtung 18 ausgegebenen
ersten Bytes 0 für
das Byte 0 des Prozessorbusses 16. Das von der Slave-E/A-Vorrichtung 18 ausgegebene
zweite Byte 0 wird für
das Byte 1 des Prozessorbusses 16 aufgefangen, das dritte
Byte 0 für
das Byte 3 und das vierte Byte 0 für das Byte 4.
-
Wenn spezifischer eine 8-Bit-Slave-E/A-Vorrichtung
verwendet wird, wird ein einzelnes Byte von der Slave-E/A-Vorrichtung 18 in
die Treibereinrichtung 106 eingegeben. Der Ausgang aus
der Treibereinrichtung 106 ist direkt an den Signalspeicher 114 und
die B0-Eingänge
der IS-Multiplexer 108, 110 bzw. 112 angeschlossen.
Während
des ersten E/A-Teilzyklus (RC = 15) liefert der Lenkungscode-Decodierer 104 ein
Freigabesignal an den Eingangs-Signalspeicher 114, wobei
dadurch die Ausgabe der Slave-E/A-Vorrichtung 18 im Signalspeicher 114 aufgefangen
und das Byte 0 der Slave-E/A-Vorrichtung 18 im Byte 0 des
Prozessorbusses angeordnet wird. Während des zweiten E/A-Teilzyklus
(RC = 11) liefert der Lenkungscode-Decodierer 104 ein Byte-Freigabesignal
an den IS-Multiplexer 108, der den Ausgang des IS-Multiplexers 108 an
den B0-Eingang schaltet und ein Freigabesignal an den Eingangs-Signalspeicher 116 liefert,
wobei dadurch die Ausgabe der Slave-E/A-Vorrichtung 18 während des
zweiten Teilzyklus im Signalspeicher 116 aufgefangen wird
und das nächste
Byte 0 der Slave-E/A-Vorrichtung 18 im Byte 1 des Prozessorbusses
angeordnet wird. Während
des dritten E/A-Teilzyklus
(RC = 13) liefert der Lenkungscode-Decodierer 104 ähnlich ein
Byte-Freigabesignal
an den IS-Multiplexer 110 und während des dritten E/A-Teilzyklus
ein Freigabesignal an den Eingangs-Signalspeicher 118,
um im Signalspeicher
118 die Ausgabe der E/A-Vorrichtung
im dritten Teilzyklus aufzufangen und das nächste Byte 0 von der Slave-E/A-Vorrichtung 18 im
Byte 3 des Prozessorbusses anzuordnen. Schließlich liefert der Lenkungscode-Decodieren 104 während des
vierten E/A-Teilzyklus (RC = 12) ein Byte-Freigabesignal an den
IS-Multiplexer 112 und ein Freigabesignal an den Eingangs-Signalspeicher 120,
um dadurch im Eingangs-Signalspeicher 120 die Ausgabe des
vierten E/A-Teilzyklus aufzufangen und das nächste Byte 0 von der Slave-E/A-Vorrichtung 18 im
Byte 0 des Prozessorbusses anzuordnen.
-
Wenn eine 16-Bit-Slave-E/A-Vorrichtung
Daten an den 32-Bit-Prozessorbus 16 als Teil der Übertragung
an die Master-E/A-Vorrichtung 18 liefert, wird die 16-Bit-Slave-E/A-Vorrichtung
während
der Übertragung von
der Slave-E/A-Vorrichtung zum Prozessorbus 16 zwei E/A-Teilzyklen
aufweisen. In einer derartigen Konfiguration erzeugt der System-
und Bus-Controller 42 während
des ersten E/A-Teilzyklus
einen ersten Lenkungscode und während
des zweiten E/A-Teilzyklus einen zweiten Lenkungscode, wobei er
diese an den Lenkungscode-Decodierer 104 sendet. Während des
ersten E/A-Teilzyklus (RC = 17) wird ein Byte-Freigabesignal an
den ersten IS-Multiplexer 108 gesendet, während Signalspeicher-Freigabesignale
an die Signalspeicher 114, 116 gesendet werden.
Folglich wird das von der Slave-E/A-Vorrichtung 18 ausgegebene
Byte B0 des ersten Halbwortes durch den Signalspeicher 114 aufgefangen,
während
das von der Slave-E/A-Vorrichtung 18 ausgegebene Byte B1 des ersten
Halbwortes am B1-Eingang des IS-Multiplexers 108 bereitgestellt
wird, wobei auf den Empfang des BE1-Signals der IS-Multiplexer 108 das
Byte B1 an den Signalspeicher 116 für das Auffangen ausgibt. Während des
zweiten E/A-Teilzyklus (RC = 16) wird ein zweites Halbwort durch
die Slave-E/A-Vorrichtung 18 gesendet und als die oberen Bytes des
Prozessorworts aufgefangen. Während
des zweiten E/A-Teilzyklus wird das Byte B0 an den Eingang des Signalspeichers 114 und
an den B0-Eingang der IS-Multiplexer 110 und 112 ausgegeben.
Während
dieser Periode erzeugt der Lenkungscode-Decodieren 104 ein
Byte-Freigabesignal BE für
den IS-Multiplexer 110, wobei dadurch der Multiplexer so
geschaltet wird, daß das
Byte B0 am Ausgang des IS-Multiplexers 110 bereitgestellt
wird. Der Lenkungscode-Decodierer 104 sendet außerdem ein
Signalspeicher-Freigabesignal LE2 an den Signalspeicher 118,
wobei dadurch am Ausgang des Signalspeichers 118 das Byte
B0 aufgefangen wird. Während
der zweiten Hälfte
des zweiten Teilzyklus sendet die Slave-E/A-Vorrichtung 18 das Byte B1
an die B1-Eingänge
der IS-Multiplexer 108, 112. Wäh rend der zweiten Hälfte des
zweiten Teilzyklus sendet der Lenkungscode-Decodierer 104 das
Byte-Freigabesignal BE1 an den IS-Multiplexer 112, wobei
dadurch der Multiplexer so geschaltet wird, daß das Byte B1 am Ausgang des
IS-Multiplexers 112 bereitgestellt wird. Der Lenkungscode-Decodierer 104 sendet
außerdem
ein Signalspeicher-Freigabesignal LE3 an den Signalspeicher 120,
wobei dadurch am Ausgang des Signalspeichers 120 das Byte
B1 aufgefangen wird.
-
Wenn eine 32-Bit-Slave-E/A-Vorrichtung
(4-Byte-Slave-E/A-Vorrichtung) 18 an den Prozessorbus 16 für die Datenübertragung
von der Slave-E/A-Vorrichtung zur Master-E/A-Vorrichtung angeschlossen
ist, sind die E/A-Vorrichtung und der Prozessorbus 16 angepaßt, wobei
die Lenkungscodes abermals geändert
werden müssen,
um die Steuerung der 32-Bit-Ausgabe aus der Slave-E/A-Vorrichtung
18 zu modifizieren. In der angepaßten Konfiguration erzeugt
die Lenkungscode-Erzeugungseinrichtung des System- und Bus-Controllers 42 einen
einzelnen Lenkungscode RC = 10 und sendet diesen an den Lenkungscode-Decodierer 104.
Während
der Datenübertragung
wird das Byte B0 an den Signalspeicher 114 und an die B0-Eingänge der
IS-Multiplexer 108, 110 und 112 geliefert.
Das Byte B1 wird an die B1-Eingänge
der IS-Multiplexer 108 und 112, das Byte B2 an
den B2-Eingang des IS-Multiplexers 110 und das Byte B3
an den B3-Eingang
des IS-Multiplexers 112 geliefert. Der Lenkungscode-Decodierer
sendet das Byte-Freigabesignal BE1 an den IS-Multiplexer 108, das
Byte-Freigabesignal BE2 an den IS-Multiplexer 110 und das
Byte-Freigabesignal BE3 an den IS-Multiplexer 112, wobei
dadurch die IS-Multiplexer 108, 110 und 112 so
geschaltet werden, daß die
Bytes B1, B2 und B3 an den Ausgängen
der IS-Multiplexer 108, 110 bzw. 112 bereitgestellt
werden. Der Lenkungscode-Decodierer 104 sendet außerdem ein
Signalspeicher-Freigabesignal LE0 an den Signalspeicher 114,
LE1 an den Signalspeicher 116, LE2 an den Signalspeicher 118 und
LE3 an den Signalspeicher 120, wobei dadurch am Ausgang
der Signalspeicher 114, 116, 118 und 120 die
Bytes B0, B1, B2 bzw. B3 aufgefangen werden.
-
Nachdem das Leiten der Daten von
der Slave-E/A-Vorrichtung 18 zum Prozessorbus 16 während der Datenübertragung
von der Slave-E/A-Vorrichtung zur Master-E/A-Vorrichtung beschriebenen
wurde, wird nun das Leiten der Daten vom Prozessorbus 16 zur
Master-E/A-Vorrichtung beschrieben. Das Leiten der Daten vom Prozessorbus 16 zur
Master-E/A-Vorrichtung unterscheidet sich signifikant von den vorausgehend
beschriebenen Leittechniken. Abhängig
vom speziellen Byteaustausch, der für die gewünschte Übertragung zu der Master-E/A-Vor richtung
erforderlich ist, werden hier die zum Prozessorbus 16 übertragenen
Daten sowohl von den aufgefangenen als auch den nicht aufgefangenen
Seiten der Eingangs-Signalspeicher 114, 116, 118, 120 gelenkt,
indem die Eingänge
der Signalspeicher 114, 116, 118, 120 an
einen zweiten Eingang des Multiplexers 134 und die Ausgänge der
Signalspeicher 114, 116, 118, 120 an
einen dritten Eingang des Multiplexers 134 angeschlossen
werden. Während
des Leitens der Daten zur Master-E/A-Vorrichtung wird der zweite
Lenkungscode-Decodierer 132 entweder die aufgefangenen
oder die nicht aufgefangenen Daten für das Leiten auswählen, indem
er ein Schaltsignal an den Multiplexer 134 sendet, um den
Eingang des Multiplexers 134 entweder an die aufgefangenen
oder die nicht aufgefangenen Daten anzuschließen. Das Leiten der durch den Multiplexer 134 ausgegebenen
Daten an die Master-E/A-Vorrichtung wird dann für die aufgefangenen und nicht
aufgefangenen Daten getrennt weitergehen.
-
Für
die Übertragung
der nicht aufgefangenen Daten vom Prozessorbus
16 zur Master-E/A-Vorrichtung empfängt der
zweite Lenkungscode-Decodierer
132 die RC-Signale vom System-
und Bus-Controller
42 in Übereinstimmung mit der folgenden
Tabelle 4:
-
Da der Ausgang des Multiplexers 134 an
den ersten OS-Multiplexer 136 und an den zweiten OS-Multiplexer 138 angeschlossen
ist, wird das Byte B0 als eine erste Eingabe in den OS-Multiplexer 138;
das Byte B1 als eine zweite Eingabe in den OS-Multiplexer 138 und
eine erste Eingabe in den OS-Multiplexer 136, das Byte
B2 als eine dritte Eingabe in den OS-Multiplexer 138 und
als eine erste Eingabe in die Ausgangstreibereinrichtung 140,
die erste, zweite, dritte und vierte Ausgangstreiber 140a, 140b, 140c und 140d enthalten kann,
und das Byte B3 als eine vierte Eingabe in den OS-Multiplexer 138,
eine zweite Eingabe in den OS-Multiplexer 136 und als eine
zweite Eingabe in die Ausgangstreibereinrichtung 140a–d bereitgestellt.
Die Ausgaben der OS-Multiplexer 136, 138 werden
außerdem
in die Ausgangstreibereinrichtung 140a–d eingegeben.
-
Als Antwort auf die von dem System-
und Bus-Controller 42 empfangenen RC-Signale sendet der zweite
Lenkungscode-Decodierer 132 die Byte-Freigabesignale BE0
an die IS-Multiplexer 108, 110, 112,
BE1 an die IS-Multiplexer 108 und 112, BE2 an
den IS-Multiplexer 110 und BE3 an den IS-Multiplexer 112,
so daß die
gewünschten
nicht aufgefangenen Daten über
den Multiplexer 134 in die OS-Multiplexer 136, 138 eingegeben
werden. Der zweite Lenkungscode-Decodierer 132 sendet ferner
die Byte-Freigabesignale BE1, BE2 und BE3 an den OS-Multiplexer 136,
das Byte-Freigabesignal BE3 an den OS-Multiplexer 138 und
die Ausgangstreiber-Freigabesignale ODE an die Ausgangstreiber 140a, 140b, 140c und 140d,
um den Byteaustausch zu erreichen, der für eine Übertragung von der nicht aufgefangenen
Seite der Signalspeicher 114, 116, 118 und 120 für die spezielle
Datenübertragung
erforderlich ist, z. B. entweder von einer 8-, 16- oder 32-Bit-Slave-E/A-Vorrichtung 18 zu
entweder einer gewünschten
8-, 16- oder 32-Bit-Master-E/A-Vorrichtung.
-
Für
die Übertragungen
der aufgefangenen Daten vom Prozessorbus
16 zur Master-E/A-Vorrichtung empfängt der
zweite Lenkungscode-Decodierer
132 die RC-Signale vom System-
und Bus-Controller
42 in Übereinstimmung mit der folgenden
Tabelle 5:
-
Da der Ausgang des Multiplexers 134 an
den ersten OS-Multiplexer 136 und den zweiten OS-Multiplexer 138 angeschlossen
ist, wird ähnlich
das Byte B0 als die erste Eingabe in den OS-Multiplexer 138,
das Byte B1 als die zweite Eingabe in den OS-Multiplexer 138 und
die erste Eingabe in den OS-Multiplexer 136, das Byte B2
als die dritte Eingabe in den OS-Multiplexer 138 und als
die erste Eingabe in die Ausgangstreibereinrichtung 140,
die erste, zweite, dritte und vierte Ausgangstreiber 140a, 140b, 140c und 140d enthalten kann,
und das Byte B3 als die vierte Eingabe in den OS-Multiplexer 138,
die zweite Eingabe in den OS-Multiplexer 136 und als die
zweite Eingabe in die Ausgangstreibereinrichtung 140a–d bereitgestellt.
Die Ausgaben der OS-Multiplexer 136, 138 werden
außerdem
in die Ausgangstreibereinrichtung 140a–d eingegeben.
-
Als Antwort auf die von dem System-
und Bus-Controller 42 empfangenen RC-Signale sendet der zweite
Lenkungscode-Decodierer 132 die Byte-Freigabesignale BE1
und BE3 an den OS-Multiplexer 136, die Byte-Freigabesignale
BE0, BE1, BE2 und BE3 an den OS-Multiplexer 138 und die
Ausgangstreiber-Freigabesignale OD an die Ausgangstreibereinrichtung 140a–d,
wie erforderlich, um den Byteaustausch zu erreichen, der für eine Übertragung
von der aufgefangenen Seite der Signalspeicher 114, 116, 118 und 120 für die spezielle
Datenübertragung
erforderlich ist, z. B. entweder von einer 8-, 16- oder 32-Bit-Slave-E/A-Vorrichtung
18 zu entweder einer gewünschten
8-, 16- oder 32-Bit-Master-E/A-Vorrichtung.
-
Wie aus der obigen Beschreibung der
vorliegenden Erfindung ersichtlich ist, wird eine Schnittstelle zwischen
einem 32-Bit-Prozessorbus und einer 8-, 16- oder 32-Bit-E/A-Vorrichtung geschaffen,
so daß die
gleiche Schnittstelle für
die Datenübertragungen
zwischen einer 8-, 16- oder 32-Bit-E/A-Vorrichtung und einem 32-Bit-Computer-System
verwendet werden kann, indem das Lenken der Datenbytes modifiziert
wird, die zwischen den beiden übertragen
werden. Wie aus der obigen Beschreibung der vorliegenden Erfindung
außerdem
entnommen werden kann, kann die gleiche Schnittstelle für die Datenübertragungen
zwischen einer ersten 8-, 16- oder 32-Bit-E/A-Vorrichtung und einer
zweiten 8-, 16- oder 32-Bit-E/A-Vorrichtung verwendet werden, abermals
durch das Modifizieren des Lenkens der Datenbytes, die zwischen
den beiden übertragen
werden. Folglich ist eine Schnittstelle für die Übertragung von Daten zwischen
zahlreichen Kombinationen sowohl von unangepaßten als auch angepaßten Vorrichtungen
vorgesehen. Die hierin beschriebene Form der Erfindung ist lediglich
beispielhaft, wobei sie nicht als Einschränkung des Umfangs der Erfindung
beabsichtigt ist.