DE112018004256T5 - Redundanzcodierstreifen basierend auf internen adressen von speichervorrichtungen - Google Patents

Redundanzcodierstreifen basierend auf internen adressen von speichervorrichtungen Download PDF

Info

Publication number
DE112018004256T5
DE112018004256T5 DE112018004256.1T DE112018004256T DE112018004256T5 DE 112018004256 T5 DE112018004256 T5 DE 112018004256T5 DE 112018004256 T DE112018004256 T DE 112018004256T DE 112018004256 T5 DE112018004256 T5 DE 112018004256T5
Authority
DE
Germany
Prior art keywords
volatile memory
data
redundancy
address
data segment
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
DE112018004256.1T
Other languages
English (en)
Inventor
Brian W. O'Krafka
Vladislav Bolkhovitin
Sanjay Subbarao
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Western Digital Technologies Inc
Original Assignee
Western Digital Technologies Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Western Digital Technologies Inc filed Critical Western Digital Technologies Inc
Publication of DE112018004256T5 publication Critical patent/DE112018004256T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/109Address translation for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0607Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
    • 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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • 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/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/26Using a specific storage system architecture
    • G06F2212/261Storage comprising a plurality of storage devices
    • G06F2212/262Storage comprising a plurality of storage devices configured as RAID
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/26Using a specific storage system architecture
    • G06F2212/263Network storage, e.g. SAN or NAS
    • 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/657Virtual address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7208Multiple device management, e.g. distributing data over multiple flash devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0665Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes

Abstract

Die hierin offenbarte Technologie verwendet effizient Speicher, der in nichtflüchtigen Speichervorrichtungen in einem nichtflüchtigen Speichersystem verfügbar ist. In einem Gesichtspunkt sammelt ein Manager genug Daten zum Füllen eines gesamten Datensegments eines Redundanzcodierstreifens und fordert, dass das gesamte Datensegment zusammen in einer ausgewählten nichtflüchtigen Speichervorrichtung geschrieben werden soll. Die ausgewählte nichtflüchtige Speichervorrichtung kann eine interne Adresse zurückgeben, an der das gesamte Datensegment geschrieben wurde. Der Manager kann eine Streifenabbildung speichern, welche die internen Adressen identifiziert, an denen jedes Datensegment gespeichert wurde.

