DE112016007538T5 - TECHNOLOGY FOR REALIZING A BINARY DISCONTINUED NON-VOLATILE MEMORY EXPRESS DRIVER - Google Patents
TECHNOLOGY FOR REALIZING A BINARY DISCONTINUED NON-VOLATILE MEMORY EXPRESS DRIVER Download PDFInfo
- Publication number
- DE112016007538T5 DE112016007538T5 DE112016007538.3T DE112016007538T DE112016007538T5 DE 112016007538 T5 DE112016007538 T5 DE 112016007538T5 DE 112016007538 T DE112016007538 T DE 112016007538T DE 112016007538 T5 DE112016007538 T5 DE 112016007538T5
- Authority
- DE
- Germany
- Prior art keywords
- driver
- memory
- queue
- kernel
- binary
- 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
Links
- 230000015654 memory Effects 0.000 title claims abstract description 341
- 238000005516 engineering process Methods 0.000 title description 8
- CTBUVTVWLYTOGO-UWVJOHFNSA-N 2-[(11z)-11-[3-(dimethylamino)propylidene]-6h-benzo[c][1]benzoxepin-2-yl]acetaldehyde Chemical compound C1OC2=CC=C(CC=O)C=C2C(=C/CCN(C)C)\C2=CC=CC=C21 CTBUVTVWLYTOGO-UWVJOHFNSA-N 0.000 title 1
- 238000000034 method Methods 0.000 claims abstract description 38
- 238000012545 processing Methods 0.000 claims description 55
- 239000004065 semiconductor Substances 0.000 claims description 13
- 229920000642 polymer Polymers 0.000 claims description 12
- 229910052710 silicon Inorganic materials 0.000 claims description 8
- 239000010703 silicon Substances 0.000 claims description 8
- 230000008859 change Effects 0.000 claims description 7
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 claims description 6
- 150000004770 chalcogenides Chemical class 0.000 claims description 6
- 239000002070 nanowire Substances 0.000 claims description 6
- 239000012782 phase change material Substances 0.000 claims description 6
- 230000003068 static effect Effects 0.000 claims description 6
- 230000001360 synchronised effect Effects 0.000 claims description 6
- 230000008569 process Effects 0.000 claims description 5
- 229910052814 silicon oxide Inorganic materials 0.000 claims description 4
- -1 silicon oxide nitride Chemical class 0.000 claims description 4
- 238000007726 management method Methods 0.000 description 17
- 238000010586 diagram Methods 0.000 description 12
- 238000011161 development Methods 0.000 description 6
- 238000003491 array Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 230000005055 memory storage Effects 0.000 description 3
- 238000013500 data storage Methods 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 239000000523 sample Substances 0.000 description 2
- 101100498818 Arabidopsis thaliana DDR4 gene Proteins 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 239000000872 buffer Substances 0.000 description 1
- 239000005387 chalcogenide glass Substances 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 150000001875 compounds Chemical class 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 239000012530 fluid Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 229910044991 metal oxide Inorganic materials 0.000 description 1
- 150000004706 metal oxides Chemical class 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000000206 photolithography Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 238000001228 spectrum Methods 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/10—Program control for peripheral devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4411—Configuring for operating with peripheral devices; Loading of device drivers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0026—PCI express
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
Systeme, Vorrichtungen und Verfahren können einen binärverzweigten Treiber zum Verwalten von Non-Volatile-Memory(NVM)-express(NVMe)-Vorrichtungen und/oder einer Dateisystemspeicherung bereitstellen. Insbesondere können Systeme, Vorrichtungen und Verfahren einen Weg zum Sicherstellen einer hohen Eingabe/Ausgabe-Leistung unter Verwendung eines binärverzweigten NVMe-Treibers bereitstellen, welcher einen Userspace-Treiber und einen Kernelspace-Treiber umfasst. Die Systeme, Vorrichtungen und Verfahren können dafür sorgen, dass der binärverzweigte Treiber Zugriffsanforderungen zu dem Userspace-Treiber und/oder dem Kernelspace-Treiber leitet, basierend auf einem oder mehreren aus der Leseintensität oder der Schreibintensität einer Anwendung und/oder Dateien, die von der Anwendung verwendet werden, um für eine hohe Leistung hinsichtlich der Transaktionen je Sekunde (TPS) zu sorgen.Systems, devices, and methods may provide a binary-branched driver for managing nonvolatile memory (NVM) express (NVMe) devices and / or file system storage. In particular, systems, devices, and methods may provide a way to ensure high input / output performance using a binary-branched NVMe driver that includes a userspace driver and a kernelspace driver. The systems, apparatus, and methods may provide that the binary-branched driver directs access requests to the user-space driver and / or kernel-space driver based on one or more of the read intensity or write intensity of an application and / or files accessed by the user Application to provide high performance in terms of transactions per second (TPS).
Description
TECHNISCHES GEBIETTECHNICAL AREA
Ausführungsformen betreffen allgemein die Technologie nichtflüchtiger Speicher. Insbesondere betreffen Ausführungsformen eine Art und Weise zum Bereitstellen einer hohen Eingabe-Ausgabe-Leistungsfähigkeit unter Verwendung eines binärverzweigten Non-Volatile-Memory(NVM)-express(NVMe)-Treibers zum Verwalten einer Dateisystemspeicherung und/oder einer NVMe-Vorrichtungsspeicherung.Embodiments generally relate to nonvolatile memory technology. In particular, embodiments relate to a manner of providing high input-output performance using a non-volatile-memory (NVM) -express (NVMe) binarized driver for managing file system storage and / or NVMe device storage.
HINTERGRUNDBACKGROUND
Die Non-Volatile-Memory(NVM)-express(NVMe)-Technology ermöglicht, dass Übereinstimmungsstufen, die sich in modernen Halbleiterlaufwerken (Solid State Drives, SSDs) finden, von Host-Hardware und -Software genutzt werden. Die NVMe-Technologie kann genutzt werden, um Daten in einem Datencenter zu speichern, einen Eingabe/Ausgabe-Aufwand zu verringern und verschiedene Leistungsverbesserungen im Vergleich zu früheren logischen Vorrichtungsschnittstellen zu schaffen, welche mehrere lange Befehlswarteschlangen und eine verringerte Latenzzeit umfassen können. Jedoch können Software-Stapel für existierende NVMe-Lösungen aufgrund von Ressourcen fordernden Anwendungen (z. B. leseintensiven Anwendungen und/oder schreibintensiven Anwendungen) vor der Herausforderung stehen, den immer weiter ansteigenden Leistungsanforderungen (z. B. Stromverbrauch und Verarbeitungskapazitäten) zu genügen.Non-Volatile Memory (NVM) Express (NVMe) technology enables compliance levels found in modern solid state drives (SSDs) to be used by host hardware and software. NVMe technology can be used to store data in a data center, reduce input / output overhead, and provide various performance improvements over previous logical device interfaces, which can include multiple long instruction queues and reduced latency. However, software stacks for existing NVMe solutions may face the challenge of meeting ever-increasing performance demands (eg, power consumption and processing capacities) due to resource-demanding applications (eg, read-intensive applications and / or write-intensive applications).
Figurenlistelist of figures
Die verschiedenen Vorteile der Ausführungsformen werden dem Fachmann ersichtlich, wenn er die folgende Beschreibung und die anhängenden Ansprüche liest und auf die folgenden Zeichnungen Bezug nimmt, in welchen:
-
1 eine Veranschaulichung eines Beispiels einer binärverzweigten Non-Volatile-Memory(NVM)-express(NVMe)-Treiberarchitektur gemäß einer Ausführungsform ist; -
2 ein Ablaufplan eines Beispiels eines Verfahrens zum Initialisieren eines Kernelspace-Treibers gemäß einer Ausführungsform ist; -
3 ein Ablaufplan eines Beispiels eines Verfahrens zum Initialisieren eines binärverzweigten Treibers gemäß einer Ausführungsform ist; -
4 ein Blockschaubild eines Beispiels einer hohen Rate an Lesetransaktionen je Sekunde (Transaction Per Second, TPS) für eine Datenbankanwendung gemäß einer Ausführungsform ist; -
5 ein Blockschaubild eines Beispiels einer Anwendung mit hoher Dateizugriffsnutzung gemäß einer Ausführungsform ist; -
6 ein Blockschaubild eines Beispiels zweier unabhängiger Anwendungen, welche eine NVMe-Vorrichtung gemeinsam benutzen, gemäß einer Ausführungsform ist; -
7 ein Blockschaubild eines Beispiels eines Prozessors gemäß einer Ausführungsform ist; und -
8 ein Blockschaubild eines Beispiels eines Computersystems gemäß einer Ausführungsform ist.
-
1 Figure 4 is an illustration of an example of a non-volatile-memory (NVM) non-volatile-memory (NVMe) driver architecture according to one embodiment; -
2 Fig. 10 is a flowchart of an example of a method for initializing a kernel space driver according to an embodiment; -
3 Fig. 10 is a flowchart of an example of a method for initializing a binary-branched driver according to an embodiment; -
4 Figure 12 is a block diagram of one example of a high rate of Transaction Per Second (TPS) for a database application according to one embodiment; -
5 Figure 12 is a block diagram of an example of a high file access usage application according to one embodiment; -
6 a block diagram of an example of two independent applications sharing an NVMe device according to one embodiment; -
7 Figure 12 is a block diagram of an example of a processor according to an embodiment; and -
8th Figure 12 is a block diagram of an example of a computer system according to one embodiment.
BESCHREIBUNG VON AUSFÜHRUNGSFORMENDESCRIPTION OF EMBODIMENTS
Die binärverzweigte NVMe-Treiberarchitektur 100 kann einen Host-Speicher
Die Speichersteuerung
Die binärverzweigte NVMe-Treiberarchitektur
Der Treiber-Binärverzweiger kann den Kernelspace-Treiber
Der Treiber-Binärverzweiger kann in dem Host-Speicher
Das eine oder die mehreren Kernel-Warteschlangenpaare
Der Treiber-Binärverzweiger kann unter Verwendung der Datenstruktur-Metadaten den Userspace-Treiber
Nach dem Initialisieren sind der Kernelspace-Treiber
Der binärverzweigte Treiber
Wenn es sich bei einer oder mehreren Speicherzugriffsanforderungen um eine Leseanforderung handelt, können der binärverzweigte Treiber
Platten-Lese/Schreib-Befehle können auf der Basis von Benutzerkonfigurationsinformationen (z. B. eine oder mehrere Anwendungen und Anwendungstypen, umfassend Anwendungen des leseintensiven oder schreibintensiven Typs) durch Kernel-Dateisysteme
Eine Anwendung
Der Treiber, der binärverzweigte Treiber
Wenn der Userspace-Treiber
In einem Beispiel können ein Kernelspace-Treiber
In einem anderen Beispiel kann eine Anwendung, wie z. B. die Anwendung
In noch einem anderen Beispiel können zwei Anwendungen, wie z. B. die Anwendungen
Die Verwendung des binärverzweigten Treibers
In einem anderen Beispiel kann ein Userspace-Dateisystem entwickelt und realisiert werden, um einen NVMe-Treiber (z. B. einen INTEL-SPDK-NVMe-Treiber) in dem Benutzernamensraum zu verwenden, um zu versuchen, NVMe-Lesevorgänge oder Lese- und Schreiboperationen zu beschleunigen. Jedoch kann eine Entwicklung zum Realisieren eines Userspace-Dateisystems bedeutende Zeit in Anspruch nehmen und Kosten verursachen und ein Instabilitäts- und Qualitätsrisiko für das Dateisystem bedeuten. Als ein weiteres Beispiel kann bei Verwendung eines herkömmlichen Kernelspace-Treibers zur Durchführung von NVMe-Schreibvorgängen und NVMe-Lesevorgängen unter Verwendung eines alten Kernelspace-Dateisystems die Leistungsfähigkeit von NVMe-Lese- und/oder NVMe-Lese- und -Schreiboperationen nicht garantiert werden. Überdies können relativ teure entsprechende Komponenten (z. B. eine schnellere CPU, eine 9-10xCPU) erforderlich sein, um Nachteile zu überwinden und um die maximale NVMe-Hardware-Leistung zu erreichen, die ansonsten unter Verwendung eines binärverzweigten Treibers, z. B. des binärverzweigten Treibers
In noch einem anderen Beispiel kann der Userspace-Treiber
Im dargestellten Verarbeitungsblock
Nun übergehend zu
Im dargestellten Verarbeitungsblock
Der Prozessorkern
Nach Abschluss der Ausführung der Operationen, die von den Code-Befehlen spezifiziert sind, legt die Back-End-Logik
Wenngleich in
Der Speicher kann extern des Prozessors angeordnet sein (z. B. externer Speicher) und/oder kann mit dem Prozessor verbunden sein, zum Beispiel durch einen Speicherbus. Außerdem kann der Speicher als Hauptspeicher realisiert sein. Der Speicher kann beispielsweise flüchtigen Speicher, nichtflüchtigen Speicher usw. oder Kombinationen davon umfassen. Beispielsweise kann der Speicher dynamischen Direktzugriffsspeicher (DRAM), der als ein oder mehrere Speichermodule konfiguriert ist, wie zum Beispiel Dual-Inline-Speichermodule (DIMMs), Small-Outline-DIMMs (SODIMMs) usw., Nur-Lese-Speicher (ROM) (z. B. programmierbaren Nur-Lese-Speicher (PROM), löschbaren PROM (EPROM), elektrisch EPROM (EEPROM) usw.), Phasenwechselspeicher (Phase Change Memory, PCM) usw. oder Kombinationen davon umfassen. Der Speicher kann ein Matrixfeld von Speicherzellen umfassen, die in Reihen und Spalten angeordnet sind und in unabhängig adressierbare Speicherstellen partitioniert sind. Der Prozessor und/oder das Betriebssystem können mit dem Speicher eine Sekundärspeicher-Speicherung nutzen, um die Leistungsfähigkeit, die Kapazität und die Flexibilität zu verbessern.The memory may be external to the processor (eg, external memory) and / or may be connected to the processor, for example, a memory bus. In addition, the memory may be realized as main memory. The memory may, for example, be volatile memory, nonvolatile memory, etc., or combinations thereof. For example, the memory may be dynamic random access memory (DRAM) configured as one or more memory modules, such as dual inline memory modules (DIMMs), small outline DIMMs (SODIMMs), etc., read only memory (ROM). (e.g., programmable read only memory (PROM), erasable PROM (EPROM), electrically EPROM (EEPROM), etc.), phase change memory (PCM), etc., or combinations thereof. The memory may comprise a matrix array of memory cells arranged in rows and columns and partitioned into independently addressable memory locations. The processor and / or the operating system may use secondary memory storage with the memory to improve performance, capacity, and flexibility.
Nicht-beschränkende Beispiele für nichtflüchtigen Speicher können beliebige oder eine Kombination aus Folgenden umfassen: Halbleiterspeicher (z. B. planarer oder 3-dimensionaler (3D) NAND-Flash-Speicher oder NOR-Flash-Speicher), 3D-Kreuzpunktspeicher, Speichervorrichtungen, bei denen ein Chalkogenid-Phasenwechselmaterial (z. B. Chalkogenidglas) verwendet wird, byte-adressierbare nichtflüchtige Speichervorrichtungen, ferroelektrischer Speicher, Silizium-Oxid-Nitrid-Oxid-Silizium(SONOS)-Speicher, Polymerspeicher (z. B. ferroelektrischer Polymerspeicher), ferroelektrischer Transistor-Direktzugriffsspeicher (Fe-TRAM), Ovonikspeicher, Nanodrahtspeicher, elektrisch löschbarer programmierbarer Nur-Lese-Speicher, verschiedene andere Typen nichtflüchtiger Direktzugriffsspeicher (RAMs) und Speicher mit magnetischer Speicherung. In einigen Ausführungsformen kann ein 3D-Kreuzpunktspeicher eine transistorfreie stapelbare Kreuzpunktarchitektur umfassen, bei welcher die Speicherzellen am Schnittpunkt von Wortleitungen und Bitleitungen sitzen und individuell adressierbar sind und bei welcher eine Bitspeicherung auf einem Wechsel des Bahnwiderstands basiert. In bestimmten Ausführungsformen kann ein Speichermodul mit nichtflüchtigem Speicher einen oder mehrere Standards, die vom Joint Electron Device Engineering Council (JEDEC) herausgegeben wurden, wie z. B. JESD218, JESD219, JESD220-1, JESD223B, JESD223-1, oder einen anderen geeigneten Standard einhalten (die hierin zitierten JEDEC-Standards sind unter jedec.org einsehbar).Non-limiting examples of nonvolatile memory may include any or a combination of the following: semiconductor memory (eg, planar or 3-dimensional (3D) NAND flash memory or NOR flash memory), 3D crosspoint memory, memory devices using a chalcogenide phase change material (eg, chalcogenide glass), byte addressable nonvolatile memory devices, ferroelectric memory, silicon oxide-nitride-oxide-silicon (SONOS) memory, polymer memory (e.g., ferroelectric polymer memory), ferroelectric Transistor Random Access Memory (Fe-TRAM), Ovonik Memory, Nanowire Memory, Electrically Erasable Programmable Read Only Memory, Various Other Non-Volatile Random Access Memory (RAM) Types, and Magnetic Storage Memory. In some embodiments, a 3-D crosspoint memory may include a transistorless stackable crosspoint architecture in which the memory cells are located at the intersection of word lines and bit lines and individually addressable, and where bit storage is based on a change in track resistance. In certain embodiments, a nonvolatile memory module may include one or more standards issued by the Joint Electron Device Engineering Council (JEDEC), such as: JESD218, JESD219, JESD220-1, JESD223B, JESD223-1, or any other suitable standard (the JEDEC standards cited herein are available at jedec.org).
Flüchtiger Speicher ist ein Speichermedium, welches Strom benötigt, um den Zustand von Daten, die durch das Medium gespeichert werden, aufrechtzuerhalten. Beispiele für flüchtigen Speicher können verschiedene Typen von Direktzugriffsspeicher (RAM) umfassen, wie z. B. dynamischen Direktzugriffsspeicher (DRAM) oder statischen Direktzugriffsspeicher (SRAM). Ein spezieller DRAM-Typ, der in einem Speichermodul verwendet werden kann, ist synchroner dynamischer Direktzugriffsspeicher (SDRAM). In speziellen Ausführungsformen hält der DRAM der Speichermodule einen Standard ein, der von der JEDEC herausgegeben wurde, wie z. B. JESD79F für Double-Data-Rate(DDR)-SDRAM, JESD79-2F für DDR2-SDRAM, JESD79-3F für DDR3-SDRAM oder JESD79-4A für DDR4-SDRAM (diese Standards sind unter www.jedec.org einsehbar). Solche Standards (und ähnliche Standards) können als Standards auf DDR-Basis bezeichnet werden und Kommunikationsschnittstellen der Speichervorrichtungen, die solche Standards realisieren, können als Schnittstellen auf DDR-Basis bezeichnet werden.Volatile memory is a storage medium that requires power to maintain the state of data stored by the medium. Examples of volatile memory may include various types of random access memory (RAM), such as: Dynamic random access memory (DRAM) or static random access memory (SRAM). One particular type of DRAM that may be used in a memory module is Synchronous Dynamic Random Access Memory (SDRAM). In particular embodiments, the DRAM of the memory modules complies with a standard issued by the JEDEC, such as, for example, US Pat. Eg JESD79F for Double Data Rate (DDR) SDRAM, JESD79-2F for DDR2 SDRAM, JESD79-3F for DDR3 SDRAM or JESD79-4A for DDR4 SDRAM (these standards are available at www.jedec.org) , Such standards (and similar standards) may be referred to as DDR-based standards, and communication interfaces of the memory devices that implement such standards may be referred to as DDR-based interfaces.
Nun Bezug nehmend auf
Das System
Wie in
Jedes Verarbeitungselement
Obwohl mit lediglich zwei Verarbeitungselementen
Das erste Verarbeitungselement
Das erste Verarbeitungselement
Im Gegenzug kann das I/O-Teilsystem
Wie in
Es sei angemerkt, dass andere Ausführungsformen in Erwägung gezogen werden. Beispielsweise kann ein System statt der Punkt-zu-Punkt-Architektur der
Weitere Anmerkungen und Beispiele:Further comments and examples:
Beispiel 1 kann ein System umfassen, umfassend einen Host-Speicher, der einen flüchtigen Speicher und/oder einen nichtflüchtigen Speicher umfasst, und eine Speichersteuerung, die kommunikativ mit dem Host-Speicher verbunden ist, wobei die Speichersteuerung einen binärverzweigten Treiber zum Verarbeiten einer oder mehrerer Speicherzugriffsanforderungen zum Zugreifen auf den Speicher umfasst, wobei der binärverzweigte Treiber einen Kernelspace-Treiber, der kommunikativ mit einem Kernel-Dateisystem verbunden ist, und einen Userspace-Treiber umfasst, der kommunikativ mit einer Vorrichtung verbunden ist.Example 1 may include a system comprising a host memory including a volatile memory and / or a non-volatile memory, and a memory controller communicatively coupled to the host memory, the memory controller comprising a binary-branched driver for processing one or more of the memory Memory access requests for accessing the memory, wherein the binary-branched driver comprises a kernel space driver communicatively connected to a kernel file system and a userspace driver communicatively connected to a device.
Beispiel 2 kann das System des Beispiels 1 umfassen, ferner umfassend einen Treiber-Binärverzweiger zum Erzeugen des binärverzweigten Treibers, wobei der Treiber-Binärverzweiger Benutzerkonfigurationsinformationen abruft, die verwendet werden, um den binärverzweigten Treiber zu konfigurieren, wobei die Benutzerkonfigurationsinformationen eine Anzahl von Eingabe-Ausgabe-Warteschlangen und eine Anzahl von Namensräumen zur Verwendung für den Kernelspace-Treiber und den Userspace-Treiber umfassen, wobei die eine oder die mehreren Speicherzugriffsanforderungen von einer oder mehreren Anwendungen empfangen werden, die dafür modifiziert sind, den binärverzweigten Treiber zu nutzen, und wobei die eine oder die mehreren Anwendungen eine leseintensive Anwendung und/oder eine schreibintensive Anwendung umfassen.Example 2 may include the system of Example 1, further comprising a driver binarizer for generating the binary-branched driver, wherein the driver binarizer retrieves user configuration information used to configure the binary-branched driver, the user configuration information comprising a number of input-output Queues and a number of namespaces for use with the kernelspace driver and the userspace driver, wherein the one or more memory access requests are received from one or more applications modified to utilize the binary-branched driver, and wherein the one or more applications comprise a read-intensive application and / or a write-intensive application.
Beispiel 3 kann das System des Beispiels 2 umfassen, wobei der Treiber-Binärverzweiger den Kernelspace-Treiber initialisiert, wobei der Treiber-Binärverzweiger eine Datenstruktur in einem gemeinsam genutzten Speicherraum des Host-Speichers erzeugt, wobei der Host-Speicher einen Treiber umfasst, wobei der Treiber den Kernelspace-Treiber über den binärverzweigten Treiber verwaltet, wobei auf den gemeinsam genutzten Speicherraum über ein Namensraumpaar Zugriffsmöglichkeit besteht, wobei das Binärverzweiger-Namensraumpaar einen Kernel-Namensraum und einen Benutzer-Namensraum umfasst, wobei der nichtflüchtige Speicher eine Dateisystem-Vorrichtungsspeicherung und eine Non-Volatile-Memory(NVM)-express(NVMe)-Blockvorrichtungsspeicherung umfasst. Der Treiber-Binärverzweiger erzeugt ferner in dem Host-Speicher den Kernel-Namensraum, ein oder mehrere Kernel-Warteschlangenpaare, den Benutzer-Namensraum und ein oder mehrere Userspace-Warteschlangenpaare, ordnet den Kernel-Namensraum und das eine oder die mehreren Kernel-Warteschlangenpaare dem Kernelspace-Treiber zu, aktualisiert die Datenstruktur mit Kernel-Warteschlangenpaar-Metadaten, welche den Kernel-Namensraum und das eine oder die mehreren Kernel-Warteschlangenpaare identifizieren, und registriert die Vorrichtung in dem Treiber, wobei die Vorrichtung die NVMe-Blockvorrichtungsspeicherung ist.Example 3 may include the system of Example 2 wherein the driver binarizer initializes the kernelspace driver, wherein the driver binarizer generates a data structure in a shared memory space of the host memory, the host memory including a driver Driver manages the kernel space driver via the binarized driver, wherein the shared memory space is accessed via a namespace pair, the binarizer name space pair comprising a kernel namespace and a user namespace, the nonvolatile memory comprising a file system device storage and a non-volatile memory -Volatile Memory (NVM) Express (NVMe) Block Device Storage. The driver binarizer also generates in the host memory the kernel namespace, one or more kernel queue pairs, the user namespace, and one or more user space queue pairs, associates the kernel namespace and the one or more kernel queue pairs Kernelspace driver, updates the data structure with kernel queue pair metadata identifying the kernel namespace and the one or more kernel queue pairs, and registers the device in the driver, the device being NVMe block storage.
Beispiel 4 kann das System des Beispiels 3 umfassen, wobei die Datenstruktur Datenstruktur-Metadaten umfasst, welche eines oder mehrere aus physischen Adressen von Zulassungswarteschlangen, physischen Adressen von Abschlusswarteschlangen und physischen Adressen von Warteschlangengrößen- oder Warteschlangen-Doorbell-Registern umfassen.Example 4 may include the system of Example 3, where the data structure comprises data structure metadata that includes one or more of admission queue physical addresses, completion queue physical addresses, and queue address or queue orphan queue physical addresses.
Beispiel 5 kann das System des Beispiels 3 umfassen, wobei das eine oder die mehreren Kernel-Warteschlangenpaare eines oder mehrere eines Verwaltungs-Warteschlangenpaars, umfassend eine Verwaltungs-Zulassungswarteschlange und eine Verwaltungs-Abschlusswarteschlange, und eines oder mehrere eines Treiber-Eingabe-Ausgabe-Warteschlangenpaars umfassen, umfassend eine Treiber-Zulassungswarteschlange und eine Treiber-Abschlusswarteschlange, und wobei das eine oder die mehreren Userspace-Warteschlangenpaare eine Userspace-Zulassungswarteschlange und eine Userspace-Abschlusswarteschlange umfassen.Example 5 may include the system of Example 3, wherein the one or more kernel queue pairs comprise one or more of a management queue pair comprising a management admission queue and a management completion queue, and one or more of a driver input-output queue pair comprising a driver admission queue and a driver completion queue, and wherein the one or more user space queue pairs comprise a userspace admission queue and a userspace completion queue.
Beispiel 6 kann das System des Beispiels 3 umfassen, wobei der Treiber-Binärverzweiger unter Verwendung der Datenstruktur-Metadaten den Userspace-Treiber initialisiert, wobei der Userspace-Treiber ein Aufrufmodus-Treiber ist, wobei der Treiber-Binärverzweiger die Benutzerkonfigurationsinformationen und die Datenstruktur-Metadaten abruft, die Vorrichtung auf der Grundlage der Benutzerkonfigurationsinformationen und der Datenstruktur-Metadaten erzeugt, die Datenstruktur mit den Userspace-Warteschlangenpaar-Metadaten aktualisiert und bei dem Userspace-Treiber eine Blockvorrichtungs-Schnittstelle zu der Vorrichtung registriert.Example 6 may include the system of Example 3, where the driver bin is initializing the user space driver using the data structure metadata, where the userspace driver is a call mode driver, wherein the driver bin is the user configuration information and the data structure metadata generates the device based on the user configuration information and the data structure metadata, updates the data structure with the user-space queue-pair metadata, and registers a block device interface with the device to the user-space driver.
Beispiel 7 kann das System des Beispiels 3 umfassen, wobei der binärverzweigte Treiber kommunikativ mit der Speichersteuerung verbunden ist und wobei der binärverzweigte Treiber von der einen oder den mehreren Anwendungen die eine oder die mehreren Speicherzugriffsanforderungen empfängt, auf die Dateisystem-Vorrichtungsspeicherung und/oder die NVMe-Blockvorrichtungsspeicherung zuzugreifen, die eine oder die mehreren Speicherzugriffsanforderungen unter Verwendung des binärverzweigten Treibers verarbeitet, unter Verwendung eines oder mehrerer aus dem Kernel-Namensraum, dem Benutzer-Namensraum, dem einen oder den mehreren Kernel-Warteschlangenpaaren und dem einen oder den mehreren Userspace-Warteschlangenpaaren auf der Grundlage der einen oder der mehreren Speicherzugriffsanforderungen aktualisiert und unter Verwendung der Speichersteuerung die Datenstruktur synchronisiert. Example 7 may include the system of Example 3 wherein the binary-branched driver is communicatively coupled to the memory controller and wherein the binary-branched driver receives the one or more memory access requests from the one or more applications to the file system device storage and / or the NVMe Block memory storage, which processes one or more memory access requests using the binary-branched driver, using one or more of the kernel namespace, the user namespace, the one or more kernel queue pairs, and the one or more user space queue pairs updated based on the one or more memory access requests, and synchronizes the data structure using the memory controller.
Beispiel 8 kann das System des Beispiels 3 umfassen, wobei der flüchtige Speicher Direktzugriffsspeicher (RAM) umfasst, z. B. eines oder mehrere aus dynamischem Direktzugriffsspeicher (DRAM), statischem Direktzugriffsspeicher (SRAM) und synchronem dynamischen Direktzugriffsspeicher (SDRAM), und wobei der nichtflüchtige Speicher nichtflüchtige Direktzugriffsspeicher umfasst, z. B. Halbleiterspeicher, 3D-Kreuzpunktspeicher, eine oder mehrere Speichervorrichtungen, bei denen ein Chalkogenid-Phasenwechselmaterial verwendet wird, byte-adressierbare nichtflüchtige Speichervorrichtungen, ferroelektrischen Speicher, Silizium-Oxid-Nitrid-Oxid-Silizium(SONOS)-Speicher, Polymerspeicher, z. B. ferroelektrischen Polymerspeicher, ferroelektrischen Transistor-Direktzugriffsspeicher (Fe-TRAM), Ovonikspeicher, Nanodrahtspeicher und/oder elektrisch löschbaren programmierbaren Nur-Lese-Speicher (EEPROM), wobei der Halbleiterspeicher planaren oder 3-dimensionalen (3D) NAND-Flash-Speicher und/oder NOR-Flash-Speicher umfasst, wobei der 3D-Kreuzpunktspeicher mindestens eines aus einer transistorfreien stapelbaren Kreuzpunktarchitektur umfasst, wobei die Speicherzellen an einem Schnittpunkt von Wortleitungen und Bitleitungen sitzen und die Speicherzellen individuell adressierbar sind, und die Bitspeicherung basiert auf einem Wechsel des Bahnwiderstands.Example 8 may include the system of Example 3, wherein the volatile memory comprises Random Access Memory (RAM), e.g. One or more of Dynamic Random Access Memory (DRAM), Static Random Access Memory (SRAM), and Synchronous Dynamic Random Access Memory (SDRAM), and wherein nonvolatile memory includes nonvolatile random access memory, e.g. Semiconductor memory, 3D crosspoint memory, one or more memory devices using a chalcogenide phase change material, byte addressable nonvolatile memory devices, ferroelectric memory, silicon oxide nitride oxide silicon (SONOS) memory, polymer memory, e.g. B. ferroelectric polymer memory, ferroelectric transistor random access memory (Fe-TRAM), Ovonikspeicher, nanowire memory and / or electrically erasable programmable read-only memory (EEPROM), wherein the semiconductor memory planar or 3-dimensional (3D) NAND flash memory and wherein the 3D crosspoint memory comprises at least one of a non-transistor stackable crosspoint architecture, wherein the memory cells are located at an intersection of word lines and bit lines and the memory cells are individually addressable, and the bit storage is based on a change in the track resistance ,
Beispiel 9 kann das System des Beispiels 8 umfassen, wobei, wenn es sich bei der einen oder den mehreren Speicherzugriffsanforderungen um eine Leseanforderung handelt, der binärverzweigte Treiber die eine oder die mehreren Speicherzugriffsanforderungen zu dem Userspace-Treiber leitet.Example 9 may include the system of Example 8, where, if the one or more memory access requests is a read request, the binary-branched driver directs the one or more memory access requests to the userspace driver.
Beispiel 10 kann das System eines der Beispiele 2 bis 8 umfassen, wobei, wenn es sich bei der einen oder den mehreren Speicherzugriffsanforderungen um eine Schreibanforderung handelt, der binärverzweigte Treiber die eine oder die mehreren Speicherzugriffsanforderungen zu dem Kernelspace-Treiber leitet.Example 10 may include the system of any of Examples 2 through 8, wherein if the one or more memory access requests is a write request, the binary branch driver directs the one or more memory access requests to the kernelspace driver.
Beispiel 11 kann ein Verfahren zum gemeinsamen Nutzen einer Non-Volatile-Memory(NVM)-express(NVMe)-Vorrichtung umfassen, umfassend Erzeugen eines binärverzweigte Treibers unter Verwendung eines Prozessors, der mit einem Host-Speicher verbunden ist, wobei der Host-Speicher einen flüchtigen Speicher und/oder einen nichtflüchtigen Speicher umfasst, wobei der binärverzweigte Treiber einen Kernelspace-Treiber, der kommunikativ mit einem Kernel-Dateisystem verbunden ist, und einen Userspace-Treiber umfasst, der kommunikativ mit einer Vorrichtung verbunden ist, und Verarbeiten einer oder mehrerer Speicherzugriffsanforderungen zum Zugreifen auf den nichtflüchtigen Speicher unter Verwendung des binärverzweigten Treibers.Example 11 may include a method of sharing a Non-Volatile Memory (NVM) Express (NVMe) device, comprising generating a binary-branched driver using a processor connected to a host memory, wherein the host memory a volatile memory and / or a non-volatile memory, the binary-branched driver comprising a kernel space driver communicatively connected to a kernel file system and a userspace driver communicatively connected to a device and processing one or more Memory access requests for accessing the non-volatile memory using the binary-branched driver.
Beispiel 12 kann das Verfahren des Beispiels 11 umfassen, ferner umfassend Empfangen der einen oder der mehreren Speicherzugriffsanforderungen von einer oder mehreren Anwendungen, die dafür modifiziert sind, den binärverzweigten Treiber zu verwenden, wobei das Erzeugen des binärverzweigten Treibers Abrufen von Benutzerkonfigurationsinformationen, die verwendet werden, um den binärverzweigten Treiber zu konfigurieren, unter Verwendung eines Treiber-Binärverzweigers umfasst, wobei die Benutzerkonfigurationsinformationen eine Anzahl von Eingabe-Ausgabe-Warteschlangen und eine Anzahl von Namensräumen zur Verwendung für den Kernelspace-Treiber und den Userspace-Treiber umfassen, wobei die eine oder die mehreren Anwendungen eine leseintensive Anwendung und/oder eine schreibintensive Anwendung umfassen und wobei die eine oder die mehreren Speicherzugriffsanforderungen eine Leseanforderung und/oder eine Schreibanforderung umfassen.Example 12 may include the method of Example 11, further comprising receiving the one or more memory access requests from one or more applications modified to use the binary-branched driver, wherein generating the binary-branched driver retrieves user configuration information that is used to configure the binary-branched driver using a driver binarizer, the user configuration information comprising a number of input-output queues and a number of namespaces for use with the kernelspace driver and the userspace driver, one or more of multiple applications comprise a read-intensive application and / or a write-intensive application, and wherein the one or more memory access requests comprise a read request and / or a write request.
Beispiel 13 kann das Verfahren des Beispiels 12 umfassen, ferner umfassend Initialisieren des Kernelspace-Treibers, umfassend Erzeugen einer Datenstruktur in einem gemeinsam genutzten Speicherraum des Host-Speichers, wobei der Host-Speicher einen Treiber umfasst, wobei der Treiber den Kernelspace-Treiber über den binärverzweigten Treiber verwaltet, wobei auf den gemeinsam genutzten Speicherraum über ein Namensraumpaar Zugriffsmöglichkeit besteht, umfassend einen Kernel-Namensraum und einen Benutzer-Namensraum, wobei der nichtflüchtige Speicher eine Dateisystem-Vorrichtungsspeicherung und eine NVMe-Blockvorrichtungsspeicherung umfasst. Das Initialisieren des Kernelspace-Treibers umfasst ferner Erzeugen des Kernel-Namensraums, eines oder mehrerer Kernel-Warteschlangenpaare, des Benutzer-Namensraums und eines oder mehrerer Userspace-Warteschlangenpaare in dem Host-Speicher, Zuordnen des Kernel-Namensraums und des einen oder der mehreren Kernel-Warteschlangenpaare zu dem Kernelspace-Treiber, Aktualisieren der Datenstruktur mit Kernel-Warteschlangenpaar-Metadaten, welche den Kernel-Namensraum und das eine oder die mehreren Kernel-Warteschlangenpaare identifizieren, und Registrieren der Vorrichtung in dem Treiber, wobei die Vorrichtung die NVMe-Blockvorrichtungsspeicherung ist.Example 13 may include the method of Example 12, further comprising initializing the kernel space driver, comprising generating a data structure in a shared memory space of the host memory, wherein the host memory comprises a driver, wherein the driver drives the kernel space driver via the kernel space driver a shared-name random access memory, comprising a kernel namespace and a user namespace, the nonvolatile memory comprising file system device storage and NVMe block storage. Initializing the kernel space driver further includes generating the kernel namespace, one or more kernel queue pairs, the user namespace, and one or more user space queue pairs in the host memory, associating the kernel name space Kernel namespace and the one or more kernel queue pairs to the kernelspace driver, updating the data structure with kernel queue pair metadata identifying the kernel namespace and the one or more kernel queue pairs, and registering the device in the kernel Driver, where the device is the NVMe block device storage.
Beispiel 14 kann das Verfahren des Beispiels 13 umfassen, wobei die Datenstruktur Datenstruktur-Metadaten umfasst, welche eines oder mehrere aus physischen Adressen von Zulassungswarteschlangen, physischen Adressen von Abschlusswarteschlangen und physischen Adressen von Warteschlangengrößen- oder Warteschlangen-Doorbell-Registern umfassen.Example 14 may include the method of Example 13, wherein the data structure comprises data structure metadata comprising one or more of admission queue physical addresses, completion queue physical addresses, and queue queue or queue address physical address queuing physical addresses.
Beispiel 15 kann das Verfahren des Beispiels 13 umfassen, wobei das eine oder die mehreren Kernel-Warteschlangenpaare eines oder mehrere eines Verwaltungs-Warteschlangenpaars, umfassend eine Verwaltungs-Zulassungswarteschlange und eine Verwaltungs-Abschlusswarteschlange, und eines oder mehrere eines Treiber-Eingabe-Ausgabe-Warteschlangenpaars umfassen, umfassend eine Treiber-Zulassungswarteschlange und eine Treiber-Abschlusswarteschlange, und wobei das eine oder die mehreren Userspace-Warteschlangenpaare eine Userspace-Zulassungswarteschlange und eine Userspace-Abschlusswarteschlange umfassen.Example 15 may include the method of Example 13, wherein the one or more kernel queue pairs comprises one or more of a management queue pair comprising a management admission queue and a management completion queue, and one or more of a driver input-output queue pair comprising a driver admission queue and a driver completion queue, and wherein the one or more user space queue pairs comprise a userspace admission queue and a userspace completion queue.
Beispiel 16 kann das Verfahren des Beispiels 13 umfassen, ferner umfassend Initialisieren des Userspace-Treibers unter Verwendung der Datenstruktur-Metadaten, wobei der Userspace-Treiber ein Aufrufmodus-Treiber ist, wobei das Initialisieren des Userspace-Treibers Abrufen der Benutzerkonfigurationsinformationen und der Datenstruktur-Metadaten, Erzeugen der Vorrichtung auf der Grundlage der Benutzerkonfigurationsinformationen und der Datenstruktur-Metadaten, Aktualisieren der Datenstruktur mit den Userspace-Warteschlangenpaar-Metadaten und Registrieren einer Blockvorrichtungs-Schnittstelle zu der Vorrichtung bei dem Userspace-Treiber umfasst.Example 16 may include the method of Example 13, further comprising initializing the userspace driver using the data structure metadata, the user space driver being a call mode driver, wherein initializing the userspace driver retrieving the user configuration information and the data structure metadata , Generating the device based on the user configuration information and the data structure metadata, updating the data structure with the user space queue pair metadata, and registering a block device interface with the device at the user space driver.
Beispiel 17 kann das Verfahren des Beispiels 13 umfassen, ferner umfassend Empfangen der einen oder der mehreren Speicherzugriffsanforderungen unter Verwendung des binärverzweigten Treibers von der einen oder den mehreren Anwendungen, um auf die Dateisystem-Vorrichtungsspeicherung und/oder die NVMe-Blockvorrichtungsspeicherung zuzugreifen, Verarbeiten der einen oder der mehreren Speicherzugriffsanforderungen unter Verwendung des binärverzweigten Treibers, Aktualisieren eines oder mehrerer aus dem Kernel-Namensraum, dem Benutzer-Namensraum, dem einen oder den mehreren Kernel-Warteschlangenpaaren und dem einen oder den mehreren Userspace-Warteschlangenpaaren auf der Grundlage der einen oder der mehreren Speicherzugriffsanforderungen unter Verwendung einer Speichersteuerung, die kommunikativ mit dem binärverzweigten Treiber verbunden ist, und Synchronisieren der Datenstruktur unter Verwendung der Speichersteuerung.Example 17 may include the method of Example 13, further comprising receiving the one or more memory access requests using the binary-branched driver from the one or more applications to access the file system device storage and / or the NVMe block device storage or the plurality of memory access requests using the binary-branched driver, updating one or more of the kernel namespace, the user namespace, the one or more kernel queue pairs, and the one or more user-space queue pairs based on the one or more Memory access requests using a memory controller communicatively connected to the binary-branched driver, and synchronizing the data structure using the memory controller.
Beispiel 18 kann das Verfahren des Beispiels 13 umfassen, wobei der flüchtige Speicher Direktzugriffsspeicher (RAM) umfasst, z. B. dynamischen Direktzugriffsspeicher (DRAM), statischen Direktzugriffsspeicher (SRAM) und/oder synchronen dynamischen Direktzugriffsspeicher (SDRAM), und wobei der nichtflüchtige Speicher nichtflüchtige Direktzugriffsspeicher umfasst, z. B. Halbleiterspeicher, 3D-Kreuzpunktspeicher, eine oder mehrere Speichervorrichtungen, bei denen ein Chalkogenid-Phasenwechselmaterial verwendet wird, byte-adressierbare nichtflüchtige Speichervorrichtungen, ferroelektrischen Speicher, Silizium-Oxid-Nitrid-Oxid-Silizium(SONOS)-Speicher, Polymerspeicher, z. B. ferroelektrischen Polymerspeicher, ferroelektrischen Transistor-Direktzugriffsspeicher (Fe-TRAM), Ovonikspeicher, Nanodrahtspeicher und/oder elektrisch löschbaren programmierbaren Nur-Lese-Speicher (EEPROM), wobei der Halbleiterspeicher planaren oder 3-dimensionalen (3D) NAND-Flash-Speicher und/oder NOR-Flash-Speicher umfasst, wobei der 3D-Kreuzpunktspeicher mindestens eines aus einer transistorfreien stapelbaren Kreuzpunktarchitektur umfasst, wobei die Speicherzellen an einem Schnittpunkt von Wortleitungen und Bitleitungen sitzen und die Speicherzellen individuell adressierbar sind, und die Bitspeicherung basiert auf einem Wechsel des Bahnwiderstands.Example 18 may include the method of Example 13, wherein the volatile memory comprises Random Access Memory (RAM), e.g. Dynamic random access memory (DRAM), static random access memory (SRAM) and / or synchronous dynamic random access memory (SDRAM), and wherein the nonvolatile memory comprises nonvolatile random access memory, e.g. Semiconductor memory, 3D crosspoint memory, one or more memory devices using a chalcogenide phase change material, byte addressable nonvolatile memory devices, ferroelectric memory, silicon oxide nitride oxide silicon (SONOS) memory, polymer memory, e.g. B. ferroelectric polymer memory, ferroelectric transistor random access memory (Fe-TRAM), Ovonikspeicher, nanowire memory and / or electrically erasable programmable read-only memory (EEPROM), wherein the semiconductor memory planar or 3-dimensional (3D) NAND flash memory and wherein the 3D crosspoint memory comprises at least one of a non-transistor stackable crosspoint architecture, wherein the memory cells are located at an intersection of word lines and bit lines and the memory cells are individually addressable, and the bit storage is based on a change in the track resistance ,
Beispiel 19 kann eines der Beispiele 12 bis 18 umfassen, wobei, wenn es sich bei der einen oder den mehreren Speicherzugriffsanforderungen um eine Leseanforderung handelt, die eine oder die mehreren Speicherzugriffsanforderungen unter Verwendung des binärverzweigten Treibers zu dem Userspace-Treiber geleitet werden, und wobei, wenn es sich bei der einen oder den mehreren Speicherzugriffsanforderungen um eine Schreibanforderung handelt, die eine oder die mehreren Speicherzugriffsanforderungen unter Verwendung des binärverzweigten Treibers zu dem Kernelspace-Treiber geleitet werden.Example 19 may include any of Examples 12-18, wherein if the one or more memory access requests is a read request, the one or more memory access requests are directed to the userspace driver using the binary-branched driver, and wherein if the one or more memory access requests is a write request, routing the one or more memory access requests to the kernelspace driver using the binary-branched driver.
Beispiel 20 kann mindestens ein computerlesbares Speichermedium umfassen, umfassend einen Satz von Befehlen, welche, wenn sie von einer Computervorrichtung ausgeführt werden, bewirken, dass die Computervorrichtung unter Verwendung eines Prozessors, der mit einem Host-Speicher verbunden ist, einen binärverzweigten Treiber erzeugt, wobei der Host-Speicher einen flüchtigen Speicher und/oder einen nichtflüchtigen Speicher umfasst, wobei der binärverzweigte Treiber einen Kernelspace-Treiber, der kommunikativ mit einem Kernel-Dateisystem verbunden ist, und einen Userspace-Treiber umfasst, der kommunikativ mit einer Vorrichtung verbunden ist, und unter Verwendung des binärverzweigten Treibers eine oder mehrere Speicherzugriffsanforderungen zum Zugreifen auf den nichtflüchtigen Speicher verarbeitet.Example 20 may include at least one computer-readable storage medium comprising a set of instructions that, when executed by a computing device, causes the computing device to generate a binary-branched driver using a processor coupled to a host memory the host memory comprises a volatile memory and / or a nonvolatile memory, wherein the binary-branched driver comprises a kernelspace driver communicatively coupled to a kernel file system and a userspace driver communicatively coupled to a device, and using the binary-branched driver, one or more memory access requests to access the nonvolatile memory processed.
Beispiel 21 kann das mindestens eine computerlesbare Speichermedium des Beispiels 20 umfassen, wobei die Befehle, wenn sie ausgeführt werden, bewirken, dass eine Computervorrichtung die eine oder die mehreren Speicherzugriffsanforderungen von einer oder mehreren Anwendungen empfängt, die dafür modifiziert sind, den binärverzweigten Treiber zu nutzen, unter Verwendung eines Treiber-Binärverzweigers den binärverzweigten Treiber erzeugt, umfassend Abrufen von Benutzerkonfigurationsinformationen, die verwendet werden, um den binärverzweigten Treiber zu konfigurieren, wobei die Benutzerkonfigurationsinformationen eine Anzahl von Eingabe-Ausgabe-Warteschlangen und eine Anzahl von Namensräumen zur Verwendung für den Kernelspace-Treiber und den Userspace-Treiber umfassen, wobei die eine oder die mehreren Anwendungen eine leseintensive Anwendung und/oder eine schreibintensive Anwendung umfassen und wobei die eine oder die mehreren Speicherzugriffsanforderungen eine Leseanforderung und/oder eine Schreibanforderung umfassen.Example 21 may include the at least one computer-readable storage medium of Example 20, wherein the instructions, when executed, cause a computing device to receive the one or more memory access requests from one or more applications modified to utilize the binary-branched driver , generates the binary-branched driver using a driver binarizer, comprising retrieving user configuration information used to configure the binary-branched driver, the user configuration information comprising a number of input-output queues and a number of namespaces to be used for the kernelspace Driver and the userspace driver, wherein the one or more applications comprise a read-intensive application and / or a write-intensive application, and wherein the one or more memory access requests are a read request and / or or include a write request.
Beispiel 22 kann das mindestens eine computerlesbare Speichermedium des Beispiels 21 umfassen, wobei die Befehle, wenn sie ausgeführt werden, ferner bewirken, dass die Computervorrichtung den Kernelspace-Treiber initialisiert, wobei das Initialisieren des Kernelspace-Treibers ferner bewirkt, dass die Computervorrichtung eine Datenstruktur in einem gemeinsam genutzten Speicherraum des Host-Speichers erzeugt, wobei der Host-Speicher einen Treiber umfasst, wobei der Treiber den Kernelspace-Treiber über den binärverzweigten Treiber verwaltet, wobei auf den gemeinsam genutzten Speicherraum über ein Namensraumpaar Zugriffsmöglichkeit besteht, umfassend einen Kernel-Namensraum und einen Benutzer-Namensraum, wobei der nichtflüchtige Speicher eine Dateisystem-Vorrichtungsspeicherung und eine Non-Volatile-Memory(NVM)-express(NVMe)-Blockvorrichtungsspeicherung umfasst. Das Initialisieren des Kernelspace-Treibers kann bewirken, dass die Befehle, wenn sie ausgeführt werden, ferner bewirken, dass die Computervorrichtung den Kernel-Namensraum, ein oder mehrere Kernel-Warteschlangenpaare, den Benutzer-Namensraum und ein oder mehrere Userspace-Warteschlangenpaare in dem Host-Speicher erzeugt, den Kernel-Namensraum und das eine oder die mehreren Kernel-Warteschlangenpaare dem Kernelspace-Treiber zuordnet, die Datenstruktur mit Kernel-Warteschlangenpaar-Metadaten aktualisiert, welche den Kernel-Namensraum und das eine oder die mehreren Kernel-Warteschlangenpaare identifizieren, und die Vorrichtung in dem Treiber registriert, wobei die Vorrichtung die NVMe-Blockvorrichtungsspeicherung ist.Example 22 may include the at least one computer-readable storage medium of example 21, wherein the instructions, when executed, further cause the computing device to initialize the kernelspace driver, wherein initializing the kernelspace driver further causes the computing device to construct a data structure in a shared memory space of the host memory, wherein the host memory comprises a driver, wherein the driver manages the kernel space driver via the binary branched driver, the shared memory space being accessible via a name space pair comprising a kernel namespace and a user namespace, wherein the nonvolatile memory includes file system device storage and Non-Volatile Memory (NVM) Express (NVMe) block device storage. Initializing the kernelspace driver may cause the instructions, when executed, to further cause the computing device to specify the kernel namespace, one or more kernel queue pairs, the user namespace, and one or more user space queue pairs in the host Generates memory, maps the kernel namespace and the one or more kernel queue pairs to the kernelspace driver, updates the data structure with kernel queue pair metadata identifying the kernel namespace and the one or more kernel queue pairs, and registers the device in the driver, the device being the NVMe block device storage.
Beispiel 23 kann das mindestens eine computerlesbare Speichermedium des Beispiels 22 umfassen, wobei die Datenstruktur Datenstruktur-Metadaten umfasst, welche eines oder mehrere aus physischen Adressen von Zulassungswarteschlangen, physischen Adressen von Abschlusswarteschlangen und physischen Adressen von Warteschlangengrößen- oder Warteschlangen-Doorbell-Registern umfassen.Example 23 may include the at least one computer-readable storage medium of Example 22, the data structure comprising data structure metadata comprising one or more of admission queue physical addresses, completion queue physical addresses, and queue address or queue-size physical queue addresses.
Beispiel 24 kann das mindestens eine computerlesbare Speichermedium des Beispiels 22 umfassen, wobei das eine oder die mehreren Kernel-Warteschlangenpaare eines oder mehrere eines Verwaltungs-Warteschlangenpaars, umfassend eine Verwaltungs-Zulassungswarteschlange und eine Verwaltungs-Abschlusswarteschlange, und eines oder mehrere eines Treiber-Eingabe-Ausgabe-Warteschlangenpaars umfassen, umfassend eine Treiber-Zulassungswarteschlange und eine Treiber-Abschlusswarteschlange, und wobei das eine oder die mehreren Userspace-Warteschlangenpaare eine Userspace-Zulassungswarteschlange und eine Userspace-Abschlusswarteschlange umfassen.Example 24 may include the at least one computer readable storage medium of example 22, wherein the one or more kernel queue pairs comprise one or more of a management queue pair comprising a management admission queue and a management completion queue, and one or more of a driver input device. An output queue pair, comprising a driver admission queue and a driver completion queue, and wherein the one or more user space queue pairs comprise a userspace admission queue and a userspace completion queue.
Beispiel 25 kann das mindestens eine computerlesbare Speichermedium des Beispiels 22 umfassen, wobei die Befehle, wenn sie ausgeführt werden, bewirken, dass eine Computervorrichtung den Userspace-Treiber unter Verwendung der Datenstruktur-Metadaten initialisiert, wobei der Userspace-Treiber ein Aufrufmodus-Treiber ist, wobei das Initialisieren des Userspace-Treibers ferner bewirkt, dass die Computervorrichtung die Benutzerkonfigurationsinformationen und die Datenstruktur-Metadaten abruft, auf der Grundlage der Benutzerkonfigurationsinformationen und der Datenstruktur-Metadaten die Vorrichtung erzeugt, die Datenstruktur mit den Userspace-Warteschlangenpaar-Metadaten aktualisiert und eine Blockvorrichtungs-Schnittstelle zu der Vorrichtung bei dem Userspace-Treiber registriert.Example 25 may include the at least one computer-readable storage medium of Example 22, wherein the instructions, when executed, cause a computing device to initialize the userspace driver using the data structure metadata, where the userspace driver is a call-mode driver, wherein initializing the userspace driver further causes the computing device to retrieve the user configuration information and the data structure metadata, generate the device based on the user configuration information and the data structure metadata, update the data structure with the user-space queue-pair metadata, and update a block device Interface to the device registered with the userspace driver.
Beispiel 26 kann das mindestens eine computerlesbare Speichermedium des Beispiels 22 umfassen, wobei der flüchtige Speicher Direktzugriffsspeicher (RAM) umfasst, z. B. dynamischen Direktzugriffsspeicher (DRAM), statischen Direktzugriffsspeicher (SRAM) und/oder synchronen dynamischen Direktzugriffsspeicher (SDRAM), und wobei der nichtflüchtige Speicher nichtflüchtige Direktzugriffsspeicher umfasst, z. B. Halbleiterspeicher, 3D-Kreuzpunktspeicher, eine oder mehrere Speichervorrichtungen, bei denen ein Chalkogenid-Phasenwechselmaterial verwendet wird, byte-adressierbare nichtflüchtige Speichervorrichtungen, ferroelektrischen Speicher, Silizium-Oxid-Nitrid-Oxid-Silizium(SONOS)-Speicher, Polymerspeicher, z. B. ferroelektrischen Polymerspeicher, ferroelektrischen Transistor-Direktzugriffsspeicher (Fe-TRAM), Ovonikspeicher, Nanodrahtspeicher und/oder elektrisch löschbaren programmierbaren Nur-Lese-Speicher (EEPROM), wobei der Halbleiterspeicher planaren oder 3-dimensionalen (3D) NAND-Flash-Speicher und/oder NOR-Flash-Speicher umfasst, wobei der 3D-Kreuzpunktspeicher mindestens eines aus einer transistorfreien stapelbaren Kreuzpunktarchitektur umfasst, wobei die Speicherzellen an einem Schnittpunkt von Wortleitungen und Bitleitungen sitzen und die Speicherzellen individuell adressierbar sind, und die Bitspeicherung basiert auf einem Wechsel des Bahnwiderstands.Example 26 may include the at least one computer-readable storage medium of Example 22, wherein the volatile storage comprises Random Access Memory (RAM), e.g. Dynamic random access memory (DRAM), static random access memory (SRAM) and / or synchronous dynamic random access memory (SDRAM), and wherein the nonvolatile memory comprises nonvolatile random access memory, e.g. Semiconductor memory, 3D crosspoint memory, one or more Memory devices using a chalcogenide phase change material, byte addressable nonvolatile memory devices, ferroelectric memory, silicon oxide-nitride-oxide-silicon (SONOS) memory, polymer memory, e.g. B. ferroelectric polymer memory, ferroelectric transistor random access memory (Fe-TRAM), Ovonikspeicher, nanowire memory and / or electrically erasable programmable read-only memory (EEPROM), wherein the semiconductor memory planar or 3-dimensional (3D) NAND flash memory and wherein the 3D crosspoint memory comprises at least one of a non-transistor stackable crosspoint architecture, wherein the memory cells are located at an intersection of word lines and bit lines and the memory cells are individually addressable, and the bit storage is based on a change in the track resistance ,
Beispiel 27 kann das mindestens eine computerlesbare Speichermedium eines der Beispiele 22 bis 26 umfassen, wobei die Befehle, wenn sie ausgeführt werden, bewirken, dass eine Computervorrichtung durch den binärverzweigten Treiber die eine oder die mehreren Speicherzugriffsanforderungen von der einen oder den mehreren Anwendungen empfängt, auf die Dateisystem-Vorrichtungsspeicherung und/oder die NVMe-Blockvorrichtungsspeicherung zuzugreifen, die eine oder die mehreren Speicherzugriffsanforderungen unter Verwendung des binärverzweigten Treibers verarbeitet, unter Verwendung der Speichersteuerung, die kommunikativ mit dem binärverzweigten Treiber verbunden ist, auf der Grundlage der einen oder der mehreren Speicherzugriffsanforderungen eines oder mehrere aus dem Kernel-Namensraum, dem Benutzer-Namensraum, dem einen oder den mehreren Kernel-Warteschlangenpaaren und dem einen oder den mehreren Userspace-Warteschlangenpaaren aktualisiert und die Datenstruktur unter Verwendung der Speichersteuerung synchronisiert, wobei, wenn es sich bei der einen oder den mehreren Speicherzugriffsanforderungen um eine Leseanforderung handelt, die eine oder die mehreren Speicherzugriffsanforderungen unter Verwendung des binärverzweigten Treibers zu dem Userspace-Treiber geleitet werden, und wobei, wenn es sich bei der einen oder den mehreren Speicherzugriffsanforderungen um eine Schreibanforderung handelt, die eine oder die mehreren Speicherzugriffsanforderungen unter Verwendung des binärverzweigten Treibers zu dem Kernelspace-Treiber geleitet werden.Example 27 may include the at least one computer-readable storage medium of any of Examples 22 to 26, wherein the instructions, when executed, cause a computing device to receive the one or more memory access requests from the one or more applications through the binary-branched driver accessing the file system device storage and / or the NVMe block device storage processing the one or more memory access requests using the binary-branched driver using the memory controller communicatively coupled to the binary-branched driver based on the one or more memory access requests of the one or more of the kernel namespace, the user namespace, the one or more kernel queue pairs, and the one or more user space queue pairs and updates the data structure using the store synchronization, wherein if the one or more memory access requests is a read request, the one or more memory access requests are routed to the user space driver using the binary-branched driver, and wherein if one or more of the memory access requests multiple memory access requests is a write request that one or more memory access requests are routed to the kernelspace driver using the binary-branched driver.
Beispiel 28 kann ein System umfassen, umfassend ein Mittel zum Erzeugen eines binärverzweigte Treibers unter Verwendung eines Prozessors, der mit einem Host-Speicher verbunden ist, wobei der Host-Speicher einen flüchtigen Speicher und/oder einen nichtflüchtigen Speicher umfasst, wobei der binärverzweigte Treiber einen Kernelspace-Treiber, der kommunikativ mit einem Kernel-Dateisystem verbunden ist, und einen Userspace-Treiber umfasst, der kommunikativ mit einer Vorrichtung verbunden ist, und Verarbeiten einer oder mehrerer Speicherzugriffsanforderungen zum Zugreifen auf den nichtflüchtigen Speicher unter Verwendung des binärverzweigten Treibers.Example 28 may include a system comprising means for generating a binary-branched driver using a processor connected to a host memory, wherein the host memory comprises a volatile memory and / or a nonvolatile memory, the binary-branched driver having a A kernel space driver communicatively connected to a kernel file system and comprising a userspace driver communicatively coupled to a device, and processing one or more memory access requests to access the nonvolatile memory using the binary branched driver.
Beispiel 29 kann das System des Beispiels 28 umfassen, ferner umfassend ein Mittel zum Empfangen der einen oder der mehreren Speicherzugriffsanforderungen von einer oder mehreren Anwendungen, die dafür modifiziert sind, den binärverzweigten Treiber zu verwenden, wobei das Mittel zum Erzeugen des binärverzweigten Treibers Abrufen von Benutzerkonfigurationsinformationen, die verwendet werden, um den binärverzweigten Treiber zu konfigurieren, unter Verwendung eines Treiber-Binärverzweigers umfasst, wobei die Benutzerkonfigurationsinformationen eine Anzahl von Eingabe-Ausgabe-Warteschlangen und eine Anzahl von Namensräumen zur Verwendung für den Kernelspace-Treiber und den Userspace-Treiber umfassen, wobei die eine oder die mehreren Anwendungen eine leseintensive Anwendung und/oder eine schreibintensive Anwendung umfassen und wobei die eine oder die mehreren Speicherzugriffsanforderungen eine Leseanforderung und/oder eine Schreibanforderung umfassen.Example 29 may include the system of Example 28, further comprising means for receiving the one or more memory access requests from one or more applications modified to use the binary-branched driver, wherein the means for generating the binary-branched driver retrieves user configuration information used to configure the binary-branched driver using a driver binarizer, the user configuration information comprising a number of input-output queues and a number of namespaces for use with the kernelspace driver and the userspace driver, wherein the one or more applications comprise a read-intensive application and / or a write-intensive application, and wherein the one or more memory access requests comprise a read request and / or a write request.
Beispiel 30 kann das System des Beispiels 28 umfassen, ferner umfassend ein Mittel zum Initialisieren des Kernelspace-Treibers, umfassend ein Mittel zum Erzeugen einer Datenstruktur in einem gemeinsam genutzten Speicherraum des Host-Speichers, wobei der Host-Speicher einen Treiber umfasst, wobei der Treiber den Kernelspace-Treiber über den binärverzweigten Treiber verwaltet, wobei auf den gemeinsam genutzten Speicherraum über ein Binärverzweiger-Namensraumpaar Zugriffsmöglichkeit besteht, umfassend einen Kernel-Namensraum und einen Benutzer-Namensraum, wobei der nichtflüchtige Speicher eine Dateisystem-Vorrichtungsspeicherung und eine NVMe-Blockvorrichtungsspeicherung umfasst. Das Initialisieren des Kernelspace-Treibers kann ferner ein Mittel zum Erzeugen des Kernel-Namensraums, eines oder mehrerer Kernel-Warteschlangenpaare, des Benutzer-Namensraums und eines oder mehrerer Userspace-Warteschlangenpaare in dem Host-Speicher, ein Mittel zum Zuordnen des Kernel-Namensraums und des einen oder der mehreren Kernel-Warteschlangenpaare zu dem Kernelspace-Treiber, ein Mittel zum Aktualisieren der Datenstruktur mit Kernel-Warteschlangenpaar-Metadaten, welche den Kernel-Namensraum und das eine oder die mehreren Kernel-Warteschlangenpaare identifizieren, und ein Mittel zum Registrieren der Dateisystem-Vorrichtungsspeicherung in dem Treiber umfassen, wobei die Vorrichtung die NVMe-Blockvorrichtungsspeicherung ist.Example 30 may include the system of Example 28, further comprising means for initializing the kernelspace driver, comprising means for generating a data structure in a shared memory space of the host memory, the host memory comprising a driver, the driver manages the kernel space driver via the binarized driver, wherein the shared memory space is accessible via a binarizer name space pair comprising a kernel namespace and a user namespace, the nonvolatile storage comprising file system device storage and NVMe block storage. Initializing the kernelspace driver may further include means for generating the kernel namespace, one or more kernel queue pairs, the user namespace, and one or more user space queue pairs in the host memory, means for mapping the kernel namespace, and the one or more kernel queue pairs to the kernel space driver, means for updating the data structure with kernel queue pair metadata identifying the kernel namespace and the one or more kernel queue pairs, and means for registering the file system Device storage in the driver, the device being the NVMe block device storage.
Beispiel 31 kann das System des Beispiels 30 umfassen, wobei die Datenstruktur Datenstruktur-Metadaten umfasst, welche eines oder mehrere aus physischen Adressen von Zulassungswarteschlangen, physischen Adressen von Abschlusswarteschlangen und physischen Adressen von Warteschlangengrößen- oder Warteschlangen-Doorbell-Registern umfassen. Example 31 may include the system of Example 30, wherein the data structure comprises data structure metadata that includes one or more of admission queue physical addresses, completion queue physical addresses, and queue queue or queue address physical queue addresses.
Beispiel 32 kann das System des Beispiels 30 umfassen, wobei das eine oder die mehreren Kernel-Warteschlangenpaare eines oder mehrere eines Verwaltungs-Warteschlangenpaars, umfassend eine Verwaltungs-Zulassungswarteschlange und eine Verwaltungs-Abschlusswarteschlange, und eines oder mehrere eines Treiber-Eingabe-Ausgabe-Warteschlangenpaars umfassen, umfassend eine Treiber-Zulassungswarteschlange und eine Treiber-Abschlusswarteschlange, und wobei das eine oder die mehreren Userspace-Warteschlangenpaare eine Userspace-Zulassungswarteschlange und eine Userspace-Abschlusswarteschlange umfassen.Example 32 may include the system of Example 30, wherein the one or more kernel queue pairs comprise one or more of a management queue pair comprising a management admission queue and a management completion queue, and one or more of a driver input-output queue pair comprising a driver admission queue and a driver completion queue, and wherein the one or more user space queue pairs comprise a userspace admission queue and a userspace completion queue.
Beispiel 33 kann das System des Beispiels 30 umfassen, wobei der flüchtige Speicher Direktzugriffsspeicher (RAM) umfasst, z. B. dynamischen Direktzugriffsspeicher (DRAM), statischen Direktzugriffsspeicher (SRAM) und/oder synchronen dynamischen Direktzugriffsspeicher (SDRAM), und wobei der nichtflüchtige Speicher nichtflüchtige Direktzugriffsspeicher umfasst, z. B. Halbleiterspeicher, 3D-Kreuzpunktspeicher, eine oder mehrere Speichervorrichtungen, bei denen ein Chalkogenid-Phasenwechselmaterial verwendet wird, byte-adressierbare nichtflüchtige Speichervorrichtungen, ferroelektrischen Speicher, Silizium-Oxid-Nitrid-Oxid-Silizium(SONOS)-Speicher, Polymerspeicher, z. B. ferroelektrischen Polymerspeicher, ferroelektrischen Transistor-Direktzugriffsspeicher (Fe-TRAM), Ovonikspeicher, Nanodrahtspeicher und/oder elektrisch löschbaren programmierbaren Nur-Lese-Speicher (EEPROM), wobei der Halbleiterspeicher planaren oder 3-dimensionalen (3D) NAND-Flash-Speicher und/oder NOR-Flash-Speicher umfasst, wobei der 3D-Kreuzpunktspeicher mindestens eines aus einer transistorfreien stapelbaren Kreuzpunktarchitektur umfasst, wobei die Speicherzellen an einem Schnittpunkt von Wortleitungen und Bitleitungen sitzen und die Speicherzellen individuell adressierbar sind, und die Bitspeicherung basiert auf einem Wechsel des Bahnwiderstands.Example 33 may include the system of Example 30, wherein the volatile memory includes Random Access Memory (RAM), e.g. Dynamic random access memory (DRAM), static random access memory (SRAM) and / or synchronous dynamic random access memory (SDRAM), and wherein the nonvolatile memory comprises nonvolatile random access memory, e.g. Semiconductor memory, 3D crosspoint memory, one or more memory devices using a chalcogenide phase change material, byte addressable nonvolatile memory devices, ferroelectric memory, silicon oxide nitride oxide silicon (SONOS) memory, polymer memory, e.g. B. ferroelectric polymer memory, ferroelectric transistor random access memory (Fe-TRAM), Ovonikspeicher, nanowire memory and / or electrically erasable programmable read-only memory (EEPROM), wherein the semiconductor memory planar or 3-dimensional (3D) NAND flash memory and wherein the 3D crosspoint memory comprises at least one of a non-transistor stackable crosspoint architecture, wherein the memory cells are located at an intersection of word lines and bit lines and the memory cells are individually addressable, and the bit storage is based on a change in the track resistance ,
Beispiel 34 kann das System eines der Beispiele 30 bis 33 umfassen, ferner umfassend ein Mittel zum Initialisieren des Userspace-Treibers unter Verwendung der Datenstruktur-Metadaten, wobei der Userspace-Treiber ein Aufrufmodus-Treiber ist, wobei das Initialisieren des Userspace-Treibers ein Mittel zum Abrufen der Benutzerkonfigurationsinformationen und der Datenstruktur-Metadaten, ein Mittel zum Erzeugen der Vorrichtung auf der Grundlage der Benutzerkonfigurationsinformationen und der Datenstruktur-Metadaten, ein Mittel zum Aktualisieren der Datenstruktur mit den Userspace-Warteschlangenpaar-Metadaten und ein Mittel zum Registrieren einer Blockvorrichtungs-Schnittstelle zu der Vorrichtung bei dem Userspace-Treiber umfasst. Das Initialisieren des Userspace-Treibers umfasst ferner ein Mittel zum Empfangen der einen oder der mehreren Speicherzugriffsanforderungen von der einen oder den mehreren Anwendungen durch den binärverzweigten Treiber, um auf die Dateisystem-Vorrichtungsspeicherung und/oder die NVMe-Blockvorrichtungsspeicherung zuzugreifen, ein Mittel zum Verarbeiten der einen oder der mehreren Speicherzugriffsanforderungen unter Verwendung des binärverzweigten Treibers, ein Mittel zum Aktualisieren eines oder mehrerer aus dem Kernel-Namensraum, dem Benutzer-Namensraum, dem einen oder den mehreren Kernel-Warteschlangenpaaren und dem einen oder den mehreren Userspace-Warteschlangenpaaren auf der Grundlage der einen oder der mehreren Speicherzugriffsanforderungen unter Verwendung der Speichersteuerung, die kommunikativ mit dem binärverzweigten Treiber verbunden ist, und ein Mittel zum Synchronisieren der Datenstruktur unter Verwendung der Speichersteuerung, wobei, wenn es sich bei der einen oder den mehreren Speicherzugriffsanforderungen um eine Leseanforderung handelt, die eine oder die mehreren Speicherzugriffsanforderungen unter Verwendung des binärverzweigten Treibers zu dem Userspace-Treiber geleitet werden, und wobei, wenn es sich bei der einen oder den mehreren Speicherzugriffsanforderungen um eine Schreibanforderung handelt, die eine oder die mehreren Speicherzugriffsanforderungen unter Verwendung des binärverzweigten Treibers zu dem Kernelspace-Treiber geleitet werden.Example 34 may include the system of any of Examples 30 to 33, further comprising means for initializing the user space driver using the data structure metadata, wherein the user space driver is a call mode driver, wherein initializing the userspace driver is a means for retrieving the user configuration information and the data structure metadata, means for generating the device based on the user configuration information and the data structure metadata, means for updating the data structure with the user space queue pair metadata, and means for registering a block device interface the device in the Userspace driver includes. Initializing the user space driver further includes means for receiving the one or more memory access requests from the one or more applications through the binary branch driver to access the file system device storage and / or the NVMe block device storage, means for processing the one or more memory access requests using the binary-branched driver, means for updating one or more of the kernel namespace, the user namespace, the one or more kernel queue pairs, and the one or more user-space queue pairs based on the one or more memory access requests using the memory controller communicatively connected to the binary-branched driver, and means for synchronizing the data structure using the memory controller, wherein, if one or more of the memory controllers multiple memory access requests being a read request, passing the one or more memory access requests to the userspace driver using the binary-branched driver, and wherein, if the one or more memory access requests is a write request, the one or more memory access requests be routed to the kernelspace driver using the binary-branched driver.
Die Ausführungsformen sind auf eine Verwendung mit allen Typen von Halbleiterchips mit integrierten Schaltungen („IC-Chips“) anwendbar. Beispiele für diese IC-Chips umfassen, ohne darauf beschränkt zu sein, Prozessoren, Steuerungen, Chipsatzkomponenten, programmierbare Logik-Arrays (PLAs), Speicherchips, Netzwerkchips, Systeme auf einem Chip (Systems on Chip, SoCs), SSD/NAND-Steuerungs-ASICs und Ähnliches. Außerdem sind in einigen der Zeichnungen Signalleitungen mit Linien dargestellt. Einige können unterschiedlich dargestellt sein, um mehrere einzelne Signalpfade anzuzeigen, eine numerische Kennzeichnung aufweisen, um eine Anzahl einzelner Signalpfade anzuzeigen, und/oder Pfeile an einem oder mehreren Enden aufweisen, um eine Hauptrichtung des Informationsflusses anzuzeigen. Dies sollte jedoch nicht beschränkend ausgelegt werden. Stattdessen können solche zusätzlichen Details in Verbindung mit einer oder mehreren beispielhaften Ausführungsformen verwendet werden, um ein einfacheres Verständnis einer Schaltung zu ermöglichen. Alle dargestellten Signalleitungen, mit oder ohne zusätzliche Informationen, können tatsächlich ein oder mehrere Signale umfassen, welche in mehrere Richtungen laufen können und mit einer beliebigen geeigneten Art von Signalschema realisiert werden können, z. B. digitale oder analoge Leitungen, die mit Differentialpaaren, Lichtwellenleitern und/oder asymmetrischen Leitungen realisiert sind.The embodiments are applicable to use with all types of integrated circuit semiconductor chips ("IC chips"). Examples of these IC chips include, but are not limited to, processors, controllers, chipset components, programmable logic arrays (PLAs), memory chips, network chips, systems on chip (SoCs), SSD / NAND controller chipsets. ASICs and the like. In addition, in some of the drawings, signal lines are represented by lines. Some may be represented differently to display a plurality of individual signal paths, have a numerical identifier to indicate a number of individual signal paths, and / or have arrows at one or more ends to indicate a major direction of the information flow. However, this should not be construed restrictively. Instead, such additional details may be used in conjunction with one or more exemplary embodiments to facilitate easier understanding of a circuit. All illustrated signal lines, with or without additional information, may actually comprise one or more signals which may be multi-directional and may be implemented with any suitable type of signal scheme, e.g. As digital or analog lines, which are realized with differential pairs, optical fibers and / or asymmetric lines.
Es können beispielhafte Größen/Modelle/Werte/Bereiche angegeben worden sein, obwohl die Ausführungsformen nicht auf diese beschränkt sind. Da Herstellungstechniken (z. B. Photolithographie) nach einer gewissen Zeit überholt sind, wird angenommen, dass zukünftig Vorrichtungen kleinerer Größen hergestellt werden könnten. Außerdem sind in den Figuren gut bekannte Spannungs/Masse-Verbindungen zu IC-Chips und anderen Komponenten dargestellt oder nicht, um die Darstellung und die Erörterung zu vereinfachen und um bestimmte Aspekte der Ausführungsformen nicht unklar zu machen. Ferner können Anordnungen in Blockschaubildform dargestellt sein, um zu vermeiden, dass Ausführungsformen unklar werden, und auch im Hinblick auf die Tatsache, dass spezielle Einzelheiten in Bezug auf die Realisierung solcher Blockschaubild-Anordnungen stark von dem Computersystem abhängen, innerhalb welchem die Ausführungsform zu realisieren ist, d.h. solche speziellen Einzelheiten sollten dem Fachmann leicht zugänglich sein. Obwohl spezielle Einzelheiten (z. B. Schaltungen) ausgeführt werden, um beispielhafte Ausführungsformen zu beschreiben, sollte dem Fachmann ersichtlich sein, dass die Ausführungsformen ohne diese speziellen Einzelheiten oder mit Variationen dieser ausgeführt werden können. Die Beschreibung ist daher als veranschaulichend und nicht als beschränkend anzusehen.Exemplary sizes / models / values / ranges may have been given, although the embodiments are not limited to these. Because manufacturing techniques (eg, photolithography) have become obsolete after some time, it is believed that devices of smaller sizes could be manufactured in the future. In addition, in the figures, well-known voltage / ground connections to IC chips and other components are or may not be shown to simplify the illustration and discussion, and not to obscure certain aspects of the embodiments. Furthermore, arrangements may be shown in block diagram form to avoid embodiments becoming obscure, and also in view of the fact that specific details relating to the realization of such block diagram arrangements are highly dependent on the computer system within which the embodiment is to be implemented ie such specific details should be readily available to those skilled in the art. Although specific details (eg, circuits) are set forth to describe example embodiments, it should be understood by those skilled in the art that the embodiments may be practiced without these specific details or variations thereof. The description is therefore to be considered as illustrative and not restrictive.
Der Begriff „verbunden“ kann hierin so verwendet werden, dass er sich auf eine beliebige Art von Beziehung, direkt oder indirekt, zwischen den betreffenden Komponenten bezieht, und kann auf elektrische, mechanische, Fluid-, optische, elektromagnetische, elektromechanische oder andere Verbindungen angewendet werden. Außerdem können die Begriffe „erste“, „zweite“, usw. hierin so verwendet sein, dass sie lediglich die Erörterung vereinfachen und keine bestimmte zeitliche oder chronologische Relevanz aufweisen, sofern nicht anders angegeben.The term "connected" may be used herein to refer to any type of relationship, directly or indirectly, between the components concerned and may be applied to electrical, mechanical, fluid, optical, electromagnetic, electromechanical or other connections become. In addition, the terms "first," "second," etc., may be used herein to merely simplify the discussion and have no particular temporal or chronological relevance, unless otherwise specified.
Wie in der vorliegenden Anmeldung und in den Ansprüchen verwendet, kann eine Liste von Elementen, die durch den Begriff „eines oder mehrere aus“ verbunden sind, eine beliebige Kombination der aufgelisteten Begriffe bedeuten. Beispielsweise können die Ausdrücke „eines oder mehrere aus A, B und C“ A; B; C; A und B; A und C; B und C oder A, B und C bedeuten.As used in the present application and claims, a list of elements associated with the term "one or more of" may mean any combination of the listed terms. For example, the terms "one or more of A, B and C" may be A; B; C; A and B; A and C; B and C or A, B and C mean.
Der Fachmann erkennt aus der vorstehenden Beschreibung, dass die breit angelegten Techniken der Ausführungsformen in einer Vielfalt von Formen realisiert werden können. Deswegen sollte, obwohl die Ausführungsformen in Verbindung mit bestimmten Beispielen dafür beschrieben worden sind, der wahre Umfang der Ausführungsformen nicht dadurch beschränkt sein, da dem Fachmann nach Betrachtung der Zeichnungen, der Beschreibung und der folgenden Ansprüche weitere Modifikationen ersichtlich werden.Those skilled in the art will recognize from the foregoing description that the broad techniques of the embodiments can be implemented in a variety of forms. Therefore, while the embodiments have been described in connection with particular examples thereof, the true scope of the embodiments should not be so limited since other modifications will become apparent to those skilled in the art upon consideration of the drawings, the specification, and the following claims.
Claims (26)
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNPCT/CN2016/111736 | 2016-12-23 | ||
CN2016111736 | 2016-12-23 | ||
PCT/CN2016/113701 WO2018113030A1 (en) | 2016-12-23 | 2016-12-30 | Technology to implement bifurcated non-volatile memory express driver |
Publications (1)
Publication Number | Publication Date |
---|---|
DE112016007538T5 true DE112016007538T5 (en) | 2019-09-26 |
Family
ID=62624352
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE112016007538.3T Pending DE112016007538T5 (en) | 2016-12-23 | 2016-12-30 | TECHNOLOGY FOR REALIZING A BINARY DISCONTINUED NON-VOLATILE MEMORY EXPRESS DRIVER |
Country Status (3)
Country | Link |
---|---|
CN (1) | CN109983443B (en) |
DE (1) | DE112016007538T5 (en) |
WO (1) | WO2018113030A1 (en) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111444113B (en) * | 2019-01-16 | 2023-06-13 | 阿里巴巴集团控股有限公司 | Nonvolatile storage medium sharing method and device, electronic equipment and storage equipment |
US11636059B2 (en) * | 2020-03-31 | 2023-04-25 | Samsung Electronics Co., Ltd. | Scaling performance in a storage server with storage devices |
US11409439B2 (en) | 2020-11-10 | 2022-08-09 | Samsung Electronics Co., Ltd. | Binding application to namespace (NS) to set to submission queue (SQ) and assigning performance service level agreement (SLA) and passing it to a storage device |
CN112667565B (en) * | 2020-12-30 | 2021-12-03 | 湖南博匠信息科技有限公司 | Storage unit file management method and system based on FUSE |
CN114968385B (en) * | 2022-05-23 | 2024-08-06 | 斑马网络技术有限公司 | Driving coordination method, device and storage medium based on microkernel operating system |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101458749B (en) * | 2005-04-22 | 2012-05-30 | 微软公司 | Method for establishing protected environment |
JP4548505B2 (en) * | 2008-04-16 | 2010-09-22 | ソニー株式会社 | Information processing apparatus, information processing method, and computer program |
US8713312B2 (en) * | 2008-12-07 | 2014-04-29 | Trend Micrio Incorporated | Method and system for detecting data modification within computing device |
US8832354B2 (en) * | 2009-03-25 | 2014-09-09 | Apple Inc. | Use of host system resources by memory controller |
US8533376B1 (en) * | 2011-07-22 | 2013-09-10 | Kabushiki Kaisha Yaskawa Denki | Data processing method, data processing apparatus and robot |
US9311110B2 (en) * | 2013-07-08 | 2016-04-12 | Intel Corporation | Techniques to initialize from a remotely accessible storage device |
US9535870B2 (en) * | 2013-09-18 | 2017-01-03 | HGST Netherlands B.V. | Acknowledgement-less protocol for solid state drive interface |
-
2016
- 2016-12-30 WO PCT/CN2016/113701 patent/WO2018113030A1/en active Application Filing
- 2016-12-30 CN CN201680091055.5A patent/CN109983443B/en active Active
- 2016-12-30 DE DE112016007538.3T patent/DE112016007538T5/en active Pending
Also Published As
Publication number | Publication date |
---|---|
CN109983443A (en) | 2019-07-05 |
WO2018113030A1 (en) | 2018-06-28 |
CN109983443B (en) | 2024-03-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20210042219A1 (en) | Apparatuses and methods for memory address translation during block migration | |
DE102013017511B4 (en) | EFFICIENT STORAGE VIRTUALIZATION IN MULTI-THREAD PROCESSING UNITS | |
DE102020132764A1 (en) | SOLID-STATE-DRIVE WITH EXTERNAL SOFTWARE EXECUTION FOR EFFECTING INTERNAL OPERATIONS OF THE SOLID-STATE-DRIVE | |
DE102013017509B4 (en) | Efficient memory virtualization in multi-threaded processing units | |
DE102007062744B4 (en) | Guest-to-host address translation for accessing devices on storage in a partitioned system | |
DE102004038649B4 (en) | Continuous storage device for backup process checkpoint states | |
DE112016007538T5 (en) | TECHNOLOGY FOR REALIZING A BINARY DISCONTINUED NON-VOLATILE MEMORY EXPRESS DRIVER | |
DE102018213430A1 (en) | Accelerator with low latency | |
DE102011076895B4 (en) | Cache coherence protocol for persistent storage | |
DE102019110023A1 (en) | System with programmable multi-context accelerator circuit | |
DE112010005821T5 (en) | context switching | |
DE102012222394A1 (en) | Method and apparatus for collecting buffers of source operands | |
DE102013201178B4 (en) | Controlling work distribution for processing tasks | |
DE102013017510A1 (en) | Efficient storage virtualization in multi-strand processing units | |
DE202010017667U1 (en) | Data storage device with flash memory chips | |
DE102013205886A1 (en) | Dynamic bank mode addressing for memory access | |
DE112007001988T5 (en) | Sharing information with guests in a virtual machine environment | |
DE102012221502A1 (en) | A system and method for performing crafted memory access operations | |
DE102010035603A1 (en) | Providing hardware support for shared virtual memory between physical local and remote storage | |
DE102010001339A1 (en) | Manage requirements of operating systems that run in virtual machines | |
DE112020004181T5 (en) | PROVIDE DIRECT DATA ACCESS BETWEEN ACCELERATORS AND STORAGE IN A COMPUTING ENVIRONMENT | |
EP2807558A1 (en) | Memory controller for providing a plurality of defined areas of a mass storage medium as independent mass memories to a master operating system core for exclusive provision to virtual machines | |
DE112017003332T5 (en) | OPENING ACCESSORIES, PROCESSES, SYSTEMS AND COMMANDS | |
DE112017001118T5 (en) | Method and apparatus for providing a contiguous addressable memory area by remapping an address space | |
DE102019117794A1 (en) | Memory devices comprising heterogeneous processors that share memory and methods of operating the same |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
R012 | Request for examination validly filed |