DE102018113885A1 - Memory-efficient persistent key-value memory for non-volatile memory - Google Patents

Memory-efficient persistent key-value memory for non-volatile memory Download PDF

Info

Publication number
DE102018113885A1
DE102018113885A1 DE102018113885.7A DE102018113885A DE102018113885A1 DE 102018113885 A1 DE102018113885 A1 DE 102018113885A1 DE 102018113885 A DE102018113885 A DE 102018113885A DE 102018113885 A1 DE102018113885 A1 DE 102018113885A1
Authority
DE
Germany
Prior art keywords
key
kvs
value
command
ssd
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
DE102018113885.7A
Other languages
German (de)
Inventor
Arup DE
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
Priority claimed from US15/996,266 external-priority patent/US10649969B2/en
Application filed by Western Digital Technologies Inc filed Critical Western Digital Technologies Inc
Publication of DE102018113885A1 publication Critical patent/DE102018113885A1/en
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • G06F21/79Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

Aspekte der Offenbarung stellen einen speichereffizienten persistenten Schlüsselwertspeicher für ein Solid-State-Device (SSD) zur Verfügung. Die Verfahren und die Vorrichtung stellen einen nichtflüchtigen Speicher (NVM) und einen Schlüsselwertspeicher(KVS)-Prozessor bereit. Der nichtflüchtige Speicher (NVM) ist dazu konfiguriert, eine Schlüsselwertdatenstruktur zu speichern. Der KVS-Prozessor ist dazu konfiguriert, einen Schlüsselwertspeicher(KVS)-Befehl von einem Host zu empfangen. Der KVS-Prozessor ist auch dazu konfiguriert, eine Schlüsselwertspeicher(KVS)-Operation in der Schlüsselwertdatenstruktur basierend auf dem empfangenen KVS-Befehl durchzuführen. Die Durchführung der Schlüsselwertspeicher(KVS)-Operation kann die Verwendung einer Indexstruktur umfassen, um die Schlüsselwertdatenstruktur basierend auf dem empfangenen KVS-Befehl zu verarbeiten. Der KVS-Prozessor ist ferner dazu konfiguriert, eine Antwort an den Host basierend auf der KVS-Operation bereitzustellen bzw. zu liefern.Aspects of the disclosure provide a memory-efficient persistent key-value storage for a solid-state device (SSD). The methods and apparatus provide a non-volatile memory (NVM) and key-value memory (KVS) processor. Non-volatile memory (NVM) is configured to store a key-value data structure. The KVS processor is configured to receive a key value store (KVS) command from a host. The KVS processor is also configured to perform a key value store (KVS) operation in the key value data structure based on the received KVS command. Performing the key-value memory (KVS) operation may include using an index structure to process the key-value data structure based on the received KVS instruction. The KVS processor is further configured to provide a response to the host based on the KVS operation.

Description

QUERVERWEIS AUF VERWANDTE ANMELDUNG(EN)CROSS REFERENCE TO RELATED APPLICATION (S)

Diese Anmeldung beansprucht die Priorität und den Vorteil bzw. Benefit der provisorischen U.S. Anmeldung Nr. 62/519,094 , die am 13. Juni 2017 mit dem Aktenzeichen Nr. SDA-3265P-US (WDT-1209P) und dem Titel „MEMORY EFFICIENT PERSISTENT KEY-VALUE STORE FOR NON-VOLATILE MEMORIES“ eingetragen wurde, deren gesamter Inhalt hier durch Verweis aufgenommen wird.This application claims the priority and benefit of the provisional US Application No. 62 / 519,094 filed on 13 June 2017 with reference No SDA-3265P-US (WDT-1209P) and entitled "MEMORY EFFICIENT PERSISTENT KEY-VALUE STORE FOR NON-VOLATILE MEMORIES", the entire contents of which are hereby incorporated by reference ,

BEREICHAREA

Die vorliegende Erfindung bezieht sich auf nichtflüchtige Speicher und insbesondere auf speichereffiziente persistente bzw. beständige Schlüsselwertspeicher für nichtflüchtige Speicher.The present invention relates to nonvolatile memory, and more particularly to memory efficient persistent key value memory for nonvolatile memory.

EINLEITUNGINTRODUCTION

Key- bzw. Schlüsselwertspeicher (KVS) wird bzw. werden häufig in verschiedenen großdimensionierten datenintensiven Datenbankanwendungen verwendet. Diese Datenbankanwendungen haben zufällige Zugriffe über große Datensätze und haben sich aufgrund ihrer hohen Skalierbarkeit und Einfachheit anstatt für eine herkömmliche relationale Datenbank für den Schlüsselwertspeicher entschieden. Mehrere Forschungsarbeiten wurden an flashbasierten KVS durchgeführt, um die Flasheigenschaften auszunutzen, um die Leistung zu verbessern und den Hauptspeicherverbrauch des Hosts bzw. des Hauptcomputers zu reduzieren. Diese KVS-Tätigkeit ist, Schlüsselwert(KV)-Paare in Flash und eine Indexstruktur (oder in Metadatum bzw. Metadaten pro KV-Paar) in dem Hauptspeicher (beispielsweise Dynamic-Random-Access-Memory oder DRAM) zu halten, um schnelle Einfüge-, Lösch- und Nachschlageoperationen zu unterstützen. Jedoch ist die Leistung von KVS dennoch durch den großen Input/Output(I/O)-Overhead bzw. Eingabe/Ausgabe-Aufwand (Flash ist etwa 100x langsamer als DRAM) und die Hauptspeichergröße begrenzt, da sich die Menge der digitalen Daten alle zwei Jahre verdoppelt und bis 2020 auf 44 Zettabyte (44 Billionen Gigabyte) ansteigt.Key-value memory (KVS) is often used in various large-scale data-intensive database applications. These database applications have random accesses to large datasets and, because of their high scalability and simplicity, have opted for key-value storage rather than a traditional relational database. Several researches have been conducted on flash-based KVS to exploit the flash characteristics to improve performance and reduce the main memory consumption of the host or main computer. This KVS activity is to keep key-value (KV) pairs in Flash and an index structure (or metadata per KV pair) in main memory (for example, dynamic random access memory or DRAM) for fast inserts , Delete, and lookup operations. However, the power of KVS is still limited by the large input / output (I / O) overhead and input memory (flash is about 100x slower than DRAM) and main memory size, since the amount of digital data is two every two Doubled in years and by 2020 to 44 zettabytes (44 billion gigabytes) increases.

Die Hauptspeichergröße stellt aufgrund des relativ langsamen Wachstums der DRAM-Kapazität im Vergleich zu den schnell wachsenden Schlüsselwert(KV)-Datensätzen ein herausforderndes Problem in der Skalierbarkeit und der Leistung dar. Mehr als 10- bis 250-fache Verlangsamung aufgrund des steigenden I/O-Aufwands („In-Storage-Linked-List-Traversal“ aufgrund von Hash-Tabellenkollisionen) wurden für verschiedene KV-Auslastungen beobachtet.Memory size represents a challenging scalability and performance challenge due to the relatively slow growth in DRAM capacity compared to the fast-growing key-value (KV) datasets. More than 10 to 250-fold slowdown due to increasing I / O "In-Storage-Linked-List-Traversal" due to hash table collisions was observed for different KV workloads.

Neu entstehende Technologien mit schnellem Byte-adressierbarem nichtflüchtigen Speicher (eNVM) wie ReRAM und 3D Xpoint wurden entworfen, um eine um zwei Größenordnungen höhere Leistung als Flash zu bieten. Jedoch optimiert die bestehende Solid-State-Device(SSD)-Architektur die Flasheigenschaften und ist nicht ausreichend, um das volle Potential von eNVM aufgrund von Architektur- und I/O-Interface bzw. -Schnittstellen(wie beispielsweise PCIe, SATA)-Beschränkungen auszuschöpfen.Emerging technologies with fast byte-addressable non-volatile memory (eNVM) technologies such as ReRAM and 3D Xpoint have been designed to deliver two-fold higher performance than Flash. However, the existing solid state device (SSD) architecture optimizes the flash characteristics and is not sufficient to fully exploit the full potential of eNVM due to architecture and I / O interfaces (such as PCIe, SATA) limitations exploit.

Um die Speicherleistung zu verbessern und die Hauptspeicheranforderungen des Hosts für KVS zu reduzieren, wird eine verbesserte SSD-Architektur vorgeschlagen, die eine bessere Leistung bei der Verarbeitung von großen Schlüsselwertdatensätzen bietet.To improve memory performance and reduce host main memory requirements for KVS, an improved SSD architecture is proposed that provides better performance in processing large key-value records.

ZUSAMMENFASSUNGSUMMARY

Gemäß eines Aspekts wird ein Solid-State-Device (SSD), das einen nichtflüchtigen Speicher (NVM) und einen Schlüsselwertspeicher(KVS)-Prozessor aufweist, offenbart. Der nichtflüchtige Speicher (NVM) ist dazu konfiguriert, eine Schlüsselwertdatenstruktur zu speichern. Der KVS-Prozessor ist dazu konfiguriert, einen Schlüsselwertspeicher(KVS)-Befehl von einem Host bzw. einem Hauptcomputer zu empfangen. Der KVS-Prozessor ist auch dazu konfiguriert, eine Schlüsselwertspeicher(KVS)-Operation auf die Schlüsselwertdatenstruktur basierend auf dem empfangenen KVS-Befehl durchzuführen. Die Durchführung der Schlüsselwertspeicher(KVS)-Operation kann die Verwendung einer Indexstruktur zur Verarbeitung der Schlüsselwertdatenstruktur basierend auf dem empfangenen KVS-Befehl umfassen. Der KVS-Prozessor ist ferner dazu konfiguriert, eine Antwort an den Host basierend auf der KVS-Operation bereitzustellen.In one aspect, a solid state device (SSD) comprising a nonvolatile memory (NVM) and a key value memory (KVS) processor is disclosed. Non-volatile memory (NVM) is configured to store a key-value data structure. The KVS processor is configured to receive a key value store (KVS) command from a host or host computer. The KVS processor is also configured to perform a key value memory (KVS) operation on the key value data structure based on the received KVS command. Performing the key value memory (KVS) operation may include using an index structure to process the key value data structure based on the received KVS instruction. The KVS processor is further configured to provide a response to the host based on the KVS operation.

Gemäß eines weiteren Aspekts wird ein Verfahren zum Betrieb eines Solid-State-Devices (SSD) offenbart. Das Verfahren speichert eine Schlüsselwertdatenstruktur auf bzw. in einem nichtflüchtigen Speicher (NVM) des SSD. Das Verfahren empfängt einen Schlüsselwertspeicher(KVS)-Befehl von dem Host. Das Verfahren identifiziert einen Eintrag einer Indexstruktur basierend auf dem empfangenen KVS-Befehl in bzw. auf dem SSD. Das Verfahren identifiziert eine Gruppe von Schlüsselwertdaten von bzw. aus der Schlüsselwertdatenstruktur basierend auf dem identifizierten Eintrag. Das Verfahren verarbeitet eine oder mehrere Schlüsselwertdaten aus der identifizierten Gruppe von Schlüsselwertdaten basierend auf dem empfangenen KVS-Befehl in bzw. auf dem SSD. Das Verfahren liefert bzw. stellt dem Host eine Antwort basierend auf der Verarbeitung der einen oder mehreren Schlüsselwertdaten bereit. In another aspect, a method of operating a solid state device (SSD) is disclosed. The method stores a key value data structure on nonvolatile memory (NVM) of the SSD. The method receives a key value store (KVS) command from the host. The method identifies an entry of an index structure based on the received KVS instruction in the SSD. The method identifies a set of key value data from the key value data structure based on the identified entry. The method processes one or more key-value data from the identified group of key-value data based on the received KVS command in the SSD. The method provides the host with a response based on the processing of the one or more key-value data.

Gemäß eines weiteren Aspekts wird eine Vorrichtung zum Betrieb eines Solid-State-Devices (SSD) offenbart. Die Vorrichtung weist Mittel zur nichtflüchtigen Speicherung einer Schlüsselwertdatenstruktur und Mittel zur Schlüsselwertspeicher(KVS)-Verarbeitung auf. Die Mittel zur Schlüsselwertspeicher(KVS)-Verarbeitung umfassen Mittel zum Empfangen eines Schlüsselwertspeicher(KVS)-Befehls von einem Host, Mittel zur Durchführung einer Schlüsselwertspeicher(KVS)-Operation auf die Schlüsselwertdatenstruktur basierend auf dem empfangenen KVS-Befehls, und Mittel zum Bereitstellen bzw. Liefern einer Antwort an den Host basierend auf der KVS-Operation. Die Mittel zur Durchführung der Schlüsselwertspeicher(KVS)-Operation umfassen das Erzeugen eines Hash-Werts basierend auf dem empfangenen KVS-Befehl.In another aspect, an apparatus for operating a solid state device (SSD) is disclosed. The apparatus comprises means for nonvolatile storage of a key value data structure and means for key value memory (KVS) processing. The means for key value memory (KVS) processing comprise means for receiving a key value memory (KVS) command from a host, means for performing a key value memory (KVS) operation on the key value data structure based on the received KVS command, and means for providing or Provide a response to the host based on the KVS operation. The means for performing the key value memory (KVS) operation include generating a hash value based on the received KVS instruction.

Figurenlistelist of figures

  • 1 zeigt ein Blockdiagramm eines Solid-State-Devices (SSD), das einen Schlüsselwertspeicher(KVS)-Prozessor in Übereinstimmung mit Ausführungsformen der vorliegenden Offenbarung enthält. 1 FIG. 12 shows a block diagram of a solid state device (SSD) including a key value memory (KVS) processor in accordance with embodiments of the present disclosure.
  • FIG: 2 zeigt ein Blockdiagramm eines Schlüsselwertspeicher(KVS)Prozessors in Übereinstimmung mit Ausführungsformen der vorliegenden Offenbarung.2 shows a block diagram of a key value memory (KVS) processor in accordance with embodiments of the present disclosure.
  • FIG: 3 zeigt ein Diagramm einer Device- bzw. Vorrichtungsarchitektur zwischen einem Host und einem Solid-State-Device (SSD) in Übereinstimmung mit Ausführungsformen der vorliegenden Offenbarung.3 shows a diagram of a device architecture between a host and a solid state device (SSD) in accordance with embodiments of the present disclosure.
  • 4 zeigt ein Diagramm einer Device-Architektur mit mehreren Ketten bzw. Strängen, zwischen einem Host und einem Solid-State-Device (SSD) in Übereinstimmung mit Ausführungsformen der vorliegenden Offenbarung. 4 FIG. 12 is a diagram of a multi-stranded device architecture between a host and a solid state device (SSD) in accordance with embodiments of the present disclosure. FIG.
  • 5 zeigt ein Ablaufdiagramm eines Verfahrens zu Verarbeitung eines Schlüsselwertspeicher(KVS)-Befehls von einem Host durch ein Solid-State-Device (SSD) in Übereinstimmung mit Ausführungsformen der vorliegenden Offenbarung. 5 FIG. 12 shows a flow chart of a method for processing a key value store (KVS) command from a host through a solid state device (SSD) in accordance with embodiments of the present disclosure.
  • 6 zeigt ein Ablaufdiagramm eines Verfahrens zur Verarbeitung eines Nicht-Schlüsselwertspeicher(KVS)-Befehls von einem Host durch ein Solid-State-Device (SSD) in Übereinstimmung mit Ausführungsformen der vorliegenden Offenbarung. 6 FIG. 12 is a flowchart of a method for processing a non-key-value memory (KVS) command from a host through a solid-state device (SSD) in accordance with embodiments of the present disclosure.
  • 7 (die die 7A-7C umfasst) zeigt ein Ablaufdiagramm eines GET- bzw. Erhalte-Befehls von einem Host durch ein Solid-State-Device (SSD) in Übereinstimmung mit Ausführungsformen der vorliegenden Offenbarung. 7 (which the 7A-7C 5) shows a flowchart of a GET command from a host through a solid state device (SSD) in accordance with embodiments of the present disclosure.
  • 8 (die die 8A-8C umfasst) zeigt ein Ablaufdiagramm eines PUT- bzw. Ausgabe-Befehls von einem Host durch ein Solid-State-Device (SSD) in Übereinstimmung mit Ausführungsformen der vorliegenden Offenbarung. 8th (which the 8A-8C 5) shows a flowchart of a PUT or issue command from a host through a solid state device (SSD) in accordance with embodiments of the present disclosure.
  • 9 (die die 9A-9B umfasst) zeigt ein Ablaufdiagramm eines weiteren PUT- bzw. Ausgabe-Befehls von einem Host durch ein Solid-State-Device (SSD) in Übereinstimmung mit Ausführungsformen der vorliegenden Offenbarung. 9 (which the 9A-9B 5) shows a flow chart of another PUT or issue command from a host through a solid state device (SSD) in accordance with embodiments of the present disclosure.
  • 10 (die die 10A-10C umfasst) zeigt ein Ablaufdiagramm eines DELETE- bzw. Lösch-Befehls von einem Host durch ein Solid-State-Device (SSD) in Übereinstimmung mit Ausführungsformen der vorliegenden Offenbarung. 10 (which the 10A-10C 5) shows a flowchart of a DELETE command from a host through a solid state device (SSD) in accordance with embodiments of the present disclosure.
  • 11 zeigt ein beispielhaftes Flussdiagramm eines Verfahrens zur Verarbeitung verschiedener Befehle von einem Host durch ein Solid-State-Device (SSD) in Übereinstimmung mit Ausführungsformen der vorliegenden Offenbarung. 11 FIG. 12 shows an exemplary flowchart of a method for processing various instructions from a host through a solid state device (SSD) in accordance with embodiments of the present disclosure.
  • 12 zeigt ein beispielhaftes Flussdiagramm zur Verarbeitung eines Schlüsselwertspeicher(KVS)-Befehls von einem Host durch ein Solid-State-Device (SSD) in Übereinstimmung mit Ausführungsformen der vorliegenden Offenbarung. twelve FIG. 12 shows an exemplary flowchart for processing a key value store (KVS) command from a host through a solid state device (SSD) in accordance with embodiments of the present disclosure.

DETAILIERTE BESCHREIBUNGDETAILED DESCRIPTION

