DE60132830T2 - Neuartiges verfahren und struktur zur effizienten datenverifizierungsoperation für nichtflüchtige speicher - Google Patents

Neuartiges verfahren und struktur zur effizienten datenverifizierungsoperation für nichtflüchtige speicher Download PDF

Info

Publication number
DE60132830T2
DE60132830T2 DE60132830T DE60132830T DE60132830T2 DE 60132830 T2 DE60132830 T2 DE 60132830T2 DE 60132830 T DE60132830 T DE 60132830T DE 60132830 T DE60132830 T DE 60132830T DE 60132830 T2 DE60132830 T2 DE 60132830T2
Authority
DE
Germany
Prior art keywords
data
register
programming
array
master
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 - Lifetime
Application number
DE60132830T
Other languages
English (en)
Other versions
DE60132830D1 (de
Inventor
Kevin M. San Jose Conley
Daniel Fremont GUTERMAN
Carlos Los Gatos GONZALEZ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
SanDisk Corp
Original Assignee
SanDisk Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by SanDisk Corp filed Critical SanDisk Corp
Application granted granted Critical
Publication of DE60132830D1 publication Critical patent/DE60132830D1/de
Publication of DE60132830T2 publication Critical patent/DE60132830T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/3436Arrangements for verifying correct programming or erasure
    • G11C16/3454Arrangements for verifying correct programming or for detecting overprogrammed cells
    • G11C16/3459Circuits or methods to verify correct programming of nonvolatile memory cells
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • G11C11/5628Programming or writing circuits; Data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/3436Arrangements for verifying correct programming or erasure
    • G11C16/3454Arrangements for verifying correct programming or for detecting overprogrammed cells
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2216/00Indexing scheme relating to G11C16/00 and subgroups, for features not directly covered by these groups
    • G11C2216/12Reading and writing aspects of erasable programmable read-only memories
    • G11C2216/14Circuits or methods to write a page or sector of information simultaneously into a nonvolatile memory, typically a complete row or word line in flash memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Read Only Memory (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Non-Volatile Memory (AREA)

Description

  • Die vorliegende Erfindung betrifft das Gebiet nichtflüchtiger Halbleiterspeicher-Architekturen und Betriebsverfahren für diese und findet Anwendung bei elektrisch löschbaren und programmierbaren Flash-Nur-Lese-Speichern (EEPROMs).
  • Eine übliche Anwendung von Flash-EEPROM-Bauelementen stellt ein Massendatenspeicher-Teilsystem für elektronische Geräte dar. Solche Teilsysteme werden üblicherweise entweder als entfernbare Speicherkarten implementiert, die in mehrere Hostsysteme eingefügt werden können, oder als ein nicht entfernbarer, eingebetteter Speicher in dem Hostsystem. Bei beiden Implementierungen umfasst das Teilsystem ein oder mehrere Flash-Bauelemente und oft einen Teilsystem-Controller.
  • Flash-EEPROM-Bauelemente bestehen aus einem oder mehreren Arrays aus Transistorzellen, wobei jede Zelle des nichtflüchtigen Speichers ein oder mehr Bit Daten speichern kann. Somit benötigen Flash-Speicher keinen Strom, um die in ihnen programmierten Daten zu halten. Wenn eine Zelle jedoch einmal programmiert ist, muss sie gelöscht werden, bevor sie mit einem neuen Datenwert neu programmiert werden kann. Diese Arrays aus Zellen sind in Gruppen unterteilt, um eine effiziente Realisierung von Lese-, Programmier- und Löschfunktionen zu bieten. Bei einer typischen Flash-Speicher-Architektur für Massenspeicher sind große Gruppen von Zellen zu löschbaren Blöcken gruppiert. Jeder Block ist weiter in einen oder mehrere adressierbare Sektoren unterteilt, welche die Basiseinheit für Lese- und Programmierfunktionen darstellen.
  • Der Teilsystem-Controller führt eine Reihe von Funktionen aus, darunter die Übersetzung der logischen Blockadresse (LBA) des Teilsystems in eine physische Chip-, Block- und Sektoradresse. Der Controller verwaltet außerdem über eine Reihe von Befehlen, die über einen Schnittstellenbus an die Flash-Speicher-Bauelemente ausgegeben werden, Flash-Schaltungsoperationen auf unterer Ebene. Eine weitere Funktion, die der Controller ausführt, besteht darin, die Integrität der in dem Teilsystem gespeicherten Daten über verschiedenen Mitteln aufrechtzuerhalten (z. B. unter Nutzung eines Fehlerkorrekturcodes, oder ECC).
  • 1 zeigt eine typische interne Architektur 4000 eines Flash-EEPROM-Bauelements gemäß dem Stand der Technik. Die Schlüsselmerkmale sind ein E/A-Bus 411 sowie Steuersignale 412 zur Kopplung mit einem externen Controller, eine Speicher-Steuerschaltung 450 zum Steuern interner Speicheroperationen, mit Registern für Befehle, Adressen und Status, ein oder mehrere Arrays 400 aus Flash-EEPROM-Zellen, wobei jedes Array seinen eigenen Zeilen-Decoder (XDEC) 401 und Spalten-Decoder (YDEC) 402 aufweist, eine Gruppe aus Leseverstärkern und Programmiersteuerschaltungen (SA/PROG) 454 sowie ein Datenregister 404.
  • Wenn gewünscht, ist eine Mehrzahl von Arrays 400 vorhanden, zusammen mit zugehörigen X-Decodern, Y-Decodern, Programmier/Verifizier-Schaltungen, Datenregistern und dergleichen, wie beispielsweise in US-Patent 5,890,192 gelehrt wird, das am 30. März 1999 an die SanDisk Corporation, den Abtretungsempfänger der vorliegenden Anmeldung, erteilt worden ist.
  • Der externe Schnittstellen-E/A-Bus 411 und die Steuersignale 412 könnten mit folgenden Signalen konfiguriert werden:
    CS – Chip-Auswahl wird genutzt, um die Flash-Speicher-Schnittstelle zu aktivieren;
    RS – Lese-Impuls wird genutzt, um anzuzeigen, dass der AD-Bus für eine Datenleseoperation genutzt wird;
    WS – Schreib-Impuls wird genutzt, um anzuzeigen, dass der AD-Bus für eine Datenschreiboperation genutzt wird;
    AS – Adress-Impuls zeigt an, dass der AD-Bus genutzt wird, um Adressinformationen zu übertragen;
    AD[7:0] – Adress/Datenbus wird genutzt, um Daten zwischen dem Controller und den Befehls-, Adress- und Datenregistern des Flash-Speichers zu übertragen.
  • Diese Schnittstelle ist nur als ein Beispiel angegeben, da andere Signalkonfigurationen genutzt werden können, welche die gleiche Funktionalität ergeben. Das vorliegende Schema zeigt lediglich ein Flash-Speicher-Array 400 mit den mit diesem in Zusammenhang stehenden Komponenten, auf einem einzigen Flash-Speicher-Chip können aber auch mehrere Arrays vorhanden sein, die eine gemeinsame Schnittstelle und Speichersteuerschaltung gemeinsam nutzen, die aber eine separate XDEC-, YDEC-, SA/PROG- und DATA REG-Schaltung aufweisen, um parallele Lese- und Programmiervorgänge zu ermöglichen.
  • Daten von dem Datenregister 404 des EEPROM-Systems 4000 zu einem externen Controller werden über die Datenregister auf den E/A-Bus AD[7:0] 411 eingekoppelt. Das Datenregister 404 ist außerdem mit der Leseverstärker/Programmierschaltung 454 gekoppelt. Die Anzahl der Elemente des Datenregisters, die mit jedem Leseverstärker/Programmierschaltungselement gekoppelt sind, kann von der Anzahl der in jeder Flash-EEPROM-Zelle gespeicherten Bits abhängen. Jede Flash-EEPROM-Zelle kann eine Mehrzahl von Bits enthalten, beispielsweise 2 oder 4, wenn Mehrzustands-Speicherzellen zur Anwendung kommen.
  • Der Zeilen-Decoder 401 dekodiert Zeilenadressen für das Array 400, um den physischen Sektor auszuwählen, auf den zugegriffen wird. Der Zeilen-Decoder 401 empfängt Zeilenadressen über interne Zeilenadressleitungen 419 von der Speichersteuerlogik 450. Der Spalten-Decoder 402 empfängt Spaltenadressen über interne Spaltenadressleitung 429 von der Speichersteuerlogik 450.
  • 2 zeigt eine typische Architektur einer Flash-Karte, die einen einzigen Controller 301 aufweist, der Host- und Speichersteuerungsfunktionen ausführt, sowie ein Flash-Speicher-Array, das aus einem oder mehreren Flash-Speicher-Bauelementen besteht. Der System-Controller und der Flash-Speicher sind durch einen Bus 302 verbunden, welcher es dem Controller 301 ermöglicht, Befehle und Adressen in das und von dem Flash-Speicher-Array zu laden und Daten von und zu diesem zu transferieren.
  • In der Praxis ist es üblich, dass in jedem Sektor an die in einen Sektor programmierten Host-Daten ein Fehlererkennungs- und -korrekturcode (ECC) angehängt wird, der genutzt wird, um die Gültigkeit der gespeicherten Daten beim Zurücklesen festzustellen. Einige solcher Systeme nutzen den Vorgang des Transfers von dem Speicherbauelement zu dem Controller als Gelegenheit, um die Gültigkeit der gelesenen Daten zu überprüfen, und zwar als eine Möglichkeit, um sicherzustellen, dass die Daten nicht korrumpiert sind.
  • Um die Gültigkeit der programmierten Daten sicherzustellen, werden bei einigen Systemen die Daten unmittelbar nachdem sie programmiert worden sind aus einem Sektor gelesen. Die Daten werden verifiziert, bevor die nächste Operation stattfindet, und zwar mithilfe eines ECC, Datenvergleichs oder eines anderen Mechanismus. Bei Systemen gemäß dem Stand der Technik erfolgt diese Datenverifizierung, wie Fachleuten auf dem Gebiet bekannt ist, während des Datentransfers, der nach dem Lesen stattfindet.
  • Somit verlängert sich die Zeit für die Ausführung eines Programmierungsvorgangs aufgrund des Hinzukommens einer Leseoperation und des Transfers der Daten von dem Flash-Speicher-Bauelement zu der Controllerschaltung, wo die Verifizierung tatsächlich stattfindet. Der Programmier-Verifizierungsvorgang zeigt an, ob sämtliche Zellen auf ihre gewünschten Pegel oder über diese hinaus programmiert worden sind oder nicht, und es wird im Allgemeinen nicht überprüft, ob die Zellen ihren Soll-Zustand überschritten haben, möglicherweise bis zu dem nächsten Zustand, im Falle eines Mehrzustandsspeichers, sondern nur, ob sie eine bestimmte Verifizierungsbedingung überschritten haben. Aufgrund der Gesamtgenauigkeit dieser Speicherbauelemente tritt während solcher Verifikationen selten ein Fehler auf.
  • 3 zeigt ein Taktungsdiagramm eines Programmier/Verifizierungsvorgangs mit zwei Sektoren, bei welchem Daten an zwei Zieladressen (DST[N] und DST[N + 1]) programmiert werden und danach zur Verifizierung gelesen werden, und zwar vor dem Programmieren an der nächsten Zieladresse (DST[N + 2]). Das Signal READ zeigt an, dass ein Lesevorgang von dem Quellsektor stattfindet. Das Signal XFER zeigt einen Datentransfer zwischen dem Flash-Datenregister und dem Controller an. Das Signal R/W zeigt die Richtung des Transfers an (hoher Pegel bedeutet einen Lesevorgang von dem Flash-Speicher zu dem Controller und niedriger Pegel bedeutet einen Schreibvorgang von dem Controller auf den Flash-Speicher). Das Signal PROG gibt an, dass eine Programmieroperation auf die Zielspeicherseite erfolgt.
  • 4 stellt die Abfolge von Ereignissen dar, die während eines Programmier/Verifizierungsvorgangs erfolgen:
    • 1. Transfer von Daten zu dem Master-Datenregister 403 von der externen Controllerschaltung (nicht gezeigt).
    • 2. Transfer von Inhalten des Master-Datenregisters 403 zu dem Slave-Datenregister 404.
    • 3. Programmieren der Daten von dem Slave-Datenregister 404 in das Flash-Speicher-Array 400.
    • 4. Zurücklesen der Daten von dem Flash-Speicher-Array 400 in das Slave-Datenregister 404.
    • 5. Transfer der Daten von dem Slave-Register 404 zu dem Master-Datenregister 403.
    • 6. Transfer der Daten von dem Master-Datenregister 403 zu der externen Controller-Schaltung (nicht gezeigt) zur Validierung.
  • Die exakten Kosten dieser Verifizierungsvorgänge variieren in Abhängigkeit von der Dauer der verschiedenen Flash-Speicher-Operationen, der Größe der Datenmenge, der Größe des E/A-Busses und der Zykluszeit des E/A-Busses. Ein Beispiel, bei dem einige typische Werte genutzt werden, sei jedoch nachstehend aufgezeigt: TRD = 25 μs TX = 26,4 μs TPRG = 300 μs
  • Die Gesamtzeit zum Programmieren und Verifizieren eines einzelnen Sektors (wie in 4 gezeigt) beträgt: TPgm/Vfy = TX + TPRG + TRD + TX = 377 μs,was bedeutet, dass die Datenverifizierungszeit 14% des gesamten Programmier/Verifizierungsvorgangs ausmacht.
  • Ein allgemeiner Trend beim Entwurf nichtflüchtiger Speicher geht dahin, die Anzahl der Zellen zu erhöhen, die gleichzeitig programmiert und gelesen werden können, um das Leistungsverhalten beim Schreiben und Lesen dieser Bauelemente zu verbessern. Dies kann erreicht werden, indem die Anzahl der Speicherzellen-Arrays auf einem einzigen Chip erhöht wird, indem die Größe der Speicherseite in einer einzelnen Ebene erhöht wird, indem mehrere Chips parallel programmiert werden oder durch eine Kombination dieser drei Verfahren. Im Ergebnis dessen erhöht sich aufgrund der größeren Anzahl der programmierten oder gelesenen Zellen die Datentransferlänge, wobei sich die Programmier- und Lesezeiten geringfügig oder überhaupt nicht ändern. Somit ist der Aufwand für die Datenverifizierung in einem System mit einer solchen erhöhten Parallelität dementsprechend umso höher. Als Beispiel zeigen die gleichen Taktungswerte, die in dem obigen Beispiel genutzt wurden, die Auswirkung auf ein System mit einer vierfachen Erhöhung der Parallelität: TPgm/Vfy = 4·TX + TPRG + TRD + 4·TX = 526,4 μs,was bedeutet, dass die Datenverifizierungszeit 24% des gesamten Kopiervorgangs von vier Speicherseiten ausmacht.
  • Es wird ein Flash-Speicher-Bauelement offenbart, bei dem eine nach dem Programmieren erfolgende Verifizierungsoperation ausgeführt werden kann, ohne dass die Daten an eine externe Controllerschaltung übertragen werden, und bei welchem während dieser Programmier- oder Verifizierungsvorgänge ein Datentransfer von dem externen Controller möglich ist.
  • Entsprechend einem Aspekt der vorliegenden Erfindung wird ein nichtflüchtiges Speicherbauelement zur Verfügung gestellt, welche umfasst: ein Array aus nichtflüchtigen Speicherzellen, ein Master-Datenregister zum Empfangen von Daten, die in dem Array gespeichert werden sollen, ein Datenvergleichsregister zum Empfangen von Daten aus dem Master-Datenregister, ein Slave-Datenregister zum Empfangen von Daten aus dem Array und eine Vergleichsschaltung zum Vergleichen der in dem Slave-Datenregister und dem Datenvergleichsregister gespeicherten Daten, um die korrekte Programmierung der Daten in dem Array zu verifizieren. Das Bauelement ist dadurch gekennzeichnet, dass das Master-Datenregister dafür ausgelegt ist, einen nachfolgenden Satz Daten zur Programmierung in das Array zu empfangen und/oder zu halten, während der Vergleich erfolgt. Eine Kopie der zu programmierenden Daten wird in dem Speicherbauelement gehalten.
  • Nachdem die Programmierung abgeschlossen ist, werden die Daten zurückgelesen und mit der beibehaltenen Kopie verglichen, und zwar in einem Lese-Verifizierungsprozess nach dem Schreiben, der in dem Speicherbauelement selbst erfolgt.
  • Bei einer Gruppe von Ausführungsformen ist das nichtflüchtige Speichersystem mit Schaltungen entworfen, die drei Datenregister umfasst. Das erste Datenregister steuert die Programmierschaltung und speichert Daten von Lesevorgängen. Das zweite Datenregister hält eine Kopie der Programmierdaten für eine spätere Verifizierung. Das dritte Datenregister wird genutzt, um während Programmier-, Verifizierungs- und Lesevorgängen Daten zu transferieren. Dieser Prozess des Hereinholens des nächsten zu programmierenden Datensatzes, während ein aktueller Datensatz programmiert wird, kann als Stream-Programmierung bezeichnet werden. Vor einem Programmiervorgang werden Daten in das erste und das zweite Register transferiert. Nach dem Programmiervorgang werden die Daten aus den gerade programmierten Zellen zurückgelesen und in dem ersten Register gespeichert. Die Inhalte dieses Registers werden dann mit den Inhalten des zweiten Registers verglichen. Eine Übereinstimmung zwischen den beiden Datensätzen zeigt an, dass die Daten korrekt programmiert worden sind, und es wird ein Status erzeugt, der eine erfolgreiche Verifizierung anzeigt. Während der Programmier- und Verifizierungsvorgänge kann das dritte Datenregister genutzt werden, um den nächsten zu programmierenden Datensatz zu empfangen.
  • Entsprechend einem weiteren Aspekt der vorliegenden Erfindung wird ein Verfahren zum Betreiben eines nichtflüchtigen Speicherbauelements zur Verfügung gestellt, wobei das Verfahren folgende Schritte umfasst: Empfangen von Daten, die in einem Array aus nichtflüchtigen Speicherzellen gespeichert werden sollen, Speichern der Daten in einem Master-Datenregister, Speichern der Daten in einem Datenvergleichsregister, Programmieren der Daten in das Array, Lesen der Daten, so wie sie in dem Array gespeichert sind, Speichern der gelesenen Daten in einem Slave-Datenregister und Vergleichen der in dem Slave-Datenregister und in dem Datenvergleichsregister gespeicherten Daten, um die korrekte Programmierung der Daten in dem Array zu verifizieren. Das Verfahren ist dadurch gekennzeichnet, dass das Master-Datenregister gleichzeitig mit einem oder mehreren Schritten der Schritte Programmieren, Lesen und Vergleichen einen zweiten Satz Daten zur Programmierung in das Array empfängt und/oder hält.
  • Entsprechend einem weiteren Aspekt der vorliegenden Erfindung wird ein nichtflüchtiges Speicherbauelement zur Verfügung gestellt, welches umfasst: ein Array aus nichtflüchtigen Speicherzellen, ein Master-Datenregister zum Empfangen von Daten, die in dem Array gespeichert werden sollen, wobei das Master-Datenregister die Daten nach der Speicherung beibehält, ein Slave-Datenregister zum Empfangen von Daten aus dem Array und eine Vergleichsschaltung zum Vergleichen der in dem Slave-Datenregister und dem Master-Datenregister gespeicherten Daten, um die korrekte Programmierung der Daten in dem Array zu verifizieren.
  • Das Bauelement ist dadurch gekennzeichnet, dass das Master-Datenregister dafür ausgelegt ist, einen nachfolgenden Satz Daten zur Programmierung in das Array zu empfangen und/oder zu halten, während der Vergleich erfolgt.
  • Entsprechend einem weiteren Aspekt der vorliegenden Erfindung wird ein Verfahren zum Betreiben eines nichtflüchtigen Speicherbauelements zur Verfügung gestellt. Das Verfahren umfasst folgende Schritte: Empfangen von Daten, die in einem Array aus nichtflüchtigen Speicherzellen gespeichert werden sollen, Speichern der Daten in einem Master-Datenregister, Programmieren der Daten in das Array, während die Daten in dem Master-Datenregister beibehalten werden, Lesen der Daten, so wie sie in dem Array gespeichert sind, Speichern der gelesenen Daten in einem Slave-Datenregister und Vergleichen der in dem Slave-Datenregister und dem Master-Datenregister gespeicherten Daten, um die korrekte Programmierung der Daten in dem Array zu verifizieren.
  • Das Verfahren ist dadurch gekennzeichnet, dass das Master-Datenregister gleichzeitig mit einem oder mehreren Schritten der Schritte Programmieren, Lesen und Vergleichen einen zweiten Satz Daten zur Programmierung in das Array empfängt und/oder hält.
  • Eine alternative Gruppe von Ausführungsformen stellt eine Realisierung mit zwei Registern dar, bei welchen ein Master-Register die eingehenden Daten empfängt und eine Kopie der Daten nach deren Programmierung beibehält. Nachdem die Daten geschrieben sind, werden sie in ein zweites Register ausgelesen, dessen Inhalt dann mit den ursprünglichen Daten in dem Master-Register verglichen wird. Bei einer anderen Anordnung wird nur ein einziges Master-Register genutzt, wobei die Daten wiederum nach der Programmierung in dem Master-Register beibehalten werden und die gelesenen Daten direkt mit dem Inhalt des Master-Registers verglichen werden, während sie aus dem Array ausgelesen werden. Diese Varianten ermöglichen es, sowohl destruktive (bei denen die Daten in dem zur Programmierung genutzten Register beim Prozess der Programmier-Verifikation verloren gehen) als auch nicht-destruktive (bei denen die Daten durchgängig beibehalten werden) Programmierverfahren zu nutzen.
  • Bei sämtlichen Ausführungsformen kann der nach der Programmierung erfolgende Verifizierungsvorgang wiederholt werden, wobei zusätzliche Verifizierungen unter Nutzung anderer Lesebedingungen ausgeführt werden können, um sicherzustellen, dass die richtigen Werte für Lesegrenzen gegeben sind. Bei den verschiedenen Ausführungsformen können mehrere Datensektoren parallel geschrieben werden, wobei der nach der Programmierung erfolgende Verifizierungsvorgang in den unterschiedlichen Sektoren entweder seriell oder parallel ausgeführt wird. Die nach der Programmierung erfolgende Verifizierung kann einen automatischen Prozess in dem Speicherbauelement darstellen oder kann unter Ansprechen auf einen Befehl von dem Controller ausgeführt werden. Der Befehl kann die Art des bei der Verifizierung zu nutzenden Lesevorgangs spezifizieren oder kann Parameter, beispielsweise einen Satz von Grenzpegeln, die für das Lesen genutzt werden sollen, spezifizieren. Der Speicher kann entweder binäre oder Mehrzustands-Speicherzellen nutzen. Bei einer Mehrzustands-Ausführungsform kann die Adressierung auf Speicher-Ebene erfolgen.
  • Weitere Aspekte, Merkmale und Vorteile der vorliegenden Erfindung sind in der folgenden Beschreibung spezieller repräsentativer Ausführungsformen enthalten, wobei diese Beschreibung in Zusammenhang mit den beigefügten Zeichnungen betrachtet werden sollte.
  • 1 zeigt ein Blockdiagramm eines typischen EEPROM gemäß dem Stand der Technik;
  • 2 zeigt eine typische Architektur eines Flash-basierten Speicher-Teilsystems gemäß dem Stand der Technik;
  • 3 zeigt ein Taktungsdiagramm eines Programmier/Verifizierungsvorgangs für zwei Sektoren gemäß dem Stand der Technik;
  • 4 stellt die Abfolge von Ereignissen dar, die während eines Programmier/Verifizierungsvorgangs in Systemen gemäß dem Stand der Technik auftritt;
  • 5 zeigt eine schematische Darstellung eines nichtflüchtigen Halbleiterspeichers entsprechend einer Ausführungsform der vorliegenden Erfindung;
  • 6 stellt ein Taktungsdiagramm für einen Programmier/Verifizierungsvorgang für zwei Sektoren gemäß einer Ausführungsform der vorliegenden Erfindung dar;
  • 7 stellt die Abfolge von Ereignissen dar, die während eines Programmier/Verifizierungsvorgangs bei einer Ausführungsform gemäß der vorliegenden Erfindung auftritt;
  • 8 stellt die Abfolge von Ereignissen dar, die während eines Programmier/Mehrfachverifizierungsvorgangs bei einer Ausführungsform gemäß der vorliegenden Erfindung auftritt;
  • 9 stellt die Abfolge von Ereignissen dar, die während eines Programmier/Mehrfachverifizierungsvorgangs bei einer Ausführungsform gemäß einer alternativen Ausführungsform der vorliegenden Erfindung auftritt;
  • 10 stellt die Abfolge von Ereignissen dar, die während eines Programmier/Mehrfachverifizierungsvorgangs bei einer weiteren alternativen Ausführungsform der vorliegenden Erfindung auftritt; die
  • 11 und 12 stellen Taktungsdiagramme dar, welche die Nutzung der Stream-Programmierung veranschaulichen;
  • 13 stellt schematisch Zellenpopulationen und Lese-Grenzbedingungen in einem Mehrzustandsspeicher dar;
  • 14 zeigt eine mögliche Art des Änderns von Lesebedingungen;
  • 15 stellt den Prozess des Adressierens von Speicherzellen durch ihren Zustand dar;
  • 16 stellt ein Beispiel der Registernutzung bei einer Ausführungsform gemäß der vorliegenden Erfindung dar, wenn Speicherzellen über ihren Zustand adressiert werden.
  • Die vorliegenden Erfindung umfasst sowohl ein System als auch ein Verfahren zum Ausführen von Programmier/Verifizierungsvorgängen in einem Flash-Speicher-Bauelement, bei denen es nicht erforderlich ist, dass Daten aus dem Speicherbauelement transferiert werden, um einem externen Controller zu ermöglichen, gleichzeitig Daten für nachfolgende Programmiervorgänge in das Bauelement zu transferieren. Der nach der Programmierung erfolgende Lese/Verifizierungsprozess gemäß der vorliegenden Erfindung (nachstehend oft locker lediglich als Verifizieren oder Verifizierung bezeichnet, in Abhängigkeit vom Zusammenhang) muss von dem Programmier-Verifizierungsprozess unterschieden werden, der als Teil des eigentlichen Programmierprozesses erfolgt und gemäß dem Stand der Technik üblich ist. Entsprechend einem prinzipiellen Aspekt wird eine Kopie der Daten während der Programmierung in dem Speicherbauelement gehalten. Der Vergleichsprozess gemäß der vorliegenden Erfindung erfolgt getrennt von dem Programmierprozess und nach diesem und nutzt tatsächlich einen Leseprozess, um die Daten bereitzustellen, die mit der beibehaltenen Kopie verglichen werden. 5 zeigt ein Schema, das einen nichtflüchtigen Halbleiterspeicher darstellt, der entsprechend einer Ausführungsform der vorliegenden Erfindung aufgebaut ist. Die Beschreibung der jeweiligen Komponenten in diesem Schema entspricht der mit Bezug auf 1 beschriebenen, mit den folgenden Ausnahmen: Es sind ein zusätzliches Datenvergleichsregister 405 und eine zugehörige Vergleichslogik 430 zum Zwecke der Ausführung des Datenverifizierungsvorgangs vorhanden. Bei einer Ausführungsform dieser Erfindung ist das Register, das die gelesenen Daten speichert und die zu programmierenden Daten bereitstellt, in solcher Weise gestaltet, dass das Speicherelement für beide Vorgänge physisch dasselbe ist.
  • Eine solche Datenregisterschaltung, die zur Nutzung bei der vorliegenden Erfindung geeignet ist, ist detailliert in dem bereits erwähnten US-Patent 5,890,192 beschrieben. Eine geeignete Gruppe von Register/Datenzwischenspeicher-Schaltungen ist in einer US-Patentanmeldung mit dem Titel "Dynamic Column Block Selection" von Raul Adrian Cernea, eingereicht am 17. September 2001, (veröffentlicht als US 6,560,146 ) beschrieben. Entsprechend der beschriebenen Ausführungsform sind die verschiedenen Register, beispielsweise das Master-Datenregister 403, das Slave-Datenregister 404 und das Datenvergleichsregister 405 groß genug, um sämtliche parallel programmierte Daten zu halten, oder es gibt entsprechend viele Sätze relevanter Register pro Sektor, die parallel programmiert werden. 6 zeigt ein Taktungsdiagramm eines Programmier/Verifizierungsvorgangs für zwei Sektoren, bei welchem Daten an zwei Zieladressen (DST[N] und DST[N + 1]) programmiert werden und danach zum Verifizieren gelesen werden.
  • Gleichzeitig mit dem Lesevorgang erfolgen die Datentransfers für das nächste Paar Sektoren, die an die Adressen DST[N + 2] und DST[N + 3] geschrieben werden sollen. Das Signal READ zeigt an, dass die beiden Sektoren von den gerade programmierten Adressen parallel gelesen werden. Das Signal XFER zeigt einen Datentransfer zwischen dem Flash-Datenregister und dem Controller an. Das Signal R/W zeigt die Richtung des Transfers an (hoch bedeutet Transfer zu dem Controller, niedrig bedeutet zu dem Flash). Man beachte, dass das Signal R/W dauerhaft niedrig ist, da kein Datentransfer von dem Flash-Speicher zu dem Controller stattfindet. Das Signal PROG zeigt an, dass der Programmiervorgang auf die Zielspeicherseiten stattfindet.
  • 7 stellt die Abfolge von Ereignissen dar, die während eines Programmier/Verifizierungsvorgangs entsprechend dieser Ausführungsform der Erfindung mit drei Registern auftreten. In 7 sind der Y-Decoder YDEC 402, die Lese/Programmierschaltung SA/PROG 454 und andere Elemente aus 5 unterdrückt, um die Diskussion zu vereinfachen. Der Prozess aus 7 umfasst:
    • 1. Transfer von Daten von einer (nicht gezeigten) externen Controllerschaltung zu dem Master-Datenregister 403.
    • 2. Transfer des Inhalts des Master-Datenregisters 403 zu dem Slave-Datenregister 404 und dem Datenvergleichsregister 405, zum Beispiel gleichzeitig.
    • 3. Programmieren der Daten von dem Slave-Datenregister 404 in das Flash-Speicher-Array 400.
    • 4. Zurücklesen der Daten aus dem Flash-Speicher-Array 400 in das Slave-Datenregister 404. Gleichzeitig beginnen die Datentransfers von dem externen Bus für den nächsten Programmiervorgang (Schritt 1) in das Master-Datenregister 403.
    • 5. Vergleichen (430) der Daten in dem Slave-Register 404 mit denjenigen in dem Datenvergleichsregister 405. Das Ergebnis dieses Vergleichs wird in dem Statusregister 431 gespeichert, das beispielsweise von einem externen Controller gelesen werden kann.
    • 6. Wenn der Vergleich nicht bestanden wird, kann der externe Controller die geeigneten Fehlerbehebungsmaßnahmen anwenden.
  • Bei einer alternativen Ausführungsform erfolgen Datentransfers von dem externen Bus zu dem Master-Datenregister 403 gleichzeitig mit einem oder mehreren Schritten der Schritte Programmieren, Zurücklesen von Daten und Vergleichen, und zwar in einem Prozess der "Stream-Programmierung". Es gibt viele alternative Möglichkeiten, Fehlerzustände zu behandeln. Diese können das Schreiben der Daten in einen anderen Bereich des Speichers und das Löschen des fehlerbehafteten Teils des Speichers oder Markieren desselben als schlecht, das Anwenden von mehr Impulsen ohne einen dazwischen erfolgenden Löschvorgang oder das Löschen und erneute Schreiben der Daten in denselben Bereich umfassen. Alternativ ist es möglich, keine Maßnahme zu ergreifen, wenn weniger als eine gewisse Anzahl von Fehlern vorhanden sind.
  • Die exakten Kosten, was die Zeitdauer und das Leistungsverhalten dieser Verifizierungsvorgänge betrifft, variieren in Abhängigkeit von der Dauer der verschiedenen Flash-Speicher-Vorgänge, der Größe des Datensatzes, der Breite des E/A-Busses und der Zykluszeit des E/A-Busses. Ein Beispiel für die Funktionsweise dieser Ausführungsform der Erfindung sei jedoch nachstehend unter Nutzung einiger typischer Werte gezeigt: TRD = 25 μs TX = 26,4 μs TPRG = 300 μs
  • Die Gesamtzeit zum Programmieren und Verifizieren eines einzelnen Sektors (wie in 4 gezeigt) beträgt: TPgm/Vfy = [TX + TPRG + TRD] = 351,4 μs
  • Dies stellt eine Verbesserung der Programmierzeit von 7% gegenüber dem Beispiel gemäß dem Stand der Technik mit einem einzigen Sektor dar.
  • Ein allgemeiner Trend beim Entwurf nichtflüchtiger Speicher geht dahin, die Anzahl der Zellen zu erhöhen, die gleichzeitig programmiert und gelesen werden können, um das Leistungsverhalten dieser Bauelemente hinsichtlich des Schreibens und Lesens zu verbessern. Dies kann erreicht werden, indem die Anzahl der Speicherzellen-Arrays auf einem einzigen Chip erhöht wird, indem die Größe der Speicherseite in einer einzelnen Ebene erhöht wird, indem mehrere Chips parallel programmiert werden oder durch eine Kombination dieser drei Verfahren. Infolgedessen erhöht sich aufgrund der größeren Anzahl der programmierten oder gelesenen Zellen die Datentransferlänge, wobei sich die Programmier- und Lesezeiten geringfügig oder überhaupt nicht ändern. Somit ist der Aufwand der Datenverifizierung in einem System mit einer solchen erhöhten Parallelität dementsprechend umso höher. Unter Nutzung des vorherigen Beispiels mit vier Sektoren ist TPgm/Vfy = 4·TX + TPRG + TRD = 426 μs
  • Dies stellt eine Verbesserung bezüglich der Programmierzeit von 20% gegenüber dem Beispiel gemäß dem Stand der Technik mit vier Sektoren dar.
  • 7 stellt einen einzelnen, nach dem Programmieren erfolgenden Lese-Verifizierungsvorgang in den Schritten 4 und 5 dar. Dieser nach dem Programmieren erfolgende Lese- Verifizierungsvorgang muss von dem Verifizierungsprozess unterschieden werden, der als Teil des eigentlichen Programmierprozesses erfolgt und der gemäß dem Stand der Technik üblich ist. Der Vergleichsprozess aus 7 und gemäß den nachstehenden alternativen Ausführungsformen erfolgt getrennt von dem Programmierprozess und nach diesem, und dabei wird ein tatsächlicher Leseprozess genutzt, um die Daten bereitzustellen, die basierend auf dem Pegel der Zelle verglichen werden, wogegen bei dem Programmier-Verifizierungsprozess der Pegel der Zelle mit einem festen Sollwert verglichen wird.
  • Bei Programmier-Verifizierungsprozessen muss zwischen destruktiven und nicht-destruktiven Programmier-Verifizierungsschemata unterschieden werden. Bei einem destruktiven Programmier-Verifizierungsschema wird der Inhalt des Slave-Registers während des Programmier-Verifizierungsvorgangs korrumpiert, wenn die Speicherelemente auf den ordnungsgemäßen Pegel hin verifiziert werden. Der Inhalt des Registers wird als Rückkopplung für die Programmierschaltung genutzt, um anzuzeigen, ob für ein gegebenes Speicherelement eine weitere Programmierung erforderlich ist oder nicht; sobald der entsprechende Pegel verifiziert ist, wird der Inhalt des Registers, der dem verifizierten Speicherelement entspricht, gelöscht, um eine weitere Programmierung zu sperren. Der Programmiervorgang ist abgeschlossen, wenn sämtliche Inhalte des Slave-Registers gelöscht sind oder wenn der Verifizierungsstatus sämtlicher Speicherelemente eine erfolgreiche Programmierung anzeigt. Bei einem nicht-destruktiven Programmier-Verifizierungsschema wird der Inhalt des Slave-Registers nicht korrumpiert. Bei diesem Schema wäre es möglich, dass Speicherelemente weitere Programmierschritte erhalten, selbst nachdem für diese ein entsprechender Pegel verifiziert worden ist. Der Programmiervorgang würde enden, wenn sämtliche Speicherelemente einen programmierten Zustand erreicht hätten, wobei die Ermittlung dieses Zustands die Überwachung der Programmier-Verifizierungsergebnisse für sämtliche Speicherelemente erfordert, um einen Abschluss festzustellen. Gemäß dem Stand der Technik kommt bei Flash-Speicher-Bauelementen typischerweise ein destruktives Programmier-Verifizierungsschema zur Anwendung, und insbesondere in Mehrpegel-Bauelementen. Nicht-destruktive Verfahren können ebenfalls in Flash-Speicher-Systemen genutzt werden, wenn die Nutzung zusätzlicher Impulse die Verteilung der Zellenzustände nicht in übermäßigem Maße negativ beeinflusst. Nicht-destruktive Programmier-Verifizierungsschemata können auch in Speichersystemen mit anderen Formen von Speicherelementen, welche die zusätzliche Belastung tolerieren können, genutzt werden.
  • Die vorstehend mit Bezug auf 7 beschriebene Ausführungsform ermöglicht sowohl ein destruktives Programmier-Verifizierungsschema als auch eine Stream-Programmierung. Da eine Kopie der Daten in dem Vergleichsregister gespeichert ist, braucht das Slave-Register die Daten während der Programmierung nicht beizuhalten. Darüber hinaus ist das Master-Register, sobald es seinen Inhalt an das Vergleichs- und das Slave-Register transferiert hat, frei, um den nächsten Datensatz zu empfangen. Wenn auf eine Stream-Programmierung verzichtet wird, ein nicht-destruktives Programmier-Verifizierungsschema genutzt wird, oder beides, kann ein nach der Programmierung erfolgender Lese-Verifizierungsvorgang mit weniger Registern implementiert werden. Wenn bei dem Bauelement ein nicht-destruktives Programmier-Verifizierungsschema zur Anwendung kommt, wird das Vergleichsregister nicht benötigt, und die Daten in dem Slave-Register können direkt mit der Ausgabe des Leseverstärkers verglichen werden.
  • Bei einer alternativen Ausführungsform kann mehr als ein nach der Programmierung erfolgender Lese-Verifizierungsvorgang ausgeführt werden, zum Beispiel entweder nach jedem Schreibvorgang oder nur nach bestimmten Schreibvorgängen, die zum Beispiel durch die Anzahl der Schreibvorgänge spezifiziert werden, welche seit dem vorherigen Mehrfachverifizierungsvorgang erfolgt sind, in zufälliger Weise, basierend auf der seit dem vorherigen Mehrfachverifizierungsvorgang abgelaufenen Zeit, basierend auf einem Lösch-Verifizierungsfehler, basierend auf der Anzahl von Löschzyklen oder auf einem Programmier-Verifizierungsfehler. Die Verifizierungen können unter verschiedenen Bedingungen erfolgen, beispielsweise bei einem nominellen Spannungsschwellwert, einer unteren Toleranzgrenze eines Spannungsschwellwertes, einer oberen Toleranzgrenze eines Spannungsschwellwertes bei einem Spannungsmessschema, wie es später mit Bezug auf 13 beschrieben wird. Diese Nutzung unterschiedlicher Spannungspegel stellt einen weiteren Unterschied des nach dem Schreiben erfolgenden Lese-Verifizierungsprozesses gemäß der vorliegenden Erfindung zu dem herkömmlichen Verifizieren, das Teil des Programmiervorgangs ist, dar.
  • Ein Lösch-Verifizierungsfehler tritt auf, wenn von dem Speicher nach einem Löschvorgang ein Status Verifizierungsfehler zurückkommt, in welchem Fall der Löschvorgang wahrscheinlich fehlgeschlagen ist, wenngleich der Block hinreichend gelöscht sein kann, um ihn unter normalen Bedingungen zu nutzen. Dies ist auf die Tatsache zurückzuführen, dass bei der Lösch-Verifizierung für die Zellen möglicherweise überprüft wird, ob sie auf einen viel stärker gelöschten Zustand gelöscht sind als er eigentlich benötigt wird, wodurch ein breites Schutzband als für die normale Nutzung erforderlich bereitgestellt wird. Dies ist zum Beispiel in den US-Patenten 5,172,338 und 5,602,987 beschrieben. Eine alternative Möglichkeit zum Überprüfen, ob ein Block nach dem Löschen nutzbar ist oder nicht, besteht darin, nach dem Löschen einen Lesevorgang unter Bedingungen auszuführen, die darauf ausgerichtet sind, auf Löschfehler zu überprüfen, wobei die Grenzwerte generell so festgelegt sind, dass auf unzureichend gelöschte Zellen hin überprüft wird. Das Ausführen eines solchen Lesevorgangs nach jedem Löschen würde sich nachteilig auf das Leistungsverhalten des Systems auswirken, und somit wird es im Allgemeinen vermieden. Bei vielen Flash-Speichersystemen gemäß dem Stand der Technik wird der Verifizierungsstatus von Löschvorgängen ignoriert und es werden nur die Ergebnisse der nach dem Schreiben erfolgenden Lese-Verifizierungsvorgänge überprüft. Bei einer Ausführungsform gemäß der vorliegenden Erfindung wird nach dem Schreiben ein zusätzlicher Lese-Verifizierungsvorgang, der darauf ausgerichtet ist, auf unzureichend gelöschte Zellen hin zu überprüfen, nur für den Fall eines Status Lese-Verifizierungsfehler ausgeführt. Erfüllt der Block diese Lese-Verifizierungsbedingungen, wird der Block trotz des Lösch-Verifizierungsfehlers als unter normalen Bedingungen nutzbar betrachtet.
  • Das Aufrufen mehrerer Lese-Verifizierungsvorgänge basierend auf der Anzahl von Löschzyklen erfolgt analog dem Begründen der Entscheidung auf der Anzahl von Schreibvorgängen, die seit dem vorherigen Mehrfachverifizierungsvorgang erfolgt sind, da Löschvorgänge und Programmiervorgänge im Allgemeinen eins-zu-eins erfolgen. Bei einer Variante könnte die Nutzung mehrerer Verifizierungsvorgänge durch die Anzahl von Löschvorgängen ausgelöst werden, die seit dem vorherigen Mehrfachverifizierungsvorgang erfolgt sind, anstatt auf der Gesamtanzahl von Löschzyklen. US-Patent Nr. 5,095,344 diskutiert das Verfolgen der Anzahl von Löschzyklen in einem Flash-Speichersystem.
  • Was das Fehlerkriterium für die Programmier-Verifizierung zum Auslösen weiterer nach dem Schreiben erfolgender Lese-Vergleichsvorgänge betrifft, so sei erwähnt, dass die Programmier-Verifizierung den Status darstellt, der von dem Speicher nach einem Programmiervorgang zurückgesendet wird, welcher anzeigt, ob sämtliche Zellen auf den gewünschten Pegel oder über diesen hinaus programmiert worden sind oder nicht. Diese Programmier-Verifizierung unterscheidet sich von der nach dem Schreiben erfolgenden Lese-Verifizierung, die in der Erfindung spezifiziert wird, bei welcher es sich um ein tatsächliches Lesen der Zellen handelt, um deren spezifischen Zustand zu bestimmen. Bei der Programmier-Verifizierung wird generell nicht überprüft, ob die Zellen den Sollzustand überschritten haben, möglicherweise, im Falle von Mehrzustandsspeichern, bis hin zum nächsten Zustand.
  • 8 stellt eine Implementierung mit drei Registern einer Ausführungsform mit zwei nach dem Schreiben erfolgenden Vergleichsverifikationen dar. Im Vergleich zu 7 sind die Schritte 6 und 7 hinzugekommen, für den zusätzlichen Vergleich. Der Prozess umfasst außerdem einen optionalen Transfer von Daten während Phase 3 (einen "Stream"-Programmierungsvorgang), der nicht explizit in 7 gezeigt ist, wenngleich er auch dort genutzt werden kann. Die Variante aus 8 unterscheidet sich außerdem von den vorherigen Sequenzen darin, dass die Einleitung eines Datentransfers für den nächsten Programmiervorgang mit der Einleitung des momentanen Programmiervorgangs anstatt mit der Lese-Verifizierung zusammenfällt. Wenn der Programmiervorgang länger dauert, ermöglicht dies eine längere Datentransferzeit parallel. Das entsprechende Taktungsdiagramm ist nachstehend in 12 dargestellt.
  • Die Abfolge der Ereignisse, die während eines Programmier/Verifizierungsvorgangs entsprechend der bevorzugten Ausführungsform der vorliegenden Erfindung auftritt, so wie sie in 8 gezeigt ist, umfasst:
    • 1. Transfer von Daten von einer (nicht gezeigten) externen Controllerschaltung zu dem Master-Datenregister 403.
    • 2. Transfer des Inhalts des Master-Datenregisters 403 zu dem Slave-Datenregister 404 und dem Datenvergleichsregister 405, zum Beispiel gleichzeitig. Alternativ kann das Datenvergleichsregister 405 nach dem Laden des Slave-Datenregisters 404, aber vor Schritt 5, geladen werden.
    • 3. Programmieren der Daten von dem Slave-Datenregister 404 in das Speicher-Array 400. i. Sobald der Inhalt des Master-Datenregisters 403 in das Slave-Datenregister 404 und das Datenvergleichsregister 405 übertragen ist, beginnen Datentransfers von dem externen Bus für den nächsten Programmiervorgang (Schritt 1) in das Master-Datenregister 403. Diese können gleichzeitig mit der Programmierung beginnen.
    • 4. Zurücklesen der Daten aus dem Speicher-Array 400 in das Slave-Datenregister 404 unter Bedingungen, die für die gegebene Iteration der Lese-Verifikation gewünscht werden.
    • 5. Vergleichen (430) der Daten in dem Slave-Register 404 mit denjenigen in dem Datenvergleichsregister 405. Das Ergebnis dieses Vergleichs wird in dem Status- Register 431 gespeichert, welches beispielsweise von einem externen Controller gelesen werden kann.
    • 6. Bestimmen, ob eine oder mehrere zusätzliche Lese-Verifizierungen erfolgen sollen, beispielsweise aufgrund eines der zuvor erwähnten Kriterien. Wiederholen der Schritte 4 bis 5 für sämtliche gewünschte Iterationen unter den gewünschten und möglicherweise anderen Lesebedingungen für jede Iteration.
    • 7. Wenn der Vergleich nicht bestanden wird, kann der externe Controller die geeigneten Fehlerbehebungsmaßnahmen anwenden, wie zuvor beschrieben.
  • Wie zuvor variieren die exakten Kosten hinsichtlich Zeit/Leistungsverhalten dieser Verifikationsvorgänge; bei Verwendung derselben exemplarischen Werte wie zuvor für die Dauer der einzelnen Vorgänge ergibt sich jedoch für das Beispiel mit einem einzigen Sektor aus 4 gemäß dem Stand der Technik bei zwei Vergleichsverifikationen nach dem Schreiben: TPgm/Vfy = TX + TPRG + TRD + TX + TRD + TX = 429 μs
  • Für das Beispiel gemäß dem Stand der Technik mit vier parallelen Sektoren ergibt sich bei zwei Vergleichsverifikationen nach dem Schreiben: TPgm/Vfy = 4·TX + TPRG + TRD + 4·TX + TRD + 4·TX = 666 μs
  • Für die Ausführungsform gemäß der Erfindung, wie sie in 8 gezeigt ist, dem Beispiel mit einem einzigen Sektor, ergibt sich: TPgm/Vfy = TX + TPRG + TRD + TRD = 376 μs,und für den Fall des Beispiels mit vier parallelen Sektoren: TPgm/Vfy = 4·TX + TPRG + TRD + TRD = 455 μs
  • Dies stellt eine Verbesserung von 12% bzw. eine Verbesserung von 32% dar. Man beachte, dass bei diesen Einsparungen nicht die Verbesserungen im Leistungsverhalten aufgrund der Stream-Programmierung berücksichtigt sind, die erzielt werden, indem die in die nachfolgenden Sektoren zu programmierenden Daten während der Programmierung der momentanen Sektoren transferiert werden.
  • Bei den bis hierher beschriebenen Ausführungsformen werden überall getrennte Register genutzt, nämlich das Datenvergleichsregister 405, um eine Kopie der Daten zu speichern, und das Slave-Datenregister 404, um die zu der Lese/Schreibschaltung 454 und von dieser transferierten Daten zu halten. Bei einer alternativen Gruppe von Ausführungsformen wird bei einer Implementierung mit zwei Registern nur ein Master-Register und ein Slave-Register genutzt, wobei das Master-Register auch als Vergleichsregister dient. Bei einer solchen Ausführungsform ist es möglich, den Datenvergleich auszuführen es wäre aber nicht möglich, den nächsten Datentransfer von dem Host in den Flash-Speicher-Controller zu beginnen, bevor nicht der vollständige Programmier/Verifizierungsvorgang abgeschlossen ist.
  • Sowohl eine einzelne Vergleichsverifizierung nach dem Schreiben als auch eine mehrfache Vergleichsverifizierung nach dem Schreiben, die für die Ausführungsform mit drei Registern in den 7 bzw. 8 gezeigt sind, kann bei Ausführungsformen mit zwei und einem Register genutzt werden. Bei einer Ausführungsform mit zwei Registern wird entweder eine Stream-Programmierung ausgeschlossen oder es muss ein nicht-destruktives Programmier-Verifizierungsschema genutzt werden; bei einer Ausführungsform mit einem einzigen Register kommen beide Maßnahmen zur Anwendung, wie in der nachstehenden Aufstellung beschrieben ist.
    Prog.-Verifizierg. Anz. d. Register destruktiv nicht-destruktiv
    1 nicht möglich keine Stream-Programmierung Vgl. MasterReg-Auslesung
    2 keine Stream-Programmierung Vgl. MasterReg-SlaveReg oder Vgl. MasterReg-Auslesung Stream-Programmierung Vgl. SlaveReg-Auslesung
    3 Stream-Programmierung Vgl. VglReg-SlaveReg oder Vgl. VglReg-Auslesung Stream-Programmierung Vgl. SlaveReg.-Auslesung Zusatzregister oder Vgl. SlaveReg-VglReg
  • Der erste Eintrag der Aufstellung in dem Block destruktiv für 3 Register stellt den mit Bezug auf die 7 und 8 beschriebenen Prozess dar. Bei einer Variante kann das Vergleichsregister (VglReg) direkt mit der Ausgabe des Leseprozesses verglichen werden, analog dem Prozess, der nachstehend für die nicht-destruktive Ausführungsform mit 1 Register beschrieben wird. Beim destruktiven Fall mit 2 Registern ist, da das Vergleichsregister (VglReg) nicht vorhanden ist, keine Stream-Programmierung möglich, da das Master-Register eine Kopie der Daten für den Vergleich mit entweder dem Slave-Register (SlaveReg) oder der Auslesung beibehält. Ein destruktiver Prozess mit 1 Register ist nicht möglich, da hier keine intakte Kopie der Daten in dem Speicher zur Nutzung für den Vergleich vorhanden sein wird.
  • In der Spalte nicht-destruktiv ermöglicht eine Ausführungsform mit 3 Registern eine Stream-Programmierung, da das Master-Register frei ist, sobald es den aktuellen Datensatz transferiert hat. In diesem Fall kann wie bei dem destruktiven Fall das Ergebnis der Programmierung gelesen werden und in dem Slave-Register gespeichert werden und mit dem Inhalt des Vergleichsregisters verglichen werden. Alternativ kann, da das Slave-Register eine Kopie der Daten hält, diese gespeicherte Kopie in dem Slave-Register direkt mit der Auslesung verglichen werden, in welchem Falle das Vergleichsregister redundant ist. Das Weglassen dieses nun redundanten Vergleichsregisters führt zu dem nicht-destruktiven Fall mit 2 Registern. Wenn anstatt der Nutzung eines Slave-Registers die nicht-destruktive Programmierung von Daten direkt von dem Master-Register aus erfolgt, ist eine Anordnung mit 1 Register möglich, wobei die in dem Master-Register beibehaltenen Daten direkt mit der Auslesung verglichen werden. Bei dieser Anordnung mit einem einzigen Register ist eine Stream-Programmierung nicht möglich. Man beachte zum Vorstehenden, dass der direkte Vergleich mit der Auslesung bei jedem Schema erfolgen kann.
  • 9 zeigt ein Beispiel für eine Realisierung mit zwei Registern mit einer nicht-destruktiven Programmier-Verifizierung und zwei Schreib-Vergleichsverifizierungsvorgängen. Die Aufgaben des Master- und des Vergleichsregisters werden von einem einzigen Register gemeinsam ausgeführt, sodass 405 und 403 aus 5 nun dasselbe sind, wobei 430 nun an einem Eingang mit 404 und an dem anderen mit dem Master-Datenregister 403/405 verbunden ist. Das Master-Register behält die Daten nach der Programmierung bei, um den Vergleich auszuführen.
  • Der Prozess für die Ausführungsform aus 9 ähnelt dem mit Bezug auf 8 beschriebenen:
    • 1. Transfer der Daten von einer (nicht gezeigten) externen Controllerschaltung zu dem Master-Datenregister 403.
    • 2. Transfer des Inhalts des Master-Datenregisters 403 zu dem Slave-Datenregister 404. Die Daten werden in dem Master-Datenregister 403 beibehalten.
    • 3. Programmieren der Daten von dem Slave-Datenregister 404 in das Speicher-Array 400. Da das Master-Datenregister 403 eine Kopie dieser Daten beibehält, kann in diesem Fall keine Stream-Programmierung erfolgen, es sei denn es stehen zusätzliche Register zur Verfügung.
    • 4. Zurücklesen der Daten aus dem Speicher-Array 400 in das Slave-Register 404 unter Bedingungen, die für die gegebene Iteration der Lese-Verifikation gewünscht werden.
    • 5. Vergleich (430) der in dem Slave-Register 404 vorhandenen Daten mit denen in dem Master-Datenregister 403. Das Ergebnis dieses Vergleichs wird in dem Statusregister 431 gespeichert, welches beispielsweise von einem externen Controller gelesen werden kann.
    • 6, 7. Wenn eine oder mehrere zusätzliche Lese-Verifizierungen erfolgen sollen, beispielsweise aufgrund eines der zuvor erwähnten Kriterien, werden in den Schritten 6 und 7 die Schritte 4 und 5 für sämtliche gewünschten Iterationen unter den für die jeweilige Iteration gewünschten Lesebedingungen wiederholt. Wenn der Vergleich nicht bestanden wird, kann der externe Controller wie zuvor die geeigneten Fehlerbehebungsmaßnahmen anwenden.
  • Sowohl der einzelne nach dem Schreiben erfolgende Vergleichsverifizierungsprozess als auch der mehrfache nach dem Schreiben erfolgende Vergleichsverifizierungsprozess können mit einem einzelnen Register ausgeführt werden, wenn ein nicht-destruktives Programmier-Verifizierungsschema genutzt wird. 10 stellt eine solche Anordnung für einen zweiteiligen Schreib-Vergleichsverifizierungsvorgang dar. Bei dieser Gruppe von alternativen Anordnungen erfolgt der Vergleich gleichzeitig mit dem Ende des Lese-prozesses, anstatt dass die Lesedaten in einem Register gespeichert werden und der gespeicherte Inhalt dieses Registers verglichen wird. Das Slave- und das Vergleichsregister (405 bzw. 404) aus 5 sind nun nicht vorhanden, wobei 430 nun an einem Eingang mit der Leseschaltung SA/PROG 454 und an dem anderen mit dem Master-Datenregister 403 verbunden ist. Wie bei 9 werden die Daten in dem Master-Datenregister 403 beibehalten; im Gegensatz zu 9 wird das Array von dem Master-Datenregister aus programmiert, ohne dass der Datensatz zerstört wird. Der Prozess für einen zweiteiligen nach dem Schreiben erfolgenden Vergleichsverifizierungsprozess in der in 10 gezeigten Ausführungsform läuft folgendermaßen ab:
    • 1. Transfer der Daten von einer (nicht gezeigten) externen Controllerschaltung zu dem Master-Datenregister 403.
    • 2. Programmieren der Daten aus dem Master-Datenregister 403 in das Speicher-Array 400. Die Daten werden in dem Master-Datenregister 403 beibehalten. Da das Master-Datenregister 403 eine Kopie dieser Daten beibehält, kann in diesem Fall keine Stream-Programmierung erfolgen, es sei denn es stehen zusätzliche Register zur Verfügung.
    • 3. Zurücklesen der Daten aus dem Speicher-Array 400 unter Bedingungen, die für eine gegebene Iteration der Lese-Verifizierung gewünscht werden, und direkter Vergleich mit den Daten in dem Master-Datenregister 403. Das Ergebnis dieses Vergleichs wird in dem Status-Register 431 gespeichert, das beispielsweise von einem externen Controller gelesen werden kann.
    • 4. Wenn eine oder mehrere zusätzliche Lese-Verifizierungen ausgeführt werden sollen, beispielsweise aufgrund eines der vorstehend erwähnten Kriterien, wird in Schritt 4 der Schritt 3 für sämtliche gewünschte Iterationen unter den für die jeweilige Iteration gewünschten Lesebedingungen wiederholt. Wenn der Vergleich nicht bestanden wird, kann der externe Controller wie zuvor die entsprechenden Fehlerbehebungsmaßnahmen anwenden.
  • Bei einer Variante der Anordnung mit einem einzigen Register gemäß 10 kann ein zweites Register 403 bereitgestellt werden, sodass dieses in einem Stream-Prozess mit den nächsten Daten geladen werden kann, während unter Nutzung des ersten Master-Datenregisters 403 die Schritte 14 ausgeführt werden. Nachdem der Prozess für das erste Register 403 abgeschlossen ist, wird die Rolle der beiden Master-Datenregister 403 vertauscht.
  • Die 11 und 12 stellen zwei Taktungsdiagramme dar, um die Nutzung der Stream-Programmierung zu veranschaulichen, nämlich den Vorgang, Daten auszugeben, die für die Programmierung nachfolgender Sektoren bestimmt sind, während die momentan in den Registern befindlichen Daten programmiert werden, und zwar bei Ausführungsformen, die diesen Prozess ermöglichen.
  • Das Diagramm aus 11 zeigt ein gemäß dem Stand der Technik bekanntes Beispiel eines parallelen Programmiervorgangs für zwei Sektoren, auf den jeweils ein einzelner Lesevorgang folgt und der auf einem anderen Protokoll basiert, als es in den 3 und 6 genutzt wird. Das exemplarische Protokoll aus 11 und auch das nachstehende aus 12 sind flexibler und anschaulicher, sodass eine einfachere Erklärung der Konzepte möglich ist. Um kurz die dargestellte Schnittstelle zu erklären, sei gesagt, dass die Leitung ALE aktiv hoch ist, wenn eine Adresse an den Speicher ausgegeben wird, die Leitung CLE aktiv hoch ist, wenn ein Befehl an den Speicher ausgegeben wird, die Leitung WE Daten, Adressen und Befehle taktet, die in den Speicher geschrieben werden, die Leitung RE Daten, Adressen und Befehle taktet, die aus dem Speicher gelesen werden, die Leitung R/B aktiv niedrig ist, wenn das Speicherbauelement einen Lese-, Schreib- oder Löschvorgang an dem Speicher-Array ausführt. Die Sequenzen C1.A und C1.B stellen Leseprozesse dar, bei denen die Daten von dem Speicherbauelement herunter transferiert werden, und zwar bei DATA N bzw. DATA N + 2 auf der Leitung I/O, wenn RE niedrig wird. Die Ausführungsform aus 11 kann auf einen Fall mit zwei Lesevorgängen für jeden Sektor erweitert werden, indem zum Beispiel die Sequenzen C1.A und C1.B wiederholt werden und indem jede Gruppe von Sequenzen mit einem anderen Befehl begonnen wird. Zum Beispiel können die Sequenzen einmal ausgegeben werden, wobei sie jeweils mit einem Befehl READ1 CMD beginnen, und dann erneut mit READ2 CMD, um andere Lesebedingungen anzuzeigen. Eine alternative Ausführungsform kann das Ausgeben eines gewissen Satzes von Parametern in Form von Daten vor jedem Lesebefehl beinhalten.
  • Bei gemäß dem Stand der Technik bekannten Implementierungen einer ähnlichen Schnittstelle wie der in 11 dargestellten bleibt wird jede Aktivität über die Schnittstelle ignoriert, während der Teil belegt ist, wenngleich es für den Aspekt der Implementierung der Stream-Programmierung der vorliegenden Erfindung erforderlich wäre, dass das Speicherbauelement dies gestattet. Die Diagramme aus den 11 und 12 stellen eine mögliche Implementierung im Rahmen der Schnittstelle dar, und andere Taktungsdiagramme sind möglich. Mit XFER CMD wird ein Datentransfer zu dem Speicherbauelement eingeleitet, und mit CACHE CMD wird ein Datentransfer zu dem Speicher abgeschlossen. PGM CMD kann genutzt werden, um den Transfer von Daten aus dem Master-Register zu dem Slave- und dem Vergleichsregister auszulösen. Sowohl die ADDR-Phase als auch die DATA-Phase werden in der Praxis aus mehreren Zyklen bestehen. Nach dem Datenschreibvorgang, welcher erfolgt, wenn die Leitung R/B zum ersten Mal niedrig wird, liefern STAT CMD und STAT den Status der Programmiervorgänge, einschließlich der Programmier-Verifizierungsphase, bei welcher festgestellt wird, ob die Soll-Pegel erreicht worden sind. Wiederum findet die Verifizierung, die als Teil des Programmierungsvorgangs erfolgt, getrennt von dem Prozess gemäß der vorliegenden Erfindung statt, welcher auf einem Lesevorgang basiert und nach dem Abschluss des Schreibprozesses erfolgt.
  • 12 zeigt ein partielles Taktungsdiagramm für ein Beispiel eines parallelen Programmiervorgangs für zwei Sektoren mit "Stream-Programmierung", auf welche eine einzige Vergleichsverifizierung für jeden Sektor folgt. Dieses Basisdiagramm enthält die Elemente für eine Reihe von unterschiedlichen Ausführungsformen, wenn die verschiedenen Elemente umgeordnet, geändert und wiederholt werden oder weggelassen werden.
  • Bei einer ersten Gruppe von Ausführungsformen erfolgt eine parallele Programmierung zweier Sektoren, eine Stream-Programmierung und eine einzige Vergleichsverifizierung nach dem Schreiben. Dies ist das Beispiel, das in 12 gezeigt ist. Nach dem Transfer der ersten beiden Datensektoren (N und N + 1) werden diese beiden Sektoren in das Speicher-Array programmiert, wenn R/B niedrig ist. Während diese Sektoren geschrieben werden, werden die nächsten beiden Sektoren (N + 2 und N + 3) in das Master-Datenregister transferiert, in der Sequenz C2.A. (Für diese spezielle Variante würde man eine Implementierung mit drei Registern oder eine nicht-destruktive Implementierung mit zwei Registern, bei welcher die Ausgabe des Arrays direkt mit dem Register verglichen wird, nutzen.) Darauf folgt eine Sequenz C2.B, in welcher die an der Adresse N gespeicherten Daten gelesen und verglichen werden, und eine Sequenz C2.C, in welcher die an der Adresse N + 1 gespeicherten Daten gelesen und verglichen werden. Der Rest der Sequenz C2.C, der sich über den in dem Diagramm gezeigten Teil hinaus fortsetzt, wird wie in Sequenz C2.B beendet.
  • Es kann gewählt werden, an welcher Stelle in der Sequenz der neue Datentransfer der Sequenz C2.A begonnen wird. Die in den 3 und 6 gezeigten Beispiele zeigen, dass der Datentransfer nach dem eigentlichen Programmiervorgang und während der nachfolgenden Lese-Verifizierung beginnt. Da die Lesevorgänge im Vergleich zu der Gesamtdauer mehrerer Datentransfers, die für einen parallelen Programmiervorgang erforderlich sind, relativ kurz dauern, würde ein Teil der Datentransferzeit nicht parallel zu dem Flash-Speicher-Betrieb erfolgen. Jede Datentransferzeit zusätzlich zu der Speicher-Betriebszeit wird das Leistungsverhalten im Vergleich zu dem Fall, bei dem alles parallel erfolgt, verschlechtern. Die 11 und 12 zeigen, dass der Datentransfer während des Programmiervorgangs beginnt. Da der Programmiervorgang lange dauert und auf diesen die Lese-Verifizierungsvorgänge folgen, wird ein viel größerer Anteil der Datentransferzeit parallel zu den Speicheroperationen liegen. Dies wird zu einer geringeren Verschlechterung des Leistungsverhaltens, wenn überhaupt, führen. In 12 müssen die Signale STAT CMD und STAT, die zwischen der Sequenz C2.A und der Sequenz C2.B auftreten, von den Signalen STAT CMD und STAT unterschieden werden, die innerhalb der Sequenz C2.B und der Sequenz C2.C auftreten. STAT CMD und STAT zwischen den Sequenzen C2.A und C2.B liefern den Status der Programmiervorgänge, die ausgeführt werden, während das Signal R/B niedrig ist, einschließlich der Programmier-Verifizierungsphase, bei welcher ermittelt wird, ob die Sollpegel erreicht worden sind. STAT CMD und STAT, die Teil der Sequenzen C2.B und C2.C sind, liefern den Status der nach dem Schreiben erfolgenden Lese-Verifizierungsvorgänge gemäß der vorliegenden Erfindung. Allgemeiner gesagt können bei alternativen Ausführungsformen unterschiedliche Befehle verwendet werden, wovon der eine Befehl für den Programmier-Verifizierungsstatus und der anderen für den Lese-Verifizierungsprozess bestimmt ist. Beim Vergleich der Sequenz C2.B aus 12 mit der Sequenz C1.A sollte beachtet werden, dass die Sequenz C1.A damit endet, dass Daten aus dem Speicher transferiert werden, während bei der Sequenz C2.B nur der Status übertragen wird. Bei einer alternativen Ausführungsform können die Daten parallel verglichen werden, und die Sequenz C2.B kann derart geändert werden, dass beide Adressen ausgegeben werden. Zum Beispiel könnte die kombinierte Sequenz C2.B/C2.C lauten: CMP1 CMD, ADDR N, ADDR N + 1, CMP EXEC CMD, STAT CMD, STAT, wobei der zusätzliche Befehl CMP EXEC CMD genutzt wird, um anzuzeigen, dass sämtliche zu vergleichende Adressen ausgegeben worden sind.
  • Bei einer weiteren alternativen Ausführungsform kann der Speicher die Vergleichssequenzen automatisch nach einem Programmiervorgang ausführen, sodass die Sequenzen C2.B und C2.C nicht erforderlich sind, in welchem Falle die Statusphase nach dem Programmiervorgang den Status des Vergleichs umfassen würde.
  • Bei einer weiteren Gruppe von Ausführungsformen erfolgt eine parallele Programmierung zweier Sektoren, eine Stream-Programmierung sowie mehrere Vergleichsverifizierungen nach dem Schreiben. Diese Sequenz kann auf den Fall zweier Vergleiche für jeden Sektor erweitert werden, z. B. durch Wiederholen der Sequenzen C2.B und C2.C und indem jeder Satz von Sequenzen mit einem anderen Befehl begonnen wird. Zum Beispiel werden die Sequenzen erstellt, indem einmal mit einem Befehl CMP1 CMD begonnen wird, und dann erneut mit CMP2 CMD, um andere Lesebedingungen anzuzeigen. Eine alternative Ausführungsform kann das Ausgeben eines gewissen Satzes von Parametern beinhalten, beispielsweise Spannungspegelwerten, die für das Lesen genutzt werden sollen, und zwar in Form von Daten vor jedem Lesebefehl. Bei einer weiteren Ausführungsform kann der Speicher die nach dem Schreiben erfolgenden Vergleiche auto matisieren, wie vorstehend beschrieben, wobei die Statusphase der Programmierung den Status des Vergleichs umfassen würde.
  • Bei einer noch weiteren Gruppe von Ausführungsformen erfolgt eine Programmierung zweier Sektoren, keine Stream-Programmierung, und eine beliebige Anzahl von Vergleichsverifizierungen nach dem Schreiben. Diese Ausführungsformen können bei den Anordnungen mit zwei oder einem Register aus den 9 und 10 implementiert werden. Die Sequenz kann geändert werden, sodass die Programmierung ohne Stream-Programmierung erfolgt, indem die Sequenz C2.A von ihrem Platz in dem Diagramm entfernt wird. Die Daten, die für die nachfolgenden Sektoren bestimmt sind, würden in einer Sequenz wie in der modifizierten 12 ausgegeben, aber mit den Adressen N + 2 und N + 3. Alle zuvor beschriebenen alternativen Ausführungsformen gelten.
  • Wie bereits erwähnt, können unterschiedliche Lesebedingungen für den Leseprozess der nach dem Schreiben erfolgenden Vergleichsverifizierung genutzt werden. Für Ausführungsformen, bei denen mehrere Vergleichsverifizierungen genutzt werden, kann jeder der mehreren einzelnen Lesevorgänge, die für die mehreren Vergleiche genutzt werden, mit einer unterschiedlichen Lesegrenzbedingung erfolgen. Die folgende Diskussion erfolgt anhand von nichtflüchtigen Mehrzustands-Speichereinheiten, wobei der binäre Fall in einfacher Weise daraus folgt. Obgleich außerdem in den Beispielen ein paralleler Betrieb für zwei Sektoren gezeigt ist, gilt die Erfindung auch für den Fall nur eines Sektors oder einer beliebigen Anzahl paralleler Sektoren.
  • 13 stellt eine exemplarische Verteilung von Zellenpopulationen und Lesegrenzbedingungen in einem Vierzustands-Speicher dar und zeigt zwei mögliche Sätze von Lesegrenzbedingungen, einen, der zu hoch programmierten Zuständen hin ausgerichtet ist, und einen, der zu niedrig programmierten Zuständen hin ausgerichtet ist. Weitere Details zu den verschiedenen Grenzpegeln und deren Anwendung sind in US-Patent Nr. 5,532,962 und in der US-Patentanmeldung Nr. 09/671,793, eingereicht am 27. September 2000 und als US 6,538,922 veröffentlicht, angegeben.
  • Das in 13 gezeigte Beispiel stellt das eines Strommess-Speichersystems dar, bei welchem die Stromstärke der Speichereinheit unter bestimmten Lesebedingungen mit einem Satz von Referenzstromstärken verglichen wird. Bei anderen Speichersystemen kann der Zustand einer Speichereinheit mithilfe einer Reihe anderer Parameter ermittelt werden. Bei den nachstehenden Beispielen kann die Ermittlung des gespeicherten Ladungspegels einer Zelle durch Stromstärkemessung erfolgen, wobei die Stärke der Leitfähigkeit der Zelle unter Anwendung festgelegter Vorspannungsbedingungen ermittelt wird. Alternativ kann diese Ermittlung über die Ermittlung einer Schwellspannung erfolgen, wobei das Einsetzen einer solchen Leitfähigkeit unter Nutzung variierender Steuergate-Vorspannungsbedingungen ermittelt wird. Diese Verfahren stellen eine Reihe der standardmäßigeren Ansätze dar.
  • Alternativ könnte die Ermittlung dynamisch erfolgen, indem man die Entladungsrate eines dynamisch gehaltenen (z. B. durch einen Vorladekondensator) Leseknotens von der durch den Ladungspegel der Zelle bestimmte Ansteuerstärke steuern lässt. Durch Ermitteln der Zeit bis zum Erreichen eines gegebenen Entladungspegels wird der gespeicherte Ladungspegel bestimmt. In diesem Fall stellt der den Zustand der Zelle anzeigende Parameter eine Zeit dar. Dieser Ansatz ist in US-Patent Nr. 6,222,762 und in der US-Patentanmeldung mit dem Titel "Sense Amplifier for Multilevel Non-Volatile Integrated Memory Devices" von Shahzad Khalid, eingereicht am 20. November 2001, beschrieben. Ein weiteres alternatives Verfahren ist ein solches, bei dem der Zustand der Speichereinheiten unter Nutzung einer Frequenz als Parameter ermittelt wird, ein Ansatz, der in US-Patent Nr. 6,044,019 beschrieben ist.
  • Derzeitige Leseansätze sind eingehender in US-Patent 5,172,338 und in der US-Patentanmeldung mit dem Aktenzeichen 08/910,947 (veröffentlicht als US 6,222,762 ) ausgeführt und können bei den verschiedenen beschriebenen Ausführungsformen der vorliegenden Erfindung angewendet werden. Der Ansatz mit Ermittlung der Schwellspannung Vth (alternativ als Spannungseingrenzung bezeichnet) kann in einigen Fällen vorzuziehen sein, da bei diesen die Leseauflösung verbessert wird, die Stromstärke und folglich die mit massiven parallelen Lesevorgängen in Zusammenhang stehende Leistungsaufnahme niedrig gehalten werden und die Empfindlichkeit gegenüber einem hohen Bitleitungswiderstand minimiert wird. Der Ansatz mit Ermittlung von Vth, oder Spannungseingrenzung, ist vollständiger in US-Patent Nr. 6,222,762 ausgeführt. Ein weiteres Verfahren der Spannungsermittlung, bei dem die Spannung an der Source-Elektrode für eine feststehende Drain-Spannung unter Ansprechen auf eine gegebene Gate-Spannung ermittelt wird, ist die Source-Folgetechnik, die zum Beispiel in der US-Patentanmeldung mit dem Aktenzeichen 09/671,793 (veröffentlicht als US 6,538,922 ) beschrieben ist.
  • 14 stellt eine exemplarische Möglichkeit für das Ändern der Lesebedingungen dar. Dieses Beispiel zeigt ein Stromstärkeermittlungsverfahren, bei welchem eine Grenzstrom stärke zu der Referenzstromstärke addiert wird, wobei die Summe aus diesen mit der Ausgangsstromstärke der Zelle verglichen wird. Das Beispiel zeigt einen parallelen Lesevorgang für die drei Messpunkte und erfordert, dass alle Referenzpegel gleichzeitig präsentiert werden, wogegen das Lesen bei einer anderen Ausführungsform mehrere Stufen einer Durchsuchung des Referenzraums mit einer einzelnen Referenzspannung oder Stromstärke beinhalten kann. Bei einem mehrfachen Vergleichsprozess könnten sich die Stromstärkegrenzwerte für die unterschiedlichen Vergleiche ändern. Die Art des Lesevorgangs wird von dem speziellen Schema abhängen. Bei der exemplarischen Ausführungsform aus 14 werden drei Referenzstromstärken genutzt, um die vier Zustände zu unterscheiden, während bei anderen Ausführungsformen vier Referenzstromstärken genutzt werden könnten, wie eingehender in den US-Patenten Nr. 5,172,338 und 5,095,344 ausgeführt ist.
  • Die verschiedenen Aspekte der vorliegenden Erfindung können auch für den Fall einer Adressierung durch Pegel in Mehrzustands-Speichersystemen genutzt werden. Dieses Schema beinhaltet das Abbilden zweier separat adressierbarer Host-Datensektoren, die als "obere Speicherseite" und "untere Speicherseite" bezeichnet werden, auf denselben Satz von Zellen in einem Vier-Zustands-Speicher. Bei diesem Schema wird jedes Bit Daten der unteren Speicherseite auf einen von zwei Zellenzuständen einer gegebenen Zelle programmiert, und jedes Bit Daten der oberen Speicherseite wird derart programmiert, dass der Zustand der jeweiligen gegebenen Zelle basierend auf dem Wert des gegebenen Bits modifiziert wird. Dieses Schema lässt sich auf eine höhere Anzahl von Zuständen pro Zelle erweitern. Dies ist vollständiger in der US-Patentanmeldung mit dem Aktenzeichen 09/893,277, eingereicht am 27. Juni 2001 (veröffentlicht als US 6,522,580 ) beschrieben und wird hier kurz dargestellt. 15 zeigt eine solche Ausführungsform einer Zustandszuweisung für eine Vier-Zustands-Zelle sowie die Nutzung in einem solchen Schema mit exemplarischen Spannungswerten.
  • 16 zeigt eine Registernutzung für eine Implementierung der vorliegenden Erfindung in einem Schema mit Adressierung über Zustand. In dem Diagramm ist gezeigt, dass es zum Lesen der untere Speicherseite erforderlich ist, zunächst mit der Granularität der oberen Speicherseite (Unterscheidungspunkt 0,8 V in 15) zu lesen und die Ergebnisse in einem Register, dem Register 1 (404a) zu speichern. Schritt 1 stellt einen normalen Lesevorgang der oberen Speicherseite dar, und Schritt 2 nutzt die zuvor gelesenen Daten der oberen Speicherseite, um die Bedingung für den nachfolgenden Lesevorgang der unteren Speicherseite festzulegen. Die untere Speicherseite wird während der zweiten Lesestufe in ein zweites Register, das Register 2 (404b) gelesen, wobei die Daten der oberen Speicherseite zurück in die Leseschaltung geführt werden, um die geeigneten Lesebedingungen auf bitweiser Basis festzulegen. Somit sind für einen einzigen Lesevorgang effektiv zwei Register erforderlich. Man beachte jedoch, dass nur eines der beiden Register für den Vergleich mit dem Vergleichsregister erforderlich ist, da es die fraglichen Daten enthalten wird. Für einen Lesevorgang der oberen Speicherseite sind nur eine Lesestufe und ein Register erforderlich. Um die Fähigkeiten zur Stream-Programmierung zu ergänzen, wird ein viertes Register, ein Register 4 (403), als Master-Register hinzugefügt. Einige Speicher können sowohl mit zwei als auch mit vier Zuständen betrieben werden. Bei einem Zwei-Zustands-Modus kann der Speicher das zusätzliche Register, das Register 1 (404a), das im Mehrzustands-Modus für den Lesevorgang der ersten Phase erforderlich ist, für andere Zwecke nutzen, beispielsweise zur Stream-Programmierung.
  • Im Vier-Zustands-Betrieb dienen das Register 1 (404a) und das Register 2 (404b) beide als Slave-Register, das Register 3 (405) stellt ein Vergleichsregister dar, und das Register 4 (403) dient als das Master-Register. Bei einem Betriebsmodus mit zwei Zuständen können die Register bezogen auf die vorherigen Diagramme folgendermaßen beschrieben werden: das Register 1 (404a) wäre das Slave-Register, das Register 4 (403) wäre das Master-Register, das Register 3 (405) wäre das Vergleichsregister, und für das Register 2 (404b) ist momentan keine Nutzung geplant. Bei einer Implementierung gemäß dem Stand der Technik, bei dem das vorstehende Leseschema mit oberer Speicherseite/unterer Speicherseite genutzt wird, fehlen das Register 3 (405) und das Register 4 (403), und es sind nur die beiden Register 1 (404a) und Register 2 (404b) vorhanden. Das Register 3 (405) und das Register 4 (403) werden für die Zwecke der Erfindung ergänzt.
  • Viele Aspekte der vorliegenden Erfindung beziehen sich nicht speziell auf die Details des Typs von Speichereinheit, der in dem Speicher-Array genutzt wird. Wenngleich die Diskussion bis hierher auf Ausführungsformen konzentriert war, bei denen ein Ladung speicherndes Bauelement, beispielsweise EEPROM- oder Flash-Zellen mit Floating-Gate, für das Speicherbauelement genutzt wird, kann die Erfindung auf Speichersysteme angewandt werden, bei denen andere Formen von Speichereinheiten genutzt werden. Die vorliegende Erfindung kann in Speichersystemen genutzt werden, die Sub-0,1 μm-Transistoren, Einzelelektronentransistoren, Nanotransistoren auf organischer/Kohlenstoffbasis und Molekulartransistoren enthalten, aber nicht ausschließlich. Zum Beispiel könnten auch solche NROM- und MNOS-Zellen genutzt werden, wie sie in US-Patent 5,768,192 von Eitan und in US-Patent 4,630,086 von Sato et al. beschrieben sind, oder solche magnetischen RAM- und FRAM-Zellen, wie sie in US-Patent 5,991,193 von Gallagher et al. bzw. in US-Patent 5,892,706 von Shimizu et al. beschrieben sind. Für diese anderen Zellentypen können die speziellen Mechanismen der Lese- und Schreibprozesse abweichen, die Erweiterung der verschiedenen Aspekte gemäß der vorliegenden Erfindung auf diese folgt jedoch in einfacher Weise aus den vorstehenden Beispielen.
  • Es sollte verstanden werden, dass, wenngleich zahlreiche Merkmale und Vorteile bestimmter Ausführungsformen der vorliegenden Erfindung in der vorstehenden Beschreibung ausgeführt worden sind, zusammen mit Details bezüglich der Struktur und Funktion verschiedener Ausführungsformen der Erfindung, diese Offenbarung lediglich der Veranschaulichung dient, und dass im Rahmen der Prinzipien der vorliegenden Erfindung in ihrem vollen Umfang, der durch die breite allgemeine Bedeutung der in den anhängenden Ansprüchen ausgedrückten Festlegungen angegeben ist, Änderungen im Detail, insbesondere hinsichtlich der Struktur und Anordnung von Teilen, vorgenommen werden können. Wenngleich zum Beispiel die vorliegend beschriebene bevorzugte Ausführungsform auf Speicher ausgerichtet ist, bei denen Festkörper-Mikroelektronik auf Halbleiterbasis genutzt wird, wird für Fachleute auf dem Gebiet zu erkennen sein, dass die Lehren der vorliegenden Erfindung auf andere Speicher angepasst werden können, die organische oder chemische Schalter im molekularen Maßstab nutzen. Der Schutzumfang der anhängenden Ansprüche soll also nicht auf die vorliegend beschriebenen bevorzugten Ausführungsformen beschränkt sein.

Claims (13)

  1. Nichtflüchtiges Speicherbauelement, umfassend: ein Array (400) aus nichtflüchtigen Speicherzellen; ein Master-Datenregister (403) zum Empfangen von Daten, die in dem Array gespeichert werden sollen; ein Datenvergleichsregister (405) zum Empfangen von Daten aus dem Master-Datenregister; ein Slave-Datenregister (404) zum Empfangen von Daten aus dem Array; und eine Vergleichsschaltung (430) zum Vergleichen der in dem Slave-Datenregister und dem Datenvergleichsregister gespeicherten Daten, um die korrekte Programmierung von Daten in dem Array zu verifizieren; dadurch gekennzeichnet, dass das Master-Datenregister dafür ausgelegt ist, einen nachfolgenden Satz Daten zur Programmierung in das Array zu empfangen und/oder zu halten, während der Vergleich erfolgt.
  2. Nichtflüchtiges Speicherbauelement, umfassend: ein Array (400) aus nichtflüchtigen Speicherzellen; ein Master-Datenregister (403) zum Empfangen von Daten, die in dem Array gespeichert werden sollen, wobei das Master-Datenregister die Daten nach der Speicherung beibehält; ein Slave-Datenregister (404) zum Empfangen von Daten aus dem Array; und eine Vergleichsschaltung (430) zum Vergleichen der in dem Slave-Datenregister und dem Master-Datenregister gespeicherten Daten, um die korrekte Programmierung der Daten in dem Array zu verifizieren; dadurch gekennzeichnet, dass das Master-Datenregister dafür ausgelegt ist, einen nachfolgenden Satz Daten zur Programmierung in das Array zu empfangen und/oder zu halten, während der Vergleich erfolgt.
  3. Bauelement nach Anspruch 1 oder Anspruch 2, wobei die Speicherzellen Flash-Speicherzellen umfassen.
  4. Bauelement nach Anspruch 1 oder Anspruch 2, wobei die Speicherzellen Mehrzustands-Speicherzellen darstellen.
  5. System, welches ein Speicherbauelement entsprechend einem der vorhergehenden Ansprüche sowie einen Controller (301) umfasst, der dafür ausgelegt ist zu bewirken, dass Daten unter Ansprechen darauf, dass der Vergleich einen Fehler anzeigt, erneut in das Array geschrieben werden.
  6. System, umfassend: ein Speicherbauelement gemäß einem der Ansprüche 1 bis 5 sowie einen Controller (301), wobei die Vergleichsschaltung dafür ausgelegt ist, einen Vergleich in einem Prozess auszuführen, der von dem Speicherbauelement unabhängig von dem Controller initiiert wird.
  7. Verfahren zum Betreiben eines nichtflüchtigen Speicherbauelements, welches folgende Schritte umfasst: Empfangen von Daten, die in einem Array aus nichtflüchtigen Speicherzellen gespeichert werden sollen; Speichern der Daten in einem Master-Datenregister; Speichern der Daten in einem Datenvergleichsregister; Programmieren der Daten in das Array; Lesen der Daten, wie sie in dem Array gespeichert sind; Speichern der gelesenen Daten in einem Slave-Datenregister; und Vergleichen der in dem Slave-Datenregister und in dem Datenvergleichsregister gespeicherten Daten, um die korrekte Programmierung der Daten in dem Array zu verifizieren; dadurch gekennzeichnet, dass das Master-Datenregister gleichzeitig mit einem oder mehreren der Schritte des Programmierens, Lesens und Vergleichens einen zweiten Satz Daten zur Programmierung in das Array empfängt und/oder hält.
  8. Verfahren zum Betreiben eines nichtflüchtigen Speicherbauelements, welches folgende Schritte umfasst: Empfangen von Daten, die in einem Array aus nichtflüchtigen Speicherzellen gespeichert werden sollen; Speichern der Daten in einem Master-Datenregister; Programmieren der Daten in das Array, während die Daten in dem Master-Datenregister beibehalten werden; Lesen der Daten, so wie sie in dem Array gespeichert sind; Speichern der gelesenen Daten in einem Slave-Datenregister; und Vergleichen der in dem Slave-Datenregister und dem Master-Datenregister gespeicherten Daten, um die korrekte Programmierung der Daten in dem Array zu verifizieren; dadurch gekennzeichnet, dass das Master-Datenregister gleichzeitig mit einem oder mehreren der Schritte des Programmierens, Lesens und Vergleichens einen zweiten Satz Daten zur Programmierung in das Array empfängt und/oder hält.
  9. Verfahren nach Anspruch 7 oder Anspruch 8, wobei die Daten vor dem Schritt des Programmierens von dem Master-Datenregister zu dem Slave-Datenregister übertragen werden.
  10. Verfahren nach einem der Ansprüche 7 bis 9, welches, wenn ein Ergebnis des Vergleichsschritts die unrichtige Programmierung der Daten in dem Array anzeigt, den zusätzlichen Schritt der erneuten Programmierung der Daten in das Array umfasst.
  11. Verfahren nach Anspruch 10, welches den Schritt umfasst, nach dem erneuten Programmierungsschritt die Schritte des Lesens und Vergleichens zu wiederholen.
  12. Verfahren nach einem der Ansprüche 7 bis 9, welches, wenn ein Ergebnis des Vergleichsschritts die unrichtige Programmierung von Daten in dem Array anzeigt, den zusätzlichen Schritt umfasst, Fehlerbehebungsmaßnahmen auszuführen.
  13. Verfahren nach Anspruch 12, welches nach dem Schritt des Ausführens von Fehlerbehebungsmaßnahmen das Wiederholen der Schritte des Lesens und Vergleichens umfasst.
DE60132830T 2000-12-28 2001-12-28 Neuartiges verfahren und struktur zur effizienten datenverifizierungsoperation für nichtflüchtige speicher Expired - Lifetime DE60132830T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US751178 2000-12-28
US09/751,178 US6349056B1 (en) 2000-12-28 2000-12-28 Method and structure for efficient data verification operation for non-volatile memories
PCT/US2001/051573 WO2002099806A2 (en) 2000-12-28 2001-12-28 Novel method and structure for efficient data verification operation for non-volatile memories

Publications (2)

Publication Number Publication Date
DE60132830D1 DE60132830D1 (de) 2008-03-27
DE60132830T2 true DE60132830T2 (de) 2009-02-05

Family

ID=25020829

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60132830T Expired - Lifetime DE60132830T2 (de) 2000-12-28 2001-12-28 Neuartiges verfahren und struktur zur effizienten datenverifizierungsoperation für nichtflüchtige speicher

Country Status (10)

Country Link
US (5) US6349056B1 (de)
EP (1) EP1488429B1 (de)
JP (2) JP4129428B2 (de)
KR (1) KR100921763B1 (de)
CN (1) CN100474452C (de)
AT (1) ATE386329T1 (de)
AU (1) AU2001297851A1 (de)
DE (1) DE60132830T2 (de)
TW (1) TWI241590B (de)
WO (1) WO2002099806A2 (de)

Families Citing this family (280)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7827348B2 (en) * 2000-01-06 2010-11-02 Super Talent Electronics, Inc. High performance flash memory devices (FMD)
US7886108B2 (en) * 2000-01-06 2011-02-08 Super Talent Electronics, Inc. Methods and systems of managing memory addresses in a large capacity multi-level cell (MLC) based flash memory device
US20080209114A1 (en) * 1999-08-04 2008-08-28 Super Talent Electronics, Inc. Reliability High Endurance Non-Volatile Memory Device with Zone-Based Non-Volatile Memory File System
US6961546B1 (en) * 1999-10-21 2005-11-01 Broadcom Corporation Adaptive radio transceiver with offset PLL with subsampling mixers
US20080320209A1 (en) * 2000-01-06 2008-12-25 Super Talent Electronics, Inc. High Performance and Endurance Non-volatile Memory Based Storage Systems
US7071771B2 (en) * 2000-12-11 2006-07-04 Kabushiki Kaisha Toshiba Current difference divider circuit
JP2002184190A (ja) * 2000-12-11 2002-06-28 Toshiba Corp 不揮発性半導体記憶装置
US6757193B2 (en) * 2001-05-31 2004-06-29 Macronix International Co., Ltd. Coding method of multi-level memory cell
US6929634B2 (en) * 2001-08-22 2005-08-16 Gore Enterprise Holdings, Inc. Apparatus and methods for treating stroke and controlling cerebral flow characteristics
JP4034949B2 (ja) * 2001-09-06 2008-01-16 株式会社ルネサステクノロジ 不揮発性半導体記憶装置
JP3802411B2 (ja) * 2001-12-20 2006-07-26 株式会社東芝 不揮発性半導体記憶装置のデータコピー方法
US6871257B2 (en) * 2002-02-22 2005-03-22 Sandisk Corporation Pipelined parallel programming operation in a non-volatile memory system
US7136304B2 (en) * 2002-10-29 2006-11-14 Saifun Semiconductor Ltd Method, system and circuit for programming a non-volatile memory array
US6829167B2 (en) * 2002-12-12 2004-12-07 Sandisk Corporation Error recovery for nonvolatile memory
US7392436B2 (en) * 2003-05-08 2008-06-24 Micron Technology, Inc. Program failure recovery
US7237074B2 (en) * 2003-06-13 2007-06-26 Sandisk Corporation Tracking cells for a memory system
JP4156499B2 (ja) * 2003-11-28 2008-09-24 株式会社日立製作所 ディスクアレイ装置
US7173863B2 (en) * 2004-03-08 2007-02-06 Sandisk Corporation Flash controller cache architecture
TWI289304B (en) * 2004-02-17 2007-11-01 Hon Hai Prec Ind Co Ltd Data structure design system and method for prolonging useful life of FRAM
US7213177B2 (en) * 2004-03-14 2007-05-01 Benq Corporation Method for detecting and eliminating errors in application data of an electronic device
US7490283B2 (en) 2004-05-13 2009-02-10 Sandisk Corporation Pipelined data relocation and improved chip architectures
US8429313B2 (en) * 2004-05-27 2013-04-23 Sandisk Technologies Inc. Configurable ready/busy control
US7009889B2 (en) * 2004-05-28 2006-03-07 Sandisk Corporation Comprehensive erase verification for non-volatile memory
US7401258B1 (en) * 2004-09-30 2008-07-15 Xilinx, Inc. Circuit for and method of accessing instruction data written to a memory
KR100576485B1 (ko) 2004-12-06 2006-05-10 주식회사 하이닉스반도체 플래쉬 메모리 소자의 프로그램 검증 방법
GB2421092B (en) * 2004-12-07 2008-12-03 Hewlett Packard Development Co Bufferless writing of data to memory
US7120051B2 (en) * 2004-12-14 2006-10-10 Sandisk Corporation Pipelined programming of non-volatile memories using early data
US7420847B2 (en) * 2004-12-14 2008-09-02 Sandisk Corporation Multi-state memory having data recovery after program fail
US7158421B2 (en) * 2005-04-01 2007-01-02 Sandisk Corporation Use of data latches in multi-phase programming of non-volatile memories
US7849381B2 (en) * 2004-12-21 2010-12-07 Sandisk Corporation Method for copying data in reprogrammable non-volatile memory
US7409473B2 (en) * 2004-12-21 2008-08-05 Sandisk Corporation Off-chip data relocation
US7882299B2 (en) * 2004-12-21 2011-02-01 Sandisk Corporation System and method for use of on-chip non-volatile memory write cache
US7206230B2 (en) * 2005-04-01 2007-04-17 Sandisk Corporation Use of data latches in cache operations of non-volatile memories
KR100626392B1 (ko) 2005-04-01 2006-09-20 삼성전자주식회사 읽기 속도를 향상시킬 수 있는 플래시 메모리 장치
US7463521B2 (en) * 2005-04-01 2008-12-09 Sandisk Corporation Method for non-volatile memory with managed execution of cached data
US7447078B2 (en) * 2005-04-01 2008-11-04 Sandisk Corporation Method for non-volatile memory with background data latch caching during read operations
US7522470B2 (en) * 2005-05-30 2009-04-21 Seiko Epson Corporation Semiconductor memory device
US7694071B1 (en) * 2005-07-12 2010-04-06 Seagate Technology Llc Disk drives and methods allowing configurable zoning
US7739472B2 (en) 2005-11-22 2010-06-15 Sandisk Corporation Memory system for legacy hosts
US7747927B2 (en) 2005-11-22 2010-06-29 Sandisk Corporation Method for adapting a memory system to operate with a legacy host originally designed to operate with a different memory system
ATE467893T1 (de) * 2005-11-22 2010-05-15 Sandisk Corp Verfahren und speichersystem für legacy-hosts
US7352629B2 (en) * 2005-12-29 2008-04-01 Sandisk Corporation Systems for continued verification in non-volatile memory write operations
US7307887B2 (en) * 2005-12-29 2007-12-11 Sandisk Corporation Continued verification in non-volatile memory write operations
US20070234143A1 (en) * 2006-01-25 2007-10-04 Samsung Electronics Co., Ltd. Semiconductor memory devices and methods of testing for failed bits of semiconductor memory devices
US7428180B2 (en) * 2006-01-25 2008-09-23 Samsung Electronics Co., Ltd. Semiconductor memory devices and methods of testing for failed bits of semiconductor memory devices
US7471562B2 (en) * 2006-05-08 2008-12-30 Macronix International Co., Ltd. Method and apparatus for accessing nonvolatile memory with read error by changing read reference
US8077516B2 (en) * 2006-05-08 2011-12-13 Macronix International Co., Ltd. Method and apparatus for accessing memory with read error by changing comparison
US7773421B2 (en) * 2006-05-08 2010-08-10 Macronix International Co., Ltd. Method and apparatus for accessing memory with read error by changing comparison
KR101202537B1 (ko) 2006-05-12 2012-11-19 애플 인크. 메모리 디바이스를 위한 결합된 왜곡 추정 및 에러 보정 코딩
WO2007132452A2 (en) 2006-05-12 2007-11-22 Anobit Technologies Reducing programming error in memory devices
US8239735B2 (en) 2006-05-12 2012-08-07 Apple Inc. Memory Device with adaptive capacity
CN103280239B (zh) 2006-05-12 2016-04-06 苹果公司 存储设备中的失真估计和消除
US7304893B1 (en) 2006-06-30 2007-12-04 Sandisk Corporation Method of partial page fail bit detection in flash memory devices
US7355892B2 (en) * 2006-06-30 2008-04-08 Sandisk Corporation Partial page fail bit detection in flash memory devices
US7680841B2 (en) * 2006-07-26 2010-03-16 International Business Machines Corporation Determining whether data written to source storage locations according to a write order is copied to corresponding target storage locations in the write order
KR100744013B1 (ko) * 2006-07-31 2007-07-30 삼성전자주식회사 플래시 메모리 장치 및 그것의 소거 방법
EP2487794A3 (de) * 2006-08-22 2013-02-13 Mosaid Technologies Incorporated Modulare Befehlsstruktur für einen Speicher und Speichersystem
WO2008026203A2 (en) 2006-08-27 2008-03-06 Anobit Technologies Estimation of non-linear distortion in memory devices
US7450425B2 (en) * 2006-08-30 2008-11-11 Micron Technology, Inc. Non-volatile memory cell read failure reduction
KR100819106B1 (ko) * 2006-09-27 2008-04-02 삼성전자주식회사 상변화 메모리 장치에서의 라이트 동작방법
WO2008053473A2 (en) 2006-10-30 2008-05-08 Anobit Technologies Ltd. Memory cell readout using successive approximation
US7975192B2 (en) 2006-10-30 2011-07-05 Anobit Technologies Ltd. Reading memory cells using multiple thresholds
KR100849715B1 (ko) * 2006-11-07 2008-08-01 주식회사 하이닉스반도체 글로벌 페이지 버퍼를 구비하는 낸드형 플래쉬 메모리소자및 데이터 리드 방법
US7924648B2 (en) 2006-11-28 2011-04-12 Anobit Technologies Ltd. Memory power and performance management
US8151163B2 (en) 2006-12-03 2012-04-03 Anobit Technologies Ltd. Automatic defect management in memory devices
KR100926475B1 (ko) * 2006-12-11 2009-11-12 삼성전자주식회사 멀티 비트 플래시 메모리 장치 및 그것의 프로그램 방법
US7900102B2 (en) 2006-12-17 2011-03-01 Anobit Technologies Ltd. High-speed programming of memory devices
US7940595B2 (en) * 2006-12-22 2011-05-10 Sidense Corp. Power up detection system for a memory device
WO2008077240A1 (en) * 2006-12-22 2008-07-03 Sidense Corp. Mask programmable anti-fuse architecture
KR100897604B1 (ko) 2007-01-03 2009-05-14 삼성전자주식회사 검증 성공된 메모리 셀에 대하여 재검증이 가능한 비휘발성 메모리 장치의 구동 방법 및 비휘발성 메모리 장치
KR100885912B1 (ko) * 2007-01-23 2009-02-26 삼성전자주식회사 기입된 데이터 값에 기초하여 데이터를 선택적으로검증하는 데이터 검증 방법 및 반도체 메모리 장치
KR100877610B1 (ko) * 2007-01-23 2009-01-09 삼성전자주식회사 페이지 데이터 저장 방법과 저장 장치
US7751240B2 (en) 2007-01-24 2010-07-06 Anobit Technologies Ltd. Memory device with negative thresholds
US8151166B2 (en) 2007-01-24 2012-04-03 Anobit Technologies Ltd. Reduction of back pattern dependency effects in memory devices
KR100877609B1 (ko) * 2007-01-29 2009-01-09 삼성전자주식회사 버퍼 메모리의 플래그 셀 어레이를 이용하여 데이터 오류 정정을 수행하는 반도체 메모리 시스템 및 그 구동 방법
KR100871700B1 (ko) * 2007-02-13 2008-12-08 삼성전자주식회사 불휘발성 메모리 장치에서 전하 손실에 기인한 오류 데이터정정 방법
WO2008111058A2 (en) 2007-03-12 2008-09-18 Anobit Technologies Ltd. Adaptive estimation of memory cell read thresholds
US8001320B2 (en) 2007-04-22 2011-08-16 Anobit Technologies Ltd. Command interface for memory devices
WO2008139441A2 (en) 2007-05-12 2008-11-20 Anobit Technologies Ltd. Memory device with internal signal processing unit
US8234545B2 (en) 2007-05-12 2012-07-31 Apple Inc. Data storage with incremental redundancy
US7925936B1 (en) 2007-07-13 2011-04-12 Anobit Technologies Ltd. Memory device with non-uniform programming levels
US8259497B2 (en) 2007-08-06 2012-09-04 Apple Inc. Programming schemes for multi-level analog memory cells
US7944702B2 (en) 2007-08-27 2011-05-17 Super Talent Electronics, Inc. Press-push flash drive apparatus with metal tubular casing and snap-coupled plastic sleeve
US7619925B2 (en) * 2007-08-29 2009-11-17 Macronix International Co., Ltd. Virtual ground array memory and programming method thereof
US8174905B2 (en) 2007-09-19 2012-05-08 Anobit Technologies Ltd. Programming orders for reducing distortion in arrays of multi-level analog memory cells
WO2009037697A2 (en) * 2007-09-20 2009-03-26 Densbits Technologies Ltd. Improved systems and methods for determining logical values of coupled flash memory cells
WO2009095902A2 (en) 2008-01-31 2009-08-06 Densbits Technologies Ltd. Systems and methods for handling immediate data errors in flash memory
US7773413B2 (en) 2007-10-08 2010-08-10 Anobit Technologies Ltd. Reliable data storage in analog memory cells in the presence of temperature variations
US8068360B2 (en) 2007-10-19 2011-11-29 Anobit Technologies Ltd. Reading analog memory cells using built-in multi-threshold commands
US8527819B2 (en) * 2007-10-19 2013-09-03 Apple Inc. Data storage in analog memory cell arrays having erase failures
US8000141B1 (en) 2007-10-19 2011-08-16 Anobit Technologies Ltd. Compensation for voltage drifts in analog memory cells
US8694715B2 (en) 2007-10-22 2014-04-08 Densbits Technologies Ltd. Methods for adaptively programming flash memory devices and flash memory systems incorporating same
WO2009053961A2 (en) 2007-10-25 2009-04-30 Densbits Technologies Ltd. Systems and methods for multiple coding rates in flash devices
KR101509836B1 (ko) 2007-11-13 2015-04-06 애플 인크. 멀티 유닛 메모리 디바이스에서의 메모리 유닛의 최적화된 선택
US7924628B2 (en) * 2007-11-14 2011-04-12 Spansion Israel Ltd Operation of a non-volatile memory array
US8098532B2 (en) 2007-11-20 2012-01-17 Kabushiki Kaisha Toshiba Non-volatile semiconductor storage device with address search circuit used when writing
US7945825B2 (en) * 2007-11-25 2011-05-17 Spansion Isreal, Ltd Recovery while programming non-volatile memory (NVM)
US8225181B2 (en) 2007-11-30 2012-07-17 Apple Inc. Efficient re-read operations from memory devices
US8116083B2 (en) * 2007-12-04 2012-02-14 Super Talent Electronics, Inc. Lipstick-type USB device with tubular housing
US8453022B2 (en) 2007-12-05 2013-05-28 Densbits Technologies Ltd. Apparatus and methods for generating row-specific reading thresholds in flash memory
WO2009072105A2 (en) * 2007-12-05 2009-06-11 Densbits Technologies Ltd. A low power chien-search based bch/rs decoding system for flash memory, mobile communications devices and other applications
WO2009072103A2 (en) 2007-12-05 2009-06-11 Densbits Technologies Ltd. Flash memory apparatus and methods using a plurality of decoding stages including optional use of concatenated bch codes and/or designation of 'first below' cells
US8359516B2 (en) 2007-12-12 2013-01-22 Densbits Technologies Ltd. Systems and methods for error correction and decoding on multi-level physical media
US8209588B2 (en) 2007-12-12 2012-06-26 Anobit Technologies Ltd. Efficient interference cancellation in analog memory cell arrays
WO2009074979A2 (en) 2007-12-12 2009-06-18 Densbits Technologies Ltd. Chien-search system employing a clock-gating scheme to save power for error correction decoder and other applications
US8456905B2 (en) 2007-12-16 2013-06-04 Apple Inc. Efficient data storage in multi-plane memory devices
WO2009078006A2 (en) 2007-12-18 2009-06-25 Densbits Technologies Ltd. Apparatus for coding at a plurality of rates in multi-level flash memory systems, and methods useful in conjunction therewith
US8085586B2 (en) 2007-12-27 2011-12-27 Anobit Technologies Ltd. Wear level estimation in analog memory cells
US8156398B2 (en) 2008-02-05 2012-04-10 Anobit Technologies Ltd. Parameter estimation based on error correction code parity check equations
US20090201748A1 (en) * 2008-02-11 2009-08-13 Sony Corporation Removable nonvolatile memory system with destructive read
US7924587B2 (en) 2008-02-21 2011-04-12 Anobit Technologies Ltd. Programming of analog memory cells using a single programming pulse per state transition
US7864573B2 (en) 2008-02-24 2011-01-04 Anobit Technologies Ltd. Programming analog memory cells for reduced variance after retention
US8230300B2 (en) 2008-03-07 2012-07-24 Apple Inc. Efficient readout from analog memory cells using data compression
US8059457B2 (en) 2008-03-18 2011-11-15 Anobit Technologies Ltd. Memory device with multiple-accuracy read commands
US8400858B2 (en) 2008-03-18 2013-03-19 Apple Inc. Memory device with reduced sense time readout
US8972472B2 (en) * 2008-03-25 2015-03-03 Densbits Technologies Ltd. Apparatus and methods for hardware-efficient unbiased rounding
US8116123B2 (en) * 2008-06-27 2012-02-14 Seagate Technology Llc Spin-transfer torque memory non-destructive self-reference read method
US8116122B2 (en) * 2008-06-27 2012-02-14 Seagate Technology Llc Spin-transfer torque memory self-reference read method
TWI386803B (zh) * 2008-07-02 2013-02-21 Silicon Motion Inc 快閃記憶卡及快閃記憶體預防資料毀損的方法
US7995388B1 (en) 2008-08-05 2011-08-09 Anobit Technologies Ltd. Data storage using modified voltages
US7924613B1 (en) 2008-08-05 2011-04-12 Anobit Technologies Ltd. Data storage in analog memory cells with protection against programming interruption
US8332725B2 (en) 2008-08-20 2012-12-11 Densbits Technologies Ltd. Reprogramming non volatile memory portions
US8949684B1 (en) 2008-09-02 2015-02-03 Apple Inc. Segmented data storage
US8169825B1 (en) 2008-09-02 2012-05-01 Anobit Technologies Ltd. Reliable data storage in analog memory cells subjected to long retention periods
US8000135B1 (en) 2008-09-14 2011-08-16 Anobit Technologies Ltd. Estimation of memory cell read thresholds by sampling inside programming level distribution intervals
US8482978B1 (en) 2008-09-14 2013-07-09 Apple Inc. Estimation of memory cell read thresholds by sampling inside programming level distribution intervals
CN101685676B (zh) * 2008-09-26 2014-07-02 美光科技公司 确定存储器页状况
US7969782B2 (en) 2008-09-26 2011-06-28 Micron Technology, Inc. Determining memory page status
US8239734B1 (en) 2008-10-15 2012-08-07 Apple Inc. Efficient data storage in storage device arrays
US7813168B2 (en) * 2008-10-27 2010-10-12 Seagate Technology Llc Spin-transfer torque memory self-reference read and write assist methods
US7826260B2 (en) * 2008-10-27 2010-11-02 Seagate Technology Llc Spin-transfer torque memory self-reference read and write assist methods
US8095834B2 (en) 2008-10-30 2012-01-10 Micron Technology, Inc. Macro and command execution from memory array
US8261159B1 (en) 2008-10-30 2012-09-04 Apple, Inc. Data scrambling schemes for memory devices
US7898838B2 (en) * 2008-10-31 2011-03-01 Seagate Technology Llc Resistive sense memory calibration for self-reference read method
US7876604B2 (en) * 2008-11-05 2011-01-25 Seagate Technology Llc Stram with self-reference read scheme
US8208304B2 (en) 2008-11-16 2012-06-26 Anobit Technologies Ltd. Storage at M bits/cell density in N bits/cell analog memory cell devices, M>N
US8159864B2 (en) * 2008-12-08 2012-04-17 Qualcomm Incorporated Data integrity preservation in spin transfer torque magnetoresistive random access memory
US8174857B1 (en) 2008-12-31 2012-05-08 Anobit Technologies Ltd. Efficient readout schemes for analog memory cell devices using multiple read threshold sets
US8248831B2 (en) 2008-12-31 2012-08-21 Apple Inc. Rejuvenation of analog memory cells
US8924661B1 (en) 2009-01-18 2014-12-30 Apple Inc. Memory system including a controller and processors associated with memory devices
US8161355B2 (en) * 2009-02-11 2012-04-17 Mosys, Inc. Automatic refresh for improving data retention and endurance characteristics of an embedded non-volatile memory in a standard CMOS logic process
US8228701B2 (en) 2009-03-01 2012-07-24 Apple Inc. Selective activation of programming schemes in analog memory cell arrays
US8296628B2 (en) * 2009-03-06 2012-10-23 Texas Instruments Incorporated Data path read/write sequencing for reduced power consumption
US8259506B1 (en) 2009-03-25 2012-09-04 Apple Inc. Database of memory read thresholds
US8832354B2 (en) 2009-03-25 2014-09-09 Apple Inc. Use of host system resources by memory controller
US8819385B2 (en) 2009-04-06 2014-08-26 Densbits Technologies Ltd. Device and method for managing a flash memory
US8458574B2 (en) 2009-04-06 2013-06-04 Densbits Technologies Ltd. Compact chien-search based decoding apparatus and method
US8238157B1 (en) 2009-04-12 2012-08-07 Apple Inc. Selective re-programming of analog memory cells
US8566510B2 (en) 2009-05-12 2013-10-22 Densbits Technologies Ltd. Systems and method for flash memory management
US8479080B1 (en) 2009-07-12 2013-07-02 Apple Inc. Adaptive over-provisioning in memory systems
US9330767B1 (en) 2009-08-26 2016-05-03 Avago Technologies General Ip (Singapore) Pte. Ltd. Flash memory module and method for programming a page of flash memory cells
US8305812B2 (en) * 2009-08-26 2012-11-06 Densbits Technologies Ltd. Flash memory module and method for programming a page of flash memory cells
US8868821B2 (en) 2009-08-26 2014-10-21 Densbits Technologies Ltd. Systems and methods for pre-equalization and code design for a flash memory
US8995197B1 (en) 2009-08-26 2015-03-31 Densbits Technologies Ltd. System and methods for dynamic erase and program control for flash memory device memories
US8730729B2 (en) 2009-10-15 2014-05-20 Densbits Technologies Ltd. Systems and methods for averaging error rates in non-volatile devices and storage systems
US8495465B1 (en) 2009-10-15 2013-07-23 Apple Inc. Error correction coding over multiple memory pages
US8724387B2 (en) 2009-10-22 2014-05-13 Densbits Technologies Ltd. Method, system, and computer readable medium for reading and programming flash memory cells using multiple bias voltages
US8634240B2 (en) * 2009-10-28 2014-01-21 SanDisk Technologies, Inc. Non-volatile memory and method with accelerated post-write read to manage errors
US8423866B2 (en) * 2009-10-28 2013-04-16 SanDisk Technologies, Inc. Non-volatile memory and method with post-write read and adaptive re-write to manage errors
US8214700B2 (en) 2009-10-28 2012-07-03 Sandisk Technologies Inc. Non-volatile memory and method with post-write read and adaptive re-write to manage errors
US8504884B2 (en) * 2009-10-29 2013-08-06 Freescale Semiconductor, Inc. Threshold voltage techniques for detecting an imminent read failure in a memory array
US8626988B2 (en) * 2009-11-19 2014-01-07 Densbits Technologies Ltd. System and method for uncoded bit error rate equalization via interleaving
US8677054B1 (en) 2009-12-16 2014-03-18 Apple Inc. Memory management schemes for non-volatile memory devices
US9037777B2 (en) 2009-12-22 2015-05-19 Densbits Technologies Ltd. Device, system, and method for reducing program/read disturb in flash arrays
US8607124B2 (en) * 2009-12-24 2013-12-10 Densbits Technologies Ltd. System and method for setting a flash memory cell read threshold
US8694814B1 (en) 2010-01-10 2014-04-08 Apple Inc. Reuse of host hibernation storage space by memory controller
US8572311B1 (en) 2010-01-11 2013-10-29 Apple Inc. Redundant data storage in multi-die memory systems
US8700970B2 (en) * 2010-02-28 2014-04-15 Densbits Technologies Ltd. System and method for multi-dimensional decoding
US8527840B2 (en) 2010-04-06 2013-09-03 Densbits Technologies Ltd. System and method for restoring damaged data programmed on a flash device
US9104610B2 (en) 2010-04-06 2015-08-11 Densbits Technologies Ltd. Method, system and medium for analog encryption in a flash memory
US8745317B2 (en) 2010-04-07 2014-06-03 Densbits Technologies Ltd. System and method for storing information in a multi-level cell memory
US9021177B2 (en) 2010-04-29 2015-04-28 Densbits Technologies Ltd. System and method for allocating and using spare blocks in a flash memory
US8694853B1 (en) 2010-05-04 2014-04-08 Apple Inc. Read commands for reading interfering memory cells
US8799747B2 (en) * 2010-06-03 2014-08-05 Seagate Technology Llc Data hardening to compensate for loss of data retention characteristics in a non-volatile memory
US8572423B1 (en) 2010-06-22 2013-10-29 Apple Inc. Reducing peak current in memory systems
US8510639B2 (en) 2010-07-01 2013-08-13 Densbits Technologies Ltd. System and method for multi-dimensional encoding and decoding
US8539311B2 (en) 2010-07-01 2013-09-17 Densbits Technologies Ltd. System and method for data recovery in multi-level cell memories
US20120008414A1 (en) 2010-07-06 2012-01-12 Michael Katz Systems and methods for storing, retrieving, and adjusting read thresholds in flash memory storage system
US8305807B2 (en) 2010-07-09 2012-11-06 Sandisk Technologies Inc. Detection of broken word-lines in memory arrays
US8432732B2 (en) 2010-07-09 2013-04-30 Sandisk Technologies Inc. Detection of word-line leakage in memory arrays
US8514630B2 (en) 2010-07-09 2013-08-20 Sandisk Technologies Inc. Detection of word-line leakage in memory arrays: current based approach
US8595591B1 (en) 2010-07-11 2013-11-26 Apple Inc. Interference-aware assignment of programming levels in analog memory cells
US9104580B1 (en) 2010-07-27 2015-08-11 Apple Inc. Cache memory for hybrid disk drives
US8767459B1 (en) 2010-07-31 2014-07-01 Apple Inc. Data storage in analog memory cells across word lines using a non-integer number of bits per cell
US8856475B1 (en) 2010-08-01 2014-10-07 Apple Inc. Efficient selection of memory blocks for compaction
US8694854B1 (en) 2010-08-17 2014-04-08 Apple Inc. Read threshold setting based on soft readout statistics
US8964464B2 (en) 2010-08-24 2015-02-24 Densbits Technologies Ltd. System and method for accelerated sampling
US8508995B2 (en) 2010-09-15 2013-08-13 Densbits Technologies Ltd. System and method for adjusting read voltage thresholds in memories
US9021181B1 (en) 2010-09-27 2015-04-28 Apple Inc. Memory management for unifying memory cell conditions by using maximum time intervals
US9063878B2 (en) 2010-11-03 2015-06-23 Densbits Technologies Ltd. Method, system and computer readable medium for copy back
US8850100B2 (en) 2010-12-07 2014-09-30 Densbits Technologies Ltd. Interleaving codeword portions between multiple planes and/or dies of a flash memory device
US8472280B2 (en) 2010-12-21 2013-06-25 Sandisk Technologies Inc. Alternate page by page programming scheme
US10079068B2 (en) 2011-02-23 2018-09-18 Avago Technologies General Ip (Singapore) Pte. Ltd. Devices and method for wear estimation based memory management
US8693258B2 (en) 2011-03-17 2014-04-08 Densbits Technologies Ltd. Obtaining soft information using a hard interface
US8990665B1 (en) 2011-04-06 2015-03-24 Densbits Technologies Ltd. System, method and computer program product for joint search of a read threshold and soft decoding
WO2012151001A1 (en) * 2011-04-30 2012-11-08 Rambus Inc. Configurable, error-tolerant memory control
US8379454B2 (en) 2011-05-05 2013-02-19 Sandisk Technologies Inc. Detection of broken word-lines in memory arrays
US9396106B2 (en) 2011-05-12 2016-07-19 Avago Technologies General Ip (Singapore) Pte. Ltd. Advanced management of a non-volatile memory
US9110785B1 (en) 2011-05-12 2015-08-18 Densbits Technologies Ltd. Ordered merge of data sectors that belong to memory space portions
US8996790B1 (en) 2011-05-12 2015-03-31 Densbits Technologies Ltd. System and method for flash memory management
US9501392B1 (en) 2011-05-12 2016-11-22 Avago Technologies General Ip (Singapore) Pte. Ltd. Management of a non-volatile memory module
US9372792B1 (en) 2011-05-12 2016-06-21 Avago Technologies General Ip (Singapore) Pte. Ltd. Advanced management of a non-volatile memory
US9195592B1 (en) 2011-05-12 2015-11-24 Densbits Technologies Ltd. Advanced management of a non-volatile memory
US8667211B2 (en) 2011-06-01 2014-03-04 Densbits Technologies Ltd. System and method for managing a non-volatile memory
US8456911B2 (en) 2011-06-07 2013-06-04 Sandisk Technologies Inc. Intelligent shifting of read pass voltages for non-volatile storage
US8726104B2 (en) 2011-07-28 2014-05-13 Sandisk Technologies Inc. Non-volatile memory and method with accelerated post-write read using combined verification of multiple pages
US8775901B2 (en) 2011-07-28 2014-07-08 SanDisk Technologies, Inc. Data recovery for defective word lines during programming of non-volatile memory arrays
US8750042B2 (en) 2011-07-28 2014-06-10 Sandisk Technologies Inc. Combined simultaneous sensing of multiple wordlines in a post-write read (PWR) and detection of NAND failures
US8588003B1 (en) 2011-08-01 2013-11-19 Densbits Technologies Ltd. System, method and computer program product for programming and for recovering from a power failure
US8553468B2 (en) 2011-09-21 2013-10-08 Densbits Technologies Ltd. System and method for managing erase operations in a non-volatile memory
CN102509557B (zh) * 2011-11-04 2014-10-15 珠海天威技术开发有限公司 电可擦可编程只读存储器的数据擦写控制装置及方法、芯片及其数据写入方法、耗材容器
US8947941B2 (en) 2012-02-09 2015-02-03 Densbits Technologies Ltd. State responsive operations relating to flash memory cells
US8996788B2 (en) 2012-02-09 2015-03-31 Densbits Technologies Ltd. Configurable flash interface
US8730722B2 (en) 2012-03-02 2014-05-20 Sandisk Technologies Inc. Saving of data in cases of word-line to word-line short in memory arrays
WO2013134890A1 (en) * 2012-03-13 2013-09-19 Micron Technology, Inc. Nonconsecutive sensing of multilevel memory cells
US8996793B1 (en) 2012-04-24 2015-03-31 Densbits Technologies Ltd. System, method and computer readable medium for generating soft information
US8838937B1 (en) 2012-05-23 2014-09-16 Densbits Technologies Ltd. Methods, systems and computer readable medium for writing and reading data
US8879325B1 (en) 2012-05-30 2014-11-04 Densbits Technologies Ltd. System, method and computer program product for processing read threshold information and for reading a flash memory module
US8566671B1 (en) 2012-06-29 2013-10-22 Sandisk Technologies Inc. Configurable accelerated post-write read to manage errors
US9921954B1 (en) 2012-08-27 2018-03-20 Avago Technologies General Ip (Singapore) Pte. Ltd. Method and system for split flash memory management between host and storage controller
US9368225B1 (en) 2012-11-21 2016-06-14 Avago Technologies General Ip (Singapore) Pte. Ltd. Determining read thresholds based upon read error direction statistics
CN103001956A (zh) * 2012-11-23 2013-03-27 杭州也要买电子商务有限公司 一种对系统读操作请求进行权限验证的方法
US9069659B1 (en) 2013-01-03 2015-06-30 Densbits Technologies Ltd. Read threshold determination using reference read threshold
US9076530B2 (en) 2013-02-07 2015-07-07 Seagate Technology Llc Non-volatile write buffer data retention pending scheduled verification
US9552296B2 (en) * 2013-03-15 2017-01-24 International Business Machines Corporation Verifying shared memory integrity
US9250995B2 (en) * 2013-05-29 2016-02-02 Seagate Technology Llc Protection of data in memory
US9136876B1 (en) 2013-06-13 2015-09-15 Densbits Technologies Ltd. Size limited multi-dimensional decoding
CN103345610B (zh) * 2013-06-20 2015-09-23 武汉天喻信息产业股份有限公司 快速验证智能卡数据完整性的设备及方法
US20150006784A1 (en) * 2013-06-27 2015-01-01 Sandisk Technologies Inc. Efficient Post Write Read in Three Dimensional Nonvolatile Memory
US9063671B2 (en) 2013-07-02 2015-06-23 Sandisk Technologies Inc. Write operations with full sequence programming for defect management in nonvolatile memory
US9218242B2 (en) * 2013-07-02 2015-12-22 Sandisk Technologies Inc. Write operations for defect management in nonvolatile memory
US9165683B2 (en) 2013-09-23 2015-10-20 Sandisk Technologies Inc. Multi-word line erratic programming detection
US9413491B1 (en) 2013-10-08 2016-08-09 Avago Technologies General Ip (Singapore) Pte. Ltd. System and method for multiple dimension decoding and encoding a message
US9786388B1 (en) 2013-10-09 2017-10-10 Avago Technologies General Ip (Singapore) Pte. Ltd. Detecting and managing bad columns
US9348694B1 (en) 2013-10-09 2016-05-24 Avago Technologies General Ip (Singapore) Pte. Ltd. Detecting and managing bad columns
US9397706B1 (en) 2013-10-09 2016-07-19 Avago Technologies General Ip (Singapore) Pte. Ltd. System and method for irregular multiple dimension decoding and encoding
US9043537B1 (en) 2013-11-21 2015-05-26 Sandisk Technologies Inc. Update block programming order
US9213601B2 (en) 2013-12-03 2015-12-15 Sandisk Technologies Inc. Adaptive data re-compaction after post-write read verification operations
KR102140784B1 (ko) * 2013-12-03 2020-08-03 삼성전자주식회사 비휘발성 메모리 장치의 데이터 기록 방법
US9058881B1 (en) 2013-12-05 2015-06-16 Sandisk Technologies Inc. Systems and methods for partial page programming of multi level cells
US9244631B2 (en) 2013-12-06 2016-01-26 Sandisk Technologies Inc. Lower page only host burst writes
US9239756B2 (en) * 2013-12-13 2016-01-19 Sandisk Technologies Inc. Systems and methods for performing data recovery in a memory system
DE102014101945A1 (de) * 2013-12-23 2015-06-25 Endress + Hauser Gmbh + Co. Kg Messumformer mit Überwachungsfunktion
US9208023B2 (en) * 2013-12-23 2015-12-08 Sandisk Technologies Inc. Systems and methods for scheduling post-write read in nonvolatile memory
US9536612B1 (en) 2014-01-23 2017-01-03 Avago Technologies General Ip (Singapore) Pte. Ltd Digital signaling processing for three dimensional flash memory arrays
US10120792B1 (en) 2014-01-29 2018-11-06 Avago Technologies General Ip (Singapore) Pte. Ltd. Programming an embedded flash storage device
US8902652B1 (en) 2014-05-13 2014-12-02 Sandisk Technologies Inc. Systems and methods for lower page writes
US8886877B1 (en) 2014-05-15 2014-11-11 Sandisk Technologies Inc. In-situ block folding for nonvolatile memory
US9542262B1 (en) 2014-05-29 2017-01-10 Avago Technologies General Ip (Singapore) Pte. Ltd. Error correction
US9892033B1 (en) 2014-06-24 2018-02-13 Avago Technologies General Ip (Singapore) Pte. Ltd. Management of memory units
US9972393B1 (en) 2014-07-03 2018-05-15 Avago Technologies General Ip (Singapore) Pte. Ltd. Accelerating programming of a flash memory module
US9584159B1 (en) 2014-07-03 2017-02-28 Avago Technologies General Ip (Singapore) Pte. Ltd. Interleaved encoding
US9449702B1 (en) 2014-07-08 2016-09-20 Avago Technologies General Ip (Singapore) Pte. Ltd. Power management
US9460809B2 (en) 2014-07-10 2016-10-04 Sandisk Technologies Llc AC stress mode to screen out word line to word line shorts
US9514835B2 (en) 2014-07-10 2016-12-06 Sandisk Technologies Llc Determination of word line to word line shorts between adjacent blocks
US9484086B2 (en) 2014-07-10 2016-11-01 Sandisk Technologies Llc Determination of word line to local source line shorts
US9443612B2 (en) 2014-07-10 2016-09-13 Sandisk Technologies Llc Determination of bit line to low voltage signal shorts
US9240249B1 (en) 2014-09-02 2016-01-19 Sandisk Technologies Inc. AC stress methods to screen out bit line defects
US9202593B1 (en) 2014-09-02 2015-12-01 Sandisk Technologies Inc. Techniques for detecting broken word lines in non-volatile memories
US9449694B2 (en) 2014-09-04 2016-09-20 Sandisk Technologies Llc Non-volatile memory with multi-word line select for defect detection operations
US9524211B1 (en) 2014-11-18 2016-12-20 Avago Technologies General Ip (Singapore) Pte. Ltd. Codeword management
US10305515B1 (en) 2015-02-02 2019-05-28 Avago Technologies International Sales Pte. Limited System and method for encoding using multiple linear feedback shift registers
KR102292217B1 (ko) 2015-02-06 2021-08-24 삼성전자주식회사 내부적으로 데이터 읽기 검증을 수행할 수 있는 메모리 장치, 이의 작동 방법, 및 이를 포함하는 메모리 시스템
CN106158030B (zh) * 2015-04-28 2019-09-24 旺宏电子股份有限公司 对存储器装置编程的方法以及相关的存储器装置
KR20170140225A (ko) * 2015-04-30 2017-12-20 마이크로칩 테크놀로지 인코포레이티드 향상된 명령어 세트를 구비한 중앙 처리 유닛
US10628255B1 (en) 2015-06-11 2020-04-21 Avago Technologies International Sales Pte. Limited Multi-dimensional decoding
JP6359491B2 (ja) * 2015-06-12 2018-07-18 東芝メモリ株式会社 半導体記憶装置
US9851921B1 (en) 2015-07-05 2017-12-26 Avago Technologies General Ip (Singapore) Pte. Ltd. Flash memory chip processing
US9659666B2 (en) 2015-08-31 2017-05-23 Sandisk Technologies Llc Dynamic memory recovery at the sub-block level
US9619321B1 (en) 2015-10-08 2017-04-11 Seagate Technology Llc Internal copy-back with read-verify
US9858009B2 (en) 2015-10-26 2018-01-02 Sandisk Technologies Llc Data folding in 3D nonvolatile memory
CN105389239A (zh) * 2015-12-10 2016-03-09 浪潮电子信息产业股份有限公司 天梭k1系统路由模块寄存器信息自动校验方法
US9954558B1 (en) 2016-03-03 2018-04-24 Avago Technologies General Ip (Singapore) Pte. Ltd. Fast decoding of data stored in a flash memory
US9996280B2 (en) * 2016-03-15 2018-06-12 Sandisk Technologies Llc Data register copying for non-volatile storage array operations
US9952775B2 (en) * 2016-08-11 2018-04-24 SK Hynix Inc. Unusable column mapping in flash memory devices
TWI708253B (zh) * 2018-11-16 2020-10-21 力旺電子股份有限公司 非揮發性記憶體良率提升的設計暨測試方法
KR102711942B1 (ko) * 2019-01-11 2024-09-27 주식회사 엘지에너지솔루션 에러 복구 방법, 이를 이용한 마이크로 컨트롤러 유닛, 및 상기 마이크로 컨트롤러를 포함하는 배터리 장치
KR20210118453A (ko) 2019-04-30 2021-09-30 양쯔 메모리 테크놀로지스 씨오., 엘티디. 플래시 메모리의 판독 레벨을 관리하는 전자 장치 및 방법
US11556416B2 (en) 2021-05-05 2023-01-17 Apple Inc. Controlling memory readout reliability and throughput by adjusting distance between read thresholds
US11847342B2 (en) 2021-07-28 2023-12-19 Apple Inc. Efficient transfer of hard data and confidence levels in reading a nonvolatile memory

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4577293A (en) * 1984-06-01 1986-03-18 International Business Machines Corporation Distributed, on-chip cache
US5602789A (en) * 1991-03-12 1997-02-11 Kabushiki Kaisha Toshiba Electrically erasable and programmable non-volatile and multi-level memory systemn with write-verify controller
JPH08249893A (ja) * 1995-03-07 1996-09-27 Toshiba Corp 半導体記憶装置
JP3152720B2 (ja) * 1991-03-12 2001-04-03 株式会社東芝 不揮発性半導体記憶装置
JP2647321B2 (ja) * 1991-12-19 1997-08-27 株式会社東芝 不揮発性半導体記憶装置及びこれを用いた記憶システム
US5532962A (en) * 1992-05-20 1996-07-02 Sandisk Corporation Soft errors handling in EEPROM devices
JP3212396B2 (ja) * 1993-01-14 2001-09-25 富士通株式会社 不揮発性半導体記憶装置
US5748939A (en) * 1993-06-30 1998-05-05 Intel Corporation Memory device with a central control bus and a control access register for translating an access request into an access cycle on the central control bus
US5410544A (en) * 1993-06-30 1995-04-25 Intel Corporation External tester control for flash memory
JP3013714B2 (ja) * 1994-09-28 2000-02-28 日本電気株式会社 半導体記憶装置
KR100208433B1 (ko) * 1995-12-27 1999-07-15 김영환 플래쉬 메모리 소자 및 그를 이용한 프로그램 방법
KR100223868B1 (ko) * 1996-07-12 1999-10-15 구본준 비휘발성 메모리를 프로그램하는 방법
US5890152A (en) * 1996-09-09 1999-03-30 Seymour Alvin Rapaport Personal feedback browser for obtaining media files
JP3796851B2 (ja) * 1996-10-21 2006-07-12 ソニー株式会社 不揮発性半導体記憶装置
JP3898349B2 (ja) * 1997-07-29 2007-03-28 株式会社東芝 半導体記憶装置
JP2000013581A (ja) 1998-06-24 2000-01-14 Ricoh Co Ltd ファクシミリ装置
JP2000123581A (ja) * 1998-10-14 2000-04-28 Hitachi Ltd 半導体記憶装置の書き込み方法、および半導体記憶装置
JP3219069B2 (ja) * 1999-01-25 2001-10-15 エヌイーシーマイクロシステム株式会社 不揮発性半導体記憶装置
JP2000251484A (ja) * 1999-02-26 2000-09-14 Sony Corp 不揮発性半導体記憶装置
US6266273B1 (en) * 2000-08-21 2001-07-24 Sandisk Corporation Method and structure for reliable data copy operation for non-volatile memories

Also Published As

Publication number Publication date
WO2002099806A2 (en) 2002-12-12
ATE386329T1 (de) 2008-03-15
JP2005507129A (ja) 2005-03-10
US7170782B2 (en) 2007-01-30
US20030174555A1 (en) 2003-09-18
WO2002099806A3 (en) 2004-09-30
EP1488429A2 (de) 2004-12-22
KR20030068202A (ko) 2003-08-19
KR100921763B1 (ko) 2009-10-15
AU2001297851A1 (en) 2002-12-16
CN1620703A (zh) 2005-05-25
DE60132830D1 (de) 2008-03-27
JP4129428B2 (ja) 2008-08-06
US6560143B2 (en) 2003-05-06
TWI241590B (en) 2005-10-11
US7376011B2 (en) 2008-05-20
US20020126528A1 (en) 2002-09-12
US20070109858A1 (en) 2007-05-17
EP1488429B1 (de) 2008-02-13
CN100474452C (zh) 2009-04-01
US6349056B1 (en) 2002-02-19
AU2001297851A8 (en) 2005-11-03
US20050195653A1 (en) 2005-09-08
US6972993B2 (en) 2005-12-06
JP2007257831A (ja) 2007-10-04

Similar Documents

Publication Publication Date Title
DE60132830T2 (de) Neuartiges verfahren und struktur zur effizienten datenverifizierungsoperation für nichtflüchtige speicher
DE60129710T2 (de) Anordnung und struktur für zuverlässige dateikopieoperation für nicht-flüchtige speicher
DE69034191T2 (de) EEPROM-System mit aus mehreren Chips bestehender Blocklöschung
DE4433098C2 (de) Halbleiter-Permanentspeichervorrichtung
DE102006020180B3 (de) Verfahren zum Programmieren eines Blocks von Speicherzellen, nicht-flüchtiger Speicher und Speicherkarte
DE10301458B4 (de) Speicherbaustein und zugehöriges Lösch-, Programmier- und Rückkopierverfahren
DE60017838T2 (de) Nichtflüchtiger Speicher Typ NAND
DE602004003275T2 (de) Nichtflüchtiger Speicher mit Seiten-Kopierfunktion und entsprechendes Verfahren
DE102005057112B4 (de) Nichtflüchtiges Speicherbauelement und Programmierverfahren
DE60213620T2 (de) Nichtflüchtiger speicher mit blocklöschung
DE69502169T2 (de) Verfahren zum Einschreiben von Daten in einen Speicher und entsprechender elektrisch-programmierbarer Speicher
DE69522326T2 (de) Bitmap-orientierte adressierung für einen flash-speicher
DE69615568T2 (de) Verfahren und vorrichtung zur verifikation einer speicherzelle von einer nichtflüssigen speicherschaltung
DE69524913T2 (de) Nichtflüchtige Halbleiter-Speicherzelle mit Korrekturmöglichkeit einer überschriebenen Zelle, und Korrekturverfahren
DE102007016460A1 (de) Nichtflüchtiges Speicherbauelement, nichtflüchtiges Speichersystem und Leseverfahren für ein nichtflüchtiges Speicherbauelement
DE102007041845A1 (de) Verfahren zum Betreiben eines integrierten Schaltkreises mit mindestens einer Speicherzelle
DE10046022A1 (de) Nichtflüchtige Halbleiterspeichervorrichtung mit einer Konstruktion zum Speichern mehrwertiger Daten und Datenablagesystem, das diese nichtflüchtige Halbleiterspeichervorrichtung enthält
DE4309814A1 (de) Nichtflüchtige Halbleiterspeichervorrichtung
DE112010000955T5 (de) NAND-Flasharchitektur mit mehrstufiger Zeilendecodierung
DE102005040226A1 (de) Nichtflüchtiges Speicherbauelement und Testverfahren
DE102005035084A1 (de) Speicherbauelement und Programmierverfahren
DE102008032235A1 (de) Nichtflüchtiges Speicherbauelement, Löschverfahren und Löschtestverfahren
DE112005003436T5 (de) Halbleiterbauelement, Adressenzuordnungsverfahren und Verifizierungsverfahren
DE19615660A1 (de) Schaltung zur Aufbringung einer Belastungsspannung in eine Blockeinheit für die Verwendung in einer Halbleiterspeichervorrichtung
DE102010037064A1 (de) Nichtflüchtige Speichervorrichtung und -system sowie Verfahren des Programmierens einer nichtflüchtigen Speichervorrichtung

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
R082 Change of representative

Ref document number: 1488429

Country of ref document: EP

Representative=s name: PATENTANWAELTE MAXTON LANGMAACK & PARTNER, DE