DE102009046444A1 - An die Software angepasste Abnutzungsausgleichung - Google Patents

An die Software angepasste Abnutzungsausgleichung Download PDF

Info

Publication number
DE102009046444A1
DE102009046444A1 DE102009046444A DE102009046444A DE102009046444A1 DE 102009046444 A1 DE102009046444 A1 DE 102009046444A1 DE 102009046444 A DE102009046444 A DE 102009046444A DE 102009046444 A DE102009046444 A DE 102009046444A DE 102009046444 A1 DE102009046444 A1 DE 102009046444A1
Authority
DE
Germany
Prior art keywords
segment
block
memory
volatile memory
page
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
DE102009046444A
Other languages
English (en)
Inventor
Yves Fusella
Stephane Godzinski
Laurent Paris
Jean-Pascal Maraninchi
Samuel Charbouillot
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Amtel Rousset Sas Rousset Cedex Fr
Original Assignee
Atmel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Atmel Corp filed Critical Atmel Corp
Publication of DE102009046444A1 publication Critical patent/DE102009046444A1/de
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7211Wear leveling

Landscapes

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

Abstract

Eine Teilmenge von Software-Objekten, die in einem ersten Segment eines nicht flüchtigen Speichers gespeichert sind, werden als Software-Objekte identifiziert, die häufige Schreibvorgänge erfordern oder anderweitig hohe Ausdaueranforderungen haben. Die Teilmenge der Software-Objekte wird in ein zweites Segment des nicht flüchtigen Speichers mit einer hohen Ausdauerkapazität verschoben, die auf der Anwendung von Abnutzungsabgleichungstechniken auf das zweite Segment des nicht flüchtigen Speichers beruht. Das erste und das zweite Segment des Speichers können sich in dem gleichen Speichergerät oder in verschiedenen Speichergeräten befinden.

