DE112019000147T5 - Partielle rücksetzung einer speichersteuerung - Google Patents

Partielle rücksetzung einer speichersteuerung Download PDF

Info

Publication number
DE112019000147T5
DE112019000147T5 DE112019000147.7T DE112019000147T DE112019000147T5 DE 112019000147 T5 DE112019000147 T5 DE 112019000147T5 DE 112019000147 T DE112019000147 T DE 112019000147T DE 112019000147 T5 DE112019000147 T5 DE 112019000147T5
Authority
DE
Germany
Prior art keywords
memory
queues
host
queue
memory controller
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
DE112019000147.7T
Other languages
English (en)
Inventor
Anindya Rai
Jameer Babasaheb Mulani
Devanathan Balasundaram
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 DE112019000147T5 publication Critical patent/DE112019000147T5/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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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
    • 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/061Improving I/O performance
    • 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/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]

Landscapes

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

Abstract

Technologie stellt wie hierin beschrieben eine partielle Rücksetzung einer nichtflüchtigen Speichersteuerung bereit. In einem Gesichtspunkt behält eine nichtflüchtige Speichersteuerung Speicheradressen von E/A-Warteschlangen über eine partielle Rücksetzung der nichtflüchtigen Speichersteuerung. Die nichtflüchtige Speichersteuerung kann auch eine Datenzuordnung zwischen jeder E/A-Übermittlungswarteschlange und einer zugehörigen E/A-Abschlusswarteschlange über die partielle Rücksetzung hinweg behalten. Das Fortbestehen der Adressen der E/A-Warteschlangen und/oder Datenzuordnungen ermöglicht einem Host-System und einer nichtflüchtigen Speichersteuerung, dass ein langwieriger Prozess zum Teilen der Adressen der E/A-Warteschlangen und/oder Datenzuordnungen nicht unbedingt durchgeführt werden muss.

