DE112020004442T5 - Cache mit geringer latenz für nichtflüchtigen speicher in einem hybriden dimm - Google Patents

Cache mit geringer latenz für nichtflüchtigen speicher in einem hybriden dimm Download PDF

Info

Publication number
DE112020004442T5
DE112020004442T5 DE112020004442.4T DE112020004442T DE112020004442T5 DE 112020004442 T5 DE112020004442 T5 DE 112020004442T5 DE 112020004442 T DE112020004442 T DE 112020004442T DE 112020004442 T5 DE112020004442 T5 DE 112020004442T5
Authority
DE
Germany
Prior art keywords
data
storage device
segment
cache
sector
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
DE112020004442.4T
Other languages
English (en)
Inventor
Horia C. Simionescu
Paul Stonelake
Chung Kuang Chin
Narasimhulu Dharanikumar Kotte
Robert M. Walker
Cagdas Dirik
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.)
Micron Technology Inc
Original Assignee
Micron Technology 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 Micron Technology Inc filed Critical Micron Technology Inc
Publication of DE112020004442T5 publication Critical patent/DE112020004442T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods
    • G06F12/0824Distributed directories, e.g. linked lists of caches
    • 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/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

Es werden Systeme und Verfahren offenbart, die eine erste Speichervorrichtung und eine zweite Speichervorrichtung umfassen, die mit der ersten Speichervorrichtung gekoppelt ist, wobei die zweite Speichervorrichtung eine geringere Zugriffslatenz als die erste Speichervorrichtung hat und als ein Cache für die erste Speichervorrichtung dient. Eine Verarbeitungsvorrichtung, die funktional mit der ersten und der zweiten Speichervorrichtung gekoppelt ist, kann Zugriffsstatistiken von Datensegmenten, die in der zweiten Speichervorrichtung gespeichert sind, verfolgen, wobei die Segmente eine erste Granularität haben, und bestimmen, dass auf Basis der Zugriffsstatistiken ein Datensegment, das in der zweiten Speichervorrichtung gespeichert ist, von der ersten Granularität auf eine zweite Granularität aktualisiert wird. Die Verarbeitungsvorrichtung kann außerdem zusätzliche Daten, die mit dem Datensegment in Beziehung stehen, von der ersten Speichervorrichtung abrufen und die zusätzlichen Daten in der zweiten Speichervorrichtung speichern, um ein neues Segment mit der zweiten Granularität zu bilden.

