DE112019000161T5 - Speicher-cache-verwaltung - Google Patents

Speicher-cache-verwaltung Download PDF

Info

Publication number
DE112019000161T5
DE112019000161T5 DE112019000161.2T DE112019000161T DE112019000161T5 DE 112019000161 T5 DE112019000161 T5 DE 112019000161T5 DE 112019000161 T DE112019000161 T DE 112019000161T DE 112019000161 T5 DE112019000161 T5 DE 112019000161T5
Authority
DE
Germany
Prior art keywords
priority
memory
host data
host
addresses
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE112019000161.2T
Other languages
English (en)
Inventor
In-Soo Yoon
Chandrasekar Sundaresan
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Western Digital Technologies Inc
Original Assignee
Western Digital Technologies Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Western Digital Technologies Inc filed Critical Western Digital Technologies Inc
Publication of DE112019000161T5 publication Critical patent/DE112019000161T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/608Details relating to cache mapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7207Details relating to flash memory management management of metadata or control data

Landscapes

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

Abstract

Techniken zur Verwaltung von IS-Speicher in einer nichtflüchtigen Speichervorrichtung und Verfahren zur Verwendung damit sind hierin beschrieben. Die nichtflüchtige Speichervorrichtung kann einen nichtflüchtigen Speicher einschließen, wobei ein Teil des nichtflüchtigen Speichers als Speicher zur Zwischenspeicherung (IS-Speicher) und ein anderer Teil des nichtflüchtigen Speichers als Speicher zur Hauptspeicherung (MS-Speicher) bezeichnet wird. Der IS-Speicher kann niedrigere Lese- und Schreiblatenzen als der MS-Speicher haben. Eine Hostvorrichtung kann einer Speichersteuerung Prioritätsadressen mit einer Angabe bereitstellen, dass Hostdaten mit einer der Prioritätsadressen bevorzugt im IS-Speicher vor anderen Hostdaten verbleiben sollen.

Description

  • HINTERGRUND
  • Eine Speichervorrichtung, die einen nichtflüchtigen Speicher einschließt, kann einen Teil des nichtflüchtigen Speichers, der als Speicher der Zwischenspeicherung (IS) bezeichnet wird, und einen anderen Teil des nichtflüchtigen Speichers, der als Speicher der Hauptspeicherung (MS) bezeichnet wird, einschließen. Der IS-Speicher kann in Speichervorrichtungen verwendet werden, um einen schnelleren Schreibdurchsatz bereitzustellen, und kann auch als eine sichere Zone zu dem schnellen Speichern von Hostdaten vor dem Speichern der Hostdaten im MS verwendet werden. Der IS-Speicher kann auch als ein nichtflüchtiger Speicher-Cache fungieren, der einen sehr schnellen Zugriff auf die im IS-Speicher gespeicherten aktiven Daten ermöglicht. Der IS-Speicher könnte auch als Cache bezeichnet werden.
  • Der IS-Speicher kann eine geringere Speicherdichte als der MS-Speicher haben. Der IS-Speicher kann pro Bit teurer als der MS-Speicher sein. Der IS-Speicher kann eine größere Ausdauer als der MS-Speicher haben. In einigen Architekturen kann die Gesamtspeicherkapazität des IS-Speichers deutlich geringer als die des MS-Speichers sein. Zum Beispiel könnte der teurere IS-Speicher weniger als zehn Prozent eines gesamten Speicherbudgets einer Speichervorrichtung einnehmen.
  • Als ein Beispiel kann der IS-Speicher einen Single-Level-Cell-Speicher (SLC-Speicher) einschließen, wobei ein einzelnes Datenbit pro Speicherzelle gespeichert wird. Der SLC-Speicher kann aus Flash-Speicherzellen bestehen. Der IS-Speicher kann alternativ oder zusätzlich Storage Class Memory (SCM) einschließen. Beispiele für SCM in diesem Kontext sind ReRAM, Phase-Change Memory (PCM) oder magnetisches RAM. Im Gegensatz dazu kann der preiswertere MS-Speicher, der wahrscheinlich mehr als neunzig Prozent des gesamten Speicherbudgets in Anspruch nehmen wird, Multi-Level-Cell-Speicher (MLC-Speicher) einschließen, wobei zwei oder mehr Bits pro Speicherzelle gespeichert werden. Der MLC-Speicher kann aus Flash-Speicherzellen bestehen. Der MLC-Speicher, wie der Begriff hierin verwendet wird, kann Speicherzellen einschließen, wobei zwei, drei oder vier Datenbits oder potenziell sogar mehr als vier Datenbits pro Speicherzelle gespeichert werden. Dementsprechend umfasst der Begriff MLC-Speicher, wie der Begriff hierin verwendet wird, auch Triple-Level-Cell-Speicher (TLC-Speicher) und Quad-Level-Cell-Speicher (QLC-Speicher).
  • Es ist zu beachten, dass der IS-Speicher möglicherweise geringere Schreiblatenzen als der MS-Speicher hat, sodass Hostdaten zunächst in den IS-Speicher geschrieben werden können. Aufgrund der begrenzten Speicherkapazität des IS-Speichers werden Hostdaten jedoch in der Regel von dem IS-Speicher in den MS-Speicher ausgelagert, um Platz im IS-Speicher freizugeben. Der Prozess der Datenübertragung aus dem IS-Speicher in den MS-Speicher wird als „Verlagerung“ bezeichnet. Herkömmliche Techniken zum Durchführen einer Verlagerung basieren üblicherweise auf einfachen Heuristiken, wie First-in-First-out (FIFO), oder auf einem Alterungsalgorithmus.
  • Figurenliste
    • 1A ist eine perspektivische Ansicht eines Satzes von Blöcken in einer gestapelten nichtflüchtigen 3D Speichervorrichtung.
    • 1B ist ein Blockdiagramm einer nichtflüchtigen Speichervorrichtung, wie die gestapelte nichtflüchtige 3D Speichervorrichtung von 1A.
    • 2 ist ein Blockdiagramm, das eine Ausführungsform einer nichtflüchtigen Speichervorrichtung darstellt, die mit einer Hostvorrichtung verbunden ist.
    • 3 ist ein Blockdiagramm einer Ausführungsform einer Speichervorrichtung, wie etwa der Speichervorrichtung von 1A, 1B oder 2.
    • 4 ist ein Flussdiagramm einer Ausführungsform eines Prozesses zum Betreiben eines nichtflüchtigen Speichers.
    • 5A veranschaulicht eine Ausführungsform einer Prioritätsadresstabelle.
    • 5B ist ein Flussdiagramm einer Ausführungsform eines Prozesses zum Betreiben eines nichtflüchtigen Speichers.
    • 6A ist ein Flussdiagramm einer Ausführungsform eines Prozesses einer Prioritätshostdaten-Anwendung, die einen Satz von Prioritätsadressen für eine Speichersteuerung bereitstellt.
    • 6B ist ein Flussdiagramm einer Ausführungsform eines Prozesses einer Speichersteuerung, die eine Prioritätsadresstabelle aktualisiert.
    • 7 ist ein Flussdiagramm eines Prozesses einer Prioritätshostdaten-Anwendung zum Lernen, welche Hostdaten aufgrund einer Benutzerauswahl Priorität erhalten sollen, um im IS-Speicher zu verbleiben.
    • 8A stellt eine Ausführungsform einer Benutzerschnittstelle (UI) dar, die es einem Benutzer ermöglicht, Prioritätshostdaten zu spezifizieren.
    • 8B stellt eine Ausführungsform einer UI dar, die es einem Benutzer ermöglicht, Prioritätshostdaten zusammen mit einem Prioritätsgewicht zu spezifizieren.
    • 9 ist ein Flussdiagramm eines Prozesses einer Prioritätshostdaten-Anwendung zum Bestimmen, welche Hostdaten Priorität erhalten sollen, um im IS-Speicher zu verbleiben.
    • 10A ist ein Flussdiagramm einer Ausführungsform eines Prozesses einer Speichersteuerung, die IS-Speicher auf der Grundlage einer Prioritätsadresstabelle verwaltet.
    • 10B ist ein Flussdiagramm einer Ausführungsform eines Prozesses einer Speichersteuerung, die IS-Speicher auf der Grundlage einer Prioritätsadresstabelle verwaltet, in der Nicht-Prioritätshostdaten direkt in den MS-Speicher geschrieben werden können (unter Umgehung des IS-Speichers).
    • 11 ist ein Flussdiagramm einer Ausführungsform eines Prozesses einer Verlagerung (oder eines Flushens) basierend auf Prioritätsadressen.
    • 12 ist ein Flussdiagramm einer Ausführungsform eines Prozesses einer Speichersteuerung, die eine Speicherbereinigung auf der Grundlage einer Prioritätsadresstabelle durchführt.
  • DETAILLIERTE BESCHREIBUNG
  • Techniken zur Verwaltung von IS-Speicher in einer nichtflüchtigen Speichervorrichtung und Verfahren zur Verwendung damit sind hierin beschrieben. Solche Verwaltungstechniken könnten auch als Speicher-Cache-Verwaltung bezeichnet werden, da der IS-Speicher auch als Cache bezeichnet werden kann. Die nichtflüchtige Speichervorrichtung kann nichtflüchtigen Speicher einschließen, wobei ein Teil des nichtflüchtigen Speichers als Speicher zur Zwischenspeicherung (IS-Speicher) und ein anderer Teil des nichtflüchtigen Speichers als Speicher zur Hauptspeicherung (MS-Speicher) bezeichnet wird. Der IS-Speicher hat in einer Ausführungsform eine niedrigere Schreiblatenz als der MS-Speicher. Der IS-Speicher hat in einer Ausführungsform eine niedrigere Leselatenz als der MS-Speicher. Beispielsweise kann der IS-Speicher Flash-Speicher vom Typ Single-Level Cell (SLC) enthalten, wobei ein einzelnes Datenbit pro Speicherzelle gespeichert wird, und der MS-Speicher kann Flash-Speicher vom Typ Multi-Level Cell (MLC) enthalten, wobei zwei oder mehr Datenbits pro Speicherzelle gespeichert werden. Der IS-Speicher ist nicht auf Flash-Speicher beschränkt. Zum Beispiel kann der IS-Speicher ReRAM, Phasenwechselspeicher oder magnetisches RAM einschließen, ist aber nicht darauf beschränkt. ReRAM, Phasenwechselspeicher oder Magnet-RAM können in diesem Zusammenhang als „Speicherklassenspeicher“ bezeichnet werden.
  • In einer Ausführungsform weist eine Vorrichtung eine Hostvorrichtung und eine nichtflüchtige Speichervorrichtung auf. Die nichtflüchtige Speichervorrichtung hat eine Speichersteuerung und nichtflüchtige Speicherzellen. Die Speichersteuerung ist konfiguriert, um in einer Ausführungsform einige der nichtflüchtigen Speicherzellen als IS-Speicher und andere nichtflüchtige Speicherzellen als MS-Speicher zu verwenden. Im Allgemeinen kann die Hostvorrichtung der Speichersteuerung Hostdaten zum Speichern in der nichtflüchtigen Speichervorrichtung bereitstellen.
  • Ausführungsformen einer Hostvorrichtung liefern Adressen (z. B. logische Blockadressen) an eine Speichersteuerung mit einer Angabe, dass Hostdaten mit einer der Adressen bevorzugt im IS-Speicher vor anderen Hostdaten verbleiben sollen. Die Adressen können von einem logischen Adressraum des Hostsystems stammen. In einer Ausführungsform hat das Hostsystem eine Prioritätshostdaten-Anwendung, die erkennt, welche Hostdaten bevorzugt im IS-Speicher einer nichtflüchtigen Speichervorrichtung verbleiben sollen. Die Prioritätshostdaten-Anwendung greift auf Adressen (z. B. logische Adressen) für die Hostdaten zu und liefert die Adressen an eine Speichersteuerung mit einer Angabe, dass die Speichersteuerung den Hostdaten mit diesen Adressen Priorität beim Verbleiben im IS-Speicher geben soll. Die Prioritätshostdaten-Anwendung kann die Adressen unter Verwendung einer In-Band-Kommunikation bereitstellen, die ein Speicherzugriffsprotokoll verwendet, das für den Zugriff auf den nichtflüchtigen Speicher des Speichersystems verwendet wird. Die Speichersteuerung kann die Adressen in einer Prioritätsadresstabelle speichern. Die Speichersteuerung kann IS-Speicher basierend auf der Prioritätsadresstabelle verwalten.
  • Hostdaten, die mit Priorität im IS-Speicher verbleiben sollen, werden hierin als „Prioritätshostdaten“ bezeichnet. Andere Hostdaten, bei denen nicht angegeben wurde, dass sie mit Priorität im IS-Speicher verbleiben sollen, werden hierin als „Nicht-Prioritätshostdaten“ bezeichnet. Eine Adresse mit „Prioritätshostdaten“ wird hierin als „Prioritätsadresse“ bezeichnet. Eine Adresse mit „Nicht-Prioritätshostdaten“ wird hierin als „Nicht-Prioritätsadresse“ bezeichnet. Die Hostdatenadresse kann eine logische Adresse sein, wobei in diesem Fall die Begriffe „logische Prioritätsadresse“ und „logische Nicht-Prioritätsadresse“ verwendet werden können. Es ist nicht erforderlich, dass die Adresse der Hostdaten eine logische Adresse ist.
  • Es ist zu beachten, dass die vorrangige Behandlung der Prioritätshostdaten, die verbleiben sollen, nicht bedeutet, dass die Nicht-Prioritätshostdaten nicht in den IS-Speicher geschrieben werden können. Die Speichersteuerung könnte sowohl Prioritäts- als auch Nicht-Prioritätshostdaten in den IS-Speicher schreiben und dann die Nicht-Prioritätshostdaten in den MS-Speicher verlagern. Ausführungsformen einer Speichersteuerung verlagern Nicht-Prioritätshostdaten vom IS-Speicher in den MS-Speicher. Ausführungsformen einer Speichersteuerung halten Prioritätshostdaten im IS-Speicher (sofern im IS-Speicher Platz verfügbar ist), anstatt die Prioritätshostdaten in den MS-Speicher zu verlagern. Es ist zu beachten, dass sogar Hostdaten, die viel länger im IS-Speicher als andere Hostdaten waren, im IS-Speicher verbleiben können, wenn die „älteren“ Hostdaten Prioritätshostdaten und die „neueren“ Hostdaten Nicht-Prioritätshostdaten sind. Dies steht im Gegensatz zu einer herkömmlichen FIFO-Technik, bei der ältere Hostdaten möglicherweise verlagert werden, um Platz für neuere Hostdaten zu schaffen.
  • Gemäß bestimmten Ausführungsformen der vorliegenden Technologie stellt die Prioritätshostdaten-Anwendung zur Erkennung der Prioritätshostdaten eine Benutzerschnittstelle bereit, mit der ein Benutzer festlegen kann, welche Hostdaten vorrangig im IS-Speicher einer nichtflüchtigen Speichervorrichtung verbleiben sollen. Der Benutzer kann eine Datei oder ein Programm für den vorrangigen Verbleib im IS-Speicher auswählen, der wie erwähnt eine schnellere Leseleistung als der MS-Speicher hat. Dadurch kann die Leseleistung bei der Auswahl berücksichtigt werden, welche Hostdaten vorrangig im IS-Speicher verbleiben sollen. Die Benutzerschnittstelle einer Ausführungsform ermöglicht es dem Benutzer, den Prioritätshostdaten ein Prioritätsgewicht zu geben. Somit kann der Benutzer mehrere Software-Anwendungen haben, die vorrangig im IS-Speicher verbleiben sollen, aber mit unterschiedlichen Prioritätsgewichten für den Fall, dass im IS-Speicher nicht ausreichend Platz für alle Anwendungen vorhanden ist. In einer Ausführungsform überwacht die Prioritätshostdaten-Anwendung die Verwendung von Hostdaten, um zu erkennen, welche Hostdaten vorrangig im IS-Speicher verbleiben sollen.
  • In einer Ausführungsform besteht keine Notwendigkeit für Änderungen an einem Host-Gerätetreiber. Die Prioritätshostdaten-Anwendung kann beispielsweise eine Anforderung an eine Anwendungsprogrammierschnittstelle (API) des Betriebssystems (O/S) übergeben, um die Prioritätsadressen an die Speichersteuerung zu senden. Die O/S-API kann mit einem Dateisystem verbunden sein, das einen Gerätetreiber anweisen kann, mit der Speichersteuerung zu kommunizieren. Der Gerätetreiber kann nach einem herkömmlichen Speicherzugriffsprotokoll arbeiten, um mit der Speichersteuerung zu kommunizieren. Es ist zu beachten, dass bei einigen Computersystemen Gerätetreiber nicht modifiziert werden können, oder es ist zumindest sehr schwierig, den Gerätetreiber zu modifizieren. Somit stellt die Prioritätshostdaten-Anwendung eine Möglichkeit bereit, die Speichersteuerung auf Prioritätsadressen aufmerksam zu machen, ohne einen Gerätetreiber ändern zu müssen.
  • Zudem ist die technische Lösung der Ausführungsformen mit bestehenden nichtflüchtigen Speicherzugriffsprotokollen kompatibel. Zum Beispiel wird in einer Ausführungsform das NVMe-Protokoll als Speicherzugriffsprotokoll für das Hostsystem verwendet, um auf den IS-Speicher und den MS-Speicher im nichtflüchtigen Speichersystem zuzugreifen. Somit hat das Hostsystem in einer Ausführungsform einen NVMe-Host-Controller (auch als ein NVMe-Gerätetreiber bezeichnet) und das Speichersystem hat eine NVMe-Speichersteuerung, die jeweils mit dem NVMe-Protokoll kompatibel sind. In diesem NVMe-Beispiel ist eine Ausführungsform der technischen Lösung mit dem NVMe-Protokoll kompatibel. Es ist zu beachten, dass NVMe nur ein Beispiel für ein Speicherzugriffsprotokoll ist.
  • In der folgenden detaillierten Beschreibung wird auf die beigefügten Zeichnungen Bezug genommen, die einen Teil hiervon bilden und in denen zur Veranschaulichung spezifische veranschaulichende Ausführungsformen dargestellt werden. Es versteht sich, dass andere Ausführungsformen verwendet werden können, und dass mechanische und elektrische Änderungen vorgenommen werden können. Die folgende detaillierte Beschreibung ist daher nicht in einem einschränkenden Sinn zu verstehen. In der folgenden Beschreibung werden gleiche Bezugszeichen oder Referenzbezeichner verwendet, um auf durchgehend gleiche Teile oder Elemente Bezug zu nehmen.
  • Die hierin beschriebene Technologie kann mit einer Vielzahl von Arten von nichtflüchtigen Speichern verwendet werden. Ein Beispiel ist eine dreidimensionale (3D) nichtflüchtige Speichervorrichtung. Ausführungsformen können jedoch auch in einer zweidimensionalen (2D) nichtflüchtigen Speichervorrichtung praktiziert werden. 1A ist eine perspektivische Ansicht eines Satzes von Blöcken in einer gestapelten nichtflüchtigen 3D-Speichervorrichtung 100. Die nichtflüchtige Speichervorrichtung 100 kann hierin auch als ein nichtflüchtiges Speichersystem 100 oder prägnanter als Speichersystem 100 bezeichnet werden. Die nichtflüchtige Speichervorrichtung 100 schließt ein Substrat 101 ein. Auf dem Substrat befinden sich Beispielblöcke BLK0, BLK1, BLK2 und BLK3 von Speicherzellen (Speicherelementen) und ein Peripheriebereich 104 mit Schaltungen zur Verwendung durch die Blöcke. Zum Beispiel kann die Schaltung Spannungstreiber 105 aufweisen, die mit Steuergateschichten der Blöcke verbunden werden können. Bei einem Ansatz werden Steuergateschichten auf einer gemeinsamen Höhe in den Blöcken gemeinsam angesteuert. Das Substrat 101 kann auch Schaltlogik unter den Blöcken zusammen mit einer oder mehreren unteren Metallschichten tragen, die in Leiterbahnen strukturiert sind, um Signale der Schaltung zu übertragen. Die Blöcke sind in einer Zwischenregion 102 der Speichervorrichtung ausgebildet. In einem oberen Bereich 103 des Speichersystems sind eine oder mehrere obere Metallschichten als Leiterbahnen für Signale der Schaltung strukturiert. Jeder Block weist einen gestapelten Bereich von Speicherzellen auf, wobei alternierende Ebenen des Stapels Steuergateschichten repräsentieren. In einem möglichen Ansatz sind die Steuergateschichten jedes Blocks in einer gemeinsamen Höhe miteinander und mit einem Spannungstreiber verbunden. Während vier Blöcke beispielhaft dargestellt sind, können zwei oder mehr Blöcke verwendet werden, die sich in x - und/oder y-Richtung erstrecken.
  • Die Länge der Ebene in x-Richtung kann eine Richtung darstellen, in der sich Signalpfade zu Wortleitungen in der einen oder den mehreren oberen Metallschichten erstrecken (z. B. eine Leitungsrichtung der Wortleitung oder des drainseitigen Auswahlgates (SGD)), und die Breite der Ebene in der y-Richtung repräsentiert eine Richtung, in der sich Signalpfade zu Bitleitungen in der einen oder den mehreren oberen Metallschichten (z. B. einer Bitleitungsrichtung) erstrecken. Die z-Richtung stellt eine Höhe der Speichervorrichtung dar.
  • 1B ist ein Blockdiagramm einer nichtflüchtigen Speichervorrichtung, wie die gestapelte nichtflüchtige 3D-Speichervorrichtung 100 von 1A. Das Blockdiagramm kann auch für eine nichtflüchtige 2D-Speichervorrichtung verwendet werden. Das Hostsystem 140 hat einen oder mehrere Prozessoren 150 und den Hostspeicher 160. Der Hostspeicher 160 kann statischen Speicher mit wahlfreiem Zugriff (Static Random Access Memory, SRAM) und dynamischen Speicher mit wahlfreiem Zugriff (Dynamic Random Access Memory, DRAM) umfassen, ist aber nicht darauf beschränkt. Befehle und Daten werden zwischen dem Hostsystem 140 und der nichtflüchtigen Speichersteuerung 122 über eine Schnittstelle (z. B. Datenbus) 106 und zwischen der Speichersteuerung und 122 dem einen oder den mehreren Speicherchips 108 über Leitungen 118 übertragen. Die Schnittstelle 106 kann auch als Kommunikationsschnittstelle bezeichnet werden. Es ist zu beachten, dass „nichtflüchtige Speichersteuerung“ 122 hierin prägnanter als „Speichersteuerung“ oder „Steuerung“ bezeichnet werden kann.
  • Die Schnittstelle 106 zwischen dem Hostsystem 140 und der Speichersteuerung 122 kann jede geeignete Schnittstelle sein. Die Schnittstelle 106 kann eine mechanische und/oder elektrische Verbindung zwischen dem Hostsystem 140 und dem Speichersystem 100 einschließen. Beispiele für die Schnittstelle 106 schließen Secure Digital (SD), MultiMediaCard (MMC), eingebettete MultiMediaCard (eMMC), Universal Serial Bus (USB), Serial Advanced Technology Attachment (SATA), Fibre Channel, Small Computer Systems Interface (SCSI), Peripheral Component Interface (PCI) und PCI Express (PCle) ein, sind aber nicht darauf beschränkt. In einer Ausführungsform schließt die Schnittstelle 106 einen Peripheral Component Interconnect Express-Bus (PCIe-Bus) ein. In einer Ausführungsform kommunizieren das Speichersystem 100 und das Hostsystem 140 über den PCIe-Bus unter Verwendung eines nichtflüchtiges Speicher-Express-Protokolls (NVMe-Protokoll). NVMe ist eine logische Geräteschnittstelle, die verwendet werden kann, um auf einen nichtflüchtigen Speicher zuzugreifen, der unter Verwendung von einem PCIe-Bus zwischen dem Hostsystem 140 und der Speichervorrichtung 100 angeschlossen ist. Es ist jedoch zu beachten, dass die logische Geräteschnittstelle nicht auf NVMe beschränkt ist. Andere mögliche logische Geräteschnittstellen schließen Advanced Host Controller Interface (AHCI), SATA, SATA Express, MMC, eMMC, USB, Serial Attached SCSI (SAS), Fibre Channel Protocol (FCP) und Universal Flash Storage (UFS) ein, sind aber nicht darauf beschränkt.
  • In einer Ausführungsform kann das nichtflüchtige Speichersystem 100 ein kartenbasiertes System sein, wie z. B. eine sichere digitale Karte (SD-Karte) oder eine sichere digitale Mikro-Karte (Mikro-SD-Karte). In einer alternativen Ausführungsform kann das nichtflüchtige Speichersystem 100 Teil einer eingebetteten nichtflüchtigen Speichervorrichtung sein. Zum Beispiel kann das nichtflüchtige Speichersystem 100 im Hostsystem 140 eingebettet sein, wie etwa in Form eines Solid-State-Laufwerks (SSD), das in einem Personalcomputer installiert ist.
  • Die nichtflüchtige Speichervorrichtung 100 kann einen oder mehrere Speicherchips 108 einschließen. Der Satz von Blöcken von 1A kann sich auf einem Speicherchip 108 befinden. Der Speicherchip 108 schließt eine Speicherstruktur 126 aus Speicherzellen, wie ein Array aus Speicherzellen, eine Steuerschaltung 110 und Lese-/Schreibschaltungen 128 ein. In einer 3D-Konfiguration kann die Speicherstruktur die Blöcke aus 1A einschließen. Die Speicherstruktur 126 ist durch Wortleitungen über einen Zeilendecoder 124 und durch Bitleitungen über einen Spaltendecoder 138 adressierbar. Die Lese-/Schreibschaltungen 128 enthalten mehrere Abtastblöcke SB1, SB2, ..., SBp (Abtastschaltkreise) und ermöglichen, dass eine Seite von Speicherzellen parallel gelesen oder programmiert wird. Üblicherweise ist eine Speichersteuerung 122 in der gleichen nichtflüchtigen Speichervorrichtung 100 (z. B. einer entfernbaren Speicherkarte) wie der eine oder die mehreren Speicherchips 108 eingeschlossen.
  • Mehrere Speicherzellen in der Speicherstruktur 126 können so eingerichtet sein, dass sie in Reihe geschaltet sind, oder so, dass jedes Element einzeln zugänglich ist. Als nicht einschränkendes Beispiel enthalten Flash-Speichersysteme in einer NAND-Konfiguration (NAND-Speicher) üblicherweise Speicherelemente, die in Reihe geschaltet sind. Eine NAND-Kette ist ein Beispiel eines Satzes von in Reihe geschalteten Transistoren, die Speicherzellen und Auswahlgate-Transistoren aufweisen.
  • Ein NAND-Speicherarray kann derart eingerichtet sein, dass das Array aus mehreren Speicherketten zusammengesetzt ist, in denen eine Kette aus mehreren Speicherelementen zusammengesetzt ist, die sich eine einzelne Bitleitung teilen und auf die als eine Gruppe zugegriffen wird. Alternativ können Speicherelemente derart eingerichtet sein, dass jedes Element einzeln zugänglich ist, z. B. ein NOR-Speicherarray. NAND- und NOR-Speicherkonfigurationen sind beispielhaft, und Speicherelemente können anderweitig eingerichtet sein.
  • Andere Arten von nichtflüchtigen Speichern zusätzlich zu NAND-Flash-Speichern können ebenfalls verwendet werden. Halbleiterspeichervorrichtungen schließen flüchtige Speichervorrichtungen ein, wie Dynamic Random Access Memory-Vorrichtungen („DRAM-Vorrichtungen“) oder Static Random Access Memory-Vorrichtungen („SRAM-Vorrichtungen“), nichtflüchtige Speichervorrichtungen, wie Resistive Random Access Memory („ReRAM“), Electrically Erasable Programmable Read Only Memory („EEPROM“), Flash-Speicher (der auch als Untergruppe eines EEPROM betrachtet werden kann), Ferroelectric Random Access Memory („FRAM“) und Magnetoresistive Random Access Memory („MRAM“), Phasenwechselspeicher (z. B. PCRAM) und andere Halbleiterelemente, die Informationen speichern können. Jeder Typ von Speichervorrichtung kann unterschiedliche Konfigurationen aufweisen. Zum Beispiel können Flash-Speichervorrichtungen in einer NAND- oder NOR-Konfiguration eingerichtet sein.
  • Die Speicherelemente können aus passiven und/oder aktiven Elementen in beliebiger Kombination gebildet sein. Als nicht einschränkendes Beispiel schließen passive Halbleiterspeicherelemente ReRAM-Vorrichtungselemente ein, die in einigen Ausführungsformen ein widerstandsschaltendes Speicherelement wie ein Anti-Fuse- oder Phasenwechselmaterial und gegebenenfalls ein Lenkelement wie eine Diode oder einen Transistor einschließen. Das Phasenwechselmaterial kann ein Chalcogenid-Material einschließen. Eine Ausführungsform verwendet ein GeTe-Sb2Te3-Übergitter, um nicht-thermische Phasenänderungen zu erreichen, indem der Koordinationszustand der Germaniumatome mit einem Laserimpuls (oder Lichtimpuls von einer anderen Quelle) geändert wird. Daher sind die Dosen der Programmierung Laserimpulse. Die Speicherzellen können gesperrt werden, indem die Speicherzellen daran gehindert werden, das Licht zu empfangen. Es sei darauf hingewiesen, dass die Verwendung von „Impuls“ in diesem Dokument keinen Rechteckimpuls erfordert, sondern eine (kontinuierliche oder nicht kontinuierliche) Schwingung oder einen Stoß eines Schalls, Stroms, Spannungslichts oder einer anderen Welle beinhaltet. Weiterhin schließen als nicht einschränkendes Beispiel aktive Halbleiterspeicherelemente EEPROM- und Flash-Speichervorrichtungselemente ein, die in einigen Ausführungsformen Elemente einschließen, die einen Ladungsspeicherbereich enthalten, wie ein Floating-Gate, leitende Nanopartikel oder ein dielektrisches Ladungsspeichermaterial.
  • Die Speicherstruktur 126 kann zweidimensional (2D) oder dreidimensional (3D) sein. Die Speicherstruktur 126 kann ein oder mehrere Anordnungen von Speicherelementen (auch als Speicherzellen bezeichnet) umfassen. In einer zweidimensionalen Speicherstruktur sind die Halbleiterspeicherelemente in einer einzelnen Ebene oder einer einzelnen Speichervorrichtungsebene angeordnet. Üblicherweise sind in einer zweidimensionalen Speicherstruktur Speicherelemente in einer Ebene (z. B. in einer x-y-Richtung-Ebene) angeordnet, die sich im Wesentlichen parallel zu einer Hauptfläche eines Substrats erstreckt, das die Speicherelemente trägt. Das Substrat kann ein Wafer sein, über oder in dem die Schicht der Speicherelemente gebildet ist, oder es kann ein Trägersubstrat sein, das an den Speicherelementen befestigt wird, nachdem diese gebildet werden. Als ein nicht einschränkendes Beispiel kann das Substrat einen Halbleiter, wie Silizium, einschließen.
  • Ein dreidimensionales Speicherarray ist so angeordnet, dass Speicherelemente mehrere Ebenen oder mehrere Speichervorrichtungsebenen belegen, wodurch eine Struktur in drei Dimensionen gebildet wird (d. h. in der x-, y- und z-Richtung, wo die z-Richtung im Wesentlichen senkrecht ist und die x- und y-Richtungen im Wesentlichen parallel zur Hauptoberfläche des Substrats verlaufen).
  • Die Speicherstruktur kann eine monolithische dreidimensionale Speicherstruktur aufweisen, in der mehrere Speicherebenen über (und nicht in) einem einzelnen Substrat wie beispielsweise einem Wafer ohne dazwischen liegende Substrate ausgebildet sind. Die Speicherstruktur kann jede Art von nichtflüchtigem Speicher aufweisen, der monolithisch in einer oder mehreren physischen Ebenen von Speicherzellenanordnungen ausgebildet ist, die einen aktiven Bereich aufweisen, der über einem Siliziumsubstrat angeordnet ist. Die Speicherstruktur kann sich in einer nichtflüchtigen Speichervorrichtung befinden, die Schaltlogik aufweist, die dem Betrieb der Speicherzellen zugeordnet sind, ganz gleich, ob sich die zugehörige Schaltung oberhalb oder innerhalb des Substrats befindet.
  • Üblicherweise werden in einem monolithischen dreidimensionalen Speicherarray eine oder mehrere Speichervorrichtungsebenen über einem einzelnen Substrat gebildet. Optional kann das monolithische dreidimensionale Speicherarray auch eine oder mehrere Speicherschichten mindestens teilweise innerhalb des einzelnen Substrats aufweisen. Als ein nicht einschränkendes Beispiel kann das Substrat einen Halbleiter, wie Silizium, einschließen. In einem monolithischen dreidimensionalen Array werden die Schichten, die die einzelnen Speichervorrichtungsebenen des Arrays bilden, üblicherweise auf den Schichten der darunter liegenden Speichervorrichtungsebenen des Arrays gebildet. Jedoch können Schichten von benachbarten Speichervorrichtungsebenen eines monolithischen dreidimensionalen Speicherarrays gemeinsam genutzt werden oder Zwischenschichten zwischen Speichervorrichtungsebenen aufweisen.
  • Als nicht einschränkendes Beispiel kann eine dreidimensionale Speicherstruktur vertikal als Stapel mehrerer zweidimensionaler Speichervorrichtungsebenen angeordnet sein. Als weiteres nicht einschränkendes Beispiel kann ein dreidimensionales Speicherarray als mehrere vertikale Spalten (z. B. Spalten, die sich im Wesentlichen senkrecht zur Hauptfläche des Substrats erstrecken, d. h. in y-Richtung) angeordnet sein, wobei jede Spalte mehrere Speicherelemente hat. Die Spalten können in einer zweidimensionalen Konfiguration angeordnet sein, z. B. in einer x-y-Ebene, was in einer dreidimensionalen Anordnung von Speicherelementen mit Elementen auf mehreren vertikal gestapelten Speicherebenen resultiert. Andere Konfigurationen von Speicherelementen in drei Dimensionen können auch ein dreidimensionales Speicherarray bilden.
  • Als nicht einschränkendes Beispiel können in einem dreidimensionalen NAND-Speicherarray die Speicherelemente miteinander gekoppelt sein, um eine NAND-Kette innerhalb einer einzelnen horizontalen (z. B. x-y) Speichervorrichtungsebene zu bilden. Alternativ können die Speicherelemente miteinander gekoppelt sein, um eine vertikale NAND-Kette zu bilden, die über mehrere horizontale Speichervorrichtungsebenen verläuft. Andere dreidimensionale Konfigurationen können in Betracht gezogen werden, wobei einige NAND-Ketten Speicherelemente in einer einzelnen Speicherebene enthalten, während andere Ketten Speicherelemente enthalten, die sich über mehrere Speicherebenen erstrecken.
  • Dann können wiederum zweidimensionale Arrays getrennt gebildet und dann zusammengepackt werden, um eine nicht monolithische Speichervorrichtung mit mehreren Speicherschichten zu bilden. Zum Beispiel können nicht monolithische gestapelte Speicher konstruiert werden, indem Speicherebenen auf separaten Substraten gebildet und dann die Speicherebenen übereinander gestapelt werden. Die Substrate können vor dem Stapeln gedünnt oder von den Speichervorrichtungsebenen entfernt werden, aber da die Speichervorrichtungsebenen anfänglich über separaten Substraten gebildet werden, sind die resultierenden Speicherarrays keine monolithischen dreidimensionalen Speicherarrays. Ferner können mehrere zweidimensionale Speicherarrays oder dreidimensionale Speicherarrays (monolithisch oder nicht monolithisch) auf separaten Chips gebildet und dann zusammengepackt werden, um eine gestapelte Chip-Speichervorrichtung zu bilden.
  • Ein Fachmann wird erkennen, dass diese Technologie nicht auf die beschriebenen zweidimensionalen und dreidimensionalen beispielhaften Strukturen beschränkt ist, sondern alle relevanten Speicherstrukturen in dem Geist und Umfang der Technologie abdeckt, wie hier beschrieben und wie es von einem Fachmann verstanden wird.
  • Eine zugehörige Schaltung ist üblicherweise für den Betrieb der Speicherelemente und für die Kommunikation mit den Speicherelementen erforderlich. Als nicht einschränkende Beispiele können Speichervorrichtungen Schaltungen aufweisen, die zum Steuern und Ansteuern von Speicherelementen verwendet werden, um Funktionen, wie Programmieren und Lesen, auszuführen. Diese zugehörige Schaltung kann sich auf demselben Substrat wie die Speicherelemente und/oder auf einem separaten Substrat befinden. Zum Beispiel kann eine Speichersteuerung für Schreib-/Lesevorgänge des Speichers auf einem separaten Steuerungschip und/oder auf demselben Substrat wie die Speicherelemente angeordnet sein.
  • Die Steuerschaltung 110 arbeitet mit den Lese-/Schreibschaltungen 128 zusammen, um Speichervorgänge auf der Speicherstruktur 126 auszuführen, und enthält eine Zustandsmaschine 112, einen On-Chip-Adressdecodierer 114 und ein Leistungssteuermodul 116. Die Zustandsmaschine 112 stellt eine Steuerung von Speichervorgängen auf Speicherebene bereit. Ein Speicherbereich 113 kann für Parameter zum Betreiben der Speichervorrichtung vorgesehen sein, wie zum Beispiel Programmierparameterfür verschiedene Zeilen oder andere Gruppen von Speicherzellen. Diese Programmierparameter könnten Bitleitungsspannungen und Verifizierungsspannungen enthalten.
  • Der On-Chip-Adressdecodierer 114 stellt eine Adressschnittstelle zwischen derjenigen, die von dem Host oder einer Speichersteuerung verwendet wird, zu der Hardwareadresse, die von den Decodierern 124 und 138 verwendet wird, bereit. Das Leistungssteuermodul 116 steuert die Leistung und Spannungen, die den Wortleitungen und Bitleitungen während Speichervorgängen zugeführt werden. Es kann Treiber für Wortleitungsschichten (WLLs) in einer 3D-Konfiguration, SGS- und SGD-Auswahlgates und Source-Leitungen einschließen. Die Abtastblöcke können in einem Ansatz Bitleitungstreiber einschließen. Ein sourceseitiges Auswahlgate (SGS) ist ein Gate-Transistor an einem Source-Ende einer NAND-Kette, und ein drainseitiges Auswahlgate (SGD) ist ein Transistor an einem Drain-Ende einer NAND-Kette.
  • In einigen Implementierungen können einige der Komponenten kombiniert werden. Bei verschiedenen Ausführungen können eine oder mehrere der Komponenten (allein oder in Kombination), die sich von der Speicherstruktur 126 unterscheiden, als eine oder mehrere Steuerschaltungen betrachtet werden, die zur Durchführung der hierin beschriebenen Vorgänge eingerichtet sind. Zum Beispiel können eine oder mehrere Steuerschaltungen eine beliebige der Komponenten oder eine Kombination aus einer Steuerschaltung 110, Zustandsmaschine 112, Decodierern 114/124/138, Leistungssteuermodul 116, Abtastblöcken SB1, SB2, ..., SBp, Lese-/Schreibschaltungen 128, Speichersteuerung 122, Prozessor 122c usw. einschließen.
  • Die Speichersteuerung 122 kann einen Prozessor 122c und Speichervorrichtungen (Speicher) wie Nur-Lese-Speicher (ROM) 122a und RAM 122b aufweisen. RAM 122b kann SRAM und DRAM sein, ist aber nicht darauf beschränkt. Die Speichervorrichtungen weisen einen Code wie einen Satz von Anweisungen auf und der Prozessor ist dazu betreibbar, den Satz von Anweisungen auszuführen, um die hierin beschriebene Funktionalität bereitzustellen. Alternativ oder zusätzlich kann der Prozessor auf Code von einem Speichervorrichtungsbereich 126a der Speicherstruktur zugreifen, z. B. auf einen reservierten Bereich von Speicherzellen in einer oder mehreren Wortleitungen.
  • Der Code wird von der Speichersteuerung 122 verwendet, um auf die Speicherstruktur 126 zuzugreifen, wie zum Beispiel für Programmier-, Lese- und Löschvorgänge. Der Code kann Bootcode und Steuercode (z. B. einen Satz von Befehlen) einschließen. Der Bootcode ist eine Software, welche die Speichersteuerung während eines Boot- oder Startvorgangs initialisiert und der Speichersteuerung ermöglicht, auf die Speicherstruktur zuzugreifen. Der Code kann von der Speichersteuerung verwendet werden, um eine oder mehrere Speicherstrukturen zu steuern. Beim Hochfahren ruft der Prozessor 122c den Bootcode aus dem ROM 122a oder dem Speichervorrichtungsbereich 126a zur Ausführung ab, und der Bootcode initialisiert die Systemkomponenten und lädt den Steuercode in den RAM 122b. Sobald der Steuercode in den RAM 122b geladen ist, wird er durch den Prozessor 122c ausgeführt. Der Steuercode enthält Treiber zum Durchführen grundlegender Aufgaben, wie beispielsweise Steuern und Zuweisen von Speicher, Priorisieren der Verarbeitung von Befehlen und Steuern von Eingabe- und Ausgabeports.
  • Der Hostspeicher 160 kann zum Speichern von Anwendungen 162, einer Prioritätshostdaten-Anwendung 164, O/S-APIs 166, einem Dateisystem 168 und einem oder mehreren Gerätetreibern 170 verwendet werden. Es ist zu beachten, dass das Bezugszeichen 166 hierin verwendet wird, um sowohl auf die O/S-APIs im Allgemeinen als auch auf eine bestimmte O/S-API zu verweisen. Es ist zu beachten, dass alle oder ein Teil der Anwendungen 162, eine Prioritätshostdaten-Anwendung 164, O/S-APIs 166, ein Dateisystem 168 und ein oder mehrere Gerätetreiber 170 in nichtflüchtigem Speicher 126 gespeichert werden können. Ferner ist zu beachten, dass der Hostspeicher 160 flüchtigen Speicher enthalten könnte, wobei die Anwendungen 162, die Prioritätshostdaten-Anwendung 164, die O/S-APIs 166 und das Dateisystem 168 nicht unbedingt im Hostspeicher 160 gehalten werden, wenn der Strom abgeschaltet ist. Der Host 140 kann Bootcode enthalten, um eine oder mehrere der Anwendungen 162, Prioritätshostdaten-Anwendung 164, O/S-APIs 166, Dateisystem 168 und/oder Gerätetreiber 170 aus dem nichtflüchtigen Speicher 126 in den Hostspeicher 160 zu laden.
  • 2 ist ein Blockdiagramm, das eine Ausführungsform einer mit einer Hostvorrichtung 140 verbundenen (oder in die Hostvorrichtung 140 eingebetteten) nichtflüchtigen Speichervorrichtung 100 darstellt, wobei die Hostvorrichtung 140 und/oder die Speichervorrichtung 100 Ausführungsformen der nachstehend beschriebenen gegenwärtigen Technologie implementieren können. Die nichtflüchtige Speichervorrichtung 100 kann prägnanter als „Speichervorrichtung“ bezeichnet werden. Die Hostvorrichtung 140 kann auch als „Hostsystem“ bezeichnet werden. Unter Bezugnahme auf 2 speichert die Hostvorrichtung 140 Daten in die Speichervorrichtung 100 und ruft Daten von dieser ab, indem sie Schreib- und Lesebefehle ausgibt. Die Speichervorrichtung 100 kann in die Hostvorrichtung 140 eingebettet sein oder in Form einer Karte, eines USB-Laufwerks (Universal Serial Bus) oder eines anderen Wechsellaufwerks, wie z. B. einer Solid State Disk (SSD) vorliegen, die über einen mechanischen und elektrischen Anschluss abnehmbar mit der Hostvorrichtung 140 verbunden ist. Die Hostvorrichtung 140 kann irgendeine einer Anzahl fester oder tragbarer Daten erzeugender Vorrichtungen sein, wie beispielsweise ein Personal Computer, ein Smartphone, ein persönlicher digitaler Assistent (PDA), ein Server, eine Set-Top-Box oder dergleichen. Allgemeiner gesagt, kann die Hostvorrichtung 140 eine eigene Logik beinhalten, die die Funktionen eines Smartphones, eines PDA, eines Laptops, eines Servers, einer Set-Top-Box usw. ausführt. Obwohl nicht spezifisch gezeigt, kann der Host in Verbindung mit einem Nur-Lese-Speicher (ROM) stehen oder einen solchen beinhalten.
  • Die Hostvorrichtung 140, die prägnanter als der Host 140 bezeichnet werden kann, kann einen oder mehrere Prozessoren (wie z. B. Prozessor(en) 150 in 1B) einschließen, die ein oder mehrere Anwendungsprogramme 162 ausführen. Wenn Daten auf der Speichervorrichtung 100 gespeichert oder von dieser abgerufen werden sollen, kommunizieren die Anwendungsprogramme 162 über eine oder mehrere Anwendungsprogrammierschnittstellen (APIs) 166 des Betriebssystems mit einem Dateisystem 168. Das Dateisystem 168 kann ein Softwaremodul sein, das auf dem/den Prozessor(en) 150 ausgeführt wird und die Dateien auf der Speichervorrichtung 100 verwaltet. Das Dateisystem 168 verwaltet Cluster von Hostdaten im logischen Adressraum. Zu den allgemeinen Vorgängen, die von einem Dateisystem 168 ausgeführt werden, gehören Vorgänge zum Erstellen, Öffnen, Schreiben (Speichern) von Daten, Lesen (Abrufen) von Daten, Suchen nach einem bestimmten Speicherort in einer Datei, Verschieben, Kopieren und Löschen von Dateien. Das Dateisystem 168 kann eine Schaltung, Software oder eine Kombination aus Schaltung und Software sein. Die Hostvorrichtung 140 verwendet das Dateisystem 168, um die in der Speichervorrichtung 100 gespeicherten Dateien zu adressieren, was das Schreiben von Daten in den und das Lesen von Daten aus dem nichtflüchtigen Speicher 126 der Speichervorrichtung 100 umfassen kann. Beispieltypen für Dateisysteme, die vom Host 140 verwendet werden können, schließen FAT32, exFAT, ext2/3/4, HFS + und NTFS ein, sind aber nicht darauf beschränkt. Das Dateisystem 168 kann ein eigenständiger Chip oder eine Software sein, die von dem/den Prozessor(en) 150 des Host 140 ausführbar ist. Eine Dateisystem-Datenstruktur, wie z. B. eine Dateizuordnungstabelle (FAT), kann im Speicher (z. B. 126) der Speichervorrichtung 100 gespeichert werden. Der Host 140 kann die Dateisystem-Datenstruktur verwenden, um einen logischen Adressbereich für alle logischen Blockadressen (LBAs) zu pflegen, die den Daten durch den Host 140 zugewiesen wurden.
  • Ein oder mehrere Speichervorrichtungstreiber 170 auf dem Host 140 können Anweisungen von dem Dateisystem 168 für die Übertragung über eine Kommunikationsschnittstelle 106 zwischen dem Host 140 und der Speichervorrichtung 100 übersetzen. Die Kommunikationsschnittstelle schließt eine elektrische und mechanische Schnittstelle zwischen dem Host 140 und der Speichervorrichtung 100 ein. Die elektrische und mechanische Schnittstelle kann eine beliebige Anzahl aus einer Reihe bekannter Schnittstellen einschließen, wie z. B. Secure Digital (SD), MultiMediaCard (MMC), Embedded MultiMediaCard (eMMC), Universal Serial Bus (USB), Serial Advanced Technology Attachment (SATA), Small Computer Systems Interface (SCSI), Peripheral Component Interface (PCI) und PCI Express (PCIe).
  • Die Host-Treiber 170 können auch die Host-Seite einer logischen Geräteschnittstelle für den Zugriff auf den nichtflüchtigen Speicher 126 in der Speichervorrichtung 100 implementieren. Die logische Geräteschnittstelle wird manchmal auch als Host-Controller bezeichnet. Die Host-Treiber 170 könnten Non-Volatile Memory Express (NMVe), Advanced Host Controller Interface (AHCI), SD, USB, MMC und eMMC einschließen, sind aber nicht darauf beschränkt. Es ist zu beachten, dass die nachstehend erläuterte Speichersteuerung 122 die Seite der nichtflüchtigen Speichervorrichtung der logischen Geräteschnittstelle implementieren kann.
  • Der nichtflüchtige Speicher 126 schließt einen Abschnitt ein, der als Speicher zur Zwischenspeicherung (IS-Speicher) 132 bezeichnet wird, und einen anderen Abschnitt, der als Speicher zur Hauptspeicherung (MS-Speicher) 134 bezeichnet wird. Der IS-Speicher 132 schließt eine erste Gruppe der nichtflüchtigen Speicherzellen ein. Der MS-Speicher 134 schließt eine zweite Gruppe der nichtflüchtigen Speicherzellen ein. Wie in 2 dargestellt, können Hostdaten 130 im IS-Speicher und im MS-Speicher gespeichert werden. Eine Option besteht darin, dass die Speichersteuerung 122 sowohl Prioritätshostdaten als auch Nicht-Prioritätshostdaten im IS-Speicher 132 in Reaktion auf eine Anforderung des Hosts 140 zum Speichern der Hostdaten speichert. In einer Ausführungsform verlagert irgendwann die Speichersteuerung 122 die Nicht-Prioritätshostdaten vom IS-Speicher 132 in den MS-Speicher 134. In einigen Fällen könnte die Speichersteuerung 122 als Reaktion auf eine Anforderung des Hosts 140 zum Speichern der Nicht-Prioritätshostdaten die Nicht-Prioritätshostdaten direkt in den MS-Speicher 134 schreiben.
  • Der nichtflüchtige Speicher 126 kann Verwaltungstabellen 142 und Prioritätsadresstabelle 144 speichern. Wie nachstehend ausführlicher beschrieben wird, kann die Speichersteuerung 122 gemäß bestimmten Ausführungsformen der vorliegenden Technologie die Prioritätsadresstabelle 144 verwenden, um zu verwalten, ob Hostdaten im IS-Speicher 132 verbleiben oder in den MS-Speicher 134 verlagert werden. In einer Ausführungsform verlagert (d. h. überträgt) die Speichersteuerung 122 Daten aus dem IS-Speicher 132 in den MS-Speicher 134, basierend auf den Prioritätsadressen in der Prioritätsadresstabelle 144. In einer Ausführungsform führt die Speichersteuerung 122 eine Speicherbereinigung auf der Grundlage der Prioritätsadresstabelle 144 durch. Die Speicherbereinigung kann das Verschieben von Prioritätshostdaten von einem Ort innerhalb des IS-Speichers 132 an einen anderen Ort im IS-Speicher 132 sowie das Verschieben von Nicht-Prioritätshostdaten vom IS-Speicher 132 in den MS-Speicher 134 einschließen.
  • In einer Ausführungsform schließen die Verwaltungstabellen 142 eine oder mehrere L2P-Tabellen (Abbildung logisch-zu-physisch) und eine oder mehrere P2L-Tabellen (Abbildung physisch-zu-logisch) ein. Die Steuerung 122 kann die Verwaltungstabellen 142 verwenden, um logische Blockadressen (LBAs) auf physische Blockadressen (PBAs) abzubilden. Solche Tabellen 142 können verwendet werden, um LBAs direkt auf die PBAs abzubilden, oder LBAs können auf Zwischen- oder virtuelle Blockadressen abgebildet werden, die auf PBAs abgebildet werden. Andere Variationen sind ebenfalls möglich. In einigen Ausführungsformen werden die Hostdaten 130 in Blöcken gespeichert (z. B. Block 0, Block 1, Block 2, ...). In einigen beispielhaften Ausführungsformen ist ein Block von nichtflüchtigen Speicherzellen die Löscheinheit. In einigen Ausführungsformen stellt ein Block eine Vielzahl von Speicherzellen dar, die durch gemeinsame Bitleitungen und Wortleitungen gruppiert sind. Anweisungen oder Befehle, wie z. B. Schreibbefehle, die von dem Host 140 über die Kommunikationsverbindung 106 an die Speichervorrichtung 100 gesendet werden, können logische Blockadressen (LBAs) einschließen. Im Gegensatz dazu können die über den Kommunikationskanal 118 gesendeten Anweisungen oder Befehle physische Blockadressen (PBAs) einschließen.
  • Wie in 2 gezeigt, werden Hostdaten 130 sowohl im IS-Speicher 132 als auch im MS-Speicher 134 gespeichert. Einzelne Blöcke (z. B. Block 0, Block 1, Block 2, ...) der Hostdaten 130 können für operative Zwecke in Seiten von Speicherzellen unterteilt werden. Die Speicherzellen der einzelnen Blöcke können z. B. jeweils in acht Seiten P0-P7 unterteilt werden. Alternativ können innerhalb jedes Blocks 16, 32 oder mehr Seiten von Speicherzellen vorhanden sein. Die Seite ist die Einheit der Programmierung und Lesung von Daten innerhalb eines Blocks, welche die Mindestmenge an Daten enthält, die gleichzeitig programmiert oder gelesen werden. Um jedoch die Betriebsparallelität des Speichersystems zu erhöhen, können solche Seiten innerhalb von zwei oder mehr Blöcken logisch zu Metaseiten verknüpft werden. Eine Metaseite kann beispielsweise aus einer physischen Seite aus jedem der vier Blöcke gebildet werden (z. B. kann eine Metaseite beispielsweise die Seite P2 in jedem der vier Blöcke einschließen aber die Seiten einer Metaseite müssen nicht unbedingt die gleiche relative Position innerhalb jedes der Blöcke haben). Eine Metaseite kann die maximale Einheit der Programmierung sein.
  • Gemäß bestimmten Ausführungsformen kann der IS-Speicher 132 einen Single-Level-Cell-Speicher (SLC-Speicher) einschließen, wobei ein einzelnes Datenbit pro Speicherzelle gespeichert wird, das auch als Speicherelement oder -bereich bezeichnet werden kann. Genauer gesagt, kann der SLC-Speicher betrieben werden, um zwei erfassbare Ladungspegel zu speichern, um ein Bit zu speichern, das einen von zwei möglichen Zuständen haben kann: 0 oder 1. Der IS-Speicher 132 kann alternativ oder zusätzlich Formen eines persistenten Byte-adressierbaren Speichers einschließlich ReRAM, Phasenwechselspeicher oder magnetisches RAM einschließen. Im Gegensatz dazu kann der preiswertere MS-Speicher 134 Multi-Level-Cell-Speicher (MLC-Speicher) einschließen, wobei zwei oder mehr Bits pro Speicherzelle gespeichert werden. Der MLC-Speicher, wie der Begriff hierin verwendet wird, kann Speicherzellen einschließen, wobei zwei, drei oder vier Datenbits oder potenziell sogar mehr als vier Datenbits pro Speicherzelle gespeichert werden. Dementsprechend umfasst der Begriff MLC-Speicher, wie der Begriff hierin verwendet wird, auch Triple-Level-Cell-Speicher (TLC-Speicher) und Quad-Level-Cell-Speicher (QLC-Speicher). Zum Beispiel kann der MLC-Speicher betrieben werden, um vier erfassbare Ladungspegel zu speichern, die zum Speichern von vier Zuständen verwendet werden können und zwei Datenbits speichern können: 00, 01, 10 oder 11. Bei einem weiteren Beispiel, wobei der MLC-Speicher ein TLC-Speicher ist, kann dieser betrieben werden, um acht erfassbare Ladungspegel zu speichern, die zum Speichern von acht Zuständen verwendet werden können und drei Datenbits speichern können: 000, 001, 010, 011, 100, 101, 110 oder 111. Bei einem noch weiteren Beispiel, wobei der MLC-Speicher ein QLC-Speicher ist, kann dieser betrieben werden, um sechzehn erfassbare Ladungspegel zu speichern, die zum Speichern von sechzehn Zuständen verwendet werden können und vier Datenbits speichern können: 0000, 0001, 0010, 0011, 0100, 0101, 0110, 0111, 1000, 1001, 1010, 1011, 1100, 1101, 1110, oder 1111. Der IS-Speicher 132 kann hierin prägnanter als IS 132 bezeichnet werden. In ähnlicher Weise kann der MS-Speicher 134 hierin prägnanter als der MS-Speicher 134 bezeichnet werden.
  • Weiterhin Bezug nehmend auf 2 hat der IS-Speicher 132 in einer Ausführungsform eine niedrigere Leselatenz als eine Leselatenz des MS-Speichers 134. In einer solchen Ausführungsform kann aus dem IS-Speicher 132 mit höherer Geschwindigkeit gelesen werden als aus dem MS-Speicher 134. Der IS-Speicher 132 hat in einer Ausführungsform eine niedrigere Schreiblatenz als eine Schreiblatenz des MS-Speichers 134. In einer solchen Ausführungsform kann in den IS-Speicher 132 mit höherer Geschwindigkeit geschrieben werden als in den MS-Speicher 134. Zum Beispiel kann der IS-Speicher 132 Flash-Speicherzellen enthalten, die auf ein Bit pro Zelle (SLC) programmiert sind, während der MS-Speicher 132 Flash-Speicherzellen enthalten kann, die auf mehrere Bits pro Zelle programmiert sind. In einer Ausführungsform ist jede MLC-Zelle auf einen von vier unterschiedlichen Zuständen programmiert (z. B. eine oder vier verschiedene Schwellenspannungsverteilungen), während jede SLC-Zelle auf einen von zwei verschiedenen Zuständen programmiert ist (z. B. eine oder zwei verschiedene Schwellenspannungsverteilungen). In einer Ausführungsform ist jede MLC-Zelle auf einen von acht unterschiedlichen Zuständen programmiert (z. B. eine oder acht verschiedene Schwellenspannungsverteilungen). Üblicherweise wird eine Gruppe von Speicherzellen als eine Einheit programmiert, was bedeutet, dass verschiedene Zellen auf die verschiedenen Zustände programmiert werden. Zudem gibt es bei MLC üblicherweise eine kleinere Lücke zwischen den Zuständen (z. B. eine kleinere Lücke zwischen den Schwellenspannungsverteilungen) als bei SLC. Diese Faktoren führen bei MLC zu einer deutlich höheren Schreiblatenz als bei SLC. Ein Faktor für eine signifikant niedrigere Leselatenz bei SLC als bei MLC ist, dass die SLC-Abtastung bei nur einem Referenzpegel erfolgen kann, um zwischen den beiden Zuständen zu unterscheiden, während bei MLC die Abtastung bei drei oder sieben Referenzpegeln erforderlich sein kann, um zwischen den verschiedenen Zuständen (z. B. Schwellenspannungsverteilungen) zu unterscheiden. Es ist zu beachten, dass der IS-Speicher 132 und der MS-Speicher 134 verschiedene Arten von Technologie sein können. Zum Beispiel könnte der IS-Speicher 132 ReRAM-Speicherzellen, Phasenwechselspeicher-Speicherzellen (PCM-Speicherzellen) und/oder magnetische RAM-Speicherzellen einschließen, während der MS-Speicher 134 Flash-Speicher sein könnte (wie z. B., aber nicht beschränkt auf NAND). In einer solchen Ausführungsform haben die ReRAM-Speicherzellen, Phasenwechselspeicher-Speicherzellen (PCM-Speicherzellen) und/oder magnetische RAM-Speicherzellen im IS-Speicher 132 eine niedrigere Leselatenz als die Flash-Speicherzellen im MS-Speicher 134.
  • Zudem kann der IS-Speicher 132 eine höhere Ausdauer als der MS-Speicher 134 haben. Beispielsweise kann eine erwartete Lebensdauer jeder der Zellen des IS-Speichers 132 20.000 Programmier-/Löschzyklen (P/E-Zyklen) betragen, während die erwartete Lebensdauer jeder der Zellen des MS-Speichers 134 2.000 P/E-Zyklen betragen kann, womit die Zellen des IS-Speichers 132 in diesem Fall die 10-fache Ausdauer der Zellen des MS-Speichers 134 hätten. Dies ist nur ein Beispiel, das nicht allumfassend sein soll. Der IS-Speicher 132 hat in einer Ausführungsform eine geringere Speicherdichte als der MS-Speicher 134. Genauer gesagt können individuelle Zellen des IS-Speichers 132 weniger Bits von Hostdaten speichern als individuelle Zellen des MS-Speichers 134. In einigen Ausführungsformen wird dem IS-Speicher 132 ein wesentlich geringerer Anteil des nichtflüchtigen Speichers 126 zugewiesen als dem MS-Speicher 134. Als ein Beispiel könnte der IS-Speicher 132 weniger als zehn Prozent des gesamten Speicherbudgets der Speichervorrichtung 100 in Anspruch nehmen. Als ein weiteres Beispiel könnte der IS-Speicher 132 je nach Speichervorrichtung 100 nur zwei Prozent oder weniger des gesamten Speicherbudgets in Anspruch nehmen. Das genaue Verhältnis zwischen dem IS-Speicher 132 und dem MS-Speicher 134 hängt vom jeweiligen Produkt ab und beeinflusst im Allgemeinen die Kosten gegenüber der Leistung und Ausdauer der Speichervorrichtung 100.
  • Der IS-Speicher 132 kann verwendet werden, um einen schnelleren Schreibdurchsatz bereitzustellen, und kann auch als eine sichere Zone zum schnellen Speichern von Hostdaten vor dem Speichern der Hostdaten im MS-Speicher 134 verwendet werden. Der IS-Speicher 132 kann auch als ein nichtflüchtiger Speicher-Cache fungieren, der einen sehr schnellen Zugriff auf die im IS-Speicher 132 gespeicherten Hostdaten ermöglicht. Das allgemeine Konzept einer Ausführungsform besteht darin, teureren nichtflüchtigen Speicher mit niedrigeren Schreib- und Leselatenzen, wie den IS-Speicher 132, und preiswerteren nichtflüchtigen Speicher mit höheren Schreib- und Leselatenzen, wie den MS-Speicher 134, zu verwenden.
  • Obwohl der IS-Speicher 132 im Allgemeinen eine bessere Leistung bietet, ist er zu klein, um alle Hostdaten effektiv zwischenzuspeichern. Herkömmliche Techniken zum Entscheiden, welche Hostdaten im IS-Speicher 132 gespeichert werden sollen (sowie von IS 132 in den MS-Speicher 134 verlagert werden sollen), können First-in-First-out (FIFO) sein oder auf einem Alterungsalgorithmus basieren. Herkömmliche Techniken zum Durchführen einer Verlagerung, die auch als herkömmliche Verlagerungsschemata bezeichnet werden können, sind jedoch für viele Anwendungsfälle nicht optimal, da es eine klare Unterscheidung gibt zwischen dem optimalen Verlagerungsschema für die Verwendung in einer Speichervorrichtung, die für das Streaming von Videos verwendet wird, und dem optimalen Verlagerungsschema für die Verwendung in einer Speichervorrichtung, die zum wiederholten Aktualisieren eines selben relativ kleinen Datenblocks verwendet wird. Das Beispiel für das Streaming von Videos ist ein extremer Anwendungsfall, bei dem ein ganzes Flash-Laufwerk beschrieben und dann sofort und immer wieder neu beschrieben wird. Das wiederholte Aktualisieren desselben relativ kleinen Datenblocks ist ein weiterer extremer Anwendungsfall am anderen Ende des Spektrums, bei dem eine gleiche LBA immer wieder neu beschrieben werden kann. Zwischen den vorstehend genannten Extremfallszenarien liegt eine große Grauzone. Ausführungsformen der vorliegenden Technologie, die nachstehend ausführlicher beschrieben werden, können zum Verwalten der Verlagerung auf eine Art und Weise eingesetzt werden, die eine verbesserte Schreib- und Leseleistung im Vergleich zu einer herkömmlichen Verlagerung bereitstellt.
  • Zurückkehrend zu Erläuterung von Host 140, ist der Prioritätshostdaten-Anwendung 164 bekannt, welche Hostdaten 130 (z. B. Dateien) Priorität für den Verbleib im IS-Speicher 132 erhalten sollen. In einer Ausführungsform überwacht die Prioritätshostdaten-Anwendung 164 die Verwendung von Hostdaten, um zu lernen, welche Hostdaten Priorität für den Verbleib im IS-Speicher 132 erhalten sollen. In einer Ausführungsform stellt die Prioritätshostdaten-Anwendung 164 eine Benutzeroberfläche bereit, über die ein Benutzer auswählen kann, welche Dateien oder dergleichen Priorität für den Verbleib im IS-Speicher 132 erhalten sollen. Je nach dem Kontext kann ein ähnlicher Begriff verwendet werden, wie z. B. „Prioritätsdatei“, d. h. eine Datei, die Priorität für den Verbleib im IS-Speicher 132 hat. In einer Ausführungsform ist die Priorität ein binärer Wert. Es ist zu beachten, dass die Priorität ein anderes Gewicht als ein binärer Wert haben kann. Zum Beispiel kann es drei oder mehr verschiedene Gewichte geben, wobei das Gewicht zum Bestimmen verwendet wird, welche Daten im IS-Speicher 132 gespeichert werden.
  • Die Prioritätshostdaten-Anwendung 164 ist in der Lage, auf Adressen (z. B. logische Adressen) zuzugreifen, die mit den Hostdaten (z. B. Datei) verknüpft sind, die Priorität für den Verbleib im IS-Speicher 132 erhalten sollen. Wenn beispielsweise die Hostdaten eine Datei sind, kann die logische Adresse für die Prioritätsdatei in Metadaten für die Datei enthalten sein. Die Prioritätshostdaten-Anwendung 164 stellt der Speichersteuerung 122 einen Satz von Prioritätsadressen für die Prioritätshostdaten bereit, mit der Angabe, dass die Speichersteuerung 122 dem Satz von Prioritätsadressen Priorität für den Verbleib im IS-Speicher 132 einräumen soll. Es ist zu beachten, dass in einigen hierin beschriebenen Ausführungsformen die Prioritätsadressen als „logische Adressen“ bezeichnet werden. Es ist jedoch nicht erforderlich, dass die Prioritätsadressen logische Adressen sind. Zum Beispiel könnten die Prioritätsadressen in einigen Fällen die physikalische Adresse der Hostdaten in z. B. der Speichervorrichtung 100 sein.
  • In einer Ausführungsform verwendet die Prioritätshostdaten-Anwendung 164 die In-Band-Kommunikation eines Speicherzugriffsprotokolls, das von einem Treiber 170 und der Speichersteuerung 122 verwendet wird. Der hierin verwendete Begriff „In-Band-Kommunikation“ bedeutet, dass die logischen Prioritätsadressen der Speichersteuerung 122 unter Verwendung des gleichen Kommunikationskanals bereitgestellt werden, der auch zum Bereitstellen von auf die Speichervorrichtung 100 zu schreibenden Hostdaten sowie zum Lesen von Hostdaten von der Speichervorrichtung verwendet werden kann. Zum Beispiel kann die In-Band-Kommunikation der logischen Prioritätsadressen das Verwenden des gleichen Speicherzugriffsprotokolls (z. B. NVMe, AHCI) umfassen, das zum Übertragen von Hostdaten zwischen dem Host 140 und der Speichervorrichtung 100 verwendet wird.
  • Pfad 180 stellt einen Fluss einer Ausführungsform der In-Band-Kommunikation dar. Der Fluss kann dem oben erörterten Fluss darin ähnlich sein, wie Anwendung(en) 162 Daten von/auf Struktur 126 lesen oder schreiben. Die In-Band-Kommunikation führt jedoch nicht dazu, dass Hostdaten 130 in die Struktur 126 geschrieben oder aus dieser gelesen werden. Die In-Band-Kommunikation kann das Zugreifen der Prioritätshostdaten-Anwendung 164 auf eine O/S-API 166 einschließen, um eine Anforderung zu stellen, dass eine Kommunikation an Speichersteuerung 122 gesendet wird. Diese Anforderung könnte so einfach wie ein Schreiben in eine reservierte logische Adresse sein, welche die Speichersteuerung als eine Anforderung zum Aktualisieren der Prioritätsadresstabelle 144 bestimmen kann. Die O/S-API 166 kann eine Schnittstelle mit dem Dateisystem 168 bilden, um die Anforderung weiterzuleiten. Das Dateisystem 168 kann die Anforderung an einen Treiber 170 weiterleiten. Der Treiber 170 kann einen Treiber für ein Speicherzugriffsprotokoll wie einen NVMe-Treiber, AHCI-Treiber, UFS-Treiber usw. einschließen. Der Treiber 170 bildet dann eine geeignete Kommunikation für das verwendete Speicherzugriffsprotokoll und stellt die Kommunikation mit der Speichersteuerung 122 bereit.
  • Es ist zu beachten, dass in einer Ausführungsform die In-Band-Kommunikation keine Änderung an einem Treiber 170 erfordert. Wenn beispielsweise die Prioritätshostdaten-Anwendung 164 ein Schreiben an eine reservierte logische Adresse anfordern würde, könnte diese Schreibanforderung in ähnlicher Weise wie eine von einer anderen Anwendung 162 verwendete Schreibanforderung ablaufen. Ein Unterschied besteht darin, dass, wenn die Speichersteuerung 122 die Schreibanforderung an die reservierte logische Adresse empfängt, die Speichersteuerung 122 dies als eine Anforderung zum Aktualisieren der Prioritätsadresstabelle 144 anstatt zum Schreiben von Hostdaten 130 in die Struktur 126 interpretieren kann.
  • 3 ist ein Blockdiagramm einer Ausführungsform der Speichervorrichtung 100. Jedoch kann die in 3 dargestellte Architektur auch zur Implementierung anderer Arten nichtflüchtiger Speichervorrichtungen verwendet werden. 3 zeigt, dass die Speichervorrichtung 100 die Steuerung 122 einschließt, die mit einem oder mehreren nichtflüchtigen Speicherchips 108 (die den in 1B und 2 dargestellten nichtflüchtigen Speicher 126 aufweisen) verbunden ist. 3 stellt Details zu einigen Komponenten der Steuerung 122 bereit, auf die nachfolgend ausführlicher eingegangen wird. Je nach der zur Implementierung des IS-Speichers 132 verwendeten Technologie kann sich der IS-Speicher in einem anderen nichtflüchtigen Speicherchip 108 als der MS-Speicher 134 befinden, oder ein gleicher nichtflüchtiger Speicherchip 108 kann einen Teil des IS-Speichers 132 und einen Teil des MS-Speichers 134 einschließen.
  • Wie hierin verwendet, ist die Steuerung 122 für ein System, das einen nichtflüchtigen Speicher verwendet, eine Vorrichtung, die im nichtflüchtigen Speicher gespeicherte Daten verwaltet und mit einem Host kommuniziert. Die Steuerung 122 kann verschiedene Funktionen zusätzlich zu der hierin beschriebenen spezifischen Funktionalität haben. Zum Beispiel kann die Steuerung 122 den nichtflüchtigen Speicher formatieren, um den ordnungsgemäßen Betrieb des Speichers zu gewährleisten, fehlerhafte Speicherzellen (die physische Speichereinheit) auszuweisen und freie Speicherzellen zuzuweisen, durch die künftige ausgefallene Zellen ersetzt werden sollen. Ein Teil der freien Speicherzellen kann verwendet werden, um die Firmware für den Betrieb der Steuerung zu halten und andere Funktionen zu implementieren. Diese Firmware kann auch während des Betriebs in den lokalen flüchtigen Speicher eingelesen werden. Wenn ein Host Daten aus dem nichtflüchtigen Speicher lesen oder in ihn schreiben muss, kommuniziert er mit der Steuerung 122. Wenn der Host eine logische Adresse bereitstellt, an die Daten gelesen/geschrieben werden sollen, wandelt die Steuerung 122 die vom Host empfangene logische Adresse in eine physische Adresse im physischen Speicher um. Die Steuerung 122 kann auch verschiedene Speicherverwaltungsfunktionen durchführen, wie zum Beispiel, jedoch nicht darauf beschränkt, den Abnutzungsausgleich (Verteilung von Schreibvorgängen auf Speicherchip oder Blöcke des Speichers, um zu vermeiden, dass bestimmte Speicherblöcke, die ansonsten wiederholt beschrieben würden, abgenutzt werden) und die Speicherbereinigung (nachdem ein Block voll ist, werden nur die gültigen Datenseiten in einen neuen Block bewegt, so dass der volle Block gelöscht und wiederverwendet werden kann).
  • Die Schnittstelle zwischen der Steuerung 122 und dem nichtflüchtigen Speicherchip 108 kann jede geeignete Schnittstelle sein, wie z. B. PCI Express. Wenn es sich bei den Speicherzellen um Flash-Speicherzellen handelt, kann die Schnittstelle Toggle Mode 200, 400 oder 800 oder eine andere Kommunikationsschnittstelle sein. In einigen Ausführungsformen schließt die Speichervorrichtung 100 einen einzigen Kanal zwischen der Steuerung 122 und dem nichtflüchtigen Speicherchip 108 ein; Jedoch ist der hier beschriebene Gegenstand nicht auf einen einzelnen Speicherkanal beschränkt. Beispielsweise können in einigen Speichersystemarchitekturen zwei, vier, acht oder mehr Kanäle zwischen der Steuerung 122 und dem Speicherchip 108, je nach den Steuerungsfunktionen, vorhanden sein. In jeder der hier beschriebenen Ausführungsformen kann mehr als ein einzelner Kanal zwischen der Steuerung 122 und dem Speicherchip 108 vorhanden sein, selbst wenn ein einzelner Kanal in den Zeichnungen dargestellt ist.
  • Wie in 3 dargestellt, schließt die Steuerung 122 ein Frontend-Modul 312 ein, das mit einem Host verknüpft ist, ein Backend-Modul 310, das mit einem oder mehreren nichtflüchtigen Speicherchip 108 verknüpft ist, und verschiedene andere Module, die Funktionen ausführen, die nachfolgend beschrieben werden.
  • Die in 3 veranschaulichten Komponenten der Steuerung 122 können die Form einer gebündelten funktionalen Hardwareeinheit (z. B. eine elektrische Schaltung) haben, die zur Verwendung mit anderen Komponenten bestimmt ist, eines Programmcodes (z. B. Software oder Firmware), der von einem oder mehreren Prozessoren oder einer Verarbeitungsschaltung ausführbar ist, die normalerweise eine bestimmte Funktion verwandter Funktionen ausführt, oder einer in sich geschlossenen Hardware- oder Softwarekomponente, die mit einem größeren System verknüpft ist. Zum Beispiel kann jedes Modul eine anwendungsspezifische integrierte Schaltung (ASIC), eine anwenderprogrammierbare Gatteranordnung (FPGA), eine elektrische Schaltung, eine digitale Logikschaltung, eine analoge Schaltung, eine Kombination diskreter Schaltungen, Gatter oder jede andere Art von Hardware oder Kombination davon beinhalten. Alternativ oder zusätzlich kann jedes Modul Software einschließen, die in einer prozessorlesbaren Vorrichtung (z. B. einem lokalen flüchtigen Speicher) gespeichert ist, um einen Prozessor zur Ausführung der hierin beschriebenen Funktionen zu programmieren.
  • Die Speichervorrichtung 100 schließt den Direktzugriffsspeicher (RAM) 122b (gleicher lokaler flüchtiger Speicher wie vorstehend in Bezug auf 1B erläutert) und den Nur-Lese-Speicher (ROM) 122a ein. Wiederum unter Bezugnahme auf die Module der Steuerung 122 verwaltet eine Puffermanager-/Bussteuerung 314 den RAM 122b und steuert die interne Busarbitrierung der Steuerung 122. Der ROM 122a speichert Bootcode für die Steuerung. Obwohl sie in 3 als von der Steuerung 122 getrennt angeordnet (jedoch mit der Steuerung 122 verbunden) dargestellt sind, können in anderen Ausführungsformen entweder der RAM 122b oder der ROM 122a oder beide innerhalb der Steuerung angeordnet sein. In wieder anderen Ausführungsformen können Teile des RAM und des ROM sowohl innerhalb der Steuerung als auch außerhalb der Steuerung angeordnet sein. Ferner können in einigen Implementierungen die Steuerung 122, der RAM 122b und der ROM 122a auf separaten Halbleiter-Chips angeordnet sein. In bestimmten Ausführungsformen können anstelle der Speicherung der potenziellen Host-Aktivitätsmuster und zugehörigen Verlagerungsschemata im nichtflüchtigen Speicher 126 die potenziellen Host-Aktivitätsmuster und zugehörigen Verlagerungsschemata im ROM 122a gespeichert werden.
  • Das Frontend-Modul 312 schließt die Host-Schnittstelle 202 und eine Physical-Layer-Schnittstelle (PHY) 322 ein, welche die elektrische Schnittstelle mit dem Host oder der Speichersteuerung der nächsten Ebene bereitstellt. Die Wahl des Typs der Host-Schnittstelle 202 kann von dem Typ des verwendeten Speichers abhängen. Beispieltypen der Host-Schnittstelle 202 können SATA, SATA Express, SAS, Fibre Channel Protocol (FCP), USB, MMC, eMMC, UFS, AHCI, und NVMe einschließen, sind aber nicht darauf beschränkt. Die Host-Schnittstelle 202 unterstützt üblicherweise die Übertragung von Daten, Steuersignalen und Taktsignalen. In einer Ausführungsform stellt das Frontend-Modul 312 die einzelne Kommunikationsschnittstelle bereit, die angepasst ist, um mit einer externen Rechenvorrichtung (z. B. Host) für die Steuerung 122 und den Speicherchip 108 der Speichervorrichtung 100 zu kommunizieren.
  • Das Backend-Modul 310 schließt eine Error Correction Code-Engine (ECC-Engine) 324 ein, welche die vom Host empfangenen Datenbytes kodiert und die aus dem nichtflüchtigen Speicherchip 108 gelesenen Datenbytes dekodiert und Fehler korrigiert. Die ECC-Engine 324 kann eine Schaltung einschließen, um Daten zu empfangen und ein oder mehrere Codewörter zu erzeugen, die eine Kodierung der Daten darstellen. Beispielsweise kann die ECC-Engine 324 eingerichtet werden, um eine Reed-Solomon-Kodierung, einen BCH-Code, einen Low Density Parity Check-Code (LDPC-Code), einen oder mehrere andere Fehlererkennungs- und Korrekturcodes oder eine beliebige Kombination davon zu verwenden. Ein Befehlssequenzer 326 erzeugt Befehlssequenzen, wie z. B. Programm- und Löschbefehlssequenzen, die an den nichtflüchtigen Speicherchip 108 zu übertragen sind. Ein Redundant Array of Independent Dies-Modul (RAID-Modul) 328 verwaltet die Generierung einer RAID-Parität und die Wiederherstellung ausgefallener Daten. Die RAID-Parität kann als ein zusätzlicher Grad des Integritätsschutzes für die Daten verwendet werden, die in den nichtflüchtigen Speicher 126 geschrieben werden. In einigen Fällen kann das RAID-Modul 328 Teil der ECC-Engine 324 sein. Es ist zu beachten, dass die RAID-Parität als zusätzlicher Chip oder zusätzliche Chips hinzugefügt werden kann, aber sie kann auch innerhalb des bestehenden Chips hinzugefügt werden, z. B. als zusätzliche Ebene oder zusätzlicher Block oder zusätzliche WLs innerhalb eines Blocks. Die Speicherschnittstelle 204 stellt die Befehlssequenzen an den nichtflüchtigen Speicherchip 108 bereit und empfängt Statusinformationen von dem nichtflüchtigen Speicherchip 108. In einer Ausführungsform kann die Speicherschnittstelle 204 eine Double-Data-Rate-Schnittstelle (DDR-Schnittstelle) sein, z. B. eine Schnittstelle Toggle Mode 200, 400 oder 800. Eine NVM-Steuerschicht 332 steuert den Gesamtbetrieb des Backend-Moduls 310. In einer Ausführungsform ist die NVM-Steuerschicht 322 eine Flash-Steuerschicht.
  • Während des Prozesses des Schreibens von Daten in den Speicher, z. B. in den IS-Speicher 132, können die Daten mit zusätzlichen Bits („Paritätsbits“) kodiert werden, um ein Codewort zu bilden. Bei Auftreten von Rauschen können sich einige der Bits, die das Codewort repräsentieren, ändern und das ursprüngliche Codewort mit Fehlern verfälschen. Wenn das Codewort aus dem Speicher gelesen wird, kann ein Decoder verwendet werden, um die Fehler unter Verwendung einer Fehlerkorrekturcodierung (ECC) zu identifizieren und zu korrigieren. Beispielsweise werden Bose-Chaudhuri-Hocquenghem (BCH) ECC-Schemata in Anwendungen verwendet, in denen Bitfehler tendenziell unkorreliert sind. Die Verlagerung von Daten von dem IS-Speicher 132 in den MS-Speicher 134 kann mit oder ohne ECC-Steuerung erfolgen. Wenn Daten in den IS-Speicher 132 geschrieben werden, kann ein Fehler in ein Codewort eingeführt werden. Wenn das Codewort mit einem Fehler aus dem IS-Speicher 132 in den MS-Speicher 134 verlagert wird, ohne es vorher zu dekodieren und den Fehler zu korrigieren, wie dies bei einem On-Chip-Copy-Vorgang (OCC-Vorgang) geschehen kann, kann sich der Fehler in einen harten Fehler verwandeln (wenn ein Flash-Speicher vom Typ MLC mit der falschen Spannung programmiert wird), was den Durchsatz und die Ausdauer beeinträchtigen kann. Um die Wahrscheinlichkeit und das Ausmaß von harten Fehlern im MS-Speicher 134 zu reduzieren, können Daten, die aus dem IS-Speicher 132 ausgelagert werden, dekodiert und der Fehler korrigiert werden, bevor sie mit Paritätsbits neu kodiert und in den MS-Speicher 134 verlagert (d. h. übertragen) werden. Zum Beispiel kann die Speichersteuerung 122 eine solche Decodierung, Fehlerkorrektur und Neucodierung von Daten durchführen, wobei dieser Prozess als Copy-Through-Controller (CTC) bezeichnet werden kann. Während der Einsatz von CTC harte Fehler reduzieren sollte, wird dadurch die Verlagerungslatenz erhöht.
  • Zusätzliche Komponenten der in 3 dargestellten Speichervorrichtung 100 schließen eine Medienverwaltungsschicht (MML) 338 ein, die den Abnutzungsausgleich von Speicherzellen des nichtflüchtigen Speicherchips 108 durchführt. In einer Ausführungsform ist MML 338 eine Flash-Übersetzungsschicht (FTL). Die Speichervorrichtung 100 schließt auch andere getrennte Komponenten 340 ein, wie z. B. externe elektrische Schnittstellen (z. B. als Teil der Host-Schnittstelle und der Speicherschnittstelle), externen RAM, Widerstände, Kondensatoren oder andere Komponenten, die mit der Steuerung 122 verknüpft sein können. In alternativen Ausführungsformen sind eine oder mehrere der Bitübertragungsschicht-Schnittstellen 322, das RAID-Modul 328, die Medienverwaltungsschicht 338 und die Pufferverwaltungs-/ Bussteuerung 314 optionale Komponenten, die in der Steuerung 122 möglicherweise nicht notwendig sind.
  • Die Flash-Übersetzungsschicht (FTL) oder die Medienverwaltungsschicht (MML) 338 kann als Teil der nichtflüchtigen Speicherverwaltung integriert werden, die Fehler und Verknüpfungen mit dem Host handhaben kann. Insbesondere ist die MML 338 für die Interna der nichtflüchtigen Speicherverwaltung verantwortlich. Insbesondere kann die MML 338 einen Algorithmus in der Firmware der Speichervorrichtung einschließen, der Schreibvorgänge von dem Host in Schreibvorgänge an den Speicher eines Speicherchips 108 übersetzt. MML 338 kann erforderlich sein, weil: 1) der Speicher eine eingeschränkte Belastbarkeit hat; 2) der Speicher nur in Vielfachen von Seiten geschrieben werden kann; und/oder 3) der Speicher nicht geschrieben werden kann, es sei denn, er wird als Block gelöscht. MML 338 versteht diese potenziellen Einschränkungen des Speichers, die für den Host möglicherweise nicht sichtbar sind. Dementsprechend versucht die MML 338, die Schreibvorgänge von dem Host in Schreibvorgänge in den nichtflüchtigen Speicher 126 zu übersetzen, der ein Flash-Speicher sein kann. Die MML 338 verwaltet auch den Prozess für die Abbildung zwischen logischen Adressen von dem Host und physikalischen Adressen auf dem Speicherchip 108. Dies kann das Aktualisieren der L2P-Tabellen und der P2L-Tabellen während der Programmierung, des Löschens und der Ausführung von Verschiebebefehlen einschließen.
  • Die MML 338 wird als eine Verwaltungssteuerung 334 des Zwischenspeichers (IS) einschließend dargestellt, die auch als IS-Verwalter 334 bezeichnet werden kann. Der IS-Verwalter 334 kann die Prioritätsadresstabelle 144 (in 2 dargestellt) zur Verwaltung des IS-Speichers 132 verwenden. Dies kann das Bestimmen einschließen, welche Hostdaten im IS-Speicher 132 und welche Hostdaten im MS-Speicher 134 gespeichert werden sollen. In einer Ausführungsform verlagert der IS-Verwalter 334 Daten von dem IS-Speicher 132 in den MS-Speicher 134, basierend auf den Prioritätsadressen in der Prioritätsadresstabelle 144. In einer Ausführungsform führt der IS-Verwalter 334 die Speicherbereinigung innerhalb des IS-Speichers 132 auf der Grundlage des Inhalts der Prioritätsadresstabelle 144 durch.
  • 4 ist ein Flussdiagramm einer Ausführungsform eines Prozesses 400 zum Betreiben eines nichtflüchtigen Speichers. Der Prozess 400 kann zur Verwaltung des IS-Speichers 132 verwendet werden. Der Prozess 400 könnte zum Teil vom Hostsystem 140 und zum Teil von der Speichersteuerung 122 ausgeführt werden.
  • Schritt 402 schließt ein Hostsystem 140 ein, das der Speichersteuerung 122 Prioritätsadressen (z. B. LBAs) bereitstellt, mit der Angabe, dass die Hostdaten für die Prioritätsadressen mit Priorität im IS-Speicher 132 verbleiben sollen. Wie vorstehend erwähnt, werden Hostdaten, die eine Prioritätsadresse haben, als Prioritätshostdaten bezeichnet. Die Prioritätshostdaten sollen Vorrang vor Nicht-Prioritätshostdaten für den Verbleib im IS-Speicher 132 erhalten. Das heißt, die mit den Prioritätsadressen verknüpften Hostdaten sollen Priorität zum Verbleib im IS-Speicher 132 gegenüber Hostdaten erhalten, die mit einer beliebigen Adresse (z. B. logische Adresse) verknüpft sind, die das Hostsystem nicht als Prioritätsadresse gekennzeichnet hat.
  • Schritt 404 schließt die Speichersteuerung 122 ein, die den Prioritätshostdaten (mit den Prioritätsadressen) Vorrang für den Verbleib im IS-Speicher 132 einräumt. Schritt 404 kann als Reaktion darauf ausgeführt werden, dass die Speichersteuerung 122 die Prioritätsadressen vom Hostsystem 140 erhält. Die Speichersteuerung 122 gibt den Prioritätshostdaten Vorrang vor Nicht-Prioritätshostdaten für den Verbleib im IS-Speicher 132. In einer Ausführungsform schließt Schritt 404 das Flushen von Nicht-Prioritätshostdaten (die keine Prioritätsadresse haben) aus dem IS-Speicher 132 in den MS-Speicher 134 ein. Weitere Details einer Ausführungsform des Flushens von Nicht-Prioritätshostdaten sind in Bezug auf 11 gezeigt und beschrieben.
  • In einer Ausführungsform schließt Schritt 404 das Durchführen der Speicherbereinigung auf der Grundlage der vom Host 140 bereitgestellten Prioritätsadressen ein. Die Speicherbereinigung könnte das Übertragen von Nicht-Prioritätshostdaten aus dem IS-Speicher 132 in den MS-Speicher 134 einschließen. Die Speicherbereinigung könnte ferner das Verschieben von Prioritätshostdaten von einem Ort im IS-Speicher 132 an einen anderen Ort im IS-Speicher 132 einschließen. Weitere Details einer Ausführungsform der Speicherbereinigung sind in Bezug auf 12 gezeigt und beschrieben.
  • 5A veranschaulicht eine Ausführungsform einer Prioritätsadresstabelle 144. In dieser Ausführungsform enthält die Tabelle 144 die Sätze 502(1)-502(6) von Prioritätsadressen. In diesem Beispiel gibt es sechs Sätze 502(1)-502(6), aber es könnte mehr oder weniger geben. Hierin wird das Bezugszeichen „502“ verwendet, um sich auf einen Satz im Allgemeinen ohne Bezugnahme auf einen spezifischen Satz zu beziehen. Hierin enthält ein „Satz“ von Prioritätsadressen eine oder mehrere Adressen (z. B. logische Adressen). Die Prioritätsadressen in einem Satz 502 müssen nicht zusammenhängend sein. Zum Beispiel hat Satz 502(2) eine Lücke zwischen den Prioritätsadressen 2000 und 2200, wobei die Prioritätsadressen im Satz 502(2) nicht zusammenhängend sind. In einer Ausführungsform wird jeder Satz 502 von der Prioritätshostdaten-Anwendung 164 bereitgestellt.
  • Die Ausführungsform der Prioritätsadresstabelle 144 in 5A hat ein Prioritätsfeld 504 für die Priorität 504. Dadurch können verschiedene Sätze 502 in der Tabelle 144 ein unterschiedliches Prioritätsgewicht haben. Ein höherer Wert im Feld 504 gibt an, dass der Satz 502 eine höhere Priorität für den Verbleib im IS-Speicher 132 erhalten soll. Es ist zu beachten, dass jede Adresse (z. B. logische Adresse), die nicht in Tabelle 144 enthalten ist, in einer Ausführungsform eine Priorität von „0“ hat. Somit hat im Beispiel von 5 der Satz 502(6) eine höhere Priorität als jeder andere Satz 502(1)-502(5). Die Sätze 502(2) und 502(5) haben eine niedrigere Priorität als Satz 502(6), aber eine höhere Priorität als die Sätze 502(1), 502(3) und 502(5). Die Sätze 502(1), 502(3) und 502(5) haben eine höhere Priorität als alle Adressen (z. B. logische Adressen), die nicht in Tabelle 144 enthalten sind.
  • Es ist zu beachten, dass das Prioritätsfeld 504 keine Voraussetzung ist. Somit könnte die Tabelle 144 die Sätze 502 enthalten, ohne dass ein Prioritätsgewicht 504 einem bestimmten Satz zugeordnet ist. In diesem Fall kann jeder Satz 502 in Tabelle 144 eine gleiche Priorität für den Verbleib im IS-Speicher 132 haben. In dieser Ausführungsform hat jeder Satz 502 in der Tabelle 144 eine höhere Priorität für den Verbleib im IS-Speicher 132 als jede Adresse (z. B. logische Adresse), die nicht in Tabelle 144 enthalten ist.
  • 5B ist ein Flussdiagramm einer Ausführungsform eines Prozesses 500 zum Betreiben eines nichtflüchtigen Speichers. Einige Schritte des Prozesses 500 werden von einer Prioritätshostdaten-Anwendung 164 ausgeführt. Die Prioritätshostdaten-Anwendung 164 wird auf einem Hostprozessor 150 ausgeführt. Einige Schritte des Prozesses 500 werden durch die Speichersteuerung 122 ausgeführt. Andere Komponenten wie z. B. Betriebssystem-APIs 166, Dateisystem 168 und ein oder mehrere Gerätetreiber 170 können verwendet werden, um die Kommunikation von der Prioritätshostdaten-Anwendung 164 zu der Speichersteuerung 122 zu erleichtern. Es ist jedoch zu beachten, dass es nicht erforderlich ist, Änderungen an den Betriebssystem-APIs 166, dem Dateisystem 168 und dem einen oder mehreren Gerätetreibern 170 vorzunehmen.
  • Schritt 512 schließt das Erkennen durch die Prioritätshostdaten-Anwendung 164 darüber ein, welche Hostdaten mit Priorität im IS-Speicher 132 der Struktur 126 des nichtflüchtigen Speichersystems 100 verbleiben sollen. Die Prioritätshostdaten-Anwendung 164 könnte anhand ihrer eigenen Überwachung erkennen, welche Hostdaten Priorität erhalten sollen. Beispielhafte Ausführungsformen sind in Bezug auf 7 gezeigt und beschrieben. Die Anwendung könnte anhand von Benutzereingaben erkennen, welche Hostdaten Priorität erhalten sollen. Beispielhafte Ausführungsformen sind in Bezug auf 8 gezeigt und beschrieben.
  • Schritt 514 schließt das Zugreifen der Prioritätshostdaten-Anwendung 164 auf einen Satz von Prioritätsadressen für die Hostdaten ein. Die Prioritätshostdaten-Anwendung 164 kann den Satz von Prioritätsadressen für die Hostdaten basierend auf Metadaten erhalten. Wenn es sich beispielsweise bei dem Satz von Prioritätsadressen um eine Datei handelt, kann die Datei Metadaten mit den logischen Adressen für die Datei enthalten.
  • Schritt 516 schließt das Bereitstellen durch die Prioritätshostdaten-Anwendung 164 des Satzes von Prioritätsadressen an die Speichersteuerung 122 ein. Die Prioritätshostdaten-Anwendung 164 stellt der Speichersteuerung 122 auch eine Angabe bereit, dass der Satz von Prioritätsadressen Priorität für den Verbleib im IS-Speicher 122 erhalten soll. Es ist zu beachten, dass die Prioritätshostdaten-Anwendung 164 den Satz von Prioritätsadressen nicht direkt der Speichersteuerung 122 bereitstellen muss. In einer Ausführungsform sendet die Prioritätshostdaten-Anwendung 164 eine Anforderung über eine Betriebssystem-API 166. Andere Komponenten wie ein Dateisystem 168 und ein oder mehrere Gerätetreiber 170 können an der Lieferung des Satzes von Prioritätsadressen an die Speichersteuerung 122 beteiligt sein. Es ist jedoch nicht erforderlich, irgendwelche Änderungen an der O/S-API 166, dem Dateisystem 168 und/oder den Gerätetreibern 170 vorzunehmen, um den Satz von Prioritätsadressen an die Speichersteuerung 122 zu liefern. In einer Ausführungsform schließt Schritt 516 das Bereitstellen des Satzes von Prioritätsadressen für die Speichersteuerung unter Verwendung der In-Band-Kommunikation ein, welche die Kommunikation zwischen einem Gerätetreiber 170 und der Speichersteuerung 122 unter Verwendung eines Speicherzugriffsprotokolls einschließt. Weitere Details einer Ausführungsform des Schrittes 516 sind in Bezug auf 6A gezeigt und beschrieben.
  • Schritt 518 schließt das Speichern des Satzes von Prioritätsadressen in einer Prioritätsadresstabelle 144 durch die Speichersteuerung 122 ein. Optional speichert die Speichersteuerung 122 ein Prioritätsgewicht 504 für den Satz von Prioritätsadressen in der Prioritätsadresstabelle 144.
  • Zwischen Schritt 518 und 520 gibt es eine gestrichelte Linie, um anzuzeigen, dass zwischen diesen beiden Schritten etwas Zeit vergehen kann. Es ist zu beachten, dass die Schritte 512 bis 518 für andere Sätze logischer Adressen durchgeführt werden können. Daher können im Laufe der Zeit weitere Sätze 502 von Prioritätsadressen zur Prioritätsadresstabelle 144 hinzugefügt werden. Schritt 520 schließt das Verwalten durch die Speichersteuerung 122 basierend auf den Prioritätsadressen in der Prioritätsadresstabelle 144 ein, ob Hostdaten im IS-Speicher 132 verbleiben oder in den MS-Speicher 134 verlagert werden.
  • Schritt 520 kann das Bestimmen einschließen, welche Hostdaten basierend auf der Prioritätsadresstabelle 144 vom IS-Speicher 132 in den MS-Speicher 134 zu flushen (oder zu verlagern) sind. Weitere Details einer Ausführungsform des Flushens von Daten aus dem IS-Speicher 132 in den MS-Speicher 134 basierend auf der Prioritätsadresstabelle 144 sind in Bezug auf 11 gezeigt und beschrieben. Schritt 520 kann das Durchführen der Speicherbereinigung basierend auf der Prioritätsadresstabelle 144 einschließen. Weitere Details einer Ausführungsform des Durchführens einer Speicherbereinigung basierend auf der Prioritätsadresstabelle 144 sind in Bezug auf 12 gezeigt und beschrieben.
  • 6A ist ein Flussdiagramm einer Ausführungsform eines Prozesses 600 einer Prioritätshostdaten-Anwendung 164, die einen Satz Prioritätsadressen an die Speichersteuerung 122 mit der Angabe bereitstellt, dass der Satz 502 Priorität für den Verbleib im IS-Speicher 132 erhalten soll. Prozess 600 ist eine Ausführungsform von Schritt 516 des Prozesses 500. Prozess 600 kann von dem Hostsystem 140 ausgeführt werden.
  • Schritt 602 schließt das Erstellen einer Anforderung durch die Prioritätshostdaten-Anwendung 164 ein, damit die Speichersteuerung die logische Adresstabelle 144 ändert. Die Anforderung enthält den Satz von Prioritätsadressen. Die Anforderung kann auch ein Prioritätsgewicht für den Satz von Prioritätsadressen enthalten.
  • In Schritt 604 ruft die Prioritätshostdaten-Anwendung 164 eine Anwendungsprogrammierschnittstelle (API) des Betriebssystems (O/S) auf, um das Senden der Anforderung an die Speichersteuerung 122 anzuweisen.
  • Schritt 606 schließt das Verknüpfen der O/S-API 166 mit dem Dateisystem 168 ein, um die Anfrage weiterzuleiten.
  • Schritt 608 schließt das Anweisen durch das Dateisystem 168 eines Gerätetreibers 170 ein, die Anforderung an die Speichersteuerung 122 zu senden. Der Gerätetreiber 170 kann selbst aus mehr als einem Gerätetreiber bestehen. Beispielsweise kann ein Gerätetreiber höherer Ebene mit dem Dateisystem verknüpft werden, während ein Gerätetreiber niedrigerer Ebene mit der Speichersteuerung 122 verknüpft werden kann. In einer Ausführungsform ist der Gerätetreiber niedrigerer Ebene eingerichtet, um die Hostseite eines Speicherzugriffsprotokolls zu implementieren. Beispielsweise könnte der Gerätetreiber niedrigerer Ebene die Hostseite eines NMVe-Treibers, AHCI-Treibers, SD-Treibers, USB-Treibers, MMC-Treibers oder eMMC-Treibers implementieren. Diese Treiber niedrigerer Ebene könnten in einigen Fällen als Host-Controller bezeichnet werden. Beispielsweise könnte der Gerätetreiber niedrigerer Ebene als NVMe-Host-Controller, AHCI-Host-Controller usw. bezeichnet werden. Es ist zu beachten, dass die Speichersteuerung 122 über eine entsprechende Steuerung zum Implementieren der Seite des Speichersystems 100 des Speicherzugriffsprotokolls verfügt.
  • Schritt 610 schließt das Senden der Anforderung vom Gerätetreiber 170 an die Speichersteuerung 122 ein. Der Gerätetreiber 170 kann die Anforderung in Übereinstimmung mit einem Speicherzugriffsprotokoll (z. B. NMVe, AHCI, SD, USB, MMC, eMMC) senden. Der Gerätetreiber in Schritt 610 kann als Host-Controller bezeichnet werden.
  • Eine Vielzahl von Techniken kann verwendet werden, um der Speichersteuerung 122 den Satz von Prioritätsadressen bereitzustellen. Eine Möglichkeit besteht darin, dass der Gerätetreiber eine Schreibanforderung sendet, um auf eine vorher festgelegte reservierte logische Adresse (z. B. LBA) zu schreiben. Die reservierte logische Adresse kann diejenige sein, die der Speichersteuerung 122 anzeigt, dass es sich dabei um eine spezielle Schreibanforderung zum Aktualisieren der Prioritätsadresstabelle 144 und nicht um eine Anforderung zum Schreiben von Hostdaten 130 in die Struktur 126 handelt. Die Daten für die Schreibanforderung können den Satz von Prioritätsadressen enthalten. Die Daten für die Schreibanforderung können auch ein Prioritätsgewicht für den Satz von Prioritätsadressen enthalten. Es ist zu beachten, dass diese Technik keine Modifikationen an dem Gerätetreiber erfordert. Das heißt, aus Sicht des Gerätetreibers handelt es sich einfach um das Anfordern an die Speichersteuerung 122, auf eine logische Adresse zu schreiben, die dem Gerätetreiber bereitgestellt wurde. Andere Techniken können verwendet werden, um der Speichersteuerung 122 den Satz von Prioritätsadressen bereitzustellen.
  • 6B ist ein Flussdiagramm einer Ausführungsform eines Prozesses 650 einer Speichersteuerung 122, die eine Prioritätsadresstabelle 144 aktualisiert. Prozess 650 kann in Verbindung mit Prozess 600 verwendet werden. Das heißt, die Speichersteuerung 122 kann Prozess 650 als Reaktion auf das Empfangen der Anforderung in einer Ausführungsform von Prozess 600 durchführen.
  • Schritt 652 schließt das Empfangen durch die Speichersteuerung 122 einer Anforderung von einem Gerätetreiber (z. B. Host-Controller) ein. Wie erwähnt, könnte diese Anforderung diejenige aus Schritt 610 von Prozess 600 sein. Es ist zu beachten, dass Prozess 650 nicht auf den Einsatz mit Prozess 600 beschränkt ist. Somit hätte die in Schritt 652 von der Speichersteuerung 122 empfangene Anforderung mit einer anderen als der in Prozess 600 beschriebenen Technik gesendet werden können.
  • Schritt 654 schließt das Bestimmen durch die Speichersteuerung 122 ein, dass diese Anforderung eine Anforderung zum Aktualisieren der Prioritätsadresstabelle 144 ist. In einer Ausführungsform macht die Speichersteuerung 122 diese Bestimmung als Reaktion darauf, dass es sich bei der Anforderung um ein Schreiben an eine reservierte logische Adresse handelt. Das heißt, die Speichersteuerung 122 kann eingerichtet werden, um Anforderungen zum Schreiben an eine bestimmte reservierte logische Adresse als eine Anforderung zum Aktualisieren der Prioritätsadresstabelle 144 zu interpretieren. Es können jedoch auch andere Techniken verwendet werden.
  • Schritt 656 schließt das Extrahieren durch die Speichersteuerung 122 eines Satzes von Prioritätsadressen aus der Anforderung ein. In einer Ausführungsform gibt die Schreibanforderung sowohl die zu schreibenden Daten als auch eine Datenlänge an. Die Schreibanforderung kann die Daten selbst enthalten oder einen Zeiger auf die Daten enthalten. Somit kann die Speichersteuerung 122 den Satz von Prioritätsadressen aus einer Speicherstelle extrahieren, welche die Daten für die Schreibanforderung enthält.
  • Schritt 658 schließt das Schreiben durch den Speichersteuerung 122 des Satzes 502 von Prioritätsadressen in die Prioritätsadresstabelle 144 ein. Optional schreibt die Speichersteuerung 122 ein Prioritätsgewicht 504 für den Satz 502 in die Prioritätsadresstabelle 144.
  • 7 ist ein Flussdiagramm eines Prozesses 700 einer Prioritätshostdaten-Anwendung 164 zum Lernen, welche Hostdaten aufgrund einer Benutzerauswahl Priorität erhalten sollen, um im IS-Speicher 132 zu verbleiben. Prozess 700 ist eine Ausführungsform von Schritt 512 des Prozesses 500.
  • Schritt 702 schließt das Bereitstellen durch die Prioritätshostdaten-Anwendung 164 einer Benutzerschnittstelle (UI) ein, mit der ein Benutzer festlegen kann, welche Hostdaten 130 Priorität für den Verbleib im IS-Speicher 132 erhalten sollen. 8A veranschaulicht eine Ausführungsform einer UI 800, die es einem Benutzer ermöglicht, Prioritätshostdaten zu spezifizieren. Die UI 800 listet eine Reihe von Computerprogrammen (oder Anwendungen) auf. Die UI 800 verfügt neben jeder Anwendung über ein Prioritätsauswahlfeld 802, mit dem der Benutzer Anwendungen auswählen/entfernen kann. 8B stellt eine Ausführungsform einer UI 850 dar, die es einem Benutzer ermöglicht, Prioritätshostdaten zusammen mit einem Prioritätsgewicht zu spezifizieren. Die UI 850 listet auch eine Reihe von Anwendungen mit einem Prioritätsauswahlfeld 802 neben jeder Anwendung auf, mit dem der Benutzer die Anwendung für die Prioritätsspeicherung auswählen kann. Die UI 850 hat neben jeder Anwendung zudem ein Prioritätsgewichtsfeld 804, damit der Benutzer ein Prioritätsgewicht für Anwendungen angeben kann, die im Prioritätsauswahlfeld 802 ausgewählt wurden.
  • Schritt 704 schließt das Empfangen durch die Prioritätshostdaten-Anwendung 164 einer Auswahl in der UI ein. In Bezug auf die UI 800 in 8A vermerkt die Prioritätshostdaten-Anwendung 164, welche Prioritätsauswahlfelder 802 markiert und nicht markiert sind. Ebenso in Bezug auf die UI 850 in 8B vermerkt die Prioritätshostdaten-Anwendung 164, welche Prioritätsauswahlfelder 802 markiert und nicht markiert sind.
  • Schritt 706 schließt das Empfangen durch die Prioritätshostdaten-Anwendung 164 einer Auswahl eines Prioritätsgewichts ein. Schritt 706 ist optional. In Bezug auf die UI 850 in 8B vermerkt die Prioritätsadresse den Wert in den Prioritätsgewichtsfeldern 804.
  • Schritt 708 schließt das Speichern von Informationen durch die Prioritätshostdaten-Anwendung 164 bezüglich der Auswahlen in Schritt 704 und/oder 706 ein. Somit bezieht sich das „Vermerken“ einer Auswahl eines Prioritätsauswahlfeldes 802 oder eines Wertes in einem Prioritätsgewichtsfeld 804 auf das Speichern von Informationen in einem nicht transitorischen Speicher, wie z. B. dem Host-Speicher 160.
  • 9 ist ein Flussdiagramm eines Prozesses 900 einer Prioritätshostdaten-Anwendung 164 zum Bestimmen, welche Hostdaten 130 Priorität erhalten sollen, um im IS-Speicher 132 zu verbleiben. Prozess 900 ist eine Ausführungsform von Schritt 512 des Prozesses 500.
  • Schritt 902 schließt das Laden der Prioritätshostdaten-Anwendung 164 aus dem nicht transitorischen Speicher in den Hostspeicher 160 beim Einschalten des Hostsystems 140 ein. Der nicht transitorische Speicher könnte beispielsweise ein nichtflüchtiger Speicher in der Struktur 126 auf einem Speicherchip 108 im Speichersystem 100 sein. Jedoch könnte der nicht transitorische Speicher anderswo angeordnet sein.
  • Schritt 904 schließt das Überwachen durch die Prioritätshostdaten-Anwendung 164 der Nutzung von Hostdaten ein. Eine Vielzahl von Techniken kann verwendet werden, um die Nutzung von Hostdaten zu überwachen. Die Überwachungstechniken sind nicht kritisch. In einer Ausführungsform überwacht die Prioritätshostdaten-Anwendung 164, auf welche Dateien und/oder Programme von der nichtflüchtigen Speichervorrichtung 100 aus zugegriffen wird. In einer Ausführungsform überwacht die Prioritätshostdaten-Anwendung 164, welche Dateien und/oder Programme in den Hostspeicher 160 geladen werden.
  • Schritt 906 schließt das Auswählen durch die Prioritätshostdaten-Anwendung 164 von Hostdaten für die Prioritätsspeicherung im IS-Speicher 132 basierend auf der Nutzung der Hostdaten ein. Schritt 906 könnte das Hinzufügen eines Satzes von Prioritätsadressen zu einem gespeicherten Datensatz von Prioritätshostdaten einschließen. Somit ist zu beachten, dass die Prioritätshostdaten-Anwendung 164 eine Prioritätsadresstabelle pflegen könnte, die ähnlich der von einer Ausführungsform der Speichersteuerung 122 gepflegten Tabelle 144 ist. Schritt 906 könnte das Entfernen eines Satzes von Prioritätsadressen aus einem Datensatz mit Prioritätshostdaten einschließen.
  • 10A ist ein Flussdiagramm einer Ausführungsform eines Prozesses 1000 einer Speichersteuerung 122, die den IS-Speicher 132 basierend auf einer Prioritätsadresstabelle 144 verwaltet. Schritt 1002 schließt einen Host-Controller ein, welcher der Speichersteuerung 122 eine Schreibanforderung bereitstellt. Die Schreibanforderung spezifiziert eine oder mehrere logische Adressen in einer Ausführungsform. Beispielsweise könnte die Schreibanforderung eine logische Startblockadresse (LBA) und eine Länge der zu schreibenden Daten haben. Die Länge kann in einer Anzahl von logischen Blöcken angegeben werden. Die Größe eines logischen Blocks wird durch den Host-Controller in einer Ausführungsform spezifiziert. Der Host-Controller kann die Größe eines logischen Blocks während der Initialisierung der Speichersteuerung 122 spezifizieren. Schritt 1002 kann auch das Bereitstellen von Hostdaten durch den Host-Controller einschließen, die im nichtflüchtigen Speichersystem 100 für die Schreibanforderung gespeichert werden. Die Hostdaten könnten der Speichersteuerung 122 vom Host-Controller bereitgestellt werden, indem dieser einen oder mehrere Hostdatenpuffer im Hostspeicher 160 spezifiziert, der die Hostdaten speichert. Als ein Beispiel könnte der Host-Controller den Schreibbefehl in eine Befehlswarteschlange stellen (die sich im Hostspeicher 160 oder im RAM 122b des Speichersystems 100 befinden könnte). Der Schreibbefehl könnte einen Zeiger auf einen Datenpuffer im Hostspeicher 160 sowie einen Zeiger auf Datenpuffer-Zeiger einschließen. Beispielsweise kann der Host-Controller im NVMe-Protokoll einen Zeiger in einen Schreibbefehl einschließen, wobei der Zeiger auf eine Liste von Datenpuffer-Zeigern zeigt. Jeder Datenpuffer-Zeiger kann auf einen Datenpuffer im Hostspeicher 160 zeigen. Es gibt viele andere Alternativen für das Hostsystem, um der Speichersteuerung 122 Hostdaten bereitzustellen.
  • Schritt 1004 schließt das Schreiben der Hostdaten in den IS-Speicher 132 durch die Speichersteuerung 122 ein. Es ist zu beachten, dass in dieser Ausführungsform sowohl Prioritätshostdaten als auch Nicht-Prioritätshostdaten in den IS-Speicher 132 geschrieben werden können. Wie jedoch nachstehend erörtert wird, ist es nicht erforderlich, die Nicht-Prioritätshostdaten im IS-Speicher 132 als Reaktion auf eine Anforderung vom Host 140 zum Speichern der Nicht-Prioritätshostdaten auf der nichtflüchtigen Speichervorrichtung 100 zu speichern.
  • Die gestrichelte Linie zwischen Schritt 1004 und 1006 zeigt an, dass die Speichersteuerung 122 zwischen diesen Schritten andere Aufgaben ausführen kann. Schritt 1006 schließt das Flushen durch die Speichersteuerung der Nicht-Prioritätshostdaten vom IS-Speicher 132 in den MS-Speicher 134 ein. Das Flushen kann dadurch ausgelöst werden, dass die Menge des freien IS-Speichers 132 unter einen Schwellenwert fällt. Es ist zu beachten, dass Schritt 1006 auch das Aufbewahren von Prioritätshostdaten im IS-Speicher 132 einschließen kann. Es ist zu beachten, dass die Entscheidung darüber, welche Hostdaten im IS-Speicher 132 zu behalten und welche in den MS-Speicher 134 zu verlagern sind, in einer Ausführungsform auf den Prioritätsadressen basiert. Somit können im Gegensatz zu Techniken, die „ältere“ Hostdaten möglicherweise verlagern, solche „älteren“ Daten in Abhängigkeit von ihrer Priorität im IS-Speicher 132 verbleiben.
  • Es ist nicht erforderlich, dass die Nicht-Prioritätshostdaten im IS-Speicher 132 als Reaktion auf eine Anforderung vom Host 140 zum Speichern der Nicht-Prioritätshostdaten gespeichert werden. 10B ist ein Flussdiagramm einer Ausführungsform eines Prozesses 1050 einer Speichersteuerung 122, die den IS-Speicher 132 basierend auf einer Prioritätsadresstabelle 144 verwaltet, in der Nicht-Prioritätshostdaten direkt in den MS-Speicher 132 geschrieben werden können (unter Umgehung des IS-Speichers 132).
  • Schritt 1002 schließt einen Host-Controller ein, welcher der Speichersteuerung 122 eine Schreibanforderung bereitstellt. Schritt 1052 ist eine Bestimmung der Menge an freiem Speicherplatz im IS-Speicher 132. Wenn genügend Platz vorhanden ist, können die Hostdaten in Schritt 1054 in den IS-Speicher geschrieben werden.
  • Schritt 1056 schließt das Überprüfen der Prioritätsadresstabelle 144 durch die Speichersteuerung 122 in Bezug auf die Schreibanforderung ein. Wie erwähnt, hat die Schreibanforderung in einer Ausführungsform eine logische Startadresse und eine Länge. Somit spezifiziert die Schreibanforderung in Wirklichkeit einen Bereich von logischen Adressen (z. B. LBA) in einer Ausführungsform. Die Speichersteuerung 122 bestimmt in einer Ausführungsform von Schritt 1058, ob eine der logischen Adressen in diesem Bereich in der Prioritätsadresstabelle 144 enthalten ist. Die Speichersteuerung 122 kann Schritt 1060 für logische Adressen ausführen, die in Tabelle 144 gefunden werden. Die Speichersteuerung 122 kann Schritt 1062 für logische Adressen ausführen, die nicht in Tabelle 144 gefunden werden.
  • Schritt 1060 schließt das Schreiben der Prioritätshostdaten für die Prioritätsadresse in den IS-Speicher 132 durch die Speichersteuerung 122 ein.
  • Schritt 1062 schließt das Schreiben durch die Speichersteuerung 122 der Nicht-Prioritätshostdaten für die Nicht-Prioritätsadresse in den MS-Speicher 134 ein.
  • Es ist zu beachten, dass für eine bestimmte Schreibanforderung in einer Ausführungsform vom Host 140 keine, einige oder alle Hostdaten in den MS-Speicher 134 geschrieben werden könnten, ohne in den IS-Speicher 132 geschrieben zu werden. Für den Fall, dass ein Teil aller Hostdaten in den MS-Speicher 134 geschrieben wird, ohne in den IS-Speicher 132 geschrieben zu werden, kann dies Platz im IS-Speicher 132 sparen, wodurch die Notwendigkeit einer Verlagerung von Prioritätshostdaten aus dem IS-Speicher 132 vermieden werden könnte. Es ist zu beachten, dass einige herkömmliche FIFO-Techniken Hostdaten verlagern könnten, um Platz für Hostdaten zu schaffen, die neu in das Speichersystem 100 geschrieben werden.
  • Eine Alternative zum Prozess 1050 besteht darin, Nicht-Prioritätshostdaten einfach in den MS-Speicher 134 zu schreiben, selbst wenn im IS-Speicher 132 genügend Platz vorhanden ist. Da ein Schreibvorgang in den MS-Speicher 134 länger dauern kann als ein Schreibvorgang in den IS-Speicher 132, könnte diese Option nur dann durchgeführt werden, wenn das direkte Schreiben der Nicht-Prioritätshostdaten in den MS-Speicher 134 keine signifikanten negativen Auswirkungen auf den Schreibdurchsatz hat (z. B. die Menge der pro Zeiteinheit geschriebenen Daten).
  • 11 ist ein Flussdiagramm einer Ausführungsform eines Prozesses 1100 einer Verlagerung (oder Flushing) basierend auf Prioritätsadressen. Prozess 1100 ist eine Ausführungsform von Schritt 404 des Prozesses 400. Prozess 1100 ist eine Ausführungsform von Schritt 520 des Prozesses 500. Prozess 1100 kann während einer Ausführungsform von Schritt 1006 von Prozess 1000 durchgeführt werden. Prozess 1100 kann als Reaktion auf das Bestimmen der Speichersteuerung 122 durchgeführt werden, dass der IS-Speicher 132 geflusht werden soll. Dies kann beispielsweise erfolgen, wenn der IS-Speicher 132 einen bestimmten Prozentsatz seiner Kapazität erreicht hat. Prozess 1100 beschreibt das Verarbeiten eines Datenblocks im IS-Speicher 132. Der Datenblock hat eine logische Adresse, z. B. eine logische Blockadresse. In einer Ausführungsform ist ein Datenblock eine Einheit von Daten, die mit einer logischen Adresse (z. B. LBA) verbunden ist. Der Datenblock kann eine beliebige Größe haben. Es ist zu beachten, dass ein Datenblock ein anderes Konzept als ein „Löschblock“ ist, der nachstehend im Zusammenhang mit der Speicherbereinigung erläutert wird. Ein Löschblock wird hierin als eine Einheit von Daten definiert, die zusammen gelöscht werden. Der Löschblock kann von beliebiger Größe sein. In einigen Fällen gibt es mehrere Datenblöcke pro Löschblock.
  • Schritt 1102 schließt das Zugreifen der Speichersteuerung 122 auf die logische Adresse (z. B. LBA) eines Datenblocks im IS-Speicher 132 ein.
  • Schritt 1104 schließt eine Bestimmung ein, ob die logische Adresse in der Prioritätsadresstabelle 144 steht. Schritt 1106 wird durchgeführt, wenn die logische Adresse nicht in der Prioritätsadressentabelle 144 ist. Schritt 1106 schließt das Feststellen ein, dass die Hostdaten für diesen Datenblock in den MS-Speicher 134 zu übertragen sind. Somit wurden diese Hostdaten als Nicht-Prioritätshostdaten identifiziert.
  • Schritt 1108 wird durchgeführt, wenn die logische Adresse in der Prioritätsadressentabelle 144 ist. Schritt 1108 schließt das Feststellen ein, dass die Hostdaten für diesen Datenblock im IS-Speicher 132 verbleiben sollen. Somit wurden diese Hostdaten als Prioritätshostdaten identifiziert.
  • Schritt 1110 schließt eine Bestimmung ein, ob es mehr Datenblöcke im IS-Speicher 132 zu berücksichtigen gibt. Ist dies der Fall, wird in Schritt 1102 (und in weiteren Schritten) ein weiterer Datenblock berücksichtigt. Somit kann die Speichersteuerung 122 eine Liste von Hostdaten erstellen, die in den MS-Speicher 134 verlagert werden sollen, indem sie die Schritte 1102 bis 1108 für verschiedene Datenblöcke im IS-Speicher 132 ausführt. Das heißt, die Speichersteuerung 122 kann eine Liste von Nicht-Prioritätsdaten (sowie den Speicherort im IS-Speicher 132) erstellen. Der Speicherort könnte anhand der logischen Adresse oder der physischen Adresse identifiziert werden.
  • Wenn alle Datenblöcke im IS-Speicher 132 verarbeitet sind, überträgt die Speichersteuerung 122 Nicht-Prioritätshostdaten, die in den MS-Speicher 132 verlagert werden sollen. Es ist zu beachten, dass Schritt 1112 vor der Verarbeitung aller Datenblöcke im IS-Speicher 132 durchgeführt werden könnte. Es ist zu beachten, dass Prozess 1100 Prioritätshostdaten im IS-Speicher 132 vorrangig vor Nicht-Prioritätshostdaten behält, selbst wenn die Nicht-Prioritätshostdaten „neuer“ als die Prioritätshostdaten sind. Dies kann die Leistung verbessern, indem beispielsweise die Prioritätshostdaten schneller gelesen werden können (im Vergleich dazu, wenn die Prioritätshostdaten in den MS-Speicher 134 verlagert worden wären).
  • 12 ist ein Flussdiagramm einer Ausführungsform eines Prozesses 1200 einer Speichersteuerung 122, die eine Speicherbereinigung auf der Grundlage einer Prioritätsadresstabelle 144 durchführt. Der Prozess 1200 ist eine Ausführungsform von Schritt 404 des Prozesses 400. Der Prozess 1200 ist eine Ausführungsform von Schritt 520 des Prozesses 500.
  • Schritt 1202 schließt das Auswählen eines potenziellen Opferblocks durch die Speichersteuerung 122 ein. Ein „Opferblock“ ist ein Block von Speicherzellen, der bei der Speicherbereinigung gelöscht wird. Ein „potenzieller Opferblock“ ist ein Block, der bei der Speicherbereinigung gelöscht werden kann oder nicht. Es ist zu beachten, dass der potentielle Opferblock sowohl Prioritätshostdaten als auch Nicht-Prioritätshostdaten enthalten kann. In einigen Fällen kann der potenzielle Opferblock zwar Prioritätshostdaten, aber keine Nicht-Prioritätshostdaten enthalten. In einigen Fällen kann der potenzielle Opferblock zwar Nicht-Prioritätshostdaten, aber keine Prioritätshostdaten enthalten. In einer Ausführungsform werden bei der Speicherbereinigung nur Blöcke mit Nicht-Prioritätsdaten gelöscht. Das heißt, ein potenzieller Opferblock mit Prioritätshostdaten, aber ohne Nicht-Prioritätshostdaten wird in einer Ausführungsform eines Speicherbereinigungsprozesses nicht gelöscht. Der potenzielle Opferblock ist ein „Löschblock“, in einer Ausführungsform. Ein Löschblock ist ein Block, der als eine Einheit gelöscht wird.
  • Schritt 1204 ist eine Bestimmung, ob Nicht-Prioritätshostdaten im potenziellen Opferblock vorhanden sind. Die Speichersteuerung 122 vergleicht die logischen Adressen der Hostdaten im potenziellen Opferblock mit der logischen Adresstabelle 144, um diese Bestimmung vorzunehmen. Wenn es im potenziellen Opferblock keine Nicht-Prioritätshostdaten gibt, wird die Verarbeitung dieses potenziellen Opferblocks in einer Ausführungsform abgeschlossen. Daher kann die Speichersteuerung 122 in Schritt 1202 einen weiteren potenziellen Opferblock auswählen.
  • In dem Fall, dass der potenzielle Opferblock Nicht-Prioritätshostdaten enthält, wird Schritt 1206 ausgeführt. Bei Ausführung von Schritt 1206 wird der Block nicht mehr als „potenzieller Opferblock“, sondern als „Opferblock“ bezeichnet. Schritt 1206 schließt das Übertragen durch die Speichersteuerung 122 von Nicht-Prioritätshostdaten vom Opferblock in den MS-Speicher 132 ein. Es ist zu beachten, dass die Speichersteuerung 122 Nicht-Prioritätsdaten von mehr als einem Opferblock sammeln könnte, bevor die Nicht-Prioritätsdaten in den MS-Speicher 132 übertragen werden.
  • Schritt 1208 schließt eine Bestimmung ein, ob der Opferblock Prioritätshostdaten enthält. Die Speichersteuerung 122 vergleicht die logischen Adressen der Hostdaten im Opferblock mit der logischen Adresstabelle 144, um diese Bestimmung vorzunehmen.
  • Wenn der Opferblock Prioritätshostdaten enthält, wechselt die Steuerung zu Schritt 1210. Schritt 1210 schließt das Übertragen durch die Speichersteuerung 122 von Prioritätshostdaten vom Opferblock in einen aktiven Block ein. Es ist möglich, dass der aktive Block keine gültigen Daten vor dem Start des Speicherbereinigungsprozesses enthielt, aber dies ist keine Anforderung. Ein „aktiver Block“ ist ein Block, der nach dem Speicherbereinigungsprozess gültige Daten enthält. Der aktive Block ist ein Löschblock, in einer Ausführungsform. Nach Schritt 1210 wechselt die Steuerung zu Schritt 1212, um den Opferblock zu löschen.
  • Zurückkehrend zu Erläuterung von Schritt 1208, wenn es im Opferblock keine Prioritätshostdaten gibt, wechselt die Steuerung auch zu Schritt 1212, um den Opferblock zu löschen. Wie vorstehend erwähnt, enthält der Opferblock möglicherweise keine Prioritätshostdaten, sodass in diesem Fall Schritt 1210 für diesen Opferblock nicht ausgeführt werden würde.
  • Zurückkehrend zur Erläuterung von Schritt 1212, kann der Opferblock nach dem Löschen des Opferblocks in einen Pool von „freien Blöcken“ zurückgeführt werden. Wenn die Speichersteuerung 122 neue Hostdaten in den IS-Speicher 132 schreiben möchte, kann die Speichersteuerung 122 einen der freien Blöcke auswählen.
  • Schritt 1214 ist eine Bestimmung, ob genügend freie Blöcke im IS-Speicher 132 vorhanden sind. Wenn ja, kann der Prozess enden. Wenn nicht genügend freie Blöcke vorhanden sind, kann die Speichersteuerung 122 in Schritt 1202 einen anderen potenziellen Opferblock auswählen.
  • Eine erste hierin offenbarte Ausführungsform schließt eine Vorrichtung ein, aufweisend: nichtflüchtige Speicherzellen; und eine Speichersteuerung, die mit den nichtflüchtigen Speicherzellen gekoppelt ist. Die Speichersteuerung ist eingerichtet zum: Bezeichnen einer ersten Gruppe der nichtflüchtigen Speicherzellen als Zwischenspeicher für Hostdaten aus einem Hostsystem und einer zweiten Gruppe der nichtflüchtigen Speicherzellen als Hauptspeicher für Hostdaten aus dem Hostsystem. Der Zwischenspeicher hat eine niedrigere Leselatenz als eine Leselatenz des Hauptspeichers. Die Speichersteuerung ist eingerichtet, um Prioritätsadressen von dem Hostsystem zum Identifizieren von Hostdaten zu empfangen, die mit Priorität im Zwischenspeicher verbleiben sollen. Die Speichersteuerung ist eingerichtet, um den Hostdaten mit den Prioritätsadressen Priorität für den Verbleib im Zwischenspeicher zu geben.
  • In einer zweiten Ausführungsform und zur Förderung der ersten Ausführungsform ist die Speichersteuerung ferner zum Verwalten eingerichtet, ob die Hostdaten in der ersten Gruppe von nichtflüchtigen Speicherzellen verbleiben oder auf der Grundlage der Prioritätsadressen zu der zweiten Gruppe von nichtflüchtigen Speicherzellen verlagert werden.
  • In einer dritten Ausführungsform und zur Förderung der ersten oder zweiten Ausführungsformen ist die Speichersteuerung ferner eingerichtet, um Hostdaten zur Verlagerung aus dem Zwischenspeicher in den Hauptspeicher basierend auf den Prioritätsadressen auszuwählen, einschließlich des Verlagerns von Hostdaten mit einer anderen Adresse als eine der Prioritätsadressen aus der ersten Gruppe der nichtflüchtigen Speicherzellen in die zweite Gruppe der nichtflüchtigen Speicherzellen.
  • In einer vierten Ausführungsform und zur Förderung jeder der ersten bis dritten Ausführungsformen ist die Speichersteuerung ferner eingerichtet, um eine Speicherbereinigung innerhalb der ersten Gruppe der nichtflüchtigen Speicherzellen basierend auf den Prioritätsadressen durchzuführen, einschließlich der Speichersteuerung, die eingerichtet ist, um Hostdaten mit den Prioritätsadressen im Zwischenspeicher zu halten und Hostdaten, die keine der Prioritätsadressen haben, in den Hauptspeicher zu verlagern.
  • In einer fünften Ausführungsform und zur Förderung jeder beliebigen der ersten bis vierten Ausführungsformen ist die Speichersteuerung ferner eingerichtet zum: Programmieren der ersten Gruppe der nichtflüchtigen Speicherzellen auf ein einziges Bit pro Speicherzelle; und Programmieren der zweiten Gruppe der nichtflüchtigen Speicherzellen auf mehrere Bits pro Speicherzelle.
  • In einer sechsten Ausführungsform und zur Förderung jeder beliebigen der ersten bis fünften Ausführungsformen weist die Vorrichtung weiterhin das Hostsystem mit nicht transitorischem Speicher mit einer darin gespeicherten Anwendung auf. Das Hostsystem weist weiterhin einen Prozessor auf, der mit dem nicht transitorischen Speicher kommuniziert. Die Anwendung stellt bei Ausführung auf dem Prozessor eine Anforderung an eine Anwendungsprogrammierschnittstelle (API) des Betriebssystems, um der Speichersteuerung die Prioritätsadressen mit der Angabe bereitzustellen, dass die Hostdaten für die Prioritätsadressen Vorrang für den Verbleib im Zwischenspeicher erhalten sollen.
  • In einer siebten Ausführungsform und zur Förderung der sechsten Ausführungsform, wenn die Anwendung auf dem Prozessor ausgeführt wird: überwacht sie der Verwendung von Hostdaten; und wählt Hostdaten für die Prioritätsspeicherung in der ersten Gruppe der nichtflüchtigen Speicherzellen basierend auf der Verwendung von Hostdaten aus.
  • In einer achten Ausführungsform und zur Förderung der sechsten oder siebten Ausführungsformen, wenn die Anwendung auf dem Prozessor ausgeführt wird: stellt sie eine Benutzerschnittstelle bereit, welche die Auswahl von Hostdaten für die Prioritätsspeicherung im Zwischenspeicher ermöglicht; empfängt eine Auswahl von Hostdaten in der Benutzerschnittstelle; greift auf einen Satz von Adressen für die in der Benutzerschnittstelle ausgewählten Hostdaten zu; und stellt der Speichersteuerung den Satz von Adressen für die ausgewählten Hostdaten als einen Satz der Prioritätsadressen der Hostdaten bereit.
  • In einer neunten Ausführungsform und zur Förderung jeder beliebigen der sechsten bis achten Ausführungsformen, wenn die Anwendung auf dem Prozessor ausgeführt wird: stellt sie eine Benutzerschnittstelle bereit, welche die Auswahl eines Prioritätsgewichtes für eine Datei ermöglicht, wobei das Prioritätsgewicht ein aus mindestens drei möglichen Gewichten ausgewählter Wert ist; empfängt eine Auswahl in der Benutzerschnittstelle eines Prioritätsgewichtes für eine ausgewählte Datei; greift auf einen Satz von Adressen für die ausgewählte Datei zu, wobei der Satz von Adressen ein Satz der Prioritätsadressen ist; und stellt der Speichersteuerung den Adressensatz als einen Satz von Prioritätsadressen der Hostdaten mit dem Prioritätsgewicht mit einer Angabe bereit, dass der Adressensatz für die ausgewählte Datei eine Priorität haben soll, um gemäß dem Prioritätsgewicht in der ersten Gruppe der nichtflüchtigen Speicherzellen zu verbleiben.
  • In einer zehnten Ausführungsform und zur Förderung jeder beliebigen der sechsten bis neunten Ausführungsformen weist die Vorrichtung weiterhin auf: eine Kommunikationsschnittstelle, die mit der Speichersteuerung gekoppelt ist; und einen Gerätetreiber, der mit der Kommunikationsschnittstelle gekoppelt ist. Der Gerätetreiber ist eingerichtet, um mit der Speichersteuerung unter Verwendung eines nichtflüchtigen Speicherzugriffsprotokolls zu kommunizieren. Wenn die Anwendung auf dem Prozessor ausgeführt wird, stellt sie der Speichersteuerung die Prioritätsadressen unter Verwendung einer In-Band-Kommunikation bereit, die den Gerätetreiber und die Speichersteuerung einschließt, die unter Verwendung des nichtflüchtigen Speicherzugriffsprotokolls kommunizieren.
  • In einer elften Ausführungsform und zur Förderung jeder beliebigen der ersten bis zehnten Ausführungsformen weist die erste Gruppe von nichtflüchtigen Speicherzellen eine oder mehrere von ReRAM-Speicherzellen, Phasenwechselspeicher-Speicherzellen (PCM-Speicherzellen) oder magnetische RAM-Speicherzellen auf.
  • Eine Ausführungsform schließt ein Verfahren zum Betreiben eines nichtflüchtigen Speichersystems ein, das ein Hostsystem und eine nichtflüchtige Speichervorrichtung aufweist, die durch eine Kommunikationsverbindung verbunden sind. Die nichtflüchtige Speichervorrichtung weist eine Speichersteuerung und nichtflüchtige Speicherzellen auf. Verfahren, aufweisend: Speichern von Hostdaten in einen Zwischenspeicher, aufweisend eine erste Gruppe der nichtflüchtigen Speicherzellen mit einem Bit pro nichtflüchtiger Speicherzelle; Speichern von Hostdaten in einen Hauptspeicher, aufweisend eine zweite Gruppe der nichtflüchtigen Speicherzellen mit mehreren Bits pro nichtflüchtiger Speicherzelle; Bereitstellen, vom Hostsystem über die Kommunikationsverbindung zur Speichersteuerung, einer oder mehrerer Anforderungen mit logischen Prioritätsadressen, für die Hostdaten Vorrang für den Verbleib im Zwischenspeicher gegenüber Hostdaten ohne eine logische Prioritätsadresse erhalten sollen; und Priorisieren durch die Speichersteuerung von Hostdaten für die logischen Prioritätsadressen in den Anforderungen, im Zwischenspeicher zu verbleiben, gegenüber Hostdaten, die keine der logischen Prioritätsadressen haben.
  • Eine Ausführungsform schließt ein nichtflüchtiges Speichersystem ein, aufweisend ein Hostsystem und eine nichtflüchtige Speichervorrichtung mit nichtflüchtigen Speicherzellen, aufweisend: Programmierungsmittel zum Speichern von Hostdaten in einen Zwischenspeicher, der eine erste Gruppe der nichtflüchtigen Speicherzellen mit einem Bit pro nichtflüchtiger Speicherzelle aufweist, und zum Speichern von Hostdaten in einen Hauptspeicher, der eine zweite Gruppe der nichtflüchtigen Speicherzellen mit mehreren Bits pro nichtflüchtiger Speicherzelle aufweist; Prioritätshostdaten-Auswahlmittel zum Auswählen von Prioritätshostdaten, die Vorrang für den Verbleib im Zwischenspeicher erhalten sollen; Prioritätshostdaten-Bereitstellungsmittel die ferner der nichtflüchtigen Speichervorrichtung logische Prioritätsadressen für die Prioritätshostdaten mit einer Angabe bereitstellen, dass die Prioritätshostdaten für die logischen Prioritätsadressen Vorrang für den Verbleib im Zwischenspeicher erhalten sollen; Prioritätsadressen-Speichermittel zum Speichern der logischen Prioritätsadressen in einer Prioritätsadresstabelle in der nichtflüchtigen Speichervorrichtung; und Speichersteuerungsmittel, um Prioritätshostdaten mit einer der logischen Prioritätsadressen in der Prioritätsadresstabelle Vorrang für den Verbleib im Zwischenspeicher gegenüber Hostdaten mit einer logischen Adresse, die nicht in der Prioritätsadresstabelle ist, zu geben.
  • In einer Ausführungsform weisen Programmierungsmittel einen oder mehrere von Speichersteuerung 122, Prozessor 122c, Zustandsmaschine 112, On-Chip-Adressdecodierer 114, Leistungssteuerung 116, Decodierer 124/132 Lese-/Schreibschaltungen 128, Backend-Modul auf. Die Programmierungsmittel können andere Hardware und/oder Software aufweisen (z. B. Code, der bei Ausführung auf einem Prozessor alle oder einen Teil der Programmierungsmittel implementiert).
  • In einer Ausführungsform weisen Prioritätshostdaten-Auswahlmittel einen oder mehrere von Hostprozessor 150 und/oder Prioritätshostdaten-Anwendung 164 auf (wobei es sich um Code handeln kann, der auf Prozessor 150 ausgeführt wird). Die Prioritätshostdaten-Auswahlmittel können andere Hardware und/oder Software aufweisen (z. B. Code, der bei Ausführung auf einem Prozessor alle oder einen Teil der Prioritätshostdaten-Auswahlmittel implementiert).
  • In einer Ausführungsform weisen Prioritätshostdaten-Bereitstellungsmittel einen oder mehrere von Hostprozessor 150, Prioritätshostdaten-Anwendung 164, O/S-APIs 166, Dateisystem 168, Gerätetreiber 170 auf. Die Prioritätshostdaten-Bereitstellungsmittel können andere Hardware und/oder Software aufweisen (z. B. Code, der bei Ausführung auf einem Prozessor alle oder einen Teil der Prioritätshostdaten-Bereitstellungsmittel implementiert).
  • In einer Ausführungsform weisen Prioritätsadressen-Speichermittel einen oder mehrere von Speichersteuerung 122, Prozessor 122c, RAM 122b, Pufferverwaltung/Bussteuerung 314, Zwischenspeicherverwaltungssteuerung 334 auf. Die Prioritätsadressen-Speichermittel können andere Hardware und/oder Software aufweisen (z. B. Code, der bei Ausführung auf einem Prozessor alle oder einen Teil der Prioritätsadressen-Speichermittel implementiert).
  • In einer Ausführungsform weisen Speichersteuerungsmittel einen oder mehrere von Speichersteuerung 122, Prozessor 122c, Zwischenspeicherverwaltungssteuerung 334 auf. Die Speichersteuerungsmittel können andere Hardware und/oder Software aufweisen (z. B. Code, der bei Ausführung auf einem Prozessor alle oder einen Teil der Speichersteuerungsmittel implementiert).
  • Eine Ausführungsform schließt weiterhin Gerätetreibermittel zum Empfangen der logischen Prioritätsadressen ein, die der API bereitgestellt wurden, wobei die Gerätetreibermittel ferner dazu dienen, den Speichersteuerungsmitteln die logischen Prioritätsadressen bereitzustellen. Die Gerätetreibermittel können einen oder mehrere von Hostprozessoren 150, Gerätetreiber 170 aufweisen. Die Gerätetreibermittel können andere Hardware und/oder Software aufweisen (z. B. Code, der bei Ausführung auf einem Prozessor alle oder einen Teil der Gerätetreibermittel implementiert).
  • Jedes der vorstehenden Mittel (z. B. Programmierungsmittel, Prioritätshostdaten-Auswahlmittel, Prioritätshostdaten-Bereitstellungsmittel, Prioritätsadressen-Speichermittel, Speichersteuerungsmittel, Gerätetreibermittel) kann eine gebündelte funktionale Hardwareeinheit (z. B. eine elektrische Schaltung), Programmcode (z. B. Software oder Firmware), der von einem oder mehreren Prozessoren oder einer Verarbeitungsschaltung ausführbar ist, die normalerweise eine bestimmte Funktion verwandter Funktionen ausführt, oder eine in sich geschlossene Hardware- oder Softwarekomponente einschließen, die mit einem größeren System verknüpft ist. Die vorstehend genannten Mittel können beispielsweise eine anwendungsspezifische integrierte Schaltung (ASIC), eine anwenderprogrammierbare Gatteranordnung (FPGA), eine elektrische Schaltung, eine digitale Logikschaltung, eine analoge Schaltung, eine Kombination diskreter Schaltungen, Gatter oder irgendeine andere Art von Hardware oder Kombination davon einschließen.
  • Für den Zweck dieses Dokuments werden die Begriffe „Schreiben“ und „Speichern“ häufig austauschbar verwendet.
  • Für die Zwecke dieses Dokuments kann eine Bezugnahme in der Beschreibung auf „eine Ausführungsform“, „einige Ausführungsformen“ oder „eine andere Ausführungsform“ verwendet werden, um verschiedene Ausführungsformen oder dieselbe Ausführungsform zu beschreiben.
  • Im Sinne dieses Dokuments kann eine Verbindung eine direkte Verbindung oder eine indirekte Verbindung sein (z. B. über einen oder mehrere andere Teile). In einigen Fällen, wenn ein Element als mit einem anderen Element verbunden oder gekoppelt bezeichnet wird, kann das Element direkt mit dem anderen Element verbunden sein oder indirekt über zwischenliegende Elemente mit dem anderen Element verbunden sein. Wenn ein Element als direkt mit einem anderen Element verbunden bezeichnet wird, gibt es keine Zwischenelemente zwischen dem Element und dem anderen Element. Zwei Vorrichtungen sind „in Kommunikation“, wenn sie direkt oder indirekt miteinander verbunden sind, sodass sie elektronische Signale untereinander übertragen können.
  • Für die Zwecke dieses Dokuments können die Begriffe „basierend auf“ und „in Abhängigkeit von“ als „zumindest teilweise basierend auf“ verstanden werden.
  • Während verschiedene Ausführungsformen der vorliegenden Technologie oben beschrieben wurden, versteht es sich, dass sie beispielhaft und nicht einschränkend dargestellt wurden. Es wird für Fachleute offensichtlich sein, dass verschiedene Änderungen in Form und Detail daran vorgenommen werden können, ohne vom Geist und Umfang der Technologie abzuweichen. Zum Beispiel sind, obwohl einige Variationen im Detail oben beschrieben wurden, andere Modifikationen oder Hinzufügungen möglich. Insbesondere können weitere Merkmale bzw. Variationen zusätzlich zu den hier dargelegten vorgesehen werden. Zum Beispiel können die oben beschriebenen Implementierungen auf verschiedene Kombinationen und Unterkombinationen der offenbarten Merkmale bzw. Kombinationen und Unterkombinationen mehrerer weiter oben offenbarter Merkmale gerichtet sein. Außerdem erfordert der in den beigefügten Figuren dargestellte und/oder hier beschriebene Logikfluss nicht die bestimmte gezeigte Reihenfolge oder sequentielle Reihenfolge, um erwünschte Ergebnisse zu erzielen. Andere Ausführungsformen können in dem Umfang der folgenden Ansprüche liegen.
  • Ausführungsformen der vorliegenden Technologie wurden oben mit Hilfe funktioneller Bausteine beschrieben, die die Leistung spezifizierter Funktionen und Beziehungen davon veranschaulichen. Die Grenzen dieser funktionalen Bausteine wurden hier oft für die Zweckmäßigkeit der Beschreibung definiert. Alternative Grenzen können definiert werden, solange die spezifizierten Funktionen und Beziehungen davon geeignet durchgeführt werden. Andere derartige alternative Grenzen liegen somit innerhalb des Umfangs und des Geistes der beanspruchten Technologie. Ein Fachmann wird erkennen, dass diese funktionalen Bausteine durch Einzelkomponenten, anwendungsspezifische integrierte Schaltungen, Prozessoren, die geeignete Software ausführen, und dergleichen oder eine beliebige Kombination davon implementiert werden können.
  • Die Breite und der Schutzumfang der vorliegenden Erfindung sollten nicht durch irgendeine der oben beschriebenen beispielhaften Ausführungsformen beschränkt werden, sondern nur in Übereinstimmung mit den folgenden Ansprüchen und ihren Äquivalenten definiert sein.
  • Obwohl der Gegenstand in einer Sprache beschrieben wurde, die spezifisch für strukturelle Merkmale bzw. methodisches Handeln ist, versteht es sich, dass der in den beigefügten Ansprüchen definierte Gegenstand nicht notwendigerweise auf die vorstehend beschriebenen spezifischen Merkmale oder Handlungen beschränkt ist. Entsprechend sind die oben beschriebenen spezifischen Merkmale und Vorgänge als beispielhafte Formen der Implementierung der Ansprüche offenbart.
  • Die vorhergehende detaillierte Beschreibung wurde zu Zwecken der Veranschaulichung und Beschreibung vorgelegt. Sie soll nicht erschöpfend sein oder die genaue offenbarte Form beschränken. Viele Modifikationen und Variationen sind unter Berücksichtigung der vorstehend genannten Lehre möglich. Die beschriebenen Ausführungsformen wurden gewählt, um die Prinzipien der vorgeschlagenen Technologie und ihre praktische Anwendung am besten zu erläutern und damit anderen Fachleuten die Möglichkeit zu geben, sie in verschiedenen Ausführungsformen und mit verschiedenen Modifikationen, die für die jeweilige vorgesehene Verwendung geeignet sind, am besten zu nutzen. Es ist beabsichtigt, dass der Umfang durch die hier beigefügten Ansprüche definiert wird.

