DE102018123880A1 - Adaptive Verwaltung von Zwischenspeichern - Google Patents

Adaptive Verwaltung von Zwischenspeichern Download PDF

Info

Publication number
DE102018123880A1
DE102018123880A1 DE102018123880.0A DE102018123880A DE102018123880A1 DE 102018123880 A1 DE102018123880 A1 DE 102018123880A1 DE 102018123880 A DE102018123880 A DE 102018123880A DE 102018123880 A1 DE102018123880 A1 DE 102018123880A1
Authority
DE
Germany
Prior art keywords
memory
host
relocation
data
predicted
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
DE102018123880.0A
Other languages
English (en)
Inventor
Judah Gamliel Hahn
Alexander Bazarsky
Shay Benisty
Ariel Navon
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 DE102018123880A1 publication Critical patent/DE102018123880A1/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/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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile memory
    • G06F2212/2022Flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/22Employing cache memory using specific memory technology
    • G06F2212/222Non-volatile memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • 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/7204Capacity control, e.g. partitioning, end-of-life degradation

Landscapes

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

Abstract

Speichervorrichtungen, die eine adaptive Verwaltung des Zwischenspeicherungsspeichers durchführen können, und Verfahren zur Verwendung damit, werden hierin beschrieben. Eine solche Speichervorrichtung beinhaltet einen nichtflüchtigen Speicher, wobei ein Teil davon als Speicher der Zwischenspeicherung (IS) und ein anderer Teil davon als Speicher der Hauptspeicherung (MS) bezeichnet wird. Der IS-Speicher hat niedrigere Schreib- und Leselatenzen, eine höhere Ausdauer und eine geringere Speicherdichte und -kapazität als der MS-Speicher. In bestimmten Ausführungsformen wird ein Host-Aktivitätsmuster vorhergesagt, ein Verlagerungsschema wird basierend auf dem vorhergesagten Host-Aktivitätsmuster ausgewählt, und das ausgewählte Verlagerungsschema wird ausgeführt, um dadurch einen oder mehrere Teile von Daten aus dem IS-Speicher in den MS-Speicher gemäß dem ausgewählten Verlagerungsschema selektiv zu verlagern. Das Verlagerungsschema, das ausgewählt und ausgeführt wird, kann sich im Laufe der Zeit ändern. Zusätzlich können Verlagerungsschemata basierend auf Aktivitätsprotokoll(en) generiert und danach zur Ausführung ausgewählt werden.

