DE102018105871A1 - Speichersystem und Verfahren zur Vermeidung von Befehlskollisionen in nicht flüchtigen Datenspeichern mit expliziter Kachelgruppierung - Google Patents

Speichersystem und Verfahren zur Vermeidung von Befehlskollisionen in nicht flüchtigen Datenspeichern mit expliziter Kachelgruppierung Download PDF

Info

Publication number
DE102018105871A1
DE102018105871A1 DE102018105871.3A DE102018105871A DE102018105871A1 DE 102018105871 A1 DE102018105871 A1 DE 102018105871A1 DE 102018105871 A DE102018105871 A DE 102018105871A DE 102018105871 A1 DE102018105871 A1 DE 102018105871A1
Authority
DE
Germany
Prior art keywords
data storage
tile
host
storage system
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.)
Withdrawn
Application number
DE102018105871.3A
Other languages
English (en)
Inventor
Seung-Hwan Song
Won Ho Choi
Chao Sun
Dejan Vucinic
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Western Digital Technologies Inc
Original Assignee
Western Digital Technologies Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Western Digital Technologies Inc filed Critical Western Digital Technologies Inc
Publication of DE102018105871A1 publication Critical patent/DE102018105871A1/de
Withdrawn 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/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • 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
    • 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/1668Details of memory controller
    • G06F13/1689Synchronisation and timing concerns
    • 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
    • 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
    • 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/7202Allocation control and policies
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2213/00Indexing scheme relating to G11C13/00 for features not covered by this group
    • G11C2213/70Resistive array aspects
    • G11C2213/71Three dimensional array
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2216/00Indexing scheme relating to G11C16/00 and subgroups, for features not directly covered by these groups
    • G11C2216/12Reading and writing aspects of erasable programmable read-only memories
    • G11C2216/22Nonvolatile memory in which reading can be carried out from one memory bank or array whilst a word or sector in another bank or array is being erased or programmed simultaneously
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C5/00Details of stores covered by group G11C11/00
    • G11C5/02Disposition of storage elements, e.g. in the form of a matrix array
    • G11C5/04Supports for storage elements, e.g. memory modules; Mounting or fixing of storage elements on such supports
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1051Data output circuits, e.g. read-out amplifiers, data output buffers, data output registers, data output level conversion circuits
    • G11C7/1063Control signal output circuits, e.g. status or busy flags, feedback command signals
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C8/00Arrangements for selecting an address in a digital store
    • G11C8/12Group selection circuits, e.g. for memory block selection, chip selection, array selection

Abstract

Es wird ein Speichersystem geschaffen, das eine Steuereinrichtung und einen Datenspeicher, der mehrere Datenspeicherkacheln enthält, die in mehrere Kachelgruppen gegliedert sind, enthält, wobei eine gegebene Kachelgruppe dann belegt ist, wenn eine beliebige Kachel in der gegebenen Kachelgruppe belegt ist. Die Steuereinrichtung ist konfiguriert: den Host über den Belegt-Zustand der mehreren Kachelgruppen zu informieren; mehrere Befehle vom Host zu empfangen, wobei jeder Befehl mit einer anderen Kachelgruppenkennung einer Kachelgruppe, die nicht belegt ist, bereitgestellt wird; und die mehreren Befehle auszuführen, wobei die mehreren Befehle parallel ausgeführt werden, weil jeder Befehl eine andere Kachelgruppenkennung einer Kachelgruppe, die nicht belegt ist, enthält.