Die vorliegende Offenbarung stellt ein Solid-State-Device (SSD) bereit, das einen nichtflüchtigen Speicher (NVM) und einen Schlüsselwertspeicher(KVS)-Prozessor aufweist. Der nichtflüchtige Speicher (NVM) ist dazu konfiguriert, eine Schlüsseldatenstruktur zu speichern. Der KVS-Prozessor ist dazu konfiguriert, einen Schlüsselwertspeicher(KVS)-Befehl von einem Host zu empfangen. Beispiele für Schlüsselwertspeicher(KVS)-Befehle umfassen einen Get- bzw. Erhalte-Befehl, einen Put- bzw. Ausgabe-Befehl und einen Delete- bzw. Lösch-Befehl. Der KVS-Prozessor ist auch dazu konfiguriert, eine Schlüsselwertspeicher(KVS)-Operation auf die Schlüsselwertdatenstruktur basierend auf dem empfangenen KVS-Befehl durchzuführen. Die Durchführung der Schlüsselwertspeicher(KVS)-Operation kann die Verwendung einer Indexstruktur zur Verarbeitung der Schlüsselwertdatenstruktur basierend auf dem empfangenen KVS-Befehl umfassen. Der KVS-Prozessor ist ferner dazu konfiguriert, eine Antwort an den Host basierend auf der KVS-Operation liefern.The present disclosure provides a solid state device (SSD) comprising a nonvolatile memory (NVM) and a key value memory (KVS) processor. Non-volatile memory (NVM) is configured to store a key data structure. The KVS processor is configured to receive a key value store (KVS) command from a host. Examples of key value store (KVS) commands include a get command, a put command, and a delete command. The KVS processor is also configured to perform a key value memory (KVS) operation on the key value data structure based on the received KVS command. Performing the key value memory (KVS) operation may include using an index structure to process the key value data structure based on the received KVS instruction. The KVS processor is further configured to provide a response to the host based on the KVS operation.

Andere Ansätze zur KVS-Verarbeitung verwenden hauptsächlich Caching bzw. Zwischenspeicherung und effiziente Indizierungsschemata, um die Leistung zu verbessern und den I/O-Aufwand zu reduzieren, während das offenbarte Solid State Device (SSD) sowohl die Schlüsselwertdaten als auch die Indexstruktur in dem SSD behalten kann, wodurch die Menge der Schlüsselwertdaten, die an einen Host übertragen werden, reduziert wird. Zusätzlich können die offenbarten Verfahren Schlüsselwertspeicheroperationen auf bzw. in dem SSD auslagern, um die geringe Latenz, die hohe interne Bandbreite von NVM und die Parallelität über mehrere Controller bzw. Steuerungen hinweg auszunutzen. Das offenbarte SSD kann eine Indizierungsfähigkeit bzw. ein Indizierungspotential innerhalb des SSD implementieren und verfügt über eine In-Storage- bzw. eine im Speicher vorhandene Verarbeitungsmaschine (wie beispielsweise ein KVS-Prozessor) der Schlüsselwertoperationen wie Get bzw. Erhalten, Put bzw. Ausgeben und Delete bzw. Löschen implementiert, um effizient mit Schlüsselwert(KV)-Datensätzen arbeiten zu können.Other approaches to KVS processing mainly use caching and efficient indexing schemes to improve performance and reduce I / O overhead, while the disclosed solid state device (SSD) handles both the key-value data and can keep the index structure in the SSD, thereby reducing the amount of key-value data that is transferred to a host. In addition, the disclosed methods may outsource key value memory operations on the SSD to take advantage of the low latency, high internal bandwidth of NVM, and parallelism across multiple controllers. The disclosed SSD may implement indexing capability within the SSD and has an in-memory or memory-based processing engine (such as a KVS processor) of key value operations such as Get, Put, and Delete or Delete implemented to work efficiently with key-value (KV) records.

1 zeigt ein Blockdiagramm eines Systems 100, das ein Solid-State-Device (SSD) mit Schlüsselwertspeicher(KVS)-Verarbeitungsfunktionalität aufweist. Das System 100 weist ein Solid-State-Device (SSD) 102 und einen Host 104 auf. Die SSD 102 ist eine Speichervorrichtung (wie beispielsweise eine SSD-Speichervorrichtung). Das SSD 102 ist mit dem Host 104 über eine oder mehrere Verbindungen 106 gekoppelt. Die eine oder mehrere Verbindungen 106 stellen physikalische Eingabe/Ausgabe(I/O)-Datenverbindungen zwischen dem SSD 102 und dem Host 104 bereit. Daten, die zwischen dem SSD 102 und dem Host 104 wandern, können als I/O-Aufwand bezeichnet werden. Daten können Anleitungen, Befehle und/oder Antworten umfassen. 1 shows a block diagram of a system 100 that has a solid-state device (SSD) with key-value storage (KVS) processing functionality. The system 100 has a solid state device (SSD) 102 and a host 104 on. The SSD 102 is a storage device (such as an SSD storage device). The SSD 102 is with the host 104 over one or more connections 106 coupled. The one or more connections 106 provide physical input / output (I / O) data connections between the SSD 102 and the host 104 ready. Data between the SSD 102 and the host 104 hiking, can be referred to as I / O effort. Data may include instructions, commands, and / or answers.

Der Host 104 kann irgendein System und/oder irgendeine Vorrichtung sein, die einen Bedarf an Datenspeicherung oder -abruf und eine kompatible Schnittstelle zur Kommunikation mit dem SSD hat. Beispielsweise kann der Host 104 eine Computer- bzw. Rechenvorrichtung, ein Personalcomputer, ein tragbarer Computer, eine Arbeitsstation, ein Server, ein Router, eine Netzwerkvorrichtung, ein persönlicher digitaler Assistent bzw. PDA, eine Digitalkamera, ein Digitaltelefon oder Kombinationen davon sein. Der Host 104 kann mehrere Hosts aufweisen. Der Host 104 kann eine von dem SSD 102 separate (wie beispielsweise physikalisch separate) Vorrichtung sein. In einigen Ausführungsformen kann der Host 104 das SSD 102 aufweisen. In anderen Ausführungsformen ist das SSD 102 gegenüber dem Host 104 entfernt oder ist in einem entfernten Rechnersystem enthalten, das kommunikativ mit dem Host 104 gekoppelt ist. Beispielsweise kann der Host 104 mit dem SSD 102 über eine kabellose Kommunikationsverbindung kommunizieren.The host 104 may be any system and / or device that has a need for data storage or retrieval and a compatible interface for communicating with the SSD. For example, the host 104 a computing device, a personal computer, a portable computer, a workstation, a server, a router, a network device, a personal digital assistant (PDA), a digital camera, a digital telephone, or combinations thereof. The host 104 can have multiple hosts. The host 104 can one from the SSD 102 be separate (such as physically separate) device. In some embodiments, the host may 104 the SSD 102 exhibit. In other embodiments, the SSD is 102 opposite the host 104 removed or contained in a remote computer system that communicates with the host 104 is coupled. For example, the host 104 with the SSD 102 communicate over a wireless communication link.

Der Host 104 liefert Befehle an das SSD 102 zur Datenübertragung zwischen dem Host 104 und dem SSD 102. Beispielsweise kann der Host 104 einen Schreibe-Befehl an das SSD 102 zum Schreiben von Daten auf bzw. in das SSD 102, oder einen Lese-Befehl an das SSD 102 zum Lesen von Daten aus bzw. von dem SSD 102 liefern. Das SSD 102 kann eine Antwort auf den Schreibe-Befehl oder den Lese-Befehl an den Host 104 über eine oder mehrere Verbindungen 106 liefern. Wie weiter unten beschrieben, kann das SSD 102 verschiedene Arten von Befehlen, die Schlüsselwertspeicher(KVS)-Befehle und Nicht-Schlüsselwertspeicher(KVS)-Befehle von dem Host 104 umfassen, verarbeiten. KVS-Befehle und Nicht-KVS-Befehle werden weiter unten beschrieben.The host 104 delivers commands to the SSD 102 for data transfer between the host 104 and the SSD 102 , For example, the host 104 a write command to the SSD 102 for writing data to or into the SSD 102 , or a read command to the SSD 102 for reading data from or from the SSD 102 deliver. The SSD 102 can be a response to the write command or the read command to the host 104 over one or more connections 106 deliver. As described below, the SSD 102 various types of instructions, key-value memory (KVS) instructions and non-key-value memory (KVS) instructions from the host 104 include, process. KVS commands and non-KVS commands are described below.

Die SSD-Speichervorrichtung 102 weist ein Hostinterface bzw. eine -Schnittstelle 110, eine Brücke 112, einen Buffer bzw. Puffer 114, eine Cross-Bar bzw. Traverse 116, einen Schlüsselwertspeicher(KVS)-Prozessor 118, einen Prozessor 120 (oder alternativ einen NVM-Prozessor 120), einen Random-Access-Memory (RAM) 122, ein nichtflüchtiger-Speicher-Interface bzw. -Schnittstelle (NVM-Interface bzw. -Schnittstelle) 124 (die auch als eine Flashspeicherschnittstelle bezeichnet werden kann) und einen nichtflüchtigen Speicher (NVM) 126, wie beispielsweise einen NAND-Flashspeicher auf.The SSD storage device 102 indicates a host interface or an interface 110 , a bridge 112 , a buffer 114 , a crossbar or traverse 116 , a key value memory (KVS) processor 118 , a processor 120 (or alternatively an NVM processor 120 ), a random access memory (RAM) 122 , a non-volatile memory interface or interface (NVM interface) 124 (which may also be referred to as a flash memory interface) and nonvolatile memory (NVM) 126 , such as a NAND flash memory.

Die Hostschnittstelle 110 ist mit dem Prozessor 120 über die Brücke 112 und die Cross-Bar 116 gekoppelt. Es wird darauf hingewiesen, dass die Hostschnittstelle 110 unterschiedlich mit dem Prozessor 120 gekoppelt sein kann. Beispielsweise kann die Hostschnittstelle 110 mit dem Prozessor 120 direkt gekoppelt sein. In einem anderen Beispiel kann die Hostschnittstelle 110 mit dem Prozessor 120 über die Brücke 112 gekoppelt sein, ohne das sie mit der Cross-Bar 116 gekoppelt sein muss. Die Hostschnittstelle 110 erleichtert die Kommunikation zwischen dem Host 104 und anderen Komponenten des SSD 102, wie beispielsweise dem Prozessor 120 und/oder dem KVS-Prozessor 118. Die Hostschnittstelle 110 kann irgendeine Art von Kommunikationsschnittstelle sein, wie beispielsweise eine Integrated-Drive-Electronics(IDE)-Schnittstelle, eine Universal-Serial-Bus(USB)-Schnittstelle, eine Serial-Peripheral(SP)-Schnittstelle, eine Advanced-Technology-Attachment(ATA)- oder Serial-Advanced-Technology-Attachment(SATA)-Schnittstelle, eine Small-Computer-System-Schnittstelle (SCSI), eine IEEE 1394(Firewire)-Schnittstelle oder dergleichen.The host interface 110 is with the processor 120 across the bridge 112 and the cross bar 116 coupled. It should be noted that the host interface 110 different with the processor 120 can be coupled. For example, the host interface 110 with the processor 120 be directly coupled. In another example, the host interface 110 with the processor 120 across the bridge 112 be coupled without them with the cross bar 116 must be coupled. The host interface 110 facilitates communication between the host 104 and other components of the SSD 102 such as the processor 120 and / or the KVS processor 118 , The host interface 110 may be any type of communication interface, such as an Integrated Drive Electronics (IDE) interface, a Universal Serial Bus (USB) interface, a Serial Peripheral (SP) interface, an Advanced Technology Attachment ( ATA) or Serial Advanced Technology Attachment (SATA) interface, a Small Computer System Interface (SCSI), an IEEE 1394 (Firewire) interface, or the like.

Die Brücke 112 ist mit dem Schlüsselwertspeicher(KVS)-Prozessor 118 über den Puffer 114 gekoppelt. In einigen Ausführungsformen kann die Brücke 112 ein Teil der Hostschnittstelle 110 sein. Der Puffer 114 hilft bei der Verwaltung des Datenflusses zwischen dem KVS-Prozessor 118 und der Brücke 112. Der KVS-Prozessor 118 ist mit dem Prozessor 120 über die Cross-Bar 116 gekoppelt. Der KVS-Prozessor 118 kann einen oder mehrere KVS-Prozessoren repräsentieren. In einigen Ausführungsformen ist der KVS-Prozessor 118 mit dem Prozessor 120 gekoppelt, ohne über die Cross-Bar 116 zu laufen. Die Cross-Bar 116 hilft bei der Verwaltung des Datenflusses, der zwischen dem KVS-Prozessor 118 und dem Prozessor 120 wandert, und des Datenflusses zwischen der Brücke 112 und dem Prozessor 120. Die verschiedenen Komponenten bzw. Bestandteile des SSD 102 können untereinander durch Verwendung eines Kommunikationsprotokolls (wie beispielsweise ein Advance-eXtensible-Interface(AXI)-Protokoll) kommunizieren. In einigen Ausführungsformen kann die Cross-Bar 116 ein Teil der Brücke 112 sein.The bridge 112 is with the key value memory (KVS) processor 118 over the buffer 114 coupled. In some embodiments, the bridge 112 a part of the host interface 110 be. The buffer 114 Helps manage the flow of data between the KVS processor 118 and the bridge 112 , The KVS processor 118 is with the processor 120 over the cross bar 116 coupled. The KVS processor 118 may represent one or more KVS processors. In some embodiments, the KVS processor is 118 with the processor 120 coupled without crossing the crossbar 116 to run. The cross bar 116 Helps to manage the flow of data between the KVS processor 118 and the processor 120 migrates, and the data flow between the bridge 112 and the processor 120 , The various components or components of the SSD 102 can communicate with each other using a communication protocol (such as an Advance eXtensible Interface (AXI) protocol). In some embodiments, the cross-bar 116 a part of the bridge 112 be.

Die Brücke 112 ist dazu konfiguriert, zu bestimmen, ob Befehle von dem Host 104 (über die Hostschnittstelle 110) KVS-Befehle oder Nicht-KVS-Befehle sind. Wenn die Befehle Nicht-KVS-Befehle sind, kann die Brücke 112 die Befehle an den Prozessor 120 über die Cross-Bar 116 leiten oder senden. Wenn die Befehle KVS-Befehle sind, kann die Brücke 112 die Befehle an den KVS-Prozessor 118 leiten oder senden. Die KVS-Befehle werden durch den KVS-Prozessor 118 verarbeitet, und die verarbeiteten KVS-Befehle werden dann an den Prozessor 120 geleitet oder gesendet. Beispiele für KVS-Befehle umfassen einen Get- bzw. Erhalte-Befehl, einen Put- bzw. Ausgabe-Befehl und einen Lösch-Befehl. Beispiele für die Verarbeitung von KVS-Befehlen sind weiter unten mindestens in den 2, 5, 7A-7C, 8A-8B, 9A-9C und 10A-10C beschrieben. Somit ist eine Funktionalität, die das SSD 102 bereitstellt, die Möglichkeit der Verarbeitung verschiedener Arten von Befehlen. Dies ermöglicht dem SSD 102 den Betrieb und die Arbeit mit einer größeren Anzahl von Vorrichtungen, Systemen, Hosts und/oder Anwendungen als andere SSD. Zusätzlich reduziert die Fähigkeit der Verarbeitung von Schlüsselwertdaten auf bzw. in dem SSD den I/O-Aufwand zwischen dem Host dem SSD, wodurch die Gesamtleistung des SSD beschleunigt wird.The bridge 112 is configured to determine whether commands are from the host 104 (via the host interface 110 ) Are KVS commands or non-KVS commands. If the commands are non-KVS commands, the bridge may 112 the commands to the processor 120 over the cross bar 116 conduct or send. If the commands are KVS commands, the bridge can 112 the commands to the KVS processor 118 conduct or send. The KVS commands are issued by the KVS processor 118 processed, and the processed KVS commands are then sent to the processor 120 directed or sent. Examples of KVS instructions include a Get command, a Put command, and a Delete command. Examples of the processing of KVS commands are at least below 2 . 5 . 7A-7C . 8A-8B . 9A-9C and 10A-10C described. Thus, a functionality is the SSD 102 provides the possibility of processing various types of commands. This allows the SSD 102 operating and working with a larger number of devices, systems, hosts and / or applications than other SSDs. In addition, the ability to process key-value data on the SSD reduces the I / O overhead between the host and the SSD, thus accelerating the overall performance of the SSD.

Der Prozessor 120 ist mit dem RAM-Speicher 112 so wie mit dem NVM 126 über die NVM-Schnittstelle 124 gekoppelt. Der Prozessor 120 steuert den Betrieb des SSD 102. In verschiedenen Aspekten empfängt der Prozessor 120 Befehle von dem Host 104 über die Hostschnittstelle 110 und führt die Befehle (wie beispielsweise KVS-Befehle, Nicht-KVS-Befehle) durch, um Daten zwischen dem Host 104 und dem NVM 126 zu übertragen. Wie oben erwähnt kann, wenn der Befehl ein KVS-Befehl ist, der Prozessor 120 Befehle durch den KVS-Prozessor 118 empfangen. Außerdem kann der Prozessor 120 das Lesen von bzw. aus und das Schreiben in bzw. auf den Speicher 122 verwalten, um die verschiedenen Funktionen durchzuführen, die durch den Prozessor 120 bewirkt werden, und um die zwischengespeicherte Information, die in dem Speicher 122 gespeichert ist, zu warten und zu verwalten.The processor 120 is with the RAM memory 112 as with the NVM 126 via the NVM interface 124 coupled. The processor 120 controls the operation of the SSD 102 , In various aspects, the processor receives 120 Commands from the host 104 via the host interface 110 and performs the commands (such as KVS commands, non-KVS commands) to transfer data between the host 104 and the NVM 126 transferred to. As mentioned above, if the instruction is a KVS instruction, the processor may be 120 Commands by the KVS processor 118 receive. In addition, the processor can 120 reading from and writing to or to the memory 122 manage to perform the various functions performed by the processor 120 and the cached information stored in the memory 122 is stored, maintained and managed.

Der Prozessor 120 und/oder der KVS-Prozessor 118 können irgendeine Art von Verarbeitungsvorrichtung, wie beispielsweise ein Mikroprozessor, ein Mikrokontroller, eine eingeschlossene Steuerung, ein logischer Schaltkreis, Software, Firmware oder dergleichen zur Steuerung des Betriebs des SSD 102, aufweisen. In einigen Aspekten können einige oder alle der Funktionen, die hier als von dem Prozessor 120 durchgeführt werdend, beschrieben werden, stattdessen von einer anderen Komponente des SSD 102 durchgeführt werden. Beispielsweise kann das SSD 102 einen Mikroprozessor, einen Mikrokontroller, eine eingeschlossene Steuerung, einen logischen Schaltkreis, Software, Firmware oder irgendeine Art von Verarbeitungsvorrichtung zur Durchführung einer oder mehrerer der Funktionen, die hier als von dem Prozessor 120 durchgeführt werdend, beschrieben sind, aufweisen. In einigen Ausführungsformen kann der KVS-Prozessor 118 ein Teil des Prozessors 120 sein. Gemäß anderen Aspekten werden eine oder mehrere Funktionen, die hier als von dem Prozessor 120 durchgeführt werdend, beschrieben sind, stattdessen von dem Host 104 durchgeführt. In noch weiteren Aspekten können einige oder alle der Funktionen, die hier als von dem Prozessor 120 durchgeführt werdend, beschrieben sind, stattdessen durch andere Komponenten, wie beispielsweise ein Prozessor in einem Hybridlaufwerk, der sowohl nichtflüchtige Speicherelemente und magnetische Speicherelemente enthält, durchgeführt werden.The processor 120 and / or the KVS processor 118 For example, any type of processing device, such as a microprocessor, a microcontroller, an enclosed controller, a logic circuit, software, firmware, or the like, may be used to control the operation of the SSD 102 , exhibit. In some aspects, some or all of the functions can be considered here by the processor 120 instead of being handled by another component of the SSD 102 be performed. For example, the SSD 102 a microprocessor, a microcontroller, an enclosed controller, a logic circuit, software, firmware, or any type of processing device for performing one or more of the functions referred to herein as by the processor 120 be performed, described, have. In some embodiments, the KVS processor 118 a part of the processor 120 be. In other aspects, one or more functions are referred to herein as by the processor 120 are performed instead of the host 104 carried out. In yet other aspects, some or all of the functions may be considered here by the processor 120 instead be performed by other components, such as a processor in a hybrid drive containing both non-volatile memory elements and magnetic memory elements.

