-
Die Erfindung betrifft ein Verfahren und eine Recheneinheit zum Betreiben einer Speichereinrichtung, ein entsprechendes Computerprogramm und ein Computerprogrammprodukt.
-
Im folgenden wird im wesentlichen auf Flash- oder EEPROM-Speichereinrichtungen bezug genommen, ohne dass die Erfindung darauf beschränkt wäre. Die Erfindung kann aber besonders vorteilhaft für derartige Speichereinrichtungen verwendet werden.
-
Stand der Technik
-
Flash-Speicher werden neben EEPROM-Speicher üblicherweise als Speicher für nicht-flüchtige Daten insbesondere in eingebetteten Systemen (Embedded Systems) oder Steuergeräten in Kraftfahrzeugen (Kfz) verwendet. Ein Flash-Speicher weist die Besonderheit auf, dass er vor dem Beschreiben üblicherweise zunächst gelöscht werden muss. Dazu ist der Speicher in sogenannten Sektoren oder Erase Blocks organisiert. Diese Einheiten können nur als Ganzes gelöscht werden. Jede Zelle einer solchen (Lösch-)Einheit kann nach einem Löschvorgang der gesamten Einheit einmalig beschrieben werden, wobei die Sektor- und auch die Zellgröße vom verwendeten Flashtyp abhängen. Üblicherweise sind aber die Sektoren im Verhältnis zu den einzelnen Daten eher groß.
-
Der Löschvorgang setzt alle Bits in einem Sektor auf den Wert „logisch 1", beim Beschreiben werden die entsprechenden Bits auf den Wert „logisch 0“ gesetzt oder, in Abhängigkeit von der Hardware, umgekehrt. Ohne einen vorhergehenden Löschvorgang ist es nicht möglich, ein Bit von „logisch 0“ wieder auf „logisch 1“ zu setzen. Manche Flash-Speicher bieten jedoch die Möglichkeit, eine bereits beschriebene Zelle erneut zu beschreiben, wobei bei diesem erneuten Schreibvorgang wiederum nur Bits auf „logisch 0“ gesetzt werden können.
-
Der Hersteller des Flash-Speichers sichert üblicherweise eine gewisse Datenhaltungszeit bis zu einer vorbestimmten Anzahl an Löschvorgängen zu. Diese Garantie gilt meist nur unter bestimmten Voraussetzungen, beispielsweise die Umgebungstemperatur betreffend. Wird die Anzahl an erlaubten Löschvorgängen überschritten, erhöht sich die Wahrscheinlichkeit für Fehler in den gespeicherten Daten.
-
Da das Überschreiten der vom Hardware-Hersteller zugesicherten Anzahl an Löschzyklen zu Problemen führt, sind Methoden im Einsatz, die die Anzahl der Löschzyklen verringern. Diese Verfahren erfordern beispielsweise eine aufwendige Basis- oder Anwendungssoftware.
-
Die
DE 103 21 104 A1 zeigt ein Verfahren zum Ablegen von veränderlichen Daten, das mindestens einen Sektor aufweist, der in eine Anzahl von zu beschreibenden Seiten 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 abgelegt wird, wobei die Seiten 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, in die zuletzt Daten abgelegt wurde, oder eine nächste freie Seite als Zustandsvariable gespeichert werden. Wenn sich die Prognose für den geeigneten Speicherort für die neuen Daten anhand der Zustandsvariable als falsch erweist, wird die Zustandsvariable inkrementiert und ein neuer Schreibversuch für die neuen Daten mit der nächsten Seite gestartet.
-
Offenbarung der Erfindung
-
Es stellt sich daher das Problem, ein einfacheres Verfahren sowie eine Vorrichtung anzugeben, mit denen sich die Anzahl der notwendigen Löschzyklen beim Betrieb einer Speichereinrichtung, insbesondere Flash- oder EEPROM-Speichereinrichtung, verringern lässt.
-
Mit der vorliegenden Erfindung werden ein Verfahren und eine Recheneinheit zum Betreiben einer Speichereinrichtung, insbesondere Flash- oder EEPROM-Speichereinrichtung, ein Computerprogramm und ein Computerprogrammprodukt mit den Merkmalen der unabhängigen Patentansprüche vorgestellt.
-
Die vorgestellte Erfindung ist vorteilhaft für Flash- oder EEPROM-Speichereinrichtungen, insbesondere für eine bestimmte Klasse von EEPROM-Speichereinrichtungen, bei der es möglich ist, den Löschvorgang zeitlich unabhängig vom Schreibvorgang durchzuführen, ohne dass sich die Belastung des EEPROMs erhöht, d.h. Lösch- und Schreibvorgang sind im „Schreibzyklus“, direkt anwendbar. Für diese Klasse liegen die gleichen Voraussetzungen wie für Flash-Speicher vor. Die vorgestellte Erfindung ist aber ebenso vorteilhaft für alle anderen Arten von Speichereinrichtungen verwendbar.
-
Die nachfolgend aufgeführten Erläuterungen und Vorteile beziehen sich auf alle erfindungsgemäßen Lösungen, soweit es nicht ausdrücklich anders beschrieben ist. Die erfindungsgemäße Recheneinheit weist entsprechende Mittel zum Durchführen der beschriebenen Schritte auf.
-
Bei dem erfindungsgemäßen Verfahren zum Betreiben einer Speichereinrichtung zum Speichern von veränderbaren Daten werden wenigstens zwei logische Segmente vorgesehen, wobei ein erstes logisches Segment als aktives logisches Segment gekennzeichnet oder erkannt wird. Ein Segment muss nicht explizit als aktives Segment gekennzeichnet werden. Es ist vielmehr auch möglich, dass sich dies implizit ergibt und es als aktives Segment erkannt wird. Ein zum Speichern vorgesehenes Datum wird beim Betreiben der Speichereinrichtung in dem aktiven logischen Segment gespeichert. Beim Betreiben wird eine Reorganisation der Speichereinrichtung durchgeführt, wenn ein freier Speicherplatz in dem aktiven logischen Segment zur Aufnahme des zum Speichern vorgesehenen Datums nicht mehr ausreicht. Dabei wird ein zweites logisches Segment als neues aktives logisches Segment gekennzeichnet oder erkannt und in dem alten logischen Segment gespeicherte Daten werden in das neue aktive logische Segment übertragen. Bei der Reorganisation werden Daten aus einer Arbeitspeichereinrichtung in dem neuen aktiven logischen Segment gespeichert, wenn die Daten in der Arbeitspeichereinrichtung nicht mit den Daten in dem alten aktiven logischen Segment übereinstimmen, d.h. die Daten in der Arbeitsspeichereinrichtung aktueller als die Daten in dem vorher aktiven logischen Segment sind. Nützlicherweise hat bei der Erfindung die zum Speichern der Daten ausgebildete Instanz des Systems Zugriff auf die Daten in der Arbeitspeichereinrichtung.
-
Vorteile der Erfindung
-
Die Idee besteht darin, Daten bei der Umorganisation nicht ungeprüft von einem logischen Segment auf das andere zu kopieren, sondern alle auf dem alten Segment gespeicherten Daten in ihrem aktuellen Zustand - also wie sie zum Zeitpunkt der Reorganisation von den Besitzern der Daten verwendet werden (Variablen im RAM) - in dem neuen Segment zu speichern. Ein Vorteil besteht in der effizienten Ausnutzung der Speicher-Hardware, wodurch eine verminderte Anzahl an Löschzyklen erreicht wird. Die Verminderung hängt insbesondere von der Anzahl und Größe der Daten, ihrer Schreib- und Veränderungshäufigkeit und der Größe der logischen Segmente ab. Der Vorteil der effizienten Ausnutzung der Speicher-Hardware kann auf unterschiedliche Weise ausgenutzt werden. Durch die geringere Anzahl an Löschzyklen sind bei der Speicher-Hardware einer vorgegebenen Größe weniger Fehler zu erwarten, wodurch die Zuverlässigkeit erhöht wird. Alternativ wird weniger Speicher-Hardware benötigt, da weniger Daten geschrieben werden müssen, wodurch die Hardware-Kosten verringert werden. Eine Kombination dieser beiden Aspekte bietet die Möglichkeit eines Trade-Offs zwischen Zuverlässigkeit und Hardware-Kosten.
-
Vorteilhafte Weiterbildungen sind Gegenstand der Unteransprüche und der nachfolgenden Beschreibung.
-
Zweckmäßigerweise wird ein zum Speichern vorgesehenes Datum nur dann in dem aktiven logischen Segment gespeichert, wenn das zum Speichern vorgesehene Datum nicht mit einer letzten gespeicherten Version identisch ist, also noch nicht als gültige Version gespeichert ist. Ist noch keine Version des Datums gespeichert, wird die zum Speichern vorgesehene Version gespeichert. Damit kann die Anzahl der Schreibzugriffe weiter vorteilhaft verringert werden, da ein Schreibzugriff nur dann durchgeführt wird, wenn er tatsächlich notwendig ist. Gemäß einer weiteren Ausgestaltung kann zusätzlich oder alternativ ein Datum nur dann gespeichert werden, wenn es nicht mit einem vorgebbaren Standardwert übereinstimmt.
-
Es ist besonders vorteilhaft, wenn ein logisches Segment wenigstens aus einer zusammenhängend löschbaren Einheit, insbesondere im Falle einer Flash-Speichereinrichtung eine Flash-Einheit, ausgebildet wird. Mittels dieser Maßnahme kann die Reorganisation einfach und ohne eventuellen Datenverlust durchgeführt werden. Zwischen den Löscheinheiten der jeweiligen logischen Segmente besteht keine Überlappung, d.h. verschiedene logische Segmente bestehen aus verschiedenen Löscheinheiten.
-
Gemäß einer vorteilhaften Weiterbildung der Erfindung wird ein logisches Segment in logische Bereiche unterteilt, die zweckmäßigerweise jeweils zusammenhängend, d.h. ohne innere Lücken, ausgebildet werden. Ein zum Speichern vorgesehenes Datum wird in einem ersten Bereich des logischen Segments, eine dem Datum zugehörige Datumsverwaltungsinformation in einem zweiten Bereich des logischen Segments abgelegt. Es ist zweckmäßig, wenn alle abgelegten Datumsverwaltungsinformationen gleich groß sind. Damit ergibt sich ein erster Ansatzpunkt, um aufgetretene Fehler zu erkennen, bspw. Hardware-Fehler oder unvollständige Transaktionen.
-
Diese Weiterbildung der Erfindung betrifft das Speichern nicht-flüchtiger Daten auf einer Speichereinrichtung. Es wird eine Organisation der Daten auf dem Speicher dargestellt und die Zugriffsmechanismen auf die Daten werden beschrieben. Dabei werden insbesondere die Rahmenbedingungen eingebetteter Systeme beachtet.
-
Bei der Datenspeicherung werden die Daten in eine zunächst keine Daten enthaltende Zelle des ersten Bereichs und die zugehörigen Datumsverwaltungsinformationen in eine keine Datumsverwaltungsinformationen enthaltende Zelle des zweiten Bereichs gespeichert. Die Bereiche wachsen damit an und auf dem Segment aufeinander zu, d.h. der freie Speicherplatz verringert sich. Es versteht sich, dass damit genauso umfasst ist, dass die Daten und/oder Datumsverwaltungsinformationen in einen freien Speicherplatz geschrieben werden, der dann durch das Beschreiben zu einem entsprechenden Bereich wird.
-
Abgebrochene Transaktionen (Lösch- oder Schreiboperationen), beispielsweise durch Unterbrechung der Spannungsversorgung oder durch einen Reset, führen nicht zum Verlust bereits gespeicherter Daten. Es ist keine Mehrfachablage der Daten erforderlich, um die Verfügbarkeit der Daten auch bei abgebrochenen Lösch- oder Schreiboperationen zu erreichen. Jedes Datum muss nur einfach geschrieben werden. Ein einzelner Speicherfehler kann nur zum Verlust eines einzigen gespeicherten Datums führen. Es existiert keine Kopplung zwischen den Daten. Jedes Datum kann zu einem beliebigen Zeitpunkt geschrieben werden, ohne dass auch andere Daten geschrieben werden müssen. Das Speichern eines Datums hat keinen Einfluss auf das Speichern anderer Daten. Eine Kopplung zwischen unterschiedlichen Daten ist beispielsweise dann nachteilig, wenn gekoppelte Daten zu unterschiedlichen Zeitpunkten geschrieben werden. Auch kann die Basis- oder Anwendungssoftware einfacher als im Stand der Technik ausgestaltet werden.
-
Vorteilhafterweise ist genau eine Version eines gespeicherten Datums aktuell bzw. gültig, wobei die Gültigkeit eines Datums anhand der Datumsverwaltungsinformation bestimmt wird. Dazu kann beispielsweise eine fortlaufende Numerierung verwendet werden. Eine Datumsverwaltungsinformation enthält, abhängig vom physikalischen und logischen Aufbau des Dateisystems, vorteilhafterweise einen Speicherort, eine Identifikation und/oder eine Länge des zugehörigen Datums oder weitere, für einen Fachmann notwendige und offensichtliche Inhalte. Daten sind üblicherweise veränderbar, liegen also häufig in verschiedenen Versionen vor. Wenn ein Datum, insbesondere durch eine Programmverarbeitung, geändert wird, verliert die bis dahin gültige Version des Datums ihre Gültigkeit. Die gültigen Daten werden normalerweise regelmäßig, bspw. beim Ausschalten oder Herunterfahren der Recheneinheit, gespeichert. Ein zum Speichern vorgesehenes Datum wird in dem ersten Bereich des logischen Segments abgelegt, wobei der erste Bereich bereits eine oder mehrere ältere Versionen des Datums enthalten kann, die damit ungültig werden. Die dem Datum zugehörige Datumsverwaltungsinformation wird in dem zweiten Bereich des logischen Segments abgelegt, wobei der zweite Bereich entsprechend eine oder mehrere Datumsverwaltungsinformationen ungültiger bzw. ungültig gewordener älterer Versionen von Daten enthalten kann.
-
In einer vorteilhaften Weiterbildung wird die Gültigkeit eines Datums anhand des Speicherortes der Datumsverwaltungsinformation bestimmt. Beispielsweise werden die Datumsverwaltungsinformationen fortlaufend nebeneinander abgelegt. Die Datumsverwaltungsinformation des gültigen Datums steht somit an einer später geschriebenen Stelle. Damit ist vorteilhaft in einer Datumsverwaltungsinformation keine Information zur Gültigkeit eines Datums notwendig, womit der Datenbedarf vermindert wird.
-
Gemäß einer bevorzugten Ausgestaltung wird ein Separatordatum zur Abgrenzung des ersten und/oder des zweiten Bereichs vorgesehen. Das Separatordatum befindet sich bevorzugt neben dem zweiten Bereich, der die Datumsverwaltungsinformationen enthält, und bildet den Abschluss des Bereichs. Es bietet sich an, den Separator bzw. das Separatordatum nicht physikalisch zu schreiben. Er kann statt dessen aus Bits im gelöschten Zustand, gemäß dieser Beschreibung aus „logisch 1“ gesetzten Bits, bestehen. Mit Hilfe des Separators kann das Ende des Bereiches mit der Verwaltungsinformation für die Daten auf einfache Weise erkannt werden.
-
Vorteilhafterweise wird eine Segmentverwaltungsinformation in einem dritten Bereich des logischen Segments abgelegt. Dieser Bereich hat vorzugsweise eine feste Länge. Er wird auf das logische Segment geschrieben, bevor das erste Datum darauf gespeichert wird. Die Verwaltungsinformation des Segments enthält verschiedene segmentspezifische Daten, bspw. eine fortlaufende Nummer. Diese Numerierung ermöglicht es, die Reihenfolge der Verwendung der Segmente im Fall einer abgebrochenen Transaktion zu ermitteln. Die Verwaltungsinformation für ein gelöschtes Segment wird vor der ersten Speicherung von Daten auf diesem Segment geschrieben. Sie ist bevorzugt in einer Form abgelegt, dass sie auch bei fehlerhaften Bits in diesem Bereich zuverlässig rekonstruiert werden kann.
-
Zweckmäßigerweise wird ein freier Speicherplatz des logischen Segments den Bereichen nach Bedarf zur Verfügung gestellt. Dabei wächst die Größe des mit Daten belegten ersten Bereichs und die Größe des mit Datumsverwaltungsinformationen belegten zweiten Bereichs bei der Datenablage an. Es versteht sich, dass gemäß einer weniger bevorzugten Ausführungsform der freie Speicherplatz auch fest und statisch den Bereichen zugeteilt werden kann.
-
Die Daten werden bei einer bevorzugten Ausgestaltung abwechselnd in zwei logischen Segmenten gespeichert, wobei ein logisches Segmente jeweils mindestens aus einer separat löschbaren Einheit besteht. Ein logisches Segment beinhaltet wenigstens zwei, vorteilhafterweise drei Bereiche, einen Bereich für Daten, einen Bereich für Datumsverwaltungsinformationen und in vorteilhafter Weiterbildung einen Bereich für Segmentverwaltungsinformationen. Die Bereiche mit den Daten und der Verwaltungsinformation für die Daten wachsen mit der Speicherung von Daten auf einem logischen Segment aufeinander zu. Wenn ein zu schreibendes Datum nicht mehr auf das logische Segment passt, ist eine Reorganisation oder ein Transfer der Daten auf das andere Segment erforderlich.
-
Eine erfindungsgemäße Recheneinheit weist Berechnungsmittel auf, um die Schritte eines erfindungsgemäßen Verfahrens durchzuführen. Sie weist insbesondere Mittel zum Kennzeichnen eines logischen Segments als aktives logisches Segment, Mittel zum Speichern eines zum Speichern vorgesehenen Datums (in dem aktiven logischen Segment, Mittel zum Lesen eines ersten Datums aus einer Arbeitspeichereinrichtung, Mittel zum Lesen eines zweiten Datums aus der Speichereinrichtung, Mittel zum Vergleichen des ersten und des zweiten Datums, und Mittel zum Reorganisieren der Speichereinrichtung, die dazu ausgebildet sind, ein zweites logisches Segment als neues aktives logisches Segment zu kennzeichnen und in dem alten logischen Segment gespeicherte Daten in das neue aktive logische Segment zu übertragen, auf. Sie kann insbesondere als Steuergerät in einem Kfz ausgebildet sein.
-
In einer bevorzugten Ausgestaltung weist die erfindungsgemäße Recheneinheit Mittel zum Bestimmen der Gültigkeit eines Datums anhand der Datumsverwaltungsinformation auf, wobei genau eine Version eines jeden Datums gültig ist.
-
Bevorzugterweise werden das erfindungsgemäße Verfahren und/oder die erfindungsgemäße Recheneinheit in einem Embedded System, Steuergerät oder ECU in einem Kfz verwendet. Insbesondere in einem Kfz kann ein teurer Austausch von Elektronik vermieden werden, wenn die Lebensdauer der Speichereinrichtung erhöht wird.
-
Ein erfindungsgemäßes Computer- bzw. Mikroprozessorprogramm enthält Programmcodemittel, um das erfindungsgemäße Verfahren durchzuführen, wenn das Programm auf einem Computer, einem Mikroprozessor oder einer entsprechenden Recheneinheit, insbesondere der erfindungsgemäßen Recheneinheit, ausgeführt wird.
-
Ein erfindungsgemäßes Computer- bzw. Mikroprozessorprogrammprodukt beinhaltet Programmcodemittel, die auf einem maschinen- bzw. computerlesbaren Datenträger gespeichert sind, um ein erfindungsgemäßes Verfahren durchzuführen, wenn das Programmprodukt auf einem Computer, einem Mikroprozessor oder auf einer entsprechenden Recheneinheit, insbesondere der erfindungsgemäßen Recheneinheit, ausgeführt wird. Geeignete Datenträger sind insbesondere Disketten, Festplatten, ROM, Flash-Speicher, EEPROMs, CD-ROMs, u.a.m. Auch ein Download eines Programms über Computernetze (Internet, Intranet usw.) und Fahrzeugnetze (Body-Bus, Infotainment-Bus etc.) oder Luftschnittstellen (Mobilfunk) ist möglich.
-
Bei der beschriebenen erfindungsgemäßen Lösung können die zu speichernden Daten gemäß einer weiteren bevorzugten Ausgestaltung modifiziert werden. Es bietet sich bspw. eine Kompression oder Verschlüsselung der Daten an. Auch mittels einer Fehlerkorrektur oder einer Prüfsumme durch Anwendung gängiger Verfahren kann die Sicherheit der Daten und der Verwaltungsinformationen erhöht werden. Die Anzahl der Löschzyklen kann weiter verringert werden, wenn die Struktur der Daten verändert wird, zum Beispiel durch Zusammenlegen mehrerer Daten.
-
Weitere Vorteile und Ausgestaltungen der Erfindung ergeben sich aus der Beschreibung und der beiliegenden Zeichnung.
-
Es versteht sich, dass die vorstehend genannten und die nachstehend noch zu erläuternden Merkmale nicht nur in der jeweils angegebenen Kombination, sondern auch in anderen Kombinationen oder in Alleinstellung verwendbar sind, ohne den Rahmen der vorliegenden Erfindung zu verlassen.
-
Die Erfindung ist anhand eines Ausführungsbeispiels in der Zeichnung schematisch dargestellt und wird im folgenden unter Bezugnahme auf die Zeichnung ausführlich beschrieben.
-
Figurenliste
-
- 1 zeigt schematisch ein logisches Segment einer Flash-Speichereinrichtung zur Verwendung mit einer bevorzugten Ausführungsform der Erfindung;
- 2a zeigt schematisch ein logisches Segment einer Flash-Speichereinrichtung zur Verwendung mit einer anderen bevorzugten Ausführungsform der Erfindung;
- 2b zeigt schematisch einen Schreibvorgang auf ein aktives logisches Segment gemäß 2a;
- 2c zeigt schematisch eine Reorganisation einer Flash-Speichereinrichtung; und
- 3 zeigt ein Flussdiagramm einer bevorzugten Ausführungsform des erfindungsgemäßen Verfahrens.
-
Ausführungsform(en) der Erfindung
-
Im folgenden sind figurenübergreifend gleiche Elemente mit gleichen Bezugszeichen versehen.
-
In 1 ist ein aktives logisches Segment 400 einer Flash-Speichereinrichtung zur Verwendung mit einer bevorzugten Ausführungsform der Erfindung schematisch dargestellt. Das logische Segment 400 enthält bereits gespeicherte Daten, nämlich ein Datum 401, ein Datum 402, ein Datum 403 usw. Die Speicherstellen des logischen Flash-Segments 400 sind in der Abbildung zeilenweise dargestellt. Die niedrigste Adresse des Segments befindet sich in der Abbildung links oben, die höchste Adresse rechts unten. Die Flash-Speichereinrichtung weist wenigstens zwei derartige logische Segmente auf, von denen eines das aktive Segment ist.
-
In 2a ist ein logisches Segment einer Flash-Speichereinrichtung zur Verwendung mit einer weiteren bevorzugten Ausführungsform der Erfindung schematisch gezeigt und mit 100 bezeichnet. Das Segment 100 weist einen ersten Bereich 101, einen zweiten Bereich 102 und einen dritten Bereich 103 auf. Der dritte Bereich 103 enthält die Segmentverwaltungsinformationen. Der erste Bereich 101 enthält die Daten, der zweite Bereich 102 die Datumsverwaltungsinformationen. Der Bereich 101 enthält ein Datum 110', ein Datum 111', ein Datum 112', ein Datum 113', ein Datum 114' und ein Datum 115'. Die zugehörigen Datumsverwaltungsinformationen sind im Bereich 102 enthalten. Sie sind mit 110 bis 115 bezeichnet, wobei die Datumsverwaltungsinformation 110 zum Datum 110' gehört, die Datumsverwaltungsinformation 111 zum Datum 111' usw. An den zweiten Bereich 102 schließt sich ein Separatordatum 120 an. Das Separatordatum 120 begrenzt den zweiten Bereich 102. Das Separatordatum besteht aus den Werten, die dem „Gelöscht“-Zustand des Speichermediums entsprechen. Die Flash-Speichereinrichtung weist wenigstens zwei derartige logische Segmente auf, von denen eines das aktive Segment ist.
-
Die drei genannten Bereiche sind gemäß einer bevorzugten Ausführungsform der Erfindung auf jedem der logischen Segmente vorhanden, wenn diese nicht gelöscht sind. Neben der in 2a gezeigten Anordnung der Bereiche sind weitere Anordnungen denkbar, von denen noch drei weitere bevorzugt sind. Der dritte Bereich kann am Anfang oder am Ende des logischen Segments liegen. Der übrige Platz wird für die anderen beiden Bereiche verwendet, wobei der erste Bereich am Anfang und der zweite Bereich am Ende dieses übrigen Platzes liegen können oder umgekehrt. Bei der nachfolgenden Beschreibung wird immer eine Anordnung gemäß 2a zugrundegelegt.
-
Der dritte Bereich 103 enthält die Verwaltungsinformation für das logische Segment. Dieser Bereich hat üblicherweise eine feste Länge. Er wird bevorzugt auf das logische Segment geschrieben, bevor das erste Datum darauf gespeichert wird. Die Verwaltungsinformation des Segments enthält zweckmäßigerweise verschiedene segmentspezifische Daten, unter anderem eine fortlaufende Nummer. Diese Numerierung ermöglicht es, die Reihenfolge der Verwendung der Flash-Segmente im Fall einer abgebrochenen Transaktion zu ermitteln. Die Verwaltungsinformation für ein gelöschtes Segment wird vor der ersten Speicherung von Daten auf diesem Segment geschrieben. Sie ist bevorzugt in einer Form abgelegt, dass sie auch bei einem fehlerhaften Bit in diesem Bereich fehlerfrei rekonstruiert werden kann.
-
Der erste Bereich 101 mit den Daten wächst mit der Anzahl der gespeicherten Daten. Die Daten 110', 111' usw. werden gemäß dieser Ausführungsform von links nach rechts geschrieben, was durch Pfeile 130' dargestellt ist. Die Sicherheit der Daten kann durch Fehlererkennungs- und/oder Fehlerkorrekturverfahren erhöht werden.
-
Die Datums-Verwaltungsinformationen 110, 111 usw. werden im zweiten Bereich 102 gemäß der in 2a gezeigten Ausführungsform von rechts nach links geschrieben, was durch Pfeile 130 dargestellt ist. Die Verwaltungsinformation zu einem Datum hat üblicherweise eine feste Länge und enthält zweckmäßigerweise eine eindeutige Identifikation für das jeweilige Datum und einen Verweis auf die Stelle (Adresse), an der das Datum gespeichert ist. Die Verwaltungsinformation kann durch einen Mechanismus zur Fehlererkennung abgesichert sein. Dies ist bei der Erkennung von abgebrochenen Transaktionen nützlich. Nach einem vollständigen Speichervorgang existiert zu jedem gespeicherten Datum eine Verwaltungsinformation.
-
Das zuerst auf das Segment geschriebene Datum ist 110' und die zugehörende Verwaltungsinformation ist 110. Als nächstes wurde das Datum 111' und die zugehörige Datumsverwaltungsinformation 111 auf das Segment geschrieben usw. Zuletzt wurden Datum 115' und Datumsverwaltungsinformation 115 geschrieben. Wird ein bereits gespeichertes oder ein anderes Datum zum Speichern vorgesehen, wird es an die nächste freie Stelle geschrieben. So kann beispielsweise das Datum 114' die gültige Version und das Datum 111' eine alte ungültige Version desselben Datums sein. Vorteilhafterweise wird ein Datum nur gespeichert, wenn es sich gegenüber der gültigen Version, die in dem logischen Segment gespeichert ist, geändert hat.
-
In 2c ist eine Flash-Speichereinrichtung zur Verwendung mit einer Ausführungsform der Erfindung dargestellt. Die Flash-Speichereinrichtung weist zwei logische Segmente 100 und 150 auf. Segment 100 ist das aktive logische Segment, d.h. Lese-, Schreib- und Löschzugriffe erfolgen auf dieses Segment. Wenn sich durch das Schreiben eines Datums und der zugehörigen Datumsverwaltungsinformation der erste und der zweite Bereich (einschließlich des Separators) überlappen würden, muss das zu schreibende Datum auf das andere Segment geschrieben werden. Außerdem müssen die auf dem aktiven Segment vorhandenen Daten auf das andere Segment transferiert werden, soweit sie nicht in einer Arbeitspeichereinrichtung 300 vorhanden sind. Dieser gesamte Vorgang wird als Reorganisation bezeichnet. Er ist im Detail weiter unten erläutert.
-
Im folgenden werden die Schritte bei den unterschiedlichen Interaktionen mit dem System gemäß einer bevorzugten Ausführungsform der Erfindung beschrieben. Dabei wird nur das Normalverhalten betrachtet. Insbesondere werden keine Fehlerfälle oder das Verhalten des Systems nach abgebrochenen Transaktionen betrachtet.
-
Initialisierung des Systems
-
Zunächst wird der Zustand der logischen Segmente anhand der Verwaltungsinformation der Segmente überprüft. Dabei können drei unterschiedliche Zustände erkannt werden:
- • Beide logischen Segmente sind gelöscht. Auf dem Flash-Speicher sind in diesem Fall keine Daten gespeichert. Die Verwaltungsinformationen für dieses Segment wird geschrieben. Damit ist das Segment initialisiert.
- • Nur ein logisches Segment ist gelöscht. Das andere Segment wird initialisiert.
- • Kein logisches Segment ist gelöscht. In diesem Fall war ein Segment voll und der Transfer der Daten auf das andere Segment wurde unterbrochen. Der Transfer wird fortgesetzt. Damit ist das Segment auch initialisiert.
-
Im Anschluss an diese Operationen kann mit der normalen Verarbeitung (Lesen, Schreiben, Löschen von Daten) begonnen werden. Die Initialisierung eines Segments besteht darin, Vorbereitungen zu treffen, um Daten lesen, schreiben und löschen zu können. Um ein logisches Segment zu initialisieren, ist es erforderlich, zwei Positionen zu bestimmen, nämlich die Position, an die das nächste zu speichernde Datum geschrieben werden kann, und die Position des Separators. An diese Position wird die Verwaltungsinformation für das nächste zu speichernde Datum geschrieben. In 2a liegt die Position, an die das nächste zu speichernde Datum geschrieben werden kann, rechts neben Datum 115'. Der Separator ist mit 120 bezeichnet. Diese beiden Positionen werden bei Schreiboperationen entsprechend der geschriebenen Daten verändert.
-
Herunterfahren des Systems
-
Es sind keine speziellen Aktionen erforderlich, um die Bearbeitung zu beenden. Einzige Voraussetzung ist, dass alle Schreib- und Löschvorgänge abgeschlossen sind.
-
Lesen eines Datums
-
Um ein Datum zu lesen, wird - beginnend beim Separator 120 - der zweite Bereich 102 mit den Datumsverwaltungsinformationen durchsucht, bis die eindeutige Identifikation des zu suchenden Datums gefunden wird, bspw. in der Datumsverwaltungsinformation 113. Über die Adresse in der Datumsverwaltungsinformation 113 wird dann das Datum 113' im Speicher gefunden. Sofern keine Verwaltungsinformation für die Identifikation des Datums gefunden wurde, ist es nicht gespeichert.
-
Schreiben eines Datums
-
Das Schreiben eines Datums wird nachfolgend anhand 2b erläutert. Um ein Datum 116' zu schreiben, wird zunächst überprüft, ob das Datum zusammen mit einer Datumsverwaltungsinformation 116 und dem Separatordatum 120 noch in das aktive Segment 100 passt. Ist dies der Fall, wird bspw. zunächst das Datum 116' rechts neben die schon gespeicherten Daten, im vorliegenden Beispiel rechts neben Datum 115', geschrieben. Im Anschluss wird das Separatordatum 120 mit der zugehörigen Verwaltungsinformation 116 für dieses Datum überschrieben. Das neue Separatordatum 120 befindet sich nun links neben der neu geschriebenen Datumsverwaltungsinformation 116.
-
Reorganisation der Speichereinrichtung
-
Die Reorganisation der Speichereinrichtung wird im folgenden anhand 2c erklärt. Neben den beiden Segmenten 100, 150 ist die Arbeitsspeichereinrichtung 300 dargestellt. Die Arbeitsspeichereinrichtung 300 enthält Daten 301 bis 305. Das aktive Segment 100 ist im vorliegenden Beispiel mit Daten 110', ..., 118' sowie zugehörigen Datumsverwaltungsinformationen 110, ..., 118 belegt. An den zweiten Bereich der Datumsverwaltungsinformationen schließt sich das Separatordatum 120 an. Im vorliegenden Fall ist ein Datum 301 zum Speichern vorgesehen. Das Datum 301 befindet sich zu diesem Zeitpunkt üblicherweise in der Arbeitsspeichereinrichtung. Es zeigt sich, dass in dem Segment 100 nicht genug Platz zum Speichern des Datums 301, einer zugehörigen Datumsverwaltungsinformation 119 und des Separatordatums 120 vorhanden ist, was durch die gestrichelten Pfeile angedeutet wird. Daher wird das zu schreibende Datum 301 in dem neuen Segment 150 gespeichert, was der durchgezogene Pfeil zeigt. Danach wird von allen gespeicherten Daten 110' bis 118' nur die jeweils gültige Version in dem Segment 150 gespeichert. Dazu werden die in der Arbeitsspeichereinrichtung 300 gespeicherten Daten 302 bis 305 mit den in dem logischen Segment 100 gespeicherten Daten 110' bis 118' verglichen. Befindet sich die Version eines Datums in der Arbeitsspeichereinrichtung 300, wird diese in dem Segment 150 gespeichert, ansonsten wird im Segment 100 gespeicherte gültige Version in das Segment 150 übertragen. Dies ist wiederum mit durchgezogenen Pfeilen angedeutet. Im Anschluss wird das alte Segment 100 gelöscht. Das neue Segment 150 ist von nun an bis zur nächsten Reorganisation das aktive Segment.
-
Löschen eines Datums
-
Das Löschen hängt von Eigenschaften der verwendeten Speicher-Hardware ab. Es gibt zwei Varianten.
-
Sofern es technisch möglich ist, Bereiche auf der Hardware (mit den erwähnten Einschränkungen durch die Flash-Technologie) ohne Löschen zu überschreiben, kann die Verwaltungsinformation für das zu löschende Datum entsprechend überschrieben werden. Dafür gibt es mehrere Möglichkeiten. Zum einen können alle Bits auf den Wert „beschrieben“ (gemäß der vorliegenden Beschreibung „logisch 0“, wobei dies hardewareabhängig ist) gesetzt werden, was dann als gelöscht erkannt werden muss und keine andere Interpretation zulassen darf. Zum anderen können die Bits für die Identifikation des Datums auf den Wert „logisch 0“ gesetzt werden. In diesem Fall darf diese Identifikation ansonsten nicht verwendet werden. Es ist ebenfalls denkbar, die Bits für die Adresse des Datums auf den Wert „logisch 0“ zu setzen, wobei in diesem Fall eine Speicherung an dieser Adresse nicht möglich sein darf. Wird ein Datum gelöscht, muss das Löschen bei der in 2a dargestellten Anordnung im zweiten Bereich 102 von rechts nach links erfolgen, um bei einer abgebrochenen Transaktion nicht ein älteres Datum für ein aktuelles gültiges Datum zu halten.
-
Ist es hingegen technisch nicht möglich, bereits beschriebene Bereiche ohne Löschen erneut zu überschreiben, so wird eine neue Verwaltungsinformation für dieses Datum geschrieben. Dort wird ein Verweis eingetragen, anhand dessen erkennbar ist, dass dieses Datum gelöscht ist. Dies kann beispielsweise durch einen Verweis auf eine Adresse geschehen, an der keine Daten gespeichert werden können („NIL-pointer“).
-
In 3 ist ein Flussdiagramm einer bevorzugten Ausführungsform des erfindungsgemäßen Verfahrens dargestellt. Das Verfahren beginnt in einem Schritt 200. In einem Schritt 201 wird die Flash-Speichereinrichtung initialisiert, wie es weiter oben bei Initialisierung des Systems beschrieben ist.
-
In einem anschließenden Schritt 202 wird ein Datum auf das aktive logische Segment geschrieben, wie es weiter oben bei Schreiben eines Datums beschrieben ist. Der Schritt 202 wird so oft wiederholt, wie Daten auf die Speichereinrichtung geschrieben werden sollen oder bis das aktive Segment voll ist und keine weiteren Daten mehr aufnehmen kann.
-
Im zweiten Fall wird anschließend in einem Verfahrensschritt 203 eine Reorganisation durchgeführt, wie es weiter oben bei Reorganisation des Systems beschrieben ist. Anschließend wird entweder zu Schritt 202 zurückgekehrt, wenn ein weiterer Betrieb notwendig oder beabsichtigt ist, oder zu Schritt 204 verzweigt, wenn kein weiterer Betrieb beabsichtigt ist.
-
Wird im oben genannten ersten Fall während der wiederholten Durchführung des Schritts 202 kein Zustand eines vollen aktiven Segments erreicht, wird am Ende des Betriebs ebenfalls zu Schritt 204 verzweigt. In Schritt 204 wird das System heruntergefahren und das Verfahren endet in einem Schritt 205.
-
Es versteht sich, dass abhängig von der Ausgestaltung der Anwendungssoftware bei einem üblichen Betrieb zwischen einigen Schreibvorgängen auch Lese- und Löschvorgänge stattfinden, wie sie weiter oben beschrieben wurden.
-
Die bevorzugte Struktur der Daten innerhalb der logischen Flash-Segmente eröffnet die Möglichkeit für eine effiziente und wenig fehleranfällige Verwendung von Flash-Speicher zur nichtflüchtigen Ablage von Daten. Der genaue Aufbau der Datenfelder wurde bei der Beschreibung offen gelassen. Es wurden nur die Inhalte erwähnt, die zum Verständnis des Verfahrens erforderlich sind, da sich alles weitere dem Fachmann bei der Verwendung erschließt. Beispielsweise ist es nicht erforderlich, die Länge der Daten im Flash-Speicher abzulegen, sofern die Länge im vorhinein bekannt ist und sich nicht ändert. Im Fall von Daten mit veränderbaren Längen muss die Länge hingegen gespeichert werden. Dies würde in der Verwaltungsinformation zu den entsprechenden Daten geschehen.