-
Die
vorliegende Erfindung betrifft Halbleiterspeicher und insbesondere
einen Datenzugriff in Pipeline-Ausführung in einem Speicher mit
dynamischem wahlfreien Zugriff.
-
HINTERGRUND DER ERFINDUNG
-
In
herkömmlichen
dynamischen Speichern mit wahlfreiem Zugriff (DRAMs), die nicht
in einer Pipeline-Ausführung
sind, wird ein Datentransfer an den und von dem Speicher in einer
Sequenz ausgeführt.
Das heißt,
wenn ein Lese- oder ein Schreibbefehl empfangen wird und eine Adresse
verfügbar
gemacht wird, wird der Datentransfer in Übereinstimmung mit entweder
einem Lese- oder einem Schreibbefehl in seiner Gesamtheit ausgeführt, bevor
ein anderer Befehl von dem Speicher akzeptiert wird. Dies führt dazu,
dass nachfolgende Befehle um die Zeit verzögert werden, die für den Abschluss
des gegenwärtigen
Datentransfers benötigt
wird.
-
Historisch
sind DRAMs durch den Prozessor asynchron gesteuert worden. Dies
bedeutet, dass der Prozessor Adressen auf die DRAM-Eingänge legt
und diese unter Verwendung der Anschlussstifte des Zeilenadressen-Wählsignals
(RAS) und des Spaltenadressen-Wählsignals
(CAS) abgetastet werden. Die
Adressen werden für
eine erforderliche minimale Zeitspanne gehalten. Während dieser
Zeit greift das DRAM auf die adressierten Stellen in dem Speicher
zu und nach einer maximalen Verzögerung (Zugriffszeit)
schreibt es entweder neue Daten von dem Prozessor in seinen Speicher
oder stellt Daten von dem Speicher an seinen Ausgängen, damit
der Prozessor sie liest, bereit.
-
Während dieser
Zeit muss der Prozessor auf das DRAM warten, um verschiedene interne
Funktionen wie eine Vorladung der Leitungen, eine Decodierung der
Adressen und dergleichen auszuführen. Dies
erzeugt einen "Wartezustand", in dem der Prozessor
mit höherer
Geschwindigkeit auf das DRAM wartet, um dadurch zu antworten, was
das gesamte System verlangsamt.
-
Eine
Lösung
für dieses
Problem besteht darin, die Speicherschaltung synchron zu machen,
das heißt,
Eingangs- und Ausgangshaltespeicher auf dem DRAM hinzuzufügen, die
die Daten halten können.
Eingangshaltespeicher können
die Adressen, Daten und Steuersignale auf den Eingängen des DRAMs
speichern, was den Prozessor für
andere Tasks befreit. Nach einer vorgegebenen Anzahl von Taktzyklen
können
die Daten auf den Ausgangshaltespeichern eines DRAM mit einer synchronen
Steuerung für
einen Lesevorgang oder für
eine Einschreibung in seinen Speicher für einen Schreibbetrieb verfügbar sein.
-
Eine
synchrone Steuerung bedeutet, dass das DRAM (der DRAM-Speicher)
Information hält, die
zwischen dem Prozessor und ihm selbst unter der Steuerung des Systemtrakts
transferiert wird. Somit ist ein Vorteil der synchronen DRAMs, dass
der Systemtakt die einzige Timingflanke ist, die an dem Speicher
bereitgestellt werden muss. Dies verringert oder beseitigt eine
Ausbreitung von mehreren Timingabtastvorgängen um die gedruckte Schaltungsplatine herum.
-
Alternativ
kann das DRAM asynchron gemacht werden. Es sei zum Beispiel angenommen, dass
ein DRAM mit einer 60 ns-Verzögerung
von einer Zeilenadressierung auf einen Datenzugriff gerade in einem
System mit einem 10 ns-Takt verwendet wird, wobei der Prozessor
die Zeilenadresse anlegen muss und sie aktiv halten muss, während er
eine Abtastung mit dem (RAS)
Anschlussstift vornimmt. 30 ns später folgt die Spaltenadresse,
die gültig
gehalten und mit dem (CAS)
Anschlussstift abgetastet werden muss. Der Prozessor muss dann darauf
warten, dass die Daten auf den Ausgängen 30 ns später auftreten,
sich stabilisieren und gelesen werden.
-
Andererseits
kann der Prozessor für
eine synchrone Schnittstelle die Zeilen- und Spaltenadressen (und
Steuersignale) in die Eingangshaltespeicher hinein verriegeln und
andere Tasks vornehmen, während
er auf das DRAM zum Ausführen
des Lesebetriebs unter der Steuerung des Systemtakts wartet. Wenn
die Ausgänge
des DRAM sechs Zyklen (60 ns) später
getaktet werden, sind die gewünschten Daten
in den Ausgangshaltespeichern.
-
Eine
synchrone DRAM-Architektur ermöglicht
es auch, die durchschnittliche Zugriffszeit des DRAM durch eine
Pipeline-Verarbeitung der Adressen zu beschleunigen. In diesem Fall
ist es möglich, den
Eingangshaltespeicher zum Speichern der nächsten Adresse bei dem Prozessor
zu verwenden, während
das DRAM gerade auf der vorangehenden Adresse arbeitet. Normalerweise
sind dem Prozessor die Adressen, auf die zugegriffen werden soll, mehrere
Zyklen vorher bekannt. Deshalb kann der Prozessor die zweite Adresse
an den Eingangsadressen-Haltespeicher des DRAMs senden, um verfügbar zu
sein, sobald sich die erste Adresse an die nächste Stufe der Verarbeitung
in dem DRAM bewegt hat. Dies beseitigt die Notwendigkeit, dass der Prozessor
auf einen vollen Zugriffszyklus wartet, bevor der nächste Zugriff
auf das DRAM gestartet wird.
-
Ein
Beispiel einer dreistufigen Spaltenadressen-Pipeline ist in dem
schematischen Diagramm der 1(a) gezeigt.
Der Spaltenadressen-Zu-Ausgang-Teil ist eine dreistufige Pipeline.
Der Adressenpuffer ist der erste Haltespeicher. Der Spaltenschalter
ist der zweite Haltespeicher und der Ausgangspuffer ist der dritte
Haltespeicher. Die Latenz, die eigentümlich in der Spaltenzugriffszeit
ist, wird deshalb zwischen diesen drei Stufen aufgeteilt.
-
Der
Betrieb des Pipeline-Lesevorgangs kann wie folgt erläutert werden:
Eine Spaltenadresse (A1) wird in einen Adressenpuffer hinein bei
einem Taktzyklus getaktet und wird decodiert. Bei dem zweiten Taktzyklus
transferiert der Spaltenschalter entsprechende Daten (D1) von dem
Leseverstärker
and den Lesebus und eine Spaltenadresse (A2) wird in den Adressenpuffer
hinein getaktet. Bei einem Takt Drei werden die Daten (D1) in den
Ausgangspuffer getaktet (D2) wird an den Lesebus transferiert und
eine Adresse A3 wird in den Spaltenadressenpuffer getaktet. Wenn
D1 auf dem Ausgang erscheint, sind D2 und D3 in der Pipeline dahinter.
Für eine
ausführlichere
Diskussion der gegenwärtigen
Technologie sei der Leser auf das Buch mit dem Titel (High Performance
Memories) von Betty Prince verwiesen.
-
Die
Verzögerung
in der Anzahl von Taktzyklen zwischen der Verriegelung von CAS in
einem SDRAM und die Verfügbarkeit
des Datenbusses ist die "CAS-Latenz" des SDRAM. Wenn
die Ausgangsdaten durch die zweite führende Flanke des Takts nach
der Ankunft einer Spaltenadresse verfügbar sind, wird die Einrichtung
so beschrieben, dass sie eine CAS-Latenz von Zwei aufweist. In ähnlicher Weise,
wenn die Daten bei der dritten führenden Flanke
des Takts nach der Ankunft des ersten Lesebefehls verfügbar sind,
ist die Einrichtung bekannt, dass sie eine "CAS-Latenz" von Drei aufweist.
-
Synchrone
DRAMs (SDRAM) kommen mit programmierbaren CAS-Latenzen. Wie voranstehend
beschrieben, bestimmt die CAS-Latenz, an welcher Taktflanke zyklische
Daten verfügbar
sein werden, nachdem ein Lesebefehl initiiert wird, und zwar unabhängig von
der Taktrate (CLK). Die programmierbaren CAS-Latenzen erlauben,
dass SDRAMs in unterschiedlichen Speichersystemen mit unterschiedlichen
Systemtaktfrequenzen effizient verwendet werden können.
-
Es
gibt andere Vorgehensweisen, um einen SDRAM-Datenpfad in Latenzstufen
aufzuteilen. Eine Wellen-Pipeline ist schematisch in 1(b) gezeigt. Eine reguläre getaktete
Pipeline weist den Nachteil auf, dass die Leselatenz gleich zu der
Verzögerung der
langsamsten Pipeline-Stufe (d.h. der längsten Verzögerung) multipliziert mit der
Anzahl von Pipeline-Stufen sein wird. Eine getaktete Pipeline mit
eingestellten Takten verwendet Taktsignale, die auf jede Pipeline-Stufe
eingestellt worden sind, so dass längere Pipeline-Stufen ohne
Einwirkung auf die Leselatenz untergebracht werden können. Eine
längere Pipeline-Stufe
wird mit einem Takt beendet, der mehr verzögert als der Takt ist, der
die Pipeline-Stufe startet. Eine kürzere Pipeline-Stufe wird mit
einem Takt gestartet, der mehr verzögert ist als der Takt, der
die Pipeline-Stufe beendet. Der Nachteil von dieser Vorgehensweise
besteht darin, dass unterschiedliche Einstellungen an dem Takt für jede CAS-Latenz,
die durch den Chip unterstützt
wird, benötigt
werden. Auch Architekturänderungen
können
einen großen Einfluss
auf den Zusammenbruch der Latenzstufen haben, was erfordert, dass
Entwickler sämtliche
Takte neu einstellen, um die neue Aufteilung von Latenzstufen unterzubringen.
-
Ferner
gibt es eine begrenzte Anzahl von Stellen, wo eine Latenzstufe eingefügt werden
kann, ohne eine zusätzliche
Latenz oder eine Chipfläche hinzuzufügen. Mehrere
Latenzstufen weisen einen Nachteil dahingehend auf, dass nicht sämtliche
Latenzstufen gleich in der Zeit sein werden, die benötigt wird,
dass sich Signale durch die Stufe ausbreiten. Eine andere Komplikation
ist die Notwendigkeit, Latenzstufen in Abhängigkeit von der CAS-Latenz,
bei der der Chip für
einen Betrieb programmiert worden ist, zu aktivieren oder zu deaktivieren.
-
In
einer Wellen-Pipeline in der 1(b) laufen
Impulse von Daten durch den gesamten Lesedatenpfad. Eine Wellen-Pipeline
stützt
sich auf eine ideale Datenpfadlänge,
das heißt,
sie nimmt an, dass sämtliche
Datenpfade gleich sind. Jedoch werden Daten, die aus bestimmten
Speicherzellen in einem Speicherfeld ausgelesen werden, inhärent schneller als
Daten sein, die aus anderen Speicherzellen ausgelesen werden. Dies
ist hauptsächlich
die Folge des physikalischen Orts der Speicherzellen relativ sowohl zu
dem Einlese- als auch Auslesedatenpfad. Somit müssen Daten neu synchronisiert
werden, bevor sie von dem Chip ausgegeben werden. Diese Datenpfad-Verschiebung
macht es schwierig, die ausgelesenen Daten in einer Wellen-Pipeline-Implementierung
neu zu synchronisieren.
-
Wenn
Adressensignale auf einen Datenpfad mit einer Zykluszeit angewendet
werden, die Speicherzugriffszeit übersteigt, dann werden die
Daten, die aus dem Speicher ausgelesen werden, nicht während der
inhärenten
Verzögerung
des Speicherkerns ausgegeben. Mit anderen Worten, in der Wellen-Pipeline-Technik
werden Adresseneingangssignale mit einer Periode angewendet, die
kleiner als der kritische Pfad des Speicherkernabschnitts ist.
-
Ferner,
wie in den 2(a) und 2(b) mit
einem langsamen Takt dargestellt, ist es erforderlich, die Ausgangsdaten
der Wellen-Pipeline zu speichern, bis die Daten benötigt werden.
-
Ein
Artikel von Mehrdad Heshami et al. mit dem Titel "A 250 MHz Skewed-Clock
Pipelined Data Buffer" (IEEE
Journal of Solid State Circuits, vol. 31, Nr. 3, 1. März 1996,
Seiten 376-383) offenbart ein SDRAM mit einem Speicher mit adressierbaren
Speicherelementen und einem Adresseneingangsanschluss und einem
I/O-Datenausgangsanschluss; einem Datenlesepfad, der zwischen dem
Adresseneingangsanschluss und dem I/O-Datenausgangsanschluss definiert
ist, wobei der Lesepfad wenigstens eine Pipeline-Stufe einschließt, wobei
die oder jede Pipeline-Stufe Haltespeicher einschließt, die
auf ein entsprechendes asynchrones Steuersignal reagieren; Verzögerungselementen,
die zu der oder jeder Pipeline-Stufe zum Erzeugen des asynchronen
Steuersignals als verzögerte
Versionen eines Systemtakts.
-
Die
EP 704848 offenbart eine ähnliche
Anordnung.
-
Die
US 5835443 offenbart ein
synchrones DRAM mit einem Pipeline-Betrieb und eine Synchronisationsschaltung,
die mit dem I/O-Anschluss zum Synchronisieren der Ausgangsdaten
auf einen Systemtakt gekoppelt ist.
-
ZUSAMMENFASSUNG
DER ERFINDUNG
-
Die
vorliegende Erfindung zielt somit darauf ab, wenigstens einige der
verschiedenen Nachteile, die im Hinblick auf den gegenwärtigen Stand
der Technik beschrieben wurden, zu beseitigen.
-
Die
vorliegende Erfindung stellt einen synchronen dynamischen Speicher
mit wahlfreiem Zugriff in Pipeline-Ausführung bereit, umfassend: einen Adresseneingangsport;
einen Speicherkern mit adressierbaren Speicherelementen; ein I/O-Datenausgangsport;
Datenlesepfad, der zwischen dem Adresseneingangsport und dem I/O-Datenausgangsport
definiert ist, wobei der Lesepfad eine Vielzahl von Pipeline-Stufen
einschließt,
wobei jede Pipeline-Stufe Haltespeicher einschließt, die
auf ein entsprechendes asynchrones Steuersignal ansprechen; und
ein Verzögerungselement,
das zu jeder Pipeline-Stufe gehört,
zum Erzeugen der entsprechenden asynchronen Steuersignale als verzögerte Versionen eines
Systemtakts, dadurch gekennzeichnet, dass ein erstes Verzögerungselement
angeordnet ist, um das Steuersignal auf Grundlage des Systemtakts
zu erzeugen, nachfolgende Verzögerungselemente
in der Pipeline angeordnet sind, um die Steuersignale unter Verwendung
der Steuersignale zu erzeugen, die durch ein vorangehendes Verzögerungselement in
der Pipeline erzeugt werden, und jedes der Verzögerungselemente eine Latenz
entsprechend zu einer Latenz von seiner zughörigen Pipeline-Stufe aufweist,
sodass die Pipeline-Stufen, die durch Steuersignale gesteuert werden,
die durch nachfolgende Verzögerungselemente
erzeugt werden, asynchron zu dem Systemtakt gesteuert werden.
-
Die
vorliegende Erfindung stellt auch ein Verfahren bereit, um einen
synchronen dynamischen Speicher mit wahlfreiem Zugriff in eine Pipeline-Ausführung zu
bringen, wobei das Verfahren die folgenden Schritte umfasst: Definieren
eines Lesepfads zwischen einem Adresseneingangsport und einem I/O-Datenport
eines Speicherkerns mit adressierbaren Speicherelementen, wobei
der Pfad ein oder mehrere Pipeline-Stufen einschließt; Halten
von Daten von dem I/O-Datenport im Ansprechen auf einen Systemtakt;
Erzeugen von asynchronen Steuersignalen aus einem Mastersteuersignal;
und Steuern der Pipeline-Stufen mit den asynchronen Steuersignalen;
dadurch gekennzeichnet, dass jedes der asynchronen Steuersignale
durch Verzögern
eines Steuersignals, das von einer vorangehenden Pipeline-Stufe
empfangen wird, in Übereinstimmung
mit einer Latenz einer zugehörigen
der Pipeline-Stufen erzeugt wird, und die Pipeline-Stufen unter Verwendung
der asynchronen Steuersignale derart gesteuert werden, dass Daten,
die in jeder der Pipeline-Stufen gehalten werden, asynchron zu dem
Systemtakt zeitlich eingestellt werden.
-
In Übereinstimmung
mit einer Ausführungsform
dieser Erfindung werden die asynchronen Steuersignale innerhalb
des Chips erzeugt und auf die unterschiedlichen Latenzstufen optimiert.
-
In
einer Ausführungsform
der Erfindung sind die Stufen asynchron zu dem Systemtakt, wodurch ermöglicht wird,
dass der Lesedatenpfad bei irgendeiner CAS-Latenz laufengelassen
wird, die durch einen geeigneten Resynchronisationsausgang unterstützt werden
kann.
-
Eine
weitere Ausführungsform
der Erfindung sieht eine Synchronisationsschaltung vor, die mit dem
Ende des Lesedatenpfads gekoppelt ist, um die Ausgangsdaten auf
einen Systemtakt zu synchronisieren.
-
KURZBESCHREIBUNG
DER ZEICHNUNGEN
-
Ein
besseres Verständnis
der Erfindung lässt sich
durch Bezugnahme auf die ausführliche
nachstehende Beschreibung in Verbindung mit den beiliegenden Zeichnungen
erhalten. In den Zeichnungen zeigen:
-
1(a) ein schematisches Diagramm einer herkömmlichen
getakteten Pipeline-Speicherschaltung;
-
1(b) ein schematisches Diagramm einer herkömmlichen
Wellen-Pipeline-Speicherschaltung;
-
2(a) und 2(b) Timing-Wellenformen
für ein
SDRAM mit einer CAS-Latenz von 3, das unter schnellen bzw. langsamen
Taktbedingungen läuft;
-
3 ein
schematisches Diagramm einer verallgemeinerten Ausführungsform
der vorliegenden Erfindung;
-
4(a) und 4(b) ausführlichere
schematische Diagramme der verallgemeinerten Ausführungsform
der 3;
-
5 ein
Timing-Wellenformdiagramm gemäß einer
ersten Ausführungsform
der vorliegenden Erfindung;
-
6(a), 6a'), 6(a''), 6(a''), 6(b) und 6(c) ausführliche
Schaltbilder einer Pipeline-Steuerschaltung gemäß einer
Ausführungsform
der vorliegenden Erfindung;
-
7(a), 7(a'), 7(a''), 7(b), 7(b') und 7(e) ausführliche Schaltbilder für einen
Pipeline-Haltespeicher
und einen Datenausgangs-Haltespeicher gemäß einer Ausführungsform
der vorliegenden Erfindung; und
-
8 ein
schematisches Diagramm einer Datenausgangs-Steuerschaltung gemäß einer
Ausführungsform
der vorliegenden Erfindung.
-
AUSFÜHRLICHE
BESCHREIBUNG VON BEVORZUGTEN AUSFÜHRUNGSFORMEN
-
In
der folgenden Diskussion bezeichnen gleiche Bezugszeichen gleiche
Elemente in den Figuren und Signale, die tiefgestellt sind, werden
austauschbar mit einem x oder einem Überstrich, der zu dem entsprechenden
Signalnamen gehört,
gekennzeichnet. Bezugnehmend nun auf 3 ist ein
schematisches Diagramm eines Halbleiterspeichers in Pipeline-Ausführung gemäß einer
verallgemeinerten Ausführungsform
der Erfindung allgemein mit dem Bezugszeichen 20 gezeigt.
Der Speicher umfasst ein Kernspeicherfeld 22 mit einem
Lesepfad 24, der zwischen einem Adresseneingangsport 25 und
einem Datenausgang 32 definiert ist. Der Lesepfad 24 ist
in Latenzstufen 27 aufgeteilt, von denen jede durch jeweilige
asynchrone Steuersignale 28 verriegelt bzw. gehalten wird.
Eine Synchronisationsschaltung 30 ist mit der letzten Latenzstufe
des Lesepfads gekoppelt, um die Daten auf den Systemtakt CLK bei
dem Ausgang 32 des Lesepfads zu resynchronisieren. Die Daten
werden auf dem Systemtakt CLK zu einer vorgegebenen Anzahl von Taktzyklen
nach der Anlegung eines Adressensignals A an den Adresseneingang 25,
d.h. in Abhängigkeit
von der CAS-Latenz des Systems, synchronisiert. Die Segmentierung
des Lesepfads 24 in die drei hauptsächlichen Latenzstufen, die
jeweils durch jeweilige Steuersignale 28 gesteuert werden,
illustriert im Allgemeinen das Kombinieren der getakteten Techniken
und der Wellen-Pipeline-Techniken,
um eine asynchrone Pipeline-Implementierung gemäß einer Ausführungsform der
Erfindung zu erreichen, die eine geringere Verschiebung als eine
herkömmliche
Wellen-Pipeline aufzeigt, die aber einen Betrieb mit irgendeiner CAS-Latenz
erlaubt, ohne dass individuelle Takte in jeder Stufe eingestellt
werden müssen,
so wie dies in einer getakteten Pipeline-Implementierung benötigt werden
würde.
Die Beschreibung im Hinblick auf die 3 dient
dazu, um einen Überblick
der nachstehend diskutierten ausführlichen Schaltungen bereitzustellen.
-
Somit
wird unter Bezugnahme auf 4 ein ausführliches
schematisches Diagramm der verallgemeinerten Ausführungsform
der 3 mit dem Bezugszeichen 40 gezeigt. Die
Latenzstufen 27 in 3 umfassen
einen Adresseneingangs-Haltespeicher 42 zum Empfangen eines
Adressensignals A0 and dem Adresseneingangsport 25,
dessen Ausgang mit einem Adressenvordecoder-Haltespeicher 44 gekoppelt
ist, der wiederum mit einem Spaltenadressen-Decoderhaltespeicher 46 verbunden
ist. Der Spaltenadressen-Decoderhaltespeicher 46 decodiert das
Adressensignal und ist gekoppelt, um Speicherzellen 48 in
dem Speicherzellenfeld 22 zu wählen. Der Spaltenadressen-Decoder 46 aktiviert
relevante Leseverstärker
(nicht gezeigt) zum Erfassen der Daten, die aus einer gewählten Speicherzelle 48 ausgelesen
werden. Der Ausgang der Leseverstärker ist mit einem Lesehauptverstärkerblock 50 über einen lokalen
Datenbus DB gekoppelt, der in dieser Ausführungsform 32-Bits breit ist.
Der Ausgang des Lesehauptverstärkers 50 ist
mit einem globalen Datenbus GDB gekoppelt. Ein Multiplexer 52 multiplexiert den
GDB auf einen I/O-Datenbus
IODB, der wiederum mit einem Lesedatenbusverstärker RDBAMP Haltespeicherblock 54 gekoppelt
ist.
-
Die
Synchronisationsschaltung 30 der 3 umfasst
Pipe-Haltespeicher 56, einen Ausgangspuffer 58 und
eine Steuerschaltungsanordnung, die mit einem Block 61 gezeigt
ist. Insbesondere wird der Ausgang von dem RDBAMP-Haltespeicher
selektiv an den Eingang von drei Pipe-Haltespeichern Pipe_Latch0,
Pipe_Latch1 und Pipe_Latch2 gekoppelt, wie nachstehend diskutiert
werden wird. Die Ausgänge
von den Pipe-Haltespeichern sind zusammengeschaltet und mit dem
Eingang des Ausgangspuffers 58 gekoppelt.
-
Der
Speicher umfasst auch eine Befehls-Haltespeicherschaltung 62 mit
einem Takteingangsanschluss, der mit dem Systemtakt CLK gekoppelt
ist, und einem Befehlseingangsanschluss zum Empfangen von Befehlssignalen
wie RAS, CAS, CS.
Der Befehls-Haltespeicher 62 stellt ein erstes Steuersignal 64 bereit,
welches durch eine Reihe von Steuerlogik- und Verzögerungselementen
T1 bis T4 geführt
wird. Die Verzögerungselemente
T1, T2, 73 und T4 erzeugen jeweils jeweilige verzögerte Steuersignale,
die an einen Eingangshaltespeicheranschluss des Vordecoder-Haltespeichers 44,
des Y-Decoders 46,
des RMA 50 bzs. des RDBAMP-Haltespeichers 54 geführt werden.
Diese Signale dienen als individuelle asynchrone Steuersignale für diese Schaltungen.
Andererseits wird der Adressenhaltespeicher-Takteingang direkt von dem Systemtaktsignal
CLK abgeleitet.
-
Eine
Steuerung der Pipe-Haltespeicher Pipe_Latch0, Pipe_Latch1 und Pipe_Latch2
wird durch die Pipe-Haltespeicher-Steueranordnung 61 bereitgestellt.
Jeder Pipe-Haltespeicher wird Pipe-Haltespeicher-Freigabesignal Latch_enx(0), Latch_enx(1)
und Latch_enx(2) angesteuert, das mit einem Haltespeichereingangs-Freigabesignal
gekoppelt ist. Die Pipe-Haltespeicher-Freigabesignale werden von
einem Pipe-Zähler 64 abgeleitet,
der drei Zählsignale
COUNT erzeugt. Der Pipe-Zähler
ist ein freilaufender Zähler,
der seinen Zählwert
auf Grundlage der Gesamtanzahl von Pipe-Haltespeichern nach einer
voreingestellten Anzahl von Taktzählungen, eingestellt durch
das Systemtaktsignal, das mit dem Pipe-Zähler-Takteingangsanschluss
gekoppelt ist, zurücksetzt.
Die COUNT-Ausgangssignale von dem PIPE- Zähler
werden über
Zählverzögerungselemente 66 an
Zählsynchronisations-Haltespeicher 68 gekoppelt.
Die Ausgänge
von den drei Haltespeichern 68 stellen das Pipe-Haltespeicher-Freigabesignal
für eine
Taklung des geeigneten Pipe-Haltespeichers 56 bereit. Der
Takteingangs-Freigabeanschluss der Haltespeicher 68 ist
mit dem asynchronen Steuersignal der Latenzstufe in dem Lesepfad,
in diesem Fall, dem Signal IODB_READX des RDBAMP 54 gekoppelt,
um sicherzustellen, dass der Pipe-Haltespeicher zu der richtigen
Zeit verriegelt wird.
-
Alternativ
kann eine genauere Synchronisation der Daten IODB_READX und der
CNT_DEL-Signale
in dem Haltespeicher 68 wie folgt erreicht werden:
Die
Zählverzögerungs-Schaltungsanordnung 66 könnte in
mehrere Verzögerungsstufen,
die jeweils Steuerlogik-Freigabesignale wie YSG oder Y_EXTRD empfangen,
segmentiert werden. Die Timing-Beziehung zwischen der Adressenausbreitung und
der Datenauslesung und der Taktzählverzögerung würden deshalb
enger angepasst sein.
-
Zusätzlich ist
der Ausgang COUNT des Pipe-Zählers 64 mit
einem Pipe-Verzögerungselement 70 zum
Erzeugen eines Pipe-Haltespeicher-Ausgangsfreigabesignals QEN_RISEX
verbunden, das mit dem jeweiligen Ausgangsfreigabeanschluss der Pipe-Haltespeicher 56 verbunden
ist. Ein CLK_IO-Signal, welches DLL erzeugt ist und dem Systemtakt CLK
geringfügig
vorausläuft,
wird mit einem Ausgangsfreigabeanschluss der Pipe-Verzögerung und des
Ausgangspuffers 58 gekoppelt. Die DLL (Verzögerungsregelschleife)
stellt sicher, dass CLK_IO den Ausgangspuffer freigeben wird, um
Daten zu der Systemtaktflanke richtig zu synchronisieren.
-
Der
Betrieb der Schaltung wird wie folgt unter Bezugnahme auf das in 5 gezeigte
Timing-Diagramm
erläutert.
Zur Zeit t0 des Systemtaktsignals CLK verriegelt
der Adressen-Haltespeicher 42 das externe Adressensignal
Ai, das dann frei ist, um sich an den Vordecoder-Haltespeicher 44 auszubreiten, der
die Adresse nach einer durch das Verzögerungselement T1 eingestellten
Verzögerung
T1 verriegelt. Diese Adressensignale werden in den Y-Decoder 46 decodiert
und durch das Signal YSG, das von CLK durch T1 und T2 verzögert ist,
verriegelt. Zu dieser Zeit werden die geeigneten Spalten aktiviert
und Daten werden aus den Speicherzellen in Spaltenleseverstärker ausgelesen
und dann in dem RMA 50 durch das IOREAD-Signal, das von CLK durch T1 + T2 +
T3 verzögert
ist, verriegelt. Kurz danach sind die Daten auf dem globalen Datenbus
GDB verfügbar. Der
RDBAMP 54 kann nun zu der Zeit t1 durch
das Signal IODB_READ, das von IOREAD durch T4 verzögert ist,
verriegelt werden, um das DOUTE-Signal bereitzustellen.
-
Im
Allgemeinen werden wie voranstehend beschrieben diese asynchronen
Steuersignale verwendet, um die Pipeline-Stufen zu steuern. Diese
Signale steuern, wann Daten in den Haltespeicher (gewöhnlicher
Weise einen verriegelten Verstärker)
gelesen werden. Sobald die Daten in den Haltespeicher gelesen sind,
sind die Daten frei, um sich in Richtung auf die nächste Stufe
hin auszubreiten. Jedes Steuersignal wird durch Verzögern des
Steuersignals von der vorangehenden Latenzstufe erzeugt. Die erste Stufe
wird durch den externen Takt CLK gestartet. Die nächste Stufe
wird Daten von der vorangehenden Stufe bei dem Steuersignal verriegeln,
das von dem externen Takt verzögert
ist. Es sei darauf hingewiesen, dass einige von diesen Verzögerungen
in den Schaltungen, die verwendet werden, um zu steuern, ob ein
Lesevorgang stattfinden muss, inhärent sind, während einige
der Verzögerungen
absichtlich unter Verwendung von Timing-Verzögerungselementen hinzugefügt werden.
Diese umfassen gewöhnlicher Weise
Puffer, die so bemessen sind, dass sie langsam laufen und die zusätzliche
widerstandsbehaftete oder kapazitätsbehaftete Elemente einschließen können.
-
Somit
können
die Verzögerungen
T1 bis T4 auf den bestimmten Speicher unabhängig von dem externen Takt-Timing
optimiert werden. Die Verzögerung
für jeden
von diesen Haltespeichern wird gewählt, um die Ausbreitungsverzögerungen
zwischen diesen Blöcken
aufzunehmen. Somit wird das Taktsignal, das an den Lesehauptverstärker-Haltespeicher angelegt
wird, synchronisiert und von dem Taktsignal, das an den Spaltendecoder-Haltespeicher
angelegt wird, verzögert,
um das Nachhinken beim Zurückgewinnen
von Daten aus unterschiedlichen Gebieten des Speicherfelds 22 an
den Lesehauptverstärker 50 unterzubringen.
-
Die
Daten müssen,
sobald sie in dem RDBAMP 54 zur Zeit t1 gehalten
werden, wie bei den herkömmlichen
Wellen-Pipelines auf den Systemtakt CLK an dem Ausgang 32 des
Speichers neu synchronisiert werden. Dies wird wie folgt erreicht.
Die Pipe-Haltespeicher 56 ermöglichen, dass Daten für den Fall
von schnellen Daten oder einen langsamen Takt gespeichert werden.
Im Allgemeinen ist die Anzahl von Haltespeichern, die benötigt werden, äquivalent
zu der Anzahl von Latenzstufen, die unterstützt werden sollen. Jedes Mal,
wenn ein Lesevorgang ausgeführt
wird, wird ein COUNT-Signal, wobei eines von diesen in 5 gezeigt
ist, asynchron durch das Zählverzögerungselement 66 verzögert und
durch das Steuersignal für
die letzte Stufe in diesem Fall IODB_READ in
einen Taktsynchronisations-Haltespeicher 68 getaktet.
Dieses zeitverzögerte COUNT-Signal
erzeugt LATCH_EN, was bestimmt, in
welchem der Haltespeicher 56 die Daten von dem RDBAMP 54 gespeichert
werden sollen. Ferner wird das COUNT-Signal auch durch die geeignete
Anzahl von Taktzyklen verzögert,
wie durch die gegenwärtige
CAS-Latenz bestimmt, auf die der Chip programmiert ist. Dieses im
Takt verzögerte
COUNT-Signal, das als QEN_RISE in 5 gezeigt
ist, steuert, welcher Ausgang von den Haltespeichern 56 freigegeben
wird, um Daten an den Ausgangspuffer 58 auszugeben. Sobald
COUNT gesetzt worden ist, nach der Verzögerung durch die Zählverzögerungs-Schaltungsanordnung 66,
wird ein CNT_DEL-Signal erzeugt, das in dem Taktsynchronisations-Haltespeicher 68 mit
dem IODB_READX-Signal kombiniert wird, um das LATCH_ENX-Signal zu
erzeugen. Nach der vorgegebenen Taktverzögerung in der Pipe-Verzögerungsschaltung
wird QEN_RISEX bereitgestellt, was einen Ausgang von dem Haltespeicher
erlaubt, der die Daten für
den geeigneten Taktzyklus enthält. Die
Haltespeicher 56 arbeiten als ein FIFO-Register, wobei die ersten Daten, die
einem des Satzes von Haltespeichern 56 eingegeben werden,
die ersten Daten sind, die von dem Satz von Haltespeichern ausgegeben
werden sollen.
-
Somit
lässt sich
aus der obigen Beschreibung ersehen, dass die Haltespeicher in dem
Lesepfad den Pfad in Latenzstufen einer asynchronen Pipeline segmentieren.
Die Chiparchitektur und die maximale Betriebsfrequenz bestimmen
die Anzahl und die Anordnung von diesen Stufen. Im Allgemeinen wird
eine höhere
Betriebsfrequenz eine größere Anzahl
von kürzeren
Pipeline-Stufen erfordern. Andere Techniken können verwendet werden, wie
eine Verdopplung der Anzahl von Datenpfaden in einer Stufe und das
Abwechseln zwischen den Datenpfaden. Zum Beispiel wird ein Leseausgang
von den Leseverstärkern
zwischen zwei Datenbussen abgewechselt. Dies ist in dem Mosaid-Patent
Nr. 5.416.743 beschrieben. Die Anordnung der Stufen wird im Allgemeinen
durch die Position der Verstärker oder
Puffer vorgegeben, die im Haltespeicher umgewandelt werden können, ohne
zu einer extensiven Flächenbelegung
zu führen.
Zur Klarheit beziehen sich in der voranstehenden und der folgenden
Diskussion Latenzstufen auf irgendein Schaltungselement, das in
der Lage ist, in dem Signal- oder Datenpfad eine Verzögerung einzuführen.
-
Nun
wird auf die 6 bis 8 Bezug
genommen. Dort ist eine ausführliche
Implementierung der verallgemeinerten Ausführungsform der 4 gezeigt.
Bezugnehmend auf die 6a umfasst die Pipe-Steuerschaltungsanordnung
demzufolge einen Pipe-Zähler 90,
wobei ein ausführliches
Schaltbild davon in 6b gezeigt ist, um einen zweistelligen Binärzählwert COUNT
0 und COUNT 1 zu erzeugen, der durch die Eingangssystemtaktfrequenz
an seinem Takteingangsanschluss CLK bestimmt wird. Jede der Zählleitungen,
COUNT 1 und COUNT 0, sind mit jeweiligen Zählverzögerungselementen 92 und 94 verbunden.
Die verzögerten
Zählsignale
sind mit einem Zähldecoder 96 verbunden,
der den Eingangsbinär-Zählwert decodiert, um eine der
drei Zählverzögerungsleitungen 98,
CNT0_DEL, CNT1_DEL, CNT2_DEL zu aktivieren. Die Signale auf diesen
verzögerten
Zählleitungen 98 entsprechen
dem COUNT-Signal,
wie in 5 gezeigt. In 5 wurden
sämtliche
Elemente mit nur einer der drei Komponenten zur Vereinfachung gezeigt,
mit Ausnahme der drei Pipe-Haltespeicher. Die verzögerten COUNT-Signale 98 sind
mit den Eingängen von
jeweiligen getakteten Haltespeichern 100 gekoppelt, deren
Ausgänge
gepuffert sind und das jeweilige Haltespeicher-Freigabesignal bereitstellen,
auf das in 5 Bezug genommen wird, LATCH_ENX(0),
LATCH_ENX(1), LATCH_EN(2). Der Takteingangsanschluss von diesen
Haltespeichern 100 wird mit dem IODB_READX asynchronen Steuersignal von
der letzten Latenzstufe über
einen Inverter gekoppelt.
-
Der
Ausgang des Pipe-Zählers 90 ist
ebenfalls mit einem zweiten Decoder 102 verbunden, der ebenfalls
jeweilige Zählsignale
CNT 0, CNT 1 und CNT 2 bereitstellt, die mit jeweiligen Pipe-Verzögerungselementen 104, 106 und 108 gekoppelt
sind. Ein ausführliches
Schaltungsdiagramm der Pipe-Verzögerungsschaltung-Implementierung
ist in 6c gezeigt. Der Ausgang der
Pipe-Verzögerung
wird durch ein CLK_IO-Signal gesteuert und erzeugt das QEN_RISE-Signal, auf das in 5 Bezug
genommen wird und das mit der Ausgangshaltespeicher-Freigabe der
Pipe-Haltespeicher 56 verbunden ist. Entsprechende QEN_FALL-Signale werden für die abfallende
Flanke des Systemtakts erzeugt, wohingegen QEN_RISE der ansteigenden Flanke des Systemtakts
entspricht.
-
Bezugnehmend
auf die 7a und 7b ist
eine ausführliche
schematische Darstellung der Pipe-Haltespeicher 56 und der Ausgangspuffer-Schaltungsanordnung
gezeigt. Wie sich der 7a entnehmen lässt, werden
die Datenbits von dem IODB-Datenbus an dem Eingang der RDB-Verstärker 110 empfangen.
Zwei RDBAMPS sind in dieser Implementierung gezeigt, und zwar wegen
der doppelten Datenrate (DDR), wobei Daten sowohl an den Anstiegs-
als auch Abfallflanken des Systemtakts getaktet werden. Die Ausgänge von
dem RDBAMPS sind mit einer Reihe von sechs Pipe-Haltespeichern 112 bis 122 verbunden.
Sechs Haltespeicher werden anstelle von drei als Folge der DDR-Implementierung
benötigt.
Die Freigabeeingänge
der Pipe-Haltespeicher 112 bis 122 sind mit den
jeweiligen Haltespeicher-Freigabesignalen
gekoppelt, die von der Schaltung der 6a abgeleitet
werden. Die oberen drei Pipe-Haltespeicher 112 bis 116 haben ihre
Ausgänge
mit Eingängen
von 3 ODER 2 NAND Gatters 124 verbunden. In ähnlicher
Weise sind die Ausgänge
der unteren drei Haltespeicher 118 bis 122 mit
einem 3 ODER 2 NAND Gatter 126 verbunden. Das QEN_RISE-Signal ist mit den Eingängen des
3 ODER 2 NAND Gatters 124 verbunden, dessen Ausgang dann,
wenn er freigegeben wird, Daten an den DOUT_RISE, DOUT_RISEX-Eingang
des in 7b gezeigten Ausgangspuffers
koppelt. Wie ebenfalls in 7a ersichtlich,
wird ein Systemtakt-Steuersignal EDGE zum Richten von Daten an die
oberen drei oder die unteren drei Haltespeicher bereitgestellt, nochmals
ein DDR Merkmal. Ferner werden für
einen schnellen Systemtakt relativ zu der Geschwindigkeit des Datenpfads
die 3 ODER 2 NAND Gatter 124 oder 126 bereits
ein sein, so dass ermöglicht
wird, dass Daten zu dem Ausgangspuffer von den Pipe-Haltespeichern durchgehen.
In einer Alternative, mit einem langsamen Takt, empfängt das
System die Daten und wartet auf den Takt, so dass die 3 ODER 2 NAND
Gatter 124 oder 126 verwendet werden. Zurückkehrend
zur 7b ist der Datenausgangspuffer 58, wie
in 4 gezeigt, aus Datenausgangs-Haltespeichern 130 bis 136 gebildet.
Die Eingangsfreigabeanschlüsse
der Datenausgangs-Haltespeicher 130 bis 136 sind
mit dem CLK_IO-Signal zum Synchronisieren auf die richtige Systemtaktflanke
gekoppelt. Eine ausführliche
Schaltungsimplementierung der Pipe-Haltespeicher 112 bis 122 ist
in 7c gezeigt.
-
Somit
lässt sich
ersehen, dass die vorliegende Erfindung ein flexibles Verfahren
zum Implementieren eines Halbleiterspeichers in Pipeline-Ausführung bereitstellt,
der leicht sowohl einen langsamen als auch einen schnellen Systemtakt
aufnehmen kann. Ferner erlaubt die flexible Konstruktion eine weitere
Segmentierung des Lesepfads für
eine genauere Anpassung von internen Signalen. Ferner können verschiedene
CAS-Latenzen einfach dadurch aufgenommen werden, dass der Ausgang
von dem Pipe-Verzögerungselement 70 in 4a verzögert wird,
um auf eine spezifische Anzahl von Taktzyklen zu warten, bevor die
Daten herausgetaktet werden.