PatentDe  


Dokumentenidentifikation DE69732637T2 29.12.2005
EP-Veröffentlichungsnummer 0000926687
Titel Selbsttest und Korrektur von Ladungsverlustfehlern in einem Sektorenlöschbaren und-programmierbaren Flashspeicher
Anmelder STMicroelectronics S.r.l., Agrate Brianza, Mailand/Milano, IT
Erfinder Cappelletti, Paolo, 20030 Seveso, IT;
Maurelli, Alfonso, 20050 Sulbiate, IT;
Olivo, Marco, 24123 Bergamo, IT
Vertreter Boeters & Lieck, 81541 München
DE-Aktenzeichen 69732637
Vertragsstaaten DE, FR, GB, IT
Sprache des Dokument EN
EP-Anmeldetag 22.12.1997
EP-Aktenzeichen 978306934
EP-Offenlegungsdatum 30.06.1999
EP date of grant 02.03.2005
Veröffentlichungstag im Patentblatt 29.12.2005
IPC-Hauptklasse G11C 29/00
IPC-Nebenklasse G06F 11/10   

Beschreibung[de]
Gebiet der Anmeldung

Die vorliegende Erfindung betrifft Flash-EPROM- oder einfacher Flash-Speicher und insbesondere Flash-Speicher, die sektorweise löschbar und neu programmierbar sind.

Hintergrund der Erfindung

Es gibt eine ständige Entwicklung zu Flash-Speichervorrichtungen mit höheren und höheren Speicherkapazitäten, die durch die Reduzierung der Größe der Speicherzellen erreicht werden.

Wie jedem Praktiker bekannt ist, werden die Einschränkungen bei der Maßstabverkleinerung integrierter Vorrichtungen, daneben daß sie auf technologische Einschränkungen der Herstellungsprozesse zurückzuführen sind, auch durch zunehmende Kritikalitäten bestimmt, die die Zuverlässigkeit der hergestellten Vorrichtungen und daher die Ausbeute des Fertigungsprozesses negativ beeinflussen.

Üblicherweise werden hergestellte Vorrichtungen in Beziehung auf bekannte kritische Mechanismen geprüft, die durch den Maßstabverkleinerungsprozeß betont werden, indem die Vorrichtungen speziell gestalteten Prüfzyklen unterworfen werden.

Während dieser Prüfzyklen ist einer der Faktoren zur Steigerung kritischer Aspekte die Temperatur, deren Erhöhung im allgemeinen dazu neigt, die Ausfallmechanismen dieser Vorrichtungen zu verschlimmern oder zu beschleunigen, die Elemente oder Zellen enthalten, die an der Grenze ihrer Zuverlässigkeit arbeiten.

Es ist kürzlich ein neuer Fehlermechanismus von Flash-Speichern entdeckt worden, der scheinbar ausschließlich durch Durchläufe verursacht wird, das heißt durch die Anzahl von Löschungs- und Programmierungszyklen, denen die Speichervorrichtung unterworfen ist, und der sich als ein Ladungsverlust einzelner Zellen während ausgedehnter Tests der Datenspeicherung von Daten manifestiert, die bei einer niedrigen Temperatur (zum Beispiel bei Umgebungstemperatur) programmiert werden.

Obwohl die Wahrscheinlichkeit dieser Erscheinung hinsichtlich der Anzahl verlorener Bits sehr niedrig ist (die von 10–8 bis 10–9 reicht), bringt ihr Auftreten den Ausfall von Speichern mit sich, die eine Kapazität von vielen Megabyte aufweisen, wobei die Erfüllung von spezifizierten Fehlersollwerten verfehlt wird, die durch viele Anwendungen dieser Vorrichtungen benötigt werden.

Andererseits eignet sich diese Art von Fehler kaum für eine vorbeugende Aussonderung auf der Ebene eines Prüfprozesses, da der Fehlermechanismus durch die Anzahl der Zyklen induziert wird und der Ladungsverlust nicht auf andere Weise beschleunigt werden kann.

An dieses Problem ist kürzlich auf einer Systemebene her angegangen worden, indem eine zweckbestimmte Auffrischoperation des Inhalts des programmierten Speichers eingeführt wurde. Jedoch beseitigt dies nicht das Problem, da das erfordert, daß das System permanent eingeschaltet ist, wohingegen eine besondere Eigenschaft von nichtflüchtigen Speichern aus ihrer Fähigkeit bestehen sollte, die programmierte Information selbst beim Fehlen einer Stromversorgung zu behalten.