Der Speicher 122 kann irgendein Speicher, eine Computervorrichtung oder ein System sein, das in der Lage ist, Daten zu speichern. Beispielsweise kann der Speicher 122 ein Random-Access-Memory (RAM), ein Dynamic-Random-Access-Memory (DRAM), ein Double-Data-Rate(DDR)-DRAM, ein Static-Random-Access-Memory (SRAM), ein Synchronous-Dynamic-Random-Access-Memory (SDRAM), ein Flashspeicher, ein Eraseable-Programmable-Read-Only-Memory (EPROM), ein Electrically-Eraseable-Progammable-Read-Only-Memory (EEPROM) oder dergleichen sein. In verschiedenen Ausführungsformen verwendet der Prozessor 120 den Speicher 122 oder einen Teil davon, um Daten während der Datenübertragung zwischen dem Host 104 und dem NVM 126 zu speichern. Beispielsweise kann der Speicher 122 oder ein Teil des Speichers 122 ein Cache- bzw. Zwischenspeicher sein.The memory 122 may be any memory, computing device or system capable of storing data. For example, the memory 122 a Random Access Memory (RAM), a Dynamic Random Access Memory (DRAM), a Double Data Rate (DDR) DRAM, a Static Random Access Memory (SRAM), a Synchronous Dynamic Random Access Memory (SDRAM), Flash Memory, Erasable Programmable Read Only Memory (EPROM), Electrically Erasable Programmable Read Only Memory (EEPROM), or the like. In various embodiments, the processor uses 120 the memory 122 or part of it to data during data transfer between the host 104 and the NVM 126 save. For example, the memory 122 or part of the memory 122 a cache.

Der NVM 126 empfängt Daten von dem Prozessor 120 über die NVM-Schnittstelle 124 und speichert die Daten. Der NVM 126 kann irgendeine Art von nichtflüchtigem Speicher sein, wie beispielsweise ein Flashspeichersystem, ein NANDartiger Flashspeicher, ein Solid-State-Device (SSD), eine Flashspeicherkarte, eine Secure-Digital(SD)-Karte, eine Universal-Serial-Bus(USB)-Speichervorrichtung, eine CompactFlash-Karte, eine SmartMedia-Vorrichtung, ein Flashspeicherarray oder dergleichen sein.The NVM 126 receives data from the processor 120 via the NVM interface 124 and saves the data. The NVM 126 may be any type of nonvolatile memory, such as a flash memory system, a NAND type flash memory, a solid state device (SSD), a flash memory card, a Secure Digital (SD) card, a Universal Serial Bus (USB), Storage device, a CompactFlash card, a SmartMedia Device, a flash memory array or the like.

SCHLÜSSELWERTSPEICHER(KVS)-PROZESSORKEY-only memory (KVS) processor

Wie oben erwähnt, enthält das SSD 102 einen Schlüsselwertspeicher(KVS)-Prozessor 118, der dem SSD 102 ermöglicht, KVS-Befehle auf bzw. in Schlüsselwert(KV)-Datenbanken zu verarbeiten. KV-Datenbanken ordnen Daten als einzelne opake Sammlung an. Dies erlaubt mehr Flexibilität bei der Art der Daten, die gespeichert werden können. Zusätzlich verwendet eine KV-Datenbank für die gleiche Anzahl von Datensätzen weniger Speicher als andere Datenbankstrukturen, wie beispielsweise relationale Datenbanken (RBD). KVS-Befehle werden für den Zugriff auf KV-Datenbanken verwendet. KVS-Befehle sind Befehle, die spezifisch für KV-Datenbanken sind. Diese KVS-Befehle führen sehr spezifische Funktionen in Bezug auf eine KV-Datenbank durch. Außerhalb der KV-Datenbank funktionieren diese KVS-Befehle nicht. Beispiele für KVS-Befehle sind Get- bzw. Erhalte-Befehle, Put- bzw. Ausgabe-Befehle und Lösch-Befehle.As mentioned above, this includes the SSD 102 a key value memory (KVS) processor 118 , the SSD 102 allows KVS commands to be processed on key value (KV) databases. KV databases arrange data as a single opaque collection. This allows more flexibility in the type of data that can be stored. In addition, a KV database uses less memory for the same number of records than other database structures, such as relational databases (RBD). KVS commands are used to access KV databases. KVS commands are commands that are specific to KV databases. These KVS instructions perform very specific functions with respect to a KV database. Outside the KV database, these KVS commands do not work. Examples of KVS commands are get commands, put commands, and delete commands.

2 zeigt ein Blockdiagramm des KVS-Prozessors 118. Der KVS-Prozessor 118 kann einen oder mehrere KVS-Prozessoren repräsentieren. Der KVS-Prozessor 118 ist dazu konfiguriert, eine Schlüsselwertspeicher(KVS)-Operation auf eine Schlüsselwertdatenstruktur basierend auf einem KVS-Befehl durchzuführen. Eine Schlüsselwertspeicher(KVS)-Operation kann eine Hash-Operation aufweisen, die weiter unten mindestens in den 7A-7C und 12 beschrieben wird. 2 shows a block diagram of the KVS processor 118 , The KVS processor 118 may represent one or more KVS processors. The KVS processor 118 is configured to perform a key value store (KVS) operation on a key value data structure based on a KVS instruction. A key value memory (KVS) operation may have a hash operation, which is described at least below 7A-7C and twelve is described.

Der KVS-Prozessor 118 weist einen oder mehrere Schlüsselwertspeicher(KVS)-Kerne 200, eine Hash-Steuerung 202, einen Planer 204, einen Indizierer 206, einen Verteiler bzw. Zuweiser 208 und eine Direct-Memory-Access(DMA)-Steuerung 210 auf. Die KVS-Kerne 200 sind mit der Hash-Steuerung 202, dem Planer 204, dem Indizierer 206, dem Verteiler 208 und der DMA-Steuerung 210 gekoppelt. Die DMA-Steuerung 210 ist mit der Cross-Bar 116 gekoppelt. Die Hash-Steuerung 202 ist mit dem Planer 204 gekoppelt.The KVS processor 118 has one or more key-value storage (KVS) cores 200 , a hash control 202 , a planner 204 , an indexer 206 , a distributor or referrer 208 and a Direct Memory Access (DMA) control 210 on. The KVS cores 200 are with the hash control 202 , the planner 204 , the indexer 206 , the distributor 208 and the DMA controller 210 coupled. The DMA control 210 is with the cross bar 116 coupled. The hash control 202 is with the planner 204 coupled.

Der Planer 204 verwaltet Befehle von dem Host 104 (über die Hostschnittstelle 110, die Brücke 112, den Puffer 1140) und antwortet dem Host 104. Der Planer 204 kann Befehle 220 von bzw. aus dem Puffer 114 empfangen und plant sie unter First-In-First-Out (FIFO). In gleicher Weise kann der Planer 204 Antworten 222 an den Puffer 114 unter First-In-First-Out (FIFO) senden. In einigen Ausführungsformen kann der Planer 204 Round-Robin-Scheduling bzw. Ringverteilungsplanung auf die verschiedenen Befehle anwenden. Der Planer 204 kann Befehle an verschiedene Kerne der KVS-Kerne 200 leiten. Dies ermöglicht dem KVS-Prozessor 118, mehrere Befehle parallel zu verarbeiten. Der Planer 204 kann auch Befehle planen, die bei Auftreten von Hash-Kollision in KV-Datensätzen sequentiell durch den gleichen Kern verarbeitet werden sollen. Mit Erhöhung der KV-Datensätze erhöhen sich auch Hash-Kollisionen. Eine Hash-Kollision wird weiter unten mindestens in den 7A-7C beschrieben.The planner 204 manages commands from the host 104 (via the host interface 110 , the bridge 112 , the buffer 1140 ) and answers the host 104 , The planner 204 can commands 220 from or out of the buffer 114 receive and plan under First-In-First-Out (FIFO). In the same way, the planner 204 reply 222 to the buffer 114 Send under First-In-First-Out (FIFO). In some embodiments, the planner may 204 Apply round-robin scheduling to the various commands. The planner 204 can issue commands to different cores of KVS cores 200 conduct. This allows the KVS processor 118 to process several commands in parallel. The planner 204 can also schedule commands to be processed sequentially by the same core when hash collision occurs in KV records. As the KV records increase, hash collisions also increase. A hash collision will continue at least in the below 7A-7C described.

Die Hash-Steuerung 202 führt Hash-Berechnungen auf KVS-Befehle durch. Eine Hash-Berechnung kann einen Hash-Wert basierend auf einem Schlüssel umfassen, der mit einem Befehl verbunden bzw. assoziiert ist, der von dem Host empfangen wurde. In einigen Ausführungsformen kann eine Hash-Berechnung das Verwenden einer Hash-Funktion umfassen, um Daten (z.B. Schlüssel) einer beliebigen Größe auf Daten (z.B. Hash-Wert) einer festgelegten Größe abzubilden bzw. zuzuordnen. Die Hash-Funktion kann verwendet werden, um einen Schlüssel auf eine Schlüsselwertdatenstruktur abzubilden, wobei der Schlüssel mit einer Indexstruktur verwendet werden kann, um auf eine Gruppe (z.B. Bucket bzw. Behälter) in der Schlüsselwertdatenstruktur zu zeigen, die eine oder mehrere Kombinationen aus einem Schlüssel und einem Wert speichert. Die Anzahl von möglichen Schlüsseln ist normalerweise größer als die Anzahl von Einträgen (z.B. Hash-Werte) in der Indexstruktur. Jeder Eintrag (z.B. Hash-Wert) in der Indexstruktur zeigt auf einen spezifischen Ort (z.B. Gruppe, Behälter, eine bestimmte Schlüsselwertkombination der Gruppe) in der Schlüsselwertdatenstruktur. Der spezifische Ort kann ein bestimmter Ort einer Schlüsselwertkombination der Gruppe sein. Eine Hash-Funktion kann den gleichen Hash-Wert für verschiedene Schlüssel erzeugen, was als Hash-Kollision bekannt ist. Somit können verschiedene Schlüssel Teil der gleichen Gruppe (z.B. Behälter) in der Schlüsselwertdatenstruktur sein. Ein spezifischer Ort (z.B. Gruppe, Behälter) in der Schlüsselwertdatenstruktur kann mehr als eine Kombination aus einem Schlüssel und einem Wert (z.B. eine oder mehrere Kombinationen aus einem gespeicherten Schlüssel und einem gespeicherten Wert) speichern. Ein bestimmter Ort der Schlüsselwertdatenstruktur kann eine oder mehrere physikalische Adressen umfassen. In einigen Ausführungsformen kann sich ein bestimmter Ort der Schlüsselwertdatenstruktur auf einen Ort der Schlüsselwertdatenstruktur oder auf mehrere Orte der Schlüsselwertdatenstruktur beziehen. Das Hashing bzw. das Zerlegen wird weiter unten mindestens in den 7A-7C beschrieben.The hash control 202 performs hash calculations on KVS commands. A hash calculation may include a hash value based on a key associated with a command received from the host. In some embodiments, a hash calculation may include using a hash function to map data (eg, keys) of any size to data (eg, hash value) of a specified size. The hash function can be used to map a key to a key-value data structure, where the key with an index structure can be used to point to a group (eg, bucket) in the key-value data structure that contains one or more combinations of one Keys and a value stores. The number of possible keys is usually greater than the number of entries (eg hash values) in the index structure. Each entry (eg hash value) in the index structure points to a specific location (eg group, container, a specific key-value combination of the group) in the key-value data structure. The specific location may be a particular location of a key-value combination of the group. A hash function can generate the same hash value for different keys, known as a hash collision. Thus, different keys may be part of the same group (eg, container) in the key value data structure. A specific location (eg, group, container) in the key value data structure may store more than one combination of a key and a value (eg, one or more combinations of a stored key and a stored value). A particular location of the key-value data structure may include one or more physical addresses. In some embodiments, a particular location of the key-value data structure may refer to a location of the key-value data structure or to multiple locations of the key-value data structure. The hashing or disassembling will continue at least in the below 7A-7C described.

Der Indizierer 206 ist dazu konfiguriert, das Nachschlagen einer Indexstruktur durchzuführen und stellt einen physikalischen Adressort einer bestimmten Gruppe (z.B. Behälter) für die Schlüsselwertdatenstruktur bereit. Der Indizierer 206 führt auch eine Aktualisierung von neuen physikalischen Adressen für eine Indexstruktur durch. Der Indizierer 206 kann auch eine Bitmap-Struktur verwenden, um eine gültige Zeigerprüfung bereitzustellen.The indexer 206 is configured to look up an index structure and provides a physical address location of a particular group (eg, container) for the key-value data structure. The indexer 206 also leads one Update of new physical addresses for an index structure by. The indexer 206 can also use a bitmap structure to provide a valid pointer check.

Der Verteiler 208 ist dazu konfiguriert, verfügbare bzw. abrufbare und verwendete Blöcke (z.B. Speicherblöcke (engl. storage blocks), Speicherblöcke (engl. memory blocks)) im Inneren des SSD 102 zu verwalten. Der Verteiler 208 kann Speicherblöcke im Inneren des SSD 102 verteilen bzw. zuweisen und/oder deren Verteilung bzw. Zuweisung aufheben. Der Verteiler 208 kann eine Bitmap-Struktur verwenden, um die Speicherblöcke zu verwalten. Die DMA-Steuerung 210 ist dazu konfiguriert, Daten von bzw. aus dem NVM auf bzw. in den lokalen Speicher über die Cross-Bar 116 zu laden und/oder zu speichern. Die KVS-Kerne 200 sind dazu konfiguriert, verschiedene KVS-Befehle durchzuführen, wie beispielsweise einen Get- bzw. Erhalte-Befehl, einen Put- bzw. Ausgabe-Befehl und einen Lösch-Befehl. Die KVS-Kerne 200 können die Indexstruktur aus der Hash-Steuerung 202 empfangen. Die KVS-Kerne 200 können mit dem Indizierer 206 kommunizieren, um physikalische Adresszeiger zu bekommen bzw. zu erhalten. Die KVS-Kerne 200 können mit der DMA-Steuerung 210 kommunizieren, um Daten auf bzw. in den lokalen Speicher zu laden. Die KVS-Kerne 200 können mit dem Verteiler 208 kommunizieren, um eine Verteilung und/oder die Aufhebung der Verteilung von Blöcken durchzuführen.The distributor 208 is configured to include available and retrievable and used blocks (eg, storage blocks), memory blocks (memory blocks) inside the SSD 102 manage. The distributor 208 can storage blocks inside the SSD 102 distribute or assign and / or cancel their distribution or assignment. The distributor 208 can use a bitmap structure to manage the memory blocks. The DMA control 210 is configured to transfer data to and from the NVM to / from local storage via the crossbar 116 to load and / or store. The KVS cores 200 are configured to perform various KVS commands, such as a Get command, a Put command, and a Delete command. The KVS cores 200 can change the index structure from the hash control 202 receive. The KVS cores 200 can with the indexer 206 communicate to get or receive physical address pointers. The KVS cores 200 can with the dma control 210 communicate to load data to or into local storage. The KVS cores 200 can with the distributor 208 communicate to perform a distribution and / or the suspension of the distribution of blocks.

VORRICHTUNGS- BZW. DEVICE-ARCHITEKTURDEVICE OR BZW. DEVICE ARCHITECTURE

3 und 4 veranschaulichen, wie Daten auf der Seite der Vorrichtung bzw. des Devices (z.B. Hostvorrichtung) verpackt und verarbeitet werden können, wenn die Vorrichtung bzw. das Device (z.B. Host) mit einem SSD gekoppelt ist, die KVS-Funktionalität aufweist. In einem herkömmlichen Systemhost verursacht jeder Zugriff auf die gespeicherten Daten über den I/O-Stack bzw. -Stapel der Systemsoftware einen signifikanten Aufwand für das Betriebssystem und das Datensystem. Die in 3 und 4 beschriebene Vorrichtungs- bzw. Device-Architektur(en) verbessern den existierenden Software-Stack bzw. -Stapel durch Bereitstellung eines direkten Zugriffs auf die Schlüsselwertspeicherdaten um die Gesamtleistung zu verbessern. 3 zeigt ein Diagramm einer beispielhaften Vorrichtungs- bzw. Device-Architektur zwischen einem Host und einem Solid-State-Device (SSD), das KVS-Funktionalität aufweist. Die Vorrichtungs- bzw. Device-Architektur 300 weist eine Anwendungsschicht 302, eine Schlüsselwert(KVS)-Bibliotheksschicht 304, eine Eingabe/Ausgabe(I/O)-Stackschicht 306 (z.B. Datensystem- und Betriebssystem-I/O-Stack) und eine Device- bzw. Vorrichtungstreiberschicht 308 auf. Die Vorrichtungs- bzw. Device-Architektur 300 ermöglicht einer Vorrichtung bzw. einem Device (z.B. Host) mit einem Solid-State-Device (SSD) 320 zu kommunizieren, das KVS-Funktionalität aufweist. 3 and 4 illustrate how data may be packaged and processed on the device or device side (eg, host device) when the device (eg, host) is coupled to an SSD having KVS functionality. In a traditional system host, any access to the stored data through the system software I / O stack or stack will cause significant overhead to the operating system and data system. In the 3 and 4 described device architecture (s) improve the existing software stack by providing direct access to the key value storage data to improve overall performance. 3 FIG. 12 is a diagram of an exemplary device architecture between a host and a solid state device (SSD) having KVS functionality. FIG. The device or device architecture 300 has an application layer 302 , a key-value (KVS) library layer 304 , an input / output (I / O) stack layer 306 (eg, data system and operating system I / O stack) and a device or device driver layer 308 on. The device or device architecture 300 enables a device or a device (eg host) with a solid state device (SSD) 320 communicate that has KVS functionality.