Description

  • HINTERGRUND
  • Eine Speichervorrichtung, die einen nichtflüchtigen Speicher beinhaltet, 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, beinhalten. Der IS-Speicher wird in Speichervorrichtungen verwendet, um einen schnelleren Schreibdurchsatz zu liefern, und kann auch als eine sichere Zone zum schnellen Speichern von Host-Daten vor dem Speichern der Host-Daten in der MS verwendet werden. Der IS-Speicher kann auch als ein nichtflüchtiger Speicher-Cache fungieren, der ermöglicht, dass auf aktive Daten, die innerhalb des IS-Speichers gespeichert sind, sehr schnell zugegriffen werden kann. Das allgemeine Konzept ist, teureren nichtflüchtigen Speicher zu verwenden, der niedrigere Schreib- und Leselatenzen, eine größere Ausdauer und eine geringere Speicherdichte und -kapazität als der IS-Speicher hat, und weniger teuren nichtflüchtigen Speicher zu verwenden, der höhere Schreib- und Leselatenzen, eine geringere Ausdauer und eine höhere Speicherdichte und -kapazität als der MS-Speicher hat. Der teurere IS-Speicher, der wahrscheinlich weniger als zehn Prozent eines Gesamtspeicherungsbudgets einer Speichervorrichtung einnehmen wird, kann einen SLC-Speicher (Single-Level Cell) beinhalten, in dem ein einzelnes Datenbit pro Speicherzelle gespeichert ist. Der IS-Speicher kann alternativ oder zusätzlich einen SCM-Speicher (Storage Class Memory) beinhalten. Im Gegensatz dazu kann der weniger teure MS-Speicher, der wahrscheinlich mehr als neunzig Prozent des Gesamtspeicherungsbudgets einnehmen wird, einen MLC-Speicher (Multi-Level Cell) beinhalten, wobei zwei oder mehr Bits pro Speicherzelle gespeichert werden. Der MLC-Speicher, wie der Begriff hierin verwendet wird, kann Speicherzellen beinhalten, wobei zwei, drei oder vier Datenbits oder potenziell sogar mehr als vier Datenbits pro Speicherzelle gespeichert werden. Dementsprechend, wie der Begriff hierin verwendet wird, umfasst der Begriff MLC-Speicher auch den TLC-Speicher (Triple-Level Cell) und QLC-Speicher (Quad-Level Cell).
  • Der Prozess der Datenübertragung vom IS-Speicher in den MS-Speicher wird als „Verlagerung“ bezeichnet. Die Verlagerung wird durchgeführt, um den Platz im IS-Speicher freizugeben. Während der IS-Speicher im Allgemeinen sowohl in der Leistung als auch in der Ausdauer überlegen ist, ist er zu klein, um alle Host-Daten effektiv zwischenzuspeichern. Herkömmliche Techniken zum Durchführen einer Verlagerung basieren üblicherweise auf einfachen Heuristiken, wie z.B. FIFO (First-In-First-Out) oder auf einem Alterungsalgorithmus. Jedoch sind herkömmliche Verfahren zum Durchführen der Verlagerung, die auch als herkömmliche Verlagerungsschemata bezeichnet werden können, für viele Anwendungsfälle nicht optimal, da es eine klare Unterscheidung gibt, was ein optimales Verlagerungsschema zur Verwendung in einer Speichervorrichtung wäre, die zum Streamen von Videos verwendet wird, und was ein optimales Verlagerungsschema zur Verwendung in einer Speichervorrichtung wäre, die zum wiederholten Aktualisieren eines gleichen relativ kleinen Datenstücks verwendet wird. Das Beispiel für Videostreaming ist ein extremer Anwendungsfall, bei dem ein ganzes Flash-Laufwerk geschrieben und dann sofort und immer wieder umgeschrieben wird. Die wiederholte Aktualisierung eines gleichen relativ kleinen Datenstücks ist ein weiterer extremer Anwendungsfall am anderen Ende des Spektrums, bei dem eine gleiche logische Blockadresse (LBA) immer wieder neu geschrieben werden kann.
  • In verschiedenen Szenarien kann es vorkommen, dass bei einer Speichervorrichtung der IS-Speicher knapp wird, während sie noch benötigt wird, was den Schreibdurchsatz reduzieren könnte und im Allgemeinen unerwünscht ist. Jedoch ist die Leselatenz aus dem IS-Speicher auch kürzer als aus dem MS-Speicher. Daher ist es sinnvoll, die Verlagerung eines Datenstücks aus dem IS-Speicher in den MS-Speicher zu vermeiden, in dem dieses Datenstück kurz nach dem Schreiben gelesen wird, da seine Leselatenz geringer wäre, wenn es im IS-Speicher gehalten würde.
  • Figurenliste
    • 1 ist ein Blockdiagramm, das eine Ausführungsform einer Speichervorrichtung darstellt, die mit einer Host-Vorrichtung (oder eingebettet in der Host-Vorrichtung) verbunden ist, die Ausführungsformen der vorliegenden hier beschriebenen Technologie implementieren kann.
    • 2 ist ein Blockdiagramm eines Ausführungsbeispiels der Hardwarearchitektur für eine Steuerung der Speichervorrichtung, die in 1 eingeführt ist, die bestimmte Ausführungsformen der vorliegenden hier beschriebenen Technologie implementieren kann.
    • 3 ist ein Blockdiagramm eines Beispiels für eine Speichervorrichtung.
    • 4 ist ein Blockdiagramm eines Beispiels für einen nichtflüchtigen Speicher-Die.
    • 5 ist ein Flussdiagramm auf hoher Ebene, das verwendet wird, um Verfahren zum Durchführen einer adaptiven Verwaltung von IS-Speichern gemäß bestimmten Ausführungsformen der vorliegenden Technologie zusammenzufassen.
    • 6 ist ein Flussdiagramm auf hoher Ebene, das verwendet wird, um zu erklären, wie sich das ausgewählte und ausgeführte Verlagerungsschema im Laufe der Zeit ändern kann.
    • 7A ist ein Flussdiagramm, das verwendet wird, um zusätzliche Details eines der in 5 vorgestellten Schritte zu beschreiben, wobei dieser Schritt die Auswahl eines aus einer Vielzahl von gespeicherten Verlagerungsschemata beinhaltet, die verwendet werden, um, gemäß einer Ausführungsform der vorliegenden Technologie, Daten vom IS-Speicher in den MS-Speicher selektiv zu verlagern.
    • 7B ist ein Flussdiagramm, das verwendet wird, um zusätzliche Details eines der in 5 vorgestellten Schritte zu beschreiben, wobei dieser Schritt die Auswahl eines aus einer Vielzahl von gespeicherten Verlagerungsschemata beinhaltet, die verwendet werden, um, gemäß einer weiteren Ausführungsform der vorliegenden Technologie, Daten vom IS-Speicher in den MS-Speicher selektiv zu verlagern.
    • 8 ist ein Flussdiagramm, das verwendet wird, um zu erklären, wie weitere potenzielle Host-Aktivitätsmuster identifiziert und weitere Verlagerungsschemata gemäß bestimmten Ausführungsformen der vorliegenden Technologie generiert und gespeichert werden können.
    • 9 veranschaulicht ein erstes beispielhaftes Aktivitätsprotokoll, basierend auf demjenigen ein Host-Aktivitätsmuster vorhergesagt werden kann, und das vorhergesagte Host-Aktivitätsmuster kann verwendet werden, um ein Verlagerungsschema auszuwählen.
    • 10 veranschaulicht ein zweites beispielhaftes Aktivitätsprotokoll, basierend auf demjenigen ein Host-Aktivitätsmuster vorhergesagt werden kann, und das vorhergesagte Host-Aktivitätsmuster kann verwendet werden, um ein Verlagerungsschema auszuwählen.
    • 11 ist ein umfassendes Flussdiagramm, das einige zusätzliche Details darüber bereitstellt, wie ein Verlagerungsschema nach der Auswahl gemäß einer Ausführungsform ausgeführt werden kann.
    • 12 ist ein umfassendes Flussdiagramm, das einige zusätzliche Details darüber bereitstellt, wie ein alternatives Verlagerungsschema nach der Auswahl gemäß einer Ausführungsform ausgeführt werden kann.
  • DETAILLIERTE BESCHREIBUNG
  • Speichervorrichtungen, die eine adaptive Verwaltung des Zwischenspeicherungsspeichers durchführen können, und Verfahren zur Verwendung damit, werden hierin beschrieben. Eine solche Speichervorrichtung kann einen nichtflüchtigen Speicher beinhalten, wobei ein Teil des nichtflüchtigen Speichers als Speicher der Zwischenspeicherung (IS) festgelegt bzw. bezeichnet wird und ein anderer Teil des nichtflüchtigen Speichers als Speicher der Hauptspeicherung (MS) festgelegt wird. Der IS-Speicher hat niedrigere Schreib- und Leselatenzen, eine höhere Ausdauer und eine geringere Speicherdichte und -kapazität als der MS-Speicher. Beispielsweise kann der IS-Speicher einen Flash-Speicher vom SLC-Typ (Single-Level Cell) beinhalten, wobei ein einzelnes Datenbit pro Speicherzelle gespeichert wird, und der MS-Speicher kann einen Flash-Speicher vom MLC-Typ (Multi-Level Cell) beinhalten, wobei zwei oder mehr Datenbits pro Speicherzelle gespeichert werden. Gemäß bestimmten Ausführungsformen der vorliegenden Technologie, die nachstehend näher beschrieben werden, wird eine Vielzahl von Verlagerungsschemata gespeichert, von denen jedes einem aus einer Vielzahl von potentiellen Host-Aktivitätsmustern zugeordnet ist. Zusätzlich wird ein Aktivitätsprotokoll geführt, das Vorgänge in Bezug auf Daten verfolgt, die in dem nichtflüchtigen Speicher gespeichert sind, und ein Host-Aktivitätsmuster wird basierend auf dem Aktivitätsprotokoll vorhergesagt. Gemäß bestimmten Ausführungsformen wird eines aus der Vielzahl von gespeicherten Verlagerungsschemata ausgewählt, um auf im IS-Speicher gespeicherte Daten anzuwenden, wobei die Auswahl basierend auf dem vorhergesagten Host-Aktivitätsmuster durchgeführt wird. Das ausgewählte Verlagerungsschema wird dann ausgeführt, um dadurch einen oder mehrere Teile von Daten aus dem IS-Speicher in den MS-Speicher gemäß dem ausgewählten Verlagerungsschema selektiv zu verlagern. Bevor zusätzliche Details zu den Ausführungsformen der vorliegenden Technologie bereitgestellt werden, ist es zunächst sinnvoll, eine beispielhafte Speichervorrichtung zu beschreiben, mit der Ausführungsformen der vorliegenden Technologie implementiert werden können.
  • In der folgenden detaillierten Beschreibung wird auf die beigefügten Zeichnungen Bezug genommen, die einen Teil hiervon bilden und in denen illustrationsspezifische veranschaulichende Ausführungsformen dargestellt sind. 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 durchgehend gleiche Teile oder Elemente zu bezeichnen. Darüber hinaus identifiziert die erste Ziffer einer dreistelligen Bezugsnummer und die ersten zwei Ziffern einer vierstelligen Bezugsnummer die Zeichnung, in der die Bezugsnummer zuerst erscheint.
  • 1 ist ein Blockdiagramm, das eine Ausführungsform einer Speichervorrichtung 120 darstellt, die mit einer Host-Vorrichtung 102 verbunden ist (oder in die Host-Vorrichtung 102 eingebettet ist), wobei die Host-Vorrichtung 102 Ausführungsformen der nachstehend beschriebenen vorliegenden Technologie implementieren kann. Unter Bezugnahme auf 1 speichert die Host-Vorrichtung 102 Daten in der Speichervorrichtung 120 und ruft Daten von ihr ab, indem sie Schreib- und Lesebefehle erteilt. Die Speichervorrichtung 120 kann in die Host-Vorrichtung 102 eingebettet sein oder in Form einer Karte, eines USB-Laufwerks (Universal Serial Bus) oder eines anderen Wechseldatenträgers vorliegen, wie einer Solid-State-Festplatte (SSD), die über einen mechanischen und elektrischen Verbinder abnehmbar mit der Host-Vorrichtung 102 verbunden ist. Die Host-Vorrichtung 102 kann eine beliebige von einer Reihe von festen oder tragbaren Datenerzeugungsvorrichtungen sein, wie ein Personal Computer, ein Smartphone, ein persönlicher digitaler Assistent (PDA), ein Server, eine Set-Top-Box oder dergleichen. Allgemeiner gesagt, kann die Host-Vorrichtung 102 eine Host-Logik beinhalten, welche die Funktionen eines Smartphones, PDAs, Laptops, Servers, einer Set-Top-Box usw. übernimmt. Obwohl nicht spezifisch dargestellt, kann der Host einen Read-Only-Speicher (ROM) beinhalten und/oder mit diesem in Kommunikation stehen.
  • Die Host-Vorrichtung 102, die genauer als Host 102 bezeichnet werden kann, kann einen oder mehrere Prozessoren 104 beinhalten, die ein oder mehrere Anwendungsprogramme 106 ausführen. Die Anwendungsprogramme 106 kommunizieren, wenn Daten in der Speichervorrichtung 120 gespeichert oder von ihr abgerufen werden sollen, über eine oder mehrere Anwendungsprogrammierschnittstellen (APIs) 108 mit einem Dateisystem 110. Das Dateisystem 110 kann ein Softwaremodul sein, das auf dem/den Prozessor(en) 104 ausgeführt wird und die Dateien in der Speichervorrichtung 120 verwaltet. Das Dateisystem 110 verwaltet Cluster von Daten im logischen Adressraum. Zu den allgemeinen Vorgängen, die von einem Dateisystem 110 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 110 kann Schaltungen, Software oder eine Kombination von Schaltungen und Software sein.
  • Das Dateisystem 110 kann ein eigenständiger Chip oder eine Software sein, die von dem/den Prozessor(en) 104 des Hosts 102 ausführbar ist. Ein Speichervorrichtungstreiber 112 auf dem Host 102 kann Anweisungen von dem Dateisystem 110 zur Übertragung über einen Kommunikationskanal 114 zwischen dem Host 102 und der Speichervorrichtung 120 übersetzen. Die Schnittstelle für die Kommunikation über den Kommunikationskanal 114 kann eine beliebige Anzahl bekannter Schnittstellen sein, wie SD, MMC, USB-Speichervorrichtung, SATA-, SCSI- und PCI-Express-Schnittstellen. Eine Dateisystemdatenstruktur, wie etwa eine Dateizuordnungstabelle (FAT), kann im Speicher (z.B. 124 oder 206) der Speichervorrichtung 120 gespeichert werden. Der Host 102 kann die Dateisystemdatenstruktur verwenden, um einen logischen Adressbereich für alle logischen Blockadressen (LBAs) zu pflegen, die durch den Host 102 den Daten zugewiesen wurden. Zusätzlich zur Verwendung als Bezug auf den Kommunikationskanal zwischen dem Host 102 und der Speichervorrichtung 120 kann die Bezugsnummer 114 auch als Bezug auf Host-Schnittstellensignale verwendet werden, die über den Kommunikationskanal 114 übertragen werden. Darüber hinaus kann sich die Bezugsziffer 114 auf Änderungen im Host-Speicher beziehen, die gemäß einem Protokoll wie NVMe oder AHCI, das über dem PCI-Express-Transport betrieben wird, gelesen und von der Speichervorrichtung 120 abgerufen werden. Die Hostvorrichtung 102, die auch prägnanter als Host 102 bezeichnet werden kann, verwendet das Dateisystem 110, um in der Speichervorrichtung 120 gespeicherte Dateien zu adressieren, was das Schreiben von Daten in den und das Lesen von Daten aus dem nichtflüchtigen Speicher 124 der Speichervorrichtung 120 beinhalten kann. Beispieltypen für Dateisysteme, die vom Host 102 verwendet werden können, beinhalten FAT32, exFAT, ext2/3/4, HFS + und NTFS, sind aber nicht darauf beschränkt.
  • Die Speichervorrichtung 120 beinhaltet eine Steuerung 122 (die auch als Speichersteuerung 122 bezeichnet werden kann) in Kommunikation mit dem nichtflüchtigen Speicher 124 über Signale 123. Die Bezugsziffer 123 kann auch verwendet werden, um auf einen Kommunikationskanal zwischen der Steuerung 122 und dem nichtflüchtigen Speicher 124 Bezug zu nehmen. Es ist zu beachten, dass 1 eine logische Darstellung des nichtflüchtigen Speichers 124 zeigt. In einer Ausführungsform kann der nichtflüchtige Speicher 124 unter Verwendung eines oder mehrerer Speicher-Dies implementiert werden.
  • Der nichtflüchtige Speicher 124 kann Verwaltungstabellen 125 und einen oder mehrere Aktivitätsprotokolle 126 speichern. Wie im Folgenden näher beschrieben, kann der nichtflüchtige Speicher 124 gemäß bestimmter Ausführungsformen der vorliegenden Technologie eine Vielzahl von potenziellen Host-Aktivitätsmustern 128 speichern, und für jedes der potenziellen Host-Aktivitätsmuster ein Verknüpfungsverlagerungsschema. Die Vielzahl von potentiellen Host-Aktivitätsmustern und verknüpften Verlagerungsschemata können alternativ im Read-Only-Speicher (z.B. ROM 318 in 3) der Speichervorrichtung 120 gespeichert werden.
  • In einer Ausführungsform beinhalten die Verwaltungstabellen 125 eine oder mehrere L2P- (logisch-zu-physisch-Abbildung) Tabellen und eine oder mehrere P2L- (physisch-zu-logisch-Abbildung) Tabellen. Die Steuerung 122 kann die Verwaltungstabellen 125 verwenden, um logische Blockadressen (LBAs) auf physische Blockadressen (PBAs) abzubilden. Solche Tabellen 125 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 Host-Daten 130 in Blöcken (z.B. Block 0, Block 1, Block 2, ...) gespeichert. 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 Schreibbefehle, die von dem Host 102 zu der Speichervorrichtung 120 über den Kommunikationskanal 114 gesendet werden, können logische Blockadressen (LBAs) beinhalten. Im Gegensatz dazu können Anweisungen oder Befehle, die über den Kommunikationskanal 123 gesendet werden, physische Blockadressen (PBAs) beinhalten.
  • Das eine oder die mehreren Aktivitätsprotokoll(e) 126 verfolgen Schreibvorgänge, die für den Host 102 durchgeführt werden, als Reaktion auf das Empfangen von Schreibbefehlen von dem Host 102. Zusätzlich verfolgen die Aktivitätsprotokoll(e) 126 Lesevorgänge, die für den Host 102 durchgeführt werden, als Reaktion auf das Empfangen von Lesebefehlen von dem Host 102. Einträge in den Aktivitätsprotokollen 126 können in Form von logischen Blockadressen (LBAs) und/oder LBA-Bereichen angegeben werden, vorzugsweise mit Zeitinformationen (z.B. einem Zeitstempel), die angeben, wann Schreib- und Lesevorgänge durchgeführt werden. Wie im Folgenden näher beschrieben, kann gemäß bestimmten Ausführungsformen der vorliegenden Technologie, ein Host-Aktivitätsmuster basierend auf dem/den Aktivitätsprotokoll(en) 126 vorhergesagt werden. Das vorhergesagte Host-Aktivitätsmuster kann ein vorhergesagtes Schreibmuster beinhalten. Zusätzlich oder alternativ kann das vorhergesagte Host-Aktivitätsmuster ein vorhergesagtes Lesemuster enthalten.
  • Weiterhin auf 1 bezogen, beinhaltet der nichtflüchtige Speicher 124 einen Teil, der als Speicher der Zwischenspeicherung (IS) bezeichnet wird und einen anderen Teil, der als Speicher der Hauptspeicherung (MS) bezeichnet wird. Wie in 1 dargestellt, können die Host-Daten 130 im IS-Speicher und im MS-Speicher gespeichert werden. Genauer gesagt, wenn die Speichervorrichtung 120 einen Schreibbefehl vom Host 102 empfängt, kann die Speichervorrichtung 120 als Reaktion darauf entweder Host-Daten in dem Teil des nichtflüchtigen Speichers 124, der als IS-Speicher 132 festgelegt bzw. bezeichnet ist, oder in dem Teil des nichtflüchtigen Speichers 124, der als MS-Speicher 134 festgelegt ist, speichern. Es gibt verschiedene bekannte Techniken, die von der Speichersteuerung 122 verwendet werden können, um zu bestimmen, ob Daten im IS-Speicher 132 oder im MS-Speicher 134 gespeichert werden sollen. Zusätzlich gibt es verschiedene bekannte Techniken, die von der Speichersteuerung 122 verwendet werden können, um Daten von dem IS-Speicher 132 zu dem MS-Speicher 134 zu verlagern (d.h. übertragen). Ausführungsformen der vorliegenden Technologie, die im Folgenden näher beschrieben werden, stehen in keinem Zusammenhang mit einer bestimmten Technik, die von der Speichersteuerung 122 verwendet wird, um zu bestimmen, ob Daten zunächst im IS-Speicher 132 oder im MS-Speicher 134 gespeichert werden sollen. Außerdem beziehen sich Ausführungsformen der vorliegenden Technologie, die nachstehend ausführlicher beschrieben werden, allgemein auf verbesserte Techniken zur Verlagerung (d.h. Übertragung) von Daten aus dem IS-Speicher 132 in den MS-Speicher 134.
  • Wie in 1 gezeigt, werden Host-Daten 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 Host-Daten 130 können zu betrieblichen Zwecken in Seiten von Speicherzellen unterteilt werden. Die Speicherzellen jedes der Blöcke können beispielsweise jeweils in acht Seiten P0 - P7 unterteilt werden. Alternativ kann es 16, 32 oder mehr Seiten von Speicherzellen innerhalb jedes Blocks geben. Die Seite ist die Einheit der Datenprogrammierung und -lesung 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 beinhalten, 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.
  • Weiterhin auf 1 bezogen, weist der IS-Speicher 132 niedrigere Schreib- und Lese-Latenzen als der MS-Speicher 134 auf. Mit anderen Worten kann der IS-Speicher 132 mit größeren Geschwindigkeiten schneller beschrieben und ausgelesen werden, als der MS-Speicher 134 beschrieben und ausgelesen werden kann. Zusätzlich hat der IS-Speicher 132 eine höhere Ausdauer als der MS-Speicher 134. Beispielsweise kann eine erwartete Lebensdauer jeder der Zellen des IS-Speichers 132 20.000 Programmier-/Lösch- (P/E) Zyklen betragen, während die erwartete Lebensdauer jeder der Zellen des MS-Speichers 134 2.000 P/E-Zyklen betragen kann, wobei in diesem Fall die Zellen des IS-Speichers 132 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 auch eine geringere Speicherdichte und Kapazität als die MS 134. Genauer gesagt, können einzelne Zellen des IS-Speichers 132 weniger Bits von Host-Daten speichern als einzelne Zellen des MS-Speichers 134, und ein wesentlich kleinerer Teil des nichtflüchtigen Speichers 124, der zum Speichern von Host-Daten 130 verwendet wird, kann dem IS-Speicher 132 zugewiesen werden, als dem MS-Speicher 134 zugewiesen wird. Allgemeiner gesagt, ist der teurere IS-Speicher 132, der wahrscheinlich weniger als zehn Prozent eines Gesamtspeicherbudgets der Speichervorrichtung 120 in Anspruch nimmt und je nach Speichervorrichtung 120 bis zu zwei Prozent oder weniger als das Gesamtspeicherbudget in Anspruch nehmen kann. Das genaue Verhältnis von IS-Speicher 132 zu MS-Speicher 134 hängt vom jeweiligen Produkt ab und beeinflusst im Allgemeinen die Kosten im Vergleich zu Leistung und Ausdauer der Speichervorrichtung 120.
  • Gemäß bestimmten Ausführungsformen kann der IS-Speicher 132 einen Single-Level-Cell- (SLC) Speicher beinhalten, 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 erkennbare Ladepegel 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 eines ReRAM, eines Phasenänderungsspeichers oder eines magnetischen RAM beinhalten. Im Gegensatz dazu kann der weniger teure MS-Speicher 134 einen MLC-Speicher (Multi-Level Cell) beinhalten, wobei zwei oder mehr Bits pro Speicherzelle gespeichert werden. Der MLC-Speicher, wie der Begriff hierin verwendet wird, kann Speicherzellen beinhalten, wobei zwei, drei oder vier Datenbits oder potenziell sogar mehr als vier Datenbits pro Speicherzelle gespeichert werden. Dementsprechend, wie der Begriff hierin verwendet wird, umfasst der Begriff MLC-Speicher auch den TLC-Speicher (Triple-Level Cell) und QLC-Speicher (Quad-Level Cell). Zum Beispiel kann der MLC-Speicher betrieben werden, um vier erfassbare Ladungspegel zu speichern, die verwendet werden können, um vier Zustände zu speichern, und kann zwei Datenbits speichern: 00, 01, 10 oder 11. Bei einem weiteren Beispiel, wenn es sich bei dem MLC-Speicher um einen TLC-Speicher handelt, kann er betrieben werden, um acht erkennbare Ladepegel zu speichern, die zum Speichern von acht Zuständen verwendet werden können und drei Datenbits enthalten können: 000, 001, 010, 011, 100, 101, 110 oder 111. Bei noch einem weiteren Beispiel, wenn der MLC-Speicher ein QLC-Speicher ist, kann er betrieben werden, um sechzehn erkennbare Ladungspegel zu speichern, die zum Speichern von sechzehn Zuständen verwendet werden können und vier Datenbits enthalten 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 die MS 134 bezeichnet werden.
  • Wie vorstehend erläutert, kann der IS-Speicher 132 im Hintergrund verwendet werden, um einen schnelleren Schreibdurchsatz zu ermöglichen, und kann auch als Sicherheitszone verwendet werden, um Host-Daten schnell zu speichern, bevor die Host-Daten im MS-Speicher 134 gespeichert werden. Der IS-Speicher 132 kann auch als ein nichtflüchtiger Speicher-Cache fungieren, der ermöglicht, dass auf aktive Daten, die im IS-Speicher 132 gespeichert sind, sehr schnell zugegriffen werden kann. Das allgemeine Konzept ist, teureren nichtflüchtigen Speicher zu verwenden, der niedrigere Schreib- und Leselatenzen, eine größere Ausdauer und eine geringere Speicherdichte und -kapazität als der IS-Speicher 132 hat, und weniger teuren nichtflüchtigen Speicher zu verwenden, der höhere Schreib- und Leselatenzen, eine geringere Ausdauer und eine höhere Speicherdichte und -kapazität als der MS-Speicher hat 134.
  • Wie vorstehend erläutert, wird der Prozess der Datenübertragung vom IS-Speicher 132 in den MS-Speicher 134 im Hintergrund als „Verlagerung“ bezeichnet. Die Verlagerung wird durchgeführt, um Platz innerhalb des IS-Speichers 132 freizugeben, so dass Raum innerhalb des IS-Speichers 132 verfügbar ist, um eingehende Host-Daten zu speichern. Gemäß bestimmten Ausführungsformen, wird die Verlagerung als ein Hintergrundprozess ohne Intervention des Hosts 102 durchgeführt. Vorzugsweise wird eine Verlagerung durchgeführt, wenn die Speichervorrichtung 120 im Leerlauf ist, oder noch genauer, wenn sie nicht auf vom Host 102 empfangene Schreib- oder Lesebefehle reagiert. In bestimmten Situationen kann es vorkommen, dass dem Speichermedium 120 der IS-Speicher 132 ausgeht, während er noch benötigt wird, was den Schreibdurchsatz reduzieren könnte und im Allgemeinen unerwünscht ist. Da die Leselatenz aus dem IS-Speicher 132 jedoch auch kürzer ist als aus dem MS-Speicher 134, ist es sinnvoll, die Verlagerung von Daten zu vermeiden, die kurz nach dem Schreiben verwendet werden würden, da die Leselatenz geringer wäre, wenn sie im IS-Speicher 132 gehalten würde.
  • Während der IS-Speicher 132 im Allgemeinen sowohl in der Leistung als auch in der Ausdauer überlegen ist, ist er zu klein, um alle Host-Daten effektiv zwischenzuspeichern. Herkömmliche Techniken zum Durchführen einer Verlagerung basieren üblicherweise auf einfachen Heuristiken, wie z.B. FIFO (First-In-First-Out) oder auf einem Alterungsalgorithmus. Jedoch sind herkömmliche Verfahren zum Durchführen der Verlagerung, die auch als herkömmliche Verlagerungsschemata bezeichnet werden können, für viele Anwendungsfälle nicht optimal, da es eine klare Unterscheidung gibt, was ein optimales Verlagerungsschema zur Verwendung in einer Speichervorrichtung wäre, die zum Streamen von Videos verwendet wird, und was ein optimales Verlagerungsschema zur Verwendung in einer Speichervorrichtung wäre, die zum wiederholten Aktualisieren eines gleichen relativ kleinen Datenstücks verwendet wird. Das Beispiel für Videostreaming ist ein extremer Anwendungsfall, bei dem ein ganzes Flash-Laufwerk geschrieben und dann sofort und immer wieder umgeschrieben wird. Die wiederholte Aktualisierung eines gleichen relativ kleinen Datenstücks ist ein weiterer extremer Anwendungsfall am anderen Ende des Spektrums, bei dem eine gleiche LBA immer wieder neu geschrieben werden kann. Zwischen den vorstehend genannten Extremfallszenarien liegt eine große Grauzone. Ausführungsformen der vorliegenden Technologie, die nachstehend ausführlicher erläutert werden, können verwendet werden, um eine Verlagerung in einer Weise zu verwalten, die eine verbesserte Schreib- und Leseleistung im Vergleich zu einer herkömmlichen Verlagerung liefert. Bevor jedoch weitere Details solcher Ausführungsformen der vorliegenden Technologie bereitgestellt werden, werden zusätzliche beispielhafte Details der Speichervorrichtung 120, die verwendet werden können, um Ausführungsformen der vorliegenden Technologie zu implementieren, unter Bezugnahme auf 2, 3 und 4 beschrieben.
  • 2 ist ein Blockdiagramm einer beispielhaften Ausführungsform der Hardwarearchitektur für eine Steuerung 122, die verwendet werden kann, um die hierin beschriebene Technologie zu implementieren. Die Steuerung 122 beinhaltet einen oder mehrere Prozessoren 200 in Kommunikation mit einer Host-Schnittstelle 202 und einer Speicherschnittstelle 204. Die Host-Schnittstelle 202 kommuniziert mit der Host-Vorrichtung 102 über Host-Schnittstellensignale 114. In einer Ausführungsform ist die Host-Schnittstelle 202 eine MMC-Schnittstelle (Multi Media Card). In einer anderen Ausführungsform ist die Host-Schnittstelle 202 eine UFS-Schnittstelle (Universal Flash Storage). Die Speicherschnittstelle 204 kommuniziert mit dem nichtflüchtigen Speicher 124 über Signale 123 und kann jede geeignete Schnittstelle einschließlich des Toggle-Modus 200, 400 oder 800 sein. Der/die Prozessor(en) 200 stehen auch in Kommunikation mit einem Arbeitsspeicher (RAM) 206, der ein lokaler flüchtiger Speicher für die Steuerung 122 ist, und somit auch als Steuerung-RAM 206 bezeichnet werden kann. Der RAM 206 kann jede Art von flüchtigem Speicher sein (z.B. DRAM, SRAM usw.). In einer Ausführungsform speichert der RAM 206 Codes (Software und/oder Firmware), die den/die Prozessor(en) 200 programmieren, um die nachfolgend beschriebenen Funktionen zur Verwaltung der Speichervorrichtung 120, einschließlich der Auswahl und Ausführung eines Verlagerungsschemas, durchführen. In einer anderen Ausführungsform beinhalten ein oder mehrere Prozessor (e) 200 kundenspezifische Hardware (FPGAs, ASICS usw.) mit oder ohne Software, um die nachfolgend beschriebenen Funktionen zur Verwaltung der Speichervorrichtung 120, einschließlich der Auswahl und Ausführung eines Verlagerungsschemas, durchzuführen.
  • Die Speichervorrichtung 120 kann Funktionen zur Speicherverwaltung beinhalten. Im Betrieb kann der/die Prozessor(en) 200 Speicherverwaltungsanweisungen (die in Anweisungen enthalten sein können) für den Betrieb der Speicherverwaltungsfunktionen ausführen. Die Speicherverwaltungsfunktionen können die Zuordnung des einen oder der mehreren Teile des Speichers innerhalb der Speichervorrichtung 120 steuern, wie beispielsweise der Steuerungs-RAM 206. Zum Beispiel können Speicherverwaltungsfunktionen einen Teil des Steuerungs-RAM 206 für einen Daten-Cache zuweisen. Speicherverwaltungsfunktionen können auch angeben, welcher Teil des nichtflüchtigen Speichers 124 IS-Speicher 132 ist und welcher Teil MS-Speicher 134 ist. Eine, einige oder alle Speicherverwaltungsfunktionen können von einem oder separaten Elementen innerhalb der Speichervorrichtung 120 durchgeführt werden. Ein Teil des Steuerungs-RAM 206 kann verwendet werden, um Kopien der Verwaltungstabellen 125 oder Teile davon zwischenzuspeichern, um der Steuerung 122 zu ermöglichen, logisch-zu-physisch- (LTP) und physisch-zu-logisch- (PTL) Adressübersetzungen viel schneller durchzuführen, als wenn die Steuerung 122 immer auf die auf die im nichtflüchtigen Speicher gespeicherten Verwaltungstabellen 125 zugreifen müsste. Beispielsweise kann der Steuerungs-RAM 206 einen LTP-Cache beinhalten, der eine oder mehrere Tabellen (oder Teile davon) speichern kann, die für LTP-Übersetzungen verwendet werden, und einen PTL-Cache, der eine oder mehrere Tabellen (oder Teile davon) speichern kann, die für PTL-Übersetzungen verwendet werden. Der Steuerungs-RAM 206 kann auch verwendet werden, um andere Informationen, die in dem nichtflüchtigen Speicher 124 gespeichert sind, zwischenzuspeichern, um einen schnellen Zugriff auf solche Informationen durch die Steuerung 122 und spezieller durch den/die Prozessor(en) 200 davon bereitzustellen. Beispielsweise kann der Steuerungs-RAM 206 einen Aktivitätsprotokoll-Cache 226 beinhalten, der eine Kopie des Aktivitätsprotokolls/der Aktivitätsprotokolle 126 (oder Teile davon) speichern kann, und einen Aktivitätsmuster- und Verlagerungsschemata-Cache 228, der die potenziellen Host-Aktivitätsmuster und die zugeordneten Verlagerungsschemata 128 (oder Teile davon) speichern kann, die zur Durchführung der Verlagerung vom IS-Speicher 132 in den MS-Speicher 134 verwendet werden.
  • 3 ist ein Blockdiagramm einer beispielhaften Ausführungsform der Speichervorrichtung 120. Jedoch kann die in 3 dargestellte Architektur auch verwendet werden, um andere Typen von nichtflüchtigen Speichervorrichtungen zu implementieren. 3 zeigt, dass die Speichervorrichtung 120 die Steuerung 122 beinhaltet, die mit einem oder mehreren nichtflüchtigen Speicher-Dies 308 (die den in 1 dargestellten nichtflüchtigen Speicher 124 umfassen) verbunden ist. 3 stellt Details von einigen der Softwarekomponenten der Steuerung 122 bereit, auf die nachfolgend ausführlicher eingegangen wird. Abhängig von der Technologie, die zur Implementierung des IS-Speichers 132 verwendet wird, kann sich der IS-Speicher in einem anderen nichtflüchtigen Speicher die 308 als der MS-Speicher 134 befinden, oder ein und derselbe nichtflüchtige Speicher die 308 kann einige der IS-Speicher 132 und einige der MS-Speicher 134 beinhalten.
  • Wie hierin verwendet, ist die Steuerung 122 für ein System, das einen nichtflüchtigen Speicher verwendet, eine Vorrichtung, die die im nichtflüchtigen Speicher gespeicherten Daten verwaltet und mit einem Host kommuniziert. Die Steuerung 122 kann verschiedene Funktionen zusätzlich zu der hierin beschriebenen spezifischen Funktionalität aufweisen. Beispielsweise kann die Steuerung 122 den nichtflüchtigen Speicher formatieren, um sicherzustellen, dass der Speicher ordnungsgemäß funktioniert, schlechte Speicherzellen (die physische Speichereinheit) ausweisen und Ersatzspeicherzellen zuweisen, die für zukü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. Die 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/schreiben werden sollen, wandelt die Steuerung 122 die vom Host empfangene logische Adresse in eine physische Adresse im physischen Flash-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 Speicher-Die 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 Speicher-Die 308 kann jede geeignete Flash-Schnittstelle wie z.B. Toggle-Modus 200, 400 oder 800 oder jede andere Kommunikationsschnittstelle wie z.B. PCI Express sein. In einigen Ausführungsformen beinhaltet die Speichervorrichtung 120 einen einzelnen Kanal zwischen der Steuerung 122 und dem nichtflüchtigen Speicher-Die 308; 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 Speicher-Die 308, 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 Speicher-Die 308 vorhanden sein, selbst wenn ein einzelner Kanal in den Zeichnungen dargestellt ist.
  • Wie in 3 dargestellt, beinhaltet die Steuerung 122 ein Frontend-Modul 312, das mit einem Host interagiert, ein Backend-Modul 310, das mit einem oder mehreren nichtflüchtigen Speicher-Dies 308 interagiert, und verschiedene andere Module, die Funktionen durchführen, die nun beschrieben werden.
  • Die in 3 dargestellten Komponenten der Steuerung 122 können in Form einer gebündelten funktionalen Hardwareeinheit (z.B. einer elektrischen Schaltung), die zur Verwendung mit anderen Komponenten bestimmt ist, eines Programmcodes (z.B. Software oder Firmware), der von einem oder mehreren Prozessoren ausführbar ist, oder einer Verarbeitungsschaltung, die normalerweise eine bestimmte Funktion verwandter Funktionen erfüllt, oder einer eigenständigen Hard- oder Softwarekomponente, die mit einem größeren System verbunden ist, vorliegen. Zum Beispiel kann jedes Modul eine anwendungsspezifische integrierte Schaltung (application specific integrated circuit - ASIC), eine anwenderprogrammierbare Gatteranordnung (field programmable gate array - 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 beinhalten, 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 120 beinhaltet einen Direktzugriffsspeicher (RAM) 206 (gleicher lokaler flüchtiger Speicher wie vorstehend in Bezug auf 2 erläutert) und einen Nur-Lese-Speicher (ROM) 318. Wiederum unter Bezugnahme auf die Module der Steuerung 122 verwaltet eine Puffermanager-/Bussteuerung 314 den RAM 206 und steuert die interne Busarbitrierung der Steuerung 122. Der ROM 318 speichert den 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 216 oder der ROM 318 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. Weiterhin können in einigen Implementierungen die Steuerung 122, der RAM 206 und der ROM 318 auf separaten Halbleiterelementen angeordnet sein. In bestimmten Ausführungsformen können, anstatt die potentiellen Host-Aktivitätsmuster zu speichern und Verlagerungsschemata in den nichtflüchtigen Speicher 124 zuzuordnen, die potentiellen Host-Aktivitätsmuster und Assoziierungs-Verlagerungsschemata in dem ROM 318 gespeichert werden.
  • Das Frontend-Modul 312 beinhaltet die Host-Schnittstelle 202 (eingeführt in der Diskussion zu 2) und eine Physical-Layer-Schnittstelle (PHY) 322, die die elektrische Schnittstelle mit dem Host oder der Speichersteuerung der nächsten Ebene bereitstellen. Die Wahl des Typs der Host-Schnittstelle 202 kann von der Art des verwendeten Speichers abhängen. Beispieltypen der Host-Schnittstelle 202 können SATA, SATA Express, SAS, Fibre Channel, USB, PCIe, MMC, UFS und NVMe beinhalten, sind aber nicht darauf beschränkt. Die Host-Schnittstelle 202 erleichtert üblicherweise die Übertragung von Daten, Steuersignalen und Zeitsignalen. 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 Speicher-Die 308 der Speichervorrichtung 120 zu kommunizieren.
  • Das Backend-Modul 310 beinhaltet eine ECC-Engine (Error Correction Code) 324, welche die vom Host empfangenen Datenbytes kodiert und die aus dem nichtflüchtigen Speicher-Die 308 gelesenen Datenbytes dekodiert und Fehler korrigiert. Die ECC-Engine 324 kann eine Schaltung zum Empfangen von Daten und zum Generieren eines oder mehrerer Codewörter beinhalten, die eine Kodierung der Daten darstellen. Beispielsweise kann die ECC-Engine 324 so eingerichtet sein, dass sie eine Reed-Solomon-Kodierung, einen BCH-Code, einen LDPC-Code (Low Density Parity Check), einen oder mehrere andere Fehlererkennungs- und Korrekturcodes oder eine Kombination davon verwendet. Ein Befehlssequenzer 326 generiert Befehlssequenzen, wie z.B. Programmier- und Lösch-Befehlssequenzen, die an den nichtflüchtigen Speicher-Die 308 zu übertragen sind. Ein RAID-(Redundant Array of Independent Dies) Modul 328 verwaltet die Generierung der 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 das nichtflüchtige Speichersystem 124 geschrieben werden. In einigen Fällen kann das RAID-Modul 328 ein Teil der ECC-Engine 324 sein. Es ist zu beachten, dass die RAID-Parität als zusätzlicher Die oder zusätzliche Dies hinzugefügt werden kann, aber sie kann auch innerhalb des bestehenden Die hinzugefügt werden, z.B. als extra Ebene, oder extra Block, oder extra WLs innerhalb eines Blocks. Eine Speicherschnittstelle 204 (eingeführt in der Diskussion zu 2) liefert die Befehlssequenzen an den nichtflüchtigen Speicher-Die 308 und empfängt Statusinformationen von dem nichtflüchtigen Speicher-Die 308. In einer Ausführungsform kann die Speicherschnittstelle 204 eine DDR- Schnittstelle (Double Date Rata) und/oder eine Toggle-Modus 200, 400, oder 800 Schnittstelle sein. Eine Flash-Steuerschicht 332 steuert den Gesamtbetrieb des Backend-Moduls 310.
  • 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 darstellen, ändern, wodurch das ursprüngliche Codewort mit Fehlern verfälscht wird. 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 nicht korreliert sind. Die Verlagerung von Daten von dem IS-Speicher 132 zu dem MS-Speicher 134 kann mit oder ohne ECC-Steuerung durchgeführt werden. 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 ihn zuerst zu dekodieren und den Fehler zu korrigieren, wie dies bei On-Chip-Copy (OCC) Vorgang der Fall sein kann, kann der Fehler zu einem Hard-Fehler werden (wenn der Flash-Speicher vom Typ MLC mit der falschen Spannung programmiert ist), der Durchsatz und die Ausdauer beeinträchtigen kann. Um die Wahrscheinlichkeit und das Ausmaß von Hard-Fehlern im MS-Speicher 134 zu reduzieren, können Daten, die aus dem IS-Speicher 132 verlagert werden, dekodiert und fehlerkorrigiert 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 Hard-Fehler reduzieren sollte, wird die Verlagerungslatenz erhöht.
  • Zusätzliche Komponenten der in 3 dargestellten Speichervorrichtung 120 beinhalten eine Flash-Übersetzungsschicht (FTL) oder Medienverwaltungsschicht (MML) 338, die den Abnutzungsausgleich von Speicherzellen des nichtflüchtigen Speicher-Dies 308 durchführt. Die Speichervorrichtung 120 beinhaltet auch andere diskrete Komponenten 340, 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 verbunden 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 Flash-Verwaltung integriert werden, die Fehler behandeln und mit dem Host interagieren kann. Insbesondere ist die FTL 338 für die Einbauten der nichtflüchtigen Speicherverwaltung verantwortlich. Insbesondere kann die FTL 338 einen Algorithmus in der Firmware der Speichervorrichtung enthalten, der Schreibvorgänge von dem Host in Schreibvorgänge an den Speicher eines Speicher-Dies 308 übersetzt. Die FTL 338 kann erforderlich sein, weil: 1) der Speichereine begrenzte Ausdauer aufweisen kann; 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. FTL 338 versteht diese potentiellen Beschränkungen des Speichers, die für den Host möglicherweise nicht sichtbar sind. Dementsprechend versucht die FTL 338, die Schreibvorgänge von dem Host in Schreibvorgänge in den nichtflüchtigen Speicher 124 zu übersetzen, der ein Flash-Speicher sein kann. Die FTL 338 verwaltet auch den Prozess zur Abbildung zwischen logischen Adressen von dem Host und physikalischen Adressen auf dem Speicher-Die 308. Dies kann das Aktualisieren der L2P-Tabellen und der P2L-Tabellen während der Programmierung, das Löschen und Ausführen von Bewegungsbefehlen beinhalten.
  • Die FTL 338 wird mit einer Verwaltungssteuerung 334 des Zwischenspeichers (IS) dargestellt, die auch als IS-Verwaltung 334 bezeichnet werden kann. Der IS-Manager 334 kann aus einer Vielzahl von möglichen Verlagerungsschemata auswählen, die in dem nichtflüchtigen Speicher 124 gespeichert sind (z.B. in den Aktivitätsmustern und Verlagerungsschemata 128), im ROM 318 gespeichert sind und/oder im Steuerungs-RAM 206 gespeichert sind (z.B. in Aktivitätsmustern und Verlagerungsschemata-Cache 228). Wie im Folgenden näher beschrieben, kann der IS-Manager 334 ein Verlagerungsschema basierend auf einem vorhergesagten Host-Aktivitätsmuster auswählen und das ausgewählte Verlagerungsschema ausführen (oder dessen Ausführung veranlassen). Der IS-Manager 334 kann ein Aktivitätsmuster basierend auf dem/den Aktivitätsprotokoll(en) 126, das/die im nichtflüchtigen Speicher 124 gespeichert sind, und/oder dem Aktivitätsprotokoll-Cache 226, der im Steuerungs-RAM 206 gespeichert ist, vorhersagen. Wie Folgenden näher beschrieben, kann der IS-Manager 334 gemäß bestimmten Ausführungsformen der vorliegenden Technologie bestimmen, wann das Verlagerungsschema geändert werden sollte. Darüber hinaus kann der IS-Manager 334 gemäß bestimmten Ausführungsformen der vorliegenden Technologie neue oder weitere potenzielle Host-Aktivitätsmuster identifizieren und zugeordnete Verlagerungsschemata generieren, um die gespeicherten potenziellen Host-Aktivitätsmuster und Verlagerungsschemata 128 zu ergänzen, woraufhin die neuen Verlagerungsschemata für die Auswahl und Ausführung durch den IS-Manager 334 zur Verfügung stehen würden. Alternativ kann der IS-Verwaltungssteuerung 334 oder ein Teil davon im Backend-Modul 310 enthalten sein. Zum Beispiel kann das Backend-Modul 310 Relationsschemata unter Verwendung der Logik der FTL 338 ausführen. Es ist auch möglich, dass ein Teil der IS-Verwaltungssteuerung 334 BZ durch das Frontend-Modul 312 und insbesondere durch die Host-Schnittstelle 202 (des Frontend-Moduls 312) implementiert wird, die das eine oder die mehreren Aktivitätsprotokoll(e) 126 aufzeichnet. Allgemeiner gesagt, wird der IS-Manager 334 gemäß bestimmter Ausführungsformen von der Speichersteuerung 122 implementiert.
  • Gemäß bestimmten Ausführungsformen erfolgt die Verlagerung unter Verwendung einer speziellen Hardware-Schaltung, z.B. einer der anderen diskreten Komponenten 340, die in 3 dargestellt sind. Ein Vorteil solcher Ausführungsformen besteht darin, dass die Verlagerung durchgeführt werden kann, ohne dass der Arbeitsprozess der Speichersteuerung 122 zum Zwecke der Verlagerung gestoppt werden muss. Dies würde sowohl eine angemessene Verlagerungslatenz als auch geringere Fehlerzahlen im MS-Speicher 134 ermöglichen. Auf diese Weise kann eine relativ hohe Rate ECC (Niedrige Parität) für die Speicherung der Daten im IS-Speicher 132 verwendet werden, und später können die Daten mit einer niedrigeren Coderate (Mehr Parität) für eine längerfristige Speicherung im MS-Speicher 134 dekodiert und neu kodiert werden.
  • 4 ist ein Funktionsblockdiagramm eines beispielhaften Speicher-Dies 308. Die in 4 dargestellten Komponenten sind elektrische Schaltungen. In einer Ausführungsform beinhaltet der Speicher-Die 308 eine monolithische dreidimensionale Speicherstruktur 426 aus nichtflüchtigen Speicherzellen, eine Steuerschaltung 410 und Lese/Schreib-Schaltungen 428. In anderen Ausführungsformen kann ein zweidimensionales Array von Speicherzellen verwendet werden. Die Speicherstruktur 426 ist durch Wortleitungen über einen Zeilendecoder 424 und durch Bitleitungen über einen Spaltendecoder 432 adressierbar. Die Lese-/Schreibschaltungen 428 beinhalten mehrere Leseblöcke 450, einschließlich SB1, SB2,..., SBp (Abtastschaltung) und ermöglichen das parallele Lesen oder Programmieren einer Seite von Speicherzellen. Befehle und Daten werden zwischen der Steuerung 122 und dem Speicher-Die 308 über Signalleitungen 123 übertragen. In einer Ausführungsform beinhaltet der Speicher-Die 308 einen Satz von Eingangs- und/oder Ausgangs-(I/O-)Pins, die mit den Signalleitungen 123 verbunden sind.
  • Eine Ausführungsform der Speicherstruktur 426 weist eine monolithische dreidimensionale Speicherstruktur auf, in der mehrere Speicherebenen über (und nicht in) einem einzelnen Substrat, wie z.B. einem Wafer, ohne dazwischen liegende Substrate ausgebildet sind. Die Speicherstruktur 426 kann jede Art von nichtflüchtigem Speicher aufweisen, der monolithisch in einer oder mehreren physikalischen Ebenen von Arrays von Speicherzellen ausgebildet ist, die einen aktiven Bereich aufweisen, der über einem Siliziumsubstrat angeordnet ist. In einer Ausführungsform implementiert die Speicherstruktur 426 einen dreidimensionalen NAND-Flash-Speicher. Ein Beispiel für einen dreidimensionalen NAND-Flashspeicher ist im US-Patent Nr. 9,548,130 zu finden, das hierin durch Bezugnahme in seiner Gesamtheit aufgenommen wurde. Andere Ausführungsformen beinhalten zweidimensionale NAND-Flash-Speicher, zweidimensionale NOR-Flash-Speicher, ReRAM-Kreuzpunkt-Speicher, magnetoresistive Speicher (z.B. MRAM), Phasenwechselspeicher (z.B. PCRAM) und andere.
  • Die Steuerschaltung 410 arbeitet mit den Lese-/Schreibschaltungen 428 zusammen, um Speichervorgänge (z.B. Löschen, Programmieren, Lesen und andere) auf der Speicherstruktur 426 durchzuführen, und beinhaltet eine Zustandsmaschine 412, einen On-Chip-Adressdecodierer 414 und ein Leistungssteuermodul 416. Die Zustandsmaschine 412 stellt eine Die-Ebenensteuerung von Speichervorgängen bereit. In einer Ausführungsform ist die Zustandsmaschine 412 durch die Software programmierbar. In anderen Ausführungsformen verwendet die Zustandsmaschine 412 keine Software und ist vollständig in die Hardware (z.B. elektrischen Schaltungen) implementiert. In einer Ausführungsform beinhaltet die Steuerschaltung 410 Register, ROM-Sicherungen und andere Speichervorrichtungen zum Speichern von Standardwerten, wie beispielsweise Basisspannungen und anderen Parametern. Der On-Chip-Adressdecoder 414 stellt eine Adressschnittstelle zwischen den vom Host 102 oder der Steuerung 122 verwendeten Adressen und der von den Decodern 424 und 432 verwendeten Hardwareadresse bereit. Das Leistungssteuermodul 416 steuert die Leistung und Spannungen, die den Wortleitungen und Bitleitungen während der Speichervorgänge zugeführt werden. Es kann Treiber für Wortleitungen, Auswahltransistoren, Quellleitungen und andere Komponenten beinhalten. Das Leistungssteuermodul 416 kann Ladungspumpen zum Generieren von Spannungen beinhalten. Die Abtastblöcke 450 beinhalten Bitleitungstreiber.
  • Jede beliebige Kombination der Steuerschaltung 410, der Zustandsmaschine 412, der Decoder 414/424/432, des Leistungssteuerungsmoduls 416, der Abtastblöcke 450, der Lese-/Schreibschaltungen 428 und der Steuerung 122 kann als ein oder mehrere Schaltung(en) betrachtet werden, welche die hierin beschriebenen Funktionen ausführen.
  • Mehrere Speicherelemente in der Speicherstruktur 426 können so eingerichtet sein, dass sie in Reihe geschaltet sind oder dass jedes Element einzeln zugänglich ist. Als nicht einschränkendes Beispiel enthalten Flash-Speichervorrichtungen in einer NAND-Konfiguration (NAND-Flash-Speicher) üblicherweise Speicherelemente, die in Reihe geschaltet sind. Ein NAND-String stellt ein Beispiel für einen Satz von in Reihe geschalteten Speicherzellen und Auswahlgate-Transistoren dar, die innerhalb der Speicherstruktur 426 verwendet werden können. Ein NAND-Flash-Speicher kann so eingerichtet sein, dass das Array aus mehreren NAND-Strings zusammengesetzt ist, in denen ein NAND-String aus mehreren Speicherzellen zusammengesetzt ist, die sich eine einzelne Bitleitung teilen und auf die als eine Gruppe zugegriffen wird. Alternativ können Speicherelemente so eingerichtet sein, dass jedes Element einzeln zugänglich ist, z.B. ein NOR-Speicherarray. NAND- und NOR-Speicherkonfigurationen sind beispielhaft, und Speicherzellen können anderweitig eingerichtet sein.
  • Die Speicherzellen können auf der einzelnen Speichervorrichtungsebene in einem geordneten Array angeordnet sein, wie z.B. in einer Vielzahl von Zeilen und/oder Spalten. Jedoch können die Speicherelemente in nicht regelmäßigen oder nicht orthogonalen Konfigurationen oder in Strukturen angeordnet sein, die nicht als Arrays betrachtet werden.
  • In einer Ausführungsform ist ein dreidimensionales Speicherarray so angeordnet, dass Speicherzellen 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). Als ein nicht einschränkendes Beispiel kann eine dreidimensionale Speicherstruktur vertikal als ein Stapel von mehreren zweidimensionalen 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 Speicherzellen aufweist. Die vertikalen Spalten können in einer zweidimensionalen Konfiguration angeordnet sein, z. B. in einer x-y-Ebene, was in einer dreidimensionalen Anordnung von Speicherzellen mit Speicherzellen auf mehreren vertikal gestapelten Speicherebenen resultiert. Andere Konfigurationen von Speicherelementen in drei Dimensionen können auch ein dreidimensionales Speicherarray bilden.
  • Als ein nicht einschränkendes Beispiel können in einem dreidimensionalen NAND-Speicherarray die Speicherelemente miteinander gekoppelt sein, um vertikale NAND-Strings zu bilden, die mehrere horizontale Speichervorrichtungsebenen durchlaufen. Andere dreidimensionale Konfigurationen können in Betracht gezogen werden, wobei einige NAND-Strings Speicherelemente in einer einzelnen Speicherebene enthalten, während andere Strings Speicherelemente enthalten, die sich durch mehrere Speicherebenen erstrecken. Ein beispielhaftes Speichersystem ist eine dreidimensionale Speicherstruktur, die vertikale NAND-Strings mit Ladungsfangmaterial beinhaltet. Dreidimensionale Speicheranordnungen können auch in einer NOR-Konfigurationausgebildet sein.
  • Die Speicherstruktur 426 kann auch ein ReRAM-Kreuzpunktspeicher sein. Ein Beispiel für einen ReRAM-Kreuzpunktspeicher beinhaltet reversible Widerstandschaltelemente, die in Kreuzpunktarrays angeordnet sind, auf die durch X-Leitungen und Y-Leitungen (z.B. Wortleitungen und Bitleitungen) zugegriffen wird. In einer anderen Ausführungsform können die Speicherzellen leitfähige Brückenspeicherelemente beinhalten. Ein leitfähiges Brückenspeicherelement kann auch als programmierbare Metallisierungszelle bezeichnet werden. Ein leitfähiges Brückenspeicherelement kann als ein Zustandsänderungselement basierend auf der physikalischen Verlagerung von Ionen innerhalb eines festen Elektrolyten verwendet werden. In einigen Fällen kann ein leitfähiges Brückenspeicherelement zwei feste Metallelektroden beinhalten, eine relativ inerte (z.B. Wolfram) und eine elektrochemisch aktive (z.B. Silber oder Kupfer), mit einem dünnen Film des festen Elektrolyten zwischen den beiden Elektroden. Mit steigender Temperatur steigt auch die Mobilität der Ionen, so dass die Programmierschwelle für die leitfähige Brückenspeicherzelle abnimmt. Somit kann das leitfähige Brückenspeicherelement einen weiten Bereich von Programmschwellenwerten über die Temperatur aufweisen.
  • Die Speicherstruktur 426 kann auch ein magnetoresistiver Speicher (MRAM) sein, der Daten durch magnetische Speicherelemente speichert. In einem Beispiel sind die Elemente aus zwei ferromagnetischen Platten gebildet, von denen jede eine Magnetisierung halten kann, die durch eine dünne Isolierschicht getrennt ist. Eine der beiden Platten ein Permanentmagnet, der auf eine bestimmte Polarität eingestellt ist; Die Magnetisierung der anderen Platte kann so geändert werden, dass sie der eines externen Feldes zum Speichern des Speichers entspricht. Eine Speichervorrichtung ist aus einem Gitter solcher Speicherzellen aufgebaut. In einer Ausführungsform zur Programmierung liegt jede Speicherzelle zwischen einem Paar von rechtwinklig zueinander angeordneten Schreibleitungen, parallel zur Zelle, eine über und eine unter der Zelle. Wenn Strom durch sie geleitet wird, wird ein induziertes Magnetfeld generiert.
  • Die Speicherstruktur 426 kann auch ein Phasenwechselspeicher (PCRAM) sein, der das einzigartige Verhalten von Chalkogenidglas nutzt. Eine Ausführungsform verwendet ein GeTe - Sb2Te3 Übergitter, um nicht-thermische Phasenänderungen zu erreichen, indem man einfach den Koordinationszustand der Germaniumatome mit einem Laserimpuls (oder Lichtimpuls von einer anderen Quelle) ändert. Daher sind die Dosen der Programmierung Laserimpulse. Die Speicherzellen können gehemmt werden, indem man die Speicherzellen daran hindert, das Licht zu empfangen. Es ist zu beachten, dass die Verwendung von „Impuls“ in diesem Dokument keinen Rechteckimpuls erfordert, sondern eine (kontinuierliche oder nicht kontinuierliche) Vibration oder einen Stoß von Schall, Strom, Spannungslicht oder einer anderen Welle beinhaltet. Die Speicherstruktur 426 beinhaltet viele Speicherzellenblöcke. Ein Durchschnittsfachmann wird erkennen, dass die hierin beschriebene Technologie nicht auf eine einzige spezifische Speicherstruktur beschränkt ist, sondern viele relevante Speicherstrukturen im Sinne des Anwendungsbereichs der Technologie abdeckt, wie hierin beschrieben und als
  • Wie vorstehend erläutert, beziehen sich bestimmte Ausführungsformen der vorliegenden Technologie auf verbesserte Techniken zur Verlagerung (d.h. Übertragung) von Daten aus dem IS-Speicher (z.B. 132) in einen MS-Speicher (z.B. 134) eines nichtflüchtigen Speichers (z.B. 124) einer Speichervorrichtung (z.B. 120). Das umfassende Flussdiagramm von 5 wird verwendet, um bestimmte derartige Techniken zu beschreiben. Insbesondere wird das umfassende Flussdiagramm von 5 verwendet, um Verfahren zum Durchführen einer adaptiven Verwaltung von IS-Speichern zusammenzufassen. Solche Verfahren können von einer Speichervorrichtung (z.B. 120) verwendet werden, die Lese- und Schreibbefehle von einem Host (z.B. 102) empfängt und die einen nichtflüchtigen Speicher (z.B. 124) und eine Speichersteuerung (z.B. 122) in Kommunikation mit dem nichtflüchtigen Speicher (124) und dem Host (102) beinhaltet, wobei der nichtflüchtige Speicher (z.B., 124) einen Teil seines Speichers, der als IS-Speicher (z.B. 132) bezeichnet wird, und einen anderen Teil, der als MS-Speicher (z.B. 134) bezeichnet wird, beinhaltet, wobei der IS-Speicher niedrigere Schreib- und Leselatenzen, eine größere Ausdauer und eine geringere Speicherdichte und -kapazität als der MS-Speicher aufweist.
  • Unter Bezugnahme auf 5 beinhaltet Schritt 502 das Speichern einer Vielzahl von Verlagerungsschemata, von denen jede einem aus einer Vielzahl von potentiellen Host-Aktivitätsmustern zugeordnet ist. Die potentiellen Host-Aktivitätsmuster, die potentielle Schreib- und Lesemuster beinhalten können, können durch die Analyse von Aktivitätsprotokollen von zahlreichen verschiedenen Speichervorrichtungen bestimmt werden, die zur Speicherung von Daten für Hosts verwendet wurden, die von zahlreichen verschiedenen Arten von Benutzern betrieben werden. Wenn der Host beispielsweise ein Einprozessor-Notebook-Computer mit niedriger Leistung ist und der Benutzer ein Student ist, der hauptsächlich Filme streamt und im Internet sucht, werden die potenziellen Aktivitätsmuster des Hosts sehr unterschiedlich aussehen, als wenn der Host ein leistungsstarker Multiprozessor-Computer ist, der zur Durchführung von Simulationen und/oder Computermodellierungen verwendet wird, und der Benutzer ein Ingenieur ist. Die potenziellen Host-Aktivitätsmuster können eine bestimmte Anzahl (z.B. 100, 500 oder 1000, aber nicht darauf beschränkt) der am häufigsten erwarteten Aktivitätsmuster beinhalten, die durch die Analyse zahlreicher verschiedener Aktivitätsprotokolle identifiziert wurden. Jedem der potenziellen Host-Aktivitätsmuster ist ein Verlagerungsschema zugeordnet, das vorzugsweise für bestimmte Host-Aktivitätsmuster optimiert ist. Es kann eine Eins-zu-Eins-Entsprechung zwischen Verlagerungsschemata und potentiellen Host-Aktivitätsmustern bestehen. Mit anderen Worten kann für jedes gespeicherte potenzielle Host-Aktivitätsmuster ein einmaliges Verlagerungsschema gespeichert werden. Alternativ ist es möglich, dass mehr als eines der potentiellen Host-Aktivitätsmuster einem gleichen der Verlagerungsschemata zugeordnet werden kann. Beispielsweise können 1000 potentielle Host-Aktivitätsmuster gespeichert werden, aber es werden nur 800 Verlagerungsschemata gespeichert, so dass bestimmte potentielle Host-Aktivitätsmuster ein gleiches Verlagerungsschema teilen.
  • In bestimmten Ausführungsformen kann ein bevorzugtes Verlagerungsschema für ein potentielles Host-Aktivitätsmuster durch Optimieren einer Kostenfunktion bestimmt werden. Eine beispielhafte Kostenfunktion kann versuchen, Kosten zu minimieren oder anderweitig zu berücksichtigen, die mit dem Lesen von Daten aus dem IS-Speicher, dem Übertragen (d.h. Verlagern) von Daten von dem IS-Speicher in den MS-Speicher und dem Lesen von Daten aus dem MS-Speicher verbunden sind, ist aber nicht darauf beschränkt. Die Kosten können sich in Form von Latenzzeiten und/oder Stromverbrauch ergeben. Dies ist nur ein Beispiel für eine Kostenfunktion, mit der Verlagerungsschemata für potenzielle Host-Aktivitätsmuster festgelegt werden können, die nicht alle Bereiche umfassen soll. Unterschiedliche Verlagerungsschemata können unterschiedliche Verlagerungseigenschaften aufweisen, wie beispielsweise, aber nicht darauf beschränkt, unterschiedliche Zeit- und Längeneigenschaften. Zeiteigenschaften können spezifizieren, wie oft oder allgemeiner die zeitlichen Details, wann eine Verlagerung stattfinden soll. Längeneigenschaften können beispielsweise die Länge von Datenstücken spezifizieren, die aus dem IS-Speicher in den MS-Speicher verlagert werden sollen.
  • Unter kurzem Rückbezug auf 1 werden die Vielzahl von potenziellen Host-Aktivitätsmustern und die zugeordneten Verlagerungsschemata 128 als im nichtflüchtigen Speicher 124 gespeichert dargestellt und können insbesondere im MS-Speicher 134 gespeichert werden. Die Vielzahl von potentiellen Host-Aktivitätsmustern und zugeordneten Verlagerungsschemata können alternativ im in 3 dargestellten ROM 318 gespeichert werden. Zusätzlich kann, wie in 2 dargestellt, um einen schnelleren und leistungseffizienteren Zugriff auf die Vielzahl von potenziellen Host-Aktivitätsmuster und zugeordneter Verlagerungsschemata zu ermöglichen, eine Kopie der Vielzahl von potentiellen Host-Aktivitätsmustern und zugeordneten Verlagerungsschemata (oder Teilen davon) in einem Cache 228 in dem RAM 206 gespeichert werden, der in der Speichersteuerung 122 enthalten ist und/oder von dieser zugänglich ist. Eine anfängliche Vielzahl potentieller Host-Aktivitätsmuster und assoziierter Verschiebungsschemata 128 kann identifiziert und in der Speichervorrichtung 120 während einer einmaligen Erstkonfiguration der Speichervorrichtung 120 gespeichert werden, z.B. nachdem die Speichervorrichtung 120 hergestellt, aber noch nicht zum Verkauf freigegeben wurde. Die potenziellen Host-Aktivitätsmuster und zugeordneten Verlagerungsschemata 128 oder Teile davon können bei jedem Einschalten oder Zurücksetzen der Speichervorrichtung 120 in den Cache 228 kopiert werden. Wie nachfolgend beschrieben, können gemäß bestimmten Ausführungsformen oder der vorliegenden Technologie zusätzliche potentielle Host-Aktivitätsmuster und Assoziierungs-Verlagerungsschemata hinzugefügt werden, nachdem die Speichervorrichtung 120 verteilt wurde und zum Speichern von Host-Daten für einen Benutzer verwendet wird.
  • Unter erneuter Bezugnahme auf 5 beinhaltet Schritt 504 das Führen eines oder mehrerer Aktivitätsprotokolle, welche die Vorgänge im Zusammenhang mit den im nichtflüchtigen Speicher 124 der Speichervorrichtung gespeicherten Daten verfolgen 120. Solche Aktivitätsprotokolle können Schreibvorgänge zum Schreiben von Daten in den IS-Speicher 132, Schreibvorgänge zum Schreiben von Daten in den MS-Speicher 134, Lesevorgänge zum Lesen von Daten aus dem IS-Speicher 132 und Lesevorgänge zum Lesen von Daten aus dem MS-Speicher 134 verfolgen, sind aber nicht darauf beschränkt. Unter kurzem Rückbezug auf 1 können ein oder mehrere Aktivitätsprotokolle 126 in dem nichtflüchtigen Speicher 124 gespeichert werden. Wie in 2 dargestellt, kann zusätzlich, um einen schnelleren und leistungseffizienteren Zugriff auf die Aktivitätsprotokolle 126 zu ermöglichen, eine Kopie der Aktivitätsprotokolle 126 (oder Teile davon) in einem Cache 226 im RAM 206 gespeichert werden, der in der Speichersteuerung 122 enthalten ist und/oder von dieser zugänglich ist. Einträge in den Aktivitätsprotokollen 126 können in Form von logischen Blockadressen (LBAs) und/oder LBA-Bereichen angegeben werden, vorzugsweise mit Zeitinformationen (z.B. einem Zeitstempel), die angeben, wann Schreib- und Lesevorgänge durchgeführt werden. Auf diese Weise kann die relative Zeitsteuerung der Schreib- und Lesevorgänge, einschließlich der zeitlichen Lücken zwischen solchen Vorgängen, verfolgt werden.
  • Unter erneuter Bezugnahme auf 5 beinhaltet Schritt 506 das Speichern von Daten (z.B. Host-Daten) im IS-Speicher (z.B. 132) der Speichervorrichtung (z.B. 120) als Reaktion auf das Empfangen eines oder mehrerer Schreibbefehle von einem Host (z.B. 102). Jede oder mehrere verschiedene bekannte oder zukünftig entwickelte Techniken können von einer Speichersteuerung (z. B. 122) verwendet werden, um zu bestimmen, wann Daten im IS-Speicher 132 gespeichert werden sollen. Beispielsweise können für bestimmte Speichervorrichtungen 120 Daten immer im IS-Speicher 132 der Speichervorrichtung gespeichert werden, bevor sie zu einem späteren Zeitpunkt gemäß einem Verlagerungsschema in den MS-Speicher 134 verlagert werden. Für eine andere Speichervorrichtung 120 kann die Speichersteuerung 122 derselben bestimmen, dass in bestimmten Fällen Daten direkt in den MS-Speicher 134 geschrieben werden sollten, ohne zuerst im IS-Speicher 132 gespeichert zu werden. Andere Variationen sind ebenfalls möglich und liegen innerhalb des Umfangs der hier beschriebenen Ausführungsformen. Gemäß einer Ausführungsform wird bei der Speicherung von Daten im IS-Speicher 132 das Aktivitätsprotokoll aktualisiert, oder genauer gesagt, ein oder mehrere entsprechende Einträge werden dem Aktivitätsprotokoll hinzugefügt. Dementsprechend können, obwohl Schritt 504 vor Schritt 506 in 5 dargestellt ist, Aspekte von Schritt 504 gleichzeitig mit oder kurz nach Aspekten von Schritt 506 auftreten. Das Aktivitätsprotokoll kann allgemeiner gesagt immer dann aktualisiert werden, wenn Schreib- und Lesevorgänge auftreten.
  • Weiterhin auf 5 bezogen, beinhaltet Schritt 508 das Vorhersagen eines Host-Aktivitätsmusters basierend auf dem/den Aktivitätsprotokoll(en). Ein vorhergesagtes Host-Aktivitätsmuster kann in Form von LBAs und/oder LBA-Bereichen und auch in Form von zeitlichen Informationen angegeben werden. Ein vorhergesagtes Host-Aktivitätsmuster kann ein vorhergesagtes Schreibmuster sein. Zusätzlich oder alternativ kann ein vorhergesagtes Host-Aktivitätsmuster ein vorhergesagtes Lesemuster sein. Allgemeiner gesagt kann ein vorhergesagtes Host-Aktivitätsmuster ein vorhergesagtes Muster von Schreib - und/oder Lesevorgängen sein, die für den Host 102 durchgeführt werden, der Daten in die Speichervorrichtung 120 schreibt und Daten von dieser liest. Schritt 508 kann von der Speichersteuerung 122 oder genauer gesagt von deren IS-Manager 334 durchgeführt werden. Es wäre auch möglich, dass Schritt 508 durch eine Schaltung oder eine andere diskrete Komponente (z. B. 340) durchgeführt wird, die zur Vorhersage von Host-Aktivitätsmustern bestimmt ist und möglicherweise auch zum Auswählen und/oder Ausführen von Verlagerungsschemata vorgesehen ist. Das/die Aktivitätsprotokoll(e) 126 können im nichtflüchtigen Speicher 126 gespeichert werden, und das/die Aktivitätsprotokoll(e) oder Teile davon können im Aktivitätsprotokoll-Cache 226 des RAM, wie vorstehend beschrieben, eingelöst werden.
  • Schritt 508 kann durch Erkennen eines wiederholten Musters aus dem Aktivitätsprotokoll und Vorhersagen, dass das Muster weiterhin wiederholt wird, durchgeführt werden. Als erstes Beispiel kann ein Aktivitätsprotokoll festlegen, dass Daten in einen bestimmten Bereich von LBAs geschrieben werden, dann dreißig Mal gelesen werden, bevor sie gelöscht werden, und dann wird diese Aktivität 100 Mal wiederholt. Der beispielhafte Inhalt eines solchen Aktivitätsprotokolls ist in 9 dargestellt. Basierend auf dem Aktivitätsprotokoll kann in Schritt 508 vorhergesagt werden, dass dieses gleiche Aktivitätsmuster weiterhin wiederholt wird. Mit anderen Worten kann ein erstes Beispiel für ein vorhergesagtes Host-Aktivitätsmuster das wiederholte Schreiben von Daten in einen bestimmten Bereich von LBAs sein, dann dreißigmaliges Lesen von Daten aus dem bestimmten Bereich von LBAs und dann Löschen der Daten aus dem bestimmten Bereich von LBAs.
  • Als zweites Beispiel kann ein Aktivitätsprotokoll festlegen, dass: Daten in LBA 0 bis LBA 99 geschrieben werden, dann Daten aus LBA 3 und LBA 5 gelesen werden; und dann nach einer Pause Daten in LBA 100 bis LBA 199 geschrieben, und Daten aus LBA 103 und LBA 105 gelesen werden; und dann nach einer Pause Daten in LBA 200 bis 299 geschrieben, und dann Daten aus LBA 203 und LBA 205 gelesen werden; und dann nach einer Pause Daten in LBA 300 bis 399 geschrieben, und dann Daten aus LBA 303 und LBA 305 gelesen werden; und dann nach einer Pause Daten in LBA 400 bis 499 geschrieben, und dann Daten aus LBA 403 und LBA 405 gelesen werden; und dann nach einer Pause Daten in LBA 500 bis 599 geschrieben, und dann Daten aus LBA 503 und LBA 505 gelesen werden. Der beispielhafte Inhalt eines solchen Aktivitätsprotokolls ist in 10 dargestellt. Basierend auf dem Aktivitätsprotokoll kann vorhergesagt werden, dass die Daten als nächstes in LBA 600 bis 699 geschrieben werden und dann aus LBA 603 und 605 gelesen werden, oder allgemeiner gesagt kann ein zweites beispielhaftes vorhergesagtes Host-Aktivitätsmuster das Schreiben in die LBAs N*100 bis (N*100) + 99 und das Lesen von Daten aus den LBAs (N*100)+3 und (N*100)+5 sein, wobei N eine ganze Zahl ist, die erhöht wird. Dies sind nur einige Beispiele, die nicht allumfassend sein sollen.
  • Unter Rückbezug auf das Flussdiagramm von 5 beinhaltet Schritt 510 das Auswählen eines der Vielzahl von gespeicherten Verlagerungsschemata, die auf die im IS-Speicher gespeicherten Daten anzuwenden sind. Das Auswählen in Schritt 510 wird basierend auf dem Host-Aktivitätsmuster durchgeführt, das in Schritt 508 vorhergesagt wurde. Beispielhafte Details darüber, wie man eines der Vielzahl von gespeicherten Verlagerungsschemata auswählt, die auf die im IS-Speicher gespeicherten Daten anzuwenden sind, werden in Schritt 508 im Folgenden unter Bezugnahme auf die 7A und 7B beschrieben.
  • Als nächstes wird in Schritt 512 das ausgewählte Verlagerungsschema ausgeführt, um dadurch einen oder mehrere Teile der im IS-Speicher (z.B. 132) gespeicherten Daten selektiv in den MS-Speicher (z.B. 134) zu verlagern (d.h. zu übertragen). Unter erneuter Bezugnahme auf das erste vorgenannte Beispiel (wobei das vorhergesagte Host-Aktivitätsmuster angab, dass Daten in einen bestimmten Bereich von LBAs geschrieben werden, dann dreißig Mal gelesen werden, bevor sie gelöscht werden, und dann diese Aktivität 100 Mal wiederholt wird), kann dann das in Schritt 510 ausgewählte und in Schritt 512 ausgeführte Verlagerungsschema dazu führen, dass die weiterhin geschriebenen, wiederholt gelesenen und dann gelöschten Daten nur im IS-Speicher gespeichert werden (ohne jemals in den MS-Speicher verlagert zu werden), und dass alle anderen im IS-Speicher gespeicherten Daten in den MS-Speicher verlagert werden können.
  • Es wird nun auf das zweite Beispiel Bezug genommen, in dem das vorhergesagte Host-Aktivitätsmuster darin bestand, Daten in die LBAs N*100 bis (N*100) + 99 zu schreiben, aus den LBAs (N*100)+3 und (N*100)+5 zu lesen und dann die Daten zu löschen. Unter der Annahme, dass die Daten immer zuerst im IS-Speicher (z.B. 132) gespeichert werden, kann das in Schritt 510 ausgewählte und in Schritt 512 ausgeführte Verlagerungsschema dazu führen, dass die Daten im Wert von 100 LBAs für eine ausreichende Zeit im IS-Speicher gehalten werden, so dass die beiden LBAs (d.h. LBAs (N*100)+3 und (N*100)+5) gelesen werden können, und dann alle 100 LBAs in den MS-Speicher (z.B. 134) verlagert werden. Das Flussdiagramm auf hoher Ebene von 11 veranschaulicht einige zusätzliche Details, wie ein solches Verlagerungsschema, nachdem es in Schritt 510 ausgewählt wurde, in Schritt 512 gemäß einer Ausführungsform ausgeführt werden kann. Unter Bezugnahme auf 11 werden in Schritt 1102 als Reaktion auf das Empfangen eines Schreibbefehls zum Speichern von Daten in LBA N*100 bis LBA ((N*100)+99) die LBAs auf physikalische Blockadressen (PBAs) entsprechend dem IS-Speicher 132 abgebildet und das LTP-Mapping innerhalb der Verwaltungstabellen 125 entsprechend aktualisiert. Wie in Schritt 1104 angegeben, werden die Daten für eine ausreichende Zeit im IS-Speicher 132 gespeichert gehalten, damit Teile der Daten aus dem LBA ((N *100) + 3) und dem LBA ((N *100) + 5)) gelesen werden können, die auf PBAs im IS-Speicher 132 abgebildet werden. Nachdem die Datenteile aus dem LBA ((N*100)+3) und dem LBA ((N*100)+5)) und allgemeiner gesagt aus dem IS-Speicher 132 gelesen wurden, werden die Daten dann in den MS-Speicher 134 verlagert (gemäß dem Verlagerungsschema, das in Schritt 510 basierend auf dem vorhergesagten Host-Aktivitätsmuster ausgewählt wurde), und das LTP-Mapping innerhalb der Verwaltungstabellen 125 wird entsprechend aktualisiert.
  • Ein alternatives Verlagerungsschema, das in Schritt 510 ausgewählt und in Schritt 512 ausgeführt werden kann, kann dazu führen, dass nur die beiden ausgelesenen LBAs (d.h. LBAs (N*100)+3 und (N*100)+5) im IS-Speicher gehalten werden (z.B., 132) für eine ausreichende Zeitspanne, um das Lesen dieses Teils der Daten zu ermöglichen, während der Rest der Daten im Wesentlichen sofort in den MS-Speicher (z.B. 134) verlagert wird, und dann, nachdem die beiden LBAs (d.h. LBAs (N*100)+3 und (N*100)+5) für den IS-Speicher gelesen wurden, werden sie auch in den MS-Speicher verlagert. Dies sind nur einige Beispiele, die nicht allumfassend sein sollen.
  • Das Flussdiagramm auf hoher Ebene von 12 veranschaulicht einige zusätzliche Details, wie ein solches alternatives Verlagerungsschema, nachdem es in Schritt 510 ausgewählt wurde, in Schritt 512 gemäß einer Ausführungsform ausgeführt werden kann. Unter Bezugnahme auf 12 werden in Schritt 1202 als Reaktion auf das Empfangen eines Schreibbefehls zum Speichern von Daten in LBA N*100 bis LBA ((N*100)+99) die LBAs auf physikalische Blockadressen (PBAs) entsprechend dem IS-Speicher 132 abgebildet und das LTP-Mapping innerhalb der Verwaltungstabellen 125 entsprechend aktualisiert. Wie in Schritt 1204 angegeben, werden die Daten für eine ausreichende Zeit im IS-Speicher 132 gespeichert gehalten, damit Teile der Daten aus dem LBA ((N *100) + 3) und dem LBA ((N *100) + 5)) gelesen werden können, die auf PBAs im IS-Speicher 132 abgebildet werden. Wie in Schritt 1206 angegeben, werden während des Wartens auf das Auslesen der Datenteile (entsprechend dem LBA ((N*100)+3) und dem LBA ((N*100)+5) aus dem IS-Speicher, andere Datenteile im Bereich der LBAs (von LBA N*100 bis LBA ((N*100)+99)) aus dem IS-Speicher 132 in den MS-Speicher 134 (gemäß dem Verlagerungsschema, das aufgrund des vorhergesagten Host-Aktivitätsmusters ausgewählt wurde) verlagert, und die Verwaltungstabellen 125 werden entsprechend aktualisiert. Nachdem dann die Datenteile (entsprechend dem LBA ((N*100)+3) und dem LBA ((N*100)+5) aus dem IS-Speicher 132 gelesen wurden, werden diese Datenteile aus dem IS-Speicher 132 in den MS-Speicher 134 verlagert (gemäß dem Verlagerungsschema, das aufgrund des vorhergesagten Host-Aktivitätsmusters ausgewählt wurde), und die Verwaltungstabellen werden entsprechend aktualisiert, um die LBAs auf PBAs im MS-Speicher 134 abzubilden. Ob das im Allgemeinen mit Bezug auf 11 beschriebene Verlagerungsschema oder das im Allgemeinen mit Bezug auf 12 beschriebene Verlagerungsschema dasjenige ist, das einem bestimmten vorhergesagten Aktivitätsmuster des Gastgebers zugeordnet ist (und somit in Schritt 510 ausgewählt wird), kann von der Kostenfunktion abhängen, die zur Generierung der Verlagerungsschemata verwendet wird, und den Kosten (z.B. Latenz- und Energieverbrauchskosten), die mit den verschiedenen Vorgängen im Zusammenhang mit dem Schreiben und Lesen von Daten in und aus dem IS-Speicher 132 und dem MS-Speicher 134 verbunden sind, sowie mit den Kosten für das Verlagern von Daten aus dem IS-Speicher 132 in den MS-Speicher 134, ist aber nicht darauf beschränkt.
  • Unter Bezugnahme auf 6 wird gemäß bestimmten Ausführungsformen der vorliegenden Technologie von Zeit zu Zeit (z.B. periodisch oder aufgrund eines periodischen oder aperiodischen Triggerereignisses) in Schritt 614 bestimmt, ob auf die im IS gespeicherten Daten ein anderes Verlagerungsschema angewendet werden soll oder nicht. Wie in Schritt 616 angegeben, wird als Reaktion auf das Bestimmen, dass ein anderes Verlagerungsschema auf die im IS-Speicher gespeicherten Daten angewendet werden sollte, ein anderes aus der Vielzahl von gespeicherten Verlagerungsschemata ausgewählt, um auf die im IS-Speicher gespeicherten Daten angewendet zu werden. Dann wird in Schritt 618 das ausgewählte andere der Verlagerungsschemata ausgeführt, um dadurch einen oder mehrere Teile der Daten aus dem IS-Speicher in den MS-Speicher gemäß dem ausgewählten anderen der Verlagerungsschemata selektiv zu verlagern. Gemäß bestimmten Ausführungsformen wird Schritt 614 durchgeführt, indem basierend auf dem Aktivitätsprotokoll (dem Einträge hinzugefügt werden, wenn Schreib- und Lesevorgänge durchgeführt werden) bestimmt wird, ob sich die vorhergesagte Host-Aktivität geändert hat und ob sie sich geändert hat, ob ein anderes Verlagerungsschema ausgewählt (basierend auf der neu oder geändert vorhergesagten Host-Aktivität) und dann ausgeführt werden soll. Die vorhergesagte Host-Aktivität kann sich ändern, wenn der Benutzer des Hosts sein Verhalten ändert, z.B. durch Umschalten von der Nutzung des Hosts zum Streaming eines Videos auf die Nutzung des Hosts zur Durchführung einer Simulation.
  • Die Schritte 614, 616 und 618, die unter Bezugnahme auf 6 beschrieben wurden, können nach den Schritten 508, 510 und 512 erfolgen, die unter Bezugnahme auf 5 beschrieben wurden. Gemäß bestimmten Ausführungsformen können die Schritte 614, 616 und 618 tatsächlich weitere Instanzen der Schritte 508, 510 und 512 sein. Genauer gesagt, unter Bezugnahme auf 5, kann nach Durchführung von Schritt 512 eine weitere Instanz von Schritt 508 durchgeführt werden, und wenn sich das vorhergesagte Host-Aktivitätsmuster geändert hat (d.h. wenn es ein neues vorhergesagtes Host-Aktivitätsmuster gibt), dann kann ein anderes Verlagerungsschema an einer anderen Instanz von Schritt 510 ausgewählt und an einer anderen Instanz von Schritt 512 ausgeführt werden. Eine solche Rückkehr zu Schritt 508 wird durch die gestrichelte, gepfeilte Linie 513 dargestellt. Des Weiteren können, wie vorstehend erläutert, das/die in Schritt 504 gespeicherte(n) Aktivitätsprotokoll(e) kontinuierlich aktualisiert werden, da zusätzliche Schreib- und/oder Lesevorgänge durchgeführt werden, und die im IS-Speicher in Schritt 506 gespeicherten Daten können sich als Reaktion auf vom Host empfangene Schreibbefehle sowie basierend auf Teilen von im IS-Speicher gespeicherten Daten, die in den MS-Speicher in Fällen von Schritt 512 verlagert werden, kontinuierlich ändern.
  • 7A wird nun verwendet, um zusätzliche Details von Schritt 510 gemäß einer Ausführungsform der vorliegenden Technologie zu beschreiben. Genauer gesagt, wird 7A verwendet, um zu beschreiben, wie eines der gespeicherten Verlagerungsschemata basierend auf einem vorhergesagten Host-Aktivitätsmuster ausgewählt werden kann. Unter Bezugnahme auf 7A wird in Schritt 702 das vorhergesagte Host-Aktivitätsmuster mit einem der gespeicherten potenziellen Host-Aktivitätsmuster verglichen, um dadurch einen Übereinstimmungspunktwert zu generieren, der auf einen Grad an Übereinstimmung zwischen dem vorhergesagten Host-Aktivitätsmuster und demjenigen der potenziellen Host-Aktivitätsmuster hinweist. Wie aus den Schritten 704 und 702 ersichtlich ist, werden solche Vergleiche wiederholt, bis für jedes der gespeicherten potentiellen Host-Aktivitätsmuster ein Übereinstimmungspunktwert bestimmt wird, und dann wird in Schritt 706 das Verlagerungsschema ausgewählt, das dem potentiellen Host-Aktivitätsmuster mit dem höchsten Übereinstimmungspunktwert zugeordnet ist.
  • 7B wird nun verwendet, um zusätzliche Details von Schritt 510 gemäß einer anderen Ausführungsform der vorliegenden Technologie zu beschreiben. Unter Bezugnahme auf 7B wird in Schritt 702 (der derselbe wie Schritt 702 in 7A ist) das vorhergesagte Host-Aktivitätsmuster mit einem der gespeicherten potenziellen Host-Aktivitätsmuster verglichen, um dadurch einen festgelegten Übereinstimmungspunktwert zu generieren, der auf einen Grad an Übereinstimmung zwischen dem vorhergesagten Host-Aktivitätsmuster und dem einen der potenziellen Host-Aktivitätsmuster hinweist. Als Nächstes wird in Schritt 703 bestimmt, ob der Übereinstimmungspunktwert einen Übereinstimmungsschwellenwert überschreitet. Wenn der Übereinstimmungspunktwert den Übereinstimmungsschwellenwert überschreitet, wird in Schritt 705 das gespeicherte Verlagerungsschema ausgewählt, das dem potenziellen Host-Aktivitätmuster mit dem Übereinstimmungspunktwert, der den Schwellenwert überschreitet, zugeordnet ist. Wenn der Übereinstimmungspunktwert den Übereinstimmungsschwellenwert nicht überschreitet, wie aus den Schritten 704 und 702 ersichtlich ist, werden solche Vergleiche wiederholt, bis eines der potenziellen Host-Aktivitätsmuster einen Übereinstimmungspunktwert aufweist, der den Übereinstimmungsschwellenwert überschreitet und in Schritt 705 ausgewählt wird, oder bis alle potenziellen Host-Aktivitätsmuster mit dem vorhergesagten Host-Aktivitätsmuster verglichen wurden, und wenn keines einen Übereinstimmungspunktwert aufweist, der den Übereinstimmungsschwellenwert überschreitet, wird das potenzielle Host-Aktivitätsmuster mit dem höchsten Übereinstimmungspunktwert in Schritt 706 ausgewählt. In der mit Bezug auf 7B beschriebenen Ausführungsform wird das Verlagerungsschema ausgewählt, das dem ersten potenziellen Host-Aktivitätmuster zugeordnet ist, das bestimmt wurde, um einen Übereinstimmungspunktwert zu haben, der einen festgelegten Übereinstimmungsschwellenwert überschreitet. Allgemeiner gesagt, kann gemäß bestimmten Ausführungsformen ein Verlagerungsschema ausgewählt werden, das einem der potenziellen Host-Aktivitätsmuster zugeordnet ist, das bestimmt wurde, um einen Übereinstimmungspunktwert zu haben, der einen festgelegten Übereinstimmungsschwellenwert überschreitet. Alternativ oder zusätzlich kann das Verlagerungsschema ausgewählt werden, das den potenziellen Host-Aktivitätsmustern zugeordnet ist, die als dasjenige mit dem höchsten Übereinstimmungspunktwert bestimmt werden. Auch andere Variationen sind möglich, während sie noch im Rahmen der hierin beschriebenen Ausführungsformen liegen. Mit anderen Worten, unter Rückbezug auf 5 kann in Schritt 510 das eine aus der Vielzahl von gespeicherten Verlagerungsschemata, das basierend auf den Ergebnissen der Vergleiche ausgewählt wird, entweder das Auswählen des einen aus der Vielzahl von gespeicherten Verlagerungsschemata beinhalten, die dem einen der potenziellen Host-Aktivitätsmuster mit dem höchsten Übereinstimmungspunktwert zugeordnet sind, oder das Auswählen eines aus der Vielzahl von gespeicherten Verlagerungsschemata, die einem gespeicherten potenziellen Host-Aktivitätsmuster zugeordnet sind, für das der Übereinstimmungspunktwert den festgelegten Übereinstimmungsschwellenwert überschreitet.
  • Unter Bezugnahme auf 8 kann gemäß bestimmten Ausführungsformen der vorliegenden Technologie von Zeit zu Zeit ein oder mehrere weitere potenzielle Host-Aktivitätsmuster, die zum Schreiben von Daten in und/oder Lesen von Daten aus dem nichtflüchtigen Speicher verwendet werden können, in Schritt 802 basierend auf dem Aktivitätsprotokoll identifiziert werden, das, wie vorstehend erläutert, kontinuierlich aktualisiert wird. Weiterhin auf 8 bezogen kann in Schritt 804 für jedes der identifizierten weiteren potenziellen Host-Aktivitätsmuster ein weiteres Verlagerungsschema generiert werden, und in Schritt 806 werden das/die weitere(n) Verlagerungsschema(ta) zusammen mit den zugeordneten weiteren potenziellen Host-Aktivitätsmustern gespeichert. Das/die weiteren Verschiebungsschema(ta) stehen nach der Generierung und Speicherung anschließend dem IS-Manager 334 zur Auswahl und Ausführung zur Verfügung. Wie vorstehend unter Bezugnahme auf das Flussdiagramm von 5 beschrieben, hätte die anfängliche Vielzahl von potentiellen Host-Aktivitätsmustern (und zugeordneten Verlagerungsschemata), die in Schritt 502 gespeichert wurden, während einer einmaligen Erstkonfiguration der Speichervorrichtung 120 identifiziert und in der Speichervorrichtung 120 gespeichert werden können, z.B. nachdem die Speichervorrichtung 120 hergestellt wurde, aber bevor die Speichervorrichtung 120 noch zum Verkauf freigegeben wurde. Im Gegensatz dazu werden die Schritte 802, 804 und 806 durchgeführt, nachdem die Speichervorrichtung 120 bereits von einer Host-Vorrichtung 102 zum Schreiben und Lesen von Daten in und aus dem nichtflüchtigen Speicher 124 der Speichervorrichtung 120 verwendet wird.
  • Gemäß bestimmten Ausführungsformen kann die Speichersteuerung 122 oder deren IS-Manager 334 bestimmen, dass es zweckmäßig ist, weitere potenzielle Host-Aktivitätsmuster zu identifizieren, wenn Vergleiche zwischen einem vorhergesagten Host-Aktivitätsmuster und den gespeicherten potenziellen Host-Aktivitätsmustern keine Übereinstimmungspunktwerte ergeben, die einen festgelegten Übereinstimmungsschwellenwert überschreiten. Dies würde einen wahrscheinlichen Hinweis darauf liefern, dass keines der gespeicherten Verlagerungsschemata im Wesentlichen für die im IS-Speicher gespeicherten Daten optimiert ist. Alternativ oder zusätzlich können weitere potentielle Host-Aktivitätsmuster periodisch oder aperiodisch als Reaktion auf eine andere Art von Trigger identifiziert werden. In bestimmten Ausführungsformen kann ein weiteres potenzielles Host-Aktivitätsmuster einfach ein vorhergesagtes Host-Aktivitätsmuster sein, für das es noch kein ähnliches gespeichertes potenzielles Host-Aktivitätsmuster gibt (z.B. ein vorhergesagtes Host-Aktivitätsmuster, für das kein Übereinstimmungspunktwert einen festgelegten Übereinstimmungsschwellenwert überschritten hat). In anderen Ausführungsformen können weitere potentielle Host-Aktivitätsmuster allgemeiner basierend auf wiederauftretenden Mustern identifiziert werden, die aus dem gespeicherten Aktivitätsprotokoll identifiziert werden. In bestimmten Ausführungsformen werden weitere potentielle Host-Aktivitätsmuster und weitere damit verbundene Verlagerungsschemata durch die Speichervorrichtung 120 selbst identifiziert und generiert, z.B. durch die Speichersteuerung 122 oder deren IS-Manager 334. In anderen Ausführungsformen können weitere potentielle Host-Aktivitätsmuster und weitere diesen zugeordneten Verlagerungsschemata, während einer Firmware-Aktualisierung oder dergleichen auf die gespeicherte Vorrichtung 120 hochgeladen werden.
  • Die Speichersteuerung 122 oder deren IS-Manager 334 können ein weiteres Verlagerungsschema generieren, das einem identifizierten weiteren potentiellen Host-Aktivitätsmuster zugeordnet ist, indem eine Kostenfunktion optimiert wird. Eine beispielhafte Kostenfunktion kann versuchen, Kosten zu minimieren oder anderweitig zu berücksichtigen, die mit dem Lesen von Daten aus dem IS-Speicher, dem Übertragen (d.h. Verlagern) von Daten von dem IS-Speicher in den MS-Speicher und dem Lesen von Daten aus dem MS-Speicher verbunden sind, ist aber nicht darauf beschränkt. Die Kosten können sich in Form von Latenzzeiten und/oder Stromverbrauch ergeben, sind aber nicht darauf beschränkt. Dies ist nur ein Beispiel einer Kostenfunktion, das nicht allumfassend sein soll.
  • Gemäß bestimmten Ausführungsformen der vorliegenden Technologie werden die Prozesse, die durchgeführt werden, um eine adaptive Verwaltung des IS-Speichers zu erreichen, als Hintergrundprozesse durchgeführt. Dies kann die Prozesse beinhalten, die verwendet werden, um ein Host-Aktivitätsmuster basierend auf einem Aktivitätsprotokoll vorherzusagen, eines aus einer Vielzahl von gespeicherten Verlagerungsschemata basierend auf dem vorhergesagten Host-Aktivitätsmuster auszuwählen und das ausgewählte Verlagerungsschema auszuführen. Andere Prozesse, die als Hintergrundprozesse durchgeführt werden können, können Prozesse beinhalten, die verwendet werden, um zu bestimmen, ob ein anderes Verlagerungsschema angewendet werden sollte oder nicht, sowie die Auswahl und Ausführung eines anderen Verlagerungsschemas. Weitere Prozesse, die als Hintergrundprozesse durchgeführt werden können, können Prozesse beinhalten, die verwendet werden, um weitere potentielle Host-Aktivitätsmuster zu identifizieren, und verwendet werden, um weitere Verschiebungsschemata zu generieren und zu speichern, die den weiteren potentiellen Host-Aktivitätsmustern zugeordnet sind.
  • Ausführungsformen der hierin beschriebenen vorliegenden Technologie sollten den Lese- und Schreibdurchsatz für die meisten Benutzer erhöhen und auch dazu führen, dass weniger Blöcke für die Überversorgung verwendet werden. Dies sollte sich vorteilhaft auf die Steigerung der Ausdauer und die Reduzierung des Stromverbrauchs auswirken.
  • Bestimmte Ausführungsformen der vorliegenden Technologie betreffen eine Speichervorrichtung, die Lese- und Schreibbefehle von einem Host empfängt, wobei die Speichervorrichtung einen nichtflüchtigen Speicher und einen Zwischenspeicher (IS)-Manager beinhaltet. Der nichtflüchtige Speicher beinhaltet einen Teil, von dem ein Teil als Speicher der Zwischenspeicherung (IS) und ein anderer Teil als Speicher der Hauptspeicherung (MS) bezeichnet wird, wobei der IS-Speicher niedrigere Schreib- und Leselatenzen als der MS-Speicher aufweist, der IS-Speicher eine größere Ausdauer als der MS-Speicher aufweist und der IS-Speicher eine geringere Speicherdichte und -kapazität als der MS-Speicher aufweist. Der IS-Manager ist eingerichtet, um eine Host-Aktivität vorherzusagen und ein Verlagerungsschema basierend auf der vorhergesagten Host-Aktivität auszuwählen und auszuführen, um dadurch selektiv einen oder mehrere Teile von Daten von dem IS-Speicher in den MS-Speicher gemäß dem ausgewählten Verlagerungsschema zu verlagern. Gemäß bestimmten Ausführungsformen beinhaltet der IS-Speicher einen Flash-Speicher vom SLC-Typ (Single-Level Cell), wobei ein einzelnes Datenbit pro Speicherzelle gespeichert wird, und der MS-Speicher beinhaltet einen Flash-Speicher vom MLC-Typ (Multi-Level Cell), wobei zwei oder mehr Datenbits pro Speicherzelle gespeichert werden.
  • Die Speichervorrichtung kann eine Speichersteuerung in Kommunikation mit dem nichtflüchtigen Speicher beinhalten, wobei die Speichersteuerung eingerichtet ist, um zu bestimmen, ob Daten, die in dem nichtflüchtigen Speicher als Reaktion auf von dem Host empfangene Schreibbefehle gespeichert sind, im IS-Speicher oder dem MS-Speicher gespeichert werden sollen. Der IS-Manager kann durch die Speichersteuerung implementiert werden. Alternativ kann die IS-Steuerung durch eine andere Komponente der Speichervorrichtung implementiert werden, die in Kommunikation mit der Speichersteuerung ist.
  • Die Speichervorrichtung kann auch einen Direktzugriffsspeicher (RAM) beinhalten, mit dem der IS-Manager und/oder die Speichersteuerung in Kommunikation stehen. Gemäß bestimmten Ausführungsformen wird ein Aktivitätsprotokoll, das die für den Host durchgeführten Schreib- und Lesevorgänge verfolgt, in mindestens einem der RAM- oder nichtflüchtigen Speicher gespeichert, und der IS-Manager ist eingerichtet, um die Host-Aktivität basierend auf dem Aktivitätsprotokoll vorherzusagen. Die vorhergesagte Host-Aktivität, die der IS-Manager basierend auf dem Aktivitätsprotokoll vorhersagt, kann ein vorhergesagtes Schreibmuster, ein vorhergesagtes Lesemuster und/oder ein vorhergesagtes Schreib- und Lesemuster beinhalten.
  • Gemäß bestimmten Ausführungsformen ist eine Vielzahl von Verlagerungsschemata im nichtflüchtigen Speicher, ROM und/oder RAM der Speichervorrichtung gespeichert, von denen jedes der Verlagerungsschemata einem aus einer Vielzahl von potentiellen Host-Aktivitätsmustern zugeordnet ist. In solchen Ausführungsformen kann der IS-Manager so eingerichtet sein, dass er eines der Vielzahl von Verlagerungsschemata basierend auf den Ergebnissen von Vergleichen zwischen dem vorhergesagten Host-Aktivitätsmuster und mindestens einigen der Vielzahl von potenziellen Host-Aktivitätsmustern auswählt. Die potenziellen und vorhergesagten Host-Aktivitätsmuster werden gemäß bestimmten Ausführungsformen in Form von logischen Blockadressen (LBAs) oder LBA-Bereichen festgelegt.
  • Gemäß bestimmten Ausführungsformen ist der IS-Manager so eingerichtet, dass er das vorhergesagte Host-Aktivitätsmuster von Zeit zu Zeit aktualisiert und ein anderes Verlagerungsschema basierend auf der aktualisierten vorhergesagten Host-Aktivität auswählt und ausführt.
  • Gemäß bestimmten Ausführungsformen ist der IS-Manager so eingerichtet, dass er basierend auf dem Aktivitätsprotokoll weitere potenzielle Host-Aktivitätsmuster identifiziert und speichert und weitere Verlagerungsschemata generiert und speichert, von denen jedes einem der identifizierten weiteren potenziellen Host-Aktivitätsmuster zugeordnet ist. Solche weiteren Verlagerungsschemata stehen dem IS-Manager zur Auswahl und Ausführung zur Verfügung, nachdem sie generiert und gespeichert wurden.
  • Bestimmte Ausführungsformen der vorliegenden Technologie betreffen Verfahren zur Verwendung durch eine Speichervorrichtung, die Lese- und Schreibbefehle von einem Host empfängt und die einen nichtflüchtigen Speicher und eine Speichersteuerung in Kommunikation mit dem nichtflüchtigen Speicher beinhaltet, wobei der nichtflüchtige Speicher einen als IS-Speicher bezeichneten Teil und einen anderen als MS-Speicher bezeichneten Teil beinhaltet. Wie vorstehend erläutert, hat der IS-Speicher niedrigere Schreib- und Leselatenzzeiten, eine höhere Ausdauer und eine geringere Speicherdichte und -kapazität als der MS-Speicher. Gemäß bestimmten Ausführungsformen beinhaltet ein solches Verfahren das Speichern einer Vielzahl von Verlagerungsschemata, von denen jedes einem aus einer Vielzahl von potenziellen Host-Aktivitätsmuster zugeordnet ist, sowie das Führen eines oder mehrerer Aktivitätsprotokolle, die Vorgänge im Zusammenhang mit den im nichtflüchtigen Speicher gespeicherten Daten verfolgen. Das Verfahren beinhaltet auch das Speichern von Daten im IS-Speicher als Reaktion auf das Empfangen eines oder mehrerer Schreibbefehle von einem Host. Das Verfahren beinhaltet weiterhin das Vorhersagen eines Host-Aktivitätsmusters basierend auf dem/den Aktivitätsprotokoll(en) und das Auswählen eines der Vielzahl von gespeicherten Verlagerungsschemata zur Anwendung auf die im IS-Speicher gespeicherten Daten. Das Auswählen wird basierend auf dem vorhergesagten Host-Aktivitätsmuster durchgeführt. Das Verfahren beinhaltet weiterhin das Ausführen des ausgewählten Verlagerungsschemas, um dadurch einen oder mehrere Teile der Daten aus dem IS-Speicher in den MS-Speicher gemäß dem ausgewählten Verlagerungsschema selektiv zu verlagern.
  • Gemäß bestimmten Ausführungsformen beinhaltet/beinhalten das/die Aktivitätsprotokoll(e), das/die zur Verfolgung der für den Host durchgeführten Schreib- und Lesevorgänge geführt wird/werden, und die vorhergesagte Host-Aktivität, die basierend auf dem Aktivitätsprotokoll vorhergesagt wird, beinhaltet mindestens eines von einem vorhergesagten Schreibmuster, einem vorhergesagten Lesemuster oder einem vorhergesagten Schreib- und Lesemuster. Das Auswählen eines der Vielzahl von gespeicherten Verlagerungsschemata zur Anwendung auf die im IS-Speicher gespeicherten Daten kann das Vergleichen des vorhergesagten Host-Aktivitätsmusters mit mindestens einigen aus der Vielzahl von potentiellen Host-Aktivitätsmustern, die jeweils einem der Verlagerungsschemata zugeordnet sind, und das Auswählen eines aus der Vielzahl von gespeicherten Verlagerungsschemata basierend auf Ergebnissen der Vergleiche einbeziehen.
  • Gemäß bestimmten Ausführungsformen beinhaltet das Vergleichen des vorhergesagten Host-Aktivitätsmusters mit mindestens einigen aus der Vielzahl von gespeicherten potenziellen Host-Aktivitätsmuster für jeden der Vergleiche das Generieren eines Übereinstimmungspunktwerts, das auf einen Grad an Übereinstimmung zwischen dem vorhergesagten Host-Aktivitätsmuster und einem der potenziellen Host-Aktivitätsmuster hinweist. In solchen Ausführungsformen kann das Auswählen eines aus der Vielzahl von gespeicherten Verlagerungsschemata, basierend auf den Ergebnissen der Vergleiche, entweder das Auswählen des einen aus der Vielzahl von gespeicherten Verlagerungsschemata, die dem potenziellen Host-Aktivitätsmuster mit dem höchsten Übereinstimmungspunktwert zugeordnet sind, oder das Auswählen eines gespeicherten Verlagerungsschemas, das einem der potenziellen Host-Aktivitätsmuster (z.B. einem ersten) zugeordnet ist, für die der Übereinstimmungspunktwert einen festgelegten Übereinstimmungsschwellenwert überschreitet, beinhalten.
  • Gemäß bestimmten Ausführungsformen beinhaltet das Verfahren auch das Bestimmen, ob ein anderes Verlagerungsschema auf die im IS-Speicher gespeicherten Daten angewendet werden sollte oder nicht. In Reaktion auf das Bestimmen, dass ein anderes Verlagerungsschema auf die im IS-Speicher gespeicherten Daten angewendet werden sollte, wird ein anderes aus der Vielzahl von gespeicherten Verlagerungsschemata ausgewählt, um auf die im IS-Speicher gespeicherten Daten angewendet zu werden, wobei die Auswahl auf einem neuen vorhergesagten Schreibmuster basiert. Das ausgewählte andere der Verlegungsschemata wird dann ausgeführt, um dadurch einen oder mehrere Teile der Daten aus dem IS-Speicher in den MS-Speicher gemäß dem ausgewählten anderen der Verlagerungsschemata selektiv zu verlagern.
  • Gemäß bestimmten Ausführungsformen beinhaltet das Verfahren auch das Identifizieren, basierend auf dem Aktivitätsprotokoll, eines oder mehrerer weiterer potentieller Host-Aktivitätsmuster und Generieren und Speichern eines oder mehrerer weiterer Verlagerungsschemata, von denen jedes einem der identifizierten weiteren potentiellen Host-Aktivitätsmuster zugeordnet ist. Das/die weiteren Verschiebungsschema(ta) steht/stehen nach der Generierung und Speicherung zur Auswahl und Ausführung zur Verfügung.
  • Gemäß bestimmten Ausführungsformen beinhaltet eine Speichervorrichtung einen nichtflüchtigen Speicher, von dem ein Teil als IS-Speicher und ein anderer Teil als MS-Speicher bezeichnet wird. Der IS-Speicher hat geringere Schreib- und Leselatenzen als der MS-Speicher, der IS-Speicher hat eine höhere Ausdauer als der MS-Speicher, und der IS-Speicher hat eine geringere Speicherdichte und -kapazität als der MS-Speicher. Die Speichervorrichtung beinhaltet auch Mittel zum Vorhersagen eines Host-Aktivitätsmusters basierend auf von Schreib- und Lesevorgängen, die für einen Host durchgeführt werden, Mittel zum Auswählen eines aus der Vielzahl von potentiellen Verlagerungsschemata basierend auf dem vorhergesagten Host-Aktivitätsmuster und Mittel zum Ausführen der Auswahl eines aus der Vielzahl von potentiellen Verlagerungsschemata, um dadurch zumindest einen Teil der im IS-Speicher gespeicherten Daten in den MS-Speicher selektiv zu verlagern. Das Mittel zur Vorhersage des Host-Aktivitätsmusters kann der IS-Manager 334 und/oder die Speichersteuerung 122 und/oder eine andere diskrete Komponente 340 sein. Das Mittel zur Auswahl eines aus der Vielzahl von potenziellen Verlagerungsschemata basierend auf dem vorhergesagten Host-Aktivitätsmuster kann der IS-Manager 334 und/oder die Speichersteuerung 122 und/oder eine andere diskrete Komponente 340 sein. Das Mittel zum Ausführen der Auswahl eines aus der Vielzahl von potentiellen Verlagerungsschemata kann der IS-Manager 334 und/oder die Speichersteuerung 122 und/oder eine andere diskrete Komponente 340 sein. Jedes der vorstehend beschriebenen Mittel kann die Form einer gebündelten funktionalen Hardwareeinheit (z.B. einer elektrischen Schaltung) annehmen, die zur Verwendung mit anderen Komponenten bestimmt ist, Programmcode (z.B. Software oder Firmware), der von einem (Mikro-)Prozessor ausführbar ist oder einer Verarbeitungsschaltung, die normalerweise eine bestimmte Funktion verwandter Funktionen erfüllt, oder eine eigenständige Hard- oder Softwarekomponente, die mit einem größeren System interagiert. Zum Beispiel kann jedes Modul eine anwendungsspezifische integrierte Schaltung (application specific integrated circuit - ASIC), eine anwenderprogrammierbare Gatteranordnung (field programmable gate array - FPGA), eine Schaltung, eine digitale Logikschaltung, eine analoge Schaltung, eine Kombination diskreter Schaltungen, Gatter oder irgendeine andere Art von Hardware oder Kombination davon beinhalten. Alternativ oder zusätzlich kann jedes Mittel Software beinhalten, die in einer prozessorlesbaren Vorrichtung (z. B. einem Speicher) gespeichert ist, um einen Prozessor zur Durchführung der hierin beschriebenen Funktionen zu programmieren.
  • Gemäß bestimmten Ausführungsformen beinhaltet die Speichervorrichtung auch Mittel zur Verfolgung von Schreib- oder Lesevorgängen, die für den Host durchgeführt werden. Das Mittel zur Verfolgung von Schreib- oder Lesevorgängen kann ein Aktivitätsprotokoll sein. Solch ein Aktivitätsprotokoll kann im nichtflüchtigen Speicher 124 und/oder im RAM 206 gespeichert werden. In solchen Ausführungsformen kann das Mittel zur Vorhersage des Host-Aktivitätsmusters das Host-Aktivitätsmuster unter Verwendung des Mittels zur Verfolgung der für den Host durchgeführten Schreib- und Lesevorgänge vorhersagen. Des Weiteren kann das Mittel zur Vorhersage des Host-Aktivitätsmusters so eingerichtet sein, dass es das vorhergesagte Host-Aktivitätsmuster aktualisiert, als Reaktion darauf, dass das Mittel zur Auswahl eines der Vielzahl von potenziellen Verlagerungsschemata ein anderes aus der Vielzahl von potenziellen Verlagerungsschemata auswählt, und als Reaktion darauf, dass das Mittel zur Ausführung das ausgewählte andere aus der Vielzahl von potenziellen Verlagerungsschemata ausführen wird.
  • Gemäß bestimmten Ausführungsformen beinhaltet die Speichervorrichtung Mittel zum Identifizieren eines weiteren potenziellen Host-Aktivitätsmusters und Mittel zum Generieren eines weiteren Verlagerungsschemas für die weiteren potenziellen Host-Aktivitätsmuster. Nach der Generierung steht das weitere Verlagerungsschema zur Auswahl durch das Mittel zur Auswahl und zur Ausführung durch das Mittel zur Ausführung zur Verfügung. Das Mittel zur Identifizierung eines weiteren potentiellen Host-Aktivitätsmusters kann der IS-Manager 334 und/oder die Speichersteuerung 122 und/oder eine andere diskrete Komponente 340 sein. Das Mittel zur Generierung des weiteren Verlagerungsschemas kann der IS-Manager 334 und/oder die Speichersteuerung 122 und/oder eine andere diskrete Komponente 340 sein. Jedes der vorstehend beschriebenen Mittel kann die Form einer gebündelten funktionalen Hardwareeinheit (z.B. einer elektrischen Schaltung) annehmen, die zur Verwendung mit anderen Komponenten bestimmt ist, Programmcode (z.B. Software oder Firmware), der von einem (Mikro-)Prozessor ausführbar ist oder einer Verarbeitungsschaltung, die normalerweise eine bestimmte Funktion verwandter Funktionen erfüllt, oder eine eigenständige Hard- oder Softwarekomponente, die mit einem größeren System interagiert. Zum Beispiel kann jedes Modul eine anwendungsspezifische integrierte Schaltung (application specific integrated circuit - ASIC), eine anwenderprogrammierbare Gatteranordnung (field programmable gate array - FPGA), eine Schaltung, eine digitale Logikschaltung, eine analoge Schaltung, eine Kombination diskreter Schaltungen, Gatter oder irgendeine andere Art von Hardware oder Kombination davon beinhalten. Alternativ oder zusätzlich kann jedes Mittel Software beinhalten, die in einer prozessorlesbaren Vorrichtung (z. B. einem Speicher) gespeichert ist, um einen Prozessor zur Durchführung der hierin beschriebenen Funktionen zu programmieren.
  • Im Sinne dieses Dokuments werden die Begriffe „Schreiben“ und „Speichern“ oft austauschbar verwendet, ebenso wie die Begriffe „Schreiben“ und „Speichern“.
  • Im Sinne dieses Dokuments kann der Bezug in der Beschreibung auf „eine Ausführungsform“, „eine (einzelne) Ausführungsform“, „einige Ausführungsformen“ oder „eine andere Ausführungsform“ verwendet werden, um verschiedene Ausführungsformen oder die gleiche 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 oder indirekt mit dem anderen Element über dazwischenliegende Elemente verbunden sein. Wenn ein Element als direkt mit einem anderen Element verbunden bezeichnet wird, dann gibt es keine Zwischenelemente zwischen dem Element und dem anderen Element. Zwei Vorrichtungen stehen „in Kommunikation“, wenn sie direkt oder indirekt verbunden sind, um elektronische Signale untereinander übertragen zu können.
  • Im Sinne dieses Dokuments können die Begriffe „basierend auf und „in Abhängigkeit von“ als „zumindest teilweise basierend auf gelesen werden.
  • Obwohl verschiedene Ausführungsformen der vorliegenden Technologie vorstehend beschrieben wurden, sollte davon ausgegangen werden, dass sie als Beispiel und nicht als Einschränkung dargestellt wurden. Für den Fachmann wird ersichtlich sein, dass darin verschiedene Form- und Detailänderungen vorgenommen werden können, ohne vom Geist und Umfang der Technologie abzuweichen. Obwohl einige Variationen bereits ausführlich beschrieben wurden, sind beispielsweise andere Modifikationen oder Ergänzungen möglich. Insbesondere können zusätzlich zu den hierin dargelegten Merkmalen und/oder Variationen weitere vorgesehen werden. Beispielsweise können die vorstehend beschriebenen Implementierungen auf verschiedene Kombinationen und Teilkombinationen der offenbarten Merkmale und/oder Kombinationen und Teilkombinationen mehrerer weiterer oben offenbarter Merkmale gerichtet sein. Darüber hinaus setzt der in den begleitenden Figuren dargestellte und/oder hierin beschriebene logische Ablauf nicht die jeweilige gezeigte Reihenfolge oder sequentielle Reihenfolge voraus, um wünschenswerte Ergebnisse zu erzielen. Andere Ausführungsformen können in den Geltungsbereich der folgenden Ansprüche fallen.
  • Ausführungsformen der vorliegenden Technologie wurden vorstehend mit Hilfe von Funktionsbausteinen beschrieben, die die Durchführung bestimmter Funktionen und deren Beziehungen veranschaulichen. Die Grenzen dieser Funktionsbausteine wurden hierin oft zur Vereinfachung der Beschreibung definiert. Alternative Grenzen können definiert werden, solange die angegebenen Funktionen und Beziehungen entsprechend ausgeführt werden. Jede dieser alternativen Grenzen liegt somit im Umfang und Geist der beanspruchten Technologie. Ein Fachmann wird erkennen, dass diese funktionalen Bausteine durch diskrete Komponenten, anwendungsspezifische integrierte Schaltungen, Prozessoren, die geeignete Software und dergleichen oder eine beliebige Kombination derselben implementiert werden können.
  • Die Breite und der Umfang der vorliegenden Technologie sollte nicht durch eine der vorstehend beschriebenen beispielhaften Ausführungsformen eingeschränkt werden, sondern nur gemäß den folgenden Ansprüchen und ihren Entsprechungen definiert werden.
  • Obwohl der Gegenstand in einer für strukturelle Merkmale und/oder methodische Handlungen spezifischen Sprache beschrieben wurde, ist davon auszugehen, dass der in den beigefügten Ansprüchen definierte Gegenstand nicht notwendigerweise auf die vorstehend beschriebenen spezifischen Merkmale oder Handlungen beschränkt ist. Vielmehr werden die vorstehend beschriebenen Besonderheiten und Handlungen als beispielhafte Formen der Implementierung der Ansprüche offenbart.
  • Die vorgenannte ausführliche Beschreibung wurde zum Zwecke 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 Schutzumfang durch die hier beigefügten Ansprüche definiert ist.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • US 9548130 [0036]

Claims (11)

  1. Speichervorrichtung, die Lese- und Schreibbefehle von einem Host empfängt, wobei die Speichervorrichtung Folgendes aufweist: einen nichtflüchtigen Speicher, von dem ein Teil als Speicher der Zwischenspeicherung (IS) und ein anderer Teil als Speicher der Hauptspeicherung (MS) bezeichnet wird, wobei der IS-Speicher niedrigere Schreib- und Leselatenzen, eine größere Ausdauer und eine geringere Speicherdichte und -kapazität als der MS-Speicher aufweist; und und einen Zwischenspeicher (IS)-Manager, der eingerichtet ist, um eine Host-Aktivität vorherzusagen und ein Verlagerungsschema basierend auf der vorhergesagten Host-Aktivität auszuwählen und auszuführen, um dadurch einen oder mehrere Teile von Daten von dem IS-Speicher in den MS-Speicher gemäß dem ausgewählten Verlagerungsschema selektiv zu verlagern.
  2. Speichervorrichtung gemäß Anspruch 1, wobei: die Speichervorrichtung eine Speichersteuerung in Kommunikation mit dem nichtflüchtigen Speicher beinhaltet; die Speichersteuerung eingerichtet ist, um zu bestimmen, ob Daten, die in dem nichtflüchtigen Speicher als Reaktion auf von dem Host empfangenen Schreibbefehle gespeichert sind, im IS-Speicher oder dem MS-Speicher gespeichert werden sollen; und der IS-Manager durch die Speichersteuerung oder durch eine andere Komponente der Speichervorrichtung implementiert ist, die in Kommunikation mit der Speichersteuerung steht.
  3. Speichervorrichtung nach einem der Ansprüche 1 oder 2, wobei: die Speichervorrichtung auch einen Direktzugriffsspeicher (RAM) aufweist; ein Aktivitätsprotokoll, das die für den Host durchgeführten Schreib- und Lesevorgänge verfolgt, in mindestens einem der RAM- oder dem nichtflüchtigen Speicher gespeichert ist; der IS-Manager eingerichtet ist, um die Host-Aktivität basierend auf dem Aktivitätsprotokoll vorherzusagen; und die vorhergesagte Host-Aktivität, die der IS-Manager basierend auf dem Aktivitätsprotokoll vorhersagt, mindestens eines von einem vorhergesagten Schreibmuster, einem vorhergesagten Lesemuster oder einem vorhergesagten Schreib- und Lesemuster aufweist.
  4. Speichervorrichtung nach einem der Ansprüche 1, 2 oder 3, wobei: der IS-Speicher einen Flash-Speicher vom SLC-Typ (Single-Level Cell) aufweist, wobei ein einzelnes Datenbit pro Speicherzelle gespeichert wird; und der MS-Speicher einen Flash-Speicher vom MLC-Typ (Multi-Level Cell) aufweist, wobei zwei oder mehr Datenbits pro Speicherzelle gespeichert werden.
  5. Speichervorrichtung nach einem der Ansprüche 1, 2, 3 oder 4, wobei der IS-Manager eingerichtet ist, um: die vorhergesagte Host-Aktivität von Zeit zu Zeit zu aktualisieren und ein weiteres Verlagerungsschema basierend auf der aktualisierten vorhergesagten Host-Aktivität auszuwählen und auszuführen; und basierend auf mindestens einem der Aktivitätsprotokolle weitere potenzielle Host-Aktivitätsmuster zu identifizieren und zu speichern und weitere Verlagerungsschemata, von denen jedes einem der identifizierten weiteren potenziellen Host-Aktivitätsmuster zugeordnet ist, zu generieren und zu speichern; wobei die weiteren Verlagerungsschemata nach der Generierung und Speicherung zur Auswahl und Ausführung durch den IS-Manager zur Verfügung stehen.
  6. Verfahren zur Verwendung durch eine Speichervorrichtung, die Lese- und Schreibbefehle von einem Host empfängt und die einen nichtflüchtigen Speicher und eine Speichersteuerung in Kommunikation mit dem nichtflüchtigen Speicher beinhaltet, wobei der nichtflüchtige Speicher einen Teil, der als Speicher der Zwischenspeicherung (IS) bezeichnet wird, und einen anderen Teil, der als Speicher der Hauptspeicherung (MS) festgelegt wird, beinhaltet, wobei der IS-Speicher niedrigere Schreib- und Leselatenzen, eine höhere Ausdauer und eine geringere Speicherdichte und -kapazität als der MS-Speicher aufweist, wobei das Verfahren Folgendes aufweist: Speichern einer Vielzahl von Verlagerungsschemata, von denen jedes einem von einer Vielzahl von potenziellen Host-Aktivitätsmustern zugeordnet ist; Führen eines oder mehrerer Aktivitätsprotokolle, welche die Vorgänge im Zusammenhang mit den im nichtflüchtigen Speicher verfolgen; Speichern von Daten im IS-Speicher als Reaktion auf das Empfangen eines oder mehrerer Schreibbefehle von dem Host; Vorhersagen eines Host-Aktivitätsmusters basierend auf mindestens einem von einem oder mehreren Aktivitätsprotokolle; Auswählen eines der Vielzahl von gespeicherten Verlagerungsschemata zur Anwendung auf die im IS-Speicher gespeicherten Daten, wobei das Auswählen basierend auf dem vorhergesagten Host-Aktivitätsmuster durchgeführt wird; und Ausführen des ausgewählten Verlagerungsschemas, um dadurch einen oder mehrere Teile der Daten aus dem IS-Speicher in den MS-Speicher gemäß dem ausgewählten Verlagerungsschema selektiv zu verlagern.
  7. Verfahren gemäß Anspruch 6, wobei: das eine oder die mehreren Aktivitätsprotokolle mindestens eines von Schreib- oder Lesevorgängen verfolgen, die für den Host durchgeführt werden; und die vorhergesagte Host-Aktivität, die basierend auf zumindest einem von einem oder mehreren Aktivitätsprotokollen vorhergesagt wird, mindestens eines von einem vorhergesagten Schreibmuster, einem vorhergesagten Lesemuster oder einem vorhergesagten Schreib- und Lesemuster aufweist.
  8. Verfahren gemäß einem der Ansprüche 6 oder 7, wobei das Auswählen eines aus der Vielzahl von gespeicherten Verlagerungsschemata zur Anwendung auf die im IS-Speicher gespeicherten Daten Folgendes beinhaltet: Vergleichen des vorhergesagten Host-Aktivitätsmusters mit mindestens einigen aus der Vielzahl von potentiellen Host-Aktivitätsmustern, die jeweils einem der Verlagerungsschemata zugeordnet sind; und Auswählen eines aus der Vielzahl von gespeicherten Verlagerungsschemata basierend auf Ergebnissen der Vergleiche.
  9. Verfahren gemäß Anspruch 8, wobei: das Vergleichen des vorhergesagten Host-Aktivitätsmusters mit mindestens einigen aus der Vielzahl von gespeicherten potentiellen Host-Aktivitätsmustern für jeden der Vergleiche das Generieren eines Übereinstimmungspunktwerts beinhaltet, der auf einen Grad an Übereinstimmung zwischen dem vorhergesagten Host-Aktivitätsmuster und einem der potenziellen Host-Aktivitätsmuster hinweist; und das Auswählen eines aus der Vielzahl von gespeicherten Verlagerungsschemata, basierend auf den Ergebnissen der Vergleiche, entweder das Auswählen des einen aus der Vielzahl von gespeicherten Verlagerungsschemata, das einem aus der Vielzahl von potenziellen Host-Aktivitätsmustern mit dem höchsten Übereinstimmungspunktwert zugeordnet ist, oder das Auswählen eines aus der Vielzahl von gespeicherten Verlagerungsschemas, das einem aus der Vielzahl von potenziellen Host-Aktivitätsmustern zugeordnet ist, für die der Übereinstimmungspunktwert einen festgelegten Übereinstimmungsschwellenwert überschreitet, beinhaltet.
  10. Verfahren gemäß einem der Ansprüche 7, 8 oder 9, weiterhin aufweisend: Bestimmen, ob ein anderes der gespeicherten Verlagerungsschemata auf die im IS-Speicher gespeicherten Daten angewendet werden soll oder nicht; in Reaktion auf das Bestimmen, dass ein anderes der gespeicherten Verlagerungsschemata auf die im IS-Speicher gespeicherten Daten angewendet werden soll, Auswählen eines anderen aus der Vielzahl von gespeicherten Verschiebungsschemata, um auf die im IS-Speicher gespeicherten Daten anzuwenden, wobei das Auswählen auf einem neuen vorhergesagten Schreibmuster basiert; und Ausführen des ausgewählten anderen der Verlagerungsschemata, um dadurch einen oder mehrere Teile der Daten aus dem IS-Speicher in den MS-Speicher gemäß dem ausgewählten anderen der Verlagerungsschemata selektiv zu verlagern.
  11. Verfahren gemäß einem der Ansprüche 7, 8, 9 oder 10, weiterhin aufweisend: Identifizieren, basierend auf dem einen oder den mehreren Aktivitätsprotokollen, weiterer potentieller Host-Aktivitätsmuster und Generieren und Speichern weiterer Verlagerungsschemata, von denen jedes einem der identifizierten weiteren potentiellen Host-Aktivitätsmuster zugeordnet ist; wobei die weiteren Verlagerungsschemata nach der Generierung und Speicherung zur Auswahl und Ausführung zur Verfügung stehen; und wobei die potentiellen und vorhergesagten Host-Aktivitätsmuster in Form von logischen Blockadressen (LBAs) oder LBA-Bereichen festgelegt sind.
DE102018123880.0A 2017-11-17 2018-09-27 Adaptive Verwaltung von Zwischenspeichern Pending DE102018123880A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/816,204 US10795827B2 (en) 2017-11-17 2017-11-17 Adaptive management of intermediate storage
US15/816,204 2017-11-17

Publications (1)

Publication Number Publication Date
DE102018123880A1 true DE102018123880A1 (de) 2019-05-23

Family

ID=66336522

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102018123880.0A Pending DE102018123880A1 (de) 2017-11-17 2018-09-27 Adaptive Verwaltung von Zwischenspeichern

Country Status (3)

Country Link
US (1) US10795827B2 (de)
CN (1) CN109799950B (de)
DE (1) DE102018123880A1 (de)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10936205B2 (en) 2017-10-05 2021-03-02 International Business Machines Corporation Techniques for retention and read-disturb aware health binning
US10824352B2 (en) * 2017-12-06 2020-11-03 International Business Machines Corporation Reducing unnecessary calibration of a memory unit for which the error count margin has been exceeded
US11520696B2 (en) * 2018-06-28 2022-12-06 Seagate Technology Llc Segregating map data among different die sets in a non-volatile memory
US11003493B2 (en) * 2018-07-25 2021-05-11 International Business Machines Corporation Application and storage based scheduling
US10699791B2 (en) 2018-08-24 2020-06-30 International Business Machines Corporation Adaptive read voltage threshold calibration in non-volatile memory
US10942659B2 (en) * 2019-06-03 2021-03-09 International Business Machines Corporation Persistent logical to virtual table
US11106521B2 (en) * 2019-08-19 2021-08-31 Micron Technology, Inc. Fatal error logging in a memory device
US11573893B2 (en) * 2019-09-12 2023-02-07 Western Digital Technologies, Inc. Storage system and method for validation of hints prior to garbage collection
US20210132817A1 (en) * 2019-10-31 2021-05-06 Western Digital Technologies, Inc. Relocation of Data in Memory At Different Transfer Rates Based on Temperature
US11726679B2 (en) * 2019-11-05 2023-08-15 Western Digital Technologies, Inc. Applying endurance groups to zoned namespaces

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9548130B2 (en) 2015-04-08 2017-01-17 Sandisk Technologies Llc Non-volatile memory with prior state sensing

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5930167A (en) 1997-07-30 1999-07-27 Sandisk Corporation Multi-state non-volatile flash memory capable of being its own two state write cache
US7953931B2 (en) * 1999-08-04 2011-05-31 Super Talent Electronics, Inc. High endurance non-volatile memory devices
US7913030B2 (en) 2007-12-28 2011-03-22 Sandisk Il Ltd. Storage device with transaction logging capability
US8060719B2 (en) * 2008-05-28 2011-11-15 Micron Technology, Inc. Hybrid memory management
US8111548B2 (en) 2008-07-21 2012-02-07 Sandisk Technologies Inc. Programming non-volatile storage using binary and multi-state programming processes
US8205063B2 (en) 2008-12-30 2012-06-19 Sandisk Technologies Inc. Dynamic mapping of logical ranges to write blocks
US8880835B2 (en) * 2009-07-07 2014-11-04 International Business Machines Corporation Adjusting location of tiered storage residence based on usage patterns
US9176864B2 (en) 2011-05-17 2015-11-03 SanDisk Technologies, Inc. Non-volatile memory and method having block management with hot/cold data sorting
US9176862B2 (en) * 2011-12-29 2015-11-03 Sandisk Technologies Inc. SLC-MLC wear balancing
US8892813B2 (en) 2012-04-20 2014-11-18 Sandisk Technologies Inc. Intelligent scheduling of background operations in memory
US10489295B2 (en) 2012-10-08 2019-11-26 Sandisk Technologies Llc Systems and methods for managing cache pre-fetch
US9355022B2 (en) 2012-12-07 2016-05-31 Sandisk Technologies Inc. Systems and methods for intelligent flash management
US9110677B2 (en) * 2013-03-14 2015-08-18 Sandisk Technologies Inc. System and method for predicting and improving boot-up sequence
US9703816B2 (en) 2013-11-19 2017-07-11 Sandisk Technologies Llc Method and system for forward reference logging in a persistent datastore
US9811457B2 (en) * 2014-01-16 2017-11-07 Pure Storage, Inc. Data placement based on data retention in a tiered storage device system
US9495101B2 (en) * 2014-01-29 2016-11-15 Sandisk Technologies Llc Methods for balancing write operations of SLC blocks in different memory areas and apparatus implementing the same
US9285994B2 (en) * 2014-06-05 2016-03-15 International Business Machines Corporation Block-level predictive data migration
CN105320464B (zh) * 2014-07-21 2018-07-31 群联电子股份有限公司 防止读取干扰的方法、存储器控制电路单元与存储装置
US9880760B2 (en) 2014-10-30 2018-01-30 Sandisk Technologies Llc Managing data stored in a nonvolatile storage device
US10061702B2 (en) * 2015-11-13 2018-08-28 International Business Machines Corporation Predictive analytics for storage tiering and caching
US10176119B2 (en) * 2016-03-02 2019-01-08 Seagate Technology Llc Workload detection and media cache management

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9548130B2 (en) 2015-04-08 2017-01-17 Sandisk Technologies Llc Non-volatile memory with prior state sensing

Also Published As

Publication number Publication date
CN109799950A (zh) 2019-05-24
US10795827B2 (en) 2020-10-06
CN109799950B (zh) 2022-08-30
US20190155749A1 (en) 2019-05-23

Similar Documents

Publication Publication Date Title
DE102018123880A1 (de) Adaptive Verwaltung von Zwischenspeichern
DE112014004778B4 (de) Vorrichtung und Verfahren zum Verwalten von Chipgruppen
DE102018105750A1 (de) System und Verfahren für Hybrid-Push-Pull-Datenmanagement in einem nichtflüchtigen Datenspeicher
DE102020106971A1 (de) Datenschreibverwaltung im nichtflüchtigen speicher
DE112019000141T5 (de) System und verfahren zur vorhersage von mehrfachlesebefehlen, die auf nicht sequentielle daten gerichtet sind
DE112018004251T5 (de) Adaptive vorrichtungsdienstqualität durch host-speicherpufferbereich
DE112018000834T5 (de) System und verfahren zur adaptiven befehlsabruf-aggregation
DE112015004536T5 (de) Hardware-Automatisierung für Speicherverwaltung
DE112018000181T5 (de) System und verfahren für die schnelle ausführung von kapselinternen befehlen
DE102018123891A1 (de) Handhabung nichtabgestimmter Schreibvorgänge
DE102017104283A1 (de) Löschgeschwindigkeitsbasierte wortleitungssteuerung
DE112020000139T5 (de) Nicht sequentiell in zonen aufgeteilte namensräume
DE112020002792B4 (de) Verschleissorientierte blockmodusumwandlung in nichtflüchtigen speichern
DE102021115373A1 (de) Identifizierte zonen für zonen mit optimaler paritätsteilung
DE102012112354A1 (de) Speichervorrichtung und nichtflüchtige Speichervorrichtung sowie Betriebsverfahren davon
DE112015000378T5 (de) Selektives Rückkopieren für einen auf einem Chipplättchen gepufferten nichtflüchtigen Speicher
DE102018123805A1 (de) Vorgang für verteiltes Programmieren
DE112018000230T5 (de) System und Verfahren zur spekulativen Befehlsausführung unter Verwendung des Steuerungsspeicherpuffers
DE112019005511T5 (de) Halten von schreibbefehlen in gezonten namensräumen
DE112020004591T5 (de) L2P-Übersetzungstechniken in begrenzten RAM-Systemen
DE112019000161T5 (de) Speicher-cache-verwaltung
DE102013108491A1 (de) Nichtflüchtige Speichervorrichtung und Betriebsverfahren mit variablen Speicherzellenzustandsdefinitionen
DE112017005955T5 (de) Speichersystem und verfahren zur schlanken speicherzuweisung
DE112020000162T5 (de) Nichtflüchtiges speicherungssystem mit filterung von daten-abtastwerten für eine überwachte betriebsstatistik
DE112020000237T5 (de) Soft-bit-lesemodusauswahl für nicht-flüchtige speicher

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