DE102022209179A1 - Vorrichtung und verfahren zur steuerung eines gemeinsamen speichers in einem datenverarbeitungssystem - Google Patents

Vorrichtung und verfahren zur steuerung eines gemeinsamen speichers in einem datenverarbeitungssystem Download PDF

Info

Publication number
DE102022209179A1
DE102022209179A1 DE102022209179.5A DE102022209179A DE102022209179A1 DE 102022209179 A1 DE102022209179 A1 DE 102022209179A1 DE 102022209179 A DE102022209179 A DE 102022209179A DE 102022209179 A1 DE102022209179 A1 DE 102022209179A1
Authority
DE
Germany
Prior art keywords
data
host
program
memory
controller
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE102022209179.5A
Other languages
English (en)
Inventor
Gi Jo Jeong
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.)
SK Hynix Inc
Original Assignee
SK Hynix 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 SK Hynix Inc filed Critical SK Hynix Inc
Publication of DE102022209179A1 publication Critical patent/DE102022209179A1/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/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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • 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/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/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/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
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1694Configuration of memory controller to different memory types

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

Ein Datenverarbeitungssystem enthält einen Host und ein Speichersystem. Der Host speichert einen Programmbefehl in einer Übermittlungswarteschlange und dem Programmbefehl entsprechende Programmdaten in einem Host-Datenpuffer. Das Speichersystem kommuniziert mit dem Host. Das Speichersystem erhält die in dem Host-Datenpuffer gespeicherten Programmdaten auf der Grundlage eines Betriebsstatus eines internen Puffers, überträgt ein Signal zum vorzeitigen Abschluss an den Host, nachdem es die dem Programmbefehl entsprechenden Programmdaten erhalten hat, und überträgt an den Host eine Freigabeanforderung zur Freigabe der Programmdaten aus dem Host-Datenpuffer.