Die Anwendungsschicht 302 spezifiziert bzw. bestimmt spezielle Befehle und Daten (z.B. Webbrowserbefehle, Daten von Webseiten). Die KVS-Bibliotheksschicht 304 weist einen Befehl zum Erhalten, Aktualisieren, Ausgeben und/oder Löschen von Daten auf, die in einer Schlüsselwertdatenstruktur gespeichert sind. Befehle für die KVS-Bibliotheksschicht 304 weisen einen Get- bzw. Erhalte-Befehl, einen Put- bzw. Ausgabe-befehl und einen Lösch-Befehl auf. Die KVS-Bibliotheksschicht 304 übersetzt die Daten der Anwendungsschicht 302, so dass sie in einer Schlüsselwertdatenstruktur verarbeitet werden können. Die I/O-Stackschicht 306 kann KVS-Adressen in Device- bzw. Vorrichtungsadressen übersetzen. Beispielsweise kann die I/O-Stackschicht 306 Schlüsselwertdatenstrukturadressen in Device- bzw. Vorrichtungsadressen (z.B. Hostadressen) übersetzen. Die Device- bzw. Vorrichtungstreiberschicht 308 ist eine Schnittstelle, die der Vorrichtung bzw. dem Device (z.B. Host) ermöglicht, mit dem Speicher 320 zu kommunizieren. Der Speicher 320 kann in einigen Ausführungsformen das SSD 102 sein.The application layer 302 specifies or determines special commands and data (eg web browser commands, data from web pages). The KVS library layer 304 has a command for obtaining, updating, outputting and / or deleting data stored in a key value data structure. Commands for the KVS library layer 304 have a Get command, a Put command and a Delete command. The KVS library layer 304 translates the data of the application layer 302 so that they can be processed in a key-value data structure. The I / O stack layer 306 can translate KVS addresses into device or device addresses. For example, the I / O stack layer 306 Translate key value data structure addresses into device or device addresses (eg host addresses). The device or device driver layer 308 is an interface that allows the device or device (eg host) with the memory 320 to communicate. The memory 320 In some embodiments, the SSD 102 be.

Wie in 3 gezeigt kann eine Anwendung auf bzw. in einer Vorrichtung bzw. einem Device (z.B. Host), die die Vorrichtungs- bzw. Device-Architektur 300 aufweist, mit einem SSD in mehreren Arten kommunizieren. In einer Ausführungsform kann die Anwendung (z.B. Browseranwendung) mit dem Speicher 320 durch die Anwendungsschicht 302, die KVS-Bibliotheksschicht 304, die I/O-Stackschicht 306 und die Device- bzw. Vorrichtungstreiberschicht 308 kommunizieren. In einigen Ausführungsformen kann die Anwendung (z.B. Browseranwendung) mit dem Speicher 320 durch die Anwendungsschicht 302 und die KVS-Bibliotheksschicht 304 kommunizieren, indem eine oder mehrere Funktionalitäten und/oder Übersetzungen von anderen Architekturschichten der Device- bzw. Vorrichtungsarchitektur 300 umgangen bzw. überbrückt werden. Beispielsweise müssen einige oder alle KVS-Befehle von bzw. aus der KVS-Bibliotheksschicht 304 nicht übersetzt werden. Dies ist möglich, da der Speicher 320 KVS-Funktionalität aufweist, wodurch der Speicher 320 fähig ist, die KVS-Bibliotheksschicht 304, wie beispielsweise KVS-Befehle, zu verarbeiten.As in 3 an application may be shown on or in a device (eg, host) that supports the device architecture 300 has to communicate with an SSD in several ways. In one embodiment, the application (eg browser application) may be with the memory 320 through the application layer 302 , the KVS library layer 304 , the I / O stack layer 306 and the device or driver layer 308 communicate. In some embodiments, the application (eg browser application) may be with the memory 320 through the application layer 302 and the KVS library layer 304 communicate by one or more functionalities and / or translations of other architectural layers of the device architecture 300 bypassed or bridged. For example, some or all KVS commands must be from or out of the KVS library layer 304 not translated. This is possible because of the memory 320 Has KVS functionality, reducing memory 320 capable of the KVS library layer 304 , such as KVS commands.

4 zeigt ein Diagramm einer beispielhaften Device- bzw. Vorrichtungsarchitektur zwischen einem Host und einem Solid-State-Device (SSD), das KVS-Funktionalität aufweist, wobei mehrere Ketten bzw. Stränge zwischen dem Host und dem SSD verlaufen. 4 zeigt einen Host, der mit einem SSD durch mehrere Kommunikationskanäle (z.B. Kanal 1, Kanal 2, ... Kanal N) kommunizieren kann, wobei jeder Kanal eine Kette bzw. einen Strang aufweist. Der erste Strang 400 verwendet den ersten Kanal 1, der zweite Strang 410 verwendet den zweiten Kanal 2 und der dritte Strang 420 verwendet einen dritten Kanal N. Die Stränge können parallel zueinander betrieben werden. Jeder Strang weist die Anwendungsschicht 302, die Schlüsselwertspeicher(KVS)-Bibliotheksschicht 304, die Eingabe/Ausgabe(I/O)-Stackschicht 306, und die Device- bzw. Vorrichtungstreiberschicht 308 auf. Jeder Strang kann ein Klingelregister, eine Befehlswarteschlange (z.B. KVS-Befehle) und eine Antwortwarteschlange aufweisen. 4 FIG. 12 shows a diagram of an exemplary device architecture between a host and a solid state device (SSD) having KVS functionality with multiple strings between the host and the SSD. 4 shows a host running an SSD through multiple communication channels (eg channel 1 , Channel 2 , ... channel N), each channel having a string. The first strand 400 uses the first channel 1 , of the second strand 410 uses the second channel 2 and the third strand 420 uses a third channel N. The strands can be operated in parallel. Each strand has the application layer 302 , the key-value storage (KVS) library layer 304 , the input / output (I / O) stack layer 306 , and the device driver layer 308 on. Each thread may include a ring register, a command queue (eg, KVS commands), and a reply queue.

BEISPIELHAFTE ABLAUFFOLGEN BZW. ABLAUF SEQUENZEN EINES SOLID-STATE-DEVICE (SSD), DAS SCHLÜSSELWERTSPEICHER(KVS)-BEFEHLE UND NICHT-KVS-BEFEHLE VERARBEITETEXAMPLE EXHAUST PHRASES BZW. PROCESS SEQUENCES OF A SOLID STATE DEVICE (SSD) PROCESSING KEY VALUE MEMORY (KVS) COMMANDS AND NON-KVS COMMANDS

5 und 6 veranschaulichen Ablaufsequenzen bzw. Ablauffolgen eines Solid-State-Device (SSD), das einen Schlüsselwertspeicher(KVS)-Befehl und einen Nicht-KVS-Befehl verarbeitet. Die in FIG: 5 und 6 gezeigten Ablaufsequenzen können von irgendeinem SSD, die in der vorliegenden Offenbarung beschrieben wird, wie beispielsweise das SSD 102, durchgeführt werden. Der Übersichtlichkeit willen zeigen die in 5 und 6 gezeigten Ablaufsequenzen nicht notwendigerweise alle Komponenten bzw. Bestandteile des SSD, die die in 5 und 6 beschriebenen Operationen durchführt. Beispielsweise kann eine oder mehrere der beschriebenen Daten (z.B. Befehl, Antwort) durch einen oder mehrere Puffer und/oder einen oder mehrere Cross-Bars laufen, wenn sie sich zwischen den verschiedenen Komponenten des SSD bewegt werden. In einigen Ausführungsformen können die in 5 und 6 gezeigten Ablaufsequenzen andere Operationen aufweisen, die durch das SSD durchgeführt werden. 5 and 6 illustrate flow sequences of a solid-state device (SSD) that processes a key-value memory (KVS) command and a non-KVS command. The sequence sequences shown in FIGS. 5 and 6 may be of any SSD described in the present disclosure, such as the SSD 102 , be performed. For the sake of clarity, the in 5 and 6 Sequence sequences shown not necessarily all components or components of the SSD, the in 5 and 6 performs described operations. For example, one or more of the described data (eg, command, response) may pass through one or more buffers and / or one or more crossbars as they are moved between the various components of the SSD. In some embodiments, the in 5 and 6 Sequences shown have other operations performed by the SSD.

FIG: 5 veranschaulicht eine Ablaufsequenz 500, die durch ein SSD 501, das mit einem Host (z.B. Host 104) gekoppelt ist, durchgeführt wird. Die Ablaufsequenz 500 umfasst die Verarbeitung von KVS-Befehlen durch das SSD 501. Das SSD 501 weist eine Hostschnittstelle 502, eine Brücke 504, einen Schlüsselwertspeicher(KVS)-Prozessor 506, einen Prozessor 508 und einen nichtflüchtigen Speicher (NVM) 510 auf. In einem Aspekt ist der NVM als ein NAND-Speicher realisiert.FIG. 5 illustrates a sequence of operations 500 passing through an SSD 501 that with a host (eg host 104 ) is performed. The sequence of events 500 includes the processing of KVS commands by the SSD 501 , The SSD 501 has a host interface 502 , a bridge 504 , a key value memory (KVS) processor 506 , a processor 508 and a nonvolatile memory (NVM) 510 on. In one aspect, the NVM is implemented as a NAND memory.

Wie in 5 gezeigt sendet die Hostschnittstelle 502 einen Schlüsselwertspeicher(KVS)-Befehl an die Brücke 504 (bei 512). Der KVS-Befehl kann durch die Hostschnittstelle 502 aus bzw. von einem Host (z.B. 104) empfangen werden. Beispiele für KVS-Befehle weisen einen Get- bzw. Erhalte-Befehl, einen Put- bzw. Ausgabe-Befehl und einen Delete- bzw. Lösch-Befehl auf. In einigen Ausführungsformen sind KVS-Befehle Befehle, die nicht die physikalische(n) Adresse(n) der Daten aufweisen, die verarbeitet werden sollen (z.B. ein Befehl frei von physikalischer Adressinformation), wenn der Befehl durch den Host übertragen und/oder durch das SSD empfangen wird. Die Brücke 504 bestimmt (bei 514), dass der Befehl ein KVS-Befehl ist und sendet (bei 516) den KVS-Befehl an den KVS-Prozessor 506. Der KVS-Prozessor 506 verarbeitet (bei 518) den KVS-Befehl, der die Durchführung einer Hash-Berechnung, zur Erzeugung eines Hash-Wertes, und die Verwendung einer Indexstruktur, zur Identifizierung eines Ortes (z.B. Gruppe, Schlüsselwertkombination) in der Schlüsselwertdatenstruktur, umfasst. In einigen Ausführungsformen umfasst die Identifizierung des Ortes die Identifizierung einer physikalischen Adresse einer Kombination aus einem Schlüssel und einem Wert in dem NVM 510. In einigen Ausführungsformen umfasst die Identifizierung des Ortes die Identifizierung einer physikalischen Adresse, die mit einer Gruppe von Kombinationen aus einem Schlüssel und einem Wert in dem NVM 510 assoziiert bzw. verbunden ist.As in 5 shown sends the host interface 502 a key value memory (KVS) command to the bridge 504 (at 512 ). The KVS command can be through the host interface 502 from or from a host (eg 104 ) are received. Examples of KVS instructions include a Get command, a Put command, and a Delete command. In some embodiments, KVS instructions are instructions that do not have the physical address (s) of data to be processed (eg, an instruction free of physical address information) when the instruction is transmitted by the host and / or through the host SSD is received. The bridge 504 determined (at 514 ) that the command is a KVS command and sends (at 516 ) the KVS command to the KVS processor 506 , The KVS processor 506 processed (at 518 ) the KVS instruction, which involves performing a hash calculation to generate a hash value, and using an index structure to identify a location (eg, group, key-value combination) in the key-value data structure. In some embodiments, identifying the location includes identifying a physical address of a combination of a key and a value in the NVM 510 , In some embodiments, identifying the location includes identifying a physical address associated with a group of combinations of a key and a value in the NVM 510 is associated or connected.

Der KVS-Prozessor 506 sendet (bei 520) einen Befehl, der eine Adresse der Daten umfasst, an den Prozessor 508. Der Prozessor 508 verarbeitet (bei 522) den Befehl von bzw. aus dem KVS-Prozessor 506. Der Prozessor 508 sendet (bei 524) den Befehl an den NVM 510. Der NVM 510 greift (bei 526) auf die Daten basierend auf dem Befehl zu. Zugriff auf die Daten kann das Lesen der Daten an einer bestimmten physikalischen Adresse der NVM 510 und/oder das Schreiben von Daten an einer bestimmten physikalischen Adresse des NVM 510 umfassen.The KVS processor 506 sends (at 520 ) a command comprising an address of the data to the processor 508 , The processor 508 processed (at 522 ) the command from or from the KVS processor 506 , The processor 508 sends (at 524 ) command to the NVM 510 , The NVM 510 engages (at 526 ) to the data based on the command to. Accessing the data may involve reading the data at a specific physical address of the NVM 510 and / or writing data to a specific physical address of the NVM 510 include.

Der NVM 510 sendet (bei 528) die Antwort auf den Befehl an den Prozessor 508, wo die Antwort verarbeitet wird (bei 530). Die Antwort kann Daten (z.B. Schlüssel, Wert, Zeiger, Bestätigung, Fehler) umfassen. Der Prozessor 508 sendet (bei 532) die Antwort an den KVS-Prozessor 506. Der KVS-Prozessor 506 verarbeitet (bei 534) die Antwort und sendet (bei 536) die Antwort an die Brücke 504. Die Brücke 504 verarbeitet (bei 538) die Antwort und sendet (bei 540) die Antwort an die Hostschnittstelle 502. Die Hostschnittstelle 502 sendet die Antwort an den Host (z.B. 104). Die obige Ablaufsequenz 500 kann vielfach sequentiell oder parallel mit anderen Befehlen (z.B. KVS-Befehle, Nicht-KVS-Befehle) ausgeführt werden.The NVM 510 sends (at 528 ) the response to the command to the processor 508 where the answer is processed (at 530 ). The response may include data (eg, key, value, pointer, acknowledgment, error). The processor 508 sends (at 532 ) the answer to the KVS processor 506 , The KVS processor 506 processed (at 534 ) the answer and send (at 536 ) the answer to the bridge 504 , The bridge 504 processed (at 538 ) the answer and send (at 540 ) the response to the host interface 502 , The host interface 502 sends the response to the host (eg 104 ). The above sequence of events 500 can often be executed sequentially or in parallel with other commands (eg KVS commands, non-KVS commands).

FIG: 6 zeigt eine Ablaufsequenz 600, die durch das SSD 501, das mit einem Host (z.B. Host 104) gekoppelt ist, durchgeführt wird. Die Ablaufsequenz 600 umfasst die Verarbeitung von Nicht-KVS-Befehlen durch das SSD 501. Das SSD 501 umfasst die Hostschnittstelle 502, die Brücke 504, den Schlüsselwertspeicher(KVS)-Prozessor 506, den Prozessor 508 und den nichtflüchtigen Speicher (NVM) 510.FIG. 6 shows a sequence of operations 600 passing through the SSD 501 that with a host (eg host 104 ) is performed. The sequence of events 600 includes the processing of non-KVS commands by the SSD 501 , The SSD 501 includes the host interface 502 , the bridge 504 , the Key Value Memory (KVS) processor 506 , the processor 508 and non-volatile memory (NVM) 510 ,

Wie in 6 gezeigt sendet die Hostschnittstelle 502 (bei 612) einen Nicht-Schlüsselwertspeicher(KVS)-Befehl an die Brücke 504. Der Nicht-KVS-Befehl kann durch die Hostschnittstelle 502 von einem Host (z.B. 104) empfangen werden. Nicht-KVS-Befehle umfassen Befehle, die nicht spezifisch auf eine Schlüsselwertspeicherdatenbank beschränkt bzw. limitiert sind. Das heißt, Nicht-KVS-Befehle sind Befehle, die in Nicht-Schlüsselwertspeicherdatenbanken verwendet werden können. Beispiele für Nicht-KVS-Befehle umfassen Lese-Befehle und/oder Schreibe-Befehle. In einigen Ausführungsformen sind Nicht-KVS-Befehle Befehle, die eine physikalische Adresse (bzw. Adressen) der Daten umfassen, die verarbeitet werden soll, wenn der Befehl durch den Host übertragen und/oder durch das SSD empfangen wird. Die Brücke 504 bestimmt (bei 614), dass der Befehl ein Nicht-KVS-Befehl ist und sendet (bei 616) den Nicht-KVS-Befehl an den Prozessor 508. In einigen Ausführungsformen kann der Nicht-KVS-Befehl Adressinformationen (z.B. eine physikalische Adresse von Daten in bzw. auf dem NVM 510) umfassen. Der Nicht-KVS-Befehl umgeht bzw. überbrückt den KVS-Prozessor 506. Der Prozessor 508 verarbeitet (bei 622) den Nicht-KVS-Befehl aus bzw. von der Brücke 504. Der Prozessor 508 sendet (bei 524) den Befehl an den NVM 510. Der NVM 510 greift (bei 626) auf die Daten basierend auf dem Befehl zu. Zugriff auf die Daten kann das Lesen der Daten an einer bestimmten physikalischen Adresse des NVM 510 und/oder das Schreiben von Daten an einer bestimmten physikalischen Adresse des NVM 510 umfassen. As in 6 shown sends the host interface 502 (at 612 ) a non-key-value memory (KVS) command to the bridge 504 , The non-KVS command can be through the host interface 502 from a host (eg 104 ) are received. Non-KVS commands include commands that are not specifically limited to a key value storage database. That is, non-KVS commands are commands that can be used in non-key-value storage databases. Examples of non-KVS commands include read commands and / or write commands. In some embodiments, non-KVS instructions are instructions that include a physical address (or addresses) of the data that is to be processed when the instruction is transmitted by the host and / or received by the SSD. The bridge 504 determined (at 614 ) that the command is a non-KVS command and sends (at 616 ) the non-KVS command to the processor 508 , In some embodiments, the non-KVS command may include address information (eg, a physical address of data in or on the NVM 510 ). The non-KVS command bypasses or bypasses the KVS processor 506 , The processor 508 processed (at 622 ) the non-KVS command from or from the bridge 504 , The processor 508 sends (at 524 ) command to the NVM 510 , The NVM 510 engages (at 626 ) to the data based on the command to. Accessing the data may involve reading the data at a specific physical address of the NVM 510 and / or writing data to a specific physical address of the NVM 510 include.

Der NVM 510 sendet (bei 628) die Antwort auf den Befehl an den Prozessor 508, wo die Antwort verarbeitet (bei 630) wird. Die Antwort kann verschiedene Daten (z.B. Schlüssel, Wert, Zeiger, Bestätigung, Fehler) umfassen. Der Prozessor 508 sendet (bei 632) die Antwort an die Brücke 504. Die Antwort umgeht bzw. überbrückt den KVS-Prozessor 506. Die Brücke 504 verarbeitet (bei 638) die Antwort und sendet (bei 640) die Antwort an die Hostschnittstelle 502. Die Hostschnittstelle 502 sendet die Antwort an den Host (z.B. 104). Die obige Ablaufsequenz 600 kann mehrmals sequentiell oder parallel mit anderen Befehlen (z.B. KVS-Befehle, Nicht-KVS-Befehle) durchgeführt werden.The NVM 510 sends (at 628 ) the response to the command to the processor 508 where the answer is processed (at 630 ) becomes. The answer may include various data (eg, key, value, pointer, acknowledgment, error). The processor 508 sends (at 632 ) the answer to the bridge 504 , The answer bypasses or bypasses the KVS processor 506 , The bridge 504 processed (at 638 ) the answer and send (at 640 ) the response to the host interface 502 , The host interface 502 sends the response to the host (eg 104 ). The above sequence of events 600 can be performed several times sequentially or in parallel with other commands (eg KVS commands, non-KVS commands).

7 (die die 7A-7C umfasst) zeigt eine Ablaufsequenz eines Solid-State-Device (SSD), das einen Schlüsselwertspeicher(KVS)-Befehl durchführt. Insbesondere zeigt 7 eine Sequenz eines Get- bzw. Erhalte-Befehls aus bzw. von einem Host, der durch ein SSD durchgeführt wird. 7 (which the 7A-7C includes) shows a flow sequence of a solid state device (SSD) performing a key value memory (KVS) command. In particular shows 7 a sequence of a get command from or from a host performed by an SSD.

Wie in 7A gezeigt empfängt das SSD einen Get- bzw. Erhalte-Befehl 710 von einem Host. Der Get- bzw. Erhalte-Befehl 710 spezifiziert das SSD, um einen Wert zu erhalten, der mit einem Schlüssel (K3) verbunden bzw. assoziiert ist. Der KVS-Prozessor 700 des SSD führt eine Hash-Operation auf den Schlüssel (K3) durch, die einen Hash-Wert 720 erzeugt. Der Hash-Wert 720 wird dann auf bzw. in der Indexstruktur 704 verwendet, um eine Gruppe von bzw. aus der Schlüsselwertdatenstruktur 702 zu identifizieren. In diesem besonderen Fall zeigt der Hash-Wert 720 auf einen Eintrag in der Indexstruktur 704, der Gruppe 0 identifiziert. Gruppe 0 zeigt auf die Schlüssel(K1)- und Wert(V1)-Kombination 730 in der Schlüsselwertdatenstruktur 702. In einigen Ausführungsformen umfasst der Eintrag der Indexstruktur der Gruppe 0 einen Zeiger, der eine physikalische Adresse der Kombination 730 aus einem Schlüssel (K1) und einem Wert (V1) in der Schlüsselwertdatenstruktur 702 (die in dem NVM der SSD gespeichert ist) ist. Die Gruppe einer Schlüsselwertdatenstruktur kann leer sein oder eine oder mehrere Schlüsselwertdaten (z.B. Kombination aus einem Schlüssel und einem Wert) umfassen. Auch wenn der Zeiger in der Indexstruktur 704 auf die Kombination 730 aus einem Schlüssel (K1) und einem Wert (V1) zeigt, kann der Zeiger als ein Zeiger für die Gruppe 0 der Schlüsselwertdatenstruktur 702 betrachtet werden. Unterschiedliche Ausführungsformen können die Indexstruktur 704 unterschiedlich speichern. Das SSD ruft die Kombination 730 aus einem Schlüsse(K1) und einem Wert(V1) aus bzw. von der Schlüsselwertdatenstruktur 702 ab und liest diese, und vergleicht dann den Schlüssel (K1) der Kombination 730 mit dem Schlüssel (K3) des Befehls 710. In diesem Fall stimmen die Schlüssel nicht überein und das SSD ruft die nächste Kombination aus einem Schlüssel und einem Wert ab. Die nächste Kombination aus einem Schlüssel und Wert wird durch einen Zeiger, der sich bei der Kombination aus dem Schlüssel (K1) und dem Wert (V1) befindet, bestimmt. Der Zeiger kann eine physikalische Adresse der nächsten Kombination aus einem Schlüssel und einem Wert sein. In diesem Beispiel ist die nächste Kombination aus einem Schlüssel und einem Wert die Kombination aus einem Schlüssel (K2) und einem Wert (V2).As in 7A As shown, the SSD receives a Get command 710 from a host. The get or get command 710 specifies the SSD to get a value that can be set with a key ( K3 ) is associated or associated. The KVS processor 700 of the SSD performs a hash operation on the key ( K3 ), which has a hash value 720 generated. The hash value 720 is then on or in the index structure 704 used to group out or from the key-value data structure 702 to identify. In this particular case, the hash value shows 720 to an entry in the index structure 704 , the group 0 identified. group 0 points to the keys ( K1 ) - and value ( V1 )-Combination 730 in the key-value data structure 702 , In some embodiments, the entry of the index structure comprises the group 0 a pointer that is a physical address of the combination 730 from a key ( K1 ) and a value ( V1 ) in the key-value data structure 702 (which is stored in the NVM of the SSD). The group of a key-value data structure may be empty or comprise one or more key-value data (eg combination of a key and a value). Even if the pointer in the index structure 704 on the combination 730 from a key ( K1 ) and a value ( V1 ), the pointer may act as a pointer to the group 0 the key-value data structure 702 to be viewed as. Different embodiments may be the index structure 704 store differently. The SSD calls the combination 730 from a conclusion ( K1 ) and a value ( V1 ) from or from the key-value data structure 702 and read them, and then compare the key ( K1 ) of the combination 730 with the key ( K3 ) of the command 710 , In this case, the keys do not match and the SSD retrieves the next combination of a key and a value. The next combination of a key and value is indicated by a pointer, which is the combination of the key ( K1 ) and the value ( V1 ) is determined. The pointer may be a physical address of the next combination of a key and a value. In this example, the next combination of a key and a value is the combination of a key ( K2 ) and a value ( V2 ).

7B zeigt das SSD, das die Kombination 732 aus dem Schlüssel (K2) und dem Wert(V2) abruft, die auch Teil von Gruppe 0 ist. Das SSD ruft die Kombination 732 aus dem Schlüssel (K2) und dem Wert (V2) aus der Schlüsselwertdatenstruktur 702 ab und liest diese, und vergleicht den Schlüssel (K2) der Kombination 732 dann mit dem Schlüssel (K3) des Befehls 710. Die Schlüssel stimmen auch dieses Mal nicht überein, und das SSD ruft die nächste Kombination aus einem Schlüssel und einem Wert ab. Der Ort der nächsten Kombination aus einem Schlüssel und einem Wert ist als Zeiger (z.B. physikalischer Adresszeiger) in der Kombination 732 aus dem Schlüssel (K2) und dem Wert (V2) gespeichert. Der Zeiger zeigt auf die Kombination aus dem Schlüssel (K3) und dem Wert (V3). 7B shows the SSD that the combination 732 from the key ( K2 ) and the value ( V2 ), which is also part of the group 0 is. The SSD calls the combination 732 from the key ( K2 ) and the value ( V2 ) from the key-value data structure 702 and read them, and compare the key ( K2 ) of the combination 732 then with the key ( K3 ) of the command 710 , The keys also do not match this time, and the SSD retrieves the next combination of a key and a value. The location of the next combination of a key and a value is as a pointer (eg physical address pointer) in the combination 732 from the key ( K2 ) and the value ( V2 ) saved. The pointer points to the combination of the key ( K3 ) and the value ( V3 ).

7C zeigt das SSD, das die Kombination 732 aus dem Schlüssel (K2) und dem Wert (V2) abruft, die auch Teil von Gruppe 0 ist (was bedeuten kann, dass diese Teil des gleichen Behälters sind). Das SSD ruft die Kombination 734 aus dem Schlüssel (K3) und dem Wert (V3) aus bzw. von der Schlüsselwertdatenstruktur 702 ab und liest diese, und vergleicht dann den Schlüssel (K3) der Kombination 734 aus dem Schlüssel und dem Wert mit dem Schlüssel (K3) des Befehls 710. Die Schlüssel stimmen jetzt überein, und das SSD liefert eine Antwort 740 an den Host, wobei die Antwort den Wert (V3) aus der Kombination 734 aus dem Schlüssel und dem Wert aufweist. 7C shows the SSD that the combination 732 from the key ( K2 ) and the value ( V2 ), which is also part of the group 0 is (which may mean that they are part of the same container). The SSD calls the combination 734 from the key ( K3 ) and the value ( V3 ) from or from the key-value data structure 702 and read them, and then compare the key ( K3 ) of the combination 734 from the key and the value with the key ( K3 ) of the command 710 , The keys now match, and the SSD provides an answer 740 to the host, where the answer is the value ( V3 ) from the combination 734 from the key and the value.

In dieser Konfiguration sind aufgrund der Hash-Kollision mehrere Kombinationen aus einem Schlüssel und einem Wert in der gleichen Gruppe (z.B. Behälter). Unter anderen Verarbeitungsoperationen werden alle Kombinationen aus einem Schlüssel und einem Wert über die Verbindung 106 an den Host 104 übertragen, wodurch unnötiger I/O-Aufwand zwischen dem SSD und dem Host erzeugt wird. Dies verlangsamt die Gesamtleistung des SSD. Jedoch wird durch ausschließlich Übertragung der Kombination aus einem Schlüssel und einem Wert, die übereinstimmt, der I/O-Aufwand zwischen dem SSD und dem Host erheblich reduziert. Während die Prozessoren (z.B. KVS-Prozessor) des SSD wahrscheinlich langsamer als die Prozessoren des Hosts sind, überwiegt der Vorteil, der erreicht wird, indem nicht alle Kombinationen aus einem Schlüssel und einem Wert übertragen werden müssen, alle Nachteile, die durch die Verwendung eines Prozessors, der sich auf bzw. in dem SSD befindet, entstehen können, insbesondere in Fällen, in denen die Datenbank sehr groß ist und es zu einem hohen Auftreten von Hash-Kollision in den Datensätzen kommt. Das obige Szenario gilt auch für andere Arten von KVS-Befehlen.In this configuration, due to the hash collision, multiple combinations of a key and a value are in the same group (eg, container). Among other processing operations, all combinations of a key and a value are over the connection 106 to the host 104 which creates unnecessary I / O overhead between the SSD and the host. This slows down the overall performance of the SSD. However, by only transmitting the combination of a key and a value that matches, the I / O overhead between the SSD and the host is significantly reduced. While the processors (eg, KVS processor) of the SSD are likely to be slower than the processors of the host, the benefit achieved by not having to transmit all the combinations of a key and a value outweighs any disadvantages caused by the use of a key Processor, which is located on or in the SSD can arise, especially in cases where the database is very large and there is a high occurrence of hash collision in the records. The above scenario also applies to other types of KVS commands.

8 (die die 8A-8B umfasst) zeigt eine Ablaufsequenz eines Solid-State-Device (SSD), das einen Schlüsselwertspeicher(KVS)-Befehl durchführt. Insbesondere zeigt 8 eine Sequenz eines Put- bzw. Ausgabe-Befehls von einem Host, der durch ein SSD durchgeführt wird, wobei der Put- bzw. Ausgabe-Befehl das Schreiben einer neuen Kombination aus einem Schlüssel und einem Wert umfasst. 8th (which the 8A-8B includes) shows a flow sequence of a solid state device (SSD) performing a key value memory (KVS) command. In particular shows 8th a sequence of a put command from a host performed by an SSD, the put command comprising writing a new combination of a key and a value.

Wie in 8A gezeigt empfängt das SSD einen Put- bzw. Ausgabe-Befehl 810 von einem Host. Der Put- bzw. Ausgabe-Befehl 810 spezifiziert das SSD, eine neue Kombination aus einem Schlüssel und einem Wert zu speichern. Insbesondere spezifiziert der Put- bzw. Ausgabe-Befehl 810 das Speichern einer Kombination 834 aus einem Schlüssel (K5) und einem Wert (V5). Der KVS-Prozessor 800 des SSD führt eine Hash-Operation auf den Schlüssel (K5) durch, wodurch ein Hash-Wert 820 erzeugt wird. Der Hash-Wert 820 wird dann auf die Indexstruktur 804 angewendet, um eine Gruppe von bzw. aus der Schlüsselwertdatenstruktur 802 zu identifizieren. In diesem bestimmten Fall zeigt der Hash-Wert 820 auf einen Eintrag in der Indexstruktur 804, der Gruppe 1 identifiziert. Gruppe 1 zeigt auf die Kombination 830 aus dem Schlüssel (K4) und dem Wert(V4) in der Schlüsselwertdatenstruktur 802. In einigen Ausführungsformen umfasst der Eintrag der Indexstruktur für Gruppe 1 einen Zeiger, der eine physikalische Adresse der Kombination 830aus dem Schlüssel (K4) und dem Wert (V4) in der Schlüsselwertdatenstruktur 802 ist. Die Schlüsselwertdatenstruktur 802 ist in dem NVM des SSD gespeichert. Die Gruppe einer Schlüsselwertdatenstruktur kann leer sein oder eine oder mehrere Schlüsselwertdaten (z.B. Kombination aus einem Schlüssel und einem Wert) umfassen. Auch wenn der Zeiger in der Indexstruktur 804 auf die Kombination 830 aus dem Schlüssel (K4) und dem Wert (V4)- zeigt, kann der Zeiger als Zeiger für die Gruppe 1 der Schlüsselwertdatenstruktur 802 betrachtet werden. Das SSD ruft die Kombination 830 aus dem Schlüssel (K4) und dem Wert (V4) 830 von bzw. aus der Schlüsselwertdatenstruktur 802 ab und liest diese, und vergleicht dann den Schlüssel (K4) der Kombination 830 mit dem Schlüssel (K5) des Befehls 810. In diesem Fall stimmen die Schlüssel nicht überein, und das SSD ruft die nächste Kombination aus einem Schlüssel und einem Wert aus der Gruppe ab. Die nächste Kombination aus einem Schlüssel und einem Wert ist durch einen Zeiger spezifiziert, der sich bei der Kombination aus dem Schlüssel (K4) und dem Wert (V4) befindet. Der Zeiger kann eine physikalische Adresse der nächsten Kombination aus einem Schlüssel und einem Wert sein. Jedoch ist in diesem Beispiel keine andere Kombination aus einem Schlüssel und einem Wert in der Gruppe 1. Da in der Gruppe 1 keine andere Kombination aus einem Schlüssel und einem Wert ist, kann das SSD die Kombination 834 aus dem Schlüssel (K5) und dem Wert (V5) nach der Kombination 830 aus dem Schlüssel (K4) und dem Wert (V4) hinzufügen.As in 8A As shown, the SSD receives a put command 810 from a host. The put or output command 810 Specifies the SSD to store a new combination of a key and a value. In particular, the put or issue command specifies 810 saving a combination 834 from a key ( K5 ) and a value ( V5 ). The KVS processor 800 of the SSD performs a hash operation on the key ( K5 ), which gives a hash value 820 is produced. The hash value 820 will then be on the index structure 804 applied to a group from or out of the key-value data structure 802 to identify. In this particular case, the hash value shows 820 to an entry in the index structure 804 , the group 1 identified. group 1 points to the combination 830 from the key ( K4 ) and the value ( V4 ) in the key-value data structure 802 , In some embodiments, the entry comprises the index structure for group 1 a pointer containing a physical address of the combination 830 from the key ( K4 ) and the value ( V4 ) in the key-value data structure 802 is. The key-value data structure 802 is stored in the NVM of the SSD. The group of a key-value data structure may be empty or comprise one or more key-value data (eg combination of a key and a value). Even if the pointer in the index structure 804 on the combination 830 from the key ( K4 ) and the value ( V4 ) - shows, the pointer can be used as a pointer to the group 1 the key-value data structure 802 to be viewed as. The SSD calls the combination 830 from the key ( K4 ) and the value ( V4 ) 830 from or out of the key-value data structure 802 and read them, and then compare the key ( K4 ) of the combination 830 with the key ( K5 ) of the command 810 , In this case, the keys do not match and the SSD retrieves the next combination of a key and a value from the group. The next combination of a key and a value is specified by a pointer that appears at the combination of the key ( K4 ) and the value ( V4 ) is located. The pointer may be a physical address of the next combination of a key and a value. However, in this example, there is no other combination of a key and a value in the group 1 , Because in the group 1 no other combination of a key and a value, the SSD can be the combination 834 from the key ( K5 ) and the value ( V5 ) after the combination 830 from the key ( K4 ) and the value ( V4 ) Add.

8B zeigt das SSD, das die Kombination 834 aus dem Schlüssel (K5) und dem Wert (V5) in bzw. auf die Schlüsselwertdatenstruktur 802 des NVM schreibt. Das SSD kann einen Speicherblock (bzw. Speicherblöcke) (z.B. physikalische Adressen) für die Kombination 834 aus dem Schlüssel (K5) und dem Wert (V5) bereitstellen, bevor sie die Kombination 834 aus dem Schlüssel (K5) und dem Wert (V5) schreibt. Das SSD aktualisiert den Zeiger der Kombination 830 aus dem Schlüssel (K4) und dem Wert (V4), so dass der Zeiger auf die physikalische Adresse der Kombination 834 aus dem Schlüssel (K5) und dem Wert (V5) zeigt. Sobald die Kombination 834 aus dem Schlüssel (K5) und (V5) gespeichert wurde, kann das SSD eine Antwort 840 an den Host liefern. Die Antwort 840 kann eine Bestätigung, dass die Kombination 834 aus dem Schlüssel (K5) und dem Wert (V5) in bzw. auf der Schlüsselwertdatenstruktur 802 gespeichert wurde, umfassen. In einigen Ausführungsformen kann anstelle eines Zeigers die Kombination 834 aus dem Schlüssel (K5) und dem Wert(V5) irgendeinen Indikator bzw. Hinweis aufweisen, dass es sich um die letzte Kombination aus einem Schlüssel und einem Wert in der Gruppe handelt. Wenn es in einigen Ausführungsformen keinen Zeiger für die Kombination aus einem Schlüssel und einem Wert gibt, kann angenommen werden, dass dies die letzte Kombination aus einem Schlüssel und einem Wert in der Gruppe ist. 8B shows the SSD that the combination 834 from the key ( K5 ) and the value ( V5 ) into or onto the key-value data structure 802 the NVM writes. The SSD may include a memory block (or memory blocks) (eg, physical addresses) for the combination 834 from the key ( K5 ) and the value ( V5 ) before adding the combination 834 from the key ( K5 ) and the value ( V5 ) writes. The SSD updates the pointer of the combination 830 from the key ( K4 ) and the value ( V4 ), making the pointer to the physical address of the combination 834 from the key ( K5 ) and the value ( V5 ) shows. Once the combination 834 from the key ( K5 ) and ( V5 ), the SSD may respond 840 to the host deliver. The answer 840 can be a confirmation that the combination 834 from the key ( K5 ) and the value ( V5 ) in or on the key-value data structure 802 has been stored. In some embodiments, instead of a pointer, the combination may 834 from the key ( K5 ) and the value ( V5 ) have any indicator or indication that it is the last combination of a key and a value in the group. In some embodiments, if there is no pointer to the combination of a key and a value, it can be assumed that this is the last combination of a key and a value in the group.

9 (die die 9a-9C umfasst) zeigt eine Ablaufsequenz eines Solid-State-Device (SSD), das einen Schlüsselwertspeicher(KVS)-Befehl durchführt. Insbesondere 9 zeigt eine Sequenz eines Put- bzw. Ausgabe-Befehls von einem Host, der durch ein SSD durchgeführt wird, wobei der Put- bzw. Ausgabe-Befehl die Aktualisierung einer Kombination aus einem Schlüssel und einem Wert umfasst. 9 (which the 9a-9C includes) shows a flow sequence of a solid state device (SSD) performing a key value memory (KVS) command. Especially 9 Fig. 12 shows a sequence of a put command from a host performed by an SSD, the put command comprising updating a combination of a key and a value.

