-
Diese Anmeldung nimmt die Priorität der Provisional
patent application mit dem Titel "Device timing compensation", laufende Nummer
60/061,769 und mit dem Anmeldetag 10. Oktober 1997 in Anspruch.
-
Hintergrund der Erfindung
-
Gebiet der Erfindung
-
Diese Erfindung betrifft im Allgemeinen
digitale elektronische Systeme. Insbesondere betrifft diese Erfindung
Techniken zum effizienten Übertragen
von Informationen in digitalen elektronischen Systemen.
-
Beschreibung
des Standes der Technik
-
In einem digitalen elektronisches
System aus mehreren Vorrichtungen kann es mehrere Master- und Slavevorrichtungen
geben, die durch eine Verbindungsstruktur miteinander verbunden
sind, wie es in 1 gezeigt
ist. Leitungen zwischen den Komponenten bilden die Verbindung. Eine Übertragung
von Informationen über
die Verbindung tritt zwischen einem Sender und einem Empfänger auf,
wobei die Master- oder Slavekomponente sowohl als Sender als auch
als Empfänger
agieren kann.
-
Besonders interessant ist der Fall,
in dem der Slave eine Speichervorrichtung ist und es einen einzigen Master
gibt, wie es in 2 gezeigt
ist. Wegen des häufigen
Auftretens von Leseoperationen bei herkömmlichem Speicherzugriffsverkehr
ist ein wichtiger Fall die Übertragung
von Steuerinformationen vom Master zum Slave und die Antwortübertragung
von ausgelesenen Daten von dem Slave zum Master. Die Hin- und Rückübertragungsverzögerung bildet
die Ausleselatenz.
-
In einem Pipelinesystem wird die
Gesamtverzögerung
zum Durchführen
einer Operation in Taktzyklen aufgeteilt, indem der gesamte Datenweg
in separate Pipelinestufen aufgeteilt wird. In einem Pipelinespeichersystem
wird eine gesamte Ausleselatenz auch in Taktzyklen aufgeteilt. Mit
der Zunahme der Betriebsfrequenz treten Verzögerungsvariationen sowohl von
der Verbindung als auch von den Komponen ten auf. Diese Verzögerungsvariationen
können
logische Konflikte zwischen Vorrichtungen verursachen, die die Betriebspipeline weniger
effizient machen. Es ist somit wünschenswert,
diese Zeitvariationen zu kompensieren, die abhängig von der Position der Speicherteile
auf dem Kanal und von internen Verzögerungen in den Speichervorrichtungen
auftreten können.
-
Bevor die Quellen für Zeitvariationen
in einem Speichersystem diskutiert werden, werden einige Hintergrundinformationen über die
Struktur und den Betrieb von Speicherkernen bereitgestellt.
-
Speicherstruktur
und -betrieb
-
In diesem Abschnitt werden Speicheroperationen
definiert. 3 zeigt einen
Speicher mit einem Speicherkern und einer Speicherschnittstelle.
Die Speicherschnittstelle interagiert mit einer Verbindungsstruktur. Die
nachfolgende Diskussion baut auf den gewöhnlichen Speicherelementen
von 3 auf, um separate strukturelle
Elemente zu identifizieren und die Speicheroperationen und Speicherinteraktionen
mit der Verbindung zu diskutieren.
-
Üblicher
Speicherkern
-
In diesem Unterabschnitt wird die
Struktur von Speicherkernen in Zeilen und Spalten illustriert und
die einfachen Operationen Lesen, Vorladen, Auslesen und Schreiben
werden eingeführt.
-
Ein einfacher Speicherkern besteht üblicherweise
aus einem Speicherarray, einem Spaltendekodierer, einem Zeilendekodierer
und einem Leseverstärker
wie es in 4 gezeigt
ist. Die Schnittstelle 100 zu einem Speicherkern besteht
im Allgemeinen aus einer Zeilenadresse 101, einer Spalteadresse 103 und
einem Datenweg 102. Das in 6 gezeigte
Speicherarray ist in Zeilen und Spalten von Speicherzellen aufgeteilt,
von denen jede einen Bit Information speichert. Das Zugreifen auf
Informationen in dem Speicherarray ist ein Zweistufiges Verfahren.
Zuerst wird die Information zwischen dem Speicherarray und den Leseverstärkern übertragen.
Als zweites wird die Information von dem Leseverstärker und
der Schnittstelle über
Verbindung 100 übertragen.
-
Der erste Hauptschritt, das Übertragen
von Informationen zwischen dem Speicherarray und den Leseverstärkern, wird "Zeilenzugriff" genannt und wird
in die kleineren Schritte Vorladen und Lesen aufgeteilt. Der Vorladeschritt
bereitet die Leseverstärker
und Bitleitungen auf das Lesen vor, indem sie üblicherweise auf eine Mittelpunktreferenzspannung
equilibriert werden. Während
der Leseoperation wird die Zeilenadresse dekodiert, eine einzelne
Wortleitung wird festgelegt, die Inhalte der Speicherzelle werden
auf die Bitleitungen gelegt und der Leseverstärker verstärkt den Wert auf einen Vollschienenzustand
(fullrailstate), womit die Bewegung der Information von dem Speicherarray
zu den Leseverstärkern
abgeschlossen wird. Eine wichtige Beobachtung ist, dass die Leseverstärker auch
als lokale Cachespeicher dienen können, die eine "Seite" von Daten speichert,
auf die mit Spaltenauslesezugriffen oder Spaltenschreibzugriffen
schneller zugegriffen werden kann.
-
Der zweite Hauptschritt, das Übertragen
von Informationen zwischen den Leseverstärkern und der Schnittstelle,
wird "Spaltenzugriff" genannt und wird
typischerweise in einem Schritt durchgeführt. Es sind Variationen möglich, in
denen dieser Hauptschritt in zwei kleinere Schritte aufgeteilt ist.
Beispielsweise wird eine Pipelinestufe an dem Ausgang des zweiten
Dekodierers untergebracht. In diesem Fall muss das Pipelinetiming angepasst
werden.
-
Aus diesen zwei Hauptschritten resultieren
vier Haupt-Speicheroperationen:
Vorladen, Lesen, Auslesen und
Schreiben (Auslesen und Schreiben sind Spaltenzugriffsoperationen.).
Alle Speicherkerne unterstützen
diese vier Hauptoperationen oder eine Untergruppe dieser Operationen.
Wie in späteren
Abschnitten beschreiben ist, können
einige Speichertypen zusätzliche
Operationen erforderlich machen, die benötigt werden, um einen bestimmten
Speicherkerntyp zu unterstützen.
-
Wie es in 5 gezeigt ist, können Speicherkerne auch mehrere
Module aufweisen, die gleichzeitige Zeilenoperationen innerhalb
eines gegebenen Kerns erlauben. Mehrere Module verbessern die Speicherleistung
durch erhöhte
Modulnebenläufigkeit
und wenige Modulkonflikte. 5 zeigt
eine typische Kernstruktur mit mehreren Modulen. Jedes Modul hat
seinen eigenen Speicherarray und kann seine eigene Gruppe von Leseverstärkern haben,
um unabhängige
Zeilenoperationen zu ermöglichen.
Den Spaltendekodierer und Datenweg teilen sich normalerweise mehrere
Module.
-
6 zeigt
die generische Speicherarraystruktur. Es ist gezeigt, dass die Wortleitung 106 auf
eine Zeile der Speicherzellen zugreift, die daraufhin die gespeicherten
Daten auf die Bitleitungen (107) überträgt. Während die Figur ein Paar Bitleitungen
zeigt, die mit jeder Speicherzelle verbunden sind, können einige
Kernanordnungen nur eine Bitleitung pro Zelle in Abhängigkeit
von dem Speicherzellentyp und Leseschaltungen erfordern.
-
Der gerade beschriebene, übliche Speicherkern
stellt das Basisgerüst
für eine
Speicherkernstruktur und -operation bereit. Es gibt jedoch eine
Vielzahl unterschiedlicher Kerntypen, die sich in Struktur und Funktion
leicht unterscheiden. Die nachfolgenden drei Unterabschnitte beschreiben
diese Unterschiede für
jeden Hauptspeichertyp.
-
Dynamisches RAM (DRAM)
-
Dieser Abschnitt beschreibt die Struktur
von einfachen Operationen für
den herkömmlichen DRAM-Kern.
Die Struktur eines herkömmlichen
DRAM-Kerns ist in 7 gezeigt.
Wie der herkömmliche
Speicherkern in 4 hat
auch die herkömmliche
DRAM-Struktur eine Zeilen- und Spalten-Speicherarrayorganisation
und verwendet Leseverstärker
zum Durchführen
eines Zeilenzugriffs. Folglich werden die vier Hauptspeicheroperationen
Lesen, Vorladen, Auslesen und Schreiben unterstützt. Die Figur zeigt einen
zusätzlichen "Spaltenverstärker-Block" der normalerweise
zur Beschleunigung des Spaltenzugriffs verwendet wird.
-
Die Kernschnittstelle 100 besteht
aus den folgenden Signalen: Zeilenadresse 101, Spaltenadresse 103,
Datenbus I/O 106, Zeilensteuersignale 107 (diese Signale
werden in diesem Abschnitt detaillierter definiert) und Spaltensteuersignale 108 (diese
Signale werden in diesem Abschnitt ausführlicher definiert).
-
8 zeigt
einen herkömmlichen
DRAM-Kern mit mehreren Modulen. In dieser Figur teilen sich die Module
den Zeilendekodierer, Spaltendekodierer und Spaltenverstärker. Diese
Elemente können
in anderen Anordnungen für
jede Bank repliziert vorgesehen sein, aber die Replikation erfordert
normalerweise einen größeren Chipbereich
und ist somit teurer. Bei preiswerten Kerndesigns mit mehreren Modulen
werden üblicherweise
die Zeilendekodierer, Spaltendekodierer und Spaltendatenwege von
mehreren Modulen gemeinsam genutzt, um den Chipbereich zu minimieren.
-
Herkömmliche DRAM-Kerne verwenden
eine einzelne Transistorzelle (1T). Der einzelne Transistor greift
auf einen in einem Kondensator gespeicherten Datenwert zurück, wie
es in 9 gezeigt ist.
Diese einfache Speicherzelle erzielt eine hohe Speicherdichte und
folglich niedrigere Kosten pro Bit, hat aber zwei nachteilige Nebeneffekte.
Zunächst
hat sie eine relativ langsame Zugriffszeit. Die relativ langsame
Zugriffszeit hat ihren Grund darin, dass der passive Speicherkondensator
nur eine begrenzte Menge von Ladung speichern kann. Ein Zeilenlesen
von herkömmlichen
DRAMs dauert länger
als bei Speichertypen mit aktiv angesteuerten Zellen, wie beim SRAM.
Preiswerte DRAM-Kerne führen
im Allgemeinen zu langsamen Zeilenzugriffen und -zykluszeiten. Ein
weiteres Problem ist, dass eine Zellenauffrischung benötigt wird.
Da der Bitwert in einem passiven Kondensator gespeichert wird, führt der
Leckstrom in dem Kondensator und dem Zugriffstransistor zu einer
Verschlechterung des gespeicherten Werts. Folglich muss der Zellenwert
periodisch „aufgefrischt" werden. Die Auffrischoperation
umfasst das Auslesen des Zellenwertes und das Neubeschreiben des
Wertes zurück
in die Zelle. Diese zwei zusätzlichen
Speicheroperationen werden Auffrischlesen (refresh sense) und Auffrischvorladen
(refresh precharge) jeweils genannt. In herkömmlichen Kernen waren das Auffrischlesen und
das Auffrischvorladen dasselbe wie die regulären Auffrisch- und Vorladeoperationen.
Bei mehreren Modulkernen sind jedoch spezielle Auffrischoperationen
vorteilhaft, damit vorbestimmte Auffrischschaltungen und eine Logik
ein Multimodulauffrischen unterstützen können.
-
10 zeigt
Details eines Bitschnitts (bit slice) eines herkömmlichen Zeilendatenwegs und 11 zeigt das Zeitdiagramm
einer Vorlade- und Leseoperation. Zum Durchführen eines Zeilenzugriffs müssen die Bitleitungen
und Leseverstärker
zuerst vorgeladen werden, üblicherweise
auf den Mittelpunkt Vdd/2. Die Zeilenvorladezeit tRP ist in 11 gezeigt.
-
Zum Durchführen einer Leseoperation steuert
der Zeilendekodierer eine einzelne Wortleitung an, um Zugriffstransistoren
zu einer Zeile von Speicherzellen einzuschalten. Die Ladung auf
dem Speicherkondensator wird auf die Bitleitung übertragen, wodurch seine Spannung
leicht verändert
wird. Der Leseverstärker
erfasst diese kleine Spannungsveränderung und steuert die Bitleitungen
mit „Volldampf" (full
rail = Vdd und Gnd) an. Die Wortleitung muss für einen beachtlichen Abschnitt
der Zeitperiode von tRAS,min hochgehalten werden, um die Leseoperation
abzuschließen.
Vorher erreichen die Bitleitung full rail, ein Spaltenauslese- oder -schreibzugriff kann
beginnen. Die Zeit zwischen dem Start der Leseoperation und der
frühest
mögliche
Spaltenzugriff ist tRCD, die Zeilen zu Spalten-Zugriffsverzögerung.
-
Die Gesamtzeit zum Durchführen des
Vorladens und Lesens ist tRC, die Zeilenzykluszeit, und ist ein Hauptmaß für die Kernleistungsfähigkeit.
Tabelle 1 zeigt typische DRAM-Zeilenzeitwerte.
-
Tabelle
1 Typische DRAM-Zeilenzeit-Parameter
-
Es ist wichtig zu wissen, dass Speichervorrichtungs-Zeitparameter
sich bei unterschiedlichen Vorrichtungsdesigns, Herstellungsverfahren,
Versorgungsspannungen, Betriebstemperaturen und Prozessgenerationen
stark verändern
können.
Damit die Speicherarchitektur weit verbreitet werden kann, ist es
wichtig, dass das Protokoll diese variablen Zeilen- und Spaltenzeiten
unterstützen
kann.
-
10 zeigt
eine herkömmliche
Zellenorganisation, die Zellenverbindungen zwischen Wortleitungen alterniert.
Dies führt
zu einer dichten Packung von Zellen und erlaubt auch dem Leseverstärker die
Spannung auf der nicht verwendeten Bitleitung als Referenz für ein differentielles
Bitleitungslesen zu verwenden.
-
Eine separate Vorlade- und Lesesteuerung
(PRECH and SENSE control) kann an der Kernschnittstelle verwendet
werden. Herkömmliche
Kerne verwenden ein einzelnes Steuersignal, das üblicherweise RAS genannt wird
und die steigenden und fallenden Flanken werden zur Unterscheidung
von Lesen und Vorladen verwendet. Getrennte Vorlade- und Lesesignale
(PRECH und SENSE-Signale) zusammen mit einer getrennten Moduladresse
zum Lesen und Vorladen unterstützten
Kerne mit Pipelinevorlade- und -leseoperationen, die in mehreren
Modulen auftreten.
-
Die Zeilenleseenergie umfasst die
Energie zum Dekodieren der Zeilenadresse, zum Hochtreiben der Wortleitung
und zum Einschalten der Leseverstärker, die die Wortleitungen
von Vdd/2 auf Vdd und Gnd verstärken
müssen.
Somit ist ein signifikanter Teil der Zeilenleseenergie proportional
zur Anzahl der Leseverstärker,
die eingeschaltet sind (d.h. der Seitengröße).
-
12 zeigt
ein Beispiel eines Zeilenzugriffszeitdiagramms für DRAMs mit mehreren Modulen.
Die Periode tss gibt die minimale Verzögerung zwischen
Leseoperationen an unterschiedlichen Modulen an. Die Periode tpp gibt die minimale Verzögerung zwischen Vorladeoperationen
an unterschiedlichen Modulen an.
-
13 ist
ein detaillierteres Diagramm eines herkömmlichen DRAM-Spaltendatenwegs.
Die Ausgabe des Spaltendekodierers, der in einem Register für Pipelinedesigns
platziert werden kann, steuert eine einzelne Spaltenauswahlleitung
an, die einen Teil der Ausgaben von den Leseverstärkern auswählt. Die
ausgewählten Leseverstärker lenken
dann die Daten auf die Spaltenleitungen I/O. Zum Beschleunigen der
Spaltenzugriffszeit sind die Spaltenleitungen I/O normalerweise
differenziell und werden unter Verwendung von differenziellen Spaltenverstärkern gelesen,
die kleine Spannungsunterschiede auf den Spaltenleitungen I/O verstärken und den
Datenbus I/O zu der Schnittstelle ansteuern. Die Breite des Spaltenbusses
I/O legt die Datengranularität jedes
Spaltenzugriffs fest, welche auch als CAS-Blockgranularität bekannt ist.
-
Die Daten I/O können sowohl bidirektional sein,
wobei Schreib- und Auslesedaten auf dem selben Bus gemultiplext
werden, oder unidirektional sein, wobei Schreib- und Auslesedaten unterschiedliche Busse
haben. 13 zeigt unidirektionale
Daten I/O.
-
Eine Spaltenzugriffsenergie umfasst
die Energie zum Dekodieren der Spaltenadresse (COLADDR), zum Ansteuern
der Spaltenauswahlleitung, Einschalten der Spaltenverstärker und
Ansteuern der Spaltenleitungen I/O. Die Spaltenenergie ist ungefähr proportional
zur Spaltenzyklusfrequenz (COLCYC) und der Breite des Spaltendatenwegs
I/O.
-
Einige DRAM-Kerne haben auch die
Fähigkeit,
Schreibarten zu maskieren (WMASK), so dass einige Bits oder Bytes
des Datenwegs nicht in Abhängigkeit
von dem Maskenmuster geschrieben werden. Das Maskenmuster wird normalerweise der
Spaltenverstärkerschreibschaltung
zugeführt,
welche die Schreibdaten geeignet hemmt.
-
Das Zeitdiagramm für ein Spaltenleseoperation
ist in 14 gezeigt. Die
Schlüsselzeitparameter
des Spaltenlesezugriffs sind:
- – tPC, Spaltenzykluszeit:
die minimale Zykluszeit eines Spaltenzugriffs. Dieser Parameter
bestimmt, wie schnell Daten zu und von dem Speicherkern getaktet
werden können
(cycled). Die CAS-Blockgranularität geteilt durch tPC ist gleich
der Kerndatenbandbreite.
- – tCLS,
COLLAT Setup bis COLCYC: die minimale Setupzeit zum „Latchen" der Spaltenadresse
auf die ansteigende Flanke von COLCYC, wenn ein Datenzugriff von
den Leseverstärkern
anfängt.
- – tDAC,
Spaltenauslese-Zugriffsverzögerung:
die Verzögerung
zwischen der ansteigenden Flanke von COLCYC und dem Zeitpunkt, zu
dem Daten Lesen bzw. READDATA an der Schnittstelle gültig ist.
- – tCAS:
die minimale Zeit, die COLCYC hoch bleibt. Dieser Parameter legt
die maximale Zeit zum Übertragen
von Daten von den Leseverstärkern
zu den Spaltenverstärkern
fest und bestimmt, wann ein Spaltenvorladen beginnen kann.
- – tCP,
Spaltenvorladung: die minimale Zeit, in der COLCYC tief bleibt.
Dieser Parameter bestimmt die maximale Zeit zum Vorladen der Spaltenleitungen
I/O.
- – tCPS,
COLCYC niedriges Setup zum Zeilenvorladen: die minimale Setupzeit,
in der COLCYC niedrig bleib, bevor das Zeilenvorladen (PRECH) beginnt.
Dieser Parameter ist wichtig, da tCAS + tCPS bestimmt, wann eine
Zeilenvorladeoperation relativ zu dem Start einer Spaltenoperation
beginnen kann.
- – tDOH,
Datenausgangshaltezeit: tDOH ist die minimale Haltezeit von Daten
Lesen nach der nächsten
ansteigenden Flanke von COLCYC. TPC – tDAC + tDOH bestimmt das
minimal gültige
Fenster von Daten Lesen an der Kernschnittstelle.
- – tASC,
Spaltenadressensetup: die minimale Spaltenadresssetupzeit vor einer
ansteigenden Flanke von COLLAT.
- – tCAH,
Spaltenadresshaltezeit: die minimale Spaltenadresshaltezeit nach
einer ansteigenden Flanke von COLLAT. tASC + tCAH bestimmt das minimal
gültige
Fenster der Spaltenadresse, das beachtet werden muss, um eine Spaltenoperation
zu dem Kern durchzuführen.
- – tCLL,
COLLAT tief: die minimale Zeit, die COLLAT niedrig bleibt.
- – tCLH,
COLLAT hoch: die minimale Zeit, die COLLAT hoch bleibt.
-
Ein Zeitdiagramm für eine Spaltenschreiboperation
ist in 15 gezeigt. Viele
Zeitparameter einschließlich
tPC, tCAS, tCP, tCLS; tCPS, tCLL, tCLH, tASC und tCAH sind diesselben
wie diejenigen zum Spaltenlesen. Zusätzliche Schlüsselzeitparameter
des Spaltenlesezugriffs sind
- – tDS, Daten
Schreiben bzw. WRITEDATA setup: die minimale Schreibdaten-Setupzeit vor der
ansteigenden Flanke von COLCYC.
- – tDH,Daten
Schreiben Halten: die minimale Schreibdaten-Haltezeit nach der abfallenden
Flanke von COLCYC.
-
tDS + tCAS + tDH bestimmt das minimal
gültige
Fenster von Daten Schreiben, das beachtet werden muss, um eine Schreiboperation
zu dem Kern durchzuführen.
- – tWES,
WMASK setup: die minimale Setupzeit für eine Schreibmaske vor der
ansteigenden Flanke von COLCYC.
- – tWEH,
WMASK Halten: die minimale Haltezeit für eine Schreibmaske nach der
fallenden Flanke von COLCYC. tWES + tCAS + tWEH bestimmt das minimal
gültige
Fenster von WMASK, das beachtet werden muss, um eine Schreibmaskenoperation
zu dem Kern durchzuführen.
-
Tabelle 2 zeigt typische DRAM-Spaltenzeitwerte.
-
Tabelle
2 Typische DRAM-Spaltenzeitwerte
-
Es ist wichtig zu beachten, dass
sich DRAM-Zeitparameter stark voneinander unterscheiden können auf
Grund unterschiedlicher Herstellungsverfahren, Versorgungsspannung,
Betriebstemperatur und Prozessgenerationen. Damit die Speicherarchitektur
allgemein verwendbar ist, ist es wichtig, dass das DRAM-Protokoll
diese variablen Spalten- und Zeilenzeiten unterstützen kann.
-
Typische Spaltenzykluszeiten und
Zugriffszeiten hängen
stark von dem Typ der Leseverstärkerschaltung
ab, da der Leseverstärker
die Daten auf die Spaltenleitungen I/O treibt. Erhöhte Geschwindigkeiten
können
erzielt werden, indem mehrere Transistoren in der Leseverstärkerschaltung
verwendet werden, um die Ansteuerfähigkeit zu erhöhen, aber
damit wird der Chipbereich stark vergrößert und die Kosten werden
erhöht, da
die Leseverstärkerschaltung
stark repliziert wird. Der Wunsch, den Rohchipbereich für die Massenware DRAMs
zu minimieren, verhindert die weitere Reduktion von Spaltenzugriffsgeschwindigkeiten.
-
Statisches RAM (SRAM)
-
Das SRAM weist eine ähnliche
Kernstruktur und funktionelle Blöcke
wie das DRAM auf. Wie beim DRAM wird ein Zugriff in einer ähnlichen
Zweischrittprozedur durchgeführt.
Zuerst wird in der Leseoperation die Information zwischen dem Speicherarray
und den Leseverstärkern übertragen.
Als zweites wird in der Spaltenzugriffoperation die Information
zwischen den Leseverstärkern
und der Schnittstelle überfragen.
Auch die Bitleitungen müssen ähnlich wie
beim DRAM vorgeladen werden, bevor das Lesen stattfindet, obwohl
ein typischer Vorladewert Vdd beträgt und nicht Vdd/2.
-
Der Hauptunterschied liegt in der
Speicherzelle. In einem SRAM werden Daten statisch gespeichert, vorzugsweise
unter Verwendung einer Schaltung aus mehreren Transistoren. Eine
typische SRAM-Zelle ist in 16 gezeigt.
Das SRAM von 16 verwendet
kreuzgekoppelte CMOS-Invertierer zum Speichern eines einzelnen Datenbits.
Eine Wortleitung schaltet Zugriffstransistoren ein, die die Zellenschaltung
mit unterschiedlichen Bitleitungen verbinden. Anders als bei der
DRAM-Zelle treibt die SRAM-Zellenschaltung den gespeicherten Wert
aktiv auf die Bitleitung, wodurch eine schnellere Zugriffszeit erreicht
wird. Die statische Natur der SRAM-Zelle eliminiert die Notwendigkeit
des Zellenauffrischens. Die statische Zelle verwendet jedoch auch
mehr Transistoren und bedarf eines viel größeren Bereichs als eine DRAM-Zelle. Die vier einfachen
Operationen eines SRAM sind Lesen, Vorladen, Auslesen und Schreiben.
-
Nur-Lese-Speicher
-
Nur-Lese-Speicher-Kerne speichern
Informationen entsprechend einer elektrischen Verbindung bei jedem
Zellenort, der Zeilen mit Spalten verbindet. Typischerweise bildet
ein einzelner Transistor die elektrische Verbindung an jedem Zellenort.
Ein einfaches ROM-Array (Nur-Lese-Speicher-Array) ist in 17 gezeigt.
-
Es gibt eine Vielfalt von ROM-Zellentypen
einschließlich
löschbarer
programmierbarer ROMS (EPROM), elektrisch löschbarer programmierbarer ROMs
(EEPROM) flash-ROM und maskenprogrammierbares ROM. Die Unterschiede
liegen in dem an dem Zellenort verwendeten Transistortyp. Alle ROM-Typen
haben jedoch die gemeinsame 2D-Speicherarrayorganisation, die eine
Zeilen- und Spaltendekodierung der Adresse bei jedem Datenzugriff
erfordert.
-
Anders als bei SRAMs oder DRAMs haben
nicht alle ROMs Leseverstärkerschaltungen.
Leseverstärker
werden nur in einigen ROMs verwendet, die schnelle Zugriffszeiten
benötigen.
Für diese
ROMs sind die einfachen Operationen Lesen, Vorladen und Auslesen.
-
Für
langsamere ROMs, die Leseverstärker
nicht verwenden, werden die Datenwerte direkt von der Zelle zu den
Ausgangsverstärkern
gelenkt, die die Schnittstelle ansteuern. Für diese ROMs ist die einzige
einfache Operation das Auslesen.
-
Zusammenfassung von Speicheroperationen
-
Tabelle 3 fasst die primitiven Operationen
für jeden
Speichertyp zusammen.
-
-
Speicheroperationsabfolge
-
Auf Grundlage der in dem vorstehenden
Abschnitt definierten Operationen beschreibt dieser Abschnitt die
erlaubten Abfolgen von Operationen für unterschiedliche Speichertypen.
-
Operationsabfolge für Speicherkerne
mit Leseverstärkercachespeichern
-
Die Anordnung der Operationen kann
nicht willkürlich
sein. Bei Speicherkernen, die das Lesen zum Beschleunigen des Zeilenzugriffs
verwenden wie herkömmliche
DRAMs und SRAMs, muss sich ein Modul in einem Lesezustand befinden,
um Aus lese- oder Schreiboperationen durchzuführen. Ferner muss das Modul vorgeladen
sein, um eine Leseoperation durchzuführen. Folglich müssen diese
Kerne dem in 18 gezeigten
Muster in Bezug auf jeden Modulzustand folgen, der entweder gelesen
(„offen") oder vorgeladen
(„geschlossen") sein kann.
-
Obwohl alle durch 18 implizierten Operationenabfolgen erlaubt
sind, haben sie nicht alle dieselbe Nützlichkeit. Die den Speicher
verwendende Anwendung zeigt ein charakteristisches Zugriffsmuster
(auch bekannt als Referenzmuster), welches letztendlich bestimmt,
welche Operationenabfolgen am nützlichsten
sind. Diese Operationenabfolgen können dann durch ein Implementierungs-
oder Protokolldesign zum Maximieren der Leistung und Minimieren
der Energie und des Bereichs optimiert werden.
-
Eine Anwendung wird im allgemeinen
Versuchen, einen Leseverstärkerspeicherkern
auf eine gecachte und ungecachte Art und Weise zu betreiben, was
von der erwarteten Referenzlokalität von einem Anwendungszugriff
zu dem nächsten
abhängt.
Kombinationen dieser Herangehensweisen sind möglich, aber ein Unterstützen frei
wählbarer
Kombinationen kann ein teurer Plan sein, der zu einer verringerten
Leistung oder einem größeren Ressourcenverbrauch
sowohl innerhalb des DRAMs als auch außerhalb in der Verbindung führt.
-
Das Betreiben des Speichers auf eine
ungecachte Weise bedeutet, dass der Modulzustand zwischen Anwendungszugriffen
geschlossen ist. Anders gesagt ist die letzte an dem Modul durchgeführte Speicheroperation
ein Vorladen. Bei einer derartigen Betriebsweise umfasst jeder Anwendungszugriff
typischerweise die Abfolge: Lesen, eine Folge von Ausleseoperationen
und/oder Schreiboperationen, Vorladen. Das ungecachte Verwenden
nimmt eine niedrige Referenzlokalität an, d.h. ein nachfolgender
Speicherzugriff wird vorrausichtlich nicht in derselben Zeile lokalisiert
sein.
-
Das Betreiben des Speichers auf eine
gecachte Weise bedeutet, dass der Modulzustand zwischen Anwendungszugriffen
offen ist. Anders gesagt ist die letzte an dem Modul durchgeführte Speicheroperation
Lesen, Auslesen oder Schreiben. Die gecachte Verwendung nimmt eine
hohe Referenzlokalität
an , d.h. ein nachfolgender Speicherzugriff wird vorrausichtlich
in derselben Zeile erfolgen. Im Allgemeinen wird das Lesen nicht die
letzte durchgeführte
Speicheroperation sein, da dies impliziert, dass keine nützliche
Arbeit für
den letzten Anwendungszugriff durchgeführt worden ist. Es gibt jedoch
Vorablesezugriffsschemata (prefetching schemes), bei denen der letzte
Anwendungszugriff ein Lesen ohne entsprechendes Auslesen oder Schreiben
durchführt.
-
Wenn der Modulzustand offen gelassen
worden ist, können
die nachfolgenden Operationen Auslesen, Schreiben oder Vorladen
sein. Wenn es eine Schreib- oder Ausleseoperation ist, nennen wird
dies eine hit-Operation, da die Zeile, die in dem Modul gecacht
gelassen worden ist, die richtige Zeile für die nachfolgende Operation
gewesen sein muss. Wenn es eine Vorladeoperation ist, wurde die
richtige Zeile nicht gecacht in dem Modul gelassen, so dass der
Controller bzw. die Steuerung einer Vorlade- und Leseabfolge anwenden muss,
um die korrekte Zeile in das Modul zu bewegen. Wir nennen diese
Art von Zugriff eine Fehloperation.
-
Wenn das DRAM auf eine gecachte Weise
betrieben wird, umfasst jeder Anwendungszugriff normalerweise die
Abfolge „eine
Reihe von Ausleseoperationen und/oder Schreiboperationen" (hit) oder die Abfolge „Vorladen,
Lesen, eine Reihe von Schreiboperationen und/oder Ausleseoperationen" (fehl).
-
Da die Vorlade- und Leseoperationen
Zeit benötigen
und Energie verbrauchen, hängt
die optimale Strategie zum Betreiben des DRAMs von den Referenzeigenschaften
der Anwendung ab. Die vorliegende Erfindung unterstützt beide
Arten von Operationen und gemischte Arten von Operationen.
-
Weitere Variationen
-
18 zeigt
die Operationsabfolge eines generischen Speicherkerns mit Leseverstärkercaches. Änderungen
dieses Diagramms für
unterschiedliche Speicherkerne sind möglich und werden in diesem
Abschnitt beschrieben.
-
19 zeigt
eine Operationsabfolge für
einen DRAM, welcher derselbe wie der in 18 gezeigte ist, bis auf die zusätzlichen
Auffrischlese- und Auffrischvorladeoperationen.
-
20 zeigt
eine Operationsabfolge einer herkömmlichen Klasse von SRAMs,
deren Leseverstärker gerade
ausreichende Daten für
einen Auslese- oder Schreibzugriff halten. Die Überleitung 202 ist
zwar möglich aber
nicht nützlich,
da sie keine nützliche
Arbeit für
den letzten Anwendungszugriff durchführt.
-
Schreiboperationen können auftreten,
nachdem entweder vorgeladen oder gelesen wurde, da die Leseverstärker in
SRAMs nur für
Ausleseoperationen verwendet werden. 21 zeigt
eine Operationsabfolge für
Nur-Auslese-Speicher mit Leseverstärkern. Typischerweise halten
Leseverstärker
nur genügend
Daten für einen
Auslesezugriff. Die Überleitung 202 ist
zwar möglich,
aber nicht nützlich,
da sie keine nützliche
Arbeit für den
letzten Anwendungszugriff durchführt.
-
Quellen von
Zeitvariationen
-
Es gibt mehrere Quellen von Zeitvariationen
in einem Speichersystem. Eine Quelle ist die Verbindung, auch Kanal
genannt. Mit einer ausreichend hohen Taktfrequenz und einem langem
Kanal wird die Signalausbreitungsverzögerung der Leitung größer als
die Bitzeit. (die Periode der Bitrate wird hier als die Zeit zum Übertragen
eines Bits definiert; in den nachfolgenden Beispielen wird angenommen,
dass ein Bit bei jeder Taktflanke übertragen wird, so dass die
Bittrate zweimal die Taktfrequenz ist). Folglich variiert die Verbindungsverzögerung in
Abhängigkeit
von einer physikalischen Position auf dem Kanal, wie es in 22 gezeigt ist. Die Taktflanken
variieren mit der Zeit in Abhängigkeit
von der Beobachtungsposition. Bei dieser speziellen Takttopologie
hat die Verbindung fünfzehn Übertragungstakte
und in entgegengesetzer Richtung gehende Empfangstakte und 23 zeigt, dass der Unterschied
zwischen Übertragungs-
und Empfangstakten an einer gegebenen Position und zu einer vorgegebenen
Zeit um mehr als einen Taktzyklus variiert. Die Verbindungsverzögerung für eine gegebene
Komponente ändert
sich nicht, sobald ihre Position fixiert ist.
-
Eine weitere Quelle von Zeitvariationen
stammt von der Speichervorrichtung selbst. 3 zeigt eine Darstellung einer Speichervorrichtung
mit einer Schnittstelle und einem Speicherkern. Interne Verzögerungen in
dem Kern können
von Vorrichtung zu Vorrichtung aufgrund von Fertigungsvariationen,
Schaltungsdesignunterschieden sowie Variationen in Spannung und
Temperatur beeinflussenden Betriebsbedingungen variieren.
-
Ein Speicherkern hat vier Hauptoperationen:
Vorladen, Lesen, Auslesen und Schreiben. Variationen können in
allen Komponenten der Kernzeit auftreten, die Zeit von Zeilenoperationen
(Lesen und Vorladen), Spaltenoperationen (Auslesen und Schreiben)
und Interaktionen zwischen Zeilen und Spaltenoperationen umfassen.
-
Eine Zeilenzeit ist durch die Zeitparameter
in Tabelle 1 charakterisiert und dem Zeitdiagramm in 11 (Zeilenzeit) illustriert.
Die Zeilenvorladezeit tRP ist die Zeit zum Vorladen der Leseverstärker und
Bitleitungen innerhalb eines Speichermoduls in dem Kern. Ein Modul
muss vorgeladen sein, bevor eine Leseoperation auftreten kann. Die
Minimalzeit zwischen dem Start einer Leseoperation und dem Start
einer Vorladeoperation ist tRAS,min. Die minimale Zeit zwischen
Leseoperationen in dem selben Speichemodul ist die Zeilenzykluszeit
tRC.
-
Tabelle 2 zeigt die grundlegenden
Spaltenzeitparameter, die in den Auslese- und Schreibzeitdiagramm in 14 und 15 illustriert sind. tCAC ist die Verzögerung zwischen
dem Zwischenspeichern der Spaltenadresse und der Zufuhr von Auslesedaten
zu dem Kernausgang. tCAC hat zwei Komponenten: tCLS und tDAC. tCLS
ist die Zeit zwischen der ansteigenden Flanke von COLLAT (wenn die
Spaltenadresse zwischengespeichert wird) und der ansteigenden Flanke
COLCYC (wenn der Datenzugriff von den Leseverstärkern beginnt). tCAC ist die
Zeit zwischen der ansteigenden Flanke von COLCYC und der Zeit, wenn
Auslesedaten zu dem Kernausgang zugeführt werden. tPC ist die Spaltenzykluszeit,
d. h. die minimale Zeit zwischen Spaltenoperation.
-
Die Interaktionen zwischen Zeilen-
und Spaltenoperationen werden durch die Zeitparameter tRCD und tCPS
charakterisiert und in 11, 14 und 15 dargestellt. tRCD ist die Zeilen-
und Spaltenverzögerung
und stellt die Zeit zwischen dem Start einer Leseoperation und einer
Spaltenoperation (ansteigende Flanke von COLCYC) dar. tCPS ist die
Spaltenvorlade-/Zeilenvorladezeit und stellt die Zeit zwischen dem
Beginn des Spaltenvorladens (abfallende Flanke von COLCYC) und dem
Beginn der Zeilenvorladeoperation dar.
-
Alle diese Kernzeiten können bezüglich Herstellungsverfahren,
Prozessgenerationen, Schaltungsdesigns, Versorgungsspannungsfluktuationen
und Betriebstemperaturen variieren. Diese Kernzeitvariationen kombiniert
mit Verbindungsverzögerungsvariationen
bilden kumulative Systemzeitvariationen von Vorrichtung zu Vorrichtung.
-
Motivation für eine Zeitvariationssteuerung
-
In einem Pipelinespeichersystem ist
es wünschenswert
die Zeitvariationen von Vorrichtung zu Vorrichtung zu korrigieren
oder zu steuern, um die Effizienz in der Pipeline zu optimieren,
so dass die Datenbandbreite insbesondere bei Ausleseoperatio nen
maximiert wird. Ziel ist, eine vollgepackte Datenverbindung bereit
zu stellen, wenn Daten von einem Sender an einen Empfänger übertragen
werden, wie es in 24 gezeigt
ist. Wie vorstehend beschrieben ist, kann entweder der Master oder
der Slave als Sender oder Empfänger
fungieren; 24 zeigt
einen gepackten Kanal für
beide Fälle.
-
Ein weiterer Wunsch ist es, die Latenz
zu minimieren. Beispielsweise bei einer Vorrichtung mit einer gegebenen
tRCD ist es erwünschenswert,
eine ausreichend feinkörnige
Zeitsteuerung zwischen den Zeilen- und Spaltenbefehlen bereit zu
stellen, so dass die Zufuhr der Lese- und Spaltenkernsteuersignale
einen OFFSET hat, der der tRCD gut entspricht. Jede zusätzliche
Verzögerung
zwischen den zwei Befehlen würde
zu einer größeren Zugriffslatenz
führen.
-
Ein weiterer Wunsch ist es die Komplexität zu minimieren.
Zeitanpassungen können
entweder bei dem Sender oder dem Empfänger durchgeführt werden.
Da es hocherwünscht
ist, die Kosten gering zu halten, sollten alle Zeit regulierenden
Mechanismen insbesondere die Speichervorrichtungen eine Minimale
Komplexität haben,
um den Rohchipbereich und die Kosten so klein wie möglich zu
halten.
-
Stand der Technik
-
Herkömmliche Speichersysteme verwenden
eine zweidimensionale Vorrichtungstopologie, in der die Datensignale
und Steuer/Adresssignale orthogonal zu einander sind, wie es in 25 gezeigt ist. Wegen der unterschiedlichen
Spurlängen,
kapazitiven Ladungen und nicht abgeglichenen Signalimpedanzen unterscheiden
sich die Ausbreitungsverzögerung
für Daten
und Steuer/Adresssignale erheblich von einander. Ferner variieren
Vorrichtungszeiten auch zwischen unterschiedlichen Bestandteilen.
Um dies zu berücksichtigen,
nehmen Speicherkontrollen bzw. Speichersteuerungen normalerweise
die schlimmst mögliche
Verbindungs- und Vorrichtungszeiten an, so dass alle Zeitvariationen
durch eine feste konstante gehandhabt werden, wobei der Controller
bestimmt, wie schnell Bestandteile sein müssen und alle an das System
angeschlossene Bestandteil müssen
diese minimalen Zeiten erfüllen.
Unglücklicherweise
ist es manchmal schwierig zu wissen, was der ungünstigste Fall sein wird. Ferner
wird bei dieser Vorgehensweise der Speichercontroller immer mit
der Geschwindigkeit des denkbar langsamsten Bestandteils und der
denkbar langsamsten Verbindung betrieben, statt die tatsächliche
Geschwindigkeit der Vorrich tungen oder Verbindungen in einem gegebenen
System zu berücksichtigen.
Diese Systeme initialisieren ohne Bootzeitprozedur, die die tatsächliche
Vorrichtungsleistung der installierten Bestandteile überprüft.
-
In vielen existierenden Synchronspeichersystemen
wird die Verbindungsverzögerung
auf einen einzelnen Taktzyklus begrenzt, so dass keine Verbindungsverzögerungskompensation
benötigt
wird. In einigen existierenden Speichervorrichtungen werden Variationen
von Zeilenzeiten, insbesondere tRAS, min, tRP und tRCD „intern
terminiert", d.
h., Zeilenzeitverzögerungen
werden mit internen Zählern
und programmierbaren Registern gehandhabt, die Zykluszählungen
zum Abgleichen von Kernzeiten speichern. Einige Zykluszählungen
wie tCPS werden als feste Designkonstante behandelt.
-
In einigen existierenden Speichervorrichtungen
werden Variationen der Spaltenauslese- und -schreibverzögerung mittels
eines einzelnen Verzögerungswertes
gehandhabt, der durch Ändern
des Wertes in einem Register programmierbar ist. Die Verzögerung und
der Wertebereich des Registers werden nur so ausgelegt, dass Variationen
der Vorrichtungszeiten und nicht Verbindungszeiten behandelt werden
können.
Eine einzelne Verzögerungszeit
wird zum Abdecken mehrerer Spaltenausleselatenzkomponenten wie tCLS
und tDAC verwendet. In einer Implementierung bestimmt beispielsweise
ein Register die Anzahl von Taktzyklen zwischen der Spaltensteuerung
und den Spaltenauslesedaten, wie es in 26 gezeigt ist.
-
Diese beiden Techniken haben ihre
Nachteile und Vorteile. Die allumfassende Verzögerung stellt der Anwendung
ein einfaches Steuermodel bereit, welches sich nicht mit internen
Speichervorrichtungsimplementierungsdetails verändert. Die Speichervorrichtung
muss jedoch selbst dekodieren, wie die programmierte Verzögerung verwendet
werden sollte. Dies kann ein sehr schwieriges Problem sein, da die
Verzögerung
in irgendeiner Vorrichtung zum Zeitpunkt des Entwurfs nicht bekannt
ist. Eine weitere Komplikation ist, dass die Periode des Taktes
beim Betrieb nicht bekannt ist, selbst bei einer finalen Testzeit,
wenn die Vorrichtungsverzögerungen
gemessen werden können.
Einfache Verfahren zum Lösen
dieses Problems sind nicht naheliegend. Verfahren, die eine Division
einer internen Vorrichtungsverzögerung
durch eine Taktperiode umfassen, werden nicht als einfach angesehen.
-
Bei einigen existierenden Speichervorrichtungen
ist eine feine Zeitsteuerung aufgrund der Überladung der Verbindungssteuerressourcen
begrenzt. 27 zeigt die
Verbindungsstruktur einer derartigen Vorrichtung, in der alle Zeilen-
und Spaltenbefehle über
denselben Befehlsbus ausgegeben werden. Der einzelne Adressbus wird
also von den Zeilen- und Spaltenoperationen geteilt. Die Zeilenzeit
(tRP und tRAS,min) und Zeilen/Spalten-Zeit Variationen (tRCD, tCPS)
werden durch Anpassung der Positionierung von Steuerinformationen
auf einer einzelnen Steuerbusressource gehandhabt. Auf Grund von
Konflikten begrenzt die Überladung
sowohl von Zeilen- als auch von Spaltenbefehlen auf einer einzelnen
Ressource oft die Fähigkeit
zum Durchführen
einer feinen Zeitsteuerung, die die Zeilen- und Spaltensteuerung
zum Abgleichen tatsächlicher Vorrichtungszeiten
optimal platziert, wie es in 28 gezeigt
ist. Weil Lese-, Vorlade-, Auslese- und Schreibbefehle auf denselben
Befehlsbus ausgegeben werden, wird die Ressource schnell überlastet,
insb. wenn Befehle an zu viele Speichermodule gleichzeitig ausgegeben
werden. In dieser Figur muss beispielsweise die Trennung zwischen
dem Vorladen und Lesen von Modul B wegen des Schreibbefehls an Modul
A zwei Zyklen betragen, obwohl die Vorrichtung eine Trennung von
einem Zyklus zugelassen hätte.
-
Zusammengefasst haben existierende
Speichervorrichtungen mehrere Unzulänglichkeiten, die eine optimale
Zeitkompensation in einem Hochgeschwindigkeitspipelinesystem limitieren.
Erstens sind existierende Vorrichtungen nicht zum Kompensieren von
Multizyklusverbindungsverzögerungsvariationen
ausgelegt. Zweitens haben existierende Vorrichtungen eine einzelne
gemeinsam genutzte Verbindungssteuerung und/oder Adresssteuerung,
die die Fähigkeit
zum Steuern von Zeilenzeit und Zeilen/Spalten-Zeitvariationen begrenzt,
wenn eine Steuerinformation packetiert ist (mehrere Zyklen besetzt)
und diese Parameter sind nicht „intern terminiert". Drittens werden
Zeitvariationen einer Spaltenzugriffslatenz typischerweise durch
eine einzelne Zahl gesteuert und nicht in die fundamentalen Verzögerungskomponenten
aufgeteilt, die die Spaltenzugriffslatenz in dem Kern ausmachen.
Viertens wird die Spaltenzugriffs-/Zeilenvorladeverzögerung (tCPS)
als fixierte Konstante in der Vorrichtung behandelt und muss durch
Anpassen der Zeit von externen Steuerinformationen kompensiert werden.
Schließlich
müssen
Variationen in der Spaltenzykluszeit durch Anpassen der Zeit von
externen Steuerinformationen kompensiert werden.
-
WO-A-97/23042 offenbart eine Speichervorrichtung
mit mehreren einstellbaren Verzögerungen,
die mit der Zeilenoperation in Verbindung stehen. 4 dieses Doku ments zeigt eine Präzisionsverzögerungsschaltung
in einem integrierten Schaltungschip. Der Chip umfasst eine transistorschaltende
Schaltung in Verbindung mit einer Steuerschaltung und einer Kompensationsschaltung.
Die transistorschaltende Schaltung empfängt ein Eingangssignal und
im Anschluss daran, werden die Transistoren mit einer nicht vorhersagbaren Geschwindigkeit
ein- und ausgeschaltet, um ein Ausgangssignal mit einer Verzögerung zu
erzeugen, die eine große
Toleranz hat. Die Steuerschaltung schätzt die unvorhersagbare Geschwindigkeit,
mit der die Transistoren schalten, ab und erzeugt Steuersignale
(SL, MED, FA), die die abgeschätzte
Geschwindigkeit identifizieren. Die Kompensationsschaltung empfängt die
Steuersignale von der Steuerschaltung und koppelt daraufhin selektiv
Kompensationskomponenten mit der transistorschaltenden Schaltung,
so dass die Kombination der Transistoren und der selektiv gekoppelten
Komponenten das Ausgangssignal mit einer präzisen Verzögerung erzeugen.
-
Zusammenfassung
der Erfindung
-
Es ist Aufgabe der vorliegenden Erfindung,
die vorstehend identifizierten Probleme bei herkömmlichen Vorrichtungen zu überwinden.
-
Um diese Aufgabe zu lösen, umfasst
eine Speichervorrichtung gemäß der vorliegenden
Erfindung einen Speicherkern; eine Vielzahl von Verbindungen, die
an eine Zwischenverbindungsstruktur zum Aufnehmen von Spaltenbefehlen
und Zeilenbefehlen gekoppelt ist; und
eine Schnittstellenschaltung,
die an die Vielzahl von Verbindungen gekoppelt ist, um die Spaltenbefehle
und die Zeilenbefehle zu empfangen, und an den Speicherkern gekoppelt
ist, um Zeilen- und Spaltenoperationen an dem Speicherkern gemäß den Zeilenbefehlen
und den Spaltenbefehlen durchzuführen;
wobei
die Schnittstellenschaltung eine Vielzahl von programmierbaren Verzögerungskomponenten
umfasst, die den jeweiligen spezifischen Anteilen von internen Verzögerungen
der Schnittstellenschaltung entsprechen; wobei, wenn die Zeilenbefehle
und Spaltenbefehle in vorbestimmten Zeitabständen empfangen werden, die vorbestimmten
Zeitabstände
in Verbindung mit Verzögerungen,
die mit den programmierbaren Verzögerungskomponenten in Verbindung
stehen, die Zeit zwischen den Zeilen- und Spaltenoperationen an
dem Speicherkern abgleichen.
-
Kurzbeschreibung
der Figuren
-
Zum besseren Verständnis der
Erfindung sollte die nachfolgende Beschreibung in Zusammenhang mit den
beigefügten
Figuren betrachtet werden.
-
1 zeigt
ein herkömmliches
Speichersystem mit mehreren Mastern und mehreren Slaves.
-
2 zeigt
ein herkömmliches
Speichersystem mit einem einzelnen Master und mehreren Slaves.
-
3 ist
ein Blockschaltbild einer herkömmlichen
Speicherstruktur.
-
4 ist
ein Blockschaltbild eines herkömmlichen
Speicherkerns mit einem einzelnen Speichermodul.
-
5 ist
ein Blockschaltbild eines herkömmlichen
Speicherkerns mit mehreren Speichermodulen.
-
6 ist
eine verallgemeinertes Schaltbild eines herkömmlichen Speicherarrays.
-
7 ist
ein Blockschaltbild eines herkömmlichen
DRAM-Speicherkerns mit einem einzelnen Modul.
-
8 ist
ein Blockschaltbild eines herkömmlichen
DRAM-Speicherkerns mit mehrern Modulen.
-
9 ist
ein Schaltbild einer herkömmlichen
DRAM-Speicherzelle.
-
10 ist
ein Schaltbild einer herkömmlichen
DRAM-Datenwegzeile.
-
11 ist
ein Zeitdiagramm, welches eine herkömmliche Datenzugriffszeit auf
ein einzelnes Speichermodul zeigt.
-
12 ist
ein Zeitdiagramm, dass eine herkömmliche
Zeilenzugriffszeit auf unterschiedliche Speichermodule zeigt.
-
13 zeigt
einen herkömmlichen
DRAM-Spaltendatenweg.
-
14 zeigt
ein Zeitdiagramm, das einen herkömmliche
Spaltenauslesezugriffszeit zeigt.
-
15 zeigt
ein Zeitdiagramm einer herkömmlichen
Spaltenauslesezugriffszeit.
-
16 ist
ein Schaltbild einer herkömmlichen
SRAM-Speicherzelle.
-
17 zeigt
ein herkömmliches
ROM-Array.
-
18 zeigt
eine herkömmliche
Operationsabfolge für
Speicherkerne mit Zeilenlesen.
-
19 zeigt
eine herkömmliche
Operationsabfolge für
DRAMs mit Auffrischoperationen.
-
20 zeigt
eine herkömmliche
Operationsabfolge für
SRAMs mit schmalen Seitengrößen.
-
21 zeigt
eine herkömmliche
Operationsabfolge für
ROMs mit Leseverstärkern.
-
22 zeigt
mehrere Zykluszeiten in einem herkömmlichen Speichersystem.
-
23 zeigt
mehrere Zykluszeiten für
Slave-Vorrichtungen in einem herkömmlichen Speichersystem.
-
24 zeigt
eine vollgepackte Datenverbindung.
-
25 zeigt
eine herkömmliche
Speichersystemtopologie.
-
26 zeigt
ein Latenzzeitdiagramm für
ein programmierbares Spaltenzugriffssignal (CAS) gemäß dem Stand
der Technik.
-
27 zeigt
eine herkömmliche
Speichervorrichtung mit überlasteten
Verbindungssteuerressourcen.
-
28 zeigt
ein Zeitdiagramm, das eine herkömmliche Überlastung
einer Verbindungsressource demonstriert.
-
29 zeigt
eine Speichervorrichtung mit einem Verzögerungselement in Übereinstimmung
mit einem Ausführungsbeispiel
der Erfindung.
-
30 zeigt
ein Zeitdiagramm eines gepackten Datenkanals mit Verbindungsverzögerungsvariationen
gemäß einem
Ausführungsbeispiel
der Erfindung.
-
31 zeigt
einen Spaltenauslesedatenweg gemäß einem
Ausführungsbeispiel
der Erfindung.
-
32 zeigt
eine Spaltenauslesezeit gemäß einem
Ausführungsbeispiel
der Erfindung.
-
33 zeigt
einen Verzögerungsblock
innerhalb einer Spaltenlogik zum Verzögern des Beginns von Spaltenoperationen
in Übereinstimmung
mit einem Ausführungsbeispiel
der Erfindung.
-
34 zeigt
die Operation des Verzögerns
des Auslesen durch Verzögern
des Beginns von Spaltenoperationen in Übereinstimmung mit einem Ausführungsbeispiel
der Erfindung.
-
35 zeigt
eine Frontendeinpegelung in Übereinstimmung
mit einem Ausführungsbeispiel
der Erfindung.
-
36 zeigt
eine Rückend-Einpegelung
gemäß einem
Ausführungsbeispiel
der Erfindung.
-
37 zeigt
Verzögerungsschaltungen
zum Verzögern
von Daten auf einem Ausgangsdatenweg gemäß einem Ausführungsbeispiel
der Erfindung.
-
38 zeigt
die Operation des Verzögerns
des Auslesens durch Verzögern
von Daten auf einem Ausgangsdatenweg gemäß einem Ausführungsbeispiel
der Erfindung.
-
39 zeigt
eine Spaltenauslesezeit gemäß einem
Ausführungsbeispiel
der Erfindung.
-
40 zeigt
Verarbeitungsschritte, die einem Initialisierungsverfahren der Erfindung
zuzuordnen sind.
-
41 zeigt
eine Speichervorrichtung mit einem aufgespalteten Steuerbus gemäß einem
Ausführungsbeispiel
der Erfindung.
-
42 zeigt
Zeitoffsets von Zeilen- und Spaltenbefehlen gemäß einem Ausführungsbeispiel
der Erfindung.
-
43 zeigt
vereinigte Steuerbusse mit separater Spaltensteuerung gemäß einem
Ausführungsbeispiel
der Erfindung.
-
44 zeigt
eine Spaltensteuerlogik mit ausgewählten Verzögerungen in Übereinstimmung
mit einem Ausführungsbeispiel
der Erfindung.
-
45 zeigt
ein verschiedenartiges Verzögerungssignal
in Übereinstimmung
mit einem Ausführungsbeispiel
der Erfindung.
-
46 zeigt
Verarbeitungsschritte, die einem Initialisierungsverfahren für vorrichtungsinduzierte
Kompensationsmechanismen gemäß einem
Ausführungsbeispiel
der Erfindung zuzuordnen sind.
-
Dieselben Bezugszeichen betreffen
entsprechende Bestandteile in allen Figuren.
-
Ausführliche
Beschreibung der bevorzugten Ausführungsbeispiele
-
Zeitkompensation für eine Verbindungsverzögerungsvariation
-
Wie in dem Hintergrundabschnitt beschrieben
worden ist, hat der Kanal eine Flugzeit, die mehrere Zyklen lang
dauert, wenn der Kanal lang genug ist, um eine ausreichende Kapazität aufzuweisen.
In einem derartigen System ist es entscheidend, dass die Sender
von Vorrichtung zu Vorrichtung ohne eine Zwischenflugzeitverzögerung schalten
können.
Wenn dies nicht der Fall ist, dann wird jedes Mal eine andere Vorrichtung adressiert
und es wird einen nicht akzeptablen Verlust an Bandbreite geben.
-
Unter der Annahme, dass die Signalisierungstechnologie
ein Schalten von Treiber zu Treiber ohne Verzögerung unterstützt, könnten Verzögerungselemente
zu dem Datenweg innerhalb der Speicherkomponenten hinzugefügt werden,
um die logische Schicht zum Zuführen
von Auslesedaten zu dem Kanal auf eine Weise zu erhalten, die logische
Konflikte zwischen Vorrichtungen eliminiert oder um den Kanal „einzupegeln". Dies unterscheidet
sich von dem Fall, wo Verzögerungselemente
nicht zum Handhaben von Verbindungsverzögerungsvariationen verwendet
wurden.
-
29 zeigt
Vorrichtungen mit Verzögerungselementen,
die mit einer Multizyklusverbindung verbunden sind. Die Grundidee
ist, diese Verzögerungsregister
dazu zu verwenden, eine geeignet große Verzögerung in jeder Vorrichtung
in Abhängigkeit
von einer Position auf dem Kanal hinzuzufügen, so dass der Master eine
gleichförmige
minimale Latenz für
alle Vorrichtung sieht. Diese Verzögerungsregister werden zum
Kompensieren einer Verbindungsverzögerung und nicht für Vorrichtungsvariationen
verwendet.
-
Das Zeitdiagramm von 30 zeigt, wie die Verzögerungsregister
Verbindungszeitvariationen berücksichtigen
und wie sie dafür
sorgen, dass die Datenverbindung voll gepackt sein kann. Die Figur
zeigt vier Vorrichtungen auf dem Kanal, jede in einer anderen Taktdomäne platziert,
d.h. die Signalausbreitungsverzögerung
von dem Master gleicht 0, 1, 2 und 3 Zyklen jeweils für Vorrichtungen
a, b, c und d. Die Verzögerungsregister
in Vorrichtungen a, b, c und d sind dazu programmiert, jeweils 3,
2, 1 und 0 Zyklen zu betragen. Die Zeitdiagramme in der Figur zeigen,
wann die Steuerpakete von dem Master übertragen werden und wann die Spaltenoperation
für jede
Vorrichtung beginnt (COLCYC-Puls). Weil die Ausgabe von Vorrichtung
a um zusätzliche
drei Zyklen verzögert
ist, führt
das unmittelbar aufeinanderfolgende Auslesen von Vorrichtung d bis
a zu einem aufeinanderfolgenden Datenpaket, wenn es bei dem Master
empfangen wird. Wie das Diagramm zeigt, führen die unterschiedlichen
Ausbreitungszeiten entlang des Kanals zu einem vollgepackten Datenstrom
bei dem Master, obwohl jede Vorrichtung mit ihrer Übertragung
von Auslesedaten in unregelmäßigen Intervallen beginnt.
-
Der Verzögerungselementmechanismus kann
auf vielfältige
Weise implementiert werden. Ein typischer Spaltenauslesedatenweg
ist in 31 gezeigt. Nachdem
ein Spaltensteuerpaket über
die Verbindung empfangen worden ist, initialisiert die Spaltenlogik
die Spaltenausleseoperation in dem Kern. Die Kernsteuersignale für Spaltenoperationen
umfassen Modul- und Spaltenadressen, ein Signal zum Zwischenspeichern
der Adressen (COLLAT), ein Signal zum Starten der Spaltenoperation
(COLCYC, was für
Spaltenzyklus steht) und das Signal zum Spezifizieren von Auslese-
oder Schreiboperationen (r/w). Die Spaltenausleseoperation ist in eine
Vielzahl von Schritten unterteilt. Nach einer gewissen Verzögerung erscheinen
die Daten an dem Datenauslese-Ausgang des Kerns. Diese Daten werden
dann in ein Speicherelement (beispielsweise ein Auffangregister)
mit einer separaten Ladesteuerung LoadRD geladen, wobei das Speicherelement
zwischen dem Kern und dem Ausgangsdatenweg platziert ist. Die Daten
werden dann unter Verwendung eines separaten Ladesignals (LoadPipe)
separat in den Datenausgabeweg geladen und verlassen die Schnittstelle.
Ein vereinfachtes Zeitdiagramm für
die Ausleseoperation ist in 32 gezeigt.
-
Die ausgelesenen Daten können verzögert werden,
indem eine Verzögerung
irgendwo in den Datenauslese-Weg platziert wird. Ein Weg die ausgelesenen
Daten zu verzögern,
besteht darin, den Beginn der Spaltenoperation zu verzögern, indem
die Spaltensteuersignale zu dem Kern verzögert werden. Dies nennt man
Frontend-Einpegelung
(front-end leveling). Die andere Vorgehensweise besteht darin, die
ausgelesenen Daten bei dem Kernausgang zu verzögern, nachdem die Daten den
Kern verlassen. Dies nennt man Rückend-Einpegelung
(back-end leveling).
-
Um eine Frontend-Einpegelungimplementierung
darzustellen, zeigt 33 den
hinzugefügten
Verzögerungsblock
in dem Spaltenlogikblock, der die Ausgabe des COLCYC-Befehls verzögert. Der
Verzögerungsblock
kann programmierbar sein, damit variable Verzögerungen möglich sind. 34 zeigt, dass die Daten auch durch Verzögern von
COLCYC verzögert
werden können.
-
Das Problem mit dem Verzögern des
Starts der Spaltenausleseoperation besteht darin, dass damit Wechselwirkungen
mit Zeilenvorladeoperationen auftreten, die eine Steuerkomplexität erhöhen können und die
Leistungsfähigkeit
verschlechtern. 35 zeigt
den Betrieb von zwei Vorrichtungen, die Frontend-Einpegelung verwenden.
Die eine Vorrichtung ist mit einer Einpegelungsverzögerung von
drei Zyklen und einer Verbindungsverzögerung von Null Zyklen dargestellt,
die geschlossene Vorrichtung. Die untere Vorrichtung ist mit einer
hinzugefügten
Verzögerung
von null Zyklen und einer Verbindungsverzögerung von drei Zyklen gezeigt, die „Fern"-Vorrichtung
Es ist erstrebenswert
für das
Speichersystem, mit denselben Steuermustern und Intervallen für jede Vorrichtung
in dem Speichersystem zu operieren. Dies reduziert die Komplexität des Masters,
welcher andernfalls die Spezifika jeder Vorrichtung beim Durchführen von
Speicheroperationen nachsehen müsste.
Durch Aufrechterhalten einer beständigen Wiederhohlsequenz für die unterschiedlichen halten
einer beständigen
Wiederhohlsequenz für
die unterschiedlichen Stufen des gepipelineten Zugriffs auf die
Speichervorrichtungen könnte
die Bandbreite auch erhöht
werden. Die Steuerung bzw. der Controller kann die Zeit jeder Vorrichtung
auch verfolgen, aber dies erhöht
die Controllerkomplexität
stark und die variablen Zeiten tRAS,min machen es schwer, eine effiziente
Pipeline auszubilden.
-
35 zeigt,
dass das späte
Auslesen von der geschlossenen" Vorrichtung
die früheste
Zeit definiert, zu der ein Vorladen durchgeführt werden kann, um die Bedingung
von tCPS,min einzuhalten. Das Auslesen ist positioniert,
um zu zeigen, dass bei der „Fern"-Vorrichtung das
Vorladen drei Zyklen früher
hätte durchgeführt werden
können
und beide Bedingungen für
tCPS,min und tRAS,min hätten eingehalten
werden können.
-
Die effektiv tRAS,min ist
drei Zyklen länger
als die tatsächliche
tRAS,min jeder Vorrichtung. Das erhöht die Besetzungszeit
eines Moduls für
jegliche Zeile, was die Latenz zum Zugreifen auf eine unterschiedliche
Zeile in demselben Modul erhöhen
kann und die Leistung reduzieren könnte. Das verzögerte Vorladen
kann auch verhindern, dass ein weiteres Modul zu der optimalen Zeit
vorgeladen wird.
-
Das bevorzugte Verfahren zum Verzögern von
ausgelesenen Daten ist, die Daten zu verzögern, nachdem sie von dem Kern
angekommen sind. Auf diese Weise bleibt die Zeit der Kernausleseoperationen
fixiert und Vorladewechselwirkungen werden eliminiert. 36 zeigt, dass die in 35 gezeigten Probleme, beim Rückend-Einpegeln
nicht auftreten, weil die COLCYC-Positionen für die zwei Vorrichtungen identisch
sind.
-
Der in 31 gezeigt
Spalten-Datenausleseweg zeigt separate Ladesteuerpunkte bei dem
Zwischenspeicher und dem Ausgangsdatenweg (LoadRD und LoadPipe).
Die Schnittstelle stellt zwei Plätze
zum Einfügen
einer Ausleseverzögerung
bereit und 37 zeigt
programmierbare Verzögerungselemente,
die für
beide Steuersignale verwendet werden. Beide dieser Verzögerungselemente
können
zum Kompensieren von Verbindungszeitvariationen verwendet werden. 38 zeigt das Verfahren,
Ausleseoperationen zu verzögern,
indem Daten zu einem Datenausgangsweg verzögert werden. 39 zeigt eine Spaltenauslesezeitvorgabe
unter Verwendung von LoadRD- Signalen und LoadPipe-Signalen.
-
Die Verzögerung von LoadRd erlaubt nur
einen endlichen Spielraum für
eine hinzugefügte
Verzögerung,
da das ausgegebene gültige
Fenster der Auslesedaten von dem Kern limitiert ist (gültiges Auslesefenster =
tPC – tDAC
+ tDOH, wie es in 14 gezeigt
ist) und das Fenster muss die Setup- und Halte-Erfordernisse des
Zwischenspeichers erfüllen.
Jenseits dieses endlichen Spielraums wäre zusätzliches Puffern zum Erhöhen der
ausgelesenen gültigen
Fenstergröße erforderlich.
Dies würde
Fläche
hinzufügen
und kritischere Wegprobleme angesichts des Wunsches nach einer minimalen
Ausleselatenz aufwerten.
-
Zwei Steuerpunkte zu haben, ist besonders
hilfreich, da die Größe einer
programmierbaren Verzögerung
für jedes
Ladesignal auf Grund von Hardware- und Zeitbeschränkung üblicherweise
beschränkt
ist. Die zwei Steuerpunkte erhöhen
den gesamten Bereich einer Ausleseverzögerung und erlauben längere Multizykluskanäle mit mehr
Taktdomänen.
Ferner kann wie nachstehend beschrieben ist die Verzögerung von
LoadRD dazu benutzt werden, eine programmierbare Variation von tDAC
zu ermöglichen.
In diesem Fall kann jede verbleibende, nicht für tDAC verwendete Verzögerung zum
Rückend-Einpegeln
verwendet werden.
-
Es gibt mehrere Wege, um diese Verzögerungselemente
zu steuern. Zum Beispiel:
- – Register Einrichten, wenn
das Speichersubsystem initialisiert wird. Auf diese Weise wird jede
Referenz eine von der worst case-Speicherkomponente bestimmte Latenz
haben, die sowohl Positionen auf dem Kanal als auch interne Vorrichtungsverzögerungen
berücksichtigt.
Das in 40 gezeigte Initialisierungsverfahren
entnimmt die Verzögerungen
charakterisierende Informationen und Positionen von tatsächlich installierten
Komponenten und programmiert die Verzögerungsregister in den Vorrichtungen
auf geeignete Weise.
- – Verzögerung mit
anderen Steuerinformationen gesendet. In diesem Fall kann der Controller
bzw. die Steuerung die Positionierung der Auslesedaten dynamisch
steuern. Damit kann der Controller sowohl die Latenz als auch die
Bandbreite abhängig
davon optimieren, welche Vorrichtung den vorherigen Datenblock übertragen
hat und welche Vorrichtung den nächsten
Datenblock überträgt.
-
Ein Ausführungsbeispiel verwendet eine
statische Steuerung innerhalb des DRAM. Diese Wahl konserviert eine
Steuerbandbreite, die eine knappe Ressource ist, und minimiert kritische
Wege innerhalb der DRAM-Schnittstelle.
-
Zeitkompensation
für eine
Vorrichtungsverzögerungsvariation
-
Jede Speichervorrichtung hat Verzögerungsvariationen
auf Grund von Prozessvariationen, Schaltungsdesign, Versorgungsspannung
und Betriebstemperatur. Diese Variationen beeinflussen die Zeilen-
und Spaltenoperationszeiten sowie die Zeit von Wechselwirkung zwischen
Zeilen- und Spaltenoperationen.
-
Die vorliegende Erfindung umfasst
die nachfolgenden Mechanismen zum Kompensieren der vorrichtungsinduzierten
Zeitvariationen:
- – Die Verwendung von Zeitoffsets
zwischen Steuerbefehlen, die über
aufgeteilte Steuerverbindungsressourcen gesendet werden, um eine
feinere Zeitsteuerung über
interne Vorrichtungsoperationen bereitzustellen.
- – Die
Verwendung von mehrfach programmierbaren Verzögerungsmechanismen innerhalb
der Vorrichtung, die mit internen Vorrichtungsverzögerungskomponenten übereinstimmen,
um eine feinkörnige
Zeitsteuerung zu ermöglichen.
-
Zeitoffsets zwischen aufgeteilter
Steuerung (Slit Control)
-
Die vorliegende Erfindung umfasst
die Verwendung von Zeitoffsets zwischen Steuerbefehlen, die über aufgeteilte
Steuerverbindungsressourcen gesendet werden, um eine feinere Steuerung
von internen Vorrichtungsoperationen bereitzustellen. Die primären Speichervorrichtungsoperationen
sind Vorladen, Lesen, Spalten auslesen und Spalten schreiben. In
einem Ausführungsbeispiel
hat die Vorrichtung eine in 41 gezeigt Verbindungsstruktur,
bei der die Steuerleitungen und internen Steuerdaten in separate
Vorlade-, Lese- und Spaltensteuerbusse aufgeteilt sind. Das Zeitdiagramm
in 42 zeigt, wie Zeitoffsets
zum Steuern von Zeilenzeiten und Zeilen/Spalten-Zeiten für dieses
Ausführungsbeispiel
verwendet werden können.
Hier kann die Steuerung bzw. der Controller die Zeitoffsets zwischen
Lese-, Vorlade- und Spaltenbefehlen mit Taktzyklusgranularität anpassen,
um die Vorrichtungszeit für
eine Lese-/Spaltenverzögerung
tRCD, Lese-Norladeverzögerung
tRAS,min und Vorlade-/Leseverzögerung
tRP abzugleichen. Die Figur zeigt die Zeitoffsets für tRCD von 30
ns und 20 ns, tRAS,min von 50 ns und 42,5 ns und tRP von 20 ns und
25 ns. Da die Verbindungsressourcen für Lesen und Spalte aufgeteilt
sind und unabhängig
sind, wird eine feine Zeitsteuerung diese internen Vorrichtungsoperationen
erzielt.
-
Ein weiteres Ausführungsbeispiel kann Verbindungsressourcen
mit niedrigeren Vorrichtungs- und Systemkosten verbinden. Diese
Kompromisse reduzieren im Allgemeinen die Fähigkeit zur feinen Zeitsteuerung
unter Verwendung von Offsets zugunsten von niedrigeren Kosten oder
einer höheren
Latenz (auf Grund von Informationspacketisierung). Ein Beispiel
dafür ist
das Kombinieren von Vorladen und Lesen in einer einzelnen Verbindungsressource,
so dass es nur Lese/Vorlade-Busse und Spaltensteuerbusse gibt, wie
es in 43 gezeigt ist.
In diesem Fall kann die Zeitoffsettechnik nicht zum Steuern von
Lese-/Vorladezeitwechselwirkungen verwendet werden, aber sie können immer
noch zum Steuern von Lese-/Spalten-Zeiten (tRCD) und Spalten/Vorladen-Zeiten
(tCPS) verwendet werden. Ein weiteres Beispiel dafür ist das
Kombinieren von Vorladen und Lesen in einer einzelnen Verbindungsressource
und auch das Kombinieren von Spalten und Vorladen in einer anderen
Verbindungsressource, so dass das Vorladen von beiden Ressourcen
gesteuert werden kann.
-
Programmierbarer
Verzögerungsmechanismus
für vorrichtungsinduzierte
Zeitvariation
-
Die vorliegende Erfindung verwendet
auch vielfach programmierbare Verzögerungsmechanismen innerhalb
der Vorrichtung, die mit internen Vorrichtungsverzögerungskomponenten
zum Ermöglichen
einer feinkörnigen
Zeitsteuerung in Übereinstimmung
gebracht werden können.
Ein Beispiel dafür
ist die Steuerung einer Spaltenausleselatenz. Die Spaltenausleselatenz
in dem Speicherkern tCAC umfasst zwei von unterschiedlichen Bestandteilen
des Spaltendatenwegs stammende Komponenten: tCLS und tDAC, wie es
in 14 gezeigt ist. tCLS
ist die Verzögerung
zwischen der ansteigenden Flanke von COLLAT, wenn die Spaltenadresse in
dem Kern zwischengespeichert wird, und der ansteigenden Flanke von
COLCYC, wenn der Spaltenzugriff beginnt und von den Leseverstärkern in
dem Kern auf Daten zugegriffen wird. Diese zwei Verzögerungen
können
von Vorrichtung zu Vorrichtung in Abhängigkeit von Prozessvariationen,
Schaltungsdesign, Versorgungsspannung und Betriebstemperaturen variieren.
-
Herkömmliche Vorrichtungen haben
Verzögerungselemente
zum Kompensieren einer Verzögerungsvariation
in einer Spaltenausleselatenz verwendet, aber sie haben nur einen
einzelnen Verzögerungswert
zum Abdecken mehrerer Spaltenausleselatenzkomponenten verwendet.
Die vorliegende Erfindung unterscheidet sich von dem Stand der Technik
dadurch, dass individuelle Verzögerungskomponenten
verwendet werden, die spezifischen Abschnitten der internen Verzögerungen
der Vorrichtung entsprechen.
-
Jede dieser Techniken hat ihre Nachteile
und Vorteile. Die allumfassende Verzögerung stellt ein sauberes
Steuermodell für
die Anwendung bereit, die sich nicht mit internen Speichervorrichtungsimplementierungsdetails
verändert.
Dies erfordert jedoch von der Speichervorrichtung, sich selbst zu
dekodieren, wie die einzelne programmierte Verzögerung in die separaten Verzögerungen
des Spaltendatenwegs aufgeteilt werden sollten und wie sie in die
korrekte Anzahl von Taktzyklen konvertiert werden sollte. Dies kann
ein schwieriges Problem darstellen, da die Verzögerung irgendeiner Vorrichtung
zur Zeit des Entwurfs nicht bekannt ist. Eine weitere Komplikation
ist, dass die Periode des Taktes beim Betrieb unbekannt ist, selbst
zur finalen Testzeit, wenn die Vorrichtungsverzögerungen gemessen werden können. Verfahren,
die eine Teilung einer internen Speichervorrichtungsverzögerung durch
die Taktperiode umfassen, werden nicht als einfach angesehen und
stellen eine logisch teure Operation zum Eingeben in eine Vorrichtung
dar.
-
Das Teilen der kodierten Verzögerungen
in Abschnitte, die internen Speichervorrichtungsverzögerungen
entsprechen, und das Bereitstellen derselben an den Controller (beispielsweise über interne
Vorrichtungsregister) erleichtert das Teilungsproblem für die Speichervorrichtung,
da alle Entscheidungen in die Applikationsschicht zurückgeschoben
worden sind. Nun liegt die Last auf der Applikation bzw. der Anwendung,
ausreichende Intelligenz zum Kennen der Betriebsfrequenz, Auslesen
der Vorrichtungsverzögerungsanforderung und
Verwenden eines Verfahrens zum Programmieren von beiden bereitszustellen.
Das Aufteilungsproblem kann auf einfach Weise in Software umgesetzt
werden und wird von der Speichervorrichtung eliminiert. Die Speichervorrichtung
muss nur den richtigen Steuermechanismus präsentieren, so dass die Software
die Aufgabe erfüllen
kann. Geteilte, kodierte Verzöge rungen
stellen auch eine feinkörnige
Zeitsteuerung bereit, die beispielsweise zum Kompensieren von Prozessvariationen
nützlich
ist, die nicht jede Verzögerungsstufe
gleichermaßen
beeinflussen müssen.
-
31 zeigt
die Komponenten des Spaltenauslesewegs. Wie vorstehend beschrieben
ist, umfasst die Spaltenauslesezugriffslatenz tCAC zwei Komponenten:
tCLS und tDAC.
-
44 zeigt
einen Weg zum Implementieren einer programmierbaren Verzögerung für tCLS,
die das COLCYC-Steuersignal verzögert
und tCLS effektiv vergrößert. Die
Variation von tCLS ist in 45 gezeigt.
-
Ein variables tDAC wird durch Verzögern des
LoadRD-Signals in dem Zwischenspeicher bei dem Kernausgang erzielt.
Wie vorstehend beschrieben ist, ist der Verzögerungsbereich auf LoadRD limitiert,
da das gültige
Ausgangsfenster der Auslesedaten von dem Kern limitiert ist (gültiges Auslesefenster
= tPC – tDAS
+ tDOH, wie es in 14 gezeigt
ist) und das Fenster die Setup- und Halteanforderungen des Zwischenspeichers
erfüllen
muss. Jenseits dieses begrenzten Bereichs wäre ein zusätzliches Puffern zum Erhöhen der
gültigen
Auslesefenstergröße notwendig.
Damit würde
ein zusätzlicher
Bereich hinzugefügt
werden und kritischere Wegprobleme in Anbetracht des Wunsches nach
einer minimalen Ausleselatenz auftreten. Die programmierbare Verzögerung von
LoadRD kann zum Kompensieren sowohl der variablen tDAC oder der
Verbindungsverzögerungsvariation
verwendet werden. Jede verbleibende, nicht für tDAC verwendete Verzögerung kann
zum Durchführen
einer Rückend-Einpegelung
zum Kompensieren von Verbindungsverzögerungsvariationen verwendet
werden.
-
Andere Zeitparameter von Spaltenoperationen
können
auch programmierbar sein. Beispielsweise kann die Spalten-/Zeilenvorladezeit
tCPS, wie in dem Zeitdiagramm in 14 gezeigt
ist, durch Addieren einer programmierbaren Verzögerung zu dem Vorladesignal
programmierbar sein, das von der Spaltenlogik ausgelöst wird
und zu der Vorladezustandsmaschine gesendet wird. tCAS, die Zeit
zwischen den ansteigenden und fallenden Flanken von COLCYC, kann
auch programmierbar gemacht werden und nützlich sein, abhängig davon,
wie die Flanken von dem Kern verwendet werden. Wenn beispielsweise
ein Kerndesign die ansteigende Flanke zum Starten der Spaltenzugriffoperation
verwendet und die fallende Flanke zum Durchführen des Spaltenvorladens verwendet,
wäre eine
programmierbare tCAS sehr nützlich,
wenn es Zeitvariationen gibt, wenn das Spaltenvorladen nach dem
Starten des Spaltenzugriffs beginnen könnte. Um dies zu implementieren, muss
ein programmierbares Verzögerungselement
zu der COLCYC-Logik hinzugefügt
werden, um eine variable Zeitsteuerung der fallenden Flanke zu ermöglichen.
-
Die Haupttechniken zum Steuern dieser
Verzögerungselemente
für vorrichtungsinduzierte
Zeitvariationen gleichen denjenigen, die für verbindungsinduzierte Zeitvariationen
beschrieben worden sind, obwohl sie sich leicht unterscheiden:
- – dynamisch
kodierte Verzögerung;
in diesem Fall wird die Steuerung tatsächlich an die Speichervorrichtung
zu anderen Zeiten als den Zeiten gesendet, wenn eine feste Verzögerung zu
dem Speicherkern angewendet werden kann; stattdessen wird eine zusätzliche
Verzögerung,
die von der mit der Referenz gesendeten Steuerinformation bestimmt
wird, zu der Nominalsteuerverzögerung
zwischen dem Empfang von Steuerinformationen und ihrer Anwendung
auf den Speicherkern hinzugefügt.
- – statisch
kodierte Verzögerung;
in diesem Falle steuert ein Register innerhalb der Speichervorrichtung,
die zur Initialisierungszeit programmiert wird, wie viel Verzögerung zwischen
dem Empfang von Steuerinformationen und der Anwendung auf den Kern
eingefügt
wird. Das in 46 gezeigte
Initialisierungsverfahren entnimmt Informationen, die Verzögerungen
und Positionen von tatsächlich
installierten Komponenten charakterisieren, und programmiert die
Verzögerungsregister
in den Vorrichtungen dementsprechend.
-
Die internen Vorrichtungsverzögerungen
von Speicherkomponenten-Spaltenoperationen
können
in einfach parametrisierte Elemente aufgebrochen werden, die während der
Lebenszeit jedes besonderen Controllers stabil bleiben. Da dies
wahr ist, verwendet das bevorzugte Ausführungsbeispiel statisch kodierte,
individuelle Verzögerungskomponenten.
Selbst diese könnten
kritische Wegprobleme verursachen, wenn sie nicht sorgfältig ausgelegt
sind.
-
Alle vorrichtungsinduzierten Verzögerungskomponenten
können
statisch kompensiert werden, da sie keinen Effekt auf die Kanalbandbreite
haben, sobald sie kompensiert sind. Sie haben nur einen leichten
Effekt auf eine durchschnittliche Kanalservicezeit. Auf Grund des
relativ kleinen Effekts auf die Kanalleistung bringt es we nig, die
Verzögerungen
dynamisch zu kodieren, insb. da die kritischen Wegeffekte signifikant
sind.
-
Ein Fachmann wird das Folgende erkennen:
ein Empfänger
und ein Sender können
in einer Vorrichtung kombiniert werden; ein Master und ein Slave
können
in einer Vorrichtung kombiniert werden; alternative Ausführungsbeispiele
können
unterschiedliche Abschnitte des Spaltenzugriffswegs steuern; alternative
Ausführungsbeispiele
können
unterschiedliche Mechanismen zum Steuern jedes steuerbaren Intervalls
verwenden; Verfahren können
für jegliche
verbindungsinduzierte Verzögerungsvariationen
und jede Vorrichtung verwendet werden, die einen internen Block
hat, der vielfältige
Operationen und Verzögerungseinschränkungen zwischen
denjenigen Operationen aufweist, die variieren; und die Erfindung
ist nicht auf Vorrichtungen mit Speicherkernen beschränkt, sondern
im Allgemeinen auf jede Art von Vorrichtung.
-
Die vorstehende Beschreibung zum
Zwecke der Erläuterung
verwendete eine bestimmte Nomenklatur bzw. Namensgebung zum Ermöglichen
eines genauen Verständnisses
der Erfindung. Dem Fachmann ist jedoch klar, dass die spezifischen
Details nicht notwendig sind, um die Erfindung zu verwirklichen.
In anderen Fällen
sind wohlbekannte Schaltungen und Vorrichtungen als Blockdiagramm
gezeigt, um eine unnötige
Ablenkung von der zu Grunde liegenden Erfindung zu vermeiden. Somit
sind die vorstehenden Beschreibungen von bestimmten Ausführungsbeispielen
der vorliegenden Erfindung zum Zwecke der Illustration und Beschreibung
präsentiert
worden. Sie sollen nicht als erschöpfend angesehen werden oder
die Erfindung auf die offenbarten Formen beschränken, offensichtlich sind viele
Modifikationen und Variationen angesichts der vorstehenden Lehre
möglich.
Die Ausführungsbeispiele
wurden ausgewählt
und beschrieben, um die Prinzipien der Erfindung so gut wie möglich zu
erläutern
und ihre praktischen Anwendungen zu erläutern, um dadurch anderen Fachleuten
zu ermöglichen,
die Erfindung und vielfältige
Ausführungsbeispiele
mit allen möglichen
Modifikationen, die für
die vorgedachte, spezielle Verwendung geeignet sind, am besten zu
verwenden. Der Schutzbereich der Erfindung soll durch die nachfolgenden
Ansprüche
definiert werden.