Description

  • HINTERGRUND
  • Die vorliegende Offenbarung bezieht sich auf eine Technologie für nichtflüchtigen Speicher.
  • Ein Typ eines nichtflüchtigen Speichers ist ein Halbleiterspeicher. Zum Beispiel werden nichtflüchtige Halbleiterspeicher in Festkörperlaufwerken, mobilen Rechenvorrichtungen, nicht mobilen Rechenvorrichtungen und anderen nichtflüchtigen Speichervorrichtungen verwendet. In der Regel weist eine nichtflüchtige Speichervorrichtung eine Speichersteuerung auf, die den Zugriff eines Host-Systems auf einen nichtflüchtigen Speicher (auch als nichtflüchtiger Speicher bezeichnet) in der nichtflüchtigen Speichervorrichtung steuert. Das Host-System könnte ein Computersystem, ein Mobiltelefon, ein Server usw. sein.
  • Das Host-System und die Speichersteuerung kommunizieren in der Regel unter Verwendung einer logischen Vorrichtungsschnittstelle, die hierin auch als ein „Speicherzugriffsprotokoll“ bezeichnet werden kann. Zum Beispiel ist NVMe (Non-Volatile Memory Express) eine logische Vorrichtungsschnittstelle, die verwendet werden kann, um auf einen nichtflüchtigen Speicher zuzugreifen, wenn ein PCIe-Bus (Peripheral Computer Interconnect Express) zwischen dem Host-System und der nichtflüchtigen Speichervorrichtung verwendet wird. Es gibt viele andere logische Vorrichtungsschnittstellen, die zwischen einem Host-System und einer nichtflüchtigen Speichervorrichtung verwendet werden können.
  • Vor dem Betrieb der nichtflüchtigen Speichervorrichtung wird die Speichersteuerung initialisiert. Der Initialisierungsprozess kann in verschiedenen Registern in der nichtflüchtigen Speichervorrichtung Werte festlegen sowie Eingabe-/Ausgabe-Warteschlangen (E/A) erstellen. Die E/A-Warteschlangen können E/A-Befehlsübermittlungswarteschlangen einschließen, auf die der Host E/A-Befehle wie etwa Lese- und Schreibbefehle stellt. Die E/A-Warteschlangen können E/A- Befehlsabschlusswarteschlangen einschließen, auf welche die Speichersteuerung Antworten zu den E/A-Befehlen erstellt, die auf die E/A-Befehlsübermittlungswarteschlangen gestellt wurden.
  • Hierin ist eine E/A-Befehlsübermittlungswarteschlange eine Warteschlange, auf die ein Host E/A-Befehle in einem Befehlssatz eines nichtflüchtigen Speichers stellt. Hierin ist eine E/A-Befehlsabschlusswarteschlange eine Warteschlange, auf die eine nichtflüchtige Speichersteuerung eine Antwort auf einen E/A-Befehl stellt. Die E/A-Warteschlangen (sowohl Befehlsübermittlungswarteschlangen als auch Befehlsabschlusswarteschlangen) können Software-Warteschlangen sein. Eine Software-E/A-Warteschlange, wie der Begriff hierin definiert ist, ist eine E/A-Warteschlange, die in dem Speicher liegt. Die Speicherstelle einer gegebenen Software-E/A-Warteschlange befindet sich nicht notwendigerweise an einem festen Platz in dem Speicher während der gesamten Lebensdauer der nichtflüchtigen Speichervorrichtung. Dies steht im Gegensatz zu einer Hardware-Warteschlange, für die der Platz der Warteschlange während der gesamten Lebensdauer der nichtflüchtigen Speichervorrichtung festgelegt werden kann. Beispielsweise könnte eine Hardware-Warteschlange in einem voreingestellten Satz von Registern implementiert werden, wobei in diesem Fall die Warteschlangenposition während der gesamten Lebensdauer der nichtflüchtigen Speichervorrichtung festgelegt werden kann.
  • Figurenliste
    • 1A ist eine perspektivische Ansicht eines Satzes von Blöcken in einer gestapelten nichtflüchtigen 3D Speichervorrichtung.
    • 1B ist ein Funktionsblockdiagramm einer Speichervorrichtung, wie etwa der 3D-gestapelten nichtflüchtigen Speichervorrichtung von 1A, und eines Host-Systems.
    • 2A ist ein Blockdiagramm eines beispielhaften Speichersystems, das weitere Details einer Ausführungsform einer Speichersteuerung darstellt.
    • 2B ist ein Blockdiagramm eines beispielhaften nichtflüchtigen Speichersystems und eines Host-Systems.
    • 2C ist ein Diagramm einer anderen Ausführungsform einer nichtflüchtigen Speichervorrichtung und eines Host-Systems.
    • 3 ist ein Flussdiagramm einer Ausführungsform eines Prozesses zum Betreiben eines nichtflüchtigen Speichers.
    • 4 ist ein Flussdiagramm einer Ausführungsform eines Prozesses zum Erstellen von E/A-Warteschlangen während der Initialisierung einer Speichervorrichtung.
    • 5 ist ein Flussdiagramm einer Ausführungsform eines Prozesses einer Ausführungsform eines Hosts, der E/A-Warteschlangen aufbaut.
    • 6 ist ein Flussdiagramm einer Ausführungsform eines Prozesses, der einen Host einschließt, der einer Speichersteuerung Metadaten für eine Befehlsübermittlungswarteschlange (SQ) bereitstellt.
    • 7 ist ein Flussdiagramm einer Ausführungsform eines Prozesses, der einen Host einschließt, der einer Speichersteuerung Metadaten für eine Befehlsabschlusswarteschlange (CQ) bereitstellt.
    • 8 ist ein Flussdiagramm einer Ausführungsform eines Prozesses von Handlungen, die durch eine Speichersteuerung als Antwort auf ein partielles Rücksetzen durchgeführt werden.
    • 9 ist ein Flussdiagramm einer Ausführungsform eines Prozesses von Handlungen, die von einem Host durchgeführt werden, wenn ein partielles Rücksetzen einer Speichersteuerung durchgeführt wird.
    • 10 ist ein Flussdiagramm einer Ausführungsform eines Prozesses einer Host- und Speichersteuerung, die E/A-Warteschlangen nach einem partiellen Rücksetzen der Speichersteuerung verwendet.
  • DETAILLIERTE BESCHREIBUNG
  • Technologie stellt wie hierin beschrieben eine partielle Rücksetzung einer nichtflüchtigen Speichersteuerung bereit. Die partielle Rücksetzung kann von einem Host zu der nichtflüchtigen Speichersteuerung initiiert werden. Die partielle Rücksetzung kann an einem bestimmten Punkt durchgeführt werden, nachdem die nichtflüchtige Speichersteuerung initialisiert wurde. Die partielle Rücksetzung bringt die nichtflüchtige Speichervorrichtung in einen partiellen Rücksetzzustand, in dem einige Initialisierungsparameter erhalten bleiben. Dies macht es leichter, dass einige der Parameter nicht neu initialisiert werden müssen. Es kann zeitaufwendig sein, einige Parameter neu zu initialisieren. Daher können Ausführungsformen mit einer partiellen Rücksetzung in beträchtlichem Maße Zeit sparen. Die partielle Rücksetzung kann auch als partielle Neuinitialisierung bezeichnet werden.
  • In einigen Ausführungsformen behält eine nichtflüchtige Speichersteuerung Speicheradressen von E/A-Warteschlangen über eine partielle Rücksetzung einer nichtflüchtigen Speichersteuerung. Um die Speicheradressen der E/A-Warteschlangen über die partielle Rücksetzung hinweg beizubehalten, bedeutet, dass die Speichersteuerung dieselben Adressen für die E/A-Warteschlangen vor und nach der partiellen Rücksetzung der Speichersteuerung verwenden wird. Es ist zu beachten, dass das Beibehalten der Speicheradressen von E/A-Warteschlangen in Gegensatz zu Techniken steht, die Speicherplätze für die E/A-Warteschlangen nach einer Rücksetzung der Speichersteuerung wiederherstellen. Das Beibehalten der Adressen der E/A-Warteschlangen ermöglicht, dass das Host-System und die nichtflüchtige Speichersteuerung einen langwierigen Prozess des Teilens von Speicherplätzen der E/A-Übermittlungswarteschlangen und der E/A-Abschlusswarteschlangen nicht unbedingt durchführen muss. Beispielsweise kann dies ermöglichen, dass das Host-System nicht unbedingt für jede E/A-Übermittlungswarteschlange einen separaten Befehl an die nichtflüchtige Speichersteuerung senden muss und nicht unbedingt für jede E/A-Abschlusswarteschlange einen separaten Befehl an die nichtflüchtige Speichersteuerung senden muss.
  • Die nichtflüchtige Speichersteuerung kann auch eine Datenzuordnung zwischen jeder der E/A-Übermittlungswarteschlangen und einer zugehörigen E/A-Abschlusswarteschlange über die partielle Rücksetzung hinweg beibehalten. Das Beibehalten der Datenzuordnung zwischen der E/A-Übermittlungswarteschlange und der zugehörigen E/A-Abschlusswarteschlange über die partielle Rücksetzung hinweg ermöglicht, dass das Host-System und die nichtflüchtige Speichersteuerung nicht unbedingt einen langwierigen Prozess zum Teilen der Datenzuordnungen durchführen müssen. Zum Beispiel kann dies ermöglichen, dass das Host-System nicht unbedingt einen separaten Befehl an die nichtflüchtige Speichersteuerung für jede Datenzuordnung senden muss.
  • In einigen Ausführungsformen behält eine nichtflüchtige Speichersteuerung bestimmte Merkmale über eine partielle Rücksetzung der nichtflüchtigen Speichervorrichtung hinweg. In einer Ausführungsform behält die nichtflüchtige Speichersteuerung ein Interrupt-Koaleszenz-Merkmal über die partielle Rücksetzung hinweg. Das Interrupt-Koaleszenz-Merkmal legt Regeln dafür fest, wie/wann die nichtflüchtige Speichersteuerung in einen Interruptvektor schreiben soll, um dem Host-System anzuzeigen, dass die nichtflüchtige Speichersteuerung eine oder mehrere Befehlsantworten auf eine Befehlsabschlussschlange gestellt hat.
  • Es ist zu beachten, dass die partielle Rücksetzung aus einer Vielzahl von Gründen durchgeführt werden kann. Ein Auslöser für die partielle Rücksetzung ist ein Fehler in der nichtflüchtigen Speichervorrichtung. Ausführungsformen einer partiellen Rücksetzung beheben erfolgreich den Fehler, ohne eine langwierige Initialisierung der nichtflüchtigen Speichersteuerung durchführen zu müssen. Zum Beispiel können die Speicherinhalte der E/A-Warteschlangen während der partiellen Rücksetzung initialisiert werden, was dazu beitragen kann, den Fehler zu beheben. Es ist zu beachten, dass die Initialisierung der Inhalte von E/A-Warteschlangen die Einstellung der Inhalte auf einen Standardzustand, wie etwa lauter Nullen, einschließen kann. Andere Fehlerbehebungsschritte können durchgeführt werden, wie etwa das Initialisieren bestimmter Register in der nichtflüchtigen Speichervorrichtung. In einer Ausführungsform werden Anfangszeiger und Endzeiger der E/A-Warteschlangen während der partiellen Rücksetzung zurückgesetzt. Es ist zu beachten, dass die Anfangszeiger und Endzeiger Indizes sein könnten, die einen Slot (oder Eintrag) in einer Warteschlange identifizieren. In einer Ausführungsform werden „Doorbell-Register“ in der nichtflüchtigen Speichervorrichtung während der partiellen Rücksetzung initialisiert, was dazu beitragen kann, den Fehler zu beheben. Es ist zu beachten, dass die Initialisierung des Doorbell-Registers die Einstellung des Doorbell-Registers in einen Standardzustand, wie etwa lauter Nullen, einschließen kann. Es ist zu beachten, dass ein Doorbell-Register entweder einen Anfangszeiger oder einen Endzeiger für eine E/A-Warteschlange enthalten kann.
  • Es ist zu beachten, dass andere Gesichtspunkte der E/A-Warteschlangen über die partielle Rücksetzung hinweg fortbestehen können. Zum Beispiel können die Größe jeder E/A-Warteschlange, die Anzahl von Einträgen (oder Slots) und die Größe jedes Eintrags über die partielle Rücksetzung hinweg fortbestehen. Somit bleiben in einer Ausführungsform die E/A-Warteschlangen selbst über die partielle Rücksetzung hinweg bestehen, selbst wenn Inhalte der E/A-Warteschlangen und/oder Kopf- und Endzeiger gelöscht oder zurückgesetzt werden können.
  • In einigen Fällen kann eine nichtflüchtige Speichervorrichtung mehr als eine nichtflüchtige Speichersteuerung aufweisen. In derartigen Fällen kann jede der nichtflüchtigen Speichersteuerungen teilweise unabhängig von den anderen nichtflüchtigen Speichersteuerungen in einer Ausführungsform zurückgesetzt werden.
  • Die hierin beschriebene Technologie kann mit einer Vielzahl von Arten von nichtflüchtigen Speichern verwendet werden. Ein Beispiel ist eine dreidimensionale (3D) nichtflüchtige Speichervorrichtung. Ausführungsformen können auch in einer zweidimensionalen (2D) nichtflüchtigen Speichervorrichtung praktiziert werden. 1A ist eine perspektivische Ansicht eines Satzes von Blöcken in einer gestapelten nichtflüchtigen 3D-Speichervorrichtung 100. Die nichtflüchtige Speichervorrichtung 100 kann hierin auch als ein nichtflüchtiges Speichersystem 100 bezeichnet werden. Die Speichervorrichtung 100 schließt ein Substrat 101 ein. Auf dem Substrat befinden sich Beispielblöcke BLK0, BLK1, BLK2 und BLK3 von Speicherzellen (Speicherelementen) und ein Peripheriebereich 104 mit Schaltungen zur Verwendung durch die Blöcke. Zum Beispiel kann die Schaltung Spannungstreiber 105 aufweisen, die mit Steuergateschichten der Blöcke verbunden werden können. Bei einem Ansatz werden Steuergateschichten auf einer gemeinsamen Höhe in den Blöcken gemeinsam angesteuert. Das Substrat 101 kann auch Schaltlogik unter den Blöcken zusammen mit einer oder mehreren unteren Metallschichten tragen, die in Leiterbahnen strukturiert sind, um Signale der Schaltlogik zu übertragen. Die Blöcke sind in einer Zwischenregion 102 der Speichervorrichtung ausgebildet. In einem oberen Bereich 103 der Speichervorrichtung sind eine oder mehrere obere Metallschichten als Leiterbahnen zum Tragen der Signale der Schaltlogik strukturiert. Jeder Block weist einen gestapelten Bereich von Speicherzellen auf, wobei alternierende Ebenen des Stapels Steuergateschichten repräsentieren. In einem möglichen Ansatz sind die Steuergateschichten jedes Blocks in einer gemeinsamen Höhe miteinander und mit einem Spannungstreiber verbunden. Während vier Blöcke beispielhaft dargestellt sind, können zwei oder mehr Blöcke verwendet werden, die sich in x - und/oder y-Richtung erstrecken.
  • Die Länge der Ebene in x-Richtung kann eine Richtung darstellen, in der sich Signalpfade zu Wortleitungen in der einen oder den mehreren oberen Metallschichten erstrecken (z.B. eine Wortleitungs- oder SGD-Leitungsrichtung), und die Breite der Ebene in der y-Richtung repräsentiert eine Richtung, in der sich Signalpfade zu Bitleitungen in der einen oder den mehreren oberen Metallschichten (z.B. einer Bitleitungsrichtung) erstrecken. Die z-Richtung stellt eine Höhe der Speichervorrichtung dar.
  • 1B ist ein Funktionsblockdiagramm einer nichtflüchtigen Speichervorrichtung wie etwa der gestapelten nichtflüchtigen 3D-Speichervorrichtung 100 von 1A, die mit einem Host-System gekoppelt ist. Das Funktionsblockdiagramm kann auch für eine nichtflüchtige 2D-Speichervorrichtung verwendet werden. Das Host-System 140 weist einen oder mehrere Host-Prozessoren 150 und den Host-Speicher 160 auf. Der eine oder die mehreren Host-Prozessoren 150 und der Host-Speicher 160 können über einen Bus 130 kommunizieren. Der Host-Speicher 160 kann einen statischen Direktzugriffsspeicher (SRAM) und einen dynamischen Direktzugriffsspeicher (DRAM) einschließen, ist aber nicht darauf beschränkt. Befehle und Daten werden zwischen dem Host-System 140 und der nichtflüchtigen Speichersteuerung 122 über eine Schnittstelle (z.B. einen Datenbus) 120 und zwischen der Speichersteuerung und dem einen oder den mehreren Speicherchips 108 über Leitungen 118 übertragen. Die Schnittstelle 120 kann auch als eine Kommunikationsschnittstelle bezeichnet werden. Es ist zu beachten, dass die „nicht-flüchtige Speichersteuerung“ 122 hierin kürzer als „Speichersteuerung“ oder „Steuerung“ bezeichnet werden kann.
  • Der Host 140 könnte ein Smartphone, ein Personal Digital Assistent (PDA), ein Laptop-Computer, ein Notebook-Computer, eine Set-Top-Box, eine Kamera oder eine andere elektronische Vorrichtung sein, ist aber nicht darauf beschränkt. In einer Ausführungsform liegen der Host 140 und das Speichersystem 100 in einem Kraftfahrzeug, und der Host steuert das elektronische Systems des Kraftfahrzeugs. Der Host-Speicher 160 kann Softwareanwendungen speichern, die auf dem (den) Host-Prozessor(en) 150 laufen, um die Funktionsweisen eines Smartphones, eines Personal Digit Assistant (PDA), eines Laptop-Computers, eines Notebook-Computers, einer Set-Top-Box, einer Kamera, einer elektronischen Systemsteuerung eines Kraftfahrzeugs oder anderer elektronischer Vorrichtungen zu implementieren.
  • In einer Ausführungsform steuert der Host 140 verschiedene elektronischen Steuereinheiten (ECU) in einem Automobil (auch als Fahrzeug bezeichnet). Die ECUs können eine Motormanagement-ECU, eine Getriebe-ECU, eine Antiblockier-ECU, eine Traktionssteuerungs-ECU, eine Airbag-ECU und/oder eine Servolenkungs-ECU einschließen. In einer derartigen Fahrzeugumgebung (auch als Eigenantrieb bezeichnet) kann der Bus 130 ein Controller Area Network (CAN) Bus sein. Ein CAN-Bus ist ein Fahrzeugbusstandard, der es ECUs und anderen elektronischen Vorrichtungen ermöglicht, miteinander zu kommunizieren. Es ist zu beachten, dass ein Controller Area Network in anderen Umgebungen als von Automobilen verwendet werden kann. Ferner ist zu beachten, dass eine Fahrzeugumgebung nicht auf ein Controller Area Network beschränkt ist. In einer Ausführungsform verwendet die Fahrzeugumgebung ein lokales Verbindungsnetzwerk (LIN), das ein serielles Netzwerkprotokoll ist, das eine Kommunikation zwischen elektronischen Bauteilen in Fahrzeugen (z.B. Automobilen) ermöglicht.
  • Die Schnittstelle 120 zwischen dem Host-System 140 und dem Speichersystem 100 kann jede geeignete Schnittstelle sein. Die Schnittstelle 120 kann eine mechanische und/oder elektrische Verbindung zwischen dem Host 140 und dem Speichersystem 100 einschließen. Die mechanische und/oder elektrische Verbindung kann einer Vielzahl von Formfaktoren entsprechen. Die Schnittstelle 120 kann ein Protokoll zum Übertragen von Signalen über die mechanische und/oder elektrische Verbindung einschließen. Beispiele für die Schnittstelle 120 schließen eine SD-Karte (Sicure Digital Memory Card), eine Multimedia Card (MHC), eine eingebettete Multimedia Card (eMMC), einen Universal Serial Bus (USB), ein Serial Advanced Technology Attachment (SATA), einen Fibre Channel, ein Small Computer System Interface (SCSI), ein Peripheral Component Interface (PCI) und PCI-Express (PCle) ein, sind aber nicht darauf beschränkt. In einer Ausführungsform schließt die Schnittstelle 120 einen Peripheral Component Interconnect Express Bus (PCIe-Bus) ein.
  • Das Speichersystem 100 und das Host-System 140 kommunizieren über die Schnittstelle 120 unter Verwendung einer logischen Vorrichtungsschnittstelle, die hierin auch als ein „Speicherzugriffsprotokoll“ bezeichnet werden kann. In einer Ausführungsform kommunizieren das Speichersystem 100 und das Host-System 140 über einen PCIe-Bus basierend auf einem Non-Volatile Memory Express Protokoll (NVMe-Protokoll). NVMe ist eine logische Vorrichtungsschnittstelle, die verwendet werden kann, um auf einen nichtflüchtigen Speicher zuzugreifen, der unter Verwendung von einem PCIe-Bus zwischen dem Host-System 140 und dem nichtflüchtigen Speichersystem 100 angeschlossen ist. Jedoch ist zu beachten, dass die logische Vorrichtungsschnittstelle nicht auf NVMe beschränkt ist. Andere mögliche logische Vorrichtungsschnittstellen schließen das Advanced Host Controller Interface (AHCI), SATA, SATA Express, MHC, eMMC, USB, ein seriell angeschlossenes SCSI (SAS), ein Fibre Channel Protokoll (FCP) und einen Universal Flash Speicher (UFS) ein, sind aber nicht darauf beschränkt.
  • In einer Ausführungsform kann die nichtflüchtige Speichervorrichtung 100 ein kartenbasiertes System sein, wie z.B. eine SD-Karte (Secure Digital Memory Card) oder eine Mikro-SD-Karte (Micro Secure Digital Memory Card). In einer alternativen Ausführungsform kann das nichtflüchtige Speichersystem 100 Teil einer eingebetteten nichtflüchtigen Speichervorrichtung sein. Zum Beispiel kann das nichtflüchtige Speichersystem 100 innerhalb des Host-Systems 140 eingebettet sein, wie etwa in Form einer Solid-State-Festplatte (SSD), die in einem Personal Computer installiert ist.
  • Die nichtflüchtige Speichervorrichtung 100 kann einen oder mehrere Speicherchips 108 einschließen. Der Satz von Blöcken von 1A kann auf einem Speicherchip 108 sein. Der Speicherchip 108 schließt eine Speicherstruktur 126 aus Speicherzellen (z.B. nichtflüchtige Speicherzellen), wie etwa ein Array aus Speicherzellen, eine Steuerschaltung 110 und Lese-/Schreibschaltungen 128 ein. In einer 3D-Konfiguration kann die Speicherstruktur die Blöcke aus 1A einschließen. Die Speicherstruktur 126 ist durch Wortleitungen über einen Zeilendecoder 124 und durch Bitleitungen über einen Spaltendecoder 132 adressierbar. Die Lese -/Schreibschaltungen 128 schließen mehrere Abtastblöcke SB1, SB2, ..., SBp (Abtastschaltlogik) ein und ermöglichen, dass eine Seite von Speicherzellen parallel gelesen oder programmiert wird. In der Regel ist eine Speichersteuerung 122 in derselben nichtflüchtigen Speichervorrichtung 100 (z.B. einer entfernbaren Speicherkarte) wie der eine oder die mehreren Speicherchips 108 eingeschlossen.
  • Mehrere Speicherzellen in der Speicherstruktur 126 können so eingerichtet sein, dass sie in Reihe geschaltet sind, oder so, dass jedes Element einzeln zugänglich ist. Als nicht einschränkendes Beispiel enthalten Flash-Speichersysteme in einer NAND-Konfiguration (NAND-Speicher) üblicherweise Speicherelemente, die in Reihe geschaltet sind. Eine NAND-Kette ist ein Beispiel eines Satzes von in Reihe geschalteten Transistoren, die Speicherzellen und Auswahlgate-Transistoren aufweisen.
  • Ein NAND-Speicherarray kann derart eingerichtet sein, dass das Array aus mehreren Speicherketten zusammengesetzt ist, in denen eine Kette aus mehreren Speicherelementen zusammengesetzt ist, die sich eine einzelne Bitleitung teilen und auf die als eine Gruppe zugegriffen wird. Alternativ können Speicherelemente derart eingerichtet sein, dass jedes Element einzeln zugänglich ist, z. B. ein NOR-Speicherarray. NAND- und NOR-Speicherkonfigurationen sind beispielhaft, und Speicherelemente können anderweitig eingerichtet sein.
  • Die Speicherstruktur 126 kann zweidimensional (2D) oder dreidimensional (3D) sein. Die Speicherstruktur 126 kann ein oder mehrere Anordnungen von Speicherelementen (auch als Speicherzellen bezeichnet) umfassen. In einer zweidimensionalen Speicherstruktur sind die Halbleiterspeicherelemente in einer einzelnen Ebene oder einer einzelnen Speichervorrichtungsebene angeordnet. Üblicherweise sind in einer zweidimensionalen Speicherstruktur Speicherelemente in einer Ebene (z.B. in einer Ebene in x-y-Richtung) angeordnet, die sich im Wesentlichen parallel zu einer Hauptfläche eines Substrats erstreckt, das die Speicherelemente trägt. Das Substrat kann ein Wafer sein, über oder in dem die Schicht der Speicherelemente gebildet ist, oder es kann ein Trägersubstrat sein, das an den Speicherelementen befestigt wird, nachdem diese gebildet werden. Als ein nicht einschränkendes Beispiel kann das Substrat einen Halbleiter, wie Silizium, einschließen.
  • Ein dreidimensionales Speicherarray ist so angeordnet, dass Speicherelemente mehrere Ebenen oder mehrere Speichervorrichtungsebenen belegen, wodurch eine Struktur in drei Dimensionen gebildet wird (d.h. in der x-, y- und z-Richtung, wobei die z-Richtung im Wesentlichen senkrecht ist und die x- und y-Richtungen im Wesentlichen parallel zur Hauptoberfläche des Substrats verlaufen).
  • Die Speicherstruktur kann eine monolithische dreidimensionale Speicherstruktur aufweisen, in der mehrere Speicherebenen über (und nicht in) einem einzelnen Substrat wie beispielsweise einem Wafer ohne dazwischen liegende Substrate ausgebildet sind. Die Speicherstruktur kann jede Art von nichtflüchtigem Speicher aufweisen, der monolithisch in einer oder mehreren physischen Ebenen von Speicherzellenanordnungen ausgebildet ist, die einen aktiven Bereich aufweisen, der über einem Siliziumsubstrat angeordnet ist. Die Speicherstruktur kann sich in einer nichtflüchtigen Speichervorrichtung befinden, die Schaltlogik aufweist, die dem Betrieb der Speicherzellen zugeordnet sind, ganz gleich, ob sich die zugehörige Schaltung oberhalb oder innerhalb des Substrats befindet.
  • Üblicherweise werden in einem monolithischen dreidimensionalen Speicherarray eine oder mehrere Speichervorrichtungsebenen über einem einzelnen Substrat gebildet. Optional kann das monolithische dreidimensionale Speicherarray auch eine oder mehrere Speicherschichten mindestens teilweise innerhalb des einzelnen Substrats aufweisen. Als ein nicht einschränkendes Beispiel kann das Substrat einen Halbleiter, wie Silizium, einschließen. In einem monolithischen dreidimensionalen Array werden die Schichten, die die einzelnen Speichervorrichtungsebenen des Arrays bilden, üblicherweise auf den Schichten der darunter liegenden Speichervorrichtungsebenen des Arrays gebildet. Jedoch können Schichten von benachbarten Speichervorrichtungsebenen eines monolithischen dreidimensionalen Speicherarrays gemeinsam genutzt werden oder Zwischenschichten zwischen Speichervorrichtungsebenen aufweisen.
  • Als nicht einschränkendes Beispiel kann eine dreidimensionale Speicherstruktur vertikal als Stapel mehrerer zweidimensionaler Speichervorrichtungsebenen angeordnet sein. Als weiteres nicht einschränkendes Beispiel kann ein dreidimensionales Speicherarray als mehrere vertikale Spalten (z.B. Spalten, die sich im Wesentlichen senkrecht zur Hauptfläche des Substrats erstrecken, d. h. in y-Richtung) angeordnet sein, wobei jede Spalte mehrere Speicherelemente aufweist. Die Spalten können in einer zweidimensionalen Konfiguration angeordnet sein, z.B. in einer x-y-Ebene, was in einer dreidimensionalen Anordnung von Speicherelementen mit Elementen auf mehreren vertikal gestapelten Speicherebenen resultiert. Andere Konfigurationen von Speicherelementen in drei Dimensionen können auch ein dreidimensionales Speicherarray bilden.
  • Als nicht einschränkendes Beispiel können in einem dreidimensionalen NAND-Speicherarray die Speicherelemente miteinander gekoppelt sein, um eine NAND-Kette innerhalb einer einzelnen horizontalen (z. B. x-y) Speichervorrichtungsebene zu bilden. Alternativ können die Speicherelemente miteinander gekoppelt sein, um eine vertikale NAND-Kette zu bilden, die über mehrere horizontale Speichervorrichtungsebenen verläuft. Andere dreidimensionale Konfigurationen können in Betracht gezogen werden, wobei einige NAND-Ketten Speicherelemente in einer einzelnen Speicherebene enthalten, während andere Ketten Speicherelemente enthalten, die sich über mehrere Speicherebenen erstrecken.
  • Dann können wiederum zweidimensionale Arrays getrennt gebildet und dann zusammengepackt werden, um eine nicht monolithische Speichervorrichtung mit mehreren Speicherschichten zu bilden. Zum Beispiel können nicht monolithische gestapelte Speicher konstruiert werden, indem Speicherebenen auf separaten Substraten gebildet und dann die Speicherebenen übereinander gestapelt werden. Die Substrate können vor dem Stapeln gedünnt oder von den Speichervorrichtungsebenen entfernt werden, aber da die Speichervorrichtungsebenen anfänglich über separaten Substraten gebildet werden, sind die resultierenden Speicherarrays keine monolithischen dreidimensionalen Speicherarrays. Ferner können mehrere zweidimensionale Speicherarrays oder dreidimensionale Speicherarrays (monolithisch oder nicht monolithisch) auf separaten Chips gebildet und dann zusammengepackt werden, um eine gestapelte Chip-Speichervorrichtung zu bilden.
  • Ein Fachmann wird erkennen, dass diese Technologie nicht auf die beschriebenen zweidimensionalen und dreidimensionalen beispielhaften Strukturen beschränkt ist, sondern alle relevanten Speicherstrukturen in dem Geist und Umfang der Technologie abdeckt, wie hier beschrieben und wie es von einem Fachmann verstanden wird.
  • Die exakte Art der Speicherarray-Architektur oder der Speicherzelle, die in der Speicherstruktur 126 eingeschlossen ist, ist nicht auf die obigen Beispiele beschränkt. Viele unterschiedliche Arten von Speicher-Array-Architekturen oder Speichertechnologien können verwendet werden, um die Speicherstruktur 126 zu bilden. Es ist keine spezielle nichtflüchtige Speichertechnologie für die Zwecke der neuen beanspruchten Ausführungsformen, die hier vorgeschlagen werden, erforderlich. Andere Beispiele geeigneter Technologien für Speicherzellen der Speicherstruktur 126 schließen ReRAM-Speicher, magnetoresistive Speicher (z.B. MRAM, Spin Transfer Torque MRAM, Spin Orbit Torque MRAM), Phasenwechselspeicher (z.B. PCM) und dergleichen ein. Beispiele von geeigneten Technologien für die Speicherzellen-Architekturen der Speicherstruktur 126 schließen zweidimensionale Arrays, dreidimensionale Arrays, KreuzpunktArrays, gestapelte zweidimensionale Arrays, vertikale Bitleitungs-Arrays und dergleichen ein.
  • Die Speicherelemente können aus passiven und/oder aktiven Elementen in beliebigen Kombinationen gebildet sein. Als nicht einschränkendes Beispiel schließen passive Halbleiterspeicherelemente ReRAM-Vorrichtungselemente ein, die in einigen Ausführungsformen ein widerstandsschaltendes Speicherelement wie ein Anti-Fuse- oder Phasenwechselmaterial und gegebenenfalls ein Lenkelement wie eine Diode oder einen Transistor einschließen. Das Phasenwechselmaterial kann ein Chalcogenid-Material einschließen. Weiterhin schließen als nicht einschränkendes Beispiel aktive Halbleiterspeicherelemente EEPROM- und Flash-Speichervorrichtungselemente ein, die in einigen Ausführungsformen Elemente einschließen, die einen Ladungsspeicherbereich enthalten, wie ein Floating-Gate, leitende Nanopartikel oder ein dielektrisches Ladungsspeichermaterial.
  • Ein Beispiel eines ReRAM- oder PCM RAM-Kreuzpunktspeichers schließt reversible Widerstandsschaltelemente ein, die in Kreuzpunktarrays angeordnet sind, auf die durch X-Leitungen und Y-Leitungen (z. B. Wortleitungen und Bitleitungen) zugegriffen wird. In einer anderen Ausführungsform können die Speicherzellen leitfähige Brückenspeicherelemente einschließen. Ein leitfähiges Brückenspeicherelement kann auch als programmierbare Metallisierungszelle bezeichnet werden. Ein leitfähiges Brückenspeicherelement kann als Zustandsänderungselement basierend auf der physikalischen Verlagerung von Ionen innerhalb eines Festelektrolyten verwendet werden. In einigen Fällen kann ein leitfähiges Brückenspeicherelement zwei feste Metallelektroden einschließen, eine relativ inerte (z. B. Wolfram) und eine elektrochemisch aktive (z. B. Silber oder Kupfer), mit einer dünnen Folie des Festelektrolyten zwischen den beiden Elektroden. Mit steigender Temperatur steigt auch die Mobilität der Ionen, sodass die Programmierschwelle für die leitfähige Brückenspeicherzelle abnimmt. Somit kann das leitfähige Brückenspeicherelement einen weiten Bereich von Programmschwellenwerten als Funktion der Temperatur aufweisen.
  • Ein magnetoresistiver Speicher (MRAM) speichert Daten durch Magnetspeicherelemente. Die Elemente sind aus zwei durch eine dünne Isolierschicht getrennte ferromagnetischen Platten gebildet, von denen jede eine Magnetisierung halten kann. Eine der beiden Platten ist ein Permanentmagnet, der auf eine bestimmte Polarität eingestellt ist; die Magnetisierung der anderen Platte kann so geändert werden, dass sie der eines externen Felds entspricht, um Speicher zu speichern. Eine Speichervorrichtung wird aus einem Gitter solcher Speicherzellen aufgebaut. Bei einer Ausführungsform zum Programmieren liegt jede Speicherzelle zwischen einem Paar von Schreibleitungen, die in rechten Winkeln zueinander parallel zu der Zelle angeordnet sind, eine über und eine unter der Zelle. Wenn Strom durch sie fließt, wird ein Induktionsmagnetfeld erzeugt.
  • Phasenwechselspeicher (PCM) nutzen das einzigartige Verhalten von Chalkogenidglas aus. Eine Ausführungsform verwendet ein GeTe-Sb2Te3-Übergitter, um nichtthermische Phasenänderungen zu erreichen, indem einfach der Koordinationszustand der Germaniumatome mit einem Laserimpuls (oder Lichtimpuls von einer anderen Quelle) geändert wird. Daher sind die Dosen der Programmierung Laserimpulse. Die Speicherzellen können gesperrt werden, indem die Speicherzellen daran gehindert werden, das Licht zu empfangen. Es sei darauf hingewiesen, dass die Verwendung von „Impuls“ in diesem Dokument keinen Rechteckimpuls erfordert, sondern eine (kontinuierliche oder nicht kontinuierliche) Schwingung oder einen Stoß eines Schalls, Stroms, Spannungslichts oder einer anderen Welle beinhaltet.
  • Eine zugehörige Schaltung ist üblicherweise für den Betrieb der Speicherelemente und für die Kommunikation mit den Speicherelementen erforderlich. Als nicht einschränkende Beispiele können Speichervorrichtungen Schaltungen aufweisen, die zum Steuern und Ansteuern von Speicherelementen verwendet werden, um Funktionen, wie Programmieren und Lesen, auszuführen. Diese zugehörige Schaltung kann sich auf demselben Substrat wie die Speicherelemente und/oder auf einem separaten Substrat befinden. Zum Beispiel kann eine Speichersteuerung für Schreib-/Lesevorgänge des Speichers auf einem separaten Steuerungschip und/oder auf demselben Substrat wie die Speicherelemente angeordnet sein.
  • Die Steuerschaltung 110 arbeitet mit den Lese-/Schreibschaltungen 128 zusammen, um Speichervorgänge auf der Speicherstruktur 126 auszuführen, und enthält eine Zustandsmaschine 112, einen On-Chip-Adressdecodierer 114 und ein Leistungssteuermodul 116. Die Zustandsmaschine 112 stellt eine Steuerung von Speichervorgängen auf Speicherebene bereit. Ein Speicherbereich 113 kann für Parameter zum Betreiben der Speichervorrichtung vorgesehen sein, wie zum Beispiel Programmierparameter für verschiedene Zeilen oder andere Gruppen von Speicherzellen. Diese Programmierparameter könnten Bitleitungsspannungen und Verifizierungsspannungen enthalten.
  • Der On-Chip-Adressdecodierer 114 stellt eine Adressschnittstelle zwischen derjenigen, die von dem Host oder einer Speichersteuerung verwendet wird, zu der Hardwareadresse, die von den Decodierern 124 und 132 verwendet wird, bereit. Das Leistungssteuermodul 116 steuert die Leistung und Spannungen, die den Wortleitungen und Bitleitungen während Speichervorgängen zugeführt werden. Es kann Treiber für Wortleitungsschichten (WLLs) in einer 3D-Konfiguration, SGS- und SGD-Auswahlgates und Source-Leitungen einschließen. Die Abtastblöcke können in einem Ansatz Bitleitungstreiber einschließen. Ein SGS-Auswahlgate ist ein Gate-Transistor an einem Source-Ende einer NAND-Kette, und ein SGD-Auswahlgate ist ein Transistor an einem Drain-Ende einer NAND-Kette.
  • In einigen Implementierungen können einige der Komponenten kombiniert werden. In verschiedenen Ausführungen können eine oder mehrere der Komponenten (allein oder in Kombination), die sich von der Speicherstruktur 126 unterscheiden, als mindestens eine oder mehrere Steuerschaltungen betrachtet werden, die eingerichtet sind, um die hierin beschriebenen Handlungen durchzuführen. Zum Beispiel können eine oder mehrere Steuerschaltungen eine beliebige der Komponenten oder eine Kombination aus einer Steuerschaltung 110, Zustandsmaschine 112, Decodern 114/124/132, Leistungssteuermodul 116, Erfassungsblöcken SB1, SB2, ..., SBp, Lese-/Schreibschaltungen 128, Speichersteuerung 122, Prozessor 122c usw. einschließen.
  • Die Speichersteuerung 122 kann einen Prozessor 122c und Speichervorrichtungen (Speicher) wie etwa Nur-Lesespeicher (ROM) 122a und RAM 122b aufweisen. RAM 122b kann SRAM und DRAM sein, ist aber nicht darauf beschränkt. Die Speichervorrichtungen weisen Codes wie etwa einen Satz von Anweisungen auf, und der Prozessor kann betrieben werden, den Satz von Anweisungen auszuführen, um die hierin beschriebene Funktionalität bereitzustellen. Alternativ oder zusätzlich kann der Prozessor auf Codes von einer Speichervorrichtungsregion 126a der Speicherstruktur zugreifen, wie etwa einen reservierten Bereich von Speicherzellen in einer oder mehreren Wortleitungen.
  • Der Code wird von der Speichersteuerung 122 verwendet, um auf die Speicherstruktur 126 zuzugreifen, wie zum Beispiel für Programmier-, Lese- und Löschvorgänge. Der Code kann Bootcode und Steuercode (z. B. einen Satz von Befehlen) einschließen. Der Bootcode ist eine Software, welche die Speichersteuerung während eines Boot- oder Startvorgangs initialisiert und der Speichersteuerung ermöglicht, auf die Speicherstruktur zuzugreifen. Der Code kann von der Speichersteuerung verwendet werden, um eine oder mehrere Speicherstrukturen zu steuern. Beim Hochfahren ruft der Prozessor 122c den Bootcode aus dem ROM 122a oder der Speichervorrichtung 126a zur Ausführung ab, und der Bootcode initialisiert die Systemkomponenten und lädt den Steuercode in den RAM 122b. Sobald der Steuercode in den RAM 122b geladen ist, wird er durch den Prozessor 122c ausgeführt. Der Steuercode enthält Treiber zum Durchführen grundlegender Aufgaben, wie beispielsweise Steuern und Zuweisen von Speicher, Priorisieren der Verarbeitung von Befehlen und Steuern von Eingabe- und Ausgabeports.
  • 2A ist ein Blockdiagramm eines beispielhaften Speichersystems 100, das mehr Details einer Ausführungsform der Speichersteuerung 122 darstellt. Wie hierin verwendet, ist eine Speichersteuerung eine Vorrichtung, die auf dem Speicher gespeicherte Daten verwaltet und mit einem Host kommuniziert, wie beispielsweise einem Computer oder einer elektronischen Vorrichtung. In einer Ausführungsform ist die Speichersteuerung eine Flash-Speichersteuerung. Die Speichersteuerung ist jedoch nicht auf die Flash-Speichersteuerung beschränkt. Zum Beispiel kann der nichtflüchtige Speicher in dem Speicherchip 108 einen Phasenwechselspeicher enthalten. Ein Speichercontroller kann verschiedene Funktionen zusätzlich zu der hier beschriebenen spezifischen Funktionalität aufweisen. Zum Beispiel kann der Speichercontroller den Speicher formatieren, um sicherzustellen, dass der Speicher ordnungsgemäß arbeitet, um schlechte Flash-Speicherzellen auszugrenzen und Ersatzspeicherzellen zuzuordnen, die künftig fehlerhafte Zellen ersetzen sollen. Einige Teile der Ersatzzellen können verwendet werden, um Firmware aufzunehmen, um den Speichercontroller zu betreiben und andere Merkmale umzusetzen. Wenn ein Host während des Betriebs Daten aus dem Flash-Speicher lesen oder in ihn schreiben muss, kommuniziert er mit dem Speichercontroller. Wenn der Host eine logische Adresse bereitstellt, an die Daten gelesen/geschrieben werden sollen, kann die Speichersteuerung die vom Host empfangene logische Adresse in eine physische Adresse im Flash-Speicher umwandeln. (Alternativ kann der Host die physische Adresse bereitstellen). Die Speichersteuerung kann auch verschiedene Speicherverwaltungsfunktionen ausführen, wie z.B., ohne darauf beschränkt zu sein, einen Abnutzungsausgleich (Verteilen von Schreibvorgängen zum Vermeiden eines Verschleißes spezifischer Speicherblöcke, auf die ansonsten wiederholt geschrieben werden würde) und eine 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).
  • Die Schnittstelle zwischen der Speichersteuerung 122 und dem nichtflüchtigen Speicherchip 108 kann jede geeignete Speicherschnittstelle wie etwa Toggle-Modus 200, 400 oder 800 in einer Flash-Speicherschnittstelle sein. In einer Ausführungsform kann das Speichersystem 100 ein kartenbasiertes System wie eine sichere digitale Karte (SD) oder eine sichere digitale Mikro-Karte (Mikro-SD) sein. In einer alternativen Ausführungsform kann das Speichersystem 100 Teil eines eingebetteten Speichersystems sein. Zum Beispiel kann der Speicher in dem Host eingebettet sein. In einem anderen Beispiel kann das Speichersystem 100 in der Form einer Solid-State-Festplatte (SSD) vorliegen.
  • In einigen Ausführungsformen schließt das nichtflüchtige Speichersystem 100 einen einzigen Kanal zwischen der Speichersteuerung 122 und dem nichtflüchtigen Speicherchip 108 ein, wobei der hierin beschriebene Gegenstand nicht auf einen einzigen Speicherkanal beschränkt ist. Zum Beispiel können in einigen Speichersystemen 2, 4, 8 oder mehr Kanäle zwischen der Steuerung und dem Speicherchip je nach den Fähigkeiten der Steuerung vorhanden sein. 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 gezeigt ist.
  • Wie in 2A dargestellt, schließt die Speichersteuerung 122 ein Frontend-Modul 208 ein, das eine Schnittstelle mit einem Host hat, ein Backend-Modul 210, das eine Schnittstelle mit dem einen oder den mehreren nichtflüchtigen Speicherchips 108 hat, und verschiedene andere Module, die Funktionen ausführen, die nun im Detail beschrieben werden.
  • Die Speichersteuerung 122 kann eingerichtet sein, um ein Speicherzugriffsprotokoll wie etwa ein NVMe-Protokoll zu implementieren. In einigen Ausführungsformen ist die Speichersteuerung 122 eingerichtet, um eine Erweiterung auf ein NVME-Protokoll zu implementieren, das eine partielle Rücksetzung der Speichersteuerung 122 bereitstellt.
  • Der Befehlsprozessor 240 greift auf Befehle zu, die durch den Host bereitgestellt werden, parst die Befehle und initiiert die Ausführung der Befehle. Die Befehle können E/A-Befehle (z.B. Lesen, Schreiben) einschließen. Der Befehlsprozessor 240 kommuniziert mit dem Backend-Modul 210, um die E/A-Befehle auszuführen.
  • Der Steuerungsinitialisierer 250 handhabt die Initialisierung der Speichersteuerung 122. Die Initialisierung kann Werte in verschiedenen Registern in dem nichtflüchtigen Speichersystem 100 festlegen sowie Eingabe/Ausgabe-(E/A-)Warteschlangen erstellen. Die E/A-Warteschlangen können E/A-Befehlsübermittlungswarteschlangen einschließen, auf die der Host E/A-Befehle wie etwa Lese- und Schreibbefehle stellt. Die E/A-Warteschlangen können E/A-Befehlsabschlusswarteschlangen einschließen, auf welche die Speichersteuerung 122 Antworten auf die E/A-Befehle setzt, die in den E/A-Befehlsübermittlungswarteschlangen platziert wurden. In einer Ausführungsform sendet während der Initialisierung der Host Befehle an die Speichersteuerung 122, die Adressen der E/A-Warteschlangen spezifiziert. Die Befehle können auch eine Datenzuordnung zwischen E/A-Abschlusswarteschlangen und E/A-Übermittlungswarteschlangen spezifizieren.
  • Der Steuerungsinitialisierer 250 ist eingerichtet, um in einer Ausführungsform eine partielle Rücksetzung der Speichersteuerung 122 zu verwalten. Die partielle Rücksetzung kann von dem Host eingeleitet werden. Die partielle Rücksetzung kann an einem bestimmten Punkt durchgeführt werden, nachdem die nichtflüchtige Speichersteuerung 122 eingeleitet wurde. Die partielle Rücksetzung bringt die nichtflüchtige Speichersteuerung 122 in einen partiellen Rücksetzzustand, in dem einige Initialisierungsparameter erhalten bleiben. Die partielle Rücksetzung kann auch als partielle Neuinitialisierung bezeichnet werden. Die partielle Neuinitialisierung kann im Vergleich zu einer Initialisierung, die zum Beispiel E/A-Warteschlangen erzeugt, in beträchtlichem Maße Zeit sparen. Zum Beispiel muss der Host während einer Ausführungsform einer partiellen Neuinitialisierung keine Befehle an die Speichersteuerung 122 senden, um Adressen der E/A-Warteschlangen zu spezifizieren. Auch muss der Host während einer Ausführungsform einer partiellen Neuinitialisierung keine Befehle an die Speichersteuerung 122 senden, um eine Datenzuordnung zwischen E/A-Abschlusswarteschlangen und E/A-Übermittlungswarteschlangen zu spezifizieren.
  • Die Komponenten der Speichersteuerung 122, die in 2A dargestellt sind, können die Form einer gepackten funktionellen Hardwareeinheit (z.B. einer elektrischen Schaltlogik), die zur Verwendung mit anderen Komponenten konzipiert ist, eines Abschnitts eines Programmcodes (z.B. Software oder Firmware), der durch einen (Mikro-)Prozessor oder eine Verarbeitungsschaltlogik ausführbar ist, die üblicherweise eine bestimmte Funktion von in Beziehung stehenden Funktionen ausführt, oder einer abgeschlossenen Hardware- oder Softwarekomponente, die eine Schnittstelle zum Beispiel mit einem größeren System hat, annehmen. Zum Beispiel kann jedes Modul eine anwendungsspezifische integrierte Schaltung (ASIC), ein feldprogrammierbares Gate-Array (FPGA), eine Schaltung, eine digitale Logikschaltung, eine analoge Schaltung, eine Kombination diskreter Schaltungen, Gatter oder irgendeine andere Art von Hardware oder Kombination davon einschließen. Alternativ oder zusätzlich kann jedes Modul Software einschließen, die in einer prozessorlesbaren Vorrichtung (z.B. einem Speicher) gespeichert ist, um einen Prozessor für die Speichersteuerung 122 zu programmieren, um die hierin beschriebenen Funktionen auszuführen.
  • Unter erneuter Bezugnahme auf Module der Speichersteuerung 122 verwaltet ein Zwischenspeichermanager/eine Bussteuerung 214 Puffer im Direktzugriffsspeicher (RAM) 122b und steuert die interne Busarbitrierung der Speichersteuerung 122. Ein Nur-LeseSpeicher (ROM) 122a speichert den Systembootcode. Obwohl in 2A als von der Speichersteuerung 122 getrennt angeordnet veranschaulicht, können in anderen Ausführungsformen einer oder beide RAM 122b und ROM 122a innerhalb der Steuerung angeordnet sein. In noch anderen Ausführungsformen können sich Abschnitte des RAM und des ROM sowohl innerhalb der Speichersteuerung 122 als auch außerhalb der Steuerung befinden. Ferner können in einigen Implementierungen die Speichersteuerung 122, RAM 122b und ROM 122a auf separaten Halbleiter-Dies angeordnet sein.
  • Das Frontend-Modul 208 schließt eine Host-Schnittstelle 220 und eine Physical-Layer-Schnittstelle (PHY) 222 ein, welche die elektrische Schnittstelle mit dem Host oder dem Speichercontroller der nächsten Ebene bereitstellen. Die Wahl des Typs der Host-Schnittstelle 220 kann von dem Typ des verwendeten Speichers abhängen. Beispiele der Host-Schnittstellen 220 schließen Serial Advanced Technology Attachment (SATA), SATA Express, ein seriell angeschlossenes SCSI (SAS), einen Fibre Channel, einen Universal Serial Bus (USB), Peripheral Computer Interconnect Express (PCle) und Nov-volatile Memory Express (NVMe) ein, sind aber nicht darauf beschränkt. Die Host-Schnittstelle 220 unterstützt üblicherweise die Übertragung von Daten, Steuersignalen und Taktsignalen.
  • Das Backend-Modul 210 schließt eine Fehlerkorrekturcode-Maschine (ECC-Maschine) 224 ein, die die von dem Host empfangenen Datenbytes codiert, und die aus dem nichtflüchtigen Speicher gelesenen Datenbytes dekodiert und Fehler korrigiert. Ein Befehlssequenzer 226 erzeugt Befehlssequenzen wie Programmier- und Löschbefehlssequenzen zur Übermittlung an den nichtflüchtigen Speicherchip 108. Ein RAID-Modul (Redundant Array of Independent Dies) 228 verwaltet die Generierung einer RAID-Parität und die Wiederherstellung ausgefallener Daten. Die RAID-Parität kann als ein zusätzlicher Integritätsschutz für die Daten verwendet werden, die in das nichtflüchtige Speichersystem 100 geschrieben werden. In einigen Fällen kann das RAID-Modul 228 Teil des ECC-Engine 224 sein. Es ist zu beachten, dass die RAID-Parität als zusätzlicher Chip oder zusätzliche Chips hinzugefügt werden kann, aber sie kann auch innerhalb des bestehenden Chips hinzugefügt werden, z. B. als extra Ebene oder extra Block oder extra WLs innerhalb eines Blocks. Eine Speicherschnittstelle 230 stellt die Befehlssequenzen für den nichtflüchtigen Speicherchip 108 bereit und empfängt Statusinformationen von dem nichtflüchtigen Speicherchip 108. In einer Ausführungsform kann die Speicherschnittstelle 230 eine Double Data Rate-Schnittstelle (DDR-Schnittstelle), wie eine Schnittstelle für den Toggle-Modus 200, 400 oder 800 sein. Eine nichtflüchtige Speichersteuerungsebene (NVM) 232 steuert den gesamten Betrieb des Backend-Moduls 210. In einer Ausführungsform ist die NVM-Steuerungsschicht 232 eine Flash-Steuerungsschicht.
  • Zusätzliche Komponenten des Systems 100, das in 2A veranschaulicht ist, schließen die Medienverwaltungsschicht 238, die den Abnutzungsausgleich von Speicherzellen des nichtflüchtigen Speicherchips 108 durchführt, ein. Das System 100 schließt auch andere diskrete Komponenten 248 ein, wie externe elektrische Schnittstellen, externen RAM, Widerstände, Kondensatoren oder andere Bauteile, die mit der Speichersteuerung 122 verbunden sein können. In alternativen Ausführungsformen sind eine oder mehrere der Physical-Layer-Schnittstelle 222, des RAID-Moduls 228, der Medienverwaltungsschicht 238 und der Zwischenspeicherverwaltungs-/Bussteuerung 214 optionale Komponenten, die in der Speichersteuerung 122 nicht erforderlich sind.
  • Die Medienverwaltungsschicht (MML) 238 (die in einer Ausführungsform eine Flash-Umwandlungsschicht (FTL) ist) kann als Teil der Speicherzellenverwaltung integriert sein, welche die Speicherzellenfehler und Schnittstellenbildung mit dem Host handhaben kann. Insbesondere kann MML ein Modul in der Flash-Verwaltung sein und für die Interna der NAND-Verwaltung verantwortlich sein. Insbesondere kann die MML 238 einen Algorithmus in der Firmware der Speichervorrichtung enthalten, der Schreibvorgänge vom Host in Schreibvorgänge in die Speicherstruktur 126 des Chips 108 übersetzt. MML 238 kann erforderlich sein, weil: 1) der Speicher eine eingeschränkte Belastbarkeit hat; 2) die Speicherstruktur 126 nur in Mehrfachen von ECC-Seiten geschrieben werden kann; und/oder 3) die Speicherstruktur 126 nicht beschrieben werden kann, falls sie nicht als Block gelöscht wird. Die MML 238 versteht diese potentiellen Begrenzungen der Speicherstruktur 126, die für den Host möglicherweise nicht sichtbar sind. Dementsprechend versucht die MML 238, die Schreibvorgänge vom Host in Schreibvorgänge in die Speicherstruktur 126 zu übersetzen.
  • Die Speichersteuerung 122 kann mit einem oder mehreren Speicherchips 108 verbunden sein. In einer Ausführungsform implementieren die Speichersteuerung 122 und mehrere Speicherchips (die zusammen das nichtflüchtige Speichersystem 100 aufweisen) ein Festkörperlaufwerk (SSD), das ein Festplattenlaufwerk innerhalb eines Hosts als NAS-Vorrichtung (Network Attached Storage), Laptop, Tablet usw. emulieren, ersetzen oder als solches verwendet werden kann. Darüber hinaus muss das SSD nicht als Festplattenlaufwerk betrieben werden.
  • 2B ist ein Blockdiagramm des beispielhaften nichtflüchtigen Speichersystems 100 und des Host-Systems 140. In einer Ausführungsform ist das System von 2B ein Festplattenlaufwerk. In einer Ausführungsform kann das Host-System 140 den Host-Speicher 160 verwenden, um eine Admin-Übermittlungswarteschlange 152, eine Admin-Abschlusswarteschlange 154, eine oder mehrere E/A-Befehlsübermittlungswarteschlangen (SQs) 162 und eine oder mehrere E/A-Befehlsabschlusswarteschlangen (CQs) 164 zu speichern. Es ist zu beachten, dass die Bezugszahl 162 hierin verwendet wird, ob auf eine spezifische SQ oder SQs im Allgemeinen Bezug genommen wird. Gleichermaßen wird die Bezugszahl 164 hierin verwendet, ob auf eine spezifische CQ oder CQs im Allgemeinen Bezug genommen wird. Ferner kann der Begriff „E/A-Warteschlange“ als allgemeiner Begriff verwendet werden, um auf die SQs 162 und CQs 164 Bezug zu nehmen.
  • Die Admin-Übermittlungswarteschlange 152 und die Admin-Abschlusswarteschlange 154 können verwendet werden, um die Speichersteuerung 122 zu steuern und zu verwalten. Zum Beispiel kann die Host-Steuerung 180 Administratorbefehle in die Admin-Übermittlungswarteschlange 152 stellen. In einer Ausführungsform sind die Admin-Übermittlungswarteschlange 152 und die Admin-Abschlusswarteschlange 154 eine NVMe-Admin-Übermittlungswarteschlange beziehungsweise eine Admin-Abschlusswarteschlange.
  • Die Host-Steuerung 180 stellt E/A-Befehle in die SQs 162. Die E/A-Befehle schließen Befehle ein, um auf die Speicherstruktur 126 in dem Speicherchip 108 zuzugreifen. Zum Beispiel könnte ein E/A-Befehl darin bestehen, von der Speicherstruktur 126 zu lesen oder in diese zu schreiben. In einer Ausführungsform ist eine SQ 162 ein Ringpuffer mit einem Slot fester Größe. In einer Ausführungsform informiert der Host die nichtflüchtige Speichervorrichtung, wenn ein neuer Befehl in eine SQ 162 gestellt wurde. Ein solcher Mechanismus wird hierin als „Doorbell“ bezeichnet. Der Begriff „Doorbell“ nimmt auf ein Register in der Speichersteuerung 122 Bezug, das als ein „Doorbell-Register“ bezeichnet wird. In einer Ausführungsform sind SQs 162 und CQs 164 NVMe-Befehlsübermittlungsschlangen beziehungsweise Befehlsabschlusswarteschlangen.
  • Die Speichersteuerung 122 kann in eine zugeordnete CQ 164 schreiben, um den Status für beendete Befehle zu senden. In einer Ausführungsform ist eine CQ 164 ein Ringpuffer mit einem Slot fester Größe. Der Begriff „Warteschlange“ wie hierin verwendet (einschließlich, aber nicht begrenzt auf die Admin-Übermittlungswarteschlange 152, Admin-Abschlusswarteschlange 154, SQs 162 und CQs 164) bedeutet nichtflüchtiger Speicher, der eine Datenstruktur enthält. Der nichtflüchtige Speicher kann zum Beispiel Host-Speicher 160, RAM 122b, Speicherstruktur 126 usw. sein. Somit sind die Admin-Übermittlungswarteschlange 152, die Admin-Abschlusswarteschlange 154, SQs 162 und CQs 164 in einigen Ausführungsformen Software-Warteschlangen.
  • Der Host-Speicher 160 kann auch verwendet werden, um E/A-Warteschlangemetadaten 166 zu speichern. Die E/A-Warteschlangemetadaten 166 sind Daten über die Admin-Warteschlangen 152, 154, SQs 162 und CQs 164. Die E/A-Warteschlangemetadaten 166 können die Adressen der verschiedenen Warteschlangen 152, 154, 162, 164 einschließen. In einer Ausführungsform befinden sich die Adressen im Host-Speicher 160. Es ist zu beachten, dass eine oder mehrere Warteschlangen 152, 154, 162, 164 sich in einem Speicher auf dem Speichersystem 100 befinden könnten (siehe zum Beispiel 2C). Die E/A-Warteschlangemetadaten könnten die Größe jeder Warteschlange einschließen. Zum Beispiel kann eine Basisadresse und -größe für eine gegebene Warteschlange vorhanden sein. Es ist zu beachten, dass eine gegebene Warteschlange in dem Host-Speicher 160 nicht notwendigerweise fortlaufend sein muss. Somit könnte es für eine gegebene Warteschlange mehrere Zeiger zu Plätzen in dem Host-Speicher 160 geben.
  • Die E/A-Warteschlangemetadaten 166 können auch eine Kennung für jede Warteschlange enthalten. In einer Ausführungsform wird den Admin-Warteschlangen 152, 154 jeweils die Kennung „0“ zugewiesen. Die E/A-Warteschlangemetadaten 166 können auch eine Datenzuordnung zwischen SQs 162 und CQs 164 enthalten. In einer Ausführungsform wird jede SQ 162 auf eine CQ 164 abgebildet. Dies wird verwendet, um zu spezifizieren, in welche CQ 164 die Speichersteuerung 122 Befehlsantworten für Befehle von einer gegebenen SQ 162 stellen sollte. Es ist zu beachten, dass die „Befehlsantworten“ auch als „Befehlsstatus“ bezeichnet werden. In einer Ausführungsform können mehrere SQs 162 auf der gleichen CQ 164 abgebildet werden.
  • Die E/A-Warteschlangemetadaten 166 können auch einen Interruptvektor für eine CQ 164 spezifizieren. In einer Ausführungsform ist jede CQ 164 einem Interruptvektor zugeordnet. Die Speichersteuerung 122 kann auf den Interruptvektor schreiben, der einer CQ 164 zugeordnet ist, wenn eine oder mehrere Befehlsantworten in die CQ gestellt werden. Es ist zu beachten, dass ein gegebener Interruptvektor mehr als einer CQ 164 zugeordnet sein könnte.
  • Die E/A-Warteschlangemetadaten 166 können auch Anfangszeiger und Endzeiger für die Warteschlangen 152, 154, 162, 164 enthalten, die von dem Warteschlangenmanager 146 gewartet werden können. In einer Ausführungsform ist ein Anfangszeiger ein Index, der einen Slot oder Eintrag einer Warteschlange spezifiziert. Gleichermaßen ist in einer Ausführungsform ein Endzeiger ein Index, der einen Slot oder Eintrag einer Warteschlange spezifiziert.
  • Der Endzeiger für die Admin-Übermittlungswarteschlange 152 kann auf den letzten Admin-Befehl zeigen, den der Host 140 in die Admin-Übermittlungswarteschlange 152 gestellt hat. Der Anfangszeiger für die Admin-Übermittlungswarteschlange 152 kann verwendet werden, um den nächsten freien Slot auf der Admin-Abschlusswarteschlange 152 zu verfolgen. Der Endzeiger für die Admin-Abschlusswarteschlange 154 kann auf die letzte Antwort auf einen Admin-Befehl zeigen, den die Speichersteuerung in die Admin-Abschlusswarteschlange 154 gestellt hat. Der Anfangszeiger für die Admin-Abschlusswarteschlange 154 kann verwendet werden, um den nächsten freien Slot in der Admin-Abschlusswarteschlange 154 zu verfolgen.
  • Der Endzeiger für eine SQ 162 kann auf den letzten E/A-Befehl zeigen, den der Host 140 in die SQ 162 gestellt hat. Der Anfangszeiger für SQ 162 kann verwendet werden, um den nächsten freien Slot auf der SQ 162 zu verfolgen. Der Endzeiger für eine CQ 164 kann auf die letzte Antwort auf einen E/A-Befehl zeigen, den die Speichersteuerung in die CQ 164 gestellt hat. Der Anfangszeiger für die CQ 164 kann verwendet werden, um den nächsten freien Slot auf der CQ 164 zu verfolgen.
  • In einigen Ausführungsformen sendet die Speichersteuerung 122 eine Interruptnachricht, um den Host 140 zu informieren, dass eine oder mehrere Befehlsantworten in eine CQ 164 gestellt wurden. Die Interruptnachricht kann einen Interruptvektor spezifizieren. Der Inhalt der Interruptnachricht kann je nach Implementierung variieren. Zum Beispiel kann die Interruptnachricht eine Adresse und Daten enthalten, welche zusammen in einer Ausführungsform einen Interrupt auslösen. Die Kombination aus der Adresse und den Daten bildet in einer Ausführungsform einen „Interruptvektor“. In einer Ausführungsform sind die Interruptnachrichten MSI (Message Signaled Interrupts). In einer Ausführungsform sind die Interruptnachrichten MSI-X (was eine Erweiterung von MSI ist). Es ist zu beachten, dass das „Schreiben in einen Interruptvektor“, wie der Ausdruck hierin verwendet wird, dadurch erreicht werden kann, dass die Speichersteuerung 122 eine Interruptnachricht, wie etwa eine MSI- oder MSI-X-Nachricht, sendet.
  • Es ist zu beachten, dass ein Abschnitt des Host-Speichers 160 für Datenpuffer verwendet werden kann, in denen das Host-System 140 Host-Daten, die in die Speicherstruktur 126 geschrieben werden sollen, speichern kann. Auch kann die Speichersteuerung 122 Host-Daten speichern, die von der Speicherstruktur 126 in die Datenpuffer im Host-Speicher 160 gelesen wurden. Jedoch wurde dieser Abschnitt des Host-Speichers 160 in 2A nicht dargestellt.
  • Das Host-System 140 weist eine Host-Steuerung 180 auf. Eine Host-Steuerung 180, wie der Begriff hierin verwendet wird, ist eine Vorrichtung, die mit einer nichtflüchtigen Speichersteuerung 122 kommuniziert, um auf einen nichtflüchtigen Speicher zuzugreifen, welcher der Steuerung der nichtflüchtigen Speichersteuerung 122 unterliegt. Die Host-Steuerung 180 kann eingerichtet sein, um Host-Steuerfunktionen eines Speicherzugriffprotokolls einschließlich, aber nicht begrenzt auf NVMe, zu implementieren. Es ist zu beachten, dass die Host-Steuerung 180 eingerichtet sein kann, um Techniken zu implementieren, die Erweiterungen eines Speicherzugriffsprotokolls wie NVMe sein können.
  • Die Host-Steuerung 180 weist einen Warteschlangenmanager 146 auf, der so eingerichtet sein kann, um die Admin-Übermittlungswarteschlange 152, die Admin-Abschlusswarteschlange 154, SQs 162 und CQs 164 zu verwalten. Der Warteschlangenmanager 146 ist eingerichtet, um in einer Ausführungsform dem Host-Speicher 160 für die Warteschlangen 152, 154, 162, 164 Speicherplatz zuzuweisen. Wie oben erwähnt, könnten eine oder mehrere der Warteschlangen 152, 154, 162, 164 im Speicher in dem Speichersystem 100 angeordnet sein. In diesem Fall kann der Warteschlangenmanager 146 eingerichtet sein, um in einer Ausführungsform dem Speichersystem 100 für eine oder mehrere der Warteschlangen 152, 154, 162, 164 Speicherplatz zuzuweisen. Der Warteschlangenmanager 146 ist eingerichtet, um in einer Ausführungsform Anfangszeiger und Endzeiger der Warteschlangen 152, 154, 162, 164 beizubehalten.
  • Die Host-Steuerung 180 weist einen Speichersteuerungsinitialisierer 142 auf, der zum Einleiten der Speichersteuerung 122 eingerichtet sein kann. Der Speichersteuerungsinitialisierer 142 kann in Kombination mit dem Warteschlangenmanager 146 arbeiten, um eines oder mehrere des Folgenden während der Initialisierung durchzuführen. Ein Abschnitt des Host-Speichers 160 kann für die Admin-Übermittlungswarteschlange 152 und die Admin-Abschlusswarteschlange 154 zugewiesen werden. Der Speichersteuerungsinitialisierer 142 kann Admin-Befehle in die Admin-Übermittlungswarteschlange 152 stellen, um verschiedene Einstellungen für die Speichersteuerung 122 festzulegen sowie die Konfiguration der Speichersteuerung 122 zu lernen. Das Host-System 140 kann eine geeignete Anzahl von SQs 162 und CQs 164 auf Grundlage der Konfiguration der Speichersteuerung 122, der Anzahl von durch die Speichersteuerung 122 unterstützten Warteschlangen sowie anderer Faktoren zuordnen. Zum Beispiel kann das Host-System 140 Abschnitte des Host-Speichers 160 für SQs 162 und CQs 164 zuordnen. Der Speichersteuerungsinitialisierer 142 kann Adressen der SQs 162 und CQs 164 an die Speichersteuerung 122 senden.
  • Die Host-Steuerung 180 hat einen hostseitigen Partialrücksetzmanager 144, der zum Verwalten einer partiellen Rücksetzung der Speichersteuerung 122 eingerichtet ist. In einer Ausführungsform sendet der hostseitige Partialrücksetzmanager 144 eine HardwareRücksetzung an die Speichersteuerung 122. Der hostseitige Partialrücksetzmanager 144 schreibt in einer Ausführungsform ein spezifisches Register in die Speichersteuerung 122, um die partielle Rücksetzung auszulösen. Der hostseitige Partialrücksetzmanager 144 sendet in einer Ausführungsform einen Befehl (z.B. einen partiellen Rücksetzbefehl) an die Speichersteuerung 122, um die partielle Rücksetzung auszulösen. Dieser partielle Rücksetzbefehl kann in die Admin-Übermittlungswarteschlange 152 als ein Beispiel gestellt werden. Der partielle Rücksetzbefehl ist in einer Ausführungsform ein herstellerspezifischer Befehl in einem Speicherzugriffsprotokoll. Der partielle Rücksetzbefehl ist in einer Ausführungsform ein herstellerspezifischer Befehl in einem NVMe-Protokoll.
  • Der hostseitige Partialrücksetzmanager 144 kann auch bestimmte Aufgaben auf dem Host-System 140 handhaben, wie etwa das Zurücksetzen der Speicherinhalte der SQs 162 und CQs 164 in dem Hostspeicher 160 nach einer teilweisen Rücksetzung der Speichersteuerung 122. Der hostseitige Partialrücksetzmanager 144 kann auch Inhalte der Admin-Warteschlange 152 und/oder einer Admin-Abschlusswarteschlange nach einer partiellen Rücksetzung der Speichersteuerung 122 in bestimmten Ausführungsformen zurücksetzen. Der hostseitige Partialrücksetzmanager 144 kann mindestens einige der E/A-Warteschlangemetadaten 166 nach einer partiellen Rücksetzung der Speichersteuerung 122 behalten. Somit bleiben, obwohl die Inhalte der SQs 162 und CQs 164 zurückgesetzt werden, in einer Ausführungsform die Positionen der SQs 162 und CQs 164 unverändert. Es ist zu beachten, dass die Speichersteuerung 122 die Positionen der SQs 162 und CQs 164 speichern kann, wie unten beschrieben. Daher muss die Speichersteuerung 122 nach einer partiellen Rücksetzung der Speichersteuerung 122 nicht über den Platz der SQs 162 und CQs 164 informiert werden, was in beträchtlichem Maße Zeit sparen kann.
  • Der Speichersteuerungsinitialisierer 142, der hostseitige Partialrücksetzmanager 144 und der Warteschlangenmanager 146 können zum Beispiel in Form einer gepackten funktionalen Hardwareeinheit (z.B. einer elektrischen Schaltung), die zur Verwendung mit anderen Komponenten bestimmt ist, eines Abschnitts eines Programmcodes (z.B. Software oder Firmware), der von einem (Mikro)Prozessor oder einer Prozessorschaltung (oder einem oder mehreren Prozessoren), die üblicherweise eine bestimmte Funktion zugehöriger Funktionen durchführt, ausführbar ist, oder einer eigenständigen Hardware- oder Softwarekomponente, die mit einem größeren System verbunden ist, vorliegen. Zum Beispiel kann jedes Modul eine anwendungsspezifische integrierte Schaltung (ASIC), ein feldprogrammierbares Gate-Array (FPGA), eine Schaltung, eine digitale Logikschaltung, eine analoge Schaltung, eine Kombination diskreter Schaltungen, Gatter oder irgendeine andere Art von Hardware oder Kombination davon einschließen. Alternativ oder zusätzlich kann jedes Modul Software einschließen oder umfassen, die in einer prozessorlesbaren Vorrichtung (z.B. Host-Speicher 160) gespeichert ist, um einen oder mehrere Prozessoren 150 zur Durchführung des einen oder der mehreren Prozessoren zu programmieren.
  • Die Speichersteuerung 122 zeigt weitere Details einer Ausführungsform des Befehlsprozessors 240. Die Speichersteuerung 122 zeigt weitere Details einer Ausführungsform des Steuerungsinitialisierers 250. Die Speichersteuerung 122 weist auch eine Anzahl von Registern 252 auf.
  • Die Register 252 können verwendet werden, um Informationen zur Erleichterung der Implementierung eines Speicherzugriffsprotokolls (wie etwa, aber nicht begrenzt auf, NVMe) zu speichern. Die Register 252 können verwendet werden, um Informationen zur Erleichterung der Implementierung eines Busübertragungsprotokolls, wie etwa von PCIe-Registern, zu speichern. Das Host-System 140 kann auf eines oder mehrere der Register 252 zugreifen. Es kann ein Basisadressenregister von Admin-Übermittlungswarteschlangen geben, welches das Host-System 140 schreiben kann, um die Basisadresse der Admin-Übermittlungswarteschlange 152 bereitzustellen. Es kann ein Basisadressenregister von Admin-Übermittlungswarteschlangen geben, welches das Host-System 140 schreiben kann, um die Basisadresse der Admin-Abschlusswarteschlange 154 bereitzustellen.
  • Die Register 252 können eine Anzahl von „Doorbell-Registern“ einschließen. Hierin ist ein „Doorbell-Register“ ein Register, auf das entweder der Host 140 oder die Speichersteuerung 122 schreibt, um die andere Seite zu informieren, dass es einen neuen Eintrag in einer Admin-Übermittlungswarteschlange 152, einer Admin-Abschlusswarteschlange 154, von SQ 162 oder CQ 164 gibt. Es ist zu beachten, dass die Register 252 mit jeder Art von Speicherung implementiert werden können. Zum Beispiel können einige oder alle der Register 252 mit Flipflops implementiert werden. Jedoch könnten einige oder alle der Register 252 in RAM 122b (z.B. SRAM, DRAM) implementiert sein. Einige oder alle der Register 252 können in den Speicherzellen in der Struktur 126 (z.B. Speichervorrichtungsregion 126a) implementiert sein. Die Doorbell-Register können auch als „Doorbell-Speicher“ bezeichnet werden.
  • Die Doorbell-Register schließen in einer Ausführungsform einen Satz von Tail-Doorbell-Registern der Übermittlungswarteschlange ein. Jedes Tail-Doorbell-Register einer Übermittlungswarteschlange gilt in einer Ausführungsform entweder für die Admin-Übermittlungswarteschlange 152 oder eine der SQs 162. Ein „Tail-Doorbell-Register einer Übermittlungswarteschlange“ (welches auch als ein „Übermittlungswarteschlangen-Doorbell-Register“ bezeichnet werden kann) wird in einer Ausführungsform von dem Host 140 geschrieben, um die Speichersteuerung 122 zu informieren, dass der Host 140 einen oder mehrere Befehle in die zugeordnete Admin-Übermittlungswarteschlange 152 oder SQ 162 gestellt hat.
  • Die Doorbell-Register schließen in einer Ausführungsform einen Satz von Head-Doorbell-Registern einer Abschlusswarteschlange ein. Jedes Head-Doorbell-Register einer Abschlusswarteschlange gilt in einer Ausführungsform entweder für die Admin-Übermittlungswarteschlange 154 oder eine der CQs 164. Ein „Head-Doorbell-Register einer Abschlusswarteschlange“ (welches auch als ein „Abschlusswarteschlangen-Doorbell-Register“ bezeichnet werden kann) wird in einer Ausführungsform von der Speichersteuerung 122 geschrieben, um den Host 140 zu informieren, dass die Speichersteuerung 122 eine oder mehrere Befehlsantworten in die zugeordnete Admin-Abschlusswarteschlange 154 oder CQ 164 gestellt hat. Es ist zu beachten, dass in einer Ausführungsform der Host 140 Abschlusswarteschlangen-Doorbell-Register nicht pollen muss, um über neue Befehlsantworten zu lernen. Stattdessen sendet die Speichersteuerung 122 einen Interrupt an den Host 140, um zu benachrichtigen, dass eine oder mehrere Befehlsantworten zum Beispiel in eine CQ 164 gestellt wurden. Die Register 252 müssen nicht die gesamte gerade beschriebene Funktionalität enthalten. Auch kann es viele andere Arten von Registern 252 geben, die hierin nicht ausdrücklich beschrieben sind.
  • Der Befehlsprozessor 240 schließt einen Befehlsmanager 242 und eine DMA-Logik 244 ein. Der Befehlsmanager 242 ist eingerichtet, um Befehle von SQs 162 abzurufen und zu parsen. Der Befehlsmanager 242 kann auch die Befehle intern in der Warteschlange (d.h. innerhalb der Speichersteuerung 122) zur Ausführung reihen. In einer Ausführungsform bestimmt der Befehlsmanager 242, wann ein Befehl von der internen Warteschlange (innerhalb der Speichersteuerung 122) an einen Befehlsausführer innerhalb eines Backend-Moduls der Speichersteuerung gesendet werden soll. In einer Ausführungsform sendet der Befehlsmanager 242 auch eine Anzeige an das Host-System 140, wenn ein Befehl abgeschlossen ist. Zum Beispiel könnte der Befehlsmanager 242 Befehlsantworten auf einer CQ 164 speichern, wenn ein Befehl (wie etwa ein Lese- oder Schreibbefehl) abgeschlossen ist. Der Befehlsmanager 242 kann in einen Interruptvektor schreiben, nachdem er eine oder mehrere Befehlsantworten in eine CQ 164 gestellt hat.
  • Der Befehlsmanager 242 ist auch zum Abrufen und Parsen von Befehlen aus der Admin-Übermittlungswarteschlange 152 eingerichtet. In einer Ausführungsform kann einer der Befehle, der abgerufen wird, für die Speichersteuerung 122 als ein „E/A-Warteschlangenerzeugungsbefehl“ bezeichnet werden. Der E/A-Warteschlangenerzeugungsbefehl enthält in einer Ausführungsform Metadaten über entweder eine SQ 162 oder eine CQ 164. Die Metadaten können eines oder mehrere von Folgendem einschließen: Speicherplatz (Speicherplätze) einer Warteschlange, Größe der Warteschlange, Kennung der Warteschlange, Kennung einer SQ 162 in Verbindung mit einer CQ 164 und/oder einen Interruptvektor, um nach dem Setzen einer oder mehrerer Befehlsantworten in eine CQ 164 zu schreiben. Der Befehlsmanager 242 speichert diese Metadaten in einer Ausführungsform als Warteschlangemetadaten 258.
  • Die DMA-Logik 244 ist eingerichtet, um die DMA-Übertragung von Daten zwischen der nichtflüchtigen Speichervorrichtung 100 und dem Host-Speicher 160 in dem Host-System 140 zu steuern.
  • Der Initialisierer 250 weist einen MC-(Speichersteuerung-)seitigen Partialrücksetzmanager 254 und einen Warteschlangemetadatenmanager 256 auf. Der MC-seitige Partialrücksetzmanager 254 ist in einer Ausführungsform eingerichtet, um eine partielle Rücksetzung der Speichersteuerung 122 zu verwalten. In einer Ausführungsform setzt der MC-seitige Partialrücksetzmanager 254 Kopf- und Endzeiger der E/A-Warteschlangen 162, 164 zurück, welche die Speichersteuerung 122 verwendet. Diese Zeiger befinden sich in der Regel auf dem Speichersystem 100, wie etwa in den Registern 252. Der MC-seitige Partialrücksetzmanager 254 setzt in einer Ausführungsform Doorbell-Register (in Registern 252) zurück, um die Kopf- und Endzeiger der E/A-Warteschlangen 162, 164 zurückzusetzen.
  • Der Warteschlangemetadatenmanager 256 ist eingerichtet, Warteschlangemetadaten 258 in dem Speicher 251 zu speichern. Die Warteschlangemetadaten 258 enthalten in einer Ausführungsform Informationen über SQs 162 und CQs 164. Der Warteschlangemetadatenmanager 256 kann Metadaten über die SQs 162 und CQs 164 in Metadatenwarteschlangen 258 speichern, wenn die Speichersteuerung 122 initialisiert wird. Beispielsweise kann Host 140 die Speicheradresse der SQs 162 und CQs 164 während der Initialisierung an die Speichersteuerung 122 weiterleiten, wobei der Warteschlangemetadatenmanager 256 die Speicheradresse der SQs 162 und CQs 164 in Speicher 251 als Warteschlangemetadaten 258 speichern kann. In einer Ausführungsform sind die Speicheradressen der SQs 162 und CQs 164 Adressen im Host-Speicher 160.
  • Die Warteschlangemetadaten 258 können eine Kennung für jede Warteschlange einschließen. Die E/A-Warteschlangemetadaten 258 können auch eine Datenzuordnung zwischen SQs 162 und CQs 164 enthalten. Die Warteschlangemetadaten 258 können auch einen Interruptvektor für eine CQ 164 spezifizieren. In einer Ausführungsform werden die Interruptvektoren in den Registern 252 gespeichert.
  • Die Warteschlangemetadaten 258 können auch Anfangszeiger und Endzeiger für die Warteschlangen 152, 154, 162, 164 enthalten. Eine Ausführungsform der Anfangszeiger und Endzeiger wurde mit Bezug auf die E/A-Warteschlangemetadaten 166 in dem Host-Speicher 160 beschrieben. Es ist zu beachten, dass der Warteschlangemetadatenmanager 256 Kopien der Anfangszeiger und Endzeiger für die Warteschlangen 152, 154, 162, 164 unabhängig von der Kopien in dem Host-Speicher 160 behalten kann.
  • Speicher 251 könnte in einen flüchtigen Speicher (z.B. RAM 122b von 2A) oder einen nichtflüchtigen Speicher (z.B. Speicherstruktur 126) implementiert werden. In einer Ausführungsform wird mindestens ein Abschnitt des Speichers 251 in den Registern 252 implementiert. Zum Beispiel könnten Interrupt-Vektoren in Registern 252 implementiert werden. Auch Doorbell-Register können verwendet werden, um Endzeiger in SQs 162 aufzunehmen, ebenso wie Anfangszeiger in CQs 164. Es ist jedoch zu beachten, dass die Speichersteuerung 122 Kopien der Endzeiger in SQs 162 sowie der Anfangszeiger in CQs 164 behalten kann, unabhängig von den Doorbell-Registern. In einer Ausführungsform wird eine Kopie der Warteschlangemetadaten 258 in einem nichtflüchtigen Speicher gespeichert, so dass die Warteschlangemetadaten 258 in dem Fall bestehen bleiben, wenn Leistung verloren geht.
  • Die Komponenten der Speichersteuerung 122, die in 2B dargestellt sind, können die Form einer gepackten funktionellen Hardwareeinheit (z.B. einer elektrischen Schaltlogik), die zur Verwendung mit anderen Komponenten konzipiert ist, eines Abschnitts eines Programmcodes (z.B. Software oder Firmware), der durch einen (Mikro-)Prozessor oder eine Verarbeitungsschaltlogik ausführbar ist, die üblicherweise eine bestimmte Funktion von in Beziehung stehenden Funktionen ausführt, oder einer abgeschlossenen Hardware- oder Softwarekomponente, die eine Schnittstelle zum Beispiel mit einem größeren System hat, annehmen. Zum Beispiel können alle Module oder ein Abschnitt jedes Moduls eine anwendungsspezifische integrierte Schaltung (ASIC), ein feldprogrammierbares Gate-Array (FPGA), eine Schaltung, eine digitale Logikschaltung, eine analoge Schaltung, eine Kombination diskreter Schaltungen, Gatter oder irgendeine andere Art von Hardware oder Kombination davon einschließen. Alternativ oder zusätzlich können alle Module oder ein Abschnitt jedes Moduls Software einschließen oder aufweisen, die in einer prozessorlesbaren Vorrichtung (z.B. einem Speicher) gespeichert ist, um einen oder mehrere Prozessoren zu programmieren, damit die Steuerung 122 die hier beschriebenen Funktionen durchführt. Die in 2B dargestellte Architektur ist eine beispielhafte Implementierung, welche die Komponenten der in 1B dargestellten Speichersteuerung 122 (z.B. RAM 122b, ROM 122a, Prozessor 122c) verwenden kann (oder nicht).
  • 2C ist ein Diagramm einer anderen Ausführungsform einer nichtflüchtigen Speichervorrichtung 100 und eines Host-Systems 140. In dieser Ausführungsform werden SQs 162 und CQs 164 in dem Speicher 251 in der nichtflüchtigen Speichervorrichtung 100 gespeichert. Die Admin-Übermittlungswarteschlange 152 und die Admin-Abschlusswarteschlange 154 könnten auch in dem Speicher 251 auf der nichtflüchtigen Speichervorrichtung 100 gespeichert werden, sind aber in dem Hostspeicher 160 abgebildet. Die SQs 162 und CQs 164 können in einem flüchtigen Speicher (z.B. RAM 122b) oder nichtflüchtigen Speicher (z.B. Speicherstruktur 126) gespeichert werden. Zum Beispiel können die SQs 162 und CQs 164 in Flash-Speicherzellen in einem Speicherarray gespeichert werden. Der Abschnitt des Speichers, der die SQs 162 und CQs 164 (und optional die Admin-Übermittlungswarteschlange 152 und die Admin-Abschlusswarteschlange 154) speichert, kann als ein Steuerungszwischenspeicher (CMB) bezeichnet werden.
  • Die Übermittlungswarteschlangen (SQs) 162 in der nichtflüchtigen Speichervorrichtung 100 ermöglichen dem Host-System 140 in einer Ausführungsform, direkt Befehle in den internen Speicherplatz der Speichersteuerung zu schreiben. Dadurch ist es nicht unbedingt nötig, dass die Speichersteuerung 122 auf Befehle aus dem Host-Speicher 160 zugreift. Die auf CMB basierenden SQs 162 und CQs 164 (und optimal Admin-Übermittlungswarteschlange 152 und Admin-Abschlusswarteschlange 154) können auf eine ähnliche Weise verwendet werden, wenn die Warteschlangen in dem Host-Speicher 160 und dem Host-System 140 gespeichert werden. Ein Unterschied besteht darin, dass der Speicherplatz der Speichersteuerung anstelle des Host-Speichers 160 verwendet wird.
  • In einer Ausführungsform baut die Host-Steuerung 180 die E/A-Warteschlangen 162, 164 in dem Speicher 251 auf. Die E/A-Warteschlangemetadaten 166 können die Adressen der Admin-Warteschlangen 152, 154 in Host-Speicher 160 sowie Adressen von E/A-Warteschlangen 162, 164 in Speicher 251 einschließen. Die E/A-Warteschlangemetadaten könnten die Größe jeder Warteschlange einschließen. Die E/A-Warteschlangemetadaten 166 können auch eine Kennung für jede Warteschlange enthalten. Die E/A-Warteschlangemetadaten 166 können auch eine Datenzuordnung zwischen SQs 162 und CQs 164 enthalten. Die E/A-Warteschlangemetadaten 166 können auch einen Interruptvektor für eine CQ 164 spezifizieren.
  • Die Host-Steuerung 180 stellt der Speichersteuerung mindestens einige der E/A-Warteschlangemetadaten 166 bereit, welche als Warteschlangemetadaten 258 gespeichert werden können. Zum Beispiel kann der Host 140 die Adressen der E/A-Warteschlangen 162, 164 in Speicher 251 der Speichersteuerung 122 bereitstellen. Der Host 140 kann die Datenzuordnung zwischen SQs 162 und CQs 164 der Speichersteuerung 122 bereitstellen. Der Host 140 kann einen Interruptvektor für jede CQ 164 der Speichersteuerung bereitstellen.
  • Andere Variationen der in 2B und 2C dargestellten Ausführungsformen sind möglich. Zum Beispiel kann eine beliebige Teilmenge der Admin-Übermittlungswarteschlange 152, der Admin-Abschlusswarteschlange 154 und der SQs 162, CQs 164 in der nichtflüchtigen Speichervorrichtung 100 gespeichert werden. Auch die Anzahl von Warteschlangen jeder Art kann gemäß der Implementierung variieren. Obwohl eine einzelne Admin-Übermittlungswarteschlange 152 und eine einzelne Admin-Abschlusswarteschlange 154 mit Bezug auf 2B und 2C beschrieben wurde, könnte es zum Beispiel in einigen Ausführungsformen mehrere Admin-Übermittlungswarteschlangen 152 und/oder mehrere Admin-Abschlusswarteschlangen 154 geben. Zum Beispiel kann das Speichersystem 100 mit einem separaten Satz von Befehlswarteschlangen 152, 154 für jede NVME-Steuerung mehrere NVMe-Steuerungen aufweisen. Obwohl mehrere SQs 162 und mehrere CQs 164 mit Bezug auf 2B und 2C beschrieben wurden, könnte es in einigen Ausführungsformen eine einzelne SQ 162 und/oder eine einzelne CQ 164 geben.
  • 2A, 2B und 2C zeigen jeweils ein nichtflüchtiges Speichersystem 100 mit einer nichtflüchtigen Speichersteuerung. In derartigen Ausführungsformen weist das nichtflüchtige Speichersystem 100 mehr als eine nichtflüchtige Speichersteuerung auf. Zum Beispiel kann es in NVMe mehr als eine NVMe-Steuerung in einem Speichersystem 100 geben. Wenn es mehr als eine nichtflüchtige Speichersteuerung in einem nichtflüchtigen Speichersystem 100 gibt, kann in einer Ausführungsform jede der nichtflüchtigen Speichersteuerungen unabhängig von den anderen nichtflüchtigen Speichersteuerungen partiell zurückgesetzt werden.
  • 3 ist ein Flussdiagramm einer Ausführungsform eines Prozesses 300 zum Betreiben eines nichtflüchtigen Speichers. In einer Ausführungsform werden einige oder alle Schritte des Prozesses 300 in einem System wie etwa in 1B, 2A, 2B oder 2C durchgeführt. Einige der Schritte des Prozesses 300 können durch das Host-System 140 (z.B. durch die Host-Steuerung 180) durchgeführt werden, wobei andere von dem Speichersystem (z.B. von der Speichersteuerung 122) durchgeführt werden. In einer Ausführungsform wird der Prozess 300 für jede nichtflüchtige Speichersteuerung 122 in einem Speichersystem 100 getrennt durchgeführt.
  • Der Prozess 300 beginnt als Antwort auf eine Initialisierung der nichtflüchtigen Speichersteuerung 122. Es ist zu beachten, dass bei Beginn des Prozesses 300 keine der E/A-Warteschlangen 162, 164 erzeugt worden sind. Gleichermaßen wurden die Admin-Warteschlangen 152, 154 noch nicht erzeugt. In einer Ausführungsform basiert die Initialisierung der Speichersteuerung 122 auf einem NVMe-Protokoll. Jedoch ist die Initialisierungsphase nicht auf NVMe beschränkt. Die Initialisierung kann nach einer Leistung auf die Rücksetzung des Speichersystems 100 durchgeführt werden. Die Initialisierung kann verwendet werden, um Werte in Registern wie etwa PCIe-Registern einzurichten. Die Initialisierung kann verwendet werden, um eine Anzahl von SQs 162 und CQs 164 zu erzeugen.
  • Schritt 302 schließt den Host 140 ein, der Speicheradressen und Datenzuordnungen von E/A-Warteschlangen an die Speichersteuerung 122 bereitstellt. In einer Ausführungsform stellt der Host 140 Speicheradressen der SQs 162 und CQs 162 im Host-Speicher 160 bereit. In einer Ausführungsform stellt der Host 140 Speicheradressen der SQs 162 und CQs 162 in Speicher 251 auf dem Speichersystem 100 bereit. In einer Ausführungsform werden die Speicheradressen der SQs 162 in NVMe bereitgestellt, um E/A-Übermittlungswarteschlangenbefehle zu erzeugen. In einer Ausführungsform werden die Speicheradressen der CQs 162 in NVMe bereitgestellt, um E/A-Abschlusswarteschlangenbefehle zu erzeugen.
  • Es ist zu beachten, dass zum Bereitstellen von Speicheradressen von E/A-Warteschlangen Mittel vorgesehen sind, um ausreichend Informationen bereitzustellen, um den gesamten Speicherplatz einer gegebenen E/A-Warteschlange zu spezifizieren. Zum Beispiel könnte der Host 140 eine Basisadresse und eine Länge einer E/A-Warteschlange bereitstellen, die im Speicher zusammenhängend ist. In dem Fall, dass eine E/A-Warteschlange im Speicher nicht zusammenhängend ist, dann könnten als ein Beispiel die Informationen, die der Host 140 bereitstellt, eine Anzahl von Zeigern zu Zwischenspeichern einer gewissen festen Größe einschließen. Andere Techniken können verwendet werden, um den gesamten Speicherplatz einer gegebenen E/A-Warteschlange zu spezifizieren.
  • Schritt 302 schließt auch den Host 140 ein, der Datenzuordnungen zwischen den SQs 162 und den CQs 164 bereitstellt. Jede SQ 162 wird in einer Ausführungsform auf eine CQ 164 abgebildet. Die Datenzuordnung zwischen einer SQ 162 und einer CQ 164 kann als ein E/A-Warteschlangenpaar bezeichnet werden. Es ist zu beachten, dass in einer Ausführungsform mehrere SQs 162 auf dieselbe CQ 164 abgebildet werden können. Die Datenzuordnung teilt der Speichersteuerung 122 mit, welche CQ 164 verwendet werden sollte, um eine Befehlsantwort für einen E/A-Befehl zu platzieren, den der Host in eine SQ 162 gestellt hat.
  • Schritt 304 schließt die Speichersteuerung 122 ein, welche die Speicheradressen und die Datenzuordnungen der E/A-Warteschlangen 162, 164 speichert. Die Speichersteuerung 122 speichert in einer Ausführungsform die Adressen und Datenzuordnungen der E/A-Warteschlangen 162, 164 als Warteschlangemetadaten 258 in dem Speicher 251.
  • In Schritt 306 verwenden der Host 140 und die Speichersteuerung 122 E/A-Warteschlangen 162, 164 zum Verarbeiten von Befehlen. Der Host 140 kann Befehle (z.B. Lesen, Schreiben) in die SQs 162 stellen. Die Speichersteuerung 122 kann auf die Befehle zugreifen und sie ausführen. Die Speichersteuerung 122 kann Daten aus der Speicherstruktur 126 und DMA die Daten in den Host-Speicher 160 für eine Ausführungsform eines Lesebefehls lesen. Die Speichersteuerung 122 kann auf Daten aus dem Host-Speicher 160 zugreifen und diese Daten in die Speicherstruktur für eine Ausführungsform eines Schreibbefehls schreiben. Die Speichersteuerung 122 kann Befehlsantworten (für die Befehle, die der Host in die SQs 162 gestellt hat) in die CQs 164 stellen.
  • Schritt 308 schließt den Host 140 ein, der eine partielle Rücksetzung der Speichersteuerung 122 auslöst. In einer Ausführungsform sendet der Host 140 eine Hardwarerücksetzung an die Speichersteuerung 122. Der Host 140 schreibt in einer Ausführungsform ein spezifisches Register in die Speichersteuerung 122, um die partielle Rücksetzung auszulösen. Das Schreiben in ein bestimmtes Register in der Speichersteuerung 122 ist ein Beispiel eines Hardwaresignals, aber es könnten andere Hardwaresignale verwendet werden. Der Host 140 sendet in einer Ausführungsform einen Befehl (z.B. einen Partialrücksetzbefehl) an die Speichersteuerung 122, um die Partialrücksetzung auszulösen. Dieser partielle Rücksetzbefehl kann in die Admin-Übermittlungswarteschlange 152 als ein Beispiel gestellt werden. Der partielle Rücksetzbefehl ist in einer Ausführungsform ein herstellerspezifischer Befehl in einem Speicherzugriffsprotokoll. Der partielle Rücksetzbefehl ist in einer Ausführungsform ein herstellerspezifischer Befehl in einem NVMe-Protokoll.
  • Der Host 140 kann aus einer Vielzahl von Gründen bestimmen, die Partialrücksetzung auszulösen. Es kann sein, dass die Speichersteuerung 122 dem Host 140 einen Fehler berichtet hat. Der Host 140 kann bestimmen, dass eine partielle Rücksetzung der Speichersteuerung 122 die Wiederherstellung aus dem Fehler erleichtern kann. Durch die Durchführung der Partialrücksetzung wird darüber hinaus Zeit bei der Initialisierung der Speichersteuerung 122 eingespart. Beispielsweise müssen der Host 140 und die Speichersteuerung 122 keinen zeitaufwändigen Prozess durchlaufen, bei dem der Host die Adresse jeder E/A-Warteschlange 162, 164 an die Speichersteuerung 122 sendet.
  • Es ist zu beachten, dass zusätzlich zum Auslösen der Partialrücksetzung der Speichersteuerung 122 der Host 140 verschiedene Handlungen als ein Teil der Partialrücksetzung der Speichersteuerung 122 durchführen kann. Diese Handlungen können das Löschen der E/A-Warteschlangen 162, 164 einschließen. Das Löschen des Speicherinhalts der E/A-Warteschlangen kann das Setzen des Speichers an den Speicheradressen der E/A-Warteschlangen auf einen Standardwert (wie z.B. lauter Nullen) einschließen. Der Host 140 kann auch etwaige anhängige Interrupts löschen. Der Host 140 kann auch eine Datenzuordnung zwischen Interruptvektoren und CQs beibehalten. Weitere Details einer Ausführungsform von Handlungen, die von einem Host 140 durchgeführt werden, werden unter Bezugnahme auf 9 gezeigt und beschrieben.
  • Schritt 310 schließt die Speichersteuerung 122 ein, die als Reaktion auf den Auslöser von dem Host 140 eine Partialrücksetzung ausführt. Schritt 310 kann die Rücksetzung von Anfangszeigern und Endzeigern der E/A-Warteschlangen 162, 164 einschließen. In einer Ausführungsform setzt die Speichersteuerung 122 Doorbell-Register auf voreingestellte Werte zurück. Zum Beispiel kann die Speichersteuerung 122 Tail-Doorbell-Register einer Übermittlungswarteschlange und Head-Doorbell-Register einer Abschlusswarteschlange auf voreingestellte Werte rücksetzen. Die Speichersteuerung 122 kann auch Anfangszeiger und Endzeiger in Warteschlangemetadaten 258 zurücksetzen. Weitere Details einer Ausführungsform des Schrittes 310 sind in 8 dargestellt.
  • Es ist zu beachten, dass in einer Ausführungsform die Speichersteuerung 122 die E/A-Warteschlangenadressen über die Partialrücksetzung hinweg erhält. Um die E/A-Warteschlangenadressen über die Teilrücksetzung beizubehalten, bedeutet, dass die Speichersteuerung 122 dieselben Adressen für die E/A-Warteschlangen 162, 164 vor und nach der Partialrücksetzung der Speichersteuerung 122 verwendet. Die Speichersteuerung 122 behält in einer Ausführungsform die Speicheradressen für E/A-Warteschlangen 162, 164 in den Warteschlangemetadaten 258 nach der Partialrücksetzung auf, wodurch die Speichersteuerung 122 die E/A-Warteschlangenadressen über die Partialrücksetzung hinweg beibehalten kann.
  • Es ist zu beachten, dass in einer Ausführungsform die Speichersteuerung 122 die Datenzuordnung zwischen jedem SQ 162 und der entsprechenden CQ 164 über die Partialrücksetzung hinweg beibehält. Um die Datenzuordnungen über die Teilrücksetzung beizubehalten, bedeutet, dass die Speichersteuerung 122 dieselben Datenzuordnungen vor und nach der Partialrücksetzung der Speichersteuerung 122 verwendet. Die Speichersteuerung 122 behält in einer Ausführungsform die Datenzuordnungen in den Warteschlangemetadaten 258 nach der Partialrücksetzung bei, wodurch die Speichersteuerung 122 die Datenzuordnungen über die Partialrücksetzung hinweg behalten kann.
  • Durch die Speichersteuerung 122, welche die E/A-Warteschlangenadressen und/oder Datenzuordnungen beibehält, wird Zeit gespart. In einer Ausführungsform speichert die Speichersteuerung 122 eine Kopie der E/A-Warteschlangenadressen und Datenzuordnungen in einem nichtflüchtigen Speicher, so dass die E/A-Warteschlangenadressen und Datenzuordnungen in dem Fall erhalten bleiben, wenn Leistung verloren geht.
  • In einer Ausführungsform behält die Speichersteuerung 122 ein Interrupt-Koaleszenz-Merkmal über die Partialrücksetzung hinweg. Das Interrupt-Koaleszenz-Merkmal legt Regeln dafür fest, wie/wann die nichtflüchtige Speichersteuerung 122 in einen Interruptvektor schreiben soll, um dem Host-System 140 anzuzeigen, dass die nichtflüchtige Speichersteuerung 122 eine oder mehrere Befehlsantworten in eine CQ 164 gestellt hat. Um das Interrupt-Koaleszenz-Merkmal über die Partialrücksetzung hinweg beizubehalten, bedeutet, dass die Speichersteuerung 122 dieselben Regeln für die Interrupt-Koaleszenz sowohl vor als auch nach der Partialrücksetzung verwendet. In einer Ausführungsform behält die Speichersteuerung 122 Werte, welche die Regeln für die Interrupt-Koaleszenz definieren. Der Host 140 kann die Regeln während der Initialisierung der Speichersteuerung bereitstellen. Die Speichersteuerung 122 kann die Regeln für die Interrupt-Koaleszenz in Speicher 251 nach der Partialrücksetzung beibehalten.
  • Schritt 312 schließt den Host 140 und die Speichersteuerung 122 ein, wobei die E/A-Warteschlangen 162, 164 verwendet werden, um Befehle zu verarbeiten. Die Speichersteuerung 122 kann die beibehaltenen Adressen der E/A-Warteschlange 162, 164 verwenden. Die Speichersteuerung 122 kann die beibehaltene Datenzuordnung zwischen jeder SQ 162 und der entsprechenden CQ 164 verwenden. 10 stellt weitere Details einer Ausführungsform des Schrittes 312 bereit. Somit ist die Speichersteuerung 122 in der Lage, E/A-Befehle nach der Partialrücksetzung zu verarbeiten, ohne dass ein langwieriger Initialisierungsprozess erforderlich ist. Zum Beispiel ist es nicht nötig, dass der Host die Adressen der E/A-Warteschlangen 162, 164 an die Speichersteuerung 122 erneut sendet. Auch ist es nicht nötig, dass der Host die Datenzuordnung zwischen SQs 162 und CQs 164 an die Speichersteuerung 122 erneut sendet. Dadurch muss der Host nicht mehr unbedingt viele Befehle an die Speichersteuerung 122 senden.
  • 4 ist ein Flussdiagramm einer Ausführungsform eines Prozesses 400 zum Erzeugen von E/A-Warteschlangen 162, 164 während der Initialisierung einer Speichersteuerung 122. Prozess 400 kann während der Schritte 302 und 304 von Prozess 300 verwendet werden. Prozess 400 wird zwischen Handlungen aufgeteilt, die von Host 140 durchgeführt werden, und jenen, die von der Speichersteuerung 122 durchgeführt werden. Es ist zu beachten, dass Prozess 400 Schritte beschreibt, die mit einer herkömmlichen Speichersteuerinitialisierung konsistent sind. Zum Beispiel ist Prozess 400 mit einer Initialisierung in dem NVMe-Protokoll konsistent. Ausführungsformen einer Partialrücksetzung stellen eine viel schnellere Initialisierung einer Speichersteuerung bereit als Verfahren 400 durch Behalten bestimmter E/A-Warteschlangemetadaten nach der Partialrücksetzung.
  • Schritt 402 schließt den Host 140 ein, welcher der Speichersteuerung 122 Adressen einer Admin-Übermittlungswarteschlange 152 bereitstellt. In einer Ausführungsform schreibt der Host 140 die Adresse in eines der Register 252 in dem Speichersystem 100. Die Adresse der Admin-Übermittlungswarteschlange 152 kann eine Adresse im Host-Speicher 160 sein. Jedoch muss sich die Admin-Übermittlungswarteschlange 152 nicht in dem Host-Speicher 160 befinden. In einer Ausführungsform befindet sich die Admin-Übermittlungswarteschlange 152 in dem Speicher des Speichersystems 100 (z.B. RAM 122b).
  • Schritt 404 schließt den Host 140 ein, welcher der Speichersteuerung 122 Adressen einer Admin-Abschlusswarteschlange 154 bereitstellt. In einer Ausführungsform schreibt der Host 140 die Adressen in eines der Register 252 in dem Speichersystem 100. Die Adresse der Admin-Abschlusswarteschlange 154 kann eine Adresse in dem Host-Speicher 160 sein. Jedoch muss sich die Admin-Abschlusswarteschlange 154 nicht in dem Host-Speicher 160 befinden. In einer Ausführungsform befindet sich die Admin-Abschlusswarteschlange 154 in dem Speicher auf dem Speichersystem 100 (z.B. RAM 122b).
  • Schritt 406 schließt den Host 140 ein, der E/A-Warteschlangen 162, 164 aufbaut. Schritt 406 nimmt auf den Host 140 Bezug, der den E/A-Warteschlangen 162, 164 Speicherplatz zuweist und E/A-Warteschlangemetadaten 258 speichert. In einer Ausführungsform wird im Host-Speicher 160 den E/A-Warteschlangen 162, 164 Speicherplatz zugewiesen. In einer Ausführungsform wird in Speicher 251 den E/A-Warteschlangen 162, 164 Speicherplatz zugewiesen. 5 stellt weitere Details einer Ausführungsform des Host 140, der E/A-Warteschlangen 162, 164 aufbaut, bereit.
  • Schritt 408 schließt den Host 140 ein, der einen CQ-Erzeugungsbefehl in der Admin-Übermittlungswarteschlange 152 bereitstellt. Der CQ-Erzeugungsbefehl zeigt an, dass dem Host 140 Speicherplatz für eine CQ 164 zugewiesen wurde. Der CQ-Erzeugungsbefehl schließt auch Metadaten für die CQ 164 ein. Weitere Details einer Ausführungsform des Schrittes 408 werden in 6 erörtert. In einer Ausführungsform ist der CQ-Erzeugungsbefehl ein NVMe-E/A-Abschlusswarteschlangenerzeugungsbefehl.
  • Schritt 410 schließt die Speichersteuerung 122 ein, die den CQ-Erzeugungsbefehl ausführt. In einer Ausführungsform speichert die Speichersteuerung 122 Warteschlangemetadaten 258 in Speicher 251 in Schritt 410. Die Warteschlangemetadaten 258 können eine Kennung der CQ 164, eine oder mehrere Adressen für die CQ und einen Interruptvektor für die CQ einschließen. Der Interruptvektor spezifiziert einen Interruptvektor, in den die Speichersteuerung 122 als Antwort auf das Setzen einer oder mehrerer Befehlsantworten in die CQ schreiben soll. Weitere Details einer Ausführungsform des Schrittes 410 sind in 6 erörtert.
  • Schritt 412 schließt die Speichersteuerung 122 ein, die eine Antwort für den CQ-Erzeugungsbefehl an die Admin-Abschlusswarteschlange 154 hinzufügt. Der Host 140 verarbeitet dann die Antwort.
  • Schritt 414 schließt den Host 140 ein, der einen SQ-Erzeugungsbefehl in der Admin-Übermittlungswarteschlange 152 bereitstellt. Der SQ-Erzeugungsbefehl zeigt an, dass der Host 140 einer SQ 162 Speicherplatz zugewiesen hat. Der SQ-Erzeugungsbefehl schließt auch Metadaten für die SQ 162 ein. Weitere Details einer Ausführungsform des Schrittes 408 sind in 7 erörtert. In einer Ausführungsform ist der SQ-Erzeugungsbefehl ein NVMe-E/A-Übermittlungswarteschlangenerzeugungsbefehl.
  • Schritt 416 schließt die Speichersteuerung 122 ein, die einen SQ-Erzeugungsbefehl ausführt. In einer Ausführungsform speichert die Speichersteuerung 122 die Warteschlangemetadaten 258 in Speicher 251 in Schritt 416. Die Warteschlangemetadaten 258 können einschließen: eine Kennung der SQ 162, eine oder mehrere Adressen für die SQ 162 und eine Kennung einer CQ 164, die auf die SQ abgebildet wird. Weitere Details einer Ausführungsform des Schrittes 410 werden in 7 erörtert.
  • Schritt 418 schließt die Speichersteuerung 122 ein, die eine Antwort für den CQ-Erzeugungsbefehl an die Admin-Abschlusswarteschlange 154 hinzufügt. Der Host 140 verarbeitet dann die Antwort.
  • Schritt 420 schließt den Host 140 ein, der bestimmt, ob es mehr E/A-Warteschlangen 162, 164 aufzubauen gibt. Falls ja, kehrt der Prozess 400 zu Schritt 408 zurück. Es ist zu beachten, dass es viele E/A-Warteschlangen zum Aufbauen geben könnte. Somit könnte Prozess 400 angesichts der Tatsache, dass eine beträchtliche Zeit für die Ausführung jedes CQ-Erzeugungsbefehls sowie für die Ausführung jedes SQ-Abschlussbefehls verbraucht werden kann, ziemlich zeitaufwändig sein. Ausführungsformen einer partiellen Rücksetzung einer Speichersteuerung vermeiden mindestens einige der Schritte des Prozesses 400. Zum Beispiel werden mindestens Schritte 408 - 420 in einer Ausführungsform einer partiellen Rücksetzung vermieden, wodurch eine erhebliche Menge an Zeit eingespart werden kann.
  • 5 ist ein Flussdiagramm einer Ausführungsform eines Prozesses 500 einer Ausführungsform eines Hosts 140, der E/A-Warteschlangen 162, 164 aufbaut. Der Prozess 500 kann in Schritt 306 des Prozesses 300 verwendet werden.
  • Schritt 502 schließt den Host 140 ein, der einen Befehl an die Speichersteuerung 122 sendet, um zu bestimmen, wie viele E/A-Warteschlangen von der Speichersteuerung 122 unterstützt werden. Der Host kann den Befehl in die Admin-Übermittlungswarteschlange 152 stellen. In einer Ausführungsform sendet der Host 140 einen NVMe-Funktionsabholbefehl.
  • Schritt 504 schließt den Host 140 ein, der eine gewünschte Anzahl von CQs 164 im Speicher erzeugt. Das Erzeugen der CQ 164 schließt das Zuweisen von Speicher für die CQ ein. Zum Beispiel könnte der Host einen Befehl wie „malloc“, der üblicherweise zur Durchführung dynamischer Speicherzuordnungen verwendet wird, verwenden. Die Verwendung von „malloc“ ist ein Beispiel der Speicherzuordnung, ist aber nicht erforderlich. Schritt 504 kann auch das Initialisieren des Speicherinhalts auf einen voreingestellten Wert wie etwa lauter Nullen einschließen. Es ist nicht erforderlich, dass eine CQ 164 im Speicher zusammenhängend ist. Somit könnte eine gegebene CQ 164 aus einer Anzahl von „Puffern“ gebildet werden. Zum Beispiel könnte eine CQ-164 aus einer Anzahl von 4K-Puffern gebildet werden, die im Speicher zusammenhängend sein könnten oder nicht. In einer Ausführungsform weist der Host 140 einen Abschnitt des Host-Speichers 160 für die CQs 164 zu. In einer Ausführungsform weist der Host 140 einen Abschnitt des Speichers 251 für jede der CQs 164 zu.
  • Schritt 506 schließt den Host 140 ein, der eine gewünschte Anzahl von SQs 162 im Speicher erzeugt. Schritt 506 kann dem Erzeugen der gewünschten Anzahl von CQs 164 ähnlich sein. Das Erzeugen der SQs 162 schließt das Zuweisen von Speicher für die SQ ein. Es ist nicht erforderlich, dass eine SQ 162 im Speicher zusammenhängend ist. In einer Ausführungsform weist der Host 140 einen Abschnitt des Host-Speichers 160 für die SQs 162 zu. In einer Ausführungsform weist der Host 140 einen Abschnitt des Speichers 251 für jede der SQs 162 zu.
  • Schritt 508 schließt den Host 140, der Adressen von E/A-Warteschlangen 162, 164 in den E/A Warteschlangemetadaten 166 behält, ein. Schritt 508 kann auch den Host 140 ein, der eine Datenzuordnung von jeder der SQs 162 auf eine entsprechende CQ 164 behält.
  • Schritt 510 schließt den Host 140, der eine Datenzuordnung von Interruptvektoren auf SQs 164 behält, ein. Es ist zu beachten, dass ein gegebener Interruptvektor mehr als einer CQ 164 zugeordnet sein könnte. In einer Ausführungsform sind die Interruptvektoren MSI (Message Signaled Interrupts). In einer Ausführungsform sind die Interruptvektoren MSI-X.
  • 6 ist ein Flussdiagramm einer Ausführungsform eines Prozesses 600, der einen Host 140 einschließt, der Metadaten für eine SQ 164 an eine Speichersteuerung 122 bereitstellt. Der Prozess 600 kann während einer Ausführungsform von Schritten 408 - 412 des Prozesses 400 verwendet werden. Es ist zu beachten, dass das Verfahren 600 die Verarbeitung für eine CQ 164 beschreibt.
  • Schritt 602 schließt den Host 140 ein, der eine oder mehrere Adressen einer CQ 164 an eine Speichersteuerung 122 bereitstellt. Schritt 604 schließt den Host 140 ein, der die Größe der CQ 164 an die Speichersteuerung 122 bereitstellt. Schritt 606 schließt den Host 140 ein, der eine Kennung der CQ 164 an die Speichersteuerung bereitstellt. Schritt 608 schließt den Host 140 ein, der einen Interruptvektor für die CQ 164 an die Speichersteuerung 122 bereitstellt. Schritte 602 - 608 sind eine Ausführungsform von Schritt 408. In einer Ausführungsform stellt der Host 140 einen NVMe-Erzeugungsbefehl einer E/A-Abschlusswarteschlange an die Admin-Übermittlungswarteschlange 152 bereit, um Schritte 602 - 608 zu implementieren.
  • Schritt 610 schließt die Speichersteuerung 122 ein, welche die Metadaten für die CQ 164 als Warteschlangemetadaten 258 in Speicher 251 speichert. Somit kann die Speichersteuerung 122 speichern: 1) Größe der CQ 164; 2) eine Kennung für die CQ 164; 3) eine oder mehrere Adressen der CQ 164; und 4) einen Interruptvektor für die CQ 164. In einer Ausführungsform speichert die Speichersteuerung 122 eine Kopie der Metadaten für die CQ 164 in einem nichtflüchtigen Speicher, so dass die Metadaten für die CQ 164 in dem Fall erhalten bleiben, dass Leistung verloren geht. Schritt 610 ist eine Ausführungsform von Schritt 410 des Prozesses 400.
  • Schritt 612 schließt die Speichersteuerung 122 ein, die eine Antwort an den Host 140 sendet, dass der CQ-Befehl abgeschlossen worden ist. In einer Ausführungsform stellt die Speichersteuerung 122 eine Befehlsantwort auf den NVMe-Erzeugungsbefehl einer E/A-Abschlusswarteschlange in die Admin-Abschlusswarteschlange 154. Schritt 612 ist eine Ausführungsform von Schritt 412 des Prozesses 400.
  • 7 ist ein Flussdiagramm einer Ausführungsform eines Prozesses 700, der einen Host 140 einschließt, der Metadaten für eine SQ 162 an eine Speichersteuerung 122 bereitstellt. Schritt 700 kann in einer Ausführungsform der Schritte 416 - 418 des Prozesses 400 verwendet werden. Es ist zu beachten, dass das Verfahren 700 die Verarbeitung für eine SQ 162 beschreibt.
  • Schritt 702 schließt den Host 140 ein, der eine oder mehrere Adressen einer SQ 162 an eine Speichersteuerung 122 bereitstellt. Schritt 704 schließt den Host 140 ein, der die Größe der SQ 162 an die Speichersteuerung 122 bereitstellt. Schritt 706 schließt den Host 140 ein, der die Kennung einer SQ 162 an die Speichersteuerung bereitstellt. Schritt 708 schließt den Host 140 ein, der eine Kennung einer CQ 164 bereitstellt, die für Befehlsabschlüsse verwendet werden soll, die der Speichersteuerung 122 zugeordnet sind, welche der SQ 162 zugeordnet ist. Schritte 702 - 708 sind eine Ausführungsform von Schritt 416. In einer Ausführungsform stellt der Host 140 einen NVMe-Erzeugungsbefehl einer E/A-Übermittlungswarteschlange an die Admin-Übermittlungswarteschlange 152 bereit, um Schritte 702 - 708 zu implementieren.
  • Schritt 710 schließt die Speichersteuerung 122 ein, welche die Metadaten für die SQ 162 als Warteschlangemetadaten 258 in Speicher 251 speichert. Somit kann die Speichersteuerung 122 speichern: 1) Größe der SQ 162; 2) eine Kennung für die SQ 162; 3) eine oder mehrere Adressen der SQ 162; und 4) eine Kennung einer CQ 164, die für Befehlsabschlüsse verwendet werden soll, die der SQ 162 zugeordnet sind. In einer Ausführungsform speichert die Speichersteuerung 122 eine Kopie der Metadaten für die SQ 162 in einen nichtflüchtigen Speicher, so dass die Metadaten für die SQ 162 in dem Fall erhalten bleiben, dass Leistung verloren geht. Schritt 710 ist eine Ausführungsform von Schritt 416 des Prozesses 400.
  • Schritt 712 schließt die Speichersteuerung 122 ein, die eine Antwort an den Host 140 sendet, dass der SQ-Befehl abgeschlossen worden ist. In einer Ausführungsform stellt die Speichersteuerung 122 eine Befehlsantwort auf den NVMe-Erzeugungsbefehl einer E/A-Übermittlungswarteschlange in die Admin-Abschlusswarteschlange 154. Schritt 712 ist eine Ausführungsform von Schritt 418 des Prozesses 400.
  • 8 ist ein Flussdiagramm einer Ausführungsform eines Prozesses 800 von Handlungen, die von einer Speichersteuerung 122 als Antwort auf ein partielle Rücksetzung durchgeführt werden. Der Prozess 800 kann von der Speichersteuerung 122 während einer Ausführungsform des Schrittes 310 des Prozesses 300 durchgeführt werden.
  • Schritt 802 umfasst das Leeren der E/A-Warteschlangen 162, 164. Das Leeren der E/A-Warteschlangen 162, 164 schließt in einer Ausführungsform das Festschreiben aller Befehle, die vor der partiellen Rückweisung ausgeführt wurden, in den nichtflüchtigen Speicher 126 ein. Wenn zum Beispiel die Speichersteuerung 122 einen Befehlsabschluss auf eine CQ 164 für einen Schreibbefehl stellt, dann schreibt die Speichersteuerung 122 die Daten für diesen Schreibbefehl auf der Speicherstruktur 126 fest. Es ist zu beachten, dass in einigen Fällen die Speichersteuerung 122 einen Befehlsabschluss für einen Schreibbefehl bereitstellen könnte, bevor die Daten auf der Speicherstruktur festgeschrieben worden sind. Die Speichersteuerung 122 ist in einer Ausführungsform nicht in der Lage, irgendwelche Befehle auf den SQs 162 auszuführen, die noch nicht abgeschlossen worden sind. Somit kann die Speichersteuerung 122 in einer Ausführungsform Befehle auf den SQs 162 ignorieren, die noch nicht abgeschlossen worden sind.
  • Schritt 804 schließt die Speichersteuerung 122 ein, welche die SQ/CQ-Datenzuordnung und -Adressen beibehält. Die SQ/CQ-Datenzuordnung nimmt auf die Datenzuordnung zwischen einer SQ 162 und einer CQ 164 Bezug. Die Adressen nehmen auf die Speicheradressen der SQs 162 und CQs 164 Bezug. Es ist zu beachten, dass durch das Behalten der SQ/CQ-Datenzuordnung und -Adressen die SQ/CQ-Datenzuordnung und -Adressen über die partielle Rücksetzung hinweg bestehen bleiben können.
  • In einer Ausführungsform behält die Speichersteuerung 122 mindestens einige der Warteschlangemetadaten 258 bei, um die SQ/CQ-Datenzuordnung und -Adressen über die partielle Rücksetzung hinweg beizubehalten. In einigen Fällen behält die Speichersteuerung 122 die SQ/CQ-Datenzuordnung und -Adressen in einem nichtflüchtigen Speicher in dem Fall bei, dass Leistung zu einem nichtflüchtigen Speicher (z.B. RAM 122b) während oder zeitnah der partiellen Rücksetzung verloren geht. Es ist zu beachten, dass die Speichersteuerung 122 die SQ/CQ-Datenzuordnung und -Adressen während einer Ausführungsform des Schrittes 310, 610 und/oder 710 gespeichert haben kann. Es ist jedoch zu beachten, dass es nicht erforderlich ist, dass die SQ/CQ-Datenzuordnung und -Adressen in einem nichtflüchtigen Speicher erhalten bleiben. In einigen Ausführungsformen führt die partielle Rücksetzung nicht zu Leistungsverlust an dem flüchtigen Speicher wie etwa RAM 122b. Somit können die SQ/CQ-Datenzuordnung und -Adressen in einer Ausführungsform in RAM 122b erhalten bleiben.
  • Schritt 806 schließt die Speichersteuerung 122 ein, welche die Datenzuordnung von den CQs 164 auf die Interruptvektoren behält. Schritt 806 kann das Behalten der Datenzuordnung von den CQs 164 auf die Interruptvektoren in Speicher 251 einschließen. Die Interruptvektoren werden in den Registern 252 in einer Ausführungsform behalten. Die Interruptvektoren können an einer anderen Stelle, wie etwa in den Speicherzellen in der Speicherstruktur 126, erhalten bleiben.
  • Schritt 808 schließt die Speichersteuerung 122 ein, die Anfangszeiger und Endzeiger der SQs 162 und CQ 164 auf voreingestellte Werte zurücksetzt. Dies kann Anfangszeiger und Endzeiger der SQs 162 auf voreingestellte Werte sowie die Rücksetzung der Anfangszeiger und Endzeiger der CQs 164 auf voreingestellte Werte einschließen. Schritt 808 kann die Rücksetzung von Doorbell-Registern auf einen voreingestellten Zustand wie etwa lauter Nullen einschließen. In einer Ausführungsform setzt die Speichersteuerung 122 ein NVMe-Tail-Doorbell-Register einer Übermittlungswarteschlange zurück. In einer Ausführungsform setzt die Speichersteuerung 122 ein NVMe-Head-Doorbell-Register einer Abschlusswarteschlange zurück. Schritt 808 kann die Zurücksetzung eines anderen Speichers als des Doorbell-Registers einschließen.
  • Schritt 810 schließt die Speichersteuerung 122 ein, die Fehlerprotokolle löscht. Zum Beispiel kann die Speichersteuerung 122 eine oder mehrere Protokollseiten aufweisen, die verwendet werden können, um Fehlerinformation zu beschreiben. (Eine) derartige Protokollseite(n) kann durch den Host 140 erhalten werden. Zum Beispiel kann in NVMe der Host 140 einen Protokollseitenabrufbefehl ausgeben, um eine Protokollseite zu erhalten. Somit schließt Schritt 810 die Speichersteuerung 122 ein, die eine Protokollseite oder eine andere Art von Fehlerprotokoll löscht, ein.
  • Schritt 812 schließt die Speichersteuerung 122 ein, die eine Benachrichtigung an den Host 140 sendet, dass die partielle Rücksetzung abgeschlossen ist. In einer Ausführungsform stellt die Speichersteuerung 122 einen Befehlsabschluss in die Abschlusswarteschlange 154. Jedoch ist es nicht erforderlich, dass die Admin-Abschlusswarteschlange 154 verwendet wird.
  • Somit behält nach Prozess 800 die Speichersteuerung 122 einige E/A-Warteschlangemetadaten 258. Jedoch sind einige Gesichtspunkte, die sich auf die E/A-Warteschlangen beziehen, zurückgesetzt worden. Zum Beispiel können die Doorbell-Register zurückgesetzt werden. Auch können Anfangszeiger und Endzeiger der E/A-Warteschlangen 162, 164 zurückgesetzt werden. Auch können unerledigte Befehle auf den SQs 162 ignoriert werden. Es ist zu beachten, dass der Host 140 die SQs 162 löschen kann (wie in Zusammenhang mit 9 beschrieben werden wird).
  • 9 ist ein Flussdiagramm einer Ausführungsform eines Prozesses 900 von Handlungen, die von einem Host 140 in Zusammenhang mit einem Auslösen einer partiellen Rücksetzung einer Speichersteuerung 122 durchgeführt werden. Schritte des Prozesses 900 können als Teil der partiellen Rücksetzung der Speichersteuerung 122 betrachtet werden. Die Schritte des Prozesses 900 sind in einer bestimmten Reihenfolge im Rahmen der Zweckmäßigkeit der Erläuterung beschrieben, könnten aber in einer anderen Reihenfolge auftreten. Der Host 140 kann Schritte des Prozesses 900 durchführen, nachdem der Host die Benachrichtigung von der Speichersteuerung 122 empfangen hat, dass die Speichersteuerung 122 die partielle Rücksetzung abgeschlossen hat (z.B. nach Schritt 810 des Prozesses 800). Jedoch ist zu beachten, dass der Host einige Schritte des Prozesses 900 vor dem Empfang der Benachrichtigung von der Speichersteuerung durchführen könnte.
  • Schritt 902 schließt den Host 140 ein, der den Speicher initialisiert, der den E/A-Warteschlangen 162, 164 zugewiesen wurde. Das Initialisieren des Speichers nimmt auf das Festlegen des Speicherinhalts auf einen bestimmten Wert Bezug. Der Host 140 kann den Speicher auf einen gewissen vorgegebenen Wert einstellen, wie etwa lauter Nullen. Das Initialisieren des Speichers kann verwendet werden, um den Inhalt der E/A-Warteschlangen 162, 164 zu löschen oder zurückzusetzen.
  • Schritt 904 schließt den Host 140 ein, der die SQ/CQ-Datenzuordnung und -Adressen behält. Zum Beispiel kann der Host 140 E/A-Warteschlangemetadaten 166 behalten.
  • Schritt 906 schließt den Host 140 ein, der die Datenzuordnung von den CQs 164 auf die Interruptvektoren behält. Zum Beispiel kann der Host 140 E/A-Warteschlangemetadaten 166 behalten. Der Host 140 löscht in einer Ausführungsform auch jegliche vorhandene Interrupts von der Speichersteuerung 122.
  • Schritt 908 schließt den Host 140 ein, der Anfangszeiger und Endzeiger von SQs 162 und CQ 164 auf voreingestellte Werte zurücksetzt. Anfangszeiger und Endzeiger der SQs 162 und CQ 164 in den E/A-Warteschlangemetadaten 166 werden in einer Ausführungsform zurückgesetzt. Schritt 908 kann die Rücksetzung von Anfangszeigern und Endzeigern von SQs 162 auf vorgegebene Werte sowie die Rücksetzung von Anfangszeigern und Endzeigern der CQs 164 auf vorgegebene Werte einschließen.
  • Schritt 908 kann die Rücksetzphasen-Tags, die den E/A-Warteschlangen 162, 164 zugeordnet sind, einschließen. Phasen-Tags können in einem Warteschlangeneintrag gemäß einem NVMe-Protokoll eingeschlossen sein, um zu verfolgen, welche Einträge auf den CQs 164 von dem Host 140 verbraucht worden sind. Da die Inhalte der CQs 164 (sowie SQs 162) in Schritt 902 gelöscht werden, können die Phasen-Tags auch zurückgesetzt werden. Das Rücksetzen der Phasen-Tags in einen vorgegebenen Zustand entspricht in einer Ausführungsform einer leeren SQ 164.
  • 10 ist ein Flussdiagramm einer Ausführungsform eines Prozesses 1000 eines Hosts 140 und einer Speichersteuerung 122 unter Verwendung von E/A-Warteschlangen 162, 164 nach einer partiellen Rücksetzung der Speichersteuerung 122. Prozess 1000 beschreibt die Verarbeitung eines E/A-Befehls. Prozess 1000 ist eine Ausführungsform von Schritt 312 des Prozesses 300.
  • Schritt 1002 schließt den Host 140 ein, der einer SQ 162 einen E/A-Befehl bereitstellt. Dies kann zum Beispiel ein Lesen oder Schreiben von Speicherzellen in die Speicherstruktur 126 sein. Der Host 140 verwendet die Adresse der SQ 162, die er nach der partiellen Rücksetzung der Speichersteuerung 122 zurückbehalten hat. Es ist zu beachten, dass der Inhalt dieser SQ 162 in einer Ausführungsform der partiellen Rücksetzung der Speichersteuerung 122 gelöscht wurde. Der Host 140 kann auch einen Endzeiger für diese SQ 162 verwenden, um zu wissen, in welchen Slot der E/A-Befehl gestellt werden soll.
  • Schritt 1004 schließt den Host 140 ein, der an ein Doorbell-Register für diese SQ 162 schreibt. Es ist zu beachten, dass das Doorbell-Register in einer Ausführungsform der partiellen Rücksetzung der Speichersteuerung 122 zurückgesetzt wurde. Der Host 140 stellt in einer Ausführungsform Informationen in das Doorbell-Register, das dem Slot auf der SQ 162 entspricht, in den der E/A-Befehl gestellt wurde. In einer Ausführungsform stellt der Host einen Endzeiger in das Doorbell-Register. Der Endzeiger ist in einer Ausführungsform ein Index, der einen Slot (oder eine Eingabe) der SQ 162 spezifiziert. Es ist zu beachten, dass es ein eindeutiges Doorbell-Register für jede SQ 162 geben kann, so dass das Doorbell-Register selbst zur Identifizierung der Warteschlange dienen kann. Jedoch muss die Speichersteuerung 122 nicht auf die beibehaltene Adresse der SQ 162 zählen, um in der Lage sein, die SQ 162 im Speicher zu lokalisieren. In einer Ausführungsform schreibt der Host in ein NVMe-Tail-Doorbell-Register einer Übermittlungswarteschlange, um den neuen Endzeiger für diese CQ 162 bereitzustellen.
  • Schritt 1006 schließt die Speichersteuerung 122 ein, die auf den E/A-Befehl von der SQ 162 zugreift. Wie gerade erwähnt, kann die Speichersteuerung 122 die Speicheradresse der SQ 162 verwenden, die sie nach der partiellen Rücksetzung der Speichersteuerung 122 behalten hat, um den E/A-Befehl zu lokalisieren. Die Speichersteuerung 122 kann auch einen Endzeiger für die SQ 162 verwenden. Wie erwähnt, kann sich der Endzeiger in dem Doorbell-Register befinden.
  • Es ist zu beachten, dass in einigen Fällen der Host mehr als einen E/A-Befehl in die SQ 162 stellen kann. In diesem Fall kann die Speichersteuerung 122 bestimmen, wie viele E/A-Befehle in die SQ 162 durch Vergleichen des vorliegenden Wertes des Endzeigers mit einem vorherigen Wert des Endzeigers gestellt wurden. Wenn dies in einer Ausführungsform die ganz erste Verwendung dieser SQ 162 nach einer partiellen Rücksetzung ist, dann ist der vorherige Wert des Endzeigers der voreingestellte Wert, der während der partiellen Rücksetzung festgesetzt wurde.
  • Schritt 1008 schließt die Speichersteuerung 122 ein, die den E/A-Befehl ausführt. Zum Beispiel liest die Speichersteuerung 122 von einem oder schreibt auf einen nichtflüchtigen Speicher in der Struktur 126. Schritt 1008 kann eine Datenübertragung zwischen dem Host-Speicher 160 und der Speichersteuerung 122 einschließen.
  • Schritt 1010 schließt die Speichersteuerung 122 ein, die eine Antwort auf den E/A-Befehl in die CQ 164 stellt, die auf die SQ 162 abgebildet wird. Die Speichersteuerung 122 verwendet die Datenzuordnungen, die sie nach der partiellen Rücksetzung der Speichersteuerung 122 behalten hat, um korrekte CQ 164 zu bestimmen. Die Speichersteuerung 122 kann auch die Adresse der SQ 164 verwenden, die nach der partiellen Rücksetzung behalten wurde. Außerdem kann die Speichersteuerung 122 einen Endzeiger für die SQ 164 beibehalten, um zu wissen, welcher Slot auf der CQ 164 für die Befehlsantwort zu verwenden ist.
  • Schritt 1012 schließt die Speichersteuerung 122 ein, die in einen Unterbrechungsvektor schreibt, um den Host 140 über die Befehlsantwort zu benachrichtigen. Die Speichersteuerung 122 verwendet die Datenzuordnungen, die sie nach der partiellen Rücksetzung der Speichersteuerung 122 behalten hat, um den korrekten Interruptvektor zu bestimmen. Der Interruptvektor kann beispielsweise ein MSI oder MSI-X sein.
  • Schritt 1014 schließt den Host 140 ein, der durch Zugriff auf den Abschlussbefehl von der CQ 164 auf den Interruptvektor antwortet. Der Host 140 verwendet die Datenzuordnungen von Interruptvektoren auf SQs 164, die er nach der partiellen Rücksetzung der Speichersteuerung 122 beibehalten hat. Der Host kann in ein Doorbell-Register schreiben, nachdem er die Antwort verarbeitet hat. In einer Ausführungsform schreibt der Host in das NVMe-Head-Doorbell-Register einer Abschlusswarteschlange, um den neuen Anfangszeiger für diese SQ 164 bereitzustellen.
  • Eine erste hierin offenbarte Ausführungsform ist eine Vorrichtung, umfassend: eine Speicherstruktur mit nichtflüchtigen Speicherzellen; und eine nichtflüchtige Speichersteuerung in Kommunikation mit der Speicherstruktur. Die nichtflüchtige Speichersteuerung ist eingerichtet, um von einem Host Speicheradressen von E/A-(Eingabe-/Ausgabe-)Übermittlungswarteschlangen und Speicheradressen von E/A-Abschlusswarteschlangen zu empfangen. Die nichtflüchtige Speichersteuerung ist eingerichtet, um von dem Host eine Datenzuordnung zwischen jeder E/A-Übermittlungswarteschlange und einer zugehörigen E/A-Abschlusswarteschlange zu empfangen. Die nichtflüchtige Speichersteuerung ist ferner eingerichtet, um als Antwort auf eine partielle Rücksetzung der nichtflüchtigen Speichersteuerung zurückzusetzen: i) Anfangszeiger und Endzeiger der E/A-Übermittlungswarteschlangen; und ii) Anfangszeiger und Endzeiger der E/A-Abschlusswarteschlangen. Die nichtflüchtige Speichersteuerung ist ferner eingerichtet, um das Folgende über die partielle Rücksetzung der nichtflüchtigen Speichersteuerung hinweg beizubehalten: i) die Speicheradressen der E/A-Übermittlungswarteschlangen; ii) die Speicheradressen der E/A-Abschlusswarteschlangen; und iii) die Datenzuordnung zwischen jeder E/A-Übermittlungswarteschlange und der zugehörigen E/A-Abschlusswarteschlange.
  • In einer zweiten Ausführungsform und zur Unterstützung der ersten Ausführungsform weist die Vorrichtung ferner auf: weiterhin einen Host umfassend. Der Host ist eingerichtet, um: die partielle Rücksetzung der nichtflüchtigen Speichersteuerung auszulösen; und den Inhalt der E/A-Übermittlungswarteschlangen sowie den Inhalt der E/A-Abschlusswarteschlangen als Teil der partiellen Rücksetzung der nichtflüchtigen Speichersteuerung zu löschen.
  • In einer dritten Ausführungsform und zur Unterstützung von entweder der ersten oder der zweiten Ausführungsform ist der Host ferner eingerichtet, um: nach der partiellen Rücksetzung die Zuordnung zwischen jeder E/A-Übermittlungswarteschlange und der zugehörigen E/A-Abschlusswarteschlange beizubehalten; und nach dem Löschen des Inhalts der E/A-Übermittlungswarteschlangen und des Inhalts der E/A-Abschlusswarteschlangen E/A-Befehle in die E/A-Übermittlungswarteschlangen zu stellen.
  • In einer vierten Ausführungsform und zur Unterstützung jeder beliebigen der ersten bis dritten Ausführungsformen umfasst die Vorrichtung ferner: weiterhin einen Host umfassend, der eingerichtet ist, um: in ein Register in dem nichtflüchtigen Speicher der Speichersteuerung zu schreiben, um die partielle Rücksetzung der nichtflüchtigen Speichersteuerung auszulösen.
  • In einer fünften Ausführungsform und zur Unterstützung jeder beliebigen der ersten bis dritten Ausführungsformen umfasst die Vorrichtung ferner: weiterhin einen Host umfassend, der eingerichtet ist, um: der nichtflüchtigen Speichersteuerung einen herstellerspezifischen Befehl bereitzustellen, um die partielle Rücksetzung der nichtflüchtigen Speichersteuerung auszulösen.
  • In einer sechsten Ausführungsform und zur Unterstützung jeder beliebigen der ersten bis fünften Ausführungsformen umfasst die Vorrichtung ferner: weiterhin einen Host umfassend, der eingerichtet ist, um: vor der partiellen Rücksetzung der nichtflüchtigen Speichersteuerung Host-Speicher für die E/A-Übermittlungswarteschlangen zuzuweisen; und nach der partiellen Rücksetzung der nichtflüchtigen Speichersteuerung die E/A-Abschlusswarteschlangen zuzuweisen; und die Zuweisung des Host-Speichers für die E/A-Übermittlungswarteschlangen und die E/A-Abschlusswarteschlangen zu behalten.
  • In einer siebten Ausführungsform und zur Unterstützung jeder beliebigen der ersten bis fünften Ausführungsformen umfasst die Vorrichtung ferner: weiterhin einen Host umfassend, der eingerichtet ist, um: vor der partiellen Rücksetzung der nichtflüchtigen Speichersteuerung Speicherplatz in der nichtflüchtigen Speichersteuerung für die E/A-Übermittlungswarteschlangen und die E/A-Abschlusswarteschlangen zuzuweisen; und nach der partiellen Rücksetzung der nichtflüchtigen Speichersteuerung die Zuweisung von Speicherplatz in der nichtflüchtigen Speichersteuerung für die E/A-Übermittlungswarteschlangen und die E/A-Abschlusswarteschlangen zu behalten.
  • In einer achten Ausführungsform und zur Unterstützung jeder beliebigen der ersten bis siebten Ausführungsformen ist die nichtflüchtige Speichersteuerung ferner so eingerichtet, dass sie nach der partiellen Rücksetzung der nichtflüchtigen Speichersteuerung ein Interrupt-Koaleszenz-Merkmal behält.
  • In einer neunten Ausführungsform und zur Unterstützung jeder beliebigen der ersten bis achten Ausführungsformen ist die nichtflüchtige Speichersteuerung ferner eingerichtet, um: vor der partiellen Rücksetzung auf die E/A-Übermittlungswarteschlangen und die E/A-Abschlusswarteschlangen zuzugreifen, um E/A-Befehle von dem Host zu verarbeiten, um auf die nichtflüchtigen Speicherzellen zuzugreifen; und nach der partiellen Rücksetzung auf die E/A-Übermittlungswarteschlangen und die E/A-Abschlusswarteschlangen zuzugreifen, um E/A-Befehle von dem Host zu verarbeiten, um auf die nichtflüchtigen Speicherzellen zuzugreifen, basierend auf: i) den beibehaltenen Speicheradressen der E/A-Abschlusswarteschlangen; ii) den beibehaltenen Speicheradressen der E/A-Übermittlungswarteschlangen; und iii) der beibehaltenen Zuordnung zwischen jeder E/A-Übermittlungswarteschlange und der zugehörigen E/A-Abschlusswarteschlange.
  • Eine Ausführungsform schließt ein Verfahren zum Betreiben einer nichtflüchtigen Speichervorrichtung ein. Das Verfahren umfasst: während einer Initialisierung einer nichtflüchtigen Speichersteuerung der nichtflüchtigen Speichervorrichtung: Empfangen von Speicheradressen von E/A- (Eingabe-/Ausgabe-)Übermittlungswarteschlangen und Speicheradressen von E/A-Abschlusswarteschlangen; und Empfangen einer Datenzuordnung zwischen jeder E/A-Übermittlungswarteschlange und einer zugehörigen E/A-Abschlusswarteschlange. Das Verfahren umfasst ferner: Zugriff auf die E/A-Übermittlungswarteschlangen und die E/A-Abschlusswarteschlangen, um E/A-Befehle zu verarbeiten, um auf nichtflüchtigen Speicher in der nichtflüchtigen Speichervorrichtung zuzugreifen; und als Antwort auf eine partielle Rücksetzung der nichtflüchtigen Speichersteuerung Löschen der Anfangszeiger und Endzeiger der E/A-Übermittlungswarteschlangen und der Anfangszeiger und Endzeiger der E/A-Abschlusswarteschlangen. Das Verfahren umfasst ferner: nach der partiellen Rücksetzung Behalten der Speicheradressen der E/A-Abschlusswarteschlangen; Behalten der Speicheradressen der E/A-Übermittlungswarteschlangen; Behalten der Datenzuordnung zwischen jeder E/A-Übermittlungswarteschlange und der zugehörigen E/A-Abschlusswarteschlange; und Zugriff auf die E/A-Übermittlungswarteschlangen und die E/A-Abschlusswarteschlangen, um E/A-Befehle zu verarbeiten, wobei der Zugriff basiert auf: i) den behaltenen Speicheradressen der E/A-Abschlusswarteschlangen; ii) den behaltenen Speicheradressen der E/A-Übermittlungswarteschlangen; und iii) der behaltenen Datenzuordnung zwischen jeder E/A-Übermittlungswarteschlange und der zugehörigen E/A-Abschlusswarteschlange.
  • Eine Ausführungsform schließt eine nichtflüchtige Speichervorrichtung ein umfassend: nichtflüchtige Speicherzellen und Speichersteuerungsmittel zum Steuern des Lese- und Schreibzugriffs auf die nichtflüchtigen Speicherzellen. Die nichtflüchtige Speichervorrichtung umfasst Warteschlangenerzeugungsmittel zum Erzeugen von Software-E/A-(Eingangs-/Ausgangs-)Übermittlungswarteschlangen und Software-E/A- Abschlusswarteschlangen an Adressen in dem Speicher, wobei die Warteschlangenerzeugungsmittel ferner Speichersteuerungsmittel für Speicheradressen der Software-E/A/Übermittlungsarteschlangen und Speicheradressen der Software-E/A-Abschlusswarteschlangen senden, wobei die Warteschlangenerzeugungsmittel ferner Speichersteuerungsmittel für eine Datenzuordnung zwischen jeder Software-E/A-Übermittlungswarteschlange und einer zugehörigen E/A-Software-Abschlusswarteschlange senden. Die nichtflüchtige Speichervorrichtung umfasst Auslösemittel einer partiellen Rücksetzung zum Auslösen einer partiellen Rücksetzung der Speichersteuerungsmittel, nachdem die Speicheradressen der Software-E/A-Übermittlungswarteschlangen, die Speicheradressen der Software-E/A-Abschlusswarteschlange und die Datenzuordnung zwischen jeder Software-E/A-Übermittlungswarteschlange und der zugehörigen Software-E/A-Abschlusswarteschlange an die Speichersteuerungsmittel gesendet worden sind. Die nichtflüchtige Speichervorrichtung umfasst ferner Warteschlangenlöschmittel zum Löschen von Inhalt der Software-E/A-Übermittlungswarteschlangen und der Software-E/A-Abschlusswarteschlangen als Teil der partiellen Rücksetzung der Speichersteuerungsmittel. Die Speichersteuerungsmittel umfassen ferner Zeigerrücksetzmittel zum Zurücksetzen von Anfangszeigern und Endzeigern der Software-E/A-Übermittlungswarteschlangen und zum Zurücksetzen von Anfangszeigern und Endzeigern der Software-E/A-Abschlusswarteschlangen als Teil der partiellen Rücksetzung. Die Speichersteuerungsmittel umfassen ferner Verwaltungsmittel der partiellen Rücksetzung zum Fortbestehen des Folgenden über die partielle Rücksetzung der Speichersteuerungsmittel hinweg: i) die Speicheradressen der Software-E/A-Übermittlungswarteschlangen; ii) die Speicheradressen der Software-E/A-Abschlusswarteschlangen und iii) die Datenzuordnung zwischen jeder Software-E/A-Übermittlungswarteschlange und der zugehörigen Software-E/A-Abschlusswarteschlange. Die Speichersteuerungsmittel umfassen ferner Befehlszugriffsmittel zum Zugreifen auf E/A-Befehle von den Software-E/A-Übermittlungswarteschlangen, nachdem der Inhalt der Software-E/A-Übermittlungswarteschlangen gelöscht wurde, wobei die Befehlszugriffsmittel ferner auf die E/A-Befehle auf Basis der beibehaltenen Speicheradressen der Software-E/A-Übermittlungswarteschlangen zugreifen. Die Speichersteuerungsmittel umfassen ferner Befehlsantwortmittel zum Platzieren von Antworten auf die E/A-Befehle, nachdem der Inhalt der Software-E/A-Übermittlungsvervollständigung gelöscht wurde, wobei die Befehlsantwortmittel ferner die Antworten auf die E/A-Befehle auf Grundlage der beibehaltenen Speicheradressen der Software-E/A-Abschlusswarteschlangen und der beibehaltenen Datenzuordnung zwischen jeder Software-E/A-Übermittlungswarteschlange und der zugehörigen Software-E/A-Abschlusswarteschlange platzieren.
  • In einer Ausführungsform umfassen die Speichersteuerungsmittel einen oder mehrere Steuereinheiten 122, Prozessor 122c, RAM 122b, ROM 122a, Frontend-Modul 208, Backend-Modul 210, Befehlsprozessor 240, Steuerungsinitialisierer 250, Zwischenspeicherverwaltung/Steuerbus 214, Medienverwaltungsebene 238, Register 252, eine elektrische Schaltung, eine anwendungsspezifische integrierte Schaltung (ASIC), ein Field Programmable Gate Array (FPGA), eine digitale Schaltlogik, eine analoge Schaltung, eine Kombination von diskreten Schaltungen, Gates und/oder einen Abschnitt eines Programmcodes (z.B. Software oder Firmware), der durch einen (Mikro-)Prozessor oder eine Verarbeitungsschaltung (oder einen oder mehrere Prozessoren) ausgeführt werden kann. Jedoch könnten die Speichersteuerungsmittel andere Hardware und/oder Software einschließen.
  • In einer Ausführungsform umfassen die Warteschlangenerzeugungsmittel eine oder mehrere Host-Steuerungen 180, Host-Prozessor 150, Host-Speicher 160, Warteschlangenmanager 146, eine elektrische Schaltung, eine anwendungsspezifische integrierte Schaltung (ASIC), ein Field Programmable Gate Array (FPGA), eine digitale Schaltlogik, eine analoge Schaltung, eine Kombination von diskreten Schaltungen, Gates und/oder einen Abschnitt eines Programmcodes (z.B. Software oder Firmware), der durch einen (Mikro-)Prozessor oder eine Verarbeitungsschaltung (oder einen oder mehrere Prozessoren) ausgeführt werden kann. Jedoch könnten die Warteschlangenerzeugungsmittel andere Hardware und/oder Software einschließen.
  • In einer Ausführungsform umfassen die Auslösemittel einer partiellen Rücksetzung eine oder mehrere Host-Steuerungen 180, Host-Prozessor 150, Host-Speicher 160, einen hostseitigen Partialrücksetzmanager 144, eine elektrische Schaltung, eine anwendungsspezifische integrierte Schaltung (ASIC), ein Field Programmable Gate Array (FPGA), eine digitale Schaltlogik, eine analoge Schaltung, eine Kombination von diskreten Schaltungen, Gates und/oder einen Abschnitt eines Programmcodes (z.B. Software oder Firmware), der durch einen (Mikro-)Prozessor oder eine Verarbeitungsschaltung (oder einen oder mehrere Prozessoren) ausgeführt werden kann. Jedoch könnten die Auslösemittel der partiellen Rücksetzung andere Hardware und/oder Software einschließen.
  • In einer Ausführungsform umfassen die Warteschlangenlöschmittel eine oder mehrere Host-Steuerungen 180, Host-Prozessor 150, Host-Speicher 160, einen hostseitigen Partialrücksetzmanager 144, Warteschlangenmanager 146, eine elektrische Schaltung, eine anwendungsspezifische integrierte Schaltung (ASIC), ein Field Programmable Gate Array (FPGA), eine digitale Schaltlogik, eine analoge Schaltung, eine Kombination von diskreten Schaltungen, Gates und/oder einen Abschnitt eines Programmcodes (z.B. Software oder Firmware), der durch einen (Mikro-)Prozessor oder eine Verarbeitungsschaltung (oder einen oder mehrere Prozessoren) ausgeführt werden kann. Jedoch könnten die Warteschlangenlöschmittel andere Hardware und/oder Software einschließen.
  • In einer Ausführungsform umfassen die Zeigerrücksetzmittel eine oder mehrere Steuereinheiten 122, Prozessor 122c, RAM 122b, ROM 122a, einen MC-seitigen Partialrücksetzmanager 254, Warteschlangemetadatenmanager 256, Register 252, eine elektrische Schaltung, eine anwendungsspezifische integrierte Schaltung (ASIC), ein Field Programmable Gate Array (FPGA), eine digitale Schaltlogik, eine analoge Schaltung, eine Kombination von diskreten Schaltungen, Gates, und/oder einen Abschnitt eines Programmcodes (z.B. Software oder Firmware), der durch einen (Mikro-)Prozessor oder eine Verarbeitungsschaltung (oder einen oder mehrere Prozessoren) ausgeführt werden kann. Jedoch könnten die Zeigerrücksetzmittel andere Hardware und/oder Software einschließen.
  • In einer Ausführungsform umfassen die Partialrücksetzmanagermittel eine oder mehrere Steuereinheiten 122, Prozessor 122c, RAM 122b, ROM 122a, einen MC-seitigen Partialrücksetzmanager 254, Warteschlangemetadatenmanager 256, Register 252, eine elektrische Schaltung, eine anwendungsspezifische integrierte Schaltung (ASIC), ein Field Programmable Gate Array (FPGA), eine digitale Schaltlogik, eine analoge Schaltung, eine Kombination von diskreten Schaltungen, Gates, und/oder einen Abschnitt eines Programmcodes (z.B. Software oder Firmware), der durch einen (Mikro-)Prozessor oder eine Verarbeitungsschaltung (oder einen oder mehrere Prozessoren) ausgeführt werden kann. Jedoch könnten die Partialrücksetzmanagermittel andere Hardware und/oder Software einschließen.
  • In einer Ausführungsform umfassen die Befehlszugriffsmittel eine oder mehrere Steuereinheiten 122, Prozessor 122c, RAM 122b, ROM 122a, Frontend-Modul 208, Befehlsprozessor 240, Befehlsmanager 242, Register 252, Warteschlangemetadatenmanager 256, eine elektrische Schaltung, eine anwendungsspezifische integrierte Schaltung (ASIC), ein Field Programmable Gate Array (FPGA), eine digitale Schaltlogik, eine analoge Schaltung, eine Kombination von diskreten Schaltungen, Gates, und/oder einen Abschnitt eines Programmcodes (z.B. Software oder Firmware), der durch einen (Mikro-)Prozessor oder eine Verarbeitungsschaltung (oder einen oder mehrere Prozessoren) ausgeführt werden kann. Jedoch könnten die Befehlszugriffsmittel andere Hardware und/oder Software einschließen.
  • In einer Ausführungsform umfassen die Befehlsantwortmittel eine oder mehrere Steuereinheiten 122, Prozessor 122c, RAM 122b, ROM 122a, Frontend-Modul 208, Befehlsprozessor 240, Befehlsmanager 242, Register 252, Warteschlangemetadatenmanager 256, eine elektrische Schaltung, eine anwendungsspezifische integrierte Schaltung (ASIC), ein Field Programmable Gate Array (FPGA), eine digitale Schaltlogik, eine analoge Schaltung, eine Kombination von diskreten Schaltungen, Gates, und/oder einen Abschnitt eines Programmcodes (z.B. Software oder Firmware), der durch einen (Mikro-)Prozessor oder eine Verarbeitungsschaltung (oder einen oder mehrere Prozessoren) ausgeführt werden kann. Jedoch könnten die Befehlsantwortmittel andere Hardware und/oder Software einschließen.
  • Eine Ausführungsform schließt ein System ein, aufweisend: Ein System, umfassend: eine Kommunikationsschnittstelle; nichtflüchtige Speicherzellen; eine nichtflüchtige Speichersteuerung in Kommunikation mit den nichtflüchtigen Speicherzellen und der Kommunikationsschnittstelle; und eine Host-Steuerung in Kommunikation mit der nichtflüchtigen Speichersteuerung über die Kommunikationsschnittstelle. Die Host-Steuerung ist eingerichtet, um: E/A-(Eingabe-/Ausgabe-)Übermittlungswarteschlangen und E/A-Abschlusswarteschlangen an Adressen im Speicher zu erzeugen; die Speicheradressen der E/A-Übermittlungswarteschlangen und die Speicheradressen der E/A-Abschlusswarteschlangen an die nichtflüchtige Speichersteuerung zu senden; eine Datenzuordnung zwischen jeder E/A-Übermittlungswarteschlange und einer zugehörigen E/A-Abschlusswarteschlange an die nichtflüchtige Speichersteuerung zu senden; eine partielle Rücksetzung der nichtflüchtigen Speichersteuerung auszulösen, wobei die partielle Rücksetzung die nichtflüchtige Speichersteuerung anweist, die Speicheradressen der E/A-Übermittllungswarteschlangen und die Datenzuordnung zwischen jeder E/A-Übermittlungswarteschlange und einer zugehörigen E/A-Abschlusswarteschlange nach der partiellen Rücksetzung aufrechtzuerhalten; auf die partielle Rücksetzung der nichtflüchtigen Speichersteuerung zu antworten, den Inhalt der E/A-Übermittlungswarteschlangen und der E/A-Abschlusswarteschlangen zu löschen; und nachdem der Inhalt der E/A-Übermittlungswarteschlangen gelöscht ist, E/A-Befehle an die E/A-Übermittlungswarteschlangen zu senden.
  • Entsprechende Verfahren, Systeme und von einem Computer oder von einem Prozessor lesbare Speichermedien, die ausführbaren Programmcode zur Durchführung der hierin bereitgestellten Verfahren aufweisen, können ebenfalls bereitgestellt werden.
  • Für die Zwecke dieses Dokuments werden die numerischen Begriffe erster (d.h. 1.) und zweiter (d.h. 2.) im Allgemeinen verwendet, um eine Reihenfolge anzugeben, wann Befehle (z.B. Schreibbefehle) durch eine Speichersteuerung von einem Host empfangen werden, sowie im Allgemeinen eine Reihenfolge, in der Daten (z.B. erste und zweite Daten) in einem nicht flüchtigen Speicher zu speichern sind. Es ist jedoch anzumerken, dass der Begriff erster (d. h. 1.) nicht so interpretiert werden sollte, als dass er impliziert, dass nichts anderes ihm vorangeht.
  • Für die Zwecke dieses Dokuments kann eine Bezugnahme in der Beschreibung auf „eine Ausführungsform“, „einige Ausführungsformen“ oder „eine andere Ausführungsform“ verwendet werden, um verschiedene Ausführungsformen oder dieselbe Ausführungsform zu beschreiben.
  • Im Sinne dieses Dokuments kann eine Verbindung eine direkte Verbindung oder eine indirekte Verbindung sein (z. B. über einen oder mehrere andere Teile). In einigen Fällen, wenn ein Element als mit einem anderen Element verbunden oder gekoppelt bezeichnet wird, kann das Element direkt mit dem anderen Element verbunden sein oder indirekt über zwischenliegende Elemente mit dem anderen Element verbunden sein. Wenn ein Element als direkt mit einem anderen Element verbunden bezeichnet wird, gibt es keine Zwischenelemente zwischen dem Element und dem anderen Element. Zwei Vorrichtungen sind „in Kommunikation“, wenn sie direkt oder indirekt miteinander verbunden sind, sodass sie elektronische Signale untereinander übertragen können.
  • Für die Zwecke dieses Dokuments können die Begriffe „basierend auf“ und „in Abhängigkeit von“ als „zumindest teilweise basierend auf verstanden werden.
  • Für die Zwecke dieses Dokuments kann ein „Satz“ ein oder mehrere Elemente einschließen.
  • Die vorhergehende detaillierte Beschreibung der Erfindung wurde zu Zwecken der Veranschaulichung und Beschreibung präsentiert. Sie soll nicht erschöpfend sein oder die Erfindung auf die genaue offenbarte Form beschränken. Viele Modifikationen und Variationen sind unter Berücksichtigung der vorstehend genannten Lehre möglich. Die beschriebenen Ausführungsformen wurden gewählt, um die Prinzipien der Erfindung und ihre praktische Anwendung am besten zu erklären, um dadurch anderen Fachleuten zu ermöglichen, die Erfindung in verschiedenen Ausführungsformen und mit verschiedenen Modifikationen, wie sie für die jeweilige beabsichtigte Verwendung geeignet sind, am besten zu nutzen. Es ist beabsichtigt, dass der Schutzumfang der Erfindung durch die hieran angehängten Ansprüche definiert wird.

Claims (15)

  1. Vorrichtung, aufweisend: eine Speicherstruktur (126) mit nichtflüchtigen Speicherzellen; und eine nichtflüchtige Speichersteuerung (122), die mit der Speicherstruktur kommuniziert und eingerichtet ist, um: von einem Host (140) Speicheradressen von E/A-Übermittlungswarteschlangen (Eingabe/Ausgabe) (162) und Speicheradressen von E/A-Abschlusswarteschlangen (164) zu empfangen; von dem Host eine Datenzuordnung zwischen jeder E/A-Übermittlungswarteschlange und einer zugehörigen E/A-Abschlusswarteschlange zu empfangen; als Antwort auf eine partielle Rücksetzung der nichtflüchtigen Speichersteuerung Folgendes zurückzusetzen: i) Anfangszeiger und Endzeiger der E/A-Übermittlungswarteschlangen; und ii) Anfangszeiger und Endzeiger der E/A-Abschlusswarteschlangen; und über die Teilrücksetzung der nichtflüchtigen Speichersteuerung hinweg Folgendes zu behalten: i) die Speicheradressen der E/A-Übermittlungswarteschlangen; ii) die Speicheradressen der E/A-Abschlusswarteschlangen; und iii) die Datenzuordnung zwischen jeder E/A-Übermittlungswarteschlange und der zugehörigen E/A-Abschlusswarteschlange.
  2. Vorrichtung gemäß Anspruch 1, ferner umfassend den Host, wobei der Host eingerichtet ist zum: Auslösen der partiellen Rücksetzung der nichtflüchtigen Speichersteuerung; und Löschen des Inhalts der E/A-Übermittlungswarteschlangen und des Inhalts der E/A-Abschlusswarteschlangen als Teil der partiellen Rücksetzung der nichtflüchtigen Speichersteuerung.
  3. Vorrichtung gemäß Anspruch 2, wobei der Host ferner eingerichtet ist, um: nach der partiellen Rücksetzung die Datenzuordnung zwischen jeder E/A-Übermittlungswarteschlange und der zugehörigen E/A-Abschlusswarteschlange beizubehalten; und nachdem der Inhalt der E/A-Übermittlungswarteschlangen und der Inhalt der E/A-Abschlusswarteschlangen gelöscht worden sind, E/A-Befehle in die E/A-Übermittlungswarteschlangen zu stellen.
  4. Vorrichtung gemäß einem der Ansprüche 1 bis 3, ferner umfassend den Host, wobei der Host eingerichtet ist zum: Schreiben in ein Register in der nichtflüchtigen Speichersteuerung, um eine partielle Rücksetzung der nichtflüchtigen Speichersteuerung auszulösen.
  5. Vorrichtung gemäß einem der Ansprüche 1 bis 4, ferner umfassend den Host, wobei der Host eingerichtet ist, um: der nichtflüchtigen Speichersteuerung einen herstellerspezifischen Befehl bereitzustellen, um die partielle Rücksetzung der nichtflüchtigen Speichersteuerung auszulösen.
  6. Vorrichtung gemäß einem der Ansprüche 1 bis 5, ferner umfassend den Host, wobei der Host eingerichtet ist, um: vor der partiellen Rücksetzung der nichtflüchtigen Speichersteuerung Speicherplatz für die E/A-Übermittlungswarteschlangen und die E/A-Abschlusswarteschlangen zuzuweisen; und nach der partiellen Rücksetzung der nichtflüchtigen Speichersteuerung die Zuweisung des Host-Speichers für die E/A-Übermittlungswarteschlangen und die E/A-Abschlusswarteschlangen zu behalten.
  7. Vorrichtung gemäß einem der Ansprüche 1 bis 6, ferner umfassend den Host, wobei der Host eingerichtet ist, um: vor der partiellen Rücksetzung der nichtflüchtigen Speichersteuerung Speicherplatz in der nichtflüchtigen Speichersteuerung für die E/A-Übermittlungswarteschlangen und die E/A-Abschlusswarteschlangen zuzuweisen; und nach der partiellen Rücksetzung der nichtflüchtigen Speichersteuerung die Zuweisung von Speicherplatz in der nichtflüchtigen Speichersteuerung für die E/A-Übermittlungswarteschlangen und die E/A-Abschlusswarteschlangen zu behalten.
  8. Vorrichtung gemäß einem der Ansprüche 1 bis 7, wobei die nichtflüchtige Speichersteuerung ferner eingerichtet ist, um: ein Interrupt-Koaleszenz-Merkmal nach der partiellen Rücksetzung der nichtflüchtigen Speichersteuerung beizubehalten.
  9. Vorrichtung gemäß einem der Ansprüche 1 bis 8, wobei die nichtflüchtige Speichersteuerung ferner eingerichtet ist, um: vor der partiellen Rücksetzung auf die E/A-Übermittlungswarteschlangen und die E/A-Abschlusswarteschlangen zuzugreifen, um E/A-Befehle von dem Host zu verarbeiten, um auf die nichtflüchtigen Speicherzellen zuzugreifen; und nach der partiellen Rücksetzung auf die E/A-Übermittlungswarteschlangen und die E/A-Abschlusswarteschlangen zuzugreifen, um E/A-Befehle von dem Host zu verarbeiten, um auf die nichtflüchtigen Speicherzellen zuzugreifen, basierend auf: i) den beibehaltenen Speicheradressen der E/A-Abschlusswarteschlangen; ii) den beibehaltenen Speicheradressen der E/A-Übermittlungswarteschlangen; und iii) der beibehaltenen Datenzuordnung zwischen jeder E/A-Übermittlungswarteschlange und der zugehörigen E/A-Abschlusswarteschlange.
  10. Verfahren zum Betreiben einer nichtflüchtigen Speichervorrichtung, das Verfahren umfassend: während einer Initialisierung einer nichtflüchtigen Speichersteuerung der nichtflüchtigen Speichervorrichtung: Empfangen von Speicheradressen von E/A-Übermittlungswarteschlangen (Eingabe/Ausgabe) und Speicheradressen von E/A-Abschlusswarteschlangen; und Empfangen einer Datenzuordnung zwischen jeder E/A- Übermittlungswarteschlange und einer zugehörigen E/A-Abschlusswarteschlange; Zugriff auf die E/A-Übermittlungswarteschlangen und die E/A-Abschlusswarteschlangen, um E/A-Befehle zu verarbeiten, um auf nichtflüchtigen Speicher in der nichtflüchtigen Speichervorrichtung zuzugreifen; als Antwort auf eine partielle Rücksetzung der nichtflüchtigen Speichersteuerung Anfangszeiger und Endzeiger der E/A-Übermittlungswarteschlangen sowie Anfangszeiger und Endzeiger der E/A-Abschlusswarteschlangen zu löschen; und nach der partiellen Rücksetzung: Behalten der Speicheradressen der E/A-Abschlusswarteschlangen; Behalten der Speicheradressen der E/A-Übermittlungswarteschlangen; Behalten der Datenzuordnung zwischen jeder E/A-Übermittlungswarteschlange und der zugehörigen E/A-Abschlusswarteschlange; und Zugriff auf die E/A-Übermittlungswarteschlangen und die E/A-Abschlusswarteschlangen, um E/A-Befehle zu verarbeiten, wobei der Zugriff basiert auf: i) den behaltenen Speicheradressen der E/A-Abschlusswarteschlangen; ii) den behaltenen Speicheradressen der E/A-Übermittlungswarteschlangen; und iii) der behaltenen Datenzuordnung zwischen jeder E/A-Übermittlungswarteschlange und der zugehörigen E/A-Abschlusswarteschlange.
  11. Verfahren gemäß Anspruch 10, wobei: die Speicheradressen der E/A-Übermittlungswarteschlangen, die Speicheradressen der E/A-Abschlusswarteschlangen und die Datenzuordnung zwischen jeder E/A-Übermittlungswarteschlange und der zugehörigen E/A-Abschlusswarteschlange nach der partiellen Rücksetzung im Speicher, auf den die nichtflüchtige Speichersteuerung zugreifen kann, erhalten bleiben.
  12. Verfahren gemäß Anspruch 11, wobei: die Speicheradressen der E/A-Übermittlungswarteschlangen, die Speicheradressen der E/A-Abschlusswarteschlangen und die Datenzuordnung zwischen jeder E/A-Übermittlungswarteschlange und der zugehörigen E/A-Abschlusswarteschlange nach der partiellen Rücksetzung im Speicher, auf den eine Host-Steuerung, welche die Initialisierung der nichtflüchtigen Speichersteuerung durchführt, zugreifen kann, erhalten bleiben.
  13. Verfahren gemäß Anspruch 12, weiterhin aufweisend: nach der partiellen Rücksetzung die Speicherrückstellung an den Speicheradressen der E/A-Übermittlungswarteschlangen und den Speicheradressen der E/A-Abschlusswarteschlangen, bevor E/A-Befehle an die E/A-Übermittlungswarteschlangen gesendet werden.
  14. Verfahren gemäß Anspruch 13, wobei der Zugriff auf die E/A-Übermittlungswarteschlangen und die E/A-Abschlusswarteschlangen zum Verarbeiten von E/A-Befehlen nach der partiellen Rücksetzung umfasst: nachdem der Speicher an den E/A-Übermittlungswarteschlangen zurückgesetzt worden ist, Zugriff auf E/A-Befehle von den E/A-Übermittlungswarteschlangen; und nachdem der Speicher an den E/A-Abschlusswarteschlangen zurückgesetzt worden ist, Setzen von Antworten an die E/A-Befehle.
  15. Verfahren gemäß einem der Ansprüche 10 bis 14, ferner umfassend: während der Initialisierung der nichtflüchtigen Speichersteuerung Einrichten eines Interrupt-Koaleszenz-Merkmals; und nach der partiellen Rücksetzung der nichtflüchtigen Speichersteuerung Beibehalten des I nterrupt-Koaleszenz-Merkmals.
DE112019000147.7T 2018-05-30 2019-02-05 Partielle rücksetzung einer speichersteuerung Pending DE112019000147T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/992,905 US10719267B2 (en) 2018-05-30 2018-05-30 Partial reset of memory controller
US15/992,905 2018-05-30
PCT/US2019/016715 WO2019231504A1 (en) 2018-05-30 2019-02-05 Partial reset of a memory controller

Publications (1)

Publication Number Publication Date
DE112019000147T5 true DE112019000147T5 (de) 2020-09-03

Family

ID=68692974

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112019000147.7T Pending DE112019000147T5 (de) 2018-05-30 2019-02-05 Partielle rücksetzung einer speichersteuerung

Country Status (3)

Country Link
US (1) US10719267B2 (de)
DE (1) DE112019000147T5 (de)
WO (1) WO2019231504A1 (de)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7282491B2 (ja) * 2018-08-30 2023-05-29 キヤノン株式会社 記録制御装置、および、その制御方法
US11269519B2 (en) * 2020-01-03 2022-03-08 International Business Machines Corporation Queue management in storage systems
KR20210099291A (ko) * 2020-02-04 2021-08-12 삼성전자주식회사 다중-호스트를 지원하도록 구성된 스토리지 장치 및 그것의 동작 방법
KR20210157544A (ko) * 2020-06-22 2021-12-29 에스케이하이닉스 주식회사 메모리 시스템, 메모리 컨트롤러 및 메모리 시스템의 동작 방법
US11561729B2 (en) * 2020-08-19 2023-01-24 Micron Technology, Inc. Write determination counter
KR20220080915A (ko) * 2020-12-08 2022-06-15 삼성전자주식회사 스토리지 장치와 호스트 장치의 구동 방법 및 스토리지 장치
US11494111B2 (en) * 2020-12-17 2022-11-08 Micron Technology, Inc. Data operation based on valid memory unit count
CN113377288B (zh) * 2021-04-30 2024-03-12 深圳大普微电子科技有限公司 硬件队列管理系统、方法、固态硬盘控制器及固态硬盘
US11640335B2 (en) 2021-06-15 2023-05-02 Western Digital Technologies, Inc. Multiple function level reset management
JP2023072389A (ja) * 2021-11-12 2023-05-24 キオクシア株式会社 メモリシステムおよび制御方法
CN116303130B (zh) * 2023-05-16 2023-08-15 苏州浪潮智能科技有限公司 存储设备异步事件上报方法及其应用设备

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6907479B2 (en) 2001-07-18 2005-06-14 Integrated Device Technology, Inc. Integrated circuit FIFO memory devices that are divisible into independent FIFO queues, and systems and methods for controlling same
US7082071B2 (en) 2001-08-23 2006-07-25 Integrated Device Technology, Inc. Integrated DDR/SDR flow control managers that support multiple queues and MUX, DEMUX and broadcast operating modes
US7292163B1 (en) 2006-04-14 2007-11-06 Xilinx, Inc. Circuit for and method of encoding a data stream
US8743128B2 (en) 2009-09-01 2014-06-03 Blackberry Limited Mobile wireless communications device with reset functions and related methods
US20110179255A1 (en) 2010-01-21 2011-07-21 Arm Limited Data processing reset operations
US8588228B1 (en) * 2010-08-16 2013-11-19 Pmc-Sierra Us, Inc. Nonvolatile memory controller with host controller interface for retrieving and dispatching nonvolatile memory commands in a distributed manner
US8341342B1 (en) * 2012-03-23 2012-12-25 DSSD, Inc. Storage system with incremental multi-dimensional RAID
US20140331001A1 (en) 2013-05-02 2014-11-06 Lsi Corporation Command Barrier for a Solid State Drive Controller
KR102403489B1 (ko) 2015-07-10 2022-05-27 삼성전자주식회사 비휘발성 메모리 익스프레스 컨트롤러에 의한 입출력 큐 관리 방법
US10019161B2 (en) 2015-08-31 2018-07-10 Sandisk Technologies Llc Out of order memory command fetching
US20170075572A1 (en) 2015-09-11 2017-03-16 Sandisk Technologies Inc. Extending hardware queues with software queues
KR102278721B1 (ko) 2016-07-22 2021-07-16 삼성전자주식회사 비휘발성 메모리 익스프레스(NVMe) 장치의 커맨드의 실행 조정을 위한 시스템 및 방법