Wie in 9A gezeigt empfängt das SSD einen Put- bzw. Ausgabe-Befehl 910 von einem Host. Der Put- bzw. Ausgabe-Befehl 910 spezifiziert das SSD, eine Kombination aus einem Schlüssel und einem Wert zu speichern. Insbesondere der Put- bzw. Ausgabe-Befehl 910 spezifiziert die Speicherung einer Kombination aus dem Schlüssel (K5) und dem Wert (V6). Der KVS-Prozessor 900 des SSD führt eine Hash-Operation auf den Schlüssel (K5) aus, die einen Hash-Wert 920 erzeugt. Der Hash-Wert 920 wird dann auf die Indexstruktur 904 angewendet, um eine Gruppe von bzw. aus der Schlüsselwertdatenstruktur 902 zu identifizieren. In diesem bestimmten Fall zeigt der Hash-Wert 920 auf einen Eintrag in der Indexstruktur 904, der Gruppe 1 identifiziert. Gruppe 1 zeigt auf die Kombination 930 aus dem Schlüssel (K4) und dem Wert (V4) in der Schlüsselwertdatenstruktur 902. In einigen Ausführungsformen weist der Eintrag der Indexstruktur für Gruppe 1 einen Zeiger auf, der eine physikalische Adresse der Kombination 930 aus dem Schlüssel (K4) und dem Wert (V4) in der Schlüsselwertdatenstruktur 902 ist. Die Schlüsselwertdatenstruktur 902 ist in dem NVM des SSD gespeichert. Die Gruppe von bzw. aus einer Schlüsselwertdatenstruktur kann leer sein oder eine oder mehrere Schlüsselwertdaten (z.B. Kombination aus einem Schlüssel und einem Wert) umfassen. Auch wenn der Zeiger in der Indexstruktur 904 auf eine Kombination 930 aus dem Schlüssel (K4) und dem Wert (V4) zeigt, kann der Zeiger als ein Zeiger für die Gruppe 1 von bzw. aus der Schlüsselwertdatenstruktur 902 betrachtet werden. Das SSD ruft die Kombination 930 aus dem Schlüssel (K4) und dem Wert (V4) von bzw. aus der Schlüsselwertdatenstruktur 902 ab und liest diese, und vergleicht dann den Schlüssel (K4) der Kombination 930 mit dem Schlüssel (K5) des Befehls 910. In diesem Fall stimmen die Schlüssel nicht überein, und das SSD ruft die nächste Kombination aus einem Schlüssel und einem Wert in der Gruppe ab. Die nächste Kombination aus einem Schlüssel und einem Wert ist durch einen Zeiger spezifiziert, der sich bei der Kombination 930 aus dem Schlüssel (K4) und dem Wert(V4) befindet. Der Zeiger kann eine physikalische Adresse der nächsten Kombination aus einem Schlüssel und einem Wert in der Gruppe sein. In diesem Beispiel ist die nächste Kombination aus einem Schlüssel und einem Wert die Kombination aus dem Schlüssel (K5) und dem Wert (V5).As in 9A As shown, the SSD receives a put command 910 from a host. The put or output command 910 Specifies the SSD to store a combination of a key and a value. In particular, the put or output command 910 specifies the storage of a combination of the key ( K5 ) and the value ( V6 ). The KVS processor 900 of the SSD performs a hash operation on the key ( K5 ) that has a hash value 920 generated. The hash value 920 will then be on the index structure 904 applied to a group from or out of the key-value data structure 902 to identify. In this particular case, the hash value shows 920 to an entry in the index structure 904 , the group 1 identified. group 1 points to the combination 930 from the key ( K4 ) and the value ( V4 ) in the key-value data structure 902 , In some embodiments, the entry is the index structure for group 1 a pointer to, which is a physical address of the combination 930 from the key ( K4 ) and the value ( V4 ) in the key-value data structure 902 is. The key-value data structure 902 is stored in the NVM of the SSD. The group of or from a key-value data structure may be empty or comprise one or more key-value data (eg combination of a key and a value). Even if the pointer in the index structure 904 on a combination 930 from the key ( K4 ) and the value ( V4 ), the pointer may act as a pointer to the group 1 from or out of the key-value data structure 902 to be viewed as. The SSD calls the combination 930 from the key ( K4 ) and the value ( V4 ) from or out of the key-value data structure 902 and read them, and then compare the key ( K4 ) of the combination 930 with the key ( K5 ) of the command 910 , In this case, the keys do not match and the SSD retrieves the next combination of a key and a value in the group. The next combination of a key and a value is specified by a pointer that appears in the combination 930 from the key ( K4 ) and the value ( V4 ) is located. The pointer may be a physical address of the next combination of a key and a value in the group. In this example, the next combination of a key and a value is the combination of the key ( K5 ) and the value ( V5 ).

9B zeigt das SSD, das die Kombination 932 aus dem Schlüssel (K5) und dem Wert (V5) abruft, die auch Teil von Gruppe 1 ist. Das SSD ruft die Kombination 932 aus dem Schlüssel (K5) und dem Wert (V5) von bzw. aus der Schlüsselwertdatenstruktur 902 ab und liest diese, und vergleicht dann den Schlüssel (K5) der Kombination 932 aus dem Schlüssel und dem Wert mit dem Schlüssel (K5) des Befehls 910. Die Schlüssel stimmen dieses Mal überein, und das SSD aktualisiert die Kombination 932 aus dem Schlüssel (K5) und dem Wert (V5), so dass V5 durch V6 ersetzt wurde. Die Kombination 934 aus dem Schlüssel (K5) und dem Wert (V6)- hat jetzt die bisherige Kombination 932 aus dem Schlüssel und dem Wert ersetzt. 9B shows the SSD that the combination 932 from the key ( K5 ) and the value ( V5 ), which is also part of the group 1 is. The SSD calls the combination 932 from the key ( K5 ) and the value ( V5 ) from or out of the key-value data structure 902 and read them, and then compare the key ( K5 ) of the combination 932 from the key and the value with the key ( K5 ) of the command 910 , The keys match this time, and the SSD updates the combination 932 from the key ( K5 ) and the value ( V5 ), so that V5 by V6 was replaced. The combination 934 from the key ( K5 ) and the value ( V6 ) - now has the previous combination 932 replaced from the key and the value.

9C zeigt das SSD, das die Kombination 934 aus dem (K5) und dem Wert (V6) in bzw. auf die Schlüsselwertdatenstruktur 902 des NVM schreibt. Die Kombination aus dem Schlüssel und dem Wert kann an bzw. in einer unterschiedlichen physikalischen Adresse des NVM oder in der gleichen physikalischen Adresse wie die vorherige Kombination 932 aus dem Schlüssel und dem Wert gespeichert werden. Das SSD muss möglicherweise auch den Zeiger der Kombination aus dem Schlüssel (K4) und dem Wert (V4) aktualisieren, so dass der Zeiger auf die physikalische Adresse der Kombination 934 aus dem Schlüssel (K5) und dem Wert (V6) zeigt. Sobald die Kombination aus dem Schlüssel (K5) und dem (V6) gespeichert wurde und/oder der Zeiger aktualisiert wurde, kann das SSD eine Antwort 940 an den Host liefern. Die Antwort 940 kann eine Bestätigung, dass die Kombination aus dem Schlüssel (K5) und dem Wert (V6) in der Schlüsselwertdatenstruktur 902 gespeichert wurde, umfassen. Gegebenenfalls kann die Kombination aus dem Schlüssel (K5) und dem Wert (V6) einen Zeiger enthalten, der auf eine andere Kombination aus einem Schlüssel und einem Wert in der Gruppe zeigt bzw. führt. 9C shows the SSD that the combination 934 from the ( K5 ) and the value ( V6 ) into or onto the key-value data structure 902 the NVM writes. The combination of the key and the value may be at or in a different physical address of the NVM or in the same physical address as the previous combination 932 saved from the key and the value. The SSD may also need to use the pointer of the combination of the key ( K4 ) and the value ( V4 ), so that the pointer to the physical address of the combination 934 from the key ( K5 ) and the value ( V6 ) shows. Once the combination of the key ( K5 ) and the ( V6 ) and / or the pointer has been updated, the SSD may respond 940 deliver to the host. The answer 940 may be a confirmation that the combination of the key ( K5 ) and the value ( V6 ) in the key-value data structure 902 has been stored. If necessary, the combination of the key ( K5 ) and the value ( V6 ) include a pointer pointing to a different combination of a key and a value in the group.

10 (die die 10A-10C umfasst) zeigt eine Ablaufsequenz eines Solid-State-Device (SSD), das einen Schlüsselwertspeicher(KVS)-Befehl durchführt. Insbesondere zeigt 10 eine Sequenz eines Delete- bzw. Lösch-Befehls von einem Host, der durch das SSD durchgeführt wird. 10 (which the 10A-10C includes) shows a flow sequence of a solid state device (SSD) performing a key value memory (KVS) command. In particular shows 10 a Sequence of a delete command from a host performed by the SSD.

Wie in 10A gezeigt empfängt das SSD einen Lösch-Befehl 1010 von einem Host. Der Lösch-Befehl 1010 spezifiziert das SSD, um eine Kombination aus einem Schlüssel und einem Wert zu entfernen. Insbesondere spezifiziert der Lösch-Befehl 1010 die Löschung einer Kombination aus dem Schlüssel (K2) und dem Wert (V2). Der KVS-Prozessor 1000 des SSD führt eine Hash-Operation auf den Schlüssel (K2) durch, wodurch ein Hash-Wert 1020 erzeugt wird. Der Hash-Wert 1020 wird dann auf bzw. in der Indexstruktur 1004 verwendet, um eine Gruppe von bzw. aus der Schlüsselwertdatenstruktur 1002 zu identifizieren. In diesem bestimmten Fall zeigt der Hash-Wert 1020 auf einen Eintrag in der Indexstruktur 1004, der Gruppe 0 identifiziert. Gruppe 0 zeigt auf die Kombination 1030 aus dem Schlüssel (K1) und dem Wert (V1) in der Schlüsselwertdatenstruktur 1002. In einigen Ausführungsformen umfasst der Eintrag der Indexstruktur für Gruppe 0 einen Zeiger, der eine physikalische Adresse der Kombination 1030 aus dem Schlüssel (K1) und dem Wert (V1) in der Schlüsselwertdatenstruktur 1002 ist. Die Schlüsselwertdatenstruktur 1002 ist in dem NVM des SSD gespeichert. Die Gruppe einer Schlüsselwertdatenstruktur kann leer sein oder eine oder mehrere Schlüsselwertdaten (z.B. Kombination aus einem Schlüssel und einem Wert) umfassen. Auch wenn der Zeiger in der Indexstruktur 1004 auf die Kombination 1030 aus dem Schlüssel (K1) und dem Wert (V1) zeigt, kann der Zeiger als Zeiger für die Gruppe 0 der Schlüsselwertdatenstruktur 1002 betrachtet werden. Das SSD ruft die Kombination 1030 aus dem Schlüssel (K1) und dem Wert (V1) aus bzw. von der Schlüsselwertdatenstruktur 1002 ab und liest diese, und vergleicht dann den Schlüssel (K1) der Kombination 1030 aus dem Schlüssel und dem Wert mit dem Schlüssel (K5) des Befehls 1010. In diesem Fall stimmen die Schlüssel nicht überein, und das SSD ruft die nächste Kombination aus einem Schlüssel und einem Wert von bzw. aus der Gruppe ab. Die nächste Kombination aus einem Schlüssel und einem Wert wird durch einen Zeiger spezifiziert, der sich bei der Kombination 1030 aus dem Schlüssel (K1) und dem Wert (V1) befindet. Der Zeiger kann eine physikalische Adresse der nächsten Kombination aus einem Schlüssel und einem Wert sein. In diesem Beispiel ist die nächste Kombination aus einem Schlüssel und einem Wert aus bzw. von der Gruppe die Kombination aus dem Schlüssel (K2) und dem Wert(V2).As in 10A As shown, the SSD receives a clear command 1010 from a host. The delete command 1010 specifies the SSD to remove a combination of a key and a value. In particular, the delete command specifies 1010 the deletion of a combination of the key ( K2 ) and the value ( V2 ). The KVS processor 1000 of the SSD performs a hash operation on the key ( K2 ), which gives a hash value 1020 is produced. The hash value 1020 is then on or in the index structure 1004 used to group out or from the key-value data structure 1002 to identify. In this particular case, the hash value shows 1020 to an entry in the index structure 1004 , the group 0 identified. group 0 points to the combination 1030 from the key ( K1 ) and the value ( V1 ) in the key-value data structure 1002 , In some embodiments, the entry comprises the index structure for group 0 a pointer that is a physical address of the combination 1030 from the key ( K1 ) and the value ( V1 ) in the key-value data structure 1002 is. The key-value data structure 1002 is stored in the NVM of the SSD. The group of a key-value data structure may be empty or comprise one or more key-value data (eg combination of a key and a value). Even if the pointer in the index structure 1004 on the combination 1030 from the key ( K1 ) and the value ( V1 ), the pointer may be used as a pointer to the group 0 the key-value data structure 1002 to be viewed as. The SSD calls the combination 1030 from the key ( K1 ) and the value ( V1 ) from or from the key-value data structure 1002 and read them, and then compare the key ( K1 ) of the combination 1030 from the key and the value with the key ( K5 ) of the command 1010 , In this case, the keys do not match and the SSD retrieves the next combination of a key and a value from the group. The next combination of a key and a value is specified by a pointer that appears in the combination 1030 from the key ( K1 ) and the value ( V1 ) is located. The pointer may be a physical address of the next combination of a key and a value. In this example, the next combination of a key and a value from or from the group is the combination of the key ( K2 ) and the value ( V2 ).

10B zeigt das SSD, das die Kombination 1032 aus dem Schlüssel (K2) und dem Wert (V2) abruft, die auch Teil von Gruppe 0 ist. Das SSD ruft die Kombination 1032 aus dem Schlüssel (K2) und dem Wert (V2) aus bzw. von der Schlüsselwertdatenstruktur 1002 ab und liest diese, und vergleicht dann den Schlüssel (K2) der Kombination 1032 aus dem Schlüssel und dem Wert mit dem Schlüssel (K2) des Befehls 1010. Die Schlüssel stimmen dieses Mal überein. 10B shows the SSD that the combination 1032 from the key ( K2 ) and the value ( V2 ), which is also part of the group 0 is. The SSD calls the combination 1032 from the key ( K2 ) and the value ( V2 ) from or from the key-value data structure 1002 and read them, and then compare the key ( K2 ) of the combination 1032 from the key and the value with the key ( K2 ) of the command 1010 , The keys match this time.

Das SSD kann eines von mehreren Dingen tun. In einer Ausführungsform kann das SSD den Zeiger der Kombination 1030 aus dem Schlüssel (K1) und dem Wert (V1) aktualisieren, um auf die physikalische Adresse der Kombination 1034 aus dem Schlüssel (K3) und dem Wert (V3) anstatt auf die Kombination 1032 aus dem Schlüssel (K2) und dem Wert (V2) zu zeigen. Dies entfernt effektiv die Kombination 1032 aus dem Schlüssel (K2) und dem Wert (V2) aus bzw. von der Schlüsselwertdatenstruktur 1002, ohne sie tatsächlich aus bzw. von der physikalischen Adresse des NVM zu löschen. In einigen Ausführungsformen kann das SSD die Verteilung des Speicherblocks (bzw. der Speicherblöcke) (z.B. physikalische Adresse), auf dem die Kombination 1032 aus dem Schlüssel (K2) und dem Wert (V2) gespeichert ist, aufheben, was bedeutet, dass der bestimmte Speicherblock (bzw. Speicherblöcke) nicht länger von bzw. durch die Schlüsselwertdatenstruktur 1002 verwendet wird, und für die Speicherung neuer Daten zur Verfügung steht.The SSD can do one of several things. In one embodiment, the SSD may be the pointer of the combination 1030 from the key ( K1 ) and the value ( V1 ) to update to the physical address of the combination 1034 from the key ( K3 ) and the value ( V3 ) instead of the combination 1032 from the key ( K2 ) and the value ( V2 ) to show. This effectively removes the combination 1032 from the key ( K2 ) and the value ( V2 ) from or from the key-value data structure 1002 without actually deleting it from or from the physical address of the NVM. In some embodiments, the SSD may determine the distribution of the memory block (s) (eg, physical address) on which the combination 1032 from the key ( K2 ) and the value ( V2 ), meaning that the particular memory block (or memory blocks) is no longer from or through the key-value data structure 1002 is used and is available for storing new data.

10C zeigt das SSD, das den Zeiger der Kombination 1030 aus dem Schlüssel und dem Wert aktualisiert, so dass er auf die Kombination 1034 aus dem Schlüssel und dem Wert anstelle der Kombination 1032 aus dem Schlüssel und dem Wert zeigt. Nach Aktualisierung des Zeigers kann das SSD eine Antwort 1040 an den Host liefern. Die Antwort 1040 kann eine Bestätigung, dass die Kombination 1032 aus dem Schlüssel (K2) und dem Wert (V2) in der Schlüsselwertdatenstruktur 1002 gelöscht wurde, umfassen. In anderen Ausführungsformen kann das SSD die physikalische Adresse der Kombination 1032 aus dem Schlüssel und dem Wert überschreiben, um die Kombination 1032 aus dem Schlüssel und dem Wert aus bzw. von der Schlüsselwertdatenstruktur 1002 zu löschen. In einem solchen Fall würde das SSD immer noch den Zeiger der Kombination 1030 aus dem Schlüssel und dem Wert aktualisieren, damit er auf die Kombination 1034 aus dem Schlüssel und dem Wert zeigt. 10C shows the SSD, which is the pointer of the combination 1030 updated from the key and the value, so he on the combination 1034 from the key and the value instead of the combination 1032 from the key and the value shows. After updating the pointer, the SSD may respond 1040 deliver to the host. The answer 1040 can be a confirmation that the combination 1032 from the key ( K2 ) and the value ( V2 ) in the key-value data structure 1002 was deleted include. In other embodiments, the SSD may be the physical address of the combination 1032 from the key and the value override to the combination 1032 from the key and the value from the key-value data structure 1002 to delete. In such a case, the SSD would still be the pointer of the combination 1030 from the key and the value update, so he on the combination 1034 from the key and the value shows.

BEISPIELHAFTE FLUSSDIAGRAMME VON VERFAHREN DER VERARBEITUNG VON SCHLÜSSELWERTSPEICHER(KVS)-BEFEHLEN UND NICHT-KVS-BEFEHLEN DURCH EIN SOLID-STATE-DEVICE (SSD)EXAMPLE FLOW DIAGRAMS OF METHOD OF PROCESSING KEYWORK STORAGE (KVS) ERRORS AND NON-KVS COMMUNICATIONS THROUGH A SOLID STATE DEVICE (SSD)