Description

  • Technischer Bereich
  • Die vorliegende Erfindung bezieht sich allgemein auf Techniken zum Ausgleich der Abnutzung nicht-flüchtiger Speicher.
  • Hintergrund
  • Sichere Mikrocontroller können Nur-Lesespeicher (ROM) zur Software-Programmspeicherung und elektrisch lösch- und programmierbaren Lesespeicher (EEPROM) zur Datenspeicherung enthalten. Die EEPROM-Technik wird dramatisch teuerer, wenn sie auf den Submikrometerbereich verkleinert wird, wodurch manche sichere Mikrocontroller veranlasst wurden, sich einer anderen nicht-flüchtigen Speichertechnik, wie z. B. Flash, zuzuwenden, die weniger kostspielig in der Miniaturisierung ist. Insbesondere lässt die Flash-Technik eine größere Entwurfsflexibilität zu, da kein ROM-Maskenprozess erforderlich ist.
  • Unter Verwendung eines EEPROM können die zu löschenden und/oder zu schreibenden Daten erforderlichenfalls byteweise geschrieben werden. In Flash-Speichern kann zwar ein einzelnes Datenbyte geschrieben werden, aber der Speicher kann nur seiten- oder blockweise gelöscht werden (z. B. abhängig von der konkreten Flashspeicherarchitektur). Die Software des sicheren Mikrocontrollers müsste deshalb eine Lese-Ändere-Schreib-Operation auf der Seite (oder dem Block) ausführen, um die Aktualisierung eines einzelnen Datenbytes zu emulieren.
  • Nach einer Zahl von Löschungen ist eine nicht-flüchtige Speicherzelle abgenutzt. Die Speicherdauerhaftigkeit einer Flashspeicherzelle (z. B. 100.000 Löschvorgänge, 10.000 Löschvorgänge, etc.) hängt z. B. von Herstellungsfaktoren ab. Verschiedene Hardware- und/oder Software-Techniken können verwendet werden, um die Lebensdauer eines nicht-flüchtigen Speichers zu verlängern. Zum Beispiel können Abnutzungsausgleichungstechniken angewendet werden, um die Schreibvorgänge über die Speicherzellen zu mitteln. Die Verwendung von Speicherzellen kann z. B. rotiert werden, um sicherzustellen, dass einzelne Speicherzellen nicht stärker als andere Löschungen ausgesetzt sind. Abnutzungsausgleichungstechniken können jedoch aufgrund von Software-Verwaltungsanforderungen zu langsameren Antwortzeiten führen. Die langsameren Antwortzeiten können in manchen Situationen zu einer langsameren Softewarefunktionalität führen (z. B. in der Situation, in der ein Programm und Daten in einem nicht-flüchtigen Speicher gemeinsam gespeichert sind).
  • Zusammenfassung
  • Eine Teilmenge von Software-Objekten, die in einem ersten Segment eines nicht-flüchtigen Speichers gespeichert sind, werden als Software-Objekte identifiziert, die häufige Schreibvorgänge erfodern oder anderweitig hohe Belastungsanforderungen haben. Die Teilmenge von Software-Objekten wird in ein zweites Segment des nicht-flüchtigen Speichers verschoben, das eine hohe Belastbarkeit aufweist, und zwar aufgrund der Anwendung von Abnutzungsausgleichungstechniken auf das zweite Segment des nicht-flüchtigen Speichers. Das erste und zweite Speichersegment können sich in dem gleichen Speichergerät oder in verschiedenen Speichergeräten befinden.
  • Beschreibung der Zeichnungen
  • 1 illustriert ein Beispiel eines Mikrocontrollers mit einem eingebetteten nicht-flüchtigen Speicher.
  • 2 illustriert ein Beispiel der Neuabbildung eines nicht-flüchtigen ”Speicherfressers” von einem ersten Speichersegment auf ein zweites Speichersegment.
  • 3 illustriert ein Beispielspiel innerhalb eines Mikrocontrollers mit einem eingebetteten nicht-flüchtigen Speicher zur Identifizierung und zur Verwaltung von ”Speicherfressern”.
  • 4 ist ein Ablaufdiagramm, das einen Beispielprozess zur Transferrierung eines Software-Objekts in ein hochausdauerndes, nicht-flüchtiges Speichersegment von einem nicht-flüchtigen Hauptspeichersegment und zur Verfügungstellung einer Abnutzungsausgleichung für das hochausdauernde, nicht-flüchtige Speichersegment illustriert.
  • 5 ist ein Ablaufdiagramm, das einen Beispielprozess zur Zurverfügungstellung einer Abnutzungsausgleichung für ein hochausdauerndes, nicht-flüchtiges Speichersegment illustriert.
  • 6 ist ein Flussdiagramm, das einen Beispielprozess zur Zurverfügungstellung einer Abnutzungsausgleichung an das hochausdauernde, nicht-flüchtige Speichersegment illustriert.
  • 7 ist ein Ablaufdiagramm, das einen zweiten Beispielprozess zur Zurverfügungstellung von Abnutzungsausgleichung an ein hochausdauerndes, nicht-flüchtiges Speichersegment illustriert.
  • 8 ist ein Flussdiagramm, das einen zweiten Beispielprozess zur Zurverfügungstellung einer Abnutzungsausgleichung an ein hochausdauerndes, nicht-flüchtiges Speichersegment illustriert, das von einem nicht-flüchtigen Hauptspeichersegment getrennt ist.
  • 9 ist ein Flussdiagramm, das einen Beispielprozess zum Identifizieren von Software-Objekt-Fressern innerhalb eines nicht-flüchtigen Hauptspeichersegments und zur Neuzuweisung der ”Fresser” an ein hochbelastbares, nicht-flüchtiges Speichersegment illustriert.
  • Detaillierte Beschreibung
  • Beispielimplementierung eines eingebetteten nicht-flüchtigen Speichers
  • 1 illustriert ein Beispiel eines Mikrocontrollers 100 mit einem eingebetteten nicht-flüchtigen Speicher 104. Der Mikrocontroller 100 kann innerhalb eines elektronischen Geräts, wie z. B. einer kleinen tragbaren Computervorrichtung (z. B. Mobiltelefon, PDA, etc.), einer sichereren Identifikationskarte (z. B. Bankkarte, Gebäudezugangskarte, etc.), oder kleinen Konsumgütergeräten (z. B. Küchengeräten, Elektrowerkzeugen, elektronischem Spielzeug, Medienwiedergabegeräten, etc.) verwendet werden. In manchen Implementierungen kann der Mikrocontroller 100 zur Speicherung und gemeinsamen Verwendung von sicheren Daten (z. B. einem USB-Laufwerk) verwendet werden.
  • Der Mikrocontroller 100 kann eine zentrale Verarbeitungseinheit (CPU) 102, die Programmanweisungen ausführt, die in einem nicht-flüchtigen Speicher 104 (z. B. Flash) gespeichert sind, und mit einem flüchtigen Datenspeicher 106 (z. B. SRAM) kommuniziert, und ein oder mehr Peripheriegeräte 110, wie z. B. einen oder mehrere Timer 110a, eine Unterbrechungssteuereinheit 110b, eine Steuereinheit 110c für einen universellen seriellen Bus (USB), eine Systempaketschnittstelle (SPI) 110d, oder eine andere Schnittstelle enthalten.
  • Die CPU 102 empfängt die Programmanweisungen über einen Programmbus 112 und transferriert Daten über einen Datenbus 114. Eine Bussteuereinheit 108 steuert den Datenverkehr zwischen der CPU 102, dem nicht-flüchtigen Speicher 104, dem flüchtigen Datenspeicher 106 und den Peripheriegeräten 110. Ein oder mehrere Peripheriegeräte 110 können mit externen Vorrichtungen über ein oder mehrere Schnittstellen 116 gekoppelt werden (z. B. eine USB-Schnittstelle 116a, eine SPI-Schnittstelle 116b und/oder eine andere Schnittstelle 116c). Die Schnittstellen 116 können z. B. Schaltungen zur Implementierung kabelgebundener und/oder drahtloser Datenverbindungen enthalten.
  • Der Mikrocontroller 110 kann mehr, weniger, oder andere Elemente als die in 1 illustrierten enthalten. Zum Beispiel kann der nicht-flüchtige Speicher 104 unter Verwendung von zwei logisch und/oder physikalisch getrennten eingebetteten Speichern implementiert werden, die zwei verschiedene nicht-flüchtige Speichertechniken beinhalten können. Die getrennten eingebetteten Speicher können z. B. verwendet werden, um verschiedene Arten von Information (z. B. Programmcode, Daten) zu speichern.
  • 2 illustriert die Neuabbildung eines ”Fresserobjekts” 206 von einem nicht-flüchtigen Hauptspeichersegment 202 auf ein hochausdauerndes, nicht-flüchtiges Speichersegment 204 innerhalb eines eingebetteten nicht-flüchtigen Speichersystems 200. Das eingebettete nicht-flüchtige Speichersystem 200 kann z. B. innerhalb eines Mikrocontrollers (z. B. der nicht-flüchtige Speicher 104) enthalten sein. Das Speichersystem 200 kann ein bekanntes Flashspeichersystem (z. B. JFFS2, YAFFS, UDF) sein.
  • Das ”Fresserobjekt” 206, wie es hier genannt wird, ist ein Software-Objekt, das häufigen Schreiboperation ausgesetzt ist und eine Ausdaueranforderung hat, die höher ist als die technische Ausdauerkapazität des nicht-flüchtigen Speichers, in dem sich das Fresserobjekt 206 befindet. Nicht-flüchtiger Speicher kann eine vorbestimmte Zahl von Löschvorgängen verkraften, bevor ein Fehler auftritt, die üblicherweise als die Ausdauer der Speichertechnik bezeichnet wird. Nicht-flüchtiger Speicher kann eine vom Hersteller angegebene Ausdauerkapazität, z. B. 100.000 Schreibzyklen pro Speicherzelle, haben. Wenn das Fresserobjekt 206, das sich in einem ersten Speichersegment 202 des nicht-flüchtigen Speichers befindet, nahe an der Ausdauerkapazität des nicht-flüchtigen Speichers (z. B. 100.000 Schreibzyklen) liegt, wird das Fresserobjekt 206 in ein zweites Speichersegment 204 verschoben, das eine höhere Ausdauerkapazität (im Folgenden auch als ”Ausdauertank” bezeichnet) hat, als die Ausdauerkapazität des ersten Speichersegments 202. Die logische Adresse des verschobenen Fresserobjekts 206 wird auf die neue physikalische Adresse des Fresserobjekts 206 in dem zweiten Speichersegment 204 abgebildet, so dass das Fresserobjekt 206 durch das Speichersystem 200 als Reaktion auf eine Lese/Schreibanforderung von einem Prozessor (z. B. CPU 102) angesprochen werden kann.
  • Das Fresserobjekt 206 kann, wenn es an der gleichen Stelle innerhalb des nicht-flüchtigen Speichers belassen wird, die Ausdauerkapazität des nicht-flüchtigen Speichers schnell überschreiten. Wie hier offenbart wird, kann eine Erkennungsroutine verwendet werden, um das Fresserobjekt 206 innerhalb des ersten Speichersegments 202 des nicht-flüchtigen Speichers zu detektieren und das Fresserobjekt 206 in das zweite, hochausdauernde Speichersegment 204 zu verschieben. Bestimmte Fresserobjekte sind dafür bekannt, häufige Schreiboperationen zu erfordern, wie z. B. eine Dateizuordnungstabelle (FAT) eines Dateisystems. In manchen Implementierungen können diese ”natürlichen” Fresserobjekte 206 während der Initialisierung des Speichersystems 200 automatisch in dem hochausdauernden Segment 204 platziert oder anderweitig als Fresserobjekte gekennzeichnet werden.
  • In manchen Implementierungen ist das hochausdauernde, nicht-flüchtige Speichersegment 204 eine logische Partition des gleichen eingebetteten Speichers, wie das erste oder nicht-flüchtigen Hauptspeichersegments 202. Die Größe des hochausdauernden, nicht-flüchtigen Speichersegments 204 kann z. B. statisch festgelegt werden (z. B. zum Zeitpunkt der Mikrocontrollerherstellung), und zwar auf Basis des erwarteten Anteils von Software-Objekten mit hohem Löschaufkommen, oder dynamisch festgelegt werden (z. B. durch eine Software-Einstellung), während Fresserobjekte innerhalb des nicht-flüchtigen Speichersystems 200 verschoben und neu abgebildet werden.
  • In manchen Implementierungen ist das hochausdauernde Speichersegment 204 physikalisch von dem nicht-flüchtigen Speichersegment 202 getrennt. Das hochausdauernde, nicht-flüchtige Speichersegment 204 kann z. B. eine höhere Ausdauerkapazität und/oder Speicherzellen haben, die unter Verwendung einer anderen Technik erzeugt wurden, als die Technik der Speicherzellen des nicht-flüchtigen Speichersegments 202. Zum Beispiel kann das nicht-flüchtige Speichersegment 202 unter Verwendung der 100K Ausdauer-Flash-Technik implementiert werden, wohingegen das hochausdauernde, nicht-flüchtige Speichersegment 204 unter Verwendung der 100M Ausdauer-SONOS-Technik implementiert werden kann. In manchen Implementierungen kann das hochausdauernde, nicht-flüchtige Speichersegment 204 eine andere Blockgröße und/oder einen anderen Löschmechanismus als das nicht-flüchtige Speichersegment 202 haben. Zum Beispiel könnte das hochausdauernde, nicht-flüchtige Speichersegment 204 seitenweise löschbar sein, wohingegen das nicht-flüchtige Speichersegment 202 blockweise löschbar ist.
  • In manchen Implementierungen kann eine oder mehrere Abnutzungsausgleichungstechniken auf das hochausdauernde, nicht-flüchtige Speichersegment 204 angewendet werden, um die Gesamtausdauer zu erhöhen. Zum Beispiel kann die Größe des hochausdauernden, nicht-flüchtigen Speichersegments 204 so gewählt werden, dass die Zahl der verschobenen Fresserobjekte wesentlich kleiner ist als die Gesamtzahl der Speicherblöcke innerhalb des hochausdauernden, nicht-flüchtigen Speichersegments 204. Auf diese Weise können die Speicherblockinhalte unter den Speicherblöcken rotiert werden, wodurch die gesamte effektive Ausdauer des hochausdauernden, nicht-flüchtigen Speichersegments 204 über die physikalische Ausdauer eines einzelnen Speicherblocks des hochausdauernden, nicht-flüchtigen Speichersegments 204 hinaus erhöht werden kann. In manchen Implementierungen hat das hochausdauernde, nicht-flüchtige Speichersegment 204 eine größere Gesamtspeicherkapazität, als das nicht-flüchtige Hauptspeichersegment 202.
  • 3 illustriert eine beispielhafte Mikrocontrollerarchitektur 300 mit einem segmentierten eingebetteten nicht-flüchtigen Speichersystem 200 zur Identifizierung und Verwaltung von Fresserobjekten. Die Mikrocontrollerarchitektur 300 könnte z. B. innerhalb des Mikrocontrollers 100 aus 1 verwendet werden. Die Mikrocontrollerarchitektur 300 enthält das Speichersystem 200, welches des Weiteren das nicht-flüchtige Hauptspeichersegment 202, das hochausdauernde, nicht-flüchtige Speichersegment 204, die CPU 102, die Bussteuereinheit 108 und den flüchtigen Datenspeicher 106 enthält.
  • Das nicht-flüchtige Hauptspeichersegment 202 enthält eine Sammlung von Speicherblöcken, wie den beispielhaften Speicherblock 302. Der beispielhafte Speicherblock 302 enthält eine oder mehrere Seiten von Speicher 304 und einen Dienstleistungsbereich 306. Der Dienstleistungsbereich 306 kann einen Löschzähler 307 enthalten, der jedes Mal erhöht wird, wenn der Speicherblock 302 gelöscht wird. In anderen Implementierungen können separate Löschzähler für jede Seite 304 innerhalb des Speicherblocks 302 eingerichtet werden.
  • Das nicht-flüchtige Hauptspeichersegment 202 enthält zusätzlich eine Fressererkennungseinheit 308. Die Fressererkennungseinheit 308 kann den Löschzähler 307 innerhalb des Dienstleistungsbereichs 306 mit einem Ausdauerschwellwert vergleichen (der z. B. ebenfalls in dem Dienstleistungsbereich 306 gespeichert ist), und zwar unter Verwendung einer hard ware- oder software-basierten Erkennungsroutine. Wenn der Löschzähler 307 den Ausdauerschellwert erreicht, kann die Fressererkennungseinheit 308 eine Fresserverwaltungseinheit 312 alarmieren.
  • Die Fresserverwaltungseinheit 312 weist den Speicherblock 302 dem hochausdauernden, nicht-flüchtigen Speichersegment 204 zu. Die Fresserverwaltungseinheit 312 kann die Adresse des neuen Orts des Speicherblocks 302 innerhalb des Servicebereichs 306 speichern. Die Fresserverwaltungseinheit 312 kann auch einen Eintrag innerhalb einer Zuordnungstabelle 314, die innerhalb des flüchtigen Datenspeichers 106 gespeichert ist, entsprechend der neu abgebildeten Speicheradressstelle füllen. Zum Beispiel kann die Fresserverwaltungseinheit 312 die neue Adressstelle in die Zuordnungstabelle 314 schreiben, indem sie eine Nachricht über die Bussteuereinheit 108 sendet. Die CPU 102 muss nicht über die innerhalb der nicht-flüchtigen Speichersegmente 202, 204 auftretenden Neuzuordnungen im Bilde sein. Die Fresserverwaltungseinheit 312 kann innerhalb der Software und/oder Hardware des nicht-flüchtigen Hauptspeichersegments 202 implementiert sein. In manchen Implementierungen ist die Fresserverwaltungseinheit 312 innerhalb des hochausdauernden, nicht-flüchtigen Speichersegments 204 implementiert.
  • In manchen Implementierungen enthält die Zuordnungstabelle 314 sowohl die anfängliche Adresse innerhalb des nicht-flüchtigen Hauptspeichersegments 202 als auch die neu zugeordnete Adresse innerhalb des hochausdauernden, nicht-flüchtigen Speichersegments 204, so dass die Zuordnungstabelle 314 immer dann verwendet werden kann, wenn Daten in oder aus den nicht-flüchtigen Speichersegmenten 202, 204 transferriert werden. Beim Systemstart kann die Zuordnungstabelle 314 auf Basis der in den Servicebereich 306 eines jeden Blocks des nicht-flüchtigen Speichersegments 204 geschriebenen, neu zugewiesenen Adressen gefüllt werden, oder der Adressen des Speicherblocks 302, wenn der Block nicht verschoben wurde. Es gibt mehrere Vorteile, wenn die verschobenen Adressen in den Speicher 204 anstelle in den Hauptspeicher 202 geschrieben werden. Die Adressneuzuordnung kann in den Servicebereich 306 geschrieben werden und Daten können mit einer einzelnen Schreiboperation mit besserer Leistungsfähigkeit in die neu zugewiesene Adresse geschrieben werden. Beim Hochfahren kann der Servicebereich 306 des Speichers 204 gelesen werden, um die Zuordnungstabelle 314 zu füllen. Ein Lesezugriff auf den Hauptspeicher 202, der groß sein kann, ist nicht erforderlich. Das beste Startverhalten kann auftreten, wenn nur der Dienstleistungsbereich 306 einer kleinen Sequenz des Speichers 204 gelesen wird.
  • Wenn die CPU 102 den Inhalt des Speicherblocks 302 durch Senden einer Schreibanforderung über den Datenbus 114 ändert, kann die Bussteuereinheit 108 die Anforderung an den flüchtigen Datenspeicher 106 senden, wo ein Nachschlagen innerhalb der Zuordnungstabelle 314 vorgenommen werden kann. Die Daten können dann unter Verwendung der abgerufenen Adresse geändert werden. Beim Ändern der Inhalte des hochausdauernden, nicht-flüchtigen Speichersegments 204 können eine oder mehrere Abnutzungsausgleichungstechniken angewendet werden, um die Gesamtausdauer des hochausdauernden, nicht-flüchtigen Speichersegments 204 zu erhöhen. Zum Beispiel könnten die Inhalte des Speicherblocks 302, wenn sie modifiziert wurden, an eine andere Speicherstelle innerhalb des hochausdauernden, nicht-flüchtigen Speichersegments 204 geschrieben werden (z. B. eine andere Speicherseite innerhalb des Speicherblocks 302 oder eine andere Speicherblockstelle). Die Zuordnungstabelle 314 kann, wenn die Daten an eine neue Speicherstelle transferriert wurden, entsprechend aktualisiert werden.
  • Die zuvorige Stelle der Inhalte des neu zugewiesenen Speicherblocks können als Abfall durch eine Abfallsammeleinheit (garbage collection engine) 310 markiert werden. Zu einem späteren Zeitpunkt kann die Abfallsammeleinheit 310 Abschnitte des hochausdauernden, nicht-flüchtigen Speichersegments 202, die als Abfall markiert sind, löschen. In manchen Implementierungen kann die Abfallsammeleinheit 310 auch verwendet werden, um Inhalte des nicht-flüchtigen Hauptspeichersegments 202 zu löschen. Die Abfallsammeleinheit 310 kann innerhalb der Hardware und/oder Software des nicht-flüchtigen Hauptspeichersegments 202 oder des hochausdauernden, nicht-flüchtigen Speichersegments 204 implementiert sein.
  • Erstes Beispiel für Neuzuweisungs-/Abnutzungsabgleichungstechnik
  • 4 ist ein Ablaufdiagramm, das einen beispielhaften Prozess zur Transferrierung eines Software-Objekts von einem nicht-flüchtigen Hauptspeichersegment in ein hochausdauerndes, nicht-flüchtiges Speichersegment 204 und die Zurverfügungstellung von Abnutzungsausgleichung für das hochausdauernde, nicht-flüchtige Speichersegment 400 illustriert. Wie auf der Spur 402 dargestellt, wird ein in einen Block Ak 404 geschriebenes Software-Objekt in einen Block B0 406 neu abgebildet. In manchen Implementierungen ist der Block Ak 404 z. B. durch die Fressererkennungseinheit 308, wie in 3 beschrieben wurde, als FresserSoftware-Objekt gekennzeichnet worden. Der Block Ak 404 kann z. B. in dem nicht-flüchtigen Hauptspeichersegment 202 liegen (wie in 2 gezeigt), wohingegen der Block B0 406 in dem hochausdauernden, nicht-flüchtigen Speichersegment 204 liegen kann. In diesem Beispiel ist der Block B0 406 der erste in einer Reihe von Blöcken, die von einem Block B1 408, einem Block B2 410 bis zu einem Block BN-1 412 reicht. Die Blöcke B0 406, B1 408, B2 410 und BN-1 412 sind anfänglich alle gelöscht. Jeder Block 46, 408, 410 und 412 kann irgendeine Zahl von Seiten nicht-flüchtigen Speichers enthalten.
  • Wie in einer zweiten Spur 414 dargestellt ist, ist der Block B0 406 geschrieben und gültig und enthält die Inhalte des Blocks Ak 404. Eine Speicherseite Ak[j] 416 innerhalb des Blocks B0 406 wird verändert. Da der nicht-flüchtige Speicher nur durch einen Lösch-Schreib-Zyklus überschrieben wird, und der nicht-flüchtige Speicher nur seiten- oder blockweise löschbar ist, unabhängig von der Schreibgröße, wird nicht der Block B0 406 gelöscht, sondern die Inhalte der Speicherseite Ak[j] 416 werden an eine neue Speicherstelle verschoben. Wie in der Spur 414 dargestellt ist, werden die Inhalte der Speicherseite Ak[j] 416 in den nächsten Block des Speichers, den Block B1 408, transferriert. Wenn eine gelöschte Seite innerhalb des Blocks B0 406 verfügbar wäre, könnte in manchen Implementierungen der Inhalt der Speicherseite Ak[j] 416 stattdessen intern innerhalb des Blocks B0 406 transferriert werden.
  • Die ursprüngliche Stelle der Speicherseite Ak[j] 416 wird als ungültig markiert, wie dies durch den ungültigen Abschnitt 420 des Blocks B0 406 innerhalb einer dritten Spur 418 dargestellt ist. In manchen Implementierungen können Speicherinhalte als ungültig markiert werden, indem eine Gültigkeitsmarke gesetzt wird (die z. B. innerhalb des Dienstleistungsbereichs 306 des Blocks B0 406 gespeichert ist, wie in 3 beschrieben). Der Block B1 408 enthält nun die Inhalte der Speicherseite Ak[j] 416.
  • 5 ist ein Ablaufdiagramm, das einen Beispielprozess zur Zurverfügungstellung von Abnutzungsausgleichung für ein hochausdauerndes, nicht-flüchtiges Speicherelement 500 illustriert. Wie innerhalb einer ersten Spur 502 dargestellt ist, ist ein Block B0 504 der erste in einer Reihe von Speicherblöcken, die von einem Block B1 506, einem Block B2 508 bis zu einem Block BN-1 510 reicht. Die Speicherblöcke B0 504, B1 506, B2 508 und BN-1 510 können z. B. innerhalb des hochausdauernden, nicht-flüchtigen Speichersegments 204 enthalten sein (wie dies z. B. in 2 gezeigt ist). Die Blöcke B1 506 und bN-1 510 sind anfänglich gelöscht. Der Block B0 504 ist vollständig geschrieben und gültig. Der Block B2 508 hat eine oder mehrere geschriebene und gültige Seiten 512 und eine oder mehrere geschriebene und ungültige Seiten 514. Der Block B2 508 hat keinen übrigen gelöschten Platz zum Schreiben zusätzlicher Datenseiten.
  • Um eine Abnutzungsausgleichung für den nicht-flüchtigen Speicher 500 zur Verfügung zu stellen, werden die geschriebenen und gültigen Seiten 512 des Blocks B2 508 in den gelöschten Block B1 506 verschoben. In manchen Implementierungen kann das Abnutzungsausgleichungsverfahren nach dem Füllen des gesamten gelöschten Platzes innerhalb des Blocks B0 504 ausgelöst werden, oder alternativ beim nächsten Schreiben auf das Speichersegment 500, nachdem die letzte gelöschte Seite des Blocks B0 504 geschrieben wurde. Wie in der zweiten Spur 516 gezeigt, ist der Block B1 506 jetzt fast völlig geschrieben und gültig aufgrund der Einführung der Speicherseite(n) 512. Der Block B2 508 ist vollständig geschrieben und gültig aufgrund der Ungültigmachung der vorherigen Speicherstelle(n) der Speicherseite(n) 512.
  • In einer dritten Spur 518 ist der Block B2 508 vollständig gelöscht. In manchen Implementierungen kann die Neuzuweisung von Speicherseiten und die Löschung von Speicherblöcken unter Verwendung der Abfallsammeleinheit 310 (wie in 3 beschrieben) erzielt werden. Der nächste Schreibzugriff auf den nicht-flüchtigen Speicher 500 kann z. B. auf eine erste gelöschte Seite einer oder mehrerer gelöschter Seiten 520 im Block B1 506 erfolgen.
  • 6 ist ein Flussdiagramm, das einen Beispielprozess 600 zur Zurverfügungstellung von Abnutzungsausgleichung für das hochausdauernde, nicht-flüchtige Speichersegment illustriert. Der Prozess 600 kann z. B. in der Ausführung der Schritte verwendet werden, wie sie in Bezug auf das hochausdauernde, nicht-flüchtige Speichersegment 400 in 4 und/oder dem hochausdauernden, nicht-flüchtigen Speichersegment 500 aus 5 dargestellt wurden.
  • Der Prozess 600 beginnt mit dem Schreiben einer Seite in dem Speicherblock n (602). Die in dem Speicherblock n geschriebene Seite kann z. B. von einem niedrig ausdauernden, nicht-flüchtigen Speichersegment (z. B. dem nicht-flüchtigen Hauptspeichersegment 204 in 2) in ein hochausdauerndes, nicht-flüchtiges Speichersegment (z. B. das hochausdauernde, nicht-flüchtige Speichersegment 204 aus 2) verschoben werden. In manchen Implementierungen kann die Fresserverwaltungseinheit 312 (wie in 3 gezeigt) die Seite von dem nicht-flüchtigen Hauptspeichersegment 202 zu dem hochausdauernden, nicht-flüchtigen Speichersegment 204 verschieben. In einem anderen Beispiel kann die in den Speicherblock n geschriebene Seite innerhalb eines hochausdauernden, nicht-flüchtigen Speichersegments aufgrund einer Veränderung des Inhalts der Seite verschoben werden. Wenn eine Seite verschoben wurde, kann die vorherige Stelle der Seite als ungültig mar kiert werden. In manchen Implementierungen wird eine Seite innerhalb eines Speicherblocks als ungültig markiert, indem eine Ungültigmarke innerhalb des Dienstleistungsbereichs des Speicherblocks gesetzt wird (z. B. der in 3 beschriebene Servicebereich 306).
  • Solange gelöschte Seiten innerhalb des Speicherblocks n (604) vorhanden sind, können weiterhin Seiten innerhalb des Speicherblocks n (602) geschrieben werden. Sobald alle Seiten innerhalb des Speicherblocks n voll sind (604), werden die geschriebenen und gültigen Seiten des Speicherblocks n + 2 in einen gelöschten Abschnitt des Speicherblocks n + 1 kopiert. Zum Beispiel kann der Speicherblock n + 2 eine oder mehrere Seiten enthalten, die geschrieben sind, aber ungültig gemacht wurden (z. B. verschoben, neu zugewiesen, etc.), und eine oder mehrere gelöschte Seiten, als auch eine oder mehrere Seiten, die geschrieben und gültig sind. Nur die Seiten, die geschrieben und gültig sind, werden in den Speicherblock n + 1 kopiert. In manchen Implementierungen kann die Seite innerhalb des Speicherblocks n + 2 so dann als ungültig markiert werden, wenn eine Seite von dem Speicherblock n + 2 in den Speicherblock n + 1 kopiert ist. Nachdem z. B. die Speicherseiten 512 von dem Block B2 508 in den Block B1 506 kopiert sind, wie in 5 gezeigt, werden die anfänglichen Stellen der Speicherseiten 512 innerhalb des Blocks B2 508 als ungültig markiert.
  • Sobald alle geschriebenen und gültigen Seiten innerhalb des Speicherblocks n + 2 in den Speicherblock n + 1 kopiert wurden, wird der Speicherblock n + 2 gelöscht (608). In manchen Implementierungen kann die Abfallsammeleinheit 310 (wie in 3 gezeigt) Seiten zwischen den Speicherblöcken verschieben und ungültige Speicherblöcke löschen. Der Prozess 600 wird fortgesetzt, indem der Speicherblockzeiger n erhöht wird, um auf den Speicherblock n + 1 zu zeigen. Zum Beispiel kann, wie in 5 gezeigt, der Speicherblockzeiger n anfänglich auf den Block B0 504 zeigen, wie dies innerhalb der Spur 502 gezeigt ist, und nach dem Löschen des Blocks B2 508 kann der Speicherblockzeiger n erhöht werden, um auf den Block B1 506 zu zeigen, wie dies in der Spur 518 dargestellt ist. Der Prozess 600 fährt fort, die Seiten des Speicherblocks n + 1 (z. B. die leeren Seiten 520 innerhalb des Blocks B1 506) zu füllen, bis der Speicherblock n + 1 vollständig geschrieben ist.
  • Zweite Abnutzungsausgleichungstechnik
  • 7 ist ein Ablaufdiagramm, das einen zweiten Beispielprozess zur Zurverfügungstellung von Abnutzungsausgleichung für ein hochausdauerndes, nicht-flüchtiges Speichersegment 700 illustriert. Wie innerhalb einer ersten Spur 702 dargestellt ist, ist ein Block B0 704 der erste einer Reihe von Speicherblöcken, die von einem Block B1 706, einem Block B2 708, einem Block B3 710 bis zu einem Block BN-1 712 reicht. Die Speicherblöcke B0 704, B1 706, B2 708, B3 710 und BN-1 712 können z. B. in dem hochausdauernden, nicht-flüchtigen Speichersegment 204 enthalten sein (wie dies z. B. in 2 gezeigt ist). Die Blöcke B1 706 und bN-1 712 sind anfänglich gelöscht. Die Blöcke B0 704 und B2 708 sind vollständig geschrieben und gültig. Somit sind in diesem Beispiel, beginnend mit einem Blockzeiger n auf den Block B0 704, alle Seiten des Blocks n + 2 (wie in dem Prozess 500 aus 5 beschrieben) geschrieben und gültig, so dass der Abnutzungsausgleichungsprozess 500 unter diesen Umständen nicht greift. Der Block B3 710 hat eine oder mehrere geschriebene und gültige Seiten 714 und eine oder mehrere geschriebene und ungültige Seiten 716. Der Block B3 710 enthält keine gelöschten Speicherseiten zum Schreiben zusätzlicher Datenseiten.
  • Um für den nicht-flüchtigen Speicher 700 eine Abnutzungsausgleichung zur Verfügung zu stellen, werden die geschriebenen und gültigen Seiten 714 des Blocks B3 710 in dem gelöschten Block B1 706 neu zugewiesen. Wie in einer zweiten Spur 718 gezeigt, ist der Block B1 706 nun teilweise geschrieben und gültig aufgrund der Einführung der geschriebenen und gültigen Seiten 714. Der Block B3 710 ist geschrieben und vollständig ungültig, da die vorherigen Stellen der geschriebenen und gültigen Seiten 714 als ungültig markiert wurden.
  • Eine oder mehrere geschriebene und gültige Seiten 720 werden von dem Block B2 708 zu dem Block B1 706 verschoben. Wie in einer dritten Spur 722 dargestellt, ist der Bock B1 706 nun mit Ausnahme einer letzten gelöschten Seite 724 gefüllt. Die letzte gelöschte Seite 724 steht bereit, den nächsten Schreibvorgang auf den nicht-flüchtigen Speicher 700 entgegenzunehmen. Auf diese Weise kann eine Deadlocksituation vermieden werden, indem Raum für einen Schreibvorgang gelassen wird, der auftreten kann, bevor die ungültigen Blöcke gelöscht sind. Wie in einer vierten Spur 726 gezeigt, kann der Block B3 710 gelöscht werden, sobald die Neuzuordnungen vorgenommen wurden.
  • 8 ist ein Flussdiagramm, das einen zweiten Beispielprozess 800 zur Zurverfügungstellung von Abnutzungsausgleichung an ein hochausdauerndes, nicht-flüchtiges Speichersegment, das von einem Hauptflashspeichersegment getrennt ist, illustriert. Der Prozess 800 könnte z. B. zur Ausführung der Schritte verwendet werden, die in Bezug auf das hochausdauernde, nicht-flüchtige Speichersegment 700 in 7 beschrieben wurden.
  • Der Prozess 800 beginnt mit dem Schreiben einer Seite in dem Speicherblock n. Die in dem Block n geschriebene Seite kann z. B. von einem niedrig ausdauernden, nicht-flüchtigen Speichersegment (z. B. dem nicht-flüchtigen Hauptspeichersegment 204 in 2) in ein hochausdauerndes, nicht-flüchtiges Speichersegment (z. B. das hochausdauernde, nicht-flüchtige Speichersegment 204 aus 2) verschoben werden. In manchen Implementierungen kann die Fresserverwaltungseinheit 312 (wie in 3 gezeigt) die Seite von dem nicht-flüchtigen Hauptspeichersegment 202 in das hochausdauernde, nicht-flüchtige Speichersegment 204 verschieben. In einem anderen Beispiel kann die in dem Block n geschriebene Seite innerhalb eines hochausdauernden, nicht-flüchtigen Speichersegments aufgrund einer Veränderung des Inhalts der Seite verschoben werden. Wenn eine Seite verschoben wurde, kann die zuvorige Stelle der Seite als ungültig markiert werden. In manchen Implementierungen wird eine Seite innerhalb eines Speicherblocks als ungültig markiert, indem eine Ungültigkeitsmarkierung innerhalb des Dienstleistungsbereichs des Blocks (z. B. des Dienstleistungsbereichs 306, wie in 3 beschrieben) gesetzt wird.
  • Solange gelöschte Seiten innerhalb des Speicherblocks n vorhanden sind (804), können weiterhin Seiten in den Speicherblock n geschrieben werden (802). Sobald alle Seiten innerhalb des Speicherblocks n voll sind (804), werden Gültigkeitsmarken für alle Seiten innerhalb des Speicherblocks n + 2 gelesen (806). Die Gültigkeitsmarken können z. B. innerhalb des Dienstleistungsbereichs 306 (wie in 3 gezeigt) des Speicherbocks n + 2 gespeichert sein. Wenn der Block n + i mehr als NPcopy gültige Seiten enthält (808), wird der Zeiger auf den Speicherblock n + 2 erhöht und die Gültigkeitsmarken des nächsten Speicherblocks n + i werden gelesen (806). NPcopy ist die Zahl von gültigen Seiten, die in einen freien Block kopiert werden. In 7 ist z. B., beginnend mit dem Speicherblockzeiger n auf den Block B0 704, der Speicherblock n + 2, der Block B2 708, vollständig geschrieben und gültig.
  • Der Prozess 800 wird fortgesetzt, um den Zeiger auf den Speicherblock n + i zu erhöhen und die Gültigkeitsmarken des Speicherblocks n + i zu lesen, während der Prozess 800 feststellt, dass der Speicherblock n + i mehr als NPcopy gültige Seiten enthält (808).
  • Um effizient zu sein, sollte NPcopy die folgende Gleichung erfüllen, die die Mindestanzahl von Seiten darstellt, die in einen freien Block während der Abnutzungsausgleichung kopiert werden können: (NPcopy +1) × (NBtot-1) > (NPb × NBpred), wobei NBtot die Gesamtzahl von Blöcken des Speichers 204 ist (z. B. NBtot = 64 für ein 64 KB Speichersegment mit Blöcken von 1 KB), NPb ist die Zahl von Seiten in einem Block (z. B. NPb = 8 für eine 8 Seiten pro Block Architektur), und NBpred ist die Maximalzahl von Blockfressern, die in den Speicher 204 verschoben werden können. NBpred ist dem Anwendungsnutzer allgemein bekannt. Mit dieser Randbedingung kann die Zeit für die Abnutzungsausgleichungsoperation reduziert werden, ohne die durch die Abnutzungsausgleichungsoperation gelieferte Ausdauerkapazität zu beeinträchtigen.
  • Es wird nun mit dem vorigen Beispiel fortgefahren. Durch Erhöhen des Speicherblockzeigers auf n + 3 enthält der Speiche4rblock B3 710 sowohl eine oder mehrere geschriebene und gültige Seiten 714 als auch eine oder mehrere geschriebene und ungültige Seiten 716.
  • Die gültigen Seiten des Speicherblocks n + i werden in den Speicherblock n + 1 kopiert (810). Zum Beispiel werden die Speicherseiten 714 des Blocks B3 710 in den Block B1 706 kopiert.
  • Wenn der Zeiger auf den Speicherblock n + i erhöht wurde (z. B. i ist größer als 2) (812), dann wird eine Zahl von Seiten des Blocks n + 2 in den Block n + 1 kopiert (814). In diesem Beispiel ist die Zahl der Seiten des Blocks n + 2, die in den Block n + 1 kopiert werden, gleich NPcopy minus der Zahl von gültigen Seiten des Blocks n + i. Der Prozess 800 berechnet die Zahl der Seiten pro Speicherblock, vermindert diese Zahl um eins, und vermindert diesen Wert des Weiteren um die Zahl der Seiten, die von dem Speicherblock n + i kopiert wurden. Zum Beispiel wurden eine oder mehrere Seiten 720 des Blocks B2 708 in den Block B1 706 kopiert, so dass der Block B1 706, wie in der Spur 722 gezeigt, eine gelöschte Seite 724 enthält.
  • Der Speicherblock n + i wird gelöscht (816). In manchen Implementierungen kann die Abfallsammeleinheit 310 (wie in 3 gezeigt) Seiten zwischen Speicherblöcken verschieben und ungültige Speicherblöcke löschen. Der Prozess 800 wird fortgesetzt, indem der Speicherblockzeiger n erhöht wird, um auf den Speicherblock n + 1 zu zeigen. Wie in 7 gezeigt, kann der Speicherblockzeiger n anfänglich z. B. auf den Block B0 704 zeigen, wie dies in der Spur 702 gezeigt ist, und nach dem Löschen des Blocks B3 710 kann der Speicherblockzeiger n erhöht werden, um auf den Block B1 706 zu zeigen, wie dies in der Spur 726 gezeigt ist. Der Prozess 800 fährt fort, die Seiten des Speicherblocks n + 1 (z. B. die leere Seite 724 innerhalb des Blocks B1 706) zu füllen, bis der Speicherblock n + 1 vollständig geschrieben ist.
  • 9 ist ein Flussdiagramm, das einen Beispielprozess 900 zur Erkennung von Fresser-Software-Objekten innerhalb eines nicht-flüchtigen Hauptspeichersegments und zur Verschiebung der Fresser in ein hochausdauerndes, nicht-flüchtiges Speichersegment illustriert. Der Prozess 900 kann z. B. innerhalb des Mikrocontrollers 100 verwendet werden, der in 1 beschrieben wurde.
  • Der Prozess 900 beginnt mit dem Speichern einer Menge von Software-Objekten in einem ersten Segment des nicht-flüchtigen Speichers (902). Die Software-Objekte können z. B. Programmanweisungen, Datendateien, Betriebssysteminformation, und/oder virtuellen Maschinencode enthalten. Unterschiedliche Software-Objekte können unterschiedliche Anforderungen haben. Zum Beispiel können manche Software-Objekte, wie z. B. Programmanweisungen, im Allgemeinen statisch sein, aber schnelle Zugriffszeiten erfordern. Andere Software-Objekte, wie z. B. Dateizuordnungstabellen (FAT) eines Dateisystems können häufige Aktualisierungen erfodern. Das erste Segment des nicht-flüchtigen Speichers kann z. B. das nicht-flüchtige Hauptspeichersegment 202 sein, das in 2 beschrieben wurde.
  • Eine Untermenge von Software-Objekten wird identifiziert, die eine Ausdaueranforderung haben, die die Ausdauergrenze des nicht-flüchtigen Speichers überschreitet (904). In manchen Implementierungen erkennt ein Hardware- oder Software-Prozess, wie z. B. die Fressererkennungseinheit 308 (wie in 3 beschrieben), Software-Objekte, die eine hohe Aktualisierungsfrequenz haben. Zum Beispiel kann die Fressererkennungseinheit 308 die Zahl der Löschvorgänge, die auf einem Block des nicht-flüchtigen Speichers vorgenommen wurden, mit der Ausdauergrenze des nicht-flüchtigen Speichers vergleichen. Wenn ein Block des nicht-flüchtigen Speichers sich einem mit der Ausdauer des nicht-flüchtigen Speichers verbundenen Grenzwert annähert, kann die Fressererkennungseinheit 308 z. B. erkennen, dass das Software-Objekt eine hohe Ausdaueranforderung hat.
  • Die Untermenge von Software-Objekten wird in einem zweiten Segment des nicht-flüchtigen Speichers gespeichert (906). In manchen Implementierungen ist das zweite Segment des nicht-flüchtigen Speichers innerhalb einer logischen Partition des Speichers, der auch das erste Segment des nicht-flüchtigen Speichers enthält, implementiert. In anderen Implementierungen ist das zweite Segment des nicht-flüchtigen Speichers innerhalb einer zweiten Speichervorrichtung (z. B. einem physikalisch getrennten eingebetteten Speicherbereich) implementiert. Das zweite Segment des nicht-flüchtigen Speichers kann z. B. das hochausdauernde, nicht-flüchtige Speichersegment 204 sein, das in 2 beschrieben wurde. Ein als Fresser identifizierte Software-Objekt kann z. B. durch die Fresserverwal tungseinheit 312 (wie in 3 beschrieben) in das zweite Segment des nicht-flüchtigen Speichers verschoben werden. Eine Zuordnungstabelle, wie die Zuordnungstabelle 314, kann mit der neuen Adressstelle des Software-Objekts aktualisiert werden.
  • Abnutzungsausgleichung wird auf dem zweiten Segment des nicht-flüchtigen Speichers ausgeführt (908). In manchen Implementierungen können die Software-Objekte innerhalb des zweiten Segments des nicht-flüchtigen Speichers über die Speicherstellen rotiert werden, so dass die durchschnittliche Zahl von Löschvorgängen pro Speicherstelle verringert wird. Zum Beispiel kann das zweite Segment des nicht-flüchtigen Speichers viel mehr Speicherplatz enthalten, als erforderlich ist, um alle Software-Fresserobjekte zu speichern. Obwohl die Ausdauergrenze des zweiten Segments des nicht-flüchtigen Speichers der Ausdauergrenze des ersten Segments des nicht-flüchtigen Speichers entsprechen kann, kann die wahrgenommene Ausdauer des zweiten Segments des nicht-flüchtigen Speichers viel größer sein. In manchen Implementierungen, wenn die im Zusammenhang mit 48 beschriebenen Abnutzungsausgleichungsalgorithmen auf das zweite nicht-flüchtige Speichersegment angewendet werden. Gleichzeitig kann das erste Segment des nicht-flüchtigen Speichers ohne Abnutzungsausgleichungsalgorithmen implementiert werden.
  • Auch wenn diese Druckschrift viele konkrete Implementierungsdetails enthält, sollten diese nicht als beschränkend für den Umfang des beanspruchten Gegenstands interpretiert werden, sondern als Beschreibung von Merkmalen konkreter Ausführungsformen. Bestimmte Merkmale, die in dieser Beschreibung im Zusammenhang mit getrennten Ausführungsformen beschrieben wurden, können auch in Kombination in einer einzigen Ausführungsform implementiert werden. Umgekehrt können verschiedene Merkmale, die im Zusammenhang mit einer einzelnen Ausführungsform beschrieben wurden, auch in mehreren Ausführungsformen getrennt oder in jeder geeigneten Kombination miteinander implementiert werden. Obwohl darüber hinaus oben stehend einige Merkmale als in bestimmten Kombinationen zusammenwirkend beschrieben und sogar anfänglich so beansprucht wurden, können ein oder mehrere Merkmale aus einer beanspruchten Kombination in manchen Fallen von der Kombination ausgeschlossen werden, und die beanspruchte Kombination kann auf eine Unterkombination oder Abwandlung einer Unterkombination gerichtet werden.
  • Eine Zahl von Implementierungen wurde beschrieben. Nichtsdestotrotz versteht sich, dass verschiedene Abwandlungen vorgenommen werden können. Zum Beispiel können Schritte eines oder mehrerer Prozesse kombiniert, gelöscht, abgewandelt oder ergänzt werden, um weitere Prozesse zu bilden. Als weiteres Beispiel erfordern die in den Figuren dargestellten Prozessschritte nicht die konkret gezeigte Reihenfolge zur Erzielung vorteilhafter Ergebnisse. Zusätzlich können andere Schritte zur Verfügung gestellt werden, oder Schritte können in den beschriebenen Prozessen ausgelassen werden und anderes Material kann zu den beschriebenen Prozessen hinzugefügt oder von ihnen weggenommen werden. Demzufolge liegen auch andere Implementierungen innerhalb des Umfangs der folgenden Ansprüche.

Claims (15)

  1. Verfahren umfassend: Speichern einer Menge von Software-Objekten in einem ersten Segment eines nicht-flüchtigen Speichers; Identifizierung einer Teilmenge von Software-Objekten, die eine Ausdaueranforderung haben, die eine Ausdauergrenze des nicht-flüchtigen Speichers überschreitet; Speichern der Teilmenge der Software-Objekte in einem zweiten Segment des nicht-flüchtigen Speichers; und Ausführen einer Abnutzungsausgleichung auf dem zweiten Segment des nicht-flüchtigen Speichers.
  2. Verfahren nach Anspruch 1, wobei das erste und das zweite Segment mit einem oder mit mehreren nicht-flüchtigen Speichergeräten verbunden ist.
  3. Verfahren nach Anspruch 1, wobei das erste Segment Code oder Daten und das zweite Segment Daten speichert.
  4. Verfahren nach Anspruch 1, wobei das zweite Segment des nicht-flüchtigen Speichers eine höhere Ausdauerkapazität hat, als das erste Segments des nicht-flüchtigen Speichers.
  5. Verfahren nach Anspruch 1, wobei die Identifizierung einer Teilmenge von Software-Objekten des Weiteren umfasst: Erkennen, ob eine Zahl von Löschoperationen auf einer Seite oder einem Block, die/der ein Software-Objekt enthält, sich einer Löschvorgangsgrenze annähert, die mit dem nicht-flüchtigen Speichergerät verbunden ist; und abhängig von dem Ergebnis der Erkennung, Verschieben der Seite oder des Blocks in das zweite Segment.
  6. Verfahren nach Anspruch 5, wobei die Erkennung umfasst: Zählen der Zahl von Löschvorgängen, die auf einer Seite oder einem Block ausgeführt werden; und Speichern der Zahl in der Seite oder dem Block.
  7. Verfahren nach Anspruch 1, des Weiteren umfassend: Aktualisierung einer Abbildung zwischen einer logischen Adresse der Seite oder dem Block in dem ersten Segment und einer neue physikalischen Adresse der Seite oder des Blocks in dem zweiten Segment.
  8. Verfahren nach Anspruch 7, des Weiteren umfassend Speichern der Abbildung in der Seite oder dem Block.
  9. Verfahren nach Anspruch 1, wobei eine Kapazität des zweiten Segments in Übereinstimmung mit einer Software-Anwendungsausdaueranforderung berechnet wird.
  10. Verfahren nach Anspruch 1, des Werteren umfassend: Feststellen, ob ein Software-Objekt kleiner ist als ein Block; und wenn dies der Fall ist, Verschieben des gesamten Blocks, der das Software-Objekt enthält, in das zweite Segment.
  11. System, umfassend: nicht-flüchtigen Speicher; einen Prozessor, der mit dem nicht-flüchtigen Speicher gekoppelt ist und dazu eingerichtet ist: eine Menge von Software-Objekten in einem ersten Segment des nicht-flüchtigen Speichers zu speichern; eine Teilmenge von Software-Objekten zu identifizieren, die eine Ausdaueranforderung haben, die eine Ausdauergrenze des nicht-flüchtigen Speichers überschreitet; die Teilmenge von Software-Objekten in einem zweiten Segment des nicht-flüchtigen Speichers zu speichern; und eine Abnutzungsausgleichung auf dem zweiten Segment des nicht-flüchtigen Speichers auszuführen.
  12. System nach Anspruch 11, wobei das erste Segment Code oder Daten und das zweite Segment Daten speichert.
  13. System nach Anspruch 11, wobei das zweite Segment des nicht-flüchtigen Speichers eine höhere Ausdauerkapazität hat, als das erste Segments des nicht-flüchtigen Speichers.
  14. System nach Anspruch 11, wobei die Identifizierung einer Teilmenge von Software-Objekten des Weiteren umfasst: Erkennen, ob eine Zahl von Löschoperationen auf einer Seite oder einem Block, die/der ein Software-Objekt enthält, sich einer Löschvorgangsgrenze annähert, die mit dem nicht-flüchtigen Speichergerät verbunden ist; und abhängig von dem Ergebnis der Erkennung, Verschieben der Seite oder des Blocks in das zweite Segment.
  15. System nach Anspruch 11, des Weiteren umfassend: Aktualisieren einer Abbildung zwischen einer logischen Adresse der Seite oder des Blocks in dem ersten Segment und einer neue physikalischen Adresse der Seite oder des Blocks in dem zweiten Segment.
DE102009046444A 2008-11-10 2009-11-06 An die Software angepasste Abnutzungsausgleichung Withdrawn DE102009046444A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/268,383 US8244959B2 (en) 2008-11-10 2008-11-10 Software adapted wear leveling
US12/268,383 2008-11-10

Publications (1)

Publication Number Publication Date
DE102009046444A1 true DE102009046444A1 (de) 2010-07-15

Family

ID=42166228

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102009046444A Withdrawn DE102009046444A1 (de) 2008-11-10 2009-11-06 An die Software angepasste Abnutzungsausgleichung

Country Status (4)

Country Link
US (1) US8244959B2 (de)
CN (1) CN101739345A (de)
DE (1) DE102009046444A1 (de)
TW (1) TW201021043A (de)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
IT1392921B1 (it) * 2009-02-11 2012-04-02 St Microelectronics Srl Regioni allocabili dinamicamente in memorie non volatili
US20120117303A1 (en) * 2010-11-04 2012-05-10 Numonyx B.V. Metadata storage associated with flash translation layer
EP2498187A1 (de) * 2011-03-04 2012-09-12 Nxp B.V. Multiprozessoranordnung mit gemeinsam genutztem Speicher und Verfahren zur Kommunikation zwischen den Prozessoren in einer Multiprozessoranordnung
US9176670B2 (en) * 2011-04-26 2015-11-03 Taejin Info Tech Co., Ltd. System architecture based on asymmetric raid storage
US9003247B2 (en) * 2011-04-28 2015-04-07 Hewlett-Packard Development Company, L.P. Remapping data with pointer
FR2977047B1 (fr) * 2011-06-22 2013-08-16 Starchip Procede de gestion de l'endurance de memoires non volatiles.
US8886963B2 (en) * 2011-09-15 2014-11-11 Apple Inc. Secure relocation of encrypted files
US9037779B2 (en) * 2011-12-19 2015-05-19 Sandisk Technologies Inc. Systems and methods for performing variable flash wear leveling
US9146855B2 (en) * 2012-01-09 2015-09-29 Dell Products Lp Systems and methods for tracking and managing non-volatile memory wear
US9176902B1 (en) * 2012-06-27 2015-11-03 Emc Corporation Data migration techniques
US9032159B2 (en) * 2012-06-27 2015-05-12 Via Technologies, Inc. Data prefetcher with complex stride predictor
US9201662B2 (en) * 2013-03-29 2015-12-01 Dell Products, Lp System and method for pre-operating system memory map management to minimize operating system failures
KR20150015621A (ko) * 2013-07-31 2015-02-11 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
US10338817B2 (en) * 2014-12-30 2019-07-02 Sandisk Technologies Llc Systems and methods for storage recovery
US10078457B2 (en) * 2016-01-13 2018-09-18 International Business Machines Corporation Managing a set of wear-leveling data using a set of bus traffic
US10095597B2 (en) 2016-01-13 2018-10-09 International Business Machines Corporation Managing a set of wear-leveling data using a set of thread events
US9886324B2 (en) 2016-01-13 2018-02-06 International Business Machines Corporation Managing asset placement using a set of wear leveling data
KR20180076425A (ko) * 2016-12-27 2018-07-06 에스케이하이닉스 주식회사 컨트롤러 및 컨트롤러의 동작 방법
US11436138B2 (en) * 2020-10-21 2022-09-06 EMC IP Holding Company LLC Adaptive endurance tuning of solid-state storage system

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5485595A (en) * 1993-03-26 1996-01-16 Cirrus Logic, Inc. Flash memory mass storage architecture incorporating wear leveling technique without using cam cells
US5479638A (en) * 1993-03-26 1995-12-26 Cirrus Logic, Inc. Flash memory mass storage architecture incorporation wear leveling technique
US6000006A (en) * 1997-08-25 1999-12-07 Bit Microsystems, Inc. Unified re-map and cache-index table with dual write-counters for wear-leveling of non-volatile flash RAM mass storage
US7064978B2 (en) * 2002-07-05 2006-06-20 Aplus Flash Technology, Inc. Monolithic, combo nonvolatile memory allowing byte, page and block write with no disturb and divided-well in the cell array using a unified cell structure and technology with a new scheme of decoder and layout
US7106636B2 (en) 2004-06-22 2006-09-12 Intel Corporation Partitionable memory device, system, and method
US20060282610A1 (en) 2005-06-08 2006-12-14 M-Systems Flash Disk Pioneers Ltd. Flash memory with programmable endurance
JP4688584B2 (ja) 2005-06-21 2011-05-25 株式会社日立製作所 ストレージ装置
US20070208904A1 (en) * 2006-03-03 2007-09-06 Wu-Han Hsieh Wear leveling method and apparatus for nonvolatile memory
US20080140918A1 (en) 2006-12-11 2008-06-12 Pantas Sutardja Hybrid non-volatile solid state memory system
US7804718B2 (en) * 2007-03-07 2010-09-28 Mosaid Technologies Incorporated Partial block erase architecture for flash memory
US7975109B2 (en) * 2007-05-30 2011-07-05 Schooner Information Technology, Inc. System including a fine-grained memory and a less-fine-grained memory

