DE112020000124T5 - Ausführung von open-channel-vektorbefehlen - Google Patents

Ausführung von open-channel-vektorbefehlen Download PDF

Info

Publication number
DE112020000124T5
DE112020000124T5 DE112020000124.5T DE112020000124T DE112020000124T5 DE 112020000124 T5 DE112020000124 T5 DE 112020000124T5 DE 112020000124 T DE112020000124 T DE 112020000124T DE 112020000124 T5 DE112020000124 T5 DE 112020000124T5
Authority
DE
Germany
Prior art keywords
vector
instruction
memory
controller
instructions
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
DE112020000124.5T
Other languages
English (en)
Inventor
Shay Benisty
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Western Digital Technologies Inc
Original Assignee
Western Digital Technologies Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Western Digital Technologies Inc filed Critical Western Digital Technologies Inc
Publication of DE112020000124T5 publication Critical patent/DE112020000124T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • 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
    • 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/0638Organizing or formatting or addressing of data
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory

Landscapes

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

Abstract

Ein Verfahren und eine Einrichtung stellen einen Solid-State-Laufwerk-Controller bereit, der eingerichtet ist, um Eingabe-/Ausgabebefehle von einer Host-Rechenvorrichtung zu analysieren, um zu bestimmen, ob die Befehle einen Vektor- oder Nicht-Vektorbefehl einschließen, und de eingerichtet ist, um eine Vielzahl von Nicht-Vektorbefehlen basierend auf den physischen Adressen, die in dem Vektorbefehl enthalten sind, zu erzeugen.

Description

  • QUERVERWEIS AUF VERWANDTE ANMELDUNG
  • Diese Anmeldung beansprucht die Priorität der US-Anmeldung Nr. 16/459.183 , eingereicht am 1. Juli 2019, die der Anmelderin zugeteilt ist und durch Bezugnahme in ihrer Gesamtheit hierin aufgenommen ist.
  • HINTERGRUND DER OFFENBARUNG
  • Gebiet der Offenbarung
  • Ausführungsformen der vorliegenden Offenbarung beziehen sich allgemein auf Systeme und Verfahren zum Ausführen von Vektorbefehlen auf einer Speichervorrichtung.
  • Beschreibung des Stands der Technik
  • Eine Solid-State-Laufwerk-Speicherungsvorrichtung (SSD-Speicherungsvorrichtung) ist eine Datenspeicherungsvorrichtung, die herkömmlich aus einem Controller und einem SSD-Speicher (z. B. einem nichtflüchtigen NAND-Flash) zusammengesetzt ist. In allen SSD-Speicherungsvorrichtungen sitzt der Controller zwischen einem oder mehreren Host-Rechensystemen und dem SSD-Speicher. Die SSD-Speicherungsvorrichtung interagiert mit einem Host unter Verwendung einer Flash-Übersetzungsschicht (FTL).
  • Kürzlich wurde eine neue Klasse von SSDs entwickelt, die als Open-Channel-SSDs bekannt sind. Open-Channel-SSDs unterscheiden sich von einer herkömmlichen SSD dadurch, dass sie die interne Abbildung der SSD-Speicherstruktur für den Host freigeben, was es dem Host ermöglicht, eine Datenplatzierung und eine Dateneingabe/-ausgabe-Planung (E/A-Planung) unter Verwendung der physischen Adressen anstelle der herkömmlichen logischen Adressen durchzuführen. Dementsprechend hat das Open-Channel-SSD die Fähigkeit, gewisse Gesichtspunkte der FTL für die Handhabung durch den Host zu lassen. Da der Host zusätzliche Verantwortlichkeiten übernimmt, die einmal allein der Speicherungsvorrichtung zugewiesen wurden, können zusätzliche Befehle, wie Vektorbefehle, verwendet werden, um die Funktionalität der SSDs zu verbessern.
  • Mit fortschreitender Zunahme des Bedarfs an digitalen Speicherungslösungen werden also neue Wege benötigt, um die zusätzlichen Vektorbefehle nicht nur zu unterstützen, um den wachsenden Bedarf zu erfüllen, sondern um die Benutzererfahrung voranzubringen und zu erweitern.
  • KURZDARSTELLUNG DER OFFENBARUNG
  • Die vorliegende Offenbarung bezieht sich allgemein auf ein Verfahren und eine Einrichtung, die einen Solid-State-Laufwerk-Controller bereitstellen, der Eingabe-/Ausgabebefehle von einer Host-Rechenvorrichtung analysiert, um zu bestimmen, ob die Befehle einen Vektor- oder Nicht-Vektorbefehl einschließen, und ist eingerichtet, um eine Vielzahl von Nicht-Vektorbefehlen basierend auf den physischen Adressen, die in dem Vektorbefehl enthalten sind, zu erzeugen.
  • In einer Ausführungsform beschreibt die Offenbarung eine Vorrichtung, die einen Speicher und einen Controller aufweist, der kommunikativ mit dem Speicher gekoppelt ist, wobei der Controller eingerichtet ist, um einen Satz physischer Adressen in einem Vektorbefehl zu identifizieren, der aus einer Host-Rechenvorrichtung abgerufen wird, wobei jede physische Adresse des Satzes physischer Adressen einem Ort in dem Speicher entspricht. In einigen Ausführungsformen ist der Controller auch eingerichtet, um einen Satz von Nicht-Vektorbefehlen zu erzeugen, wobei jeder Nicht-Vektorbefehl in dem Satz von Nicht-Vektorbefehlen einer von jeder physischen Adresse in dem Satz von physischen Adressen entspricht. In einigen Ausführungsformen ist der Controller auch eingerichtet, um den Satz von Nicht-Vektorbefehlen auszuführen. In einigen Ausführungsformen ist der Controller eingerichtet, um eine Nachricht an die Host-Rechenvorrichtung zu erzeugen, die den Abschluss des Vektorbefehls als Reaktion auf die Ausführung des Satzes von Nicht-Vektorbefehlen angibt.
  • In einer anderen Ausführungsform beschreibt die Offenbarung eine Vorrichtung, die einen Speicher und einen Controller aufweist, der kommunikativ mit dem Speicher gekoppelt ist, wobei der Controller eingerichtet ist, um eine Angabe zu empfangen, dass der Speicher einen Nicht-Vektorbefehl ausgeführt hat, wobei der Nicht-Vektorbefehl einer aus einer Vielzahl von Nicht-Vektorbefehlen ist, die einem von einer Host-Rechenvorrichtung empfangenen Vektorbefehl entspricht. In einigen Ausführungsformen ist der Controller auch eingerichtet, um zu bestimmen, ob der Speicher alle der Vielzahl von Nicht-Vektorbefehlen ausgeführt hat, die dem Vektorbefehl entsprechen. In einigen Ausführungsformen ist der Controller auch eingerichtet, um eine Abschlussnachricht zu erzeugen, welche die Ausführung des Vektorbefehls angibt, wenn der Speicher jeden der Vielzahl von Nicht-Vektorbefehlen ausgeführt hat. In einigen Ausführungsformen ist der Controller auch eingerichtet, um die Abschlussnachricht an die Host-Rechenvorrichtung zu übertragen.
  • In einer anderen Ausführungsform beschreibt die Offenbarung eine Einrichtung. In einem Beispiel schließt die Einrichtung Mittel zum Empfangen eines Vektorbefehls von einer Hostvorrichtung ein, wobei der Vektorbefehl einen Satz physischer Adressen aufweist. In einem anderen Beispiel schließt die Einrichtung ein Mittel zum Erzeugen eines Satzes von Nicht-Vektorbefehlen ein, wobei jeder Nicht-Vektorbefehl in dem Satz von Nicht-Vektorbefehlen einer von jeder physischen Adresse in dem Satz von physischen Adressen entspricht, und wobei jeder Nicht-Vektorbefehl in dem Satz von Nicht-Vektorbefehlen eingerichtet ist, um durch ein Mittel zum Speichern digitaler Daten ausgeführt zu werden. In einem anderen Beispiel schließt die Einrichtung ein Mittel zum Erzeugen einer Nachricht an die Host-Rechenvorrichtung ein, die den Abschluss des Vektorbefehls als Reaktion auf die Ausführung des Satzes von Nicht-Vektorbefehlen durch das Mittel zum Speichern von digitalen Daten angibt.
  • Figurenliste
  • Zur Verdeutlichung der Art und Weise, wie die vorstehend angegebenen Merkmale der vorliegenden Offenbarung im Detail verstanden werden können, kann eine ausführlichere Beschreibung der Offenbarung, die vorstehend kurz zusammengefasst ist, unter Bezugnahme auf Ausführungsformen erfolgen, von denen einige in den beigefügten Zeichnungen veranschaulicht sind. Es ist jedoch zu beachten, dass in den beigefügten Zeichnungen nur typische Ausführungsformen dieser Offenbarung veranschaulicht sind und diese daher nicht als ihren Schutzumfang einschränkend anzusehen sind, da die Offenbarung andere ebenso wirksame Ausführungsformen zulassen kann.
    • 1 ist ein Blockdiagramm einer Speichervorrichtung, die kommunikativ mit einem Host-Computersystem gekoppelt ist, gemäß gewissen Gesichtspunkten der Offenbarung.
    • 2 ist ein Blockdiagramm, das eine logische Darstellung der internen parallelen Organisation eines Open-Channel-Solid-State-Laufwerks (SSD) gemäß gewissen Gesichtspunkten der Offenbarung veranschaulicht.
    • 3 ist ein Flussdiagramm, das einen beispielhaften Prozess zum Ausführen eines Vektorbefehls gemäß gewissen Gesichtspunkten der Offenbarung veranschaulicht.
    • 4 ist ein Flussdiagramm, das einen beispielhaften Prozess zum Erzeugen einer Vektorbefehl-Abschlussnachricht gemäß gewissen Gesichtspunkten der Offenbarung veranschaulicht.
  • Zum besseren Verständnis wurden, soweit möglich, identische Bezugszeichen verwendet, um identische Elemente zu bezeichnen, die den Figuren gemein sind. Es wird in Betracht gezogen, dass die in einer Ausführungsform offenbarten Elemente ohne besondere Aufzählung vorteilhaft auf andere Ausführungsformen angewendet werden können.
  • DETAILLIERTE BESCHREIBUNG
  • Im Folgenden wird auf die Ausführungsformen der Offenbarung verwiesen. Es versteht sich jedoch, dass die Offenbarung nicht auf bestimmte beschriebene Ausführungsformen beschränkt ist. Stattdessen wird jede Kombination der folgenden Merkmale und Elemente, unabhängig davon, ob sie sich auf verschiedene Ausführungsformen beziehen oder nicht, zur Umsetzung und Praxis der Offenbarung in Betracht gezogen. Obwohl Ausführungsformen der Offenbarung Vorteile gegenüber anderen möglichen Lösungen und/oder gegenüber dem Stand der Technik erzielen können, ist die Offenbarung nicht einschränkend, ob ein bestimmter Vorteil durch eine bestimmte Ausführungsform erreicht wird oder nicht. Die folgenden Gesichtspunkte, Merkmale, Ausführungsformen und Vorteile sind daher nur veranschaulichend und gelten nicht als Elemente oder Einschränkungen der beiliegenden Ansprüche, es sei denn, sie werden ausdrücklich in einem oder mehreren Ansprüchen angegeben. Ebenso soll eine Bezugnahme auf „die Offenbarung“ nicht als Verallgemeinerung eines hierin offenbarten erfinderischen Gegenstands ausgelegt werden und soll nicht als Element oder Einschränkung der beiliegenden Ansprüche betrachtet werden, es sei denn, dies wird ausdrücklich in einem Anspruch bzw. in Ansprüchen angegeben.
  • Die vorliegende Offenbarung bezieht sich auf ein Verfahren und eine Einrichtung, die einen Solid-State-Laufwerk-Controller bereitstellen, der Eingabe-/Ausgabebefehle (E/A-Befehle) von einer Host-Rechenvorrichtung analysiert, um zu bestimmen, ob die Befehle einen Vektor- oder Nicht-Vektorbefehl einschließen, und um eine Vielzahl von Nicht-Vektorbefehlen basierend auf den physischen Adressen, die in dem Vektorbefehl enthalten ist, zu erzeugen.
  • 1 ist eine schematische Darstellung einer Ausführungsform eines Systems 100, einschließlich eines Host-Rechensystems 102, das kommunikativ mit einer Speicherungsvorrichtung 108 gekoppelt ist. Die Speicherungsvorrichtung 108 schließt einen Controller 110 und einen nichtflüchtigen Speicher (NVM) ein, wie ein Solid-State-Laufwerk (SSD) 134, das aus einem oder mehreren Chips oder Ebenen von Flash-Speicherzellen (z. B. Single-Level-Zellen (SLC 136), Multi-Level-Zellen (MLC), Tri-Level-Zellen (TLC 138) usw.) besteht. Der Host 102 verbindet sich mit der Speicherungsvorrichtung 108, um E/A-Befehle für Speichervorgänge an das SSD 134 auszugeben, einschließlich: Lesen, Schreiben, Kopieren und Rücksetzen (z. B. Löschen).
  • Die Speicherungsvorrichtung 108 kann ein internes Speicherungslaufwerk sein, wie eine Notebook-Festplatte oder eine Desktop-Festplatte. Die Speicherungsvorrichtung 108 kann eine entfernbare Massespeicherungsvorrichtung sein, wie unter anderem eine tragbare, entnehmbare Speichervorrichtung, etwa eine Speicherkarte (z. B. eine sichere digitale (SD) Karte, eine mikrosichere digitale (micro-SD) Karte oder eine Multimedia-Karte (MMC)) oder eine universelle serielle Bus-Vorrichtung (USB-Vorrichtung). Die Speicherungsvorrichtung 108 kann die Form einer eingebetteten Massespeicherungsvorrichtung annehmen, wie ein eingebettetes eSD/eMMC-Flash-Laufwerk, das in den Host 108 eingebettet ist. Die Speicherungsvorrichtung 108 kann auch jede andere Art von interner Speicherungsvorrichtung, Wechselspeicherungsvorrichtung, eingebetteter Speicherungsvorrichtung, externer Speicherungsvorrichtung oder Netzwerkspeicherungsvorrichtung sein.
  • Der Host 102 kann eine breite Palette von Vorrichtungen einschließen, wie etwa Computerserver, Network-Attached-Storage-Einheiten (NAS-Einheiten), Desktop-Computer, Notebook-Computer (z. B. Laptop), Tablet-Computer (d. h. „Smart Pad“), Set-Top-Boxen, Telefonhandapparate (d. h. „Smartphones“), Fernseher, Kameras, Anzeigevorrichtungen, digitale Medienplayer, Videospielkonsolen, Video-Streaming-Vorrichtungen und Automobilanwendungen (z. B. Abbilden [Mapping], autonomes Fahren). In bestimmten Ausführungsformen schließt der Host 102 jede Vorrichtung mit einer Verarbeitungseinheit oder einer beliebigen Form von Hardware ein, die in der Lage ist, Daten zu verarbeiten, einschließlich einer Universalverarbeitungseinheit, spezieller Hardware (wie einer anwendungsspezifischen integrierten Schaltung (ASIC)), konfigurierbarer Hardware wie einem Field Programmable Gate Array (FPGA) oder einer anderen Form von Verarbeitungseinheit, die mittels Softwareanweisungen, Mikrocode oder Firmware eingerichtet ist.
  • In einigen Konfigurationen schließt der Host 102 eine zentrale Verarbeitungseinheit (CPU) 104 ein, die mit einem Hostspeicher 106 verbunden ist, wie etwa DRAM oder andere Hauptspeicher. Ein Anwendungsprogramm kann in dem Host-Speicher 106 zur Ausführung durch die CPU 104 gespeichert sein. Zum Beispiel schließt der Hostspeicher 106 ein computerlesbares Medium ein, das computerlesbaren Programmcode (z. B. Software oder Firmware) speichert, der durch den Prozessor 104 ausführbar ist. Der Host 102 kann mit Hardware und/oder Firmware eingerichtet sein, um die verschiedenen Funktionen durchzuführen, die unten beschrieben und in den Flussdiagrammen gezeigt sind.
  • Die Speicherungsvorrichtung 108 schließt physische (PHY-) Schnittstellenkomponenten 114 für den Eintritt von Kommunikationen vom Host 102 zur Speicherungsvorrichtung 108 und den Austritt von Kommunikationen von der Speicherungsvorrichtung 108 zum Host 102 ein. Eine Verknüpfung zwischen der Speicherungsvorrichtung 108 und dem Host 102 kann jede geeignete Verknüpfung einschließen, wie eine Peripheral Component Interconnect Express (PCIe)-Verknüpfung. Die PCIe-Verknüpfung unterstützt die Vollduplexkommunikation zwischen der Speicherungsvorrichtung 108 und dem Host 102 über dedizierte unidirektionale serielle Punkt-zu-Punkt-Verbindungen oder „Bahnen“. Die PCIe-Verknüpfung kann eine bis zweiunddreißig Bahnen einschließen, abhängig von der Anzahl verfügbarer PHYs 114 zwischen der Speicherungsvorrichtung 108 und dem Host 102.
  • Kommunikationen zwischen der Speicherungsvorrichtung 108 und dem Host 102 können unter einem Kommunikationsprotokoll, wie einem seriellen PCIe-Kommunikationsprotokoll oder anderen geeigneten Kommunikationsprotokollen arbeiten. Zu den geeigneten Kommunikationsprotokollen zählen Ethernet, seriell angeschlossene SCSI (SAS), serielle AT-Anschlüsse (SATA), jedes Protokoll im Zusammenhang mit Remote Direct Memory Access (RDMA) wie Infiniband, iWARP oder RDMA over Converged Ethernet (RoCE) und andere geeignete Kommunikationsprotokolle. Die Speicherungsvorrichtung 108 kann auch über einen Schalter oder eine Brücke mit dem Host 102 verbunden sein.
  • Das SSD 134 der Speicherungsvorrichtung 108 kann einen nichtflüchtigen Speicherraum einschließen, der für eine Langzeitspeicherung von Informationen nach Ein/Ausschaltzyklen eingerichtet ist. In einigen Beispielen kann das SSD 134 aus einem oder mehreren Chips oder Ebenen von NAND-Flash-Speichern, elektrisch programmierbaren Nur-Lese-Speichern (EPROM), elektrisch löschbaren programmierbaren Nur-Lese-Speichern (EEPROM) und anderen Solid-State-Speichern bestehen.
  • Die Speicherungsvorrichtung 108 schließt einen Controller 110 ein, der Vorgänge der Speicherungsvorrichtung 108 verwaltet, wie das Schreiben in das und Lesen aus dem SSD 134. Der Controller 110 schließt einen oder mehrere Prozessoren 112 ein, bei denen es sich um Mehrkernprozessoren handeln kann. Der Prozessor 112 handhabt die Komponenten der Speicherungsvorrichtung 108 durch einen Firmwarecode.
  • Der Controller 110 kann unter dem NVM-Express-Protokoll (NVMe-Protokoll) arbeiten, aber es sind auch andere Protokolle anwendbar. NVMe-Protokoll ist ein(e) Kommunikationsschnittstelle/-protokoll, die/das für SSDs entwickelt wurde, um über einen Host und eine Speicherungsvorrichtung zu arbeiten, die über die PCIe-Schnittstelle (z. B. PHY 114) verbunden sind. Das NVMe-Protokoll stellt eine Befehlsübermittlungswarteschlange und eine Befehlsabschlusswarteschlange für den Zugriff auf die in der Speicherungsvorrichtung 108 gespeicherten Daten durch den Host 102 bereit. Die Speicherungsvorrichtung 108 kann Host 102-Befehle aus einer Befehlsübermittlungswarteschlange der Host-Warteschlangen, die im Host-Speicher 106 gespeichert sind, abrufen, empfangen oder lesen.
  • Der Controller 110 führt mithilfe von computerlesbaren Programmcodes (z. B. Software und/oder Firmware) ausführbare Anweisungen (hierin nachfolgend „Anweisungen“ genannt) aus. Die Anweisungen können von verschiedenen Komponenten des Controllers 110 ausgeführt werden, wie dem Prozessor 112, Logikgattern, Schaltern, anwendungsspezifischen integrierten Schaltungen (ASICs), programmierbaren Logiksteuerungen, eingebetteten Mikrosteuerungen und anderen Komponenten des Controllers 110.
  • Die Anweisungen werden auf einem nichtflüchtigen, computerlesbaren Speichermedium gespeichert. In bestimmten Ausführungsformen werden die Anweisungen auf einem nichtflüchtigen, computerlesbaren Speicherungsmedium der Speicherungsvorrichtung 108 gespeichert, wie in einem Nur-Lese-Speicher oder im SSD 134. Anweisungen, die in der Speicherungsvorrichtung 108 gespeichert sind, können ohne zusätzliche Eingaben oder Anleitungen vom Host 102 ausgeführt werden. In weiteren Ausführungsformen werden die Anweisungen vom Host 102 übertragen. Der Controller 110 ist mit Hardware und Anweisungen eingerichtet, um die verschiedenen hierin beschriebenen und in den Abbildungen dargestellten Funktionen auszuführen.
  • Die Speicherungsvorrichtung 102 kann auch andere Komponenten einschließen, wie etwa das Flash-Schnittstellenmodul 130, ein Direktspeicherzugriff-Modul 126 (DMA-Modul), einen Scheduler 128, einen Befehlsausführer 120 und einen Steuerpfad 124. Das Flash-Schnittstellenmodul 130 interagiert mit dem SSD 134 für Vorgänge, die verschiedenen E/A-Befehlen zum Steuern und Zugreifen auf das Open-Channel-SSD (z. B. SSD 134) zugeordnet sind. Das DMA-Modul 126 ist eingerichtet, um tatsächliche Datenübertragungen zwischen dem Host 102 und der Speicherungsvorrichtung 108 zu steuern. Der Scheduler 128 ist eingerichtet, um die verschiedenen in 1 veranschaulichten Komponenten zu aktivieren und zu planen. Der Scheduler 128 steuert zum Beispiel die Datenübertragung, während er den Steuerpfad 124 für das Abrufen von physischen Bereichsseiten (physical region pages, PRPs), das Senden von Abschlussanforderungen und Interrupts und das Aktivieren der DMAs für die derzeitige Datenübertragung zwischen dem Host 102 und der Speicherungsvorrichtung 108 aktiviert. Der Steuerpfad 124 ist eingerichtet, um Steuerinformationen zwischen dem Host 102 und der Speicherungsvorrichtung 108 zu übertragen und Abschlussanforderungen an einen Vektorabschließer 122 bereitzustellen. Der Befehlsparser 118 ist eingerichtet, um Befehle, die von einem Vektorbefehlswandler 116 empfangen werden, zu parsen und in eine Warteschlange zu stellen und die Befehle an den Befehlsausführer 120 zu kommunizieren. Der Befehlsausführer 120 ist eingerichtet, um die von dem Befehlsparser 118 empfangenen Befehle zu bewerten und auszuführen.
  • Der Vektorbefehlswandler 116 und der Vektorabschließer 122 können sich auf eine oder mehrere von einer Hardware-, Firmware- und/oder Softwareimplementierung auf dem Vorrichtungscontroller 110 zum Unterstützen von Befehlen des Vektortyps vom Host 102 beziehen. In einigen Konfigurationen überwacht der Vektorbefehlswandler 116 E/A-Befehle, die vom Host 102 empfangen werden. Der Vektorbefehlswandler 116 kann bestimmen, ob der E/A-Befehl ein Vektorbefehl oder ein Nicht-Vektorbefehl ist. Zum Beispiel kann der Vektorbefehlswandler 116 den E/A-Befehl als einen Vektorbefehl basierend darauf identifizieren, ob der E/A-Befehl ein zusätzliches Feld einschließt, das eine Liste von Scatter-Gather-Logikblock-Adressen enthält. Wenn der E/A-Befehl kein Vektorbefehl ist (z. B. keine Liste der Scatter-Gather-Logikblock-Adressen enthält), wird der Nicht-Vektor-E/A-Befehl an den Befehlsparser zur Ausführung kommuniziert. Andernfalls ruft der Vektorbefehlswandler 116 die Metadaten des Vektorbefehls über den Steuerpfad 124 ab und stoppt vorübergehend das Abrufen neuer Befehle aus dem Host 102.
  • In einigen Konfigurationen erzeugt der Vektorbefehlswandler 116 eine Vielzahl von Nicht-Vektor-E/A-Befehlen basierend auf einem einzelnen Vektorbefehl. In einigen Fällen ist der gesamte Satz der Vielzahl von Nicht-Vektor-E/A-Befehlen logisch äquivalent zu dem einzelnen Vektorbefehl. In einigen Beispielen wird die Vielzahl von Nicht-Vektor-E/A-Befehlen durch Umwandeln von Zeigern, die in dem Vektorbefehl enthalten sind, in physische Adressen und Erzeugen eines Nicht-Vektor-E/A-Befehls für jede physische Adresse erzeugt. Der Vektorbefehlswandler 116 kann dann die Nicht-Vektor-E/A-Befehle in den Befehlsparser 118 zur Ausführung in die Warteschlange einreihen. Sobald die Nicht-Vektor-E/A-Befehle in die Warteschlange eingereiht sind, kann der Vorrichtungscontroller 110 das Abrufen neuer E/A-Befehle aus dem Host 102 wieder fortsetzen. Wie hierin verwendet, kann ein Vektorbefehl eine Liste oder ein Satz von Befehlen sein, die vom Host 102 erzeugt werden. Jedem Vektorbefehl kann eine Vielzahl von physischen Adressen zugewiesen werden, um eine Vielzahl von Speicherorten in dem SSD zu spezifizieren. In einigen Konfigurationen kann der Vektorbefehl einen Zeiger auf Metadaten einschließen, die auf dem Hostspeicher 106 gespeichert sind. In dieser Konfiguration enthalten die Metadaten eine physische Adressliste für den Zugriff auf das SSD 134.
  • In einigen Konfigurationen sammelt der Vektorabschließer 122 alle Abschlussnachrichten, die der Vielzahl von Nicht-Vektor-E/A-Befehlen zugeordnet sind, die von dem Vektorbefehlswandler 116 erzeugt werden. Anfänglich werden die gesammelten Abschlussnachrichten nicht dem Host 102 bereitgestellt. Stattdessen erzeugt der Vektorabschließer 122, sobald alle der Vielzahl von Nicht-Vektor-E/A-Befehlen zugeordneten Abschlussnachrichten empfangen wurden, eine Vektorbefehl-Abschlussnachricht basierend auf dem Inhalt aller der Vielzahl von Nicht-Vektor-E/A-Befehlen zugeordneten Abschlussanforderungen. Das heißt, die Vektorbefehl-Abschlussnachricht ist eine Angabe, dass der Vektorbefehl, der von dem Host 102 empfangen und in die Vielzahl von Nicht-Vektor-E/A-Befehlen umgewandelt wurde, abgeschlossen wurde. Der Vektorabschließer 122 stellt dann die Vektorbefehl-Abschlussnachricht an den Host 102 bereit.
  • In einigen Konfigurationen ist der Vorrichtungscontroller 110 für das Handhaben von E/A-Befehlen (einschließlich Vektorbefehlen), die vom Host 102 empfangen werden, das Sicherstellen von Datenintegrität und effizienter Speicherung und das Verwalten des SSD 134 verantwortlich. Um diese Aufgaben durchzuführen, führt der Controller 110 eine Flash-Übersetzungsschicht-Firmware (FTL-Firmware) aus. FTL-Aufgaben können von einem oder mehreren Prozessoren 112 unter Nutzung einer oder mehrerer der vorstehend genannten Komponenten ausgeführt werden. FTL kann auch zahlreiche andere Funktionen durchführen, einschließlich: Fehlercodekorrektur (d. h. Verwendung redundanter Daten oder Paritätsdaten zum Wiederherstellen einer Nachricht mit Fehlern); Speicherbereinigung (d. h. Identifizieren/Ungültigmachen veralteter Daten in SSD 134-Speicherblöcken zum Löschen für freien Raum für künftige Schreibvorgänge); Planen (d. h. Steuern der Reihenfolge, in der E/A-Befehle vom Host 102 ausgeführt werden); Überbereitstellung (d. h. Speicher, der zum Aufrechterhalten der Schreibgeschwindigkeit reserviert ist); und Abnutzungsausgleich (d. h. Verteilen von Schreibvorgängen auf die Blöcke des SSD 134 so gleichmäßig wie möglich, um sicherzustellen, dass alle Blöcke der Vorrichtung mit einer ungefähr ähnlichen Geschwindigkeit abnutzen).
  • In einigen Konfigurationen kann der Host 102 jedoch für einige oder alle der FTL-Aufgaben verantwortlich sein. Zum Beispiel kann das SSD 134 ein physisch adressierbares SSD einschließen, wie beispielsweise ein Open-Channel-SSD. In einer solchen Konfiguration kann das Open-Channel-SSD die interne parallele Organisation des SSD 134 dem Host 102 freigeben, so dass das SSD 134 direkt vom Host 102 verwaltet werden kann.
  • 2 ist ein Blockdiagramm, das eine logische Darstellung der internen parallelen Organisation eines Open-Channel-SSD 202 veranschaulicht. Die logische Struktur des SSD 202 wird durch eine oder mehrere Gruppen 204a bis 204n, parallele Einheiten 206a bis 206n (z. B. NAND-Chips oder Ebenen) und Datenblöcke 208a bis 208b, die einen oder mehrere logische Blöcke (nicht gezeigt) enthalten, unterteilt. Innerhalb der parallelen Einheiten 206a bis 206n gibt es einen Satz von Datenblöcken, der einen linearen Bereich logischer Blöcke darstellt. In einigen Beispielen kann sich eine Gruppe 204a bis 204n auf einen gemeinsam genutzten Bus oder physischen Kanal beziehen, der verwendet wird, um E/A-Befehle an die parallelen Einheiten 206a bis 206n zu kommunizieren, während sich die parallele Einheit 206a bis 206n auf eine oder mehrere NAND-Flash-Speichervorrichtungen auf dem gemeinsam genutzten Bus beziehen kann. In einigen Beispielen ist der Datenblock 208a bis 208b die kleinste adressierbare Einheit zum Lesen und Schreiben, und ein logischer Block ist die kleinste löschbare Einheit.
  • In einigen Konfigurationen ist der Host 102 für Gesichtspunkte der FTL verantwortlich. Dementsprechend empfängt das Open-Channel-SSD 202 möglicherweise keine logische adressbasierte Anweisung vom Host 102. Stattdessen kann der Host 102 physische Adressen des Open-Channel-SSD 202, in dem Daten gespeichert sind, direkt verwalten. In einigen Konfigurationen schließen Verantwortlichkeiten des Hosts 102 Datenplatzierung und E/A-Planung ein. Zum Beispiel kann der Host 102 die Datenabbildung unter Verwendung physischer Adressierung steuern sowie Abbildungstabellen und andere Metadaten erzeugen.
  • Dementsprechend kann der Host 102 E/A-Befehle unter Verwendung von vektorartigen Befehlen ausgeben, die ein zusätzliches Feld einschließen, das eingerichtet ist, um eine Liste von Scatter-Gather-Logikblock-Adressen zu kommunizieren. Mithilfe des Vektorbefehls kann der Host 102 auf separate parallele Einheiten 206a bis 206n gleichzeitig mithilfe eines einzigen E/A-Befehls zugreifen. Jedoch sind möglicherweise nicht alle Speicherungsvorrichtungen in der Lage, Vektorbefehle zu unterstützen. Zum Beispiel werden Nicht-Vektor-E/A-Befehle vom Host 102 im Allgemeinen an eine einzelne NAND-Ebene für jeden Befehl gerichtet, während der Vektorbefehl an mehrere NAND-Ebenen parallel in einem einzelnen E/A-Befehl gerichtet werden kann. Gemäß gewissen Gesichtspunkten der Offenbarung können minimale Hardware-, Software- und/oder Firmwareänderungen auf die Speicherungsvorrichtung angewendet werden, um den Vorrichtungscontroller 110 einzurichten, um Vektorbefehle zu unterstützen, die vom Host 102 ausgegeben werden.
  • 3 ist ein Flussdiagramm, das einen beispielhaften Prozess 300 zum Empfangen und Ausführen eines Vektorbefehls veranschaulicht. Der Prozess 300 kann zum Beispiel durch eine Speicherungsvorrichtung (wie z. B. Speicherungsvorrichtung 108 von 1) durchgeführt werden. Der Prozess 300 kann als Software- und/oder Firmwarekomponenten implementiert sein, die auf einem Speicher gespeichert sind und auf einem oder mehreren Prozessoren ausgeführt werden und ablaufen (z. B. Prozessor 112 von 1). Weiterhin kann das Senden und Empfangen von Signalen durch die Speicherungsvorrichtung 108 im beispielhaften Prozess 300 zum Beispiel durch eine oder mehrere PHY-Schnittstellen (z. B. PHY 114 von 1) ermöglicht werden.
  • Bei Block 310 empfängt die Speicherungsvorrichtung 108 einen Host-E/A-Befehl. Zum Beispiel kann ein Vorrichtungscontroller 110 der Speicherungsvorrichtung 108 den E/A-Befehl von einem Host 102 über die PHY 114-Schnittstelle empfangen. In einigen Konfigurationen schließt der Vorrichtungscontroller 110 ein Befehlsregister ein, das eine Anzahl (z. B. 64, 256, 512 usw.) von 1-Bit-Slots enthält. Der Vorrichtungscontroller 110 kann den Empfang von E/A-Befehlen vom Host 102 in Abhängigkeit davon regeln, ob das Befehlsregister verfügbare Slots (z. B. Slots mit einer binären „0“) aufweist.
  • Zum Beispiel kann der Vorrichtungscontroller 110 für jeden vom Host 102 empfangenen Befehl einen der Befehlsregister-Slots setzen (z. B. mit einer binären „1“). Dementsprechend wird, wenn ein Bit gesetzt ist, dem entsprechenden Slot ein E/A-Befehl zugeordnet, der von dem Vorrichtungscontroller 110 empfangen wird. Ist das Bit verfügbar, so ist der Slot leer und der Vorrichtungscontroller 110 steht für einen neuen Befehl zur Verfügung.
  • In einigen Konfigurationen kann ein Prozessor 112 bestimmen, ob das Befehlsregister verfügbare Slots enthält, bevor der Vorrichtungscontroller 110 einen neuen E/A-Befehl abruft. Zum Beispiel kann der Prozessor 112 einen Bitmap-Vektor nutzen, der in dem Vorrichtungscontroller 110 gespeichert ist, um zu bestimmen, ob ein Befehlsregister-Slot gesetzt ist, bevor danach ein E/A-Befehl aus dem Host 102 abgerufen wird.
  • Dementsprechend bestimmt der Vorrichtungscontroller 110 in einigen Konfigurationen, ob das Befehlsregister mindestens einen verfügbaren Slot enthält, bevor ein E/A-Befehl aus dem Host 102 abgerufen wird. Sobald der Vorrichtungscontroller 110 bestimmt, dass ein Slot verfügbar ist, ruft der Vorrichtungscontroller 110 den E/A-Befehl ab und setzt danach den verfügbaren Slot. Wenn der Vorrichtungscontroller 110 bestimmt, dass keine Slots verfügbar sind, kann der Vorrichtungscontroller 110 das Abrufen von E/A-Befehlen aus dem Host 102 deaktivieren, bis ein Slot verfügbar wird.
  • Bei Block 320 bestimmt der Vorrichtungscontroller 110, ob der abgerufene E/A-Befehl ein Vektorbefehl ist. Wenn der E/A-Befehl kein Vektorbefehl ist, dann geht der Prozess 300 zu Block 330 und der Vorrichtungscontroller 110 wird in den Befehlsparser 118 zur Ausführung des Befehls eingereiht. Wenn der E/A-Befehl ein Vektorbefehl ist, dann geht der Prozess 300 weiter zu Block 340, wo der Vorrichtungscontroller 110 die Anzahl der physischen Adressen bestimmt, die in dem Vektorbefehl enthalten ist, und eine Anzahl von Befehlsslots gleich oder kleiner als die Anzahl der physischen Adressen setzt. Wenn es zum Beispiel weniger verfügbare Slots in dem Befehlsregister gibt als in dem Vektorbefehl enthaltene physische Adressen, dann wird der Vektorbefehlswandler 116 danach nur eine Anzahl von Nicht-Vektor-E/A-Befehlen aus dem Vektorbefehl erzeugen, die gleich der Anzahl von Slots ist, während die restlichen Nicht-Vektor-E/A-Befehle erzeugt werden, wenn einer oder mehrere Slots verfügbar werden (z. B. nach Abschluss eines Befehls, der einem der Slots entspricht).
  • Wenn zum Beispiel die SSD-Vorrichtung bis zu 64 E/A-Befehle vom Host 102 halten kann, dann werden 64 Befehlsslots im Befehlsregister des Vorrichtungscontrollers 110 implementiert. Wenn alle 64 Befehlsslots gesetzt sind, dann stoppt der Vorrichtungscontroller 110 das Abrufen von Host-Befehlen bis zum Abschluss mindestens eines ausstehenden E/A-Befehls, wodurch der entsprechende Slot bereinigt wird.
  • Befindet sich die Speicherungsvorrichtung 108 in einem Ruhezustand und es gibt keine ausstehenden Befehle in dem Vorrichtungscontroller 110, so ist das Befehlsregister 0. Wenn der Vorrichtungscontroller 110 16 Nicht-Vektor-E/A-Befehle aus dem Host 102 abruft, dann werden die Bits 0 bis 15 im Befehlsregister gesetzt, um anzugeben, dass die Befehlsslots 0 bis 15 belegt sind. Wenn der Vorrichtungscontroller 110 jedoch einen einzigen Vektorbefehl abruft, der 32 physische Adressen enthält, müssen 32 Nicht-Vektor-E/A-Befehle erzeugt werden. An dieser Stelle setzt der Vorrichtungscontroller 110 32 Befehlsslots (z. B. Slots 16 bis 47 im Befehlsregister). In einigen Konfigurationen stoppt der Vorrichtungscontroller 110 das Abrufen neuer E/A-Befehle, bis die Nicht-Vektorbefehle erzeugt und zur Ausführung in eine Warteschlange eingereiht sind. In anderen Konfigurationen kann der Vorrichtungscontroller 110 basierend auf der Verfügbarkeit des Befehlsslots weiter bis zu 16 weitere Befehle abrufen.
  • Wenn zum Beispiel der Vorrichtungscontroller 110 15 neue Nicht-Vektorbefehle und 1 Vektorbefehl aus dem Host 102 abruft und der Vektorbefehl 21 physische Adressen enthält, setzt der Vorrichtungscontroller die restlichen 16 Befehlsslots (d. h. fünfzehn Slots werden für die Nicht-Vektorbefehle gesetzt und 1 Slot wird für den Vektorbefehl gesetzt) und erzeugt nur einen Nicht-Vektorbefehl, der einer der physischen Adressen in dem Vektorbefehl entspricht. Der Vorrichtungscontroller stoppt dann das Abrufen von E/A-Befehlen aus dem Host 102 und wartet, bis ein Slot verfügbar wird, bevor zusätzliche Nicht-Vektorbefehle erzeugt werden, die den verbleibenden 20 physischen Adressen in dem Vektorbefehl entsprechen.
  • Dementsprechend kann der Vorrichtungscontroller 110 das Abrufen zusätzlicher E/A-Befehle aus dem Host 102 stoppen, bis für jede physische Adresse, die in dem Vektorbefehl enthalten ist, ein Slot in dem Befehlsregister gesetzt wurde und das Befehlsregister einen verfügbaren Slot enthält. Wenn in anderen Konfigurationen das Befehlsregister keinen verfügbaren Slot enthält, kann der Vorrichtungscontroller 110 weiterhin neue Befehle aus dem Host 102 abrufen, berücksichtigt jedoch die Anzahl der E/A-Befehle, die erzeugt werden sollen. Zum Beispiel kann der Vorrichtungscontroller 110 weiterhin neue Befehle abrufen, die Anzahl physischer Adressen in jedem Befehl identifizieren und den Vektorbefehlswandler 116 in eine Warteschlange einreihen, um die Vielzahl von E/A-Befehlen basierend auf dem Vektorbefehl zu erzeugen, wenn Slots verfügbar werden.
  • Bei Block 350 ruft der Vorrichtungscontroller 110 die Metadaten des Vektorbefehls aus dem Host 102 ab. In einigen Konfigurationen enthalten die Metadaten Informationen, die für die Erzeugung der Vielzahl von E/A-Befehlen erforderlich sind. Zum Beispiel können die Metadaten eine Liste physischer Adressen einschließen, die einem Zeiger entsprechen, der in dem Vektorbefehl eingeschlossen ist. In einem anderen Beispiel können die Metadaten einen Zeiger einschließen, der durch eine physische Bereichsseite (PRP) oder eine Scatter-Gather-Liste (SGL) gemäß dem NVMe-Standard dargestellt wird. Die Speicherungsvorrichtung ruft die Zeiger ab und kann sie manipulieren, um die Zeiger für jeden Nicht-Vektor-Befehl aufzubauen.
  • Bei Block 360 erzeugt der Vektorbefehlswandler 116 eine Vielzahl von Nicht-Vektor-E/A-Befehlen basierend auf dem aus dem Host 102 abgerufenen Vektorbefehl. In einigen Konfigurationen erzeugt der Vektorbefehlswandler 116 jeden der Nicht-Vektor-E/A-Befehle durch Anhängen einer der physischen Adressen des Vektorbefehls an jeden Nicht-Vektorbefehl. Dementsprechend ist die Vielzahl von Nicht-Vektor-E/A-Befehlen äquivalent zu dem ursprünglichen Vektorbefehl.
  • In einigen Konfigurationen wird die Vielzahl von Nicht-Vektor-E/A-Befehlen in einer Reihenfolge gemäß den Metadaten erzeugt, die vom Host 102 bereitgestellt werden. Zum Beispiel kann der Vorrichtungscontroller 110 die Metadaten aus dem Host 102 abrufen. In einigen Beispielen enthalten die Metadaten eine Liste physischer Adressen. Dementsprechend können die Nicht-Vektor-E/A-Befehle sequentiell in der Reihenfolge der Adressen auf der Liste erzeugt werden. In anderen Konfigurationen werden die Nicht-Vektor-E/A-Befehle gemäß der Struktur der Speicherungsvorrichtung und/oder der Ressourcenverfügbarkeit erzeugt. Zum Beispiel kann der Vektorbefehlswandler 116 die Nicht-Vektor-E/A-Befehle in Prioritätsreihenfolge erzeugen, wobei eine physische Adresse, die einer verfügbaren parallelen Einheit zugeordnet ist, eine höhere Priorität erhält als eine physische Adresse, die einer belegten parallelen Einheit zugeordnet ist. In dieser Konfiguration wird die Dienstgüte und -effizienz der Speicherungsvorrichtung 108 verbessert.
  • Bei Block 370 sendet der Vektorbefehlswandler 116 die Vielzahl von Nicht-Vektorbefehlen an den Befehlsparser 118, um zur Ausführung in eine Warteschlange eingereiht zu werden.
  • 4 ist ein Flussdiagramm, das einen beispielhaften Prozess 400 zum Erzeugen und Senden eines Befehlsabschlusses veranschaulicht. Der Prozess 400 kann zum Beispiel durch eine Speicherungsvorrichtung (z. B. wie Speicherungsvorrichtung 108 von 1) durchgeführt werden. Der Prozess 400 kann als Software- und/oder Firmwarekomponenten implementiert sein, die auf einem Speicher gespeichert sind und auf einem oder mehreren Prozessoren ausgeführt werden und ablaufen (z. B. Prozessor 112 von 1). Weiterhin kann das Senden und Empfangen von Signalen durch die Speicherungsvorrichtung 108 im beispielhaften Prozess 400 zum Beispiel durch eine oder mehrere PHY-Schnittstellen (z B. PHY 114 von 1) ermöglicht werden.
  • Bei Block 410 empfängt der Vektorabschließer 122 eine Abschlussanforderung. In einigen Konfigurationen wird die Abschlussanforderung durch das Flash-Schnittstellenmodul 130 erzeugt und über den Steuerpfad 124 an den Vektorabschließer 122 kommuniziert.
  • In Schritt 420 identifiziert der Vektorabschließer 122, ob die Abschlussanforderung einem eigenständigen Nicht-Vektor-E/A-Befehl oder einem von einer Vielzahl von Nicht-Vektor-Befehlen entspricht, die von einem Vektorbefehl stammen. Wenn die Abschlussanforderung dem eigenständigen Nicht-Vektor-E/A-Befehl entspricht, dann geht der Prozess 400 weiter zu Block 430, wo der Vektorabschließer 122 eine Abschlussnachricht erzeugt und die Abschlussnachricht dem Host 102 bereitstellt.
  • Wenn in Schritt 420 der Vektorabschließer 122 bestimmt, dass die Abschlussanforderung einem der Vielzahl von Nicht-Vektorbefehlen entspricht, der von einem Vektorbefehl stammt, dann geht der Prozess 400 weiter zu Schritt 440, wo der Vektorabschließer 122 bestimmt, ob die empfangene Abschlussanforderung die letzte Anforderung für den Vektorbefehl ist. Zum Beispiel kann der Vektorabschließer 122 eingerichtet sein, um alle Abschlussanforderungen zu sammeln, die einem bestimmten Vektorbefehl zugeordnet sind. Wenn die empfangene Abschlussanforderung nicht die letzte Anforderung ist (d. h. der Vektorabschließer 122 nicht alle Abschlussanforderungen gesammelt hat, die jeder physischen Adresse des Vektorbefehls zugeordnet sind), dann geht der Prozess 400 weiter zu Block 450, wo der Vektorabschließer 122 die empfangene Abschlussanforderung hält und wartet, bis er die letzte Abschlussanforderung für den Vektorbefehl empfängt.
  • Wenn in Schritt 440 der Vektorabschließer 122 bestimmt, dass die empfangene Abschlussanforderung die letzte Anforderung für den Vektorbefehl ist, dann geht der Prozess 400 weiter zu Block 460, wo der Vektorabschließer 122 eine Vektorbefehl-Abschlussnachricht basierend auf allen empfangenen Abschlussanforderungen erzeugt, die dem Vektorbefehl zugeordnet sind.
  • Bei Block 470 löscht der Vektorabschließer 122 alle empfangenen Abschlussanforderungen, die dem Vektorbefehl zugeordnet sind.
  • Zusammenfassend bezieht sich die Offenbarung allgemein auf Systeme, Verfahren und Einrichtungen zum Empfangen von E/A-Befehlen vom Vektortyp vom Host 102 und Ausführen der Vektorbefehle auf einem Open-Channel-SSD (z. B. SSD 134) mit minimalen Änderungen an einer Speicherungsvorrichtung 108. Insbesondere beziehen sich gewisse Gesichtspunkte der Offenbarung auf Verfahren und Einrichtungen zum Unterstützen von Vektorbefehlen, sodass die Vektorbefehle transparent für den Host 102 und mehrere Komponenten der Speicherungsvorrichtung 108 verarbeitet werden. Zum Beispiel kann der Vektorbefehlswandler 116 eingerichtet sein, um eine Vielzahl von Nicht-Vektor-E/A-Befehlen aus einem einzelnen Vektorbefehl zu erzeugen und die Vielzahl von Nicht-Vektor-E/A-Befehlen auf andere Komponenten der Speicherungsvorrichtung 108 zur Ausführung weiterzuleiten. Darüber hinaus kann der Vektorabschließer 122 eine Vektorbefehl-Abschlussnachricht basierend auf dem Abschluss der Vielzahl von Nicht-Vektor-E/A-Befehlen erzeugen und die Abschlussnachricht an den Host 102 weiterleiten. Hier kann der Host 102 möglicherweise keine Angabe darauf erhalten, wie der Vektorbefehl verarbeitet wurde.
  • In einigen Beispielen versetzt die Erzeugung, durch den Vektorbefehlswandler 116, der Vielzahl von Nicht-Vektor-E/A-Befehlen aus einem einzelnen Vektorbefehl den Vorrichtungscontroller 110 in die Lage, die Vielzahl von Nicht-Vektor-E/A-Befehlen intelligent zu planen, um die Effizienz der Speicherungsvorrichtung 108 zu verbessern. In einem Beispiel kann der Vektorbefehlswandler 116 die Nicht-Vektor-E/A-Befehle in Prioritätsreihenfolge erzeugen, wobei eine physische Adresse, die einer verfügbaren parallelen Einheit zugeordnet ist, eine höhere Priorität erhält als eine physische Adresse, die einer belegten parallelen Einheit zugeordnet ist. In dieser Konfiguration wird die Dienstgüte und -effizienz der Speicherungsvorrichtung 108 verbessert.
  • In einer nicht einschränkenden Ausführungsform wird eine Vorrichtung offenbart, wobei die Vorrichtung einen Speicher und einen Controller einschließt, der kommunikativ mit dem Speicher gekoppelt ist. In einigen Konfigurationen ist der Controller eingerichtet, um einen Satz physischer Adressen in einem Vektorbefehl zu identifizieren, der aus einer Host-Rechenvorrichtung abgerufen wird, wobei jede physische Adresse des Satzes physischer Adressen einem Ort in dem Speicher entspricht. In einigen Konfigurationen ist der Controller eingerichtet, um einen Satz von Nicht-Vektorbefehlen zu erzeugen, wobei jeder Nicht-Vektorbefehl in dem Satz von Nicht-Vektorbefehlen einer von jeder physischen Adresse in dem Satz von physischen Adressen entspricht. In einigen Konfigurationen ist der Controller eingerichtet, um den Satz von Nicht-Vektorbefehlen auszuführen. In einigen Konfigurationen ist der Controller eingerichtet, um eine Nachricht an die Host-Rechenvorrichtung zu erzeugen, die den Abschluss des Vektorbefehls als Reaktion auf die Ausführung des Satzes von Nicht-Vektorbefehlen angibt.
  • In einer nicht einschränkenden Ausführungsform ist der Controller ferner eingerichtet, um einen Befehl aus der Host-Rechenvorrichtung abzurufen und zu bestimmen, dass der abgerufene Befehl ein Vektorbefehl ist, wobei die Bestimmung darauf basiert, ob der abgerufene Befehl ein Feld aufweist, das eingerichtet ist, um eine Liste von Scatter-Gather-Logikblock-Adressen zu kommunizieren.
  • In einer nicht einschränkenden Ausführungsform ist der Controller ferner eingerichtet, um Metadaten aus der Host-Rechenvorrichtung abzurufen, wobei die Metadaten eine Liste physischer Adressen aufweisen.
  • In einer nicht einschränkenden Ausführungsform weist der Vektorbefehl einen Zeiger auf, der eingerichtet ist, um den Satz physischer Adressen in der Liste physischer Adressen in den Metadaten zu identifizieren.
  • In einer nicht einschränkenden Ausführungsform weist der Satz physischer Adressen zwei oder mehr physische Adressen auf.
  • In einer nicht einschränkenden Ausführungsform schließt der Controller ein Befehlsregister ein, das eine Vielzahl von 1-Bit-Slots enthält, wobei der Controller weiterhin eingerichtet ist, um zu bestimmen, ob das Befehlsregister einen verfügbaren Slot enthält, und einen Befehl aus der Host-Rechenvorrichtung abzurufen, wenn das Befehlsregister den verfügbaren Slot enthält.
  • In einer nicht einschränkenden Ausführungsform ist der Controller weiterhin eingerichtet, um einen Nicht-Vektorbefehl des Satzes von Nicht-Vektorbefehlen für jeden verfügbaren Slot in dem Befehlsregister auszuführen.
  • In einer nicht einschränkenden Ausführungsform weist der Speicher eine Open-Channel-Solid-State-Laufwerk (SSD)-Speichervorrichtung auf.
  • In einer nicht einschränkenden Ausführungsform wird eine Vorrichtung offenbart, wobei die Vorrichtung einen Speicher und einen Controller einschließt, der kommunikativ mit dem Speicher gekoppelt ist. In einigen Konfigurationen ist der Controller eingerichtet, um eine Angabe zu empfangen, dass der Speicher einen Nicht-Vektorbefehl ausgeführt hat, wobei der Nicht-Vektorbefehl einer aus einer Vielzahl von Nicht-Vektorbefehlen ist, die einem von einer Host-Rechenvorrichtung empfangenen Vektorbefehl entsprechen. In einigen Konfigurationen ist der Controller eingerichtet, um zu bestimmen, ob der Speicher alle der Vielzahl von Nicht-Vektorbefehlen ausgeführt hat, die dem Vektorbefehl entsprechen. In einigen Konfigurationen ist der Controller eingerichtet, um eine Abschlussnachricht zu erzeugen, welche die Ausführung des Vektorbefehls angibt, wenn der Speicher jeden der Vielzahl von Nicht-Vektorbefehlen ausgeführt hat. Und in einigen Konfigurationen ist der Controller eingerichtet, um die Abschlussnachricht an die Host-Rechenvorrichtung zu übertragen.
  • In einer nicht einschränkenden Ausführungsform ist der Controller weiterhin eingerichtet, um die Angabe zu speichern, dass der Speicher den Nicht-Vektorbefehl ausgeführt hat, wenn der Speicher nicht alle der Vielzahl von Nicht-Vektorbefehlen ausgeführt hat, die dem Vektorbefehl entsprechen.
  • In einer nicht einschränkenden Ausführungsform ist der Controller weiterhin eingerichtet, um eine Vielzahl von Angaben zu empfangen, dass der Speicher einen Nicht-Vektorbefehl ausgeführt hat, wobei jede der Vielzahl von Angaben einem der Vielzahl von Nicht-Vektorbefehlen entspricht. In einigen Konfigurationen ist der Controller eingerichtet, um die Vielzahl von Angaben zu speichern. In einigen Konfigurationen ist der Controller eingerichtet, um die gespeicherte Vielzahl von Angaben nach der Übertragung der Abschlussnachricht an die Host-Rechenvorrichtung zu löschen.
  • In einer nicht einschränkenden Ausführungsform weist jeder der Vielzahl von Nicht-Vektorbefehlen eine von einer Vielzahl von physischen Adressen auf, die in dem Vektorbefehl enthalten sind.
  • In einer nicht einschränkenden Ausführungsform entspricht jede der physischen Adressen einem Speicherort im Speicher.
  • In einer nicht einschränkenden Ausführungsform ist jeder der Vielzahl von Nicht-Vektorbefehlen eingerichtet, um in sequentieller Reihenfolge durch den Speicher ausgeführt zu werden.
  • In einer nicht einschränkenden Ausführungsform nutzt jeder der Vielzahl von Nicht-Vektorbefehlen mindestens einen von einem Schreib-, Lese-, Kopier- oder Rücksetzbefehl mit dem Vektorbefehl gemeinsam.
  • In einer nicht einschränkenden Ausführungsform weist der Speicher einen nichtflüchtigen Open-Channel-Speicher auf.
  • In einer nicht einschränkenden Ausführungsform ist eine Einrichtung offenbart. In einigen Konfigurationen schließt die Einrichtung ein Mittel zum Empfangen eines Vektorbefehls von einer Hostvorrichtung ein, wobei der Vektorbefehl einen Satz physischer Adressen aufweist. In einigen Konfigurationen schließt die Einrichtung ein Mittel zum Erzeugen eines Satzes von Nicht-Vektorbefehlen ein, wobei jeder Nicht-Vektorbefehl in dem Satz von Nicht-Vektorbefehlen einer von jeder physischen Adresse in dem Satz von physischen Adressen entspricht, und wobei jeder Nicht-Vektorbefehl in dem Satz von Nicht-Vektorbefehlen eingerichtet ist, um durch ein Mittel zum Speichern digitaler Daten ausgeführt zu werden. In einigen Konfigurationen schließt die Einrichtung ein Mittel zum Erzeugen einer Nachricht an die Host-Rechenvorrichtung ein, die den Abschluss des Vektorbefehls als Reaktion auf die Ausführung des Satzes von Nicht-Vektorbefehlen durch das Mittel zum Speichern von digitalen Daten angibt.
  • In einer nicht einschränkenden Ausführungsform schließt die Einrichtung ein Mittel zum Abrufen von Metadaten aus der Host-Rechenvorrichtung ein, wobei die Metadaten eine Liste physischer Adressen aufweisen und wobei der Vektorbefehl einen Zeiger aufweist, der eingerichtet ist, um den Satz physischer Adressen in der Liste physischer Adressen in den Metadaten zu identifizieren.
  • In einer nicht einschränkenden Ausführungsform schließt die Einrichtung Mittel zum Bestimmen ein, ob ein Befehlsregister einen verfügbaren Slot enthält, wobei das Befehlsregister eine Vielzahl von 1-Bit-Slots aufweist. In einigen Konfigurationen schließt die Einrichtung ein Mittel zum Abrufen eines Befehls aus der Host-Rechenvorrichtung ein, wenn das Befehlsregister den verfügbaren Slot enthält.
  • Während sich das Vorstehende auf Ausführungsformen der vorliegenden Offenbarung bezieht, können andere und weitere Ausführungsformen der Offenbarung ausgearbeitet werden, ohne vom grundlegenden Schutzumfang davon abzuweichen, und der Schutzumfang wird durch die nachstehenden Ansprüche bestimmt.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • US 16/459183 [0001]