11 und 12 zeigen Flussdiagramme von Verfahren zur Verarbeitung eines Schlüsselwertspeicher(KVS)-Befehls und eines Nicht-KVS-Befehls durch ein Solid-State-Device (SSD). Die in den 11 und 12 gezeigten Verfahren können durch irgendein SSD, das in der vorliegenden Offenbarung beschrieben wurde, wie beispielsweise das SSD 102, durchgeführt werden. Auch zeigen zum Zwecke der Übersichtlichkeit die in den 11 und 12 gezeigten Verfahren nicht notwendigerweise alle Operationen, die durch das SSD durchgeführt werden. In einigen Ausführungsformen können die in den 11 und 12 gezeigten Verfahren andere Operation umfassen, die durch das SSD durchgeführt werden können. In einigen Ausführungsformen kann die Reihenfolge der Verfahren geändert werden. 11 and twelve Figure 12 shows flowcharts of methods for processing a key-value memory (KVS) command and a non-KVS command through a solid-state device (SSD). The in the 11 and twelve The methods shown may be implemented by any SSD described in the present disclosure, such as the SSD 102 , be performed. Also show for the sake of clarity in the 11 and twelve not necessarily all operations performed by the SSD. In some embodiments, those may be incorporated into the 11 and twelve shown methods include other operation that can be performed by the SSD. In some embodiments, the order of the methods may be changed.

11 zeigt ein Flussdiagramm eines Verfahrens 1100 zur Verarbeitung eines oder mehrerer Befehle, die von einem Host empfangen werden. Das Verfahren 1100 kann durch ein SSD (z.B. 104, 501) durchgeführt werden. Das Verfahren empfängt (bei 1102) einen Befehl von einem Host. Der Befehl kann durch eine Hostschnittstelle (z.B. 110) empfangen werden. Das Verfahren bestimmt (bei 1104), ob der Befehl ein Schlüsselwertspeicher(KVS)-Befehl ist. Die Bestimmung kann durch die Brücke 112 und/oder die Hostschnittstelle 110 durchgeführt werden. Das Verfahren 1100 kann bestimmen, ob der Befehl ein KVS-Befehl ist, indem darauf geschaut wird, ob der Befehl Befehle umfasst, die nur von einer Schlüsselwert(KV)-Datenbank verwendet werden kann oder nicht. In einigen Ausführungsformen kann das Verfahren bestimmen, ob der Befehl ein KVS-Befehl ist, indem darauf geschaut wird, ob der Befehl speziell einen Get- bzw. Erhalte-Befehl, einen Put- bzw. Ausgabe-Befehl oder einen Delete- bzw. Lösch-Befehl umfasst oder nicht. In einigen Ausführungsformen kann, wenn der Befehl einen Erhalte-Befehl, einen Ausgabe-Befehl oder einen Lösch-Befehl umfasst, das Verfahren bestimmen, dass der Befehl ein KVS-Befehl ist. 11 shows a flowchart of a method 1100 to process one or more commands received from a host. The procedure 1100 can by an SSD (eg 104 . 501 ) be performed. The method receives (at 1102) a command from a host. The command may be through a host interface (eg 110 ) are received. The method determines (at 1104 ), whether the command is a key value memory (KVS) command. The determination can be through the bridge 112 and / or the host interface 110 be performed. The procedure 1100 can determine whether the command is a KVS command by looking at whether the command includes commands that can only be used by a key-value (KV) database or not. In some embodiments, the method may determine whether the command is a KVS command by looking to see if the command is specifically a Get command, a Put command, or a Delete Command includes or not. In some embodiments, if the instruction includes a get instruction, an issue instruction, or a delete instruction, the method may determine that the instruction is a KVS instruction.

Wenn das Verfahren bestimmt (bei 1104), dass der Befehl kein KVS-Befehl ist, kann das Verfahren fortfahren, auf einen bestimmten Ort einer Schlüsselwertdatenstruktur in dem nichtflüchtigen Speicher (NVM) zuzugreifen (bei 1108). Beispiele für Nicht-KVS-Befehle können einen Lese-Befehl und/oder einen Schreibe-Befehl umfassen. Der Zugriff (bei 1108) auf die Schlüsselwertdatenstruktur kann durch den NVM-Prozessor durchgeführt werden. Der Zugriff (bei 1108) auf die Schlüsselwertdatenstruktur kann das Lesen einer physikalischen Adresse des NVM und/oder das Schreiben an einer physikalischen Adresse des NVM umfassen.If the procedure determines (at 1104 ) that the command is not a KVS command, the method may continue to access a particular location of a key-value data structure in nonvolatile memory (NVM) 1108 ). Examples of non-KVS instructions may include a read command and / or a write command. The access (at 1108 ) to the key value data structure can be performed by the NVM processor. The access (at 1108 ) to the key value data structure may include reading a physical address of the NVM and / or writing to a physical address of the NVM.

Wenn das Verfahren bestimmt (bei 1104), dass der Befehl ein KVS-Befehl ist, fährt das Verfahren fort, eine Schlüsselwertspeicher(KVS)-Operation mit einer Indexstruktur durchzuführen (bei 1106), um einen bestimmten Ort einer Schlüsselwertdatenstruktur in dem nichtflüchtigen Speicher (NVM) zu identifizieren. Die Durchführung (bei 1106) der KVS-Operationen kann die Durchführung einer oder mehrerer Hash-Berechnungen und/oder Hash-Operationen umfassen, um einen oder mehrere Hash-Werte zu identifizieren, die Einträgen einer Indexstruktur entsprechen können. Ein Beispiel der Durchführung einer KVS-Operation ist in 12 beschrieben. Sobald die KVS-Operation durchgeführt (bei 1106) wurde, greift (bei 1108) das Verfahren auf die Schlüsselwertdatenstruktur in bzw. auf dem NVM basierend auf der KVS-Operation, der Indexstruktur und der Schlüsselwertdatenstruktur zu. Das Verfahren liefert (bei 1110) eine Antwort an einen Host basierend auf den abgerufenen Daten. Das Verfahren 1100 von 11 kann iterativ für mehrere Befehle (z.B. KVS-Befehle und/oder Nicht-KVS-Befehle) durchgeführt werden.If the procedure determines (at 1104 ) that the command is a KVS command, the method continues to perform a key value memory (KVS) operation with an index structure 1106 ) to identify a particular location of a key-value data structure in nonvolatile memory (NVM). The implementation (at 1106 ) of the KVS operations may include performing one or more hash calculations and / or hash operations to identify one or more hash values that may correspond to entries of an index structure. An example of performing a KVS operation is in twelve described. Once the KVS surgery is performed (at 1106 ), (intervenes) 1108 ) assigns the method to the key-value data structure in or on the NVM based on the KVS operation, the index structure, and the key-value data structure. The method provides (at 1110 ) a response to a host based on the retrieved data. The procedure 1100 from 11 can be performed iteratively for multiple commands (eg KVS commands and / or non-KVS commands).

12 zeigt ein Flussdiagramm eines Verfahrens 1200 zur Verarbeitung eines oder mehrerer KVS-Befehle, die von einem Host empfangen wurden. Beispiele für das Verfahren 1200 von 12 sind in den 7-10 veranschaulicht. Der empfangene Befehl ist ein KVS-Befehl, der einen Schlüssel umfasst. Das Verfahren 1200 kann durch ein SSD (z.B. 104, 501) durchgeführt werden. Das Verfahren kann beginnen, nachdem ein Befehl, der einen Schlüssel umfasst, von einem Host empfangen wurde. Das Verfahren kann beginnen, nachdem das Verfahren bestimmte, dass der Befehl, der empfangen wurde, ein KVS-Befehl ist. Der Befehl kann durch eine Hostschnittstelle (z.B. 110) empfangen werden. Das Verfahren führt (bei 1202) eine Hash-Berechnung oder eine Hash-Operation auf einen Schlüssel in dem Befehl, der durch ein SSD empfangen wurde, durch. Die Hash-Operation berechnet einen Hash-Wert basierend auf dem Schlüssel, der den Befehl (z.B. KVS-Befehl) begleitet. Die Hash-Operation kann einen Schlüssel einer beliebigen Größe auf Daten (z.B. Hash-Wert) einer festgelegten Größe abbilden. Die Hash-Operation kann eine Hash-Funktion (z.B. Jenkins-Hash-Funktion) umfassen. Die Hash-Funktion kann verwendet werden, um einen Schlüssel auf eine Schlüsselwertdatenstruktur abzubilden, wobei der Schlüssel mit einer Indexstruktur verwendet werden kann, um auf eine Gruppe (z.B. Behälter) in der Schlüsselwertdatenstruktur zu zeigen, in der eine oder mehrere der Kombinationen aus einem Schlüssel und einem Wert gespeichert sind. Die Anzahl von möglichen Schlüsseln ist typischerweise größer als die Anzahl von Einträgen (z.B. Hash-Werte) in der Indexstruktur. Jeder Eintrag (z.B. Hash-Wert) der Indexstruktur zeigt auf einen spezifischen Ort oder eine Gruppe (z.B. Behälter) von Schlüsselwertdaten (z.B. Kombination aus einem Schlüssel und einem Wert) in der Schlüsselwertdatenstruktur. Beispielsweise kann jeder Eintrag ein Zeiger sein, der eine physikalische Adresse einer Kombination aus einem Schlüssel und einem Wert in der bestimmten Gruppe von Schlüsselwertdaten bereitstellt. Diese physikalische Adresse kann den Ort der bestimmten Gruppe repräsentieren, auch wenn nicht alle Kombinationen aus einem Schlüssel und einem Wert an dieser physikalischen Adresse gespeichert sind. Eine Hash-Funktion kann den gleichen Hash-Wert für unterschiedliche Schlüssel erzeugen. Somit kann ein bestimmter Ort oder eine Gruppe (z.B. Behälter) von Schlüsselwertdaten in der Schlüsselwertdatenstruktur mehr als eine Kombination aus einem Schlüssel und einem Wert speichern. Es wird darauf hingewiesen, dass obwohl die unterschiedlichen Kombinationen aus einem Schlüssel und einem Wert Teil des gleichen Ortes oder der gleichen Gruppe von Schlüsselwertdaten aus der Schlüsselwertdatenstruktur sein können, diese in unterschiedlichen physikalischen Adressen der Speichervorrichtung gespeichert sein können. Eine Gruppe von Schlüsselwertdaten kann leer sein oder eine oder mehrere Kombinationen aus einem Schlüssel und einem Wert umfassen. twelve shows a flowchart of a method 1200 to process one or more KVS commands received from a host. Examples of the procedure 1200 from twelve are in the 7-10 illustrated. The received command is a KVS command that includes a key. The procedure 1200 can by an SSD (eg 104 . 501 ) be performed. The method may begin after a command comprising a key has been received from a host. The method may begin after the method determines that the command that was received is a KVS command. The command may be through a host interface (eg 110 ) are received. The procedure introduces (at 1202 ) hashed or hashed a key in the instruction received by an SSD. The hash operation calculates a hash value based on the key that accompanies the command (eg KVS command). The hash operation can map a key of any size to data (eg, hash value) of a specified size. The hash operation may include a hash function (eg, Jenkins hash function). The hash function may be used to map a key to a key-value data structure, where the key with an index structure may be used to point to a group (eg, bin) in the key-value data structure in which one or more of the combinations of a key and a value are stored. The number of possible keys is typically greater than the number of entries (eg hash values) in the index structure. Each entry (eg hash value) of the index structure points to a specific location or group (eg, container) of key value data (eg, combination of a key and a value) in the key value data structure. For example, each entry may be a pointer that provides a physical address of a combination of a key and a value in the particular group of key-value data. This physical address may represent the location of the particular group, even if not all combinations of a key and a value are stored at this physical address. A hash Function can generate the same hash value for different keys. Thus, a particular location or group (eg, container) of key value data in the key value data structure may store more than one combination of a key and a value. It should be understood that although the different combinations of a key and a value may be part of the same location or group of key-value data from the key-value data structure, they may be stored in different physical addresses of the storage device. A group of key-value data may be empty or comprise one or more combinations of a key and a value.