Description

  • TECHNISCHES GEBIET
  • Die in dieser Patentanmeldung offenbarten Technologien und Implementierungen beziehen sich auf ein Datenverarbeitungssystem und insbesondere auf eine Vorrichtung und ein Verfahren zur Steuerung gemeinsam genutzter Speicherbereiche in dem Datenverarbeitungssystem.
  • HINTERGRUND
  • Ein Datenverarbeitungssystem umfasst ein Speichersystem oder eine Datenspeichereinrichtung. Das Datenverarbeitungssystem kann entwickelt werden, um größere Datenmengen in der Datenspeichereinrichtung zu speichern, Daten in der Datenspeichereinrichtung schneller zu speichern und in der Datenspeichereinrichtung gespeicherte Daten schneller zu lesen. Das Speichersystem oder die Datenspeichereinrichtung kann nichtflüchtige Speicherzellen und/oder flüchtige Speicherzellen zum Speichern von Daten enthalten.
  • ZUSAMMENFASSUNG
  • Eine Ausführungsform der Offenbarung kann ein Datenverarbeitungssystem und ein Verfahren zum Betrieb des Datenverarbeitungssystems bereitstellen. Das Datenverarbeitungssystem umfasst Komponenten und Ressourcen, wie z. B. ein Speichersystem und einen Host, und mehrere Datenpfade, die für die Datenkommunikation zwischen den Komponenten auf der Grundlage der Verwendungen der Komponenten und der Ressourcen verwendet werden.
  • In einer Ausführungsform kann ein Datenverarbeitungssystem einen Host enthalten, der so konfiguriert ist, dass er einen Programmbefehl in einer Übermittlungswarteschlange (Submission Queue; auch als Eingabewarteschlange bezeichnet) und Programmdaten, die dem Programmbefehl entsprechen, in einem Host-Datenpuffer speichert; und ein Speichersystem, das mit dem Host in Verbindung steht und so konfiguriert ist, dass es: die in dem Host-Datenpuffer gespeicherten Programmdaten auf der Grundlage eines Betriebsstatus eines internen Puffers erhält; ein Signal für eine frühzeitige Beendigung an den Host überträgt, nachdem es die Programmdaten erhalten hat, die dem Programmbefehl entsprechen; und an den Host eine Freigabeanforderung zum Freigeben der Programmdaten aus dem Host-Datenpuffer überträgt.
  • Der Host kann eine Anwendung enthalten, die so konfiguriert ist, dass sie den Programmbefehl und die Programmdaten erzeugt; und mindestens einen Eingabe/Ausgabe (E/A, I/O)-Kern, der so konfiguriert ist, dass er mindestens ein Paar aus der Übermittlungswarteschlange und einer der Übermittlungswarteschlange entsprechenden Abschlusswarteschlange steuert, und mindestens ein Paar aus dem Host-Datenpuffer und einer dem Host-Datenpuffer entsprechenden Pufferfreigabewarteschlange steuert.
  • Der Host kann so konfiguriert werden, dass er eine Benachrichtigung über den Programmbefehl und die Programmdaten an das Speichersystem sendet. Der mindestens eine E/A-Kern kann so konfiguriert werden, dass er das Speichersystem unterstützt, das die in der Übermittlungswarteschlange und dem Host-Datenpuffer gespeicherten Informationen abruft und andere Informationen in der Abschlusswarteschlange und der Pufferfreigabewarteschlange speichert. Der mindestens eine E/A-Kern (I/O Core) kann Informationen, die in der Übermittlungswarteschlange und im Host-Datenpuffer gespeichert sind, an das Speichersystem übertragen. Der mindestens eine E/A-Kern kann so konfiguriert werden, dass er einen Befehl aus der Übermittlungswarteschlange auf der Grundlage von in der Abschlusswarteschlange gespeicherten Informationen freigibt, und Daten aus dem Host-Datenpuffer auf der Grundlage von in der Pufferfreigabewarteschlange gespeicherten Informationen freigibt.
  • Das Speichersystem kann eine Speichergruppe mit nichtflüchtigen Speicherzellen; einen Controller, der so konfiguriert ist, dass er die Programmdaten vom Host über Datenkommunikation an die Speichergruppe überträgt; und den internen Puffer, der so konfiguriert ist, dass er die Programmdaten vorübergehend speichert, enthalten.
  • Die Speichergruppe kann so konfiguriert werden, dass sie als Reaktion auf den Abschluss einer Programmierung der Programmdaten in den nichtflüchtigen Speicherzellen ein Programmabschlusssignal bezüglich der Programmdaten sendet.
  • Der Controller kann so konfiguriert werden, dass er die Programmdaten als Reaktion auf das Programmabschlusssignal aus dem internen Puffer freigibt.
  • Der Controller kann so konfiguriert werden, dass es die Programmdaten aus dem internen Puffer freigibt, nachdem die Programmdaten unabhängig vom Programmabschlusssignal an die Speichergruppe gesendet werden.
  • Der Controller kann so konfiguriert werden, dass er einen verfügbaren Platz im internen Puffer überwacht, um den Betriebsstatus des internen Puffers zu bestimmen.
  • In einer anderen Ausführungsform kann ein Speichersystem eine Speichereinrichtung enthalten, die mehrere nichtflüchtige Speicherzellen enthält und so konfiguriert ist, dass sie einen Dateneingabe-/-ausgabevorgang durchführt; und einen Controller, der mit der Speichereinrichtung und einer externen Einrichtung kommuniziert und so konfiguriert ist, dass er den Dateneingabe-/-ausgabevorgang steuert. Der Controller ist ferner so konfiguriert, dass er als Reaktion auf den Erhalt von Programmdaten, die einem Programmbefehl entsprechen und in der externen Einrichtung enthalten sind, ein Signal zur vorzeitigen d. h. frühzeitigen Beendigung an die externe Einrichtung sendet und eine Freigabeanforderung an die externe Einrichtung sendet, um die Programmdaten freizugeben, nachdem die Speichereinrichtung einen Programmbetrieb bezüglich der Programmdaten abgeschlossen hat.
  • Die Speichereinrichtung kann so konfiguriert werden, dass sie ein Programmabschlusssignal bezüglich der Programmdaten als Reaktion auf einen Abschluss der Programmierung der Programmdaten in den mehreren nichtflüchtigen Speicherzellen sendet.
  • Der Controller kann ferner so konfiguriert werden, dass er die Programmdaten als Reaktion auf das Programmabschlusssignal aus dem internen Puffer freigibt.
  • Der Controller kann ferner so konfiguriert sein, dass er die Programmdaten aus dem internen Puffer freigibt, nachdem er die Programmdaten an die Speichergruppe gesendet hat, unabhängig von dem Programmabschlusssignal.
  • Der Controller kann so konfiguriert sein, dass er das Signal für die vorzeitige Beendigung in einem ersten Bereich der externen Einrichtung speichert und die Freigabeanforderung in einen zweiten Bereich der externen Einrichtung aufnimmt.
  • Der Controller kann ferner so konfiguriert sein, dass er einen verfügbaren Speicherplatz eines internen Puffers überwacht, um einen Betriebszustand des internen Puffers zu bestimmen, und dass er einen Zeitpunkt bestimmt, zu dem die Programmdaten als Reaktion auf den Betriebszustand von der externen Einrichtung erhalten werden.
  • In einer anderen Ausführungsform kann ein Speichersystem eine Speichereinrichtung mit mehreren nichtflüchtigen Speicherzellen, die so konfiguriert ist, dass sie eine Dateneingabe-/-ausgabeoperation durchführt; einen internen Puffer, der so konfiguriert ist, dass er Daten, die mit der Dateneingabe-/- ausgabeoperation verbunden sind, vorübergehend speichert; und einen Controller, der so konfiguriert ist, dass er einen Programmbefehl, der Programmdaten zugeordnet ist, von einer externen Vorrichtung erhält, einen Zeitpunkt des Erhalts der Programmdaten von der externen Einrichtung auf der Grundlage eines Betriebszustands des internen Puffers bestimmt, ein Signal für eine frühzeitige Beendigung in Bezug auf die Programmdaten an die externe Einrichtung sendet, und eine Freigabeanforderung zum Freigeben der Programmdaten an die externe Einrichtung sendet, nachdem die Programmdaten in den mehreren nichtflüchtigen Speicherzellen programmiert wurden, enthalten.
  • Der Controller (als auch Steuereinheit bezeichnet) kann so konfiguriert sein, dass er: den Programmbefehl von einem ersten Bereich der externen Einrichtung erhält; die Programmdaten von einem zweiten Bereich der externen Einrichtung erhält; das Signal für den vorzeitigen Abschluss in einem dritten Bereich der externen Einrichtung speichert; und die Freigabeanforderung in einem vierten Bereich der externen Einrichtung speichert.
  • Der Controller kann so konfiguriert sein, dass er einen verfügbaren Platz im internen Puffer überwacht, um den Betriebsstatus des internen Puffers zu bestimmen.
  • Der Controller kann ferner so konfiguriert sein, dass er die Programmdaten aus dem internen Puffer freigibt, nachdem er die Programmdaten an die Speichereinrichtung gesendet hat, unabhängig von dem Programmabschlusssignal.
  • Die Speichereinrichtung ist so konfiguriert, dass sie ein Programmabschlusssignal in Bezug auf die Programmdaten als Reaktion auf den Abschluss der Programmierung der Programmdaten in den mehreren nichtflüchtigen Speicherzellen sendet. Der Controller kann ferner so konfiguriert sein, dass er die Programmdaten als Reaktion auf das Programmabschlusssignal aus dem internen Puffer freigibt.
  • Der Controller kann so konfiguriert sein, dass er ein Signal zur vorzeitigen Beendigung an die externe Einrichtung sendet, nachdem er die Programmdaten von der externen Einrichtung erhalten hat.
  • Figurenliste
  • Die vorliegende Beschreibung bezieht sich auf die beiliegenden Zeichnungen, in denen sich gleiche Bezugszeichen auf gleiche Teile in den Figuren beziehen.
    • 1 zeigt ein Datenverarbeitungssystem gemäß einer Ausführungsform der offenbarten Technologie.
    • 2 zeigt ein Datenverarbeitungssystem gemäß einer anderen Ausführungsform der offenbarten Technologie.
    • 3 zeigt ein Speichersystem gemäß einer anderen Ausführungsform der offenbarten Technologie.
    • 4 zeigt die interne Konfiguration eines in 1 bis 3 dargestellten Controllers gemäß den Ausführungsformen der offenbarten Technologie.
    • 5 zeigt ein erstes Beispiel für Dateneingabe-/Ausgabeoperationen zwischen einem Host und einem Speichersystem in einem Datenverarbeitungssystem gemäß einer anderen Ausführungsform der offenbarten Technologie.
    • 6 zeigt ein Beispiel für den Zugriff auf einen Speicher in einem Host durch ein Speichersystem gemäß einer anderen Ausführungsform der offenbarten Technologie.
    • 7 zeigt ein zweites Beispiel für Dateneingabe-/Ausgabeoperationen zwischen dem Host und dem Speichersystem im Datenverarbeitungssystem gemäß einer anderen Ausführungsform der offenbarten Technologie.
    • 8 zeigt ein Verfahren zum Betrieb eines Speichersystems gemäß einer anderen Ausführungsform der offenbarten Technologie.
    • 9 zeigt ein Verfahren zum Betrieb eines Hosts gemäß einer anderen Ausführungsform der offenbarten Technologie.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Verschiedene Ausführungsformen der offenbarten Technologie werden nachstehend unter Bezugnahme auf die beiliegenden Zeichnungen beschrieben. Die Elemente und Merkmale der Offenbarung können jedoch anders konfiguriert oder angeordnet werden, um andere Ausführungsformen zu bilden, die Variationen der offenbarten Ausführungsformen sein können.
  • In dieser Offenbarung sind Verweise auf verschiedene Merkmale (z. B. Elemente, Strukturen, Module, Komponenten, Vorgänge/Operationen, Eigenschaften usw.), die in „einer Ausführungsform“, „einem Ausführungsbeispiel“, „einer Ausführungsform“, „einer anderen Ausführungsform“, „einigen Ausführungsformen“, „verschiedenen Ausführungsformen“, „anderen Ausführungsformen“, „einer alternativen Ausführungsformen“ usw. enthalten sind, so zu verstehen, dass alle diese Merkmale in einer oder mehreren Ausführungsformen der offenbarten Technologie enthalten sein können, aber nicht unbedingt in denselben Ausführungsformen kombiniert werden müssen.
  • In dieser Offenbarung sind die Begriffe „umfassen“, „enthalten“, „einschließend“ offen formuliert. Wie in den beigefügten Ansprüchen verwendet, spezifizieren diese Begriffe das Vorhandensein der angegebenen Elemente und schließen das Vorhandensein oder Hinzufügen eines oder mehrerer anderer Elemente nicht aus. Die Begriffe in einem Anspruch schließen nicht aus, dass die Vorrichtung zusätzliche Komponenten enthält (z. B. eine Schnittstelleneinheit, Schaltkreise usw.).
  • In dieser Offenbarung können verschiedene Einheiten, Schaltungen oder andere Komponenten als „konfiguriert, um“ eine oder mehrere Aufgaben auszuführen, beschrieben oder beansprucht werden. In solchen Zusammenhängen wird „konfiguriert, um“ verwendet, um die Struktur zu bezeichnen, indem angegeben wird, dass die Blöcke/Einheiten/Schaltkreise/Komponenten eine Struktur (z. B. eine Schaltung) enthalten, die während des Betriebs eine oder mehrere Aufgaben ausführt. Der Block/die Einheit/der Schaltkreis/die Komponente ist so konfiguriert, dass er/sie die Aufgabe auch dann ausführt, wenn der angegebene Block/die Einheit/der Schaltkreis/die Komponente gerade nicht in Betrieb ist (z. B. nicht eingeschaltet oder aktiviert ist). Der Block/die Einheit/die Schaltung/die Komponente, der/die mit der Formulierung „konfiguriert, um“ verwendet wird, umfasst Hardware, z. B. Schaltkreise, Speicher, in dem Programmanweisungen gespeichert sind, die zur Durchführung des Vorgangs ausgeführt werden können, usw. Darüber hinaus kann „konfiguriert, um“ eine generische Struktur (z. B. eine generische Schaltung) umfassen, die durch Software und/oder Firmware (z. B. ein FPGA oder einen Allzweckprozessor, der Software ausführt) so manipuliert wird, dass sie die betreffende(n) Aufgabe(n) ausführen kann. „konfiguriert, um" kann auch die Anpassung eines Herstellungsverfahrens (z. B. einer Halbleiterfertigungsanlage) zur Herstellung von Bauelementen/Einrichtungen (z. B. integrierten Schaltkreisen) umfassen, die zur Implementierung oder Durchführung einer oder mehrerer Aufgaben geeignet sind.
  • Im Rahmen dieser Offenbarung bezieht sich der Begriff „Schaltkreise/Schaltungen§ oder „Logik“ auf alle folgenden Elemente: (a) reine Hardware-Schaltkreisimplementierungen (z. B. Implementierungen in nur analogen und/oder digitalen Schaltkreisen) und (b) Kombinationen von Schaltkreisen und Software (und/oder Firmware), wie z. B. (falls zutreffend): (i) eine Kombination von Prozessor(en) oder (ii) Teile von Prozessor(en)/Software (einschließlich digitaler Signalprozessor(en)), Software und Speicher(n), die zusammenwirken, um ein Gerät, wie z. B. ein Mobiltelefon oder einen Server, zu veranlassen, verschiedene Funktionen auszuführen) und (c) Schaltungen, wie z. B. Mikroprozessor(en) oder ein Teil eines Mikroprozessors, die Software oder Firmware für den Betrieb benötigen, auch wenn die Software oder Firmware nicht physisch vorhanden ist. Diese Definition von „Schaltung/Schaltkreis“ oder „Logik“ gilt für alle Verwendungen dieses Begriffs in dieser Anmeldung, einschließlich aller Ansprüche. Als weiteres Beispiel umfasst der Begriff „Schaltkreis/Schaltung“ oder „Logik“, wie er in dieser Anmeldung verwendet wird, auch eine Implementierung, die lediglich aus einem Prozessor (oder mehreren Prozessoren) oder einem Teil eines Prozessors und seiner (oder ihrer) zugehörigen Software und/oder Firmware besteht. Der Begriff „Schaltkreis/Schaltung“ oder „Logik“ umfasst z. B. auch eine integrierte Schaltung für eine Speichereinrichtung, falls dies auf ein bestimmtes Anspruchselement zutrifft.
  • Die Begriffe „erster“, „zweiter“, „dritter“ usw. werden hier als Bezeichnungen für Substantive verwendet, denen sie vorangestellt sind, und implizieren keine Art von Ordnung (z. B. räumlich, zeitlich, logisch usw.). Die Begriffe „erster“ und „zweiter“ bedeuten nicht unbedingt, dass der erste Wert vor dem zweiten geschrieben werden muss. Obwohl die Begriffe hier zur Kennzeichnung verschiedener Elemente verwendet werden können, sind diese Elemente nicht durch diese Begriffe eingeschränkt. Diese Begriffe werden verwendet, um ein Element von einem anderen Element zu unterscheiden, das ansonsten denselben oder einen ähnlichen Namen hat. Zum Beispiel kann ein erster Schaltkreis von einem zweiten Schaltkreis unterschieden werden.
  • Ferner wird der Begriff „basierend auf“ oder „auf der Grundlage“ verwendet, um einen oder mehrere Faktoren zu beschreiben, die eine Bestimmung beeinflussen. Dieser Begriff schließt zusätzliche Faktoren, die eine Bestimmung beeinflussen können, nicht aus. Das heißt, eine Bestimmung kann ausschließlich auf diesen Faktoren beruhen oder zumindest teilweise auf diesen Faktoren beruhen. Es sei die Formulierung „A auf der Grundlage von B bestimmen“ betrachtet. Während in diesem Fall B ein Faktor ist, der die Bestimmung von A beeinflusst, schließt eine solche Formulierung nicht aus, dass die Bestimmung von A auch auf C basiert. In anderen Fällen kann A ausschließlich basierend auf B bestimmt werden.
  • Hier kann ein Datenelement, ein Datenposten, ein Dateneintrag oder ein Dateneintrag eine Folge von Bits sein. Beispielsweise kann das Datenelement den Inhalt einer Datei, einen Teil der Datei, eine Seite im Speicher, ein Objekt in einem objektorientierten Programm, eine digitale Nachricht, ein digitales gescanntes Bild, einen Teil eines Video- oder Audiosignals, Metadaten oder jede andere Einheit umfassen, die durch eine Folge von Bits dargestellt werden kann. Gemäß einer Ausführungsform kann das Datenelement ein diskretes Objekt umfassen. Nach einer anderen Ausführungsform können die Daten eine Informationseinheit innerhalb eines Übertragungspakets zwischen zwei verschiedenen Komponenten enthalten.
  • Eine Ausführungsform der Offenbarung stellt ein Speichersystem, ein Datenverarbeitungssystem und einen Betriebsprozess oder ein Verfahren bereit, die schnell und zuverlässig Daten in eine Speichereinrichtung verarbeiten können, indem sie die Betriebskomplexität und die Betriebsverhaltensverschlechterung des Datenverarbeitungssystems und des Speichersystems reduzieren, wodurch die Nutzungseffizienz des Datenverarbeitungssystems und der Speichereinrichtung verbessert wird.
  • Ausführungsformen der offenbarten Technologie werden nun unter Bezugnahme auf die beiliegenden Zeichnungen beschrieben, in denen gleiche Zahlen auf gleiche Elemente verweisen.
  • 1 zeigt ein Datenverarbeitungssystem gemäß einer Ausführungsform der offenbarten Technologie.
  • Wie in 1 dargestellt, kann das Datenverarbeitungssystem 100 einen Host 102 und ein Speichersystem 110 umfassen. Der Host 102 kann ein Computergerät, (auch als Computereinrichtung bezeichnet), ein mobiles Gerät oder ein Netzwerkgerät sein. Das Speichersystem 110 kann Daten speichern oder gespeicherte Daten entsprechend einer vom Host 102 eingegebenen Anforderung ausgeben. In 1 ist ein Computergerät mit einer Zentralverarbeitungseinheit (CPU) 104 oder einer Anwendung (App) 104 als Beispiel für den Host 102 dargestellt, und eine in dem Computergerät enthaltene Speichereinrichtung (SSD) ist als Beispiel für das Speichersystem 110 dargestellt. Die internen Konfigurationen des Hosts 102 und des Speichersystems 110 können je nach Ausführungsform der offenbarten Technologie variieren.
  • Der Host 102 und das Speichersystem 110 können jeweils eine Schnittstelleneinrichtung enthalten, die in der Lage ist, eine Datenkommunikation zwischen ihnen durchzuführen. Beispielsweise können der Host 102 und das Speichersystem 110 eine PCI-Express-Schnittstelle oder eine NVM-Express-Schnittstelle (NVMe) enthalten. Die NVM Express (NVMe)-Schnittstelle kann eine erweiterbare Host-Controller-Schnittstelle umfassen, die auf die Bedürfnisse von Unternehmens- und Client-Systemen zugeschnitten ist, die PCI Express-basierte Solid-State-Laufwerke verwenden. Der Host 102 kann eine parallele Verarbeitung einer Vielzahl von Dateneingabe-/Ausgabeoperationen unterstützen.
  • Der Host 102 und das Speichersystem 110 können Mehrwegeingabe/- ausgabe (E/A) und gemeinsame Nutzung von Namensräumen (Namespace Sharing) unterstützen. Ein Namensraum d. h. Namespace kann einer Menge an nichtflüchtigem Speicher entsprechen, der in logische Blöcke formatiert werden kann. Der Host 102 kann den Zugriff auf mehrere Namespaces unterstützen, die durch Namespace-Identifikatoren (IDs) referenziert werden. Der Host 102 kann Namespace-Management- und Attach-Namespace-Befehle verwenden, um Namespaces zu erstellen oder zu löschen. Beispielsweise kann der Host 102 einen Befehl zur Verwaltung von Namespaces oder einen Befehl zur Verbindung von Namespaces verwenden, um einen nichtflüchtigen Speicherbereich zu erstellen oder zu löschen, der als spezifischer Namespace im Speichersystem 110 festgelegt ist.
  • In einigen Ausführungsformen kann der Host 102 mehrere Eingabe-/Ausgabekerne umfassen. Dabei kann ein Kern als einer der in 2 dargestellten Mehrkernprozessoren betrachtet werden.
  • Ein erster Eingabe/Ausgabe-Kern (Core#0) 170 kann die Datenkommunikation zwischen dem Host 102 und dem Speichersystem 110 unterstützen. Die Datenkommunikation wird auf der Grundlage eines Paars von Warteschlangen durchgeführt, zu denen eine Übermittlungswarteschlange (Submission Queue, SQ) 167 und eine Abschlusswarteschlange (Completion Queue, CQ) 168 gehören. Ein Dateneingabe-/Ausgabebefehl (z. B. eine Leseanforderung oder eine Schreibanforderung) kann in der Übermittlungswarteschlange (SQ) 167 im Host 102 gespeichert werden, und ein Abschlusssignal, das dem Dateneingabe-/Ausgabebefehl entspricht, kann in der Abschlusswarteschlange (CQ) 168 gespeichert werden. Die Übermittlungswarteschlange (SQ) 167 und die Abschlusswarteschlange (CQ) 168 können im Host-Speicher 106 des Hosts 102 angeordnet oder gebildet werden.
  • Eine Anwendung oder die zentrale Verarbeitungseinheit 104 des Hosts 102 kann einen Befehl zur Durchführung einer Dateneingabe-/ausgabeoperation mit dem Speichersystem 110 erzeugen, und der erste Eingabe-/Ausgabekern (Core#0) 170 kann den Befehl in die Übermittlungswarteschlange 167 aufnehmen oder speichern. Der erste Ein-/Ausgabekern (Core#0) 170 kann einen in der Übermittlungswarteschlange (SQ) 167 gespeicherten Befehl als Reaktion auf eine Anforderung vom Speichersystem 110 übertragen, oder das Speichersystem 110 kann auf die Übermittlungswarteschlange (SQ) 167 zugreifen, um den darin gespeicherten Befehl zu erhalten. In der Übermittlungswarteschlange (SQ) 167 gespeicherte Befehle können durch den ersten Eingabe/Ausgabe-Kern (Core#0) 170 sequentiell vom Host 102 an das Speichersystem 110 übertragen werden. Nachdem es den Befehl vom Host 102 erhalten hat, kann das Speichersystem 110 eine dem Befehl entsprechende Dateneingabe-/Ausgabeoperation durchführen und ein dem Befehl entsprechendes Abschlusssignal an den Host 102 senden. Das Abschlusssignal kann in der Abschlusswarteschlange (CQ) 168 gespeichert werden. Der erste Eingabe-/Ausgabekern (Core#0) 170 kann den Befehl aus der Übermittlungswarteschlange (SQ) 167 als Reaktion auf das in der Abschlusswarteschlange (CQ) 168 gespeicherte Abschlusssignal freigeben. In einigen Implementierungen ist der Controller so konfiguriert, dass er eine Freigabeanforderung vom Speichersystem sendet, um den Befehl freizugeben. In diesem Fall sendet das Speichersystem 110 die dem Befehl entsprechende Freigabeanforderung an den Host 102, nachdem das Speichersystem 110 die dem Befehl entsprechende Dateneingabe-/Ausgabeoperation durchführen kann. Der erste Eingabe/Ausgabe-Kern (Core#0) 170 kann den Befehl aus der Übermittlungswarteschlange (SQ) 167 in Reaktion auf die vom Speichersystem 110 empfangene Freigabeanforderung freigeben.
  • Ein Eingabe/Ausgabe (E/A)-Befehlssatz in der Datenkommunikation zwischen dem Host 102 und dem Speichersystem 110 kann mit einem Eingabe/Ausgabe (E/A)-Warteschlangenpaar verwendet werden. Der erste Eingabe/Ausgabe-Kern (Core#0) 170 im Host 102 kann einen Eingabe/Ausgabe (E/A)-Befehlssatz auswählen, der für alle Eingabe/Ausgabe (E/A)-Warteschlangenpaare verwendet wird. Ein E/A-Befehlssatz verwendet ein E/A-Warteschlangenpaar. Der Host 102 kann Warteschlangen bis zu einem Maximum erstellen, das für die Datenkommunikation durch den ersten Eingabe/Ausgabe-Kern (Core#0) 170 unterstützt wird. Der Host 102 kann eine Anzahl von Befehlswarteschlangen auf der Grundlage einer Systemkonfiguration und einer erwarteten Arbeitslast erstellen. Außerdem kann der Host 102 eine Vielzahl von Prozessorkernen wie den ersten Eingabe-/Ausgabekern (Core#0) 170 umfassen.
  • Die Übermittlungswarteschlange (SQ) 167 kann ein Ringpuffer mit einer festen Slot-Größe sein, den der Host 102 verwendet, um Befehle zur Ausführung durch die ersten Eingabe-/Ausgabekerne (Core#0) 170 im Host 102 zu übermitteln/abzugeben (submit). Die ersten Ein-/Ausgabekerne (Core#0) 170 können ein entsprechendes SQ-Tail-Doorbell-Register aktualisieren, wenn ein bis n neue Befehle auszuführen sind. Der vorherige SQ Tail-Wert kann in den ersten Eingangs-/Ausgangskernen (Core#0) 170 überschrieben werden, wenn es ein neues Doorbell-Register Schreiben gibt. Die ersten Ein-/Ausgabekerne (Core#0) 170 können SQ-Einträge der Reihe nach aus der Eingabewarteschlange (SQ) 167 abrufen, können diese Befehle dann aber in beliebiger Reihenfolge ausführen.
  • Jeder Eintrag in der Übermittlungswarteschlange kann ein Befehl mit einer vorgegebenen Größe sein. Befehle sind zum Beispiel 64 Byte groß. Die für Datenübertragungen zu verwendenden physischen Speicherplätze im Host-Speicher 106 werden mit PRP-Einträgen (Physical Region Page) oder SGL-Einträgen (Scatter Gather Lists) angegeben. Jeder Befehl kann zwei PRP-Einträge oder ein Scatter Gather List (SGL)-Segment enthalten. Wenn mehr als zwei PRP-Einträge zur Beschreibung eines Host-Datenpuffers (nachstehend als Schreibdatenpuffer bezeichnet) 166 erforderlich sind, dann wird ein Zeiger auf eine PRP-Liste bereitgestellt, die eine Liste von PRP-Einträgen beschreiben kann. Wenn mehr als ein SGL-Segment zur Beschreibung des Schreibdatenpuffers 166 erforderlich ist, dann kann das SGL-Segment einen Zeiger auf das nächste SGL-Segment enthalten.
  • Die Abschlusswarteschlange (CQ) 168 kann ein Ringpuffer mit einer festen Slot-Größe sein, in dem der Status für abgeschlossenen Befehle gespeichert wird. Ein abgeschlossener Befehl kann durch eine Kombination aus dem zugehörigen SQ-Identifizierer und dem Befehlsidentifizierer, der vom ersten Eingabe-/Ausgabekern (Core#0) 170 zugewiesen wird, eindeutig identifiziert werden. Gemäß einer Ausführungsform können mehrere Übermittlungswarteschlangen SQ mit einer einzigen Abschlusswarteschlange CQ verbunden sein. So kann beispielsweise ein einziger Worker-Thread alle Befehlsabschlüsse über die einzige Abschlusswarteschlange (Completion Queue) CQ verarbeiten, auch wenn diese Befehle von den mehreren Übermittlungswarteschlangen (Submission Queues) SQs stammen. Der Zeiger auf den CQ-Kopf (CQ-Head) kann vom ersten Ein-/Ausgabe-Core (Core#0) 170 aktualisiert werden, nachdem er Einträge in der Abschlusswarteschlange (CQ) verarbeitet hat, wobei der letzte freie CQ-Eintrag angegeben wird. Im Abschlusswarteschlangen-(CQ)-Eintrag ist ein Phasenbit (Phase-Bit) definiert, das anzeigt, ob ein Eintrag ohne Abfrage eines Registers neu geposted worden ist. Dadurch kann der erste Ein-/Ausgabekern (Core#0) 170 feststellen, ob der neue Eintrag als Teil der vorherigen oder der aktuellen Runde von Abschlussbenachrichtigungen geposted wurde. Beispielsweise kann der erste Ein-/Ausgabekern (Core#0) 170 bei jeder Runde durch die Einträge in der Abschlusswarteschlange (CQ) das Phasenbit invertieren.
  • In 1 kann das Speichersystem 110 einen Controller 130 und eine Speichereinrichtung 150 enthalten. Die Speichereinrichtung 150 kann eine Vielzahl von nichtflüchtigen Speicherzellen enthalten, die in der Lage sind, ein vom Host 102 übertragenes Datenelement zu speichern oder ein gespeichertes Datenelement als Reaktion auf eine vom Host 102 eingegebene Anforderung auszugeben. Der Controller 130 kann so konfiguriert sein, dass er die in der Speichereinrichtung 150 durchgeführten Dateneingabe-/Ausgabeoperationen steuert und die Datenkommunikation mit dem Host 102 durchführt. Der Controller 130 kann einen internen Puffer (nachstehend als Datenpuffer bezeichnet) 164 zum Speichern von Daten enthalten, die mit einer in der Speichereinrichtung 150 durchgeführten Dateneingabe-/Ausgabeoperation verbunden sind. Der Controller 130 kann eine DMA (direkter Speicherzugriff, Direct Memory Access)-Steuerschaltung 162 enthalten, die einen direkten Speicherzugriff (DMA) bei der Datenkommunikation mit dem Host 102 unterstützt. Der direkte Speicherzugriff (DMA) ist ein Steuerschema eines Computersystems, das es einem bestimmten Hardware-Subsystem ermöglicht, unabhängig von der Zentralverarbeitungseinheit (CPU) oder der Anwendung 104 im Host 102 auf den Host-Speicher 106 zuzugreifen. Bei einem PlO-Verfahren (Programmed Input/Output; programmierte Eingabe/Ausgabe) zum Austausch von Daten zwischen einer Peripherieeinrichtung wie einem Netzwerkadapter oder einer ATA-Speichereinrichtung und einer Zentralverarbeitungseinheit können alle zwischen den Komponenten und Einrichtungen übertragenen Daten die Zentralverarbeitungseinheit 104 passieren. Andererseits kann die DMA-Steuerschaltung 162 unabhängig von der Zentralverarbeitungseinheit (CPU) oder der Anwendung 104 auf den Host-Speicher 106 zugreifen, wodurch das Dateneingabe-/ausgabe-Betriebsverhalten des Datenverarbeitungssystems verbessert wird.
  • Der erste Eingabe-/Ausgabekern (Core#0) 170 kann die Übermittlungswarteschlange (SQ) 167 und die Abschlusswarteschlange (CQ) 168 im Host-Speicher 106 des Hosts 102 einstellen. Der Host-Speicher 106 kann außerdem den Schreibdatenpuffer (WRB) 166 enthalten, auf den das Speichersystem 110 direkt zugreifen kann. Die DMA-Steuerschaltung 162 im Controller 130 kann auf den Schreibdatenpuffer (WRB) 166 im Host-Speicher 106 zugreifen und im Schreibdatenpuffer (WRB) 166 gespeicherten Programmdaten PG_DATA abrufen, wenn ein verfügbarer Platz zum Speichern von Programmdaten im Datenpuffer 164 im Speichersystem 110 erkannt wird. Interne Ressourcen im Speichersystem 110 können begrenzt sein, da es schwierig sein könnte, interne Ressourcen hinzuzufügen, nachdem das Speichersystem 110 hergestellt wurde. Der Host 102 kann jedoch mehr Ressourcen enthalten als das Speichersystem 110, und es kann einfach sein, Ressourcen im Host 102 hinzuzufügen oder zu ändern, um das Betriebsverhalten zu verbessern. Dementsprechend kann die Direktspeicherzugriffs-DMA-Steuerschaltung 162 im Controller 130 den Schreibdatenpuffer WRB 166 im Host-Speicher 106 als weitere Ressource zur Verbesserung des Betriebsverhaltens des Speichersystems 110 nutzen. Die Direktspeicherzugriffs-Steuerschaltung 162 kann ein Timing für das Bringen (Bring) oder Abrufen (Getting) der Programmdaten PG_DATA für eine in der Speichereinrichtung 150 ausgeführte Programmoperation bestimmen oder anpassen. Dieser Vorgang kann es dem Speichersystem 110 ermöglichen, eine Begrenzung der internen Ressourcen zu überwinden und dann das Dateneingabe-/ausgabe-Betriebsverhalten zu verbessern.
  • Beispielsweise kann die CPU oder Anwendung 104 des Hosts 102 versuchen, eine große Datenmenge zu erzeugen und die große Datenmenge im Speichersystem 110 zu speichern. Der erste Eingabe-/Ausgabekern (Core#0) 170 (oder mindestens ein E/A-Kern) des Hosts 102 kann mehrere Programmbefehle (PG_CMD) erkennen, die der großen Datenmenge in der Übermittlungswarteschlange (SQ) 167 entsprechen. Gemäß einer Ausführungsform kann die Betriebsgeschwindigkeit des Hosts 102 mehrere bis mehrere tausend Mal schneller sein als die des Speichersystems 110. Auch wenn der erste Eingabe/Ausgabe-Kern (Core#0) 170 eine große Anzahl von Programmbefehlen in der Übermittlungswarteschlange (SQ) 167 erkennt, könnte die Dateneingabe/Ausgabegeschwindigkeit des Speichersystems 110, insbesondere die Geschwindigkeit des Programmbetriebs der Speichereinrichtung 150, nicht schnell sein, so dass es für den ersten Eingabe/Ausgabe-Kern (Core#0) 170 schwierig ist, die in der Übermittlungswarteschlange (SQ) 167 gespeicherten Einträge mit hoher Geschwindigkeit zu reduzieren. Darüber hinaus kann die Speicherkapazität des Host-Speichers 106 zehn- bis mehrtausendmal größer sein als die Speicherkapazität des Datenpuffers 164 im Speichersystem 110. Obwohl das Speichersystem 110 eine große Datenmenge (d. h. die Programmdaten PG_DATA) vom Host 102 empfängt und die große Datenmenge im Datenpuffer 164 speichert, verbleibt daher eine große Anzahl von Programmbefehlen (PG_CMD) in der Übermittlungswarteschlange (SQ) 167, bis die große Datenmenge in der Speichereinrichtung 150 programmiert ist. In diesem Fall wird das Dateneingabe-/ausgabe-Betriebsverhalten des Datenverarbeitungssystems 100 aufgrund der Programmverarbeitungsgeschwindigkeit des Speichersystems 110 herabgesetzt.
  • Gemäß einer Ausführungsform kann der Controller 130 im Speichersystem 110 Programmdaten PG_DATA aus dem Schreibdatenpuffer WRB 166 abrufen (fetch) oder erhalten (get), die einem Programmbefehl PG_CMD in der Übermittlungswarteschlange 167 entsprechen. Dann kann der Controller 130 so konfiguriert sein, dass er an den Host 102 ein Signal E_C für die vorzeitige Beendigung bezüglich des Programmbefehls PG_CMD sendet, bevor eine Programmoperation in Bezug auf die Programmdaten PG_DATA in der Speichereinrichtung 150 abgeschlossen wird. Das vorzeitige Abschlusssignal E_C kann der Abschlusswarteschlange 168 im Host 102 hinzugefügt werden. In dem Speichersystem 110, das nichtflüchtige Speicherzellen enthält, kann die Zeit, die für eine Operation zur Programmierung von Daten aufgewendet wird, länger sein als die Zeit, die für die Verarbeitung der Daten im Host 102 aufgewendet wird. Wenn das Speichersystem 110 das Signal E_C für die vorzeitige Beendigung des Programmbefehls PG_CMD an den Host 102 vor der Beendigung der Programmierung sendet, kann der Host 102 erkennen, dass der Dateneingabe-/Ausgabevorgang des Speichersystems 110 schnell durchgeführt wird. Obwohl das Speichersystem 110 das Signal E_C für den vorzeitigen Abschluss an den Host 102 sendet, bevor die Programmdaten PG_DATA nicht in der Speichereinrichtung 150 programmiert sind, würden die Programmdaten PG_DATA in dem Datenpuffer 164 oder dem Schreibdatenpuffer 166 des Host-Speichers 106 gespeichert werden. Dementsprechend kann der Controller 130 selbst dann, wenn ein Fehler im Datenpuffer 164 des Speichersystems 110 auftritt oder ein Programmvorgang im Speichersystem 110 durchgeführt wird, die entsprechenden Programmdaten PG_DATA aus dem Schreibdatenpuffer (WRB) 166 des Hosts 102 wieder abrufen oder erhalten, so dass der Programmvorgang gewährleistet werden kann.
  • Gemäß einer Ausführungsform kann der erste Eingabe/Ausgabe-Kern (Core#0) 170 des Hosts 102, wenn das Speichersystem 110 das Signal E_C für die frühzeitige Beendigung zur Beendigungswarteschlange 168 des Hosts 102 hinzufügt, das in der Beendigungswarteschlange (CQ) 168 enthaltene Signal E_C für die frühzeitige Beendigung überprüfen und erkennen, welcher Programmbefehl mit dem Signal E_C für die frühzeitige Beendigung verbunden ist. Der Host 102 oder der erste Ein-/Ausgabekern (Core#0) 170 kann den Programmbefehl PG_CMD aus der Übermittlungswarteschlange SQ 167 freigeben, basierend auf dem in der Abschlusswarteschlange (CQ) 168 gespeicherten Signal E_C für den frühen Abschluss. Selbst wenn der erste Ein-/Ausgabekern (Core#0) 170 des Hosts 102 den Programmbefehl PG_CMD aus der Übermittlungswarteschlange 167 freigibt, werden die dem freigegebenen Programmbefehl PG_CMD entsprechenden Programmdaten PG_DATA möglicherweise nicht aus dem Schreibdatenpuffer (WRB) 166 gelöscht oder freigegeben.
  • Gemäß einer Ausführungsform kann das Speichersystem 110, wenn die Ressourcen für die Durchführung einer Programmoperation entsprechend dem Programmbefehl PG_CMD gesichert und zugewiesen sind, das Signal E_C für den vorzeitigen Abschluss in die Abschlusswarteschlange 168 im Host 102 aufnehmen. Das Speichersystem 110 kann das vorzeitige Abschlusssignal E_C an den Host 102 senden, wenn das Speichersystem 110 garantiert, dass Programmdaten, die dem Programmbefehl PG_CMD entsprechen, in der Speichereinrichtung 150 programmiert sind. Die DMA-Steuerschaltung 162 kann die im Schreibdatenpuffer 166 im Host-Speicher 106 gespeicherten Programmdaten PG_DATA bringen oder holen, wenn im Datenpuffer 164 ein freier Platz vorhanden ist. Vor der Übertragung des Signals E_C für den vorzeitigen Abschluss kann das Speichersystem 110 die Programmdaten PG_DATA aus dem Schreibdatenpuffer (WRB) 166 abrufen und die Programmdaten PG_DATA in dem Datenpuffer 164 speichern. Gemäß einer Ausführungsform kann der Controller 130, bevor sie das Signal E_C zum vorzeitigen Abschluss an den Host 102 sendet, die im Datenpuffer 164 gespeicherten Programmdaten PG_DATA an die Speichereinrichtung 150 senden. Gemäß einer anderen Ausführungsform kann der Controller 130 das Signal E_C zum vorzeitigen Abschluss an den Host 102 senden, noch bevor er die im Datenpuffer 164 gespeicherten Programmdaten PG_DATA an die Speichereinrichtung 150 sendet, wenn gewährleistet ist, dass die Programmdaten PG_DATA in nichtflüchtigen Speicherzellen der Speichereinrichtung 150 programmiert sind.
  • Nachdem die Speichereinrichtung 150 die Programmdaten PG_DATA in die nichtflüchtigen Speicherzellen programmiert hat, kann die Speichereinrichtung 150 dem Controller 130 mitteilen, dass der Programmierbetrieb abgeschlossen ist. Der Controller 130 kann eine Pufferfreigabeanforderung BRC in die Pufferfreigabewarteschlange (BRQ) 169 im Host-Speicher 106 als Reaktion auf den Programmabschluss der Speichereinrichtung 150 einfügen. Die Pufferfreigabeanforderung BRC wird von dem Controller 130 gesendet, wenn die entsprechenden Programmdaten PG_DATA in die Speichereinrichtung 150 programmiert sind.
  • Die Pufferfreigabewarteschlange (BRQ) 169 im Host-Speicher 106 kann zur Freigabe der im Schreibdatenpuffer 166 im Host-Speicher 106 gespeicherten Programmdaten PG_DATA verwendet werden. Da das Speichersystem 110 das Signal E_C zur vorzeitigen Beendigung d. h. zum vorzeiten Abschluss an den Host 102 sendet, bevor der Programmierbetrieb abgeschlossen ist, kann der Host 102 die Programmdaten PG_DATA aus dem Schreibdatenpuffer 166 des Host-Speichers 106 als Reaktion auf das Signal E_C zur vorzeitigen Beendigung nicht freigeben.
  • Wenn ein Speicherplatz des Datenpuffers 164 im Speichersystem 110 ausreicht und die Programmdaten PG_DATA sicher gehalten werden können, bis die Programmdaten PG_DATA in die Speichereinrichtung 150 programmiert sind, kann der Host 102 die Programmdaten PG_DATA aus dem Schreibdatenpuffer 166 als Reaktion auf das Signal E_C für den vorzeitigen Abschluss freigeben, das in den Host 102 eingegeben wird. Das Speichersystem 110 kann das Signal E_C zur vorzeitigen Beendigung verwenden, um die vom Host 102 angeforderte Dateneingabe-/Ausgabeoperation schneller durchzuführen und dabei die im Host 102 enthaltenen Ressourcen mit der Begrenzung der Ressourcen im Speichersystem 110 effizienter zu nutzen. Wenn das vorzeitige Beendigungssignal E_C in der Abschlusswarteschlange 168 enthalten ist, kann der Host 102 den Programmbefehl PG_CMD, der in der Übermittlungswarteschlange 167 enthalten ist, freigeben, während die Programmdaten PG_DATA nicht aus dem Schreibdatenpuffer (WRB) 166 freigegeben werden. Dementsprechend werden die Programmdaten PG_DATA als Reaktion auf das Signal E_C für den vorzeitigen Abschluss nicht aus dem Schreibdatenpuffer (WRB) 166 freigegeben.
  • Nach Beendigung einer Programmoperation bezüglich der Programmdaten PG_DATA kann das Speichersystem 110 eine Pufferfreigabeanforderung BRC in die Pufferfreigabewarteschlange (BRQ) 169 hinzufügen. Der erste Ein-/Ausgabekern 170 des Hosts 102 kann die in der Pufferfreigabewarteschlange (BRQ) 169 enthaltene Pufferfreigabeanforderung BRC prüfen und die der Pufferfreigabeanforderung BRC entsprechenden Programmdaten PG_DATA aus dem Schreibdatenpuffer (WRB) 166 freigeben.
  • In einigen Ausführungsformen kann der Controller 130 im Speichersystem 110, nachdem er die Programmdaten PG_DATA, die dem Programmierbetrieb entsprechen, an die Speichereinrichtung 150 übertragen hat, die entsprechenden Programmdaten PG_DATA aus dem Datenpuffer 164 freigeben, bevor die Speichereinrichtung 150 die Programmoperation bezüglich der Programmdaten PG_DATA abschließt. In diesem Fall kann ein verfügbarer Platz des Datenpuffers 164 im Speichersystem 110 verwendet werden, um andere Programmdaten oder andere Betriebsinformationen zu speichern. Wenn jedoch der Controller 130 die Programmdaten PG_DATA aus dem Datenpuffer 164 freigibt, bevor die Speichereinrichtung 150 den Abschluss des Programmvorgangs an den Controller 130 sendet, kann ein Fehler in dem in der Speichereinrichtung 150 durchgeführten Programmierbetrieb auftreten. Um eine Wiederherstellung von dem Fehler oder eine Behebung des Fehlers durchzuführen, kann die DMA-Steuerschaltung 162 auf die im Schreibdatenpuffer (WRB) 166 im Host-Speicher 106 gespeicherten Programmdaten PG_DATA zugreifen und diese erneut abrufen.
  • Gemäß einer Ausführungsform kann der Controller 130 im Speichersystem 110 die im Datenpuffer 164 gespeicherten Programmdaten PG_DATA beibehalten (nicht freigeben), bis die Speichereinrichtung 150 die Programmieroperation bezüglich der Programmdaten PG_DATA abschließt. In diesem Fall kann der Controller 130 die im Datenpuffer 164 gespeicherten Programmdaten PG_DATA erneut an die Speichereinrichtung 150 übertragen, ohne auf die Programmdaten PG_DATA im Host-Speicher 106 zuzugreifen, selbst wenn bei der Programmieroperation ein Fehler auftritt.
  • Wie oben beschrieben, werden, nachdem das Speichersystem 110 den Programmbefehl PG_CMD, der in der vom Host 102 eingerichteten Übermittlungswarteschlange (SQ) 167 gespeichert ist, holt oder erhalten hat, verfügbare Ressourcen im Speichersystem 110 für die Durchführung der Programmieroperation bezüglich der Programmdaten PG_DATA, die im Schreibdatenpuffer 166 im Host-Speicher 106 gespeichert sind, gesichert, und dann kann das Speichersystem 110 die Programmdaten PG_DATA abrufen. Im Speichersystem 110 gibt es eine Zeitdifferenz zwischen dem Abrufen (Holen) oder Erhalten des Programmbefehls PG_CMD, der in der Übermittlungswarteschlange 167 enthalten ist, und den Programmdaten PG_DATA, die dem Programmbefehl PG_CMD entsprechen und im Schreibdatenpuffer 166 gespeichert sind.
  • Ferner kann das Speichersystem 110 das Signal E_C für den vorzeitigen Abschluss an die Abschlusswarteschlange 168 senden, nachdem es die Programmdaten PG_DATA erhalten hat, die dem im Schreibdatenpuffer (WRB) 166 gespeicherten Programmbefehl PG_CMD entsprechen. Der Zeitpunkt des Sendens des Signals E_C für die vorzeitige Beendigung kann früher sein als der Zeitpunkt der Beendigung der Programmoperation bezüglich der Programmdaten PG_DATA in der Speichereinrichtung 150. Dementsprechend ist es für den Host 102 schwierig, den Schreibdatenpuffer (WRB) 166 auf der Grundlage des Signals für die frühzeitige Beendigung E_C zu steuern, das der Abschlusswarteschlange 168 hinzugefügt wird. In einer Ausführungsform kann der Host 102 eine Pufferfreigabewarteschlange 169 im Host-Speicher 106 einrichten, und das Speichersystem 110 kann eine Pufferfreigabeanforderung (BRC) an die Pufferfreigabewarteschlange 169 senden. Der Host 102 kann den Schreibdatenpuffer 166 auf der Grundlage eines Eintrags in der Pufferfreigabewarteschlange 169 steuern und verwalten.
  • Das Speichersystem 110 kann den Host-Speicher 106 im Host 102 nutzen, um eine Begrenzung der internen Ressourcen im Speichersystem 110 zu überwinden. Darüber hinaus wird gezeigt, dass von der CPU oder der Anwendung 104 im Host 102 angeforderte Dateneingabe-/Ausgabebefehle schnell ausgeführt werden, da die Dateneingabe-/Ausgabebefehle von den Übermittlungswarteschlangen (SQ) 167 freigegeben werden können. Bei diesem Verfahren können der Host 102 und das Speichersystem 110 verschiedene Warteschlangen verwenden, um Dateneingabe-/Ausgabebefehle und den Daten entsprechende Daten zu steuern (z. B. zurückzuhalten oder freizugeben). Dementsprechend kann der Host 102 auch die Ressourcen des Host-Speichers 106 effizienter steuern und verwalten.
  • Eine Ausführungsform der offenbarten Technologie kann auf das Datenverarbeitungssystem anwendbar sein, bei dem die Geschwindigkeit der Datenkommunikation für den Austausch von Befehlen oder Daten zwischen dem Host und dem Speichersystem schneller ist als die der im Speichersystem durchgeführten Dateneingabe-/ausgabeoperationen. Das Speichersystem kann einen gemeinsam genutzten Speicher oder einen gemeinsam genutzten Speicherbereich verwenden, der im Host enthalten ist, um einen Engpass bei der Datenkommunikation zwischen dem Host und dem Speichersystem zu reduzieren oder zu vermeiden, der durch eine Begrenzung der Ressourcen für die Verarbeitung von Host-Befehlen verursacht werden kann. Insbesondere kann das Speichersystem eine Schreibanforderung (oder einen Programmbefehl) und vom Host zu übertragende Programmdaten prüfen und als Reaktion auf einen Betriebszustand des Datenpuffers bestimmen, ob die im Host gespeicherten Programmdaten in einen im Speichersystem enthaltenen Datenpuffer gebracht oder geholt werden sollen oder ob die Programmdaten in den gemeinsamen Speicherbereich im Host verschoben werden sollen.
  • Als Reaktion auf eine vom Host erzeugte Schreibanforderung kann das Speichersystem ein erstes Freigabesignal an den Host, das anzeigt, ob es garantiert ist, eine der Schreibanforderung und den Programmdaten entsprechende Operation abzuschließen, und ein zweites Freigabesignal, das anzeigt, ob die der Schreibanforderung und den Programmdaten entsprechende Operation abgeschlossen wurde, senden. Der Host kann einen Host-Speicher als Reaktion auf zwei verschiedene Freigabesignale, die vom Speichersystem gesendet werden, verwalten und steuern, wodurch die Effizienz erhöht und der Overhead der Speicherverwaltung reduziert wird. Das Speichersystem kann ein Signal oder eine Anforderung zur Freigabe von Informationen oder Daten senden, die in einem vom Host bereitgestellten gemeinsamen Speicher gespeichert sind, so dass das Speichersystem Transparenz bei der Steuerung des im Host enthaltenen gemeinsamen Speicherbereichs hat und der Host einen Betriebsstatus des gemeinsamen Speicherbereichs eindeutig überwachen kann. Als Reaktion auf den Betriebsstatus des gemeinsam genutzten Speicherbereichs kann der Host versuchen, einen zusätzlichen Bereich für den gemeinsam genutzten Speicherbereich zuzuweisen oder einen Teil des gemeinsam genutzten Speichers für andere Verwendungen umzuwandeln, wodurch die Verfügbarkeit der im Host enthaltenen Ressourcen verbessert wird.
  • Nachstehend werden Beschreibungen vorgenommen, die sich auf Vorgänge oder Komponenten konzentrieren, die technisch zwischen dem Controller 130 und der in 1 und 2 bis 4 beschriebenen Speichereinrichtung 150 unterschieden werden können. Insbesondere wird eine Flash-Übersetzungsschicht (Flash Translation Layer, FTL) 240 im Controller 130 unter Bezugnahme auf die 3 bis 4 näher beschrieben. Gemäß einer Ausführungsform können die Rollen und Funktionen der Flash-Übersetzungsschicht (FTL) im Controller 130 variiert werden.
  • Die 2 und 3 veranschaulichen einige Vorgänge, die von dem Speichersystem 110 gemäß einer oder mehrerer Ausführungsformen der offenbarten Technologie durchgeführt werden können.
  • Bezugnehmend auf 2 kann das Datenverarbeitungssystem 100 einen Host 102 umfassen, der mit einem Speichersystem, wie dem Speichersystem 110, verbunden oder gekoppelt ist. Beispielsweise können der Host 102 und das Speichersystem 110 über einen Datenbus, ein Hostkabel und dergleichen miteinander verbunden sein, um eine Datenkommunikation durchzuführen.
  • Das Speichersystem 110 kann eine Speichereinrichtung 150 und einen Controller 130 umfassen. Die Speichereinrichtung 150 und der Controller 130 im Speichersystem 110 können als physisch voneinander getrennte Komponenten oder Elemente betrachtet werden. Die Speichereinrichtung 150 und der Controller 130 können über mindestens einen Datenpfad verbunden sein. Der Datenpfad kann zum Beispiel einen Kanal und/oder einen Weg umfassen.
  • Gemäß einer Ausführungsform können die Speichereinrichtung 150 und der Controller 130 funktional getrennte Komponenten oder Elemente sein. In einigen Ausführungsformen können die Speichereinrichtung 150 und der Controller 130 mit einem einzigen Chip oder verschiedenen Chips implementiert werden. Der Controller 130 kann eine Dateneingabe-/Ausgabeoperation als Reaktion auf eine von der externen Einrichtung eingegebene Anforderung durchführen. Wenn der Controller 130 beispielsweise einen Lesevorgang als Reaktion auf eine Leseanforderungseingabe von einem externen Gerät (einer externen Einrichtung) durchführt, werden Daten, die in einer Vielzahl von nichtflüchtigen Speicherzellen in der Speichereinrichtung 150 gespeichert sind, an den Controller 130 übertragen.
  • Wie in 2 dargestellt, kann die Speichereinrichtung 150 eine Vielzahl von Speicherblöcken 152, 154, 156 enthalten. Der Speicherblock 152, 154, 156 kann als eine Gruppe von nichtflüchtigen Speicherzellen verstanden werden, in denen Daten gemeinsam durch einen einzigen Löschvorgang entfernt werden. Obwohl nicht dargestellt, kann der Speicherblock 152, 154, 156 eine Seite enthalten, die eine Gruppe von nichtflüchtigen Speicherzellen ist, die während eines einzigen Programmiervorgangs Daten gemeinsam speichern oder während eines einzigen Lesevorgangs Daten gemeinsam ausgeben. Ein Speicherblock kann beispielsweise eine Vielzahl von Seiten umfassen.
  • Beispielsweise kann die Speichereinrichtung 150 eine Vielzahl von Speicherebenen oder eine Vielzahl von Speicherrohchips umfassen. Gemäß einer Ausführungsform kann die Speicherebene als logische oder physische Partition betrachtet werden, die mindestens einen Speicherblock, eine Treiberschaltung, die in der Lage ist, ein Array mit mehreren nichtflüchtigen Speicherzellen zu steuern, und einen Puffer umfasst, der Daten vorübergehend speichern kann, die in nichtflüchtige Speicherzellen eingegeben oder aus ihnen ausgegeben werden.
  • Darüber hinaus kann der Speicherrohchip (Die) gemäß einer Ausführungsform mindestens eine Speicherebene umfassen. Der Speicherrohchip kann als ein Satz von Komponenten verstanden werden, die auf einem physikalisch unterscheidbaren Substrat implementiert sind. Jeder Speicherrohchip kann über einen Datenpfad mit dem Controller 130 verbunden sein. Jeder Speicherrohchip kann eine Schnittstelle zum Austausch von Daten und Signalen mit dem Controller 130 enthalten.
  • Gemäß einer Ausführungsform kann die Speichereinrichtung 150 mindestens einen Speicherblock 152, 154, 156, mindestens eine Speicherebene oder mindestens einen Speicherrohchip umfassen. Die in den 1 und 2 dargestellte interne Konfiguration der Speichereinrichtung 150 kann je nach Betriebsverhalten des Speichersystems 110 unterschiedlich sein. Eine Ausführungsform der offenbarten Technologie ist nicht auf die in 2 dargestellte interne Konfiguration beschränkt.
  • Bezugnehmend auf 2 kann die Speichereinrichtung 150 eine Spannungsversorgungsschaltung 172 enthalten, die in der Lage ist, zumindest eine gewisse Spannung in den Speicherblock 152, 154, 156 zu liefern. Die Spannungsversorgungsschaltung 172 kann eine Lesespannung Vrd, eine Programmierspannung Vprog, eine Durchlassspannung Vpass oder eine Löschspannung Vers an eine nichtflüchtige Speicherzelle im Speicherblock anlegen. Zum Beispiel kann die Spannungsversorgungsschaltung 172 während eines Lesevorgangs zum Lesen von Daten, die in der nichtflüchtigen Speicherzelle des Speicherblocks 152, 154, 156 gespeichert sind, die Lesespannung Vrd in eine ausgewählte nichtflüchtige Speicherzelle einspeisen. Während des Programmiervorgangs zum Speichern von Daten in der nichtflüchtigen Speicherzelle, die in dem Speicherblock 152, 154, 156 enthalten ist, kann die Spannungsversorgungsschaltung 172 die Programmierspannung Vprog in eine ausgewählte nichtflüchtige Speicherzelle einspeisen. Außerdem kann die Spannungsversorgungsschaltung 172 während eines Lesevorgangs oder eines Programmiervorgangs, der an der ausgewählten nichtflüchtigen Speicherzelle durchgeführt wird, eine Durchlassspannung (Pass-Spannung) Vpass an eine nicht ausgewählte nichtflüchtige Speicherzelle anlegen. Während des Löschvorgangs zum Löschen von Daten, die in der im Speicherblock 152, 154, 156 enthaltenen nichtflüchtigen Speicherzelle gespeichert sind, kann die Spannungsversorgungsschaltung 172 die Löschspannung Vers in den Speicherblock einspeisen.
  • Die Speichereinrichtung 150 kann Informationen über verschiedene Spannungen speichern, die dem Speicherblock 152, 154, 156 zugeführt werden, je nachdem, welcher Vorgang durchgeführt wird. Wenn beispielsweise eine nichtflüchtige Speicherzelle im Speicherblock 152, 154, 156 Multibit-Daten speichern kann, können mehrere Pegel der Lesespannung Vrd zum Erkennen oder Lesen der Multibit-Datenelemente erforderlich sein. Die Speichereinrichtung 150 kann eine Tabelle mit Informationen enthalten, die mehreren Pegeln der Lesespannung Vrd entsprechen, die dem Multibit-Datenelement entsprechen. Die Tabelle kann zum Beispiel in einem Register gespeicherte Vorspannungswerte (sog. Bias-Werte) enthalten, wobei jeder Vorspannungswert einem bestimmten Pegel der Lesespannung Vrd entspricht. Die Anzahl der Vorspannungswerte für die Lesespannung Vrd, die für einen Lesevorgang verwendet wird, kann auf einen voreingestellten Bereich begrenzt sein. Außerdem können die Vorspannungswerte quantisiert werden.
  • Der Host 102 kann ein tragbares elektronisches Gerät (z. B. ein Mobiltelefon, ein MP3-Player, ein Laptop usw.) oder ein nicht tragbares elektronisches Gerät (z. B. ein Desktop-Computer, ein Spielgerät, ein Fernseher, ein Projektor usw.) sein.
  • Der Host 102 kann auch mindestens ein Betriebssystem (OS) enthalten, das die im Host 102 ausgeführten Funktionen und Operationen steuern kann. Das Betriebssystem kann die Interoperabilität zwischen dem Host 102, der mit dem Speichersystem 110 zusammenarbeitet, und einem Benutzer, der Daten im Speichersystem 110 speichern möchte, gewährleisten. Das Betriebssystem (OS) kann Funktionen und Operationen unterstützen, die den Anforderungen des Benutzers entsprechen. Beispielhaft, aber nicht einschränkend, kann das Betriebssystem je nach Mobilität des Hosts 102 in ein allgemeines Betriebssystem und ein mobiles Betriebssystem unterteilt werden. Das allgemeine Betriebssystem kann je nach den Systemanforderungen oder der Benutzerumgebung in ein persönliches Betriebssystem und ein Unternehmensbetriebssystem unterteilt werden. Im Vergleich zum persönlichen Betriebssystem können die Unternehmensbetriebssysteme auf die Sicherung und Unterstützung von Hochleistungsrechnern spezialisiert sein.
  • Das mobile Betriebssystem kann Dienste oder Funktionen für die Mobilität unterstützen (z. B. eine Energiesparfunktion). Der Host 102 kann eine Vielzahl von Betriebssystemen enthalten. Der Host 102 kann mehrere Betriebssysteme ausführen, die mit dem Speichersystem 110 gekoppelt sind, entsprechend der Anforderung eines Benutzers. Der Host 102 kann eine Vielzahl von Befehlen, die den Anforderungen des Benutzers entsprechen, in das Speichersystem 110 übertragen, wodurch Operationen, die der Vielzahl von Befehlen entsprechen, innerhalb des Speichersystems 110 durchgeführt werden.
  • Ein Controller 130 im Speichersystem 110 kann eine Speichereinrichtung 150 als Reaktion auf eine Anforderung oder eine Befehlseingabe vom Host 102 steuern. Beispielsweise kann der Controller 130 einen Lesevorgang durchführen, um dem Host 102 aus der Speichereinrichtung 150 gelesene Daten bereitzustellen, und einen Schreibvorgang (oder einen Programmvorgang) durchführen, um vom Host 102 eingegebene Daten in der Speichereinrichtung 150 zu speichern. Um Dateneingabe-/-ausgabeoperationen (E/A bzw. I/O) durchzuführen, kann der Controller 130 interne Operationen zum Lesen von Daten, Programmieren von Daten, Löschen von Daten oder Ähnliches steuern und verwalten.
  • Gemäß einer Ausführungsform kann der Controller 130 eine Host-Schnittstelle 132, einen Prozessor 134, eine Fehlerkorrekturschaltung 138, eine Energieverwaltungseinheit (PMU) 140, eine Speicherschnittstelle 142 und einen Speicher 144 umfassen. Die im Controller 130 enthaltenen Komponenten, wie sie in 2 dargestellt sind, können je nach Struktur, Funktion, Betriebsleistung oder Ähnlichem in Bezug auf das Speichersystem 110 variieren.
  • Beispielsweise kann das Speichersystem 110 mit verschiedenen Arten von Speichereinrichtungen implementiert werden, die gemäß einem Protokoll einer Host-Schnittstelle elektrisch mit dem Host 102 gekoppelt werden können. Nicht einschränkende Beispiele für geeignete Speichereinrichtungen sind ein Solid-State-Laufwerk (SSD), eine Multimedia-Karte (MMC), eine eingebettete MMC (eMMC), eine MMC mit reduzierter Größe (RS-MMC), eine Mikro-MMC, eine Secure-Digital-Karte (SD), eine Mini-SD, eine Mikro-SD, ein Universal-Serial-Bus-Speichergerät (USB), ein Universal-Flash-Speichergerät (UFS), eine Compact-Flash-Karte (CF), eine Smart-Media-Karte (SM), ein Memory-Stick und dergleichen. Je nach Ausführung des Speichersystems 110 können Komponenten zum Controller 130 hinzugefügt oder weggelassen werden.
  • Der Host 102 und das Speichersystem 110 können jeweils einen Controller oder eine Schnittstelle zum Übertragen und Empfangen von Signalen, Daten und dergleichen gemäß einem oder mehreren vorgegebenen Protokollen enthalten. Beispielsweise kann die Host-Schnittstelle 132 im Speichersystem 110 ein Gerät umfassen, das in der Lage ist, Signale, Daten und dergleichen an den Host 102 zu übertragen oder Signale, Daten und dergleichen vom Host 102 zu empfangen.
  • Die im Controller 130 enthaltene Host-Schnittstelle 132 kann Signale, Befehle (oder Anfragen) und/oder Dateneingaben vom Host 102 über einen Bus empfangen. Beispielsweise können der Host 102 und das Speichersystem 110 einen vorgegebenen Satz von Regeln oder Prozeduren für die Datenkommunikation oder eine voreingestellte Schnittstelle verwenden, um Daten zwischen ihnen zu übertragen und zu empfangen. Beispiele für Sätze von Regeln oder Prozeduren für die Datenkommunikation oder Schnittstellen, die vom Host 102 und dem Speichersystem 110 zum Senden und Empfangen von Daten unterstützt werden, sind Universal Serial Bus (USB), Multi-Media Card (MMC), Parallel Advanced Technology Attachment (PATA), Small Computer System Interface (SCSI), Enhanced Small Disk Interface (ESDI), Integrated Drive Electronics (IDE), Peripheral Component Interconnect Express (PCIe oder PCI-e), Serial-attached SCSI (SAS), Serial Advanced Technology Attachment (SATA), Mobile Industry Processor Interface (MIPI) und dergleichen. Gemäß einer Ausführungsform ist die Hostschnittstelle 132 eine Art Schicht für den Datenaustausch mit dem Host 102 und wird mit einer als Hostschnittstellenschicht (Host Interface Layer, HIL) bezeichneten Firmware implementiert oder von dieser gesteuert. Gemäß einer Ausführungsform kann die Host-Schnittstelle 132 eine Befehlswarteschlange enthalten.
  • Die Integrated Drive Electronics (IDE) oder Advanced Technology Attachment (ATA) kann als eine der Schnittstellen für die Übertragung und den Empfang von Daten verwendet werden und kann zum Beispiel ein Kabel mit 40 parallel geschalteten Drähten verwenden, um die Datenübertragung und den Datenempfang zwischen dem Host 102 und dem Speichersystem 110 zu unterstützen. Wenn mehrere Speichersysteme 110 mit einem einzigen Host 102 verbunden sind, kann die Vielzahl der Speichersysteme 110 in einen Master und einen Slave unterteilt werden, indem eine Position oder ein Dip-Schalter verwendet wird, mit dem die Vielzahl der Speichersysteme 110 verbunden ist. Das als Master eingestellte Speichersystem 110 kann als Hauptspeichereinrichtung verwendet werden. Die IDE (ATA) kann z. B. Fast-ATA, ATAPI oder Enhanced IDE (EIDE) sein.
  • Eine Serial Advanced Technology Attachment (SATA)-Schnittstelle ist eine Art serielle Datenkommunikationsschnittstelle, die mit verschiedenen ATA-Standards für parallele Datenkommunikationsschnittstellen kompatibel ist, die von IDE-Geräten (Integrated Drive Electronics) verwendet werden. Die 40 Drähte der IDE-Schnittstelle können bei der SATA-Schnittstelle auf sechs Drähte reduziert werden. Zum Beispiel können 40 parallele Signale für die IDE-Schnittstelle in 6 serielle Signale für die SATA-Schnittstelle umgewandelt werden. Die SATA-Schnittstelle ist wegen ihrer schnelleren Datenübertragungs- und -empfangsrate und ihres geringeren Ressourcenverbrauchs im Host 102, der für die Datenübertragung und den Datenempfang verwendet wird, weit verbreitet. Über die SATA-Schnittstelle können bis zu 30 externe Geräte/Einrichtungen an einen einzigen Transceiver im Host 102 angeschlossen werden. Darüber hinaus kann die SATA-Schnittstelle Hot-Plugging unterstützen, was es ermöglicht, ein externes Gerät an den Host 102 anzuschließen oder von ihm zu trennen, selbst während die Datenkommunikation zwischen dem Host 102 und einem anderen Gerät ausgeführt wird. So kann das Speichersystem 110 wie ein zusätzliches Gerät angeschlossen oder getrennt werden, wie ein Gerät, das von einem universellen seriellen Bus (USB) unterstützt wird, selbst wenn der Host 102 eingeschaltet ist. Beispielsweise kann das Speichersystem 110 bei einem Host 102 mit einem eSATA-Port wie eine externe Festplatte frei an den Host 102 angeschlossen oder von ihm abgenommen werden.
  • Small Computer System Interface (SCSI) ist eine Art serielle Datenübertragungsschnittstelle, die für die Verbindung eines Computers oder Servers mit anderen Peripheriegeräten verwendet wird. SCSI kann im Vergleich zu anderen Schnittstellen wie IDE und SATA eine hohe Übertragungsgeschwindigkeit bieten. Bei SCSI sind der Host 102 und mindestens ein Peripheriegerät (z. B. das Speichersystem 110) in Reihe geschaltet, aber die Datenübertragung und der Datenempfang zwischen dem Host 102 und jedem Peripheriegerät können über eine parallele Datenkommunikation erfolgen. Bei SCSI ist es einfach, ein Gerät wie das Speichersystem 110 mit dem Host 102 zu verbinden oder von ihm zu trennen. SCSI kann Verbindungen von 15 anderen Geräten mit einem einzigen Transceiver im Host 102 unterstützen.
  • Serial Attached SCSI (SAS) kann als eine serielle Datenkommunikationsversion von SCSI verstanden werden. Bei SAS sind der Host 102 und eine Vielzahl von Peripheriegeräten in Reihe geschaltet, und die Datenübertragung und der Datenempfang zwischen dem Host 102 und jedem Peripheriegerät können in einem seriellen Datenkommunikationsschema durchgeführt werden. Die SAS kann eine Verbindung zwischen dem Host 102 und dem Peripheriegerät über ein serielles Kabel anstelle eines parallelen Kabels unterstützen, um Geräte, die das SAS verwenden, einfach zu verwalten und die Betriebszuverlässigkeit und Kommunikationsleistung zu erhöhen oder zu verbessern. Die SAS kann Verbindungen von acht externen Geräten mit einem einzigen Transceiver im Host 102 unterstützen.
  • Der nichtflüchtige Speicher Express (NVMe) ist eine Art Schnittstelle, die zumindest auf einem Peripheral Component Interconnect Express (PCIe) basiert, um das Betriebsverhalten und die Designflexibilität des Hosts 102, der Server, der Computergeräte und dergleichen, die mit dem Speichersystem 110 ausgestattet sind, zu erhöhen. PCIe kann einen Steckplatz oder ein spezielles Kabel zum Verbinden eines Computergeräts (z. B. Host 102) und eines Peripheriegeräts (z. B. Speichersystem 110) verwenden. PCIe kann beispielsweise eine Vielzahl von Pins (z. B. 18 Pins, 32 Pins, 49 Pins oder 82 Pins) und mindestens einen Draht (z. B. x1, x4, x8 oder x16) verwenden, um eine Hochgeschwindigkeits-Datenkommunikation über mehrere hundert MB pro Sekunde (z. B. 250 MB/s, 500 MB/s, 984,6250 MB/s oder 1969 MB/s) zu erreichen. Gemäß einer Ausführungsform kann das PCIe-Schema Bandbreiten von zehn bis hunderten von Giga-Bits pro Sekunde erreichen. NVMe kann eine Betriebsgeschwindigkeit des Speichersystems 110, z. B. einer SSD, unterstützen, die schneller ist als die einer Festplatte.
  • Gemäß einer Ausführungsform können der Host 102 und das Speichersystem 110 über einen universellen seriellen Bus (USB) verbunden sein. Der universelle serielle Bus (USB) ist eine Art skalierbare, hot-plug-fähige serielle Schnittstelle, die eine kostengünstige Standardverbindung zwischen dem Host 102 und Peripheriegeräten wie einer Tastatur, einer Maus, einem Joystick, einem Drucker, einem Scanner, einem Speichergerät, einem Modem, einer Videokamera und dergleichen ermöglicht. Eine Vielzahl von Peripheriegeräten wie das Speichersystem 110 kann mit einem einzigen Transceiver im Host 102 verbunden werden.
  • Bezugnehmend auf 2 kann die Fehlerkorrekturschaltung 138 Fehlerbits von aus der Speichereinrichtung 150 gelesenen Daten korrigieren und kann einen Fehlerkorrekturcode (ECC)-Kodierer und einen ECC-Dekoder enthalten. Der ECC-Codierer kann eine Fehlerkorrekturcodierung von Daten durchführen, die in der Speichereinrichtung 150 programmiert werden sollen, um codierte Daten zu erzeugen, denen ein Paritätsbit hinzugefügt wird, und die codierten Daten in der Speichereinrichtung 150 speichern. Der ECC-Dekoder kann Fehlerbits, die in den aus der Speichereinrichtung 150 gelesenen Daten enthalten sind, erkennen und korrigieren, wenn der Controller 130 die in der Speichereinrichtung 150 gespeicherten Daten liest. Zum Beispiel bestimmt die Fehlerkorrekturschaltung 138 nach der Durchführung der Fehlerkorrekturdecodierung an den aus der Speichereinrichtung 150 gelesenen Daten, ob die Fehlerkorrekturdecodierung erfolgreich war oder nicht, und gibt ein Anweisungssignal (z.B. ein Korrekturerfolgssignal oder ein Korrekturfehlersignal) aus, das auf einem Ergebnis der Fehlerkorrekturdecodierung basiert. Die Fehlerkorrekturschaltung 138 kann ein Paritätsbit verwenden, das während des ECC-Codierungsprozesses für die in der Speichereinrichtung 150 gespeicherten Daten erzeugt wurde, um die Fehlerbits der gelesenen Daten zu korrigieren. Wenn die Anzahl der Fehlerbits größer oder gleich der Anzahl der korrigierbaren Fehlerbits ist, kann die Fehlerkorrekturschaltung 138 die Fehlerbits nicht korrigieren und stattdessen das Korrekturfehlersignal ausgeben, das den Fehler bei der Korrektur der Fehlerbits anzeigt.
  • Gemäß einer Ausführungsform kann die Fehlerkorrekturschaltung 138 eine Fehlerkorrekturoperation auf der Grundlage einer kodierten Modulation durchführen, wie z. B. eines LDPC-Codes (Low Density Parity Check), eines Bose-Chaudhuri-Hocquenghem-Codes (BCH), eines Turbocodes, eines Reed-Solomon-Codes (RS), eines Faltungscodes, eines rekursiven systematischen Codes (RSC), einer trelliscodierten Modulation (TCM), einer blockcodierten Modulation (BCM) oder dergleichen. Die Fehlerkorrekturschaltung 138 kann alle Schaltungen, Module, Systeme und/oder Geräte zur Durchführung der Fehlerkorrekturoperation auf der Grundlage mindestens eines der oben beschriebenen Codes umfassen. Die in 2 gezeigte Fehlerkorrekturschaltung 138 kann zumindest einige der Komponenten umfassen, die in dem in 1 gezeigten Controller 130 enthalten sind.
  • Der ECC-Dekoder kann beispielsweise eine Hard-Decision-Dekodierung oder eine Soft-Decision-Dekodierung der von der Speichereinheit 150 übertragenen Daten durchführen. Die Hard-Decision-Decodierung kann als eine von zwei Verfahren zur Fehlerkorrektur verstanden werden, die im Allgemeinen klassifiziert werden. Die Hard-Decision-Decodierung kann eine Operation zur Korrektur eines Fehlerbits durch Lesen digitaler Daten von „0“ oder „1" aus einer nichtflüchtigen Speicherzelle in der Speichereinrichtung 150 umfassen. Da die Hard-Decision-Dekodierung ein binäres logisches Signal verarbeitet, kann der Entwurf oder die Konfiguration der Schaltung/des Algorithmus einfacher und die Verarbeitungsgeschwindigkeit schneller sein als bei der Soft-Decision-Dekodierung.
  • Die Soft-Decision-Dekodierung kann eine Schwellenspannung einer nichtflüchtigen Speicherzelle in der Speichereinrichtung 150 durch zwei oder mehr quantisierte Werte (z. B. mehrere Bitdaten, Näherungswerte, einen Analogwert und dergleichen) quantisieren, um ein Fehlerbit auf der Grundlage der zwei oder mehr quantisierten Werte zu korrigieren. Der Controller 130 kann zwei oder mehr Alphabete oder quantisierte Werte von einer Vielzahl von nichtflüchtigen Speicherzellen in der Speichereinrichtung 150 empfangen und dann eine Dekodierung auf der Grundlage von Informationen durchführen, die durch die Charakterisierung der quantisierten Werte als eine Kombination von Informationen, wie z. B. bedingte Wahrscheinlichkeit oder Wahrscheinlichkeit, erzeugt werden.
  • Gemäß einer Ausführungsform kann der ECC-Decoder einen Low-Density-Parity-Check- und Generator-Matrix-Code (LDPC-GM) unter den für die Soft-Decision-Dekodierung entwickelten Methoden verwenden. Der Low-Density-Parity-Check (LDPC)-Code verwendet einen Algorithmus, der Datenwerte aus der Speichereinrichtung 150 in mehreren Bits entsprechend der Zuverlässigkeit auslesen kann, und nicht nur Daten von 1 oder 0 wie bei der Hard-Decision-Decodierung, und wiederholt ihn durch einen Nachrichtenaustausch, um die Zuverlässigkeit der Werte zu verbessern. Dann werden die Werte schließlich als 1 oder 0 bestimmt. Ein Dekodieralgorithmus, der LDPC-Codes verwendet, kann beispielsweise als probabilistische Dekodierung verstanden werden. Die Hard-Decision-Dekodierung, bei der ein von einer nichtflüchtigen Speicherzelle ausgegebener Wert als 0 oder 1 kodiert wird. Im Vergleich zur Hard-Decision-decodierung kann die Soft-Decision-Decodierung den in der nichtflüchtigen Speicherzelle gespeicherten Wert auf der Grundlage der stochastischen Informationen bestimmen. In Bezug auf Bit-Flipping, das als Fehler angesehen werden kann, der in der Speichereinrichtung 150 auftreten kann, kann die Soft-Decision-Decodierung eine verbesserte Wahrscheinlichkeit für die Korrektur des Fehlers und die Wiederherstellung von Daten bieten, sowie die Zuverlässigkeit und Stabilität der korrigierten Daten gewährleisten. Der LDPC-GM-Code kann ein Schema aufweisen, bei dem interne LDGM-Codes mit Hochgeschwindigkeits-LDPC-Codes in Reihe verkettet werden können.
  • Gemäß einer Ausführungsform kann der ECC-Decoder beispielsweise Low-Density-Parity-Check-Faltungscodes (LDPC-CCs) für die Soft-Decision-Decodierung verwenden. Die LDPC-CCs können ein Schema haben, das eine lineare Zeitcodierung und eine Pipeline-Decodierung auf der Grundlage einer variablen Blocklänge und eines Schieberegisters verwendet.
  • Gemäß einer Ausführungsform kann der ECC-Decoder beispielsweise einen Log Likelihood Ratio Turbo Code (LLR-TC) für die Soft-Decision-Decodierung verwenden. Ein Log Likelihood Ratio (LLR) kann als nichtlineare Funktion für einen Abstand zwischen einem abgetasteten Wert und einem Idealwert berechnet werden. Darüber hinaus kann ein Turbo-Code (TC) einen einfachen Code (z. B. einen Hamming-Code) in zwei oder drei Dimensionen und eine wiederholte Dekodierung in einer Zeilen- und einer Spaltenrichtung umfassen, um die Zuverlässigkeit der Werte zu verbessern.
  • Die Energieverwaltungseinheit (PMU) 140 kann die dem Controller 130 zugeführte elektrische Energie steuern. Die PMU 140 kann die an das Speichersystem 110 gelieferte elektrische Energie (z. B. eine an den Controller 130 gelieferte Spannung) überwachen und die elektrische Energie an die im Controller 130 enthaltenen Komponenten liefern. Die PMU 140 kann nicht nur Energie-Ein oder Energie-Aus erkennen, sondern auch ein Triggersignal erzeugen, um das Speichersystem 110 in die Lage zu versetzen, dringend einen aktuellen Zustand wiederherzustellen, wenn die dem Speichersystem 110 zugeführte elektrische Energie instabil ist. Gemäß einer Ausführungsform kann die PMU 140 ein Gerät oder eine Komponente umfassen, das/die in der Lage ist, elektrische Energie zu speichern, die in einem Notfall verwendet werden kann.
  • Die Speicherschnittstelle 142 kann als Schnittstelle für die Verarbeitung von Befehlen und Daten dienen, die zwischen dem Controller 130 und der Speichereinrichtung 150 übertragen werden, damit der Controller 130 die Speichereinrichtung 150 als Reaktion auf einen Befehl oder eine Anforderung, die vom Host 102 eingegeben wird, steuern kann. Die Speicherschnittstelle 142 kann ein Steuersignal für die Speichereinrichtung 150 erzeugen und Daten verarbeiten, die in die Speichereinrichtung 150 eingegeben oder von ihr ausgegeben werden, und zwar unter der Steuerung des Prozessors 134, wenn die Speichereinrichtung 150 ein Flash-Speicher ist.
  • Wenn die Speichereinrichtung 150 beispielsweise einen NAND-Flash-Speicher enthält, umfasst die Speicherschnittstelle 142 einen NAND-Flash-Controller (NFC). Die Speicherschnittstelle 142 kann eine Schnittstelle für die Verarbeitung von Befehlen und Daten zwischen dem Controller 130 und der Speichereinrichtung 150 bereitstellen. Gemäß einer Ausführungsform kann die Speicherschnittstelle 142 durch eine als Flash Interface Layer (FIL) bezeichnete Firmware zum Austausch von Daten mit der Speichereinrichtung 150 implementiert oder von dieser gesteuert werden. Die Speicherschnittstelle 142 kann die Ausführungswarteschlange oder eine Vielzahl von Gruppenwarteschlangen enthalten.
  • Gemäß einer Ausführungsform kann die Speicherschnittstelle 142 eine offene NAND-Flash-Schnittstelle (Open NAND Flash Interface, ONFi), einen Toggle-Modus oder Ähnliches für die Dateneingabe/-ausgabe mit der Speichereinrichtung 150 unterstützen. Beispielsweise kann die ONFi einen Datenpfad (z. B. einen Kanal, einen Weg usw.) verwenden, der mindestens eine Signalleitung umfasst, die eine bidirektionale Übertragung und Empfang in einer Einheit von 8-Bit- oder 16-Bit-Daten unterstützen kann. Die Datenkommunikation zwischen dem Controller 130 und der Speichereinrichtung 150 kann über mindestens eine Schnittstelle erfolgen, die eine asynchrone einfache Datenrate (SDR), eine synchrone doppelte Datenrate (DDR), eine toggle doppelte Datenrate (DDR) oder Ähnliches unterstützt.
  • Der Speicher 144 kann als ein Arbeitsspeicher des Speichersystems 110 oder des Controllers 130 verwendet werden, während er Transaktionsdaten von im Speichersystem 110 und im Controller 130 durchgeführten Operationen vorübergehend speichert. So kann der Speicher 144 beispielsweise Lesedaten vorübergehend speichern, die von der Speichereinrichtung 150 als Reaktion auf eine Leseanforderung vom Host 102 ausgegeben werden, bevor die Lesedaten an den Host 102 ausgegeben werden. Darüber hinaus kann der Controller 130 Schreibdaten, die vom Host 102 eingegeben werden, vorübergehend im Speicher 144 speichern, bevor die Schreibdaten in die Speichereinrichtung 150 programmiert werden. Wenn der Controller 130 Operationen steuert, wie z. B. eine Datenleseoperation, eine Datenschreib- oder Programmieroperation, eine Datenlöschoperation usw. der Speichereinrichtung 150, können zwischen dem Controller 130 und der Speichereinrichtung 150 des Speichersystems 110 übertragene Daten vorübergehend im Speicher 144 gespeichert werden. Der Speicher 144 kann beispielsweise den in 1 dargestellten Datenpuffer 164 enthalten.
  • Zusätzlich zu den Lese- oder Schreibdaten kann der Speicher 144 Informationen (z. B. Abbildungsdaten, Leseanforderungen, Programmieranforderungen usw.) speichern, die für die Eingabe oder Ausgabe von Daten zwischen dem Host 102 und der Speichereinrichtung 150 verwendet werden. Gemäß einer Ausführungsform kann der Speicher 144 eine oder mehrere Befehlswarteschlangen, einen Programmspeicher, einen Datenspeicher, einen Schreibpuffer/Cache-Speicher, einen Lesepuffer/Cache-Speicher, einen Datenpuffer/Cache-Speicher, einen Abbildungspuffer/Cache-Speicher usw. umfassen. Der Controller 130 kann einen Teil des Speicherplatzes im Speicher 144 für eine Komponente reservieren, die zur Durchführung einer Dateneingabe/- ausgabe-Operation eingerichtet ist. Beispielsweise kann der im Speicher 144 eingerichtete Schreibpuffer zur vorübergehenden Speicherung von Zieldaten verwendet werden, die einer Programmieroperation unterliegen.
  • In einer Ausführungsform kann der Speicher 144 mit einem flüchtigen Speicher implementiert werden. Beispielsweise kann der Speicher 144 mit einem statischen Direktzugriffsspeicher (SRAM), einem dynamischen Direktzugriffsspeicher (DRAM) oder beidem implementiert werden. Obwohl in 2 beispielsweise der Speicher 144 innerhalb des Controllers 130 angeordnet ist, sind Ausführungsformen nicht darauf beschränkt. Der Speicher 144 kann sich innerhalb oder außerhalb des Controllers 130 befinden. Beispielsweise kann der Speicher 144 durch einen externen flüchtigen Speicher mit einer Speicherschnittstelle verkörpert werden, die Daten und/oder Signale zwischen dem Speicher 144 und dem Controller 130 überträgt.
  • Der Prozessor 134 kann den Gesamtbetrieb des Speichersystems 110 steuern. So kann der Prozessor 134 beispielsweise einen Programmier- oder Lesevorgang der Speichereinrichtung 150 als Reaktion auf eine vom Host 102 eingegebene Schreib- oder Leseanforderung steuern. Gemäß einer Ausführungsform kann der Prozessor 134 Firmware ausführen, um den Programmierbetrieb oder den Lesebetrieb im Speichersystem 110 zu steuern. Dabei kann die Firmware als Flash-Übersetzungsschicht (FTL) bezeichnet werden. Ein Beispiel für die FTL wird unter Bezugnahme auf die 3 und 4 ausführlich beschrieben. Gemäß einer Ausführungsform kann der Prozessor 134 mit einem Mikroprozessor, einer Zentraleinheit (CPU) oder ähnlichem implementiert sein.
  • Gemäß einer Ausführungsform kann das Speichersystem 110 mit mindestens einem Multi-Core-Prozessor implementiert werden. Der Multi-Core-Prozessor ist ein Schaltkreis- oder Chiptyp, in dem zwei oder mehr Kerne, die als unterschiedliche Verarbeitungsbereiche gelten, integriert sind. Wenn beispielsweise mehrere Kerne in dem Multi-Core-Prozessor mehrere Flash-Translation-Layer (FTLs) unabhängig voneinander ansteuern oder ausführen, kann die Dateneingabe-/Ausgabegeschwindigkeit (oder das Betriebsverhalten) des Speichersystems 110 verbessert werden. Gemäß einer Ausführungsform können die Dateneingabe-/Ausgabeoperationen (E/A) im Speichersystem 110 unabhängig voneinander durch verschiedene Kerne im Multi-Core-Prozessor ausgeführt werden.
  • Der Prozessor 134 in dem Controller 130 kann eine Operation durchführen, die einer Anforderung oder einem Befehl entspricht, der von dem Host 102 eingegeben wurde. Ferner kann das Speichersystem 110 eine Operation unabhängig von einer Befehls- oder Anforderungseingabe von dem Host 102 durchführen. In einem Fall kann ein Vorgang, der von der Steuereinheit 130 als Reaktion auf die Anforderung oder die Befehlseingabe vom Host 102 durchgeführt wird, als Vordergrundvorgang betrachtet werden, während ein Vorgang/eine Operation, der/die von dem Controller 130 unabhängig von der Anforderung oder der Befehlseingabe vom Host 102 durchgeführt wird, als Hintergrundvorgang betrachtet werden kann. Der Controller 130 kann Vorder- oder Hintergrundoperationen zum Lesen, Schreiben oder Löschen von Daten in der Speichereinrichtung 150 durchführen. Darüber hinaus kann ein Parametersetzvorgang, der einem Parametersetzbefehl oder einem Merkmalsetzbefehl als Setzbefehl entspricht, der vom Host 102 übertragen wird, als Vordergrundvorgang betrachtet werden. Als Hintergrundoperation, die ohne einen vom Host 102 übertragenen Befehl ausgeführt wird, kann der Controller 130 eine Garbage Collection (GC), ein Wear Leveling (WL), ein Bad Block Management zur Identifizierung und Verarbeitung fehlerhafter Blöcke oder Ähnliches durchführen.
  • Gemäß einer Ausführungsform können im Wesentlichen ähnliche Operationen sowohl als Vordergrund- als auch als Hintergrundoperation durchgeführt werden. Wenn das Speichersystem 110 beispielsweise eine Garbage Collection als Reaktion auf eine Anforderung oder eine Befehlseingabe vom Host 102 durchführt (z. B. manuelle GC), kann die Garbage Collection als Vordergrundoperation betrachtet werden. Wenn das Speichersystem 110 die Garbage Collection (Müll-Sammlung) unabhängig von der Anforderung oder der Befehlseingabe des Hosts 102 durchführt (z. B. Auto GC), kann die Garbage Collection als Hintergrundoperation betrachtet werden.
  • Wenn die Speichereinrichtung 150 eine Vielzahl von Rohchips (oder eine Vielzahl von Chips) umfasst, die jeweils eine Vielzahl von nichtflüchtigen Speicherzellen enthalten, kann der Controller 130 eine parallele Verarbeitung in Bezug auf mehrere vom Host 102 eingegebene Anforderungen oder Befehle durchführen, um das Betriebsverhalten des Speichersystems 110 zu verbessern. Beispielsweise können die übertragenen Anforderungen oder Befehle in mehrere Gruppen unterteilt werden, die zumindest einige einer Vielzahl von Ebenen, einer Vielzahl von Rohchips oder einer Vielzahl von Chips in der Speichereinrichtung 150 umfassen, und die mehreren Gruppen von Anforderungen oder Befehlen werden einzeln oder parallel in jeder Ebene, jedem Rohchip oder jedem Chip verarbeitet.
  • Die Speicherschnittstelle 142 in dem Controller 130 kann über mindestens einen Kanal und mindestens einen Weg mit der Vielzahl von Chips in der Speichereinrichtung 150 verbunden sein. Wenn der Controller 130 Daten in der Vielzahl von Chips über jeden Kanal oder jeden Weg als Reaktion auf Anforderungen oder Befehle verteilt und speichert, die mit einer Vielzahl von Seiten einschließlich nichtflüchtiger Speicherzellen verbunden sind, kann eine Vielzahl von Operationen, die den Anforderungen oder Befehlen entsprechen, gleichzeitig oder parallel in der Vielzahl von Rohchips oder Ebenen durchgeführt werden. Ein solches Verarbeitungsverfahren oder -schema kann als ein Verschachtelungsverfahren betrachtet werden. Da sich die Dateneingabe-/Ausgabegeschwindigkeit des Speichersystems 110 durch den Betrieb mit dem Verschachtelungsverfahren erhöht, kann das Daten-E/A-Betriebsverhalten des Speichersystems 110 verbessert werden.
  • Als Beispiel, aber ohne Einschränkung, kann der Controller 130 die Zustände einer Vielzahl von Kanälen (oder Wegen) erkennen, die mit der Vielzahl der in der Speichereinrichtung 150 enthaltenen Chips verbunden sind. Der Controller 130 kann einen Status jedes Kanals oder jedes Weges als einen von einem Belegt(Busy)-Status, einem Bereitschafts(Ready)-Status, einem aktiven Status, einem Leerlauf-Status, einem normalen Status und einem anormalen Status bestimmen. Die Bestimmung, über welchen Kanal oder Weg eine Anweisung (und/oder Daten) von dem Controller geliefert wird, kann mit einer physikalischen Blockadresse verknüpft werden. Der Controller 130 kann sich auf Deskriptoren beziehen, die von der Speichereinrichtung 150 geliefert werden. Die Deskriptoren können einen Block oder eine Seite von Parametern enthalten, die etwas über die Speichereinrichtung 150 beschreiben. Die Deskriptoren können ein vorgegebenes Format oder eine vorgegebene Struktur aufweisen. Die Deskriptoren können beispielsweise Gerätedeskriptoren, Konfigurationsdeskriptoren, Einheitsdeskriptoren und ähnliches enthalten. Der Controller 130 kann sich auf die Deskriptoren beziehen oder sie verwenden, um zu bestimmen, welche(r) Kanal(e) oder Weg(e) für den Austausch eines Befehls oder von Daten verwendet wird.
  • Bezugnehmend auf 2 kann die Speichereinrichtung 150 in dem Speichersystem 110 eine Vielzahl von Speicherblöcken 152, 154, 156 enthalten. Jeder der Vielzahl von Speicherblöcken 152, 154, 156 umfasst eine Vielzahl von nichtflüchtigen Speicherzellen. Gemäß einer Ausführungsform kann der Speicherblock 152, 154, 156 eine Gruppe von nichtflüchtigen Speicherzellen sein, die gemeinsam gelöscht werden. Der Speicherblock 152, 154, 156 kann eine Vielzahl von Seiten umfassen, die eine Gruppe von nichtflüchtigen Speicherzellen sind, die gemeinsam gelesen oder programmiert werden.
  • In einer Ausführungsform kann jeder Speicherblock 152, 154 oder 156 eine dreidimensionale Stapelstruktur für eine hohe Integration aufweisen. Darüber hinaus kann die Speichereinrichtung 150 eine Vielzahl von Rohchips umfassen, wobei jeder Rohchip eine Vielzahl von Ebenen enthält, wobei jede Ebene die Vielzahl von Speicherblöcken 152, 154, 156 enthält. Eine Konfiguration der Speichereinrichtung 150 kann in Abhängigkeit von dem Betriebsverhalten des Speichersystems 110 geändert werden.
  • 2 zeigt die Speichereinrichtung 150, die die Vielzahl von Speicherblöcken 152, 154 und 156 enthält. Bei den mehreren Speicherblöcken 152, 154 und 156 kann es sich je nach Anzahl der Bits, die in einer Speicherzelle gespeichert werden können, um SLC-Speicherblöcke (Single-Level Cell), MLC-Speicherblöcke (Multi-Level Cell) oder dergleichen handeln. Ein SLC-Speicherblock umfasst eine Vielzahl von Seiten, die durch Speicherzellen realisiert werden, wobei jede Speicherzelle ein Datenbit speichert. Ein SLC-Speicherblock kann ein höheres Betriebsverhalten bei der Daten-E/A-Operation und eine höhere Lebensdauer als der MLC-Speicherblock aufweisen. Der MLC-Speicherblock umfasst eine Vielzahl von Seiten, die durch Speicherzellen implementiert sind, wobei jede Speicherzelle Multi-Bit-Daten (z. B. zwei oder mehr Datenbits) speichert. Der MLC-Speicherblock kann im Vergleich zum SLC-Speicherblock eine größere Speicherkapazität bei gleichem Platzbedarf aufweisen. Der MLC-Speicherblock kann im Hinblick auf die Speicherkapazität hoch integriert sein.
  • In einer Ausführungsform kann die Speichereinrichtung 150 mit MLC-Speicherblöcken wie einem Double-Level-Cell (DLC)-Speicherblock, einem Triple-Level-Cell (TLC)-Speicherblock, einem Quadruple-Level-Cell (QLC)-Speicherblock und einer Kombination davon implementiert werden. Der DLC-Speicherblock kann eine Vielzahl von Seiten umfassen, die durch Speicherzellen implementiert sind, wobei jede Speicherzelle in der Lage ist, 2-Bit-Daten zu speichern. Der TLC-Speicherblock kann eine Vielzahl von Seiten umfassen, die durch Speicherzellen implementiert sind, wobei jede Speicherzelle 3-Bit-Daten speichern kann. Der QLC-Speicherblock kann eine Vielzahl von Seiten umfassen, die durch Speicherzellen implementiert sind, wobei jede Speicherzelle 4-Bit-Daten speichern kann. In einer anderen Ausführungsform kann die Speichereinrichtung 150 mit einem Block implementiert werden, der eine Vielzahl von Seiten umfasst, die durch Speicherzellen implementiert sind, wobei jede Speicherzelle in der Lage ist, fünf oder mehr Bit an Daten zu speichern.
  • Gemäß einer Ausführungsform kann der Controller 130 einen MLC-Speicherblock in der Speichereinrichtung 150 als einen SLC-Speicherblock verwenden, der Ein-Bit-Daten in einer Speicherzelle speichert. Die Dateneingabe-/Ausgabegeschwindigkeit des MLC-Speicherblocks (Multi-Level Cell) kann langsamer sein als die des SLC-Speicherblocks. Das heißt, wenn der MLC-Speicherblock als SLC-Speicherblock verwendet wird, kann der Spielraum für einen Lese- oder Programmiervorgang verringert werden. Beispielsweise kann der Controller 130 einen Dateneingabe-/ausgabevorgang mit einer höheren Geschwindigkeit durchführen, wenn der MLC-Speicherblock als SLC-Speicherblock verwendet wird. So kann der Controller 130 den MLC-Speicherblock als SLC-Puffer verwenden, um Daten vorübergehend zu speichern, weil der Puffer eine hohe Dateneingabe-/Ausgabegeschwindigkeit zur Verbesserung der Leistung des Speichersystems 110 erfordern kann.
  • Ferner kann der Controller 130 gemäß einer Ausführungsform Daten in einem MLC mehrfach programmieren, ohne einen Löschvorgang für einen bestimmten MLC-Speicherblock in der Speichereinrichtung 150 auszuführen. Im Allgemeinen unterstützen nichtflüchtige Speicherzellen das Überschreiben von Daten nicht. Der Controller 130 kann jedoch 1-Bit-Daten im MLC mehrmals programmieren, indem er eine Funktion verwendet, bei der der MLC in der Lage ist, Multi-Bit-Daten zu speichern. Für einen MLC-Überschreibvorgang kann der Controller 130 die Anzahl der Programmierungszeiten als separate Betriebsinformationen speichern, wenn 1-Bit-Daten in einem MLC programmiert werden. Gemäß einer Ausführungsform kann eine Operation zur gleichmäßigen Angleichung der Schwellenspannungen der MLCs durchgeführt werden, bevor weitere 1-Bit-Daten in dieselben MLCs programmiert werden, die jeweils weitere Bit-Daten gespeichert haben.
  • In einer Ausführungsform ist die Speichereinrichtung 150 als nichtflüchtiger Speicher wie ein Flash-Speicher ausgeführt, beispielsweise als NAND-Flash-Speicher, NOR-Flash-Speicher oder ähnliches. In einer anderen Ausführungsform kann die Speichereinrichtung 150 durch mindestens einen Phasenwechsel-Direktzugriffsspeicher (PCRAM), einen Ferroelektrik-Direktzugriffsspeicher (FRAM), einen Spin-Transfer-Torque-Direktzugriffsspeicher (STT-RAM), einen Spin-Transfer-Torque-Magnet-Direktzugriffsspeicher (STT-MRAM) oder Ähnliches implementiert werden.
  • Wie in 3 dargestellt, arbeitet der Controller 130 in einem Speichersystem zusammen mit dem Host 102 und der Speichereinrichtung 150. Wie dargestellt, umfasst der Controller 130 die Host-Schnittstelle 132, eine Flash-Übersetzungsschicht (FTL) 240, die Speicherschnittstelle 142 und den Speicher 144, die zuvor unter Bezugnahme auf 2 identifiziert wurden.
  • Gemäß einer Ausführungsform kann die in 2 dargestellte Fehlerkorrekturschaltung 138 in der Flash-Übersetzungsschicht (FTL) 240 enthalten sein. In einer anderen Ausführungsform kann die Fehlerkorrekturschaltung 138 als separates Modul, eine Schaltung, Firmware oder ähnliches implementiert werden, die in dem Controller 130 enthalten oder mit diesem verbunden ist.
  • Die Host-Schnittstelle 132 kann Befehle, Daten und Ähnliches verarbeiten, die vom Host 102 übertragen werden. Beispielhaft, aber nicht einschränkend, kann die Host-Schnittstelle 132 eine Befehlswarteschlange 56, einen Puffermanager 52 und eine Ereigniswarteschlange 54 umfassen. Die Befehlswarteschlange 56 kann die vom Host 102 empfangenen Befehle, Daten und dergleichen sequentiell speichern und sie an den Puffermanager 52 ausgeben, beispielsweise in der Reihenfolge, in der sie in der Befehlswarteschlange 56 gespeichert sind. Der Puffermanager 52 kann die von der Befehlswarteschlange 56 empfangenen Befehle, Daten usw. klassifizieren, verwalten oder anpassen. Die Ereigniswarteschlange 54 kann sequentiell Ereignisse zur Verarbeitung der vom Puffermanager 52 empfangenen Befehle, Daten und dergleichen übertragen. Die Host-Schnittstelle 132 kann beispielsweise die in 1 gezeigte DMA(Direktspeicherzugriffs)-Steuerschaltung 162 enthalten.
  • Eine Vielzahl von Befehlen oder Daten mit derselben Charakteristik kann vom Host 102 übertragen werden, oder eine Vielzahl von Befehlen und Daten mit unterschiedlichen Charakteristiken kann an das Speichersystem 110 übertragen werden, nachdem sie vom Host 102 gemischt oder durcheinander gebracht wurden. Beispielsweise können mehrere Befehle zum Lesen von Daten, d.h. Lesebefehle, übermittelt werden, oder ein Befehl zum Lesen von Daten, d.h. ein Lesebefehl, und ein Befehl zum Programmieren/Schreiben von Daten, d.h. ein Schreibbefehl, können abwechselnd an das Speichersystem 110 übertragen werden. Die Host-Schnittstelle 132 kann Befehle, Daten und dergleichen, die vom Host 102 übertragen werden, sequentiell in der Befehlswarteschlange 56 speichern. Danach kann die Host-Schnittstelle 132 abschätzen oder vorhersagen, welche Art von internen Operationen der Controller 130 entsprechend den Charakteristiken der Befehle, der Daten und dergleichen, die vom Host 102 übertragen wurden, durchführen wird. Die Host-Schnittstelle 132 kann eine Verarbeitungsreihenfolge und eine Priorität der Befehle, Daten und dergleichen auf der Grundlage ihrer Eigenschaften bestimmen.
  • Entsprechend den Charakteristiken der vom Host 102 übertragenen Befehle, Daten und dergleichen ist der Puffermanager 52 in der Hostschnittstelle 132 so konfiguriert, dass er bestimmt, ob der Puffermanager 52 die Befehle, Daten und dergleichen im Speicher 144 speichern soll, oder ob der Puffermanager 52 die Befehle, Daten und dergleichen an die Flash-Übersetzungsschicht (FTL) 240 liefern soll. Die Ereigniswarteschlange 54 empfängt Ereignisse, die vom Puffermanager 52 übertragen werden, die intern ausgeführt und vom Speichersystem 110 oder dem Controller 130 als Reaktion auf die Befehle, die Daten und dergleichen verarbeitet werden sollen, und liefert die Ereignisse an die Flash-Übersetzungsschicht (FTL) 240 in der Reihenfolge der in die Ereigniswarteschlange 54 eingegebenen Ereignisse.
  • Gemäß einer Ausführungsform kann die in 3 dargestellte Flash-Übersetzungsschicht (FTL) 240 ein Multi-Thread-Schema implementieren, um Dateneingabe-/ausgabeoperationen (E/A) durchzuführen. Eine Multi-Thread-FTL kann durch einen Multi-Core-Prozessor mit Multi-Thread im Controller 130 implementiert werden.
  • Gemäß einer Ausführungsform kann die Flash-Übersetzungsschicht (FTL) 240 einen Host-Anforderungsmanager (HRM) 46, einen Abbildungsmanager (MM) 44, einen Zustandsmanager (GC/WL) 42 und einen Blockmanager (BM/BBM) 48 umfassen. Der Host-Anforderungsmanager (HRM) 46 kann die von der Ereigniswarteschlange 54 übertragenen Ereignisse verwalten. Der Abbildungsmanager (MM) 44 kann Abbildungsdaten verarbeiten oder kontrollieren bzw. steuern. Der Zustandsmanager 42 kann Garbage Collection (GC) oder Wear Leveling (WL) durchführen. Der Blockmanager 48 kann Befehle oder Anweisungen für einen Block in der Speichereinrichtung 150 ausführen.
  • Beispielsweise kann der Hostanforderungsmanager (HRM) 46 den Abbildungsmanager (MM) 44 und den Blockmanager 48 verwenden, um Anforderungen gemäß Lese- und Programmbefehlen und Ereignissen, die von der Host-Schnittstelle 132 geliefert werden, zu bearbeiten oder zu verarbeiten. Der Hostanforderungsmanager (HRM) 46 kann eine Anfrage an den Abbildungsmanager (MM) 44 senden, um eine physikalische Adresse zu ermitteln, die einer logischen Adresse entspricht, die mit den Ereignissen eingegeben wird. Der Host-Anforderungsmanager (HRM) 46 kann eine Leseanforderung mit der physikalischen Adresse an die Speicherschnittstelle 142 senden, um die Leseanforderung zu verarbeiten, d. h. die Ereignisse zu bearbeiten. In einer Ausführungsform kann der Hostanforderungsmanager (HRM) 46 eine Programmanforderung (oder eine Schreibanforderung) an den Blockmanager 48 senden, um Daten auf eine bestimmte leere Seite zu programmieren, auf der keine Daten in der Speichereinrichtung 150 gespeichert sind, und dann eine der Programmanforderung entsprechende Abbildungsaktualisierungsanforderung an den Abbildungsmanager (MM) 44 senden, um ein Element zu aktualisieren, das für die programmierten Daten relevant ist, und zwar in Bezug auf die Zuordnung der logischen und physischen Adressen zueinander.
  • Der Blockmanager 48 kann eine vom Hostanforderungsmanager (HRM) 46, dem Abbildungsmanager (MM) 44 und/oder dem Zustandsmanager 42 gelieferte Programmanforderung in eine für die Speichereinrichtung 150 verwendete Flash-Programmanforderung umwandeln, um Flash-Blöcke in der Speichereinrichtung 150 zu verwalten. Um die Programm- oder Schreibleistung des Speichersystems 110 zu maximieren oder zu verbessern, kann der Blockmanager 48 Programmanforderungen sammeln und Flash-Programm-Anforderungen für Multiple-Plane- und One-Shot-Programmoperationen an die Speicherschnittstelle 142 senden. In einer Ausführungsform sendet der Blockmanager 48 mehrere Flash-Programm-Anforderungen an die Speicherschnittstelle 142, um die parallele Verarbeitung eines mehrkanaligen und multidirektionalen Flash-Controllers zu verbessern oder zu maximieren.
  • In einer Ausführungsform kann der Blockmanager 48 Blöcke in der Speichereinrichtung 150 entsprechend der Anzahl gültiger Seiten verwalten, Blöcke ohne gültige Seiten auswählen und löschen, wenn ein freier Block benötigt wird, und einen Block mit der geringsten Anzahl gültiger Seiten auswählen, wenn festgestellt wird, dass eine Garbage Collection durchgeführt werden soll. Der Zustandsmanager 42 kann eine Garbage Collection durchführen, um gültige Daten, die in dem ausgewählten Block gespeichert sind, in einen leeren Block zu verschieben und Daten, die in dem ausgewählten Block gespeichert sind, zu löschen, so dass die Speichereinrichtung 150 über genügend freie Blöcke (d. h. leere Blöcke ohne Daten) verfügen kann. Wenn der Blockmanager 48 dem Zustandsmanager 42 Informationen über einen zu löschenden Block liefert, kann der Zustandsmanager 42 alle Flash-Seiten des zu löschenden Blocks überprüfen, um festzustellen, ob jede Seite des Blocks gültig ist.
  • Um beispielsweise die Gültigkeit jeder Seite zu bestimmen, kann der Zustandsverwalter 42 eine logische Adresse identifizieren, die in einem Out-of-Band(Außer-Band-Bereich, OOB)-Bereich jeder Seite aufgezeichnet ist. Um festzustellen, ob eine Seite gültig ist, kann der Zustandsverwalter 42 eine physische Adresse der Seite mit einer physischen Adresse vergleichen, die auf eine logische Adresse abgebildet ist, die aus einer Abfrageanforderung stammt. Der Zustandsmanager 42 sendet für jede gültige Seite eine Programmanforderung an den Blockmanager 48. Eine Abbildungstabelle kann von dem Abbildungsmanager 44 aktualisiert werden, wenn ein Programmvorgang abgeschlossen ist.
  • Der Abbildungsmanager 44 kann Abbildungsdaten, z. B. eine logisch-physikalische Abbildungstabelle, verwalten. Der Abbildungsmanager 44 kann verschiedene Anfragen verarbeiten, z. B. Abfragen, Aktualisierungen und Ähnliches, die vom Hostanforderungmanager (HRM) 46 oder dem Zustandsmanager 42 erzeugt werden. Der Abbildungsmanager 44 kann die gesamte Abbildungstabelle in der Speichereinrichtung 150 (z. B. in einem Flash-/nichtflüchtigen Speicher) speichern und Kartierungseinträge entsprechend der Speicherkapazität des Speichers 144 zwischenlagern (cache). Wenn bei der Verarbeitung von Abfrage- oder Aktualisierungsanforderungen ein Abbildungs-Cache-Fehler auftritt, kann der Abbildungsmanager 44 eine Leseanforderung an die Speicherschnittstelle 142 senden, um eine relevante Abbildungstabelle zu laden, die in der Speichereinrichtung 150 gespeichert ist. Übersteigt die Anzahl der verschmutzten Cache-Blöcke im Abbildungsmanager 44 einen bestimmten Schwellenwert, kann eine Programmanforderung an den Blockmanager 48 gesendet werden, so dass ein sauberer Cache-Block erstellt wird und eine verschmutzte Abbildungstabelle in der Speichereinrichtung 150 gespeichert werden kann.
  • Wenn die Garbage Collection durchgeführt wird, kopiert der ZUstandsmanager 42 gültige Seiten in einen freien Block, und der Hostanforderungsmanager (HRM) 46 kann die neueste Version der Daten für dieselbe logische Adresse der Seite programmieren und gegenwärtig eine Aktualisierungsanforderung ausgeben. Wenn der Zustandsmanager 42 die Abbildungsaktualisierung in einem Zustand anfordert, in dem das Kopieren der gültigen Seite(n) nicht normal abgeschlossen ist, führt der Abbildungsmanager 44 die Aktualisierung der Abbildungstabelle möglicherweise nicht durch. Dies liegt daran, dass die Abbildungsanforderung mit alten physischen Informationen ausgegeben wird, wenn der Zustandsverwalter 42 eine Abbildungsaktualisierung anfordert und das Kopieren einer gültigen Seite später abgeschlossen wird. Der Abbildungsmanager 44 kann eine Abbildungsaktualisierung durchführen, um die Genauigkeit zu gewährleisten, wenn die letzte Abbildungstabelle immer noch auf die alte physikalische Adresse verweist, oder nur dann.
  • 4 zeigt die interne Konfiguration des in 1 bis 3 dargestellten Charakteristiken gemäß einer Ausführungsform der offenbarten Technologie.
  • Wie in 4 gezeigt, kann die Flash-Übersetzungsschicht (FTL) 240 im Controller 130 in drei Schichten unterteilt werden: eine Adressübersetzungsschicht ATL, eine virtuelle Flash-Schicht VFL und eine Flash-Schnittstellenschicht FIL.
  • Die Adressübersetzungsschicht ATL kann zum Beispiel eine von einem Dateisystem übertragene logische Adresse LA in eine logische Seitenadresse umwandeln. Die Adressübersetzungsschicht ATL kann einen Adressübersetzungsprozess in Bezug auf einen logischen Adressraum durchführen. Das heißt, die Adressübersetzungsschicht ATL kann einen Adressübersetzungsprozess auf der Grundlage von Abbildungsinformationen durchführen, mit denen die logische Seitenadresse LPA des Flash-Speichers 140 auf die vom Host übertragene logische Adresse LA abgebildet wird. Solche Informationen über die Zuordnung/Abbildung von logischen zu logischen Adressen (im Folgenden als L2L-Zuordnung bezeichnet) können in einem Bereich gespeichert werden, in dem Metadaten in der Speichereinrichtung 150 gespeichert sind.
  • Die virtuelle Flash-Schicht VFL kann die logische Seitenadresse LPA, die von der Adressübersetzungsschicht ATL abgebildet wird, in eine virtuelle Seitenadresse VPA umwandeln. Dabei kann die virtuelle Seitenadresse VPA einer physischen Adresse eines virtuellen Speichereinrichtung entsprechen. Das heißt, die virtuelle Seitenadresse VPA kann den Speicherblöcken 152, 154, 156 in der Speichereinrichtung 150 entsprechen. Wenn es einen fehlerhaften (schlechten) Block unter den Speicherblöcken 152, 154, 156 in der Speichereinrichtung 150 gibt, kann der fehlerhafte Block durch die virtuelle Flash-Schicht VFL ausgeschlossen werden. Darüber hinaus kann die virtuelle Flash-Schicht VFL einen Wiederherstellungsalgorithmus zum Scannen eines Scan-Bereichs enthalten, um die in der Speichereinrichtung 150 gespeicherten Abbildungsinformationen von logischen zu virtuellen Adressen (L2V-Zuordnung) und Abbildungsinformationen im Datenbereich zum Speichern von Benutzerdaten wiederherzustellen. Der Wiederherstellungsalgorithmus kann in der Lage sein, die logisch-virtuellen Adressabbildungsinformationen (L2V-Mapping) wiederherzustellen. Die virtuelle Flash-Schicht VFL kann auf der Grundlage der durch den Wiederherstellungsalgorithmus wiederhergestellten logisch-virtuellen Adressabbildungsinformationen (L2V-Mapping) einen Adressumwandlungsprozess in Bezug auf den virtuellen Adressraum durchführen.
  • Die Flash-Schnittstellenschicht FIL kann eine virtuelle Seitenadresse der virtuellen Flash-Schicht VFL in eine physikalische Seitenadresse der Speichereinrichtung 150 umwandeln. Die Flash-Schnittstellenschicht FIL führt eine Low-Level-Operation zur Verbindung mit der Speichereinrichtung 150 durch. Die Flash-Schnittstellenschicht FIL kann zum Beispiel einen Low-Level-Treiber zur Steuerung der Hardware der Speichereinrichtung 150, einen Fehlerkorrekturcode (ECC) zur Überprüfung und Korrektur eines Fehlers in den von der Speichereinrichtung 150 übertragenen Daten, und ein Modul zur Durchführung von Operationen wie Bad Block Management (BBM) enthalten.
  • 5 zeigt ein erstes Beispiel für Dateneingabe-/Ausgabeoperationen zwischen einem Host und einem Speichersystem in einem Datenverarbeitungssystem gemäß einer anderen Ausführungsform der offenbarten Technologie.
  • Unter Bezugnahme auf die 1 und 5 können mindestens ein Programmbefehl PG_CMD und Programmdaten PG_DATA, die mit einer zwischen dem Host 102 und dem Speichersystem 110 durchgeführten Dateneingabe/Ausgabe-Operation verbunden sind, von der zentralen Verarbeitungseinheit (CPU) oder der Anwendung (App) 104 im Host 102 erzeugt oder ausgegeben werden. Der Programmbefehl PG_CMD kann in der Übermittlungswarteschlange SQ 167 im Host-Speicher 106 gespeichert werden, und die Programmdaten PG_DATA können im Schreibdatenpuffer WRB 166 im Host-Speicher 106 gespeichert werden. Der Host 102 (z. B. die Zentraleinheit (CPU) oder die Anwendung (App) 104) kann dem Speichersystem 110 mitteilen, dass der Programmbefehl PG_CMD und die Programmdaten PG_DATA im Host-Speicher 106 gespeichert sind (Trigger).
  • Der Controller 130 im Speichersystem 110 kann eine DMA(Direktspeicherzugriff)-Steuerschaltung 162 zur Unterstützung eines direkten Speicherzugriffs (DMA) enthalten. Nach dem Empfang eines Triggers bezüglich des Programmbefehls PG_CMD und der Programmdaten PG_DATA vom Host 102 kann die DMA-Steuerschaltung 162 auf den Host-Speicher 106 zugreifen, um den Programmbefehl PG_CMD oder die Programmdaten PG_DATA zu holen oder zu empfangen. Nach dem Erhalt des Programmbefehls PG_CMD kann der Controller 130 die Programmdaten PG_DATA im Datenpuffer (PGB) 164 speichern. Nachdem die Programmdaten PG_DATA im Datenpuffer (PGB) 164 gespeichert sind, kann die Direktspeicherzugriffs-Steuerschaltung (DMA) 162 im Speichersystem 110 das frühe Abschlusssignal E_C in die Abschlusswarteschlange (CQ) 168 senden, bevor die Programmoperation bezüglich der entsprechenden Programmdaten PG_DATA in der Speichereinrichtung 150 abgeschlossen ist.
  • Danach kann der Controller 130 die Programmdaten PG_DATA an die Speichereinrichtung 150 übertragen, und die Speichereinrichtung 150 kann die Programmdaten PG_DATA in nichtflüchtige Speicherzellen programmieren. Nachdem das vorzeitige Abschlusssignal E_C (d. h. das Signal E_C für einen frühzeitigen Abschluss) in die Abschlusswarteschlange (CQ) 168 aufgenommen wurde, kann der Host 102 einen Eintrag der Abschlusswarteschlange (CQ) 168 überprüfen und das in derAbschlusswarteschlange 168 enthaltene vorzeitige Abschlusssignal E_C erkennen (CQ lesen bzw. Read CQ). Als Reaktion auf das in der Abschlusswarteschlange (CQ) 168 enthaltene Signal E_C für den vorzeitigen Abschluss kann der Host 102 den in der Übermittlungswarteschlange (SQ) 167 gespeicherten Programmbefehl PG_CMD und die im Schreibdatenpuffer (WRB) 166 enthaltenen Programmdaten PG_DATA freigeben.
  • Eine Betriebsgeschwindigkeit des in der Speichereinrichtung 150 ausgeführten Programmvorgangs kann unter Umständen langsamer sein als die anderer Vorgänge wie die Übertragung des Programmbefehls PG_CMD und der Programmdaten PG_DATA zwischen der Zentraleinheit (CPU) oder der Anwendung (App, 104) und dem Host-Speicher 106 im Host 102, die Übertragung des Programmbefehls PG_CMD und der Programmdaten PG_DATA zwischen dem Host 102 und dem Speichersystem 110, die Speicherung des Programmbefehls PG_CMD und der Programmdaten PG_DATA im Datenpuffer (PGB) 164 und die Übertragung des Programmbefehls PG_CMD und der Programmdaten PG_DATA zwischen dem Controller 130 und der Speichereinrichtung 150. Da eine Vielzahl von Programmbefehlen PG_CMD und eine große Menge der Programmdaten PG_DATA, die der Vielzahl von Programmbefehlen PG_CMD entsprechen, von dem Host 102 ausgegeben und an das Speichersystem 110 übertragen werden, kann eine Größe der Programmdaten PG_DATA, die in dem Datenpuffer (PGB) 164 in dem Speichersystem 110 gespeichert sind, zunehmen.
  • Gemäß einer Ausführungsform kann die Speichereinrichtung 150, nachdem sie die Programmdaten PG_DATA in nichtflüchtige Speicherzellen programmiert hat, den Controller 130 über den Programmabschluss informieren, und dann kann der Controller 130 die entsprechenden Programmdaten PG_DATA aus dem Datenpuffer (PGB) 164 freigeben. Der Controller 130 kann ein Abschlusssignal bezüglich des Programmbefehls PG_CMD, der den Programmdaten PD_DATA entspricht, an die Abschlusswarteschlange (CQ) 168 senden und hinzufügen. Die Zentralverarbeitungseinheit (CPU) oder die Anwendung (App) 104 im Host 102 kann die Abschlusswarteschlange (CQ) 168 im Host-Speicher 106 lesen und den entsprechenden Programmbefehl PG_CMD aus der Übermittlungswarteschlange (SQ) 167 freigeben. Darüber hinaus kann die Zentralverarbeitungseinheit (CPU) 104 oder die Anwendung (App) 104 im Host 102 die im Programmdatenpuffer WRB gespeicherten Programmdaten PG_DATA freigeben. Aufgrund einer langsamen Dateneingabe-/Ausgabegeschwindigkeit der Speichereinrichtung 150 kann der Host 102 feststehen, dass die Dateneingabe-/Ausgabeleistung des Speichersystems 110 nicht gut ist.
  • Um dieses Problem zu lösen, kann das Speichersystem 110 das Signal zur vorzeitigen Beendigung an den Host 102 senden, bevor die Speichereinrichtung 150 den Programmvorgang abschließt. Wie aus 5 hervorgeht, können jedoch die im Datenpuffer (PGB) 164 im Speichersystem 110 gespeicherten Programmdaten PG_DATA zunehmen, wenn die Anzahl der Programmbefehle PG_CMD und die Menge der vom Host 102 erzeugten Programmdaten PG_DATA ansteigt. Wenn die Größe des Datenpuffers (PGB) 164 im Speichersystem 110 zunimmt, können mehr Programmdaten PG_DATA gespeichert werden. Die Größe des Datenpuffers (PGB) 164 im Speichersystem 110 ist jedoch begrenzt, und es könnte schwierig sein, interne Ressourcen des Speichersystems 110 (z. B. die Größe des Datenpuffers (PGB) 164) zu erweitern oder zu ändern.
  • 6 zeigt ein Beispiel für den Zugriff auf einen Speicher in einem Host durch ein Speichersystem gemäß einer anderen Ausführungsform der offenbarten Technologie.
  • Wie in 6 dargestellt, kann der Host 102 einen Prozessor 104, einen Host-Speicher 106 und eine Host-Controller-Schnittstelle 108 umfassen. Das Speichersystem 110 kann einen Controller 130 und eine Speichereinrichtung 150 enthalten. Der in 6 beschriebene Controller 130 und die Speichereinrichtung 150 können dem in 1 bis 3 beschriebenen Controller 130 und der Speichereinrichtung 150 ähnlich sein.
  • Im Folgenden konzentrieren sich die Beschreibungen bezüglich des Controllers 130 und der Speichereinrichtung 150, wie sie in 6 dargestellt sind, auf die Unterschiede zu dem Controller 130 und der Speichereinrichtung 150, wie sie in den 1 bis 3 dargestellt sind. Insbesondere kann ein Logikblock 160 in dem Controller 130 der Flash-Übersetzungsschicht (FTL) 240 entsprechen, die unter Bezugnahme auf die 3 bis 4 beschrieben ist. In einigen Ausführungsformen kann der Logikblock 160 in dem Controller 130 darüber hinaus andere Rollen und Funktionen ausführen, die nicht in der Flash-Übersetzungsschicht (FTL) 240 beschrieben sind.
  • Im Host 102 kann der Prozessor 104 eine höhere Leistung haben als das Speichersystem 110, und der Host-Speicher 106 kann eine größere Datenmenge speichern als das Speichersystem 110. Der Prozessor 104 und der Host-Speicher 106 des Hosts 102 können Vorteile in Bezug auf den Platzbedarf und die Aufrüstung haben. Zum Beispiel können der Prozessor 104 und der Host-Speicher 106 weniger Platzbeschränkungen haben als der Prozessor 134 und der Speicher 144 im Speichersystem 110. Der Prozessor 104 und der Host-Speicher 106 können aufgerüstet werden, um die Leistung zu verbessern, die sich von der des Prozessors 134 und des Speichers 144 im Speichersystem 110 unterscheiden kann. In einer Ausführungsform kann das Speichersystem 110 die Ressourcen des Hosts 102 nutzen, um die Betriebseffizienz des Speichersystems 110 zu erhöhen.
  • Da die Datenmenge, die das Speichersystem 110 speichern kann, zunimmt, kann auch die Datenmenge, die der Host 102 im Speichersystem 110 zu speichern beabsichtigt, zunehmen. Ein Vorgang zum Programmieren von Daten in nichtflüchtige Speicherzellen, die in der Speichereinrichtung 150 des Speichersystems 110 enthalten sind, kann länger dauern als ein Vorgang zum Übertragen von Daten vom Host 102 zur Speichereinrichtung 150. Dementsprechend kann die Menge der vorübergehend im Speicher 144 gespeicherten Daten zunehmen, bevor die Daten vollständig in der Speichereinrichtung 150 programmiert sind. Wenn jedoch die Menge der vorübergehend gespeicherten Daten zunimmt, kann der Betrieb des Steuergeräts 130 belastet werden, da der Speicherplatz im Speicher 144 begrenzt ist.
  • In einigen Fällen kann die Speicherkapazität des Host-Speichers 106 im Host 102 größer sein (z. B. um das Zehn- oder Hundertfache) als die des Speichers 144 in der Steuereinheit 130. Dementsprechend kann das Speichersystem 110 einen Teil des Host-Speichers 106 im Host 102 verwenden, um die Beschränkung der Speicherkapazität des Speichers 144 zu überwinden, der in dem Controller 130 eingebettet ist oder direkt von diesem verwendet wird. Unter Bezugnahme auf die 1 und 2 können die DMA-Steuerschaltung 162 und die Host-Schnittstelle 132 im Speichersystem 110 direkt auf den Host-Speicher 106 im Host 102 zugreifen.
  • Ein direkter Speicherzugriff (DMA) kann es dem Speichersystem 110, das ein Ein-/Ausgabegerät (E/A-Gerät) ist, ermöglichen, Daten direkt an den und vom Host-Speicher 106, der der Hauptspeicher ist, zu senden und zu empfangen, so dass die Geschwindigkeit des Speicherbetriebs unter Umgehung der Zentralverarbeitungseinheit (CPU) 104 verbessert werden kann. Die Host-Schnittstelle 132 kann die DMA-Steuerschaltung 162 mit einem DMA-Controller (DMAC) zur Abwicklung eines Prozesses für den direkten Zugriff auf den Host-Speicher 106 enthalten. Auf den Host-Speicher 106 kann von der zentralen Verarbeitungseinheit 104, dem Speichersystem 110 oder einem Peripheriegerät (z. B. der Host-Controller-Schnittstelle 108) zugegriffen werden. Wenn beispielsweise die Host-Schnittstelle 132 im Speichersystem 110 versucht, auf den Host-Speicher 106 zuzugreifen, ist der Zugriff auf den Host-Speicher 106 nur mit Unterstützung der Host-Controller-Schnittstelle 108, wie z. B. einem Peripheriegerät, ohne Eingriff der zentralen Verarbeitungseinheit 104 möglich.
  • Für den direkten Speicherzugriff (DMA) kann das Datenverarbeitungssystem einschließlich des Hosts 102 und des Speichersystems 110 Ressourcen wie E/A-Adressen, Speicheradressen, Unterbrechungsanforderungszahlen (IRQ) und DMA-Kanäle verwenden. Mindestens eine bestimmte Leitung des Busses kann diesen Ressourcen zugewiesen bzw. für sie reserviert werden.
  • Die Kanäle für den direkten Speicherzugriff (DMA-Kanäle) können für die Datenkommunikation zwischen dem Speichersystem 110 und dem Host-Speicher 106 verwendet werden. Mit Hilfe der Kanäle für den direkten Speicherzugriff (DMA-Kanäle) können der Host 102 und das Speichersystem 110 Daten zueinander übertragen, um zu vermeiden, dass die Zentralverarbeitungseinheit (CPU) 104 überlastet wird. Ohne die Kanäle für den direkten Speicherzugriff (DMA-Kanäle) müsste die Zentralverarbeitungseinheit (CPU) 104 alle Daten kopieren und Lese-/Schreibvorgänge zur Übertragung an ein Peripheriegerät oder ein Eingabe-/Ausgabegerät (E/A) über den Bus durchführen. Während die Zentralverarbeitungseinheit (CPU) 104 an der Übertragung beteiligt ist, kann die Zentralverarbeitungseinheit (CPU) möglicherweise keine anderen Berechnungen oder Operationen durchführen, bis der entsprechende Vorgang für die Übertragung abgeschlossen ist. Andererseits kann die Zentralverarbeitungseinheit (CPU) 104 bei Verwendung der Direktspeicherzugriffskanäle (DMA-Kanäle) andere Aufgaben bearbeiten, während die Datenübertragung durchgeführt wird.
  • Zum Beispiel kann die Host-Schnittstelle 132 des Speichersystems 110 eine Datenkommunikation mit der Host-Controller-Schnittstelle 108 im Host 102 durchführen. Ohne Unterstützung oder Erfindung der zentralen Verarbeitungseinheit 104 im Host 102 kann auf den Host-Speicher 106 zugegriffen werden. Die Host-Schnittstelle 132 kann als Reaktion auf einen Betriebszustand des Speichers 144 bestimmen, ob die Programmdaten PG_DATA in den Speicher 144 des Speichersystems 110 geholt und dort gespeichert werden sollen. Wenn festgestellt wird, dass der verfügbare Platz im Speicher 144 nicht ausreicht, kann die Host-Schnittstelle 132 den Empfang oder die Erfassung der Programmdaten PG_DATA verschieben oder verzögern, bis der verfügbare Platz im Speicher 144 gesichert ist.
  • Der Controller 130 kann den Programmbefehl PG_CMD und die Programmdaten PG_CMD, die im Host-Speicher 106 des Hosts 102 enthalten sind, erhalten sowie eine Anforderung zur Freigabe des Programmbefehls PG_CMD und der Programmdaten PG_CMD aus dem Host-Speicher 106 senden oder hinzufügen. Nachfolgend wird unter Bezugnahme auf 7 ein Verfahren beschrieben, bei dem das Speichersystem 110 die Dateneingabe-/Ausgabeleistung auf der Grundlage einer Verwendung des Host-Speichers 106 für die Dateneingabe-/Ausgabeoperation verbessert.
  • 7 zeigt ein zweites Beispiel für Dateneingabe-/Ausgabeoperationen zwischen dem Host und dem Speichersystem im Datenverarbeitungssystem gemäß einer anderen Ausführungsform der offenbarten Technologie.
  • Bezugnehmend auf 7 können mindestens ein Programmbefehl PG_CMD und Programmdaten PG_DATA, die mit einer zwischen dem Host 102 und dem Speichersystem 110 durchgeführten Dateneingabe/Ausgabe-Operation verbunden sind, von der zentralen Verarbeitungseinheit (CPU) oder der Anwendung (App) 104 im Host 102 erzeugt oder ausgegeben werden. Der Programmbefehl PG_CMD kann in der Übermittlungswarteschlange SQ 167 im Host-Speicher 106 gespeichert werden, und die Programmdaten PG_DATA können im Schreibdatenpuffer WRB 166 im Host-Speicher 106 gespeichert werden. Der Host 102 (z. B. die Zentraleinheit (CPU) oder die Anwendung (App) 104) kann dem Speichersystem 110 mitteilen, dass der Programmbefehl PG_CMD und die Programmdaten PG_DATA im Host-Speicher 106 gespeichert sind (Trigger).
  • Der Controller 130 im Speichersystem 110 kann einen Auslöser/Trigger oder eine Benachrichtigung vom Host 102 empfangen und dann versuchen, den in der Übermittlungswarteschlange 167 gespeicherten Programmbefehl PG_CMD abzurufen oder zu erhalten. Wenn in diesem Fall im Datenpuffer (PGB) 164 ein freier Platz vorhanden ist, kann der Controller 130 die im Schreibdatenpuffer (WRB) 166 im Host-Speicher 106 gespeicherten Programmdaten PG_DATA holen. Wenn jedoch der verfügbare Platz im Datenpuffer (PGB) 164 nicht ausreicht, kann der Controller 130 die im Schreibdatenpuffer (WRB) 166 im Host-Speicher 106 gespeicherten Programmdaten PG_DATA nicht sofort abrufen.
  • In dem in 7 beschriebenen zweiten Beispiel kann der Controller 130 in dem Speichersystem 110 im Gegensatz zu dem in 5 dargestellten ersten Beispiel nach dem Erfassen des in der Übermittlungswarteschlange (SQ) 167 gespeicherten Programmbefehls PG_CMD einen Zeitpunkt bestimmen, zu dem die Programmdaten PG_DATA aus dem Schreibdatenpuffer (WRB) 166 in den Datenpuffer 164 gebracht werden. Selbst wenn die Programmoperation bezüglich der Programmdaten PG_DATA in der Speichereinrichtung 150 nicht abgeschlossen ist, nachdem die Programmdaten PG_DATA im Datenpuffer 164 gespeichert wurden, kann der Controller 130 das Signal ① für den vorzeitigen Abschluss an die Abschlusswarteschlange (CQ) 168 des Host-Speichers 106 senden und hinzufügen. Nach dem Lesen des Signals ① für den vorzeitige Abschluss in der Abschlusswarteschlange (CQ) 168 (Read CQ) kann die Zentralverarbeitungseinheit (CPU) 104 des Hosts 102 den Programmbefehl PG_CMD als Reaktion auf das Signal ① für den vorzeitige Abschluss in der Abschlusswarteschlange (CQ) 168 aus der Übermittlungswarteschlange (SQ) 167 freigeben. Die Zentralverarbeitungseinheit (CPU, 104) des Hosts 102 kann jedoch möglicherweise die Programmdaten PG_DATA nicht aus dem Schreibdatenpuffer (WRB) 166 freigeben, zum Beispiel können die Programmdaten PG_DATA im Schreibdatenpuffer (WRB) 166 kontinuierlich beibehalten werden.
  • Der Controller 130 im Speichersystem 110 kann die DMA-Steuerschaltung 162 zur Unterstützung des direkten Speicherzugriffs (DMA) enthalten. Wenn im Datenpuffer (PGB) 164 ein freier Platz vorhanden ist, kann die DMA-Steuerschaltung 162 als Reaktion auf den vom Host 102 erhaltenen Programmbefehl PG_CMD auf den Host-Speicher 106 zugreifen und die dem Programmbefehl PG_CMD entsprechenden Programmdaten PG_DATA aus dem Schreibdatenpuffer (WRB) 166 abrufen. Der Controller 130 kann die Programmdaten PG_DATA im Datenpuffer (PGB) 164 speichern.
  • Die Betriebsgeschwindigkeit des in der Speichereinrichtung 150 ausgeführten Programmvorgangs könnte langsamer sein als die anderer Vorgänge wie die Übertragung des Programmbefehls PG_CMD und der Programmdaten PG_DATA zwischen der Zentralverarbeitungseinheit (CPU) oder der Anwendung (App, 104) und dem Host-Speicher 106 im Host 102, die Übertragung des Programmbefehls PG_CMD und der Programmdaten PG_DATA zwischen dem Host 102 und dem Speichersystem 110, die Speicherung des Programmbefehls PG_CMD und der Programmdaten PG_DATA im Datenpuffer (PGB) 164 und die Übertragung des Programmbefehls PG_CMD und der Programmdaten PG_DATA zwischen dem Controller 130 und der Speichereinrichtung 150. Da eine Vielzahl von Programmbefehlen PG_CMD und eine große Menge der Programmdaten PG_DATA, die der Vielzahl von Programmbefehlen PG_CMD entsprechen, von dem Host 102 ausgegeben und an das Speichersystem 110 übertragen werden, kann eine Größe der Programmdaten PG_DATA, die in dem Datenpuffer (PGB) 164 in dem Speichersystem 110 gespeichert sind, zunehmen. Da die Größe der Speicherkapazität im Datenpuffer 164 begrenzt ist, kann die DMA-Steuerschaltung 162 als Reaktion auf einen Betriebszustand des Datenpuffers 164 nach dem Erfassen des Programmbefehls PG_CMD auf die Programmdaten PG_DATA zugreifen und diese sichern. Wenn die Programmdaten PG_DATA nicht im Datenpuffer 164 des Speichersystems 110 gespeichert werden können, kann der Controller 130 einen Zeitpunkt des Abrufs oder der Bereitstellung der im Schreibdatenpuffer (WRB) 166 des Host-Speichers 106 gespeicherten Programmdaten PG_DATA verzögern, bestimmen oder steuern, bis ein verfügbarer Platz im Datenpuffer 164 gesichert ist.
  • Wenn die Programmdaten PG_DATA im Datenpuffer 164 des Speichersystems 110 gespeichert werden können, kann die DMA-Steuerschaltung 162 des Controllers 130 auf den Schreibdatenpuffer (WRB) 166 im Host-Speicher 106 zugreifen, die im Schreibdatenpuffer (WRB) 166 gespeicherten Programmdaten PG_DATA abrufen und die Programmdaten PG_DATA im Datenpuffer (PGB) 164 speichern. Der Controller 130 kann die im Datenpuffer (PGB) 164 gespeicherten Programmdaten PG_DATA an die Speichereinrichtung 150 übertragen.
  • Nachdem die Speichereinrichtung 150 eine Programmoperation (NAND-Programm) in Bezug auf die Programmdaten PG_DATA abgeschlossen hat, kann die Speichereinrichtung 150 den Controller 130 über den Programmabschluss informieren. Der Controller 130 kann als Reaktion auf den von der Speichereinrichtung 150 gemeldeten Programmabschluss eine Pufferfreigabeanforderung ② senden und in die Pufferfreigabewarteschlange (BRQ) 169 aufnehmen. Die zentrale Verarbeitungseinheit (CPU) oder die Anwendung (App) 104 im Host 102 kann die Pufferfreigabewarteschlange (BRQ) 169 (Read BCQ) prüfen und dann die im Schreibdatenpuffer (WRB) 166 gespeicherten Programmdaten PG_DATA freigeben oder löschen.
  • In der unter Bezugnahme auf 7 beschriebenen Ausführungsform kann der Controller 130 im Speichersystem 110 als Reaktion auf einen einzigen vom Host 102 übertragenen Programmbefehl PG_CMD zwei verschiedene Operationen durchführen. Zum Beispiel kann das Speichersystem 110 nach dem Erfassen der Programmdaten PG_DATA, die dem Programmbefehl PG_CMD entsprechen, das Signal ① für die vorzeitige Beendigung senden und in die Abschlusswarteschlange (CQ) 168 im Host-Speicher 106 aufnehmen. Der Host 102 kann die Übermittlungswarteschlange (SQ) 167 als Reaktion auf das Signal ① für den vorzeitigen Abschluss in der Abschlusswarteschlange (CQ) 168 des Host-Speichers 106 steuern und verwalten. Das Speichersystem 110 kann die Programmdaten PG_DATA, die dem Programmbefehl PG_CMD entsprechen, aus dem Schreibdatenpuffer (WRB) 166 holen oder bringen, wenn interne Ressourcen für die Programmoperation zugewiesen werden können. Nachdem die Programmdaten PG_DATA, die dem Programmbefehl PG_CMD entsprechen, in der Speichereinrichtung 150 programmiert sind, kann das Speichersystem 110 die Pufferfreigabeanforderung ② in die Pufferfreigabewarteschlange (BRQ) 169 senden oder aufnehmen, so dass der Host 102 die im Schreibdatenpuffer (WRB) 166 des Hostspeichers 106 gespeicherten Programmdaten PG_DATA freigeben kann. Der Host 102 kann die Pufferfreigabewarteschlange (BRQ) 169 einrichten. Das Speichersystem 110 kann zwei verschiedene Antworten an die Abschlusswarteschlange (CQ) 168 und die Pufferfreigabewarteschlange (BRQ) senden, um den Programmbefehl PG_CMD und die Programmdaten PG_DATA aus der Übermittlungswarteschlange 167 und dem Schreibdatenpuffer (WRB) 166 freizugeben. Mit diesem Verfahren kann das Speichersystem 110 eine Begrenzung der internen Ressourcen überwinden, da das Speichersystem 110 zumindest einen Teil des Hostspeichers 106 nutzen kann. Außerdem kann der Host 102 den Host-Speicher 106 auf der Grundlage geteilter Antworten des Speichersystems 110 in Bezug auf einen einzigen Programmbefehl steuern oder verwalten.
  • 8 zeigt ein Verfahren zum Betrieb eines Speichersystems gemäß einer anderen Ausführungsform der offenbarten Technologie. 8 veranschaulicht einen Vorgang, wenn ein verfügbarer Platz zum Speichern der Programmdaten PG_DATA im Datenpuffer 164 im Speichersystem 110 vorhanden ist.
  • Bezugnehmend auf 8 beinhaltet das Verfahren zum Betreiben des Speichersystems 110 den Empfang eines Triggers bezüglich eines Programmbefehls PG_CMD und Programmdaten PG_DATA vom Host 102 (Operation 710), das Holen oder Abrufen des Programmbefehls PG_CMD und der Programmdaten PG_DATA vom Host 102 (Operation 712), und das Speichern des Programmbefehls in der Befehlswarteschlange 56 und der Programmdaten PG_DATA im Datenpuffer 164 (Operation 714). Zum Beispiel kann das Speichersystem 110 auf den Host-Speicher 106 zugreifen, um den Programmbefehl PG_CMD aus der Übermittlungswarteschlange (SQ) 167 im Host-Speicher 106 zu holen oder zu erhalten und die Programmdaten PG_DATA aus dem Schreibdatenpuffer 166 im Host-Speicher 106 zu holen oder zu erhalten. Wenn im Datenpuffer 164 des Speichersystems 110 ein freier Platz zum Speichern der Programmdaten PG_DATA vorhanden ist, kann das Speichersystem 110 die im Schreibdatenpuffer 166 im Host-Speicher 106 enthaltenen Programmdaten PG_DATA abrufen und die Programmdaten PG_DATA im Datenpuffer 164 speichern.
  • Darüber hinaus kann das Verfahren zum Betrieb des Speichersystems die Übertragung des Programmbefehls PG_CMD und der Programmdaten PG_DATA an die Speichereinrichtung 150 umfassen, um eine Programmoperation durchzuführen (Vorgang 716). Der Controller 130 kann das Signal für den vorzeitigen Abschluss des Programmbefehls PG_CMD an den Host 102 übertragen (Vorgang 718). Noch bevor der Programmvorgang abgeschlossen ist, kann das Speichersystem 110 das Signal für den vorzeitigen Abschluss an den Host 102 senden, um die vom Host 102 angeforderte Dateneingabe/-ausgabeleistung zu erfüllen. Zu diesem Zeitpunkt kann das Signal zum vorzeitigen Abschluss von dem Controller 130 gesendet und in die Abschlusswarteschlange (CQ) 168 des Host-Speichers 106 aufgenommen werden.
  • Danach kann das Speichersystem 110 in dem Verfahren zum Betreiben des Speichersystems, wenn die Speichereinrichtung 150 den Controller 130 über den Abschluss der Programmoperation (Operation 720) benachrichtigt, den Host 102 über die Freigabe der Programmdaten PG_DATA, die in dem Schreibdatenpuffer 166 in dem Host-Speicher 106 gespeichert sind, informieren (Operation 722). Beispielsweise kann das Speichersystem 110 eine Pufferfreigabeanforderung senden und aufnehmen, die den entsprechenden Programmdaten in der Pufferfreigabewarteschlange 169 entspricht.
  • In 8 wird davon ausgegangen, dass im Datenpuffer 164 des Speichersystems 110 ein freier Platz zum Speichern der Programmdaten PG_DATA vorhanden ist. Es kann jedoch sein, dass der Datenpuffer 164 im Speichersystem 110 keinen freien Platz zum Speichern der Programmdaten PG_DATA im Datenpuffer 164 des Speichersystems 110 hat. In diesem Fall kann das Speichersystem 110 nur den Programmbefehl PG_CMD vom Host 102 erhalten und ein Timing des Holens der Programmdaten PG_DATA vom Host 102 verzögern. Als Reaktion auf den Programmbefehl PG_CMD kann das Speichersystem 110 den Host 102 über das Signal der frühzeitigen Beendigung benachrichtigen, obwohl die Programmdaten PG_DATA noch nicht in der Speichereinrichtung 150 programmiert sind. Danach kann der Controller 130 als Reaktion auf den Betriebszustand des Speichers 144 oder des Datenpuffers 164 im Speichersystem 110 die Programmdaten PG_DATA, die im Schreibdatenpuffer 166 im Host-Speicher 106 enthalten sind, holen oder übernehmen und die Programmdaten PG_DATA im Datenpuffer 164 speichern.
  • Hier kann der Programmbefehl PG_CMD einen Speicherort (z. B. eine Adresse im Schreibdatenpuffer 166) der Programmdaten PG_DATA enthalten, die der Host 102 an das Speichersystem 110 senden und darin speichern möchte. Der Controller 130 kann die DMA-Steuerschaltung 162 enthalten, so dass die entsprechenden Programmdaten PG_DATA auf der Grundlage der Position der Programmdaten PG_DATA als Reaktion auf die Verfügbarkeit von internen Ressourcen erfasst oder abgerufen werden können.
  • Zudem kann der Host 102 die Abschlusswarteschlange (CQ) 168 einrichten, die in der Lage ist, das vom Speichersystem 110 übertragene Signal für den vorzeitigen Abschluss zu speichern, und die Pufferfreigabe-Warteschlange (BRQ) 169, die in der Lage ist, die vom Speichersystem 110 übertragene Pufferfreigabeanforderung zu speichern. Der Host 102 kann einen Eintrag in der Abschlusswarteschlange 168 und der Pufferfreigabewarteschlange 169 prüfen oder lesen, um einen Eintrag in der Übermittlungswarteschlange 167 und dem Schreibdatenpuffer 166 zu verwalten, zu löschen oder zu steuern. Die Operationen des Hosts 102 werden unter Bezugnahme auf 9 im Detail beschrieben.
  • 9 zeigt ein Verfahren zum Betrieb eines Hosts gemäß einer anderen Ausführungsform der offenbarten Technologie.
  • Bezugnehmend auf 9 kann das Verfahren zum Betreiben des Hosts 102 das Prüfen des vom Speichersystem 110 übertragenen Signals der vorzeitigen Beendigung in der Abschlusswarteschlange (CQ) 168 (Vorgang 732) und das Freigeben eines entsprechenden Befehls (z.B. des Programmbefehls PG_CMD) aus der Übermittlungswarteschlange (SQ) 167 (Vorgang 734) umfassen. Wenn der Host 102 den Programmbefehl PG_CMD an das Speichersystem 110 sendet, kann das Speichersystem 110 den Programmbefehl PG_CMD empfangen und dann den Host 102 über das Signal für die vorzeitige Beendigung benachrichtigen (z. B. das Signal für die vorzeitige Beendigung in die Abschlusswarteschlange (CQ) 168 aufnehmen), selbst wenn die dem Programmbefehl PG_CMD entsprechende Programmoperation in der Speichereinrichtung 150 nicht abgeschlossen ist. Wenn der Host 102 das in der Abschlusswarteschlange (CQ) 168 enthaltene Signal für den vorzeitigen Abschluss überprüft oder liest, kann der Host 102 den in der Übermittlungswarteschlange (SQ) 167 gespeicherten Programmbefehl PG_CMD auf der Grundlage des in der Abschlusswarteschlange (CQ) 168 enthaltenen Signals für den vorzeitigen Abschluss löschen.
  • Ferner kann das Verfahren zum Betreiben des Hosts 102 das Prüfen oder Lesen der vom Speichersystem 110 gesendeten Pufferfreigabeanforderung in der Pufferfreigabewarteschlange (BRQ) 169 (Vorgang 736) und das Freigeben oder Löschen der Programmdaten PG_DATA aus dem Schreibdatenpuffer 166 auf der Grundlage eines Eintrags (d. h. der Pufferfreigabeanforderung) in der Pufferfreigabewarteschlange (BRQ) 169 (Vorgang 738) umfassen. Wie unter Bezugnahme auf 7 beschrieben, kann das Speichersystem 110 einen Zeitpunkt, zu dem der Programmbefehl PG_CMD erfasst wird, und einen Zeitpunkt, zu dem die dem Programmbefehl PG_CMD entsprechenden Programmdaten PG_DATA erfasst werden, unterscheiden. Ferner kann das Speichersystem 110 an den Host 102 verschiedene Antworten für jeden der Programmbefehle PG_CMD und der Programmdaten PG_DATA senden. Wenn das Speichersystem 110 die Pufferfreigabeanforderung sendet und in die Pufferfreigabewarteschlange 169 im Host 102 aufnimmt, kann der Host 102 einen Eintrag der Pufferfreigabewarteschlange 169 prüfen oder lesen und die der Pufferfreigabeanforderung entsprechenden Programmdaten PG_DATA aus dem Schreibdatenpuffer 166 des Hostspeichers 106 löschen oder freigeben.
  • Wie oben beschrieben, kann ein Speichersystem gemäß einer Ausführungsform der Offenlegung die Daten-E/A-Leistung verbessern, während es Daten-E/A-Operationen durchführt, die den von einer externen Einrichtung eingegebenen Befehlen entsprechen.
  • Darüber hinaus kann das Speichersystem gemäß einer Ausführungsform der offenbarten Technologie die bei der Durchführung von Dateneingabe-/Ausgabeoperationen verwendeten Ressourcen effizient verwalten und den unnötigen Verbrauch von Ressourcen unterdrücken, um die Dateneingabe-/Ausgabeleistung zu verbessern.
  • Darüber hinaus kann das Speichersystem gemäß einer Ausführungsform der offenbarten Technologie Programmdaten, die einem Programmbefehl des Hosts entsprechen, vorübergehend in einem gemeinsam genutzten Speicher innerhalb des Hosts halten, so dass die Effizienz von Dateneingabe-/ausgabeoperationen über die Begrenzung der im Speichersystem enthaltenen Ressourcen hinaus verbessert werden kann.
  • Während verschiedene Ausführungsformen oben beschrieben wurden, können Variationen und Verbesserungen der offenbarten Ausführungsformen und andere Ausführungsformen auf der Grundlage dessen, was in diesem Dokument beschrieben oder dargestellt ist, vorgenommen werden.

Claims (20)

  1. Datenverarbeitungssystem, umfassend: einen Host, der so konfiguriert ist, dass er einen Programmbefehl in einer Übermittlungswarteschlange speichert und dem Programmbefehl entsprechende Programmdaten in einem Host-Datenpuffer speichert; und ein Speichersystem, das mit dem Host kommuniziert und konfiguriert ist zum: Erhalten der im Host-Datenpuffer gespeicherten Programmdaten auf der Grundlage eines Betriebsstatus eines internen Puffers; Übertragen eines Signals zum vorzeitigen Abschluss an den Host, nachdem die Programmdaten entsprechend dem Programmbefehl erhalten wurden; und Übertragen einer Freigabeanforderung an den Host zum Freigaben der Programmdaten aus dem Host-Datenpuffer.
  2. Datenverarbeitungssystem nach Anspruch 1, wobei der Host umfasst: eine Anwendung, die zum Erzeugen des Programmbefehls und der Programmdaten konfiguriert ist; und mindestens einen Eingabe-/Ausgabe-(E/A)-Kern, der so konfiguriert ist, dass er mindestens ein Paar aus der Übermittlungswarteschlange und einer der Übermittlungswarteschlange entsprechenden Abschlusswarteschlange steuert und mindestens ein Paar aus dem Host-Datenpuffer und einer dem Host-Datenpuffer entsprechenden Pufferfreigabewarteschlange steuert.
  3. Datenverarbeitungssystem nach Anspruch 2, wobei der Host so konfiguriert ist, dass er eine Benachrichtigung bezüglich des Programmbefehls und der Programmdaten an das Speichersystem sendet, der mindestens eine E/A-Kern so konfiguriert ist, dass er in der Übermittlungswarteschlange und dem Host-Datenpuffer gespeicherte Informationen an das Speichersystem überträgt, und der mindestens eine E/A-Kern so konfiguriert ist, dass er einen Befehl aus der Übermittlungswarteschlange auf der Grundlage von in der Abschlusswarteschlange gespeicherten Informationen freigibt, und Daten aus dem Host-Datenpuffer auf der Grundlage von in der Pufferfreigabewarteschlange gespeicherten Informationen freigibt.
  4. Datenverarbeitungssystem nach Anspruch 1, wobei das Speichersystem umfasst: eine Speichergruppe mit nichtflüchtigen Speicherzellen; einen Controller, der so konfiguriert ist, dass er die Programmdaten vom Host über eine Datenkommunikation an die Speichergruppe überträgt; und den internen Puffer, der so konfiguriert, dass er die Programmdaten vorübergehend speichert.
  5. Datenverarbeitungssystem nach Anspruch 4, wobei die Speichergruppe so konfiguriert ist, dass sie als Reaktion auf einen Abschluss der Programmierung der Programmdaten in die nichtflüchtigen Speicherzellen ein Programmabschlusssignal bezüglich der Programmdaten sendet.
  6. Datenverarbeitungssystem nach Anspruch 5, wobei der Controller so konfiguriert ist, dass er die Programmdaten aus dem internen Puffer in Reaktion auf das Programmabschlusssignal freigibt.
  7. Datenverarbeitungssystem nach Anspruch 5, wobei der Controller so konfiguriert ist, dass er die Programmdaten aus dem internen Puffer nach Senden der Programmdaten an die Speichergruppe freigibt, unabhängig von dem Programmabschlusssignal.
  8. Datenverarbeitungssystem nach Anspruch 7, wobei der Controller so konfiguriert ist, dass er einen verfügbaren Platz in dem internen Puffer überwacht, um den Betriebsstatus des internen Puffers zu bestimmen.
  9. Speichersystem, umfassend: eine Speichereinrichtung, die mehrere nichtflüchtige Speicherzellen enthält und so konfiguriert ist, dass sie eine Dateneingabe/-ausgabeoperation durchführt; und einen Controller, der mit der Speichereinrichtung und einer externen Einrichtung kommuniziert und so konfiguriert ist, dass er die Dateneingabe/-ausgabeoperation steuert, und wobei der Controller ferner so konfiguriert ist, dass er als Reaktion auf den Erhalt von Programmdaten, die einem Programmbefehl entsprechen, ein Signal zum vorzeitigen Abschluss an die externe Einrichtung sendet und an die externe Einrichtung eine Freigabeanforderung zur Freigabe der Programmdaten sendet, nachdem die Speichereinrichtung eine Programmoperation bezüglich der Programmdaten abgeschlossen hat.
  10. Speichersystem nach Anspruch 9, wobei die Speichereinrichtung so konfiguriert ist, dass sie nach dem Programmieren der Programmdaten in die mehreren nichtflüchtigen Speicherzellen ein Programmabschlusssignal bezüglich der Programmdaten sendet.
  11. Speichersystem nach Anspruch 10, wobei der Controller ferner so konfiguriert ist, dass er die Programmdaten aus dem internen Puffer in Reaktion auf das Programmabschlusssignal freigibt.
  12. Speichersystem nach Anspruch 10, wobei der Controller ferner so konfiguriert ist, dass er die Programmdaten aus dem internen Puffer nach Sende der Programmdaten an die Speichergruppe freigibt,, unabhängig von dem Programmabschlusssignal.
  13. Speichersystem nach Anspruch 9, wobei der Controller ferner so konfiguriert ist, dass er das Signal für den vorzeitigen Abschluss in einem ersten Bereich in der externen Einrichtung und die Freigabeanforderung in einem zweiten Bereich in der externen Einrichtung speichert.
  14. Speichersystem nach Anspruch 9, wobei der Controller ferner so konfiguriert ist, dass er einen verfügbaren Platz eines internen Puffers überwacht, um einen Betriebszustand des internen Puffers zu bestimmen, und einen Zeitpunkt bestimmt, zu dem die Programmdaten von der externen Einrichtung in Reaktion auf den Betriebszustand erhalten werden.
  15. Speichersystem, umfassend: eine Speichereinrichtung, die mehrere nichtflüchtige Speicherzellen enthält, die so konfiguriert sind, dass sie eine Dateneingabe/-ausgabeoperation durchführen; einen internen Puffer, der so konfiguriert ist, dass er Daten vorübergehend speichert, die mit der Dateneingabe/-ausgabeoperation verknüpft sind; und einen Controller, der so konfiguriert ist, dass er einen Programmbefehl, der mit Programmdaten verbunden ist, von einer externen Einrichtung erhält, einen Zeitpunkt für das Erhalten der Programmdaten von der externen Einrichtung auf der Grundlage eines Betriebszustands des internen Puffers bestimmt, ein Signal für einen frühzeitigen Abschluss bezüglich der Programmdaten an die externe Einrichtung sendet und eine Freigabeanforderung für die Freigabe der Programmdaten an die externe Einrichtung sendet, nachdem die Programmdaten in die mehreren nichtflüchtigen Speicherzellen programmiert sind.
  16. Speichersystem nach Anspruch 15, wobei der Controller so konfiguriert ist, dass er den Programmbefehl von einem ersten Bereich der externen Einrichtung erhält; die Programmdaten aus einem zweiten Bereich der externen Vorrichtung erhält; das Signal des vorzeitigen Abschlusses in einem dritten Bereich der externen Einrichtung speichert; und die Freigabeanforderung in einem vierten Bereich der externen Einrichtung speichert.
  17. Speichersystem nach Anspruch 15, wobei der Controller ferner so konfiguriert ist, dass er einen verfügbaren Platz in dem internen Puffer überwacht, um den Betriebsstatus des internen Puffers zu bestimmen.
  18. Speichersystem nach Anspruch 15, wobei die Speichereinrichtung so konfiguriert ist, dass sie nach dem Programmieren der Programmdaten in die mehreren nichtflüchtigen Speicherzellen ein Programmabschlusssignal bezüglich der Programmdaten sendet, und der Controller ferner so konfiguriert ist, dass er die Programmdaten aus dem internen Puffer nach Senden der Programmdaten an die Speichereinrichtung freigibt, unabhängig von dem Programmabschlusssignal.
  19. Speichersystem nach Anspruch 18, wobei der Controller ferner so konfiguriert ist, dass er die Programmdaten aus dem internen Puffer in Reaktion auf das Programmabschlusssignal freigibt.
  20. Speichersystem nach Anspruch 15, wobei der Controller so konfiguriert ist, dass er ein Signal zum vorzeitigen Abschluss an die externe Einrichtung sendet, nachdem er die Programmdaten von der externen Einrichtung erhalten hat.
DE102022209179.5A 2021-09-06 2022-09-05 Vorrichtung und verfahren zur steuerung eines gemeinsamen speichers in einem datenverarbeitungssystem Pending DE102022209179A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020210118270A KR20230035811A (ko) 2021-09-06 2021-09-06 데이터 처리 시스템 내 공유된 메모리 공간을 제어하기 위한 장치 및 방법
KR10-2021-0118270 2021-09-06

Publications (1)

Publication Number Publication Date
DE102022209179A1 true DE102022209179A1 (de) 2023-03-09

Family

ID=85226385

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102022209179.5A Pending DE102022209179A1 (de) 2021-09-06 2022-09-05 Vorrichtung und verfahren zur steuerung eines gemeinsamen speichers in einem datenverarbeitungssystem

Country Status (5)

Country Link
US (1) US20230073200A1 (de)
KR (1) KR20230035811A (de)
CN (1) CN115756298A (de)
DE (1) DE102022209179A1 (de)
TW (1) TW202316259A (de)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230400981A1 (en) * 2022-06-09 2023-12-14 Samsung Electronics Co., Ltd. System and method for managing queues in systems with high parallelism

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2826857B2 (ja) * 1989-12-13 1998-11-18 株式会社日立製作所 キャッシュ制御方法および制御装置
US20170123991A1 (en) * 2015-10-28 2017-05-04 Sandisk Technologies Inc. System and method for utilization of a data buffer in a storage device
US9880783B2 (en) * 2015-10-28 2018-01-30 Sandisk Technologies Llc System and method for utilization of a shadow data buffer in a host where the shadow data buffer is controlled by external storage controller
US11494125B2 (en) * 2020-12-17 2022-11-08 Western Digital Technologies, Inc. Storage system and method for dual fast release and slow release responses
US11561733B2 (en) * 2021-02-05 2023-01-24 Micron Technology, Inc. Interrupt mode or polling mode for memory devices
US11481145B2 (en) * 2021-02-25 2022-10-25 PetaIO Inc. Dynamically throttling host write data rate

Also Published As

Publication number Publication date
KR20230035811A (ko) 2023-03-14
TW202316259A (zh) 2023-04-16
US20230073200A1 (en) 2023-03-09
CN115756298A (zh) 2023-03-07

Similar Documents

Publication Publication Date Title
DE102015014851B4 (de) Ressourcenzuteilung und -freigabe für die Energieverwaltung in Vorrichtungen
DE112020000178T5 (de) Verwaltung von in zonen unterteilten namensräumen nichtflüchtiger speicherungsvorrichtungen
DE112018000834T5 (de) System und verfahren zur adaptiven befehlsabruf-aggregation
DE102017128939A1 (de) System und Verfahren zum dynamischen und adaptiven Zusammenführen von Interrupts
DE112018000181T5 (de) System und verfahren für die schnelle ausführung von kapselinternen befehlen
DE112018000233T5 (de) System und Verfahren zur Verarbeitung und Arbitrierung von Übermittlungs- und Beendigungswarteschlangen
DE112018000228T5 (de) System und Verfahren zur Verarbeitung und Arbitrierung von Übermittlungs- und Beendigungswarteschlangen
DE102018105943A1 (de) Kontextbewusste dynamische Befehlsplanung für ein Datenspeichersystem
DE112015000378T5 (de) Selektives Rückkopieren für einen auf einem Chipplättchen gepufferten nichtflüchtigen Speicher
DE102019124450A1 (de) Bandbreitenbegrenzung in solid-state-laufwerken
DE112012005222T5 (de) Halbleiter-Datenspeicherverwaltung
DE112018000230T5 (de) System und Verfahren zur spekulativen Befehlsausführung unter Verwendung des Steuerungsspeicherpuffers
DE102021115763A1 (de) Identifizierung und klassifizierung der schreibstrompriorität
DE112020005044T5 (de) Zonenanhang-befehlsplanung basierend auf zonenzustand
DE102020211544A1 (de) Steuerung, betriebsverfahren der steuerung und speichergerät mit derselben
DE102022209179A1 (de) Vorrichtung und verfahren zur steuerung eines gemeinsamen speichers in einem datenverarbeitungssystem
US20210334034A1 (en) Apparatus and method for protecting data in a memory system
DE112021000474T5 (de) Durchführung einer Medienverwaltungsoperation basierend auf einer Änderung eines Schreibmodus eines Datenblocks in einem Cache
DE102022209756A1 (de) Speichervorrichtung und speichersystem zum programmieren von daten
DE112020006053T5 (de) Aktiver eingabe/ausgabe-expander eines speicher-untersystems
DE102020128675A1 (de) Puffer zum verringern von schreibverstärkung fehlausgerichteter schreiboperationen
DE102022209387A1 (de) Speichersteuerung und betriebsverfahren dafür
US11704281B2 (en) Journaling apparatus and method in a non-volatile memory system
DE112022002494T5 (de) Datenspeicherungsvorrichtung und verfahren zur dateibasierten interrupt-zusammenführung
US20210365183A1 (en) Apparatus and method for increasing operation efficiency in data processing system