DE102020115969A1 - Speichervorrichtungen, speichersysteme und verfahren zum betreiben von speichervorrichtungen - Google Patents

Speichervorrichtungen, speichersysteme und verfahren zum betreiben von speichervorrichtungen Download PDF

Info

Publication number
DE102020115969A1
DE102020115969A1 DE102020115969.2A DE102020115969A DE102020115969A1 DE 102020115969 A1 DE102020115969 A1 DE 102020115969A1 DE 102020115969 A DE102020115969 A DE 102020115969A DE 102020115969 A1 DE102020115969 A1 DE 102020115969A1
Authority
DE
Germany
Prior art keywords
memory
metadata
area
storage
data
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
DE102020115969.2A
Other languages
English (en)
Inventor
JungHoon Kim
Seonghun KIM
Hongkug Kim
Sojeong Park
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.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
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 Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of DE102020115969A1 publication Critical patent/DE102020115969A1/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/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • 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
    • 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0615Address space extension
    • G06F12/063Address space extension for I/O modules, e.g. memory mapped I/O
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • G06F12/0882Page mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1684Details of memory controller using multiple buses
    • 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
    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing storage systems
    • G06F3/0622Securing storage systems in relation to access
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0643Management of files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/18Bit line organisation; Bit line lay-out
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C8/00Arrangements for selecting an address in a digital store
    • G11C8/14Word line organisation; Word line lay-out
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/652Page size control
    • 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

Abstract

Speichervorrichtung enthält: einen nichtflüchtigen Speicher, der einen ersten Bereich und einen zweiten Bereich enthält, einen Speichercontroller, der den Betrieb des nichtflüchtigen Speichers steuert, und einen Pufferspeicher, der mit dem Speichercontroller verbunden ist. Der Speichercontroller speichert von einer Host-Vorrichtung empfangene Benutzerdaten in dem zweiten Bereich, speichert der Verwaltung der Benutzerdaten zugeordnete und von einem Dateisystem der Host-Vorrichtung erzeugte Metadaten in dem ersten Bereich, lädt als Reaktion auf eine Adressinformation für einen den Metadaten zugeordneten Indexknoten (Inode) die Metadaten aus dem ersten Bereich in den Pufferspeicher und greift unter Verwendung der in den Pufferspeicher geladenen Metadaten auf die Zieldaten in dem zweiten Bereich zu.

Description

  • QUERVERWEIS AUF VERWANDTE ANMELDUNG
  • Diese Anmeldung beansprucht die Priorität gemäß 35 USC § 119 bzgl. der koreanischen Patentanmeldung Nr. 10-2019-0158001, die am 2. Dezember 2019 beim koreanischen Amt für geistiges Eigentum eingereicht wurde und deren Gegenstand hiermit durch Verweis hierin aufgenommen ist.
  • HINTERGRUND
  • beispielhaften Ausführungsformen beziehen sich im Allgemeinen auf die Datenverarbeitung und im Besonderen auf eine Speichervorrichtung, ein Speichersystem, das eine Speichervorrichtung enthält, und/oder Verfahren zum Betreiben einer Speichervorrichtung.
  • Datenverarbeitungsvorrichtungen können viele Formen annehmen, darunter ein Desktop-Computer, ein Notebook, ein Smartphone, ein Smart-Tablet usw. In vielen Computervorrichtungen wird traditionell ein Festplattenlaufwerk (Hard Disk Drive, HDD) als eine Speichervorrichtung verwendet. Mobile Vorrichtungen wie Smartphones verwenden jedoch anstelle des HDD eine nichtflüchtige Speichervorrichtung als Speichervorrichtung. Nichtflüchtige Speichervorrichtungen schließen (z. B.) NAND-Flash-Speicher, Phasenwechsel-RAM (PRAM), magnetisches RAM (MRAM), resistives RAM (RRAM) und ferroelektrisches RAM (FRAM) ein.
  • Die Häufigkeit, mit der auf Speichervorrichtungen durch moderne Computervorrichtungen zugegriffen wird, nimmt zu. Diese zunehmende Nutzungshäufigkeit belastet die Speichervorrichtungen.
  • Nichtflüchtige Speichervorrichtungen weisen im Vergleich zum HDD eine vergleichsweise kurze Nutzungshistorie auf. Infolgedessen sind die meisten Dateisysteme, die derzeit zur Verwaltung einer Speichervorrichtung verwendet werden, für die Betriebseigenschaften der HDD ausgelegt. Aufgrund von Unterschieden in den Betriebseigenschaften einer nichtflüchtigen Speichervorrichtung im Vergleich zur HDD können vorhandene Dateisysteme die von der nichtflüchtigen Speichervorrichtung gebotenen Leistungsmerkmale nicht vollständig und effizient nutzen. Dementsprechend sollten neue Ansätze für Dateisysteme, Datenübertragung und -speicherung sowie Speichervorrichtungen, die nichtflüchtige Speichervorrichtungen enthalten, sorgfältig erwogen werden, um die Leistungsvorteile nichtflüchtiger Speichervorrichtungen voll auszuschöpfen.
  • ZUSAMMENFASSUNG
  • Einige beispielhaften Ausführungsformen sehen eine Speichervorrichtung vor, die in der Lage ist, den Eingabe/Ausgabe (E/A)-Overhead zwischen der Speichervorrichtung und einer Host-Vorrichtung zu reduzieren.
  • Einige beispielhaften Ausführungsformen sehen ein Speichersystem vor, das den E/A-Overhead zwischen der Speichervorrichtung und einer Host-Vorrichtung reduzieren kann.
  • Einige beispielhaften Ausführungsformen sehen ein Verfahren zum Betreiben einer Speichervorrichtung vor, die den E/A-Overhead zwischen der Speichervorrichtung und einer Host-Vorrichtung reduzieren kann.
  • Nach einigen beispielhaften Ausführungsformen enthält eine Speichervorrichtung eine Speichervorrichtung, enthaltend: einen nichtflüchtigen Speicher, der einen ersten Bereich und einen zweiten Bereich enthält, einen Speichercontroller, der eingerichtet ist, um den nichtflüchtigen Speicher zu steuern, und einen Pufferspeicher, der mit dem Speichercontroller verbunden ist, wobei der Speichercontroller eingerichtet ist, um Benutzerdaten einschließlich Zieldaten, die von einer Host-Vorrichtung empfangen wurden, im zweiten Bereich zu speichern, und der Verwaltung der Benutzerdaten zugeordnete und von einem Dateisystem der Host-Vorrichtung erzeugte Metadaten in dem ersten Bereich zu speichern, und der Speichercontroller ferner eingerichtet ist, um als Reaktion auf eine Adressinformation für einen den Metadaten zugeordneten Indexknoten (Inode) die Metadaten in den Pufferspeicher zu laden und unter Verwendung der in den Pufferspeicher geladenen Metadaten auf die Zieldaten in dem zweiten Bereich zuzugreifen.
  • Nach einigen beispielhaften Ausführungsformen enthält ein Speichersystem: eine Host-Vorrichtung, die ein Dateisystem enthält, und Benutzerdaten einschließlich Zieldaten und Metadaten bereitstellt, die der Verwaltung der Benutzerdaten zugeordnet werden und vom Dateisystem erzeugt werden, und eine Speichervorrichtung, enthaltend: einen nichtflüchtigen Speicher, der einen ersten Bereich und einen zweiten Bereich enthält, einen Speichercontroller, der eingerichtet ist, um den Betrieb des nichtflüchtigen Speichers zu steuern, und einen Pufferspeicher, der mit dem Speichercontroller verbunden ist, wobei der Speichercontroller eingerichtet ist, um die Benutzerdaten im zweiten Bereich zu speichern und die Metadaten im ersten Bereich zu speichern, und der Speichercontroller ferner eingerichtet ist, um die Metadaten als Reaktion auf eine Adressinformation für einen Indexknoten (Inode), der den Metadaten zugeordnet ist, in den Pufferspeicher zu laden und unter Verwendung der in den Pufferspeicher geladenen Metadaten auf die Zieldaten im zweiten Bereich zuzugreifen.
  • Nach einigen beispielhaften Ausführungsformen enthält ein Verfahren zum Betreiben einer Speichervorrichtung, die einen nichtflüchtigen Speicher, der einen ersten Bereich und einen zweiten Bereich enthält, einen Speichercontroller, der den Betrieb des nichtflüchtigen Speichers steuert, und einen Pufferspeicher enthält, der mit dem Speichercontroller verbunden ist, Speichern von Benutzerdaten, die von einer Host-Vorrichtung empfangen werden, in dem zweiten Bereich, Speichern von Metadaten, die der Verwaltung der Benutzerdaten zugeordnet werden und von einem Dateisystem der Host-Vorrichtung erzeugt werden, in dem ersten Bereich, Laden der Metadaten aus dem ersten Bereich in den Pufferspeicher als Reaktion auf eine Adressinformation für einen Indexknoten (Inode), der den Metadaten zugeordnet ist, und Zugreifen auf die Zieldaten in dem zweiten Bereich unter Verwendung der in den Pufferspeicher geladenen Metadaten.
  • Figurenliste
  • Veranschaulichende, nicht einschränkende beispielhaften Ausführungsformen werden durch die folgende detaillierte Beschreibung in Verbindung mit den beigefügten Zeichnungen besser verständlich.
    • 1 ist ein Blockdiagramm, das ein Speichersystem (oder ein Datenspeichersystem) nach einigen beispielhaften Ausführungsformen veranschaulicht.
    • 2 ist ein Blockdiagramm, das die Host-Vorrichtung in 1 nach einigen beispielhaften Ausführungsformen veranschaulicht.
    • 3 veranschaulicht ein Beispiel des Host-Speichers in 2 nach beispielhaften Ausführungsformen.
    • 4 ist ein Blockdiagramm, das den Speichercontroller in 1 nach einigen beispielhaften Ausführungsformen veranschaulicht.
    • 5 veranschaulicht ein Beispiel für mehrere Kanäle und Möglichkeiten der nichtflüchtigen Speicherung in 1 nach einigen beispielhaften Ausführungsformen.
    • 6 ist ein Blockdiagramm zur Erläuterung eines Beispiels für die nichtflüchtige Speicherung in der Speichervorrichtung in 1 nach beispielhaften Ausführungsformen.
    • 7 ist ein Diagramm zur Veranschaulichung der Struktur einer auf der Speichervorrichtung gespeicherten Datei in 1.
    • 8 ist ein Blockdiagramm zur Erläuterung eines Beispiels für die nichtflüchtige Speicherung in der Speichervorrichtung in 1 nach beispielhaften Ausführungsformen.
    • 9 ist ein Diagramm zur Erläuterung einer Knotenadresstabelle in 8 nach beispielhaften Ausführungsformen.
    • 10 ist ein Beispiel für den vom Dateisystem in 3 erzeugten Metadatensatz.
    • 11A bis 11C veranschaulichen die Funktionsweise des Speichersystems von 1 nach einigen beispielhaften Ausführungsformen.
    • 12 ist ein Blockdiagramm, das eine Verbindungsbeziehung zwischen dem Speichercontroller und einer nichtflüchtigen Speichervorrichtung in der Speichervorrichtung von 1 veranschaulicht.
    • 13 ist ein Blockdiagramm, das den nichtflüchtigen Speicher in 12 nach einigen beispielhaften Ausführungsformen veranschaulicht.
    • 14 ist ein Blockdiagramm, das das Speicherzellenarray in der nichtflüchtigen Speichervorrichtung von 13 veranschaulicht.
    • 15 ist ein Schaltungsdiagramm, das einen der Speicherblöcke von 14 veranschaulicht.
    • 16 veranschaulicht ein Beispiel für die Struktur eines Zellstrangs CS im Speicherblock von 15.
    • 17 veranschaulicht, dass aufeinanderfolgende Leseoperationen als Antwort auf eine Anfrage im Speichersystem von 1 nach einigen beispielhaften Ausführungsformen durchgeführt werden.
    • 18 veranschaulicht ein Beispiel dafür, dass der Speichercontroller in der Speichervorrichtung in 1 den Metadatensatz aktualisiert.
    • 19 veranschaulicht, dass der Speichercontroller von 4 das Attribut der Daten durch Bezugnahme auf den Metadatensatz von 10 bestimmt.
    • 20 veranschaulicht ein Beispiel für ein im Metadatensatz enthaltenes Bitmap.
    • 21 ist ein Ablaufdiagramm, das ein Verfahren zum Betreiben einer Speichervorrichtung nach einigen beispielhaften Ausführungsformen veranschaulicht.
    • 22 ist ein Blockdiagramm, das ein System veranschaulicht, das eine Speichervorrichtung nach einigen beispielhaften Ausführungsformen enthält.
    • 23 ist ein Blockdiagramm, das eine mobile Vorrichtung nach einigen beispielhaften Ausführungsformen veranschaulicht.
  • DETAILLIERTE BESCHREIBUNG
  • Verschiedene beispielhafte Ausführungsformen werden im Folgenden unter Bezugnahme auf die beigefügten Zeichnungen, in denen einige beispielhaften Ausführungsformen gezeigt werden, ausführlicher beschrieben.
  • Wie nachstehend dargestellt, kann jeder der Komponentenblöcke in Hardware implementiert werden, z. B. in Hardware, die eingerichtet ist, um nichtflüchtige Befehle auszuführen. Sofern nicht anders angegeben, können Komponenten, wie z. B. Controller, wie etwa Speichercontroller usw., als eine Schaltung, ein FPGA und/oder ein Prozessor implementiert sein, der eingerichtet ist, um maschinenlesbare Befehle derart auszuführen, dass, wenn sie von dem Prozessor ausgeführt werden, den Prozessor veranlassen, die spezifischen Funktionen durchzuführen.
  • Abbildung (Fig.) 1 ist ein Blockdiagramm, das ein Datenspeichersystem (im Folgenden Speichersystem) nach einigen beispielhaften Ausführungsformen veranschaulicht.
  • Unter Bezugnahme auf 1 enthält ein Speichersystem 10 eine Host-Vorrichtung 100 und eine Speichervorrichtung (SD) 200. Die Speichervorrichtung 200 kann ein Festkörperlaufwerk (Solid State Device, SSD) enthalten.
  • Die Host-Vorrichtung 100 kann den Gesamtbetrieb der Speichervorrichtung 200 steuern. Die Host-Vorrichtung 100 kann verschiedene Befehls-, Steuer-, Adress- und/oder Datensignale mit der Speichervorrichtung 200 austauschen.
  • Die Speichervorrichtung 200 kann einen Speichercontroller 300 und einen nichtflüchtigen Speicher 400 enthalten, und der nichtflüchtige Speicher 400 kann mehrere nichtflüchtige Speicher 400a~400k enthalten, wobei „k“ eine natürliche Zahl größer als 2 ist. Jeder der nichtflüchtigen Speicher 400a~400k kann NAND-Flash-Speicher enthalten.
  • Der Speichercontroller 300 kann den Austausch von Befehls-, Adress- und/oder Datensignalen mit der Host-Vorrichtung 100 steuern. Der Speichercontroller 300 kann Daten in einen nichtflüchtigen Speicher schreiben (oder programmieren) und/oder als Antwort auf einen oder mehrere von der Host-Vorrichtung 100 empfangene Befehle (z. B. Anfrage(n)) Daten aus einem nichtflüchtigen Speicher lesen.
  • Der Speichercontroller 200 kann eine Flash-Übersetzungsschicht (FTL) (Flash Translation Layer, FTL) 305 enthalten. 1
  • Die FTL 305 kann eine Firmware oder Software sein, die vom Speichercontroller 300 angesteuert wird. Die FTL 305 kann eine logische Adresse eines durch die Host-Vorrichtung 100 verwalteten Speicherplatzes in eine physikalische Adresse eines Speicherplatzes des nichtflüchtigen Speichers 400 übersetzen. Der Speichercontroller 300 kann eine logische Adresse einer auf einer logischen Adresse basierenden Anforderung, die von der Host-Vorrichtung 100 empfangen wurde, unter Verwendung der FTL 305 in eine physikalische Adresse übersetzen. Die FTL 305 kann den nichtflüchtigen Speicher 400 verwalten und verschiedene Hintergrundoperationen zur Verbesserung der Betriebsleistung des nichtflüchtigen Speichers 400 durchführen.
  • Das Speichersystem 10 von 1 arbeitet in Bezug auf mindestens zwei Arten von Daten, die allgemein als Benutzerdaten und Metadaten bezeichnet werden. Benutzerdaten sind inhaltsbezogene oder Nutzdaten, die von der Host-Vorrichtung 100 der Speichervorrichtung 200 zur Verfügung gestellt und in den nichtflüchtigen Speicher 400 geschrieben werden. Die Benutzerdaten können verschiedene Daten enthalten, z. B. Daten, die einem Betriebssystem und/oder einer oder mehreren im Speichersystem 10 installiert Anwendung(en) zugeordnet sind (z. B. eine Textverarbeitungsdatei, eine Tabellenkalkulationsdatei, eine Audiodatei, eine Videodatei, eine Multimediadatei und eine komprimierte Daten-Datei usw.). Im Gegensatz dazu sind Metadaten (oder der Metadatensatz) diejenigen Daten, die die Host-Vorrichtung 100 erzeugt und verwendet, um den Betrieb der Speichervorrichtung 200 zu verwalten. Die Metadaten können Dateisystemdaten enthalten, die durch die Speichervorrichtung 100 definiert werden. Die Metadaten können auch von der Host-Vorrichtung 100 der Speichervorrichtung 200 zur Verfügung gestellt werden und können ohne Benutzereingriff in den nichtflüchtigen Speicher 400 oder in ein Dateisystem geschrieben werden, so dass sie bei fehlender Stromversorgung im Speicher verbleiben können.
  • Die Speichervorrichtung 200 kann ferner einen Pufferspeicher 220 enthalten, der mit dem Speichercontroller 300 verbunden ist.
  • Der Pufferspeicher 220 kann als Pufferbereich verwendet werden, um von der Host-Vorrichtung 100 empfange Schreibdaten und/oder von den nichtflüchtigen Speichervorrichtungen 400a~400k abgerufene Lesedaten vorübergehend zu speichern.
  • Der Pufferspeicher 220 kann auch zum Speichern und/oder Ansteuern von Software verwendet werden, die zur Verwaltung des Betriebs der nichtflüchtigen Speichervorrichtungen 400a~400k verwendet wird. Der Pufferspeicher 220 kann zum Speichern von Metadaten verwendet werden, die von der Host-Vorrichtung 100 empfangen wurden, und/oder kann zum Speichern von Cache-Daten verwendet werden. In einigen Ausführungsformen kann der Pufferspeicher 220 einen flüchtigen Speicher, wie z. B. einen dynamischen Speicher mit wahlfreiem Zugriff (Dynamic Random Access Memory, DRAM) oder einen statischen Speicher mit wahlfreiem Zugriff (Static Random Access Memory, SRAM) enthalten.
  • Die mehreren nichtflüchtigen Speichervorrichtungen 400a~400k können als primäres Speichermedium der Speichervorrichtung 200 verwendet werden. Die nichtflüchtigen Speichervorrichtungen 400a~400k können über mehrere Kanalgruppen CHG1~CHGk mit dem Speichercontroller 300 verbunden werden. Jede der Kanalgruppen CHG1~CHGk kann mindestens einen Kanal enthalten. Mit jeder Kanalgruppe können ein oder mehrere nichtflüchtige Speichervorrichtungen verbunden werden. Mit einer Kanalgruppe verbundene nichtflüchtige Speichervorrichtungen können über einen gemeinsamen Datenbus verbunden werden.
  • Auch wenn es nicht dargestellt ist, kann die Speichervorrichtung 200 ferner eine Kontaktstelle enthalten, die mit der Host-Vorrichtung 100 verbunden werden soll. Die Speichervorrichtung 200 kann unter Verwendung der Kontaktstelle mit der Host-Vorrichtung 100 verbunden und/oder von dieser gelöst werden. Die Kontaktstelle kann einstückig mit der Speichervorrichtung 200 oder als externer Steckverbinder an der Speichervorrichtung 200 ausgebildet werden. In einigen beispielhaften Ausführungsformen enthält die Speichervorrichtung 200 möglicherweise keine Kontaktstelle, sondern kann stattdessen über einen elektronischen Routing-Prozess mit der Host-Vorrichtung 100 verbunden werden.
  • 2 ist ein Blockdiagramm, das die Host-Vorrichtung 100 aus 1 nach einigen beispielhaften Ausführungsformen weiter veranschaulicht.
  • Unter Bezugnahme auf 2 kann die Host-Vorrichtung 100 einen Prozessor 110, einen Nur-Lese-Speicher (ROM) 120, einen Host-Speicher 130, eine Benutzerschnittstelle 140, eine Speicherschnittstelle 150 und/oder einen Bus 170 enthalten. Die Host-Vorrichtung 100 kann ferner einen Speichercontroller 160 enthalten.
  • Der Bus 170 kann sich auf einen Übertragungskanal beziehen, über den Daten zwischen dem Prozessor 110, dem ROM 120, dem Host-Speicher 130, der Benutzerschnittstelle 140, der Speicherschnittstelle 150 und/oder dem Speichercontroller 160 der Host-Vorrichtung 100 übertragen werden.
  • Der Prozessor 110 kann den Gesamtbetrieb der Host-Vorrichtung 100 steuern. Der Prozessor 110 kann Software ausführen, die in den Host-Speicher 120 geladen wurde. Der Prozessor 110 kann beispielsweise ein Anwendungsprogramm, ein Dateisystem, einen Block-E/A-Zeitplaner (Block-E/A-Zeitplaner) und einen Vorrichtungstreiber ausführen. Der Prozessor 110 kann homogene Mehrkernprozessoren oder heterogene Mehrkernprozessoren enthalten. Der Prozessor 110 kann beispielsweise mindestens eine von einer zentrale Verarbeitungseinheit (CPU), einer Bildsignalverarbeitungseinheit (ISP), einer Digitalsignalverarbeitungseinheit (DSP), einer Grafikverarbeitungseinheit (GPU), einer Bildverarbeitungseinheit (VPU) und einer neuronalen Verarbeitungseinheit (NPU) enthalten.
  • Das ROM 120 kann verschiedene Anwendungsprogramme speichern, z. B. Anwendungsprogramme, die Speicherprotokolle, wie z. B. Advanced-Technology-Attachment (ATA), Small-Computer-System-Interface (SCSI), eingebettete MultiMedia-Card (eMMC) und Universal-Flash-Storage (UFS)-Protokolle und NVMe unterstützen.
  • Der Hostspeicher 130 kann vorübergehend Daten oder Programme speichern. Ein Betriebssystem (OS), das die gesamte Hardware und Software im Speichersystem 10 verwaltet, kann auf den Host-Speicher 130 geladen werden.
  • Die Speicherschnittstelle 150 kann Schnittstellen enthalten, die Speicherprotokolle wie SATA, SAS, eMMC, UFS und/oder NVMe unterstützen.
  • Die Benutzerschnittstelle 140 kann ein physikalisches oder virtuelles Medium zum Austausch von/einer Information(en) zwischen einem Benutzer und der Host-Vorrichtung 100, einem Computerprogramm usw. sein oder ein solches enthalten und kann physikalische Hardware und logische Software enthalten. Die Benutzerschnittstelle 140 kann beispielsweise eine Eingabevorrichtung enthalten, die es einem Benutzer ermöglicht, eine Schnittstelle mit der Host-Vorrichtung 100 herzustellen, und/oder eine Ausgabevorrichtung, die dem Benutzer ein Datenverarbeitungsergebnis zur Verfügung stellt.
  • Der Speichercontroller 160 kann den Host-Speicher 130 steuern.
  • 3 ist ein konzeptionelles Diagramm, das verschiedene Komponenten des Host-Speichers 130 von 2 nach beispielhaften Ausführungsformen veranschaulicht.
  • Unter Bezugnahme auf 3 kann der Hostspeicher (z. B. ein Anwendungsprogramm 131 in einem Benutzerbereich, ein in einem Kernelbereich, enthaltenes Dateisystem 132, einen E/A-Zeitplaner 133 und einen Vorrichtungstreiber 325 laden.
  • Die in den Host-Speicher 130 geladenen Softwareschichten (z. B. 131, 132, 133 und 135) können in einen Software-Stapel aufgenommen werden, der für den Zugriff auf die Speichervorrichtung 200 verwendet wird. Der Host-Speicher 130 kann ein Speichermedium wie z. B. eine DRAM-Vorrichtung oder eine SRAM-Vorrichtung enthalten.
  • Das Anwendungsprogramm 131 kann als Basis- (oder Standard-) Dienst oder als Antwort auf eine Benutzeranfrage ausgeführt werden. Der Benutzerraum, in dem das Anwendungsprogramm 131 gespeichert ist, und der Kernelraum, in dem ein Kernel einschließlich des Dateisystems 132, des E/A-Zeitplaners 133, des Vorrichtungstreibers 135 usw. gespeichert ist, können getrennt bezeichnet werden. Das Anwendungsprogramm 131 kann nicht direkt auf eine Ressource, wie z. B. die Speichervorrichtung 200, zugreifen. Stattdessen kann das Anwendungsprogramm 131 eine oder mehrere Funktion(en) aufrufen, die in einer (nicht dargestellten) Bibliothek definiert sind, in der Systemaufruf-Funktionen enthalten sind, und kann eine Aufgabe vom Kernel anfordern. In einem Fall, in dem die Systemaufruf-Funktion verwendet wird, kann von einem Benutzermodus in einen Kernel-Modus gewechselt werden.
  • Das Dateisystem 132 kann Dateien oder Daten verwalten, die auf der Speichervorrichtung 200 gespeichert werden. Zum Beispiel kann das Dateisystem 132 ein File-Allocation-Table (FAT), ein New-Technology-File-System (NTFS), ein Hierarchical-File-System (HFS), ein High-Performance-File-System (HPFS), ein Unix-File-System (UFS), ein Secondary-Extended-File-System (ext2), ein ext3, ein ext4, ein Journaling-File-System (JFS), ein ISO 9660, Files-11, ein Veritas-File-System (VxFS), ein ZFS, ein ReiserFS, ein Universal-Disk-Format (UDF) oder ähnliches enthalten. Insbesondere kann das Dateisystem 132 bei einem SPO-Ereignis (SPO = sudden power off, plötzliches Stromabschalten) oder einem Systemabsturz ein Protokollerstellen (Journaling) durchführen, das die Konsistenz der Daten im gesamten Hostspeicher 130 (z. B. Datei- und/oder Datenkonsistenz) bewahrt.
  • Das Dateisystem 132 kann verwendet werden, um Metadaten (MDS) 327 zu erzeugen, die das Speichern und/oder Abrufen von Benutzerdaten im nichtflüchtigen Speicher 400 verwalten. Das Dateisystem 132 kann die MDS 327 im Hostspeicher 130 speichern.
  • Der E/A-Zeitplaner 133 kann in einer Blockschicht vorhanden sein. Der E/A-Zeitplaner 133 kann verschiedene E/A-Anforderungen vom Dateisystem 132 empfangen und die empfangenen E/A-Anforderungen in einer Zeitplaner-Warteschlange 134 speichern. Der E/A-Zeitplaner 133 kann die Zeitplaner-Warteschlange 134 verwalten. Der Block-Zeitplaner 133 kann die E/A-Anforderungen zusammenführen oder die Reihenfolge der E/A-Anforderungen anpassen (Neuordnen).
  • Der Vorrichtungstreiber 135 ist ein Programm, das als Teil des Kernels zur Steuerung einer Hardware-Vorrichtung, wie z. B. der Speichervorrichtung 200, arbeitet. Der Vorrichtungstreiber 135 kann E/A-Anforderungen aus der Zeitplaner-Warteschlange 134 entfernen und einen Befehl zur Steuerung der Speichervorrichtung 200 erzeugen. Der Vorrichtungstreiber 135 kann die E/A-Anforderungen der Zeitplaner-Warteschlange 134 verarbeiten. Der Vorrichtungstreiber 135 kann beispielsweise eine Blockvorrichtung sein, die Dateneingabe- und/oder Datenausgabefunktionen in Bezug auf die Speichervorrichtung 200 auf Blockbasis durchführt. In anderen Ausführungsformen können ein anderes Programm bzw. andere Programme und/oder eine Softwareschicht bzw. Softwareschichten, die über die in 3 dargestellten hinausgeht/hinausgehen, in den Host-Speicher 130 geladen werden.
  • 4 ist ein Blockdiagramm, das den Speichercontroller 300 von 1 nach einigen beispielhaften Ausführungsformen weiter veranschaulicht.
  • Unter Bezugnahme auf 4 kann der Speichercontroller 300 einen Prozessor 310, wie z. B. eine CPU, ein SRAM 320, eine ECC-Engine (Error Correction Code, Fehlerkorrekturcode) 330, eine Host-Schnittstelle 340, ein ROM 360, eine nichtflüchtige Speicherschnittstelle 350 und/oder einen Bus 315 enthalten.
  • Der Bus 315 kann sich auf einen Übertragungskanal beziehen, über den Daten mit dem Prozessor 310, dem SRAM 320, der ECC-Engine 330, der Host-Schnittstelle 340, dem Migrationsmanager 360 und der nichtflüchtigen Speicherschnittstelle 350 des Speichercontrollers 300 ausgetauscht werden. Der Prozessor 310 kann Operationen für den Datenaustausch zwischen der Host-Vorrichtung 100 und den nichtflüchtigen Speichervorrichtungen 400a~400k durchführen.
  • Die Host-Schnittstelle 340 ist mit der Host-Vorrichtung 100 verbunden, und die Schnittstelle für nichtflüchtigen Speicher 350 ist mit den nichtflüchtigen Speichervorrichtungen 400a~400k verbunden. Der Prozessor 310 kann mit der Host-Vorrichtung 100 über die Host-Schnittstelle 340 kommunizieren. Die Host-Schnittstelle 340 kann über eine SATA-Schnittstelle, eine PATA-Schnittstelle (Parallel Advanced Technology Attachment), eine USB- oder SAS-Schnittstelle, eine eMMC-Schnittstelle, eine UFS-Schnittstelle und/oder eine eMMC-Schnittstelle implementiert werden, ist aber nicht darauf beschränkt.
  • Der Prozessor 310 kann mit den nichtflüchtigen Speichervorrichtungen 400a~400k über die Schnittstelle 350 des nichtflüchtigen Speichers kommunizieren. Die nichtflüchtige Speicherschnittstelle 350 kann mit jeder der nichtflüchtigen Speichervorrichtungen 400a~400k verbunden werden.
  • Die ECC-Engine 330 kann während einer Schreiboperation unter Verwendung verschiedener Engines einen Fehlerkorrekturcode (ECC) für von der Host-Vorrichtung 100 empfangene Schreibdaten erzeugen. Während einer Leseoperation kann die ECC-Engine 330 eine Fehlererkennung und Fehlerkorrektur an Lesedaten durchführen, die von den nichtflüchtigen Speichervorrichtungen 400a~400k abgerufen wurden, um die Daten der Hostvorrichtung 100 zur Verfügung zu stellen (oder diese zurück zu übertragen).
  • Das SRAM 320 kann die Metadaten 327, eine Abbildungstabelle 325 und eine Firmware 329 speichern. Die Abbildungstabelle 325 kann (eine) Abbildungsinformation(en) speichern, die logische Adressen, die von der Host-Vorrichtung 100 empfangen werden, mit physikalischen Adressen korrelieren, die zur Bezeichnung von Speicherplätzen in den nichtflüchtigen Speichervorrichtungen 400a~400k verwendet werden.
  • Der Prozessor 310 kann den Zugriff auf die nichtflüchtigen Speichervorrichtungen 400a~400k steuern, indem sie den Metadatensatz 327 und die Firmware 329 kombiniert. Das ROM 360 kann (eine) Information(en) für den Betrieb des Speichercontrollers 300 als Firmware speichern.
  • 5 ist ein konzeptionelles Diagramm, das eine mögliche Anordnung von Kanälen und Wegen veranschaulicht, die verwendet werden könnten, um auf den nichtflüchtigen Speicher 400 von 1 nach einigen beispielhaften Ausführungsformen zuzugreifen.
  • Unter Bezugnahme auf 1 und 5 können die nichtflüchtigen Speichervorrichtungen 400a~400k auf verschiedene Weise mit einer der Kanalgruppen CHG1~CHGk verbunden werden. Zum Beispiel können die nichtflüchtigen Speichervorrichtungen 411~41m, 421~42m, ..., 4k1~4km auf verschiedene Weise mit einer der Kanalgruppen CHG1~CHGk verbunden sein, um Wege zu bilden, nämlich Weg1~Wegm, wobei ‚m‘ eine natürliche Zahl größer als 2 ist, d. h. die jeweiligen ‚m‘ nichtflüchtigen Speichervorrichtungen 411-41m, 421~42m, ..., 4k1-4km können auf „m‟ Wegen in jeder der Kanalgruppen CHG1~CHGk enthalten sein.
  • Dabei bezeichnet ein Weg eine Einheit, die nichtflüchtige Speichervorrichtungen aufteilt, die sich denselben Kanal teilen. Dementsprechend kann jede der nichtflüchtigen Speichervorrichtungen anhand einer Kanalnummer und einer Wegnummer spezifisch identifiziert werden.
  • 6, 7 und 8 sind jeweils Blockdiagramme, die in einem Beispiel den nichtflüchtigen Speicher 400 der Speichervorrichtung 200 von 1 nach den beispielhaften Ausführungsformen weiter veranschaulichen. 7 ist ein Diagramm, das eine beispielhafte Struktur einer auf der Speichervorrichtung 200 von 1 gespeicherten Datei veranschaulicht, und 9 ist ein weiteres Diagramm, das in einem Beispiel die Knotenadresstabelle von 8 nach beispielhaften Ausführungsformen veranschaulicht.
  • Unter Bezugnahme auf 1, 6, 7 und 8 kann der nichtflüchtige Speicher 400 in der Speichervorrichtung 200, wie in 6 dargestellt, eingerichtet werden. Das heißt, ein Segment (SEGMENT) 53 kann mehrere Blöcke (BLK) 51 enthalten, ein Abschnitt (SECTION) 55 enthält mehrere Segmente 53 und eine Zone (ZONE) 57 umfasst mehrere Abschnitte 55.
  • Der Block 51 kann zum Beispiel 4K Byte groß sein, und das Segment 53 kann 2M Byte groß sein, da das Segment 53 512 Blöcke 51 enthält. Eine solche Konfiguration kann während der Formatierung der Speichervorrichtung 200 bestimmt werden, ist aber nicht darauf beschränkt.
  • Eine auf der Speichervorrichtung 200 gespeicherte Datei kann, wie in 7 dargestellt, eine Indexierungsstruktur aufweisen. Eine Datei kann aus mehreren Dateneinheiten und mehreren zugehörigen Knoten bestehen. Die Datenblöcke 70 sind Bereiche, die Daten speichern, und die Knotenblöcke 80, 81 bis 88 und 91 bis 95 sind Bereiche, die Knoten speichern.
  • Die Knotenblöcke 80, 81 bis 88 und 91 bis 95 können direkte Knotenblöcke 81 bis 88, indirekte Knotenblöcke 91 bis 95 und einen Indexknoten-(Inode-)Block 80 enthalten. In 8 sind die direkten Knotenblöcke 81 bis 88 durch Schraffierung und die indirekten Knotenblöcke 91 bis 95 durch Schraffurlinien gekennzeichnet.
  • Die direkten Knotenblöcke 81 bis 88 können Datenzeiger enthalten, die direkt auf die Datenblöcke 70 zeigen. Die indirekten Knotenblöcke 91 bis 95 können Zeiger auf andere Knotenblöcke (d. h. untere Knotenblöcke) 83 bis 88 enthalten, die nicht die Datenblöcke 70 sind. Die indirekten Knotenblöcke 91 bis 95 können z. B. die ersten indirekten Knotenblöcke 91 bis 94 und einen zweiten indirekten Knotenblock 95 enthalten. Die ersten indirekten Knotenblöcke 91 bis 94 enthalten erste Knotenzeiger auf die direkten Knotenblöcke 83 bis 88, und der zweite indirekte Knotenblock 95 enthält zweite Knotenzeiger auf die ersten indirekten Knotenblöcke 93 und 94.
  • Der Inode-Block 80 kann mindestens einen Datenzeiger der ersten Knotenzeiger auf die direkten Knotenblöcke 81 und 82, zweite Knotenzeiger auf die ersten indirekten Knotenblöcke 91 und 92 und einen dritten Knotenzeiger auf den zweiten indirekten Knotenblock 95 enthalten. Eine Datei kann eine maximale Größe von (z. B. 3 Terabyte aufweisen, und diese Datei mit großer Kapazität kann die folgende Indexstruktur aufweisen. Im Inode-Block 80 sind beispielsweise 994 Datenzeiger vorgesehen, und die 994 Datenzeiger können auf 994 Datenblöcke 70 zeigen. Es sind zwei erste Knotenzeiger vorgesehen, und jeder der zwei ersten Knotenzeiger kann auf zwei direkte Knotenblöcke 81 und 82 verweisen. Es sind zwei zweite Knotenzeiger vorgesehen, und die beiden zweiten Knotenzeiger können auf zwei erste indirekte Knotenblöcke 91 und 92 zeigen. Ein dritter Knotenzeiger ist vorhanden und kann die zweiten indirekten Knotenblöcke 95 anzeigen.
  • Inode-Seiten können auch Inode-Metadaten nach Dateien enthalten.
  • Wie in 8 gezeigt, kann die Speichervorrichtung 200 in einen ersten Bereich RG1 und einen zweiten Bereich RG2 unterteilt werden. Das Dateisystem 132 unterteilt die Speichervorrichtung 200 während der Formatierung typischerweise in den ersten Bereich RG1 und den zweiten Bereich RG2, ist aber nicht darauf beschränkt. Der erste Bereich RG1 ist ein Bereich, der dazu bestimmt ist, verschiedene Arten von Information(en) auf Systemebene zu speichern, und kann (z. B. (eine) Information(en) über eine Anzahl aktuell zugewiesener Dateien, eine Anzahl gültiger Seiten und zugehörige Speicherorte enthalten. Der zweite Bereich RG2 ist ein Bereich, in dem verschiedene Arten von Verzeichnisinformationen für Benutzerdaten und zugehörige Dateiinformation(en) gespeichert werden sollen.
  • Der erste Bereich RG1 kann die Superblöcke 61 und 62, einen Kontrollpunktbereich (CP) 63, eine Segmentinformationstabelle (SIT) 64, eine Knotenadresstabelle (NAT) 65 und einen Segmentzusammenfassungsbereich (SSA) 66 enthalten. Die Superblöcke 61 und 62 können (eine) Standardinformation(en) des Dateisystems 132 speichern, wie z. B. die Größe des Blocks 51, die Anzahl der Blöcke 51, Zustandsmarkierungen (sauber, stabil, aktiv, protokollierend und unbekannt). Wie veranschaulicht, können zwei Superblöcke 61 und 62 vorgesehen werden, und derselbe Inhalt kann in den jeweiligen Superblöcken gespeichert werden. Wenn ein Defekt in einem der beiden Superblöcke auftritt, kann der andere Superblock als Backup verwendet werden.
  • Kontrollpunkte werden im Kontrollpunktbereich 63 gespeichert. Ein Kontrollpunkt entspricht einem logischen Unterbrechungspunkt des Speichersystems 10, und speichert einen Zustand des Systems bis zum Unterbrechungspunkt. Wenn also während des Betriebs des Speichersystems 10 ein Systemfehler oder ein plötzliches Stromabschalten des Systems auftritt, kann das Dateisystem 132 Daten unter Verwendung des/der Kontrollpunkt(e) wiederherstellen. Ein solcher Kontrollpunkt kann (z. B. periodisch, als Reaktion auf einen Benutzerbefehl und/oder beim Herunterfahren des Systems generiert werden, ist aber nicht darauf beschränkt.
  • Wie in 9 dargestellt, umfasst die Knotenadresstabelle 65 mehrere Knotenbezeichner (NODE ID), die den jeweiligen Knoten entsprechen, und mehrere physikalische Adressen, die den mehreren Knotenbezeichnern entsprechen.
  • Beispielsweise kann der Knotenblock, der dem Knotenbezeichner N0 entspricht, einer physikalischen Adresse „a“, der Knotenblock, der dem Knotenbezeichner N1 entspricht, einer physikalischen Adresse „b“ und der Knotenblock, der dem Knotenbezeichner N2 entspricht, einer physikalischen Adresse „c“ entsprechen. Alle Knoten (einschließlich Inode, direkte Knoten und indirekte Knoten) können inhärente Knotenbezeichner aufweisen. Mit anderen Worten, allen Knoten können inhärente Knotenbezeichner aus der Knotenadresstabelle 65 zugewiesen werden. Daher speichert die Knotenadresstabelle 65 den Knotenbezeichner des Inode, den Knotenbezeichner der direkten Knoten und den Knotenbezeichner der indirekten Knoten. Die jeweiligen physikalischen Adressen, die dem jeweiligen Knotenbezeichner entsprechen, können problemlos aktualisiert werden.
  • Die Segmentinformationstabelle 64 enthält eine Anzahl gültiger Seiten für jedes Segment und Bitmaps für die mehreren Seiten. Das Bitmap zeigt für jede Seite z. B. unter Verwendung einer „0“ oder „1“ an, ob diese gültig ist. Die Segmentinformationstabelle 64 kann bei verschiedenen Hausmeisteraufgaben (housekeeping tasks) (z. B. bei Speicherbereinigung (garbage collection)) verwendet werden. Die Verwendung des Bitmap kann unnötige Leseanforderungen bei der Durchführung einer Hausmeisteraufgabe reduzieren und kann auch zur Zuweisung von Blöcken während der adaptiven Datenprotokollierung verwendet werden.
  • Der Segmentzusammenfassungsbereich 66 ist ein Bereich, der (eine) zusammenfassende Information(en) für jedes Segment des zweiten Bereichs RG2 speichert. Im Einzelnen speichert der Segmentzusammenfassungsbereich 66 (eine) Information(en) für jeden Knoten des zweiten Bereichs RG2. Der Segmentzusammenfassungsbereich 66 kann bei Hausmeisteraufgaben verwendet werden.
  • Die Knotenblöcke 80, 81 bis 88 und 91 bis 95 weisen eine Knotenbezeichnerliste oder -adresse auf, um Positionen der Datenblöcke 70 oder niedrigerer Knotenblöcke (z. B. direkte Knotenblöcke) zu bestätigen. Im Gegensatz dazu bietet der Segmentzusammenfassungsbereich 66 Indizes, wobei die Datenblöcke 70 oder die unteren Knotenblöcke 80, 81 bis 88 und 91 bis 95 die Position (oder Positionen) der oberen Knotenblöcke 80, 81 bis 88 und 91 bis 95 bestätigen können. Der Segmentzusammenfassungsbereich 66 umfasst mehrere Segmentzusammenfassungsblöcke, wobei jeder Segmentzusammenfassungsblock (eine) Information(en) über ein Segment aufweist, das sich in dem zweiten Bereich RG2 befindet. Ferner enthält der Segmentzusammenfassungsblock mehrere Einheiten von Zusammenfassungsinformationen, und eine Einheit von Zusammenfassungsinformationen entspricht einem Datenblock oder einem Knotenblock.
  • Der zweite Bereich RG2 enthält ferner die Datensegmente DS0 und DS1 sowie die Knotensegmente NS0 und NS1, die voneinander getrennt sind. Die Daten können in den Datensegmenten DS0 und DS1 gespeichert werden, und die mehreren Knoten können in den Knotensegmenten NS0 und NS1 gespeichert werden. Wenn die Daten und die Knoten in verschiedenen Bereichen getrennt sind, können die Segmente effektiv verwaltet werden, und die Daten können in einem kürzeren Zeitintervall effektiver abgerufen werden.
  • Der zweite Bereich RG2 kann ein Bereich sein, der mit einem Verfahren mit sequentiellem Zugriff geschrieben wird, und der erste Bereich RG1 kann ein Bereich sein, der mit einem Verfahren mit wahlfreiem Zugriff geschrieben wird.
  • Darüber hinaus kann der zweite Bereich RG1 Datenblöcke und der erste Bereich RG1 eine Inode-Liste enthalten.
  • 10 ist ein konzeptionelles Diagramm, das ein mögliches Beispiel für eine Metadatenstruktur veranschaulicht, die durch das Dateisystem von 3 erzeugt werden kann.
  • Unter Bezugnahme auf 10 kann der Metadatensatz 327 verschiedene Datenfelder enthalten, wie z. B. einen Dateinamen 371, ein Erstelldatum 372, ein Datum der letzten Änderung 373, ein Datum des letzten Zugriffs 374, einen Dateityp 375 (z. B. ausführbare Datei, Dokument, Textdatei oder andere), eine Dateigröße 376, einen Container 377, der die Datei speichert, einen Besitzer 378 der Datei und ein Löschdatum 379. Hier wird der Begriff Datum verwendet, um ein Kalenderdatum und/oder eine Kalenderzeit zu bezeichnen.
  • 11A, 11B und 11C sind Blockdiagramme, die einen möglichen Ansatz für den Betrieb des Speichersystems von 1 nach einigen beispielhaften Ausführungsformen veranschaulichen.
  • 11A veranschaulicht ein Beispiel, in dem eine Schreiboperation als Antwort auf eine von der Host-Vorrichtung 100 empfangene Schreibanforderung ausgeführt wird. So kann die Host-Vorrichtung 100 der Speichervorrichtung 200 eine Schreibanforderung REQ, den Benutzerdaten DATA und die vom Dateisystem 132 erzeugten Metadaten 327 zur Verfügung stellen. Die Speichervorrichtung 200 speichert dann die Benutzerdaten in dem zweiten Bereich und die Metadaten 327 in dem ersten Bereich der nichtflüchtigen Speichervorrichtung 200a (511).
  • 11B veranschaulicht ein Beispiel, in dem eine Leseoperation als Antwort auf eine Leseanforderung für Benutzerdaten durchgeführt wird, die von der Host-Vorrichtung 100 empfangen wurden. Auf diese Weise stellt die Host-Vorrichtung 100 der Speichervorrichtung 200 eine Leseanforderung REQ und (eine) Adressinformation(en) INDINF für einen Inode zur Verfügung, um zugehörige Metadaten zu speichern, die den Benutzerdaten zugeordnet sind.
  • Der Speichercontroller 300 lädt die Metadaten 327 in den Pufferspeicher 220 aus dem ersten Bereich der nichtflüchtigen Speichervorrichtung 200a als Antwort auf die Leseanforderung REQ und die Adressinformation(en) INDINF des Inode (513), sucht physikalische Adressen von physikalischen Seiten, in denen Zieldaten, die den Benutzerdaten (oder einem Teil der Benutzerdaten) zugehören, gespeichert sind, wie durch den in den Pufferspeicher 220 geladenen Metadatensatz 327 angegeben, greift auf die physikalischen Adressen zu und stellt der Host-Vorrichtung 100 die den Benutzerdaten zugehörigen Zieldaten zur Verfügung.
  • Auf diese Weise kann die Host-Vorrichtung 100 den E/A-Overhead zwischen der Host-Vorrichtung 100 und der Speichervorrichtung 200 reduzieren, indem sie der Speichervorrichtung 200 die Adressinformation INDINF der Inode zur Verfügung stellt, die den angeforderten Benutzerdaten zugeordnete Metadaten speichert, anstatt der Speichervorrichtung 200 die den Zieldaten zugeordnete(n) logische(n) Adresse(n) zur Verfügung zu stellen.
  • 1 1C veranschaulicht ein Beispiel, wobei die Speichervorrichtung 200 von in 1 die Metadaten aktualisiert. Wenn also der Speichercontroller 300 die in den Pufferspeicher 220 geladene Metadaten 327 aktualisieren möchte, kann der Speichercontroller 300 zunächst die Metadaten im Pufferspeicher 220 aktualisieren und dann die aktualisierten Metadaten MDS' in der nichtflüchtigen Speichervorrichtung 200a periodisch oder anderweitig zurücksetzen (515).
  • Darüber hinaus kann der Speichercontroller 300 den aktualisierten Metadatensatz MDS' an die Host-Vorrichtung 100 übertragen, um die Konsistenz der Metadaten zu erhalten (517). Der Speichercontroller 300 kann zum Beispiel die aktualisierten Metadaten MDS' an die Host-Vorrichtung 100 während der Leerlaufzeit für die Host-Vorrichtung 100 und die Speichervorrichtung 200 übertragen.
  • 12 ist ein Blockdiagramm, das eine mögliche Verbindungsbeziehung zwischen dem Speichercontroller 300 und einer nichtflüchtigen Speichervorrichtung 4000a in der Speichervorrichtung 10 von 1 veranschaulicht.
  • Unter Bezugnahme auf 12 kann die nichtflüchtige Speichervorrichtung 400a unter der Steuerung des Speichercontrollers 300 eine Löschoperation, eine Programmoperation und/oder eine Schreiboperation durchführen. Die nichtflüchtige Speichervorrichtung 400a kann einen Befehl CMD, eine Adresse ADDR und Benutzerdaten DATA über verschiedene E/A-Leitungen vom Speichercontroller 300 empfangen, um diese Operation(en) durchzuführen.
  • Darüber hinaus kann die nichtflüchtige Speichervorrichtung 400a ein Steuersignal CTRL über eine Steuerleitung und ein Leistungssignal PWR über eine Stromleitung vom Speichercontroller 300 empfangen. Zusätzlich kann die nichtflüchtige Speichervorrichtung 400a über die Steuerleitung ein Statussignal RnB dem Speichercontroller 300 zur Verfügung stellen.
  • 13 ist ein Blockdiagramm, das den nichtflüchtigen Speicher 400a von 12 nach einigen beispielhaften Ausführungsformen weiter veranschaulicht.
  • Unter Bezugnahme auf 13 enthält die nichtflüchtige Speichervorrichtung 400a ein Speicherzellenarray 420, einen Adressdekoder 450, eine Seitenpufferschaltung 430, eine Daten-E/A-Schaltung 440, eine Steuerschaltung 460 und einen Spannungsgenerator 470.
  • Das Speicherzellenarray 420 kann über eine Strangauswahlleitung SSL, mehrere Wortleitungen WL und eine Masseauswahlleitung GSL mit dem Adressdekoder 450 gekoppelt werden. Darüber hinaus kann das Speicherzellenarray 420 mit der Seitenpufferschaltung 430 über mehrere Bitleitungen BLs gekoppelt werden.
  • Das Speicherzellenarray 420 kann mehrere mit den mehreren Wortleitungen WLs und den mehreren Bitleitungen BLs gekoppelte Speicherzellen enthalten.
  • In einigen beispielhaften Ausführungsformen kann das Speicherzellenarray 420 ein dreidimensionales Speicherzellenarray sein oder ein solches enthalten, das auf einem Substrat in einer dreidimensionalen Struktur (z. B. einer vertikalen Struktur) ausgebildet ist. In diesem Fall kann das Speicherzellenarray 420 vertikale Zell-Stränge enthalten, die vertikal ausgerichtet sind, so dass sich mindestens eine Speicherzelle über einer anderen Speicherzelle befindet.
  • In einigen beispielhaften Ausführungsformen kann das Speicherzellenarray 420 ein zweidimensionales Speicherzellenarray sein oder ein solches enthalten, das auf einem Substrat in einer zweidimensionalen Struktur (oder einer horizontalen Struktur) ausgebildet ist.
  • 14 ist ein Blockdiagramm, das das Speicherzellenarray 420 der nichtflüchtigen Speichervorrichtung 400a von 13 weiter veranschaulicht.
  • Unter Bezugnahme auf 14 kann das Speicherzellenarray 420 mehrere Speicherblöcke BLK1 bis BLKz enthalten. Die Speicherblöcke BLK1 bis BLKz erstrecken sich entlang der ersten bis dritten Richtung D1, D2 und D3. In einigen beispielhaften Ausführungsformen werden die Speicherblöcke BLK1 bis BLKz durch den Adressdekoder 450 von 6 ausgewählt. Der Adressdekoder 450 kann zum Beispiel einen Speicherblock BLK auswählen, der einer Blockadresse unter den Speicherblöcken BLK1 bis BLKz entspricht.
  • 15 ist ein Schaltungsdiagramm, das ferner einen der Speicherblöcke BLKi von 14 veranschaulicht.
  • Der Speicherblock BLKi aus 15 kann auf einem Substrat SUB in einer dreidimensionalen Struktur (oder einer vertikalen Struktur) gebildet werden. Zum Beispiel können mehrere Speicherzellenstränge, die im Speicherblock BLKi enthalten sind, in einer Richtung PD senkrecht zum Substrat SUB gebildet werden.
  • Unter Bezugnahme auf 15 kann der Speicherblock BLKi die Speicherzellenstränge NS11 bis NS33 enthalten, die zwischen den Bitleitungen BL1, BL2 und BL3 und einer gemeinsamen Source-Leitung CSL gekoppelt sind. Jede der Speicherzellenstränge NS11 bis NS33 kann einen Strangauswahltransistor SST, mehrere Speicherzellen MC1 bis MC8 und einen Masseauswahltransistor GST enthalten. In 15 ist jede der Speicherzellenstränge NS11 bis NS33 so dargestellt, dass sie acht Speicherzellen MC1 bis MC8 enthält. Das erfinderische Konzept ist jedoch nicht darauf beschränkt. In einigen beispielhaften Ausführungsformen kann jede der Speicherzellenstränge NS11 bis NS33 eine beliebige Anzahl von Speicherzellen enthalten.
  • Der Strangauswahltransistor SST kann mit den entsprechenden Strangauswahlleitungen SSL1 bis SSL3 verbunden werden. Die mehreren Speicherzellen MC1 bis MC8 können jeweils mit den entsprechenden Wortleitungen WL1 bis WL8 verbunden werden. Der Masseauswahltransistor GST kann mit den entsprechenden Masseauswahlleitungen GSL1 bis GSL3 verbunden werden. Der Strangauswahltransistor SST kann mit den entsprechenden Bitleitungen BL1, BL2 und BL3 verbunden werden, und der Masseauswahltransistor GST kann mit der gemeinsamen Source-Leitung CSL verbunden werden.
  • Wortleitungen (z. B. WL1), die gleiche Höhe aufweisen, können gemeinsam verbunden werden, und die Masseauswahlleitungen GSL1 bis GSL3 und die Strangauswahlleitungen SSL1 bis SSL3 können getrennt werden. In 15 ist der Speicherblock BLKi, als an acht Wortleitungen WL1 bis WL8 und drei Bitleitungen BL1 bis BL3 gekoppelt, dargestellt. Das erfinderische Konzept ist jedoch nicht darauf beschränkt. In einigen beispielhaften Ausführungsformen kann das Speicherzellenarray 420 an eine beliebige Anzahl von Wortleitungen und Bitleitungen gekoppelt werden.
  • 16 veranschaulicht ferner in einem Beispiel eine Struktur eines Zellstrangs CS im Speicherblock von 15.
  • Unter Bezugnahme auf 15 und 16 ist eine Säule PL auf dem Substrat SUB vorgesehen, so dass sich die Säule PL in einer Richtung senkrecht zum Substrat SUB erstreckt, um mit dem Substrat SUB in Kontakt zu kommen/sein. Jede der in 16 dargestellten Masseauswahlleitungen GSL, der Wortleitungen WL1 bis WL8 und der Strangauswahlleitungen SSL kann aus einem leitfähigen Material, z. B. aus einem metallischen Material, parallel zum Substrat SUB gebildet sein. Die Säule PL kann mit dem Substrat SUB durch die leitenden Materialien in Kontakt stehen, die die Strangauswahlleitungen SSL, die Wortleitungen WL1 bis WL8 und die Masseauswahlleitung GSL bilden.
  • Eine Querschnittsansicht entlang einer Linie A-A' ist ebenfalls in 16 dargestellt. In einigen beispielhaften Ausführungsformen ist eine Schnittansicht einer ersten Speicherzelle MC1 dargestellt, die einer ersten Wortzeile WL1 entspricht. Die Säule PL kann einen zylindrischen Körper BD enthalten. Im Inneren des Körpers BD kann ein Luftspalt AG definiert sein.
  • Der Körper BD kann P-Typ-Silizium enthalten und kann ein Bereich sein, in dem ein Kanal gebildet wird. Die Säule PL kann ferner eine zylindrische Tunnelisolierschicht TI, die den Körper BD umgibt, und eine zylindrische Ladungsfallenschicht CT, die die Tunnelisolierschicht TI umgibt, enthalten. Eine blockierende Isolierschicht BI kann zwischen der ersten Wortleitung WL und der Säule PL vorgesehen werden. Der Körper BD, die Tunnelisolierschicht TI, die Ladungsfallenschicht CT, die blockierende Isolierschicht BI und die erste Wortleitung WL können einen Transistor vom Ladungsfallentyp bilden oder in einem solchen enthalten sein, der in einer Richtung senkrecht zum Substrat SUB oder zu einer oberen Fläche des Substrats SUB gebildet wird. Ein Strangauswahltransistor SST, ein Masseauswahltransistor GST und andere Speicherzellen können die gleiche Struktur wie die erste Speicherzelle MC1 aufweisen.
  • Zurück zu 13 kann die Steuerschaltung 460 ein Befehlssignal CMD und die Adresse ADDR vom Speichercontroller 300 empfangen und als Reaktion auf das Befehlssignal CMD und das Adresssignal ADDR eine Löschschleife, eine Programmschleife und/oder eine Leseoperation des nichtflüchtigen Speichers 411 steuern. Die Programmschleife kann eine Programmoperation und eine Programmverifikationsoperation enthalten. Die Löschschleife kann eine Löschoperation und eine Löschverifizierungsoperation enthalten.
  • Der Steuerschaltung 460 kann beispielsweise als Reaktion auf das Befehlssignal CMD Steuersignale CTLs erzeugen, die zur Steuerung des Spannungsgenerators 470 verwendet werden, und als Reaktion auf das Adresssignal ADDR eine Zeilenadresse R_ADDR und eine Spaltenadresse C_ADDR erzeugen. Die Steuerschaltung 460 kann die Zeilenadresse R_ADDR dem Adressdekoder 450 und die Spaltenadresse C ADDR der Daten-E/A-Schaltung 440 zur Verfügung stellen.
  • Der Adressdekoder 450 kann über die Strangauswahlleitung SSL, die mehreren Wortleitungen WLs und die Masseauswahlleitung GSL mit dem Speicherzellenarray 420 gekoppelt werden. Während der Programmoperation oder der Leseoperation kann der Adressdekoder 450 auf der Grundlage der Zeilenadresse R_ADDR eine der mehreren Wortleitungen WLs als erste Wortleitung (z. B. eine ausgewählte Wortleitung) bestimmen und den Rest der mehreren Wortleitungen WLs mit Ausnahme der ersten Wortleitung als nicht ausgewählte Wortleitungen bestimmen.
  • Der Spannungsgenerator 470 kann als Reaktion auf die Steuersignale CTLs Wortleitungsspannungen VWLs erzeugen, die für den Betrieb der nichtflüchtigen Speichervorrichtung 411 erforderlich sind. Der Spannungsgenerator 470 kann eine Leistung DWR vom Speichercontroller 300 erhalten. Die Wortleitungsspannungen VWLs können über den Adressdekoder 450 an die mehreren Wortleitungen WLs angelegt werden.
  • Der Spannungsgenerator 470 kann zum Beispiel während der Löschoperation eine Löschspannung an eine Wanne des Speicherblocks anlegen und kann eine Massespannung an ganze Wortleitungen des Speicherblocks anlegen. Während der Löschverifizierungsoperation kann der Spannungsgenerator 470 eine Löschverifizierungsspannung an die gesamten Wortleitungen des Speicherblocks anlegen oder der Reihe nach die Löschverifizierungsspannung auf einer Wortleitungsbasis an die Wortleitungen anlegen.
  • Der Spannungsgenerator 470 kann beispielsweise während der Programmoperation eine Programmspannung an die erste Wortleitung und eine Programmdurchlassspannung an die nicht ausgewählten Wortleitungen anlegen. Darüber hinaus kann der Spannungsgenerator 470 während der Programmverifizierungsoperation eine Programmverifizierungsspannung an die erste Wortleitung und eine Verifizierungsdurchlassspannung an die nicht ausgewählten Wortleitungen anlegen.
  • Darüber hinaus kann der Spannungsgenerator 470 während der Leseoperation eine Lesespannung an die erste Wortleitung und eine Lesedurchlasspannung an die nicht ausgewählten Wortleitungen anlegen.
  • Der Seitenpufferschaltung 430 kann mit dem Speicherzellenarray 420 über die mehreren Bitleitungen BLs gekoppelt werden. Die Seitenpufferschaltung 430 kann mehrere Seitenpuffer enthalten. In einigen beispielhaften Ausführungsformen kann ein Seitenpuffer mit einer Bitleitung verbunden sein. In einigen beispielhaften Ausführungsformen kann ein Seitenpuffer mit zwei oder mehr Bitleitungen verbunden sein.
  • Die Seitenpufferschaltung 430 kann vorübergehend Daten speichern, die auf einer ausgewählten Seite zu programmieren sind, oder Daten, die von der ausgewählten Seite ausgelesen werden.
  • Die Daten-E/A-Schaltung 440 kann über Datenleitungen DLs mit der Seitenpufferschaltung 430 gekoppelt werden. Während der Programmoperation kann die Daten-E/A-Schaltung 440 auf der Grundlage der von der Steuerschaltung 460 empfangenen Spaltenadresse C_ADDR die Daten DATA vom Speichercontroller 300 empfangen und die Daten DATA der Seitenpufferschaltung 430 zur Verfügung stellen.
  • Während der Leseoperation kann die Daten-E/A-Schaltung 440 auf der Grundlage der von der Steuerschaltung 460 empfangenen Spaltenadresse C_ADDR die Daten DATA, die in der Seitenpufferschaltung 430 gespeichert sind, dem Speichercontroller 300 zur Verfügung stellen.
  • Darüber hinaus lesen die Seitenpufferschaltung 430 und die Daten-E/A-Schaltung 440 Daten aus einem ersten Bereich des Speicherzellenarrays 420 und schreiben die gelesenen Daten in einen zweiten Bereich des Speicherzellenarrays 420. Beispielsweise können die Seitenpufferschaltung 430 und die Daten-E/A-Schaltung 440 eine Rückkopieroperation durchführen. Die Steuerschaltung 460 kann die Seitenpufferschaltung 430 und die Daten-E/A-Schaltung 440 steuern.
  • Der Steuerschaltung 460 kann einen Statussignalgenerator 465 enthalten, und der Statussignalgenerator 465 kann das Statussignal RnB erzeugen, das anzeigt, ob die Programmoperation, die Löschoperation und die Leseoperation jeweils abgeschlossen und/oder im Gange sind.
  • 17 veranschaulicht konzeptionell nach einigen beispielhaften Ausführungsformen eine Abfolge von aufeinanderfolgenden Leseoperationen, die als Reaktion auf die Anfrage(n) im Speichersystem 10 von 1 durchgeführt werden.
  • Bezug nehmend auf 17, wenn die logischen Adressen, die die Zieldaten identifizieren, nicht aufeinanderfolgend sind, kann die Host-Vorrichtung 100 eine Leseanforderung und die Adressinformation(en) logische Blockadresse (LBA = Logical Block Address = Logische Blockadresse) des Inode (INODE) an die Speichervorrichtung 200 (611) übertragen. Die Speichervorrichtung 200 lädt als Antwort auf die Leseanforderung und die LBA des INODE die Metadaten 327 (MAP LOAD, 621) und liest dann die Zieldaten aus einer Sequenz nicht aufeinanderfolgender physikalischer Seiten (READ DATA), in denen die Zieldaten aufeinanderfolgend gespeichert sind, indem sie auf die Metadaten 327 (622, 623, 624 und 625) Bezug nimmt.
  • 18 veranschaulicht ein Beispiel, in dem der Speichercontroller 300 der Speichervorrichtung 10 aus 1 die gespeicherten Metadaten aktualisiert.
  • Unter Bezugnahme auf 18 speichert eine erste Abbildungstabelle MTa (eine) aktuelle Abbildungsinformation(en) zwischen den aufeinanderfolgenden logischen Seiten LPN0, LPN1, LPN2 und LPN3 und den ersten physikalischen Seiten PPN0, PPN2, PPN4 und PPN6 mit nicht aufeinanderfolgenden physikalischen Adressen. Hier wird derzeit davon ausgegangen, dass die Zieldaten in den nicht aufeinanderfolgenden physikalischen Seiten PPN0, PPN2, PPN4 und PPN6 gespeichert sind. In diesem Fall kann der Speichercontroller 300 die erste Abbildungstabelle MTa aktualisieren, um eine zweite Abbildungstabelle MTb zu erstellen, die aktualisierte(n) Abbildungsinformation(en) zwischen den aufeinanderfolgenden logischen Seiten LPN0, LPN1, LPN2 und LPN3 und den zweiten physikalischen Seiten PPN40, PPN41, PPN42 und PPN43 mit aufeinanderfolgenden physikalischen Adressen speichert. Dabei können die erste Abbildungstabelle MTa und die zweite Abbildungstabelle MTb unterschiedliche Versionen (z. B. eine aktuelle oder alte Version und eine aktualisierte oder neue Version) einer Abbildungstabelle sein, die Teil eines größeren Metadatensatzes sein kann, der physikalische Adressen und logische Adressen entsprechend den physikalischen Adressen im nichtflüchtigen Speicher 400 abbildet.
  • So kann der Speichercontroller 300 die den Zieldaten zugeordneten Metadaten aktualisieren, so dass die Zieldaten in den zweiten physikalischen Seiten PPN40, PPN41, PPN42 und PPN43 mit aufeinanderfolgenden physikalischen Adressen gespeichert werden und die zweiten physikalischen Seiten PPN40, PPN41, PPN42 und PPN43 den aufeinanderfolgenden logischen Seiten LPN0, LPN1, LPN2 und LPN3 entsprechen.
  • 19 veranschaulicht konzeptionell einen Ansatz, wobei der Speichercontroller 300 von 4 ein Datenattribut durch Bezugnahme auf die Metadatenstruktur von 10 bestimmen kann.
  • Der Speichercontroller 300 kann beispielsweise durch Bezugnahme auf das Zugriffsdatum 374 der entsprechenden Metadaten 327 bestimmen, ob es sich bei den angeforderten Benutzerdaten (d. h. den Zieldaten) um heiße oder kalte Daten handelt. Das heißt, der Speichercontroller 300 kann bestimmen, ob es sich bei den Zieldaten um heiße oder kalte Daten handelt, indem er (z. B.) das Zugriffsdatum 374 mit einem Referenzdatum vergleicht.
  • 20 veranschaulicht konzeptionell die Verwendung eines Bitmaps in Bezug auf die Metadaten 327, einer Softwareschicht des Speichercontrollers 300 (710) und einer physikalischen Schicht des nichtflüchtigen Speichers 400 (720).
  • Unter Bezugnahme auf 20 können die Benutzerdaten mehrere Sub-Daten SDT0, SDT1, SDT2 und SDT3 enthalten, ein erster Block BLK enthält die physikalischen Seiten PPN0-PPN4, ein zweiter Block BLK2 enthält die physikalischen Seiten PPN5-PPN9, und die logischen Seiten LPN0-LPN3 entsprechen den jeweiligen physikalischen Seiten PPN0, PPN2, PPN4 und PPN6 gemäß der/den in der Abbildungstabelle MTa gespeicherten Information(en). Die Sub-Daten SDT0, SDT1 und SDT2 sind in den jeweiligen physikalischen Seiten PPN0, PPN2 und PPN4 im ersten Block BLK1 und die Sub-Daten SDT3 sind in der physikalischen Seite PPN6 im zweiten Block BLK2 gespeichert.
  • Das Bitmap BTM kann als Teil der Metadaten 327 enthalten sein und kann angeben, ob jede der logischen Seiten LPN0~LPN3, die den jeweiligen physikalischen Seiten PPN0, PPN2, PPN4 und PPN6 entsprechen, die die jeweiligen Sub-Daten SDT0, SDT1, SDT2 und SDT3 speichern, als logische Ebene gültig ist. Das Bitmap BTM kann beispielsweise ein logisches „Hoch“ verwenden, um anzuzeigen, dass eine entsprechende Seite gültig ist, und ein logisches „niedrig“, um anzuzeigen, dass eine entsprechende Seite ungültig ist. Der Speichercontroller 300 kann die Sub-Daten SDT3 löschen, indem er unabhängig von der Anforderung von der Host-Vorrichtung 100 auf das Bitmap BTM verweist. Der Speichercontroller 300 kann zumindest einen Teil der Benutzerdaten löschen, indem er unabhängig von der Anforderung der Host-Vorrichtung 100 auf das Bitmap-BTM verweist.
  • Darüber hinaus kann der Speichercontroller 300 unabhängig von einer Anforderung von der Host-Vorrichtung 100 einen mit der Speicherung der Benutzerdaten zugeordneten Kanal aus den mehreren Kanälen von einem ersten Kanal auf einen zweiten Kanal ändern.
  • Der Speichercontroller 300 kann die Metadaten 327 von einer ersten nichtflüchtigen Speichervorrichtung zu einer zweiten nichtflüchtigen Speichervorrichtung aus den mehreren nichtflüchtigen Speichervorrichtungen auf der Grundlage eines Programm-/Löschzyklus eines Speicherblocks, der die Metadaten speichert, unter Verwendung des FTL 305 verschieben.
  • 21 ist ein Ablaufdiagramm, das ein Verfahren zum Betreiben einer Speichervorrichtung nach einigen beispielhaften Ausführungsformen zusammenfasst.
  • Unter Bezugnahme auf 1 bis 21 ist ein Verfahren zum Betreiben der Speichervorrichtung 200 vorgesehen, das den nichtflüchtigen Speicher 400 (oder nichtflüchtigen Speicher NVM) - der zur Speicherung von Benutzerdaten (DATA) und mit der Verwaltung der Benutzerdaten zugeordneten Metadaten 327 verwendet wird - sowie den Speichercontroller 300, der den NVM steuert, enthält.
  • Gemäß dem Verfahren speichert der Speichercontroller 300 die von der Host-Vorrichtung 100 vorgesehenen Metadaten 327 im ersten Bereich des NVM (S110) und speichert die von der Host-Vorrichtung 100 zur Verfügung gestellten Benutzerdaten im zweiten Bereich des NVM (S120).
  • Der Speichercontroller 300 empfängt von der Host-Vorrichtung 100 (S130) (eine) Adressinformation(en) (INDINF) für den Inode, der mit den identifizierten Zieldaten zugeordnete Metadaten speichert.
  • Der Speichercontroller 300 lädt die zugehörigen Metadaten in den Pufferspeicher 220 vom NVM als Antwort auf die Adressinformation(en) INDINF für den Inode (S140).
  • Der Speichercontroller 300 greift unter Bezugnahme auf die Metadaten (S150) auf die in dem zweiten Bereich gespeicherten Zieldaten zu und überträgt die Zieldaten an die Host-Vorrichtung 100.
  • Nach beispielhaften Ausführungsformen kann die Host-Vorrichtung 100 Metadaten (z. B. einen Metadatensatz) speichern, die der Verwaltung von Benutzerdaten zugeordnet sind, im nichtflüchtigen Speicher 400 in der Speichervorrichtung 200, und der Speichercontroller 300 kann mit den im nichtflüchtigen Speicher 400 gespeicherten Metadaten (z. B. (einer) Standortinformation(en)) auf den nichtflüchtigen Speicher 400 zugreifen. Daher kann die Speichervorrichtung 200 die Leistung verbessern, indem sie den E/A-Overhead zwischen der Host-Vorrichtung 100 und der Speichervorrichtung 200 reduziert.
  • 22 ist ein Blockdiagramm, das ein System veranschaulicht, das eine Speichervorrichtung nach einigen beispielhaften Ausführungsformen enthält.
  • Unter Bezugnahme auf 22 enthält ein System 1000 eine Host-Vorrichtung 2000 und eine Speichervorrichtung 3000. Die Host-Vorrichtung 2000 kann zum Beispiel eine eingebettete Multimediakarte (eMMC), ein Festplattenlaufwerk (SSD) oder ähnliches sein.
  • Die Host-Vorrichtung 2000 kann eingerichtet werden, um Datenverarbeitungsoperationen, wie z. B. Datenleseoperationen und Datenschreiboperationen, zu steuern.
  • Die Host-Vorrichtung 2000 kann einen Prozessor (CPU) 2100, einen Host-Speicher (HMEM) 2200 und eine Host-Controller-Schnittstelle (HCI) 2300 enthalten, die über einen Bus 20 verbunden sind. Der Host-Speicher 2200 kann von einem Dateisystem generierte Metadatensätze speichern. Das Betriebssystem (OS) und/oder die Host-Firmware (FW) 2110 kann vom Prozessor 2100 ausgeführt werden. Der Prozessor 2100 kann das Betriebssystem und die Host-Firmware 2110 ausführen, um diese Operationen durchzuführen.
  • Die Host-Controller-Schnittstelle 2300 kann mit der Speichervorrichtung 3000 verbunden werden. Die Host-Controller-Schnittstelle 2300 ist beispielsweise eingerichtet, um den Befehl CMD an die Speichervorrichtung 3000 auszugeben, die Antwort RES auf den Befehl CMD von der Speichervorrichtung 3000 zu empfangen, Schreibdaten an die Speichervorrichtung 3000 zu übertragen und Lesedaten von der Speichervorrichtung 3000 zu empfangen.
  • Die Speichervorrichtung 3000 kann mehrere nichtflüchtige Speichervorrichtungen (NVM) 3100 und einen Speichercontroller 3200 enthalten.
  • Die nichtflüchtigen Speichervorrichtungen 3100 können optional mit einer externen Hochspannung VPP versorgt werden. Der Speichercontroller 3200 kann mit den nichtflüchtigen Speichervorrichtungen 3100 über mehrere Kanäle CH1 bis CHi verbunden werden. Der Speichercontroller 3200 kann einen oder mehrere Prozessoren CPU 3210, eine ECC-Engine 3220, eine Host-Schnittstelle 3230, einen Pufferspeicher 3240 und einen nichtflüchtige Speicher-Schnittstelle 3250 enthalten, die über einen Bus 30 verbunden sind.
  • Der Prozessor 3210 ist eingerichtet, um den Gesamtbetrieb des Speichercontrollers 3200 zu steuern. Der Prozessor 3210 kann beispielsweise die Firmware 3212 einschließlich einer FTL betreiben und kann andere Firmware enthalten. Die FTL kann verschiedene Funktionen durchführen, z. B. Adresszuordnung, Lesekalibrierung, Fehlerkorrektur und andere Funktionen.
  • Die ECC-Engine 3220 kann die ECC-Kodierung von Schreibdaten und die ECC-Dekodierung von Lesedaten durchführen.
  • Die Host-Schnittstelle 3230 kann eine Schnittstelle mit externen Vorrichtungen wie der Host-Vorrichtung 2000 vorsehen. Die nichtflüchtige Speicherschnittstelle 3250 kann eine Schnittstelle mit den nichtflüchtigen Speichervorrichtungen 3100 bilden. Die Host-Vorrichtung 2000 und die Speichervorrichtung 3000 können über einen Bus 15 verbunden werden.
  • Der Pufferspeicher 3240 kann Metadaten (MDS) speichern.
  • Wie vorstehend beschrieben, kann die Host-Vorrichtung 2000 den Metadatensatz MDS erzeugen, während sie Benutzerdaten in den nichtflüchtigen Speichervorrichtungen 3100 speichert, und kann den Metadatensatz MDS in den nichtflüchtigen Speichervorrichtungen 3100 speichern. Wenn die Host-Vorrichtung 2000 mindestens einen Teil der Benutzerdaten lesen soll, versorgt die Host-Vorrichtung 2000 den Speichercontroller 3200 mit (einer) Adressinformation(en) eines Inode, um zugehörige Metadaten zu speichern, die dem Teil der Benutzerdaten zugeordnet sind. Der Speichercontroller 3200 lädt den Metadatensatz MDS in den Pufferspeicher 3240 auf der Grundlage der Adress-Information einer Inode und greift auf den Teil der Benutzerdaten zu, indem er auf den Metadatensatz MDS im Pufferspeicher 3240 verweist.
  • Der Speichercontroller 3200 kann unter Verwendung (einer) logischen/logischer Information(en) des Metadatensatzes MDS im Pufferspeicher 3240 auf den nichtflüchtigen Speicher zugreifen und so den E/A-Overhead zwischen der Host-Vorrichtung 2000 und der Speichervorrichtung 3000 reduzieren.
  • 23 ist ein Blockdiagramm, das eine mobile Vorrichtung nach einigen beispielhaften Ausführungsformen veranschaulicht.
  • Unter Bezugnahme auf 23 kann eine mobile Vorrichtung 4000 einen Anwendungsprozessor 4100 (einschließlich eines oder mehrerer Anwendungsprozessoren), ein Kommunikationsmodul 4200, ein Anzeige-/Tastmodul 4300, eine Datenspeichervorrichtung 4400 und ein mobiles RAM 4500 enthalten.
  • Der Anwendungsprozessor 4100 steuert den Betrieb der mobilen Vorrichtung 4000. Das Kommunikationsmodul 4200 ist implementiert, um drahtlose oder drahtgebundene Kommunikation mit einer externen Vorrichtung durchzuführen. Das Anzeige-/Tastmodul 4300 ist implementiert, um Daten anzuzeigen, die vom Anwendungsprozessor 4100 verarbeitet werden, und/oder um Daten über ein (nicht gezeigtes) Tastfeld zu empfangen. Die Datenspeichervorrichtung 4400 ist zur Speicherung von Benutzerdaten implementiert.
  • Die Datenspeichervorrichtung 4400 kann eine eingebettete Multimediakarte (eMMC), ein Festkörperlaufwerk (SSD), eine Universal-Flash-Speicher(UFS)-Vorrichtung oder ähnliches sein. Die Datenspeichervorrichtung 4400 kann den Metadatensatz MDS speichern, der der Verwaltung des Benutzerdatensatzes zugeordnet ist, und kann unter Verwendung (einer) logischen/logischer Information(en) des Metadatensatzes MDS auf die Benutzerdaten zugreifen.
  • Das mobile RAM 4500 speichert vorübergehend Daten, die für Verarbeitungsoperationen der mobilen Vorrichtung 4000 verwendet werden. Das mobile RAM 4500 kann z. B. ein synchrones DRAM (SDRAM) mit doppelter Datenrate (DDR), ein SDRAM mit DDR und niedrigem Stromverbrauch (LPDDR), ein SDRAM mit DDR und Grafik (GDDR), ein Rambus-DRAM (RDRAM®) oder ähnliches sein.
  • Wie vorstehend beschrieben, kann die Host-Vorrichtung den Metadatensatz, der der Verwaltung der Benutzerdaten zugeordnet ist, in einem nichtflüchtigen Speicher speichern, und der Speichercontroller 300 kann unter Verwendung der Ortsinformation(en) der Metadaten auf den nichtflüchtigen Speicher zugreifen. Daher kann die Speichervorrichtung die Leistung verbessern, indem sie den E/A-Overhead zwischen der Host-Vorrichtung und der Speichervorrichtung reduziert.
  • Die vorliegende Offenlegung kann auf verschiedene elektronische Vorrichtungen einschließlich einer Speichervorrichtung angewandt werden. Die vorliegende Offenlegung kann zum Beispiel auf Systeme, wie z. B. ein Mobiltelefon, ein Smartphone, einen persönlichen digitalen Assistenten (PDA), einen tragbaren Multimedia-Player (PMP), eine Digitalkamera, einen Camcorder, einen Personal Computer (PC), einen Server-Computer, eine Arbeitsstation, einen Laptop-Computer, eine digitale Fernsehvorrichtung, eine Set-Top-Box, eine tragbare Spielkonsole, ein Navigationssystem usw. angewandt werden.
  • Das Vorstehende dient der Veranschaulichung von beispielhaften Ausführungsformen und ist nicht als Einschränkung derselben zu verstehen. Obwohl einige beispielhaften Ausführungsformen beschrieben worden sind, werden Fachleute rasch verstehen, dass viele Modifikationen in den beispielhaften Ausführungsformen möglich sind, ohne materiell von den neuartigen Lehren und Vorteilen der vorliegenden Offenbarung abzuweichen. Dementsprechend sollen alle diese Modifikationen in den Anwendungsbereich der vorliegenden Offenbarung, wie sie in den Ansprüchen definiert ist, einbezogen werden.

Claims (20)

  1. Speichervorrichtung, umfassend: einen nichtflüchtigen Speicher, der einen ersten Bereich und einen zweiten Bereich enthält; einen Speichercontroller, der eingerichtet ist, um den nichtflüchtigen Speicher zu steuern; und einen Pufferspeicher, der mit dem Speichercontroller verbunden ist, wobei der Speichercontroller eingerichtet ist, um von einer Host-Vorrichtung empfangene Benutzerdaten einschließlich von Zieldaten im zweiten Bereich zu speichern, und der Verwaltung der Benutzerdaten zugeordnete und von einem Dateisystem der Host-Vorrichtung erzeugte Metadaten in dem ersten Bereich zu speichern, und der Speichercontroller ferner eingerichtet ist, um als Reaktion auf eine Adressinformation für einen den Metadaten zugeordneten Indexknoten (Inode) die Metadaten in den Pufferspeicher zu laden und unter Verwendung der in den Pufferspeicher geladenen Metadaten auf die Zieldaten in dem zweiten Bereich zuzugreifen.
  2. Speichervorrichtung nach Anspruch 1, wobei die Metadaten eine Abbildungstabelle enthalten, die eine Abbildungsinformation zwischen physikalischen Adressen im nichtflüchtigen Speicher und logischen Adressen für die von der Host-Vorrichtung bereitgestellten Benutzerdaten speichert.
  3. Speichervorrichtung nach Anspruch 2, wobei der Speichercontroller eingerichtet ist, um: auf mindestens eine physikalische Adresse unter den in der Abbildungstabelle gespeicherten physikalischen Adressen unter Verwendung mindestens einer den Zieldaten zugeordneten logischen Adresse zu verweisen, und unter Verwendung der mindestens einen physikalischen Adresse auf die Zieldaten in dem zweiten Bereich zuzugreifen.
  4. Speichervorrichtung nach Anspruch 1, wobei der zweite Bereich einen Datenblock und der erste Bereich eine Inode-Liste enthält.
  5. Speichervorrichtung nach Anspruch 1, wobei die Zieldaten durch die Host-Vorrichtung unter Verwendung mehrerer, nicht aufeinanderfolgender logischer Adressen identifiziert werden, und der Speichercontroller ferner eingerichtet ist, um als Reaktion auf eine einzelne Anforderung durch die Host-Vorrichtung die Zieldaten aus dem nichtflüchtigen Speicher zu lesen.
  6. Speichervorrichtung nach Anspruch 1, wobei der Speichercontroller ferner eingerichtet ist, um die Metadaten im Pufferspeicher unabhängig von der Host-Vorrichtung zu aktualisieren und die aktualisierten Metadaten in dem nichtflüchtigen Speicher zurückzusetzen.
  7. Speichervorrichtung nach Anspruch 1, wobei der Speichercontroller ferner eingerichtet ist, um ein Attribut der in dem zweiten Bereich gespeicherten Benutzerdaten durch Bezugnahme auf die im Pufferspeicher gespeicherten Metadaten zu bestimmen.
  8. Speichervorrichtung nach Anspruch 7, wobei wenn Zieldaten in ersten physikalischen Seiten gespeichert werden, die nicht aufeinanderfolgende physikalische Adressen in dem nichtflüchtigen Speicher aufweisen, der Speichercontroller ferner eingerichtet ist, um die Metadaten zu aktualisieren, so dass die Zieldaten in zweiten physikalischen Seiten gespeichert werden, die aufeinanderfolgende physikalische Adressen im nichtflüchtigen Speicher aufweisen.
  9. Speichervorrichtung nach Anspruch 1, wobei die Benutzerdaten mehrere Sub-Daten enthalten, die Metadaten eine Bitmap enthalten, die anzeigt, ob jeder der mehreren Sub-Daten gültig ist, und der Speichercontroller ferner eingerichtet ist, um zumindest einen Teil der mehreren Sub-Daten zu löschen, indem er unabhängig von einer Anforderung von der Host-Vorrichtung auf das Bitmap verweist.
  10. Speichervorrichtung nach Anspruch 1, wobei der nichtflüchtige Speicher mehrere nichtflüchtige Speichervorrichtungen enthält, die über mehrere Kanäle mit dem Speichercontroller verbunden sind, wobei jede der mehreren nichtflüchtigen Speichervorrichtungen mehrere Speicherblöcke enthält, wobei mindestens einer der mehreren Speicherblöcke NAND-Stränge enthält und jeder der NAND- Stränge mehrere Speicherzellen enthält, die sequentiell auf einem Substrat gestapelt sind.
  11. Speichersystem, umfassend: eine Host-Vorrichtung, die ein Dateisystem enthält und Benutzerdaten einschließlich Zieldaten, und Metadaten, die der Verwaltung der Benutzerdaten zugeordnet sind und durch das Dateisystem erzeugt werden, bereitstellt; und eine Speichervorrichtung umfassend: einen nichtflüchtigen Speicher, der einen ersten Bereich und einen zweiten Bereich enthält; einen Speichercontroller, der zur Steuerung des Betriebs des nichtflüchtigen Speichers eingerichtet ist; und einen Pufferspeicher, der mit dem Speichercontroller verbunden ist, wobei der Speichercontroller eingerichtet ist, um die Benutzerdaten in dem zweiten Bereich zu speichern und die Metadaten in dem ersten Bereich zu speichern, und der Speichercontroller ferner eingerichtet ist, um als Reaktion auf eine Adressinformation für einen den Metadaten zugeordneten Indexknoten (Inode) die Metadaten in den Pufferspeicher zu laden und mit den in den Pufferspeicher geladenen Metadaten auf die Zieldaten in dem zweiten Bereich zuzugreifen.
  12. Speichersystem nach Anspruch 11, wobei die Metadaten eine Abbildungstabelle enthalten, die eine Abbildungsinformation zwischen physikalischen Adressen im nichtflüchtigen Speicher und logischen Adressen für die von der Host-Vorrichtung bereitgestellten Benutzerdaten speichert.
  13. Speichersystem nach Anspruch 12, wobei der Speichercontroller eingerichtet ist, um: auf mindestens eine physikalische Adresse unter den in der Abbildungstabelle gespeicherten physikalischen Adressen unter Verwendung mindestens einer den Zieldaten zugeordneten logischen Adresse zu verweisen, und auf die Zieldaten in dem zweiten Bereich unter Verwendung der mindestens einen physikalische Adresse zuzugreifen.
  14. Speichersystem nach Anspruch 11, wobei die Zieldaten durch die Host-Vorrichtung unter Verwendung mehrerer, nicht aufeinanderfolgender logischer Adressen identifiziert werden, und der Speichercontroller ferner eingerichtet ist, um die Zieldaten aus dem nichtflüchtigen Speicher als Reaktion auf eine einzelne Anforderung durch die Host-Vorrichtung auszulesen.
  15. Speichersystem nach Anspruch 11, wobei der Speichercontroller ferner eingerichtet ist, um die Metadaten im Pufferspeicher unabhängig von der Host-Vorrichtung zu aktualisieren und die aktualisierten Metadaten in den nichtflüchtigen Speicher zu schreiben.
  16. Speichersystem nach Anspruch 11, wobei der Speichercontroller ferner eingerichtet ist, um ein Attribut der in dem zweiten Bereich gespeicherten Benutzerdaten durch Bezugnahme auf die im Pufferspeicher gespeicherten Metadaten zu bestimmen.
  17. Speichersystem nach Anspruch 16, wobei wenn die Zieldaten in den ersten physikalischen Seiten, die in dem nichtflüchtigen Speicher nicht aufeinanderfolgende physikalische Adressen aufweisen, gespeichert sind, der Speichercontroller ferner eingerichtet ist, um die Metadaten zu aktualisieren, so dass die Zieldaten in zweiten physikalischen Seiten, die aufeinanderfolgende physikalische Adressen im nichtflüchtigen Speicher aufweisen, gespeichert werden.
  18. Speichersystem nach Anspruch 17, wobei der Speichercontroller ferner eingerichtet ist, um während einer Leerlaufzeit des Speichercontrollers und der Host-Vorrichtung aktualisierte Metadaten an die Host-Vorrichtung zu übertragen.
  19. Speichersystem nach Anspruch 11, wobei der Speichercontroller eingerichtet ist, um einen Kanal, der der Speicherung der Benutzerdaten zugeordnet ist, unabhängig von einer Anforderung von der Host-Vorrichtung von einem ersten Kanal auf einen zweiten Kanal aus den mehreren Kanälen zu wechseln.
  20. Verfahren zum Betreiben einer Speichervorrichtung, die einen nichtflüchtigen Speicher, der einen ersten Bereich und einen zweiten Bereich enthält, einen Speichercontroller, der den Betrieb des nichtflüchtigen Speichers steuert, und einen Pufferspeicher, der mit dem Speichercontroller verbunden ist, enthält, wobei das Verfahren umfasst: Speichern von Benutzerdaten einschließlich Zieldaten, die von einer Host-Vorrichtung empfangen werden, in dem zweiten Bereich; Speichern von Metadaten, die der Verwaltung der Benutzerdaten zugeordnet sind, und von einem Dateisystem der Host-Vorrichtung erzeugt werden, in dem ersten Bereich; Laden der Metadaten aus dem ersten Bereich in den Pufferspeicher als Reaktion auf eine Adressinformation für einen den Metadaten zugeordneten Indexknoten (Inode); und Zugreifen auf die Zieldaten in dem zweiten Bereich unter Verwendung der in den Pufferspeicher geladenen Metadaten.
DE102020115969.2A 2019-12-02 2020-06-17 Speichervorrichtungen, speichersysteme und verfahren zum betreiben von speichervorrichtungen Pending DE102020115969A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR10-2019-0158001 2019-12-02
KR1020190158001A KR20210068699A (ko) 2019-12-02 2019-12-02 스토리지 장치, 스토리지 시스템 및 스토리지 장치의 동작 방법

Publications (1)

Publication Number Publication Date
DE102020115969A1 true DE102020115969A1 (de) 2021-06-02

Family

ID=75896555

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102020115969.2A Pending DE102020115969A1 (de) 2019-12-02 2020-06-17 Speichervorrichtungen, speichersysteme und verfahren zum betreiben von speichervorrichtungen

Country Status (4)

Country Link
US (2) US11461041B2 (de)
KR (1) KR20210068699A (de)
CN (1) CN112988627A (de)
DE (1) DE102020115969A1 (de)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102365312B1 (ko) * 2021-06-17 2022-02-23 삼성전자주식회사 스토리지 컨트롤러, 연산 스토리지 장치, 및 연산 스토리지 장치의 동작 방법
US20230024420A1 (en) * 2021-07-16 2023-01-26 Samsung Electronics Co., Ltd. Methods and devices for file read latency reduction
CN116955219B (zh) * 2023-09-13 2024-01-19 新华三信息技术有限公司 一种数据镜像方法、装置、主机及存储介质

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6044205A (en) 1996-02-29 2000-03-28 Intermind Corporation Communications system for transferring information between memories according to processes transferred with the information
US7596639B2 (en) * 2004-09-01 2009-09-29 Lsi Corporation Skip mask table automated context generation
KR101447188B1 (ko) 2007-07-31 2014-10-08 삼성전자주식회사 플래시 메모리에 최적화된 입출력 제어 방법 및 장치
KR101430762B1 (ko) 2008-02-29 2014-08-18 한양대학교 산학협력단 비휘발성 랜덤 액세스 메모리를 이용한 스토리지 시스템,파일 시스템 및 데이터 관리 방법 그리고 기억장치
JP4498456B1 (ja) * 2009-02-19 2010-07-07 株式会社東芝 データ記憶制御装置及びデータ記憶制御方法
US8516219B2 (en) * 2009-07-24 2013-08-20 Apple Inc. Index cache tree
US8290996B2 (en) 2010-07-30 2012-10-16 International Business Machines Corporation Data sharing for file clones using reverse ditto references
KR101795629B1 (ko) * 2011-02-15 2017-11-13 삼성전자주식회사 호스트에서 파일 시스템 관리 방법 및 상기 방법을 수행할 수 있는 장치들
US10019451B2 (en) 2011-09-29 2018-07-10 Quantum Corporation Path lookup in a hierarchical file system
KR101962786B1 (ko) * 2012-03-23 2019-03-27 삼성전자주식회사 불휘발성 메모리 장치, 메모리 시스템 및 그것의 프로그램 방법
KR101977575B1 (ko) 2012-09-28 2019-05-13 삼성전자 주식회사 디렉토리 엔트리 조회 장치, 그 방법 및 디렉토리 엔트리 조회 프로그램이 기록된 기록 매체
US9652376B2 (en) * 2013-01-28 2017-05-16 Radian Memory Systems, Inc. Cooperative flash memory control
US9575884B2 (en) * 2013-05-13 2017-02-21 Qualcomm Incorporated System and method for high performance and low cost flash translation layer
CN103500076A (zh) * 2013-10-13 2014-01-08 张维加 一种基于多通道slc nand与dram缓存的新usb协议计算机加速设备
KR102254392B1 (ko) * 2014-05-12 2021-05-25 삼성전자주식회사 메모리 컨트롤러의 동작 방법 및 불휘발성 메모리 장치 및 메모리 컨트롤러를 포함하는 불휘발성 메모리 시스템
KR101674176B1 (ko) 2014-07-24 2016-11-08 성균관대학교산학협력단 파일 단위 순서 모드 저널링 기법을 이용한 fsync 시스템 호출 처리 장치 및 방법
US10372684B2 (en) 2015-01-09 2019-08-06 Quantum Corporation Metadata peering with improved inodes
KR102506135B1 (ko) * 2015-03-16 2023-03-07 삼성전자주식회사 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템
US10552058B1 (en) * 2015-07-17 2020-02-04 Radian Memory Systems, Inc. Techniques for delegating data processing to a cooperative memory controller
JP6604115B2 (ja) 2015-09-25 2019-11-13 富士通株式会社 ストレージ装置およびストレージ制御プログラム
US10261705B2 (en) * 2016-12-15 2019-04-16 Alibaba Group Holding Limited Efficient data consistency verification for flash storage
WO2019083389A1 (en) * 2017-10-26 2019-05-02 EMC IP Holding Company LLC MANAGING A FILE SYSTEM IN MULTIPLE LOGIC UNIT NUMBERS (LUN)
KR102421149B1 (ko) * 2018-01-02 2022-07-14 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
CN107844431B (zh) * 2017-11-03 2022-01-25 合肥兆芯电子有限公司 映射表更新方法、存储器控制电路单元与存储器存储装置
KR102567140B1 (ko) * 2017-11-24 2023-08-16 삼성전자주식회사 데이터 관리 방법 및 이를 수행하는 저장 장치
US20190034427A1 (en) 2017-12-28 2019-01-31 Intel Corporation Data management system employing a hash-based and tree-based key-value data structure
WO2019222381A1 (en) * 2018-05-18 2019-11-21 Micron Technology, Inc. Host accelerated operations in managed nand devices
US10783120B1 (en) * 2018-06-28 2020-09-22 Amazon Technologies, Inc. Service-based storage synchronization
TWI693516B (zh) * 2018-11-13 2020-05-11 群聯電子股份有限公司 映射表更新方法、記憶體控制電路單元與記憶體儲存裝置
US11226907B2 (en) * 2018-12-19 2022-01-18 Micron Technology, Inc. Host-resident translation layer validity check techniques
US11301369B2 (en) * 2019-01-24 2022-04-12 Western Digital Technologies, Inc. Logical to physical mapping management using low-latency non-volatile memory
JP2020154603A (ja) * 2019-03-19 2020-09-24 キオクシア株式会社 メモリシステム
US11010079B2 (en) * 2019-04-09 2021-05-18 Intel Corporation Concept for storing file system metadata within solid-stage storage devices
US11175856B2 (en) * 2019-11-08 2021-11-16 Micron Technology, Inc. Background operation selection based on host idle time

Also Published As

Publication number Publication date
KR20210068699A (ko) 2021-06-10
US20210165604A1 (en) 2021-06-03
US11875055B2 (en) 2024-01-16
CN112988627A (zh) 2021-06-18
US20220413754A1 (en) 2022-12-29
US11461041B2 (en) 2022-10-04

Similar Documents

Publication Publication Date Title
DE102017113439B4 (de) Abbildungstabellen für Speichervorrichtungen
DE102017128952B4 (de) Datenspeichervorrichtung, die konfiguriert ist, um eine nicht-blockierende Steuerungs-Aktualisierungsoperation auszuführen
DE102017104150B4 (de) Abnutzungsausgleich in Speichervorrichtungen
DE112014000254B4 (de) Mehrstufiges Zwischenspeichern und Migrieren in unterschiedlichen Granularitäten
DE112010004969B4 (de) Hybrides Speicherteilsystem und Verfahren zum Verwalten eines solchen
DE102017104125A1 (de) Zonen von Übersetzungstabellen von logischen in physische Datenadressen mit parallelisiertem Log-Listenreplay
DE102018106154A1 (de) Faltungsoperationen in datenspeichersystemen mit einzeladressenaktualisierungen
DE102020107659A1 (de) Zonenbildung für gezonte namensräume
DE112015004536T5 (de) Hardware-Automatisierung für Speicherverwaltung
DE112018004256T5 (de) Redundanzcodierstreifen basierend auf internen adressen von speichervorrichtungen
DE202010017667U1 (de) Datenspeichervorrichtung mit Flash-Speicherchips
DE102020112512A1 (de) Datenspeichergerät und Betriebsverfahren dafür
DE112020000139T5 (de) Nicht sequentiell in zonen aufgeteilte namensräume
DE102020115969A1 (de) Speichervorrichtungen, speichersysteme und verfahren zum betreiben von speichervorrichtungen
DE112010003577T5 (de) Datenverwaltung in Halbleiterspeicher-Einheiten und mehrstufigen Speichersystemen
DE102013016609A1 (de) Vorrichtung und Verfahren für ein Storage Class Memory mit niedrigem Energieverbrauch, niedriger Latenz und hoher Kapazität
DE112014003349T5 (de) Verfahren und Gerät zum Ausführen atomarer Schreibvorgänge
DE102013215535A1 (de) Sicherung oder wiederherstellung von daten mit hilfe eines hauptspeichers und nichtflüchtiger speichermedien
DE112020005787T5 (de) Verbesserte dateisystem-unterstützung für zonen-namespace-speicher
DE112012004571T5 (de) Unterstützen von unvollständigen Datensegmenten in Flash-Cache-Speichern
DE102018123670A1 (de) Speicherungssystem, Rechensystem und Verfahren dafür
DE112015003536T5 (de) Host-Verwalter nicht flüchtiger Speicher
DE112019000161T5 (de) Speicher-cache-verwaltung
DE112017005782T5 (de) Warteschlange für Speichervorgänge
DE112016002305B4 (de) Reduktion der Schreibverstärkung in einem Objektspeicher

Legal Events

Date Code Title Description
R012 Request for examination validly filed