DE102018105943A1 - Kontextbewusste dynamische Befehlsplanung für ein Datenspeichersystem - Google Patents

Kontextbewusste dynamische Befehlsplanung für ein Datenspeichersystem Download PDF

Info

Publication number
DE102018105943A1
DE102018105943A1 DE102018105943.4A DE102018105943A DE102018105943A1 DE 102018105943 A1 DE102018105943 A1 DE 102018105943A1 DE 102018105943 A DE102018105943 A DE 102018105943A DE 102018105943 A1 DE102018105943 A1 DE 102018105943A1
Authority
DE
Germany
Prior art keywords
commands
queue
host
data storage
storage system
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
DE102018105943.4A
Other languages
English (en)
Inventor
Scott Jinn
Yun-Tzuo Lai
Haining Liu
Yuriy Pavlenko
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 DE102018105943A1 publication Critical patent/DE102018105943A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/36Handling requests for interconnection or transfer for access to common bus or bus system
    • G06F13/368Handling requests for interconnection or transfer for access to common bus or bus system with decentralised access control
    • G06F13/374Handling requests for interconnection or transfer for access to common bus or bus system with decentralised access control using a self-select method with individual priority code comparator
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • G06F13/26Handling requests for interconnection or transfer for access to input/output bus using interrupt with priority control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/484Precedence
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W74/00Wireless channel access
    • H04W74/002Transmission of channel access control information
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W74/00Wireless channel access
    • H04W74/08Non-scheduled access, e.g. ALOHA
    • H04W74/0866Non-scheduled access, e.g. ALOHA using a dedicated channel for access
    • H04W74/0875Non-scheduled access, e.g. ALOHA using a dedicated channel for access with assigned priorities based access

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)

Abstract

Die Technologie des Gegenstands stellt das Managen eines Datenspeichersystems bereit. Befehle werden als zu einem ersten Befehlstyp oder einem zweiten Befehlstyp gehörend identifiziert. Die Befehle, die als der erste Typ identifiziert sind, werden einer ersten Warteschlange zugewiesen, und die Befehle, die als der zweite Befehlstyp identifiziert sind, werden einer zweiten Warteschlange zugewiesen. Nachdem die Befehle aus der ersten Warteschlange und die Befehle aus der zweiten Warteschlange basierend auf einem Planungsverhältnis über eine vorbestimmte Zeitspanne verarbeitet worden sind, werden ein Schreibfaktor, die Anzahl von Host-Lesebefehlen und die Anzahl von Host-Schreibbefehlen während der vorbestimmten Zeitspanne bestimmt. Das Planungsverhältnis wird basierend auf dem Schreibfaktor, der Anzahl von Host-Lesebefehlen, der Anzahl von Host-Schreibbefehlen und einem vorbestimmten Planungsverhältnisfaktor aktualisiert. Nachfolgende Befehle werden aus der erste Warteschlange und der zweiten Warteschlange basierend auf dem aktualisierten Planungsverhältnis verarbeitet.

Description

  • HINTERGRUND
  • Die vorliegende Offenbarung bezieht sich im Allgemeinen auf das Planen von Befehlen für ein Datenspeichersystem.
  • In Datenspeichersystemen wie z. B. Festkörperlaufwerken (SSD) werden Befehle in Warteschlangen eingereiht und in der Reihenfolge verarbeitet, in der Befehle empfangen werden. Das Warten auf einen vorhergehenden Befehl, der verarbeitet werden soll, kann Latenz in dem nächsten Befehl in der Warteschlange verursachen. Latenz kann für spezielle Typen von Befehlen, beispielsweise für Host-Lesebefehle, kritischer sein als für andere Typen von Befehlen. Beispielsweise kann Leselatenz von Host-Lesebefehlen die Laufwerksleistung von Datenspeichersystemen negativ beeinflussen.
  • ZUSAMMENFASSUNG
  • Aspekte der Technologie des Gegenstands beziehen sich auf ein Verfahren zum Managen eines Datenspeichersystems. Das Verfahren kann das Identifizieren von Befehlen als einen ersten Befehlstyp oder einen zweiten Befehlstyp enthalten. Das Verfahren kann außerdem das Zuweisen von Befehlen, die als der erste Befehlstyp identifiziert sind, zu einer ersten Warteschlange und von Befehlen, die als der zweite Befehlstyp identifiziert sind, zu einer zweiten Warteschlange und Verarbeiten von Befehlen aus der ersten Warteschlange und Befehlen aus der zweiten Warteschlange basierend auf einem Planungsverhältnis enthalten. Das Verfahren kann ferner, nachdem die Befehle aus der ersten Warteschlange und die Befehle aus der zweiten Warteschlange basierend auf dem Planungsverhältnis über eine vorbestimmte Zeitspanne verarbeitet sind, das Bestimmen eines Schreibfaktors des Datenspeichersystems, einer Anzahl von Host-Lesebefehlen und einer Anzahl von Host-Schreibbefehlen, die von einer Host-Vorrichtung während der vorbestimmten Zeitspanne empfangen werden, enthalten, wobei der erste Befehlstyp die Host-Lesebefehle enthält und der zweite Befehlstyp den Host-Schreibbefehl enthält. Das Verfahren kann außerdem das Aktualisieren des Planungsverhältnisses basierend auf dem bestimmten Schreibfaktor, der Anzahl von Host-Lesebefehlen, der Anzahl von Host-Schreibbefehlen und einem vorbestimmten Planungsverhältnisfaktor und Verarbeiten nachfolgender Befehle aus der ersten Warteschlange und der zweiten Warteschlange basierend auf dem aktualisierten Planungsverhältnis enthalten.
  • In speziellen Aspekten bezieht sich die Technologie des Gegenstands darauf, dass ein Datenspeichersystem bereitgestellt wird. Das Datenspeichersystem kann Mittel zum Identifizieren von Befehlen als einen ersten Befehlstyp oder einen zweiten Befehlstyp enthalten. Das Datenspeichersystem kann außerdem Mittel zum Zuweisen von Befehlen, die als der erste Typ identifiziert sind, zu einer ersten Warteschlange und von Befehlen, die als der zweite Befehlstyp identifiziert sind, zu einer zweiten Warteschlange enthalten. Das Datenspeichersystem kann außerdem Mittel zum Verarbeiten von Befehlen aus der ersten Warteschlange und Befehlen aus der zweiten Warteschlange basierend auf einem Planungsverhältnis enthalten. Das Datenspeichersystem kann ferner Mittel zum Bestimmen eines Schreibfaktors des Datenspeichersystems, einer Anzahl von Host-Lesebefehlen und einer Anzahl von Host-Schreibbefehlen, die von einer Host-Vorrichtung während der vorbestimmten Zeitspanne empfangen werden, wobei der erste Befehlstyp die Host-Lesebefehle enthält und der zweite Befehlstyp den Host-Lesebefehle enthält, nachdem die Befehle aus der ersten Warteschlange und die Befehle aus der zweiten Warteschlange verarbeitet worden sind, basierend auf dem Planungsverhältnis über eine vorbestimmte Zeitspanne enthalten. Das Datenspeichersystem kann ferner Mittel zum Aktualisieren des Planungsverhältnisses basierend auf dem bestimmten Schreibfaktor, der Anzahl von Host-Lesebefehlen, der Anzahl von Host-Schreibbefehlen und einem vorbestimmten Planungsverhältnisfaktor enthalten. Das Datenspeichersystem kann außerdem Mittel zum Verarbeiten nachfolgender Befehle aus der ersten Warteschlange und der zweiten Warteschlange basierend auf dem aktualisierten Planungsverhältnis enthalten.
  • Aspekte der Technologie des Gegenstands beziehen sich auch auf ein Datenspeichersystem, das mehrere Speichervorrichtungen enthält, wobei jede Speichervorrichtung mehrere nichtflüchtige Speicherchips enthält, und eine Steuereinheit, die mit den mehreren Speichervorrichtungen gekoppelt ist. Die Steuereinheit kann konfiguriert sein, Befehle als einen ersten Befehlstyp oder einen zweiten Befehlstyp zu identifizieren. Die Steuereinheit kann außerdem konfiguriert sein, Befehle, die als der erste Typ identifiziert sind, einer ersten Warteschlange zuzuweisen, und Befehle, die als der zweite Befehlstyp identifiziert sind, einer zweiten Warteschlange zuzuweisen. Die Steuereinheit kann ferner konfiguriert sein, Befehle aus der ersten Warteschlange und Befehle aus der zweiten Warteschlange basierend auf einem Planungsverhältnis zu verarbeiten. Die Steuereinheit kann ferner konfiguriert sein, einen Schreibfaktor des Datenspeichersystems, eine Anzahl von Host-Lesebefehlen und eine Anzahl von Host-Schreibbefehlen, die von einer Host-Vorrichtung während der vorbestimmten Zeitspanne empfangen werden, wobei der erste Befehlstyp die Host-Lesebefehle enthält und der zweite Befehlstyp den Host-Lesebefehle enthält, nachdem die Befehle aus der ersten Warteschlange und die Befehle aus der zweiten Warteschlange verarbeitet worden sind, basierend auf dem Planungsverhältnis über eine vorbestimmte Zeitspanne zu bestimmen. Die Steuereinheit kann außerdem konfiguriert sein, das Planungsverhältnis basierend auf dem bestimmten Schreibfaktor, der Anzahl von Host-Lesebefehlen, der Anzahl von Host-Schreibbefehlen und einem vorbestimmten Planungsverhältnisfaktor zu aktualisieren. Die Steuereinheit kann ferner konfiguriert sein, nachfolgende Befehle aus der ersten Warteschlange und der zweiten Warteschlange basierend auf dem aktualisierten Planungsverhältnis zu verarbeiten.
  • Es ist zu verstehen, dass andere Konfigurationen der vorliegenden Offenbarung für Fachleute aus der folgenden ausführlichen Beschreibung einfach zu erkennen sind, wo verschiedene Konfigurationen der vorliegenden Offenbarung durch Darstellung gezeigt und beschrieben sind. Wie erkennbar ist, ist die vorliegende Offenbarung zu anderen und unterschiedlichen Konfigurationen fähig, und ihre verschiedenen Einzelheiten sind zur Modifikation in verschiedener anderer Hinsicht fähig, alles ohne von dem Schutzbereichs der vorliegenden Offenbarung abzuweichen. Dementsprechend sollen die Zeichnungen und die ausführliche Beschreibung als ihrem Wesen nach erläuternd und nicht als einschränkend betrachtet werden.
  • Figurenliste
    • 1 ist ein Blockdiagramm, das Komponenten eines Datenspeichersystems gemäß Aspekten der Technologie des Gegenstands abbildet.
    • 2 ist ein Blockdiagramm, das Beispiel-Befehlswarteschlangen in einer Steuereinheit einer Datenspeichervorrichtung gemäß Aspekten der Technologie des Gegenstands abbildet.
    • 3A und 3B bilden ein Ablaufdiagramm eines Beispielprozesses zum Managen eines Datenspeichersystems gemäß Aspekten der Technologie des Gegenstands ab.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Die ausführliche Beschreibung, die nachstehend dargelegt ist, ist als eine Beschreibung verschiedener Konfigurationen der Technologie des Gegenstands vorgesehen und soll nicht die einzigen Konfigurationen repräsentieren, in denen die Technologie des Gegenstands praktiziert werden kann. Die beigefügten Zeichnungen sind hier aufgenommen und bilden einen Teil der ausführlichen Beschreibung. Die ausführliche Beschreibung enthält spezifische Einzelheiten zum Zweck des Unterstützens eines vollständigen Verstehens der Technologie des Gegenstands. Es wird jedoch offensichtlich sein, dass die Technologie des Gegenstands ohne diese spezifischen Einzelheiten praktiziert werden kann. In einigen Fällen sind Strukturen und Komponenten in Blockdiagrammform gezeigt, um das Verdecken der Konzepte der Technologie des Gegenstands zu vermeiden. Ähnliche Komponenten sind zum einfachen Verstehen mit gleichen Bezugszeichen gekennzeichnet.
  • Steuereinheiten managen Datenspeichervorrichtungen wie z. B. Festkörperlaufwerke (SSD) und führen Datenoperationen auf nichtflüchtigem Speicher wie z. B. NAND-Flash-Speicher der Datenspeichervorrichtungen aus. Steuereinheiten können Operationsbefehle (z. B. Host-Lesebefehle, Host-Schreibbefehle) von Host-Vorrichtungen empfangen. Spezielle Operationsbefehle (z. B. Löschbefehle, Schreibbefehle, Lesebefehle, Fehlerkorrektur usw.) können durch die Firmware der Datenspeichervorrichtung intern erzeugt werden. Die Operationsbefehle können in der Reihenfolge, in der sie empfangen und/oder erzeugt werden, in die Warteschlange zur Ausführung eingereiht werden. Datenoperationen aus den Operationsbefehlen können in der Reihenfolge der Warteschlange ausführt werden. Operationsbefehle, die früher in der Warteschlange sind, können jedoch die Latenz von Operationsbefehlen später in der Warteschlange erhöhen. Die Technologie des Gegenstands kann die Leistung von Datenspeichersystemen beispielsweise durch Einreihen von Operationsbefehlen in mehrere Warteschlangen basierend auf Typen der Operationsbefehle und Planen von Operationsbefehlen aus entsprechenden Warteschlangen basierend auf einem Planungsverhältnis verbessern. Das Planungsverhältnis kann basierend auf einer Anzahl von empfangenen und/oder erzeugten Operationsbefehlen gemäß den hier beschriebenen Prozessen dynamisch aktualisiert werden.
  • 1 ist ein Blockdiagramm, das Komponenten eines Beispiel-Datenspeichersystems 100 gemäß verschiedenen Implementierungen der Technologie des Gegenstands abbildet. Das Datenspeichersystem 100 kann das Host-System 110 und die Datenspeichervorrichtung 120 enthalten. Die Datenspeichervorrichtung 120 (beispielsweise ein Festkörperlaufwerk) kann die Host-Schnittstelle 130, die Steuereinheit 140, den Speicher 150 und den nichtflüchtigen Speicher 160A-160C enthalten.
  • Das Host-System 110 repräsentiert eine Vorrichtung, die konfiguriert ist, mit dem Datenspeichersystem 120 gekoppelt zu sein, um über die Host-Schnittstelle 130 Daten zu dem Datenspeichersystem 120 zu senden und von ihm zu empfangen. Das Host-System 110 kann ein Berechnungssystem wie z. B. ein Personalcomputer, ein Server, eine Workstation, ein Laptop-Computer, ein PDA, ein Smartphone und dergleichen sein. Alternativ kann das Host-System 110 eine elektronische Vorrichtung wie z. B. eine Digitalkamera, ein digitaler Audioplayer, ein digitaler Videorecorder und dergleichen sein.
  • Die Host-Schnittstelle 130 kann sowohl elektrische als auch physikalische Verbindungen zum betriebstechnischen Koppeln des Host-Systems 110 mit der Steuereinheit 140 enthalten. Die Host-Schnittstelle 130 kann konfiguriert sein, Daten, Adressen und Steuersignale zwischen dem Host-System 110 und der Steuereinheit 140 zu kommunizieren. Die Host-Schnittstelle 130 kann irgendein proprietäres oder Standard-Schnittstellenprotokoll verwenden, das „Serial Advanced Technology Attachment“ (SATA), „Advanced Technology Attachment“ (ATA), „Small Computer System Interface“ (SCSI), „PCI-extended“ (PCI-X), „Fibre Channel“, „Serial Attached SCSI“ (SAS), „Secure Digital“ (SD), „Embedded Multi-Media Card“ (EMMC), „Universal Flash Storage“ (UFS) und „Peripheral Component Interconnect Express“ (PCle) enthält, jedoch nicht darauf beschränkt ist.
  • Gemäß Aspekten der Technologie des Gegenstands kann die Host-Schnittstelle 130 eine drahtlose Verbindung zwischen dem Host-System 110 und der Datenspeichervorrichtung 120 unter Verwendung standardisierter oder proprietärer Drahtlosschnittstellenstandards und -protokolle implementieren. In dieser Hinsicht können die Host-Schnittstelle 130 oder andere Komponenten der Datenspeichervorrichtung 120 einen Drahtlos-Sender/Empfänger enthalten, um das Host-System 110 und die Datenspeichervorrichtung 120 in drahtlose Kommunikation miteinander zu bringen.
  • Die Steuereinheit 140 ist konfiguriert, Daten, die von dem Host-System 110 empfangen werden, in dem nichtflüchtigen Speicher 160A-160C in Reaktion auf einen Schreibbefehl von dem Host-System 110 zu speichern, und in Reaktion auf einen Lesebefehl von dem Host-System 110 Daten, die in dem nichtflüchtigen Speicher 160A-160C gespeichert sind, zu lesen und die gelesenen Daten über die Host-Schnittstelle 130 zu dem Host-System 110 zu übertragen. Die Steuereinheit 140 kann mehrere interne Komponenten (in 1 nicht gezeigt) enthalten, wie z. B. mehrere Prozessorkerne, Speicher, eine Flash-Komponentenschnittstelle (beispielsweise einen Multiplexer, um Anweisungs- und Datentransport entlang einer Verbindung mit dem nichtflüchtigen Speicher 160A-160C zu managen), eine I/O-Schnittstelle, ein Fehlerkorrekturcode-Modul (ECC-Modul) und dergleichen. Das ECC-Modul kann konfiguriert sein, aus Daten, die von dem Host-System 110 empfangen werden, Codewörter zu erzeugen, die in dem nichtflüchtigen Speicher 160A-160C gespeichert werden sollen, und Codewörter zu decodieren, die aus dem nichtflüchtigen Speicher 160A-160C gelesen werden, bevor die decodierten Daten zu dem Host-System 110 gesendet werden. Verschiedene ECC-Lösungen können verwendet werden, um Daten zu codieren und zu decodieren, um die Codewörter zu erzeugen. In einigen Aspekten können ein oder mehrere Elemente der Steuereinheit 140 in einen einzigen Chip integriert sein. In anderen Aspekten können die Elemente auf mehreren diskreten Komponenten implementiert sein.
  • Die Steuereinheit 140 kann einen Mehrkernprozessor enthalten. Beispielsweise können entsprechende Kerne in dem Mehrkernprozessor einem separaten Prozess zugewiesen sein. Die Steuereinheit 140 kann beispielsweise konfiguriert sein, Code oder Anweisungen auszuführen, um den Operationsbefehlsablauf und Adressenabbildungen zu managen und Berechnungen auszuführen und Operationsbefehle zu erzeugen. Die Steuereinheit 140 kann konfiguriert sein, die Operation der Komponenten in der Datenspeichervorrichtung 120 zu überwachen und zu steuern. Die Steuereinheit 140 kann einen Allzweck-Mikroprozessor, eine Mikrosteuereinheit, einen digitalen Signalprozessor (DSP), eine anwendungsspezifische integrierte Schaltung (ASIC), ein feldprogrammierbares Gatterfeld (FPGA), eine programmierbare Logikvorrichtung (PLD), einen Zustandsautomaten, Gatter-Logik, diskrete Hardware-Komponenten oder eine Kombination der Vorstehenden enthalten.
  • Anweisungssequenzen können in dem Speicher innerhalb der Steuereinheit 140 als Firmware gespeichert sein. Anweisungssequenzen können auch in dem Speicher 150, dem nichtflüchtigen Speicher 160A-160C gespeichert und daraus gelesen werden oder von dem Host-System 110 (beispielsweise über die Host-Schnittstelle 130) empfangen werden. Der Speicher und der nichtflüchtige Speicher 160A-160C repräsentieren Beispiele für maschinen- oder computerlesbare Medien, auf denen Anweisungen/Code, die/der durch die Steuereinheit 140 ausführbar sind/ist, gespeichert sein können. Maschinen- oder computerlesbare Medien können sich allgemein auf irgendwelche greifbaren und nicht-transitorischen Medien beziehen, die verwendet werden, um Anweisungen für die Steuereinheit 140, ihren Prozessor bereitzustellen, die sowohl flüchte Medien wie z. B. dynamischen Speicher, der für den Speicher 150 oder für Puffer innerhalb der Steuereinheit verwendet wird, als auch nichtflüchtige Medien, wie z. B. elektronische Medien, optische Medien und magnetische Medien enthalten.
  • Die Steuereinheit 140 kann den Speicher 150 zum temporären Speichern von Daten und Informationen, die verwendet werden, um die Datenspeichervorrichtung 120 zu managen, verwenden. In einigen Aspekten repräsentiert der Speicher 150 flüchtigen Speicher, der verwendet wird, um Daten und Informationen, die verwendet werden, um die Datenspeichervorrichtung 120 zu managen, temporär zu speichern. Gemäß Aspekten der Technologie des Gegenstands kann der Speicher 150 ein Direktzugriffsspeicher (RAM) wie z. B. RAM mit doppelter Datenrate (DDR-RAM) sein. Andere Typen von RAM können ebenfalls verwendet werden, um den Speicher 150 zu implementieren. Der Speicher 150 kann unter Verwendung eines einzelnen RAM-Moduls oder mehrerer RAM-Module implementiert sein. Obwohl der Speicher 150 so abgebildet ist, dass er von der Steuereinheit 140 getrennt ist, kann der Speicher 150 in die Steuereinheit 140 integriert sein, ohne von dem Schutzbereich der vorliegenden Offenbarung abzuweichen. Alternativ kann der Speicher 150 ein nichtflüchtiger Speicher wie z. B. eine Magnetplatte, Flash-Speicher und dergleichen sein.
  • Der nichtflüchtige Speicher 160A-160C repräsentiert nichtflüchtige Speichervorrichtungen zum Speichern von Daten. Die Anzahl der nichtflüchtigen Speicher in der Datenspeichervorrichtung 120 kann irgendeine Anzahl wie z. B. zwei, vier, acht, sechzehn usw. sein. Zur Vereinfachung der Diskussion ist der nichtflüchtige Speicher 160A-160C in 1 abgebildet. Der nichtflüchtige Speicher 160A-160C ist nicht auf irgendeine spezielle Kapazität oder Konfiguration beschränkt. Jeder der nichtflüchtigen Speicher 160A-160C kann in Blöcke und Seiten organisiert sein. Jeder Block kann eine Anzahl von Seiten enthalten, beispielsweise 256, und jede Seite kann einen oder mehrere Sektoren oder Abschnitte von Daten enthalten.
  • Gemäß Aspekten der Technologie des Gegenstands enthält der nichtflüchtige Speicher 160A-160C beispielsweise NAND-Flash-Speicher. Der nichtflüchtige Speicher 160A-160C kann Mehrpegelzellen-Flash-Speicher (MLC-Flash-Speicher) und/oder Dreipegelzellen-Speicher (TLC-Speicher) enthalten. In einigen Aspekten kann der nichtflüchtige Speicher 160A-160C ferner dreidimensionalen (3D-) Flash-Speicher enthalten. In einigen Aspekten kann der nichtflüchtige Speicher 160A-160C eine oder mehrere Hybrid-Speichervorrichtungen enthalten, die in einer oder mehreren aus einer SLC-, MLC- oder TLC-Betriebsart funktionieren können. Die Technologie des Gegenstands ist nicht auf diese Speichertypen beschränkt und kann auf Flash-Speicherzellen angewandt werden, die unter Verwendung von mehr als drei Pegeln konfiguriert und betrieben werden (z. B. 4 Bits pro Zelle, 5 Bits pro Zelle, usw.).
  • 2 ist ein Blockdiagramm, das Beispiel-Befehlswarteschlangen der Steuereinheit 140 der Datenspeichervorrichtung 120 gemäß Aspekten der Technologie des Gegenstands abbildet. Die Steuereinheit 140 enthält eine hochpriore Warteschlange 142, eine niederpriore Warteschlange 144 und eine Flash-Kanal-Steuereinheit 146. Die Steuereinheit 140 kann über die Host-Schnittstelle 130 Host-Operationsbefehle von dem Host-System 110 empfangen. Host-Operationsbefehle können Host-Lesebefehle enthalten, um Daten aus dem nichtflüchtigen Speicher 160A-160C zu lesen. In einigen Fällen können Host-Befehle auch Host-Schreibbefehle enthalten, um Daten in den nichtflüchtigen Speicher 160A-160C zu schreiben. In einigen Aspekten kann die Steuereinheit 140 interne Operationsbefehle erzeugen. Interne Operationsbefehle können interne Programmierbefehle, interne Löschbefehle, interne Lesebefehle und Fehlerkorrekturbefehle enthalten. Beispielsweise können interne Operationsbefehle basierend auf Speicherbereinigung (GC-), Hintergrundmedien-Scan (BGMS-) oder Set/Get-Merkmalen erzeugt werden.
  • Die Steuereinheit 140 kann Operationsbefehle (z. B. Host-Operationsbefehle und interne Operationsbefehle) als entweder hochpriore Befehle oder niederpriore Befehle identifizieren. Beispielsweise kann jeder Typ eines Operationsbefehls als entweder ein niederpriorer Befehl oder ein hochpriorer Befehl kategorisiert sein. Die Steuereinheit 140 kann Operationsbefehle als entweder hochpriore Befehle oder niederpriore Befehle basierend auf einer Kategorieliste oder einem anderen Typ einer Nachschlagedatenstruktur identifizieren, um die Operationsbefehle zu priorisieren, so dass diejenigen Operationsbefehle, die die Laufwerksleistung der Datenspeichervorrichtung beeinträchtigen, mit reduzierten Wartezeiten verarbeitet werden können. Beispielsweise können Host-Lesebefehle als hochpriore Befehle identifiziert werden. In einigen Fällen können interne Fehlerkorrekturbefehle, um Daten aus Datenorten aufgrund von Fehlerzahl oder Operationsfehlern zu verlagern, als hochpriore Befehle identifiziert werden. In einigen Aspekten können Operationsbefehle wie z. B. Host-Schreibbefehle, interne Programmierbefehle, interne Löschbefehle und interne Lesebefehle als niederpriore Befehle identifiziert werden.
  • Operationsbefehle, die als hochpriore Befehle identifiziert sind, werden der hochprioren Warteschlange 142 zugewiesen, und Operationsbefehle, die als niederpriore Befehle identifiziert sind, werden der niederprioren Warteschlange 144 zugewiesen. In einigen Aspekten können Operationsbefehle in den entsprechenden Warteschlangen in der Steuereinheit 140 basierend auf der Zeit, wann die Operationsbefehle durch die Steuereinheit 140 empfangen wurden, in chronologischer Reihenfolge eingereiht werden.
  • Die Steuereinheit 140 kann Operationsbefehle aus der hochprioren Warteschlange 142 und der niederprioren Warteschlange 144 basierend auf einem Planungsverhältnis planen. Ein Planungsverhältnis kann beispielsweise eine Anzahl von verarbeiteten Operationsbefehlen aus der hochprioren Warteschlange für jede vorbestimmte Anzahl von verarbeiteten Operationsbefehlen aus der niederprioren Warteschlange definieren. Beispielsweise kann die Steuereinheit 140 neun Operationsbefehle aus der hochprioren Warteschlange für jeden einzigen Operationsbefehl aus der niederprioren Warteschlange planen.
  • Ein anfängliches Planungsverhältnis kann basierend auf einer mittleren Leselatenz von Host-Lesebefehlen bestimmt werden. Beispielsweise kann ein anfängliches Planungsverhältnis durch Verarbeiten von Test-Operationsbefehlen basierend auf einem beliebigen Planungsverhältnis und Überwachen der mittleren Leselatenz von Host-Lesebefehlen während der Verarbeitung bestimmt werden. Das beliebige Planungsverhältnis kann angepasst und getestet werden, bis ein Planungsverhältnis bestimmt ist, das zu einer mittleren optimalen oder Ziel-Leselatenz der Host-Lesebefehle führt. Das Planungsverhältnis, das zu der mittleren Ziel-Leselatenz führt, kann als ein anfängliches Planungsverhältnis eingestellt werden. In einigen Aspekten kann zusätzlich zu der mittleren Leselatenz von Host-Lesebefehlen ein anfängliches Planungsverhältnis für unterschiedliche Ebenen von Überversorgung (z. B. 7 %, 10 % usw.) in der Datenspeichervorrichtung 120 bestimmt werden.
  • Die Flash-Kanal-Steuereinheit 146 kann Operationsbefehle aus der hochprioren Warteschlange und der niederprioren Warteschlange basierend auf dem anfänglichen Planungsverhältnis verarbeiten. Die Flash-Kanal-Steuereinheit 146 kann einen Operationsbefehl durch Ausgeben eines Befehls, der dem Operationsbefehl entspricht, zu dem nichtflüchtigen Speicher 160A-160C verarbeiten. Wenn die Flash-Kanal-Steuereinheit 146 Operationsbefehle aus der hochprioren Warteschlange und der niederprioren Warteschlange basierend auf dem anfänglichen Planungsverhältnis für eine vorbestimmte Zeitspanne (z. B. 10 Sekunden) verarbeitet, kann die Steuereinheit 140 das Planungsverhältnis unter Verwendung von Gleichung (1) aktualisieren: A B C D = E
    Figure DE102018105943A1_0001
  • A:
    Anzahl von Host-Lesebefehlen
    B:
    Anzahl von Host-Schreibbefehlen
    C:
    Schreibfaktor
    D:
    Planungsverhältnisfaktor
    E:
    Planungsverhältnis
  • Die Steuereinheit 140 kann ein Log von Operationsbefehlen in dem Speicher 150 pflegen. Beispielsweise kann das Log die Typen von Operationsbefehlen und die Anzahl jeweiliger Typen von Operationsbefehlen, die während der vorbestimmten Zeitspanne verarbeitet werden, enthalten. Die Anzahl von Host-Lesebefehlen A kann beispielsweise eine Anzahl von Host-Lesebefehlen sein, die von dem Host-System 110 während der vorbestimmten Zeitspanne empfangen werden. Die Anzahl von Host-Schreibbefehlen B ist beispielsweise eine Anzahl von Host-Schreibbefehlen, die während der vorbestimmten Zeitspanne basierend auf dem Log empfangen werden.
  • Der Schreibfaktor C repräsentiert die Anzahl von Schreiboperationen, die für jeden Host-Schreibbefehl, der von dem Host-System 110 empfangen wird, ausgeführt wird. Der Schreibfaktor kann mit einer Anzahl von Programmier/Lösch-Zyklen von Blöcken in der Datenspeichervorrichtung 120 korrelieren. Der Schreibfaktor kann ansteigen, wenn die Anzahl von Programmier/Lösch-Zyklen ansteigt. Beispielsweise können Blöcke des nichtflüchtigen Speichers 160A-160C eine endliche Anzahl von Programmier/Lösch-Zyklen tolerieren, bevor ein Block aus dem Kreislauf genommen und nicht verfügbar wird. Somit kann die Anzahl verfügbarer Blöcke in dem nichtflüchtigen Speicher 160A-160C abnehmen, wenn sich die Datenspeichervorrichtung 120 dem Ende ihrer Lebensdauer nähert. Wenn die Anzahl verfügbarer Blöcke abnimmt, kann es erforderlich sein, dass die Steuereinheit 140 mehr Datenverschiebungen und/oder Speicherbereinigung ausführt, um neue Host-Schreibbefehle aufzunehmen. Das kann zum Ansteigen des Schreibfaktors führen. In einigen Aspekten kann eine Tabelle, die vordefinierte Schreibfaktoren, die unterschiedlichen Stufen der Lebensdauer des nichtflüchtigen Speichers 160A-160C zugeordnet sind, enthält, im Speicher 150 gespeichert sein.
  • Der Planungsverhältnisfaktor D kann basierend auf dem anfänglichen Planungsverhältnis E, der Anzahl von Host-Lesebefehlen A, der Anzahl von Host-Schreibbefehlen B und dem Schreibfaktor C unter Verwendung von Gleichung (1) bestimmt werden.
  • Das anfängliche Planungsverhältnis wird basierend auf einer speziellen Mischung von Operationsbefehlstypen bestimmt. Die Mischung von Operationsbefehlstypen kann jedoch während des Betriebs der Datenspeichervorrichtung von der speziellen Mischung von Operationsbefehlstypen, die verwendet werden, um das anfängliche Planungsverhältnis zu bestimmen, variieren, und die mittlere Leselatenz, die aus dem anfänglichen Planungsverhältnis resultiert, kann von der mittleren optimalen oder Ziel-Leselatenz von Host-Lesebefehlen abweichen. Um die mittlere optimale oder Ziel-Leselatenz zu erhalten, kann die Steuereinheit 140 das Planungsverhältnis durch Bestimmen eines neuen Planungsverhältnisses E unter Verwendung des bestimmten Planungsverhältnisfaktors D aktualisieren. Beispielsweise kann die Steuereinheit 140 eine Anzahl von Host-Schreibbefehlen A und eine Anzahl von Host-Lesebefehlen B über eine vorbestimmte Zeitspanne bestimmen. Die Steuereinheit 140 kann außerdem den Schreibfaktor C unter Verwendung beispielsweise der im Speicher 150 gespeicherten Tabelle bestimmen. Der Planungsverhältnisfaktor D kann aus dem Speicher 150 gelesen werden. Unter Verwendung von Gleichung (1) bestimmt die Steuereinheit 140 ein neues Planungsverhältnis zum Aktualisieren des Planungsverhältnisses. Die Steuereinheit 140 kann das anfängliche Planungsverhältnis mit dem neuen Planungsverhältnis aktualisieren. Die Steuereinheit 140 plant und verarbeitet nachfolgende Operationsbefehle, die empfangen werden, basierend auf dem aktualisierten Planungsverhältnis.
  • 3A bildet ein Ablaufdiagramm eines Beispielprozesses zum Managen des Datenspeichersystems 120 gemäß Aspekten der Technologie des Gegenstands ab. Zu erläuternden Zwecken sind die verschiedenen Blöcke des Beispielprozesses 300 hier mit Bezug auf die Komponenten und/oder Prozesse, die hier beschrieben sind, beschrieben. Der eine oder die mehreren Blöcke von Prozess 300 können beispielsweise durch einen oder mehrere Prozessoren implementiert sein, die beispielsweise die Steuereinheit 140 von 1 oder eine oder mehrere Komponenten oder Prozessoren der Steuereinheit 140 enthalten. In einigen Implementierungen können einer oder mehrere der Blöcke getrennt von anderen Blöcken und durch einen oder mehrere unterschiedliche Prozessoren oder Steuereinheiten implementiert sein. Ferner sind zu erläuternden Zwecken die Blöcke des Beispielprozesses 300 so beschrieben, dass sie in Reihe oder linear auftreten. Mehrere Blöcke des Beispielprozesses 300 können jedoch parallel auftreten. Zusätzlich müssen die Blöcke des Beispielprozesses 300 nicht in der gezeigten Reihenfolge ausgeführt werden, und/oder einer oder mehrere der Blöcke des Beispielprozesses 300 müssen nicht ausgeführt werden.
  • Bei Block 310 empfängt die Steuereinheit 140 Operationsbefehle. Beispielsweise empfängt die Steuereinheit 140 Host-Befehle (d. h. Host-Lesebefehle und Host-Schreibbefehle) von dem Host-System 110 über die Host-Schnittstelle 130. In einigen Aspekten können interne Befehle, die beispielsweise auf GC oder BGMS basierend erzeugt werden, in den Operationsbefehlen enthalten sein. Bei Block 320 identifiziert die Steuereinheit 140 die Operationsbefehle als entweder hochpriore Befehle oder niederpriore Befehle. Beispielsweise können Host-Lesebefehle als hochpriore Befehle identifiziert werden. In einigen Aspekten können Fehlerkorrekturbefehle als hochpriore Befehle identifiziert werden. Operationsbefehle wie z. B. Host-Lesebefehle, interne Schreibbefehle, interne Löschbefehle und interne Lesebefehle, die durch die Steuereinheit 140 erzeugt werden, können als niederpriore Befehle identifiziert werden.
  • Bei Block 330 weist die Steuereinheit 140 Operationsbefehle der hochprioren Warteschlange 142 und der niederprioren Warteschlange 144 zu. Beispielsweise werden Operationsbefehle, die als hochpriore Befehle identifiziert sind, der hochprioren Warteschlange 142 zugewiesen, und Operationsbefehle, die als niederpriore Befehle identifiziert sind, werden der niederprioren Warteschlange 144 zugewiesen.
  • 3B bildet ein Ablaufdiagramm eines Beispielprozesses zum Managen eines Datenspeichersystems 120 gemäß Aspekten der Technologie des Gegenstands ab. Zu erläuternden Zwecken sind die verschiedenen Blöcke des Beispielprozesses 340 hier mit Bezug auf die Komponenten und/oder Prozesse, die hier beschrieben sind, beschrieben. Der eine oder die mehreren Blöcke von Prozess 340 können beispielsweise durch einen oder mehrere Prozessoren implementiert sein, die beispielsweise die Steuereinheit 140 von 1 oder eine oder mehrere Komponenten oder Prozessoren der Steuereinheit 140 enthalten. In einigen Implementierungen können einer oder mehrere der Blöcke getrennt von anderen Blöcken und durch einen oder mehrere unterschiedliche Prozessoren oder Steuereinheiten implementiert sein. Ferner sind zu erläuternden Zwecken die Blöcke des Beispielprozesses 340 so beschrieben, dass sie in Reihe oder linear auftreten. Mehrere Blöcke des Beispielprozesses 340 können jedoch parallel auftreten. Zusätzlich müssen die Blöcke des Beispielprozesses 340 nicht in der gezeigten Reihenfolge ausgeführt werden, und/oder einer oder mehrere aus den Blöcken des Beispielprozesses 340 müssen nicht ausgeführt werden.
  • Bei Block 350 verarbeitet die Steuereinheit 140 die hochprioren Befehle aus der hochprioren Warteschlange 142 und die niederprioren Befehle aus der niederprioren Warteschlange 144 basierend auf einem Planungsverhältnis. Beispielsweise falls das Planungsverhältnis 9:1 angibt, kann die Flash-Kanal-Steuereinheit 146 der Steuereinheit 140 neun hochpriore Befehle aus der hochprioren Warteschlange 142 nacheinander verarbeiten. Nachdem die Flash-Kanal-Steuereinheit 146 neun hochpriore Befehle aus der hochprioren Warteschlange 142 verarbeitet hat, kann die Flash-Kanal-Steuereinheit 146 einen niederprioren Befehl aus der niederprioren Warteschlange 144 verarbeiten.
  • Bei Block 360 wird bestimmt, ob eine vorbestimmte Zeit abgelaufen ist. Beispielsweise wenn eine vorbestimmte Zeit (z. B. 10 Sekunden) abgelaufen ist, nachdem das Verarbeiten der hochprioren Befehle aus der hochprioren Warteschlange 142 und der niederprioren Befehle aus der niederprioren Warteschlange 144 begonnen hat, bestimmt die Steuereinheit 140, dass eine vorbestimmte Zeit abgelaufen ist (Block 360 = Ja), und der Prozess 340 geht zu Block 370 weiter. Andernfalls, wenn die Steuereinheit bestimmt, dass eine vorbestimmte Zeit nicht abgelaufen ist (Block 360 = Nein), kehrt der Prozess 340 zu Block 350 zurück.
  • Bei Block 370 bestimmt eine Anzahl von Host-Lesebefehlen, eine Anzahl von Host-Schreibbefehlen und einen Schreibfaktor. Beispielsweise kann die Steuereinheit 140 eine Anzahl von Host-Lesebefehlen und eine Anzahl von Host-Schreibbefehlen bestimmen, die von der Host-Vorrichtung 110 während der vorbestimmten Zeit empfangen werden. In einigen Aspekten kann die Steuereinheit 140 einen Schreibfaktor basierend auf einer Anzahl von Programmier/Lösch-Zyklen der Datenspeichervorrichtung 120 bestimmen.
  • Bei Block 380 aktualisiert die Steuereinheit 140 das Planungsverhältnis. Die Steuereinheit 140 bestimmt ein neues Planungsverhältnis basierend auf der bestimmten Anzahl von Host-Lesebefehlen, der Anzahl von Host-Schreibbefehlen und dem Schreibfaktor. Beispielsweise bestimmt die Steuereinheit 140 unter Verwendung von Gleichung (1) ein neues Planungsverhältnis durch Dividieren der bestimmten Anzahl von Host-Lesebefehlen durch das Produkt aus der bestimmten Anzahl von Host-Schreibbefehlen und dem Schreibfaktor. Das Ergebnis der Division wird mit einem vorbestimmten Planungsverhältnisfaktor multipliziert. Das Ergebnis der Berechnung ist das neue Planungsverhältnis. Die Steuereinheit 140 aktualisiert das existierende Planungsverhältnis mit dem neuen Planungsverhältnis. Der Prozess 340 kehrt zu Block 350 zurück. Nachfolgende Operationsbefehle werden basierend auf dem aktualisierten Planungsverhältnis verarbeitet.
  • Es ist zu verstehen, dass anschauliche Blöcke, Module, Elemente, Komponenten, Verfahren und Algorithmen, die hier beschrieben sind, als elektronische Hardware, Computer-Software oder Kombinationen aus beiden implementiert sein können. Um diese Austauschbarkeit von Hardware und Software zu erläutern, sind verschiedene anschauliche Blöcke, Module, Elemente, Komponenten, Verfahren und Algorithmen vorstehend allgemein hinsichtlich ihrer Funktionalität beschrieben worden. Ob eine solche Funktionalität als Hardware oder Software implementiert ist, hängt von der speziellen Anwendung und Konstruktionseinschränkungen ab, die für das Gesamtsystem gelten. Fachleute können die beschriebene Funktionalität auf verschiedene Weisen für jede spezielle Anwendung implementieren. Verschiedene Komponenten und Blöcke können unterschiedlich angeordnet sein (z. B. in einer unterschiedlichen Reihenfolge angeordnet oder auf eine unterschiedliche Weise unterteilt sein), alles ohne vom Schutzbereichs der Technologie des Gegenstands abzuweichen.
  • Es ist zu verstehen, dass die spezifische Reihenfolge oder Hierarchie der Schritte in den offenbarten Prozessen als eine Veranschaulichung einiger beispielhafter Herangehensweisen präsentiert ist. Basierend auf Konstruktionspräferenzen und/oder anderen Erwägungen ist zu verstehen, dass die spezifische Reihenfolge oder Hierarchie von Schritten in den Prozessen anders angeordnet sein können. Beispielsweise können in einigen Implementierungen einige der Schritte gleichzeitig ausgeführt werden. Somit präsentieren die beigefügten Verfahrensansprüche Elemente der verschiedenen Schritte in einer beispielhaften Reihenfolge und sollen nicht auf die spezifische präsentierte Reihenfolge oder Hierarchie eingeschränkt sein.
  • Die vorstehende Beschreibung ist bereitgestellt, um einem Fachmann zu ermöglichen, die verschiedenen hier beschriebenen Aspekte zu praktizieren. Die vorstehende Beschreibung stellt verschiedene Beispiele der Technologie des Gegenstands bereit, und die Technologie des Gegenstands ist nicht auf diese Beispiele beschränkt. Verschiedene Modifikationen an diesen Aspekten werden für Fachleute leicht offensichtlich, und die grundlegenden Prinzipien, die hier definiert sind, können auf andere Aspekte angewandt werden. Somit sollen die Ansprüche nicht auf die hier gezeigten Aspekte beschränkt sein, sondern sollen dem vollen Schutzbereich, der mit dem Wortlaut der Ansprüche konsistent ist, erteilt werden, wobei die Bezugnahme auf ein Element im Singular nicht „eines und nur eines“ bedeuten soll, sofern nicht spezifisch so festgestellt, sondern stattdessen „eines oder mehrere“. Sofern nicht anders festgestellt bezieht sich der Begriff „einige“ auf eines oder mehrere. Pronomen in der männlichen Form (z. B. sein) enthalten die weibliche und sächliche Form (z. B. ihr und sein), und umgekehrt. Überschriften und Unterüberschriften, falls vorhanden, sind nur zur Vereinfachung verwendet und schränken die Offenbarung des Gegenstands nicht ein.
  • Die Prädikate „konfigurieren“, „arbeiten“ und „programmieren“ implizieren keine spezielle greifbare oder nicht greifbare Modifikation eines Subjekts, sondern sollen stattdessen austauschbar verwendet sein. Beispielsweise ein Prozessor, der konfiguriert ist, eine Operation oder eine Komponente zu überwachen und zu steuern, kann auch bedeuten, dass der Prozessor programmiert ist, um die Operation zu überwachen und zu steuern, oder dass der Prozessor arbeitet, um die Operation zu Überwachen und zu steuern. Ähnlich kann ein Prozessor, der konfiguriert ist, Code auszuführen, gedeutet werden als ein Prozessor, der programmiert ist, um Code auszuführen, oder arbeitet, um Code auszuführen.
  • Die Formulierungen „in Kommunikation mit“ und „gekoppelt“ bedeuten in direkter Kommunikation mit oder in indirekter Kommunikation mit über eine oder mehrere hier genannte oder nicht genannte Komponenten (z. B. ein Speicherkarten-Lesegerät).
  • Eine Formulierung wie z. B. ein „Aspekt“ impliziert nicht, dass ein solcher Aspekt für die Technologie des Gegenstands wesentlich ist oder dass ein solcher Aspekt für alle Konfigurationen der Technologie des Gegenstands gilt. Eine Offenbarung, die sich auf einen Aspekt bezieht, kann für alle Konfigurationen oder für eine oder mehrere Konfigurationen gelten. Ein Aspekt kann ein oder mehrere Beispiele bereitstellen. Eine Formulierung wie z. B. ein Aspekt kann sich auf einen oder mehrere Aspekte beziehen, und umgekehrt. Eine Formulierung wie z. B. eine „Ausführungsform“ impliziert nicht, dass eine solche Ausführungsform für die Technologie des Gegenstands wesentlich ist oder dass eine solche Ausführungsform für alle Konfigurationen der Technologie des Gegenstands gilt. Eine Offenbarung, die sich auf eine Implementierung bezieht, kann für alle Aspekte oder für einen oder mehrere Aspekte gelten. Eine Implementierung kann ein oder mehrere Beispiele bereitstellen. Eine Formulierung wie z. B. eine „Ausführungsform“ kann sich auf eine oder mehrere Implementierungen beziehen, und umgekehrt. Eine Formulierung wie z. B. eine „Konfiguration“ impliziert nicht, dass eine solche Konfiguration für die Technologie des Gegenstands wesentlich ist oder dass eine solche Konfiguration für alle Konfigurationen der Technologie des Gegenstands gilt. Eine Offenbarung, die sich auf eine Konfiguration bezieht, kann für alle Konfigurationen oder für eine oder mehrere Konfigurationen gelten. Eine Konfiguration kann ein oder mehrere Beispiele bereitstellen. Eine Formulierung wie z. B. eine „Konfiguration“ kann sich auf eine oder mehrere Konfigurationen beziehen, und umgekehrt.
  • Das Wort „beispielhaft“ ist hier so verwendet, dass es „als ein Beispiel oder eine Veranschaulichung dienend“ bedeutet. Ein Aspekt oder eine Konstruktion, die hier als „beispielhaft“ beschrieben ist, ist nicht notwendigerweise als anderen Aspekten oder Konstruktionen gegenüber bevorzugt oder vorteilhaft zu betrachten.

Claims (20)

  1. Verfahren zum Managen eines Datenspeichersystems, wobei das Verfahren umfasst: Identifizieren von Befehlen als einen ersten Befehlstyp oder einen zweiten Befehlstyp; Zuweisen von Befehlen, die als der erste Befehlstyp identifiziert sind, zu einer ersten Warteschlange, und von Befehlen, die als der zweite Befehlstyp identifiziert sind, zu einer zweiten Warteschlange; Verarbeiten von Befehlen aus der ersten Warteschlange und Befehlen aus der zweiten Warteschlange basierend auf einem Planungsverhältnis; nachdem die Befehle aus der ersten Warteschlange und die Befehle aus der zweiten Warteschlange basierend auf dem Planungsverhältnis über eine vorbestimmte Zeitspanne verarbeitet worden sind, Bestimmen eines Schreibfaktors des Datenspeichersystems, einer Anzahl von Host-Lesebefehlen und einer Anzahl von Host-Schreibbefehlen, die von einer Host-Vorrichtung während der vorbestimmten Zeitspanne empfangen werden, wobei der erste Befehlstyp die Host-Lesebefehle enthält und der zweite Befehlstyp den Host-Schreibbefehl enthält; Aktualisieren des Planungsverhältnisses basierend auf dem bestimmten Schreibfaktor, der Anzahl von Host-Lesebefehlen, der Anzahl von Host-Schreibbefehlen und einem vorbestimmten Planungsverhältnisfaktor; und Verarbeiten nachfolgender Befehle aus der ersten Warteschlange und der zweiten Warteschlange basierend auf dem aktualisierten Planungsverhältnis.
  2. Verfahren nach Anspruch 1, wobei der erste Befehlstyp einen Host-Lesebefehl, der von einer Host-Vorrichtung empfangen wird, enthält, und der zweite Befehlstyp einen Host-Schreibbefehl, der von der Host-Vorrichtung empfangen wird, enthält.
  3. Verfahren nach Anspruch 2, das ferner umfasst: Pflegen im Speicher eines Logs einer Anzahl von Host-Lesebefehlen und einer Anzahl von Host-Schreibbefehlen, die von der Host-Vorrichtung während einer vorbestimmten Zeitspanne empfangen werden.
  4. Verfahren nach Anspruch 1, wobei der Schreibfaktor des Datenspeichersystems basierend auf einer Anzahl von Programmier/Lösch-Zyklen, die auf dem Datenspeichersystem ausgeführt werden, bestimmt wird.
  5. Verfahren nach Anspruch 4, wobei der Schreibfaktor des Datenspeichersystems basierend auf einer Größe der Überversorgung des Datenspeichersystems bestimmt wird.
  6. Verfahren nach Anspruch 1, wobei die nachfolgenden Befehle als der Befehl vom ersten Typ und der Befehl vom zweiten Typ identifiziert werden und der ersten Warteschlange oder der zweiten Warteschlange basierend auf dem identifizierten Typ von Befehlen zugewiesen werden.
  7. Datenspeichersystem, das enthält: Mittel zum Identifizieren von Befehlen als einen ersten Befehlstyp oder einen zweiten Befehlstyp; Mittel zum Zuweisen von Befehlen, die als der erste Befehlstyp identifiziert sind, zu einer ersten Warteschlange, und von Befehlen, die als der zweite Befehlstyp identifiziert sind, zu einer zweiten Warteschlange; Mittel zum Verarbeiten von Befehlen aus der ersten Warteschlange und Befehlen aus der zweiten Warteschlange basierend auf einem Planungsverhältnis; Mittel zum Bestimmen eines Schreibfaktors des Datenspeichersystems, einer Anzahl von Host-Lesebefehlen und einer Anzahl von Host-Schreibbefehlen, die von einer Host-Vorrichtung während der vorbestimmten Zeitspanne empfangen werden, wobei der erste Befehlstyp die Host-Lesebefehle enthält und der zweite Befehlstyp die Host-Schreibbefehle enthält, nachdem die Befehle aus der ersten Warteschlange und die Befehle aus der zweiten Warteschlange basierend auf dem Planungsverhältnis über eine vorbestimmte Zeitspanne verarbeitet worden sind; Mittel zum Aktualisieren des Planungsverhältnisses basierend auf dem bestimmten Schreibfaktor, der Anzahl von Host-Lesebefehlen, der Anzahl von Host-Schreibbefehlen und einem vorbestimmten Planungsverhältnisfaktor; und Mittel zum Verarbeiten nachfolgender Befehle aus der ersten Warteschlange und der zweiten Warteschlange basierend auf dem aktualisierten Planungsverhältnis.
  8. Datenspeichersystem nach Anspruch 7, das ferner enthält: Mittel zum Pflegen im Speicher eines Logs einer Anzahl von Host-Lesebefehlen und einer Anzahl von Host-Schreibbefehlen, die von der Host-Vorrichtung während der vorbestimmten Zeitspanne empfangen werden.
  9. Datenspeichersystem nach Anspruch 7, wobei der erste Befehlstyp einen Host-Lesebefehl, der von einer Host-Vorrichtung empfangen wird, enthält, und der zweite Befehlstyp einen Host-Schreibbefehl, der von der Host-Vorrichtung empfangen wird, enthält.
  10. Datenspeichersystem nach Anspruch 7, wobei der Schreibfaktor des Datenspeichersystems basierend auf einer Anzahl von Programmier/Lösch-Zyklen, die auf dem Datenspeichersystem ausgeführt werden, bestimmt wird.
  11. Datenspeichersystem nach Anspruch 10, wobei der Schreibfaktor des Datenspeichersystems basierend auf einer Größe der Überversorgung des Datenspeichersystems bestimmt wird.
  12. Datenspeichersystem nach Anspruch 7, wobei jeder der nachfolgenden Befehle als der Befehl vom ersten Typ und der Befehl vom zweiten Typ identifiziert wird und der ersten Warteschlange oder der zweiten Warteschlange basierend auf dem identifizierten Typ von Befehlen zugewiesen wird.
  13. Datenspeichersystem nach Anspruch 7, wobei das Planungsverhältnis eine Anzahl einer ersten Gruppe von Befehlen aus der ersten Warteschlange angibt, die für eine Anzahl einer zweiten Gruppe von Befehlen aus der zweiten Warteschlange verarbeitet werden.
  14. Datenspeichersystem, das enthält: mehrere Speichervorrichtungen, wobei jede Speichervorrichtung mehrere nichtflüchtige Speicher-Chips enthält; und eine Steuereinheit, die mit den mehreren Speichervorrichtungen gekoppelt ist, wobei die Steuereinheit konfiguriert ist zum: Identifizieren von Befehlen als einen ersten Befehlstyp oder einen zweiten Befehlstyp; Zuweisen von Befehlen, die als der erste Typ identifiziert sind, zu einer ersten Warteschlange und von Befehlen, die als der zweite Befehlstyp identifiziert sind, zu einer zweiten Warteschlange; Verarbeiten von Befehlen aus der ersten Warteschlange und Befehlen aus der zweiten Warteschlange basierend auf einem Planungsverhältnis; nachdem die Befehle aus der ersten Warteschlange und die Befehle aus der zweiten Warteschlange basierend auf dem Planungsverhältnis über eine vorbestimmte Zeitspanne verarbeitet worden sind, Bestimmen eines Schreibfaktors des Datenspeichersystems, einer Anzahl von Host-Lesebefehlen und einer Anzahl von Host-Schreibbefehlen, die von einer Host-Vorrichtung während der vorbestimmten Zeitspanne empfangen worden sind, wobei der erste Befehlstyp die Host-Lesebefehle enthält und der zweite Befehlstyp die Host-Schreibbefehle enthält; Aktualisieren des Planungsverhältnisses basierend auf dem bestimmten Schreibfaktor, der Anzahl von Host-Lesebefehlen, der Anzahl von Host-Schreibbefehlen und einem vorbestimmten Planungsverhältnisfaktor; und Verarbeiten nachfolgender Befehle aus der ersten Warteschlange und der zweiten Warteschlange basierend auf dem aktualisierten Planungsverhältnis.
  15. Datenspeichersystem nach Anspruch 14, wobei die Steuereinheit konfiguriert ist zum: Pflegen im Speicher eines Logs einer Anzahl von Host-Lesebefehlen und einer Anzahl von Host-Schreibbefehlen, die von der Host-Vorrichtung während einer vorbestimmten Zeitspanne empfangen werden.
  16. Datenspeichersystem nach Anspruch 14, wobei der erste Befehlstyp einen Host-Lesebefehl, der von einer Host-Vorrichtung empfangen wird, enthält, und der zweite Befehlstyp einen Host-Schreibbefehl, der von der Host-Vorrichtung empfangen wird, enthält.
  17. Datenspeichersystem nach Anspruch 14, wobei der Schreibfaktor des Datenspeichersystems basierend auf einer Anzahl von Programmier/Lösch-Zyklen, die auf dem Datenspeichersystem ausgeführt werden, bestimmt wird.
  18. Datenspeichersystem nach Anspruch 17, wobei der Schreibfaktor des Datenspeichersystems basierend auf einer Größe der Überversorgung des Datenspeichersystems bestimmt wird.
  19. Datenspeichersystem nach Anspruch 14, wobei jeder der nachfolgenden Befehle als der Befehl vom ersten Typ und der Befehl vom zweiten Typ identifiziert wird und der ersten Warteschlange oder der zweiten Warteschlange basierend auf dem identifizierten Typ von Befehlen zugewiesen wird.
  20. Datenspeichersystem nach Anspruch 14, wobei das Planungsverhältnis eine Anzahl einer ersten Gruppe von Befehlen aus der ersten Warteschlange angibt, die für eine Anzahl einer zweiten Gruppe von Befehlen aus der zweiten Warteschlange verarbeitet werden.