Description

  • TECHNISCHES GEBIET
  • Ausführungsformen der Erfindung beziehen sich allgemein auf Speicher-Untersysteme, und insbesondere auf einen Cache mit geringer Latenz für nichtflüchtigen Speicher in einem hybriden Dual-Inline-Speichermodul (DIMM).
  • HINTERGRUND
  • Ein Speicher-Untersystem kann eine oder mehrere Speichervorrichtungen enthalten, um Daten zu speichern. Bei den Speichervorrichtungen kann es sich beispielsweise um nichtflüchtige Speichervorrichtungen und um flüchtige Speichervorrichtungen handeln. Allgemein kann ein Host-System ein Speicher-Untersystem verwenden, um Daten in den Speichervorrichtungen zu speichern und um Daten aus den Speichervorrichtungen abzurufen.
  • Figurenliste
  • Die vorliegende Erfindung kann anhand der nachstehenden detaillierten Beschreibung und der beigefügten Zeichnungen verschiedener Ausführungsformen der Erfindung vollständiger verstanden werden.
    • 1 zeigt ein beispielhaftes Computersystem, das ein Speicher-Untersystem gemäß einigen Ausführungsformen der vorliegenden Erfindung enthält.
    • 2 ist ein Flussdiagramm eines beispielhaften Verfahrens zum Verfolgen und Verwalten von Daten-Caches gemäß einiger Ausführungsformen der vorliegenden Erfindung.
    • 3 ist ein Flussdiagramm eines beispielhaften Verfahrens zum Ausführen von Operationen als Reaktion auf einen Seiten-Cache-Fehltreffer und einen Sektor-Cache-Fehltreffer gemäß einigen Ausführungsformen der vorliegenden Erfindung.
    • 4 ist ein Flussdiagramm eines beispielhaften Verfahrens zum Durchführen einer Lösch-Operation gemäß einigen Ausführungsformen der vorliegenden Erfindung.
    • 5 ist ein Flussdiagramm eines weiteren beispielhaften Verfahrens zum Verfolgen und Verwalten von Daten-Caches gemäß einigen Ausführungsformen der vorliegenden Erfindung.
    • 6 ist ein Blockdiagramm eines beispielhaften Computersystems, in dem Ausführungsformen der vorliegenden Erfindung arbeiten können.
  • DETAILLIERTE BESCHREIBUNG
  • Aspekte der vorliegenden Erfindung sind auf einen Cache mit geringer Latenz für nichtflüchtigen Speicher in einem hybriden Dual-Inline-Speichermodul gerichtet. Ein Speicher-Untersystem kann eine Speichervorrichtung, ein Speichermodul oder ein Hybrid aus einer Speichervorrichtung und einem Speichermodul sein. Beispiele für Speichervorrichtungen und Speichermodule werden nachfolgend in Verbindung mit 1 beschrieben. Allgemein kann ein Host-System ein Speicher-Untersystem verwenden, das eine oder mehrere Komponenten enthält, wie zum Beispiel Speichervorrichtungen, um Daten zu speichern. Das Host-System kann Daten bereitstellen, die in dem Speicher-Untersystem gespeichert werden sollen, und kann Daten anfordern, die aus dem Speicher-Untersystem abgerufen werden sollen.
  • Ein Speicher-Untersystem kann sowohl nichtflüchtige als auch flüchtige Speichervorrichtungen enthalten. Ein Beispiel für nichtflüchtige Speichervorrichtungen ist eine Negativ-Und-Speichervorrichtung (NAND-Speichervorrichtung). Ein weiteres Beispiel ist eine dreidimensionale Kreuzpunkt-Speichervorrichtung („3D-Cross-Point“-Speichervorrichtung), bei der es sich um ein Kreuzpunkt-Array aus nichtflüchtigen Speicherzellen handelt. Weitere Beispiele für nichtflüchtige Speichervorrichtungen werden nachfolgend in Verbindung mit 1 beschrieben. Eine nichtflüchtige Speichervorrichtung ist ein Baustein aus einem oder mehreren Chips. Die Chips in den Bausteinen können einem oder mehreren Kanälen für die Kommunikation mit einem Speicher-Untersystem-Controller zugewiesen sein. Jeder Chip kann einen Satz aus Speicherzellen („Zellen“) enthalten. Eine Zelle ist eine elektronische Schaltung, die Informationen speichert. Je nach Zellentyp kann eine Zelle ein oder mehrere Bits aus binären Informationen speichern und hat verschiedene logische Zustände, die mit der Anzahl der gespeicherten Bits korrelieren. Die logischen Zustände können durch binäre Werte wie „0“ und „1“ oder durch Kombinationen solcher Werte dargestellt werden.
  • Die nichtflüchtigen Speichervorrichtungen können dreidimensionale Kreuzpunkt-Speichervorrichtungen („3D-Cross-Point“-Speichervorrichtungen) umfassen, die ein Kreuzpunkt-Array aus nichtflüchtigen Speicherzellen sind und eine Bitspeicherung auf Basis einer Änderung des Bahnwiderstands (Bulk Resistance) in Verbindung mit einem stapelbaren Kreuzgitter-Datenzugriffs-Array durchführen können. Darüber hinaus können 3D-Kreuzpunkt-Speicher im Gegensatz zu vielen Flash-Speichern eine Write-in-Place-Operation durchführen, bei der eine nichtflüchtige Speicherzelle programmiert werden kann, ohne dass die nichtflüchtige Speicherzelle zuvor gelöscht wurde. Solche nichtflüchtigen Speichervorrichtungen können Seiten über Chips und Kanäle hinweg gruppieren, um Verwaltungseinheiten (MUs) zu bilden.
  • Das Speicher-Untersystem kann ein hybrides DIMM sein, das einen ersten Typ von Speichervorrichtung (z.B. 3D-Kreuzpunkt-Medien) und einen zweiten Typ von Speichervorrichtung (z.B. ein dynamischer Direktzugriffsspeicher (DRAM)) in einem einzigen DIMM-Baustein enthält. Der erste Typ von Speicher (d.h. ein erster Speichertyp) kann eine große Speicherkapazität aber eine hohe Zugriffslatenz haben, während der zweite Typ von Speicher (d.h. ein zweiter Speichertyp) eine kleinere Speicherkapazität aber eine geringere Zugriffslatenz hat. Ein Cache-Manager kann das Abrufen, das Speichern und das Liefern von Daten zu und von dem ersten Typ von Speichervorrichtung und dem zweiten Typ von Speichervorrichtung verwalten. In herkömmlichen Speichersystemen befindet sich der Cache-Manager in dem Host-System und ist funktional mit einem ersten Controller, der mit dem ersten Typ von Speichervorrichtung kommuniziert, und einem zweiten Controller verbunden, der mit dem zweiten Typ von Speichervorrichtung kommuniziert. Die Implementierung des Cache-Managers in dem Host-System kann jedoch zu Ineffizienzen führen. Zum Beispiel kann der Datenverkehr zwischen dem ersten Speichertyp und dem zweiten Speichertyp durch das Kanalprotokoll begrenzt sein, was zu einer verringerten Cache-Trefferrate und zu einer schlechten Leistung führt.
  • Durch Aspekte der vorliegenden Erfindung werden die obigen und andere Probleme durch das Implementieren eines Hybrid-DIMMs überwunden, der einen Cache-Manager auf dem DIMM-Baustein enthält. Der Cache-Manager ermöglicht es dem zweiten Speichertyp, als ein Cache für den ersten Speichertyp zu fungieren. So kann die hohe Latenz des ersten Speichertyps durch die geringe Latenz des zweiten Speichertyps überdeckt werden, wenn die Cache-Trefferrate hoch ist. Beispielsweise kann ein DRAM-Speicher oder ein anderer flüchtiger Speicher als ein Cache-Speicher für eine 3D-Kreuzpunkt-Speichervorrichtung oder für einen anderen nichtflüchtigen Speicher, wie zum Beispiel ein Speicherklassenspeicher (SCM), verwendet werden. Das Host-System kann den Hybrid-DIMM zum Abrufen und Speichern von Daten in dem 3D-Kreuzpunkt-Speicher verwenden. Der Hybrid-DIMM kann über eine Bus-Schnittstelle (z.B. DIMM-Anschluss) mit dem Host-System gekoppelt werden. Der DIMM-Anschluss kann eine synchrone oder eine asynchrone Schnittstelle zwischen dem Hybrid-DIMM und dem Host-System sein. Wenn das Host-System eine Speicherzugriffs-Operation, wie zum Beispiel eine Lese-Operation, durchführt, können die entsprechenden Daten aus dem 3D-Kreuzpunkt-Speicher oder aus einer anderen Speichervorrichtung des Hybrid-DIMM, der ein Cache-Speicher für den 3D-Kreuzpunkt-Speicher ist, an das Host-System zurückgegeben werden.
  • In einem veranschaulichenden Beispiel kann der DRAM als ein Cache strukturiert sein, um Daten zu speichern, auf die kürzlich zugegriffen wurde und/oder auf die häufig zugegriffen wird, so dass das Host-System schnell auf diese Daten zugreifen kann. Der DRAM-Datencache kann in zwei verschiedene Caches partioniert werden, die mit unterschiedlichen Datengrößen verwaltet werden. Eine der Partitionen kann einen Seiten-Cache mit größerer Granularität (d.h. größerer Größe) enthalten, und die zweite Partition kann einen Sektor-Cache mit kleinerer Granularität (d.h. kleinerer Größe) enthalten. Da der Seiten-Cache eine größere Datengröße verwendet, werden weniger Metadaten zur Verwaltung der Daten verwendet (z.B. nur ein einziges gültiges Bit für die gesamte Seite). Die kleinere Datengröße des Sektor-Cache kann größere Mengen an Metadaten verwenden (z.B. eine größere Anzahl gültiger und fehlerhafter Bits zusammen mit Tags, usw.), ermöglicht jedoch eine detailliertere Verfolgung der Host-Zugriffsdaten, wodurch die Gesamt-Trefferrate in dem DRAM-Daten-Cache erhöht wird. Eine Erhöhung der Trefferrate in dem DRAM-Datencache kann zu einer Leistung führen, die mit der eines DIMM mit ausschließlich DRAM-Speichervorrichtungen vergleichbar ist, kann aber zusätzlich eine größere Speicherkapazität, geringere Kosten und eine Unterstützung für persistente Speicher bietet. Darüber hinaus kann die Verfolgung von Daten mit einer Sektor-Granularität die Bandbreitennutzung zwischen der DRAM-Speichervorrichtung und dem 3D-Kreuzpunkt-Speicher reduzieren, wenn fehlende Daten in den Sektor-Cache gefüllt oder fehlerhafte Daten aus der DRAM-Speichervorrichtung in den 3D-Kreuzpunkt-Speicher zurückgeschrieben werden. In einigen Ausführungsformen kann der Controller Zugriffsstatistiken von Datensegmenten mit der kleineren Granularität verfolgen, die in der DRAM-Speichervorrichten gespeichert sind. Basierend auf den Zugriffsstatistiken kann der Controller das Datensegment auf die größere Granularität aktualisieren, indem zusätzliche Daten abgerufen werden, die mit dem Datensegment in Beziehung stehen, und ein neues Segment mit der größeren Granularität bilden, das das Datensegment und die zusätzlichen Daten enthält. Mit der größeren Granularität werden weniger Metadaten verwendet, um das Datensegment darzustellen. Daher fällt bei der Verwaltung eines Segments, auf das häufig zugegriffen wird und für das die Metadaten häufig aktualisiert werden, weniger Verarbeitungsaufwand an.
  • Zu den Vorteilen der vorliegenden Offenlegung gehört unter anderem eine verbesserte Leistung des Hybrid-DIMM, was zu einer höheren Dienstqualität für das Host-System führt. Beispielsweise können die Caching-Operationen zwischen der ersten Speichervorrichtung und der zweiten Speichervorrichtung intern in dem Hybrid-DIMM erfolgen. Wenn also Daten von dem 3D-Kreuzpunkt-Speicher übertragen werden, um in dem DRAM-Datencache gespeichert zu werden, wird für die Übertragung der Daten kein externer Bus oder Schnittstelle verwendet, die auch vom Host-System beim Empfangen und Übertragen von Schreib-Operationen und Lese-Operationen genutzt wird. Daher wird der Datenverkehr zwischen dem DRAM und dem 3D-Kreuzpunkt-Speicher nicht durch das NVDIMM-P-Protokoll eingeschränkt, wodurch die Trefferrate und die Leistung verbessert werden. Außerdem, anstelle einer zusätzlichen Cache-Komponente zum Speichern von Sektoren befindet sich der Sektor-Cache in der gleichen Speichervorrichtung wie der Seiten-Cache. Transfers zwischen dem Sektor-Cache und dem Seiten-Cache können lediglich einen Austausch von Metadaten umfassen, wodurch die Nutzung der Bandbreite zum und vom DRAM weiter reduziert wird. Da der DRAM sowohl große als auch kleine Cache-Zeilen unterstützt, bietet er den Vorteil geringerer Kosten (größere Cache-Zeilen) bei gleichzeitig höherer Leistung (kleinere Cache-Zeilen). Darüber hinaus kann der Cache-Manager auf dem Hybrid-DIMM mit irgendeiner Host-CPU arbeiten, die das NVDIMM-P-Protokoll unterstützt.
  • 1 zeigt ein beispielhaftes Computersystem 100, das ein Speicher-Untersystem 110 gemäß einigen Ausführungsformen der vorliegenden Erfindung enthält. Das Speicher-Untersystem 110 kann Medien enthalten, wie zum Beispiel eine oder mehrere flüchtige Speichervorrichtungen (z.B. Speichervorrichtung 140), eine oder mehrere nichtflüchtige Speichervorrichtungen (z.B. Speichervorrichtung 130) oder eine Kombination davon.
  • Ein Speicher-Untersystem 110 kann eine Speichervorrichtung, ein Speichermodul oder eine Mischung aus einer Speichervorrichtung und einem Speichermodul sein. Beispiele für eine Speichervorrichtung sind ein Solid-State-Laufwerk (SSD), ein Flash-Laufwerk, ein USB-Flash-Laufwerk (Universal Serial Bus Flash Laufwerk), ein eMMC-Laufwerk (Embedded Multi-Media Controller Laufwerk), ein UFS-Laufwerk (Universal Flash Storage Laufwerk), eine SD-Karte (Secure Digital Karte) und ein Festplattenlaufwerk (HDD). Beispiele für Speichermodule sind ein Dual-Inline-Speichermodul (DIMM), ein Small-Outline-DIMM (SO DIMM) und verschiedene Arten von nichtflüchtigen Dual-Inline-Speicher-modulen (NVDIMMs).
  • Das Computersystem 100 kann eine Computervorrichtung sein, wie zum Beispiel ein Desktop-Computer, ein Laptop-Computer, ein Netzwerk-Server, eine mobile Vorrichtung, ein Fahrzeug (z.B. ein Flugzeug, eine Drohne, ein Zug, ein Auto oder ein anderes Transportmittel), eine loT-fähige Vorrichtung (loT = Internet der Dinge), ein eingebetteter Computer (z.B. einer, der in einem Fahrzeug, einer Industrieanlage oder einer vernetzten kommerziellen Vorrichtung enthalten ist) oder eine solche Computervorrichtung, die einen Speicher und eine Verarbeitungsvorrichtung enthält.
  • Das Computersystem 100 kann ein Host-System 120 umfassen, das mit einem oder mehreren Speicher-Untersystemen 110 verbunden ist. In einigen Ausführungsformen ist das Host-System 120 mit verschiedenen Typen von Speicher-Untersystemen 110 gekoppelt. 1 zeigt ein Beispiel eines Host-Systems 120, das mit einem Speicher-Untersystem 110 gekoppelt ist. Wie hier verwendet, bezieht sich „gekoppelt an“ oder „gekoppelt mit“ allgemein auf eine Verbindung zwischen Komponenten, wobei es sich um eine indirekte kommunikative Verbindung oder eine direkte kommunikative Verbindung (z.B. ohne zwischengeschaltete Komponenten) handeln kann, unabhängig davon, ob sie verdrahtet oder drahtlos ist, einschließlich Verbindungen, wie zum Beispiel elektrisch, optisch, magnetisch, usw.
  • Das Host-System 120 kann einen Prozessor-Chipsatz und einen von dem Prozessor-Chipsatz ausgeführten Software-Stack enthalten. Der Prozessor-Chipsatz kann einen oder mehrere Kerne, einen oder mehrere Caches, einen Speicher-Controller (z.B. ein NVDIMM-Controller) und einen Speicherprotokoll-Controller (z.B. PCle-Controller, SATA-Controller) enthalten. Das Host-System 120 verwendet das Speicher-Untersystem 110, um beispielsweise Daten in das Speicher-Untersystem 110 zu schreiben und um Daten aus dem Speicher-Untersystem 110 zu lesen.
  • Das Host-System 120 kann über eine physische Host-Schnittstelle mit dem Speicher-Untersystem 110 gekoppelt sein. Beispiele für eine physische Host-Schnittstelle sind unter anderem eine SATA-Schnittstelle (Serial Advanced Technology Attachment Schnittstelle), eine PCIe-Schnittstelle (Peripheral Component Interconnect Express Schnittstelle), eine USB-Schnittstelle (Universal Serial Bus Schnittstelle), ein Fibre-Channel, ein SAS (Serial Attached SCSI), ein DDR-Speicherbus (Double Data Rate Speicherbus), ein SCSI (Small Computer System Interface), eine DIMM-Schnittstelle (Dual Inline Memory Module Schnittstelle) (z.B. eine DIMM-Sockel-Schnittstelle, die DDR (Double Data Rate) unterstützt), usw. Die physische Host-Schnittstelle kann zur Datenübertragung zwischen dem Host-System 120 und dem Speicher-Untersystem 110 verwendet werden. Das Host-System 120 kann außerdem eine NVM Express-Schnittstelle (NVMe-Schnittstelle) verwenden, um auf Komponenten (z.B. Speichervorrichtungen 130) zuzugreifen, wenn das Speicher-Untersystem 110 über die physische Host-Schnittstelle (z.B. PCle-Bus) mit dem Host-System 120 gekoppelt ist. Die physische Host-Schnittstelle kann eine Schnittstelle für das Weiterleiten von Steuersignalen, Adresssignalen, Datensignalen und anderen Signalen zwischen dem Speicher-Untersystem 110 und dem Host-System 120 bereitstellen. In 1 ist ein Speicher-Untersystem 110 als ein Beispiel dargestellt. Allgemein kann das Host-System 120 auf mehrere Speicher-Untersysteme über eine gemeinsame Kommunikationsverbindung, mehrere separate Kommunikationsverbindungen und/oder eine Kombination von Kommunikationsverbindungen zugreifen.
  • Die Speichervorrichtungen 130, 140 können eine beliebige Kombination der verschiedenen Typen von nichtflüchtigen Speichervorrichtungen und/oder flüchtigen Speichervorrichtungen umfassen. Bei den flüchtigen Speichervorrichtungen (z.B. Speichervorrichtung 140) kann es sich um Direktzugriffsspeicher (RAM) handeln, wie zum Beispiel dynamische Direktzugriffsspeicher (DRAM) und synchrone dynamische Direktzugriffsspeicher (SDRAM), ohne darauf beschränkt zu sein.
  • Einige Beispiele für nichtflüchtige Speichervorrichtungen (z.B. Speichervorrichtung 130) umfassen Flash-Speicher vom Negativ-Und-Typ (NAND-Typ) und Write-in-Place-Speicher, wie z.B. eine dreidimensionale Kreuzpunkt-Speichervorrichtung („3D-Cross-Point“-Speichervorrichtung), die ein Kreuzpunkt-Array aus nichtflüchtigen Speicherzellen ist. Ein Kreuzpunkt-Array eines nichtflüchtigen Speichers kann eine Bitspeicherung auf Basis einer Änderung des Bahnwiderstands in Verbindung mit einem stapelbaren Kreuzgitter-Datenzugriffs-Array durchführen. Darüber hinaus kann ein nichtflüchtiger Kreuzpunkt-Speicher im Gegensatz zu vielen Flash-Speichern eine Write-in-Place-Operation durchführen, bei dem eine nichtflüchtige Speicherzelle programmiert werden kann, ohne dass die nichtflüchtige Speicherzelle zuvor gelöscht wurde. Flash-Speicher vom NAND-Typ umfassen beispielsweise zweidimensionale NAND (2D NAND) und dreidimensionale NAND (3D NAND).
  • Jede der Speichervorrichtungen 130 kann ein oder mehrere Arrays aus Speicherzellen enthalten. Ein Typ von Speicherzellen, zum Beispiel Single-Level-Cells (SLC), kann ein Bit pro Zelle speichern. Andere Typen von Speicherzellen, wie zum Beispiel Multi-Level-Zellen (MLCs), Triple-Level-Zellen (TLCs), Quad-Level-Zellen (QLCs) und Penta-Level-Zellen (PLCs), können mehrere Bits pro Zelle speichern. In einigen Ausführungsformen kann jede der Speichervorrichtungen 130 eine oder mehrere Arrays aus Speicherzellen wie SLCs, MLCs, TLCs, QLCs, PLCs oder eine beliebige Kombination davon enthalten. In einigen Ausführungsformen kann eine bestimmte Speichervorrichtung einen SLC-Bereich und einen MLC-Bereich, einen TLC-Bereich, einen QLC-Bereich oder einen PLC-Bereich aus Speicherzellen enthalten. Die Speicherzellen der Speichervorrichtungen 130 können als Seiten gruppiert sein, die sich auf eine logische Einheit der zum Speichern von Daten verwendeten Speichervorrichtung beziehen können. Bei einigen Typen von Speichern (z.B. NAND) können die Seiten zu Blöcken gruppiert werden.
  • Obwohl nichtflüchtige Speicherkomponenten, wie zum Beispiel ein 3D Kreuzpunkt-Array aus nichtflüchtigen Speicherzellen und ein Flash-Speicher vom NAND-Typ (z.B. 2D NAND, 3D NAND) beschrieben sind, kann die Speichervorrichtung 130 auf irgendeinem anderen Typ von nichtflüchtigen Speichern basieren, wie zum Beispiel Festwertspeicher (ROM), Phasenänderungsspeicher (PCM), selbstselektierende Speicher, andere Chalcogenid-basierte Speicher, ferro-elektrische Transistor-Direktzugriffsspeicher (FeTRAM), ferroelektrische Direktzugriffsspeicher (FeRAM), Magneto-Direktzugriffsspeicher (MRAM), Spin Transfer Torque MRAM (STT-MRAM), Conductive Bridging RAM (CBRAM), resistive Direktzugriffsspeicher (RRAM), Oxid-basierte RRAM (OxRAM), Negativ-Oder- Flash-Speicher (NOR-Flash-Speicher) und elektrisch löschbare programmierbare Festwertspeicher (EEPROM).
  • Der Speicher-Untersystem-Controller 115 (oder einfach Controller 115) kann mit den Speichervorrichtungen 130 kommunizieren, um Operationen, wie zum Beispiel Lesen von Daten, Schreiben von Daten oder Löschen von Daten in den Speichervorrichtungen 130, und andere solche Operationen durchzuführen. Der Speicher-Untersystem-Controller 115 kann Hardware, wie zum Beispiel eine oder mehrere integrierte Schaltungen und/oder diskrete Komponenten, einen Puffer-speicher oder eine Kombination davon enthalten. Die Hardware kann eine digitale Schaltung mit dedizierter (d.h. hartkodierter) Logik enthalten, um die hier beschriebenen Operationen durchzuführen. Der Speicher-Untersystem-Controller 115 kann ein Mikro-Controller, eine spezielle Logikschaltung (z.B. ein feldprogrammierbares Gate-Array (FPGA), eine anwendungsspezifische integrierte Schaltung (ASIC), usw.) oder ein anderer geeigneter Prozessor sein.
  • Der Speicher-Untersystem-Controller 115 kann eine Verarbeitungsvorrichtung sein, die einen oder mehrere Prozessoren (z.B. Prozessor 117) umfasst, die konfiguriert sind, um in einem lokalen Speicher 119 gespeicherte Instruktionen auszuführen. In dem gezeigten Beispiel umfasst der lokale Speicher 119 des Speicher-Untersystem-Controllers 115 einen eingebetteten Speicher, der konfiguriert ist, um Befehle zur Durchführung verschiedener Prozesse, Operationen, logischer Abläufe und Routinen zu speichern, die den Betrieb des Speicher-Untersystems 110 steuern, einschließlich der Handhabung der Kommunikation zwischen dem Speicher-Untersystem 110 und dem Host-System 120.
  • In dem dargestellten Beispiel enthält der lokale Speicher 119 des Speicher-Untersystem-Controllers 115 einen eingebetteten Speicher, der konfiguriert ist, um Befehle zur Durchführung verschiedener Prozesse, Operationen, logischer Abläufe und Routinen zu speichern, die den Betrieb des Speicher-Untersystems 110 steuern, einschließlich der Handhabung der Kommunikation zwischen dem Speicher-Untersystem 110 und dem Host-System 120.
  • In einigen Ausführungsformen kann der lokale Speicher 119 Speicherregister enthalten, um Speicherzeiger, abgerufene Daten, usw. zu speichern. Der lokale Speicher 119 kann auch einen Festwertspeicher (ROM) zum Speichern von Mikro-Code enthalten. Obwohl das beispielhafte Speicher-Untersystem 110 in 1 so dargestellt ist, dass es den Speicher-Untersystem-Controller 115 enthält, kann ein Speicher-Untersystem 110 in einer anderen Ausführungsform der vorliegenden Erfindung keinen Speicher-Untersystem-Controller 115 enthalten und stattdessen auf eine externe Steuerung angewiesen sein (z.B. zur Verfügung gestellt durch einen externen Host oder durch einen vom Speicher-Untersystem getrennten Prozessor oder Controller).
  • Allgemein kann der Speicher-Untersystem-Controller 115 Befehle oder Operationen vom Host-System 120 empfangen und die Befehle oder Operationen in Instruktionen oder geeignete Befehle umwandeln, um den gewünschten Zugriff auf die Speichervorrichtungen 130 zu erreichen. Der Speicher-Untersystem-Controller 115 kann für andere Operationen, wie zum Beispiel Abnutzungsausgleichs-Operationen (Wear-Leveling-Operationen), Speicherbereinigungs-Operationen (Garbage-Collection-Operationen), Fehlererfassungs-Operationen und Fehlerkorrektur-Code-Operationen (ECC-Operationen), Verschlüsselungs-Operationen, Cache-Operationen und Adressübersetzungen zwischen einer logischen Adresse (z.B. logische Blockadresse (LBA), Namenraum) und einer physischen Adresse (z.B. physische MU-Adresse, physische Blockadresse) verantwortlich sein, die mit den Speichervorrichtungen 130 in Beziehung stehen. Der Speicher-Untersystem-Controller 115 kann außerdem eine Host-Schnittstellenschaltung umfassen, um über die physische Host-Schnittstelle mit dem Host-System 120 zu kommunizieren. Die Host-Schnittstellenschaltung kann die vom Host-System empfangenen Befehle in Befehlsinstruktionen umwandeln, um auf die Speicher-vorrichtungen 130 zuzugreifen, und um die mit den Speichervorrichtungen 130 in Beziehung stehenden Antworten in Informationen für das Host-System 120 umwandeln.
  • Das Speicher-Untersystem 110 kann auch zusätzliche Schaltungen oder Komponenten enthalten, die nicht dargestellt sind. In einigen Ausführungsformen kann das Speicher-Untersystem 110 einen Cache oder Puffer (z.B. DRAM) und Adressschaltungen (z.B. ein Zeilen-Dekoder und ein Spalten-Dekoder) enthalten, die eine Adresse vom Speicher-Untersystem-Controller 115 empfangen und die Adresse dekodieren können, um auf die Speichervorrichtungen 130 zuzugreifen.
  • In einigen Ausführungsformen umfassen die Speichervorrichtungen 130 lokale Medien-Controller 135, die in Verbindung mit dem Speicher-Untersystem-Controller 115 arbeiten, um Operationen hinsichtlich einer oder mehreren Speicherzellen der Speichervorrichtungen 130 auszuführen. Ein externer Controller (z.B. der Speicher-Untersystem-Controller 115) kann die Speichervorrichtung 130 extern verwalten (z.B. Medien-Verwaltungs-Operationen bezüglich der Speichervorrichtung 130 durchführen). In einigen Ausführungsformen ist das Speicher-Untersystem 110 eine verwaltete Speichervorrichtung, die eine Roh-Speichervorrichtung 130 mit einer Steuerlogik (z.B. lokaler Controller 132) auf dem Chip und einen Controller (z.B. Speicher-Untersystem-Controller 115) für die Medienverwaltung innerhalb desselben Speichervorrichtungsbausteins umfasst. Ein Beispiel für eine verwaltete Speichervorrichtung ist eine verwaltete NAND-Vorrichtung (MNAND).
  • In einer Ausführungsform umfasst das Speicher-Untersystem 110 einen Cache-Manager 113, der zum Verfolgen und Verwalten von Daten in der Speicher-vorrichtung 130 und der Speichervorrichtung 140 verwendet werden kann. In einigen Ausführungsformen enthält der Speicher-Untersystem-Controller 115 zumindest einen Teil des Cache-Managers 113. In einigen Ausführungsformen ist der Cache-Manager 113 ein Teil des Host-Systems 120, einer Anwendung oder eines Betriebssystems. In anderen Ausführungsformen enthält der lokale Medien-Controller 135 zumindest einen Teil des Cache-Managers 113 und ist konfiguriert, um die hier beschriebenen Funktionen auszuführen. Der Cache-Manager 113 kann über eine synchrone Schnittstelle direkt mit den Speichervorrichtungen 130 und 140 kommunizieren. Darüber hinaus können Daten-Transfers zwischen der Speichervorrichtung 130 und der Speichervorrichtung 140 innerhalb des Speicher- Untersystems 110 ohne Zugriff auf das Host-System 120 erfolgen.
  • Die Speichervorrichtung 140 kann einen Daten-Cache enthalten, der Daten von der Speichervorrichtung 130 speichert, so dass zukünftige Datenanforderungen schneller bedient werden können. Eine Cache-Zeile ist eine Basiseinheit für den Cache-Speicher und kann mehrere Bytes und/oder Wörter von Daten enthalten. Eine kleinere Cache-Zeilengröße hat eine höhere Trefferrate, erfordert aber mehr Tag-Speicher als eine große Cache-Zeilengröße. Ein Tag ist eine eindeutige Kennung für eine Gruppe von Daten, die zur Unterscheidung verschiedener Regionen des abgebildeten Speichers verwendet werden kann.
  • In einigen Ausführungsformen können alle Daten, die vom Speicher-Untersystem 110 gespeichert werden, in der Speichervorrichtung 130 gespeichert werden. Bestimmte Daten, die in der Speichervorrichtung 130 gespeichert sind, können auch im Daten-Cache der Speichervorrichtung 140 gespeichert werden. So können beispielsweise Daten, auf die das Host-System 120 häufiger oder vor kurzem zugegriffen hat, im Daten-Cache gespeichert werden, um einen schnelleren Host-Zugriff zu ermöglichen. Wenn das Host-System 120 eine Leseanforderung für im Daten-Cache gespeicherte Daten liefert (d.h. ein Cache-Treffer), können die Daten aus dem Daten-Cache abgerufen werden, anstatt aus der Speichervorrichtung 130. Die Bandbreite oder Fähigkeit zum Abrufen von Daten im Daten-Cache kann schneller sein als die Bandbreite oder Fähigkeit zum Abrufen von Daten in der Speichervorrichtung 130.
  • Der Daten-Cache der Speichervorrichtung 140 kann partitioniert sein und einen Sektor-Cache 142 zum Speichern kleiner Cache-Zeilen (im Folgenden „Sektor(en)“) und einen Seiten-Cache 144 zum Speichern großer Cache-Zeilen (im Folgenden „Seite(n)“) umfassen. Der Sektor-Cache 142 und der Seiten-Cache 144 können mit unterschiedlichen Datengrößen verwaltet werden. Der Sektor-Cache 142 kann eine kleinere Granularität (kleinere Größe) verwenden, und der Seiten-Cache 144 kann eine größere Granularität (größere Größe) verwenden. In einem Beispiel kann eine Seite 2 Kilobyte und ein Sektor 64 Byte groß sein. Eine Seite kann einen oder mehrere Sektoren umfassen. Der Seiten-Cache 144 kann weniger Metadaten zur Verwaltung der Daten benötigen (z.B. nur ein einziges gültiges Bit für die gesamte Seite), wenn eine größere Datengröße verwendet wird. Die kleinere Datengröße des Sektor-Cache 142 kann größere Mengen an Metadaten erfordern (z.B. eine größere Anzahl gültiger Bits und/oder fehlerhafter Bits, Tags, usw.). Die Seiten im Seiten-Cache 144 können in einem oder mehreren Sätzen organisiert sein. In einem Beispiel umfasst ein Seitensatz 24 Seiten. In ähnlicher Weise können die Sektoren im Sektor-Cache 142 in einen oder mehrere Sätze unterteilt werden. In einem Beispiel umfasst ein Sektorsatz 16 Sektoren.
  • Die Speichervorrichtung 130 kann Daten mit einer kleinen Granularität, ähnlich wie der Sektor-Cache, speichern und verwalten. Zum Beispiel können Daten in der Speichervorrichtung 130 mit einer Datennutzlastgröße gespeichert werden, die einen oder mehrere Sektoren im Sektor-Cache 142 umfassen kann. Daten können daher zwischen der Speichervorrichtung 130 und dem Sektor-Cache 142 mit der Datennutzlastgröße (z.B. ein oder mehrere Sektoren auf einmal) übertragen werden.
  • Im Sektor-Cache 142 können Metadaten, die mit einer „Page“ im Sektor-Cache 142 (hier als „Sektorgruppe“ bezeichnet) in Beziehung stehen, ein gültiges Bit für jeden der Sektoren enthalten, um anzugeben, ob der Sektor gültige Daten enthält (z.B. ob die mit dem Sektor in Beziehung stehende Cache-Zeile für einen Transfer zugewiesen ist (nicht gültig) oder den Transfer empfangen hat (gültig)). Darüber hinaus können die Metadaten ein fehlerhaftes Bit für jede Datennutzlast in der Sektorgruppe enthalten, damit festgestellt werden kann, ob die Datennutzlast in dem Sektor-Cache 142 modifiziert wurde und daher in die Speichervorrichtung 130 zurückgeschrieben werden muss. Folglich kann jeder Sektor in dem Sektor-Cache 142 unter Verwendung der mit der Sektorgruppe in Beziehung stehenden Metadaten verfolgt und verwaltet werden. Die Metadaten der Sektorgruppe können auch heuristische Felder enthalten, die dazu beitragen, die Cache-Retention- und Pre-Fetch-Richtlinien zu informieren.
  • Ähnlich wie beim Sektor-Cache 142 können Metadaten mit jeder Seite im Seiten-Cache 144 verknüpft werden, um die entsprechende Seite zu verwalten. Beispielsweise können die Metadaten, die mit einer Seite im Seiten-Cache 144 in Beziehung stehen, ein einzelnes gültiges Bit und ein einzelnes fehlerhaftes Bit enthalten, da der Seiten-Cache 144 auf Seitenebene verwaltet wird. Jeder Seite können zusätzliche Metadaten zugeordnet werden, um neben anderen Verwaltungsaufgaben auch Räumungsprozeduren zu bestimmen. Wenn der Cache-Manager 113 bestimmt, dass eine Sektorgruppe im Sektor-Cache 142 in den Seiten-Cache 144 übertragen werden soll (z.B. weil häufig auf sie zugegriffen wird), kann der Cache-Manager 113 den verbleibenden Bereich der Seite im Sektor-Cache 142 mit den entsprechenden Sektoren/Datennutzlasten aus der Speichervorrichtung 130 füllen. Sobald die Seite mit den verbleibenden Sektoren in der Sektorgruppe gefüllt ist, können die Metadaten, die mit der Seite verbunden sind, in der sich der Sektor befindet, in die Metadaten des Seiten-Cache kopiert werden, anstatt Daten zwischen den Caches zu übertragen. Beispielsweise kann der Cache-Manager 113 eine Seite in dem Seiten-Cache 144 gemäß einer Räumungsrichtlinie identifizieren und dann die Metadaten (d.h. die Adresse) der Seite in dem Seiten-Cache mit den Metadaten der Seite im Sektor-Cache 142 austauschen. Daher werden keine Daten übertragen, aber die Seiten können zwischen der Verwaltung auf Seitenebene (z.B. im Seiten-Cache 144) und der Verwaltung auf Sektorebene (z.B. im Sektor-Cache 142) innerhalb des DatenCache ausgetauscht werden.
  • Insbesondere kann ein Cache-Eintrag erstellt werden, wenn eine Cache-Zeile von der Speichervorrichtung 130 in die Speichervorrichtung 140 kopiert wird (z.B. in den Sektor-Cache 142 oder den Seiten-Cache 144). Der Cache-Eintrag kann kopierte Daten und den Speicherplatz der kopierten Daten (z.B. einen Tag-Speichereintrag) enthalten. Der Tag-Speichereintrag kann zur Verfolgung eines Sektors, einer Gruppe von Sektoren (z.B. einer Sektorgruppe) und/oder einer Seite verwendet werden. Sektoren in einer Sektorgruppe können mit einem einzigen Tag-Speichereintrag verfolgt werden, um die Menge des für den Sektor-Cache 142 erforderlichen Tag-Speichers zu reduzieren.
  • Jeder Seiten-Tag-Speichereintrag kann ein Tag (z.B. ein oder mehrere Host-Adressbits) und zugehörige Seiten-Metadaten enthalten. Die zugehörigen Seiten-Metadaten können fehlerhafte Bit(s), gültige Bit(s), LRU-Daten (Least Recently Access), usw. enthalten. Ein fehlerhaftes Bit kann verwendet werden, um anzugeben, ob eine Seite Daten enthält, die mit dem nichtflüchtigen Speicher (z.B. der Speichervorrichtung 130) inkonsistent sind. Ein gültiges Bit kann verwendet werden, um anzugeben, ob eine Seite gültig ist (z.B. ob die mit der Seite in Beziehung stehende Cache-Zeile für einen Transfer zugewiesen ist (nicht gültig) oder den Transfer empfangen hat (gültig)). Die LRU-Daten können einen LRU-Wert enthalten und können verwendet werden, um anzugeben, ob auf eine Seite zuletzt vom Host-System 120 zugegriffen wurde. Wenn beispielsweise auf eine Seite zugegriffen wird, kann ein LRU-Wert für diese Seite auf einen vorgegebenen Wert (z.B. 24) gesetzt werden. LRU-Werte für jede andere Seite im Seiten-Cache 144 oder für jede andere Seite in einem Satz von Seiten können um einen Betrag (z.B. um 1) verringert werden. Die LRU-Daten können für Räumungsprozeduren verwendet werden. Der Cache-Manager 113 kann jede Seite im Seiten-Cache 144 unter Verwendung eines Seiten-Tag-Speichereintrags und/oder von Seiten-Metadaten verfolgen und verwalten.
  • Jeder Sektor-Tag-Speichereintrag kann ein Tag (z.B. ein Host-Adressbit) und zugehörige Sektor-Metadaten für einen Sektor oder eine Sektorgruppe enthalten. Sektor-Metadaten, die mit Sektoren in einer Sektorgruppe in Beziehung stehen, können ein gültiges Bit für jeden der Sektoren enthalten, um anzugeben, ob der Sektor ein gültiger Teil der Daten ist. Die Metadaten der Sektorgruppe können außerdem ein fehlerhaftes Bit für jede Datennutzlast in der Sektorgruppe enthalten, so dass bestimmt werden kann, ob die Datennutzlast im Sektor-Cache modifiziert wurde. Die Metadaten der Sektorgruppe können außerdem LRU-Daten für Räumungsprozeduren enthalten, die angeben, dass der Host zuletzt auf einen Sektor zugegriffen hat. Die Metadaten der Sektorgruppe können auch heuristische Felder enthalten, die Cache-Retention- und Pre-Fetch-Richtlinien unterstützen. Der Cache-Manager 113 kann jeden Sektor und jede Sektorgruppe in dem Sektor-Cache 142 unter Verwendung des Sektor-Tag-Speichereintrags und/oder der Sektor-Metadaten verfolgen und verwalten.
  • In einem Beispiel kann der Sektor-Cache 142 32 gültige Bits verwenden, um anzugeben, welche Sektoren der Sektorgruppe gültig sind. In einem anderen Beispiel kann der Sektor-Cache 142 16 fehlerhafte Bits verwenden, um eine fehlerhafte Situation für alle 2 Sektoren oder jedes Sektorpaar anzugeben. Wenn ein Sektor geräumt werden soll (d.h. fehlerhaft ist), kann das gültige Bit des anderen Sektors des Sektorpaars überprüft werden. Wenn es gesetzt ist, kann der andere Sektor ebenfalls geräumt werden. Zwei Sektoren können aus der Speichervorrichtung 130 gelesen werden. Wenn das gültige Bit des anderen Sektors desselben Sektorpaars nicht gesetzt ist, können beide Sektoren in die Speichervorrichtung 140 geschrieben werden. Andernfalls kann nur der gefüllte Sektor geschrieben werden. In einigen Ausführungsformen kann der Cache-Manager 113 Heuristiken verwenden, um die Anzahl der Zugriffe auf die Sektoren zu berücksichtigen.
  • In einigen Ausführungsformen können jeder Seite im Seitencache 144 Seiten-Metadaten zugeordnet werden, um jede Seite zu verwalten. Beispielsweise können die Seiten-Metadaten, die mit einer Seite im Seiten-Cache in Beziehung stehen, ein einzelnes gültiges Bit und ein einzelnes fehlerhaftes Bit enthalten. Weitere Metadaten können jeder Seite zugeordnet werden, um neben anderen Verwaltungsaufgaben auch Räumungsprozeduren zu bestimmen.
  • In einigen Ausführungsformen kann der Cache-Manager 113 bei einem Host-Zugriff (z.B. eine Lese-Operation oder eine Schreib-Operation) auf das Speicher-Untersystem eine Host-Adresse verwenden, die mit dem Zugriff in Beziehung steht, um Tags abzufragen, die mit jeder Seite im Seiten-Cache 144 und mit jedem Sektor im Sektor-Cache 142 in Beziehung stehen. Wenn der Cache-Manager 113 eine Übereinstimmung (unter Verwendung eines Seiten-Tag-Speichereintrags) im Seiten-Cache 144 findet, dann befinden sich die Daten, die vom Host-System angefordert werden, im Seiten-Cache 144. Der Cache-Manager 113 kann dann den Zugriff bereitstellen, der vom Host-System 120 angefordert wird (z.B. Lesen oder Schreiben). Wenn der Cache-Manager 113 (unter Verwendung eines Sektor-Tag-Speichereintrags) eine Übereinstimmung im Sektor-Cache 142 findet, können die Daten abgerufen oder aus dem Sektor-Cache 142 abgerufen oder darauf zugegriffen werden. Andernfalls kann jeder Cache-Fehltreffer vom Sektor-Cache 142 gehandhabt werden. Wenn beispielsweise eine Lese-Operation empfangen wird und ein Cache-Fehltreffer auftritt (d.h., die Daten befinden sich nicht im Seiten-Cache 144 oder im Sektor-Cache 142), kann der Cache-Manager 113 eine Sektorgruppe auf Basis einer Räumungsrichtlinie des Cache-Managers 113 räumen. Beispielsweise kann die zu räumende Sektorgruppe die zuletzt genutzte Sektorgruppe sein. Alle Daten mit einem fehlerhaften Bit können in die Speichervorrichtung 130 zurückgeschrieben werden. Der Cache-Manager 113 kann dann die angeforderte Datennutzlast aus der Speichervorrichtung 130 abrufen und die geräumte Sektorgruppe im Sektor-Cache 142 durch die Sektorgruppe ersetzen, die die abgerufene Datennutzlast enthält.
  • In einigen Ausführungsformen können, während sich Daten im Sektor-Cache 142 befinden, Datenzugriffsmuster und Datenzugriffshistorie für einen Sektor verfolgt werden, um zu bestimmen, ob sie für einen längeren Zeitraum im Seiten-Cache 144 zwischengespeichert werden soll. Die Trefferrate für den Daten-Cache (sowohl den Seiten-Cache 144 als auch den Sektor-Cache 142) kann durch die Identifizierung allgemeiner Zugriffsmuster und durch die Aggregation einer ausreichenden Menge von Daten über Host-Zugriffe auf jede Sektorgruppe im Sektor-Cache 142 erhöht werden. Der Cache-Manager 113 kann die gesammelten Zugriffsdaten verwenden, um eine Temperatur einer Sektorgruppe (z.B. eine Zugriffsrate), Zugriffsmuster des Sektors und der zugehörigen Seite, usw. zu bestimmen, und um dann eine geeignete Strategie zur Maximierung der Trefferrate des Daten-Cache auszuwählen. Beispielsweise kann der Cache-Manager 113 einen Satz von Cache-Verwaltungsrichtlinien enthalten, aus denen er auf Basis der für den Sektor-Cache gesammelten Zugriffsdaten auswählen kann.
  • Wie vorstehend beschrieben, kann der Cache-Manager 113 einen Räumungsvorgang (im Folgenden „Räumung“) unter Verwendung eines Räumungsmodus durchführen, bevor Daten in den Sektor-Cache 142 gespeichert werden können. Der Räumungsmodus kann Sektor-basiert, Seiten-basiert oder eine beliebige Kombination davon sein. Im Sektor-basierten Räumungsmodus kann der Cache-Manager 113 einen Sektor im Sektor-Cache 142 auswählen. In einem Beispiel wählt der Cache-Manager 113 den Sektor anhand von LRU-Daten aus. Wenn der ausgewählte Sektor fehlerhafte Bits enthält, kann der Cache-Manager 113 den Sektor an den nichtflüchtigen Speicher (z.B. Speichervorrichtung 130) senden. Im Seiten-basierten Räumungsmodus können ein oder mehrere geräumte Sektoren an den Seiten-Cache 144 gesendet werden.
  • In einigen Ausführungsformen kann der Räumungsmodus mithilfe von Heuristiken bestimmt werden. Heuristik ist eine Technik oder ein Algorithmus, der zur Lösung eines Problems unter Verwendung nicht standardisierter Verfahren entwickelt wurde. In einem Beispiel kann der Räumungsmodus Seiten-basiert sein, wenn die Heuristik einen Grenzwert überschreitet. Andernfalls kann der Räumungsmodus Sektor-basiert sein. In anderen Ausführungsformen kann ein Algorithmus sowohl die Anzahl der gesetzten gültigen Bits als auch die Anzahl der gesetzten fehlerhaften Bits untersuchen. Der Räumungsmodus kann Seiten-basiert sein, wenn die Heuristik, die Anzahl der gesetzten gültigen Bits und/oder die Anzahl der gesetzten fehlerhaften Bits einen oder mehrere Grenzwerte überschreiten. Andernfalls kann der Räumungsmodus Sektor-basiert sein. In einigen Ausführungsformen kann der Cache-Manager 113 eine zweite Seiten-Cache-Suche unter Verwendung der Sektor-Räumungs-Adresse verwenden, um eine zu räumende LRU-Seite zu finden. Wenn die ausgewählte Seite fehlerhaft ist, kann der Cache-Manager 113 zunächst die gesamte Seite an den nichtflüchtigen Speicher (z.B. Speichervorrichtung 130) senden. Eine zweite Seiten-Cache-Suche kann vermieden werden, wenn ein Seiten-Tag-Speicher in zwei separate Abschnitte unterteilt ist (z.B. ein erster Abschnitt für einen ersten Seitensatz und ein zweiter Abschnitt für einen zweiten Seitensatz). In einigen Ausführungsformen kann der Cache-Manager 113 die LRU-Seite räumen, wenn alle Sektoren oder Seiten eines Satzes verwendet werden (z.B. gültig sind) und eine neue Seite in den vollständigen Satz eingefügt werden muss. Wenn jedoch eine Sektorgruppe geräumt werden muss, die Heuristik aber anzeigt, dass es vorteilhaft sein könnte, sie im Cache zu behalten, kann der Cache-Manager 113 den Sektorgruppen-Seiten-Cache 144 verschieben, anstatt ihn zu räumen. Wenn der Seiten-Cache 144 voll ist, kann der Cache-Manager 113 eine LRU-Seite räumen.
  • Ein Sektor kann eindeutig mit einer Seite der einzelnen Abschnitte in Beziehung gesetzt werden. Abhängig vom Wert eines Bits der Host-Adresse kann eines der beiden Suchergebnisse aus den beiden entsprechenden Seitensätzen als endgültiges Seitensuchergebnis ausgewählt werden. Der zu räumende Sektor kann denselben Index haben wie ein Sektor, der unter Verwendung der Host-Adresse ausgewählt wurde. Der Cache-Manager 113 kann seine entsprechende Seite unter Verwendung eines LSB (niedrigstwertiges Byte) ihres Tag-Wertes auswählen. Da die beiden Suchergebnisse der ersten Suche bereits nach der ersten Suche verfügbar sein können, können die zweiten Suchergebnisse, die die Sektor-Räumungs-Adresse verwenden, bereits verfügbar sein, indem das LSB des (zu räumenden) Sektor-Tags verwendet wird, um eines der beiden ersten Seiten-Suchergebnisse auszuwählen.
  • In einigen Ausführungsformen kann der Cache-Manager 113 eine Füll-Operation durchführen. In einem Beispiel kann der Cache-Manager 113 bestimmen, dass eine Sektorgruppe in dem Sektor-Cache in den Seiten-Cache übertragen werden soll. Der Cache-Manager 113 kann den verbleibenden Bereich der Seite im Sektor-Cache 142 mit den entsprechenden Sektoren aus dem nichtflüchtigen Speicher (z.B. der Speichervorrichtung 130) füllen. Wenn der Cache-Manager 113 die Seite mit den verbleibenden Sektoren in der Sektorgruppe füllt, kopiert der Cache-Manager 113 die Metadaten, die mit der Seite in Beziehung stehen, in der sich der Sektor befindet, in die Seiten-Metadaten. So kann der Cache-Manager 113 beispielsweise eine Seite in dem Seiten-Cache 144 gemäß einem Räumungsmodus identifizieren und dann die Metadaten (d.h. die Adresse) der Seite in dem Seiten-Cache 144 mit den Metadaten der Seite in dem Sektor-Cache 142 austauschen. Daher werden keine Daten übertragen, aber die Seiten können zwischen einer Verwaltung auf Seitenebene (z.B. Seiten-Cache 144) und einer Verwaltung auf Sektorebene (z.B. Sektor-Cache 142) innerhalb der Speichervorrichtung 140 ausgetauscht werden.
  • In einigen Ausführungsformen werden, um die Bandbreite des Lesens des nichtflüchtigen Speichers zu minimieren, keine Daten aus dem nichtflüchtigen Speicher gelesen, um den Seiten-Cache 144 für einen Fehltreffer bei der Seiten-Cache-Suche zu füllen. Vielmehr liest der Cache-Manager 113 Daten aus dem Sektor-Cache 142 in den Seiten-Cache 144. In einem Beispiel liest der Cache-Manager 113 Daten aus dem Sektor-Cache 142 in den Seiten-Cache 144, und zwar basierend auf einem heuristischen Algorithmus für einen Cache-Treffer. Wenn beispielsweise die gesamte Anzahl der Zugriffe auf die Sektoren einer Sektorgruppe einen Grenzwert überschreitet, kann der Cache-Manager gültige Sektoren in den Seiten-Cache 144 verschieben und ungültige Sektoren aus dem nichtflüchtigen Speicher lesen, um eine neu gebildete Seite zu füllen. Sobald die Seite gefüllt ist, kann der Cache-Manager 113 das gültige Bit der Seite auf 1 und das fehlerhafte Bit der Seite auf 1 setzen, wenn irgendein Sektor der ursprünglichen Sektorgruppe fehlerhaft ist.
  • Im Seiten-Räumungsmodus können gültige Sektoren in den Seiten-Cache 144 verschoben werden. Der Cache-Manager 113 kann ungültige Sektoren aus dem nichtflüchtigen Speicher lesen, um die neu gebildete Seite vollständig zu füllen (z.B. Füllvorgang). Zusätzlich zur gesamten Anzahl der Zugriffe kann der Cache-Manager 113 eine Anzahl der gesetzten gültigen Bits sowie eine Anzahl der gesetzten fehlerhaften Bits ermitteln. In einigen Ausführungsformen kann der Cache-Manager 113 eine Seitenfüll-Operation durchführen, wenn die Anzahl der Zugriffe einen vorbestimmten Grenzwert überschreitet und/oder die Anzahl der gesetzten gültigen Bits einen weiteren vorbestimmten Grenzwert überschreitet und/oder die Anzahl der gesetzten fehlerhaften Bits einen weiteren vorbestimmten Grenzwert überschreitet.
  • In einigen Ausführungsformen kann der Cache-Manager 113 eine Lösch-Operation durchführen. In einem Beispiel kann der Cache-Manager 113 eine Lösch-Operation durchführen, um Sektoren und Seiten (z.B. LRU-Sektoren und -Seiten) proaktiv zu räumen, bevor sie zum Räumen ausgewählt werden, um alle fehlerhaften Sektoren oder Seiten an den nichtflüchtigen Speicher zu senden, wenn ihre LRU-Werte unter einen Grenzwert fallen. Der Cache-Manager 113 kann eine Lösch-Operation auslösen, nachdem LRU aktualisiert wurde. In einigen Ausführungsformen kann der Cache-Manager 113 einen LRU-Aktualisierungsalgorithmus verwenden, was dazu führen kann, dass sich LRU-Werte nach einem festen Muster ändern. Zum Beispiel können für den Sektor-Cache 142 alle LRU-Werte nach einem Reset auf Null gesetzt werden. Nach einem ersten Zugriff auf einen ersten Sektor in dem Sektor-Cache 142 kann ein LRU-Wert für den ersten Sektor gesetzt werden (z.B. auf 15). Nach einem nachfolgenden Zugriff auf einen zweiten Sektor in dem Sektor-Cache 142 kann ein zweiter LRU-Wert für den zweiten Sektor gesetzt werden (z.B. auf 15), während der erste LRU-Wert reduziert werden kann (z.B. auf 14). Dieser Prozess kann für jeden weiteren Zugriff fortgesetzt werden. Wenn der Cache-Manager 113 die Lösch-Operation aktiviert hat, kann ein Grenzwert gesetzt werden (z.B. 4). Wenn der LRU-Wert eines Sektors den Grenzwert erreicht, kann der Cache-Manager 113 diesen Sektor an den nichtflüchtigen Speicher senden. Es wird darauf hingewiesen, dass die Lösch-Operation eine Cache-Zeile (z.B. einen Sektor, eine Seite) bereinigen kann (z.B. ein fehlerhaftes Bit von 1 auf 0 setzen), aber keine Cache-Zeile räumen oder ihren LRU-Wert ändern wird.
  • In einigen Ausführungsformen kann der Cache-Manager 113 ein Zuordnungsschema verwenden, um die Bandbreite zu sparen, die erforderlich ist, um Daten vom Sektor-Cache 142 zum Seiten-Cache 144 zu verschieben. Wenn Daten aus dem Sektor-Cache 142 in den Seiten-Cache 144 verschoben werden, kann zunächst eine Seite ausgewählt werden. Für eine Sektorzeile kann es zwei mögliche entsprechende Seitenzeilen geben, abhängig vom LSB (niedrigstwertiges Bit) eines Sektor-Tags. Zum Beispiel kann eine erste Sektorzeile einer ersten Seitenzeile entsprechen, wenn das LSB ihres Sektor-Tags 0 ist, und einer zweiten Seitenzeile, wenn das LSB ihres Tags 1 ist; eine zweite Sektorzeile kann einer dritten Seitenzeile neben der ersten Seitenzeile entsprechen, wenn das LSB ihres Tags 0 ist, und einer vierten Seitenzeile neben der zweiten Seitenzeile, wenn das LSB ihres Tags 1 ist, und so weiter. Die Sektor-Cache-Zeilen und die Seiten-Cache-Zeilen können zusammen ein Seiten-Zuordnungs-Satz bilden, in dem die Daten nicht verschoben werden müssen, aber die für jede Cache-Zeile verwendeten Seiten der physischen Speichervorrichtung 140 getauscht werden können. Um eine Vertauschung von Seiten zu erreichen, kann jeder Tag-Speichereintrag mit einem zusätzlichen Feld (z.B. einem Seitenindex) versehen werden.
  • 2 ist ein Flussdiagramm eines beispielhaften Verfahrens 200 zum Verfolgen und Verwalten von Daten-Caches gemäß einigen Ausführungsformen der vorliegenden Erfindung. Das Verfahren 200 kann von einer Verarbeitungslogik ausgeführt werden, die Hardware (z.B. Verarbeitungsvorrichtung, Schaltungen, dedizierte Logik, programmierbare Logik, Mikro-Code, Hardware einer Vorrichtung, integrierte Schaltungen, usw.), Software (z.B. Instruktionen, die auf einem Verarbeitungsgerät laufen oder ausgeführt werden) oder eine Kombination davon umfassen kann. In einigen Ausführungsformen wird das Verfahren 200 von dem Cache-Manager 113 aus 1 durchgeführt. Obwohl in einer bestimmten Abfolge oder Reihenfolge dargestellt, kann die Reihenfolge der Prozesse, sofern nicht anders angegeben, modifiziert werden. Daher sind die dargestellten Ausführungsformen nur als Beispiele zu verstehen, und die dargestellten Prozesse können in einer anderen Reihenfolge ausgeführt werden, und einige Prozesse können parallel ausgeführt werden. Außerdem können in verschiedenen Ausführungsformen ein oder mehrere Prozesse weggelassen werden. Es sind also nicht alle Prozesse in jeder Ausführungsform erforderlich. Andere Prozessabläufe sind möglich.
  • Das Verfahren 200 kann sich auf eine erste Speichervorrichtung (z.B. Speichervorrichtung 130) und eine zweite Speichervorrichtung (z.B. Speichervorrichtung 140) beziehen. Die Speichervorrichtung 130 kann mit der Speichervorrichtung 140 gekoppelt sein. Die Speichervorrichtung 140 kann als ein Cache für die Speichervorrichtung 130 dienen. Die Speichervorrichtung 130, die Speichervorrichtung 140 und die Verarbeitungslogik können in einem hybriden Dual-Inline-Speichermodul enthalten sein. Die erste Speichervorrichtung kann eine Kreuzpunkt-Array-Speichervorrichtung sein. Die zweite Speichervorrichtung kann ein DRAM, ein SDRAM oder irgendein anderer flüchtiger Speicher oder eine Kombination davon sein.
  • Bei Operation 210 verfolgt die Verarbeitungslogik Zugriffsstatistiken von Datensegmenten, die in der Speichervorrichtung 140 gespeichert sind, wobei die Segmente eine erste Granularität haben. Die erste Granularität kann von dem Sektor-Cache 142 verwendet werden. Die Datensegmente können einen oder mehrere Sektoren oder eine Sektorgruppe umfassen. Die Statistikdaten können eine Anzahl von Zugriffen auf die Daten, eine Zugriffsrate auf die Daten (z.B. eine Trefferrate oder wie oft auf die Daten zugegriffen wird), usw. umfassen. In einigen Ausführungsformen können die Daten mit Metadaten verknüpft werden, wie zum Beispiel einer Anzahl von gültigen Bits, die für jeden Sektor oder jede Sektorgruppe gesetzt sind, und einer Anzahl von fehlerhaften Bits, die für jeden Sektor oder jede Sektorgruppe gesetzt sind.
  • Bei Operation 220 bestimmt die Verarbeitungslogik, basierend auf den Zugriffsstatistiken, ein Segment von Daten, die in der Speichervorrichtung 140 gespeichert sind, von der ersten Granularität auf eine zweite Granularität zu aktualisieren. Die zweite Granularität kann vom Seiten-Cache 144 verwendet werden und kann größer als die erste Granularität sein. Die Verarbeitungslogik kann bestimmen, dass das Datensegment von der ersten Granularität auf die zweite Granularität aktualisiert wird, wenn die Zugriffsstatistiken ein Grenzwertkriterium erfüllen. In einem Beispiel kann die Verarbeitungslogik bestimmen, dass das Grenzwertkriterium erfüllt ist, wenn die gesamte Anzahl der Suchvorgänge einen Grenzwert für die Anzahl der Zugriffe erreicht oder überschreitet. In einem anderen Beispiel kann die Verarbeitungslogik bestimmen, dass das Grenzwertkriterium erfüllt ist, wenn die Zugriffsrate einen Grenzwert für die Zugriffsrate erreicht oder überschreitet. In einigen Ausführungsformen kann die Verarbeitungslogik zunächst die am wenigsten verwendeten Daten aus dem Seiten-Cache 144 und/oder dem Sektor-Cache 142 räumen, und zwar auf Basis einer Räumungsrichtlinie.
  • In Block 230 ruft die Verarbeitungslogik zusätzliche Daten, die mit dem Datensegment in Beziehung stehen, aus der Speichervorrichtung 130 ab. Die zusätzlichen Daten können entsprechende Sektoren einer Seite umfassen, die nicht im Sektor-Cache 142 vorhanden waren.
  • In Block 240 speichert die Verarbeitungslogik die zusätzlichen Daten in der zweiten Speichervorrichtung, um ein neues Segment zu bilden, das die zusätzlichen Daten und das Datensegment enthält. Das neue Segment kann eine zweite Granularität haben. In einem Beispiel umfasst das Aktualisieren das Identifizieren einer physischen Adresse einer geräumten Seite, das Identifizieren einer physischen Adresse des neuen Segments und das Austauschen der physischen Adresse des neuen Segments mit der physischen Adresse der zuletzt verwendeten Seite.
  • 3 ist ein Flussdiagramm eines beispielhaften Verfahrens 300, das Operationen als Reaktion auf einen Seiten-Cache-Fehltreffer und einen Sektor-Cache-Fehltreffer gemäß einigen Ausführungsformen der vorliegenden Erfindung durchführt. Das Verfahren 300 kann von einer Verarbeitungslogik ausgeführt werden, die Hardware (z.B. Verarbeitungsvorrichtungen, Schaltungen, dedizierte Logik, programmierbare Logik, Mikro-Code, Hardware einer Vorrichtung, integrierte Schaltungen, usw.), Software (z.B. Befehle, die auf einer Verarbeitungsvorrichtung laufen oder ausgeführt werden) oder eine Kombination davon umfassen kann. In einigen Ausführungsformen wird das Verfahren 300 von dem Cache-Manager 113 aus 1 durchgeführt. Obwohl in einer bestimmten Abfolge oder Reihenfolge dargestellt, kann die Reihenfolge der Prozesse, sofern nicht anders angegeben, geändert werden. Daher sind die dargestellten Ausführungsformen nur als Beispiele zu verstehen, und die dargestellten Prozesse können in einer anderen Reihenfolge ausgeführt werden, und einige Prozesse können parallel ausgeführt werden. Außerdem können in verschiedenen Ausführungsformen ein oder mehrere Prozesse weggelassen werden. Es sind also nicht alle Prozesse in jeder Ausführungsform erforderlich. Andere Prozessabläufe sind möglich.
  • Bei Operation 310 kann die Verarbeitungslogik als Reaktion auf einen Such-Fehltreffer hinsichtlich des Seiten-Cache 144 und einen Such-Fehltreffer hinsichtlich des Sektor-Cache 142 einen Sektor im Sektor-Cache 142 zur Räumung auswählen. Die Räumung kann auf einer Räumungsrichtlinie basieren (z.B. Sektor-basierte Räumung oder Seiten-basierte Räumung). Die Verarbeitungslogik kann den Sektor auf Basis von LRU-Daten auswählen, die ein Grenzwertkriterium erfüllen. Zum Beispiel kann die Verarbeitungslogik einen Sektor auswählen, der den niedrigsten LRU-Wert hat, oder einen Sektor, der einen LRU-Wert unterhalb eines Grenzwerts hat.
  • Bei Operation 320 bestimmt die Verarbeitungslogik, ob der ausgewählte Sektor ein fehlerhaftes Bit enthält. Ein fehlerhaftes Bit kann angeben, ob der Sektor im Sektor-Cache 142 geändert wurde und daher in die Speichereinrichtung 130 zurückgeschrieben werden muss. Als Reaktion auf die Bestimmung, dass der ausgewählte Sektor ein fehlerhaftes Bit enthält, bestimmt die Verarbeitungslogik bei Operation 330 den Typ des Räumungsmodus, der Sektor-basierte Räumung oder Seiten-basierte Räumung sein kann. Der Räumungsmodus kann ausgewählt werden, indem festgestellt wird, ob die Heuristik einer dem Sektor zugeordneten Sektorgruppe ein Grenzwertkriterium erfüllt, ob eine Anzahl gültiger Bits der Sektorgruppe ein Grenzwertkriterium erfüllt, ob eine Anzahl fehlerhafter Bits der Sektorgruppe ein Grenzwertkriterium erfüllt oder eine beliebige Kombination davon. Beispielsweise kann die Verarbeitungslogik feststellen, ob die Heuristik, die Anzahl der gesetzten gültigen Bits und/oder die Anzahl der gesetzten fehlerhaften Bits einen entsprechenden Grenzwert überschreiten. Wenn der ausgewählte Sektor kein fehlerhaftes Bit enthält, fährt die Verarbeitungslogik mit der Operation 360 fort.
  • Als Reaktion auf die Bestimmung, dass der Typ des Räumungsmodus Seiten-basiert ist, sendet (z.B. kopiert) die Verarbeitungslogik bei Operation 340 die Daten in dem ausgewählten Sektor in den Seiten-Cache 144. Als Reaktion auf die Bestimmung, dass der Typ des Räumungsmodus Sektor-basiert ist, sendet die Verarbeitungslogik bei Operation 350 die Daten in dem ausgewählten Sektor an die nichtflüchtige Speichervorrichtung (z.B. Speichervorrichtung 130).
  • Bei Operation 360 räumt die Verarbeitungslogik den ausgewählten Sektor aus dem Sektor-Cache 142. Bei Operation 370 liest die Verarbeitungslogik einen neuen Sektor aus dem Sektor-Cache 142, der mit dem Such-Fehltreffer im Seiten-Cache und dem Such-Fehltreffer im Sektor-Cache in Beziehung steht. Der neue Sektor kann mit einem LRU-Wert für weitere Räumungsverfahren in Beziehung gesetzt werden.
  • 4 ist ein Flussdiagramm eines beispielhaften Verfahrens 400 zur Durchführung einer Lösch-Operation gemäß einigen Ausführungsformen der vorliegenden Erfindung. Das Verfahren 400 kann von einer Verarbeitungslogik durchgeführt werden, die Hardware (z.B. Verarbeitungsvorrichtung, Schaltungen, dedizierte Logik, programmierbare Logik, Mikro-Code, Hardware einer Vorrichtung, integrierte Schaltungen, usw.), Software (z.B. Befehle, die auf einer Verarbeitungsvorrichtung laufen oder ausgeführt werden) oder eine Kombination davon umfassen kann. In einigen Ausführungsformen wird das Verfahren 400 durch den Cache-Manager 113 aus 1 durchgeführt. Obwohl in einer bestimmten Abfolge oder Reihenfolge dargestellt, kann die Reihenfolge der Prozesse, sofern nicht anders angegeben, geändert werden. Daher sind die dargestellten Ausführungsformen nur als Beispiele zu verstehen, und die dargestellten Prozesse können in einer anderen Reihenfolge ausgeführt werden, und einige Prozesse können parallel ausgeführt werden. Außerdem können in verschiedenen Ausführungsformen ein oder mehrere Prozesse weggelassen werden. Es sind also nicht alle Prozesse in jeder Ausführungsform erforderlich. Andere Prozessabläufe sind möglich. In 4 werden beispielhaft Sektoren in dem Sektor-Cache 142 behandelt. Das Verfahren 400 kann jedoch in ähnlicher Weise für Seiten im Seiten-Cache 144 durchgeführt werden.
  • Bei Operation 410 kann die Verarbeitungslogik als Reaktion auf einen Speicherzugriff auf den Sektor-Cache 142 jeden LRU-Wert jedes Sektors im Sektor-Cache aktualisieren. Der LRU-Wert kann verwendet werden, um anzugeben, ob auf eine Seite zuletzt durch das Host-System 120 zugegriffen wurde. Wenn beispielsweise auf einen Sektor zugegriffen wird, kann ein LRU-Wert für diesen Sektor auf einen vorgegebenen Wert (z.B. 15) gesetzt werden. LRU-Werte für jeden anderen Sektor im Sektor-Cache 144 können um einen Betrag (z.B. um 1) verringert werden.
  • Bei Operation 420 kann die Verarbeitungslogik bestimmen, dass ein LRU-Wert, der mit einem Sektor im Sektor-Cache 142 in Beziehung steht, ein Grenzwertkriterium erfüllt. Zum Beispiel kann die Verarbeitungslogik bestimmen, ob der LRU-Wert bei oder unter einem Grenzwert liegt.
  • Bei Operation 430 kann die Verarbeitungslogik als Reaktion auf die Bestimmung, ob der Sektor ein fehlerhaftes Bit enthält, Daten aus dem Sektor in die nichtflüchtige Speichervorrichtung (z.B. Speichervorrichtung 130) kopieren. Das fehlerhafte Bit kann angeben, ob der Sektor im Sektor-Cache 142 geändert wurde.
  • Bei Operation 440 kann die Verarbeitungslogik das fehlerhafte Bit löschen. In einem Beispiel wird das fehlerhafte Bit gelöscht, indem das fehlerhafte Bit von 1 auf 0 gesetzt wird. Es wird darauf hingewiesen, dass der LRU-Wert des Sektors nicht auf den vorbestimmten Wert zurückgesetzt wird.
  • 5 ist ein Flussdiagramm eines weiteren beispielhaften Verfahrens 500 zum Verfolgen und Verwalten von Daten-Caches gemäß einigen Ausführungsformen der vorliegenden Erfindung. Das Verfahren 500 kann von einer Verarbeitungslogik ausgeführt werden, die Hardware (z.B. Verarbeitungsvorrichtung, Schaltungen, dedizierte Logik, programmierbare Logik, Mikro-Code, Hardware einer Vorrichtung, integrierte Schaltungen, usw.), Software (z.B. Befehle, die auf einer Verarbeitungsvorrichtung laufen oder ausgeführt werden) oder eine Kombination davon umfassen kann. In einigen Ausführungsformen wird das Verfahren 500 durch den Cache-Manager 113 aus 1 durchgeführt. Obwohl in einer bestimmten Abfolge oder Reihenfolge dargestellt, kann die Reihenfolge der Prozesse, sofern nicht anders angegeben, geändert werden. Daher sind die dargestellten Ausführungsformen nur als Beispiele zu verstehen, und die dargestellten Prozesse können in einer anderen Reihenfolge ausgeführt werden, und einige Prozesse können parallel ausgeführt werden. Außerdem können in verschiedenen Ausführungsformen ein oder mehrere Prozesse weggelassen werden. Es sind also nicht alle Prozesse in jeder Ausführungsform erforderlich. Andere Prozessabläufe sind möglich.
  • Bei Operation 510 hält die Verarbeitungslogik einen Satz von Host-Daten in der Speichervorrichtung 130. Bei Vorgang 520 hält die Verarbeitungslogik eine Teilmenge der Host-Daten in einer Speichervorrichtung 140. Die Speichervorrichtung 140 kann eine geringere Zugriffslatenz haben als die Speichervorrichtung 130 und kann als Cache für die Speichervorrichtung 130 verwendet werden. Die Speichervorrichtung 140 verwaltet Metadaten für erste Segmente der Teilmenge der Hostdaten, wobei die ersten Segmente eine erste Größe haben. In einem Beispiel umfassen die ersten Segmente Sektoren.
  • Bei Operation 530 bestimmt die Verarbeitungslogik, dass eine oder mehrere Zugriffsstatistiken von mindestens einem ersten Segment der Teilmenge der Host-Daten ein Grenzwertkriterium erfüllen. Beispielsweise kann die Verarbeitungslogik bestimmen, dass das Grenzwertkriterium erfüllt ist, wenn die gesamte Anzahl der Suchvorgänge einen Grenzwert für die Anzahl der Zugriffe überschreitet. In einem anderen Beispiel kann die Verarbeitungslogik bestimmen, dass das Grenzwertkriterium erfüllt ist, wenn die Zugriffsrate einen Grenzwert für die Zugriffsrate überschreitet. In einigen Ausführungsformen kann die Verarbeitungslogik zunächst die am wenigsten verwendeten Daten aus dem Seiten-Cache 144 und/oder dem Sektor-Cache 142 auf Basis einer Räumungsrichtlinie räumen.
  • Bei Operation 540 kann die Verarbeitungslogik ein oder mehrere erste Segmente der Teilmenge der Host-Daten als ein zweites Segment assoziieren. Das eine oder die mehreren ersten Segmente können das mindestens eine erste Segment enthalten. Die Speichervorrichtung 140 kann Metadaten für das zweite Segment der Host-Daten halten. Das zweite Segment kann eine zweite Größe haben. Zum Beispiel kann das zweite Segment eine Seite sein.
  • 6 zeigt eine beispielhafte Maschine eines Computersystems 600, in dem ein Satz von Instruktionen ausgeführt werden kann, um die Maschine zu veranlassen, eine oder mehrere der hier besprochenen Verfahren durchzuführen. In einigen Ausführungsformen kann das Computersystem 600 einem Host-System entsprechen (z.B. das Host-System 120 aus 1), das ein Speicher-Untersystem (z.B. das Speicher-Untersystem 110 aus 1) enthält oder verwendet, oder es kann verwendet werden, um die Operationen eines Controllers auszuführen (z.B. um ein Betriebssystem auszuführen, um Operationen entsprechend dem Cache-Manager 113 aus 1 auszuführen). In alternativen Ausführungsformen kann die Maschine mit anderen Maschinen in einem LAN, einem Intranet, einem Extranet und/oder dem Internet verbunden (z.B. vernetzt) sein. Die Maschine kann in der Funktion eines Servers oder einer Client-Maschine in einer Client-Server-Netzwerk-Umgebung, als Peer-Maschine in einer Peer-to-Peer- (oder verteilten) Netzwerk-Umgebung oder als ein Server oder eine Client-Maschine in einer Cloud-Computer-Infrastruktur oder -Umgebung arbeiten.
  • Bei der Maschine kann es sich um einen Personal Computer (PC), einen Tablet-PC, eine Set-Top-Box (STB), einen Personal Digital Assistant (PDA), ein Mobiltelefon, eine Web-Anwendung, einen Server, einen Netzwerk-Router, einen Switch oder eine Bridge oder eine beliebige Maschine handeln, die in der Lage ist, einen Satz von Instruktionen (sequentiell oder anderweitig) auszuführen, die die von dieser Maschine auszuführenden Aktionen spezifizieren. Auch wenn eine einzelne Maschine dargestellt ist, umfasst der Begriff „Maschine“ auch eine beliebige Anzahl von Maschinen, die einzeln oder gemeinsam einen Satz (oder mehrere Sätze) von Instruktionen ausführen, um eine oder mehrere der hier erörterten Verfahren durchzuführen.
  • Das beispielhafte Computersystem 600 umfasst eine Verarbeitungsvorrichtung 602, einen Hauptspeicher 604 (z.B. Festwertspeicher (ROM), Flash-Speicher, dynamischer Direktzugriffsspeicher (DRAM), wie zum Beispiel ein synchroner DRAM (SDRAM) oder Rambus DRAM (RDRAM), usw.), einen statischen Speicher 606 (z.B. Flash-Speicher, statischer Direktzugriffsspeicher (SRAM), usw.) und ein Datenspeichersystem 618, die über einen Bus 630 miteinander kommunizieren. Die Verarbeitungsvorrichtung 602 stellt eine oder mehrere Allzweck-Verarbeitungsvorrichtungen dar, wie z.B. ein Mikroprozessor, eine zentrale Verarbeitungseinheit oder ähnliches. Insbesondere kann die Verarbeitungsvorrichtung ein CISC-Mikroprozessor (Complex Instruction Set Computing), ein RISC-Mikroprozessor (Reduced Instruction Set Computing), ein VLIW-Mikroprozessor (Very Long Instruction Word) oder ein Prozessor sein, der andere Instruktionssätze implementiert, oder Prozessoren, die eine Kombination von Instruktionssätzen implementieren. Bei der Verarbeitungsvorrichtung 602 kann es sich auch um eine oder mehrere spezielle Verarbeitungsvorrichtungen handeln, wie zum Beispiel eine anwendungsspezifische integrierte Schaltung (ASIC), ein feldprogrammierbares Gate-Array (FPGA), ein digitaler Signalprozessor (DSP), einen Netzwerk-Prozessor oder Ähnliches. Die Verarbeitungsvorrichtung 602 ist konfiguriert, um Instruktionen 626 zur Durchführung der hier besprochenen Operationen und Schritte auszuführen. Das Computersystem 600 kann außerdem eine Netzwerk-Schnittstellenvorrichtung 608 zur Kommunikation über das Netzwerk 620 umfassen.
  • Das Datenspeichersystem 618 kann ein maschinenlesbares Speichermedium 624 (auch als computerlesbares Medium bekannt) enthalten, auf dem ein oder mehrere Sätze von Instruktionen 626 oder Software gespeichert sind, die eine oder mehrere der hier beschriebenen Verfahren oder Funktionen verkörpern. Die Instruktionen 626 können sich auch vollständig oder zumindest teilweise in dem Hauptspeicher 604 und/oder in der Verarbeitungsvorrichtung 602 befinden, während sie von dem Computersystem 600 ausgeführt werden, wobei der Hauptspeicher 604 und die Verarbeitungsvorrichtung 602 ebenfalls maschinen-lesbare Speichermedien darstellen. Das maschinenlesbare Speichermedium 624, das Datenspeichersystem 618 und/oder der Hauptspeicher 604 können dem Speicher-Untersystem 110 aus 1 entsprechen.
  • In einer Ausführungsform enthalten die Instruktionen 626 Instruktionen zum Implementieren von Funktionen, die dem Cache-Manager 113 aus 1 entsprechen. Obwohl das maschinenlesbare Speichermedium 624 in einer beispielhaften Ausführungsform als ein einzelnes Medium dargestellt ist, soll der Begriff „maschinenlesbares Speichermedium“ so verstanden werden, dass er ein einzelnes Medium oder mehrere Medien umfasst, um den einen oder mehrere Sätze von Instruktionen zu speichern. Der Begriff „maschinenlesbares Speichermedium“ soll auch jedes Medium umfassen, das in der Lage ist, einen Satz von Instruktionen zur Ausführung durch die Maschine zu speichern oder zu kodieren, und das die Maschine veranlasst, eine oder mehrere der Verfahren der vorliegenden Erfindung durchzuführen. Der Begriff „maschinenlesbares Speichermedium“ umfasst folglich Festkörperspeicher, optische Medien und magnetische Medien, ist aber nicht auf diese beschränkt.
  • Einige Teile der vorangehenden detaillierten Beschreibungen wurden in Form von Algorithmen und symbolischen Darstellungen von Operationen bezüglich Datenbits in einem Computerspeicher dargestellt. Diese algorithmischen Beschreibungen und Darstellungen werden vom Fachmann auf dem Gebiet der Datenverarbeitung verwendet, um anderen Fachleuten den Inhalt ihrer Arbeit am effektivsten zu vermitteln. Ein Algorithmus wird hier und allgemein als eine in sich konsistente Folge von Operationen verstanden, die zu einem gewünschten Ergebnis führt. Bei den Operationen handelt es sich um solche, die physikalische Manipulationen von physikalischen Größen erfordern. Normalerweise, wenn auch nicht notwendigerweise, haben diese Größen die Form von elektrischen oder magnetischen Signalen, die gespeichert, kombiniert, verglichen und anderweitig manipuliert werden können. Zuweilen hat es sich als zweckmäßig erwiesen, diese Signale als Bits, Werte, Elemente, Symbole, Zeichen, Begriffe, Zahlen oder dergleichen zu bezeichnen, hauptsächlich aus Gründen des allgemeinen Sprachgebrauchs.
  • Es sollte jedoch bedacht werden, dass alle diese und ähnliche Begriffe mit den entsprechenden physikalischen Größen in Verbindung gebracht werden müssen und lediglich praktische Bezeichnungen für diese Größen sind. Die vorliegende Erfindung kann sich auf die Aktionen und Prozesse eines Computersystems oder einer ähnlichen elektronischen Rechenvorrichtung beziehen, die Daten, die als physikalische (elektronische) Größen in den Registern und Speichern des Computersystems dargestellt werden, manipuliert und in andere Daten umwandelt, die in ähnlicher Weise als physikalische Größen in den Speichern oder Registern des Computersystems oder in anderen solchen Informationsspeichersystemen dargestellt werden.
  • Die vorliegende Erfindung bezieht sich auch auf eine Vorrichtung zur Durchführung der hier beschriebenen Operationen. Diese Vorrichtung kann speziell für die beabsichtigten Zwecke konstruiert sein, oder sie kann einen Allzweckcomputer umfassen, der durch ein im Computer gespeichertes Computerprogramm selektiv aktiviert oder neu konfiguriert wird. Ein solches Computerprogramm kann in einem computerlesbaren Speichermedium gespeichert werden, wie z.B., aber nicht beschränkt auf, jeder Typ von Diskette, einschließlich Disketten, optische Disketten, CD-ROMs und magnetisch-optische Disketten, Festwertspeicher (ROMs), Speicher mit wahlfreiem Zugriff (RAMs), EPROMs, EEPROMs, magnetische oder optische Karten oder jede Art von Medien, die zur Speicherung elektronischer Instruktionen geeignet sind und jeweils mit einem Computersystembus verbunden sind.
  • Die hier vorgestellten Algorithmen und Darstellungen sind nicht inhärent an einen bestimmten Computer oder ein anderes Gerät gebunden. Verschiedene Allzwecksysteme können mit Programmen gemäß den hier dargelegten Lehren verwendet werden, oder es kann sich als zweckmäßig erweisen, ein spezielleres Gerät zur Durchführung der Methode zu konstruieren. Die Struktur für eine Vielzahl dieser Systeme wird in der folgenden Beschreibung dargestellt. Darüber hinaus wird die vorliegende Erfindung nicht unter Bezugnahme auf eine bestimmte Programmiersprache beschrieben. Es ist offensichtlich, dass eine Vielzahl von Programmiersprachen verwendet werden kann, um die Lehren der Offenbarung, wie hier beschrieben, zu implementieren.
  • Die vorliegende Erfindung kann als Computerprogrammprodukt oder Software bereitgestellt werden, die ein maschinenlesbares Medium mit darauf gespeicherten Instruktionen umfassen kann, die zur Programmierung eines Computersystems (oder anderer elektronischer Vorrichtungen) zur Durchführung eines Verfahrens gemäß der vorliegenden Erfindung verwendet werden können. Ein maschinenlesbares Medium umfasst jeden Mechanismus zum Speichern von Informationen in einer Form, die von einer Maschine (z.B. ein Computer) gelesen werden kann. Bei einigen Ausführungsbeispielen umfasst ein maschinenlesbares (z.B. computerlesbares) Medium ein maschinenlesbares (z.B. computerlesbares) Speichermedium, wie zum Beispiel einen Festwertspeicher („ROM“), einen Direktzugriffsspeicher („RAM“), Magnetplatten-Speichermedien, optische Speichermedien, Flash-Speicherkomponenten usw.
  • In der vorstehenden Beschreibung wurden Ausführungsbeispiele der Erfindung unter Bezugnahme auf spezifische Ausführungsbeispiele beschrieben. Es ist offensichtlich, dass verschiedene Modifikationen daran vorgenommen werden können, ohne vom Grundgedanken und Umfang der Ausführungsbeispiele der Erfindung, wie sie in den folgenden Ansprüchen dargelegt sind, abzuweichen. Die Beschreibung und die Zeichnungen sind dementsprechend eher in einem illustrativen als in einem einschränkenden Sinne zu verstehen.