Claims (15)

  1. Vorrichtung, aufweisend: nichtflüchtige Speicherzellen (126); und eine mit den nichtflüchtigen Speicherzellen gekoppelte Speichersteuerung (122), wobei die Speichersteuerung eingerichtet ist zum: Bezeichnen einer ersten Gruppe der nichtflüchtigen Speicherzellen als Zwischenspeicher (132) für Hostdaten aus einem Hostsystem (140) und einer zweiten Gruppe der nichtflüchtigen Speicherzellen als Hauptspeicher (134) für Hostdaten aus dem Hostsystem, wobei der Zwischenspeicher eine niedrigere Leselatenz als eine Leselatenz des Hauptspeichers hat; Empfangen von Prioritätsadressen von dem Hostsystem zum Identifizieren von Hostdaten, die mit Priorität im Zwischenspeicher verbleiben sollen; und Geben von Priorität an Hostdaten mit den Prioritätsadressen, um im Zwischenspeicher zu verbleiben.
  2. Vorrichtung gemäß Anspruch 1, wobei die Speichersteuerung ferner eingerichtet ist zum: Verwalten, ob die Hostdaten in der ersten Gruppe der nichtflüchtigen Speicherzellen verbleiben oder auf der Grundlage der Prioritätsadressen zu der zweiten Gruppe der nichtflüchtigen Speicherzellen verlagert werden.
  3. Vorrichtung gemäß einem der Ansprüche 1 oder 2, wobei die Speichersteuerung ferner eingerichtet ist zum: Auswählen von Hostdaten zur Verlagerung aus dem Zwischenspeicher in den Hauptspeicher basierend auf den Prioritätsadressen, einschließlich des Verlagerns von Hostdaten mit einer anderen Adresse als eine der Prioritätsadressen aus der ersten Gruppe der nichtflüchtigen Speicherzellen in die zweite Gruppe der nichtflüchtigen Speicherzellen.
  4. Vorrichtung gemäß einem der Ansprüche 1 bis 3, wobei die Speichersteuerung ferner eingerichtet ist zum Durchführen einer Speicherbereinigung innerhalb der ersten Gruppe der nichtflüchtigen Speicherzellen basierend auf den Prioritätsadressen, einschließlich der Speichersteuerung, die eingerichtet ist, um Hostdaten mit den Prioritätsadressen im Zwischenspeicher zu halten und Hostdaten, die keine der Prioritätsadressen haben, in den Hauptspeicher zu verlagern.
  5. Vorrichtung gemäß einem der Ansprüche 1 bis 4, wobei die Speichersteuerung ferner eingerichtet ist zum: Programmieren der ersten Gruppe der nichtflüchtigen Speicherzellen auf ein einziges Bit pro Speicherzelle; und Programmieren der zweiten Gruppe der nichtflüchtigen Speicherzellen auf mehrere Bits pro Speicherzelle.
  6. Vorrichtung gemäß einem der Ansprüche 1 bis 5, weiterhin aufweisend das Hostsystem mit nicht transitorischem Speicher mit einer darin gespeicherten Anwendung, wobei das Hostsystem ferner einen Prozessor aufweist, der mit dem nicht transitorischen Speicher kommuniziert, wobei die Anwendung bei Ausführung auf dem Prozessor eine Anforderung an eine Anwendungsprogrammierschnittstelle (API) des Betriebssystems stellt, um der Speichersteuerung die Prioritätsadressen mit einer Angabe bereitzustellen, dass die Hostdaten für die Prioritätsadressen Vorrang für den Verbleib im Zwischenspeicher erhalten sollen.
  7. Vorrichtung gemäß Anspruch 6, wobei die Anwendung, wenn sie auf dem Prozessor ausgeführt wird: die Verwendung von Hostdaten überwacht; und Hostdaten für die Prioritätsspeicherung in der ersten Gruppe der nichtflüchtigen Speicherzellen basierend auf der Verwendung von Hostdaten auswählt.
  8. Vorrichtung gemäß Anspruch 6 oder 7, wobei die Anwendung, wenn sie auf dem Prozessor ausgeführt wird: eine Benutzerschnittstelle bereitstellt, welche die Auswahl von Hostdaten für die Prioritätsspeicherung im Zwischenspeicher ermöglicht; eine Auswahl von Hostdaten in der Benutzerschnittstelle empfängt; auf einen Satz von Adressen für die in der Benutzerschnittstelle ausgewählten Hostdaten zugreift; und der Speichersteuerung den Satz von Adressen für die ausgewählten Hostdaten als einen Satz der Prioritätsadressen der Hostdaten bereitstellt.
  9. Vorrichtung gemäß einem der Ansprüche 6 bis 8, wobei die Anwendung, wenn sie auf dem Prozessor ausgeführt wird: eine Benutzerschnittstelle bereitstellt, welche die Auswahl eines Prioritätsgewichtes für eine Datei ermöglicht, wobei das Prioritätsgewicht ein aus mindestens drei möglichen Gewichten ausgewählter Wert ist; eine Auswahl in der Benutzerschnittstelle eines Prioritätsgewichtes für eine ausgewählte Datei empfängt; auf einen Satz von Adressen für die ausgewählte Datei zugreift, wobei der Satz von Adressen ein Satz der Prioritätsadressen ist; und der Speichersteuerung den Adressensatz als ein Satz von Prioritätsadressen der Hostdaten mit dem Prioritätsgewicht mit einer Angabe bereitstellt, dass der Adressensatz für die ausgewählte Datei eine Priorität haben soll, um gemäß dem Prioritätsgewicht in der ersten Gruppe der nichtflüchtigen Speicherzellen zu verbleiben.
  10. Vorrichtung gemäß einem der Ansprüche 1 bis 9, weiterhin aufweisend: eine Kommunikationsschnittstelle, die mit der Speichersteuerung gekoppelt ist; und einen Gerätetreiber, der mit der Kommunikationsschnittstelle gekoppelt ist, wobei der Gerätetreiber eingerichtet ist, um mit der Speichersteuerung unter Verwendung eines nichtflüchtigen Speicherzugriffsprotokolls zu kommunizieren, wobei die Anwendung bei Ausführung auf dem Prozessor der Speichersteuerung die Prioritätsadressen unter Verwendung einer In-Band-Kommunikation bereitstellt, die den Gerätetreiber und die Speichersteuerung einschließt, die unter Verwendung des nichtflüchtigen Speicherzugriffsprotokolls kommunizieren.
  11. Vorrichtung gemäß einem der Ansprüche 1 bis 10, wobei die erste Gruppe der nichtflüchtigen Speicherzellen eine oder mehrere von ReRAM-Speicherzellen, Phasenwechselspeicher-Speicherzellen (PCM-Speicherzellen) oder magnetischen RAM-Speicherzellen aufweist.
  12. Verfahren zum Betreiben eines nichtflüchtigen Speichersystems, aufweisend ein Hostsystem und eine nichtflüchtige Speichervorrichtung, die durch eine Kommunikationsverbindung verbunden sind, wobei die nichtflüchtige Speichervorrichtung eine Speichersteuerung und nichtflüchtige Speicherzellen aufweist, wobei das Verfahren aufweist: Speichern von Hostdaten in einen Zwischenspeicher, aufweisend eine erste Gruppe der nichtflüchtigen Speicherzellen mit einem Bit pro nichtflüchtiger Speicherzelle; Speichern von Hostdaten in einen Hauptspeicher, aufweisend eine zweite Gruppe der nichtflüchtigen Speicherzellen mit mehreren Bits pro nichtflüchtiger Speicherzelle; Bereitstellen, vom Hostsystem über die Kommunikationsverbindung zur Speichersteuerung, einer oder mehrerer Anforderungen mit logischen Prioritätsadressen, für die Hostdaten Vorrang für den Verbleib im Zwischenspeicher gegenüber Hostdaten ohne eine logische Prioritätsadresse erhalten sollen; und Priorisieren durch die Speichersteuerung von Hostdaten für die logischen Prioritätsadressen in den Anforderungen, im Zwischenspeicher zu verbleiben, gegenüber Hostdaten, die keine der logischen Prioritätsadressen haben.
  13. Verfahren gemäß Anspruch 12, wobei das Priorisieren von Hostdaten für die logischen Prioritätsadressen in den Anforderungen, im Zwischenspeicher zu verbleiben, aufweist: Flushen, von der ersten Gruppe der nichtflüchtigen Speicherzellen zur zweiten Gruppe der nichtflüchtigen Speicherzellen, der Hostdaten mit einer logischen Nicht-Prioritätsadresse, die keine der logischen Prioritätsadressen ist.
  14. Verfahren gemäß Anspruch 12 oder 13, wobei das Priorisieren von Hostdaten für die logischen Prioritätsadressen in den Anforderungen, im Zwischenspeicher zu verbleiben, aufweist: Durchführen einer Speicherbereinigung innerhalb der ersten Gruppe der nichtflüchtigen Speicherzellen basierend auf den logischen Prioritätsadressen, einschließlich des Übertragens von Hostdaten mit einer logischen Nicht-Prioritätsadresse, die keine der logischen Prioritätsadressen ist, von der ersten Gruppe der nichtflüchtigen Speicherzellen zur zweiten Gruppe der nichtflüchtigen Speicherzellen.
  15. Verfahren gemäß einem der Ansprüche 12 bis 14, weiterhin aufweisend: Bereitstellen der einen oder mehreren Anforderungen an eine Anwendungsprogrammierschnittstelle (API) des Betriebssystems des Hostsystems, um die eine oder mehreren Anforderungen an die Speichersteuerung weiterzuleiten.
