DE10321104B4 - Verfahren zur Ablage von veränderlichen Daten - Google Patents

Verfahren zur Ablage von veränderlichen Daten Download PDF

Info

Publication number
DE10321104B4
DE10321104B4 DE10321104.7A DE10321104A DE10321104B4 DE 10321104 B4 DE10321104 B4 DE 10321104B4 DE 10321104 A DE10321104 A DE 10321104A DE 10321104 B4 DE10321104 B4 DE 10321104B4
Authority
DE
Germany
Prior art keywords
page
data
flash
pages
eeprom
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE10321104.7A
Other languages
English (en)
Other versions
DE10321104A1 (de
Inventor
Eckehard Knoefler
Thomas MUNZ
Frank Neukam
Thomas Mocken
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.)
Robert Bosch GmbH
Original Assignee
Robert Bosch GmbH
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 Robert Bosch GmbH filed Critical Robert Bosch GmbH
Priority to DE10321104.7A priority Critical patent/DE10321104B4/de
Publication of DE10321104A1 publication Critical patent/DE10321104A1/de
Application granted granted Critical
Publication of DE10321104B4 publication Critical patent/DE10321104B4/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • 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
    • G11C16/102External programming circuits, e.g. EPROM programmers; In-circuit programming or reprogramming; EPROM emulators

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Read Only Memory (AREA)

Abstract

Verfahren zur Ablage von veränderlichen Daten in einem Speicherelement (10), das mindestens einen Sektor (12, S0, S1) aufweist, der in eine Anzahl von zu beschreibenden Seiten (14, 20) unterteilt ist, bei dem nach jeder Datenänderung eine Instanz der aktuellen Daten mit einem den Quellort der Daten kennzeichnenden Index in eine der Seiten (14, 20) abgelegt wird, wobei die Seiten (14, 20) sequentiell aufsteigend bezüglich ihrer Adressen belegt werden, wobei zur Verkürzung der Suche nach einem geeigneten Speicherort für neue Daten entweder eine Seite (14, 20), in die zuletzt Daten abgelegt wurde, oder eine nächste freie Seite (14, 20) als Zustandsvariable gespeichert werden, dadurch gekennzeichnet, dass, wenn sich die Prognose für den geeigneten Speicherort für die neuen Daten anhand der Zustandsvariable als falsch erweist, die Zustandsvariable inkrementiert wird und ein neuer Schreibversuch für die neuen Daten mit der nächsten Seite (14, 20) gestartet wird.

Description

  • Die Erfindung betrifft ein Verfahren zur Ablage von veränderlichen Daten in einem Speicherelement, insbesondere einem Flash-Speicher. Die Erfindung betrifft weiterhin ein Computerprogramm zur Durchführung des Verfahrens.
  • Stand der Technik
  • Verfahren zur Ablage veränderlicher Daten sind bekannt. Diese werden bspw. zur Emulation der Funktionalität eines EEPROMs mittels Ablage veränderlicher Daten in einem Flash-Speicher eingesetzt.
  • Bekannte Emulations-Verfahren weisen einige Gemeinsamkeiten auf. Beim ersten Speichern der (EEPROM-)Daten wird ein eigens dafür reservierter, gelöschter Bereich in dem Flash-Speicherbaustein mit diesen Daten und ggf. zusätzlich erforderlichen Verwaltungsdaten beschrieben. Sobald die emulierten EEPROM-Daten geändert werden sollen, wird eine neue Instanz dieser Daten in einem ebenfalls eigens dafür vorgesehenen reservierten gelöschten Bereich des Flash-Bausteins gespeichert. Üblicherweise wird für die „ersten” Daten-Instanzen und die „weiteren” Instanzen ein gemeinsamer, eigens für die EEPROM-Emulation reservierter Bereich im Flash-Baustein verwendet.
  • Wenn der für die EEPROM-Emulation reservierte Bereich in dem Flash-Baustein mit mehreren Daten-Instanzen vollgeschrieben ist, muß er wieder gelöscht werden, bevor neue Daten-Instanzen aufgenommen werden können. Da Flash-Bausteine nur sektorweise gelöscht werden können, ist ein selektives Löschen einzelner Daten-Instanzen nicht möglich. Bytes in einem Flash-Sektor können nur auf beliebige Werte programmiert werden, wenn sie sich in einem gelöschten Zustand befinden. Nach dem Löschen eines Sektors kann dieser wortweise beschrieben werden. Erneutes Beschreiben setzt also immer ein vorheriges Löschen des gesamten Sektors voraus.
  • Des weiteren ist zu beachten, daß Flash-Speicher lediglich für eine beschränkte Anzahl von Schreib-/Löschzyklen spezifiziert sind. Wird diese Anzahl überschritten, ist der Datenerhalt nicht mehr gewährleistet.
  • Um sicherzustellen, daß während des Löschens des Datenbereichs im Flash-Baustein keine Daten, bspw. bei Ausfall der Betriebsspannung, verloren gehen, werden üblicherweise zwei für die EEPROM-Emulation reservierte Bereiche in dem Flash-Baustein bereitgestellt, die wechselweise zur Datenspeicherung verwendet werden. Hierfür ist jedoch eine Sektorverwaltung erforderlich
  • Grundsätzlich sind heute zwei Verfahren der EEPROM-Emulation in einem Flash-Speicher bekannt.
  • Bei dem ersten bekannten Verfahren wird der EEPROM-Speicherinhalt als exakte Kopie in den Sektor eines Flash-Speichers programmiert. Der Flash-Speicher enthält mindestens zwei unabhängig voneinander löschbare Sektoren. Bei jeder Änderung des EEPROM-Speicherinhalts wird dieser EEPROM-Speicherinhalt als Ganzes an anderer Stelle in einen gelöschten Bereich des Flash-Sektors programmiert und damit eine neue Instanz des emulierten EEPROM-Speichers geschaffen. Dabei bleibt die alte Instanz zunächst erhalten. Diese wird aber zum Lesen von Daten im allgemeinen nicht mehr verwendet.
  • Das Abspeichern von neuen Instanzen des EEPROM-Speicherinhalts wird solange fortgesetzt, bis der Flash-Speicher voll ist, d. h. kein genügend großer zusammenhängender Speicherbereich mit freien Bytes mehr zur Verfügung steht. In diesem Fall wird auf den nächsten freien Sektor gewechselt und dort die neue Instanz des EEPROM-Speicherinhalts abgelegt. Anschließend kann der belegte Sektor gelöscht werden und steht dann wieder für die Speicherung von neuen Instanzen zur Verfügung.
  • Bei dem bekannten Verfahren handelt es sich um ein sehr einfaches Verfahren, das eine niedrige Komplexität aufweist. Es ist kein zusätzlicher Speicherplatz für Informationen zur Datenverwaltung notwendig. Nachteilig ist jedoch der erforderliche hohe Zeitbedarf beim Abspeichern, da die Änderung auch nur eines einzigen Bits das Schreiben einer vollständigen EEPROM-Instanz bedingt. Daraus folgt auch ein verschwenderischer Umgang mit dem Speicherplatz in dem Flash-Baustein, was einen häufigen Sektorwechsel erforderlich macht, wodurch wiederum die Lebensdauer des Flash-Bausteins beeinträchtigt wird.
  • Bei dem zweiten bekannten Verfahren wird der EEPROM-Speicherinhalt in eine Anzahl gleich großer Teilbereiche, den sogenannten Pages, aufgeteilt. Bei einer Änderung des EEPROM-Speicherinhalts werden lediglich die Pages, deren Inhalt sich geändert hat, neu in den Flash-speicher programmiert. Um den aktuellen EEPROM-Speicherinhalt als ganzes rekonstruieren zu können, sind die an unterschiedlichen Orten im Flash-Speicher abgelegten Instanzen einer EEPROM-Page über ebenfalls im Flash-Speicher abgespeicherte Zeiger miteinander verkettet. Ist der aktuelle Flash-Speicher nach entsprechend vielen Schreiboperationen voll, dann wird auf den nächsten freien Sektor gewechselt. Dort werden zunächst alle EEPROM-Pages einmal als neue Instanz abgelegt. Anschließend kann der volle Sektor gelöscht werden und steht dann wiederum zur Verfügung. Neben den in jeder Page abgespeicherten Verwaltungsdaten benötigt das Verfahren in jedem Sektor auch noch Speicherplatz für eine Sektor-Kopfdatei, dem sogenannten Sektor-Header, der Informationen über den Zustand des Sektors enthält.
  • Vorteilhaft bei diesem Verfahren ist der niedrige Zeitbedarf bei nur wenigen geänderten Daten. Der Speicherbedarf für die eigentlichen Page-Daten ist optimiert. Aufgrund der seltenen Sektorwechsel ist der „Stress” für den Flash-Baustein gering. Allerdings besitzt das Verfahren eine hohe Komplexität. Des weiteren ist zusätzlicher Speicherbedarf für Verwaltungsinformationen, wie Zeiger für verkettete Listen, notwendig. Die Zeiger sind „wunde Punkte” des Verfahrens, da ein „gekippter” Zeiger
    in der Mitte einer verketteten Liste dazu führt, daß man auf die dahinter liegende Listenelemente nicht mehr zugreifen kann.
  • Aus der EP 1 187 143 A2 , der JP 2003 015 928 A und der WO 1995 010083 A1 sind Speicherverfahren für Flash-Speicher bekannt.
  • Aufgabe der Erfindung ist es, ein effizienteres Speicherverfahren bereitzustellen, indem die Suche nach geeigneten Speicherorten vereinfacht wird.
  • Vorteile der Erfindung
  • Das erfindungsgemäße Verfahren gemäß dem unabhängigen Verfahrensanspruch 1 löst diese Aufgabe.
  • Das Verfahren eignet sich insbesondere zur Emulation eines in Pages unterteilten Speicherbausteins, bspw. eines EEPROMs, wobei die Daten der Pages in die Seiten des Speicherelements, insbesondere eines Flash-Speichers, zusammen mit einem die entsprechende Page des EEPROMs und damit den Quellort der übertragenen Daten kennzeichnenden Index abgelegt werden.
  • Die Zuordnung einer Page-Instanz zu einer bestimmten Page, die durch deren Index bestimmt ist, sowie deren Position in der Liste der Änderungen wird nicht mehr durch eine per Zeiger eingerichtete verkettete Liste festgelegt. Anstelle dessen wird für jede Page-Instanz lediglich der Index derjenigen Page gespeichert, zu der die in der Instanz gespeicherten Daten gehören. Aufgrund des Merkmals, daß der für die EEPROM reservierte Speicherbereich in dem Flash-Baustein bei Datenänderungen sequentiell an aufsteigende Adressen belegt wird, können mehrere Instanzen derselben Page durch Vergleich ihrer Ablageadressen in eine zeitliche Reihenfolge gebracht werden.
  • Das erfindungsgemäße Verfahren kann bspw. bei Steuergeräten in Fahrzeugen eingesetzt werden und bedarf dabei einer geringen Häufigkeit der Schreib-/Lesezyklen. Schreiboperationen sind jederzeit möglich, auch bei Normalbetrieb eines Fahrzeuges bei jeder Drehzahl, d. h. keine Beschränkung der Schreiboperationen im Normalbetrieb eines Steuergerätes in dem Fahrzeug auf Initialisierung oder Steuergeräte-Vorlauf und/oder -Nachlauf ist gegeben.
  • Außerdem ist nur ein geringer Flash-Speicherbedarf notwendig. Die erforderliche Komplexität ist im Vergleich zu bekannten Verfahren verringert. Eine byte- oder wortweise Beschreibbarkeit des Flash-Speichers ist nicht erforderlich. Darüber hinaus verhält sich das erfindungsgemäße Verfahren bei Auftreten von dauerhaft defekten Speicherzellen robust, wobei es keine Rolle spielt, wo die defekten Flash-Speicherzellen liegen.
  • Ein besonderer Vorteil der Erfindung besteht darin, daß auch bei „gekippten” Verwaltungsinformationen (in diesem Fall Indizes statt Zeigern) die Liste der zu einer Page gehörenden Instanzen nicht abreißt, sondern lediglich die Daten der betroffenen Page-Instanz verworfen werden müssen, da man diese nicht mehr zweifelsfrei einem bestimmten Page-Index zuordnen kann.
  • Vorzugsweise sind mindestens zwei unabhängig voneinander programmierbare Sektoren in dem Speicherelement vorgesehen.
  • Die vorgesehenen Sektoren können die gleiche Größe oder unterschiedliche Größen haben.
  • Zusätzlich zu dem Index kann auch eine Prüfsumme pro Page-Instanz abgelegt werden.
  • In Ausgestaltung des erfindungsgemäßen Verfahrens wird bei jedem Beschreiben einer Seite der jeweilige Index vorzugsweise zweimal zur Sicherung der Konsistenz des Schreibvorgangs abgelegt. Dies ist insbesondere bei Speichern mit einer feinen Granularität hinsichtlich der Beschreibbarkeit das bevorzugte Verfahren zur Konsistenzsicherung.
  • Bei dem Verfahren erfolgt vorzugsweise die Unterteilung in Seiten lediglich logisch mit Programmitteln, nicht jedoch physikalisch (hardwarebedingt).
  • Die eigentlichen Nutzdaten einer Page können, ggf. teilweise, getrennt von Verwaltungsdaten, wie u. a. den den Quellort der Daten kennzeichnenden Index, gespeichert werden.
  • In Ausgestaltung des Verfahrens wird ein ggf. vorhandenes „margin-read-feature” des verwendeten Speicherelements dahingehend verwendet, daß damit ein unterbrochener Schreibvorgang auf das Speicherelement typischerweise im nachhinein detektiert wird.
  • Bei dem Verfahren kann ein mindestens einmal pro Sektorwechsel inkrementierter oder dekrementierter, in den Verwaltungsdaten der Page-Instanzen (also im verwendeten Speicherelemnt befindlicher) abgelegter Zähler zur Erkennung des aktuellen Sensors herangezogen werden.
  • Das Speicherelement, das vorzugsweise als Flash-Speicherelement ausgebildet ist, umfaßt mindestens einen Sektor, der in eine Anzahl von Seiten logisch oder physikalisch unterteilt ist. Die Seiten sind so dimensioniert, daß in diese Instanzen von Daten, vorzugsweise die Daten einer Page eines zu emulierenden Speicherbausteins bzw. EEPROMs, zusammen mit einem die Instanzen, also die zu emulierende Page, kennzeichnenden Index abgelegt werden können. Page-Index, Checksumme und Daten können dabei beliebig verteilt sein, somit müssen diese nicht notwendigerweise in einer Page abgelegt sein.
  • Das erfindungsgemäße Computerprogramm führt alle Schritte eines vorstehend beschriebenen Verfahrens aus, wenn dieses in einem Computer abgearbeitet wird.
  • Weitere Vorteile und Ausgestaltungen der Erfindung ergeben sich aus der Beschreibung und der beiliegenden Zeichnung.
  • Zeichnung
  • Die Erfindung ist anhand von Ausführungsbeispielen in der Zeichnung schematisch dargestellt und wird im folgenden unter Bezugnahme auf die Zeichnung ausführlich beschrieben.
  • 1 zeigt eine bevorzugte Ausführungsform des Speicherelements in schematischer Darstellung.
  • 2 verdeutlicht den Ablauf einer Ausführungsform des Speicherverfahrens.
  • 3 dient zur Veranschaulichung des Speicherverfahrens.
  • In 1 ist schematisch eine bevorzugte Ausführungsform eines Speicherelements, insgesamt mit der Bezugsziffer 10 bezeichnet, dargestellt. Das Speicherelement 10 kommt bspw. in einem Steuergerät eines Kraftfahrzeuges zur Emulation eines EEPROMs zum Einsatz.
  • Das Speicherelement 10, das üblicherweise als Flash-Baustein 10 ausgebildet ist, weist zwei Sektoren 12 gleicher Größe auf. Diese unabhängig voneinander programmierbaren Sektoren 12 sind wiederum logisch oder physikalisch in Seiten 14 unterteilt, in denen Daten abgelegt werden.
  • 2 verdeutlicht den Ablauf des Speicherverfahrens. Zu erkennen ist eine Anzahl von Seiten 20, die jeweils in einen ersten Bereich 22 für Nutzdaten, einen zweiten Bereich 24 für einen Index und einen dritten Bereich 26 für eine Prüfsumme unterteilt sind.
  • Zur Emulation eines EEPROMs bestehend aus NEE Pages zu je PEE Bytes wird ein Flash-Speicher verwendet, der zwei Sektoren mit jeweils S Bytes zur Ablage der Page-Instanzen und deren Verwaltungsdaten zur Verfügung hat. Diese beiden Sektoren müssen unabhängig voneinander löschbar sein. Die kleinste in dem Flashbaustein programmierbare Einheit sei PFL Bytes groß.
  • Das Speicherverfahren ist grundsätzlich auch auf zwei Sektoren unterschiedlicher Größe sowie auf mehr als zwei Sektoren anwendbar. Dies hat lediglich Auswirkungen auf die Sektorverwaltung, auf die hier nicht näher eingegangen wird.
  • Für jede Page-Instanz werden folgende Daten gespeichert:
    • – PEE Bytes Nutzdaten, d. h. der Inhalt der emulierten EEPROM-Page, falls die betrachtete Instanz die aktuell gültige Instanz dieser Page ist.
    • – I Bytes Page-Index – Falls die zugehörige Page-Instanz noch „frei” ist, sind diese Bytes im gelöschten Zustand des verwendeten Flash-Bausteins meistens FFH. Das Einer-Komplement hiervon kann zur Markierung von als unplausibel erkannten Page-Instanzen verwendet werden. Diese beiden speziellen Werte des Page-Index sollten zweckmäßigerweise keine gültigen Indizes darstellen, so daß die erste Page in diesem Zusammenhang den Index 1 anstelle von 0 erhalten sollte.
    • – C Bytes Checksumme – Diese soll den Page-Index mit einbeziehen, damit auch ein fehlerhafter Page-Index erkannt wird.
  • Pro Page-Instanz werden folglich PINST = PEE + I + C (1)
  • Bytes Speicher im Flash-Baustein belegt. Damit von jeder Page mindestens eine Instanz in dem für die EEPROM-Emulation reservierten Flash-Speicherelement abgelegt werden kann, muß folgendes gelten: S >= NEE·PINST (2)
  • Für eine gute Leistungsfähigkeit sollte jedoch gelten: S >> NEE·PINST (3) da dann Sektorwechsel seltener erforderlich sind, so daß insgesamt NFL Page-Instanzen (mit NFL >> NEE) vollständig in den zur Verfügung stehenden Flash-Speicher S passen.
  • Üblicherweise sollten die jeweils zueinander gehörenden Nutzdaten, Page-Indizes und Prüf- bzw. Checksummen direkt hintereinander in dem Flash-Baustein gespeichert werden, damit sämtliche Daten einer Page-Instanz
    nFL(nFL = 0, ..., NFL – 1)
    gebündelt sind, wie dies in 2 dargestellt ist.
  • Bei kleinem PFL können Nutzdaten, Page-Indizes und Checksummen ohne weiteres auch in getrennten Tabellen in dem Flash-Baustein gehalten werden. Auch Mischformen sind denkbar, bspw. ein Datenbereich (data area), der für jede Page-Instanz die Nutzdaten mit der zugehörigen Checksumme enthält und eine „page allocation table”, die für jeden Speicherplatz für eine Page-Instanz in der „data area” den zugehörigen Page-Index enthält.
  • Bei kleinem PFL kann weiterhin folgendes Verfahren genutzt werden, um Unterbrechungen beim Schreiben einer Page-Instanz, die die Datenintegrität gefährdet, sicher erkennen zu können:
    • – Der Page-Index wird pro Page-Instanz zweimal statt nur einmal abgespeichert, wodurch I doppelt so groß wird.
    • – Beim Schreiben einer Page-Instanz wird immer zuerst der erste Page-Index dann Nutzdaten und Checksumme und schließlich der zweite Page-Index geschrieben.
    • – Wird nun beim Lesen einer Page-Instanz erkannt, daß zwar der erste, aber nicht der zweite Page-Index einer Page-Instanz geschrieben wurde, ist der Schreibvorgang unterbrochen worden.
  • Zu beachten ist jedoch, daß dieses Verfahren für große PFL nicht zweckmäßig ist, da hierfür die beiden Page-Indizes unabhängig voneinander geschrieben werden müssen und deshalb I >= 2·PFL (4) gelten muß, was den Platzbedarf für eine Page-Instanz sehr groß werden läßt.
  • Bei großem PFL ist daher vorzugsweise eine komplette Page-Instanz in einem einzigen Programmiervorgang in den Flash-Baustein zu schreiben, damit gilt: PINST = i·PFL, i = 1, 2, ... (5) und i ist so zu wählen, daß sich nach Gleichung (1) und maßvoll dimensioniertem I und C eine geeignete Pagegröße des emulierten EEPROMs PEE ergibt.
  • Zur Erkennung von unterbrochenen Schreibvorgängen kann in diesem Fall ein eventuell bei dem verwendeten Flash-Baustein vorhandenes „margin-read-feature” eingesetzt werden. Dieses Verfahren wird als Konsistenzsicherungsverfahren eingesetzt und ermöglicht auch bei Flash-Bausteinen, bei denen das Doppelindex-Ablageverfahren zur Konsistenzsicherung aufgrund der Granularität nicht zum Einsatz kommen kann. Bei dem „margin-read”-Verfahren wird das konsistente Beschreiben einer Page dadurch verifiziert, daß der Ladungszustand der beteiligten Flash-Zellen durch Änderung der Schwelleneinstellung der Leseverstärker geändert wird.
  • Grundsätzlich ist die Erkennung von unterbrochenen Schreibvorgängen zur Erhöhung der Datensicherheit zwar erwünscht, jedoch für die Darstellung der Funktionalität einer EEPROM-Emulation nicht unbedingt notwendig, zumal auch „echte” EEPROMs auf unterbrochene Schreibvorgänge auf einer Page mit Datenverlust in dieser Page reagieren können und im Falle eines emulierten EEPROMs oft noch eine „ältere” Instanz dieser Page zur Verfügung steht, auf die dann ersatzweise zurückgegriffen werden kann. Daher ist die Anwendung des Verfahrens auch bei Flash-Bausteinen mit großem PFL aber ohne „margin-read-feature” ohne weiteres möglich.
  • Zur Verwaltung der Page-Instanzen aller Pages in einem Sektor sind zumindest folgende Zustandsvariablen empfehlenswert:
    • – Eine Tabelle, die für jede Page nEE = 0, ..., NEE – 1 den Ablageort nFL [nEE] der aktuellen und gültigen Page-Instanz in Form eines Index enthält. Ein spezieller, reservierter Index-Wert ist für den Fall vorbehalten, daß für eine kleine Page nEE keine gültige Page-Instanz in dem Flash-Baustein existiert. Die Inhalte dieser Tabelle können jederzeit durch „Abscannen” aller belegten Page-Instanzen in dem Flash-Baustein wiederhergestellt werden. Da dieser Vorgang jedoch nicht unerhebliche Suchzeit beansprucht, sollte eine solche Tabelle zur Beschleunigung von Zugriffen auf Page-Instanzen verwendet werden (Cache-Prinzip).
    • – Ebenfalls zur Beschleunigung von Zugriffen auf die Page-Instanzen sowie zur einfachen Erkennung eines „vollen” Sektors sollte entweder die zuletzt geschriebene Page-Instanz nFL,last oder, was weitgehend gleichwertig ist, die nächste freie Page-Instanz nFL,next gemerkt werden. Dies verkürzt erheblich die ansonsten aufwendige Suche nach einem geeigneten Speicherort nFL,neu für neue Page-Daten. Sollte sich diese „Prognose” für einen geeigneten Speicherort für neue Page-Daten als falsch erweisen, bspw. weil dieser Speicherort bereits begonnen wurde zu belegen, nFL,last bzw. nFL,next jedoch unterbrechungsbedingt noch nicht entsprechend aktualisiert wurde, kann diese Zustandsvariable einfach inkrementiert werden und ein neuer Schreibversuch mit der nächsten Page-Instanz gestartet werden. Erreicht bzw. überschreitet diese Zustandsvariable den Wert NFL-1, so ist der zugehörige Sektor voll und muß nach Übertragung aller aktuellen Page-Instanzen auf einen freien anderen Sektor gelöscht werden, um später wieder für die Aufnahme neuer Daten zur Verfügung zu stehen.
  • 2 zeigt beispielhaft eine Belegung von Page-Instanzen. Sofern bei dem Beschreiben eines neuen Sektors mit den aktuellen Daten sämtlicher Pages keine Unterbrechungen oder sonstige spezielle ggf. fehlerhafte Zustände auftreten, sind die ersten NEE von NFL Page-Instanzen mit einem Abbild sämtlicher Pages des emulierten EEPROMs gefüllt.
  • Anschließend wurde in der Darstellung beispielhaft der Inhalt der Page mit dem Index 2 geändert und demzufolge in das emulierte EEPROM geschrieben. Alle anderen Page-Instanzen wurden in diesem Beispiel noch nicht verwendet, so daß deren Datenbereich, Checksumme und Page-Index noch gelöscht sind (oben angedeutet durch den Index-Wert „X”).
  • 3 dient zur Veranschaulichung des Speicherverfahrens. Dargestellt ist ein erster Flash-Sektor S0, der teilweise gefüllt ist, ein zweiter Flash-Sektor S1, der leer ist, und eine sogenannte Lockup-Tabelle 34 in einem RAM.
  • Mit Pfeilen 36 bezeichnet sind in der Lockup-Tabelle 34 die Page-Indizes 0 bis 511 enthalten. Der erste in Seiten unterteilte Flash-Sektor SO ist in mehrere Bereiche unterteilt. In einem ersten Bereich 38 ist der EEPROM-Pageinhalt, somit die Nutzdaten, enthalten. In einem zweiten Bereich 40 ist der EEPROM-Pageindex aufgeführt. In einem dritten Bereich 42 ist der Flash-Pagestatus enthalten. In einem vierten Bereich 44 ist der Sektorzähler und in einem fünften Bereich 46 dessen Komplement enthalten. In einem sechsten Bereich 48 ist die Prüfsumme aufgeführt.
  • Das nachfolgend beschriebene Verfahren geht von folgenden Voraussetzungen aus:
    • – Für die EEPROM-Emulation steht ein Flash-Speicher zur Verfügung mit mindestens zwei Speicherbereichen bzw. Sektoren, die unabhängig voneinander programmiert und als ganzes gelöscht werden können.
    • – Während ein Flash-Sektor gelöscht wird, lassen sich die übrigen Flash-Sektoren lesen oder beschreiben. Ggf. muß dazu der Löschvorgang kurzzeitig unterbrochen werden (erase, suspend).
    • – Kleinste beschreibbare Einheit in einem Flash-Sektor ist eine Page von PFL-Byte-Länge, d. h. byteweise Beschreibbarkeit wird nicht vorausgesetzt. Typische Pagelängen sind 32, 64 oder 128 Byte.
    • – Die Anzahl der Pages in einem Flash-Sektor ist ausreichend groß, um den EEPROM-Dateninhalt mehr als einmal vollständig einschließlich zusätzlich benötigter Erweiterungsdaten abzuspeichern. Die Anzahl der Pages pro Sektor NFL muß dabei nicht notwendigerweise für alle Sektoren gleich sein.
  • Um die EEPROM-Daten in Flash-Pages abspeichern zu können, wird das zu emulierende EEPROM in NEE-Pages von PEE-Byte-Lange eingeteilt. Es wird PEE < PFL gewählt. Die restlichen PFL – PEE Bytes in der Flash-Page, die nicht zur Abspeicherung von Daten einer EEPROM-Page benötigt werden, werden nachfolgend Infobytes genannt und dienen der Speicherung von zu dieser EEPROM-Page gehörenden Verwaltungsdaten.
  • Nachfolgend wird beispielhaft von einer Konfiguration mit den zwei Sektoren S0 und S1 mit je NFL Seiten bzw. Pages ausgegangen. Der Flash-Speicher enthält somit 2·NFL Pages. Das Verfahren kann selbstverständlich auch für andere Konfigurationen eingesetzt werden.
  • Typische Werte für PEE, NEE, PFL und NFL sind:
    EEPROM-Pagelänge PEE: 124 Bytes
    Anzahl EEPROM-Pages NEE: 128
    Flash-Pagelänge PFL: 128 Bytes
    (124 Bytes EEPROM-(Page-)Daten +4 Info-Bytes)
    Anzahl Info-Bytes (PFL – PEE): 4 Bytes
    Anzahl Flash-Pages
    pro Sektor NFL: 512
    Anzahl Flash-Sektoren: 2
  • Nach Speicherung einer EEPROM-Page in eine Flash-Page werden in den Infobytes folgende Informationen abgelegt:
    • • Index der abgespeicherten EEPROM-Page,
    • • Status der Flash-Page z. B. codiert in einem Bitfeld der Breite 2-Bit,
    • • Sektorzähler z. B. mit Breite 2-Bit,
    • • Komplement des Sektorzählers, z. B. ebenfalls 2-Bit breit,
    • • ggf. weitere Informationen, wie beispielsweise Kennzeichnung einer Mehrfachablage, und
    • • Prüfsumme über alle Bytes der Flashpage, vorzugsweise auch unter Einbeziehung des Page-Index, möglicherweise auch unter Einbeziehung des Sektorzählers.
  • Der Flash-Pagestatus (2-Bit)kodiert folgende Zustände:
    Flash-Pagestatus gelöscht Bedeutung
    0 –(Wert 0 wird nicht verwendet
    1 Flash-Page ist beschrieben, enthält aber keine gültigen Daten
    2 Flash-Page ist beschrieben und enthält EEPROM-Daten
    3 Flash-Page enthält keine gültigen Daten, ist ggf. leer, d. h.
  • Im gelöschten Zustand enthalten alle Bytes einer Flash-Page den Wert 0xFF, der Flash-Pagestatus enthält dann korrekterweise automatisch den Wert 3. In diesem Fall sind die übrigen Bit-Felder (EEPROM-Page-Index, Prüfsumme usw.) ohne Bedeutung und werden nicht ausgewertet. Um sich entscheiden zu können, ob eine Flash-Page gelöscht ist, müssen jedoch alle Bytes auf 0xFF geprüft werden. Die Prüfung allein des Flash-Pagestatus reicht dazu nicht. Alternativ kann diese Statusinformation auch aus der Page-Index-Information (Abfrage auf 0xFF) abgeleitet werden, sofern dieser Indexwert keinen gültigen Indexwert darstellt. Auf einen eigenen Page-Status kann dann ggf. verzichtet werden.
  • Für eine Flash-Page mit Flash-Pagestatus 2 (oder bei Verzicht auf einen dedizierten Page-Status bei einem Page-Index ≠ 0xFF) gibt der EEPROM-Pageindex Auskunft darüber, welche EEPROM-Page in der Flash-Page abgespeichert ist. Die Prüfsumme erlaubt eine Plausibilisierung des Flash-Pageinhalts. Der Sektorzähler wird jeweils nach Wechsel in einen neuen Sektor inkrementiert. Steht er bereits auf dem Maximalwert 3, wird der Sektorzähler auf 0 gesetzt. Wichtig dabei ist, daß das „Kippen” ein oder mehrerer Bits in Richtung 0 nach 1, wie dies durch ein ggf. unterbrochenes Löschen verursacht wird, immer Kombinationen von SZ und KSZ erzeugt, die die Komplementbedingung verletzen. Mit dem Sektorzähler kann ggf. entschieden werden, welcher der beiden Sektoren die neueren Instanzen der EEPROM-Pages enthält.
  • Bei der Erstprogrammierung des Steuergeräts im Werk oder auch beim Kunden wird der Flash-Speicher initialisiert. Dazu werden die ersten NEE-Flash-Pages von Sektor 0 fortlaufend mit den NEE-EEPROM-Pages beschrieben. Dabei werden auch die Infobytes jeder Flash-Page entsprechend aktualisiert. Der EEPROM-Pageindex und die Prüfsumme werden eingetragen, der Flash-Pagestatus = 2, Sektorzähler = 0 und Komplement des Sektorzählers = 3 gesetzt.
  • Soll während des Betriebs des Steuergeräts der Inhalt einer Page im emulierten EEPROM geändert werden, dann wird zur Speicherung dieses neuen EEPROM-Pageinhalts die jeweils nächste freie Flash-Page verwendet, d. h. nach der Flash-Page mit Index i wird die Page mit Index i + 1 beschrieben. Ist die letzte Page im Data-Flash beschrieben, werden die aktuellsten Zahlen aller NEE-Pages in einen anderen, zuvor gelöschten Datensektor durch Kopieren „umgezogen”. Der Quellsektor kann nach erfolgreich verifizierter Übertragung gelöscht werden.
  • Jeweils nach Programmstart wird während der Programminitialisierung ermittelt, wo in den Data-Flash-Sektoren der aktuell gültige EEPROM-Inhalt abgelegt ist. Dazu werden die Pages der beiden Sektoren beginnend bei Index 0 mit dem Ziel untersucht, den aktuellen Sektor zu finden, der die neuesten EEPROM-Daten enthält. Wird eine Page mit gültigem Inhalt gefunden, werden die Werte von SZ und KSZ aus dieser Page für diesen Sektor als gültig betrachtet. Gibt es keine Page mit gültigem Inhalt, dann wird SZ = KSZ = 11b für diesen Sektor angenommen. Die folgende Tabelle zeigt, welcher Zustand der Sektoren den so gefundenen Werten von SZ und KSZ entspricht.
    Fall S1 S0 Zustand der Sektoren
    KSZ SZ KSZ SZ
    0 11B 11B 11B 00B Aktueller Sektor ist S0, S1 ist leer
    1 10B 01B 11B 00B Aktueller Sektor ist S1, S0 ist voll
    2 10B 01B 11B 11B Aktueller Sektor ist S1, S0 ist leer
    3 10B 01B 01B 10B Aktueller Sektor ist S0, S1 ist voll
    4 11B 11B 01B 10B Aktueller Sektor ist S0, S1 ist leer
    5 00B 11B 01B 10B Aktueller Sektor ist S1, S0 ist voll
    6 00B 11B 11B 11B Aktueller Sektor ist S1, S0 ist leer
    7 00B 11B 11B 00B Aktueller Sektor ist S0, S1 ist voll
    8 11B 00B 11B 00B Verbotener Zustand **
    9 01B 10B 11B 00B Verbotener Zustand **
    10 10B 01B 10B 01B Verbotener Zustand **
    11 00B 11B 10B 01B Verbotener Zustand **
    12 01B 10B 01B 10B Verbotener Zustand **
    13 11B 00B 01B 10B Verbotener Zustand **
    14 00B 11B 00B 11B Verbotener Zustand **
    15 10B 01B 00B 11B Verbotener Zustand **
    16 11B 11B 11B 11B Data-Flash ist jungfräulich, d. h. es existieren keine EEPROM-Daten, S0 und S1 sind leer
    * Zustand tritt im programmierten Steuergerät nicht auf
    ** Zustand tritt bei korrekter Programmierung nicht auf
  • In den Fällen 1, 3, 5 und 7 wird zunächst der volle Sektor pageweise in Richtung aufsteigendem Flash-Pageindex durchsucht, danach der aktuelle Sektor. In allen anderen Fällen wird lediglich der aktuelle Sektor durchsucht. Wird eine Page nur im vollen, nicht aber im aktuellen Sektor gefunden, muß diese (in jedem Fall vor dem Löschen des vollen Sektors) zuerst in den aktuellen Sektor übertragen werden. Für jede gefundene, mit gültigen Daten gefüllte Flash-Page wird der zugehörige Flash-Pageindex in die Loockup-Tabelle 34 im RAM eingetragen. Diese Tabelle 34 wird mit dem EEPROM-Pageindex adressiert und sinnvollerweise vor dem ersten Eintrag vollständig mit 0xFF (ungültiger Flash-Pageindexwert) initialisiert. Wird eine EEPROM-Page wiederholt gefunden, d. h. es sind mehrere Instanzen der EEPROM-Page im Data-Flash gespeichert, wird der Eintrag in der Lookup-Tabelle 34 überschrieben. Enthalten mehrere Flash-Pages innerhalb eines Sektors dieselbe EEPROM-Page, dann ist die neue Instanz immer in der Flash-Page mit dem höchsten Flash-Pageindex zu finden. Ist das Data-Flash vollständig durchsucht, enthält die Lookup-Tabelle zu jeder EEPROM-Page spezifiziert durch den EEPROM-Pageindex, den Index der Flash-Page, die die jüngste Instanz dieser EEPROM-Page enthält.
  • Zusätzlich zur Lookup-Tabelle 34 liefert das pageweise Durchsuchen des Data-Flash einen Zeiger auf die nächste freie Flash-Page in der Form eines Flash-Pageindex, im folgenden nextFreeFlashPageIdx genannt.
  • Nach abgeschlossener Programminitialisierung liefert die Lockup-Tabelle 34 zu jedem EEPROM-Pageindex den Ablageort der neuesten Instanz in dem Flash-Speicher. Der Flash-Pageindex j zur EEPROM-Page mit dem Index i ist durch j = Lockup-Tabelle [i] gegeben. Dies ermöglicht einen schnellen Lesezugriff auf jede EEPROM-Page. Der Indexwert j = 0xFF zeigt an, daß die zur jeweiligen EEPROM-Page gehörenden Daten nicht existieren.
  • Soll der Inhalt einer EEPROM-Page geändert werden, so wird die EEPROM-Page als ganzes in die nächste leere Flash-Page, die durch den aktuellen Wert von nextFreeFlashPageIdx spezifiziert ist, abgelegt. Dies geschieht typischerweise in folgenden Schritten:
    • – der Zeiger nextFreeFlashPageIdx wird in eine Register- oder Stackvariable tempIdx gespeichert
    • – der Zeiger nextFreeFlashPageIdx wird inkrementiert
    • – der EEPROM-Pageinhalt wird in die Flash-Page mit Index tempIdx, d. h. Wert des Zeigers nextFreeFlashPageIdx vor der Inkrementierung, einschließlich Aktualisierung der Info-Bytes (Flash-Pagestatus, EEPROM-Pageindex, Prüfsumme) programmiert
    • – Aktualisierung der Lockup-Tabelle 34 durch Eintrag des Flash-Pageindex tempIdx in das zur EEPROM-Page zugehörige Tabellenelement.
  • Stehen im aktuell verwendeten Sektor keine freien Pages mehr zur Verfügung, wird auf den anderen zu diesem Zeitpunkt gelöschten Sektor gewechselt. Dazu werden pageweise alle n EEPROM-Pages, jeweils die neuesten Instanzen gemäß der Lockup-Tabelle 34, aus dem alten, vollen Sektor gelesen und nach dem vorstehend beschriebenen Verfahren in den neuen Sektor geschrieben. Danach wird der volle Sektor gelöscht. Anschließend wird auf die nächste freie Page in dem neuen Sektor ggf. noch einmal die erste EEPROM-Page abgelegt. Damit ist der Wechsel auf den neuen Sektor abgeschlossen.
  • Die nochmalige Ablage der ersten EEPROM-Page ermöglicht es, nach einem Programmstart feststellen zu können, ob die Übertragung der EEPROM-Daten in den neuen Sektor oder das Löschen des alten Sektors im letzten Programmzyklus unterbrochen wurde. Dies ist daran zu erkennen, daß noch nicht alle n EEPROM-Pages plus die zusätzliche Ablage der ersten EEPROM-Page in dem Sektor zu finden sind. In diesem Fall wird die Sektorinitialisierung mit der erneuten Programmierung der letzten EEPROM-Page, die in dem Flash-Speicher gefunden wurde, wieder aufgenommen.
  • Für die korrekte Funktion des Verfahrens ist das Verhalten nach Programmabbrüchen wesentlich. Wurde durch einen Programmabbruch die Programmierung einer Flash-Page unterbrochen, sind folgende Fälle denkbar:
    • 1. Die Flash-Page enthält noch nicht die korrekten Werte, was an der Prüfsumme erkennbar ist. In diesem Fall kann immer auf die letzte, gültige Instanz der betreffenden EEPROM-Page in dem Flash-Speicher zurückgegriffen werden.
    • 2. Die Daten in der Flash-Page sind zwar korrekt, aber das Niveau der in die Flash-Zellen eingebrachten Ladung (margin) ist aufgrund der unvollständigen Programmierung noch unzureichend, um einen dauerhaften Datenerhalt zu gewährleisten. In diesem Fall droht vorzeitiger Datenverlust. Erlaubt die Hardware ein Einlesen des Ladungsniveaus (margin read), dann kann nach jedem Programmstart die letzte im vorangegangenen Programmzyklus programmierte Flash-Page auf ihren Ladungszustand hin überprüft werden und bei Bedarf und falls Flash-seitig zulässig nachprogrammiert werden, bis das erforderliche Ladungsniveau erreicht ist. Alternativ dazu bzw. wenn kein margin vorhanden ist oder das Nachprogrammieren beim verwendeten Flash-Baustein nicht erlaubt ist, ist es grundsätzlich möglich, nach Programmstart die Daten der letzten programmierten Flash-Page noch einmal in die nächste freie Flash-Page zu schreiben, um so einem Datenverlust aufgrund einer unvollständigen Programmierung vorzubeugen.
  • Gegen den Datenverlust durch „Kippen” von Bits in einem gealterten Flash-Speicher hilft das bekannte Verfahren der Mehrfachablage von EEPROM-Pages. Dies ist für spezielle, besonders kritische Daten sinnvoll.

Claims (14)

  1. Verfahren zur Ablage von veränderlichen Daten in einem Speicherelement (10), das mindestens einen Sektor (12, S0, S1) aufweist, der in eine Anzahl von zu beschreibenden Seiten (14, 20) unterteilt ist, bei dem nach jeder Datenänderung eine Instanz der aktuellen Daten mit einem den Quellort der Daten kennzeichnenden Index in eine der Seiten (14, 20) abgelegt wird, wobei die Seiten (14, 20) sequentiell aufsteigend bezüglich ihrer Adressen belegt werden, wobei zur Verkürzung der Suche nach einem geeigneten Speicherort für neue Daten entweder eine Seite (14, 20), in die zuletzt Daten abgelegt wurde, oder eine nächste freie Seite (14, 20) als Zustandsvariable gespeichert werden, dadurch gekennzeichnet, dass, wenn sich die Prognose für den geeigneten Speicherort für die neuen Daten anhand der Zustandsvariable als falsch erweist, die Zustandsvariable inkrementiert wird und ein neuer Schreibversuch für die neuen Daten mit der nächsten Seite (14, 20) gestartet wird.
  2. Verfahren nach Anspruch 1, das zur Emulation eines in Pages unterteilten Speicherbausteins eingesetzt wird, wobei die Daten der Pages in die Seiten (14, 20) des Speicherelements (10) zusammen mit einem die entsprechende Page des Speicherbausteins und damit den Quellort der übertragenen Daten kennzeichnenden Index abgelegt werden.
  3. Verfahren nach Anspruch 2, bei dem der zu emulierende Speicherbaustein ein EEPROM ist.
  4. Verfahren nach Anspruch 2 oder 3, bei dem als Speicherelement (10) ein Flash-Speicher (10) verwendet wird.
  5. Verfahren nach einem der Ansprüche 1 bis 4, bei dem mindestens zwei unabhängig voneinander programmierbare Sektoren (12, S0, S1) in dem Speicherelement (10) vorgesehen sind.
  6. Verfahren nach Anspruch 5, bei dem die Sektoren (12, S0, S1) des Speicherelements die gleiche Größe aufweisen.
  7. Verfahren nach Anspruch 5, bei dem die Sektoren (12, S0, S1) unterschiedlich groß sind.
  8. Verfahren nach einem der Ansprüche 1 bis 7, bei dem die Instanzen zusammen mit einer Prüfsumme abgelegt werden.
  9. Verfahren nach einem der Ansprüche 1 bis 9, bei dem bei jedem Beschreiben einer Seite der jeweilige Index zweimal abgelegt wird.
  10. Verfahren nach einem der Ansprüche 1 bis 8, bei dem die Unterteilung in Seiten (14, 20) lediglich logisch mit Programmcodemittel erfolgt.
  11. Verfahren nach einem der Ansprüche 2 bis 10, bei dem die eigentlichen Nutzdaten einer Page ggf. teilweise getrennt von Verwaltungsdaten, wie u. a. den den Quellort der Daten kennzeichnenden Index, gespeichert werden.
  12. Verfahren nach einem der Ansprüche 1 bis 11, bei dem ein ggf. vorhandenes „Margin-Read-Feature” des verwendeten Speicherelements dahingehend verwendet wird, daß damit ein unterbrochener Schreibvorgang auf das Speicherelement detektiert wird.
  13. Verfahren nach einem der Ansprüche 1 bis 12, bei dem ein mindestens einmal pro Sektorwechsel inkrementierter oder dekrementierter, in Verwaltungsdaten der Daten-Instanzen (14, 20) abgelegter Zähler zur Erkennung des aktuellen Sektors herangezogen wird.
  14. Computerprogramm, das in einem Computer abgearbeitet wird und dabei ein Verfahren nach einem der Ansprüche 1 bis 13 ausführt.
DE10321104.7A 2003-05-09 2003-05-09 Verfahren zur Ablage von veränderlichen Daten Expired - Fee Related DE10321104B4 (de)

Priority Applications (1)

Application Number Priority Date Filing Date Title
DE10321104.7A DE10321104B4 (de) 2003-05-09 2003-05-09 Verfahren zur Ablage von veränderlichen Daten

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE10321104.7A DE10321104B4 (de) 2003-05-09 2003-05-09 Verfahren zur Ablage von veränderlichen Daten

Publications (2)

Publication Number Publication Date
DE10321104A1 DE10321104A1 (de) 2004-11-25
DE10321104B4 true DE10321104B4 (de) 2016-04-07

Family

ID=33394460

Family Applications (1)

Application Number Title Priority Date Filing Date
DE10321104.7A Expired - Fee Related DE10321104B4 (de) 2003-05-09 2003-05-09 Verfahren zur Ablage von veränderlichen Daten

Country Status (1)

Country Link
DE (1) DE10321104B4 (de)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102006013759B4 (de) 2006-03-24 2023-03-16 Robert Bosch Gmbh Verfahren und Recheneinheit zum Betreiben einer Speichereinrichtung
JP2010515128A (ja) 2006-12-27 2010-05-06 インテル コーポレイション 不揮発性メモリにおけるデータを管理する方法
US9612954B2 (en) 2008-12-31 2017-04-04 Micron Technology, Inc. Recovery for non-volatile memory after power loss
EP2413329B1 (de) 2010-07-28 2014-03-26 Fujitsu Semiconductor Europe GmbH Elektronische Vorrichtungen
DE102013019941A1 (de) * 2013-11-27 2015-05-28 Giesecke & Devrient Gmbh Verfahren zum Betreiben eines Speichersystems sowie ein solches Speichersystem
DE102014203062A1 (de) 2014-02-20 2015-08-20 Bayerische Motoren Werke Aktiengesellschaft Vergrößern des verfügbaren FLASH-Speichers eines Micro-Controllers

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1995010083A1 (en) * 1993-10-04 1995-04-13 Cirrus Logic, Inc. Flash memory with reduced erasing and overwriting
EP1187143A2 (de) * 2000-09-07 2002-03-13 Nissan Motor Co., Ltd. Elektronische Steuereinheit mit Flash-Speicher und Verfahren und Vorrichtung zum Speichern einer Steuerdatengruppe in einem Flash-Speicher
JP2003015928A (ja) * 2001-07-04 2003-01-17 Nec System Technologies Ltd フラッシュメモリのデータ格納装置及びそれに用いるデータ格納方法
US20030065899A1 (en) * 2001-09-28 2003-04-03 Gorobets Sergey Anatolievich Memory system sectors

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1995010083A1 (en) * 1993-10-04 1995-04-13 Cirrus Logic, Inc. Flash memory with reduced erasing and overwriting
EP1187143A2 (de) * 2000-09-07 2002-03-13 Nissan Motor Co., Ltd. Elektronische Steuereinheit mit Flash-Speicher und Verfahren und Vorrichtung zum Speichern einer Steuerdatengruppe in einem Flash-Speicher
JP2003015928A (ja) * 2001-07-04 2003-01-17 Nec System Technologies Ltd フラッシュメモリのデータ格納装置及びそれに用いるデータ格納方法
US20030065899A1 (en) * 2001-09-28 2003-04-03 Gorobets Sergey Anatolievich Memory system sectors

Also Published As

Publication number Publication date
DE10321104A1 (de) 2004-11-25

Similar Documents

Publication Publication Date Title
DE60030876T2 (de) Bereichsverwaltung eines nichtflüchtigen Speichers mit hoher Kapazität
DE102005019842B4 (de) System und Verfahren zum sequentiellen Schreiben von Daten in einen Flash-Speicher
DE112010003650B4 (de) Container-Markierungsschema zum Verringern einer Schreibverstärkung bei Halbleiter-Einheiten
DE102007006307A1 (de) Verfahren zum Betreiben eines nichtflüchtigen Speicherelements, Aufzeichnungsmedium und nichtflüchtigen Speicherelement
DE102009034651A1 (de) Prozess und Verfahren zur Abbildung von logischen Adressen auf physische Adressen in Festkörperplatten
DE102009046444A1 (de) An die Software angepasste Abnutzungsausgleichung
DE102009033961A1 (de) Emulation eines einmal programmierbaren Speichers
DE102012203713A1 (de) Verfahren und Vorrichtung zur Verlängerung der Lebensdauer von Speichern
EP1314135A1 (de) Verfahren zur virtuellen vergrösserung des stacks eines tragbaren datenträgers
DE10321104B4 (de) Verfahren zur Ablage von veränderlichen Daten
EP2608037B1 (de) Verfahren zum Verwalten von Daten in einem Flash-Speicher, Fahrerassistenzeinrichtung und Kraftfahrzeug
EP1625592B1 (de) Vorrichtung und verfahren zum behandeln eines zustands eines speichers
EP1559111B1 (de) Verfahren zum betreiben einer speicheranordnung
EP3885957A1 (de) Vorrichtung zur speicherung von daten in einem nichtflüchtigen speicher
EP0890172B1 (de) Halbleiterspeichervorrichtung
DE112017008201B4 (de) Informationsverarbeitungsvorrichtung, Informationsverarbeitungsverfahren und Informationsverarbeitungsprogramm
DE10257861A1 (de) Speichersystem mit einem nichtflüchtigen Speicherelement, das direkt ohne Redundanz überschreibt, sowie das dazugehörige Schreibverfahren
EP1564754B1 (de) Verfahren und Vorrichtung zur Verwaltung von Daten in einem nichtflüchtigen Datenspeicher
DE102006013759B4 (de) Verfahren und Recheneinheit zum Betreiben einer Speichereinrichtung
DE102005013896B4 (de) Verfahren zur Datenverwaltung und Datenzugriffssystem zum Speichern von allen Verwaltungsdaten in einer Verwaltungsbank eines nicht-flüchtigen Speichers
DE102005058690A1 (de) Einrichtung und Prozess zur Steuerdatenspeicherung
DE19738712C2 (de) Nichtflüchtiger Speicher mit zu Subblöcken zusammengefaßten Speicherzellen
DE10128752A1 (de) Verfahren zur Ablage von Daten in einen Speicherbaustein
EP1517333B1 (de) Zustandskennzeichen (Flag) für einen bezüglich Löschen und Schreiben asymmetrischen Speicher
DE10315189B4 (de) Verfahren zur Bestimmung der Anzahl durchgeführter Löschvorgänge eines Speicherblocks einer Speichereinrichtung

Legal Events

Date Code Title Description
8110 Request for examination paragraph 44
R016 Response to examination communication
R016 Response to examination communication
R016 Response to examination communication
R016 Response to examination communication
R016 Response to examination communication
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee