-
Die Erfindung bezieht sich allgemein auf einen Registerspeicher, der
aus emittergekoppeiten Logikschaltungen aufgebaut ist, wobei dieser
Registerspeicher eine Mehrzahl von Speicherregistern einschließt, von denen
jedes eine Vielzahl von Bitspeicherzellen aufweist, jede dieser Bitspeicherzellen
einen Datenausgang aufweist, und ein Ausgangs-Multiplexer mit den
Datenausgängen dieser Bitspeicherzellen verbunden ist, um selektiv die
Datenausgänge von Bitspeicherzellen in einem ausgewählten Register mit einem
Datenausgangs-Port zu verbinden.
-
Auf dem Gebiet der Hochgeschwindigkeitscomputer verarbeiten die
meisten hochentwickelten Rechenanlagen die gesamte Reihe von
Anweisungsaktivitäten als Pipeline. Ein Hauptbeispiel ist die VAX 8600, hergestellt
und vertrieben von der Digital Equipment Corporation, 111 Powdermill Road,
Maynard MA 97154-1418. Die Anweisungspipeline für die VAX 8600 wird in "An
Overview of the VAX 8600 System" von T. Fossum et al. im Digital Technical
Journal, Nr.1, August 1995, Seite 8 bis 23, beschrieben. Getrennte Pipelinestufen
sind für das Abrufen von Anweisungen, das Decodieren von Anweisungen, die
Erzeugung von Operandenadressen, das Abrufen von Operanden, das Ausführen
von Anweisungen, und das Speichern des Ergebnisses vorgesehen. Die
Pipelinestufen sind für gewöhnlich damit beschäftigt, sukzessive Anweisungen zu
verarbeiten. Die Bewegung durch die Pipene kann jedoch nicht immer mit der
höchsten Geschwindigkeit stattfinden. Verschiedene Stufen sind zwangsläufig
unbeschäftigt, sobald Daten aus dem Hauptspeicher, anstelle aus dem
Hochgeschwindigkeits-Cache-Speicher, der die vorher adressierten Datenblöcke
speichert, geholt werden müssen, oder wenn eine Multiplikation oder Division die
Instruktions-Ausführungsstufe auslastet.
-
Es ist einzusehen, daß, um das Hochgeschwindigkeitspotential des
Computers aufrecht zu erhalten, die Stufen der Pipeline, die nicht von diesen
Speicheroperationen, Multiplikationen und Divisionen betroffen sind, damit
fortfahren sollten, Anweisungen vorzuverarbeiten. Da jedoch diese unbeschäftigten
Stufen nicht von den Stufen, die weiterhin in Betrieb sind, Daten empfangen
können, muß es einen vorläufigen Platz geben, auf dem diese Daten gespeichert
werden, bis die stillgelegten Stufen bereit sind, sie zu empfangen.
Dementsprechend werden Register vorgesehen, die einen allgemeinen vorläufigen
bzw. vorübergehenden Speicherbereich zur Verfügung stellen.
-
Darüber hinaus werden vorläufige Speicherplätze auch für andere
Bereiche des Rechnerbetriebs benötigt. So muß zum Beispiel die
Ausführungseinheit der CPU oft während der Ausführung bestimmter Anweisungen
auf einen Notizspeicherbereich zugreifen. Die Daten, die in diesem
Notizspeicherbereich gespeichert sind, dienen nur zur vorläufigen Benutzung und
können nach Beendigung der Anweisung gelöscht werden. Typischerweise werden
auch zur Deckung dieses vorläufigen Speicherbedarfs Register verwendet.
-
Ein problematischer Aspekt der Verwendung von Registern ist die
Geschwindigkeit, mit der man auf sie zugreifen können muß. Üblicherweise
werden diese Register auf einem separaten Halbleiterchip gefertigt und erhalten
ihre steuernden Taktsignale, Adreßsignale und Datensignale von verschiedenen
externen Quellen. Die Verzögerung, die durch die Zeit ausgelöst wird, die diese
Signale benötigen, um die Leitungen zu passieren, kann zu
Datenstabilitätsproblemen führen. Bei Computern, die mit niedrigerer
Geschwindigkeit arbeiten, stellt dies kein echtes Problem dar, da die Periode des
Taktzyklus viel größer ist als die Zeit, die die Signale benötigen, bis sie an dem
separaten Halbleiterchip angelangt sind. Bei Computern, die mit sehr hoher
Geschwindigkeit betrieben werden, kann jedoch die Taktperiode bis zu 16 nsec
kurz sein, während die Taktübertragungszeit oder die Leitungsverzögerung bis zu
8 oder 9 nsec groß sein kann. Infolgedessen gibt es eine durchaus sehr reale
Möglichkeit, daß die Daten, die in die Register geschrieben werden sollen, unstabil
werden, bevor die Registerspeicherung beendet werden kann. Wenn zum Beispiel
die Setup-Zeit, die für den Übergang der Signale zwischen ihrem bestätigten und
ihrem unbestätigten Zustand benötigt wird, 8 nsec ist und die Leitungsverzögerung
die ersten 9 nsec der Taktperiode ausmacht, so könnten die Daten ihren Zustand
nach den 16 nsec des Taktsignalübergangs aber vor der Beendigung des
Speichervorgangs ändern.
-
Wie von Jim Edrington in "Buffer speeds response time of first-in, first-
out memory, " Electronics, Vol. 49, Nr. 20, 30. September 1976, S. 89 bis 90
dargelegt wird, ist bekannt, daß ein Zwischenspeicher dazu benutzt werden kann,
die Antwortzeit eines first-in, first-out memory (FIFO) zu verkürzen. Ein
Benutzersystem liest zum Beispiel ein Datenwort am FIFO-Ausgang und sendet
ein shift-out-Signal, um der FIFO mitzuteilen, daß sie ein neues Wort verfügbar
machen soll. Die FIFO kann jedoch eine unerwünschte Verzögerung aufweisen
bevor sie bestätigt, daß das neue Wort bereit liegt. In diesem Fall kann ein
Zwischenspeicher zwischen den FIFO-Ausgang und den Dateneingang des
Benutzersystems geschaltet werden um schneller zu bestätigen, daß die Daten
dafür bereit sind, zum Benutzersystem übertragen zu werden. Ein
Zwischenspeicher kann ebenso zwischen einer Datenquelle und dem FIFO-
Eingang plaziert werden. In diesem Fall gibt der Zwischenspeicher eine sofortige
Bestätigung an die Datenquelle, daß die Daten gelesen worden sind. In keinem
der Fälle wird die Gesamtdatenflußrate vergrößert - die obere Grenze ist immer
noch die interne Rate der FIFO. Der Zwischenspeicher erlaubt jedoch die FIFO in
Verbindung mit vielen Geräten zu benutzen, für die andernfalls ihre Antwortzeit zur
langsam wäre.
-
Die vorliegende Erfindung wird in Anspruch 1 definiert.
-
In einem bevorzugten Ausführungsbeispiel schließt jedes
emittergekoppelte Gate ein Paar von ersten und zweiten emittergekoppelten
Transistoren ein, von denen einer einen Kollektoranschluß aufweist, der die
Ausgangs-Verbindung für jedes emittergekoppelte Gate ermöglicht und der andere
über seine Basis mit dem Daten-Ausgang seiner jeweiligen Bitspeicherzelle
verbunden ist, sowie einen dritten Transistor, dessen Kollektor mit dem Emitter der
ersten und zweiten emittergekoppelten Transistoren verbunden ist und dessen
Emitterkemme die Stromsenke-Verbindung liefert.
-
In dem bevorzugten Ausführungsbeispiel weist der Registerspeicher
ferner eine selbstgetaktete Einrichtung auf, um Daten in ein ausgewähltes dieser
Register zu schreiben. Die bevorzugte selbstgetaktete Einrichtung weist eine
Anzahl von Latches auf, die auf ein Taktsignal reagieren, wobei diese Latches ein
Adressen-Latch zur vorübergehenden Speicherung einer Registeradresse und ein
Daten-Latch aufweisen, um während einer Schreiboperation vorübergehend Daten
zu speichern, die in ein adressiertes Register geschrieben werden sollen, und das
Daten-Latch einen Ausgang aufweist, der mit jedem dieser Register verbunden ist,
einen Adressen-Decoder, der mit dem Adressen-Latch und den Registern
verbunden ist, um das adressierte der Register anzusprechen, und einen
Schreibimpuls-Generator, der auf das Taktsignal reagiert, um einen Schreibimpuls
zu erzeugen, der es dem adressierten Register ermöglicht, stabile Daten von dem
Daten-Latch zu empfangen.
-
Die vorliegende Erfindung kann auf verschiedene Arten umgesetzt
werden, von denen eine nun anhand eines Beispiels unter Bezugnahme auf die
Zeichnungen beschrieben wird, in denen:
-
Fig. 1 ein Blockdiagramm eines Computersystems darstellt;
-
Fig. 2 ein detailliertes Blockdiagramm eines integrierten Schaltkreises
zur Herstellung der selbstgetakteten Register darstellt;
-
Fig. 3 ein detailliertes Funktionsdiagramm eines einzelnen Bits der
selbstgetakteten Register darstellt;
-
Fig. 4 ein Logikdiagramm der Steuerschaltung zur Erzeugung des
selbstgetakteten Clock-Signals darstellt
-
Fig. 5 eine schematische Darstellung einer Reihe von elektrischen
Signalformen, die ausgewählten Testpunkten auf dem Logikdiagramm von Fig. 4
entsprechen, darstellt;
-
Fig. 6 ein elektrisches Schema einer Realisierung des
Funktionsdiagramms von Fig. 3 darstellt;
-
Fig. 7 ein elektrisches Schema der gemeinsamen Stromquelle und der
Endwiderstände für die individuellen Bits der selbstgetakteten Register darstellt
und
-
Fig. 8 ein Funktionsdiagramm der Beziehung zwischen den
gemeinsamen Endwiderständen, Stromquellen und Registern darstellt.
-
Während die Erfindung verschiedenen Modifikationen und alternativen
Ausgestaltungsformen zugänglich ist, werden spezifische Ausführungsbeispiele
von ihr anhand von Beispielen in den Zeichnungen gezeigt und werden hier nun im
Detail beschrieben. Man sollte jedoch einsehen, daß dies nicht darauf gerichtet ist
die Erfindung auf die besonderen dargelegten Ausgestaltungsformen zu
beschränken, sondern im Gegenteil, die Erfindung ist darauf ausgerichtet, alle
Modifikationen, Entsprechungen und Alternativen, die in den Bereich der Erfindung
fallen, wie er durch die angefügten Ansprüche definiert wird, abzudecken.
-
Unter Hinwendung zu den Zeichnungen und zunächst bezugnehmend
auf Fig. 1 wird ein Diagramm der obersten Organisationsebene eines Teil eines
digitalen Computersystems gezeigt, das einen Hauptspeicher 10, eine
Speicherzugnifseinheit 12 und mindestens eine CPU, welche eine
Anweisungseinheit 14 und eine Ausführungseinheit 16 beeinhaltet, einschließt.
Sowohl die Daten als auch die Anweisungen zur Verarbeitung der Daten werden in
adressierbaren Speicherplätzen innerhalb des Hauptspeichers 10 gespeichert.
Eine Anweisung beinhaltet einen Operationscode (Opcode), der in codierter Form
eine Operation spezifiziert, die von der CPU und Operanden, die von
Spezifikationselementen identifiziert werden, welche die Information, die benötigt
wird, um die Operanden zu lokalisieren, zur Verfügung stellen, durchgeführt
werden soll.
-
Innerhalb der CPU wird die Ausführung einer individuellen Anweisung in
mehrere kleinere Aufgaben aufgespalten. Diese Aufgaben werden von dafür
spezialisierten, separaten, unabhängigen funktionalen Einheiten, die für diesen
Zweck optimiert sind, durchgeführt.
-
Obwohl jede Anweisung letztlich eine andere Operation durchführt, sind
viele der kleineren Aufgaben, in die jede Anweisung aufgespalten wird, für alle
Anweisungen gleich. Generell werden die nachfolgenden Schritte während der
Ausführung einer Anweisung durchgeführt:
-
Abrufen der Anweisung, Decodieren der Anweisung, Abrufen der
Operanden, Ausführung und Speicherung des Resultats. Deshalb können sich bei
der Verwendung von spezialisierten Hardware-Stufen die Schritte im Pipeline-
Betrieb überlappen, wodurch der gesamte Anweisungsdurchfluß vergrößert wird.
-
Der Datenpfad durch die Pipeline schließt eine jeweilige Anzahl von
Registern zur Übertragung der Ergebnisse von einer Pipeline-Stufe zur nächsten
Pipene-Stufe ein. Diese Übertragungsregister sind in Reaktion auf einen
gemeinsamen Taktzyklus getaktet. So wird zum Beispiel während eines ersten
Taktzyklus die erste Anweisung von für die Anweisungsabrufung spezialisierter
Hardware abgerufen. Während des zweiten Taktzyklus wird die abgerufene
Anweisung von Anweisungsdecodier-Hardware übertragen und decodiert, zur
gleichen Zeit wird allerdings die nächste Anweisung von der
Anweisungsabrufungs-Hardware abgerufen. Während des dritten Taktzyklus wird
jede Anweisung zur nächsten Stufe der Pipeline weitergeschoben und eine neue
Anweisung abgerufen. Somit wird also nachdem die Pipene gefüllt ist, am Ende
eines jedes Taktzyklus eine Anweisung vollständig ausgeführt.
-
Dieser Prozeß ist analog zu einem Montageband in einem
Produktionsbetrieb. Jeder Arbeiter ist spezialisiert darauf eine einzelne Aufgabe an
jedem Produkt, das seine oder ihre Arbeitsstufe passiert, zu verrichten. Durch das
Verrichten jeder Aufgabe nähert sich das Produkt seiner Fertigstellung. An der
letzten Stufe rollt jedes Mal, wenn der Arbeiter die ihm zugewiesene Aufgabe
verrichtet, ein fertiges Produkt von dem Montageband.
-
Bei dem speziellen, in Fig. 1 dargestellten System schließt die
Speicherzugnifseinheit 12 einen Haupt-Cache 18 ein, der es den Anweisungs- und
Ausführungseinheiten 14, 16 auf einer durchschnittlichen Basis erlaubt, Daten mit
einer schnelleren Rate als der Zugriffszeit des Hauptspeichers 10 zu verarbeiten.
Dieser Cache 18 weist eine Vorrichtung zur Speicherung von ausgewählten
vordefinierten Blöcken von Datenelementen auf, eine Vorrichtung zum Empfang
von Anforderungen über einen Adressenumsetzpuffer 20 von der
Anweisungseinheit 14, um auf ein spezifiziertes Datenelement zuzugreifen, eine
Vorrichtung zur Überprüfung, ob das Datenelement sich in einem in dem Cache 18
gespeicherten Block befindet, und eine Vorrichtung, die in Aktion tritt, wenn die
Daten für den Block, einschließlich des spezifizierten Datenelements, nicht derart
gespeichert sind, um den spezifizierten Datenblock aus dem Hauptspeicher 10 zu
lesen und dann den Datenblock im Cache 18 zu speichern. In anderen Worten, der
Cache stellt ein "Fenster" in den Hauptspeicher dar und enthält Daten, von denen
es wahrscheinlich ist, daß sie von den Anweisungs- und Ausführungseinheiten 14,
16 benötigt werden.
-
Wenn ein Datenelement, das von den Anweisungs- und
Ausführungseinheiten 14, 16 benötigt wird, nicht im Cache 18 gefunden wird, so
wird das Datenelement aus dem Hauptspeicher 10 beschafft, bei diesem Vorgang
allerdings wird ein gesamter Block, einschließlich zusätzlicher Daten, aus dem
Hauptspeicher 10 beschafft und in den Cache 18 geschrieben. Aufgrund des
Prinzips der Lokalität in der Zeit und im Speicherraum besteht ein hoher Grad an
Wahrscheinlichkeit, daß wenn die Anweisungs- und Speichereinheiten 14, 16 das
nächste Mal ein Datenelement verlangen, dieses Datenelement in dem Block
gefunden wird, welcher das vorher adressierte Dateneement enthält.
Infolgedessen besteht ein hoher Grad an Wahrscheinlichkeit, daß der Cache 18
bereits das Datenelement enthalten wird, das von den Anweisungs- und
Ausführungseinheiten 14, 16 verlangt wird. Da auf den Cache 18 mit einer viel
höheren Rate als auf den Hauptspeicher 10 zugegriffen werden wird, kann im
allgemeinen der Hauptspeicher eine proportional langsamere Zugriffszeit als der
Cache 18 haben, ohne daß die durchschnittliche Leistung der
Datenverarbeitungsanlage wesentlich verschlechtert wird. Deshalb kann der
Hauptspeicher 10 aus langsameren und weniger teueren Speicherkomponenten
konstruiert werden.
-
Der Adressenumsetzpuffer 20 ist ein mit hoher Geschwindigkeit
betriebener assoziativer Speicher, der die zuletzt benutzten Adreßumwandlungen
von virtuellen zu physikalischen Adressen speichert. In einem virtuellen
Speichersystem kann ein Verweis auf eine einzige virtuelle Adresse einige
Speicherverweise verursachen, bevor die gewünschte Information verfügbar
gemacht wird. Wenn jedoch der Adressenumsetzpuffer 20 verwendet wird, wird die
Umwandlung darauf reduziert, einfach einen "Treffer" im
Adressenumwandlungspuffer 20 zu finden.
-
Die Anweisungseinheit 14 beeinhaltet einen Programmzähler 22, einen
Anweisungs-Cache 24, und einen Anweisungspuffer (A-Puffer) 26, um
Anweisungen vom Haupt-Cache 18 abzurufen. Vom A-Puffer 26 werden neue
Anweisungen an einen Anweisungsdecoder 28 weitergegeben, der sowohl die
Opcodes wie auch die Spezifikationselemente decodiert. Eine Operanden-
Verarbeitungseinheit (OPU) 30 ruft die spezifizierten Operanden ab und gibt sie an
die Ausführungseinheit 16 weiter.
-
Der Programmzähler 22 wird in der Anweisungseinheit 14 geführt, so
daß die geeigneten Anweisungen aus dem Cache 18 geholt werden können. Der
Programmzähler 22 benützt bevorzugt eher virtuelle Speicherplätze als die
physikalischen Speicherplätze des Hauptspeichers 10 und des Cache 18. Deshalb
muß die virtuelle Adresse des Programmzählers 22 in die physikalische Adresse
des Hauptspeichers 10 umgewandelt werden, bevor die Anweisungen abgerufen
werden können. Entsprechend werden die Inhalte des Programmzählers 22 an die
Speicherzugriffseinheit 12 übermittelt, wo der Umwandlungspuffer 20 die
Adreßumwandlung durchführt. Die Anweisung wird von ihrem physikalischen
Speicherplatz im Cache 18 unter Benutzung der umgewandelten Adresse geholt.
Der Cache 18 liefert die Anweisung über Daten-Rückgabeleitungen an den
Anweisungspuffer 26. Die Organisation und der Betrieb des Cache 18 und des
Umwandlungspuffers 20 werden weiter beschrieben in Kapitel 11 von "Levy und
Eckhouse, Jr. , Computer Program and Architecture, Die VAX 11, Digital
Equipment Corporation, Seiten 351 bis 368 (1980)".
-
Die OPU 30 erzeugt ebenfalls virtuelle Adressen. Insbesondere erzeugt
die OPU 30 virtuelle Adressen für Speicher-Quellen-(Lese-) und -Ziei-(Schreib-)
Anweisungen. Die OPU 30 liefert diese virtuellen Adressen an die
Speicherzugriffseinheit 12, wo sie in physikalische Adressen umgewandelt werden.
Auf die physikalischen Speicherplätze des Cache 18 wird dann zugegriffen, um die
Operanden für die Speicher-Quellen-Anweisungen abzurufen.
-
Bei jeder Anweisung enthält das erste Byte den Opcode und die
folgenden Bytes sind die zu decodierenden Operanden-Spezifikationselemente.
Das erste Byte jedes Spezifikationselementes gibt den Adressiermodus für dieses
Spezifikationselement an. Dieses Byte ist für gewöhnlich in zwei Hälften
aufgespalten, wobei eine Hälte den Adressiermodus und die andere Hälfte das zur
Adressierung zu verwendende Register spezifiziert.
-
Der erste Schritt bei der Verarbeitung der Anweisungen ist das
Decodieren des Opcode-Anteils der Anweisung. Der erste Anteil jeder Anweisung
besteht aus ihrem Opcode, der die Operation, die bei der Anweisung durchgeführt
werden soll, spezifiziert. Das Decodieren wird unter Verwendung einer Standard-
Tabellensichtungs-Technik im Anweisungsdecoder 28 durchgeführt. Der
Anweisungsdekoder 28 findet eine Mikrocode-Startadresse zur Ausführung der
Anweisung in einer Sichtungstabelle und gibt die Startadresse an die
Ausführungseinheit 16 weiter. Später führt die Anweisungseinheit die spezifizierte
Operation durch das Ausführen eines vorgespeicherten Mikrocodes aus, wobei an
der angegebenen Startadresse begonnen wird. Auch bestimmt der Decoder, wo
Spezifikationseemente für Quelloperand und Zieloperand in der Anweisung
auftreten und gibt diese Spezifikationselemente an die OPU 30 zur
Vorverarbeitung vor Ausführung der Anweisung weiter.
-
Nach dem Decodieren der Anweisung gibt die OPU 30 die
Spezifikationselemente für Operanden weiter und berechnet ihre effektiven
Adressen; dieser Vorgang beinhaltet das Wesen von Allzweckregistern (GPRs)
und möglicherweise das Modifizieren der GPR-Inhalte durch automatisches
Inkrementieren oder Dekrementieren. Die Operanden werden dann von jenen
effektiven Adressen abgerufen und an die Ausführungseinheit 16 weitergegeben,
die die Anweisung ausführt und das Ergebnis in den Zielort schreibt, der durch den
Zielort-Zeiger für diese Anweisung definiert wird. Die OPU 30 liefert auch ein 3-Bit-
Kontrollfeld, um anzuzeigen, ob die Anweisung eine Lese- oder Schreiboperation
spezifiziert.
-
Jedes Mal, wenn eine Anweisung an die Ausführungseinheit 16
weitergeleitet wird, sendet die Anweisungseinheit 14 eine Mikrocode-Dispatch-
Adresse und eine Anzahl von Zeigern für: (1) die Orte im den Ausführungseinheits-
Registerspeicher, wo die Quelloperanden aufzufinden sind und (2) den Ort, wo die
Ergebnisse gespeichert werden sollen. Innerhalb der Ausführungseinheit 16
beinhaltet eine Anzahl von Warteschlangen 32 eine Gabel-Warteschlange zur
Speicherung der Mikrocode-Dispatch-Adresse, eine Quellortzeiger-Warteschlange
zur Speicherung der Orte der Quelloperanden und eine Zielortzeiger-
Warteschlange zur Speicherung der Zielorte. Jede dieser Warteschlangen besteht
aus einem FIFO-Puffer, der in der Lage ist, die Daten für mehrere Anweisungen
aufzunehmen.
-
Zur Ausführung der Anweisungen beeinhaltet die Ausführungseinheit 16
als separate funktionale Ausführungseinheiten eine Mikrocode-Ausführungseinheit
36, eine arithmetisch logische Einheit (ALU) 38 und eine Unterbrechungseinheit
40. Das Ausgeben von Anweisungen an diese funktionalen Einheiten wird
gesteuert durch eine Anweisungs-Ausgabeeinheit 42. Eine Anweisung wird
ausgegeben, wenn die gewünschte funktionale Ausführungseinheit verfügbar ist,
und wenn die Quelloperanden gültig sind. Registeroperanden werden für noch
auszuführende Schreiboperationen durch Inspektion einer Ergebnisschlange in der
Ausführungseinheit geprüft, bevor eine Anweisung ausgegeben wird.
-
Um die Verbindung zwischen der Speicherzugriffseinheit 12, der
Anweisungseinheit 14 und der Ausführungseinheit 16 zu ermöglichen, ist ein
selbstgetaktetes Speicherregister (STREG) 44 vorgesehen. Dieses STREG 44
kann man sich in angemessener Weise als funktionalen Teil der
Ausführungseinheit 16 vorstellen, es sollte jedoch festgehalten werden, daß der
STREG 44 auf einem separaten spezifischen integrierten Schaltkreis in ECL-
Ausführungsform realisiert ist. Diese physikalische Isolierung des STREG 44 führt
zu kritischen Zeitproblemen, die aus der Signalübertragungszeit oder aus
Laufzeitverschiebungen des Taktsignals resultieren. Diese Zeitprobleme werden
überwunden durch das Erzeugen des tatsächlichen Zeitpulses für das STREG 44
innerhalb des spezifischen ECL-Chips, wodurch die Register selbstgetaktet
gemacht werden.
-
Vorzugsweise beinhalten die Register vier Gruppen von 16 Registern,
von denen jedes 36 Bits lang ist. In diesem Fall wird eine Kombination zweier
gleichartiger integrierter Schaltkreise verwendet, um die vier Gruppen von
sechzehn 32-Bit-Registern zu schaffen. Jedes Register ist so konfiguriert, daß es
vier Bytes und ein Parity-Bit für jedes Byte enthält. Die vier Gruppen entsprechen
jeweils GPRs 46, der Quellenliste 48, vorläufigen Speicherregistern 50 und
vorläufigen Ausführungsregistern 52. Diese Register haben Dual-Port-Ausgänge
und beinhalten ein Paar Multiplexer 54, 56, deren Eingänge mit jedem der 16
Register in jeder der vier Gruppen von Registern verbunden ist. Die 36-Bit-
Multiplexer-Ausgänge sind direkt mit der Ausführungseinheit 16 verbunden.
Auswahlleitungen sind zwischen der Ausführungseinheit 16 und den
Auswahleingängen der Multiplexer 54, 56 gelegt. Diese Auswahlleitungen liefern
ein 6-Bit-Signal, das die Adressierung jedes der 64 individuellen Register erlaubt.
Die Eingänge zu jedem der Register 46, 48, 50, 52 sind ebenfalls Dual-Port-
Eingänge und akzeptieren sowohl Dateneingänge A als auch B. Es sollte jedoch
festgehalten werden, daß während die vier Gruppen von Registern alle in der
Dual-Port-Form ausgelegt sind, das STREG 44 Eingänge von drei verschiedenen
Quellen erhält und diese Eingänge so umlenkt, daß nicht mehr als zwei Eingänge
an irgendeine der vier Gruppen von Registern geliefert werden.
-
Die Quellenliste 48 ist ein Registerspeicher, der Quelloperanden
enthält. Damit zeigen Einträge in der Quellortzeiger-Warteschlange der
Ausführungseinheit 16 auf die Quellenliste für Speicheroperanden und
unmittelbare oder literale Operanden. Sowohl die Speicherzugriffseinheit 12 als
auch die Anweisungseinheit 14 schreiben Einträge in die Quellenliste 48, und die
Ausführungseinheit 16 liest nach Bedarf Operanden aus der Quellenliste zum
Ausführen der Anweisungen.
-
Die GPRs 46 beinhalten 16 Allzweckregister, wie sie durch die VAX-
Architektur definiert werden. Diese Register liefern Speicherplatz für
Quelloperanden und die Ergebnisse von ausgeführten Anweisungen. Ferner
schreibt die Ausführungseinheit 16 Ergebnisse in die GPRs 46, während die
Anweisungseinheit 14 die GPRs 46 für automatische Inkrement- und automatische
Dekrement-Anweisungen aktualisiert.
-
Die vorläufigen Speicherregister 50 beeinhalten 16
Hochgeschwindigkeitsregister auf die von der Ausführungseinheit 16 und der
Speicherzugriffseinheit 12 aus zugegriffen werden kann. Die
Speicherzugriffseinheit 12 schreibt Daten, die von der Ausführungseinheit 16
angefordert werden. Ferner kann die Mikrocode-Ausführungseinheit 36 ebenfalls je
nach Bedarf während der Ausführung des Mikrocodes Schreiboperationen in die
vorläufigen Speicherregister initiieren
-
Die vorläufigen Ausführungsregister beinhalten 16
Hochgeschwindigkeitsregister, auf die nur von der Ausführungseinheit 16
zugegriffen werden kann. Genauer ausgedrückt, die Mikrocode-Ausführungseinheit
36 benützt die vorläufigen Ausführungsregister 52 zur zwischenzeitlichen
Speicherung.
-
Die Ausführungseinheit 16 ist mit dem GPR 46, dem vorläufigen
Speicherregister 50 und dem vorläufigen Ausführungsregister 52 über einen 36-
Bit-Datenbus verbunden. Übertragungsgates 58, 60 und 62 steuern jeweils die
Daten, die von dem Ausführungseinheits-Datenbus an die GPRs 46, die
vorläufigen Speicherregister 50 und das vorläufige Ausführungsregister 52 über
einen 6-Bit-Auswahlbus, der mit den Auswahleingängen der Übertragungsgates
58, 60 und 62 verbunden ist, geliefert werden.
-
Auf ähnliche Weise ist die Anweisungseinheit 14 über
Übertragungsgates 64, 66 mit den B-Eingängen des GPR 46 und der Quellenste
48 verbunden. In diesem Fall sind jedoch die Auswahlleitungen der
Übertragungsgates 64, 66 voneinander getrennt und werden unabhängig
voneinander gesteuert. Der Zweck der unabhängigen Adressierbarkeit besteht
darin, die Anzahl von Taktzyklen, die nötig sind, um automatische Inkrement- und
automatische Dekrement-Adreßverschiedeanweisungen, welche in die Hardware
eingebaut sind, durchzuführen, zu reduzieren.
-
Die Speicherzugriffseinheit 12 verfügt über einen 72-Bit-Datenbus und
schreibt daher vorzugsweise in ein Paar von 36-Bit-Registern. Deshalb ist der Bus
in einen niedrigwertigen 36-Bit-Anteil und einen hochwertigen 36-Bit-Anteil
aufgespalten, um es zu ermöglichen, die Daten an aufeinanderfolgenden
Registeradressen zu speichern. Die niedrigwertigen 36 Bits werden entweder über
das Übertragungsgate 68 an die Quellenliste 48, oder über das Übertragungsgate
70 an das vorläufige Speicherregister 50 geliefert. Physikalisch werden bei der
oben eingeführten bevorzugten Realisierung zwei gleichartige integrierte
Schaltkreise verwendet, dabei werden die hochwertigen 18 Bits jedes 32-Bit-
Anteils in einem der integrierten Schaltkreise und die entsprechenden
niedrigwertigen 18 Bits des 32-Bit-Anteils in dem anderen integrierten Schaltkreis
gespeichert.
-
Von der Speicherzugriffseinheit 12 führt auch ein 7-Bit-Auswahlbus zu
den Übertragungsgates 68, 70. Das zusätzliche Bit wird dazu verwendet, es der
Speicherzugriffseinheit zu ermöglichen, die angel ieferten hochwertigen 36-Bits
über das Übertragungsgate 68 in das nächste sequentielle Register entweder der
Quellenliste 48 oder über das Übertragungsgate 70 in des vorläufigen
Speicherregisters 50 zu schreiben. So werden also die hochwertigen 36 Bits
entweder in der Quellenliste 48 oder dem vorläufigen Speicherregister 50 an einer
Stelle, die um eins größer ist als die der niedrigwertigen 36 Bits, die im selben
Register gespeichert sind, gespeichert. Deshalb greift die Ausführungseinheit 16
wenn sie auf in der Quellenliste und den vorläufigen Speicherregistern 48, 50
gespeicherte Daten zurückgreift, zunächst auf die Daten, die in den
niedrigwertigen 36 Bits gespeichert sind, zurück, inkrementiert dann ihren internen
Zeiger und greift dann auf die hochwertigen 36 Bits zurück, ohne eine zweite
Adresse zu berechnen.
-
Bezugnehmend auf Fig. 2 wird nun ein detailliertes Blockschaltbild eines
integrierten Schaltkreises 44, zur Schaffung des selbstgetakteten
Registerspeichers (STREG) 44 aus Fig. 1 gezeigt. Wie oben angeführt, wird eine
Kombination von zwei integrierten Schaltkreisen 44, verwendet, wobei ihre
Adreßleitungen parallel geschaltet sind, um 32-Bit-Datenregister zu schaffen.
-
In dem integrierten Schaltkreis (IC) 44, für das STREG nimmt eine Reihe
von Latches 80a bis 80q alle externen Eingangsleitungen auf und speichert im
Gleichtakt mit dem System-Taktsignal EWCLK die dort anliegenden Daten. Diese
Latches 80a - 80q sind in drei Gruppen (A, B, C) aufgeteilt, die den Ausgängen der
Ausführungs-, Anweisungs-, und Speicherzugriffseinheiten 16, 14, 12 entsprechen.
Die an den Eingängen der Latches 80a - 80q anliegenden Daten werden in
Reaktion auf einen EWCLK-Übergang in seinen unbestätigten Zustand gehalten.
Deshalb ist für den STREG-IC 44' das Anlegen stabiler Daten an den Latch-
Ausgängen während der Zeit, in der das EWCKL in seinem unbestätigten Zustand
bleibt, gesichert. Da der STREG-IC 44' seinen eigenen internen Taktpuls als
Funktion des Systemtaktsignals erzeugt, können die Latch-Ausgänge während des
internen Taktpulses in angemessener Weise als stabil angenommen werden.
-
In ähnlicher Weise erhalten die Latches 82a - 82b die Leseadressen
von der Ausführungseinheit 16 und speichern diese Adressen in Reaktion auf das
System-Taktsignal RCLK.
-
Der Adreßbus (AWA) führt von der Ausführungseinheit 16 zu dem Latch
80d, das wiederum seinen Ausgangswert an einen Schreibadreßdecoder 84 liefert.
Der Schreibadreßdecoder 84 erzeugt einen 16-Bit-Ausgangswert, welcher an den
A-Adreßeingang des GPR-Registers 46', des vorläufigen Ausführungsregisters 52'
und des vorläufigen Speicherregisters 50' geliefert wird. Auf diese Art und Weise
steuert die von der Ausführungseinheit 16 gelieferte Adresse, auf welches der 16
Register innerhalb der drei Gruppen von Registern 46', 52', 50' zugegriffen wird.
Um jedoch auszuwählen, welche der Gruppen von Registern aktiviert ist, werden
Schreibfreigabesignale (AWEN1, AWEN3, AWEN4) an die Latches 80c, 80e und
80f geliefert. Diese Latches sind wiederum mit dem A-Freigabeeingang des GPR-
Registers 46', des vorläufigen Speicherregisters 50' und des vorläufigen
Ausführungsregisters 52' verbunden. Daten (AWD), die in die angezeigte Adresse
und das angezeigte Register geschrieben werden sollen, werden von der
Ausführungseinheit 16 an das Latch 80a geliefert. Der Ausgang des Latch 80a ist
mit dem A-Dateneingang des GPR-Registers 46', des vorläufigen
Ausführungsregisters 52' und des vorläufigen Speicherregisters 50' verbunden. Ein
bestätigtes Signal an den A-Freigabeeingängen der Register 44' führt dazu, daß
die am A-Dateneingang anliegenden Daten in dem am A-Adreßeingang
angezeigten Register gespeichert werden.
-
Es sollte festgehalten werden, daß das vorläufige Ausführungsregister
52 in Fig. 1 und das vorläufige Speicherregister 50 in Fig. 1 nur in 36-Bit-Schritten
adressierbar sind, während das GPR-Register 46 in Fig. 1 in 9-Bit-Schritten
adressiert werden kann. (Man erinnere sich, daß jeder der STREG-ICs 44' aus Fig.
2 eine Hälfte jedes der Register aus Fig. 1 enthält). Der VAX-Befehlssatz erlaubt
Schreiboperationen in die Bytes des niedrigwertigen Worts des GPR-Registers 46
aus Fig. 1. Um diese individuelle Byte-Adressierbarkeit zu ermöglichen, erhält das
Latch 80b ein Byte-Auswahlsignal (ABS) von der Ausführungseinheit 16. Das ABS
wird mit dem AWEN1 kombiniert, um auszuwählen, welches der Bytes beschrieben
werden soll. Die Ausgangswerte der Latches 80b, 80c werden an eine Byte-
Freigabe-Logikschaltung 86 geliefert. Die Byte-Freigabeschaltung 86 hat zwei
Ausgänge, die mit den A-Freigabeingängen des hochwertigen und niedrigwertigen
Bytes des GPR-Registers 46' verbunden sind. Die Wahrheitstabelle für die Byte-
Freigabeschatung 86 sieht folgendermaßen aus:
AWEN1 ABS GPR
keines
-
Während einer Byte-Verschiebeanweisung aus dem VAX-Befehlssatz ist
ein Zugriff auf die niedrigwertigen 9 Bits jedes Worts in dem GPR-Register 46'
notwendig. Diese Anweisung erlaubt, ein Datenbyte aus dem Speicher in das GPR
46 aus Fig. 1 zu verschieben.
-
Ausgangswerte von der Anweisungseinheit 14 werden an die Latches
80g - 80k geliefert. Das Latch 809 erhält das Schreibsignal (BWD) und liefert es an
die B-Eingänge des GPR-Registers 46' und an die A-Eingänge des
Quellenlisteregisters 48'. Die Latches 80i und 80k erhalten die Adressen (BWA1,
BWA2) auf den zwei unabhängig zugreifbaren Adreßbussen der
Anweisungseinheit 14 und liefern diese Adressen jeweils an die
Schreibadreßdecoder 88a, 88b. Die Schreibadreßdecoder 88a, 88b ähneln in
ihrem Aufbau dem Schreibadreßdecoder 84 und arbeiten im wesentlichen
identisch wie dieser. Der Ausgangswert des Schreibadreßdecoders 88a wird direkt
an den B-Adreßeingang des GPR-Registers 46' geliefert. Die B-Freigabeeingänge
des GPR-Registers 46' sind beide mit den Ausgängen des Latches 80h verbunden
welches ein Schreibfreigabesignal (BWEN1) von der Anweisungseinheit 14 erhält.
-
In ähnlicher Weise weist der Schreibadreßdecoder 88b einen Ausgang
auf, der mit dem A-Adreßeingang der Quellenliste 48 verbunden ist. Der A-
Freigabeeingang der Quellenliste 48 ist mit dem Ausgang des Latches 80j
verbunden, welches ebenfalls ein Schreibfreigabesignal (BWEN2) von der
Anweisungseinheit 14 erhält.
-
Die Latches 801 - 80q erhalten Ausgangswerte von der
Speicherzugriffseinheit 12. Da der Speicherzugriffseinheitsbus 72 Bit breit ist, ist
es erforderlich, zwei Schreiboperationen in zwei sequentielle Registeradressen
durchzuführen, um die gesamten Daten zu speichern. Dementsprechend ist der
72-Bit breite Bus in zwei 36-Bit breite Busse (CWD1, CWD2) aufgespalten und
führt zu den Latches 80p, 80q. Die Ausgangswerte der Latches 80p, 80q werden
an die B-Eingänge des Quellenlisteregisters 48' und des vorläufigen
Speicherregisters 50' geliefert. Das Latch 80m erhält die Schreibadresse (CWA)
von der Speicherzugriffseinheit 12 und leitet sie an einen Schreibadreßdecoder 90
weiter. Ein "Schreibzielort 2-Freigabesignal" (CWD2EN) wird von der
Speicherzugriffseinheit 12 an das Latch 80n geliefert und auch als Eingangswert
an den Schreibadreßdecoder 90 weitergeleitet. Wenn das CWD2EN nicht bestätigt
ist, leitet der Schreibadreßdecoder 90 ein Registerfreigabesignal an den B-
Adreßeingang des Quellenlisteregisters 48' und des vorläufigen Speicherregisters
50' weiter. Wenn das CWD2EN bestätigt ist, liefert der Schreibadreßdecoder 90
zusätzlich die nächste sequentielle Adresse an die B-Adreßeingänge des
Quellenlisteregisters 46' und des vorläufigen Speicherregisters 50'. Dies wird
erreicht durch eine physikalische Rotation der Leitungsanordnung an den B-
Adreßeingängen des Quellenlisteregisters und des vorläufigen Speicherregisters.
So wird zum Beispiel Bit 15 des Schreibadreßdecoders 90 an die Position
gedreht, während die verbleibenden 15 Bits um eine Position nach oben
geschoben werden.
-
Schreibfreigabesignale (CWEN2, CWEN3) werden von der
Speicherzugriffseinheit 12 an die Latches 801 und 800 geliefert. Die Latches 801,
800 sind wiederum jeweils mit den B-Freigabeeingängen des Quellenlisteregisters
48' und des vorläufigen Speicherregisters 52' verbunden. Diese Eingänge steuern
ob die Speicherzugriffseinheit 12 Daten in Register in der Quellenliste 48' oder in
das vorläufige Speicherregister 50' schreibt. Wenn zum Beispiel das CWEN2
bestätigt ist, wird das Langwort in der Quellenliste 48' gespeichert, wohingegen,
wenn das CWEN3 von der Speicherzugriffseinheit 12 bestätigt ist, auf das
vorläufige Speicherregister 50 zugegriffen wird.
-
Damit die Ausführungseinheit 16 das STREG 44 lesen kann, werden die
A-Datenausgangswerte von jeder der Gruppen von Registern an den Multiplexer
54 geliefert. In ähnlicher Weise werden die B-Datenausgangswerte von jeder der
Gruppen von Registern an den Multiplexer 56 geliefert. Dementsprechend werden
die Auswahlleitungen des Multiplexers 54 über das Latch 82a durch die A-
Leseadreßleitungen (ARA) von der Ausführungseinheit 16 gesteuert. In ähnlicher
Weise werden die Auswahlleitungen des Multiplexers 56 über das Latch 82b durch
die B-Leseadreßleitungen (BRA) von der Ausführungseinheit 16 gesteuert.
-
So kann also zu einem beliebigen Zeitpunkt die Ausführungseinheit 16
einen der B-Datenausgangswerte aus irgendeiner der Gruppen von Registern und
einen der A-Datenausgangswerte aus irgendeiner der Gruppen von Registern
lesen, einschließlich der A- und B-Datenausgangswerte desselben Registers. Es
kann zum Beispiel dieselbe Adresse an die Auswahlleitungen der beiden
Multiplexer 54, 56 geliefert werden, was dazu führt, daß beide Multiplexer 54, 56
dasselbe Register lesen und den gleichen Ausgangswert erzeugen. Darüberhinaus
können zwei beliebige Register innerhalb einer der vier Gruppen von Registern
gleichzeitig an den Ausgängen der zwei Multiplexer 54, 56 gelesen werden.
-
Unter Bezugnahme auf Fig. 3 wird nun ein detailliertes
Funktionsdiagramm der Schaltungen für ein einzelnes Bit des selbstgetakteten
Registers 44 gezeigt. Es sollte festgehalten werden, daß dies nur ein
Funktionsdiagramm ist und zum Zwecke der Erläuterung der Operation eines
einzelnen Bits des Registers 44 gezeigt wird. Der vorzugsweise Aufbau der
tatsächlichen Schaltungen wird später in Verbindung mit Fig. 6, 7 und 8 weiter
beschrieben. In Fig. 3 werden die Latches 80a - 80q zusammen als ein einzelnes
Latch 92 dargestellt. Das in Fig. 3 gezeigte tatsächliche Bit ist das Bit Nr.4 von
einem der 16 Register in einer der Gruppen von Registern.
-
Man sieht, daß die Adreßleitungen A0 - A3 an dem Ausgang des
Latches 92 anliegen und zu einem Paar NOR-Gattern 94, 96 führen. Die NOR-
Gatter 94, 96 erhalten ebenfalls jeweils als Eingänge die Schreibfreigabe A und
die Schreibfreigabe B sowie einen sechsten Eingang. Dieser sechste Eingang ist
der intern erzeugte STREG-Taktpuls (WPULS), der die Schreiboperation der
Register 44 steuert. Dementsprechend werden die Ausgänge der NOR-Gatter 94
96 nur bestätigt, wenn alle der Eingänge nicht bestätigt sind. So wird zum Beispiel
das NOR-Gatter 94 nur bestätigt, wenn Bit 4 von dem Adreßbus ausgewählt ist, die
Schreibfreigabe A-Leitung sich im Niedrigpegelzustand befindet und WPULS sich im
Niedrigpegeltaktzustand befindet.
-
Dieses bestätigte Signal, das durch eines der NOR-Gatter 94, 96
geliefert wird, wird durch ein ODER-Gatter 98 an den Takteingang des Latches
100 weitergegeben. Die Ausgänge der NOR-Gatter 94, 96 werden auch jeweils an
die Eingänge der UND-Gatter 102, 104 geliefert. Die zweiten Eingangswerte für
die UND-Gatter 102, 104 sind jeweils die A- und B-Dateneingangs leitungen. Die
A- und B-Dateneingangsleitungen werden über Differenzverstärker 106 und 108
geliefert, um das auf diesen Leitungen vorhandenen Rauschen zu vermindern.
Man sieht deshalb, daß die Ausgänge der NOR-Gatter 94, 96 es den UND-Gattern
102, 104 ermöglichen, entweder die Daten auf der A-Dateneingangsleitung oder
der B-Dateneingangsleitung an ein ODER-Gatter 110 weiterzuleiten. Das ODER-
Gatter 110 wiederum leitet das Datensignal an den Dateneingang des Latches 100
weiter.
-
Der Ausgang des Latches 100 ist mit einem Eingang eines Paares von
UND-Gattern 112, 114 verbunden. Der zweite Eingang der UND-Gatter 112, 114
ist mit den jeweiligen A- und B-Leseadreßleitungen (ARA, BRA) der Multiplexer 54
und 56 verbunden. Tatsächlich bilden die UND-Gatter 112, 114 einen Teil der
Multiplexer 54 und 56. Es sollte beachtet werden, daß die im Latch 100
vorhandenen Daten in Reaktion auf die jeweilige Bestätigung der ARA und BRA-
Leitungen über die UND-Gatter 112, 114 weitergeleitet werden.
-
Unter gleichzeitiger Bezugnahme auf Fig. 4 und 5 wird nun die
Logikschaltung zur Erzeugung des Schreibimpulssignals WPULS gemeinsam mit
typischen Signalformen an bestimmten Orten der Logikschaltung erläutert. Das
System-Taktsignal EWCLKH und die Inverse des System-Taktsignals EWCLKL
werden an die Eingänge des UND-Gatters 116 geliefert. Das invertierte System-
Taktsignal EWCLKL wird über einen zusätzlichen Inverter geliefert, so daß das
UND-Gatter 116 zur Reduktion des auf diesen Leitungen vorhandenen Rauschens
dient. Der Ausgangswert des UND-Gatters 116 wird an eine
Verzögerungsschaltung 118 geliefert, die ein zu ihrem Eingangssignal identisches
Ausgangssignal WCLK1C erzeugt, das jedoch, wie in Fig. 5 gezeigt, um ein
Zeitintervall D1 verzögert ist. Das Zeitintervall Dl beträgt zum Beispiel 0,3 ns, um
zu garantieren, daß die Daten, bevor sie in den gewünschten Registerort
geschrieben werden, in den Eingangslatches 92 vorliegen und stabil sind. Dieses
verzögerte Signal WCLK1C wird über eine Serien von 11 Invertern 120 geliefert,
wobei, wie in Fig. 5 gezeigt, ein zweites Verzögerungsintervall D2 erzeugt wird.
Dieses zweite Verzögerungsintervall D2 beträgt zum Beispiel ungefähr 1,5 ns. So
wird also der Ausgang der 11 Inverter 120 invertiert und verglichen mit ihrem
Eingang WCLK1C um das Zeitintervall D2 verzögert. Die zwei Signale WCLKIC
und A werden in einem NOR-Gatter 122 kombiniert, so daß eine Signalform
erzeugt wird, deren Taktdauer D2 ist und die um ein Zeitintervall D1 gegenüber der
aufsteigenden Flanke des System-Taktsignals EWCLKH verzögert ist. Dieses
Pulssignal wird über einen abschließenden Inverter 124 weitergeleitet, um
letztendlich das Schreibimpuissignal WPULS zu erzeugen. Das Zeitintervall D2
reicht aus, um die Set-up- und Haltezeit-Anforderungen für das Register-Latch 100
zu erfüllen.
-
Es sollte beachtet werden, daß die Latches 80a - 80q nur im bestätigten
Zustand des EWCLKH geladen werden und daß die UND-Gatter 102, 104 den
Dateneingang nur während des unbestätigten Anteils von WPULS an das Latch 100
weiterleiten. So wird also dadurch, daß das Zeitintervall D1 länger als die
Übertragungszeit eines an das STREG 44 gelieferten Signals gewählt wird
sichergestellt, daß die Daten und Adressen zu Beginn von WPULS stabil sind.
Ebenso wird dadurch, daß das Zeitintervall D2 kürzer als der Rest des System-
Taktpulses EWCLKH gewählt wird, sichergestellt, daß die Daten und Adressen
über WPULS hinweg stabil bleiben.
-
Bezugnehmend auf Fig. 6 wird nun ein elektrisches Schema einer
Realisierung des Funktionsdiagramms von Fig. 3 gezeigt. Man erinnere sich, daß
das Funktionsdiagramm von Fig. 3 nur erläuternden Zwecken dient und es keine
direkte eins-zu-eins-Entsprechung der darin gezeigten Elemente mit den in Fig. 6
gezeigten Elementen gibt. Es gibt jedoch eine funktionale Äquivalenz zwischen
den beiden. So entsprechen zum Beispiel die Elemente innerhalb der gestrichelten
Linien, die mit 126 bezeichnet sind, dem UND-Gatter 102 und dem
Differenzverstärker 106. Die Transistoren 128 und 130 sind parallelgeschaltet und
entsprechend dem Differenzverstärker 106. Die steuernden Eingangssignale an
den Basen der Transistoren 128, 130 sind in dem gezeigten Beispiel mit dem
vierten Datenbit bzw. dem invertierten vierten Datenbit verbunden. Entsprechend
sieht man, daß nur einer der Transistoren 128, 130 zu einer bestimmten Zeit in den
EIN-Zustand versetzt ist. Wenn zum Beispiel Datenbit 4 bestätigt ist, so ist der
Transistor 128 in den EIN-Zustand versetzt und das invertierte Datenbit 4 versetzt
notwendigerweise den Transistor 130 in den AUS-Zustand. Die Kollektoren der
Transistoren 128, 130 sind jeweils über Widerstände 132, 134 und den Transistor
136 mit einer Versorgungsspannung VCC verbunden.
-
Ein Transistor 138, der in Serie mit der parallelen Kombination der
Transistoren 128, 130 verbunden ist, bildet das UND-Gatter 102. Die Basis des
Transistors 138 erhält ihr steuerndes Eingangssignal von dem NOR-Gatter 94. Der
Ausgangspegel des NOR-Gatters 94 wechselt zwischen - 2, 1 Volt im nicht
bestätigten Zustand und etwa - 1,6 Volt im bestätigten Zustand, wodurch der
Transisitor 138 jeweils entweder in den AUS-Zustand oder den EIN-Zustand
versetzt wird. Der Emitter des Transistors 138 ist mit einer Stromquelle 140
verbunden. Die Stromquelle 140 beinhaltet einen Transistor 142, der in Serie mit
einem Widerstand 144 verbunden ist. Die Basis des Transistors 142 ist mit einer
Steuerspannung VREG verbunden, so daß der Stromregler 140 den Konstantstrom
durch den Widerstand 144 aufrecht erhält.
-
Das UND-Gatter 104 und der Differenzverstärker 108 sind durch die
innerhalb der gestrichelten Linie 146 gezeigten Elemente dargestellt. Die
Verbindung der Elemente innerhalb der gestrichelten Linie 146 ist im wesentlichen
ähnlich der innerhalb der gestrichelten Linie 126. Ein Paar von Transistoren 148
150 ist parallelgeschaltet und erhält seine steuernden Eingangssignale von dem
vierten Dateneingang, der mit dem Dateneingang B-Bus verbunden ist. Die
Kollektoren der Transistoren 148 und 150 sind jeweils mit den Kollektoren der
Transistoren 128, 130 verbunden. Die Emitter der Transistoren 148, 150 sind
miteinander und über einen Transistor 152 mit der Stromquelle 140 verbunden.
Der Transistor 152 erhält an seiner Basis ein steuerndes Eingangssignal von dem
NOR-Gatter 96. Das NOR-Gatter 96 hat ebenfalls einen Ausgangspegel, der
zwischen -1,6 Volt im nichtbestätigten Zustand und -2, 1 Volt im bestätigten
Zustand wechselt.
-
Das Latch 100 entspricht den innerhalb der gestrichelten Linie 154
enthaltenen Elementen. Ein Paar von Transistoren 156, 158 ist parallel geschaltet
wobei ihre Emitter miteinander verbunden und über einen Transistor 160 mit dem
Stromregler 140 verknüpft sind. Der Transisitor 160 erhält an seiner Basis ein
steuerndes Eingangssignal, das auf einer konstanten Spannung VR gehalten wird.
Die regulierte Spannung beträgt ungefähr -1,85 Volt und entspricht ungefähr dem
mittleren Pegel der Spannungsausschläge der Eingänge der Transistoren 138
152. Eine Rückkopplung ist durch die Kollektoren der Transistoren 156, 158, die
jeweils mit den Kollektoren der Transistoren 128, 148; 130, 150 verbunden sind
realisiert, wobei die steuernden Eingänge an den Basen der Transistoren 156, 158
mit den jeweils gegenüberliegenden Kollektoren der Transistoren 130, 150; 128,
148 verbunden sind. Diese Rückkopplung ermöglicht die Latch-Funktion.
-
Die Schreiboperation des Latch 100 kann nun beschrieben werden.
Wenn das Latch 100 nicht beschrieben wird, sind die X- und Y-Eingänge an den
Transistoren 138 und 152 beide im unbestätigten Zustand. Infolgedessen ist
Transistor 160 durch die regulierte Vorspannung VR in den EIN-Zustand versetzt.
Der Strom fließt von der Spannungsquelle VCC durch den Transistor 136 und einen
der parallelen Zweige von Widerstand 134 und Transistor 158 oder Widerstand
132 und Transistor 156 und dann durch den Transistor 160 und die Stromquelle
140. Welcher der parallelen Strompfade genommen wird, wird durch den
vorhergehenden Zustand der UND-Gatter 126, 146 bestimmt. Nehmen wir zum
Beispiel an, daß das vorher in das Latch 100 geschriebene Bit das vierte Datenbit
aus dem Dateneingang A war und zu diesem Zeitpunkt im bestätigten Zustand war.
Als die Schreiboperation durchgeführt wurde, wurde deshalb der X-Eingang des
Transistors 138 auf dem Pegel von -1,6 Volt bestätigt, wodurch der Transistor 138
in den EIN-Zustand und der Transistor 160 in den AUS-Zustand versetzt wurden.
In ähnlicher Weise versetzte der A&sub4;-Eingang des Transistors 128 auch diesen
Transistor in den EIN-Zustand. Der invertierte Eingang des Transistors 130
versetzte diesen notwendigerweise in den AUS-Zustand. Deshalb floß der Strom
von der Spannungsquelle VCC durch den Transistor 136, den Widerstand 132, den
Transistor 128, den Transistor 138 und zu der Stromquelle 140. Entsprechend war
die an der Basis des Transistors 156 anliegende Spannung im Hoch pegelzustand,
wodurch der Transistor 156 in den EIN-Zustand versetzt wurde. Im Gegensatz
dazu war die an der Basis des Transistors 158 anliegende Spannung im
Niedrigpegelzustand, wodurch der Transistor 158 in den AUS-Zustand versetzt
wurde. Am Ende des Schreibimpulssignals WPULS kehrt das Signal X in seinen
nicht bestätigten Zustand zurück, wodurch der Transistor 138 in den AUS-Zustand
und der Transistor 160 in den EIN-Zustand versetzt wird und die Latch-Funktion
ausgelöst wird. Man sieht, daß der Strompfad nun die Spannungsquelle VCC den
Transistor 136, den Widerstand 132, den Transistor 156, den Transistor 160 und
die Stromquelle 140 einschließt. Der Kollektor des Transistors 156 ist in nicht
bestätigtem Zustand und der Kollektor des Transistors 158 ist in bestätigtem
Zustand. So wird also der Wert des vierten Datenbits aus dem A-Datenbus in dem
Latch 100 in invertiertem Zustand gespeichert und wird auf diese Weise so lange
gespeichert wie die Spannungsquelle VCC nicht unterbrochen wird oder eine
nachfolgende Schreiboperation auftritt.
-
Es sollte festgehalten werden, daß die Funktion des ODER-Gatters 110
durch das Verbinden der Emitter der Transistoren 138, 152 und 160 erreicht wird.
In ähnlicher Weise verwendet das ODER-Gatter 98 die gleiche Art von
Verbindung. Der Spannungspegel der X- und Y-Eingangssignale reicht aus, um
den Transistor 160 in den AUS-Zustand zu versetzen, wobei er als Takt-
Eingangssignal wirkt, um eine Änderung der Zustände der Transistoren 156 und
158 zu ermöglichen.
-
Wir betrachten nun den Betrieb des Latches 100, wenn das vierte
Datenbit aus dem Dateneingang B geschrieben werden soll und sein Wert nicht
bestätigt ist. Dann muß also der Zustand des Latches 100 umgekehrt werden. Der
invertierte Wert von B&sub4; ist der Pegelzustand "hoch" und der Transistor 150 wird in
den EIN-Zustand versetzt. Gleichzeitig mit dem Wechsel des Schreibpulses WPULS
in den Niedrigpegelzustand wird das Signal Y, das an den Transistor 152 geliefert
wird, bestätigt und der Transistor 152 wird in den EIN-Zustand versetzt. So wird
also der Kollektor des Transistors 150, der sich vorher im bestätigten Zustand
befand, nun durch den Strompfad von der Systemspannung VCC über den
Transistor 136, den Widerstand 134, den Transistor 150, den Transistor 152 und
den Stromregler 140 in den Niedrigpegelzustand gezogen. Gleichzeitig wird auch
der Transistor 160 durch das bestätigte Y-Signal in den AUS-Zustand versetzt.
Entsprechend wird nun das Signal an dem Kollektor des Transistors 156, das sich
vorher im Niedrigpegelzustand befand, bestätigt. Dieses Signal versetzt den
Transistor 158 in den EIN-Zustand, so daß am Ende des Schreibimpulssignals
WPULS der Transistor 152 in den AUS-Zustand versetzt wird, dadurch der
geregelten Spannung VR erlaubt, den Transistor 160 in den EIN-Zustand zu
versetzen und einen Strompfad von der Systemspannung VCC über den Transistor
136, den Widerstand 134, den Transistor 158, den Transistor 160 und den
Stromregler 140 erzeugt. Die Spannungspegel an den Kollektoren der
Transistoren 156 und 158 wurden in geeigneter Weise umgekehrt und verbleiben
in diesem Zustand bis die Systemspannung VCC unterbrochen wird oder die
Daten bits A&sub4;, B&sub4; bestätigt werden und in das Latch 100 geschrieben werden.
-
Der selbstgetaktete Registerspeicher 44 ist ein dual-read Speicher, was
bedeutet, daß zwei Leseoperationen gleichzeitig möglich sind. Es ist für die beiden
Leseoperationen sogar möglich, auf dasselbe Register zuzugreifen. Die UND-
Gatter 112, 114 aus Fig. 3 entsprechen jeweils den Multiplexern aus Fig. 1 und 2
und sind in Fig. 6 als die jeweiligen Elemente innerhalb der gestrichelten Linien
162, 170 dargestellt. Das UND-Gatter 162 beinhaltet ein Paar von parallel
geschalteten Transistoren 164, 166, deren Emitter miteinander über einen
Transistor 168 verbunden sind. Der Kollektor des Transistors 164 ist mit der
Systemspannung VCC verbunden, während der Kollektor des Transistors 166 das
Ausgangssignal liefert und über einen gemeinsamen Endwiderstand, wie in
Zusammenhang mit Fig. 7 gezeigt und diskutiert, verbunden. Die an den Basen der
Transistoren 164, 166 anliegenden Steuerspannungen sind jeweils mit den
Kollektoren der Transistoren 158, 156 des Latches 100 verbunden. So erzeugt
also der im Latch 100 gespeicherte Wert eine komplementäre Vorspannung an
den Transistoren 164, 166, wobei, wenn der Transistor 168 in den EIN-Zustand
versetzt ist, der Strom entweder durch den Transistor 164 oder den Transistor 166
fließt. Ist der im Latch 100 gespeicherte invertierte Wert gleich 0, so befindet sich
der Transistor 166 im AUS-Zustand und der Endwiderstand liefert ein bestätigtes
Signal an den Ausgang des UND-Gatters 112. Das UND-Gatter liefert also nicht
nur die Daten, die in dem Latch gespeichert werden, sondern es invertiert auch die
gespeicherten Daten, so daß sie den ursprünglichen Eingangsdaten entsprechen.
Wenn im Gegensatz dazu der im Latch 100 gespeicherte Wert gleich 1 ist, so
befindet sich der Transistor 166 im EIN-Zustand und ermöglicht einen Strompfad
durch den Endwiderstand, den Transistor 166 und den Transistor 168 zur Erde hin.
Das Ausgangssignal wird dann in einen unbestätigten Niedrigpegelzustand
gezogen.
-
Das UND-Gatter 114 ist in seiner Struktur identisch mit den UND-Gatter
112, das innerhalb der gestrichelten Linie 170 gezeigt ist. Das UND-Gatter 114
beinhaltet ein Paar von parallel geschalteten Transistoren 172, 174, deren Emitter
miteinander über einen Transistor 176 verbunden sind. Die Kollektoren der
Transistoren 172, 174 sind jeweils mit der Systemspannung VCC und einer
Ausgangsleitung wie dem UND-Gatter 112 verbunden. Die Transistoren 172, 174
erhalten an ihren jeweiligen Basen von den Kollektoren der Transistoren 158, 156
Eingangssignale. Der einzige Unterschied zwischen den UND-Gattern 112, 114
besteht in dem Freigabesignal, das an den Basen der Freigabetransistoren 168,
176 anliegt. Der Transistor 168 erhält sein Freigabesignal von der A-Leseadresse
die in dem Latch 82A enthalten ist und von der Ausführungseinheit 16 geliefert
wird, während das UND-Gatter 114 sein Freigabesignal von der B-Leseadresse
erhält, die in dem Latch 82B enthalten ist und von der Ausführungseinheit 16
geliefert wird.
-
Es sollte festgehalten werden, daß es möglich ist, zwei Register
gleichzeitig zu lesen. Die Multiplexer 54, 56 liefern die Daten separat. Deshalb wird
zu einem bestimmten Zeitpunkt nur eines der sechzehn Register irgendeiner
Gruppe durch die A-Leseadresse gelesen. Das gilt ebenfalls für die B-
Leseadresse. Deshalb ist es vorteilhaft für das System, einen einzigen
Endwiderstand und eine einzige Stromquelle für alle gemeinsamen Bits innerhalb
einer Gruppe von sechzehn Registern vorzusehen. So ist zum Beispiel das in Fig.
6 dargestellte vierte Datenbit zusammen mit den fünfzehn restlichen vierten
Datenausgängen der anderen fünfzehn Register dieser Gruppe mit demselben
Endwiderstand und derselben Stromquelle verbunden. Dies gilt sowohl für die
B- als auch die A-Leseadressen. Alle gemeinsamen Datenbits haben einen
gemeinsamen Endwiderstand.
-
Bezugnehmend auf Fig. 7 werden nun die gemeinsamen
Endwiderstände und Stromquellen erläutert. Ein Endwiderstand 17B ist an seinem
einen Ende mit der Systemspannung VCC und an seinem anderen Ende mit den
Kollektoren der Transistoren 166 und 180 verbunden. Die Basis des Transistors
180 ist mit der regulierten Spannung VR verbunden, welche einen Wert von
ungefähr -1,85 Volt hat. Der Emitter der Transistors 180 ist mit dem Emitter des
Transistors 168 und der gemeinamen Stromquelle 182 verbunden. Die Stromquelle
182 beinhaltet einen Transistor 184, dessen Basis durch eine regulierte Spannung
VREG gesteuert wird und dessen Emitter über einen Widerstand 186 mit VEE1
verbunden ist.
-
Der Betrieb des Endwiderstands 178 und der Stromquelle 182 können
nun beschrieben werden. Wenn der im Latch 100 gespeicherte Wert gleich Null
ist, so befindet sich der Transistor 166 im AUS-Zustand, während der Transistor
164 sich im EIN-Zustand befindet. Das A-Leseadressesignal versetzt den
Transistor 168 in den EIN-Zustand, und führt damit dazu, daß der Strom von der
Systemspannung VCC über die Transistoren 164, 168 und in die Stromquelle 182
fließt. Deshalb werden der Endwiderstand 178 und der Transistor 180 effektiv
umgangen. Da kein Strom in den Widerstand 178 fließt, gibt es keinen
Spannungsabfall an dem Endwiderstand 178 und die Ausgangsspannung an OUT
1 muß gleich der Systemspannung VCC sein. Wenn im Gegensatz dazu der im
Latch 100 gespeicherte Wert gleich list, so befindet sich der Transistor 166 im
EIN-Zustand und der Transistor 164 befindet sich im AUS-Zustand. Deshalb wird,
wenn das A-Leseadressesignal bestätigt wird, ein Strompfad von VCC über den
Endwiderstand 178, den Transistor 166, den Transistor 168 und die
Spannungsquelle 182 gebildet. Damit ist der Spannungspegel an OUT 1 der
Niedrigpegelzustand.
-
Der Endwiderstand und die Stromquelle, die mit dem UND-Gatter 114 in
Verbindung stehen, sind praktisch identisch mit den vorhergehend diskutierten und
beinhalten einen Endwiderstand 188, der mit einem Transistor 190, der durch die
regulierte Spannung VR gesteuert wird, und einer Stromquelle 192 verbunden ist.
Die Stromquelle 192 beinhaltet den Transistor 194, der in Serie mit einem
Widerstand 196 verbunden ist und an seiner Basis durch die regulierte Spannung
VREG gesteuert wird. Der Verbindungspunkt zwischen dem Endwiderstand 188 und
dem Transistor 190 ist ebenfalls mit dem Kollektor des Transistors 174 verbunden
während der Verbindungspunkt des Transistors 190 mit der Stromquelle 192 noch
mit dem Emitter des Transistors 176 verbunden ist.
-
Aufgrund der Ausschließlichkeit des Betriebs jedes Registers innerhalb
der Gruppen von Registern kann eine wirtschaftliche Verwendung von Bauteilen
durch die Verwendung eines einzigen Endwiderstands und einer einzigen
Stromquelle für jeden der Multiplexer 54, 56 realisiert werden. Bezugnehmend auf
Fig. 8 wird nun ein Funktionsdiagramm der Beziehung zwischen den gemeinamen
Endwiderständen, Stromquellen und Registern erläutert. Nur zu exemplarischen
Zwecken sind die sechzehn 18-Bit-Register des vorläufigen Speicherregisters 50'
dargestellt. Es sollte beachtet werden, daß die Verbindung der drei verbleibenden
Gruppen von Registern im wesentlichen identisch sind und hier nicht gezeigt
werden, um eine unnötige Wiederholung zu vermeiden. Damit sind also achtzehn
Endwiderstände 178a - 178L jeweils mit den gemeinsamen Datenbits 0 - 17
verbunden. In ähnlicher Weise sind auch achtzehn Stromquellen 182a - 182L
jeweils mit den gemeinsamen Datenbits 0 - 17 verbunden. Damit ist einzusehen,
daß, wenn irgendwelche der gemeinsamen Datenbits in den sechzehn Registern
gelesen werden, der Strom durch den entsprechenden Endwiderstand 178a - 178L
und die entsprechende Stromquelle 182a - 182L fließt.