DE112019000161.2T 2018-04-19 2019-02-05 Speicher-cache-verwaltung Pending DE112019000161T5 (de)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201862660123P 2018-04-19 2018-04-19
US62/660,123 2018-04-19
US15/982,805 2018-05-17
US15/982,805 US10776268B2 (en) 2018-04-19 2018-05-17 Priority addresses for storage cache management
PCT/US2019/016713 WO2019203915A1 (en) 2018-04-19 2019-02-05 Storage cache management

Publications (1)

Publication Number Publication Date
DE112019000161T5 true DE112019000161T5 (de) 2020-08-27

Family

ID=68237920

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112019000161.2T Pending DE112019000161T5 (de) 2018-04-19 2019-02-05 Speicher-cache-verwaltung

Country Status (5)

Country Link
US (1) US10776268B2 (de)
KR (1) KR102378295B1 (de)
CN (1) CN111373383B (de)
DE (1) DE112019000161T5 (de)
WO (1) WO2019203915A1 (de)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10496548B2 (en) * 2018-02-07 2019-12-03 Alibaba Group Holding Limited Method and system for user-space storage I/O stack with user-space flash translation layer
JP2020021385A (ja) * 2018-08-03 2020-02-06 キオクシア株式会社 メモリシステム
US11194473B1 (en) * 2019-01-23 2021-12-07 Pure Storage, Inc. Programming frequently read data to low latency portions of a solid-state storage array
CN112069147B (zh) * 2020-11-16 2021-01-29 湖南源科创新科技有限公司 面向多主机fat文件系统的fat共享系统及共享方法
TW202225987A (zh) 2020-12-21 2022-07-01 韓商愛思開海力士有限公司 用以分配儲存裝置的多個記憶通道以進行串流資料寫入的方法、儲存裝置及其記錄媒體
US20220374216A1 (en) * 2021-05-20 2022-11-24 Lenovo (United States) Inc. Method of manufacturing information processing apparatus and mobile computer
US11934672B2 (en) 2021-08-26 2024-03-19 International Business Machines Corporation Cached workload management for a multi-tenant host

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6463509B1 (en) 1999-01-26 2002-10-08 Motive Power, Inc. Preloading data in a cache memory according to user-specified preload criteria
KR100408758B1 (en) * 2003-01-22 2003-12-11 Nexon Co Ltd Method for controlling user application program
US7502901B2 (en) 2003-03-26 2009-03-10 Panasonic Corporation Memory replacement mechanism in semiconductor device
US7774563B2 (en) 2007-01-09 2010-08-10 International Business Machines Corporation Reducing memory access latency for hypervisor- or supervisor-initiated memory access requests
US7680982B2 (en) * 2007-02-20 2010-03-16 International Business Machines Corporation Preservation of cache data following failover
KR101498673B1 (ko) * 2007-08-14 2015-03-09 삼성전자주식회사 반도체 드라이브, 그것의 데이터 저장 방법, 그리고 그것을포함한 컴퓨팅 시스템
US8499120B2 (en) 2008-10-17 2013-07-30 Seagate Technology Llc User selectable caching management
JP5192352B2 (ja) 2008-10-30 2013-05-08 株式会社日立製作所 記憶装置及びデータ格納領域管理方法
US8356137B2 (en) * 2010-02-26 2013-01-15 Apple Inc. Data storage scheme for non-volatile memories based on data priority
US9134919B2 (en) * 2012-03-29 2015-09-15 Samsung Electronics Co., Ltd. Memory device including priority information and method of operating the same
US9268692B1 (en) 2012-04-05 2016-02-23 Seagate Technology Llc User selectable caching
WO2014061064A1 (en) 2012-10-18 2014-04-24 Hitachi, Ltd. Cache control apparatus and cache control method
US9430376B2 (en) * 2012-12-26 2016-08-30 Western Digital Technologies, Inc. Priority-based garbage collection for data storage systems
US9110813B2 (en) 2013-02-14 2015-08-18 Avago Technologies General Ip (Singapore) Pte Ltd Cache load balancing in storage controllers
US9367258B2 (en) 2013-03-11 2016-06-14 New Concepts Development Corp. Systems and methods for managing storage space in hybrid data storage systems
JP6098301B2 (ja) 2013-03-29 2017-03-22 富士通株式会社 ストレージ制御装置、ストレージ制御方法、およびストレージ制御プログラム
CN105493051B (zh) 2013-06-25 2019-03-08 马维尔国际贸易有限公司 自适应高速缓冲存储器控制器
US9563382B2 (en) 2014-06-05 2017-02-07 Sandisk Technologies Llc Methods, systems, and computer readable media for providing flexible host memory buffer
JP5974133B1 (ja) 2015-03-20 2016-08-23 株式会社東芝 メモリシステム
US20160283390A1 (en) 2015-03-27 2016-09-29 Intel Corporation Storage cache performance by using compressibility of the data as a criteria for cache insertion
US10579288B2 (en) * 2017-08-31 2020-03-03 Micron Technology, Inc. Prioritized security

