DE102005037037B4 - Speicheranordnung und Verfahren zum Betreiben der Speicheranordnung - Google Patents
Speicheranordnung und Verfahren zum Betreiben der Speicheranordnung Download PDFInfo
- Publication number
- DE102005037037B4 DE102005037037B4 DE102005037037.3A DE102005037037A DE102005037037B4 DE 102005037037 B4 DE102005037037 B4 DE 102005037037B4 DE 102005037037 A DE102005037037 A DE 102005037037A DE 102005037037 B4 DE102005037037 B4 DE 102005037037B4
- Authority
- DE
- Germany
- Prior art keywords
- memory
- block
- memory cells
- memory cell
- access
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims description 33
- 230000004044 response Effects 0.000 claims abstract description 10
- 230000032683 aging Effects 0.000 claims description 11
- 230000001419 dependent effect Effects 0.000 claims description 2
- 238000013507 mapping Methods 0.000 claims 2
- 238000005259 measurement Methods 0.000 abstract description 4
- 210000004027 cell Anatomy 0.000 description 172
- 238000012360 testing method Methods 0.000 description 10
- 230000002950 deficient Effects 0.000 description 8
- 238000001514 detection method Methods 0.000 description 4
- 238000011161 development Methods 0.000 description 4
- 230000018109 developmental process Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 150000004767 nitrides Chemical class 0.000 description 3
- 238000012217 deletion Methods 0.000 description 2
- 230000037430 deletion Effects 0.000 description 2
- 230000006866 deterioration Effects 0.000 description 2
- MAYZWDRUFKUGGP-VIFPVBQESA-N (3s)-1-[5-tert-butyl-3-[(1-methyltetrazol-5-yl)methyl]triazolo[4,5-d]pyrimidin-7-yl]pyrrolidin-3-ol Chemical compound CN1N=NN=C1CN1C2=NC(C(C)(C)C)=NC(N3C[C@@H](O)CC3)=C2N=N1 MAYZWDRUFKUGGP-VIFPVBQESA-N 0.000 description 1
- 230000005689 Fowler Nordheim tunneling Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000004888 barrier function Effects 0.000 description 1
- 239000002784 hot electron Substances 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 210000000352 storage cell Anatomy 0.000 description 1
- 230000005641 tunneling Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/34—Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
- G11C16/349—Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
Landscapes
- Read Only Memory (AREA)
- For Increasing The Reliability Of Semiconductor Memories (AREA)
Abstract
Description
- Die Erfindung betrifft eine Speicheranordnung und ein Verfahren zum Betreiben der Speicheranordnung gemäß den nebengeordneten Patentansprüchen.
- Ein EEPROM (Electrically Erasable Programmable Read-Only Memory) oder elektrisch löschbarer programmierbarer Lesespeicher ist eine nichtflüchtige Speichereinheit, die in Computern oder anderen elektronischen Schaltungen oder elektrischen Geräten verwendet wird. Ein EEPROM kann viele Male elektrisch programmiert und gelöscht werden. Jedes Bit wird gesetzt, indem eine bestimmte Menge von Elektronen durch eine dünne dielektrische Barriere tunnelt. Dadurch kann jedes Bit nur eine bestimmte Anzahl von Malen gelöscht und wieder programmiert werden. Aber die in einem EEPROM abgespeicherten Bits können eine unbeschränkte Anzahl von Malen gelesen werden.
- EEPROM-Speicherzellen können verschiedene Arten von Speicherzellen umfassen, beispielsweise eine Floating-Gate-Zelle oder eine so genannte NROM-(Nitride Programmable Read-Only Memory)Speicherzelle. Die NROM-Speicherzelle ist in dem Dokument
US 6,011,725 A beschrieben. - Die NROM-Zelle hat zwei dotierte Gebiete und einen Kanal, der zwischen den dotierten Gebieten angeordnet ist. Eine Gate-Elektrode ist über dem Kanalgebiet angeordnet und durch eine dielektrische Schicht isoliert, die zwischen dem Kanalgebiet und der Gate-Elektrode angeordnet ist. Die dielektrische Schicht umfasst eine Oxid-Nitrid-Oxid-Schicht, wobei die Nitridschicht zwischen den isolierenden Oxidschichten als Ladungsfängerschicht dient. Durch die Oxidschichten wird ein Diffundieren der Elektronen in vertikaler Richtung verhindert. Zwei Bits werden in räumlich beabstandeten Regionen der Nitridschicht gespeichert. Eine erste Bitregion befindet sich benachbart zum ersten Dotiergebiet und eine zweite Bitregion befindet sich benachbart zum zweiten Dotiergebiet.
- Die Bits werden mittels so genannten „channel hot electrons””, kurz CHE, programmiert. Elektronen werden aus dem Kanal in den Ladungsfängerbereich in Abhängigkeit der angelegten Spannungen eingebracht. Zum Programmieren eines ersten Bits können Programmierspannungen an den ersten Dotierbereich und an die Gate-Elektrode angelegt werden, während der zweite Dotierbereich geerdet ist. Die Elektronen dringen in den ersten Bitbereich ein und werden dort quasi gefangen. Ähnlich kann das Programmieren eines zweiten Bits durch Anlegen der Programmierspannungen an den zweiten Dotierbereich und an die Gate-Elektrode erfolgen, während der erste Dotierbereich geerdet ist.
- Zum Löschen eines Bits können so genannte „Hot holes” oder ein so genanntes Fowler-Nordheim-Tunneln verwendet werden. Das Löschen des ersten Bits kann erfolgen, indem Löschspannungen an die Gate-Elektrode oder an das erste Dotiergebiet sowie die Gate-Elektrode angelegt werden, was zu einem lateralen Feld führt. Hierdurch werden Löcher durch die untere Oxidschicht gezwungen, um die Ladung der Elektronen zu kompensieren.
- Der Schritt zum Anlegen der Programmier- oder Löschspannung wird durch mittels der Zufuhr einer Abfolge von mehreren Pulsen durchgeführt. Die Anzahl der Pulse, die benötigt werden, um die Speicherzelle zu programmieren oder zu löschen, kann sich von Zelle zu Zelle unterscheiden. Nichtsdestotrotz steigt die Anzahl der benötigten Pulse mit der Anzahl der bereits durchgeführten Programmier- oder Löschzyklen.
- Das Programmieren und Löschen von Speicherzellen ist ein übliches Konzept, das nicht auf NROM-Speicherzellen beschränkt ist.
- Eine Bitinformation, die in einer NROM-Speicherzelle gespeichert ist, wird gelesen, indem eine Spannung zwischen dem ersten und dem zweiten Dotierbereich angelegt wird. Diese Spannung ist invers zu der Spannung, die zum Programmieren des Bits verwendet wird. Relativ wenige gefangene Ladungen, die zum Dotierbereich, der geerdet ist, benachbart sind, unterdrücken oder reduzieren den Stromfluss. Das Lesen beispielsweise des ersten Bits kann durchgeführt werden, indem Lesespannungen an den zweiten Dotierbereich und gegebenenfalls die Gate-Elektrode angelegt werden. Der erste Dotierbereich kann geerdet werden. Wenn keine Ladungen innerhalb der ersten Bitregion gefangen sind, fließt der Strom. Wenn Ladungen beziehungsweise Elektronen innerhalb der ersten Bitregion gefangen sind, ist der Stromfluss reduziert oder der Strom fließt nicht. Der reduzierte Stromfluss repräsentiert einen ersten binären Wert des programmierten Bits und der normale Stromfluss repräsentiert einen zweiten binären Wert des Bits.
- Um einen Speicherzugriff auf die Speicherzellen durchzuführen, umfasst die Speicheranordnung des Weiteren einen Controller, beziehungsweise eine Steuereinheit, der an das Speicherzellenfeld gekoppelt ist und den Speicherzugriff auf die Speicherzellen ausführt. Normalerweise ist das Speicherzellenfeld in Blöcken organisiert. Jede Speicherzelle ist einem der Blöcke zugeordnet. Der Speicherzugriff wird blockweise durchgeführt. Dies bedeutet, dass eine Gruppe von Bits vorzugsweise gleichzeitig programmiert wird. Weiterhin können die Speicherzellen, die demselben Block zugeordnet sind, gleichzeitig gelöscht werden.
- Die Speicheranordnung wird üblicherweise hinsichtlich ihrer Funktionalität vor der Auslieferung durch den Hersteller getestet. Blöcke die mindestens eine schadhafte Speicherzelle umfassen, können als so genannte „schlechte Blöcke” markiert werden und/oder durch redundante Blöcke ersetzt werden. Der Controller führt keinen Speicherzugriff auf diese als schlecht charakterisierten Blöcke aus. Das Testen kann umfassen, dass der Speicherzugriff auf jede Speicherzelle durchgeführt wird, indem ein Zugriffssignal angelegt wird, um die Speicherzelle zu programmieren oder zu löschen. Das Zugriffssignal kann mehrere Pulse umfassen. Die Anzahl der Pulse, die benötigt werden, um den Speicherzugriff auf die Speicherzelle, sei es Programmieren oder Löschen, durchzuführen, wird während der Testroutine bestimmt. Wenn auf die Speicherzelle nicht durch eine gegebene Anzahl von Pulsen zugegriffen werden kann, wird angenommen, dass die Speicherzelle schadhaft ist. Somit umfasst der entsprechende Block eine schadhafte Speicherzelle und wird als schlechter Block markiert.
- Während des normalen Betriebsmodus der Speicheranordnung erfolgt das Programmieren und Löschen der Speicherzellen eine Vielzahl von Malen. Wegen der damit einhergehenden Verschlechterung der Speicherzellen altern Blöcke, die häufiger programmiert und gelöscht werden als andere Blöcke, viel schneller. Die Lebensdauer eines Blocks kann definiert werden durch eine gegebene Anzahl von Programmier- und Löschzyklen, die für die Speicherzellen des Blocks durchgeführt werden dürfen. Nachdem die gegebene Anzahl von Programmier- oder Löschzyklen durchgeführt worden ist, können die Speicherzellen auf Grund ihrer begrenzten Lebensdauer möglicherweise schadhaft werden. Der Block wird als schlechter Block gekennzeichnet, was dazu führt, dass nicht mehr auf ihn zugegriffen wird. Somit reduziert sich die Speicherkapazität der Speicheranordnung blockweise während ihrer Lebensdauer, wenn mehr und mehr Blöcke als schlechte Blöcke markiert werden.
- Der Controller kann den Speicherzugriff derart ausführen, dass die Blöcke gleichmäßig verwendet werden und altern, was auch als so genanntes „Wear leveling” bezeichnet wird. Dieses ist eine Technik, um die Alterung, verursacht durch wiederholtes Programmieren oder Löschen, gleichmäßig über das Speicherzellenfeld zu streuen und dadurch zu verhindern, dass einzelne Blöcke des Speicherzellenfeldes aufgrund der Alterung vorzeitig ausfallen. Die Wear-Leveling-Technik kann durch den Controller ausgeführt werden. Der Controller wählt die Blöcke aus, auf die der Speicherzugriff ausgeführt wird, basierend auf der Anzahl der Programmier- oder Löschzyklen, die bisher ausgeführt worden sind. Nachdem eine gegebene Anzahl von Programmier- oder Löschzyklen durchgeführt worden ist, wird der entsprechende Block als schlechter Block markiert.
- Dieses Markieren als schlechter Block hängt nicht vom wirklichen Zustand des Blocks ab, sondern lediglich von der Anzahl der bisher durchgeführten Programmier- oder Löschzyklen. Somit wird der Block als schlechter Block markiert, obwohl er noch funktioniert, wenn die gegebene Anzahl erlaubter Zyklen, die die Lebensdauer des Blocks definiert, die wirkliche Lebensdauer, bis der Block nicht mehr funktioniert, unterschätzt. Manchmal wird der Speicherzugriff noch auf einem Block ausgeführt, der schadhaft geworden ist, obwohl die gegebene Anzahl von Programmier- oder Löschzyklen noch nicht erreicht ist. Die Lebensdauer eines Blocks ist lediglich definiert durch die gegebene Anzahl von Programmier- oder Löschzyklen, wobei der wirkliche Zustand der Speicherzellen des Blocks nicht berücksichtigt wird. Somit basiert die definierte Lebensdauer des Blocks auf einer Unterabschätzung der wirklichen mittleren Lebensdauer der Speicherzellen.
- In der
ist ein Verfahren und ein System zur Programmierung von Daten in nicht-flüchtigen Speicherbausteinen beschrieben. Die History-Information kann die Anzahl der durchgeführten Programmier/Lösch-Operationen beinhalten. Die History-Information kann auch die Anzahl der Pulse beim Programmieren enthalten. Die Programmierung der Speicherzellen wird dadurch optimiert.WO 2005/010638 A2 - Es ist Aufgabe der Erfindung, zur Bestimmung der Lebensdauer einen genaueren Schätzwert für den Zustand der Blöcke im Speicherzellenfeld anzugeben.
- Die Aufgabe wird durch die in den nebengeordneten Patentansprüchen angegebenen Maßnahmen gelöst.
- Zur Lösung der Aufgabe umfasst die Speicheranordnung:
- – ein Speicherzellenfeld, das eine Vielzahl von Speicherzellen umfasst, wobei jede Speicherzelle eine ausgewählte Zugriffskenngröße hat und ausgebildet ist, eine Information zu speichern, und wobei auf jede Speicherzelle durch ein Zugriffssignal, das eine Folge von Pulsen umfasst, zugreifbar ist, um die gespeicherte Information zu verändern, und jede Speicherzelle einem aus einer Vielzahl von Blöcken zugeordnet ist,
- – eine Messeinheit, die an das Speicherzellenfeld gekoppelt ist und die ausgebildet ist, eine Anzahl von benötigten Pulsen im Zugriffssignal zu identifizieren, um die gespeicherte Information der Speicherzelle zu verändern, und die ausgewählte Zugriffskenngröße jeder Speicherzelle in Erwiderung auf das Zugriffssignal zu identifizieren, und
- – eine Zuordnungseinheit, die an die Messeinheit gekoppelt ist und die ausgebildet ist, einen Zustandsparameter jedem Block zuzuordnen, wobei der Zustandsparameter ein Extremwert der identifizierten Zugriffskenngrößen der Speicherzellen, die dem Block zugeordnet sind, ist.
- Diese Abschätzung beruht auf der tatsächlichen Verschlechterung des Zellenzustands hinfolge der wiederholten Zugriffe und nicht auf einem bloßen Zählen der bereits erfolgten Zugriffe.
- Die Zustandsspeichereinheit enthält Informationen über den Zustand der Speicherzellen eines Blockes, die auf den Zugriffskenngrößen der Speicherzellen basieren. Diese Kenngröße zeigt Zustand der Speicherzelle präziser an als lediglich die Anzahl der bisher erfolgten Zugriffe. Somit kann der Speicherzugriff auf die Speicherzellen eines Blockes so oft durchgeführt werden, bis die Kenngrößen anzeigen, dass eine oder mehrere Speicherzellen dieses Blocks schadhaft sind. Dadurch ist es möglich, wenn die Speicherzellen des Blocks nicht schadhaft sind, häufiger auf die Speicherzellen des Blocks zuzugreifen als dieses durch die bisher abgeschätzte Anzahl der Zugriffe möglich wäre.
- Vorteilhafterweise kann ein Controller die Zustandsparameter, die in der Zustandsspeichereinheit abgelegt sind, nutzen, um den Speicherzugriff mit der Wear-Leveling-Technik, die auf diesen Zustandsparametern basiert, durchzuführen. Beim Speicherzugriff auf Speicherzellen, die einem Block zugeordnet sind, werden Blöcke bevorzugt, die sich in einem guten Zustand befinden, um somit eine gleichmäßige Alterung aller Blöcke des Speicherzellenfeldes zu gewährleisten.
- Wenn das Zugriffssignal eine Folge von Pulsen umfasst, ist eine geeignete Kenngröße die Anzahl der Pulse, die benötigt werden, um die gespeicherten Informationen in der Speicherzelle zu verändern. Diese Anzahl von Pulsen kann auf einfache Weise bestimmt werden, indem die Messeinrichtung als Zähler ausgebildet ist, um die Anzahl der benötigten Pulse zu bestimmen. Vorteilhafterweise ordnet die Zuordnungseinheit die Anzahl der benötigten Pulse von der Speicherzelle, die die meisten Pulse benötigt hat, als Zustandsparameter dem Block zu. Somit wird der Zustand des Blocks durch dessen schlechteste Zelle definiert.
- Vorteilhafterweise kann die Bestimmung dieses Wertes dadurch erfolgen, dass entweder die Anzahl der Pulse bestimmt wird, bis die zu ändernden Speicherzellen die gespeicherte Information verändert haben oder bis in allen Speicherzellen der gewünschte Speicherinhalt steht. Damit ergeben sich Freiheitsgrade bei der Realisierung der entsprechenden Detektionseinheiten.
- Um den Zustand aller Speicherzellen innerhalb des Blocks zu überprüfen und im Zustandsparameter zu berücksichtigen, ist es von Vorteil wenn die gespeicherte Information jeder Speicherzelle des Blocks verändert wird.
- Weiterbildungen können eine Vielzahl von Sektoren umfassen. Jeder Block ist einem der Sektoren zugeordnet. Die Speicheranordnung ist ausgebildet, alle Speicherzellen, die einem Sektor zugeordnet sind, zu löschen. Damit lassen sich alle Speicherzellen in den Sektoren, die üblicherweise mehr Speicherzellen als die Blöcke umfassen, gleichzeitig löschen, was die Zugriffszeit beim Löschen verringert. Das Löschen gleichbedeutend ist damit, dass in all diesen Speicherzellen dieselbe Information gespeichert wird. Zu diesem Zweck wird die in einer Gruppe von Speicherzellen gespeicherte Information dahingehend verändert, dass nach Durchführung der Veränderung in allen Speicherzellen des Sektors dieselbe Information gespeichert ist.
- Weitere Zustandsparameter können jedem Sektor zugeordnet werden. Somit erhöht sich die Flexibilität des Zugriffsverfahrens des Controllers, der dahingehend verändert werden kann, dass er die Blöcke für den Speicherzugriff basierend auf den Zustandsparametern der Blöcke und/oder der Sektoren auswählt.
- In einer vorteilhaften Weiterbildung können die Blöcke, wenn sie schadhafte Speicherzellen umfassen, einer Gruppe von schlechten Blöcken zugeordnet werden, auf deren Speicherzellen der Controller keinen Speicherzugriff durchführt. Somit ist die Funktionalität der Speicheranordnung auch beim Auftreten von schadhaften Speicherzellen in schlechten Blöcken während des Betriebs gewährleistet.
- Vorteilhafte Ausbildungen der Speicheranordnung umfassen NROM-Speicherzellen, um deren Vorteile hinsichtlich des geringen Platzbedarfs bei erhöhter Speicherkapazität zu nutzen.
- Ein Verfahren zum Betrieb einer Speicheranordnung, die ein Speicherzellenfeld mit einer Vielzahl von Speicherzellen umfasst, wobei jede Speicherzelle eine ausgewählte Zugriffskenngröße hat und ausgebildet ist, eine Information zu speichern, und wobei jede Speicherzelle einem aus einer Vielzahl von Blöcken zugeordnet ist, wobei das Verfahren umfasst:
- – Zuführen eines eine Folge von Pulsen umfassenden Zugriffssignals an die Speicherzellen, die einem Block aus der Vielzahl der Blöcke zugeordnet sind, um die gespeicherte Information einer Gruppe von Speicherzellen, die dem Block zugeordnet sind, zu verändern,
- – Identifizieren einer Anzahl von benötigten Pulsen im Zugriffssignal, um die gespeicherte Information der Speicherzellen zu verändern, als Zugriffskenngröße jeder Speicherzelle aus der Gruppe der Speicherzellen, die dem Block zugeordnet sind, in Erwiderung auf das Zugriffssignal,
- – Zuordnen eines Zustandsparameters basierend auf den identifizierten Zugriffskenngrößen zu dem Block, wobei ein Extremwert der identifizieren Zugriffskenngrößen der Speicherzellen, die dem Block zugeordnet sind, bestimmt wird.
- Dieses Verfahren erlaubt eine genauere Abschätzung des Zustandes der Blöcke als lediglich die Anzahl der Zugriffe zu zählen.
- Vorteilhafterweise umfasst das Zugriffssignal eine Folge von Pulsen, was einfach zu realisieren ist. Die Kenngröße der Speicherzelle ist in diesem Fall die Anzahl der Pulse, die benötigt werden, um die gespeicherte Information der Speicherzelle zu verändern. Diese Kenngröße kann leicht beim Speicherzugriff detektiert werden, indem ein Zähler die Anzahl der benötigten Pulse misst. Die Detektion der benötigten Pulse kann erfolgen, indem überprüft wird, ob die gespeicherte Information der Speicherzellen bereits verändert worden ist während die Anzahl der Pulse gezählt wird.
- Vorteilhafterweise basiert der Zustandsparameter auf einer jeweiligen Anzahl von Pulsen, die die Speicherzellen des Blockes zum Verändern ihrer gespeicherten Information benötigen. Der Zustandsparameter ist das Maximum dieser benötigten Pulse und wird folglich durch die Speicherzelle bestimmt, die die meisten Pulse zum Verändern ihrer gespeicherten Information benötigt. Wenn während eines Zugriffs nur auf einen Teil der Speicherzellen des Blocks zugegriffen wird, bezieht sich der Zustandsparameter auf die während dieses Zugriffs ermittelten Kenngrößen. Um die Güte aller Speicherzellen des Blocks zu überprüfen, ist vorteilhafterweise die Information in jeder der Speicherzellen des Blockes zu verändern.
- Vorteilhafterweise werden die Zustandsparameter in eine Liste eingetragen, die in der Zustandsspeichereinheit abgelegt wird. Nach jedem Speicherzugriff kann der entsprechende Eintrag für den Block in der Liste überschrieben werden, um den aktuellen Zustand des Blockes anzuzeigen. Alternativ kann zuvor ein Vergleich zwischen dem zugeordneten Zustandsparameter und dem entsprechenden Zustandsparameter, der in der Liste abgespeichert ist, durchgeführt werden und der Zustandsparameter in der Liste lediglich dann überschrieben werden, wenn der zugeordnete Zustandsparameter schlechter ist. Dieses Verfahren hat den Vorteil, dass, auch wenn während des Speicherzugriffs nicht auf alle Speicherzellen zugegriffen worden ist, stets die Information über die schlechteste Zelle, die den Zustandsparameter bestimmt, erhalten bleibt.
- Weiterbildungen des Verfahrens führen den Speicherzugriff derart durch, dass ein Block aus der Vielzahl der Blöcke ausgewählt wird und auf dessen Speicherzellen zugegriffen wird. Die Auswahl berücksichtigt die möglicherweise verschiedenen Alterungszustände der Blöcke. Vorzugsweise wird der Block mit dem besten Zustandsparameter gewählt, um eine gleichmäßige Alterung der Blöcke zu gewährleisten.
- In einer Weiterbildung des Verfahrens wird überprüft, ob die Anzahl der Pulse, die benötigt werden, um die gespeicherte Information zu verändern, größer sind als ein gegebener Wert. In diesem Fall wird angenommen, dass der entsprechende Block schadhafte Speicherzellen umfasst, und der Block wird einer Gruppe von schlechten Blöcken zugeordnet. Speicherzugriff wird nicht auf Blöcke, die dieser Gruppe zugeordnet sind, durchgeführt, weil deren Funktionalität nicht länger gewährleistet ist.
- Weitere vorteilhafte Ausgestaltungen der Erfindung sind in nebengeordneten Patentansprüchen angegeben.
- Nachfolgend wird die Erfindung unter Bezugnahme auf die Zeichnung anhand von Ausführungsbeispielen erklärt.
- Es zeigen:
-
1 ein Blockdiagramm mit einem Ausführungsbeispiel einer Speicheranordnung und -
2 ein Blockdiagramm einer Zuordnung von Einträgen in eine Zustandsspeichereinheit für das Ausführungsbeispiel in1 . -
1 zeigt ein Ausführungsbeispiel einer Speicheranordnung, die ein Speicherzellenfeld1 mit einer Vielzahl von Speicherzellen111 umfasst. Jede Speicherzelle111 ist einem aus einer Vielzahl von Blöcken15 zugeordnet. Des Weiteren ist jeder Block15 einem aus einer Vielzahl von Sektoren10 zugeordnet. Es ist möglich, dass der Sektor10 lediglich einen Block15 umfasst. - Jede Speicherzelle
110 ist ausgebildet, ein Bit oder mehrere Bits zu repräsentieren. Im Falle einer NROM-Speicherzelle kann jede Speicherzelle zwei Bits repräsentieren. Die Speicherzellen111 können viele Male elektrisch programmiert und gelöscht werden, aber ihre Lebensdauer ist durch Alterung begrenzt, die stark abhängt von der Anzahl der Programmier- und Löschzyklen, die bisher durchgeführt worden sind. - Ein Controller
3 führt den Speicherzugriff auf die Speicherzellen111 aus. Dieses umfasst Programmieren und Löschen. Das Löschen der Speicherzellen111 des Blockes15 impliziert, dass dieselbe Information, beispielsweise eine logische Eins oder eine logische Null, in jeder Speicherzelle111 des Blockes15 gespeichert wird. Im Falle von NROM-Speicherzellen, kann jede NROM-Speicherzelle dann zwei gleiche binäre Werte repräsentieren. Somit ist dieselbe Information in jeder Speicherzelle111 , die dem Block15 zugeordnet ist, gespeichert. Das Programmieren eines Blockes15 impliziert das Schreiben ausgewählter Informationen in Speicherzellen111 des Blockes15 . Die ausgewählte Information kann von Speicherzelle111 zu Speicherzelle111 verschieden sein. Das Programmieren kann durchgeführt werden, nachdem alle Speicherzellen111 , die dem Block15 zugeordnet sind, gelöscht wurden, indem die gespeicherte Information einer ausgewählten Gruppe von Speicherzellen111 geändert wird. Somit wird zunächst in alle Speicherzellen dieselbe Information geschrieben und dann die Information in einem Teil der Speicherzellen wieder verändert. - Normalerweise erfolgt der Speicherzugriff blockweise. Dies bedeutet, dass eine Gruppe von Bits oder Bytes in die Speicherzellen
111 desselben Blockes15 parallel geschrieben wird. Die Speicherzellen111 des Blockes15 können auch parallel gelöscht werden. Blöcke, die einem Sektor zugeordnet sind, werden parallel gelöscht. Somit werden die Speicherzellen blockweise programmiert und sektorweise gelöscht. Somit ist die Anzahl der Speicherzellen111 , die gleichzeitig gelöscht werden können, größer als die Anzahl der Speicherzellen111 , die parallel programmiert werden können. - Ein Zugriffssignal AS, umfassend ein Programmier- oder Löschsignal, wird an die Speicherzellen
111 des Blockes15 oder des Sektors10 angelegt, um diese zu programmieren beziehungsweise zu löschen. - Programmieren einer der Speicherzellen
111 wird durchgeführt, indem das Programmiersignal AS an die entsprechende Speicherzelle111 angelegt wird. Das Programmiersignal AS umfasst mehrere Pulse. Die Anzahl der Pulse, die benötigt werden, um die Speicherzelle111 zu programmieren, hängt vom Zustand dieser Speicherzelle111 ab. Die Anzahl der Pulse steigt mit zunehmender Alterung der Speicherzelle111 . - Ebenso wie Programmieren wird Löschen durchgeführt, indem das Löschsignal, das mehrere Pulse umfasst, angelegt wird. Der Schritt des Löschens kann durchgeführt werden, indem das Löschsignal lediglich an Speicherzellen
111 angelegt wird, deren gespeicherte Information verändert werden muss, damit alle Speicherzellen111 die gleiche Information speichern. Alternativ kann das Löschsignal an jede Speicherzelle111 , die dem Block15 oder dem Sektor10 zugeordnet ist, angelegt werden, was, falls erforderlich, zur Änderung der gespeicherten Information führt. Die Anzahl der Pulse, um die Speicherzelle111 zu löschen, hängt vom Zustand der Speicherzelle111 ab. Die Anzahl der benötigten Pulse nimmt mit zunehmender Anzahl der Löschzyklen, die bereits durchgeführt worden sind, zu. - Typischerweise wird der Speicherzugriff durchgeführt, indem zunächst die Speicherzellen
111 , die dem Sektor10 oder dem Block15 zugeordnet sind, gelöscht werden und dann die Speicherzellen111 , die dem Block15 zugeordnet sind, verändert werden, indem die gespeicherte Information in einer ausgewählten Gruppe von Speicherzellen111 verändert wird, um die gewünschten Informationen zu speichern. - Der Zustand der Speicherzellen
111 und ihr Grad der Alterung kann abgeschätzt werden durch die Anzahl der Pulse, die benötigt werden, um die Speicherzelle111 zu programmieren oder zu löschen. Diese Abschätzung ist präziser als lediglich die Anzahl der Programmier- oder Löschzyklen, die bereits durchgeführt worden sind, zu zählen. Der Anfangszustand der Speicherzellen111 und eine beschleunigte oder verlangsamte Alterung werden somit berücksichtigt. - Der Zustand des Blocks
15 wird angezeigt durch einen Zustandsparameter. Dieser basiert auf der gezählten Anzahl von Pulsen, die benötigt werden, um die Speicherzellen111 , die dem Block15 zugeordnet sind, zu programmieren oder zu löschen. Typischerweise wird der Block15 durch seine schlechteste Speicherzelle111 charakterisiert. Der Zustandsparameter ist das Maximum hinsichtlich der jeweiligen Anzahl von Pulsen, die benötigt werden, um die Speicherzellen110 des Blocks15 zu programmieren. Ein weiterer Zustandsparameter, der dem Block15 zugeordnet ist, kann die Anzahl der Pulse anzeigen, die benötigt werden, um die Speicherzellen111 , die dem Block15 zugeordnet sind, zu löschen. Da Löschen sektionsweise durchgeführt wird, ist es vorteilhaft, diesen weiteren Zustandsparameter einer Sektion10 , die mehrere Blöcke15 umfasst, zuzuordnen. - Eine Messeinheit
100 ist an die Speicherzellen111 und an das Zugriffssignal AS gekoppelt. Die Messeinheit100 ist ausgebildet, die Kenngröße jeder Speicherzelle111 in Erwiderung auf das Zugriffssignal AS zu identifizieren. Die Messeinheit100 umfasst weiterhin einen Zähler101 , der ausgebildet ist zu detektieren, wenn ein Puls des Zugriffssignals AS auftritt, und die Anzahl der Pulse zu zählen. Die Messeinheit100 identifiziert die Anzahl der Pulse, die benötigt werden, um die gespeicherte Information zu verändern, beispielsweise mittels einer Detektion, ob die Information der Speicherellen111 , die dem Block15 zugeordnet sind, die gewünschte Information, die zu programmieren ist, speichert. Alternativ können Mittel zum Detektieren, ob die gespeicherte Information verändert worden ist, vorgesehen sein. Somit kann das Identifizieren umfassen, zu messen, ob die gespeicherte Information in den zu programmierenden Speicherzellen111 verändert worden ist, oder ob die gespeicherte Information in den zu programmierenden Speicherzellen111 die gewünschte Information umfasst. Im Fall des Löschens kann die Detektion umfassen zu messen, ob jede Speicherzelle111 des Blockes15 oder des Sektors10 dieselbe Information speichert. Es ist anzumerken, dass die Kenngröße der Speicherzellen111 , deren Information nicht verändert werden soll, nicht identifiziert werden kann. - Eine Zuordnungseinheit
150 , die an die Messeinheit100 gekoppelt ist, ist ausgebildet, Zustandsparameter jedem Block15 zuzuordnen. Der Zustandsparameter wird bestimmt als maximale Anzahl der Pulse, die benötigt werden um die gespeicherte Information der Speicherzellen111 , die dem Block15 zugeordnet sind, zu verändern. Zu diesem Zweck sind Mittel zum Detektieren vorgesehen, ob das Programmieren oder Löschen einer Gruppe von Speicherzellen111 , deren Information zu verändern ist, bereits durchgeführt worden ist. In diesem Fall wird der Zähler101 gestoppt, obwohl weitere Pulse auftreten können, und diese gezählte Anzahl von Pulsen im Zähler wird beispielsweise in einem Register151 bereitgestellt. - Die Messeinheit
100 kann die Anzahl der Pulse detektieren, um jede der Speicherzellen111 , die dem Block15 oder dem Sektor10 zugeordnet ist, zu programmieren oder zu löschen. Die Zuordnungseinheit150 ordnet den Zustandsparametern215 ,210 (wie in2 gezeigt wird) das Maximum hinsichtlich der jeweiligen Anzahl von benötigten Pulsen zu. - Alternative Zuordnungen der Zustandsparameter sind denkbar. Beispielsweise kann der Zustandsparameter die durchschnittliche Anzahl von benötigten Pulsen angeben.
- Jedes Mal wenn der Speicherzugriff auf die Speicherzellen
111 , die dem Block15 oder dem Sektor10 zugeordnet sind, ausgeführt wird, können deren Kenngrößen identifiziert werden. Somit kann die Zuordnung des entsprechenden Zustandsparameters215 ,210 nach jedem Speicherzugriff auf den Block15 oder den Sektor10 durchgeführt werden. - Die Zuordnung des Zustandsparameters hängt lediglich von den Speicherzellen
111 ab, die eine Information speichern, die verändert werden soll. Somit gibt der Zustandsparameter den Zustand einer Gruppe von Speicherzellen111 , die dem Block15 zugeordnet sind, an. Die Zusammensetzung dieser Gruppe variiert in Abhängigkeit von den Speicherzellen111 die programmiert oder gelöscht werden. Daher kann der Zustandsparameter215 auch variieren und gibt einen durchschnittlichen Zustand des Blockes15 an. - Der Zustand jeder Speicherzelle
111 , die dem Block15 zugeordnet ist, wird betrachtet, wenn ein Testmodus implementiert ist. Der Testmodus umfasst das Löschen aller Speicherzellen111 des Speicherzellenfeldes1 und dann das Programmieren jeder Speicherzelle111 des Speicherzellenfeldes1 . Somit berücksichtigen die zugeordneten Zustandsparameter den Zustand jeder Speicherzelle111 in jedem Block15 . Natürlich ist es auch denkbar, im Rahmen des Testmodus lediglich alle Speicherzellen111 innerhalb eines Blockes15 beziehungsweise Sektors10 oder eines Teils der Blöcke15 beziehungsweise der Sektoren10 zu löschen und zu programmieren, um diesen die entsprechenden Zustandsparameter zuzuordnen. - Die Speicheranordnung umfasst des Weiteren eine Zustandsspeichereinheit
2 , die an den Controller3 gekoppelt ist. Die Zustandsspeichereinheit2 ist ausgebildet, um eine Liste22 der Zustandsparameter eines jeden Blockes15 zu umfassen. Die Liste22 ist in2 dargestellt. - Vorzugsweise repräsentiert ein erster Zustandsparameter
215 die maximale Anzahl von Pulsen, die benötigt werden, um die Speicherzellen111 des Blockes15 zu programmieren, und ein zweiter Zustandsparameter210 repräsentiert die maximale Anzahl von Pulsen, die benötigt werden, um die Speicherzellen111 , die dem Block15 zugeordnet sind, zu löschen. Alternativ repräsentiert der zweite Zustandsparameter210 die maximale Anzahl von Pulsen, die benötigt werden, um die Speicherzellen111 , die dem Sektor zugeordnet sind, zu löschen. -
2 zeigt ein Blockdiagramm mit der Zuordnung der Einträge der Zustandsspeichereinheit2 . Die Liste22 enthält Einträge215 , die jedem Block15 zugeordnet sind, und Einträge210 , die jedem Sektor10 zugeordnet sind. Die Zustandsparameter210 ,215 basieren auf verschiedenen Wegen, den Speicherzugriff durchzuführen. Die Einträge215 sind Blöcken15 zugeordnet und werden generiert in Erwiderung auf das Programmieren. Die Einträge210 sind Sektoren10 zugeordnet und werden generiert in Erwiderung auf das Löschen. - Die Zustandsspeichereinheit
2 kann als Teil des Speicherzellenfeldes1 ausgebildet sein oder als separate Speichereinheit. Sie kann flüchtigen Speicher umfassen. In diesem Fall werden die Einträge der Liste22 vor dem normalen Betriebsmodus der Speicheranordnung eingetragen, beispielsweise indem eine Testroutine durchgeführt wird. Diese Testroutine umfasst, jede Speicherzelle111 des Speicherzellenfeldes1 zu löschen und zu programmieren, und die Zustandsparameter210 ,215 zuzuordnen. Die Zustandsspeichereinheit2 kann nichtflüchtigen Speicher umfassen, insbesondere wenn die Speicheranordnung NROM-Speicherzellen umfasst. In diesem Fall muss die Testroutine lediglich einmal durchgeführt werden. - Vorzugsweise umfasst die Speicheranordnung einen Chip mit dem Speicherzellenfeld
1 und der Zustandsspeichereinheit2 , auf die durch einen externen Controller3 zugegriffen werden kann. - Der Controller
3 ist an die Zustandsspeichereinheit2 gekoppelt, um auf die Liste22 zuzugreifen oder um die Liste22 zu laden. Der Controller3 führt den Speicherzugriff durch, indem die Speicherzellen111 programmiert oder gelöscht werden. Die Auswahl des Blockes15 für den Speicherzugriff wird durch den Controller3 derart durchgeführt, dass dabei die Wear-Leveling-Technik basierend auf der Liste22 verwendet wird. Dies bedeutet, dass der Schritt zur Auswahl des Blockes15 auf dem Zustand des Blockes15 und/oder dem Zustand des Sektors10 , dem der Block15 zugeordnet ist, basiert. Die Zustände des Blockes15 beziehungsweise des Sektors10 werden durch ihre Zustandsparameter210 ,215 angezeigt und nicht lediglich durch die Anzahl von Programmier- oder Löschzyklen, die zuvor durchgeführt worden sind. Beispielsweise führt der Controller3 den Speicherzugriff auf den Block15 aus, der den besten Zustandsparameter215 hat. - Die Zustandsparameter
210 ,215 können in der Liste22 jedes Mal, wenn der Speicherzugriff durchgeführt wird, als aktuelle Indikatoren des Alterungszustandes gespeichert werden. Auf diese Liste22 kann durch den Controller jederzeit, beispielsweise im Rahmen eines speziellen Testmodus des Controllers3 , zugegriffen werden. Alternativ kann der Testmodus dahingehend modifiziert werden, dass alle Speicherzellen111 hinsichtlich ihrer Funktionalität getestet werden und dann die daraus resultierenden Zustandsparameter210 ,215 in die Liste22 der Zustandsspeichereinheit2 eingetragen werden. Die Zustandsparameter210 ,215 werden während des normalen Betriebsmodus der Speicheranordnung zugeordnet und können die Zustandsparameter, die in der Liste22 enthalten sind, lediglich überschreiben, wenn letztere schlechter sind. - Das Markieren schlechter Blöcke wird basierend auf der Anzahl der Pulse, die nötig sind, um die Speicherzellen
111 des Blockes15 zu programmieren oder zu löschen, durchgeführt. Wenn eine gegebene Anzahl von Pulsen, beispielsweise 30, während des Programmierens oder Löschens überschritten wird, wird der Block15 als schlechter Block markiert. Falls die ermittelte Anzahl der Pulse dieser gegebenen Anzahl von erlaubten Pulsen näher kommt, sollten andere Blöcke im Rahmen der Wear-Leveling-Technik ausgewählt werden. Somit ist die Speicherkapazität der Speicheranordnung während der gesamten Lebenszeit der Speicheranordnung verfügbar. - Bezugszeichenliste
-
- 1
- Speicherzellenfeld
- 2
- Zustandsspeichereinheit
- 3
- Controller
- 10
- Sektor
- 15
- Block
- 22
- Liste
- 100
- Messeinheit
- 101
- Zähler
- 111
- Speicherzelle
- 150
- Zuordnungseinheit
- 115
- Register
- 110, 215
- Zustandsparameter
- AS
- Zugriffssignal
Claims (31)
- Speicheranordnung, umfassend: – ein Speicherzellenfeld (
1 ), das eine Vielzahl von Speicherzellen (111 ) umfasst, wobei jede Speicherzelle (111 ) eine ausgewählte Zugriffskenngröße hat und ausgebildet ist, eine Information zu speichern, und wobei auf jede Speicherzelle (111 ) durch ein Zugriffssignal (AS), das eine Folge von Pulsen umfasst, zugreifbar ist, um die gespeicherte Information zu verändern, und jede Speicherzelle (111 ) einem aus einer Vielzahl von Blöcken (15 ) zugeordnet ist, – eine Messeinheit (100 ), die an das Speicherzellenfeld (1 ) gekoppelt ist und die ausgebildet ist, eine Anzahl von benötigten Pulsen im Zugriffssignal (AS) zu identifizieren, um die gespeicherte Information der Speicherzelle (111 ) zu verändern, und die ausgewählte Zugriffskenngröße jeder Speicherzelle (111 ) in Erwiderung auf das Zugriffssignal (AS) zu identifizieren, und – eine Zuordnungseinheit (150 ), die an die Messeinheit (100 ) gekoppelt ist und die ausgebildet ist, einen Zustandsparameter (215 ) jedem Block (15 ) zuzuordnen, wobei der Zustandsparameter (215 ) ein Extremwert der identifizierten Zugriffskenngrößen der Speicherzellen (111 ), die dem Block (15 ) zugeordnet sind, ist. - Speicheranordnung nach Anspruch 1 dadurch gekennzeichnet, dass eine Zustandsspeichereinheit (
2 ) an die Zuordnungseinheit (150 ) gekoppelt ist, die ausgebildet ist, die Zustandsparameter (215 ), die den Blöcken (15 ) zugeordnet sind, zu speichern. - Speicheranordnung nach Anspruch 2 dadurch gekennzeichnet, dass ein Controller (
3 ) an das Speicherzellenfeld (1 ) und die Zustandsspeichereinheit (2 ) gekoppelt ist, der ausgebildet ist, basierend auf den Zustandsparametern (215 ), die in der Zustandsspeichereinheit (2 ) gespeichert sind, einen Block (15 ) aus der Vielzahl der Blöcke (15 ) auszuwählen, und einen Speicherzugriff auf die Speicherzellen (111 ), die dem ausgewählten Block (15 ) zugeordnet sind, auszuführen. - Speicheranordnung nach Anspruch 1 oder 2, dadurch gekennzeichnet, dass die Zugriffskenngröße von einem Alterungszustand der Speicherzelle (
111 ) abhängig ist. - Speicheranordnung nach einem der Ansprüche 1 bis 4, dadurch gekennzeichnet, dass die Messeinheit (
100 ) ausgebildet ist, bei der Speicherzelle (111 ) die Veränderung der gespeicherten Information der Speicherzelle (111 ) in Erwiderung auf das Zugriffssignal (AS) zu detektieren. - Speicheranordnung nach einem der Ansprüche 1 bis 4, dadurch gekennzeichnet, dass die Zuordnungseinheit (
150 ) ausgebildet ist, eine weitere Anzahl von benötigten Pulsen zu bestimmen, um die gespeicherten Informationen jeder Speicherzelle einer ausgewählten Gruppe von Speicherzellen (111 ), die dem Block (15 ) zugeordnet sind, zu verändern. - Speicheranordnung nach Anspruch 1, dadurch gekennzeichnet, dass die Zuordnungseinheit (
150 ) ausgebildet ist, jeweils die Anzahl von benötigten Pulsen für jede Speicherzelle einer ausgewählten Gruppe von Speicherzellen (111 ), die dem Block (15 ) zugeordnet sind, zu identifizieren, und davon das Maximum zu bestimmen. - Speicheranordnung nach Anspruch 6 oder 7, dadurch gekennzeichnet, dass die ausgewählte Gruppe von Speicherzellen (
111 ) jede Speicherzelle (111 ), die dem Block (15 ) zugeordnet ist, umfasst. - Speicheranordnung nach Anspruch 1 oder 2, dadurch gekennzeichnet, dass die Speicheranordnung ausgebildet ist, die gespeicherten Informationen einer ausgewählten Gruppe von Speicherzellen (
111 ), die dem Block (15 ) zugeordnet sind, derart zu verändern, dass dieselbe Information in jeder Speicherzelle (111 ), die dem Block (15 ) zugeordnet ist, gespeichert ist. - Speicheranordnung nach Anspruch 1 oder 2, dadurch gekennzeichnet, dass jeder Block (
15 ) einem Sektor (10 ) aus einer Vielzahl von Sektoren (10 ) zugeordnet ist, und die Speicheranordnung ausgebildet ist, die gespeicherten Informationen einer ausgewählten Gruppe von Speicherzellen (111 ), die dem Sektor (10 ) zugeordnet sind, derart zu verändern, dass dieselbe Information in jeder Speicherzelle (111 ), die dem Sektor (10 ) zugeordnet ist, gespeichert ist. - Speicheranordnung nach Anspruch 10, dadurch gekennzeichnet, dass die Zuordnungseinheit (
150 ) ausgebildet ist, einen weiteren Zustandsparameter (210 ) jedem Sektor (10 ) zuzuordnen, und die Zustandsspeichereinheit (2 ) ausgebildet ist, die weiteren Zustandsparameter (210 ), die den Sektoren (10 ) zugeordnet sind, zu speichern. - Speicheranordnung nach Anspruch 11, dadurch gekennzeichnet, dass ein Controller (
3 ) an die Zustandsspeichereinheit (2 ) und das Speicherzellenfeld (1 ) gekoppelt ist und der Controller (3 ) ausgebildet ist, basierend auf den Blöcken (10 ) und/oder Sektoren (10 ) zugeordneten Zustandsparametern (210 ,215 ), die in der Zustandsspeichereinheit (2 ) gespeichert sind, einen aus der Vielzahl der Blöcke (15 ) auszuwählen, und einen Speicherzugriff auf die Speicherzellen (111 ), die dem ausgewählten Block (15 ) zugeordnet sind, auszuführen. - Speicheranordnung nach Anspruch 12, dadurch gekennzeichnet, dass wenigstens einer der Blöcke (
15 ) einer Gruppe von als schlecht charakterisierten Blöcken zugeordnet ist, wobei der Zustandsparameter (210 ,215 ), der diesem Block (15 ) zugeordnet ist, größer als ein gegebener Wert ist. - Speicheranordnung nach Anspruch 13, dadurch gekennzeichnet, dass der Controller (
3 ) ausgebildet ist, einen Speicherzugriff nur auf Speicherzellen (111 ) auszuführen, die Blöcken zugeordnet sind, welche nicht der Gruppe der als schlecht charakterisierten Blöcke zugeordnet sind. - Speicheranordnung nach Anspruch 1, dadurch gekennzeichnet, dass die Speicherzellen (
111 ) NROM-Speicherzellen umfassen. - Verfahren zum Betrieb einer Speicheranordnung, die ein Speicherzellenfeld (
1 ) mit einer Vielzahl von Speicherzellen (111 ) umfasst, wobei jede Speicherzelle (111 ) eine ausgewählte Zugriffskenngröße hat und ausgebildet ist, eine Information zu speichern, und wobei jede Speicherzelle (111 ) einem aus einer Vielzahl von Blöcken (15 ) zugeordnet ist, wobei das Verfahren umfasst: – Zuführen eines eine Folge von Pulsen umfassenden Zugriffssignals (AS) an die Speicherzellen (111 ), die einem Block (15 ) aus der Vielzahl der Blöcke (15 ) zugeordnet sind, um eine gespeicherte Information einer Gruppe von Speicherzellen (111 ), die dem Block (15 ) zugeordnet sind, zu verändern, – Identifizieren einer Anzahl von benötigten Pulsen im Zugriffssignal (AS), um die gespeicherte Information der Speicherzellen (111 ) zu verändern, als Zugriffskenngröße jeder Speicherzelle (111 ) aus der Gruppe der Speicherzellen (111 ), die dem Block (15 ) zugeordnet sind, in Erwiderung auf das Zugriffssignal (AS), – Zuordnen eines Zustandsparameters (215 ) basierend auf den identifizierten Zugriffskenngrößen zu dem Block (15 ), wobei ein Extremwert der identifizieren Zugriffskenngrößen der Speicherzellen (111 ), die dem Block zugeordnet sind, bestimmt wird. - Verfahren gemäß Anspruch 16, dadurch gekennzeichnet, dass der Zustandsparameter (
215 ) in eine Liste in einer Zustandsspeichereinheit (2 ) eingetragen wird. - Verfahren nach Anspruch 16 oder 17, dadurch gekennzeichnet, dass das Zuordnen des Zustandsparameters (
215 ) zum Block (15 ) eine Bestimmung der Anzahl der benötigten Pulse umfasst, um die gespeicherten Informationen jeder Speicherzelle der Gruppe von Speicherzellen (111 ), die dem Block (15 ) zugeordnet sind, zu verändern. - Verfahren nach einem der Ansprüche 16 bis 18, dadurch gekennzeichnet, dass das Identifizieren der Zugriffskenngröße der Speicherzelle (
111 ) ein Zählen der angelegten Pulse umfasst, um die der gespeicherten Information der Speicherzelle (111 ) zu verändern. - Verfahren nach Anspruch 19, dadurch gekennzeichnet, dass das Zuordnen des Zustandsparameters (
215 ) ein Detektieren der Anzahl der benötigten Pulse umfasst, um die gespeicherten Informationen jeder Speicherzelle (111 ) aus der Gruppe der Speicherzellen (111 ) zu verändern. - Verfahren nach Anspruch 16 oder 17, dadurch gekennzeichnet, dass die Gruppe der Speicherzellen (
111 ) jede Speicherzelle (111 ), die dem Block (15 ) zugeordnet ist, umfasst. - Verfahren nach Anspruch 16 oder 17, dadurch gekennzeichnet, dass die Gruppe der Speicherzellen (
111 ) dahingehend ausgewählt wird, dass in jeder Speicherzelle (111 ), die dem Block (15 ) zugeordnet ist, die selbe Information gespeichert ist, nachdem die gespeicherten Informationen der Gruppe der Speicherzellen (111 ) verändert worden ist. - Verfahren nach Anspruch 17, dadurch gekennzeichnet, dass jedem Block (
15 ) ein entsprechender Zugriffparameter (215 ) zugeordnet wird, und dieser Zugriffparameter (215 ) in die Liste (22 ) eingetragen werden. - Verfahren nach Anspruch 17, dadurch gekennzeichnet, dass die Liste (
22 ) wenigstens einen Zustandsparameter (215 ) umfasst und beim Eintragen der zugeordneten Zustandsparameter (215 ) die entsprechenden Zustandsparameter (215 ), die in der Liste (22 ) gespeichert sind, überschrieben werden. - Verfahren nach Anspruch 24, dadurch gekennzeichnet, dass die Zustandsparameter (
215 ), die in der Liste (22 ) gespeichert sind, überschrieben werden, nachdem ein Vergleich zwischen dem zugeordneten Zustandsparameter (215 ) und dem Zustandsparameter, der in der Liste (22 ) gespeichert ist, durchgeführt worden ist. - Verfahren nach Anspruch 16 oder 17, dadurch gekennzeichnet, dass jeder Block (
15 ) einem aus einer Vielzahl von Sektoren (10 ) zugeordnet ist, und dass das Verfahren umfasst: – Zuordnen eines weiteren Zustandsparameters (215 ) zu einem aus der Vielzahl der Sektoren (10 ), wobei das Zuordnen auf den identifizierten Zugriffskenngrößen der Speicherzellen (111 ), die zu diesem Sektor (10 ) zugeordnet sind, basiert, – Eintragen des weiteren Zustandsparameters (210 ) in die Liste (22 ). - Verfahren nach Anspruch 16 oder 17, dadurch gekennzeichnet, dass wenigstens einer aus der Vielzahl der Blöcke (
15 ) einer Gruppe von als schlecht charakterisierten Blöcken zugeordnet ist, wenn die Zugriffskenngröße von wenigstens einer der Speicherzellen (111 ), die diesem Block (15 ) zugeordnet sind, größer als ein gegebener Wert ist. - Verfahren nach Anspruch 16, 17 oder 26, dadurch gekennzeichnet, dass es folgende Schritte umfasst: – Auswählen basierend auf den Einträgen (
215 ,210 ) in der Liste (22 ) eines Blocks (15 ) aus der Vielzahl der Blöcke (15 ) und – Ausführen eines Speicherzugriffs auf Speicherzellen (111 ), die diesem Block (15 ) zugeordnet sind. - Verfahren nach Anspruch 28, dadurch gekennzeichnet, dass die gespeicherte Information einer Gruppe von Speicherzellen (
111 ), die diesem Block (15 ) zugeordnet sind, verändert wird. - Verfahren nach Anspruch 28, dadurch gekennzeichnet, dass der Block basierend auf den besten Zustandsparametern (
210 ,215 ) der Liste (22 ) ausgewählt wird. - Verfahren nach Anspruch 28, dadurch gekennzeichnet, dass wenigstens einer aus der Vielzahl der Blöcke einer Gruppe von als schlecht charakterisierten Blöcken zugeordnet ist und der Speicherzugriff lediglich auf Speicherzellen (
111 ) durchgeführt wird, die Blöcken (15 ) zugeordnet sind, die nicht der Gruppe der als schlecht charakterisierten Blöcke zugeordnet sind.
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US11/166,788 US7283395B2 (en) | 2005-06-24 | 2005-06-24 | Memory device and method for operating the memory device |
| US11/166,788 | 2005-06-24 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| DE102005037037A1 DE102005037037A1 (de) | 2007-01-04 |
| DE102005037037B4 true DE102005037037B4 (de) | 2016-12-29 |
Family
ID=37545136
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| DE102005037037.3A Expired - Fee Related DE102005037037B4 (de) | 2005-06-24 | 2005-08-05 | Speicheranordnung und Verfahren zum Betreiben der Speicheranordnung |
Country Status (2)
| Country | Link |
|---|---|
| US (1) | US7283395B2 (de) |
| DE (1) | DE102005037037B4 (de) |
Families Citing this family (53)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US7502921B2 (en) * | 2005-08-02 | 2009-03-10 | Sandisk Corporation | Situation sensitive memory performance |
| US8060798B2 (en) | 2007-07-19 | 2011-11-15 | Micron Technology, Inc. | Refresh of non-volatile memory cells based on fatigue conditions |
| US7636258B2 (en) * | 2007-12-12 | 2009-12-22 | Qimonda Flash Gmbh | Integrated circuits, memory controller, and memory modules |
| US8621137B2 (en) | 2007-12-27 | 2013-12-31 | Sandisk Enterprise Ip Llc | Metadata rebuild in a flash memory controller following a loss of power |
| US7872929B2 (en) * | 2009-04-28 | 2011-01-18 | Lsi Corporation | Accessing memory cells in a memory circuit |
| US8495281B2 (en) * | 2009-12-04 | 2013-07-23 | International Business Machines Corporation | Intra-block memory wear leveling |
| US8793543B2 (en) | 2011-11-07 | 2014-07-29 | Sandisk Enterprise Ip Llc | Adaptive read comparison signal generation for memory systems |
| KR101966858B1 (ko) * | 2012-04-24 | 2019-04-08 | 삼성전자주식회사 | 휘발성 메모리 장치의 동작 방법, 휘발성 메모리 장치 및 메모리 시스템의 제어 방법 |
| US9699263B1 (en) | 2012-08-17 | 2017-07-04 | Sandisk Technologies Llc. | Automatic read and write acceleration of data accessed by virtual machines |
| US9501398B2 (en) | 2012-12-26 | 2016-11-22 | Sandisk Technologies Llc | Persistent storage device with NVRAM for staging writes |
| US9239751B1 (en) | 2012-12-27 | 2016-01-19 | Sandisk Enterprise Ip Llc | Compressing data from multiple reads for error control management in memory systems |
| US9612948B2 (en) | 2012-12-27 | 2017-04-04 | Sandisk Technologies Llc | Reads and writes between a contiguous data block and noncontiguous sets of logical address blocks in a persistent storage device |
| US9454420B1 (en) | 2012-12-31 | 2016-09-27 | Sandisk Technologies Llc | Method and system of reading threshold voltage equalization |
| US9870830B1 (en) | 2013-03-14 | 2018-01-16 | Sandisk Technologies Llc | Optimal multilevel sensing for reading data from a storage medium |
| US9367246B2 (en) | 2013-03-15 | 2016-06-14 | Sandisk Technologies Inc. | Performance optimization of data transfer for soft information generation |
| US9236886B1 (en) | 2013-03-15 | 2016-01-12 | Sandisk Enterprise Ip Llc | Universal and reconfigurable QC-LDPC encoder |
| US9244763B1 (en) | 2013-03-15 | 2016-01-26 | Sandisk Enterprise Ip Llc | System and method for updating a reading threshold voltage based on symbol transition information |
| US9092350B1 (en) | 2013-03-15 | 2015-07-28 | Sandisk Enterprise Ip Llc | Detection and handling of unbalanced errors in interleaved codewords |
| US9136877B1 (en) | 2013-03-15 | 2015-09-15 | Sandisk Enterprise Ip Llc | Syndrome layered decoding for LDPC codes |
| US9159437B2 (en) | 2013-06-11 | 2015-10-13 | Sandisk Enterprise IP LLC. | Device and method for resolving an LM flag issue |
| US9384126B1 (en) | 2013-07-25 | 2016-07-05 | Sandisk Technologies Inc. | Methods and systems to avoid false negative results in bloom filters implemented in non-volatile data storage systems |
| US9524235B1 (en) | 2013-07-25 | 2016-12-20 | Sandisk Technologies Llc | Local hash value generation in non-volatile data storage systems |
| US9639463B1 (en) | 2013-08-26 | 2017-05-02 | Sandisk Technologies Llc | Heuristic aware garbage collection scheme in storage systems |
| US9361221B1 (en) | 2013-08-26 | 2016-06-07 | Sandisk Technologies Inc. | Write amplification reduction through reliable writes during garbage collection |
| US9442662B2 (en) | 2013-10-18 | 2016-09-13 | Sandisk Technologies Llc | Device and method for managing die groups |
| US9298608B2 (en) | 2013-10-18 | 2016-03-29 | Sandisk Enterprise Ip Llc | Biasing for wear leveling in storage systems |
| US9436831B2 (en) | 2013-10-30 | 2016-09-06 | Sandisk Technologies Llc | Secure erase in a memory device |
| US9263156B2 (en) | 2013-11-07 | 2016-02-16 | Sandisk Enterprise Ip Llc | System and method for adjusting trip points within a storage device |
| US9244785B2 (en) | 2013-11-13 | 2016-01-26 | Sandisk Enterprise Ip Llc | Simulated power failure and data hardening |
| US9703816B2 (en) | 2013-11-19 | 2017-07-11 | Sandisk Technologies Llc | Method and system for forward reference logging in a persistent datastore |
| US9520197B2 (en) | 2013-11-22 | 2016-12-13 | Sandisk Technologies Llc | Adaptive erase of a storage device |
| US9520162B2 (en) | 2013-11-27 | 2016-12-13 | Sandisk Technologies Llc | DIMM device controller supervisor |
| US9582058B2 (en) | 2013-11-29 | 2017-02-28 | Sandisk Technologies Llc | Power inrush management of storage devices |
| US9235245B2 (en) | 2013-12-04 | 2016-01-12 | Sandisk Enterprise Ip Llc | Startup performance and power isolation |
| US9129665B2 (en) | 2013-12-17 | 2015-09-08 | Sandisk Enterprise Ip Llc | Dynamic brownout adjustment in a storage device |
| US9703636B2 (en) | 2014-03-01 | 2017-07-11 | Sandisk Technologies Llc | Firmware reversion trigger and control |
| US9454448B2 (en) | 2014-03-19 | 2016-09-27 | Sandisk Technologies Llc | Fault testing in storage devices |
| US9390814B2 (en) | 2014-03-19 | 2016-07-12 | Sandisk Technologies Llc | Fault detection and prediction for data storage elements |
| US9448876B2 (en) | 2014-03-19 | 2016-09-20 | Sandisk Technologies Llc | Fault detection and prediction in storage devices |
| US9626400B2 (en) | 2014-03-31 | 2017-04-18 | Sandisk Technologies Llc | Compaction of information in tiered data structure |
| US9626399B2 (en) | 2014-03-31 | 2017-04-18 | Sandisk Technologies Llc | Conditional updates for reducing frequency of data modification operations |
| US9390021B2 (en) | 2014-03-31 | 2016-07-12 | Sandisk Technologies Llc | Efficient cache utilization in a tiered data structure |
| US9697267B2 (en) | 2014-04-03 | 2017-07-04 | Sandisk Technologies Llc | Methods and systems for performing efficient snapshots in tiered data structures |
| US10114557B2 (en) | 2014-05-30 | 2018-10-30 | Sandisk Technologies Llc | Identification of hot regions to enhance performance and endurance of a non-volatile storage device |
| US10656840B2 (en) | 2014-05-30 | 2020-05-19 | Sandisk Technologies Llc | Real-time I/O pattern recognition to enhance performance and endurance of a storage device |
| US10656842B2 (en) | 2014-05-30 | 2020-05-19 | Sandisk Technologies Llc | Using history of I/O sizes and I/O sequences to trigger coalesced writes in a non-volatile storage device |
| US10146448B2 (en) | 2014-05-30 | 2018-12-04 | Sandisk Technologies Llc | Using history of I/O sequences to trigger cached read ahead in a non-volatile storage device |
| US9703491B2 (en) | 2014-05-30 | 2017-07-11 | Sandisk Technologies Llc | Using history of unaligned writes to cache data and avoid read-modify-writes in a non-volatile storage device |
| US10162748B2 (en) | 2014-05-30 | 2018-12-25 | Sandisk Technologies Llc | Prioritizing garbage collection and block allocation based on I/O history for logical address regions |
| US10372613B2 (en) | 2014-05-30 | 2019-08-06 | Sandisk Technologies Llc | Using sub-region I/O history to cache repeatedly accessed sub-regions in a non-volatile storage device |
| US9652381B2 (en) | 2014-06-19 | 2017-05-16 | Sandisk Technologies Llc | Sub-block garbage collection |
| US9443601B2 (en) | 2014-09-08 | 2016-09-13 | Sandisk Technologies Llc | Holdup capacitor energy harvesting |
| KR102267046B1 (ko) * | 2017-03-29 | 2021-06-22 | 삼성전자주식회사 | 스토리지 장치 및 배드 블록 지정 방법 |
Citations (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2005010638A2 (en) * | 2003-07-30 | 2005-02-03 | M-Systems Flash Disk Pioneers Ltd. | Method and system for optimizing reliability and performance of programming data in non-volatile memory devices |
Family Cites Families (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH08137634A (ja) * | 1994-11-09 | 1996-05-31 | Mitsubishi Electric Corp | フラッシュディスクカード |
| US6768165B1 (en) | 1997-08-01 | 2004-07-27 | Saifun Semiconductors Ltd. | Two bit non-volatile electrically erasable and programmable semiconductor memory cell utilizing asymmetrical charge trapping |
| JP3940544B2 (ja) * | 2000-04-27 | 2007-07-04 | 株式会社東芝 | 不揮発性半導体メモリのベリファイ方法 |
| US6345001B1 (en) * | 2000-09-14 | 2002-02-05 | Sandisk Corporation | Compressed event counting technique and application to a flash memory system |
| JP2003242787A (ja) * | 2002-02-14 | 2003-08-29 | Mitsubishi Electric Corp | 不揮発性半導体記憶装置 |
| JP4050555B2 (ja) * | 2002-05-29 | 2008-02-20 | 株式会社東芝 | 不揮発性半導体記憶装置およびそのデータ書き込み方法 |
-
2005
- 2005-06-24 US US11/166,788 patent/US7283395B2/en not_active Expired - Fee Related
- 2005-08-05 DE DE102005037037.3A patent/DE102005037037B4/de not_active Expired - Fee Related
Patent Citations (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2005010638A2 (en) * | 2003-07-30 | 2005-02-03 | M-Systems Flash Disk Pioneers Ltd. | Method and system for optimizing reliability and performance of programming data in non-volatile memory devices |
Also Published As
| Publication number | Publication date |
|---|---|
| DE102005037037A1 (de) | 2007-01-04 |
| US7283395B2 (en) | 2007-10-16 |
| US20060291301A1 (en) | 2006-12-28 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| DE102005037037B4 (de) | Speicheranordnung und Verfahren zum Betreiben der Speicheranordnung | |
| DE60213620T2 (de) | Nichtflüchtiger speicher mit blocklöschung | |
| DE4207934C2 (de) | Nichtflüchtige Halbleiterspeichervorrichtung und Programmierverfahren für eine nichtflüchtige Halbleiterspeichervorrichtung | |
| DE19851813A1 (de) | System und Verfahren zum Bewerten der Abnutzung eines Flash-Speichers | |
| DE68929389T2 (de) | Speichersystem und Verfahren zu seinem Gebrauch | |
| DE602004011097T2 (de) | Flash-speicherdatenkorrektur- und scrub-techniken | |
| DE69810270T2 (de) | Differentielle flash-speicherzelle und betriebsverfahren dafür | |
| DE69431795T2 (de) | Massenspeicherarchitektur mit flash-speicher | |
| DE602004013347T2 (de) | Verfahren zum identifizieren nichtflüchtiger speicherelmente mit schlechter subschwellensteigung oder schwacher transkonduktanz | |
| DE69625520T2 (de) | Mehrfaches schreiben pro einzel-löschung für einen nichtflüchtigen speicher | |
| DE4433098C2 (de) | Halbleiter-Permanentspeichervorrichtung | |
| DE102019123709A1 (de) | Verwendung verschachtelter schreibvorgänge zur trennung von die-ebenen | |
| DE102017120325A1 (de) | Nichtflüchtiger Arbeitsspeicher mit intelligenter Temperaturerfassung und lokaler Drosselung | |
| DE102005045031A1 (de) | Programmierverfahren und Programmierwiederaufnahmeverfahren für ein nichtflüchtiges Speicherbauelement | |
| DE112008001151B4 (de) | Mehrbitprogrammiervorrichtung und Verfahren zum Mehrbitprogrammieren | |
| DE19860506A1 (de) | System und Verfahren zum Programmieren eines nichtflüchtigen Speichers | |
| DE112017002776T5 (de) | Nichtflüchtiger Speicher mit angepasster Steuerung vom Typ der Störinjektion während der Programmüberprüfung für eine verbesserte Programmleistung | |
| DE102019124668A1 (de) | Transistorschwellenspannungshaltung in 3d-speicher | |
| DE69426817T2 (de) | Fertigungprüfungsverfahren von Flash-EEPROM-Vorrichtungen | |
| DE102010037978A1 (de) | Nichtflüchtiger Speicher mit prädiktiver Programmierung | |
| DE102007016460A1 (de) | Nichtflüchtiges Speicherbauelement, nichtflüchtiges Speichersystem und Leseverfahren für ein nichtflüchtiges Speicherbauelement | |
| DE19724221A1 (de) | Nichtflüchtiger Speicher | |
| DE102008007685B4 (de) | Integrierte Schaltung und Verfahren zum Betreiben einer integrierten Schaltung | |
| DE112020000174T5 (de) | Adaptive vpass für 3d-flash-speicher mit paarkettenstruktur | |
| DE102007019789A1 (de) | Verfahren zum Zugreifen auf eine Speicherzelle in einem integrierten Schaltkreis, Verfahren zum Ermitteln eines Satzes von Wortleitungsspannung-Identifikatoren in einem integrierten Schaltkreis, Verfahren zum Klassifizieren von Speicherzellen in einem integrierten Schaltkreis, Verfahren zum Ermitteln einer Wortleitungsspannung zum Zugreifen auf eine Speicherzelle in einem integrierten Schaltkreis und integrierte Schaltkreise |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| OP8 | Request for examination as to paragraph 44 patent law | ||
| 8127 | New person/name/address of the applicant |
Owner name: QIMONDA FLASH GMBH, 01099 DRESDEN, DE |
|
| 8127 | New person/name/address of the applicant |
Owner name: QIMONDA AG, 81739 MUENCHEN, DE |
|
| R016 | Response to examination communication | ||
| R081 | Change of applicant/patentee |
Owner name: INFINEON TECHNOLOGIES AG, DE Free format text: FORMER OWNER: QIMONDA AG, 81739 MUENCHEN, DE Owner name: POLARIS INNOVATIONS LTD., IE Free format text: FORMER OWNER: QIMONDA AG, 81739 MUENCHEN, DE |
|
| R082 | Change of representative |
Representative=s name: EPPING HERMANN FISCHER, PATENTANWALTSGESELLSCH, DE Representative=s name: EPPING HERMANN FISCHER PATENTANWALTSGESELLSCHA, DE |
|
| R081 | Change of applicant/patentee |
Owner name: POLARIS INNOVATIONS LTD., IE Free format text: FORMER OWNER: INFINEON TECHNOLOGIES AG, 85579 NEUBIBERG, DE |
|
| R082 | Change of representative |
Representative=s name: EPPING HERMANN FISCHER, PATENTANWALTSGESELLSCH, DE Representative=s name: EPPING HERMANN FISCHER PATENTANWALTSGESELLSCHA, DE |
|
| R018 | Grant decision by examination section/examining division | ||
| R020 | Patent grant now final | ||
| R119 | Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee |