-
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