DE112018004251T5 - Adaptive vorrichtungsdienstqualität durch host-speicherpufferbereich - Google Patents

Adaptive vorrichtungsdienstqualität durch host-speicherpufferbereich Download PDF

Info

Publication number
DE112018004251T5
DE112018004251T5 DE112018004251.0T DE112018004251T DE112018004251T5 DE 112018004251 T5 DE112018004251 T5 DE 112018004251T5 DE 112018004251 T DE112018004251 T DE 112018004251T DE 112018004251 T5 DE112018004251 T5 DE 112018004251T5
Authority
DE
Germany
Prior art keywords
host
memory
memory buffer
controller
access
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
DE112018004251.0T
Other languages
English (en)
Inventor
Judah Gamliel Hahn
Alon Marcu
Itshak Afriat
Shay Benisty
Ariel Navon
Alex Bazarsky
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
SANDISK TECHNOLOGIES, INC. (N.D.GES. D. STAATE, US
Original Assignee
Western Digital Technologies Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Western Digital Technologies Inc filed Critical Western Digital Technologies Inc
Publication of DE112018004251T5 publication Critical patent/DE112018004251T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/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/0656Data buffering arrangements
    • 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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7206Reconfiguration of flash memory system

Landscapes

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

Abstract

Ein System und Verfahren zum Reduzieren von Leistungseinbußen eines Hosts, der einen Host-Speicherpuffer (HMB) zur Verwendung durch eine Speichervorrichtung liefert. Das Verfahren kann das Modellieren eines gewünschten HMB-Zugriffszeitpunkts durch die Speichervorrichtung in einer anfänglichen Offline-Analyse für mehrere Arbeitslastklassen, das periodische Aktualisieren der in der Speichervorrichtung gespeicherten Zugriffszeitpunktdaten basierend auf der tatsächlichen Verwendung und das Verwenden der aktuellen HMB-Zugriffszeitpunktinformationen zum Modifizieren des Zugriffs der Speichervorrichtung auf den HMB auf dem Host einschließen. Das System kann eine Speichereinrichtungssteuerung einschließen, die unterschiedliche HMB-Zugriffszeitpunkte für unterschiedliche Host-Arbeitslasten basierend auf individuellen HMB-Bereichen quantifiziert.

Description

  • HINTERGRUND
  • Speichersysteme wie Festkörperlaufwerke (solid state drive, SSD), einschließlich NAND-Flashspeicher, werden üblicherweise in elektronischen Systemen verwendet, die von Verbraucherprodukten bis zu Computersystemen auf Unternehmensebene reichen. Der Markt für SSD hat zugenommen, und seine Akzeptanz zur Verwendung zur Datenspeicherung durch private Unternehmen oder Regierungsbehörden nimmt immer weiter zu. Manche SSDs können einen Abschnitt des Arbeitsspeichers (random access memory, RAM) auf einer verbundenen Hostvorrichtung, der speziell zur Steuerung durch das SSD gedacht ist, hierin bezeichnet als der Host-Speicherpuffer (host memory buffer, HMB), verwenden. Ein SSD, das den HMB auf einer verbundenen Host-Vorrichtung verwendet, kann oft seine Leistung und sein Ansprechverhalten verbessern. Die verbesserte Leistung und die Ansprechempfindlichkeit des SSD-Speichers sind jedoch ursächlich dafür, dass die Gesamtsystemleistung herabgesetzt wird. Zum Beispiel kann eine starke Verwendung des HMB auf dem Host durch das SSD zu Host-Leistung- oder Energieproblemen am Host aufgrund von Konflikten am Datenbus, wie beispielsweise einem PCIe-Bus, oder an anderen von Host und Vorrichtung gemeinsam genutzten Ressourcen führen.
  • Figurenliste
    • 1A ist ein Blockdiagramm eines beispielhaften nichtflüchtigen Speichersystems.
    • 1B ist ein Blockdiagramm, das ein beispielhaftes Speichermodul veranschaulicht.
    • 1C ist ein Blockdiagramm, das ein hierarchisches Speichersystem veranschaulicht.
    • 2A ist ein Blockdiagramm, das beispielhafte Komponenten einer Steuerung eines nichtflüchtigen Speichersystems veranschaulicht.
    • 2B ist ein Blockdiagramm, das beispielhafte Komponenten eines nichtflüchtigen Speichers eines nichtflüchtigen Speichersystems veranschaulicht.
    • 3 ist ein Beispiel eines nichtflüchtigen Speicherschaltungsarrays, das Block- und Wortleitungsanordnungen darstellt.
    • 4 ist ein Blockdiagramm einer detaillierteren Ansicht des Host-Speicherpuffers und unterschiedlicher Bereiche des in 2A dargestellten Host-RAM.
    • 5 veranschaulicht Beispiele von unterschiedlichen Arbeitslast-Transaktionen, die durch eine Speichervorrichtung ausgeführt werden können, und ein Beispiel von Operationen in einem Befehl in der Transaktion.
    • 6 ist ein Flussdiagramm, das eine detailliertere Version eines READ-Befehls von 5 und PCIe-Zugriffe darstellt, die in diesem Arbeitsablauf enthalten sein können.
    • 7 ist ein Flussdiagramm, das ein Verfahren zum Einstellen eines Speichervorrichtungszugriffs auf Bereiche eines Host-Speicherpuffers darstellt.
    • 8 ist ein Flussdiagramm, das ein Offline-Modellierungsverfahren zum Bestimmen einer Anpassung von Speichervorrichtungszugriffsraten auf verschiedene Host-Speicherpufferbereiche basierend auf einer Arbeitslastklasse veranschaulicht.
    • 9 ist ein Ablaufdiagramm zum Veranschaulichen eines Online-Modellierungsverfahrens zur Bestimmung der Einstellung der Speichervorrichtungszugriffsraten auf verschiedene Host-Speicherpufferbereiche auf der Grundlage der tatsächlichen der Host-Daten in Bezug auf die Latenz und das Ansprechverhalten
  • DETAILLIERTE BESCHREIBUNG
  • Um die Anforderungen zur Verbesserung der Speichervorrichtungsleistung durch Verwendung des Host-Speicherpuffers (HMB) anzugehen, jedoch eine gewünschte Gesamtsystemleistung beizubehalten, werden ein System und ein Verfahren zum adaptiven Einstellen der Dienstgüte bereitgestellt. Das System und Verfahren identifiziert Zugriffserfordernisse und Ressourcennutzung von verschiedenen Bereichen des HMB und stellt eine jeweilige Verzögerung ein, die für den Zugriff auf die verschiedenen Bereiche des HMB gilt. In verschiedenen Implementierungen ist das System und Verfahren zur Begrenzung des Durchsatzes in bestimmten Schritten einer Transaktion zur Verbesserung des Gesamtansprechverhaltens des Hosts durch Reduzierung der Konflikte an einer Datenschnittstelle, wie einer PCle Schnittstelle eingerichtet. Ein HMB-Zugriffsmodifikationsmodul innerhalb der Speichervorrichtungssteuerung kann erfassen, wann der HMB-Zugriff die Leistung oder Bandbreite mithilfe von Gating sperrt. Der Host kann eine Gesamtbandbreite oder Latenzkappung unter Verwendung existierender PCIe-Mechanismen spezifizieren, wie beispielsweise einer Funktion zur Latenztoleranzmeldung (latency tolerance reporting, LTR).
  • Gemäß einem ersten Gesichtspunkt schließt ein nichtflüchtiges Speichersystem einen nichtflüchtigen Speicher und eine Steuerung in Kommunikation mit dem nichtflüchtigen Speicher ein. Die Steuerung ist dazu eingerichtet, Daten von einem Host-Speicherpuffer auf einem Host in Kommunikation mit dem nichtflüchtigen Speichersystem zu speichern und davon abzurufen. Die Steuerung ist ferner dazu eingerichtet, eine erste Verzögerungsperiode auf alle Zugriffe durch die Steuerung auf einen ersten Speicherbereich des Host-Speicherpuffers hinzuzufügen und eine zweite Verzögerungsperiode auf alle Zugriffe durch die Steuerung auf einen zweiten Speicherbereich des Host-Speicherpuffers hinzuzufügen, wobei sich die erste und zweite Verzögerungsperiode unterscheiden und der erste Speicherbereich sich von dem zweiten Speicherbereich unterscheidet.
  • Nach einem anderen Gesichtspunkt der vorliegenden Erfindung kann ein Verfahren zur Verarbeitung von Speicherzugriffen durch ein nichtflüchtiges Speichersystem auf einen Host-Speicherpuffer das Bestimmen eines anfänglichen Host-Speicherpuffer-Zugriffszeitpunkts in dem nichtflüchtigen Speichersystem in einem Offline-Modellierungsprozess und das Speichern des anfänglichen Host-Speicherpuffer-Zugriffszeitpunkts einschließen. Das Verfahren kann ferner das Identifizieren einer Arbeitslastklasse (eines Arbeitslastklassentyps) für Befehle, die von einer Steuerung des nichtflüchtigen Speichersystems auszuführen sind, und das Zugreifen auf den Host-Speicherpuffer gemäß dem anfänglichen Zugriffszeitpunkt des Host-Speicherpuffers und auf der Grundlage der identifizierten Arbeitslastklasse einschließen. Das Verfahren kann auch das Modifizieren des anfänglichen Host-Speicherpuffer-Zugriffszeitpunkts in Reaktion auf den Empfang der Host-Ansprechlatenzdaten von dem Host einschließen.
  • Gemäß einem weiteren Gesichtspunkt wird ein nichtflüchtiges Speichersystem offenbart, das einen nichtflüchtigen Speicher und eine Steuerung in Kommunikation mit dem nichtflüchtigen Speicher aufweisen kann. Die Steuerung kann Mittel zum Bestimmen eines anfänglichen Host-Speicherpuffer-Zugriffszeitpunkts in einem Offline-Modellierungsprozess und zum Speichern des anfänglichen Host-Speicherpuffer-Zugriffszeitpunkts in dem nichtflüchtigen Speichersystem umfassen. Die Steuerung kann ferner Mittel für das Identifizieren einer Arbeitslastklasse für Befehle, die von einer Steuerung des nichtflüchtigen Speichersystems auszuführen sind, und das Zugreifen auf den Host-Speicherpuffer gemäß dem anfänglichen Zugriffszeitpunkt des Host-Speicherpuffers und auf der Grundlage der identifizierten Arbeitslastklasse einschließen. Darüber hinaus kann die Steuerung auch Mittel für das Modifizieren des anfänglichen Host-Speicherpuffer-Zugriffszeitpunkts in Reaktion auf den Empfang der Host-Ansprechlatenzdaten von dem Host einschließen.
  • Mit Bezug auf 1A ist ein Blockdiagramm zur Veranschaulichung des nichtflüchtigen Speichersystems (non-volatile memory, NVM-Systems) 100 gezeigt. Das NVM-System 100 schließt eine Steuerung 102 und einen nichtflüchtigen Speicher 104 ein, der aus einem oder mehreren nichtflüchtigen Speicherchips 104 bestehen kann. Wie hier verwendet, bezieht sich der Ausdruck Element auf den Satz von nichtflüchtigen Speicherzellen und assoziierte Schaltungsanordnungen zum Verwalten des physischen Betriebs dieser nichtflüchtigen Speicherzellen, die auf einem einzelnen Halbleitersubstrat ausgebildet sind. Die Steuerung 102 bildet mit einem Hostsystem eine Schnittstelle und überträgt Befehlssequenzen für Lese-, Programmier- und Löschvorgänge zu dem nichtflüchtigen Speicher-Die 104.
  • Die Steuerung 102 (die eine Flash-Speichersteuerung sein kann) kann die Form einer Verarbeitungsschaltungsanordnung, eines oder mehrerer Mikroprozessoren oder Prozessoren (hierin auch als zentrale Verarbeitungseinheiten (central processing unit, CPU) bezeichnet) und eines computerlesbaren Mediums annehmen, das computerlesbaren Programmcode (z. B. Software oder Firmware) speichert, der von den (Mikro-)Prozessoren, Logikgattern, Schaltern, einer anwendungsspezifischen integrierten Schaltung (application specific integrated circuit, ASIC), einer programmierbaren Logiksteuerung und einer eingebetteter Mikrosteuerung ausgeführt werden kann. Die Steuerung 102 kann mit Hardware und/oder Firmware eingerichtet sein, um die verschiedenen Funktionen durchzuführen, die unten beschrieben und in den Flussdiagrammen gezeigt sind. Außerdem können einige der Komponenten, die als innerhalb der Steuerung gezeigt sind, auch außerhalb der Steuerung gespeichert werden, und andere Komponenten können verwendet werden. Zusätzlich könnte der Ausdruck „operativ in Kommunikation mit“ direkt in Kommunikation mit oder indirekt (verdrahtet oder drahtlos) in Kommunikation mit durch eine oder mehrere Komponenten, die hierin gezeigt oder beschrieben sein können oder nicht gezeigt oder beschrieben sein können, bedeuten.
  • Wie hierin verwendet, ist eine Flash-Speichersteuerung eine Vorrichtung, die auf dem Flash-Speicher gespeicherte Daten verwaltet und mit einem Host kommuniziert, wie beispielsweise einem Computer oder einer elektronischen Vorrichtung. Eine Flash-Speichersteuerung kann verschiedene Funktionen zusätzlich zu der hier beschriebenen spezifischen Funktionalität aufweisen. Zum Beispiel kann die Flash-Speichersteuerung den Flash-Speicher formatieren, um sicherzustellen, dass der Speicher ordnungsgemäß arbeitet, um schlechte Flash-Speicherzellen auszugrenzen und Ersatzzellen zuzuordnen, die künftig fehlerhafte Zellen ersetzen sollen. Einige Teile der Ersatzzellen können verwendet werden, um Firmware aufzunehmen, um die Flash-Speichersteuerung zu betreiben und andere Merkmale zu implementieren. Im Betrieb, wenn ein Host Daten aus dem Flash-Speicher lesen oder Daten in diesen schreiben muss, kommuniziert der Host mit dem Flash-Speichersteuerung. Wenn der Host eine logische Adresse bereitstellt, zu der Daten gelesen/geschrieben werden sollen, kann die Flash-Speichersteuerung die vom Host empfangene logische Adresse in eine physische Adresse in der Flash-Speichersteuerung umwandeln. Die Flash-Speichersteuerung kann auch verschiedene Speicherverwaltungsfunktionen ausführen, wie z. B., ohne darauf beschränkt zu sein, Abnutzungsausgleich (Verteilen von Schreibvorgängen zum Vermeiden eines Verschleißes spezifischer Speicherblöcke, auf die ansonsten wiederholt geschrieben werden würde) und Speicherbereinigung (nachdem ein Block voll ist, Bewegen ausschließlich der gültigen Datenseiten zu einem neuen Block, so dass der volle Block gelöscht und wiederverwendet werden kann).
  • Der nichtflüchtige Speicherchip 104 kann jedes geeignete nichtflüchtige Speichermedium einschließen, einschließlich NAND-Flash-Speicherzellen und/oder NOR-Flash-Speicherzellen. Die Speicherzellen können die Form von Festkörperspeicherzellen (z. B. Flash-Speicherzellen) annehmen und können einmalig programmierbar, mehrfach programmierbar oder vielfach programmierbar sein. Die Speicherzellen können auch Single-Level Cells (SLC), Multiple-Level Cells (MLC), Triple-Level Cells (TLC) oder andere Speicherzellen-Level-Technologien sein, die jetzt bekannt sind oder später entwickelt werden. Außerdem können die Speicherzellen auf zweidimensionale oder dreidimensionale Weise hergestellt werden.
  • Die Schnittstelle zwischen der Steuerung 102 und dem nichtflüchtigen Speicherchip 104 kann jede geeignete Flash-Schnittstelle, wie ein Toggle-Modus 200, 400 oder 800, sein. In einer Ausführungsform kann das NVM-System 100 ein kartenbasiertes System sein, wie eine Secure-Digital-Karte (SD-Karte) oder eine Micro-Secure-Digital-Karte (micro-SD). In einer alternativen Ausführungsform kann das NVM-System 100 Teil eines eingebetteten Speichersystems sein.
  • Obwohl in dem in 1A veranschaulichten Beispiel das NVM-System 100 einen einzigen Kanal zwischen der Steuerung 102 und dem nichtflüchtigen Speicherchip 104 einschließen kann, ist der hierin beschriebene Gegenstand nicht auf einen einzigen Speicherkanal beschränkt. Zum Beispiel können in einigen NAND-Speichersystem-Architekturen wie in den 1B und 1C abhängig von den Fähigkeiten der Steuerung 2, 4, 8 oder mehr NAND-Kanäle zwischen der Steuerung und der NAND-Speichervorrichtung vorhanden sein. In jeder der hierin beschriebenen Ausführungsformen kann mehr als ein einziger Kanal zwischen der Steuerung und dem Speicher-Die vorhanden sein, selbst wenn in den Zeichnungen ein einziger Kanal gezeigt ist.
  • 1B veranschaulicht ein Speichermodul 200, das mehrere nichtflüchtige NVM-Systeme 100 umfasst. Als solches kann das Speichermodul 200 eine Speichersteuerung 202 einschließen, die mit einem Host und mit einem Speichersystem 204, das eine Vielzahl von nichtflüchtigen Speichersystemen 100 einschließt, interagiert. Die Schnittstelle zwischen der Speichersteuerung 202 und dem NVM-System 100 kann eine Busschnittstelle sein, wie beispielsweise eine Serial-Advanced-Technology-Attachment-Schnittstelle (SATA) oder eine Peripheral-Component--Interface-Express-Schnittstelle (PCle). Das Speichermodul 200 kann in einer Ausführungsform ein SSD-Laufwerk (Solid State Drive) sein, wie es beispielsweise in tragbaren Rechenvorrichtungen, wie beispielsweise in Laptop-Computern und Tablet-Computern, zu finden ist.
  • 1C ist ein Blockdiagramm, das ein hierarchisches Speichersystem veranschaulicht. Ein hierarchisches Speichersystem 210 schließt eine Vielzahl von Speichersteuerungen 202 ein, von denen jede ein entsprechendes Speichersystem 204 steuert. Host-Systeme 212 können über eine Busschnittstelle auf Speicher innerhalb des hierarchischen Speichersystems zugreifen. In einer Ausführungsform kann die Busschnittstelle eine nichtflüchtige Nonvolatile-Memory-Express(NVMe)-Schnittstelle oder eine Fibre-Channel-over-Ethernet(FCoE)-Schnittstelle sein. In einer Ausführungsform kann das in 1C veranschaulichte System ein Rack-montierbares Massenspeichersystem sein, auf das von mehreren Host-Computern zugegriffen werden kann, wie es in einem Datenzentrum oder an einem anderen Ort, an dem eine Massenspeicherung benötigt wird, zu finden ist.
  • 2A ist ein Blockdiagramm, das beispielhafte Komponenten einer Steuerung 102 in dem NVM-System 100 veranschaulicht. Die Steuerung 102 schließt ein Frontend-Modul 108, das mit einem Host verbunden ist, ein Backend-Modul 110, das mit dem einen oder den mehreren nichtflüchtigen Speicherchips 104 verbunden ist, und verschiedene andere Module, die Funktionen durchführen, die nun ausführlich beschrieben werden, ein. Ein Modul kann zum Beispiel die Form einer gepackten funktionellen Hardwareeinheit, die zur Verwendung mit anderen Komponenten konzipiert ist, eines Abschnitts eines Programmcodes (z. B. Software oder Firmware), der durch einen (Mikro-)Prozessor oder eine Verarbeitungsschaltung, die üblicherweise eine bestimmte Funktion von verwandten Funktionen durchführt, ausführbar ist, oder einer eigenständigen Hardware- oder Softwarekomponente, die mit einem größeren System verbunden ist, annehmen.
  • Module der Steuerung 102 können ein Host-Speicherpuffer(HMB)-Zugriffsmodifikationsmodul 112 enthalten, das auf dem Chip der Steuerung 102 vorhanden ist. Wie unten beschrieben, kann das HMB-Zugriffsmodifikationsmodul 112 in Zusammenarbeit mit der Steuerung Funktionalität zum Analysieren von Zugriffsmustern und Latenzzeit in Bezug auf NVM-Systemzugriffe auf einen Host-Speicherpuffer (HMB) 218 auf dem Host 212 bereitstellen. Das HMB-Zugriffsmodifikationsmodul 112 kann auch Funktionalität zum Implementieren von Verzögerungen im NVM-Systemzugriff auf den HMB 218 enthalten, um eine niedrige Gesamtlatenz bei Speicheroperationen aufrechtzuerhalten, die anhand der Zeit zwischen synchronen Befehlen oder Befehlen, die von dem Host mit einer niedrigen Gesamtwarteschlangentiefe gesendet werden, gemessen wird. Das HMB-Zugriffsmodifikationsmodul 112 kann Zugriffsverzögerungszeiten auf den HMB 218 dynamisch auf der Grundlage einer fortlaufenden Messung von Latenz- und Zugriffsmustern einstellen. Außerdem kann das HMB-Modifikationsmodul 112 verschiedene Zugriffsverzögerungen auf unterschiedliche Bereiche des Speichers innerhalb des HMB 218 implementieren.
  • Eine Pufferverwaltung/Bussteuerung 114 verwaltet Puffer in Direktzugriffsspeicher (RAM) 116 und steuert die interne Buszuteilung der Steuerung 102. Ein Nur-Lese-Speicher (read only memory, ROM) 118 speichert Systemstartcode. Obwohl sie in 2A als von der Steuerung 102 getrennt angeordnet dargestellt sind, können in anderen Ausführungsformen entweder der RAM 116 oder der ROM 118 oder beide innerhalb der Steuerung 102 angeordnet sein. In noch anderen Ausführungsformen können sich Teile des RAM 116 und des ROM 118 sowohl innerhalb der Steuerung 102 als auch außerhalb der Steuerung befinden. Weiterhin können in einigen Implementierungen die Steuerung 102, RAM 116 und ROM 118 auf separaten Halbleiterchips angeordnet sein. Der RAM 116 kann ein beliebiger aus einem oder mehreren Typen von RAM sein, wie zum Beispiel SRAM oder DRAM.
  • Der RAM 116 in dem NVM-System 100, ob außerhalb der Steuerung 102, innerhalb der Steuerung oder sowohl außerhalb als auch innerhalb der Steuerung 102 vorhanden, kann eine Anzahl von Elementen enthalten, einschließlich einer Kopie von einem oder mehreren Teilen der Logisch-zu-physisch-Abbildungstabellen für das NVM-System 100. Der RAM 116 kann protokollierte Leistungsdaten des nichtflüchtigen Speichers enthalten, die von der Steuerung 102 gesammelt werden. 2A veranschaulicht auch ein Beispiel eines Host-Systems 212, das mit dem NVM-System 100 verwendet werden kann. Das Host-System 212 kann einen Host-Prozessor 214 und einen Speicher wie einen flüchtigen und/oder nichtflüchtigen Speicher einschließen. Ein Beispiel eines flüchtigen Speichers, RAM 216, ist in diesem Beispiel gezeigt. Darüber hinaus kann der Host 212 einen Abschnitt von seinem Speicher für einen Host-Speicherpuffer 218 reservieren, der tatsächlich Speicher auf dem Host 212 ist, aber von dem Host-Prozessor 214 zur Verwendung und für den Zugriff durch die Steuerung 102 des NVM-Systems 100 reserviert ist. Wie unten detaillierter beschrieben ist, kann der Host-Speicherpuffer 218 von dem NVM-System 100 statt oder zusätzlich zu dem RAM 116 auf dem NVM-System 100 zum Speichern von einigen oder allen von Firmware oder anderen von dem NVM-System 100 verwendeten Daten verwendet werden.
  • Erneut mit Bezug auf die Steuerung 102 schließt das Frontend-Modul 108 eine Host-Schnittstelle 120 und eine Bitübertragungsschichtschnittstelle (PHY-Schnittstelle) 122 ein, die die elektrische Schnittstelle zu dem Host oder der Speichersteuerung der nächsten Ebene bereitstellen. Die Wahl des Typs der Host-Schnittstelle 120 kann von dem Typ von verwendetem Speicher abhängen. Beispiele für die Host-Schnittstellen 120 schließen, ohne jedoch darauf beschränkt zu sein, SATA, SATA Express, SAS, Fibre Channel, USB, UFS, PCIe/AHCI und PCIe/NVMe ein. Die Host-Schnittstelle 120 unterstützt üblicherweise die Übertragung von Daten, Steuersignalen und Taktsignalen. Obwohl jede der oben erwähnten Schnittstellen in Betracht gezogen wird, wird in Implementierungen hierin die PCIe/NVMe-Schnittstelle erörtert, wobei PCIe eine physische Schnittstelle ist und NVMe eine logische Schnittstelle ist, die PCle für ihren physischen Transport verwenden kann. Bei Versionen des Host 212 und des NVM-Systems 100 unter Verwendung von PCle kann das HMB-Zugriffsmodifikationsmodul 112 Latenz- und Host-Leistungsprobleme durch Modifizieren der Zugriffe (für andere Zwecke als vom Host initiierten Datentransfer) durch das NVM-System 100 des HMB 218 über den PCIe-Bus 220 auf dem Host 212 beheben. Wie hierin ausführlicher beschrieben, kann das HMB-Zugriffsmodifikationsmodul 112 die Rate spezifischer PCIe-Zugriffe durch das NVM-System 100 basierend auf impliziter oder expliziter Rückmeldung von dem Host 212 selektiv begrenzen.
  • Das Backend-Modul 110 schließt ein Fehlerkorrektursteuerungs(error correction controller, ECC)-Engine 124 ein, das die von dem Host empfangenen Datenbytes codiert und die aus dem nichtflüchtigen Speicher 104 gelesenen Datenbytes decodiert und fehlerkorrigiert. Das auf die Host-Daten angewendete ECC zum Erzeugen der Codewörter kann ein beliebiges von mehreren Typen von ECC sein, wie BCH-Codes (oder andere zyklische fehlerkorrigierende Codes) oder Low-Density-Parity-Check(LDPC)-Codes, die für die Wiederherstellung einer hohen Anzahl von Fehlerbits nützlich sind, wobei Fehler aus einzelnen Speicherzellen kommen können. Es wird in Betracht gezogen, dass diese Art von ECC durch das ECC-Engine 124 angewendet wird und zuletzt vor der Programmierung und zuerst beim Lesen verwendet wird. Das Backend-Modul 110 kann auch ein exklusives ODER-Engine (XOR) 125 zum Verwalten der XOR-Verarbeitung für das NVM-System 100 einschließen.
  • Ein Befehlssequenzer 126 erzeugt Befehlssequenzen, wie Programmier- und Löschbefehlssequenzen, zur Übermittlung an den nichtflüchtigen Speicher-Die 104. Eine Speicherschnittstelle 130 stellt die Befehlssequenzen für den nichtflüchtigen Speicherchip 104 bereit und empfängt Statusinformationen von dem nichtflüchtigen Speicherchip 104. In einer Ausführungsform kann die Speicherschnittstelle 130 eine Double-Data-Rate-Schnittstelle (DDR-Schnittstelle), wie eine Schnittstelle für den Toggle-Modus 200, 400 oder 800 sein. Eine Flash-Steuerschicht 132 steuert den Gesamtbetrieb des Backend-Moduls 110.
  • Zusätzliche Komponenten des NVM-Systems 100, das in 2A veranschaulicht ist, schließen die Medienverwaltungsschicht 138 ein, die den Abnutzungsausgleich von Speicherzellen des nichtflüchtigen Speicherchips 104 durchführt und die Abbildungstabellen und Logisch-zu-physisch-Abbildungen oder Leseaufgaben verwaltet. Das NVM-System 100 schließt auch andere diskrete Komponenten 140 wie externe elektrische Schnittstellen, externen RAM, Widerstände, Kondensatoren oder andere Komponenten ein, die mit der Steuerung 102 interagieren können. In alternativen Ausführungsformen sind eine oder mehrere der Physical-Layer-Schnittstellen (PHY) 122, die Medienverwaltungsschicht 138 und der Puffermanager/die Bussteuerung 114 optionale Komponenten, die in der Steuerung 102 nicht notwendig sind.
  • 2B ist ein Blockdiagramm, das beispielhafte Komponenten eines nichtflüchtigen Speicherchips 104 detaillierter darstellt. Das nichtflüchtige Speicherchip 104 schließt eine Peripherieschaltungsanordnung 141 und ein nichtflüchtiges Speicherarray 142 ein. Das nichtflüchtige Speicherarray 142 schließt die nichtflüchtigen Speicherzellen ein, die zum Speichern von Daten verwendet werden. Die nichtflüchtigen Speicherzellen können beliebige geeignete nichtflüchtige Speicherzellen sein, einschließlich NAND-Flash-Speicherzellen und/oder NOR-Flash-Speicherzellen in einer zweidimensionalen und/oder dreidimensionalen Konfiguration. Adressdecodierer 148, 150 können verwendet werden, um auf Informationen in dem nichtflüchtigen Speicherarray 142 zuzugreifen. Die Peripherie-Schaltungsanordnung 141 enthält eine Zustandsmaschine 152, die Statusinformationen an die Steuerung 102 liefert. Der nichtflüchtige Speicherchip 104 schließt ferner einen Datencache 156 ein, der Daten zwischenspeichert, die von den nichtflüchtigen Speicherzellen des nichtflüchtigen Speicherarrays 142 gelesen oder in diese programmiert werden. Der Datencache 156 weist Sätze von Daten-Latches 158 für jedes Bit von Daten auf einer Speicherseite des nichtflüchtigen Speicherarrays 142 auf. Somit kann jeder Satz von Daten-Latches 158 eine Seite breit sein und eine Vielzahl von Sätzen von Daten-Latches 158 kann in dem Datencache 156 eingeschlossen sein. Zum Beispiel kann für ein nichtflüchtiges Speicherarray 142 zum Speichern von n Bits pro Seite jeder Satz von Daten-Latches 158 N Daten-Latches einschließen, wobei jedes Daten-Latch 1 Bit an Daten speichern kann.
  • In einer Implementierung kann ein einzelnes Daten-Latch eine Schaltung mit zwei stabilen Zuständen sein und 1 Bit Daten wie ein aus NAND-Gattern konstruiertes Set/Reset- oder SR-Latch speichern. Die Daten-Latches 158 können als ein Typ eines flüchtigen Speichers funktionieren, der Daten nur beibehält, während er eingeschaltet ist. Es kann eine beliebige einer Anzahl von bekannten Arten von Daten-Latch-Schaltungen für die Daten-Latches in jedem Satz von Daten-Latches 158 verwendet werden. Jeder nichtflüchtige Speicherchip 104 kann seine eigenen Sätze von Daten-Latches 158 und ein nichtflüchtiges Speicherarray 142 aufweisen. Die Peripherie-Schaltungsanordnung 141 enthält eine Zustandsmaschine 152, die Statusinformationen an die Steuerung 102 liefert. Die Peripherie-Schaltungsanordnung 141 kann auch zusätzliche Eingabe-/Ausgabeschaltungen einschließen, die durch die Steuerung 102 zum Übertragen von Daten zu und von den Daten-Latches 158 verwendet werden können, sowie eine Anordnung von Messmodulen, die parallel arbeiten, um den Strom in jeder nichtflüchtigen Speicherzelle einer Seite von Speicherzellen in dem nicht flüchtigen Speicherarray 142 zu messen. Jedes Messmodul kann einen Leseverstärker einschließen, um zu erfassen, ob ein Leitungsstrom einer Speicherzelle, die mit einem jeweiligen Messmodul in Verbindung steht, über oder unter einem Referenzpegel liegt.
  • Ein Beispiel eines NAND-Arrays ist in 3 veranschaulicht. Während eine große Anzahl globaler Bitleitungen in einem NAND-Array vorgesehen ist, sind in 5 zur Vereinfachung der Erläuterung nur vier derartige Leitungen 302-308 gezeigt. Eine Anzahl von in Reihe geschalteten Speicherzellenfolgen 310-324 ist zwischen eine dieser Bitleitungen und ein Bezugspotential geschaltet. Mit dem Speicherzellenstrang 314 als Beispiel ist eine Vielzahl von Ladungsspeicher-Speicherzellen 326-332 in Reihe mit Auswahltransistoren 334 und 336 an jedem Ende des Strangs geschaltet. Wenn die Auswahltransistoren eines Strangs leitend gemacht werden, wird der Strang zwischen seiner Bitleitung und dem Bezugspotential verbunden. Sodann wird jeweils eine Speicherzelle innerhalb dieses Strangs programmiert oder gelesen.
  • Wortleitungen 338-344 von 3 erstrecken sich einzeln über das Ladungsspeicherelement einer Speicherzelle in jeder einer Anzahl von Strängen von Speicherzellen, und die Gatter 346 und 350 steuern die Zustände der Auswahltransistoren an jedem Ende der Stränge. Die Speicherzellenstränge, die gemeinsame Wort- und Steuergatterleitungen 338-350 gemeinsam nutzen, werden hergestellt, um einen Block 352 von Speicherzellen zu bilden, die zusammen gelöscht werden. Dieser Zellblock enthält die minimale Anzahl von Zellen, die zu einem Zeitpunkt physisch löschbar sind. Es wird jeweils eine Reihe von Speicherzellen programmiert, nämlich diejenigen entlang einer der Wortleitungen 338-344. Herkömmlicherweise werden die Zeilen eines NAND-Arrays in einer vorgeschriebenen sequentiellen Reihenfolge programmiert, in diesem Fall beginnend mit der Zeile entlang der Wortleitung 344, die dem Ende der mit Masse oder einem anderen gemeinsamen Potential verbundenen Stränge am nächsten liegt. Die Reihe von Speicherzellen entlang der Wortleitung 342 wird als nächste programmiert, und so weiter durch den gesamten Block 352.
  • Ein zweiter Block 354 ist ähnlich, wobei seine Stränge von Speicherzellen mit denselben globalen Bitleitungen wie die Stränge in dem ersten Block 352 verbunden sind, aber einen anderen Satz von Wort- und Steuergatterleitungen aufweisen. Die Wort- und Steuergatterleitungen werden durch Zeilensteuerschaltungen auf ihre richtigen Betriebsspannungen getrieben. Wenn es mehr als eine Ebene in dem System gibt, verwendet eine Speicherarchitektur gemeinsame Wortleitungen, die sich zwischen ihnen erstrecken. Es kann alternativ mehr als zwei Ebenen geben, die gemeinsame Wortleitungen gemeinsam nutzen. In anderen Speicherarchitekturen werden die Wortleitungen von einzelnen Ebenen separat angesteuert. Obwohl das in 3 veranschaulichte beispielhafte NAND-Array zum Beschreiben eines Verfahrens zum Schreiben von Daten in einen Speicherblock in einer Vorwärtsrichtung verwendet wurde, kann eine Steuerung zum Schreiben von Daten in einen Speicherblock entweder in einer Vorwärtsrichtung oder einer Rückwärtsrichtung ändern, welches Ende des Speicherzellenstrangs mit einer Masse oder einem anderen gemeinsamen Potential verbunden ist.
  • Das nichtflüchtige Flash-Speicherarray 142 in dem nichtflüchtigen Speicher 104 kann in Blöcken von Speicherzellen angeordnet sein, wie oben veranschaulicht, wobei ein Block von Speicherzellen die Löscheinheit ist, d. h. die kleinste Anzahl von Speicherzellen, die physisch zusammen löschbar sind. Für eine erhöhte Parallelität können die Blöcke jedoch in größeren Metablockeinheiten betrieben werden. Ein Block von jeder von mindestens zwei Ebenen von Speicherzellen kann logisch miteinander verknüpft werden, um einen Metablock zu bilden. Jeder Block ist weiter unterteilt in eine Vielzahl von Seiten und/oder Wortleitungen, wobei jede Seite oder Wortleitung in der Regel eine Instanz des kleinsten individuell zugänglichen (lesbaren) Abschnitts in einem Block ist. In einigen Implementationen, wie beispielsweise für einige Arten von Flash-Speichern, ist die kleinste individuell zugängliche Einheit eines Datensatzes ein Sektor, der eine Untereinheit einer Seite ist. Somit kann ein Block eine Vielzahl von Seiten einschließen, wobei jede Seite eine Vielzahl von Sektoren enthält, und jeder Sektor ist die minimale Dateneinheit zum Schreiben von Daten auf das NVM-System 100 oder zum Lesen von Daten von diesem.
  • Die in der 3 offenbarten Blöcke werden hierin als physische Blöcke bezeichnet, weil sie sich auf Gruppen von physischen Speicherzellen wie oben beschrieben beziehen. Wie hierin verwendet ist ein logischer Block einer der virtuellen Adressräume, die dazu definiert sind, die gleiche Größe wie ein physischer Block zu haben. Jeder logische Block kann einen Bereich logischer Blockadressen (LBA) einschließen, die Daten zugeordnet sind, die von einem Host empfangen werden. Die LBA werden dann auf einen oder mehrere physische Blöcke in dem NVM-System 100 abgebildet, wo die Daten physisch gespeichert werden.
  • Bezug nehmend auf 4 wird eine detailliertere Ansicht einer Implementierung des physischen Speichers auf dem Host 212, wie RAM 216 am Host 212 (2A), gezeigt. Der Abschnitt des RAM 216, der unter der Steuerung des NVM Systems 100 für den Host-Speicherpuffer (HMB) 218 zugewiesen ist, kann mehrere unterschiedliche Bereiche aufweisen, die jeweils einen anderen Typ oder andere Typen von Daten als jeder andere Bereich enthalten. Diese Bereiche können einen Flash-Translation-Layer(FTL)-Abbildungsbereich 222 enthalten, der Logisch-zu-physisch-Abbildungsdaten für das NVM-System 100, einen Firmware-Overlay-Bereich 224, der Firmware-Overlay-Daten enthält, und einen Bereich für Exklusiv-ODER-Tabellen (XOR) 226 zur Verwendung bei der Fehlerkorrektur auf dem NVM-System 100 enthält. Zusätzliche oder andere Bereiche innerhalb des HMB 218 werden in Betracht gezogen. Host-gesteuerte Bereiche des Host-RAM 216 können eine beliebige Anzahl von Elementen, wie beispielsweise allgemeine Datenpuffer 228 zur temporären Speicherung von Host-Daten, die in das NVM System 100 geschrieben werden (zum Beispiel Daten, die einem Host-Schreibbefehl zugehörig sind), oder Daten, die von Speicherorten auf dem NVM-System abgerufen werden (zum Beispiel Daten, auf die basierend auf einem Host-Lesebefehl zugegriffen wird), einschließen. Der Host-RAM 216 kann auch einen separaten Bereich 230 einschließen, der eine oder mehrere Befehlswarteschlangen und physische Bereichszeiger (physical region pointer, PRP) enthält. Die PRP können Zeiger sein, die identifizieren, wo in den Datenpuffern 228 die Daten stehen, die den verschiedenen Befehlen in den Befehlswarteschlangen zugehörig sind.
  • Unter Nutzung des NVM-Systems 100 und der oben beschriebenen Anordnung des Host 212 kann ein Verfahren zum adaptiven Einstellen der Gesamtdienstgüte des Systems implementiert werden. Als ein erster Schritt kann das HMB-Zugriffsmodifikationsmodul 112 ein Modell erstellen, wie viele und/oder wie lange Zugriffe auf verschiedene Bereiche des HMB-218 bestimmte Transaktionen nötig sind, wobei eine Transaktion als ein Satz von Befehlen definiert sein kann. Zum Beispiel kann eine Transaktion der Satz von Befehlen sein, der zum Öffnen eines Internetbrowsers benötigt wird, während eine andere Transaktion der Satz von Operationen sein, der zum Öffnen einer E-Mail-Anwendung wie Microsoft OUTLOOK benötigt wird.
  • Jede der hypothetischen Sequenzen der Transaktionen 502 in 5 kann mehrere Befehle 504 einschließen. Zum Beispiel zeigt die hypothetische Transaktion 1 von 5 eine Sequenz von Befehlen, die drei Lesebefehle, einen Schreibbefehl und einen Trimmbefehl einschließen. Gemeinsam mit jedem Lese- oder Schreibbefehl sind eine Startadresse (in einem physischen Host-Speicher) und eine Datenlänge, die eine Start- und Stoppadresse angibt, die mit dem Befehl bereitgestellt wird, aufgelistet. Aus der NVM-Systemperspektive ist die Kenntnis der jeweiligen Anwendung (Browser oder E-Mail, beispielsweise), die sich auf die Transaktion bezieht, unnötig, und stattdessen vermerkt das HMB-Zugriffsmodifikationsmodul 112 das Muster von Befehlen, die die Transaktion ausmachen, und kann dem bestimmten Muster von Befehlen eine Arbeitslastklassifizierung zuweisen. Der Beginn der einzelnen Transaktionen kann in einer Implementierung durch das Vorhandensein einer vorbestimmten minimalen Leerlaufzeit 510 zwischen jeder Transaktion identifiziert werden, in der keine Host-Operationen durchgeführt werden.
  • Innerhalb jedes Befehls 504 (z. B. Lesen, Schreiben oder Trimmen) jeder Transaktion werden eine oder mehrere Operationen ausgeführt. Zum Beispiel weist ein Lesebefehl 506 der Transaktion 1, die in 1 gezeigt ist, mehrere Operationen 508 auf, die in einer vorbestimmten Reihenfolge ausgeführt werden. Die Operationen 508 für den Lesebefehl 506 können ein Holen von einer Befehlswarteschlange, eine PRP-Suche, einen HMB-Zugriff, einen NAND Speicherzugriff und einen Abschlussschritt einschließen. Jede der Operationen 508 hat eine gemessene Ansprechzeit, die durch das Host-Schnittstellenmodul 120 bestimmt werden kann. Da die Zugriffszeiten des HMB 218 durch die Gesamtlatenz des Host-RAM 216 (der ein dynamischer RAM sein kann) beeinflusst werden, kann die HMB-Zugriffslatenz durch das HMB-Modifikationsmodul 112 relativ zu den anderen Host-Latenzen wie hierin erörtert eingestellt werden. Die hierin beschriebenen adaptiven Algorithmusverfahren sind konfiguriert, um unterschiedliche Verhältnisse der Bandbreite zwischen den verschiedenen Host-RAM-Bereichen zu testen und eine verbesserte Lösung für jeden Typ von Arbeitslast zu finden. Diese Analyse kann periodisch durchgeführt werden, um ein Hostspeicherzugriffsverhältnis zu finden.
  • Ein ausführlicheres Beispiel der Operationen in dem in 5 gezeigten Lesebefehl 506 ist in 6 veranschaulicht. 6 veranschaulicht einen Ablauf der Operationen des Lesebefehls und stellt ein Beispiel bereit, wo PCIe-Schnittstellenzugriffe (in 6 durch einen Stern (*) neben den jeweiligen Schritten in dem Flussdiagramm angegeben) auftreten. Dieses Beispiel geht erneut von einer PCIe-Schnittstelle und den möglichen Konflikten und Leistungsprobleme mit dem Host 212 und den NVM-System 100 -Zugriffen auf den Host-RAM 216 über die PCIe-Schnittstelle aus. Andere Schnittstellen und zugehörige Zugriffskonflikte werden ebenfalls in Betracht gezogen. Es sei angemerkt, dass, wenn mehrere Lesevorgänge gleichzeitig übermittelt oder arbitriert werden, einige Zugriffe aggregiert werden können.
  • Wenn der Lesebefehl für das NVM-System 100 zur Ausführung verfügbar ist, holt die Steuerung 102 zuerst den Befehl aus dem Warteschlangen-/PRP-Bereich 230 im Host-RAM 216 (bei 602). Die Warteschlange kann in einigen Implementierungen als Übermittlungswarteschlange (submission queue, SQ) bezeichnet werden. Der Steuerung 102 decodiert und parst dann den Befehl (bei 604). Wenn der Befehl eine Liste der physischen Bereichsseiten (PRP) einschließt, dann holt die Steuerung 102 die PRP-Liste aus dem Warteschlangen-/PRP-Bereich 230 in dem Host-RAM 216 (bei 606, 610). Wenn keine PRP-Liste enthalten ist, dann bestimmt die Steuerung 102 den Ort der aktuellen Logisch-zu-physisch-Abbildungsinformation für in dem Lesebefehl bereitgestellte logische Adressen (bei 608). Wenn die Abbildungsinformationen bereits in dem RAM 116 des NVM-Systems vorhanden sind, werden sie von dort abgerufen (bei 612), wenn sie aus dem nichtflüchtigem Speicher 104 abgerufen werden müssen, werden sie von dort abgerufen (bei 614), und wenn das NVM-System 100 den HMB 218 auf dem Host 212 zum Speichern der Abbildung verwendet hat, dann wird ein PCIe-Zugriff verwendet, um die Abbildungsinformationen von dem HMB 218 (bei 616) abzurufen.
  • Abhängig von der Menge der Abbildungstabelleninformationen, die in dem FTL-Abbildungsbereich 222 in dem HMB 218 vorgehalten wird, und der Notwendigkeit, einen anderen Teil der Abbildungstabelleninformationen in den HMB 218 einzuwechseln, beispielsweise, wenn das NVM-System 100 den HMB 218 zur Abbildungsinformationsspeicherung nutzt und die gegenwärtig gesucht Abbildung derzeit nicht in dem HMB 218 vorhanden ist, kann es sein, dass die Abbildungsinformationen in den HMB 218 eingewechselt werden müssen (bei 618). Wenn diese Einwechselung von Abbildungsinformationen erforderlich ist, muss die Steuerung 102 einen PCIe-Zugriff zum Aktualisieren der Abbildungsinformationen (z. B. FTL-Abbildungsbereich 222 des HMB 218) vornehmen (bei 622). Sobald die Abbildungsinformationen für den Lesebefehl erhalten wurden, ruft die Steuerung 102 aus dem nichtflüchtigen Speicher 104 die Daten der abgerufenen physischen Adresse mit dem Lesebefehl auf (holt diese) (bei 620).
  • Wenn eine Ausnahmebedingung eintritt (bei 624), wobei etwas erfasst wird, das anzeigt, dass es ein Problem mit dem Lesen aus dem nichtflüchtigen Speicher 104 gibt, dann kann die Notwendigkeit zum Holen eines Ausnahme-Firmware-Overlay aus dem Firmware-Overlay-Bereich 224 des HMB 218 bestehen, um das erfasste Problem vor Abschluss des Lesevorgangs zu behandeln und den Abschluss zu signalisieren (bei 630, 632, 634). Wenn keine Ausnahme in der Auslesung des nichtflüchtigen Speichers 104 (bei 624) erfasst wird, dann werden die aus dem nichtflüchtigen Speicher 104 gelesenen Daten in den entsprechenden Puffer in dem Datenpufferbereich 228 des Host-RAM 216 übertragen und die Steuerung 102 signalisiert dem Host 212 den Abschluss des Lesens (bei 626, 628). Das Overlay-Holen (630) und der Transfer von Daten zu dem Host (626) schließen beide PCIe-Zugriffe von dem NVM-System ein.
  • Um die möglichen Konflikte beim Zugriff auf den Host-RAM 216 über das bestimmte für Vorrichtungen wie das NVM-System 100, das auf den Host 212 zugreift, verwendete Busprotokoll zu verwalten, wird ein Verfahren und System zur Beobachtung des Zugriffs auf unterschiedliche Bereiche des HMB 218 und Zugriffe auf den Host-RAM 216 im Allgemeinen für unterschiedliche Arbeitslasten, und dann zur Kalibrierung der Zeitpunkte der Zugriffsraten durchgeführt. Wie in dem Flussdiagramm von 7 angegeben, ist die grundlegendste Implementierung die Modellierung der HMB-Zugriffe in Abhängigkeit von der Arbeitslastklasse und anschließendes Variieren der Zugriffsrate auf den HMB 218 relativ zu den Nicht-HMB-Host-RAM-216-Bereichen durch das NVM-System 100. Ein Maß der Wirksamkeit bei der Regressionsmodellierung kann die Gesamtverringerung der Durchlaufzeit im Host 212 sein, wie sie durch die von dem NVM-System 100 empfangenen Arbeitslasten bestimmt wird. Die Host-Durchlaufzeit ist die Gesamtdauer der Befehle, von dem Zeitpunkt, an dem sie einer Vorrichtungswarteschlange (z. B. dem Bereich 230 des Host-RAM 216) für das NVM-System 100 übertragen werden, bis zum Abschluss der letzten Unterbrechungssignalisierung. Da Messungen von der Steuerung 102 des NVM-Systems 100 vorgenommen werden, wird die Durchlaufzeit (Latenz) für jeden Befehl 504 in einer Transaktion gemessen. In Bezug auf den beispielhaften Lesebefehl 506 in 5 misst die Steuerung 102 die Zeit von dem Beginn der ersten Operation im Element 508 bis zur letzten Operation.
  • In Bezug auf 7 besteht der erste Schritt zum Modellieren von HMB-Zugriffen darin, dass das HMB-Zugriffsmodifikationsmodul 112 die Arbeitslastklasse identifiziert, beispielsweise die Sammlung von Befehlen in einer Transaktion (z. B. Transaktion 1 von 5), und dann einen vorher modellierten Satz von HMB-Zugriffsverzögerungen durch die Steuerung 102 abruft, die als optimal für die Aufrechterhaltung des Host-Ansprechverhaltens für diese Arbeitslastklasse bestimmt wurden (bei 702, 704). Die Zugriffszeiten (Verzögerungen) und Prioritäten für die Arbeitslast können aus dem RAM 116 auf dem NVM-System 100 (oder dem HMB 218) abgerufen werden und können auch in dem nichtflüchtigen Speicher 104 gespeichert werden. Während das HMB-Modifikationsmodul 112 die Arbeitslastklasse bestimmt und die dazugehörigen HMB-Verzögerungen und Prioritätsinformationen zur Verwendung durch das NVM-System 100 bei seinen Zugriffen auf den Host-RAM 216 während der identifizierten Arbeitslastklasse abruft/anwendet, prüft es auch periodisch die jüngste Leistung, zum Beispiel die aktuelle Latenz und Ansprechzeiten für eine gegebene Arbeitslastklasse, um zu sehen, ob sie den zu erwartenden HMB-Zugriffszeiten und Latenzen entsprechen, die aufgrund des vorherigen Modellierens (bei 706) erwartet werden. Wenn die tatsächlichen Latenzen und/oder andere Leistungskriterien von der erwarteten und modellierten Leistung um einen vorbestimmten Betrag oder Prozentsatz abweichen, dann wird der Prozess des Modellierens der bestimmten Arbeitslastklasse revidiert, um die Zugriffsverzögerungen auf den HMB 218, die HMB-Bereich-Zugangsprioritäten und andere Leistungsparameter unter Verwendung der neuesten Beobachtungen für die Arbeitslastklasse als Eingabe für die revidierte Modellierung (bei 708) zu modifizieren. Im Gegensatz dazu muss, wenn die tatsächlich gemessene Leistung in einem vorbestimmten Bereich oder Prozentsatz der zuvor (bei 706) geschätzten Leistung liegt, keine Neuberechnung vorgenommen werden, und das Verfahren zum Erkennen der nächsten Arbeitslastklasse beginnt erneut. Falls erforderlich, kann die Einstellung oder Variation der Zugriffsverzögerungen auf den HMB 218, basierend auf einer erfassten Variation einer erwarteten Latenz, einschließen, dass die Steuerung Zugriffsverzögerungen auf einen oder mehrere der Bereiche im HMB 218 um die gleichen oder unterschiedliche jeweilige Beträge erhöht oder verringert.
  • Zum Beispiel, wie in 8 und 9 veranschaulicht, kann das HMB-Zugriffsmodifikationsmodul 112 einen Teil des Modellaufbauverfahrens verwenden, um HMB-Zugriffsprobleme zu identifizieren und periodisch Zugriffszeiten des NVM-Systems 100 auf den HMB 218 zu ändern, um gewünschte Host-NVM-Systemleistungspegel aufrechtzuerhalten. 6 veranschaulicht eine Offline-Analyse, die durch das HMB-Zugangsmodifikationsmodul 112 durchgeführt werden kann, oder stattdessen bei der Herstellung durchgeführt werden kann. Das HMB-Zugriffsmodifikationsmodul 112 kann Probe-Arbeitslasten anwenden, beispielsweise mehrere vorbestimmte Transaktionen für allgemeine Anwendungen wie E-Mail, Web-Browsing, Textverarbeitung und so weiter, und kann die Host-Speicherzugriffszeiten messen (bei 802). Das HMB-Modifikationsmodul 112 der Steuerung 102 kann dann einen Modellierungsprozess auf die gemessenen Daten anwenden, um für jeden HMB-Bereich (zum Beispiel in der Ausführungsform von 4 die Bereiche FTL-Abbildungen 222, die Firmware-Overlays 224 und die XOR-Tabellen 226 des HMB 218) eine optimale Verteilung des Zugriffs auf den HMB 218 und Zugriffszeiten für die unterschiedlichen Probe-Arbeitslasten (bei 804) zu bestimmen.
  • Der Modellierungsprozess kann das Vorbestimmen verschiedener Arbeitslastklassen umfassen, und das Modell kann ein beliebiges aus einer Anzahl von bekannten Regressionsmodellen sein. Die Arbeitslastklassen, wie z. B. die beiden beispielhaften Arbeitslastklassen Transaktion 1 und Transaktion 2 der 5, werden vom Steuerungsdesigner oder vom Host 212 vorgegeben und in einem Offline-Modus ohne Live-Daten berechnet. Diese Arbeitslastklassen können später durch das HMB-Zugriffsmodifikationsmodul 112 während der Verwendung des NVM-Systems 100 unter Nutzung eines Burst-Erfassungsmechanismus eingestellt werden. Es kann ein beliebiger einer Anzahl von Burst-Erfassungsmechanismen verwendet werden und kann die Steuerung 102 einschließen, die Parameter wie die Host-Schreib-Aktivität in der Form der Menge der empfangenen Daten oder die Anzahl von unterschiedlichen empfangenen Schreibbefehlen innerhalb einer vorbestimmten Zeitdauer misst. Beispiele einiger geeigneter Burst-Erfassungsmechanismen können in der US-Anmeldung 9.569.352 gefunden werden, die hiermit in ihrer Gesamtheit durch Bezugnahme hierin aufgenommen wird.
  • Der Modellierungsprozess kann die Verwendung eines Maschinenlernklassifizierungsalgorithmus umfassen, wie etwa eine Support-Vector-Machine (SVM), eine Gaußsches Mischverteilung, eine Nächste-Nachbarn-Klassifikation, ein k-Means-Clustering und andere bekannte Modellierungsalgorithmen. Der ausgewählte Modellierungsalgorithmus kann auf eine bestimmte Arbeitslastklasse angewendet werden und könnte einer dieser Klassen zugeordnet werden. Jede Klasse bezieht sich auf einen bestimmten Satz/eine bestimmte Reihe von Zugriffszeiten. Die relevanten Merkmale, mit denen der Modellierungsalgorithmus versehen wird, können die gelesene Segmentgröße, Zugriffsfrequenz, Zugriffsart (zufällig/sequentiell) usw. einschließen. Bei einer Klassifizierung in einer der Arbeitslasttypen kann die Steuerung 102 verschiedene Strategien zur Priorisierung unterschiedlicher HMB-Bereichszugriffe und die erwartete Zugriffszeit auf jeden der Bereiche anwenden.
  • Ein Beispiel eines k-Means-Algorithmus ist unten aufgeführt:
    • Bei einem Satz von Beobachtungen (x1, x2, ..., xn), wobei jede Beobachtung ein d-dimensionaler realer Vektor ist (hier ist d die Anzahl der relevanten Merkmale, die behalten werden sollen, und n ist die Anzahl von Zugriffen, die klassifiziert werden soll), zielt k-Means-Clustering auf die Partitionierung der n Beobachtungen in k (≤ n) Sätze S = {S1, S2, ..., Sk} ab (mit k ist hier die Anzahl von unterschiedlichen Arbeitslasten bezeichnet, die identifiziert werden kann), um so die Summe von Quadraten innerhalb des Clusters (within-cluster sum of squares, WCSS) (Summe der Abstandsfunktionen von jedem Punkt in dem Cluster zur K-Mitte) zu minimieren. Mit anderen Worten, sein Ziel ist es, zu ermitteln: arg min s i = 1 k   x S i x μ i 2
      Figure DE112018004251T5_0001
      wobei µi der Mittelwert von Punkten in Si ist. ì
  • Alternative Maschinenlernalgorithmen, die von der Steuerung 102 verwendet werden können, um die Zugriffsverteilung und -zeiten zu modellieren, können einen Regressionstyp-Maschinenlernalgorithmus, wie z. B. General-Linear-Model (GLM), oder Logistisch-Regression umfassen, um die Latenz/den Durchsatz/die Leistung vorherzusagen, die bzw. der mit dem aktuellen Zugriffsszenario in Beziehung steht. Die Entscheidungen, die entsprechend getroffen werden, können auf gegebenen Schwellen oder Vergleichen basieren (z. B. wenn ein aktuelles HMB-Zugriffsszenario von einer gegebenen Latenz abweicht, wird eine Austauschaktion von physischen Stellen an dem HMB initiiert).
  • Unter Verwendung der Rückmeldung von verschiedenen Zugangsbereichen und aufgrund der gegebenen Klassifizierung des Arbeitslasttyps kann das HMB-Zugangsmodifikationsmodul das Verhalten jedes der HMB-Bereiche 222, 224, 226 oder aller Bereiche des Host-RAM 216 durch das Befolgen eines Maschinenlernalgorithmus vom Regressionstyp vorhersagen. Es kann ein beliebiger einer Anzahl von Regressionstypalgorithmen über das HMB-Zugriffsmodifikationsmodul 112 ausgeführt werden. Geeignete Algorithmen des Maschinenlernregressionstyps können das General-Linear-Modell (GLM) oder Logistics-Regression umfassen, um die Latenz/den Durchsatz/die Leistung vorherzusagen, die bzw. der mit dem aktuellen HMB-218-Zugriffsszenario in Beziehung steht.
  • Das GLM-Modell kann eingelernt werden, so dass es für eine Reihe von Zugriffszeiten und Merkmalen wie Zeit seit Burststart, Zeit seit vorherigem Befehl usw. zu der optimalen Zugriffszeit über alle Zugriffsbereiche für jedes Arbeitslastszenario passt. Das Einlernen kann offline stattfinden, zum Beispiel in einem Herstellungs- oder Vorrichtungsinitiierungskontext, wenn keine Host-Befehle anstehen. Gewichtungen, Zugangsbereichsprioritäten oder HMB-Zugriffsverzögerungsinformationen, die mit jedem Zugangsbereich verbunden sind (nach deren maximaler Anzahl) können in der Steuerung 102 gespeichert werden, so dass kein Latenzzeiteinfluss aufgrund dieser Berechnung (bei 806) auftritt.
  • Wie oben mit Bezug auf 7 angemerkt, ist die vorbestimmte Modellierung von Zugriffsprioritäten und HMB-Bereichszugriffsverzögerungen für verschiedene vorbestimmte Klassen von Arbeitslasten hilfreich, um die Speichervorrichtungsverwaltung des HMB-Zugriffs zu starten, aber es kann eine periodische Einstellung der Zugriffsverzögerungs- und Prioritätswerte für jeden HMB-Bereich erforderlich sein. Wie in 9 gezeigt, ermöglicht der Online-Prozess des Schätzens zukünftiger Zugriffszeiten, die für jeden HMB-Bereich basierend auf tatsächlichen Messungen erforderlich sind, im Vergleich zu der Offline-Modellierung von 8, dass das HMB-Zugriffsmodifikationsmodul 112 dynamische Anpassungen an die Zugriffsverzögerungswerte bereitstellt. Im Tandem mit der eigentlichen Verarbeitung der verschiedenen Befehle und Operationen in Host-Arbeitslasten beobachtet das HMB-Modifikationsmodul 112 Merkmalsdaten, wie beispielsweise die Datensegmentgröße in einem Betrieb, die Zugriffsfrequenz des HMB 218 und andere Parameter, und klassifiziert die Arbeitslast als eine der „k“ vorbestimmten Arbeitslastklassen (bei 902, 904), wobei k sich auf die ganze Zahl der Arbeitslastklassen bezieht, die für das NVM-System 100 definiert wurden.
  • Das HMB-Zugangsmodifikationsmodul 112 der Steuerung 102 empfängt die neuesten Merkmalsdaten bezüglich der Latenz einschließlich der letzten die HMB-Bereichmessungen, der Ansprechzeit ab einem Burststart und geschätzte zukünftig zur Erzielung der gewünschten Leistung benötigte Zugriffszeiten/Verzögerungen. Bei einem hohen Pegel kann diese gewünschte Leistung als die minimale Umlaufzeit für eine festgelegte Befehlssequenz, die hauptsächlich synchron ist (d. h. für eine niedrige Befehlswarteschlangentiefe), oder der höchste Durchsatz für eine Befehlssequenz, die hauptsächlich asynchron ist (d. h. für eine hohe Gesamtwarteschlangentiefe) definiert sein (bei 906). Somit sind diejenigen HMB-Zugriffszeiten, die die gewünschte Leistung wie oben definiert erreichen oder ihr am nächsten kommen, die HMB-Zugriffszeit für einen gegebenen HMB-Bereich für eine bestimmte Arbeitslast. Unter Verwendung der gleichen Modellierungstechnik der Offline-Analyse von 8 und dieser letzten empfangenen Eingabe schätzt das HMB-Modifikationsmodul 112 zukünftige Zugriffs-/Verzögerungszeiten (bei 908). Wenn es Unterschiede oder in einigen Implementierungen Unterschiede über einem vorbestimmten Schwellenwert zwischen der zuletzt bestimmten Zugangs-/Verzögerungszeit und den neu geschätzten Zahlen gibt, wird ein revidierter Satz von HMB-Zugriffszeit- und Prioritätsdaten in dem NVM-System 100 zur Verwendung in dem nächsten Satz von Operationen in der assoziierten Arbeitslastklasse gespeichert (bei 910).
  • Das HMB-Zugriffsmodifikationsmodul 112 kann dann den revidierten Satz von HMB-Zugriffs- und Prioritätsdaten verwenden, um unterschiedliche Zugriffsverzögerungen auf verschiedene Bereiche des HMB 218 anzuwenden, wodurch Konfliktprobleme reduziert werden, um die Umlaufzeit zu verringern und den Befehlsdurchsatz von Hostbefehlen zu erhöhen. Zum Beispiel kann das HMB-Zugriffsmodifikationsmodul 112 eine erste Verzögerungsperiode in allen durch die Steuerung 102 vorgenommenen Zugriffen auf einen ersten Speicherbereich des HMB 218 hinzufügen und eine zweite, andere Verzögerungsperiode in allen durch die Steuerung 102 vorgenommenen Zugriffen auf einen zweiten Speicherbereich des HMB 218 hinzufügen.
  • In der vorliegenden Anmeldung können Halbleiterspeichervorrichtungen wie die in der vorliegenden Anmeldung beschriebenen flüchtige Speichervorrichtungen wie Dynamic Random Access Memory-Vorrichtungen („DRAM“) oder Static Random Access Memory-Vorrichtungen („SRAM“), nichtflüchtige Speichervorrichtungen, wie Resistive Random Access Memory („ReRAM“), Electrically Erasable Programmable Read Only Memory („EEPROM“), Flash-Speicher (die auch als Untergruppe eines EEPROM betrachtet werden können), Ferroelectric Random Access Memory („FRAM“) und Magnetoresistive Random Access Memory („MRAM“) und andere Halbleiterelemente, die Informationen speichern können, einschließen. Jeder Typ von Speichervorrichtung kann unterschiedliche Konfigurationen aufweisen. Zum Beispiel können Flash-Speichervorrichtungen in einer NAND- oder NOR-Konfiguration eingerichtet sein.
  • Die Speichervorrichtungen können aus passiven und/oder aktiven Elementen in beliebigen Kombinationen gebildet sein. Als ein nicht einschränkendes Beispiel schließen passive Halbleiterspeicherelemente ReRAM-Vorrichtungselemente ein, die in einigen Ausführungsformen ein Speicherelement mit Widerstandsumschaltung, wie eine Anti-Sicherung, Phasenwechselmaterial usw., und optional ein Lenkelement, wie eine Diode usw., einschließen. Weiterhin schließen als nicht einschränkendes Beispiel aktive Halbleiterspeicherelemente EEPROM- und Flash-Speicher-Vorrichtungselemente ein, die in einigen Ausführungsformen Elemente einschließen, die einen Ladungsspeicherbereich, wie ein Floating-Gate, leitende Nanopartikel oder ein dielektrisches Material zur Ladungsspeicherung, einschließen.
  • Mehrere Speicherelemente können derart eingerichtet sein, dass sie in Reihe geschaltet sind, oder derart, dass jedes Element einzeln zugänglich ist. Als nicht einschränkendes Beispiel enthalten Flash-Speichervorrichtungen in einer NAND-Konfiguration (NAND-Speicher) üblicherweise Speicherelemente, die in Reihe geschaltet sind. 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 Halbleiterspeicherelemente, die in und/oder über einem Substrat angeordnet sind, können in zwei oder drei Dimensionen angeordnet sein, wie einer zweidimensionalen Speicherstruktur oder einer dreidimensionalen Speicherstruktur.
  • In einer zweidimensionalen Speicherstruktur sind die Halbleiterspeicherelemente in einer einzelnen Ebene oder einer einzelnen Speichervorrichtungsebene angeordnet. Üblicherweise sind Speicherelemente in einer zweidimensionalen Speicherstruktur in einer Ebene (z. B. in einer Ebene in x-z-Richtung) angeordnet, die sich im Wesentlichen parallel zu einer Hauptoberflä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.
  • Die Speicherelemente können auf der einzelnen Speichervorrichtungsebene in einem geordneten Array angeordnet sein, wie in einer Vielzahl von Zeilen und/oder Spalten. Jedoch können die Speicherelemente in nicht regelmäßigen oder nicht orthogonalen Konfigurationen angeordnet sein. Die Speicherelemente können jeweils zwei oder mehr Elektroden oder Kontaktleitungen, wie Bitleitungen und Wortleitungen, aufweisen.
  • Ein dreidimensionales Speicherarray ist derart 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 y-Richtung im Wesentlichen senkrecht ist und die x- und z-Richtungen im Wesentlichen parallel zu der Hauptoberfläche des Substrats verlaufen).
  • 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 zu der Hauptoberfläche des Substrats erstrecken, d. h. in y-Richtung) angeordnet sein, wobei jede Spalte mehrere Speicherelemente in jeder Spalte aufweist. Die Spalten können in einer zweidimensionalen Konfiguration angeordnet sein, z. B. in einer x-z-Ebene, was in einer dreidimensionalen Anordnung von Speicherelementen mit Elementen auf mehreren vertikal gestapelten Speicherebenen resultiert. Andere Konfigurationen von Speicherelementen in drei Dimensionen können auch ein dreidimensionales Speicherarray bilden.
  • Als nicht einschränkendes Beispiel können in einem dreidimensionalen NAND-Speicherarray die Speicherelemente miteinander gekoppelt sein, um eine NAND-Kette innerhalb einer einzelnen horizontalen (z. B. x-y-) Speichervorrichtungsebenen zu bilden. Alternativ können die Speicherelemente miteinander gekoppelt sein, um eine vertikale NAND-Kette zu bilden, die über mehrere horizontale Speichervorrichtungsebenen verläuft. Andere dreidimensionale Konfigurationen können in Betracht gezogen werden, wobei einige NAND-Ketten Speicherelemente in einer einzelnen Speicherebene enthalten, während andere Ketten Speicherelemente enthalten, die sich über mehrere Speicherebenen erstrecken. Dreidimensionale Speicherarrays können auch als eine NOR-Konfiguration und als eine ReRAM-Konfiguration ausgelegt sein.
  • Üblicherweise werden in einem monolithischen dreidimensionalen Speicherarray 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.
  • Auch 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. Weiterhin können mehrere zweidimensionale Speicherarrays oder dreidimensionale Speicherarrays (monolithisch oder nicht monolithisch) auf separaten Chips gebildet und dann zusammengepackt werden, um eine gestapelte Chip-Speichervorrichtung zu bilden.
  • 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 Steuerung für Schreib-/Lesevorgänge des Speichers auf einem separaten Steuerungschip und/oder auf demselben Substrat wie die Speicherelemente angeordnet sein.
  • Ein Fachmann wird erkennen, dass diese Erfindung nicht auf die beschriebenen zweidimensionalen und dreidimensionalen beispielhaften Strukturen beschränkt ist, sondern alle relevanten Speicherstrukturen in dem Geist und Umfang der Erfindung abdeckt, wie es hier beschrieben und von einem Fachmann verstanden wird.
  • Es wurden Verfahren und Systeme für NVM-Systeme offenbart, die einen HMB-Speicher auf einem Host verwenden, um den Zugriffszeitpunkt durch das NVM-System an den HMB anzupassen, um ein übermäßig auftreffendes Ansprechverhalten des Hosts aufgrund von Konflikten mit dem Zugriff auf den Host-RAM durch den Host und das NVM-System zu vermeiden. Beschrieben wird ein System und Verfahren zum Reduzieren von Leistungseinbußen eines Hosts, der einen Host-Speicherpuffer (HMB) zur Verwendung durch ein HVM-System liefert. Das System und Verfahren kann adaptive Algorithmen verwenden, um selektiv die ratenspezifischen PCIe-Zugriffe durch das NVM-System basierend auf impliziter oder expliziter Rückmeldung von dem Host zu begrenzen. Das Verfahren kann das Modellieren des gewünschten HMB-Zugriffszeitpunkts durch das NVM-System in einer anfänglichen Offline-Analyse für mehrere Arbeitslastklassen, das periodische Aktualisieren der in der Speichervorrichtung gespeicherten Zugriffszeitpunktdaten basierend auf der tatsächlichen Verwendung und das Verwenden der aktuellen HMB-Zugriffszeitpunktinformationen zum Modifizieren des Zugriffs der Speichervorrichtung auf den HMB auf dem Host einschließen. Konflikte an einem Host-Datenbus, wie zum Beispiel dem PCIe-Datenbusbeispiel wie oben angegeben, können die Leistung des Systems so reduzieren, dass die Begrenzung des Durchsatzes in bestimmten Schritten einer Transaktion zur Reduzierung solcher Konflikte die Leistung verbessern kann.
  • Die anfängliche Offline-Analyse und die periodischen Aktualisierungen können durch die jeweilige Verwendung von simulierten (z. B. simulierten HMB-Zugriffszeiten für verschiedene HMB-Bereiche) und tatsächlichen Host-Latenzdaten (z. B. gemessenen HMB-Zugriffszeiten, die für diesen Host in anderen HMB-Bereiche gesehen wurden) in einem Regressionsalgorithmus und durch anschließendes Speichern der in der Analyse bestimmten Zugriffszeitpunktinformationenzur Verwendung bei unterschiedliche Arbeitslasten erreicht werden. Das System kann eine nichtflüchtige Speichersteuerung einschließen, die unterschiedliche HMB-Zugriffszeiten für unterschiedliche Host-Arbeitslasten basierend auf individuellen HMB-Bereichen quantifiziert.
  • Es ist beabsichtigt, dass die vorstehende detaillierte Beschreibung als eine Veranschaulichung ausgewählter Formen, die die Erfindung annehmen kann, und nicht als eine Definition der Erfindung verstanden wird. Es sind nur die folgenden Ansprüche, einschließlich aller Äquivalente, die den Umfang der beanspruchten Erfindung definieren sollen. Schließlich sei darauf hingewiesen, dass jeder Aspekt jeder der hier beschriebenen bevorzugten Ausführungsformen allein oder in Kombination miteinander verwendet werden kann.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • US 9569352 [0040]

