-
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
-
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
-
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.