DE102018105943.4A 2017-05-19 2018-03-14 Kontextbewusste dynamische Befehlsplanung für ein Datenspeichersystem Pending DE102018105943A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/600,672 2017-05-19
US15/600,672 US10635617B2 (en) 2017-05-19 2017-05-19 Context-aware dynamic command scheduling for a data storage system

Publications (1)

Publication Number Publication Date
DE102018105943A1 true DE102018105943A1 (de) 2018-11-22

Family

ID=64271753

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102018105943.4A Pending DE102018105943A1 (de) 2017-05-19 2018-03-14 Kontextbewusste dynamische Befehlsplanung für ein Datenspeichersystem

Country Status (3)

Country Link
US (3) US10635617B2 (de)
CN (1) CN108958907B (de)
DE (1) DE102018105943A1 (de)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190040614A (ko) * 2017-10-11 2019-04-19 에스케이하이닉스 주식회사 메모리 시스템 및 그의 동작방법
JP6757708B2 (ja) * 2017-10-31 2020-09-23 株式会社日立製作所 情報処理装置及び構成要素の管理方法
US10678458B2 (en) 2018-02-09 2020-06-09 Micron Technology, Inc. Data storage device idle time processing
US10564886B2 (en) * 2018-02-20 2020-02-18 Western Digital Technologies, Inc. Methods and apparatus for controlling flash translation layer recycle from host
US10489085B2 (en) * 2018-02-28 2019-11-26 Micron Technology, Inc. Latency-based scheduling of command processing in data storage devices
US10521383B1 (en) * 2018-12-17 2019-12-31 Micron Technology, Inc. Handling operation collisions in a non-volatile memory
US10901658B2 (en) * 2018-12-28 2021-01-26 Micron Technology, Inc. Host adaptive memory device optimization
US10642764B1 (en) * 2019-03-01 2020-05-05 Western Digital Technologies, Inc. Data transfer command latency of a host device
US11074081B2 (en) * 2019-08-02 2021-07-27 GM Global Technology Operations LLC Architecture and method supporting multiple vision stream using shared server on embedded platform
JP2021047781A (ja) * 2019-09-20 2021-03-25 キオクシア株式会社 メモリシステム
KR20210098717A (ko) * 2020-02-03 2021-08-11 에스케이하이닉스 주식회사 컨트롤러, 컨트롤러의 동작 방법 및 이를 포함하는 저장 장치
JP7337006B2 (ja) * 2020-03-03 2023-09-01 キオクシア株式会社 メモリシステムおよび制御方法
US11748277B2 (en) * 2020-03-05 2023-09-05 Seagate Technology, Llc Client input/output (I/O) access rate variation compensation
KR20220139410A (ko) * 2020-03-10 2022-10-14 마이크론 테크놀로지, 인크 메모리 서브시스템에 대한 대기열 유지
CN114063879B (zh) * 2020-07-31 2024-04-09 伊姆西Ip控股有限责任公司 用于处理操作命令的方法、电子设备和存储介质
CN112130906A (zh) * 2020-09-28 2020-12-25 深圳市宏旺微电子有限公司 一种主机命令处理的方法及装置
US11972145B2 (en) * 2021-01-21 2024-04-30 Micron Technology, Inc. Opportunistic data movement
CN114546288A (zh) * 2022-02-27 2022-05-27 山东云海国创云计算装备产业创新中心有限公司 一种降低关键命令时延的方法、***、设备和存储介质

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050144379A1 (en) * 2003-12-31 2005-06-30 Eschmann Michael K. Ordering disk cache requests
US8504784B2 (en) * 2007-06-27 2013-08-06 Sandisk Technologies Inc. Scheduling methods of phased garbage collection and housekeeping operations in a flash memory system
US8601181B2 (en) * 2007-11-26 2013-12-03 Spansion Llc System and method for read data buffering wherein an arbitration policy determines whether internal or external buffers are given preference
US7933283B1 (en) * 2008-03-04 2011-04-26 Cortina Systems, Inc. Shared memory management
US8732339B2 (en) * 2009-03-24 2014-05-20 Hewlett-Packard Development Company, L.P. NPIV at storage devices
US8132048B2 (en) * 2009-08-21 2012-03-06 International Business Machines Corporation Systems and methods to efficiently schedule commands at a memory controller
US20120159040A1 (en) * 2010-12-15 2012-06-21 Dhaval Parikh Auxiliary Interface for Non-Volatile Memory System
US8707104B1 (en) * 2011-09-06 2014-04-22 Western Digital Technologies, Inc. Systems and methods for error injection in data storage systems
US9075712B2 (en) 2011-11-30 2015-07-07 International Business Machines Corporation Scheduling requests in a solid state memory device
US9838269B2 (en) * 2011-12-27 2017-12-05 Netapp, Inc. Proportional quality of service based on client usage and system metrics
US20130290601A1 (en) * 2012-04-26 2013-10-31 Lsi Corporation Linux i/o scheduler for solid-state drives
WO2014088445A1 (en) * 2012-12-05 2014-06-12 Emc Corporation Storage resource usage analysis for customized application options
CN103135945B (zh) * 2013-03-25 2014-11-26 中国人民解放军国防科学技术大学 用于ssd的多通道动态读写调度方法
KR102034626B1 (ko) * 2013-06-26 2019-10-21 삼성전자 주식회사 메모리 동작을 제어하는 방법 및 장치
KR20150017526A (ko) * 2013-08-07 2015-02-17 삼성전자주식회사 메모리 명령 스케줄러 및 메모리 명령 스케줄링 방법
US9378136B1 (en) * 2014-06-30 2016-06-28 Emc Corporation Techniques for selecting write endurance classification of flash storage based on read-write mixture of I/O workload
US9377958B2 (en) * 2014-08-12 2016-06-28 Facebook, Inc. Allocation of read/write channels for storage devices
US10324833B2 (en) * 2015-10-27 2019-06-18 Toshiba Memory Corporation Memory controller, data storage device, and memory control method
US10606510B2 (en) * 2015-10-29 2020-03-31 Netflix, Inc. Memory input/output management
US10102119B2 (en) * 2015-10-30 2018-10-16 Sandisk Technologies Llc Garbage collection based on queued and/or selected write commands
US10592110B2 (en) * 2016-02-19 2020-03-17 International Business Machines Corporation Techniques for dynamically adjusting over-provisioning space of a flash controller based on workload characteristics

