-
Die
vorliegende Erfindung bezieht sich auf eine Speicherschaltung und
ein Verfahren zum Schreiben in einen Zielspeicherbereich, insbesondere
auf Speicherschaltungen mit nichtflüchtigen Speicherelementen,
beispielsweise auf integrierte Schaltungen (IC = integrated circuit)
für Chipkarten.
-
In
vielen Produkten werden heute nichtflüchtige Speicher (NVM = non-volatile
memory), wie Flash-Speicher, eingesetzt, beispielsweise im Bereich
eingebetteter bzw. integrierter Systeme, und hier insbesondere im
Bereich von Chipkarten-ICs. Bei der Programmierung bzw. bei dem
Schreiben von Daten treten in vielen Typen von nichtflüchtigen
Speichern, besonders bei flächenoptimierten
Typen von nichtflüchtigen
Speichern und hier insbesondere bei Flash-Speichern, das Problem
einer Verschiebung von Schwellenspannungen der in diesen Speichern verwendeten
Feldeffekttransistoren (Flash-FET eines Flash-Memory) auf. Das sich
hieraus ergebende Problem besteht darin, dass häufig nicht nur die Schwellenspannungen
der ausgewählten,
zu programmierenden Speicherzellen verändert werden, sondern auch
die Schwellenspannungen von im gleichen Sektor liegenden Speicherstellen
leicht verändert
werden, die eigentlich unverändert
bleiben sollten. Dieser Effekt bzw. Mechanismus wird auch als „Drain
Disturb" bezeichnet
und kann durch eine Akkumulation der Schwellenspannungsänderungen nach
vielen Programmierungen innerhalb des betreffenden Sektors zu einem
Datenverlust der gestörten Speicherzellen
führen.
Verhindert wird die zu starke Akkumulation von Störungen durch
ein rechtzeitiges Umkopieren und „Auffrischen" (Refresh) der betroffenen
Daten. Dieser Mechanismus wird als Störungsbehandlung oder auch als „Disturb-Handling" bezeichnet und kann
auf verschiedene Arten durchgeführt
werden.
-
Eine
Störungsbehandlung
besteht darin, einen Zählwert
bei jedem Programmiervorgang explizit mit abzuspeichern. Wird hierbei
die Differenz verschiedener Zählwerte
in einem Sektor zu groß, überschreitet
also einen vorbestimmten Wert, werden die Bereiche mit den kleinsten
Zählwerten
umkopiert, also einem Refresh unterzogen. Nachteilig bei diesem
Verfahren ist insbesondere die notwendige Implementierung des Zählwertes
in jedem getrennt programmierbaren Bereich (Page), die typischerweise bei
16 Bit oder 32 Bit je getrennt programmierbarem Bereich liegt und
somit typischerweise einen Bedarf von mehreren Prozent eines Speicherfeldes,
typischerweise von etwa 3% eines Speicherfeldes, aufweist. Nachteilig
ist darüber
hinaus auch das notwendige Durchsuchen aller Zählwerte innerhalb eines Sektors,
wenn in diesem Sektor Daten verändert
werden sollen. Diese Ausführungsform
der Störungsbehandlung
benötigt
somit einerseits eine große
Speichermenge zum Abspeichern der Zählwerte und andererseits eine
große
Laufzeit zum Durchsuchen und Auswerten der Zählwerte.
-
Eine
zweite Methode der Störungsbehandlung
besteht in einer zufälligen
Auswahl eines programmierbaren Bereichs für ein Auffrischen. Bei diesem
Verfahren wird bei jeder Programmierung eines Speicherbereichs eines
Sektors mit einer bestimmten Wahrscheinlichkeit zufällig entschieden,
ob ein ebenfalls zufällig
ausgewählter
Bereich innerhalb des gleichen Sektors umkopiert, also einem Refresh
unterworfen wird. Über
die Festlegung bzw. die Auswahl der Wahrscheinlichkeit für eine Umprogrammierung
wird nun sichergestellt, dass statistisch alle Bereiche rechtzeitig
umprogrammiert werden, bevor ein Datenverlust eintritt. Nachteilig
bei diesem Verfahren ist insbesondere die Tatsache, dass aufgrund
der statistischen Natur des Verfahrens entweder die Umprogrammierwahrscheinlichkeit,
und damit auch die Umprogrammierrate, so hoch gewählt werden
muss, um in jedem Fall ein rechtzeitiges Auffrischen der Daten zu
gewährleisten,
oder andererseits eine gewisse Wahrscheinlichkeit für einen
Datenverlust aufgrund eines nicht rechtzeitig durchgeführten Umkopierens eines
Bereichs in Kauf nehmen zu müssen.
Aufgrund der für
einen Flash-Speicher typischen Dauer eines Einschreibevorgangs im
Vergleich zu einem Lesevorgang wird so bei einer Umprogrammierungswahrscheinlichkeit,
die zu einer hohen Umprogrammierungsrate führt, die effektive Einschreibegeschwindigkeit,
die ein späterer
Nutzer bemerkt, stark reduziert. Darüber hinaus wird bei einer zu
hoch gewählten
Umkopierrate die Lebensdauer einer Speicherschaltung deutlich verkürzt, da
die mittlere Lebensdauer eines entsprechenden Speichersystems typischerweise
durch die Zahl der Schreibprozesse maßgeblich bestimmt wird, so
dass mit jedem Schreibvorgang, aber auch jedem Umkopiervorgang die
verbleibende Restlebensdauer verkürzt wird. Wird hingegen die
Umprogrammierwahrscheinlichkeit so gewählt, dass eine niedrige Umprogrammierrate
resultiert, besteht eine erhöhte
Wahrscheinlichkeit eines Datenverlustes, die nicht zu tolerieren
ist.
-
Das
zweite geschilderte Verfahren wird auch in der US-Patentschrift
US 5,625,791 beschrieben.
In dieser Patentschrift wird eine Chip-Karte mit einem nichtflüchtigen
elektrisch löschbaren
und programmierbaren Speicher beschrieben, in den ein Verfahren
zur automatischen Auffrischung des Inhalts bestimmter Zonen des
Speichers implementiert ist, um das Risiko durch eine Alterung eines
EEPROM-Speichers (EEPROM = Electrically Erasable Programmable Read-Only-Memory
= elektrisch löschbarer programmierbarer
Nur-Lese-Speicher) zu umgehen. Die dort beschriebene Auffrischung
kann nach vorbestimmten Zeitintervallen oder am Ende einer vorbestimmten
Zahl von Nutzungen oder auch routinemäßig durchgeführt werden,
wenn immer die Karte mit Strom versorgt wird. Wird bei dem Schritt
des Auffrischens nur ein Teil einer Zone angesprochen, so wird die
Adresse dieses Teils der Zone durch einen Zufallsgenerator festgelegt.
Mit anderen Worten beschreibt das vorgenannte US-Patent den Einsatz
eines Zufallszahlengenerators zur Bestimmung einer beliebigen Refresh-Adresse, wenn die
Chip-Karte eingeschaltet wird (Power-up der Karte).
-
In
der US-Patentschrift
US 6,160,738 wird ein
nichtflüchtiges
Halbleiterspeichersystem mit einem Gitter nichtflüchtiger
Speicherzellen beschrieben, das in Löschungsblöcke und Auffrischungsblöcke aufgeteilt
ist. Darüber
hinaus weist das Speichersystem eine Anordnung von Zwischenmarkierungszellen
auf, wobei jede Zwischenmarkierungszelle einem Auffrischungsblock
zugeordnet ist und Informationen über den Auffrischungsstatus
des zugehörigen
Auffrischungsblocks zwischenspeichert. Mit anderen Worten beschreibt
die genannte US-Patentschrift
den Einsatz einer separaten Anordnung von Zwischenmarkierungsspeichern
(Flag-Array), in dem separat der Auffrischungs-Status (Refresh Status)
eines zugeordneten Blocks gespeichert und wieder gelöscht wird.
-
Die
US-Patentanmeldung
US
2004 10 170 060 A1 beschreibt ein Halbleiter-Speicher-Bauelement
mit einer Detektions-Einrichtung,
die den Halbleiterspeicher in Auffrischungszonen unterteilt und eine
Auffrischungszone bestimmt, die ein Schreibziel bei einem Schreibvorgang
umfasst. Die Detektions-Einrichtung
frischt dann die zu der zugehörigen Auffrischungszone
gehörenden
Sektoren der Reihe nach auf, die von der Detektions-Einrichtung
bestimmt wurden.
-
Ausgehend
von diesem Stand der Technik besteht die Aufgabe der vorliegenden
Erfindung darin, eine Speicherschaltung und ein Verfahren zum Schreiben
in einen Zielspeicherbereich zu schaffen, das eine weniger zeitaufwändige und
speicherbelastende Möglichkeit
zur Auffrischung eines Speicherbereichs ermöglicht.
-
Diese
Aufgabe wird durch eine Speicherschaltung gemäß Anspruch 1, ein Verfahren
gemäß Anspruch
9 und durch ein Software-Programm-Produkt gemäß Anspruch 17 gelöst.
-
Die
erfindungsgemäße Speicherschaltung weist
eine Mehrzahl von Speicherbereichen, deren Reihenfolge von jeweils
zugeord neten logischen Adressen abhängt, und denen jeweils ein
Kontrollwert zugeordnet ist, eine Einrichtung, die Informationen
enthält,
welche Speicherbereiche benutzt sind, und eine Steuereinrichtung,
die so ausgelegt ist, dass sie beim Schreiben in einen Zielspeicherbereich
der Mehrzahl von Speicherbereichen
- – dem dem
Zielspeicherbereich zugeordneten Kontrollwert einen Wert gibt, der
dem einem niedrigsten benutzten Speicherbereich zugeordneten Kontrollwert
entspricht, wenn ein benutzter Speicherbereich existiert, und einen
beliebigen oder einen vorgegebenen Wert gibt, wenn kein benutzter
Speicherbereich existiert, und
- – wenn
eine vorbestimmte Bedingung erfüllt
ist, und wenn zumindest zwei benutzte Speicherbereiche existieren,
- – Neuschreiben
des Inhalts eines nächsten Speicherbereichs,
dessen Kontrollwert zu dem Kontrollwert des niedrigsten Speicherbereichs eine
vorbestimmte Beziehung aufweist, und Ändern des Kontrollwerts des
nächsten
Speicherbereichs, wenn ein solcher nächster Speicherbereich existiert,
und
- – Neuschreiben
des Inhalts des niedrigsten Speicherbereichs und Ändern des
demselben zugeordneten Kontrollwerts, wenn ein nächster Speicherbereich, dessen
Kontrollwert zu dem Kontrollwert des niedrigsten Bereichs die vorbestimmte
Beziehung aufweist, nicht existiert.
-
Bei
dem erfindungsgemäßen Verfahren
zum Schreiben in einen Zielspeicherbereich einer Speicherschaltung
mit einer Mehrzahl von Speicherbereichen, deren Reihenfolge von
jeweils zugeordneten logischen Adressen abhängt, und mit einer Einrichtung,
die Informationen enthält,
welche Speicherbereiche benutzt sind,
- – wird dem
dem Zielspeicherbereich zugeordneten Kontrollwert ein Wert zugewiesen,
der dem eines niedrigsten benutzten Speicherbereichs zugeordneten
Kontrollwert entspricht, wenn ein benutzter Speicherbereich existiert, und
einen beliebigen oder einen vorgegebenen Wert dem dem Zielspeicherbereich
zugeordneten Kontrollwert zugewiesen wird, wenn kein benutzter Speicherbereich
existiert, und
- – wenn
eine vorbestimmte Bedingung erfüllt
ist, und wenn zumindest zwei benutzte Speicherbereiche existieren,
- – wird
der Inhalt eines nächsten
Speicherbereichs neugeschrieben, dessen Kontrollwert zu dem Kontrollwert
des niedrigsten Speicherbereichs eine vorbestimmte Beziehung aufweist,
und der Kontrollwert des nächsten
Speicherbereichs geändert,
wenn ein solcher nächster
Speicherbereich existiert, und es
- – wird
der Inhalt des niedrigsten Speicherbereichs neugeschrieben wird
und der demselben zugeordnete Kontrollwert geändert wird, wenn ein nächster Speicherbereich,
dessen Kontrollwert zu dem Kontrollwert des niedrigsten Bereichs
eine vorbestimmte Beziehung aufweist, nicht existiert.
-
In
der vorliegenden Anmeldung bezeichnen die Begriffe „Refresh", „Umkopieren" und „Neuschreiben" ein Neuschreiben
von Daten in eine gleiche oder andere physikalischen Adresse, wobei
die logische Adresse unverändert
bleibt. Die Begriffe „Schreiben" und „Programmieren" bezeichnen synonym
ein Schreiben von Daten in eine vorbestimmte logische Adresse, der
eine physikalische Adresse zugeordnet ist oder bei dem eigentlichen
Schreibvorgang zugeordnet wird.
-
Der
vorliegenden Erfindung liegt die Erkenntnis zugrunde, dass ein bezüglich des
Zeitaufwands und des Speicheraufwands effizienteres Verfahren zum
Schreiben in einen Zielspeicherbereich erreicht werden kann, indem
bei jedem Schreiben in einen Zielspeicherbereich anhand einer vorbestimmten
Bedingung überprüft wird,
ob ein Neuschreiben eines Speicherbereichs durchgeführt werden
soll.
-
Mit
anderen Worten wird im Rahmen des erfindungsgemäßen Verfahrens zunächst bei
jedem Schreiben beispielsweise auf Basis einer vorbestimmten Wahrscheinlichkeit
zufällig
entschieden, ob ein Speicherbereich innerhalb eines Sektors, der
den Speicherbereich umfasst, neu geschrieben werden soll. Auf Basis
eines Kontrollwerts, der jedem Speicherbereich zugeordnet ist, wird
dann entschieden, welcher Speicherbereich für ein Neuschreiben ausgewählt wird.
-
Besonders
vorteilhaft an diesem Verfahren ist, dass Speicherbereiche, die
zu einem Neuschreiben vorgesehen sind, gezielt auf Basis eines Kontrollwerts
ausgewählt
werden, so dass Speicherbereiche, die unmittelbar vorher neu geschrieben
wurden, nicht sofort wieder zu einem Neuschreiben herangezogen werden
können,
ohne dass dabei ein nennenswerter Speicheranteil beispielsweise
zur Speicherung eines Zählers
verwendet werden muss. Darüber
hinaus bietet dieses Verfahren den Vorteil, dass nicht bei jedem
Schreiben auch ein Neuschreiben eines Speicherbereichs durchgeführt werden muss,
so dass die effektive Schreibgeschwindigkeit, die ein Nutzer einer
erfindungsgemäßen Speicherschaltung
bemerkt, nicht signifikant reduziert wird. Neben einer deutlichen
Erhöhung
der effektiven Schreibgeschwindigkeit wird so auch die Lebensdauer
einer erfindungsgemäßen Speicherschaltung
erheblich erhöht,
da, wie bereits in den einführenden Abschnitten
der vorliegenden Anmeldung erläutert wurde,
eine mittlere Lebensdauer einer erfindungsgemäßen Speicherschaltung maßgeblich
durch die Zahl der Schreibvorgänge,
also auch der Neuschreibvorgänge,
bestimmt wird.
-
Mit
anderen Worten wird im Rahmen des erfindungsgemäßen Verfahrens zunächst bei
jedem Schreiben bzw. bei jeder Programmierung eines Zielspeicherbereichs
beispielsweise auf Basis einer vorbestimmten Wahrscheinlichkeit
zufällig
entschieden, ob ein Speicherbereich innerhalb eines Sektors, der den
Speicherbereich umfasst, umkopiert bzw. neu geschrieben wird. Dann
wird beispielsweise anhand nur eines einzelnen, mit den Speicherbereichen
abgespeicherten Bits entschieden, welcher Speicherbereich genau
zum Neuschreiben ausgewählt
wird. Vorteilhaft ist hierbei insbesondere, dass immer „sinnvolle" Bereiche zum Neuschreiben
ausgewählt werden,
ohne dass ein nennenswerter Speicheranteil zur Speicherung eines
Zählers
verwendet werden muss.
-
Bevorzugte
Ausführungsbeispiele
der vorliegenden Erfindung werden nachfolgend Bezug nehmend auf
die beiliegenden Zeichnungen näher
erläutert.
Es zeigen:
-
1 ein
schematisches Blockschaltbild eines Ausführungsbeispiels einer erfindungsgemäßen Speicherschaltung;
und
-
2 eine schematische Darstellung des Inhalts
einer erfindungsgemäßen Speicherschaltung mit
acht Speicherbereichen.
-
Bezug
nehmend auf die 1 und 2 wird nun
ein Ausführungsbeispiel
einer Speicherschaltung und eines Verfahrens zum Schreiben in einen Zielspeicherbereich
beschrieben.
-
1 zeigt
ein schematisches Blockschaltbild eines Ausführungsbeispiels einer erfindungsgemäßen Speicherschaltung 100 mit
einem Speicher 110 mit einer Mehrzahl von Speicherbereichen 120-0 bis 120-N,
denen jeweils ein Kontrollwertspeicherplatz 125-0 bis 125-N zugeordnet
ist, und einer Steuereinheit 130 mit einer Zuordnungseinrichtung
bzw. Mapping-Einheit 140 und einem Statusspeicher 150. Die
Steuereinheit 130 ist mit dem Speicher 110 über einen
bidirektionalen Bus 160 gekoppelt. Die Steuereinheit 130 kann über einen
weiteren bidirektionalen Bus 170 beispielsweise mit einer
Speichersteuerung gekoppelt sein. Alternativ kann die Steuereinheit 130 Teil
einer Speichersteuerung sein.
-
Eine
wesentliche Aufgabe der Steuereinheit 130 besteht darin,
eine Zuordnung zwischen einer logischen Adresse LA und einem physikalischen Speicherbereich 120 vorzunehmen.
Diese durch die Mapping-Einheit 140 durchgeführte Umsetzung
ermöglicht
es einerseits, defekte physikalische Speicherbereiche 120 von
einer möglichen
Datenspeicherung auszunehmen, und andererseits eine flexible Zuweisung
von logischen Adressen LA an physikalische Speicherbereiche 120 durchzuführen. Hierdurch
ist es beispielsweise möglich,
auf Basis der logischen Adressen LA eine Reihenfolge zu definieren,
ohne dass die physikalischen Speicherbereiche 120 eine
entsprechende Anordnung, also eine Anordnung der Reihenfolge entsprechend
aufweisen müssen.
Dies ermöglicht
es insbesondere, auch während
des Betriebs der Speicherschaltung 100 die Zuordnung zwischen
logischen Adressen LA und den physikalischen Speicherbereichen 120 zu ändern und
den jeweiligen Betriebsbedingungen anzupassen. Die Umsetzung, die
durch die Mapping-Einheit 140 der Steuereinheit 130 durchgeführt wird,
ermöglicht
es so, logische Speicherbereiche zu definieren, die durch ihre logischen
Adressen LA eindeutig bestimmt sind. Darüber hinaus weist die Steuereinheit 130 noch
den Statusspeicher 150 auf, der im vorliegenden Ausführungsbeispiel
Informationen über
eine Benutzung oder eine Nichtbenutzung eines logischen Speicherbereichs
enthält.
Der Statusspeicher 150 ermöglicht so zusammen mit der
Mapping-Einheit 140 beispielsweise einen gezielten Zugriff
auf alle benutzten logischen Speicherbereiche.
-
Jeder
getrennt programmierbare logische Speicherbereich weist ein Bit
auf, das auch als DH-Bit bezeichnet wird und dem im Zusammenhang mit
den zughörigen
physikalischen Speicherbereichen 120-0 bis 120-N jeweils
der Kontrollwertspeicherplatz 125-0 bis 125-N zugeordnet
ist, in dem im gleichen Programmiervorgang, aber unabhängig von den
anderen in dem betreffenden Speicherbereich gespeicherten Daten
der Wert 0 oder 1 abgespeichert werden kann. Jeder Speicherbereich 120-0 bis 120-N kann
im Sinne einer herkömmlichen
Terminologie eine Speicherseite oder Page sein, während die Speicherbereiche 120-0 bis 120-N zusammen
einen Speichersektor, der somit eine Mehrzahl von Pages aufweist,
bilden. Der genannte Speicher ist dabei so in mehrere Sektoren aufgeteilt,
dass nur die Speicherseiten innerhalb eines Sektors sich über den
in den einführenden
Abschnitten der vorliegenden Anmeldung beschriebenen „Drain
Disturb"-Mechanismus
beeinflussen. Die Speicherseiten werden über Adressen bzw. logische
Adressen innerhalb eines Sektors angesprochen und weisen dadurch
eine definierte Reihenfolge mit einer „höchsten Seite" und einer „niedrigsten
Seite" auf. Diese
Reihenfolge muss nicht notwendigerweise durch eine Erhöhung der
logischen Adresse um jeweils 1 gegeben sein. Der Einfachheit halber
wird jedoch bei dem beschriebenen Ausführungsbeispiel eine solche
Reihenfolge als Ordnungskriterium bzw. als Such-Reihenfolge verwendet.
Die niedrigste Page stellt daher die Page mit der niedrigsten logischen
Adresse dar und die nächste
Page stellt daher die Page mit der nächsthöheren logischen Adresse dar.
-
Auf
Basis der eben beschriebenen Randbedingungen wird eine konkrete
Implementierung des erfindungsgemäßen Verfahrens zum Schreiben
in einen Zielspeicherbereich, wie es in der Speicherschaltung 100 durchgeführt werden
kann, im Folgenden beschrieben. Hierbei werden die Begriff „Schreiben" und „Programmieren" ebenso synonym verwendet,
wie die Begriffe „Neuschreiben" und „Umkopieren" für einen
Refresh-Vorgang synonym verwendet werden.
-
Wenn
eine unbenutzte Page in einem betroffenen Sektor programmiert oder
der Inhalt einer bereits benutzten Page in dem betroffenen Sektor
verändert
(umprogrammiert) werden soll, werden die folgenden Schritte durchgeführt:
- a. Suchen der „niedrigsten" benutzten Page in dem
betroffenen Sektor und Lesen des DH-Bits der niedrigsten benutzten
Page.
- b1. Existiert eine benutzte Page in dem bestimmten Sektor, Einstellen
des DH-Bits der zu programmierenden oder der umzuprogrammierenden
Page (Ziel-Page) auf einen zu dem Wert des DH-Bits der niedrigsten
benutzten Page identischen Wert. Dies ist auch anzuwenden, wenn eine
Umprogrammierung der niedrigsten benutzten Page durchgeführt wird.
In diesem Fall bleibt das DH-Bit also erhalten.
- b2. Existiert in dem betroffenen Sektor noch keine benutzte
Page, existiert also keine „niedrigste
benutzte Page, so wird das DH-Bit der zu programmierenden Page auf
einen beliebigen oder vorbestimmten Wert 0 oder 1 gesetzt.
- c. Programmieren oder Umprogrammieren der zu programmierenden
Page des betreffenden Sektors.
- d. Entscheiden anhand einer (Pseudo-) Zufallszahl und einer
vorbestimmten Wahrscheinlichkeit, ob ein Neuschreiben einer Page
innerhalb des betreffenden Sektors durchgeführt werden soll. Ist dies nicht
der Fall, endet das Programmieren bzw. Umprogrammieren hier.
-
Wenn
ein Neuschreiben erfolgen soll, werden folgende Schritte durchgeführt:
- e. Suchen der niedrigsten benutzten Page im
betroffenen Sektor und Lesen des DH-Bits derselben.
- f. Suchen der „nächsten" benutzten Page im
gewählten
Sektor mit einem DH-Bit, das invers zu dem DH-Bit der „niedrigsten" benutzten Page gesetzt
ist. Das Ergebnis dieser Suche bestimmt das weitere Vorgehen:
- g1. Existiert keine nächste
benutzte Page, endet der Schreibvorgang bzw. das Verfahren hier.
- g2. Existiert eine nächste
benutzte Page, existiert jedoch keine nächste benutzte Page mit einem bezogen
auf die niedrigste benutzte Page inversen DH-Bit, so wird die niedrigste
benutzte Page neugeschrieben und dabei ihr DH-Bit invertiert.
- g3. Existiert eine nächste
benutzte Page mit einem bezogen auf die niedrigste benutzte Page
inversen DH-Bit, so wird die nächste
benutzte Page mit dem inversen DH-Bit neugeschrieben und dabei ihr
DH-Bit invertiert.
-
Hierbei
kann bei jedem schreibenden Speicherzugriff durch die Steuereinheit 130 und
die Mapping-Einheit 140 die Zuordnung zwischen einem logischen
Speicherbereich und einem physikalischen Speicherbereich geändert werden.
Das heißt
insbesondere, dass beispielsweise bei einem Ändern des Inhalts eines logischen
Speicherbereichs ein neuer, vorher unbenutzter physikalischer Speicherbereich die
zu schreibenden Daten aufnimmt und die entsprechende Zuordnung zwischen
der logischen Adresse LA und dem physikalischen Speicherbereich
in der Mapping-Einheit 140 entsprechend verändert wird.
-
Um
das Verfahren näher
zu erläutern,
ist in 2 eine schematische Darstellung
eines Speichersektors mit acht Pages, die logische Adressen LA von
0–7 aufweisen,
gezeigt. Neben der logischen Adresse LA ist in 2 für jede Page
auch eine Information bzw. ein Statuswert über die Benutzung B der Page
gezeigt, wobei ein Zustand B = 0 für eine unbenutzte und B = 1
für eine
benutzte Page steht. Darüber
hinaus ist in 2 der Inhalt D der betreffenden
Page sowie der Wert DH des DH-Bits dargestellt. 2a zeigt
einen Ausgangszustand eines Speichers, in dem die Pages mit den
logischen Adressen 0–3
benutzt sind und hierbei die Speicherinhalte a, b, c und d aufweisen.
Die DH-Bits DH der vier benutzten Pages LA = 0 bis LA = 3 weisen
jeweils den Wert 0 auf.
-
Ausgehend
von diesem Ausgangszustand soll nun beispielsweise in einem ersten
Schreibvorgang in eine Page mit der logischen Adresse LA = 5 ein
Wert e programmiert werden.
-
Gemäß dem oben
beschriebenen Verfahren wird zur Bestimmung des DH-Bits für die Page
mit der logischen Adresse LA = 5 die niedrigste benutzte Page im
betreffenden Sektor gesucht und das DH-Bit der niedrigsten benutzten
Page ausgelesen. In dem in 2a gezeigten
Beispiel handelt es sich hierbei um die Page mit der logischen Adresse
LA = 0 mit einem DH-Bit-Wert DH = 0. Das DH-Bit der Page mit der
logischen Adresse LA = 5 wird entsprechend ebenfalls auf den Wert
0 gesetzt. Da nach dem Schreibvorgang die Page mit der logischen
Adresse LA = 5 benutzt ist, wird hierbei auch der Statuswert B der
sechsten Page (LA = 5) gesetzt, so dass sich nach dem Abschließen des
Programmierschritts (Schritt c) der in 2b gezeigte
Zustand ergibt.
-
Bei
dem in 2 gezeigten Beispiel wird nun angenommen,
dass auf Basis einer entsprechenden (Pseudo-) Zufallszahl und einer
vorbestimmten Wahrscheinlichkeit entschieden wird, dass ein Refresh-Schritt
durchgeführt
wird. Es wird also entsprechend dem obigen Schritt e das DH-Bit
der niedrigsten benutzten Page im entsprechenden Sektor gesucht
und das entsprechende DH-Bit gelesen. Im vorliegenden Beispiel handelt
es sich hierbei wiederum um die erste Page mit der logischen Adresse
LA = 0 mit einem DH-Bit mit einem Wert DH = 0.
-
Da
zwar eine nächste
benutzte Page existiert, jedoch keine nächste benutzte Page mit einem zu
dem DH-Bit der niedrigsten benutzten Page LA = 0 inversen DH-Bit,
wird entsprechend Schritt g2 die niedrigste benutzte Page neu geschrieben
und dabei ihr DH-Bit invertiert. Das heißt, dass im vorliegenden Beispiel
die Page mit der logischen Adresse LA = 0 neugeschrieben wird und
dass hierbei ihr DH-Bit invertiert wird, so dass sich der in 2c dargestellte Zustand
ergibt. Ein erster Schreibvorgang ist somit abgeschlossen.
-
Wie
bereits oben erläutert
wurde, wird bei dem Schritt des Neuschreibens die logische Adresse LA
der Page beibehalten, so dass sich die Reihenfolge der Pages nicht ändert. Unabhängig hiervon
kann bei dem Schritt des Neuschreibens durch die Steuereinheit 130 durchaus
ein neuer physikalischer Speicherbereich 120 der Page mit
der logischen Adresse LA = 0 zugeordnet werden. Eine entsprechende Änderung
der Zuordnung zwischen logischen Adressen der Pages und den physikalischen Speicherbereichen 120 wird
durch die Mapping-Einheit 140 durchgeführt.
-
Wird
nun ausgehend von dem Zustand, der in 2c gezeigt
ist, in einem weiteren Schreibvorgang der Inhalt der Page mit der
logischen Adresse LA = 2 durch einen Wert c' ersetzt, wird also die Page mit der
logischen Adresse LA = 2 überschrieben,
so wird das DH-Bit der entsprechenden Page aufgrund der Schritte
a–c des
oben beschriebenen Ausführungsbeispiels
auf den Wert DH = 1 gesetzt. Dies liegt daran, dass die niedrigste
benutzte Page die Page LA = 0 ist, die einen DH-Bit-Wert DH = 1
aufweist. Folglich ergibt sich der in 2d dargestellte Zustand
nach Abschluss des Schrittes c.
-
Wird
nun in Schritt d entschieden, dass ein Neuschreiben durchgeführt werden
soll, wird in Schritt e die niedrigste benutzte Page gesucht und
ihr DH-Bit gelesen. Im vorliegenden Fall handelt es sich hierbei
wiederum um die erste Page LA = 0 mit dem DH-Bit DH = 1. Im Schritt
f wird dann die nächste
benutzte Page mit dem zu dem DH-Bit inversen DH-Bit der Page LA
= 0 gesucht. Dies ist die Page mit der logischen Adresse LA = 1,
da sie ein DH-Bit DH = 0 aufweist. Folglich wird entsprechend Schritt
g3 die Page mit der logischen Adresse LA = 1 neugeschrieben und
hierbei ihr DH-Bit invertiert, so dass sich der in 2e gezeigte
Zustand ergibt.
-
Auch
hier können
sich die physikalischen Speicherbereiche sowohl bei dem Schritt
des Änderns
des Inhalts der Page LA = 2, wie auch bei dem Schritt des Neuschreibens
der Page LA = 1 betroffenen physikalischen Speicherbereiche geändert haben,
ohne dass die zugrundeliegenden logischen Adressen LA eine Änderung
erfahren haben, so dass die Reihenfolge der Pages unverändert geblieben
ist. Eine eventuelle hierbei einhergehende Änderung der physikalischen
Speicherbereiche wird wiederum durch die Steuereinheit 130 und
die Mapping-Einheit 140 berücksichtigt.
-
Das
oben beschriebene Ausführungsbeispiel des
erfindungsgemäßen Verfahrens
zum Schreiben in einen Zielspeicherbereich, das eine Störungsbehandlung
mit einem Speicherbit für
jeden Speicherbereich, das als Markierung (Flag) innerhalb jedes Speicherbereichs
bzw. innerhalb jedes Blocks abgespeichert wird, zeigt die Vorteile
des erfindungsgemäßen Verfahrens
deutlich. Durch die Einführung des
DH-Bits für
alle Speicherbereiche wird der Speicher in Bezug auf die Anwendung
eines Refreshes in zwei Gruppen unterteilt, wobei jeweils nur Pages
einer der beiden Gruppen für
ein Refresh ausgewählt werden.
Werden beispielsweise zu einem bestimmten Zeitpunkt nur Pages einer
ersten Gruppe für
ein Refresh ausgewählt,
so werden diese Pages nach einem erfolgten Refresh aufgrund der
Invertierung des DH-Bits der zweiten Gruppe der Speicherbereiche zugeordnet.
Da auch neu programmierte bzw. umprogrammierte, also überschriebene
Pages, aufgrund des erfindungsgemäßen Verfahrens automatisch
der zweiten Gruppe der Speicherbereiche zugeordnet werden, wird
so sichergestellt, dass keine Page einem Refresh zugeführt wird,
solange es eine Page gibt, die seit einer längeren Zeit nicht mehr durch
einen schreibenden Speicherzugriff verändert wurden. Da die Zugehörigkeit
einer Page zu einer der beiden Gruppen durch den Wert des betreffenden DH-Bits
erfolgt, weist das erfindungsgemäße Verfahren
einen „aktuellen" DH-Bit-Wert auf,
mit dem alle weiteren schreibenden Speicherzugriffe durchgeführt werden.
-
In
dem in 2 gezeigten Speicherabbild handelt
es sich bei dem „aktuellen" DH-Bit-Wert im Fall
der 2d und 2e um
den Wert DH = 1, da es sich hierbei um den DH-Bit-Wert der niedrigsten benutzten
Page, also um die Page mit der logischen Adresse LA = 0, handelt.
Die 2b und 2c illustrieren
den Fall, in dem der „aktuelle" DH-Bit-Wert gerade
aufgrund des erfindungsgemäßen Verfahrens geändert wird.
Während
in dem in 2b gezeigten Beispiel der neu
eingeschriebene Inhalt der sechsten Page (LA = 5) noch den aktuellen
DH-Bit-Wert DH = 0 erhält,
wird dem einem Refresh-Vorgang unterworfenen logischen Speicherbereich
mit der logischen Adresse LA = 0 (erste Page) der „neue" aktuelle DH-Bit-Wert
DH = 1 zugewiesen.
-
Das
beschriebene Verfahren bewirkt, dass niemals eine jüngere Page
mit dem gerade „aktuellen" DH-Bit-Wert zum
Neuschreiben ausgewählt wird,
wenn noch eine ältere
Page mit einem zu dem „aktuellen" DH-Bit-Wert inversen
DH-Bit-Wert existiert. Dadurch wird die Statistik der Neuschreibvorgänge erheblich
verbessert, da ausschließlich „sinnvolle" Pages zum Neuschreiben
ausgewählt
werden. Dadurch wiederum wird die Anzahl der notwendigen Neuschreibungen
stark verringert, da nun ausschließlich gezielt Neuschreibungen
von Pages stattfinden, die einen zu dem aktuellen DH-Bit-Wert inversen
DH-Bit-Wert aufweisen, falls solche existieren.
-
Darüber hinaus
wird auch der Zeitaufwand für
die Auswahl eines zum Neuschreiben vorgesehenen logischen Speicherbereichs
reduziert, da aufgrund der Anordnung der Pages durch die Einführung einer
Reihenfolge nur in wenigen Fällen
bei einem Neuschreib-Vorgang alle benutzten Pages durchsucht oder
berücksichtigt
werden müssen.
Vielmehr muss in der Mehrzahl der Refresh-Vorgänge nur ein kleiner Bruchteil
der benutzten Pages nach einer benutzten Page mit einem bestimmten
Wert des DH-Bits durchsucht werden.
-
Aufgrund
der Tatsache, dass das DH-Bit, also der zugeordnete Kontrollwertspeicherplatz 125-0 bis 125-N,
Teil des jeweiligen logischen bzw. des zugeordneten physikalischen
Speicherbereichs 120-0 bis 120-N ist, führt dazu,
dass die Zahl der Schreibzugriffe im Vergleich zu einer zentralen
Speicherung der DH-Bits in einer bestimmten Anordnung (Array) minimiert
wird. Hierdurch wird die Zahl der Störungen, die durch das Eingreifen
der Störungsbehandlung
selber ausgelöst
werden, ebenfalls erheblich reduziert. Darüber hinaus muss kein zusätzlicher Speicherbedarf
beispielsweise in einem flüchtigen Speicher
(RAM) reserviert werden, der im Falle eines plötzlichen Ausfalls der Betriebsspannung
verloren werden könnte.
Die Minimierung der schreibenden Speicherzugriffe im Bereich des
nichtflüchtigen
Speichers führt
darüber
hinaus zu einer verlängerten
Lebensdauer der Speicherschaltung, da die mittlere Lebensdauer eines
nichtflüchtigen
Speichers wesentlich durch die Zahl der schreibenden Speicherzugriffe beschränkt wird.
-
Das
oben beschriebene Ausführungsbeispiel des
erfindungsgemäßen Verfahrens
funktioniert auch dann, wenn unabhängig davon zu beliebigen Zeitpunkten
beliebige Pages gelöscht
werden, also vorher benutzte Pages wieder als unbenutzt markiert und
gegebenenfalls gelöscht,
also mit einem vorbestimmten Wert überschrieben werden.
-
Obwohl
bei dem bevorzugten Ausführungsbeispiel
des erfindungsgemäßen Verfahrens
zum Schreiben in einen Zielspeicherbereich nur ein einzelnes Bit
für jeden
logischen Speicherbereich als Speicher für einen Kontrollwert verwendet
wurde, kann statt eines einzelnen Bits eine Mehrzahl von Bits zu
diesem Zweck verwendet werden. So können die einzelnen logischen
Speicherbereiche eine mehrere Bits umfassende Markierung (Token)
aufweisen, so dass neben einer Aufteilung der Speicherbereiche in
zwei Segmente eine Aufteilung in mehr als zwei Gruppen durchgeführt werden
kann. Prinzipiell ist es so z. B. möglich, verschiedene Gruppen
mit einer unterschiedlichen Häufigkeit
einem Refresh zuzuführen.
Hierdurch kann beispielsweise für
bestimmte Speicherbereiche eine erhöhte Ausfallsicherheit realisiert
werden.
-
Darüber hinaus
kann die Reihenfolge der Abarbeitung der in dem oben beschriebenen
Ausführungsbeispiel
erläuterten
Teilschrittblöcke,
die einerseits die Schritte a–c
und andererseits die Schritte d–g
umfassen, vertauscht werden. Mit anderen Worten kann der Refresh-Vorgang
bzw. die Umprogrammierung auch vor der eigentlichen Programmierung bzw.
dem eigentlichen Schreiben erfolgen. Gerade diese Variationsmöglichkeit
erfordert nur eine leichte Modifikation der Beschreibung des oben
erläuterten Ausführungsbeispiels
des erfindungsgemäßen Verfahrens,
wobei im Wesentlichen nur Anpassungen der Bedingungen an eine vorzeitige
Beendigung bzw. einen vorzeitigen Abbruch des Refresh-Vorgangs (Verfahrensbeendigung)
notwendig sind.
-
Des
weiteren müssen
die Adressen bzw. die logischen Adressen der logischen Speicherbereiche nicht
notwendigerweise die Such-Reihenfolge der logischen Speicherbereiche
in der Weise vorgeben, wie dies das oben geschilderte Ausführungsbeispiel zeigt.
Grundsätzlich
kann jede festgelegte Reihenfolge der logischen Speicherbereiche
bzw. der Pages innerhalb eines Sektors als Ordnungskriterium für das Durchsuchen
der Pages herangezogen werden, da grundsätzlich jede Reihenfolge geeignet
ist im Sinne der vorliegenden Erfindung, solange sie jeden logischen
Speicherbereich genau einmal umfasst. So ist beispielsweise neben
der in dem Ausführungsbeispiel
geschilderten Reihenfolge der Anordnung der logischen Speicherbereiche
nach ihrer aufsteigenden logischen Adresse auch eine Anordnung nach fallender
logischer Adresse LA denkbar. Darüber hinaus sind auch Mischformen
einer aufsteigenden und einer absteigenden Anordnung denkbar, bei
der beispielsweise erst alle geraden Pages in aufsteigender Reihenfolge
durchsucht werden, um dann anschließend alle ungeraden Pages in
absteigender Reihenfolge zu durchsuchen. Wichtig ist in diesem Zusammenhang
nur, dass jede Page bzw. jeder logische Speicherbereich in einer
festen Folge genau einmal auf Basis der logischen Adressen LA durchsucht
werden muss.
-
Weiterhin
kann eine andere vorbestimmte Bedingung zur Beschleunigung des Refresh-Teilschrittblocks,
also eine Änderung
von Schritt d des oben geschilderten Ausführungsbeispiels, umgesetzt werden.
Neben einer im Rahmen des Ausführungsbeispiels
beschriebenen Analyse einer (Pseudo-) Zufallszahl besteht weiterhin
die Möglichkeit,
den Refresh-Vorgang beispielsweise erst nach Verstreichen einer
vorbestimmten Zeitspanne zu starten. Alternativ kann der Refresh-Vorgang
auch nach einer vorbestimmten Zahl von schreibenden Speicherzugriffen oder
zu einer bestimmten Systemzeit ausgeführt werden.
-
Abhängig von
den Gegebenheiten kann das erfindungsgemäße Verfahren zum Schreiben
in einen Zielspeicherbereich 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 einen Zielspeicherbereich 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 Computer-Programm 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 (Smart
Card) oder einem anderen integrierten Schaltkreis gebildet sein.
-
- 100
- Speicherschaltung
- 110
- Speicher
- 120-0
- physikalischer
Speicherbereich
- 120-N
- physikalischer
Speicherbereich
- 125-0
- Kontrollwertspeicherplatz
- 125-N
- Kontrollwertspeicherplatz
- 130
- Systemeinheit
- 140
- Mapping-Einheit
- 150
- Statusspeicher
- 160
- bidirektionaler
Bus
- 170
- weiterer
bidirektionaler Bus