-
Hintergrund
-
Ein Speichersystem [storage system] kann einen Datenspeicher [memory] besitzen, der in Blöcken organisiert ist. Im Zeitablauf können in einen Block geschriebene Daten für ungültig erklärt werden (z. B. aufgrund einer Host-Datenlöschung und/oder interner Datenübertragungen in dem Speichersystem). Die Speicherbereinigung ist ein Vorgang, der die gültigen Teile von verwendeten Datenspeicherblöcken sammelt (wobei die für ungültig erklärten Teile ignoriert werden) und sie in einen neuen Block bewegt. Wenn ein Block vollständig für ungültig erklärt wird, wird er in den Pool von freien Blöcken zurückgeführt. Die Speicherbereinigung kann durch Vorhalten eines „Gültigkeitszählers“ für jeden Block, um die Anzahl der gültigen Flash-Managementeinheiten in dem Block zu verfolgen, und/oder durch einen Programmier-/Löschzykluszähler, um die Haltbarkeit des Blocks zu überwachen, gesteuert werden. Ein Speicherbereinigungsalgorithmus kann durch Prüfen, welcher Block den niedrigsten „Gültigkeitszähler“, den höchsten Programmier-/Löschzykluszähler und/oder einen Programmier-/Löschzykluszähler, der unter einem Mittelwert liegt, besitzt, wählen, welcher Block als nächstes „bereinigt“ werden sollte.
-
Figurenliste
-
- 1A ist ein Blockdiagramm eines nichtflüchtigen Speichersystems einer Ausführungsform.
- 1B ist ein Blockdiagramm, das ein Speichermodul einer Ausführungsform darstellt.
- 1C ist ein Blockdiagramm, das ein hierarchisches Speichersystem einer Ausführungsform darstellt.
- 2A ist ein Blockdiagramm, das Komponenten des Controllers des nichtflüchtigen Speichersystems, das in 1A dargestellt ist, gemäß einer Ausführungsform darstellt.
- 2B ist ein Blockdiagramm, das Komponenten des Speichersystems mit nichtflüchtigem Datenspeicher, das in 1A dargestellt ist, gemäß einer Ausführungsform darstellt.
- 3 ist ein Ablaufplan eines Verfahrens zur prädiktiven Blockzuweisung zur effizienten Speicherbereinigung einer Ausführungsform.
- 4 ist ein Ablaufplan eines Verfahrens zum Speichern von Mustern in einem Datenspeicher einer Ausführungsform.
- 5 ist ein Ablaufplan eines Verfahrens zur prädiktiven Blockzuweisung zur effizienten Speicherbereinigung einer Ausführungsform, in der ein Musterabgleich verwendet wird.
-
Genaue Beschreibung
-
Einleitend beziehen sich die unten beschriebenen Ausführungsformen auf ein Speichersystem und ein Verfahren zur prädiktiven Blockzuweisung zur effizienten Speicherbereinigung. In einer Ausführungsform wird ein Verfahren zur Blockzuweisung bereitgestellt. Das Verfahren umfasst das Bestimmen, ob ein Datenspeicher in einem Speichersystem in einem ersten Verwendungsszenario oder einem zweiten Verwendungsszenario verwendet wird; als Antwort auf das Bestimmen, dass der Datenspeicher in dem ersten Verwendungsszenario verwendet wird, das Verwenden eines ersten Blockzuweisungsverfahrens; und als Antwort auf das Bestimmen, dass der Datenspeicher in dem zweiten Verwendungsszenario verwendet wird, das Verwenden eines zweiten Blockzuweisungsverfahrens, wobei das erste Blockzuweisungsverfahren Blöcke zuweist, die sich näher daran befinden, eine Speicherbereinigung zu benötigen, als jene in dem zweiten Blockzuweisungsverfahren.
-
In einigen Ausführungsformen wird das Bestimmen durch Vergleichen mehrerer Schreibanweisungen mit Mustern, die im Speichersystem gespeichert sind, durchgeführt, wobei das erste Blockzuweisungsverfahren einem der Muster zugeordnet ist und wobei das zweite Blockzuweisungsverfahren einem weiteren der Muster zugeordnet ist.
-
In einigen Ausführungsformen wird das Bestimmen unter Verwendung von maschinellem Lernen durchgeführt. In einigen Ausführungsformen verwendet das maschinelle Lernen überwachtes Lernen, wohingegen in weiteren Ausführungsformen das maschinelle Lernen nichtüberwachtes Lernen verwendet.
-
In einigen Ausführungsformen wird das Bestimmen durch Berechnen eines Verhältnisses von Einzeladressaktualisierungen durch den Anwender zu Laufwerksüberschreibvorgängen durchgeführt.
-
In einigen Ausführungsformen wird das Bestimmen durch Empfangen einer Angabe von einem Host, ob der Speicher in dem ersten Verwendungsszenario oder in dem zweiten Verwendungsszenario verwendet wird, durchgeführt.
-
In einigen Ausführungsformen umfasst das Verfahren ferner das Verändern einer Zeit der Speicherbereinigung.
-
In einigen Ausführungsformen wird die Zeit der Speicherbereinigung durch Anpassen mindestens eines Schwellenwertparameters zum Initiieren einer Speicherbereinigung verändert.
-
In einigen Ausführungsformen wird die Zeit der Speicherbereinigung durch Verändern eines Verhältnisses des Auslösens von Speicherbereinigungsvorgängen zu Host-Schreibvorgängen verändert.
-
In einigen Ausführungsformen wird die Zeit der Speicherbereinigung durch Verändern eines Verhältnisses von dynamischen zu statischen Speicherbereinigungsvorgängen verändert.
-
In einigen Ausführungsformen werden Daten, die in dem ersten Verwendungsszenario gespeichert werden, weniger häufig aktualisiert als Daten, die in dem zweiten Verwendungsszenario gespeichert werden.
-
In einigen Ausführungsformen umfasst der Speicher einen dreidimensionalen Datenspeicher.
-
In einigen Ausführungsformen wird das Verfahren in dem Speichersystem durchgeführt.
-
In einer weiteren Ausführungsform wird ein Speichersystem bereitgestellt, das einen Datenspeicher und einen Controller enthält. Der Controller ist konfiguriert, mehrere Schreibanweisungen zu empfangen; die mehreren Schreibanweisungen mit Mustern zu vergleichen, die in dem Speichersystem gespeichert sind; für jedes Muster eine Punktzahl zu erzeugen, die ein Übereinstimmungsniveau der mehreren Schreibanweisungen mit diesem Muster repräsentiert; zu bestimmen, welche Punktzahl einen Schwellenwert überschreitet und ein Blockzuweisungsschema zu wählen, das dem Muster, dessen Punktzahl den Schwellenwert überschreitet, zugeordnet ist.
-
In einigen Ausführungsformen weist ein Blockzuweisungsschema, das einem ersten Muster zugeordnet ist, Blöcke zu, die sich näher daran befinden, eine Speicherbereinigung zu benötigen, als jene in einem Blockzuweisungsschema, das einem zweiten Muster zugeordnet ist.
-
In einigen Ausführungsformen ist der Controller ferner konfiguriert, mindestens einen Schwellenwertparameter zum Initiieren einer Speicherbereinigung anzupassen.
-
In einigen Ausführungsformen enthält der Datenspeicher einen dreidimensionalen Datenspeicher.
-
In einigen Ausführungsformen ist das Speichersystem in einem Host eingebettet.
-
In einigen Ausführungsformen ist das Speichersystem austauschbar mit einem Host verbunden.
-
In einer weiteren Ausführungsform wird ein Speichersystem bereitgestellt, das einen Datenspeicher; Mittel zum Bestimmen, wie der Datenspeicher verwendet wird; und Mittel zum Auswählen eines Blockzuweisungsverfahrens auf der Grundlage davon, wie der Datenspeicher verwendet wird, enthält, wobei ein erstes Blockzuweisungsverfahren als Antwort auf das Bestimmen, dass der Datenspeicher in einem ersten Verwendungsszenario verwendet wird, gewählt wird und wobei ein zweites Blockzuweisungsverfahren als Antwort auf das Bestimmen, dass der Datenspeicher in einem zweiten Verwendungsszenario verwendet wird, gewählt wird, wobei das erste Blockzuweisungsverfahren ferner Blöcke zuweist, die sich näher daran befinden, eine Speicherbereinigung zu benötigen, als jene in dem zweiten Blockzuweisungsverfahren.
-
In einigen Ausführungsformen enthalten die Mittel zum Bestimmen und die Mittel zum Auswählen einen Controller.
-
In einigen Ausführungsformen enthält der Datenspeicher einen dreidimensionalen Datenspeicher.
-
Weitere Ausführungsformen sind möglich, und jede der Ausführungsformen kann alleine oder in Kombination mit weiteren verwendet werden. Dementsprechend werden nun verschiedene Ausführungsformen unter Bezugnahme auf die beigefügten Zeichnungen beschrieben.
-
Unter Bezugnahme auf die Zeichnungen sind in Fig. 1A-1C Speichersysteme gezeigt, die zur Verwendung beim Implementieren von Aspekten dieser Ausführungsformen geeignet sind. 1A ist ein Blockdiagramm, das ein nichtflüchtiges Speichersystem 100 gemäß einer Ausführungsform des hier beschriebenen Gegenstands darstellt. Unter Bezugnahme auf 1A enthält das nichtflüchtige Speichersystem 100 einen Controller 102 und einen nichtflüchtigen Datenspeicher, der aus einem oder mehreren nichtflüchtigen Datenspeicherchips 104 gebildet sein kann. Der Begriff Chip wie hierin verwendet bezieht sich auf die Sammlung von nichtflüchtigen Datenspeicherzellen und eine zugeordnete Schaltungsanordnung zum Managen des physikalischen Betriebs der nichtflüchtigen Datenspeicherzellen, die auf einem einzelnen Halbleitersubstrat gebildet sind. Der Controller 102 ist mit einem Host-System gekoppelt und überträgt Anweisungssequenzen für Lese-, Programmier- und Löschvorgänge an den nichtflüchtigen Datenspeicherchip 104.
-
Der Controller 102 (der ein Flash-Datenspeicher-Controller sein kann) kann die Form einer Verarbeitungsschaltungsanordnung, eines Mikroprozessors oder eines Prozessors und eines computerlesbaren Mediums, auf dem computerlesbarer Programmcode (z. B. Firmware) gespeichert ist, der z. B. durch den (Mikro-)Prozessor, Logikgatter, Schalter, eine anwendungsspezifische integrierte Schaltung (ASIC), einen programmierbaren Logikcontroller oder einen eingebetteten Mikrocontroller ausführbar ist, annehmen. Der Controller 102 kann mit Hardware und/oder Firmware konfiguriert sein, um die verschiedenen Funktionen durchzuführen, die unten beschrieben und in den Ablaufplänen gezeigt sind. Außerdem können einige der Komponenten, die als innerhalb des Controllers angeordnet gezeigt sind, ebenso außerhalb des Controllers gespeichert sein, und andere Komponenten können verwendet werden. Außerdem kann der Ausdruck „betriebstechnisch in Verbindung mit“ direkt in Verbindung mit oder indirekt (leitungsgebunden oder drahtlos) durch eine oder mehrere Komponenten, die hier gezeigt oder beschrieben sein können oder nicht, in Verbindung mit bedeuten.
-
Ein Flash-Datenspeicher-Controller wie hierin verwendet ist eine Einrichtung, die Daten, die in einem Flash-Datenspeicher gespeichert sind, managt und mit einem Host wie z. B. einem Computer oder einer elektronischen Einrichtung kommuniziert. Ein Flash-Datenspeicher-Controller kann zusätzlich zu der bestimmten, hier beschriebenen Funktionalität verschiedene Funktionalitäten aufweisen. Zum Beispiel kann der Flash-Datenspeicher-Controller den Flash-Datenspeicher formatieren, um zu gewährleisten, dass der Speicher ordnungsgemäß arbeitet, defekte Flash-Datenspeicherzellen austragen und Ersatzspeicherzellen zuweisen, um durch sie künftig ausgefallene Zellen zu ersetzen. Ein Teil der Ersatzspeicherzellen kann verwendet werden, um eine Firmware bereitzuhalten, um den Flash-Datenspeicher-Controller zu betreiben und weitere Funktionen zu implementieren. Wenn ein Host im Betrieb Daten aus dem Flash-Datenspeicher lesen oder in ihn schreiben muss, wird er mit dem Flash-Datenspeicher-Controller kommunizieren. Wenn der Host eine logische Adresse liefert, von der Daten gelesen oder an die Daten geschrieben werden sollen, kann der Flash-Datenspeicher-Controller die logische Adresse, die von dem Host empfangen wurde, in eine physikalische Adresse in dem Flash-Datenspeicher konvertieren (alternativ kann der Host die physikalische Adresse liefern). Der Flash-Datenspeicher-Controller kann außerdem verschiedene Datenspeichermanagementfunktionen wie z. B., jedoch nicht darauf eingeschränkt, einen Abnutzungsausgleich (Verteilen von Schreibvorgängen, um das Abnutzen bestimmter Datenspeicherblöcke zu vermeiden, in die sonst wiederholt geschrieben würde) oder eine Speicherbereinigung (Bewegen lediglich der gültigen Seiten mit Daten in einen neuen Block, nachdem ein Block voll ist, damit der volle Block gelöscht und wiederverwendet werden kann) durchführen.
-
Der nichtflüchtige Datenspeicherchip 104 kann jedes geeignete nichtflüchtige Speichermedium, einschließlich NAND-Flash-Datenspeicherzellen und/oder NOR-Flash-Datenspeicherzellen, enthalten. Die Datenspeicherzellen können die Form von Festkörper-Datenspeicherzellen (z. B. Flash-Datenspeicherzellen) annehmen und können einmal programmierbar, einige Male programmierbar oder vielfach programmierbar sein. Die Datenspeicherzellen können außerdem einstufige Zellen (SLC), mehrstufige Zellen (MLC) und dreistufige Zellen (TLC) sein oder weitere derzeit bekannte oder später entwickelte Datenspeicherzellstufentechnologien verwenden. Außerdem können die Datenspeicherzellen in einer zweidimensionalen oder einer dreidimensionalen Weise hergestellt sein.
-
Die Schnittstelle zwischen dem Controller 102 und dem nichtflüchtigen Datenspeicherchip 104 kann jede geeignete Flash-Schnittstelle wie z. B. Umschaltmodus [Toggle Mode] 200, 400 oder 800 sein. In einer Ausführungsform kann das Speichersystem 100 ein kartenbasiertes System wie z. B. eine sichere Digitalkarte (SD-Karte) oder eine sichere Mikrodigitalkarte (Mikro-SD-Karte) sein. In einer alternativen Ausführungsform kann das Speichersystem 100 ein Teil eines eingebetteten Speichersystems sein.
-
Obwohl das nichtflüchtige Speichersystem 100 (das hierin manchmal als ein Speichermodul bezeichnet wird) in dem in 1A dargestellten Beispiel einen einzelnen Kanal zwischen dem Controller 102 und dem nichtflüchtigen Datenspeicherchip 104 enthält, ist der hierin beschriebene Gegenstand nicht auf das Vorhandensein eines einzelnen Speicherkanals eingeschränkt. In einigen NAND-Speichersystemarchitekturen (wie z. B. den in 1B und 1C gezeigten) können abhängig vom Leistungsvermögen des Controllers z. B. 2, 4, 8 oder mehr NAND-Kanäle zwischen dem Controller und der NAND-Datenspeichereinrichtung vorliegen. In jeder der hierin beschriebenen Ausführungsformen kann mehr als ein Kanal zwischen dem Controller und dem Datenspeicherchip vorliegen, selbst wenn in den Zeichnungen ein einzelner Kanal gezeigt ist.
-
1B stellt ein Speichermodul 200 dar, das mehrere nichtflüchtige Speichersysteme 100 enthält. Insofern kann das Speichermodul 200 einen Speicher-Controller 202 enthalten, der mit einem Host und mit dem Speichersystem 204 gekoppelt ist, das mehrere nichtflüchtige Speichersysteme 100 enthält. Die Schnittstelle zwischen dem Speicher-Controller 202 und den nichtflüchtigen Speichersystemen 100 kann eine Busschnittstelle wie z. B. ein serielles Zubehör mit fortschrittlicher Technologie (SATA) oder eine Peripheriekomponenten-Expressschnittstelle (PCIe) sein. Das Speichermodul 200 kann in einer Ausführungsform ein Festkörperlaufwerk (SSD-Laufwerk) sein, wie es z. B. in tragbaren Rechenvorrichtungen wie z. B. Laptop-Computern und Tablet-Computern zu finden ist.
-
1C ist ein Blockdiagramm, das ein hierarchisches Speichersystem darstellt. Ein hierarchisches Speichersystem 250 enthält mehrere Speicher-Controller 202, von denen jeder ein entsprechendes Speichersystem 204 steuert. Die Host-Systeme 252 können auf Datenspeicher in dem Speichersystem über eine Busschnittstelle zugreifen. In einer Ausführungsform kann die Busschnittstelle eine NVMe-Schnittstelle oder eine Glasfaserkanal-über-Ethernet-Schnittstelle (FCoE) sein. In einer Ausführungsform kann das in 1C dargestellte System ein in einem Rack einbaubares Massenspeichersystem sein, auf das von mehreren Host-Computern zugegriffen werden kann, wie es in einem Rechenzentrum oder an einem Ort, an dem ein Massenspeicher benötigt wird, zu finden wäre.
-
2A ist ein Blockdiagramm, das Komponenten des Controllers 102 ausführlicher darstellt. Der Controller 102 enthält ein Frontend-Modul 108, das mit einem Host gekoppelt ist, ein Backend-Modul 110, das mit dem einen oder den mehreren nichtflüchtigen Datenspeicherchips 104 gekoppelt ist, und verschiedene weitere Module, die Funktionen durchführen, die nun ausführlich beschrieben werden. Ein Modul kann z. B die Form einer gekapselten, funktionellen Hardware-Einheit, die zur Verwendung mit anderen Komponenten entworfen ist, eines Abschnitts eines Programmcodes (z. B. Software oder Firmware), der durch einen (Mikro-)Prozessor oder eine Verarbeitungsschaltungsanordnung ausführbar ist, der normalerweise eine bestimmte Funktion von ähnlichen Funktionen durchführt, oder eine eigenständige Hardware- oder Softwarekomponente, die mit einem größeren System gekoppelt ist, annehmen. Die Module des Controllers 102 können ein Blockzuweisungsmodul 111, das unten ausführlicher beschrieben wird, enthalten und können in Hardware oder Software/Firmware implementiert sein. Wie unten klar werden wird, kann der Controller 102 zusammen mit einer Hardware- und/oder Softwarekonfiguration zum Durchführen der hierin diskutierten und in den Zeichnungen gezeigten Algorithmen außerdem Mittel zum Vorhersagen des Nutzungsverhaltens des Datenspeichers und Mittel zum Zuweisen eines Blocks auf der Grundlage des vorhergesagten Nutzungsverhaltens bereitstellen.
-
Nochmals unter Bezugnahme auf Module des Controllers 102 managt ein Puffermanager/Bus-Controller 114 Puffer in einem Schreib/Lese-Speicher (RAM) 116 und steuert die interne Busarbitrierung des Controllers 102. Auf einem Festwertspeicher (ROM) 118 ist Systemstartcode gespeichert. Obwohl sie in 2A als von dem Controller 102 getrennt angeordnet dargestellt sind, können der RAM 116 und/oder der ROM 118 in anderen Ausführungsformen in dem Controller angeordnet sein. In nochmals anderen Ausführungsformen können Abschnitte des RAM und des ROM sowohl in dem Controller 102 als auch außerhalb des Controllers angeordnet sein.
-
Das Frontend-Modul 108 enthält eine Host-Schnittstelle 120 und eine Schnittstelle 122 der physikalischen Schicht (PHY), die die elektrische Schnittstelle zu dem Host oder zu dem Speicher-Controller der nächsten Ebene bereitstellen. Die Wahl des Typs der Host-Schnittstelle 120 kann vom Typ des verwendeten Datenspeichers abhängen. Beispiele für Host-Schnittstellen 120 enthalten, sind jedoch nicht darauf eingeschränkt, SATA, SATA Express, SAS, Faserkanal, USB, PCIe und NVMe. Die Host-Schnittstelle 120 ermöglicht typischerweise die Übertragung von Daten, Steuersignalen und Zeitvorgabesignalen.
-
Das Backend-Modul 110 enthält eine Fehlerkorrektur-Controller-Engine (ECC-Engine) 124, die die Daten-Bytes, die von dem Host empfangen werden, codiert und die Datenbytes, die aus dem nichtflüchtigen Datenspeicher gelesen werden, decodiert und darin enthaltene Fehler korrigiert. Eine Anweisungsablaufsteuerung 126 erzeugt Anweisungsfolgen wie z. B. Programmier- und Löschanweisungsfolgen, die an den nichtflüchtigen Datenspeicherchip 104 übertragen werden sollen. Ein RAID-Modul (Modul mit einer redundanten Anordnung unabhängiger Laufwerke) 128 managt die Erzeugung der RAID-Parität und die Wiederherstellung beschädigter Daten. Die RAID-Parität kann als eine zusätzliche Ebene des Integritätsschutzes für die Daten, die in die Datenspeichereinrichtung 104 geschrieben werden, verwendet werden. In einigen Fällen kann das RAID-Modul 128 ein Teil der ECC-Engine 124 sein. Eine Datenspeicherschnittstelle 130 liefert die Anweisungsfolgen an den nichtflüchtigen Datenspeicherchip 104 und empfängt Zustandsinformationen von dem nichtflüchtigen Datenspeicherchip 104. In einer Ausführungsform kann die Datenspeicherschnittstelle 130 eine Schnittstelle mit doppelter Datenrate (DDR-Schnittstelle) wie z. B. eine Schnittstelle gemäß dem Umschaltmodus [Toggle Mode] 200, 400 oder 800 sein. Eine Flash-Datenspeicherschicht 132 steuert den Gesamtbetrieb des Backend-Moduls 110.
-
Das Speichersystem 100 enthält außerdem weitere diskrete Komponenten 140 wie z. B. externe elektrische Schnittstellen, externen RAM, Widerstände, Kondensatoren oder weitere Komponenten, die mit dem Controller 102 gekoppelt sein können. In alternativen Ausführungsformen sind die Schnittstelle 122 der physikalischen Schicht und/oder das RAID-Modul 128 und/oder die Medienmanagementschicht 138 und/oder das Puffer-Management/der Bus-Controller 114 optionale Komponenten, die in dem Controller 102 nicht erforderlich sind.
-
2B ist ein Blockdiagramm, das die Komponenten des nichtflüchtigen Datenspeicherchips 104 ausführlicher darstellt. Der nichtflüchtige Datenspeicherchip 104 enthält die periphere Schaltungsanordnung 141 und die nichtflüchtige Datenspeicheranordnung 142. Die nichtflüchtige Datenspeicheranordnung 142 enthält die nichtflüchtigen Datenspeicherzellen, die verwendet werden, um Daten zu speichern. Die nichtflüchtigen Datenspeicherzellen können beliebige geeignete nichtflüchtige Datenspeicherzellen sein, die NAND-Flash-Datenspeicherzellen und/oder NOR-Flash-Datenspeicherzellen in einer zweidimensionalen und/oder einer dreidimensionalen Konfiguration enthalten. Die periphere Schaltungsanordnung 141 enthält eine Zustandsmaschine 152, die Zustandsinformationen an den Controller 102 liefert. Der nichtflüchtige Datenspeicherchip 104 enthält ferner einen Datenzwischenspeicher 156, der Daten zwischenspeichert.
-
Wie oben erwähnt kann ein Speichersystem einen Datenspeicher besitzen, der in Blöcken organisiert ist (ein Block wie hierin verwendet ist eine Gruppe von Datenspeicherzellen). Im Zeitablauf können in einen Block geschriebene Daten für ungültig erklärt werden (z. B. aufgrund einer Host-Datenlöschung und/oder interner Datenübertragungen in dem Speichersystem). Die Speicherbereinigung ist ein Vorgang, der die gültigen Teile von verwendeten Datenspeicherblöcken sammelt (wobei die für ungültig erklärten Teile ignoriert werden) und sie in einen neuen Block bewegt. Wenn ein Block vollständig für ungültig erklärt wird, wird er in den Pool von freien Blöcken zurückgeführt. Die Speicherbereinigung kann durch Vorhalten eines „Gültigkeitszählers“ für jeden Block, um die Anzahl der gültigen Flash-Managementeinheiten in dem Block zu verfolgen, und/oder durch einen Programmier-/Löschzykluszähler, um die Haltbarkeit des Blocks zu überwachen, gesteuert werden. Ein Speicherbereinigungsalgorithmus kann durch Prüfen, welcher Block den niedrigsten „Gültigkeitszähler“, den höchsten Programmier-/Löschzykluszähler und/oder einen Programmier-/Löschzykluszähler, der unter einem Mittelwert liegt, besitzt, wählen, welcher Block als nächstes „bereinigt“ werden sollte.
-
Die Speicherbereinigung kann die Host-Leistungsfähigkeit beeinträchtigen, da sie die Schnittstelle vom Controller des Speichersystems zum Datenspeicher verwendet und außerdem Raum sowohl im Controller des Speichersystems als auch in seinem Datenspeicher verwendet. Eine effiziente Speicherbereinigung sowohl hinsichtlich des Datenspeichers als auch der Leistungsfähigkeit ist sehr nützlich. Die folgenden Ausführungsformen stellen ein Verfahren zum Vorhersagen des Nutzungsverhaltens und zum Wählen eines Blockzuweisungsverfahrens, das die Speicherbereinigung wirksam verändern wird, bereit. Das heißt, diese Ausführungsformen können das vorhergesagte Verhalten eines Anwenders oder Hosts im Vorgang des Wählens des nächsten zuzuweisenden Blocks und/oder im Vorgang des Wählens des Speicherbereinigungsplans verwenden. Unter Verwendung einer adaptiven Blockzuweisung im Vorgang der Speicherbereinigung auf der Grundlage des Verwendungsszenarios der aktuellen Einrichtung können diese Ausführungsformen verwendet werden, um eine effizientere Vorgehensweise als frühere Entwürfe bereitzustellen.
-
Unter Bezugnahme auf die Zeichnungen ist 3 ein Ablaufplan 300 eines Verfahrens einer Ausführungsform zur prädiktiven Blockzuweisung zur effizienten Speicherbereinigung. Wie in 3 gezeigt ist, bestimmt in dieser Ausführungsform das Speichersystem 100 (z. B. der Controller 102 oder das Blockzuweisungsmodul 111), ob der Datenspeicher in einem ersten Verwendungsszenario oder einem zweiten Verwendungsszenario verwendet wird (Vorgang 310). Das Speichersystem 100 verwendet als Antwort auf das Bestimmen, dass der Datenspeicher 104 in dem ersten Verwendungsszenario verwendet wird, ein erstes Blockzuweisungsverfahren (Vorgang 320). Umgekehrt verwendet das Speichersystem 100 als Antwort auf das Bestimmen, dass der Datenspeicher 104 in dem zweiten Verwendungsszenario verwendet wird, ein zweites Blockzuweisungsverfahren (Vorgang 330). In einer Ausführungsform werden Daten, die in dem ersten Verwendungsszenario gespeichert werden, weniger häufig aktualisiert, als Daten, die in dem zweiten Verwendungsszenario gespeichert werden, und das erste Blockzuweisungsverfahren weist Blöcke zu, die sich näher daran befinden, eine Speicherbereinigung zu benötigen, als jene in dem zweiten Blockzuweisungsverfahren. In einer Ausführungsform kann sich ein Block näher daran befinden, eine Speicherbereinigung zu benötigen, als ein weiterer Block, wenn dieser Block einen Parameter (z. B. einen Wert eines gültigen Flash-Managementeinheitszählers (FMU-Zähler) und/oder eines Programmier-/Löschzykluszählers) aufweist, der näher an dem Schwellenwert zum Initiieren einer Speicherbereinigung liegt.
-
Zum Beispiel kann eine klare Unterscheidung zwischen einer Blockzuweisung für Speichersysteme/Datenspeicher, die zum Streamen von Videos verwendet werden (extremer Anwendungsfall: wobei der gesamte Datenspeicher 104 (z. B. ein Flash-Laufwerk) beschrieben und dann immer wieder unmittelbar erneut beschrieben wird), und für Speichersysteme/Datenspeicher, die zum Aktualisieren von Online-Inhalten verwendet werden (Anwendungsfall: wobei dieselbe logische Blockadresse (LBA) immer wieder beschrieben wird wie z. B. dann, wenn eine Protokolldatei geschrieben wird, Wartungsarbeiten durchgeführt werden oder eine Einzeladressaktualisierung durchgeführt wird) vorgenommen werden. In dem ersten Verwendungsszenario (Überschreiben eines Laufwerks) kann die Blockzuweisung in einer „konservativeren“ Weise erfolgen, da alle Daten gültig sind und kein Systemgewinn durch Freigeben von Blöcken durch Speicherbereinigungsvorgänge vorliegt. Allerdings kann in dem zweiten Verwendungsszenario die Blockzuweisung in einer „aggressiveren“ Weise erfolgen, da lediglich wenige Flash-Managementeinheiten (FMU) gültig sind und ein starker Anreiz vorliegt, Blöcke schnell durch Speicherbereinigungsvorgänge wiederzubeleben.
-
Daher können Daten, die in dem ersten Verwendungsszenario (z. B. „Kalt-Speichern“) geschrieben werden, Blöcken zugewiesen werden, die sich nahe an ihrem Speicherbereinigungs-Initiierungsschwellenwert befinden (z. B. Blöcke mit einem hohen Programmier-/Löschzykluszähler (PEC-Zähler)). Obwohl sich die Blöcke nahe an ihrem Speicherbereinigungs-Initiierungsschwellenwert befinden, weil die Daten nicht überschrieben werden (oder eine begrenzte Anzahl von Schreibwiederholungen aufweisen), liegt eine geringe Wahrscheinlichkeit vor, dass die Blöcke in naher Zukunft eine Speicherbereinigung benötigen werden. Zudem wäre dieser Typ von Blöcken nicht ideal für Situationen, in denen mehrere Schreibwiederholungen vorliegen (das zweite Verwendungsszenario), weil häufige Schreibwiederholungen in Blöcken, die sich nahe an ihrem Speicherbereinigungs-Initiierungsschwellenwert befinden, eine Speicherbereinigung auslösen werden, was nicht bevorzugt sein könnte, wie oben diskutiert ist.
-
Im Gegensatz dazu können Daten, die in dem zweiten Verwendungsszenario geschrieben werden (z. B. „viele Schreibwiederholungen“), Blöcken zugewiesen werden, die sich weiter entfernt von ihrem Speicherbereinigungs-Initiierungsschwellenwert befinden (z. B. Blöcke mit einem niedrigen Programmier-/Löschzykluszähler (PEC-Zähler) oder ein Block, der frisch einer Speicherbereinigung unterzogen wurde oder dessen Speicher vor dem geplanten Zeitpunkt bereinigt wurde). Derartige Blöcke sind besser für Daten geeignet, die überschrieben werden, als Blöcke, die sich näher an ihrem Speicherbereinigungs-Initiierungsschwellenwert befinden (z. B. Blöcke mit einem hohen Programm-/Löschzykluszähler (PEC-Zähler)), da derartige Blöcke mehreren Schreibwiederholungen standhalten, bevor sie den Speicherbereinigungs-Initiierungsschwellenwert erreichen.
-
Wie aus diesen Beispielen ersichtlich ist, verändert das Wählen eines Blockzuweisungsverfahrens auf der Grundlage eines vorhergesagten Nutzungsverhaltens wirksam, wann die Speicherbereinigung erfolgt, da die Frage, ob ein zugewiesener Block sich relativ näher daran oder weiter entfernt davon befindet, eine Speicherbereinigung zu benötigen, beeinflusst, wann die Speicherbereinigung dieses Blocks erfolgt. Wie oben erwähnt kann die Speicherbereinigung die Host-Leistungsfähigkeit beeinträchtigen, da sie die Schnittstelle von dem Controller 102 des Speichersystems zu dem Datenspeicher 104 verwendet und außerdem Raum sowohl in dem Controller 102 des Speichersystems als auch in seinem Datenspeicher 104 und/oder im RAM 116 verwendet. Das Verwenden einer Blockzuweisung auf der Grundlage eines Nutzungsverhaltens kann eine effiziente Speicherbereinigung sowohl hinsichtlich des Datenspeichers als auch der Leistungsfähigkeit bereitstellen. Diese Ausführungsformen können außerdem die für effiziente Speicherbereinigungsvorgänge erforderliche, überhöhte Datenspeicherbereitstellung verringern, da die Gesamtzahl der im Verlauf der Lebensdauer des Speichersystems zugewiesenen Blöcke für denselben Dateneingang niedriger sein kann. Diese Ausführungsformen können außerdem die Haltbarkeit und die Leistungsfähigkeit erhöhen, wenn der Datenspeicher 104 voll ist.
-
Während in dem obigen Beispiel lediglich zwei Verwendungsszenarios diskutiert wurden, sei erwähnt, dass zwischen diesen viele Verwendungsszenarien möglich sind. In einer Ausführungsform ist das Speichersystem 100 konfiguriert, das Blockzuweisungsschema auf der Grundlage des Verhaltens des Anwenders oder des Verwendungsszenarios dynamisch zwischen „konservativ“ und „aggressiv“ festzulegen.
-
Es sind viele Alternativen vorhanden, die mit diesen Ausführungsformen verwendet werden können. Zum Beispiel kann die Bestimmung, ob der Datenspeicher 104 in einem ersten Verwendungsszenario oder einem zweiten Verwendungsszenario (oder einer beliebigen Anzahl von Verwendungsszenarien) verwendet wird, auf einem beliebigen geeigneten Weg erfolgen. Zum Beispiel wird das Bestimmen in einer Ausführungsform durch Empfangen einer Angabe von einem Host, ob der Datenspeicher 104 in dem ersten Verwendungsszenario oder in dem zweiten Verwendungsszenario verwendet wird, durchgeführt. In einer weiteren Ausführungsform wird das Bestimmen durch das Speichersystem 100 durchgeführt, wobei der Controller 102 z. B. mit einem Algorithmus programmiert ist, der entscheidet, ob das Speichersystem 100/der Datenspeicher 104 in einem ersten Verwendungsszenario, einem zweiten Verwendungsszenario, usw. oder weder noch/in keinem davon verwendet wird. Zum Beispiel vergleicht der Controller 102 in einer Ausführungsform mehrere Schreibanweisungen mit Mustern, die in dem Speichersystem 100 gespeichert sind. Dieses Beispiel wird in Verbindung mit 4 und 5 ausführlicher diskutiert.
-
Wie in 4 gezeigt ist, können die Schreibmuster, die verschiedenen Schreibszenarien entsprechen, in dem Datenspeicher 104 (oder an einem anderen Speicherort (z. B. im ROM 118) in dem Speichersystem 100) gespeichert werden, wenn das Speichersystem 100 offline ist (z. B. während der Produktion, jedoch kann in einer Ausführungsform das gespeicherte Muster während des Betriebs des Speichermoduls 100 aktualisiert werden) (Vorgang 410). Zum Beispiel kann eine Anzahl (N) von Mustern gespeichert werden, die die Muster verkörpern, mit denen eine optimierte Blockzuweisung verbunden sein kann (z. B. kann ein erstes Blockzuweisungsverfahren einem der Muster zugeordnet sein und kann ein zweites Blockzuweisungsverfahren einem weiteren der Muster zugeordnet sein). Eine erfolgreiche Klassifizierung als ein Muster kann zu einer Blockzuweisungsoptimierung für das Muster führen. Diese Muster können z. B. logische Blockadressen (LBA) oder LBA-Bereiche enthalten, für die für ein gegebenes Verwendungsszenario erwartet wird, dass ein Anwender sie beschreibt. Der LBA-Schreibverlauf des Anwenders/Hosts kann aufgenommen werden und kann mit jedem der gespeicherten Muster abgeglichen werden.
-
5 ist ein Ablaufplan 500 eines Verfahrens einer Ausführungsform, die Schreibadressen von Schreibanweisungen, die durch das Speichersystem 100 empfangen werden, mit Schreibadressmustern, die in dem Speichersystem 100 gespeichert sind, abgleicht. In dieser Ausführungsform werden die Vorgänge in diesem Ablaufplan 500 durchgeführt, wenn das Speichersystem 100 online ist. Wie in 5 gezeigt ist, prüft das Speichersystem 100 (z. B. der Controller 102 oder das Blockzuweisungsmodul 111) in dieser Ausführungsform kontinuierlich Schreibadressmuster aus mehreren Schreibanweisungen, die von dem Speichersystem 100 empfangen werden, gegen Muster, die in dem Speichersystem 100 gespeichert sind (Vorgang 510). Das Speichersystem 100 erzeugt daraufhin für jedes gespeicherte Muster eine Punktzahl, die ein Übereinstimmungsniveau des aktuellen Schreibmusters mit dem gespeicherten Muster repräsentiert (Vorgang 520). Daher wird für jedes der gespeicherten Muster eine Punktzahl erzeugt, die den Abgleich des Musters mit dem Schreibverlauf des Anwenders repräsentiert. Das Speichersystem 100 prüft anschließend die Übereinstimmungspunktzahl gegen einen Schwellenwert (Vorgang 530). Wenn eine geringe Übereinstimmung vorliegt, beginnt der Prozess erneut bei Vorgang 510. Wenn allerdings eine hohe Übereinstimmung vorliegt, ändert das Speichersystem 100 das Blockzuweisungsschema gemäß dem detektierten Schreibmuster (Vorgang 540). Dementsprechend wird ein erfolgreicher Abgleich erklärt, wenn eine der Punktzahlen einen bestimmten Schwellenwert durchläuft. Daher kann z. B. dann, wenn eines der Muster andauernd das Beschreiben desselben kleinen Bereichs von LBA darstellt und ein Anwender andauernd 1 LBA (oder einen Bereich von <100 LBA) beschreibt, dieses Muster identifiziert werden, und die Angabe kann an die Blockzuweisungseinheit weitergegeben werden, die daraufhin gemäß dem oben diskutierten Verwendungsszenario „erneutes Schreiben von Einzeladressen“ wirkt.
-
Es sei erwähnt, dass der oben beschriebene Algorithmus lediglich ein Beispiel war und dass andere Algorithmen und Verfahren verwendet werden können. Ferner können mit diesen Ausführungsformen viele weitere Alternativen verwendet werden. Zum Beispiel kann in dem Blockzuweisungsprozess zusätzlich zu oder als eine Alternative zu dem oben diskutierten Abgleichprozess ein „weiches“ Maß erzeugt und verwendet werden, das die Übereinstimmung des Musters mit dem Verlauf des Anwenders repräsentieren kann, z. B. durch Vorhersagen des Nutzungsverhaltens unter Verwendung von maschinellem Lernen. In dieser Alternative kann ein Algorithmus für maschinelles Lernen zum Lernen der Zugriffsmuster des Anwenders verwendet werden und dementsprechend die Entscheidung über die Speicherbereinigungsstrategie (z. B. zwischen dem aggressiven und dem konservativen Schema) treffen. Die Mustererkennung kann unter Verwendung einer Klassifikation mit einer Support-Vektor-Maschine (SVM), eines neuronalen Netzes oder anderer Gruppierungsverfahren wie z. B. des K-Mittelwerteverfahrens und/oder des Hauptkomponentenanalyseverfahrens (PCA-Verfahren) durchgeführt werden. Es können überwachte (vorkalibrierte) oder nichtüberwachte Lernalgorithmen verwendet werden (d. h. das Training/die Kalibrierung des Algorithmus kann mit einem oder ohne einen gekennzeichneten Datensatz erfolgen, der Ground-Truth-Bezeichnungen relevanter Trainingsbeispiele enthält, oder selbst ohne Vortraining/Kalibrierung des Modells, wobei das Klassifizieren direkt während der Lebensdauer der Einrichtung erfolgt (adaptives Lernen)). Als ein nochmals weiteres Beispiel kann das Speichersystem 100 das Nutzungsverhalten durch Berechnen eines Verhältnisses der Einzeladressaktualisierungen zu den Laufwerksüberschreibvorgängen vorhersagen und dementsprechend das Verhältnis des Auslösens von Speicherbereinigungsvorgängen zu Host-Schreibvorgängen und/oder das Verhältnis von dynamischen zu statischen Speicherbereinigungsvorgängen anpassen. Ferner kann anstelle dessen, dass das Speichersystem 100 das Vorhersagen durchführt, der Host das Vorhersagen durchführen und eine Angabe der Ergebnisse an das Speichersystem 100 senden.
-
Ferner kann das Speichersystem 100 zusätzlich zum oder anstelle des Zuweisens von Blöcken auf der Grundlage des Nutzungsverhaltens die Zeit der Initialisierung der Speicherbereinigung durch Anpassen mindestens eines Schwellenwertparameters zum Initiieren der Speicherbereinigung in einem Datenspeicherblock 104 verändern. Beispiele für Schwellenwertparameter enthalten, sind jedoch nicht darauf eingeschränkt, eine Anzahl gültiger Einheiten in dem Block und eine Anzahl von Programmier-/Löschzyklen, die in dem Block durchgeführt werden. Als ein weiteres Beispiel kann die Zeit der Initialisierung der Speicherbereinigung durch Durchführen eine Speicherbereinigung in einem Block vor dem Zeitplan geändert werden (z. B. als Antwort auf das Vorhersagen, dass Daten, die in dem Block gespeichert werden sollen, häufige Aktualisierungen aufweisen werden).
-
Schließlich kann, wie oben erwähnt, jeder geeignete Datenspeichertyp verwendet werden. Halbleiter-Datenspeichereinrichtungen enthalten flüchtige Datenspeichereinrichtungen wie z. B. Einrichtungen mit dynamischem Schreib/Lese-Speicher („DRAM“) oder statischem Schreib/Lese-Speicher („SRAM“), nichtflüchtige Datenspeichereinrichtungen wie z. B. resistive Schreib/Lese-Speicher („ReRAM“), elektrisch löschbare, programmierbare Festwertspeicher(„EEPROM“), Flash-Datenspeicher (die auch als eine Untergruppe der EEPROM betrachtet werden können), ferroelektrische Schreib/Lese-Speicher („FRAM“) und magnetoresistive Schreib/Lese-Speicher („MRAM“) und weitere Halbleiterelemente, die in der Lage sind, Informationen zu speichern. Jeder Typ einer Datenspeichereinrichtung kann verschiedene Konfigurationen aufweisen. Zum Beispiel können Flash-Datenspeichereinrichtungen in einer NAND- oder einer NOR-Konfiguration konfiguriert sein.
-
Die Datenspeichereinrichtungen können aus passiven und/oder aktiven Elementen in beliebigen Kombinationen gebildet sein. In Form eines nicht einschränkenden Beispiels enthalten passive Halbleiterdatenspeicherelemente ReRAM-Einrichtungselemente, die in einigen Ausführungsformen ein resistives Umschaltspeicherelement wie z. B. eine Gegensicherung, ein Phasenänderungsmaterial usw. und wahlweise ein Lenkelement wie z. B. eine Diode usw. enthalten. Ferner in Form eines nicht einschränkenden Beispiels enthalten aktive Halbleiterdatenspeicherelemente EEPROM- und Flash-Datenspeichereinrichtungselemente, die in einigen Ausführungsformen Elemente enthalten, die einen Ladungsspeicherbereich wie z. B. ein schwebendes Gate, leitende Nanopartikel oder ein dielektrisches Ladungsspeichermaterial enthalten.
-
Mehrere Datenspeicherelemente können derart konfiguriert sein, dass sie in Reihe geschaltet sind oder derart, dass auf jedes Element individuell zugegriffen werden kann. In Form eines nicht einschränkenden Beispiels enthalten Flash-Datenspeichereinrichtungen in einer NAND-Konfiguration (NAND-Datenspeicher) typischerweise in Reihe geschaltete Datenspeicherelemente. Eine NAND-Datenspeicheranordnung kann derart konfiguriert sein, dass die Anordnung aus mehreren Datenspeichersträngen besteht, in denen ein Strang aus mehreren Datenspeicherelementen besteht, die eine einzelne Bitleitung gemeinsam verwenden und auf die als eine Gruppe zugegriffen wird. Alternativ können Datenspeicherelemente derart konfiguriert sein, dass auf jedes Element individuell zugegriffen werden kann, z. B. als eine NOR-Datenspeicheranordnung. NAND- und NOR-Datenspeicherkonfigurationen sind Beispiele, und Datenspeicherelemente können anders konfiguriert sein.
-
Die Halbleiter-Datenspeicherelemente, die in und/oder über einem Substrat angeordnet sind, können in zwei oder drei Dimensionen wie z. B. als eine zweidimensionale Datenspeicherstruktur oder eine dreidimensionale Datenspeicherstruktur angeordnet sein.
-
In einer zweidimensionalen Datenspeicherstruktur sind die Halbleiter-Datenspeicherelemente in einer einzelnen Ebene oder einer einzelnen Datenspeichereinrichtungsebene angeordnet. Typischerweise sind die Datenspeicherelemente in einer zweidimensionalen Datenspeicherstruktur in einer Ebene (z. B. in einer Ebene in x-z-Richtung) angeordnet, die sich im Wesentlichen parallel zu einer Hauptoberfläche eines Substrats, das die Datenspeicherelemente trägt, erstreckt. Das Substrat kann ein Wafer sein, über oder in dem die Schichten der Datenspeicherelemente gebildet sind, oder es kann ein Trägersubstrat sein, das an den Datenspeicherelementen befestigt wird, nachdem sie gebildet wurden. Als ein nicht einschränkendes Beispiel kann das Substrat einen Halbleiter wie z. B. Silizium enthalten.
-
Die Datenspeicherelemente können auf der einzelnen Datenspeichereinrichtungsebene in einer geordneten Anordnung wie z. B. in mehreren Reihen und/oder Spalten angeordnet sein. Allerdings können die Datenspeicherelemente in unregelmäßigen oder nicht rechtwinkligen Konfigurationen angeordnet sein. Die Datenspeicherelemente können jeweils zwei oder mehr Elektroden oder Kontaktleitungen wie z. B. Bitleitungen oder Wortleitungen aufweisen.
-
Eine dreidimensionale Datenspeicheranordnung ist derart ausgelegt, dass die Datenspeicherelemente mehrere Ebenen oder mehrere Datenspeichereinrichtungsebenen belegen, wodurch sie eine Struktur in drei Dimensionen (d. h. in den x-, y- und z-Richtungen, wobei die y-Richtung im Wesentlichen senkrecht und die x- und die z-Richtung im Wesentlichen parallel zu der Hauptoberfläche des Substrats sind) bilden.
-
Als ein nicht einschränkendes Beispiel kann eine dreidimensionale Datenspeicherstruktur vertikal als ein Stapel von mehreren zweidimensionalen Datenspeichereinrichtungsebenen angeordnet sein. Als ein weiteres nicht einschränkendes Beispiel kann eine dreidimensionale Datenspeicheranordnung als mehrere vertikale Spalten angeordnet sein (z. B. Spalten, die im Wesentlichen senkrecht zu der Hauptoberfläche des Substrats, d. h. in der y-Richtung, verlaufen), wobei jede Spalte mehrere Datenspeicherelemente in jeder Spalte besitzt. Die Spalten können in einer zweidimensionalen Konfiguration angeordnet sein, z. B. in einer x-z-Ebene, was zu einer dreidimensionalen Anordnung von Datenspeicherelementen mit Elementen auf mehreren vertikal gestapelten Datenspeicherebenen führt. Weitere Konfigurationen von Datenspeicherelementen in drei Dimensionen können ebenfalls eine dreidimensionale Datenspeicheranordnung bilden.
-
In Form eines nicht einschränkenden Beispiels können die Datenspeicherelemente in einer dreidimensionalen NAND-Datenspeicheranordnung derart zusammengekoppelt sein, dass sie einen NAND-Strang in einer einzelnen horizontalen (z. B. x-z) Datenspeichereinrichtungsebene bilden. Alternativ können die Datenspeicherelemente derart zusammengekoppelt sein, dass sie einen vertikalen NAND-Strang bilden, der über mehrere horizontale Datenspeichereinrichtungsebenen verläuft. Weitere dreidimensionale Konfigurationen sind vorstellbar, wobei einige NAND-Stränge Datenspeicherelemente in einer einzelnen Datenspeicherebene enthalten, während andere Stränge Datenspeicherelemente enthalten, die sich durch mehrere Datenspeicherebenen erstrecken. Dreidimensionale Datenspeicheranordnungen können außerdem in einer NOR-Konfiguration und in einer ReRAM-Konfiguration entworfen sein.
-
Typischerweise werden in einer monolithischen, dreidimensionalen Datenspeicheranordnung eine oder mehrere Datenspeichereinrichtungsebenen über einem einzelnen Substrat gebildet. Wahlweise kann die monolithische, dreidimensionale Datenspeicheranordnung ebenso eine oder mehrere Datenspeicherschichten zumindest teilweise in dem einzelnen Substrat aufweisen. Als ein nicht einschränkendes Beispiel kann das Substrat einen Halbleiter wie z. B. Silizium enthalten. In einer monolithischen, dreidimensionalen Anordnung sind die Schichten, die jede Datenspeichereinrichtungsebene der Anordnung bilden, typischerweise auf den Schichten der darunterliegenden Datenspeichereinrichtungsebenen der Anordnung gebildet. Allerdings können Schichten von benachbarten Datenspeichereinrichtungsebenen einer monolithischen, dreidimensionalen Datenspeicheranordnung gemeinsam verwendet werden oder eingreifende Schichten zwischen Datenspeichereinrichtungsebenen aufweisen.
-
Andererseits können zweidimensionale Anordnungen getrennt gebildet und anschließend zusammengepackt werden, um eine nicht monolithische Datenspeichereinrichtung zu bilden, die mehrere Datenspeicherschichten besitzt. Zum Beispiel können nicht monolithische, gestapelte Datenspeicher durch Bilden von Datenspeicherebenen auf getrennten Substraten und anschließendes Stapeln der Datenspeicherebenen aufeinander hergestellt werden. Die Substrate können vor dem Stapeln dünner gemacht oder von den Datenspeichereinrichtungsebenen entfernt werden; da die Datenspeichereinrichtungsebenen jedoch zunächst über getrennten Substraten gebildet werden, sind die resultierenden Datenspeicheranordnungen keine monolithischen, dreidimensionalen Datenspeicheranordnungen. Ferner können mehrere zweidimensionale Datenspeicheranordnungen oder dreidimensionale Datenspeicheranordnungen (monolithisch oder nicht monolithisch) auf getrennten Chips gebildet und anschließend zusammengepackt werden, um eine Datenspeichereinrichtung aus gestapelten Chips zu bilden.
-
Eine zugeordnete Schaltungsanordnung ist typischerweise für den Betrieb der Datenspeicherelemente und zur Kommunikation mit den Datenspeicherelementen erforderlich. Als nicht einschränkende Beispiele können Datenspeichereinrichtungen eine Schaltungsanordnung besitzen, die zum Steuern und Ansteuern von Datenspeicherelementen derart, dass sie Funktionen wie z. B. Programmieren und Lesen durchführen, verwendet wird. Diese zugeordnete Schaltungsanordnung kann sich auf demselben Substrat wie die Datenspeicherelemente und/oder auf einem getrennten Substrat befinden. Zum Beispiel kann ein Controller für Lese-/Schreibvorgänge auf dem Datenspeicher auf einem getrennten Controller-Chip und/oder auf demselben Substrat wie die Datenspeicherelemente angeordnet sein.
-
Ein Fachmann auf dem Gebiet wird erkennen, dass diese Erfindung nicht auf die beschriebenen, zweidimensionalen oder dreidimensionalen Strukturen eingeschränkt ist, sondern alle relevanten Datenspeicherstrukturen innerhalb des Erfindungsgedankens und des Umfangs der Erfindung, wie hierin beschrieben und wie von einem Fachmann verstanden, abdeckt.
-
Es ist beabsichtigt, dass die vorhergehende, ausführliche Beschreibung als eine Veranschaulichung ausgewählter Formen, die die Erfindung annehmen kann, und nicht als eine Definition der Erfindung verstanden wird. Lediglich die folgenden Patentansprüche einschließlich aller Entsprechungen sind bestimmt, den Umfang der beanspruchten Erfindung zu definieren. Schließlich sei erwähnt, dass jeder Aspekt jeder der hierin beschriebenen Ausführungsformen alleine oder in Kombination mit weiteren verwendet werden kann.