Also Published As

Publication number Publication date
WO2019231504A1 (en) 2019-12-05
US10719267B2 (en) 2020-07-21
US20190369911A1 (en) 2019-12-05

Similar Documents

Publication Publication Date Title
DE112019000147T5 (de) Partielle rücksetzung einer speichersteuerung
DE112017005890T5 (de) Abrufen von Datenpufferzeigern für direkten Speicherzugriff
DE112018000834T5 (de) System und verfahren zur adaptiven befehlsabruf-aggregation
DE112018000228T5 (de) System und Verfahren zur Verarbeitung und Arbitrierung von Übermittlungs- und Beendigungswarteschlangen
DE102017128939A1 (de) System und Verfahren zum dynamischen und adaptiven Zusammenführen von Interrupts
DE112018000233T5 (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
DE112018004256T5 (de) Redundanzcodierstreifen basierend auf internen adressen von speichervorrichtungen
DE112018004251T5 (de) Adaptive vorrichtungsdienstqualität durch host-speicherpufferbereich
DE112018004322T5 (de) Nichtflüchtiges speichersystem mit hostseitiger befehlseinspeisung
DE112018000230T5 (de) System und Verfahren zur spekulativen Befehlsausführung unter Verwendung des Steuerungsspeicherpuffers
DE102020112512A1 (de) Datenspeichergerät und Betriebsverfahren dafür
DE112016004760T5 (de) System und Verfahren für direktes Schreiben auf einen MLC-Speicher
DE102019116213A1 (de) Qualität von für Enterprise-Halbleiterlaufwerke optimierten dienstbasierten Arbitrierungen
DE102018105943A1 (de) Kontextbewusste dynamische Befehlsplanung für ein Datenspeichersystem
DE112019000139T5 (de) Nichtflüchtiges speichersystem mit dynamischer zuweisung von anwendungen zu einem speicher basierend auf nutzungsüberwachung
DE112019000161T5 (de) Speicher-cache-verwaltung
DE102017120787A1 (de) Verfahren und Vorrichtung zum Entladen von Datenverarbeitung in Hybrid-Speichervorrichtungen
DE102018123880A1 (de) Adaptive Verwaltung von Zwischenspeichern
DE102013218440A1 (de) Verfahren zum Betreiben eines Flash-Speicherbauelements sowie Bildverarbeitungssystem
DE102011075023A1 (de) Indexierter Registerzugriff für einen Speicherbaustein
DE102020211544A1 (de) Steuerung, betriebsverfahren der steuerung und speichergerät mit derselben
DE102021107443A1 (de) Dynamische speichersteuerung und verfahren zur verwendung damit
DE102022101607A1 (de) Verwaltung der hostspeicherpufferzuweisung
DE102021006246A1 (de) Doppelt verschachtelte Programmierung einer Speichervorrichtung in einem Speicher-Untersystem

Legal Events

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

Representative=s name: MURGITROYD GERMANY PATENTANWALTSGESELLSCHAFT M, DE