DE102013020269A1 - Umordnen des Zurückschickens für einen Host-Lesebefehl basierend auf der Zeitschätzung des Abschlusses eines Flash-Lesebefehls - Google Patents

Umordnen des Zurückschickens für einen Host-Lesebefehl basierend auf der Zeitschätzung des Abschlusses eines Flash-Lesebefehls Download PDF

Info

Publication number
DE102013020269A1
DE102013020269A1 DE102013020269.8A DE102013020269A DE102013020269A1 DE 102013020269 A1 DE102013020269 A1 DE 102013020269A1 DE 102013020269 A DE102013020269 A DE 102013020269A DE 102013020269 A1 DE102013020269 A1 DE 102013020269A1
Authority
DE
Germany
Prior art keywords
host
read command
cost
read
nonvolatile memory
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
DE102013020269.8A
Other languages
English (en)
Inventor
Joao Alcantara
Zoltan Szubbocsev
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
HGST Netherlands BV
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 HGST Netherlands BV filed Critical HGST Netherlands BV
Publication of DE102013020269A1 publication Critical patent/DE102013020269A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0605Improving or facilitating administration, e.g. storage management by facilitating the interaction with a user or administrator
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
    • G06F13/1626Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by reordering requests
    • 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
    • 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/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/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • 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
    • G06F2206/00Indexing scheme related to dedicated interfaces for computers
    • G06F2206/10Indexing scheme related to storage interfaces for computers, indexing schema related to group G06F3/06
    • G06F2206/1014One time programmable [OTP] memory, e.g. PROM, WORM
    • 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/7205Cleaning, compaction, garbage collection, erase control

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)
  • Debugging And Monitoring (AREA)
  • Memory System (AREA)
  • Read Only Memory (AREA)

Abstract

Beim Managen der Rücksendungen von Daten an einen Host in Ansprechen auf Lesebefehle managt eine Operationsüberwachungseinrichtung eines Festkörperlaufwerks (SSD) Zähler, die verwendet werden, um Metriken zu halten, die den geschätzten Zeitraum charakterisieren, um eine Leseoperation in einem entsprechenden Flash-Chip abzuschließen. Ein Zeitgeber erzeugt ein periodisches Ereignis, das die Zähler mit der Zeit dekrementiert. Der in jedem Zähler gespeicherte Wert wird für die dem entsprechenden Chip zugesandten Flash-Operationen erzeugt und basiert im Allgemeinen auf der Betriebshistorie und dem physikalischen Ort der Operation. Wann immer ein Lesebefehl für die Zusendung an einen speziellen Chip geplant wird, wird die Zeitschätzung für diese spezielle Leseoperation wiedergewonnen und wird basierend auf diesen Informationen die optimale Reihenfolge, in der die Daten an den Host zurückzuschicken sind, bestimmt. Diese Reihenfolge wird verwendet, um die Datenübertragungen an den Host zu planen und zu programmieren, so dass eine minimale Anzahl von Lesebefehlen durch andere Lesebefehle blockiert wird.