Claims (20)

  1. System, umfassend: eine erste Speichervorrichtung; eine zweite Speichervorrichtung, die mit der ersten Speichervorrichtung gekoppelt ist, wobei die zweite Speichervorrichtung eine geringere Zugriffslatenz als die erste Speichervorrichtung hat und als ein Cache für die erste Speichervorrichtung verwendet wird; und eine Verarbeitungsvorrichtung, die funktional mit der ersten und der zweiten Speichervorrichtung gekoppelt ist, um Operationen durchzuführen, umfassend: Verfolgen von Zugriffsstatistiken von Datensegmenten, die in der zweiten Speichervorrichtung gespeichert sind, wobei die Segmente eine erste Granularität haben; Bestimmen, auf Basis der Zugriffsstatistiken, dass ein Datensegment, das in der zweiten Speichervorrichtung gespeichert ist, von der ersten Granularität auf eine zweite Granularität aktualisiert wird; Abrufen von zusätzlichen Daten, die mit dem Datensegment in Beziehung stehen, von der ersten Speichervorrichtung; und Speichern der zusätzlichen Daten in der zweiten Speichervorrichtung, um ein neues Segment zu bilden, das die zusätzlichen Daten und das Datensegment umfasst, wobei das neue Segment die zweite Granularität hat.
  2. System nach Anspruch 1, wobei die erste Speichervorrichtung, die zweite Speichervorrichtung und die Verarbeitungsvorrichtung in einem hybriden Dual-Inline-Speichermodul enthalten sind, und wobei die erste Speichervorrichtung eine Kreuzpunkt-Array-Speichervorrichtung ist.
  3. System nach Anspruch 1, wobei die Verarbeitungsvorrichtung ausgestaltet ist, um weitere Operationen auszuführen, umfassend: Räumen eines alten Segments mit einer zweiten Granularität aus der zweiten Speichervorrichtung.
  4. System nach Anspruch 3, wobei die Verarbeitungsvorrichtung ausgestaltet ist, um weitere Operationen auszuführen, umfassend: Identifizieren einer physischen Adresse des alten Segments; Identifizieren einer physischen Adresse des neuen Segments; und Austauschen der physischen Adresse des neuen Segments durch die physikalische Adresse des alten Segments.
  5. System nach Anspruch 3, wobei das Räumen auf LRU-Daten basiert.
  6. System nach Anspruch 1, wobei das Bestimmen, die in der zweiten Speichervorrichtung gespeicherten Daten von der ersten Granularität auf die zweite Granularität zu aktualisieren, umfasst: Bestimmen, dass eine gesamte Anzahl von Suchvorgängen aus der Zugriffsstatistik ein Grenzwertkriterium erfüllt.
  7. System nach Anspruch 1, wobei das Datensegment mit mindestens einem von einem gültigen Bit oder einem fehlerhaften Bit in Beziehung steht.
  8. Verfahren, umfassend: Halten eines Satzes von Host-Daten in einer ersten Speichervorrichtung eines Speicher-Untersystems; Halten einer Teilmenge der Host-Daten in einer zweiten Speichervorrichtung des Speicher-Untersystems, wobei die zweite Speichervorrichtung eine geringere Zugriffslatenz als die erste Speichervorrichtung hat und als ein Cache für die erste Speichervorrichtung verwendet wird, und wobei die zweite Speichervorrichtung Metadaten für erste Segmente der Teilmenge der Host-Daten hält, wobei die ersten Segmente eine erste Größe haben; Bestimmen, dass eine oder mehrere Zugriffsstatistiken von mindestens einem ersten Segment der Teilmenge der Host-Daten ein Grenzwertkriterium erfüllen; und Assoziieren einer Mehrzahl der ersten Segmente der Teilmenge der Host-Daten zusammen als ein zweites Segment, wobei die Mehrzahl der ersten Segmente das mindestens eine erste Segment enthält, wobei die zweite Speichervorrichtung Metadaten für das zweite Segment der HostDaten hält, wobei das zweite Segment eine zweite Größe hat.
  9. Verfahren nach Anspruch 8, wobei die erste Speichervorrichtung, die zweite Speichervorrichtung und die Verarbeitungsvorrichtung in einem hybriden Dual-Inline-Speichermodul enthalten sind, und wobei die zweite Speichervorrichtung eine Kreuzpunkt-Array-Speichervorrichtung ist.
  10. Verfahren nach Anspruch 8, außerdem umfassend: Räumen eines alten Segments mit einer zweiten Granularität aus der zweiten Speichervorrichtung.
  11. Verfahren nach Anspruch 10, außerdem umfassend: Identifizierung einer physischen Adresse des alten Segments; Identifizieren einer physischen Adresse des neuen Segments; und Austauschen der physischen Adresse des neuen Segments durch die physische Adresse des alten Segments.
  12. Verfahren nach Anspruch 10, wobei das Räumen auf LRU-Daten basiert.
  13. Verfahren nach Anspruch 8, wobei das Datensegment mit mindestens einem von einem gültigen Bit oder einem fehlerhaften Bit in Beziehung steht.
  14. Nicht-transitorisches computerlesbares Speichermedium, das Instruktionen enthält, die, wenn sie von einer Verarbeitungsvorrichtung ausgeführt werden, die funktional mit einer ersten Speichervorrichtung und einer zweiten Speichervorrichtung gekoppelt ist, Operationen durchführen, umfassend: Verfolgen von Zugriffsstatistiken von Datensegmenten, die in der zweiten Speichervorrichtung gespeichert sind, wobei die Segmente eine erste Granularität haben; Bestimmen, auf Basis der Zugriffsstatistiken, dass ein Datensegment, das in der zweiten Speichervorrichtung gespeichert ist, von der ersten Granularität auf eine zweite Granularität aktualisiert wird; Abrufen von zusätzlichen Daten, die mit dem Datensegment in Beziehung stehen, aus der ersten Speichervorrichtung; und Speichern der zusätzlichen Daten in der zweiten Speichervorrichtung, um ein neues Segment zu bilden, das die zusätzlichen Daten und das Datensegment enthält, wobei das neue Segment die zweite Granularität hat.
  15. Nicht-transitorisches computerlesbares Speichermedium nach Anspruch 14, wobei die erste Speichervorrichtung, die zweite Speichervorrichtung und die Verarbeitungsvorrichtung in einem hybriden Dual-Inline-Speichermodul enthalten sind, und wobei die erste Speichervorrichtung eine Kreuzpunkt-Array-Speichervorrichtung ist.
  16. Nicht-transitorisches computerlesbares Speichermedium nach Anspruch 14, wobei die Verarbeitungsvorrichtung ausgestaltet ist, um weitere Operationen auszuführen, umfassend: Räumen eines alten Segments mit einer zweiten Granularität aus der zweiten Speichervorrichtung.
  17. Nicht-transitorisches computerlesbares Speichermedium nach Anspruch 16, wobei die Verarbeitungsvorrichtung ausgestaltet ist, um weitere Operationen auszuführen, umfassend: Identifizieren einer physischen Adresse des alten Segments; Identifizieren einer physischen Adresse des neuen Segments; und Austauschen der physischen Adresse des neuen Segments durch die physische Adresse des alten Segments.
  18. Nicht-transitorisches computerlesbares Speichermedium nach Anspruch 16, wobei das Räumen auf LRU-Daten basiert.
  19. Nicht-transitorisches computerlesbares Speichermedium nach Anspruch 14, wobei die Segmentdaten mit mindestens einem von einem gültigen Bit oder einem fehlerhaften Bit in Beziehung stehen.
  20. Nicht-transitorisches computerlesbares Speichermedium nach Anspruch 14, wobei das Bestimmen, die in der zweiten Speichervorrichtung gespeicherten Daten von der ersten Granularität auf die zweite Granularität zu aktualisieren, umfasst: Bestimmen, dass eine gesamte Anzahl von Suchvorgängen aus der Zugriffsstatistik ein Grenzwertkriterium erfüllt.