Claims (20)

  1. Vorrichtung, aufweisend: einen Speicher; und einen Controller, der kommunikativ mit dem Speicher gekoppelt ist, wobei der Controller eingerichtet ist zum: Identifizieren eines Satzes physischer Adressen in einem Vektorbefehl, der aus einer Host-Rechenvorrichtung abgerufen wird, wobei jede physische Adresse des Satzes physischer Adressen einem Ort in dem Speicher entspricht; Erzeugen eines Satzes von Nicht-Vektorbefehlen, wobei jeder Nicht-Vektorbefehl in dem Satz von Nicht-Vektorbefehlen einer von jeder physischen Adresse in dem Satz von physischen Adressen entspricht; Ausführen des Satzes von Nicht-Vektorbefehlen; und Erzeugen einer Nachricht an die Host-Rechenvorrichtung, die den Abschluss des Vektorbefehls als Reaktion auf die Ausführung des Satzes von Nicht-Vektorbefehlen angibt.
  2. Vorrichtung gemäß Anspruch 1, wobei der Controller weiterhin eingerichtet ist zum: Abrufen eines Befehls aus der Host-Rechenvorrichtung; und Bestimmen, dass der abgerufene Befehl ein Vektorbefehl ist, wobei die Bestimmung darauf basiert, ob der abgerufene Befehl ein Feld aufweist, das eingerichtet ist, um eine Liste von Scatter-Gather-Logikblock-Adressen zu kommunizieren.
  3. Vorrichtung gemäß Anspruch 1, wobei der Controller weiterhin eingerichtet ist, um Metadaten aus der Host-Rechenvorrichtung abzurufen, wobei die Metadaten eine Liste physischer Adressen aufweisen.
  4. Vorrichtung gemäß Anspruch 3, wobei der Vektorbefehl einen Zeiger aufweist, der eingerichtet ist, um den Satz physischer Adressen in der Liste physischer Adressen in den Metadaten zu identifizieren.
  5. Vorrichtung gemäß Anspruch 1, wobei der Satz physischer Adressen zwei oder mehr physische Adressen aufweist.
  6. Vorrichtung nach Anspruch 1, weiterhin aufweisend ein Befehlsregister, das eine Vielzahl von 1-Bit-Slots enthält, wobei der Controller ferner eingerichtet ist zum: Bestimmen, ob das Befehlsregister einen verfügbaren Slot enthält; und Abrufen eines Befehls aus der Host-Rechenvorrichtung, wenn das Befehlsregister den verfügbaren Slot enthält.
  7. Vorrichtung gemäß Anspruch 6, wobei der Controller weiterhin eingerichtet ist, um einen Nicht-Vektorbefehl des Satzes von Nicht-Vektorbefehlen für jeden verfügbaren Slot in dem Befehlsregister auszuführen.
  8. Vorrichtung gemäß Anspruch 1, wobei der Speicher eine Open-Channel-Solid-State-Laufwerk (SSD)-Speichervorrichtung aufweist.
  9. Vorrichtung gemäß Anspruch 1, wobei jeder Nicht-Vektorbefehl in dem Satz von Nicht-Vektorbefehlen mindestens einen von einem Schreib-, Lese-, Kopier- und/oder Rücksetzbefehl mit dem Vektorbefehl gemeinsam nutzt.
  10. Vorrichtung, aufweisend: einen Speicher; und einen Controller, der kommunikativ mit dem Speicher gekoppelt ist, wobei der Controller eingerichtet ist zum: Empfangen einer Angabe, dass der Speicher einen Nicht-Vektorbefehl ausgeführt hat, wobei der Nicht-Vektorbefehl einer aus einer Vielzahl von Nicht-Vektorbefehlen ist, die einem von einer Host-Rechenvorrichtung empfangenen Vektorbefehl entsprechen; Bestimmen, ob der Speicher alle der Vielzahl von Nicht-Vektorbefehlen ausgeführt hat, die dem Vektorbefehl entsprechen; Erzeugen einer Abschlussnachricht, welche die Ausführung des Vektorbefehls angibt, wenn der Speicher jeden der Vielzahl von Nicht-Vektorbefehlen ausgeführt hat; und Übertragen der Abschlussnachricht an die Host-Rechenvorrichtung.
  11. Vorrichtung gemäß Anspruch 10, wobei der Controller weiterhin eingerichtet ist, um die Angabe zu speichern, dass der Speicher den Nicht-Vektorbefehl ausgeführt hat, wenn der Speicher nicht alle der Vielzahl von Nicht-Vektorbefehlen ausgeführt hat, die dem Vektorbefehl entsprechen.
  12. Vorrichtung gemäß Anspruch 10, wobei der Controller weiterhin eingerichtet ist zum: Empfangen einer Vielzahl von Angaben, dass der Speicher einen Nicht-Vektorbefehl ausgeführt hat, wobei jede der Vielzahl von Angaben einem der Vielzahl von Nicht-Vektorbefehlen entspricht; Speichern der Vielzahl von Angaben; und Löschen der gespeicherten Vielzahl von Angaben nach der Übertragung der Abschlussnachricht an die Host-Rechenvorrichtung.
  13. Vorrichtung gemäß Anspruch 10, wobei jeder der Vielzahl von Nicht-Vektorbefehlen eine von einer Vielzahl physischer Adressen aufweist, die in dem Vektorbefehl enthalten ist.
  14. Vorrichtung gemäß Anspruch 10, wobei der Controller weiterhin eingerichtet ist, um eine Abschlussanforderung zu halten, bis alle Anforderungen in einem Vektorbefehl abgeschlossen sind.
  15. Vorrichtung gemäß Anspruch 10, wobei jeder der Vielzahl von Nicht-Vektorbefehlen eingerichtet ist, um in einer sequentiellen Reihenfolge durch den Speicher ausgeführt zu werden.
  16. Vorrichtung gemäß Anspruch 10, wobei jeder der Vielzahl von Nicht-Vektorbefehlen einen Schreib-, Lese-, Kopier- und/oder Rücksetzbefehl mit dem Vektorbefehl gemeinsam nutzt.
  17. Vorrichtung gemäß Anspruch 10, wobei der Speicher einen nicht-flüchtigen Open-Channel-Speicher aufweist.
  18. Einrichtung, aufweisend: Mittel zum Empfangen eines Vektorbefehls von einer Hostvorrichtung, wobei der Vektorbefehl einen Satz physischer Adressen aufweist; Mittel zum Erzeugen eines Satzes von Nicht-Vektorbefehlen, wobei jeder Nicht-Vektorbefehl in dem Satz von Nicht-Vektorbefehlen einer von jeder physischen Adresse in dem Satz von physischen Adressen entspricht, und wobei jeder Nicht-Vektorbefehl in dem Satz von Nicht-Vektorbefehlen eingerichtet ist, um durch ein Mittel zum Speichern digitaler Daten ausgeführt zu werden; und Mittel zum Erzeugen einer Nachricht an die Host-Rechenvorrichtung, die den Abschluss des Vektorbefehls als Reaktion auf die Ausführung des Satzes von Nicht-Vektorbefehlen durch das Mittel zum Speichern von digitalen Daten angibt.
  19. Einrichtung gemäß Anspruch 18, weiterhin aufweisend: Mittel zum Abrufen von Metadaten aus der Host-Rechenvorrichtung, wobei die Metadaten eine Liste physischer Adressen aufweisen und wobei der Vektorbefehl einen Zeiger aufweist, der eingerichtet ist, um den Satz physischer Adressen in der Liste physischer Adressen in den Metadaten zu identifizieren.
  20. Einrichtung gemäß Anspruch 18, weiterhin aufweisend: Mittel zum Bestimmen, ob ein Befehlsregister einen verfügbaren Slot enthält, wobei das Befehlsregister eine Vielzahl von 1-Bit-Slots aufweist; und Mittel zum Abrufen eines Befehls aus der Host-Rechenvorrichtung, wenn das Befehlsregister den verfügbaren Slot enthält.