Description

  • GEBIET DER ERFINDUNG
  • Die Ausführungsformen der Erfindung betreffen einen Schätzmechanismus zum Festlegen der Reihenfolge, in der die Daten von einem Festkörperlaufwerk (SSD) an einen Host zurückzuschicken sind.
  • HINTERGRUND
  • Ein Festkörperlaufwerk (SSD) ist eine Datenspeichervorrichtung, die Anordnungen integrierter Schaltungen als Speichereinheiten verwendet, um Daten dauerhaft zu speichern. Die SSD-Technik verwendet elektronische Schnittstellen, die mit herkömmlichen Festplattenlaufwerken (HDDs) mit Block-Eingabe/Ausgabe (Block-E/A) kompatibel sind. Die SSDs verwenden keine beweglichen mechanischen Komponenten, was sie von herkömmlichen HDDs unterscheidet, die die Daten unter Verwendung beweglicher Lese-Schreib-Köpfe auf rotierenden Magnetplatten speichern.
  • Gegenwärtig verwenden die meisten SSD einen NAND-basierten Flash-Speicher, der eine Form eines nichtflüchtigen Speichers ist, der die Daten beim Fehlen von Leistung hält und der elektrisch gelöscht und neu programmiert werden kann (da der Flash-Speicher aus dem EEPROM entwickelt wurde). Ferner kombinieren Hybridlaufwerke die Merkmale sowohl der SSDs als auch der HDDs in derselben Einheit, die typischerweise ein Festplattenlaufwerk und einen SSD-Cache enthält, um die Leistung für Daten, auf die häufig zugegriffen wird, zu verbessern. Der Flash-Speicher speichert die Informationen in einer Anordnung aus Speicherzellen, die aus Floating-Gate-Transistoren hergestellt sind.
  • Die SSD-Implementierungen von Unternehmen, z. B. in Servern, besitzen typischerweise andere und höhere Leistungsstandards als Desktop- und Laptop-HDD- und SSD-Laufwerke. Das heißt, die SSDs der Unternehmen müssen typischerweise eine relativ hohe E/A-Leistung bereitstellen. Deshalb ist die optimale reine Lese- und gemischte Lese-/Schreibleistung ein Ziel vieler SSD-Entwicklungsingenieure.
  • ZUSAMMENFASSUNG DER AUSFÜHRUNGSFORMEN DER ERFINDUNG
  • Die Ausführungsformen der Erfindung sind auf das Verwalten von Datenrücksendungen an einen Host in Erwiderung auf Lesebefehle für die Verwendung in einer Festkörperlaufwerks-Speichervorrichtung (SSD-Speichervorrichtung) gerichtet. Die optimale reine Lese- und gemischte Lese-/Schreibleistung wird durch die Reihenfolge beeinflusst, in der die Daten an den Host zurückgeschickt werden, wobei die Reihenfolge, in der die Daten an den Host zurückgeschickt werden, nicht notwendigerweise der Reihenfolge entspricht, in der der Host die Lesebefehle sendet.
  • Gemäß einer Ausführungsform ist eine Operationsüberwachungseinrichtung eines Festkörperlaufwerks (SSD) dazu konfiguriert, Zähler zu managen, die verwendet werden, um die Metriken zu managen, die den geschätzten Zeitraum charakterisieren, um eine Leseoperation in einem entsprechenden Flash-Chip abzuschließen, d. h. die Betriebskosten. Die Operationsüberwachungseinrichtung startet einen Zeitgeber, der ein periodisches Ereignis erzeugt, das die Zähler dekrementiert. Der in jedem Zähler gespeicherte Wert wird für die dem entsprechenden Chip zugesandten Flash-Operationen erzeugt und basiert im Allgemeinen auf der Historie und dem physikalischen Ort der Operation. Wann immer ein Lesebefehl für die Zusendung zu einem speziellen Chip geplant wird, kann z. B. die Controller-Firmware die Zeitschätzung für diese spezielle Flash-Leseoperation wiedergewinnen. Basierend auf diesen Informationen ist die optimale Reihenfolge, in der die Daten an den Host zurückzuschicken sind, bestimmbar. Diese Reihenfolge wird verwendet, um die Datenübertragungen zu dem Host zu planen und zu programmieren, wobei eine optimale Reihenfolge einen Ablauf beschreibt, bei dem eine minimale Anzahl von Lesebefehlen durch andere Lesebefehle blockiert wird, wenn die Blockiererbefehle ihre entsprechenden Daten nicht verfügbar haben, damit sie an den Host zurückgeschickt werden.
  • Gemäß einer Ausführungsform eines Verfahrens zum Verwalten der Rücksendungen an einen Host in Erwiderng auf die durch eine SSD-Vorrichtung empfangenen Lesebefehle wird ein Datenbefehl von einem Host empfangen und werden die Betriebskosten für jede Operation, die einem entsprechenden nichtflüchtigen Speicherchip zugeschickt wird, erzeugt. Die jeweiligen Betriebskosten werden basierend auf einem Zeitgeber dekrementiert, der ein periodisches Ereignis (z. B. ein Taktticken) erzeugt. Folglich nehmen die in dem Zähler dargestellten Betriebskosten mit der Zeit ab, genauso wie die Zeit zum Lesen des entsprechenden Chips mit der Zeit abnimmt. Die Gesamtkosten des Lesebefehls, der von dem Host empfangen worden ist, werden basierend auf den aktuellen Betriebskosten für jede Operation, die jedem jeweiligen nichtflüchtigen Speicherchip zugesandt wird, der dem Lesebefehl zugeordnet ist, berechnet. Basierend auf den Gesamtkosten des Lesebefehls wird die Reihenfolge, in der die angeforderten Daten zu dem Host zurückzuschicken sind, bezüglich der anderen von dem Host empfangenen Lesebefehle bestimmt.
  • Es ist nicht beabsichtigt, dass die in dem Abschnitt der Zusammenfassung der Ausführungsformen der Erfindung erörterten Ausführungsformen alle hier erörterten Ausführungsformen vorschlagen, beschreiben oder lehren. Folglich können die Ausführungsformen der Erfindung zusätzliche oder andere Merkmale als jene, die in diesem Abschnitt erörtert sind, enthalten.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • Die Ausführungsformen der Erfindung sind in den Figuren der beigefügten Zeichnungen beispielhaft und nicht einschränkend veranschaulicht, wobei sich in den Figuren der beigefügten Zeichnungen gleiche Bezugszeichen auf ähnliche Elemente beziehen und worin:
  • 1 ein Blockschaltplan ist, der eine Beispiel-Betriebsumgebung veranschaulicht, in der die Ausführungsformen der Erfindung implementiert sein können;
  • 2 ein Blockschaltplan ist, der einen Abschnitt einer Beispiel-Betriebsumgebung veranschaulicht, die sich auf die Speicheroperations-Überwachungseinrichtung konzentriert, in der die Ausführungsformen der Erfindung implementiert sein können;
  • 3 ein Blockschaltplan ist, der eine Speicheroperations-Überwachungseinrichtung gemäß einer Ausführungsform der Erfindung veranschaulicht; und
  • 4 ein Ablaufplan ist, der ein Verfahren zum Managen der Rücksendungen an einen Host gemäß einer Ausführungsform der Erfindung veranschaulicht.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Es werden die Herangehensweisen zum Managen der Rücksendungen von Daten an einen Host in Ansprechen auf die Lesebefehle von dem Host für die Verwendung in einer Festkörperlaufwerks-Speichervorrichtung (SSD-Speichervorrichtung) beschrieben. In der folgenden Beschreibung sind für die Zwecke der Erklärung zahlreiche spezifische Einzelheiten dargelegt, um ein umfassendes Verständnis der hier beschriebenen Ausführungsformen der Erfindung bereitzustellen. Es wird jedoch erkannt, dass die hier beschriebenen Ausführungsformen der Erfindung ohne diese spezifischen Einzelheiten praktiziert werden können. In anderen Fällen sind wohlbekannte Strukturen und Vorrichtungen in der Form eines Blockschaltplans gezeigt, um das unnötige Verbergen der hier beschriebenen Ausführungsformen der Erfindung zu vermeiden.
  • DIE FESTKÖRPERLAUFWERKS-KONFIGURATION
  • Die Ausführungsformen der Erfindung können verwendet werden, um eine Festkörperlaufwerks-Speichervorrichtung (SSD-Speichervorrichtung) zu managen. 1 ist ein Blockschaltplan, der eine Beispiel-Betriebsumgebung veranschaulicht, in der die Ausführungsformen der Erfindung implementiert sein können. 1 veranschaulicht eine generische SSD-Architektur 100, wobei ein SSD 102 kommunikationstechnisch durch eine primäre Kommunikationsschnittstelle 106 an eine Host-Vorrichtung 104 gekoppelt ist. Die Ausführungsformen der Erfindung sind nicht auf eine Konfiguration eingeschränkt, wie sie in 1 dargestellt ist, stattdessen können die Ausführungsformen auf Betriebsumgebungen anwendbar sein, die von den SSDs verschieden sind, wobei sie in SSD-Konfigurationen implementiert sein können, die von der verschieden sind, die in 1 veranschaulicht ist. Die Ausführungsformen können z. B. implementiert sein, um in anderen Umgebungen zu arbeiten, die sich auf nichtflüchtige Speicherkomponenten für das Schreiben und Lesen der Daten stützen.
  • Die Host-Vorrichtung 104 (oder einfach der ”Host”) repräsentiert weitgehend irgendeinen Typ von Computer-Hardware oder -Software, der unter anderem Daten-E/A-Anforderungen oder -Aufrufe an eine oder mehrere Speichervorrichtungen ausführt. Der Host 104 kann z. B. ein Betriebssystem sein, das in einem Computer, einem Tablet, einem Mobiltelefon oder im Allgemeinen irgendeinem Typ von Computer-Vorrichtung, der Speicher enthält oder mit Speicher wechselwirkt, ausgeführt wird. Die primäre Schnittstelle 106, die die Host-Vorrichtung 104 an das SSD 102 koppelt, kann z. B. ein innerer Bus eines Computers oder ein Kommunikationskabel oder eine drahtlose Kommunikationsverbindung oder dergleichen sein.
  • Das in 1 veranschaulichte Beispiel-SSD 102 enthält eine Schnittstelle 110, einen Controller 112 (z. B. einen Controller, der Firmware-Logik besitzt), einen Adressierungs-Funktionsblock 114, einen Datenpuffer-Cache 116, einen Fehlerkorrekturcode (ECC) 118 und einen oder mehrere nichtflüchtige Speicherkomponenten 120a, 120b, 120n.
  • Die Schnittstelle 110 ist ein Wechselwirkungspunkt zwischen den Komponenten, nämlich dem SSD 102 und der Host-Vorrichtung 104 in diesem Kontext, wobei sie sowohl auf der Ebene der Hardware als auch auf der Ebene der Software anwendbar ist. Dies erlaubt einer Komponente, über ein Eingabe-/Ausgabesystem und ein zugeordnetes Protokoll mit anderen Komponenten zu kommunizieren. Eine Hardware-Schnittstelle wird typischerweise durch die mechanischen, elektrischen und logischen Signale an der Schnittstelle und das Protokoll, um sie zu sequentialisieren, beschrieben. Einige nicht einschränkende Beispiele häufiger und Standard-Schnittstellen enthalten die SCSI (die Schnittstelle kleiner Computersysteme), die SAS (die seriell angeschlossene SCSI) und den SATA (den seriellen ATA).
  • Ein SSD 102 enthält einen Controller 112, der die Elektronik enthält, die eine Brücke von den nichtflüchtigen Speicherkomponenten (z. B. dem NAND-Flash) zu dem Host bildet, wie z. B. von dem nichtflüchtigen Speicher 120a, 120b, 120n zu der Host-Vorrichtung 104. Der Controller ist typischerweise ein eingebetteter Prozessor, der Code auf Firmware-Ebene ausführt, und ist ein wichtiger Faktor der SSD-Leistung.
  • Der Controller 112 bildet mit dem nichtflüchtigen Speicher 120a, 120b, 120n über einen Adressierungs-Funktionsblock 114 eine Schnittstelle. Die Adressierungsfunktion 114 arbeitet z. B., um die Abbildungen zwischen den logischen Blockadressen (LBAs) von dem Host 104 auf eine entsprechende physikalische Blockadresse in dem SSD 102, nämlich auf den nichtflüchtigen Speicher 120a, 120b und 120n des SSD 102, zu managen. Weil die Seite des nichtflüchtigen Speichers und die Host-Sektoren unterschiedliche Größen besitzen, muss ein SSD eine Datenstruktur aufbauen und aufrechterhalten, die es ihm ermöglicht, zwischen den Host-Schreibdaten in einen oder den Host-Lesedaten aus einem Sektor und der Seite des physikalischen nichtflüchtigen Speichers, in der die Daten tatsächlich angeordnet sind, zu übersetzen. Diese Tabellenstruktur oder ”Abbildung” kann für eine Sitzung im flüchtigen Speicher 122 des SSD, wie z. B. einem DRAM oder irgendeiner anderen lokalen flüchtigen Speicherkomponente, die für den Controller 112 und die Adressierung 114 zugänglich ist, gebildet und aufrechterhalten werden. Alternativ kann die Tabellenstruktur beständiger über die Sitzungen in dem nichtflüchtigen Speicher des SSD, wie z. B. dem nichtflüchtigen Speicher 120a, 120b, 120n, aufrechterhalten werden.
  • Die Adressierung 114 tritt zusätzlich zu dem nichtflüchtigen Speicher 120a, 120b, 120n mit dem Datenpuffer-Cache 116 und dem Fehlercode (ECC) 118 in Wechselwirkung. Der Datenpuffer-Cache 116 eines SSD 102 enthält typischerweise DRAM als Cache, ähnlich zu dem Cache in Festplattenlaufwerken. Der Datenpuffer-Cache 116 dient sowohl als ein Puffer oder Zwischenspeicher-Bereich für die Übertragung der Daten zu den und von den nichtflüchtigen Speicherkomponenten als auch als ein Cache zum Beschleunigen künftiger Anforderungen für die im Cache gespeicherten Daten. Der Datenpuffer-Cache 116 ist typischerweise mit flüchtigem Speicher implementiert, so dass die darin gespeicherten Daten nicht permanent in dem Cache gespeichert sind, d. h. die Daten sind nicht beständig.
  • Der ECC 118 ist ein System des Hinzufügens redundanter Daten oder Paritätsdaten zu einer Nachricht, so dass sie durch einen Empfänger wiederhergestellt werden kann, selbst wenn eine Anzahl von Fehlern, entweder während des Prozesses der Übertragung oder im Speicher, eingeführt würde.
  • Schließlich enthält das SSD 102 einen oder mehrere nichtflüchtige Speicherkomponenten 120a, 120b, 120n. Für ein nicht einschränkendes Beispiel können die nichtflüchtigen Speicherkomponenten 120a, 120b, 120n als Flash-Speicher (z. B. NAND- oder NOR-Flash) oder andere Typen eines jetzt oder in der Zukunft verfügbaren Festkörperspeichers implementiert sein. Die nichtflüchtigen Speicherkomponenten 120a, 120b, 120n sind die tatsächlichen elektronischen Speicherkomponenten, in denen die Daten ständig gespeichert sind. Die nichtflüchtigen Speicherkomponenten 120a, 120b, 120n des SSD 102 können als das Analogon zu den Festplatten in den Festplattenlaufwerks-Speichervorrichtungen (HDD-Speichervorrichtungen) betrachtet werden.
  • Es werden die Ausführungsformen der Erfindung beschrieben, die die Rücksendungen von Daten an einen Host in Ansprechen auf die Lesebefehle von dem Host managen. Folglich ist eine optimale Reihenfolge, in der die den Lesebefehlen zugeordneten Daten an den Host zurückgeschickt werden sollten, bestimmbar und ist eine leistungsfähigere SSD-Speichervorrichtung erreichbar.
  • DIE SPEICHEROPERATIONS-ÜBERWACHUNGSEINRICHTUNG
  • 2 ist ein Blockschaltplan, der einen Abschnitt einer Beispiel-Betriebsumgebung veranschaulicht, der sich auf eine Speicheroperations-Überwachungseinrichtung konzentriert, in der eine Ausführungsform der Erfindung implementiert sein kann. Die Beispiel-Betriebsumgebung 200 enthält eine Speicheroperations-Überwachungseinrichtung 202 (die im Folgenden als ”Operationsüberwachungseinrichtung” bezeichnet wird), die kommunikationstechnisch an eine CPU 204 gekoppelt ist. Die Operationsüberwachungseinrichtung 202 ist ferner an einen oder mehrere Kanäle 206a, 206b, 206n gekoppelt, wobei jeder Kanal an einen oder mehrere nichtflüchtige Speicherchips gekoppelt ist. Für Beispielzwecke stellt 2 den Kanal 206a, der an den Chip 208a0, den Chip 208a1 und den Chip 208a2 gekoppelt ist und mit dem Chip 208a0, dem Chip 208a1 und dem Chip 208a2 in Verbindung steht; den Kanal 206b, der an den Chip 208b0, 208b1 und 208b2 gekoppelt ist und mit dem Chip 208b0, 208b1 und 208b2 in Verbindung steht; und den Kanal 206n, der an den Chip 208n0, 208n1 und 208n2 gekoppelt ist und mit dem Chip 208n0, 208n1 und 208n2 in Verbindung steht, dar. Es wird angegeben, dass die Anzahl der Kanäle und der entsprechenden Speicherchips, die in 2 dargestellt ist, den Zwecken eines Beispiels dient und die Ausführungsformen der Erfindung nicht auf die dargestellte genaue Konfiguration eingeschränkt sind.
  • Gemäß den Ausführungsformen arbeitet die Operationsüberwachungseinrichtung 202, wie unter Bezugnahme auf 3 beschrieben ist. Im Allgemeinen kann die Operationsüberwachungseinrichtung 202 als ein Hardware-Beschleuniger betrachtet werden, der konfiguriert ist, den Controller beim Ausführen ausführbarer Aufgaben zu unterstützen. Gemäß einer Ausführungsform ist die Operationsüberwachungseinrichtung 202 in dem Controller 112 (1) implementiert, wobei aber die Praxis der Ausführungsformen der Erfindung nicht so eingeschränkt ist. Deshalb könnte die Operationsüberwachungseinrichtung 202 im Wesentlichen irgendwo innerhalb des SSD 102 (1) implementiert sein, z. B. sogar in einem oder mehreren der Speicherchips 208a0208n1. Die Operationsüberwachungseinrichtung 202 kann in Firmware oder in Hardware implementiert sein. Wie unter Bezugnahme auf 3 ausführlicher beschrieben wird, funktioniert die Operationsüberwachungseinrichtung 202 im Allgemeinen als eine Schätzeinrichtungsfunktion.
  • Die Betriebsumgebung 200 kann eine dedizierte oder gemeinsam benutzte CPU 204 enthalten, um die Anweisungen, die Prozeduren usw. auszuführen, die der Funktionalität der Operationsüberwachungseinrichtung 202 zugeordnet sind. Die CPU 204 ist ein Prozessor des SSD 102, der eine ausführbare Logik ausführen kann, um den den Speicherchips 208a0208n1 zugeordneten Operationen zu dienen. Ähnlich bildet jeder der Kanäle 206a, 206b, 206n sowohl mit einem anderen als auch mit seinem jeweiligen Speicherchip eine Schnittstelle. Ein Kanal kann als eine Kommunikations-”Pipeline” zwischen mehreren Entitäten oder Komponenten betrachtet werden. Deshalb funktionieren die Kanäle 206a, 206b, 206n des SSD 102 als Kommunikations- und Betriebsleitungen zwischen der Operationsüberwachungseinrichtung 202 und den jeweiligen Speicherchips jedes Kanals und zwischen der CPU 204 und den jeweiligen Speicherchips jedes Kanals.
  • Der Flash-Speicher ist ein Typ eines nichtflüchtigen Speichers. Der Flash-Speicher ist ein Typ eines elektrisch löschbaren programmierbaren Festwertspeichers (EEPROM). Ein Speicherchip ist eine Hardware-Einheit eines nichtflüchtigen Speichers. Ein Flash-Speicherchip ist ein Chip einer diskreten integrierten Schaltung, wobei ein derartiger Chip wenigstens eine integrierte Flash-Speicher-Schaltung enthält. Die Chips sind ein Medium auf unterer Ebene, in dem die Daten in dem Flash-Speicher gespeichert sind.
  • 3 ist ein Blockschaltplan, der eine Speicheroperations-Überwachungseinrichtung gemäß einer Ausführungsform der Erfindung veranschaulicht. Die Speicheroperations-Überwachungseinrichtung 202 nach 3 enthält mehrere Chip-Zähler, wobei jeder von ihnen einem oder mehreren entsprechenden Speicherchips zugeordnet ist. Die Chip-Zähler 302a0, 302a1, 302a2 sind z. B. den entsprechenden Chips 208a0, 208a1, 208a2 (2) zugeordnet; die Chip-Zähler 302b0, 302b1, 302b2 sind den entsprechenden Chips 208b0, 208b1, 208b2 (2) zugeordnet; und die Chip-Zähler 302n0, 302n1, 302n2 sind den entsprechenden Chips 208n0, 208n1, 208n2 (2) zugeordnet. Wie bei der Anzahl der Speicher-Chips wird angegeben, dass die in 3 dargestellte Anzahl der Chip-Zähler den Zwecken eines Beispiels dient und dass die Ausführungsformen der Erfindung nicht auf die dargestellte genaue Konfiguration und Anzahl der Chip-Zähler eingeschränkt ist.
  • Die Chip-Zähler 302a0302n2 sind Datenstrukturen, die verwendet werden, um den Abschlusszeitpunkt zu verfolgen, der den Leseoperationen in den entsprechenden Chips 208a0208n2 (2) zugeordnet ist. Der zugeordnete Zeitpunkt, um eine Leseoperation in einem speziellen Chip abzuschließen, ist durch eine ”Betriebskosten”-Metrik charakterisiert, die in dem entsprechenden Chip-Zähler gespeichert ist. Die Betriebskostenwerte, die in den Chip-Speichern 302a0302n2 gespeichert sind, werden für jede den Chips 208a0208n2 zugesandte Flash-Operation erzeugt und basieren gemäß einer Ausführungsform auf der Chip-Historie und dem physikalischen Ort der Operation.
  • Die Speicheroperations-Überwachungseinrichtung 202 enthält einen Zeitgeber 304, der den Chip-Zählern 302a0302n2 zugeordnet ist. Der Zeitgeber 304 erzeugt ein periodisches Ereignis, wie z. B. ein Taktticken, das alle Chip-Zähler 302a0302n2 dekrementiert. Für ein nicht einschränkendes Beispiel kann der Zeitgeber 304 ein 1-μs-Taktticken erzeugen. Sobald der Zeitgeber 304 initialisiert ist, tickt er ungeachtet irgendeines Lesebefehls. Der Zeitgeber 304 kann z. B. als ein digitaler Zähler implementiert sein, der mit einer festen Frequenz dekrementiert, die oft konfigurierbar ist. Hochentwickeltere Zeitgeber können eine Vergleichslogik verwenden, um den Zeitgeberwert mit einem spezifischen Wert, der durch Software oder eine andere Logik festgelegt ist, zu vergleichen, die irgendeine Handlung auslöst, wenn der Zeitgeberwert dem vorgegebenen Wert entspricht. Dieser Typ des Zeitgebers kann z. B. verwendet werden, um einen Impuls zu erzeugen. Gemäß einer Ausführungsform wird ein digitaler Zähler unter Verwendung einer Vergleichslogik, um einen Impuls zu erzeugen, verwendet, um die Werte in den Chip-Zählern 302a0302n2 zu dekrementieren. Der verwendete Typ des Zeitgebers kann jedoch von Implementierung zu Implementierung variieren.
  • Folglich schätzt und managt die Operationsüberwachungseinrichtung 202 den Abschlusszeitpunkt der Flash-Leseoperationen in allen Flash-Chips, die ein Festkörperlaufwerk umfassen, durch das Laden der Chip-Zähler 302a0302n2 mit den Betriebskosten und das Dekrementieren dieser Betriebskostenwerte bei jedem Taktticken vom Zeitgeber 304.
  • Die Speicheroperations-Überwachungseinrichtung 202 enthält ein oder mehrere Programmierkostenregister 314a, 314b, 314c, 314n. Die Programmierkostenregister 314a314n werden verwendet, um dem Zeitraum Rechnung zu tragen, der erforderlich ist, um eine Seitenprogrammieroperation abzuschließen, die ansonsten als eine Schreiboperation bekannt ist. Die Anzahl der Programmkostenregister, die in 3 dargestellt ist, dient den Zwecken eines Beispiels, wobei die Ausführungsformen der Erfindung nicht auf die dargestellte genaue Konfiguration und Anzahl der Programmierkostenregister eingeschränkt ist. Die Anzahl der Kostenregister kann eine Sache der Konstruktionswahl sein und kann z. B. auf der Architektur des nichtflüchtigen Speichers 120a120n (1) und des SSD 102 (1) basieren. Gemäß einer Ausführungsform werden jedoch vier Kostenregister verwendet, um vier mögliche Werte für die Programmierkosten zu halten, wobei derartige Programmierkostenwerte der Programmierungsvariation aufgrund des Seitenorts innerhalb des nichtflüchtigen Speichers 120a120n Rechnung tragen. Die Werte der allgemeinen Programmierkostenregister 314a314n können von dem nichtflüchtigen Speicher 120a120n vorgegeben sein, wobei diese Werte aber basierend auf dem relevanten Ort in dem nichtflüchtigen Speicher, an dem die angeforderten Daten gespeichert sind, basierend auf dem Typ des nichtflüchtigen Speichers und dergleichen variieren.
  • Die Operationsüberwachungseinrichtung 202 enthält ein Löschkostenregister 310 und ein Lesekostenregister 312. Das Löschkostenregister 310 wird verwendet, um einen Wert zu speichern, der den Zeitraum repräsentiert, der erforderlich ist, um eine Löschoperation abzuschließen, während das Lesekostenregister 312 verwendet wird, um einen Wert zu speichern, der den Zeitraum repräsentiert, der erforderlich ist, um eine Löschoperation abzuschließen. In 3 sind für die Zwecke der Einfachheit ein einziges Löschkostenregister 310 und ein einziges Lesekostenregister 312 gezeigt, wobei die Ausführungsformen der Erfindung für eine relativ einfache Implementierung der hier beschriebenen umfassenderen Lehren implementiert sein könnten, wie gezeigt ist. Das heißt, eine einfache Implementierung kann einfache Register verwenden, um die verschiedenen Kosteninformationen zu speichern.
  • Die Lese-, Lösch- und Programmierkosten verändern sich jedoch während der Lebensdauer eines SSD und über die unterschiedlichen Blöcke innerhalb eines Chips 208a0208n2. Deshalb können die Implementierungen der Ausführungsformen in dem Niveau der Granularität variieren, mit dem die Kosten geschätzt werden. Deshalb kann eine relativ komplexere Implementierung der Ausführungsformen einen Speicher 308 verwenden, um viele Variationen der Lese-, Lösch- und Programmierkosten auf Chip-, Block- oder Seitenbasis zu speichern, wobei sich diese Kosten während der Lebensdauer des Laufwerks ändern. Es ist wahrscheinlich, dass ein größerer Speicher 308, der viele Variationen der Kostenmetriken speichert, eine genauere Kostenschätzung erzeugt, so dass die Kostengranularität gegen die Schätzungsgenauigkeit ein Kompromiss ist, der auf Implementierungsebene gemanagt werden kann.
  • Ein Grund, das Programmierkosten (d. h. Schreiboperationskosten), die Lesekosten und die Löschkosten betrachtet werden, ist, dass der Zeitpunkt des Abschlusses einer Leseoperation in einem nichtflüchtigen Speicher-Chip 208a0208n2 und folglich die optimale Reihenfolge, in der die Daten an den Host 104 (1) zurückgeschickt werden, durch die Schreib-, Lösch- und Leseoperationen beeinflusst wird, die gleichzeitig mit den Leseoperationen ausgeführt werden, z. B. sowohl aufgrund von Host-Schreiboperationen und Datenmüll-Sammeloperationen (d. h. einem zufälligen Mischszenario) als auch aufgrund von Leseoperationen aufgrund anderer Host-Befehle, die auf denselben Chip abzielen (d. h. ein zufälliges Leseszenario). Deshalb entspricht die optimale Reihenfolge der Befehle, in der die Daten an den Host 104 (1) zurückgeschickt werden sollten, sowohl wenigstens teilweise aufgrund zufälliger Misch- und zufälliger Leseszenarios als auch aufgrund von Hintergrundoperationen nicht notwendigerweise der Reihenfolge, in der der Host die Befehle an das SSD 102 (1) sendet.
  • Die Steuerlogik 306 der Operationsüberwachungseinrichtung 202 ist die Logik, die ausgeführt wird, um die Chip-Zähler 302a0302n2 zu füllen und zu managen und um die verschiedenen Register, wie z. B. sowohl die Programmierkostenregister 314a314n, das Löschkostenregister 310 und das Lesekostenregister 312 als auch irgendwelche anderen Register, die in alternativen Ausführungsformen der Operationsüberwachungseinrichtung 202 implementiert sein können, zu konfigurieren. Die Steuerlogik 306 kann außerdem andere Aufgaben und Berechnungen bei der Unterstützung des Bestimmens einer optimalen Reihenfolge, in der die Daten an den Host 104 zurückzuschicken sind, ausführen, wie z. B. die Mittelung verschiedener Betriebskosten (z. B. der Löschkosten, der Lesekosten) über mehrere Chips 208a0208n2 (2) oder über mehrere nichtflüchtige Speicher 120a120n (1), wie z. B. das Einstellen der Registeroperationskosten basierend auf aktuellen oder tatsächlichen Operationsabschlusszeitpunkten und dergleichen. Es ist nicht beabsichtigt, dass der Umfang der Steuerlogik 306 eingeschränkt ist, wobei die Erweiterung einer derartigen Logik, um weitere Funktionen auszuführen, spezifisch in Betracht gezogen wird.
  • Die Operationsüberwachungseinrichtung 202 enthält eine oder mehrere Kanalbussteuerungen 316a, 316b, 316n, wobei jede einem jeweiligen Kanal 206a, 206b, 206n (2) entspricht. Gemäß einer Ausführungsform sind die Kanalbussteuerungen 316a316n konfiguriert, den Anfang und das Ende der Operationen in den Chips 208a0208n2 (2) zu detektieren, z. B. durch das Ausspionieren der Kanalbusse (2), über die die Kanäle 206a206n die Operationen zu den Chips 208a0208n2 erleichtern. Derartige detektierte Operationsaktivitäten können durch die Steuerlogik 306 verwendet werden, um die Betriebskostenwerte der Chip-Zähler 302a0302n2 zu füllen und zu managen.
  • Der Speicher 308 der Operationsüberwachungseinrichtung 202 ist ein Speicher, der für die Verwendung durch die Operationsüberwachungseinrichtung 202 für verschiedene Zwecke verfügbar ist, von denen einige hier im Kontext der gewünschten Kostenmetrik-Granularität und der Selbsteinstellungsmerkmale ausführlicher beschrieben sind, die in der Operationsüberwachungseinrichtung 202 verkörpert sein können. Der Typ und die Form des Speichers 308 sind nicht eingeschränkt, wobei sie basierend auf den Konstruktionseinschränkungen, den Zielen und dergleichen von Implementierung zu Implementierung variieren können.
  • EIN VERFAHREN ZUM MANAGEN DER RÜCKSENDUNGEN AN EINEN HOST
  • 4 ist ein Ablaufplan, der ein Verfahren zum Managen der Rücksendungen an einen Host gemäß einer Ausführungsform der Erfindung veranschaulicht. Der in 4 veranschaulichte Prozess kann in einem SSD, wie z. B. dem SSD 102 (1), implementiert sein. Spezifischer kann der in 4 veranschaulichte Prozess im Controller 112 (1) des SSD 102 gemäß einer Ausführungsform implementiert sein. Ferner ist gemäß einer Ausführungsform der Prozess nach 4 in der Speicheroperations-Überwachungseinrichtung 202 (2) implementiert. Die Prozesslogik kann als analoge oder digitale Hardware-Schaltungsanordnung innerhalb des SSD 102 oder als Firmware-Anweisungen, die durch einen Prozessor, wie z. B. die CPU 204 (2) oder eine MPU, innerhalb des SSD 102 ausgeführt werden, implementiert sein.
  • Im Block 402 nach 4 wird ein Datenlesebefehl von einem Host empfangen. Der Datenlesebefehl wird z. B. von einer Host-Vorrichtung 104 (1) über die Schnittstelle 110 (1) des SSD 102 (1) am Controller 112 (1) empfangen. In einem Warteschlangen-Befehlssystem kann ein Host viele Lese- und Schreibbefehle an eine Speichervorrichtung, wie z. B. das SSD 102, senden, d. h. mehr, als das SSD 102 gleichzeitig und sofort verarbeiten kann. Insbesondere ist die Reihenfolge, in der die Befehle durch den Host gesendet werden, nicht immer die für die beste SSD-Leistung beste Reihenfolge, in der mit den Daten dem Host zu antworten ist oder in der die Daten an den Host zurückzuschicken sind. Dies ist teilweise so, weil die Latenzzeit, um die Daten aus den Flash-Speicherchips zu lesen, z. B. basierend darauf variiert, ob der Ziel-Chip inaktiv ist oder nicht und ob der Ziel-Chip mit einer Lösch-, Seitenprogrammier- oder Leseoperation beschäftigt ist.
  • Der Controller 112 (1) besitzt ”Kenntnis” dessen, wo die Daten innerhalb des nichtflüchtigen Speichers 120a120n (1) gespeichert sind. Folglich kann der Controller 112 die Daten in Ansprechen auf eine Anforderung in der Reihenfolge, in der die Anforderungen empfangen werden, aus dem Speicher holen, wobei aber unterschiedliche Operationen in Abhängigkeit z. B. davon, an was und wie der nichtflüchtiger Speicher momentan arbeitet, was die vorherigen Operationen des Speichers waren, wo sich die relevanten Daten in dem Speicher befinden und dergleichen, unterschiedliche Zeiträume erfordern. Signifikant bestimmen die hier beschriebenen Ausführungsformen für Leistungszwecke eine optimale Reihenfolge, in der die Daten an den Host zurückzuschicken sind. Wenn im Gegensatz eine nicht optimale Reihenfolge des Zurückschickens verwendet wird, dann ist es oft erforderlich, dass das System länger und/oder öfter wartet, bis andere Speicheroperationen abgeschlossen sind, bevor die Daten an den Host zurückgeschickt werden können.
  • Im Block 404 werden für jede einem jeweiligen nichtflüchtigen Speicherchip zugesandte Operation die Betriebskosten erzeugt. Die Steuerlogik 306 (3) der Speicheroperations-Überwachungseinrichtung 202 (2) bildet und speichert die Betriebskosten für die Ziel-Chips (z. B. einen oder mehrere der Chips 208a0208n2 nach 2) in entsprechenden Chip-Zählern 302a0302n2 (3) basierend auf den Werten des Löschkostenregisters 310 (3), des Lesekostenregisters 312 (3) und der Programmierkostenregister 314a314n (3) und basierend darauf, was die Ziel-Speicherchips momentan verarbeiten oder in der Warteschlange haben. Es wird angegeben, dass die Betriebskosten in Ansprechen auf die Leseanforderung von dem Host, aber nicht notwendigerweise in Ansprechen auf die Leseanforderung von dem Host, erzeugt werden können.
  • Gemäß einer Ausführungsform werden die in den Zählern gespeicherten Betriebskostenwerte für jede den Chips zugesandte Operation des nichtflüchtigen Speichers für einen speziellen Lesebefehl automatisch erzeugt. Wie vorher beschrieben worden ist, kann die Steuerlogik 306 (3) die durch die Kanalbus-Controller 316a316n (3) von den jeweiligen Kanalbussen erhaltenen Informationen, z. B. die Anfangs- und Endzeitpunkte der Operationen, verwenden, um die aktuellen Werte für die verschiedenen Chip-Zähler 302a0302n2 (3) in Ansprechen auf einen Lesebefehl zu berechnen. Alternativ werden die in den Zählern gespeicherten Betriebskostenwerte für jeden nichtflüchtigen Speicherchip automatisch erzeugt und ständig gemanagt, wobei sie deshalb verfügbar sind, wenn sie in Ansprechen auf einen Lesebefehl von dem Host angefordert werden. Folglich kann die Steuerlogik 306 die durch die Kanalbus-Controller 316a316n von den jeweiligen Kanalbussen erhaltenen Informationen verwenden, um die Initialisierung und das Löschen der verschiedenen Chip-Zähler 302a0302n2 mit der Zeit auszulösen.
  • Im Block 406 werden mit der Zeit alle Betriebskosten basierend auf einem Zeitgeber, der ein periodisches Ereignis erzeugt, dekrementiert. Die für die Ziel-Chips (z. B. einen oder mehrere der Chips 208a0208n2 nach 2) in den entsprechenden Chip-Zählern 302a0302n2 (3) erzeugten Betriebskosten werden z. B. mit der Zeit basierend auf dem Taktticken des Zeitgebers 304 (3) dekrementiert. Wird für die Erörterung angenommen, dass ein oder mehrere Chips aktuell mit einer Lösch-, Lese- oder Schreiboperation beschäftigt sind, dann spiegeln die Betriebskosten in den entsprechenden Chips den Zeitraum bis zum Abschluss der jeweiligen aktuellen Operation wieder. Dann, wie die Zeit vergeht und sich die Operationen zum Abschluss bewegen, nehmen die Betriebskosten in den Chip-Zählern basierend auf dem dekrementierenden Taktticken des Zeitgebers 304 mit der Absicht ab, die Betriebskosten der aktuellen Operation übereinstimmend mit dem Abschluss der aktuellen Operation auf null zu dekrementieren.
  • Für bestimmte Typen des nichtflüchtigen Speichers, wie z. B. einen NAND-Flash, ist die maximale Datenmenge, die aus dem Speicher gelesen oder in den Speicher geschrieben werden kann, eine Seite. Eine Seite kann z. B. 8 KB der Daten umfassen. Deshalb wird ein Lese- oder Schreibbefehl oft über mehrere Chips verteilt. Beim Empfangen eines Host-Datenbefehls, der eine Leseoperation beschreibt, kann die Firmware des Controller 112 (1) den Datenbefehl in Chip-Leseoperationen aufbrechen, deren Anzahl von der Befehlslänge abhängt. Bei 8-KB-Seiten würde z. B. ein 64-KB-Lesebefehl von dem Host acht Lesevorgänge von den Chips erfordern, d. h. acht Lesevorgänge von jeweils 8 KB für einen 64-KB-Lesebefehl.
  • Im Block 408 werden die Gesamtkosten des von dem Host empfangenen Lesebefehls basierend auf den aktuellen Betriebskosten für jede einem entsprechenden nichtflüchtigen Speicherchip zugesandte Operation berechnet. Der maximale Zeitraum bis zum Abschluss aller Leseoperationen, die erforderlich sind, um jedes Datensegment von den Chips wiederzugewinnen, wird z. B. berechnet. Unter Fortsetzung des Beispiels des 64-KB-Lesebefehls werden die Betriebskosten für jeden der acht Chips, die gelesen werden müssen, um den Lesebefehl von dem Host zu erfüllen, verglichen, um den maximalen Zeitraum bis zum Abschluss dieses Satzes von Chip-Leseoperationen zu bestimmen, um die Gesamtbetriebskosten des Lesebefehls zu berechnen. Wie erörtert worden ist, berücksichtigt der Zeitraum bis zum Abschluss jeder Leseoperation, was jeder Chip momentan ausführt, wobei er berücksichtigen kann, was jeder Chip während seiner Gebrauchsdauer ausgeführt hat.
  • Während z. B. und gemäß einer Ausführungsform die Operationsüberwachungseinrichtung 202 (3) für das Bilden und Aufrechterhalten der Betriebskosten in den Chip-Zählern 302a0302n2 (3) verantwortlich ist, wie beschrieben worden ist, ist die Firmware des Controllers 112 (1) für das Berechnen der Gesamtbetriebskosten wie im Block 408 verantwortlich. Die Verteilung der Funktionalität kann jedoch von Implementierung zu Implementierung variieren und ist nicht auf die beschriebene Verteilung eingeschränkt. In einer alternativen Ausführungsform können die Gesamtbetriebskosten z. B. durch die Operationsüberwachungseinrichtung 202 berechnet und an die Firmware des Controller 112 zurückgeschickt werden.
  • Im Block 410 wird basierend auf den im Block 408 berechneten Gesamtkosten des Lesebefehls bestimmt, in welcher Reihenfolge bezüglich der anderen von dem Host empfangenen Lesebefehle die angeforderten Daten an den Host zurückzuschicken sind. Wie erörtert worden ist, ist die Reihenfolge, in der die Befehle durch den Host gesendet werden, für die beste SSD-Leistung nicht immer die beste Reihenfolge, in der mit den Daten dem Host zu antworten ist oder in der die Daten an den Host zurückzuschicken sind. Das Verfahren nach 4 schätzt die ”beste” oder ”optimale” Reihenfolge, in der die Daten an den Host zurückzuschicken sind, ohne der Reihenfolge, in der die verschiedenen Lesebefehle von dem Host empfangen werden, die primäre Beachtung zu geben. Als solche können die Operationen, die die kleinsten Betriebskosten besitzen, d. h., die den kürzesten Zeitraum bis zum Abschluss besitzen, vor den Chip-Operationen, die größere Betriebskosten und einen längeren Zeitraum bis zum Abschluss besitzen, an den Host zurückgeschickt werden, so dass die Rücksendungen in einer Warteschlange angeordnet werden, um zu vermeiden, dass längere Operationen das Zurückschicken kürzerer Operationen blockieren.
  • Die Firmware des Controllers 112 (1) ist z. B. und gemäß einer Ausführungsform für das Bestimmen der Reihenfolge des Zurückschickens wie im Block 410 verantwortlich. Die Verteilung der Funktionalität kann jedoch von Implementierung zu Implementierung variieren und ist nicht auf die beschriebene Verteilung eingeschränkt. In einer alternativen Ausführungsform kann z. B. die Reihenfolge des Zurückschickens durch die Operationsüberwachungseinrichtung 202 berechnet und an die Firmware des Controllers 112 zurückgeschickt werden.
  • Um zusammenzufassen, wie ein Betriebskosten-Schätzprozess ablaufen kann, fragt gemäß einer Ausführungsform der Controller 112 (1) beim Empfangen eines Lesebefehls von einem Host 104 (1) die Operationsüberwachungseinrichtung 202 (2 und 3) nach den Betriebskosten jedes nichtflüchtigen Speicherchips (der Chips 208a0208n2 nach 2), auf den durch den Lesebefehl abgezielt wird, ab. Effektiv fragt der Controller 112 die Operationsüberwachungseinrichtung 202 nach dem Zeitraum ab, um im Hinblick auf den aktuellen Betriebszustand jedes als Ziel gesetzten Chips das Lesen jedes als Ziel gesetzten Chips abzuschließen. Der Controller 112 berechnet dann die Gesamtkosten des Lesebefehls basierend auf den Betriebskosten für alle als Ziel gesetzten Chips. Aus den Gesamtkosten des Lesebefehls kann der Controller eine Reihenfolge mit hoher Leistung bestimmen, in der die Daten in Ansprechen auf den Lesebefehl bezüglich der anderen Lesebefehle von dem Host zurückzuschicken sind.
  • DIE SELBSTEINSTELLUNG DES SCHÄTZMECHANISMUS
  • Weil sich die Eigenschaften und Leistungsfähigkeiten des Flash-Speichers mit der Zeit und mit der Verwendung (z. B. dem Programmierzeitraum, dem Löschzeitraum usw.) ändern und die Betriebskostenschätzungen teilweise auf den Eigenschaften des Flash basieren, können die anfänglichen Betriebskostenwerte während der Lebensdauer des Laufwerks in Übereinstimmung mit einer Ausführungsform, in der ein Flash für den nichtflüchtigen Speicher verwendet wird, eingestellt werden. Als solche können die Werte in dem Löschkostenregister 310, dem Lesekostenregister 312 und den Programmierkostenregistern 314a314n (3) basierend auf der Variation des Zeitraums für den Abschluss, die mit der Verwendung auftritt, d. h. basierend auf der Betriebshistorie des Flash, mit der Zeit eingestellt werden.
  • Gemäß einer Ausführungsform verfolgt die Operationsüberwachungseinrichtung 202 (2) die Anzahl, wie oft jeder Chip für die verschiedenen Operationen verwendet wird, um die Änderungen der Betriebskosten mit der Zeit aufgrund der Physik des Flash zu identifizieren. Für diesen Zweck kann die Operationsüberwachungseinrichtung 202 tatsächliche Daten von dem Flash verwenden, die von den Kanalbussteuerungen 316a316n (3) erhalten werden können, um die Werte der Betriebskostenregister einzustellen, wie sich der Flash verschlechtert. Derartige Informationen könnten die genaue chipabhängige Verschlechterung, die jeder Flash-Speicherkomponente zugeordnet ist, bereitstellen und könnten im Speicher 308 (3) der Operationsüberwachungseinrichtung 202 gespeichert sein. Die Genauigkeit derartiger Informationen kann von Implementierung zu Implementierung variieren und könnte folglich ”pro Chip” oder sogar ”pro Block” gesammelt und gespeichert werden. Deshalb kann der Speicher 308 basierend auf dem Niveau der Genauigkeit, das für die Flash-Verschlechterungsdaten implementiert ist, dementsprechend dimensioniert sein.
  • In der vorhergehenden Beschreibung sind die Ausführungsformen der Erfindung unter Bezugnahme auf zahlreiche spezifische Einzelheiten betrieben worden, die von Implementierung zu Implementierung variieren können. Folglich ist der Satz der Ansprüche, der sich aus dieser Anmeldung ergibt, in der spezifischen Form, in der sich derartige Ansprüche ergeben, einschließlich jeder anschließenden Korrektur, der einzige und ausschließliche Indikator dessen, was die Erfindung ist und was durch die Anmelder beabsichtigt ist, das es die Erfindung ist. Alle Definitionen, die hier für die in derartigen Ansprüchen enthaltenen Begriffe ausdrücklich dargelegt sind, sollen die Bedeutung derartige Begriffe bestimmen, wie sie in den Ansprüchen verwendet werden. Folglich sollte keine Einschränkung, kein Element, keine Eigenschaft, kein Merkmal, kein Vorteil oder kein Attribut, das in einem Anspruch nicht ausdrücklich dargelegt ist, den Schutzumfang eines derartigen Anspruchs auf irgendeine Weise einschränken. Die Beschreibung und die Zeichnungen sind dementsprechend in einem veranschaulichenden anstatt in einem einschränkenden Sinn zu betrachten.

Claims (15)

  1. Verfahren zum Verwalten von Rückgaben an einen Host in Erwiderung auf durch eine Festkörperlaufwerks-Vorrichtung (SSD-Vorrichtung) von dem Host empfangenen Lesebefehle, wobei das Verfahren umfasst: Empfangen eines Datenlesebefehls von dem Host; Berechnen des geschätzten Gesamtzeitraums bis zum Abschluss des Lesebefehls anhand eines geschätzten Zeitraums bis zum Abschluss jeder einem jeweiligen dem Lesebefehl entsprechenden nichtflüchtigen Speicherchip zugesandten Operation; Festlegen anhand des geschätzten Gesamtzeitraums bis zum Abschluss des Lesebefehls, in welcher Reihenfolge die angeforderten Daten bezüglich der anderen von dem Host empfangenen Datenlesebefehle an den Host zurückzuschicken sind; und Zurückschicken der angeforderten Daten in der bestimmten Reihenfolge an den Host.
  2. Verfahren zum Verwalten von Rückgaben an einen Host in Erwiderung auf durch eine Festkörperlaufwerks-Vorrichtung (SSD-Vorrichtung) von dem Host empfangenen Lesebefehle, wobei das Verfahren umfasst: Empfangen eines Datenlesebefehls von dem Host; Erzeugen von Betriebskosten für jede einem jeweiligen nichtflüchtigen Speicherchip zugesandte Operation, wobei alle Betriebskosten anhand eines periodischen Ereignisses mit der Zeit dekrementiert werden; Berechnen der Gesamtkosten des Lesebefehls anhand der aktuellen Betriebskosten für jede dem jeweiligen nichtflüchtigen Speicherchip, der dem Lesebefehl entspricht, zugesandte Operation; Festlegen, anhand der Gesamtkosten des Lesebefehls, in welcher Reihenfolge die angeforderten Daten bezüglich der anderen von dem Host empfangenen Datenlesebefehle an den Host zurückzuschicken sind; und Zurückschicken der angeforderten Daten in der bestimmten Reihenfolge an den Host.
  3. Verfahren nach Anspruch 2, wobei das Erzeugen der Betriebskosten das Erzeugen der Betriebskosten basierend auf wenigstens einem des Folgenden enthält: (1) ob ein nichtflüchtiger Ziel-Speicherchip inaktiv ist oder nicht, (2) ob ein nichtflüchtiger Ziel-Speicherchip mit einer Löschoperation beschäftigt ist oder nicht, (3) ob ein nichtflüchtiger Ziel-Speicherchip mit einer Seitenprogrammieroperation beschäftigt ist oder nicht, und (4) ob ein nichtflüchtiger Ziel-Speicherchip mit einer Leseoperation beschäftigt ist oder nicht.
  4. Verfahren nach Anspruch 2, wobei das Erzeugen der Betriebskosten das Schätzen des Zeitraums bis zum Abschluss einer entsprechenden einem nichtflüchtigen Speicherchip zugesandten Operation enthält.
  5. Verfahren nach Anspruch 2, wobei das Erzeugen der Betriebskosten das Erzeugen der Betriebskosten anhand des physikalischen Orts der Operation auf einem nichtflüchtigen Speicherchip enthält.
  6. Verfahren nach Anspruch 2, wobei das Erzeugen der Betriebskosten das Erzeugen der Betriebskosten anhand der Betriebshistorie eines nichtflüchtigen Speicherchips enthält.
  7. Verfahren nach Anspruch 2, wobei ferner: das Zurückschicken der angeforderten Daten an den Host ein Zurückschicken zweiter angeforderter Daten mit einem zweiten Lesebefehl entsprechenden zweiten Betriebskosten vor den ersten angeforderten Daten mit einem ersten Lesebefehl entsprechenden ersten Betriebskosten an den Host enthält, basierend auf den zweiten Betriebskosten, die kleiner als die ersten Betriebskosten sind.
  8. Verfahren nach Anspruch 7, wobei der zweite Lesebefehl von dem Host empfangen worden ist, nachdem der erste Lesebefehl von dem Host empfangen worden ist.
  9. Verfahren nach Anspruch 2, wobei die Betriebskosten geschätzte Betriebskosten sind und wobei das Erzeugen der Betriebskosten enthält: Identifizieren eines Unterschieds zwischen den geschätzten Betriebskosten und dem Zeitraum bis zum Abschluss einer einem nichtflüchtigen Speicherchip zugesandten entsprechenden Operation, und Einstellen der geschätzten Betriebskosten basierend auf dem Unterschied.
  10. Festkörperlaufwerk (SSD), das nichtflüchtige Speicherchips und einen Controller zum Verwalten der Operationen in den nichtflüchtigen Speicherchips umfasst, wobei das SSD umfasst: eine Operationsüberwachungseinrichtung, die für Folgendes konfiguriert ist: Empfangen einer Anforderung von dem Controller für die Betriebskosten eines durch den Controller von einem Host empfangenen Datenlesebefehls, Verwalten von Zählern, wobei jeder Zähler einem entsprechenden nichtflüchtigen Speicherchip zugeordnet ist, einschließlich des Erzeugens von Betriebskosten, die einen Zeitraum bis zum Abschluss für jede einem jeweiligen nichtflüchtigen Speicherchip zugesandte Operation repräsentieren, und des Speicherns der Betriebskosten in dem entsprechenden Zähler, Dekrementieren aller Betriebskosten basierend auf einem Zeitgeber, der ein periodisches Ereignis erzeugt, und Zurückschicken der aktuellen Betriebskosten für jede einem jeweiligen nichtflüchtigen Speicherchip, der dem durch den Controller empfangenen Lesebefehl entspricht, zugesandte Operation an den Controller, wobei die aktuellen Betriebskosten auf dem aktuellen Wert jedes einem jeweiligen nichtflüchtigen Speicherchip, der dem Lesebefehl entspricht, zugeordneten Zählers basieren; und wobei der Controller für Folgendes konfiguriert ist: Berechnen der Gesamtkosten des Lesebefehls basierend auf den aktuellen Betriebskosten für jede dem jeweiligen nichtflüchtigen Speicherchip zugesandte Operation, und Bestimmen basierend auf den Gesamtkosten des Lesebefehls, in welcher Reihenfolge die angeforderten Daten bezüglich der anderen von dem Host empfangenen Datenlesebefehle an den Host zurückzuschicken sind.
  11. SSD nach Anspruch 10, ferner umfassend: ein oder mehrere Kanalbussteuerungen; wobei das Verwalten der Zähler durch die Operationsüberwachungseinrichtung das Erzeugen der Betriebskosten für jede Operation basierend auf den Informationen von der einen oder den mehreren Kanalbussteuerungen enthält, aus denen die Dauer einer einem nichtflüchtigen Speicherchip zugesandten Operation durch das Überwachen eines Kanalbusses, der dem nichtflüchtigen Speicherchip zugeordnet ist, bestimmt wird.
  12. SSD nach Anspruch 10, ferner umfassend: ein oder mehrere Löschkostenregister für das Verwalten eines Wertes, der dem Zeitraum für den Abschluss einer Löschoperation in den nichtflüchtigen Speicherchips entspricht; ein oder mehrere Lesekostenregister zum Speichern eines Wertes, der dem Zeitraum für den Abschluss einer Leseoperation in den nichtflüchtigen Speicherchips entspricht; ein oder mehrere Programmierkostenregister zum Speichern eines Wertes, der dem Zeitraum für den Abschluss einer Schreiboperation in den nichtflüchtigen Speicherchips entspricht; und wobei das Erzeugen der Betriebskosten für jede Operation auf einem oder mehreren der jeweiligen Werte basiert, die dem Löschkostenregister, dem Lesekostenregister und dem Programmierkostenregister zugeordnet sind.
  13. SSD nach Anspruch 10, wobei das Verwalten der Zähler durch die Operationsüberwachungseinrichtung enthält: Identifizieren eines Unterschieds zwischen den Betriebskosten von einem Zähler und dem tatsächlichen Zeitraum bis zum Abschluss einer einem entsprechenden nichtflüchtigen Speicherchip zugesandten entsprechenden Operation, und Einstellen der Betriebskosten des Zählers basierend auf dem Unterschied.
  14. Festkörperlaufwerks-Controller, der einen oder mehrere Abläufe von Anweisungen speichert, die, wenn sie durch einen oder mehrere Prozessoren ausgeführt werden, die Ausführung von Folgendem verursachen: Empfangen eines Datenlesebefehls von dem Host; Berechnen des geschätzten Gesamtzeitraums bis zum Abschluss des Lesebefehls basierend auf einem geschätzten Zeitraum bis zum Abschluss für jede einem jeweiligen nichtflüchtigen Speicherchip, der dem Lesebefehl entspricht, zugesandte Operation; Festlegen, basierend auf dem geschätzten Gesamtzeitraum bis zum Abschluss des Lesebefehls, in welcher Reihenfolge die angeforderten Daten bezüglich der anderen von dem Host empfangenen Datenlesebefehle zurückzuschicken sind; und Zurückschicken der angeforderten Daten in der bestimmten Reihenfolge an den Host.
  15. Festkörperlaufwerks-Controller, der einen oder mehrere Abläufe von Anweisungen speichert, die, wenn sie durch einen oder mehrere Prozessoren ausgeführt werden, die Ausführung von Folgendem verursachen: Empfangen eines Datenlesebefehls von dem Host; Erzeugen der Betriebskosten für jede einem jeweiligen nichtflüchtigen Speicherchip zugesandten Operation, wobei alle Betriebskosten basierend auf einem periodischen Ereignis mit der Zeit dekrementiert werden; Berechnen der Gesamtkosten des Lesebefehls basierend auf den aktuellen Betriebskosten für jede dem jeweiligen nichtflüchtigen Speicherchip, der dem Lesebefehl entspricht, zugesandte Operation; Festlegen basierend auf den Gesamtkosten des Lesebefehls, in welcher Reihenfolge die angeforderten Daten bezüglich der anderen von dem Host empfangenen Datenlesebefehle an den Host zurückzuschicken sind; und Zurückschicken der angeforderten Daten in der bestimmten Reihenfolge an den Host.
DE102013020269.8A 2012-12-04 2013-12-02 Umordnen des Zurückschickens für einen Host-Lesebefehl basierend auf der Zeitschätzung des Abschlusses eines Flash-Lesebefehls Pending DE102013020269A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/705,103 US9032177B2 (en) 2012-12-04 2012-12-04 Host read command return reordering based on time estimation of flash read command completion
US13/705,103 2012-12-04

Publications (1)

Publication Number Publication Date
DE102013020269A1 true DE102013020269A1 (de) 2014-06-05

Family

ID=49979436

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102013020269.8A Pending DE102013020269A1 (de) 2012-12-04 2013-12-02 Umordnen des Zurückschickens für einen Host-Lesebefehl basierend auf der Zeitschätzung des Abschlusses eines Flash-Lesebefehls

Country Status (5)

Country Link
US (3) US9032177B2 (de)
JP (1) JP5719013B2 (de)
KR (1) KR101543102B1 (de)
DE (1) DE102013020269A1 (de)
GB (1) GB2509603B (de)

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9508437B2 (en) * 2014-01-30 2016-11-29 Sandisk Technologies Llc Pattern breaking in multi-die write management
KR102317786B1 (ko) 2015-02-02 2021-10-26 삼성전자주식회사 스토리지 디바이스에서의 입출력 처리 방법 및 이를 적용하는 스토리지 디바이스 및 비휘발성 메모리 디바이스
KR102339779B1 (ko) 2015-04-06 2021-12-15 삼성전자주식회사 데이터 저장 장치, 이를 포함하는 데이터 처리 시스템, 및 상기 시스템의 작동 방법
US9477408B1 (en) 2015-04-14 2016-10-25 Samsung Electronics Co., Ltd. Memory systems having improved out-of-order execution of commands and methods for operating the same
CN106067321B (zh) * 2015-04-21 2020-09-15 爱思开海力士有限公司 适于存储器编程暂停-恢复的控制器
US9875053B2 (en) 2015-06-05 2018-01-23 Western Digital Technologies, Inc. Scheduling scheme(s) for a multi-die storage device
CN106933492B (zh) * 2015-12-30 2020-05-22 伊姆西Ip控股有限责任公司 有助于固态硬盘的磨损平衡的方法和装置
US10636065B2 (en) * 2016-03-09 2020-04-28 Western Digital Technologies, Inc. Data storage device, method and system, and control of data storage device based on writing operations and lifetime
US10540274B2 (en) 2016-03-29 2020-01-21 Micron Technology, Inc. Memory devices including dynamic superblocks, and related methods and electronic systems
US10146444B2 (en) 2016-10-03 2018-12-04 Samsung Electronics Co., Ltd. Method for read latency bound in SSD storage systems
US10901892B2 (en) * 2017-05-18 2021-01-26 Western Digital Technologies, Inc. Locality grouping during garbage collection with flush of buffered write data upon completion of garbage collection operation
US10740228B2 (en) * 2017-05-18 2020-08-11 Sandisk Technologies Llc Locality grouping during garbage collection of a storage device
US10140027B1 (en) * 2017-05-26 2018-11-27 Seagate Technology Llc Data transfers with adaptively adjusted polling times
US10528268B2 (en) * 2017-09-12 2020-01-07 Toshiba Memory Corporation System and method for channel time management in solid state memory drives
KR102427323B1 (ko) * 2017-11-08 2022-08-01 삼성전자주식회사 반도체 메모리 모듈, 반도체 메모리 시스템, 그리고 반도체 메모리 모듈을 액세스하는 액세스 방법
KR102626048B1 (ko) * 2018-03-21 2024-01-18 에스케이하이닉스 주식회사 메모리 컨트롤러, 이를 포함하는 메모리 시스템 및 이의 동작 방법
JP2019175292A (ja) 2018-03-29 2019-10-10 東芝メモリ株式会社 電子機器、コンピュータシステム、および制御方法
US11593262B1 (en) * 2018-04-25 2023-02-28 Seagate Technology Llc Garbage collection command scheduling
US11150836B2 (en) 2018-06-28 2021-10-19 Seagate Technology Llc Deterministic optimization via performance tracking in a data storage system
JP2020149588A (ja) * 2019-03-15 2020-09-17 キオクシア株式会社 メモリシステム及びメモリコントローラ
US11074011B2 (en) 2019-03-20 2021-07-27 Western Digital Technologies, Inc. Solid state drive latency estimation interface for host performance tuning
US10971215B1 (en) 2020-02-24 2021-04-06 Western Digital Technologies, Inc. Dynamically adjust data transfer speed for non-volatile memory die interfaces
US11645009B2 (en) 2021-03-03 2023-05-09 Western Digital Technologies, Inc. Data storage with improved read parallelism
US11531499B2 (en) * 2021-03-04 2022-12-20 Western Digital Technologies, Inc. Data storage that controls decode performance by changing program PLC
KR20230096289A (ko) 2021-12-23 2023-06-30 국민대학교산학협력단 저장장치의 입출력 응답시간 추적 장치 및 방법
CN116882335B (zh) * 2023-09-06 2023-12-22 上海芯存天下电子科技有限公司 操作时间仿真获取方法、装置、电子设备及存储介质

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6013589A (en) * 1998-03-13 2000-01-11 The Procter & Gamble Company Absorbent materials for distributing aqueous liquids
US6513089B1 (en) * 2000-05-18 2003-01-28 International Business Machines Corporation Dual burst latency timers for overlapped read and write data transfers
US7146524B2 (en) * 2001-08-03 2006-12-05 Isilon Systems, Inc. Systems and methods for providing a distributed file system incorporating a virtual hot spare
CN1692356B (zh) * 2002-11-14 2014-06-04 易斯龙***公司 用于对现存文件重新条带化的方法
US7379974B2 (en) 2003-07-14 2008-05-27 International Business Machines Corporation Multipath data retrieval from redundant array
US20050041453A1 (en) 2003-08-22 2005-02-24 Brazis Paul W. Method and apparatus for reading and writing to solid-state memory
US7512762B2 (en) 2004-10-29 2009-03-31 International Business Machines Corporation System, method and storage medium for a memory subsystem with positional read data latency
US7493439B2 (en) * 2006-08-01 2009-02-17 International Business Machines Corporation Systems and methods for providing performance monitoring in a memory system
US7802061B2 (en) 2006-12-21 2010-09-21 Intel Corporation Command-based control of NAND flash memory
US7937321B2 (en) * 2007-01-16 2011-05-03 Verizon Patent And Licensing Inc. Managed service for detection of anomalous transactions
US9021482B2 (en) 2007-05-04 2015-04-28 International Business Machines Corporation Reordering data responses using ordered indicia in a linked list
US8140739B2 (en) 2008-08-08 2012-03-20 Imation Corp. Flash memory based storage devices utilizing magnetoresistive random access memory (MRAM) to store files having logical block addresses stored in a write frequency file buffer table
US9123409B2 (en) 2009-06-11 2015-09-01 Micron Technology, Inc. Memory device for a hierarchical memory architecture
US8504789B2 (en) 2009-06-29 2013-08-06 Mosaid Technologies Incorporated Bridging device having a frequency configurable clock domain
US8495332B2 (en) 2009-07-24 2013-07-23 Apple Inc. Controller for optimizing throughput of read operations
JP4929379B2 (ja) 2010-06-30 2012-05-09 株式会社東芝 半導体記憶装置及びデータ書き込み読み出し方法
US8467249B2 (en) 2010-07-06 2013-06-18 Densbits Technologies Ltd. Systems and methods for storing, retrieving, and adjusting read thresholds in flash memory storage system
US8589655B2 (en) 2010-09-15 2013-11-19 Pure Storage, Inc. Scheduling of I/O in an SSD environment