Also Published As

Publication number Publication date
CN101739345A (zh) 2010-06-16
US8244959B2 (en) 2012-08-14
TW201021043A (en) 2010-06-01
US20100122015A1 (en) 2010-05-13

Similar Documents

Publication Publication Date Title
DE102009046444A1 (de) An die Software angepasste Abnutzungsausgleichung
DE60030876T2 (de) Bereichsverwaltung eines nichtflüchtigen Speichers mit hoher Kapazität
DE102009034651A1 (de) Prozess und Verfahren zur Abbildung von logischen Adressen auf physische Adressen in Festkörperplatten
DE60121697T2 (de) Verfahren zum ansteuern von remapping in einem flash-speicher und in einer dafür geeigneten flash-speicher-architektur
DE19782041B4 (de) Verfahren zum Durchführen eines kontinuierlichen Überschreibens einer Datei in einem nicht-flüchtigen Speicher
DE102005019842B4 (de) System und Verfahren zum sequentiellen Schreiben von Daten in einen Flash-Speicher
DE102012208141B4 (de) Ausgleich nachlassender Funktionsfähigkeit
DE112010003650B4 (de) Container-Markierungsschema zum Verringern einer Schreibverstärkung bei Halbleiter-Einheiten
DE102006003261A1 (de) Speichersystem und Verfahren zur Datenzusammenführung
EP2923261B1 (de) VERFAHREN ZUR STEUERUNG EINES FLASH-SPEICHERS ZUR MASSENSPEICHERUNG, DER VON EINEM AN EINEN HOST ANSCHLIEßBAREN KOMMUNIKATIONSGERÄT UMFASST IST, UND COMPUTERPROGRAMMPRODUKT ZUR AUSFÜHRUNG DES VERFAHRENS
DE102017112751A1 (de) Internes Vorkonditionieren von Halbleiterlaufwerken für verschiedene Arbeitslasten
DE102005031525A1 (de) Verfahren und System zur Steuerung eines Flashspeichers und Speichersystem
DE102009019271A1 (de) Übertragen von Sequenzzahlen für das Wiederherstellen nach Stromausfall bei einem nichtflüchtigen Speicher
EP2215636B1 (de) VERFAHREN ZUR GLEICHMÄßIGEN NUTZUNG MEHRERER FLASHSPEICHERCHIPS
DE112010004667T5 (de) Speichervorrichtung und Speichersteuerung
DE102014101185A1 (de) Verfahren zur Verwaltung von Flash-Speichern mit gemischten Speichertypen unter Verwendung einer fein-granulierten Zuordnung logischer auf physikalische Speicheradressen
DE102012203713A1 (de) Verfahren und Vorrichtung zur Verlängerung der Lebensdauer von Speichern
DE60317801T2 (de) Verfahren und vorrichtung zur erkennung von fehlern während des schreibens in einen nichtflüchtigen speicher
DE60019364T2 (de) Speicherdefragmentierung in Chipkarten
DE112021000474T5 (de) Durchführung einer Medienverwaltungsoperation basierend auf einer Änderung eines Schreibmodus eines Datenblocks in einem Cache
EP1676203A2 (de) Verfahren zum schreiben von speichersektoren in einem blockweise löschbaren speicher
WO2012062233A1 (de) Verfahren zur freigabe nicht länger benötigter speicherbereiche auf nichtflüchtigen speichermedien
DE10321104B4 (de) Verfahren zur Ablage von veränderlichen Daten
DE112015003923B4 (de) Überlagerte Löschblock-Zuordnung
DE102014006998A1 (de) Korrektur eines programmierbaren Speichers

Legal Events

Date Code Title Description
8127 New person/name/address of the applicant

Owner name: AMTEL ROUSSET S.A.S., ROUSSET CEDEX, FR

R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee

Effective date: 20140603