Claims (20)

  1. Nichtflüchtiges Speichersystem, aufweisend: einen nichtflüchtigen Speicher; und eine Steuerung in Kommunikation mit dem nichtflüchtigen Speicher, wobei die Steuerung eingerichtet ist, um: Daten von einem Host-Speicherpuffer auf einem Host in Kommunikation mit dem nichtflüchtigen Speichersystem zu speichern und abzurufen; eine erste Verzögerungsperiode zu allen Zugriffen, die von der Steuerung auf einen ersten Speicherbereich des Host-Speicherpuffers vorgenommen werden, hinzuzufügen; und eine zweite Verzögerungsperiode zu allen Zugriffen, die von der Steuerung auf einen zweiten Speicherbereich des Host-Speicherpuffers vorgenommen werden, hinzuzufügen, wobei: die erste Verzögerungsperiode sich von der zweiten Verzögerungsperiode unterscheidet; und der erste Speicherbereich sich von dem zweiten Speicherbereich unterscheidet.
  2. Nichtflüchtiges Speichersystem gemäß Anspruch 1, wobei: der Host-Speicherpuffer einen flüchtigen Speicher aufweist; und der erste Speicherbereich einen ersten Datentyp enthält.
  3. Nichtflüchtiges Speichersystem gemäß Anspruch 2, wobei: der erste Datentyp Logisch-zu-physisch-Abbildungstabellendaten aufweist; und der zweite Speicherbereich Firmware-Overlay-Daten für das nichtflüchtige Speichersystem aufweist.
  4. Nichtflüchtiges Speichersystem gemäß Anspruch 1, wobei die Steuerung ferner dazu eingerichtet ist, die erste Verzögerungszeit in Reaktion auf den Empfang von Latenzmessungen von dem Host für von der Steuerung an den Host-Speicherpuffer gesendete Befehle dynamisch zu ändern.
  5. Nichtflüchtiges Speichersystem gemäß Anspruch 1, wobei die Steuerung ferner dazu eingerichtet ist, die Verzögerungszeiten für den Steuerungszugriff auf jeden einer Vielzahl von Speicherbereichen des Host-Speicherpuffers in Reaktion auf die vom Host empfangenen Latenzmessungen periodisch anzupassen.
  6. Nichtflüchtiges Speichersystem gemäß Anspruch 1, wobei die Steuerung weiterhin eingerichtet ist, um: eine Arbeitslastklasse eines Befehlssatzes in einer Befehlswarteschlange auf dem Host zu identifizieren; und die erste Verzögerungsperiode und die zweite Verzögerungsperiode basierend auf der identifizierten Arbeitslastklasse abzurufen.
  7. Nichtflüchtiges Speichersystem gemäß Anspruch 6, wobei der Befehlssatz Befehle zum Lesen, Schreiben oder Trimmen von Daten in dem nichtflüchtigen Speicher aufweist.
  8. Nichtflüchtiges Speichersystem gemäß Anspruch 7, wobei ein Befehl in dem Befehlssatz mindestens eine Operation umfasst, die einen Zugriff auf den ersten oder zweiten Speicherbereich des Host-Speicherpuffers durch die Steuerung einschließt.
  9. Nichtflüchtiges Speichersystem gemäß Anspruch 6, wobei die Steuerung weiterhin eingerichtet ist, um, nach der Ausführung des Befehlssatzes: eine Latenz des ausgeführten Befehlssatzes mit einer erwarteten Latenz für den Befehlssatz zu vergleichen; und in Reaktion darauf, dass sich die Latenz von der erwarteten Latenz unterscheidet, die erste Verzögerungszeit oder die zweite Verzögerungszeit auf der Grundlage einer Variation der Latenz von der erwarteten Latenz anzupassen.
  10. Nichtflüchtiges Speichersystem gemäß Anspruch 1, wobei der nichtflüchtige Speicher ein Substrat aufweist, das mit einer dreidimensionalen Speicherstruktur ausgebildet ist.
  11. Verfahren in einem nichtflüchtigen Speichersystem zum Verarbeiten von Speicherzugriffen durch das nichtflüchtige System auf einen Host-Speicherpuffer auf einem Host, wobei das Verfahren umfasst: Bestimmen eines anfänglichen Zugriffszeitpunkts des Host-Speicherpuffers in einem Offline-Modellierungsprozess; Speichern des ersten Host-Speicherpuffer-Zugriffszeitpunkts in dem nichtflüchtigen Speicher des Systems; Identifizieren einer Arbeitslastklasse für Befehle, die von einer Steuerung des nichtflüchtigen Speichersystems auszuführen sind; Zugreifen auf den Host-Speicherpuffer gemäß dem anfänglichen Zugriffszeitpunkt des Host-Speicherpuffers und auf der Basis der identifizierten Arbeitslastklasse; und Modifizieren des ersten Host-Speicherpuffer-Zugriffszeitpunkts in Reaktion auf den Empfang von Host-Ansprechlatenzdaten vom Host.
  12. Verfahren gemäß Anspruch 11, wobei der Offline-Modellierungsprozess umfasst, dass die Steuerung einen Regressionsalgorithmus auf simulierte Host-Speicherpuffer-Zugriffszeitpunkte für unterschiedliche Arbeitslastklassen anwendet, um einen gewünschten Speicherpuffer-Zugriffszeitpunkt des Host-Speichers abzuschätzen.
  13. Verfahren gemäß Anspruch 12, wobei das Modifizieren des Anfangszugriffszeitpunkts des Host-Speicherpuffers umfasst, dass die Steuerung den Regressionsalgorithmus auf empfangene Host-Ansprechlatenzdaten anwendet.
  14. Verfahren gemäß Anspruch 11, wobei das Modifizieren des ersten Host-Speicherpuffer-Zugriffszeitpunkts ferner das Modifizieren der ersten Host-Speicherpuffer-Zugriffszeitpunkts unterschiedlich für jeden Bereich des Host-Speicherpuffers umfasst.
  15. Verfahren gemäß Anspruch 11, wobei das Modifizieren des ersten Host-Speicherpuffer-Zugriffszeitpunkts ferner das Modifizieren der ersten Host-Speicherpuffer-Zugriffszeitpunkts unterschiedlich für jede der Vielzahl von Arbeitslastklassen umfasst.
  16. Nichtflüchtiges Speichersystem, aufweisend: einen nichtflüchtigen Speicher; und Mittel in Kommunikation mit dem nichtflüchtigen Speicher zum: Bestimmen eines Anfangszugriffszeitpunkts des Host-Speicherpuffers auf einen Host-Speicherpuffer auf einem Host in einem Offline-Modellierungsprozess; Speichern des ersten Host-Speicherpuffer-Zugriffszeitpunkts in dem nichtflüchtigen Speicher des Systems; Identifizieren einer Arbeitslastklasse für Befehle, die von einer Steuerung des nichtflüchtigen Speichersystems auszuführen sind; Zugreifen auf den Host-Speicherpuffer gemäß dem anfänglichen Zugriffszeitpunkt des Host-Speicherpuffers und auf der Basis der identifizierten Arbeitslastklasse; und Modifizieren des ersten Host-Speicherpuffer-Zugriffszeitpunkts in Reaktion auf den Empfang von Host-Ansprechlatenzdaten vom Host.
  17. Nichtflüchtiges Speichersystem gemäß Anspruch 16, wobei das Mittel zum Bestimmen des Anfangszugriffszeitpunkts des Host-Speicherpuffers eine Steuerung umfasst, die dazu eingerichtet ist, einen Regressionsalgorithmus auf simulierte Zugriffszeiten des Host-Speicherpuffers für unterschiedliche Arbeitslastklassen anzuwenden.
  18. Nichtflüchtiges Speichersystem gemäß Anspruch 16, wobei das Mittel zum Modifizieren des Anfangszugriffszeitpunkts des Host-Speicherpuffers eine Steuerung umfasst, die dazu eingerichtet ist, einen Regressionsalgorithmus auf empfangene Host-Ansprechlatenzdaten anzuwenden.
  19. Nichtflüchtiges Speichersystem gemäß Anspruch 18, wobei das Mittel zum Modifizieren des Anfangszugriffszeitpunkts des Host-Speicherpuffers ferner die Steuerung umfasst, die dazu eingerichtet ist, den Anfangszugriffszeitpunkts des Host-Speicherpuffers für jeden Bereich des Host-Speicherpuffers unterschiedlich zu modifizieren.
  20. Nichtflüchtiges Speichersystem gemäß Anspruch 18, wobei der Host-Speicherpuffer einen Teil eines flüchtigen Speichers auf dem Host unter der Kontrolle der Steuerung des nichtflüchtigen Speichersystems umfasst.
