-
Die
Erfindung betrifft nicht-flüchtige
Speicherzellen-Einrichtungen,
Programmierelemente und Verfahren zum Programmieren von Daten in
eine Mehrzahl von nicht-flüchtigen
Speicherzellen.
-
5 zeigt ein Blockdiagramm,
eine herkömmlichen
Flash-Speicherkarte 500 und
eine Informationsverarbeitungs-Anwendung 501 (welche im Folgenden
auch bezeichnet wird als Host). Die Flash-Speicherkarte 500 ist
mit dem Host 501 gekoppelt, mittels beispielsweise fünf unterschiedlichen
Arten von Leitungen oder Bussen, einer Datenleitung oder einem Datenbus 502,
einer Taktleitung 503, einer Energieversorgungs-Leitung 504,
welche die Energieversorgungsspannung VDD bereitstellt,
eine Masseleitung 505, welche ein zweites Referenz-Potential
bereitstellt, üblicherweise
das Massepotential VSS sowie eine Befehls-Leitung 506,
welche verwendet wird zum Übertragen
von Befehlen von dem Host 501 zu der Flash-Speicherkarte 500.
-
Eine
Host-Schnittstelle 507 der Flash-Speicherkarte 500 empfängt Befehle
von dem Host 501 mittels der Befehls-Leitung 506 und
decodiert die empfangenen Befehle. Wenn der Befehl beispielsweise
ein Schreib-Befehl ist, so decodiert die Host-Schnittstelle 507 den Befehl
zu einer logischen Adresse 508, welche von dem Host 501 als Schreib-Zieladresse
der Daten bereitgestellt wird und sendet die logische Adresse 508 zu
einem Flash-Speicher-Controller 509 der Flash-Speicherkarte 500.
Ferner empfängt
die Host-Schnittstelle 507 zu schreibende Daten-Objekte 510 von
der Daten-Leitung 502 und speichert die Daten-Objekte 510 in
einem Daten-Pufferspeicher 511.
-
In
dem Flash-Speicher-Controller 509 wird einem Adress-Umwandlungsbereich
(nicht gezeigt) von der Host-Schnittstelle 507 die logische
Adresse 508 zugeführt,
mit welcher die Schreib-Zieladresse des Daten-Objekts 510 angegeben
wird. Der Adress-Umwandlungsbereich bringt die physikalischen Adressen
von im Allgemeinen mehr als einem Bereich in Übereinstimmung mit einer logischen Adresse.
Hier ist ein Bereich beispielsweise äquivalent zu zwei Seiten innerhalb
eines nicht-flüchtigen Speicherzellen-Arrays 512,
welches eine Vielzahl von nicht-flüchtigen Speicherzellen des
Flash-Speichers 513 auf
weist. Insbesondere gehören
jeweils die Seiten, welche zu dem gleichen Bereich gehören, zu
unterschiedlichen physikalischen Blöcken. Das nicht-flüchtige Flash-Speicherzellen-Array 512 ist
im Allgemeinen unterteilt. in mehr als eine Seite, wobei jede Seite
eine festgelegte Anzahl von Speicherzellen aufweist und das nicht-flüchtige Flash-Speicherzellen-Array 512 ist
ferner unterteilt in mehr als einen physikalischen Block, wobei
jeder physikalische Block eine festgelegte Anzahl von Seiten aufweist. Jede
der Speicherzellen kann zwei Zustände annehmen, einen ersten
Zustand „1" und eine zweiten
Zustand „0". Dadurch kann eine
der Speicherzellen Ein-Bit-Daten speichern, im Folgenden auch bezeichnet
als Datenelement.
-
Der
Adress-Umwandlungsbereich wählt, wenn
ihm die logische Adresse 508 zugeführt wird, mit welcher die Schreib-Zieladresse des Daten-Objekts 510 angezeigt
wird, einen freien Bereich in dem Speicherzellen-Array 512 aus
und weist den Schreib-Zielbereich des Daten-Objekts 510 dem
jeweiligen freien Bereich zu. Der Adress-Umwandlungsbereich bringt
ferner die physikalische Adresse 514 dieses Bereichs in Überstimmung
mit der oben beschriebenen logischen Adresse 508.
-
Ein
Schreib-Bereich (nicht gezeigt) sendet die physikalische Adresse 514 des
Schreib-Zielbereichs an den Adress-Decoder 515 des Flash-Speichers 513.
In Verbindung mit diesem sendet der Schreib-Abschnitt das zu schreibende
Daten-Objekt 510 von dem Daten-Pufferspeicher 511 zu
einem Seiten-Pufferspeicher 516 des Flash-Speichers 513.
-
Der
Flash-Speicher 513 weist beispielsweise zwei Seiten-Pufferspeicher 516 auf.
Jeder der Seiten-Pufferspeicher 516 kann Ein-Seiten-Daten
speichern. In anderen Worten können
die zwei Seiten-Pufferspeicher 516 insgesamt einen Bereich
von Daten speichern. Demgemäß werden
die zu schreibenden Daten-Objekte 510,
im Folgenden auch bezeichnet als Daten-Worte, welche von dem Daten-Pufferspeicher 511 gesendet
worden sind, in den Seiten-Pufferspeichern 516 auf einer
Bereich-Zu-Bereich-Basis
gespeichert. Die Ein-Bereich-Datenelemente, das heißt die Daten-Worte,
welche in den zwei Seiten-Pufferspeicher 516 gespeichert
sind, werden parallel in die zwei Seiten gespeichert, welche mittels
des Adress-Decoders 515 angegeben werden. Auf diese Weise
führt die
herkömmliche Flash-Speicherkarte 500 das
Daten-Schreiben in dem Flash-Speicher 513 in
den zwei physikalischen Blöcken
parallel durch, wodurch die Schreibdauer verkürzt wird, wobei Daten-Worte einer vordefinierten,
festgelegten Länge
verwendet werden, wobei üblicherweise
ein Daten-Wort von 128 Bit Länge
verwendet wird.
-
Die
Flash-Speicherkarte 500 bringt die physikalische Adresse
des Bereichs, in welchem die neuen Daten geschrieben werden sollen,
in Übereinstimmung
mit der logischen Adresse, welche die Schreib-Zieladresse anzeigt.
Zusätzlich
werden in dem Flash-Speicher Datenelemente nur kollektiv in jedem
der physikalischen Blöcke,
wie sie oben beschrieben wurden, gelöscht.
-
In
einigen herkömmlichen
Flash-Speicherzellen kann nur eine vorgegebene maximale Anzahl von
Flash-Speicherzellen programmiert werden unter Verwendung eines
Programmier-Pulses aufgrund des Stroms, welcher benötigt wird
zum Verändern des
Zustands einer Flash-Speicherzelle, welche üblicherweise implementiert
ist mittels eines Floating-Gate-Transistors oder eines Ladungs-Trappingschicht-Transistors.
-
In
einer herkömmlichen
Flash-Speicherkarte 500 ist kein Überschreiben einer schon programmierten
Flash-Speicherzelle möglich. Üblicherweise
wird der physikalische Block zunächst
gelöscht,
bevor neue Daten in einen physikalischen Block geschrieben werden,
welcher zuvor schon programmiert worden ist, und erst nach dem Löschen des
physikalischen Blocks werden die neuen Daten in diesen physikalischen
Block programmiert.
-
Der
Lösch-Prozess
wird durchgeführt
mittels eines Lösch-Schaltkreises 517,
welcher gekoppelt ist mit einem Lese-Bereich. Der Lösch-Schaltkreis 517 wird
versorgt mit der physikalischen Adresse und ist ferner gekoppelt
mit dem nicht-flüchtigen
Speicherzellen-Array 512 und dem Adress-Decoder 515.
-
Da üblicherweise
eine Flash-Speicherkarte 500 verwendet wird in einer tragbaren
Informationsverarbeitungs-Anwendung wie beispielsweise einem Notebook-Computer,
einem Personal Digital Assistant (PDA) oder/und einer digitalen
Kamera und da eine Flash-Speicherkarte 500 üblicherweise
eine große
Menge digitaler Daten aufzeichnet, wie beispielsweise Bilddaten
in dem internen Aufzeichnungsmedium, besteht ein Bedarf zum Verbessern der
Speichereinrichtungs-Architektur und eines entsprechenden Verfahrens
zum Programmieren eines nicht-flüchtigen
Speicherzellen-Arrays, um die zum Programmieren benötigte Energie
zu reduzieren. Ferner sollte auch die Programmiergeschwindigkeit erhöht werden,
um die Nutzbarkeit der Einrichtung zu verbessern.
-
In
[1] wird eine integrierte Schaltkreisanordnung beschrieben, die
Programmierspannungen für ein
Flash-EEPROM-Speicherarray liefert. Zur Reduzierung des Programmierstroms
werden zu programmierende Datenworte daraufhin analysiert, wie viele Bits
des Worts wirklich mit der Programmierspannung beaufschlagt werden
müssen.
Die zu programmierenden Bits werden dann zu festen Vierer-Gruppen
zusammengefasst und sequentiell programmiert.
-
Gemäß der Erfindung
werden ein verbessertes Programmierelement und ein verbessertes
Verfahren zum Programmieren bereitgestellt sowie eine verbesserte
nicht-flüchtige
Speicherzellen-Einrichtung, wobei die Verbesserung der Leistungsfähigkeit erreicht
wird hinsichtlich der Zeit, welche benötigt wird zum Programmieren
der Speichereinrichtung und hinsichtlich des Stroms, welcher benötigt wird zum
Programmieren der Speichereinrichtung.
-
Gemäß der Erfindung
werden die Speichereinrichtung und die Speicher-Array-Architektur
optimiert hinsichtlich der Energie und der Leistungsfähigkeit,
indem Daten-Worte verschmolzen (zusammengeführt) werden und gemeinsam in
ein nicht-flüchtiges
Speicherzellen-Array geschrieben werden, wann immer dies möglich ist
unter Berücksichtigung
des verfügbaren
Programmier-Spannungs-Pulses.
-
Anders
ausgedrückt
werden so viele Daten-Worte wie möglich miteinander verschmolzen (zusammengeführt) und
gemeinsam in das nicht-flüchtige
Speicherzellen-Array programmiert wie es möglich ist, dass sie mit ein
und demselben Programmierpuls programmiert werden können.
-
In
einer beispielhaften Ausführungsform
der Erfindung weist ein Programmierelement zum Programmieren von
Daten in einer Mehrzahl von nicht-flüchtigen Speicherzellen eines
nicht-flüchtigen Speicherzellen-Arrays,
wobei die Daten, welche zu dem nicht-flüchtigen Speicherzellen-Array
in einem Daten-Wort mit einer Mehrzahl von Daten-Elementen übertragen
werden, auf ein Erfass-Element zum Erfassen zumindest eines ersten
Datenwortes und eines zweiten Daten-Wortes, welche zu dem nicht-flüchtigen
Speicherzellen-Array zu übertragen sind.
Ferner ist ein Ermittlungs-Element vorgesehen zum Ermitteln der
Anzahl von Daten-Elementen in dem ersten Daten-Wort und in dem zweiten
Daten-Wort, für
welche eine Änderung
des Zustands einer jeweiligen nicht-flüchtigen Speicherzelle erforderlich
ist. Ein Vergleich-Element (Komparator-Element) vergleicht die ermittelte
Anzahl von Datenelementen mit beispielsweise einer vorgegebenen,
maximalen Anzahl von programmierbaren Datenelementen unter Verwendung
mindestens eines Programmierpulses. Ein Daten-Wort-Zusammenführ-Controller
führt das
erste Daten-Wort mit dem zweiten Daten-Wort zu einem zusammengeführten Daten-Wort
zusammen, welches in das nicht-flüchtige Speicherzellen-Array programmiert
werden soll, wenn die ermittelte Anzahl kleiner oder gleich der
maximalen Anzahl ist, wobei das zusammengeführte Daten-Wort in die nicht-flüchtigen
Speicherzellen zusammen programmiert werden soll unter Verwendung
desselben mindestens einen Programmierpulses.
-
Ausführungsbeispiele
der Erfindung sind in den Figuren dargestellt und werden im Folgenden näher erläutert.
-
Es
zeigen
-
1 eine
Flash-Speicherkarte und einen Host, welche miteinander kommunizieren,
gemäß einer
Ausführungsform
der Erfindung;
-
2 den
Datenaustausch von einem Daten-Pufferspeicher zu dem nicht-flüchtigen
Speicherzellen-Array der Flash-Speicherkarte
gemäß einem Ausführungsbeispiel
der Erfindung;
-
3A ein
Blockdiagramm eines nicht-flüchtigen
Speicherzellen-Arrays gemäß einem Ausführungsbeispiel
der Erfindung;
-
3B zwei
Daten-Worte gemäß einem Ausführungsbeispiel
der Erfindung;
-
4 ein
Flussdiagramm, welches die Schritte zum Programmieren von Daten
in das nicht-flüchtige
Speicherzellen-Array gemäß einem Ausführungsbeispiel
der Erfindung darstellt; und
-
5 ein
Blockdiagramm einer herkömmlichen
Flash-Speicherkarte.
-
Aus
Gründen
der Klarheit werden zuvor definierte Merkmale durchgängig in
allen Figuren, soweit sinnvoll, mit denselben Bezugszeichen versehen.
-
1 zeigt
ein Blockdiagramm einer Flash-Speicherkarte 100 und einer
Informationsverarbeitungs-Anwendung 101 (welche im Folgenden auch
bezeichnet wird als Host) gemäß den beispielhaften
Ausführungsformen
der Erfindung.
-
Die
Flash-Speicherkarte 100 ist verbunden mit dem Host 101 beispielsweise
mittels fünf
unterschiedlichen Arten von Leitungen oder Bussen, einer Daten-Leitung
oder einem Datenbus 102, einer Takt-Leitung 103,
einer Energieversorgungs-Leitung 104, welche die Energieversorgungsspannung
VDD bereitstellt, einer Masseleitung 105,
mittels welcher ein zweites Referenz-Potential bereit gestellt wird, üblicherweise
das Massepotential VSS und einer Befehls-Leitung 106,
welche verwendet wird zum Übertragen
von Befehlen von dem Host 101 an die Flash-Speicherkarte 100.
-
Eine
Host-Schnittstelle 107 der Flash-Speicherkarte 100 empfängt Befehle
von dem Host 101 mittels der Befehls-Leitung 106 und
decodiert die empfangenen Befehle. Wenn der Befehl beispielsweise
ein Schreib-Befehl ist, dann wird der Befehl von der Host-Schnittstelle 107 decodiert
zu einer logischen Adresse 108, welche von dem Host 101 als Schreib-Zieladresse
der Daten bereitgestellt wird und die Host-Schnittstelle 107 sendet
die logische Adresse 108 an einen Flash-Speicher-Controller 109 der Flash-Speicherkarte 100.
Ferner empfängt
die Host-Schnittstelle 107 zu schreibende Daten-Objekte 110 von
der Daten-Leitung 102 und speichert die Daten-Objekte 110 in
einem Daten-Pufferspeicher 111.
-
In
dem Flash-Speicher-Controller 109 wird einem Adress-Umwandlungsbereich
(nicht gezeigt) von der Host-Schnittstelle 107 die logische
Adresse 108, welche die Schreib-Zieladresse des Daten-Objekts 110 angezeigt,
zugeführt.
Der Adress-Umwandlungsbereich
bringt die physikalischen Adressen von im Allgemeinen mehr als einem
Bereich in Übereinstimmung
mit einer logischen Adresse. Hier ist ein Bereich äquivalent
zu beispielsweise zwei Seiten innerhalb eines nicht-flüchtigen
Speicherzellen-Arrays 112, welches eine Vielzahl von nicht-flüchtigen
Speicherzellen des Flash-Speichers 113 aufweist. Insbesondere
gehören
die Seiten desselben Bereichs jeweils zu unterschiedlichen physikalischen
Blöcken. Das
nicht-flüchtige
Flash-Speicherzellen-Array 112 ist im Allgemeinen aufgeteilt
in mehr als eine Seite, wobei jede Seite eine festgelegte Anzahl
von Speicherzellen aufweist und ferner ist das nicht-flüchtige Flash-Speicherzellen-Array 112 zusätzlich aufgeteilt in
mehrere physikalische Blöcke,
wobei jeder physikalische Block eine festgelegte Anzahl von Seiten aufweist.
Jede der Speicherzellen kann zwei Zustände annehmen, einen ersten
Zustand „1" und einen zweiten
Zustand „0". Dadurch kann eine
der Speicherzellen ein Ein-Bit-Datum speichern, im Folgenden auch
bezeichnet als Datenelement. In einer alternativen Ausführungsform
der Erfindung kann jede der Speicherzellen vier Zustände aufweisen,
womit eine Speicherzelle der Speicherzellen Zwei-Bit-Daten speichern
kann.
-
Der
Adress-Umwandlungs-Bereich wählt, wenn
ihm die logische Adresse 108, mit welcher die Schreib-Zieladresse
des Daten-Objekts 110 angezeigt
wird, einen freien Bereich in dem Zellen-Array 112 aus
und ordnet den Schreib-Zielbereich des Daten-Objekts 110 dem
jeweiligen freien Bereich zu. Der Adress-Umwandlungs-Bereich bringt
ferner die physikalische Adresse 114 dieses Bereichs in Übereinstimmung
mit der oben beschriebenen logischen Adresse 108.
-
Ein
Schreib-Bereich (nicht gezeigt) sendet die physikalische Adresse 114 des
Schreib-Zielbereichs an einen Adress-Decoder 115 des Flash-Speichers 113.
In Verbindung mit diesem sendet der Schreib-Bereich das zu schreibende
Daten-Objekt 110 von dem Daten-Pufferspeicher 111 zu
einem Seiten-Pufferspeicher 116 des Flash-Speichers 113.
-
Der
Flash-Speicher 113 weist beispielsweise zwei Seiten-Pufferspeicher 116 auf.
Jeder der Seiten-Pufferspeicher 116 kann insgesamt Ein-Seiten-Daten
speichern. Anders ausgedrückt
können die
zwei Seiten-Pufferspeicher 116 insgesamt Daten eines Bereichs
speichern. Demgemäß werden
die zu schreibenden Daten-Objekte 110, im Folgenden auch
bezeichnet als Daten-Worte,
welche von dem Daten-Pufferspeicher 111 gesendet worden
sind, in den Seiten-Pufferspeichern 116 auf einer Bereich-Zu-Bereich-Basis gespeichert.
Die Ein-Bereich-Datenelemente, das heißt die Daten-Worte, welche
in den zwei Seiten-Pufferspeichern 116 gespeichert
sind, werden parallel in die zwei Seiten eingeschrieben, welche
mittels des Adress-Decoders 115 bezeichnet sind, gemäß dem Stand
der Technik auf einer Wort-Zu-Wort-Basis, gemäß der Erfindung in einer Weise,
wie sie im Folgenden näher
beschrieben wird. Die Flash-Speicherkarte 100 führt das Schreiben
der Daten in die zwei physikalischen Blöcke des Flash-Speichers 113 parallel
durch, wodurch die Schreibdauer verkürzt wird, wobei Daten-Worte einer
vordefinierten, festgelegten Länge
verwendet werden, üblicherweise
unter Verwendung von Daten-Worten von 128 Bit Länge, alternative von Verwendung
von Daten-Worten von 64 Bit Länge,
256 Bit Länge,
512 Bit Länge,
etc.
-
Die
Flash-Speicherkarte 100 bringt die physikalische Adresse
des Bereichs, in welchen die neuen Daten geschrieben werden sollen
in Übereinstimmung
mit der logischen Adresse, welche die Schreib-Zieladresse angibt.
Zusätzlich
werden die Datenelemente nur gemeinsam in jedem der physikalischen
Blöcke,
welche oben beschrieben wurden, in dem Flash-Speicher gelöscht.
-
In
der Flash-Speicherkarte 100 ist kein Überschreiben von zuvor schon
programmierten Flash-Speicherzellen vorgesehen. Üblicherweise wird der physikalische
Block zunächst
gelöscht,
bevor neue Daten in den physikalischen Block eingeschrieben werden,
welcher zuvor schon programmiert worden ist, und dann, nachdem der
Lösch-Prozess
vollständig
durchgeführt
worden ist, werden die neuen Daten in diesen physikalischen Block
programmiert.
-
Der
Lösch-Prozess
wird durchgeführt
mittels eines Lösch-Schaltkreises 117,
welcher mit dem Lese-Bereich gekoppelt ist und welchem die physikalische
Adresse bereitgestellt wird und welcher ferner gekoppelt ist mit
dem nicht-flüchtigen
Speicherzellen-Array 112 und dem Adress-Decoder 115.
-
Gemäß der bevorzugten
Ausführungsform der
Erfindung und im Unterschied zu dem Flash-Speicher-Controller 109 gemäß dem Stand
der Technik ist der Flash-Speicher-Controller 109 ferner verbunden
mit dem Daten-Pufferspeicher 111, welcher die Daten-Worte 110 von
dem Daten-Pufferspeicher 111 zu den zwei Seiten-Pufferspeichern 116 überträgt. Der
Flash-Speicher-Controller 109 liest die zu übertragenden
Daten-Worte 110 mit und ermittelt, wie im Folgenden noch
näher beschrieben
wird, ob eine vorbestimmte, maximale Anzahl von programmierbaren
Datenelementen, das heißt
Datenbits, eine Veränderung
des Zustands der jeweiligen nicht-flüchtigen Speicherzelle erfordert
und damit einen wesentlichen Teil des Stroms, welcher von dem Programmierpuls
geliefert wird, benötigt,
welcher Programmierpuls zum Schreiben der Daten in das nicht-flüchtige Speicherzellen-Array
verwendet wird.
-
Gemäß der bevorzugten
Ausführungsform der
Erfindung sind die nicht-flüchtigen
Speicherzellen des nicht-flüchtigen
Speicherzellen-Arrays 112 eingerichtet als so genannte
Twin-Flash-Array-Zellen unter
Verwendung von NROM(Nitrided Read Only Memory)-Transistoren.
-
Jedoch
ist die Erfindung anwendbar für
jede beliebige Art von nicht-flüchtigen
Speicherzellen, beispielsweise einer allgemeinen nicht-flüchtigen Flash-Speicherzelle,
einer ferroelektrischen Vielfachzugriffs-Speicher-nicht-flüchtigen
Speicherzelle (Ferroelectric Random Access Memory, FRAM), einer magnetischen
Vielfachzugriffs-Speicher-nicht-flüchtigen Speicherzelle (Magnetic
Random Access Memory, MRAM), einer Phasenänderungs-Speicher--nicht-flüchtigen-Speicherzelle
(Phase Change Memory, PCM), einer Conductive-Bridging-Vielfachzugriffs-Speicher-nicht-flüchtigen
Speicherzelle (Conductive Bridging Random Access Memory, CBRAM)
oder einer organischen Vielfachzugriffs-Speicher-nicht-flüchtigen
Speicherzelle (Organic Random Access Memory, ORAM).
-
Die
Speicherzellen können
eingerichtet sein als nicht-flüchtige Floating-Gate-Flash-Speicherzellen
oder als nicht-flüchtige Ladungs-Trappingschicht-Flash-Speicherzellen.
Die nicht-flüchtigen Ladungs-Trappingschicht-Flash-Speicherzellen
können
einen Oxid-Nitrid-Oxid-Schichtstapel (ONO-Schichtstapel) aufweisen, wobei die
Ladungsträger
in der Nitrid-Grenzfläche
zwischen der unteren Siliziumoxidschicht und der Nitridschicht eingefangen
werden, wobei die Nitrid-Schicht
eingeschlossen ist zwischen den Siliziumoxidschichten.
-
Alternativ
kann die Ladungs-Trappingschicht hergestellt sein aus Aluminiumoxid
(Al2O3), Yttriumoxid
(Y2O3), Lanthanoxid
(LaO2), Hafniumoxid (HfO2), Zirkoniumoxid
(ZrO2), amorphem Silizium, Tantaloxid (Ta2O5), Titanoxid (TiO2) und/oder einem Aluminat. Ein Beispiel
für ein
Aluminat ist eine Legierung der Komponenten Aluminium, Zirkonium
und Sauerstoff (Al, Zr, O).
-
Wenn
Daten von dem Host 101 in das Flash-Speicherzellen-Array 112 geschrieben
werden sollen, wird, wie oben beschrieben, ein Schreib-Befehl mittels
der Befehls-Leitung 106 an die Host-Schnittstelle 107 übersendet.
Zusätzlich
werden die in das Flash-Speicherzellen-Array 112 zu schreibenden
Daten von dem Host 101 zu der Host-Schnittstelle 107 mittels
der Daten-Leitungen 102 übertragen
und die Daten werden von der Host-Schnittstelle 107 zu dem Daten-Pufferspeicher 111 mittels
eines internen Daten-Busses weitergeleitet. Gemäß der bevorzugten Ausführungsform
der Erfindung ist der Daten- Pufferspeicher 111 eingerichtet
als statischer Vielfachzugriffs-Speicher (Static Random Access Memory,
SRAM).
-
Die
in dem SRAM Daten-Pufferspeicher 111 gespeicherten Daten,
welche weitergeleitet werden sollen, das heißt welche von dem SRAM-Daten-Pufferspeicher 111 zu
dem Speicherzellen-Array 112 mittels der Seiten-Pufferspeicher 116 übertragen werden
sollen, werden von dem SRAM Daten-Pufferspeicher 111 mittels
des internen Daten-Busses 118 gesendet, wobei die Anzahl
m von Daten-Worten (m ist ein Integer-Wert), wobei jedes Daten-Wort
eine Länge
von 128 Bit aufweisen kann von Daten oder n·128 Bit (n kann beispielsweise ½, 1, 2,
3, ..., sein), variieren kann abhängig von der Anzahl aktiver
Bits, das heißt
von Bits, welche geändert
werden müssen innerhalb
der Speicherzellen des Speicherzellen-Arrays 112 einerseits
und andererseits abhängig
von der maximalen Anzahl von änderbaren
aktiven Bits, welche programmiert werden können innerhalb eines Programmierpulses.
-
Gemäß der bevorzugten
Ausführungsform der
Erfindung werden zwei aufeinander folgende zu übertragende Daten-Worte überprüft hinsichtlich
der Anzahl aktiver Bits, welche in den zwei Daten-Worten enthalten
sind.
-
2 zeigt
ein Prinzip-Blockdiagramm 200, in welchem das Prinzip der
Ausführungsbeispiele
der Erfindung dargestellt ist.
-
Ein
erstes Daten-Wort 201 von 128 Bit soll zu der Speicherzelle 112 übertragen
werden, das heißt die
Datenbits des ersten Daten-Worts sollen in einen physikalischen
Block des Speicherzellen-Arrays 112 gemäß der von dem Adress-Decoder
des Flash-Speicherzellen-Controllers 109 bereitgestellten
Adresse programmiert werden. Ferner soll ein zweites Daten-Wort 202,
ebenfalls der Länge
von 128 Datenbit, in das Speicherzellen-Array 112 geschrieben
werden.
-
Der
Flash-Speicher-Controller 109 hat die Information, dass
die zwei Daten-Worte 201, 202 von dem Daten-Pufferspeicher 111 zu
dem Speicherzellen-Array 112 übertragen werden sollen und
ermittelt die Anzahl von Bits des ersten Daten-Worts 201,
welche ein Programmieren der Speicherzelle 112 erfordern
in dem Sinne, dass der Zustand der jeweiligen Speicherzelle mittels
des Programmierpulses verändert
werden muss.
-
Wie
in dem Flussdiagramm 400 in 4 gezeigt,
wird das Verfahren zum Ermitteln der Anzahl von Daten-Worten, welche
gemeinsam und unter Verwendung desselben Programmierpulses programmiert
werden sollen, in Schritt 401 gestartet.
-
In
Schritt 402 wird ein erster Index n auf den Wert 1 gesetzt.
-
In
Schritt 403 wird das Wort n mittels des Flash-Speicher-Controllers 109 aus
dem Daten-Pufferspeicher 111 gelesen, wobei das Wort n
ein Daten-Wort ist, welches zu dem Speicherzellen-Array 112 übertragen
werden soll.
-
Für das Daten-Wort
n wird die Anzahl von aktiven Bits dieses Daten-Worts bestimmt,
das heißt die
Anzahl von Bits welche, wenn sie in das Speicherzellen-Array 112 programmiert
werden, zu dem Erfordernis führen,
dass der Zustand der jeweiligen Speicherzelle von dem Zustand „0" zu dem Zustand „1" geändert werden
muss oder von dem Zustand „1" zu dem Zustand „0", abhängig davon,
was der Initialzustand der Speicherzelle ist.
-
In
diesem Zusammenhang ist anzumerken, dass gemäß der bevorzugten Ausführungsform
der Erfindung vor dem Schreiben von Daten-Worten in das Speicherzellen-Array 112 der
jeweilige physikalische Block gelöscht wird und somit zu einem
vordefinierten Initialzustand überführt wird.
-
Wie
oben beschrieben wurde ist das Flash-Speicherzellen-Array 112 derart
eingerichtet, dass nur eine vorbestimmte, maximale Anzahl von Zustandsänderungen
von Speicherzellen mit genau einem Programmierpuls durchgeführt werden
kann.
-
Gemäß dem bevorzugten
Ausführungsbeispiel
der Erfindung können
nur 65 Bit mit nur einem Programmierpuls verändert werden.
-
In
einem nächsten
Schritt (Schritt 405) wird ein zweiter Index m auf einen
Initialwert 1 gesetzt.
-
Ferner
wird in Schritt 406 eine Variable „Bitsum" definiert als die Anzahl aktiver Bits
von Wort n.
-
In
einem nächsten
Schritt (Schritt 407) wird das zweite Daten-Wort, allgemein das
Daten-Wort (n + m), aus dem Daten-Pufferspeicher 111 gelesen.
-
In
einem nächsten
Schritt (Schritt 408) wird die Summe des Werts der „Variable
Bitsum" und der Anzahl
aktiver Bits von Daten-Wort (n + m) ermittelt.
-
Nachfolgend
wird in Schritt 409 ermittelt, ob die Summe des Werts der
Variable „Bitsum" und der Anzahl aktiver
Bits von Daten-Wort (n + m) kleiner oder gleich ist der maximalen
Anzahl von Bits, welche programmiert werden kann unter Verwendung genau
eines Programmierpulses.
-
Ist
die Summe größer als
die maximale Anzahl von Bits, welche mit einem Programmierpuls programmiert
werden kann, so werden (n + m – 1) Daten-Worte
unter Verwendung genau eines Programmierpulses programmiert.
-
Anschaulich
ausgedrückt
für zwei
Daten-Worte, das heißt
für das
erste Daten-Wort 201 und das zweite Daten-Wort 202,
bedeutet dies, dass in Schritt 409 ermittelt wird, ob die
Summe der aktiven Bits der Daten-Worte 201, 202 kleiner
oder gleich ist der maximalen Anzahl von aktiven Bits, welche programmiert
werden kann unter Verwendung genau eines Programmierpulses, und
wenn dies nicht der Fall ist wird nur das erste Daten-Wort 201 programmiert
unter Verwendung genau eines Programmierpulses (Schritt 410).
-
Dann
wird der erste Index n um den Wert 1 erhöht (es ist anzumerken, dass
in diesem Fall n = 1 ist) (Schritt 412) und das Verfahren
wird fortgeführt
im Schritt 403, wobei das nächste Datenwort n aus dem Daten-Pufferspeicher 111 gelesen
wird. Nun wird die nächste
Iteration wie oben beschrieben durchgeführt.
-
Wird
jedoch in Schritt 409 ermittelt, dass die Summe kleiner
oder gleich ist als die maximale Anzahl von Bit, so wird der zweite
Index m um den Wert 1 erhöht
(Schritt 413) und das Verfahren wird in Schritt 407 fortgeführt, in
dem das nächste
Datenwort (n + m) aus dem Daten-Pufferspeicher 111 gelesen wird
und die Schritte 408 und 409, wie oben beschrieben,
erneut durchgeführt
werden. Wenn die Iteration der Schritte 409, 412, 407 und 408 durchgeführt wird zumindest
für das
zweite Datenwort 202, was anschaulich bedeutet, dass das
erste Daten-Wort 201 und das zweite Daten-Wort 202 zusammen
eine Anzahl von aktiven Bits aufweisen, welche kleiner oder gleich
ist als die maximale Anzahl aktiver Bits, welche programmiert werden
können
unter Verwendung genau eines Programmierpulses, so werden das erste Daten-Wort 201 und
das zweite Daten-Wort 202 zusammengeführt zu einem zusammengeführten Daten-Wort 203 (vergleiche 2)
und das zusammengeführte
Daten-Wort 203 wird gemeinsam in das Speicherzellen-Array 112 programmiert
unter Verwendung genau eines Programmierpulses. In diesem Zusammenhang
ist anzumerken, dass auch eine Mehrzahl von Programmierpulsen verwendet werden
kann zum Programmieren des Zusammengeführt-Daten-Wortes 203.
Ein Aspekt der Erfindung kann in dem Spannungs-Pulsen des zusammengeführten Daten-Wortes 203 mit
demselben zumindest einen Programmierpuls gesehen werden.
-
Wie
in 3A gezeigt ist, kann das Speicherzellen-Array 112 adressiert
werden mittels eines 256 Bit-Wortes gemäß einem Ausführungsbeispiel der
Erfindung. Wie oben beschrieben gibt es einige Operationen, ausgeführt auf
das Speicherzellen-Array 112, welche nur für eine vorbestimmte,
maximale Anzahl von Bits ausgeführt
werden können,
gemäß dieser
Ausführungsform der
Erfindung 65 Bit, wie beispielsweise das Programmieren eines Daten-Wortes in
das Speicherzellen-Array. Somit arbeitet zum Programmieren die Basisoperation
des Programmierens eines Daten-Worts in das Speicherzellen-Array 112 auf
einem Daten-Wort
von 128 Bit Länge,
in welchem maximal 65 Bit aktive Bits sind.
-
Anschaulich
kann ein Aspekt der Erfindung in der einfachen Ausführungsform
mit zwei Daten-Worten darin gesehen werden, dass das erste Daten-Wort
und das zweite Daten-Wort 202 dahingehend überprüft werden,
ob die Summe ihrer aktiven Bits kleiner oder gleich ist der Anzahl
von maximalen aktiven Bits, welche programmiert werden können unter
Verwendung eines Programmierpulses und wenn dies der Fall ist, dass
in diesem Fall die Anzahl der Summer aktiver Bits der zwei Daten-Worte 201, 202 kleiner
ist oder gleich ist als 65 Bit, die zwei Daten-Worte 21, 202 zusammengeführt werden
zu einem zusammengeführten
Daten-Wort 203 und alle diese Bits werden gemeinsam in
das Speicherzellen-Array 112 parallel programmiert unter
Verwendung eines Programmierpulses.
-
Die
allgemeine Idee kann in dem Zusammenführen von zwei oder mehr Daten-Worten
gesehen werden, beispielsweise der Länge von jeweils 128 Bit, wenn
in allen berücksichtigten
Daten-Worten nur eine vorgegebene maximale Anzahl von Bits (beispielsweise
65 Bit) aktiv sind, in anderen Worten die Anzahl von Nullen kleiner
ist als 65, da, gemäß der bevorzugten
Ausführungsform,
nur die Bits mit dem Wert 1 verändert
werden müssen.
-
Ein
Aspekt der Erfindung kann ferner in der Nutzung des Arrays gesehen
werden derart, dass der maximale Strom-Programmierpuls optimiert
wird, indem sequentielle SRAM-Daten-Worte mit 128 Daten-Bits verwendet
werden.
-
Gemäß der bevorzugten
Ausführungsform der
Erfindung, in der ein Twin-Flash-Speicherzellen-Array vorgesehen
ist, ist die Anzahl von programmierbaren Bits, welche parallel programmiert
werden können,
durch die Energieversorgung beschränkt.
-
Üblicherweise
enthält
jedes SRAM-Wort die maximale Anzahl von Bits, welche parallel programmiert
werden können.
Wenn der Programmierfluss weiter fortgeführt wird, wird die Anzahl von
Bits, welche programmiert werden müssen, reduziert. Wenn die Summe
von zu programmierenden Bits in zwei aufeinander folgenden Worten
gleich ist oder kleiner ist als der maximale Strom, welcher verfügbar ist,
in anderen Worten, als die Energieversorgung bereitstellen kann,
können
zwei oder mehr SRAM-Daten-Worte zusammengeführt werden und es kann ein Programmierpuls
an beide Daten-Worte parallel gegeben werden, so dass sie gemeinsam
in das Twin-Flash-Speicherzellen-Array parallel programmiert werden.
In einer alternativen Ausführungsform ist
es vorgesehen, den Inhalt des zu beschreibenden physikalischen Blocks
zu vergleichen und nicht zu löschen,
bevor das Schreiben des Daten-Wortes durchgeführt wird, welches zu programmieren
ist. Als Ergebnis dieses Vergleichs wird die Anzahl von Bits, welche
innerhalb des jeweiligen physikalischen Blocks verändert werden
müssen,
bestimmt und der oben beschriebene Algorithmus wird analog durchgeführt.
-
Es
ist anzumerken, dass es für
die Fachleute zu erkennen ist, dass die beschriebenen Prozesse implementiert
werden können
in Hardware, Software, Firmware oder einer Kombination dieser Implementierungen,
wie gewünscht.
Beispielsweise kann die Operation des Auswählens einer Speicherzelle ausgeführt werden
mittels eines Wortleitungs-Decoders und eines Bitleitungs-Decoders unter der
Kontrolle einer E-A-Schnittstellen-Einheit, wie beispielsweise einem
Computer. Demgemäß können die
beschriebenen Operationen implementiert werden als ausführbare Instruktionen,
welche auf einem computerlesbaren Medium, gespeichert sind (entfernbare
Platte, flüchtiger
Speicher oder nicht-flüchtiger
Speicher, eingebettete Prozessoren (embedded processors), etc.),
wobei der gespeicherte Instruktionscode eingerichtet ist zum Programmieren
eines Computers oder anderer solcher programmierbaren Einrichtungen zum
Durchführen
der gewünschten
Funktionen.
-
In
diesem Dokument ist folgende Veröffentlichung
zitiert: