DE112010003650B4 - Container-Markierungsschema zum Verringern einer Schreibverstärkung bei Halbleiter-Einheiten - Google Patents

Container-Markierungsschema zum Verringern einer Schreibverstärkung bei Halbleiter-Einheiten Download PDF

Info

Publication number
DE112010003650B4
DE112010003650B4 DE112010003650.0T DE112010003650T DE112010003650B4 DE 112010003650 B4 DE112010003650 B4 DE 112010003650B4 DE 112010003650 T DE112010003650 T DE 112010003650T DE 112010003650 B4 DE112010003650 B4 DE 112010003650B4
Authority
DE
Germany
Prior art keywords
update frequency
block
control unit
new
valid data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
DE112010003650.0T
Other languages
English (en)
Other versions
DE112010003650T5 (de
Inventor
Evangelos S. Eleftheriou
Xiaoyu Hu
Robert Haas
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.)
SK Hynix Inc
Original Assignee
SK Hynix Inc
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 SK Hynix Inc filed Critical SK Hynix Inc
Publication of DE112010003650T5 publication Critical patent/DE112010003650T5/de
Application granted granted Critical
Publication of DE112010003650B4 publication Critical patent/DE112010003650B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/349Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/349Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
    • G11C16/3495Circuits or methods to detect or delay wearout of nonvolatile EPROM or EEPROM memory devices, e.g. by counting numbers of erase or reprogram cycles, by using multiple memory areas serially or cyclically

Landscapes

  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Dram (AREA)

Abstract

Halbleiter-Speichervorrichtung (300), die umfasst: eine Vielzahl von Blöcken, die als Speicher für die Halbleiter-Speichervorrichtung (300) eingerichtet sind, wobei jeder Block eine Vielzahl von Datenseiten umfasst; und eine Steuereinheit (305) mit integrierten Schaltungen, welche konfiguriert sind, die Halbleiter-Speichervorrichtung (300) zu steuern; wobei einem freien Block durch die Steuereinheit (305) eine Aktualisierungshäufigkeit zugewiesen wird; wobei, für eine bestimmte Datenseite, jede bestimmte Datenseite in einen Block geschrieben wird, der Datenseiten mit einer Aktualisierungshäufigkeit aufweist, welche der Aktualisierungshäufigkeit entspricht, die durch die Steuereinheit (305) für diese bestimmte Datenseite berechnet wurde; wobei die Steuereinheit (305) dazu ausgebildet ist, sobald eine gültige Datenseite von einem besetzten Block in einen neuen Block verschoben wird: eine vorherige Aktualisierungshäufigkeit der gültigen Datenseite mit r und eine neue Aktualisierungshäufigkeit der gültigen Datenseite mit r' zu bezeichnen, zu bestimmen, dass die gültige Datenseite in einem neuen Block gespeichert wird, welcher der neuen Aktualisierungshäufigkeit r' = –1 entspricht, wenn r > 0 ist, wobei 0 ein höchstes statisches Niveau ist, und zu bestimmen, dass die gültige Datenseite in einem neuen Block gespeichert wird, welcher der neuen Aktualisierungshäufigkeit r' = 0 entspricht, falls r > 0 nicht erfüllt ist.