DE112020004442.4T 2019-09-20 2020-09-17 Cache mit geringer latenz für nichtflüchtigen speicher in einem hybriden dimm Pending DE112020004442T5 (de)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201962903198P 2019-09-20 2019-09-20
US62/903,198 2019-09-20
US17/003,331 US11397683B2 (en) 2019-09-20 2020-08-26 Low latency cache for non-volatile memory in a hybrid DIMM
US17/003,331 2020-08-26
PCT/US2020/051299 WO2021055624A1 (en) 2019-09-20 2020-09-17 Low latency cache for non-volatile memory in a hybrid dimm

Publications (1)

Publication Number Publication Date
DE112020004442T5 true DE112020004442T5 (de) 2022-06-23

Family

ID=74881850

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112020004442.4T Pending DE112020004442T5 (de) 2019-09-20 2020-09-17 Cache mit geringer latenz für nichtflüchtigen speicher in einem hybriden dimm

Country Status (5)

Country Link
US (1) US11397683B2 (de)
KR (1) KR20220062629A (de)
CN (1) CN114600092A (de)
DE (1) DE112020004442T5 (de)
WO (1) WO2021055624A1 (de)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20200125495A1 (en) * 2019-12-19 2020-04-23 Intel Corporation Multi-level memory with improved memory side cache implementation
CN113312275A (zh) * 2020-02-27 2021-08-27 华为技术有限公司 内存设备的数据处理方法、装置和系统

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6925526B2 (en) * 2002-10-31 2005-08-02 International Business Machines Corporation Method and apparatus for servicing mixed block size data access operations in a disk drive data storage device
US7117309B2 (en) * 2003-04-14 2006-10-03 Hewlett-Packard Development Company, L.P. Method of detecting sequential workloads to increase host read throughput
JP4819369B2 (ja) * 2005-02-15 2011-11-24 株式会社日立製作所 ストレージシステム
US7467280B2 (en) * 2006-07-05 2008-12-16 International Business Machines Corporation Method for reconfiguring cache memory based on at least analysis of heat generated during runtime, at least by associating an access bit with a cache line and associating a granularity bit with a cache line in level-2 cache
US7596643B2 (en) 2007-02-07 2009-09-29 Siliconsystems, Inc. Storage subsystem with configurable buffer
US8161240B2 (en) 2007-10-10 2012-04-17 Apple Inc. Cache management
TWI470431B (zh) * 2013-06-14 2015-01-21 Phison Electronics Corp 資料寫入方法、記憶體控制器與記憶體儲存裝置
US20150081981A1 (en) 2013-09-19 2015-03-19 Netapp, Inc. Generating predictive cache statistics for various cache sizes
US9292444B2 (en) * 2013-09-26 2016-03-22 International Business Machines Corporation Multi-granular cache management in multi-processor computing environments
US10048883B2 (en) * 2014-09-29 2018-08-14 Dell Products, Lp Integrated page-sharing cache storing a single copy of data where the data is stored in two volumes and propagating changes to the data in the cache back to the two volumes via volume identifiers
US10621104B2 (en) 2015-09-25 2020-04-14 Hewlett Packard Enterprise Development Lp Variable cache for non-volatile memory
KR20180044635A (ko) 2016-10-24 2018-05-03 삼성전자주식회사 저장 시스템 및 그것의 동작 방법
US10990534B2 (en) * 2019-01-31 2021-04-27 Intel Corporation Device, system and method to facilitate disaster recovery for a multi-processor platform