DE112020000124.5T 2019-07-01 2020-03-17 Ausführung von open-channel-vektorbefehlen Pending DE112020000124T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/459,183 2019-07-01
US16/459,183 US10901733B1 (en) 2019-07-01 2019-07-01 Open channel vector command execution
PCT/US2020/023177 WO2021002896A1 (en) 2019-07-01 2020-03-17 Open channel vector command execution

Publications (1)

Publication Number Publication Date
DE112020000124T5 true DE112020000124T5 (de) 2021-07-29

Family

ID=74065216

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112020000124.5T Pending DE112020000124T5 (de) 2019-07-01 2020-03-17 Ausführung von open-channel-vektorbefehlen

Country Status (5)

Country Link
US (1) US10901733B1 (de)
KR (1) KR102645983B1 (de)
CN (1) CN113196225A (de)
DE (1) DE112020000124T5 (de)
WO (1) WO2021002896A1 (de)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11893278B2 (en) * 2021-02-08 2024-02-06 Samsung Electronics Co., Ltd. Memory controller and memory control method for generating commands based on a memory request
US11934684B2 (en) 2021-12-14 2024-03-19 Western Digital Technologies, Inc. Maximum data transfer size per tenant and command type

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3205989B2 (ja) * 1988-09-22 2001-09-04 日本電気株式会社 情報処理システム
US7627735B2 (en) * 2005-10-21 2009-12-01 Intel Corporation Implementing vector memory operations
US20070195367A1 (en) 2006-02-22 2007-08-23 Seiko Epson Corporation Computer readable medium recording a printer control program, printer control method, and printer system
US7849294B2 (en) * 2008-01-31 2010-12-07 International Business Machines Corporation Sharing data in internal and memory representations with dynamic data-driven conversion
US8407407B1 (en) 2009-10-06 2013-03-26 Marvell International Ltd. Solid state drive access control system with equalized access timing
US9075708B1 (en) * 2011-06-30 2015-07-07 Western Digital Technologies, Inc. System and method for improving data integrity and power-on performance in storage devices
US9652376B2 (en) 2013-01-28 2017-05-16 Radian Memory Systems, Inc. Cooperative flash memory control
WO2014142972A1 (en) * 2013-03-15 2014-09-18 Intel Corporation Methods and systems to vectorize scalar computer program loops having loop-carried dependences
US9720860B2 (en) 2014-06-06 2017-08-01 Toshiba Corporation System and method for efficient processing of queued read commands in a memory system
US9645739B2 (en) 2014-09-26 2017-05-09 Intel Corporation Host-managed non-volatile memory
US9514058B2 (en) * 2014-12-22 2016-12-06 Texas Instruments Incorporated Local page translation and permissions storage for the page window in program memory controller
US9904609B2 (en) 2015-11-04 2018-02-27 Toshiba Memory Corporation Memory controller and memory device
KR102564165B1 (ko) 2016-04-25 2023-08-04 삼성전자주식회사 비휘발성 메모리 익스프레스 컨트롤러에 의한 입출력 큐 관리 방법
CN107870727B (zh) 2016-09-23 2021-01-01 伊姆西Ip控股有限责任公司 用于存储数据的方法和设备
KR102618699B1 (ko) 2016-09-28 2024-01-02 삼성전자주식회사 호스트에 의해 제어되는 스토리지 장치를 포함하는 컴퓨팅 시스템
KR102387922B1 (ko) 2017-02-07 2022-04-15 삼성전자주식회사 솔리드 스테이트 드라이브의 비동기 이벤트 요청 명령 처리 방법 및 시스템
US10073640B1 (en) 2017-03-10 2018-09-11 Toshiba Memory Corporation Large scale implementation of a plurality of open channel solid state drives
KR102293069B1 (ko) 2017-09-08 2021-08-27 삼성전자주식회사 불휘발성 메모리 장치 및 제어기를 포함하는 스토리지 장치, 제어기, 그리고 스토리지 장치의 동작 방법
KR102340287B1 (ko) * 2017-09-20 2021-12-20 삼성전자주식회사 멀티캐스트 통신 프로토콜에 따라 호스트와 통신하는 저장 장치 및 호스트의 통신 방법
CN109542335B (zh) 2017-09-22 2022-04-01 慧荣科技股份有限公司 快闪存储器的数据内部搬移方法以及使用该方法的装置
KR102446733B1 (ko) 2017-11-30 2022-09-23 삼성전자주식회사 스토리지 장치 및 스토리지 장치를 포함하는 전자 장치
US10761775B2 (en) 2018-02-09 2020-09-01 Samsung Electronics Co., Ltd. System and method for NVMe inter command association in SSD storage using a bridge device
JP7131053B2 (ja) * 2018-04-24 2022-09-06 富士通株式会社 記憶装置,情報処理プログラムおよび情報処理システム