Description

  • HINTERGRUND
  • Beispielhafte Ausführungsformen beziehen sich auf Halbleitereinheiten und genauer gesagt auf ein Schema für Datenplatzierung, Speicherbereinigung und Ausgleich bei nachlassender Funktionsfähigkeit von Halbleiter-Speichereinheiten.
  • Halbleiterdatenträger (solid-state drive, SSD) wie zum Beispiel NAND-Flash-Speicher sind in der Lage, eine 10- bis 100fache Leistungsverbesserung gegenüber herkömmlichen Festplattenlaufwerken (hard disk drives, HDDs) bereitzustellen. Bei einem typischen Aufbau ist ein NAND-Flash-Speicher in Blöcken angeordnet, und jeder Block enthält üblicherweise 64 Datenseiten von jeweils 4 KB. Lese- und Schreibvorgänge werden auf Seiten bezogen verarbeitet. Eine Datenseite muss gelöscht werden, bevor Daten darauf geschrieben werden können.
  • US 2009/0164702 A1 beschreibt Systeme und/oder Verfahren, die eine frequenzverteilte Flash-Speicherzuweisung bereitstellen. Die Systeme und Verfahren bestimmen die Rate, mit der eine Systemadresse geschrieben wird und den aktuellen Löschzyklus-Zustand jedes Datenblocks in der nicht-flüchtigen Speichervorrichtung und ordnet der Schreiboperation eine physikalische Adresse zu basierend auf der bestimmten Systemadressrate und dem aktuellen Löschzyklus-Zustand jedes Datenblocks in der nicht-flüchtigen Speichervorrichtung. Dabei sind Systemadressen, die häufiger zugeordnet werden, zugeordnete physikalische Seitenadresse von Datenblöcken, die einen niedrigen Löschzyklus-Zustand aufweisen (d. h. mehr Zyklusdauer verbleibt) und Systemadressen, die weniger häufig zugeordnet werden, sind zugeordnete physikalische Seitenadressen von Datenblöcken, die einen hohen Löschzyklus-Zustand aufweisen (d. h. weniger Zyklusdauer verbleibt).
  • DE 603 19 563 T2 beschreibt Verfahren und Vorrichtungen zum Speichern von Löschungszählungern in einem nicht-flüchtigen Speicher eines nicht-flüchtigen Systems. Eine Datenstruktur in einem nicht-flüchtigen Speicher umfasst einen ersten Indikator, der einen Hinweis auf eine Anzahl von Malen bereitstellt, die ein erster Block einer Mehrzahl von Blöcken in einem nicht-flüchtiger Speicher gelöscht worden ist. Die Datenstruktur umfasst zudem eine Kopfzeile, die so angeordnet ist, dass sie Informationen umfasst, die sich auf die Blöcke in dem nicht-flüchtigen Speicher beziehen.
  • Aufgrund der besonderen Eigenschaften von Flash-Speichern besteht eines der Probleme beim Entwickeln von Halbleiterdatenträgern in der Schreibverstärkung (write amplification). Ein Flash-Speicher muss gelöscht werden, bevor er für Schreibvorgänge wiederverwendbar ist, und der Löschvorgang erfolgt auf der Grundlage von Blöcken, während der Schreibvorgang auf einer erheblich niedrigeren Datenseitenebene stattfindet. Bevor ein Block gelöscht werden kann, müssen alle gültigen Datenseiten in diesem Block auf andere Speicherorte verschoben werden, was zu einer Schreibverstärkung (write amplification) führt. Man kann die Auswirkungen von Schreibverstärkung (write amplification) durch Überausstattung (over-provisioning) verringern, indem nur ein Teil des rohen Flash-Speicherplatzes für den Benutzerbereich verfügbar gemacht wird. Überausstattung führt zu höheren Kosten.
  • ÜBERSICHT
  • Gemäß einer beispielhaften Ausführungsform wird eine Halbleiter-Speichereinheit bereitgestellt. Mehrere Blöcke sind als Speicher für eine Halbleiter-Speichereinheit angeordnet, und jeder Block enthält mehrere Seiten. Eine Steuereinheit ist zum Ansteuern der Halbleiter-Speichereinheit eingerichtet. Jedem freien Block der mehreren Blöcke wird vor dem Schreibvorgang von der Steuereinheit eine Markierungsstufe zugewiesen, und insbesondere Blöcken mit einer geringen Anzahl von Programmier-/Lösch-Zyklen oder gleichbedeutend mit einer großen verbleibenden Lebensdauer und umgekehrt wird zum Zweck des Ausgleichs nachlassender Funktionsfähigkeit eine Markierung zugewiesen, die hohe Dynamik anzeigt. In Bezug auf eine bestimmte Seite der mehreren Seiten wird jede bestimmte Datenseite in einen Block der mehreren Blöcke geschrieben, der eine Markierungsstufe entsprechend einer Dynamikstufe aufweist, die durch die Steuereinheit für diese bestimmte Seite berechnet wurde.
  • Gemäß einer beispielhaften Ausführungsform wird eine Halbleiter-Speichereinheit bereitgestellt. Mehrere Blöcke sind als Speicher für die Festkörper-Speichereinheit angeordnet. Eine Steuereinheit ist zum Ansteuern der Halbleiter-Speichereinheit eingerichtet. Beim Schreiben von Daten, die an eine logische Blockadresse adressiert sind, ist die Steuereinheit in der Lage, eine aktuelle Markierungsstufe für die logische Blockadresse durch Erhöhen ihrer vorherigen Markierungsstufe um 1 oder mehr und zum Schreiben der Daten in einen freien Block der mehreren Blöcke festzulegen, der dieselbe Markierungsstufe aufweist.
  • Gemäß einer beispielhaften Ausführungsform wird eine Halbleiter-Speichereinheit bereitgestellt. Mehrere Blöcke sind als Speicher für die Halbleiter-Speichereinheit angeordnet, und eine Steuereinheit ist zum Ansteuern der Festkörpereinheit eingerichtet. Beim Ausführen einer Schreibanforderung zum Verschieben gültiger Datenseiten eines Blocks der mehreren Blöcke ist die Steuereinheit in der Lage, eine aktuelle Markierungsstufe für den Block der mehreren Blöcke durch Verringern seiner bisherigen Markierungsstufe um 1 oder mehr und zum Schreiben der gültigen Datenseiten in einen freien Block der Vielzahl von Blöcken festzulegen, der dieselbe Markierungsstufe aufweist.
  • Gemäß einer beispielhaften Ausführungsform wird eine Halbleiter-Speichereinheit bereitgestellt. Mehrere Blöcke sind als Speicher für die Halbleiter-Speichereinheit angeordnet, und eine Steuereinheit ist zum Ansteuern der Halbleiter-Einheit eingerichtet. Bei dem oben beschriebenen Algorithmus verfügt jeder Block mit geschriebenen Daten über eine Container-Markierungsstufe, wobei die Stufe die Dynamik-Statik-Stufe aller Datenseiten in diesem Block kennzeichnet. Der Algorithmus und die entsprechende Datenplatzierung ermöglichen das Platzieren von Datenseiten mit einer ähnlichen Aktualisierungshäufigkeit in demselben Block, wodurch die Schreibverstärkung (write amplification) entsprechend verringert wird.
  • Gemäß einer beispielhaften Ausführungsform wird eine Halbleiter-Speichereinheit bereitgestellt. Mehrere Blöcke sind als Speicher für die Halbleiter-Speichereinheit angeordnet, und eine Steuereinheit ist zum Ansteuern der Halbleitereinheit eingerichtet. Die Steuereinheit schätzt die Dynamik-Statik-Stufe jeder zu schreibenden Datenseite durch Ermitteln ihrer aktuellen Markierungsstufe und speichert hochdynamische Datenseiten in einem DRAM-Cachespeicher statt in Flash-Blöcken.
  • Gemäß einer beispielhaften Ausführungsform wird eine Halbleiter-Speichereinheit bereitgestellt. Mehrere Blöcke sind als Speicher für die Halbleiter-Speichereinheit angeordnet, und eine Steuereinheit ist zum Ansteuern der Festkörpereinheit eingerichtet. Die Steuereinheit schätzt die Dynamik-Statik-Stufe jeder zu schreibenden Datenseite durch Ermitteln ihrer aktuellen Container-Markierung und speichert hochdynamische Datenseiten in einem MRAM bzw. FeRAM statt in Flash-Blöcken.
  • Weitere Merkmale werden durch die Techniken der vorliegenden Offenbarung realisiert. Andere Systeme, Verfahren, Vorrichtungen und/oder Computerprogrammprodukte gemäß anderen Ausführungsformen werden hierin ausführlich beschrieben und werden als Teil der beanspruchten Erfindung betrachtet. Zum besseren Verständnis von beispielhaften Ausführungsformen und Merkmalen sei auf die Beschreibung und auf die Zeichnungen verwiesen.
  • KURZE BESCHREIBUNG DER VERSCHIEDENEN ANSICHTEN IN DEN ZEICHNUNGEN
  • Der Gegenstand, der als die Erfindung angesehen wird, wird in den Ansprüchen am Ende der Beschreibung genau dargelegt und ausdrücklich beansprucht. Die obigen und andere Merkmale der vorliegenden Offenbarung werden aus der folgenden genauen Beschreibung in Verbindung mit den beigefügten Zeichnungen deutlich, für die gilt:
  • 1 veranschaulicht ein Beispiel für einen Computer, der Fähigkeiten aufweist, die möglicherweise in beispielhaften Ausführungsformen enthalten sind.
  • 2 veranschaulicht ein Beispiel für eine Schreibverstärkung (write amplification).
  • 3 veranschaulicht ein Blockschaltbild für eine Halbeiter-Speichereinheit nach beispielhaften Ausführungsformen.
  • 4 veranschaulicht ein Verfahren für eine Schreibanforderung durch einen Benutzer gemäß beispielhaften Ausführungsformen.
  • 5 veranschaulicht ein Verfahren für eine Verschiebungsschreibanforderung gemäß beispielhaften Ausführungsformen.
  • 6 veranschaulicht ein Blockschaltbild, das die Nutzung eines Schreib-Cachespeichers zur Schreibverringerung (write reduction) zusammen mit einem Container-Markierungsschema gemäß beispielhaften Ausführungsformen zeigt.
  • 7 veranschaulicht ein Beispiel für die Nutzung eines MRAM und/oder FeRAM zum Verbessern der Lebensdauer zusammen mit einem Container-Markierungsschema gemäß beispielhaften Ausführungsformen.
  • 8 stellt ein Blockschaltbild eines beispielhaften Entwicklungsablaufs dar, der bei der Entwicklung, der Simulation, dem Testen, dem Layout und/oder der Herstellung von Halbleiter-IC-Logik verwendbar ist.
  • GENAUE BESCHREIBUNG
  • Beispielhafte Ausführungsformen stellen ein als Container-Markierung bezeichnetes Datenplatzierungsschema bereit, das in der Lage ist, die Wirksamkeit von Speicherbereinigung und Ausgleich nachlassender Funktionsfähigkeit, die letztendlich zu Schreibverringerung (write reduction) führen, zu verbessern. Eine Container-Markierung ist ein Kennzeichen dafür, wie häufig eine Datenseite aktualisiert bzw. geändert wird. Beispielhafte Ausführungsformen stellen einen Algorithmus bereit, der zum Beispiel in einer Steuereinheit umgesetzt ist, um die Dynamikstufe von Datenseiten adaptiv zu schätzen, und die Steuereinheit ist in der Lage, Datenseiten derselben Dynamikstufe in Blöcken zu gruppieren und zu platzieren, die mit der entsprechenden Container-Markierung markiert sind. Insbesondere Blöcken mit einer geringeren Anzahl von Programmier-/Lösch-Zyklen oder gleichbedeutend mit einer großen verbleibenden Lebensdauer und umgekehrt wird zum Zweck des Ausgleichs nachlassender Funktionsfähigkeit eine Markierung zugewiesen, die hohe Dynamik kennzeichnet.
  • Beispielhafte Ausführungsformen offenbaren einen Mechanismus wie zum Beispiel die Steuereinheit zum Schätzen der Dynamik- und/oder Statikstufe der Häufigkeit der Aktualisierung einer Datenseite und platzieren infolgedessen Datenseiten entsprechend der Dynamik-/Statikstufe in einer Halbleiter-Speichereinheit (z. B. einem Flash-Speicher). Des Weiteren speichern beispielhafte Ausführungsformen möglicherweise die am häufigsten aktualisierten Seiten in einem Schreib-Cachespeicher auf der Grundlage eines dynamischen Speichers mit wahlfreiem Zugriff (dynamic random access memory, DRAM), um die tatsächlichen Schreibvorgänge in die Flash-Speicher weiter zu verringern.
  • Beispielhafte Ausführungsformen sind umsetzbar, bei denen ein Flash-Speicher ein Verschieben beim Schreiben (relocate-on-write) (auch als Schreiben an anderer Stelle (out-of-place) bezeichnet) einsetzt, da es möglich ist, dass der Flash-Speicher aufgrund des erforderlichen Lesens, Löschens und Neuprogrammierens (Schreibens) des gesamten Blocks, in dem Daten aktualisiert werden, eine hohe Latenzzeit aufweist, wenn stattdessen ein Überschreiben (write-in-place) verwendet wird. Die Verwaltung von Aktualisierungen durch Schreiben an anderer Stelle (out-of-place write) beinhaltet eine Zuordnung zwischen logischen Blockadressen (LBA), die jedem Schreiben einer Benutzerseite zugeordnet sind, und physischen Blockadressen (PBA), bei denen es sich um die physischen Seitenadressen in einem Flash-Speicher handelt. Das Verschieben beim Schreiben (relocate-on-write) erfordert einen Speicherbereinigungsprozess, der zu zusätzlichen Lese- und Schreibvorgängen führen kann. Die bei der Speicherbereinigung eingesetzte Handlungsstrategie zum Auswählen eines wiederaufzubereitenden Blocks wird als Speicherbereinigungs-Handlungsstrategie (garbage-collection policy) bezeichnet. Eine Speicherbereinigung führt üblicherweise zu einer Schreibverstärkung (write amplification).
  • 1 veranschaulicht ein Beispiel für einen Computer 100, der Fähigkeiten aufweist, die möglicherweise in beispielhaften Ausführungsformen enthalten sind. Verschiedene hierin erörterte Verfahren, Vorgehensweisen, Module, Ablaufpläne, Steuereinheiten, Techniken usw. können ebenfalls die Fähigkeiten des Computers 100 einbinden und/oder nutzen. Eine oder mehrere der Fähigkeiten des Computers 100 können in jedem hierin erörterten Element umgesetzt sein.
  • Im Allgemeinen enthält der Computer 100 in Bezug auf die Hardware-Architektur möglicherweise einen oder mehrere Prozessoren 110, einen computerlesbaren Speicher 120 und eine oder mehrere Eingabe- und/oder Ausgabeeinheiten (E-/A-Einheiten) 170, die über eine (nicht dargestellte) lokale Schnittstelle für den Datenaustausch miteinander verbunden sind sind. Bei der lokalen Schnittstelle kann es sich zum Beispiel um ein oder mehrere Busse bzw. andere drahtgebundene oder drahtlose Verbindungen nach dem Stand der Technik handeln, sie ist jedoch nicht darauf beschränkt. Die lokale Schnittstelle weist möglicherweise zusätzliche Elemente wie zum Beispiel Steuereinheiten, Zwischenspeicher (Cachespeicher), Treiber, Zwischenverstärker und Empfänger auf, um einen Datenaustausch zu ermöglichen. Des Weiteren beinhaltet die lokale Schnittstelle möglicherweise Adress-, Steuer- und/oder Datenverbindungen aufweisen, um einen geeigneten Datenaustausch unter den oben genannten Komponenten zu ermöglichen.
  • Der Prozessor 110 ist eine Hardware-Einheit zum Ausführen von Software, die in dem Speicher 120 gespeichert werden kann. Bei dem Prozessor kann es sich praktisch um einen beliebigen nach Kundenwünschen hergestellten bzw. handelsüblichen Prozessor, eine Zentraleinheit (central processing unit, CPU), einen Datensignalprozessor (DSP) bzw. einen Hilfsprozessor unter mehreren mit dem Computer 100 verbundenen Prozessoren handeln, und der Prozessor 110 ist möglicherweise ein Mikroprozessor auf Halbleiterbasis (in Form eines Mikrochips) bzw. ein Makroprozessor.
  • Der computerlesbare Speicher 120 kann ein Speicherelement oder eine Kombination von Speicherelementen beinhalten, darunter ein flüchtiges Speicherelement (z. B. ein Speicher mit wahlfreiem Zugriff (random access memory, RAM) wie z. B. ein dynamischer Speicher mit wahlfreiem Zugriff (dynamic random access memory, DRAM), ein statischer Speicher mit wahlfreiem Zugriff (static random access memory, SRAM) usw.) und nichtflüchtige Speicherelemente (z. B. ein Festwertspeicher (read-only memory, ROM), ein löschbarer, programmierbarer Festwertspeicher (erasable programmable read only memory, EPROM), ein elektrisch löschbarer, programmierbarer Festwertspeicher (electronically erasable programmable read only memory, EEPROM), ein programmierbarer Festwertspeicher (programmable read only memory, PROM), ein Magnetband, eine CD-ROM (compact disc read only memory, Kompakt-Disk-Festwertspeicher), ein Flash-Speicher, eine Platte, eine Diskette, ein Steckmodul, eine Kassette oder dergleichen usw.). Außerdem beinhaltet der Speicher 120 möglicherweise elektronische, magnetische, optische und/oder andere Arten von Speichermedien. Es ist zu beachten, dass der Speicher 120 eine verteilte Architektur aufweisen kann, wobei sich verschiedene Komponenten entfernt voneinander befinden, auf die jedoch durch den Prozessor 110 zugegriffen werden kann.
  • Die Software in dem computerlesbaren Speicher 120 beinhaltet möglicherweise ein oder mehrere getrennte Programme, von denen jedes eine geordnete Auflistung ausführbarer Befehle zum Umsetzen logischer Funktionen umfasst. Die Software in dem Speicher 120 enthält ein geeignetes Betriebssystem (operating system, OS) 150, einen Kompilierer 140, einen Quellcode 130 und eine oder mehrere Anwendungen 160 der beispielhaften Ausführungsformen. Wie dargestellt, umfasst die Anwendung 160 zahlreiche Funktionselemente zum Umsetzen der Merkmale, Prozesse, Verfahren, Funktionen und Vorgänge der beispielhaften Ausführungsformen. Die Anwendung 160 des Computers 100 kann zahlreiche Anwendungen, Agenten, Software-Komponenten, Module, Schnittstellen, Steuereinheiten usw. verkörpern, wie hierin erörtert, die Anwendung 160 ist jedoch nicht als Einschränkung gedacht.
  • Das Betriebssystem 150 kann die Ausführung anderer Computerprogramme steuern und stellt Zeitplanung, Eingabe-Ausgabe-Steuerung, Datei- und Datenverwaltung, Speicherverwaltung und Datenaustauschsteuerung sowie damit in Zusammenhang stehende Dienste bereit.
  • Die Anwendung(en) 160 verwendet (verwenden) möglicherweise eine dienstorientierte Architektur, bei der es sich um eine Zusammenstellung von Diensten handeln kann, die Daten miteinander austauschen. Außerdem ermöglicht die dienstorientierte Architektur, dass zwei oder mehr Dienste Aktivitäten koordinieren und/oder ausführen (z. B. im gegenseitigen Auftrag). Jedes Zusammenwirken zwischen Diensten kann in sich abgeschlossen und lose gekoppelt sein, so dass jedes Zusammenwirken unabhängig von jedem anderen Zusammenwirken ist.
  • Des Weiteren ist die Anwendung 160 möglicherweise ein Quellprogramm, ein ausführbares Programm (ein Objektcode), ein Skript und/oder jede andere Entität, die einen auszuführenden Befehlssatz umfasst. Wenn es sich um ein Quellprogramm handelt, wird das Programm normalerweise über einen Kompilierer (wie zum Beispiel den Kompilierer 140), Assemblierer, Interpretierer oder dergleichen, der in dem Speicher 120 enthalten sein kann, übersetzt, um in Verbindung mit dem Betriebssystem 150 ordnungsgemäß ausgeführt zu werden. Des Weiteren kann die Anwendung 160 als (a) objektorientierte Programmiersprache, die über Klassen von Daten und Methoden verfügt, bzw. als (b) prozedurale Programmiersprache, die über Routinen, Unterroutinen und/oder Funktionen verfügt, geschrieben sein.
  • Die E/A-Einheiten 170 beinhalten möglicherweise Eingabeeinheiten (bzw. Peripheriegeräte) wie zum Beispiel, jedoch nicht beschränkt auf, eine Maus, eine Tastatur, eine Abtastvorrichtung, ein Mikrofon, eine Kamera usw. Des Weiteren beinhalten die E/A-Einheiten 170 möglicherweise außerdem Ausgabeeinheiten (bzw. Peripheriegeräte) wie zum Beispiel, jedoch nicht beschränkt auf, einen Drucker, eine Anzeige usw. Schließlich beinhalten die E/A-Einheiten 170 möglicherweise des Weiteren Einheiten, die Daten zwischen Ein- und Ausgängen Übertragen, darunter, jedoch nicht darauf beschränkt, eine Netzwerkschnittstellenkarte (NIC) bzw. einen Modulator/Demodulator (zum Zugreifen auf ferne Einheiten, andere Dateien, Einheiten, Systeme oder ein Netzwerk), einen Hochfrequenz-(HF-)Sender/Empfänger bzw. einen anderen Sender/Empfänger, eine Telefonschnittstelle, eine Brücke, einen Leitwegrechner usw. Die E/A-Einheiten 170 können auch Komponenten zum Austauschen von Daten über verschiedene Netzwerke wie zum Beispiel das Internet oder ein Intranet beinhalten. Die E/A-Einheiten 170 sind möglicherweise unter Verwendung von Bluetooth-Verbindungen und Kabeln (z. B. über USB-Anschlüsse (universeller serieller Bus), serielle Anschlüsse, parallele Anschlüsse, Firewire, HDMI (High-Definition Multimedia Interface, hochauflösende Multimedia-Schnittstelle) usw.) mit dem Prozessor 110 verbunden und/oder tauschen Daten mit diesem aus.
  • Wenn der Computer 100 in Betrieb ist, ist der Prozessor 110 zum Ausführen von in dem Speicher 120 gespeicherter Software, zum Übertragen von Daten in den und aus dem Speicher 120 und zum allgemeinen Steuern von Vorgängen des Computers 100 der Software entsprechend konfiguriert. Die Anwendung 160 und das Betriebssystem 150 werden ganz oder teilweise durch den Prozessor 110 gelesen, unter Umständen in dem Prozessor 110 zwischengespeichert und anschließend ausgeführt.
  • Wenn die Anwendung 160 in Software ausgeführt wird, ist zu beachten, dass die Anwendung 160 auf praktisch jedem computerlesbaren Medium zur Verwendung bzw. in Verbindung mit jedem computerbezogenen System bzw. Verfahren gespeichert werden kann. Im Rahmen dieses Dokuments ist ein computerlesbares Medium möglicherweise eine elektronische, magnetische, optische bzw. andere physische Einheit bzw. ein Mittel, die/das ein Computerprogramm zur Verwendung durch ein computerbezogenes System oder Verfahren bzw. in Verbindung mit diesen enthalten oder speichern kann.
  • Die Anwendung 160 kann in einem beliebigen computerlesbaren Medium 120 zur Verwendung durch ein bzw. in Verbindung mit einem System, einer Vorrichtung, einem Server bzw. einer Einheit zur Befehlsausführung wie zum Beispiel ein computerbasiertes System, ein einen Prozessor enthaltendes System bzw. ein anderes System, das die Befehle von dem System, der Vorrichtung oder Einheit zur Befehlsausführung abrufen und die Befehle ausführen kann, enthalten sein. Im Rahmen dieses Dokuments kann ein „computerlesbares Medium” jedes Mittel sein, das das Programm zur Verwendung durch das System, die Vorrichtung bzw. Einheit zur Befehlsausführung bzw. in Verbindung mit diesen speichern, lesen, schreiben, übertragen bzw. transportieren kann. Das computerlesbare Medium kann ein bzw. eine Elektronik-, Magnet-, Optik- bzw. Halbleitersystem-, Vorrichtung bzw. Einheit sein, ist jedoch nicht darauf beschränkt.
  • Konkretere Beispiele (einer nicht erschöpfenden Liste) des computerlesbaren Mediums 120 würden Folgende beinhalten: eine elektrische Verbindung (elektronisch) mit einem oder mehreren Drähten, eine tragbare Computerdiskette (magnetisch bzw. optisch), einen Speicher mit wahlfreiem Zugriff (random access memory, RAM) (elektronisch), einen Festwertspeicher (read-only memory, ROM) (elektronisch), einen löschbaren, programmierbaren Festwertspeicher (ersasable programmable read-only memory, EPROM, EEPOM bzw. Flash-Speicher) (elektronisch), einen Lichtwellenleiter (optisch) und einen tragbaren Compact-Disk-Speicher (CD-ROM, CD R/W) (optisch). Es ist zu beachten, dass das computerlesbare Medium zum Beispiel auch Papier bzw. ein anderes geeignetes Medium sein könnte, auf das das Programm gedruckt bzw. in das es gelocht ist, da das Programm elektronisch erfassbar ist, beispielsweise über optische Abtastung des Papiers bzw. des anderen Mediums, anschließend kompilierbar, interpretierbar bzw. gegebenenfalls auf andere geeignete Weise verarbeitet und dann in einem Computerspeicher gespeichert werden kann.
  • Bei beispielhaften Ausführungsformen, bei denen die Anwendung 160 in Hardware umgesetzt ist, ist die Anwendung 160 mit einer beliebigen der folgenden Technologien, die jeweils in der Technik bestens bekannt sind, bzw. einer Kombination aus diesen umsetzbar: eine oder mehrere diskrete logische Schaltungen, die Logikgatter zum Durchführen von logischen Funktionen an Datensignalen aufweisen, eine anwendungsspezifische integrierte Schaltung (application specific integrated circuit, ASIC), die geeignete Schaltungslogikgatter aufweist, eine oder mehrere programmierbare Gatteranordnungen (PGA), eine beim Kunden programmierbare Gatteranordnung (FPGA) usw.
  • Es wird nun auf 2 Bezug genommen, wobei 2 ein Beispiel für eine Schreibverstärkung (write amplification) beispielsweise während einer Speicherbereinigung veranschaulicht. In Block 200 wird angenommen, dass I Seiten neu geschrieben worden sind und folglich in Block 200 ungültig gemacht worden sind, bevor dieser Block 200 zur Speicherbereinigung ausgewählt wird. Der Block 200 verfügt noch über V gültige Seiten, wobei V + I = np, die in einen anderen Block 205 verschoben werden müssen, bevor der Block 200 gelöscht und wiederverwendet werden kann. Mit anderen Worten, um I Benutzerseiten des Blocks 200 zu schreiben bzw. neu zu schreiben, ist die Zahl der physischen Seiten (np), die geschrieben werden müssen, V + I. Daher beträgt die Schreibverstärkung (write amplification) (wa) wie folgt: wa = V + I / I = 1 + V / I Gleichung (1)
  • Gemäß beispielhaften Ausführungsformen kann eine Steuereinheit dynamische Datenseiten von statischen durch Einsetzen des hierin offenbarten Container-Markierungsschemas voneinander unterscheiden und in getrennten Blöcken platzieren. Dementsprechend kann der Schreibverstärkungsfaktor (write amplification factor) erheblich verringert werden. Block 210 stellt einen gelöschten Block dar, der in einem freien Pool von Blöcken verfügbar wird.
  • 3 veranschaulicht ein Blockschaltbild für eine Halbleiter-Speichereinheit 300 gemäß beispielhaften Ausführungsformen. Die Halbleiter-Speichereinheit 300 ist zum Beispiel in dem Speicher 120 des Computers 100 realisierbar. Die Halbleiter-Speichereinheit 300 kann außerdem mit dem Computer 100 funktionsmäßig verbunden werden.
  • Eine oder mehrere Steuereinheiten 305 sind zum Verwalten, Steuern und Ansteuern der Festkörper-Speichereinheit 300 nach beispielhaften Ausführungsformen eingerichtet. Die Steuereinheit 305 kann in Form von Modulen, Anwendungen, Programmen, anwendungsspezifischen integrierten Schaltungen usw. und/oder einer Kombination daraus realisiert werden. Die Steuereinheit 305 befindet sich möglicherweise in der Halbleiter-Speichereinheit 300. Außerdem ist die Steuereinheit 305 möglicherweise funktionsmäßig mit der Halbleiter-Speichereinheit 300 verbunden und von dieser getrennt. Die Steuereinheit 305 ist zum adaptiven Verfolgen der Statik-/Dynamikstufe von Datenseiten eingerichtet, und die Steuereinheit 305 schreibt Datenseiten entsprechend ihrer Statik-Dynamikstufe. Die Steuereinheit 305 ist zum Beispiel zum Markieren jedes in Verwendung befindlichen Blocks mit einer Container-Markierungsstufe in der Lage, die die Statik-Dynamik-Stufe aller in einem jeweiligen Block gespeicherten Datenseiten kennzeichnet. Zur einfacheren Erläuterung und nicht als Einschränkung ist die Steuereinheit 305 zum Markieren von Blöcken mit verschiedenen Container-Markierungsstufen in einem Container-Markierungspool 320 eingerichtet. Es ist zu beachten, dass der Begriff „Block” nicht auf einen Block eines Flash-Speichers beschränkt ist und sich der Begriff „Block” beispielsweise auf die kleinste adressierbare Dateneinheit bezieht, die üblicherweise bei HDDs 512 Byte aufweist. Gemäß beispielhaften Ausführungsformen erstreckt sich das Markieren von Blöcken durch die Steuereinheit 305 auf Gruppen aus mehreren Blöcken als einem einzelnen „Container” (Behälter), der mehrere Datenseiten enthält, in dem Container-Markierungspool 320. Insofern bezieht sich eine einzelne Container-Markierungsstufe möglicherweise auf Gruppen von Blöcken, wobei jeder Block mehrere Datenseiten enthält. Bei einer Umsetzung von beispielhaften Ausführungsformen wird die Container-Markierung jedes Blocks, indiziert durch die Blockkennung, möglicherweise in einem DRAM-Speicher gespeichert (für den Fall eines Netzausfalls höchstwahrscheinlich batteriegepuffert bzw. kondensatorgeschützt).
  • In Bezug auf das Markieren von Datenblöcken durch die Steuereinheit 305 können die Begriffe Container-Markierungsstufe, Markierung, Markierungsstufe, Markierungen und/oder Statik-Dynamik-Stufe gemäß beispielhaften Ausführungsformen austauschbar verwendet werden, um die verschiedenen Grade von Statik und/oder Dynamik aller Datenseiten in einem bestimmten Datenblock zu kennzeichnen. Alle hierin verwendeten Bezeichnungen dienen zur Erläuterung und sind nicht einschränkend gemeint.
  • Ein Pool 310 freier Blöcke enthält zahlreiche Blöcke, die zum Schreiben von Datenseiten verfügbar sind. Wenngleich der Container-Markierungspool 320 und der Pool 310 freier Blöcke zu Erläuterungszwecken getrennt dargestellt sind, ist es selbstverständlich, dass der Container-Markierungspool 320 in den Pool 310 freier Blöcke integriert werden kann bzw. umgekehrt. Der Pool 310 freier Blöcke kann nach der maximalen Zyklenzahl des Blocks geordnet werden, wobei der Block ganz links die geringste maximale Zyklenzahl aufweist. Der Pool 310 freier Blöcke ist nach einer Vorrangwarteschlange in Bezug auf die maximale Zahl der Schreib-Lösch-Zyklen der Blöcke geordnet, wobei die jüngsten Blöcke links erscheinen. Falls die Halbleiter-Speichereinheit 300 Blöcke mit einer unterschiedlichen Anzahl von maximalen Schreib-Lösch-Zyklen in Bezug auf die verbleibende maximale Zahl der Schreib-Lösch-Zyklen der Blöcke aufweist, sind die jüngsten Blöcke diejenigen mit der größten verbleibenden maximalen Zahl der Schreib-Lösch-Zyklen in dem Pool 310 freier Blöcke.
  • Eine Warteschlange 315 der belegten Blöcke enthält zahlreiche Blöcke. Die Blöcke in der Warteschlange 315 der belegten Blöcke können gültige und/oder ungültige Datenseiten enthalten. Das Steuereinheitenmodul 305 ist in der Lage, Blöcke aus der Warteschlange 315 der belegten Blöcke zum Löschen oder Wiederverwenden durch den Pool 310 freier Blöcke auszuwählen. Optional ist es möglich, dass die Blöcke in eine FIFO-Warteschlange 330 (first in, first out; zuerst hinein, zuerst hinaus) eingestellt werden, bevor sie in die Warteschlange 305 der belegten Blöcke eingestellt werden, und/oder die FIFO-Warteschlange 330 kann in die Warteschlange 315 der belegten Blöcke integriert werden.
  • Bei beispielhaften Ausführungsformen ist die Steuereinheit 305 in der Lage, die freien Datenblöcke aus dem Pool 310 freier Blöcke mit allen Arten von Container-Markierungsstufen zu markieren. Die Steuereinheit 305 ist zum Beispiel zum Markieren von Blöcken des Container-Markierungspools 320 zum Aufnehmen von Benutzerschreibanforderungen von einem Benutzer, der den Computer 100 benutzt, und von Verschiebungsschreibanforderungen von der Warteschlange 315 der belegten Blöcke eingerichtet, wobei jeder Block mit einer Container-Markierungsstufe 0, 1, 2..., L...2L markiert wird. Die Steuereinheit 305 ist zum Beispiel zum Markieren der Blöcke in dem Container-Markierungspool 320 mit einer Container-Markierungsstufe eingerichtet, die eine Nummerierung von 0 bis 2L aufweist, wobei 0 die statischste Stufe kennzeichnet, 2L die dynamischste Stufe kennzeichnet und L eine neutrale Stufe kennzeichnet. Es ist selbstverständlich, dass die in der vorliegenden Beschreibung dargelegten Markierungsstufen Erläuterungszwecken dienen und andere Markierungsstufen gemäß beispielhaften Ausführungsformen verwendet werden können.
  • Mit Bezug auf 3 und 4 veranschaulicht 4 ein Verfahren für eine Benutzerschreibanforderung gemäß beispielhaften Ausführungsformen. Die Steuereinheit 305 ist in der Lage, eine Benutzerschreibanforderung von einem Benutzer, zum Beispiel zum Ausführen eines Speicherbefehls auf dem Computer 100, in 405 zu empfangen.
  • Für jede Benutzerschreibanforderung einer Datenseite ist die Steuereinheit 305 in 410 in der Lage zu überprüfen, ob die Schreibanforderung an eine logische Blockadresse (LBA) adressiert ist, die zum ersten Mal geschrieben wird. Die Steuereinheit 305 ist zum Beispiel zum Ausführen eines Nachschlagevorgangs in einer LBA-PBA-Zuordnung 340 in der Lage zu ermitteln, ob in der Halbleiter-Speichereinheit 300 eine physische Blockadresse (PBA) vorhanden ist, die der logischen Blockadresse entspricht, in die geschrieben wird.
  • Wenn die LBA zum ersten Mal geschrieben wird, wenn beispielsweise kein gültiger Eintrag in der LBA-PBA-Zuordnung 340 für diese LBA vorhanden ist, ist die Steuereinheit 305 in 415 in der Lage, eine Statik-Dynamik-Stufe dieser LBA zu benennen, die beispielsweise eine neue Container-Markierungsstufe von L (was in Bezug auf Dynamik neutral ist) aufweist. Optional kann bei einer beispielhaften Ausführungsform die Steuereinheit 305 zum Benennen der Markierungsstufe für die LBA als neue Container-Markierungsstufe eines beliebigen anderen Wertes konfiguriert werden, und es ist für einen Fachmann selbstverständlich, dass die ursprüngliche Kennzeichnung der neuen Container-Markierungsstufe im Zuge der Entwicklung ausgewählt werden kann.
  • Die Steuereinheit 305 ist in der Lage, einen freien Blocks aus dem Container-Markierungspool 320 (aus dem Pool 310 freier Blöcke) mit der passenden Container-Markierungsstufe entsprechend der neuen Container-Markierungsstufe L in 420 auszuwählen. Es sind möglicherweise zahlreiche Blöcke in dem Container-Markierungspool 320 vorhanden, wobei einige durch die Steuereinheit 305 mit einer Container-Markierungsstufe benannt werden und/oder andere bereits durch die Steuereinheit 305 mit einer Container-Markierungsstufe benannt worden sind.
  • Die Steuereinheit 305 ist in der Lage, die Datenseiten für die LBA in den freien Block, der die Container-Markierungsstufe L in dem Container-Markierungspool 320 aufweist, in 425 zu schreiben. Die Steuereinheit 305 ist zum Beispiel zum Bereitstellen von Container-Markierungsstufen-Benennungen für jeden Block in dem Container-Markierungspool 310 in der Lage. In Reaktion auf die Feststellung durch die Steuereinheit 305, dass die Container-Markierungsstufe für die LBA der Benutzeranforderung L ist, wählt die Steuereinheit 305 einen Block aus dem Container-Markierungspool 320 aus und schreibt die Daten der Benutzeranforderung in Datenseiten des mit der Container-Markierungsstufe L benannten Blocks. Es ist möglich, dass der mit der Container-Markierungsstufe L benannte Block bereits andere Datenseiten enthält, und gemäß beispielhaften Ausführungsformen entsprechen in diesem Fall alle diese Datenseiten der Container-Markierungsstufe L. Zur Erläuterung sei gesagt, dass die Container-Markierungsstufe 2L als höchste Dynamikstufe betrachtet wird.
  • Falls nun die LBA zuvor geschrieben worden ist, was bedeutet, dass es sich bei der Benutzerschreibanforderung tatsächlich um eine Aktualisierungsanforderung handelt, ist die Flash-Steuereinheit 305 in der Lage, die Blockkennung (identification, ID) (durch Überprüfen der PBA) zu ermitteln, an der die LBA ursprünglich gespeichert war, indem sie die LBA-PBA-Zuordnung 340 in 430 prüft. Durch die Block-ID erkennt die Steuereinheit die Container-Markierung dieses Blocks.
  • Mit der Block-ID ist die Steuereinheit 305 durch Verwenden des Container-Markierungs-Nachschlagevorgangs 320 in der Lage, die (vorherigen) Container-Markierungsstufe dieser physischen Blockadresse für die LBA in 435 zu ermitteln, die eine Schätzung der vorherigen Statik-Dynamik-Stufe der LBA für die Benutzeranforderung ist.
  • Mit der vorherigen Container-Markierungsstufe, die der LBA der Benutzeranforderung entspricht, ist die Steuereinheit 305 in der Lage, die vorherige Container-Markierungsstufe der LBA um 1 (und/oder mehr) in 440 zu erhöhen, um eine neue Container-Markierungsstufe für die LBA zu erhalten.
  • Die Steuereinheit 305 ist in der Lage, einen freien Block aus dem Container-Markierungspool 320 (aus dem Pool 310 freier Blöcke) mit der geeigneten Container-Markierungsstufe entsprechend der neuen Container-Markierungsstufe für die LBA in 445 auszuwählen.
  • Die Steuereinheit 305 ist in der Lage, Daten der Datenseiten in den freien Block in dem Container-Markierungspool 320 in 450 zu schreiben, der die neue (aktuelle) Container-Markierungsstufe (die der vorherigen Container-Markierungsstufe der LBA entspricht, die auf eine um 1 höhere Container-Markierungsstufe erhöht wurde) aufweist.
  • Im Folgenden wird ein Prozess der Steuereinheit 305 zum Bestimmen der neuen Container-Markierung für die LBA bereitgestellt.
  • Zu Erläuterungszwecken sei gesagt, dass die Steuereinheit 305 in der Lage ist, die Container-Markierung des vorherigen Blocks der LBA als u zu kennzeichnen und diese LBA in einem Block mit einer Container-Markierung u' zu speichern, wobei üblicherweise u' ≥ u gilt. Die Steuereinheit 305 ist beispielsweise in der Lage festzustellen, ob Folgendes gilt
    Figure DE112010003650B4_0002
  • Es ist zu beachten, dass u' die neue Container-Markierung für die LBA ist. Die Steuereinheit 305 ist in beispielhaften Ausführungsformen in der Lage, die Daten für die LBA in einem freien Block zu speichern, der die neue Container-Markierung u' entsprechend der Bestimmung der Gleichung (2) aufweist.
  • Mit Bezug auf 3 und 5 veranschaulicht 5 ein Verfahren für eine Verschiebungsschreibanforderung von Daten in Blöcken aus der Warteschlange 315 der belegten Blöcke gemäß beispielhaften Ausführungsformen.
  • Die Steuereinheit 305 ist in der Lage, eine Schreibanforderung zum Verschieben von gültigen Datenseiten in 505 zu empfangen.
  • Für jede Schreibanforderung zum Verschieben von gültigen Datenseiten ist die Steuereinheit in der Lage, in 510 (zunächst) die vorherige (Statik-Dynamik-Stufe, r) Container-Markierungsstufe durch Lesen der Container-Markierung zu prüfen, die dem Block zugehörig ist, in dem die Verschiebungsdatenseite zuvor gespeichert war.
  • Die Steuereinheit 305 ist in der Lage, die vorherige Container-Markierungsstufe um 1 (und/oder mehr) auf eine neue (aktuelle) Container-Markierungsstufe für die gültige Verschiebungsdatenseite in 515 zu verringern. Falls die vorherige Container-Markierungsstufe zum Beispiel 1 ist, ist die neue Container-Markierungsstufe die vorherige Container-Markierungsstufe minus 1 Container-Markierungsstufe, was zu der neuen Container-Markierungsstufe 0 führt. Falls die vorherige Container-Markierungsstufe 0 ist, wobei es sich um die niedrigste Container-Markierungsstufe handelt (die die höchste Statikstufe kennzeichnet), ist die neue Container-Markierungsstufe für die gültige Verschiebungsdatenseite ebenfalls 0.
  • Die Steuereinheit 305 ist in der Lage, einen freien Block aus dem Container-Markierungspool 320 in 520 auszuwählen, der über eine Container-Markierungsstufe verfügt, die gleich der neuen Container-Markierungsstufe ist.
  • Die Steuereinheit 305 ist in der Lage, die Daten der Verschiebungsdatenseite in einen freien Block aus dem Container-Markierungspool 320 in 525 zu schreiben, der über eine Container-Markierungsstufe verfügt, die gleich der neuen Container-Markierungsstufe ist.
  • Im Folgenden wird ein Prozess der Steuereinheit 305 zum Ermitteln der neuen Container-Markierung für die gültige Datenseite gemäß beispielhaften Ausführungsformen bereitgestellt. Zu Erläuterungszwecken sei gesagt, dass die Steuereinheit 305 in der Lage ist, eine vorherige (Statik-Dynamik-Stufe) Container-Markierungsstufe als r zu kennzeichnen. Die Steuereinheit 305 kann die gültige Datenseite, die verschoben werden muss, in einem Block mit einer Container-Markierung r' speichern, wobei üblicherweise gilt r' ≤ r, wodurch eine Verringerung der Dynamikstufe der gültigen Datenseite gekennzeichnet wird. Die Steuereinheit 305 ist beispielsweise in der Lage zu bestimmen, ob gilt
    Figure DE112010003650B4_0003
  • Das beschriebene Container-Markierungsschema stellt eine gute Anpassungsfähigkeit an alle sich ändernden Auslastungen bereit und führt so zu einer genauen Schätzung der Dynamikstufe aller Datenseiten ohne großen Rechenaufwand. Auf der Grundlage des Container-Markierungsschemas gemäß beispielhaften Ausführungsformen ist die Steuereinheit 305 in der Lage, Datenseiten ähnlicher Dynamikstufen zu zusammenzuführen und sie gemeinsam in demselben Block abzulegen. Insbesondere, wenn die dynamischsten Datenseiten gemeinsam in einem Block gespeichert sind, ist die Speicherbereinigung in der Lage, die Bereinigungswirksamkeit zu verbessern, selbst wenn sie nur teilweise auf einer unbedingt auf Erfolg abzielenden Handlungsstrategie (greedy policy) beruht, was zu einer Schreibverringerung (write reduction) durch Verringern des Schreibverstärkungsfaktors (write amplification factor) führt.
  • 6 veranschaulicht ein Blockschaltbild, das die Nutzung eines Schreib-Cachespeichers 600 zur Schreibverringerung (write reduction) zusammen mit dem Container-Markierungsschema gemäß beispielhaften Ausführungsformen darstellt. Anders als in dem Blockschaltbild von 3 wird der Schreib-Cachespeicher 600 nun in 6 in der Halbleiter-Speichereinheit 300 veranschaulicht.
  • Beispielhafte Ausführungsformen, die auf den Aufbau des Schreib-Cachespeichers 600 zurückgreifen, nutzen das hierin beschriebene Container-Markierungsschema und eine Variante eines Deduplizierungs-Algorithmus. Beispielhafte Ausführungsformen machen den Schreib-Cachespeicher 600 für eine Schreibverringerung (write reduction) durch die Steuereinheit 305 durch Ermitteln der am häufigsten aktualisierten Datenseiten und Ablegen dieser Datenseiten in dem Schreib-Cachespeicher 600 leistungsfähig, und das Container-Markierungsschema stellt eine gute Schätzung derartiger Daten bereit.
  • Bei einer Umsetzung von beispielhaften Ausführungsformen ist die Steuereinheit 305 in der Lage, Datenseiten mit einer höheren Dynamikstufe als ein in dem Schreib-Cachespeicher 600 abgelegten Schwellenwert zu speichern. Bei beispielhaften Ausführungsformen werden wiederholte Schreibvorgänge von Datenseiten im Laufe der Zeit absorbiert und nicht in den Speicher des Halbleiterdatenträger (z. B. den Flash-Speicher) geschrieben. Die Steuereinheit 305 ist beispielsweise in der Lage, Datenseiten in den Schreib-Cachespeicher 600 zu schreiben, anstatt Datenseiten mit einer Container-Markierungsstufe 2L (und/oder höher als L) in einen Block aus dem Pool 310 freier Blöcke, der mit einer Container-Markierungsstufe 2L in dem Container-Markierungspool 320 benannt worden ist, zu schreiben.
  • Der Schreib-Cachespeicher 600 wird regelmäßig durch die Steuereinheit 305 verwaltet, um wiederholtes Schreiben in die Blöcke zu verhindern und um Datenseiten auszuspeichern, die eine relative niedrige Dynamikstufe aufweisen, wie zum Beispiel Seiten unterhalb eines bestimmten Schwellenwerts. Unter Umständen müssen die Datenseiten zum Beispiel oberhalb der Container-Markierungsstufe L markiert werden, und/oder die Datenseiten können mit der Container-Markierungsstufe 2L markiert werden.
  • Der Schreib-Cachespeicher 600 kann zum Beispiel als batteriegepufferter bzw. kondensatorgepufferter DRAM ausgeführt werden, der über eine sehr begrenzte Größe im Vergleich zu der Kapazität eines Flash-Speichers verfügt. Komprimierungstechniken können angewandt werden, um den begrenzten Platz des Schreib-Cachespeichers 600 wirksam zu nutzen. Die Steuereinheit 305 ist in der Lage, herkömmliche verlustfreie Komprimierungstechniken wie zum Beispiel LZW, gzip, bzip usw. direkt auf die Datenseiten anzuwenden, bevor sie in dem Schreib-Cachespeicher 600 gespeichert werden. Alternativ und/oder zusätzlich stellen beispielhafte Ausführungsformen einen Deduplizierungs-Algorithmus der Steuereinheit 305 zum Verringern des Platzbedarfs im DRAM für jede einzelne in dem Schreibcache-Speicher 600 gespeicherte Datenseite bereit.
  • Wenn zum Beispiel das Speichern einer Datenseite in dem Schreibcache-Speicher 600 unmittelbar bevorsteht, ist die Steuereinheit 305 in der Lage, (zunächst) die alte Version der Datenseite, die in dem Block (z. B. des Flash-Speichers) gespeichert ist, zu lesen, und die Steuereinheit 305 ist in der Lage, einen Deduplizierungs-Algorithmus anzuwenden, um eine Differenz zwischen der neuen Version (bei der es sich um die aktuelle Schreibanforderung handelt) und der alten, zuvor in dem Block (mit einer Container-Markierungsstufe) gespeicherten Version, zu berechnen. Die Steuereinheit 305 ist in der Lage, die Differenz und/oder eine komprimierte Version der Differenz in dem Schreib-Cachespeicher 600 zu speichern. Das Lese- und Vergleichsschema der Steuereinheit 305 funktioniert gut für häufig aktualisierte Datenseiten (die durch die Container-Markierungsstufe benannt sind), da der Aufwand (die Zeit) zum Lesen einer Datenseite aus einem Flash-Speicher erheblich geringer als für einen Schreibvorgang ist.
  • Derzeit sind mehrere Deduplizierungs-Algorithmen bekannt. Die einfachsten und unkompliziertesten sind Algorithmen, die auf Bit-Ebene bzw. auf Byte-Ebene unterscheiden; es ist jedoch möglich, dass bei diesen ein gravierendes Problem aufgrund von Fehlausrichtung auf Grenzen auftritt, was recht häufig bei Einfüge- und/oder Löschvorgängen bei Datenseiten der Fall ist. Beispielhafte Ausführungsformen stellen die Verwendung einer Variante des Deduplizierungs-Algorithmus in der Steuereinheit 305 bereit. Beispielhafte Ausführungsformen beschreiben den Algorithmus wie folgt: Es wird angenommen, dass bei der Verarbeitung zwei Versionen einer Datenseite vorhanden sind: Bei einer handelt es sich um die alte Version, die bereits in einem Block (des Flash-Speichers) gespeichert ist, und eine ist die aktualisierte Version in dem Zwischenspeicher (der Zwischenspeicher ist nicht abgebildet, ein Fachmann versteht jedoch das Zwischenspeichern im Zusammenhang mit Halbleitereinheiten). Die Steuereinheit 305 speichert die aktualisierte Version nicht in dem Schreibcache-Speicher 600; stattdessen speichert die Steuereinheit 305 ausschließlich die (komprimierte) Differenz zwischen der alten Version und der aktualisierten Version.
  • Zu Erläuterungszwecken sei gesagt, dass die Steuereinheit 305 möglicherweise die Datenseitengröße in Byte mit p bezeichnet, was den Startwert (seed) darstellt, der sich auf eine laufende Folge von Datenbytes bezieht, und die Sendegröße ist s, wobei gilt s < p. Die Steuereinheit 305 ist in der Lage, eine modulare Hash-Funktion über jeden Startwert einer Datenseite anzuwenden, Zyklen vom Anfang bis zum Ende auszuführen, um k Unterscheidungsmerkmale beider Versionen der Datenseite zu berechnen. Der Grund für die Verwendung der modularen Hash-Funktion besteht hauptsächlich in ihrem geringen Rechenaufwand. Genauer gesagt, die k Unterscheidungsmerkmale lassen sich wie folgt berechnen:
    • (1) Für jeden Startwert beider Versionen wird ein Hash-Wert berechnet. Bei einer nicht beschränkenden beispielhaften Ausführungsform kann der Hash-Wert für jeden Startwert unter Verwendung einer rollenden Hash-Funktion berechnet werden, die in jeder Iteration um ein Byte vorrückt.
    • (2) Als Nächstes werden für jede Version der Datenseite die k maximalen Hash-Werte von jeweils k Startwerten aus allen berechneten Hash-Werten ausgewählt. Die k Startwerte, die den k maximalen Hash-Werten entsprechen, stellen die k maximalen Startwerte dar. Anschließend werden die k Hash-Werte der jeweiligen k Startwerte die um ein Byte vorrücken (und die um s – 1 Byte überlappen), bzw. der k maximalen Startwerte als die k Unterscheidungsmerkmale für jede Version der Datenseite ausgewählt. Gemäß beispielhaften Ausführungsformen lässt sich belegen, dass die k Unterscheidungsmerkmale jeder Version der Datenseite gleichmäßig in dem Hashing-Raum verteilt sind.
  • Die k Unterscheidungsmerkmale werden anschließend als Anker zum Ausrichten der beiden Versionen (aktualisierte Version und alte Version) der Datenseite und dann zum Berechnen der Differenz der beiden Versionen durch die Steuereinheit 305 verwendet. Es ist zu beachten, dass das obige Deduplizierungs-Algorithmen verwendende Verfahren beispielhafter Ausführungsformen allein und/oder kombiniert mit anderen Komprimierungsverfahren angewendet werden kann. Zum Beispiel ist es möglich, dass die Steuereinheit 305 zunächst ein herkömmliches Komprimierungsschema wie gzip, bzip usw. anwendet, parallel den offenbarten Deduplizierungs-Algorithmus gemäß beispielhaften Ausführungsformen anwendet und diejenige Vorgehensweise auswählt, die den geringsten Platzbedarf im DRAM ergibt. Dadurch kann die Leistungsfähigkeit des Schreibcache-Speichers 600 durch Einbeziehen größerer Komplexität verbessert werden.
  • 7 veranschaulicht ein Beispiel für den Einsatz eines magnetoresistiven Speichers mit wahlfreiem Zugriff (magnetoresistive random access memory, MRAM) und/oder eines ferroelektrischen Speichers mit wahlfreiem Zugriff (ferroelectric RAM, FeRAM bzw. FRAM) zum Verbessern der maximalen Zyklenzahl gemäß beispielhaften Ausführungsformen. MRAM- und/oder FeRAM-Chips sind nichtflüchtig, und es treten keine Probleme mit der Lebensdauer auf. Das Container-Markierungsschema ist zum Erleichtern und Verbessern der Nutzung von MRAM- und/oder FeRAM-Chips anwendbar. Um einen MRAM und/oder FeRAM kostengünstig zu nutzen, beispielsweise in einem vorwiegend Flash-Speicher aufweisenden Halbleiterdatenträger, ist die Steuereinheit 305 in der Lage, die am häufigsten aktualisierten Datenseiten, die durch das Container-Markierungsschema ermittelt werden, auf einem MRAM und/oder FeRAM zu speichern. Auf diese Weise wird der MRAM und/oder der FeRAM häufiger beschrieben und gelöscht als der Flash-Speicher. Insofern ist diese Technik in der Lage, die Lebensdauer der Halbleitereinheit 300 erheblich zu verbessern.
  • In 7 werden die MRAM- und/oder FeRAM-Chips als Blöcke 700 in dem Pool 310 freier Blöcke, der Warteschlange 315 der belegten Blöcke und dem Container-Markierungspool 320 dargestellt. Hier ist die Steuereinheit 305 in der Lage, Datenseiten mit einer hohen Dynamikstufe in dem MRAM und/oder FeRAM 700 andere Datenseiten in Flash-Speicherchips zu platzieren. Da die Datenseiten auf dem MRAM und/oder FeRAM 700 dynamischer sind und folglich tendenziell schneller ungültig gemacht werden, werden diese MRAM- und/oder FeRAM-Chips 700 folglich mehr genutzt als Flash-Chips, was letztlich die Gesamtlebensdauer verbessert.
  • Gemäß beispielhaften Ausführungsformen verbessert das Container-Markierungsschema die Wirksamkeit der Speicherbereinigung, die letztlich zu geringerer Schreibverstärkung (write amplification) führt. Wie hierin erörtert, ist die Container-Markierung eine Nummerierungsmarkierung, die jedem Block beigefügt ist, der Datenseiten enthält. Die Markierung ist ein Kennzeichen dafür, wie häufig eine Datenseite aktualisiert und/oder geändert wird.
  • Ein magnetoresistiver Speicher mit wahlfreiem Zugriff (Magnetoresistive Random Access Memory, MRAM) ist eine nichtflüchtige Computerspeichertechnologie (NVRAM). Ein MRAM weist eine ähnliche Leistung wie ein SRAM, eine ähnliche Dichte wie ein DRAM, jedoch einen erheblich geringeren Energieverbrauch als ein DRAM auf, ist deutlich schneller als ein Flash-Speicher, und es tritt im Vergleich zum Flash-Speicher kein Leistungsabfall im Laufe der Zeit auf. Sein Hauptnachteil im Vergleich zum Flash-Speicher sind höhere Kosten. Ein ferroelektrischer RAM (FeRAM bzw. FRAM) ist ein Speicher mit wahlfreiem Zugriff mit einem ähnlichen Aufbau wie ein DRAM, er verwendet jedoch eine ferroelektrische Schicht statt einer dielektrischen Schicht, um Nichtflüchtigkeit zu erzielen. Zu den Vorteilen eines FeRAM gegenüber einem Flash-Speicher gehören ein geringerer Stromverbrauch, eine schnellere Schreibleistung und eine erheblich größere Höchstzahl (mehr als 1016 bei 3,3-V-Einheiten) von Schreib-Lösch-Zyklen. Die Nachteile eines FeRAM sind deutlich geringere Speicherdichten als bei Flash-Einheiten, begrenzte Speicherkapazitäten und höhere Kosten.
  • 8 stellt ein Blockschaltbild eines beispielhaften Entwicklungsablaufs 800 dar, der zum Beispiel bei Entwurf, Simulation, Test, Layout und Herstellung von Halbleiter-IC-Logik verwendet wird. Der Entwicklungsablauf 800 beinhaltet Prozesse, Geräte und/oder Mechanismen zum Verarbeiten von Entwurfsstrukturen bzw. Einheiten zum Erzeugen logisch bzw. auf andere Weise funktional gleichwertiger Darstellungen der oben beschriebenen und in 3, 6 und 7 dargestellten Entwurfsstrukturen und/oder Einheiten. Die durch den Entwicklungsablauf 800 verarbeiteten und/oder erzeugten Entwurfsstrukturen sind auf maschinenlesbaren Übertragungs- bzw. Speichermedien so codierbar, dass sie Daten und/oder Befehle enthalten, die beim Ausführen bzw. anderweitigen Verarbeiten in einem Datenverarbeitungssystem eine logisch, strukturell, mechanisch bzw. auf andere Weise funktional gleichwertige Darstellung von Hardware-Komponenten, Schaltungen, Einheiten bzw. Systemen erzeugen. Zu Geräten zählt jedes Gerät, das in einem IC-Entwicklungsprozess wie zum Beispiel zum Entwerfen, Herstellen bzw. Simulieren einer Schaltung, Komponente, Einheit bzw. eines Systems verwendet wird, sie sind jedoch nicht darauf beschränkt. Zu Geräten gehören beispielsweise folgende: Lithographiegeräte, Geräte und/oder Anlagen zum Herstellen von Masken (z. B. Elektronenstrahlschreiber), Computer bzw. Anlagen zum Simulieren von Entwurfsstrukturen, alle im Fertigungs- bzw. Prüfverfahren eingesetzten Vorrichtungen bzw. alle Geräte zum Programmieren von funktional gleichwertigen Darstellungen der Entwurfsstrukturen auf einem beliebigen Medium (z. B. ein Gerät zum Programmieren einer programmierbaren Gatteranordnung).
  • Der Entwicklungsablauf 800 variiert möglicherweise je nach Art der Darstellung, die entworfen wird. Ein Entwicklungsablauf 800 zum Herstellen einer anwendungsspezifischen integrierten Schaltung (application specific IC, ASIC) unterscheidet sich möglicherweise von einem Entwicklungsablauf 800 zum Entwickeln eines Normbauteils bzw. von einem Entwicklungsablauf 800 zum Instanziieren des Entwurfs in einer programmierbaren Anordnung, zum Beispiel einer von Altera® Inc. bzw. Xilinx® Inc. angebotenen programmierbaren Gatteranordnung (PGA) bzw. vom Kunden programmierbaren Gatteranordnung (FPGA).
  • 8 veranschaulicht mehrere solcher Entwurfsstrukturen, die eine Eingabeentwurfsstruktur 820 enthalten, die bevorzugt durch einen Entwurfsprozess 810 verarbeitet wird. Die Entwurfsstruktur 820 ist möglicherweise eine durch den Entwurfsprozess 810 erzeugte und verarbeitete Logiksimulations-Entwurfsstruktur zum Herstellen einer logisch gleichwertigen Funktionsdarstellung einer Hardware-Einheit. Die Entwurfsstruktur 820 umfasst möglicherweise außerdem bzw. alternativ Daten und/oder Programmbefehle, die bei der Verarbeitung durch den Entwurfsprozess 810 eine Funktionsdarstellung der physischen Struktur einer Hardware-Einheit erzeugen. Ganz gleich, ob sie Merkmale eines Funktions- und/oder Strukturentwurfs darstellt, ist die Entwurfsstruktur 820 unter Verwendung von ECAD (electronic computer-aided design, rechnergestütztes Entwerfen elektronischer Systeme) herstellbar, wie sie zum Beispiel durch einen Kernentwickler/-entwerfer umgesetzt wird. Wenn sie auf einem maschinenlesbaren Datenübertragungs-, Gatteranordnungs- bzw. Speichermedium codiert ist, kann die Entwurfsstruktur 820 durch ein bzw. mehrere Hardware- und/oder Software-Module in dem Entwurfsprozess 810 zugreifbar und verarbeitet werden, um ein Elektronikbauteil, eine elektronische Schaltung, einen Elektronik- bzw. Logikbaustein, eine Vorrichtung, eine Einheit bzw. ein System wie zum Beispiel die in 3, 6 und 7 abgebildeten zu simulieren bzw. auf andere Weise funktional darzustellen. Die Entwurfsstruktur 820 kann als solche beispielsweise Dateien bzw. andere Datenstrukturen, unter anderem menschen- und/oder maschinenlesbaren Quellcode, kompilierte Strukturen und computerausführbare Codestrukturen umfassen, die Schaltungen bzw. andere Stufen eines Hardware-Logikentwurfs funktional simulieren bzw. auf andere Weise darstellen, wenn sie durch ein Entwurfs- bzw. Simulationsdaten-Verarbeitungssystem verarbeitet werden. Derartige Datenstrukturen beinhalten möglicherweise HDL-Entwurfs-Entitäten (hardware-description language, Hardware-Beschreibungssprache) bzw. andere Datenstrukturen, die niedrigeren HDL-Entwurfssprachen wie zum Beispiel Verilog und VHDL und/oder höheren Entwurfssprachen wie C bzw. C++ entsprechen und/oder mit diesen kompatibel sind.
  • Der Entwurfsprozess 810 verwendet und beinhaltet bevorzugt Hardware- und/oder Software-Module zum Synthetisieren, Übersetzen bzw. anderweitigen Verarbeiten einer funktionalen Entwurfs-/Simulationsentsprechung der in den 3, 6 und 7 dargestellten Komponenten, Schaltungen, Einheiten bzw. logischen Strukturen zum Erzeugen einer Netzliste 880, die möglicherweise Entwurfsstrukturen wie zum Beispiel die Entwurfsstruktur 820 enthält. Die Netzliste 880 kann zum Beispiel kompilierte bzw. auf andere Weise verarbeitete Datenstrukturen umfassen, die eine Liste von Drähten, diskreten Bauelementen, Logikgattern, Steuerschaltungen, E/A-Einheiten, Modellen usw. darstellen, die die Verbindungen zu anderen Elementen und Schaltungen in einem IC-Entwurf beschreibt. Die Netzliste 880 kann mithilfe eines Iterationsverfahrens synthetisiert werden, in dem die Netzliste 880 abhängig von der Entwurfsbeschreibung und den Entwurfsparametern für die Einheit einmal bzw. mehrmals neu synthetisiert wird. Wie bei anderen hierin beschriebenen Typen von Entwurfsstrukturen ist es möglich, die Netzliste 880 auf einem maschinenlesbaren Datenspeichermedium aufzuzeichnen bzw. sie in eine programmierbare Gatteranordnung zu programmieren. Bei dem Medium kann es sich um ein nichtflüchtiges Speichermedium wie zum Beispiel ein Magnetplattenlaufwerk bzw. ein optisches Plattenlaufwerk, eine programmierbare Gatteranordnung, ein Compact-Flash-Speicher bzw. einen anderen Flash-Speicher handeln. Zusätzlich bzw. alternativ handelt es sich bei dem Medium möglicherweise um einen System- bzw. Cache-Speicher, einen Pufferspeicher bzw. elektrisch bzw. optisch leitfähige Einheiten und Materialien, auf denen Datenpakete über das Internet übertragen und unmittelbar gespeichert werden können, bzw. um eine andere geeignete Netzwerkmittel.
  • Der Entwurfsprozess 810 kann Hardware- und Software-Module zum Verarbeiten einer Vielfalt an Typen von Eingabedatenstrukturen wie zum Beispiel die Netzliste 880 beinhalten. Solche Datenstrukturtypen befinden sich möglicherweise zum Beispiel in Bibliothekselementen 830 und umfassen einen Satz gebräuchlicher Elemente, Schaltungen und Einheiten, unter anderem Modelle, Layouts und symbolische Darstellungen für eine bestimmte Fertigungstechnologie (z. B. verschiedene Technologieknoten, 32 nm, 45 nm, 90 nm usw.). Die Datenstrukturtypen können des Weiteren Entwurfsbeschreibungen 840, Charakterisierungsdaten 850, Prüfdaten 860, Entwurfsregeln 870 und Testdatendateien 885, die beispielsweise Eingabetestmuster, Ausgabetestergebnisse und andere Testdaten beinhalten. Der Entwurfsprozess 810 kann des Weiteren zum Beispiel Standardprozesse der Mechanikkonstruktion wie zum Beispiel Spannungsermittlung, Thermoanalyse, Simulation mechanischer Ereignisse, Prozesssimulation für Vorgänge wie Gießen, Formen und Gesenkpressen usw. beinhalten. Ein Fachmann für Mechanikkonstruktion erkennt das Ausmaß möglicher Werkzeuge und Anwendungen für die Mechanikkonstruktion, die im Entwurfsprozess 810 verwendet werden, ohne vom Umfang und Gedanken der Erfindung abzuweichen. Der Entwurfsprozess 810 kann außerdem Module zum Ausführen von Standardprozessen im Schaltungsentwurf wie zum Beispiel Laufzeitanalyse (timing analysis), Überprüfung, Entwurfsregelprüfung (design rule checking), Platzierungs- und Verbindungsvorgänge (place and route operations) usw. beinhalten. Der Entwurfsprozess 810 verwendet und beinhaltet Werkzeuge für den Logikentwurf und den physischen Entwurf wie zum Beispiel HDL-Kompilierer und Simulationsmodell-Erstellungswerkzeuge zum Verarbeiten der Entwurfsstruktur 820 zusammen mit einigen bzw. allen dargestellten Hilfsdatenstrukturen (ggf.) gemeinsam mit einer beliebigen Mechanikkonstruktion bzw. beliebigen mechanischen Daten, um eine zweite Entwurfsstruktur 890 zu erzeugen. Die Entwurfsstruktur 890 befindet sich auf einem Speichermedium bzw. in einer programmierbaren Gatteranordnung in einem Datenformat, das für den Austausch von Daten von mechanischen Einheiten und Strukturen verwendet wird (z. B. Daten, die in einem Format wie IGES, DXF, Parasolid XT, JT, DRG bzw. einem beliebigen anderen geeigneten Format zum Speichern bzw. Umrechnen derartiger Strukturen mechanischer Entwürfe gespeichert sind). Ähnlich wie die Entwurfsstruktur 820 umfasst die Entwurfsstruktur 890 bevorzugt eine oder mehrere Dateien, Datenstrukturen bzw. andere computercodierte Daten bzw. Befehle, die sich auf Übertragungs- bzw. Datenspeichermedien befinden und die eine logisch bzw. auf andere Weise funktional gleichwertige Form einer oder mehrerer der in 3, 6 und 7 dargestellten Ausführungsformen der Erfindung erzeugen, wenn sie durch ein ECAD-System verarbeitet werden. Bei einer Ausführungsform umfasst die Entwurfsstruktur 890 möglicherweise ein kompiliertes, ausführbares HDL-Simulationsmodell, das die in 3, 6 und 7 dargestellten Einheiten funktional simuliert.
  • Die Entwurfsstruktur 890 kann außerdem ein Datenformat, das für den Austausch von Layoutdaten von integrierten Schaltungen verwendet wird, und/oder ein symbolisches Datenformat (z. B. Daten, die in GDSII (GDS2), GL1, OASIS, Map-Dateien bzw. jedem anderen geeigneten Format zum Speichern derartiger Entwurfsdatenstrukturen gespeichert sind) einsetzen. Die Entwurfsstruktur 890 kann zum Beispiel Daten wie symbolische Daten, Map-Dateien, Testdatendateien, Entwurfsinhaltsdateien, Fertigungsdaten, Layout-Parameter, Drähte, Metallebenen, Durchkontaktierungen, Formen, Daten zum Fertigungsfluss und alle anderen Daten, die von einem Hersteller oder einem anderen Entwerfer/Entwickler benötigt werden, um eine Einheit bzw. Struktur wie oben beschrieben und in 3, 6 und 7 dargestellt, herzustellen, umfassen. Die Entwurfsstruktur 890 geht anschließend möglicherweise zu einer Phase 895 über, in der die Entwurfsstruktur 890 beispielsweise: zur Übergabe der Layout-Daten (tape-out) übergeht, zur Fertigung freigegeben wird, an ein Maskenhaus (mask house) übergeben wird, an ein weiteres Entwurfshaus (design house) gesendet wird, zurück zum Kunden gesendet wird usw.

Claims (24)

  1. Halbleiter-Speichervorrichtung (300), die umfasst: eine Vielzahl von Blöcken, die als Speicher für die Halbleiter-Speichervorrichtung (300) eingerichtet sind, wobei jeder Block eine Vielzahl von Datenseiten umfasst; und eine Steuereinheit (305) mit integrierten Schaltungen, welche konfiguriert sind, die Halbleiter-Speichervorrichtung (300) zu steuern; wobei einem freien Block durch die Steuereinheit (305) eine Aktualisierungshäufigkeit zugewiesen wird; wobei, für eine bestimmte Datenseite, jede bestimmte Datenseite in einen Block geschrieben wird, der Datenseiten mit einer Aktualisierungshäufigkeit aufweist, welche der Aktualisierungshäufigkeit entspricht, die durch die Steuereinheit (305) für diese bestimmte Datenseite berechnet wurde; wobei die Steuereinheit (305) dazu ausgebildet ist, sobald eine gültige Datenseite von einem besetzten Block in einen neuen Block verschoben wird: eine vorherige Aktualisierungshäufigkeit der gültigen Datenseite mit r und eine neue Aktualisierungshäufigkeit der gültigen Datenseite mit r' zu bezeichnen, zu bestimmen, dass die gültige Datenseite in einem neuen Block gespeichert wird, welcher der neuen Aktualisierungshäufigkeit r' = –1 entspricht, wenn r > 0 ist, wobei 0 ein höchstes statisches Niveau ist, und zu bestimmen, dass die gültige Datenseite in einem neuen Block gespeichert wird, welcher der neuen Aktualisierungshäufigkeit r' = 0 entspricht, falls r > 0 nicht erfüllt ist.
  2. Halbleiter-Speichervorrichtung (300), die umfasst: eine Vielzahl von Blöcken, die als Speicher für die Halbleiter-Speichervorrichtung (300) eingerichtet sind, eine Steuereinheit (305) mit integrierten Schaltungen, welche konfiguriert sind, die Halbleiter-Speichervorrichtung (300) zu steuern, wobei die Steuereinheit beim Schreiben von Daten, die an eine logische Blockadresse (LBA) adressiert sind, in der Lage ist zum: Ermitteln einer vorherigen Aktualisierungshäufigkeit für die logische Blockadresse (LBA); und Schreiben der Daten in einen freien Block, wobei der freie Block eine Aktualisierungshäufigkeit aufweist, die gegenüber der vorherigen Aktualisierungshäufigkeit um 1 oder mehr erhöht ist, wobei die Steuereinheit (305) dazu ausgebildet ist, sobald eine gültige Datenseite von einem besetzten Block in einen neuen Block verschoben wird: eine vorherige Aktualisierungshäufigkeit der gültigen Datenseite mit r und eine neue Aktualisierungshäufigkeit der gültigen Datenseite mit r' zu bezeichnen, zu bestimmen, dass die gültige Datenseite in einem neuen Block gespeichert wird, welcher der neuen Aktualisierungshäufigkeit r' = r – 1 entspricht, wenn r > 0 ist, wobei 0 ein höchstes statisches Niveau ist, und zu bestimmen, dass die gültige Datenseite in einem neuen Block gespeichert wird, welcher der neuen Aktualisierungshäufigkeit r' = 0 entspricht, falls r > 0 nicht erfüllt ist.
  3. Vorrichtung nach Anspruch 2, wobei die Steuereinheit (305) in der Lage ist, jeden der Blöcke mit einer Aktualisierungshäufigkeit zu markieren, die sich in zwei oder mehr Stufen von hochstatisch zu hochdynamisch erstreckt.
  4. Vorrichtung nach Anspruch 2, wobei die Steuereinheit (305) in der Lage ist, Datenseiten auf der Grundlage einer jeweiligen Aktualisierungshäufigkeit für jede Datenseite in die Blöcke zu schreiben.
  5. Vorrichtung nach Anspruch 2, wobei die Steuereinheit (305) in der Lage ist, am häufigsten aktualisierte Datenseiten in jene Blöcke zu schreiben, die eine höchste Aktualisierungshäufigkeit aufweisen.
  6. Vorrichtung nach Anspruch 2, wobei die Steuereinheit (305) in der Lage ist, am seltensten aktualisierte Datenseiten in jene Blöcke zu schreiben, die eine niedrigste Aktualisierungshäufigkeit aufweisen.
  7. Vorrichtung nach Anspruch 2, wobei die Steuereinheit (305) in der Lage ist zu bewirken, dass Blöcke, die eine höchste Aktualisierungshäufigkeit aufweisen, mehr ungültige Datenseiten haben als Blöcke, die eine niedrigste Aktualisierungshäufigkeit aufweisen.
  8. Vorrichtung nach Anspruch 2, wobei die Steuereinheit (305) beim Schreiben von Datenseiten, die keine vorherige Aktualisierungshäufigkeit aufweisen, in der Lage ist, die Datenseiten in einen Block, der eine mittlere Aktualisierungshäufigkeit aufweist.
  9. Vorrichtung nach Anspruch 2, wobei die Steuereinheit (305) beim fortlaufenden Empfangen der an die logische Blockadresse (LBA) adressierten Schreibanforderung in der Lage ist zum: fortlaufenden Erhöhen der vorherigen Aktualisierungshäufigkeit um 1; und Ermitteln des freien Blocks, der eine Aktualisierungshäufigkeit aufweist, die gleich der fortlaufend erhöhten, vorherigen Aktualisierungshäufigkeit ist; und wobei die Steuereinheit (305) in Reaktion auf das fortlaufende Empfangen der an die logische Blockadresse (LBA) adressierten Schreibanforderung in der Lage ist, die Datenseiten in den freien Block zu schreiben, der die Aktualisierungshäufigkeit aufweist, die gleich der fortlaufend erhöhten, vorherigen Aktualisierungshäufigkeit ist.
  10. Vorrichtung nach Anspruch 9, wobei die Steuereinheit (305) in der Lage ist, die vorherige Aktualisierungshäufigkeit fortlaufend um 1 zu erhöhen, bis eine höchste Aktualisierungshäufigkeit erreicht wird, wobei die Steuereinheit (305) in Reaktion auf das Erreichen der höchsten Aktualisierungshäufigkeit durch die vorherige Aktualisierungshäufigkeit in der Lage ist, die Daten in den freien Block zu schreiben, der die höchste Aktualisierungshäufigkeit aufweist.
  11. Vorrichtung nach Anspruch 2, wobei die Steuereinheit (305) in Reaktion auf das Bestimmen durch die Steuereinheit (305), dass die vorherige Aktualisierungshäufigkeit für die logische Blockadresse (LBA) eine höchste Aktualisierungshäufigkeit ist, in der Lage ist zum: Ermitteln der Differenz zwischen einer aktuellen Datenseite für die logische Blockadresse (LBA) und einer vorherigen Datenseite für die logische Blockadresse (LBA); und Schreiben von Daten der Differenz zwischen der aktuellen Datenseite und der vorherigen Datenseite in einen Cache-Speicher (600).
  12. Vorrichtung nach Anspruch 2, wobei die Steuereinheit (305) in Reaktion auf das Ermitteln durch die Steuereinheit (305), dass die vorherige Markierungsstufe für die logische Blockadresse (LBA) eine relativ hohe Markierungsstufe ist, in der Lage ist, die Daten in einen freien Block zu schreiben, der zumindest einem von einem magnetoresistiven Speicher mit wahlfreiem Zugriff (700) und einem ferroelektrischen Speicher mit wahlfreiem Zugriff entspricht (700).
  13. Halbleiter-Speichervorrichtung (300), die umfasst: eine Vielzahl von Blöcken, die als Speicher für die Halbleiter-Speichervorrichtung (300) eingerichtet sind; und eine Steuereinheit (305) mit integrierten Schaltungen, welche konfiguriert sind, die Halbleiter-Speichervorrichtung (300) zu steuern; wobei bei Durchführung einer Schreibanfrage um eine gültige Datenseite eines Blocks zu verschieben die Steuereinheit (305) dazu ausgebildet ist: eine vorhergehende Aktualisierungshäufigkeit des Blocks zu bestimmen; und die gültigen Datenseiten in einem freien Block zu schreiben, wobei der freie Block eine Aktualisierungshäufigkeit aufweist, welche der vorhergehenden Aktualisierungshäufigkeit reduziert um 1 oder mehr entspricht; wobei die Steuereinheit (305) dazu ausgebildet ist, sobald eine gültige Datenseite von einem besetzten Block in einen neuen Block verschoben wird: eine vorherige Aktualisierungshäufigkeit der gültigen Datenseite mit r und eine neue Aktualisierungshäufigkeit der gültigen Datenseite mit r' zu bezeichnen, zu bestimmen, dass die gültige Datenseite in einem neuen Block gespeichert wird, welcher der neuen Aktualisierungshäufigkeit r' = r – 1 entspricht, wenn r > 0 ist, wobei 0 ein höchstes statisches Niveau ist, und zu bestimmen, dass die gültige Datenseite in einem neuen Block gespeichert wird, welcher der neuen Aktualisierungshäufigkeit r' = 0 entspricht, falls r > 0 nicht erfüllt ist.
  14. Vorrichtung nach Anspruch 13, wobei die Steuereinheit (305) in der Lage ist, jeden der Blöcke mit einer Aktualisierungshäufigkeit zu markieren, die sich in zwei oder mehr Stufen von hochstatisch zu hochdynamisch erstreckt.
  15. Vorrichtung nach Anspruch 13, wobei die Steuereinheit (305) in der Lage ist, Datenseiten auf der Grundlage einer jeweiligen Aktualisierungshäufigkeit für jede Datenseite in Blöcke zu schreiben.
  16. Vorrichtung nach Anspruch 13, wobei die Steuereinheit (305) in der Lage ist, am seltensten aktualisierte Datenseiten in Blöcke zu schreiben, die eine niedrigste Aktualisierungshäufigkeit aufweisen.
  17. Vorrichtung nach Anspruch 13, wobei die Steuereinheit (305) in der Lage ist zu bewirken, dass Blöcke, die eine höchste Aktualisierungshäufigkeit aufweisen, mehr ungültige Datenseiten haben als Blöcke, die eine niedrigste Aktualisierungshäufigkeit aufweisen.
  18. Vorrichtung nach Anspruch 13, wobei die Steuereinheit (305) beim fortlaufenden Empfangen der Schreibanforderung zum Verschieben der gültigen Datenseiten für den Block in der Lage ist zum: fortlaufenden Reduzieren der vorherigen Aktualisierungshäufigkeit des Blocks; und Ermitteln des freien Blocks, der eine Aktualisierungshäufigkeit aufweist, die gleich der fortlaufend reduzierten, vorherigen Aktualisierungshäufigkeit ist; und wobei die Steuereinheit (305) in Reaktion auf das fortlaufende Empfangen der Schreibanforderung die gültigen Datenseiten für den Block zu verschieben in der Lage ist, die Datenseiten in den freien Block zu schreiben, der die Aktualisierungshäufigkeit aufweist, die gleich der fortlaufend reduzierten, vorherigen Aktualisierungshäufigkeit ist.
  19. Vorrichtung nach Anspruch 18, wobei die Steuereinheit (305) dazu in der Lage ist, die vorhergehende Aktualisierungshäufigkeit kontinuierlich um 1 zu reduzieren, bis eine niedrigste Aktualisierungshäufigkeit erreicht ist, wobei die Steuereinheit (305) in Reaktion darauf, dass die vorhergehende Aktualisierungshäufigkeit die niedrigste Aktualisierungshäufigkeit erreicht, in der Lage ist, die gültige Datenseite in einen freien Block zu schreiben, welcher die niedrigste Aktualisierungshäufigkeit aufweist.
  20. Verfahren für ein Markierungsschema in einer Halbleiter-Speichervorrichtungen (300), das umfasst: Empfangen einer Anforderung zum Schreiben von Daten, die an eine logische Blockadresse (LBA) einer Halbleiter-Speichervorrichtung (300) eines Computers (100) adressiert ist, wobei die Festkörper-Speichervorrichtung (300) eine Vielzahl von Blöcken aufweist, die als Speicher gestaltet sind, wobei eine Steuereinheit (305) zum Ansteuern der Halbleiter-Speichervorrichtung (300) eingerichtet ist; Ermitteln einer vorherigen Aktualisierungshäufigkeit für die logische Blockadresse (LBA); und Schreiben der Daten in einen freien Block, wobei der freie Block eine Aktualisierungshäufigkeit aufweist, die gegenüber der vorherigen Aktualisierungshäufigkeit um 1 oder mehr erhöht ist; wobei die Steuereinheit (305) dazu ausgebildet ist, sobald eine gültige Datenseite von einem besetzten Block in einen neuen Block verschoben wird: eine vorherige Aktualisierungshäufigkeit der gültigen Datenseite mit r und eine neue Aktualisierungshäufigkeit der gültigen Datenseite mit r' zu bezeichnen, zu bestimmen, dass die gültige Datenseite in einem neuen Block gespeichert wird, welcher der neuen Aktualisierungshäufigkeit r' = r – 1 entspricht, wenn r > 0 ist, wobei 0 ein höchstes statisches Niveau ist, und zu bestimmen, dass die gültige Datenseite in einem neuen Block gespeichert wird, welcher der neuen Aktualisierungshäufigkeit r' = 0 entspricht, falls r > 0 nicht erfüllt ist.
  21. Verfahren nach Anspruch 20, das des Weiteren umfasst: beim fortlaufenden Empfangen der Schreibanforderung, die an die logische Blockadresse (LBA) adressiert ist, das fortlaufende Erhöhen der vorherigen Aktualisierungshäufigkeit um 1; Ermitteln des freien Blocks, der eine Aktualisierungshäufigkeit aufweist, die gleich der fortlaufend erhöhten, vorherigen Aktualisierungshäufigkeit ist; und in Reaktion auf das fortlaufende Empfangen der an die logische Blockadresse (LBA) adressierten Schreibanforderung das Schreiben der Daten in den freien Block, der die Aktualisierungshäufigkeit aufweist, die gleich der fortlaufend erhöhten, vorherigen Aktualisierungshäufigkeit ist.
  22. Verfahren für ein Markierungsschema in Halbleiter-Speichervorrichtungen (300), das umfasst: Empfangen einer Schreibanforderung zum Verschieben gültiger Datenseiten eines Blocks der Halbleiter-Speichervorrichtung (300) eines Computers (100), wobei die Halbleiter-Speichervorrichtung (300) die Vielzahl von Blöcken aufweist, die als Speicher eingerichtet sind, wobei eine Steuereinheit (305) zum Ansteuern der Halbleiter-Speichervorrichtung (300) eingerichtet ist; Ermitteln einer vorherigen Aktualisierungshäufigkeit für den Block; und Schreiben der gültigen Datenseiten in einen freien Block, wobei der freie Block eine Aktualisierungshäufigkeit aufweist, die gegenüber der vorherigen Aktualisierungshäufigkeit um 1 oder mehr verringert ist; wobei die Steuereinheit (305) dazu ausgebildet ist, sobald eine gültige Datenseite von einem besetzten Block in einen neuen Block verschoben wird: eine vorherige Aktualisierungshäufigkeit der gültigen Datenseite mit r und eine neue Aktualisierungshäufigkeit der gültigen Datenseite mit r' zu bezeichnen, zu bestimmen, dass die gültige Datenseite in einem neuen Block gespeichert wird, welcher der neuen Aktualisierungshäufigkeit r' = r – 1 entspricht, wenn r > 0 ist, wobei 0 ein höchstes statisches Niveau ist, und zu bestimmen, dass die gültige Datenseite in einem neuen Block gespeichert wird, welcher der neuen Aktualisierungshäufigkeit r' = 0 entspricht, falls r > 0 nicht erfüllt ist.
  23. Verfahren nach Anspruch 22, das des Weiteren umfasst: beim fortlaufenden Empfangen der Schreibanforderung zum Verschieben der gültigen Datenseiten für den Block das fortlaufende Verringern der vorherigen Aktualisierungshäufigkeit für den Block; Ermitteln des freien Blocks, der eine Aktualisierungshäufigkeit aufweist, die der fortlaufend verringerten, vorherigen Aktualisierungshäufigkeit entspricht; und in Reaktion auf das fortlaufende Empfangen der Schreibanforderung zum Verschieben der gültigen Datenseiten für den Block das Schreiben der gültigen Datenseiten in den freien Block, der die Aktualisierungshäufigkeit aufweist, die gleich der fortlaufend verringerten, vorherigen Aktualisierungshäufigkeit ist.
  24. Halbleiter-Speichervorrichtung (300), die umfasst: Eine Vielzahl von Blöcken, die als Speicher der Halbleiter-Speichervorrichtung (300) konfiguriert sind, wobei jeder Block eine Vielzahl von Datenseiten aufweist; und Eine Steuereinheit (305) die integrierte Schaltungen aufweist, welche zur Steuerung der Halbleiter-Speichervorrichtung (300) konfiguriert sind, wobei ein Daten-Ablageschema durch die Steuereinheit (305) implementiert ist, so dass die Datenseiten mit einer ähnlichen Aktualisierungshäufigkeit gruppiert und in denselben Block geschrieben werden, und wobei jeder Block einen Marker aufweist, welcher die Aktualisierungshäufigkeit der Datenseiten anzeigt, die in dem Block gespeichert sind; wobei die Steuereinheit (305) die Aktualisierungshäufigkeit für jeden Block in einem dynamischen Speicher mit wahlfreiem Zugriff (dynamic random access memory, DRAM) aufrechterhält bzw. die Aktualisierungshäufigkeit in dem Block speichert; wobei die Steuereinheit (305) dazu ausgebildet ist, sobald eine gültige Datenseite von einem besetzten Block in einen neuen Block verschoben wird: eine vorherige Aktualisierungshäufigkeit der gültigen Datenseite mit r und eine neue Aktualisierungshäufigkeit der gültigen Datenseite mit r' zu bezeichnen, zu bestimmen, dass die gültige Datenseite in einem neuen Block gespeichert wird, welcher der neuen Aktualisierungshäufigkeit r' = r – 1 entspricht, wenn r > 0 ist, wobei 0 ein höchstes statisches Niveau ist, und zu bestimmen, dass die gültige Datenseite in einem neuen Block gespeichert wird, welcher der neuen Aktualisierungshäufigkeit r' = 0 entspricht, falls r > 0 nicht erfüllt ist.