US-A-5,475,693 beschreibt ein Verfahren zum Prüfen der Korrektheit von Daten, wenn sie aus dem Speicher gelesen werden, indem an den Daten, die aus einem bestimmten Speicherblock gelesen werden, reihenweise und spaltenweise berechnete Paritätsbitcodes mit entsprechenden Paritätsbitcodes verglichen werden, die beim Schreiben von Daten in den Speicher berechnet und in zweckbestimmten Abschnitten des Speichers dauerhaft gespeichert wurden. Der Algorithmus ist so gestaltet, daß wenn ein oder mehrere Bitfehler (ausgefallene Zellen) detektiert werden, er automatisch die gelesenen Daten korrigiert, um sie am Ausgang des Speichervorrichtung verfügbar zu machen. Der Algorithmus rechnet mit einer maximalen Anzahl von Bitfehlern für jeden Block, die korrigiert werden können. Beim Überschreiten dieser Anzahl werden die Daten als verfälscht klassifiziert, und der Block wird eine Neuprogrammierung benötigen.

US-A-5,532,962 offenbart ein Verfahren zur Reinigung einer Speicheranordnung zum physikalischen Korrigieren weicher Fehler, die sich entwickelt haben können.

US-A-5,671,239 offenbart eine Speichervorrichtung, die Einrichtungen zur Korrektur fehlerhafter Bits in Lesedaten durch eine Bestimmung der korrekten Bits enthält. Im Falle eines Flash-Speichers werden eine Paritätsbitberechnung und eine Paritätsdatenschreiboperation immer dann ausgeführt, wenn Daten in den Speicher geschrieben werden.

Um dieses Problem zu lösen, ist eine Herangehensweise gefunden worden, die einen Prozeß eines Selbsttests und einer Korrektur von Ladungsverlustfehlern verwendet, der bei jedem Einschalten und/oder gemäß eines Befehls ausgeführt werden kann, und dessen Effektivität in der Tatsache liegt, daß die Anzahl der Bits, die diese Art von Fehler durch einen Ladungsverlust verursachen können, verhältnismäßig niedrig ist, und es ausreicht, das Auftreten von zwei oder mehr Fehlern im selben Sektor einer Multisektor-Flash-Speichermatrix statistisch auszuschließen.

Erfindungsgemäß ist jeder Sektor, in den die Flash-Speichermatrix, die in ganzen Sektoren löschbar und programmierbar ist, üblicherweise unterteilt ist, mit einer zusätzlichen Reihe und Spalte ausgestattet, in der die Paritätsbits gespeichert werden sollen.

Daher endet gemäß des Verfahrens dieser Erfindung jede Programmierungs- oder Schreiboperation irgendeines Sektors mit einem zweifachen erneuten Lesen des Sektors selbst für die Berechnung der Paritätsbits und ihrer Speicherung in der vorgesehenen zusätzlichen Reihe und Spalte.

Um das Konzept deutlicher zu machen, kann der Programmierungsalgorithmus eines Speichersektors zum Beispiel am Ende des normalen Programmierungsprozesses des Sektors die folgende Prozedur umfassen:

  • • Ausgehend von der Reihe „0" werden alle Bytes der Reihe nacheinander gelesen, die Parität wird durch Zählen der Anzahl der „1"en verifiziert, und das relative Paritätsbit wird programmiert, wenn die Anzahl der „1"en der Reihe gerade ist;
  • • die Reihenadresse wird erhöht und die vorhergehende Operation wird wiederholt und so weiter, bis alle Reihen des Sektors aufgebraucht sind;
  • • bei einer Neupositionierung auf das erste Byte der Null-Reihe werden alle Bytes der Null-Spalte gelesen, indem die Anzahl der „1"en jeder Spalte gezählt wird, und entsprechend zu dem, was oben in Beziehung auf die Reihen stattfand, verifizieren wir die Parität, und danach werden die Spaltenparitätsbits programmiert;
  • • die Spaltenaderesse wird erhöht und die vorhergehende Operation wird wiederholt und so weiter, bis die Spalten des Sektors aufgebraucht sind.

Für einen Sektor von 64 kbyte kann die gesamte Operation nicht mehr als 200 ms brauchen.

Die Selbsttestoperation und Korrektur von Ladungsverlustfehlern, die detektiert werden, besteht aus dem Verifizieren der Korrektheit der Paritätscodes eines Sektors und schließlich im Fortfahren mit der Korrektur eines Fehlers durch Neuprogrammieren des Bits, das seine Ladung verloren hat.