Description

  • Hintergrund
  • Einige Speichersysteme weisen eine Datenspeicheranordnung auf, die in mehrere Kachelgruppen (Unteranordnungsgruppen) gegliedert ist, die ausgelegt sind, lediglich einen Lese/Schreib-Befehl auf einmal zu verarbeiten. Dementsprechend kann dann, wenn in einer gegebenen Kachelgruppe ein Lese/Schreib-Befehl ausgeführt wird, ein anschließender Lese/Schreib-Befehl an diese Kachelgruppe nicht ausgeführt werden, bis der vorhergehende Lese/Schreib-Befehl abgeschlossen ist. Wenn im Gegensatz dazu ein Lese/Schreib-Befehl an eine betriebsbereite Kachelgruppe gesendet wird, kann dieser Lese/Schreib-Befehl sofort ausgeführt werden.
  • Figurenliste
    • 1A ist ein Blockdiagramm eines nicht flüchtigen Speichersystems einer Ausführungsform.
    • 1B ist ein Blockdiagramm eines Speichermoduls einer Ausführungsform.
    • 1C ist ein Blockdiagramm, das ein hierarchisches Speichersystem einer Ausführungsform veranschaulicht.
    • 2A ist ein Blockdiagramm, das die Komponenten der Steuereinrichtung des nicht flüchtigen Speichersystems, das in 1A veranschaulicht ist, gemäß einer Ausführungsform veranschaulicht.
    • 2B ist ein Blockdiagramm, das die Komponenten des nicht flüchtigen Datenspeicher-Speichersystems, das in 1A veranschaulicht ist, gemäß einer Ausführungsform veranschaulicht.
    • 3 ist ein Blockdiagramm, das ein Host-und-Speicher-System einer Ausführungsform veranschaulicht.
    • 4 ist ein Blockdiagramm, das ein Host-und-Speicher-System einer Ausführungsform während eines Abnutzungsausgleichsvorgangs veranschaulicht.
    • 5 ist ein Ablaufplan eines Verfahrens zur Vermeidung von Befehlskollisionen einer Ausführungsform.
    • 6 ist ein Blockdiagramm, das ein Host-und-Speicher-System einer Ausführungsform veranschaulicht, in dem der Host eine Kachelgruppen-ID sendet.
    • 7 ist eine Grafik, die die Aktivität zweier Kachelgruppen zeigt.
    • 8 ist eine Grafik, die die Aktivität zweier Kachelgruppen zeigt, wenn ein Verfahren zur Vermeidung von Befehlskollisionen einer Ausführungsform verwendet wird.
    • 9 ist ein Blockdiagramm, das ein Host-und-Speicher-System einer alternativen Ausführungsform veranschaulicht.
  • Genaue Beschreibung
  • Überblick
  • Einführend beziehen sich die unten stehenden Ausführungsformen auf ein Speichersystem und ein Verfahren zur Vermeidung von Befehlskollisionen in nicht flüchtigen Datenspeichern mit expliziter Kachelgruppierung. In einer Ausführungsform wird ein Speichersystem geschaffen, das eine Steuereinrichtung und einen Datenspeicher, der mehrere Datenspeicherkacheln enthält, die in mehrere Kachelgruppen gegliedert sind, enthält, wobei eine gegebene Kachelgruppe dann belegt ist, wenn eine beliebige Kachel in der gegebenen Kachelgruppe belegt ist. Die Speichereinrichtung ist konfiguriert: den Host über den Belegt-Zustand der mehreren Kachelgruppen zu informieren; mehrere Befehle vom Host zu empfangen, wobei jeder Befehl mit einer anderen Kachelgruppenkennung einer Kachelgruppe, die nicht belegt ist, bereitgestellt wird; und die mehreren Befehle auszuführen, wobei die mehreren Befehle parallel ausgeführt werden, weil jeder Befehl eine andere Kachelgruppenkennung einer Kachelgruppe, die nicht belegt ist, enthält.
  • In einigen Ausführungsformen ist die Steuereinrichtung konfiguriert, den Host über den Belegt-Zustand der mehreren Kachelgruppen zu informieren, indem sie ein Betriebsbereit/Belegt-Kennzeichen für jede Kachelgruppe in ein oder mehrere durch den Host lesbare Register im Speichersystem schreibt.
  • In einigen Ausführungsformen gibt das Ausführen der mehreren Befehle einige, jedoch nicht alle Kacheln in mindestens einer Kachelgruppe als belegt wieder, und wobei die Steuereinrichtung ferner konfiguriert ist, in mindestens einer der Kacheln in der mindestens einen Kachelgruppe, die nicht belegt ist, einen Hintergrundvorgang durchzuführen.
  • In einigen Ausführungsformen enthält der Datenspeicher einen dreidimensionalen Datenspeicher.
  • In einigen Ausführungsformen ist das Speichersystem im Host eingebettet.
  • In einigen Ausführungsformen ist das Speichersystem mit dem Host abnehmbar verbunden.
  • In einer weiteren Ausführungsform wird ein Verfahren zur Vermeidung von Befehlskollisionen geschaffen. Das Verfahren umfasst Folgendes: Empfangen von Betriebsbereit/Nicht-Betriebsbereit-Informationen von mehreren Datenspeicher-Unteranordnungsgruppen in einem Speichersystem, wobei jede Datenspeicher-Unteranordnungsgruppe mehrere Datenspeicher-Unteranordnungen enthält und wobei eine gegebene Datenspeicher-Unteranordnungsgruppe nicht betriebsbereit ist, wenn mindestens eine Datenspeicher-Unteranordnung in der gegebenen Datenspeicher-Unteranordnungsgruppe nicht betriebsbereit ist; und Senden mehrerer Datenspeicher-Zugriffsbefehle an das Speichersystem, wobei jeder Datenspeicher-Zugriffsbefehl zusammen mit einer anderen Datenspeicher-Unteranordnungsgruppen-ID einer Datenspeicher-Unteranordnungsgruppe, die betriebsbereit ist, gesendet wird.
  • In einigen Ausführungsformen umfasst das Empfangen der Betriebsbereit/Nicht-Betriebsbereit-Informationen das Lesen der Betriebsbereit/Nicht-Betriebsbereit-Informationen aus mindestens einem Register im Speichersystem.
  • In einigen Ausführungsformen umfasst das Verfahren ferner das Bestimmen, welche Datenspeicher-Unteranordnungsgruppen-ID zusammen mit einem gegebenen Datenspeicher-Zugriffsbefehl gesendet werden soll, unter Verwendung einer Datenstruktur, die logische Blockadressen Datenspeicher-Unteranordnungsgruppen-ID zuordnet.
  • In einigen Ausführungsformen umfasst das Verfahren ferner das Bestimmen, ob ein Datenspeicher-Zugriffsbefehl an eine bestimmte Datenspeicher-Unteranordnungsgruppen-ID gesendet werden soll, auf der Basis einer Historie der Datenspeicher-Zugriffsbefehle, die an die bestimmte Datenspeicher-Unteranordnungsgruppen-ID gesendet wurden.
  • In einigen Ausführungsformen weisen mindestens zwei Datenspeicher-Unteranordnungsgruppen voneinander verschiedene Datenspeichertypen auf, und wobei das Verfahren ferner das Bestimmen, welche Datenspeicher-Unteranordnungsgruppen-ID zusammen mit einem gegebenen Datenspeicher-Zugriffsbefehl gesendet werden soll, auf der Basis des Datenspeichertyps, der für den gegebenen Datenspeicher-Zugriffsbefehl geeignet ist, umfasst.
  • In einigen Ausführungsformen weist ein Datenspeichertyp eine höhere Zuverlässigkeit als ein weiterer, anderer Datenspeichertyp auf.
  • In einigen Ausführungsformen enthält mindestens eine der mehreren Datenspeicher-Unteranordnungsgruppen einen dreidimensionalen Datenspeicher.
  • In einigen Ausführungsformen werden das Empfangen und das Senden durch einen Host in Verbindung mit dem Speichersystem durchgeführt.
  • In einigen Ausführungsformen ist das Speichersystem im Host eingebettet.
  • In einigen Ausführungsformen ist das Speichersystem mit dem Host abnehmbar verbunden.
  • In einer weiteren Ausführungsform wird ein Speichersystem geschaffen, das Folgendes enthält: einen Datenspeicher; Mittel zum Bereitstellen von Betriebsbereit/Belegt-Informationen mehrerer Kachelgruppen in dem Datenspeicher an einen Host; Mittel zum Empfangen von mehreren Befehlen von dem Host, wobei jeder Befehl einer eindeutigen Kachelgruppenkennung einer Kachelgruppe, die nicht belegt ist, zugeordnet ist; und Mittel zum parallelen Ausführen der mehreren Befehle.
  • In einigen Ausführungsformen enthält mindestens eine der mehreren Kachelgruppen einen dreidimensionalen Datenspeicher.
  • In einigen Ausführungsformen ist das Speichersystem im Host eingebettet.
  • In einigen Ausführungsformen ist das Speichersystem mit dem Host abnehmbar verbunden.
  • Andere Ausführungsformen sind möglich, und jede der Ausführungsformen kann alleinstehend oder in Kombination zusammen verwendet werden. Dementsprechend werden nun unter Bezugnahme auf die beigefügten Zeichnungen diverse Ausführungsformen beschrieben.
  • Ausführungsformen
  • Speichersysteme, die zur Verwendung beim Implementieren von Aspekten dieser Ausführungsformen geeignet sind, sind in 1A-1C gezeigt. 1A ist ein Blockdiagramm, das ein nicht flüchtiges Speichersystem 100 gemäß einer Ausführungsform des hier beschriebenen Gegenstands veranschaulicht. Unter Bezugnahme auf 1A enthält das nicht flüchtige Speichersystem 100 eine Steuereinrichtung 102 und einen nicht flüchtigen Datenspeicher, der aus einem oder mehreren nicht flüchtigen Datenspeicherchips 104 aufgebaut sein kann. Wie hier verwendet bezieht sich der Ausdruck Chip auf eine Zusammenstellung nicht flüchtiger Datenspeicherzellen und einer zugeordnete Schaltungsanordnung zum Managen des physikalischen Betriebs jener nicht flüchtigen Datenspeicherzellen, die auf einem einzigen Halbleitersubstrat gebildet sind. Die Steuereinrichtung 102 koppelt mit einem Host-System und überträgt Befehlsfolgen für Lese-, Programmier- und Löschvorgänge an den nicht flüchtigen Datenspeicherchip 104.
  • Die Steuereinrichtung 102 (die eine Steuereinrichtung für nicht flüchtige Datenspeicher sein kann (z. B. eine Flash-, Re-RAM-, PCM- oder MRAM-Steuereinrichtung)) kann z. B. die Form einer verarbeitenden Schaltungsanordnung, eines Mikroprozessors oder Prozessors und eines computerlesbaren Mediums, auf dem computerlesbarer Programmcode (z. B. Firmware) gespeichert ist, der durch den (Mikro)Prozessor ausführbar ist, von Logik-Gattern, Schaltern, einer anwendungsspezifischen integrierten Schaltung (ASIC), einer programmierbaren Logiksteuereinrichtung und einer eingebetteten Mikrosteuereinrichtung annehmen. Die Steuereinrichtung 102 kann mit Hardware und/oder Firmware, um die diversen Funktionen durchzuführen, die unten beschrieben und in den Ablaufplänen gezeigt sind, konfiguriert sein. Außerdem können einige der Komponenten, die als innerhalb der Steuereinrichtung befindlich gezeigt sind, ebenso außerhalb der Steuereinrichtung gespeichert sein, und andere Komponenten können verwendet werden. Außerdem könnte der Satz „betriebstechnisch in Verbindung mit“ direkt in Verbindung mit oder indirekt in Verbindung mit (leitungsgebunden oder drahtlos) durch eine oder mehrere Komponenten, die hier gezeigt oder beschrieben sein können oder nicht, bedeuten.
  • Wie hier verwendet ist eine Steuereinrichtung für nicht flüchtige Datenspeicher eine Vorrichtung, die Daten managt, die auf einem nicht flüchtigen Datenspeicher gespeichert sind, und mit einem Host wie etwa einem Computer oder einer elektronischen Vorrichtung kommuniziert. Eine Steuereinrichtung für nicht flüchtige Datenspeicher kann zusätzlich zu der spezifischen Funktionalität, die hier beschrieben ist, verschiedenartige Funktionalität aufweisen. Zum Beispiel kann die Steuereinrichtung für nicht flüchtige Datenspeicher den nicht flüchtigen Datenspeicher formatieren, um sicherzustellen, dass der Datenspeicher korrekt arbeitet, schlechte, nicht flüchtige Datenspeicherzellen austragen und nicht belegte Zellen zuweisen, um zukünftige, fehlerhafte Zellen durch diese zu ersetzten. Ein Teil der nicht belegten Zellen kann verwendet werden, um Firmware, um die Speichereinrichtung für nicht flüchtige Datenspeicher zu betreiben und andere Merkmale zu implementieren, zu halten. Wenn ein Host im Betrieb aus dem nicht flüchtigen Datenspeicher Daten lesen oder Daten dort hinein schreiben muss, kann er mit der Steuereinrichtung für nicht flüchtige Datenspeicher kommunizieren. Wenn der Host eine logische Adresse bereitstellt, aus der Daten gelesen werden sollen bzw. auf die Daten geschrieben werden sollen, kann die Steuereinrichtung für nicht flüchtige Datenspeicher die logische Adresse, die sie vom Host empfangen hat, in eine physikalische Adresse im nicht flüchtigen Datenspeicher umsetzen. (Alternativ kann der Host die physikalische Adresse bereitstellen.) Die Steuereinrichtung für nicht flüchtige Datenspeicher kann außerdem diverse Datenspeicher-Managementfunktionen durchführen, wie etwa, jedoch nicht darauf eingeschränkt, Abnutzungsausgleich (Verteilen von Schreibvorgängen, um das Abnutzen bestimmter Datenspeicherblöcke zu vermeiden, die andernfalls wiederholt beschrieben würden) und Speicherbereinigung (nachdem ein Block voll ist, Bewegen lediglich der gültigen Datenseiten zu einem neuen Block, derart, dass der volle Block gelöscht und erneut verwendet werden kann).
  • Der nicht flüchtige Datenspeicherchip 104 kann jedes geeignete, nicht flüchtige Speichermedium enthalten, einschließlich Widerstands-Schreib/Lesespeichern (ReRAM), magnetoresistiven Schreib/Lesespeichern (MRAM), Phasenwechsel-Datenspeichern (PCM), NAND-Flash-Datenspeicherzellen und/oder NOR-Flash-Datenspeicherzellen. Die Datenspeicherzellen können die Form von Festkörper-Datenspeicherzellen (z. B. Flash-Datenspeicherzellen) annehmen und können einmal programmierbar, wenige Male programmierbar oder viele Male programmierbar sein. Die Datenspeicherzellen können außerdem einstufige Zellen (SLC), mehrstufige Zellen (MLC), dreistufige Zellen (TLC) sein oder andere Datenspeicherzellen-Stufentechnologien verwenden, die derzeit bekannt sind oder später entwickelt werden. Außerdem können die Datenspeicherzellen auf zweidimensionale oder auf dreidimensionale Weise hergestellt sein.
  • Die Schnittstelle zwischen der Steuereinrichtung 102 und dem nicht flüchtigen Datenspeicherchip 104 kann jede geeignete Flash-Schnittstelle wie etwa Toggle Mode 200, 400 oder 800 sein. In einer Ausführungsform kann das Speichersystem 100 ein kartenbasiertes System wie etwa eine Secure-Digital-Karte (SD-Karte) oder eine Mikro-Secure-Digital-Karte (Mikro-SD-Karte) sein. In einer alternativen Ausführungsform kann das Speichersystem 100 Teil eines eingebetteten Speichersystems sein.
  • Obwohl in dem Beispiel, das in 1A veranschaulicht ist, das nicht flüchtige Speichersystem 100 (das hier manchmal als Speichermodul bezeichnet ist) einen einzigen Kanal zwischen der Steuereinrichtung 102 und dem nicht flüchtigen Datenspeicherchip 104 enthält, ist der hier beschriebene Gegenstand nicht darauf eingeschränkt, einen einzigen Datenspeicherkanal aufzuweisen. Zum Beispiel können in einigen Speichersystemarchitekturen (wie etwa jenen, die in 1B und 1C gezeigt sind) abhängig von den Fähigkeiten der Steuereinrichtung 2, 4, 8 oder mehr Datenspeicherkanäle zwischen der Steuereinrichtung und der Datenspeichervorrichtung vorhanden sein. In jeder der hier beschriebenen Ausführungsformen kann mehr als ein einziger Kanal zwischen der Steuereinrichtung und dem Datenspeicherchip vorhanden sein, selbst wenn in den Zeichnungen ein einziger Kanal gezeigt ist.
  • 1B veranschaulicht ein Speichermodul 200, das mehrere nicht flüchtige Speichersysteme 100 enthält. Derart kann das Speichermodul 200 eine Speichersteuereinrichtung 202 enthalten, die mit einem Host und mit einem Speichersystem 204 koppelt, das mehrere nicht flüchtige Speichersysteme 100 enthält. Die Schnittstelle zwischen der Speichersteuereinrichtung 202 und den nicht flüchtigen Speichersystemen 100 kann eine Bus-Schnittstelle wie etwa eine Serial-Advanced-Technology-Attachment-Schnittstelle (SATA-Schnittstelle), eine Peripheral-Component-Interface-Express-Schnittstelle (PCIe-Schnittstelle) oder eine Schnittstelle mit zweifacher Datengeschwindigkeit (DDR-Schnittstelle) sein. Das Speichermodul 200 kann in einer Ausführungsform ein Halbleiterlaufwerk (SSD) oder ein nicht flüchtiges Dual in-line-Datenspeichermodul (NVDIMM) sein, wie sie etwa in Server-PC oder in tragbaren Rechenvorrichtungen wie etwa Laptop-Computern und Tablet-Computern zu finden sind.
  • 1C ist ein Blockdiagramm, das ein hierarchisches Speichersystem veranschaulicht. Ein hierarchisches Speichersystem 250 enthält mehrere Speichersteuereinrichtungen 202, wovon jede ein jeweiliges Speichersystem 204 steuert. Die Host-Systeme 252 können über eine Bus-Schnittstelle auf die Datenspeicher in dem Speichersystem zugreifen. In einer Ausführungsform kann die Bus-Schnittstelle eine NVMe-Schnittstelle oder eine Fiber-Channel-over-Ethernet-Schnittstelle (FCoE-Schnittstelle) sein. In einer Ausführungsform kann das in 1C veranschaulichte System ein Massenspeichersystem für den Rack-Einbau sein, auf das durch mehrere Host-Computer zugegriffen werden kann, wie es etwa in einem Datenzentrum oder an einem anderen Ort, an dem Massenspeicher benötigt werden, zu finden ist.
  • 2A ist ein Blockdiagramm, das die Komponenten der Steuereinrichtung 102 genauer veranschaulicht. Die Steuereinrichtung 102 enthält ein Frontend-Modul 108, das mit einem Host koppelt, ein Backend-Modul 110, das mit dem einen oder den mehreren nicht flüchtigen Datenspeicherchips 104 koppelt, und diverse andere Module, die Funktionen durchführen, die nun genau beschrieben werden. Ein Modul kann z. B die Form einer gepackten, funktionalen Hardwareeinheit, die zur Verwendung mit anderen Komponenten ausgelegt ist, eines Abschnitts eines Programmcodes (z. B. Software oder Firmware), der durch einen (Mikro)Prozessor oder eine verarbeitende Schaltungsanordnung ausführbar ist, der üblicherweise eine bestimmte Funktion der zugehörigen Funktionen durchführt, oder einer unabhängigen Hardware- oder Softwarekomponente, die mit einem größeren System koppelt, annehmen. Die Module der Steuereinrichtung 102 können ein Modul 111 zur Vermeidung von Befehlskollisionen enthalten, das unten genauer diskutiert wird, und können als Hardware oder Software/Firmware implementiert sein.
  • Unter erneuter Bezugnahme auf die Module der Steuereinrichtung 102 managt ein Puffermanager/eine Bus-Steuereinrichtung 114 Puffer im Schreib/Lesespeicher (RAM) 116 und steuert die interne Busarbitrierung der Steuereinrichtung 102. Ein Festwertspeicher (ROM) 118 speichert den Systemhochlaufcode. Obwohl sie in 2A als von der Steuereinrichtung 102 getrennt angeordnet veranschaulicht sind, können der RAM 116 und/oder der Rom 118 in anderen Ausführungsformen innerhalb der Steuereinrichtung angeordnet sein. In nochmals anderen Ausführungsformen können Abschnitte von RAM und ROM sowohl innerhalb der Steuereinrichtung 102 als auch außerhalb der Steuereinrichtung angeordnet sein.
  • Das Frontend-Modul 108 enthält eine Host-Schnittstelle 120 und eine Schnittstelle 122 der physikalischen Schicht (PHY), die die elektrische Schnittstelle mit dem Host oder der Speichersteuereinrichtung der nächsten Stufe bereitstellen. Die Wahl des Typs der Host-Schnittstelle 120 kann vom Typ des verwendeten Datenspeichers abhängen. Beispiele für Host-Schnittstellen 120 enthalten, sind jedoch nicht darauf eingeschränkt, SATA, SATA-Express, SAS, Faserkanal, USB, PCIe und NVMe. Die Host-Schnittstelle 120 ermöglicht üblicherweise die Übertragung für Daten, Steuersignale und Zeitvorgabesignale.
  • Das Backend-Modul 110 enthält eine Fehlerkorrektur-Steuereinrichtungsmaschine (ECC-Maschine) 124, die die Datenbytes codiert, die vom Host empfangen werden, und die Datenbytes decodiert und fehlerkorrigiert, die aus dem nicht flüchtigen Datenspeicher gelesen werden. Eine Befehlsablauf-Steuereinrichtung 126 erzeugt Befehlsfolgen wie etwa Befehlsfolgen zum Programmieren und Löschen, die an den nicht flüchtigen Datenspeicherchip 104 übertragen werden sollen. Ein RAID-Modul (redundante Anordnung unabhängiger Laufwerke) 128 managt die Erzeugung der RAID-Parität und die Wiederherstellung fehlerhafter Daten. Die RAID-Parität kann als eine zusätzliche Stufe des Integritätsschutzes für die Daten, die in die Datenspeichervorrichtung 104 geschrieben werden, verwendet werden. In einigen Fällen kann das RAID-Modul 128 eine Komponente der ECC-Maschine 124 sein. Eine Datenspeicherschnittstelle 130 stellt dem nicht flüchtigen Datenspeicherchip 104 die Befehlsfolgen bereit und empfängt Zustandsinformationen vom nicht flüchtigen Datenspeicherchip 104. In einer Ausführungsform kann die Datenspeicherschnittstelle 130 eine Schnittstelle mit zweifacher Datengeschwindigkeit (DDR-Schnittstelle) wie etwa eine Schnittstelle des Toggle Mode 200, 400 oder 800 sein. Eine Flash-Steuerschicht 132 steuert den Gesamtbetrieb des Backend-Moduls 110.
  • Das Speichersystem 100 enthält außerdem andere einzelne Komponenten 140 wie etwa externe elektrische Schnittstellen, externe RAM, Widerstände, Kondensatoren oder andere Komponenten, die mit der Steuereinrichtung 102 koppeln können. In alternativen Ausführungsformen sind die Schnittstelle 122 der physikalischen Schicht, das RAID-Modul 128, die Medienmanagementschicht 138 und die Puffermanagement/Bus-Steuereinrichtung 114 wahlweise Komponenten, die in der Steuereinrichtung 102 nicht notwendig sind.
  • 2B ist ein Blockdiagramm, das die Komponenten des nicht flüchtigen Datenspeicherchips 104 genauer veranschaulicht. Der nicht flüchtige Datenspeicherchip 104 enthält die Peripherieschaltungsanordnung 141 und die nicht flüchtige Datenspeicheranordnung 142. Die nicht flüchtige Datenspeicheranordnung 142 enthält die nicht flüchtigen Datenspeicherzellen, die verwendet werden, um Daten zu speichern. Die nicht flüchtigen Datenspeicherzellen können jegliche geeignete, nicht flüchtige Datenspeicherzellen sein, einschließlich ReRAM, MRAM, PCM, NAND-Flash-Datenspeicherzellen und/oder NOR-Flash-Datenspeicherzellen in einer zweidimensionalen und/oder dreidimensionalen Konfiguration. Der nicht flüchtige Datenspeicherchip 104 enthält ferner einen Daten-Cache 156, der Daten in den Cache-Speicher aufnimmt. Die Peripherieschaltungsanordnung 141 enthält eine Zustandsmaschine 152, die der Steuereinrichtung 102 Zustandsinformationen bereitstellt.
  • 3 ist eine Veranschaulichung einer bestimmten Implementierung einer Ausführungsform. Es sei erwähnt, dass dies lediglich ein Beispiel ist und dass andere Implementierungen verwendet werden können. 3 zeigt einen Host 50 in Verbindung mit einigen der Komponenten des Speichersystems 100; konkret mit der Steuereinrichtung 102 und dem Datenspeicher 104. Es versteht sich, dass andere Komponenten des Speichersystems 100 (einschließlich, jedoch nicht darauf eingeschränkt, jener Komponenten, die oben diskutiert wurden) verwendet werden können und in 3 nicht gezeigt sind, um die Zeichnung zu vereinfachen. Hier enthält der Datenspeicher 104 mehrere nicht flüchtige Datenspeicherbausteine (oder Datenspeicherchips); in anderen Ausführungsformen kann der Datenspeicher 104 einen einzigen Baustein/Chip enthalten. 3 zeigt einen der Datenspeicherchips 300 in größerer Detailtiefe. Einige oder alle der Datenspeicherchips 300 können ähnlich gegliedert sein. Wie in 3 gezeigt ist, enthält der Datenspeicherchip 300 in dieser Ausführungsform mehrere Datenspeicherkacheln (hier Kachel 0 bis Kachel 16), die in mehrere logische Kachelgruppen (hier Kachelgruppe A bis Kachelgruppe D) gegliedert sind. Wie hier verwendet kann sich eine Datenspeicherkachel auf eine Datenspeicher-Unteranordnung beziehen, und eine Kachelgruppe (oder Unteranordnungsgruppe) kann sich auf eine logische Gruppierung einzelner Datenspeicherkacheln (oder Datenspeicher-Unteranordnungen) beziehen.
  • Wie in 3 gezeigt ist, enthält in dieser Ausführungsform jede Datenspeicherkachel/Datenspeicher-Unteranordnung mehrere Bitleitungen, mehrere Wortleitungen, mehrere Datenspeicherzellen an der Kreuzung der Bitleitungen und Wortleitungen, mehrere Spaltenadressen-Decodierer, mehrere Wortleitungs-Ansteuereinrichtungen (nicht gezeigt), und einen einzigen Leseverstärker, den die mehreren Bitleitungen gemeinsam verwenden. In dieser bestimmten Ausführungsform ist eine Datenspeicherzelle eine Vorrichtung mit zwei Anschlüssen am Kreuzungspunkt von Wortleitungen und Bitleitungen, obwohl andere Datenspeicherzellenentwürfe verwendet werden können. Wie in 3 gezeigt ist, kann während eines Lese/Erfassungs-Vorgangs einer gegebenen Datenspeicherzelle in einer Kachel in anderen Datenspeicherzellen ein Leckstrom auftreten. Wiederum kann lediglich eine Datenspeicherzelle aus einer gegebenen Kachel zu jeder gegebenen Zeit gelesen werden, weil es einen einzigen Leseverstärker gibt, der von allen Datenspeicherzellen in einer gegebenen Datenspeicherkachel gemeinsam verwendet wird. Das heißt, wenn nicht flüchtige Datenspeicherzellen einer einzigen Kachel beschrieben oder gelesen werden, kann der nächste Lese/Schreib-Befehl an dieselbe Kachel aufgrund der gemeinsamen, physikalischen Verwendung der Schaltungsanordnung in der Kachel (z. B. des Leseverstärkers) nicht bedient werden, bis der vorhergehende Schreib- oder Lesevorgang beendet ist. Außerdem kann eine Abfolge eines Lesens/Schreibens nach einem Schreiben auf derselben Kachel erheblicher verzögert werden als eine Abfolge eines Lesens/Schreibens nach einem Lesen, weil ein Schreibvorgang viel langsamer als ein Lesevorgang ist. Im Gegensatz dazu würde ein Lese/Schreib-Befehl sofort ausgeführt werden, wenn er auf eine freie Kachel der Zellenanordnung zugreifen würde.
  • Wie oben erwähnt ist, sind in dieser Ausführungsform die mehreren Datenspeicherkacheln (hier Kachel 0 bis Kachel 16) in mehrere logische Kachelgruppen (hier Kachelgruppe A bis Kachelgruppe D) gegliedert. In dieser Ausführungsform verwenden die Kacheln in einer logischen Kachelgruppe keine Komponenten (z. B. Wortleitungen, Bitleitungen, Spaltendecodierer, Leseverstärker) gemeinsam. Das heißt, jede Kachel in einer Kachelgruppe besitzt ihre eigenen Komponenten und kann unabhängig betrieben werden. Jedoch werden in dieser Ausführungsform logische Kachelgruppen verwendet, um das Kommunikationsprotokoll zwischen dem Host 50 und dem Speichersystem 100 zu vereinfachen. Insbesondere kann die Steuereinrichtung 102 den Betriebsbereit/Belegt-Zustand jeder der Datenspeicherkacheln beobachten, da jede Datenspeicherkachel unabhängig betrieben werden kann. Da sich jedoch in einem Speichersystem Tausende von Datenspeicherkacheln befinden können, kann das Kommunizieren des Betriebsbereit/Belegt-Zustands von Tausenden von Datenspeicherkacheln an den Host 50 viel Bandbreite verbrauchen und die Leistungsfähigkeit beeinträchtigen. Also wird in einer Ausführungsform eine logische Kachelgruppe verwendet, um zwei oder mehr Kacheln logisch zusammen zu gruppieren. In diesem organisatorischen Rahmen wird eine gegebene Kachelgruppe als belegt betrachtet, wenn eine beliebige Kachel in der gegebenen Kachelgruppe belegt ist, und eine gegebene Kachelgruppe wird als betriebsbereit betrachtet, wenn alle Kacheln in der gegebenen Kachelgruppe betriebsbereit sind. Wiederum wird diese logische Abstraktion verwendet, um die Verwaltungsdaten beim Managen der Betriebsbereit/Belegt-Kennzeichen auf eine kleinere Gruppe als alle Datenspeicherkacheln zu verringern, jedoch bringt ein derartiger Nutzen den Nachteil mit sich, dass die betriebsbereiten Datenspeicherkacheln in einer Kachelgruppe, die als belegt betrachtet wird, nicht verwendet werden. Dieses Konzept ist in 4 veranschaulicht.
  • 4 zeigt die Situation, in der die Steuereinrichtung 102 einen Befehl zum Abnutzungsausgleich (oder zur Aktualisierung) sendet. Weil wiederholte Lese/Schreib-Vorgänge an eine Datenspeicherzelle/Datenspeicherkachel die Fähigkeit der Datenspeicherzelle/Datenspeicherkachel, Daten zuverlässig zu halten (Haltbarkeit), verringern kann, kann die Steuereinrichtung 102 einen Abnutzungsausgleichsalgorithmus implementieren, bei dem Daten im Datenspeicher 104 bewegt werden, um dabei zu unterstützen sicherzustellen, dass die diversen Kacheln im Datenspeicher 104 gleichmäßiger verwendet werden, als wenn kein Abnutzungsausgleichsalgorithmus verwendet würde. In 4 bewirkt der Abnutzungsausgleichsvorgang, dass Daten zwischen der Kachel 1 und der Kachel 11 bewegt werden, was bedeutet, dass sowohl die Kachel 1 als auch die Kachel 11 belegt sind (z. B. weil jede Kachel lediglich einen einzigen Leseverstärker aufweist, der durch diesen Vorgang belegt ist). Gemäß der Kachelgruppenabstraktion dieser Ausführungsform werden die Kachelgruppen A und C ebenfalls als belegt betrachtet (weil die Kachel 1 zur Kachelgruppe A gehört und die Kachel 11 zur Kachelgruppe C gehört), weil die Kachel 1 und die Kachel 11 belegt sind. Die ist wahr, selbst wenn andere Kacheln in diesen zwei Gruppen betriebsbereit sein können (wiederum, dies ist der „Preis“ für das Vereinfachen des Betriebsbereit/Belegt-Managements gemäß dieser Abstraktion). Das bedeutet, dass ein Lese/Schreib-Befehl vom Host 50, der entweder auf die Kachelgruppe A oder auf die Kachelgruppe C abgebildet wird, warten muss, bis der Tauschvorgang abgeschlossen ist und die Kachelgruppen A und C als betriebsbereit gekennzeichnet sind.
  • Dieses Problem, dass ein Befehl warten muss, bis die Kachelgruppe betriebsbereit ist, wird hier als „Befehlskollision“ bezeichnet. Der Host 50 kann versuchen, Befehle neu zu ordnen, um eine Kollision „zu umplanen“. Jedoch ist der Versuch eines Hosts, eine Kollision durch Planen von Befehlen zu vermeiden, möglicherweise nicht wirksam, insbesondere in Umgebungen, in denen der Host 50 keine Informationen über die physikalische Anordnung der Datenspeicherkacheln besitzt und einfach mit einem Lese/Schreib-Befehl eine logische Blockadresse an das Speichersystem 100 sendet. Die Steuereinrichtung 102 im Speichersystem 100 würde die logische Blockadresse vom Host 50 in eine physikalische Adresse einer Kachel oder eines Abschnitts davon übersetzen. Somit kann der Host 50 nicht genau wissen, welche Kachel frei ist oder nicht, da die Steuereinrichtung 102 die physikalische Kachelanordnung in der Anordnung durch das interne Abbilden von logisch auf physikalisch zum Abnutzungsausgleich oder zum Management schlechter Seiten verbirgt. Außerdem können zusätzliche Schreibbefehle zum Abnutzungsausgleich oder zur Aktualisierung der nicht flüchtigen Datenspeicherzellen (Lesen und Schreiben) von der Steuereinrichtung 102 ausgegeben werden. Somit können jeder Host-Befehl an die belegte Kachel, die die Steuereinrichtung 102 bedient, sowie vom Host ausgegebene Befehle verzögert werden. Es sei erwähnt, dass der Abnutzungsausgleich durch einen Schreibvorgang des Hosts oder einen Lesevorgangs des Hosts, der eine Lesestörung bewirkt, ausgelöst werden kann. Außerdem sind zusätzliche Hardwarebetriebsmittel wie etwa ein Schreibpuffer erforderlich, obwohl für NAND-Flash eine Schreibsperre vorgeschlagen wurde, und sind möglicherweise für bestimmte Typen von nicht flüchtigen Datenspeichern wie etwa PCM, RRAM und MRAM nicht möglich, da die gesperrten Schreibimpulse nicht garantieren können, dass die richtigen Daten geschrieben werden.
  • Die folgenden Ausführungsformen können verwendet werden, um das Befehlskollisionsproblem zu lösen und dadurch die Kachelverzögerungszeit eines Lese/Scheib-Befehls vom Host 50 zu verbessern. Im Allgemeinen ziehen diese Ausführungsformen einen Vorteil aus dem vereinfachten Management der Betriebsbereit/Belegt-Kennzeichen aus dem Verwenden logischer Kachelgruppierungen, um den Betriebsbereit/Belegt-Zustand jeder Kachelgruppe an den Host 50 zu melden. In einer Ausführungsform kann der Host 50 Lese/Schreib-Befehle lediglich an betriebsbereite Kachelgruppen zuteilen, derart, dass diese Befehle in der betriebsbereiten Kachelgruppe parallel ausgeführt werden können. Das heißt, durch Ausgeben von mehrfachen Lese/Schreib-Befehlen, die verschiedene Kachelgruppen-ID aufweisen, kann jeder Befehl von verschiedenen physikalischen Kachelgruppen zusammen bedient werden, was bei einem gegebenen Leistungsverbrauchsgrenzwert eine höhere Leistungsfähigkeit bereitstellt. Auf diese Weise kann der Host 50 die Schreib/Lese-Planung optimieren, indem keine weiteren Datenspeicherzugriffe auf die belegte Kachelgruppe angefordert werden. Eine Veranschaulichung dieser Ausführungsform wird nun in Verbindung mit dem Ablaufplan 500 in 5 und dem Blockdiagramm aus 6 dargestellt.
  • Wie in 5 und 6 gezeigt ist, informiert das Speichersystem 100 in einer Ausführungsform den Host 50 über den Belegt-Zustand der mehreren Kachelgruppen (Vorgang 510). Durch das Bereitstellen des Belegt-Zustands der Kachelgruppen kann das Speichersystem 100 bestätigend angeben, welche Kachelgruppen belegt sind und welche Kachelgruppen betriebsbereit (nicht belegt) sind, oder das Speichersystem 100 kann einfach angeben, welche Kachelgruppen belegt sind, wobei der Host 50 ableitet, dass die Kachelgruppen, die nicht als belegt angegeben werden, betriebsbereit sind. Das Speichersystem 100 kann den Host 50 über den Belegt-Zustand der mehreren Kachelgruppen auf jede geeignete Weise informieren. Zum Beispiel kann das Speichersystem 100 den Host 50 über den Belegt-Zustand informieren, indem der Zustand zum Lesen für den Host 50 im Speichersystem 100 gespeichert wird. Alternativ kann das Speichersystem 100 die Belegt-Informationen auf eine Weise (z. B. periodisch, als Antwort auf das Empfangen einer spezifischen Anforderung der Informationen, nach dem Empfangen eines Datenspeicher-Zugriffsbefehls, um dem Host 50 die Gelegenheit zu geben, diesen neu zu planen, usw.) an den Host 50 senden.
  • In einer Ausführungsform schreibt das Speichersystem 100 (z. B. die Steuereinrichtung 102, das Modul 111 zur Vermeidung von Befehlskollisionen oder eine andere Komponente) ein Betriebsbereit/Belegt-Kennzeichen für jede Kachelgruppe in ein oder mehrere durch den Host lesbare Register im Speichersystem 100. Der Host 50 kann zu jeder geeigneten Zeit (z. B. während der Inbetriebnahme, während einer Leerlaufzeit, jedes Mal, wenn auf den Datenspeicher 104 zugegriffen werden soll, usw.) auf das (die) Register zugreifen bzw. dieses (diese) abfragen. Indem sie in einem Register vorliegen, kann der Host 50 schneller auf die Informationen zugreifen, als wenn sie im nicht flüchtigen Datenspeicher 104 gespeichert wären, unter der Annahme, dass die Zugriffszeit auf das Register kürzer als die Zugriffszeit auf den nicht flüchtigen Datenspeicher 104 ist. Selbstverständlich können die Informationen stattdessen im nicht flüchtigen Datenspeicher 104 oder in einer anderen Komponente im Speichersystem 100 gespeichert sein.
  • Mit den Informationen über den Belegt-Zustand der Kachelgruppen wird der Host 50 wissen, welche Kachelgruppen belegt sind und welche Kachelgruppen frei sind, und kann mehrere Datenspeicher-Zugriffsbefehle an Kachelgruppen planen, die frei sind. In einer Ausführungsform enthält der Host 50 eine Tabelle oder eine andere Datenstruktur, die logische Blockadressen (LBA) zu Kachelgruppen/Datenspeicher-Unteranordnungsgruppen-ID in Beziehung setzt. Mit einer derartigen Datenstruktur kann der Host 50 angesichts der Betriebsbereit/Belegt-Informationen, die er aus dem Speichersystem 100 erhält, wissen, welche Kachelgruppen-ID für eine bestimmte LBA in einer Datenspeicher-Zugriffsanforderung einzuschließen ist. Auf diese Weise kann der Host 50 eine logische Kachelgruppen-ID ausgeben, die die Steuereinrichtung 102 auf eine logische Kachelgruppe (z. B. die Kachelgruppe A, B, C oder D) abbildet.
  • Durch Planen mehrerer Datenspeicher-Zugriffsbefehle an Kachelgruppen, die frei sind, können die Befehle sofort ausgeführt werden (im Gegensatz zum Senden eines Befehls an eine Kachelgruppe, die belegt ist, wobei der Befehl lediglich ausgeführt würde, nachdem laufende Befehle an diese Kachelgruppe abgeschlossen sind). Dieser Vorteil wird in den Grafiken in 7 und 8 gezeigt. 7 zeigt die Situation, in der das Verfahren zur Vermeidung von Befehlskollisionen dieser Ausführungsform nicht verwendet wird. In diesem Beispiel sendet der Host 50 einen Schreibbefehl, gefolgt von einem Lesebefehl. Es ergibt sich, dass diese zwei Befehle auf dieselbe Kachelgruppe (Kachelgruppe C in diesem Beispiel) abgebildet werden. Somit muss der Lesebefehl an die Kachelgruppe C warten, bis der Schreibbefehl an die Kachelgruppe C abgeschlossen ist, wenn auf dieselbe Kachel zugegriffen wird. Währenddessen ist die Kachelgruppe A frei und somit ein verschwendetes Betriebsmittel.
  • 8 zeigt die Situation, in der das Verfahren zur Vermeidung von Befehlskollisionen dieser Ausführungsform verwendet wird. In diesem Beispiel weiß der Host 50, dass sowohl die Kachelgruppe A als auch die Kachelgruppe C frei sind (aus den Betriebsbereit/Belegt-Kennzeichen), derart, dass der Host 50 den Schreibbefehl mit einer Kennung für die Kachelgruppe C und den Lesebefehl mit der Kennung für die Kachelgruppe A sendet. Dies ist in Vorgang 520 in 5 gezeigt (der Host 50 sendet mehrere Lese/Schreib-Befehle, jeweils mit einer anderen Kachelgruppenkennung einer Kachelgruppe, die nicht belegt ist). Als Antwort darauf führt das Speichersystem 100 (z. B. die Steuereinrichtung 102) den Lesebefehl in der Kachelgruppe A parallel zu dem Schreibbefehl in der Kachelgruppe C aus (Vorgang 530 in 5). Wie durch Vergleichen von 7 und 8 gezeigt wird, werden mit dem Verfahren zur Vermeidung von Befehlskollisionen dieser Ausführungsform beide Kachelgruppen A und C genutzt, und beim Ausführen des Lesebefehls tritt keine Verzögerung auf. Dies stellt eine wirksamere Verwendung der Datenspeicher-Betriebsmittel sicher und vermeidet die Verzögerung bei der Befehlsausführung.
  • Es gibt viele Alternativen, die mit diesen Ausführungsformen verwendet werden können. Zum Beispiel zieht eine alternative Ausführungsform einen Vorteil aus der Tatsache, dass auf die Kacheln innerhalb einer Kachelgruppe gleichzeitig zugegriffen werden kann. Wie oben erklärt ist, ist das Konzept, dass eine gesamte Kachelgruppe selbst dann als belegt betrachtet wird, wenn eine Kachel in der Gruppe belegt ist, eine Annehmlichkeit, um die Bandbreite und die Betriebsmittel zu vermeiden, die benötigt werden, um den Betriebsbereit/Belegt-Zustand aller Kacheln an den Host 50 zu melden. Jedoch wird die Steuereinrichtung 102 des Speichersystems 100 wissen, auf welche Kacheln sie zugreift. Somit wird die Steuereinrichtung 102 wissen, auf welche Kachel in der Gruppe für den Host-Befehl zugegriffen wird und welche Kacheln in der Gruppe frei sind, wenn durch den Host 50 eine gegebene Kachelgruppe für einen Befehl zugewiesen wird. Die Steuereinrichtung 102 kann daraufhin in den Kacheln in der Gruppe, die frei sind, Hintergrundvorgänge durchführen. Dieses Konzept ist in dem Beispiel gezeigt, das in 9 dargestellt ist. In 9 sendet der Host 50 Lese/Schreib-Befehle an die Kachelgruppen A-D, die alle betriebsbereit sind, und die Steuereinrichtung 102 führt diese Befehle jeweils in den Kacheln 3, 4, 8 und 13 aus. Die Steuereinrichtung 102 weiß, dass die anderen Kacheln in jeder dieser Gruppen für Hintergrundvorgänge frei sind. Somit kann die Steuereinrichtung 102 auf der Basis der Befehlshistorie innerhalb einer Kachelgruppe Hintergrundbefehle an Kacheln ausgeben, die dieselbe Kachelgruppen-ID wie jene eines vorhergehenden Befehls vom Host 50 aufweisen. In diesem Beispiel tauscht die Steuereinrichtung 102 für einen Hintergrund-Abnutzungsausgleichsvorgang die Daten in zwei freien Kacheln in jeder Gruppe (hier Kacheln 0 und 1 (Kachelgruppe A) bzw. Kacheln 6 und 7 (Kachelgruppe B) bzw. Kacheln 9 und 10 (Kachelgruppe C) bzw. Kacheln 12 und 15 (Kachelgruppe D)).
  • In einer weiteren Alternative können einige oder alle der Kachelgruppen im Datenspeicher 104 verschiedene Datenspeichertypen aufweisen (z. B. kann die Kachelgruppe A einstufige Zellen (SLC) aufweisen, die Kachelgruppe B kann mehrstufige Zellen (MLC) aufweisen, die Kachelgruppen C und D können dreistufige Zellen (TLC) aufweisen). Mit einer derartigen Hybrid-Konfiguration kann der Host 50 bestimmen, welche Kachelgruppe für einen gegebenen Lese/Schreib-Befehl geeignet ist. Zum Beispiel kann der Host 50 die TLC-Kachelgruppe für kalte Daten (d. h. Daten mit einer relativ niedrigen, erwarteten Zugriffshäufigkeit) verwenden und die SLC-Kachelgruppe für heiße Daten (d. h. Daten mit einer relativ hohen, erwarteten Zugriffshäufigkeit) verwenden. Als ein weiteres Beispiel kann der Host 50 den Kachelgruppen mit einer höheren Zuverlässigkeit mehr Schreib/Lese-Vorgänge zuweisen, was nützlich sein kann, wenn der Host 50 für das übergreifende Abnutzungsmanagement des Datenspeichers 104 verantwortlich ist.
  • In einer nochmals weiteren Ausführungsform kann der Host 50 auf der Basis einer Historie der Lese/Schreib-Befehle, die mit einer bestimmten Kachelgruppen-ID gesendet werden, einen Lese/Schreib-Befehl zusammen mit der bestimmten Kachelgruppen-ID senden. Wenn der Host 50 z. B. weiß, dass auf eine bestimmte Kachelgruppe häufig zugegriffen wurde, kann er annehmen, dass das Speichersystem 100 in jener Kachelgruppe bald einen Abnutzungsausgleichsvorgang durchführen muss. Derart kann der Host 50 das Planen eines Datenspeicher-Zugriffsvorgangs auf diese Kachelgruppe vermeiden, selbst wenn angenommen wird, dass die Kachelgruppe betriebsbereit/nicht belegt ist.
  • Schließlich kann, wie oben erwähnt, jeder geeignete Datenspeichertyp verwendet werden. Halbleiter-Datenspeichervorrichtungen enthalten flüchtige Datenspeichervorrichtungen wie etwa dynamische Schreib/Lesespeicher-Vorrichtungen („DRAM“-Vorrichtungen) oder statische Schreib/Lesespeicher-Vorrichtungen („SRAM“-Vorrichtungen), nicht flüchtige Datenspeichervorrichtungen wie etwa Widerstands-Schreib/Lesespeicher („ReRAM“), elektrisch löschbare programmierbare Festwertspeicher („EEPROM“), Flash-Datenspeicher (die auch als eine Untermenge der EEPROM betrachtet werden können), ferroelektrische Schreib/Lesespeicher („FRAM“) und magnetoresistive Schreib/Lesespeicher („MRAM“) und andere Halbleiterelemente, die Informationen speichern können. Jeder Datenspeichervorrichtungstyp kann verschiedene Konfigurationen aufweisen. Zum Beispiel können Flash-Datenspeichervorrichtungen in einer NAND-Konfiguration oder in einer NOR-Konfiguration konfiguriert sein.
  • Die Datenspeichervorrichtungen können aus passiven und/oder aktiven Elementen in beliebigen Kombinationen gebildet sein. Als nicht einschränkendes Beispiel enthalten passive Halbleiter-Datenspeicherelemente ReRAM-Vorrichtungselemente, die in einigen Ausführungsformen ein Widerstands-Schaltspeicherelement wie etwa eine Antisicherung, ein Phasenwechselmaterial usw. und wahlweise ein Lenkungselement wie etwa eine Diode usw. enthalten. Ferner enthalten aktive Halbleiter-Datenspeicherelemente als nicht einschränkendes Beispiel EEPROM und Flash-Datenspeichervorrichtungselemente, die in einigen Ausführungsformen Elemente enthalten, die einen Ladungsspeicherbereich wie etwa ein massefreies Gate, leitfähige Nanopartikel oder ein dielektrisches Ladungsspeichermaterial enthalten.
  • Mehrere Datenspeicherelemente können derart konfiguriert sein, dass sie in Reihe verbunden sind oder derart, dass auf jedes Element einzeln zugegriffen werden kann. Als nicht einschränkendes Beispiel enthalten Flash-Datenspeichervorrichtungen in einer NAND-Konfiguration (NAND-Datenspeicher) üblicherweise Datenspeicherelemente, die in Reihe verbunden sind. Eine NAND-Datenspeicheranordnung kann derart konfiguriert sein, dass die Anordnung aus mehreren Datenspeichersträngen zusammengesetzt ist, wobei ein Strang aus mehreren Datenspeicherelementen zusammengesetzt ist, die eine einzige Bitleitung gemeinsam verwenden und auf die als Gruppe zugegriffen wird. Alternativ können die Datenspeicherelemente derart konfiguriert sein, dass auf jedes Element einzeln zugegriffen werden kann, z. B. eine NOR-Datenspeicheranordnung. NAND- und NOR-Datenspeicherkonfigurationen sind Beispiele, und Datenspeicherelemente können auf andere Weise konfiguriert sein.
  • Die Halbleiter-Datenspeicherelemente, die in und/oder über einem Substrat angeordnet sind, können in zwei oder drei Dimensionen angeordnet sein, wie etwa eine zweidimensionale Datenspeicherstruktur oder eine dreidimensionale Datenspeicherstruktur.
  • In einer zweidimensionalen Datenspeicherstruktur sind die Halbleiter-Datenspeicherelemente in einer einzigen Ebene oder einer einzigen Datenspeichervorrichtungsstufe angeordnet. Üblicherweise sind die Datenspeicherelemente in einer zweidimensionalen Datenspeicherstruktur in einer Ebene (z. B. in einer Ebene in der x-z-Richtung) angeordnet, die sich im Wesentlichen parallel zu einer Hauptoberfläche eines Substrats erstreckt, das die Datenspeicherelemente trägt. Das Substrat kann ein Wafer sein, über oder in dem die Schicht der Datenspeicherelemente gebildet ist, oder es kann ein Trägersubstrat sein, das an den Datenspeicherelementen befestigt wird, nachdem sie gebildet wurden. Als ein nicht einschränkendes Beispiel kann das Substrat einen Halbleiter wie etwa Silizium enthalten.
  • Die Datenspeicherelemente können in der einzigen Datenspeichervorrichtungsstufe in einer geordneten Anordnung wie etwa in mehreren Reihen und/oder Spalten angeordnet sein. Jedoch können die Datenspeicherelemente in unregelmäßigen oder in nicht orthogonalen Konfigurationen angeordnet sein. Die Datenspeicherelemente können jeweils zwei oder mehr Elektroden oder Kontaktleitungen wie etwa Bitleitungen und Wortleitungen aufweisen.
  • Eine dreidimensionale Datenspeicheranordnung ist derart angeordnet, dass die Datenspeicherelemente mehrere Ebenen oder mehrere Datenspeichervorrichtungsstufen belegen, wodurch eine Struktur in drei Dimensionen gebildet wird (d. h. in der x-, y- und z-Richtung, wobei die y-Richtung im Wesentlichen zur Hauptoberfläche des Substrats senkrecht ist und die x- und die z-Richtung im Wesentlichen dazu parallel sind).
  • Als ein nicht einschränkendes Beispiel kann eine dreidimensionale Datenspeicherstruktur in Form eines Stapels mehrerer zweidimensionaler Datenspeichervorrichtungsstufen vertikal angeordnet sein. Als ein weiteres nicht einschränkendes Beispiel kann eine dreidimensionale Datenspeicheranordnung in Form von mehreren vertikalen Spalten (z. B. Spalten, die sich im Wesentlichen zur Hauptoberfläche des Substrats senkrecht, d. h. in der y-Richtung, erstrecken) angeordnet sein, wobei jede Spalte mehrere Datenspeicherelemente in jeder Spalte aufweist. Die Spalten können in einer zweidimensionalen Konfiguration, z. B. in einer x-z-Ebene, angeordnet sein, was eine dreidimensionale Anordnung von Datenspeicherelementen mit Elementen auf mehreren vertikal gestapelten Datenspeicherebenen ergibt. Andere Konfigurationen von Datenspeicherelementen in drei Dimensionen können ebenso eine dreidimensionale Datenspeicheranordnung bilden.
  • Als nicht einschränkendes Beispiel können die Datenspeicherelemente in einer dreidimensionalen NAND-Datenspeicheranordnung derart miteinander gekoppelt sein, dass sie einen NAND-Strang innerhalb einer einzelnen horizontalen (z. B. x-z) Datenspeichervorrichtungsstufe bilden. Alternativ können die Datenspeicherelemente derart miteinander gekoppelt sein, dass sie einen vertikalen NAND-Strang bilden, der sich quer über mehrere horizontale Datenspeichervorrichtungsstufen erstreckt. Andere dreidimensionale Konfigurationen sind vorstellbar, wobei einige NAND-Stränge Datenspeicherelemente in einer einzelnen Datenspeicherstufe enthalten, während andere Stränge Datenspeicherelemente enthalten, die sich durch mehrere Datenspeicherstufen erstrecken. Dreidimensionale Datenspeicheranordnungen können außerdem in einer NOR-Konfiguration und in einer ReRAM-Konfiguration konstruiert sein.
  • Üblicherweise sind in einer monolithischen, dreidimensionalen Datenspeicheranordnung eine oder mehrere Datenspeichervorrichtungsstufen über einem einzigen Substrat gebildet. Wahlweise kann die monolithische, dreidimensionale Datenspeicheranordnung außerdem eine oder mehrere Datenspeicherschichten zumindest teilweise innerhalb des einzigen Substrats aufweisen. Als ein nicht einschränkendes Beispiel kann das Substrat einen Halbleiter wie etwa Silizium enthalten. In einer monolithischen, dreidimensionalen Anordnung sind die Schichten, die jede Datenspeichervorrichtungsstufe der Anordnung bilden, üblicherweise auf den Schichten der darunterliegenden Datenspeichervorrichtungsstufen der Anordnung gebildet. Jedoch können die Schichten benachbarter Datenspeichervorrichtungsstufen einer monolithischen, dreidimensionalen Datenspeicheranordnung gemeinsam verwendet werden oder dazwischenliegende Schichten zwischen den Datenspeichervorrichtungsstufen aufweisen.
  • Dann wiederum können zweidimensionale Anordnungen getrennt gebildet und anschließend zusammengepackt werden, um eine nicht monolithische Datenspeichervorrichtung zu bilden, die mehrere Datenspeicherschichten aufweist. Zum Beispiel können nicht monolithische, gestapelte Datenspeicher durch Bilden von Datenspeicherstufen auf getrennten Substraten und anschließendes Stapeln der Datenspeicherstufen aufeinander aufgebaut werden. Die Substrate können vor dem Stapeln ausgedünnt oder aus den Datenspeichervorrichtungsstufen entfernt werden, jedoch sind die resultierenden Datenspeicheranordnungen keine monolithischen, dreidimensionalen Datenspeicheranordnungen, da die Datenspeichervorrichtungsstufen ursprünglich über getrennten Substraten gebildet wurden. Ferner können mehrere zweidimensionale Datenspeicheranordnungen oder dreidimensionale Datenspeicheranordnungen (monolithisch oder nicht monolithisch) auf getrennten Chips gebildet und anschließend zusammengepackt werden, um eine Datenspeichervorrichtung aus gestapelten Chips zu bilden.
  • Üblicherweise ist für den Betrieb der Datenspeicherelemente und zur Kommunikation mit den Datenspeicherelementen eine zugeordnete Schaltungsanordnung erforderlich. Als nicht einschränkende Beispiele können Datenspeichervorrichtungen eine Schaltungsanordnung aufweisen, die zum Steuern und Ansteuern der Datenspeicherelemente, um Funktionen wie etwa Programmieren und Lesen auszuführen, verwendet wird. Diese zugeordnete Schaltungsanordnung kann sich auf demselben Substrat wie die Datenspeicherelemente und/oder auf einem getrennten Substrat befinden. Zum Beispiel kann eine Steuereinrichtung für Datenspeicher-Lese/Schreib-Vorgänge auf einem getrennten Steuereinrichtungschip und/oder auf demselben Substrat wie die Datenspeicherelemente angeordnet sein.
  • Ein Fachmann auf dem Gebiet wird erkennen, dass diese Erfindung nicht auf die beschriebenen, zweidimensionalen und dreidimensionalen Strukturen eingeschränkt ist, sondern alle relevanten Datenspeicherstrukturen innerhalb des Erfindungsgedankens und des Umfangs der Erfindung wie hier beschrieben und wie von einem Fachmann auf dem Gebiet verstanden abdeckt.
  • Es ist beabsichtigt, dass die voranstehende genaue Beschreibung als eine Veranschaulichung ausgewählter Formen, die die Erfindung annehmen kann, verstanden wird, und nicht als eine Definition der Erfindung. Es sind einzig die folgenden Ansprüche, einschließlich aller Äquivalente, die dafür gedacht sind, den Umfang der beanspruchten Erfindung zu definieren. Schließlich sei erwähnt, dass jeder Aspekt jeder der hier beschriebenen Ausführungsformen alleinstehend oder in Kombination miteinander verwendet werden kann.

Claims (20)

  1. Speichersystem, das Folgendes enthält: einen Datenspeicher, der mehrere Datenspeicherkacheln enthält, die in mehrere Kachelgruppen gegliedert sind, wobei eine gegebene Kachelgruppe dann belegt ist, wenn eine beliebige Kachel in der gegebenen Kachelgruppe belegt ist; und eine Steuereinrichtung in Verbindung mit dem Datenspeicher und mit einem Host, wobei die Steuereinrichtung konfiguriert ist: den Host über den Belegt-Zustand der mehreren Kachelgruppen zu informieren; vom Host mehrere Befehle zu empfangen, wobei jeder Befehl mit einer anderen Kachelgruppenkennung einer Kachelgruppe, die nicht belegt ist, bereitgestellt wird; und die mehreren Befehle auszuführen, wobei die mehreren Befehle parallel ausgeführt werden, weil jeder Befehl eine andere Kachelgruppenkennung einer Kachelgruppe, die nicht belegt ist, enthält.
  2. Speichersystem nach Anspruch 1, wobei die Steuereinrichtung konfiguriert ist, den Host über den Belegt-Zustand der mehreren Kachelgruppen zu informieren, indem ein Betriebsbereit/Belegt-Kennzeichen für jede Kachelgruppe in ein oder mehrere durch den Host lesbare Register im Speichersystem geschrieben werden.
  3. Speichersystem nach Anspruch 1, wobei das Ausführen der mehreren Befehle einige, jedoch nicht alle Kacheln in mindestens einer Kachelgruppe als belegt wiedergibt und wobei die Steuereinrichtung ferner konfiguriert ist, in mindestens einer der Kacheln in der mindestens einen Kachelgruppe, die nicht belegt ist, einen Hintergrundvorgang durchzuführen.
  4. Speichersystem nach Anspruch 1, wobei der Datenspeicher einen dreidimensionalen Datenspeicher enthält.
  5. Speichersystem nach Anspruch 1, wobei das Speichersystem im Host eingebettet ist.
  6. Speichersystem nach Anspruch 1, wobei das Speichersystem mit dem Host abnehmbar verbunden ist.
  7. Verfahren zur Vermeidung von Befehlskollisionen, wobei das Verfahren Folgendes umfasst: Empfangen von Betriebsbereit/Nicht-Betriebsbereit-Informationen von mehreren Datenspeicher-Unteranordnungsgruppen in einem Speichersystem, wobei jede Datenspeicher-Unteranordnungsgruppe mehrere Datenspeicher-Unteranordnungen enthält und wobei eine gegebene Datenspeicher-Unteranordnungsgruppe nicht betriebsbereit ist, wenn mindestens eine Datenspeicher-Unteranordnung in der gegebenen Datenspeicher-Unteranordnungsgruppe nicht betriebsbereit ist; und Senden von mehreren Datenspeicher-Zugriffsbefehlen an das Speichersystem, wobei jeder Datenspeicher-Zugriffsbefehl zusammen mit einer anderen Datenspeicher-Unteranordnungsgruppen-ID einer Datenspeicher-Unteranordnungsgruppe, die betriebsbereit ist, gesendet wird.
  8. Verfahren nach Anspruch 7, wobei das Empfangen der Betriebsbereit/Nicht-Betriebsbereit-Informationen das Lesen der Betriebsbereit/Nicht-Betriebsbereit-Informationen aus mindestens einem Register im Speichersystem umfasst.
  9. Verfahren nach Anspruch 7, das ferner das Bestimmen, welche Datenspeicher-Unteranordnungsgruppen-ID zusammen mit einem gegebenen Datenspeicher-Zugriffsbefehl gesendet werden soll, unter Verwendung einer Datenstruktur, die logische Blockadressen Datenspeicher-Unteranordnungsgruppen-ID zuordnet, umfasst.
  10. Verfahren nach Anspruch 7, das ferner das Bestimmen, ob ein Datenspeicher-Zugriffsbefehl an eine bestimmte Datenspeicher-Unteranordnungsgruppen-ID gesendet werden soll, auf der Basis einer Historie der Datenspeicher-Zugriffsbefehle, die an die bestimmte Datenspeicher-Unteranordnungsgruppen-ID gesendet wurden, umfasst.
  11. Verfahren nach Anspruch 7, wobei mindestens zwei Datenspeicher-Unteranordnungsgruppen voneinander verschiedene Datenspeichertypen aufweisen und wobei das Verfahren ferner das Bestimmen, welche Datenspeicher-Unteranordnungsgruppen-ID zusammen mit einem gegebenen Datenspeicher-Zugriffsbefehl gesendet werden soll, auf der Basis des Datenspeichertyps, der für den gegebenen Datenspeicher-Zugriffsbefehl geeignet ist, umfasst.
  12. Verfahren nach Anspruch 11, wobei ein Datenspeichertyp eine höhere Zuverlässigkeit als ein weiterer, anderer Datenspeichertyp aufweist.
  13. Verfahren nach Anspruch 7, wobei mindestens eine der mehreren Datenspeicher-Unteranordnungsgruppen einen dreidimensionalen Datenspeicher enthält.
  14. Verfahren nach Anspruch 7, wobei das Empfangen und das Senden durch einen Host in Verbindung mit dem Speichersystem durchgeführt werden.
  15. Verfahren nach Anspruch 14, wobei das Speichersystem in den Host eingebettet ist.
  16. Verfahren nach Anspruch 14, wobei das Speichersystem mit dem Host abnehmbar verbunden ist.
  17. Speichersystem, das Folgendes enthält: einen Datenspeicher; Mittel zum Bereitstellen von Betriebsbereit/Belegt-Informationen mehrerer Kachelgruppen im Datenspeicher an einen Host; Mittel zum Empfangen von mehreren Befehlen vom Host, wobei jeder Befehl einer eindeutigen Kachelgruppenkennung einer Kachelgruppe, die nicht belegt ist, zugeordnet ist; und Mittel zum parallelen Ausführen der mehreren Befehle.
  18. Speichersystem nach Anspruch 17, wobei mindestens eine der mehreren Kachelgruppen einen dreidimensionalen Datenspeicher enthält.
  19. Speichersystem nach Anspruch 17, wobei das Speichersystem in einem Host eingebettet ist.
  20. Speichersystem nach Anspruch 17, wobei das Speichersystem mit einem Host abnehmbar verbunden ist.