DE112010003650.0T 2009-09-15 2010-09-14 Container-Markierungsschema zum Verringern einer Schreibverstärkung bei Halbleiter-Einheiten Active DE112010003650B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/559,959 US8463983B2 (en) 2009-09-15 2009-09-15 Container marker scheme for reducing write amplification in solid state devices
US12/559,959 2009-09-15
PCT/IB2010/054141 WO2011033450A1 (en) 2009-09-15 2010-09-14 Container marker scheme for reducing write amplification in solid state devices

Publications (2)

Publication Number Publication Date
DE112010003650T5 DE112010003650T5 (de) 2012-10-31
DE112010003650B4 true DE112010003650B4 (de) 2016-10-06

Family

ID=43242651

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112010003650.0T Active DE112010003650B4 (de) 2009-09-15 2010-09-14 Container-Markierungsschema zum Verringern einer Schreibverstärkung bei Halbleiter-Einheiten

Country Status (5)

Country Link
US (1) US8463983B2 (de)
CN (1) CN102498522B (de)
DE (1) DE112010003650B4 (de)
GB (1) GB2485732B (de)
WO (1) WO2011033450A1 (de)

Families Citing this family (77)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8762661B2 (en) * 2008-09-18 2014-06-24 Seagate Technology Llc System and method of managing metadata
US20110035540A1 (en) * 2009-08-10 2011-02-10 Adtron, Inc. Flash blade system architecture and method
US8407403B2 (en) * 2009-12-07 2013-03-26 Microsoft Corporation Extending SSD lifetime using hybrid storage
WO2011073940A1 (en) * 2009-12-17 2011-06-23 International Business Machines Corporation Data management in solid state storage systems
US8407449B1 (en) 2010-02-26 2013-03-26 Western Digital Technologies, Inc. Non-volatile semiconductor memory storing an inverse map for rebuilding a translation table
JP2012033002A (ja) * 2010-07-30 2012-02-16 Toshiba Corp メモリ管理装置およびメモリ管理方法
US8909851B2 (en) 2011-02-08 2014-12-09 SMART Storage Systems, Inc. Storage control system with change logging mechanism and method of operation thereof
US8621328B2 (en) * 2011-03-04 2013-12-31 International Business Machines Corporation Wear-focusing of non-volatile memories for improved endurance
US8935466B2 (en) 2011-03-28 2015-01-13 SMART Storage Systems, Inc. Data storage system with non-volatile memory and method of operation thereof
EP2715510B1 (de) * 2011-05-24 2018-05-02 Marvell World Trade Ltd. Verfahren für speichervorrichtungen zur erzielung eines niedrigen schreibfaktors mit niedriger überversorgung
KR20120136197A (ko) * 2011-06-08 2012-12-18 삼성전자주식회사 비휘발성 메모리에 대한 웨어 레벨링 방법
US9158670B1 (en) 2011-06-30 2015-10-13 Western Digital Technologies, Inc. System and method for dynamically adjusting garbage collection policies in solid-state memory
US9098399B2 (en) 2011-08-31 2015-08-04 SMART Storage Systems, Inc. Electronic system with storage management mechanism and method of operation thereof
US9021231B2 (en) 2011-09-02 2015-04-28 SMART Storage Systems, Inc. Storage control system with write amplification control mechanism and method of operation thereof
US9021319B2 (en) 2011-09-02 2015-04-28 SMART Storage Systems, Inc. Non-volatile memory management system with load leveling and method of operation thereof
US9063844B2 (en) 2011-09-02 2015-06-23 SMART Storage Systems, Inc. Non-volatile memory management system with time measure mechanism and method of operation thereof
US9092316B2 (en) 2011-10-28 2015-07-28 International Business Machines Corporation Methods and storage devices for managing write operations
US9081665B2 (en) * 2012-02-02 2015-07-14 OCZ Storage Solutions Inc. Apparatus, methods and architecture to increase write performance and endurance of non-volatile solid state memory components
US9239781B2 (en) 2012-02-07 2016-01-19 SMART Storage Systems, Inc. Storage control system with erase block mechanism and method of operation thereof
US8892811B2 (en) 2012-03-01 2014-11-18 Avago Technologies General Ip (Singapore) Pte. Ltd. Reducing write amplification in a flash memory
US9298252B2 (en) 2012-04-17 2016-03-29 SMART Storage Systems, Inc. Storage control system with power down mechanism and method of operation thereof
US8949689B2 (en) 2012-06-11 2015-02-03 SMART Storage Systems, Inc. Storage control system with data management mechanism and method of operation thereof
CN102841850B (zh) * 2012-06-19 2016-04-20 记忆科技(深圳)有限公司 减小固态硬盘写放大的方法及系统
CN102799535A (zh) * 2012-06-29 2012-11-28 记忆科技(深圳)有限公司 固态硬盘的数据处理方法及固态硬盘
US8898548B1 (en) 2012-08-24 2014-11-25 Western Digital Technologies, Inc. Methods, data storage devices and systems having variable size ECC page size
US9268682B2 (en) 2012-10-05 2016-02-23 Skyera, Llc Methods, devices and systems for physical-to-logical mapping in solid state drives
US9507523B1 (en) 2012-10-12 2016-11-29 Western Digital Technologies, Inc. Methods, devices and systems for variable size logical page management in a solid state drive
US9489296B1 (en) 2012-10-17 2016-11-08 Western Digital Technologies, Inc. Methods, devices and systems for hardware-based garbage collection in solid state drives
US9671962B2 (en) 2012-11-30 2017-06-06 Sandisk Technologies Llc Storage control system with data management mechanism of parity and method of operation thereof
US9123445B2 (en) 2013-01-22 2015-09-01 SMART Storage Systems, Inc. Storage control system with data management mechanism and method of operation thereof
WO2014118822A1 (en) * 2013-01-31 2014-08-07 Hitachi, Ltd. Storage system and cache control method
US9329928B2 (en) 2013-02-20 2016-05-03 Sandisk Enterprise IP LLC. Bandwidth optimization in a non-volatile memory system
US9214965B2 (en) 2013-02-20 2015-12-15 Sandisk Enterprise Ip Llc Method and system for improving data integrity in non-volatile storage
US9183137B2 (en) 2013-02-27 2015-11-10 SMART Storage Systems, Inc. Storage control system with data management mechanism and method of operation thereof
US9470720B2 (en) 2013-03-08 2016-10-18 Sandisk Technologies Llc Test system with localized heating and method of manufacture thereof
US9043780B2 (en) 2013-03-27 2015-05-26 SMART Storage Systems, Inc. Electronic system with system modification control mechanism and method of operation thereof
US10049037B2 (en) 2013-04-05 2018-08-14 Sandisk Enterprise Ip Llc Data management in a storage system
US9170941B2 (en) 2013-04-05 2015-10-27 Sandisk Enterprises IP LLC Data hardening in a storage system
US9543025B2 (en) 2013-04-11 2017-01-10 Sandisk Technologies Llc Storage control system with power-off time estimation mechanism and method of operation thereof
US10546648B2 (en) 2013-04-12 2020-01-28 Sandisk Technologies Llc Storage control system with data management mechanism and method of operation thereof
US9898056B2 (en) 2013-06-19 2018-02-20 Sandisk Technologies Llc Electronic assembly with thermal channel and method of manufacture thereof
US9313874B2 (en) 2013-06-19 2016-04-12 SMART Storage Systems, Inc. Electronic system with heat extraction and method of manufacture thereof
US9367353B1 (en) 2013-06-25 2016-06-14 Sandisk Technologies Inc. Storage control system with power throttling mechanism and method of operation thereof
US9244519B1 (en) 2013-06-25 2016-01-26 Smart Storage Systems. Inc. Storage system with data transfer rate adjustment for power throttling
US9146850B2 (en) 2013-08-01 2015-09-29 SMART Storage Systems, Inc. Data storage system with dynamic read threshold mechanism and method of operation thereof
US9448946B2 (en) 2013-08-07 2016-09-20 Sandisk Technologies Llc Data storage system with stale data mechanism and method of operation thereof
US9431113B2 (en) 2013-08-07 2016-08-30 Sandisk Technologies Llc Data storage system with dynamic erase block grouping mechanism and method of operation thereof
US9361222B2 (en) 2013-08-07 2016-06-07 SMART Storage Systems, Inc. Electronic system with storage drive life estimation mechanism and method of operation thereof
US10019352B2 (en) * 2013-10-18 2018-07-10 Sandisk Technologies Llc Systems and methods for adaptive reserve storage
US9152555B2 (en) 2013-11-15 2015-10-06 Sandisk Enterprise IP LLC. Data management with modular erase in a data storage system
GB201322075D0 (en) 2013-12-13 2014-01-29 Ibm Device for selecting a level for at least one read voltage
US9633749B2 (en) 2013-12-19 2017-04-25 Sandisk Technologies Llc System and method of managing tags associated with read voltages
US9354955B1 (en) 2014-03-19 2016-05-31 Western Digital Technologies, Inc. Partial garbage collection for fast error handling and optimized garbage collection for the invisible band
US9632927B2 (en) 2014-09-25 2017-04-25 International Business Machines Corporation Reducing write amplification in solid-state drives by separating allocation of relocate writes from user writes
US10025530B2 (en) 2014-09-29 2018-07-17 Western Digital Technologies, Inc. Optimized garbage collection for solid-state storage devices
US9563373B2 (en) 2014-10-21 2017-02-07 International Business Machines Corporation Detecting error count deviations for non-volatile memory blocks for advanced non-volatile memory block management
US10078582B2 (en) 2014-12-10 2018-09-18 International Business Machines Corporation Non-volatile memory system having an increased effective number of supported heat levels
US9619158B2 (en) 2014-12-17 2017-04-11 International Business Machines Corporation Two-level hierarchical log structured array architecture with minimized write amplification
US9779021B2 (en) 2014-12-19 2017-10-03 International Business Machines Corporation Non-volatile memory controller cache architecture with support for separation of data streams
US9606734B2 (en) 2014-12-22 2017-03-28 International Business Machines Corporation Two-level hierarchical log structured array architecture using coordinated garbage collection for flash arrays
US9990279B2 (en) 2014-12-23 2018-06-05 International Business Machines Corporation Page-level health equalization
US10339048B2 (en) 2014-12-23 2019-07-02 International Business Machines Corporation Endurance enhancement scheme using memory re-evaluation
US20160179399A1 (en) * 2014-12-23 2016-06-23 Sandisk Technologies Inc. System and Method for Selecting Blocks for Garbage Collection Based on Block Health
US9372628B1 (en) 2015-01-23 2016-06-21 International Business Machines Corporation Deduplication tracking for accurate lifespan prediction
EP3252605B1 (de) 2015-01-26 2022-04-06 Hitachi Astemo, Ltd. Fahrzeugmontierte steuerungsvorrichtung, programmschreibvorrichtung, programmerzeugungsvorrichtung und programm
US9760281B2 (en) * 2015-03-27 2017-09-12 Intel Corporation Sequential write stream management
US10599352B2 (en) 2015-08-14 2020-03-24 Samsung Electronics Co., Ltd. Online flash resource allocation manager based on a TCO model
US9886208B2 (en) 2015-09-25 2018-02-06 International Business Machines Corporation Adaptive assignment of open logical erase blocks to data streams
US20180024751A1 (en) * 2016-07-19 2018-01-25 Western Digital Technologies, Inc. Metadata management on a storage device
CN108628752B (zh) * 2017-03-17 2021-10-01 北京兆易创新科技股份有限公司 一种数据存储方法和装置
TWI629592B (zh) * 2017-10-25 2018-07-11 旺宏電子股份有限公司 記憶體裝置及應用於其上之資料管理方法
CN109710173B (zh) * 2017-10-26 2021-12-03 旺宏电子股份有限公司 存储器装置及应用于其上的数据管理方法
KR20190083517A (ko) * 2018-01-04 2019-07-12 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
TWI768346B (zh) * 2018-09-07 2022-06-21 慧榮科技股份有限公司 資料儲存裝置以及非揮發式記憶體控制方法
US10824610B2 (en) * 2018-09-18 2020-11-03 Vmware, Inc. Balancing write amplification and space amplification in buffer trees
DE102019102861A1 (de) * 2019-02-05 2020-08-06 Hyperstone Gmbh Verfahren und Vorrichtung zur Abschätzung der Abnutzung eines nicht-flüchtigen Informationsspeichers
US20220236272A1 (en) 2019-06-13 2022-07-28 Fundació Hospital Universitari Vall D'hebron - Institut De Recerca Synthrocyte: erythrocyte-mimicking reagent and fast methods for pathogen characterization and serology testing

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE60319563T2 (de) * 2002-10-28 2009-03-19 Sandisk Corp., Sunnyvale Verwaltung der anzahl von löschungen in einem nicht-fluchtigem speicher
US20090164702A1 (en) * 2007-12-21 2009-06-25 Spansion Llc Frequency distributed flash memory allocation based on free page tables

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10247165A (ja) * 1997-03-05 1998-09-14 Zexel Corp 書込補償回数有限メモリへのデータ書込方法及びその装置
US7953931B2 (en) 1999-08-04 2011-05-31 Super Talent Electronics, Inc. High endurance non-volatile memory devices
US7827348B2 (en) 2000-01-06 2010-11-02 Super Talent Electronics, Inc. High performance flash memory devices (FMD)
US20050204187A1 (en) * 2004-03-11 2005-09-15 Lee Charles C. System and method for managing blocks in flash memory
US6732221B2 (en) 2001-06-01 2004-05-04 M-Systems Flash Disk Pioneers Ltd Wear leveling of static areas in flash memory
US6981196B2 (en) 2001-07-25 2005-12-27 Hewlett-Packard Development Company, L.P. Data storage method for use in a magnetoresistive solid-state storage device
US7356641B2 (en) 2001-08-28 2008-04-08 International Business Machines Corporation Data management in flash memory
KR100484147B1 (ko) 2002-07-26 2005-04-18 삼성전자주식회사 플래시 메모리 관리 방법
US7254668B1 (en) 2002-10-28 2007-08-07 Sandisk Corporation Method and apparatus for grouping pages within a block
US20050050261A1 (en) 2003-08-27 2005-03-03 Thomas Roehr High density flash memory with high speed cache data interface
US8112574B2 (en) 2004-02-26 2012-02-07 Super Talent Electronics, Inc. Swappable sets of partial-mapping tables in a flash-memory system with a command queue for combining flash writes
KR100526190B1 (ko) 2004-02-06 2005-11-03 삼성전자주식회사 플래시 메모리의 재사상 방법
US7752382B2 (en) 2005-09-09 2010-07-06 Sandisk Il Ltd Flash memory storage system and method
US7424587B2 (en) 2006-05-23 2008-09-09 Dataram, Inc. Methods for managing data writes and reads to a hybrid solid-state disk drive
US20100115175A9 (en) 2006-12-18 2010-05-06 Zhiqing Zhuang Method of managing a large array of non-volatile memories
KR100909902B1 (ko) 2007-04-27 2009-07-30 삼성전자주식회사 플래쉬 메모리 장치 및 플래쉬 메모리 시스템
KR100857761B1 (ko) 2007-06-14 2008-09-10 삼성전자주식회사 웨어 레벨링을 수행하는 메모리 시스템 및 그것의 쓰기방법
TWI373772B (en) 2007-10-04 2012-10-01 Phison Electronics Corp Wear leveling method and controller using the same
US8397011B2 (en) 2007-10-05 2013-03-12 Joseph Ashwood Scalable mass data storage device
US7855916B2 (en) 2007-10-24 2010-12-21 Rao G R Mohan Nonvolatile memory systems with embedded fast read and write memories

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE60319563T2 (de) * 2002-10-28 2009-03-19 Sandisk Corp., Sunnyvale Verwaltung der anzahl von löschungen in einem nicht-fluchtigem speicher
US20090164702A1 (en) * 2007-12-21 2009-06-25 Spansion Llc Frequency distributed flash memory allocation based on free page tables

