DE102018123817A1 - Vorrichtung für den direkten hostzugriff auf den speicherort einer speichervorrichtung - Google Patents

Vorrichtung für den direkten hostzugriff auf den speicherort einer speichervorrichtung Download PDF

Info

Publication number
DE102018123817A1
DE102018123817A1 DE102018123817.7A DE102018123817A DE102018123817A1 DE 102018123817 A1 DE102018123817 A1 DE 102018123817A1 DE 102018123817 A DE102018123817 A DE 102018123817A DE 102018123817 A1 DE102018123817 A1 DE 102018123817A1
Authority
DE
Germany
Prior art keywords
host
access
nonvolatile memory
pcie
nvm
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE102018123817.7A
Other languages
English (en)
Inventor
Shay Benisty
Alon Marcu
Ariel Navon
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
SANDISK TECHNOLOGIES, INC. (N.D.GES. D. STAATE, US
Original Assignee
Western Digital Technologies Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Western Digital Technologies Inc filed Critical Western Digital Technologies Inc
Publication of DE102018123817A1 publication Critical patent/DE102018123817A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1081Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0635Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Memory System (AREA)
  • Information Transfer Systems (AREA)
  • Storage Device Security (AREA)

Abstract

Vorrichtungen und Verfahren zum direkten Zugreifen auf einen Speicherort einer Speichervorrichtung durch einen Host werden bereitgestellt. Bei einer Ausführungsform beinhaltet ein Verfahren zum treiberlosen Zugriff eines nichtflüchtigen Speichers einer nichtflüchtigen Speichervorrichtung durch einen Host das Initialisieren eines PCIe-Speicherortes, der einen Abschnitt des nichtflüchtigen Speichers der nichtflüchtigen Speichervorrichtung in einen Host-Speicherbereich abbildet. Der nichtflüchtige Speicher wird durch eine PCIe-Verbindung zwischen dem Host und der nichtflüchtigen Speichervorrichtung abgebildet. Lade-/Speicherbefehle werden für einen treiberlosen Zugriff zu dem PCIe-Speicherort gesendet. Das Verfahren beinhaltet weiterhin das Aushandeln einer Ausrichtungsgröße der Mindesttransaktionspaketgröße, um die Lade-/Speicherbefehle zu abzuschließen.

Description

  • HINTERGRUND DER OFFENBARUNG
  • GEBIET DER OFFENBARUNG
  • Ausführungsformen der vorliegenden Offenbarung beziehen sich allgemein auf Vorrichtungen und Verfahren zum direkten Zugreifen auf einen Speicherort einer Speichervorrichtung durch einen Host.
  • BESCHREIBUNG DES STANDS DER TECHNIK
  • Ein Speicher eines Computersystems kann aus einem Hauptspeicher, wie einem flüchtigen Speicher, und einem sekundären Speicher oder Datenspeicher, wie einem nichtflüchtigen Speicher, zusammengesetzt sein. Die Kommunikation zwischen dem Datenspeicher und einer zentralen Verarbeitungseinheit (CPU) eines Computers wird durch den Befehlssatz und die Protokolle definiert, die Befehle für den Lese-/Schreibzugriff und durch die Host-Programmierschnittstelle spezifizieren, auf die diese Befehle übertragen werden. Kommunikationsprotokolle wurden definiert, um eine schnellere Anpassung und Interoperabilität von Speichervorrichtungen zu ermöglichen, die mit einem Host über einen Bus verbunden sind, wie beispielsweise einen peripheren Computerexpansionsbus.
  • Die CPU greift auf Daten von einer Speichervorrichtung durch Kommunikation über verschiedene physikalische Schichten, Verbindungsschichten, Host-Schnittstellenschichten, Speicherverwaltungsschichten, Datenpfadschichten und Flash-Translationsschichten zwischen dem Host und der Speichervorrichtung zu. Die Latenzzeit für jede Kommunikation zwischen dem Host und der Speichervorrichtung fügt der Datenabruf-/Ausführungszykluszeit erhebliche Zeit hinzu.
  • Daher besteht ein Bedarf an verbesserten Vorrichtungen und Verfahren zum Zugreifen auf einen Speicherort einer Speichervorrichtung durch einen Host.
  • ZUSAMMENFASSUNG DER OFFENBARUNG
  • Vorrichtungen und Verfahren zum direkten Zugreifen auf einen Speicherort einer Speichervorrichtung durch einen Host werden bereitgestellt. Bei einer Ausführungsform beinhaltet ein Verfahren zum treiberlosen Zugriff eines nichtflüchtigen Speichers einer nichtflüchtigen Speichervorrichtung durch einen Host das Initialisieren eines PCIe-Speicherortes, der einen Abschnitt des nichtflüchtigen Speichers der nichtflüchtigen Speichervorrichtung in einen Host-Speicherbereich abbildet. Der nichtflüchtige Speicher wird durch eine PCIe-Verbindung zwischen dem Host und der nichtflüchtigen Speichervorrichtung abgebildet. Lade-/Speicherbefehle werden für einen treiberlosen Zugriff zu dem PCIe-Speicherort gesendet. Das Verfahren beinhaltet weiterhin das Aushandeln einer Ausrichtungsgröße der Mindesttransaktionspaketgröße, um die Lade-/Speicherbefehle zu abzuschließen.
  • Bei einem anderen Ausführungsbeispiel beinhaltet ein Verfahren des Treiberzugriffs und des treiberlosen Zugriffs auf einen nichtflüchtigen Speicher einer nichtflüchtigen Speichervorrichtung durch einen Host das Initialisieren eines PCIe-Speicherortes, der einen Abschnitt des nichtflüchtigen Speichers der nichtflüchtigen Speichervorrichtung in einen Host-Speicherbereich abbildet. Der nichtflüchtige Speicher wird durch eine PCIe-Verbindung zwischen dem Host und der nichtflüchtigen Speichervorrichtung abgebildet. Ein PCIe-Konfigurationsraum wird ebenfalls mit Konfigurationsinformationen der Speichervorrichtung initialisiert. Lade-/Speicherbefehle werden für einen treiberlosen Zugriff zu dem PCIe-Speicherort gesendet. Lese-/Schreibbefehle werden an einen NVMe-Treiber des Hosts zum Treiberzugriff unter Verwendung der Konfigurationsinformationen der Speichervorrichtung gesendet.
  • In noch einer anderen Ausführungsform beinhaltet ein Verfahren zum Zugreifen auf einen nichtflüchtigen Speicher einer nichtflüchtigen Speichervorrichtung durch einen Host das Einrichten einer ersten PCIe-Verbindung zwischen dem Host und der nichtflüchtigen Speichervorrichtung und einer zweiten PCIe-Verbindung zwischen dem Host und einem Peripherievorrichtung. Ein PCIe-Speicherort, der einen oder mehrere Abschnitte des nichtflüchtigen Speichers der nichtflüchtigen Speichervorrichtung in einen Host-Speicherbereich abbildet, wird durch die erste PCIe-Verbindung initialisiert. Daten werden von dem Peripheriegerät durch die zweite PCIe-Verbindung zu der ersten PCIe-Verbindung durch Adressieren des PCIe-Speicherortes geleitet, der den einen oder die mehreren Abschnitte des nichtflüchtigen Speichers der nichtflüchtigen Speichervorrichtung abbildet.
  • In einer Ausführungsform schließt ein Computersystem eine Host-Einrichtung und einen nichtflüchtigen Speicher ein. Die Host-Einrichtung beinhaltet einen Host-Speicherort. Die nichtflüchtige Speichervorrichtung schließt einen nichtflüchtigen Speicher und einen Controller ein, der mit dem nichtflüchtigen Speicher gekoppelt ist. Die Host-Einrichtung ist eingerichtet, um einen oder mehrere Abschnitte des nichtflüchtigen Speicherspeichers, der auf den Host-Speicherort abgebildet ist, für einen direkten Zugriff durch die Host-Einrichtung dynamisch zu aktivieren und zu deaktivieren.
  • Bei einem Ausführungsbeispiel schließt eine nichtflüchtige Speichervorrichtung eine Verbindungsschnittstelle, einen nichtflüchtigen Speicher und einen Controller ein, der mit dem nichtflüchtigen Speicher gekoppelt ist. Die Verbindungsschnittstelle ist eingerichtet, um mit einem Host verbunden zu werden. Der Controller ist eingerichtet, um einen treiberlosen Zugriffsbefehl zu empfangen und den treiberlosen Zugriffsbefehl zu leiten, um eine Host-Schnittstellenprotokollschicht zu umgehen. Der Controller ist weiterhin eingerichtet, um einen Treiberzugriffsbefehl zu empfangen und den Treiberzugriffsbefehl zu der Host-Schnittstellenprotokollschicht zu leiten.
  • Figurenliste
  • Zur Verdeutlichung der Art und Weise, wie die vorstehend dargelegten Merkmale der vorliegenden Offenbarung im Detail verstanden werden können, kann eine ausführlichere Beschreibung der Offenbarung, die vorstehend kurz zusammengefasst ist, unter Bezugnahme auf Ausführungsformen erfolgen, von denen einige in den beigefügten Zeichnungen veranschaulicht sind. Es ist jedoch zu beachten, dass in den beigefügten Zeichnungen nur typische Ausführungsformen dieser Offenbarung dargestellt sind und diese daher nicht als Einschränkung ihres Umfangs anzusehen sind, da die Offenbarung andere ebenso wirksame Ausführungsformen zulassen kann.
    • 1A ist eine schematische Darstellung einer Ausführungsform eines Systems, das einen Initiator oder Host und eine nichtflüchtige Speichervorrichtung für den Host einschließt.
    • 1B ist ein schematisches Diagramm einer Ausführungsform einer Speicherkarte eines Speicheradressortes eines Hosts und eines nichtflüchtigen Speichers einer nichtflüchtigen Speichervorrichtung.
    • 2 ist ein schematisches Diagramm, das eine Ausführungsform eines Treiberzugriffs und eines treiberlosen Zugriffs auf einen nichtflüchtigen Speicher einer nichtflüchtigen Speichervorrichtung darstellt.
    • 3 ist ein schematisches Diagramm, das eine Ausführungsform eines Treiberzugriffs und eines treiberlosen Zugriffs eines Peripheriegeräts auf einen nichtflüchtigen Speicher einer nichtflüchtigen Speichervorrichtung darstellt.
    • 4 ist ein schematisches Diagramm, das eine Ausführungsform eines Schreibwegs eines treiberlosen Zugriffs eines nichtflüchtigen Speichers einer nichtflüchtigen Speichervorrichtung durch einen Host darstellt.
    • 5 ist ein schematisches Diagramm, das eine Ausführungsform eines Verfahrens zum Betreiben eines NVM-Geräts in einem treiberlosen Zugriffsmodus darstellt.
    • 6 ist ein schematisches Diagramm einer Ausführungsform eines Controllers einer nichtflüchtigen Speichervorrichtung mit einem Anomalieerfassungsmodul.
    • 7 ist ein schematisches Diagramm, das eine Ausführungsform eines Verfahrens zum Betreiben einer nichtflüchtigen Speichervorrichtung in einem Direktzugriffsmodus und zum Erfassen potentieller Sicherheitsverletzungen darstellt.
  • DETAILLIERTE BESCHREIBUNG
  • Im Folgenden wird auf die Ausführungsformen der Offenbarung verwiesen. Es sollte jedoch verstanden werden, dass die Offenbarung nicht auf bestimmte beschriebene Ausführungsformen beschränkt ist. Stattdessen wird jede Kombination der folgenden Merkmale und Elemente, unabhängig davon, ob sie sich auf verschiedene Ausführungsformen beziehen oder nicht, zur Umsetzung und Praxis der Offenbarung in Betracht gezogen. Auch wenn Ausführungsformen der Offenbarung Vorteile gegenüber anderen möglichen Lösungen und/oder dem Stand der Technik erzielen können, bedeutet die Tatsache, ob durch eine bestimmte Ausführungsform ein besonderer Vorteil erzielt wird oder nicht, keine Einschränkung der Offenbarung. Die folgenden Aspekte, Merkmale, Ausführungsformen und Vorteile sind daher nur veranschaulichend und gelten nicht als Elemente oder Einschränkungen der beigefügten Ansprüche, es sei denn, sie werden ausdrücklich in einem oder mehreren Ansprüchen erwähnt. Ebenso darf die Bezugnahme auf „die Offenbarung“ nicht als Verallgemeinerung eines hierin offenbarten erfinderischen Gegenstands ausgelegt werden und gilt nicht als Element oder Einschränkung der beigefügten Ansprüche, es sei denn, sie wird ausdrücklich in den Ansprüchen erwähnt.
  • Ausführungsformen der vorliegenden Offenbarung beziehen sich allgemein auf Vorrichtungen und Verfahren zum direkten Zugreifen auf einen Speicherort einer Speichervorrichtung durch einen Host. Ein Host kann sowohl durch treiberlose Befehle als auch durch Treiberbefehle auf den Speicherort, wie beispielsweise einen NAND-Flash-Speicherort, zugreifen. Ein treiberloser Zugriff und ein Treiberzugriff können einer Computervorrichtung, einem Computersystem oder einem Computernetzwerk bereitgestellt werden oder können jedem Peripheriegerät bereitgestellt werden, das damit verbunden ist.
  • 1A ist eine schematische Darstellung einer Ausführungsform eines Systems 100 mit einem Initiator oder Host 150 und einem NVM-Gerät 102, wie beispielsweise einem Solid-State-Laufwerk (SSD), für den Host 150. Der Host 150 kann ein NVM 106 verwenden, das in dem NVM-Gerät 102 eingeschlossen ist, um Daten zu schreiben und zu lesen, wie beispielsweise für Datenspeicher, Hauptspeicher, Cachespeicher, Sicherungsspeicher, oder redundante Speicher. Das NVM-Gerät 102 kann ein internes Speicherlaufwerk sein, wie beispielsweise eine Notebook-Festplatte oder eine Desktop-PC-Festplatte. Das NVM-Gerät 102 kann eine austauschbare Speichervorrichtung sein, wie beispielsweise, aber nicht darauf beschränkt, eine tragbare, austauschbare Speichervorrichtung, wie etwa eine Speicherkarte (z. B. eine sichere digitale (SD-) Karte, eine mikrosichere digitale (micro-SD-) Karte oder eine Multimedia-Karte (MMC)) oder eine universelle serielle Bus- (USB-)Vorrichtung. Das NVM-Gerät 102 kann die Form einer eingebetteten Massenspeichervorrichtung annehmen, wie beispielsweise eines eingebetteten eSD/eMMC-Flash-Speichers, der in den Host 150 eingebettet ist. Das NVM-Gerät 102 kann auch jede andere Art von interner Speichervorrichtung, austauschbare Speichervorrichtung, eingebettete Speichervorrichtung, externe Speichervorrichtung oder Netzwerkspeichervorrichtung sein.
  • Der Host 150 kann eine breite Palette von Vorrichtungen einschließen, wie etwa Computerserver, Network-Attached-Storage-Einheiten (NAS-Einheiten), Desktop-Computer, Notebook-Computer (z. B. Laptop), Tablet-Computer (d.h. „Smart Pad“), Set-Top-Boxen, Telefonhandapparate (d.h. „Smartphones“), Fernseher, Kameras, Anzeigevorrichtungen, digitale Medienplayer, Videospielkonsolen, Video-Streaming-Vorrichtungen und Automobilanwendungen (z. B. Abbilden [Mapping], autonomes Fahren). In bestimmten Ausführungsformen schließt der Host 150 jede Vorrichtung mit einer Verarbeitungseinheit oder einer beliebigen Form von Hardware ein, die in der Lage ist, Daten zu verarbeiten, einschließlich einer Universalverarbeitungseinheit, spezieller Hardware (wie einer anwendungsspezifischen integrierten Schaltung (ASIC)), konfigurierbarer Hardware wie einem Field Programmable Gate Array (FPGA) oder einer anderen Form von Verarbeitungseinheit, die mittels Softwareanweisungen, Mikrocode oder Firmware eingerichtet ist.
  • Der Host 150 beinhaltet eine zentrale Verarbeitungseinheit (CPU) 152, die über einen Root-Complex 153 mit einem Speicheradressort 154, wie etwa DRAM oder anderen Hauptspeichern, verbunden ist. Der Root-Complex 153 kann in die CPU 152 integriert oder eine separate Komponente sein. Ein Anwendungsprogramm kann zur Ausführung durch Komponenten des Hosts 150 in dem Speicherort 154 gespeichert werden. Der Host 150 enthält einen Bus 156, wie beispielsweise eine Speichervorrichtungsschnittstelle, die mit einer Host-Schnittstelle 101 des NVM-Geräts 102 interagiert. Der Bus 156 und die Host-Schnittstelle 101 arbeiten unter einem Kommunikationsprotokoll 118, 120, wie dem seriellen Peripheral Component Interface Express (PCIe)-Kommunikationsprotokoll oder anderen geeigneten Kommunikationsprotokollen. Zu den geeigneten Kommunikationsprotokollen zählen Ethernet, seriell angeschlossene SCSI (SAS), serielle AT-Anschlüsse (SATA), jedes Protokoll im Zusammenhang mit Remote Direct Memory Access (RDMA) wie Infiniband, iWARP oder RDMA over Converged Ethernet (RoCE) und andere geeignete Kommunikationsprotokolle.
  • In dem PCIe-Kommunikationsprotokoll sendet der Host 150 Befehle als Transaktionspakete (TLPs). Ein TLP beinhaltet ein Adressfeld, das angibt, dass sich die gesuchten Lese- und Schreibinformationen in einem NVM 106 des NVM-Geräts 102 befinden. Die TLP kann andere Felder wie ein Fmt-Feld, ein Typenfeld, ein TC-Feld, ein TD-Feld, ein CRC, ein Längenfeld, ein Anforderungseinheitskennungsfeld, ein Bezeichnungsfeld, und andere Felder einschließen. Der Controller 110 kann das Adressfeld verwenden, um auf die Daten an dem angegebenen Ort zuzugreifen.
  • Das NVM 106 des NVM-Geräts 102 kann für die langfristige Speicherung von Informationen als nichtflüchtiger Speicherbereich eingerichtet werden und bewahrt Informationen nach Ein-/Ausschaltzyklen auf. Das NVM 106 kann aus einem oder mehreren Chips eines NAND-Flash-Speichers bestehen. Andere Beispiele für nichtflüchtige Speicher beinhalten Phasenwechselspeicher, ReRAM-Speicher, MRAM-Speicher, magnetische Medien (einschließlich Shingled Magnetic Recording), optische Platten, Disketten, elektrisch programmierbare Nur-Lese-Speicher (EPROM), elektrisch löschbare programmierbare Nur-Lese-Speicher (EEPROM) und andere Solid-State-Speicher. Der nichtflüchtige Speicher des magnetischen Mediums kann ein oder mehrere Magnetplatten in dem NVM-Gerät 102 sein. Jede Platte kann einen oder mehrere Bereiche einer oder mehrerer Datenspuren enthalten. Das NVM 106 kann einen oder mehrere Typen von nichtflüchtigen Speichern einschließen.
  • Der Controller 110 verwaltet Operationen der nichtflüchtigen Speichervorrichtung 102, wie beispielsweise Schreibvorgänge zu und Lesevorgänge von dem NVM 106. Der Controller 110 kann einen oder mehrere Prozessoren 130 einschließen, bei denen es sich um Mehrkernprozessoren handeln kann. Der Prozessor 130 handhabt die Komponenten des NVM-Geräts 102 durch einen Firmwarecode. Der Controller 110 ist über die Host-Schnittstelle 101, die Mac- und Phy-Komponenten enthalten kann, mit dem Host 150 verbunden. Die Host-Schnittstelle 101 ist über eine NVM-Schnittstelle 114 mit dem NVM 106 verbunden.
  • Der Controller 110 kann unter dem NVM-Express-Treiberprotokoll (NVMe-Treiberprotokoll) betrieben werden, aber es sind auch andere Protokolle möglich. NVMe ist ein(e) Kommunikationsschnittstelle/-protokoll, die/das für SSDs entwickelt wurde, um über einen Host und eine Speichervorrichtung zu arbeiten, die über eine PCIe-Schnittstelle verbunden sind. Die Schnittstelle stellt eine Befehlswarteschlange und einen Abschlussweg für SSDs bereit, wie beispielsweise SSDs mit einem NVM 106 eines NAND-Flash-Speichers. NVMe schließt Unterstützung für Unternehmensfunktionen ein, wie beispielsweise End-to-End-Datenschutzschutz, verbesserte Fehlerberichte und Virtualisierung.
  • Der Controller 110 schließt auch flüchtige Speicher 112 oder Cache-Puffer für die Kurzzeitspeicherung oder temporäre Speicher während des Betriebs des NVM-Geräts 102 ein. Der flüchtige Speicher 112 behält gespeicherte Daten nicht bei, wenn er abgeschaltet ist. Beispiele für flüchtige Speicher sind Arbeitsspeicher (RAM), dynamische Arbeitsspeicher (DRAM), statische Arbeitsspeicher (SRAM) und andere Formen von flüchtigen Speichern.
  • Der Controller 110 führt mithilfe computerlesbarer Programmcodes (z. B. Software oder Firmware) ausführbare Anweisungen (nachfolgend „Anweisungen“ genannt) aus. Die Anweisungen können von verschiedenen Komponenten des Controllers 110 ausgeführt werden, wie beispielsweise dem Prozessor 130, Logikgattern, Schaltern, anwendungsspezifischen integrierten Schaltungen (ASICs), programmierbaren Logiksteuerungen, eingebetteten Mikrosteuerungen und anderen Komponenten des Controllers 110.
  • Die Anweisungen werden auf einem nichtflüchtigen, computerlesbaren Speichermedium gespeichert. In bestimmten Ausführungsformen werden die Anweisungen auf einem nichtflüchtigen, computerlesbaren Speichermedium des NVM-Geräts 102 gespeichert, wie beispielsweise in einem Nur-Lese-Speicher (ROM) 113 oder NVM 106. Anweisungen, die auf dem NVM-Gerät 102 gespeichert sind, können ohne zusätzliche Eingaben oder Anweisungen vom Host 150 ausgeführt werden. In weiteren Ausführungsformen werden die Anweisungen vom Host 150 übertragen. Die gespeicherten Anweisungen können vollständig oder teilweise in den flüchtigen Speicher 112 des Controllers 110 zur Ausführung durch den Controller gespeichert werden. Der Controller 110 ist mit Hardware und Anweisungen eingerichtet, um die verschiedenen hierin beschriebenen und in den Abbildungen dargestellten Funktionen auszuführen.
  • Das NVM-Gerät 102 kann auch über einen Schalter oder eine Brücke mit dem Host 150 verbunden werden. Das System 100 kann auch ein Peripheriegerät 190 wie etwa eine Kamera einschließen, die mit dem Bus 156 des Hosts 150 oder über einen Schalter oder eine Brücke mit dem Host 150 verbunden ist. Das System 100 kann auch einen zweiten Host (nicht gezeigt) einschließen, der mit dem Host 150 über einen Schalter oder eine Brücke verbunden ist.
  • 1B ist ein schematisches Diagramm einer Speicherabbildung 155 des Speicheradressraums 154 des Hosts 150 und des NVM 106 des NVM-Geräts 102 aus 1A. Das Speicherabbild 155 ist in Bezug auf das System 100 beschrieben, es können aber auch andere Systeme anwendbar sein. Das Speicherabbild 155 zeigt sowohl den treiberlosen Zugriffsmodus als auch den Treiberzugriffsmodus des NVM 106 des NVM-Geräts 102, die durch den Host 150 festgelegt sind.
  • Im Treiberzugriffsmodus kann der Host 150 einen BAR 124 des NVM-Geräts 102 aktivieren, der an einem PCIe-Einrichtungsort implementiert ist, der DeviceA_bar0 entspricht. Der PCIe-Einrichtungsort speichert Konfigurationsinformationen des NVM-Geräts 102. Der Host 150 greift auf die Einrichtungsinformationen des NVM-Geräts 102 zu, um den Treiber-Zugriff durch NVMe-Treiberschichten des Hosts 150 und des NVM-Geräts 102 zu implementieren, um auf die NVM-Abschnitte 106A bis 106E des NVM-Geräts 102 zuzugreifen.
  • Im treiberlosen Zugriffsmodus kann der Host 150 einen anderen BAR 124 des NVM-Geräts 102 aktivieren, der in dem PCIe-Speicherort oder dem virtuellen Speicherort implementiert ist, der DeviceA_bar2 entspricht. Der Host 150 bildet die internen Register des NVM-Abschnitts 106B auf dem Speicheradressort 154B des Hosts 150 ab. Der Host 150 kann die Adressen des Speicheradressortes 154B direkt lesen und schreiben, in den das PCIe-Kommunikationsprotokoll automatisch die Lese- und Schreibbefehle an das NVM-Gerät 102 überträgt. Der Host 150 kann zusätzliche BARs 124 des NVM-Geräts 102 im treiberlosen Zugriffsmodus aktivieren, um Zugriff auf einen anderen Abschnitt des NVM 106 des NVM-Geräts 102 bereitzustellen. Zum Beispiel kann der Host einen zusätzlichen BAR 124 des NVM aktivieren, der in einem PCIe-Speicherort implementiert ist, der DeviceA_bar4 entspricht, um die internen Register des NVM-Abschnitts 106D in den Speicheradressort 154C des Hosts 150 abzubilden.
  • Der Host 150 kann den treiberlosen Zugriff und/oder den Treiber für eine zweite Vorrichtung, wie etwa ein Peripheriegerät oder ein zweites NVM herstellen. Zum Beispiel kann eine zweite PCIe-Vorrichtung einen BAR aktivieren, der an einem PCIe-Konfigurationsort implementiert ist, der DeviceB_bar0 entspricht, um den Treiberzugriff auf die zweite PCIe-Vorrichtung bereitzustellen.
  • 2 ist ein schematisches Diagramm, das eine Ausführungsform eines NVMe-basierten Host-Zugriffs 200 oder eines Treiberzugriffs auf NVM 230 des NVM-Geräts 202 darstellt, die unter Bezugnahme auf System 100 von 1 beschrieben wurde, aber andere Systeme können anwendbar sein. Der NVMe-basierte Host-Zugriff 200 beinhaltet den Host 250, der das NVM-Gerät 202 durch Befehle verwaltet, die durch eine Anwendung 210 des Hosts 250 initiiert werden. Die Anwendung 210 des Hosts 250 sendet einen Befehl, wie beispielsweise einen Lese- oder Schreibbefehl, an eine Dateisystemschicht 212 des Hosts 250. Die Dateisystemschicht 212 leitet den Befehl an einen NVMe-Gerätetreiber 214 des Hosts 250 weiter. Der NVME-Gerätetreiber 214 kann Warteschlangennachrichten vom und zum DRAM 216 des Hosts 250 laden und speichern. Der NVMe-Treiber 214 leitet den Lese-/Speicherbefehl an eine PCIe-Schicht 218 des Hosts 250 weiter, der unter dem PCIe-Kommunikationsprotokoll arbeitet.
  • Die PCIe-Schicht 220 des NVM-Geräts 202 empfängt den Befehl von dem Host 250 und leitet den Befehl an eine NVMe-Schicht 222 des NVM-Geräts 202 weiter. Die NVMe-Schicht 222 übersetzt den Befehl in das NVMe-Protokoll und leitet den Befehl an eine Front-End-Schicht 224 des NVM-Geräts 202 weiter. Die Front-End-Schicht 224 des NVM-Geräts 202 kann eine Cache-Verwaltung und eine Kohärenzverwaltung des NVM 230 des NVM-Geräts 202 einschließen. Die Front-End-Schicht 224 leitet den Lese-/Speicherbefehl an eine Datenpfadschicht 226 des NVM-Geräts 202 weiter. Die Datenpfadschicht 226 greift auf ein Flash-Übersetzungsschicht- (FTL-)Modul 228 zu, um physikalische Adressen zu bestimmen, die den logischen Adressen des Befehls zugeordnet sind. Die Datenpfadschicht 226 greift zum Lesen oder Schreiben der Daten im Zusammenhang mit dem Befehl auf ein NVM 230 zu. Die Datenpfadschicht 226 empfängt Befehle von der Front-End-Schicht 224 und Adressinformationen von dem FTL-Modul 228, um Lese-/Schreiboperationen zu dem NVM 230 einzuleiten. Zusammengefasst geht der Befehl von der Anwendung 210 zur Dateisystemschicht 212 zum NVMe-Treiber214 zur PCIe-Schicht 218 des Hosts zur PCIe-Schicht 220 des NVM-Geräts zur NVMe-Schicht 222 zum Front-End zur Datenpfadschicht 226 über und greift auf das FTL-Modul 228 zum NVM 230 zu, wenn die Anwendung 210 einen NVMe-basierten Zugriffsbefehl an das NVM-Gerät 202 liefert.
  • 2 stellt auch eine Ausführungsform eines treiberlosen Zugriffswegs 240 zum NVM 230 dar, in der das NVM 230 auf einem Speicherort des Hosts 250 abgebildet ist. Zum Beispiel leitet die Anwendung 210 des Hosts 250 einen treiberlosen Zugriffsbefehl an die PCIe-Schicht 218 des Hosts 250 weiter. Die PCIe-Schicht 220 des NVM-Geräts 202 empfängt den treiberlosen Zugriffsbefehl vom Host 250 und leitet den treiberlosen Zugriffsbefehl an die Datenpfadschicht 226 des NVM-Geräts 202 weiter. Das Modul der Datenpfadschicht 226 leitet Lese-/Schreiboperationen an das NVM 230 ein. Zusammengefasst läuft der Befehl von der Anwendung 210 zur PCIe-Schicht 218 des Hosts zur PCIe-Schicht 220 des NVM-Geräts zur Datenpfadschicht 226 zum NVM 230, wenn die Anwendung 210 einen treiberlosen Zugriffsbefehl an das NVM-Gerät 202 liefert.
  • Bei dem treiberlosen Zugriffsweg 240 wird der Controller 110 angewiesen, die NVMe-Dateisystemtabellen zu umgehen und ein BAR als eine Zuordnung virtueller zu physikalischer Adressen zu behandeln. Zum Beispiel kann ein BAR, der einem physikalischen Abschnitt des NVM 230 entspricht, dynamisch auf logische Blockadressen abgebildet werden. Das PCIe-Protokoll ermöglicht die Abbildung von LBA-Bereichen auf ihren eigenen virtuellen Speicheradressort und ermöglicht einen treiberlosen Zugriff auf diese LBAs unter Verwendung von PCIe-Transaktionen --wodurch die NVMe-Schicht umgangen wird. Das PCIe-Protokoll wird verwendet, um die NVMe-Schicht durch Abbilden eines spezifischen LBA-Bereichs und dann direktes Adressieren dieser LBAs durch die PCIe-Schicht zu umgehen. Der Host 250 kann direkt auf diesen Adressort über den PCIe zugreifen und diesen Adressort lesen und an diesen schreiben.
  • In bestimmten Ausführungsformen kann der Controller 110 auf dem treiberlosen Zugriffsweg 240 eine Vielzahl von treiberlosen Zugriffsanforderungen in einer Burst-Operation zu der NVM-Schnittstelle 114 zusammenfassen oder binden. Die Vielzahl von treiberlosen Zugriffsbefehlen kann in dem flüchtigen Speicher 112 zusammengefasst sein. Die NVM-Schnittstelle 114 kann die Burst-Operation als eine einzelne Anforderung an den NVM 106 ausführen. Für den NVM 106, der einen NAND-Flash aufweist, kann eine Burst-Operation die Leistung erhöhen, da eine Leerlaufzeit der NAND-Flash-Chips reduziert werden kann.
  • In bestimmten Ausführungsformen übersetzt der PCle das NVM 230 in dem NVM-Gerät 202 in eine Speicher-Aperture, die Speicher-Aperture an einem Speicheradressort in dem Host 250 freilegt. Das PCIe-Protokoll bildet die Speicher-Aperture auf einen Speicheradressort auf dem Host 250 ab. Der NVM 230 kann als einfacher Speicher für die CPU 152 erscheinen, was die Latenzzeit der Vorlage und Fertigstellung reduziert und die effektive Bandbreitennutzung erhöht.
  • In bestimmten Ausführungsformen wird die serielle PCle verwendet, um einen zugewiesenen Abschnitt des physikalischen Speichers an einem virtuellen Adressort in der Host-Vorrichtung dynamisch abzubilden. Beispielsweise können in Ausführungsformen, in denen Systeme unter dem PCIe-Protokoll oder irgendeiner seiner Ableitungen arbeiten, Vorrichtungen über einen BAR auf dem Hostspeicheradressort abgebildet werden.
  • Im treiberlosen Zugriffsmodus wird ein Abschnitt des NVM 230 für eine bestimmte Zeitdauer in dem Speicherort des Hosts 250 abgebildet. Der Abschnitt des NVM 230, der zugewiesen ist, kann eine Teilmenge des NVM 230 sein, um die Komplexität zu reduzieren. Der treiberlose Zugriffsweg 240 kann ein Zusammenwirken mit dem FTL-Modul 228 einschließen, in das die Datenpfadschicht 226 auf das FTL-Modul 228 zur Adressumsetzung zugreift. In anderen Ausführungsformen kann der treiberlose Zugriffsweg 240 eine Umgehung des FTL-Moduls 228 einschließen. Durch Umgehung des FTL-Moduls 228 des NVM-Geräts 202 verwaltet der Host 250 den NVM 230 direkt, beispielsweise durch Ausführen und Verwalten der Adressumsetzung.
  • Das Abbilden der physikalischen Adressen in einem virtuellen Adressraum der Anwendung 210 stellt einen treiberlosen Zugriff in einen spezifischen Adressbereich durch Lade/Schreib-Speichertransaktionen einer CPU statt durch normale Lese/Schreib-Host-Transaktionen bereit. Die Lade-/Speicherspeichertransaktion wird zu dem NVM-Gerät 102 anstatt zu dem DRAM 216 geleitet. Ein treiberloser Zugriff auf das NVM 230 reduziert die Latenzzeit zwischen dem Host 250 und dem NVM-Gerät 202, indem der NVMe-Treiber 214 des Hosts 250 und die NVMe-Schicht 222 des NVM-Geräts 202 umgangen werden.
  • 3 ist ein schematisches Diagramm, das eine Ausführungsform eines NVMe-basierten Host-Zugriffs 300 oder einen Treiber-Zugriff eines Peripheriegeräts 390, wie etwa einer Kamera, zum NVM 330 des NVM-Geräts 302 darstellt, die unter Bezugnahme auf das System von 1 beschrieben wurde, aber andere Systeme sind anwendbar. Zum Beispiel kann das Peripheriegerät 390, wie beispielsweise eine periphere PCIe-Vorrichtung, Daten bereitstellen, die in einen DRAM 316 geschrieben werden sollen. Der DRAM 316 sendet die Daten an eine Dateisystemschicht 312. Die Dateisystemschicht 312 leitet die Daten an einen NVMe-Treiber 314 des Hosts 350 weiter. Der NVMe-Treiber 314 leitet die Daten an die PCIe-Schicht 318 des Hosts 350 weiter. Die PCIe-Schicht 320 des NVM-Geräts 302 empfängt die Daten vom Host 350 und leitet die Daten an eine NVMe-Schicht 322 des NVM-Geräts 302 weiter. Die NVMe-Schicht 322 leitet die Daten an eine Front-End-Schicht 324 des NVM-Geräts 302 weiter. Die Front-End-Schicht 324 des NVM-Geräts 302 leitet die Daten zu einer Datenpfadschicht 326 des NVM-Geräts 302 weiter. Die Datenpfadschicht 326 greift auf ein FTL-Modul 328 zu, um physikalische Blockadressen zu bestimmen, die den logischen Adressen der Daten zugeordnet sind. Die Datenpfadschicht 326 greift auf ein NVM 330 zu, um die Daten in das NVM 330 zu schreiben. Zusammengefasst gehen die Daten vom Peripheriegerät 390 zum DRAM 316 zur Dateisystemschicht 312 zum NVME-Treiber 314 zur PCIe-Schicht 318 des Hosts zur PCIe-Schicht 320 des NVM-Geräts zur NVMe-Schicht 322 zur Front-End-Schicht 324 zur Datenpfadschicht 326, mit Zugriff auf das FTL-Modul 328 auf das NVM 330, wenn das Peripheriegerät 390 einen NVMe-basierten Zugriff auf das NVM 330 bereitstellt.
  • 3 stellt auch eine Ausführungsform eines Schreibpfades eines treiberlosen Zugriffswegs 340 auf das NVM 330 dar. In einer Ausführungsform eines Schreibpfades eines treiberlosen Zugriffswegs 340 stellt das Peripheriegerät Daten bereit, die in die PCIe-Schicht 318 des Hosts 350 geschrieben werden sollen. Die PCIe-Schicht 320 des NVM-Geräts 302 empfängt die Daten vom Host 350 und leitet die Daten an die Datenpfadschicht 326 des NVM-Geräts 302 weiter. Die Datenpfadschicht 326 greift auf das NVM 330 zu, um die Daten in das NVM 330 zu schreiben. Zusammengefasst gehen die Daten vom Peripheriegerät 390 zur PCIe-Schicht 318 zur PCIe-Schicht 320 des NVM-Geräts 302 zur Datenpfadschicht 326 zum NVM 330, wenn das Peripheriegerät 390 treiberlose Schreibdaten an das NVM 330 liefert.
  • Durch den treiberlosen Zugriffsweg 340 wird ein viel kürzerer PCIe-zu-PCIe-Weg ermöglicht. Bei dem treiberlosen Zugriffsweg 340 wird der Controller 110 angewiesen, die NVMe-Dateisystemtabellen zu umgehen und einen zugewiesenen BAR als eine Zuordnung virtueller zu physikalischen Adressen zu behandeln. Das PCIe-Protokoll ermöglicht die Abbildung von LBA-Bereichen auf ihren eigenen virtuellen Speicheradressort und ermöglicht einen direkten Zugriff auf diese LBAs unter Verwendung von PCIe-Transaktionen --- wodurch die NVMe-Schicht umgangen wird. Das PCIe-Protokoll wird verwendet, um die NVMe-Schicht durch Abbilden eines spezifischen LBA-Bereichs und dann direktes Adressieren dieser LBAs durch die PCIe-Schicht zu umgehen. Der Host 350 kann über den PCIe direkt auf diesen Adressort zugreifen, diesen Adressort lesen und an diesen schreiben.
  • In bestimmten Ausführungsformen kann der Controller 110 auf dem treiberlosen Zugriffsweg 340 eine Vielzahl von treiberlosen Zugriffsanforderungen in einer Burst-Operation zu der NVM-Schnittstelle 114 zusammenfassen oder binden. Die Vielzahl von treiberlosen Zugriffsbefehlen kann in dem flüchtigen Speicher 112 zusammengefasst sein. Die NVM-Schnittstelle 114 kann die Burst-Operation als eine einzelne Anforderung an das NVM-Gerät 102 ausführen. Für ein NVM-Gerät 102, das einen NAND-Flash aufweist, kann eine Burst-Operation die Leistung erhöhen, da eine Leerlaufzeit des NAND-Flash-Chips reduziert werden kann.
  • Der treiberlose Zugriffsweg 340 kann das Zusammenwirken mit dem FTL-Modul 328 einschließen, in dem die Datenpfadschicht 326 auf das FTL-Modul 328 zur Adressumsetzung zugreift. In anderen Ausführungsformen kann der treiberlose Zugriffsweg 340 ein Umgehen des FTL-Moduls 328 einschließen. Durch Umgehung des FTL-Moduls 328 des NVM-Moduls 302 verwaltet der Host 350 das NVM 330 direkt, beispielsweise durch Durchführen und Verwalten der Adressumsetzung.
  • Das Abbilden der physikalischen Adressen an einen virtuellen Adressort, der dem Peripheriegerät 390 zugeordnet ist, stellt einen treiberlosen Zugriff auf einen spezifischen Adressbereich durch Lade-/Schreib-Speichertransaktionen der CPU statt durch normale Lese-/Schreib-Host-Transaktionen bereit. Der treiberlose Zugriff auf das NVM 330 reduziert die Latenzzeit zwischen dem Peripheriegerät 390 und dem NVM-Gerät 302 durch Umgehung des NVMe-Treibers 314 des Hosts 350 und der NVMe-Schicht 322 des NVM-Geräts 302.
  • In bestimmten Ausführungsformen kann der Host 350 das Peripheriegerät 390 auf einem BAR einrichten, das einem zugewiesenen Abschnitt des NVM 106 des NVM-Geräts 102 entspricht, wie beispielsweise Schreiben von Einstellungsbefehlen an einen PCIe-Controller des Hosts 350 und/oder des NVM-Geräts 302. In bestimmten Ausführungsformen kann auf den zugewiesenen BAR-Speicher durch das Peripheriegerät 390 (oder einen zweiten Host) zugegriffen werden, ohne ein Betriebssystem des Hosts 350 einzubeziehen, wie beispielsweise durch Zugriff auf den zugeordneten BAR-Speicher durch die Firmware oder andere Komponenten des Hosts 350.
  • Unter bestimmten Aspekten vermeidet der treiberlose Zugriffsweg 340 dass Daten-Routing, wie beispielsweise zu schreibende Daten, die in DRAM 316 gepuffert und dann zur Dateisystemschicht 312, dem NVMe-Treiber 314 und dann zur PCIE-Schicht 318 weitergeleitet werden sollen. Wenn eine BAR-Zuordnung durchgeführt wird, dann können Daten direkt zu dem NVM 330 des NVM-Geräts 302 durch die Speicher-Aperture geleitet werden.
  • In bestimmten Aspekten stellt der treiberlose Zugriffsweg 340 ein verbessertes Leistungsvermögen für das sequentielle Schreiben von Daten vom Peripheriegerät 390, wie etwa einer Kamera, in das NVM 330 des NVM-Geräts 302 bereit. Zum Beispiel kann das sequentielle Schreiben von Daten eine große Datenmenge aufweisen, die in ein sequentielles Muster von Seiten des NVM 330 geschrieben wird. Der treiberlose Zugriffsweg 340 kann einen Zugriff auf das NVM 330 mit geringer Latenzzeit und hoher Bandbreite bereitstellen, indem er das Kommunikationsprotokoll, wie beispielsweise NVMe und andere Schichten im Host 350 und in dem NVM-Gerät 302, umgeht.
  • Der treiberlose Zugriffsweg 340 kann auch für die Code-Ausführung eines bestehenden Codes verwendet werden, der auf dem Peripheriegerät 390 gespeichert ist. Zum Beispiel kann bei einem NVMe-basierten Host-Zugriff 300 das Peripheriegerät 390 Befehle bereitstellen, die an DRAM 316 auszuführen sind. DRAM 316 sendet die auszuführenden Befehle an eine Dateisystemschicht 312. Die Dateisystemschicht 312 leitet die auszuführenden Befehle an den NVMe-Treiber 314 des Hosts 350 weiter. Der NVMe-Treiber 314 leitet die auszuführenden Befehle an die PCIe-Schicht 318 des Hosts 350 weiter. Die PCIe-Schicht 320 des NVM-Geräts 302 empfängt die Befehle, die von dem Host 350 auszuführen sind, und leitet die auszuführenden Befehle zur Ausführung an die NVMe-Schicht 322 des NVM-Geräts 302 weiter.
  • In dem treiberlosen Zugriffsweg 340 kann das Peripheriegerät 390 Befehle bereitstellen, die von dem auf dem Peripheriegerät 390 gespeicherten Code zu der PCIe-Schicht 318 des Hosts 350 auszuführen sind. Die PCIe-Schicht 318 sendet die auszuführenden Befehle an die PCIe-Schicht 320 des NVM-Geräts 302. Die PCIe-Schicht 320 des NVM-Geräts 302 führt die Befehle aus. Der treiberlose Zugriffsweg 340 ermöglicht das direkte Ausführen der Befehle aus dem auf dem Peripheriegerät 390 gespeicherten Code und vermeidet das Speichern des Codes auf den DRAM 316 des Hosts 350 sowie das Umgehen anderer Schichten des Hosts 350 und des NVM-Geräts 302. Daher kann der treiberlose Zugriffsweg 340 eine Ausführung eines Codes mit geringer Latenzzeit bereitstellen, der auf dem Peripheriegerät 390 gespeichert ist.
  • 4 ist ein schematisches Diagramm, das eine Ausführungsform eines Verfahrens 400 zum Zugreifen auf das NVM 106 des NVM-Geräts 102 durch den Host 150 darstellt, der unter Bezugnahme auf das System 100 von 1 beschrieben ist, obwohl ein anderes System anwendbar sein kann. Das Verfahren 400 beinhaltet das Zugreifen auf das NVM 106 des NVM-Geräts 102 durch den Host 150 sowohl in dem Fahrerzugriffsmodus als auch dem treiberlosen Zugriffsmodus. Ein oder mehrere Blöcke des Verfahrens 400 können von der CPU 152, dem Controller 110 ausgeführt werden, oder von anderen Controllern, die ausführbare Anweisungen in computerlesbaren Programmcodes (z. B. Software oder Firmware) ausführen, die in dem NVM-Gerät 102 oder dem Host 150 gespeichert sind.
  • Bei Block 410 wird ein Abschnitt des NVM 106 durch den Host 150 durch ein Kommunikationsprotokoll, wie beispielsweise durch das PCIe-Protokoll, an dem Speicheradressort 154 des Hosts 150, dynamisch abgebildet. Eine Größe des Abschnitts des NVM kann dynamisch, durch den Host auf der Basis der Anforderungen oder Bedürfnisse des Hosts, zugewiesen werden. Der Host 150 kann das NVM 106 dynamisch an dem Speicheradressort 154 des Hosts 150 abbilden, indem er einen oder mehrere BARs aktiviert, die verschiedenen Abschnitten des NVM 106 des NVM-Geräts 102 entsprechen.
  • Bei Block 420 wird ein treiberloser Zugriffsbefehl durch den Controller 110 des NVM-Geräts 102 empfangen. Zum Beispiel kann der treiberlose Zugriffsbefehl durch die Speicher-Aperture 236 empfangen werden, die den Abschnitt des NVM 106 an dem Speicheradressort 154 abbildet.
  • Bei Block 430 wird der treiberlose Zugriffsbefehl geleitet, um eine Host-Schnittstellenprotokollschicht, wie etwa eine NVMe-Schicht, zu umgehen.
  • Bei Block 440 wird auf den Abschnitt des NVM 106, der an dem Speicheradressort 154 des Hosts 150 abgebildet ist, als Reaktion auf den treiberlosen Zugriffsbefehl zugegriffen. Beispielsweise kann auf den Abschnitt des NVM 106, der an dem Speicheradressort 154 abgebildet ist, durch die Speicher-Aperture 236 zugegriffen werden. Der Host 150 und das NVM-Gerät 102 können sich auf eine Ausrichtungsgröße ausrichten, um den treiberlosen Zugriffsbefehl abzuschließen. In bestimmten Ausführungsformen kann die Ausrichtungsgröße größer als ein Byte für NVM sein, das von mehreren Bytes programmiert und gelesen wird, beispielsweise wenn der NVM NAND-Flash aufweist.
  • Die Blöcke 410, 420, 430, 440 können wiederholt werden, um einen anderen Abschnitt des NVM 106 durch das Kommunikationsprotokoll an dem Speicheradressort 154 des Hosts 150 neu abzubilden. Zum Beispiel kann ein zweiter BAR aktiviert werden, der einem anderen Abschnitt des NVM 106 entspricht. Das NVM 106 kann durch das Kommunikationsprotokoll an den Speicheradressort 154 des Hosts 150 abgebildet werden, um eine zugewiesene Größe des NVM 106 zu ändern.
  • Bei Block 450 wird ein Treiberzugriffsbefehl durch den Controller der nichtflüchtigen Speichervorrichtung empfangen. Der Treiberzugriffsbefehl kann durch eine eigene Schnittstelle, wie beispielsweise eine NVMe Schnittstelle, erfolgen.
  • Bei Block 460 wird der Treiberzugriffsbefehl zu der Host-Schnittstellenprotokollschicht geleitet. Zum Beispiel wird der Treiberzugriffsbefehl zu der Host-Schnittstellenprotokollschicht des Hosts durch das Kommunikationsprotokoll des NVM-Geräts 102 geleitet.
  • Bei Block 470 wird auf einen anderen Abschnitt des NVM 106 des NVM-Geräts 102 durch die Host-Schnittstellenprotokollschicht in Reaktion auf den Treiberzugriffsbefehl zugegriffen. In einer Ausführungsform können zwei separate Abschnitte des NVM gleichzeitig für den treiberlosen Zugriff im Block 440 und für den Treiberzugriff im Block 470 zugewiesen werden. Zum Beispiel kann ein Abschnitt des NVM 106 an dem Speicheradressort 154 des Hosts 150 abgebildet werden, indem ein BAR entsprechend einem Abschnitt des NVM 106 des NVM-Geräts 102 für einen treiberlosen Zugriff aktiviert wird und ein anderer Abschnitt des NVM 106 dem Treiberzugriff zugewiesen wird.
  • In einer anderen Ausführungsform können überlappende Abschnitte des NVM 106 für einen treiberlosen Zugriff im Block 440 und für einen Treiberzugriff im Block 470 zugewiesen werden. Beispielsweise kann ein BAR, der dem Abschnitt des NVM 106 für den treiberlosen Zugriff entspricht, aktiv sein, während der Treiberzugriff inaktiv sein kann. In ähnlicher Weise kann ein BAR, der dem Abschnitt des NVM 106 zum treiberlosen Zugriff entspricht, inaktiv sein, während der Treiberzugriff aktiv sein kann.
  • Das Verfahren 400 stellt sowohl einen treiberlosen Zugriff als auch einen Treiberzugriff zu dem NVM-Gerät 102 unter Verwendung desselben Kommunikationsprotokolls bereit, wie beispielsweise eines PCIe-Kommunikationsprotokolls. Das NVM-Gerät 102 kann über dasselbe Kommunikationsprotokoll treiberlose Zugriffsbefehle und Treiberzugriffsbefehle zur gleichen Zeit unter Verwendung unterschiedlicher LBA-Bereiche abschließen. Das NVM-Gerät 102 kann über dasselbe Kommunikationsprotokoll treiberlose Zugriffsbefehle und Treiberzugriffsbefehle zu unterschiedlichen Zeiten unter Verwendung überlappender LBA-Bereiche abschließen.
  • In bestimmten Ausführungsformen kann der Treiberzugriff ein auf NVMe basierender Zugriff über PCIe sein. In bestimmten Ausführungsformen kann der treiberlose Zugriff durch Abbilden des NVM 106 durch einen PCIe BAR, wie beispielsweise PCIe BAR4, an dem Speicheradressort 154 des Hosts 150 erreicht werden. Der Host 150 kann NVMe-Befehle in einer Warteschlange organisieren, während er auch Lade-/Speicherdirektzugriffsbefehle an den PCIe-BAR sendet, der auf dem NVM 106 abgebildet ist.
  • Der Host 150 oder das Peripheriegerät 190 können einen treiberlosen Zugriff verwenden, um die Latenzzeit zu reduzieren. Ein treiberloser Zugriff kann verwendet werden, um die Latenzzeit für sequentielle Datenschreib-/-lesevorgänge zum NVM 106 zu verringern, da eine Pufferung der aufgerufenen Daten vermieden werden kann. Ein treiberloser Zugriff kann verwendet werden, um die Latenzzeit für jede Art von Daten sequentiell oder zufällig zu reduzieren, da NVMe-Schichten und andere Schichten in dem Host 150 und in dem NVM-Gerät 102 umgangen werden. Das Verfahren 400 kann auf beliebige Zugriffsbefehle, wie beispielsweise einen einzelnen Zugriffsbefehl oder mehrere Zugriffsbefehle, des NVM 106 der NVM-Einrichtung 102 angewendet werden.
  • 5 ist ein schematisches Diagramm, das eine Ausführungsform eines Verfahrens 500 zum Betreiben des NVM-Geräts 102 in einem treiberlosen Zugriffsmodus darstellt, das unter Bezugnahme auf das System 100 von 1 beschrieben ist, obwohl andere NVM-Geräte anwendbar sein können. Ein oder mehrere Blöcke des Verfahrens 500 können von dem Controller 110 durch Ausführen von ausführbaren Anweisungen in dem computerlesbaren Programmcode (z. B. Software oder Firmware), die in dem NVM-Gerät 102 oder Host 150 gespeichert sind, ausgeführt werden.
  • Bei Block 510 wird ein PCIe-Speicherort initialisiert, der einen Abschnitt des NVM 106 des NVM-Geräts 102 in den Host-Speicherort 154 abbildet. Das Abbilden wird durch eine PCIe-Verbindung zwischen dem Host 150 und dem NVM-Gerät 102 durchgeführt.
  • Bei Block 520 werden verfügbare oder bevorzugte Ausrichtungsmodi von dem NVM-Gerät 102 angezeigt oder übertragen. Die Ausrichtungsgröße kann vor oder nach Aktivierung eines BAR ausgehandelt werden. Das NVM-Gerät 102 kann eine Liste von bevorzugten Ausrichtungsmodi anzeigen. Da der Bytezugriff für das NVM 106 für Ausführungsformen nicht optimal ist, in denen das NVM durch eine Mehrzahl von Bytes programmiert und gelesen wird, kann sich das NVM-Gerät 102 auf eine Ausrichtungsgröße ausrichten. Zum Beispiel kann das NVM-Gerät 102 eine bevorzugte Ausrichtungsgröße von 64 Byte oder größer übertragen oder anzeigen, wie etwa die Größe einer Seite oder mehr des NAND-Speichers. Das NVM-Gerät 102 kann weiterhin eine Liste von anderen unterstützten Ausrichtungsparametern bereitstellen.
  • Bei Block 530 wird eine Ausrichtungsauswahl einer Ausrichtungsgröße von dem NVM-Gerät 102 empfangen. Die Ausrichtungsauswahl erfolgt von dem Host 150 oder dem Peripheriegerät 190, das mit dem Host 150 verbunden ist. Nach der Verhandlung einer Ausrichtungsgröße werden Transaktionspakete in der Ausrichtungsgröße oder Vielfachen der Ausrichtungsgröße übertragen, um die treiberlosen Zugriffsbefehle abzuschließen.
  • Das NVM-Gerät 102 kann eine Ausrichtungsmodusauswahl von anderen Ausrichtungsparametern empfangen. Ein treiberloser Zugriffsmodus kann als Abschnitt dieser Vermittlung eingerichtet werden. Zum Beispiel kann das NVM-Gerät 102 mit dem Host 150 in dynamischer Ausrichtung ausgerichtet sein, in der die Ausrichtungsgröße gemäß den Anforderungen oder Bedürfnissen des Hosts 150 variiert. Zum Beispiel werden ein oder mehrere treiberlose Zugriffsbefehle in einer Ausrichtungsgröße durchgeführt, und ein oder mehrere andere treiberlose Zugriffsbefehle werden in einer anderen Ausrichtungsgröße ausgeführt. In anderen Ausführungsformen kann das NVM-Gerät 102 mit dem Host 150 in statischer Ausrichtung ausgerichtet sein, in der jeder treiberlose Zugriffsbefehl in der gleichen Ausrichtungsgröße (d. h. Transaktionspakete, die in der Ausrichtungsgröße oder Vielfachen der Ausrichtungsgröße übertragen werden) durchgeführt wird.
  • Wenn eine Ausrichtungsauswahl von dem NVM-Gerät 102 nicht nach einer Auszeitperiode empfangen wird, kann der treiberlose Zugriffsmodus in einer voreingestellten Ausrichtungsgröße eingerichtet werden. In anderen Ausführungsformen können die Blöcke 520 und 530 übersprungen werden, wobei der treiberlose Zugriffsmodus in einer Standardausrichtungsgröße eingerichtet wird.
  • Im Block 540 wird ein BAR, der einem Abschnitt des NVM 106 des NVM-Geräts 102 entspricht, aktiviert. Nachdem der BAR aktiviert ist, werden Transaktionspakete durch den Host 150 und das NVM-Gerät 102 in der Ausrichtungsgröße oder Vielfachen der Ausrichtungsgröße übertragen. Die Transaktionspakete, die an die logische Adresse des Host-Speicherorts 154 adressiert sind, werden an das NVM-Gerät 102 gesendet, das die NVMe-Schicht der NVM-Gerät 102 umgeht. Der BAR kann deaktiviert werden, um den Treiberzugriff auf den gleichen Abschnitt des NVM 106 des NVM-Geräts 102 bereitzustellen. Die Blöcke 510, 520, 530 und 540 können wiederholt werden, um andere BARs 124 des NVM-Geräts 102 zu aktivieren. Die Blöcke 510, 520, 530 und 540 können wiederholt werden, um den treiberlosen Zugriffsmodus auf einen BAR mit einer unterschiedlichen Größe des NVM 106 des NVM-Geräts 102 und/oder einer anderen Ausrichtungsgröße wieder herzustellen.
  • Bei Block 550 empfängt das NVM-Gerät 102 Zugriffsanforderungen in der ausgerichteten Ausrichtungsgröße oder Standardausrichtungsgröße auf die aktivierten BARs in dem treiberlosen Zugriffsmodus.
  • In bestimmten Aspekten des Verfahrens 500 vermittelt das NVM-Gerät 102 und richtet sich mit dem Host 150 oder dem Peripheriegerät 190 hinsichtlich der Zugriffsausrichtungsgröße aus. Das NVM-Gerät 102 kann einen treiberlosen Zugriff in einer Nicht-Byte- (mehr als eine Byte) Auflösung für den Host 150 oder das Peripheriegerät 190 bereitstellen. Beispielsweise ist für das NVM 106, das aus NAND-Flash hergestellt ist, eine einzelne Byte- oder einige Byte-Transaktionsgröße schwierig zu unterstützen, da mehrere Bytes auf Seite des NAND-Flash-Arrays programmiert und gelesen werden. Der Host 150 oder das Peripheriegerät 190 kann die Zugriffsausrichtungsgröße auf der Grundlage von Leistungs- oder Anwendungserfordernissen auswählen. Unter bestimmten Aspekten ermöglicht ein treiberloser Speicherzugriff das Arbeiten mit dynamischen Lese-/Schreib-Ausrichtungsgrößen. Durch Überprüfen von Hostplanoperationen kann die Leitung zwischen dem Host 150 und der NVM-Einrichtung 102 eingerichtet werden, um die Leistung durch selektives Verwenden eines treiberlosen Zugriffs auf die Speicher-Aperture 236 zu erhöhen.
  • Unter bestimmten Aspekten kann eine verringerte Latenzzeit für den Host 150, für das NVM 102, oder sowohl für den Host 150 und das NVM 102, erzielt werden. Das Umgehen des NVMe-Treibers 214, 314, des Host 250, 350 und der NVMe-Schicht 222, 322 des NVM-Geräts 202, 302 kann eine verringerte Latenzzeitzeit für den Host 150 und/oder das NVM-Gerät 302 bewirken. Gemeinsam mit einer reduzierten Latenzzeit kann ein erhöhter Durchsatz von Datenzugriffs-Schreib-/-Lesevorgängen erreicht werden. Gemeinsam mit einer reduzierten Latenzzeit kann ein reduzierter Leistungsverbrauch durch den Host 150 und/oder das NVM-Gerät 102 erreicht werden.
  • Unter bestimmten Aspekten können Servicequalitäts- (QoS-) Ebenen oder Ebenen für Eingangs-/Ausgangsoperationen pro Sekunde (IOPS-) während der Abbildung bestimmt werden. Zum Beispiel kann ein Abschnitt oder der gesamte NVM 106 des NVM-Geräts 102 auf den Speicheradressort 154 des Hosts 150 abgebildet werden, um flexible QoS- oder IOPS-Ebenen bereitzustellen. Der Host 150 kann kommunizieren, um Ressourcen zuzuweisen, die vereinbarten oder bestimmten Parametern zugeordnet sind. In bestimmten Ausführungsformen kann, wenn eine niedrige Latenzzeit erwünscht ist, ein großer Abschnitt des NVM 106 dem treiberlosen Zugriffsmodus zugewiesen werden. In bestimmten Ausführungsformen können Abschnitte des NVM 106 dynamisch für einen treiberlosen Zugriff auf einer Bedarfsbasis zugewiesen werden. Beispielsweise kann ein BAR, der einen Abschnitt des NVM 106 abbildet, dynamisch nicht abgebildet und wieder abgebildet werden, um die Menge des Speicherplatzes einzustellen, der von dem Host 150 benötigt wird.
  • In bestimmten Ausführungsformen sendet der Host 150 treiberlose Befehle an den NAND-Flash, indem er Befehle durch die Speicher-Aperture 236 sendet, die mehrere Hardware- und Firmwarekomponenten umgehen, um Fehlerbeseitigungsoperationen auszuführen und Fehler im NVM 106 des NVM-Geräts 102 zu isolieren. Ein treiberloser Zugriff des NVM 106, wie beispielsweise ein treiberloser Zugriff eines NAND-Flash-Chips, kann den Fehlerbeseitigungsaufwand verringern, indem er sich auf die kritische Komponente des NVM 106 fokussiert und physikalische Verbindungen und Schaltungen umgeht, die den Host 150 und den NVM 106 verbinden.
  • In bestimmten Ausführungsformen kann auf das NVM-Gerät 102 auf einer dynamischen Basis zugegriffen werden (d. h. dasselbe NVM-Gerät kann den Treiberzugriffsmodus und den treiberlosen Zugriffsmodus zur gleichen Zeit bereitstellen). Beide Modi können parallel arbeiten, beispielsweise kann ein BAR für einen Abschnitt des NVM 106 des NVM-Geräts 102 für einen treiberlosen Zugriff zugewiesen werden und ein anderer Abschnitt des NVM 106 des NVM-Geräts 102 kann dem Treiber-Zugriff zugewiesen werden. Mit anderen Worten, der treiberlose Zugriff und der Treiberzugriff können auf unterschiedliche physikalische Adressen des NVM 106 des NVM-Geräts 102 zugreifen.
  • In bestimmten Ausführungsformen kann der treiberlose Zugriff auf den NVM 106 der NVM-Einrichtung 102 durch Lade-/Speicherbefehle erfolgen, die von dem Host 150 empfangen werden, und der Treiber-Zugriff kann durch Lese-/Speicherbefehle erfolgen, die von dem Host 150 empfangen werden.
  • In bestimmten Ausführungsformen erscheint der NVM 106 als Speicher für die CPU 152 in dem treiberlosen Zugriffsmodus. In optionalen Ausführungsformen können Kommunikationsprotokolle für den treiberlosen Zugriffsmodus durch einen Zwischencontroller ausgeführt werden. Der Zwischencontroller kann optional eine Fehlerprüfung, eine Pufferung ankommender Befehle und/oder einen Abnutzungsausgleich durchführen. Der treiberlose Zugriff kann auf jedem System 100 durchgeführt werden, das unter einem Kommunikationsprotokoll arbeitet, um die Einreichungs- und Beendigungslatenz zu reduzieren, und die effektive Bandbreitennutzung zu erhöhen.
  • Das Umgehen einer oder mehrerer Komponenten des Chipsatzes des Hosts 150 kann eine Zeitdauer zum Übertragen der Daten zwischen dem Host 150 und dem NVM-Gerät 102 im Vergleich zum Leiten der Daten über den Anwendungsprozessor und/oder den Hauptspeicher (d. h. DRAM) des Chipsatzes reduzieren. Durch Umgehen einer oder mehrerer Komponenten des Chipsatzes während der Übertragung der Daten kann ein Energieverbrauch des Chipsatzes reduziert werden.
  • In einigen Ausführungsformen kann die Kommunikation zwischen dem Host 150 und dem NVM-Gerät 102 durch mehrere elektrische Verbindungen verlaufen, die jeweils durch einen Verbindungsschalter oder durch einen Protokollbrückenadapter verbunden sind. In solchen Ausführungsformen kann die Kommunikation entlang jeder Verbindung nach einem anderen Protokoll ausgehandelt werden. Beispielsweise kann ein Befehl in einer Befehlswarteschlange durch einen PCIe-Root-Anschluss geleitet werden, über einen Netzwerkadapter zu einer Computernetzwerk-Kommunikationsstandardverbindung geschaltet werden und dann zum PCIe zurückgeschaltet werden, bevor er das NVM-Gerät 102 erreicht.
  • Unter bestimmten Aspekten kann das Bereitstellen eines treiberlosen Zugriffs an das NVM 106 des NVM-Geräts 102 in den hier beschriebenen Ausführungsformen einen anderen treiberlosen Zugriff durch das PCIe-Protokoll, einen anderen direkten Zugriff durch das PCIe-Protokoll oder einen anderen Direktzugriff durch andere Kommunikationsprotokolle (kollektiv als „Direktzugriff“ bezeichnet) das NVM-Gerät 102 anfällig für Sicherheitsverletzungen machen. Direktzugriff kann die Effektivität von Standard-Sicherheitsschutzwerkzeugen verringern, die auf der Host-Ebene betrieben werden. Zum Beispiel kann in einem direkten Zugriffsmodus, der zwischen dem Host 150 und dem NVM-Gerät 102 eingerichtet ist, eine nicht autorisierte oder Hacking-Vorrichtung oder ein Programm Berechtigungen, NVMe-Sicherheitsprotokolle und andere Sicherheitsschichten umgehen. Eine Hacking-Vorrichtung oder -Programm kann feststellen, dass das NVM-Gerät 102 sich in Direktzugriffsmodus mit dem Host 150 befindet und kann versuchen, seinen eigenen Zugriff mit dem NVM-Gerät 102 durch eine abgebildete Speicher-Aperture des NVM 106 auf den Speicheradressort 154 des Host 150 herzustellen. Eine Hacking-Vorrichtung oder-Programm kann die abgebildeten Abschnitte des NVM 106 steuern. Eine Hacking-Vorrichtung oder ein -Programm mit Zugriff auf das NVM-Gerät 102 durch eine Speicher-Aperture kann einen unerwünschten Lese- und Schreibzugriff auf kritische Bereiche, wie etwa Systemdateien, Bootdateien, Passwörter, Verwaltungstabellen, Firmware und gelöschte/ungültige Daten aufweisen. Solche Sicherheitsverletzungen können schwierig zu erkennen sein.
  • 6 ist ein schematisches Diagramm einer Ausführungsform eines Controllers 610 eines NVM-Geräts mit einem Anomalieerfassungsmodul 620. Der Controller 610 kann in das NVM-Gerät 102 von 1 implementiert sein, obwohl andere NVM-Geräte anwendbar sein können.
  • 7 ist ein schematisches Diagramm, das eine Ausführungsform eines Verfahrens 700 zum Betreiben eines NVM-Gerät durch Controller 610 von 6 darstellt, obwohl andere NVM-Geräte anwendbar sein können. Das Verfahren 700 beinhaltet das Bereitstellen eines Zugriffs auf das NVM 106 des NVM-Geräts 102 im Direktzugriffsmodus und das Erkennen potentieller Sicherheitsverletzungen. Das Verfahren 700 wird unter Bezugnahme auf das System 100 und den Controller 610 beschrieben, aber andere Systeme und Controller können verwendet werden. Ein oder mehrere Blöcke des Verfahrens 700 können von dem Controller 610 ausgeführt werden durch Ausführen von ausführbaren Anweisungen in computerlesbaren Programmcodes (z. B. Software oder Firmware), die in dem NVM-Gerät 102 gespeichert sind.
  • Bei Block 710 verfolgt oder überwacht ein Parameterverfolgungsmodul 630 des Controllers 610 einen oder mehrere Parameter, die sich auf direkte Zugriffsbefehle durch den Host 150 beziehen. Ein möglicher Parameter schließt logische Blockadressen ein, auf die in einer direkten Zugriffstransaktion zugegriffen wird (d. h. die Start-LBA-Adresse und die End-LBA-Adresse). Ein anderer möglicher Parameter schließt einen Zeitpunkt eines Direktzugriffsbefehls (d. h. wenn die Direktzugriffstransaktionen stattfinden) ein. Ein anderer möglicher Parameter schließt eine Größe der Daten, auf die in einer direkten Zugriffstransaktion zugegriffen wird, ein. Ein anderer möglicher Parameter schließt eine Quelle einer direkten Zugriffstransaktion (d. h. ist die Quelle des Befehls vom Host 150 oder Peripheriegerät 190) ein. Ein anderer möglicher Parameter schließt eine Art von Zugriffsbefehl (d. h. Lesezugriff, Schreibzugriff) ein. Andere verfolgte oder überwachte Parameter sind möglich. Bei anderen Ausführungsformen kann das NVM-Gerät 102 die Inhalte der programmierten oder gelesenen Daten in einer Direktzugriffstransaktion verfolgen. Zum Beispiel kann das NVM-Gerät 102 ein Muster von geschriebenen Nullen, das Muster von geschriebenen Einsen, und/oder das Verhältnis von Nullen zu Einsen, die in einer direkten Zugriffstransaktion geschrieben sind, verfolgen.
  • Der eine oder die mehreren Parameter werden von einer PCIe-Schicht 690 des Controllers 610 verfolgt, die einen Direktzugriff auf das NVM 106 bereitstellt. Verfolgen oder Überwachung des Direktzugriffs auf die Transaktionen des Host 150 kann die Verfolgung oder Überwachung aller direkten Zugriffstransaktionen aufweisen oder kann die Verfolgung oder Überwachung einer Probe oder eines Abschnitts der Direktzugriffstransaktionen aufweisen. In bestimmten Ausführungsformen können mehrere Transaktionen verfolgt oder überwacht werden, um eine Historie der Transaktionen zu erzeugen. Für jede Transaktion der mehreren verfolgten oder überwachten Transaktionen können ein oder mehrere Parameter verfolgt oder überwacht werden. Eine Änderungsrate von einem oder mehreren Parametern kann über den Verlauf von mehreren Transaktionen bestimmt werden. Zum Beispiel kann eine Rate, mit der auf bestimmte logische Blockadressen zugegriffen wird, verfolgt oder überwacht werden.
  • Bei Block 720 bestimmt ein normales Musteranpassungsmodul 640 des Controllers 610 einen Schwellenwert für ein normales Verhaltensmuster. Die Schwelle für ein normales Verhaltensmuster kann durch den einen oder die mehreren Parameter, die im Block 710 verfolgt werden, durch Inhalte der bei Block 710 verfolgten Daten, durch Daten, die beim Leistungstest akkumuliert wurden und/oder durch Offline-Einstellungen, bestimmt werden. Der Schwellenwert für ein normales Verhaltensmuster kann aktualisiert werden, wenn neue Informationen von Block 710 akkumuliert werden. Unter einem Aspekt bestimmt das NVM-Gerät 102 ein Muster der bei Block 710 gesammelten Parameter oder die Statistiken oder Wahrscheinlichkeiten einer Transaktion oder eines Parameters einer auftretenden Transaktion.
  • In einer Ausführungsform kann der Block 720 online durchgeführt werden, während das NVM-Gerät 102 in Betrieb ist. In einer anderen Ausführungsform kann ein Schwellenverhaltensmuster durch eine Benutzermodusseite eingestellt werden, wenn das NVM-Gerät 102 in Betrieb ist. In einer anderen Ausführungsform kann der Block 720 offline ausgeführt werden, wie beispielsweise während der Qualifikation des NVM-Geräts 102. Zum Beispiel kann eine Nachschlagetabelle oder ein Verzeichnis eines normalen Verhaltens offline erzeugt und in das NVM-Gerät 102 geladen werden.
  • Bei Block 730 bestimmt ein Anomaliebestimmungsmodul 650 des Controllers 110, ob ein Schwellenwert für ein normales Verhaltensmuster für das Schwellenverhaltensmuster, das bei Block 720 bestimmt wurde, überschritten wurde. Beispielsweise bestimmt das Anomaliebestimmungsmodul 650, ob eine Transaktion ein Ausreißer aus dem bei Block 720 bestimmten Muster ist. In bestimmten Ausführungsformen, kann das Bestimmen, ob ein Schwellenwert für ein normales Verhaltensmuster überschritten worden ist, auf einer oder mehreren der folgenden Kategorien von Techniken basieren: einen nicht überwachter Lernvorgang (eine Operation auf der Grundlage der Bestimmung eines Musters), einen überwachter Lernvorgang (eine Operation auf der Grundlage eines Datensatzbeispiels sowohl normaler wie anormaler Transaktionen), oder einen halbüberwachter Lernvorgang.
  • In bestimmten Ausführungsformen kann das Bestimmen, ob eine Schwelle überschritten wurde, auf einer oder mehreren der folgenden Techniken basieren: dichtebezogene Techniken (z.B. k-nächster Nachbar, lokaler Ausreißerfaktor), unterraum- und korrelationsbasierter Ausreißererkennung für hochdimensionale Daten, Einklassenunterstützungsvektormaschinen, neurale Replikatorennetzwerke, clusteranalysebasierte Ausreißererkennung, Abweichungen von Assoziationsregeln und häufigen Einstellungen von Sätzen, Fuzzy-Logik-basierte Ausreißererkennung und Zusammenstellungstechniken (d.h., Verwendung von Funktionszusammenfassung, Normalisierung der Ergebniswerte, unterschiedliche Diversitätsquellen usw.). Zum Beispiel kann eine Überschusszahl von Lese-/Schreibvorgängen in einem kleinen Abschnitt eines Adressbereichs verdächtige Direktzugriffstransaktionen anzeigen. In einem anderen Beispiel kann ein Muster von mehreren Lesetransaktionen mit isolierten Schreibtransaktionen verdächtige Direktzugriffstransaktionen anzeigen.
  • Bei Block 740 kann ein Gegensteuermodul 660 des Controllers 610 eine Gegenmaßnahme durchführen, wenn bestimmt worden ist, dass die Schwelle bei Block 730 überschritten wurde. Ein Beispiel einer Gegensteuerung beinhaltet das Bereitstellen eines Alarms, wenn ein Schwellenwert überschritten oder eine Anomalie erkannt wird. Der Alarm kann an den Host 150 gesendet werden. Der Alarm kann auch ein Vertrauensniveau einschließen, ob die erkannte Anomalie ein niedriges Sicherheitsrisiko, ein mittleres Sicherheitsrisiko oder ein hohes Sicherheitsrisiko darstellt. Der Alarm kann auch eine Rückmeldung darüber ermöglichen, ob der Host die verdächtige Transaktion genehmigt oder nicht genehmigt.
  • Ein weiteres Beispiel einer Gegenmaßnahme beinhaltet das Identifizieren einer Quelle des problematischen Zugriffsbefehls durch Untersuchung einer Quelle, die durch den Root-Complex 153 identifiziert wird, wie etwa eine Überprüfung der Aufzählungsinformation. Ein weiteres Beispiel einer Gegensteuerung beinhaltet das selektive Blockieren einer identifizierten Quelle der problematischen Direktzugriffstransaktionen. Ein weiteres Beispiel einer Gegensteuerung beinhaltet das selektive Drosseln oder Verzögern des Zugriffs auf eine identifizierte Quelle der problematischen Direktzugriffstransaktionen. Drosselung oder verzögerter Zugriff können erhöht werden, wenn verdächtige Direktzugriffsbefehle fortgesetzt werden.
  • Ein anderes Beispiel einer Gegensteuerung beinhaltet das Erzeugen eines Protokolls der Alarme oder der Fälle, in denen ein Schwellenwert überschritten wird oder eine Anomalie erkannt wird. Das Protokoll kann einen oder mehrere Parameter enthalten, die bei Block 710 verfolgt werden. Das Protokoll kann eine Historie der Alarme oder die Fälle einschließen, in denen ein Schwellenwert überschritten wird oder eine Anomalie erkannt wird. Das Protokoll kann ein Vertrauensniveau einschließen, ob die erkannte Anomalie ein niedriges Sicherheitsrisiko, ein mittleres Sicherheitsrisiko oder ein hohes Sicherheitsrisiko darstellt. Das Protokoll kann im NVM 106 gespeichert werden. In einer Ausführungsform kann der Host 150 das Protokoll überprüfen. In einer anderen Ausführungsform kann der Controller 610 das Protokoll in Kombination mit anderen Gegensteuerungsmaßnahmen verwenden. Zum Beispiel kann das NVM-Gerät 102 die Schwere der Gegenmaßnahmen nach einer bestimmten Anzahl, Rate (d. h. kurz nacheinander) und/oder Schwere von Alarmen oder Instanzen einer Schwellenwertüberschreitung oder Anomalieerfassung erhöhen. Das Anomalieerfassungsmodul 620 kann mit einer beliebigen Gegensteuerungsmaßnahme beginnen und zu irgendeiner anderen Gegensteuerung erhöhen. Beispielsweise kann das Anomalieerfassungsmodul 620 mit einer Drosselung als Gegensteuerung beginnen und dann die Gegensteuerung auf Blockieren erhöhen, wenn die Anomalien sich fortsetzen oder zunehmen.
  • In bestimmten Ausführungsformen wird eine Anomalieerfassung des direkten Zugriffs des NVM 106 des NVM-Geräts 102 bereitgestellt. Die Anomalieerfassung durch das NVM-Gerät 102 kann potentielle Sicherheitsverletzungen identifizieren, die von dem Host 150 nicht identifiziert werden können oder identifiziert werden. Eine Gegenmaßnahme aus einer Anormalieerkennung kann eine statische Aktion sein, wie beispielsweise eine Benachrichtigung an den Host 150, oder eine aktive Aktion, wie beispielsweise ein Drosseln oder ein Blockieren des Zugriffs. In bestimmten Ausführungsformen kann die Gegenmaßnahme von einer statischen Aktion zu einer aktiven Aktion umschalten, wenn verdächtige Direktzugriffsbefehle fortgesetzt werden.
  • In bestimmten Ausführungsformen werden Sicherheits- und/oder Schutzmaßnahmen im Hinblick auf die Direktzugriffstransaktionen durch das NVM-Gerät 102 bereitgestellt. Sicherheitsschutzvorgänge können das Identifizieren verdächtiger Transaktionen einschließen und können das Identifizieren der Quelle verdächtiger Direktzugriffsbefehle einschließen. Sicherheitsschutzvorgänge können das Implementieren von Gegenmaßnahmen einschließen, wenn verdächtige Direktzugriffstransaktionen identifiziert werden. Unter bestimmten Aspekten können diese Sicherheitsmaßnahmen im Direktzugriffsmodus nicht umgangen werden.
  • Bei einem Ausführungsbeispiel weist ein Verfahren zum Bereitstellen eines Zugriffs auf einen nichtflüchtigen Speicher einer nichtflüchtigen Speichervorrichtung das Empfangen einer Speicheranforderung auf. Wenn die empfangene Speicheranforderung eine Direktzugriffspeicheranforderung ist, wird eine Host-Schnittstellenprotokollschicht der nichtflüchtigen Speichervorrichtung umgangen. Wenn die empfangene Speicheranforderung eine Speicheranforderung ohne direkten Zugriff ist, wird die Speicheranforderung ohne direkten Zugriff an die Host-Schnittstellenprotokollschicht gesendet. In bestimmten Ausführungsformen ist die Host-Schnittstellenprotokollschicht eine NVM-Express-Protokollschicht. In bestimmten Ausführungsformen beinhaltet das Verfahren weiterhin das Einrichten einer PCIe-Verbindung zu einem Host. In bestimmten Ausführungsformen beinhaltet das Verfahren weiterhin das Zuweisen eines physikalischen Adressplatzes für die direkte Speicheranforderung in den nicht flüchtigen Speicher. Der physikalische Adressplatz kann durch ein Basisadressregister für die nichtflüchtige Speichervorrichtung bestimmt werden. Die Größe des physikalischen Adressplatzes kann dynamisch zugewiesen werden. Der physikalische Adressplatz in dem nicht flüchtigen Speicher der Vorrichtung kann für eine neue Speicheranforderung erneut zugewiesen werden. Auf einen Abschnitt oder mehr des physikalischen Adressplatzes kann direkt und indirekt durch eine Direktspeicherzugriffsanforderung und eine neue Nicht-Direktzugriffsanforderung zugegriffen werden.
  • Bei einer Ausführungsform beinhaltet ein Verfahren zum Bereitstellen eines Zugriffs auf einen nichtflüchtigen Speicher einer nichtflüchtigen Speichervorrichtung das Verfolgen eines Parameters, der sich auf eine Vielzahl von Direktzugriffstransaktionen des nichtflüchtigen Speichers bezieht. Ein Schwellenverhaltensmuster der Host-Aktivität wird auf der Grundlage der verfolgten Parameter bestimmt. Die Direktzugriffstransaktionen werden überprüft, um zu bestimmen, ob das Schwellenverhaltensmuster überschritten wird. Das Schwellenverhaltensmuster kann durch Online-Verfolgung einer Änderungsrate des verfolgten Parameters bestimmt werden. Das Schwellenverhaltensmuster kann durch Offline-Erzeugung einer Nachschlagetabelle bestimmt werden. Das Schwellenverhaltensmuster kann durch eine Benutzermodusseite festgelegt werden. Das Schwellenverhaltensmuster kann bestimmt werden, indem programmierte Daten aus der Direktzugriffstransaktion analysiert werden. Der verfolgte Parameter können die LBA-Adressen sein, auf die zugegriffen wird, das Timing von Direktzugriffstransaktionen, Transaktionsgrößen der Direktzugriffstransaktionen, Quellen einer direkten Zugriffstransaktion, Arten von Zugriff, die in den Richtungszugriffstransaktionen angefordert werden, oder andere geeignete Parameter. Eine Vielzahl von Parametern kann für jede Direktzugriffstransaktion verfolgt werden. Maschinelles Lernen kann verwendet werden, um zu bestimmen, ob das Schwellenverhaltensmuster durch eine der Direktzugriffstransaktionen überschritten wurde.
  • In einer anderen Ausführungsform beinhaltet ein Verfahren zum Bereitstellen eines Zugriffs auf einen nichtflüchtigen Speicher einer nichtflüchtigen Speichervorrichtung ein Überwachen eines Parameters, der sich auf eine Direktzugriffstransaktion des nichtflüchtigen Speichers bezieht. Die Direkzugriffstransaktion wird überprüft, um zu bestimmen, ob das Schwellenverhaltensmuster überschritten wird. Eine Gegenmaßnahme auf die Direktzugriffstransaktion, die das Schwellenverhaltensmuster überschreitet, wird durchgeführt. Die Gegenmaßnahme kann das Senden einer Warnung einschließen, dass das Schwellenverhaltensmuster durch die Direktzugriffstransaktion überschritten wurde. Der Alarm kann eine Vertrauensebene einschließen, dass die Direktzugriffstransaktion eine Sicherheitsverletzung ist. Die Gegenmaßnahme kann weiterhin das Empfangen einer Bestätigung einschließen, ob die Direktzugriffstransaktion autorisiert ist. Die Gegenmaßnahme kann das Identifizieren einer Quelle der Direktzugriffstransaktion, die das Schwellenverhaltensmuster überschreitet, einschließen. Der Direktzugriff, der identifizierten Quelle der Direktzugriffstransaktion bereitgestellt wird, die das Schwellenverhaltensmuster überschreitet, kann gedrosselt werden. Der Direktzugriff, der identifizierten Quelle der Direktzugriffstransaktion bereitgestellt wird, die das Schwellenverhaltensmuster übersteigt, kann blockiert werden. Eine Schwere der Gegenmaßnahme kann erhöht werden, wenn das Schwellenverhaltensmuster weiterhin überschritten wird.
  • In einer Ausführungsform weist eine nichtflüchtige Speichervorrichtung einen Controller auf. Ein nichtflüchtiger Speicher ist mit dem Controller gekoppelt. Der Controller ist betreibbar, um einen Direktzugriff auf den nichtflüchtigen Speicher bereitzustellen. Der Controller schließt ein Anomalieerfassungsmodul ein, um zu bestimmen, ob ein Schwellenverhaltensmuster für einen Direktzugriff überschritten wurde. Das Schwellenverhaltensmuster kann aus der Überwachung eines Parameters einer Vielzahl von Direktzugriffstransaktionen bestimmt werden. Das Schwellenverhaltensmuster kann aus einer Modusseiteneinstellung bestimmt werden. Das Schwellenverhaltensmuster kann aus einer Nachschlagetabelle bestimmt werden. Das Schwellenverhaltensmuster kann auf der Grundlage des maschinellen Lernens als überschritten bestimmt werden.
  • In einer anderen Ausführungsform weist eine nichtflüchtige Speichervorrichtung einen Controller auf. Der Controller weist ein Anomalieerfassungsmittel auf. Ein nichtflüchtiger Speicher ist mit dem Controller gekoppelt. Der Controller ist betreibbar, um einen Direktzugriff auf den nichtflüchtigen Speicher bereitzustellen. Das Anomalieerfassungsmittel ist betreibbar, um verdächtige Direktzugriffstransaktionen zu erfassen. Das Anomalieerfassungsmittel kann einen Parameter des Direktzugriffs überwachen. Das Anomalieerfassungsmittel kann verdächtige Direktzugriffstransaktionen kennzeichnen.
  • Während sich das Vorstehende auf Ausführungsformen der vorliegenden Offenbarung bezieht, können andere und weitere Ausführungsformen der Offenbarung ausgearbeitet werden, ohne vom grundlegenden Umfang abzuweichen, und der Umfang wird durch die nachstehenden Ansprüche bestimmt.

Claims (29)

  1. Verfahren zum treiberlosen Zugriff auf einen nichtflüchtigen Speicher einer nichtflüchtigen Speichervorrichtung durch einen Host, aufweisend: Initialisieren eines PCIe-Speicherplatzes, der einen Abschnitt des nichtflüchtigen Speichers der nichtflüchtigen Speichervorrichtung auf einen Host-Speicherplatz durch eine PCIe-Verbindung zwischen dem Host und der nichtflüchtigen Speichervorrichtung abbildet; und Senden von Lade- /Speicherbefehlen an den PCIe-Speicherort für einen treiberlosen Zugriff.
  2. Verfahren gemäß Anspruch 1, weiterhin aufweisend das Vermitteln einer Ausrichtungsgröße einer Mindesttransaktionspaketgröße, um die Lade-/Speicherbefehle abzuschließen.
  3. Verfahren gemäß Anspruch 2, wobei die Ausrichtungsgröße erzielt wird durch: Anzeigen der unterstützten Ausrichtungsmodi durch die nichtflüchtige Speichervorrichtung; und Empfangen einer Auswahl eines Ausrichtungsmodus durch den Host.
  4. Verfahren gemäß Anspruch 2, wobei die Ausrichtungsgröße erzielt wird durch: Anzeigen der unterstützten Ausrichtungsmodi durch die nichtflüchtige Speichervorrichtung; und Fortfahren in einem Standardausrichtungsmodus, wenn eine Ausrichtungsmodusauswahl nicht innerhalb eines Zeitablaufs empfangen wird.
  5. Verfahren gemäß Anspruch 1, wobei die Lade-/Speicherbefehle durch die PCIe-Verbindung zu einem Controller der nichtflüchtigen Speichervorrichtung gesendet werden.
  6. Verfahren gemäß Anspruch 1, wobei die Lade-/Speicherbefehle an eine Datenpfadschicht eines Controllers gesendet werden, um auf den nichtflüchtigen Speicher der nichtflüchtigen Speichervorrichtung zuzugreifen.
  7. Verfahren gemäß Anspruch 6, wobei die Datenpfadschicht auf eine Flash-Übersetzungsschicht zugreift, um Lese-/ Schreiboperationen in den nichtflüchtigen Speicher gemäß den Lade-/Speicherbefehlen durchzuführen.
  8. Verfahren gemäß Anspruch 6, wobei die Datenpfadschicht die Lade-/Speicherbefehle in einer Burst-Operation zu einer nichtflüchtigen Speicherschnittstelle zusammenfasst, um die Lese-/Schreiboperationen auszuführen.
  9. Verfahren zum Treiberzugriff und zum treiberlosen Zugriff auf einen nichtflüchtigen Speicher einer nichtflüchtigen Speichervorrichtung durch einen Host, aufweisend: Initialisieren eines PCIe-Speicherplatzes, der einen Abschnitt des nichtflüchtigen Speichers der nichtflüchtigen Speichervorrichtung auf einen Host-Speicherplatz durch eine PCIe-Verbindung zwischen dem Host und der nichtflüchtigen Speichervorrichtung abbildet; Initialisieren eines PCIe-Konfigurationsraums mit einer Konfigurationsinformation der Speichervorrichtung; Senden von Lade-/Speicherbefehlen an den PCIe-Speicherort für einen treiberlosen Zugriff; und Senden von Lese-/Schreibbefehlen an einen NVMe-Treiber des Hosts zum Treiberzugriff unter Verwendung der Konfigurationsinformationen der Speichervorrichtung.
  10. Verfahren gemäß Anspruch 9, wobei der PCIe-Speicherort initialisiert wird, indem ein BAR aktiviert wird, der einem physikalischen Bereich des nichtflüchtigen Speichers der nichtflüchtigen Speichervorrichtung entspricht.
  11. Verfahren gemäß Anspruch 9, wobei der NVMe-Treiber Lese-/Schreibbefehle an eine NVMe-Schicht der Speichervorrichtung sendet.
  12. Verfahren gemäß Anspruch 9, das weiterhin das parallele Ausführen der Lade-/Speicherbefehle und der Lese-/Speicherbefehle an verschiedenen Abschnitten des nichtflüchtigen Speichers aufweist.
  13. Verfahren gemäß Anspruch 9, das weiterhin das sequentielle Ausführen der Lade-/Speicherbefehle und der Lese-/Speicherbefehle an überlappende Abschnitte des nichtflüchtigen Speichers aufweist.
  14. Verfahren gemäß Anspruch 9, das weiterhin das Neuinitialisieren des PCIe-Speicherortes für den treiberlosen Zugriff auf die nichtflüchtige Speichervorrichtung aufweist, indem ein anderer Abschnitt des nichtflüchtigen Speichers auf logische Adressen des Hosts abgebildet wird.
  15. Verfahren gemäß Anspruch 14, wobei der PCIe-Speicherort neu initialisiert wird, um eine abgebildete Größe des nichtflüchtigen Speichers für einen treiberlosen Zugriff zu ändern.
  16. Verfahren zum Zugreifen auf einen nichtflüchtigen Speicher einer nichtflüchtigen Speichervorrichtung durch einen Host, Folgendes aufweisend: Herstellen einer ersten PCIe-Verbindung zwischen dem Host und der nichtflüchtigen Speichervorrichtung und einer zweiten PCIe-Verbindung zwischen dem Host und einem Peripheriegerät; Initialisieren eines PCIe-Speicherorts, der einen oder mehrere Abschnitte des nichtflüchtigen Speichers der nichtflüchtigen Speichervorrichtung auf einen Host-Speicherort durch die erste PCIe-Verbindung zwischen dem Host und der nichtflüchtigen Speichervorrichtung abbildet; und Weiterleiten von Daten von dem Peripheriegerät durch die zweite PCIe-Verbindung zu der ersten PCIe-Verbindung durch Adressieren des PCIe-Speicherortes, der den einen oder die mehreren Abschnitte des nichtflüchtigen Speichers der nichtflüchtigen Speichervorrichtung abbildet.
  17. Verfahren gemäß Anspruch 16, wobei die weitergeleiteten Daten einen flüchtigen Speicher des Hosts umgehen.
  18. Verfahren gemäß Anspruch 16, wobei die weitergeleiteten Daten eine Treiberschicht der nichtflüchtigen Speichervorrichtung umgehen.
  19. Verfahren gemäß Anspruch 16, wobei die Daten von dem Peripheriegerät durch die zweite PCIe-Verbindung und durch die erste PCIe-Verbindung zu einer Datenpfadschicht der nichtflüchtigen Speichervorrichtung weitergeleitet werden.
  20. Verfahren gemäß Anspruch 19, wobei die Datenpfadschicht eine sequentielle Schreiboperation der Daten in den nichtflüchtigen Speicher ausführt.
  21. Computersystem, aufweisend: eine Host-Einrichtung, die einen Host-Speicherort aufweist; und eine nichtflüchtige Speichervorrichtung, die einen nichtflüchtigen Speicher und einen Controller aufweist, der mit dem nichtflüchtigen Speicher gekoppelt ist; wobei die Host-Einrichtung eingerichtet ist, um einen oder mehrere Abschnitte des nichtflüchtigen Speicherspeichers, der auf den Host-Speicherort abgebildet ist, für einen direkten Zugriff durch die Host-Einrichtung dynamisch zu aktivieren und zu deaktivieren.
  22. Computersystem gemäß Anspruch 21, wobei die Host-Einrichtung betriebsfähig ist, um auf die nichtflüchtige Speichervorrichtung über eine Speicher-Aperture zuzugreifen, die in dem Host-Speicherbereich abgebildet ist.
  23. Computersystem gemäß Anspruch 21, wobei die Host-Einrichtung eine Kommunikationsverbindung beinhaltet, die den nichtflüchtigen Speicher mit einer Speicher-Aperture in dem Host-Speicherbereich verbindet.
  24. Computersystem gemäß Anspruch 21, wobei die Host-Einrichtung betriebsfähig ist, um Lade-/Speicherbefehle an den Host-Speicherort zu senden, um auf den nichtflüchtigen Speicher zuzugreifen.
  25. Computersystem gemäß Anspruch 21, wobei die Host-Einrichtung weiterhin eingerichtet ist, um einen Treiber-Zugriff auf den nichtflüchtigen Speicher-Speicher herzustellen.
  26. Nichtflüchtige Speichervorrichtung, aufweisend: eine Verbindungsschnittstelle, die eingerichtet ist, um mit einem Host verbunden zu werden; einen nichtflüchtigen Speicher; und einen Controller, der mit dem nichtflüchtigen Speicher gekoppelt ist, wobei der Controller eingerichtet ist, um: einen treiberlosen Zugriffsbefehl zu empfangen; den treiberlosen Zugriffsbefehl weiterzuleiten, um eine Host-Schnittstellenprotokollschicht zu umgehen; einen Treiber-Zugriffsbefehl zu empfangen; und den Treiber-Zugriffsbefehl zu der Host-Schnittstellenprotokollschicht weiterzuleiten.
  27. Vorrichtung gemäß Anspruch 26, wobei die Host-Schnittstellenprotokollschicht eine NVM-Express-Schnittstellenprotokollschicht aufweist.
  28. Vorrichtung gemäß Anspruch 26, wobei die Verbindungsschnittstelle eine PCIe-Verbindungsschnittstelle ist.
  29. Vorrichtung gemäß Anspruch 26, wobei der Host einen oder mehrere BARs dynamisch aktiviert und deaktiviert, um einen treiberlosen Zugriff für den treiberlosen Zugriffsbefehl bereitzustellen.
DE102018123817.7A 2017-12-19 2018-09-26 Vorrichtung für den direkten hostzugriff auf den speicherort einer speichervorrichtung Pending DE102018123817A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/847,671 US10929309B2 (en) 2017-12-19 2017-12-19 Direct host access to storage device memory space
US15/847,671 2017-12-19

Publications (1)

Publication Number Publication Date
DE102018123817A1 true DE102018123817A1 (de) 2019-06-19

Family

ID=66674941

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102018123817.7A Pending DE102018123817A1 (de) 2017-12-19 2018-09-26 Vorrichtung für den direkten hostzugriff auf den speicherort einer speichervorrichtung

Country Status (4)

Country Link
US (3) US10929309B2 (de)
KR (1) KR102335063B1 (de)
CN (1) CN109933283B (de)
DE (1) DE102018123817A1 (de)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10956071B2 (en) 2018-10-01 2021-03-23 Western Digital Technologies, Inc. Container key value store for data storage devices
US10769062B2 (en) 2018-10-01 2020-09-08 Western Digital Technologies, Inc. Fine granularity translation layer for data storage devices
US10740231B2 (en) 2018-11-20 2020-08-11 Western Digital Technologies, Inc. Data access in data storage device including storage class memory
US10860333B1 (en) 2019-10-14 2020-12-08 Western Digital Technologies, Inc. Interleaved host reset and next re-initialization operations
US11016905B1 (en) 2019-11-13 2021-05-25 Western Digital Technologies, Inc. Storage class memory access
US11487544B2 (en) * 2020-01-15 2022-11-01 Western Digital Technologies, Inc. Method and device for simultaneously decoding data in parallel to improve quality of service
US11249921B2 (en) 2020-05-06 2022-02-15 Western Digital Technologies, Inc. Page modification encoding and caching
CN111783163A (zh) * 2020-07-01 2020-10-16 联想(北京)有限公司 一种主机保护区的实现方法、装置和电子设备
US11733931B1 (en) * 2020-07-13 2023-08-22 Meta Platforms, Inc. Software defined hybrid flash storage memory controller
CN114816263A (zh) * 2020-09-18 2022-07-29 星宸科技股份有限公司 存储访问方法及智能处理装置
CN112256601B (zh) * 2020-10-19 2023-04-21 苏州凌云光工业智能技术有限公司 数据存取控制方法、嵌入式存储***及嵌入式设备
CN114968855A (zh) * 2021-02-18 2022-08-30 西部数据技术公司 对持久性存储区域范围的一致访问
CN112835842B (zh) * 2021-03-05 2024-04-30 深圳市汇顶科技股份有限公司 端序处理方法、电路、芯片以及电子终端
CN113127402B (zh) * 2021-04-29 2024-05-14 广东湾区智能终端工业设计研究院有限公司 一种spi访问控制方法、***、计算设备及存储介质
US11640335B2 (en) 2021-06-15 2023-05-02 Western Digital Technologies, Inc. Multiple function level reset management
US12034749B2 (en) * 2021-08-23 2024-07-09 Infineon Technologies Ag Anamoly detection system for peripheral component interconnect express
US11922034B2 (en) 2021-09-02 2024-03-05 Samsung Electronics Co., Ltd. Dual mode storage device
CN114003170B (zh) * 2021-09-17 2024-03-19 方一信息科技(上海)有限公司 一种基于FPGA的Raid卡驱动方法
US12014080B2 (en) 2021-11-10 2024-06-18 Samsung Electronics Co., Ltd. Memory system using host memory buffer and operation method thereof
US11841767B2 (en) 2021-11-24 2023-12-12 Samsung Electronics Co., Ltd. Controller controlling non-volatile memory device, storage device including the same, and operating method thereof
US20230409234A1 (en) * 2022-05-17 2023-12-21 Western Digital Technologies, Inc. Data Storage Device and Method for Host Multi-Command Queue Grouping Based on Write-Size Alignment in a Multi-Queue-Depth Environment
CN117453279B (zh) * 2023-12-26 2024-03-19 中国人民解放军国防科技大学 一种适用于太空强辐射环境下的星载设备硬件架构

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7257714B1 (en) * 1999-10-19 2007-08-14 Super Talent Electronics, Inc. Electronic data storage medium with fingerprint verification capability
EP1282858A4 (de) 2000-03-17 2006-11-02 Emperative Inc Kommunikationsdienstbereitstellungsverfahren und vorrichtung und objektprogrammiersprache zum entwickeln von bereitstellungsmodellen
US7475174B2 (en) 2004-03-17 2009-01-06 Super Talent Electronics, Inc. Flash / phase-change memory in multi-ring topology using serial-link packet interface
US7861122B2 (en) 2006-01-27 2010-12-28 Apple Inc. Monitoring health of non-volatile memory
CN101515472B (zh) * 2008-02-19 2012-05-02 南亚科技股份有限公司 存取存储器芯片的方法
US8775718B2 (en) 2008-05-23 2014-07-08 Netapp, Inc. Use of RDMA to access non-volatile solid-state memory in a network storage system
US9218278B2 (en) 2010-12-13 2015-12-22 SanDisk Technologies, Inc. Auto-commit memory
KR20120132820A (ko) * 2011-05-30 2012-12-10 삼성전자주식회사 스토리지 디바이스, 스토리지 시스템 및 스토리지 디바이스의 가상화 방법
US9727570B2 (en) * 2011-06-03 2017-08-08 Apple Inc. Mount-time unmapping of unused logical addresses in non-volatile memory systems
WO2012106908A1 (zh) 2011-07-20 2012-08-16 华为技术有限公司 多处理器体系结构远端内存访问的模拟方法及模拟器
US10037272B2 (en) 2012-08-08 2018-07-31 Avalanche Technology, Inc. Storage system employing MRAM and array of solid state disks with integrated switch
US8966172B2 (en) 2011-11-15 2015-02-24 Pavilion Data Systems, Inc. Processor agnostic data storage in a PCIE based shared storage enviroment
WO2013163612A1 (en) 2012-04-27 2013-10-31 Magpie Sensing Llc Environmental monitoring
US20130343131A1 (en) * 2012-06-26 2013-12-26 Lsi Corporation Fast tracking for flash channels
US20140101370A1 (en) 2012-10-08 2014-04-10 HGST Netherlands B.V. Apparatus and method for low power low latency high capacity storage class memory
US8880771B2 (en) * 2012-10-25 2014-11-04 Plx Technology, Inc. Method and apparatus for securing and segregating host to host messaging on PCIe fabric
US20140237156A1 (en) * 2012-10-25 2014-08-21 Plx Technology, Inc. Multi-path id routing in a pcie express fabric environment
CN103838676B (zh) 2012-11-22 2017-10-17 华为技术有限公司 数据存储***、数据存储方法及pcm桥
US9430412B2 (en) 2013-06-26 2016-08-30 Cnex Labs, Inc. NVM express controller for remote access of memory and I/O over Ethernet-type networks
US8949486B1 (en) 2013-07-17 2015-02-03 Mellanox Technologies Ltd. Direct memory access to storage devices
CN105164980B (zh) * 2014-04-04 2019-01-08 华为技术有限公司 众核下网络数据的分发方法及***
CN105005536B (zh) * 2015-07-01 2019-08-06 忆正科技(武汉)有限公司 固态存储设备、主机的工作方法及固态存储设备、主机
US10223314B2 (en) * 2015-08-17 2019-03-05 Avago Technologies International Sales Pte. Limited PCI express connected network switch
US20170139849A1 (en) 2015-11-17 2017-05-18 HGST Netherlands B.V. Driverless storage device using serially-attached non-volatile memory

Also Published As

Publication number Publication date
US20210124692A1 (en) 2021-04-29
US20190188153A1 (en) 2019-06-20
US20240078188A1 (en) 2024-03-07
KR20190074194A (ko) 2019-06-27
KR102335063B1 (ko) 2021-12-02
US11681634B2 (en) 2023-06-20
CN109933283B (zh) 2022-06-28
US10929309B2 (en) 2021-02-23
CN109933283A (zh) 2019-06-25

Similar Documents

Publication Publication Date Title
DE102018123817A1 (de) Vorrichtung für den direkten hostzugriff auf den speicherort einer speichervorrichtung
US11720283B2 (en) Coherent access to persistent memory region range
US11354454B2 (en) Apparatus and method of detecting potential security violations of direct access non-volatile memory device
DE102015103220B4 (de) System, umfassend ein Master-Sicherheitsprüfungsregister, Verfahren, Nichtflüchtiges Medium und maschinenlesbare Anweisungen
DE102018113447A1 (de) Speichervorrichtung zum Koppeln mit einem Host und Verfahren zum Betreiben des Hosts und der Speichervorrichtung
DE112019000194T5 (de) Verwenden einer ausgefallenen Speichervorrichtung in einem Peer-to-Peer-Speichersystem zum durchführen einer speicherzentrischen Aufgabe
US8099624B1 (en) Recovery mechanism for I/O module using out-of-band control path
DE102011014588A1 (de) Multicasting-Schreibanforderungen an Mehrfachspeicher-Controller
DE102012214324A1 (de) Datenüberprüfung mithilfe eines Prüfsummen-Sidefile
DE112013006549T5 (de) Computersystem und Datensteuerverfahren
KR102646616B1 (ko) 판독 명령 실행을 위한 NVMeoF RAID 구현 방법
DE202010017916U1 (de) Verbindungsenergieeinsparmodus mit Beibehaltung des Zustands
DE112021000215T5 (de) Speichersystem mit verschlüsselten Telemetriedaten einer Datenspeicherungsvorrichtung
US11243899B2 (en) Forced detaching of applications from DMA-capable PCI mapped devices
DE102018115683A1 (de) Domänenübergreifende sicherheit in kryptographisch partionierter cloud
DE112021000246T5 (de) Nachrichtenübermittlung von der peer-speicherungsvorrichtung über den steuerbus
DE102021109189B4 (de) Verifikationsprüfung durchführen als Antwort auf Änderung im Basisregister der Seitentabelle
DE112016001972T5 (de) Sicherer Zugriff in einem Mikrokontrollersystem
CN105681402A (zh) 一种基于PCIe闪存卡的分布式高速数据库集成***
DE102021101709A1 (de) Virtuelle serielle schnittstellen für virtuelle maschinen
KR102167393B1 (ko) 메모리 공유 환경에서 데이터 무결성 감시 장치 및 방법
DE10297686B4 (de) System und Verfahren zum Steuern der Zugriffe zwischen einzelnen Geräten innerhalb eines Computersystems
DE10296979B4 (de) Computersystem mit einer aktiven Speicherbusperipherieeinrichtung und Verfahren zur Steuerung einer aktiven Speicherbusperipherieeinrichtung
US10599508B2 (en) I/O error diagnostics
DE102021115912A1 (de) Kohärenter zugriff auf einen regionsbereich eines persistenten speichers

Legal Events

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

Representative=s name: MURGITROYD GERMANY PATENTANWALTSGESELLSCHAFT M, DE

R081 Change of applicant/patentee

Owner name: SANDISK TECHNOLOGIES, INC. (N.D.GES. D. STAATE, US

Free format text: FORMER OWNER: WESTERN DIGITAL TECHNOLOGIES, INC., SAN JOSE, CA, US