Also Published As

Publication number Publication date
CN111373383A (zh) 2020-07-03
KR20200133716A (ko) 2020-11-30
CN111373383B (zh) 2023-05-23
US20190324903A1 (en) 2019-10-24
US10776268B2 (en) 2020-09-15
WO2019203915A1 (en) 2019-10-24
KR102378295B1 (ko) 2022-03-25

Similar Documents

Publication Publication Date Title
DE112019000161T5 (de) Speicher-cache-verwaltung
DE112018004251T5 (de) Adaptive vorrichtungsdienstqualität durch host-speicherpufferbereich
DE102018106154A1 (de) Faltungsoperationen in datenspeichersystemen mit einzeladressenaktualisierungen
DE112018000834T5 (de) System und verfahren zur adaptiven befehlsabruf-aggregation
DE102018123891A1 (de) Handhabung nichtabgestimmter Schreibvorgänge
DE112019005369T5 (de) Verfahren zum umschalten zwischen herkömmlicher ssd und open-channel-ssd ohne datenverlust
DE102020107659A1 (de) Zonenbildung für gezonte namensräume
DE112017005955T5 (de) Speichersystem und verfahren zur schlanken speicherzuweisung
DE112020000139T5 (de) Nicht sequentiell in zonen aufgeteilte namensräume
DE112016004760T5 (de) System und Verfahren für direktes Schreiben auf einen MLC-Speicher
DE102018123880A1 (de) Adaptive Verwaltung von Zwischenspeichern
DE112015005102T5 (de) Systeme und verfahren zum erzeugen von einem hostbefehl zugeordneten hinweisinformationen
DE102013108456B4 (de) Nichtflüchtige Speichervorrichtung und Programmierverfahren
DE112018000230T5 (de) System und Verfahren zur spekulativen Befehlsausführung unter Verwendung des Steuerungsspeicherpuffers
DE112019000147T5 (de) Partielle rücksetzung einer speichersteuerung
DE102018105871A1 (de) Speichersystem und Verfahren zur Vermeidung von Befehlskollisionen in nicht flüchtigen Datenspeichern mit expliziter Kachelgruppierung
DE102017128941A1 (de) Speichersystem und Verfahren zur prädiktiven Blockzuweisung zur effizienten Speicherbereinigung
DE112016000696B4 (de) Ablaufplanungsschema(ta) für eine Mehrchip-Speichervorrichtung
DE102021115373A1 (de) Identifizierte zonen für zonen mit optimaler paritätsteilung
DE112020005787T5 (de) Verbesserte dateisystem-unterstützung für zonen-namespace-speicher
DE102021118940A1 (de) Speichersteuerung und speichereinrichtung mit derselben
DE112021000776T5 (de) Verwaltung von schreib-operationen in einer nichtflüchtigen speichervorrichtung unter verwendung eines variablen vor-lese-spannungspegels
DE112020005502T5 (de) Dynamische überprovisionierungszuweisung für zweckbestimmte blöcke
DE102021107443A1 (de) Dynamische speichersteuerung und verfahren zur verwendung damit
DE112020005395T5 (de) Kapazitätserweiterung für speicher-untersysteme

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R082 Change of representative

Representative=s name: DEHNSGERMANY PARTNERSCHAFT VON PATENTANWAELTEN, DE

Representative=s name: DEHNS GERMANY PARTNERSCHAFT MBB, DE