DE112018004251.0T 2017-11-09 2018-09-24 Adaptive vorrichtungsdienstqualität durch host-speicherpufferbereich Pending DE112018004251T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/808,209 2017-11-09
US15/808,209 US10712949B2 (en) 2017-11-09 2017-11-09 Adaptive device quality of service by host memory buffer range
PCT/US2018/052439 WO2019094117A1 (en) 2017-11-09 2018-09-24 Adaptive device quality of service by host memory buffer range

Publications (1)

Publication Number Publication Date
DE112018004251T5 true DE112018004251T5 (de) 2020-05-07

Family

ID=66328524

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112018004251.0T Pending DE112018004251T5 (de) 2017-11-09 2018-09-24 Adaptive vorrichtungsdienstqualität durch host-speicherpufferbereich

Country Status (4)

Country Link
US (1) US10712949B2 (de)
CN (1) CN111149096B (de)
DE (1) DE112018004251T5 (de)
WO (1) WO2019094117A1 (de)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI668569B (zh) * 2018-03-14 2019-08-11 群聯電子股份有限公司 主機記憶體緩衝區配置方法、記憶體儲存裝置與記憶體控制電路單元
US11966329B2 (en) * 2018-04-12 2024-04-23 Micron Technology, Inc. Address map caching for a memory system
KR20210122287A (ko) * 2019-05-17 2021-10-08 양쯔 메모리 테크놀로지스 씨오., 엘티디. 정적 랜덤 액세스 메모리를 사용하는 3차원 메모리 디바이스의 캐시 프로그램 작동
EP3909075A4 (de) 2019-05-17 2022-09-07 Yangtze Memory Technologies Co., Ltd. Dreidimensionale speichervorrichtung mit statischem direktzugriffsspeicher
KR20200143871A (ko) * 2019-06-17 2020-12-28 삼성전자주식회사 스토리지를 포함하는 전자 장치 및 그의 스토리지 이용 방법
US11372754B2 (en) 2020-06-12 2022-06-28 Western Digital Technologies, Inc. Storage system and method for enabling a software-defined dynamic storage response
US11734018B2 (en) 2020-07-17 2023-08-22 Western Digital Technologies, Inc. Parallel boot execution of memory devices
US20220027294A1 (en) * 2020-07-23 2022-01-27 MemRay Corporation Storage card and storage device
US11579804B2 (en) * 2020-08-06 2023-02-14 Western Digital Technologies, Inc. Device interrupt coalescing with various host behaviors
JP2022146543A (ja) * 2021-03-22 2022-10-05 キオクシア株式会社 半導体記憶装置、メモリシステム、および方法
US11561909B2 (en) 2021-04-28 2023-01-24 Western Digital Technologies, Inc. Bandwidth allocation for storage system commands in peer-to-peer environment
US11625189B2 (en) 2021-06-28 2023-04-11 Western Digital Technologies, Inc. Systems and methods for fragmentation management in host buffers
CN113590506A (zh) * 2021-08-02 2021-11-02 联芸科技(杭州)有限公司 Hmb的表项管理方法及固态硬盘的控制***
US11809742B2 (en) 2021-09-20 2023-11-07 Western Digital Technologies, Inc. Recovery from HMB loss
US11893275B2 (en) 2021-09-20 2024-02-06 Western Digital Technologies, Inc. DRAM-less SSD with recovery from HMB loss
CN113867641B (zh) * 2021-09-29 2023-06-02 杭州海康存储科技有限公司 主机内存缓冲管理方法、装置、以及固态硬盘
US11816337B2 (en) * 2021-12-06 2023-11-14 Western Digital Technologies, Inc. Enterprise host memory buffer
US11768606B2 (en) 2021-12-27 2023-09-26 Western Digital Technologies, Inc. Maximizing performance through traffic balancing
CN114741336B (zh) * 2022-06-09 2022-11-25 荣耀终端有限公司 内存中Host侧缓存区调整方法、电子设备及芯片***
US20240111646A1 (en) * 2022-09-30 2024-04-04 Western Digital Technologies, Inc. Hmb multi-segment optimal selection

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9569352B2 (en) 2013-03-14 2017-02-14 Sandisk Technologies Llc Storage module and method for regulating garbage collection operations based on write activity of a host

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3700335B2 (ja) * 1997-07-31 2005-09-28 ソニー株式会社 映像表示装置および映像表示方法
JP2000148656A (ja) * 1998-11-09 2000-05-30 Mitsubishi Electric Corp メモリシステム
TWI416334B (zh) 2005-07-11 2013-11-21 Nvidia Corp 在匯流排上以封包形式傳送來自複數個客戶的資料傳送請求之方法、匯流排介面裝置及處理器
US7647467B1 (en) 2006-05-25 2010-01-12 Nvidia Corporation Tuning DRAM I/O parameters on the fly
US8386650B2 (en) 2009-12-16 2013-02-26 Intel Corporation Method to improve a solid state disk performance by using a programmable bus arbiter
US20110295587A1 (en) * 2010-06-01 2011-12-01 Eeckhout Lieven Methods and systems for simulating a processor
US9741436B2 (en) 2010-07-09 2017-08-22 Seagate Technology Llc Dynamically controlling an operation execution time for a storage device
US9196347B2 (en) * 2013-03-14 2015-11-24 International Business Machines Corporation DRAM controller for variable refresh operation timing
US9244631B2 (en) * 2013-12-06 2016-01-26 Sandisk Technologies Inc. Lower page only host burst writes
KR102211126B1 (ko) 2014-04-17 2021-02-02 삼성전자주식회사 동작 성능을 조절하는 메모리 시스템 및 메모리 시스템의 동작방법
TWI502345B (zh) * 2014-05-12 2015-10-01 Via Tech Inc 快閃記憶體控制晶片以及資料儲存裝置以及快閃記憶體控制方法
US9563382B2 (en) 2014-06-05 2017-02-07 Sandisk Technologies Llc Methods, systems, and computer readable media for providing flexible host memory buffer
US10268584B2 (en) * 2014-08-20 2019-04-23 Sandisk Technologies Llc Adaptive host memory buffer (HMB) caching using unassisted hinting
KR20160118836A (ko) * 2015-04-03 2016-10-12 에스케이하이닉스 주식회사 호스트 커맨드 큐를 포함하는 메모리 컨트롤러 및 그것의 동작 방법
US9959146B2 (en) * 2015-10-20 2018-05-01 Intel Corporation Computing resources workload scheduling
US10140036B2 (en) * 2015-10-29 2018-11-27 Sandisk Technologies Llc Multi-processor non-volatile memory system having a lockless flow data path
US10102135B2 (en) 2016-04-06 2018-10-16 Dell Products, Lp Dynamically-adjusted host memory buffer

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9569352B2 (en) 2013-03-14 2017-02-14 Sandisk Technologies Llc Storage module and method for regulating garbage collection operations based on write activity of a host