Also Published As

Publication number Publication date
CN113196225A (zh) 2021-07-30
KR102645983B1 (ko) 2024-03-08
US20210004229A1 (en) 2021-01-07
KR20210084632A (ko) 2021-07-07
WO2021002896A1 (en) 2021-01-07
US10901733B1 (en) 2021-01-26

Similar Documents

Publication Publication Date Title
DE102015014851B4 (de) Ressourcenzuteilung und -freigabe für die Energieverwaltung in Vorrichtungen
DE102018105943A1 (de) Kontextbewusste dynamische Befehlsplanung für ein Datenspeichersystem
DE102018105984A1 (de) Prioritätsbasierte interne Datenverschiebung
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
DE112018000180T5 (de) System und verfahren zum adaptiven senden frühzeitiger beendigung unter verwendung eines steuerungsspeicherpuffers
DE102017128939A1 (de) System und Verfahren zum dynamischen und adaptiven Zusammenführen von Interrupts
DE112018000834T5 (de) System und verfahren zur adaptiven befehlsabruf-aggregation
DE112015004536T5 (de) Hardware-Automatisierung für Speicherverwaltung
DE102013112894A1 (de) Speichervorrichtung, Computersystem mit derselben und dazugehöriges Verfahren zur Datenübertragung
DE112014005521T5 (de) Speichermodul und Verfahren zum Verwalten des Abbildens logischer Adressen auf physikalische Adressen
DE102015005744A1 (de) SYSTEM UND VERFAHREN FÜR PEER-ZU-PEER-PCIe-SPEICHERTRANSFERS
DE112012005222T5 (de) Halbleiter-Datenspeicherverwaltung
DE102017120787A1 (de) Verfahren und Vorrichtung zum Entladen von Datenverarbeitung in Hybrid-Speichervorrichtungen
EP1817658A2 (de) Speichersystem mit sektorbuffern
DE112019005511T5 (de) Halten von schreibbefehlen in gezonten namensräumen
DE102006002526A1 (de) Steuervorrichtung für eine Solid-State-Disk und Verfahren zum Betreiben derselben
DE112019001863T5 (de) Verwenden von spursperren und schrittweitengruppensperren zum verwalten von cacheoperationen
DE102015008923A1 (de) Vielfache ECC-Codewortgrössen in einem SSD
DE112016000697T5 (de) Identifizieren von Plattenlaufwerken und Verarbeiten von Datenzugriffsanforderungen
DE102016204283A1 (de) Datenspeichervorrichtungen, Datenverarbeitungssysteme, die diese aufweisen, Verfahren zum Betreiben und Verfahren zum Herstellen derselben.
DE112020000124T5 (de) Ausführung von open-channel-vektorbefehlen
DE102020211544A1 (de) Steuerung, betriebsverfahren der steuerung und speichergerät mit derselben
DE102013202627B4 (de) Verfahren, Vorrichtung und Computerprogrammprodukt zum Verwalten einer Speichereinheit unter Verwendung einer hybriden Steuereinheit
DE112022000470T5 (de) Cache-basierter fluss für einen einfachen kopierbefehl

Legal Events

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

Representative=s name: DEHNSGERMANY PARTNERSCHAFT VON PATENTANWAELTEN, DE

Representative=s name: DEHNS GERMANY PARTNERSCHAFT MBB, DE

Representative=s name: DEHNS GERMANY, DE

R082 Change of representative

Representative=s name: DEHNSGERMANY PARTNERSCHAFT VON PATENTANWAELTEN, DE

Representative=s name: DEHNS GERMANY PARTNERSCHAFT MBB, DE