Also Published As

Publication number Publication date
US10635617B2 (en) 2020-04-28
US11645217B2 (en) 2023-05-09
US20210279196A1 (en) 2021-09-09
US20180336150A1 (en) 2018-11-22
US20200218679A1 (en) 2020-07-09
CN108958907A (zh) 2018-12-07
US11061842B2 (en) 2021-07-13
CN108958907B (zh) 2022-01-04

Similar Documents

Publication Publication Date Title
DE102018105943A1 (de) Kontextbewusste dynamische Befehlsplanung für ein Datenspeichersystem
DE102015014851B4 (de) Ressourcenzuteilung und -freigabe für die Energieverwaltung in Vorrichtungen
DE112014005346B4 (de) Temperaturbasierte Flashspeichersystemerhaltung
DE102011086098B4 (de) Parallele Speicherlese- und Speicherschreib-Operationen in einem Speicher mit serieller Schnittstelle
DE102013016993B4 (de) Embedded Multimedia Card (eMMC), einen Host steuernde eMMC und Verfahren zum Betreiben eines eMMC-Systems
DE112018000228T5 (de) System und Verfahren zur Verarbeitung und Arbitrierung von Übermittlungs- und Beendigungswarteschlangen
DE112018000180T5 (de) System und verfahren zum adaptiven senden frühzeitiger beendigung unter verwendung eines steuerungsspeicherpuffers
DE102017128939A1 (de) System und Verfahren zum dynamischen und adaptiven Zusammenführen von Interrupts
DE112018000233T5 (de) System und Verfahren zur Verarbeitung und Arbitrierung von Übermittlungs- und Beendigungswarteschlangen
DE102020107659A1 (de) Zonenbildung für gezonte namensräume
DE112018000181T5 (de) System und verfahren für die schnelle ausführung von kapselinternen befehlen
DE102019124450A1 (de) Bandbreitenbegrenzung in solid-state-laufwerken
DE112018000834T5 (de) System und verfahren zur adaptiven befehlsabruf-aggregation
DE102020112512A1 (de) Datenspeichergerät und Betriebsverfahren dafür
DE102008033518B4 (de) Datenverarbeitungsverfahren für eine Solid-State-Disk-Steuereinheit, Solid-State-Disk-Steuereinheit und Datenspeicherelement
DE112020000139T5 (de) Nicht sequentiell in zonen aufgeteilte namensräume
DE102015012566A1 (de) Mehrlagenkonzept für logische speicherungsverwaltung
DE112019005511T5 (de) Halten von schreibbefehlen in gezonten namensräumen
DE102013020269A1 (de) Umordnen des Zurückschickens für einen Host-Lesebefehl basierend auf der Zeitschätzung des Abschlusses eines Flash-Lesebefehls
DE202010017668U1 (de) Befehls- und Interrupt-Gruppierung bei einer Datenspeichervorrichtung
DE112018000230T5 (de) System und Verfahren zur spekulativen Befehlsausführung unter Verwendung des Steuerungsspeicherpuffers
DE112019000167T5 (de) Anpassbare Lesewiederholungsreihenfolge basierend auf einem Decodierungserfolgstrend
DE102019125060A1 (de) Datenspeichersysteme und verfahren zum autonomen anpassen der leistung, kapazität und/oder der betriebsanforderungen eines datenspeichersystems
DE102017128999A1 (de) Lesebetrieb und weiches Dekodierungs-Timing
DE102018123926A1 (de) Dynamische mehrstufige Decodierung

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