DE102018105871.3A 2017-05-09 2018-03-14 Speichersystem und Verfahren zur Vermeidung von Befehlskollisionen in nicht flüchtigen Datenspeichern mit expliziter Kachelgruppierung Withdrawn DE102018105871A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/590,789 2017-05-09
US15/590,789 US20180329815A1 (en) 2017-05-09 2017-05-09 Storage system and method for non-volatile memory command collision avoidance with explicit tile grouping

Publications (1)

Publication Number Publication Date
DE102018105871A1 true DE102018105871A1 (de) 2018-11-15

Family

ID=63962459

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102018105871.3A Withdrawn DE102018105871A1 (de) 2017-05-09 2018-03-14 Speichersystem und Verfahren zur Vermeidung von Befehlskollisionen in nicht flüchtigen Datenspeichern mit expliziter Kachelgruppierung

Country Status (3)

Country Link
US (1) US20180329815A1 (de)
CN (1) CN108874303B (de)
DE (1) DE102018105871A1 (de)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11126550B1 (en) * 2017-09-01 2021-09-21 Crossbar, Inc Integrating a resistive memory system into a multicore CPU die to achieve massive memory parallelism
US11099778B2 (en) * 2018-08-08 2021-08-24 Micron Technology, Inc. Controller command scheduling in a memory system to increase command bus utilization
US10606775B1 (en) 2018-12-28 2020-03-31 Micron Technology, Inc. Computing tile
US11194473B1 (en) * 2019-01-23 2021-12-07 Pure Storage, Inc. Programming frequently read data to low latency portions of a solid-state storage array
KR20200109682A (ko) * 2019-03-14 2020-09-23 에스케이하이닉스 주식회사 메모리 시스템, 메모리 장치 및 그 동작 방법
US20210064368A1 (en) * 2019-08-28 2021-03-04 Micron Technology, Inc. Command tracking
US11474885B2 (en) * 2020-04-07 2022-10-18 Micron Technology, Inc. Method for an internal command of a first processing core with memory sub-system that caching identifiers for access commands
CN111562888B (zh) * 2020-05-14 2023-06-23 上海兆芯集成电路有限公司 存储器自更新的调度方法
CN111459850B (zh) * 2020-05-18 2023-08-15 北京时代全芯存储技术股份有限公司 记忆体装置以及运作方法
US11822793B2 (en) * 2022-04-04 2023-11-21 Western Digital Technologies, Inc. Complete and fast protection against CID conflict

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7657699B2 (en) * 2005-11-09 2010-02-02 Sandisk Il Ltd. Device and method for monitoring operation of a flash memory
CN101512496A (zh) * 2005-11-09 2009-08-19 晟蝶以色列有限公司 用于监控闪存操作的设备和方法
US8074021B1 (en) * 2008-03-27 2011-12-06 Netapp, Inc. Network storage system including non-volatile solid-state memory controlled by external data layout engine
KR20130028349A (ko) * 2011-09-09 2013-03-19 삼성전자주식회사 메모리 장치, 메모리 시스템 및 그 데이터 저장 방법
JP6208997B2 (ja) * 2012-07-12 2017-10-04 本田技研工業株式会社 燃料電池
EP3176688B1 (de) * 2012-12-31 2022-01-26 SanDisk Technologies LLC Verfahren und system für asynchrone chipoperationen in einem nichtflüchtigen speicher
US9335952B2 (en) * 2013-03-01 2016-05-10 Ocz Storage Solutions, Inc. System and method for polling the status of memory devices
US9218283B2 (en) * 2013-12-02 2015-12-22 Sandisk Technologies Inc. Multi-die write management
US10146448B2 (en) * 2014-05-30 2018-12-04 Sandisk Technologies Llc Using history of I/O sequences to trigger cached read ahead in a non-volatile storage device
US9703491B2 (en) * 2014-05-30 2017-07-11 Sandisk Technologies Llc Using history of unaligned writes to cache data and avoid read-modify-writes in a non-volatile storage device
US20160162215A1 (en) * 2014-12-08 2016-06-09 Sandisk Technologies Inc. Meta plane operations for a storage device
US9921763B1 (en) * 2015-06-25 2018-03-20 Crossbar, Inc. Multi-bank non-volatile memory apparatus with high-speed bus
US9626312B2 (en) * 2015-07-17 2017-04-18 Sandisk Technologies Llc Storage region mapping for a data storage device
CN106610790B (zh) * 2015-10-26 2020-01-03 华为技术有限公司 一种重复数据删除方法及装置