Also Published As

Publication number Publication date
US20190138220A1 (en) 2019-05-09
US10712949B2 (en) 2020-07-14
WO2019094117A1 (en) 2019-05-16
CN111149096A (zh) 2020-05-12
CN111149096B (zh) 2023-08-01

Similar Documents

Publication Publication Date Title
DE112018004251T5 (de) Adaptive vorrichtungsdienstqualität durch host-speicherpufferbereich
DE102017112013B4 (de) Adaptive Temperatur- und Speicherparameterdrosselung
DE102017128939A1 (de) System und Verfahren zum dynamischen und adaptiven Zusammenführen von Interrupts
DE112020002526B4 (de) Blockmodusumschaltung in datenspeichersystem
DE112018000228T5 (de) System und Verfahren zur Verarbeitung und Arbitrierung von Übermittlungs- und Beendigungswarteschlangen
DE112018000180T5 (de) System und verfahren zum adaptiven senden frühzeitiger beendigung unter verwendung eines steuerungsspeicherpuffers
DE112018000181T5 (de) System und verfahren für die schnelle ausführung von kapselinternen befehlen
DE112018000834T5 (de) System und verfahren zur adaptiven befehlsabruf-aggregation
DE112018000233T5 (de) System und Verfahren zur Verarbeitung und Arbitrierung von Übermittlungs- und Beendigungswarteschlangen
DE102018123891A1 (de) Handhabung nichtabgestimmter Schreibvorgänge
DE102019116213A1 (de) Qualität von für Enterprise-Halbleiterlaufwerke optimierten dienstbasierten Arbitrierungen
DE112017000206T5 (de) Kompensation von Temperaturschwankungen eines Arbeitsspeichers
DE112017005637T5 (de) Verfahren und System zur Schreibverstärkungsanalyse
DE112018004256T5 (de) Redundanzcodierstreifen basierend auf internen adressen von speichervorrichtungen
DE112019005369T5 (de) Verfahren zum umschalten zwischen herkömmlicher ssd und open-channel-ssd ohne datenverlust
DE102018105943A1 (de) Kontextbewusste dynamische Befehlsplanung für ein Datenspeichersystem
DE102018123880A1 (de) Adaptive Verwaltung von Zwischenspeichern
DE112017005887T5 (de) Speichersystem und Verfahren zur thermischen Drosselung über eine Befehlsarbitrierung
DE112015005102T5 (de) Systeme und verfahren zum erzeugen von einem hostbefehl zugeordneten hinweisinformationen
DE102008033518B4 (de) Datenverarbeitungsverfahren für eine Solid-State-Disk-Steuereinheit, Solid-State-Disk-Steuereinheit und Datenspeicherelement
DE102017128941A1 (de) Speichersystem und Verfahren zur prädiktiven Blockzuweisung zur effizienten Speicherbereinigung
DE112019000161T5 (de) Speicher-cache-verwaltung
DE112017005955T5 (de) Speichersystem und verfahren zur schlanken speicherzuweisung
DE102011086227A1 (de) Adress mapping method, data storage device and user device
DE112016004148T5 (de) Systeme und Verfahren zur Befehlsautorisierung

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06F0013160000

Ipc: G06F0013200000

R082 Change of representative

Representative=s name: MURGITROYD GERMANY PATENTANWALTSGESELLSCHAFT M, DE

R081 Change of applicant/patentee

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

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