Auch in diesem Fall, um das obige Konzept deutlicher zu machen, kann ein Selbsttest- und Korrekturalgorithmus zum Beispiel das folgende sein:

  • • Ausgehend von der Reihe „0" werden alle Bytes der Reihe nacheinander gelesen, die Parität berechnet und ihre Übereinstimmung mit dem Wert verifiziert, der im Reihen-Paritätsbit gespeichert ist;
  • • wenn die Verifizierung positiv ist, wird die Reihenadresse erhöht und die Operation wird wiederholt, bis alle Reihen des Sektors aufgebraucht sind,
  • • wenn die Verifizierung negativ ist, wird ein Zeiger auf die Reihennummer gesetzt und die Prozedur, die die Spaltenparität verifiziert, wird gestartet;
  • • beim Identifizieren der Spalte, in der die Paritätsverifizierung negativ ist, wird geprüft, ob das Bit, das auf die Reihe zeigte, eine „1" ist und ob dies wirklich das Bit ist, das programmiert ist.

Sollte das so identifizierte Bit eine „0" sein, würde das bedeuten, das der Fehler auf einen ziemlichen unwahrscheinlichen anderen Mechanismus (Ladungserfassung) zurückzuführen ist, und als solcher wäre er nicht korrigierbar. Jedoch kann in diesem Fall die Routine eine Warnsignalmeldung für einen nicht korrigierbaren Fehler aktivieren.

Diese Aufgaben werden durch die Anwendung der Merkmale gelöst, die im unabhängigen Verfahrensanspruch 1 und dem entsprechenden Systemanspruch 8 definiert werden.

Vorzugsweise sollte der Selbsttest- und Fehlerkorrekturalgorithmus die Paritätsverifizierung Wiederaufnehmen und weiterführen, bis alle restlichen Reihen des Sektors aufgebracht sind, wobei folglich die Existenz eines zweiten Fehlers im selben Sektor verifiziert wird, wobei in diesem Fall die Korrekturoperation nicht erfolgreich beendet würde.

Das Verfahren der Erfindung ist nicht von sich aus darauf beschränkt, das Vorhandensein eines einzelnen Fehlers pro Sektor wiedergutzumachen. Tatsächlich kann diese scheinbare Beschränkung reduziert werden, indem mehr Spalten und Reihen für jeden Sektor hinzugefügt werden, in denen ebenso viele Paritätscodes gespeichert werden sollen. Indem zum Beispiel vielmehr 8 Spalten für jedes Paritätsbit als eine eingesetzt werden, würde die die Grenze von einem Fehler pro Sektor zu einem Fehler pro 1/8 eines Sektors ändern.

Vorzugsweise wird das Lesen von Daten während des Selbsttests, der die Paritätscodes verifiziert, mit einem adäquaten Abstand ausgeführt, indem zum Beispiel dieselbe Lesebedingungen gewählt werden, die während einer sogenannten „Programmverifizierung"-Prozedur verwendet werden.

Ein Selbsttestbefehl kann automatisch in die Systemeinschaltroutine eingefügt werden oder kann durch das System periodisch bei der Durchführung von Speicherauffrischoperationen gestartet werden.

Im Unterschied zu dem, was während der Ausführung einer üblichen „Programmverifizierung"-Routine passiert, in der die Korrektur des detektierten Programmierungsfehlers gleichzeitig mit der Lesephase stattfindet, findet die Selbsttest- und Fehlerkorrekturprozedur der Erfindung nicht während einer Lesephase des Flash-Speichers statt, sondern ist eine einzelne Operation des Verifizierens und Wiederherstellens eines etwaig verlorenen Bits.

Die Korrektur eines verlorenen Bits bringt nicht die Imple mentierung eines komplexen Algorithmus mit sich, die im Gegenteil verhältnismäßig einfach ist, da die Kontrolle reihenweise und danach spaltenweise oder in umgekehrter Reihenfolge durchgeführt wird.

Selbst in Bezug auf in Auffrischprozeduren, wie sie für gewöhnlich im Fall von DRAM-Speichern vorgenommen werden, wo es wesentlich ist, daß ein etwaig geändertes Bit nicht völlig verloren ist, sondern eine Restinformation hält, kann das Bit in einer Auffrischoperation, die den Selbsttest und die schließlich Fehlerkorrektur der Erfindung implementiert, vollständig verloren gehen.

Das Selbsttest- und Fehlerkorrekturverfahren der Erfindung ist auf NOR-Flash-Speicher anwendbar (das heißt in Speichern, die keinen doppelten Fowler-Nordheim-Mechanismus wählen) und ist nur, wie schon oben erläutert, im Fall von Fehlern effektiv, die auf einen Ladungsverlust zurückzuführen sind: „0" „1".

Die Erfindung ist insbesondere in Anwendungen, wie einer sogenannten SMART CARD effektiv, indem sie für ein Auffrischverfahren von unversorgten Massenspeicherunterstützungen sorgt.


