-
VERWANDTE
ANMELDUNGEN
-
Die vorliegende Anmeldung ist eine
Teilfortsetzung der US-Patentanmeldung mit der Seriennummer 09/165,228
von Wingyu Leung und Fu-Chieh Hsu mit dem Titel "Method and Apparatus for Complete Hiding
of the Refresh of the Semiconductor Memory", die am 1. Oktober 1998 eingereicht wurde.
-
Die vorliegende Anmeldung bezieht
sich ferner auf das US-Patent Nr. 6 028 804 von Wingyu Leung mit
dem Titel "Method
and Apparatus for 1-T SRAM Compatible Memory", die am 9. März 1998 eingereicht wurde;
auf das US-Patent Nr. 6 222 785 von Wingyu Leung mit dem Titel "Method and Apparatus
for Refreshing a Semiconductor Memory using Idle Memory Cycles", eingereicht am
20. Januar 1999, und auf das US-Patent
Nr. 6 075 740 von Wingyu Leung mit dem Titel "Method and Apparatus for Increasing
the Time Available for Refresh for 1-T SRAM Compatible Devices", eingereicht am
27. Oktober 1998.
-
BEREICH DER
ERFINDUNG
-
Die vorliegende Erfindung betrifft
Halbleiterspeicher, insbesondere dynamische Direktzugriffsspeicher
(DRAM) und statische Direktzugriffsspeicher (SRAM). Die vorliegende
Erfindung betrifft insbesondere ein Verfahren und eine Vorrichtung
zum Handhaben von Auffrischvorgängen
in einem Halbleiterspeicher, so dass die Auffrischvorgänge externe Zugriffsvorgänge nicht
stören.
-
ERÖRTERUNG
DER VERWANDTEN TECHNIK
-
Eine konventionelle DRAM-Speicherzelle, die
aus einem Transistor und einem Kondensator besteht, ist erheblich
kleiner als eine konventionelle SRAM-Zelle, die aus 4 bis 6 Transistoren
besteht. In einer DRAM-Zelle gespeicherte Daten müssen jedoch
periodisch aufgefrischt werden, während dies bei in einer SRAM-Zelle
gespeicherten Daten nicht nötig
ist. Jeder Auffrischvorgang einer DRAM-Zelle verbraucht Speicherbandbreite.
So beträgt
beispielsweise die Zykluszeit einer 100 MHz DRAM-Array 10 ns. In
dieser DRAM-Array dauert jeder externe Zugriff 10 ns und jeder Auffrischzugriff
erfordert wenigstens 10 ns. Da ein externer Zugriff und ein Auffrischzugriff gleichzeitig
eingeleitet werden können,
muss die DRAM-Array beide innerhalb der zulässigen Zugriffszykluszeit handhaben
können,
um zu verhindern, dass Auffrischzugriffe externe Zugriffe stören. Dies begrenzt
die maximale externe Zugriffszykluszeit auf wenigstens 20 ns, davon
10 ns zum Handhaben des externen Zugriffs und 10 ns zum Handhaben
des Auffrischzugriffs. Dies ist selbst dann der Fall, wenn die Auffrischzugriffe
durchschnittlich mit einer Frequenz von 62,5 kHz durchgeführt werden.
Infolgedessen muss die maximale Zugriffsfrequenz der DRAM-Array
gleich oder kleiner als 50 MHz sein. Somit wird eine 100 MHz DRAM-Speicherarray benötigt, um
ein Bauelement herzustellen, das mit 50 MHz arbeiten kann. Und das
ist einfach nicht wirtschaftlich.
-
Frühere Versuche, DRAM-Zellen
in SRAM-Anwendungen zu verwenden, hatten aus verschiedenen Gründen nur
begrenzten Erfolg. So brauchte beispielsweise ein solches DRAM-Bauelement
ein externes Signal zum Steuern von Auffrischvorgängen (siehe
131,072-Word by 8-Bit CMOS Pseudo Static RAM, Toshiba Integrated
Circuit Technical Data (1996)). Darüber hinaus werden externe Zugriffe
auf dieses DRAM-Bauelement während
der Speicherauffrischvorgänge
verzögert.
Die Folge ist, dass die Auffrischvorgänge nicht transparent sind und
dass das resultierende DRAM-Bauelement mit einem SRAM-Bauelement
nicht völlig
kompatibel sein kann.
-
In einem anderen Schema des Standes
der Technik wird ein schneller SRAM-Cache-Speicher mit einer relativ langsamen
DRAM-Array verwendet, um die durchschnittliche Zugriffszeit des
Speichergerätes
zu beschleunigen (siehe US-Patent Nr. 5,559,750 von Katsumi Dosaka
et al. und "Data Sheet
of 16 Mbit Enhanced SDRAM Family 4Mx4, 2Mx8, 1Mx16" von Enhanced Memory
Systems Inc., 1997). Die tatsächliche
Zugriffszeit des Bauelementes variiert je nach der Cache-Hit-Rate.
Es ist ein Schaltkomplex vorgesehen, um die DRAM-Zellen aufzufrischen.
Der Auffrischvorgang ist für
externe Zugriffe jedoch nicht transparent. Das heißt, die
Auffrischvorgänge
wirken sich auf die Speicherzugriffszeit aus. Demzufolge kann das
Bauelement die Anforderung einer vollkommen deterministischen Direktzugriffszeit
nicht erfüllen.
-
Andere Ansätze des Standes der Technik
arbeiten mit Multibanking, um die durchschnittliche Zugriffszeit
eines DRAM-Bauelementes zu reduzieren. Beispiele für Multibanking-Ansätze sind
in "Data sheet,
MD904 to MD920, Multi-bank DRAM (MDRAM) 128Kx32 to 656Kx32" von MoSys Inc. 1996
sowie in "An Access-Sequence
Control Scheme to Enhance Random-Access Performance of Embedded
DRAM's" von Kazushige Ayukawa
et al., IEEE JSSC, Bd. 33, Nr. 5, Mai 1998, auf den Seiten 800–806 beschrieben.
Diese Multibanking-Ansätze lassen
es nicht zu, dass eine einzelne Speicherbank einen Auffrischzyklus
verzögert.
-
Ein weiteres Schema des Standes der
Technik arbeitet mit einem Lesepuffer und einem Schreibpuffer, um
die sequentielle oder gebündelte
Natur eines externen Zugriffs zu nutzen. Ein Beispiel für ein solches
Schema des Standes der Technik ist im US-Patent Nr. 5,659,515 mit
dem Titel "Semiconductor
Memory Device Capable of Refresh Operation in Burst Mode" von R. Matsuo und
T. Wada beschrieben. In diesem Schema lässt es ein Burst-Zugriff zu, dass
ein Register die sequentiellen Zugriffe einer Transaktion handhabt,
während
die Speicherarray aufgefrischt wird. Dieses Schema lässt jedoch
keine aufeinander folgenden Direktzugriffe zu. So kann der Speicher
beispielsweise keinen Direktzugriff pro Taktzyklus handhaben.
-
Ein weiteres Schema des Standes der
Technik, das versucht, Auffrischvorgänge in einer DRAM-Zelle vollständig zu
verbergen, beinhaltet das Schema, das im US-Patent Nr. 5,642,320
mit dem Titel "Self-Refreshable
Dual Port Dynamic CAM Cell and Dynamic CAM Cell Array Refreshing
Circuit" von H.
S. Jang beschrieben ist. In diesem Schema kommt ein zweiter Port
zu jeder der dynamischen Speicherzellen hinzu, so dass die Auffrischung
an einem Port durchgeführt
werden kann, während
ein normaler Zugriff am anderen Port durchgeführt wird. Der zusätzliche
Port verdoppelt im Wesentlichen die Zugriffsbandbreite der Speicherzelle,
aber dies geht auf Kosten von zusätzlicher Siliciumfläche.
-
Es wäre demgemäß wünschenswert, ein Speicherbauelement
zu haben, das flächeneffiziente DRAM-Zellen
verwendet und die Auffrischung der DRAM-Zellen auf eine Weise handhabt,
die für
einen zugreifenden Speicher-Client außerhalb des Speicherbauelementes
vollkommen transparent ist. Das heißt, es wäre wünschenswert, dass Auffrischvorgänge erfolgreich
durchgeführt
werden könnten, ohne
auf unbenutzte externe Zugriffszeit zurückgreifen zu müssen. Oder
anders ausgedrückt,
es wäre wünschenswert,
ein Speichergerät
zu haben, mit dem DRAM-Zellen oder andere auffrischbare Speicherzellen
verwendet werden können,
um SRAM-kompatible Bauelemente oder andere kompatible Speicherbauelemente
aufzubauen, die keiner Auffrischung bedürfen.
-
ZUSAMMENFASSUNG
-
Gemäß einem Aspekt der vorliegenden
Erfindung wird somit ein Speichergerät bereitgestellt, das Folgendes
umfasst: eine Mehrzahl von Speicherzellen, die in einer Mehrzahl
von Bänken
konfiguriert sind, wobei jede der Speicherzellen innerhalb einer vorbestimmten
Auffrischperiode aufgefrischt werden muss, um einen Datenwert zu
behalten; und eine Steuerschaltung zum Zugreifen auf die und Auffrischen
der Speicherzellen, wobei die Steuerschaltung so konfiguriert ist,
dass sie Direktzugriffsvorgängen gegenüber Auffrischvorgängen Vorrang
gibt, damit während
jedes Speicherzyklus direkt auf die Speicherzellen zugegriffen werden
kann, ohne Verzögerungen für Auffrischvorgänge, wobei
die Steuerschaltung so konfiguriert ist, dass sie einen Auffrischvorgang
an einer Bank nur dann durchführt,
wenn die Bank keine anhängige
externe Zugriffsanforderung hat, wobei die Steuerschaltung ein Datenspeicherelement
beinhaltet, das zum Speichern von Zugriffsdaten der Bänke konfiguriert
ist, wobei das Datenspeicherelement eine Speicherkapazität hat, die
wenigstens gleich der Kapazität
von einer der Bänke
minus der Kapazität
von einer der Reihen von Zellen in einer der Bänke ist, wobei die vorbestimmte
Auffrischperiode länger
ist als die Zeit, die zum Zugreifen auf das gesamte Datenspeicherelement
erforderlich ist, wodurch gewährleistet
wird, dass jede der Bänke
innerhalb der vorbestimmten Auffrischperiode aufgefrischt wird.
-
In einem anderen Aspekt wird ein
Verfahren zum Betreiben eines Mehrbankspeichers bereitgestellt,
umfassend eine Mehrzahl von Speicherzellen, die jeweils innerhalb
einer vorbestimmten Auffrischperiode aufgefrischt werden müssen, um
einen Datenwert zu behalten, wobei das Verfahren die folgenden Schritte
umfasst:
Empfangen von externen Zugriffsanforderungen an den
Mehrbankspeicher;
Erzeugen von Auffrischanforderungen innerhalb
des Mehrbankspeichers;
unmittelbares Verarbeiten jeder der
externen Zugriffsanforderungen; und
Gewähren von Vorrang für externe
Zugriffsanforderungen gegenüber
Auffrischanforderungen, so dass eine Auffrischanforderung an eine
Bank des Mehrbankspeichers nur dann verarbeitet wird, wenn die Bank
keine anhängige
externe Zugriffsanforderung hat;
Speichern von Zugriffsdaten
in Verbindung mit den Bänken
in einem Speicherelement mit einer Speicherkapazität, die wenigstens
gleich der Kapazität von
einer der Bänke
minus der Kapazität
von einer Reihe von Zellen in einer der Bänke ist, wobei die vorbestimmte
Auffrischperiode länger
ist als die Zeit, die zum Zugreifen auf das gesamte Speicherelement nötig ist,
wodurch gewährleistet
wird, dass Auffrischanforderungen innerhalb der vorbestimmten Auffrischperiode
verarbeitet werden.
-
Die Speicherzellen sind in einer
Mehrzahl von unabhängig
gesteuerten Speicherbänken
angeordnet. Somit werden Lese-, Schreib- und Auffrischvorgänge in jeder
Bank unabhängig
gesteuert. Jede der Speicherbänke
ist parallel zu einem Lesepuffer geschaltet, so dass von einer beliebigen
der Speicherbänke
gelesene Daten zum Lesepuffer gesendet werden. Jede der Speicherbänke ist
ferner parallel zu einem Schreibpuffer geschaltet, so dass auf eine
der Speicherbänke
geschriebene Daten vom Schreibpuffer bereitgestellt werden können.
-
Die Steuerschaltung beinhaltet einen SRAM-Cache-Speicher,
der dieselbe Konfiguration hat wie jede der Speicherbänke. Ein
Cache-Lesepuffer ist zwischen einem Ausgangsport des SRAM-Cache-Speichers
und dem Schreibpuffer geschaltet, wodurch die Übertragung von Daten vom SRAM-Cache-Speicher
auf die Speicherbänke
erleichtert wird. Ebenso ist ein Cache-Schreibpuffer zwischen einem Eingangsport
des SRAM-Cache-Speichers
und dem Lesepuffer geschaltet, wodurch die Übertragung von Daten von den
Speicherbänken
zum SRAM-Cache-Speicher erleichtert wird. Der Cache-Lesepuffer und
der Cache-Schreibpuffer sind ferner mit einem externen Datenbus
gekoppelt. Der SRAM-Cache
bietet eine Schnittstelle zwischen dem externen Datenbus und den
Speicherbänken.
Der SRAM-Cache implementiert eine Write-Back-Richtlinie, so dass
alle Schreibdaten zunächst
auf den SRAM-Cache geschrieben werden, bevor sie auf die Speicherbänke geschrieben
werden, und alle zum externen Datenbus gesendeten Lesedaten werden
im SRAM-Cache gespeichert. In einer Ausgestaltung ist der SRAM-Cache
als Direct-Map-Cache
konfiguriert. Der SRAM-Cache wird so gewählt, dass er eine Kapazität hat, die
ausreicht, um zu gewährleisten,
dass jede der Speicherbänke
ordnungsgemäß innerhalb
der vorbestimmten Auffrischperiode aufgefrischt wird. Das heißt, selbst
unter den ungünstigsten
Cache-Thrashing-Bedingungen werden die notwendigen Auffrischvorgänge immer
ohne eine Verzögerung
von externen Zugriffen auf das Speichergerät durchgeführt.
-
In einer Ausgestaltung wird die Cache-Write-Back-Richtlinie
wie folgt durchgeführt.
Zunächst wird
eine auf dem externen Datenbus empfangene aktuelle Zugriffsadresse
mit einer im SRAM-Cache gespeicherten Cache-Adresse verglichen,
um zu ermitteln, ob ein Cache-Miss oder ein Cache-Hit vorliegt.
Wenn ein Cache-Hit vorliegt, werden die angeforderten Daten entweder
vom SRAM-Cache gelesen (für
einen Lesezugriff) oder auf den SRAM-Cache geschrieben (für einen
Schreibzugriff). Somit wird auf die Speicherbänke nicht zugegriffen, wenn ein
Cache-Hit auftritt. Auffrischvorgänge können somit innerhalb. der Speicherbänke durchgeführt werden,
wenn ein Cache-Hit auftritt, wenn eine Auffrischanforderung anhängig ist.
Da die Speicherbänke unabhängig gesteuert
werden, können
alle Speicherbänke
während
eines Cache-Hit gleichzeitig aufgefrischt werden. Alternativ können vorbestimmte
Sätze der
Speicherbänke
gleichzeitig aufgefrischt werden.
-
Bei einem Cache-Miss wird ermittelt,
ob der Cache-Einsprung (Entry) in Verbindung mit der Cache-gespeicherten
Adresse Daten enthält,
die modifiziert wurden. Das heißt,
es wird ermittelt, ob der Cache-Entry dieselben Daten enthält wie die
zugehörige Speicherbank.
Es wird ebenfalls ermittelt, ob der aktuelle Zugriff ein Lesezugriff
oder ein Schreibzugriff ist.
-
Wenn ein Cache-Miss auftritt und
die Daten im Cache-Entry nicht modifiziert wurden, dann fährt die
Verarbeitung für
Lese- und Schreibzugriffe wie folgt fort. Für einen Lesezugriff werden
die gewünschten
Daten von der Speicherbank in Verbindung mit der aktuellen Zugriffsadresse
gelesen. Diese Daten werden gleichzeitig an den externen Datenbus
angelegt und auf den SRAM-Cache geschrieben, wodurch der ursprüngliche
Cache-Entry überschrieben
wurde. Da der ursprüngliche
Cache-Entry keine modifizierten Daten enthielt, besteht keine Notwendigkeit,
den urspünglichen
Cache-Entry unter diesen Bedingungen zurückzuschreiben. Für einen Schreibzugriff
wird ein Teil des ursprünglichen
Cache-Entry mit den neuen Daten in Verbindung mit dem Schreibzugriff überschrieben.
Der restliche Teil des ursprünglichen
Cache-Entry wird mit Daten überschrieben,
die von der Speicherbank abgerufen wurden, die durch die aktuelle
Zugriffsadresse identifiziert wird. Auch hier gibt es, da der ursprüngliche
Cache-Entry keine modifizierten Daten enthielt, keine Notwendigkeit,
den ursprünglichen
Cache-Entry unter diesen Bedingungen zurückzuschreiben. Man beachte,
dass während
eines Cache-Miss nur auf eine Speicherbank zugegriffen zu werden
braucht, wenn der Cache-Entry keine modifizierten Daten enthält.
-
Wenn ein Cache-Miss auftritt und
die Daten im Cache-Entry modifiziert wurden, dann verläuft die Verarbeitung
wie folgt. Zunächst
wird der Cache-Entry auf die Speicherbank zurückgeschrieben, von der er stammte.
Bei diesem Write-Back-Vorgang wird der Cache-Entry vom SRAM-Cache
durch den Cache-Lesepuffer und den Schreibpuffer auf die Speicherbank übertragen.
Gleichzeitig wird ein neuer Cache-Entry von einer Speicherbank gelesen,
die durch die externe Zugriffsadresse identifiziert wird. Dieser
neue Cache-Entry wird auf den SRAM-Cache geschrieben. Bei diesem
Vorgang wird der neue Cache-Entry von der Speicherbank durch den
Lesepuffer und den Cache-Schreibpuffer
auf den SRAM-Cache übertragen.
Wenn der aktuelle Zugriff ein Lesezugriff ist, dann wird der neue
Cache-Entry gleichzeitig zu dem externen Datenbus geleitet. Wenn
der Zugriff ein Schreibzugriff ist, werden die Schreibdaten zusammen
mit dem Rest der Daten des neuen Cache-Entry auf den SRAM-Cache
geschrieben.
-
Man beachte, dass während eines
Cache-Miss nur auf eine oder zwei Speicherbänke zugegriffen wird. Somit
können
alle anderen Speicherbänke
während
eines Cache-Miss-Vorgangs
aufgefrischt werden. Man beachte auch, dass, da Lese- und Schreibzugriffe
auf die Speicherbänke
gleichzeitig erfolgen, jeder Zugriff während einer einzigen Taktperiode
beendet werden kann. Die Folge ist, dass auf das Speichergerät auf dieselbe
Weise zugegriffen wird wie auf einen konventionellen SRAM.
-
Die vorliegende Erfindung wird im
Hinblick auf die nachfolgende Beschreibung und die Zeichnungen besser
verständlich.
-
KURZE BESCHREIBUNG
DER ZEICHNUNGEN
-
1 ist
ein Blockdiagramm eines 1-T SRAM gemäß einer Ausgestaltung der vorliegenden Erfindung.
-
2 ist
ein Blockdiagramm, das die Organisation von DRAM-Bänken, eines
SRAM-Cache-Speichers und eines Cache-Tag-Speichers gemäß einer
Ausgestaltung der vorliegenden Erfindung illustriert.
-
3 ist
ein schematisches Diagramm einer DRAM-Bank und einer zugehörigen Zugriffssteuerschaltung
gemäß einer
Ausgestaltung der vorliegenden Erfindung.
-
4 ist
ein Wellenformdiagramm, das den zeitlichen Ablauf von vier aufeinander
folgenden Transaktionen gemäß einer
Ausgestaltung der vorliegenden Erfindung illustriert.
-
5 ist
ein Blockdiagramm eines 1-T SRAM-Systems gemäß einer weiteren Ausgestaltung
der vorliegenden Erfindung.
-
6 ist
ein Blockdiagramm einer Speichersteuereinheit für das 1-T SRAM-System von 5 gemäß einer Ausgestaltung der vorliegenden
Erfindung.
-
7 ist
ein Schaltungsdiagramm eines Lese-Schreib-Tag-Controllers gemäß einer
Ausgestaltung der vorliegenden Erfindung.
-
8 ist
ein Schaltschema eines Lese-Schreib-Datenpuffer-Controllers gemäß einer Ausgestaltung
der vorliegenden Erfindung.
-
9 ist
ein Schaltschema eines Speicher-Lese-Schreib-Controllers gemäß einer
Ausgestaltung der vorliegenden Erfindung.
-
10 ist
ein Blockdiagramm eines Speicherblocks des 1-T SRAM-Systems von 5 gemäß einer Ausgestaltung der vorliegenden
Erfindung.
-
11 ist
ein Schaltschema eines Speicherbankcontrollers des Speicherblocks
von 10 gemäß einer
Ausgestaltung der vorliegenden Erfindung.
-
12 ist
ein Blockdiagramm des Schreibpuffers des 1-T SRAM-Systems von 5 gemäß einer Ausgestaltung der vorliegenden
Erfindung.
-
13 ist
ein Blockdiagramm des Lesepuffers des 1-T SRAM-Systems von 5 gemäß einer Ausgestaltung der vorliegenden
Erfindung.
-
14 ist
ein Wellenformdiagramm, das die Steuersignal-Zeitsteuerung während drei
verschiedener Lesezugriffe auf das 1-T SRAM-System von 5 gemäß einer Ausgestaltung der vorliegenden Erfindung
illustriert.
-
15 ist
ein Wellenformdiagramm, das die Steuersignal-Zeitsteuerung während vier
verschiedener Schreibzugriffe auf das 1-T SRAM-System von 5 gemäß einer Ausgestaltung der vorliegenden Erfindung
illustriert.
-
AUSFÜHRLICHE BESCHREIBUNG
-
Gemäß der vorliegenden Erfindung
wird ein SRAM-kompatibles Bauelement mit DRAM-Zellen entworfen.
Dieses SRAM-kompatible Bauelement wird nachfolgend als Ein-Transistor-SRAM (1-T SRAM)
bezeichnet. Der 1-T SRAM der beschriebenen Ausgestaltung hat eine
Kapazität
von 128 K Wörtern
mit einer Wortlänge
von jeweils 32 Bit. Der 1-T SRAM beinhaltet 64 DRAM-Bänke, die
unabhängig voneinander
arbeiten können,
so dass parallele Vorgänge
wie z.B. Lesen, Schreiben und Auffrischen in verschiedenen DRAM-Bänken gleichzeitig
stattfinden können.
Es ist ein Mechanismus vorgesehen, so dass Auffrischzugriffsanforderungen
gleichzeitig zu mehreren DRAM-Bänken rundgesendet
werden. Die DRAM-Bänke,
die das rundgesendete Auffrischanforderungssignal empfangen, durchlaufen
einen Auffrischzyklus nur dann, wenn kein Bankzugriff anhängig ist.
Eine Auffrischadresse wird lokal innerhalb jeder DRAM-Bank durch
ihren eigenen Adressauffrischzähler
geliefert. In der beschriebenen Ausgestaltung wird die Auffrischanforderung
zu allen DRAM-Bänken
rundgesendet. In einer anderen Ausgestaltung wird die Auffrischanforderung
jeweils immer nur zu einer Teilmenge der DRAM-Bänke rundgesendet.
-
Ein SRAM-Cache ist vorgesehen, um
die Daten der Stellen zu speichern, auf die zuletzt zugegriffen
wurde. Der SRAM-Cache hat eine wesentlich geringere Kapazität als die
DRAM-Bänke.
Um zu gewährleisten,
dass alle Auffrischzugriffe auf die DRAM-Bänke ordnungsgemäß innerhalb
einer vorbestimmten Auffrischperiode durchgeführt werden, und das selbst
unter den ungünstigsten
Cache-Thrashing-Bedingungen, wird die Größe des SRAM-Cache so gewählt, dass
er eine Speicherkapazität
hat, die gleich der (oder größer als
die) Speicherkapazität
einer der DRAM-Bänke
ist, minus der Kapazität
von einer Reihe von Zellen in der DRAM-Bank. Im Hinblick auf die
Einfachheit des Aufbaus in der nachfolgend beschriebenen Ausgestaltung
hat der SRAM-Cache eine Speicherkapazität, die gleich der Speicherkapazität einer
DRAM-Bank ist.
-
1 ist
ein Blockdiagramm eines 1-T SRAM 170 gemäß einer
Ausgestaltung der vorliegenden Erfindung. Der 1-T SRAM 170 beinhaltet vierundsechzig
DRAM-Bänke 0–63 sowie
vierundsechzig entsprechende Zugriffssteuerschaltungen 100–163.
Wie nachfolgend ausführlicher
beschrieben wird, sind die Zugriffssteuerschaltungen 100–163 so
geschaltet, dass sie die zum Zugreifen auf DRAM-Bänke 0-63 benötigten Adress-
und Steuersignale empfangen. Jede der DRAM-Bänke 0–63 beinhaltet
eine Array von 64 Reihen und 1024 Spalten von DRAM-Zellen. Die vierundsechzig DRAM-Bänke 0–63 benutzen
eine gemeinsame Lesepuffer-/Datenspeicherschaltung 171 und
eine gemeinsame Schreibpuffer/Datenspeicherschaltung 172.
Wie nachfolgend ausführlicher
beschrieben wird, werden Lese- und Schreibdaten zu und von den Bänken 0–63 durch
die Schaltungen 171 und 172 übertragen. Lesepuffer 171 und
Schreibpuffer 172 arbeiten unabhängig, so dass Daten von einer
der DRAM-Bänke 0–63 zur
selben Zeit gelesen werden können,
wie die Daten auf eine andere der DRAM-Bänke 0–63 geschrieben
werden.
-
Der 1-T SRAM 170 beinhaltet
auch Folgendes: Taktphasengenerator 180, Adresspuffer 181, Bankadressdecoder 182–183,
Komparator 184, Cache-Tag-Speicher 185, Cache-Steuersequencer 186, SRAM-Cache-Speicher 187,
Cache-Lesepuffer 188, Cache-Schreibpuffer 189, E/A-Treiber 190,
Multiplexer 191–193,
Demultiplexer 194 und Auffrisch-Timer 195. Diese
Elemente, die im Allgemeinen die Zugriffe auf den 1-T SRAM 170 steuern,
werden nachfolgend ausführlicher
beschrieben.
-
Der 1-T SRAM 170 arbeitet
als Reaktion auf die folgenden Signale: Ein-/Ausgabe(E/A) Datensignale
DQ [31:0], externe Adresssignale EA [16:0], Adress-Strobe-Signal
ADS#, Schreib/Lese-Indikator WR#, und Taktsignal CLK (zum Synchronisieren
von Speichertransaktionen zwischen 1-T SRAM 170 und der
Außenwelt).
Das hierin verwendete # Symbol bedeutet, dass ein Signal im L-Zustand
aktiv ist. Man beachte, dass die oben aufgeführten Signale keine Signale
in Bezug auf die Auffrischzugriffe von DRAM-Bänken 0–63 beinhalten.
-
Ein externes Bauelement leitet einen
Zugriff auf 1-T SRAM 170 ein, indem es ein logisch tiefes Adress-Strobe-Signal
ADS# aufdrückt,
um das Schreib/Lese-Anzeigesignal WR# in den gewünschten Zustand zu bringen,
und eine Speicheradresse EA [16:0] liefert. Das ADS#-Signal wird
zum Bankadressdecoder 182 und zum Cache-Steuersequencer 186 gesendet.
Die Zugriffsanforderung wird vom 1-T SRAM 170 an der ansteigenden
Flanke des CLK-Signals erkannt, die nach dem Aufdrücken des ADS#-Signals
im L-Zustand auftritt. Das WR#-Signal wird an den Cache-Steuersequencer 186 angelegt. Die
Speicheradresse EA [16:0] wird zum Adresspuffer 181 gesendet.
Die 17 Adressbits EA [16:0] werden in 4 Felder unterteilt. Adressbits
EA [16:11] bilden ein Bankadressfeld, das eine der vierundsechzig DRAM-Bänke 0–63 identifiziert.
Adressbits EA [10:5] bilden ein Reihenadressfeld, das eine der vierundsechzig
Reihen in der adressierten DRAM-Bank identifiziert. Adressbits EA
[4:3] bilden ein Spaltenadressfeld, das eine der vier 256-Bit-Sektionen in der adressierten
Reihe identifiziert. Schließlich
bilden Adressbits EA[2:0] ein Byte-Adressfeld, das eines der acht
32-Bit-Wörter
in der adressierten 256-Bit-Sektion identifiziert.
-
Lese- oder Schreibdaten DQ [31:0]
werden während
des Taktzyklus nach dem Erkennen der Zugriffsanforderung zum E/A-Treiber 190 übertragen. Wie
oben beschrieben, beinhaltet jede der DRAM-Bänke 0–63 eine
Array von 64 Reihen und 1024 Spalten von DRAM-Zellen. Jede der DRAM-Bänke 0–63 ist
mit dem Lesepuffer 171 und dem Schreibpuffer 172 gekoppelt.
Lesepuffer 171 und Schreibpuffer 172 beinhalten
transparente Signalspeicher, die Lese- und Schreibdaten jeweils
während
der DRAM-Lese- und – Schreibvorgänge rasten.
Sowohl der Lesepuffer 171 als auch der Schreibpuffer 172 haben
256 Signalspeicher, so dass diese Puffer eine 256-Bit-Sektion speichern
können.
Jede der DRAM-Bänke 0–63 hat
eine zugehörige
unabhängige
Zugriffssteuerschaltung 100–163, um parallele
Mehrbank-Vorgänge
zu erleichtern. Es werden der dedizierte Lesebus DB [255:0] und
der dedizierte Schreibbus DA [255:0] verwendet, so dass eine der DRAM-Bänke 0–63 einen
Schreibvorgang durchführen
kann, während
eine andere der DRAM-Bänke 0–63 gleichzeitig
einen Lesevorgang durchführen kann.
-
2 ist
ein Blockdiagramm, das die Organisation der DRAM-Bänke 0–63,
SRAM-Cache 187 und
Cache-Tag-Speicher 185 illustriert. Der Deutlichkeit halber
sind in 2 nur DRAM-Bänke 0 und 4 dargestellt.
Der SRAM-Cache 187 ist genau wie die DRAM-Bänke 0–63 organisiert.
Das heißt,
der SRAM-Cache 187 beinhaltet eine Array von 64 Reihen
und 1024 Spalten von SRAM-Zellen. Die SRAM-Zellen können beispielsweise
traditionelle Vier-Transistor- oder Sechs-Transistor-SRAM-Zellen sein.
Die Spalten von DRAM-Bänken 0–63 und
die Spalten von SRAM-Cache 187 sind logisch in vier Sektionen
unterteilt, wobei jede Sektion 256 Spalten (d. h. 256 Bits)
hat. Reihe 0, Sektion 0 der DRAM-Bank 0 speichert 256 Bits in der
Form von acht 32-Bit-Worten A, B, C, D, E, F, G und H. Reihe 1,
Sektion 2 von DRAM-Bank 0 speichert 256 Bits in der Form von acht
32-Bit-Wörtern I,
J, K, L, M, N, O und P. Reihe 1, Sektion 2 der DRAM-Bank 4 speichert
256 Bits in der Form von acht 32-Bit-Wörtern Q, R, S, T, U, V, W und
X.
-
Wie nachfolgend ausführlicher
beschrieben wird, speichert der SRAM-Cache 187 256-Bit-Cache-Entries
von den verschiedenen DRAM-Bänken 0–63.
So speichert z. B. Reihe 0, Sektion 0 von SRAM-Cache 187 einen
Cache-Entry, der von Reihe 0, Sektion 0 einer der DRAM-Bänke 0–63 empfangen wurde.
Ebenso speichert Reihe 1, Sektion 2 von SRAM-Cache 187 einen
Cache-Entry, der von Reihe 1, Sektion 2 einer der DRAM-Bänke 0–63 empfangen wurde.
In dem Beispiel von 2 speichert SRAM-Cache 187 die
Wörter
A, B, C, D, E, F, G und H von DRAM-Bank 0 als Cache-Entry für Reihe
0, Sektion 0. Cache-Tag 185 speichert die 6-Bit-Bankadresse
von DRAM-Bank 0 (d. h. 000000), was bedeutet, dass der Inhalt von
Reihe 0, Sektion 0 von SRAM-Cache 187 mit DRAM-Bank 0 assoziiert
ist. Jeder Entry des Cache-Tag 185 beinhaltet auch ein Gültig-Anzeigebit
V und ein Modifiziert-Anzeigebit M, die nachfolgend ausführlicher
beschrieben werden. Im Allgemeinen wird das Gültig-Anzeigebit V gesetzt, um
einen gültigen
Cache-Entry anzuzeigen. Ein gesetztes Modifiziert-Anzeigebit M zeigt
an, dass der assoziierte Cache-Entry
modifiziert wurde und dass der im SRAM-Cache 187 gespeicherte
assoziierte Cache-Entry
bei einem Cache-Miss-Zugriff zurück auf
die assoziierte DRAM-Bank geschrieben werden muss.
-
Ebenso in 2, der SRAM-Cache 187 speichert
die Wörter
Q, R, S, T, U, V, W und X von DRAM-Bank 4 als Cache-Entry
für Reihe
1, Sektion 2. Der Cache-Tag 185 speichert die 6-Bit-Bankadresse
von DRAM-Bank 4 (d. h. 000100), was bedeutet, dass der Inhalt von
Reihe 1, Sektion 2 von SRAM-Cache 187 mit der DRAM-Bank 4 assoziiert ist.
Das oben beschriebene Caching-Schema ist ein Direct-Mapped-Caching-Schema.
-
Cache-Lesepuffer 188 und
Cache-Schreibpuffer 189 sind mit dem SRAM-Cache 187 gekoppelt. Cache-Lesepuffer 188 und
Cache-Schreibpuffer 189 ermöglichen es dem SRAM-Cache 187,
einen Lesevorgang und einen Schreibvorgang während desselben Zyklus des
CLK-Signals durchzuführen.
In einer anderen Ausgestaltung wird der SRAM-Cache 187 mit Dualport-SRAM-Zellen
hergestellt, die zum Unterstützen
von Lese- und Schreibvorgängen
während eines
einzigen Zyklus des CLK-Signals verwendet werden können. Wie
oben beschrieben, wird der SRAM-Cache 187 als Direct-Map-Cache
mit 256 Cache-Entries organisiert, wobei jeder Cache-Entry 256 Bits
enthält
(d. h. acht 32-Bit-Wörter). Der
unidirektionale interne Datenbus DA [255:0] koppelt den Cache-Lesepuffer 188 mit
dem Schreibpuffer 172. Der Datenbus DA [255:0] leitet die
vom Cache-Lesepuffer 188 gelesenen Daten zum Schreibpuffer 172.
Der unidirektionale interne Datenbus DB [255:0] koppelt den Cache-Schreibpuffer 189 mit
dem Lesepuffer 171 (durch den Multiplexer 193).
Der Datenbus DB [255:0] leitet die vom Lesepuffer 171 gelesenen
Daten zum Cache-Schreibpuffer 189 (durch den Multiplexer 193).
-
Während
normaler Operationen kann ein ganzer Cache-Entry (256 Bits)
in einem einzigen Zyklus des CLK-Signals vom Lesepuffer 171 zum SRAM-Cache 187 übertragen
werden. Ebenso kann ein ganzer Cache-Entry in einem einzigen Zyklus
des CLK-Signals vom SRAM-Cache 187 auf den Schreibpuffer 172 übertragen
werden. Operationen des SRAM-Cache 187 werden vom Cache-Steuersequencer 186 mit
Hilfe des Cache-Tag-Speichers 185 gesteuert.
-
Das Cache-Schema wird wie folgt ausgeführt. Beim
Einschalten des 1-T SRAM 170 drückt eine chipinterne Einschalt-Reset-Schaltung
(nicht dargestellt) ein CLEAR-Signal auf, das an den Cache-Tag-Speicher 185 angelegt
wird. Als Reaktion auf das CLEAR-Signal
werden alle Gültig-Anzeigebits
V des Cache-Tag-Speichers 185 auf null zurückgesetzt,
wodurch der Cache-Tag-Speicher 185 zurückgesetzt wird. Bei jedem Schreiben
eines Cache-Entry auf den SRAM-Cache 187 wird das Gültig-Anzeigebit
V im zugehörigen
Cache-Tag-Entry auf einen Wert von logisch eins gesetzt.
-
In der vorliegenden Erfindung wird
eine Write-Back-Richtlinie verwendet. Der Grund ist, dass eine Write-Through-Strategie
zwar einfacher ist, aber es erfordern würde, dass Daten für jede Schreibtransaktion
auf DRAM-Bänke 0–63 geschrieben
werden, was ein Auffrischungsproblem verursachen könnte (d.
h. wenn eine der Bänke 0–63 kontinuierlich für eine Zeitperiode
beschrieben wird, die länger
als die höchstzulässige Auffrischperiode
ist, dann wird die Bank nicht richtig aufgefrischt, was wiederum
Datenfehler verursachen kann).
-
Die Write-Back-Richtlinie wird nachfolgend für die vier
möglichen
Lese- und Schreibtransaktionen von Lese-Hit, Schreib-Hit, Lese-Miss
und Schreib-Miss beschrieben. Wenn ein Zugriff von einer externen
Schaltung eingeleitet wird, dann wird eine Adresse EA [16:0] zum
Adresspuffer 181 gesendet. Der Adresspuffer 181 leitet
diese Adresse EA [16:0] wiederum zum Cache-Tag-Speicher 185.
Diese Adresse EA [16:0] identifiziert eine DRAM-Bank, Reihe und
Sektion, auf die zugegriffen wird. So könnte beispielsweise Adresse
EA [16:0] DRAM-Bank 4, Reihe 1, Sektion 2 identifizieren. Als Reaktion
auf die Adresse EA [16:0] greift der Cache-Tag-Speicher 185 auf
die in der identifizierten Reihe und Sektion gespeicherte Bankadresse
zu. Im beschriebenen Beispiel würde
der Cache-Tag-Speicher 185 die in Reihe 1, Sektion 2 gespeicherte
Bankadresse oder 000100 abrufen. Der Cache-Tag-Speicher 185 sendet
diese abgerufene Bankadresse zum Komparator 184. Der Cache-Tag-Speicher 185 legt
auch das Modifiziert-Bit M in Verbindung mit der abgerufenen Bankadresse
an den Cache-Steuersequencer 186 an. Der Komparator 184 vergleicht
die vom Cache-Tag-Speicher 184 abgerufene Bankadresse mit
der aktuellen Bankadresse EA [16:11]. Wenn der Komparator 184 eine Übereinstimmung
feststellt, dann liegt ein Cache-Hit vor, und der Komparator 184 drückt ein HIT-Steuersignal
auf. Wenn der Komparator 184 keine Übereinstimmung feststellt,
dann liegt ein Cache-Miss vor, und der Komparator 184 drückt das HIT-Steuersignal
nicht auf. Das HIT-Steuersignal wird an den Bankadressdecoder 182 und
den Cache-Steuersequencer 186 angelegt.
-
Als Reaktion auf die Signale ADS#,
WR#, M und HIT ermittelt der Cache-Steuersequencer 186, ob der
aktuelle Zugriff ein Lese-Hit, Schreib-Hit, Lese-Miss oder Schreib-Miss
Zugriff ist.
-
Wenn der aktuelle Zugriff ein Lese-Hit-Zugriff ist,
dann enthält
der SRAM-Cache 187 die gewünschten Daten. Der Cache-Steuersequencer 186 bewirkt
somit, dass der SRAM-Cache 187 die gewünschten Daten an den Cache-Lesepuffer 188 anlegt.
Die gewünschten
Daten werden vom Cache-Lesepuffer 188 zum Multiplexer 192 geleitet.
Der Multiplexer 192 leitet diese Daten als Reaktion auf
das aufgedrückte
HIT-Steuersignal zum Multiplexer 191. Der Multiplexer 191 leitet
das eine der acht 32-Bit-Wörter
zum E/A-Treiber 190 als
Reaktion auf die Byte-Select-Adressbits EA [2:0]. Der E/A-Treiber 190 setzt
das gewählte
Wort auf den Datenbus DQ [31:0]. Da während eines Lese-Hit-Zugriffs
nicht auf DRAM-Bänke 0–63 zugegriffen
wird, können
alle DRAM-Bänke 0–63 während eines
Lese-Hit-Zugriffs Auffrischvorgänge
durchführen.
-
Wenn der aktuelle Zugriff ein Schreib-Hit-Zugriff
ist, dann speichert der SRAM-Cache 187 einen Cache-Entry,
der mit der adressierten DRAM-Bank, Reihe und Sektion übereinstimmt.
Unter diesen Bedingungen bewirkt der Cache-Steuersequencer 186, dass
die externen Schreibdaten auf diesen Cache-Entry und nicht auf die
adressierte DRAM-Bank geschrieben werden. Man nehme beispielsweise
an, dass der aktuelle Schreibzugriff das Schreiben eines 32-Bit-Wortes
Z auf die letzte Wortposition von DRAM-Bank 4, Reihe 1, Sektion
2 vorgibt (siehe 2).
Da der Inhalt dieser Adresse (d. h. das 32-Bit-Wort X) bereits im
SRAM-Cache 187 gespeichert ist, liegt ein Cache-Schreib-Hit
vor. Das Wort Z wird an den E/A-Treiber 190 auf dem Datenbus
DQ [31:0] angelegt. Der E/A-Treiber 190 leitet das Wort Z zum Demultiplexer 194.
Als Reaktion auf die Byte-Adresse EA [2:0] leitet der Demultiplexer
das Wort Z auf einem Satz von Busleitungen, die der jeweiligen Wortposition
entsprechen. Das Wort Z wird als Reaktion auf das externe Schreibfreigabesignal EWR
durch den Multiplexer 193 zum Cache-Schreibpuffer 189 geleitet.
Der Cache-Schreibpuffer 189 liefert das Wort Z, um das
in Reihe 1, Sektion 2 des SRAM-Cache 187 gespeicherte Wort
X zu überschreiben.
Der Cache-Steuersequencer 186 bewirkt auch, dass das Modifiziert-Anzeigebit
M in Verbindung mit Reihe 1, Sektion 2 des Cache-Tag-Speichers 185 gesetzt
wird. Da auf DRAM-Bänke 0–63 während eines
Schreib-Hit-Zugriffs
nicht zugegriffen wird, können
alle DRAM-Bänke 0–63 während eines Schreib-Hit-Zugriffs
aufgefrischt werden.
-
Wenn der aktuelle Zugriff ein Lese-Miss-Zugriff
ist, speichert der SRAM-Cache 187 keinen Cache-Entry, der
der adressierten DRAM-Bank, Reihe und Sektion entspricht. Man nehme
beispielsweise an, dass ein Lesevorgang versucht, auf Reihe 1, Sektion
2 von DRAM-Bank 0 zuzugreifen (2).
Ein Cache-Miss wird erfasst, weil die Wörter Q, R, S, T, U, V, W und
X aus DRAM-Bank 4 im zugehörigen Entry
des SRAM-Cache 187 gespeichert sind. Nach dem Erfassen
des Lese-Miss-Zustands bewirkt, wenn das Modifiziert-Bit M in Verbindung
mit dem Cache-Tag-Entry gesetzt ist, der Cache-Steuersequencer 186, dass der
Cache-Entry veranlasst, dass der Miss zurück auf seine zugehörige DRAM-Bank geschrieben
wird. Dieser Write-Back-Vorgang ist nur dann notwendig, wenn das
Modifiziert-Bit M gesetzt ist. Ist das Modifiziert-Bit M nicht gesetzt,
dann stimmen im SRAM-Cache 187 gespeicherte Daten mit den
in der zugehörigen
DRAM-Bank gespeicherten Daten überein,
und es ist kein Write-Back erforderlich. Im vorliegenden Beispiel
besteht der Write-Back-Vorgang darin, dass die Wörter Q, R, S, T, U, V, W und
X von Reihe 1, Sektion 2 des SRAM-Cache 187 durch den Cache-Lesepuffer 188 und
den Schreibpuffer 172 auf Reihe 1, Sektion 2 der DRAM-Bank
4 geleitet werden.
-
Gleichzeitig leitet der Cache-Steuersequencer 186 einen
Lesevorgang auf Reihe 1, Sektion 2 der DRAM-Bank 0 ein. Datenwörter I,
J, K, L, M, N, O und P werden von Reihe 1, Sektion 2 von DRAM-Bank
0 gelesen, durch Lesepuffer 171, Multiplexer 193 und
Cache-Schreibpuffer 189 geleitet und auf Reihe 1, Sektion
2 von SRAM-Cache 187 geschrieben. Ferner wird der Cache-Tag-Entry
in Verbindung mit Reihe 1, Sektion 2 so aktualisiert, dass er die
Bankadresse von DRAM-Bank 0 (d. h. 000000) reflektiert, und das
Modifiziert-Bit M dieses Cache-Tag-Entry wird auf null zurückgesetzt,
um anzuzeigen, dass die im SRAM-Cache 187 gespeicherten Daten
mit den in der DRAM-Bank 0 gespeicherten Daten übereinstimmen. Die Datenwörter I,
J, K, L, M, N, O und P werden auch durch den Multiplexer 192 als
Reaktion auf das weggenommene HIT-Steuersignal geleitet. Der Multiplexer 191 leitet
ein ausgewähltes
der Datenwörter
I, J, K, L, M, N, O und P zum E/A-Treiber 190 (und somit
zum Datenbus DQ [31:0]) als Reaktion auf die Byte-Select-Adresse
EA [2:0]. So kann der Multiplexer 191 beispielsweise das
Datenwort M zum E/A-Treiber 190 leiten. Man beachte, dass
während
eines Lese-Miss-Zugriffs alle DRAM-Bänke außer der an den Read- oder Write-Back-Vorgängen beteiligten
DRAM-Bänken aufgefrischt
werden können.
-
Wenn der aktuelle Zugriff ein Schreib-Miss-Zugriff
ist, dann speichert der SRAM-Cache 187 keinen
Cache-Entry, der mit der adressierten DRAM-Bank, Reihe und Sektion übereinstimmt.
Man nehme beispielsweise an, dass ein Schreibvorgang versucht, ein
Wort Z auf Reihe 1, Sektion 2 von DRAM-Bank 0 zu schreiben (2). Ein Cache-Miss wird
erkannt, weil die Wörter
Q, R, S, T, U, V, W und X von DRAM-Bank 4 im assoziierten Cache-Entry
von SRAM-Cache-Speicher 187 gespeichert werden. Nach dem
Erkennen des Schreib-Miss-Zustands bewirkt, wenn das Modifiziert-Bit
in Verbindung mit dem Cache-Tag-Entry
gesetzt ist, der Cache-Steuersequencer 186, dass der Cache-Entry
veranlasst, dass der Miss zurück
auf seine zugehörige
DRAM-Bank geschrieben wird. Dieser Write-Back-Vorgang ist nur dann notwendig, wenn
das Modifiziert-Bit M gesetzt ist. Wenn das Modifiziert-Bit M nicht
gesetzt ist, dann stimmen die im SRAM-Cache 187 gespeicherten
Daten mit den. in der zugehörigen
DRAM-Bank gespeicherten Daten überein,
und es ist kein Write-Back erforderlich.
-
Im vorliegenden Beispiel werden die
Wörter Q,
R, S, T, U, V, W und X von Reihe 1, Sektion 2 des SRAM-Cache 187 auf
Reihe 1, Sektion 2 der DRAM-Bank 4 durch den Cache-Lesepuffer 188 und den
Schreibpuffer 172 geleitet. Gleichzeitig leitet der Cache-Steuersequencer 186 einen
Lesevorgang auf Reihe 1, Sektion 2 von DRAM-Bank 0 ein. Die Datenwörter I,
J, K, L, M, N, O und P werden von Reihe 1, Sektion 2 von DRAM-Bank
0 gelesen und durch den Lesepuffer 171 zum Multiplexer 193 geleitet.
Auch das gemäß dem aktuellen
Schreibzugriff zu schreibende 32-Bit-Datenwort Z wird (durch Datenbus
DQ [31:0], E/A-Treiber 190 und Demultiplexer 194)
an den Multiplexer 193 angelegt.
-
Der Multiplexer 193 leitet
sieben der acht Datenwörter
I, J, K, L, M, N, O und P plus Datenwort Z zum Cache-Schreibpuffer 189 als
Reaktion auf die Byte-Adresse EA [2:0]. Wenn beispielsweise die Byte-Adresse
EA [2:0] die erste Datenwortposition identifiziert, dann leitet
der Multiplexer 193 die Wörter Z, J, K, L, M, N, O und
P zum Cache-Schreibpuffer 189. Diese Datenwörter werden
dann vom Cache-Schreibpuffer 189 auf Reihe 1, Sektion 2
des SRAM-Cache 187 geschrieben. Zusätzlich wird der Cache-Tag-Speicher 185 durch
Schreiben der Bankadresse in Verbindung mit DRAM-Bank 0 auf Reihe 1,
Sektion 2 des Cache-Tag-Speichers 185 aktualisiert. Das
Modifiziert-Anzeigebit M dieses Cache-Tag-Entry wird jetzt ebenso
gesetzt, wodurch angezeigt wird, dass der Cache-Entry im SRAM-Cache 187 nicht
derselbe ist wie die entsprechenden Daten in der DRAM-Bank 0 (d.
h. SRAM-Cache 187 enthält Z,
J, K, L, M, N, O und P, während
DRAM-Bank 0 I, J, K, L, M, N, O und P enthält). Man
beachte, dass während
eines Schreib-Miss-Zugriffs alle DRAM-Bänke außer den an den Read- und Write-Back-Vorgängen beteiligten
DRAM-Bänken
aufgefrischt werden können.
-
DRAM-Vorgänge
-
3 ist
ein schematisches Diagramm der DRAM-Bank 0 und der Zugriffssteuerschaltung 100. Da
jede der DRAM-Bänke 1–63 mit
der DRAM-Bank 0 identisch ist und jede der Zugriffssteuerschaltungen 101–163 mit
der Zugriffssteuerschaltung 100 identisch ist, werden nur
die DRAM-Bank 0 und die Zugriffssteuerschaltung 100 ausführlich beschrieben. DRAM-Bank
0 besteht aus einer DRAM-Zellenarray 200 mit 64 Reihen
und 1024 Spalten. Die DRAM-Bank 0 beinhaltet ferner alle konventionellen Schaltungen
in Verbindung mit einer DRAM-Array, wie z. B. Wortleitungstreiber 201 sowie
Leseverstärker & Spaltenmultiplexer 202.
Datenbusse RDL [255:0] und RDL# [255:0] verbinden die DRAM-Bank 0
mit dem Lesepuffer 171. Die Datenbusse WDL [255:0] und
WDL# [255:0] verbinden die DRAM-Bank 0 mit dem Lesepuffer 172.
Die Zugriffssteuerschaltung 100 beinhaltet Reihenadressdecoder 205,
Spaltenadressdecoder 206, Speichersteuersequencer 207,
Auffrischadresszähler 208,
Adressmultiplexer 210 und Zugriffsentscheidungslogik zum
Regulieren der externen Zugriffe und der Auffrischzugriffe. Die Zugriffsentscheidungslogik
beinhaltet NAND-Gates 211–214,
Inverter 215, AND-Gate 216 und Flipflop 217.
-
Der Speichersteuersequencer 207 erzeugt die
Zugriffssteuersignale RAS# (Reihenzugriff), CAS# (Spaltenzugriff),
SEN# (Leseverstärkerfreigabe)
und PRC# (Vorladung) zum Steuern der Operationen der DRAM-Bank 0.
Diese Steuersignale werden ausführlicher
in dem in Gemeinschaftsbesitz befindlichen mitanhängigen US-Patent
6,078,547 mit dem Titel "Method
and Structure for Controlling Internat Operations of a DRAM Array" von Wingyu Leung (Einreichungsdatum
12. Mai 1998) beschrieben. Im Allgemeinen werden die Signale RAS#,
CAS#, SEN# und PRC# zu vorbestimmten Zeitpunkten innerhalb eines
einzelnen Zyklus des CLK-Signals erzeugt, wobei die vorbestimmten
Zeiten im Hinblick auf die ansteigenden und abfallenden Flanken
des CLK-Signals
bestimmt werden. Infolgedessen beendet eine DRAM-Bank 0 einen Speicherzyklus in
einem Zyklus des CLK-Signals. Die Zeitsteuerung der Steuersignale
RAS#, CAS#, SEN# und PRC# erfolgt mittels der vier Phasentaktsignale
P [3:0], die vom Taktphasengenerator 180 erzeugt werden
(1). Der Taktphasengenerator 180 erzeugt
Phasentaktsignale P [3:0] als Reaktion auf das CLK-Signal mit einem
Verzögerungsleitungsschema.
Der Taktphasengenerator 180 ist ausführlicher im US-Patent Nr. 6
078 547 beschrieben. Da ein Speicherzyklus nur eine Taktperiode
erfordert, kann die DRAM-Bank 0 einen Zufallszugriff oder eine Reihenauffrischung
während
eines Taktzyklus verarbeiten.
-
Ein Speicherzyklus wird eingeleitet,
wenn das NAND-Gate 211 ein logisch hohes ST [0] Signal auf
den Speichersteuersequencer 207 aufdrückt. Das ST [0] Signal wird
hoch angesteuert, wenn eines der drei folgenden Signale tief aufgedrückt wird:
Leseanforderungssignal ERQ# [0], Schreibanforderungssignal WRQ#
[0] oder Auffrischanforderungssignal RFQ#. Der Bezeichner [0] entspricht
der DRAM-Bankadresse.
Somit hätte
die DRAM-Bank 23 ähnliche
Signale ST [23], ERQ# [23] und WRQ# [23]. Man beachte, dass dadurch
jede der DRAM-Bänke 0–63 unabhängig gesteuert
wird.
-
Das Leseanforderungssignal ERQ# [0]
wird vom Bankadressdecoder 182 erzeugt (1). Das Leseanforderungssignal ERQ# [0]
wird tief aufgedrückt,
wenn ein Cache-Miss auftritt und Daten infolge des Cache-Miss aus
der DRAM-Bank 0 gelesen werden müssen. Die Bedingungen, unter
denen ein solcher Lesezugriff erforderlich sein kann, wurden oben
in Verbindung mit den Schreib-Miss- und Lese-Miss-Zugriffen beschrieben.
-
Das Schreibanforderungssignal WRQ#
[0] wird vom Bankadressdecoder 183 erzeugt (1). Das Schreibanforderungssignal
WRQ# [0] wird tief aufgedrückt,
wenn ein Cache-Miss auftritt und Daten im SRAM-Cache-Speicher 187 zurück auf die DRAM-Bank
0 geschrieben werden müssen.
Die Bedingungen, unter denen ein Write-Back-Vorgang erforderlich
ist, wurden oben in Verbindung mit den Schreib-Miss- und Lese-Miss-Zugriffen beschrieben.
-
Das Leseanforderungssignal ERQ# [0]
und das Schreibanforderungssignal WRQ# [0] schließen sich
gegenseitig aus. Das heißt,
diese Signale können
nicht gleichzeitig aktiviert werden. Der Grund ist, dass sich die
Bankadresse in Verbindung mit dem ersetzten Cache-Entry während eines
Cache-Miss-Zugriffs unbedingt von der Bankadresse in Verbindung mit
den von einer DRAM-Bank abgerufenen Daten unterscheiden muss. Aber
es kann entweder das Schreibanforderungssignal WRQ# [0] oder das Leseanforderungssignal
ERQ# [0] dann tief aufgedrückt werden,
wenn das Auffrischanforderungssignal RFQ# tief aufgedrückt wird,
um einen Auffrischzugriff einzuleiten. Wie nachfolgend beschrieben,
haben sowohl das Schreibanforderungssignal WRQ# [0] als auch das
Leseanforderungssignal ERQ# [0] immer Prtorität gegenüber dem Auffrischanforderungssignal RFQ#.
Infolgedessen werden Zugriffe auf die DRAM-Bank 0 (und Zugriffe
auf die DRAM-Bänke 1–63) niemals
durch Auffrischzugriffe verzögert.
-
Auffrischvorgang
-
Der Auffrisch-Timer 195 (1) ist ein 15-Bit-Binärzähler. Bei
einem 100 MHz Betrieb erzeugt der Auffrisch-Timer 195 alle
320 μs eine
Auffrischanforderung. Jede der Speicherbänke 0–63 wird unabhängig aufgefrischt,
wobei eine Reihe einer Speicherbank während eines Auffrischzyklus
aufgefrischt wird. Ein Auffrischzugriff wird durch Lesen einer Reihe
einer DRAM-Bank implementiert. Das Lesen einer Reihe einer DRAM-Bank
hat den Effekt, dass die Ladung in den DRAM-Zellen in der Reihe aufgefrischt
wird. Vierundsechzig Auffrischzyklen werden benötigt, um alle 64 Reihen einer DRAM-Bank
vollständig
aufzufrischen. Die Auffrischzeit für den 1-T SRAM 170 beträgt somit
320 μs mal 64
oder 20,48 ms.
-
Der Ausgang des Auffrisch-Timers 195 ist das
Auffrischanforderungssignal RFQ#, das für einen Taktzyklus aktiviert
wird, wenn der Auffrisch-Timer 195 eine volle Zahl erreicht,
d. h. dann, wenn alle Zählerbits
im H-Zustand sind. Da die Periode des Auffrisch-Timers 195 320 μs beträgt und nur
64 × 4 × 10 ns
(64 Reihen, 4 Cache-Zeilen pro Reihe) oder 2,56 μs benötigt, um vollständig auf
alle Cache-Entries des SRAM-Cache 187 zuzugreifen, erfolgt
wenigstens ein Cache-Hit oder Speicherruhezyklus in jeder der DRAM-Bänke 0–63 während jeder
Auffrisch-Timer-Periode. Dadurch wird gewährleistet, dass keine der DRAM-Bänke 0–63 einen
Auffrischzyklus verpasst und dass jede der DRAM-Bänke 0–63 rechtzeitig
aufgefrischt wird.
-
Zu einer Zugriffskollision kann es
jedoch dann kommen, wenn eine Auffrischanforderung und eine externe
Zugriffsanforderung (d. h. ein Cache-Miss-Zugriff) während desselben
Taktzyklus erzeugt werden. Die Zugriffskollision wird in der DRAM-Bank gehandhabt,
indem der Cache-Miss-Zugriff zuerst verarbeitet und die Auffrischanforderung verzögert wird,
indem der tiefe Zustand des Auffrischanforderungssignals RFQ# in
einem Flipflop gespeichert wird. Der Auffrisch-Speicherflipflop 220 wird von
den NAND-Gates 212 und 213 in 3 gebildet. Der Cache-Miss-Zugriff hat
immer Priorität
gegenüber
dem Auffrischzugriff, um zu gewährleisten, dass
der externe Speicherzugriff immer ohne Verzögerung abgeschlossen wird.
Infolgedessen sind DRAM-Bank-Auffrischzugriffe für die Außenwelt transparent, so dass
sich der 1-T SRAM 170 auf eine Weise verhält, die
mit einem SRAM-Bauelement völlig
kompatibel ist.
-
Die Zugriffspriorität wird vom
Adressmultiplexer 210 eingestellt, der so gesteuert wird,
dass er entweder die Reihenadresse EA [10:5] oder die Auffrischreihenadresse
RA [5:0] zum Reihenadressdecoder 205 sendet. Die Reihenadresse
EA [10:5] ist die Reihenadresse in Verbindung mit einem Cache-Miss-Zugriff.
Der Adressmultiplexer 210 wird von dem vom AND-Gate 216 angelegten
Ausgangssignal gesteuert. Die Eingangsanschlüsse des AND-Gate 216 sind
so geschaltet, dass sie das Leseanforderungssignal ERQ# [0] und
das Schreibanforderungssignal WRQ# [0] empfangen. Wenn eines dieser
Anforderungssignale tief aufgedrückt
wird, dann wählt der
Adressmultiplexer 210 die Reihenadresse EQ [10:5] für den aktuellen
Speicherzyklus. In Abwesenheit eines Cache-Miss-Zugriffs werden
sowohl ERQ# [0] als auch WRQ# [0] im H-Zustand weggenommen, so dass
der Multiplexer 210 veranlasst wird, die Auffrischadresse
RA [5:0] zum Reihenadressdecoder 205 zu leiten.
-
Der Auffrischzugang wird so lange
verzögert, bis
die DRAM-Bank im Ruhezustand ist. Der Flipflop 220 wird
gesetzt, wenn das Auffrischanforderungssignal RFQ# tief aufgedrückt wird.
Der Flipflop 220 bleibt im gesetzten Zustand, bis das Auffrischbestätigungssignal
RFAK# tief aufgedrückt
wird. Das Auffrischbestätigungssignal
RFAK# wird tief aufgedrückt,
wenn die Signale ST [0], ERQ# [0] und WRQ# [0] im H-Zustand sind. Wenn
alle diese Signale im H-Zustand sind, wird ein Auffrischzugriff
eingeleitet. Der Flipflop 217 synchronisiert die Rückstellung
des Flipflops 220 mit dem CLK-Signal. Der Sechs-Bit-Auffrischadresszähler 208 verfolgt
die aufzufrischende Reihenadresse. Der Auffrischadresszähler 208 wird
für jeden
Tief-Hoch-Übergang
des Signals RFAK# inkrementiert. Wenn der Auffrischadresszähler 208 die
volle Zahl 111111 erreicht, dann wird er auf 000000 zurückgesetzt.
-
Zeitsteuerung
von Vorgängen
-
4 ist
ein Wellenformdiagramm, das die zeitliche Steuerung von vier aufeinander
folgenden Transaktionen AN, BN,
CM und DP illustriert.
Transaktionen AN und BN sind
Zugriffe auf dieselbe DRAM-Bank N. Transaktion CM ist
ein Zugriff auf die DRAM-Bank M, und Transaktion DP ein
Zugriff auf die DRAM-Bank P. Spezifischer aufgedrückt, Transaktion
AN ist ein Lese-Miss-Zugriff auf DRAM-Bank
N, Transaktion BN ist ein Cache-Hit-Zugriff
auf DRAM-Bank N, die mit einem Auffrischzugriff am Anfang des Taktzyklus
T3 kollidiert, Transaktion CM ist eine Schreib-Miss-Transaktion
auf DRAM-Bank M, die ein Write-Back von modifizierten Daten auf
die DRAM-Bank R erfordert, und Transaktion DP ist
ein Lese-Miss-Zugriff auf DRAM-Bank P.
-
Während
des Taktzyklus T1 wird eine Speichertransaktion AN mit
dem tief angesteuerten ADS# Signal eingeleitet, wobei eine Speicheradresse
EA [16:0] zum Adresspuffer 181 gesendet wird, und wobei
das Signal WR# in den H-Zustand gebracht wird, was bedeutet, dass
die Transaktion ein Lesezugriff ist. Die Speicheradresse EA [16:11]
identifiziert die angeforderte Bankadresse als DRAM-Bank N. An der
ansteigenden Flanke des Taktzyklus T2 wird die Lesetransaktion AN erfasst. Die durch Adresssignale EA [10:3]
repräsentierten
Reihen- und Spaltenadressen werden vom Adresspuffer 181 gepuffert
und zu allen Speicherbänken 0–63 sowie
zum Cache-Tag-Speicher 185 gesendet. Im Cache-Tag-Speicher 185 wird
die Cache-gespeicherte Bankadresse, auf die die Reihen- und Spaltenadresse
zeigt, zum Komparator 184 geleitet, wo sie mit der Bankadresse
EA [16:11] der Transaktion AN verglichen
wird. Der Komparator 184 steuert das HIT-Signal in den
L-Zustand und zeigt
so an, dass die aktuelle Transaktion AN ein
Cache-Miss ist. Als Reaktion auf das logisch tiefe HIT-Signal und
die aktuelle Bankadresse EA [16:11] drückt der Bankadressdecoder 182 das
Leseanforderungssignal ERQ# [N] im L-Zustand auf. Man beachte, dass
alle anderen Leseanforderungssignale ERQ# im H-Zustand weggenommen
werden. Das Modifiziert-Anzeigebit M in Verbindung mit der Cache-gespeicherten
Bankadresse wird vom Cache-Tag-Speicher 185 an den Cache-Steuersequencer 186 angelegt.
In dem beschriebenen Beispiel ist dieses Modifiziert-Anzeigebit M
im L-Zustand, was bedeutet, dass der zu ersetzende Cache-Entry nicht
modifiziert wurde. Als Reaktion darauf bringt der Cache-Steuersequencer 186 das Speicherschreibsignal
MW# zum Bankadressdecoder 183 in den H-Zustand. Als Reaktion
darauf nimmt der Bankadressdecoder 183 alle Schreibanforderungssignale
WRQ# [63:0] im H-Zustand weg, so dass ein Write-Back-Vorgang gesperrt
wird.
-
Der L-Zustand des Leseanforderungssignals ERQ#
[N] bewirkt, dass die DRAM-Bank
N einen Speicherlesezyklus startet. Gleichzeitig drückt der Cache-Steuersequencer 186 das
Tag-Schreibsignal TW# im L-Zustand auf, wodurch bewirkt wird, dass die
Bankadresse N auf den Cache-Tag-Speicher 185 an der Stelle
geschrieben wird, auf die die Adresse EA [10:3] zeigt. In der zweiten
Hälfte
des Taktzyklus T2 stehen die von der DRAM-Bank N gelesenen Daten
auf dem Bus DB [255:0] zur Verfügung
und werden durch den 2:1 Multiplexer 192, den 8:1 Multiplexer 191 und
den E/A-Treiber 190 zum externen Datenbus DQ [31:0] übertragen.
Die Daten auf DB [255:0] werden ebenfalls durch den Multiplexer 193 zum
SRAM-Cache 187 übertragen.
Da die Transaktion ein Lesevorgang ist, ist das externe Schreibfreigabesignal
EWR# im L-Zustand, so dass alle 256 Bit Daten DB [255:0] zum Cache-Schreibpuffer 189 des SRAM-Cache 187 geleitet
werden. Wenn das Cache-Schreibfreigabesignal CW# im L-Zustand aufgedrückt wird,
dann werden die Daten DB [255:0] auf den SRAM-Cache 187 geschrieben.
-
Zu Beginn des Taktzyklus T3 wird
die Lesetransaktion BN erfasst. Eine Auffrischanforderung wird
ebenfalls erfasst und in jeder DRAM-Bank 0–63 gerastet.
Der Komparator 184 erkennt eine Übereinstimmung zwischen dem
aktuellen Bankadresssignal EA [16:11] und der vom Cache-Tag-Speicher 185 kommenden
Cache-gespeicherten Bankadresse. Als Reaktion darauf drückt der
Komparator 184 ein logisch hohes HIT-Signal auf. Das logisch
hohe HIT-Signal bewirkt, dass alle Leseanforderungssignale ERQ#
[63:0] und alle Schreibanforderungssignale WRQ# [63:0] im H-Zustand
bleiben. Bei Abwesenheit einer Cache-Miss-Anforderung beginnen alle DRAM-Bänke 0–63 einen
Auffrischzyklus, wobei die Auffrischadresse RA [5:0] vom entsprechenden
Auffrischadresszähler 208 ( 3) geliefert wird. Da Transaktion
BN ein Lesezugriff ist, bleibt das Cache-Schreibfreigabesignal
CW# im H-Zustand, und die angeforderten Daten werden vom SRAM-Cache 187 auf
den Cache-Lesepuffer 188 übertragen. Der Cache-Lesepuffer 188 steuert
die Daten auf den 2:1 Multiplexer 192 auf dem Datenbus
DA [255:0]. Das logisch hohe HIT-Signal veranlasst den Multiplexer 192,
die Daten vom Cache-Lesepuffer 188 auf den 8:1 Multiplexer 191 zu
leiten. Die gepufferte Wortauswahladresse EA [2:0] wählt eines
der acht 32-Bit-Wörter
zur Ausgabe aus. Die gewählten
Daten werden dann vom E/A-Treiber 190 zum
externen Bus DQ [31:0] übertragen.
-
Zu Beginn des Taktzyklus T4 wird
die Schreibtransaktion CM erfasst. Die DRAM-Bankadresse M in
Verbindung mit der Transaktion CM wird zum
Cache-Tag-Speicher 185 und zum Komparator 184 gesendet.
Als Reaktion darauf liefert der Cache-Tag-Speicher 185 die
Cache-gespeicherte Bankadresse R. Der Komparator 184 ermittelt,
dass die aktuelle Bankadresse M nicht mit der Cache-gespeicherten
Bankadresse R übereinstimmt
und bringt als Reaktion darauf das HIT-Signal in den L-Zustand,
um eine Schreib-Miss-Transaktion anzuzeigen. Im aktuellen Beispiel
ist das Modifiziert-Anzeigebit M des Cache-Tag-Entry, auf den zugegriffen
wurde, gesetzt, was bedeutet, dass der zugehörige Cache-Entry im SRAM-Cache 187 modifizierte
Daten enthält,
die zurück
auf die DRAM-Bank R geschrieben werden müssen. Infolgedessen werden
sowohl das Leseanforderungssignal ERQ# [M] als auch das Schreibanforderungssignal
WRQ# [R] jeweils von den Bankadressdecodern 182 und 183 tief
aufgedrückt,
um dadurch einen Lesevorgang in der DRAM-Bank M und einen Schreibvorgang
in der DRAM-Bank R einzuleiten. Die gelesenen Daten von der DRAM-Bank
M werden durch die transparenten Signalspeicher des Lesepuffers 171 auf
den Bus DB [255:0] ausgegeben. Die gelesenen Daten werden im Lesepuffer 171 an
der abfallenden Flanke des CLK-Signals während des Zyklus T4 gerastet.
-
Gleichzeitig nimmt der Cache-Steuersequencer 186 das
Cache-Schreibsignal CW# während der
ersten Hälfte
des Zyklus T4 im H-Zustand weg und veranlasst somit den SRAM-Cache 187,
einen Lesevorgang durchzuführen.
Der zurück
auf die DRAM-Bank R zu schreibende Cache-Entry wird durch transparente
Signalspeicher im Cache-Lesepuffer 188 auf den Bus DA [255:0]
ausgegeben. Die Daten werden im Cache-Lesepuffer 188 an
der abfallenden Flanke des CLK-Signals während Zyklus T4 gerastet. Die
Cache-Lesedaten auf DA [255:0] werden durch den DRAM-Schreibpuffer 172 auf
die DRAM-Bank R geschrieben. Ebenso werden die DRAM-Lesedaten auf
DB [255:0] durch den Cache-Schreibpuffer 189 auf
den SRAM-Cache 187 geschrieben, wenn das Cache-Schreibsignal
CW# während
der zweiten Hälfte
des Taktzyklus T4 im L-Zustand aktiviert wird. Infolgedessen wird
der Cache-Entry in Verbindung mit der aktuellen Adresse EA [10:3]
ersetzt. Die Bankadresse M wird auf den Cache-Tag-Speicher 185 geschrieben,
die V- und M-Bits werden gesetzt. Das Modifiziert-Anzeigebit M wird
so gesetzt, dass es die Tatsache reflektiert, dass der Cache-Line-Inhalt
durch die aktuelle Schreibtransaktion CM modifiziert
wird. Schreibdaten werden vom Datenbus DQ [31:0] durch den Demultiplexer 194 zum
Multiplexer 193 geleitet, wo die von der DRAM-Bank M abgerufenen
Daten DB [255:0] mit den externen Schreibdaten gemischt werden.
Das Mischen wird durch die Wort-Select-Adresse auf EA [2:0] und das externe
Schreibsignal EWR gesteuert, das vom Cache-Steuersequencer 186 im H-Zustand aufgedrückt wird.
Die gemischten Daten werden durch den Cache-Schreibpuffer 189 auf
den SRAM-Cache 187 geschrieben.
-
Zu Beginn des Taktzyklus T5 werden
sowohl die Lesetransaktion DP als auch eine
Auffrischanforderung erfasst. Im normalen Betrieb wird das Auffrischanforderungssignal
RFQ# nur einmal etwa alle 32.000 Taktzyklen aufgedrückt. Das
in 4 gezeigte Timing
dient daher lediglich zu Illustrationszwecken. In diesem Beispiel
stimmt die Bankadresse EA [16:11] in Verbindung mit der Lesetransaktion
DP nicht mit der im Cache-Tag-Speicher
185 gespeicherten
assoziierten Cache-gespeicherten Bankadresse überein, so dass der Komparator 184 veranlasst
wird, ein logisch tiefes HIT-Signal anzulegen (d. h. ein Lese-Miss-Zugriff). Als
Reaktion auf das logisch tiefe HIT-Signal drückt der Bankadressdecoder 182 das Leseanforderungssignal
ERQ# [P] im L-Zustand auf. Im vorliegenden Beispiel ist das Modifiziert-Anzeigebit
M in Verbindung mit der Cache-gespeicherten Bankadresse im L-Zustand,
was bedeutet, dass kein Write-Back-Vorgang erforderlich ist. Infolgedessen nimmt
der Cache-Steuersequencer 186 das MW# Signal weg, wodurch
bewirkt wird, dass der Bankadressdecoder 183 logisch hohe
Werte für
jedes der Schreibanforderungssignale WRQ# [63:0] anlegt. Alle DRAM-Bänke außer der
DRAM-Bank P durchlaufen jetzt einen Auffrischzyklus, da ihre entsprechenden
Signale ERQ# und WRQ# hoch weggenommen werden. In der DRAM-Bank
P setzt der L-Zustand des Auffrischanforderungssignals RFQ# den von
den NAND-Gates 212 und 213 gebildeten Auffrischflipflop 220 (3). Der L-Zustand des Leseanforderungssignals
ERQ# [P] wählt
jedoch die Reihenadresse EA [10:5] für den Speicherzyklus. Das Aufdrücken des
Leseanforderungssignals ERQ# [P] bewirkt, dass das Signal ST [P]
im H-Zustand aufgedrückt
und ein Speicherlesezyklus durchgeführt wird, mit dem aufeinander
folgenden Aufdrücken
der Signale RAS#, CAS#, SEN# und PRC# während des Taktzyklus T5. Die
gelesenen Daten werden von der DRAM-Bank P durch den Lesepuffer 171 zum
Datenbus DB [255:0] ausgegeben, wo sie zum SRAM-Cache 187 sowie zu Multiplexern 192 und 191 und
zum E/A-Treiber 190 und schließlich zum Datenbus DQ [31:0]
geleitet werden. Da die Transaktion DP eine
Lesetransaktion ist, wird das externe Schreibsignal EWR im L-Zustand
deaktiviert, und die gesamte Cache-Line wird nach dem Aufdrücken des
Cache-Schreibsignals CW# auf den SRAM-Cache 187 geschrieben.
-
Während
des Zyklus T6 ist keine externe Zugriffsanforderung anhängig. Der
Auffrischflipflop 220 in der DRAM-Bank P bleibt jedoch
gesetzt, wodurch bewirkt wird, dass das Signal ST [P] für die erste
Hälfte
des Taktzyklus T6 im H-Zustand bleibt. Infolgedessen wird ein anderer
Speicherzyklus während
des Taktzyklus T6 in der DRAM-Bank
P durchgeführt. Wenn
sowohl das Leseanforderungssignal ERQ# [P] als auch das Schreibanforderungssignal
WRQ# [P] im H-Zustand weggenommen sind, wird die Auffrischadresse
RA [5:0] vom Auffrischadresszähler 208 durch
den Multiplexer 210 zum Reihenadressdecoder 205 durchgelassen.
Infolgedessen wird die durch die Auffrischadresse RA [5:0] identifizierte
Reihe aufgefrischt. An der abfallenden Flanke des CLK-Signals während Zyklus
T6 wird der tiefe Ausgang des NAND-Gates 214 im Flipflop 217 gerastet, so
dass das Auffrischbestätigungssignal
RFAK# in den L-Zustand gebracht und der Auffrischflipflop 220 zurückgesetzt
wird. Durch die Aktivierung des Signals RFAK# wird auch der Auffrischadresszähler 208 inkrementiert.
Der Ausgang des Auffrischadresszählers 208 wird
jedoch erst dann inkrementiert, wenn das Signal RFAK# im H-Zustand
deaktiviert wird. Infolgedessen wird die Auffrischadresse RA [5:0]
vom Auffrischadresszähler 208 während des
Speicherzyklus konstant gehalten. Das Auffrischbestätigungssignal
RFAK# wird an der abfallenden Flanke des CLK-Signals während des
Zyklus T7 hoch deaktiviert.
-
Auf 1-T SRAM 170 kann auf
die obige Weise mit einer Rate von einem Speicherzyklus pro Taktzyklus
zugegriffen werden, ohne Verzögerungen
für Auffrischvorgänge.
-
Zusätzliche
Ausgestaltung
-
5 ist
ein Blockdiagramm eines 1-T SRAM-Systems 300 gemäß einer
weiteren Ausgestaltung der vorliegenden Erfindung. Das 1-T SRAM-System 300 beinhaltet
128 DRAM-Speicherblöcke 1000–1127,
Auffrischadresszähler 301,
Auffrisch-Timer 302, Speichersequencer 303, Adressregister 304,
Bankadressdecoder 305–306,
Logik-OR-Gate 307, Speichersteuereinheit 308,
Multiplexer 309, Schreibpuffer 310, Lesepuffer 311, Nur-Schreib-Port 312,
Lese-Schreib-Port 313 und Multiplexer 314.
-
Die DRAM-Speicherblöcke 1000–1127 können 16.000
128-Bit-Wörter
speichern. Jeder der Speicherblöcke 1000–1127 hat
eine entsprechende DRAM-Bank (für
insgesamt 128 Bänke),
die in einer Array mit 32 Reihen mal 512 Spalten angeordnet ist. Die
externe Schnittstelle des Systems 300 beinhaltet einen 128-Bit-Eingangsdatenbus
zum Empfangen von Eingangsdatenbits Di [127:0], einen 128-Bit-Ausgangsdatenbus
zum Empfangen von Ausgangsdatenbits Do [127:0], eine Lesefreigabeleitung
zum Empfangen eines Lesefreigabe- (Ren) Signals, eine Schreibfreigabeleitung
zum Empfangen eines Schreibfreigabe- (Wen) Signals, einen Takteingangsanschluss
zum Empfangen eines Takt-(Clk)
Signals, und einen 14-Bit-Adressbus zum Empfangen von Adressbits
A [13:0]. Jede der DRAM-Bänke
in den Blöcken 1000–1127 enthält einen
entsprechenden Reihenadressdecoder und einen entsprechenden Spaltenadressdecoder.
-
Alle externen Signale werden auf
die ansteigende Flanke des Clk-Signals referenziert. Das Adresssignal
A [13:0] ist in drei Felder unterteilt: eine 7-Bit-Bankadresse A
[13:7] (die einen der 128 Speicherblöcke 1000–1127 identifiziert), eine 5-Bit-Reihenadresse A [6:2]
(die eine der 32 Reihen in einer Speicherbank identifiziert) und
eine 2-Bit-Wortadresse A [1:0] (die eines der vier 128-Bit-Wörter in
einer Reihe identifiziert).
-
Die DRAM-Speicherblöcke 1000–1127 sind parallel
zu einer Mehrzahl von Treibern im Lese-Schreib-Port 313 geschaltet,
der als bidirektionaler Port zu den Speicherblöcken 1000– 1127 dient. Die
DRAM-Speicherblöcke 1000–1127 sind
auch parallel zu einer Mehrzahl von Treibern im Nur-Schreib-Port 312 geschaltet,
der als unidirektionaler (Nur-Schreib-) Port zu Speicherblöcken 1000–1127 dient.
Der Lese-Schreib-Port 313 und der Nur-Schreib-Port 312 dienen
als Schnittstelle zwischen DRAM-Speicherblöcken 1000–1127,
Schreibpuffer 310, Lesepuffer 311 und dem Rest
der E/A-Logik. Die Busverbindungen zwischen den verschiedenen Elementen
des 1-T SRAM-Systems 300 sind in 5 illustriert.
-
Um zu gewährleisten, dass alle Auffrischzugriffe
von Speicherblöcken 1000–1127 ordnungsgemäß innerhalb
einer vorbestimmten Auffrischperiode durchgeführt werden, und das selbst
unter den ungünstigsten
Cache-Thrashing-Bedingungen, wird die Größe von Schreibpuffer 310 und
Lesepuffer 311 jeweils so gewählt, dass eine Speicherkapazität entsteht,
die gleich der (oder größer als
die) Speicherkapazität
von einem der DRAM-Speicherblöcke 1000–1127 minus
der Kapazität
von einer Reihe von Zellen im DRAM-Speicherblock ist. Im Hinblick auf die
bauliche Einfachheit beinhalten der Schreibpuffer 310 und der Lesepuffer 311 in
der nachfolgend beschriebenen Ausgestaltung eine Speicherbank mit derselben
Organisation wie die Speicherbänke
in den DRAM-Speicherblöcken 1000–1127.
So beinhalten der Schreibpuffer 310 und der Lesepuffer 311 in der
beschriebenen Ausgestaltung eine Speicherbank mit einer Array von
32 Reihen mal 512 Spalten Speicherzellen. Diese Speicherzellen können entweder mit
SRAM-Zellen oder mit DRAM-Zellen aufgebaut sein. Um die nachfolgende
Beschreibung zu vereinfachen, werden zunächst mit SRAM-Zellen implementierte
Lese- und Schreibpuffer 310–311 beschrieben.
Dann wird die zusätzliche
Steuerung erörtert, die
zum Implementieren von Lese- und Schreibpuffern 310–311 mit
DRAM-Zellen nötig
ist. Man beachte, dass in dem beschriebenen Beispiel Schreibpuffer 310 und
Lesepuffer 311 jeweils eine Mindestgröße von 31 Reihen und 512 Spalten
von Speicherzellen haben.
-
Im Adresspfad wird das externe Zugriffsadresssignal
A [13:0] im Adressregister 304 gerastet. Als Reaktion darauf
legt das Adressregister 304 ein externes 7-Bit-Bankadresssignal
EBA [6:0] an den Bankadressdecoder 305 und die Speichersteuereinheit 308 an.
Das externe Bankadresssignal EBA [6:0] (das aus Adresssignalen A
[13:7] besteht) identifiziert die Bankadresse des aktuellen Zugriffsvorgangs.
Als Reaktion auf das externe Bankadresssignal EBA [6:0] erzeugt
der Bankadressdecoder 305 ein externes 128-Bit- Bankauswahlsignal
EBS [127:0], das die Bankadresse des aktuellen Zugriffsvorgangs
identifiziert. Das externe Bankauswahlsignal EBS [127:0] beinhaltet
ein logisch hohes Signal; das der adressierten Bank entspricht,
und 127 logisch tiefe Signale, die den nicht adressierten Bänken entsprechen. Das
externe Bankauswahlsignal EBS [127:0] wird an das OR-Gate 307 angelegt.
-
Der Bankadressdecoder 306 ist
so geschaltet, dass er eine Schreibpufferbankadresse WBBA [6:0]
von der Speichersteuereinheit 308 empfängt. Wie nachfolgend ausführlicher
beschrieben wird, identifiziert WBBA [6:0] die Bankadresse in Verbindung
mit einem im Schreibpuffer 310 gespeicherten Write-Cache-Tag.
Als Reaktion auf das Signal WBBA [6:0] erzeugt der Bankadressdecoder 306 ein 128-Bit-Schreibpuffer-Bankauswahlsignal
WBBS [27:0], das die Bankadresse identifiziert, die dem Schreib-Cache-Tag
entspricht. Das Schreibpuffer-Bankauswahlsignal WBBS [127:0] beinhaltet
ein logisch hohes Signal, das der Cache-gespeicherten Bank entspricht,
und 127 logisch tiefe Signale, die den nicht Cache-gespeicherten
Bänken
entsprechen. Das Schreibpuffer-Bankauswahlsignal WBBS [127:0] wird
an das OR-Gate 307 angelegt.
-
Das OR-Gate 307 führt den
logischen ODER-Vorgang des externen Bankauswahlsignals EBS [127:0]
und des Schreibpuffer-Bankauswahlsignals WBBS [127:0] zum Erzeugen
des Bankzugriffssignals BA [127:0] durch. Jedes der 128 Bankzugriffssignale
BA [127:0] ist mit einem entsprechenden einen der Speicherblöcke 1000–1127 verbunden.
-
Das Adressregister 304 erzeugt
auch ein externes Reihen-Spalten-Adresssignal ERC [6:0], das die
Reihen- und Spaltenadressen des aktuellen Zugriffsvorgangs identifiziert.
Das externe Spaltenadresssignal ERC [6:0] wird so gewählt, dass
es den externen Adressbits A [6:0] entspricht. Das externe Reihen-Spalten-Adresssignal
ERC [6:0] wird parallel zu jedem der Speicherblöcke 1000–1127,
dem Schreibpuffer 310, dem Lesepuffer 311 und
der Speichersteuereinheit 308 erzeugt.
-
Im Allgemeinen arbeitet das Speichersystem 300 wie
folgt. Die Speichersteuereinheit 308 steuert das Zugreifen
auf die und das Auffrischen der Speicherzellen so, dass das Auffrischen
der Speicherzellen keine externen Zugriffe auf die Speicherzellen stört.
-
Jede der DRAM-Bänke in Speicherblöcken 1000–1127 wird
unabhängig
gesteuert. Somit werden Lese-, Schreib- und Auffrischvorgänge unabhängig innerhalb
jeder Bank gesteuert. Jede der Speicherbänke ist parallel zum Schreibpuffer 310 und
zum Lesepuffer
311 geschaltet. Sowohl Schreibpuffer 310 als
auch Lesepuffer 311 haben denselben Aufbau wie die Speicherbänke in den
Speicherblöcken 1000–1127.
-
Das Speichersystem 300 wird
mit einem Mehrbank-Auffrischschema aufgefrischt. In der bevorzugten
Ausgestaltung wird der zentrale Auffrisch-Timer 302 zum
Erzeugen von periodischen Auffrischanforderungen zu DRAM-Speicherblöcken 1000–1127 verwendet.
Der Auffrisch-Timer 302 erzeugt die Auffrischanforderung,
indem er sein Ausgangssignal RFREQ alle 1 ms für einen Taktzyklus in den H-Zustand
bringt. Somit wird das Auffrischanforderungssignal RFREQ in einem
100 MHz System einmal alle 100.000 Taktzyklen im H-Zustand aufgedrückt. Das
RFREQ-Signal wird zum Eingangsanschluss REQI des Speicherblocks 1000 als
Eingangsauffrischanforderungssignal REQI [0] geleitet. Innerhalb
des Speicherblocks 1000 wird das Signal REQI [0] zum Eingangsanschluss
eines D-Registers geleitet (siehe D-Register 2121 von 11). Das Signal REQI [0]
wird im D-Register
an der ansteigenden Flanke des Clk-Signals gerastet. Der Ausgangsanschluss
des D-Registers ist so geschaltet, dass er ein Ausgangsauffrischanforderungssignal
REQO [0] an den Ausgangsanschluss REQO anlegt. Das Signal REQO [0]
wird daher einen Taktzyklus, nachdem das REQI [0] Signal im H-Zustand
aktiviert wurde, in den H-Zustand gebracht. Jeder Ausgangsanschluss REQO
ist mit einem Eingangsanschluss REQI eines benachbarten Speicherblocks
verbunden. Die Auffrischanforderung zu den Speicherblöcken wird
somit durch eine Verkettung (Daisy-Chain) erzeugt, die von den D-Registern
gebildet wird, indem sie die Anschlüsse REQI und REQO der Speicherblöcke 1000–1127 verbindet.
-
In der Ausgestaltung, in der Speicherpuffer 310 und
Lesepuffer 311 mit SRAM-Zellen
aufgebaut sind, wird das Auffrischanforderungssignal RFREQ vom Speicherblock 1000 zu 1127 propagiert
(und nicht an Schreibpuffer 310 und Lesepuffer 311 angelegt).
Wenn jedoch Schreibpuffer 310 und Lesepuffer 311 mit
DRAM-Zellen aufgebaut sind, wird das Auffrischanforderungssignal
RFREQ vom Speicherblock 1127 zu Schreibpuffer 310 und Lesepuffer 311 propagiert.
Diese Verbindungen sind in 5 mit
gestrichelten Linien dargestellt.
-
Außerdem, wenn Schreibpuffer 310 und
Lesepuffer 311 mit DRAM-Zellen aufgebaut sind, dann erzeugen
Schreibpuffer 310 und Lesepuffer 311 jeweils Auffrischunganhängig-Signale
REFP [w] und REFP [r], um anzuzeigen, ob eine Auffrischung in diesen
Puffern 310–311 anhängig ist.
Diese Signale sind in 5 mit
gestrichelten Linien angedeutet.
-
Eine 5-Bit-Auffrischadresse RFA [4:0]
wird vom Auffrischadresszähler 301 erzeugt.
Die Auffrischadresse RFA [4:0] wird jedes Mal inkrementiert, wenn
das RFREQ-Signal
im H-Zustand aufgedrückt wird.
Die 5-Bit-Auffrischadresse RFA [4:0] wird zu allen DRAM-Speicherblöcken 1000–1127 rundgesendet.
Die Auffrischadresse wird auch zum Schreibpuffer 310 und
zum Lesepuffer 311 rundgesendet, wenn diese Puffer 310–311 mit
DRAM-Zellen aufgebaut sind. Die Auffrischadresse RFA [4:0] bezeichnet
die Reihenstelle in aufzufrischenden Speicherblöcken 1000–1127 vor
der nächsten
Aktivierung des RFREQ-Signals.
Die richtige Auffrischperiode ist in dieser Ausgestaltung als die
Zeit definiert, die zwischen zwei Aktivierungen des RFREQ-Signals
verstrichen ist (d. h. die Periode des Auffrisch-Timers 302).
Die richtige Auffrischperiode wird gleich der oder kleiner als die
Auffrischzeit einer Speicherzelle dividiert durch die Anzahl von
Reihen in einer Speicherbank gesetzt.
-
In einer anderen Ausgestaltung wird
das Auffrischanforderungssignal RFREQ zu allen Speicherblöcken 1000–1127 rundgesendet.
Wenn das RFREQ-Signal aktiviert wird, führt jede das aktivierte RFREQ-Signal
empfangende Speicherbank einen Auffrischzyklus aus, wenn kein Zugriffskonflikt
vorliegt. Ansonsten wird der Auffrischvorgang verzögert, bis
kein Zugriffskonflikt mehr vorliegt.
-
Eine Speicherbank wird nicht richtig
aufgefrischt, wenn die Bank den Auffrischvorgang während der
richtigen Auffrischperiode nicht ausführen kann. Im vorliegenden
Beispiel ist die richtige Auffrischperiode gleich der Zeit zwischen
zwei Aktivierungen des RFREQ-Signals oder 1 ms. Dies geschieht,
wenn auf die Speicherbank kontinuierlich für eine Periode zugegriffen
wird, die länger
ist als die richtige Auffrischperiode. Ein Auffrischvorgang einer
Speicherbank kann innerhalb eines Zyklus des Clk-Signals abgeschlossen
werden. Wenn eine Speicherbank wenigstens einen Taktzyklus während der
richtigen Auffrischperiode hat, während der nicht auf die Speicherbank
zugegriffen wird, dann kann die Speicherbank der Auffrischobligation
nachkommen, indem sie diesen Ruhezyklus zum Durchführen eines
Auffrischvorgangs nutzt. Ein Ruhezyklus in einer Speicherbank entsteht
dann, wenn keine externen Zugriffe vorliegen oder wenn ein externer
Zugriff auf eine andere Bank trifft. Wenn also der externe Zugriff
die Bank wenigstens einmal innerhalb einer richtigen Auffrischperiode
wechselt, dann können
alle Speicherbänke
ordnungsgemäß aufgefrischt
werden. Wie nachfolgend ausführlicher
beschrieben wird, gewährleisten
der Schreibpuffer 310 und der Lesepuffer 311, dass
wenigstens ein Ruhespeicherzyklus während der richtigen Auffrischperiode
für eine
Bank vorhanden ist, auf die kontinuierlich während der richtigen Auffrischperiode zugegriffen
wird.
-
In der vorliegenden Ausgestaltung
liefert das Speichersystem 300 128-Bit-Eingangsdatenwerte und 128-Bit-Ausgangsdatenwerte.
Der Lesepuffer 311 beinhaltet eine Speicherbank mit 32
Reihen und 512 Spalten von Speicherzellen. Der Lesepuffer 311 kann
somit 128 128-Bit-Wörter
oder 128 Entries speichern. Für
jeden Lesezugriff, der den Lesepuffer 311 verpasst (Miss),
wird ein 128-Bit-Datenwort aus der adressierten Speicherbank (oder
dem Schreibpuffer 310) abgerufen und als Datenausgangssignal
Do [127:0] auf den Datenausgangsbus gesetzt. Gleichzeitig werden
auch die abgerufenen Daten auf den Lesepuffer 311 geschrieben.
Wenn der Lesezugriff auf den Lesepuffer 311 trifft, werden
die angeforderten Daten aus dem Lesepuffer 311 gelesen,
und es wird nicht auf die Speicherbänke in Speicherblöcken 1000–1127 zugegriffen.
Wenn ein Schreibzugriff auf einen Lesepuffer 311 trifft,
werden die Schreibdaten sowohl auf den Lesepuffer 311 als
auch entweder auf die adressierte Speicherbank oder den Schreibpuffer 310 geschrieben,
wie nachfolgend ausführlicher
beschrieben wird.
-
Ein einzelner Lesepuffer-Cache-Tag
mit zwei Feldern dient zum Verfolgen der im Lesepuffer 311 gespeicherten
Daten. Eines der beiden Felder ist ein 7-Bit-Bankadressfeld, das
die Bank identifiziert, von der die gerade im Lesepuffer 311 gespeicherten
Daten stammen. Das andere Feld ist ein 128-Bit-Gültig-Feld, das ein 1-Bit-Gültig-Bit
für jeden
der 128 Entries des Lesepuffers 311 speichert. Ein gesetztes (d.
h. logisch "1") Gültig-Bit
im Gültig-Feld
bedeutet, dass die im entsprechenden Entry gespeicherten Daten gültig sind.
Ein zurückgesetztes
(d. h. logisch "0") Gültig-Bit
bedeutet, dass die im entsprechenden Entry gespeicheren Daten ungültig sind.
Somit funktioniert der Lesepuffer 311 wie ein Schatten
der Speicherbank, auf die zugegriffen wird. Wenn ein Lese- oder
Schreibzugriff auf eine Bank mit einer anderen Adresse als der erfolgt,
die im Bankadressfeld des Lesepuffer-Cache-Tags enthalten ist, dann
wird das Bankadressfeld des Lesepuffer-Cache-Tag so aktualisiert, dass es diese unterschiedliche
Bankadresse reflektiert. Darüber
hinaus werden alle Gültig-Bits
im Gültig-Feld
zurückgesetzt,
mit Ausnahme des Gültig-Bits
in Verbindung mit dem neuen Entry. Das Gültig-Bit in Verbindung mit
dem neuen Entry wird gesetzt, und die Lesedaten werden auf den entsprechenden
Entry des Lesepuffers 311 geschrieben.
-
Im ungünstigsten Fall wird eine einzelne Speicherbank
kontinuierlich Lesezugriffen unterzogen. Wenn einer dieser Lesezugriffe
während
einer ordnungsgemäßen Auffrischperiode
auf einen Lesepuffer 311 trifft, dann entsteht ein Ruhezyklus
in der Speicherbank, die der Lesepuffer 311 schattiert.
Diese Speicherbank kann während
dieses Ruhezyklus aufgefrischt werden. Wenn die kontinuierlichen
Lesezugriffe den Lesepuffer 311 verpassen, dann sammeln
sich Daten im Lesepuffer 311 an. Im ungünstigsten Fall durchlaufen
die Lesezugriffe den gesamten Adressraum der einzelnen Speicherbank,
so dass der Lesepuffer den gesamten Inhalt der einzelnen Speicherbank
vollständig
schattiert (d. h. Lesepuffer 311 speichert eine identische
Kopie der Daten in der einzelnen Speicherbank). Unter diesen Umständen wird
der Lesepuffer 311 in 128 Taktzyklen gefüllt. Zu
diesem Zeitpunkt wird ein weiterer Lesezugriff auf dieselbe Datenbank
unbedingt zu einem Lesepuffer-Hit führen. Da die ordnungsgemäße Auffrischperiode
von 1 ms länger
ist als die Lesepufferfüllperiode
von 128 Taktzyklen, erzeugt der Lesepuffer-Hit einen Ruhezyklus
für die
einzelne Speicherbank. Während
dieses Ruhezyklus wird die einzelne Speicherbank aufgefrischt.
-
Um Kohärenz der im Lesepuffer 311 gespeicherten
Daten zu gewährleisten,
werden Daten für
einen Schreibzugriff auf den Lesepuffer 311 geschrieben,
wenn der Schreibzugriff auf den Lesepuffer 311 trifft.
Diese Daten werden auch auf die adressierte Speicherbank oder den
adressierten Schreibpuffer 310 geschrieben, wie nachfolgend
ausführlicher
beschrieben wird. Ein Schreibzugriff trifft auf den Lesepuffer 311,
wenn die Bankadresse des Schreibzugriffs mit dem Bankadressfeld
des Lesepuffer-Cache-Tags übereinstimmt,
und das Gültig-Bit
des Lesepuffers 311 für
den Entry gesetzt ist, der mit der Adresse des Schreibzugriffs übereinstimmt.
-
Um den Betrieb des Lesepuffers 311 zusammenzufassen,
Daten werden auf den Lesepuffer 311 geschrieben, wenn ein
Lese-Miss oder ein Schreib-Hit auftritt. Daten werden aus dem Lesepuffer 311 gelesen,
wenn ein Lese-Hit auftritt. In der obigen Beschreibung ist der Lesepuffer 311 mit SRAM-Zellen
aufgebaut, so dass keine Auffrischhandhabung im Lesepuffer 311 notwendig
ist. Wenn der Lesepuffer 311 mit DRAM-Zellen aufgebaut
ist, dann wird eine Auffrischhandhabung im Lesepuffer 311 notwendig.
Diese Auffrischhandhabung wird nachfolgend ausführlicher beschrieben.
-
Der Schreibpuffer 310 ist
genauso konfiguriert wie der Lesepuffer 311. Somit beinhaltet
der Schreibpuffer 310 eine Speicherbank mit 32 Reihen und
512 Spalten von Speicherzellen. Der Schreibpuffer 310 kann
also 128 128-Bit-Wörter
oder 128 Entries speichern. Der Schreibpuffer 310 beinhaltet
auch einen einzelnen Schreibpuffer-Cache-Tag mit zwei Feldern, um
die im Schreibpuffer 310 gespeicherten Daten zu verfolgen.
Eines der beiden Felder ist ein 7-Bit-Bankadressfeld, das die Bank
identifiziert, auf die die Daten, die gerade im Schreibpuffer 310 gespeichert
sind, geschrieben werden sollen. Das andere Feld ist ein 128-Bit-Gültig-Feld,
das ein 1-Bit-Gültig-Bit
für jeden
der 128 Entries des Schreibpuffers 310 speichert. Ein gesetztes
(d. h. logisch "1") Gültig-Bit
im Gültig-Feld
bedeutet, dass die im entsprechenden Entry gespeicherten Daten gültig sind. Ein
zurückgesetztes
(d. h. logisch "0") Gültig-Bit
deutet an, dass die im entsprechenden Entry gespeicherten Daten
ungültig
sind.
-
Während
eines Schreibzugriffs werden die Daten in Verbindung mit dem Schreibzugriff
auf den Schreibpuffer 310 geschrieben, solange der Schreibpuffer 310 nicht
mit anderen Aufgaben belegt ist, wie z. B. Zurückziehen eines zuvor gespeicherten
Entry (oder das Auffrischen seines Inhalts, wenn der Schreibpuffer 310 mit
DRAM aufgebaut ist). Wenn die Schreibzugriffsdaten auf den Schreibpuffer 310 geschrieben
werden, dann wird zugelassen, dass die von dem Schreibzugriff adressierte
Speicherbank einen Auffrischvorgang durchführt. Wenn eine einzelne Speicherbank
kontinuierlich beschrieben wird, dann wird der Schreibpufer 310 schließlich ganz
mit gültigen
Daten gefüllt
sein, die für
die einzelne Speicherbank gedacht sind. In diesem Fall werden alle
Gültig-Bits
des Schreibpuffer-Cache-Tags gesetzt.
-
Wenn ein Schreibzugriff eine Speicherbank mit
einer Adresse adressiert, die sich von der im Bankadressfeld des
Schreibpuffer-Cache-Tags gespeicherten Adresse unterscheidet, dann
beginnt der Datenrückzug.
Während
des Datenrückzugs
werden Daten im Schreibpuffer 310 auf die Speicherbank
zurückgezogen,
die vom Bankadressfeld des Schreibpuffer-Cache-Tags identifiziert
wird. Die Daten im Schreibpuffer 310 werden durch den Nur-Schreib-Port 312 zurückgezogen.
Während
dieser Zeit ist der Schreibpuffer 310 mit dem Zurückziehen
von Daten beschäftigt
und kann daher nicht zum Handhaben von Schreibzugriffen verwendet
werden. Der aktuelle Schreibzugriff wird daher von der Speicherbank
gehandhabt, die durch die aktuelle Schreibzugriffsadresse bezeichnet
ist. Die Daten für den
aktuellen Schreibzugriff werden durch den Lese-Schreib-Port 313 zur
adressierten Speicherbank gesendet. Wenn das Auffrischanforderungssignal während dieser
Zeit aktiviert wird, dann werden die Auffrischvorgänge in der
den externen Zugriff handhabenden Speicherbank und der den Rückzug der Daten
handhabenden Speicherbank verzögert.
Die Auffrischvorgänge
in den anderen Speicherbänken werden
ohne Verzögerung
verarbeitet. Der Auffrischvorgang in der den externen Zugriff handhabenden Speicherbank
kann während
eines beliebigen Taktzyklus durchgeführt werden, wenn auf diese
Bank kein externer Zugriff mehr erfolgt. Im ungünstigsten Fall wird, wenn kontinuierlich
auf eine einzelne Speicherbank zugegriffen wird, der Auffrischvorgang in
dieser einzelnen Speicherbank so lange verzögert, bis der Schreibpuffer 310 den
Datenrückzugsprozess beendet
hat. Wenn der Datenrückzugsprozess
beendet ist, dann handhabt der Schreibpuffer 310 die nachfolgenden
Schreibzugriffe auf die einzelne Speicherbank. Der Auffrischvorgang
in der für
den Datenrückzug
angepeilten Speicherbank wird für eine
beliebige Taktperiode verzögert,
wenn ein Datenrückzug
stattfindet. Während
des Rückzugsprozesses
werden nur gültige
Entries zurückgezogen. Das
Gültig-Bit
jedes zurückgezogenen
Entry wird nach dem Rückzug
der Daten in diesem Entry zurückgesetzt.
Im ungünstigsten
Fall braucht der Rückzugsprozess 128 Taktzyklen.
Da die richtige Auffrischperiode länger ist als die Dauer des
ungünstigsten
Datenrückzugsprozesses
(128 Taktzyklen), kann die anhängige Auffrischung in beiden
Speicherbänken
nach Beendigung des Datenrückzugsprozesses durchgeführt werden,
ohne dass die richtige Auffrischperiode überschritten wird.
-
Während
des Datenrückzugsprozesses
wird, wenn ein externer Zugriff auf die für den Datenrückzug angepeilte
Speicherbank trifft, der Rückzugsprozess
gestoppt, und der Schreibzugriff wird vom Schreibpuffer 310 gehandhabt.
Ein externer Lesezugriff, der auf den Schreibpuffer 310 trifft
und den Lesepuffer 311 verpasst, bewirkt, dass Daten vom Schreibpuffer 310 auf
den Datenausgangsbus des Speichergerätes 300 gelesen werden,
und bewirkt gleichzeitig, dass Daten auf den Lesepuffer 311 geschrieben
werden, wobei der Lesepuffer-Cache-Tag aktualisiert wird. Datenkohärenz zwischen
Schreibpuffer 310, Lesepuffer 311 und Speicherblöcken 1000–1127 wird
durch Aktualisieren des Lesepuffers 311 für einen
beliebigen Schreibzugriff gewährleistet, der
auf den Lesepuffer 311 trifft.
-
Aufbau und Betrieb der verschiedenen
Elemente des Speichersystems 300 werden nachfolgend ausführlicher
beschrieben.
-
Speichersteuereinheit
308
-
6 ist
ein Blockdiagramm der Speichersteuereinheit 308 gemäß einer
Ausgestaltung der vorliegenden Erfindung. Die Speichersteuereinheit 308 beinhaltet
den Lese-Schreib-Datenpuffercontroller 601, den Lese-Schreib-Cache-Tag-Controller 602 und
den Speicher-Lese-Schreib-Controller 603. Im Allgemeinen
ist der Lese-Schreib-Datenpuffer-Controller 601 für das Aktivieren
von Lese- und Schreibzugriffen auf Schreibpuffer 310 und
Lesepuffer 311 verantwortlich. Der Lese-Schreib-Cache-Tag-Controller 602 ist
für die
Steuerung der Cache-Tag-Entries in Verbindung mit Schreibpuffer 310 und
Lesepuffer 311 verantwortlich. Der Speicher-Lese-Schreib- Controller 603 ist
für die
Aktivierung von Lese- und Schreibzugriffen auf Speicherblöcke 1000–1127 verantwortlich.
Der Speicher-Lese-Schreib-Controller 603 befiehlt auch
die Übertragung
von Daten zwischen Speicherports 312–313 und Speicherblöcken 1000–1127.
-
Die Speichersteuereinheit 308 arbeitet
als Reaktion auf die folgenden externen Signale: das globale Reset-Signal
RST, das externe Schreibfreigabesignal Wen, das externe Lesefreigabesignal Ren,
das externe Bankadresssignal EBA [6:0] und das externe Reihe-Spalte-Adresssignal
ERC [6:0]. Wenn Schreibpuffer 310 und Lesepuffer 311 mit DRAM-Zellen aufgebaut
sind, dann empfängt
die Speichersteuereinheit 308 auch das Lesepufferauffrischung-anhängig-Signal
REFP [r] und das Schreibpufferauffrischung-anhängig-Signal
REFP [w] (wie in 6 durch
gestrichelte Linien angedeutet).
-
6 illustriert
ferner die verschiedenen Steuersignale, die vom Lese-Schreib-Datenpuffer-Controller 601,
vom Lese-Schreib-Cache-Tag-Controller 602 und vom Speicher-Lese-Schreib-Controller 603 erzeugt
werden. Diese Steuersignale werden nachfolgend ausführlicher
beschrieben.
-
Lese/Schreib-Cache-Tag-Controller
602
-
7 ist
ein Schaltschema des Lese-Schreib-Tag-Controllers 602 gemäß einer
Ausgestaltung der vorliegenden Erfindung. Der Lese-Schreib-Cache-Tag-Controller 602 beinhaltet AND-Gates 701–705,
OR-Gates 711–713,
D-Register 721–722,
Multiplexer 723, Lesepuffer-Cache-Tag-Speicher 731,
Schreibpuffer-Cache-Tag-Speicher 732, Komparatoren 741–742 sowie
128-zu-1 Multiplexer 751–752. Der Lesepuffer-Cache-Tag-Speicher 731 beinhaltet
einen 128-Bit-Lesen-gültig-Speicher 761 und
einen 7-Bit-Lesebankadressspeicher 762.
Ebenso hat der Schreibpuffer-Cache-Tag-Speicher 732 einen 128-Bit-Schreiben-gültig-Speicher 771 und
einen 7-Bit-Schreibbankadressspeicher 772.
-
Der Lesen-gültig-Speicher 761 speichert
128 Lesen-gültig-Bits,
die den 128 Entries des Lesepuffers 311 entsprechen. Der
Lesebankadressspeicher 762 speichert die Bankadresse in
Verbindung mit dem/den gültigen
Entry oder Entries von Lesepuffer 311. Ebenso speichert
der Schreiben-gültig-Speicher 771 128
Schreiben-gültig-Bits,
die den 128 Entries des Schreibpuffers 310 entsprechen.
Der Schreibbankadressspeicher 772 speichert die Bankadresse in
Verbindung mit dem/den Gültig-Entry
oder -Entries von Schreibpuffer 310.
-
Die externen Lese- und Schreibfreigabesignale
Ren und Wen werden von D-Registern 721 und 722 an
der ansteigenden Flanke des Clk-Signals gerastet. Als Reaktion darauf
erzeugen die D-Register 721 und 722 jeweils das
interne Lesefreigabesignal REN und das interne Schreibfreigabesignal
WEN.
-
Im Allgemeinen erzeugt der Lese-Schreib-Cache-Tag-Controller 602 ein
Schreibpuffer-Hit-Signal (WBHit) und ein Lesepuffer-Hit-Signal (RBHit)
zum Steuern der Vorgänge
der Lese- und Schreibpuffer 310–311 sowie der Speicherbänke 1000–1127.
-
Das RBHit-Signal wird wie folgt erzeugt.
Der Komparator 741 vergleicht die externe Bankadresse EBA
[6:0] mit der im Lesebankadressspeicher 762 gespeicherten
Lese-Cache-Bankadresse. Wenn eine Übereinstimmung vorliegt, sendet
Komparator 741 ein logisch hohes RBBHit-Signal zum AND-Gate 704.
-
Der Inhalt des Lesen-gültig-Speichers 761 wird
als 128-Bit-Signal RBV [127:0] zum 128-zu-1 Multiplexer 751 gesendet.
Die externe Reihen-Spalten-Adresse ERC [6:0] wird zum Steuermultiplexer 751 gesendet.
Als Reaktion darauf leitet der Multiplexer 751 das LeseN-gültig-Bit
in Verbindung mit dem durch die externe Adresse bezeichneten Entry
weiter. Das gewählte
Gültig-Bit
wird durch den Multiplexer 751 als Lesepuffer-gültig-Signal (RBValid)
geleitet. Ein RBValid-Signal mit einem logisch hohen Wert bedeutet,
dass ein entsprechendes, im Lesepuffer 311 gespeichertes Wort gültig ist.
Die Signale RBBHit und RBValid werden vom AND-Gate 704 logisch UND-verknüpft, wodurch
das Lesepuffer-Hit-Signal RBHit erzeugt wird. Ein logisch hohes
RBHit-Signal zeigt das Vorliegen eines Lesepuffer-Hits an. Umgekehrt
zeigt ein logisch tiefes RBHit-Signal einen Lesepuffer-Miss an.
-
Die externe Reihen-Spalten-Adresse
ERC [6:0] wird auch zu einem Decoder (nicht dargestellt) im Lesepuffer-Cache-Tag-Speicher 731 gesendet. Als
Reaktion darauf wählt
der Decoder ein entsprechendes der 128 Bits im Lesen-gültig-Speicher 761 zum
Setzen oder Zurücksetzen
während
eines Lesepuffer-Update. Das Lesepuffer-Update wird durch ein logisch
hohes Lesepuffer-Update-Signal (RBVupdate) freigegeben. Das RBVupdate-Signal wird im H-Zustand
aufgedrückt,
wenn ein Lesepuffer-Schreibfreigabesignal (RBwr) hoch aufgedrückt wird.
Diese Logikfunktion wird vom OR-Gate 712 ausgeführt. Die
Erzeugung des Lesepuffer-Schreibfreigabesignals RBwr wird nachfolgend
ausführlicher in
Verbindung mit der Lese-Schreib-Datenpuffersteuerung 601 beschrieben.
-
Wenn der Lesepuffer 311 mit
DRAM-Zellen aufgebaut ist, wird auch das RBVupdate-Signal hoch aufgedrückt, wenn
das WEN-Signal, das RBHit-Signal und das Lesepufferauffrischung-anhängig-Signal REFP
[r] alle hoch aufgedrückt
werden. Diese Logikfunktion wird vom optionalen AND-Gate 702 und OR-Gate 712 ausgeführt. Das
AND-Gate 702 ist in gestrichelten Linien dargestellt, um
anzuzeigen, dass dieses Gate nur dann verwendet wird, wenn der Lesepuffer 311 mit
DRAM-Zellen aufgebaut ist.
-
Alle Gültig-Bits im Lesen-gültig-Speicher 761 werden
als Reaktion auf das logisch hohe Lesepuffer-Reset-Signal (RBVrst)
auf logisch tiefe Werte zurückgesetzt.
Das RBVrst-Signal
wird hoch aufgedrückt,
wenn das externe Reset-Signal (Rst) hoch aufgedrückt wird oder wenn ein Lesezugriff
den Lesepuffer 311 verpasst (d. h. das RBBHit-Signal ist
tief und das RBwr-Signal ist hoch). Diese Funktionen werden vom
AND-Gate 701 und dem OR-Gate 711 ausgeführt. Der
Lesebankadressspeicher 762 wird mit der externen Bankadresse
EBA [6:0] aktualisiert, wenn das RBwr-Signal hoch aufgedrückt wird.
-
Das WBHit-Signal wird ähnlich wie
das RBHit-Signal erzugt. Somit vergleicht der Komparator 742 die
externe Bankadresse EBA [6:0] mit der im Schreibbankadressspeicher 772 gespeicherten Schreib-Cache-Bankadresse.
Wenn eine Übereinstimmung
vorliegt, dann sendet der Komparator 742 ein logisch hohes
WBBHit-Signal zum AND-Gate 705.
-
Der Inhalt des Schreiben-gültig-Speichers 771 wird
als 128-Bit-Signal WBV [127:0) zum 128-zu-1 Multiplexer 752 gesendet.
Die externe Reihen-Spalten-Adresse ERC [6:0] wird zum Steuermultiplexer 752 gesendet.
Als Reaktion darauf leitet der Multiplexer 752 das Schreiben-gültig-Bit
in Verbindung mit dem von der externen Adresse bezeichneten Entry
weiter. Das gewählte
Gültig-Bit
wird durch den Multiplexer 752 als Schreibpuffer-gültig-Signal (WBValid)
geleitet. Dass ein WBValid-Signal einen logisch hohen Wert hat,
bedeutet, dass ein im Schreibpuffer 310 gespeichertes entsprechendes
Wort gültig ist.
Die Signale WBBHit und WBValid werden vom AND-Gate 705 logisch
UND-verknüpft, wodurch
das Schreibpuffer-Hit-Signal WBHit erzeugt wird. Ein logisch hohes
WBHit-Signal bedeutet das Auftreten eines Schreibpuffer-Hits. Umgekehrt
bedeutet ein logisch tiefes WBHit-Signal einen Schreibpuffer-Miss.
-
Man beachte, dass der Inhalt des
Schreibbankadressspeichers 772 als Schreibpufferbankadresse
WBBA [6:0] bereitgestellt wird und der Inhalt des Schreiben-gültig-Speichers 771 als
Schreiben-gültig-Bits
WBV [127:0] bereitgestellt wird.
-
Der Multiplexer 723 ist
so geschaltet, dass er das externe Reihen-Spalten-Adresssignal ERC
[6:0] und eine Schreibpufferrückzug-Entry-Adresse WBCA
[6:0] empfängt.
Die Schreibpufferrückzug-Entry-Adresse
WBCA [6:0] wird nachfolgend ausführlicher
mit Bezug auf den Lese-Schreib-Datenpuffer-Controller 601 beschrieben.
Der Multiplexer 723 wird vom Schreibpufferrückzugsfreigabesignal WBret
gesteuert. Wenn das WBret-Signal einen logisch hohen Wert hat (was
bedeutet, dass der Inhalt des Schreibpuffers 310 zurückgezogen
wird), dann wählt
der Multiplexer 723 die Schreibpufferrückzug-Entry-Adresse WBCA [6:0].
Wenn das WBret-Signal einen logisch tiefen Wert hat, dann wählt der Multiplexer 723 die
externe Reihen-Spalten-Adresse ERC [6:0]. Der Ausgangsanschluss
des Multiplexers 723 ist mit einem Decoder (nicht dargestellt)
im Schreibpuffer-Cache-Tag-Speicher 732 verbunden. Als
Reaktion darauf wählt
dieser Decoder ein entsprechendes der im Schreiben-gültig-Speicher 771 gespeicherten
Bits WBV [127:0] zum Setzen oder Zurücksetzen während eines Schreibpuffer-Update.
-
Ein Schreibpuffer-Update wird durch
ein logisch hohes Schreibpuffer-Update-Signal (WBVupdate) freigegeben. Das
WBVupdate-Signal wird hoch aufgedrückt, wenn ein Schreibpuffer-Schreibfreigabesignal
(WBwr) hoch aufgedrückt
wird. Die Erzeugung des WBwr-Signals wird nachfolgend ausführlicher
in Verbindung mit dem Lesen-Schreiben-Datenpuffer-Controller 601 beschrieben.
Das WBVupdate-Signal wird auch hoch aufgedrückt, wenn ein Schreibpuffer-Lesefreigabesignal
(WBrd) hoch aufgedrückt
wird und das Schreibpufferrückzugsfreigabesignal
WBret hoch aufgedrückt
wird (d. h. wenn Daten im Schreibpuffer 310 zurückgezogen
werden). Die Erzeugung der Signale WRrd und WBret wird nachfolgend
ausführlicher
in Verbindung mit dem Lese-Schreib-Datenpuffer-Controller 601 beschrieben. Diese Logikfunktionen
werden vom AND-Gate 703 und vom OR-Gate 713 ausgeführt.
-
Alle im Schreiben-gültig-Speicher 771 gespeicherten
Schreiben gültig-Bits
werden auf logisch tiefe Werte zurückgesetzt, wenn das externe
Reset-Signal (Rst) hoch aufgedrückt
wird. Der Schreibbankadressspeicher 772 wird mit der externen
Bankadresse EBA [6:0] aktualisiert, wenn das WBwr-Signal hoch aufgedrückt wird.
-
Der Lesepuffer-Cache-Tag-Speicher 731 und
der Schreibpuffer-Cache-Tag-Speicher 732 sind mit D-Registern
aufgebaut. Die Ausgänge
dieser Register sind nach der ansteigenden Flanke des Clk-Signals
gültig.
Dadurch wird gewährleistet,
dass die aktualisierten Werte die im selben Taktzyklus ablaufenden
Vorgänge
nicht beeinflussen.
-
Lese-Schreib-Datenpuffer-Controller
601
-
8 ist
ein Schaltschema des Lese-Schreib-Datenpuffer-Controllers 601 gemäß einer Ausgestaltung
der vorliegenden Erfindung. Der Lese-Schreib-Datenpuffer-Controller 601 beinhaltet Wechselrichter 801–802,
AND-Gates 811–819, OR-Gates 821–824,
7-Bit-Zähler 831,
Multiplexer 832 und R-S-Register 833. Im Allgemeinen
aktiviert der Lese-Schreib-Datenpuffer-Controller 601 Lese- und
Schreibzugriffe auf Schreib- und Lesepuffer 310–311.
Der Lese-Schreib-Datenpuffer-Controller 601 empfängt die
vom Lese-Schreib- Cache-Tag-Controller 602 erzeugten
Signale WBBHit, WBHit, RBHit, WBV [127:0], WEN und REN sowie das
externe Reset-Signal RST. Wenn der Schreibpuffer 310 und
der Lesepuffer 311 mit DRAM-Zellen aufgebaut sind, dann
ist der Lese-Schreib-Datenpuffer-Controller 601 auch
so geschaltet, dass er das Schreibpuffer-Auffrischsignal REFP [w]
und das Lesepuffer-Auffrischsignal REFP [r] empfängt (wie durch gestrichelte
Linien in 8 angedeutet).
Mit diesen Eingangssignalen und dem oben erörterten Algorithmus erzeugt
der Lese-Schreib-Datenpuffer-Controller 601 das Lesepuffer-Lesefreigabesignal RBrd,
das Lesepuffer-Schreibfreigabesignal RBwr, das Schreibpuffer-Lesefreigabesignal
WBrd und das Schreibpuffer-Schreibfreigabesignal WBwr.
-
Das Lesepuffer-Lesefreigabesignal
RBrd wird hoch aufgedrückt,
wenn ein Lesezugriff auf den Lesepuffer 311 trifft (und
wenn keine anhängige
Auffrischung zum Lesepuffer 311 vorliegt). Das heißt, das
RBrd-Signal wird hoch aufgedrückt,
wenn beide Signale RBhit und REN hoch sind (und das REFP [r] Signal
ggf. tief ist). Diese Funktion wird vom AND-Gate 812 ausgeführt.
-
Das Lesepuffer-Schreibfreigabesignal
RBwr wird hoch aufgedrückt,
wenn ein Schreibzugriff auf einen Lesepuffer 311 trifft
oder wenn ein Lesezugriff den Lesepuffer 311 verpasst.
Das heißt,
das RBwr-Signal wird hoch aufgedrückt, wenn das RBHit-Signal
tief und das REN-Signal hoch ist oder wenn das RBHit-Signal hoch
und das WEN-Signal hoch ist. Diese Funktion wird von AND-Gates 813–814 und vom
OR-Gate 821 ausgeführt.
Man beachte, dass, wenn das REFP [r] Signal anliegt, dieses Signal
einen logisch tiefen Wert haben muss (d. h. keine anhängige Auffrischung
zum Lesepuffer 311), damit das RBwr-Signal aufgedrückt werden kann.
-
Das Schreibpufferrückzugssignal
WBret wird hoch aufgedrückt,
wenn Daten vom Schreibpuffer 310 zu den Speicherblöcken 1000–1127 zurückgezogen
werden sollen. Somit wird das WBret-Signal hoch aufgedrückt, wenn
ein Schreibzugriff zu einer Bank auftritt, die sich von der Bank
unterscheidet, die dieser Schreibpuffer 310 schattiert.
Dieser Zustand wird dann signalisiert, wenn das WBBHit-Signal tief ist,
das WEN-Signal hoch ist und eines der im Schreiben-gültig-Speicher 771 gespeicherten
Gültig-Bits WBV
[127:0] hoch ist. Diese Logik wird vom OR-Gate 822, dem
AND-Gate 818 und dem R-S-Register 833 implementiert.
-
Daten werden vom Schreibpuffer 310 über eine
Periode von 128 Zyklen des Clk-Signals
zurückgezogen.
Während
dieser Zeit bleibt das WBret-Signal in einem logisch hohen Zustand.
Der 7-Bit-Zähler 831 dient
zum Erzeugen der Schreibpufferrückzug-Entry- Adresse WBCA [6:0].
Die Schreibpufferrückzug-Entry-Adresse
WBCA [6:0] dient auch zum Steuern des 128-zu-1 Multiplexers 832.
Als Reaktion auf die Schreibpuffenückzug-Entry-Adresse WBCA [6:0] leitet der
Multiplexer 832 ein Schreiben-gültig-Bit vom Signal WBV [127:0],
das dem durch das WBCA [6:0] Signal identifizierten Entry entspricht. Ein
logisch hohes Schreiben-gültig-Bit
wird durch den Multiplexer 832 als logisch hohes Gültig-Bit-Signal
(VB) geleitet. Das VB-Signal und das WBret-Signal werden an Eingangsanschlüsse des
AND-Gate 819 angelegt (ggf. zusammen mit dem invertierten REFP
[w] Signal). Der Ausgang des AND-Gate 819 wird an das OR-Gate 824 angelegt,
um das Schreibpufferlesesignal WBrd zu erzeugen. Wenn beide Signale
VB und WBret logisch hohe Werte haben (und ggf. das REFP [w] Signal
einen logisch tiefen Pegel hat, was bedeutet, dass keine anhängige Auffrischung
im Schreibpuffer 310 vorliegt), dann wird das Schreibpuffer-Lesefreigabesignal
WBrd hoch aufgedrückt.
Wenn das Schreibpuffer-Lesefreigabesignal WBrd
hoch ist, dann werden Daten von dem Entry, der durch die Schreibpufferrückzug-Entry-Adresse WBCA
[6:0] bezeichnet werden, aus dem Schreibpuffer 310 gelesen
und auf die Speicherbank geschrieben, die vom Schreibpuffer 310 schattiert
wird (d. h. die Speicherbank, die von der im Schreibbankadressspeicher 772 gespeicherten
Schreibpufferbankadresse WBBA [6:0] identifiziert wird).
-
Wenn das vom Multiplexer 832 kommende Gültig-Bit
nicht gesetzt ist, was bedeutet, dass der zugehörige Entry im Schreibpuffer 310 nicht
gültig
ist, dann hat das VB- Signal
einen logisch tiefen Wert. Unter diesen Bedingungen wird das WBrd-Signal
in den L-Zustand gebracht und während
dieses Zyklus werden keine Daten vom Schreibpuffer 310 zurückgezogen.
-
Der 7-Bit-Zähler 831 inkrementiert
jeden Taktzyklus, bis alle Bits der Schreibpufferrückzug-Entry-Adresse
WBCA [6:0] zu logischen "1" Werten werden. Zu
diesem Zeitpunkt bringt der Zähler 831 das
Ausgangssignal FULL in einen logisch hohen Zustand. Das logisch
hohe FULL-Signal setzt das R-S-Register 833 (durch das
OR-Gate 823) zurück.
Infolgedessen wird das WBret-Signal tief angesteuert, wodurch der
Datenrückzugsprozess
beendet wird.
-
Das R-S-Register 833 wird
auch zurückgesetzt,
wenn die Signale WBBHit und WEN beide im H-Zustand sind, was einen
Schreibpuffer-Hit während
eines Schreibzugriffs bedeutet. Darüber hinaus wird das R-S-Register 833 zurückgesetzt,
wenn das externe Reset-Signal RST hoch aufgedrückt wird. Diese Funktionen
werden vom AND-Gate 817 und vom OR-Gate 823 durchgeführt.
-
Das WBret-Signal wird auch mit dem
synchronen Reset-Eingangsanschluss des 7-Bit-Zählers 831 verbunden.
Der tiefe Zustand des WBret-Signals bewirkt, dass der Zähler 831 auf
der nachfolgenden ansteigenden Flanke des Clk-Signals zurückgesetzt wird.
Wenn der Zähler 831 zurückgesetzt
ist, werden alle seine Ausgänge
tief angesteuert. Wenn der Schreibpuffer 310 mit DRAM-Zellen
aufgebaut ist, dann inkrementiert der 7-Bit-Zähler 831 nicht mehr, wenn
eine Auffrischung im Schreibpuffer 310 anhängig ist
(d. h. wenn das Signal REFP [w] hoch aufgedrückt wird)), so dass der Schreibpuffer 310 aufgefrischt
werden kann.
-
Das WBrd-Signal wird auch dann hoch
aufgedrückt,
wenn ein Lesezugriff auf den Schreibpuffer 310 trifft,
aber den Lesepuffer 311 verpasst. Dieser Zustand wird durch
ein logisch hohes WBHit-Signal, ein logisch tiefes RBHit-Signal
und ein logisch hohes REN-Signal
angedeutet. Diese Logikfunktion wird vom AND-Gate 811 und
vom OR-Gate 824 implementiert.
-
Wenn Schreibpuffer 310 und
Lesepuffer 311 mit DRAM-Zellen aufgebaut sind, dann wird
das WBrd-Signal hoch aufgedrückt,
wenn das Signal REFP [r] hoch ist, das REN-Signal hoch ist und das WBHit-Signal
hoch ist. Das heißt,
Daten werden aus dem Schreibpuffer 310 gelesen, wenn ein
Lesezugriff auf den Schreibpuffer 310 trifft und eine Auffrischung im
Lesepuffer 311 anhängig
ist. Diese Logikfunktion wird von den AND-Gates 811 und 816 ausgeführt. Damit
die Daten aus dem Schreibpuffer 310 durch den Multiplexer 309 (5) gelesen werden können, wird
das Signal REFP [r] an den Steuerausgangsmultiplexer 309 angelegt.
Wenn beide Signale WBHit und REFP [r] hoch sind, dann wird der Ausgangsmultiplexer 309 so
konfiguriert, dass Bus WBO [127:0] mit Datenausgangsbus Do [127:0]
verbunden ist.
-
Der Schreibpuffer 310 handhabt
sämtliche Schreibzugriffe,
es sei denn, dass der Schreibpuffer 310 mit dem Zurückziehen
von Daten belegt ist (d. h. das WBret-Signal ist hoch). Wenn der
Schreibpuffer 310 mit DRAM-Zellen aufgebaut ist, dann handhabt der
Schreibpuffer 310 keine Schreibzugriffe, wenn eine Auffrischung
im Schreibpuffer anhängig
ist (d. h. wenn das Signal REFP [w] hoch ist). Daher wird das Schreibpuffer-Schreibfreigabesignal
WBwr hoch aktiviert, wenn das WEN-Signal hoch und das WBret-Signal tief ist (und
das Signal REFP [w], falls vorhanden, tief ist). Diese Logikfunktion
wird vom AND-Gate 815 implementiert.
-
Speicher-Lese-Schreib-Controller
603
-
9 ist
ein Schaltschema des Speicher-Lese-Schreib-Controllers 603 gemäß einer
Ausgestaltung der vorliegenden Erfindung. Der Speicher-Lese-Schreib-Controller 603 beinhaltet
AND-Gates 901–905 und
OR-Gates 911–912.
Der Speicher-Lese-Schreib-Controller 603 ist
für das
Aktivieren von Lese- und Schreibzugriffen zu den Speicherblöcken 1000–1127 verantwortlich.
Der Speicher-Lese-Schreib-Controller 603 befiehlt auch
die Übertragung
von Daten zwischen Nur-Schreib-Port 312, Lese-Schreib-Port 313 und
Speicherblöcken 1000–1127.
Diese Funktionen werden durch die Erzeugung des Speicher-Lesefreigabesignals
Mrd1 und der Speicher-Schreibfreigabesignale Mwr1 und Mwr2 ausgeführt. Wie
nachfolgend ausführlicher
beschrieben wird, aktiviert das Speicher-Lesefreigabesignal Mrd1 einen Lesevorgang
auf den Lese-Schreib-Port 313, das Speicher-Schreibfreigabesignal
Mwr1 aktiviert einen Schreibvorgang auf den Lese-Schreib-Port 313,
und das Speicher-Schreibfreigabesignal Mwr2 aktiviert einen Schreibvorgang auf
den Nur-Schreib-Port 312.
-
Ein Speicherlesevorgang wird dann
durchgeführt,
wenn ein Lesezugriff sowohl Schreibpuffer 310 als auch
Lesepuffer 311 verpasst. Dieser Zustand wird angezeigt,
wenn das RBhit-Signal tief, das WBHit-Signal tief und das REN-Signal
hoch sind. Das AND-Gate 902 und
das OR-Gate 911 sind so konfiguriert, dass ein logisch
hohes Speicher-Lesefreigabesignal
Mrd1 unter diesen Bedingungen erzeugt wird. Wenn das Mrd1-Signal
hoch ist, dann führt
die von der Bankadresse BA [n] bezeichnete Speicherbank einen Speicherlesezugriff
durch den Lese-Schreib-Port 313 aus.
-
Wenn der Lesepuffer 311 mit
DRAM-Zellen aufgebaut ist, dann erfolgt ein Speicherlesevorgang auch
dann, wenn ein Lesezugriff auftritt, wenn eine Auffrischung im Lesepuffer 311 anhängig ist
und der Lesezugriff den Schreibpuffer 310 verpasst. Dieser Zustand
wird angezeigt, wenn das REN-Signal und das REFP [r] Signal hoch
sind und das WBHit-Signal tief ist. Das Signal REFP [r] wird zum
AND-Gate 901 addiert (wie durch gestrichelte Linien angedeutet
ist), um das Mrd1-Signal unter diesen Bedingungen zu erzeugen. Auch
hier führt
wieder, wenn das Mrd1-Signal hoch aufgedrückt wird, die von der Bankadresse BA
[n] bezeichnete Speicherbank einen Speicherlesezugriff durch den
Lese-Schreib-Port 313 durch.
-
Ein Speicherschreibvorgang wird durch
den Nur-Schreib-Port 312 durchgeführt, wenn Daten vom Schreibpuffer 310 auf
Speicherbänke 1000–1127 zurückgezogen
werden. Dieser Zustand wird angedeutet, wenn die Signale WBret und
VB beide logisch hohe Werte haben. Das AND-Gate 903 ist
so konfiguriert, dass es unter diesen Bedingungen ein logisch hohes
Mwr2-Signal erzeugt. Wenn das Signal Mwr2 hoch ist, werden Daten
vom Schreibpuffer 310 auf die durch die Schreibpufferbankadresse
WBBA [6:0] angezeigte Speicherbank zurückgezogen.
-
Wenn der Schreibpuffer 310 mit
DRAM-Zellen aufgebaut ist, dann wird das Mwr2-Signal nicht hoch aufgedrückt, wenn
eine Auffrischung im Schreibpuffer 310 anhängig ist
(d. h. das Signal REFP [w] hoch ist). In diesem Fall wird das Signal REFP
[w] zum AND-Gate 903 hinzugefügt (wie
durch gestrichelte Linien angedeutet), um das Mwr2-Signal zu erzeugen.
-
Ein Speicherschreibvorgang wird durch
den Lese-Schreib-Port 313 dann ausgeführt, wenn der Schreibpuffer 310 einen
externen Schreibzugriff nicht handhaben kann. Dieser Zustand liegt
dann vor, wenn ein Schreibzugriff während eines Schreibpufferrückzugs auftritt.
Dieser Zustand wird angezeigt, wenn die Signale WBret und WEN beide
im logisch hohen Zustand sind. Das AND-Gate 904 und das OR-Gate 912 sind
so konfiguriert, dass sie unter diesen Bedingungen ein logisch hohes
Mwr1-Signal erzeugen. Wenn das Mwr1-Signal hoch ist, dann werden die Daten
auf die durch die Bankadresse BA [n] bezeichnete Speicherbank durch
den Lese-Schreib-Port 313 geschrieben.
-
Wenn der Schreibpuffer 310 mit
DRAM-Zellen aufgebaut ist, dann wird auch ein Speicherschreibvorgang
durch den Lese-Schreib-Port 313 als Reaktion auf einen
Schreibzugriff durchgeführt,
wenn eine Auffrischung im Schreibpuffer 310 anhängig ist. Dieser
Zustand wird mit einem logisch hohen WEN-Signal und einem logisch
hohen REFP [w] Signal angezeigt. Um diese Funktion auszuführen, wird ein
AND-Gate 905 hinzugefügt
(wie durch gestrichelte Linien angedeutet). Das AND-Gate 905 und
das OR-Gate 912 sind so konfiguriert, dass sie unter diesen
Bedingungen ein logisch hohes Mwr1-Signal erzeugen. Auch hier werden
wieder, wenn das Mwr1-Signal hoch ist, Daten durch den Lese-Schreib-Port 313 auf
die durch die Bankadresse BA [n] bezeichnete Speicherbank geschrieben.
-
Organisation der Speicherblöcke 1100–1127
-
10 ist
ein Blockdiagramm eines Speicherblocks 1000 gemäß einer
Ausgestaltung der vorliegenden Erfindung. In der beschriebenen Ausgestaltung
sind die Speicherblöcke 1001–1127 mit dem
Speicherblock 1000 identisch. Der Speicherblock 1000 beinhaltet
eine Speicherarray 2000 mit 32 Reihen und 512 Spalten von
Speicherzellen. Die Speicherarray 2000 besteht aus gewöhnlichen DRAM-Zellen
mit einem Transistor und einem Kondensator. Der Speicherblock 1000 führt einen RAS-Zyklus
oder einen Speicherzyklus in einem einzigen Zyklus des Clk-Signals
aus. Somit kann Speicherblock 1000 einen Direktzugriff
oder eine Reihenauffrischung in einem Taktzyklus verarbeiten. Bei Speichervorgängen kann
einer der Speicherblöcke 1000–1127 mit
einem der Ports 312– 313 kommunizieren,
während
ein anderer der Speicherblöcke 1000–1127 mit
dem anderen der Ports 312–313 kommuniziert.
-
Der Speicherblock 1000 beinhaltet
alle konventionellen Schaltungen in Verbindung mit einer DRAM-Array
wie z. B. den Wortleitungstreibern 2001 und den Leseverstärkern 2002.
Der Speicherblock 1000 beinhaltet auch Reihenadressdecoder 2003, Reihenadressmultiplexer 2004,
Spaltenadressdecoder 2005, Spaltenadressmultiplexer 2006,
Speicherbank-Controller 2007 und zwei Sätze von Spaltenmultiplexern 2011 und 2012.
Der Spaltenmultiplexer 2011 verbindet die Leseverstärker 2002 mit
dem Lese-Schreib-Port 313, und der Spaltenmultiplexer 2012 verbindet
die Leseverstärker 2002 mit
dem Nur-Schreib-Port 312.
-
Die Spaltenmultiplexer 2011 und 2012 werden
vom Spaltenadressdecoder 2005 gesteuert. Der Spaltenadressdecoder 2005 decodiert
die vom Spaltenadressmultiplexer 2006 empfangene Spaltenadresse.
Der Spaltenadressmultiplexer 2006 wählt die Schreibpufferrückzug-Entry-Adresse
WBCA [1:0] während
eines Schreibpufferrückzugs.
Der Spaltenadressmultiplexer 2006 wählt die externe Reihen-Spalten-Adresse
ERC [1:0], wenn kein Schreibpufferrückzug vorliegt. Der Spaltenadressdecoder 2005 aktiviert
höchstens
einen der Spaltenmultiplexer 2011 und 2012 als
Reaktion auf die Signale CAS1[ n] und CAS2 [n]. Wie nachfolgend
ausführlicher
beschrieben wird, werden die Signale CAS1 [n] und CAS2 [n] vom Speicherbank-Controller 2007 erzeugt.
-
Der Reihenadressdecoder 2003 aktiviert
die vom Ausgang des Reihenadressmultiplexers 2004 bezeichnete
Wortleitung. Der Reihenadressmultiplexer 2004 wird von
dem Mwr2-Signal und dem lokalen Auffrischsignal REF [n] gesteuert.
Im Vorgabemodus wird, wenn beide Signale REF [n] und Mwr2 tief sind, der
Reihenadressmultiplexer 2004 so gesteuert, dass er die
externe Reihen-Spalten-Adresse ERC [6:2] zum Reihenadressdecoder 2003 leitet.
Wenn der Speicherblock 1000 einen Schreibpufferrückzug handhabt,
dann ist das Mwr2-Signal hoch und der Reihenadressmultiplexer 2004 wird
so gesteuert, dass er die Schreibpufferrückzug-Entry-Adresse WBCA [6:0] zum Reihenadressdecoder 2003 leitet. Wenn
der Speicherblock 1000 einen Auffrischvorgang handhabt,
dann ist das Signal REF [n] hoch, und der Reihenadressmultiplexer 2004 wird
so gesteuert, dass er die Auffrischadresse RFA [4:0] zum Reihenadressdecoder 2003 leitet.
-
Die Operationen der Speicherzellenarray 2000 (wie
z. B. Wortleitungsfreigabe, Leseverstärkerfreigabe, Spaltenschalterfreigabe
und Bitleitungsvorladungsfreigabe) werden von den lokalen Signalen RAS#
[n], SEN# [n], CAS# [n] und PRC# [n] gesteuert, die vom Speicherbank-Controller 2007 erzeugt werden.
Die Funktionen dieser Signale sind in der in Gemeinschaftsbesitz
befindlichen mitanhängigen US-Patentanmeldung
mit der Seriennummer 09/076,608 beschrieben, die hiermit in ihrer
Gesamtheit durch Bezugnahme eingeschlossen ist. Die Aktivierung
des Signals RAS# [n] deaktiviert den Bitleitungsausgleich und aktiviert
den Reihenadressdecoder, was zu einer Aktivierung einer durch die
Reihenadresse gewählten
Wortleitung führt.
Die Aktivierung des Signals SEN# [n] bewirkt die Aktivierung der
Leseverstärker
in der Speicherbank. Die Aktivierung des Signals CAS 1[n] bewirkt
eine Verbindung der Leseverstärker 2002 mit
dem Lese-Schreib-Port 313 durch
Spaltenmultiplexer 2011 und Datenbus 2021, der
Datensignale RWDL [127:0] und komplementäre Datensignale RWDL# [127:0]
auf bidirektionale Weise führt.
Der Datenbus 2021 ist auf ähnliche Weise parallel mit
den Speicherblöcken 1001–1127 verbunden.
-
Ebenso bewirkt eine Aktivierung des
Signals CAS2 [n] eine Verbindung der Leseverstärker 2002 mit dem
Nur-Schreib-Port 312 durch den Spaltenmultiplexer 2012 und
den Datenbus 2022, der Datensignale WDL [127:0] und komplementäre Datensignale WDL#
[127:0] auf unidirektionale Weise führt. Der Datenbus 2022 ist
auf ähnliche
Weise parallel zu Speicherblöcken 1001–1127 geschaltet.
-
Eine Aktivierung des Signals PRC#
[n] schaltet die Multiplexer 2011 und 2012 ab,
schaltet die aktivierte Wortleitung ein, deaktiviert die Leseverstärker 2002 und
aktiviert den Bitleitungsausgleichschaltkomplex (nicht dargestellt).
-
Speicherbank-Controller
2007
-
11 ist
ein Schaltschema des Speicherbank-Controllers 2007 gemäß einer
Ausgestaltung der vorliegenden Erfindung. Der Speicherbank-Controller
2007 umfasst Wechselrichter 2101, OR-Gates 2102–2103,
AND-Gates 2111–2116,
NAND-Gate 2117, D-Register 2121,
R-S-Register 2122 und NOR-Gates 2131–2136.
-
Wie oben beschrieben, wird das Eingangsauffrischanforderungssignal
REQI [n] im D-Register 2121 als Reaktion auf die ansteigende
Flanke des Clk-Signals gerastet. Das D-Register 2121 erzeugt ein Ausgangsauffrischanforderungssignal REQO
[n] zum benachbarten Speicherblock in einer verketteten Weise.
-
Auch das Eingangsauffrischanforderungssignal
REQI [n] wird zum Set-Anschluss des R-S-Registers 2122 gesendet.
Wenn das Eingangsanforderungssignal REQI [n] einen logisch hohen
Wert hat, was bedeutet, dass eine Auffrischung im Speicherblock 1000 ausgeführt werden
soll, dann rastet eine ansteigende Flanke des Clk-Signals einen
logisch hohen Wert im R-S-Register 2122. Dieser logisch hohe
Wert wird an den Ausgangsanschluss des R-S-Registers 2122 als
lokales Auffrischung-anhängig-Signal
REFP [n] angelegt. Das Signal REFP [n] bleibt so lange hoch, bis
es durch ein logisch hohes lokales Auffrischsignal REF [n] zurückgesetzt
wird, was bedeutet, dass die anhängige
Auffrischung durchgeführt
wurde.
-
Die lokalen Signale RAS# [n], SEN#
[n] und PRC# [n) werden jeweils durch die globalen Zeitsteuersignale
RAS#, SEN# und PRC# ausgelöst.
Ebenso werden die lokalen Signale CAS 1[n] und CAS2 [n] durch das
globale Zeitsteuersignal CAS# ausgelöst. Die globalen Zeitsteuersignale
RAS#, CAS#, SEN# und PRC# werden durch den Timing-Sequencer 303 in 5 erzeugt. Der Aufbau des
Timing-Sequencers 303 ist ähnlich wie der Aufbau des Timing-Sequencers,
der in der US-Patentanmeldung mit der Seriennummer 09/076,608 beschrieben
ist, und erzeugt somit globale Zeitsteuersignale mit festen Phasenbeziehungen.
Der Speichersequencer 303 wird in jedem Zyklus des Clk-Signals
aktiviert. Infolgedessen werden die globalen Timing-Signale RAS#, CAS#,
SEN# und PRC# in jedem Taktzyklus erzeugt.
-
Die Aktivierung der Signale RAS#
[n], SEN# [n] und PRC# [n] wird auch durch ein lokales Zugriffsfreigabesignal
ACC# [n] und ein lokales Auffrischungsfreigabesignal REF [n] gesteuert.
Das Signal ACC# [n] wird tief aktiviert, wenn eines der Speicher-Lese-Schreib-Freigabesignale
Mrd1, Mwr1 und Mwr2 hoch und das Bankaktivierungssignal BA [n] hoch
ist. Diese Logikfunktion wird vom OR-Gate 2102 und vom
NAND-Gate 2117 implementiert. Wie oben beschrieben, bedeutet
ein logisch hohes Mrd1-Signal, dass ein Speicherlesevorgang am Lese-Schreib-Port 313 durchgeführt werden
soll. Ein logisch hohes Mwr1-Signal bedeutet, dass ein Speicherschreibvorgang
am Lese-Schreib-Port 313 ausgeführt werden soll. Ebenso bedeutet
ein logisch hohes Mwr2-Signal, dass ein Speicherschreibvorgang am
Nur-Schreib-Port 312 durchgeführt werden soll. Das Signal
BA [n] wird hoch aktiviert, wenn der Speicherblock [n] für einen
externen Zugriff designiert oder für einen Datenrückzug angepeilt
wird.
-
Das lokale Auffrischungsfreigabesignal
REF [n] wird hoch aktiviert, wenn eine anhängige Auffrischung vorliegt
(d. h. das Auffrischung-anhängig-Signal
REFP [n] ist hoch) und keine anhängige
Zugriffsanforderung zum Speicherblock vorliegt (d. h. das Signal
ACC# [n] ist hoch). Diese Logikfunktion wird vom AND-Gate 2113 implementiert.
-
Der hohe Zustand des Signals REF
[n] setzt den Ausgang des R-S-Flipflop 2122 an der nächsten ansteigenden
Flanke des Clk-Signals zurück,
wodurch die anhängige
Auffrischung nach der Dwchführung
des Auffrischvorgangs storniert wird.
-
Das Signal CAS 1[n] wird aktiviert,
wenn der Speicherblock 1000 auf den Lese-Schreib-Port 313 zugreift.
Spezifischer ausgedrückt,
das Signal CAS1 [n] wird aktiviert, wenn das Signal CAS# tief aufgedrückt wird,
eines der Signale Mrd1 und Mwr1 und das Bankzugriffssignal BA [n]
hoch aktiviert werden. Diese Logikfunktion wird von Wechselrichter 2101, OR-Gate 2103 und
AND-Gate 2112 ausgeführt.
-
Das Signal CAS2 [n] wird aktiv, wenn
auf den Speicherblock 1000 durch den Nur-Schreib-Port 312 zugegriffen
wird. Spezifischer ausgedrückt,
das Signal CAS2 [n] wird aktiv, wenn das Signal CAS# tief aufgedrückt, das
Mwr2 Signal hoch aktiviert und das Bankzugriffssignal BA [n] hoch
aktiviert wird. Diese Logikfunktion wird vom Wechselrichter 2101 und
vom AND-Gate 2111 implementiert.
-
Das lokale Signal RAS# [n] wird tief
aufgedrückt,
wenn das globale Signal RAS# tief aufgedrückt wird, ein Auffrischvorgang
anhäng
ist (d. h. das Auffrischsignal REFP [n] wird hoch aufgedrückt) und
kein Lese- oder Schreibzugriff auf den Speicherblock 1000 vorliegt
(d. h. das Signal ACC# [n] wird hoch weggenommen). Diese Logikfunktion
wird von den AND-Gates 2113–2114 implementiert.
-
Das lokale Signal RAS# [n] wird auch
tief aufgedrückt,
wenn das globale Signal RAS# tief aufgedrückt wird und ein lokaler Zugriff
anhängig
ist (d. h. das Signal ACC# [n] wird tief aufgedrückt). Diese Logikfunktion wird
von den NOR-Gates 2131–2132 ausgeführt.
-
Das lokale Signal SEN# [n] wird als
Reaktion auf das globale Signal SEN#, das Auffrischung-anhängig-Signal
REFP [n] und das lokale Zugriffssignal ACC# [n] auf eine ähnliche
Weise wie das lokale Signal RAS# tief aufgedrückt. Das lokale Signal SEN# [n]
wird vom AND-Gate 2115 und den NOR-Gates 2133–2134 erzeugt.
-
Das lokale Signal PRC# [n] wird als
Reaktion auf das globale Signal PRC#, das lokale Auffrischung-anhängib-Signal
REFP [n] und das lokale Zugriffssignal ACC# [n] auf ähnliche
Weise wie das lokale Signal RAS# tief aufgedrückt. Das lokale Signal PRC#
[n] wird vom AND-Gate 2116 und den NOR-Gates 2135–2136 erzeugt.
-
Organisation des Schreibpuffers
310
-
12 ist
ein Blockdiagramm, das den Schreibpuffer 310 illustriert.
Da der Schreibpuffer 310 ähnlich wie der Speicherblock 1000 (10) ist, erhielten gleiche
Elemente in 10 und 12 gleiche Bezugsziffern.
Somit beinhaltet der Schreibpuffer 310 die Speicherarray 2000,
Wortleitungstreiber 2001, Leseverstärker 2002 und den
Reihenadressdecoder 2003. Der Schreibpuffer 310 beinhaltet
auch Spaltenmultiplexer 1201, Bustreiberschaltung 1202, Spaltenadressdecoder 1203,
Reihenadressmultiplexer 1204 und Schreibpuffer-Controller 1205.
Der Schreibpuffer-Controller 1205 beinhaltet das D-Register 1211,
R-S-Register 1212, NOR-Gates 1213–1214,
AND-Gates 1215–1216 und
OR-Gates 1217–1219.
-
Der Spaltenmultiplexer 1201 wird
vom Spaltenadressdecoder 1203 gesteuert. Der Spaltenadressdecoder 1203 decodiert
die externe Spaltenadresse ERC [1:0], wenn das lokale Spaltenzugriffssignal
CAS [w] hoch aufgedrückt
wird. Wie nachfolgend ausführlicher
beschrieben wird, wird das Signal CAS [w] vom Schreibpuffer-Controller 1205 erzeugt.
-
Der Reihenadressdecoder 1203 aktiviert
die durch die externe Reihenadresse ERC [6:2] bezeichnete Wortleitung.
Wenn der Schreibpuffer 310 mit DRAM-Zellen aufgebaut wird,
dann kann der Reihenadressdecoder so gesteuert werden, dass eine
durch die Auffrischadresse RFA [4:0] bezeichnete Wortleitung aktiviert
wird. Wenn also der Schreibpuffer 310 aufgefrischt wird,
dann wird der Reihenadressmultiplexer 1204 so gesteuert,
dass er die Auffrischadresse RFA [4:0] zum Reihenadressdecoder 2003 leitet.
Ansonsten wird der Reihenadressmultiplexer 1204 immer so
gesteuert, dass er die externe Reihenadresse ERC [6:2] zum Reihenadressdecoder 2003 leitet.
-
Die Operationen des Schreibpuffers 310 (wie Wortleitungsfreigabe,
Leseverstärkerfreigabe,
Spaltenschalterfreigabe und Bitleitungsvorladungsfreigabe) werden
durch die lokalen Signale RAS# [w], SEN# [w], CAS [w] und PRC# [w]
gesteuert, die vom Schreibpuffer-Controller 1205 erzeugt
werden. Diese lokalen Signale funktionieren auf eine ähnliche
Weise wie die lokalen Signale RAS# [n], SEN# [n], CAS# [n] und PRC#
[n]. Die Indexierung [w] bedeutet, dass das Signal mit dem Schreibpuffer 310 assoziiert
ist.
-
Die Bustreiberschaitung 1202 funktioniert
als Reaktion auf das Schreibpuffer-Lesefreigabesignal (WBrd) und das Schreibpuffer-Schreibfreigabesignal (WBwr),
um den Spaltenmultiplexer 1201 entweder mit dem Dateneingangsbus
Di [127:0] oder dem Schreibpufferausgangsbus WBo [127:0] zu koppeln. Ein
Lesezugriff auf den Schreibpuffer
310 wird durchgeführt, wenn
das Schreibpuffer-Lesefreigabesignal (WBrd) aufgedrückt wird.
Während
eines Lesezugriffs auf den Schreibpuffer 310 wird der Spaltenmultiplexer 1201 mit
dem Schreibpufferausgangsbus WBo [127:0] gekoppelt. Ein Schreibzugriff
auf den Schreibpuffer 310 wird durchgeführt, wenn das Schreibpuffer-Schreibfreigabesignal
(WBwr) aufgedrückt
wird. Während
eines Schreibzugriffs auf den Schreibpuffer 310 wird der
Spaltenmultiplexer 1201 mit dem Dateneingangsbus Di [127:0]
gekoppelt.
-
Der Schreibpuffer-Controller 1205 arbeitet wie
folgt. Das NOR-Gate 1213 drückt ein logisch tiefes Zugriffsfreigabesignal
Acc# [w] auf, wenn eines der Signale WBrd und WBwr hoch aufgedrückt wird. Wenn
das Signal Acc# [w] tief aufgedrückt
wird, dann bewirkt ein logisch tiefes globales Signal CAS#, dass das
NOR-Gate 1214 ein logisch hohes Signal CAS [w] aufdrückt. Ebenso
sendet, wenn das Signal Acc# [w] tief aufgedrückt wird, das AND-Gate 1216 ein
logisch tiefes Signal zu den OR-Gates 1217– 1219,
so dass die globalen Signale RAS#, SEN# und PRC# jeweils als lokale
Signale RAS# [w], SEN# [w], und PRC# [w] geleitet werden. Die Folge
ist, dass eine Zugriffoperation im Schreibpuffer 310 durchgeführt wird.
-
Wenn keines der Signale WBrd oder
WBwr hoch aufgedrückt
wird, dann wird das Signal Acc# [w] hoch weggenommen, was bedeutet,
dass nicht auf den Schreibpuffer 310 zugegriffen wird.
Unter diesen Bedingungen werden die Signale RAS# [w], CAS [w], SEN#
[w] und PRC# [w] weggenommen, so dass der Zugriff auf den Schreibpuffer 310 gesperrt
wird.
-
Wenn der Schreibpuffer 310 mit
DRAM-Zellen aufgebaut ist, dann werden ein D-Register 1211 und R-S-Register 1212 vorgesehen,
um Schreibpufferauffrischvorgänge
zu aktivieren. Diese Elemente sind in gestrichelten Linien dargestellt,
da diese Elemente nur dann benötigt
werden, wenn ein Schreibpufferauffrischvorgang erforderlich ist.
Das D-Register 1211 ist
so geschaltet, dass es das Eingangsauffrischanforderungssignal REQI
[w] vom Speicherblock 1127 empfängt. Die ansteigende Flanke
des Clk-Signals rastet dieses Eingangsauffrischsignal, so dass ein
Ausgangsauffrischanforderungssignal REQO [w] erzeugt wird (das an
den Lesepuffer 311 angelegt wird).
-
Das Eingangsauffrischanforderungssignal REQI
[w] wird auch an den Set-Eingangsanschluss des
R-S-Registers 1212 angelegt. Wenn das REQI [w] Signal an
der ansteigenden Flanke des Clk-Signals hoch aufgedrückt wird,
dann wird das R-S-Register 1212 gesetzt, so dass ein logisch
hohes Schreibpufferauffrischung-anhängig-Signal REFP [w] angelegt
wird. Das logisch hohe Signal REFP [w] bedeutet, dass eine Auffrischung
im Schreibpuffer 310 anhängig ist. Das Signal REFP [w]
bleibt so lange hoch, bis es durch ein logisch hohes lokales Auffrischsignal
REF [w] zurückgesetzt
wird, was bedeutet, dass die anhängige
Auffrischung durchgeführt wurde.
-
Wenn das Signal REFP [w] hoch aufgedrückt wird,
dann kann ein anhängiger
Auffrischvorgang innerhalb des Schreibpuffers 310 durchgeführt werden.
Wenn das Signal Acc# [w] hoch weggenommen und das REFP [w] Signal
hoch aufgedrückt
wird, dann legt das AND-Gate 1216 ein logisch hohes Signal
REF [w] an. Als Reaktion darauf sendet das AND-Gate 1216 ein
logisch tiefes Signal zu den OR-Gates 1217–1219,
so dass die globalen Signale RAS#, SEN# und PRC# jeweils als lokale
Signale RAS# [w], SEN# [w] und PRC# [w] geleitet werden. Das logisch
hohe Signal Acc# [w] verhindert, dass das Signal CAS [w] hoch aufgedrückt wird.
Infolgedessen erfolgt ein Auffrischvorgang im Schreibpuffer 310.
Man beachte, dass das logisch hohe Signal REF [w] das R-S-Register 1212 an
der nächsten
ansteigenden Flanke des Clk-Signals zurücksetzt.
-
Wenn das Signal Acc# [w] hoch weggenommen
wird und keine Auffrischung anhängig
ist (d. h. das Signal REFP [w] ist tief), dann sendet das AND-Gate 1216 ein
logisch hohes Signal zu den OR-Gates 1217–1219.
Unter diesen Bedingungen werden alle lokalen Signale RAS# [w], SEN#
[w] und PRC# [w] hoch weggenommen, und das Signal CAS [w] wird tief
weggenommen, so dass ein Zugriff auf den Schreibpuffer 310 verhindert
wird.
-
Organisation des Lesepuffers
311
-
13 ist
ein Blockdiagramm, das den Lesepuffer 311 illustriert.
Da der Lesepuffer 311 dem Schreibpuffer 310 ähnlich ist
(12), erhielten gleiche
Elemente in 12 und 13 gleiche Bezugsziffern.
Somit beinhaltet der Lesepuffer 311 die Speicherarray 2000,
Wortleitungstreiber 2001, Leseverstärker 2002, Reihenadressdecoder 2003 und
Spaltenmultiplexer 1201, Bustreiberschaltung 1202,
Spaltenadressdecoder 1203, Reihenadressmultiplexer 1204 und
Lesepuffer-Controller 1305. Der Lesepuffer-Controller 1305 beinhaltet
D-Register 1211, R-S-Register 1212, NOR-Gates 1213–1214, AND-Gates 1215–1216 und
die OR-Gates 1217–1219.
-
Der Lesepuffer 311 arbeitet ähnlich wie
der Schreibpuffer 310, aber mit Signalen, die für den Lesepuffer 311 spezifisch
sind. Somit funktioniert der Bustreiber 1202 des Lesepuffers 311 als
Reaktion auf das Lesepuffer-Lesefreigabesignal RBrd und das Lesepuffer-Schreibfreigabesignal
RBwr. Ebenso ist der Bustreiber 1202 des Lesepuffers 311
mit dem Lesepuffereingangsbus RBI [127:0] und dem Lesepufferausgangsbus
RBO [127:0] gekoppelt. Darüber
hinaus ist das D-Register 1211 des Lesepuffers 311 so geschaltet,
dass es das Signal REQO [w] als Eingangsauffrischanforderungssignal
REQI [r] erhält. Die
Indexierung "[r]" identifiziert die
verschiedenen Signale als zum Lesepuffer zugehörig.
-
Lesezugriff-Timing
-
14 ist
ein Wellenformdiagramm, das das Timing der Steuersignale während der
drei verschiedenen Speicherlesezugriffe illustriert. Der erste Lesezugriff,
mit der externen Adresse Aa, illustriert den Fall eines Lesepuffer-Miss
und eines Schreibpuffer-Miss, wenn keine Auffrischung anhängig ist.
Der zweite Lesezugriff, mit der externen Adresse Ab, illustriert
den Fall eines Lesepuffer-Hit. Der dritte Lesezugriff, mit der externen
Adresse Ac, illustriert den Fall eines Lesepuffer-Miss und eines
Schreibpuffer-Hit.
-
Im ersten Lesezugriff wird das externe
Lesefreigabesignal Ren hochaufgedrückt. Der logisch hohe Zustand
des Ren-Signals wird erfasst und im D-Register 721 (7) an der ansteigenden Flanke des
Taktzyklus T1 gerastet. Die externe Zugriffsadresse Aa [13:0] wird
im Adressregister 304 (5) an
der ansteigenden Flanke des Taktzyklus T1 gerastet. Die Bankadresse
Aa [13:7] (d. h. EBA [6:0]) wird zum Bankadressdecoder 305 (5) sowie zu den Komparatoren 741–742 und
den Lese- und Schreibpuffer-Tag-Registern 762 und 772 im
Lese-Schreib-Tag-Controller 602 (7) geleitet.
-
Der Bankadressdecoder 305 aktiviert
das Bankzugriffssignal BA [a], indem er das entsprechende externe
Bankauswahlsignal EBS [a] in den H-Zustand bringt, wobei 'a' die Bank ist, die der Adresse Aa entspricht.
Innerhalb des Lese-Schreib-Tag-Controllers 602 vergleicht
der Komparator 741 die Bankadresse Aa [13:7] mit dem im
Lese-Cache-Speicher 762 gespeicherten Lesepuffer-Tag. Da
kein Hit vorliegt, erzeugt der Komparator 741 ein logisch
tiefes RBBHit-Signal, was zu einem logisch tiefen RBHit-Signal führt. Ebenso
vergleicht der Komparator 742 die Bankadresse Aa [13:7]
mit dem im Schreib-Cache-Speicher 772 gespeicherten
Schreibpuffer-Tag. Da kein Hit vorliegt, erzeugt der Komparator 742 ein logisch
tiefes WBBHit-Signal.
-
Das Lesepuffer-Schreibfreigabesignal
RBwr wird als Reaktion auf den tiefen Zustand des RBHit-Signals
und den hohen Zustand des REN-Signals hoch aufgedrückt (siehe
Wechselrichter 801, AND-Gate 813 und OR-Gate 821 in 8). Das Speicher-Lesefreigabesignal
Mrd 1 wird auch als Reaktion auf RBHit und REN hoch aufgedrückt (siehe AND-Gates 901–902 und
OR-Gate 911 in 9).
-
Der Speichersequencer 303 erzeugt
die globalen Speicher-Timing-Signale RAS#, SEN#, CAS# und PRC# als
Reaktion auf die ansteigende Flanke des Clk-Signals. Im adressierten
Speicherblock [a] bewirken die logisch hohen Signale BA [a] und
Mrd1 ein tiefes Aufdrücken
des lokalen Zugriffsfreigabesignals ACC# [a] (siehe OR-Gate 2102 und
NAND-Gate 2117 in 11).
Der tiefe Zustand des Signals ACC# [a] bewirkt, dass das lokale
Auffrischsignal REF [a] einen logisch tiefen Wert hat (siehe AND-Gate 2113 in 11). Die logisch tiefen
Signale ACC# [a] und REF [a] ermöglichen
es, dass die Speicherbank-Timing-Steuersignale RAS# [a], SEN# [a],
CAS 1[a] und PRC# [a] durch die entsprechenden globalen Signale
RAS#, SEN#, CAS# und PRC# aktiviert werden.
-
Durch die Aktivierung des Signals
RAS# [a] werden der Reihenadressdecoder 2003 (10) und nachfolgend die
Wortleitung aktiviert, die durch die Reihenadresse Aa [6:2] bezeichnet
wird (d. h. ERC [6:2]), so dass in der bezeichneten Reihe der Speicherarray
gespeicherte Daten auf die Bitleitungen geladen werden. Durch eine
Aktivierung des Signals SEN# [a] werden die Daten in der Bitleitung
in den Leseverstärkern 2002 gerastet.
Die Aktivierung des Signals CAS 1[a] aktiviert den Spaltenadressdecoder 2005,
dessen Ausgang das durch die Spaltenadresse in Aa [1:0] (d. h. ERC
[1:0]) zur Ausgabe zum Lese-Schreib-Port 313 bezeichnete
128-Bit-Wort wählt.
Die Daten Da werden dann vom Lese-Schreib-Port 313 zum Lesepuffer 310 und
durch den Ausgangsmultiplexer 309 zum Datenausgangsbus
Do [127:0] geleitet.
-
Da der erste Lesezugriff sowohl den
Schreibpuffer 310 als auch den Lesepuffer 311 verpasst,
gehen sowohl das WBHit-Signal als auch das RBHit-Signal in den L-Zustand.
Als Reaktion darauf leitet der Ausgangsmultiplexer 314 die
Daten auf dem Lese-Schreib-Port-Ausgangsbus
RWPO [127:0] zum Lesepuffer 311. Im Lesepuffer 311 bewirkt
der hohe Zustand des Lesepuffer-Schreibfreigabesignals RBwr, dass
die Daten am Ende des Taktzyklus T1 auf die durch die Adresse Aa
[6:0] (d. h. ERC [6:0] ) bezeichnete Stelle geschrieben werden.
Im Lese-Schreib-Puffer-Tag-Controller 602 (7) bewirkt der hohe Zustand des RBwr-Signals,
dass die Bankadresse Aa [6:0] (d. h. EBA [6:0]) auf den Lesepuffer-Tag-Speicher 762 geschrieben
werden. Der hohe Zustand des RBwr-Signals und der tiefe Zustand
des RBBHit-Signals bewirken, dass alle Gültig-Bits, mit Ausnahme des
durch die Adresse in Aa [6:0] bezeichneten, zurückgesetzt werden. Das Gültig-Bit
in Verbindung mit der Adresse Aa [6:0] wird auf einen Wert von logisch '1' gesetzt.
-
Der zweite Lesezugriff auf die Adresse
Ab [13:1] wird an der ansteigenden Flanke des Clk-Signals am Anfang
von Zyklus T2 erfasst. Der hohe Zustand des externen Ren-Signals wird vom
D-Register 721 (7)
gerastet, so dass das lokale Lesefreigabesignal REN in den H-Zustand
gebracht wird. Der zweite Lesezugriff trifft auf den Lesepuffer.
Somit erkennt der Lesekomparator 741 am Anfang des Taktzyklus
T2 eine Übereinstimmung
zwischen der Adresse Ab [6:0] (d. h. EBA [6:0]) und dem im Lese-Cache-Tag-Speicher 762 gespeicherten
Lese-Cache-Tag (d. h. Aa [6:0]). Als Reaktion darauf bringt der
Komparator 741 das RBBHit-Signal in den H-Zustand. Die
Adresse Ab [6:0] bewirkt auch, dass der 128-zu-1-Multiplexer 751 das
im Lesen-gültig-Bit-Speicher 761 gespeicherte
Gültig-Bit
mit logisch '1' als RBValid-Signal
leitet. Infolgedessen wird das Lesepuffer-Hit-Signal RBHit in den
H-Zustand gebracht (siehe AND-Gate 704).
-
Im Lese-Schreib-Datenpuffer-Controller 601 (8) aktivieren die logisch
hohen Signale REN und RBHit das Lesepuffer-Lesefreigabesignal RBrd, so
dass ein Lesevorgang im Lesepuffer 311 erfolgt. Die durch
die Adresse Ab [6:0] bezeichneten Daten Db werden aus dem Lesepuffer 311 und
auf den Lesepufferausgangsbus RBO [127:0] gelesen. Der hohe Zustand
des RBHit-Signals und der tiefe Zustand der Signale WBHit und REFP
[r] bewirkt, dass der Ausgangsmultiplexer 309 die Daten
auf dem Ausgangsbus RBO [127:0] auf den Ausgangsdatenbus Do [127:0]
leitet. Im Speicher-Lese-Schreib-Controller 603 wird das
Speicherbanklesesignal Mrd1 aufgrund des hohen Zustands des RBHit-Signals
in den L-Zustand gebracht. Infolgedessen führen die Speicherblöcke 1000–1127 keine
Vorgänge
für den zweiten
Lesezugriff durch. Wenn Auffrischvorgänge während des Taktzyklus T2 in
einem der Speicherblöcke 1000–1127 anhängig sind,
dann werden diese Auffrischvorgänge
während
des Taktzyklus T2 durchgeführt.
Wenn der zweite Lesezugriff auf den Schreibpuffer 310 zusätzlich zum
Lesepuffer 311 trifft (und keine Auffrischung im Lesepuffer 311 anhängig ist),
dann wird nur ein Lesevorgang im Lesepuffer 311 durchgeführt, und
der Multiplexer 309 wählt
Daten aus dem Lesepuffer 311 zur Ausgabe auf den Ausgabedatenbus
Do [127:0].
-
Der dritte Lesezugriff auf die Adresse
Ac [13:0] wird an der ansteigenden Flanke des Clk-Signals zu Beginn
des Zyklus T3 erfasst. Der hohe Zustand des externen Ren-Signals wird vom
D-Register 721 (7)
gerastet, so dass das lokale Lesefreigabesignal REN in den H-Zustand
gebracht wird. Der dritte Lesezugriff verpasst den Lesepuffer 311 und trifft
auf den Schreibpuffer 310. Zu Beginn des Taktzyklus 73 wird
der Lesezugriff erfasst, und die externe Zugriffsadresse Ac [13:0]
des dritten Lesezugriffs wird im Adressregister 304 (5) gerastet. In dem beschriebenen
Beispiel stimmt die externe Bankadresse Ac [13:7] mit dem im Lese-Cache-Speicher 721 gespeicherten
Lese-Cache-Tag und
dem im Schreib-Cache-Speicher 772 (7) gespeicherten Schreib-Cache-Tag überein.
Infolgedessen bringen die Komparatoren 741 und 742 die
Signale RBBHit und WBBHit auf logisch hohe Werte. In dem beschriebenen
Beispiel zeigt die Adresse Ac [3:0] auf ein zurückgesetztes (d. h. logisch
tiefes) Gültig-Bit
im Lesen-gültig-Speicher
761. Die Adresse Ac [3:0] zeigt jedoch auf ein gesetztes (d. h.
logisch hohes) Gültig-Bit
im Schreiben-gültig-Speicher
771. Demzufolge wird der Ausgang des Multiplexers 751,
RBValid, tief angesteuert, und der Ausgang des Multiplexers 752,
WBValid, wird hoch angesteuert. Der tiefe Zustand des RBValid-Signals
bewirkt, dass das RBHit-Signal in den L-Zustand geht, was einen
Lesepuffer-Miss anzeigt. Die hohen Zustände der Signale WBValid und
WBBHit bewirken, dass das WBHit-Signal in den H-Zustand geht, was
einen Schreibpuffer-Hit anzeigt. Der tiefe Zustand des RBHit-Signals und
der hohe Zustand des REN-Signals aktivieren das Lesepuffer-Schreibfreigabesignal
RBwr (siehe AND-Gate 813 und OR-Gate 821 im Lese-Schreib-Puffer-Controller 601 in 8). Ebenso aktivieren der
tiefe Zustand des RBHit-Signals und der hohe Zustand der Signale
WBHit und REN das Schreibpuffer-Lesefreigabesignal WBrd (siehe AND-Gate 811 und
OR-Gate 824 des Lese-Schreib-Puffer-Controllers 601 in 8). Die Aktivierung des
WBrd-Signals bewirkt die Durchführung eines
Lesevorgangs im Schreibpuffer 310. Daten, Dc, durch die
Zugriffsadresse Ac [6:0] bezeichnet, werden aus dem Schreibpuffer 310 auf
den Schreibpufferausgangsbus WBO [127:0] gelesen. Die Aktivierung
des WBHit-Signals und der tiefe Zustand des RBHit-Signals bewirken,
dass der Multiplexer 309 Daten vom Bus WBO [127:0] zum
Datenausgangsbus Do [127:0] leitet. Der hohe Zustand des WBHit-Signals bewirkt auch,
dass der Multiplexer 314 Daten vom Bus WBO [127:0] auf
den Lesepuffer-Eingangsdatenbus RBI [127:0] sendet. Der hohe Zustand
des RBwr-Signals bewirkt, dass die Daten auf dem Lesepuffer-Eingangsdatenbus
RBI [127:0] auf den durch die Adresse Ac [6:0] (13) bezeichneten Entry des Lesepuffers
311 geschrieben werden. Der hohe Zustand des RBBHit-Signals und
der hohe Zustand des RBwr-Signals bewirken, dass das Gültig-Bit
im Lesen-gültig-Speicher 761 in
Verbindung mit der Zugriffsadresse Ac [6:0] gesetzt wird.
-
Die durch die externe Adresse Ac
[13:0] adressierte Speicherbank wird als Speicherbank [c] bezeichnet.
Man nehme an, dass eine Auffrischanforderung in der Speicherbank
[c] mit der Aktivierung des Signals REQI [c] während des Clk-Zyklus T3 erfasst
wird. Der hohe Zustand des Signals REQI [c] setzt das R-S-Register 2122 auf
der ansteigenden Flanke des Clk-Signals, so dass ein logisch hohes
internes Auffrischung-anhängig-Signal
REFP [c] erzeugt wird (11).
Der hohe Zustand des Auffrischung- anhängig-Signals
REFP [c], der hohe Zustand des Bankzugriffssignals BA [c] und die
logisch tiefen Zustände
der Signale Mrd1, Mwr1 und Mwr2 bewirken, dass das interne Auffrischsignal
REF [c] in den H-Zustand geht (siehe 9 und 11). Der hohe Zustand des
Auffrischsignals REF [c] ermöglicht
es, dass die Speicherarray-Timing-Signale RAS# [c], SEN# [c] und
PRC# [c] durch die vom Speichersequencer 303 (5) erzeugten entsprechenden
globalen Timing-Signale RAS#, SEN# und PRC# ausgelöst werden.
Somit wird ein Auffrischzyklus von der Speicherbank [c] durchgeführt. Man
beachte, dass die Spaltenschaltsteuersignale CAS 1[c] und CAS2 [c]
während
eines Auffrischzyklus nicht aktiviert werden, da nicht auf Daten
in den Leseverstärkern
zugegriffen wird. Die logisch tiefen Signale Mrd1, Mwr1 und Mwr2
verhindern eine Aktivierung der Signale CAS1 [c] und CAS2 [c] (siehe 11, AND-Gates 2111 und 2112).
Wenn ein Lesezugriff auf den Schreibpuffer 310 oder den
Lesepuffer 311 trifft, dann werden Daten aus dem Schreibpuffer 310 oder
dem Lesepuffer 311 gelesen, so dass die Bänke der Speicherblöcke 1000–1127 während dieser
Zeit Auffrischvorgänge
durchführen
können.
-
Schreibzugriff-Timing
-
15 ist
ein Wellenformdiagramm, das das Timing der Steuersignale bei vier
verschiedenen Speicherschreibzugriffen illustriert. Der erste Schreibzugriff,
mit der externen Adresse Aa, illustriert den Fall eines Schreibpuffer-Hits.
Der zweite Schreibzugriff, mit der externen Adresse Ab, illustriert den
Fall eines Schreibpuffer-Miss. Der dritte Schreibzugriff, mit der
externen Adresse Ac, illustriert den Fall eines Schreibpufferrückzugs in
Anwesenheit eines externen Zugriffs. Der vierte Schreibzugriff illustriert
die Beendigung des Schreibpufferrückzugs, wenn ein Schreibpuffer-Hit
während
des Vorgangs des Schreibpufferrückzugs
auftritt.
-
Der erste Schreibzugriff zu Adresse
Aa [13:0] wird an der ansteigenden Flanke des Clk-Signals zu Beginn
des Zyklus T1 erkannt. Als Reaktion darauf wird die Zugriffsadresse
Aa [13:0] im Adressregister 304 gerastet. Der hohe Zustand
des externen Wen-Signals wird vom D-Register 722 (7) gerastet, so dass das
lokale Schreibfreigabesignal WEN in den H-Zustand gebracht wird.
Die Bankadresse Aa [13:7] (d. h. EBA [6:0]) wird zum Bankadressdecoder 305 (5) sowie zu den Komparatoren 741–742 und
zu den Lese- und Schreibpuffer-Tag-Registern 762 und 772 im
Lese-Schreib-Tag-Controller 602 (7) geleitet.
-
Der Bankadressdecoder 305 aktiviert
das Bankzugriffssignal BA [a] durch hohes Ansteuern des entsprechenden
externen Bankauswahlsignals EBS [a], wobei 'a' die
der Adresse Aa entsprechende Bank ist. Im Lese-Schreib-Tag-Controller 602 vergleicht der
Komparator 742 die Bankadresse Aa [13:7] mit dem im Lese-Cache-Tag-Speicher 772 gespeicherten
Schreibpuffer-Tag. Da ein Hit vorliegt, erzeugt der Komparator 742 ein
logisch hohes WBBHit-Signal. Im vorliegenden Beispiel wird der durch
die Adresse Aa [6:0] bezeichnete Entry des Schreiben-gültig-Speichers 771 zurückgesetzt
(d. h. logisch tief). Die Folge ist, dass sowohl das Signal WBValid
als auch das Signal WBHit in ihrem logisch tiefen Zustand bleiben.
Der hohe Zustand des WBBHit-Signals und des WEN-Signals bewirkt, dass das Schreibpufferrückzugssignal
WBret tief bleibt (siehe AND-Gate 817, OR-Gate 823 und
R-S-Register 833 von 8).
Das logisch tiefe WBret-Signal und das logisch hohe WEN-Signal steuern
das WBwr-Signal in einen logisch hohen Zustand an (siehe AND-Gate 815 von 8). Der tiefe Zustand von
WBret bewirkt, dass das Mwr1 Signal tief bleibt, so dass Speicherbankzugriffe
unterdrückt
werden (siehe AND-Gates 904– 905 und OR-Gate 912 des
Speicher-Lese-Schreib-Controllers 603 von 9).
-
Im Schreibpuffer 310 steuert
der hohe Zustand des WBwr-Signals das Signal Acc# [w] tief an, wodurch
bewirkt wird, dass die Daten Da auf dem Eingangsdatenbus Di [127:0]
auf den durch die Adresse Aa [6:0] bezeichneten Entry geschrieben werden
(d. h. ERC [6:0]) (siehe 12).
Im Lese-Schreib-Puffer-Tag-Controller 602 (8) bewirkt der hohe Zustand des WBwr-Signals,
dass die Bankadresse Aa [6:0] auf den Schreibpuffer-Tag-Speicher 772 geschrieben
wird. Da die Schreibpuffer-Tag- und Bankadresse Aa [6:0] gleich
sind, führt
dieser Vorgang zu keiner Änderung
des Schreibpuffer-Bankadress-Tags. Die Aktivierung des WBwr-Signals
aktiviert auch das WBVupdate-Signal, was dazu führt, dass das durch die externe
Reihen-Spalten-Adresse ERC [6:0] (d. h. Aa [6:0] ) bezeichnete Gültig-Bit
im Schreiben-gültig-Speicher 771 gesetzt
wird.
-
Der zweite Schreibzugriff auf die
Adresse Ab [13:0] wird an der ansteigenden Flanke des Clk-Signals
zu Beginn von Zyklus T2 erfasst. Als Reaktion darauf wird die Zugriffsadresse
Ab [13:0] im Adressregister 304 gerastet. Der hohe Zustand
des externen Wen-Signals wird vom D-Register 622 gerastet (7), so dass das lokale Schreibfreigabesignal WEN
hoch angesteuert wird. Die Bankadresse Ab [13:7] (d. h. EBA [6:0]
wird zum Bankadressdecoder 305 (5) sowie zu den Komparatoren 741–742 und
zu den Lese- und Schreibpuffer-Tab Registern 762 und 772 im
Lese-Schreib-Tag-Controller 602 (7) geleitet.
-
Der Komparator 742 vergleicht
die Bankadresse Ab [13:7] mit dem im Schreibpuffer-Tag-Speicher 772 gespeicherten
Schreibpuffer-Tag. Es wird eine Nichtübereinstimmung erfasst, wodurch
bewirkt wird, dass die Signale WBBHit und WBHit im L-Zustand weggenommen
werden. Das WBHit-Signal ist selbst dann tief, wenn das durch die
Reihen- und Spaltenadresse Ab [6:0] bezeichnete Gültig-Bit
gesetzt ist (d. h. WBValid ist hoch). Da wenigstens ein Gültig-Bit
im Schreiben-gültig-Speicher
771 hoch gesetzt ist, wird der Ausgang des OR-Gates 822 (8) hoch angesteuert. Dieses
hohe Signal, zusammen mit dem hohen Zustand des WEN-Signals und
dem tiefen Zustand des WBBHit-Signals, bewirkt, dass das AND-Gate 818 ein
logisch hohes Signal an den Set-Anschluss
von R-S-Register 833 anlegt. Als Reaktion darauf erzeugt
das R-S-Register 833 ein logisch hohes WBret-Signal, so
dass ein Schreibpufferrückzug
gestartet wird.
-
Der hohe Zustand des WBret-Signals
deaktiviert das WBwr-Signal (siehe AND-Gate 815 von 8). Der hohe Zustand des WBret-Signals,
zusammen mit dem logisch hohen WEN-Signal, aktiviert das Mwr1-Signal
(siehe AND-Gate 904 und OR-Gate 912 von 9). In der Speicherbank
[b], der designierten Speicherbank des zweiten Schreibzugriffs,
bewirkt der hohe Zustand des Mwr1-Signals, dass das Zugriffsfreigabesignal
Acc# [b] in den L-Zustand geht (siehe OR-Gate 2102 und
NAND-Gate 2117 von 11). Während dieser Zeit wird eine
Auffrischanforderung empfangen und das Auffrischanforderungssignal
REQI [b] wird hoch aufgedrückt.
Als Reaktion darauf erzeugt das R-S-Register 2122 ein logisch
hohes Auffrischung-anhängig-Signal
REFP [b]. Der tiefe Zustand des Signals Acc# [b] hindert jedoch
das Auffrischungsfreigabesignal REF [b] daran, in den H-Zustand
zu gehen. Der tiefe Zustand des Signals Acc# [b] erlaubt die Aktivierung
von RAS# [b], SEN# [b] und PRC# [b] durch die entsprechenden Eingangssignale
RAS#, SEN# und PRC# (siehe NOR-Gates 2131–2136 von 11). Der hohe Zustand des
Mwr1 ermöglicht
auch eine Aktivierung des Spaltenmultiplexer-Freigabesignals CAS1 [b) durch das globale
Timing-Signal CAS# (siehe AND-Gate 2112 von 11). Die sequentielle Aktivierung
von RAS# [b), SEN# [b], CASI [b] und PRC# [b] führt einen Speicherschreibzyklus
in der Speicherbank [b] aus, was dazu führt, dass die Eingangsdaten
Db in Di [127:0] durch den Speicher-Lese-Schreib-Port 313 auf
die Speicherbank [b] geschrieben werden.
-
Der Schreibpufferrückzug beginnt
mit Entry 0, wobei die Entry-Adresse WBCA [6:0] vom 7-Bit-Zähler 831 bereitgestellt
wird (8). Die Entry-Adresse
WBCA [6:0] wird auch zu den Speicherblöcken 1000–1127 gesendet,
so dass die richtige Reihen- und Spaltenadresse zu der vom Schreibpuffer-Tag
bezeichneten Speicherbank bereitgestellt wird. Unter der Annahme,
dass das Gültig-Bit
in Verbindung mit Entry 0 gesetzt ist, ist dann das Gültig-Bit-Signal
VB im H-Zustand (siehe Multiplexer 832 von 8). Die logisch hohen Signale WBret und
VB bewirken, dass das Mwr2-Signal (9)
und das WBrd-Signal (8)
hoch aufgedrückt
werden. Der hohe Zustand des WBrd-Signals bewirkt wiederum, dass
ein Lesezyklus im Schreibpuffer 310 dwchgeführt wird.
Demzufolge werden Daten von Entry 0 des Schreibpuffers 310 auf
den Datenbus WBO [127:0] ausgelesen.
-
Angenommen, die Bankadresse im Schreibpuffer-Tag 772 ist
[m], dann wird das BA [m] Signal im Speicherblock [m] hoch angesteuert
und das Signal Acc# [m] wird tief angesteuert, so dass eine Aktivierung
der Signale RAS# [m], SEN# [m] und PRC# [m] ermöglicht wird. Der hohe Zustand
des Mwr2-Signals ermöglicht
auch die Aktivierung des Spaltenzugriffssignals CAS2 [m] als Reaktion
auf das globale Spaltenzugriffssignal CAS#. Die Speicher-Timing-Signale RAS#
[m], SEN# [m], CAS2 [m] und PRC# [m] werden nachfolgend aktiviert,
wodurch bewirkt wird, dass Daten auf dem Bus WBO [127:0] auf die Speicherbank
[m] an der durch die Entry-Adresse WBCA [6:0] bezeichneten Reihe
und Spalte geschrieben werden. Die logisch hohen Signale WBrd und
WBret setzen das Gültig-Bit in dem durch
die Entry-Adresse WBCA [6:0] bezeichneten Schreiben-gültig-Speicher 771 zurück (siehe
OR-Gate 713 und Multiplexer 723 von 7).
-
Der dritte Schreibzugriff auf Adresse
Ac [13:0] wird an der ansteigenden Flanke des Clk-Signals zu Beginn
von Zyklus T3 erfasst. Als Reaktion darauf wird die Zugriffsadresse
Ac [13:0] im Adressregister 304 gerastet. Der hohe Zustand
des externen Wen-Signals wird vom D-Register 722 (7) gerastet, wodurch das
lokale Schreibfreigabesignal WEN hoch angesteuert wird. Die Bankadresse
Ac [13:7] (d. h. EBA [6:0]) wird zum Bankadressdecoder 305 (5) sowie zu den Komparatoren 741–742 und
zu den Lese- und Schreibpuffer-Tag-Registern 762 und 772 im
Lese-Schreib-Tag-Controller 602 (7) geleitet.
-
Der Komparator 742 vergleicht
die Bankadresse Ac [13:7] mit dem im Schreibpuffer-Tag-Speicher 772 gespeicherten
Schreibpuffer-Tag. Es wird eine Nichtübereinstimmung erfasst, so
dass die Signale WBBHit und WBHit tief bleiben. Der tiefe Zustand
des WBBHit-Signals bewirkt, dass der Ausgang des R-S-Registers 833 (d.
h. das WBret-Signal) hoch bleibt. Infolgedessen wird der im vorherigen Taktzyklus
T2 begonnene Datenrückzugsprozess fortgesetzt.
Der hohe Zustand des WBret-Signals bewirkt, dass das Mwr1-Signal
hoch bleibt (9), so dass
ein Speicherschreibzyklus in der Speicherbank [c] ermöglicht wird,
bei der es sich um die designierte Bank der Schreibadresse Ac [13:0]
handelt. In der Speicherbank [c] führen die logisch hohen Signale BA
[c] und Mwr1 zu einem logisch tiefen Signal Acc# [c], so dass die
Timing-Steuersignale
RAS# [c], SEN# [c] und PRC# [c) befähigt werden, ihren globalen
Steuersignal-Gegenstücken
RAS#, SEN# und PRC# zu folgen. Der hohe Zustand des Mwr1-Signals
erlaubt auch eine Aktivierung des Spaltenmultiplexer-Steuersignals
CAS1 [c] als Reaktion auf das Signal CAS#. Die Aktivierung der Speicher-Timing-Signale
bewirkt, dass die externen Daten Dc vom Di [127:0] Bus auf die durch
die Adresse Ac [6:0] in der Speicherbank [c] durch den Speicher-Lese-Schreib-Port 313 bezeichnete
Stelle geschrieben werden. Zu Beginn von Zyklus T3 erhöht der 7-Bit-Zähler 831 in 8 den Wert des Entry von
0 auf 1, wodurch die Reihen- und Spaltenadresse für den Schreibpuffer 310 und
die Speicherbank [m] etabliert wird (das Ziel des Schreibpufferrückzugs).
Angenommen, das Gültig-Bit
des Entry 1 ist ebenfalls gesetzt, dann hat das vom Multiplexer 832 geleitete VB-Signal
einen logisch hohen Wert. Die logisch hohen Signale WBret und VB
bewirken, dass die Signale WBrd und Mwr2 hoch bleiben, wodurch ein
weiterer Lesezyklus im Schreibpuffer 310 und ein weiterer Schreibzyklus
in der Speicherbank [m] begonnen werden. Die Operationen-Timing-Signale
RAS# [m], SEN# [m] und PRC# [m] in der Speicherbank [m] und die
Operationen-Timing-Signale RAS# [w], SEN# [w] und PRC# [w] im Schreibpuffer 310 folgen
eng den in 15 gezeigten
globalen Timing-Signalen RAS#, SEN# und PRC#. Am Ende von Zyklus
T3 werden Daten WBD1 von Entry 1 des Schreibpuffers 310 auf den
Bus WBO [127:0] ausgelesen und auf dieselbe Stelle in der Speicherbank
[m] durch den Nur-Schreib-Port 312 geschrieben. Da die
Speicherbank [b] in dieser Periode nicht am Zugriff beteiligt ist und
auch nicht am Rückzugsprozess
beteiligt ist, ist das Bankzugriffsfreigabesignal BA [b] jetzt tief.
Der tiefe Zustand des Signals BA [b] und der hohe Zustand des Signals
REFP [b] bewirken, dass das Signal REF [b] in den H-Zustand geht
(11), so dass die Signale
RAS# [b], SEN# [b] und PRC# [b] durch die globalen Signale RAS#,
SEN# und PRC# aktiviert werden können.
Auf diese Weise wird ein Auffrischvorgang in der Speicherbank [b]
durchgeführt.
Da beide Signale CAS 1[b] und CAS2 [b] tief bleiben, werden die
Spaltenschalter 2011 (10)
nicht freigegeben. Das Auffrischung-anhängig-Signal REFP [b] wird am
Ende des Auffrischzyklus tief zurückgesetzt. Die logisch hohen
Signale WBrd und WBret setzen das Gültig-Bit in dem durch die Entry-Adresse WBCA
[6:0] bezeichneten Schreiben-gültig-Speicher 771 zurück (siehe
OR-Gate 713 und Multiplexer 723 von 7).
-
Der vierte Schreibzugriff auf Adresse
Ad [13:0] wird an der ansteigenden Flanke des Clk-Signals zu Beginn
von Zyklus T4 erfasst. Als Reaktion darauf wird die Zugriffsadresse
Ad [13:0] im Adressregister 304 gerastet. Der hohe Zustand
des externen Wen-Signals wird vom D-Register 722 (7) gerastet, so dass das
lokale Schreibfreigabesignal WEN hoch angesteuert wird. Die Bankadresse
Ad [13:7] (d. h. EBA [6:0]) wird zum Bankadressdecoder 305 (5) sowie zu den Komparatoren 741–742 und
zu den Lese- und Schreibpuffer-Tag-Registern 762 und 772 im
Lese-Schreib-Tag-Controller 602 (7) geleitet. Wie oben erwähnt, illustriert
der vierte Schreibzugriff die Beendigung des Schreibpufferrückzugs,
wenn ein Schreibpuffer-Hit während
des Vorgangs des Schreibpufferrückzugs
auftritt.
-
Die Bankadresse Ad [13:7] wird mit
dem im Schreibpuffer-Tag-Speicher 772 gespeicherten Schreibpuffer-Tag
verglichen. Es wird eine Übereinstimmung
erkannt, was zur Aktivierung des Scheibpufferbank-Hit-Signals WBBHit
führt.
Angenommen, das Gültig-Bit
des durch die Adresse Ad [6:0] bezeichneten Schreiben-gültig-Speichers 771 ist
gesetzt, dann wird das Signal WBValid hoch angesteuert. Die logisch
hohen Signale WBValid und WBBHit führen zu einem logisch hohen
Signal WBHit (siehe AND-Gate 705 von 7). Die logisch hohen Signale WBBHit
und WEN setzen das R-S-Register 833 (8) zurück, was bewirkt, dass das WBret-Signal in
den L-Zustand geht. Das logisch tiefe Signal WBret beendet den Schreibpufferrückzugsvorgang.
Das tiefe Signal WBret und das hohe WEN-Signal aktivieren das Schreibpuffer-Schreibfreigabesignal
WBwr (siehe AND-Gate 815 von 8),
so dass ein Schreibzyklus im Schreibdatenpuffer 310 freigegeben
wird. Eingangsdaten Dd werden vom Eingangsdatenbus Di [127:0] auf
den durch die Adresse Ad [6:0] bezeichneten Schreibpuffer-Entry
geschrieben. Der tiefe Zustand des WBret-Signals unterdrückt die
Aktivierung des Speicherschreibsignals Mwr1. Infolgedessen wird
kein Schreibvorgang auf die Speicherblöcke 1000–1127 durchgeführt. Das
logisch hohe WBwr-Signal drückt,
zusammen mit dem logisch tiefen Signal WBret, das WBVupdate-Signal
auf (siehe AND-Gate 703 und OR-Gate 713 in 7). Als Reaktion darauf
wird das durch die Adresse Ad [6:0] bezeichnete Gültig-Bit
im Schreiben-gültig-Speicher 771 gesetzt.
-
Schreib- und
Lesepuffer mit DRAM
-
In den Erörterungen für 14 und 15 oben wird
angenommen, dass Schreibpuffer 310 und Lesepuffer 311 aus
SRAM-Zellen bestehen. In diesem Fall erfordern der Schreibpuffer 310 und
der Lesepuffer 311 keinen Auffrischvorgang. In einer anderen Ausgestaltung
können
Schreibpuffer 310 und Lesepuffer 311 jedoch mit
DRAM-Zellen aufgebaut sein. In dieser Ausgestaltung wird die vom
Schreibpuffer 310 und vom Lesepuffer 311 belegte
Fläche
vorteilhafterweise reduziert. Da Schreibpuffer 310 und
Lesepuffer 311 genauso organisiert sind wie die Speicherblöcke 1000–1127,
können
der Schreibpuffer 310 und der Lesepuffer 311 mit
DRAM-Bänken mit
geringfügigen
Modifikationen aufgebaut sein. Diese Modifikationen wurden oben
in Verbindung mit den in 5–13 mit gestrichelten Linien
dargestellten Elementen beschrieben.
-
In dieser Ausgestaltung werden der
Schreibpuffer 310 und der Lesepuffer 311 ähnlich wie Speicherblöcke 1000–1127 aufgefrischt.
Der Auffrisch-Verkettungs-Ausgangsanschluss
REQO [1127] des Speicherblocks 1127 ist mit dem
Auffrischeingangsanschluss REQI [w] des Schreibpuffers 310 verbunden.
Der Verkettungsausgangsanschluss REQO [w] des Schreibpuffers 310 ist
mit dem Auffrischeingangsanschluss REQI [r] des Lesepuffers 311 verbunden.
Die Daisy-Chain endet am Lesepuffer 311, daher ist der
Ausgangsanschluss REQO [r] des Lesepuffers 311 nicht angeschlossen.
-
Um eine ordnungsgemäße Auffrischung
im Lesepuffer 311 zu gewährleisten, erhalten Auffrischvorgänge Vorrang
gegenüber
externen Zugriffsvorgängen.
Wenn also ein Auffrischvorgang anhängig ist, dann ignoriert der
Lesepuffer 311 alle externen Zugriffe, um den anhängigen Auffrischvorgang durchzuführen. Wenn
eine Auffrischung im Lesepuffer 311 anhängig ist, wird das Auffrischen-anhängig-Signal
REFP [r] hoch aufgedrückt.
Der Index 'r' bedeutet, dass das
Signal vom Lesepuffer 311 erzeugt wird. Das Signal REFP
[r] wird im Lese-Schreib-Puffer-Controller 601 verwendet, um die Aktivierung
des Lesepuffer-Lesefreigabesignals RBrd
und des Lesepuffer-Schreibfreigabesignals RBwr zu verhindern (8). Dies erfolgt durch Verbinden
des Signals REFP [r] mit den AND-Gates 812–814,
wie in 8 mit gestrichelten
Linien dargestellt ist. Wenn das Signal REFP [r] hoch angesteuert wird,
dann werden die Ausgänge
der AND-Gates 812–814 tief
angesteuert, wodurch bewirkt wird, dass die Signale RBrd und RBwr
in den L-Zustand gehen. Wenn der Lesepuffer 311 mit der
Durchführung
eines Auffrischvorgangs belegt ist, dann muss die bezeichnete Speicherbank
den Lesezugriff handhaben. Daher wird im Speicher-Lese-Schreib-Controller 603 das
Mrd1-Signal aktiviert, wenn die Signale REFP [r] und REN hoch aktiviert
werden. Die Erzeugung des Signals REFP [r] und das Steuer-Timing
für Vorgänge im Lesepuffer
311 sind oben beschrieben.
-
Um die Datenkohärenz im Lesepuffer 311 zu bewahren,
wenn ein Schreibzugriff auf einen Lesepuffer 311 in Kollision
mit der Lesepufferauffrischung auftritt, wird das zugehörige Gültig-Bit
im Lesen-gültig-Speicher 761 zurückgesetzt,
wodurch der Daten-Entry
im Lesepuffer 311 invalidiert wird. Dieser Invalidierungsvorgang
wird vom Lese-Schreib-Tag-Controller 602 dwchgeführt (7). Wenn die Signale REFP
[r], RBHit und WEN alle logisch hohe Werte haben, dann sendet das
AND-Gate 702 ein logisch hohes Signal zum OR-Gate 712,
was zu einem logisch hohen RBVupdate-Signal führt. Dieses logisch hohe RBVupdate-Signal
setzt das durch die Adresse in ERC [6:0] bezeichnete Gültig-Bit
zurück.
-
Um eine ordnungsgemäße Auffrischung
im Schreibpuffer 310 sicherzustellen, hat ein Auffrischvorgang
Vorrang gegenüber
allen anderen Vorgängen,
mit Ausnahme eines Lese-Hits zum Schreibpuffer 310, der
den Lesepuffer 311 verpasst, oder wenn eine Auffrischung
im Lesepuffer 311 anhängig
ist. In diesem Fall wird der Auffrischvorgang des Schreibpuffers 310 verzögert. Im
ungünstigsten
Fall kann dies in 129 aufeinander folgenden Taktzyklen
auftreten, wenn ein kontinuierlicher Strom von Zugriffen auf den
Schreibpuffer 310 trifft, alle Adressen im Schreibpuffer 310 durchläuft, und
der Lesepuffer 311 während
dieser Zeit einen Auffrischvorgang durchführt. Man beachte, dass, wenn
in der Bankadresse während
eines Stroms von Zugriffen keine Änderung erfolgt, zwei Zugriffe
auf dieselbe Stelle keine zwei Lesepuffer-Misses verursachen können, es
sei denn, dass ein Auffrischvorgang im Lesepuffer 311 während eines
der Zugriffe durchgeführt
wird. Wenn die ordnungsgemäße Auffrischperiode
länger
ist als 129 Taktzyklen, dann kann der Auffrischvorgang
im Schreibpuffer 310 innerhalb der richtigen Auffrischperiode
durchgeführt
werden. Wenn eine Auffrischung im Schreibpuffer 310 anhängig ist,
dann wird das Signal REFP [w] hoch aufgedrückt. Im Lese-Schreibpuffer-Controller 601 (8) bewirkt der hohe Zustand
des Signals REFP [w], dass das Schreibpuffer-Schreibfreigabesignal WBwr tief bleibt, wodurch
jeder Schreibzugriff auf den Schreibpuffer 310 während einer
Schreibdatenpufferauffrischung unterdrückt wird.
-
Wenn der Schreibpuffer 310 die
Auffrischung handhabt, dann muss die bezeichnete Speicherbank den
Schreibzugriff handhaben. Daher wird das Mwr1-Signal aktiviert,
wenn die Signale REFP [w] und WEN im H-Zustand sind (siehe AND-Gate 905 und
OR-Gate 912 von 9).
-
Ein weiterer Vorgang, den die Schreibpufferauffrischung
beeinflussen kann, ist der Schreibdatenrückzug. Während eines Schreibpufferrückzugs unterbricht
der Auffrischvorgang im Schreibpuffer 310 den Datenrückzug für einen
Taktzyklus. Nach dem Auffrischvorgang wird der Datenrückzug wieder
aufgenommen. Dies erfolgt mit der in den
-
8 und 9 dargestellten Logik. In 8 bewirkt der hohe Zustand
des Signals REFP [w], dass der Ausgang des AND-Gate 819 in
den L-Zustand geht, wodurch wiederum bewirkt wird, dass das WBrd-Signal
in den L-Zustand geht, wodurch der durch den Schreibdatenrückzug induzierte
Lesevorgang im Schreibpuffer 310 verhindert wird. Der durch den
Schreibpufferückzug
induzierte Speicherschreibvorgang wird verhindert, wodurch das Signal
REFP [w] invertiert und das Ergebnis an das AND-Gate 903 angelegt
wird (9). Ein hohes
Signal REFP [w] bewirkt somit, dass das Mwr2-Signal im L-Zustand bleibt. Ein
logisch hohes Signal REFP [w] steuert auch den Eingang INC des Zählers 831 in
den L-Zustand, wodurch die Inkrementierung des Zählers 831 während des
Schreibpufferrückzugs
suspendiert wird.
-
Die Erfindung wurde zwar in Verbindung
mit mehreren Ausgestaltungen beschrieben, aber es ist zu verstehen,
dass die vorliegende Erfindung nicht auf die offenbarten Ausgestaltungen
begrenzt ist, sondern dass verschiedene Modifikationen möglich sind,
die für
die Fachperson offensichtlich sein werden. So können beispielsweise die DRAM-Bänke und
der SRAM-Cache-Speicher verschiedene Größen in verschiedenen Ausgestaltungen
haben. Ebenso können
verschiedene Anzahlen von DRAM-Bänken
verwendet werden. Außerdem
können
Busse mit anderen Breiten als den beschriebenen in anderen Ausgestaltungen
verwendet werden. Darüber
hinaus kann die ordnungsgemäße Auffrischperiode
durch Einbauen eines Auffrischakkumulators in jede Speicherbank
verlängert
werden. Ferner kann eine Schreibdatenmaskierung mit geringfügigen Modifikationen
an der Schreibsteuerung in den Speicherbänken, den Lese- und Schreibdatenpuffern
und den Schreibpuffer-gültig-Bits
hinzugefügt
werden. Somit ist die Erfindung nur durch die nachfolgenden Ansprüche begrenzt.