Das Verfahren identifiziert (bei 1204) einen Eintrag oder eine Gruppe von bzw. aus der Indexstruktur basierend auf der Hash-Operation. Jeder Eintrag oder Gruppe ist mit einem Hash-Wert assoziiert bzw. verbunden. Der identifizierte Eintrag oder die Gruppe kann auf eine Gruppe von Schlüsselwertdaten zeigen, die eine oder mehrere Kombinationen aus einem Schlüssel und einem Wert umfasst. In einigen Ausführungsformen kann die Gruppe von Schlüsselwertdaten leer sein. Das Verfahren identifiziert (bei 1206) eine Gruppe Schlüsselwertdaten basierend auf dem identifizierten Eintrag der Indexstruktur, und greift (bei 1206) auf mindestens eine Kombination aus einem Schlüssel und einem Wert von bzw. aus der identifizierten Gruppe von Schlüsselwertdaten aus der Schlüsselwertdatenstruktur zu. Sobald die Gruppe von Schlüsselwertdaten identifiziert wurde, kann das Verfahren die identifizierte Gruppe von Schlüsselwertdaten verarbeiten, was das Zugreifen auf, das Abrufen von, das Vergleichen von und/oder das Speichern von Schlüsselwertdaten umfasst. Zugreifen auf die mindestens eine Kombination aus einem Schlüssel und einem Wert kann das Lesen und/oder das Schreiben von Daten an einem bestimmten Ort (z.B. physikalische Adresse) des NVM umfassen. Das Verfahren bestimmt (bei 1208, ob der Schlüssel, der mit dem empfangenen Befehl assoziiert bzw. verbunden ist, mit der abgerufenen Kombination aus einem Schlüssel und einem Wert von bzw. aus der identifizierten Gruppe übereinstimmt.The procedure identifies (at 1204 ) an entry or a group of the index structure based on the hash operation. Each entry or group is associated with a hash value. The identified entry or group may point to a group of key-value data comprising one or more combinations of a key and a value. In some embodiments, the group of key value data may be empty. The procedure identifies (at 1206 ) collects a set of key-value data based on the identified entry of the index structure, and intervenes (at 1206 ) to at least one combination of a key and a value from the identified set of key-value data from the key-value data structure. Once the group of key-value data has been identified, the method may process the identified group of key-value data, including accessing, retrieving, comparing, and / or storing key-value data. Accessing the at least one combination of a key and a value may include reading and / or writing data to a particular location (eg, physical address) of the NVM. The method determines (at 1208 whether the key associated with the received command matches the retrieved combination of a key and a value from the identified group.

Wenn die Schlüssel übereinstimmen, fährt das Verfahren dann mit der Lieferung (bei 1212) einer Antwort fort, die einen Wert aus der abgerufenen Kombination aus einem Schlüssel und einem Wert umfasst. In einigen Ausführungsformen kann die Lieferung einer Antwort das Schreiben der Kombination aus einem Schlüssel und einem Wert an einem bestimmten Ort der Schlüsselwertdatenstruktur umfassen. Jedoch bestimmt, wenn die Schlüssel nicht übereinstimmen, das Verfahren (bei 1210), ob es eine andere Kombination aus einem Schlüssel und einem Wert für die identifizierte Gruppe von Schlüsselwertdaten gibt. Wenn das Verfahren bestimmt (bei 1210), dass es keine andere Kombination aus einem Schlüssel und einem Wert für die Gruppe gibt, liefert (bei 1212) das Verfahren eine Antwort, die eine Fehlermeldung und/oder eine Abweichungsmeldung umfasst.If the keys match, then the procedure continues with the delivery (at 1212 ) of a response comprising a value from the retrieved combination of a key and a value. In some embodiments, the delivery of a response may include writing the combination of a key and a value at a particular location of the key-value data structure. However, if the keys do not match, the procedure (at 1210 ), if there is another combination of a key and a value for the identified group of key-value data. If the procedure determines (at 1210 ) that there is no other combination of a key and a value for the group returns (at 1212 ) the method is a response that includes an error message and / or a deviation message.

Wenn das Verfahren bestimmt (bei 1210), dass es eine andere Kombination aus einem Schlüssel und einem Wert für die identifizierte Gruppe von Schlüsselwertdaten gibt, fährt das Verfahren fort zu bestimmen (bei 1208), ob der Schlüssel, der mit dem empfangenen Befehl verbunden bzw. assoziiert ist, mit einem anderen Schlüssel aus der anderen abgerufenen Kombination aus einem Schlüssel und einem Wert von bzw. aus der identifizierten Gruppe von Schlüsselwertdaten übereinstimmt. Das Verfahren 1200 aus 12 kann iterativ für mehrere Befehle durchgeführt werden.If the procedure determines (at 1210 ) that there is another combination of a key and a value for the identified group of key-value data, the method continues to determine (at 1208 ), whether the key associated with the received command matches another key from the other retrieved combination of a key and a value from the identified group of key value data. The procedure 1200 out twelve can be done iteratively for multiple commands.

Während die obige Beschreibung viele spezifische Ausführungsformen der Erfindung enthält, sollen diese nicht als Einschränkung des Schutzumfangs der Erfindung, sondern als Beispiele für spezifische Ausführungsformen davon, aufgefasst werden. Dementsprechend sollte der Schutzumfang der Erfindung nicht durch die dargestellten Ausführungsformen, sondern durch die angehängten Ansprüche und deren Entsprechung bestimmt werden.While the above description includes many specific embodiments of the invention, it should not be construed as limiting the scope of the invention, but as examples of specific embodiments thereof. Accordingly, the scope of the invention should be determined not by the illustrated embodiments, but by the appended claims and their equivalents.

Die verschiedenen oben beschriebenen Merkmale und Verfahren können unabhängig voneinander verwendet oder auf verschiedene Weise kombiniert werden. Alle möglichen Kombinationen und Sub- bzw. Unterkombinationen sollen in den Schutzumfang dieser Offenbarung fallen. Zusätzlich können bestimmte Verfahrens-, Ereignis-, Zustands- oder Verarbeitungsblöcke in einigen Implementierungen weggelassen werden. Die hier beschriebenen Verfahren und Prozesse sind auch nicht auf irgendeine bestimmte Sequenz beschränkt, und die Blöcke oder Zustände, die sich darauf beziehen, können in anderen geeigneten Sequenzen durchgeführt werden. Beispielsweise können beschriebene Aufgaben oder Ereignisse in einer anderen Reihenfolge als der speziell offenbarten durchgeführt werden, oder mehrere können in einem einzigen Block oder Zustand kombiniert werden. Die Beispielaufgaben oder - ereignisse können seriell, parallel oder auf andere geeignete Art durchgeführt werden. Aufgaben oder Ereignisse können zu den offenbarten Ausführungsformen hinzugefügt oder von ihnen entfernt werden. Die hier beschriebenen Beispielsysteme und - komponenten können anders als beschrieben konfiguriert sein. Beispielsweise können Elemente im Vergleich zu den offenbarten beispielhaften Ausführungsformen hinzugefügt, entfernt, oder neu angeordnet werden.The various features and methods described above may be used independently or combined in various ways. All possible combinations and subcombinations are intended to be within the scope of this disclosure. Additionally, certain method, event, state, or processing blocks may be omitted in some implementations. Also, the methods and processes described herein are not limited to any particular sequence, and the blocks or states relating thereto may be performed in other suitable sequences. For example, described tasks or events may be performed in a different order than specifically disclosed, or multiple may be combined into a single block or state. The example tasks or events may be performed serially, in parallel, or in any other suitable manner. Tasks or events may be added to or removed from the disclosed embodiments. The example systems and components described herein may be configured differently than described. For example, elements may be added, removed, or rearranged as compared to the disclosed exemplary embodiments.

ZITATE ENTHALTEN IN DER BESCHREIBUNG QUOTES INCLUDE IN THE DESCRIPTION

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.This list of the documents listed by the applicant has been generated automatically and is included solely for the better information of the reader. The list is not part of the German patent or utility model application. The DPMA assumes no liability for any errors or omissions.

Zitierte PatentliteraturCited patent literature

  • US 62/519094 [0001]US 62/519094 [0001]

Claims (22)

Solid-State-Device (SSD), das umfasst: einen nichtflüchtigen Speicher (NVM) der dazu konfiguriert ist, eine Schlüsselwertdatenstruktur zu speichern; und einen Schlüsselwertspeicher(KVS)-Prozessor, der dazu konfiguriert ist: einen Schlüsselwertspeicher(KVS)-Befehl von einem Host bzw. einem Hauptcomputer zu empfangen; eine Schlüsselwertspeicher(KVS)-Operation auf die Schlüsselwertdatenstruktur basierend auf dem empfangenen KVS-Befehl durchzuführen; und eine Antwort an den Host basierend auf der KVS-Operation zu liefern bzw. bereitzustellen.Solid state device (SSD), which includes: a nonvolatile memory (NVM) configured to store a key value data structure; and a key-value memory (KVS) processor configured to: receive a key value store (KVS) command from a host or host computer; perform a key value memory (KVS) operation on the key value data structure based on the received KVS instruction; and to provide a response to the host based on the KVS operation. SSD nach Anspruch 1, wobei der KVS-Befehl aus der Gruppe bestehend aus einem Get- bzw. Erhalte-Befehl, einem Put- bzw. Ausgabe-Befehl und einem Delete- bzw. Lösch-Befehl ausgewählt wird.SSD after Claim 1 wherein the KVS command is selected from the group consisting of a Get command, a Put command, and a Delete command. SSD nach Anspruch 1, wobei die Schlüsselwertspeicher(KVS)-Operation das Verwenden einer Indexstruktur zur Verarbeitung der Schlüsselwertdatenstruktur basierend auf dem empfangenen KVS-Befehl umfasst.SSD after Claim 1 wherein the key value memory (KVS) operation comprises using an index structure to process the key value data structure based on the received KVS instruction. SSD nach Anspruch 1, das ferner umfasst: einen Prozessor, der mit dem NVM gekoppelt ist; und eine Brücke, die dazu konfiguriert ist: einen Befehl von dem Host zu empfangen; den Befehl an den KVS-Prozessor zu senden, wenn der Befehl der KVS-Befehl ist; und den Befehl an den Prozessor zu senden, wenn der Befehl ein Nicht-KVS-Befehl ist.SSD after Claim 1 further comprising: a processor coupled to the NVM; and a bridge configured to: receive a command from the host; send the command to the KVS processor if the command is the KVS command; and send the command to the processor if the command is a non-KVS command. SSD nach Anspruch 1, wobei die Durchführung der KVS-Operation die Durchführung eines Get- bzw. Erhalte-Befehls umfasst, wobei die Durchführung des Erhalte-Befehls umfasst: Erzeugen eines Hash-Wertes basierend auf dem KVS-Befehl, wobei der KVS-Befehl eine Anfrage für einen bestimmten Wert, der mit einem bestimmten Schlüssel assoziiert bzw. verbunden ist, umfasst; Identifizieren eines bestimmten Orts in der Schlüsselwertdatenstruktur unter Verwendung des Hash-Wertes und einer Indexstruktur; und Abrufen von mindestens einer Kombination aus einem gespeicherten Schlüssel und einem gespeicherten Wert aus bzw. von dem bestimmten Ort in der Schlüsselwertdatenstruktur.SSD after Claim 1 wherein performing the KVS operation comprises performing a get command, the performing of the get command comprising: generating a hash value based on the KVS command, the KVS command requesting for a certain value associated with a particular key; Identifying a particular location in the key-value data structure using the hash value and an index structure; and retrieving at least one combination of a stored key and a stored value from the particular location in the key value data structure. SSD nach Anspruch 5, wobei die Bereitstellung bzw. Lieferung der Antwort an den Host die Bereitstellung des gespeicherten Werts, der mit dem gespeicherten Schlüssel assoziiert bzw. verbunden ist, umfasst.SSD after Claim 5 wherein providing the response to the host comprises providing the stored value associated with the stored key. SSD nach Anspruch 5, wobei der bestimmte Ort in der Schlüsselwertdatenstruktur eine Vielzahl von Kombinationen von gespeicherten Schlüsseln und gespeicherten Werten speichert, wobei der bestimmte Ort eine Vielzahl von physikalischen Adressen umfasst.SSD after Claim 5 wherein the particular location in the key value data structure stores a plurality of combinations of stored keys and stored values, the particular location comprising a plurality of physical addresses. SSD nach Anspruch 7, wobei die Durchführung der KVS-Operation ferner den iterativen Vergleich jeder Kombination aus gespeichertem Schlüssel und gespeichertem Wert an bzw. in dem bestimmten Ort der Schlüsselwertdatenstruktur umfasst, bis ein bestimmter gespeicherter Schlüssel mit dem bestimmten Schlüssel aus dem KVS-Befehl übereinstimmt.SSD after Claim 7 wherein performing the KVS operation further comprises iteratively comparing each stored key and stored value combination at the particular location of the key value data structure until a particular stored key matches the particular key from the KVS instruction. SSD nach Anspruch 1, das ferner einen Befehlsplaner umfasst, der dazu konfiguriert ist, eine Vielzahl von empfangenen KVS-Befehlen in einer bestimmten Ordnung bzw. Reihenfolge zu planen, die von dem KVS-Prozessor verarbeitet werden sollen.SSD after Claim 1 and further comprising a command scheduler configured to schedule a plurality of received KVS commands in a particular order to be processed by the KVS processor. SSD nach Anspruch 1, das ferner eine Hash-Steuerung umfasst, die dazu konfiguriert ist, eine oder mehr Hash-Operationen der empfangenen KVS-Befehle durchzuführen.SSD after Claim 1 further comprising a hash controller configured to perform one or more hash operations of the received KVS instructions. Verfahren zum Betrieb eines Solid-State-Device (SSD), das umfasst: Speichern einer Schlüsselwertdatenstruktur in bzw. auf einem nichtflüchtigen Speicher (NVM); Empfangen eines Schlüsselwertspeicher(KVS)-Befehls von einem Host; Identifizieren eines Eintrags einer Indexstruktur basierend auf dem empfangenen KVS-Befehl auf bzw. in dem SSD; Identifizieren einer Gruppe von Schlüsselwertdaten von bzw. aus der Schlüsselwertdatenstruktur basierend auf dem identifizierten Eintrag; Verarbeiten einer oder mehrere Schlüsselwertdaten aus bzw. von der identifizierten Gruppe von Schlüsselwertdaten basierend auf dem empfangenen KVS-Befehl auf bzw. in dem SSD; und Bereitstellen bzw. Liefern einer Antwort an den Host basierend auf der Verarbeitung der einen oder mehreren Schlüsselwertdaten.Method of operating a solid-state device (SSD) comprising: Storing a key-value data structure in nonvolatile memory (NVM); Receiving a key value store (KVS) command from a host; Identifying an entry of an index structure based on the received KVS instruction on the SSD; Identifying a group of key-value data from the key-value data structure based on the identified entry; Processing one or more key-value data from the identified group of key-value data based on the received KVS command on the SSD; and Providing a response to the host based on the processing of the one or more key-value data. Verfahren nach Anspruch 11, wobei der KVS-Befehl aus der Gruppe bestehend aus einem Get- bzw. Erhalte-Befehl, einem Put- bzw. Ausgabe-Befehl und einem Delete- bzw. Lösch-Befehl ausgewählt wird.Method according to Claim 11 wherein the KVS command is selected from the group consisting of a Get command, a Put command, and a Delete command. Verfahren nach Anspruch 11, wobei das Identifizieren des Eintrags der Indexstruktur das Erzeugen eines Hash-Wertes basierend auf dem empfangenen KVS-Befehl auf bzw. in dem SSD umfasst.Method according to Claim 11 wherein identifying the entry of the index structure comprises generating a hash value based on the received KVS instruction on the SSD. Verfahren nach Anspruch 11, wobei das Empfangen des KVS-Befehls umfasst: Empfangen eines Befehls von dem Host auf bzw. in der Brücke des SSD; Senden des Befehls an einen KVS-Prozessor des SSD, wenn der Befehl der KVS-Befehl ist; und Senden des Befehls an einen Prozessor des SSD, wenn der Befehl ein Nicht-KVS-Befehl ist.Method according to Claim 11 wherein receiving the KVS instruction comprises: receiving a command from the host on the bridge of the SSD; Sending the command to a KVS processor of the SSD if the command is the KVS command; and sending the command to a processor of the SSD if the command is a non-KVS command. Verfahren nach Anspruch 11, das ferner das Erzeugen eines Hash-Wertes basierend auf dem KVS-Befehl umfasst, wobei der KVS-Befehl eine Anfrage für einen bestimmten Wert, der mit einem bestimmten Schlüssel verbunden bzw. assoziiert ist, umfasst, wobei das Identifizieren der Gruppe von Schlüsselwertdaten das Identifizieren eines bestimmten Ortes in der Schlüsselwertdatenstruktur umfasst; und wobei das Verarbeiten der einen oder mehreren Schlüsselwertdaten das Abrufen von mindestens einer Kombination aus gespeichertem Schlüssel und gespeichertem Wert in bzw. an dem bestimmten Ort in der Schlüsselwertdatenstruktur umfasst.Method according to Claim 11 further comprising generating a hash value based on the KVS instruction, the KVS instruction comprising a request for a particular value associated with a particular key, wherein identifying the group of key value data comprises Identifying a particular location in the key-value data structure comprises; and wherein processing the one or more key value data comprises retrieving at least one combination of stored key and stored value in the particular location in the key value data structure. Verfahren nach Anspruch 15, wobei das Bereitstellen bzw. Liefern der Antwort an den Host das Bereitstellen des gespeicherten Werts, der mit dem gespeicherten Schlüssel assoziiert bzw. verbunden ist, umfasst.Method according to Claim 15 wherein providing the response to the host comprises providing the stored value associated with the stored key. Verfahren nach Anspruch 15, wobei das Verarbeiten einer oder mehrerer Schlüsselwertdaten den iterativen Vergleich jeder Kombination aus gespeichertem Schlüssel und gespeichertem Wert in bzw. an einer Vielzahl von Orten in der Schlüsselwertdatenstruktur umfasst, bis ein bestimmter gespeicherter Schlüssel mit dem bestimmten Schlüssel des KVS-Befehls übereinstimmt.Method according to Claim 15 wherein processing one or more key value data comprises iteratively comparing each stored key value and stored value combination in a plurality of locations in the key value data structure until a particular stored key matches the particular key of the KVS command. Verfahren nach Anspruch 11, das ferner das Erzeugen eines Hash-Wertes basierend auf dem KVS-Befehl umfasst, wobei der KVS-Befehl eine Anfrage zur Speicherung eines bestimmten Wertes mit einem bestimmten Schlüssel umfasst; wobei das Identifizieren der Gruppe von Schlüsselwertdaten das Identifizieren eines bestimmten Ortes in der Schlüsselwertdatenstruktur umfasst; und wobei das Verarbeiten der einen oder mehreren Schlüsselwertdaten das Speichern der bestimmten Schlüssel- und der bestimmten Wertkombination in bzw. an dem bestimmten Ort in der Schlüsselwertdatenstruktur umfasst.Method according to Claim 11 further comprising generating a hash value based on the KVS instruction, the KVS instruction including a request to store a particular value with a particular key; wherein identifying the group of key value data comprises identifying a particular location in the key value data structure; and wherein processing the one or more key value data comprises storing the determined key and the particular combination of values in the particular location in the key value data structure. Verfahren nach Anspruch 11, das ferner das Erzeugen eines Hash-Wertes basierend auf dem KVS-Befehl umfasst, wobei der KVS-Befehl eine Anfrage zum Löschen eines bestimmten Wertes mit einem bestimmten Schlüssel umfasst; wobei das Identifizieren der Gruppe von Schlüsselwertdaten das Identifizieren eines bestimmten Orts in der Schlüsselwertdatenstruktur umfasst; und wobei das Verarbeiten der einen oder mehreren Schlüsselwertdaten das Löschen eines Zeigers, der auf einen bestimmten Ort zeigt, in dem die Kombination aus dem bestimmten Schlüssel und dem bestimmten Wert gespeichert ist, umfasst.Method according to Claim 11 further comprising generating a hash value based on the KVS instruction, the KVS instruction including a request to delete a particular value with a particular key; wherein identifying the group of key value data comprises identifying a particular location in the key value data structure; and wherein processing the one or more key value data comprises deleting a pointer pointing to a particular location in which the combination of the particular key and the particular value is stored. Vorrichtung zum Betrieb eines Solid-State-Device (SSD), die umfasst: Mittel zur nichtflüchtigen Speicherung einer Schlüsselwertdatenstruktur; und Mittel zur Schlüsselwertspeicher(KVS)-Verarbeitung, die umfassen: Mittel zum Empfangen eines Schlüsselwertspeicher(KVS)-Befehls von einem Host; Mittel zur Durchführung einer Schlüsselwertspeicher(KVS)-Operation auf die Schlüsselwertdatenstruktur basierend auf dem empfangenen KVS-Befehl, wobei die Mittel zur Durchführung der Schlüsselwertspeicher(KVS)-Operation das Erzeugen eines Hash-Wertes basierend auf dem empfangenen KVS-Befehls umfassen; und Mittel zur Bereitstellung bzw. Lieferung einer Antwort an den Host basierend auf der KVS-Operation.Device for operating a solid-state device (SSD), comprising: Means for non-volatile storage of a key-value data structure; and Key value memory (KVS) processing means comprising: Means for receiving a key value store (KVS) command from a host; Means for performing a key value memory (KVS) operation on the key value data structure based on the received KVS command, the means for performing the key value memory (KVS) operation comprising generating a hash value based on the received KVS command; and Means for providing or providing a response to the host based on the KVS operation. Vorrichtung nach Anspruch 20; wobei der KVS-Befehl aus der Gruppe bestehend aus einem Get- bzw. Erhalte-Befehl, einem Put- bzw. Ausgabe-Befehl und einem Delete- bzw. Lösch-Befehl ausgewählt wird.Device after Claim 20 ; wherein the KVS command is selected from the group consisting of a Get command, a Put command and a Delete command. Vorrichtung nach Anspruch 20, wobei die Mittel zur Durchführung der Schlüsselwertspeicher(KVS)-Operation das Verwenden einer Indexstruktur zur Verarbeitung der Schlüsselwertdatenstruktur basierend auf dem empfangenen KVS-Befehl umfassen.Device after Claim 20 wherein the means for performing the key value memory (KVS) operation comprises using an index structure to process the key value data structure based on the received KVS instruction.
DE102018113885.7A 2017-06-13 2018-06-11 Memory-efficient persistent key-value memory for non-volatile memory Pending DE102018113885A1 (en)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201762519094P 2017-06-13 2017-06-13
US62/519,094 2017-06-13
US15/996,266 US10649969B2 (en) 2017-06-13 2018-06-01 Memory efficient persistent key-value store for non-volatile memories
US15/996,266 2018-06-01

Publications (1)

Publication Number Publication Date
DE102018113885A1 true DE102018113885A1 (en) 2018-12-13

Family

ID=64332647

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102018113885.7A Pending DE102018113885A1 (en) 2017-06-13 2018-06-11 Memory-efficient persistent key-value memory for non-volatile memory

Country Status (1)

Country Link
DE (1) DE102018113885A1 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190034427A1 (en) * 2017-12-28 2019-01-31 Intel Corporation Data management system employing a hash-based and tree-based key-value data structure
WO2024041140A1 (en) * 2022-08-23 2024-02-29 华为技术有限公司 Data processing method, accelerator, and computing device

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190034427A1 (en) * 2017-12-28 2019-01-31 Intel Corporation Data management system employing a hash-based and tree-based key-value data structure
WO2024041140A1 (en) * 2022-08-23 2024-02-29 华为技术有限公司 Data processing method, accelerator, and computing device

Similar Documents

Publication Publication Date Title
US10649969B2 (en) Memory efficient persistent key-value store for non-volatile memories
DE102020106971A1 (en) DATA WRITE MANAGEMENT IN NON-VOLATILE MEMORY
DE112016001075B4 (en) DISTRIBUTED STORAGE AND RETRIEVEMENT OF DATA SETS
DE60035151T2 (en) Hardware arrangement for managing cache structures in a data storage system
DE102019132371A1 (en) Map management logically to physically using non-volatile memory
DE112017002941T5 (en) Workload-optimized data deduplication using phantom fingerprints
DE102017128939A1 (en) System and method for dynamically and adaptively merging interrupts
DE112015004536T5 (en) Hardware automation for storage management
DE102017120787A1 (en) Method and apparatus for unloading data processing in hybrid storage devices
DE112018000233T5 (en) System and method for processing and arbitrating delivery and completion queues
DE112018005869T5 (en) STRUCTURE ADAPTATION OF A NAME SPACE ASSIGNMENT IN NON-VOLATILE STORAGE DEVICES
DE102011076894B9 (en) Persistent storage for a main memory of a processor
DE102017128952A1 (en) A data storage device configured to perform a non-blocking control update operation
DE112017005890T5 (en) Retrieve data buffer pointers for direct memory access
DE112018004256T5 (en) REDUNDANCY CODE STRIPS BASED ON INTERNAL ADDRESSES OF STORAGE DEVICES
DE202010017613U1 (en) Data storage device with host-controlled garbage collection
DE102010044531B4 (en) Autonomous storage architecture
DE112017005868T5 (en) MANAGING I / O FLOWS FOR DATA OBJECTS IN A STORAGE SYSTEM
DE112012005222T5 (en) Semiconductor data storage management
DE102013016609A1 (en) Apparatus and method for a low energy, low latency and high capacity storage class memory
DE102019102276A1 (en) MEMORY DEVICE PROVIDED ON A NETWORK STRUCTURE, AND METHOD FOR MAINTAINING A MANAGEMENT THEREFOR
DE112012004209T5 (en) Dynamically set threshold to allocate a secondary cache
DE112012002452T5 (en) Adaptive caching of data sets for semiconductor boards
DE112017005782T5 (en) Queue for storage operations
DE112015003536T5 (en) Host administrator non-volatile memory

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