DE102006009214B4 - Verfahren und Vorrichtung zum Schreiben in eine Zielspeicherseite eines Speichers - Google Patents

Verfahren und Vorrichtung zum Schreiben in eine Zielspeicherseite eines Speichers Download PDF

Info

Publication number
DE102006009214B4
DE102006009214B4 DE102006009214A DE102006009214A DE102006009214B4 DE 102006009214 B4 DE102006009214 B4 DE 102006009214B4 DE 102006009214 A DE102006009214 A DE 102006009214A DE 102006009214 A DE102006009214 A DE 102006009214A DE 102006009214 B4 DE102006009214 B4 DE 102006009214B4
Authority
DE
Germany
Prior art keywords
memory
memory page
page
destination
bit
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.)
Active
Application number
DE102006009214A
Other languages
English (en)
Other versions
DE102006009214A1 (de
Inventor
Wieland Fischer
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
Priority to DE102006009214A priority Critical patent/DE102006009214B4/de
Priority to US11/680,156 priority patent/US7657795B2/en
Publication of DE102006009214A1 publication Critical patent/DE102006009214A1/de
Application granted granted Critical
Publication of DE102006009214B4 publication Critical patent/DE102006009214B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (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 zum Schreiben in eine Zielspeicherseite (Pb) eines Speichers (110), der ausgebildet ist, um ein Setzen eines einzelnen Bits einer Speicherseite und ein Löschen der gesamten Speicherseite zu ermöglichen, der jedoch ein Löschen eines einzelnen Bits einer Speicherseite nicht ermöglicht, und der ferner eine Ausgangsspeicherseite (Pg) aufweist, wobei der Ausgangsspeicherseite (Pg) ein in der Ausgangsspeicherseite (Pg) umfasstes Bit (TF2) eines Markierungsspeichers (140) zugeordnet ist, wobei das Bit (TF2) des Markierungsspeichers (140) anzeigt, dass ein Inhalt der Ausgangsspeicherseite (Pg) korrekt in die Zielspeicherseite (Pb) geschrieben ist, wenn das Bit (TF2) des Markierungsspeichers (140) gesetzt ist, mit folgenden Schritten:
Bestimmen (200), ob die Zielspeicherseite (Pb) einen Fehler aufweist;
falls die Zielspeicherseite (Pb) einen Fehler aufweist,
Löschen (210) der Zielspeicherseite (Pb);
falls das Bit (TF2) des Markierungsspeichers (140) nicht gesetzt ist,
Schreiben (260) der Zielspeicherseite (Pb) basierend auf der Ausgangsspeicherseite (Pg);
wenn die Zielspeicherseite (Pb) korrekt geschrieben...

Description

  • Die vorliegende Erfindung bezieht sich auf ein Verfahren und eine Vorrichtung zum Schreiben in eine Zielspeicherseite eines Speichers, wobei der Speicher insbesondere ein UCP-EEPROM (UCP-EEPROM = uniform channel programming electrically erasable read only memory = elektrisch löschbarer programmierbarer Festwertspeicher mit gleichförmiger Kanalprogrammierung) ist.
  • EEPROM-Speicher (EEPROM = electrically erasable read only memory = elektrisch löschbarer programmierbarer Festwertspeicher) ermöglichen eine Speicherung von Daten, die auch erhalten bleiben, nachdem eine Versorgungsspannung von dem betreffenden EEPROM-Speicher getrennt wurde. Aufgrund der Möglichkeit, EEPROM-Speicher sehr kompakt bauen zu können, werden diese Speicher bevorzugt im Bereich mobiler Prozessoreinrichtungen und mobiler Speicher eingesetzt. Insbesondere im Bereich von Chipkarten und Smartcards, die beispielsweise zum Schutz sicherheitsrelevanter und sensibler Bereiche und Daten eingesetzt werden, werden EEPROM-Speicher verwendet. Schon aufgrund des Wertes der durch solche EEPROM-Speicher mittelbar oder unmittelbar geschützter Güter, Privilegien und Daten sind EEPROM-Speicher Ziele von Angriffen, wie etwa einem gezielten Unterbrechen der Versorgungsspannung oder der Versorgungsleistung, was auch als Tearing oder Tearing-Angriff bezeichnet wird.
  • Eine Untergattung der EEPROM-Speicher stellen die sogenannten UCP-EEPROM-Speicher dar. Um Fläche auf einem Chip, der den EEPROM-Speicher umfasst, einzusparen, werden bei den UCP-EEPROMs in einem EEPROM-Zellenfeld die Bit/Byte-Schalter weggelassen. Der Speicher wird darüber hinaus in Speicherseiten bzw. Seiten, die auch als Pages bezeichnet werden, orga nisiert. Eine Speicherseite besteht hierbei aus einer Anzahl von Bytes, Halbwörtern oder Wörtern, wobei ein Wort beispielsweise 32 Bit oder 4 Byte umfassen kann. Eine Speicherseite umfasst dann beispielsweise 64 oder 128 Byte.
  • In einer Speicherseite können einzelne Bits und Bytes nicht mehr individuell gelöscht werden, also beispielsweise auf einen Wert 0 gesetzt werden. Grundsätzlich ist es möglich, einzelne Bits nachträglich zu schreiben, also nachträglich aus einem Zustand, der den Wert 0 repräsentiert, in einen Zustand zu versetzen, der den Wert 1 repräsentiert. Für viele Applikationen stellt dies zwar eine theoretisch mögliche Vorgehensweise dar, die jedoch für einen gewöhnlichen Schreibvorgang in einen Speicher, bei dem einzelne Bits geändert werden sollen, nur eine wenig sinnvolle Vorgehensweise darstellt, da beispielsweise bei einer Verwendung von fehlererkennender Codes (EDC = error detecting codes) oder fehlerkorrigierender Codes (ECC = error correcting codes) nicht ausgeschlossen werden kann, dass einzelne Bits gelöscht, also in einen Zustand gebracht werden müssen, der einem Wert 0 entspricht. Dies ist jedoch im Allgemeinen bei UCP-EEPROM-Speicher nicht möglich, da, wie bereits erläutert wurde, einzelne Bits und Bytes nicht individuell gelöscht werden können. Somit würde ein nachträgliches Schreiben eines einzelnen Bits wahrscheinlich zu einer Verfälschung der ECC-Informationen oder der EDC-Informationen führen. Mit anderen Worten ist eine Verwendung der Möglichkeit, einzelne Bits nachzuprogrammieren bzw. nachzuschreiben, im Falle einer in einen Speicher eingebauten ECC- oder EDC-Funktionalität wenig sinnvoll.
  • Das bedeutet jedoch, dass, um nur ein Bit, Byte oder Datenwort der Daten dieser Page zu ändern, die gesamte Speicherseite gelöscht und anschließend neu geschrieben werden muss. Das bedeutet, dass ausgehend von dem gelöschten Zustand der Speicherseite die Bits, die geschrieben werden sollen, geschrieben werden, während die anderen Bits ihren Zustand nicht oder nur unmerklich physikalisch ändern. Die Daten der zu ändernden Speicherseite müssen hierbei zwischenzeitlich gepuffert werden, damit bei einem Stromausfall kein Datenverlust entsteht.
  • Um eine zwischenzeitliche Pufferung der Speicherseite, wie sie oben beschrieben ist, zu umgehen, wird eine sogenannte Leerseite bzw. Spare-Page eingesetzt. Zu diesem Zweck wird zusätzlich zu der oben geschilderten Architektur das EEPROM-Zellenfeld durch Einführen sogenannter Sektoren organisiert. Hierbei werden einem Sektor S eine Anzahl von Speicherseiten zugeordnet. In dem Sektor S werden so beispielsweise 32 Speicherseiten (P1, ..., P32) gesammelt. Um nun eine Zwischenspeicherung bzw. ein Puffern einer zu programmierenden Speicherseite vor dem Löschen zu umgehen, wird eine weitere Speicherseite P0 dem Sektor hinzugefügt, da so eine zeitlich aufwendige EEPROM-Programmierung im Rahmen der Zwischenspeicherung bzw. des Pufferns umgangen werden kann. Diese Speicherseite P0 liegt im gelöschten Zustand vor und dient als Spare-Page. Zur Programmierung wird in die Speicherseite P0 der eventuell abgeänderte Inhalt einer Speicherseite, beispielsweise der Speicherseite P25, in die Speicherseite P0 geschrieben. Nachdem der Inhalt in der neuen Speicherseite P0 verifiziert worden ist, wird die alte Speicherseite P25 gelöscht und die Speicherseite P0 entsprechend in den Speicher abgebildet. Die gelöschte Speicherseite P25 übernimmt nun die Rolle der alten Speicherseite P0. Die jeweilige gelöschte Speicherseite wird als Spare-Page bezeichnet.
  • Da auf diese Weise durch mehrere Programmiervorgänge die Speicherseite im Sektor nicht mehr in ihrer ursprünglichen Reihenfolge angeordnet sind, also „durcheinandergewürfelt" werden, werden jeder Speicherseite ein paar zusätzliche Bits hinzugefügt, die einen sogenannten MapBlock bzw. einen Speicher für eine logische Adresse einer Speicherseite bilden. In diesen MapBlock wird die sogenannte MapAdresse bzw. die logische Adresse der Speicherseite geschrieben. Durch Einführen der MapAdresse bzw. des MapBlocks kann somit jeder physikalischen Speicherseite eine (logische) Speicheradresse zugeordnet werden. Diese Information darf auch durch einen Reset oder einen Stromverlust bzw. Tearing nicht verloren gehen. In dem MapBlock einer jeden Page steht dann als MapAdresse eine Zahl zwischen 0 und 31, wenn die betreffende Speicherseite nicht gelöscht ist. Die MapAdresse kennzeichnet somit eine Position der entsprechenden Speicherseite in einem Speicherraum, also beispielsweise in dem Sektor S. Hierdurch ist eine Zuordnung von Speicheradressen und der jeweiligen physikalischen Page möglich.
  • In einem Sektor S gibt es also unter normalen Betriebsbedingungen eine gelöschte Speicherseite, die sogenannte Spare-Page, und, ausgehend von dem Beispiel oben, 32 Daten-Speicherseiten (Daten-Pages). Die 32 MapBlöcke, die jeweils einer Speicherseite zugeordnet sind, weisen somit jede logische Adresse zwischen 0 und 31 genau einmal auf. Jeder physikalischen Speicherseite ist somit genau eine logische Speicheradresse zugeordnet, die die Position im Speicherraum der betreffenden physikalischen Speicherseite wiedergibt.
  • Bei dem Zellenkonzept der EEPROM-Speicher kommt es bei einem Schreibvorgang in eine Speicherseite eines Sektors zu einer, meist geringfügigen, Störung aller Zellen aller anderen Seiten dieses Sektors. Auch wenn die Zellen der anderen Speicherseiten nur ein wenig gestört werden, handelt es sich jedoch um einen kumulativen Effekt, der gegebenenfalls auch zu einem Datenverlust bzw. zu einer Reduzierung der Datenintegrität führen kann. Um diesen Störungen, die auch als Disturbs bezeichnet werden, zu begegnen, ist das Konzept des Umkopierens bzw. des Refreshs eingeführt worden. Hierbei werden beispielsweise entweder von Zeit zu Zeit Speicherseiten zufällig ausgewählt und frisch umkopiert bzw. kopiert, oder es wird, beispielsweise in den MapBlock, ein Zeitstempel bzw. Timestamp abgelegt, der auch DisturbCounter genannt wird, und der angibt, welche Speicherseite besonders „alt" ist.
  • Hierdurch ergibt sich im Zusammenhang mit einer Versorgungsspannungsunterbrechung aber das folgende Problem. Wird während eines Programmiervorgangs, also während des Schreibens der neuen Page und dem Löschen der alten Page die Stromversorgung unterbrochen, beispielsweise durch einen Tearing-Angriff, können zwei problematische Szenarien auftreten:
    • A. Fand während des Schreibvorgangs eine Versorgungsspannungsunterbrechung statt, dann sind die Speicherseiten, in die während des Programmiervorgangs keine neuen Daten geschrieben wurden, bereits einer Störung unterworfen gewesen. Mit anderen Worten haben diese Speicherseiten bereits einen Disturb „gesehen", der diese gestört hat. Wird nun die bei dem unterbrochenen Schreibvorgang erzeugte, ungültige Speicherseite gelöscht, dann ist zwar der Sektor mit den alten, unveränderten Daten wiederhergestellt, die Information, dass eine Störung bzw. ein Disturb vorgelegen hat, ist aber nicht mehr vorhanden und damit verloren. Diese muss nachträglich in Form eines digitalen Wertes in eine (beliebige) Speicherseite des betreffenden Sektors abgelegt werden. Dies kann beispielsweise durch ein Erhöhen des DisturbCounters geschehen. Ein Angreifer könnte jedoch in diesem Augenblick wieder die Stromzufuhr unterbrechen und die Information über die aufgetretene Störung wäre unwiederbringlich verloren. Auf diese Art und Weise kann es ein Angreifer schaffen, sehr viele Störungen in einen Sektor einzubringen, ohne dass das System, also der Speicher, es detektieren könnte. Die Datenintegrität des Sektors würde im Laufe der Zeit schlechter werden, so dass der Sektor nach einer gewissen Zeit gegebenenfalls sogar falsche Daten enthalten kann.
    • B. Fand die Stromversorgungsunterbrechung am Ende der Schreibroutine bzw. Anfang der Löschroutine statt, dann liegt ein Sektor vor, der zwei mehr oder weniger gute Speicherseiten aufweist, die zu derselben logischen Adresse über den MapBlock assoziiert sind. In diesem Fall muss entschieden werden, welche Speicherseite behalten und welche Speicherseite als Spare-Page freigegeben werden soll. Behält man beispielsweise die ältere Speicherseite und löscht die neuere Speicherseite, so besteht die Gefahr, dass die alte Speicherseite bereits im Rahmen des Löschvorgangs „angelöscht" war und somit nicht mehr die geforderte Datenintegrität aufweisen kann. Mit anderen Worten kann es in diesem Fall geschehen, dass die alte Speicherseite nicht mehr die geforderte Datenhaltung gewährleisten kann. Behält man hingegen die neuere Page und löscht die ältere, so könnte es sein, dass die neue Speicherseite noch nicht vollständig geschrieben wurde und somit ebenfalls nicht die geforderte Datenhaltung gewährleistet werden kann. Unabhängig davon, welche der beiden Speicherseiten behalten und welche als Spare-Page freigegeben werden soll, ist es möglich, eine Page zu löschen und die andere an die Stelle der gelöschten Page hineinzukopieren. Durch eine Versorgungsspannungsunterbrechung (Tearing) zu genau diesem Zeitpunkt könnte die Information, dass man die eine Page kopieren wollte, jedoch wiederum verloren gehen.
  • Die deutsche Patentschrift DE 10322723 bezieht sich auf eine Vorrichtung und ein Verfahren zum Behandeln eines Zustandes eines Speichers. Die dort beschriebene Methode in ihrer Verwendung als Tearingservicealgorithmus kann die weiter oben beschriebene Problematik einschränken. Dieser Tearingservicealgorithmus wird im Folgenden beschrieben und ist in der Lage, einen Tearing-Angriff zu detektieren und ausnahmslos alle Störungen zu protokollieren.
  • 5 zeigt eine schematische Darstellung eines Aufbaus eines Speichers oder eines Sektors eines Speichers, wie er in der DE 10322723 beschrieben ist. Der Speicher oder der Sektor weist eine Mehrzahl von Speicherseiten 800-1 bis 800-5 auf, wobei jede der Speicherseiten 800-1 bis 800-5 einen Datenbereich 810 zum Speichern von Daten, einen Zuordnungsblock bzw. MapBlock 820, einen Markierungsbereich 830 und einen Zeitstempelbereich 840 zur Speicherung des DisturbCounters umfasst.
  • 6 zeigt ein Flussdiagramm des Verfahrens zum Behandeln eines Zustandes eines Speichers nach dem Stand der Technik. Genauer gesagt zeigt 6 einen Teil eines Tearingservicealgorithmus, der nach einem Start des Algorithmus und einer (optionalen) Untersuchung der Speicherseiten 800-1 bis 800-5 des Sektors des Speichers mit einem in 6 gezeigten Schritt begonnen wird. Soll eine Speicherseite Pg in eine freie Speicherseite Pb, bei der es sich um die Spare-Page des Sektors handelt, kopiert werden und zeigt eine optional durchgeführte Analyse des Sektors, etwa in Form fehlerhafter Speicherseiten, einen Fehler, so wird in einem ersten Schritt 910 die Speicherseite Pg markiert. Zu diesem Zweck wird in dem Markierungsblock 830 der Speicherseite Pg ein Bit, das als TearingFlag TF1 nachprogrammiert, was in 6 durch die Bezeichnung Pg* gekennzeichnet ist. Eine solche Nachprogrammierung des TearingFlags TF1 kann im Rahmen des UCP-EEPROM-Konzepts durchgeführt werden, wie dies oben erläutert wurde. Unter normalen Betriebsbedingungen ist das TearingFlag TF1 gelöscht, weist also den Wert 0 auf.
  • Anschließend wird in einem zweiten Schritt 920 die Speicherseite Pb gelöscht. Anschließend wird in einem Prozessschritt 930 ein zweites TearingFlag TF2, das der Markierungsblock 830 der Speicherseite Pg umfasst, programmiert bzw. geschrieben, so dass das TearingFlag TF2 ebenfalls den Wert 1 aufweist. In 6 ist dies durch die Bezeichnung Pg** gekennzeichnet.
  • In einem nächsten Schritt 940 wird die Speicherseite Pg in die Speicherseite Pb kopiert, wobei einerseits in den Zeitstempelbereich 840 der Speicherseite Pb ein entsprechend erhöhter DisturbCounter mitabgespeichert wird und andererseits die beiden TearingFlags TF1 und TF2 gelöscht bzw. mit einem Wert 0 programmiert werden. Der Inhalt, der in die Speicherseite Pb kopiert wird und auf der mit den beiden TearingFlags TF1 und TF2 markierten Speicherseite Pg basiert, wird auch als Resolvente von Pg** bezeichnet, was im Rahmen der Figuren in der vorliegenden Anmeldung auch als resolv(Pg**) und r(Pg**) bezeichnet wird.
  • In einem folgenden Schritt 950 wird die ursprüngliche Speicherseite Pg gelöscht und damit zu der neuen Spare-Page. Da während des Schritts des Kopierens 940 das TearingFlag TF1 der Speicherseite Pg nicht mitkopiert wurde, so dass auch das TearingFlag TF1 der Speicherseite Pb den Wert 0 aufweist, wird in einem nächsten Schritt der Tearingservicealgorithmus beendet.
  • 7 illustriert den Inhalt der beiden im Rahmen des beschriebenen Tearingservicealgorithmus betroffenen Speicherseiten Pg und Pb. Die Darstellung der Inhalte der beiden Speicherseiten Pg und Pb erfolgt hierbei in Form von sechs Rechtecken, die jeweils eine obere und eine untere Hälfte aufweisen. Genauer gesagt zeigt 7 somit die Veränderung des Inhalts der physikalischen Speicherseiten durch die Verfahrensschritte 910-950. In der oberen Hälfte der Rechtecke ist hierbei der Inhalt der Speicherseiten Pg, in der unteren Hälfte der Inhalt der Speicherseite Pb dargestellt. Hierbei bezeichnen Pg und Pb ebenfalls die ursprünglichen Inhalte der beiden Speicherseiten, bevor der Tearingservicealgorithmus begonnen wurde. Unter normalen Betriebsbedingungen handelt es sich bei der Speicherseiten Pb um die Spare-Page, so dass sie in einem gelöschten Zustand vorliegen sollte, was im Rahmen der Beschreibung in 7 durch eine Null gekennzeichnet werden könnte. Um jedoch darüber hinaus auch eine Beschreibung der möglichen Speicherinhalte zu ermöglichen, die eine Folge eines Tearing-Angriffs sein können, weist auch die Speicherseiten Pb einen Inhalt auf, der nicht notwendigerweise dem Inhalt einer gelöschten Speicherseite entsprechen muss.
  • Ausgehend von den Inhalten Pg und Pb wird durch den Schritt des Markierens 910 die Speicherseite Pg markiert, was durch den hochgestellten Stern verdeutlicht wird. Durch dem Schritt des Löschens 920 wird die Speicherseite Pb gelöscht, was in 7 durch den Eintrag 0 symbolisiert wird. Durch den Schritt des Markierens 930 wird das zweite TearingFlag TF2 der Speicherseite Pg gesetzt, was in 7 durch die Markierung Pg** dargestellt ist. In Schritt 940 wird in die Speicherseite Pb die Resolvente der Speicherseite Pg** geschrieben, was in 7 durch die Bezeichnung r(Pg**) dargestellt ist. In dem Schritt des Löschens 950 wird anschließend die Speicherseite Pg gelöscht.
  • Im Folgenden wird die Wirkungsweise des in 6 beschriebenen Verfahrens bzw. des Tearingservicealgorithmus unter Tearing-Bedingungen oder Angriffsbedingungen nach dem Stand der Technik näher beschrieben. Der Tearingservicealgorithmus muss in der Lage sein, nach einem Unterbrechen der Versorgungsspannung (Tearing) an einer beliebigen Stelle des Tearingservicealgorithmus wieder an eine geeignete Stelle bzw. richtige Stelle zu finden und den Algorithmus fertig durchzuführen. Dies muss selbst dann gewährleistet sein, wenn eine wiederholte Anzahl von Unterbrechungen während des Tearingservicealgorithmus stattfindet. All dies muss geschehen, ohne dass Störungen vergessen bzw. übersehen werden. Kommt es aufgrund des oben beschriebenen Falls B dazu, dass zwei Speicherseiten dieselbe logische Adresse im MapBlock 820 aufweisen, liegt also ein sogenanntes DoubleMapping vor, wird das geschilderte Verfahren mit dem Verfahrensschritt 910 begonnen. Hierbei ist grundsätzlich zu entscheiden, welche der beiden betroffenen Speicherseiten behalten und welche gelöscht werden soll. Wird die grundsätzliche Entscheidung getroffen, dass die jüngere Page behalten wird, also die Page, deren Zeitstempelbereich 840 ein geringeres Alter anzeigt, wird diese Speicherseite als Speicherseite Pg und die ältere Speicherseite als Speicherseite Pb im Rahmen des in 6 geschilderten Verfahrens behandelt. Es passiert also folgendes: Zunächst wird die Speicherseite Pg mit dem TearingFlag TF1 markiert, so dass ab diesem Zeitpunkt immer festgestellt werden kann, dass ein Tearingservicealgorithmus initiiert wurde. Im Falle einer Unterbrechung der Versorgungsspannung zu Beginn des Tearingservicealgorithmus, bevor also das TearingFlag TF1 geschrieben wird, und damit "sichtbar" wird, wird bei einem Neustart des Tearingservicealgorithmus wiederum ein DoubleMapping festgestellt und der Algorithmus beginnt von vorne.
  • Im Anschluss wird die Speicherseite Pb gelöscht. Findet also der Chip, der den Speicher umfasst, einen Sektor mit einer Speicherseite, bei der nur das TearingFlag TF1 gesetzt ist, und eine zweite Speicherseite, der dieselbe logische Adresse zugeordnet ist, vor, so wird der Tearingservicealgorithmus beginnend mit Verfahrensschritt 920 zu Ende geführt. Weist der Sektor analog genau eine Speicherseite mit einem gesetzten TearingFlag TF1 auf, deren TearingFlag TF2 nicht gesetzt ist, und eine fehlerhafte Speicherseite auf, bei der es sich in diesem Fall um eine unvollständig gelöschte Speicherseite handelt, so wird der Tearingservicealgorithmus ebenfalls mit Schritt 920, also dem Löschen der unvollständig gelöschten Speicherseite Pb. Weist der Sektor hingegen eine Speicherseite mit einem gesetzten TearingFlag TF1, deren TearingFlag TF2 jedoch nicht gesetzt ist, und eine gelöschte Speicherseite auf, so ist die Unterbrechung der Versorgungsspannung am Ende des Verfahrensschritts 920, also dem Löschen der Speicherseite Pb, erfolgt, so dass in diesem Fall der Tearingservicealgorithmus mit Schritt 930 fortgeführt werden kann.
  • In dem Schritt 930 wird das TearingFlag TF2 der Speicherseite Pg gesetzt und in dem folgenden Schritt 940 der Inhalt der Speicherseite Pg mit einem entsprechend erhöhten DisturbCounter in die Spare-Page Pb kopiert. Das Setzen des zweiten TearingFlags TF2 in der Speicherseite Pg markiert also den Übergang von dem Löschen der Speicherseite Pb (Schritt 920) zu dem Schritt des Schreibens der Speicherseite Pb (Schritt 940).
  • Weist also der Sektor des Speichers eine Speicherseite mit beiden gesetzten TearingFlags TF1 und TF2, also die Speicherseite Pg**, und eine fehlerhafte Speicherseite auf, dann wurde der Tearingservicealgorithmus im Bereich der Verfahrensschritte 940 und/oder 950 unterbrochen. Da in diesem Fall die Speicherseite Pb, also die ehemalige Spare-Page, nicht wieder gelöscht werden kann, da es in diesem Fall zu einem Verlust der Information bezüglich der Störung in Form des entsprechend erhöhten DisturbCounters kommen kann, muss die Speicherseite Pb zunächst fertig geschrieben werden. Da jedoch feststeht, welche Information in die Speicherseite Pb geschrieben werden soll, nämlich der Inhalt der Speicherseite Pg mit einem entsprechend erhöhte DisturbCounter und den gelöschten TearingFlags, also der Resolventen von Pg**, ist dies prinzipiell möglich. Problematisch hieran ist jedoch, dass die Speicherseite Pb etwas mehr als einen Schreibvorgang erfahren hat. Prinzipiell kann die Speicherseite Pb bis zu drei Schreibvorgängen hierbei unterworfen werden. Hierdurch besteht ein gewisses Risiko, dass aufgrund der mit dem Programmieren bzw. Schreiben der Speicherseite Pb einhergehenden Störungen auch die gelöschten Bits, also die Bits der Seite, deren Wert 0 ist, nicht mehr optimal sind. Als Folge kann es zu einer reduzierten Lebenserwartung der in der betreffenden Speicherseite abgelegten Daten, also zu einer reduzierten Daten-Gewährleistung von beispielsweise 10 Jahren kommen.
  • Aus diesem Grund wird im Rahmen des Verfahrens nach dem Stand der Technik die Speicherseite Pb innerhalb des Tearingservi cealgorithmus noch einmal sauber kopiert werden. Zu diesem Zweck muss vorher jedoch die Speicherseite Pg** gelöscht werden, um eine Spare-Page zu erhalten. Darüber hinaus muss sichergestellt werden, dass die Information, dass die Seite Pb erneut kopiert werden muss, nicht verloren geht. Dies wird in dem Verfahren gemäß dem Stand der Technik durch Einführen eines Schrittes des Kopierens 960 realisiert. Im Rahmen des Schrittes 960 wird die Speicherseite Pb tatsächlich zu Ende geschrieben, wobei jedoch das TearingFlag TF1 der Speicherseite Pb gesetzt wird.
  • Nach Abschluss des Schrittes 960 wird, wie in 6 dargestellt, das Verfahren nach dem Stand der Technik mit dem Schritt 950, also dem Löschen der Speicherseite Pg, fortgesetzt, um eine Spare-Page zu erhalten.
  • In diesem Fall weist jedoch die Speicherseite Pb ein gesetztes TearingFlag TF1 auf, so dass der Tearingservicealgorithmus mit Schritt 930 erneut fortgesetzt wird, wobei die beiden Speicherseiten Pb und Pg ihre Rollen vertauschen. Hierdurch wird erreicht, dass die oben erläuterte Notwendigkeit eines neuen Kopierens der Speicherseite Pb realisiert wird.
  • Mit anderen Worten wird, nachdem Schritt 960 abgeschlossen ist, im Rahmen des Schrittes 950 schließlich die Speicherseite Pg** gelöscht und die Fallunterscheidung führt zurück zu Schritt 930, um den erwähnten Kopiervorgang auszuführen. Wie bereits erläutert wurde, ist der Tearingservicealgorithmus in dem Fall, dass der Schritt 960 nicht ausgeführt wurde, dass also die Speicherseite Pb nicht über ein gesetztes TearingFlag TF1 verfügt, abgeschlossen und wird daher beendet.
  • Ein wesentlicher Nachteil des Verfahrens nach dem Stand der Technik besteht darin, dass diese Methode nur in voll initialisierten Sektoren funktioniert, in denen also nur genau eine gelöschte Speicherseite als Spare-Page im Normalbetriebsmodus bzw. im Normalfall vorhanden ist. Dies liegt daran, dass nur in einem voll initialisierten Sektor der Verfahrensschritt 960 problemlos ausgeführt werden kann. Unter normalen Betriebsumständen, also im normalen Betriebsmodus, kann es nur eine fehlerhafte Speicherseite geben. Aus diesem Grund ist klar, welche halbgeschriebene Speicherseite im Rahmen des Verfahrensschrittes 960 zu Ende geschrieben werden kann bzw. muss. Im Falle eines nur teilinitialisierten Sektors ist es hingegen möglich, dass mehr als eine Speicherseite als mögliche Zielspeicherseite für den Verfahrensschritt 960 in Frage kommt. Sollte beispielsweise die Speicherseite Pb bereits in einem gelöschten Zustand vorliegen und eine andere Speicherseite, die beispielsweise aufgrund einer bis dato unauffällig schlechten Löschung nun im Rahmen eines EDC-Verfahrens oder eines ECC-Verfahrens einen Fehler produziert, so kommt es zu einem Informationsverlust, wenn im Rahmen des in 6. erläuterten Verfahrens nach dem Stand der Technik der Inhalt der Speicherseite Pg über diese, schlecht gelöschte Speicherseite kopiert bzw. geschrieben wird. In diesem Fall würde eine fehlerhafte Speicherseite erzeugt, die einer nachträglichen Überprüfung im Rahmen eines ECC-Verfahrens oder EDC-Verfahrens unter Umständen nicht standhält. Da aufgrund des dem Schritt 960 folgenden Löschschritts 950 die Speicherseite Pg** gelöscht wird, besteht die große Gefahr, dass aufgrund des Verfahrens zum Behandeln eines Zustands eines Speichers nach dem Stand der Technik in Informationsverlust bzw. ein Datenverlustauftritt.
  • Ein weiterer Nachteil dieser Methode bzw. des Verfahrens nach dem Stand der Technik stellt der notwendige „Seiteneinstieg" in den Verfahrensschritt 960 dar, der sehr oft, insbesondere im Vorliegen von Hardwareschwächen, zu Problemen führt. Genauer gesagt besteht dieses zweite, sehr gravierende Problem darin, dass wiederum ein Informationsverlust auftreten kann. Unter der Voraussetzung, dass der Tearingservicealgorithmus bis zum Beginn des Schrittes 950, also dem Löschen der Speicherseite Pg, ausgeführt wurde, so dass die Speicher seite Pg** bereits angelöscht ist und somit „wackelige" Daten enthält, kann es geschehen, dass diese Speicherseite bei einer ersten Analyse nicht als fehlerhaft erkannt wird. In diesem Fall wird im Rahmen des Verfahrensschritts 960 der Inhalt dieser eventuell bei einem zweiten Ausleseversuch fehlerhaften Speicherseite in die Speicherseite Pb geschrieben, so dass somit die Speicherseite Pb nachträglich mit falschen Informationen überschrieben wird, was letztendlich zu einer Zerstörung der in der Speicherseite Pb gespeicherten Daten führen kann. Da anschließend in dem Verfahrensschritt 950 wiederum die Speicherseite Pg gelöscht wird, führt dies wiederum unweigerlich zu einem Informationsverlust.
  • Die DE 10340010 A1 bezieht sich auf ein Verfahren und eine Vorrichtung zum sicheren Speichern von Daten in mindestens einem Speicherbereich eines wiederbeschreibbaren Speichers, wobei beim Schreiben oder Löschen in den ersten Speicherbereich in zumindest einen zweiten Speicherbereich Statusinformationen über den Zustand des ersten Speicherbereichs geschrieben werden, die zumindest die Zustände „vollständig programmiert", „unvollständig programmiert", „vollständig gelöscht" und „unvollständig gelöscht" charakterisieren. Ferner beschreibt das Dokument eine Speichereinheit zum sicheren Speichern von Daten, insbesondere zur Durchführung des oben beschriebenen Verfahrens.
  • Ausgehend von diesem Stand der Technik besteht die Aufgabe der vorliegenden Erfindung darin, ein sichereres Verfahren und eine sicherere Vorrichtung zum Schreiben in eine Zielspeicherseite zu schaffen.
  • Diese Aufgabe wird durch ein Verfahren zum Schreiben in eine Zielspeicherseite gemäß Anspruch 1, eine Vorrichtung zum Schreiben in eine Zielspeicherseite eines Speichers gemäß Anspruch 8 und ein Software-Programm-Produkt gemäß Anspruch 17 gelöst.
  • Bei dem erfindungsgemäßen Verfahren zum Schreiben in eine Zielspeicherseite eines Speichers, der ferner eine Ausgangsspeicherseite aufweist, wobei der Ausgangsspeicherseite ein Markierungsspeicher zugeordnet ist, der eine Information enthält, die anzeigt, ob ein Inhalt der Ausgangsspeicherseite korrekt in die Zielspeicherseite geschrieben ist, wird in einem ersten Schritt bestimmt, ob die Zielspeicherseite einen Fehler aufweist, falls die Zielspeicherseite einen Fehler aufweist, die Zielspeicherseite gelöscht, falls der Markierungsspeicher der Ausgangsspeicherseite anzeigt, dass die Zielspeicherseite nicht korrekt geschrieben ist, die Zielspeicherseite basierend auf der Ausgangsspeicherseite geschrieben, wenn die Zielspeicherseite korrekt geschrieben ist, der der Ausgangsspeicherseite zugeordnete Markierungsspeicher so geändert, dass der Markierungsspeicher anzeigt, dass die Zielspeicherseite korrekt geschrieben ist, und falls der Markierungsspeicher der Ausgangsspeicherseite anzeigt, dass die Zielspeicherseite korrekt geschrieben ist, die Ausgangsspeicherseite gelöscht.
  • Der vorliegenden Erfindung liegt die Erkenntnis zugrunde, dass bei einem in Speicherseiten bzw. Seiten organisierten Speicher durch Verwenden eines der Ausgangsspeicherseite zugeordneten Markierungsspeichers, in dem eine Information abgelegt wird, dass die Zielspeicherseite erfolgreich und damit korrekt geschrieben wurde, zu einer Vereinfachung des Verfahrens bzw. des Algorithmus bei einer gleichzeitigen Verbesserung des Schutzes gegen Angriffe und Informationsverlust erzielt werden kann. Insbesondere ermöglicht das erfindungsgemäße Verfahren ein Vermeiden des Auftretens von Informationsverlusten durch eine Unterbrechung einer Versorgungsspannung bzw. Versorgungsleistung, die auch als Tearing bezeichnet wird, indem in dem der Ausgangsspeicherseite zugeordneten Markierungsspeicher eine Information abgelegt wird, die anzeigt, dass der Zielspeicherbereich erfolgreich geschrieben wurde. Hierdurch ist eine klare Unterscheidung möglich, ob der Schreibvorgang erfolgreich durchgeführt wurde, so dass die Ausgangsspeicherseite sicher und gefahrlos gelöscht werden kann, ohne dass ein Informationsverlust auftritt.
  • Hierdurch wird darüber hinaus ein Angriffsszenario auf den Speicher oder eine Prozessoreinrichtung, die den Speicher umfasst, das auf eine „gezielte" Veränderung von in dem Speicher abgelegten Informationen bzw. Daten abzielt, effizient verhindert. Besonders vorteilhaft an dem erfindungsgemäßen Verfahren ist somit, dass ein Informationsverlust durch eine Unterbrechung der Versorgungsspannung, die von einem Angreifer ausgenutzt werden könnte und damit einen Angriffspunkt auf den Speicher darstellt, verhindert wird.
  • Ein weiterer Vorteil besteht darin, dass der zusätzliche Speicherbedarf für den Markierungsspeicher äußerst gering ist. Zur Speicherung der Information, dass ein Schreibvorgang erfolgreich durchgeführt wurde, reicht ein einzelnes, zusätzliches Bit, das beispielsweise der Ausgangsspeicherseite angehören kann oder auch in einem (physikalisch) getrennten Speicherbereich abgelegt werden kann.
  • Ein weiterer Vorteil des erfindungsgemäßen Verfahrens besteht darin, dass das Verfahren zu keiner oder nur einer sehr geringfügigen Verlangsamung des Schreibens in einen Zielspeicherbereich führt, da eine Kontrolle, ob die Zielspeicherseite korrekt geschrieben wurde, leicht und sehr effizient durchgeführt werden kann. Sowohl der Zeitaufwand als auch der logistische Aufwand bezüglich weiterer Schaltungen zur Kontrolle, ob die Zielspeicherseite korrekt geschrieben wurde, sind äußerst gering. So kann beispielsweise eine Überprüfung einer Parität einer Speicherseite, eines Datenworts oder eines Bytes ohne zusätzlichen Zeitaufwand durchgeführt werden.
  • Der zu Beginn des erfindungsgemäßen Verfahrens durchgeführte anfängliche Löschschritt der Zielspeicherseite, falls diese einen Fehler aufweist, sorgt dafür, dass in dem Speicher saubere und definierte Bedingungen vorherrschen. Dies ermöglicht einen Verzicht auf komplizierte Fallunterscheidungen und führt damit zu einer signifikanten Vereinfachung des Algorithmus bzw. des Verfahrens.
  • Wie die Ausführungsbeispiele zeigen werden, kann auch eine Verwendung eines DisturbCounters für jede Speicherseite bzw. auf einen Zähler zur Überwachung der Anzahl von Schreibvorgängen in einem Sektor des Speichers, der nicht den Inhalt der betreffenden Speicherseite verändert, entfallen. Dies liegt daran, dass ein Umkopieren bzw. Refresh einer Speicherseite nach einer Strategie erfolgen kann, die auf eine Aus wertung eines DisturbCounters nicht angewiesen ist. Hierbei kann es sich beispielsweise um eine auf Basis von (Pseudo-) Zufallszahlen arbeitende Strategie oder eine andere deterministische oder zufällige Strategie handeln. Hierdurch kann sowohl das erfindungsgemäße Verfahren als auch die Gesamtgeschwindigkeit der den Speicher umfassenden Prozessoreinrichtung deutlich gesteigert werden, da aufgrund der fehlenden Auswertung der DisturbCounter der Speicherseiten eine deutliche Zeitersparnis realisiert werden kann.
  • Ein weiterer Vorteil des erfindungsgemäßen Verfahrens zum Schreiben in eine Zielspeicherseite eines Speichers stellt, wie die Ausführungsbeispiele zeigen werden, die Möglichkeit dar, auch auf nicht voll initialisierten Sektoren operieren zu können. Hierdurch ermöglicht das erfindungsgemäße Verfahren zum Schreiben in eine Zielspeicherseite eine erhebliche flexiblere Programmierung von Prozessoren, Chips, Chipkarten und anderen Prozessoreinrichtungen, da beispielsweise eine Formatierung bzw. Vollinitialisierung des Speichers entfallen kann. So ist es möglich, an die Stelle der Vollinitialisierung eine bedarfsgerechte Teilinitialisierung einzelner Sektoren oder einzelner Speicherseiten eines Sektors durchzuführen. Dies ermöglicht neben einer flexibleren Programmierung wiederum einen Zeitgewinn bzw. eine Steigerung der Betriebsgeschwindigkeit, da auf eine zeitintensive Vollinitialisierung des Speichers verzichtet werden kann.
  • Wie die Ausführungsbeispiele zeigen werden, kann beispielsweise durch Einführen eines weiteren Bits in den Markierungsspeicher, der der Ausgangsspeicherseite zugeordnet ist, eine Markierung eingebracht werden, die anzeigt, dass die Zielspeicherseite basierend auf der Ausgangsspeicherseite geschrieben werden soll. Hierdurch ist es möglich, basierend auf dem in dem Markierungsspeicher abgespeicherten Wert und dem Zustand der Zielspeicherseite, also der Überprüfung, ob die Zielspeicherseite beispielsweise einen Fehler aufweist oder gelöscht ist, weitere Verfahrensschritte bedarfsgerecht auszuführen. So kann beispielsweise, wenn der Markierungsspeicher der Ausgangsspeicherseite anzeigt, dass die Zielspeicherseite geschrieben werden soll, dies jedoch noch nicht korrekt geschehen ist, die Zielspeicherseite in einem weiteren Löschschritt gelöscht werden. Analog kann, wenn der Markierungsspeicher anzeigt, dass die Zielspeicherseite geschrieben werden soll, dies jedoch noch nicht korrekt geschehen ist, und die Zielspeicherseite in einem gelöschten Zustand vorliegt, das Verfahren mit einem weiteren Schritt des Löschens und des anschließenden Schreibens der Zielspeicherseite oder dem Schreiben der Zielspeicherseite fortgesetzt werden.
  • Darüber hinaus kann in weiteren Verfahrensschritten überprüft werden, ob und gegebenenfalls welche Speicherseiten des Speichers, die nicht die Zielspeicherseite sind, einen Fehler aufweisen, so dass diese gegebenenfalls in einem weiteren Verfahrensschritt gelöscht werden. Hierdurch ist es möglich, den Speicher vor Beginn des eigentlichen Schreibens in eine Zielspeicherseite eines Speichers den Speicher als Ganzes bzw. einen Sektor des Speichers als Ganzes in einen definierten Ausgangszustand zu bringen.
  • So liegt der vorliegenden Erfindung die Tatsache zugrunde, dass sich einerseits das in den einführenden Abschnitten der vorliegenden Anmeldung geschilderte Problem von Störungen, also das Disturb-Problem, als nicht sehr relevant herausgestellt hat. Eine genaue Protokollierung der Störungen für den normalen Betriebsfall ist daher nicht notwendig, so dass der Refresh der Speicherseiten auf eine andere, beispielsweise eine randomisierte Weise sichergestellt werden kann. Darüber hinaus ist es möglich, Probleme, die durch einen Tearing-Angriff hervorgerufen werden, über fehlerkorrigierende Codes (ECC = error correcting codes) und/oder fehlererkennende Codes (EDC = error detecting codes) abzufangen. Der Angreifer mag vielleicht in der Lage sein, einen Sektor des Speichers durch Störungen (Disturbs) zu stören, er ist jedoch mit sehr hoher Wahrscheinlichkeit nicht in der Lage, hierdurch gezielte Bitänderungen hervorzurufen bzw. diese herzustellen. Das heißt, selbst wenn es einem Angreifer möglich ist, den Sektor zu stören, was jedoch mehr als fraglich ist, so sind die Daten eher zufällig als planvoll arrangiert. Ein solcher Zustand lässt sich jedoch leicht mittels ECC-Verfahren und/oder EDC-Verfahren erkennen.
  • Außerdem ist der Aufwand, um beispielsweise eine Chipkarte oder eine andere Prozessoreinrichtung, die den Speicher umfasst, mit vielen Disturbs zu belegen, typischerweise sehr hoch. Aus diesem und den anderen oben geschilderten Gründen ist die Wahrscheinlichkeit, mit Hilfe eines Tearing-Angriffs auf eine Karte bzw. Chipkarte einen Erfolg zu erzielen, sehr gering. Dies liegt nicht zuletzt daran, dass eine sehr hohe Gefahr besteht, dass nach einem erfolglosen Tearing-Angriff die Chipkarte nicht mehr verwendet werden kann und damit für den Angreifer nutzlos geworden ist.
  • Diese beiden Beobachtungen stellen Erleichterungen dar, die sich das erfindungsgemäße Verfahren zum Schreiben in einen Zielspeicherbereich zunutze macht. So ist es nicht mehr notwendig, insbesondere ausnahmslos alle Störungen (Disturbs) zu protokollieren, so dass Seiteneinstiege im Rahmen des erfindungsgemäßen Verfahrens vermieden werden können, da diese insbesondere im Falle des Vorliegens von Hardwareschwächen sehr häufig zu Problemen führen können.
  • Wie bereits erwähnt, ist das erfindungsgemäße Verfahren auch in der Lage, mit nur teilinitialisierten Sektoren arbeiten zu können, wie dies bei vielen modernen Speicher-Konzepten bzw. Chipkarten-Konzepten vorgesehen ist.
  • Bevorzugte Ausführungsbeispiele der vorliegenden Erfindung werden nachfolgend Bezug nehmend auf die beiliegenden Zeichnungen näher erläutert. Es zeigen:
  • 1 ein Blockschaltbild einer erfindungsgemäßen Vorrichtung zum Schreiben in eine Zielspeicherseite;
  • 2 ein Teilflussdiagramm des erfindungsgemäßen Verfahrens zum Schreiben in eine Zielspeicherseite;
  • 3 ein Teilflussdiagramm des erfindungsgemäßen Verfahrens zum Schreiben in eine Zielspeicherseite;
  • 4 eine Darstellung des Speicherinhalts zweier Speicherseiten im Rahmen des erfindungsgemäßen Verfahrens;
  • 5 eine Darstellung eines Speichers gemäß dem Stand der Technik;
  • 6 ein Flussdiagramm eines Verfahrens zum Behandeln eines Zustands eines Speichers nach dem Stand der Technik; und
  • 7 eine Darstellung des Inhalts zweier Speicherseiten im Rahmen des Verfahrens zum Behandeln eines Zustands eines Speichers nach dem Stand der Technik.
  • Bezug nehmend auf die 1-4 wird nun ein erstes Ausführungsbeispiel einer erfindungsgemäßen Vorrichtung zum Schreiben in eine Zielspeicherseite eines Speichers beschrieben. Auf ähnliche Objekte und Elemente mit gleichen oder ähnlichen funktionalen Eigenschaften wird im weiteren Verlauf der Anmeldung hingewiesen.
  • 1 zeigt ein schematisches Blockschaltbild einer erfindungsgemäßen Vorrichtung 100 zum Schreiben in eine Zielspeicherseite eines Speichers 110. Der Speicher 110 weist eine Mehrzahl von Speicherseiten 120-1 bis 120-n auf, die beispielsweise in Sektoren organisiert sein können. Ist der Speicher 110 in Sektoren organisiert, so bietet es sich beispielsweise an, Speicherseiten 120-1 bis 120-n in einem Sektor zusammenzufassen, die sich im Rahmen eines Schreibvorgangs gegenseitig beeinflussen bzw. stören. Handelt es sich beispielsweise bei dem Speicher 110 um einen EEPROM-Speicher (EEPROM = electrically erasable read only memory = elektrisch löschbarer Nur-Lese-Speicher), so werden vorzugsweise Speicherseiten bzw. Speicherzellen in einem Sektor zusammengefasst, die sich im Rahmen eines Schreibvorgangs gegenseitig durch den als Drain-Disturb-Prozess bekannten Vorgang gegenseitig stören. Diese Störungen bzw. Disturbs führen dazu, dass bei einem Schreiben in eine Speicherseite des Sektors auch die anderen, nicht von dem Schreibvorgang betroffenen Speicherseiten in Mitleidenschaft gezogen werden. Hierdurch ist es bei diesen Speichertypen im Allgemeinen notwendig, die Speicherseiten 120-1 bis 120-n einer Strategie folgend, bei der es sich durchaus auch um eine zufällige Auswahl auf Basis einer (Pseudo-) Zufallszahl handeln kann, umzukopieren. Der Vorgang des Umkopierens wird hierbei auch als Refresh bezeichnet.
  • Handelt es sich um einen EEPROM-Speicher, so kann dieser in Form eines UCP-EEPROM (UCP-EEPROM = uniform channel programming electrically erasable read only memory = elektrisch löschbarer programmierbarer Nur-Lese-Speicher mit gleichförmiger Kanalprogrammierung) ausgeführt sein, um Fläche auf einem Chip, der den Speicher umfasst, einzusparen. Einzelheiten hierzu sind bereits in den einführenden Abschnitten der vorliegenden Anmeldung erläutert worden, weshalb an dieser Stelle auf die entsprechenden Abschnitte verwiesen wird.
  • Unabhängig davon, ob der Speicher 110 in Sektoren organisiert ist oder nicht, bietet es sich an, wenigstens eine sogenannte Spare-Page bzw. Leerseite bzw. Ausweichseite in dem Speicher 110 vorzusehen, so dass, beispielsweise im Rahmen einer Umprogrammierung einer Speicherseite bzw. im Rahmen eines Refreshs, die zu umprogrammierende Seite direkt in eine Seite, die keine Daten enthält, also die sogenannte Spare- Page zu kopieren, der Spare-Page eine logische Adresse zuzuordnen, so dass die Spare-Page die Rolle der ursprünglichen Speicherseite übernimmt. Anschließend kann die ursprüngliche Speicherseite gelöscht und somit zur neuen Spare-Page werden. Zu diesem Zweck weisen die Speicherseiten häufig einen Zuordnungsbereich bzw. Adressbereich bzw. MapBlock auf, in den die logische Adresse einer Speicherseite gespeichert wird. Nähere Erläuterungen zu dem Konzept der Spare-Page sind bereits in den einführenden Abschnitten der vorliegenden Anmeldung gemacht worden, so dass an dieser Stelle auf diese Abschnitte hiermit verwiesen wird.
  • Auch die Speicherseiten 120-1 bis 120-n des Speichers 110 weisen neben einem Datenbereich 130 und einem Markierungsbereich bzw. Markierungsspeicher 140 optional jeweils auch einen MapBlock 150 auf. Der Speicher 110 ist darüber hinaus mit einer Speichersteuereinrichtung 160 gekoppelt. Darüber hinaus ist die Speichersteuereinrichtung 160 über einen bidirektionalen Bus 170 mit einer nicht in 1 gezeigten externen Komponente gekoppelt, bei der es sich beispielsweise um einen Prozessor oder eine andere Prozessoreinrichtung einer Chipkarte, eines Computers, eines PDA (PDA = personal data assistant = persönlicher Datenassistent) handeln kann.
  • Die Markierungsbereiche 140 der Speicherseiten 120-1 bis 120-n dienen ebenso wie die Markierungsbereiche 830 der Speicherseiten 800-1 bis 800-5 zur Aufnahme von Informationen. Ebenso wie der Markierungsbereich 830 kann auch der Markierungsbereich 840 einer Speicherseite der Mehrzahl von Speicherseiten 120-1 bis 120-n zwei Bit umfassen, die im normalen Betriebszustand einen Wert 0 aufweisen. Genauer gesagt umfasst der Markierungsbereich 140 ein erstes TearingFlag TF1 und ein zweites TearingFlag TF2, deren Bezeichnung auf die Tatsache zurückgeht, dass diese im Rahmen eines sogenannten Tearingservicealgorithmus, der das erfindungsgemäße Verfahren zum Schreiben in eine Zielspeicherseite umfasst, verwendet werden. Hierbei bezeichnet ein „Tearing" eine Unterbrechung einer Versorgungsspannung bzw. Versorgungsleistung, wie dies bereits in den einführenden Abschnitten der vorliegenden Anmeldung erläutert wurde, auf die hiermit verwiesen wird.
  • Optional kann darüber hinaus jede Speicherseite 120-1 bis 120-n einen Zählerbereich aufweisen, in den ein Zählerwert abgespeichert wird, der beispielsweise eine Anzahl von Schreibvorgängen oder andere Systemereignisse anzeigt. Beispielsweise ist es möglich, in den Zählerbereich einen Alterszähler bzw. Agecounter zu implementieren, der eine Anzahl von Schreibvorgängen in den Speicher bzw. den betreffenden Sektor des Speichers anzeigt, um beispielsweise sicherzustellen, dass in den Speicher nicht häufiger geschrieben wird, als ein bestimmter Grenzwert dies zulässt. So kann mittels dieses Agecounters sichergestellt werden, dass der Speicher nicht länger in Betrieb bleibt, als die betreffenden EEPROM-Zellen dies sicher ohne Datenverlust ermöglichen, da gerade EEPROM-Zellen nur eine gewisse Anzahl von Schreibvorgängen unterworfen werden können, bevor diese aufgrund von Alterungserscheinungen eine kritische Fehleranfälligkeit aufweisen.
  • Die 2 und 3 zeigen jeweils ein Teilflussdiagramm eines Ausführungsbeispiels des erfindungsgemäßen Verfahrens zum Schreiben in eine Zielspeicherseite Pb eines Speichers 110. 2 zeigt hierbei die vorbereitenden Schritte sowie eine notwendige Fallunterscheidung, während in 3 das Teilflussdiagramm die weiteren Schritte des erfindungsgemäßen Verfahrens zum Schreiben in eine Zielspeicherseite Pb zeigt.
  • Nach einem Start des erfindungsgemäßen Verfahrens, beispielsweise im Rahmen eines Tearingservicealgorithmus, werden in einem ersten Schritt 200 die fehlerhaften Seiten bzw. Speicherseiten in einem Sektor bzw. in dem Speicher 110 bestimmt. Sind eine oder mehrere Speicherseiten 120-1 bis 120-n im Rahmen des Schrittes 200 als fehlerhaft erkannt worden, so werden diese in einem Schritt 210 gelöscht. Ist im Rahmen des Schrittes 200 keine Seite als fehlerhafte Seite erkannt worden, so wird der Schritt des Löschens der fehlerhaften Seiten 210 übersprungen.
  • Ein Fehlererkennungsverfahren, wie es im Zusammenhang mit dem erfindungsgemäßen Verfahren zum Schreiben in eine Zielspeicherseite eines Speichers 110 und im Rahmen einer erfindungsgemäßen Vorrichtung verwendet werden kann, besteht darin, dass aus dem Speicher 110 ein Prüfwert ausgelesen wird, der Inhalt der betreffenden Speicherseite ebenfalls ausgelesen wird, basierend auf dem Inhalt der Speicherseite ein Vergleichswert berechnet bzw. bestimmt wird und dieser mit dem Prüfwert verglichen wird. Weisen beide eine bestimmte Beziehung zueinander auf, stimmen also beispielsweise beide überein, liegt kein Fehler vor. Ein Beispiel für einen solchen Fehlererkennenden Code stellt die Paritätsüberprüfung dar.
  • In einem nächsten Schritt 220 wird überprüft, ob der Speicher 110 eine Speicherseite mit dem Markierungsbereich 140 aufweist, bei dem beide TearingFlags TF1 und TF2 gesetzt sind. Ist dies nicht der Fall, wird in einem Schritt 230 die Mehrzahl der Speicherseiten 120-1 bis 120-n auf eine Seite durchsucht, bei der der Markierungsbereich 140 ein gesetztes erstes TearingFlag TF1 aufweist. Ist dies nicht der Fall, ist also keine Speicherseite in dem Speicher 110 vorhanden, bei der das erste TearingFlag TF1 gesetzt bzw. geschrieben ist, so wird das erfindungsgemäße Verfahren zum Schreiben mit einem Schritt 240 des Markierens einer Ausgangsspeicherseite Pg fortgesetzt, der in 3 gezeigt ist. Bei dem Schritt des Markierens der Ausgangsspeicherseite Pg 240 wird das erste TearingFlag TF1 gesetzt, so dass sein Wert von 0 auf 1 geändert wird. In 3 ist dies durch die Bezeichnung Pg* gekennzeichnet. Eine solche Markierung eine Speicherseite ist im Rahmen des UCP-EEPROM-Konzepts möglich, wie dies bereits in den einführenden Abschnitten der vorliegenden Anmeldung erläutert wurde, auf die hiermit verwiesen wird. In einem nächsten Schritt 250 wird die Zielspeicherseite Pb gelöscht.
  • Hierdurch wird die Zielspeicherseite Pb zu einer Spare-Page des Speichers 110.
  • In einem nächsten Schritt 260 wird in die Zielspeicherseite bzw. die Spare-Page Pb basierend auf dem Inhalt der Ausgangsspeicherseite Pg ein Inhalt geschrieben. Im Rahmen dieses Schreibens, das in 3 auch als resolv(Pg*) bezeichnet ist, wird wenigstens das gesetzte erste TearingFlag TF1 der Ausgangsspeicherseite Pg nicht mitkopiert. Darüber hinaus kann im Rahmen des Schrittes 260 optional darüber hinaus der Inhalt des Datenbereichs 130 der Ausgangsspeicherseite Pg geändert werden. Im Falle eines einfachen Umkopierens bzw. Refreshs ist meist eine entsprechende Änderung des Datenbereichs 130 nicht notwendig. Weisen die Speicherseiten 120-1 bis 120-n einen optionalen Zählerbereich auf, wird dieser im Rahmen des Schreibens bzw. des Kopierens entsprechend erhöht. Mit anderen Worten wird im Rahmen des Schrittes 260 des Schreibens in die Zielspeicherseite Pb ein als Resolvente der Ausgangsspeicherseite Pg bezeichneter Inhalt geschrieben, der in den 3-5 auch als resolv(Pg*) oder r von (Pg*) bezeichnet wird.
  • In einem nächsten Schritt 270 wird die Ausgangsspeicherseite Pg durch Setzen des zweiten TearingFlags TF2 erneut markiert, was in 3 durch die Bezeichnung Pg** gekennzeichnet ist. Anschließend wird in einem darauffolgenden Schritt 280 die Ausgangsspeicherseite Pg, genauer gesagt die Ausgangsspeicherseite Pg**, gelöscht, so dass die Ausgangsspeicherseite Pg nun die Spare-Page des Speichers 110 bzw. des betreffenden Sektors darstellt.
  • 4 zeigt jeweils einen Inhalt der Ausgangsspeicherseite Pg und der Zielspeicherseite Pb als Abfolge von sechs Rechtecken dar. Hierbei bezeichnet jeweils die obere Hälfte der Rechtecke den Inhalt der Ausgangsspeicherseite Pg, während die untere Hälfte der Rechtecke den Inhalt der Zielspeicherseite Pb darstellt. Ausgehend von einem Zustand, in dem die Ausgangsspeicherseite Pg einen in 4 auch als Pg bezeichneten Inhalt und die Zielspeicherseite Pb einen als Pb bezeichneten Inhalt aufweisen, wird im Rahmen von Schritt 240 die Ausgangsspeicherseite Pg durch Setzen des ersten TearingFlags TF1 markiert, was in 4 durch Pg* bezeichnet ist. Anschließend wird in Schritt 250 die Zielspeicherseite Pb gelöscht, was in 4 durch Eintragen einer Ziffer 0 markiert ist. Anschließend wird in die Zielspeicherseite Pb im Rahmen von Schritt 260 die Resolvente der Ausgangsspeicherseite Pg geschrieben, was in 4 als r(Pg*) bezeichnet ist. Anschließend wird in Schritt 270 durch Setzen des zweiten TearingFlags TF2 der Ausgangsspeicherseite das erfolgreiche und korrekte Schreiben der Zielspeicherseite Pb gekennzeichnet. In dem abschließenden Schritt 280 wird die Ausgangsspeicherseite Pg gelöscht und damit zur Spare-Page, was in 4 wiederum durch Eintragen der Ziffer 0 gekennzeichnet ist.
  • Einen wesentlichen Punkt des erfindungsgemäßen Verfahrens zum Schreiben in eine Zielspeicherseite eines Speichers 110 stellt die Markierung der Ausgangsspeicherseite durch Setzen des zweiten TearingFlags TF2 dar, wenn die Zielspeicherseite korrekt geschrieben worden ist. Hierdurch und durch die anfängliche Überprüfung insbesondere der Zielspeicherseite im Rahmen des Schrittes 200 und des Löschens derselben, falls die Zielspeicherseite einen Fehler aufweist, ist ein Informationsverlust, wie er beispielsweise auf einen Tearing-Angriff zurückzuführen ist, ausgeschlossen. Um dies näher zu erläutern, werden im weiteren Verlauf der vorliegenden Anmeldung verschiedene Szenarien von Versorgungsspannungsunterbrechungen (Tearing) skizziert und erläutert.
  • Findet im Rahmen einer der Verfahrensschritte 200, 220 oder 230 eine Unterbrechung (Tearing) der Versorgungsspannung bzw. Versorgungsleistung statt, so hat dies keinen Einfluss auf die Datenintegrität der in dem Speicher 110 gespeicherten Daten, da im Rahmen dieser Schritte kein Löschen oder Schrei ben in eine Speicherseite durchgeführt wird. Findet im Rahmen des Schritts des Löschens der fehlerhaften Speicherseiten 210 ein Tearing statt, so entstehen je nach Stadium des Löschvorgangs, bei dem das Tearing stattgefunden hat, gelöschte Speicherseiten oder fehlerhafte Speicherseiten, die auf ein nicht abgeschlossenes Löschen der Speicherseiten zurückzuführen sind.
  • Gerade im Bereich von EEPROM-Speichern bzw. EEPROM-Speicherzellen benötigt sowohl das Löschen als auch das Schreiben eine gewisse Zeitspanne, in der auf einem Floatinggate eines EEPROM-Transistors bzw. eines Flash-FET (FET = Feldeffekt-Transistor) Ladung aufgebaut oder abgebaut wird. Wird nun im Rahmen dieser Zeitspanne die Versorgungsspannung bzw. die Versorgungsleistung unterbrochen, findet also ein Tearing statt, so ist dieser Vorgang nicht abgeschlossen, so dass abhängig von dem Zeitpunkt der Spannungsunterbrechung und der jeweiligen EEPROM-Speicherzelle diese noch nicht ihren Zustand geändert hat. Mit anderen Worten kann es dazu kommen, dass eine zu löschende Speicherzelle auf ihrem Floatinggate noch eine Ladung aufweist, so dass bei einem Auslesen der entsprechenden Speicherzelle diese als gesetzt erkannt wird. Ist hingegen bei einer weitere Speicherzelle der gleichen Speicherseite der Löschvorgang bereits so weit fortgeschritten, dass diese sicher als gelöscht erkannt wird, wird im Rahmen einer Fehlerüberprüfung ein Fehler erkannt. Darüber hinaus kann es auch passieren, dass auf einem Floatinggate einer EEPROM-Speicherzelle eine solche Ladung zurückbleibt, dass es von Betriebsparametern des Speichers 110 abhängt, ob die betreffende Speicherzelle einen Wert 1 oder einen Wert 0 aufweist. Beispiele hierfür stellen z. B. Fluktuationen der Versorgungsspannung oder andere Einflüsse dar.
  • Kommt es im Rahmen des Schrittes 240, also der Markierung der Ausgangsspeicherseite Pg, durch Setzen des ersten TearingFlags TF1 zu einem Tearing, hängt die weitere Behandlung davon ab, ob im Falle des Wiedereintretens in den Tearingser vicealgorithmus das erste TearingFlag TF1 der Ausgangsspeicherseite Pg als gesetzt oder als nicht gesetzt erkannt wird. Weist die Ausgangsspeicherseite Pg ein gesetztes erstes TearingFlag TF1 auf, so verzweigt das erfindungsgemäße Verfahren in Schritt 230 zu dem Schritt 250 des Löschens der Zielspeicherseite Pb. Andernfalls erfolgt ein Sprung in den Verfahrensschritt 240, so dass das TearingFlag TF1 der Ausgangsspeicherseite Pg erneut geschrieben wird.
  • Kommt es im Rahmen des Schrittes 250 des Löschens der Zielspeicherseite Pb zu einem Tearing, liegt mit hoher Wahrscheinlichkeit eine fehlerhafte Seite, die auch als „ungültige" Speicherseite oder erroneous Page bezeichnet wird, vor, so dass diese im Rahmen der Verfahrensschritte 200 und 210 nach der Wiederaufnahme des Tearingservicealgorithmus gelöscht wird.
  • Kommt es im Rahmen des Verfahrensschritts 260, also dem Schreiben der Zielspeicherseite Pb, zu einem Tearing, so wird ebenfalls mit hoher Wahrscheinlichkeit eine fehlerhafte Speicherseite zurückbleiben, die im Rahmen der Verfahrensschritte 200 und 210 nach dem Wiederaufnehmen des Tearingservicealgorithmus gelöscht wird. Anschließend tritt im Verfahrensschritt 230 die Markierung durch das erste TearingFlag TF1 der Ausgangsspeicherseite Pg auf, so dass in den beiden zuletzt diskutierten Fällen jeweils ein Sprung in den Verfahrensschritt 250, also in den Verfahrensschritt des Löschens der Zielspeicherseite Pb, erfolgt.
  • Erfolgt ein Tearing im Rahmen des Verfahrensschritts 270, also der zweiten Markierung der Ausgangsspeicherseite Pg, so hängt die weitere Fehlerbehandlung davon ab, ob das zweite TearingFlag TF2 im Rahmen des Wiedereinsetzens des Tearingservicealgorithmus als gesetzt erkannt wird oder nicht. Ist dies der Fall, so wird im Rahmen des Verfahrensschritts 220 das Verfahren mit dem Schritt 280 fortgesetzt, so dass die Ausgangsspeicherseite Pg gelöscht wird. Ist dies nicht der Fall, so wird aufgrund der Untersuchung im Rahmen des Verfahrensschritts 230 das erfindungsgemäße Verfahren mit dem Verfahrensschritt 250, dem Löschen der Zielspeicherseite 2b, fortgesetzt.
  • Tritt im Rahmen des Verfahrensschritts 280, also dem Löschen der Ausgangsspeicherseite Pg, ein Tearing auf, so wird mit hoher Wahrscheinlichkeit wiederum eine fehlerhafte Seite im Speicher 110 zurückbleiben, so dass diese bei einem nächsten Aufruf des Tearingservicealgorithmus in den Verfahrensschritten 200 und 210 gelöscht wird.
  • Das erfindungsgemäße Verfahren zum Schreiben in eine Zielspeicherseite eines Speichers unterscheidet sich somit von dem bekannten Tearingservicealgorithmus nach dem Stand der Technik im Wesentlichen in den folgenden Punkten, die abgeändert worden sind. Der Verfahrensschritt 960, bei dem es sich um einen „Seiteneinstieg" für den Fall gehandelt hat, in dem ein Tearing bereits stattgefunden hat, konnte ersatzlos gestrichen werden. Die Verfahrensschritte 930 und 940 des Verfahrens nach dem Stand der Technik, die den Verfahrensschritten 270 und 260 des erfindungsgemäßen Verfahrens gleichen, sind in ihrer Reihenfolge vertauscht worden. Während das zweite TearingFlag TF2 im Rahmen des Verfahrens nach dem Stand der Technik das Löschen der Zielspeicherseite Pb markiert hat, wird im erfindungsgemäßen Verfahren durch das Setzen des zweiten TearingFlags TF2 das erfolgreiche Schreiben der Zielspeicherseite Pb angezeigt. Darüber hinaus kann im Rahmen des erfindungsgemäßen Verfahrens im Vergleich zu dem Verfahren nach dem Stand der Technik die Schleife am Ende, also die Schleife, die im Falle der Markierung der Zielspeicherseite Pb durch das erste TearingFlag TF1 ausgelöst wird und zu Schritt 930 zurückführt, ebenfalls ersatzlos gestrichen werden. Darüber hinaus weist das erfindungsgemäße Verfahren zum Schreiben in eine Zielspeicherseite eines Speichers 110 in Form der Verfahrensschritte 200 und 210 eine Löschroutine auf, die das Verfahren nach dem Stand der Technik nicht enthält.
  • Aufgrund des Wegfalls des „Seiteneinstiegs" in Form des Verfahrensschritts 960 im Rahmen des Verfahrens nach dem Stand der Technik im Vergleich zu dem erfindungsgemäßen Verfahren, bei dem es insbesondere im Falle von Hardwareschwächen zu Problemen kommen kann, ist es möglich, auch in teilinitialisierten Sektoren bzw. teilinitialisierten Speichern zu arbeiten, da das erfindungsgemäße Verfahren nicht mehr darauf angewiesen ist, dass genau eine Spare-Page in dem Sektor bzw. dem Speicher 110 enthalten ist. Dies stellt einen erheblichen Vorteil dar, da es bei modernen Chipkarten-Konzepten und modernen Speicher-Konzepten so ist, dass nicht mehr alle Speicherseiten außer der als Spare-Page gekennzeichneten Speicherseite benutzt werden müssen. Es können somit mehrere gelöschte Speicherseiten nebeneinander im Rahmen der modernen Konzepte existieren. Weist beispielsweise ein Sektor 32 Daten-Speicherseiten auf, so dass dieser zusammen mit der Spare-Page insgesamt 33 Speicherseiten aufweist, so müssen im Rahmen der modernen Konzepte nicht mehr alle 32 Daten-Speicherseiten (Datenpage) verwendet werden.
  • Kommt es beispielsweise aufgrund von Hardwareschwächen zu Speicherseiten mit „wackligen" Daten, also Speicherseiten, bei denen ein Ausleseergebnis von Faktoren abhängt, die im normalen Betriebsmodus nicht mit einer ausreichenden Genauigkeit festgelegt bzw. fixiert werden können, so kann dies ebenso zu einem Datenverlust im Rahmen des Verfahrens nach dem Stand der Technik führen, wie dies der Fall ist, wenn mehr als eine Speicherseite leer und/oder fehlerbehaftet ist.
  • Diese beiden Probleme werden nun mit der neuen Methode gelöst. Insbesondere die Verfahrensschritte 910 und 920 des Verfahrens nach dem Stand der Technik und die Verfahrensschritte 240 und 250 des erfindungsgemäßen Verfahrens sind identisch. Mit anderen Worten stimmen die beiden Verfahren bis zu dem Schritt bzw. dem „Sprunglabel" 930 bzw. 260 überein.
  • Da jedoch im Rahmen des erfindungsgemäßen Verfahrens Störungen nicht mehr gezählt werden müssen, muss der Verfahrensschritt 960 des Verfahrens nach dem Stand der Technik nicht mehr benutzt werden, so dass das erfindungsgemäße Verfahren auch auf Sektoren bzw. Speichern 110 operieren kann, die mehr als eine Spare-Page bzw. mehr als eine gelöschte und/oder fehlerbehaftete Speicherseite aufweisen. Ein wesentlicher Grund ist, dass die Zahl der Störungen nicht mehr gezählt werden muss, fehlerhafte Speicherseiten also nicht mehr zu Ende geschrieben werden müssen, sondern, wenn eine Speicherseite, beispielsweise die Zielspeicherseite Pb, fehlerhaft ist, diese einfach gelöscht werden kann.
  • Dies bedeutet zwar, dass der zugrundeliegende Disturb bzw. die zugrundeliegende Störung „vergessen" wird, was aber unkritisch ist, wie oben erläutert wurde. Stattdessen kann die Ausgangsspeicherseite Pg nach einem Löschvorgang nochmals frisch in die Zielspeicherseite Pb geschrieben werden. Aus diesem Grund ist die Unterscheidung von „Löschen der Zielspeicherseite Pb" (Schritt 920) und „Schreiben der Zielspeicherseite Pb" (Schritt 940), wie sie im Rahmen des Verfahrens nach dem Stand der Technik durch den Schritt des Markierens 930 durch Setzen des zweiten TearingFlags TF2 erfolgt ist, nicht mehr notwendig. Vielmehr kann im Rahmen des erfindungsgemäßen Verfahrens aus diesem Grund direkt auf den Schritt des Löschens 250 (Schritt 920 des Verfahrens nach dem Stand der Technik) der Schritt des Schreibens 260 (Schritt 940 gemäß dem Verfahren nach dem Stand der Technik) folgen.
  • Tritt also eine fehlerhafte Speicherseite auf, insbesondere die Zielspeicherseite Pb, so wird diese zu Beginn des Verfahrens im Rahmen der Schritte 200 und 210 gelöscht und ein Sprung zu Schritt 260 des Schreibens der Zielspeicherseite Pb kann eingeleitet werden. Alternativ ist es auch möglich in dieser Konstellation zu Schritt 250, dem Löschen der Zielspeicherseite Pb, zu springen.
  • Hierdurch ist es möglich geworden, den Schritt 930 gemäß dem Verfahren nach dem Stand der Technik, also das Markieren der Zielspeicherseite Pb, durch Setzen des zweiten TearingFlags TF2, dazu zu verwenden, um den Verfahrensschritt des Schreibens der Zielspeicherseite Pb 260 (vergleiche Schritt 940 gemäß dem Verfahren nach dem Stand der Technik) von dem Schritt 280 des Löschens der zweifach markierten Ausgangsspeicherseite Pg* (vergleiche Schritt 950 gemäß dem Verfahren nach dem Stand der Technik) zu trennen. Hierdurch wird das Problem des Datenverlusts im Falle von „wackligen" Daten dadurch sauber gelöst, da die Zerstörung bzw. das Löschen der betreffenden Informationen, die in der Ausgangsspeicherseite Pg gespeichert sind, erst dann eingeleitet wird, wenn das zweite TearingFlag TF2 der Ausgangsspeicherseite Pg gesetzt worden ist, da dies im Rahmen des UCP-Speicherkonzeptes zerstörungsfrei möglich ist.
  • Sollten, wie oben bereits bemerkt, andere schlecht gelöschte Speicherseiten auftreten, so werden diese im Rahmen des Löschblocks, der die Verfahrensschritte 200 und 210 umfasst, am Anfang gelöscht. Eine Unterscheidung zwischen solchen Speicherseiten und der halb gelöschten bzw. halb geschriebenen Speicherseite Pb im Falle eines Tearings ist daher nicht mehr nötig.
  • Ein weiteres Ausführungsbeispiel der vorliegenden Erfindung besteht darin, dass das erfindungsgemäße Verfahren zum Schreiben in eine Zielspeicherseite eines Speichers nicht grundsätzlich ausgeführt wird, sondern nur im Rahmen des sogenannten Tearingservicealgorithmus, so dass im Rahmen des Schreibens der Resolventen der Ausgangsspeicherseite in die Zielspeicherseite eine wesentliche Änderung des Datenbereichs 130 nicht erfolgt. Das Verfahren, das auch in den 2-4 erläutert wurde, ändert sich in diesem Zusammenhang nicht.
  • Das Setzen des ersten TearingFlags TF1 im Rahmen des Schritts 240 kennzeichnet in diesem Fall das Eintreten in den Tearingservicealgorithmus.
  • Kommt es zu einem in den einführenden Abschnitten der vorliegenden Anmeldung beschriebenen Fälle A oder B, also zu einer Unterbrechung der Versorgungsspannung bzw. der Versorgungsleistung (Tearing) im Rahmen eines Schreibvorgangs (Fall A) oder am Ende einer Schreibroutine bzw. am Anfang einer darauffolgenden Löschroutine (Fall B), so liegt entweder ein Sektor bzw. der Speicher 110 mit einer „ungültigen" bzw. fehlerhaften Speicherseite (erroneous Page) im Fall A vor, oder es liegen zwei Speicherseiten im Fall B vor, die dieselbe logische Adresse im MapBlock 150 aufweisen. In diesem Fall bietet es sich beispielsweise an, die jüngere Speicherseite als die Ausgangsspeicherseite Pg und die ältere Speicherseite als die Zielspeicherseite Pb aufzufassen.
  • Im Fall B, also im Fall eines sogenannten DoubleMappings, bei dem zwei Speicherseiten derselben logischen Adresse im MapBlock 150 zugeordnet sind, ist das Ziel, die Speicherseite, die als Zielspeicherseite Pb bezeichnet wurde, zu löschen und anschließend die Ausgangsspeicherseite Pg sauber in die Zielspeicherseite zu schreiben bzw. zu programmieren. Dazu wird im Rahmen des Tearingservicealgorithmus das erfindungsgemäße Verfahren zum Schreiben in eine Zielspeicherseite ausgeführt. Da in diesem Fall der Sektor bzw. der Speicher 110 keine fehlerhaften Speicherseiten aufweist, wird der Vorgang mit Schritt 240 begonnen. Im Rahmen von Schritt 240 wird die Ausgangsspeicherseite Pg markiert. Dazu wird, wie bereits erläutert, ein Bit des Markierungsbereichs 140 der betreffenden Speicherseite Pg gesetzt. Alternativ kann dazu z. B. auch ein ungenutztes Bit aus dem MapBlock 150 herangezogen werden, so dass ein ausgewiesener Markierungsbereich 140 optional entfallen kann. Dieses Bit soll im Normalbetrieb immer im gelöschten Zustand vorliegen, also im Normalbetriebsmodus einen Wert 0 aufweisen. Es kommt nur im Rahmen des Tearingservicealgorithmus bzw. im Rahmen des Tearingservice zum Einsatz. Dieses Bit, das im weiteren Verlauf wiederum als erstes TearingFlag bezeichnet wird, wird nachprogrammiert und damit auf den Wert 1 „gezogen". Alle anderen Bits der betreffenden Speicherseite bleiben unverändert bzw. gleich. Wie bereits erläutert wurde, ist dies eine Aktion, die das UCP-Konzept zulässt. In den 2-4 ist eine mit dem ersten TearingFlag TF1 markierte Speicherseite mit einem Stern bezeichnet. Im Rahmen von Schritt 240 wird so aus der Ausgangsspeicherseite Pg die Speicherseite Pg*.
  • In Schritt 250 wird die Zielspeicherseite Pb gelöscht. Dies ist jetzt ohne Probleme möglich, da, wenn nun ein neues Tearing bzw. eine neue Unterbrechung der Versorgungsspannung auftritt, das gesetzte TearingFlag TF1 der Ausgangsspeicherseite Pg dies signalisiert. Das erste TearingFlag TF1 signalisiert also, dass der Tearingservicealgorithmus bzw. ein Tearingservice durchgeführt wurde und dieser später zu Ende geführt werden sollte.
  • Im Rahmen von Schritt 260 wird nun die gelöschte Speicherseite, also die neue Spare-Page bzw. die Zielspeicherseite Pb, kopiert. Die Ausgangsspeicherseite Pg* wird mit einem entsprechend erhöhten Agecounter als Resolvente resolv(Pg*) bezeichnet. Die Resolvente resolv(Pg*) weist im Unterschied zu der Speicherseite Pg* darüber hinaus ebenfalls ein nicht gesetztes bzw. gelöschtes TearingFlag TF1 auf.
  • In einem nächsten Schritt 270 wird die Ausgangsspeicherseite Pg, die den Inhalt Pg* aufweist, ein weiteres Mal markiert. Zu diesem Zweck kann ein zweites TearingFlag TF2 im Rahmen des Markierungsbereichs 140 verwendet werden. Alternativ dazu kann ein weiteres unbenutztes Bit der entsprechenden Speicherseite ähnlich dem ersten TearingFlag TF1 benutzt werden. Unabhängig davon, ob es sich um ein Bit des Markierungsbereichs 140 oder um ein anderes unbenutztes Bit handelt, wird dieses Bit als zweites TearingFlag TF2 bezeichnet. Auch das zweite TearingFlag TF2 bzw. das entsprechende Bit ist im Normalbetriebsmodus gelöscht und wird nur während eines Tearingservices auf 1 gesetzt. Dies geschieht an diesem Punkt des ablaufenden Vorgangs, also im Rahmen des Verfahrensschritts 270. Die Speicherseite Pg ist also nun doppelt markiert, was in den 3 und 4 mit Pg** bezeichnet ist.
  • Im Rahmen des Verfahrensschritts 280 wird nun die alte Speicherseite bzw. die Ausgangsspeicherseite Pg** gelöscht, so dass damit der Tearingservice bzw. der Tearingservicealgorithmus abgeschlossen ist. Mit dem Schritt 280 ist wiederum eine Spare-Page hergestellt und der Sektor ist wieder in einem gültigen Zustand.
  • Im Fall des Vorliegens von Fall A, also wenn der Sektor bzw. der Speicher 110 eine fehlerhafte bzw. „ungültige" Speicherseite aufweist, wird im Rahmen der Verfahrensschritte 200 und 210 diese gelöscht und anschließend wie beschrieben wurde das erfindungsgemäße Verfahren zum Schreiben in eine Zielspeicherseite im Rahmen des Tearingservicealgorithmus zu Ende geführt bzw. man geht zum Ende des erfindungsgemäßen Verfahrens vor.
  • Diese Ausführungsbeispiele haben gezeigt, dass das erfindungsgemäße Verfahren und die erfindungsgemäße Vorrichtung ein sicheres Programmieren eines UCP-EEPROM mit Spare-Pages unter Tearingbedingungen erlaubt. Auch wenn im Rahmen der vorliegenden Ausführungsbeispiele ein UCP-EEPROM-Speicher beschrieben wurde, ist das erfindungsgemäße Verfahren und die erfindungsgemäße Vorrichtung nicht auf solche Speicher beschränkt. Grundsätzlich ist das erfindungsgemäße Verfahren und die erfindungsgemäße Vorrichtung auf alle UCP-ähnlichen Festwertspeicher anwendbar, also auf alle Speichertypen, die in Speicherseiten organisiert sind und die eine Programmierung einzelner Bits erlauben, jedoch nur ein Löschen einer Speicherseite als Ganzes erlauben.
  • Darüber hinaus ist im Rahmen der vorliegenden Anmeldung grundsätzlich davon ausgegangen worden, dass ein Bit eines Speichers im gelöschten Zustand einen Wert 0 und im programmierten bzw. geschriebenen bzw. gesetzten Zustand einen Wert 1 aufweist. Grundsätzlich ist das erfindungsgemäße Verfahren und die erfindungsgemäße Vorrichtung auf diese Zuordnung jedoch nicht beschränkt. So kann durchaus ein gelöschtes Bit eines Speichers den Wert 1 und ein programmiertes Bit den Wert 0 aufweisen.
  • Der optionale MapBlock 150 kann alternativ zu dem in 4 gezeigten MapBlock 150 auch Teil eines (physikalisch) getrennten Speicherbereichs sein.
  • Abhängig von den Gegebenheiten kann das erfindungsgemäße Verfahren zum Schreiben in eine Zielspeicherseite eines Speichers in Hardware oder in Software implementiert werden. Die Implementierung kann auf einem digitalen Speichermedium, insbesondere einer Diskette, CD oder DVD mit elektronisch auslesbaren Steuersignalen erfolgen, die so mit einem programmierbaren Computersystem zusammenwirken können, dass das erfindungsgemäße Verfahren zum Schreiben in eine Zielspeicherseite eines Speichers ausgeführt wird. Allgemein besteht die Erfindung somit auch in einem Software-Programm-Produkt bzw. einem Computer-Programm-Produkt bzw. einem Programm-Produkt mit einem auf einem maschinenlesbaren Träger gespeicherten Programmcode zur Durchführung des erfindungsgemäßen Verfahrens, wenn das Software-Programm-Produkt auf einem Rechner oder einem Prozessor abläuft. In anderen Worten ausgedrückt kann die Erfindung somit als ein Computerprogramm bzw. Software-Programm bzw. Programm mit einem Programmcode zur Durchführung des Verfahrens realisiert werden, wenn das Programm auf einem Prozessor abläuft. Der Prozessor kann hierbei von einem Computer, einer Chipkarte (Smartcard) oder einem anderen integrierten Schaltkreis gebildet sein.
  • 100
    Vorrichtung
    110
    Speicher
    120-1
    Speicherseite
    120-n
    Speicherseite
    130
    Datenbereich
    140
    Markierungsbereich
    150
    MapBlock
    160
    Speichersteuereinrichtung
    170
    bidirektionaler Bus
    200
    Bestimmen fehlerhafter Speicherseiten
    210
    Löschen
    220
    Überprüfen
    230
    Überprüfen
    240
    Markieren
    250
    Löschen
    260
    Schreiben
    270
    Markieren
    280
    Löschen
    Pb
    Zielspeicherseite
    Pg
    Ausgangsspeicherseite
    TF1
    erstes TearingFlag
    TF2
    zweites TearingFlag
    resolv(Pg*)
    Resolvente der Ausgangsspeicherseite
    r(Pg*)
    Resolvente der Ausgangsspeicherseite
    Pg*
    markierte Ausgangsspeicherseite
    Pg**
    markierte Ausgangsspeicherseite
    800-1 bis 800-5
    Speicherseite
    810
    Datenbereich
    820
    MapBlock
    830
    Markierungsbereich
    840
    Zeitstempelbereich
    910
    Markieren
    920
    Löschen
    930
    Markieren
    940
    Kopieren
    950
    Löschen
    960
    Kopieren

Claims (17)

  1. Verfahren zum Schreiben in eine Zielspeicherseite (Pb) eines Speichers (110), der ausgebildet ist, um ein Setzen eines einzelnen Bits einer Speicherseite und ein Löschen der gesamten Speicherseite zu ermöglichen, der jedoch ein Löschen eines einzelnen Bits einer Speicherseite nicht ermöglicht, und der ferner eine Ausgangsspeicherseite (Pg) aufweist, wobei der Ausgangsspeicherseite (Pg) ein in der Ausgangsspeicherseite (Pg) umfasstes Bit (TF2) eines Markierungsspeichers (140) zugeordnet ist, wobei das Bit (TF2) des Markierungsspeichers (140) anzeigt, dass ein Inhalt der Ausgangsspeicherseite (Pg) korrekt in die Zielspeicherseite (Pb) geschrieben ist, wenn das Bit (TF2) des Markierungsspeichers (140) gesetzt ist, mit folgenden Schritten: Bestimmen (200), ob die Zielspeicherseite (Pb) einen Fehler aufweist; falls die Zielspeicherseite (Pb) einen Fehler aufweist, Löschen (210) der Zielspeicherseite (Pb); falls das Bit (TF2) des Markierungsspeichers (140) nicht gesetzt ist, Schreiben (260) der Zielspeicherseite (Pb) basierend auf der Ausgangsspeicherseite (Pg); wenn die Zielspeicherseite (Pb) korrekt geschrieben ist, Setzen (270) des Bits (TF2) des der Ausgangsspeicherseite (Pg) zugeordneten Markierungsspeichers (140), so dass das Bit (TF2) des Markierungsspeichers (140) anzeigt, dass die Zielspeicherseite (Pb) korrekt geschrieben ist; und falls das Bit (TF2) des Markierungsspeichers (140) der Ausgangsspeicherseite (Pg) gesetzt ist, Löschen (280) der Ausgangsspeicherseite (Pg), so dass das Bit (TF2) des Markierungsspeichers (140) der Ausgangsspeicherseite (Pg) gelöscht wird.
  2. Verfahren nach Anspruch 1, bei dem, falls das Bit (TF2) des Markierungsspeichers (140) nicht gesetzt ist, vor dem Schritt des Schreibens (260) der Zielspeicherseite (Pb) ein Schritt des Änderns (240) des Markierungsspeichers (140) erfolgt, so dass der Markierungsspeicher (140) anzeigt, dass die Zielspeicherseite (Pb) basierend auf der Ausgangsspeicherseite (Pg) geschrieben werden soll, und, falls das Bit (TF2) des Markierungsspeichers (140) gesetzt ist, nach dem Schritt des Löschens (280) der Ausgangsspeicherseite (Pg) der Markierungsspeicher (140) so geändert ist, dass derselbe nicht mehr anzeigt, dass die Zielspeicherseite (Pb) basierend auf der Ausgangsspeicherseite (Pg) geschrieben werden soll.
  3. Verfahren nach Anspruch 2, bei dem der Markierungsspeicher ein weiteres Bit (TF1) aufweist, wobei der Schritt des Änderns (240) des Markierungsspeichers (140), so dass dieser anzeigt, dass die Zielspeicherseite (Pb) basierend auf der Ausgangsspeicherseite (Pg) geschrieben werden soll, ein Setzen des weiteren Bits (TF1) umfasst, wobei der Schritt des Löschens der Ausgangsspeicherseite (Pg) ein Löschen des weiteren Bits (TF1) zur Folge hat, und wobei das weitere Bit (TF1) in der Ausgangsspeicherseite (Pg) umfasst ist.
  4. Verfahren nach einem der Ansprüche 2 oder 3, bei dem, falls der Markierungsspeicher (140) anzeigt, dass die Zielspeicherseite (Pb) basierend auf der Ausgangsspeicherseite (Pg) geschrieben werden soll, und das Bit (TF2) des Markierungsspeichers (140) nicht gesetzt ist, und die Zielspeicherseite (Pb) nicht gelöscht ist, vor dem Schritt des Schreibens (260) der Zielspeicherseite (Pb) ein Schritt des Löschens (250) der Zielspeicherseite (Pb) ausgeführt wird.
  5. Verfahren nach einem der Ansprüche 2 bis 4, bei dem, falls der Markierungsspeicher (140) anzeigt, dass die Zielspeicherseite (Pb) basierend auf der Ausgangsspeicherseite (Pg) geschrieben werden soll, und das Bit (TF2) des Markierungsspeichers (140) nicht gesetzt ist, und die Zielspeicherseite (Pb) gelöscht ist, vor dem Schritt des Schreibens (260) der Zielspeicherseite (Pb) ein Schritt des Löschens (250) der Zielspeicherseite (Pb) ausgeführt wird.
  6. Verfahren nach einem der vorhergehenden Ansprüche, das ferner vor dem Schritt des Schreibens (260) der Zielspeicherseite (Pb) basierend auf der Ausgangsspeicherseite (Pg) folgende Schritte aufweist: Überprüfen (200) aller Speicherseiten (120-1 bis 120-n), die nicht die Zielspeicherseite (Pb) sind, auf ein Vorliegen eines Fehlers; falls eine oder eine Mehrzahl von Speicherseiten (120-1 bis 120-n) jeweils einen Fehler aufweisen, Löschen (210) der einen Fehler aufweisenden Speicherseite oder Löschen (210) der Mehrzahl jeweils einen Fehler aufweisender Speicherseiten (120-1 bis 120-n).
  7. Verfahren nach einem der vorhergehenden Ansprüche, bei dem ein Schritt des Bestimmens oder des Überprüfens (200) einer Speicherseite oder einer Mehrzahl von Speicherseiten (120-1 bis 120-n) einen Schritt des Auslesens eines Inhalts einer Speicherseite oder einer Mehrzahl von Speicherseiten, ein Auslesen eines Prüfwerts, ein Berechnen eines Vergleichswerts basierend auf dem Inhalt der Speicherseite oder dem Inhalt der Mehrzahl von Speicherseiten und einen Schritt des Vergleichens des Prüfwerts und des Vergleichswerts umfasst, ob der Prüfwert und der Vergleichswert eine vorbestimmte Beziehung zueinander aufweisen.
  8. Vorrichtung (100) zum Schreiben in eine Zielspeicherseite (Pb) eines Speichers (110), der ausgebildet ist, um ein Setzen eines einzelnen Bits einer Speicherseite und ein Löschen der gesamten Speicherseite zu ermöglichen, der jedoch ein Löschen eines einzelnen Bits einer Speicherseite nicht ermöglicht, und der ferner eine Ausgangsspeicherseite (Pg) aufweist, wobei der Ausgangsspeicherseite (Pg) ein in der Ausgangsspeicherseite (Pg) umfasstes Bit (TF2) eines Markierungsspeichers (140) zugeordnet ist, wobei das Bit (TF2) anzeigt, dass ein Inhalt der Ausgangsspeicherseite (Pg) korrekt in die Zielspeicherseite (Pb) geschrieben ist, mit folgenden Merkmalen: einer Speichersteuereinrichtung (160), die mit dem Speicher (110) gekoppelt und ausgebildet ist, um zu bestimmen, ob die Zielspeicherseite (Pb) einen Fehler aufweist; falls die Zielspeicherseite (Pb) einen Fehler aufweist, die Zielspeicherseite (Pb) zu löschen, falls das Bit (TF2) nicht gesetzt ist, die Zielspeicherseite (Pb) basierend auf der Ausgangsspeicherseite (Pg) zu schreiben; wenn die Zielspeicherseite (Pb) korrekt geschrieben ist, das Bit (TF2) des der Ausgangsspeicherseite (Pg) zugeordneten Markierungsspeichers (140) zu setzen, so dass das Bit (TF2) des Markierungsspeichers (140) anzeigt, dass die Zielspeicherseite (Pb) korrekt geschrieben ist; und falls das Bit (TF2) des Markierungsspeichers (140) der Ausgangsspeicherseite (Pg) gesetzt ist, die Ausgangsspeicherseite (Pg) zu löschen.
  9. Vorrichtung (100) nach Anspruch 8, bei der die Speichersteuereinrichtung (160) ferner ausgelegt ist, um, falls das Bit (TF2) des Markierungsspeichers (140) nicht gesetzt ist, vor dem Schreiben der Zielspeicherseite (Pb) den Markierungsspeicher (140) zu ändern, so dass der Markierungsspeicher (140) anzeigt, dass die Zielspeicherseite (Pb) basierend auf der Ausgangsspeicherseite (Pg) geschrieben werden soll, und dass, falls das Bit (TF2) des Markierungsspeichers (140) gesetzt ist, nach dem Löschen (280) der Ausgangsspeicherseite (Pg) der Markierungsspeicher (140) so zu ändern, dass derselbe nicht mehr anzeigt, dass die Zielspeicherseite (Pb) basierend auf der Ausgangsspeicherseite (Pg) geschrieben werden soll.
  10. Vorrichtung nach Anspruch 8 oder 9, bei der der Markierungsspeicher ein weiteres Bit (TF1) aufweist, und wobei die Speichersteuereinrichtung ferner ausgebildet ist, um das weitere Bit (TF1) zu setzen, um den Markierungsspeicher (140) so zu ändern, dass dieser anzeigt, dass die Zielspeicherseite (Pb) basierend auf der Ausgangsspeicherseite (Pg) geschrieben werden soll, wobei ein Löschen der Ausgangsspeicherseite (Pg) ein Löschen des weiteren Bits (TF1) zur Folge hat, und wobei das weitere Bit (TF1) in der Ausgangsspeicherseite (Pg) umfasst ist.
  11. Vorrichtung nach einem der Ansprüche 8 bis 10, bei der die Speichersteuereinrichtung (160) ferner ausgebildet ist, um vor dem Schreiben der Zielspeicherseite (Pb) die Zielspeicherseite (Pb) zu löschen, falls der Markierungsspeicher (140) anzeigt, dass die Zielspeicherseite (Pb) basierend auf der Ausgangsspeicherseite (Pg) geschrieben werden soll, und das Bit (TF2) des Markierungsspeichers (140) nicht gesetzt ist, und die Zielspeicherseite (Pb) nicht gelöscht ist.
  12. Vorrichtung (100) nach einem der Ansprüche 8 bis 11, bei der die Speichersteuereinrichtung (160) ferner ausgebildet ist, um vor dem Schreiben der Zielspeicherseite (Pb) die Zielspeicherseite (Pb) zu löschen, falls der Markierungsspeicher (140) anzeigt, dass die Zielspeicherseite (Pb) basierend auf der Ausgangsspeicherseite (Pg) geschrieben werden soll, und nicht anzeigt, dass die Zielspeicherseite (Pb) korrekt geschrieben ist, und die Zielspeicherseite (Pb) gelöscht ist.
  13. Vorrichtung (100) nach einem der Ansprüche 8 bis 12, bei der die Speichersteuereinrichtung (160) ferner basierend auf der Ausgangsspeicherseite (Pg) alle Speicherseiten (120-1 bis 120-n) zu überprüfen, die nicht die Zielspeicherseite (Pb) sind, auf ein Vorliegen eines Fehlers, und, falls eine oder eine Mehrzahl von Speicherseiten (120-1 bis 120-n) jeweils einen Fehler aufweisen, die den Fehler aufweisende Speicherseite oder die Mehrzahl der jeweils einen Fehler aufweisenden Speicherseiten (120-1 bis 120-n) zu löschen.
  14. Vorrichtung (100) nach einem der Ansprüche 8 bis 13, bei der die Speichersteuereinrichtung (160) ferner ausgebildet ist, um die Überprüfung oder die Bestimmung auf ein Vorliegen eines Fehlers einer Speicherseite oder einer Mehrzahl von Speicherseiten (120-1 bis 120-n) den Wert der Speicherseite oder der Mehrzahl von Speicherseiten auszulesen, einen Prüfwert auszulesen, einen Vergleichswert auf Basis des Inhalts der Speicherseite bzw. auf Basis des Inhalts der Mehrzahl von Speicherseiten zu berechnen und den Prüfwert und den Vergleichswert auf ein Vorliegen einer vorbestimmten Beziehung zu vergleichen.
  15. Vorrichtung (100) nach einem der Ansprüche 8 bis 14, bei der die Speichersteuereinrichtung (160) ferner ausgebildet ist, um eine Speicherseite der Mehrzahl von Speicherseiten (120-1 bis 120-n) basierend auf einer Auffrischungsstrategie ohne einen Auffrischungszähler aufzufrischen.
  16. Vorrichtung (100) nach Anspruch 15, bei der die Speichersteuereinrichtung (160) ausgebildet ist, die Auffrischungsstrategie basierend auf einer (Pseudo-) Zufallszahl zu realisieren.
  17. Programm mit einem Programmcode zum Durchführen des Verfahrens zum Schreiben in eine Zielspeicherseite eines Speichers nach Anspruch 1, wenn das Programm auf einem Prozessor abläuft.
DE102006009214A 2006-02-28 2006-02-28 Verfahren und Vorrichtung zum Schreiben in eine Zielspeicherseite eines Speichers Active DE102006009214B4 (de)

Priority Applications (2)

Application Number Priority Date Filing Date Title
DE102006009214A DE102006009214B4 (de) 2006-02-28 2006-02-28 Verfahren und Vorrichtung zum Schreiben in eine Zielspeicherseite eines Speichers
US11/680,156 US7657795B2 (en) 2006-02-28 2007-02-28 Method and apparatus for writing to a target memory page of a memory

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE102006009214A DE102006009214B4 (de) 2006-02-28 2006-02-28 Verfahren und Vorrichtung zum Schreiben in eine Zielspeicherseite eines Speichers

Publications (2)

Publication Number Publication Date
DE102006009214A1 DE102006009214A1 (de) 2007-08-30
DE102006009214B4 true DE102006009214B4 (de) 2008-05-08

Family

ID=38319922

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102006009214A Active DE102006009214B4 (de) 2006-02-28 2006-02-28 Verfahren und Vorrichtung zum Schreiben in eine Zielspeicherseite eines Speichers

Country Status (2)

Country Link
US (1) US7657795B2 (de)
DE (1) DE102006009214B4 (de)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100073202A1 (en) * 2008-09-25 2010-03-25 Mazed Mohammad A Portable internet appliance
DE602008002278D1 (de) * 2007-05-02 2010-10-07 St Microelectronics Sa Nicht flüchtiger Speicher mit drehbaren Hilfssegmenten
US8255616B2 (en) * 2010-01-12 2012-08-28 Freescale Semiconductor, Inc. Non-volatile memory device and method therefor
CN102609334B (zh) * 2012-01-09 2016-05-04 晨星软件研发(深圳)有限公司 非易失闪存擦除异常存储块修复方法和装置
KR20170076878A (ko) * 2015-12-24 2017-07-05 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
WO2019112907A1 (en) 2017-12-06 2019-06-13 Rambus Inc. Error-correction-detection coding for hybrid memory module

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE10340010A1 (de) * 2003-08-29 2005-04-07 Infineon Technologies Ag Verfahren und Vorrichtung zum sicheren Speichern von Daten

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3489708B2 (ja) * 1996-10-23 2004-01-26 シャープ株式会社 不揮発性半導体記憶装置
ITRM20010647A1 (it) * 2001-11-02 2003-05-02 Micron Technology Inc Verifica di cancellazione a blocchi per memorie flash.
DE10322723B3 (de) 2003-05-20 2004-10-14 Infineon Technologies Ag Vorrichtung und Verfahren zum Behandeln eines Zustands eines Speichers
KR100704618B1 (ko) * 2004-01-19 2007-04-10 삼성전자주식회사 플래시 메모리의 데이터 복구 장치 및 방법

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE10340010A1 (de) * 2003-08-29 2005-04-07 Infineon Technologies Ag Verfahren und Vorrichtung zum sicheren Speichern von Daten

Also Published As

Publication number Publication date
DE102006009214A1 (de) 2007-08-30
US7657795B2 (en) 2010-02-02
US20070214329A1 (en) 2007-09-13

Similar Documents

Publication Publication Date Title
DE60213620T2 (de) Nichtflüchtiger speicher mit blocklöschung
DE60030876T2 (de) Bereichsverwaltung eines nichtflüchtigen Speichers mit hoher Kapazität
DE102006036070B4 (de) Ladungsfallenspeichervorrichtung und Verfahren für deren Herstellung und Betrieb
DE102006009214B4 (de) Verfahren und Vorrichtung zum Schreiben in eine Zielspeicherseite eines Speichers
DE102009051862A1 (de) Speichervorrichtung und Speicherverfahren
EP0067364B1 (de) Verfahren und Anordnung zum nichtflüchtigen Speichern des Zählerstandes einer elektronischen Zählschaltung
DE19839680B4 (de) Verfahren und Vorrichtung zur Veränderung des Speicherinhalts von Steuergeräten
DE69820164T2 (de) Speichervorrichtung sowie Datenlese- und Schreibverfahren
DE60222891T2 (de) Nichtflüchtige Speichervorrichtung und Selbstreparatur-Verfahren
DE102009033961A1 (de) Emulation eines einmal programmierbaren Speichers
DE112014000311T5 (de) Absichern der Inhalte einer Speichereinheit
DE102017120826A1 (de) Verfahren und Vorrichtung zum Überwachen von Speicher unter Verwendung einer Hintergrundmedienabtastung
EP3378006B1 (de) Verfahren zum laden eines sicheren speicherabbilds eines mikrocontrollers und anordnung mit einem mikrocontroller
DE69627595T2 (de) Halbleiterspeicher und Verfahren zum Ersetzen einer redundanten Speicherzelle
EP1611515B1 (de) Programmgesteuerte einheit
DE10322723B3 (de) Vorrichtung und Verfahren zum Behandeln eines Zustands eines Speichers
DE102005060901A1 (de) Verfahren zur Erkennung einer Versorgungsunterbrechung in einem Datenspeicher und zur Wiederherstellung des Datenspeichers
EP1559111B1 (de) Verfahren zum betreiben einer speicheranordnung
DE60009776T2 (de) Halbleiter-Festwertspeicher mit Einrichtung zum Ersetzen defekter Speicherzellen
DE102009055390B4 (de) Vorrichtung und Verfahren zum Schreiben von Daten, die zu speichern sind, in einen vorbestimmten Speicherbereich
EP2003566B1 (de) Verfahren und Steuergerät zum Betreiben eines nichtflüchtigen Speichers, insbesondere zum Einsatz in Kraftfahrzeugen
EP1569117A1 (de) Verfahren zum sicheren Berechnen einer Prüfsumme
EP2002446B1 (de) Verfahren zum betreiben einer speichereinrichtung mit markierung von als fehlerhaft erkannten speicherblöcken
EP0214390A1 (de) Freigabeverfahren für einen zugriffskontrollierten Anwenderspeicher und Anordnung zur Durchführung des Verfahrens
EP1564754A2 (de) Verfahren und Vorrichtung zur Verwaltung von Daten in einem nichtflüchtigen Datenspeicher

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8364 No opposition during term of opposition