DE112017005955T5 - Speichersystem und verfahren zur schlanken speicherzuweisung - Google Patents

Speichersystem und verfahren zur schlanken speicherzuweisung Download PDF

Info

Publication number
DE112017005955T5
DE112017005955T5 DE112017005955.0T DE112017005955T DE112017005955T5 DE 112017005955 T5 DE112017005955 T5 DE 112017005955T5 DE 112017005955 T DE112017005955 T DE 112017005955T DE 112017005955 T5 DE112017005955 T5 DE 112017005955T5
Authority
DE
Germany
Prior art keywords
memory
storage system
host
capacity
data
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
DE112017005955.0T
Other languages
English (en)
Inventor
Amir Shaharaban
Michael Zaidman
Rotem Sela
Hadas Oshinsky
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.)
SANDISK TECHNOLOGIES, INC. (N.D.GES. D. STAATE, US
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 DE112017005955T5 publication Critical patent/DE112017005955T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0605Improving or facilitating administration, e.g. storage management by facilitating the interaction with a user or administrator
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

Ein Speichersystem und ein Verfahren zur schlanken Speicherzuweisung werden bereitgestellt. In einer Ausführungsform wird ein Speichersystem bereitgestellt, das einen Speicher und eine Steuerung aufweist. Die Steuerung ist eingerichtet, um eine logische exportierte Kapazität des Speichers an einen Host zu liefern, wobei die logische exportierte Kapazität größer als eine tatsächliche Speicherkapazität des Speichers ist; einen Befehl von dem Host zu empfangen, um Daten in eine logische Adresse zu schreiben; zu bestimmen, ob eine verfügbare tatsächliche Speicherkapazität in dem Speicher vorhanden ist, um die Daten zu schreiben; und Daten in eine physische Adresse im Speicher zu schreiben, die der logischen Adresse entspricht, nur wenn bestimmt wird, dass tatsächlich Speicherkapazität im Speicher verfügbar ist, um die Daten zu schreiben. Andere Ausführungsformen sind möglich, und jede der Ausführungsformen kann allein oder zusammen in Kombination verwendet werden.

Description

  • RÜCKVERWEISUNG AUF VERWANDTE ANMELDUNGEN
  • Diese Anmeldung beansprucht die Priorität der vorläufigen US-Patentanmeldung Nr. 62/442,801 , eingereicht am 5. Januar 2017, die hiermit durch Bezugnahme hierin aufgenommen wird.
  • HINTERGRUND
  • Wenn Daten in einem Speichersystem gespeichert werden, kann ein Dateisystem auf einem Host eine Tabelle von logischen Blockadressen (LBAs) unterhalten und Befehle an das Speichersystem senden, um Daten in eine verfügbare LBA zu schreiben. Das Speichersystem kann die LBA, die von dem Host empfangen wird, auf eine physische Adresse im Speicher abbilden und die Daten darin speichern. Wenn ein oder mehrere sequentielle Datenströme geschrieben werden, kann das Dateisystem des Hosts jedem Strom einen sequentiellen Satz verfügbarer LBAs zuweisen, um die Daten des Stroms zu speichern. Es ist möglich, dass der zugewiesene sequentielle Satz verfügbarer LBAs nicht groß genug ist, um den Datenstrom zu speichern. Wenn das Dateisystem des Hosts feststellt, dass die nächste LBA, die zum Schreiben der Daten des Stroms benötigt wird, außerhalb des zugewiesenen Bereichs liegt (z. B. weil die nächste LBA belegt ist oder außerhalb der Kapazität des Speichersystems liegt), kann das Dateisystem des Hosts eine Host-seitige Speicherbereinigungsoperation durch Senden von Bewegungsbefehlen an das Speichersystem ausführen, um freie LBAs zum Fortsetzen der sequentiellen Schreiboperation zu generieren.
  • Figurenliste
    • 1A ist ein Blockdiagramm eines nichtflüchtigen Speichersystems einer Ausführungsform.
    • 1B ist ein Blockdiagramm, das ein beispielhaftes Speichermodul einer Ausführungsform veranschaulicht.
    • 1C ist ein Blockdiagramm, das ein hierarchisches Speichersystem einer Ausführungsform veranschaulicht.
    • 2A ist ein Blockdiagramm, das beispielhafte Komponenten der Steuerung des in 1A veranschaulichten nichtflüchtigen Speichersystems gemäß einer Ausführungsform veranschaulicht.
    • 2B ist ein Blockdiagramm, das beispielhafte Komponenten des in 1A veranschaulichten nichtflüchtigen Speichersystems gemäß einer Ausführungsform veranschaulicht.
    • 3 ist ein Flussdiagramm eines Verfahrens einer Ausführungsform, bei dem ein schlankes Speichersystem eine Speichergültigkeitszahl verfolgt.
    • 4 ist ein Flussdiagramm eines Verfahrens einer Ausführungsform, bei dem ein Dateisystem auf einem Host eine Speichergültigkeitszahl von einem schlanken Speichersystems anfordert.
    • 5 ist ein Flussdiagramm eines Verfahrens einer Ausführungsform, bei dem ein Dateisystem auf einem Host eine Speichergültigkeitszahl eines schlanken Speichersystems verfolgt.
    • 6 ist ein Flussdiagramm eines Verfahrens einer Ausführungsform, bei dem ein schlankes Speichersystem nach Ausführung eines Verwerfen-Befehls von einem Host eine Speichergültigkeitszahl verfolgt.
    • 7 ist ein Flussdiagramm eines Verfahrens einer Ausführungsform, bei dem ein Dateisystem, nach Ausführung eines Verwerfen-Befehls, auf einem Host eine Speichergültigkeitszahl eines schlanken Speichersystems verfolgt.
  • DETAILLIERTE BESCHREIBUNG
  • Überblick
  • Zur Einführung beziehen sich die folgenden Ausführungsformen auf ein Speichersystem und ein Verfahren zur schlanken Speicherzuweisung. In einer Ausführungsform wird ein Speichersystem bereitgestellt, das einen Speicher und eine Steuerung aufweist. Die Steuerung ist eingerichtet, um eine logische exportierte Kapazität des Speichers an einen Host zu liefern, wobei die logische exportierte Kapazität größer als eine tatsächliche Speicherkapazität des Speichers ist; einen Befehl von dem Host zu empfangen, um Daten in eine logische Adresse zu schreiben; zu bestimmen, ob eine verfügbare tatsächliche Speicherkapazität in dem Speicher vorhanden ist, um die Daten zu schreiben; und Daten in eine physische Adresse im Speicher zu schreiben, die der logischen Adresse entspricht, nur wenn bestimmt wird, dass tatsächlich Speicherkapazität im Speicher verfügbar ist, um die Daten zu schreiben.
  • In einigen Ausführungsformen ist die Steuerung eingerichtet, um zu bestimmen, ob eine tatsächliche Speicherkapazität im Speicher verfügbar ist, indem bestimmt wird, ob eine Speichergültigkeitszahl des Speichers nach dem Schreiben der Daten die tatsächliche Speicherkapazität des Speichers überschreiten würde oder nicht.
  • In einigen Ausführungsformen ist die Steuerung weiterhin eingerichtet, um zu bestimmen, ob der Befehl ein Überschreibbefehl ist, und wobei die Steuerung eingerichtet ist, um zu bestimmen, ob tatsächliche Speicherkapazität im Speicher verfügbar ist, nachdem bestimmt wurde, dass der Befehl kein Überschreibbefehl ist.
  • In einigen Ausführungsformen ist die Steuerung weiterhin eingerichtet, um zu bestimmen, ob eine Summe der logischen Adresse und der Größe der Daten größer als die logische exportierte Kapazität ist, und wobei die Steuerung eingerichtet ist, um zu bestimmen, ob tatsächlich Speicherkapazität im Speicher verfügbar ist, um die Daten zu schreiben, nachdem festgestellt wurde, dass die Summe nicht größer als die logisch exportierte Kapazität ist.
  • In einigen Ausführungsformen ist die Steuerung weiterhin so eingerichtet, dass sie einen Verwerfen-Befehl vom Host empfängt und eine Speichergültigkeitszahl des Speichers als Reaktion auf den Verwerfen-Befehl verringert.
  • In einigen Ausführungsformen sind die Daten Teil eines Stroms.
  • In einigen Ausführungsformen weist der Speicher einen dreidimensionalen Speicher auf.
  • In einigen Ausführungsformen ist das Speichersystem in dem Host eingebettet.
  • In einigen Ausführungsformen ist das Speichersystem entfernbar mit dem Host verbunden.
  • In einer anderen Ausführungsform wird ein Verfahren zum Schreiben von Daten in ein schlankes Speichersystem bereitgestellt. Das Verfahren weist das Bestimmen auf, ob eine gültige Datengröße des Speichers größer als die tatsächliche Speicherkapazität des Speichers wäre, falls Daten in eine verfügbare logische Blockadresse des Speichers geschrieben werden sollen; und als Reaktion auf das Bestimmen, dass die gültige Datengröße des Speichers nicht größer als die tatsächliche Speicherkapazität des Speichers wäre, das Senden eines Befehls an das Speichersystem, um die Daten in die logische Adresse zu schreiben.
  • In einigen Ausführungsformen verfolgt das Speichersystem die gültige Datengröße des Speichers, und wobei das Verfahren weiterhin das Empfangen der gültigen Datengröße des Speichers aus dem Speichersystem aufweist.
  • In einigen Ausführungsformen verfolgt der Host die gültige Datengröße des Speichers des Speichersystems.
  • In einigen Ausführungsformen weist das Verfahren weiterhin das Bestimmen auf, ob der Befehl ein Überschreibbefehl ist, und wobei das Bestimmen, ob die gültige Datengröße des Speichers größer als die tatsächliche Speicherkapazität des Speichers wäre, als Reaktion darauf durchgeführt wird, dass der Befehl kein Überschreibbefehl ist.
  • In einigen Ausführungsformen weist das Verfahren weiterhin das Verringern einer gültigen Datengröße des Speichers als Reaktion auf einen Verwerfen-Befehl auf.
  • In einigen Ausführungsformen sind die Daten Teil eines Stroms.
  • In einigen Ausführungsformen weist der Speicher im Speichersystem einen dreidimensionalen Speicher auf.
  • In einigen Ausführungsformen ist das Speichersystem in dem Host eingebettet.
  • In einigen Ausführungsformen ist das Speichersystem entfernbar mit dem Host verbunden.
  • In einer anderen Ausführungsform wird ein Speichersystem bereitgestellt, aufweisend einen Speicher; Mittel zum Bereitstellen einer logisch exportierten Kapazität des Speichers an einen Host, wobei die logisch exportierte Kapazität größer als eine tatsächliche Speicherkapazität des Speichers ist; Mittel zum Empfangen eines Befehls vom Host zum Schreiben von Daten an eine logische Adresse; Mittel zum Bestimmen, ob eine tatsächliche Speicherkapazität im Speicher verfügbar ist, um die Daten zu schreiben; und Mittel zum Schreiben der Daten in eine physische Adresse im Speicher, die der logischen Adresse entspricht, nur wenn festgestellt wird, dass tatsächlich Speicherkapazität im Speicher verfügbar ist, um die Daten zu schreiben.
  • In einigen Ausführungsformen weist der Speicher im Speichersystem einen dreidimensionalen Speicher auf.
  • In einigen Ausführungsformen ist das Speichersystem in dem Host eingebettet.
  • In einigen Ausführungsformen ist das Speichersystem entfernbar mit dem Host verbunden.
  • Andere Ausführungsformen sind möglich, und jede der Ausführungsformen kann allein oder zusammen in Kombination verwendet werden. Dementsprechend werden nun verschiedene Ausführungsformen unter Bezugnahme auf die beigefügten Zeichnungen beschrieben.
  • Beispielhafte Ausführungsformen
  • Speichersysteme, die zur Verwendung bei der Umsetzung von Aspekten dieser Ausführungsformen geeignet sind, werden in den 1A-1C gezeigt. 1A ist ein Blockdiagramm, das ein nichtflüchtiges Speichersystem 100 gemäß einer Ausführungsform des hierin beschriebenen Gegenstands veranschaulicht. Bezugnehmend auf 1A schließt das nichtflüchtige Speichersystem 100 eine Steuerung 102 und einen nichtflüchtigen Speicher, der aus einem oder mehreren nichtflüchtigen Speicherrohchips 104 bestehen kann, ein. Wie hier verwendet, bezieht sich der Ausdruck Element auf die Sammlung von nichtflüchtigen Speicherzellen und assoziierte Schaltlogik zum Verwalten des physischen Betriebs dieser nichtflüchtigen Speicherzellen, die auf einem einzelnen Halbleitersubstrat ausgebildet sind. Die Steuerung 102 bildet mit einem Hostsystem eine Schnittstelle und überträgt Befehlssequenzen für Lese-, Programmier- und Löschvorgänge zu dem nichtflüchtigen Speicherrohchip 104.
  • Die Steuerung 102 (die eine Flash-Speichersteuerung sein kann) kann die Form einer Verarbeitungsschaltlogik, eines Mikroprozessors oder Prozessors und eines computerlesbaren Mediums annehmen, das computerlesbaren Programmcode (z. B. Firmware) speichert, der beispielsweise von dem (Mikro-) Prozessor, Logikgatter, Schaltern, einer anwendungsspezifischen integrierten Schaltung (ASIC), einer programmierbaren Logiksteuerung und einer eingebetteter Mikrosteuerung ausführbar ist. Die Steuerung 102 kann mit Hardware und/oder Firmware eingerichtet sein, um die verschiedenen Funktionen auszuführen, die unten beschrieben und in den Flussdiagrammen gezeigt sind. Außerdem können einige der Komponenten, die als innerhalb der Steuerung gezeigt sind, auch außerhalb der Steuerung gespeichert werden, und andere Komponenten können verwendet werden. Zusätzlich könnte der Ausdruck „operativ in Kommunikation mit“ direkt in Kommunikation mit oder indirekt (verdrahtet oder drahtlos) in Kommunikation mit einer oder mehreren Komponenten bedeuten, die hier gezeigt oder beschrieben sein können oder nicht.
  • Wie hier verwendet, ist die Flash-Speicher-Steuerung eine Vorrichtung, die im Flash-Speicher gespeicherte Daten verwaltet und mit einem Host, wie einem Computer oder einer elektronischen Vorrichtung, kommuniziert. Eine Flash-Speicher-Steuerung kann verschiedene Funktionen zusätzlich zu der hier beschriebenen spezifischen Funktionalität aufweisen. Zum Beispiel kann die Flash-Speichersteuerung den Flash-Speicher formatieren, um sicherzustellen, dass der Speicher ordnungsgemäß arbeitet, um schlechte Flash-Speicherzellen auszugrenzen und Ersatzzellen zuzuordnen, die künftig fehlerhafte Zellen ersetzen sollen. Einige Teile der Ersatzzellen können verwendet werden, um Firmware aufzunehmen, um den Flash-Speicher-Controller zu betreiben und andere Merkmale zu implementieren. Im Betrieb, wenn ein Host Daten aus dem Flash-Speicher lesen oder Daten in diesen schreiben muss, kommuniziert der Host mit dem Flash-Speicher-Controller. Wenn der Host eine logische Adresse bereitstellt, zu der Daten gelesen/geschrieben werden sollen, kann der Flash-Speicher-Controller die vom Host empfangene logische Adresse in eine physische Adresse im Flash-Speicher-Controller umwandeln. Der Flash-Speicher-Controller kann auch verschiedene Speicherverwaltungsfunktionen ausführen, wie z. B., ohne darauf beschränkt zu sein, Abnutzungsausgleich (Verteilen von Schreibvorgängen zum Vermeiden eines Verschleißes spezifischer Speicherblöcke, auf die ansonsten wiederholt geschrieben werden würde) und Speicherbereinigung (nachdem ein Block voll ist, Bewegen ausschließlich der gültigen Datenseiten zu einem neuen Block, so dass der volle Block gelöscht und wiederverwendet werden kann).
  • Der nichtflüchtige Speicherrohchip 104 kann jedes geeignete nichtflüchtige Speichermedium einschließen, einschließlich NAND-Flash-Speicherzellen und/oder NOR-Flash-Speicherzellen. Die Speicherzellen können die Form von Festkörper- (z. B. Flash-) Speicherzellen annehmen und können einmalig programmierbar, mehrfach programmierbar oder vielfach programmierbar sein. Die Speicherzellen können auch Single-Level-Zellen (SLC), Multiple-Level-Zellen (MLC), Triple-Level-Zellen (TLC) oder andere Speicherzellen-Level-Technologien sein, die jetzt bekannt sind oder später entwickelt werden. Ebenso können die Speicherzellen auf zweidimensionale oder dreidimensionale Weise hergestellt werden.
  • Die Schnittstelle zwischen der Steuerung 102 und dem nichtflüchtigen Speicherrohchip 104 kann jede geeignete Flash-Schnittstelle sein, wie z. B. der Toggle-Modus 200, 400 oder 800. In einer Ausführungsform kann das Speichersystem 100 ein kartenbasiertes System sein, wie z. B. eine sichere digitale (SD) oder eine sichere digitale Mikro- (Mikro-SD) Karte. In einer alternativen Ausführungsform kann das Speichersystem 100 Teil eines eingebetteten Speichersystems sein.
  • Obwohl in dem in 1A veranschaulichten Beispiel das nichtflüchtige Speichersystem 100 (hierin manchmal als Speichermodul bezeichnet) einen einzigen Kanal zwischen der Steuerung 102 und dem nichtflüchtigen Speicherrohchip 104 einschließt, ist der hierin beschriebene Gegenstand nicht auf einen einzigen Speicherkanal beschränkt. Zum Beispiel können in einigen NAND-Speichersystem-Architekturen (wie den in den 1B und 1C gezeigten) 2, 4, 8 oder mehr NAND-Kanäle zwischen der Steuerung und der NAND-Speichervorrichtung vorhanden sein, abhängig von den Fähigkeiten der Steuerung. In jeder der hierin beschriebenen Ausführungsformen kann mehr als ein einziger Kanal zwischen der Steuerung und dem Speicherchip vorhanden sein, selbst wenn in den Zeichnungen ein einziger Kanal dargestellt ist.
  • 1B veranschaulicht ein Speichermodul 200, das mehrere nichtflüchtige Speichersysteme 100 einschließt. Als solches kann das Speichermodul 200 eine Speichersteuerung 202 einschließen, die über eine Schnittstelle mit einem Host und mit einem Speichersystem 204 verbunden ist, das eine Vielzahl von nichtflüchtigen Speichersystemen 100 enthält. Die Schnittstelle zwischen der Speichersteuerung 202 und den nichtflüchtigen Speichersystemen 100 kann eine Busschnittstelle sein, wie beispielsweise eine SATA-Schnittstelle (Serial Advanced Technology Attachment) oder eine PCIe-Schnittstelle (Peripheral Component Interface Express), sein. Das Speichermodul 200 kann in einer Ausführungsform ein SSD-Laufwerk (Solid State Drive) sein, wie es beispielsweise in tragbaren Rechenvorrichtungen, wie beispielsweise in Laptop-Computern und Tablet-Computern, zu finden ist.
  • 1C ist ein Blockdiagramm, das ein hierarchisches Speichersystem veranschaulicht. Das hierarchische Speichersystem 250 schließt eine Vielzahl von Speichersteuerungen 202 ein, von denen jede ein entsprechendes Speichersystem 204 steuert. Die Host-Systeme 252 können über eine Busschnittstelle auf Speicher innerhalb des Speichersystems zugreifen. In einer Ausführungsform kann die Busschnittstelle eine NVMe- oder Fibre-Channel-over-Ethernet- (FCoE-) Schnittstelle sein. In einer Ausführungsform kann das in 1C dargestellte System ein Rack-montierbares Massenspeichersystem sein, auf das von mehreren Host-Computern zugegriffen werden kann, wie es beispielsweise in einem Rechenzentrum oder einem anderen Standort, in dem Massenspeicherung benötigt wird, zu finden ist.
  • In einer Ausführungsform weist der Host 252 eine Steuerung und einen Speicher auf. Die Host-Steuerung kann Software oder Firmware ausführen, um ein Dateisystem wie ein Dateisystem mit Protokollstruktur zu implementieren und auszuführen (z. B. ein Dateisystem, in dem Daten/Metadaten nacheinander in einen Umlaufpuffer (Protokoll) geschrieben werden). Alternativ kann das Dateisystem rein in Hardware auf dem Host 252 implementiert werden. Das Dateisystem kann Lese- und/oder Schreibbefehle an das Speichersystem 100 in Übereinstimmung mit einer oder mehreren Anwendungen senden, die auf dem Host 252 ausgeführt werden. Wie weiter unten diskutiert wird, kann das Dateisystem des Hosts in dem logischen Blockadressenraum (LBA) arbeiten. Während bestimmte Aktionen im Folgenden als vom Dateisystem des Hosts ausgeführt beschrieben werden, sollte klar sein, dass diese Aktionen von jeder geeigneten Komponente im Host 252 ausgeführt werden können - nicht unbedingt vom Dateisystem. Dementsprechend sollte „Dateisystem“ nicht in die Patentansprüche aufgenommen werden, wenn in den Patentansprüchen nur der Begriff „Host“ verwendet wird.
  • 2A ist ein Blockdiagramm, das beispielhafte Komponenten der Steuerung 102 detaillierter veranschaulicht. Die Steuerung 102 schließt ein Frontend-Modul 108, das mit einem Host über eine Schnittstelle verbunden ist, ein Backend-Modul 110, das mit einem oder mehreren nichtflüchtigen Speicherrohchips 104 über eine Schnittstelle verbunden ist, und verschiedene andere Module ein, die Funktionen durchführen, die nun ausführlich beschrieben werden. Module der Steuerung 102 können eine Komponente zur schlanken Speicherzuweisung 111 enthalten, die eingerichtet ist, um eine größere logische Kapazität des Speichers 104 an den Host 252 zu exportieren und sicherzustellen, dass Schreibvorgänge vom Host 252 die tatsächliche Speicherkapazität des Speichers 104 nicht überschreiten. Die Komponente zur schlanken Speicherzuweisung 111 wird nachstehend ausführlicher erörtert und in einer Ausführungsform als Software oder Firmware in der Steuerung 102 implementiert. Es sollte jedoch beachtet werden, dass ein Modul, eine Schaltung oder ein Monitor die Form einer gepackten funktionellen Hardwareeinheit, konzipiert zur Verwendung mit anderen Komponenten, eines Abschnitts eines Programmcodes (z. B. Software oder Firmware), ausführbar durch einen (Mikro-)Prozessor oder eine Verarbeitungsschaltung, die üblicherweise eine bestimmte Funktion von verwandten Funktionen ausführt, oder einer eigenständigen Hardware- oder Softwarekomponente, die mit einem größeren System über eine Schnittstelle verbunden ist, annehmen kann.
  • Unter erneuter Bezugnahme auf Module der Steuerung 102 verwaltet eine Pufferverwaltung/Bussteuerung 114 Puffer im Direktzugriffsspeicher (RAM) 116 und steuert die interne Buszuteilung der Steuerung 102. Ein Nur-Lese-Speicher (ROM) 118 speichert den Boot-Code des Systems. Obwohl sie in 2A als von der Steuerung 102 getrennt angeordnet dargestellt sind, können in anderen Ausführungsformen einer oder beide vom RAM 116 oder ROM 118 innerhalb der Steuerung angeordnet sein. In noch anderen Ausführungsformen können sich Abschnitte von RAM und ROM sowohl innerhalb der Steuerung 102 als auch außerhalb der Steuerung befinden.
  • Das Frontend-Modul 108 schließt eine Host-Schnittstelle 120 und eine Schnittstelle zur physischen Schicht (PHY) 122 ein, die die elektrische Schnittstelle mit dem Host oder der Steuerung der nächsten Speicherebene bereitstellen. Die Wahl des Typs der Host-Schnittstelle 120 kann von der Art des verwendeten Speichers abhängen. Beispiele für die Host-Schnittstellen 120 beinhalten, ohne jedoch darauf beschränkt zu sein, SATA, SATA Express, SAS, Fibre Channel, USB, PCIe und NVMe. Die Host-Schnittstelle 120 erleichtert üblicherweise die Übertragung von Daten, Steuersignalen und Taktsignalen.
  • Das Backend-Modul 110 schließt eine Fehlerkorrektursteuerungs- (error correction controller, ECC-) Engine 124 ein, welche die vom Host empfangenen Datenbytes kodiert und die aus dem nichtflüchtigen Speicher gelesenen Datenbytes dekodiert und Fehler korrigiert. Ein Befehlssequenzierer 126 erzeugt Befehlssequenzen, wie beispielsweise Programmier- und Löschbefehlssequenzen, zur Übermittlung an den nichtflüchtigen Speicherrohchip 104. Ein RAID-Modul (Redundant Array of Independent Drives) 128 verwaltet die Erzeugung von RAID-Parität und die Wiederherstellung fehlerhafter Daten. Die RAI D-Parität kann als zusätzliche Ebene des Integritätsschutzes für die Daten verwendet werden, die in die Speichervorrichtung 104 geschrieben werden. In einigen Fällen kann das RAID-Modul 128 Teil der ECC-Engine 124 sein. Eine Speicherschnittstelle 130 stellt die Befehlssequenzen für den nichtflüchtigen Speicherrohchip 104 bereit und empfängt Statusinformationen vom nichtflüchtigen Speicherrohchip 104. In einer Ausführungsform kann die Speicherschnittstelle 130 eine DDR-Schnittstelle (Double Data Rate) wie eine Toggle-Modus-Schnittstelle 200, 400 oder 800 sein. Eine Flash-Steuerschicht 132 steuert den Gesamtbetrieb des Backend-Moduls 110.
  • Das Speichersystem 100 schließt auch andere diskrete Komponenten 140 ein, wie beispielsweise externe elektrische Schnittstellen, einen externen RAM, Widerstände, Kondensatoren oder andere Komponenten, die mit der Steuerung 102 über eine Schnittstelle verbunden sein können. In alternativen Ausführungsformen sind eine oder mehrere von der Schnittstelle zur physischen Schicht 122, dem RAID-Modul 128, der Medienverwaltungsschicht 138 und dem Puffermanager/der Bussteuerung 114 optionale Komponenten, die in der Steuerung 102 nicht notwendig sind.
  • 2B ist ein Blockdiagramm, das beispielhafte Komponenten des nichtflüchtigen Speicherrohchips 104 detaillierter darstellt. Der nichtflüchtige Speicherrohchip 104 schließt periphere Schaltlogik 141 und einen nichtflüchtigen Speicherarray 142 ein. Der nichtflüchtige Speicherarray 142 schließt die nichtflüchtigen Speicherzellen ein, die zum Speichern von Daten verwendet werden. Die nichtflüchtigen Speicherzellen können beliebige geeignete nichtflüchtige Speicherzellen sein, einschließlich NAND-Flash-Speicherzellen und/oder NOR-Flash-Speicherzellen in einer zweidimensionalen und/oder dreidimensionalen Konfiguration. Die periphere Schaltlogik 141 enthält eine Zustandsmaschine 152, die Statusinformationen an die Steuerung 102 liefert.
  • Wie oben angemerkt, kann ein Dateisystem auf dem Host 252 beim Speichern von Daten in dem Speichersystem 100 eine Tabelle von logischen Blockadressen (LBAs) unterhalten, um Dateien über den LBA-Raum zu verwalten und Befehle an das Speichersystem 100 zu senden, um Daten in eine bestimmte LBA zu schreiben. Das Speichersystem 100 kann die LBA, die von dem Host 252 empfangen wird, in eine physische Adresse im Speicher 104 umwandeln und die Daten darin speichern. Das Dateisystem des Hosts kann mehrere offene sequentielle Ströme in Richtung des Speichersystems 100 verarbeiten. Jeder offene Strom benötigt einen überprovisionierten LBA-Bereich für einen kontinuierlichen sequentiellen Schreibvorgang. Das Dateisystem des Hosts kann eine Defragmentierungs-/Speicherbereinigungsoperation initiieren, um sequentielle Blöcke freizugeben, um fortlaufende, sequentielle Schreibvorgänge für die offenen Ströme durchzuführen, da eine Defragmentierungs-/Speicherbereinigungsoperation aufgrund des Fehlens von geordneten freien LBA-Blöcken im LBA-Raum erforderlich ist. Die Defragmentierungs-/Speicherbereinigungsoperation kann mit Kopieroperationen an das Speichersystem 100 zum Lesen und Schreiben von Daten auf verschiedenen LBAs ausgeführt werden, oder es kann ein Bewegungsbefehl verwendet werden. Wenn die gültige Datengröße (Füllstand) im Speichersystem 100 in der Nähe der exportierten Kapazität des Speichersystems liegt, kann die Defragmentierungs-/ Speicherbereinigungsoperation im LBA-Raum schwierig werden, da möglicherweise viele Bewegungsvorgänge erforderlich sind, um einen sequentiellen Block im LBA-Raum zu löschen. Dies erhöht die Schreibverstärkung des Speichersystems 100.
  • Die Erfinder haben erkannt, dass diese Schwierigkeiten teilweise auf die Tatsache zurückzuführen sind, dass frühere Speichersysteme einen LBA-Bereich unterstützen, der nahezu 1:1 zur physischen Speichergröße beträgt (in vielen Fällen unterstützen frühere Speichersysteme tatsächlich einen kleineren LBA-Bereich als die physische Speicher-Array-Größe). Die folgenden Ausführungsformen lösen die Korrelation zwischen dem LBA-Raum und dem verfügbaren physischen Raum im Speicher 104 des Speichersystems 100, indem der zum Host 252 exportierte LBA-Raum größer als der physische Speicherraum des Speichers 104 gemacht wird. Dieses Konzept der „schlanken Speicherzuweisung“ ermöglicht es dem Speichersystem 100, einen LBA-Bereich zu unterstützen, der über der Größe der physischen Speichergröße liegt, was bedeutet, dass die Adressierung eines logischen Raums das Überschreiten der physischen Adressierungsgrößengrenze ermöglicht. In diesem Adressierungsschema werden einige LBAs an einen Zeiger adressiert, der größer ist als die physische exportierte Kapazität. Durch die schlanke Speicherzuweisung kann ein Dateisystem mit Protokollstruktur sequenzielle Ströme schreiben, bis der LBA-Raum wie zuvor außerhalb des gültigen Bereichs liegt. Jetzt ist der LBA-Raum jedoch größer als der physische Raum. Der größere LBA-Raum kann zu weniger Defragmentierungs-/Speicherbereinigungsoperationen durch den Host 252 führen (das Speichersystem 100 kann seine eigenen Speicherbereinigungsoperationen intern gemäß dessen eigenen Beschränkungen der Geometrie (Blockgröße) durchführen).
  • Während es eine größere exportierte logische Kapazität erlaubt, mehr LBAs ohne Speicherbereinigung zuzuweisen, ist die tatsächliche Speicherkapazität des Speichers 104 eine Begrenzung. Es können verschiedene Mechanismen verwendet werden, um sicherzustellen, dass nicht mehr Daten in den Speicher 104 geschrieben werden, als der Speicher 104 physisch speichern kann. Das heißt, das Speichersystem 100 kann einen erweiterten LBA-Bereich unterstützen, aber das Speichersystem 100 und/oder der Host 252 können sicherstellen, dass die Schreibarbeitslasten in den Speicher 104 nicht größer sind als die physische Kapazität des Speichers 104 (d. h. Das Schreiben in die LBAs außerhalb des physischen LBA-Bereichs kann unterstützt werden, wenn die Gesamtmenge der gültigen LBAs geringer ist als die physische Kapazität des Speichers 104). Daher ist in einer Ausführungsform die erweiterte LBA-Kapazität des Speichersystems 100 dem Host 252 unbekannt, bis die gültige Datengröße (Füllstand) des Speichersystems 100 der exportierten Kapazität des Speichersystems entspricht. In diesem Fall kann für das Dateisystem des Hosts transparent gemacht werden, dass das Speichersystem 100 schlank bereitgestellt wurde. Wie oben erwähnt, können das Speichersystem 100 und/oder der Host 252 verwendet werden, um sicherzustellen, dass der Speicher 104 nicht überschrieben wird. In Ausführungsformen, in denen sowohl das Speichersystem 100 als auch der Host 252 verwendet werden, kann der zusätzliche Verwaltungsaufwand für die schlanke Speicherzuweisung gemeinsam genutzt werden.
  • Im Allgemeinen deklariert bei diesen Ausführungsformen das Speichersystem 100 eine physische exportierte Kapazität gemäß dem physischen Speichersystem des Speichers (z. B. 32 GB) und deklariert eine logische exportierte Kapazität gemäß der Adressierung der Übersetzungsschicht (z. B. würde sich eine schlanke Speicherzuweisung von 50 % in einer logischen exportierten Kapazität von 48 GB für 32 GB physische Kapazität ergeben). Die physische exportierte Kapazität wird als die derzeit bekannte exportierte Kapazität deklariert. Die physische exportierte Kapazität kann an die physische Kapazität angepasst werden. Beispielsweise kann eine 32 GB-Vorrichtung 32*1000*1000*1000 / 4096 * 0,93 = 7000000 deklarieren, wobei 32*1000*1000*1000 32 GB in Bytes sind. Durch 4096 dividiert, für Adressierungsdaten mit einer Datengröße von 4 KB, ist 0,93 der Faktor der Kapazitätsreduzierung der internen Tabellen für das Flash-Management.
  • Die logische exportierte Kapazität wird als der LBA-Bereich deklariert, den das Speichersystem 100 unterstützt. (Die logische exportierte Kapazität kann dem Host in einer Nachricht zu jedem geeigneten Zeitpunkt bereitgestellt werden, beispielsweise wenn das Speichersystem 100 mit dem Host 252 verbunden ist.) Diese logische exportierte Kapazität ist die Anzahl der LBAs, die die physische Kapazität + LBA-Überbereitstellung definieren. Es kann jede geeignete prozentuale Größe der Überbereitstellung verwendet werden. In dem obigen Beispiel betrug der Prozentsatz der Überbereitstellung 50 %, es sollte jedoch klar sein, dass jeder geeignete Prozentsatz (z. B. 1% bis 100 %) verwendet werden kann. 50% Überbereitstellung beträgt 7000000*0,5, was 3500000 entspricht. Die logische exportierte Kapazität beträgt daher 7000000 + 3500000 = 10500000 LBAs. Der Host 252 kann eine beliebige LBA-Adresse zwischen 0 und 10500000 zum Schreiben und Lesen verwenden, und das Speichersystem 100 kann eine beliebige Adresse in diesem Bereich autorisieren.
  • Die Übersetzungsschicht (LBA zum physischen Standort) kann entsprechend der logischen exportierten Kapazität erfolgen. Das Speichersystem 100 kann eine Übersetzungsschicht von der LBA zur physischen Adresse in dem Speicherarray aufrechterhalten, wobei die Tabellengröße der logischen exportierten Kapazität entspricht. Die Übersetzungsschicht kann bei Schreibvorgängen aktualisiert und bei internen Speicherbereinigungsoperationen und Host-Leseoperationen verwendet werden. Daher unterstützt eine Ausführungsform die gesamte logische exportierte Kapazitätsgröße. In dem obigen Beispiel weist die Tabellengröße der Übersetzungsschicht 10500000 Einträge auf, und wenn jede Eintragsgröße 4 Bytes beträgt, beträgt die Größe 42000000 Bytes. Die Übersetzungsschicht ohne schlanke Speicherzuweisung ist die physische exportierte Kapazität, die 7000000*4 = 35000000 Bytes beträgt. Das Einrichten der internen Tabellengröße mit der schlanken Speicherzuweisung erfordert größere Tabellen und einen größeren physischen Speicher, der für die Verwaltung vorgesehen ist (die Tabelle im nichtflüchtigen Speicher 104), aber in einer Ausführungsform ist es ein kleiner Teil, etwa 1/1000 der Überbereitstellungsgröße.
  • In einer Ausführungsform würde das Dateisystem des Hosts den LBA-Speicherplatz gemäß der logischen exportierten Kapazität des Speichers 104 handhaben, und die Speichervorrichtung 100 würde Schreibbefehle für LBAs bis zur logischen exportierten Kapazität zulassen, würde diese Befehle jedoch verweigern, wenn die gültige Datengröße die physische exportierte Kapazität erreicht. Das heißt, wenn die gültige Datengröße die physische exportierte Kapazität erreicht, können Schreibbefehle vom Host abgelehnt werden. Wie nachstehend ausführlicher erörtert wird, kann die gültige Datengröße vom Speichersystem 100, vom Host 252 aufrechterhalten werden oder vom Speichersystem 100 mit dem Host 252 geteilt werden.
  • In einer Ausführungsform verwaltet das Speichersystem 100 einen gültigen LBA-Zähler im Speichersystem 100. Da das Speichersystem 100 schließlich auf die physische Speichergröße des Speichers 104 beschränkt ist, kann es eine Schreibanforderungsnutzlast nicht über einen bestimmten Schwellenwert hinaus unterstützen, der dem physischen Speicher zugeordnet ist. Somit kann das Speichersystem 100 die Gültigkeitszahl für eine LBA-Schreibanforderung erhöhen und den LBA als gültig in der Übersetzungstabelle festlegen. Das Speichersystem 100 kann auch die Gültigkeitszahl für eine LBA-Verwerfen-Anforderung verringern und die LBA in der Übersetzungstabelle als ungültig festlegen. Das Speichersystem 100 kann die Gültigkeitszahl für die LBA-Schreibanforderung ignorieren, wobei die LBA im Speicher gültig ist (überschreiben), und kann eine Schreiboperation ablehnen, wenn der gültige LBA-Zähler über der physischen exportierten Kapazität liegt. Das Speichersystem 100 kann den gültigen LBA-Zähler pro Hostanforderung wiedergeben.
  • Wie nachstehend erörtert wird, kann der Host 252 sein Dateisystem einrichten, um die logische exportierte Kapazität zu verwenden, und kann die LBA-Gültigkeitszahl selbst verwalten und ist nicht vom Fail-on-Write-Fehler des Speichersystems 100 abhängig, um ein Problem zu signalisieren. Der Host kann auch den Wert des gültigen LBA-Zählers vom Speichersystem 100 anfordern und seine eigene Anforderung entsprechend verwalten. Wie weiter unten ausführlicher erörtert wird, kann das Dateisystem des Hosts Verwerfen-Befehle an das Speichersystem 100 zurücksenden, um zu verhindern, dass die gültige Datengröße die physische exportierte Kapazität vorzeitig erreicht (d. h. um zu vermeiden, dass der gültige LBA-Zähler die physische Grenze erreicht).
  • Diese Ausführungsformen werden detaillierter in Verbindung mit den 3-7 erörtert. Wenden wir uns zuerst der 3 zu, 3 ist ein Flussdiagramm 300 eines Verfahrens einer Ausführungsform, in der ein schlankes Speichersystem 100 eine Speichergültigkeitszahl des Speichers 104 verfolgt. Wie in 3 gezeigt, bestimmt das Speichersystem 100, wenn das Speichersystem 100 einen neuen Schreibbefehl (der eine LBA und eine Größe der zu schreibenden Daten spezifiziert) vom Host 252 empfängt (Vorgang 305), ob die Anzahl der LBAs, die von der angegebenen LBA und Größe umfasst werden, die exportierte logische Kapazität des Speichersystems 100 überschreitet (Vorgang 310). Wenn dies der Fall ist, endet das Verfahren mit einem Fehler „Adresse überlaufen“ (Vorgang 320). Wenn die Anzahl von LBAs, die durch die spezifizierte LBA und Größe umfasst sind, die exportierte logische Kapazität des Speichersystems 100 nicht überschreitet, bestimmt das Speichersystem 100, ob der Schreibbefehl ein Überschreibbefehl ist (Vorgang 330). Das Speichersystem 100 kann dies zum Beispiel entweder durch eine spezifische Angabe von dem Host 252 oder durch Überprüfen, ob der spezifizierte LBA-Bereich nicht verfügbar ist (was anzeigt, dass bereits Daten in dem spezifizierten LBA-Bereich geschrieben sind), bestimmen. Natürlich können auch andere Methoden zum Bestimmen, ob der Befehl ein Überschreibbefehl ist, verwendet werden.
  • Wenn der Befehl ein Überschreibbefehl ist, bedeutet dies, dass die zu schreibenden Daten die Menge der im Speichersystem 100 gespeicherten gültigen Daten (d. h. die „Speichergültigkeitszahl“ oder die „Gültigkeitsdatengröße“) nicht erhöhen, weil Daten überschrieben werden, die bereits berücksichtigt wurden. Es besteht also kein Risiko, die physische Exportkapazität des Speichersystems 100 zu überschreiten. Als solches kann das Speichersystem 100 die LBA einfach auf eine physische Blockadresse (PBA) abbilden (Vorgang 340) und die Daten in das Speichersystem 100 schreiben (Vorgang 350), was das Verfahren mit einem „Befehlserfolg“-Ergebnis beendet (Vorgang 360).
  • Wenn der Befehl kein Überschreibbefehl ist, müssen zusätzliche Daten in das Speichersystem 100 geschrieben und in der Speichergültigkeitszahl berücksichtigt werden. In diesem Fall würde das Speichersystem 100 die Datengröße zur Speichergültigkeitszahl hinzufügen (Vorgang 370) und dann bestimmen, ob die Speichergültigkeitszahl größer ist als die physische exportierte Kapazität des Speichersystems 100 (Vorgang 380). Wenn dies der Fall ist, endet das Verfahren mit einem Fehler „Speichervorrichtung voll“ (Vorgang 390). Wenn dies nicht der Fall ist, werden die Daten geschrieben und die Vorgänge 340-360 wie oben beschrieben ausgeführt.
  • In der in 3 diskutierten Ausführungsform war das Speichersystem 100 dafür verantwortlich, die Speichergültigkeitszahl zu verfolgen und zu bestimmen, ob ein gegebener Schreibbefehl von dem Host 252 ausgeführt werden sollte. In alternativen Ausführungsformen kann das Dateisystem auf dem Host 252 einen Teil oder die gesamte Verantwortung übernehmen. Beispielsweise verfolgt das Speichersystem 100 in dem Flussdiagramm 400 von 4 immer noch den Speichergültigkeitszahl, aber das Dateisystem auf dem Host 252 fordert die Speichergültigkeitszahl an und bestimmt, ob ein Schreibbefehl an den Host 252, basierend auf diesen Informationen, gesendet werden soll oder nicht.
  • Wie in 4 gezeigt, bestimmt der Host 252 zuerst, wenn das Dateisystem auf dem Host 252 einen an das Speichersystem 100 auszugebenden Schreibbefehl hat (Vorgang 405), ob der Schreibbefehl ein Überschreibbefehl ist (Vorgang 410). Diese Bestimmung kann unter Verwendung irgendeines geeigneten Verfahrens erfolgen, von dem einige oben diskutiert wurden. Wenn der Schreibbefehl ein Überschreibbefehl ist, hat dies keine Auswirkung auf die Speichergültigkeitszahl, sodass der Host 252 der LBA des Schreibbefehls Daten zuordnen kann (Vorgang 420), den Befehl an das Speichersystem 100 senden kann (Vorgang 430) und den Befehlserfolg signalisieren kann (Vorgang 440). Wenn der Schreibbefehl kein Überschreibbefehl ist, fordert das Dateisystem auf dem Host 252 die Speichergültigkeitszahl vom Speichersystem 100 an (Vorgang 450). Der Host 252 aktualisiert dann die Speichergültigkeitszahl mit der Befehlsgröße (Vorgang 460) und bestimmt, ob die Speichergültigkeitszahl größer ist als die physische exportierte Kapazität des Speichersystems 100 (Vorgang 470). Wenn dies der Fall ist, endet das Verfahren mit einem Fehler „Speichervorrichtung voll“ (Vorgang 480). Ist dies nicht der Fall, ordnet der Host 252 der LBA des Schreibbefehls Daten zu (Vorgang 420), sendet den Befehl an das Speichersystem 100 (Vorgang 430) und signalisiert den Befehlserfolg (Vorgang 440).
  • Während das Flussdiagramm 400 in 4 einen Ansatz zeigte, der zwischen dem Host 252 und dem Speichersystem 100 verteilt war, zeigt das Flussdiagramm 500 in 5 einen Ansatz, der von dem Host 252 durchgeführt wird. Wie in 5 Figur gezeigt, bestimmt der Host 252 zuerst, wenn das Dateisystem auf dem Host 252 einen an das Speichersystem 100 auszugebenden Schreibbefehl hat (Vorgang 505), ob der Schreibbefehl ein Überschreibbefehl ist (Vorgang 510). Diese Bestimmung kann unter Verwendung irgendeines geeigneten Verfahrens erfolgen, von dem einige oben diskutiert wurden. Wenn der Schreibbefehl ein Überschreibbefehl ist, hat dies keine Auswirkung auf die Speichergültigkeitszahl, sodass der Host 252 der LBA des Schreibbefehls Daten zuordnen kann (Vorgang 520), den Befehl an das Speichersystem 100 senden kann (Vorgang 530) und den Befehlserfolg signalisieren kann (Vorgang 540). Wenn der Schreibbefehl kein Überschreibbefehl ist, aktualisiert das Dateisystem auf dem Host 252 die Speichergültigkeitszahl mit der Befehlsgröße (Vorgang 550). Da das Dateisystem auf dem Host 252 die Speichergültigkeitszahl verfolgt, muss es diese Informationen nicht wie bei dem in 4 gezeigten Verfahren vom Speichersystem 100 anfordern. Als nächstes bestimmt das Dateisystem auf dem Host 252, ob die Speichergültigkeitszahl größer ist als die physische exportierte Kapazität des Speichersystems 100 (Vorgang 560). Wenn dies der Fall ist, endet das Verfahren mit einem Fehler „Speichervorrichtung voll“ (Vorgang 570). Ist dies nicht der Fall, ordnet der Host 252 der LBA des Schreibbefehls Daten zu (Vorgang 520), sendet den Befehl an das Speichersystem 100 (Vorgang 530) und signalisiert den Befehlserfolg (Vorgang 540).
  • Eine andere Ausführungsform befasst sich mit Verwerfen-Befehlen. Wenn ein Dateisystem auf dem Host 252 Daten verwerfen möchte, kann es einfach seine interne LBA-Tabelle aktualisieren und diese LBAs als verfügbar markieren. Wenn jedoch der Host 252 das Speichersystem 100 nicht über das Verwerfen informiert, geht das Speichersystem 100 weiterhin davon aus, dass in diesen LBA gültige Daten gespeichert sind. Obwohl der Host 252 annimmt, dass diese LBAs verfügbar sind, wird das Speichersystem 100 dies nicht tun. Wenn das Speichersystem 100 die Speichergültigkeitszahl verfolgt, kann dies dazu führen, dass das Speichersystem 100 denkt, dass nicht genügend Speicherplatz für ein zukünftiges Schreiben vom Host 252 verfügbar ist (was zu einem Fehler „Speichervorrichtung voll“ führt), obwohl möglicherweise Platz für das Schreiben zur Verfügung steht.
  • Wie in dem Flussdiagramm 600 in 6 gezeigt, stellt der Host 252 dem Speichersystem 100 den Verwerfen-Befehl zur Verfügung, um diese Situation zu berücksichtigen (Vorgang 605). Das Speichersystem 100 prüft zuerst, ob der LBA-Bereich, der verworfen werden soll, mehr als die logische exportierte Kapazität des Speichersystems 100 ist (Vorgang 610). Wenn dies der Fall ist, zeigt das Speichersystem 100 an, dass ein Befehl fehlgeschlagen ist mit „Adresse überlaufen“ (Vorgang 620). Ist dies nicht der Fall, entscheidet das Speichersystem 100, ob die LBA bereits verworfen wurde (Vorgang 630). Wenn die LBA bereits verworfen wurde, ist keine Aktualisierung erforderlich, sodass das Verfahren mit einer Befehlserfolgsmeldung endet (Vorgang 640). Wenn die LBA jedoch noch nicht verworfen wurde, addiert das Speichersystem 100 die Größe der Verwerfung zu der gültigen Speichergültigkeitszahl (Vorgang 650) und führt den Verwerfen-Befehl aus (z. B. durch Aktualisieren der logisch-zu-physischen Adressentabelle(n) im Speichersystem 100, um den LBA-Bereich als jetzt verfügbar anzuzeigen) (Vorgang 660). Das Verfahren endet dann mit einer Befehlserfolgsmeldung (Vorgang 640).
  • Wie in dem Flussdiagramm 700 in 7 gezeigt, falls der Host 252 die Speichergültigkeitszahl verfolgt (ausschließlich oder in Verbindung mit dem Speichersystem 100), wenn der Host 252 einen Verwerfen-Befehl hat (Vorgang 705), erhöht der Host 252 die Speichergültigkeitszahl (Vorgang 710), wenn der Verwerfen-Befehl an das Speichersystem 100 gesendet wird (Vorgang 720). Der Verwerfen-Befehl kann vor oder nach der Aktualisierung gesendet werden. Das Verfahren endet dann mit einer Befehlserfolgsmeldung (Vorgang 730).
  • Mit diesen Ausführungsformen sind mehrere Vorteile verbunden. Durch schlanke Speicherzuweisung kann beispielsweise ein Dateisystem mit Protokollstruktur die Speicherbereinigungsoperationen verschieben, sodass solche Operationen seltener als zuvor ausgeführt werden können. Möglicherweise ist eine Speicherbereinigungsoperation erforderlich, um einen LBA-Bereich freizugeben. Bei diesen Ausführungsformen können solche Speicherbereinigungsoperationen jedoch mit einer geringeren Größe als zuvor ausgeführt werden, da die schlanke Speicherzuweisung insgesamt dazu beiträgt, mehr freien Speicherplatz als zuvor sicherzustellen.
  • Schließlich kann, wie oben erwähnt, jeder geeignete Speichertyp verwendet werden. Halbleiter-Speichervorrichtungen schließen flüchtige Speichervorrichtungen ein, wie beispielsweise „DRAM“-Speichervorrichtungen (Dynamic Random Access Memory) oder „SRAM“-Speichervorrichtungen (Static Random Access Memory), nichtflüchtige Speicher wie „ReRAM“-Speicher (Resistive Random Access Memory), „EEPROM“-Speicher (Electrically Erasable Programmable Read Only Memory), Flash-Speicher (der auch als Untergruppe eines EEPROM angesehen werden kann), „FRAM“-Speicher (Ferroelectric Random Access Memory) und „MRAM“-Speicher (Magnetoresistive Random Access Memory) und andere Halbleiterelemente, die Informationen speichern können. Jede Art von Speichervorrichtung kann unterschiedliche Konfigurationen aufweisen. Zum Beispiel können Flash-Speichervorrichtungen in einer NAND- oder NOR-Konfiguration eingerichtet sein.
  • Die Speichervorrichtungen können aus passiven und/oder aktiven Elementen in beliebigen Kombinationen gebildet sein. Als ein nicht einschränkendes Beispiel sei angeführt, dass passive Halbleiter-Speicherelemente ReRAM-Vorrichtungselemente beinhalten, die in einigen Ausführungsformen ein Speicherelement mit Widerstandsumschaltung, wie beispielsweise ein Anti-Fuse-, Phasenwechsel-Material usw. und optional ein Lenkelement, wie beispielsweise eine Diode usw., einschließen. Weiterhin sei als nicht einschränkendes Beispiel genannt, dass aktive Halbleiter-Speicherelemente EEPROM- und Flash-Speichervorrichtungselemente einschließen, die in einigen Ausführungsformen Elemente mit einem Ladungsspeicherbereich, wie beispielsweise ein Floating-Gate, leitende Nanopartikel oder ein Ladung speicherndes dielektrisches Material, einschließen.
  • Mehrere Speicherelemente 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 NAND-Konfiguration (NAND-Speicher) üblicherweise Speicherelemente, die in Reihe geschaltet sind. Ein NAND-Speicherarray kann so eingerichtet sein, dass das Array aus mehreren Speicherketten zusammengesetzt ist, in denen eine Kette aus mehreren Speicherelementen zusammengesetzt ist, die sich eine einzelne Bitleitung teilen und auf die als eine Gruppe zugegriffen wird. Alternativ können Speicherelemente so eingerichtet sein, dass jedes Element einzeln zugänglich ist, z. B. ein NOR-Speicherarray. NAND- und NOR-Speicherkonfigurationen sind beispielhaft, und Speicherelemente können anderweitig eingerichtet sein.
  • Die Halbleiterspeicherelemente, die innerhalb und/oder über einem Substrat angeordnet sind, können in zwei oder drei Dimensionen angeordnet sein, wie einer zweidimensionalen Speicherstruktur oder einer dreidimensionalen Speicherstruktur.
  • In einer zweidimensionalen Speicherstruktur sind die Halbleiterspeicherelemente in einer einzelnen Ebene oder einer einzelnen Speichervorrichtungsebene angeordnet. Üblicherweise sind in einer zweidimensionalen Speicherstruktur Speicherelemente in einer Ebene (z. B. in einer x-z-Richtung-Ebene) angeordnet, die sich im Wesentlichen parallel zu einer Hauptfläche eines Substrats erstreckt, das die Speicherelemente trägt. Das Substrat kann ein Wafer sein, über oder in dem die Schicht der Speicherelemente gebildet ist, oder es kann ein Trägersubstrat sein, das nach dem Ausbilden an den Speicherelementen befestigt ist. Als ein nicht einschränkendes Beispiel, kann das Substrat einen Halbleiter wie Silizium einschließen.
  • Die Speicherelemente können auf der einzelnen Speichervorrichtungsebene in einem geordneten Array angeordnet sein, wie in einer Vielzahl von Zeilen und/oder Spalten. Jedoch können die Speicherelemente in nicht regelmäßigen oder nicht orthogonalen Konfigurationen angeordnet sein. Die Speicherelemente können jeweils zwei oder mehr Elektroden oder Kontaktleitungen, wie Bitleitungen und Wortleitungen, aufweisen.
  • Ein dreidimensionales Speicherarray ist so angeordnet, dass Speicherelemente mehrere Ebenen oder mehrere Speichervorrichtungsebenen belegen, wodurch eine Struktur in drei Dimensionen gebildet wird (d. h. in der x-, y- und z-Richtung, wo die y-Richtung im Wesentlichen senkrecht ist und die x- und z-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 Speicherelemente in jeder Spalte aufweist. Die Spalten können in einer zweidimensionalen Konfiguration angeordnet sein, z. B. in einer x-z-Ebene, was in einer dreidimensionalen Anordnung von Speicherelementen mit Elementen auf mehreren vertikal gestapelten Speicherebenen resultiert. Andere Konfigurationen von Speicherelementen in drei Dimensionen können auch ein dreidimensionales Speicherarray bilden.
  • Als nicht einschränkendes Beispiel können in einem dreidimensionalen NAND-Speicherarray die Speicherelemente miteinander gekoppelt sein, um eine NAND-Kette innerhalb einer einzelnen horizontalen (z. B. x-y) Speichervorrichtungsebenen zu bilden. Alternativ können die Speicherelemente miteinander gekoppelt sein, um eine vertikale NAND-Kette zu bilden, die über mehrere horizontale Speichervorrichtungsebenen verläuft. Andere dreidimensionale Konfigurationen können in Betracht gezogen werden, wobei einige NAND-Ketten Speicherelemente in einer einzelnen Speicherebene enthalten, während andere Ketten Speicherelemente enthalten, die sich über mehrere Speicherebenen erstrecken. Dreidimensionale Speicherarrays können auch als eine NOR-Konfiguration und als eine ReRAM-Konfiguration ausgelegt sein.
  • Üblicherweise werden in einem monolithischen dreidimensionalen Speicherarray ein oder mehrere Speichervorrichtungsebenen über einem einzigen Substrat gebildet. Gegebenenfalls kann das monolithische dreidimensionale Speicherarray auch eine oder mehrere Speicherschichten zumindest teilweise innerhalb des einzelnen Substrats aufweisen. Als ein nicht einschränkendes Beispiel, kann das Substrat einen Halbleiter wie Silizium einschließen. In einem monolithischen dreidimensionalen Array werden die Schichten, die jede Speichervorrichtungsebene des Arrays bilden, üblicherweise auf den Schichten der darunter liegenden Speichervorrichtungsebenen des Arrays gebildet. Jedoch können Schichten von benachbarten Speichervorrichtungsebenen eines monolithischen dreidimensionalen Speicherarrays gemeinsam genutzt werden oder Zwischenschichten zwischen Speichervorrichtungsebenen aufweisen.
  • Dann können wiederum zweidimensionale Arrays getrennt gebildet und dann zusammengepackt werden, um eine nicht monolithische Speichervorrichtung mit mehreren Speicherschichten zu bilden. Beispielsweise können nicht monolithische gestapelte Speicher konstruiert werden, indem Speicherebenen auf separaten Substraten gebildet werden und dann übereinander gestapelt werden. Die Substrate können vor dem Stapeln gedünnt oder von den Speichervorrichtungsebenen entfernt werden, aber da die Speichervorrichtungsebenen anfänglich über separaten Substraten gebildet werden, sind die resultierenden Speicherarrays keine monolithischen dreidimensionalen Speicherarrays. Weiterhin können mehrere zweidimensionale Speicherarrays oder dreidimensionale Speicherarrays (monolithisch oder nicht monolithisch) auf separaten Chips gebildet und dann zusammengepackt werden, um eine gestapelte Chip-Speichervorrichtung zu bilden.
  • Zugehörige Schaltungen sind üblicherweise für den Betrieb der Speicherelemente und für die Kommunikation mit den Speicherelementen erforderlich. Als nicht einschränkende Beispiele können Speichervorrichtungen Schaltungen aufweisen, die zum Steuern und Treiben von Speicherelementen verwendet werden, um Funktionen wie Programmieren und Lesen auszuführen. Diese zugehörige Schaltung kann sich auf demselben Substrat wie die Speicherelemente und/oder auf einem separaten Substrat befinden. Zum Beispiel kann eine Steuerung für Schreib-/Lesevorgänge des Speichers auf einem separaten Steuerungschip und/oder auf demselben Substrat wie die Speicherelemente angeordnet sein.
  • Ein Fachmann wird erkennen, dass diese Erfindung nicht auf die beschriebenen zweidimensionalen und dreidimensionalen beispielhaften Strukturen beschränkt ist, sondern alle relevanten Speicherstrukturen in dem Geist und Umfang der Erfindung abdeckt, wie hier beschrieben und wie es von einem Fachmann verstanden wird.
  • Es ist beabsichtigt, dass die vorstehende ausführliche Beschreibung als eine Veranschaulichung ausgewählter Formen, die die Erfindung annehmen kann, und nicht als eine Definition der Erfindung verstanden wird. Es sind nur die folgenden Ansprüche einschließlich aller Äquivalente, die den Umfang der beanspruchten Erfindung definieren sollen. Schließlich sei darauf hingewiesen, dass jeder Aspekt jeder der hier beschriebenen bevorzugten Ausführungsformen allein oder in Kombination miteinander verwendet werden kann.
  • 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 62442801 [0001]

Claims (20)

  1. Speichersystem, aufweisend: einen Speicher; und und eine Steuerung in Kommunikation mit dem Speicher, wobei die Steuerung eingerichtet ist, um: eine logische exportierte Kapazität des Speichers an einen Host zu liefern, wobei die logische exportierte Kapazität größer als eine tatsächliche Speicherkapazität des Speichers ist; einen Befehl von dem Host zu empfangen, um Daten in eine logische Adresse zu schreiben; zu bestimmen, ob eine verfügbare tatsächliche Speicherkapazität in dem Speicher vorhanden ist, um die Daten zu schreiben; und die Daten nur dann in eine physische Adresse im Speicher zu schreiben, die der logischen Adresse entspricht, wenn bestimmt wird, dass tatsächlich Speicherkapazität im Speicher verfügbar ist, um die Daten zu schreiben.
  2. Speichersystem gemäß Anspruch 1, wobei die Steuerung eingerichtet ist, um zu bestimmen, ob eine tatsächliche Speicherkapazität im Speicher verfügbar ist, indem bestimmt wird, ob eine Speichergültigkeitszahl des Speichers nach dem Schreiben der Daten die tatsächliche Speicherkapazität des Speichers überschreiten würde oder nicht.
  3. Speichersystem gemäß Anspruch 1, wobei die Steuerung weiterhin eingerichtet ist, um zu bestimmen, ob der Befehl ein Überschreibbefehl ist, und wobei die Steuerung eingerichtet ist, um zu bestimmen, ob tatsächliche Speicherkapazität im Speicher verfügbar ist, nachdem bestimmt wurde, dass der Befehl kein Überschreibbefehl ist.
  4. Speichersystem gemäß Anspruch 1, wobei die Steuerung weiterhin eingerichtet ist, um zu bestimmen, ob eine Summe der logischen Adresse und der Größe der Daten größer als die logische exportierte Kapazität ist, und wobei die Steuerung eingerichtet ist, um zu bestimmen, ob tatsächlich Speicherkapazität im Speicher verfügbar ist, um die Daten zu schreiben, nachdem festgestellt wurde, dass die Summe nicht größer als die logisch exportierte Kapazität ist.
  5. Speichersystem gemäß Anspruch 1, wobei die Steuerung weiterhin eingerichtet ist, um: einen Verwerfen-Befehl vom Host zu empfangen; und die Speichergültigkeitszahl des Speicherplatzes als Reaktion auf den Verwerfen-Befehl zu verringern.
  6. Speichersystem gemäß Anspruch 1, wobei die Daten Teil eines Stroms sind.
  7. Speichersystem gemäß Anspruch 1, wobei der Speicher einen dreidimensionalen Speicher aufweist.
  8. Speichersystem gemäß Anspruch 1, wobei das Speichersystem in den Host eingebettet ist.
  9. Speichersystem gemäß Anspruch 1, wobei das Speichersystem entfernbar mit dem Host verbunden ist.
  10. Verfahren, um Daten an ein schlankes Speichersystem zu schreiben, das Verfahren aufweisend: Durchführen des Folgenden in einem Host in Kommunikation mit einem Speichersystem, wobei das Speichersystem einen Speicher aufweist und wobei ein zum Host exportierter logischer Blockadressbereich größer als eine tatsächliche Speicherkapazität des Speichers ist: Bestimmen, ob eine gültige Datengröße des Speichers größer als die tatsächliche Speicherkapazität des Speichers wäre, falls Daten in eine verfügbare logische Blockadresse des Speichers geschrieben werden sollten; und als Reaktion auf das Bestimmen, dass die gültige Datengröße des Speichers nicht größer als die tatsächliche Speicherkapazität des Speichers wäre, Senden ines Befehls an das Speichersystem, um die Daten in die logische Adresse zu schreiben.
  11. Verfahren gemäß Anspruch 10, wobei das Speichersystem die gültige Datengröße des Speichers verfolgt und wobei das Verfahren weiterhin das Empfangen der gültigen Datengröße des Speichers vom Speichersystem aufweist.
  12. Verfahren gemäß Anspruch 10, weiterhin aufweisend das Verfolgen der gültigen Datengröße des Speichers des Speichersystems.
  13. Verfahren gemäß Anspruch 10, weiterhin aufweisend das Bestimmen, ob der Befehl ein Überschreibbefehl ist, und wobei das Bestimmen, ob die gültige Datengröße des Speichers größer als die tatsächliche Speicherkapazität des Speichers wäre, als Reaktion darauf durchgeführt wird, dass der Befehl kein Überschreibbefehl ist.
  14. Verfahren gemäß Anspruch 10 weiterhin umfassend das Verringern einer gültigen Datengröße des Speichers als Reaktion auf einen Verwerfen-Befehl.
  15. Verfahren gemäß Anspruch 10, wobei die Daten Teil eines Stroms sind.
  16. Verfahren gemäß Anspruch 10, wobei der Speicher im Speichersystem einen dreidimensionalen Speicher aufweist.
  17. Verfahren gemäß Anspruch 10, wobei das Speichersystem in dem Host eingebettet ist.
  18. Verfahren gemäß Anspruch 10, wobei das Speichersystem entfernbar mit dem Host verbunden ist.
  19. Speichersystem, aufweisend: einen Speicher; Mittel zum Bereitstellen einer logisch exportierten Kapazität des Speichers an einen Host, wobei die logisch exportierte Kapazität größer als eine tatsächliche Speicherkapazität des Speichers ist; Mittel zum Empfangen eines Befehls vom Host zum Schreiben von Daten an eine logische Adresse; Mittel zum Bestimmen, ob eine tatsächliche Speicherkapazität im Speicher verfügbar ist, um die Daten zu schreiben; und Mittel zum Schreiben der Daten in eine physische Adresse im Speicher, die der logischen Adresse entspricht, nur wenn festgestellt wird, dass tatsächlich Speicherkapazität im Speicher verfügbar ist, um die Daten zu schreiben.
  20. Speichersystem gemäß Anspruch 19, wobei der Speicher einen dreidimensionalen Speicher aufweist.
DE112017005955.0T 2017-01-05 2017-11-29 Speichersystem und verfahren zur schlanken speicherzuweisung Pending DE112017005955T5 (de)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201762442801P 2017-01-05 2017-01-05
US62/442,801 2017-01-05
US15/476,626 US10282097B2 (en) 2017-01-05 2017-03-31 Storage system and method for thin provisioning
US15/476,626 2017-03-31
PCT/US2017/063642 WO2018128727A1 (en) 2017-01-05 2017-11-29 Storage system and method for thin provisioning

Publications (1)

Publication Number Publication Date
DE112017005955T5 true DE112017005955T5 (de) 2019-10-17

Family

ID=62711694

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112017005955.0T Pending DE112017005955T5 (de) 2017-01-05 2017-11-29 Speichersystem und verfahren zur schlanken speicherzuweisung

Country Status (4)

Country Link
US (2) US10282097B2 (de)
CN (1) CN110088739B (de)
DE (1) DE112017005955T5 (de)
WO (1) WO2018128727A1 (de)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10140222B1 (en) 2017-07-06 2018-11-27 Micron Technology, Inc. Interface components
KR102411290B1 (ko) * 2017-10-24 2022-06-22 삼성전자주식회사 선택적으로 퍼지 동작을 수행하도록 구성되는 호스트 장치 및 스토리지 장치를 포함하는 스토리지 시스템
US10782916B2 (en) 2018-08-08 2020-09-22 Micron Technology, Inc. Proactive return of write credits in a memory system
US11409436B2 (en) 2018-08-08 2022-08-09 Micron Technology, Inc. Buffer management in memory systems for read and write requests
US11061768B1 (en) * 2020-02-14 2021-07-13 Western Digital Technologies, Inc. Storage device with increased endurance
CN111597159A (zh) * 2020-07-27 2020-08-28 成都智明达电子股份有限公司 一种提高ext4文件系统读写速率的方法
US11580044B2 (en) 2020-08-31 2023-02-14 Micron Technology, Inc. Network credit return mechanisms
US11588745B2 (en) * 2020-08-31 2023-02-21 Micron Technology, Inc. Early credit return for credit-based flow control
US11356378B2 (en) 2020-08-31 2022-06-07 Micron Technology, Inc. Combined write enable mask and credit return field
US11362939B2 (en) 2020-08-31 2022-06-14 Micron Technology, Inc. Flow control for a multiple flow control unit interface
CN113157512B (zh) * 2021-04-29 2022-12-02 山东华芯半导体有限公司 实现大容量ssd在小内存机器上进行数据校验测试的方法

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6681305B1 (en) 2000-05-30 2004-01-20 International Business Machines Corporation Method for operating system support for memory compression
US6823417B2 (en) 2001-10-01 2004-11-23 Hewlett-Packard Development Company, L.P. Memory controller for memory card manages file allocation table
US7117337B2 (en) 2004-02-19 2006-10-03 International Business Machines Corporation Apparatus and method for providing pre-translated segments for page translations in segmented operating systems
US7444461B2 (en) * 2006-08-04 2008-10-28 Sandisk Corporation Methods for phased garbage collection
US8046522B2 (en) * 2006-12-26 2011-10-25 SanDisk Technologies, Inc. Use of a direct data file system with a continuous logical address space interface and control of file address storage in logical blocks
EP2476079A4 (de) * 2009-09-09 2013-07-03 Fusion Io Inc Vorrichtung, system und verfahren zur zuordnung von speicherorten
CN101719103B (zh) * 2009-11-25 2012-07-18 成都市华为赛门铁克科技有限公司 基于存储设备的信息处理方法以及存储设备
WO2011069705A1 (en) * 2009-12-10 2011-06-16 International Business Machines Corporation Data storage system and method
JP5609683B2 (ja) * 2011-01-31 2014-10-22 ソニー株式会社 メモリ装置およびメモリシステム
US9767111B1 (en) * 2011-03-28 2017-09-19 EMC IP Holding Company LLC Method and apparatus for managing a dynamic journal using the punch command
EP2791774A1 (de) * 2012-02-08 2014-10-22 Hitachi, Ltd. Speichervorrichtung mit mehreren nichtflüchtigen halbleiterspeichereinheiten sowie steuerungsverfahren dafür zur ablage heisser daten in speichereinheiten mit längerer restlebensdauer sowie kalter daten in speichereinheiten mit kürzerer restlebensdauer
US20130212317A1 (en) 2012-02-13 2013-08-15 Shai Traister Storage and Host Devices for Overlapping Storage Areas for a Hibernation File and Cached Data
KR20140094278A (ko) * 2013-01-22 2014-07-30 에스케이하이닉스 주식회사 반도체 장치 및 이의 동작 방법
US9146853B2 (en) * 2013-03-28 2015-09-29 Microsoft Technology Licensing, Llc Managing capacity of a thinly provisioned storage system
US9606909B1 (en) * 2013-04-05 2017-03-28 Amazon Technologies, Inc. Deallocating portions of provisioned data storage based on defined bit patterns indicative of invalid data
US20150067281A1 (en) * 2013-09-05 2015-03-05 International Business Machines Corporation Reservation of storage space for a thin provisioned volume
CN103984641B (zh) * 2014-05-22 2017-12-22 华为技术有限公司 一种基于精简配置技术的存储空间回收方法及其装置
US9785348B2 (en) 2014-05-28 2017-10-10 International Business Machines Corporation Balancing usage of real and virtual space to avoid out-of-space conditions in storage controllers
WO2016038700A1 (ja) * 2014-09-10 2016-03-17 株式会社日立製作所 ファイルサーバ装置、方法、及び、計算機システム
US9740436B2 (en) * 2014-11-14 2017-08-22 International Business Machines Corporation Elastic file system management in storage cloud environments
US10008250B2 (en) * 2015-03-27 2018-06-26 Intel Corporation Single level cell write buffering for multiple level cell non-volatile memory
CN105630405B (zh) * 2015-04-29 2018-09-14 上海磁宇信息科技有限公司 一种存储系统及采用该存储系统的读写方法

Also Published As

Publication number Publication date
US20180188998A1 (en) 2018-07-05
CN110088739B (zh) 2023-06-30
CN110088739A (zh) 2019-08-02
US10282097B2 (en) 2019-05-07
WO2018128727A1 (en) 2018-07-12
US10901620B2 (en) 2021-01-26
US20190220200A1 (en) 2019-07-18

Similar Documents

Publication Publication Date Title
DE112017005955T5 (de) Speichersystem und verfahren zur schlanken speicherzuweisung
DE102018123891A1 (de) Handhabung nichtabgestimmter Schreibvorgänge
DE112020000184T5 (de) In zonen unterteilte namensräume in festkörperlaufwerken
DE102018106154A1 (de) Faltungsoperationen in datenspeichersystemen mit einzeladressenaktualisierungen
DE112018000834T5 (de) System und verfahren zur adaptiven befehlsabruf-aggregation
DE112019005369T5 (de) Verfahren zum umschalten zwischen herkömmlicher ssd und open-channel-ssd ohne datenverlust
DE112018000180T5 (de) System und verfahren zum adaptiven senden frühzeitiger beendigung unter verwendung eines steuerungsspeicherpuffers
DE112016004760T5 (de) System und Verfahren für direktes Schreiben auf einen MLC-Speicher
DE102020107659A1 (de) Zonenbildung für gezonte namensräume
DE112017005637T5 (de) Verfahren und System zur Schreibverstärkungsanalyse
DE112018004256T5 (de) Redundanzcodierstreifen basierend auf internen adressen von speichervorrichtungen
DE112018000181T5 (de) System und verfahren für die schnelle ausführung von kapselinternen befehlen
DE112017005887T5 (de) Speichersystem und Verfahren zur thermischen Drosselung über eine Befehlsarbitrierung
DE112015005102T5 (de) Systeme und verfahren zum erzeugen von einem hostbefehl zugeordneten hinweisinformationen
DE112020000139T5 (de) Nicht sequentiell in zonen aufgeteilte namensräume
DE112015004536T5 (de) Hardware-Automatisierung für Speicherverwaltung
DE112018000230T5 (de) System und Verfahren zur spekulativen Befehlsausführung unter Verwendung des Steuerungsspeicherpuffers
DE102011086227A1 (de) Adress mapping method, data storage device and user device
DE102018105871A1 (de) Speichersystem und Verfahren zur Vermeidung von Befehlskollisionen in nicht flüchtigen Datenspeichern mit expliziter Kachelgruppierung
DE112019000161T5 (de) Speicher-cache-verwaltung
DE102017128941A1 (de) Speichersystem und Verfahren zur prädiktiven Blockzuweisung zur effizienten Speicherbereinigung
DE112020005180T5 (de) Kondensieren von logischen zu physischen tabellenzeigern in ssds unter verwendung von gezonten namensräumen
DE112018004252T5 (de) Redundanzcodierstreifen auf der basis eines koordinierten internen adressschemas über mehrere vorrichtungen
DE112016000696B4 (de) Ablaufplanungsschema(ta) für eine Mehrchip-Speichervorrichtung
DE102021107443A1 (de) Dynamische speichersteuerung und verfahren zur verwendung damit

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R081 Change of applicant/patentee

Owner name: WESTERN DIGITAL TECHNOLOGIES, INC., SAN JOSE, US

Free format text: FORMER OWNER: WESTERN DIGITAL TECHNOLOGIES, INC., IRVINE, CALIF., US

R082 Change of representative

Representative=s name: MEWBURN ELLIS LLP, DE

R083 Amendment of/additions to inventor(s)
R082 Change of representative

Representative=s name: MURGITROYD GERMANY PATENTANWALTSGESELLSCHAFT M, DE

R081 Change of applicant/patentee

Owner name: SANDISK TECHNOLOGIES, INC. (N.D.GES. D. STAATE, US

Free format text: FORMER OWNER: WESTERN DIGITAL TECHNOLOGIES, INC., SAN JOSE, CA, US