Also Published As

Publication number Publication date
CN102498522B (zh) 2015-07-01
WO2011033450A1 (en) 2011-03-24
DE112010003650T5 (de) 2012-10-31
US20110066788A1 (en) 2011-03-17
CN102498522A (zh) 2012-06-13
GB2485732B (en) 2014-08-20
GB201203943D0 (en) 2012-04-18
GB2485732A (en) 2012-05-23
US8463983B2 (en) 2013-06-11

Similar Documents

Publication Publication Date Title
DE112010003650B4 (de) Container-Markierungsschema zum Verringern einer Schreibverstärkung bei Halbleiter-Einheiten
DE112014005521B4 (de) Speichermodul und Verfahren zum Verwalten des Abbildens logischer Adressen auf physikalische Adressen
DE102012208141B4 (de) Ausgleich nachlassender Funktionsfähigkeit
DE112010002663B4 (de) Speichermanagementsysteme, Verfahren zur Verbesserung der Schreib-Lösch-Ausdauerlebenszeit von Speichervorrichtungen und Computerprogrammprodukt
DE112008001126B4 (de) Verschleißausgleich
DE102005019842B4 (de) System und Verfahren zum sequentiellen Schreiben von Daten in einen Flash-Speicher
DE112018004256T5 (de) Redundanzcodierstreifen basierend auf internen adressen von speichervorrichtungen
DE112013004400B4 (de) Herstellen einer Zeitpunktkopie-Beziehung zwischen logischen Quellenadressen und logischen Zieladressen
DE112011100618T5 (de) Verwalten von Schreiboperationen auf einen Speicherbereich von Spuren, der zwischen Speichereinheiten verlagert wird
DE102005063250A1 (de) Datenspeicherungssteuersystem, Speicher- und Rechnersystem und Betriebsverfahren
DE112012001302T5 (de) Cachen von Daten in einem Speichersystem mit mehreren Cache-Speichern
DE102018113447A1 (de) Speichervorrichtung zum Koppeln mit einem Host und Verfahren zum Betreiben des Hosts und der Speichervorrichtung
DE102009031125A1 (de) Nand-Fehlerbehandlung
DE102018105854A1 (de) Dynamische Größenanpassung logischer Speicherblöcke
DE112011102487T5 (de) Zuordnen von logischen zu physischen Adressen in Halbleiterspeichereinheiten aufweisenden Speichersystemen
DE112015000378T5 (de) Selektives Rückkopieren für einen auf einem Chipplättchen gepufferten nichtflüchtigen Speicher
DE112012001808B4 (de) Cache-Management von Spuren in einem ersten Cachespeicher und einem zweiten Cachespeicher für einen Speicher
DE102009051339A1 (de) Speichersystem und Speicherverfahren
DE202010017613U1 (de) Datenspeichervorrichtung mit host-gesteuerter Speicherbereinigung
DE102009019271A1 (de) Übertragen von Sequenzzahlen für das Wiederherstellen nach Stromausfall bei einem nichtflüchtigen Speicher
DE112008000180T5 (de) Verfahren und System für die Umsetzung eines Fast-Wakeup eines Flashspeichersystems
CN106339324B (zh) 一种选择垃圾回收块的方法及装置
DE102016010277A1 (de) Verfahren und systeme zum verbessern von speicher-journaling
DE112020002792B4 (de) Verschleissorientierte blockmodusumwandlung in nichtflüchtigen speichern
DE102012219098A1 (de) Verwaltung von Teildatensegmenten in Systemen mit doppeltem Cachespeicher

Legal Events

Date Code Title Description
R163 Identified publications notified
R012 Request for examination validly filed
R016 Response to examination communication
R016 Response to examination communication
R082 Change of representative

Representative=s name: RICHARDT PATENTANWAELTE PART GMBB, DE

R081 Change of applicant/patentee

Owner name: SK HYNIX INC., ICHEON, KR

Free format text: FORMER OWNER: INTERNATIONAL BUSINESS MACHINES CORPORATION, ARMONK, N.Y., US

Effective date: 20140730

R082 Change of representative

Representative=s name: RICHARDT PATENTANWAELTE PART GMBB, DE

Effective date: 20140730

Representative=s name: RICHARDT PATENTANWAELTE PARTG MBB, DE

Effective date: 20140730

R016 Response to examination communication
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final