DE102015209502A1 - Markierungsprogrammierung in nichtflüchtigen Speichern - Google Patents

Markierungsprogrammierung in nichtflüchtigen Speichern Download PDF

Info

Publication number
DE102015209502A1
DE102015209502A1 DE102015209502.9A DE102015209502A DE102015209502A1 DE 102015209502 A1 DE102015209502 A1 DE 102015209502A1 DE 102015209502 A DE102015209502 A DE 102015209502A DE 102015209502 A1 DE102015209502 A1 DE 102015209502A1
Authority
DE
Germany
Prior art keywords
data
memory
memory area
error correction
area
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.)
Pending
Application number
DE102015209502.9A
Other languages
English (en)
Inventor
Thomas Rabenalt
Ulrich Backhausen
Thomas Kern
Michael Goessel
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.)
Infineon Technologies AG
Original Assignee
Infineon Technologies AG
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 Infineon Technologies AG filed Critical Infineon Technologies AG
Publication of DE102015209502A1 publication Critical patent/DE102015209502A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • 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/26Sensing or reading circuits; Data output circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C2029/0411Online error correction

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Probability & Statistics with Applications (AREA)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Read Only Memory (AREA)
  • Memory System (AREA)

Abstract

Es wird ein Verfahren zum Zugreifen auf einen nichtflüchtigen Speicher vorgestellt. Das Verfahren umfasst das Lesen eines ersten Speicherbereichs des nichtflüchtigen Speichers und das Feststellen, ob der erste Speicherbereich ein vorbestimmtes Datenmuster enthält. Das vorbestimmte Datenmuster hat keinen Einfluss auf resultierende Fehlerkorrekturdaten, die zumindest für den ersten Speicherbereich bestimmt werden. Das Verfahren umfasst auch das Bewerten eines Datenstatus für einen zweiten Speicherbereich des nichtflüchtigen Speichers auf der Basis einer Anwesenheit des vorbestimmten Datenmusters im ersten Speicherbereich. Eine entsprechende Speichersteuereinheit wird auch offenbart.

