DE102019113048A1 - Rechen-abladung in blockspeicherung unter verwendung virtueller objekte - Google Patents

Rechen-abladung in blockspeicherung unter verwendung virtueller objekte Download PDF

Info

Publication number
DE102019113048A1
DE102019113048A1 DE102019113048.4A DE102019113048A DE102019113048A1 DE 102019113048 A1 DE102019113048 A1 DE 102019113048A1 DE 102019113048 A DE102019113048 A DE 102019113048A DE 102019113048 A1 DE102019113048 A1 DE 102019113048A1
Authority
DE
Germany
Prior art keywords
block
compute
descriptor
unload
storage device
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
DE102019113048.4A
Other languages
English (en)
Inventor
Michael Mesnier
Dave Minturn
John Keys
Ian Adams
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.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE102019113048A1 publication Critical patent/DE102019113048A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • G06F3/0641De-duplication techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0667Virtualisation aspects at data level, e.g. file, record or object virtualisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

Ausführungsformen der vorliegenden Offenbarung können eine Rechen-Abladesteuerung betreffen, die einen Parser zum Analysieren eines empfangenen Rechen-Abladebefehls und Identifizieren eines Rechen-Deskriptors auf Blockbasis mindestens teilweise auf der Basis des Rechen-Abladebefehls umfassen kann. Bei einigen Ausführungsformen kann die Rechen-Abladesteuerung ferner einen Ablade-Ausführer zum Ausführen einer Operation an Daten in einer Speicherungsvorrichtung auf Blockbasis mindestens teilweise auf der Basis des Rechen-Deskriptors auf Blockbasis umfassen. Bei einigen Ausführungsformen kann der Rechen-Deskriptor auf Blockbasis ein virtuelles Eingabeobjekt, ein virtuelles Ausgabeobjekt und eine Rechentypkennung umfassen. Es können andere Ausführungsformen beschrieben und/oder beansprucht werden.