Also Published As

Publication number Publication date
CN108874303A (zh) 2018-11-23
CN108874303B (zh) 2022-03-01
US20180329815A1 (en) 2018-11-15

Similar Documents

Publication Publication Date Title
DE102018105871A1 (de) Speichersystem und Verfahren zur Vermeidung von Befehlskollisionen in nicht flüchtigen Datenspeichern mit expliziter Kachelgruppierung
DE102017112013B4 (de) Adaptive Temperatur- und Speicherparameterdrosselung
DE112018000180T5 (de) System und verfahren zum adaptiven senden frühzeitiger beendigung unter verwendung eines steuerungsspeicherpuffers
US9530491B1 (en) System and method for direct write to MLC memory
DE102017128939A1 (de) System und Verfahren zum dynamischen und adaptiven Zusammenführen von Interrupts
DE112018000834T5 (de) System und verfahren zur adaptiven befehlsabruf-aggregation
DE112017005887T5 (de) Speichersystem und Verfahren zur thermischen Drosselung über eine Befehlsarbitrierung
DE112018000228T5 (de) System und Verfahren zur Verarbeitung und Arbitrierung von Übermittlungs- und Beendigungswarteschlangen
DE112018000181T5 (de) System und verfahren für die schnelle ausführung von kapselinternen befehlen
DE102018123891A1 (de) Handhabung nichtabgestimmter Schreibvorgänge
DE112015004536T5 (de) Hardware-Automatisierung für Speicherverwaltung
DE112017005955T5 (de) Speichersystem und verfahren zur schlanken speicherzuweisung
DE112019005369T5 (de) Verfahren zum umschalten zwischen herkömmlicher ssd und open-channel-ssd ohne datenverlust
DE112016004148T5 (de) Systeme und Verfahren zur Befehlsautorisierung
DE112018000230T5 (de) System und Verfahren zur spekulativen Befehlsausführung unter Verwendung des Steuerungsspeicherpuffers
DE112015005102T5 (de) Systeme und verfahren zum erzeugen von einem hostbefehl zugeordneten hinweisinformationen
US9582435B2 (en) Memory system and method for efficient padding of memory pages
DE112019000147T5 (de) Partielle rücksetzung einer speichersteuerung
US9431120B1 (en) Memory die and method for efficient use of data latches in serving mixed traffic loads
DE112016000696B4 (de) Ablaufplanungsschema(ta) für eine Mehrchip-Speichervorrichtung
US10095412B2 (en) Memory system and method for improving write performance in a multi-die environment
DE112018004252T5 (de) Redundanzcodierstreifen auf der basis eines koordinierten internen adressschemas über mehrere vorrichtungen
US10713157B2 (en) Storage system and method for improving read performance using multiple copies of a logical-to-physical address table
DE102016204283A1 (de) Datenspeichervorrichtungen, Datenverarbeitungssysteme, die diese aufweisen, Verfahren zum Betreiben und Verfahren zum Herstellen derselben.
DE102017120971A1 (de) Pipelineverzögerungsdetektion während des Decodierens durch eine Datenspeichereinrichtung

Legal Events

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

Representative=s name: DEHNSGERMANY PARTNERSCHAFT VON PATENTANWAELTEN, DE

R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee