DE102019133147A1 - Datenspeichersysteme und verfahren zur optimierten planung von hintergrund-verwaltungsoperationen - Google Patents

Datenspeichersysteme und verfahren zur optimierten planung von hintergrund-verwaltungsoperationen Download PDF

Info

Publication number
DE102019133147A1
DE102019133147A1 DE102019133147.1A DE102019133147A DE102019133147A1 DE 102019133147 A1 DE102019133147 A1 DE 102019133147A1 DE 102019133147 A DE102019133147 A DE 102019133147A DE 102019133147 A1 DE102019133147 A1 DE 102019133147A1
Authority
DE
Germany
Prior art keywords
data storage
storage system
management operations
background management
timeout value
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
DE102019133147.1A
Other languages
English (en)
Inventor
Tomer Tzvi Eliash
Alexander Bazarsky
Yuval Grossman
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Western Digital Technologies Inc
Original Assignee
Western Digital Technologies Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Western Digital Technologies Inc filed Critical Western Digital Technologies Inc
Publication of DE102019133147A1 publication Critical patent/DE102019133147A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0625Power saving in storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/0757Error or fault detection not based on redundancy by exceeding limits by exceeding a time limit, i.e. time-out, e.g. watchdogs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0653Monitoring storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

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)
  • Quality & Reliability (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

Gerät, Medien, Verfahren und Systeme für Datenspeichersysteme und Verfahren für eine optimierte Planung der Hintergrund-Verwaltungsoperationen. Ein Datenspeichersystem kann eine Steuerung aufweisen. Die Steuerung ist eingerichtet, um einen Timeout-Wert eines adaptiven Timeout-Parameters des Datenspeichersystems zu bestimmen. Die Steuerung ist eingerichtet, um zu bestimmen, ob eine erste Host-Operation empfangen wird. Die Steuerung ist eingerichtet, um, wenn die erste Host-Operation nicht empfangen wird, zu bestimmen, ob der Timeout-Wert einem Schwellenwert entspricht. Die Steuerung ist eingerichtet, um, wenn der Timeout-Wert den Schwellenwert erfüllt, zu bewirken, dass eine oder mehrere Hintergrund-Verwaltungsoperationen in dem Datenspeichersystem ausgeführt werden.

Description

  • HINTERGRUND
  • Der Gesamtstromverbrauch eines Datenspeichersystems und die Speicherlatenz können die Benutzererfahrung beeinträchtigen. Um den nachteiligen Einfluss zu reduzieren, führen Datenspeichersysteme verschiedene Hintergrund-Verwaltungsoperationen durch. Um den Gesamtstromverbrauch und die Speicherlatenz effizient zu reduzieren, werden solche Hintergrund-Verwaltungsoperationen im Allgemeinen so geplant, dass sie durchgeführt werden, während keine Befehle von einem Host-System in einem Datenspeichersystem empfangen werden. Jedoch ist die Genauigkeit der Vorhersage, wann ein Datenspeichersystem Befehle von einem Host-System empfangen kann, wenn existierende Techniken verwendet werden, gering, was zu einer suboptimalen Planung von Hintergrund-Verwaltungsoperationen führt. Somit ist die Wahrscheinlichkeit der Minimierung des Gesamtstromverbrauchs des Datenspeichersystems sowie die Speicherlatenz reduziert.
  • Die im Hintergrundabschnitt vorgesehene Beschreibung sollte nicht als Stand der Technik angenommen werden, lediglich weil sie in dem Hintergrundabschnitt erwähnt wird oder diesem zugeordnet ist. Der Hintergrundabschnitt kann Informationen einschließen, die einen oder mehrere Aspekte der vorliegenden Technologie beschreiben, und die Beschreibung in diesem Abschnitt schränkt die Erfindung nicht ein.
  • Figurenliste
    • 1 zeigt ein beispielhaftes graphisches Diagramm, das einen Gesamtsystem-Stromverbrauch unter Verwendung eines konstanten Timeout-Werts und die Vorhersage, dass ein Host-Befehl präzise ist, veranschaulicht.
    • 2 zeigt ein beispielhaftes graphisches Diagramm, das einen Gesamtsystem-Stromverbrauch unter Verwendung eines konstanten Timeout-Werts veranschaulicht, und die Vorhersage des Host-Befehls fehlerhaft ist.
    • 3 ist ein Blockdiagramm, das Komponenten eines Datenspeichersystems gemäß veranschaulichender Implementierungen darstellt.
    • 4 ist ein Flussdiagramm eines beispielhaften Verfahrens zum Einstellen eines Timeout-Werts eines adaptiven Timeout-Parameters und zum Starten von Hintergrund-Verwaltungsoperationen basierend auf dem Timeout-Wert des adaptiven Timeout-Parameters gemäß veranschaulichenden Umsetzungen.
    • 5 ist ein beispielhaftes Verfahren zum Bestimmen eines Timeout-Werts gemäß veranschaulichenden Umsetzungen.
    • 6 stellt ein beispielhaftes graphisches Diagramm dar, das die Beziehung zwischen der Dringlichkeit von Hintergrund-Verwaltungsoperationen und einem Timeout-Wert gemäß veranschaulichenden Umsetzungen darstellt.
    • 7 ist ein Flussdiagramm eines beispielhaften Verfahrens zum periodischen Aktualisieren eines Timeout-Werts gemäß veranschaulichenden Umsetzungen.
    • 8 zeigt ein beispielhaftes graphisches Diagramm zur Veranschaulichung zufällig erzeugter begrenzter Werte über einen Zeitraum hinweg gemäß veranschaulichenden Umsetzungen.
    • 9 zeigt ein beispielhaftes graphisches Diagramm, das eine Benutzungshistorie über einen Zeitraum hinweg gemäß veranschaulichenden Umsetzungen veranschaulicht.
  • Bei einer oder mehreren Implementierungen können nicht alle der dargestellten Komponenten in jeder Figur erforderlich sein, und eine oder mehrere Implementierungen können zusätzliche Komponenten einschließen, die in einer Figur nicht gezeigt sind. Variationen in der Anordnung und dem Typ der Komponenten können vorgenommen werden, ohne vom Umfang der vorliegenden Offenbarung abzuweichen. Zusätzliche Komponenten, unterschiedliche Komponenten oder weniger Komponenten können innerhalb des Umfangs der vorliegenden Offenbarung verwendet werden.
  • DETAILLIERTE BESCHREIBUNG
  • Die nachstehend dargelegte detaillierte Beschreibung ist als eine Beschreibung verschiedener Konfigurationen der vorliegenden Offenbarung gedacht und soll nicht die einzigen Konfigurationen darstellen, in denen die vorliegende Offenbarung in der Praxis umgesetzt werden kann. Die beigefügten Zeichnungen sind in dieses Dokument integriert und Bestandteil der detaillierten Beschreibung. Die detaillierte Beschreibung beinhaltet spezifische Details, um ein gründliches Verständnis der vorliegenden Offenbarung zu ermöglichen. Jedoch wird für Fachleute offensichtlich sein, dass die vorliegende Offenbarung ohne diese spezifischen Details in der Praxis umgesetzt werden kann. In einigen Fällen sind Strukturen und Komponenten in Blockdiagrammform gezeigt, um zu vermeiden, dass die Konzepte der vorliegenden Offenbarung unklar werden. Gleiche Komponenten sind zum leichteren Verständnis mit identischen Elementnummern gekennzeichnet.
  • Die vorliegende Beschreibung bezieht sich im Allgemeinen auf Datenspeichersysteme und Verfahren und insbesondere auf, zum Beispiel und ohne Einschränkung, Datenspeichersysteme und Verfahren für die optimierte Planung von Hintergrund-Verwaltungsoperationen. Die Leistung eines Datenspeichersystems kann auf der Grundlage des Stromverbrauchs und der Speicherlatenz des Datenspeichersystems gemessen werden. Der Stromverbrauch und die Speicherlatenz des Datenspeichersystems kann auf dem Betriebsverhalten der einen oder mehreren Vorrichtungen des Datenspeichersystems basieren, wie beispielsweise einer oder mehreren nichtflüchtigen Speichervorrichtungen des Datenspeichersystems. Um höhere Leistungsanforderungen eines Datenspeichersystems zu erfüllen, werden komplexere Vorrichtungsbetriebsmanagementpläne implementiert. Solche Managementpläne schließen im Allgemeinen verschiedene Verwaltungsoperationen ein. Um eine Verschlechterung der Leistungsfähigkeit des Datenspeichersystems zu reduzieren, können solche Verwaltungsoperationen als Hintergrund-Verwaltungsoperationen ausgeführt werden, üblicherweise dann, wenn sich ein Hostsystem, das betriebsfähig mit dem Datenspeichersystem gekoppelt ist, im Leerlauf befindet. In einigen Umsetzungsformen kann ein Datenspeichersystem, das mit einem Hostsystem gekoppelt ist, als ein Gesamtsystem bezeichnet werden. In einigen Umsetzungsformen kann sich ein Hostsystem im Leerlauf oder in einem Ruhezustand befinden, wenn das Hostsystem keine Befehle an das Speichersystem überträgt. Wenn ein Hostsystem Befehle an ein Speichersystem überträgt oder sendet, befindet sich das Hostsystem in einer Betriebsart mit hoher Leistung oder verwendet mehr aus dem Leistungsbudget eines Gesamtsystems als ein Datenspeichersystem. Somit kann eine Verzögerung beim Senden einer Antwort an das Hostsystem für den Befehl von dem Hostsystem bewirken, dass das Hostsystem mehr Leistung verbraucht und die Leistungsanforderungen des Gesamtsystems beeinträchtigt. Weiterhin kann, nachdem eine Hintergrundoperation eingeleitet wurde, diese mehrere Prozessorzyklen, Strom und andere Rechenressourcen bis zum Abschluss verbrauchen, was eine weitere Verzögerung aller Host-Befehle verursachen und infolgedessen die Reaktionszeit beeinträchtigen kann oder eine weitere Verzögerung beim Senden einer Antwort an das Hostsystem verursachen kann, wodurch die Speicherlatenz des Datenspeichersystems erhöht wird. Um daher Verzögerungen beim Senden von Antworten an das Hostsystem zu verringern, kann ein Speichersystem dazu eingerichtet sein, die Verarbeitung von Host-Befehlen gegenüber Hintergrund-Verwaltungsoperationen zu priorisieren.
  • Um sicherzustellen, dass die Verarbeitung der Host-Befehle priorisiert und nicht durch eine beliebige Hintergrund-Verwaltungsoperation verzögert oder gestört wird, kann ein Datenspeichersystem dazu eingerichtet sein, die Verarbeitung der Hintergrund-Verwaltungsoperationen (BKOPs) basierend auf einem Timeout-Parameter, der dazu eingerichtet ist einen Timeout-Wert zu speichern, einzuleiten. Der Timeout-Wert kann so eingerichtet sein, dass er eine bestimmte Zeitspanne beinhaltet, die das Datenspeichersystem warten kann, bevor irgendwelche Hintergrund-Verwaltungsoperationen eingeleitet werden. Die Dauer eines solchen Timeout-Werts kann so ausgewählt werden, dass die Zeitspanne, nachdem die Dauer des Timeout-Werts abgelaufen ist, eine Zeitspanne darstellt, in der die Wahrscheinlichkeit des Empfangens einer neuen Host-Befehls voraussichtlich gering ist. Solch ein Timeout-Wert ist jedoch ein konstanter Timeout-Wert und kann vorbestimmt werden, ohne irgendwelche aktuellen Betriebsbedingungen des Datenspeichersystems, die Nutzungshistorie des Datenspeichersystems durch das Hostsystem, irgendwelche gegenwärtigen Bedürfnisse des Durchführens irgendwelcher Hintergrund-Verwaltungsoperationen oder dergleichen zu berücksichtigen.
  • Wenn die Dauer der Zeitspanne, die durch den Timeout-Wert dargestellt ist, so zuverlässig ist, dass während dieser Timeoutperiode kein Host-Befehl empfangen wird, d.h. erfolgreich vorhersagt, dass die Wahrscheinlichkeit des Empfangens eines Host-Befehls während dieser Zeit gering ist, dann werden die Hintergrund-Verwaltungsoperationen (BKOPs) ohne Störung von oder Verursachen von Verzögerungen bei der Verarbeitung der Host-Befehle, wie in der 1 gezeigt, verarbeitet. Wie in 1 zu sehen ist, führt dies dazu, dass der Gesamtstromverbrauch des Systems für einen längeren Zeitraum niedrig oder minimal ist und die Speicherlatenzleistung des Datenspeichersystems nicht verschlechtert. Der Gesamtstromverbrauch des Systems, wie in 1 zu sehen, ist hoch, wenn Host-Befehle durch die Datenspeichereinrichtung ausgeführt werden bzw. ausgeführt werden sollen. Der Großteil des verbrauchten Stroms während der Ausführung der Host-Befehle bzw. während diese darauf warten, ausgeführt zu werden, kann aufgrund einer Verarbeitungseinheit, wie etwa einer zentralen Verarbeitungseinheit (CPU), eines Hostsystems, das auf den Empfang einer Antwort von dem Datenspeichersystem wartet, einer Anzeigevorrichtung des Hostsystems in einem Hochleistungsmodus während das Hostsystem auf den Empfang einer Antwort von dem Datenspeichersystem auf den Host-Befehl wartet, bzw. dergleichen, verursacht werden.
  • Darüber hinaus ist, wie in 1 zu sehen ist, der Gesamtstromverbrauch des Systems niedrig (z. B. um die 5 % des Leistungsbudgets des Systems), wenn die Hintergrund-Verwaltungsoperationen (BKOPs) verarbeitet werden, während keine Host-Befehle durch das Datenspeichersystem empfangen werden, und sie nicht darauf warten, durch das Datenspeichersystem ausgeführt zu werden. Der Gesamtstromverbrauch des Systems kann sogar noch geringer sein, wenn sich das Datenspeichersystem in einem Standby-Modus befindet, wie in 1 gezeigt. In einigen Umsetzungsformen kann ein Standby-Modus ein Zustand des Datenspeichersystems sein, wenn das Datenspeichersystem keine Host-Befehle erhält, keine Host-Befehle ausgeführt werden oder auf Ausführung warten, und es keine Hintergrund-Verwaltungsoperationen gibt, die ausgeführt werden oder auf Ausführung warten.
  • Wenn jedoch die Vorhersage (z. B. eine Vorhersage, dass Host-Befehle nicht empfangen werden oder eine geringe Wahrscheinlichkeit haben, während der durch den konstanten Timeout-Wert dargestellten Zeitperiode empfangen zu werden) nicht erfolgreich oder nicht genau ist, dann kann die Ausführung einer oder mehrerer Hintergrund-Verwaltungsoperationen die Verarbeitung von Host-Befehlen verzögern bzw. die Antwort auf die Verarbeitung der Host-Befehle verzögern. Dies kann zu einem größeren Stromverbrauch durch das Gesamtsystem für einen längeren Zeitraum führen, wie in 2 gezeigt. Zum Beispiel kann die Verzögerung bei der Verarbeitung der Host-Befehle bewirken, dass das Hostsystem in einem Hochleistungsmodus bleibt und nicht in einen Niedrigleistungsmodus zurückkehrt. Weiterhin kann die Verzögerung bei der Verarbeitung der Host-Befehle bzw. die Verzögerung bei der Bereitstellung einer Antwort an das Hostsystem bei der Verarbeitung der Host-Befehle die Speicherlatenz des Datenspeichersystems erhöhen und so die Leistung des Datenspeichersystems verringern bzw. zu einer schlechten Stomverbrauchsleistung führen. Darüber hinaus kann, selbst wenn ein solcher konstanter Timeout-Wert im Vorfeld als ausreichend großer Wert bestimmt wird, dass der Empfang von Host-Befehlen am wenigsten wahrscheinlich ist, die Verarbeitung der Hintergrund-Verwaltungsoperationen sehr kritisch werden, und die Nichtdurchführung von Hintergrund-Verwaltungsoperationen für eine so lange Zeit kann die Leistung des Datenspeichersystems beeinträchtigen. In solchen Situationen kann die Anzahl von Hintergrund-Verwaltungsoperationen, die durchgeführt werden sollen, ebenfalls zunehmen, was dazu führen kann, dass mehr Ressourcen des Datenspeichersystems für die Verarbeitung solcher Operationen verbraucht werden und die Leistung des Datenspeichersystems weiter verschlechtert wird.
  • Wenn darüber hinaus eine Hintergrund-Operation verarbeitet wird, wenn ein Host-Befehl empfangen wird, kann die Beendigung der Hintergrund-Operation zu weiteren Rechenzyklen oder Stromverbrauch durch das System führen, was den Stromverbrauch und Leistungsprobleme des Speichersystems weiter verschärft. Außerdem passt sich der konstante Timeout-Wert nicht an die Systemverwendung bzw. Betriebs- und Leistungsänderungen an. Daher kann eine genaue Vorhersage, wann die Host-Befehle unter Verwendung eines Timeout-Werts von dem Speichersystem empfangen werden können, zu einer Verbesserung der Speichersystemleistung führen, was den Gesamtstromverbrauch durch ein System, das ein Speichersystem und ein Hostsystem umfasst, verringert und ferner die Latenz des Speichersystems verringert. Zusätzliche Details der Bestimmung eines Timeout-Wertes werden unten und hierin ausführlich beschrieben.
  • 3 ist ein Blockdiagramm, das beispielhafte Komponenten eines Datenspeichersystems 100 gemäß einem oder mehreren Aspekten der gegenständlichen Technologie darstellt. Das Datenspeichersystem 100 schließt unter anderem die Steuerung 102, die Codier-/Decodier-Maschine 104, das Speichermedium 106 und das nichtflüchtige Speichervorrichtungs-Array 108 ein. Wie in 3 dargestellt, kann das Datenspeichersystem 100 mit einer Host-Vorrichtung 110 über die Host-Schnittstelle 112 verbunden sein.
  • Die Steuerung 102 kann mehrere interne Komponenten (nicht gezeigt), wie einen oder mehrere Prozessoren 103, einen Nur-Lese-Speicher, eine nichtflüchtige Komponentenschnittstelle (beispielsweise einen Multiplexer zum Verwalten von Befehls- und Datentransport entlang einer Verbindung zu dem nichtflüchtigen Speichervorrichtungs-Array 108), eine E/A-Schnittstelle, eine Fehlerkorrekturschaltung und dergleichen, beinhalten. Ein Prozessor der Steuerung 102 kann den Betrieb der Komponenten in der Datenspeichersteuerung 102 überwachen und steuern. Der Prozessor und/oder die Steuerung 102 können ein Mehrkernprozessor, ein Allzweck-Mikroprozessor, ein Mikrocontroller, ein digitaler Signalprozessor (DSP), ein anwendungsspezifischer integrierter Schaltkreis (ASIC), eine anwenderprogrammierbare Gatteranordnung (Field Programmable Gate Array, FPGA), ein programmierbarer Logikbaustein (PLD), eine Steuerung, eine Zustandsmaschine, ein Logikgatter, einzelne Hardwarekomponenten oder eine Kombination der Vorstehenden sein. In einigen Implementierungen können eines oder mehrere Elemente der Steuerung 102 in einem einzelnen Chip integriert sein. In einigen Implementierungen können die Elemente in zwei oder mehr einzelnen Komponenten implementiert sein.
  • Die Steuerung 102 kann einen Code oder Anweisungen ausführen, um die hierin beschriebenen Operationen und Funktionen durchzuführen. Zum Beispiel kann die Steuerung 102 Operationen zum Verwalten von Anforderungsfluss- und Adressenabbildungen durchführen, Berechnungen durchführen und Befehle erzeugen. Eine oder mehrere Sequenzen von Anweisungen können als Firmware in Speicher in der Steuerung 102 gespeichert sein. Eine oder mehrere Sequenzen von Anweisungen können Software sein, die von dem Speichermedium 106 und dem nichtflüchtigen Speichervorrichtungs-Array 108 gespeichert und gelesen wird oder von der Host-Vorrichtung 110 empfangen wird (zum Beispiel über die Host-Schnittstelle 112). Das Speichermedium 106 und das nichtflüchtige Speichervorrichtungs-Array 108 beinhalten Beispiele von maschinen- oder computerlesbaren Medien, auf denen Anweisungen/Codes, die durch die Steuerung 102 ausführbar sind, gespeichert werden können. Die Begriffe maschinen- oder computerlesbare Medien können allgemein jedes materielle und nichtflüchtige Medium oder jeden Datenträger bezeichnen, das/der verwendet wird, um Anweisungen an die Steuerung 102 bereitzustellen, einschließlich sowohl flüchtiger Medien, wie beispielsweise einem dynamischen Speicher, der für Speichermedien oder für Puffer in der Steuerung 102 verwendet wird, als auch nichtflüchtige Medien, wie elektronische Medien, optische Medien und magnetische Medien. Die hierin beschriebenen Operationen und Funktionen können auch unter Verwendung zum Beispiel von logischen Schaltungen in Hardware oder einer Kombination von Hardware und Software/Firmware implementiert sein.
  • Nach einigen Aspekten stellt das Speichermedium 106 den flüchtigen Speicher dar, der zum temporären Speichern von Daten und Informationen verwendet wird, die dazu dienen, das Datenspeichersystem 100 zu verwalten. Nach Aspekten der vorliegenden Offenbarung ist das Speichermedium 106 ein Speicher mit wahlfreiem Zugriff (RAM), wie ein RAM mit doppelter Datenrate (DDR). Andere Typen von RAM können auch verwendet werden, um das Speichermedium 106 zu implementieren. Das Speichermedium 106 kann unter Verwendung eines einzelnen RAM-Moduls oder mehrerer RAM-Module implementiert werden. Während das Speichermedium 106 als von der Steuerung 102 verschieden dargestellt ist, versteht es sich, dass das Speichermedium 106 in die Steuerung 102 integriert sein kann, ohne vom Umfang der vorliegenden Offenbarung abzuweichen. Alternativ kann das Speichermedium 106 ein nichtflüchtiger Speicher sein, wie eine Magnetplatte, ein Flash-Speicher, ein Peripherie-SSD und dergleichen.
  • Die Host-Schnittstelle 112 kann mit der Host-Vorrichtung 110 gekoppelt werden, um Daten von der Host-Vorrichtung 110 zu empfangen und Daten an diese zu senden. Die Host-Schnittstelle 112 kann sowohl elektrische als auch physische Verbindungen enthalten, um die Host-Vorrichtung 110 betriebsmäßig mit der Steuerung 102 zu koppeln. Die Host-Schnittstelle 112 kann Daten, Adressen und Steuersignale zwischen der Host-Vorrichtung 110 und der Steuerung 102 kommunizieren. Auf diese Weise kann die Steuerung 102, als Reaktion auf einen Schreibbefehl von der Host-Vorrichtung 110, von der Host-Vorrichtung 110 empfangene Daten im nichtflüchtigen Speichervorrichtungs-Array 108 speichern und im nichtflüchtigen Speichervorrichtungs-Array 108 gespeicherte Daten lesen und die gelesenen Daten, als Reaktion auf einen Lesebefehl von der Host-Vorrichtung 110, über die Host-Schnittstelle 112 an die Host-Vorrichtung 110 übertragen.
  • Host-Vorrichtung 110 stellt jede Vorrichtung dar, die mit dem Datenspeichersystem 100 gekoppelt werden kann und Daten in dem Datenspeichersystem 100 speichert. Die Host-Vorrichtung 110 kann ein Rechensystem, wie ein Personalcomputer, ein Server, eine Workstation, ein Laptop-Computer, ein PDA, ein Smartphone und dergleichen, sein. Alternativ kann die Host-Vorrichtung 110 eine elektronische Vorrichtung, wie eine Digitalkamera, ein digitaler Audioplayer, ein digitaler Videorecorder und dergleichen, sein.
  • Wie ferner in 3 dargestellt, können die Host-Vorrichtung 110 und das Datenspeichersystem 100 über einen Bus 114 miteinander kommunizieren. Der Bus kann geeignete Schnittstellenstandards verwenden, einschließlich, aber nicht beschränkt auf: Serial Advanced Technology Attachment (SATA), Advanced Technology Attachment (ATA), Small Computer System Interface (SCSI), PCI-extended (PCI-X), Fiber-Channel-Technologie, Serial Attached SCSI (SAS), Secure Digital (SD), Embedded Multi-Media Card (EMMC), Universal Flash Storage (UFS) und Peripheral Component Interconnect Express (PCle). Gemäß einigen Aspekten kann das Datenspeichersystem 100 Stifte (oder eine Buchse) einschließen, um sich mit einer entsprechenden Buchse (oder Stiften) auf der Host-Vorrichtung 110 zu verbinden, um eine elektrische und physikalische Verbindung herzustellen.
  • Die Steuerung kann einen internen Systembus 115 einschließen. Der Systembus 115 kann eine Kombination aus einem Steuerbus, Adressbus und Datenbus einschließen und die Komponenten der Steuerung 102 (z. B. einen darin befindlichen Prozessor und/oder Speicher) mit anderen Komponenten des Datenspeichersystems 100 verbinden, einschließlich der Kodier-/Dekodier-Maschine 104, des Speichermediums 106, des nichtflüchtigen Speichervorrichtungs-Arrays 108 und der Host-Schnittstelle 112. Daten werden zwischen den verschiedenen Komponenten über den Systembus 115 übertragen. Der Systembus 115 kann sich teilweise außerhalb und teilweise innerhalb der Steuerung 102 befinden.
  • Die Host-Vorrichtung 110 und das Datenspeichersystem 100 können über eine verdrahtete oder drahtlose Verbindung miteinander kommunizieren und können lokal oder entfernt voneinander sein. Nach einem oder mehreren anderen Aspekten beinhaltet das Datenspeichersystem 100 (oder die Host-Schnittstelle 112) einen drahtlosen Transceiver, um das Host-Gerät 110 und das Datenspeichersystem 100 in drahtlose Kommunikation miteinander zu bringen.
  • Die Steuerung 102 kann Daten und/oder Speicherzugriffsbefehle von einem Speicherschnittstellenmodul 116 (z. B. einem Gerätetreiber) der Host-Vorrichtung 110 empfangen. Von der Speicherschnittstelle 116 kommunizierte Speicherzugriffsbefehle können von dem Host-System 110 ausgegebene Schreib- und Lesebefehle beinhalten. Lese- und Schreibbefehle können eine logische Adresse (z. B. logische Blockadressen oder LBAs) vorgeben, die verwendet wird, um auf Daten zuzugreifen, die in dem Datenspeichersystem 100 gespeichert sind. Die Steuerung 102 kann Befehle in dem nichtflüchtigen Speichervorrichtungs-Array 108 als Reaktion auf Befehle ausführen, die von dem Speicherschnittstellenmodul 116 empfangen werden.
  • Das nichtflüchtige Speichervorrichtungs-Array 108 kann mehrere nichtflüchtige Speichervorrichtungen 118 einschließen. Eine nichtflüchtige Speichervorrichtung 118 stellt eine nichtflüchtige Speichervorrichtung zum Speichern von Daten dar. Gemäß Aspekten der vorliegenden Technologie schließt die nichtflüchtige Speichervorrichtung 118 beispielsweise einen NAND-Flash-Speicher ein. Jede nichtflüchtige Speichervorrichtung 118 kann einen einzelnen nichtflüchtigen Speicherchip oder ein -Modul beinhalten, oder sie kann mehrere nichtflüchtige Speicherchips oder -Module beinhalten. Zum Beispiel können in einem nichtflüchtigen Speichervorrichtungs-Array 108 einige der nichtflüchtigen Speichervorrichtungen 118 ein nichtflüchtiges Modul aufweisen, während andere mehr als ein nichtflüchtiges Modul aufweisen können. Die nichtflüchtige Speichervorrichtung 118 ist nicht auf irgendeine bestimmte Kapazität oder Konfiguration beschränkt. Zum Beispiel können die Anzahl physischer Blöcke, die Anzahl physischer Seiten pro physischem Block, die Anzahl von Sektoren pro physischer Seite und die Größe der Sektoren innerhalb des Umfangs der vorliegenden Technologie variieren.
  • Die nichtflüchtigen Speichervorrichtungen 118 können in mehreren Kanälen angeordnet sein, wobei jeder Kanal eine oder mehrere nichtflüchtige Speichervorrichtungen 118 aufweist. Eine nichtflüchtige Speichervorrichtung 118 kann eine oder mehrere nichtflüchtige Speicherschnittstellen (nicht dargestellt) einschließen. Jede nichtflüchtige Speicherschnittstelle verbindet die Steuerung 102 über einen entsprechenden Kanal mit einer der nichtflüchtigen Speichervorrichtungen. Jeder der Kanäle (nicht dargestellt) kann unter Verwendung von einem oder mehreren physischen E/A-Bussen implementiert werden, die zwischen einer der nichtflüchtigen Speicherschnittstellen und der/den entsprechenden nichtflüchtigen Vorrichtung(en) gekoppelt sind. Jeder Kanal ermöglicht der entsprechenden nichtflüchtigen Speicherschnittstelle, Lese-, Schreib- und/oder Löschbefehle an die entsprechende nichtflüchtige(n) Speichervorrichtung(en) zu senden. Jede nichtflüchtige Speicherschnittstelle kann ein Register (z. B. ein First-In-First-Out- (FIFO) -Register) beinhalten, das Lese-, Schreib- und/oder Löschbefehle von der Steuerung 102 für die entsprechende nichtflüchtige Speichervorrichtung in einer Warteschlange anordnet. Obwohl sich der Begriff „Kanal“, wie vorstehend verwendet, auf den Bus bezieht, der zwischen einer nichtflüchtigen Speicherschnittstelle und der entsprechenden nichtflüchtigen Speichervorrichtung gekoppelt ist, kann sich der Begriff „Kanal“ auch auf die entsprechende nichtflüchtige Speichervorrichtung beziehen, die durch einen Bus (z. B. den Systembus 115) adressierbar ist.
  • Die nichtflüchtige Speichervorrichtung 118 kann über eine Standardschnittstellenspezifikation verfügen. Dieser Standard stellt sicher, dass Chips von mehreren Herstellern austauschbar verwendet werden können. Die Schnittstelle der nichtflüchtigen Speichervorrichtung 118 kann verwendet werden, um auf interne Register 120 und eine interne nichtflüchtige Steuerung 122 zuzugreifen. Bei einigen Implementierungen können die Register 120 Adress-, Befehls- und/oder Datenregister einschließen, die intern die notwendigen Daten zu und von einem NAND-Speicherzellen-Array 124 abrufen und ausgeben. Beispielsweise kann das Speicherzellen-Array 124 einen Single-Level-Cell-(SLC)-Speicher, einen Multi-Level-Cell-(MLC)-Speicher, eine Three-Level-Cell-(TLC)-Speichervorrichtung usw. aufweisen. In einigen Aspekten kann das nichtflüchtige Speichervorrichtungs-Array 108 eine oder mehrere Hybridspeichervorrichtungen aufweisen, die in einem oder mehreren von einem SLC-, MLC- oder TLC-Modus arbeiten können. Andere Typen von nichtflüchtigen Speichern, wie etwa 3D-NAND-Flash-Speicher, werden in der vorliegenden Technologie ebenfalls in Betracht gezogen.
  • Ein Datenregister (z. B. von Registern 120) kann Daten, die in dem Speicherzellen-Array 124 gespeichert werden sollen, oder Daten nach einem Abruf aus dem Speicherzellen-Array 124 beinhalten und kann außerdem zur temporären Datenspeicherung verwendet werden und/oder wie ein Puffer wirken. Ein Adressenregister kann die Speicheradresse speichern, von der Daten an die Host-Vorrichtung 110 abgerufen werden, oder die Adresse, an die Daten gesendet und gespeichert werden. Nach einigen Aspekten ist ein Befehlsregister enthalten, um die Parität, die Unterbrechungssteuerung und dergleichen zu steuern. Nach einigen Aspekten ist die interne nichtflüchtige Speichersteuerung 122 über ein Steuerregister zugänglich, um das allgemeine Verhalten der nichtflüchtigen Speichervorrichtung 118 zu steuern. Die interne nichtflüchtige Steuerung 122 und/oder das Steuerregister können die Anzahl von Stoppbits, die Wortlänge, die Empfänger-Taktquelle steuern und können außerdem das Umschalten des Adressiermodus, der Paging-Steuerung, der Coprozessorsteuerung und dergleichen steuern.
  • Die Kodier-/Dekodier-Maschine 104 stellt eine oder mehrere Komponenten dar, die Codewörter kodieren und/oder dekodieren können, die in dem nichtflüchtigen Speichervorrichtungs-Array 108 gespeichert und/oder aus diesem gelesen werden sollen. Die Kodier-/Dekodier-Maschine 104 kann einen Kodierer und einen Dekodierer einschließen. Der Decodierer kann einen harten Decodierer und einen Soft-Decision-ECC-Decodierer einschließen. Die Kodier-/Dekodier-Maschine 104 kann die von der Host-Vorrichtung 110 empfangenen Daten in Codewörter kodieren und Codewörter aus der nichtflüchtigen Speichervorrichtung 118 vor dem Senden der dekodierten Daten an den Host dekodieren. Bei einigen Implementierungen kann die Kodier-/Dekodier-Maschine 104 eine oder mehrere Speichervorrichtung(en) und/oder eine oder mehrere Verarbeitungseinheit(en) aufweisen, die verwendet werden, um eine Fehlerkorrektur durchzuführen (z. B. unter Verwendung von LDPC, BCH oder Turbo-Codes). Die Kodier-/Dekodier-Maschine 104 kann auch ein unspezifisches Informationsmodul beinhalten, das unspezifische metrische Eingaben für Kodier- und Dekodierungsoperationen bestimmt und/oder beibehält. Obwohl die Kodier-/Dekodier-Maschine 104 als von der Steuerung 102 verschieden dargestellt ist, versteht es sich, dass die Kodier-/Dekodier-Maschine 104 in die Steuerung 102 integriert sein kann, ohne vom Umfang der vorliegenden Offenbarung abzuweichen.
  • Wie oben beschrieben, kann die Steuerung 102 zum Aktualisieren oder Setzen eines Timeout-Werts eines adaptiven Timeout-Parameters statt mit einem statischen oder konstanten Timeout-Wert zur Verbesserung der Genauigkeit der Vorhersage des Zeitpunkts, wann ein Host-Befehl von einem Hostsystem von einem Datenspeichersystem empfangen werden kann, eingerichtet sein. Nun Bezug nehmend auf 4 ist dort ein Flussdiagramm gezeigt, das einen Prozess des Aktualisierens oder Einstellens eines Timeout-Werts eines adaptiven Timeout-Parameters und des Startens von Hintergrund-Verwaltungsoperationen basierend auf dem Timeout-Wert des adaptiven Timeout-Parameters veranschaulicht. Um ein klares Beispiel zu veranschaulichen, werden Komponenten des Datenspeichersystems 100, die mit Bezug auf 3 gezeigt und beschrieben sind, verwendet, um den Prozess des Aktualisierens oder Einstellens eines Timeout-Werts eines adaptiven Timeout-Parameters und des Startens von Hintergrund-Verwaltungsoperationen basierend auf dem Timeout-Wert des adaptiven Timeout-Parameters zu beschreiben.
  • Das Verfahren 400 schließt den Abschluss der Ausführung eines Host-Befehls durch ein Datenspeichersystem wie dem Datenspeichersystem 100 (in Block 401) ein. Die Steuerung, wie etwa die Steuerung 102 des Datenspeichersystems, kann eingerichtet sein, um die Host-Befehle zu verarbeiten, die von einem Hostsystem empfangen werden, das kommunikativ mit dem Datenspeichersystem 100 gekoppelt ist. In einigen Umsetzungsformen kann die Steuerung 102 dazu eingerichtet sein, zu bestimmen, ob die Ausführung von Host-Befehlen noch abgeschlossen werden oder eingeleitet werden soll. In einigen Umsetzungsformen kann die Steuerung 102 dazu eingerichtet sein, um eine Eingabe zu empfangen, die anzeigt, ob noch Host-Befehle abzuschließen oder einzuleiten sind, und die Steuerung 102 kann dazu eingerichtet sein, um zu bestimmen, ob Host-Befehle vorhanden sind, die basierend auf der empfangenen Eingabe noch abzuschließen oder einzuleiten sind.
  • Die Steuerung 102 setzt einen Timeout-Wert eines adaptiven Timeout-Parameters (Block 402). Die Steuerung 102 kann eingerichtet sein, um einen Timeout-Wert basierend auf einem bestimmten Timeout-Wert einzustellen. Die Steuerung 102 kann eingerichtet sein, um einen Timeout-Wert basierend auf einem oder mehreren Faktoren zu bestimmen. Beispiele solcher Faktoren schließen ein, sind aber nicht begrenzt auf, die Schwere der Kritikalitätsstufe der Hintergrund-Verwaltungsoperationen, einen zufällig erzeugter variabler Wert, die Ausgabe eines maschinenerlernten Modells, das eine Wahrscheinlichkeit des Empfangens eines Host-Befehls angibt und dergleichen. Beispiele von Hintergrund-Verwaltungsoperationen schließen ein, sind aber nicht begrenzt auf, eine Read-Scrub-Operation, die durchgeführt wird, um eines oder mehrere Codeworte mit einer hohen Bitfehlerrate (BER) von einem physikalischen Ort in einer nichtflüchtigen Speichervorrichtung an einen neuen physikalischen Ort in der nichtflüchtigen Speichervorrichtung zu übertragen. Andere Beispiele von Hintergrund-Verwaltungsoperationen schließen ein, sind aber nicht begrenzt auf, Schwellenkalibrierungsoperationen zum Auffinden der optimalen Lesespannungen für einen oder mehrere Blöcke einer nichtflüchtigen Speichervorrichtung. In einigen Umsetzungsformen kann die Steuerung 102 dazu eingerichtet sein, einen Timeout-Wert aufgrund von einem oder mehreren der verschiedenen Faktoren zu bestimmen. Beispielsweise kann in einigen Umsetzungsformen die Steuerung 102 dazu eingerichtet sein, einen Timeout-Wert basierend auf Kritikalitätsstufen der Hintergrund-Verwaltungsoperationen bzw. einem zufällig erzeugten variablen Wert zu bestimmen. Ebenso kann in einigen Umsetzungsformen die Steuerung 102 zum Bestimmen eines Timeout-Werts basierend auf einem zufällig erzeugten variablen Wert bzw. einer Ausgabe eines maschinenerlernten Modells eingerichtet sein, wobei das Modell eine Wahrscheinlichkeit für das Empfangen eines Host-Befehls angibt. In einigen Umsetzungsformen kann die Steuerung 102 dazu eingerichtet sein, um einen Timeout-Wert basierend auf Kritikalitätsstufen der Hintergrund-Verwaltungsoperationen bzw. einer Ausgabe eines maschinenerlernten Modells zu bestimmen, das eine Wahrscheinlichkeit des Empfangens eines Host-Befehls angibt. In einigen Umsetzungsformen kann die Steuerung 102 dazu eingerichtet sein, um einen Timeout-Wert basierend auf Kritikalitätsstufen der Hintergrund-Verwaltungsoperationen, einem zufällig erzeugten variablen Wert bzw. einer Ausgabe eines maschinenerlernten Modells, das die Wahrscheinlichkeit des Empfangens eines/r Host-Befehls/-Operation anzeigt, zu bestimmen. Bei einem oder mehreren Beispielen kann ein Timeout-Wert ein Timeout-Wert eines adaptiven Timeout-Parameters sein. Zusätzliche Details zur Bestimmung eines Timeout-Werts werden hierin unter Bezugnahme auf die 5, 6, 7, 8 und 9 beschrieben.
  • Die Steuerung 102 bestimmt, ob das Datenspeichersystem 100 neue Host-Befehle von einem Hostsystem, wie etwa dem Hostsystem 110 (in Block 403), empfangen hat. Wenn der Steuerung 102 bestimmt, dass ein neuer Host-Befehl empfangen wurde („YES“ bei Block 403), fährt das Verfahren 400 mit Block 401 fort, und das Datenspeichersystem 100 leitet die Ausführung der empfangenen Host-Befehle ein bzw. schließt sie ab. In einigen Umsetzungsformen kann jedem/r der Host-Befehle und der Hintergrund-Verwaltungsoperationen eine Prioritätsstufe zugeordnet sein. In einigen Umsetzungsformen kann eine Priorität eines Host-Befehls höher sein als eine Prioritätsstufe der Hintergrund-Verwaltungsoperationen. Wenn die Steuerung 102 bestimmt, dass kein neuer Host-Befehl empfangen wird („NO“ bei Block 403), fährt das Verfahren 400 mit Block 404 fort. Die Steuerung 102 bestimmt ob ein Zeitgeberwert den Timeout-Wert erfüllt (Block 404). In einigen Umsetzungsformen kann ein Zeitgeberwert der Wert eines Zählers sein, der dazu eingerichtet ist, eine Zeitspanne zu speichern, die seit dem Einstellen des Timeout-Werts des adaptiven Timeout-Parameters abgelaufen ist. Die Steuerung 102 kann eingerichtet sein, um den Zeitgeberwert regelmäßig zu aktualisieren. Die Frequenz oder Periode, bei welcher der Zeitgeberwert aktualisiert wird (z. B. erhöht, verringert), kann auf einer Taktrate bzw. einem Taktsignal des Datenspeichersystems 100 basieren. Zum Beispiel kann der Zeitgeberwert auf einer ansteigenden oder abfallenden Flanke eines Taktsignals aktualisiert werden.
  • Die Steuerung 102 kann eingerichtet sein, um basierend auf einem Vergleich des Zeitgeberwerts mit dem Timeout-Wert zu bestimmen, ob der Zeitgeberwert den Timeout-Wert erfüllt. In einigen Umsetzungsformen kann die Steuerung 102 zum Initialisieren des Zeitgeberwerts auf Null und zur regelmäßigen Erhöhung des Zeitgeberwerts eingerichtet sein, und die Steuerung 102 kann bestimmen, dass der Zeitgeberwert den Timeout-Wert erfüllt, wenn der Zeitgeberwert gleich oder größer ist als der Timeout-Wert. In einigen Umsetzungsformen kann die Steuerung 102 zum Initialisieren des Zeitgeberwerts auf Null und zur regelmäßigen Verringerung des Zeitgeberwerts eingerichtet sein, und die Steuerung 102 kann bestimmen, dass der Zeitgeberwert den Timeout-Wert erfüllt, wenn der Zeitgeberwert kleiner oder gleich dem Timeout-Wert ist.
  • In einigen Umsetzungsformen kann die Steuerung 102 eingerichtet sein, um zu bestimmen, dass ein Zeitgeberwert den Timeout-Wert erfüllt, wenn der Timeout-Wert des adaptiven Timeout-Parameters abläuft. Die Steuerung 102 kann dazu eingerichtet sein, um zu bestimmen, dass der Timeout-Wert abgelaufen ist, wenn der Timeout-Wert gleich Null ist. In einigen Umsetzungsformen kann die Steuerung 102 dazu eingerichtet sein, regelmäßig den Timeout-Wert des adaptiven Timeout-Parameters zu verringern, bis der Timeout-Wert gleich Null ist, und zu bestimmen, dass der Timeout-Wert abgelaufen ist, wenn der Timeout-Wert gleich Null ist. Die Steuerung 102 kann so eingerichtet sein, dass sie den Timeout-Wert bei einer Frequenz oder Periode basierend auf einer Taktrate bzw. einem Taktsignal des Datenspeichersystems 100 gleichermaßen verringert, wie etwa bei einer ansteigenden oder abfallenden Flanke eines Taktsignals.
  • Wenn die Steuerung 102 bestimmt, dass der Zeitgeberwert den Timeout-Wert („NO“ bei Block 404) nicht erfüllt, dann setzt das Verfahren 400 mit Block 403 fort. Wenn die Steuerung 102 bestimmt, dass der Zeitgeberwert den Timeout-Wert erfüllt („JA“ bei Block 404), fährt das Verfahren 400 mit Block 405 fort. Die Steuerung 102 startet oder initiiert eine oder mehrere Hintergrund-Verwaltungsoperationen (Block 405).
  • Wenden wir uns nun 5 zu, wo ein Prozess zum Bestimmen eines Timeout-Werts eines adaptiven Timeout-Parameters gezeigt ist. Wie oben beschrieben setzt die Steuerung 102 einen Timeout-Wert basierend auf einem bestimmten Timeout-Wert ein. Zum Zweck der Veranschaulichung eines klar verständlichen Beispiels werden Komponenten des Datenspeichersystems 100, die in Bezug auf 3 gezeigt und beschrieben wurden, dafür verwendet, den Prozess des Bestimmens eines Timeout-Werts eines adaptiven Timeout-Parameters zu beschreiben.
  • Das Verfahren 500 schließt das Bestimmen eines Timeout-Werts eines adaptiven Timeout-Parameters (Block 501) ein. Wie oben beschrieben, kann die Steuerung 102 zum Bestimmen des Timeout-Werts des adaptiven Timeout-Parameters basierend auf einem oder mehreren Faktoren eingerichtet sein, wie dem Schweregrad der Kritikalitätsstufe der Hintergrund-Verwaltungsoperationen (Block 502a), eines statistisch erzeugten variablen Werts (Block 502b), der Ausgabe eines maschinenerlernten Modells, das eine Wahrscheinlichkeit des Empfangens eines Host-Befehls (Block 502c) angibt und dergleichen. Wie oben beschrieben, kann in einigen Umsetzungsformen die Steuerung 102 basierend auf einer Kombination des einen oder der mehreren obigen Faktoren eingerichtet sein.
  • Die Steuerung 102 kann zum Bestimmen eines Timeout-Werts basierend auf dem Schweregrad der Kritikalitätsstufen der Hintergrund-Verwaltungsoperationen (Block 502a) eingerichtet sein. Die Steuerung 102 kann dazu eingerichtet sein, um den Schweregrad der Kritikalitätsstufen der Hintergrund-Verwaltungsoperationen basierend auf einem oder mehreren Faktoren zu bestimmen. Beispiele von Faktoren schließen ein, sind aber nicht begrenzt auf, die Anzahl von Hintergrund-Verwaltungsoperationen, die verarbeitet werden müssen, die Dringlichkeit der Hintergrund-Verwaltungsoperationen, die Art der Hintergrund-Verwaltungsoperationen und dergleichen. Die Steuerung 102 kann eingerichtet sein, um die Anzahl von zu verarbeitenden Hintergrund-Verwaltungsoperationen basierend auf einem oder mehreren Faktoren zu bestimmen, wie zum Beispiel der Nutzung des Speichersystems, Arten von Host-Befehlen, Betriebsumgebungsfaktoren, Spannungsereignisse des Speichersystems. In einigen Umsetzungsformen kann die Steuerung 102 eingerichtet sein, um die Nutzung des Speichersystems basierend auf der Bestimmung der Anzahl von Host-Befehlen, die innerhalb einer bestimmten Zeit verarbeitet werden, zu bestimmen. In einigen Umsetzungsformen kann die Steuerung 102 zum Bestimmen eines numerischen Gewichts oder Rangs basierend auf einem Satz von Regeln eingerichtet sein, die ein bestimmtes Gewicht oder einen Rang für eine unterschiedliche Anzahl von Host-Befehlen spezifizieren, die innerhalb der bestimmten Zeit verarbeitet werden. In einigen Umsetzungsformen kann der Satz von Regeln ein bestimmtes Gewicht oder einen Rang für unterschiedliche Bereiche der Host-Befehle spezifizieren, die innerhalb einer bestimmten Zeit verarbeitet werden. Beispielsweise kann der Satz von Regeln ein bestimmtes Gewicht oder einen Rang spezifizieren, wenn die Anzahl von Host-Befehlen, die innerhalb der letzten dreißig Minuten verarbeitet wurden, zwischen einschließlich zehn und neunzehn liegt und der Satz von Regeln kann ein anderes Gewicht oder einen Rang spezifizieren, wenn die Anzahl von Host-Befehlen, die innerhalb der letzten dreißig Minuten verarbeitet wurden, zwischen einschließlich zwanzig und neunundzwanzig beträgt.
  • Wie oben beschrieben, kann die Steuerung 102 dazu eingerichtet sein, die Anzahl von Hintergrund-Verwaltungsoperationen, die verarbeitet werden müssen auf der Grundlage der Art der verarbeiteten Host-Befehle zu bestimmen. Beispiele von Arten von Host-Befehlen schließen Datenlesebefehle, Datenschreibbefehle, logische Adressenschemata und dergleichen ein, sind aber nicht darauf begrenzt. In einigen Umsetzungsformen kann ein Satz von Regeln ein bestimmtes Gewicht oder einen bestimmten Rang für verschiedene Host-Befehle spezifizieren, die verarbeitet worden sind. Zum Beispiel kann der Satz von Regeln spezifizieren, dass einem Datenlesebefehl ein bestimmtes Gewicht oder ein Rang zugeordnet ist, einem Datenschreibbefehl ein anderes Gewicht oder ein anderer Rang zugeordnet ist, und einer anderen Art von Host-Befehl noch ein weiteres Gewicht oder ein Rang zugeordnet ist. Die Steuerung 102 kann eingerichtet sein, um auf der Basis der Art von Host-Befehlen, die verarbeitet wurden, und des Satzes von Regeln ein bestimmtes Gewicht oder einen bestimmten Rang zuzuweisen. In einigen Umsetzungsformen kann die Steuerung 102 mit einem oder mehreren erlernten Algorithmen eingerichtet sein, die ein bestimmtes Gewicht oder einen Rang basierend auf der Anzahl von jeder Art von verarbeiteten Host-Befehlen spezifizieren.
  • Die Steuerung 102 kann eingerichtet sein, um Änderungen in den Werten der Betriebsumgebungsparameter zu bestimmen und die Anzahl von Hintergrund-Verwaltungsoperationen, die verarbeitet werden müssen, basierend auf den Änderungen in den Werten der Betriebsumgebungsparameter zu bestimmen. Beispiele der Betriebsumgebungsparameter schließen Parameter in Bezug auf die Betriebstemperaturen des Speichersystems, Umgebungstemperaturen von Speichersystemen und dergleichen ein, sind aber nicht darauf begrenzt. Bei einigen Umsetzungsformen kann die Steuerung 102 dazu eingerichtet sein, um zu bestimmen, ob die Werte der Betriebsumgebungsparameter oder die bestimmten Änderungen in den Werten der Betriebsumgebungsparameter einen oder mehrere Schwellenwerte erfüllen, und die Steuerung 102 kann dazu eingerichtet sein, um die Anzahl von Hintergrund-Verwaltungsoperation basierend darauf zu bestimmen, ob die Werte der Betriebsumgebungsparameter einen oder mehrere Schwellenwerte erfüllen. Weiterhin kann, wie oben beschrieben, die Steuerung 102 zum Bestimmen der Anzahl von zu verarbeitenden Hintergrund-Verwaltungsoperationen auf der Grundlage von Spannungsereignissen in dem Speichersystem eingerichtet sein. Beispiele von Spannungsereignissen können den Stromverbrauch des Speichersystems, Änderungen der Spannungen und dergleichen einschließen, sind aber nicht darauf beschränkt. In einigen Umsetzungsformen kann die Steuerung 102 dazu eingerichtet sein, um verschiedene Spannungsereignisse, die dem Speichersystem widerfahren, zu identifizieren und die Spannungsereignisse über einen Zeitraum zu verfolgen.
  • Wie oben beschrieben, kann die Steuerung 102 dazu eingerichtet sein, um Kritikalitätsstufen der Hintergrund-Verwaltungsoperationen basierend auf der Dringlichkeit der Hintergrund-Verwaltungsoperationen zu bestimmen. Die Steuerung 102 kann dazu eingerichtet sein, eine Dringlichkeitsstufe oder -stufen für eine oder mehrere der Hintergrund-Verwaltungsoperationen auf der Basis einer Analyse von Daten von bestimmten Parametern von bzw. Daten bezüglich der Operation bzw. der Verwaltung des Datenspeichersystems 100 zu bestimmen. Beispiele solcher Parameter oder Daten schließen die Fehlerrate der Datenspeichereinrichtung 100 oder die Fehlerrate einer oder mehrerer nichtflüchtiger Speichervorrichtungen oder Komponenten, wie dem nichtflüchtigen Speicher 118, datenbezogene Dichtewerte oder Füllstand von einem oder mehreren nichtflüchtigen Speichervorrichtungen 118, Daten in Bezug auf den Verschleißausgleich, Daten in Bezug auf eine Anzahl der Blöcke, deren Daten eventuell zu verlagern sind, ein, sind jedoch nicht darauf beschränkt.
  • In einigen Umsetzungsformen kann die Steuerung 102 eingerichtet sein, um zu bestimmen, ob eine Bitfehlerrate (BER) einer oder mehrerer nichtflüchtiger Speichervorrichtungen, wie der nichtflüchtigen Speichervorrichtung 118, einen Schwellenwert erfüllt, und, basierend auf dieser Bestimmung, eine Dringlichkeitsstufe für eine oder mehrere Hintergrund-Verwaltungsoperationen zu bestimmen und einen Timeout-Wert für den adaptiven Timeout-Parameter basierend auf der ermittelten Dringlichkeitsstufe zu bestimmen. Wenn zum Beispiel die Steuerung 102 bestimmt, dass der BER von einem oder mehreren nichtflüchtigen Speichervorrichtungen 118 größer oder gleich einem Schwellenwert BER ist, so bestimmt die Steuerung 102 eine hohe Dringlichkeitsstufe für bzw. Zuordnung der hohen Dringlichkeitsstufe zu eine(r) oder mehrere(n) Hintergrund-Verwaltungsoperationen. In einigen Umsetzungen kann die Steuerung 102 zum Bestimmen eines Füllstands einer oder mehrerer nichtflüchtigen Speichervorrichtungen eingerichtet sein, wie den der nichtflüchtigen Speichervorrichtungen 118, und zum Bestimmen einer Dringlichkeitsstufe für eine oder mehrere Hintergrund-Verwaltungsoperationen auf der Grundlage des Füllstands der einen oder der mehreren nichtflüchtigen Speichervorrichtungen 118. Wenn, zum Beispiel, die Steuerung 102 bestimmt, dass ein Füllstand einer nichtflüchtigen Speichervorrichtung 118 kleiner oder gleich einem Schwellenwert oder Wert ist, dann kann die Steuerung 102 dazu eingerichtet sein, für eine oder mehrere Hintergrund-Verwaltungsoperationen eine niedrige Dringlichkeitsstufe zu bestimmen und zuzuweisen. In einigen Umsetzungsformen kann die Steuerung 102 dazu eingerichtet sein, eine Dringlichkeitsstufe aufgrund von Daten in Bezug auf den Verschleißverlauf zu bestimmen bzw. zuzuordnen. Zum Beispiel kann die Steuerung 102 dazu eingerichtet sein zu bestimmen, ob der Verschleißverlauf einen Schwellenwert-Verschleißverlaufswert erfüllt, indem Daten in Bezug auf den Verschleißverlauf mit dem Schwellenwert-Verschleißverlaufswert verglichen werden und eine hohe Dringlichkeitsstufe bestimmt oder zugeordnet wird, wenn die Daten in Bezug auf den Verschleißverlauf über oder gleich dem Schwellenwert-Verschleißverlaufswert sind bzw. eine niedrige Dringlichkeitsstufe bestimmt oder zugeordnet wird, wenn die Daten in Bezug auf den Verschleißverlauf unter dem Schwellenwert-Verschleißverlaufswert liegen.
  • In einigen Umsetzungsformen kann die Steuerung 102 dazu eingerichtet sein, um verschiedene Dringlichkeitsstufen verschiedenen Hintergrund-Verwaltungsoperationen basierend auf einer Analyse verschiedener Parameter bzw. verschiedener Daten, die sich auf den Betrieb bzw. die Verwaltung des Datenspeichersystems 100 beziehen, zu bestimmen bzw. zuzuweisen. Die Steuerung 102 kann dazu eingerichtet sein, verschiedene Hintergrund-Verwaltungsoperationen für verschiedene Parameter bzw. Daten, die sich auf den Betrieb bzw. die Verwaltung des Datenspeichersystems 100 basierend auf einen Satz von Regeln beziehen, zu identifizieren, die eine oder mehrere Hintergrund-Verwaltungsoperationen für einen oder mehrere Parameter bzw. für Daten spezifizieren, die sich auf den Betrieb bzw. die Verwaltung des Datenspeichersystems 100 beziehen. Wenn, zum Beispiel, die BER eines oder mehrerer nichtflüchtigen Speichervorrichtungen 118 über oder gleich einem Schwellenwert ist, dann kann die Steuerung 102 für eine oder mehrere Hintergrund-Verwaltungsoperationen eine hohe Dringlichkeitsstufe bestimmen bzw. diese zuweisen, wie etwa Read-Scrub-Operationen eines oder mehrerer Blöcke des einen oder der mehreren nichtflüchtigen Speichervorrichtungen 118. Ebenso kann, wenn der Füllstand einer oder mehrerer nichtflüchtigen Speichervorrichtungen 118 über oder gleich einem Schwellenwert für den Füllstand ist, die Steuerung 102 für eine oder mehrere Hintergrund-Verwaltungsoperationen eine hohe Dringlichkeitsstufe bestimmen bzw. diese zuweisen, wie etwa Datenverlagerungsoperationen (z.B. Verlagerungsoperationen, die Daten von einem Single-Level-Zelle (SLC) in eine Multi-Level-Zelle (MLC) verlagern. Als weiteres Beispiel kann, wenn Verschleißausgleichsdaten größer oder gleich einem Schwellenwert-Verschleißausgleichswert sind, die Steuerung 102 für eine oder mehrere Hintergrund-Verwaltungsoperationen, wie etwa Operationen zum Kopieren von Daten aus Speicherblöcken mit hohen Program/Erase- (PE) Zyklen in Speicherblöcke mit niedrigen Program/Erase- (PE) Zyklen, eine hohe Dringlichkeitsstufe bestimmen bzw. diese zuweisen.
  • Die Steuerung 102 kann so eingerichtet sein, dass sie eine allgemeine Dringlichkeitsstufe für die Hintergrund-Verwaltungsoperationen basierend auf einer oder mehreren Dringlichkeitsstufen einer oder mehrerer Hintergrund-Verwaltungsoperationen bestimmt. In einigen Umsetzungsformen kann die Steuerung 102 zum Bestimmen der Gesamt-Dringlichkeitsstufe als einer hohen Dringlichkeitsstufe eingerichtet sein, wenn die Anzahl der einen oder mehreren Hintergrund-Verwaltungsoperationen mit einer hohen Dringlichkeitsstufe einem Schwellenwert entspricht (z.B. über oder gleich diesem ist). In einigen Umsetzungsformen kann die Steuerung 102 zum Bestimmen der Gesamt-Dringlichkeitsstufe als einer niedrigen Dringlichkeitsstufe eingerichtet sein, wenn die Anzahl der einen oder mehreren Hintergrund-Verwaltungsoperationen unter einem Schwellenwert liegt. In einigen Umsetzungsformen können die Dringlichkeitsstufen numerische Werte sein, und die Steuerung 102 kann zum Berechnen einer statistischen Messung basierend auf den Dringlichkeitsstufen einer oder mehrerer Hintergrund-Verwaltungsoperationen und zum Bestimmen einer Gesamt-Dringlichkeitsstufe für die Hintergrund-Verwaltungsoperationen aufgrund der statistischen Messung eingerichtet sein. Zum Beispiel kann die Steuerung 102 eine mittlere Dringlichkeitsstufe bezogen auf die Dringlichkeitsstufen einer oder mehrere Hintergrund-Verwaltungsoperationen berechnen und die Gesamt-Dringlichkeitsstufe aufgrund der durchschnittlichen Dringlichkeitsstufe (z.B. Gesamt-Dringlichkeitsstufe ist die durchschnittliche Dringlichkeitsstufe) bestimmen. In einigen Umsetzungsformen kann die Steuerung 102 dazu eingerichtet sein, um basierend auf dem numerischen Wert der Dringlichkeitsstufe zu bestimmen, ob eine Dringlichkeitsstufe hoch, mittel oder niedrig ist. Wenn zum Beispiel der numerische Wert der Dringlichkeitsstufe unter bzw. gleich einem Schwellenwert für eine niedrige Dringlichkeit ist, dann kann die Steuerung 102 bestimmen, dass die Dringlichkeitsstufe niedrig ist. Wenn als weiteres Beispiel der numerische Wert der Dringlichkeitsstufe oberhalb bzw. gleich einem Schwellenwert mittlerer Dringlichkeit und unterhalb eines Schwellenwerts hoher Dringlichkeit liegt, dann kann die Steuerung 102 bestimmen, dass die Dringlichkeitsstufe mittel ist. Wenn als weiteres Beispiel der numerische Wert der Dringlichkeitsstufe über bzw. gleich einem Schwellenwert für eine hohe Dringlichkeit ist, dann kann die Steuerung 102 bestimmen, dass die Dringlichkeitsstufe hoch ist.
  • Die Steuerung 102 bestimmt einen Timeout-Wert auf der Grundlage der Dringlichkeitsstufen der einen oder mehreren Hintergrund-Verwaltungsoperationen. Zum Beispiel kann die Steuerung 102 einen Timeout-Wert basierend auf der Gesamt-Dringlichkeitsstufe oder dem Wert der Gesamt-Dringlichkeitsstufe bestimmen. Die Steuerung 102 kann dazu eingerichtet sein, um einen Timeout-Wert invers zu der Dringlichkeitsstufe der einen oder mehreren Hintergrund-Verwaltungsoperationen zu bestimmen. In einigen Umsetzungsformen gilt: je höher die Dringlichkeitsstufe einer oder mehrerer Hintergrund-Verwaltungsoperationen bzw. je höher die Gesamt-Dringlichkeitsstufe ist, desto geringer ist der durch die Steuerung 102 bestimmte Timeout-Wert. Zum Beispiel kann, wie in 6 gezeigt, die Steuerung 102 einen Timeout-Wert 604 für eine Dringlichkeitsstufe 601, einen Timeout-Wert 605 für eine Dringlichkeitsstufe 602, einen Timeout-Wert 606 für eine Dringlichkeitsstufe 603 bestimmen.
  • Die Steuerung 102 kann dazu eingerichtet sein, regelmäßig die Daten bestimmter Parameter bzw. Daten in Bezug auf den Betrieb bzw. die Verwaltung des Datenspeichersystems 100 zu analysieren, und basierend auf der Analyse, regelmäßig die Dringlichkeitsstufen einer oder mehrerer Hintergrund-Verwaltungsoperationen bzw. die Gesamt-Dringlichkeitsstufe zu aktualisieren. Die Steuerung 102 kann eingerichtet sein, um regelmäßig den Timeout-Wert basierend auf Aktualisierungen der Dringlichkeitsstufen einer oder mehrerer Hintergrund-Verwaltungsoperationen bzw. die Gesamt-Dringlichkeitsstufe zu aktualisieren. Ein beispielhaftes Verfahren zum regelmäßigen Aktualisieren der Dringlichkeitsstufen und zum regelmäßigen Aktualisieren des Timeout-Werts ist in 7 gezeigt. Wie in 7 gezeigt, kann die Steuerung 102 dazu eingerichtet sein, um nach dem Bestimmen von Dringlichkeitsstufen (Block 701) eine bestimmte Zeitspanne zu warten. Für jede Hintergrund-Verwaltungsoperation kann die Steuerung 102 zum Bestimmen einer Dringlichkeitsstufe (Block 702) eingerichtet sein. Die Steuerung 102 kann eingerichtet sein, um die zuvor bestimmten Dringlichkeitsstufen mit den neu bestimmten Dringlichkeitsstufen zu aktualisieren. Die Steuerung 102 kann zum Aktualisieren des Timeout-Werts basierend auf der aktualisierten Dringlichkeitsstufe (Block 703) eingerichtet sein. In einigen Umsetzungsformen kann die Steuerung 102 dazu eingerichtet sein, um den Timeout-Wert basierend auf einer statistischen Messung (z. B. Durchschnitt) der aktualisierten Dringlichkeitsstufen zu aktualisieren.
  • Wie oben beschrieben kann die Steuerung 102 zum Bestimmen der Timeout-Werte des adaptiven Timeout-Parameters basierend auf einem zufällig erzeugten variablen Wert (Block 502b) eingerichtet sein. Die Steuerung 102 kann eingerichtet sein, um einen Zufallswert für den adaptiven Timeout-Parameter zu erzeugen. In einigen Umsetzungsformen kann die Steuerung 102 zum Erzeugen eines zufälligen Timeout-Werts innerhalb eines Bereichs von Timeout-Werten eingerichtet sein. Zum Beispiel kann die Steuerung 102 eingerichtet sein, um einen zufälligen Timeout-Wert zwischen einer unteren Grenze und einer oberen Grenze von Timeout-Werten zu bestimmen. Die Steuerung 102 kann dazu eingerichtet sein, um einen Zufallswert basierend auf einem aktuellen Timeout-Wert zu erzeugen. In einigen Umsetzungsformen kann die Steuerung 102 eingerichtet sein, um regelmäßig einen Zufalls-Timeout-Wert zu erzeugen und den Timeout-Wert des adaptiven Timeout-Parameters mit dem neu erzeugten Zufalls-Timeout-Wert zu aktualisieren. 8 veranschaulicht ein Beispiel eines zufälligen Timeout-Werts, der über einen bestimmten Zeitraum erzeugt wird. In einigen Umsetzungsformen kann die Steuerung 102 zum Bestimmen eines Timeout-Werts basierend auf der Kritikalitätsstufe der Hintergrund-Verwaltungsoperationen (Block 502a) und dem zufälligen Timeout-Wert eingerichtet sein. In einigen Umsetzungsformen kann die Steuerung 102 eingerichtet sein, um einen Timeout-Wert basierend auf Dringlichkeitsstufen der Hintergrund-Verwaltungsoperationen und dem erzeugten zufälligen Timeout-Wert zu bestimmen.
  • Die Steuerung 102 kann zum Bestimmen des Timeout-Werts des adaptiven Timeout-Parameters basierend auf einem maschinenerlernten Modell zum Bestimmen der Wahrscheinlichkeit des Empfangens eines Host-Befehls oder einer Operation (Block 502c) eingerichtet sein. Das maschinenerlernte Modell kann in dem Datenspeichersystem 100 enthalten sein. Zum Beispiel kann das maschinenerlernte Modell als ein Untermodul des Datenspeichersystems 100 enthalten sein, das der Steuerung 102 eine Eingabe bereitstellt. Das Maschinenerlernte kann trainiert und eingerichtet werden, um eine Wahrscheinlichkeit des Empfangens eines Host-Befehls basierend auf der Nutzungshistorie des Datenspeichersystems, wie etwa des Datenspeichersystems 100, zu bestimmen. 9 zeigt einen beispielhaften Graphen einer Nutzungshistorie eines Datenspeichersystems. In einigen Umsetzungsformen kann die Nutzungshistorie des Datenspeichersystems einen jüngsten Zeitraum umspannen (z. B. einen Zeitraum von 24 Stunden, die letzten 7, 30, 90, 180 Tage bzw. dergleichen).
  • Die Steuerung 102 kann eingerichtet sein, um den Timeout-Wert basierend auf einer Ausgabe des maschinenerlernten Modells zu bestimmen, das die Wahrscheinlichkeit des Empfangens eines Host-Befehls anzeigt. Die Ausgabe des maschinenerlernten Modells kann eine erwartete Zeitspanne spezifizieren, bevor der nächste Host-Befehl durch das Datenspeichersystem 100 empfangen wird. In einigen Umsetzungsformen wird ein solcher erwarteter Zeitraum als Leerlaufzeit bezeichnet, bevor ein Host-Befehl empfangen werden kann. Das maschinenerlernte Modell kann eingerichtet sein, um einen Bereich von Leerlaufzeitwerten basierend auf der Nutzungshistorie zu bestimmen. Das maschinenerlernte Modell kann eingerichtet sein, um den Bereich von Leerlaufzeitwerten in verschiedene Gruppen aufzuteilen, und basierend auf der Nutzungshistorie die Häufigkeit zu verfolgen, mit der die Leerlaufzeit innerhalb jeder der verschiedenen Gruppen auftritt, wobei ein Zähler für jede der verschiedenen Gruppen verwendet wird. Beispielsweise kann das maschinenerlernte Modell für einen Bereich von Leerlaufzeitwerten, die 0 Millisekunden bis zu 20 Millisekunden überspannen, den Bereich in sechs Gruppen unterteilen: 0 - 1000 Millisekunden als eine Gruppe, 1000 - 5000 Millisekunden als eine zweite Gruppe, 5000 - 10.000 Millisekunden als eine dritte Gruppe, 11.000 - 15.000 Millisekunden als eine vierte Gruppe, 15.000 - 20.000 Millisekunden als eine fünfte Gruppe und über 20.000 Millisekunden als eine sechste Gruppe. Fortfahrend mit dem Beispiel kann das maschinenerlernte Modell basierend auf der Nutzungshistorie die Anzahl von Malen, in der die Leerlaufzeit in jeder der sechs Gruppen unter Verwendung eines anderen Zählers für jede der verschiedenen sechs Gruppen auftritt, bestimmen. In einigen Umsetzungsformen kann das maschinenerlernte Modell so eingerichtet sein, dass es den Zähler jedes Mal hochzählt, wenn sich die Leerlaufzeit innerhalb einer der Gruppen befindet. In einigen Umsetzungsformen kann das maschinenerlernte Modell zum Aktualisieren der letzten Zählerwerte jeder der Gruppen durch einen Koeffizienten-Wert eingerichtet sein. In einigen Umsetzungsformen kann das maschinenerlernte Modell zum Verfolgen von Leerlaufzeiten über mehrere Tage, Tage einer Woche (z.B. Wochentage, Wochenenden, Feiertage, und dergleichen), zu unterschiedlichen Zeiten eines jeden Tags (z.B. Ruhezeiten während der Morgenstunden, Ruhezeiten während der Abendstunden), und dergleichen eingerichtet sein. In einigen Umsetzungsformen kann das maschinenerlernte Modell zum Bestimmen einer durchschnittlichen Länge von Belegungszeiten zu verschiedenen Zeiten an einem oder mehreren Tagen eingerichtet sein.
  • Das maschinenerlernte Modell kann dazu eingerichtet sein, um eine erwartete Leerlaufzeit basierend auf den Zählerwerten zu bestimmen. Das maschinenerlernte Modell kann dazu eingerichtet sein, um ein Genauigkeitsniveau für die Leerlaufzeit zu bestimmen, das die Wahrscheinlichkeit angibt, dass die erwartete Leerlaufzeit präzise ist. Das maschinenerlernte Modell kann dazu eingerichtet, sein, um das Genauigkeitsniveau für eine erwartete Leerlaufzeit mithilfe eines Wahrscheinlichkeitswerts, eines Sicherheitsniveaus, und dergleichen zu spezifizieren oder anzugeben. Das maschinenerlernte Modell kann dazu eingerichtet sein, um eine Ausgabe zu erzeugen, die eine erwartete Leerlaufzeit und das Genauigkeitsniveau für die erwartete Leerlaufzeit spezifiziert. Zum Beispiel kann das maschinenerlernte Modell eine erwartete Leerlaufzeit von 1200 Millisekunden und eine Genauigkeit von 70 % als die Wahrscheinlichkeit bestimmen, mit der die bestimmte voraussichtliche Leerlaufzeit präzise ist. In einigen Umsetzungsformen kann das maschinenerlernte Modell eingerichtet sein, um mehrere erwartete Leerlaufzeiten auf der Basis der Zählerwerte zu bestimmen und für jede der mehreren erwarteten Leerlaufzeiten kann das maschinenerlernte Modell zum Bestimmen eines Genauigkeitsniveaus eingerichtet sein, das die Genauigkeit der zu erwartenden Leerlaufzeit angibt. In einigen Umsetzungsformen kann das maschinenerlernte Modell eingerichtet sein, um ein Verhältnis zwischen einer Belegungszeit und einer Leerlaufzeit des Datenspeichersystems, wie beispielsweise des Datenspeichersystems 100, unter Verwendung der Verwendungsgeschichte des Datenspeichersystems zu bestimmen.
  • Die Steuerung 102 kann eingerichtet sein, um den Timeout-Wert basierend auf einer oder mehreren erwarteten Leerlaufzeiten und ihren Genauigkeitsniveaus zu bestimmen. Wenn, zum Beispiel, die Ausgabe des maschinenerlernten Modells vier unterschiedliche Leerlaufzeiten und ein Genauigkeitsniveau für jede der zu erwartenden Wartezeiten spezifiziert, kann die Steuerung 102 einen Timeout-Wert als die Leerlaufzeit mit der höchsten Genauigkeitsstufe bestimmen.
  • Wie oben beschrieben, kann die Steuerung 102 dazu eingerichtet sein, um den Timeout-Wert basierend auf einer Kombination aus den Kritikalitätsstufen der Hintergrund-Verwaltungsoperationen, einem zufällig erzeugten Wert bzw. dem maschinenerlernten Modell zu bestimmen, das dazu eingerichtet ist, um die Wahrscheinlichkeit des Empfangens eines Host-Befehls zu bestimmen. Zum Beispiel kann in einigen Umsetzungsformen die Steuerung 102 zum Bestimmen einer Kritikalitätsstufe der Hintergrund-Verwaltungsoperationen oder Dringlichkeitsstufen der Hintergrund-Verwaltungsoperationen eingerichtet sein, und einen maximalen Timeout-Wert basierend auf der ermittelten Kritikalitätsstufe der Hintergrund-Verwaltungsoperationen oder der Dringlichkeitsstufen der Hintergrund-Verwaltungsoperationen zu bestimmen. Die Steuerung 102 kann einen beliebigen Timeout-Wert unter Verwendung des maximal möglichen Bereichs an Timeout-Werten als die obere Grenze des Bereichs der Timeout-Wert erzeugen, und kann einen Timeout-Wert basierend auf dem erzeugten Zufalls-Timeout-Wert bestimmen. Die Steuerung 102 kann ferner den bestimmten Timeout-Wert basierend auf einer oder mehreren Leerlaufzeiten und ihren entsprechenden Genauigkeitsniveaus einstellen, die in einer Ausgabe des maschinenerlernten Modells spezifiziert sind.
  • Die Blöcke des in 4, 5 und 7 veranschaulichten Flussdiagramms wurden als sequenziell auftretend beschrieben. Die vorliegende Technologie ist nicht auf die beschriebene sequentielle Durchführung des dargestellten Prozesses beschränkt. Einer oder mehrere der Blöcke kann/können parallel zu anderen Blöcken in dem dargestellten Prozess ausgeführt werden. Andere Variationen in dem dargestellten Prozess liegen innerhalb des Umfangs der vorliegenden Technologie.
  • Verschiedene Beispiele von Aspekten der Offenbarung werden nachfolgend beschrieben. Diese dienen als Beispiele und schränken die vorliegende Technologie nicht ein.
  • In einer oder mehreren Umsetzungsformen schließt ein Computer-implementiertes Verfahren das Bestimmen eines Timeout-Werts eines adaptiven Timeout-Parameters des Datenspeichersystems durch das Datenspeichersystem ein. Das Verfahren schließt ein, dass bestimmt wird, ob eine erste Host-Operation durch das Datenspeichersystem empfangen wird. Als Antwort auf die Bestimmung, dass die erste Host-Operation nicht empfangen worden ist, schließt das Verfahren das Bestimmen ein, ob der Timeout-Wert einem Schwellenwert entspricht. Als Antwort auf das Bestimmen, dass der Timeout-Wert den Schwellenwert erfüllt, schließt das Verfahren das Ausführen einer oder mehrerer Hintergrund-Verwaltungsoperationen durch das Datenspeichersystem ein.
  • In einer oder mehreren Umsetzungsformen schließt ein Speichersystem eine nichtflüchtige Speichervorrichtung und eine Steuerung ein. Die Steuerung ist dazu eingerichtet, um einen Timeout-Wert eines adaptiven Timeout-Parameters des Datenspeichersystems zu bestimmen. Die Steuerung ist dazu eingerichtet zu bestimmen, ob eine erste Host-Operation empfangen wird. Die Steuerung ist dazu eingerichtet, um dann, wenn die erste Host-Operation nicht empfangen wird, zu bestimmen, ob der Timeout-Wert einem Schwellenwert entspricht. Die Steuerung ist eingerichtet, um, wenn der Timeout-Wert den Schwellenwert erfüllt, zu bewirken, dass eine oder mehrere Hintergrund-Verwaltungsoperationen in dem Datenspeichersystem ausgeführt werden.
  • In einer oder mehreren Umsetzungsformen schließt das Datenspeichersystem Mittel zur Bestimmung eines Timeout-Werts eines adaptiven Timeout-Parameters ein. Das Datenspeichersystem schließt Mittel zum Bestimmen, ob eine erste Host-Operation empfangen wird, ein. Das Datenspeichersystem schließt als Antwort auf das Bestimmen, dass eine erste Host-Operation nicht empfangen wird, Mittel zum Bestimmen ein, ob der Timeout-Wert einem Schwellenwert entspricht. Das Datenspeichersystem schließt als Antwort auf das Bestimmen, dass der Timeout-Wert dem Schwellenwert entspricht, Mittel zum Ausführen einer oder mehrerer Hintergrund-Verwaltungsoperationen ein.
  • In einer oder mehreren Implementierungen kann ein nichtflüchtiges maschinenlesbares Medium maschinenausführbare Anweisungen einschließen, die bei Ausführung durch einem Prozessor ein Verfahren ausführen. Das Verfahren schließt das Bestimmen eines Timeout-Werts eines adaptiven Timeout-Parameters des Datenspeichersystems durch das Datenspeichersystem ein. Das Verfahren schließt ein, dass bestimmt wird, ob eine erste Host-Operation durch das Datenspeichersystem empfangen wird. Als Antwort auf die Bestimmung, dass die erste Host-Operation nicht empfangen worden ist, schließt das Verfahren das Bestimmen ein, ob der Timeout-Wert einem Schwellenwert entspricht. Als Antwort auf das Bestimmen, dass der Timeout-Wert den Schwellenwert erfüllt, schließt das Verfahren das Ausführen einer oder mehrerer Hintergrund-Verwaltungsoperationen durch das Datenspeichersystem ein.
  • Es versteht sich, dass andere Konfigurationen der vorliegenden Technologie für Fachleute aus der folgenden detaillierten Beschreibung leicht ersichtlich werden, wobei verschiedene Konfigurationen der vorliegenden Technologie zur Veranschaulichung gezeigt und beschrieben werden. Die vorliegende Technologie ermöglicht andere und unterschiedliche Konfigurationen und ihre verschiedenen Details ermöglichen Modifikationen in verschiedener anderer Hinsicht, ohne vom Umfang der vorliegenden Technologie abzuweichen. Dementsprechend sind die Zeichnungen und die detaillierte Beschreibung als veranschaulichend und nicht als einschränkend zu betrachten.
  • Viele der vorstehend beschriebenen Funktionen eines beispielhaften Prozesses und dargelegten Merkmale und Anwendungen können als Software- oder Firmware-Prozesse implementiert sein, die als ein Satz von Anweisungen spezifiziert sind, die auf einem computerlesbaren Speichermedium aufgezeichnet sind (auch als computerlesbares Medium bezeichnet). Wenn diese Anweisungen von einer oder mehreren Verarbeitungseinheit(en) (z. B. einem oder mehreren Prozessoren, Prozessorkernen oder anderen Verarbeitungseinheiten) ausgeführt werden, veranlassen sie die Verarbeitungseinheit(en) zum Durchführen der in den Anweisungen angegebenen Maßnahmen. Beispiele prozessorlesbarer Medien beinhalten, sind aber nicht begrenzt auf, flüchtige Speicher, nichtflüchtige Speicher, sowie andere Formen von Medien wie etwa magnetische Medien, optische Medien und elektronische Medien. Das prozessorlesbare Medium enthält keine Trägerwellen und elektronische Signale, die drahtlos oder über verdrahtete Verbindungen übertragen werden.
  • Der Begriff „Software“ soll gegebenenfalls Firmware beinhalten, die sich im Speicher oder anderen im Speicher gespeicherten Anwendungen befindet, die zur Verarbeitung durch einen Prozessor in den Arbeitsspeicher gelesen werden können. Auch können in einigen Implementierungen mehrere Softwareaspekte der vorliegenden Offenbarung als Unterteile eines größeren Programms implementiert werden, während die übrigen individuellen Softwareaspekte der vorliegenden Offenbarung beibehalten werden. In einigen Implementierungen können auch mehrere Software Aspekte als separate Programme implementiert werden. Schließlich liegt jede beliebige Kombination von separaten Programmen, die zusammen einen hier beschriebenen Softwareaspekt implementieren, innerhalb des Umfangs der vorliegenden Offenbarung. Bei einigen Implementierungen definieren die Softwareprogramme, wenn sie installiert sind, um auf einem oder mehreren elektronischen Systemen zu arbeiten, eine oder mehrere spezifische Maschinenimplementierungen, die die Operationen der Softwareprogramme ausführen und durchführen.
  • Ein Computerprogramm (auch als Programm, Software, Softwareanwendung, Skript oder Code bekannt) kann in jeder Form von Programmiersprache geschrieben sein, einschließlich kompilierter oder interpretierter Sprachen, deklarativer oder prozeduraler Sprachen, und kann in jeder Form eingesetzt werden, einschließlich als ein eigenständiges Programm oder als Modul, Komponente, Subroutine, Objekt oder eine andere Einheit, die zur Verwendung in einer Computerumgebung geeignet ist. Ein Computerprogramm kann, muss aber nicht, einer Datei in einem Dateisystem entsprechen. Ein Programm kann in einem Abschnitt einer Datei gespeichert sein, der andere Programme oder Daten (z. B. ein oder mehrere Skripte, die in einem Markup Language Dokument gespeichert sind) in einer einzelnen Datei, die dem betreffenden Programm zugeordnet ist, oder in mehreren koordinierten Dateien (z. B. Dateien, die ein oder mehrere Module, Unterprogramme oder Codeanteile speichern) enthält.
  • Es versteht sich, dass veranschaulichende Blöcke, Module, Elemente, Komponenten, Verfahren und Algorithmen, die in diesem Dokument beschrieben werden, als elektronische Hardware, Computersoftware oder Kombinationen von beiden implementiert sein können. Um diese Austauschbarkeit von Hardware und Software zu veranschaulichen, wurden verschiedene veranschaulichende Blöcke, Module, Elemente, Komponenten, Verfahren und Algorithmen vorstehend allgemein hinsichtlich ihrer Funktionalität beschrieben. Ob eine derartige Funktionalität als Hardware oder Software implementiert ist, hängt von der spezifischen Anwendung und Designeinschränkungen ab, denen das Gesamtsystem unterliegt. Fachleute können die beschriebene Funktionalität auf verschiedene Arten für jede bestimmte Anwendung implementieren. Verschiedene Komponenten und Blöcke können anders angeordnet sein (z. B. in einer anderen Reihenfolge angeordnet oder in einer anderen Weise aufgeteilt sein), ohne vom Umfang der vorliegenden Offenbarung abzuweichen.
  • Es versteht sich, dass die spezifische Reihenfolge oder Hierarchie von Schritten in den offenbarten Prozessen als eine Veranschaulichung einiger beispielhafter Ansätze dargestellt wird. Basierend auf Designpräferenzen und/oder anderen Überlegungen versteht es sich, dass die spezifische Reihenfolge oder Hierarchie von Schritten in den Prozessen anders angeordnet werden kann. Zum Beispiel können in einigen Implementierungen einige der Schritte gleichzeitig ausgeführt werden. Somit stellen die beigefügten Verfahrensansprüche Elemente der verschiedenen Schritte in einer beispielhaften Reihenfolge dar und sollen nicht auf die spezielle dargestellte Reihenfolge oder Hierarchie beschränkt sein.
  • Die vorhergehende Beschreibung wird bereitgestellt, um es einem Fachmann zu ermöglichen, die verschiedenen hierin beschriebenen Aspekte in der Praxis umzusetzen. Die vorhergehende Beschreibung stellt verschiedene Beispiele der vorliegenden Offenbarung bereit, und die vorliegende Offenbarung ist nicht auf diese Beispiele beschränkt. Verschiedene Modifikationen dieser Aspekte werden dem Fachmann leicht ersichtlich sein, und die hierin definierten generischen Prinzipien können auf andere Aspekte angewendet werden. Daher sollen die Ansprüche nicht auf die hier gezeigten Aspekte beschränkt sein, sondern sollen den vollen Schutzumfang erhalten, der mit den in Sprachform niedergelegten Ansprüchen konsistent ist, wobei die Bezugnahme auf ein Element im Singular nicht „ein und nur ein“ Element bedeuten soll, sofern dies nicht speziell angegeben ist, sondern „ein oder mehrere“. Sofern nicht spezifisch anders angegeben, bezieht sich der Ausdruck „einige“ auf ein(en) oder mehrere. Pronomen im grammatikalischen Maskulin (z. B. sein) schließen das grammatikalische Feminin und Neutrum (z. B. ihr und sein) ein, und umgekehrt. Überschriften und Untertitel, falls vorhanden, werden nur der Einfachheit halber verwendet und schränken die vorliegende Offenbarung nicht ein.
  • Die Prädikatswörter „eingerichtet, um“, „betreibbar, um“ und „programmiert, um“ implizieren keine spezielle materielle oder immaterielle Modifikation eines Subjekts, sondern sollen stattdessen austauschbar verwendet werden. Zum Beispiel kann ein Prozessor, der eingerichtet ist, um eine Operation oder eine Komponente zu überwachen, auch bedeuten, dass der Prozessor so programmiert ist, die Operation zu überwachen und zu steuern, oder der Prozessor betreibbar ist, die Operation zu überwachen und zu steuern. Ebenfalls kann ein Prozessor, der eingerichtet ist, um Code auszuführen, als ein Prozessor ausgelegt sein, der programmiert ist, um Code auszuführen oder betreibbar ist, um Code auszuführen.
  • Die Ausdrücke „in Kommunikation mit“ und „gekoppelt“ bedeuten „in direkter Kommunikation mit“ oder „in indirekter Kommunikation mit“ über eine oder mehrere Komponenten, die in diesem Dokument benannt oder nicht benannt sind (z. B. ein Speicherkartenlesegerät).
  • Ein Ausdruck, wie etwa ein „Aspekt“, bedeutet nicht, dass ein solcher Aspekt für die vorliegende Offenbarung wesentlich ist oder dass ein derartiger Aspekt für alle Konfigurationen der vorliegenden Offenbarung gilt. Eine Offenbarung, die sich auf einen Aspekt bezieht, kann auf alle Konfigurationen oder eine oder mehrere Konfigurationen angewendet werden. Ein Aspekt kann ein oder mehrere Beispiele bereitstellen. Ein Ausdruck, wie beispielsweise ein Aspekt, kann sich auf einen oder mehrere Aspekte beziehen und umgekehrt. Ein Ausdruck, wie etwa eine „Implementierung“, impliziert nicht, dass eine solche Implementierung für die vorliegende Offenbarung wesentlich ist oder dass eine solche Implementierung für alle Konfigurationen der vorliegenden Offenbarung gilt. Eine Offenbarung, die sich auf eine Implementierung bezieht, kann für alle Aspekte oder einen oder mehrere Aspekte gelten. Eine Implementierung kann ein oder mehrere Beispiele bereitstellen. Ein Ausdruck, wie beispielsweise eine „Implementierung“, kann sich auf eine oder mehrere Implementierungen beziehen und umgekehrt. Ein Ausdruck, wie beispielsweise eine „Konfiguration“, impliziert nicht, dass eine solche Konfiguration für die vorliegende Offenbarung wesentlich ist oder dass eine solche Konfiguration für alle Konfigurationen der vorliegenden Offenbarung gilt. Eine Offenbarung, die sich auf eine Konfiguration bezieht, kann auf alle Konfigurationen oder eine oder mehrere Konfigurationen angewendet werden. Eine Konfiguration kann ein oder mehrere Beispiele bereitstellen. Ein Ausdruck, wie z. B. eine „Konfiguration“, kann sich auf eine oder mehrere Konfigurationen beziehen und umgekehrt.
  • Das Wort „beispielhaft“ wird in der Bedeutung „als Beispiel oder zur Veranschaulichung dienend“ verwendet. Jeder Aspekt oder jedes Design, der bzw. das hier als „beispielhaft“ beschrieben wird, ist nicht zwangsläufig als bevorzugt oder vorteilhaft gegenüber anderen Aspekten oder Designs zu verstehen.

Claims (20)

  1. Computer-implementiertes Verfahren für ein Datenspeichersystem, umfassend: Bestimmen eines Timeout-Werts eines adaptiven Timeout-Parameters des Datenspeichersystems durch das Datenspeichersystem; Bestimmen, ob eine erste Host-Operation durch das Datenspeichersystem empfangen wird; als Antwort auf die Bestimmung, dass die erste Host-Operation nicht empfangen wird: Bestimmen, ob der Timeout-Wert einen Schwellenwert erfüllt; und als Antwort auf die Bestimmung, dass der Timeout-Wert dem Schwellenwert entspricht: Ausführen einer oder mehrerer Hintergrund-Verwaltungsoperation durch das Datenspeichersystem.
  2. Computer-implementiertes Verfahren gemäß Anspruch 1, wobei der Timeout-Wert auf Kritikalitätsstufen einer oder mehrerer Hintergrund-Verwaltungsoperationen des Datenspeichersystems, einer zufällig erzeugten Zahl, oder einer Wahrscheinlichkeit des Empfangens einer zweiten Host-Operation durch das Datenspeichersystem basiert.
  3. Computer-implementiertes Verfahren gemäß Anspruch 2, wobei die Kritikalitätsstufe einer oder mehrerer Hintergrund-Verwaltungsoperationen auf einer Menge und einem Schweregrad der einen oder mehreren Hintergrund-Verwaltungsoperationen basiert.
  4. Computer-implementiertes Verfahren gemäß Anspruch 3, wobei das Bestimmen des Timeout-Werts umfasst: Bestimmen der Menge der einer oder mehreren Hintergrund-Verwaltungsoperationen basierend auf einem oder mehreren von: einer Anzeige einer Nutzung des Datenspeichersystems, einer Art der Host-Befehle, oder einem oder mehreren Umgebungsparametern des Datenspeichersystems.
  5. Computer-implementiertes Verfahren gemäß Anspruch 4, wobei der Indikator ein Verhältnis zwischen einer Belegungszeit und einer Leerlaufzeit des Datenspeichersystems darstellt.
  6. Computer-implementiertes Verfahren gemäß Anspruch 3, wobei das Bestimmen des Timeout-Werts umfasst: Bestimmen des Schweregrads der einen oder der mehreren Hintergrund-Verwaltungsoperationen basierend auf einem oder mehreren von: einer Bitfehlerrate eines Speicherblocks eines nichtflüchtigen Speichers oder einem Auslastungsgrad der nichtflüchtigen Speichervorrichtung.
  7. Computer-implementiertes Verfahren gemäß Anspruch 2, wobei die Wahrscheinlichkeit des Empfangens der zweiten Host-Operation auf den Nutzungsdaten des Datenspeichersystems basiert.
  8. Computer-implementiertes Verfahren gemäß Anspruch 1, weiterhin aufweisend: in Reaktion auf die Bestimmung, dass die erste Host-Operation empfangen wird: Durchführen der ersten Host-Operation, wobei eine Prioritätsstufe, die der ersten Host-Operation zugeordnet ist, höher ist als eine Prioritätsstufe, die der einen oder den mehreren Host-Operationen zugeordnet ist.
  9. Datenspeichersystem, aufweisend: eine nichtflüchtige Speichervorrichtung; und eine Steuerung, wobei die Steuerung eingerichtet ist, um: einen Timeout-Wert eines adaptiven Timeout-Parameters des Datenspeichersystems zu bestimmen; zu bestimmen, ob eine erste Host-Operation empfangen wird; wenn die erste Host-Operation nicht empfangen wird, zu bestimmen, ob der Timeout-Wert einen Schwellenwert erfüllt; und wenn der Timeout-Wert den Schwellenwert erfüllt, zu veranlassen, dass eine oder mehrere Hintergrund-Verwaltungsoperationen an dem Datenspeichersystem ausgeführt werden.
  10. Datenspeichersystem gemäß Anspruch 9, wobei der Timeout-Wert auf Kritikalitätsstufen der einen oder mehreren Hintergrund-Verwaltungsoperationen, einer zufällig erzeugten Zahl oder ein Systemhistorie basiert.
  11. Datenspeichersystem gemäß Anspruch 10, wobei die Kritikalitätsstufe der einen oder mehreren Hintergrund-Verwaltungsoperationen auf mindestens entweder einer Menge und einem Schweregrad der einen oder mehreren Hintergrund-Verwaltungsoperationen basiert.
  12. Datenspeichersystem gemäß Anspruch 11, wobei die Menge der einen oder mehreren Hintergrund-Verwaltungsoperationen auf einem oder mehreren der Anzeigen einer Nutzung des Datenspeichersystems, einer Art der Host-Befehle, oder einem oder mehreren Umgebungsparametern basiert.
  13. Datenspeichersystem gemäß Anspruch 12, wobei der Indikator ein Verhältnis zwischen einer Belegungszeit des Datenspeichersystems und einer Leerlaufzeit des Datenspeichersystems darstellt.
  14. Datenspeichersystem gemäß Anspruch 11, wobei die Steuerung eingerichtet ist, um: den Schweregrad der einen oder mehreren Hintergrund-Verwaltungsoperationen basierend auf einer oder mehreren einer Bitfehlerrate eines Speicherblocks der nichtflüchtigen Speichervorrichtung oder einer Verschiebungsoperation zu bestimmen.
  15. Datenspeichersystem gemäß Anspruch 9, wobei der Timeout-Wert auf einer Wahrscheinlichkeit einer zweiten Host-Operation basiert.
  16. Datenspeichersystem gemäß Anspruch 9, wobei die Steuerung eingerichtet ist, um: dann, wenn die erste Host-Operation empfangen wird, zu veranlassen, dass die erste Host-Operation ausgeführt wird, wobei eine der ersten Host-Operation zugeordnete Prioritätsstufe höher ist als eine der einen oder mehreren Hintergrund-Verwaltungsoperationen zugeordnete Prioritätsstufe.
  17. Datenspeichersystem, aufweisend: Mittel zum Bestimmen eines Timeout-Werts eines adaptiven Timeout-Parameters; Mittel zum Bestimmen, ob eine erste Host-Operation empfangen wird; als Antwort auf die Bestimmung, dass die erste Host-Operation nicht empfangen wird: Mittel zum Bestimmen, ob der Timeout-Wert einen Schwellenwert erfüllt; und als Antwort auf die Bestimmung, dass der Timeout-Wert dem Schwellenwert entspricht: Mittel zum Ausführen einer oder mehrerer Hintergrund-Verwaltungsoperationen.
  18. Datenspeichersystem gemäß Anspruch 17, umfassend: Mittel zur Bestimmung des Timeout-Werts basierend auf Kritikalitätsstufen der einen oder mehreren Hintergrund-Verwaltungsoperationen, einer zufällig erzeugte Zahl oder einer Wahrscheinlichkeit des Empfangens einer zweiten Host-Operation.
  19. Datenspeichersystem gemäß Anspruch 18, wobei die Kritikalitätsstufe der einen oder mehreren Hintergrund-Verwaltungsoperationen auf einer Menge und einem Schweregrad der einen oder mehreren Hintergrund-Verwaltungsoperationen basiert.
  20. Datenspeichersystem gemäß Anspruch 19, wobei die Menge der einen oder mehreren Hintergrund-Verwaltungsoperationen auf einem oder mehreren der Anzeigen einer Nutzung des Datenspeichersystems, einer Art der Host-Befehle, oder einem oder mehreren Umgebungsparametern basiert. wobei der Indikator ein Verhältnis zwischen einer Belegungszeit und einer Leerlaufzeit des Datenspeichersystems darstellt.
DE102019133147.1A 2019-01-10 2019-12-05 Datenspeichersysteme und verfahren zur optimierten planung von hintergrund-verwaltungsoperationen Pending DE102019133147A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/245,173 2019-01-10
US16/245,173 US11442635B2 (en) 2019-01-10 2019-01-10 Data storage systems and methods for optimized scheduling of background management operations

Publications (1)

Publication Number Publication Date
DE102019133147A1 true DE102019133147A1 (de) 2020-07-16

Family

ID=71132196

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102019133147.1A Pending DE102019133147A1 (de) 2019-01-10 2019-12-05 Datenspeichersysteme und verfahren zur optimierten planung von hintergrund-verwaltungsoperationen

Country Status (3)

Country Link
US (1) US11442635B2 (de)
CN (1) CN111427510B (de)
DE (1) DE102019133147A1 (de)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2132635B1 (de) * 2007-03-30 2017-08-16 Rambus Inc. System mit hierarchischen speichermodulen mit verschiedenen arten von integrierten speicherschaltungen
US11687363B2 (en) * 2019-07-15 2023-06-27 Micron Technology, Inc. Internal management traffic regulation for memory sub-systems
US20220129171A1 (en) * 2020-10-23 2022-04-28 Pure Storage, Inc. Preserving data in a storage system operating in a reduced power mode
US11537524B2 (en) * 2020-11-20 2022-12-27 Western Digital Technologies, Inc. Effective PCIe utilization by PCIe TLP coalescing
US11640251B2 (en) * 2021-01-20 2023-05-02 Western Digital Technologies, Inc. Early transition to low power mode for data storage devices

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7904673B2 (en) * 2007-11-20 2011-03-08 Seagate Technology Llc Data storage device with histogram of idle time and scheduling of background and foreground jobs
US8972627B2 (en) * 2009-09-09 2015-03-03 Fusion-Io, Inc. Apparatus, system, and method for managing operations for data storage media
WO2011031899A2 (en) * 2009-09-09 2011-03-17 Fusion-Io, Inc. Apparatus, system, and method for power reduction in a storage device
US20170109101A1 (en) * 2015-10-16 2017-04-20 Samsung Electronics Co., Ltd. System and method for initiating storage device tasks based upon information from the memory channel interconnect
US10108450B2 (en) * 2016-04-21 2018-10-23 Samsung Electronics Co., Ltd. Mechanism for SSDs to efficiently manage background activity with notify
CN106598484A (zh) * 2016-11-17 2017-04-26 华为技术有限公司 数据的存储方法、闪存芯片以及存储装置
US10250281B2 (en) * 2016-12-30 2019-04-02 Sandisk Technologies Llc ECC decoder having adjustable parameters
US10635335B2 (en) * 2017-03-21 2020-04-28 Western Digital Technologies, Inc. Storage system and method for efficient pipeline gap utilization for background operations
CN107765834B (zh) * 2017-10-31 2020-05-12 Oppo广东移动通信有限公司 应用管理方法、装置、存储介质及电子设备
CN108958651A (zh) * 2018-06-04 2018-12-07 北京小米移动软件有限公司 脏数据块擦除方法、装置、设备

Also Published As

Publication number Publication date
US20200225856A1 (en) 2020-07-16
US11442635B2 (en) 2022-09-13
CN111427510B (zh) 2023-10-24
CN111427510A (zh) 2020-07-17

Similar Documents

Publication Publication Date Title
DE102019133147A1 (de) Datenspeichersysteme und verfahren zur optimierten planung von hintergrund-verwaltungsoperationen
DE102015014851B4 (de) Ressourcenzuteilung und -freigabe für die Energieverwaltung in Vorrichtungen
US10776263B2 (en) Non-deterministic window scheduling for data storage systems
DE102018105943A1 (de) Kontextbewusste dynamische Befehlsplanung für ein Datenspeichersystem
DE102012216035B4 (de) Aktivierung der drosselung auf den durchschnittlichen schreibdurchsatz bei festkörperspeichereinheiten
DE112011102160B4 (de) Wear-levelling bei Zellen/Seiten/Teilseiten/Blöcken eines Speichers
DE112014004778B4 (de) Vorrichtung und Verfahren zum Verwalten von Chipgruppen
US10817217B2 (en) Data storage system with improved time-to-ready
DE112014005346T5 (de) Temperaturbasierte Flashspeichersystemerhaltung
DE102017128994A1 (de) Weiche Dekodierungs-Planung
DE112006004187B4 (de) Verfahren, nicht-flüchtige Speichervorrichtung und Computersystem zum initiativen Abnutzungsausgleich für einen nicht-flüchtigen Speicher
DE102013020269A1 (de) Umordnen des Zurückschickens für einen Host-Lesebefehl basierend auf der Zeitschätzung des Abschlusses eines Flash-Lesebefehls
US10628081B2 (en) Managing internal command queues in solid state storage drives
DE102019133129A1 (de) Mehrphasenprogrammierung mit symmetrischer gray-codierung
DE112019000139T5 (de) Nichtflüchtiges speichersystem mit dynamischer zuweisung von anwendungen zu einem speicher basierend auf nutzungsüberwachung
DE102018123926A1 (de) Dynamische mehrstufige Decodierung
DE112020002792B4 (de) Verschleissorientierte blockmodusumwandlung in nichtflüchtigen speichern
DE202010017613U1 (de) Datenspeichervorrichtung mit host-gesteuerter Speicherbereinigung
DE112010003662T5 (de) Ausgleich nachlassender Funktionsfähigkeit von Halbleiterdatenträgern auf der Grundlage der von einer RAID-Steuereinheit empfangenen Daten- und Paritätsnutzungsinformationen
DE102018123880A1 (de) Adaptive Verwaltung von Zwischenspeichern
DE102019116546A1 (de) Verfahren für schnelles boot-lesen
DE102017128999A1 (de) Lesebetrieb und weiches Dekodierungs-Timing
DE102016010717A1 (de) Verschleißmanagement für Flash-Speicher-Systeme
DE112018000485T5 (de) Komprimierer/Dekomprimierer für nicht binäre Kontextmischung
DE112016002305B4 (de) Reduktion der Schreibverstärkung in einem Objektspeicher

Legal Events

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

Representative=s name: DEHNSGERMANY PARTNERSCHAFT VON PATENTANWAELTEN, DE

Representative=s name: DEHNS GERMANY PARTNERSCHAFT MBB, DE