Also Published As

Publication number Publication date
US20150212735A1 (en) 2015-07-30
GB2509603B (en) 2015-05-20
US9032177B2 (en) 2015-05-12
KR20140071938A (ko) 2014-06-12
US9354814B2 (en) 2016-05-31
KR101543102B1 (ko) 2015-08-07
GB201320971D0 (en) 2014-01-15
US9652156B2 (en) 2017-05-16
JP5719013B2 (ja) 2015-05-13
US20140156911A1 (en) 2014-06-05
GB2509603A (en) 2014-07-09
JP2014110058A (ja) 2014-06-12
US20160253095A1 (en) 2016-09-01

Similar Documents

Publication Publication Date Title
DE102013020269A1 (de) Umordnen des Zurückschickens für einen Host-Lesebefehl basierend auf der Zeitschätzung des Abschlusses eines Flash-Lesebefehls
DE112020002526B4 (de) Blockmodusumschaltung in datenspeichersystem
DE102019116520A1 (de) Datenspeichersysteme und -verfahren für eine verbesserte datenumlagerung basierend auf lesepegelspannungen, die mit einer fehlerwiederherstellung verbunden sind
DE102008057219B4 (de) Verfahren zum Betreiben eines Solid-State-Speichersystems, Solid-State-Speichersystem und Computersystem
US9817755B2 (en) Garbage collection management in memories
DE112013003255B4 (de) Managementmechanismus für fehlerhafte Blöcke
DE112018000180T5 (de) System und verfahren zum adaptiven senden frühzeitiger beendigung unter verwendung eines steuerungsspeicherpuffers
DE112020002792B4 (de) Verschleissorientierte blockmodusumwandlung in nichtflüchtigen speichern
DE102020107659A1 (de) Zonenbildung für gezonte namensräume
US9696934B2 (en) Hybrid solid state drive (SSD) using PCM or other high performance solid-state memory
DE102017112013A1 (de) Adaptive Temperatur- und Speicherparameterdrosselung
US10628081B2 (en) Managing internal command queues in solid state storage drives
DE102008036822A1 (de) Verfahren zum Speichern von Daten in einem Solid-State-Speicher, Solid-State-Speichersystem und Computersystem
DE112020000139T5 (de) Nicht sequentiell in zonen aufgeteilte namensräume
DE102015014851A1 (de) Ressourcenzuteilung und -freigabe für die Energieverwaltung in Vorrichtungen
DE102017104150A1 (de) Abnutzungsausgleich in Speichervorrichtungen
DE102020112512A1 (de) Datenspeichergerät und Betriebsverfahren dafür
DE202010017613U1 (de) Datenspeichervorrichtung mit host-gesteuerter Speicherbereinigung
DE102005031525A1 (de) Verfahren und System zur Steuerung eines Flashspeichers und Speichersystem
DE102020202379A1 (de) Speichersystem, speicher-controller und deren betriebsverfahren
DE112020001937T5 (de) Vorausschauender datenvorabruf in einer datenspeicher-vorrichtung
DE112020005695T5 (de) Speichercontroller für solid-state-speichereinheiten
DE112020005044T5 (de) Zonenanhang-befehlsplanung basierend auf zonenzustand
DE102005035137A1 (de) Nichtflüchtiges Speicherbauelement, Informationsverarbeitungsvorrichtung und zugehöriges Steuerverfahren
DE112020003185T5 (de) Einstellung von block-pool-grössen in einem speichersystem

Legal Events

Date Code Title Description
R082 Change of representative

Representative=s name: MEWBURN ELLIS LLP, DE

R081 Change of applicant/patentee

Owner name: WESTERN DIGITAL TECHNOLOGIES, INC. (N.D.GES.D., US

Free format text: FORMER OWNER: HGST NETHERLANDS B.V., AMSTERDAM, NL

R082 Change of representative

Representative=s name: MEWBURN ELLIS LLP, DE

R012 Request for examination validly filed
R082 Change of representative

Representative=s name: MURGITROYD GERMANY PATENTANWALTSGESELLSCHAFT M, DE