Also Published As

Publication number Publication date
US20210089454A1 (en) 2021-03-25
US11397683B2 (en) 2022-07-26
KR20220062629A (ko) 2022-05-17
WO2021055624A1 (en) 2021-03-25
CN114600092A (zh) 2022-06-07

Similar Documents

Publication Publication Date Title
DE602005004226T2 (de) Speichervorrichtung und Informationsverarbeitungssystem
DE102020107659A1 (de) Zonenbildung für gezonte namensräume
DE102019132371A1 (de) Zuordnungsverwaltung logisch zu physisch unter Verwendung von nichtflüchtigem Speicher
DE112020006139T5 (de) Vor-lese-und lese-schwellenspannungsoptimierung
DE112020005060T5 (de) Ratengrenze für den übergang von zonen zum öffnen
DE102021115373A1 (de) Identifizierte zonen für zonen mit optimaler paritätsteilung
DE102013016609A1 (de) Vorrichtung und Verfahren für ein Storage Class Memory mit niedrigem Energieverbrauch, niedriger Latenz und hoher Kapazität
DE112020002792B4 (de) Verschleissorientierte blockmodusumwandlung in nichtflüchtigen speichern
DE102011086227A1 (de) Adress mapping method, data storage device and user device
DE112020001937T5 (de) Vorausschauender datenvorabruf in einer datenspeicher-vorrichtung
DE112020005787T5 (de) Verbesserte dateisystem-unterstützung für zonen-namespace-speicher
DE102009034836A1 (de) Verfahren und Vorrichtung zum Speichern von Daten in einem Festkörperspeicher
DE112020006215T5 (de) Blockfamilien-basierte Fehlervermeidung für Speichervorrichtungen
DE102021115763A1 (de) Identifizierung und klassifizierung der schreibstrompriorität
DE112018000230T5 (de) System und Verfahren zur spekulativen Befehlsausführung unter Verwendung des Steuerungsspeicherpuffers
DE112019000161T5 (de) Speicher-cache-verwaltung
DE112021000776T5 (de) Verwaltung von schreib-operationen in einer nichtflüchtigen speichervorrichtung unter verwendung eines variablen vor-lese-spannungspegels
DE112020004966T5 (de) Zns-parität-verschiebung nach dram
DE112020005078T5 (de) Verschieben von änderungsprotokolltabellen zum abstimmen mit zonen
DE112020004442T5 (de) Cache mit geringer latenz für nichtflüchtigen speicher in einem hybriden dimm
DE112020005502T5 (de) Dynamische überprovisionierungszuweisung für zweckbestimmte blöcke
DE112020005395T5 (de) Kapazitätserweiterung für speicher-untersysteme
DE112022000468T5 (de) Unterschiedliche schreibpriorisierung in zns-vorrichtungen
DE112020005092T5 (de) Konstruktion einer blockvorrichtung
DE102021006246A1 (de) Doppelt verschachtelte Programmierung einer Speichervorrichtung in einem Speicher-Untersystem

Legal Events

Date Code Title Description
R012 Request for examination validly filed