Description

  • Technisches Gebiet
  • Ausführungsformen der vorliegenden Offenbarung betreffen allgemein das Gebiet der Computer-Datenspeicherungsvorrichtungen und insbesondere Vorrichtungen und Techniken, die Rechen-Beschleunigung für nichtflüchtigen Speicher auf Blockbasis bereitstellen.
  • Stand der Technik
  • In Computersystemen können Daten in Speicherung auf Blockbasis, wie etwa nichtflüchtigem Speicher (NVM) in einem Halbleiterlaufwerk (SSD) entweder lokal oder über ein Netzwerk gespeichert werden. Der NVM kann ein NAND-Flash-Speicher oder eine beliebige andere geeignete Form von stabiler, persistenter Speicherung sein. Mit zunehmender Kapazität und interner Geschwindigkeit von SSD wird der NVM typischerweise durch die Geschwindigkeit der Eingabe-/Ausgabe- bzw. E/A-Steuerungen begrenzt, an die er angeschlossen ist, und/oder durch die verfügbare Bandbreite über einen lokalen Bus oder eine Netzwerkverbindung. Es wurden verschiedene Formen von Rechnung in Speicherung versucht, um E/A-Engpässe zu verringern. Solche veralteten Ansätze der Rechnung in Speicherung zur Behandlung von E/A-Beschränkungen sind mindestens insofern problematisch, als sie einen Ansatz auf Objektbasis oder Schlüsselwertansatzbasis verwenden, der für viele Anwendungen ungeeignet sein kann, die Blockspeicherung verwenden und/oder erfordern können, dass ein Dateisystem auf Objektbasis auf einem Host vorliegt. Andere veraltete Ansätze der Rechnung in Speicherung zur Behandlung dieser Beschränkung sind mindestens insofern problematisch, als sie komplexe Zustandsverfolgungsprotokolle einführen, die mehrere Durchläufe zwischen einem Host und einem Ziel zur Einleitung von zielseitiger Berechnung erfordern und/oder erfordern, dass Anwendungen über direkten Zugriff auf Blockspeicherung verfügen.
  • Figurenliste
  • Durch die folgende ausführliche Beschreibung in Verbindung mit den beigefügten Zeichnungen werden Ausführungsformen ohne Weiteres verständlich. Um die vorliegende Beschreibung zu erleichtern, bezeichnen gleiche Bezugszahlen gleiche Strukturelemente.
  • Ausführungsformen werden in den Figuren der beigefügten Zeichnungen anhand von Beispielen und nicht zur Beschränkung veranschaulicht.
    • 1 zeigt eine Blockdarstellung eines Computersystems, das einen Host und eine Blockspeicherungsvorrichtung umfasst, gemäß verschiedenen Ausführungsformen.
    • 2 ist ein Flussdiagramm einer Technik zum Abladen von Rechenoperationen auf eine Blockspeicherungsvorrichtung gemäß verschiedenen Ausführungsformen.
    • 3 ist ein Flussdiagramm einer Technik zum Ausführen von abgeladenen Rechenoperationen mit einer Blockspeicherungsvorrichtung gemäß verschiedenen Ausführungsformen.
    • 4 zeigt schematisch eine beispielhafte Datenverarbeitungsvorrichtung, die eine Blockspeicherungsvorrichtung mit einem Controller nichtflüchtigen Speichers wie hier beschrieben umfasst, gemäß verschiedenen Ausführungsformen.
    • 5 zeigt ein beispielhaftes Speicherungsmedium mit Anweisungen, die dafür ausgelegt sind, es einer Vorrichtung zu ermöglichen, verschiedene Aspekte der vorliegenden Offenbarung zu praktizieren, gemäß verschiedenen Ausführungsformen.
  • Ausführliche Beschreibung
  • Ausführungsformen der vorliegenden Offenbarung können einen Rechen-Abladecontroller betreffen, der eine Analyselogik zum Analysieren eines empfangenen Rechen-Abladebefehls und Identifizieren eines Rechen-Deskriptors auf Blockbasis mindestens teilweise auf der Basis des Rechen-Abladebefehls umfassen kann. Bei einigen Ausführungsformen kann der Rechen-Abladecontroller ferner eine Rechenlogik zum Ausführen einer Operation an Daten in einer auf Blöcken basierenden Speicherungsvorrichtung mindestens teilweise auf der Basis des Rechen-Deskriptors auf Blockbasis umfassen. Bei einigen Ausführungsformen kann der Rechen-Deskriptor auf Blockbasis ein virtuelles Eingabeobjekt, ein virtuelles Ausgabeobjekt und eine Rechentypkennung umfassen.
  • In der folgenden Beschreibung werden verschiedene Aspekte der beispielhaften Implementierungen unter Verwendung von Begriffen beschrieben, die von Fachleuten üblicherweise verwendet werden, um anderen Fachleuten das Wesentliche ihrer Arbeit zu vermitteln. Für Fachleute ist jedoch erkennbar, dass Ausführungsformen der vorliegenden Offenbarung ohne einige der beschriebenen Aspekte praktiziert werden können. Zur Erläuterung werden spezifische Zahlen, Materialien und Konfigurationen dargelegt, um ein umfassendes Verständnis der beispielhaften Implementierungen zu gewährleisten. Für Fachleute ist erkennbar, dass Ausführungsformen der vorliegenden Offenbarung ohne die spezifischen Details praktiziert werden können. In anderen Fällen werden wohlbekannte Merkmale weggelassen oder vereinfacht, um die beispielhaften Implementierungen nicht zu verschleiern.
  • In der folgenden ausführlichen Beschreibung wird auf die beigefügten Zeichnungen verwiesen, die einen Teil hiervon bilden, wobei gleiche Bezugszahlen durchweg gleiche Teile bezeichnen und in denen zur Veranschaulichung Ausführungsformen gezeigt sind, in denen der Gegenstand der vorliegenden Offenbarung praktiziert werden kann. Es versteht sich, dass andere Ausführungsformen benutzt und strukturelle oder logische Änderungen vorgenommen werden können, ohne vom Schutzumfang der vorliegenden Offenbarung abzuweichen. Die folgende ausführliche Beschreibung ist deshalb nicht im einschränkenden Sinne aufzufassen, und der Schutzumfang von Ausführungsformen wird durch die angefügten Ansprüche und ihre Äquivalente definiert.
  • Für die Zwecke der vorliegenden Offenbarung bedeutet der Ausdruck „A und/oder B“ (A), (B) oder (A und B). Für die Zwecke der vorliegenden Offenbarung bedeutet der Ausdruck „A, B und/oder C“ (A), (B), (C), (A und B), (A und C), (B und C) oder (A, B und C).
  • Die Beschreibung kann die Ausdrücke „bei einer Ausführungsform“ oder „bei Ausführungsformen“ verwenden, die sich jeweils auf eine oder mehrere derselben oder verschiedene Ausführungsformen beziehen können. Ferner sind die Ausdrücke „umfassend“, „enthaltend“, „aufweisend“ und dergleichen, so wie sie mit Bezug auf Ausführungsformen der vorliegenden Offenbarung verwendet werden, gleichbedeutend.
  • Es kann hier der Ausdruck „gekoppelt mit“ zusammen mit seinen Ableitungen verwendet werden. „Gekoppelt“ kann eines oder mehrere von Folgendem bedeuten. „Gekoppelt“ kann bedeuten, dass zwei oder mehr Elemente sich in direktem physischen oder elektrischen Kontakt befinden. „Gekoppelt“ kann jedoch auch bedeuten, dass zwei oder mehr Elemente einander indirekt kontaktieren, aber immer noch miteinander kooperieren oder interagieren, und kann bedeuten, dass ein oder mehrere andere Elemente zwischen die Elemente, die als miteinander gekoppelt bezeichnet werden, gekoppelt oder geschaltet sind. Der Ausdruck „direkt gekoppelt“ kann bedeuten, dass sich zwei oder mehr Elemente in direktem Kontakt befinden.
  • Im vorliegenden Gebrauch kann sich der Ausdruck „Modul“ auf eine anwendungsspezifische integrierte Schaltung (ASIC), eine elektronische Schaltung, einen Prozessor (geteilt, dediziert oder gruppiert) und/oder Speicher (geteilt, dediziert oder gruppiert) beziehen, die ein oder mehrere Software- oder Firmwareprogramme ausführen, auf eine kombinatorische Logikschaltung und/oder andere geeignete Komponenten, die die beschriebene Funktionalität bereitstellen, ein Teil davon sein oder diese enthalten.
  • 1 ist eine Blockdarstellung eines Computersystems 100, das einen Host 102 und eine Blockspeicherungsvorrichtung 104 (z. B. eine Speicherungsvorrichtung auf Blockbasis wie ein SSD, ein Speicherungsserver auf Blockbasis oder eine beliebige andere Speicherungsvorrichtung auf Blockbasis) umfassen kann, gemäß verschiedenen Ausführungsformen. Bei einigen Ausführungsformen kann der Host 102 einen mit einem Speicher 108 gekoppelten Prozessor 106 umfassen. Bei verschiedenen Ausführungsformen kann ein Datenverarbeitungsprozess 110 auf dem Host 102 laufen (z. B. durch den Prozessor 106 in dem Speicher 108). Bei einigen Ausführungsformen kann der Datenverarbeitungsprozess 110 eine Anwendung, eine Speicherungs-Middleware, ein Software-Speicherungsstapel, ein Betriebssystem oder ein beliebiger anderer geeigneter Datenverarbeitungsprozess sein. Bei verschiedenen Ausführungsformen kann der Host 102 ferner einen Rechen-Ablader 112 umfassen, der Client-Abladelogik 114 und einen Initiator 116 umfassen kann. Bei einigen Ausführungsformen kann die Blockspeicherungsvorrichtung 104 als Speicherungsziel oder rechenbefähigtes Speicherungsziel bezeichnet werden. Bei einigen Ausführungsformen wird die Client-Abladelogik 114 als Client-Ablader bezeichnet.
  • Bei einigen Ausführungsformen kann der Datenverarbeitungsprozess 110 eine Rechen-Abladeanforderung zu dem Rechen-Ablader 112 senden. Bei verschiedenen Ausführungsformen kann die Rechen-Abladeanforderung ein Objekt auf höherer Ebene (z. B. eine Datei) und eine gewünschte Operation (z. B. eine Hash-Funktion, wie etwa eine MD5-Operation) spezifizieren. Bei einigen Ausführungsformen kann die Client-Abladelogik 114 mindestens teilweise auf der Basis der Anforderung einen Rechen-Deskriptor 130 auf Blockbasis konstruieren und kann den Rechen-Deskriptor 130 auf Blockbasis in einen Rechen-Abladebefehl 132 packen. Bei einigen Ausführungsformen kann der Rechen-Abladebefehl 132 ein vertreiberspezifischer Befehl sein, der Metadaten auf Blockbasis (z. B. als Teil des Rechen-Deskriptors 130 auf Blockbasis) enthalten kann. Bei einigen Ausführungsformen kann die Client-Abladelogik 114 mindestens teilweise auf der Basis des durch die Rechen-Abladeanforderung spezifizierten Objekts auf höherer Ebene ein virtuelles Eingabeobjekt 134 erzeugen. Bei einigen Ausführungsformen kann die Client-Abladelogik 114 eine Liste eines oder mehrerer Blöcke dementsprechend, wo das Objekt auf höherer Ebene in der Speicherung auf Blockbasis (z. B. NVM) gespeichert wird, zur Erzeugung des virtuellen Eingabeobjekts 134 bestimmen.
  • Bei verschiedenen Ausführungsformen kann der Rechen-Deskriptor 130 auf Blockbasis die Speicherungsblöcke (die z. B. durch virtuelle Objekte abgebildet werden), die zur Berechnung einzugeben und/oder auszugeben sind, eine auszuführende Funktion 138 (z. B. eine durch eine Rechentypkennung oder einen Operationscode identifizierte angeforderte Rechenoperation) und etwaige zusätzliche Argumente 140 für die Funktion 138 (z. B. eine Suchzeichenkette) beschreiben. Bei verschiedenen Ausführungsformen können die zusätzlichen Argumente 140 auch als Parameter bezeichnet werden. Bei einigen Ausführungsformen kann der Rechen-Ablader 112 eine Client-Abladebibliothek 115 umfassen, die durch die Client-Abladelogik 114 bei der Erzeugung des Rechen-Deskriptors 130 auf Blockbasis verwendet werden kann. Bei einigen Ausführungsformen kann die Client-Abladebibliothek 115 nicht anwesend sein und/oder einige oder alle Aspekte der Client-Abladebibliothek 115 können in der Client-Abladelogik 114 (z. B. in einem ASIC) enthalten sein. Bei verschiedenen Ausführungsformen kann die Client-Abladelogik 114 virtuelle Eingabeobjekte 134 und/oder virtuelle Ausgabeobjekte 136 (z. B. Listen von Blockausmaßen und Objektlängen) erzeugen und kann für die mit diesen virtuellen Objekten auszuführende gewünschte Operation einen Operationscode zuweisen. Bei verschiedenen Ausführungsformen kann der Rechen-Abladebefehl 132 mit dem Rechen-Deskriptor 130 auf Blockbasis alle Informationen enthalten, die notwendig sind, um Berechnung gegenüber virtuellen Objekten (z. B. dem virtuellen Eingabeobjekt 134) in der Blockspeicherungsvorrichtung 104 einzuteilen. Bei verschiedenen Ausführungsformen kann der Rechen-Deskriptor 130 auf Blockbasis Rechen-Operationen auf Blockbasis auf protokollagnostische Weise beschreiben, die für jede Speicherungsvorrichtung auf Blockbasis oder jedes System funktionieren kann. Bei verschiedenen Ausführungsformen kann das virtuelle Eingabeobjekt 134 eine erste Menge von Metadaten umfassen, die das virtuelle Eingabeobjekt 134 auf ein reales Eingabeobjekt (z. B. eine Datei) abbilden. Bei verschiedenen Ausführungsformen kann die erste Menge von Metadaten eine Größe des realen Eingabeobjekts, eine Liste von das reale Eingabeobjekt zusammensetzenden Blöcken und/oder beliebige andere Metadaten, die das reale Eingabeobjekt beschreiben, umfassen. Bei einigen Ausführungsformen kann das virtuelle Ausgabeobjekt 136 eine zweite Menge von Metadaten umfassen, die das virtuelle Ausgabeobjekt 136 auf ein reales Ausgabeobjekt abbilden.
  • Verschiedene Ausführungsformen können vielzweckige, auf Dateien basierende Berechnung in Speicherung auf Blockbasis ausführen und/oder den gesamten Ausführungskontext in einem einzigen E/A-Befehl (z. B. Rechen-Abladebefehl 132) ausführen, wodurch gegenüber herkömmlichen Ansätzen, die mehrere Durchläufe zwischen (z. B. Kommunikation zwischen) dem Host und dem Ziel erfordern, um zielseitige Berechnung einzuleiten, und/oder herkömmlichen Ansätzen, die ein Scheduling-Overhead aufweisen, das mit der Anzahl von Blöcken in einer Datei (z. B. linear) wächst, Leistungsfähigkeitsvorteile bereitgestellt werden können. Durch Führen des gesamten Ausführungskontexts in einem einzigen E/A-Befehl können verschiedene Ausführungsformen gegenüber herkömmlichen Ansätzen, die programmierbare Filter verwenden, die über Lese-Operationen persistieren und/oder getrennte Initialisierungs- und Finalisierungsbefehle (z. B. Einführen von Zustandsverfolgungsoverhead in SSD-Operationen) erfordern, Vorteile bereitstellen. Einige Ausführungsformen können die Einführung eines Dateisystems auf Objektbasis an beliebiger Stelle auf dem Host nicht erfordern, wodurch verglichen mit herkömmlichen Ansätzen die Komplexität verringert werden kann. Einige Ausführungsformen können eine Vielzwecklösung bereitstellen, die für Verwendung mit einem beliebigen Dateisystem geeignet sein kann, und können mit Speicherungsstapeln auf Objektbasis funktionieren, im Gegensatz zu einigen herkömmlichen Ansätzen, die erfordern, dass Anwendungen über direkten Zugriff auf Blockspeicherung verfügen, und/oder die nicht für Verwendung mit einem Dateisystem geeignet sind.
  • Bei einigen Ausführungsformen kann der Initiator 116 den Rechen-Abladebefehl 132, der den Rechen-Deskriptor 130 auf Blockbasis umfasst, über eine Verbindung 118 zu der Blockspeicherungsvorrichtung 104 übermitteln. Bei einigen Ausführungsformen kann die Verbindung 118 ein Transportfeld sein, wie etwa eine iSCSI-Schnittstelle (Internet Small Computer System Interface), eine NVMeOF-Schnittstelle (NVM Express Over Fabrics) oder ein beliebiges anderes geeignetes Transportfeld. Bei anderen Ausführungsformen kann die Verbindung 118 eine lokale Busschnittstelle sein, wie etwa eine PCIe-Schnittstelle (Peripheral Component Interconnect Express) oder eine beliebige andere geeignete Schnittstelle.
  • Bei verschiedenen Ausführungsformen kann die Blockspeicherungsvorrichtung 104 NVM 120 und eine Rechen-Abladesteuerung 122 umfassen. Bei einigen Ausführungsformen kann die Rechen-Abladesteuerung 122 ein NVM-Controller, ein SSD-Controller, ein Speicherungsserver-Controller oder ein beliebiger anderer geeigneter Speicherungscontroller auf Blockbasis oder ein Teil davon sein. Obwohl der NVM 120 der Klarheit halber als ein einziges Element gezeigt ist, versteht sich, dass bei verschiedenen Ausführungsformen mehrere NVM 120 in der Blockspeicherungsvorrichtung 104 anwesend sein können und/oder mindestens teilweise durch die Rechen-Abladesteuerung 122 gesteuert werden können. Bei einigen Ausführungsformen kann die Rechen-Abladesteuerung 122 Analyselogik 124 und Rechenlogik 126 umfassen. Bei verschiedenen Ausführungsformen kann die Analyselogik 124 einen Rechen-Abladebefehl (z. B. Rechen-Abladebefehl 132) und/oder Rechen-Deskriptor (z. B. Rechen-Deskriptor 130 auf Blockbasis), der vom Host 102 empfangen wird, analysieren. Bei einigen Ausführungsformen identifiziert die Analyselogik 124 einen Rechen-Deskriptor (z. B. den Rechen-Deskriptor 130 auf Blockbasis), der in einen Rechen-Abladebefehl (z. B. den Rechen-Abladebefehl 132) verpackt ist, und analysiert den identifizierten Rechen-Deskriptor, um ein virtuelles Eingabeobjekt (z. B. das virtuelle Eingabeobjekt 134), ein virtuelles Ausgabeobjekt (z. B. das virtuelle Ausgabeobjekt 136), eine angeforderte Rechenoperation (z. B. eine Funktion 138) und/oder andere Parameter (z. B. eine durch zusätzliche Argumente 140 spezifizierte Suchzeichenkette) zu identifizieren. Bei verschiedenen Ausführungsformen führt die Rechenlogik 126 die angeforderte Rechenoperation aus. Bei einigen Ausführungsformen kann die Rechenlogik 126 die angeforderte Rechenoperation 138 gegenüber dem virtuellen Eingabeobjekt 134 ausführen und kann ein Ergebnis der angeforderten Rechenoperation in dem virtuellen Ausgabeobjekt 136 speichern. Bei einigen Ausführungsformen können eine oder mehrere Standardoperationen (z. B. Lese- und Schreiboperationen) des NVM 120 weiter normal auftreten, während die abgeladene Rechenoperation ausgeführt wird. Bei einigen Ausführungsformen kann die Rechen-Abladesteuerung 122 eine Ziel-Abladebibliothek 127 umfassen, die von der Analyselogik 124 beim Analysieren des Rechen-Abladebefehls und/oder des Rechen-Deskriptors verwendet werden kann, und mit der die Rechenlogik 126 die angeforderte Rechenoperation ausführen kann. Bei einigen Ausführungsformen kann die Ziel-Abladebibliothek 127 nicht anwesend sein und/oder einige oder alle Aspekte der Ziel-Abladebibliothek 127 können in der Analyselogik 124 und/oder der Rechenlogik 126 (z. B. in einem ASIC) enthalten sein. Wenn ein oder mehrere erwartete Posten nicht in dem Deskriptor enthalten sind (z. B. ein virtuelles Ausgabeobjekt), kann bei einigen Ausführungsformen ein Vorgabewert verwendet oder eine Vorgabeaktion ausgeführt werden, wenn es möglich ist. Verschiedene Ausführungsformen können die Probleme vermeiden, die herkömmlichen Ansätzen zugeordnet sind, die komplexe Vorrichtungen auf Objektbasis oder Dateisysteme auf Objektbasis hinzufügen, indem virtuelle Objekte in dem Blockspeicherungssystem erzeugt und Rechnung gegenüber den virtuellen Objekten ausgeführt werden. Bei einigen Ausführungsformen wird die Analyselogik 124 als Parser bezeichnet, und die Rechenlogik 126 wird als Ablade-Ausführer bezeichnet.
  • Bei verschiedenen Ausführungsformen kann das virtuelle Eingabeobjekt 134 eine erste Liste von einem oder mehreren Blöcken umfassen. Bei einigen Ausführungsformen kann die erste Liste von einem oder mehreren Blöcken eine Liste von Startadressen und eine entsprechende Liste von Blocklängen zur Bildung einer ersten Menge von Blockausmaßen umfassen. Bei verschiedenen Ausführungsformen kann das virtuelle Ausgabeobjekt 136 eine zweite Liste von einem oder mehreren Blöcken umfassen. Bei einigen Ausführungsformen kann die zweite Liste von einem oder mehreren Blöcken eine Liste von Startadressen und eine entsprechende Liste von Blocklängen zur Bildung einer zweiten Menge von Blockausmaßen umfassen. Bei anderen Ausführungsformen können die erste und/oder zweite Menge von Blockausmaßen mit einer Liste von Startadressen und einer Liste von Endadressen spezifiziert werden und/oder können eine virtuelle Gesamt-Objektlänge (virtuelle Eingabeobjektlänge bzw. virtuelle Ausgabeobjektlänge) umfassen. Bei einigen Ausführungsformen kann die angeforderte Rechenoperation 138 eine Funktion sein (z. B. Komprimierung, Hashing, Suchen, Bildumbemessung, Prüfsummenberechnung oder eine beliebige andere geeignete Funktion), die auf die erste Liste von einem oder mehreren Blöcken angewandt und in die zweite Liste von einem oder mehreren Blöcken geschrieben werden kann. Bei einigen Ausführungsformen können die dem virtuellen Eingabeobjekt 134 und/oder dem virtuellen Ausgabeobjekt 136 zugeordneten Blöcke Sektoren sein. Bei einigen Ausführungsformen können die Startadressen logische Blockadressen (LBA) sein, und die erste und zweite Liste von einem oder mehreren Blöcken können ansonsten durch LBA spezifiziert werden oder die erste und/oder zweite Liste von einem oder mehreren Blöcken können auf eine beliebige andere geeignete Weise identifiziert werden. Bei verschiedenen Ausführungsformen kann das virtuelle Eingabeobjekt 134 die Blockorte im NVM 120 spezifizieren, an denen Dateidaten gespeichert werden, und/oder das virtuelle Ausgabeobjekt 136 kann die Blockorte im NVM 120 spezifizieren, an die ein Ergebnis zu schreiben ist. Bei einigen Ausführungsformen kann das virtuelle Ausgabeobjekt 136 spezifizieren, dass das Ergebnis an den Host 102 zurückzugeben ist.
  • Bei verschiedenen Ausführungsformen können die Analyselogik 124, die Rechenlogik 126 und/oder andere Funktionen der Rechen-Abladesteuerung 122 mit einem/einer oder mehreren Prozessoren oder Zentralverarbeitungseinheiten (CPU), einem oder mehreren FPGA (Field Programmable Gate Arrays), einem oder mehreren ASIC (anwendungsspezifische integrierte Schaltungen), einer intelligenten Speicherungsbeschleunigungsbibliothek (ISA-L), einer Daten-Streaming-Architektur und/oder einer der Klarheit halber nicht gezeigten beliebigen anderen geeigneten Kombination von Hardware und/oder Software ausgeführt werden. Bei einigen Ausführungsformen kann die Rechen-Abladesteuerung 122 einen oder mehrere Puffer 128 umfassen, die bei einigen Ausführungsformen Eingangspuffer, Ausgangspuffer und/oder Eingangs-/Ausgangspuffer umfassen können. Bei einigen Ausführungsformen können eine oder mehrere Komponenten der Rechen-Abladesteuerung 122 (z. B. die Rechenlogik 126 und/oder die Analyselogik 124) die Puffer 128 bei Lese- und/oder Schreiboperationen am NVM 120 verwenden.
  • Bei einigen Ausführungsformen kann die Blockspeicherungsvorrichtung 104 ein SSD sein, das über einen lokalen Bus wie PCIe mit dem Host 102 gekoppelt sein kann, oder das bei verschiedenen Ausführungsformen über ein Netzwerk mit dem Host 102 gekoppelt sein kann. Bei einigen Ausführungsformen kann die Blockspeicherungsvorrichtung 104 ein Speicherungsserver sein, der Teil einer disaggregierten Datenverarbeitungsumgebung sein kann. Bei verschiedenen Ausführungsformen können der Host 102 und/oder die Blockspeicherungsvorrichtung 104 zusätzliche Elemente umfassen, die der Klarheit halber nicht gezeigt sind (z. B. kann die Blockspeicherungsvorrichtung 104 einen oder mehrere Prozessoren und Systemspeicher umfassen).
  • Bei verschiedenen Ausführungsformen kann der NVM 120 ein Speicher sein, dessen Zustand bestimmt ist, selbst wenn die Stromversorgung der Vorrichtung unterbrochen wird. Bei einigen Ausführungsformen kann der NVM 120 eine Speichervorrichtung mit blockadressierbarem Modus umfassen, wie etwa NAND- oder NOR-Technologien oder spezieller Mehrschwellenpegel-NAND-Flash-Speicher (zum Beispiel SLC (Single-Level Cell), MLC (Multi-Level Cell), QLC (Quad-Level Cell), TLC (Tri-Level Cell) oder ein gewisser anderer NAND). Bei einigen Ausführungsformen kann der NVM 120 eine byteadressierbare Write-in-Place-Speichervorrichtung mit dreidimensionalen Kreuzpunkten umfassen, oder andere byteadressierbare Write-in-Place-NVM-Vorrichtungen, wie etwa Phasenänderungsspeicher (PCM) mit einem oder mehreren Pegeln oder Phasenänderungsspeicher mit einem Schalter (PCMS), NVM-Vorrichtungen, die Chalkogenidphasenänderungsmaterial (zum Beispiel Chalkogenidglas) verwenden, resistiven Speicher, darunter Oxidbasis-, Sauerstoffleerstellenbasis- und CB-RAM-Speicher (Conductive Bridge Random Access Memory), Nanodrahtspeicher, FeTRAM (ferroelektrischen Transistor-Direktzugriffsspeicher), MRAM (magnetoresistiven Direktzugriffsspeicher) mit Memristor-Technologie, STT-MRAM (Spin Transfer Torque), eine auf Spintronic-Magnetsperrschichtspeicher basierende Vorrichtung, eine auf MTJ (Magnetic Tunneling Junction) basierende Vorrichtung, eine Vorrichtung auf der Basis von DW (Domänenwand) und SOT (Spin Orbit Transfer), eine Speichervorrichtung auf Thyristorbasis, eine Kombination beliebiger der Obigen oder einen anderen geeigneten Speicher.
  • Bei verschiedenen Ausführungsformen können abgeladene Rechenoperationen (z. B. Berechnung von Prüfsummen, Bitrot-Detektion) verglichen mit veralteten Ansätzen beschleunigte Abschlusszeiten und/oder verringerten E/A-Verkehr sehen.
  • 2 ist ein Flussdiagramm einer Technik 200 zum Abladen von Rechenoperationen auf eine Blockspeicherungsvorrichtung gemäß verschiedenen Ausführungsformen. Bei einigen Ausführungsformen kann die Technik 200 ganz oder teilweise durch Komponenten praktiziert werden, die mit Bezug auf das Computersystem 100 von 1 oder einen Teil davon (z. B. den Rechen-Ablader 112), die Computervorrichtung 400 von 4 oder einen Teil davon (z. B. den Rechen-Ablader 405) gezeigt und/oder beschrieben wurden, oder durch eine bestimmte andere hier mit Bezug auf eine beliebige andere Figur gezeigte oder beschriebene Komponente.
  • Bei einigen Ausführungsformen kann in einem Block 202 die Technik 200 Empfangen einer Anforderung von einem Datenverarbeitungsprozess (z. B. Empfangen einer Anforderung von dem Datenverarbeitungsprozess 110 durch den Rechen-Ablader 112) umfassen. Bei verschiedenen Ausführungsformen kann die Anforderung ein Objekt auf höherer Ebene (z. B. eine Datei), eine angeforderte Operation oder Berechnung und einen oder mehrere zusätzliche Parameter (z. B. eine Suchzeichenkette) umfassen. Es versteht sich jedoch, dass die Anforderung bei anderen Ausführungsformen beliebige andere geeignete Parameter umfassen kann.
  • Bei verschiedenen Ausführungsformen umfasst die Technik 200 in einem Block 204 Konstruieren eines Rechen-Deskriptors auf Blockbasis (z. B. des Rechen-Deskriptors 130 auf Blockbasis) mindestens teilweise auf der Basis der Anforderung. Bei einigen Ausführungsformen kann das Konstruieren des Rechen-Deskriptors auf Blockbasis Konstruieren einer Ausmaßabbildung (z. B. einer Blockliste für ein virtuelles Eingabeobjekt) mindestens teilweise auf der Basis eines Objekts auf höherer Ebene (z. B. einer Datei), das in der Anforderung enthalten ist, umfassen. Bei einigen Ausführungsformen kann die Ausmaßabbildung eine Liste von LBA umfassen.
  • Bei einigen Ausführungsformen umfasst in einem Block 206 die Technik 200 Senden des Rechen-Deskriptors auf Blockbasis zu einer Speicherungsvorrichtung auf Blockbasis (z. B. der Blockspeicherungsvorrichtung 104 oder der Blockspeicherungsvorrichtung 452) unter Verwendung eines Rechen-Abladebefehls. Bei einigen Ausführungsformen kann Senden des Rechen-Deskriptors auf Blockbasis zu der Speicherungsvorrichtung auf Blockbasis Laden des Rechen-Deskriptors auf Blockbasis in Nutzinformationen (z. B. einen Rechen-Abladebefehl) umfassen. Bei verschiedenen Ausführungsformen kann die Speicherungsvorrichtung auf Blockbasis eine NVM-Speicherungsvorrichtung sein.
  • Bei einigen Ausführungsformen kann der im Block 206 gesendete Rechen-Abladebefehl ein SCSI-Befehl sein, der unter Verwendung eines iSCSI-Transportprotokolls über ein Netzwerk transportiert wird. Bei einigen Ausführungsformen kann ein SCSI-Befehl, der unter Verwendung eines iSCSI-Transportprotokolls über ein Netzwerk transportiert wird, als ein iSCSI-Befehl bezeichnet werden. Bei einigen Ausführungsformen kann der im Block 206 gesendete Rechen-Abladebefehl ein iSCSI-Befehl sein, der einen als (0x99) designierten Operationscode (Opcode) verwenden kann. Bei einigen Ausführungsformen kann der (0x99)-Befehl als ein bidirektionaler Befehl definiert werden, der einen Ausgangspuffer und einen Eingangspuffer umfassen kann. Bei einigen Ausführungsformen kann der Ausgangspuffer des (Ox99)-Befehls verwendet werden, um den Rechen-Deskriptor zu enthalten, und der Eingangspuffer des (Ox99)-Befehls kann verwendet werden, um ein Ergebnis zu enthalten, das als Reaktion auf eine in dem Rechen-Deskriptor beschriebene Operation durchgeführt wird. Bei einigen Ausführungsformen kann der (0x99)-Befehl als ein vertreiberspezifischer Befehl definiert werden und/oder kann als ein EXEC-Befehl bezeichnet werden. Bei anderen Ausführungsformen kann der Rechen-Abladebefehl ein SCSI-Befehl sein, der auf ähnliche Weise wie der oben besprochene iSCSI-Befehl definiert, aber (z. B. über einen lokalen Bus wie einen PCIe-Bus) direkt zu einer angeschlossenen Vorrichtung transportiert wird. Es versteht sich, dass der (Ox99)-Befehl für die Zwecke des Veranschaulichens eines Beispiels erwähnt wird und dass bei verschiedenen Ausführungsformen jede beliebige geeignete Opcode-Designation oder andere Rechen-Abladebefehlkennung verwendet werden kann.
  • Bei einigen Ausführungsformen kann der im Block 206 gesendete Rechen-Abladebefehl einen oder mehrere NVMe-Befehle umfassen. Bei einigen Ausführungsformen kann der Rechen-Abladebefehl ein fusionierter NVMe-Befehl sein, der zwei Opcodes umfasst. Bei einigen Ausführungsformen kann der fusionierte NVMe-Befehl einen ersten Opcode, mit dem der Rechen-Deskriptor von einem Host zu einer Speicherungsvorrichtung auf Blockbasis transferiert werden kann, gefolgt von einem zweiten Opcode, mit dem ein Ergebnis von der Speicherungsvorrichtung auf Blockbasis zurück zum Host transferiert werden kann, umfassen. Auf diese Weise kann der fusionierte NVMe-Befehl zu einem virtuellen bidirektionalen Befehl führen, indem zwei unidirektionale Befehle fusioniert werden. Bei einigen Ausführungsformen kann der erste Opcode ein vertreiberspezifischer Opcode sein, der als (0x99) designiert wird, und/oder kann als ein EXEC_WRITE-Befehl bezeichnet werden. Bei einigen Ausführungsformen kann der zweite Opcode ein vertreiberspezifischer Opcode sein, der als (0x9a) designiert wird, und/oder kann als ein EXEC_READ-Befehl bezeichnet werden. Bei einigen Ausführungsformen kann der EXEC_WRITE-Befehl einer ersten Phase des oben besprochenen bidirektionalen iSCSI-EXEC-Befehls äquivalent sein (z. B. enthält den Rechen-Deskriptor) und/oder der EXEC_READ-Befehl kann einer zweiten Phase des oben besprochenen bidirektionalen iSCSI-EXEC-Befehls äquivalent sein (gibt z. B. das Ergebnis der Operation zurück). Bei einigen Ausführungsformen kann der fusionierte NVMe-Befehl unter Verwendung eines NVMeOF-Transportprotokolls über ein Netzwerk gesendet werden. Bei einigen Ausführungsformen kann ein unter Verwendung eines NVMeOF-Transportprotokolls über ein Netzwerk transportierter NVMe-Befehl als ein NVMeOF-Befehl bezeichnet werden. Bei einigen Ausführungsformen kann der fusionierte NVMe-Befehl direkt zu einer angeschlossenen Vorrichtung transportiert werden (z. B. über einen lokalen Bus wie etwa einen PCIe-Bus). Bei einigen Ausführungsformen kann vor dem Senden zu einer NVM-Speicherungsvorrichtung ein iSCSI- oder SCSI-Rechen-Abladebefehl (z. B. EXEC) in den oben besprochenen fusionierten NVMe-Befehl übersetzt werden. Es versteht sich, dass bei anderen Ausführungsformen ein beliebiger anderer geeigneter Rechen-Abladebefehl verwendet werden kann. Es versteht sich, dass die vertreiberspezifischen Opcodes (0x99) und (0x9a) zur Veranschaulichung eines Beispiels erwähnt werden und dass bei verschiedenen Ausführungsformen beliebige geeignete Opcode-Designationen oder andere Rechen-Abladebefehlskennung(en) verwendet werden können.
  • Bei einigen Ausführungsformen kann in einem Block 208 die Technik 200 Empfangen eines Ergebnisses von der Speicherungsvorrichtung auf Blockbasis als Reaktion auf den Rechen-Deskriptor auf Blockbasis umfassen. Bei verschiedenen Ausführungsformen kann die Technik 200 in einem Block 210 Ausführen anderer Aktionen umfassen.
  • 3 ist ein Flussdiagramm einer Technik 300 zum Ausführen von abgeladenen Rechenoperationen mit einer Blockspeicherungsvorrichtung gemäß verschiedenen Ausführungsformen. Bei einigen Ausführungsformen kann die Technik 300 ganz oder teilweise durch Komponenten praktiziert werden, die mit Bezug auf das Computersystem 100 von 1 oder einen Teil davon (z. B. die Blockspeicherungsvorrichtung 104 und/oder die Rechen-Abladesteuerung 122), die Computervorrichtung 400 von 4 oder einen Teil davon (z. B. die Blockspeicherungsvorrichtung 452 und/oder die Rechen-Abladesteuerung 454) gezeigt und/oder beschrieben werden, oder durch eine bestimmte andere hier mit Bezug auf eine beliebige andere Figur gezeigte oder beschriebene Komponente.
  • Bei einigen Ausführungsformen kann die Technik 300 in einem Block 302 Empfangen eines Rechen-Deskriptors auf Blockbasis (z. B. Empfangen des Rechen-Deskriptors 130 auf Blockbasis in der Blockspeicherungsvorrichtung 104 von dem Rechen-Ablader 112 oder in der Blockspeicherungsvorrichtung 452 von dem Rechen-Ablader 450) umfassen. Bei verschiedenen Ausführungsformen kann die Technik 300 in einem Block 304 Analysieren des Rechen-Deskriptors auf Blockbasis (z. B. mit der Analyselogik 124) umfassen. Bei einigen Ausführungsformen kann die Technik 300 in einem Block 306 Erzeugen eines Kontexts umfassen. Bei verschiedenen Ausführungsformen können die Analyselogik 124 und/oder jede beliebige andere geeignete Komponente der Rechen-Abladesteuerung 122 oder der Rechen-Abladesteuerung 454 den Kontext erzeugen. Bei einigen Ausführungsformen kann der Kontext eines oder mehrere von Folgendem umfassen: eine auszuführende Operation (z. B. eine Textsuche); ein oder mehrere Argumente für die Operation (z. B. eine Suchzeichenkette); ob die Operation erwarten kann, dass Daten über mehrere Aufrufe ankommen oder erfordert, dass alle Daten als ein einziger Puffer eingegeben werden; und/oder beliebige zusätzliche operationsspezifische Zustandsinformationen (z. B. einen aktuellen Status einer Prüfsummenberechnung für gechunkte Eingaben). Bei einigen Ausführungsformen kann, ob die Operation erwarten kann, dass Daten über mehrere Aufrufe ankommen, für eine aufrufende Anwendung (z. B. den Datenverarbeitungsprozess 110) undurchsichtig sein, kann aber für das Ausführen der Operation relevant sein, die Lesen mehrerer Blockausmaße für ein bestimmtes virtuelles Objekt erfordern kann. Bei einigen Ausführungsformen kann der Kontext ein Operationskontext sein, der temporären Platz für die Eingabe und Ergebnisse einer Operation bereitstellen kann.
  • Bei verschiedenen Ausführungsformen kann die Technik 300 in einem Block 308 Einlesen von Daten in einen oder mehrere Puffer (z. B. einen Eingangspuffer der Puffer 128) umfassen. Bei einigen Ausführungsformen kann Einlesen von Daten in den einen oder die mehreren Puffer Durchführen einer Prüfung umfassen, um zu bestimmen, ob genug Daten in den einen oder die mehreren Puffer zur Ausführung einer angeforderten Operation eingelesen wurden, bevor zu dem Entscheidungsblock 310 geschritten wird. Bei einigen Ausführungsformen kann die Technik 300 in einem Entscheidungsblock 310 umfassen zu bestimmen, ob ein Operationscode aus dem Rechen-Deskriptor auf Blockbasis in einer Liste verfügbarer Operationen steht. Wenn im Entscheidungsblock 310 bestimmt wird, dass der Operationscode nicht in der Liste verfügbarer Operationen steht, kann die Technik 300 in einem Block 312 Zurückgeben eines Fehlers umfassen. Wenn im Entscheidungsblock 310 bestimmt wird, dass der Operationscode in der Liste verfügbarer Operationen steht, kann die Technik 300 in einem Block 314 Ausführen einer Operation mindestens teilweise auf der Basis des Operationscodes umfassen. Bei einigen Ausführungsformen (z. B. wenn eine Operation an Teilmengen von Daten statt der gesamten Datenmenge ausgeführt werden kann) kann die Technik 300 Durchlaufen der in dem Block 308 und dem Block 314 ausgeführten Aktionen in einer Schleife umfassen, um die Operation an Teilmengen eines virtuellen Eingabeobjekts auszuführen, bis das gesamte virtuelle Eingabeobjekt verarbeitet worden ist.
  • Bei einigen Ausführungsformen kann die Technik 300 in einem Block 316 Speichern eines Ergebnisses der im Block 314 ausgeführten Operation umfassen. Bei verschiedenen Ausführungsformen kann das Ergebnis an einem Ort des virtuellen Ausgabeobjekts gespeichert und/oder an einen Host (z. B. den Host 102) zurückgegeben werden. Bei einigen Ausführungsformen kann Zurückgeben des Ergebnisses an einen Host Kopieren von Ergebnisdaten in Rück-Nutzinformationen eines Rechen-Abladebefehls umfassen. Bei einigen Ausführungsformen kann die Technik 300 in einem Block 318 Ausführen anderer Aktionen umfassen. Bei verschiedenen Ausführungsformen können eine oder mehrere der mit der Technik 300 ausgeführten Aktionen in Hardware spezifiziert, als eine statische Bibliothek fixiert, dynamisch zur Laufzeit geladen oder mit einer beliebigen geeigneten Kombination von Hardware und/oder Software implementiert werden. Bei einigen Ausführungsformen können eine oder mehrere mit Bezug auf die Technik 300 beschriebene Aktionen in einer anderen Reihenfolge ausgeführt werden (z. B. kann das Bestimmen, ob der Operationscode im Block 310 auf der Liste steht, durchgeführt werden, bevor Daten in einen oder mehrere Puffer im Block 308 eingelesen werden, so dass ein Fehler zurückgegeben werden kann, bevor die Daten in einen Puffer eingelesen werden, wenn der Operationscode nicht in der Liste steht).
  • 4 zeigt eine Blockdarstellung einer beispielhaften Datenverarbeitungsvorrichtung 400, die für Verwendung mit verschiedenen Komponenten von 1, der Technik 200 von 2 und/oder der Technik 300 von 3 geeignet sein kann, gemäß verschiedenen Ausführungsformen.
  • Wie gezeigt kann die Datenverarbeitungsvorrichtung 400 einen oder mehrere Prozessoren oder Prozessorkerne 402 und Systemspeicher 404 umfassen. Für den Zweck der vorliegenden Anmeldung einschließlich der Ansprüche können die Ausdrücke „Prozessor“ und „Prozessorkerne“ als gleichbedeutend betrachtet werden, sofern es der Kontext nicht deutlich anders erfordert. Der Prozessor 402 kann eine beliebige Art von Prozessoren umfassen, wie etwa eine Zentralverarbeitungseinheit (CPU), einen Mikroprozessor und dergleichen. Der Prozessor 402 kann als eine integrierte Schaltung mit Mehrfachkernen, z. B. als Mehrkern-Mikroprozessor, implementiert werden. Bei einigen Ausführungsformen können die Prozessoren 402 zusätzlich zu Kernen ferner Hardwarebeschleuniger umfassen, z. B. Hardwarebeschleuniger, die mit FPGA (Field Programmable Gate Arrays) implementiert werden. Die Datenverarbeitungsvorrichtung 400 kann Massenspeicherungsvorrichtungen 406 umfassen (wie etwa Diskette, Festplatte, nichtflüchtiger Speicher (NVM) (z. B. CD-ROM (Compact Disc Read-Only Memory), DVD (Digital Versatile Disk), eine beliebige andere Art von geeignetem NVM und so weiter). Im Allgemeinen können der Systemspeicher 404 und/oder die Massenspeicherungsvorrichtungen 406 temporäre und/oder persistente Speicherung beliebiger Art sein, darunter, aber ohne Beschränkung darauf, flüchtiger und nichtflüchtiger Speicher, optische, magnetische und/oder Halbleitermassenspeicherung und so weiter. Flüchtiger Speicher wäre zum Beispiel, aber ohne Beschränkung darauf, statischer und/oder dynamischer Direktzugriffsspeicher (DRAM). Nichtflüchtiger Speicher wäre zum Beispiel, aber ohne Beschränkung darauf, elektrisch löschbarer programmierbarer Festwertspeicher, Phasenänderungsspeicher, resistiver Speicher und so weiter. Bei einigen Ausführungsformen können die Massenspeicherungsvorrichtungen 406 den mit Bezug auf 1 beschriebenen NVM 120 umfassen.
  • Die Datenverarbeitungsvorrichtung 400 kann ferner E/A-Vorrichtungen 408 umfassen (wie etwa eine Anzeige (z. B. eine Touchscreen-Anzeige), Tastatur, Cursorsteuerung, Fernbedienung, Spielsteuerung, Bildaufnahmevorrichtung und so weiter) sowie Kommunikationsschnittstellen 410 (wie etwa Netzwerkschnittstellenkarten, Modems, Infrarotempfänger, Funkempfänger (z. B. Bluetooth) und so weiter), eine oder mehrere Antennen und/oder eine beliebige andere geeignete Komponente.
  • Die Kommunikationsschnittstellen 410 können (der Klarheit halber nicht gezeigte) Kommunikationschips umfassen, die dafür ausgelegt sein können, die Datenverarbeitungsvorrichtung 400 gemäß einem lokalen Netzwerk (LAN) (z. B. Ethernet) und/oder einem Netzwerk des Typs GSM (Global System for Mobile Communication), GPRS (General Packet Radio Service), UMTS (Universal Mobile Telecommunications System), HSPA (High Speed Packet Access), E-HSPA (Evolved HSPA) oder LTE (Long-Term Evolution) zu betreiben. Die Kommunikationschips können auch dafür ausgelegt sein, gemäß EDGE (Enhanced Data for GSM Evolution), GERAN (GSM EDGE Radio Access Network), UTRAN (Universal Terrestrial Radio Access Network) oder E-UTRAN (Evolved UTRAN) zu arbeiten. Die Kommunikationschips können dafür ausgelegt sein, gemäß CDMA (Code Division Multiple Access), TDMA (Time Division Multiple Access), DECT (Enhanced Cordless Telecommunications), EV-DO (Evolution-Data Optimized), Ableitungen davon sowie beliebigen anderen drahtlosen Protokollen mit der Bezeichnung 3G, 4G, 5G und darüber hinaus zu arbeiten. Die Kommunikationsschnittstellen 410 können bei anderen Ausführungsformen gemäß anderen drahtlosen Protokollen arbeiten.
  • Bei verschiedenen Ausführungsformen kann die Datenverarbeitungsvorrichtung 400 eine Blockspeicherungsvorrichtung 452 umfassen, die eine Rechen-Abladesteuerung 454 und/oder einen NVM 456 umfassen kann. Bei einigen Ausführungsformen können die Blockspeicherungsvorrichtung 452 oder Komponenten davon mit anderen Komponenten der Datenverarbeitungsvorrichtung 400 gekoppelt sein. Bei einigen Ausführungsformen kann die Blockspeicherungsvorrichtung 452 eine andere Anzahl von Komponenten umfassen (z. B. kann sich der NVM 456 in der Massenspeicherung 406 befinden) oder kann zusätzliche Komponenten der Datenverarbeitungsvorrichtung 400 umfassen (z. B. können der Prozessor 402 und/oder der Speicher 404 Teil der Blockspeicherungsvorrichtung 452 sein). Bei einigen Ausführungsformen kann die Rechen-Abladesteuerung 454 auf ähnliche Weise wie die mit Bezug auf 1 beschriebene Rechen-Abladesteuerung 122 konfiguriert sein.
  • Bei verschiedenen Ausführungsformen kann die Datenverarbeitungsvorrichtung 400 einen Rechen-Ablader 450 umfassen. Bei einigen Ausführungsformen kann der Rechen-Ablader 450 auf ähnliche Weise wie der mit Bezug auf 1 beschriebene Rechen-Ablader 112 ausgelegt sein. Bei einigen Ausführungsformen kann die Datenverarbeitungsvorrichtung 400 sowohl den Rechen-Ablader 450 als auch die Blockspeicherungsvorrichtung 452 (z. B. als SSD) umfassen, und der Rechen-Ablader 450 kann Rechen-Abladebefehle (z. B. NVMe oder SCSI), die einen Rechen-Deskriptor enthalten, über einen lokalen Bus zu der Blockspeicherungsvorrichtung 452 senden. Bei anderen Ausführungsformen kann eine erste Datenverarbeitungsvorrichtung 400 den Rechen-Ablader 450 umfassen, eine zweite Datenverarbeitungsvorrichtung 400 kann die Blockspeicherungsvorrichtung 452 umfassen und der Rechen-Ablader 450 kann Rechen-Abladebefehle (z. B. iSCSI oder NVMeOF) über ein Netzwerk (z. B. über die Kommunikationsschnittstellen 410) zu der Blockspeicherungsvorrichtung 452 senden. Bei einigen Ausführungsformen können die erste Datenverarbeitungsvorrichtung 400 und die zweite Datenverarbeitungsvorrichtung 400 Komponenten einer disaggregierten Datenverarbeitungsumgebung sein, wobei die zweite Datenverarbeitungsvorrichtung 400 mit der Blockspeicherungsvorrichtung 452 ein Speicherungsserver ist, der eine durch die Blockspeicherungsvorrichtung 452 bereitgestellte Fähigkeit der Rechnung in Speicherung umfassen kann.
  • Die oben beschriebenen Elemente der Datenverarbeitungsvorrichtung 400 können über den Systembus 412, der einen oder mehrere Busse repräsentieren kann, miteinander gekoppelt sein. Im Fall von mehreren Bussen können sie durch eine oder mehrere (nicht gezeigte) Busbrücken überbrückt sein. Jedes dieser Elemente kann seine in der Technik bekannten herkömmlichen Funktionen ausführen. Insbesondere können der Systemspeicher 404 und die Massenspeicherungsvorrichtungen 406 verwendet werden, um eine Arbeitskopie und eine permanente Kopie der Programmieranweisungen für den Betrieb der verschiedenen Komponenten der Datenverarbeitungsvorrichtung 400, darunter, aber ohne Beschränkung darauf, ein Betriebssystem der Datenverarbeitungsvorrichtung 400, eine oder mehrere Anwendungen, der Datenverarbeitungsvorrichtung 400 zugeordnete Operationen, der Blockspeicherungsvorrichtung 452 zugeordnete Operationen und/oder dem Rechen-Ablader 450 zugeordnete Operationen, die kollektiv als rechnerische Logik 422 bezeichnet werden, zu speichern. Die verschiedenen Elemente können durch Assembleranweisungen, die durch den Prozessor bzw. die Prozessoren 402 unterstützt werden, oder höhere Sprachen, die zu solchen Anweisungen kompiliert werden können, implementiert werden. Bei einigen Ausführungsformen kann die Datenverarbeitungsvorrichtung 400 als ein ASIC fester Funktion, ein FPGA oder eine beliebige andere geeignete Vorrichtung mit oder ohne Programmierbarkeit oder Konfigurationsoptionen implementiert werden.
  • Die permanente Kopie der Programmieranweisungen kann in der Fabrik oder am Einsatzort zum Beispiel mittels eines (nicht gezeigten) Verteilungsmediums, wie etwa einer CD (Compact Disc) oder mittels der Kommunikationsschnittstelle 410 (von einem (nicht gezeigten) Verteilungsserver aus) in den Massenspeicherungsvorrichtungen 406 abgelegt werden. Das heißt, es können ein oder mehrere Verteilungsmedien mit einer Implementierung des Agentenprogramms verwendet werden, um den Agenten zu verteilen und verschiedene Datenverarbeitungsvorrichtungen zu programmieren.
  • Die Anzahl, Fähigkeit und/oder Kapazität der Elemente 408, 410, 412 kann abhängig davon, ob die Datenverarbeitungsvorrichtung 400 als stationäre Datenverarbeitungsvorrichtung, wie etwa eine Set-Topbox oder ein Desktop-Computer oder eine mobile Datenverarbeitungsvorrichtung wie etwa eine Tablet-Datenverarbeitungsvorrichtung, ein Laptop-Computer, eine Spielkonsole oder ein Smartphone verwendet wird, unterschiedlich sein. Ihr Aufbau ist anderweitig bekannt und wird dementsprechend nicht weiter beschrieben.
  • Für einige Ausführungsformen kann mindestens einer der Prozessoren 402 zusammen mit der rechnerischen Logik 422 gekapselt werden, die dafür ausgelegt ist, Aspekte von hier beschriebenen Ausführungsformen zu praktizieren, um ein SiP (System in Package) oder ein SoC (System on Chip) zu bilden.
  • Bei verschiedenen Implementierungen kann die Datenverarbeitungsvorrichtung 400 eine oder mehrere Komponenten einer Datenzentrale, eines Laptops, eines Netbooks, eines Notebooks, eines Ultrabooks, eines Smartphones, eines Tablets, eines Ultra-Mobil-PC oder eines Mobiltelefons umfassen. Bei einigen Ausführungsformen kann die Datenverarbeitungsvorrichtung 400 eine oder mehrere Komponenten eines Servers umfassen. Bei weiteren Implementierungen kann die Datenverarbeitungsvorrichtung 400 eine beliebige andere elektronische Vorrichtung sein, die Daten verarbeitet.
  • 5 zeigt ein beispielhaftes computerlesbares Speicherungsmedium 502 mit Anweisungen, die dafür ausgelegt sind, alle oder ausgewählte der Operationen zu praktizieren, die der Datenverarbeitungsvorrichtung 400, die bereits mit Bezug auf 4 beschrieben wurde; dem Computersystem 100, der Rechen-Abladesteuerung 122 und/oder dem mit Bezug auf 1 beschriebenen Rechen-Ablader 112; der mit Bezug auf 2 beschriebenen Technik 200; und/oder der Technik 300 von 3 zugeordnet sind, gemäß verschiedenen Ausführungsformen.
  • Wie dargestellt kann das computerlesbare Speicherungsmedium 502 eine Anzahl von Programmieranweisungen 504 umfassen. Das Speicherungsmedium 502 kann eine große Vielfalt von in der Technik bekanntem nichttransitorischen persistenten Speicherungsmedium repräsentieren, darunter, aber ohne Beschränkung darauf, Flash-Speicher, dynamischer Direktzugriffsspeicher, statischer Direktzugriffsspeicher, ein optischer Datenträger, ein magnetischer Datenträger usw. Programmieranweisungen 504 können dafür ausgelegt sein, es einer Vorrichtung, z. B. einem Teil des Computersystems 100 und/oder der Datenverarbeitungsvorrichtung 400 oder dem gesamten Computersystem 100 und/oder der gesamten Datenverarbeitungsvorrichtung 400, wie der Rechen-Abladesteuerung 122, dem Rechen-Ablader 112 und/oder anderen Komponenten des Computersystems 100 zu ermöglichen, als Reaktion auf Ausführung der Programmieranweisungen 504 z. B., aber ohne Beschränkung darauf, verschiedene Operationen auszuführen, die für die Rechen-Abladesteuerung 122, die Analyselogik 124, die Rechenlogik 126, den Rechen-Ablader 112, die Client-Abladelogik 114, den Initiator 116, die Blockspeicherungsvorrichtung 452 und/oder den Rechen-Ablader 450 von 4, die mit Bezug auf 2 beschriebene Technik 200 und /oder die Technik 300 von 3 beschrieben sind. Bei alternativen Ausführungsformen können die Programmieranweisungen 504 auf mehreren computerlesbaren Speicherungsmedien 502 angeordnet sein. Bei einer alternativen Ausführungsform kann das Speicherungsmedium 502 transitorisch sein, z. B. mit Programmieranweisungen 504 codierte Signale.
  • Wieder mit Bezug auf 4 kann für eine Ausführungsform mindestens einer der Prozessoren 402 zusammen mit Speicher gekapselt sein, der ganz oder teilweise die rechnerische Logik 422 aufweist, die ausgelegt ist zum Praktizieren von gezeigten oder beschriebenen Aspekten für die Rechen-Abladesteuerung 122, die Analyselogik 124, die Rechenlogik 126, den Rechen-Ablader 112, die Client-Abladelogik 114, den Initiator 116 und/oder andere Komponenten des in 1 gezeigten Computersystems 100, die Datenverarbeitungsvorrichtung 400 einschließlich der Blockspeicherungsvorrichtung 452 und/oder des Rechen-Abladers 450 von 4, die mit Bezug auf 2 beschriebene Technik 200 und/oder die Technik 300 von 3. Für eine Ausführungsform kann mindestens einer der Prozessoren 402 zusammen mit Speicher gekapselt sein, der ganz oder teilweise die rechnerische Logik 422 aufweist, die ausgelegt ist zum Praktizieren von beschriebenen Aspekten für die Rechen-Abladesteuerung 122, die Analyselogik 124, die Rechenlogik 126, den Rechen-Ablader 112, die Client-Abladelogik 114, den Initiator 116 und/oder andere Komponenten des in 1 gezeigten Computersystems 100, die Datenverarbeitungsvorrichtung 400 einschließlich der Blockspeicherungsvorrichtung 452 und/oder des Rechen-Abladers 450 von 4, die mit Bezug auf 2 beschriebene Technik 200 und/oder die Technik 300 von 3, um ein SiP (System in Package) zu bilden. Für eine Ausführungsform kann mindestens einer der Prozessoren 402 auf demselben Chip mit Speicher integriert sein, der ganz oder teilweise die rechnerische Logik 422 aufweist, die ausgelegt ist zum Praktizieren von gezeigten oder beschriebenen Aspekten für die Rechen-Abladesteuerung 122, die Analyselogik 124, die Rechenlogik 126, den Rechen-Ablader 112, die Client-Abladelogik 114, den Initiator 116 und/oder andere Komponenten des in 1 gezeigten Computersystems 100, die Datenverarbeitungsvorrichtung 400 einschließlich der Blockspeicherungsvorrichtung 452 und/oder des Rechen-Abladers 450 von 4, die mit Bezug auf 2 beschriebene Technik 200 und/oder die Technik 300 von 3. Für eine Ausführungsform kann mindestens einer der Prozessoren 402 zusammen mit Speicher gekapselt sein, der ganz oder teilweise die rechnerische Logik 422 aufweist, die ausgelegt ist zum Praktizieren von beschriebenen Aspekten für die Rechen-Abladesteuerung 122, die Analyselogik 124, die Rechenlogik 126, den Rechen-Ablader 112, die Client-Abladelogik 114, den Initiator 116 und/oder andere Komponenten des in 1 gezeigten Computersystems 100, die Datenverarbeitungsvorrichtung 400 einschließlich der Blockspeicherungsvorrichtung 452 und/oder des Rechen-Abladers 450 von 4, die mit Bezug auf 2 beschriebene Technik 200 und/oder die Technik 300 von 3, um ein SoC (System on Chip) zu bilden.
  • Maschinenlesbare Medien (darunter nichttransitorische maschinenlesbare Medien wie maschinenlesbare Speicherungsmedien), Verfahren, Systeme und Vorrichtungen zum Ausführen der oben beschriebenen Techniken sind Anschauungsbeispiele für hier offenbarte Ausführungsformen. Außerdem können andere Vorrichtungen in den oben beschriebenen Interaktionen dafür ausgelegt werden, verschiedene offenbarte Techniken auszuführen.
  • Verschiedene hier beschriebene Komponenten können ein Mittel zum Ausführen der beschriebenen Operationen oder Funktionen sein. Jede hier beschriebene Komponente kann Software, Hardware oder eine Kombination dieser umfassen. Die Komponenten können als Softwaremodule, Hardwaremodule, Spezialhardware (z. B. anwendungsspezifische Hardware, anwendungsspezifische integrierte Schaltungen (ASIC), digitale Signalprozessoren (DSP) usw.), eingebettete Steuerungen, festverdrahtete Schaltkreise und/oder eine beliebige andere geeignete Hardware- oder Softwarekomponente implementiert werden. Neben dem hier Beschriebenen können verschiedene Modifikationen an den offenbarten Ausführungsformen und Implementierungen der Erfindung vorgenommen werden, ohne von ihrem Schutzumfang abzuweichen.
  • BEISPIELE
  • Beispiel 1 umfasst eine Rechen-Abladesteuerung, umfassend: einen Parser zum Analysieren eines empfangenen Rechen-Abladebefehls und Identifizieren eines Rechen-Deskriptors auf Blockbasis mindestens teilweise auf der Basis des Rechen-Abladebefehls; und einen Ablade-Ausführer zum Ausführen einer Operation an Daten in einer Speicherungsvorrichtung auf Blockbasis mindestens teilweise auf der Basis des Rechen-Deskriptors auf Blockbasis.
  • Beispiel 2 kann den Gegenstand von Beispiel 1 umfassen, wobei der Parser ferner zum Analysieren des Rechen-Deskriptors auf Blockbasis zum Identifizieren eines virtuellen Eingabeobjekts und einer Rechentypkennung dient und wobei der Ablade-Ausführer zum Ausführen der Operation mindestens teilweise auf der Basis der Rechentypkennung und des virtuellen Eingabeobjekts dient.
  • Beispiel 3 kann den Gegenstand eines beliebigen der Beispiele 1-2 umfassen, wobei der Parser ferner zum Analysieren des Rechen-Deskriptors auf Blockbasis zur Identifizierung eines virtuellen Ausgabeobjekts dient und wobei der Ablade-Ausführer zum Speichern eines Ergebnisses mindestens teilweise auf der Basis des virtuellen Ausgabeobjekts dient.
  • Beispiel 4 kann den Gegenstand eines beliebigen der Beispiele 1-3 umfassen, wobei der Parser und der Ablade-Ausführer mit mehreren nichtflüchtigen Speicher- bzw. NVM-Vorrichtungen gekoppelt sind.
  • Beispiel 5 kann den Gegenstand von Beispiel 4 umfassen, wobei sich die mehreren NVM-Vorrichtungen in einem disaggregierten Speicherungsserver befinden.
  • Beispiel 6 kann den Gegenstand eines beliebigen der Beispiele 1-5 umfassen, wobei der Parser und der Ablade-Ausführer in der Speicherungsvorrichtung auf Blockbasis enthalten sind, wobei die Speicherungsvorrichtung auf Blockbasis eine NVM-Speicherungsvorrichtung ist, die einen mit dem Ablade-Ausführer gekoppelten NVM umfasst.
  • Beispiel 7 kann den Gegenstand von Beispiel 6 umfassen, wobei die NVM-Speicherungsvorrichtung ein Halbleiterlaufwerk (SSD) ist.
  • Beispiel 8 kann den Gegenstand eines beliebigen der Beispiele 1-6 umfassen, wobei der Rechen-Abladebefehl mit einem iSCSI-Transportprotokoll (Internet Small Computer System Interface) oder einem NVMeOF-Transportprotokoll (Non-Volatile Memory Express O-ver Fabrics) über ein Netzwerk empfangen wird.
  • Beispiel 9 umfasst mindestens ein nichttransitorisches computerlesbares Medium, das darauf gespeicherte Anweisungen umfasst, die als Reaktion auf Ausführung der Anweisungen durch einen oder mehrere Prozessoren eine Datenverarbeitungsvorrichtung zu Folgendem veranlassen: Konstruieren eines Rechen-Deskriptors auf Blockbasis mindestens teilweise auf der Basis einer empfangenen Anforderung von einem Datenverarbeitungsprozess; und Senden des Rechen-Deskriptors auf Blockbasis zu einer Speicherungsvorrichtung auf Blockbasis unter Verwendung eines Rechen-Abladebefehls.
  • Beispiel 10 kann den Gegenstand von Beispiel 9 umfassen, wobei der Rechen-Deskriptor auf Blockbasis ein virtuelles Eingabeobjekt, ein virtuelles Ausgabeobjekt und eine Rechentypkennung umfasst.
  • Beispiel 11 kann den Gegenstand eines beliebigen der Beispiele 9-10 umfassen, wobei die Anweisungen ferner dazu dienen, die Datenverarbeitungsvorrichtung dazu zu veranlassen, als Reaktion auf den Rechen-Deskriptor auf Blockbasis ein Ergebnis von der Speicherungsvorrichtung auf Blockbasis zu empfangen.
  • Beispiel 12 kann den Gegenstand eines beliebigen der Beispiele 9-11 umfassen, wobei die Anweisungen ferner dazu dienen, die Datenverarbeitungsvorrichtung dazu zu veranlassen, den Rechen-Deskriptor auf Blockbasis unter Verwendung eines iSCSI-Transportprotokolls (Internet Small Computer System Interface) oder eines NVMeOF-Transportprotokolls (Non-Volatile Memory Express Over Fabrics) über ein Netzwerk zu senden.
  • Beispiel 13 kann den Gegenstand eines beliebigen der Beispiele 9-12 umfassen, wobei die Speicherungsvorrichtung auf Blockbasis ein Speicherungsserver in einer disaggregierten Datenverarbeitungsumgebung ist.
  • Beispiel 14 umfasst ein Verfahren zum Ausführen einer abgeladenen Rechenoperation, wobei das Verfahren Folgendes umfasst: Identifizieren eines Rechen-Deskriptors auf Blockbasis in einem empfangenen Rechen-Abladebefehl, wobei der Rechen-Deskriptor auf Blockbasis ein virtuelles Eingabeobjekt, ein virtuelles Ausgabeobjekt und eine Rechentypkennung umfasst; und Ausführen einer Operation an Daten in einer Speicherungsvorrichtung auf Blockbasis mindestens teilweise auf der Basis des Rechentyps und des virtuellen Eingabeobjekts.
  • Beispiel 15 kann den Gegenstand von Beispiel 14 umfassen, ferner umfassend: Analysieren des Rechen-Deskriptors auf Blockbasis.
  • Beispiel 16 kann den Gegenstand eines beliebigen der Beispiele 14-15 umfassen, wobei das virtuelle Eingabeobjekt eine Liste von Eingangsblöcken und eine Eingangslänge umfasst.
  • Beispiel 17 kann den Gegenstand eines beliebigen der Beispiele 14-16 umfassen, ferner umfassend: Laden der Daten aus einem nichtflüchtigen Speicher (NVM) in einen Puffer mindestens teilweise auf der Basis des virtuellen Eingabeobjekts, wobei Ausführen der Operation Ausführen der Operation mindestens teilweise auf der Basis der in den Puffer geladenen Daten umfasst.
  • Beispiel 18 kann den Gegenstand eines beliebigen der Beispiele 14-17 umfassen, wobei die Rechentypkennung einen Operationscode umfasst und das Verfahren ferner Folgendes umfasst: Vergleichen des Operationscodes mit einer Liste verfügbarer Operationen; Ausführen der Operation, wenn der Operationscode in der Liste verfügbarer Operationen enthalten ist; und Zurückgeben eines Fehlers, wenn der Operationscode nicht in der Liste verfügbarer Operationen enthalten ist.
  • Beispiel 19 kann den Gegenstand eines beliebigen der Beispiele 14-18 umfassen, wobei die Rechentypkennung eine Such-, Komprimier-, Prüfsummen- oder Umbemessungsoperation identifiziert.
  • Beispiel 20 kann den Gegenstand eines beliebigen der Beispiele 14-19 umfassen, wobei der Rechen-Abladebefehl mit einem iSCSI-Transportprotokoll (Internet Small Computer System Interface) oder einem NVMeOF-Transportprotokoll (Non-Volatile Memory Express Over Fabrics) über ein Netzwerk empfangen wird.
  • Beispiel 21 umfasst mindestens ein nichttransitorisches computerlesbares Medium, das darauf gespeicherte Anweisungen umfasst, die als Reaktion auf Ausführung der Anweisungen durch einen oder mehrere Prozessoren eine Datenverarbeitungsvorrichtung zu Folgendem veranlassen: Identifizieren eines Rechen-Deskriptors auf Blockbasis in einem empfangenen Rechen-Abladebefehl, wobei der Rechen-Deskriptor auf Blockbasis ein virtuelles Eingabeobjekt und eine Rechentypkennung umfasst; und Ausführen einer Operation an Daten in einer Speicherungsvorrichtung auf Blockbasis mindestens teilweise auf der Basis des Rechentyps und des virtuellen Eingabeobjekts.
  • Beispiel 22 kann den Gegenstand von Beispiel 21 umfassen, wobei die Anweisungen ferner dazu dienen, die Datenverarbeitungsvorrichtung dazu zu veranlassen, den Rechen-Deskriptor auf Blockbasis zu analysieren.
  • Beispiel 23 kann den Gegenstand eines beliebigen der Beispiele 21-22 umfassen, wobei der Rechen-Abladebefehl mit einem iSCSI-Transportprotokoll (Internet Small Computer System Interface) oder einem NVMeOF-Transportprotokoll (Non-Volatile Memory Express Over Fabrics) über ein Netzwerk empfangen wird.
  • Beispiel 24 kann den Gegenstand eines beliebigen der Beispiele 21-22 umfassen, wobei der Rechen-Abladebefehl ein SCSI-Befehl oder ein NVMe-Befehl ist, der über einen lokalen Bus empfangen wird.
  • Beispiel 25 kann den Gegenstand eines beliebigen der Beispiele 21-24 umfassen, wobei der Rechen-Deskriptor auf Blockbasis ferner ein virtuelles Ausgabeobjekt umfasst und wobei die Anweisungen ferner dazu dienen, die Datenverarbeitungsvorrichtung dazu zu veranlassen, ein Ergebnis mindestens teilweise auf der Basis des virtuellen Ausgabeobjekts zu speichern.
  • Beispiel 26 umfasst eine Vorrichtung mit Mitteln zum Ausführen des Verfahrens von Beispiel 14.
  • Beispiel 27 kann den Gegenstand von Beispiel 26 umfassen, ferner umfassend: Mittel zum Ausführen des Verfahrens nach einem der Beispiele 15-20 oder einem anderen vorliegenden Beispiel.
  • Verschiedene Ausführungsformen können eine beliebige geeignete Kombination der zuvor beschriebenen Ausführungsformen umfassen, wozu Ausführungsalternativen (oder) von Ausführungsformen, die zuvor in konjunktiver Form (und) beschrieben wurden (z. B. kann „und“ „und/oder“ bedeuten), gehören. Außerdem können einige Ausführungsformen ein oder mehrere Produkte umfassen (z. B. nicht flüchtige computerlesbare Medien), auf denen Anweisungen gespeichert sind, die, wenn sie ausgeführt werden, zu Aktionen einer der zuvor beschriebenen Ausführungsformen führen. Des Weiteren können einige Ausführungsformen Geräte oder Systeme umfassen, die beliebige geeignete Mittel zum Durchführen der diversen Vorgänge der zuvor beschriebenen Ausführungsformen aufweisen.
  • Die obige Beschreibung von abgebildeten Umsetzungen, einschließlich dessen, was in der Zusammenfassung beschrieben ist, ist nicht dazu gedacht, erschöpfend zu sein oder die Ausführungsformen der vorliegenden Offenbarung auf die offenbarten genauen Formen einzuschränken. Obwohl spezifische Umsetzungen und Beispiele hier zur Erläuterung beschrieben werden, sind diverse äquivalente Änderungen im Umfang der vorliegenden Offenbarung möglich, wie es der Fachmann erkennen wird.
  • Diese Änderungen können an den Ausführungsformen der vorliegenden Offenbarung angesichts der obigen ausführlichen Beschreibung erfolgen. Die Begriffe, die in den folgenden Ansprüchen verwendet werden, sind nicht auszulegen, um diverse Ausführungsformen der vorliegenden Offenbarung auf die spezifischen Umsetzungen einzuschränken, die in der Beschreibung und den Ansprüchen offenbart werden. Vielmehr ist der Umfang vollständig durch die folgenden Ansprüche zu bestimmen, die gemäß den üblichen Lehren der Auslegung von Ansprüchen zu verstehen sind.

Claims (15)

  1. Rechen-Abladesteuerung, umfassend: einen Parser zum Analysieren eines empfangenen Rechen-Abladebefehls und Identifizieren eines Rechen-Deskriptors auf Blockbasis mindestens teilweise auf der Basis des Rechen-Abladebefehls; und einen Ablade-Ausführer zum Ausführen einer Operation an Daten in einer Speicherungsvorrichtung auf Blockbasis mindestens teilweise auf der Basis des Rechen-Deskriptors auf Blockbasis.
  2. Rechen-Abladesteuerung nach Anspruch 1, wobei der Parser ferner zum Analysieren des Rechen-Deskriptors auf Blockbasis zum Identifizieren eines virtuellen Eingabeobjekts und einer Rechentypkennung dient und wobei der Ablade-Ausführer zum Ausführen der Operation mindestens teilweise auf der Basis der Rechentypkennung und des virtuellen Eingabeobjekts dient, wobei der Parser ferner zum Analysieren des Rechen-Deskriptors auf Blockbasis zum Identifizieren eines virtuellen Ausgabeobjekts dient und wobei der Ablade-Ausführer zum Speichern eines Ergebnisses mindestens teilweise auf der Basis des virtuellen Ausgabeobjekts dient.
  3. Rechen-Abladesteuerung nach Anspruch 1, wobei der Parser und der Ablade-Ausführer mit mehreren nichtflüchtigen Speicher- bzw. NVM-Vorrichtungen gekoppelt sind, wobei sich die mehreren NVM-Vorrichtungen in einem disaggregierten Speicherungsserver befinden.
  4. Rechen-Abladesteuerung nach Anspruch 1, wobei der Parser und der Ablade-Ausführer in der Speicherungsvorrichtung auf Blockbasis enthalten sind, wobei die Speicherungsvorrichtung auf Blockbasis eine NVM-Speicherungsvorrichtung ist, die einen mit dem Ablade-Ausführer gekoppelten NVM umfasst, wobei die NVM-Speicherungsvorrichtung ein Halbleiterlaufwerk (SSD) ist.
  5. Rechen-Abladesteuerung nach einem der Ansprüche 1 bis 4, wobei der Rechen-Abladebefehl mit einem iSCSI-Transportprotokoll (Internet Small Computer System Interface) oder einem NVMeOF-Transportprotokoll (Non-Volatile Memory Express Over Fabrics) über ein Netzwerk empfangen wird.
  6. Nichttransitorisches computerlesbares Medium bzw. nichttransitorische computerlesbare Medien, das darauf gespeicherte Anweisungen umfasst, die als Reaktion auf Ausführung der Anweisungen durch einen oder mehrere Prozessoren eine Datenverarbeitungsvorrichtung zu Folgendem veranlassen: Konstruieren eines Rechen-Deskriptors auf Blockbasis mindestens teilweise auf der Basis einer empfangenen Anforderung von einem Datenverarbeitungsprozess; und Senden des Rechen-Deskriptors auf Blockbasis zu einer Speicherungsvorrichtung auf Blockbasis unter Verwendung eines Rechen-Abladebefehls.
  7. Nichttransitorisches computerlesbares Medium bzw. nichttransitorische computerlesbare Medien nach Anspruch 6, wobei der Rechen-Deskriptor auf Blockbasis ein virtuelles Eingabeobjekt, ein virtuelles Ausgabeobjekt und eine Rechentypkennung umfasst.
  8. Nichttransitorisches computerlesbares Medium bzw. nichttransitorische computerlesbare Medien nach Anspruch 6, wobei die Anweisungen ferner dazu dienen, die Datenverarbeitungsvorrichtung dazu zu veranlassen, als Reaktion auf den Rechen-Deskriptor auf Blockbasis ein Ergebnis von der Speicherungsvorrichtung auf Blockbasis zu empfangen.
  9. Verfahren zum Ausführen einer abgeladenen Rechenoperation, wobei das Verfahren Folgendes umfasst: Identifizieren eines Rechen-Deskriptors auf Blockbasis in einem empfangenen Rechen-Abladebefehl, wobei der Rechen-Deskriptor auf Blockbasis ein virtuelles Eingabeobjekt, ein virtuelles Ausgabeobjekt und eine Rechentypkennung umfasst; und Ausführen einer Operation an Daten in einer Speicherungsvorrichtung auf Blockbasis mindestens teilweise auf der Basis des Rechentyps und des virtuellen Eingabeobjekts.
  10. Verfahren nach Anspruch 9, das ferner Analysieren des Rechen-Deskriptors auf Blockbasis umfasst.
  11. Verfahren nach Anspruch 9, wobei das virtuelle Eingabeobjekt eine Liste von Eingangsblöcken und eine Eingangslänge umfasst.
  12. Verfahren nach einem der Ansprüche 9 bis 11, das ferner Laden der Daten aus einem nichtflüchtigen Speicher (NVM) in einen Puffer mindestens teilweise auf der Basis des virtuellen Eingabeobjekts umfasst, wobei Ausführen der Operation Ausführen der Operation mindestens teilweise auf der Basis der in den Puffer geladenen Daten umfasst.
  13. Nichttransitorisches computerlesbares Medium bzw. nichttransitorische computerlesbare Medien, das darauf gespeicherte Anweisungen umfasst, die als Reaktion auf Ausführung der Anweisungen durch einen oder mehrere Prozessoren eine Datenverarbeitungsvorrichtung zu Folgendem veranlassen: Identifizieren eines Rechen-Deskriptors auf Blockbasis in einem empfangenen Rechen-Abladebefehl, wobei der Rechen-Deskriptor auf Blockbasis ein virtuelles Eingabeobjekt und eine Rechentypkennung umfasst; und Ausführen einer Operation an Daten in einer Speicherungsvorrichtung auf Blockbasis mindestens teilweise auf der Basis des Rechentyps und des virtuellen Eingabeobjekts.
  14. Nichttransitorisches computerlesbares Medium bzw. nichttransitorische computerlesbare Medien nach Anspruch 13, wobei die Anweisungen ferner dazu dienen, die Datenverarbeitungsvorrichtung dazu zu veranlassen, den Rechen-Deskriptor auf Blockbasis zu analysieren.
  15. Nichttransitorisches computerlesbares Medium bzw. nichttransitorische computerlesbare Medien nach einem der Ansprüche 13 bis 14, wobei der Rechen-Abladebefehl mit einem iSCSI-Transportprotokoll (Internet Small Computer System Interface) oder einem NVMeOF-Transportprotokoll (Non-Volatile Memory Express Over Fabrics) über ein Netzwerk empfangen wird.
DE102019113048.4A 2018-06-18 2019-05-17 Rechen-abladung in blockspeicherung unter verwendung virtueller objekte Pending DE102019113048A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/011,280 2018-06-18
US16/011,280 US10817176B2 (en) 2018-06-18 2018-06-18 Compute offload in block storage using virtual objects

Publications (1)

Publication Number Publication Date
DE102019113048A1 true DE102019113048A1 (de) 2019-12-19

Family

ID=65231688

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102019113048.4A Pending DE102019113048A1 (de) 2018-06-18 2019-05-17 Rechen-abladung in blockspeicherung unter verwendung virtueller objekte

Country Status (3)

Country Link
US (1) US10817176B2 (de)
CN (1) CN110618787A (de)
DE (1) DE102019113048A1 (de)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020186081A1 (en) 2019-03-12 2020-09-17 Intel Corporation Computational data storage systems
KR20210113859A (ko) * 2020-03-09 2021-09-17 에스케이하이닉스 주식회사 데이터 처리 시스템 및 그 동작 방법
CN114691412A (zh) * 2020-12-29 2022-07-01 华为技术有限公司 一种数据校验方法及其相关设备
US11675540B2 (en) 2021-08-05 2023-06-13 Seagate Technology Llc In-line data flow for computational storage
US20240220151A1 (en) * 2023-01-03 2024-07-04 Samsung Electronics Co., Ltd. Computational storage device and method for operating the device

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1747444A (zh) * 2004-09-10 2006-03-15 国际商业机器公司 数据处理系统网络中从主机单元分担数据流的方法及引擎
US8086585B1 (en) * 2008-09-30 2011-12-27 Emc Corporation Access control to block storage devices for a shared disk based file system
US8261003B2 (en) * 2010-08-11 2012-09-04 Lsi Corporation Apparatus and methods for managing expanded capacity of virtual volumes in a storage system
CN102609378B (zh) * 2012-01-18 2016-03-30 中国科学院计算技术研究所 一种消息式内存访问装置及其访问方法
US9639546B1 (en) * 2014-05-23 2017-05-02 Amazon Technologies, Inc. Object-backed block-based distributed storage
WO2016118128A1 (en) * 2015-01-22 2016-07-28 Hewlett Packard Enterprise Development Lp Router to send a request from a first subnet to a second subnet
US9860168B1 (en) * 2015-09-21 2018-01-02 Amazon Technologies, Inc. Network packet header modification for hardware-based packet processing
US10261902B2 (en) * 2016-01-04 2019-04-16 Toshiba Memory Corporation Parallel processing of a series of data units for writing

Also Published As

Publication number Publication date
CN110618787A (zh) 2019-12-27
US10817176B2 (en) 2020-10-27
US20190042093A1 (en) 2019-02-07

Similar Documents

Publication Publication Date Title
DE102019113048A1 (de) Rechen-abladung in blockspeicherung unter verwendung virtueller objekte
US20190163364A1 (en) System and method for tcp offload for nvme over tcp-ip
US10496371B2 (en) Key-value compaction
DE112020006859T5 (de) Beibehaltung von speicher-namensraum-identifizierern für die migration von virtualisierten ausführungsumgebungen im laufenden betrieb
DE112020000178T5 (de) Verwaltung von in zonen unterteilten namensräumen nichtflüchtiger speicherungsvorrichtungen
DE112013003255B4 (de) Managementmechanismus für fehlerhafte Blöcke
US20150039815A1 (en) System and method for interfacing between storage device and host
DE102019102883A1 (de) Technologien zum Bewegen von Arbeitslasten zwischen Hardwarewarteschlangenmanagern
DE112012005222T5 (de) Halbleiter-Datenspeicherverwaltung
DE102019120573A1 (de) Technologien zur rechnerischen speicherung über ablade-kernel-erweiterungen
DE102015119894A1 (de) Techniken für die zusammenarbeitende Ausführung zwischen asymmetrischen Prozessorkernen
US20190095107A1 (en) Data classification for placement within storage devices
DE102020122182A1 (de) Virtuelle-maschine-replikation und -migration
DE102011085989A1 (de) Verfahren und Vorrichtung zum Ausführen von parallelen Speicherlese- und Speicherschreiboperationen
US11132291B2 (en) System and method of FPGA-executed flash translation layer in multiple solid state drives
DE112018000839T5 (de) Datenspeichervorrichtung, die eingerichtet ist, um Vorgänge unter Verwendung einer drahtlosen Schnittstelle durchzuführen
DE102022129936A1 (de) Techniken zur Erweiterung des Systemspeichers durch Nutzung des verfügbaren Gerätespeichers
DE102020103521A1 (de) Minimieren der Nutzung von Hardware-Zählern bei getriggerten Operationen für kollektive Kommunikation
DE102022105725A1 (de) Verfahren und einrichtungen zur durchführung von gewichtungs- und aktivierungskomprimierung und -dekomprimierung
DE112020003004T5 (de) Dma-scatter- und gather-operationen für nicht zusammenhängenden speicher
US20130346714A1 (en) Hardware-Based Accelerator For Managing Copy-On-Write
DE102019112291A1 (de) Verbessertes speicherungsmodell für ein computersystem mit persistentem systemspeicher
US10216445B2 (en) Key-value deduplication
DE102022121773A1 (de) In-memory-assoziativverarbeitungssystem
DE102022121767A1 (de) In-memory-assoziativverarbeitung für vektoren