Anspruch[de]
  1. Verfahren zum Selbsttest und zur Korrektur von Fehlern infolge eines Ladungsverlustes für einen Flash-Speicher, der durch eine Anordnung oder Matrix von Bitzellen gebildet wird, die in Reihen und Spalten organisiert sind, der bitweise programmierbar und in ganzen Sektoren löschbar ist, in die die Matrix unterteilt ist, wobei Reihen- und Spalten-Paritätsbitwerte bei der Programmierung jedes Speichersektors berechnet und gespeichert werden, um in Zeitintervallen in ganzen Sektoren Selbsttest- und etwaige Korrekturroutinen auszuführen, wobei die Anordnung oder Matrix von Bitzellen mindestens eine zusätzliche Reihe und mindestens eine zusätzliche Spalte von Zellen für jeden Speichersektor aufweist, wobei das Verfahren die folgenden Schritte aufweist:

    Speichern der Reihen- und Spalten-Paritätsbitwerte eines Sektors, der programmiert wird, in der zusätzlichen Reihe bzw. in der zusätzlichen Spalte; und

    wobei die Selbsttest-Routinen die Schritte aufweisen

    – sequentielles Berechnen von reihenweisen Paritätsbitwerten und spaltenweisen Paritätsbitwerten und Verifizieren der Übereinstimmung jedes berechneten Paritätsbitwerts mit dem jeweiligen gespeicherten Bitwert und Identifizieren irgendeiner ausgefallenen Bitzelle des Speichersektors, der getestet wird; und

    – wenn das so charakterisierte ausgefallene Bit eine logische „1" ist, Neuprogrammieren der einzelnen ausgefallenen Bitzelle auf eine logische „0", ohne eine Korrekturroutine am ganzen Sektor durchzuführen.
  2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß wenn ein so charakterisiertes ausgefallenes Bit eine logische „0" ist, ein Warnsignal eines nicht korrigierbaren Fehlers ausgelöst wird.
  3. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß jeder Sektor mit mehr als einer zusätzlichen Spalte und mehr als einer zusätzlichen Reihe ausgestattet ist, in denen so viele Paritätsbitwertcodes zu speichern sind, daß eine Korrektur von mehr als einer ausgefallenen Bitzelle pro Sektor zugelassen wird.
  4. Verfahren nach Anspruch 2, dadurch gekennzeichnet, daß das Lesen bei der Durchführung der Paritätsprüfungen unter sogenannten Programmierungs-Verifizierungs-Bedingungen stattfindet.
  5. Verfahren nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, daß es automatisch während einer Einschaltroutine eines Systems ausgeführt wird, das den Flash-Speicher einsetzt.
  6. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß es durch einen Befehl ausgeführt wird.
  7. Verfahren nach einem der vorhergehenden Ansprüche, in dem die Bitzellen NOR-Zellen sind.
  8. System mit einem Flash-Speicher, der bitweise programmierbar und in ganzen Sektoren löschbar ist, in die er unterteilt ist, der durch eine Anordnung oder Matrix von Bitzellen gebildet wird, die in Reihen und Spalten organisiert sind, und das dadurch gekennzeichnet ist, daß jeder Sektor des Flash-Speichers mindestens eine zusätzliche Spalte und mindestens eine zusätzliche Reihe aufweist, in die Paritätsbitwerte bezüglich Paritätsprüfungen von Bytes jeder Reihe bzw. Paritätsprüfungen von Bytes jeder Spalte zu speichern sind, die die Ausführung von Selbsttests und Korrekturen von eventuellen Ladungsverlustfehlern einer oder mehrerer Zellen pro Sektor abhängig von der Anzahl ausgefallener Bitzellen, die durch die Information einzeln identifizierbar sind, die in den zusätzlichen Spalten und Reihen gespeichert sind, gemäß dem Verfahren nach Anspruch 1 zulassen, wenn der Sektor programmiert wird.
  9. System nach Anspruch 8, in dem die Bitzellen NOR-Zellen sind.
Es folgt kein Blatt Zeichnungen






IPC
A Täglicher Lebensbedarf
B Arbeitsverfahren; Transportieren
C Chemie; Hüttenwesen
D Textilien; Papier
E Bauwesen; Erdbohren; Bergbau
F Maschinenbau; Beleuchtung; Heizung; Waffen; Sprengen
G Physik
H Elektrotechnik

Anmelder
Datum

Patentrecherche

Patent Zeichnungen (PDF)

Copyright © 2008 Patent-De Alle Rechte vorbehalten. eMail: info@patent-de.com