Description

  • HINTERGRUND
  • Die vorliegende Technologie bezieht sich auf nichtflüchtige Speichersysteme.
  • Halbleiterspeichervorrichtungen sind zur Verwendung in verschiedenen elektronischen Vorrichtungen beliebter geworden. Zum Beispiel wird ein nichtflüchtiger Halbleiterspeicher in Mobiltelefonen, Digitalkameras, persönlichen digitalen Assistenten, mobilen Rechenvorrichtungen, nichtmobilen Rechenvorrichtungen, Solid-State-Laufwerken und anderen Vorrichtungen verwendet.
  • Ein Ladungsspeichermaterial wie ein leitendes Floating Gate oder ein nichtleitendes ladungsfangendes Material kann in einigen Arten von Speicherzellen verwendet werden, um eine Ladung zu speichern, die einen Datenzustand darstellt. Die Speicherzelle kann ein Transistor sein, in dem sich das Ladungsspeichermaterial zwischen einem Kanal und einem Steuergate befinden kann. Das Ladungsspeichermaterial kann sowohl von dem Kanal als auch von dem Steuergate isoliert sein. Das Ladungsspeichermaterial kann vertikal in einer dreidimensionalen (3D) gestapelten Speicherstruktur oder horizontal in einer zweidimensionalen (2D) Speicherstruktur angeordnet sein. Ein Beispiel für eine 3D-Speicherstruktur ist die Bit-Cost-Scalable-Architektur (BiCS-Architektur), die einen Stapel alternierender leitender und dielektrischer Schichten aufweist.
  • Einige Typen von Speicherzellen können durch Veränderung der Ladung in dem Ladungsspeichermaterial programmiert werden, um dadurch die Schwellenspannung (Vth) des Speicherzelletransistors zu verändern. Bei einer Technik wird eine Programmierspannung an das Steuergate mit einer niedrigen Spannung in dem Kanal angelegt, um dem Ladungsspeichermaterial Ladung hinzuzufügen. Nach Anlegen der Programmierspannung wird die Schwellenspannung der Speicherzelle durch Anlegen einer Prüfspannung an das Steuergate getestet, und es wird getestet, ob die Speicherzelle einen signifikanten Strom leitet. Weitere Programmierspannungen können an das Steuergate angelegt werden, gefolgt von Prüfspannungen, bis der Schwellenstrom der Speicherzelle innerhalb eines Zielbereichs liegt.
  • Andere Arten von Speicherzellen können auf verschiedene Widerstandspegel programmiert werden. Zum Beispiel kann resistiver Random-Access-Speicher (ReRAM) reversibel zwischen einem Zustand hohen Widerstands und niedrigen Widerstands umgeschaltet werden. In einigen Speicherzellen kann eine ReRAM-Zelle reversibel zwischen mehr als zwei verschiedenen Widerstandszuständen geschaltet werden. Jeder Widerstandszustand kann einem Bereich von Widerständen entsprechen.
  • Figurenliste
  • Damit die vorliegende Offenbarung im Detail verstanden werden kann, kann eine genauere Beschreibung unter Bezugnahme auf die Merkmale der verschiedenen Ausführungsformen vorgenommen werden, wovon einige in den beiliegenden Zeichnungen veranschaulicht sind. Die beiliegenden Zeichnungen veranschaulichen jedoch lediglich die sachdienlicheren Merkmale der vorliegenden Offenbarung und sollen daher nicht als einschränkend betrachtet werden, da die Beschreibung andere wirksame Merkmale zulassen kann.
    • 1A ist ein Blockdiagramm, das ein verteiltes Rechensystem veranschaulicht, welches ein nichtflüchtiges Speichersystem gemäß einigen Ausführungsformen einschließt.
    • 1B ist ein Blockdiagramm, das ein verteiltes Rechensystem veranschaulicht, welches ein oder mehrere nichtflüchtige Speichervorrichtungen gemäß einigen Ausführungsformen einschließt.
    • 2A ist ein Blockdiagramm einer beispielhaften Speichervorrichtung, in der Ausführungsformen ausgeführt werden können.
    • 2B ist ein Blockdiagramm der beispielhaften Speichervorrichtung, welche weitere Einzelheiten einer Steuerung 122 von 2A zeigt.
    • 2C zeigt eine beispielhafte Struktur eines Speicherzellenarrays.
    • 3 ist ein Blockdiagramm, das eine Umsetzung einer Hauptsteuerung gemäß einigen Ausführungsformen veranschaulicht.
    • 4 ist ein Blockdiagramm einer Ausführungsform eines Managersystems.
    • 5A ist ein Beispiel eines Redundanzcodierstreifens.
    • 5B stellt ein Beispiel eines Eintrags in einer Streifenabbildung dar.
    • 5C stellt ein Beispiel eines herkömmlichen Systems mit einer umfangreichen Schreibserialisierungstabelle außerhalb der Speichervorrichtung dar.
    • 5D ist ein Blockdiagramm einer Ausführungsform eines nichtflüchtigen Speichers, die einen Bedarf für eine Schreibserialisierungstabelle außerhalb der Speichervorrichtung überflüssig macht.
    • 6 ist ein Flussdiagramm einer Ausführungsform eines Prozesses 600 zum Betreiben eines nichtflüchtigen Speichersystems.
    • 7 stellt ferner Details einer Ausführungsform von physischen und logischen Adressen von Löschblöcken bereit.
    • 7A stellt weiterhin Details des Eintrags 704-2 von 7 dar und zeigt die Offsets 716-1 bis 716-m.
    • 7B stellt ein Beispiel von Redundanzstreifen für die Grundlage von Einträgen in einer Ausführungsform einer Löschblockvirtualisierungsdatenstruktur dar.
    • 7C stellt eine Ausführungsform dar, bei der jedes Datensegment eines Redundanzstreifens ein einzelner Datenblock ist.
    • 7D ist ein weiteres Beispiel von Redundanzcodierstreifen.
    • 8 ist ein Flussdiagramm einer Ausführungsform eines Prozesses zum Wiederherstellen verlorener Daten für ein ELBA unter Verwendung von Datensegmenten in einem Redundanzstreifen.
    • 9 veranschaulicht ein schematisches Diagramm eines beispielhaften Computersystems.
  • Gemäß allgemeiner Praxis sind die verschiedenen in den Zeichnungen veranschaulichten Merkmale eventuell nicht maßstabsgerecht gezeichnet. Folglich können die Maße der verschiedenen Merkmale aus Gründen der Verständlichkeit absichtlich vergrößert oder verkleinert dargestellt sein. Darüber hinaus zeigen einige der Zeichnungen unter Umständen nicht alle Komponenten eines gegebenen Systems, Verfahrens oder einer Vorrichtung. Schließlich können durchwegs gleiche Bezugszahlen verwendet werden, um in der Patentschrift und den Figuren gleiche Merkmale zu bezeichnen.
  • DETAILLIERTE BESCHREIBUNG
  • Die vorliegende Technologie betrifft nichtflüchtige Speichersysteme. Die hierin offenbarte Technologie verwendet effizient Speicher, der in nichtflüchtigen Speichervorrichtungen in einem nichtflüchtigen Speichersystem verfügbar ist.
  • In einigen Ausführungsformen weist ein Host (oder alternativ „Hauptsteuerung“, die außerhalb von nichtflüchtigen Speichervorrichtungen innerhalb eines Systems sein kann) eine Datensammellogik auf, die so eingerichtet ist, dass sie genügend Daten sammelt (z. B. zufällige Schreibvorgänge), um ein gesamtes Datensegment eines Redundanzcodierstreifens zu füllen. Der Host kann ferner eine Steuerlogik aufweisen, die zur Befehlsausgabe zum Zusammenschreiben des gesamten Datensegments in einen ausgewählten nichtflüchtigen Speicher eingerichtet ist. Zum Beispiel könnte das gesamte Datensegment in denselben Löschblock geschrieben werden. Die ausgewählte nichtflüchtige Speichervorrichtung kann eine interne Adresse zurückgeben, an der das gesamte Datensegment geschrieben wurde. Der Host kann eine Streifenabbildung speichern, welche die internen Adressen identifiziert, an denen jedes Datensegment des Redundanzcodierstreifens gespeichert wurde.
  • Hierin bezeichnet eine „physische Adresse“ eine Hardwareadresse (die sich in der Regel in einem nichtflüchtigen Speicher befindet). Somit ist eine physische Adresse eine Adresse eines physischen Orts. Der Begriff „logische Adresse“, wie er hierin verwendet wird, ist ein Zeiger auf eine physische Adresse. Hierin ist eine „interne logische Adresse“ eine logische Adresse in einem Adressraum einer nichtflüchtigen Speichervorrichtung, die mit der logischen Adresse verbundene Daten speichert. Der Begriff „externe logische Adresse“ wie er hierin verwendet wird, ist eine logische Adresse in einem Adressraum extern zu einer nichtflüchtigen Speichervorrichtung, die mit der externen logische Adresse verbundene Daten speichert. Als ein Beispiel könnte die externe logische Adresse eine Adresse in einem Adressraum eines Hosts sein, der anfordert, dass Daten, die mit der externen logischen Adresse verbunden sind, in der nichtflüchtigen Speichervorrichtung gespeichert werden. Hierin ist eine „interne Adresse“ eine Adresse in einem Adressraum einer nichtflüchtigen Speichervorrichtung. Zwei Beispiele interner Adressen sind interne logische Adresse und physische Adressen.
  • Hierin bezieht sich „zufällige Schreibvorgänge“ auf eine Sequenz von Schreibvorgängen, die keine sequentiellen Adressen haben. Zum Beispiel kann ein Host eine Sequenz von Schreibbefehlen ausgeben, in denen die logischen Adressen gestreut werden. Eine Sequenz von zufälligen Schreibvorgängen kann somit zufällige externe logische Adressen umfassen. Im Gegensatz dazu bezieht sich „sequentielle Schreibvorgänge“, wie der Begriff hierin verwendet wird, auf eine Sequenz von Schreibvorgängen, die sequentielle Adressen aufweisen. Zum Beispiel kann ein Host eine Folge von Schreibbefehlen ausgeben, in denen die logischen Adressen sequentiell geordnet werden.
  • In einigen Ausführungsformen kann nichtflüchtiger Speicher verwendet werden, um Daten unter Verwendung redundanter datenbasierter Schutzschemata zu speichern, die manchmal Redundanzcodierung genannt werden. Ein Beispiel für Redundanzcodierung wird allgemein als RAID (redundantes Array unabhängiger Platten, engl. redundant array of independent disks) bezeichnet. Zahlreiche Typen oder Ebenen von Redundanzcodierung und RAID sind wohlbekannt, und die vorliegende Offenbarung geht nicht davon aus, alle Typen oder Ebenen von Redundanzcodierung und RAID vollständig zu beschreiben.
  • In einer Ausführungsformen weist ein Host (oder alternativ „Hauptsteuerung“, die außerhalb von nichtflüchtigen Speichervorrichtungen innerhalb eines Systems sein kann) eine Datensammellogik auf, die so eingerichtet ist, dass sie genügend Daten sammelt (z. B. zufällige Schreibvorgänge), um ein gesamtes Datensegment eines Redundanzcodierstreifens zu füllen. Der Host kann ferner eine Steuerlogik aufweisen, die zur Befehlsausgabe zum Schreiben des gesamten Datensegments in einen ausgewählten nichtflüchtigen Speicher eingerichtet ist. Die ausgewählte nichtflüchtige Speichervorrichtung kann eine interne Adresse zurückgeben, an der das gesamte Datensegment geschrieben wurde. In einer Ausführungsform wird das gesamte Datensegment in einen physisch angrenzenden Bereich von Speicherzellen geschrieben. Zum Beispiel könnte der physisch angrenzende Bereich der gesamte oder ein Teil eines Löschblocks sein. Die interne Adresse ist nicht notwendigerweise eine physische Adresse. In einer Ausführungsform bleibt diese interne Adresse jedoch in dem Fall unbeweglich, wenn die nicht flüchtige Speichervorrichtung das Datensegment an einen anderen physischen Standort bewegen müsste. Hierin wird eine interne Adresse, die unbeweglich bleibt, selbst wenn die Daten an einen anderen physischen Standort bewegt werden müssten, als eine „feststehende interne Adresse“ bezeichnet. Wenn der Host somit später an die Speichervorrichtung eine Anforderung für Daten senden soll, die an der feststehenden internen Adresse gespeichert sind, gibt die Speichervorrichtung die Daten zurück, selbst wenn sich die Daten physisch zu einer anderen physischen Adresse bewegt haben. In einer Ausführungsform ist die feststehende interne Adresse eine interne logische Adresse.
  • Der Host (oder alternativ die Hauptsteuerung) kann die Sammlung von Daten für andere Datensegmente des Redundanzcodierstreifens wiederholen und Schreibvorgänge an andere nichtflüchtige Speichervorrichtungen ausgeben. Der Host kann somit eine interne Adresse von a erhalten, wobei jedes Datensegment in jede der nichtflüchtigen Speichervorrichtungen geschrieben wurde. Der Host kann auch einen Redundanzcode für den Redundanzcodierstreifen berechnen. Ein Beispiel für den Redundanzcode sind ein oder mehrere Paritätsblöcke, die auf den Datensegmenten basieren, die in die nichtflüchtigen Speichervorrichtungen geschrieben werden. Der Host kann einen Schreibbefehl zum Schreiben eines Datensegments des Redundanzcodes in eine ausgewählten nichtflüchtige Speichervorrichtung weiterleiten. Die ausgewählte nichtflüchtige Speichervorrichtung kann eine interne Adresse zurückgeben, von der das Datensegment des Redundanzcodes geschrieben wurde. In einer Ausführungsform wird das gesamte Datensegment in einen physisch angrenzenden Bereich von Speicherzellen geschrieben. Zum Beispiel könnte der physisch angrenzende Bereich der gesamte oder ein Teil eines Löschblocks sein. Wenn der Redundanzcode mehr als ein Datensegment aufweist, kann der Host dies für andere Datensegmente des Redundanzcodes wiederholen.
  • Das nichtflüchtige Speichersystem kann ferner eine Redundanzcodierlogik aufweisen, die zum Bilden eines Redundanzcodierstreifens aus dem Datenblock auf jeder der nichtflüchtigen Speichervorrichtungen sowie dem Block des Redundanzcodes in der einen oder den mehreren nichtflüchtigen Speichervorrichtungen eingerichtet ist. In einer Ausführungsform speichert der Host (oder alternativ die „Hauptsteuerung“) eine Redundanzstreifenabbildung, die jede der internen Adressen einschließt, welche die nichtflüchtige Speichervorrichtung als Antwort auf die Anforderungen zum Schreiben der Datensegmente bereitstellt. In einer Ausführungsform kann die Redundanzstreifenabbildung einen Löschblock von jeder der nichtflüchtigen Speichervorrichtungen identifizieren.
  • Es sei darauf hingewiesen, dass eine nichtflüchtige Speichervorrichtung ihr Datensegment des Redundanzcodierstreifens zu einem anderen physischen Bereich eigenständig (ohne Benachrichtigung des Hosts oder der Hauptsteuerung) bewegt. Zum Beispiel könnte die nichtflüchtige Speichervorrichtung eine Abnutzungsausgleichung durchführen, bei der alle Daten, die in einem Block enthalten sind, der das Datensegment enthält, in einen anderen Bereich (z. B. Block) geschrieben werden. Die nichtflüchtige Speichervorrichtung kann eine Abbildung zwischen einer „internen logischen Adresse“ eines Blocks und einer „physischen Adresse“ von Blöcken beibehalten. Wenn die Daten von einem Block zu einem anderen bewegt werden, wird die physische Adresse aktualisiert, aber die interne logische Adresse bleibt in einer Ausführungsform die gleiche. Wie erwähnt, wird dies hierin als eine „feststehende interne Adresse“ bezeichnet. Die interne Adresse, welche die nichtflüchtige Speichervorrichtung an den Host berichtet, kann die interne logische Adresse sein. Es ist somit zu beachten, dass der Host (oder die Hauptsteuerung) in der Lage ist, eine Redundanzstreifenabbildung, welche jeden Redundanzstreifen definiert, selbst wenn eine nichtflüchtige Speichervorrichtung ihr Datensegment in einen der Redundanzstreifen bewegen sollte, beizubehalten.
  • Einige Speichersysteme, umfassend mehrere nichtflüchtige Speichervorrichtungen, verwenden eine protokollstrukturierte Art der Organisation zum Speichern von Daten in nichtflüchtigem Speicher. Eine protokollstrukturierte Organisation kann Schreibdaten von einem Host mit „zeitlicher Lokalität“ (d. h. die in zeitlicher Nähe zueinander ausgeführt werden) in ein Layout umwandeln, das eine „räumliche Lokalität“ auf dem nichtflüchtigen Speicher aufweist, selbst wenn die Daten eventuell nicht räumlich lokal in dem Hostadressraum sind. Zum Beispiel können zufällige Schreibvorgänge vom Host in Bezug auf die physische Lokalität sequentiell in den nichtflüchtigen Speicher geschrieben werden. Solch ein protokollstrukturierter Typ von Organisation kann die Leistung des nichtflüchtigen Speichers erhöhen. Beispielsweise kann die Schreibfaktorerhöhung reduziert werden.
  • Ein möglicher Weg, eine protokollstrukturierte Organisation in einem System mit mehreren nichtflüchtigen Speichervorrichtungen umzusetzen, besteht darin, dass Logik außerhalb der nichtflüchtigen Speichervorrichtung innerhalb des Systems (z. B. Festkörperlaufwerk) eine Tabelle beibehält, die von einem Adressraum (z. B. virtuellem Adressraum) zu einem anderen Adressraum (z. B. externem logischen Adressraum) abbildet. Als ein Beispiel können zufällige Schreibvorgänge in dem virtuellen Adressraum, die etwa zu einem bestimmten Zeitpunkt auftreten, auf eine Sequenz in dem externen logischen Adressraum abgebildet werden. Der Einfachheit halber werden diese Adressen als „Blockadressen“ bezeichnet. Auf diese Weise, kann die Tabelle virtuelle Blockadressen (VBA) in dem virtuellen Adressraum auf externe logische Blockadressen (externe LBA) in dem externen logischen Adressraum abbilden. Solch eine Abbildungstabelle kann hierin als eine „Schreibserialisierungs“-Abbildungstabelle bezeichnet werden.
  • Ein oder mehrere Schreibbefehle können an den nichtflüchtigen Speicher gesendet werden, um Daten an der Sequenz von externen LBA zu schreiben. Einige nichtflüchtigen Speichervorrichtungen können zwischen der externen LBA auf eine interne Adresse abbilden, welche einen physischen Ort in der nichtflüchtigen Speichervorrichtung definieren kann. Zum Beispiel kann der nichtflüchtige Speicher eine Datenstruktur aufweisen (z. B. logische auf physische Umsetzungstabelle), die externe LBA an physischen Blockadressen (PBA) in der nichtflüchtigen Speichervorrichtung abbildet. Es ist zu beachten, dass einige nichtflüchtige Speichervorrichtungen eine zusätzliche „interne logische Adresse“ (interne LBA) zwischen der externen LBA und der PBA aufweisen können. Somit können einige nichtflüchtige Speichervorrichtungen von einer externen LBA auf eine interne LBA abbilden und auch von der internen LBA auf eine PBA abbilden.
  • Jedoch kann in der Systemumgebung mit mehreren Speichervorrichtungen, die eine große Gesamtspeicherkapazität bereitstellen, eine solche protokollstrukturierte Organisation eine große absturzsichere Abbildungstabelle erfordern, um von dem virtuellen Adressraum auf den externen logischen Adressraum abzubilden. Zum Beispiel kann eine große absturzsichere Abbildungstabelle benötigt werden, um von VBA auf externe LBA abzubilden. Das Speichern einer solchen Tabelle in den nichtflüchtigen Speicherzellen der nichtflüchtigen Speichervorrichtung kann einen negativen Einfluss auf die Leistung der nichtflüchtigen Speichervorrichtung haben. Eine Möglichkeit ist es, die Abbildungstabelle im dynamischen RAM (DRAM) zu speichern. Jedoch können aufgrund der Größe der Tabelle, die Kosten des DRAM erheblich sein. Zum Beispiel kann die Tabelle fünf Bytes pro 4k Seite an Speicher benötigen. Zum Beispiel kann die Tabelle für 1 PB Speicher > 1 TB an DRAM benötigen.
  • Zusätzlich kann die Abbildung von VBA auf externe LBA eine Speicherbereinigung und/oder Datenkompaktierung erfordern. Die Speicherbereinigung kann jedoch ressourcenintensiv sein. Zum Beispiel kann die Speicherbereinigung mehrere CPU-Kerne und viele GBs an Speicher verbrauchen. Die Datenverdichtung führt Datenbewegungen durch Lesen und dann Schreiben von Datenblöcken aus, daher wird die gesamte Schreibverstärkung vollständig auf dem Datenbus sichtbar. Schließlich bringt die Paritätsberechnung zusätzlich eine signifikante Belastung auf mehrere CPU-Kerne, Speicherbandbreite und CPU-Caches (durch Verwerfen derselben) mit sich. Besonders signifikant ist der Speicherbandbreiten-Overhead, da dies in der Regel bei Speicheranwendungen die knappste Systemressource ist.
  • Die hier offenbarten Ausführungsformen nutzen interne Fähigkeiten von nichtflüchtigen Speichervorrichtungen, um eine effiziente Logikstrukturierung in einer Speichersystemumgebung zu implementieren. In einer Ausführungsform werden logische zu physische Abbildungstabellen in nichtflüchtigen Speichervorrichtungen genutzt, um eine auf einem Host basierende oder speichersystemsteuerungsbasierte Schreibserialisierungs-Abbildungstabellen zu entlasten. Dies reduziert den großen Speicherbedarf auf System-/Hostebene wesentlich. Durch Nutzung von speichervorrichtungsunterstützten Optimierungen könnte die Host-Software oder die Speichersystem-Steuerung einfacher sein und mehr Ressourcen können freigegeben werden, um Berechnungsaufgaben durchzuführen, wodurch wesentlich mehr Leistung bei geringeren Kosten bereitgestellt wird. Das gesamte System wird skalierbarer, da die Leistung der Schreibserialisierungs-Abbildung linear mit der Anzahl von Speichervorrichtungen skaliert werden könnte.
  • Bestimmte Ausführungsformen der Erfindung können Vorteile in NVMe Over Fabric (NVMeOF) -Speicherplattformen bereitstellen (z. B. NVMeOF intelligente Plattform), da NVMeOF den Aufbau von hoch effizienten NVMeOF-Steuerungen, die mehrere zehn Millionen IOPS in Silikon ausführen können. In diesem Zusammenhang kann ein Speichercontroller jedoch keine RAID-bezogenen Aufgaben ohne signifikanten Verlust an Effizienz durchführen, wodurch sie zu einem einzelnen Engpass wird. Entlastungsredundanzaufgaben in den Speichervorrichtungen würden das Hinzufügen der RAID/Löschcodierungsfunktionalität in NVMeOF-Speicherplattformen ohne signifikanten Verlust an Leistungsskalierbarkeit ermöglichen. Als Folge, wäre es möglich, hoch effiziente NVMeOF-Speicherplattformen zu bauen, die beispielsweise zwei Laufwerksausfällen mit nur 10 % Speicheroverhead (20+2 RAID) widerstehen, während eine Leistung von 10 Millionen IOPS oder mehr auf kleinen Blöcken zufälliger Schreibvorgänge mit sehr begrenzten Kostenerhöhungen im Vergleich zu DAS-Speichervorrichtungen (Direct Attached Storage) mit derselben Gesamtkapazität und Leistung erzielt wird.
  • In einer Ausführungsform weist eine nichtflüchtige Speichervorrichtung eine Abbildungslogik auf, die zum Abbilden externer LBA in Schreibanforderungen, die zeitlich nacheinander an sequentiellen Adressen in einen internen Adressraum der nichtflüchtigen Speichervorrichtung empfangen werden, eingerichtet ist. Die Abbildungslogik kann eingerichtet sein, um die Abbildung in dem nichtflüchtigen Speicher zu speichern. Als ein Beispiel könnte die Abbildungslogik eine logische zu physische Umsetzungstabelle in einem nichtflüchtigen Speicher speichern. In einer Ausführungsform ist die Abbildungslogik eines gegebenen nichtflüchtigen Speichers zum Abbilden beliebiger externer logischer Adressen in Schreibanforderungen eingerichtet, die zeitlich nacheinander an dem gegebenen nichtflüchtigen Speicher an physisch kontinuierlichen Orten in der gegebenen nichtflüchtigen Speichervorrichtung empfangen werden. In einer Ausführungsform ist die Abbildungslogik eines gegebenen nichtflüchtigen Speichers zum Abbilden beliebiger externer logischer Adressen in Schreibanforderungen eingerichtet, die zeitlich nacheinander an dem gegebenen nichtflüchtigen Speicher an sequentiellen internen Adressen der gegebenen nichtflüchtigen Speichervorrichtung empfangen werden.
  • 1A ist ein Blockdiagramm eines verteilten Systems 102, das eine Umsetzung eines nichtflüchtigen Speichersystems 100, gekoppelt über ein Netzwerk 101 mit einem Hostsystem 115 (manchmal als Hostcomputersystem, Hostvorrichtung oder Host bezeichnet) gemäß einigen Ausführungsformen einschließt. Es ist zu beachten, dass es mehr als ein Hostsystem 115 geben kann, das mit dem nichtflüchtigen Speichersystem 100 verbunden ist. Das nichtflüchtige Speichersystem 100 schließt die nichtflüchtige Speichervorrichtungen 120-1 bis 120-m ein (auch manchmal als eine Informationsspeichervorrichtung, oder eine Datenspeichervorrichtung, oder eine Speichervorrichtung bezeichnet).
  • In einigen Ausführungsformen schließt das Speichermedium 120 eine beliebige Anzahl (d. h. eine oder mehrere) Speichervorrichtungen ein, einschließlich, ohne Einschränkung, persistenter Speicher oder nichtflüchtiger Halbleiterspeichervorrichtungen, wie Flash-Speichervorrichtung(en). Zum Beispiel kann eine Flash-Speichervorrichtung bzw. können Flash-Speichervorrichtungen für Unternehmensspeicher eingerichtet sein, die für Anwendungen wie Cloud Computing, für Datenbankanwendungen, als primäre und/oder sekundäre Speicher oder zum Zwischenspeichern von gespeicherten (oder zu speichernden) Daten in sekundären Speichern, wie Festplattenlaufwerken, geeignet sind. Außerdem und/oder alternativ kann bzw. können die Flash-Speichervorrichtung(en) auch für Anwendungen mit relativ kleinerem Maßstab wie persönliche Flash-Laufwerke oder Festplattenersatz für PCs, Laptops und Tablets eingerichtet sein.
  • Die Speichervorrichtungen 120 schließen eine Speicherstruktur 126 ein. In einer Ausführungsform schließt die Speicherstruktur 126 Flash-Speicherzellen (z.B. NAND oder NOR) ein. Die Speicherstruktur 126 ist jedoch nicht auf Flash-Speicherzellen beschränkt. Andere Beispiele für die Speicherstruktur 126 schließen resistiven Direktzugriffsspeicher („ReRAM“), ferroelektrischen Direktzugriffsspeicher („FRAM“) und magnetresistiven Direktzugriffsspeicher („MRAM“) ein.
  • Die Speicherstruktur 126 kann zweidimensional (2D) oder dreidimensional (3D) sein. Die Speicherstruktur kann ein oder mehrere Arrays von Speicherzellen aufweisen. Die Speicherstruktur kann eine monolithische dreidimensionale Speicherstruktur aufweisen, in der mehrere Speicherniveaus oberhalb (und nicht in) einem einzelnen Substrat wie einem Wafer ohne dazwischenliegende Substrate ausgebildet sind. Die Speicherstruktur 126 kann jede Art von nichtflüchtigem Speicher aufweisen, der monolithisch in einer oder mehreren physischen Ebenen von Speicherzellenarrays ausgebildet ist, die über einen aktiven Bereich verfügen, der über einem Siliziumsubstrat angeordnet ist. Die Speicherstruktur kann sich in einer nichtflüchtigen Speichervorrichtung befinden, die Schaltlogik aufweist, die dem Betrieb der Speicherzellen zugeordnet sind, ganz gleich, ob sich die zugehörige Schaltung oberhalb oder innerhalb des Substrats befindet.
  • In 1A ist das Host-System 115 über das Netzwerk 101 mit einer Hauptspeichersteuerung 130 des nichtflüchtigen Speichersystems 100 gekoppelt. Jedoch schließt in einigen Ausführungsformen das Hostsystem 115 einen Speichercontroller oder einen Abschnitt der Hauptspeichersteuerung 130 als eine Komponente und/oder als ein Subsystem ein. Zum Beispiel werden in einigen Ausführungsformen einige oder alle der Funktionalitäten des Speichercontrollers 130 durch Software oder Hardware in dem Hostsystem 115 umgesetzt. In dem veranschaulichten nichtflüchtigen Speichersystem 100 ist eine Hauptsteuerung 130 mit dem Netzwerk 101 und einer oder mehreren Speichervorrichtungen 120 durch Verbindungen 135 gekoppelt. Die Hauptsteuerung 130 ist eine Steuerung zum Steuern des Zugriffs auf die Speichervorrichtungen 120 und die bidirektionale Verarbeitung von Lese- und Schreibbefehlen und damit verbundener Daten zwischen dem vernetzten Hostsystem 115 und Speichervorrichtungen 120, wie Solid-State-Laufwerken (SSD). Die Steuerung 130 kann ein nichtflüchtiger Speicher-Express(NVMe)-Controller, ein Redundanzcodierungs-Controller (z. B. ein Controller für ein redundantes Array von unabhängigen Platten (RAID-Controller)) oder ein anderer Typ von CPU oder Prozessor zum Steuern des Zugriffs auf nichtflüchtige Speichervorrichtungen sein. In einigen Ausführungsformen sind die Steuerung 130 und das Speichermedium 120 jedoch in derselben Vorrichtung (d. h. einer integrierten Vorrichtung) als Komponenten davon eingeschlossen. Ferner sind in einigen Ausführungsformen die Speichervorrichtungen 120 in eine Hostvorrichtung (z. B. ein Computersystem 115), wie eine mobile Vorrichtung, ein Tablet, ein anderer Computer oder eine computergesteuerte Vorrichtung, eingebettet und die hierin beschriebenen Verfahren werden zumindest teilweise durch den eingebetteten Speichercontroller durchgeführt.
  • In 1A schließt die Hauptsteuerung 130 ein Redundanzcodiermodul 136 ein. Jedoch könnte das Redundanzcodiermodul 136 in einer der Speichervorrichtungen 120 oder Host 115 angeordnet sein. Das Redundanzcodiermodul 136 kann so eingerichtet sein, dass es Redundanzcodierstreifen zusammenfasst. In einer Ausführungsform wird jeder der Redundanzcodierstreifen aus einer Menge von Daten auf jedem der nichtflüchtige Speichervorrichtungen 120 gebildet. In einer Ausführungsform wird jeder der Redundanzcodierstreifen auf Grundlage von internen Adressen gebildet, an denen die nichtflüchtigen Speichervorrichtungen 120 berichteten, dass Datensegmente der Streifen gespeichert wurden. Zum Beispiel könnte die Hauptsteuerung 130 oder Host 115 eine Redundanzstreifenabbildung speichern, die für jeden Redundanzcodierstreifen die internen Adressen enthält, an denen jedes Datensegment eines Redundanzcodierstreifens gespeichert wurde.
  • Das Host-Computersystem 115 kann jede beliebige geeignete Computervorrichtung sein, wie z. B ein Computer, ein Laptop, ein Tablet, ein Netbook, ein Internetkiosk, ein persönlicher digitaler Assistent, ein Mobiltelefon, ein Smartphone, eine Spielekonsole, ein Computerserver oder eine beliebige andere Rechenvorrichtung. In einigen Ausführungsformen ist das Host-System 115 ein Serversystem, wie z. B. ein Serversystem in einem Datenzentrum. In einigen Ausführungsformen schließt das Host-System 115 einen oder mehrere Prozessoren, eine oder mehrere Arten von Speicher, ein Display und/oder andere Benutzerschnittstellenkomponenten wie eine Tastatur, einen Touchscreen, eine Maus, ein Trackpad, eine digitale Kamera und/oder eine beliebige Anzahl von zusätzlichen E/A-Vorrichtungen ein, um Funktionalität zum Host-Computersystem 115 hinzuzufügen. In einigen Ausführungsformen weist das Host-Computersystem 115 kein Display und keine anderen Benutzerschnittstellenkomponenten auf.
  • Die Speichervorrichtungen 120 enthalten jeweils eine Speicherstruktur 126 und ein Adressenabbildungsmodul 150. Das Adressenabbildungsmodul 150 kann dazu eingerichtet sein, eine Adresse aus einem Adressraum des Hosts 115 oder einen Adressraum, der von der Hauptsteuerung 130 auf Systemebene (einem externen Adressraum, da er extern von der Speichervorrichtung liegt) verwaltet wird, in einen internen Adressraum der Speichervorrichtung 120 zu übersetzen (oder umzusetzen). Das Adressenabbildungsmodul kann auch dazu eingerichtet sein, um die Abbildung in einem nichtflüchtigen Speicher zu speichern. In einer Ausführungsform ist der nichtflüchtige Speicher ein DRAM. Als ein Beispiel könnte das Adressenabbildungsmodul 150 eine Umsetzungstabelle von einer externen logischen Adresse zu einer physischen Adresse einschließen, die von einer externen logischen Adresse, die durch die Hauptsteuerung 130 bereitgestellt wird, zu einer physischen Adresse der Speichervorrichtung 120 abbilden kann. In einer Ausführungsform bildet das Abbildungsmodul 150 von einer externen logischen Adresse auf eine interne logische Adresse ab, ebenso wie von der internen logischen Adresse auf eine physische Adresse. Somit kann die externe logische Adresse über die interne logische Adresse auf die physische Adresse abgebildet werden. In einer Ausführungsform setzt die Hauptsteuerung 130 einen durch den Host 115 (virtuelle Blockadressen) genutzten Adressraum in den externen logischen Adressraum um, den die Steuerung 130 den einzelnen Vorrichtungen 120 bereitstellt. In bestimmten Ausführungsformen, in denen der Host mit den Speichervorrichtungen 120 ohne eine Hauptsteuerung kommuniziert, kann die Umsetzung der virtuellen Blockadresse zu einer externen logischen Adresse durch den Host durchgeführt werden.
  • 1B zeigt ein anderes Beispielsystem 104, in dem Ausführungsformen ausgeführt werden können. In 1B befindet sich das Host-System 115 über das/die Netzwerk(e) 101 und die Verbindungen 135 in Kommunikation mit den Speichervorrichtungen 120. Das Netzwerk 101 und die Verbindungen 135 werden manchmal als Datenverbindungen bezeichnet, übertragen in der Regel jedoch zusätzlich zu Daten Befehle, und übertragen optional Metadaten, Fehlerbehebungsinformationen und/oder andere Informationen zusätzlich zu Datenwerten, die in den Speichervorrichtungen 120 gespeichert werden, und Datenwerten, die aus den Speichervorrichtungen 120 ausgelesen werden. In 1B schließt das Hostsystem 115 ein Redundanzcodiermodul 136 ein. Jedoch könnte das Redundanzcodiermodul 136 in einer der Speichervorrichtungen 120 angeordnet sein.
  • 2A ist ein Blockdiagramm einer beispielhaften Speichervorrichtung 120, in der Ausführungsformen ausgeführt werden können. Die Speichervorrichtung 120 kann einen oder mehrere Speicherchips 108 einschließen. Der Speicherchip 108 schließt eine Speicherstruktur 126 aus Speicherzellen, wie ein Array aus Speicherzellen, eine Steuerschaltung 110 und Lese/Schreib-Schaltungen 128 ein. Die Speicherstruktur 126 ist durch Wortleitungen über einen Zeilendecoder 124 und durch Bitleitungen über einen Spaltendecoder 132 adressierbar. Die Lese-/Schreibschaltungen 128 schließen mehrere Abtastblöcke 51, 52, ..., 53 (Sensorschaltung) ein und ermöglichen das parallele Lesen oder Programmieren einer Seite von Speicherzellen. Üblicherweise ist eine Steuerung 122 in dem gleichen Speichersystem 100 (z. B. einer entfernbaren Speicherkarte) wie das eine oder die mehreren Speicherchips 108 eingeschlossen. Die Steuerung kann von dem Speicherelement getrennt sein. Befehle und Daten werden zwischen der Steuerung und dem einen oder den mehreren Speicherchip(s) 108 über Leitungen 118 übertragen.
  • Die Speicherstruktur kann 2D oder 3D sein. Die Speicherstruktur kann ein oder mehrere Arrays von Speicherzellen aufweisen, einschließlich eines 3D-Arrays. Die Speicherstruktur kann eine monolithische dreidimensionale Speicherstruktur aufweisen, in der mehrere Speicherniveaus oberhalb (und nicht in) einem einzelnen Substrat wie einem Wafer ohne dazwischenliegende Substrate ausgebildet sind. Die Speicherstruktur kann jede Art von nichtflüchtigem Speicher aufweisen, der monolithisch in einer oder mehreren physischen Ebenen von Speicherzellenanordnungen ausgebildet ist, die einen aktiven Bereich aufweisen, der über einem Siliziumsubstrat angeordnet ist. Die Speicherstruktur kann sich in einer nichtflüchtigen Speichervorrichtung befinden, die Schaltlogik aufweist, die dem Betrieb der Speicherzellen zugeordnet sind, ganz gleich, ob sich die zugehörige Schaltung oberhalb oder innerhalb des Substrats befindet.
  • Die Steuerschaltung 110 arbeitet mit den Lese-/Schreibschaltungen 128 zusammen, um Speichervorgänge auf der Speicherstruktur 126 auszuführen, und schließt eine Zustandsmaschine 112, einen On-Chip-Adressdecodierer 114 und ein Leistungssteuermodul 116 ein. Die Zustandsmaschine 112 stellt eine Steuerung von Speichervorgängen auf Speicherebene bereit. Eine Speicherregion 113 kann bereitgestellt werden, z.B. für Betriebsparameter, und Software/Code. Bei einer Ausführungsform ist die Zustandsmaschine durch die Software programmierbar. Bei anderen Ausführungsformen verwendet die Zustandsmaschine keine Software und ist vollständig in Hardware (z. B. elektrischen Schaltungen) implementiert.
  • Der On-Chip-Adressdecodierer 114 stellt eine Adressschnittstelle zwischen derjenigen, die von dem Host oder einer Speichersteuerung verwendet wird, zu der Hardwareadresse, die von den Decodierern 124 und 132 verwendet wird, bereit. Das Leistungssteuermodul 116 steuert die Leistung und die Spannungen, die Wortleitungen, Auswahlgateleitungen, Bitleitungen und Sourceleitungen während Ausführungsformen von Speichervorgängen zugeführt werden. Es kann Treiber für Wortleitungen, SGS- und SGD-Transistoren und Sourceleitungen einschließen. Die Abtastblöcke können in einem Ansatz Bitleitungstreiber einschließen.
  • In einigen Implementierungen können einige der Komponenten kombiniert werden. Bei verschiedenen Ausführungen können eine oder mehrere der Komponenten (allein oder in Kombination), die sich von der Speicherstruktur 126 unterscheiden, als mindestens eine Steuerschaltung betrachtet werden, die dazu eingerichtet ist, die hierin beschriebenen Techniken einschließlich der Schritte der hierin beschriebenen Verfahren durchzuführen. Zum Beispiel kann eine Steuerschaltung eine beliebige der Komponenten oder eine Kombination aus einer Steuerschaltung 110, einer Zustandsmaschine 112, Decodierern 114 und 132, einem Leistungssteuermodul 116, Abtastblöcken 51, 52, ..., 53, Lese-/Schreibschaltungen 128, einer Steuerung 122 und so weiter einschließen. Die Steuerschaltung kann auch als eine Verwaltungsschaltung bezeichnet werden.
  • Die Off-Chip-Steuerung 122 (die in einer Ausführungsform eine elektrische Schaltung ist) kann einen Prozessor 122c, Speichervorrichtungen (Speicher) wie ROM 122a und RAM 122b aufweisen. In einigen Ausführungsformen wird der RAM 122b zum Speichern einer oder mehrerer Adressabbildungstrukturen (wie etwa, aber nicht begrenzt auf, eine Adressabbildungstabelle) verwendet. Im Allgemeinen bildet eine Adressabbildungsdatenstruktur zwischen zwei Adressen ab. In einer Ausführungsform bildet eine Adressabbildungsdatenstruktur zwischen einer externen logischen Adresse und einer internen logischen Adresse ab. In einer Ausführungsform bildet eine Adressabbildungsstruktur zwischen einer internen logischen Adresse und einer physischen Adresse ab. Beispiele der Adressabbildung von Strukturen schließen Folgendes ein, sind aber nicht begrenzt auf: Adressumsetzungstabellen, B-Baumstrukturen und protokollstrukturierte Zusammenführungsbaumstrukturen.
  • In einigen Ausführungsformen wird der Speichervorrichtungsbereich 126a verwendet, um eine Kopie einer Adressenabbildungsdatenstruktur zu persistieren. Es ist zu beachten, dass die persistente Kopie eine Adressenabbildungsdatenstruktur von dieser Speichervorrichtung 120 oder einer anderen Speichervorrichtung 120 sein könnte. Somit könnte die persistente Kopie in dem Fall verwendet werden, dass eine andere Speichervorrichtung 120 nicht auf ihre Kopie ihrer Adressabbildungsdatenstruktur in beispielsweise ihrem RAM 122b (oder einem anderen Ort) zugreifen könnte.
  • Eine Speicherschnittstelle 122d kann auch bereitgestellt werden. Die Speicherschnittstelle, die mit ROM, RAM und Prozessor in Kommunikation steht, ist eine elektrische Schaltung, die eine elektrische Schnittstelle zwischen Steuerung und Speicherelement bereitstellt. Zum Beispiel kann die Speicherschnittstelle das Format oder die Zeitsteuerungssignale verändern, einen Buffer bereitstellen, von Spitzen isolieren, ein E/A zwischenspeichern und so weiter. Der Prozessor kann dem Steuerschaltkreis 110 (oder einer beliebigen anderen Komponente des Speicherelements) über die Speicherschnittstelle 122d Befehle erteilen.
  • Die Speichervorrichtung weist einen Code wie einen Satz von Anweisungen auf und der Prozessor ist dazu betreibbar, den Satz von Anweisungen auszuführen, um die hierin beschriebene Funktionalität bereitzustellen. Alternativ oder zusätzlich kann der Prozessor auf Code von einer Speichervorrichtung 126a der Speicherstruktur zugreifen, wie einen reservierten Bereich von Speicherzellen in einer oder mehreren Wortleitungen.
  • Der Code kann zum Beispiel von der Steuerung verwendet werden, um auf die Speicherstruktur zuzugreifen, wie für Programmier-, Lese- und Löschvorgänge. Der Code kann Bootcode und Steuercode (z. B. einen Satz von Befehlen) einschließen. Der Bootcode ist eine Software, die die Steuerung während eines Boot- oder Startvorgangs initialisiert und der Steuerung ermöglicht, auf die Speicherstruktur zuzugreifen. Der Code kann von der Steuerung verwendet werden, um eine oder mehrere Speicherstrukturen zu steuern. Beim Hochfahren ruft der Prozessor 122c den Bootcode aus dem ROM 122a oder der Speichervorrichtung 126a zur Ausführung ab, und der Bootcode initialisiert die Systemkomponenten und lädt den Steuercode in den RAM 122b. Sobald der Steuercode in den RAM geladen ist, wird er durch den Prozessor ausgeführt. Der Steuercode enthält Treiber zum Durchführen grundlegender Aufgaben, wie beispielsweise Steuern und Zuweisen von Speicher, Priorisieren der Verarbeitung von Befehlen und Steuern von Eingabe- und Ausgabeports.
  • Im Allgemeinen kann der Steuercode Anweisungen einschließen, um die hierin beschriebenen Funktionen einschließlich der weiter unten erläuterten Schritte der Flussdiagramme durchzuführen und um die Spannungswellenformen einschließlich der weiter unten erläuterten bereitzustellen. Eine Steuerschaltung kann dazu eingerichtet sein, die Anweisungen auszuführen, um die hierin beschriebenen Funktionen durchzuführen.
  • Die Speicherzellen können aus passiven und/oder aktiven Elementen in beliebigen Kombinationen gebildet sein. Als nicht einschränkendes Beispiel schließen passive Halbleiterspeicherelemente ReRAM-Vorrichtungselemente ein, die in einigen Ausführungsformen ein widerstandsschaltendes Speicherelement wie ein Anti-Fuse- oder Phasenwechselmaterial und gegebenenfalls ein Lenkelement wie eine Diode oder einen Transistor einschließen. Weiterhin schließen als nicht einschränkendes Beispiel aktive Halbleiterspeicherelemente EEPROM- und Flash-Speichervorrichtungselemente ein, die in einigen Ausführungsformen Elemente einschließen, die einen Ladungsspeicherbereich enthalten, wie ein Floating-Gate, leitende Nanopartikel oder ein dielektrisches Ladungsspeichermaterial.
  • Mehrere Speicherelemente können derart eingerichtet sein, dass sie in Reihe geschaltet sind, oder derart, dass jedes Element einzeln zugänglich ist. Als nicht einschränkendes Beispiel enthalten Flash-Speichervorrichtungen in einer NAND-Konfiguration (NAND-Speicher) üblicherweise Speicherelemente, die in Reihe geschaltet sind. Eine NAND-Kette ist ein Beispiel für einen Satz von in Reihe geschalteten Transistoren, aufweisend Speicherzellen und SG-Transistoren.
  • Ein NAND-Speicherarray kann derart eingerichtet sein, dass das Array aus mehreren Speicherketten zusammengesetzt ist, in denen eine Kette aus mehreren Speicherelementen zusammengesetzt ist, die sich eine einzelne Bitleitung teilen und auf die als eine Gruppe zugegriffen wird. Alternativ können Speicherelemente derart eingerichtet sein, dass jedes Element einzeln zugänglich ist, z. B. ein NOR-Speicherarray. NAND- und NOR-Speicherkonfigurationen sind Beispiele, und Speicherelemente können anderweitig eingerichtet sein.
  • Eine zugehörige Schaltung ist üblicherweise für den Betrieb der Speicherelemente und für die Kommunikation mit den Speicherelementen erforderlich. Als nicht einschränkende Beispiele können Speichervorrichtungen Schaltungen aufweisen, die zum Steuern und Ansteuern von Speicherelementen verwendet werden, um Funktionen, wie Programmieren und Lesen, auszuführen. Diese zugehörige Schaltung kann sich auf demselben Substrat wie die Speicherelemente und/oder auf einem separaten Substrat befinden. Zum Beispiel kann eine Steuerung für Schreib-/Lesevorgänge des Speichers auf einem separaten Steuerungschip und/oder auf demselben Substrat wie die Speicherelemente angeordnet sein.
  • 2B ist ein Blockdiagramm der beispielhaften Speichervorrichtung 120, welches weitere Einzelheiten der Steuerung 122 zeigt. In einer Ausführungsform ist die Steuerung 122 ein Flash-Controller. Wie hierin verwendet ist eine Speichercontroller eine Vorrichtung, die in einem Speicher gespeicherte Daten verwaltet. Ein Speichercontroller kann mit einem Host kommunizieren, wie etwa einem Computer oder einer elektronischen Vorrichtung. Es ist in dem Zusammenhang der verschiedenen hierin beschriebenen Ausführungsformen zu beachten, dass sich „Host“ in der Beschreibung von 2B auf eine Steuerung eines Speichersystems, wie beispielsweise die in 1A dargestellte Hauptsteuerung 130 bezieht. Es kann jedoch ein Zwischenelement zwischen dem Speichercontroller und dem Host vorhanden sein. Ein Speichercontroller kann verschiedene Funktionen zusätzlich zu der hier beschriebenen spezifischen Funktionalität aufweisen. Zum Beispiel kann der Speichercontroller den Speicher formatieren, um sicherzustellen, dass der Speicher ordnungsgemäß arbeitet, um schlechte Flash-Speicherzellen auszugrenzen und Ersatzspeicherzellen zuzuordnen, die künftig fehlerhafte Zellen ersetzen sollen. Einige Teile der Ersatzzellen können verwendet werden, um Firmware aufzunehmen, um den Speichercontroller zu betreiben und andere Merkmale umzusetzen. Wenn ein Host während des Betriebs Daten aus dem Flash-Speicher lesen oder in ihn schreiben muss, kommuniziert er mit dem Speichercontroller. Wenn der Host eine logische Adresse bereitstellt, zu der Daten gelesen/geschrieben werden sollen, kann der Speichercontroller die vom Host empfangene logische Adresse in eine physische Adresse im Speicher umwandeln. (Alternativ kann der Host die physische Adresse bereitstellen). Der Flash-Speicher-Controller kann auch verschiedene Speicherverwaltungsfunktionen ausführen, wie z. B., ohne darauf beschränkt zu sein, Abnutzungsausgleich (Verteilen von Schreibvorgängen zum Vermeiden eines Verschleißes spezifischer Speicherblöcke, auf die ansonsten wiederholt geschrieben werden würde) und Speicherbereinigung (nachdem ein Block voll ist, Bewegen ausschließlich der gültigen Datenseiten zu einem neuen Block, so dass der volle Block gelöscht und wiederverwendet werden kann).
  • Die Schnittstelle zwischen der Steuerung 122 und dem nichtflüchtigen Speicherchip 108 kann jede geeignete Schnittstelle sein. In einer Ausführungsform kann das Speichersystem 100 ein kartenbasiertes System wie eine sichere digitale Karte (SD) oder eine sichere digitale Mikro-Karte (Mikro-SD) sein. In einer alternativen Ausführungsform kann das Speichersystem Teil eines eingebetteten Speichersystems sein. Zum Beispiel kann der Speicher in dem Host eingebettet sein, beispielsweise in Form eines Solid-State-Laufwerks (SSD), das in einem Personal Computer installiert ist.
  • In einigen Ausführungsformen enthält die Speichervorrichtung 120 einen einzelnen Kanal zwischen der Steuerung 122 und dem nichtflüchtigen Speicherchip 108, wobei der hier beschriebene Gegenstand nicht darauf beschränkt ist, einen einzelnen Speicherkanal zu haben.
  • Die Steuerung 122 schließt ein Frontend-Modul 208, das mit einem Host verbunden ist, ein Backend-Modul 210, das mit dem einen oder den mehreren nichtflüchtigen Speicherchips 108 verbunden ist, und verschiedene andere Module, die Funktionen durchführen, die nun ausführlich beschrieben werden, ein.
  • Die Komponenten der Steuerung können die Form einer gepackten funktionellen Hardwareeinheit (z. B. einer elektrischen Schaltung), konzipiert zur Verwendung mit anderen Komponenten, eines Abschnitts eines Programmcodes (z. B. Software oder Firmware) ausführbar durch einen Prozessor, z.B. einen Mikroprozessor, oder eine Verarbeitungsschaltung, die üblicherweise eine bestimmte Funktion von in Beziehung stehenden Funktionen ausführt, oder einer abgeschlossenen Hardware- oder Softwarekomponente, die eine Schnittstelle zum Beispiel mit einem größeren System hat, annehmen. Zum Beispiel kann jedes Modul eine anwendungsspezifische integrierte Schaltung (ASIC), ein anwenderprogrammierbares Gate-Array (FPGA), eine Schaltung, eine digitale Logikschaltung, eine analoge Schaltung, eine Kombination diskreter Schaltungen, Gatter oder irgendeine andere Art von Hardware oder Kombination davon einschließen. Alternativ oder zusätzlich kann jedes Modul Software einschließen, die in einer prozessorlesbaren Vorrichtung (z. B. einem Speicher) gespeichert ist, um einen Prozessor für die Steuerung zu programmieren, um die hierin beschriebenen Funktionen auszuführen. Die in 2B dargestellte Architektur ist eine beispielhafte Umsetzung, die die in 2A dargestellten Komponenten der Steuerung 122 (z.B. RAM, ROM, Prozessor, Schnittstelle) verwenden kann (aber nicht muss).
  • Die Steuerung 122 kann eine Rekonditionierungsschaltung 212 einschließen, die zum Rekonditionieren von Speicherzellen oder Speicherblöcken verwendet wird. Die Rekonditionierung kann das Auffrischen von Daten an ihrem aktuellen Standort oder das Neuprogrammieren von Daten in eine neue Wortleitung oder einen neuen Block als Teil der Durchführung einer fehlerhaften Wortleitungspflege, wie nachfolgend beschrieben, beinhalten.
  • Unter erneuter Bezugnahme auf Module der Steuerung 122 verwaltet eine Pufferverwaltungs-/Bussteuerung 214 Puffer im Direktzugriffsspeicher (RAM) 216 und steuert die interne Buszuteilung der Steuerung 122. Der RAM kann DRAM und/oder SRAM einschließen. Ein DRAM oder dynamischer Speicher mit wahlfreiem Zugriff ist ein Typ eines Halbleiterspeichers, in dem der Speicher in Form einer Ladung gespeichert ist. Jede Speicherzelle in einem DRAM besteht aus einem Transistor und einem Kondensator. Die Daten werden in dem Kondensator gespeichert. Kondensatoren verlieren Ladung aufgrund von Leckage und daher sind DRAMs flüchtige Vorrichtungen. Zum Halten der Daten in den Speicher muss die Vorrichtung regelmäßig aktualisiert werden. Im Gegensatz dazu behält SRAM oder statischer Speicher mit wahlfreiem Zugriff einen Wert bei, solange Strom zugeführt wird.
  • Ein Nur-Lese-Speicher (ROM) 218 speichert den Systemstartcode. Obwohl sie in 2B als von der Steuerung getrennt angeordnet dargestellt sind, können in anderen Ausführungsformen einer oder beide vom RAM 216 oder ROM 218 innerhalb der Steuerung angeordnet sein. In noch anderen Ausführungsformen können sich Teile des RAM und des ROM sowohl innerhalb der Steuerung 122 als auch außerhalb der Steuerung befinden. Weiterhin können in einigen Implementierungen die Steuerung 122, RAM 216 und ROM 218 auf separaten Halbleiterchips angeordnet sein.
  • Das Frontend-Modul 208 schließt eine Host-Schnittstelle 220 und eine Physical-Layer-Schnittstelle (PHY) 222 ein, welche die elektrische Schnittstelle mit dem Host oder dem Speichercontroller der nächsten Ebene bereitstellen. Es ist zu beachten, dass die Host-Schnittstelle 220 zur Kommunikation mit der Hauptsteuerung 130 verwendet wird. Die Wahl des Typs der Host-Schnittstelle 220 kann von dem Typ des verwendeten Speichers abhängen. Beispiele für die Host-Schnittstellen 220 schließen SATA, SATA Express, SAS, Fibre Channel, USB, PCle und NVMe ein, ohne jedoch darauf beschränkt zu sein. Die Host-Schnittstelle 220 unterstützt üblicherweise die Übertragung von Daten, Steuersignalen und Taktsignalen.
  • Das Backend-Modul 210 schließt eine Fehlerkorrektursteuerungseinheit (ECC-Engine) 224 ein, welche die vom Host empfangenen Datenbytes kodiert und die aus dem nichtflüchtigen Speicher gelesenen Datenbytes dekodiert und Fehler korrigiert. Der ECC-Engine 224 verfügt über einen oder mehrere Decodierer 244 und einen oder mehrere Codierer 256. In einer Ausführungsform weist die ECC-Engine 224 einen LDPC-Dekodierer (low-density parity check) auf. In einer Ausführungsform schließen die Decodierer 244 einen harten Decodierer und einen weichen Decodierer ein. Eine Ausgabe des einen oder der mehreren Decodierer 244 kann dem Host bereitgestellt werden.
  • Ein Befehlssequenzer 226 erzeugt Befehlssequenzen wie Programmier- und Löschbefehlssequenzen zur Übermittlung an den nichtflüchtigen Speicherchip 108. Ein RAID-Modul (Redundant Array of Independent Dies) 228 verwaltet die Generierung einer RAID-Parität und die Wiederherstellung ausgefallener Daten. Die RAID-Parität kann als zusätzlicher Grad des Integritätsschutzes für die Daten verwendet werden, die in das Speichersystem 100 geschrieben werden. In einigen Fällen kann das RAID-Modul 228 Teil des ECC-Engine 224 sein. Es ist zu beachten, dass die RAID-Parität als zusätzlicher Chip oder Chips hinzugefügt werden kann, wie durch den gebräuchlichen Namen impliziert, aber sie kann auch innerhalb des bestehenden Chips hinzugefügt werden, z. B. als zusätzliche Ebene oder zusätzlicher Block oder zusätzliche Wortzeilen innerhalb eines Blocks. Eine Speicherschnittstelle 230 stellt die Befehlssequenzen für den nichtflüchtigen Speicherchip 108 bereit und empfängt Statusinformationen von dem nichtflüchtigen Speicherchip. Eine Steuerebene 232 steuert den Gesamtbetrieb des Backend-Moduls 210.
  • Zusätzliche Komponenten des Speichersystems 120 schließen die Medienverwaltungsebene 238 ein, die den Abnutzungsausgleich von Speicherzellen des nichtflüchtigen Speicherchips 108 durchführt. Das Speichersystem schließt auch andere diskrete Komponenten 240 ein, wie beispielsweise externe elektrische Schnittstellen, einen externen RAM, Widerstände, Kondensatoren oder andere Komponenten, die mit der Steuerung 122 über eine Schnittstelle verbunden sein können. In alternativen Ausführungsformen sind eine oder mehrere der Physical-Layer-Schnittstelle 222, des RAID-Moduls 228, der Medienverwaltungsebene 238 und der Pufferverwaltungs-/Bussteuerung 214 optionale Komponenten, die in der Steuerung 122 nicht erforderlich sind.
  • Die Medienverwaltungsebene (MML) 238 kann als Teil der Speicherverwaltung integriert sein, die Fehler und Schnittstellenanschlüsse mit dem Host oder der Hauptsteuerung 130 behandeln kann. In einer Ausführungsform ist die MML 238 eine Flash Translation Layer (FTL) und entspricht dem Adressenabbildungsmodul 150-1 bis 150-m, das in den früheren Figuren dargestellt ist. Insbesondere kann die MML ein Modul in der Flash-Verwaltung sein und für die Interna der NAND-Verwaltung verantwortlich sein. Insbesondere kann die MML 238 einen Algorithmus in der Firmware der Speichervorrichtung einschließen, der Schreibvorgänge vom Host in Schreibvorgänge in die Speicherstruktur 126 z.B. den Flash-Speicher, des Chips 108 übersetzt. MML 238 kann erforderlich sein, weil: 1) der Flash-Speicher eine begrenzte Lebensdauer haben kann; 2) der Flash-Speicher nur in Vielfachen von Seiten geschrieben werden kann; und/oder 3) der Flash-Speicher nicht geschrieben werden kann, es sei denn, er wird als Block gelöscht. Die MML 238 versteht diese potentiellen Beschränkungen des Flash-Speichers, die für den Host möglicherweise nicht sichtbar sind. Dementsprechend versucht die MML 238, die Schreibvorgänge von dem Host in Schreibvorgänge in den Flash-Speicher zu übersetzen. Fehlerhafte Bits können unter Verwendung der MML 238 identifiziert und aufgezeichnet werden. Diese Aufzeichnung von fehlerhaften Bits kann zur Bewertung des Zustands von Blöcken und/oder Wortleitungen (den Speicherzellen auf den Wortleitungen) verwendet werden. Die MML 238, die dem Adressenabbildungsmodul 150 von 1A entspricht, ist in einer Ausführungsform so eingerichtet, um einer externe Adresse in Befehlen, die über die Host-Schnittstelle 220 empfangen werden, eine internen Adresse zuzuordnen, die von der Vorrichtung 120 verwendet wird. Die MML 238 ist in einer Ausführungsform dazu eingerichtet, um eine oder mehrere Adressenabbildungsstrukturen in einem nichtflüchtigen Speicher zu speichern. Beispiele für eine nichtflüchtige Speicherung umfassen, sind aber nicht beschränkt auf, RAM 216, ROM 218 und nichtflüchtige Speicherzellen in dem nichtflüchtigen Speicherchip 108.
  • Die Steuerung 122 kann mit einem oder mehreren Speicherchips 108 verbunden sein. In einer Ausführungsform implementieren der Controller und mehrere Speicherchips (die zusammen das Speichersystem 100 umfassen) ein Solid-State-Laufwerk (SSD), das eine Festplatte in einem Host emulieren, ersetzen oder an dessen Stelle als Network-Attached-Speichervorrichtung (NAS-Vorrichtung) usw. verwendet werden kann. Zusätzlich muss die SSD nicht dazu veranlasst werden, als eine Festplatte zu arbeiten.
  • 2C zeigt eine beispielhafte Struktur des Speicherzellenarrays 126. In einer Ausführungsform ist das Array von Speicherzellen in M Blöcke von Speicherzellen unterteilt. Der Block ist die Löscheinheit. Das heißt, jeder Block enthält die minimale Anzahl von Speicherzellen, die zusammen gelöscht werden. Jeder Block ist in der Regel in eine Anzahl von Seiten unterteilt. Eine Seite ist eine Programmiereinheit. Eine oder mehrere Seiten von Daten werden typischerweise in einer Reihe von Speicherzellen gespeichert. Eine Seite kann einen oder mehrere Sektoren speichern. Ein Sektor beinhaltet Benutzerdaten und Overhead-Daten. Overhead-Daten beinhalten typischerweise Paritätsbits eines Fehlerkorrekturcodes (ECC), die aus den Benutzerdaten des Sektors berechnet wurden. Ein Teil der Steuerung berechnet die ECC-Parität, wenn Daten in das Array programmiert werden, und prüft sie auch, wenn Daten aus dem Array gelesen werden. Alternativ werden die ECC- und/oder andere Overhead-Daten in anderen Seiten oder sogar anderen Blöcken gespeichert, als die Benutzerdaten, zu denen sie gehören. Es ist zu beachten, dass der Ausdruck „Löschblock“ hierin verwendet wird, um sich auf die minimale Anzahl von Speicherzellen zu beziehen, die zusammen gelöscht werden. Somit sind die Blöcke in 2C eine Ausführungsform von Löschblöcken. Ein Löschblock kann „Datenblöcke“ enthalten. In einigen Ausführungsformen wird ein Datenblock durch eine oder mehrere Seiten gebildet. Ein Datenblock kann eine zusammenhängende Gruppe von Speicherzellen umfassen.
  • 2C zeigt auch mehr Details des Blocks i des Speicherarrays 126. Block i beinhaltet X + 1 Bitleitungen und X + 1 NAND-Ketten. Block i beinhaltet auch 64 Daten-Wortleitungen (WL0 - WL63), 2 Dummy-Wortleitungen (WL-d0 und WL-d1), eine Drain-Side-Auswahlleitung (SGD) und eine Source-Side-Auswahlleitung (SGS). Ein Anschluss jeder NAND-Kette ist mit einer entsprechenden Bitleitung über ein Drain-Auswahlgate (verbunden mit Auswahlleitung SGD) verbunden, und ein anderer Anschluss ist mit der Sourceleitung über ein Source-Auswahlgate (verbunden mit Auswahlleitung SGS) verbunden. Da es vierundsechzig Daten-Wortleitungen und zwei Dummy-Wortleitungen gibt, beinhaltet jede NAND-Kette vierundsechzig Datenspeicherzellen und zwei Dummy-Speicherzellen. In anderen Ausführungsformen können die NAND-Ketten mehr oder weniger als 64 Datenspeicherzellen und mehr oder weniger Dummy-Speicherzellen aufweisen. Datenspeicherzellen können Benutzer- oder Systemdaten speichern. Dummy-Speicherzellen werden in der Regel nicht zum Speichern von Benutzer- oder Systemdaten verwendet. Einige Ausführungsformen beinhalten keine Dummy-Speicherzellen.
  • 3 ist ein Blockdiagramm, das eine Umsetzung einer Hauptsteuerung 130 gemäß einigen Ausführungsformen veranschaulicht. In einigen Ausführungsformen schließt die Hauptsteuerung 130 einen oder mehrere Prozessoren 300, manchmal CPUs genannt, oder Hardware-Prozessoren oder Mikrocontroller; eine Host-Schnittstelle 302 zum Koppeln der Hauptsteuerung 130 an ein oder mehrere Hostsysteme 115 (1A oder 1B); eine Busschnittstelle 304 zum Koppeln der Hauptsteuerung mit einem oder mehreren Kommunikationsbussen (z. B. Verbindungen 135, 1A oder 1B); den Speicher 306 (hierin gelegentlich als Steuerungsspeicher bezeichnet); und einen oder mehrere Kommunikationsbusse 308 zum Verbinden dieser Komponenten ein. Die Kommunikationsbusse 308 schließen gegebenenfalls Schaltlogik ein (manchmal als Chipsatz bezeichnet), die Systemkomponenten miteinander verbinden und die Kommunikation zwischen ihnen steuern.
  • Die Hauptsteuerung 130 erleichtert im Allgemeinen das Einlesen und Auslesen von Daten in den/aus dem nichtflüchtigen Speicher in den Speichervorrichtungen 120. Die Hauptsteuerung 130 tauscht über das Netzwerk 101 mit der Host-Schnittstelle 302 Daten mit dem Hostsystem 115 aus. In einigen Ausführungsformen kann die Hauptsteuerung 130 einen Redundanzcodierungs-Controller (z. B. einen RAID-Controller) zum Speichern und Zugreifen auf Daten in einem Array von Speichervorrichtungen (z. B. Speichervorrichtungen 120) einschließen. Die eine oder die mehreren Prozessoren 300 führen Module, Programme und/oder Befehle aus, die in dem Speicher 306 gespeichert sind und dadurch Verarbeitungsvorgänge ausführen können. In einigen Ausführungsformen werden der eine oder die mehreren Prozessoren 300 mit Speichervorrichtungen 120 durch Kommunikationsbusse 308 gekoppelt. In anderen Ausführungsformen erfolgt die Kopplung indirekt, beispielsweise über die Busschnittstelle 304, wie beispielsweise eine PCI-Express-basierte Busschnittstelle (z. B. NVMe). Weitere Busschnittstellen, einschließlich einer SATA- oder SAS-Busschnittstelle können ebenfalls verwendet werden.
  • Speicher 306 schließt Hochgeschwindigkeitsdirektzugriffsspeicher wie DRAM, SRAM, DDR RAM oder andere Festkörperspeicher mit direktem Zugriff ein und kann nichtflüchtige Speicher wie eine oder mehrere Magnetplattenspeichervorrichtungen, optische Plattenspeichervorrichtungen, Flash-Speichervorrichtungen oder andere nichtflüchtige Festkörperspeichervorrichtungen einschließen. Der Speicher 306 schließt gegebenenfalls ein oder mehrere Speichervorrichtungen ein, die entfernt von dem/den Prozessor(en) 300 angeordnet sind. Der Speicher 306, oder alternativ die nichtflüchtige(n) Speichervorrichtung(en) im Speicher 306, umfasst/umfassen ein nichtflüchtiges computerlesbares Speichermedium. In einigen Ausführungsformen speichert der Speicher 306, oder das computerlesbare Speichermedium von Speicher 306, die folgenden Programme, Module und Datenstrukturen oder eine Untergruppe oder eine Übermenge davon: Kommunikationsmodul 310, eine oder mehrere Hostbefehlswarteschlangen 330; Umsetzungstabelle(n) 340; RDMA-Engines 350; RDMA-Eingangswarteschlange 360 und RDMA-Ausgangswarteschlange 370; und/oder SSD-Pufferstatusinformationstabelle oder Datenstruktur 380. Einige dieser Engines/Module können in Hardware-Schaltungen und/oder einer Kombination aus Firmware/Software und Hardware-Schaltungen implementiert sein.
  • Das Kommunikations-Modul 310 kann zum Kommunizieren mit anderen Komponenten verwendet werden, wie zum Beispiel Speichervorrichtungen 120 und Host-Computersystemen 115. Das Bussteuermodul 315 kann zum Ausführen von Busprotokollen und zum Übertragen von Daten über Busse zwischen Komponenten verwendet werden.
  • Das Hostbefehl-Verarbeitungsmodul 320 kann Lese- und Schreibbefehle vom Hostsystem 115 empfangen, Speicherpuffer in Speichervorrichtungen zuweisen und die Hostbefehle in Speichervorrichtungsbefehle übersetzen, um Remote-DMA-Übertragungen von Daten entsprechend den Lese- und Schreibbefehlen zwischen Hostpuffern auf Hostsystemen 115 und Speicherpuffern auf verbundenen Speichervorrichtungen 120 zu erleichtern. Zur Erleichterung der Umsetzung der Hostbefehle kann das Hostbefehl-Verarbeitungsmodul 320 einen Hostbefehl an das SSD-Befehlsumsetzungsmodul 324 einschließen, das Host-Schreib- und Lesebefehle in Befehle umwandelt, die zur Ausführung durch die Speichervorrichtung 120 geeignet sind und gegebenenfalls die Virtualisierung der in die Hostbefehle eingebetteten Adressen erleichtert. Das Hostbefehl-Verarbeitungsmodul 320 kann ferner ein Hostbefehl-Ausführungsmodul 328 einschließen, das das Ausführen empfangener Hostbefehle erleichtert, beispielsweise durch Einrichten und Ausführen von Remote-DMA-Datenübertragungen und Senden übersetzter Speichervorrichtungsbefehle an jeweilige Speichervorrichtungen 120 zur Ausführung.
  • Die eine oder mehreren Host-Befehlswarteschlangen 330 können verwendet werden, um Befehle, die von Host 115 empfangen werden, sowie deren zugeordneten Umsetzungsbefehle zu verfolgen.
  • Die Umsetzungstabellen 340 können in einigen Ausführungsformen verwendet werden, um Adressen oder Namensräume in den empfangenen Hostbefehlen in Speichervorrichtungsidentifikatoren oder Speichervorrichtungsadressen zu übersetzen.
  • RDMA-Enginges 350 können in einigen Ausführungsformen verwendet werden, um Daten zwischen einem Hostpuffer und einem oder mehreren zugewiesenen Speicherpuffern zu übertragen, die mit einer oder mehreren Speichervorrichtungen 120 verbunden sind. Die RDMA-Enginges 350 verwenden in einigen Ausführungsformen übersetzte Befehle, Adressen und/oder Pufferzeiger, die mit übersetzten Befehlen verbunden sind, um RDMA-Vorgänge (Remote Direct Memory Access) auszuführen; jeder RDMA-Engine 350 überträgt, sobald er mit Zeigern auf Host- und Speichervorrichtungspuffer und einem Zähler oder einem anderen Indikator für die zu übertragenden Daten eingerichtet ist, Daten zwischen bestimmten Hostpuffern und Speicherpuffern unabhängig von dem einen oder den mehreren Prozessoren 300.
  • Die RDMA-Eingangswarteschlange 360 und die RDMA-Ausgangswarteschlange 370 können verwendet werden, um RDMA-Vorgänge zu erleichtern. Das Hostbefehl-Verarbeitungsmodul 320 und die RDMA-Engines 350 können die RDMA-Eingangswarteschlange 350 und die RDMA-Ausgangswarteschlange 370 verwenden, um gemäß einigen Ausführungsformen Lesevorgänge und Schreibvorgänge zu verfolgen, die noch nicht abgeschlossen sind.
  • Die SSD-Pufferstatusinformationstabelle oder Datenstruktur 380 kann verwendet werden, um die Zuweisung von Speicherpuffern in der Speichervorrichtung 120 zu erleichtern, das Hostbefehl-Verarbeitungsmodul 320 verwendet eine SSD- oder Speichervorrichtungs-Statusinformationstabelle oder Datenstruktur 380, um gemäß einigen Ausführungsformen zu verfolgen, welche Speicherpuffer zugewiesen wurden und welche zur Zuweisung verfügbar sind.
  • In einigen Ausführungsformen schließt der Speicher 306 der Hauptsteuerung 130 auch einen oder mehrere RDMA-Puffer 382 zum temporären Speichern von Daten oder Informationen, die zwischen einem Host und einem SSD oder einer Speichervorrichtung übertragen werden, ein.
  • Gegebenenfalls schließt der Speicher 306 der Hauptsteuerung 130 ferner ein Redundanzcodiermodul 136 zur Bestimmung der nichtflüchtige Speichervorrichtungen 120 ein, in die Daten und Paritätsinformationen für jeden gegebene Schreibbefehl oder Satz von Schreibbefehlen, zum Beispiel bei der Verwendung einer bestimmten Redundanzcodierebene (z. B. einer vorgegebenen RAID-Ebene wie RAID0 bis RAID6, RAID10, RAID01, und so weiter) gespeichert werden. In einigen Ausführungsformen arbeitet das Redundanzcodiermodul 136 in Verbindung mit einer Streifenabbildung 352 oder Streifenfunktion zum Bestimmen der bestimmten Speichervorrichtungen, in denen Daten und Parität gespeichert werden sollen, wenn eine spezifizierte Schreiboperation oder ein Satz von Schreiboperationen ausgeführt wird. In einigen Ausführungsformen liefert die Hauptsteuerung 130, wenn sie einen Paritätserzeugungsbefehl an eine bestimmte Speichervorrichtung 120 sendet, um Paritätsdaten für spezifizierte Daten zu erzeugen, dieser Speichervorrichtung auch eine Streifenabbildung oder eine andere Datenstruktur, so dass die Speichervorrichtung weiß, welche andere Speichervorrichtung die spezifizierten Daten zur Speicherung weiterleiten soll.
  • In einigen Ausführungsformen enthält der Speicher 306 der Hauptsteuerung 130 ferner ein Datenwiederherstellungsmodul 390 zum Wiederherstellen von Daten, wenn eine Speichervorrichtung 120 ausfällt, oder allgemeiner, wenn die Daten in einem Abschnitt eines Streifens nicht aus der Information gelesen werden können, die in der Speichervorrichtung 120 gespeichert ist, die diesen Abschnitt des Streifens speichert.
  • Jedes der vorstehend identifizierten Elemente kann in einem oder mehreren der vorstehend aufgeführten Speichervorrichtungen gespeichert sein, die zusammen den Speicher 306 bilden, und entspricht einem Satz von Anweisungen zum Ausführen einer vorstehend beschriebenen Funktion. Die vorstehend identifizierten Module oder Programme (d. h. Satz von Anweisungen) brauchen nicht als separate Softwareprogramme, Verfahren oder Module implementiert zu werden, und somit können verschiedene Teilgruppen dieser Module in verschiedenen Ausführungsformen kombiniert oder anderweitig anders angeordnet werden. In einigen Ausführungsformen kann der Speicher 306 eine Teilgruppe der vorstehend identifizierten Module und Datenstrukturen speichern. Darüber hinaus kann Speicher 306 zusätzliche vorstehend nicht beschriebene Module und Datenstrukturen speichern. In einigen Ausführungsformen stellen die in Speicher 306 oder dem computerlesbaren Speichermedium von Speicher 306 gespeicherten Programme, Module und Datenstrukturen Anweisungen für die Implementierung von entsprechenden Vorgängen in den nachstehend unter Bezugnahme auf 4, 6 und 8 beschriebenen Verfahren bereit.
  • Obwohl 3 die Hauptsteuerung 130 zeigt, ist 3 eher als Funktionsbeschreibung der verschiedenen Merkmale zu verstehen, die in der Hauptsteuerung vorhanden sein können, denn als Strukturschema der hierin beschriebenen Ausführungsformen. In der Praxis, und wie von Fachleuten anerkannt werden wird, könnten die getrennt dargestellten Elemente kombiniert und einzelne Elemente getrennt werden. Ferner werden, wie oben erwähnt, in einigen Ausführungsformen ein oder mehrere Module der Hauptsteuerung 130 durch ein oder mehrere Module des Host-Computersystems 115 oder als Teil einer Speichervorrichtung 120 umgesetzt.
  • 4 ist ein Blockdiagramm einer Ausführungsform eines Managersystems 400. Das Managersystem 400 ist in einer Ausführungsform Teil der Hauptsteuerung 130 in 1A. Das Managersystem 400 ist in einer anderen Ausführungsform Teil des Hosts 115 in 1B. Jedoch ist das Managersystem 400 nicht darauf beschränkt. Das Managersystem 400 schließt Datensammlungsmodul 402, Befehlsmodul 404, Kommunikationsschnittstelle 406, Redundanzcodiermodul 416, Datenaufbereitungsmodul 418, Laufwerkvirtualisierungslogik 408, Laufwerkvirtualisierungtabelle 410, Streifenabbildung 422 und Weiterleitungsabbildungszwischenspeicher 424 ein.
  • In einigen Ausführungsformen kann das Managersystem 400 Daten für Datensegmente in einem Redundanzcodierstreifen sammeln. Kurz bezugnehmend auf 5A wird ein Redundanzcodierstreifen 512 dargestellt. Der Redundanzcodierstreifen 512 enthält „m“ Datensegmente der Daten 504(0) bis 504(m-1). In einer Ausführungsform wird jedes Datensegment 504 in eine andere nichtflüchtige Speichervorrichtung 120 geschrieben. Ein oder mehrere der Datensegmente können einen Redundanzcode (z.B. Paritätsblock für den Streifen) enthalten. Die Daten für das Datensegment 504(0) werden durch die Datenblöcke 506(0) bis 506(n-1) dargestellt.
  • Jeder Datenblock 506 ist einer externen logischen Blockadresse (ELBA) zugeordnet. Zum Beispiel ist der Datenblock 506(0) ELBA 0 zugeordnet, Datenblock 506(1) ist ELBA 1 zugeordnet, und Datenblock 506(n-1)ist ELBA n-1 zugeordnet. Die ELBAs für ein Datensegment 504 können Zufallsadressen sein. Wie hierin definiert, werden Zufallsadressen nicht sequentiell geordnet. Mit anderen Worten, die Daten für einen gegebenen Datenblock können Zufallsdaten sein. Jedoch könnten die Daten in einem Datensegment sequentiell statt zufällig sein. Das heißt, die ELBAs 506 könnten sequentiell geordnet werden. Es ist möglich, dass für einige Datensegmente 504 die Daten zufällig sind und für andere Datensegmente die Daten sequentiell sind. Es ist möglich, dass innerhalb eines Datensegments 504 einige der Daten zufällig sind und einige sequentiell sind.
  • Wieder unter Bezugnahme auf 4 kann das Datensammelmodul 402 eingerichtet sein, um Daten für Datensegmente in einem Redundanzcodierstreifen zu sammeln. Das Befehlsmodul 404 kann eingerichtet sein, um einen Befehl zum Schreiben eines Datensegments eines Redundanzcodierstreifens in eine ausgewählte nichtflüchtige Speichervorrichtung 120 zu senden. Der Befehl kann anzeigen, dass das gesamte Datensegment in eine zusammenhängende Gruppe von Speicherzellen geschrieben werden soll, wie beispielsweise in einen gesamten Löschblock oder einen angrenzenden Abschnitt eines Löschblocks.
  • In einigen Ausführungsformen gibt die ausgewählte nichtflüchtige Speichervorrichtung 120 eine interne Adresse zurück, an der das Datensegment gespeichert wurde. Hierbei kann es sich darum handeln, was hierin als eine „feststehende interne Adresse“ bezeichnet wird. Wie vorstehend erläutert, kann die feste interne Adresse eine Adresse in einem Adressraum der nichtflüchtigen Speichervorrichtung 120 (im Gegensatz zu beispielsweise einer ELBA) sein. Wenn der Manager 400 später eine Anforderung zum Lesen eines Datensegments an der feststehenden internen Adresse sendet, gibt die ausgewählte nichtflüchtige Speichervorrichtung 120 darüber hinaus das von ihr gespeicherte Datensegment zurück, als sie die feststehende interne Adresse bereitgestellt hat, selbst wenn die ausgewählte nichtflüchtige Speichervorrichtung 120 die Daten physisch zu einer anderen Stelle in der ausgewählten nichtflüchtigen Speichervorrichtung 120 bewegt hat. Die Kommunikationsschnittstelle 406 kann eingerichtet sein, um die feststehende interne Adresse zu empfangen. Der Manager 400 kann die feststehende interne Adresse speichern, falls der Manager das Datensegment erhalten oder modifizieren möchte.
  • Das Redundanzcodiermodul 416 kann so eingerichtet sein, dass es Redundanzcodierstreifen zusammenfasst. Das Redundanzcodiermodul 416 speichert in einer Ausführungsform eine Streifenabbildung 422 in einem nichtflüchtigen Speicher. 5B stellt ein Beispiel für einen Eintrag 514 in einer Streifenabbildung 422 dar. Der Eintrag 514 enthält einen Redundanzstreifenidentifikator 515, der in diesem Fall „Streifen 1“ ist. Der Eintrag 514 enthält eine interne logische Blockadresse (ILBA) 516 für jedes Datensegment des Streifens (Streifen 1). Zum Beispiel ist ILBA 516(0) die interne Adresse für Datensegment 504(0), das auf der Speichervorrichtung 120(1) gespeichert ist. In einer Ausführungsform referenziert die ILBA den internen Löschblock der bestimmten Speichervorrichtung, in welche die Daten geschrieben wurden.
  • Das Datenwiederherstellungsmodul 418 kann eingerichtet sein, um ein Datensegment eines Redundanzcodierstreifens auf Grundlage eines anderen Datensegments des Redundanzcodierstreifens wiederherzustellen. In einer Ausführungsform greift das Datenwiederherstellungsmodul 418 auf eine dauerhafte Version einer weitergeleiteten Abbildung zu, die in einem nichtflüchtigen Speicher einer Speichervorrichtung 120 zur Unterstützung der Datenwiederherstellung gespeichert ist. Weitere Details werden nachstehend erläutert.
  • In einigen Ausführungsformen gibt es einen virtuellen Adressraum, der virtuelle Blockadressen (VBA) enthalten kann. Eine virtuelle Blockadresse weist in einer Ausführungsform eine ELBA und eine oder mehrere Laufwerkbits auf. In einer Ausführungsform enthält die Laufwerkvirtualisierungstabelle (DVT) 410 eine Abbildung von der VBA auf einer der Speichervorrichtungen 120. Wenn ein Schreibvorgang in eine VBA empfangen wird, kann das Laufwerkvirtualisierungsmodul 408 eine Speichervorrichtung 120 bestimmen, an die der Schreibvorgang gesendet werden soll. Das Laufwerkvirtualisierungsmodul 408 kann einen Eintrag in der DVT 410 erzeugen (oder aktualisieren), der die VBA mit einer eindeutigen Kennung für die Speichervorrichtung 120 verbindet. In einer Ausführungsform schließt die DVT 410 eine Adressabbildungstabelle ein, die von der VBA auf eine Speichervorrichtung abbildet. Es ist zu beachten, dass diese eindeutige Kennung nicht notwendigerweise die Laufwerkbits in der VBA sind. Eine Option besteht jedoch darin, einfach die Laufwerkbits in der VBA zu verwenden, um die zu schreibende Speichervorrichtung 120 zu identifizieren.
  • Der Weiterleitungsabbildungszwischenspeicher 424 kann eine Kopie eines Abschnitts der Weiterleitungsabbildung enthalten, die VBA auf die Streifenkennung (SID) abbildet. Die Weiterleitungsabbildung ist in einer Ausführungsform eine Tabelle von SID-Einträgen, die durch VBA indiziert und bei der Fehlerwiederherstellung verwendet wird, wie später erläutert wird. Zum Beispiel kann ein Lesevorgang an einer VBA einen Fehler zurückgeben, und die VBA, welche den Fehler auslöst, kann dann als ein Index zum Nachschlagen der SID in der Weiterleitungsabbildung verwendet werden, und somit kann der den Fehler aufweisende Streifen lokalisiert werden. Nach dem Lokalisieren des Streifens kann die Fehlerkorrektur mit Hilfe der Streifenabbildung, die später beschrieben werden soll, initiiert werden. Da die Weiterleitungsabbildung nur für die Fehlerbehandlung erforderlich ist, ist in einer Ausführungsform nur ein Teil davon zwischengespeichert.
  • In einigen Ausführungsformen können die Module 402, 404, 416 und/oder 418 in einem nichtflüchtigen Speicher (wie dem Speicher 306 in 3 oder dem Speicher 910 oder Arbeitsspeicher 940 in 9) gespeichert werden und können einem Satz von Anweisungen und Daten zum Durchführen einer oben beschriebenen Funktion entsprechen. Diese Anweisungen können auf einem Prozessor ausgeführt werden (z. B. CPU 300 in 3 oder Prozessor 990 in 9). Die vorstehend identifizierten Module oder Programme (z. B. Anweisungssätze) müssen nicht als separate Softwareprogramme, Verfahren oder Module implementiert werden, und somit können verschiedene Teilsätze dieser Module in verschiedenen Ausführungsformen kombiniert oder anderweitig anders angeordnet werden. In einigen Ausführungsformen stellen die Programme, Module und Datenstrukturen Anweisungen zum Implementieren entsprechender Vorgänge in den nachstehend unter Bezugnahme auf 6 und 8 beschriebenen Verfahren bereit.
  • Einige Ausführungsformen vermeiden die Notwendigkeit einer großen absturzsicheren Schreibserialisierungstabelle außerhalb der Speichervorrichtungen 120 innerhalb eines Speichersystems, wie zum Beispiel dem in 1A gezeigten Speichersystem 100. 5C stellt ein Beispiel eines herkömmlichen Systems mit einer umfangreichen Schreibserialisierungstabelle 524 außerhalb der Speichervorrichtung 120 dar. Die umfangreiche Schreibserialisierungstabelle 524 könnte sich beispielsweise in einem Hostsystem oder einer Hauptsteuerung eines Speichersystems befinden, das mit einem Hostsystem gekoppelt ist. Die Host-/Hauptsteuerung 520 weist eine Schreibserialisierungslogik 522 auf, die eingerichtet ist, um zufällige virtuelle Blockadressen (VBA) in serielle externe logische Blockadressen (LBA) zu serialisieren. Es ist zu beachten, dass VBA und ELBA für Schreibvorgänge bestimmt sind, die in den Speichervorrichtungen 120 durchgeführt werden sollen. Zum Beispiel können VBA, die zufällig über einen virtuellen Adressraum verteilt sind, der die Speichervorrichtungen 120 überspannt, aber für Schreibvorgänge, die zeitlich nacheinander auftreten, in eine Sequenz externer LBA umgewandelt werden. Die Sequenz von externen LBA kann zu den Speichervorrichtungen 120 gesendet werden. Die Schreibserialisierungslogik 502 speichert eine Abbildung von den VBA in die LBA in der Schreibserialisierungstabelle 504.
  • Es ist zu beachten, dass die Schreibserialisierungstabelle 524 in einem Speichersystem mit vielen Speichervorrichtungen extrem groß sein muss. Zum Beispiel kann eine herkömmliche Schreibserialisierungstabelle 524 fünf Bytes pro 4 KB benötigen, die in den nichtflüchtigen Speichervorrichtungen gespeichert sind (unter der Annahme einer Seitengröße von 4 KB). Wenn zum Beispiel die nichtflüchtigen Speichervorrichtungen eine Gesamtkapazität von 1 Petabyte (PB) aufweisen, kann die Schreibserialisierungstabelle 524 mehr als 1 Terabyte in Größe benötigen. Die Kosten zum Speichern der Schreibserialisierungstabelle 524 im DRAM in dem Host könnten extrem hoch sein.
  • Hierin offenbarte Ausführungsformen vermeiden die Notwendigkeit, über eine Schreibserialisierungstabelle 524 außerhalb der Speichervorrichtungen 120 zu verfügen. Stattdessen wird in einigen Ausführungsformen die der Schreibserialisierung zugeordnete Abbildung auf die Speichervorrichtungen 120 verlagert. 5D ist ein Blockdiagramm einer Ausführungsform einer Konfiguration einer Host-/Hauptsteuerung mit einer Vielzahl von nichtflüchtigen Speichervorrichtungen 120, die einen Bedarf nach einer Schreibserialisierungstabelle außerhalb der Speichervorrichtung 120 überflüssig macht. Wie gezeigt, führt der Manager 400 die Aufgabe der Schreibserialisierung durch, wobei eine Anzahl von VBAs (VBA-1, VBA-2, VB3, etc.) für Schreibvorgänge, die sequentiell rechtzeitig auszuführen sind, in einen Streifen 442 serialisiert wird. Der Manager kann einen lokalen Speicherpuffer (z. B. einen nichtflüchtigen Speicher) verwenden, um die in den Streifen zu schreibenden VBAs temporär zu speichern, während er aufgebaut wird. Der Streifen 442 muss schließlich in Speichervorrichtungen 120 geschrieben werden, wobei einzelne Datensegmente über die Vorrichtungen und jeweils an bestimmte externe LBAs dieser Vorrichtungen verteilt werden. Diese Aufgabe kann durch das Redundanzcodiermodul 416 durchgeführt werden, das vorstehend in 4 gezeigt wurde.
  • Anstelle eine umfangreiche Abbildung von VBAs auf externen LBAs wie in 5C gezeigt beizubehalten, nimmt der Manager 400 einen anderen Prozess an, um serialisierte Schreibvorgänge auszuführen und zu verfolgen. In dem Beispiel von VBA-1 wird VBA-1 einer Funktion 440 zugeführt, welche die externe LBA extrahiert, die an die Speichervorrichtung zum Schreiben der VBA-1 gesendet werden soll. Die Funktion zum Extrahieren der externen LBA von der VBA kann auf verschiedene Arten implementiert werden und kann eine Bitauswahl oder eine Hashfunktion einschließen. Der gleichen VBA-1 Adresse wird durch den Schreibserialisierungsprozess auch eine Vorrichtungskennung zugewiesen, um sicherzustellen, dass Schreibvorgänge für den Streifen gegebenenfalls über die Speichervorrichtungen verteilt werden. Somit kann eine weitere VBA in dem Streifen zugewiesen werden, um auf eine andere Vorrichtung geschrieben zu werden, daher eine andere Vorrichtungskennung.
  • In diesem Fall nehmen wir an, dass VBA-1 der Vorrichtungskennung für Speichervorrichtung 120-1 zugeordnet ist. Die DVT, welche VBA als einen Index auf Einträge der Vorrichtungskennung verwendet, wird somit aktualisiert, um diese Paarung VBA-Vorrichtungskennung wiederzugeben, und nun haben mit (1) der die Speichervorrichtung 120-1 identifizierende Vorrichtungskennung und (2) der aus VBA-1 extrahierten externen LBA die Daten für VBA-1 ein vollständiges Schreibziel und können zum Schreiben an die Speichervorrichtung 120-1 gesendet werden. Der Manager 400 kann auf diese Weise Schreibanforderungen an die Speichervorrichtungen 120 für alle Datensegmente in dem Streifen einschließlich jedes berechneten Paritätsblocks senden. Um später dieselbe VBA-1 zu lesen, wird ein einfaches Nachschlagen in der DVT die zugewiesene Vorrichtungskennung ergeben, die zusammen mit der aus VBA-1 extrahierten LBA den Zugriff auf die gleichen Daten ermöglicht.
  • Zusätzlich zu der DVT 410 wird auch die Weiterleitungsabbildung 534 als Teil des Schreibprozesses aktualisiert, um wiederzugeben, dass VBA-1 zu dem Streifen gehört, der wiederhergestellt wird. Es ist zu beachten, dass eine oder mehrere der Speichervorrichtungen 120 eine Kopie der Weiterleitungsabbildung 534 speichern können. Jedoch ist es nicht für alle Speichervorrichtungen 120 erforderlich, eine Kopie der Weiterleitungsabbildung 534 zu speichern. In einer Ausführungsform speichern zwei Speichervorrichtungen 120 eine Kopie der Weiterleitungsabbildung 534. In einer Ausführungsform wird die Weiterleitungsabbildung 534 in einem nichtflüchtigen Speicher (z. B. in Speicherzellen in dem Array 126) auf der nichtflüchtigen Speichervorrichtung 120 gespeichert. Daher ist es nicht erforderlich, die gesamte Weiterleitungsabbildung 534 im DRAM des Managers 400 oder der Speichervorrichtung 120 zu speichern. Die Weiterleitungsabbildung 534 kann auf verschiedene Arten einschließlich einer Adressumsetzungstabelle, eines B-Baums oder eines protokollstrukturierten Zusammenführungsbaums implementiert werden, ist aber nicht darauf beschränkt.
  • Wie oben angemerkt, wird in einer Ausführungsform ein Abschnitt der Weiterleitungsabbildung 534 in einem lokalen Speicher des Managers 400 zwischengespeichert 424. In diesem Beispiel wird der SID-(Streifenkennungs)-Eintragsschlitz entsprechend dem VBA-1-Index aktualisiert, um den dem Streifen 442, der aufgebaut wird, zugeordneten SID-Wert zu enthalten. Gleichermaßen werden die Schlitze, die durch andere VBAs in dem Streifen indiziert werden, z. B. VBA-2 und VBA-3, auch der SID für den Streifen 442 zugewiesen.
  • Eine Sequenz der Schreibanforderungen weist externe LBAs auf, die zufällig sein können. Zum Beispiel kann eine Sequenz der externen LBAs beliebig in einem Adressraum des Hosts sowie anderer Speichervorrichtungen verteilt sein. Das Adressenabbildungsmodul 150 in einer Speichervorrichtung 120 (beispielhafte Vorrichtung 120-1 wie gezeigt) sequenzialisiert in einer Ausführungsform beliebig verteilte externe LBAs. In einer Ausführungsform ist das Abbildungsmodul 150 zur Abbildung von beliebigen externen LBAs in den Schreibanforderungen von Manager 400 eingerichtet, die zeitlich nacheinander an aufeinander folgenden internen Adressen (z. B. internen Blockadressen (BAs) empfangen werden. In einer Ausführungsform ist das Abbildungsmodul 150 eingerichtet, um beliebige externe LBAs in den Schreibanforderungen abzubilden, um ein Datensegment an aufeinander folgende interne Adressen (z. B. interne Blockadressen (BA)) zu schreiben. In einer Ausführungsform ist das Abbildungsmodul 150 eingerichtet, um beliebige externe LBAs in den Schreibanforderungen abzubilden, die zeitlich nacheinander an physisch angrenzenden Orten in der Speichervorrichtung 120 empfangen werden. In einer Ausführungsform ist das Abbildungsmodul 150 eingerichtet, um beliebige externe LBAs in einer Schreibanforderung abzubilden, um ein Datensegment an physisch angrenzende Orte in der Speichervorrichtung 120 zu schreiben. In einer Ausführungsform sind die sequentiellen internen Adressen innerhalb des gleichen Löschblocks. Die sequentiellen internen Adressen sind in einer Ausführungsform physische Adressen. Die sequentiellen internen Adressen sind in einer Ausführungsform interne logische Adressen. Das Adressenabbildungsmodul 150 kann eingerichtet sein, um die Abbildung von beliebigen externen LBAs auf sequentielle interne LBAs in dem Adressenabbildungsspeicher 550 zu speichern.
  • Die Schreiblogik 552 kann eingerichtet sein, um die zufälligen Schreibvorgänge in einen angrenzenden Bereich (wie dem gesamten oder einem Abschnitt eines Löschblocks) zu schreiben. Es ist zu beachten, dass die Schreiblogik 552 in Kombination mit dem Adressenabbildungsmodul 150 fungieren kann, so dass die zufälligen Schreibvorgänge seriell in dem Löschblock geschrieben werden. Ein serielles Schreiben bedeutet in diesem Zusammenhang, dass Datenblöcke innerhalb des Löschblocks in der Reihenfolge ihrer physikalischen Adressen geschrieben werden. Die Schreiblogik 552 kann durch verschiedene Elemente implementiert werden, einschließlich, aber nicht beschränkt auf, eine oder mehrere von Zustandsmaschine 112, On-Chip-Adressdecodierer 114, Leistungssteuerung 116, Lese-/Schreibschaltungen 128, Decodierer 124, 132.
  • In einigen Ausführungsformen ist die Schreiblogik 552 eingerichtet, um ein Datensegment, das in einem ersten angrenzenden Bereich (z. B. ersten Löschblock) gespeichert ist, in einen zweiten angrenzenden Bereich (z. B. zweiten Löschblock) in der nichtflüchtigen Speichervorrichtung 120 zu bewegen. Diese Bewegung kann aus einer Vielzahl von Gründen erfolgen, einschließlich, aber nicht beschränkt auf, Abnutzungsausgleich. Das Datensegment kann dieselbe interne logische Adresse (z. B. ILBA) vor und nach der Bewegung aufweisen. Das Adressenabbildungsmodul 150 kann eingerichtet sein, um in dem Adressenabbildungsspeicher 550 eine Abbildung der internen logischen Adresse von dem ersten angrenzenden Bereich auf den zweiten angrenzenden Bereich zu aktualisieren. Zum Beispiel könnte die Abbildung der internen logischen Adresse von dem ersten Löschblock (oder einer anderen Einheit) auf den zweiten Löschblock (oder eine andere Einheit) geändert werden. Es ist zu beachten, dass das Beibehalten der internen logischen Adresse nach der Bewegung ein Beispiel für eine „feststehende interne Adresse“ ist.
  • Das interne Adressenbereitstellungsmodul 554 der Speichervorrichtung 120 ist eingerichtet, um in einer Ausführungsform eine interne Adresse bereitzustellen, an der das Datensegment geschrieben wurde. In einer Ausführungsform ist die interne Adresse eine feststehende interne Adresse, was bedeutet, dass der Manager 400 unter Verwendung der internen Adresse auf das Datensegment mit den geschriebenen Daten zugreifen kann, unabhängig von der internen Datenbewegung, die durch die Speichervorrichtung 120 ausgeführt werden kann. Diese interne Adresse könnte dem Manager 400 bereitgestellt werden, um die Streifenabbildung 422 zu aktualisieren. In diesem Fall würde der Eintrag, der durch die der Streifenabbildung 422 zugewiesene SID indiziert wurde, aktualisiert werden, um wiederzugeben, dass ein erstes Datensegment von Streifen 422 an der internen Adresse, die durch die Speichervorrichtung 120 zurückgegeben wurde, geschrieben wurde. In einer Ausführungsform referenziert die zurückgegebene interne Adresse den Löschblock, an der VBA-1 geschrieben wurde. Die Streifenabbildung, wie später weiter erläutert, wird eine Fehlerbehandlung erleichtern, da der Manager 400 Zugriff auf die Datenblöcke eines Streifens hat, falls eine Störung der Vorrichtung auftritt. Zusätzlich ermöglicht die Streifenabbildung auch, dass der Manager 400 die Speicherbereinigung in einer koordinierten Weise unter den Speichervorrichtungen 120 initiieren kann, da der Manager 400 nun sehen kann, welche Löschblöcke auf einer Pro-Streifenebene involviert sind. Gültige Daten aus Löschblöcken können dann in Bezug auf den Streifen, zu dem sie gehören, als Ausschussdaten gesammelt werden.
  • Eine oder mehrere der nichtflüchtigen Speichervorrichtungen 120 können eine Kopie der Streifenabbildung 422 speichern, die durch den Manager 400 bereitgestellt werden kann. In einer Ausführungsform wird eine Kopie der Streifenabbildung 422 in einem nichtflüchtigen Speicher (z. B. in Speicherzellen in dem Array 126) auf der nichtflüchtigen Speichervorrichtung 120 gespeichert. Daher kann die Kopie der Streifenabbildung 422 auf dem Manager 400, wenn sie verloren geht, aus der nichtflüchtigen Speichervorrichtung 120 abgerufen werden.
  • Eine oder mehrere der nichtflüchtigen Speichervorrichtungen 120 können eine Kopie der DVT 410 speichern, die durch den Manager 400 bereitgestellt werden kann. In einer Ausführungsform ist eine Kopie der DVT 410 in einem nichtflüchtigen Speicher (z. B. in Speicherzellen in dem Array 126) auf der nichtflüchtigen Speichervorrichtung 120 gespeichert. Daher kann die Kopie der DVT 410 auf dem Manager 400, wenn sie verloren geht, aus der nichtflüchtigen Speichervorrichtung 120 abgerufen werden.
  • 6 ist ein Flussdiagramm einer Ausführungsform eines Prozesses 600 zum Betreiben eines nichtflüchtigen Speichersystems. Der Prozess 600 kann in dem System 102 von 1A oder 104 von 1B ausgeführt werden, ist aber nicht darauf beschränkt. Einige der Schritte des Prozesses 600 können durch das Managersystem 400 ausgeführt werden, wie in Verbindung mit verschiedenen Schritten erörtert werden wird. Einige der Schritte des Prozesses 600 können in einer nichtflüchtigen Speichervorrichtung 120 ausgeführt werden, wie in Zusammenhang mit verschiedenen Schritten erörtert werden wird.
  • Schritt 602 schließt den Manager 400 ein, der Daten für ein Datensegment in einem Redundanzcodierstreifen sammelt. Diese Daten können alle zufälligen Daten, alle sequentiellen Daten oder eine Kombination aus zufälligen und sequentiellen Daten sein. In mindestens einigen Fällen sind die Daten alle Zufallsdaten. In einer Ausführungsform erfolgt Schritt 602 durch das Datensammelmodul 402.
  • Schritt 604 schließt den Manager 400 ein, der einen Befehl sendet, damit das Datensegment in eine ausgewählte nichtflüchtige Speichervorrichtung 120 geschrieben wird. In einer Ausführungsform weist der Befehl die nichtflüchtige Speichervorrichtung 120 an, das gesamte Datensegment in einen angrenzenden Bereich zu schreiben. In einer Ausführungsform weist der Befehl die nichtflüchtige Speichervorrichtung 120 an, das gesamte Datensegment in einen Löschblock zu schreiben. In einer Ausführungsform hat das Datensegment die Größe eines Löschblocks. Jedoch könnte das Datensegment kleiner als ein Löschblock sein. Das Datensegment könnte auch größer als ein Löschblock sein. In einer Ausführungsform erfolgt Schritt 604 durch das Befehlsmodul 404.
  • Schritt 606 schließt die ausgewählte nichtflüchtige Speichervorrichtung 120 ein, die den Befehl zum Schreiben des Datensegments empfängt. In einer Ausführungsform empfängt eine Host-Schnittstelle 220 im Frontend-Modul (siehe 2B) den Befehl.
  • Schritt 608 schließt die ausgewählte nichtflüchtige Speichervorrichtung 120 ein, die das Datensegment schreibt. In einer Ausführungsform schreibt die ausgewählte nichtflüchtige Speichervorrichtung 120 das gesamte Datensegment innerhalb eines Löschblocks. Das Datensegment kann den Löschblock vollständig füllen, aber dies ist nicht erforderlich. In einigen Fällen kann das Datensegment im Wesentlichen den Löschblock füllen. In einer Ausführungsform schreibt die ausgewählte nichtflüchtige Speichervorrichtung 120 das gesamte Datensegment in eine zusammenhängende Gruppe nichtflüchtiger Speicherzellen. Die zusammenhängende Gruppe nichtflüchtiger Speicherzellen weist in einer Ausführungsform einen zusammenhängenden Bereich physischer Adressen auf. In einer Ausführungsform führt Schreiblogik 552 Schritt 608 durch.
  • Schritt 610 schließt die ausgewählte nichtflüchtige Speichervorrichtung 120 ein, die eine interne Adresse bereitstellt, an der das Datensegment geschrieben wurde. In einer Ausführungsform ist dies eine Adresse eines Löschblocks. Dies könnte die vorliegende physische Adresse des Löschblocks sein, muss es aber nicht sein. In einer Ausführungsform ist dies ist eine logische Adresse des Löschblocks. In einer Ausführungsform führt das interne Adressenbereitstellungsmodul 554 Schritt 610 aus.
  • 7 stellt ferner Details einer Ausführungsform von physischen und logischen Adressen von Löschblöcken bereit. Es ist zu beachten, dass die interne Adresse nicht notwendigerweise die Adresse eines Löschblocks ist. Zum Beispiel könnte die interne Adresse auf einem Offset innerhalb eines Löschblocks basieren. Offsets innerhalb von Löschblöcken werden auch in Verbindung mit 7 erläutert. Es ist zu beachten, dass die interne Adresse eine feststehende interne Adresse sein kann.
  • Kehren wir wieder zu der Diskussion des Prozesses 600 zurück: Schritt 612 ist eine Bestimmung, ob der Redundanzstreifen gefüllt ist. Hierbei bedeutet ein voller Streifen voll mit Daten, ausschließlich des Redundanzcodes (z. B. Parität). Das nächste Mal beim Ablauf des Prozesses 600 kann der Manager 400 eine andere nichtflüchtige Speichervorrichtung 120 auswählen, um die Daten dorthin zu schreiben. Wenn der Streifen voll ist (mit Ausnahme des Redundanzcodes), dann kann der Manager 400 den Redundanzcode in Schritt 614 berechnen. Schritte 614-610 können wiederholt werden, um das Redundanzcodedatensegment an einer der nichtflüchtigen Speichervorrichtungen 120 zu speichern. Es ist zu beachten, dass es mehr als ein Redundanzcodedatensegment (gespeichert in mehr als einer nichtflüchtigen Speichervorrichtung) geben könnte. In einer Ausführungsform führt Redundanzcodiermodul 416 Schritt 612 durch.
  • Schritt 618 schließt das Speichern von Redundanzinformationen in einer Streifenabbildung 422 ein. Schritt 618 kann auf den internen Adressen basieren, an denen die Datensegmente geschrieben wurden. 5B stellt einen beispielhaften Eintrag für eine Streifenabbildung 422 dar. Wenn die SID „12“ ist, dann kann „12“ in den Redundanzstreifenidentifikator 515 geschrieben werden. Die beispielhafte Streifenabbildung ist mit dem beispielhaften Redundanzstreifen 502 in 5A konsistent. In diesem Beispiel gibt es eine interne Adresse 516 für jedes Datensegment. Beispielsweise ist die interne Adresse 516(0) für Datensegment 504 (0), die interne Adresse 516(1) ist für Datensegment 504(1) und die interne Adresse 516(m-1) ist für Datensegment 504(m-1). Die internen Adressen 516 nehmen auf diejenige Bezug, die von den Speichervorrichtungen in Schritt 610 zurückgegeben werden. In einer Ausführungsform führt Redundanzcodiermodul 416 Schritt 618 durch.
  • Schritt 620 aktualisiert die Weiterleitungsabbildung 534. Unter Verwendung der aktuellen VBA wie in dem Index wird in einer Ausführungsform der SID-Wert in den durch die VBA indizierten Schlitz geschrieben. Wenn zum Beispiel die aktuelle SID „12“ ist und zwei VBAs, VBA „1“ und VBA „10“ in dem Streifen sind, dann wird der Wert „12“ in den durch VBA „1“ indizierten Schlitz und auch in den durch VBA „10“ indizierten Schlitz geschrieben. In Schritt 620 kann der Weiterleitungsabbildungszwischenspeicher 424 auf Manager 400 aktualisiert werden. Auch die dauerhaften Kopien der Weiterleitungsabbildung 534 auf die Speichervorrichtungen 120 können durch den Manager 400 aktualisiert werden, indem sie direkt in die entsprechende Speichervorrichtung 120 geschrieben werden. Wie oben erwähnt, können die Kopien der Weiterleitungsabbildung 534 auf den Speichervorrichtungen 120 in einem nichtflüchtigen Speicher wie dem Array 126 gespeichert werden.
  • 7 zeigt eine Ausführungsform eines nichtflüchtigen Speichersystems 700. Das System 700 weist einen Manager 400 und eine Reihe von nichtflüchtigen Speichervorrichtungen 120-1 bis 120-m auf. In einer Ausführungsform macht das nichtflüchtige Speichersystem 700 die Notwendigkeit einer umfangreichen Schreibserialisierungstabelle außerhalb der Speichervorrichtungen 120 überflüssig. Im Allgemeinen kann der Manager 400 mit einer virtuelle Blockadresse (VBA) 720, die beispielsweise von einer Softwareanwendung empfangen wurde, beginnen (nicht dargestellt in 7). Die VBA 720 schließt in diesem Beispiel eine externen LBA 722 und Laufwerkbits 724 ein. Die Laufwerkbits 724 sind ein oder mehrere Bits, die zusätzlich zu der externen LBA 722 vorhanden sind. Der Manager 400 kann die externe LBA an eine der Speichervorrichtungen 120 weiterleiten, wie nachstehend ausführlicher erläutert wird. Die Laufwerkbits zeigen jedoch nicht notwendigerweise auf eine der Speichervorrichtungen 120. Ein möglicher Grund dafür besteht darin, dass der Manager 400 Ausgleichsschreibvorgänge über die Speichervorrichtungen 120 hinweg laden kann. Ein anderer möglicher Grund ist, dass der Manager 400 Speichervorrichtungen auswählen kann, um darauf zur Bildung von Redundanzstreifen zu schreiben. Es ist zu beachten, dass die Adressen in 7 als „Block“-Adressen zum Zweck der Veranschaulichung bezeichnet werden. Ein Block kann eine beliebige Größe aufweisen. In einer Ausführungsform spezifiziert der Manager 400 die Blockgröße für Schreib- und/oder Lesevorgänge.
  • In einer Ausführungsform enthält die Laufwerkvirtualisierungstabelle 410 eine Abbildung von der VBA 720 zu einer der Speichervorrichtungen 120. Wenn ein Schreibvorgang in eine VBA empfangen wird, kann das Laufwerkvirtualisierungsmodul 408 eine Speichervorrichtung 120 bestimmen, an die der Schreibvorgang gesendet werden soll. Das Laufwerkvirtualisierungsmodul 408 kann einen Eintrag in der Laufwerkvirtualisierungsdatenstruktur 410 erzeugen (oder aktualisieren), der die VBA mit einer eindeutigen Kennung für die Speichervorrichtung 120 verbindet. In einer Ausführungsform schließt die Laufwerkvirtualisierungsdatenstruktur 410 eine Adressabbildungstabelle ein, die von der VBA zur Adresse einer Speichervorrichtung abbildet. Es ist zu beachten, dass diese eindeutige Kennung nicht notwendigerweise die Laufwerkbits in der VBA sind. Eine Option besteht jedoch darin, einfach die Laufwerkbits in der VBA zu verwenden, um die zu schreibende Speichervorrichtung 120 zu identifizieren.
  • In einer Ausführungsform weist jede Speichervorrichtung 120 ein Adressenabbildungsmodul 150, eine Abbildungsstruktur 750 von der externen LBA (ELBA) auf die interne LBA (ILBA), eine Löschblockvirtualisierungsstruktur 702 und eine Anzahl von Löschblöcken 714-1 bis 714-m auf. Pfeil 705 stellt eine Abbildung von der internen logischen Adresse auf eine physische Adresse dar. Pfeil 707 stellt eine Abbildung von der internen logischen Adresse auf eine physische Adresse dar. Die Löschblockvirtualisierungsstruktur 702 ist nicht erforderlich. Daher geht in einer Ausführungsform die Abbildung direkt von einer externen logischen Adresse auf eine physische Adresse.
  • Die ELBA zu ILBA Abbildungsstruktur 750 kann eine Tabelle, eine B-Baumstruktur, usw. einschließen. Die Löschblockvirtualisierungsstruktur 702 könnte eine Tabelle, eine B-Baumstruktur usw. einschließen. Solche Abbildungsstrukturen 702, 750 können in einem nichtflüchtigen Speicher in einer nichtflüchtigen Speichervorrichtung 120 gespeichert werden. Die Abbildungsstrukturen 702, 750 können in einem flüchtigen oder nichtflüchtigen Speicher gespeichert werden. Es ist zu beachten, dass die Speichervorrichtungen 120 ein gemeinsames internes Adressierungsschema verwenden können.
  • In einer Ausführungsform enthält jeder Löschblock eine Gruppe von nichtflüchtigen Speicherzellen, die als eine Einheit gelöscht werden. Ein Löschblock ist in einer Ausführungsform die kleinste Einheit von Speicherzellen, die gelöscht wird. Jeder der Löschblöcke 714 weist eine Anzahl von Datenblöcken 706-1 bis 706-m auf. In einer Ausführungsform von Schritt 608 schreibt die Speichervorrichtung 120 Einheiten (z. B. Blöcke) des Datensegments in einer sequenziellen Reihenfolge auf Datenblöcke. Zum Beispiel werden die Datenblöcke 706 in einer Ausführungsform in der Reihenfolge ihrer physischen Adressen geschrieben. In einer Ausführungsform wird die Größe der Datenblöcke 706 durch den Manager 400 festgelegt. Zum Beispiel kann der Host 115 die Menge der zu schreibenden oder zu lesenden Daten für eine gegebene ELBA angeben.
  • Die Löschblockvirtualisierungsdatenstruktur 702 weist die Einträge 704-1 bis 704-n auf, von denen jeder auf einen Löschblock 714 deutet. Der Pfeil aus Eintrag 704-2 zu dem Löschblock 714-2 in Speichervorrichtung 120-2 stellt einen derartigen Zeiger dar. Jeder der Einträge 704 weist in einer Ausführungsform Offsets auf. 7A zeigt weitere Einzelheiten des Eintrags 704-2, die die Offsets 716-1 bis 716-m zeigen. Jedes Offset 716 verweist auf einen der Datenblöcke 706-1 bis 706-m im Löschblock 714-2. Es ist zu beachten, dass der Eintrag 704-2 veranlasst werden könnte, auf einen anderen physischen Löschblock 714 zu zeigen, wobei sich in diesem Fall dann die Offsets 716 auf die Datenblöcke 706 in dem neuen Löschblock 714 beziehen.
  • In einer Ausführungsform ist eine ILBA ein spezifischer Eintrag und in der Löschblockvirtualisierungsdatenstruktur 702 abgesetzt. Jeder der Offsets in der Löschblockvirtualisierungsdatenstruktur 702 kann auf einen bestimmten Datenblock 706 verweisen. Jeder Datenblock 706 kann eine physische Blockadresse (PBA) aufweisen. Somit kann sich jede ILBA auf eine spezifische PBA beziehen. In dem Fall, dass die Speichervorrichtung 120 die Daten in einem Datenblock 706 zu einem anderen Datenblock bewegt, kann das Adressenabbildungsmodul 150 ILBA aktualisieren.
  • Es ist zu beachten, dass in einigen Ausführungsformen Daten für eine VBA 720 von der Speichervorrichtung 120 durch die Speichervorrichtung 120 unter Verwendung des Adressenabbildungsmoduls 150, der Abbildungsstruktur 750 und der Löschblockvirtualisierungsstruktur 702 gelesen werden. Zum Beispiel kann der Manager 400 mit einer VBA 720 beginnen und eine externe LBA 722 extrahieren. Wie aus der Erläuterung von 5D bekannt, kann der Manager 400 die VBA 720 zum Nachschlagen der Vorrichtungskennung in der DVT 410 verwenden. Somit kann der Manager 400 die ELBA 722 an die richtige Speichervorrichtung 120 senden, welche die Daten für die VBA 720 speichert. Sobald die Speichervorrichtung 120 die ELBA 722 empfängt, kann die Speichervorrichtung 120 das Adressenabbildungsmodul 150, die Abbildungsstruktur 750 und die Löschblockvirtualisierungsstruktur 702 verwenden, um die Daten für die ELBA 722 zu lokalisieren. Es ist zu beachten, dass in einigen Ausführungsformen eine Kopie der Abbildungsstruktur 750 und der Löschblockvirtualisierungsstruktur 702 im RAM 122b auf der Steuerung 122 gehalten werden. Es ist auch zu beachten, dass es nicht erforderlich ist, die Weiterleitungsabbildung 534 für einen normalen Lesevorgang zu verwenden. Dadurch wird in einigen Ausführungsformen ermöglicht, dass die Weiterleitungsabbildung 534 in der Speicherstruktur 126 beibehalten wird, wodurch ein Abschnitt des RAM 122b frei gemacht wird. In einigen Ausführungsformen wird die Weiterleitungsabbildung 534 bei der Wiederherstellung von Daten verwendet. 8 weist weitere Details von Ausführungsformen bei der Verwendung der Weiterleitungsabbildung 534 bei der Datenwiederherstellung auf.
  • 7B stellt ein Beispiel von Redundanzstreifen auf der Grundlage von Einträgen in einer Ausführungsform einer Löschblockvirtualisierungsdatenstruktur 702 dar. Eine Reihe von Redundanzstreifen 710-1 bis 710-n ist dargestellt. Jeder Redundanzstreifen 710 wird aus einem Datensegment auf jeder nichtflüchtigen Speichervorrichtung 120-1, 120-2, 120-m gebildet. In diesem Beispiel gibt es drei nichtflüchtige Speichervorrichtungen 120, aber es könnte mehr oder weniger geben. Redundanzstreifen 710-1 wird basierend auf Eintrag 704-1 auf Speichervorrichtung 120-1, auf Eintrag 704-27 auf Speichervorrichtung 120-2 und auf Eintrag 704-7 auf Speichervorrichtung 120-m gebildet. In einer Ausführungsform sind die Einträge 704 die internen Adressen, die von den Speichervorrichtungen 120 in Schritt 610 von Prozess 600 bereitgestellt werden. Daher speichert in einer Ausführungsform der Manager 400 diese Einträge in einer Streifenabbildung 422. 7A zeigt zwei andere beispielhafte Redundanzstreifen 710. Redundanzstreifen 710-2 wird basierend auf Eintrag 704-2 auf Speichervorrichtung 120-1, auf Eintrag 704-11auf Speichervorrichtung 120-2 und auf Eintrag 704-29 auf Speichervorrichtung 120-m gebildet. Redundanzstreifen 710-n wird basierend auf Eintrag 704-n auf Speichervorrichtung 120-1, auf Eintrag 704-36 auf Speichervorrichtung 120-2 und auf Eintrag 704-87 auf Speichervorrichtung 120-m gebildet. Jeder der Einträge 704 zeigt in einer Ausführungsform auf einen Löschblock. In diesem Beispiel weist jedes Datensegment die Größe eines Löschblocks auf. Jedoch könnte ein Datensegment größer oder kleiner als die Größe eines Löschblocks sein.
  • 7C stellt eine Ausführungsform dar, bei der jedes Datensegment eines Redundanzstreifens 710 ein einzelner Datenblock 706 ist. 7C stellt einen Abschnitt einer Löschblockvirtualisierungsdatenstruktur 702 auf drei unterschiedlichen Vorrichtungen 120-1, 120-2 und 120-m dar. Insbesondere ist für jede Speichervorrichtung ein Eintrag 704 dargestellt. Eintrag 704-2-1 wird für Speichervorrichtung 120-1 dargestellt, Eintrag 704-2-2 wird für Speichervorrichtung 120-3 dargestellt und Eintrag 704-2-m wird für Speichervorrichtung 120-m dargestellt. Es wird in Erinnerung gerufen, dass in einer Ausführungsform jeder Eintrag 704 auf einen Löschblock 714 zeigt. Mehrere Offsets 716 sind in jedem Eintrag 704 dargestellt. Es wird in Erinnerung gerufen, dass in 7A jede Verschiebung 716 auf einen Datenblock 706 zeigen kann.
  • 7C zeigt den Redundanzcodierstreifen 710-2-1, der aus dem Offset 716-1 des Eintrags 704-2-1 auf Speichervorrichtung 120-1, aus dem Offset 716-20 des Eintrags 704-2-2 auf Speichervorrichtung 120-1 und aus dem Offset 716-33 des Eintrags 704-2-m auf Speichervorrichtung 120-m gebildet wurde. Somit wird in diesem Beispiel der Redundanzcodierstreifen 710-2-1 aus unterschiedlichen Offsets in den Eintrag gebildet. Dies bedeutet, dass der Redundanzcodierstreifen 710 aus unterschiedlichen physischen Standorten in den Löschblöcken 714 gebildet werden kann. Es ist jedoch auch möglich, dass die Verschiebung 716 für einen gegebenen Redundanzcodierstreifen 710 die gleiche auf jeder Speichervorrichtung 120 ist.
  • In einer Ausführungsform, bei der eine Speichervorrichtung 120 zum Schreiben eines Datenblocks in Prozess 600 angefordert wird, gibt die Speichervorrichtung 120 eine Adresse zurück, die einem Offset 716 in einem Eintrag 704 entspricht. Zum Beispiel kann die Speichervorrichtung 120 eine ILBA zurückgeben (wobei die ILBA nicht erforderlich ist, um auf den Anfang eines Löschblocks 714 zu zeigen). Dadurch kann der Manager 400 eine Streifenabbildung 422 mit der Granularität eines Datenblocks 706 zusammensetzen. Es ist zu beachten, dass, wenn die Speichervorrichtung 120 das Datensegment, das ursprünglich in dem Datenblock (eigenständig) gespeichert wurde, bewegen sollte, die Speichervorrichtung 120 die Abbildung in der Löschblockvirtualisierungsdatenstruktur 702 derart aktualisieren kann, dass die interne Adresse, die es zurückgegeben hat, nun darauf zeigen wird, wohin das Datensegment bewegt worden ist. Diese Bewegung könnte zu einem anderen Löschblock 714 oder zu einem anderen Datenblock 706 innerhalb eines Löschblocks 714 erfolgen.
  • 7D ist ein weiteres Beispiel von Redundanzcodierstreifen 710. In diesem Beispiel weist jeder Redundanzcodierstreifen 710 ein Datensegment in der Größe von vier Datenblöcken 706 auf (aufgrund der Entsprechung zwischen den Offsets 716 und Datenblöcken 706, wie in 7A dargestellt). Zum Beispiel könnten die Offsets 716-1, 716-2, 716-3 und 716-4 ein Datensegment für den Redundanzcodierstreifen 710-a1 beschreiben, wie in 7D dargestellt. In einer Ausführungsform gibt die Speichervorrichtung 120 eine ILBA für den Beginn des Segments in Schritt 610 des Prozesses 600 zurück. Wenn zum Beispiel ein Datensegment für den Redundanzcodierstreifen 710-a1 geschrieben wird, kann die Speichervorrichtung 120-1 eine ILBA für Eintrag 704-2-1 bei Offset 716-1 zurückgeben; beim Schreiben eines Datensegments für den Redundanzcodierstreifen 710-a2 kann Speichervorrichtung 120-1 eine ILBA für Eintrag 704-2-1 bei Offset 716-5 zurückgeben. Die Speichervorrichtung 120 kann die ILBA an den Manager 400 zurückgeben. Der Manager 400 kann diese ILBAs verwenden, um eine Streifenabbildung 422 aufzubauen. In dem Beispiel von 7D verwendet jede Speichervorrichtung 120 die gleichen Offsets für ein gegebenes Segment (aber auch andere Einträge). Es ist jedoch nicht erforderlich, dass die gleichen Offsets für jedes Datensegment eines gegebenen Redundanzcodierstreifens 710 verwendet werden.
  • Es ist zu beachten, dass in dem Beispiel von 7D die Offsets innerhalb eines Datensegments sequentiell angeordnet sind. In einer Ausführungsform entsprechen verschiedene Offsets 716 zufälligen Schreibvorgängen. Die nichtflüchtige Speichervorrichtung 120 ordnet diese zufälligen Schreibvorgänge in einer Ausführungsform sequentiell an. Es ist zu beachten, dass die Offsets 716 sequentiell sein können. Daher können die internen Adressen sequentiell sein.
  • 8 ist ein Flussdiagramm einer Ausführungsform eines Prozesses 800 zum Wiederherstellen verlorener Daten für eine VBA unter Verwendung von Datensegmenten in einem Redundanzstreifen. Der Prozess 800 kann zur Wiederherstellung von Daten verwendet werden, wenn ein Versuch zum Lesen von Daten auf einer Speichervorrichtung 120 für einige VBA ausfällt, ohne dass die gesamte Speichervorrichtung 120 ausfällt. Dieser Prozess 800 kann auch verwendet werden, um Daten wiederherzustellen, wenn eine der Speichervorrichtungen 120 ausfällt. In Prozess 800 wird ein Beispiel erläutert, in dem es drei „überlebende Speichervorrichtungen“ gibt, bei denen Daten bei einigen VBA für eine Speichervorrichtung 120 verloren gehen. Zur Vereinfachung wird nur eine VBA erörtert, aber Prozess 800 kann zur Wiederherstellung von Daten für viele VBAs verwendet werden. In einer Ausführungsform wird Prozess 800 durch das Datenwiederherstellungsmodul 418 in Manager 400 durchgeführt. In einer Ausführungsform wird Prozess 800 verwendet, wenn Prozess 600 verwendet wurde, um Redundanzcodierstreifen zu speichern. In einer Ausführungsform wird Prozess 800 verwendet, wenn Prozess 600 zum Speichern einer Streifenabbildung 422 verwendet wurde, die interne Adressen von Datensegmenten identifiziert, die durch Speichervorrichtungen 120 in Schritt 610 des Prozesses 600 bereitgestellt wurden. In einer Ausführungsform wird Prozess 800 verwendet, wenn Prozess 600 verwendet wurde, um Weiterleitungsabbildung 534 zu aktualisieren.
  • Schritt 802 besteht darin, eine Kopie der Weiterleitungsabbildung 534 zu lesen, um die SID für die VBA abzurufen. Der Manager 400 kann eine der Kopien der Weiterleitungsabbildung 534 lesen, die in einer der Speichervorrichtungen 120 gespeichert ist. In einigen Fällen kann der Weiterleitungsabbildungszwischenspeicher 424 die SID für die VBA enthalten, wobei in diesem Fall ein Lesen einer Speichervorrichtung 120 nicht erforderlich ist. Es ist zu beachten, dass bei Ausfall einer Speichervorrichtung 120 SIDs für viele VBAs in Schritt 802 abgerufen werden können. Die Schritte 804-814 können für jede SID durchgeführt werden.
  • Schritt 804 dient dazu, die Streifenabbildung 422 zu verwenden, um die internen Adressen der Datensegmente für die SID abzurufen. Mit Bezug auf das Beispiel von 5B kann auf die internen Adressen ILBA 0, ILBA 1 ... ILBA m-1 zugegriffen werden. Man beachte, dass auf die Streifenabbildung 422 auf dem Manager 400 in Schritt 804 zugegriffen werden kann.
  • Schritt 806 schließt die Anforderung von Datensegmenten des Redundanzstreifens aus jeder verbleibenden Speichervorrichtung 120 ein. Zu Beispielszwecken gibt es drei verbleibende Speichervorrichtungen 120-1, 120-2 und 120-m. Als ein Beispiel sendet der Manager 400 eine Anforderung an die Speichervorrichtung 120-1 für ein Datensegment bei ILBA 516(0), sendet eine Anforderung an die Speichervorrichtung 120-1 für ein Datensegment bei ILBA 516(1) und sendet eine Anforderung an die Speichervorrichtung 120-m für ein Datensegment bei ILBA 516(m-1).
  • Schritt 808 schließt die verbleibenden Speichervorrichtungen (z. B. 120-1, 120-2 und 120-m) ein, die auf Abbildungsdatenstrukturen zugreifen, um auf Daten an den ILBAs zuzugreifen. In dem vorliegenden Beispiel bestimmt Speichervorrichtung 120-1, wo die Daten für ILBA 516(0) physisch gespeichert sind. In dem vorliegenden Beispiel bestimmt Speichervorrichtung 120-2, wo die Daten für ILBA 516(1) physisch gespeichert sind. In dem vorliegenden Beispiel bestimmt Speichervorrichtung 120-m, wo die Daten für ILBA 516(m-1) physisch gespeichert sind.
  • In Schritt 810 geben die verbleibenden Speichervorrichtungen die Daten für die angeforderten internen Adressen an den Manager 400 zurück.
  • Schritt 812 schließt das Berechnen der verlorenen Daten aus den in Schritt 810 zurückgegebenen Datensegmenten ein.
  • Schritt 814 schließt das Wiederherstellen der verlorenen Daten ein. Die Daten könnten an der Speichervorrichtung 120-3 (welche die Daten verloren hat) wiederhergestellt werden oder an einer anderen Speichervorrichtung 120 wiederhergestellt werden.
  • 9 veranschaulicht ein schematisches Diagramm eines Computersystems 900, das verwendet werden kann, um eine Ausführungsform des Hosts 115, der Hauptsteuerung 130 oder des Managers 400 umzusetzen. Das Rechensystem 900 schließt eine Speichervorrichtung 910 wie eine Festplatte oder tragbare Medien, eine Netzwerkschnittstelle 920 zum Kommunizieren mit anderen Rechensystemen, einen Prozessor 930 zum Ausführen von Softwareanweisungen, einen Arbeitsspeicher 940 wie ein RAM zum Speichern der Softwareanweisungen nach deren Laden aus zum Beispiel der Speichervorrichtung 310 und eine Benutzerschnittstellenanzeige 950 wie einen oder mehrere Videobildschirme ein. Der Prozessor 990 kann als ein oder mehrere CPU-Chips, Kerne (z. B. ein Mehrkernprozessor), FPGAs, ASICs und/oder DSPs implementiert sein und/oder Teil eines oder mehrerer ASICs sein. Eine Benutzerschnittstelle kann als ein oder mehrere Bildschirme vorgesehen sein. Die Speichervorrichtung 910 und der Arbeitsspeicher 940 können als konkrete, nichtflüchtige prozessor- oder computerlesbare Speichervorrichtung mit einem darauf ausgebildeten prozessorlesbaren Code zum Programmieren des Prozessors 930 angesehen werden, um Verfahren zum Bereitstellen der hierin erörterten Funktionalität durchzuführen. Die Benutzerschnittstellenanzeige 950 kann jedes bekannte Anzeigeschema verwenden, ob graphisch, tabellarisch oder dergleichen. Zusätzlich zur Anzeige auf einem Bildschirm kann eine Ausgabe wie etwa ein Ausdruck von einem Drucker bereitgestellt werden.
  • In einigen Ausführungsformen sind Datensammelmodul 402, Befehlsmodul 4040, Redundanzcodiermodul 416, Datenwiederherstellungsmodul 418 und/oder Laufwerkvirtualisierungsmodul 408 durch die Ausführung der Befehle auf Prozessor 990 implementiert. Die Anweisungen können in dem Speicher 910 oder dem Arbeitsspeicher 940 gespeichert werden. Somit können mindestens einige Schritte in Prozess 600 oder 800 implementiert werden, indem Befehle auf dem Prozessor 990 ausgeführt werden.
  • Eine erste hierin offenbarte Ausführungsform schließt ein System ein, aufweisend: nichtflüchtigen Speicher; ein Datensammelmodul, das eingerichtet ist, um für jeden Block eines Redundanzcodierstreifens Daten für das Datensegment zu sammeln; ein Befehlsmodul, das eingerichtet ist, um einen Befehl zum Schreiben der Daten für das Datensegment des Redundanzcodierstreifens in eine ausgewählte der Vielzahl von nichtflüchtigen Speichervorrichtungen auszugeben; eine Schnittstelle, die eingerichtet ist, um für jedes Datensegment des Redundanzcodierstreifens eine interne Adresse des Datensegments in der ausgewählten nichtflüchtigen Speichervorrichtung zu empfangen; und ein Redundanzcodiermodul, das eingerichtet ist, um in den nichtflüchtigen Speicher eine Redundanzstreifenabbildung zu speichern, die einen Redundanzstreifenidentifikator und die internen Adressen in den nichtflüchtigen Speichervorrichtungen für die Datensegmente des Redundanzcodierstreifens aufweist.
  • In einer zweiten Ausführungsform und gemäß der ersten Ausführungsform schließt das System ferner ein Datenwiederherstellungsmodul ein, das eingerichtet ist, um eine Anforderung an eine erste der nichtflüchtigen Speichervorrichtungen für ein Datensegment des Redundanzcodierstreifens zu senden, wobei die Anforderung die interne Adresse des Datensegments spezifiziert.
  • In einer dritten Ausführungsform und gemäß der ersten oder zweiten Ausführungsform schließt das System ferner eine Logik ein, die eingerichtet ist, um mindestens eine der Vielzahl von nichtflüchtigen Speichervorrichtungen anzuweisen, eine Weiterleitungsabbildung, welche aus virtuellen Adressen auf Redundanzstreifenidentifikatoren abbildet, in den nichtflüchtigen Speicher zu speichern.
  • In einer vierten Ausführungsform und gemäß der dritten Ausführungsform ist das Datenwiederherstellungsmodul ferner eingerichtet zum: Lesen der Weiterleitungsabbildung aus dem nichtflüchtigen Speicher auf einer nichtflüchtigen Speichervorrichtung, um einen Redundanzstreifenidentifikator für eine virtuelle Adresse abzurufen; Verwenden des abgerufenen Redundanzstreifenidentifikators, um interne Adressen in der Redundanzstreifenabbildung abzurufen; und zum Anfordern von Datensegmenten aus einer der nichtflüchtigen Speichervorrichtungen, wobei die Anforderungen für die Datensegmente die abgerufenen internen Adressen spezifizieren.
  • In einer fünften Ausführungsform und gemäß der ersten bis vierten Ausführungsformen umfasst jedes der Datensegmente eine Vielzahl von Blöcken von Zufallsdaten, von denen jeder jeweils eine externe logische Adresse aufweist. Eine erste der nichtflüchtigen Speichervorrichtungen umfasst: ein Adressenabbildungsmodul, das eingerichtet ist, um die externen logischen Adressen, die einem Datensegment zugeordnet sind, sequentiellen internen Adressen in der ersten nichtflüchtigen Speichervorrichtung zuzuordnen; und das Speichern der Abbildung in einem nichtflüchtigen Speicher in der ersten nichtflüchtigen Speichervorrichtung.
  • In einer sechsten Ausführungsform und gemäß der ersten bis fünften Ausführungsformen umfasst eine erste der nichtflüchtigen Speichervorrichtungen: Schreiblogik, die eingerichtet ist, um das gesamte Datensegment des Redundanzcodierstreifens in einen angrenzenden Bereich von nichtflüchtigen Speicherzellen in der ersten nichtflüchtigen Speichervorrichtung zu schreiben; und eine Adressenbereitstellungslogik, die eingerichtet ist, um der Schnittstelle eine interne Adresse bereitzustellen, an der das Datensegment in der ersten nichtflüchtigen Speichervorrichtung geschrieben wurde.
  • In einer siebten Ausführungsform gemäß der ersten bis sechsten Ausführungsformen ist die interne Adresse, die eine erste der Vielzahl von nichtflüchtigen Speichervorrichtungen für ein erstes Datensegment in dem Redundanzcodierstreifen bereitstellt, eine erste interne logische Adresse.
  • In einer achten Ausführungsform und gemäß der ersten bis siebten Ausführungsformen umfasst die erste nichtflüchtige Speichervorrichtung ferner: nichtflüchtigen Speicher; Schreiblogik, die eingerichtet ist, um das erste Datensegment, das in einem ersten angrenzenden Bereich in der ersten nichtflüchtigen Speichervorrichtung gespeichert ist, zu einem zweiten angrenzenden Bereich in der ersten nichtflüchtigen Speichervorrichtung zu bewegen; und ein Adressenabbildungsmodul, das eingerichtet ist, um in dem nichtflüchtigen Speicher eine Abbildung der ersten internen logischen Adresse aus dem ersten angrenzenden Bereich auf den zweiten angrenzenden Bereich zu aktualisieren.
  • In einer neunten Ausführungsform und gemäß der achten Ausführungsform ist der erste angrenzende Bereich der gesamte oder ein Abschnitt eines ersten Löschblocks in dem ersten nichtflüchtigen Speicher, wobei der zweite angrenzende Bereich der gesamte oder ein Abschnitt eines zweiten Löschblocks in dem ersten nichtflüchtigen Speicher ist.
  • In einer zehnten Ausführungsform und gemäß der ersten bis neunten Ausführungsformen umfasst jedes der Datensegmente eine Vielzahl von Blöcken von Zufallsdaten mit jeweils einer externen logischen Blockadresse. Das System umfasst ferner eine Laufwerkvirtualisierungslogik, die eingerichtet ist, um: für jede virtuelle Blockadresse, die einer der externen logischen Blockadressen in einer an eine der Vielzahl von nichtflüchtigen Speichervorrichtungen gesendeten Schreibanforderung zugeordnet ist, die virtuelle Blockadresse in eine der externen logischen Blockadressen und einen Identifikator einer der Vielzahl von nichtflüchtigen Speichervorrichtungen zu konvertieren.
  • In einer elften Ausführungsform und gemäß der ersten bis zehnten Ausführungsformen weist der Befehl zum Schreiben der Daten für das Datensegment des Redundanzcodierungsstreifens in der einen ausgewählten der Vielzahl von nichtflüchtigen Speichervorrichtungen die ausgewählte nichtflüchtige Speichervorrichtung an, das gesamte Datensegment innerhalb des gesamten Löschblocks oder eines Abschnittes davon zu schreiben.
  • Eine hierin offenbarte Ausführungsform schließt ein Verfahren ein, aufweisend: Empfangen, an jeder der Vielzahl von nichtflüchtigen Speichervorrichtungen, einer Anforderung zum Schreiben eines Datensegments eines Redundanzcodierstreifens; Schreiben, durch jede der nichtflüchtigen Speichervorrichtungen, des gesamten Datensegments in einen angrenzenden Bereich der nichtflüchtigen Speicherzellen in der jeweiligen nichtflüchtigen Speichervorrichtung; Bereitstellen, durch jede der nichtflüchtigen Speichervorrichtungen, einer feststehenden Adresse des Datensegments in einem internen Adressraum der jeweiligen nichtflüchtigen Speichervorrichtung; und Speichern einer Redundanzstreifenabbildung in einen nichtflüchtigen Speicher, wobei die Redundanzstreifenabbildung einen Redundanzstreifenidentifikator und die feststehenden internen Adressen für die Datensegmente für den Redundanzcodierstreifen aufweist.
  • Eine hierin offenbarte Ausführungsform schließt ein nichtflüchtiges Speichersystem ein, aufweisend: nichtflüchtigen Speicher; Datensammelmittel zum Sammeln von zufälligen Schreibvorgängen für jedes Datensegment eines Redundanzcodierstreifens; Befehlsmittel zum Senden, an jede einer Vielzahl von nichtflüchtigen Speichervorrichtungen, eines Befehls zum Schreiben eines der Datensegmente von zufälligen Schreibvorgängen innerhalb eines benachbarten Bereichs der nichtflüchtigen Speichervorrichtung; Schreibmittel zum Schreiben des jeweiligen Datensegments des Redundanzcodierstreifens in einen angrenzenden Bereich nichtflüchtiger Speicherzellen in jeder der jeweiligen nichtflüchtigen Speichervorrichtung; Adressenbereitstellungsmittel, um für jedes der Datensegmente eine interne Adresse bereitzustellen, an der das Datensegment in die jeweilige nichtflüchtige Speichervorrichtung geschrieben wurde; und Redundanzcodiermittel zum Speichern einer Redundanzstreifenabbildung in dem nichtflüchtigen Speicher, die einen Redundanzstreifenidentifikator und die internen Adressen für die Datensegmente für den Redundanzcodierstreifen aufweist.
  • In einer Ausführungsform schließen die Datensammelmittel eines oder mehrere von Datensammelmodulen 402, CPUs 300, Speicher 306, Prozessoren 990, Arbeitsspeicher 940 und/oder Speicher 910 ein, sind jedoch nicht darauf beschränkt.
  • In einer Ausführungsform schließen die Befehlsmittel eines oder mehrere von Befehlsmodulen 404, CPUs 300, Speicher 306, Prozessoren 990, Arbeitsspeicher 940 und/oder Speicher 910 ein, sind aber nicht darauf beschränkt.
  • In einer Ausführungsform schließen die Schreibmittel eines oder mehrere von Schreiblogik 552, Zustandsmaschine 112, On-Chip-Adressdecodierer 114, Leistungssteuerung 116, Lese-/Schreibschaltungen 128, Decodierer 124, 132 ein, sind aber nicht darauf beschränkt.
  • In einer Ausführungsform schließen die Adressenbereitstellungsmittel eines oder mehrere von Datenbereitstellungsmodulen interner Adressen 554, Frontend-Modul 208, Host-Schnittstelle 220, PHY 222 ein, sind aber nicht darauf beschränkt.
  • In einer Ausführungsform schließen die Redundanzcodiermittel eines oder mehrere von Redundanzcodiermodul 416, CPUs 300, Speicher 306, Prozessor 990, Arbeitsspeicher 940 und/oder Speicher 910 ein, sind aber nicht darauf beschränkt.
  • Zahlreiche Details sind hierin beschrieben, um ein gründliches Verstehen der beispielhaften Implementierungen zu ermöglichen, die in den beigefügten Zeichnungen veranschaulicht sind. Allerdings können einige Ausführungsformen ohne zahlreiche spezifische Details praktiziert werden und der Schutzumfang der Ansprüche wird nur durch die Merkmale und Aspekte eingeschränkt, die in den Ansprüchen spezifisch genannt sind. Weiterhin wurden wohlbekannte Verfahren, Komponenten und Schaltungen nicht ausführlich beschrieben, um die klare Darstellung von sachdienlicheren Aspekten der hier beschriebenen Implementierungen nicht unnötig zu beeinträchtigen.
  • Die hier verwendeten Begrifflichkeiten dienen nur der Beschreibung von bestimmten Ausführungsformen und sollen nicht als Einschränkung der Ansprüche verstanden werden. So, wie sie in der Beschreibung der Ausführungsformen und der beiliegenden Ansprüche verwendet werden, sollen die Singularformen „ein/eine“ „der/die/das“ ebenfalls die Pluralformen einschließen, sofern der Zusammenhang nicht eindeutig etwas anderes vorgibt. Es versteht sich ebenfalls, dass der Begriff „und/oder“, wie er hierin verwendet wird, jede und alle möglichen Kombinationen von einen oder mehrere der dazugehörigen aufgelisteten Elemente bezeichnet. Es versteht sich ferner, dass die Begriffe „aufweisen“ und/oder „aufweisend“, wenn sie in dieser Patentschrift verwendet werden, das Vorhandensein von angegebenen Merkmalen, Einheiten, Schritten, Vorgängen, Elementen und/oder Komponenten bezeichnen, nicht aber das Vorhandensein oder die Hinzufügung von einer oder mehreren anderen Merkmalen, Einheiten, Schritten, Vorgängen, Elementen, Komponenten und/oder Gruppen von diesen ausschließen.
  • Wie hierin verwendet, kann der Begriff „falls“ in der Bedeutung „wenn“ oder „bei“ oder „als Reaktion auf das Bestimmen“ oder „gemäß einer Bestimmung“ oder „als Reaktion auf die Feststellung“ ausgelegt werden, dass je nach Textzusammenhang eine angegebene Voraussetzung erfüllt ist. Analog kann die Formulierung „wenn festgestellt wird [dass eine angegebene unabdingbare Voraussetzung erfüllt ist]“ oder „falls [eine angegebene unabdingbare Voraussetzung erfüllt ist]“ oder „wenn [eine angegebene unabdingbare Voraussetzung erfüllt ist]“ kann je nach Textzusammenhang ausgelegt werden als: „nach Feststellung“ oder „als Reaktion auf die Feststellung“ oder „gemäß einer Feststellung“ oder „nach Erkennung“ oder „als Reaktion auf die Erkennung“, dass eine festgestellte unabdingbare Voraussetzung erfüllt ist.
  • Für die Zwecke dieses Dokuments kann eine Bezugnahme in der Beschreibung auf „eine Ausführungsform“, „einige Ausführungsformen“ oder „eine andere Ausführungsform“ verwendet werden, um verschiedene Ausführungsformen oder dieselbe Ausführungsform zu beschreiben.
  • Im Sinne dieses Dokuments kann eine Verbindung eine direkte Verbindung oder eine indirekte Verbindung sein (z. B. über einen oder mehrere andere Teile). In einigen Fällen, wenn ein Element als mit einem anderen Element verbunden oder gekoppelt bezeichnet wird, kann das Element direkt mit dem anderen Element verbunden sein oder indirekt über zwischenliegende Elemente mit dem anderen Element verbunden sein. Wenn ein Element als direkt mit einem anderen Element verbunden bezeichnet wird, gibt es keine Zwischenelemente zwischen dem Element und dem anderen Element. Zwei Vorrichtungen sind „in Kommunikation“, wenn sie direkt oder indirekt miteinander verbunden sind, sodass sie elektronische Signale untereinander übertragen können.
  • Für die Zwecke dieses Dokumentes kann der Begriff „basierend auf“ als „zumindest teilweise basierend auf“ gelesen werden.
  • Für die Zwecke dieses Dokuments impliziert ohne zusätzlichen Kontext die Verwendung numerischer Ausdrücke, wie etwa ein „erstes“ Objekt, ein „zweites“ Objekt und ein „drittes“ Objekt möglicherweise keine Sortierung von Objekten, sondern kann stattdessen zu Identifikationszwecken verwendet werden, um verschiedene Objekte zu identifizieren.
  • Für die Zwecke dieses Dokuments kann sich der Ausdruck „Satz“ von Objekten auf einen „Satz“ von einem oder mehreren der Objekte beziehen.
  • Die vorstehende Beschreibung erfolgte als Erläuterung unter Bezugnahme auf spezifische Implementierungen. Allerdings sind die vorstehenden veranschaulichenden Erörterungen weder als erschöpfend zu betrachten noch sollen sie die Ansprüche auf die exakt offenbarten Formen beschränken. Zahlreiche Änderungen und Varianten sind angesichts der vorstehenden Lehre möglich. Die Implementierungen wurden dazu ausgewählt und beschrieben, die Funktionsprinzipien und praktischen Anwendungen optimal zu erläutern, um somit anderen Fachleuten zu befähigen.

Claims (20)

  1. System, aufweisend: nichtflüchtigen Speicher; ein Datensammelmodul, das eingerichtet ist, um für jeden Block eines Redundanzcodierstreifens Daten für das Datensegment zu sammeln; ein Befehlsmodul, das eingerichtet ist, um einen Befehl zum Schreiben der Daten für das Datensegment des Redundanzcodierstreifens in eine ausgewählte der Vielzahl von nichtflüchtigen Speichervorrichtungen auszugeben; eine Schnittstelle, die eingerichtet ist, um für jedes Datensegment des Redundanzcodierstreifens eine interne Adresse des Datensegments in der ausgewählten nichtflüchtigen Speichervorrichtung zu empfangen; und ein Redundanzcodiermodul, das so eingerichtet ist, dass es in den nichtflüchtigen Speicher eine Redundanzstreifenabbildung speichert, die einen Redundanzstreifenidentifikator und die internen Adressen in den nichtflüchtigen Speichervorrichtungen für die Datensegmente des Redundanzcodierungsstreifens aufweist.
  2. System gemäß Anspruch 1, weiterhin aufweisend ein Datenwiederherstellungsmodul, das eingerichtet ist, um: eine Anforderung an eine erste nichtflüchtige Speichervorrichtung für ein Datensegment des Redundanzcodierstreifens zu senden, wobei die Anforderung die interne Adresse des Datensegments spezifiziert.
  3. System gemäß Anspruch 1, weiterhin aufweisend eine Logik, die eingerichtet ist, um mindestens eine der Vielzahl von nichtflüchtigen Speichervorrichtungen anzuweisen, eine Weiterleitungsabbildung in den nichtflüchtigen Speicher zu speichern, die von virtuellen Adressen auf Redundanzstreifenidentifikatoren abbildet.
  4. System gemäß Anspruch 3, weiterhin aufweisend ein Datenwiederherstellungsmodul, das eingerichtet ist, um: die Weiterleitungsabbildung aus dem nichtflüchtigen Speicher auf einer nichtflüchtigen Speichervorrichtung zu lesen, um einen Redundanzstreifenidentifikator für eine virtuelle Adresse abzurufen; den abgerufenen Redundanzstreifenidentifikator zu verwenden, um interne Adressen in der Redundanzstreifenabbildung abzurufen; und Datensegmente aus einer der nichtflüchtigen Speichervorrichtungen anzufordern, wobei die Anforderungen für die Datensegmente die abgerufenen internen Adressen spezifizieren.
  5. System gemäß Anspruch 1, wobei jedes der Datensegmente eine Vielzahl von Blöcken von Zufallsdaten umfasst, von denen jeder eine externe logische Adresse aufweist, und wobei eine erste der nichtflüchtigen Speichervorrichtungen aufweist: ein Adressenabbildungsmodul, das eingerichtet ist, um: die externen logischen Adressen, die einem Datensegment zugeordnet sind, auf sequentielle interne Adressen in dem ersten nichtflüchtigen Speicher abzubilden; und die Abbildung in einem nichtflüchtigen Speicher in der ersten nichtflüchtigen Speichervorrichtung zu speichern.
  6. System gemäß Anspruch 1, wobei eine erste der nichtflüchtigen Speichervorrichtungen aufweist: eine Schreiblogik, die eingerichtet ist, um das gesamte Datensegment des Redundanzcodierstreifens in einen angrenzenden Bereich von nichtflüchtigen Speicherzellen in der ersten nichtflüchtigen Speichervorrichtung zu schreiben; und eine Adressenbereitstellungslogik, die eingerichtet ist, um der Schnittstelle eine interne Adresse bereitzustellen, an der das Datensegment in die erste nichtflüchtige Speichervorrichtung geschrieben wurde.
  7. System gemäß Anspruch 1, wobei die interne Adresse, die eine erste der Vielzahl von nichtflüchtigen Speichervorrichtungen für ein erstes Datensegment in dem Redundanzcodierstreifen bereitstellt, eine erste interne logische Adresse ist.
  8. System gemäß Anspruch 7, wobei die erste nichtflüchtige Speichervorrichtung weiterhin aufweist: nichtflüchtigen Speicher; Schreiblogik, die eingerichtet ist, um das erste Datensegment, das in einem ersten angrenzenden Bereich in der ersten nichtflüchtigen Speichervorrichtung gespeichert ist, zu einem zweiten angrenzenden Bereich in der ersten nichtflüchtigen Speichervorrichtung zu bewegen; und ein Adressenabbildungsmodul, das eingerichtet ist, um in dem nichtflüchtigen Speicher eine Abbildung der ersten internen logischen Adresse aus dem ersten angrenzenden Bereich auf den zweiten angrenzenden Bereich zu aktualisieren.
  9. System gemäß Anspruch 8, wobei der erste angrenzende Bereich der gesamte oder ein Teil eines ersten Löschblocks in der ersten nichtflüchtigen Speichervorrichtung ist, wobei der zweite angrenzende Bereich der gesamte oder ein Teil eines zweiten Löschblocks in der ersten nichtflüchtigen Speichervorrichtung ist.
  10. System gemäß Anspruch 1, wobei jedes der Datensegmente eine Vielzahl von Blöcken von Zufallsdaten mit jeweils einer externen logischen Blockadresse aufweist, und weiterhin aufweisend eine Laufwerkvirtualisierungslogik, die eingerichtet ist, um: für jede virtuelle Blockadresse, die einer der externen logischen Blockadressen in einer an eine der Vielzahl von nichtflüchtigen Speichervorrichtungen gesendeten Schreibanforderung zugeordnet ist, die virtuelle Blockadresse in eine der externen logischen Blockadressen und einen Identifikator einer der Vielzahl von nichtflüchtigen Speichervorrichtungen zu konvertieren.
  11. System gemäß Anspruch 1, wobei der Befehl zum Schreiben der Daten für das Datensegment des Redundanzcodierstreifens in der einen ausgewählten der Vielzahl von nichtflüchtigen Speichervorrichtungen die ausgewählte nichtflüchtige Speichervorrichtung anweist, das gesamte Datensegment innerhalb des gesamten Löschblocks oder eines Abschnittes davon zu schreiben.
  12. Verfahren, aufweisend: Empfangen, an jeder einer Vielzahl von nichtflüchtigen Speichervorrichtungen, einer Anforderung, ein Datensegment eines Redundanzcodierstreifens zu schreiben; Schreiben, durch jede der nichtflüchtigen Speichervorrichtungen, des gesamten Datensegments in einen angrenzenden Bereich der nichtflüchtigen Speicherzellen in der jeweiligen nichtflüchtigen Speichervorrichtung; Bereitstellen, durch jede der nichtflüchtigen Speichervorrichtungen, einer feststehenden Adresse des Datensegments in einem internen Adressraum der jeweiligen nichtflüchtigen Speichervorrichtung; und Speichern einer Redundanzstreifenabbildung in einen nichtflüchtigen Speicher, wobei die Redundanzstreifenabbildung einen Redundanzstreifenidentifikator und die feststehenden internen Adressen für die Datensegmente für den Redundanzcodierstreifen aufweist.
  13. Verfahren gemäß Anspruch 12, weiterhin aufweisend: Senden einer Anforderung an eine erste nichtflüchtige Speichervorrichtung für ein Datensegment des Redundanzcodierstreifens, wobei die Anforderung die feststehende interne Adresse des Datensegments spezifiziert.
  14. Verfahren gemäß Anspruch 13, weiterhin aufweisend: Anweisen mindestens einer der Vielzahl von nichtflüchtigen Speichervorrichtungen, eine Weiterleitungsabbildung in den nichtflüchtigen Speicher zu speichern, die aus virtuellen Adressen auf Redundanzstreifenidentifikatoren abbildet.
  15. Verfahren gemäß Anspruch 14, weiterhin aufweisend: Lesen der Weiterleitungsabbildung aus dem nichtflüchtigen Speicher auf einer nichtflüchtigen Speichervorrichtung, um einen Redundanzstreifenidentifikator für eine virtuelle Adresse abzurufen; Verwenden des abgerufenen Redundanzstreifenidentifikators, um interne Adressen in der Redundanzstreifenabbildung abzurufen; und Anfordern von Datensegmenten aus einer der nichtflüchtigen Speichervorrichtungen, wobei die Anforderungen für die Datensegmente die abgerufenen internen Adressen spezifizieren.
  16. Verfahren gemäß Anspruch 12, weiterhin aufweisend: Sammeln, über ein Managersystem, zufälliger Schreibvorgänge für jedes der Datensegmente des Redundanzcodierstreifens; und Senden, über ein Managersystem, der Befehle zum Schreiben aller der zufälligen Schreibvorgänge für jedes der Datensegmente in einen angrenzenden Bereich auf jeder der nichtflüchtigen Speichervorrichtungen.
  17. Verfahren gemäß Anspruch 16, wobei der angrenzende Bereich ein Löschblock ist.
  18. Nichtflüchtiges Speichersystem, aufweisend: nichtflüchtigen Speicher; Datensammelmittel zum Sammeln von zufälligen Schreibvorgängen für jedes Datensegment eines Redundanzcodierstreifens; Befehlsmittel zum Senden, an jede einer Vielzahl von nichtflüchtigen Speichervorrichtungen, eines Befehls zum Schreiben eines der Datensegmente von zufälligen Schreibvorgängen innerhalb eines benachbarten Bereichs der nichtflüchtigen Speichervorrichtung; Schreibmittel zum Schreiben des jeweiligen Datensegments des Redundanzcodierstreifens in einen angrenzenden Bereich nichtflüchtiger Speicherzellen in jeder der jeweiligen nichtflüchtigen Speichervorrichtung; Adressenbereitstellungsmittel, um für jedes der Datensegmente eine interne Adresse bereitzustellen, an der das Datensegment in die jeweilige nichtflüchtige Speichervorrichtung geschrieben wurde; und Redundanzcodiermittel zum Speichern einer Redundanzstreifenabbildung in den nichtflüchtigen Speicher, die einen Redundanzstreifenidentifikator und die internen Adressen für die Datensegmente für den Redundanzcodierstreifen aufweist.
  19. Nichtflüchtiges Speichersystem gemäß Anspruch 18, wobei die Schreibmittel ferner zu Folgendem dienen: Schreiben einer Weiterleitungsabbildung in einen nichtflüchtigen Speicher auf einer ersten der nichtflüchtigen Speichervorrichtungen, wobei die Weiterleitungsabbildung aus virtuellen Adressen zu Redundanzstreifenidentifikatoren übertragen wird.
  20. Nichtflüchtiges Speichersystem gemäß Anspruch 19, weiterhin aufweisend Datenwiederherstellungsmittel zum: Lesen der Weiterleitungsabbildung aus dem nichtflüchtigen Speicher auf der erste nichtflüchtige Speichervorrichtung, um einen Redundanzstreifenidentifikator für eine virtuelle Adresse abzurufen; Verwenden des abgerufenen Redundanzstreifenidentifikators, um interne Adressen in der Redundanzstreifenabbildung abzurufen; Anfordern von Datensegmenten aus einer der nichtflüchtigen Speichervorrichtungen, wobei die Anforderungen für die Datensegmente die abgerufenen internen Adressen spezifizieren; und Wiederherstellen eines Datensegments eines Redundanzcodierstreifens auf der Grundlage von Datensegmenten, die aus der einen der nichtflüchtigen Speichervorrichtungen als Antwort auf die Anforderungen zum Spezifizieren der abgerufenen internen Adressen zurückgegeben werden.
DE112018004256.1T 2017-10-02 2018-09-24 Redundanzcodierstreifen basierend auf internen adressen von speichervorrichtungen Pending DE112018004256T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/722,685 2017-10-02
US15/722,685 US10379948B2 (en) 2017-10-02 2017-10-02 Redundancy coding stripe based on internal addresses of storage devices
PCT/US2018/052376 WO2019070432A1 (en) 2017-10-02 2018-09-24 REDUNDANCY CODING BAND BASED ON INTERNAL ADDRESSES OF STORAGE DEVICES

Publications (1)

Publication Number Publication Date
DE112018004256T5 true DE112018004256T5 (de) 2020-05-14

Family

ID=65896063

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112018004256.1T Pending DE112018004256T5 (de) 2017-10-02 2018-09-24 Redundanzcodierstreifen basierend auf internen adressen von speichervorrichtungen

Country Status (4)

Country Link
US (1) US10379948B2 (de)
CN (1) CN111164574B (de)
DE (1) DE112018004256T5 (de)
WO (1) WO2019070432A1 (de)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI666901B (zh) * 2018-03-27 2019-07-21 緯穎科技服務股份有限公司 資料傳輸方法與使用此方法的主機系統
US10896089B2 (en) * 2018-04-06 2021-01-19 Western Digital Technologies, Inc. System level data-loss protection using storage device local buffers
US10635599B2 (en) * 2018-07-26 2020-04-28 Sandisk Technologies Llc Memory controller assisted address mapping
US10824526B2 (en) 2018-08-03 2020-11-03 Western Digital Technologies, Inc. Using failed storage device in peer-to-peer storage system to perform storage-centric task
US10901848B2 (en) 2018-08-03 2021-01-26 Western Digital Technologies, Inc. Storage systems with peer data recovery
US10649843B2 (en) 2018-08-03 2020-05-12 Western Digital Technologies, Inc. Storage systems with peer data scrub
US10831603B2 (en) 2018-08-03 2020-11-10 Western Digital Technologies, Inc. Rebuild assist using failed storage device
GB201814918D0 (en) * 2018-09-13 2018-10-31 Blancco Tech Group Ip Oy Method and apparatus for use in sanitizing a network of non-volatile memory express devices
US10679708B2 (en) * 2018-09-17 2020-06-09 Western Digital Technologies, Inc. Pre-program read to counter wordline failures
US11182258B2 (en) 2019-01-04 2021-11-23 Western Digital Technologies, Inc. Data rebuild using dynamic peer work allocation
KR20210076497A (ko) 2019-12-16 2021-06-24 에스케이하이닉스 주식회사 스토리지 장치 및 그 동작 방법
KR20210034378A (ko) 2019-09-20 2021-03-30 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그것의 동작 방법
KR20210023203A (ko) * 2019-08-22 2021-03-04 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
US11734175B2 (en) 2019-08-22 2023-08-22 SK Hynix Inc. Storage device and method of operating the same
US11762769B2 (en) 2019-09-20 2023-09-19 SK Hynix Inc. Memory controller based on flush operation and method of operating the same
US11210002B2 (en) * 2020-01-29 2021-12-28 Samsung Electronics Co., Ltd. Offloaded device-driven erasure coding
CN115543216B (zh) * 2022-11-29 2023-03-21 苏州浪潮智能科技有限公司 磁盘阵列分布架构、分块计算方法、系统、设备和介质

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5530948A (en) 1993-12-30 1996-06-25 International Business Machines Corporation System and method for command queuing on raid levels 4 and 5 parity drives
US7934074B2 (en) 1999-08-04 2011-04-26 Super Talent Electronics Flash module with plane-interleaved sequential writes to restricted-write flash chips
JP4766240B2 (ja) 2005-11-08 2011-09-07 日本電気株式会社 ファイル管理方法、装置、およびプログラム
US9118698B1 (en) 2005-12-02 2015-08-25 Branislav Radovanovic Scalable data storage architecture and methods of eliminating I/O traffic bottlenecks
US8151082B2 (en) 2007-12-06 2012-04-03 Fusion-Io, Inc. Apparatus, system, and method for converting a storage request into an append data storage command
US8296337B2 (en) 2006-12-06 2012-10-23 Fusion-Io, Inc. Apparatus, system, and method for managing data from a requesting device with an empty data token directive
US8250283B1 (en) 2009-05-22 2012-08-21 Google Inc. Write-distribute command for RAID mirroring
WO2011044154A1 (en) * 2009-10-05 2011-04-14 Marvell Semiconductor, Inc. Data caching in non-volatile memory
DE112011102487T5 (de) * 2010-07-27 2013-05-29 International Business Machines Corporation Zuordnen von logischen zu physischen Adressen in Halbleiterspeichereinheiten aufweisenden Speichersystemen
US8473648B2 (en) 2010-12-16 2013-06-25 Lsi Corporation System and method of I/O path virtualization between a raid controller and an environment service module in a storage area network
US9021178B2 (en) 2011-05-02 2015-04-28 Western Digital Technologies, Inc. High performance path for command processing
US8806160B2 (en) 2011-08-16 2014-08-12 Pure Storage, Inc. Mapping in a storage system
US9268682B2 (en) 2012-10-05 2016-02-23 Skyera, Llc Methods, devices and systems for physical-to-logical mapping in solid state drives
US9652376B2 (en) 2013-01-28 2017-05-16 Radian Memory Systems, Inc. Cooperative flash memory control
US9009565B1 (en) 2013-03-15 2015-04-14 Pmc-Sierra, Inc. Systems and methods for mapping for solid-state memory
US9519577B2 (en) * 2013-09-03 2016-12-13 Sandisk Technologies Llc Method and system for migrating data between flash memory devices
WO2015040711A1 (ja) * 2013-09-19 2015-03-26 株式会社日立製作所 ストレージ装置、ストレージ装置におけるデータの制御方法、及びストレージシステム
US9405623B2 (en) 2013-09-25 2016-08-02 Xyratex Technology Limited Method of, and apparatus for, layout rectification of erasure encoded storage systems
US9448924B2 (en) 2014-01-08 2016-09-20 Netapp, Inc. Flash optimized, log-structured layer of a file system
US9639268B2 (en) 2014-08-21 2017-05-02 Datrium, Inc. Distributed data storage system with key-based addressing
US10380026B2 (en) 2014-09-04 2019-08-13 Sandisk Technologies Llc Generalized storage virtualization interface
WO2016051512A1 (ja) 2014-09-30 2016-04-07 株式会社日立製作所 分散型ストレージシステム
US9720596B1 (en) 2014-12-19 2017-08-01 EMC IP Holding Company LLC Coalescing writes for improved storage utilization
US11099746B2 (en) 2015-04-29 2021-08-24 Marvell Israel (M.I.S.L) Ltd. Multi-bank memory with one read port and one or more write ports per cycle
TWI531963B (zh) 2015-06-04 2016-05-01 Accelstor Inc Data storage systems and their specific instruction enforcement methods
US10230398B2 (en) 2016-08-19 2019-03-12 Samsung Electronics Co., Ltd. Erasure code data protection and recovery computation system and method

Also Published As

Publication number Publication date
WO2019070432A1 (en) 2019-04-11
CN111164574A (zh) 2020-05-15
US20190102250A1 (en) 2019-04-04
CN111164574B (zh) 2023-10-24
US10379948B2 (en) 2019-08-13

Similar Documents

Publication Publication Date Title
DE112018004256T5 (de) Redundanzcodierstreifen basierend auf internen adressen von speichervorrichtungen
DE112018004252T5 (de) Redundanzcodierstreifen auf der basis eines koordinierten internen adressschemas über mehrere vorrichtungen
DE112020002526B4 (de) Blockmodusumschaltung in datenspeichersystem
DE112019000146T5 (de) Multivorrichtungsspeichersystem mit verteilter lese-/schreibverarbeitung
DE112010003887B4 (de) Datenverwaltung in Halbleiter-Speichereinheiten
DE102018123891A1 (de) Handhabung nichtabgestimmter Schreibvorgänge
DE102018106154A1 (de) Faltungsoperationen in datenspeichersystemen mit einzeladressenaktualisierungen
DE112019000149T5 (de) Multivorrichtungsspeichersystem mit gehosteten diensten auf peer-speichervorrichtungen
DE102020107659A1 (de) Zonenbildung für gezonte namensräume
DE112018004251T5 (de) Adaptive vorrichtungsdienstqualität durch host-speicherpufferbereich
DE112019005369T5 (de) Verfahren zum umschalten zwischen herkömmlicher ssd und open-channel-ssd ohne datenverlust
DE112017005955T5 (de) Speichersystem und verfahren zur schlanken speicherzuweisung
DE112019000215T5 (de) Wiederherstellungshilfe mit ausgefallener Speichervorrichtung
DE112017005890T5 (de) Abrufen von Datenpufferzeigern für direkten Speicherzugriff
DE102017128952A1 (de) Datenspeichervorrichtung, die konfiguriert ist, um eine nicht-blockierende Steuerungs-Aktualisierungsoperation auszuführen
DE102011086227A1 (de) Adress mapping method, data storage device and user device
DE112011102487T5 (de) Zuordnen von logischen zu physischen Adressen in Halbleiterspeichereinheiten aufweisenden Speichersystemen
DE112017005637T5 (de) Verfahren und System zur Schreibverstärkungsanalyse
DE112020002792B4 (de) Verschleissorientierte blockmodusumwandlung in nichtflüchtigen speichern
DE102018105871A1 (de) Speichersystem und Verfahren zur Vermeidung von Befehlskollisionen in nicht flüchtigen Datenspeichern mit expliziter Kachelgruppierung
DE102018123880A1 (de) Adaptive Verwaltung von Zwischenspeichern
DE112019000161T5 (de) Speicher-cache-verwaltung
DE112018000230T5 (de) System und Verfahren zur spekulativen Befehlsausführung unter Verwendung des Steuerungsspeicherpuffers
DE112020003290T5 (de) Datenplatzierung in einer schreib-cache-architektur, die eine lesehitze-datenaufteilung unterstützt
DE112020005787T5 (de) Verbesserte dateisystem-unterstützung für zonen-namespace-speicher

Legal Events

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

Representative=s name: MURGITROYD GERMANY PATENTANWALTSGESELLSCHAFT M, DE