Description

  • TECHNISCHES GEBIET
  • Ausführungsformen der vorliegenden Erfindung beziehen sich auf ein Verfahren zum Zugreifen auf einen nichtflüchtigen Speicher. Weitere Ausführungsformen der Erfindung beziehen sich auf ein Verfahren, das ein vorbestimmtes Datenmuster als Markierung über existierende Daten in einen Speicherbereich innerhalb eines nichtflüchtigen Speichers programmiert. Weitere Ausführungsformen beziehen sich auf ein nichtflüchtiges computerlesbares Medium, das ein Programm speichert, das mindestens einem der vorstehend erwähnten Verfahren entspricht. Weitere Ausführungsformen der Erfindung beziehen sich auf eine Speichersteuereinheit. Einige Ausführungsformen können sich auf eine Markierungsprogrammierung über existierende Daten in Flash-Speichern beziehen.
  • HINTERGRUND
  • Ein Flash-Speicher ist ein elektronisches nichtflüchtiges digitales Speichermedium, das elektrisch gelöscht und umprogrammiert werden kann. Ein Flash-Speicher umfasst typischerweise eine Anordnung von Speicherzellen, die aus Transistoren mit schwebendem Gate bestehen. Technisch ist der Flash-Speicher ein Typ von EEPROM (electrically erasable programmable read-only memory, elektrisch löschbarer programmierbarer Festwertspeicher). Einer der Gründe für die Verwendung eines Flash-Speichers anstelle eines EEPROM besteht darin, dass er viel mehr Speicherzellen pro Fläche bietet, da eine bitweise Änderbarkeit wie in einem EEPROM bei Flash nicht möglich ist: es ist nur möglich, ganze Blöcke zu löschen, wohingegen es möglich ist, individuelle Bits zu programmieren. Dies bedeutet, dass zum Ändern eines gewissen Teils zuerst der ganze Block gelöscht werden muss.
  • Heute werden Flash-Speicher beispielsweise in Personalcomputern, PDAs, Smartphones, Digitalkameras, Mikrocontrollern und vielen weiteren umfangreich verwendet.
  • Flash-Speicher erfordern typischerweise spezielle Erwägungen aufgrund ihrer internen Konfiguration, wenn ein Lesezugriffs, Schreibzugriff und/oder Löschzugriff auf Daten, die in Flash-Speichern gespeichert sind oder gespeichert werden sollen, durchgeführt werden. Ferner können Flash-Speicher für eine relativ hohe Bitfehlerrate (BER, bit error rate) anfällig sein, insbesondere nach einer langen Speicherzeit (bis zu mehreren Jahren, möglicherweise sogar 20 Jahren), für die Flash-Speicher ausgelegt sind. Die hohe Bitfehlerrate kann mittels Fehlerkorrekturcodes (ECC, error correction codes) behandelt werden, um redundante Daten (”Prüfbits”) zu berechnen und solche redundanten Daten zusammen mit den eigentlichen zu speichernden Daten zu speichern. Diese Eigenschaften von Flash-Speichern definieren einige Einschränkungen dafür, wie ein Flash-Speicher verwendet werden kann. Insbesondere kann das Modifizieren von Daten (selbst wenn es nur ein einzelnes Bit ist) in einem Flash-Speicher das Kopieren eines ganzen Speicherblocks oder Speichersektors in einen anderen Speicherblock oder Speichersektor erfordern. Es wäre erwünscht, wenn einige dieser Verwendungseinschränkungen, die durch Flash-Speicher auferlegt werden, zumindest gemildert werden könnten.
  • ZUSAMMENFASSUNG
  • Ein Verfahren zum Zugreifen auf einen nichtflüchtigen Speicher wird geschaffen. Das Verfahren umfasst das Lesen eines ersten Speicherbereichs des nichtflüchtigen Speichers. Das Verfahren umfasst ferner das Feststellen, ob der erste Speicherbereich ein vorbestimmtes Datenmuster enthält. Das vorbestimmte Datenmuster hat keinen Einfluss auf resultierende Fehlerkorrekturdaten, die für zumindest den ersten Speicherbereich bestimmt werden. Das Verfahren umfasst auch das Bewerten eines Datenstatus für einen zweiten Speicherbereich des nichtflüchtigen Speichers auf der Basis einer Anwesenheit oder einer Abwesenheit des vorbestimmten Datenmusters im ersten Speicherbereich.
  • Gemäß weiteren Aspekten wird ein Verfahren geschaffen. Das Verfahren umfasst das Programmieren eines vorbestimmten Datenmusters als Markierung über existierende Daten in einem Speicherbereich innerhalb eines nichtflüchtigen Speichers. Das vorbestimmte Datenmuster weist die Eigenschaft auf, dass Fehlerkorrekturdaten für den Speicherbereich, die auch im nichtflüchtigen Speicher gespeichert sind, nicht durch eine Anwesenheit oder Abwesenheit des vorbestimmten Datenmusters modifiziert werden. Eine Bedingung für die existierenden Daten besteht darin, dass Bits in den existierenden Daten nicht in Bitpositionen vorkommen, die für Bits des vorbestimmten Datenmusters erforderlich sind. Bei einem bevorstehenden Lesezugriff oder Schreibzugriff auf den Speicherbereich wird bewertet, ob der Speicherbereich das vorbestimmte Datenmuster enthält, und ein Datenstatus des Speicherbereichs wird auf der Basis einer Anwesenheit oder Abwesenheit des vorbestimmten Datenmusters im Speicherbereich bestimmt.
  • Eine Speichersteuereinheit wird auch geschaffen. Die Speichersteuereinheit umfasst eine Fehlerkorrektureinheit zum Verarbeiten von Daten, die in einem nichtflüchtigen Speicher gespeichert werden sollen, um entsprechende Fehlerkorrekturdaten zu erhalten, die auch im nichtflüchtigen Speicher gespeichert werden sollen, und zum Durchführen einer Fehlerdetektion und Fehlerkorrektur auf der Basis der Daten und entsprechenden Fehlerkorrekturdaten, die aus dem nichtflüchtigen Speicher gelesen werden. Die Flash-Speichersteuereinheit umfasst ferner einen Musterprogrammierer zum Schreiben eines vorbestimmten Datenmusters in einen Speicherbereich des nichtflüchtigen Speichers. Das vorbestimmte Datenmuster hat keinen Einfluss auf resultierende Fehlerkorrekturdaten, die für zumindest den ersten Speicherbereich bestimmt werden. Die Flash-Speichersteuereinheit umfasst auch einen Musterkomparator zum Vergleichen von Daten, die aus einem ersten Speicherbereich des nichtflüchtigen Speichers gelesen werden, mit dem vorbestimmten Datenmuster und zum Bewerten eines Datenstatus für einen zweiten Speicherbereich des nichtflüchtigen Speichers auf der Basis einer Anwesenheit oder Abwesenheit des vorbestimmten Datenmusters im ersten Speicherbereich.
  • Bevor Ausführungsformen im Einzelnen unter Verwendung der begleitenden Figuren beschrieben werden, soll darauf hingewiesen werden, dass denselben oder funktional gleichen Elementen dieselben Bezugszeichen in den Figuren gegeben werden und dass auf eine wiederholte Beschreibung für mit denselben Bezugszeichen versehene Elemente verzichtet wird. Daher sind Beschreibungen, die für Elemente mit denselben Bezugszeichen vorgesehen sind, gegenseitig austauschbar.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • 1A stellt schematisch eine Weise des Standes der Technik zum Programmieren eines Datenworts mit lauter 1-en (0xFF...F) ”über” existierende Flash-Daten dar, die häufig als Art von Annullierung dieser Daten verwendet wird, wobei die Annullierung aufgrund der angenommenen Nebenbedingungen (oder Einschränkungen) für 1A erfolgreich ist;
  • 1B stellt schematisch eine Annullierung eines Speicherworts durch Schreiben eines Datenworts mit lauter 1-en in das Speicherwort dar, wobei die Annullierung aufgrund der angenommenen Nebenbedingungen (oder Einschränkungen) für 1B erfolglos ist; die angenommenen Bedingungen bedeuten, dass für einige Fehlerkorrekturcodes ein Wort mit lauter 1-en kein gültiges Codewort ist; ein Wort mit Datenbits, die alle ”1” sind, hätte einige Fehlerkorrekturbits, die nicht ”1”, sondern ”0” sind;
  • 2A stellt schematisch eine Modifikation eines Datenstatus eines Speicherworts dar, wobei ein spezielles Muster als Markierung in das ganze Speicherwort programmiert wird;
  • 2B stellt schematisch eine Modifikation eines Datenstatus eines Speicherworts dar, wobei ein spezielles Muster als Markierung in einen Teil des Speicherworts programmiert wird;
  • 3 stellt schematisch eine Verwendung einer Markierung, die zwei Teile umfasst, zum Modifizieren eines Datenstatus eines Paars von Speicherworten dar;
  • 4 stellt schematisch einen Speicherbereich eines nichtflüchtigen Speichers (z. B. eines Flash-Speichers) dar, der einer Datenstatusmodifikation unter Verwendung eines vorbestimmten Datenmusters unterzogen werden kann, wobei der Speicherbereich einen ersten, einen zweiten, einen dritten und einen vierten Speicher-(Unter)-Bereich umfasst;
  • 5 stellt schematisch einen Speicherbereich eines nichtflüchtigen Speichers dar, der einer Datenstatusmodifikation unter Verwendung eines vorbestimmten Datenmusters unterzogen werden kann, wobei der Speicherbereich einen ersten, einen zweiten und einen dritten Speicher-(Unter)-Bereich umfasst, wobei der erste und der zweite Speicherbereich jeweils einem Teil eines Speicherworts entsprechen;
  • 6 zeigt ein schematisches Ablaufdiagramm eines Verfahrens zum Zugreifen auf einen nichtflüchtigen Speicher;
  • 7 zeigt ein schematisches Ablaufdiagramm eines Verfahrens mit einem Schritt zum Programmieren eines vorbestimmten Datenmusters als Markierung über existierende Daten in einem Speicherbereich;
  • 8A und 8B zeigen ein schematisches Ablaufdiagramm eines Verfahrens zum Zugreifen auf und Managen eines nichtflüchtigen Speichers;
  • 9 zeigt ein schematisches Blockdiagramm eines Hauptrechnersystems, einer Speichersteuereinheit und eines nichtflüchtigen Speichers; und
  • 10 zeigt ein schematisches Blockdiagramm einer Flash-Speichersteuereinheit.
  • AUSFÜHRLICHE BESCHREIBUNG VON ERLÄUTERNDEN AUSFÜHRUNGSFORMEN
  • Im Folgenden werden einige Implementierungsbeispiele mit spezifischem Bezug auf einen Flash-Speicher erläutert. Die Beschreibung und die Figuren sollen jedoch nicht als auf Flash-Speicher begrenzt verstanden werden, sondern stattdessen auch auf andere Typen von nichtflüchtigen Speichern. Eine Eigenschaft von Flash-Speichern besteht typischerweise darin, dass einzelne Bits nur programmiert, aber nicht gelöscht werden können, zumindest nicht in einer bitindividuellen Weise. Dies bedeutet, dass es durch Programmieren möglich ist, eine ”0” in eine ”1” in einer bitindividuellen Weise zu ändern, aber es typischerweise nicht möglich ist, eine bereits existierende ”1” in eine ”0” zu ändern. In Flash-Speichern werden typischerweise die ganzen Daten eines relativ großen Blocks gleichzeitig gelöscht. Aufgrund dieser Einschränkung können Daten, die geändert werden müssen, vom gegenwärtig verwendeten Block zu einem bereits gelöschten Block verlagert werden müssen, wobei beim Schreiben der Daten in den gelöschten Block die Daten in der gewünschten Weise modifiziert werden. Falls ein Fehlerkorrekturcode verwendet wird, ändern sich die resultierenden Fehlerkorrekturdaten typischerweise auch zusammen mit den modifizierten Daten (insbesondere können sich die Fehlerkorrekturdaten signifikant ändern, selbst wenn die eigentlichen Daten sich nur in einem einzigen Bit geändert haben). Es ist auch möglich, dass die Fehlerkorrekturdaten die Speicheradresse des Speicherworts berücksichtigen, wo die Daten und die entsprechenden Fehlerkorrekturdaten gespeichert werden. In diesem Fall ändern sich die Fehlerkorrekturdaten typischerweise, wenn die Daten von einem ersten Speicherblock in einen zweiten, gelöschten Speicherblock kopiert werden.
  • Mit anderen Worten, eine Änderung einer ”1” in eine ”0” ist nur möglich, wenn das ganze Wort gelöscht wird. Im Flash-Speicher ist das Löschen gewöhnlich nur über einen ”Sektor” oder Block möglich, der ”viele” Worte enthält. Es ist zu beachten, dass die Definition von logischer ”1” und ”0” für ”programmierte” und ”Lösch”-Zustände auch umgekehrt sein kann, das heißt in einigen Flash-Speichern kann es möglich sein, eine ”1” in eine ”0”, aber nicht eine ”0” zurück in eine ”1” zu ändern.
  • Ferner verwenden aufgrund von Sicherheitsanforderungen bestimmte Implementierungen von ECC im Flash-Speicher die folgenden Aspekte. Die Adresse kann in die Fehlerkorrekturdaten codiert werden, so dass ECC = f(Adresse, Daten).
  • Eine andere Sicherheitsanforderung kann definieren, dass ein gelöschtes (lauter 0-en) oder programmiertes Wort (lauter 1-en) nicht ecc-gültig sein darf.
  • Dies führt zu mindestens zwei spezifischen Problemen, die durch die vorgeschlagenen Verfahren, die vorgeschlagene Flash-Speichersteuereinheit und das vorgeschlagene nichtflüchtiges computerlesbares Medium angegangen werden:
    • 1. Programmieren von gültigen ECC-Worten ”über” existierende Worte in einem Flash-Speicher und erneut Erhalten eines gültigen ECC-Worts (”1”-en können nicht gelöscht werden).
    • 2. Verwendung einer Markierung mit zwei unterschiedlichen Inhalten im Flash-Speicher, wobei gelöschte Worte nicht ECC-gültig sind und daher nicht verwendet werden können.
  • 1 stellt schematisch eine Annullierung eines Speicherworts durch Schreiben eines Datenworts mit lauter 1-en (0xFF..F) in das Speicherwort dar. Dieses Verfahren hängt jedoch von der Annahme ab, dass ein Datenwort mit lauter 1-en ECC-gültig ist oder sein kann. Ferner müssen die Fehlerkorrekturdaten aufgrund der Flash-Speicher-Einschränkung, dass individuelle Bits nicht gelöscht werden können, auch ein Wort mit lauter 1-en sein. Mit anderen Worten, wenn die Fehlerkorrekturdaten für die existierenden Daten eine ”1” in einer speziellen Bitposition hatten, aber die Fehlerkorrekturdaten für das Datenwort mit lauter 1-en eine ”0” in derselben Bitposition erfordern würden, ist es typischerweise nicht möglich, nur das einzelne betroffene Bit zu löschen. Aus diesem Grund wird die folgende Annahme hinsichtlich des Fehlerkorrekturcodes im Zusammenhang mit 1A gemacht: ECC = (11...1) = f((11...1)) = f(0xFF...F).
  • Eine weitere Annahme, die im Zusammenhang mit 1A gemacht wurde, besteht darin, dass die Adresse durch den Fehlerkorrekturcode nicht berücksichtigt wird.
  • Mit dieser Annahme oder diesen Nebenbedingungen kann 1A wie folgt erläutert werden. Im Zustand 1 enthält ein Speicherwort des Flash-Speichers beliebige Daten, hier (01000110001). Die entsprechenden Fehlerkorrekturdaten, die gespeichert wurden, sind ECC = (1100) = f(Daten) = f(01000110001).
  • Es ist zu beachten, dass entweder die Daten oder die Fehlerkorrekturdaten oder beide Bitfehler aus verschiedenen Gründen enthalten können (Fehler, wenn die Daten geschrieben werden, einen Bitfehler, der während der Speicherzeit aufgetreten ist, aufgrund von Strahlung oder Temperatur...). Solange die Anzahl von Bitfehlern geringer ist als die Hälfte des Abstandes (z. B. Hamming-Abstand) des verwendeten Fehlerkorrekturcodes, können die Bitfehler typischerweise erfolgreich korrigiert werden.
  • Es kann nun sein, dass die Daten nicht mehr gültig sind und annulliert werden müssen. Dazu wird der Zustand vom Zustand 1 in den Zustand 2 geändert. Diese Modifikation des Datenstatus wird durch Schreiben der Daten mit lauter 1-en in das Speicherwort durchgeführt. Gleichzeitig werden die Fehlerkorrekturdaten auch in Daten mit lauter 1-en geändert. Diese Änderungen an den Daten und an den Fehlerkorrekturdaten sind möglich, da kein Bit gelöscht (d. h. von ”1” in ”0” geändert) werden muss, sondern die einzigen Änderungen, die stattfinden, Änderungen von ”0” in ”1” sind, die zugelassen sind. Daher stellt 1A eine Annullierung dar, die funktioniert, da die Adressenbits nicht vom Fehlerkorrekturcode verwendet werden. Diese Annullierung ist für Speicher möglich, in denen 0xFF...FF als gültiges Codewort zulässig ist.
  • Es sollte jedoch beachtet werden, dass die Programmierung mit lauter 1-en in 1A den vorherigen Inhalt des Worts zerstört. Aus diesem Grund hat eine solche Programmierung mit lauter 1-en nur begrenzten Nutzen (z. B. Annullierung). Ferner kann der Fehlerkorrekturcode in diesem Fall nicht von der Adressencodierung Gebrauch machen. Wenn eine Adressencodierung verwendet werden würde, wie schematisch in 1B dargestellt, kann zumindest an einigen Adressen das Wort mit lauter 1-en (kombinierte Daten und Fehlerkorrekturdaten) aufgrund der Adressencodierung kein gültiges Codewort sein. Wie in 1B zu sehen ist, funktioniert die Annullierung nicht, da aufgrund der Verwendung der Adressenbits eine frühere ”1” in den Fehlerkorrekturdaten nach der Annullierung eine ”0” sein müsste (durch einen Pfeil in 1B angegeben), dennoch ist dies mit bitindividueller Programmierung in Flash-Speichern nicht möglich.
  • Alternativ oder zusätzlich können andere Sicherheitsanforderungen dazu führen, dass ein Wort mit lauter 1-en kein gültiges Codewort ist. Selbst wenn die Adresse nicht verwendet wird, kann beispielsweise die Verwendung von 0xFF...FF als gültiges Codewort aufgrund von Sicherheitszielen nicht zulässig sein.
  • Eine weitere Option ist das Löschen von Informationen, aber in Flash-Speichern kann dies nur mit einer größeren ”Granularität” möglich sein, z. B. einer Wortleitung oder einem Sektor. Das Löschen von Daten auf einer Wortleitungs- oder Sektorebene kann ein erhöhtes Risiko für den Verlust von anderen Informationen herbeiführen (beispielsweise wenn die Daten in eine andere Wortleitung/einen anderen Sektor kopiert werden), was aus Sicherheits- und/oder Gefahrlosigkeitsgründen unerwünscht sein könnte. Ferner kann das Löschen von Daten zeitaufwändig sein. Ferner ist es möglich, dass ein Rücksetzen durchgeführt werden muss, was den Betrieb des Flash-Speichers und folglich jenen eines verbundenen Hauptrechnersystems (z. B. eines Mikrocontrollers) unterbrechen kann.
  • 2A stellt schematisch eine Modifikation eines Datenstatus eines Speicherworts dar, wobei ein spezielles Muster als Markierung in das ganze Speicherwort programmiert wird. 2B zeigt eine ähnliche Modifikation eines Speicherworts, wobei ein spezielles Muster als Markierung in einen Teil des Speicherworts programmiert wird. Ein zweckgebundenes Muster wird mit den folgenden Eigenschaften berechnet:
    • – Das zweckgebundene Muster (vorbestimmtes Datenmuster) ist ECC-gültig und
    • – weist ”0”-en in Positionen auf, in denen die ursprünglichen Daten aufrechterhalten werden müssen.
    • – Das Hinzufügen des Musters zum Speicherwort ändert die existierenden ECC-Prüfbits nicht (d. h. ecc(Muster) = 0). (z. B. möglich für lineare ecc-Codes).
    • – Dieses Muster kann ”über” ein existierendes word old programmiert werden, das entweder lauter 0-en im Datenbereich ist oder einen Teil von Datenbits verwendet, der nicht vom Muster verwendet wird.
  • Das Verfahren gemäß 2A oder 2B basiert auf dem Programmieren eines gültigen ECC-Worts (Musters) in einer Speicherposition, in der bereits ein gültiges ECC-Wort verfügbar ist (word old). Dies wird ”Überprogrammierung” genannt.
  • Aufgrund von Flash-Speichereigenschaften (Zellen mit logisch ”1” werden während der Programmierung nicht gelöscht) ist das Ergebnis:
    word_new = word_old ODER Muster,
    wobei ODER ein bitweises ODER ist.
  • Die Programmierung ist für jede Adresse möglich, da ecc(Muster) = 0 für jede Adresse.
  • Die existierenden Daten word_old können lauter 0-en in Daten enthalten. Die Fehlerkorrekturdaten-ecc-Bits sind gewöhnlich nicht alle = ”0”, wenn die Adresse mit den Daten codiert wird. Dies ist in 2A schematisch dargestellt. Aufgrund der Verwendung der Adresse werden typischerweise nicht alle ECC-Prüfbits ”0”. Vielmehr führt 0x00...00 in Daten typischerweise zu bestimmten ecc-Bits = ”1”. Bei einigen wenigen ausgewählten Adressen kann es vorkommen, dass alle ECC-Prüfbits ”0” sind.
  • Alternativ, wie schematisch in 2B dargestellt, können die existierenden Daten auch beliebige Daten in einem bestimmten Bitbereich enthalten. In 2B entspricht dieser Bitbereich den 5 höchstwertigen Bits (MSBs, most significant bits) des Speicherworts. Die restlichen sechs Bits (sechs niedrigstwertigen Bits LSBs, least significant bits) des Speicherworts sind freie Bitpositionen, die während des Zustandes 1 nicht verwendet werden.
  • Das vorbestimmte Datenmuster (zweckgebundene Muster) befindet sich entweder:
    • – an einem vollständigen Speicherwort (wenn ursprüngliche Daten lauter 0-en sind) → siehe 2A
    • – oder nur in Bitpositionen eines restlichen Bitbereichs (”0”), der von word old-Datenbits nicht verwendet wird → siehe 2B.
  • Die Programmierung ist über den ganzen Speicherbereich möglich, solange die Partitionierung von alten Daten/Muster für alle Worte gleich ist, und wenn das Muster eine ausreichende Anzahl von Bits enthält, um Gen Mat × Muster = 0 (= ECC-Bits) zu ermöglichen, wobei Gen Mat die Generatormatrix des Fehlerkorrekturcodes ist. Die erforderliche Anzahl von Bits hängt von den Eigenschaften des Codes und der Matrix (Hamming-Abstand, Anzahl von linearen unabhängigen Matrixspalten, ...) ab.
  • Im Vergleich zu 1A schaffen die Verfahren in 2A und/oder 2B eine flexiblere Lösung. Insbesondere im Fall von 2B werden alte Daten bewahrt und können immer noch gelesen werden. Es ist möglich, die Verfahren gemäß 2A und 2B mit Sicherheits-ECCs zu verwenden, wobei Muster mit lauter 1-en nicht zugelassen sind.
  • Nun ist es möglich, einen ersten Datenstatus einer Abwesenheit des vorbestimmten Datenmusters und einen zweiten Datenstatus einer Anwesenheit des vorbestimmten Datenmusters innerhalb eines Speicherbereichs wie z. B. eines Speicherworts zuzuweisen. In 2B kann beispielsweise die Abwesenheit des vorbestimmten Datenmusters oder der ”Markierung” als, dass Daten in den fünf MSBs gültig sind, interpretiert werden und die Anwesenheit des vorbestimmten Datenmusters kann darauf hinweisen, dass die Daten in den fünf MSBs nicht mehr gültig sind. In alternativen Implementierungen kann die entgegengesetzte Konvention verwendet werden: die Abwesenheit des vorbestimmten Datenmusters gibt ungültige Daten an und die Anwesenheit des vorbestimmten Datenmusters gibt gültige Daten an.
  • Es ist auch möglich, die Überprogrammierung des vorbestimmten Datenmusters zum ”Annullieren” von existierenden Daten zu verwenden. Der erste Datenzustand (”Markierungszustand 1”) könnte beispielsweise sein:
    Daten = <existierende Daten, 0, ecc_Prüfbits>.
  • Der zweite Datenzustand (”Markierungszustand 2”) könnte sein:
    Daten = <existierende Daten, vorbestimmtes Muster, ecc_Prüfbits>.
  • Die Fehlerkorrekturdaten in Form der ecc_Prüfbits basieren auf den existierenden Daten (und möglicherweise der Adresse). Die Fehlerkorrekturdaten ecc_Prüfbits werden durch das vorbestimmte Muster nicht modifiziert. In dieser Hinsicht unterscheidet man unter Verwendung des vorbestimmten Musters nicht, ob es zulässig ist, irgendetwas in den anderen Speicherbereich (den ”zweiten Speicherbereich”) zu programmieren oder ob gültige Daten bereits vorhanden sind, sondern ob im anderen Speicherbereich (d. h. im ”zweiten Speicherbereich”) gültige oder ungültige Daten vorhanden sind.
  • Als Erweiterung können zwei oder mehr vorbestimmte Datenmuster mit den vorstehend erwähnten Eigenschaften verwendet werden. Wenn beispielsweise zwei vorbestimmte Datenmuster verwendet werden, wäre es möglich, die folgende Sequenz des Datenstatus anzugeben: ”beschreibbar” → ”gültige Daten” → ”ungültige Daten”. Der Datenstatus ”beschreibbar” wird durch die Abwesenheit von irgendeinem vorbestimmten Datenmuster im Speicherwort angegeben. Benutzerdaten können nun in einen Abschnitt des Speicherworts (z. B. die fünf MSBs in dem Beispiel von 2B) geschrieben werden. Gleichzeitig wird ein vorbestimmtes Datenmuster in den restlichen Bitbereich (z. B. sechs LSBs in 2B) geschrieben, deren Anwesenheit angibt, dass das Speicherwort nun sich im Datenstatus ”gültige Daten” befindet. Wenn die Daten ungültig werden, kann der Datenstatus in ”ungültige” Daten geändert werden durch Überschreiben des ersten vorbestimmten Datenmusters mit einem zweiten vorbestimmten Datenmuster (weiteres vorbestimmtes Datenmuster). Es ist zu beachten, dass das zweite vorbestimmte Datenmuster typischerweise eine ”1” in Bitpositionen aufweisen muss, in denen das erste vorbestimmte Datenmuster eine ”1” aufweist, da aufgrund der Flash-Speicher-Einschränkungen das Rücksetzen eines einzelnen Bits von ”1” zurück auf ”0” nicht möglich ist. Folglich erfüllt das zweite vorbestimmte Datenmuster die Bedingung:
    zweites Muster = erstes Muster ODER zusätzliche_Bit(s)
    wobei zusätzliche Bit(s) ≠ (00...00), das heißt die Variable zusätzliche_Bit(s) ist ungleich dem Vektor mit lauter 0-en. Mit anderen Worten, das zweite Muster ist identisch zum ersten Muster, abgesehen von mindestens einer zusätzlichen ”1” in einer Bitposition, in der das erste Muster eine ”0” aufweist. Als Alternative könnten zweckgebundene Bitbereiche für Daten, erstes Muster und zweites Muster reserviert werden. Das Zugreifen auf den Speicher kann daher einen Schritt oder eine Handlung zum Feststelen, ob der erste Speicherbereich eines des vorbestimmten Datenmusters und des weiteren vorbestimmten Datenmusters enthält, umfassen. Wie das vorbestimmte Datenmuster (erstes vorbestimmtes Datenmuster) hat auch das weitere (oder zweite) vorbestimmte Datenmuster keinen Einfluss auf die resultierenden Fehlerkorrekturdaten, die für zumindest den ersten Speicherbereich bestimmt werden. Die Handlung zum Bewerten des Datenstatus für den zweiten Speicherbereich kann auf der Basis einer Anwesenheit oder Abwesenheit beider, des (ersten) vorbestimmten Datenmusters und des weiteren vorbestimmten Datenmusters im ersten Speicherbereich durchgeführt werden. In dieser Weise können mindestens drei verschiedene Werte für den Datenstatus unterschieden werden.
  • Eine weitere optionale Erweiterung ist eine ”Mehrebenen-Markierung”, für die ein Anwendungsbeispiel nun bereitgestellt wird. Während einer ersten Programmierhandlung, die durch eine Kundensoftware eingeleitet wird, sollen beispielsweise 32 Bits von Benutzerdaten in den Speicher geschrieben werden. Die 32 Bits Benutzerdaten werden durch die Fehlerkorrekturdaten (ECC-Prüfbits) vervollständigt, um ein gültiges Codewort zu bilden. Kurz gesagt kann dies ausgedrückt werden als: erste Programmierung (Kunde) → 32 Bits Benutzerdaten → ECC-Prüfbits.
  • Irgendwann später wird eine zweite Programmierhandlung durch die Kundensoftware eingeleitet. Folglich sollen zusätzliche 32 Bits von Benutzerdaten geschrieben werden. Weitere 32 – 22 Bits werden berechnet, so dass der Beitrag der neuen (32 + 32) Bits zu den ECC-Prüfbits null ist. Folglich ist keine Modifikation der Prüfbits erforderlich.
  • Während einer dritten Programmierhandlung durch die Kundensoftware muss noch ein weiterer Satz von weiteren 32 Bits von Benutzerdaten in den nichtflüchtigen Speicher geschrieben werden. Dies kann in einer analogen Weise wie die zweite Programmierhandlung durchgeführt werden. Es ist auch möglich, dieses Schema mit einer vierten, fünften, sechsten ... Programmierhandlung fortzusetzen (bis die maximale Anzahl von gesamten Datenbits erreicht ist).
  • Im Allgemeinen ist es gemäß der vorgeschlagenen Erweiterung möglich, x Datenbits in das Codewort zu programmieren, wenn zusätzlich y Datenbits noch frei sind (d. h. typischerweise ”0”); diese werden auf der Basis der Adresse, des vorherigen Dateninhalts und der neuen Daten berechnet, so dass die ECC-Prüfbits nicht modifiziert werden müssen. Dazu können die y Spalten der Paritätsprüfmatrix R linear unabhängig sein (→ y = 22), oder mehr Spalten sind erforderlich (Unterraum).
  • Wenn auf ein Wort im Speicher Bezug genommen wird, wird der Begriff ”Wort” hier wie nun definiert verwendet.
    • Wort: = n Datenbits + c ecc-Prüfbits = kleinste programmierbare Einheit, die ein gültiges ECC-Codewort ergibt.
    • Realistisches Beispiel: n = 256, c = 22
  • Mit diesen Werten können die 256 Bits beispielsweise in 4 × (32 + 32) Bits unterteilt werden, was es möglich macht, bis zu vier Programmierhandlungen in einem Wort durchzuführen, solange sichergestellt wird, dass die ursprünglichen ECC-Prüfbits nicht geändert werden.
  • Obwohl Flash-Speicher von den Vorschlägen, die hier gemacht werden, erheblich profitieren können, können sie auch in Verbindung mit anderen Typen von Speicher und insbesondere eines nichtflüchtigen Speichers implementiert werden. Selbst wenn eine gewisse Flashspezifische Einschränkung für allgemeine nichtflüchtige Speicher nicht gelten könnte, wie z. B. die unidirektianale bitfeine Änderbarkeit, können andere Speichertechnologien als Flash-Speicher auch von dem hier vorgeschlagenen profitieren. Die Möglichkeit einer Mehrfachprogrammierung kann es beispielsweise möglich machen, nur einen Abschnitt eines ganzen Speicherworts zu programmieren, anstatt dass das ganze Wort umprogrammiert werden muss. Dies kann dazu führen, dass individuelle Speicherzellen weniger häufig umprogrammiert werden und daher weniger Belastung erfahren. Tatsächlich geht jede Programmier- oder Löschoperation mit einer gewissen physikalischen Belastung für die Speicherzelle einher. Ein anderer Vorteil besteht darin, dass weniger Leistung verbraucht werden kann, da die Anzahl von Speicherzellen, die umprogrammiert werden müssen, geringer sein kann, wenn nur jene Abschnitte des Speicherworts umprogrammiert werden, wo die Bitwerte geändert werden müssen.
  • 3 stellt schematisch ein Verfahren dar, in dem eine sogenannte ”zweiteilige Markierung” verwendet wird.
  • 3 stellt schematisch eine Implementierung und/oder Verwendung einer Markierung mit 2 Zuständen (2-teilige Markierung) in einem Flash-Speicher dar. Diese Technik kann insbesondere in Flash-Speichern verwendet werden, in denen der gelöschte Zustand nicht verwendet werden kann, da er ECC-ungültig ist.
  • Die Markierung oder das vorbestimmte Datenmuster umfasst zwei Teile. In dem dargestellten Implementierungsbeispiel deckt jeder Teil ein Speicherwort des Flash-Speichers ab. Daher entspricht der erste Teil (”Markierungsteil 1”) einem Speicherwort an einer Adresse ”x” des Flash-Speichers. Der zweite Teil (”Markierungsteil 2”) entspricht einem Speicherwort an der nächsten Adresse ”x+1”. Der erste Teil kann immer als ecc-gültiges Wort gelesen werden. Im Zustand 1 wird der erste Teil als lauter 0-en mit gültigen ecc-Bits programmiert. Der zweite Teil bei der Adresse ”x+1” wird im Zustand 1 gelöscht und darf nicht gelesen werden. Es wird daran erinnert, dass der gelöschte Zustand in einigen Flash-Speichern gemäß einer apriorischen Konvention und/oder Benutzeranforderungen ECC-ungültig sein kann.
  • Wenn vom Zustand 1 in den Zustand 2 übergegangen wird, wird ein zusätzliches spezielles Muster in den ersten Teil programmiert. Dieses spezielle Muster ändert die ecc-Bits nicht, da ecc(Muster) = Gen_Mat × Muster = 0.
  • Als zusätzliches optionales Merkmal hängt ferner das spezielle Muster nicht von der Adresse ab, so dass es an beliebigen Adressen verwendet werden kann. Gleichzeitig wird der zweite Teil zum ersten Mal mit gewünschten Daten programmiert. Die gewünschten Daten können sogenannte Markierungsdaten (z. B. logistische Informationen) sein. Mit anderen Worten, der zweite Teil kann mit beliebigen Daten programmiert werden, um beliebige für den Kunden relevante Informationen (z. B. logistische Informationen über die Softwareversion) zu speichern. Der zweite Teil kann im Zustand 2 als ECC-gültiges Wort gelesen werden.
  • Die in 3 schematisch dargestellte Technik ermöglicht, dass ein Kunde Markierungen implementiert, die ECC-gültig ”0” sind, am Beginn und in einen zweiten Zustand mit beliebigem Dateninhalt später geändert werden können.
  • Ein spezieller Typ von Flash-Speicher ist als ”PFlash” (ProgrammFlash) bekannt. Für einen Flash-Speicher, der z. B. in Kraftfahrzeug-Mikrocontrollern verwendet wird, kann der Flash in zwei Teile unterteilt werden: Codespeicher und Datenspeicher. Der Codespeicher wird verwendet, um den Code der CPU des Mikrocontrollers auf dem Chip zu speichern. Die CPU führt den Code aus, der vom Codespeicher gelesen wurde – dieser Lesepfad muss möglicherweise gemäß den Sicherheitsanforderungen sehr gut geschützt werden, um eine Fehlerkorrektur und Fehlerdetektion von unkorrigierbaren Fehlern in einem hohen Grad zu ermöglichen. Es kann erwünscht sein, dass ein Sicherheits-ECC in einem Flash-Speicher, insbesondere einem PFlash, in einer Weise durchgeführt wird, dass ein gelöschter Bereich des Speichers (PFlash) nicht ECC-gültig ist. Ein Kunde wie z. B. ein Originalausrüstungshersteller (OEM, original equipment manufacturer) oder ein Kraftfahrzeuglieferant kann beispielsweise eine entsprechende Kundenanforderung definieren.
  • Unter dieser Annahme verursacht das Lesen eines gelöschten Worts ein FEHLERFLAG von ECC: ein nicht korrigierbarer Fehler tritt auf. Folglich kann die Ausführung eines Softwareprogramms unterbrochen werden. Diese Sicherheitsmaßnahme kann ihre Berechtigung haben, da das Auftreten eines gelöschten Bereichs innerhalb des zugewiesenen Abschnitts eines Flash-Speichers (wobei ”zugewiesen” hier bedeutet: tatsächlich vom Softwareprogramm verwendet) eine Speicherverfälschung oder andere unvorhersagbare Modifikationen des Speicherinhalts angeben kann. Am wahrscheinlichsten ist der Befehlszeiger zu einer Speicheradresse gesprungen, wo keine Daten vorhanden sind. In diesem Fall kann sich das Softwareprogramm nicht mehr auf die Korrektheit der Daten im Flash-Speicher verlassen, so dass es ratsam sein kann, die Ausführung des Softwareprogramms zu beenden, bevor ernste Probleme entstehen.
  • Einige spezielle Software oder Programme wie z. B. ein PFlash-Softwarelader, Bootmanager während des Starts und Anwendungscode könnten jedoch prüfen müssen, dass bestimmte PFlash-”Bereiche” wirklich gelöscht sind. Dazu können Markierungen erforderlich sein, um den Zustand des Codes/der Daten zu identifizieren, die in den PFlash geschrieben werden. Die folgende Erläuterung stellt einige mögliche Lösungen mit Betonung auf einer Lösung mit einer ”2-teiligen” Markierung dar.
  • Es wird vorgeschlagen, eine Markierung zu verwenden, die aus 2 Teilen besteht (oder umfasst). Die Merkmale, Funktionen und/oder Zwecke der zwei Teile (Teil 1 und Teil 2) können wie folgt beschrieben werden.
    • Teil 1: ist immer ECC-gültig, kann immer durch Software gelesen werden, und wird nur verwendet, um die 2 Zustände der Markierung zu unterscheiden.
    • Teil 2: befindet sich im gelöschten Zustand, wenn nicht die Markierung aktualisiert wird und wird nicht von der Software gelesen, wenn nicht Teil 1 in den 2. Zustand geändert wird.
  • Wie in 3 gezeigt, wird der erste Teil (Markierungsteil 1) im Zustand 1 als ”lauter 0-en” programmiert mit ECC EIN (d. h. die Fehlerkorrektur ist aktiv). Aufgrund der Adressencodierung sind einige Prüfbits nicht ”0”. Mit anderen Worten, zumindest einige der ecc-Prüfbits hängen von der Adresse ab. Die Kombination des Vektors mit ”lauter 0-en” im eigentlichen Speicherwort und der entsprechenden Fehlerkorrekturdaten definiert ein gültiges Codewort. Wie vorstehend erwähnt, kann das Auftreten von zufälligen Bitfehlern in einer Bitposition oder einigen Bitpositionen typischerweise nicht ausgeschlossen werden; aufgrund der relativ leistungsstarken Fehlerkorrekturfähigkeiten auf der Basis der Fehlerkorrekturdaten können jedoch solche Bitfehler in den meisten Fällen korrigiert werden.
  • Gleichzeitig befindet sich der zweite Teil (Markierungsteil 2) immer noch im gelöschten Zustand im Zustand 1. Daher sind alle Bits ”0”, einschließlich der ecc-Prüfbits. Da dies kein gültiges ecc-Codewort bildet, darf es nicht gelesen werden. Der Versuch, die entsprechende Speicheradresse ”x+1” zu lesen, führt typischerweise zu einem ecc-Fehler (FEHLERFLAG von ECC). Die Adressenbeziehung zwischen dem ersten Teil und dem zweiten Teil ist bekannt: der erste und der zweite Teil werden an aufeinander folgenden Adressen ”x” und ”x+1” gespeichert. Andere Adressenbeziehungen können auch möglich sein, wie z. B. ein Seitenversatz, ein Blockversatz oder ein Sektorversatz zwischen den Adressen des ersten Teils und des zweiten Teils. Da die Adressenbeziehung bekannt ist, ist es möglich, zuerst (alle) mögliche(n) Adresse(n) abzufragen, wo der erste Teil erwartet werden kann, beispielsweise alle geraden Adressen 0, 2, 4, 6, .... Typischerweise können diese Adressen sicher gelesen werden, da sie ecc-gültige Codeworte oder zumindest ecc-korrigierbare Worte enthalten. Falls der erste Teil der Vektor mit lauter 0-en ist, kann geschlussfolgert werden, dass das Paar von Speicherworten an den Adressen ”x” und ”x+1” eine zweiteilige Markierung bildet und dass der aktuelle Datenstatus der zweiteiligen Markierung der ”Zustand 1” ist. Dies bedeutet, dass das Speicherwort für den zweiten Teil immer noch vollständig gelöscht ist und aus diesem Grund nicht gelesen werden darf. Andererseits ist ein vollständig gelöschter Speicherbereich ”beschreibbar”, so dass er sehr vielseitig ist und verwendet werden kann, um (fast alle) beliebige Daten zu speichern.
  • Wenn der Datenstatus des Speicherbereichs mit dem Paar von Speicherworten an den Adressen ”x” und ”x+1” vom Zustand 1 in den Zustand 2 modifiziert wird, wird das spezielle Datenmuster in den Markierungsteil 1 programmiert. Der Markierungsteil 2 wird nun zum ersten Mal (seit dem letzten sektorweiten Löschen) mit den gewünschten Markierungsdaten (z. B. logistischen Informationen) programmiert.
  • Im Zustand 2 ist die Markierung nicht ”0”, sondern enthält Informationen. Die Fehlerkorrekturdaten für den Markierungsteil 1 ändern sich nicht, da ecc(spezielles Muster) = 0. Das spezielle Datenmuster wird in den Markierungsteil 1 programmiert. Der Dateninhalt des ersten Speicherworts an der Adresse ”x” ist nicht wichtig; er wird nur verwendet, um den Zustand 1 und Zustand 2 zu unterscheiden. Das spezielle Datenmuster und seine entsprechenden Fehlerkorrekturdaten bilden ein gültiges Codewort, das durch den normalen Anwendungscode gelesen werden kann.
  • Hinsichtlich des Markierungsteils 2 im Zustand 2 werden nun spezifische Daten (z. B. logistischer Inhalt) in das Speicherwort an der Adresse ”x+1” programmiert. Die spezifischen Daten und ihre entsprechenden Fehlerkorrekturdaten (auch im Flash-Speicher gespeichert, typischerweise in zusätzlichen Bits neben den eigentlichen Datenbits) bilden ein gültiges Codewort, das durch den normalen Anwendungscode gelesen werden kann.
  • Die zweiteilige Markierung hat die erwünschten Eigenschaften, dass sie immer ECC-gültig ist (zumindest der Markierungsteil 1), daher ist es immer möglich, sie zu lesen, selbst mit Sicherheits-ecc ein. Aus diesem Grund besteht kein Bedarf, irgendwelche Notlösungen zu schaffen, die häufig zu Fallen für den Programmierer führen, d. h. ”keine Fallen, keine Notlösungen”. Ferner ist es relativ schnell, da es nur erforderlich ist, nur eine Leseoperation zum Prüfen durchzuführen. Eine Sequenzoperation ist nicht erforderlich. Hinsichtlich des Markierungsteils 2 kann sie beliebige logistische Daten enthalten, sobald sie programmiert wurde.
  • Das spezielle Datenmuster ist für den Teil 1 der Markierung erforderlich. Folglich ist das spezielle Datenmuster ein Wert, der für diesen speziellen Zweck reserviert ist. Es kann auch als reguläre Daten erscheinen, wenn die Speicheradressen der Markierungen bekannt sind (was sie gewöhnlich sind). Dieses spezielle Datenmuster wird beispielsweise durch einen Hersteller einer Flash-Speichersteuereinheit ausgewählt und bereitgestellt. Das spezielle Datenmuster kann typischerweise für alle Adressen verwendet werden. Dies macht die Verwendung leicht, da nur ein Datenmuster im Code für das Programmieren/den Vergleich gespeichert werden muss.
  • Wir stellen nun einige Hintergrundinformationen für das spezielle Datenmuster (vorbestimmte Datenmuster) bereit.
    • ECC = Prüfbits ECC = f_ecc(DATEN+ADDR) = f_ecc(DATEN) + f_ecc(ADDR)
  • Folglich ist der Fehlerkorrekturcode linear.
  • Markierungszustand 1:
    • DATEN = 0...0: => ECC = f_ecc(0...0) + f_ecc(ADDR) = f_ecc(ADDR)
  • Dies bedeutet, dass die Prüfbits (ECC) vollständig durch die Adresse bestimmt sind.
  • Markierungszustand 2:
    • DATEN nicht gleich 0..0, sondern f_ecc(DATEN) = 0; => ECC = f_ecc(01..10) + f_ecc(ADDR) = f_ecc(ADDR)
  • Dies bedeutet, dass die Prüfbits (ECC) erneut vollständig durch die Adresse bestimmt sind.
  • Schlussfolgerung: das spezielle DATEN-Muster kann für alle Adressen verwendet werden.
  • Falls ein Flash-Speicher oder eine Flash-Speichersteuereinheit die vorgeschlagene Markierungstechnik verwendet, sollte das Benutzerhandbuch, das Datenblatt oder eine Anwendungsnotiz typischerweise eine gewisse Beschreibung relativ zur Verwendung des Fehlerkorrekturcodes bereitstellen. Informationen können beispielsweise im Benutzerhandbuch oder Datenblatt hinsichtlich dessen vorgesehen sein, welche Codeworte gültig sind und welche ungültig sind. Ferner sollten typischerweise Informationen hinsichtlich dessen bereitgestellt werden, ob Adressen zusammen mit dem Datenwort mittels ECC geschützt sind oder ob ein anderes Verfahren verwendet wird. Das Benutzerhandbuch oder Datenblatt informiert einen Benutzer typischerweise auch darüber, ob lauter 0-en und/oder lauter 1-en gültige Codeworte sind.
  • 4 stellt schematisch einen Speicherbereich dar, der einen ersten Speicherbereich und einen zweiten Speicherbereich umfasst. Der erste Speicherbereich und der zweite Speicherbereich sind Teilbereiche des Speicherbereichs. Der Speicherbereich umfasst auch einen dritten Speicherbereich und einen vierten Speicherbereich. Mit Rückbezug auf den ersten und den zweiten Speicherbereich entspricht der erste Speicherbereich einem ersten Speicherwort (z. B. 16-Bit-Wort oder 32-Bit-Wort oder 64-Bit-Wort) an einer Adresse ADR. Der zweite Speicherbereich entspricht einem zweiten Speicherwort an einer Adresse ADR+1 direkt im Anschluss an das erste Speicherwort. Der erste und der zweite Speicherbereich werden als Einheit betrachtet, wobei der erste Speicherbereich verwendet wird, um Datenstatusinformationen hinsichtlich des Speicherbereichs zu speichern. Der zweite Speicherbereich wird verwendet, um die eigentlichen Daten zu speichern.
  • Der dritte Speicherbereich ist dazu konfiguriert, die Fehlerkorrekturdaten relativ zum ersten Speicherbereich zu speichern. Der vierte Speicherbereich ist dazu konfiguriert, die Fehlerkorrekturdaten relativ zum zweiten Speicherbereich zu speichern.
  • 5 ist ähnlich zu 4. Der Speicherbereich erstreckt sich jedoch nur über ein Speicherwort und seine Fehlerkorrekturdaten. Das Speicherwort wird in zwei Teile unterteilt, nämlich den ersten Speicherteil und den zweiten Speicherteil. Falls das Speicherwort beispielsweise 16 Bits breit ist, können die acht (8) höchstwertigen Bits (MSBs) des Speicherworts für den ersten Speicherbereich reserviert werden und die acht (8) niedrigstwertigen Bits (LSBs) des Speicherworts können für den zweiten Speicherbereich reserviert werden. Andere Unterteilungen zwischen dem ersten und dem zweiten Speicherbereich sind auch möglich. Es kann sogar sein, dass der erste Speicherbereich und der zweite Speicherbereich verschachtelt sind (z. B. gerade Bits: erster Speicherbereich; ungerade Bits: zweiter Speicherbereich). Der Speicherbereich in 5 umfasst auch einen dritten Speicherbereich für die Fehlerkorrekturdaten.
  • 6 zeigt ein schematisches Ablaufdiagramm eines Verfahrens zum Zugreifen auf einen Flash-Speicher. Das Verfahren umfasst einen Schritt 602 zum Lesen eines ersten Speicherbereichs des Flash-Speichers. Der erste Speicherbereich ist in 4 und 5 für zwei verschiedene Implementierungen schematisch dargestellt. In einem Schritt 604 wird festgestellt, ob der erste Speicherbereich ein vorbestimmtes Datenmuster enthält. Das vorbestimmte Datenmuster hat keinen Einfluss auf resultierende Fehlerkorrekturdaten, die für zumindest den ersten Speicherbereich bestimmt werden. Die entsprechenden Fehlerkorrekturdaten können im dritten Speicherbereich (siehe 4 und 5) gespeichert worden sein. Ein Datenstatus für einen zweiten Speicherbereich des Flash-Speichers kann dann in einem Schritt 606 auf der Basis einer Anwesenheit oder Abwesenheit des vorbestimmten Datenmusters im ersten Speicherbereich bewertet werden.
  • Das Verfahren kann ferner einen Schritt zum Lesen des zweiten Speicherbereichs umfassen, wenn der Datenstatus eine Anwesenheit von gültigen Daten innerhalb des zweiten Speicherbereichs angibt. In dieser Weise wird das Lesen des zweiten Speicherbereichs nur bedingt durchgeführt, so dass Lesezugriffe auf den zweiten Speicherbereich gesteuert werden können. Insbesondere kann ein Lesezugriff auf den zweiten Speicherbereich verhindert werden, wenn der zweite Speicherbereich vollständig gelöscht (d. h. beschreibbar) ist, zusammen mit einem Speicherbereich für entsprechende Fehlerkorrekturdaten, und wenn der vollständig gelöschte Zustand kein gültiges ECC-Codewort ist. Mit anderen Worten, ein illegaler Lesezugriff auf den vollständig gelöschten zweiten Speicherbereich kann durch Durchführen einer vorherigen Bestimmung eines Datenstatus des Speicherbereichs verhindert werden.
  • Ferner kann vorgesehen sein, Daten in den zweiten Speicherbereich zu schreiben, wenn der Datenstatus angibt, dass der zweite Speicherbereich beschreibbar ist. Im gleichen Zusammenhang wird das vorbestimmte Datenmuster in den ersten Speicherbereich geschrieben, um den Datenstatus dahin gehend zu ändern, eine Anwesenheit von gültigen Daten im zweiten Speicherbereich anzugeben. Beide Schreiboperationen sind typischerweise untrennbar, um zu verhindern, dass der durch den ersten Speicherbereich angegebene Datenstatus mit den im zweiten Speicherbereich enthaltenen eigentlichen Daten in Konflikt steht.
  • Individuelle Speicherzellen des Speichers können individuell nur in einer unidirektionalen Weise umprogrammiert werden. In diesem Zusammenhang bedeutet ”unidirektionale Weise” beispielsweise, dass der Übergang von ”0” auf ”1” möglich ist, aber der Übergang von ”1” auf ”0” nicht möglich ist. Der Flash-Speicher kann auf Zellen mit einzelnem Niveau (SLCs) oder auf Zellen mit mehreren Niveaus (MLCs) basieren. Im Fall von Zellen mit mehreren Niveaus kann beispielsweise ein Übergang von ”0” über ”1” über ”2” auf ”3” (d. h. von 00 auf 01 auf 10 auf 11) möglich zu programmieren sein, aber ”3” auf ”2” auf ”1” auf ”0” kann nicht möglich sein. Das Wort ”individuell” bezieht sich auf die Tatsache, dass nur die individuelle Programmierung einer Speicherzelle (typischerweise 1 Bit oder n Bits für MLC) dieser Einschränkung unterliegt; ein blockweises oder chipweises Löschen (Umprogrammieren ”in der anderen Richtung”) kann tatsächlich möglich sein. Existierende Daten in einer Speicherzelle, die bereits den ”Endzustand” (z. B. ”1”) erreicht hat, werden nicht mehr durch das vorbestimmte Muster modifiziert (da dies einfach mit individueller Bitprogrammierung in Flash-Speichern nicht möglich ist.
  • Der Flash-Speicher kann implizit eine bitweise ODER-Kombination zwischen existierenden Daten und neuen Daten durchführen, wenn er die neuen Daten in den zweiten Speicherbereich schreibt, der bereits die existierenden Daten enthält, das heißt
    resultierender Speicherinhalt = existierende Daten ODER neue Daten
  • Das Verfahren kann ferner einen Schritt zum Löschen eines Speicherblocks mit dem ersten Speicherbereich, dem zweiten Speicherbereich und einem dritten Speicherbereich umfassen, um den Speicherblock in einen beschreibbaren Zustand zurückzusetzen und einen gelöschten ersten Speicherbereich, einen gelöschten zweiten Speicherbereich und einen gelöschten dritten Speicherbereich zu erhalten. Anstelle eines Speicherblocks können Daten auch auf einer anderen Ebene gelöscht werden, beispielsweise Löschen eines Speichersektors, einer Speicherseite oder eines ganzen Speicherchips. Die Fehlerkorrekturdaten für den ersten Speicherbereich können dann auf der Basis des gelöschten ersten Speicherbereichs bestimmt werden. Gegebenenfalls können die Fehlerkorrekturdaten von der Adresse des ersten Speicherbereichs abhängen. Das Verfahren umfasst auch das Schreiben der Fehlerkorrekturdaten für den ersten Speicherbereich in den gelöschten dritten Speicherbereich.
  • Bezugnehmend auf das, was im vorangehenden Absatz beschrieben wurde, kann der Speicherblock ferner einen vierten Speicherbereich zum Speichern von Fehlerkorrekturdaten relativ zum zweiten Speicherbereich umfassen. In einem Zusammenhang mit dem Löschen des Speicherblocks werden keine Fehlerkorrekturdaten für den zweiten Speicherbereich bestimmt und in den vierten Speicherbereich geschrieben, um sowohl den zweiten Speicherbereich als auch den vierten Speicherbereich im beschreibbaren Zustand zu halten, bis eigentliche Benutzerdaten und entsprechende Fehlerkorrekturdaten in den zweiten und vierten Speicherbereich geschrieben werden sollen.
  • Das vorbestimmte Datenmuster und die vollständig gelöschten Fehlerkorrekturdaten bilden ein gültiges Codewort eines zugrundeliegenden Fehlerkorrekturcodes. Mit anderen Worten, der Bitvektor (Muster, 0, ..., 0) kann ein Codewort des Fehlerkorrekturcodes sein.
  • Der erste Speicherbereich kann ein erstes Speicherwort sein und der zweite Speicherbereich kann ein zweites Speicherwort mit einer bekannten Adressenbeziehung relativ zum ersten Speicherbereich sein. Gemäß alternativen Aspekten kann der erste Speicherbereich ein erster Abschnitt eines Speicherworts sein und der zweite Speicherbereich kann ein zweiter Abschnitt des Speicherworts sein, so dass das Speicherwort in den ersten Speicherbereich und den zweiten Speicherbereich unterteilt wird. In diesem zweiten Fall teilen sich jedoch der erste Speicherbereich und der zweite Speicherbereich dieselben Fehlerkorrekturdaten. Dies bedeutet, dass es zumindest in allgemeiner Weise nicht möglich ist, den Dateninhalt des zweiten Speicherbereichs in beliebiger Weise zu modifizieren, da dies eine Rückwirkung auf die Fehlerkorrekturdaten haben kann, das heißt die Fehlerkorrekturdaten müssten geändert werden. In einigen wenigen Fällen kann eine solche Modifikation der Fehlerkorrekturdaten möglich sein, da nur Bitübergänge von ”0” auf ”1” stattfinden. Im allgemeinen Fall können jedoch die Fehlerkorrekturdaten nicht in der erforderlichen Weise geändert werden. Es wird auf 2A und die entsprechende Beschreibung für eine tiefergehende Erläuterung der Begrenzungen, die berücksichtigt werden müssen, Bezug genommen.
  • 7 zeigt ein schematisches Ablaufdiagramm eines weiteren vorgeschlagenen Verfahrens. Das Verfahren umfasst einen Schritt 702 zum Programmieren eines vorbestimmten Datenmusters als Markierung über existierende Daten in einen Speicherbereich innerhalb eines Flash-Speichers. Fehlerkorrekturdaten für den Speicherbereich (auch im Flash-Speicher gespeichert) werden durch eine Anwesenheit oder Abwesenheit des vorbestimmten Datenmusters nicht modifiziert, d. h. das vorbestimmte Datenmuster ist für den Fehlerkorrekturcode transparent. Man könnte auch sagen, dass das vorbestimmte Datenmuster sich im Nullraum des Fehlerkorrekturcodes befindet. Eine Bedingung für die existierenden Daten besteht darin, dass Bits in den existierenden Daten nicht in Bitpositionen vorkommen, die für Bits des vorbestimmten Datenmusters erforderlich sind. In einem Schritt 704 wird bei einem bevorstehenden Lesezugriff oder Schreibzugriff auf den Speicherbereich zuerst bewertet, ob der Speicherbereich das vorbestimmte Datenmuster enthält, und Bestimmen eines Datenstatus des Speicherbereichs auf der Basis einer Anwesenheit oder Abwesenheit des vorbestimmten Datenmusters im Speicherbereich.
  • 8A und 8B zeigen ein schematisches Ablaufdiagramm eines Verfahrens zum Managen von Lese-, Schreib- und Löschzugriffen auf einen Flash-Speicher. In einem Schritt 802 wird ein vollständiger Speichersektor (oder Speicherblock) gelöscht. Folglich ist der ganze Speichersektor nun beschreibbar. Es ist zu beachten, dass der vollständig gelöschte Zustand in einigen Flash-Speichern nicht ECC-gültig sein kann (aufgrund der Konvention aus Sicherheitsgründen oder aufgrund von entsprechenden Kundenanforderungen). In Schritt 804 werden die ECC-Daten daher für zumindest einen ersten Speicherbereich innerhalb des gelöschten Speichersektors bestimmt. Die ECC-Daten können von der Adresse des ersten Speicherbereichs abhängen. In praktischen Anwendungen kann jedes zweite Speicherwort (beispielsweise die Speicherworte an geraden Adressen 0x0, 0x2, 0x4 ...) als mehrere erste Speicherbereiche betrachtet werden. Infolge von Schritt 804 werden die korrekten Fehlerkorrekturdaten für den (die) ersten Speicherbereich(e) in einen geeigneten Speicherbereich in Schritt 806 geschrieben, nämlich den dritten Speicherbereich (siehe beispielsweise 4 und 5) und daher sind der (die) erste (n) Speicherbereich (e) zusammen mit dem (den) ersten Speicherbereich(en) ECC-gültig, nachdem Schritt 806 vollendet wurde.
  • Zu einem späteren Zeitpunkt könnte ein Anwendungscode prüfen wollen, ob es möglich ist, ein spezifisches Speicherwort innerhalb des Flash-Speichers zu lesen, oder ob es möglich ist, Daten in das Speicherwort zu schreiben. Dazu kann der erste Speicherbereich in einem Schritt 808 gelesen werden. In einem anschließenden Schritt 810 wird festgestellt, ob der erste Speicherbereich das vorbestimmte Datenmuster enthält. Wenn die Antwort Nein (”N”) ist, ist der Datenstatus des zweiten Speicherbereichs ”beschreibbar” und das Verfahren fährt am Verbindungspunkt 1 fort. Wenn die Antwort Ja (”J”) ist, ist der Datenstatus für den zweiten Speicherbereich ”gültige Daten (sind) vorhanden”.
  • An einem Verzweigungspunkt 812 wird eine Entscheidung hinsichtlich dessen getroffen, ob ein Lesezugriff auf den zweiten Speicherbereich durchgeführt werden sollte. Die Antwort auf diese Frage wird typischerweise vom Anwendungscode geliefert. Wenn die Antwort Nein ist, fährt das Verfahren am Verbindungspunkt 2 fort. Im anderen Fall geht das Verfahren zu Schritt 814 weiter, wo gültige Daten aus dem zweiten Speicherbereich gelesen werden. Nach Schritt 814 fährt das Verfahren auch am Verbindungspunkt 2 fort, der in 8B zu finden ist.
  • 8B beginnt an der Oberseite mit dem Verbindungspunkt 1, der der ”Nein”-Antwort des Verzweigungspunkts 810 entspricht. Daher wurde gerade festgestellt, dass der Datenstatus für den zweiten Speicherbereich ”beschreibbar” ist. In Schritt 816 wird der Anwendungscode hinsichtlich dessen abgefragt, ob ein Schreibzugriff auf den zweiten Speicherbereich durchgeführt werden sollte. Wenn die Antwort ”Nein” ist, fährt das Verfahren am Verbindungspunkt 2 fort, der zwischen den Schritten 818 und 824 zu finden ist. Wenn die Antwort auf die Abfrage in Schritt 816 ”Ja” ist, wird eine untrennbare Kombination 818 von zwei Operationen durchgeführt: Zuerst werden die gewünschten Daten in Schritt 820 in den zweiten Speicherbereich geschrieben und zweitens wird das vorbestimmte Muster in Schritt 822 in den ersten Speicherbereich geschrieben. Die Reihenfolge der Schritte 820 und 822 kann auch umgekehrt sein. Nachdem die untrennbare Kombination 818 ausgeführt wurde, erreicht das Verfahren den Verbindungspunkt 2.
  • Nach dem Verbindungspunkt 2 ist ein Verzweigungspunkt 824 hinsichtlich eines Löschens des vollständigen Speichersektors (oder Speicherblocks) vorgesehen. Diese Entscheidung wird typischerweise durch einen sogenannten ”Müllsammler” des Flash-Speichers oder der Flash-Speichersteuereinheit getroffen. Falls die Entscheidung getroffen wird, den vollständigen Speichersektor zu löschen, fährt das Verfahren am Verbindungspunkt 3 fort, der an der Oberseite von 8A zu finden ist. Im entgegengesetzten Fall fährt das Verfahren am Verbindungspunkt 4 fort, der zu Schritt 808 in 8A führt. Das Löschen des vollständigen Speichersektors kann das Kopieren beliebiger existierender Daten in einen anderen Speichersektor umfassen.
  • 9 zeigt ein schematisches Blockdiagramm eines Hauptrechnersystems 910, einer Flash-Speichersteuereinheit 920 und eines Flash-Speichers 940. Ein Bus 915 kann vorgesehen sein, um das Hauptrechnersystem 910 mit der Flash-Steuereinheit 920 und möglicherweise mit weiteren Peripheriegeräten zu verbinden. Die Flash-Speichersteuereinheit 920 wird in 10 genauer erläutert.
  • Der Flash-Speicher 940 kann mehrere Speicherblöcke umfassen, z. B. Block 0, Block 1, Block 2 ... Jeder Block kann mehrere Seiten umfassen, beispielsweise 128 Seiten beginnend an der Seite 0 bis zur Seite 127. Jede Seite ist in mehrere Speicherworte unterteilt, beispielsweise 128 Worte. Wie vorstehend erläutert, können in Abhängigkeit von der Flash-Technologie, die verwendet wird (NICHT-UND-Flash oder NICHT-ODER-Flash, um die am umfangreichsten verwendeten Typen zu nennen), Daten in den Flash-Speicher geschrieben und davon gelesen werden mit einer ganzen Seite auf einmal, wie es bei dem NICHT-UND-Flash der Fall ist. Der Flash vom NICHT-ODER-Typ ermöglicht typischerweise, dass ein einzelnes Maschinenwort (Byte) unabhängig geschrieben oder gelesen wird, das heißt die minimale Schreibgranularität ist gleich der ECC-Breite, kann jedoch auch größer sein (mehrere ECC-Worte kombiniert). Wenn Daten gelöscht werden müssen, ist dies typischerweise nur mit einem ganzen Block auf einmal möglich. Der Flash weist typischerweise einen kleineren Grundriss auf als beispielsweise ein EEPROM, so dass mehr Daten pro Fläche gespeichert werden können (höhere Datendichte). Flash-Speicher können einen Geschwindigkeitsvorteil gegenüber einigen Typen von Nicht-Flash-Speichern aufweisen, insbesondere wenn große Mengen an Daten geschrieben werden.
  • 10 zeigt ein schematisches Blockdiagramm einer Flash-Speichersteuereinheit 920. Die Flash-Speichersteuereinheit 920 umfasst einen Musterprogrammierer 921, eine Ablage 922 für ein vorbestimmtes Muster, einen Musterkomparator 923, wahlweise einen Müllsammler 924, einen Speicheradressenmanager 925 und eine Fehlerkorrektureinheit (ECC-Einheit) 926. Die Flash-Speichersteuereinheit 920 ist mit dem Bus 915 und mit dem Flash-Speicher 940 verbunden. Der Bus 915 umfasst gewöhnlich einen Datenbus, einen Adressenbus und/oder einen Steuerbus.
  • Der Musterprogrammierer 921 ist dazu konfiguriert, das vorbestimmte Datenmuster in einen Speicherbereich des Flash-Speichers 940 zu schreiben. Wie bereits vorstehend erwähnt, hat das vorbestimmte Datenmuster keinen Einfluss auf resultierende Fehlerkorrekturdaten, die für zumindest den ersten Speicherbereich bestimmt werden. Das vorbestimmte Muster wird von einer Ablage 922 innerhalb der Flash-Speichersteuereinheit geliefert. Die Ablage 922 kann festverdrahtet sein oder sie kann ein Register umfassen. Eine Adresse innerhalb des Flash-Speichers 940, in die das vorbestimmte Datenmuster geschrieben werden soll, wird durch den Speicheradressenmanager 925 bestimmt und zum Flash-Speicher 940 geliefert.
  • Der Musterkomparator 923 ist dazu konfiguriert, vom ersten Speicherbereich des Flash-Speichers gelesene Daten mit dem vorbestimmten Datenmuster zu vergleichen, und zum Bewerten eines Datenstatus für einen zweiten Speicherbereich des Flash-Speichers auf der Basis einer Anwesenheit oder Abwesenheit des vorbestimmten Datenmusters im ersten Speicherbereich.
  • Die Fehlerkorrektureinheit 926 ist dazu konfiguriert, in einem Flash-Speicher zu speichernde Daten zu verarbeiten, um entsprechende Fehlerkorrekturdaten zu erhalten, die auch im Flash-Speicher gespeichert werden sollen, und zum Durchführen einer Fehlerdetektion und Fehlerkorrektur auf der Basis von Daten und entsprechenden Fehlerkorrekturdaten, die aus dem Flash-Speicher gelesen werden. Wenn Daten in den Flash-Speicher 940 geschrieben werden sollen, empfängt die ECC-Einheit 926 die zu schreibenden Daten. Außerdem kann die ECC-Einheit 926 auch die Adresse innerhalb des Flash-Speichers 940 empfangen, in die die Daten geschrieben werden sollen. Die zu schreibenden Daten und die entsprechenden Fehlerkorrekturdaten werden dann zum Flash-Speicher 940 geliefert. Der Speicheradressenmanager 925 liefert die Adresse zur ECC-Einheit 926 und auch zum Flash-Speicher 940.
  • Wenn Daten aus dem Flash-Speicher 940 gelesen werden sollen, werden die Daten und die entsprechenden Fehlerkorrekturdaten (ECC-Daten) an einer Adresse gelesen, die durch den Adressenmanager 925 festgelegt wird. Die Daten, die ECC-Daten und die Adresse werden zur ECC-Einheit 926 geliefert, die diese Eingaben verwendet, um eine Fehlerkorrektur an den Daten und den ECC-Daten durchzuführen, falls möglich. Die fehlerkorrigierten Daten können dann zum Musterkomparator 923 geliefert werden oder sie können direkt zum Hauptrechnersystem 910 (9) über den Bus 915 geliefert werden. Die fehlerkorrigierten Daten können direkt zum Hauptrechner 910 geliefert werden, wenn sie aus einem zweiten Speicherbereich gelesen wurden. Es wird daran erinnert, dass in einigen Implementierungen der zweite Speicherbereich entweder vollständig gelöscht wird (einschließlich des entsprechenden Speicherabschnitts zum Speichern der entsprechenden Fehlerkorrekturdaten) oder er andere eigentliche Benutzerdaten als das vorbestimmte Datenmuster enthält.
  • Gemäß weiteren möglichen Aspekten wird ein Verfahren zum Modifizieren eines Datenstatus eines Speicherworts in einem Speicher geschaffen. Das Verfahren umfasst das Schreiben eines vorbestimmten Musters in mindestens einen Abschnitt des Speicherworts oder eines anderen Speicherworts mit einer bekannten Adressenbeziehung zum Speicherwort, wobei eine Anwesenheit oder Abwesenheit des vorbestimmten Musters resultierende Fehlerkorrekturdaten für das Speicherwort oder das andere Speicherwort nicht ändert, wenn das Speicherwort oder das andere Speicherwort einer entsprechenden Berechnung der Fehlerkorrekturdaten gemäß einem Fehlerkorrekturcode unterzogen wird, wobei die Abwesenheit des vorbestimmten Musters einen ersten Datenstatus des Speicherworts angibt, und wobei die Anwesenheit des vorbestimmten Musters einen zweiten Datenstatus des Speicherworts angibt.
  • Die Fehlerkorrekturdaten können im Speicher gespeichert werden.
  • In Abhängigkeit von dem Typ von Flash-Speicher kann es sein, dass individuelle Speicherzellen des Speichers individuell nur in einer unidirektionalen Weise umprogrammiert werden können. Der Speicher kann beispielsweise eine bitweise ODER-Kombination zwischen dem vorbestimmten Muster und existierenden Daten im Speicherwort oder anderen Speicherwort implizit durchführen.
  • Der erste Datenstatus kann angeben, dass die in zumindest einem Abschnitt des Speicherworts enthaltenen Daten gültig sind. Der zweite Datenstatus kann angeben, dass die in zumindest dem Abschnitt des Speicherworts enthaltenen Daten ungültig sind. Das Verfahren kann ferner das Lesen zumindest des Abschnitts des Speicherworts oder des anderen Speicherworts und das Bestimmen des Datenstatus auf der Basis einer Bewertung hinsichtlich dessen, ob das vorbestimmte Muster im Speicherwort oder anderen Speicherwort vorhanden ist, umfassen.
  • Wenn der Datenstatus des Speicherworts gültig ist, kann das Verfahren einen Schritt zum Durchführen eines Lesezugriffs und/oder eines Schreibzugriffs am Speicherwort umfassen.
  • Das Verfahren kann ferner einen Schritt zum Lesen des Speicherworts oder des anderen Speicherworts umfassen. Eine Fehlerkorrektur am Speicherwort oder anderen Speicherwort kann dann unter Verwendung der Fehlerkorrekturdaten durchgeführt werden.
  • Die Fehlerkorrekturdaten können auch auf einer Adresse des Speicherworts oder des anderen Speicherworts basieren.
  • Das Speicherwort kann erste mehrere Bits, die für im Speicherwort zu speichernde eigentliche Daten reserviert sind, und zweite mehrere Bits, die von den ersten mehreren Bits getrennt sind, umfassen, wobei die zweiten mehreren Bits für das vorbestimmte Muster reserviert sind.
  • Gemäß einem weiteren Aspekt kann ein Verfahren zum Schreiben von Daten in einen nichtflüchtigen Speicherbereich einen Schritt oder eine Handlung zum Lesen von bereits existierenden Daten in diesem Speicherbereich umfassen. Die Daten, deren Schreiben beabsichtigt ist, können dann in einen Teil des Speicherbereichs geschrieben werden, der nicht von den bereits existierenden Daten belegt ist. Das Verfahren kann ferner einen Schritt/eine Handlung zum Berechnen von zusätzlichen Hilfsdaten auf der Basis der Adresse, der bereits existierenden Daten und der neuen Daten umfassen, so dass Fehlerkorrekturdaten für die Adresse, die existierenden Daten, die neuen Daten und die Hilfsdaten dieselben wie bereits existierende Fehlerkorrekturdaten für die existierenden Daten sind. Die Hilfsdaten können in einen Speicherbereich geschrieben werden, der nicht von den existierenden Daten oder den neuen Daten belegt ist, d. h. die Hilfsdaten können in einen weiteren Abschnitt des Speicherbereichs geschrieben werden, der nicht von den existierenden Daten belegt ist oder der von den neuen Daten belegt wird.
  • Dieses Verfahren macht es möglich, die existierenden Daten durch Ergänzen derselben mit den neuen Daten zu modifizieren, um einen neuen Datenwert zu bilden, oder den existierenden Daten eine neue Bedeutung oder Interpretation zu geben. Gleichzeitig können die Hilfsdaten irgendwelche Änderungen innerhalb des Codeworts kompensieren, die normalerweise in den Fehlerkorrekturdaten reflektiert werden müsste. Durch Konstanthalten der Fehlerkorrekturdaten und durch Schreiben der neuen Daten und der Hilfsdaten in Abschnitte des Speicherbereichs, die noch nicht von existierenden Daten belegt sind, kann ein Löschen der existierenden Daten im Speicherbereich vermieden werden oder zumindest bis zu einer späteren Schreiboperation verzögert werden. Folglich können ein niedrigerer Leistungsverbrauch, eine höhere Haltbarkeit und/oder eine höhere Geschwindigkeit des Speichers erwartet werden.
  • Es ist zu beachten, dass nach der Vollendung des Schreibzugriffs die neuen Daten und die Hilfsdaten existierende Daten werden, die durch einen anschließenden Schreibzugriff berücksichtigt werden müssen.
  • Als Liste formuliert kann das vorstehend erwähnte Verfahren beispielsweise wie folgt beschrieben werden:
    Ein Verfahren zum Schreiben von Daten in einen nichtflüchtigen Speicherbereich, das Folgendes umfasst:
    Lesen von bereits existierenden Daten in diesem Speicherbereich;
    Schreiben der Daten in einen Teil des Speicherbereichs, der nicht durch die bereits existierenden Daten belegt ist;
    Berechnen von zusätzlichen Hilfsdaten auf der Basis der Adresse, der bereits existierenden Daten und der neuen Daten, so dass Fehlerkorrekturdaten für die Adresse, die existierenden Daten, die neuen Daten und die Hilfsdaten dieselben wie bereits existierende Fehlerkorrekturdaten für die existierenden Daten sind; und
    Schreiben der Hilfsdaten in den Speicherbereich, der nicht von den existierenden oder neuen Daten belegt ist.
  • Das vorstehend hinsichtlich eines Verfahrens zum Schreiben von Daten in einen nichtflüchtigen Speicher beschriebene Konzept kann auch auf eine Speichersteuereinheit angewendet werden. Die Speichersteuereinheit kann beispielsweise angewiesen werden, Daten in den nichtflüchtigen Speicher zu schreiben. Bevor die Daten tatsächlich in einen Speicherbereich geschrieben werden, kann die Speichersteuereinheit bereits existierende Daten im Zielspeicherbereich lesen. Die Speichersteuereinheit kann mehrere Teile innerhalb des Zielspeicherbereichs betrachten. Falls einer dieser Teile vollständig leer ist (z. B. er nur Nullen enthält), kann die Speichersteuereinheit betrachten, dass keine Daten in diesem speziellen Teil des Speicherbereichs existieren. Die Speichersteuereinheit kann ferner schlussfolgern, dass dieser spezielle Teil zum Schreiben von neuen Daten und/oder Hilfsdaten in den Speicherbereich verfügbar ist, ohne den Bedarf, den Speicherbereich zu löschen (und möglicherweise selbst den ganzen Speicherblock, wie es bei Flash-Speichern der Fall sein kann). Die Speichersteuereinheit kann zwischen jenen Teilen des Speicherbereichs, die für die neuen Daten bestimmt sind, und jenen Teilen des Speicherbereichs, die für die Hilfsdaten bestimmt sind, unterscheiden, um zwischen beiden Typen von Daten unterscheiden zu können, wenn der Speicherbereich gelesen wird. Typischerweise werden die Hilfsdaten während eines Fehlerkorrekturschritts verwendet, aber danach können sie typischerweise beim Lesen des Speicherbereichs ignoriert werden. Die Speichersteuereinheit kann ferner dazu konfiguriert sein, die Fehlerkorrekturdaten aus dem Speicherbereich zu lesen und das Codewort zu rekonstruieren, zumindest innerhalb der Möglichkeiten des verwendeten Fehlerkorrekturcodes (z. B. 2-Bit-Fehlerkorrekturcode, das heißt bis zu zwei fehlerhafte Bits können korrigiert werden).
  • Die Speichersteuereinheit kann ein Register (oder eine ähnliche Struktur) umfassen, das typischerweise die Größe des Speicherbereichs aufweist, so dass die Speichersteuereinheit den Speicherbereich lesen und seinen Inhalt speichern kann, während die Schreiboperation zum Schreiben von Daten in den Speicherbereich ausgeführt wird. Es ist zu beachten, dass das Lesen des Speicherbereichs dem Kopieren des Inhalts des Speicherbereichs in das Register entspricht.
  • Die Speichersteuereinheit kann ferner einen Belegungsdetektor umfassen, der dazu konfiguriert ist zu detektieren, ob ein bestimmter Teil des Speicherbereichs gegenwärtig durch existierende Daten belegt ist. Der Belegungsdetektor kann einen oder mehrere Komparatoren und Logikschaltungen umfassen. Ferner kann der Belegungsdetektor einen Datentypbestimmer umfassen, der dazu konfiguriert ist festzustellen, ob die Daten innerhalb eines bestimmten Teils des Speicherbereichs Nutzinformationsdaten oder Hilfsdaten sind. Der Datentypbestimmer kann auf der Basis einer Unterteilung des Speicherbereichs arbeiten. Ein niedrigerwertiger Bereich von Bits des Speicherbereichs kann beispielsweise für die Hilfsdaten reserviert sein und ein höherwertiger Bereich der Bits kann für eigentliche Benutzerdaten (Nutzinformationsdaten) reserviert sein. Ferner kann ein spezieller Bitbereich für die Fehlerkorrekturdaten reserviert sein.
  • Die Speichersteuereinheit kann ferner einen Fehlerkorrektor umfassen, der dazu konfiguriert ist, das ursprüngliche Codewort aus den aus dem Speicherbereich gelesenen Daten so weit wie möglich zu rekonstruieren. Die Speichersteuereinheit kann auch einen Hilfsdatenrechner umfassen, der dazu konfiguriert ist, die Hilfsdaten zu berechnen, so dass die existierenden Fehlerkorrekturdaten unmodifiziert gelassen werden können, und nur zusätzliche Daten (neue Daten und Hilfsdaten) in nicht belegte Teile des Speicherbereichs geschrieben werden. Die Hilfsdaten und die neuen Daten können vorübergehend im Register gespeichert werden, bevor die Speichersteuereinheit das Register in den Speicherbereich schreibt. Als Alternative kann es möglich sein, nur jene Teile des Registers in entsprechende Teile des Speicherbereichs zu schreiben, die die neuen Daten und/oder die Hilfsdaten enthalten.
  • Als Liste formuliert kann die vorstehend erwähnte Speichersteuereinheit oder Vorrichtung wie folgt beschrieben werden:
    Eine Vorrichtung, beispielsweise eine Speichersteuereinheit, zum Schreiben von Daten in einen nichtflüchtigen Speicherbereich, wobei die Vorrichtung konfiguriert ist zum:
    • – Lesen von bereits existierenden Daten in diesem Speicherbereich;
    • – Schreiben der Daten in einen Teil des Speicherbereichs, der nicht von den bereits existierenden Daten belegt ist;
    • – Berechnen von zusätzlichen Hilfsdaten auf der Basis der Adresse, der bereits existierenden Daten und der neuen Daten, so dass die Fehlerkorrekturdaten für die Adresse, die existierenden Daten, die neuen Daten und die Hilfsdaten dieselben wie bereits existierende Fehlerkorrekturdaten für die existierenden Daten sind; und
    • – Schreiben der Hilfsdaten in den Speicherbereich, der nicht von existierenden oder neuen Daten belegt ist.
  • Alternativ kann eine Vorrichtung geschaffen werden, die wie folgt beschrieben werden kann:
    Eine Vorrichtung, z. B. eine Speichersteuereinheit, die Folgendes umfasst:
    • – einen Fehlerdetektor, der dazu konfiguriert ist, ein ursprüngliches Codewort aus einem aus einem Speicherbereich gelesenen Inhalt zu rekonstruieren, wobei das ursprüngliche Codewort zu einem Fehlerkorrekturcode gehört und einen Abschnitt von bereits existierenden Daten, einen Abschnitt von Fehlerkorrekturdaten, einen leeren Abschnitt, der für neue Daten vorgesehen ist, und einen leeren Abschnitt für Hilfsdaten umfasst; und
    • – einen Hilfsdatenrechner, der dazu konfiguriert ist, die Hilfsdaten zumindest auf der Basis der bereits existierenden Daten, der Fehlerkorrekturdaten und der neuen Daten, die in den Speicherbereich geschrieben werden sollen, zu berechnen, so dass die Hilfsdaten die neuen Daten in einem Fehlerkorrekturdatenbereich des Fehlerkorrekturcodes kompensieren, so dass die Fehlerkorrekturdaten des ursprünglichen Codeworts unmodifiziert gelassen werden können. Wahlweise werden nur die zusätzlichen Daten (neue Daten und Hilfsdaten) in die nicht belegten (oder leeren) Teile des Speicherbereichs geschrieben.
  • Obwohl einige Aspekte im Zusammenhang mit einem Gerät beschrieben wurden, ist klar, dass diese Aspekte auch eine Beschreibung des entsprechenden Verfahrens darstellen, wobei ein Block oder eine Vorrichtung einem Verfahrensschritt oder einem Merkmal eines Verfahrensschritts entspricht. Analog stellen im Zusammenhang mit einem Verfahrensschritt beschrieben Aspekte auch eine Beschreibung einer entsprechenden Einheit oder eines entsprechenden Elements oder Merkmals eines entsprechenden Geräts dar.
  • In Abhängigkeit von bestimmten Implementierungsanforderungen können Ausführungsformen von Ausführungsformen in Hardware oder in Software implementiert werden. Die Implementierung kann unter Verwendung eines digitalen Speichermediums durchgeführt werden, beispielsweise einer Diskette, einer DVD, einer CD, eines ROM, eines PROM, eines EPROM, eines EEPROM oder eines Flash-Speichers mit elektronisch lesbaren Steuersignalen, die darauf gespeichert sind, die mit einem programmierbaren Computersystem zusammenwirken (oder zusammenwirken können), so dass das jeweilige Verfahren durchgeführt wird.
  • Einige Ausführungsformen gemäß Ausführungsformen umfassen einen nichtflüchtigen Datenträger mit elektronisch lesbaren Steuersignalen, die mit einem programmierbaren Computersystem zusammenwirken können, so dass eines der hier beschriebenen Verfahren durchgeführt wird.
  • Im Allgemeinen können Ausführungsformen der vorliegenden Erfindung als Computerprogrammprodukt mit einem Programmcode implementiert werden, wobei der Programmcode zum Durchführen von einem der Verfahren wirksam ist, wenn das Computerprogrammprodukt auf einem Computer läuft. Der Programmcode kann beispielsweise auch auf einem maschinenlesbaren Träger gespeichert sein.
  • Andere Ausführungsformen umfassen das Computerprogramm zum Durchführen von einem der hier beschriebenen Verfahren, das auf einem maschinenlesbaren Träger gespeichert ist.
  • Mit anderen Worten, eine Ausführungsform des erfindungsgemäßen Verfahrens ist daher ein Computerprogramm mit einem Programmcode zum Durchführen von einem der hier beschriebenen Verfahren, wenn das Computerprogramm auf einem Computer läuft.
  • Eine weitere Ausführungsform der erfindungsgemäßen Verfahren ist daher ein Datenträger (oder ein digitales Speichermedium oder ein computerlesbares Medium) mit darauf aufgezeichnet dem Computerprogramm zum Durchführen von einem der hier beschriebenen Verfahren.
  • Eine weitere Ausführungsform des erfindungsgemäßen Verfahrens ist daher ein Datenstrom oder eine Sequenz von Signalen, die das Computerprogramm zum Durchführen von einem der hier beschriebenen Verfahren darstellt. Der Datenstrom oder die Sequenz von Signalen kann beispielsweise dazu konfiguriert sein, über eine Datenkommunikationsverbindung, beispielsweise über das Internet, übertragen zu werden.
  • Eine weitere Ausführungsform umfasst ein Verarbeitungsmittel, beispielsweise einen Computer oder eine programmierbare Logikvorrichtung, die dazu konfiguriert oder ausgelegt ist, eines der hier beschriebenen Verfahren durchzuführen.
  • Eine weitere Ausführungsform umfasst einen Computer, auf dem das Computerprogramm zum Durchführen von einem der hier beschriebenen Verfahren installiert ist.
  • In einigen Ausführungsformen kann eine programmierbare Logikvorrichtung (beispielsweise ein anwenderprogrammierbares Verknüpfungsfeld) verwendet werden, um einige oder alle der Funktionalitäten der hier beschriebenen Verfahren durchzuführen. In einigen Ausführungsformen kann ein anwenderprogrammierbares Verknüpfungsfeld mit einem Mikroprozessor zusammenarbeiten, um eines der hier beschriebenen Verfahren durchzuführen. Im Allgemeinen werden die Verfahren durch irgendein Hardwaregerät durchgeführt.
  • Obwohl diese Erfindung hinsichtlich mehrerer vorteilhafter Ausführungsformen beschrieben wurde, bestehen Veränderungen, Permutationen und Äquivalente, die in den Schutzbereich dieser Erfindung fallen. Es sollte auch beachtet werden, dass es viele alternative Weisen zum Implementieren der Verfahren und Zusammensetzungen der vorliegenden Erfindung gibt. Daher ist beabsichtigt, dass die folgenden beigefügten Ansprüche als alle solchen Veränderungen, Permutationen und Äquivalente, die in den echten Gedanken und Schutzbereich der vorliegenden Erfindung fallen, umfassend interpretiert werden.
  • Die vorstehend beschriebenen Ausführungsformen erläutern lediglich die Prinzipien der vorliegenden Erfindung. Selbstverständlich sind Modifikationen und Variationen der hier beschriebenen Anordnungen und Details für einen anderen Fachmann auf dem Gebiet ersichtlich. Daher besteht die Absicht, nur durch den Schutzbereich der kommenden Patentansprüche begrenzt zu sein und nicht durch die spezifischen Details, die zur Beschreibung und Erläuterung der Ausführungsformen hier dargestellt sind.
  • Obwohl sich jeder Anspruch nur auf einen einzelnen Anspruch rückbezieht, deckt die Offenbarung auch eine beliebige denkbare Kombination von Ansprüchen ab.

Claims (23)

  1. Verfahren zum Zugreifen auf einen nichtflüchtigen Speicher, wobei das Verfahren Folgendes umfasst: Lesen eines ersten Speicherbereichs des nichtflüchtigen Speichers; Feststellen, ob der erste Speicherbereich ein vorbestimmtes Datenmuster enthält, wobei das vorbestimmte Datenmuster keinen Einfluss auf resultierende Fehlerkorrekturdaten hat, die für zumindest den ersten Speicherbereich bestimmt werden; und Bewerten eines Datenstatus für einen zweiten Speicherbereich des nichtflüchtigen Speichers auf der Basis einer Anwesenheit des vorbestimmten Datenmusters im ersten Speicherbereich.
  2. Verfahren nach Anspruch 1, das ferner Folgendes umfasst: Lesen des zweiten Speicherbereichs, wenn der Datenstatus eine Anwesenheit von gültigen Daten innerhalb des zweiten Speicherbereichs angibt.
  3. Verfahren nach Anspruch 1 oder 2, das ferner Folgendes umfasst: Schreiben von Daten in den zweiten Speicherbereich, wenn der Datenstatus angibt, dass der zweite Speicherbereich beschreibbar ist; und Schreiben des vorbestimmten Datenmusters in den ersten Speicherbereich, um den Datenstatus dahin gehend zu ändern, eine Anwesenheit von gültigen Daten im zweiten Speicherbereich anzugeben.
  4. Verfahren nach einem der Ansprüche 1 bis 3, wobei der Speicher ein Flash-Speicher ist und wobei individuelle Speicherzellen des Speichers individuell nur in einer unidirektionalen Weise umprogrammiert werden können.
  5. Verfahren nach einem der Ansprüche 1 bis 4, wobei der nichtflüchtige Speicher implizit eine bitweise ODER- oder eine bitweise UND-Kombination zwischen existierenden Daten und neuen Daten durchführt, wenn er die neuen Daten in den zweiten Speicherbereich schreibt, der bereits die existierenden Daten enthält.
  6. Verfahren nach einem der Ansprüche 1 bis 5, das ferner Folgendes umfasst: Löschen eines Speicherblocks mit dem ersten Speicherbereich, dem zweiten Speicherbereich und einem dritten Speicherbereich, um den Speicherblock in einen beschreibbaren Zustand zurückzusetzen und einen gelöschten ersten Speicherbereich, einen gelöschten zweiten Speicherbereich und einen gelöschten dritten Speicherbereich zu erhalten; Bestimmen der Fehlerkorrekturdaten für den ersten Speicherbereich auf der Basis des gelöschten ersten Speicherbereichs; und Schreiben der Fehlerkorrekturdaten für den ersten Speicherbereich in den gelöschten dritten Speicherbereich.
  7. Verfahren nach Anspruch 6, wobei der Speicherblock ferner einen vierten Speicherbereich zum Speichern von Fehlerkorrekturdaten relativ zum zweiten Speicherbereich umfasst, wobei in einem Zusammenhang mit dem Löschen des Speicherblocks keine Fehlerkorrekturdaten für den zweiten Speicherbereich bestimmt werden und in den vierten Speicherbereich geschrieben werden, um sowohl den zweiten Speicherbereich als auch den vierten Speicherbereich im beschreibbaren Zustand zu halten, bis eigentliche Benutzerdaten und entsprechende Fehlerkorrekturdaten in den zweiten und den vierten Speicherbereich geschrieben werden sollen.
  8. Verfahren nach einem der Ansprüche 1 bis 7, wobei die Fehlerkorrekturdaten für einen Speicherbereich eine Funktion zumindest eines Dateninhalts des Speicherbereichs und einer Adresse des Speicherbereichs sind.
  9. Verfahren nach einem der Ansprüche 1 bis 8, wobei der erste Speicherbereich und die entsprechenden Fehlerkorrekturdaten kein gültiges Codewort eines zugrundeliegenden Fehlerkorrekturcodes bilden, wenn der erste Speicherbereich und die entsprechenden Fehlerkorrekturdaten vollständig gelöscht werden.
  10. Verfahren nach einem der Ansprüche 1 bis 9, wobei das vorbestimmte Datenmuster und die Fehlerkorrekturdaten für vollständig gelöschte Daten zusammen ein gültiges Codewort eines zugrundeliegenden Fehlerkorrekturcodes bilden.
  11. Verfahren nach einem der Ansprüche 1 bis 10, wobei der erste Speicherbereich ein erstes Speicherwort ist und der zweite Speicherbereich ein zweites Speicherwort mit einer bekannten Adressenbeziehung relativ zum ersten Speicherbereich ist.
  12. Verfahren nach einem der Ansprüche 1 bis 11, das ferner Folgendes umfasst: Feststellen, ob der erste Speicherbereich ein weiteres vorbestimmtes Datenmuster enthält, wobei das weitere vorbestimmte Datenmuster keinen Einfluss auf die resultierenden Fehlerkorrekturdaten hat, die für zumindest den ersten Speicherbereich bestimmt werden; wobei die Handlung des Bewertens des Datenstatus für den zweiten Speicherbereich zusätzlich auf der Basis einer Anwesenheit des weiteren vorbestimmten Datenmusters im ersten Speicherbereich durchgeführt wird, so dass mindestens drei verschiedene Werte für den Datenstatus unterschieden werden können.
  13. Verfahren nach einem der Ansprüche 1 bis 12, das ferner Folgendes umfasst: Schreiben des vorbestimmten Datenmusters in den ersten Speicherbereich, um möglicherweise existierende Daten im zweiten Speicherbereich zu annullieren, wenn der erste Speicherbereich nicht bereits das vorbestimmte Datenmuster enthält und wenn eine Annullierung der möglicherweise existierenden Daten im zweiten Speicherbereich erwünscht ist.
  14. Verfahren, das Folgendes umfasst: Programmieren eines vorbestimmten Datenmusters als Markierung über existierende Daten in einem Speicherbereich innerhalb eines nichtflüchtigen Speichers, wobei Fehlerkorrekturdaten für den Speicherbereich, die auch im nichtflüchtigen Speicher gespeichert werden, durch eine Anwesenheit des vorbestimmten Datenmusters nicht modifiziert werden, und wobei eine Bedingung für die existierenden Daten darin besteht, dass Bits in den existierenden Daten nicht in Bitpositionen vorkommen, die für Bits des vorbestimmten Datenmusters erforderlich sind; und bei einem bevorstehenden Lesezugriff oder Schreibzugriff auf den Speicherbereich Bewerten, ob der Speicherbereich das vorbestimmte Datenmuster enthält, und Bestimmen eines Datenstatus des Speicherbereichs auf der Basis einer Anwesenheit des vorbestimmten Datenmusters im Speicherbereich.
  15. Verfahren nach Anspruch 14, wobei der Datenstatus des Speicherbereichs angibt, ob zumindest ein Abschnitt des Speicherbereichs beschreibbar ist oder gültige Daten enthält.
  16. Nichtflüchtiges computerlesbares Medium, das ein Programm speichert, das bewirkt, dass ein Computer ein Verfahren nach einem der Ansprüche 1 bis 15 ausführt, wenn das Verfahren durch den Computer ausgeführt wird.
  17. Flash-Speichersteuereinheit, die Folgendes umfasst: eine Fehlerkorrektureinheit zum Verarbeiten von in einem nichtflüchtigen Speicher zu speichernden Daten, um entsprechende Fehlerkorrekturdaten zu erhalten, die auch im nichtflüchtigen Speicher gespeichert werden sollen, und zum Durchführen einer Fehlerdetektion und Fehlerkorrektur auf der Basis von Daten und entsprechenden Fehlerkorrekturdaten, die aus dem nichtflüchtigen Speicher gelesen werden; einen Musterprogrammierer zum Schreiben eines vorbestimmten Datenmusters in einen Speicherbereich des nichtflüchtigen Speichers, wobei das vorbestimmte Datenmuster keinen Einfluss auf resultierende Fehlerkorrekturdaten hat, die für zumindest den ersten Speicherbereich bestimmt werden; und einen Musterkomparator zum Vergleichen von Daten, die aus einem ersten Speicherbereich des nichtflüchtigen Speichers gelesen werden, mit dem vorbestimmten Datenmuster und zum Bewerten eines Datenstatus für einen zweiten Speicherbereich des nichtflüchtigen Speichers auf der Basis einer Anwesenheit oder einer Abwesenheit des vorbestimmten Datenmusters im ersten Speicherbereich.
  18. Flash-Speichersteuereinheit nach Anspruch 17, wobei die Flash-Speichersteuereinheit dazu autorisiert ist, einen Lesezugriff auf den zweiten Speicherbereich durchzuführen, wenn der Datenstatus eine Anwesenheit von gültigen Daten innerhalb des zweiten Speicherbereichs angibt.
  19. Flash-Speichersteuereinheit nach Anspruch 17 oder 18, wobei die Flash-Speichersteuereinheit dazu autorisiert ist, einen Schreibzugriff auf den zweiten Speicherbereich durchzuführen und zu bewirken, dass der nichtflüchtige Speicher das vorbestimmte Datenmuster in den ersten Speicherbereich schreibt, wenn der Datenstatus eine Abwesenheit von gültigen Daten innerhalb des zweiten Speicherbereichs angibt.
  20. Flash-Speichersteuereinheit nach einem der Ansprüche 17 bis 19, die ferner Folgendes umfasst eine Müllsammlereinheit, die dazu konfiguriert ist, mindestens einen Speicherblock mit dem ersten Speicherbereich, dem zweiten Speicherbereich und einem dritten Speicherbereich zu löschen, um den Speicherblock in einen beschreibbaren Zustand zurückzusetzen und um einen gelöschten ersten Speicherbereich, einen gelöschten zweiten Speicherbereich und einen gelöschten dritten Speicherbereich zu erhalten; wobei die Fehlerkorrektureinheit ferner dazu konfiguriert ist, die Fehlerkorrekturdaten für den Speicherbereich auf der Basis des gelöschten ersten Speicherbereichs zu bestimmen, und wobei die Flash-Speichersteuereinheit dazu konfiguriert ist zu bewirken, dass der nichtflüchtige Speicher die Fehlerkorrekturdaten für den ersten Speicherbereich in den gelöschten dritten Speicherbereich schreibt.
  21. Flash-Speichersteuereinheit nach einem der Ansprüche 17 bis 20, wobei die Fehlerkorrektureinheit dazu konfiguriert ist, einen Dateninhalt des Speicherbereichs und eine Adresse des Speicherbereichs zu berücksichtigen.
  22. Flash-Speichersteuereinheit nach einem der Ansprüche 17 bis 21, wobei der erste Speicherbereich und die entsprechenden Fehlerkorrekturdaten kein gültiges Codewort eines zugrundeliegenden Fehlerkorrekturcodes bilden, wenn der erste Speicherbereich und die entsprechenden Fehlerkorrekturdaten vollständig gelöscht werden.
  23. Flash-Speichersteuereinheit nach einem der Ansprüche 17 bis 22, wobei das vorbestimmte Datenmuster und die Fehlerkorrekturdaten für vollständig gelöschte Daten zusammen ein gültiges Codewort eines zugrundeliegenden Fehlerkorrekturcodes bilden.
DE102015209502.9A 2014-05-28 2015-05-22 Markierungsprogrammierung in nichtflüchtigen Speichern Pending DE102015209502A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/289,311 US9405618B2 (en) 2014-05-28 2014-05-28 Marker programming in non-volatile memories
US14/289,311 2014-05-28

Publications (1)

Publication Number Publication Date
DE102015209502A1 true DE102015209502A1 (de) 2015-12-03

Family

ID=54481721

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102015209502.9A Pending DE102015209502A1 (de) 2014-05-28 2015-05-22 Markierungsprogrammierung in nichtflüchtigen Speichern

Country Status (3)

Country Link
US (2) US9405618B2 (de)
JP (1) JP6080180B2 (de)
DE (1) DE102015209502A1 (de)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9405618B2 (en) * 2014-05-28 2016-08-02 Infineon Technologies Ag Marker programming in non-volatile memories
JP6527054B2 (ja) * 2015-08-28 2019-06-05 東芝メモリ株式会社 メモリシステム
US10552252B2 (en) * 2016-08-29 2020-02-04 Seagate Technology Llc Patterned bit in error measurement apparatus and method
DE102017108288B4 (de) * 2017-04-19 2020-06-04 Infineon Technologies Ag Aktualisieren eines Speichers
DE102020108101A1 (de) * 2020-03-24 2021-09-30 Pilz Gmbh & Co. Kg Vorrichtung zur Speicherung von Daten in einem nichtflüchtigen Speicher
CN113157490B (zh) * 2021-04-01 2023-12-26 深圳市纽创信安科技开发有限公司 一种芯片内嵌的Flash存储器和存储控制方法

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100644602B1 (ko) * 2000-10-11 2006-11-10 삼성전자주식회사 플래시메모리를 위한 재사상 제어방법 및 그에 따른플래시 메모리의 구조
US6517737B2 (en) 2001-03-02 2003-02-11 Lucent Technologies Inc. Ceramic piezoelectric and devices using the piezoelectric
EP1399819A2 (de) 2001-04-24 2004-03-24 Koninklijke Philips Electronics N.V. Verbessertes fehlerkorrekturverfahren für flashspeicher mit bitänderungsermöglichkeit
JP2005062981A (ja) * 2003-08-08 2005-03-10 Funai Electric Co Ltd 光ディスク再生装置
TWI224351B (en) 2003-09-18 2004-11-21 Ind Tech Res Inst Apparatus for detecting displacement of two-dimensional motion
US7512864B2 (en) * 2005-09-30 2009-03-31 Josef Zeevi System and method of accessing non-volatile computer memory
US8120960B2 (en) * 2007-11-07 2012-02-21 Spansion Israel Ltd. Method and apparatus for accessing a non-volatile memory array comprising unidirectional current flowing multiplexers
US8082384B2 (en) * 2008-03-26 2011-12-20 Microsoft Corporation Booting an electronic device using flash memory and a limited function memory controller
US8628015B2 (en) * 2008-10-31 2014-01-14 Hand Held Products, Inc. Indicia reading terminal including frame quality evaluation processing
US9785501B2 (en) * 2014-02-18 2017-10-10 Sandisk Technologies Llc Error detection and handling for a data storage device
US9405618B2 (en) * 2014-05-28 2016-08-02 Infineon Technologies Ag Marker programming in non-volatile memories

Also Published As

Publication number Publication date
US20160306696A1 (en) 2016-10-20
JP6080180B2 (ja) 2017-02-15
US10067826B2 (en) 2018-09-04
US9405618B2 (en) 2016-08-02
US20150347227A1 (en) 2015-12-03
JP2015225661A (ja) 2015-12-14

Similar Documents

Publication Publication Date Title
DE102015209502A1 (de) Markierungsprogrammierung in nichtflüchtigen Speichern
DE102019116520A1 (de) Datenspeichersysteme und -verfahren für eine verbesserte datenumlagerung basierend auf lesepegelspannungen, die mit einer fehlerwiederherstellung verbunden sind
DE102011085988B4 (de) Verfahren und Vorrichtungen zum Beeinflussen eines Betriebszustands eines Mehrfachpegelzelle-Speichers
DE112014004761B4 (de) Beeinflussung des Wear-Leveling in Speichersystemen
DE112011102160B4 (de) Wear-levelling bei Zellen/Seiten/Teilseiten/Blöcken eines Speichers
DE102007016460A1 (de) Nichtflüchtiges Speicherbauelement, nichtflüchtiges Speichersystem und Leseverfahren für ein nichtflüchtiges Speicherbauelement
DE112008002553T5 (de) Einsatz eines MLC-Flash als SLC durch Schreiben von Dummy-Daten
DE102018123926A1 (de) Dynamische mehrstufige Decodierung
DE112020006139T5 (de) Vor-lese-und lese-schwellenspannungsoptimierung
DE102016001591A1 (de) System und Verfahren für Copy-On-Write auf einer SSD
DE102010037290A1 (de) Speichersysteme und Verfahren zur Erfassung einer Verteilung von instabilen Speicherzellen
DE102013108491A1 (de) Nichtflüchtige Speichervorrichtung und Betriebsverfahren mit variablen Speicherzellenzustandsdefinitionen
DE102019125060A1 (de) Datenspeichersysteme und verfahren zum autonomen anpassen der leistung, kapazität und/oder der betriebsanforderungen eines datenspeichersystems
DE112019000167T5 (de) Anpassbare Lesewiederholungsreihenfolge basierend auf einem Decodierungserfolgstrend
DE112014000311T5 (de) Absichern der Inhalte einer Speichereinheit
DE102005016050A1 (de) Speicherfehlererkennungsvorrichtung und Verfahren zum Erkennen eines Speicherfehlers
DE102015011991A1 (de) Codierungsschema für vertikale 3D-Flash-Speicher
DE102015113414A1 (de) Fehlerkorrektur unter Verwendung von WOM-Codes
DE102010006139A1 (de) System und Verfahren zur Finalisierung eines Halbleiterspeichers
DE102010037064A1 (de) Nichtflüchtige Speichervorrichtung und -system sowie Verfahren des Programmierens einer nichtflüchtigen Speichervorrichtung
DE112020005502T5 (de) Dynamische überprovisionierungszuweisung für zweckbestimmte blöcke
DE102018123961A1 (de) Gruppen-leseaktualisierung
DE112016002305B4 (de) Reduktion der Schreibverstärkung in einem Objektspeicher
DE102018124836A1 (de) Neuartiger speicherbaustein
DE102006009214B4 (de) Verfahren und Vorrichtung zum Schreiben in eine Zielspeicherseite eines Speichers

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06F0012160000

Ipc: G06F0011100000