DE102014111670A1 - A transition layer partitioned between a host and a controller - Google Patents

A transition layer partitioned between a host and a controller Download PDF

Info

Publication number
DE102014111670A1
DE102014111670A1 DE102014111670.4A DE102014111670A DE102014111670A1 DE 102014111670 A1 DE102014111670 A1 DE 102014111670A1 DE 102014111670 A DE102014111670 A DE 102014111670A DE 102014111670 A1 DE102014111670 A1 DE 102014111670A1
Authority
DE
Germany
Prior art keywords
data
volatile memory
host
write data
read
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.)
Withdrawn
Application number
DE102014111670.4A
Other languages
German (de)
Inventor
Earl T. Cohen
Sumit PURI
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.)
LSI Corp
Original Assignee
LSI Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US14/060,799 external-priority patent/US9329991B2/en
Application filed by LSI Corp filed Critical LSI Corp
Publication of DE102014111670A1 publication Critical patent/DE102014111670A1/en
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • 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
    • 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
    • G06F11/108Parity data distribution in semiconductor storages, e.g. in SSD
    • 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/04Addressing variable-length words or parts of words
    • 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
    • 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/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • 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
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/401Compressed data
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

Offenbart wird ein Verfahren zum Verwenden einer partitionierten Flash-Übergangsschicht. Ein Schritt (A) empfängt an einer Einrichtung von bzw. aus einem Host einen Schreibbefehl mit ersten Schreibdaten. Ein Schritt (B) erzeugt zweite Schreibdaten durch Komprimieren der ersten Schreibdaten in der Einrichtung. Die zweiten Schreibdaten haben allgemein eine variable Größe. Ein Schritt (C) speichert die zweiten Schreibdaten an einem physikalischen Ort in einem nicht-flüchtigen Speicher. Der physikalische Ort ist ein nächster nicht-beschriebener Ort. Ein Schritt (D) gibt, in Antwort auf den Lesebefehl, eine Angabe des physikalischen Ortes von der Einrichtung an den Host zurück.Disclosed is a method of using a partitioned flash transition layer. A step (A) receives at a device from or from a host a write command with first write data. A step (B) generates second write data by compressing the first write data in the device. The second write data is generally a variable size. A step (C) stores the second write data at a physical location in a non-volatile memory. The physical location is a next non-described location. Step (D) returns an indication of the physical location from the device to the host in response to the read command.

Description

Diese Anmeldung bezieht sich auf die am 21. Oktober 2013 eingereichte US Provisional-Application Nr. 61/893,383, die am 9. Oktober 2013 eingereichte USProvisional-Application Nr. 61/888,681, die am 3. September 2013 eingereichte USProvisional Application Nr. 61/873,357, die am 16. August 2013 eingereichte US Provisional Application Nr. 61/866,672 und die am 22. Januar 2013 eingereichte US-Provisional Application Nr. 61/755,169, von denen jede hiermit durch Verweis in ihrer Gesamtheit aufgenommen ist. This application is related to U.S. Provisional Application No. 61 / 893,383 filed on Oct. 21, 2013, US Provisional Application No. 61 / 888,681 filed on Oct. 9, 2013 and US Provisional Application No. 61 filed on Sep. 3, 2013 US Provisional Application No. 61 / 866,672 filed August 16, 2013, and US Provisional Application No. 61 / 755,169 filed January 22, 2013, each of which is hereby incorporated by reference in its entirety.

Diese Anmeldung bezieht sich auf die am 21. März 2011 eingereichte US Patentanmeldung mit der Serien-Nr. 13/053,175, die sich auf die am 22. März 2010 eingereichte US Provisional Application Nr. 61/316,373 bezieht, von denen jede hiermit durch Verweis in ihrer Gesamtheit aufgenommen ist. This application is related to US Patent Application Serial No. 21 filed on Mar. 21, 2011. No. 13 / 053,175, which relates to U.S. Provisional Application No. 61 / 316,373 filed March 22, 2010, each of which is hereby incorporated by reference in its entirety.

Diese Anmeldung bezieht sich auch auf die internationale Anmeldung PCT/US2012/058583 , die ein internationaled Einreichungsdatum vom 4. Oktober 2012 hat und die die Vorteile der am 5. Oktober 2011 eingereichten US Provisional Application Nr. 61/543,707, beansprucht, von denen jede hiermit durch Verweis in ihrer Gesamtheit aufgenommen ist.This application also relates to the international application PCT / US2012 / 058583 which has an international filing date of 4 October 2012 and which claims the benefits of US Provisional Application No. 61 / 543,707 filed on October 5, 2011, each of which is hereby incorporated by reference in its entirety.

Diese Anmeldung bezieht sich auf die am 10. Juli 2013 eingereichte US Patentanmeldung mit der Serien-Nr. 13/936,010, die sich auf die internationale Anmeldung PCT/US2012/049905 bezieht, die ein internationales Einreichungsdatum vom 8. August 2012 hat und die die Vorteile der am 6. September 2011 eingereichten US Provisional Application Nr. 61/531,551 und der am 9. August 2011 eingereichten US Provisional Application Nr. 61/521,739 beansprucht, von denen jede hiermit durch Verweis in ihrer Gesamtheit aufgenommen ist.This application is related to United States Patent Application Serial No. 2007 filed July 10, 2013. 13 / 936,010, referring to the international application PCT / US2012 / 049905 which has an international filing date of 8 August 2012 and which claims the benefits of US Provisional Application No. 61 / 531,551 filed on September 6, 2011 and US Provisional Application No. 61 / 521,739 filed on August 9, 2011, of each of which is hereby incorporated by reference in its entirety.

TECHNISCHES GEBIET DER ERFINDUNGTECHNICAL FIELD OF THE INVENTION

Die Erfindung bezieht sich allgemein auf Rechen-Hosts und auf Eingabe-/Ausgabe-Geräte-Technologie, und genauer gesagt auf ein Verfahren und/oder eine Vorrichtung, die eine zwischen einem Host und einer Steuereinrichtung partitionierte Übergangsschicht bereitstellen. The invention relates generally to rake hosts and to input / output device technology, and more particularly to a method and / or apparatus that provides a transition layer partitioned between a host and a controller.

HINTERGRUNDBACKGROUND

Herkömmliche Festkörper-Laufwerke speichern eine festgelegte, ganze Anzahl von logischen Blöcken eines Hosts in jedem Seitenrahmen bzw. jeder Seite (page) eines nicht-flüchtigen Speichers. Speichereffizienz-Themen treten auf, wenn entweder eine Größe von Nutzer-Daten oder eine verwendbare Größe eines jeden Seitenrahmens in dem nicht-flüchtigen Speicher nicht festgelegt ist. Architekturen für Flash-Übergangsschichten (flash transistion layers) mit variabler Größe in den Festkörper-Laufwerken sind Hardware-intensiv. Es werden Seitenrahmen-Nachrichtenköpfe (page headers) verwendet, um zu identifizieren, wo die Nutzerdaten unter bzw. in mehreren Leseeinheiten innerhalb der Seitenrahmen des Festkörper-Laufwerks gespeichert sind, und ein Extrahieren der Daten bedingt ein erstes Lesen und Analysieren (Parsing) des Seitenrahmen-Nachrichtenkopfes.Conventional solid state drives store a fixed, whole number of logical blocks of a host in each page frame of a non-volatile memory. Memory efficiency issues occur when either a size of user data or a usable size of each page frame is not specified in the non-volatile memory. Architectures for variable-sized flash transistion layers in the solid-state drives are hardware-intensive. Page header headers are used to identify where the user data is stored in multiple read units within the page frames of the solid state drive, and extracting the data requires first reading and parsing the page frame -Nachrichtenkopfes.

ZUSAMMENFASSUNGSUMMARY

Die Erfindung betrifft ein Verfahren zum Verwenden einer aufgeteilten bzw. partitionierten Flash-Übergangsschicht (flash transistion layer). Ein Schritt (A) empfängt an einer Einrichtung von bzw. aus einem Host einen Schreibbefehl mit ersten Schreibdaten. Ein Schritt (B) erzeugt zweite Schreibdaten durch Komprimieren der ersten Schreibdaten in der Einrichtung. Die zweiten Schreibdaten haben allgemein eine variable Größe. Ein Schritt (C) speichert die zweiten Schreibdaten an einem physikalischen Ort in einem nicht-flüchtigen Speicher. Der physikalische Ort ist ein nächster nicht-beschriebener Ort. Ein Schritt (D) gibt, in Antwort auf den Schreibbefehl, eine Angabe des physikalischen Orts von der Einrichtung an den Host zurück.The invention relates to a method of using a split flash-layer. A step (A) receives at a device from or from a host a write command with first write data. A step (B) generates second write data by compressing the first write data in the device. The second write data is generally a variable size. A step (C) stores the second write data at a physical location in a non-volatile memory. The physical location is a next non-described location. A step (D) returns an indication of the physical location from the device to the host in response to the write command.

KURZE BESCHREIBUNG DER FIGURENBRIEF DESCRIPTION OF THE FIGURES

Ausführungsformen der Erfindung werden offensichtlich aus der nachfolgenden ausführlichen Beschreibung und den beigefügten Patentansprüchen und den Zeichnungen, für die gilt:Embodiments of the invention will become apparent from the following detailed description and the appended claims and the drawings, in which:

1 ist eine Darstellung von ausgewählten Einzelheiten einer Ausführungsform des Abbildens einer logischen Blockadresse in Bereiche mit festgesetzter Größe innerhalb einem nicht-flüchtigen Speicher-Seitenrahmens, 1 12 is an illustration of selected details of one embodiment of mapping a logical block address into fixed sized areas within a non-volatile memory page frame;

2 ist eine Darstellung von ausgewählten Einzelheiten einer Ausführungsform des Abbildens einer logischen Blockadresse auf einen Bereich mit variabler Größe, der optional nicht-flüchtige Speicher-Seitenrahmen umspannt, 2 13 is an illustration of selected details of one embodiment of mapping a logical block address to a variable size area that optionally spans non-volatile memory page frames;

3 ist eine Darstellung einer Ausführungsform eines nicht-flüchtigen Speicher-Seitenrahmens, der eine ganzzahlige Anzahl von Leseeinheiten umfasst, 3 Figure 4 is an illustration of one embodiment of a non-volatile memory page frame comprising an integer number of read units;

4 ist eine Darstellung von ausgewählten Einzelheiten einer Ausführungsform des Abbildens einer logischen Blockadresse auf einen Bereich mit variabler Größe, der eine oder mehrere Leseeinheiten umspannt, 4 Figure 4 is an illustration of selected details of one embodiment of mapping a logical block address to a variable sized area spanning one or more read units;

5 ist eine Darstellung von ausgewählten Einzelheiten einer Ausführungsform einer Leseeinheit, die Nachrichtenköpfe und Daten umfasst, 5 Fig. 3 is an illustration of selected details of an embodiment of a reading unit comprising message headers and data;

6 ist eine Darstellung von ausgewählten Einzelheiten einer Ausführungsform eines nicht-flüchtigen Speicher-Seitenrahmens, der Nachrichtenköpfe und Daten umfasst, 6 Figure 4 is an illustration of selected details of an embodiment of a non-volatile memory page frame that includes message headers and data;

7 ist eine Darstellung von ausgewählten Einzelheiten einer anderen Ausführungsform eines nicht-flüchtigen Speicher-Seitenrahmens, der Nachrichtenköpfe und Daten umfasst, 7 Fig. 4 is an illustration of selected details of another embodiment of a non-volatile memory page frame including message headers and data;

8 ist eine Darstellung von ausgewählten Einzelheiten einer Ausführungsform von verschiedenen Arten von Nachrichtenköpfen, 8th Fig. 3 is an illustration of selected details of one embodiment of various types of message headers;

9 ist eine Darstellung von ausgewählten Einzelheiten einer Ausführungsform eines Abbildungseintrags, 9 FIG. 4 is an illustration of selected details of an embodiment of a mapping entry; FIG.

10 ist eine Darstellung von ausgewählten Einzelheiten einer Ausführungsform von verschiedenartigen komprimierten Abbildungseinträgen in das Abbild, 10 Fig. 4 is an illustration of selected details of one embodiment of various compressed map entries in the image;

11A ist eine Darstellung von ausgewählten Einzelheiten einer Ausführungsform einer Steuereinrichtung eines Festkörper-Laufwerks, 11A FIG. 4 is an illustration of selected details of one embodiment of a solid state drive controller; FIG.

11B ist eine Darstellung von ausgewählten Einzelheiten einer Ausführungsform eines Datenpfad-Segments, 11B Fig. 3 is an illustration of selected details of one embodiment of a data path segment;

11C ist eine Darstellung von ausgewählten Einzelheiten von verschiedenen Ausführungsformen des Systems gemäß einer Ausführungsform der Erfindung, 11C Figure 3 is an illustration of selected details of various embodiments of the system according to one embodiment of the invention;

12 ist ein Ablaufdiagramm des Schreibens von Daten in einen nicht-flüchtigen Speicher, 12 Fig. 10 is a flowchart of writing data to a non-volatile memory;

13 ist ein Ablaufdiagramm des Lesens von Daten aus einem nicht-flüchtigen Speicher, und 13 FIG. 11 is a flowchart of reading data from a non-volatile memory, and FIG

14 ist ein Ablaufdiagramm des Recycelns von Daten in einen nicht-flüchtigen Speicher. 14 Fig. 10 is a flowchart of recycling data to non-volatile memory.

AUSFÜHRLICHE BESCHREIBUNG VON AUSFÜHRUNGSFORMENDETAILED DESCRIPTION OF EMBODIMENTS

Ausführungsformen der Erfindung umfassen Bereitstellen einer Übergangsschicht (transition layer), die aufgeteilt bzw. partitioniert ist zwischen einem Host und einer Steuereinrichtung (controller), die (i) einen weiten Bereich von Datengrößen unterstützt, (ii) mit nicht-Block-basierenden Daten arbeitet, (iii) in Antwort auf das Schreiben der Daten ein Handle an einen Host zurückgibt, (iv) das Handle zum Lesen der Daten benutzt und/oder (v) als ein oder mehrere integrierte Schaltkreise und/oder zugeordnete Firmware implementiert werden kann. Embodiments of the invention include providing a transition layer partitioned between a host and a controller that (i) supports a wide range of data sizes, (ii) operates on non-block based data (iii) returns a handle to a host in response to the writing of the data; (iv) the handle may be used to read the data; and / or (v) may be implemented as one or more integrated circuits and / or associated firmware.

Ein Host ist mit einer Eingabe/Ausgabe-Einrichtung (wie etwa einer Steuereinrichtung eines Festkörper-Laufwerks (z.B. SSD, solid state drive) gekoppelt und die Eingabe/Ausgabe-Einrichtung ist gekoppelt mit und/oder umfasst einen nicht-flüchtigen Speicher (z.B. NVM, nonvolatile memory). Beispiele eines Hosts umfassen einen Rechner-Host, einen Server, einen Personal-Computer, einen Laptop-Computer, einen Notebook-Computer, einen Workstation-Computer, einen Minicomputer (personal digital assistant), ein Smartphone, ein Mobilfunk-Telefongerät, einen Media-Player oder -Rekorder, eine Eingabe/Ausgabe-Steuereinrichtung, einer Steuereinrichtung einer redundanten Anordnung von preiswerten/unabhängigen Scheiben (z.B. RAID, redundant array of inexpensive/independent disks)-on-chip (z.B. ROC, RAID-on-chip), und jegliche andere Einrichtungen, die einen Prozessor oder Computer umfassen. Der Host bringt Anfragen zum Zugreifen (z.B. zum Lesen oder zum Schreiben) auf den nicht-flüchtigen Speicher über die Eingabe/Ausgabe-Einrichtung hervor, und die Anfragen werden von einer Kombination des Hosts (z.B. zumindest teilweise durch auf dem Host laufende Software) und von der Eingabe/Ausgabe-Einrichtung (z.B. zumindest teilweise durch auf der Eingabe/Ausgabe-Einrichtung laufende Firmware) ausgeführt. A host is coupled to an input / output device (such as a solid state drive (eg, SSD) controller, and the input / output device is coupled to and / or includes nonvolatile memory (eg, NVM) Examples of a host include a computer host, a server, a personal computer, a laptop computer, a notebook computer, a workstation computer, a personal digital assistant, a smartphone, a mobile radio Telephone device, a media player or recorder, an input / output controller, a controller of a redundant array of inexpensive / independent disks (eg RAID, redundant array of independent disks) on-chip (eg ROC, RAID). on-chip), and any other devices that include a processor or computer, the host makes requests to access (eg, read or write) the non-volatile memory about the input / output device, and the requests are from a combination of the host (e.g. at least partially by software running on the host) and by the input / output device (e.g., at least in part by firmware running on the input / output device).

In einigen Ausführungsformen bilden ab (oder übersetzen) Flash-Übergangsschichten (z.B. FTLs, flash transition layers) logische Blockadressen (z.B. LBAs, logical block address) in einem logischen Blockadressraum (so wie diese von einem Host verwendet werden, um Eingabe/Ausgabe-Operationen in einer Eingabe/Ausgabe-Einrichtung auszuführen) auf physikalische Orte (z.B. physikalische Speicheradressen in einem physikalischen Adressraum) in einem nicht-flüchtigen Speicher, wie etwa einem nicht-flüchtigen NAND-Flash-Speicher. Gemäß verschiedener Ausführungsformen erfolgt das Abbilden einer logischen Blockadresse in einem logischen Blockadressraum über eine oder mehrere der folgenden: eine Ein-Niveau-Abbildung (one-level map); eine Zwei-Niveau-Abbildung (two-level map); eine Mehr-Niveau-Abbildung (multi-level map); eine direkte Abbildung; eine assoziative Abbildung; eine Hash-Tabelle; ein B-Baum (B-tree); ein Präfix-Baum (trie); ein Cache von einem Teil der Abbildung; und jegliche andere Mittel zum Zuordnen der logischen Blockadressen an die physikalischen Orte in dem nicht-flüchtigen Speicher. In weiteren Ausführungsformen umfasst die Abbildung eine Mehrzahl von Einträgen, wie etwa einem Eintrag für jede logische Blockadresse in dem logischen Blockadressraum.In some embodiments, from (or translates to) flash transition layers (eg, FTLs), logical block addresses (LBAs) in a logical block address space (as used by a host) form input / output operations in an input / output device) to physical locations (eg, physical memory addresses in a physical address space) in a nonvolatile memory, such as a non-volatile NAND flash memory. According to various embodiments, the mapping of a logical block address into a logical block address space occurs via one or more of the following: a one-level map; a two-level map; a multi-level map; a direct picture; an associative figure; a hash table; a B-tree; a prefix tree (trie); a cache of part of the image; and any other means for associating the logical block addresses with the physical locations in the non-volatile memory. In further embodiments, the mapping includes a plurality of entries, such as an entry for each logical block address in the logical block address space.

Im anderen Ausführungsformen bilden Flash-Übergangsschichten Namen (labels) oder andere eindeutige Bezeichner von entsprechenden Daten ab auf physikalische Orte in einem nicht-flüchtigen Speicher. Beispielsweise könnte der Name ein Hash (wie etwa ein SHA-256- oder SHA-512-Hash) der entsprechenden Daten, oder ein Objekt-Bezeichner eines entsprechenden Objektes, das als die oder in den entsprechenden Daten gespeichert ist, oder ein Bezeichner eines Dateisystems (wie etwa eine Imode) der entsprechenden Daten (wobei die entsprechenden Daten ein Dateisystem-Objekt sind) sein. Gemäß verschiedener Ausführungsformen erfolgt das Abbilden von Namen oder anderen eindeutigen Bezeichnern der entsprechenden Daten über eines oder mehrere der folgenden: eine Ein-Niveau-Abbildung; eine Zwei-Niveau-Abbildung; eine Mehr-Niveau-Abbildung; eine direkte Abbildung; eine assoziative Abbildung; eine Hash-Tabelle; ein B-Baum (B-tree); ein Präfix-Baum (trie); ein Cache eines Teils der Abbildung und jegliche andere Mittel des Zuordnens der Namen oder anderen eindeutigen Bezeichner innerhalb der physikalischen Orte des nicht-flüchtigen Speichers. In weiteren Ausführungsformen umfasst die Abbildung eine Vielzahl von Einträgen, wie etwa einen Eintrag für jeden bestehenden Namen oder anderen eindeutigen Bezeichner. Im noch weiteren Ausführungsformen ist die Abbildung hinsichtlich ihrer Größe dynamisch und wächst oder schrumpft, wenn die Anzahl der bestehenden Namen oder anderen eindeutigen Bezeichner zunimmt oder abnimmt. In einem Beispiel wächst oder schrumpft die Größe der Abbildung linear, wenn die Anzahl der bestehenden Namen oder anderen eindeutigen Bezeichner zunimmt oder abnimmt. In einem anderen Beispiel wächst oder schrumpft die Größe der Abbildung schrittweise (in diskreten Stücken), wenn die Anzahl der vorhandenen Namen oder anderen eindeutigen Bezeichner um mehr als ein entsprechender Schwellwert zunimmt oder abnimmt. In other embodiments, flash transitions form labels or other unique identifiers of corresponding data to physical locations in nonvolatile memory. For example, the name could be a hash (such as a SHA-256 or SHA-512 hash) of the corresponding data, or an object identifier of a corresponding object stored as or in the corresponding data, or an identifier of a file system (such as an imode) of the corresponding data (where the corresponding data is a file system object). According to various embodiments, the mapping of names or other unique identifiers of the corresponding data is via one or more of the following: a one-level map; a two-level image; a multi-level image; a direct picture; an associative figure; a hash table; a B-tree; a prefix tree (trie); a cache of a portion of the map and any other means of associating the names or other unique identifiers within the physical locations of the non-volatile memory. In other embodiments, the mapping includes a plurality of entries, such as an entry for each existing name or other unique identifier. In still further embodiments, the map is dynamic in size and grows or shrinks as the number of existing names or other unique identifiers increases or decreases. In one example, the size of the map grows or shrinks linearly as the number of existing names or other unique identifiers increases or decreases. In another example, the size of the map grows or shrinks incrementally (in discrete pieces) as the number of existing names or other unique identifiers increases or decreases by more than a corresponding threshold.

Im verschiedenen Ausführungsformen wird eine Mehr-Niveau-Abbildung verwendet, um eindeutige Bezeichner bereitzustellen und/oder einen Bereich der eindeutigen Bezeichner zu begrenzen. Beispielsweise wird ein Namen in einer ersten assoziativen Abbildung nachgeschlagen, um einen eindeutigen Bezeichner, der hinsichtlich seiner Länge kürzer als der Namen ist, zu erzeugen. Der eindeutige Bezeichner wird dann in einer zweiten Abbildung nachgeschlagen, um einen physikalischen Ort in dem nicht-flüchtigen Speicher zu erzeugen. In weiteren Ausführungsformen ist die zweite Abbildung eine Vielzahl von Abbildungen, wie etwa eine Abbildung für jeden aus einer Mehrzahl von physikalisch getrennten Bereichen (die z.B. in verschiedenen Festkörper-Scheiben vorhanden sind) und/oder funktionell verschiedenen Bereichen (z.B. verschiedenen Arten) des nicht-flüchtigen Speichers.In various embodiments, a multi-level map is used to provide unique identifiers and / or to delimit a range of unique identifiers. For example, a name is looked up in a first associative map to produce a unique identifier that is shorter in length than the name. The unique identifier is then looked up in a second map to create a physical location in the non-volatile memory. In further embodiments, the second mapping is a plurality of mappings, such as an image for each of a plurality of physically separated regions (eg, present in different solid state disks) and / or functionally distinct regions (eg, different types) of the non- volatile memory.

Ein jeder einer Mehrzahl von Namen (oder Handles oder logischen Blockadressen oder Bezeichnern oder anderen ähnlichen Ausdrücken) entspricht allgemein einem entsprechenden Datenobjekt (oder Sektor oder Block oder Element oder andere ähnliche Ausdrücke), und die Flash-Übergangsschicht ordnet jedem der Namen einen physikalischen Ort in dem nicht-flüchtigen Speicher des entsprechenden Datenobjekts zu. Man sagt, dass die Zuordnung des Namens und des physikalischen Orts in dem nicht-flüchtigen Speicher des entsprechenden Datenobjekts über eine Abbildung dargestellt wird, unabhängig davon, wie die Zuordnung ausgeführt wird. Weil verschiedene Beispiele hierin das Abbilden von logischen Blockadressen verwenden und andere Beispiele das Abbilden von Objekt-Namen oder Objekt-Bezeichnern verwenden, sind viele ähnliche Datenbezeichnungstechniken zusammen mit zugeordneten Abbildungstechniken gemäß dem Geist der Lehren hierin verwendbar. Each of a plurality of names (or handles or logical block addresses or identifiers or other similar expressions) generally corresponds to a corresponding data object (or sector or block or element or other similar expressions), and the flash transition layer places a physical location in each of the names to the non-volatile memory of the corresponding data object. It is said that the mapping of the name and the physical location in the non-volatile memory of the corresponding data object is represented by a map regardless of how the mapping is performed. Because various examples herein use mapping of logical block addresses and other examples use mapping of object names or object identifiers, many similar data labeling techniques, along with associated mapping techniques, are useful herein in accordance with the spirit of the teachings.

Der Ausdruck „Abbildungseinheit“, so wie er hierin verwendet wird, bezeichnet eine Größe der Datenobjekte, die durch die Flash-Übergangsschicht abgebildet werden. In einigen Ausführungsformen hat die Abbildungseinheit eine festgesetzte Größe, während in anderen Ausführungsformen die Datenobjekte hinsichtlich ihrer Größe variabel sind (und die Abbildungseinheiten folglich hinsichtlich ihrer Größe nicht festgelegt sind). The term "imaging unit" as used herein refers to a size of the data objects imaged by the flash transition layer. In some embodiments, the mapping unit has a fixed size, while in other embodiments the data objects are variable in size (and thus the mapping units are not fixed in size).

In einigen Ausführungsformen operiert das Abbilden auf ausgerichteten Einheiten von einem oder mehreren logischen Sektoren oder Blöcke. Jede Abbildungseinheit ist eine ausgerichtete Einheit von einem oder mehreren logischen Sektoren oder Blöcken. Jede Abbildungseinheit hat einen entsprechenden physikalischen Ort, wo Daten der Abbildungseinheit gespeichert sind (einschließlich der Möglichkeit eines physikalischen NULL-Ortes, wenn die Abbildungseinheit niemals geschrieben worden ist oder gekürzt (trimmed) ist. Beispielsweise werden mit 4 Kilobyte (z.B. KB) Abbildungseinheiten acht zusammenhängende (und typischerweise über acht Sektoren ausgerichtete) Sektoren mit 512 Bytes in der Form eines Serial Advanced Technology Attachement (z.B. SATA) als eine einzelne Einheit abgebildet. Allgemein hat eine Abbildung für logische Blockadressen einen Eintrag pro Abbildungseinheit, um eine entsprechende Übersetzung von der der Abbildungseinheit zugeordneten logischen Blockadresse in eine physikalische Adresse in dem nicht-flüchtigen Speicher und/oder andere Steuerungsinformation zu speichern.In some embodiments, the mapping to aligned units operates from one or more logical sectors or blocks. Each mapping unit is an aligned unit of one or more logical sectors or blocks. Each mapping unit has a corresponding physical location where data of the mapping unit is stored (including the possibility of a ZERO physical location if the mapping unit has never been written or trimmed.) For example, with 4 kilobytes (eg KB) mapping units become eight contiguous Generally, a logical block address map has one entry per mapping unit to have a corresponding translation from that of the mapping unit (typically, eight sector aligned) 512 byte sectors in the form of a Serial Advanced Technology Attachment (eg, SATA) associated logical block address in a physical address in the non-volatile memory and / or other control information store.

Im verschiedenen Ausführungsformen variiert eine Größe der Datenobjekte, die abgebildet werden (die Größe von jeder Abbildungseinheit) und/oder eine Größe der Datenobjekte, so wie sie in dem nicht-flüchtigen Speicher abgespeichert werden. In einem Beispiel speichert jeder der Einträge in der Abbildung eine Größe der entsprechenden Datenobjekte. Im Fortsetzung des Beispiels wird in einem Schlüssel-/Werte-Speicher ein Namen (label), der zum Zugreifen auf einen Eintrag in der Abbildung verwendet wird, gemäß dem Schlüssel gespeichert, und der Wert ist ein entsprechendes Datenobjekt, wobei der Wert hinsichtlich seiner Größe über verschiedene einzelne des Schlüssels variiert. In einem anderen Beispiel speichert jeder der Einträge in der Abbildung eine Angabe einer Größe des nicht-flüchtigen Speichers, der zu lesen ist, um das gespeicherte Datenobjekt zurückzuerlangen. In einer Variation des anderen Beispiels umfasst die Größe des nicht-flüchtigen Speichers, so, wie dieser durch den Eintrag in der Abbildung spezifiziert ist, Nachrichtenköpfe (header), die die entsprechenden gespeicherten Daten unter einem oder mehreren gespeicherten Datenobjekten oder Teilen davon in der Größe des nicht-flüchtigen Speichers, der durch den Eintrag der Abbildung spezifiziert ist, örtlich festlegt. In einer anderen Variation des anderen Beispiels spezifiziert die Größe des nicht-flüchtigen Speichers, der zu lesen ist, um die entsprechenden Datenobjekte, die exakte Größe und den Ort der entsprechenden, gespeicherten Datenobjekte in einem Seitenrahmen bzw. einer Seite (page) des nicht-flüchtigen Speichers zurückzuerlangen, jedoch ungeachtet der Fehlerkorrektor des nicht-flüchtigen Speichers. Zusätzliche Berechnungen werden verwendet, um eine größere Größe des nicht-flüchtigen Speichers zu bestimmen, der zu lesen ist, um sowohl das entsprechende gespeicherte Datenobjekt als auch andere ausreichende Imformation zurückzuerlangen, um eine Fehlerkorrektur auf den aus dem nicht-flüchtigen Speicher gelesenen Daten auszuführen.In various embodiments, a size of the data objects that are mapped (the size of each mapping unit) and / or a size of the data objects as stored in the non-volatile memory varies. In one example, each of the entries in the map stores a size of the corresponding data objects. Continuing the example, in a key / value memory, a label used to access an entry in the map is stored according to the key, and the value is a corresponding data object, the value being in size varies over different individual of the key. In another example, each of the entries in the map stores an indication of a size of the non-volatile memory to be read to retrieve the stored data object. In a variation of the other example, the size of the non-volatile memory, as specified by the entry in the map, includes headers that size the corresponding stored data among one or more stored data objects or portions thereof non-volatile memory specified by the entry of the picture locates. In another variation of the other example, the size of the non-volatile memory to be read specifies the corresponding data objects, the exact size, and the location of the corresponding stored data objects in a page frame of the non-volatile memory. however, regardless of the error corrector of the non-volatile memory. Additional calculations are used to determine a larger size of the non-volatile memory to be read to recover both the corresponding stored data object and other sufficient information to perform error correction on the data read from the non-volatile memory.

Gemäß verschiedener Ausführungsformen ist der nicht-flüchtige Speicher eine oder mehrere der folgenden: ein NAND-Flash, der ein (z.B. Einzel-Niveau-Zelle, single-level cell), zwei (z.B. Mehr-Niveau-Zelle, multi-level cell), drei (z.B. Tripel-Niveau-Zelle, tripple-level cell) oder mehr Bits pro Zelle speichert und der planar (2-dimensional) oder drei-dimensional (z.B. 3D) ist; ein NOR-Flash oder irgendeine andere Art eines Flash-Speichers oder elektrisch löschbaren Speichers (electrically erasable memory); ein Phasenwechsel-Speicher (z.B. PCM, phase change memory); ein magnetischer Direktzugriffspeicher (z.B. MRAM, magnetic random access memory); ein Racetrack-Speicher; ein resistiver bzw. Widerstands-basierender Direktzugriffspeicher (z.B. ReRAM, resistive random access memory); ein Batterie-gepufferter, statischer Direktzugriffspeicher (z.B. SRAM, static random access memory) oder ein dynamischer Direktzugriffspeicher (z.B. DRAM, dynamic random access memory), ein magnetisches oder optisches Speichermedium oder irgendein anderer nicht-flüchtiger Speicher.According to various embodiments, the non-volatile memory is one or more of the following: a NAND flash containing one (eg, single-level cell, single-level cell), two (eg, multi-level cell, multi-level cell) stores three (eg triple-level cell, tripple-level cell) or more bits per cell and which is planar (2-dimensional) or three-dimensional (eg, 3D); a NOR flash or any other type of flash memory or electrically erasable memory; a phase change memory (e.g., PCM, phase change memory); a magnetic random access memory (e.g., MRAM); a racetrack store; a resistive random access memory (e.g., ReRAM, resistive random access memory); a battery-buffered static random access memory (e.g., SRAM) or a dynamic random access memory (e.g., DRAM), a magnetic or optical storage medium, or any other non-volatile memory.

In einigen Ausführungsformen ist der nicht-flüchtige Speicher in einer oder mehreren Gruppen organisiert, wie etwa dadurch, dass er physikalisch in verschiedene Eingabe/Ausgabe-Einrichtungen getrennt ist (z.B. in verschiedenen Festkörper-Scheiben), oder indem er verschiedene physikalische Orte oder Zugriffsmechanismen aufweist (z.B. ein Abschnitt des nicht-flüchtigen Speichers ist ein NAND-Flash und ein zweiter Abschnitt ist ein Phasenwechsel-Speicher). In einigen der Ausführungsformen ist die Abbildung eine globale Abbildung, wobei jeder Eintrag eine Identifizierung (z.B. ID) einer Eingabe/Ausgabe-Einrichtung und einen physikalischen Ort in dieser Eingabe/Ausgabe-Einrichtung spezifiziert. Im anderen Ausführungsformen ist die Abbildung in mehrere Zeile aufgeteilt, wie etwa ein Teil pro Eingabe/Ausgabe-Einrichtung und eine Abbildung auf höherem Niveau (higher level map) und/oder eine Funktion des entsprechenden Namens bestimmt eine ausgewählte aus den Eingabe/Ausgabe-Einrichtungen.In some embodiments, the nonvolatile memory is organized into one or more groups, such as being physically separated into different input / output devices (eg, in different solid state disks), or having different physical locations or access mechanisms (eg one portion of the non-volatile memory is a NAND flash and a second portion is a phase change memory). In some of the embodiments, the mapping is a global map where each entry specifies an identifier (e.g., ID) of an input / output device and a physical location in that input / output device. In other embodiments, the map is divided into several lines, such as one part per input / output device, and a higher level map and / or a function of the corresponding name determines a selected one of the input / output devices ,

Einige nicht-flüchtige Speicher, wie etwa ein NAND-Flash, stellen eine beschreibbare (oder programmierbare) Einheit bereit, die ein nicht-flüchtiger Speicher-Seitenrahmen genannt wird (oder ein Flash-Seitenrahmen, wenn beispielsweise auf einen NAND-Flash Bezug genommen wird). Ein nicht-flüchtiger Speicher-Seitenrahmen ist allgemein die kleinste beschreibbare Einheit des nicht-flüchtigen Speichers. In einigen Ausführungsformen und/oder Nutzerszenarien umfasst ein nicht-flüchtiger Speicher-Seitenrahmen eine Anzahl von Benutzer (Nicht-Fehlerkorrektur-Code)-Daten-Bytes und eine Größe von Platzreserven mit Metadaten und Fehlerkorrektur-Codierung (z.B. ECC, error code correction). Typische Größen von NAND-Flash-Seitenrahmen sind 8 KB oder 16 KB oder 32 KB von Nutzerdaten, wohingegen typische Größen von Abbildungseinheiten für logische Blockadressen 4 KB oder 8 KB sind. (Während der Ausdruck „Benutzer“-Daten im Hinblick auf die nicht-flüchtigen Speicher-Seitenrahmen verwendet wird, speichern einige nicht-flüchtige Speicher-Seitenrahmen „System“-Daten, wie etwa Abbildungsdaten und/oder Prüfpunkt-Daten (checkpoint data). Es ist beabsichtigt, dass Nutzerdaten allgemein Abschnitte mit Nicht-Fehlerkorrektur-Codierung von einem nicht-flüchtigen Speicher-Seitenrahmen bezeichnet. Die NAND-Flash-Seitenrahmen sind in Blöcken organisiert, typischerweise 128, 256 oder 512 Flash-Seitenrahmen pro Block. Ein Block ist die Einheit mit minimaler Größe, die gelöscht werden kann, und ein NAND-Flash-Seitenrahmen wird gelöscht, bevor der Seitenrahmen in der Lage ist, (neu) beschrieben zu werden.Some nonvolatile memories, such as a NAND flash, provide a writable (or programmable) unit called a non-volatile memory page frame (or a flash page frame, for example, when referring to a NAND flash ). A non-volatile memory page frame is generally the smallest writable unit of non-volatile memory. In some embodiments and / or user scenarios, a nonvolatile memory page frame includes a number of user (non-error correcting code) data bytes and a size of metadata space reservation and error correction coding (e.g., ECC). Typical sizes of NAND flash page frames are 8 KB or 16 KB or 32 KB of user data, whereas typical sizes of logical block address mapping units are 4 KB or 8 KB. (While the term "user" data is used with respect to the non-volatile memory page frames, some non-volatile memory page frames store "system" data such as image data and / or checkpoint data. It is intended that user data generally refers to non-error correcting encoding portions of a non-volatile memory page frame The NAND flash page frames are organized in blocks, typically 128, 256, or 512 flash page frames per block the minimum size unit that can be deleted, and a NAND flash page frame is cleared before the page frame is able to be (re) written.

Einige nicht-flüchtigen Speicher, wie etwa ein NAND-Flash, weisen mehrere Ebenen (planes) und/oder Banken (banks) auf, und ermöglichen „Mehr-Ebenen“ („multi-plane“)-Operationen, die auf einen Seitenrahmen und/oder einen Block aus jeder von zwei oder mehreren Ebenen parallel zugreifen (lesen oder programmieren oder löschen). Die Verwendung von Mehr-Ebenen-Programmierung vergrößert in vorteilhafter Weise die Schreib-Bandbreite, und bewirkt, dass die Basiseinheit des Schreibens ein Mehr-Ebenen-Seitenrahmen anstatt ein einzelner Ein-Ebenen-Seitenrahmens ist. Der Ausdruck nicht-flüchtiger Speicher-Seitenrahmen (oder nicht-flüchtiger Speicher-Block), so, wie er hierin verwendet wird, stellt entweder einen einzelnen, nicht-flüchtigen Speicher-Seitenrahmen (oder Block) oder einen Mehr-Ebenen, nicht-flüchtigen Speicher-Seitenrahmen (oder Block) dar, je nach einer Art und Weise, in der der nicht-flüchtige Speicher verwendet wird. Some nonvolatile memories, such as NAND flash, have multiple planes and / or banks, and allow for "multi-plane" operations on a page frame and / or a block from each of access two or more levels in parallel (read or program or delete). The use of multi-level programming advantageously increases the write bandwidth, and causes the base unit of the writing to be a multi-level page frame rather than a single one-level page frame. The term non-volatile memory page frame (or non-volatile memory block), as used herein, represents either a single, non-volatile memory page frame (or block) or a multi-level, non-volatile Memory page frame (or block), depending on a way in which the non-volatile memory is used.

Während hierin der Ausdruck „Flash“-Übergangsschicht (z.B. FTL, flash transition layer) verwendet wird, ist ein Konzept einer Übergangsschicht zwischen logischen und physikalischen Adressen auf mehrere Arten von nicht-flüchtigem Speicher anwendbar. In einem Beispiel werden bestimmten Arten von nicht-flüchtigen Speichern, wie etwa ein NAND-Flash, in großen Einheiten gelöscht, bevor sie erneut beschrieben werden. In einem anderen Beispiel unterliegen einige Arten nicht-flüchtiger Speicher einer Abnutzung, was zu einer Abnutzungs-Nivellierung führt (Verschieben von Daten von stärker abgenutzten Bereichen des nicht-flüchtigen Speichers in weniger abgenutzte Bereiche). Im noch einem anderen Beispiel haben neue Formen von magnetischen Aufzeichnungen in Festplatten-Speichern, wie etwa geschachtelte magnetische Aufzeichnung (shingled magnetic recording), eine Unfähigkeit, zuvor beschriebene Daten zu überschreiben, ohne eine viel größere Menge anderer Daten zu löschen. Im verschiedenen Ausführungsformen profitieren nicht-flüchtige Speicher-Arten, die grobkörnig (coarse-grained) sind oder die eine endliche Standzeit haben, von einer (Flash)-Übergangsschicht. While the term "flash" transition layer (e.g., FTL, flash transition layer) is used herein, a concept of a transition layer between logical and physical addresses is applicable to multiple types of non-volatile memory. In one example, certain types of nonvolatile memory, such as a NAND flash, are erased in large units before being rewritten. In another example, some types of non-volatile memory are subject to wear, resulting in wear leveling (shifting data from more worn areas of the non-volatile memory to less worn areas). In yet another example, new forms of magnetic recordings in hard disk drives, such as shingled magnetic recording, have an inability to overwrite previously described data without deleting a much larger amount of other data. In various embodiments, nonvolatile memory types that are coarse-grained or that have a finite life benefit from a (flash) transition layer.

Mit Verweis auf 1 wird eine Darstellung von ausgewählten Einzelheiten von einer Ausführungsform des Abbildens einer logischen Blockadresse auf Bereiche mit fester Größe innerhalb eines nicht-flüchtigen Speichers gezeigt. Einige herkömmliche Flash-Übergangsschichten gehen davon aus, dass eine Anzahl von Nutzerdaten-Bytes in einem nicht-flüchtigen Speicher-Seitenrahmen (z.B. nicht-flüchtiger Speicher-Seitenrahmen 100 eine Potenz von zwei (und/oder ein Vielfaches der Sektor-Größe) ist, und teilen den nicht-flüchtigen Speicher-Seitenrahmen in eine ganzzahlige Anzahl von Abbildungseinheiten (von denen jede in 1 als DATEN gezeigt ist) ein. Beispielsweise mit 16 KB Nutzerdaten pro nicht-flüchtigem Speicher-Seitenrahmen und 4 KB Abbildungseinheiten, enthält jeder nicht-flüchtige Speicher-Seitenrahmen vier Abbildungseinheiten, und die Flash-Übergangsschicht bildet eine Adresse von jeder Abbildungseinheit (z.B. LBA [M:U] 110) auf einen entsprechenden, nicht-flüchtigen Speicher-Seitenrahmen und eine der vier Abbildungseinheiten innerhalb der entsprechenden nicht-flüchtigen Speicher-Seitenrahmen ab. Das heißt, jeder Abbildungseintrag enthält entsprechende Felder, wie etwa:
nonvolatile_memory_page_address[n-1...0], oder
mapping_unit_within_nonvolatile_memory_page[k-1:0],
wobei das Element „nonvolatile_memory_page_address“ einen eindeutigen nicht-flüchtigen Seitenrahmen in dem nicht-flüchtigen Speicher bezeichnet und kdas Element „mapping_unit_within_nonvolatile_memory_page“ einen von 2 Abschnitten mit Bereichen mit Abbildungseinheitengrößen eines jeden nicht-flüchtigen Speicher-Seitenrahmens (wobei k für den gesamten nicht-flüchtigen Speicher festgesetzt ist). Eine Sub-Seitenrahmen(sub-page)-Adresse 104 ist eine Kombination von „nonvolatile_memory_page_address“ und „mapping_unit_within_nonvolatile_memory_page“. Für Sektor-basierende (z.B. mit feinerer Granularität als die Abbildungseinheit) Adressierung spezifizieren niederwertige Bits der logischen Blockadresse (z.B. LBA[U-1:0] 111) einen Teilabschnitt, wie etwa eine Anzahl von Sektoren (z.B. Sektor(en) innerhalb eines Sub-Seitenrahmens 113) innerhalb der Abbildungseinheit.
With reference to 1 For example, an illustration of selected details of one embodiment of mapping a logical block address to fixed size areas within a nonvolatile memory is shown. Some conventional flash transitions assume that a number of user data bytes are stored in a non-volatile memory page frame (eg non-volatile memory page frame) 100 is a power of two (and / or a multiple of the sector size) and divide the non-volatile memory page frame into an integer number of mapping units (each of which is in 1 shown as DATA). For example, with 16 KB of user data per nonvolatile memory page frame and 4 KB of imaging units, each nonvolatile memory page frame contains four mapping units, and the flash transition layer forms one address of each mapping unit (eg, LBA [M: U]. 110 ) to a corresponding nonvolatile memory page frame and one of the four mapping units within the respective nonvolatile memory page frames. That is, each map entry contains corresponding fields, such as:
nonvolatile_memory_page_address [n-1 ... 0], or
mapping_unit_within_nonvolatile_memory_page [k-1: 0],
where the element "nonvolatile_memory_page_address" designates a unique non-volatile page frame in the non-volatile memory and the element "mapping_unit_within_nonvolatile_memory_page" one of 2 sections with areas of mapping unit sizes of each non-volatile memory page frame (where k is the entire non-volatile memory Memory is fixed). A sub-page sub-page address 104 is a combination of "nonvolatile_memory_page_address" and "mapping_unit_within_nonvolatile_memory_page". For sector-based addressing (eg, with finer granularity than the mapping unit), low-order bits specify the logical block address (eg, LBA [U-1: 0] 111 ) a subsection, such as a number of sectors (eg, sector (s) within a sub-page frame) 113 ) within the imaging unit.

Mit Verweis auf 2 wird eine Darstellung von ausgewählten Einzelheiten einer Ausführungsform des Abbildens einer logischen Blockadresse auf einen Bereich mit variabler Größe, der optional nicht-flüchtige Speicher-Seitenrahmen umspannt, gezeigt. Flash-Übergangsschichten mit variabler Größe (z.B. VTLEs, variable-size flash transition layers) bilden konzeptuell eine Adresse (oder Namen bzw. Bezeichner) einer Abbildungseinheit (z.B. LBA[M:U] 110) ab auf einen Bereich mit variabler Größe von einem oder mehreren nicht-flüchtigen Speicher-Seitenrahmen, weil beispielsweise Daten der Abbildungseinheit komprimiert werden, bevor sie in dem nicht-flüchtigen Speicher gespeichert werden, und/oder weil, in einem anderen Beispiel, die Abbildungseinheiten durch den Host als Abschnitte bzw. Stücke mit variabler Größe, wie etwa für einen Objektspeicher, geschrieben werden. Jedoch macht eine vollständige Byte-Adresse 204 und eine Byte-Datenlänge 206 in jedem Abbildungseintrag die Abbildungseinträge groß im Vergleich zu herkömmlichen Flash-Übergangsschichten.With reference to 2 For example, an illustration of selected details of one embodiment of mapping a logical block address to a variable size area that optionally spans nonvolatile memory page frames is shown. Flash transition layers of variable size (eg VTLEs, variable-size flash transition layers) conceptually form an address (or name or identifier) of a mapping unit (eg LBA [M: U] 110 ) to a variable size area of one or more non-volatile memory page frames because, for example, data of the mapping unit is compressed before being stored in the non-volatile memory and / or because, in another example, the mapping units are written by the host as sections of variable size, such as for an object store. However, make a full byte address 204 and a byte data length 206 In each map entry, the map entries are large compared to conventional flash transitions.

Mit Verweis auf 3 wird eine Darstellung eine Ausführungsform eines nicht-flüchtigen Speicher-Seitenrahmens, der eine ganzzahlige Anzahl von Leseeinheiten umfasst, gezeigt. In einigen Ausführungsformen führen Flash-Übergangsschichten mit variabler Größe das Abbilden von Adressen (oder Namen) von Abbildungseinheiten auf physikalische Adressen aus, indem sie eine Epage (z.B. Fehlerkorrektur-Kodierungsseiten)-Adresse, die auch als eine „Leseeinheit“-Adresse bezeichnet wird, abbildet. Eine Epage (oder Leseeinheit) ist die minimale Größe von Daten, die aus bzw. von dem nicht-flüchtigen Speicher gelesen werden und durch den Fehlerkorrektur-Code, der zum Schützen des Imhalts des nicht-flüchtigen Speichers verwendet wird, korrigiert werden kann. Das heißt, jede Leseeinheit enthält eine Menge bzw. Größe von Daten und entsprechende Fehlerkorrektur-Code-Überprüfungs-Bytes, die diese Daten schützen. In einigen Ausführungsformen wird ein nicht-flüchtiger Speicher-Seitenrahmen (wie etwa der nicht-flüchtige Speicher-Seitenrahmen 100) oder, in anderen Ausführungsformen, eine Gruppe von nicht-flüchtigen Speicher-Seitenrahmen, die zum Zwecke des Schreibens als eine Einheit behandelt werden, in eine ganzzahlige Anzahl von Leseeinheiten unterteilt, so wie das in 3 veranschaulicht ist.With reference to 3 For example, one illustration shows one embodiment of a non-volatile memory page frame that includes an integer number of read units. In some embodiments, variable size flash transition layers perform mapping of addresses (or names) of mapping units to physical addresses by using an epage (eg, error correction encoding pages) address, also referred to as a "read device" address. maps. An epage (or reading unit) is the minimum Size of data read from the nonvolatile memory and corrected by the error correction code used to protect the content of the nonvolatile memory. That is, each read unit contains a set of data and corresponding error correction code check bytes protecting that data. In some embodiments, a non-volatile memory page frame (such as the non-volatile memory page frame 100 ) or, in other embodiments, a group of non-volatile memory page frames, which are treated as a unit for purposes of writing, are divided into an integer number of read units, such as that in FIG 3 is illustrated.

Bei einigen Arten von nicht-flüchtigen Speichern, wie etwa einem NAND-Flash, sind die in dem nicht-flüchtigen Speicher gespeicherten Daten eine Mischung von Nutzerdaten-Bytes und Fehlerkorrektur-Code-Bytes (Fehlerkorrektur-Imformation), und eine Steuerungseinrichtung auf höherem Niveau, die auf den nicht-flüchtigen Speicher zugreift, bestimmt, welche Bytes und wie viele der Bytes des nicht-flüchtigen Speichers für Nutzerdaten verwendet werden, und welche Bytes und wie viele der Bytes des nicht-flüchtigen Speichers für den Fehlerkorrektur-Code verwendet werden. Im verschiedenen Ausführungsformen ist es möglich, dass die Anzahl der Leseeinheiten pro nicht-flüchtigem Speicher-Seitenrahmen variiert. Beispielsweise verwenden einige Abschnitte des nicht-flüchtigen Speichers stärkere Fehlerkorrektur-Codes als andere (dadurch, dass sie mehr Bytes in dem nicht-flüchtigen Speicher-Seitenrahmen für die Fehlerkorrektur-Codierungs-Imformation verwenden), und haben weniger Leseeinheiten und/oder weniger verwendbare Daten pro Leseeinheit. In einem anderen Beispiel variiert die Anzahl der Leseeinheiten pro nicht-flüchtigem Speicher-Seitenrahmen, wenn der nicht-flüchtige Speicher verwendet wird, weil die Programmierungs-/Löschungs-Zyklen dazu neigen, den nicht-flüchtigen Speicher zu schwächen, was zu stärkeren Fehlerkorrektur-Codes führt, wenn der nicht-flüchtige Speicher mehr benutzt (stärker abgenutzt) wird. In some types of non-volatile memory, such as a NAND flash, the data stored in the nonvolatile memory is a mixture of user data bytes and error correction code bytes (error correction information), and a higher level controller which accesses the nonvolatile memory determines which bytes and how many of the bytes of the nonvolatile memory are used for user data, and which bytes and how many of the bytes of the nonvolatile memory are used for the error correction code. In various embodiments, it is possible for the number of read units per non-volatile memory page frame to vary. For example, some portions of the nonvolatile memory use stronger error correction codes than others (by using more bytes in the nonvolatile memory page frame for the error correction encoding information) and have fewer read units and / or less usable data per reading unit. In another example, the number of read units per non-volatile memory page frame varies when the non-volatile memory is used because the program / erase cycles tend to weaken the non-volatile memory, resulting in more error correction. Codes result when the non-volatile memory becomes more used (more worn).

Gemäß verschiedener Ausführungsformen ist der verwendete Fehlerkorrektur-Code einer oder mehrere der folgenden: ein Reed-Solomon-(z.B. RS)-Code; ein Bose Chaudhuri Hocquenghem-(z.B: BCH)-Code; ein Turbo-Code; eine Paritätsprüfung mit harten Entscheidungen (hard decision parity-check) und/oder ein Code mit einer Paritätsprüfung mit weichen Entscheidungen und niedriger Dichte (soft decision low density parity-check) (z.B. LDPC); ein Polar-Code; ein nicht-binärer Code; eine Code mit einer redundanten Anordnung von preiswerten/unabhängigen Festplatten (z.B. RAID, redundant array of inexpensive/independent disks); ein Löschungs-Code; irgendein anderer Fehlerkorrektur-Code; irgendeine Kombination der vorgenannten, einschließlich Zusammensetzungen (compositions), Aneinanderkettungen (Konkatenationen) und Verschachtelungen (interleaving). Typische Codewort-Größen reichen von 512 Bytes (plus Fehlerkorrektur-Codierungs-Bytes) bis zu 2176 Bytes (plus Fehlerkorrektur-Codierungs-Bytes). Typische Anzahlen von Fehlerkorrektur-Codierungs-Bytes reichen von nur wenigen Bytes bis zu mehreren Hundert Bytes. In einigen NAND-Flash-Einrichtungen mit Mehr-Niveau-Zellen sind Fehlerkorrektur-Kriterien 40 Bits pro 1 KB Nutzerdaten. In einigen NAND-Flash-Einrichtungen mit Mehr-Niveau-Zellen sind Code-Raten (ein Verhältnis von Benutzer-Bytes zu den gesamten Bytes in einer Leseeinheit) typischerweise niedriger als 94%. Beispielsweise hat eine MLC NAND-Flash-Einrichtung Flash-Seitenrahmen der Größe von 17.664 Bytes, von denen 16.384 Bytes nominal zum Speichern von abgebildeten Daten verwendet werden und 1.280 Bytes „Platzreserve“-Bytes sind, die normalerweise zum Speichern von Metadaten und Fehlerkorrektur-Codierungs-Bytes verwendet werden. Eine empfohlene Fehlerkorrektur-Codierungs-Stärke für die MLC NAND-Flash-Einrichtung ist 40 Korrektur-Bits pro 1 KB, die 70 Bytes der Platzreserve-Bytes pro 1 KB der abgebildeten Daten-Bytes verwendet. According to various embodiments, the error correction code used is one or more of the following: a Reed-Solomon (e.g., RS) code; a Bose Chaudhuri Hocquenghem (e.g., BCH) code; a turbo code; a hard decision parity check and / or a soft decision low density parity check parity check (e.g., LDPC); a polar code; a non-binary code; a code with a redundant array of inexpensive / independent hard disks (e.g., RAID, redundant array of / independent disks); an erasure code; any other error correction code; any combination of the foregoing, including compositions, concatenations and interleaving. Typical codeword sizes range from 512 bytes (plus error correction coding bytes) to 2176 bytes (plus error correction coding bytes). Typical numbers of error correction coding bytes range from only a few bytes to several hundred bytes. In some NAND flash devices with multi-level cells, error correction criteria are 40 bits per 1 KB of user data. In some multi-level cell NAND flash devices, code rates (a ratio of user bytes to total bytes in a read unit) are typically less than 94%. For example, an MLC NAND flash device has 17,664 byte Flash page frames, of which 16,384 bytes are nominally used to store mapped data and 1,280 bytes are "space" bytes that are normally used to store metadata and error correction coding Bytes are used. A recommended error correction coding strength for the MLC NAND flash device is 40 correction bits per 1 KB using 70 bytes of space bytes per 1K of the mapped data bytes.

Mit Verweis auf 4 wird eine Darstellung von ausgewählten Einzelheiten einer Ausführungsform der Abbildung einer logischen Blockadresse auf einen Bereich mit variabler Größe, die eine oder mehrere Leseeinheiten umspannt, gezeigt. In einigen Ausführungsformen bildet eine VFTL-Abbildung die Adresse (oder Namen bzw. Bezeichner) einer Abbildungseinheit mit variabler Größe (z.B. komprimiert) (z.B. LBA[M:U] 110) auf eine Anzahl von Leseeinheiten, die in jedem Eintrag der Abbildung als eine Adresse 404 einer Leseeinheit und eine Umspannung (span) (eine Anzahl von Leseeinheiten) 406 dargestellt sind. Die Leseeinheiten, die durch einen der Abbildungseinträge bezeichnet werden, sind beispielsweise in einem oder mehreren (logisch und/oder physikalisch) aufeinander folgenden, nicht-flüchtigen Speicher-Seitenrahmen, wobei die Anzahl der Leseeinheiten optional und/oder wahlweise eine Begrenzung eines nicht-flüchtigen Speicher-Seitenrahmens überschreiten. Im verschiedenen Ausführungsformen, die Daten innerhalb von Leseeinheiten packen, ist ein Eintrag der Abbildung allein im Allgemeinen nicht ausreichend, um die zugeordneten Daten zu lokalisieren, weil der Eintrag nur die Leseeinheiten bezeichnet und nicht einen Ort der Daten innerhalb der Leseeinheiten, und es wird weitere Imformation (wie etwa Nachrichtenköpfe (header) innerhalb der referenzierten Leseeinheiten verwendet, um die zugeordneten Daten genau zu lokalisieren. With reference to 4 For example, an illustration of selected details of one embodiment of mapping a logical block address to a variable size area spanning one or more read units is shown. In some embodiments, a VFTL map forms the address (or name or identifier) of a variable-sized mapping unit (eg, compressed) (eg, LBA [M: U]. 110 ) to a number of read units included in each entry of the map as an address 404 a reading unit and a span (a number of reading units) 406 are shown. For example, the read units referred to by one of the mapping entries are in one or more (logically and / or physically) consecutive nonvolatile memory page frames, the number of read units being optional and / or optionally a non-volatile Exceed memory page frame. In various embodiments, which pack data within read units, an entry of the map alone is generally not sufficient to locate the associated data, because the entry designates only the readers and not a location of the data within the readers, and there will be more Imformation (such as headers within the referenced readers used to accurately locate the associated data.

In einigen Ausführungsformen werden Daten in die nicht-flüchtigen Speicher-Seitenrahmen in einer Art und Weise geschrieben, die über mehrere Chips des nicht-flüchtigen Speichers gestreift (striped) ist. Das Streifen (striping) von Schreibdaten über mehrere Chips ermöglicht in vorteilhafter Weise eine größere Schreib-Bandbreite, dadurch, dass nur ein nicht-flüchtiger Speicher-Seitenrahmen einmal pro Streifen in einem gegebenen Chip geschrieben wird. Ein Streifen von Blöcken über mehrere Chips wird ein Redundanzblock genannt, weil in weiteren Ausführungsformen und/oder Nutzerszenarien RAID-artige Redundanz zu einer Redundanzblock-Basis unter Verwendung von beispielsweise einem redundanten Chip hinzugefügt wird. Im verschiedenen Ausführungsformen sind einige Blöcke des nicht-flüchtigen Speichers defekt und werden beim Schreiben übersprungen, so dass das Aufteilen in Streifen gelegentlich „Löcher“ aufweist, wo einer der Chips übersprungen wird (anstatt dass in die nicht-flüchtigen Speicher-Seitenrahmen eines schlechten Blocks (bad block) geschrieben wird). In einigen Ausführungsformen sind „sequentielle“ bzw. aufeinanderfolgende, nicht-flüchtige Speicher-Seitenrahmen in einer logischen Reihenfolge, die durch eine Reihenfolge, in der die nicht-flüchtigen Speicher-Seitenrahmen geschrieben werden, bestimmt ist, sequentiell bzw. aufeinanderfolgend.In some embodiments, data is written to the nonvolatile memory page frames in a manner that is shared across multiple Chips of non-volatile memory is striped. Striping of write data across multiple chips advantageously allows for greater write bandwidth by writing only one nonvolatile memory page frame once per stripe in a given chip. A strip of blocks over multiple chips is called a redundancy block because in further embodiments and / or user scenarios RAID-like redundancy is added to a redundancy block basis using, for example, a redundant chip. In various embodiments, some blocks of the non-volatile memory are defective and are skipped during writing so that splitting into stripes occasionally has "holes" where one of the chips is skipped (rather than being written into the non-volatile memory page frames of a bad block (bad block) is written). In some embodiments, "sequential" non-volatile memory page frames are sequentially determined in a logical order determined by an order in which the nonvolatile memory page frames are written.

Mit Verweis auf 5 wird eine Darstellung von ausgewählten Einzelheiten einer Ausführungsform einer Leseeinheit, die Nachrichtenköpfe und Daten umfasst, gezeigt. Im verschiedenen Ausführungsformen erzeugt die in 4 dargestellte Abbildung ein Kriterium, um die Daten mit variabler Größe innerhalb der Leseeinheiten zu lokalisieren. Wie in 5 veranschaulicht, hat jede Leseeinheit (z.B. Leseeinheiten 500 und 510) einen Satz von null oder mehreren Nachrichtenköpfen 501, und die Nachrichtenköpfe werden, typischerweise durch Hardware, in eine oder mehrere Leseeinheiten geschrieben, wenn die Daten mit variabler Größe „zusammengepackt“ (tiled) (z.B. dicht gepackt ohne verschwendeten Platz) geschrieben. Die Nachrichtenköpfe werden, typischerweise durch andere Hardware, interpretiert, um die Daten mit variabler Größe zu extrahieren, wenn der nicht-flüchtige Speicher gelesen wird. Daten mit variabler Größe werden über einen entsprechenden Versatz (offset) und eine Länge in einem der Nachrichtenköpfe, der eine übereinstimmende logische Blockadresse (oder Namen), und optional Daten und/oder selektive umspannende Leseeinheiten (wie etwa die Daten mit variabler Größe, die durch „Daten“, „Start“ und „Daten, Fortsetzung“ dargestellt sind, umfasst, lokalisiert.With reference to 5 For example, an illustration of selected details of an embodiment of a reader that includes message headers and data is shown. In various embodiments, the in 4 Figure 1 illustrates a criterion for locating the variable size data within the readers. As in 5 has each reading unit (eg 500 and 510 ) a set of zero or more headers 501 and the message headers are written into one or more read units, typically by hardware, when the variable size data is "tiled" (eg, packed tightly without wasted space). The message headers are interpreted, typically by other hardware, to extract the variable size data when the non-volatile memory is read. Variable size data is provided via a corresponding offset and a length in one of the message headers, a matching logical block address (or name), and optionally data and / or selective spanning reading units (such as the variable size data generated by "Data", "Start" and "Data, Continuation" are included, localized.

Im verschiedenen Ausführungsformen werden die Nachrichtenköpfe auch als ein Teil von Recycling (z.B. Abfallsammlung und/oder Abnutzungs-Nivellierung) verwendet – das Einschließen der logischen Blockadressen (oder äquivalent dazu die Adresse der Abbildungseinheit oder Namen) in den Nachrichtenköpfen ermöglicht sowohl das Auffinden der Daten mit variabler Größe innerhalb einer Leseeinheit und stellt auch eine Art und Weise bereit, um zu bestimmen, wenn eine bestimmte der Leseeinheiten gelesen wird, falls die Daten mit variabler Größe darin immer noch gültig sind oder überschrieben worden sind (durch Nachschlagen der logischen Blockadresse oder Namen in der Abbildung und Bestimmen, ob die Abbildung immer noch eine physikalische Adresse der bestimmten Leseeinheit referenziert oder aktualisiert worden ist, so dass sie eine andere der Leseeinheiten referenziert). Folglich kann man sagen, dass die Nachrichtenköpfe eine „umgekehrte“ Abbildung (reverse map) ausbilden, dadurch, dass die Nachrichtenköpfe in Kombination mit einem physikalischen Ort der Leseeinheiten Imformation haben, die ähnlich der in der Abbildung ist, jedoch ausgehend vom physikalischen Ort der logischen Blockadresse (oder Namen) zugeordnet sind.In various embodiments, the message headers are also used as part of recycling (eg, garbage collection and / or wear leveling) - including the logical block addresses (or equivalently the address of the mapping unit or names) in the headers allows for both finding the data variable size within a read unit and also provides a way to determine when a particular one of the read units is read, if the variable size data therein is still valid or has been overwritten (by looking up the logical block address or name in mapping and determining whether the map has still been referenced or updated to a physical address of the particular reader so that it references another of the readers). Consequently, it can be said that the message headers form a "reverse map" in that the message headers have imformation in combination with a physical location of the readers that is similar to that in the figure, but starting from the physical location of the logical Block address (or name) are assigned.

In einigen Ausführungsformen wird spezielle Hardware zum Extrahieren von Daten aus den Leseeinheiten, basierend auf den logischen Blockadressen (oder Namen), implementiert, um mit hoher Effizienz für statistische Lese-Vorgänge zu arbeiten. Die spezielle Hardware analysiert (parst) Nachrichtenköpfe innerhalb einer oder mehrerer Leseeinheiten, um den einen der Nachrichtenköpfe mit einer vorgegebenen logischen Blockadresse (oder Namen) zu finden, und benutzt dann die entsprechende Länge und den Versatz (offset), um die zugeordneten Daten mit variabler Größe zu extrahieren. Eine Hardware-basierende Lösung ist jedoch kostspielig (hinsichtlich Siliziumfläche und Leistung). Für eine niedrig-endige (low-end) und/oder mobile Umgebung, wo sequentielle Leistungsfähigkeit wichtiger als statistische Leistungsfähigkeit ist, werden Änderungen an der Flash-Übergangsschicht mit variabler Größe implementiert, um Siliziumfläche zu verringern, Leistung einzusparen und hohe sequentielle Durchflussraten zu erzielen.In some embodiments, special hardware for extracting data from the read units based on the logical block addresses (or names) is implemented to operate with high efficiency for statistical reads. The specialized hardware parses message headers within one or more read units to find the one of the headers with a given logical block address (or name) and then uses the appropriate length and offset to make the associated data variable To extract size. However, a hardware-based solution is costly (in terms of silicon area and power). For a low-end and / or mobile environment where sequential performance is more important than statistical performance, changes to the variable-size flash transition layer are implemented to reduce silicon area, conserve power, and achieve high sequential flow rates ,

In einigen Ausführungsformen packt eine sequentiell-lese-optimierte Flash-Übergangsschicht mit variabler Größe (z.B. SRO-VTL, sequential-read-optimized variable-size flash transition layer) in dichter Form (dicht gepackte) Daten in den nicht-flüchtigen Speicher-Seitenrahmen (oder, in einigen Ausführungsformen, in eine Gruppe von nicht-flüchtigen Speicher-Seitenrahmen, die zum Zweck des Schreibens als eine Einheit behandelt werden) ohne irgendwelche Lücken für Nachrichtenköpfe innerhalb der Daten – wobei alle Nachrichtenköpfe in einem Bereich des nicht-flüchtigen Speicher-Seitenrahmens zusammen gruppiert sind. In weiteren Ausführungsformen werden die Nachrichtenköpfe nicht dynamisch verwendet, um auf Daten zuzugreifen (so wie in einigen Flash-Übergangsschichten), sondern werden nur zum Recycling und Wiederherstellen, wie etwa von unerwarteten Leistungsverlusten, verwendet. Stattdessen umfassen die Einträge der Abbildung vollständige Imformation, die verwendet wird, um die Daten mit variabler Größe (z.B. komprimiert) innerhalb der nicht-flüchtigen Speicher-Seitenrahmen zu finden. Das Trennen von Nachrichtenköpfen und Daten in verschiedene Bereiche des nicht-flüchtigen Speicher-Seitenrahmens führt zu Leseeinheiten, die nur Nachrichtenköpfe umfassen, Leseeinheiten, die eine Mischung von Nachrichtenköpfen und Daten umfassen (jedoch wie in 6, nur eine derartige Leseeinheit pro nicht-flüchtigem Speicher-Seitenrahmen), und Leseeinheiten, die nur Daten umfassen. In some embodiments, a variable-sized sequential-read optimized flash transition layer (eg, SRO-VTL) densely packs (densely packed) data into the non-volatile memory page frame (or, in some embodiments, a group of non-volatile memory page frames treated as a unit for purposes of writing) without any gaps for message headers within the data - all message headers being in a non-volatile memory area - Page frames are grouped together. In further embodiments, the message headers are not dynamically used to access data (as in some flash transition layers), but are only used for recycling and restoring, such as unexpected performance losses. Instead, the entries include the figure full imformation, which is used to find the variable size data (eg compressed) within the non-volatile memory page frames. The separation of headers and data into various areas of the non-volatile memory page frame results in readers that include only headers, readers that include a mix of headers and data (but as in FIG 6 , only one such read unit per nonvolatile memory page frame), and read units comprising only data.

Während sie für sequentiellen Lese-Durchsatz bei niedrigen Kosten ausgelegt ist, ist eine sequentiell-lese-optimierte Flash-Übergangsschicht mit variabler Größe in der Lage, in anderen Metriken, wie etwa statistische Lese-Eingabe/Ausgabe-Operationen pro Sekunde (z.B. IOPs, statistische Schreib-Eingabe/Ausgabe-Operationen pro Sekunde) und sequentiellen Schreibdurchsatz, vergleichsweise gut abzuschneiden. Jedoch auferlegt das Entfernen von Hardware-Hilfen für Funktionen, wie etwa VFTL-artiges Dichtpacken von Daten mit Nachrichtenköpfen in jeder Leseeinheit, eine größere Belastung auf einen Steuerungsprozessor. Alternativ verwendet in einigen Ausführungsformen eine sequentiell-lese-optimierte Flash-Übergangsschicht mit variabler Größe Hardware-Hilfen zum Dichtpacken von Daten (data tiling), Daten-Extraktion, oder anderen Operationen.While designed for low cost sequential read throughput, a variable size sequential read-optimized flash transition layer is capable of other metrics, such as statistical read I / O operations per second (eg, IOPs). random write input / output operations per second) and sequential write throughput to cut comparatively well. However, removing hardware help for functions such as VFTL-like packing data with message headers in each reader imposes a greater burden on a control processor. Alternatively, in some embodiments, a variable size sequential read-optimized flash transition layer uses hardware help for data tiling, data extraction, or other operations.

Mit Verweis auf 6 wird eine Darstellung einer Ausführungsform eines SRO-VFTL nicht-flüchtigen Speicher-Seitenrahmens gezeigt. Mit Verweis auf 7 wird eine Darstellung einer anderen Ausführungsform einer SRO-VFTL nicht-flüchtigen Speicher-Seitenrahmen gezeigt. Ein Unterschied zwischen den Ausführungsformen der 6 und der 7 ist, ob die Fortsetzungsdaten von einem vorhergehenden, nicht-flüchtigen Speicher-Seitenrahmen 640 vor oder nach den Nachrichtenköpfen ist. Es sind verschiedene Ausführungsformen und Anordnungen der Daten innerhalb des nicht-flüchtigen Speicher-Seitenrahmens denkbar.With reference to 6 A diagram of one embodiment of an SRO-VFTL nonvolatile memory page frame is shown. With reference to 7 FIG. 3 is an illustration of another embodiment of an SRO VFTL non-volatile memory page frame. A difference between the embodiments of the 6 and the 7 is whether the continuation data from a previous, non-volatile memory page frame 640 is before or after the message headers. Various embodiments and arrangements of the data within the non-volatile memory page frame are conceivable.

Gemäß verschiedener Ausführungsformen umfasst ein nicht-flüchtiger Speicher-Seitenrahmen einen oder mehrere der folgenden:

  • – Nachrichtenköpfe, einschließlich eines Master-Nachrichtenkopfs 610, optional und/oder selektiv einen Redundanzblock-Nachrichtenkopf 620 (z.B. ein Nachrichtenkopf, der in dem ersten Seitenrahmen von jedem Block in einem Redundanzblock hinzugefügt ist), und null oder mehrere zusätzliche gepackte Nachrichtenköpfe 630. Jeder nicht-flüchtige Speicher-Seitenrahmen hat zumindest einen Zähler der Anzahl der nachfolgenden Nachrichtenköpfe und einen Zeiger (Pointer) dahin, wo Daten (die Nachrichtenköpfen zugeordnet sind) in dem nicht-flüchtigen Speicher-Seitenrahmen beginnen. In einigen Ausführungsformen können die Nachrichtenköpfe bitweise ausgerichtet sein, jedoch jeweils nur sechs Bytes (z.B. B) sein. Die Nachrichtenköpfe können umfassen, sind jedoch nicht beschränkt auf: Daten-Nachrichtenköpfe, Epoch-Nachrichtenköpfe und Auffüllungen (padding). Daten-Nachrichtenköpfe verwenden eine Adresse einer Abbildungseinheit und eine Länge. Der Versatz ist impliziert, weil alle Daten aufeinanderfolgend bzw. konsekutiv gepackt sind.
  • – Optional und/oder selektiv Fortsetzungsdaten aus einem vorhergehenden, nicht-flüchtigen Speicher-Seitenrahmen (einem Bereich von Daten mit variabler Größe einer Abbildungseinheit) 640.
  • – Gepackte (z.B. optional und/oder selektiv komprimierte) Daten von einer oder mehreren Abbildungseinheiten 650, um den nicht-flüchtigen Speicher-Seitenrahmen, von denen der letzte sich optional und/oder selektiv in einem nachfolgenden, nicht-flüchtigen Speicher-Seitenrahmen fortsetzt.
  • – Optionale Blindgruppen (padding) am Ende des nicht-flüchtigen Speicher-Seitenrahmens (enthalten in 650). Im verschiedenen Ausführungsformen werden die Daten byteweise gepackt (z.B. keine Löcher), jedoch am Ende des nicht-flüchtigen Speicher-Seitenrahmens möglicherweise aufgefüllt, wenn er hoch komprimiert ist (z.B. zu viele Nachrichtenköpfe). Auffüllen (padding) wird beispielsweise verwendet falls: (i) der letzte Abschnitt von Daten mit variabler Größe, der dem nicht-flüchtigen Speicher-Seitenrahmen hinzugefügt worden ist, weniger unbenutzte Bytes als eine Größe eines Nachrichtenkopfes hinterließ (so dass ein neuer Nachrichtenkopf nicht eingefügt werden konnte, um einen anderen Abschnitt von Daten mit variabler Größe zu beginnen), (ii) optional und/oder selektiv, eine vorbestimmte Anzahl von Nachrichtenköpfen pro nicht-flüchtigem Speicher-Seitenrahmen überschritten wird (so dass die Anzahl der Abbildungseinheiten, die in dem nicht-flüchtigen Speicher-Seitenrahmen gespeichert sind, durch die vorbestimmte Anzahl der Nachrichtenköpfe begrenzt sind und nicht durch eine Größe der Daten in den Abbildungseinheiten).
According to various embodiments, a non-volatile memory page frame includes one or more of the following:
  • - Message headers, including a master message header 610 , optionally and / or selectively, a redundancy block header 620 (eg, a message header added in the first page frame of each block in a redundancy block), and zero or more additional packed message headers 630 , Each non-volatile memory page frame has at least a count of the number of subsequent message headers and a pointer to where data (associated with message headers) begin in the non-volatile memory page frame. In some embodiments, the message headers may be bit-aligned, but each only six bytes (eg, B). The message headers may include, but are not limited to: data headers, epoch headers, and padding. Data message headers use an address of an imaging unit and a length. The offset is implied because all the data is packed consecutively or consecutively.
  • Optional and / or selective continuation data from a previous non-volatile memory page frame (a range of variable size data of an imaging unit) 640 ,
  • - Packed (eg optionally and / or selectively compressed) data from one or more imaging units 650 to the non-volatile memory page frame, the latter of which optionally and / or selectively continues in a subsequent non-volatile memory page frame.
  • Optional padding at the end of the non-volatile memory page frame (included in 650 ). In various embodiments, the data is packed in bytes (eg, no holes) but may be padded at the end of the non-volatile memory page frame if it is highly compressed (eg, too many headers). Padding is used, for example, if: (i) the last section of variable size data added to the non-volatile memory page frame left fewer unused bytes than a message header size (so a new message header is not inserted (ii) optionally and / or selectively, a predetermined number of message headers per non-volatile memory page frame is exceeded (such that the number of mapping units included in the non-volatile memory page frames are limited by the predetermined number of message headers and not by a size of the data in the mapping units).

In einigen Ausführungsformen ist ein Wiedererlangen und/oder Recyceln (z.B. Abfallsammlung) mit einer sequentiell-lese-optimierten Flash-Übergangsschicht mit variabler Größe in vorteilhafter Weise dazu in der Lage, nur einen Nachrichtenkopf-Abschnitt von jedem der nicht-flüchtigen Speicher-Seitenrahmen zu lesen und/oder zu fehlerkorrigieren und/oder zu überprüfen, und nicht jede Leseeinheit, wie in einer nicht-sequentiell-lese-optimierten Flash-Übergangsschicht mit variabler Größe. Wenn das Recyceln bestimmt, dass Daten eines nicht-flüchtigen Seiten-Speicherrahmens erneut geschrieben werden können, dann können diese Daten auch gelesen werden und können auch fehlerkorrigiert werden. In einigen Ausführungsformen wird ein gesamter nicht-flüchtiger Speicher-Seitenrahmen zum Recyceln gelesen, jedoch wird nur der Nachrichtenkopf-Abschnitt fehlerkorrigiert, bis eine Bestimmung gemacht wird, dass einige Daten in dem nicht-flüchtigen Speicher-Seitenrahmen recycelt werden sollten. In some embodiments, retrieval and / or recycling (eg, garbage collection) with a sequentially read-optimized variable-size flash transition layer is advantageously capable of only one header section of each of the non-volatile memory page frames read and / or error correcting and / or checking, and not every reading unit, as in a non-sequential read-optimized variable-size flash transition layer. If the recycling determines that data of a non-volatile page storage frame can be rewritten, then that data may also be read and may also be error-corrected become. In some embodiments, an entire non-volatile memory page frame is read for recycling, however, only the header section is error-corrected until a determination is made that some data in the non-volatile memory page frame should be recycled.

Im verschiedenen Ausführungsformen ist eine Anzahl von Nachrichtenköpfen pro nicht-flüchtigem Speicher-Seitenrahmen zur Begrenzung von einer Anzahl von Leseeinheiten pro nicht-flüchtigem Speicher-Seitenrahmen, der gelesen werden kann, begrenzt, um sicherzustellen, dass alle Nachrichtenköpfe aus dem nicht-flüchtigen Speicher gelesen worden sind. Im der Ausführungsform der 6 wird nur eine Anzahl von Leseeinheiten gelesen, die ausreichend ist, um die maximale Anzahl der Nachrichtenköpfe zu enthalten. Im der Ausführungsform der 7 wird eine zusätzliche Anzahl von Leseeinheiten gelesen, um eine größte Größe von Daten zu berücksichtigen, die von einem vorausgehenden nicht-flüchtigen Speicher-Seitenrahmen vervollständigt wird (z.B. Fortsetzungsdaten 640). Die Ausführungsform der 7 ermöglicht, dass eine Anzahl von Leseeinheiten, auf die Vervollständigung der Daten aus einem vorausgehenden, nicht-flüchtigen Speicher-Seitenrahmen (z.B. Fortsetzungsdaten 640), die aus dem zugeordneten Abbildungseintrag zu bestimmen sind, zugreifen kann, weil die Anzahl der Bytes in der Vervollständigung der Daten basierend auf dem entsprechenden Versatz und der Länge des zugeordneten Abbildungseintrags, und der Anzahl der Bytes von Nutzerdaten (nicht Fehlerkorrektur-Code) in dem vorausgehenden, nicht-flüchtigen Speicher-Seitenrahmen bestimmbar ist. In various embodiments, a number of message headers per non-volatile memory page frame are limited to limit a number of read units per nonvolatile memory page frame that can be read to ensure that all message headers are read from the non-volatile memory have been. In the embodiment of the 6 Only a number of read units sufficient to hold the maximum number of headers is read. In the embodiment of the 7 An additional number of read units are read to account for a largest amount of data completed by a previous non-volatile memory page frame (eg, continuation data 640 ). The embodiment of the 7 allows a number of read units to complete the data from a previous non-volatile memory page frame (eg, continuation data 640 ), which are to be determined from the associated map entry, because the number of bytes in the completion of the data is based on the corresponding offset and the length of the associated map entry, and the number of bytes of user data (not error correction code) in the preceding non-volatile memory page frame is determinable.

Des Weiteren sind die einzigen Nachrichtenköpfe vor der Vervollständigung der Daten der optionalen Redundanz-Nachrichtenkopf (der nur in angegebenen, nicht-flüchtigen Speicher-Seitenrahmen vorhanden ist, wie etwa der erste Seitenrahmen in jedem Block) und der Master-Nachrichtenkopf (der in jedem nicht-flüchtigen Speicher-Seitenrahmen immer vorhanden ist). Im der Ausführungsform der 6 wird zum Lesen der Vervollständigung der Daten, ohne dass zweimal auf den nicht-flüchtigen Speicher zugegriffen werden muss, die maximale Anzahl von Nachrichtenköpfen als vorhanden angenommen (oder es wird der gesamte nicht-flüchtige Speicher-Seitenrahmen gelesen).Furthermore, the only message headers prior to completing the data are the optional redundancy message header (which exists only in specified non-volatile memory page frames, such as the first page frame in each block) and the master message header (which is not in each -volatile memory page frame is always present). In the embodiment of the 6 In order to read the completion of the data without having to access the non-volatile memory twice, the maximum number of headers is assumed to be present (or the entire non-volatile memory page frame is read).

In einigen Ausführungsformen verwendet die sequentiell-lese-optimierte-Flash-Übergangsschicht mit variabler Größe eine Einzel-Niveau-Abbildung, die eine Vielzahl von Abbildungseinträgen aufweist. Im anderen Ausführungsformen verwendet die sequentiell-lese-optimierte Flash-Übergangsschicht mit variabler Größe eine Mehr-Niveau-Abbildung, wie etwa eine 2-Niveau-Abbildung, die eine erste-Niveau-Abbildung (z.B. FLM, first-level map), die auf eine Zwei-Niveau-Abbildung(z.B. SLM, second-level map)-Seitenrahmen verweist bzw. zeigt, wobei jede der Zwei-Niveau-Abbildungs-Seitenrahmen eine Vielzahl von Abbildungseinträgen auf Plattebene (leaf-level map entries) umfasst. In weiteren Ausführungsformen hat die Mehr-Niveau-Abbildung mehr als zwei Niveaus, wie etwa drei Niveaus. In einigen Ausführungen und/oder Nutzerszenarien ermöglicht die Verwendung einer Mehr-Niveau-Abbildung, dass nur ein relevanter (z.B. in Verwendung befindlicher) Abschnitt der Abbildung in einem lokalen Speicher (z.B. On-Chip SRAM einer Steuerungseinrichtung eines Festkörper-Laufwerks oder ein lokaler DRAM eines Hosts) gespeichert (z.B. gecacht) werden kann, was einen Aufwand zum Unterhalten bzw. Pflegen der Abbildung verringert. Wenn beispielsweise typische Benutzungsmuster 1 Gigabyte (z.B. GB) des logischen Blockadressraums, die zu irgendeinem Zeitpunkt aktiv sind, aufweisen, dann wird nur ein Abschnitt der Abbildung, der ausreichend ist, um auf den aktiven 1 GB-Abschnitt des logischen Blockadressraums zuzugreifen, für einen schnellen Zugriff lokal gespeichert, versus in dem nicht-flüchtigen Speicher gespeichert zu werden. Verweise nach außerhalb des aktiven Abschnitts des logischen Blockadressraums holen angeforderte Abschnitte von einem oder mehreren Niveaus der Mehr-Niveau-Abbildung aus dem nicht-flüchtigen Speicher, wobei optional und/oder selektiv andere lokal-gespeicherte Abschnitte der Abbildung ersetzt werden.In some embodiments, the variable size sequential read-optimized flash transition layer uses a single-level map having a plurality of map entries. In other embodiments, the variable size sequential-read optimized flash transition layer uses a multi-level map, such as a 2-level map, including a first level map (eg FLM, first-level map) refers to a two-level map (eg, SLM, second-level map) page frame, where each of the two-level map page frames includes a plurality of leaf-level map entries. In further embodiments, the multi-level map has more than two levels, such as three levels. In some implementations and / or user scenarios, the use of a multi-level map allows only a relevant (eg, in use) portion of the map to be stored in local memory (eg, on-chip SRAM of a solid-state drive controller or local DRAM a host) can be stored (eg, cached), which reduces overhead for maintaining or maintaining the map. For example, if typical usage patterns have 1 gigabyte (eg, GB) of logical block address space that is active at any one time, then only a portion of the map sufficient to access the active 1 GB portion of the logical block address space becomes one quick access stored locally, versus being stored in the non-volatile memory. References to outside the active portion of the logical block address space fetch requested portions of one or more levels of the multi-level map from the non-volatile memory, optionally and / or selectively replacing other locally stored portions of the map.

Jedem der Abbildungseinträge auf Blatt-Niveau (leaf-level map entries) ist einer Adresse (oder Namen) von einem oder einer Mehrzahl von Abbildungseinheiten zugeordnet bzw. entspricht dieser. In einem Beispiel wird eine logische Blockadresse in eine Adresse einer Abbildungseinheit umgewandelt, wie etwa durch Entfernen von null oder mehr niedrigstwertigen Bits (z.B. LSBs, least significant bits) der logischen Blockadresse und/oder Hinzuaddieren einer Konstanten zu der logischen Blockadresse zum Zwecke der Ausrichtung, und die Adresse der Abbildungseinheit wird in der Abbildung nachgeschlagen, um einen entsprechenden Eintrag in der Abbildung zu bestimmen. In einem anderen Beispiel wird ein Namen in einer Hash-Tabelle (oder einer anderen assoziativen Datenstruktur) nachgeschlagen, um einen eindeutigen Bezeichner, der als die Adresse der Abbildungseinheit verwendet wird, zu bestimmen.Each of the leaf-level map entries is associated with or corresponds to an address (or name) of one or a plurality of mapping units. In one example, a logical block address is converted to an address of an imaging unit, such as by removing zero or more least significant bits (eg LSBs) of the logical block address and / or adding a constant to the logical block address for alignment purposes, and the address of the mapping unit is looked up in the figure to determine a corresponding entry in the map. In another example, a name in a hash table (or other associative data structure) is looked up to determine a unique identifier used as the address of the mapping unit.

Mit Verweis auf 8 wird eine Darstellung von Einzelheiten einer Ausführungsform von verschiedenen Arten von Nachrichtenköpfen gezeigt. Im dem Beispiel der 8 sind die Nachrichtenköpfe formatiert worden, so dass jeder in sechs Bytes passt. Gemäß verschiedener Ausführungsformen sind die verschiedenen Arten von Nachrichtenköpfen einer oder mehrerer der folgenden: alle von einer gleichen Größe; optional und/oder selektiv von verschiedenen Größen; jede umfasst eine entsprechendes Feld, das eine Größe des Nachrichtenkopfs spezifiziert; variierend hinsichtlich der Größe in verschiedenen, nicht-flüchtigen Speicher-Seitenrahmen; und jede beliebige Kombination der vorgenannten.With reference to 8th An illustration of details of one embodiment of various types of message headers is shown. In the example of the 8th the message headers have been formatted so that everyone fits in six bytes. According to various embodiments, the different types of message headers are one or more of the following: all of an equal size; optional and / or selective of different sizes; each includes a corresponding field that specifies a size of the message header; varying in size in various non-volatile memory page frames; and any combination of the foregoing.

Gemäß verschiedener Ausführungsformen umfassen die Nachrichtenköpfe in dem nicht-flüchtigen Speicher-Seitenrahmen einen oder mehrere der folgenden:

  • – Daten-Nachrichtenköpfe (810), die Imformation angeben, die einem Datenabschnitt von variabler Größe zugeordnet sind. In einigen Ausführungsformen beginnen Daten, die einem Daten-Nachrichtenkopf zugeordnet sind, in einem selben nicht-flüchtigen Speicher-Seitenrahmen wie dem, wo der Daten-Nachrichtenkopf auftritt. In weiteren Ausführungsformen und/oder Nutzungsszenarien beginnen alle zugeordneten Daten in einem nachfolgenden, nicht-flüchtigen Speicher-Seitenrahmen, falls ein nicht-flüchtiger Speicher-Seitenrahmen nur für einen Daten-Nachrichtenkopf verbleibenden Raum aufweist.
  • – Abbildungs-Nachrichtenköpfe, wie etwa Zwei-Niveau-Abbildung (z.B. SLM)-Nachrichtenköpfe (820). Die Zwei-Niveau-Abbildungs-Nachrichtenköpfe umfassen einen Erst-Niveau-Abbildungs-Imdex (z.B. FLMI, first-level map index) um anzuzeigen (wie etwa für ein Recycling und/oder ein Wiedererlangen einer Zwei-Niveau-Abbildung), welcher der die Zwei-Niveau-Abbildungs-Seitenrahmen gespeichert wird.
  • – Log/Überprüfungspunkt (log/checkpoint)-Nachrichtenköpfe (820). Log/Überprüfungspunkt-Nachrichtenköpfe geben Daten an, die zum Recycling, zum Wiedererlangen, zur Fehlerbehandlung, zum Debugging oder für andere spezielle Bedingungen verwendet werden.
  • – Epoch-Nachrichtenköpfe (830) werden als Teil der Wiedererlangung, zum Zuordnen bzw. Assoziieren von Daten mit entsprechender Abbildungs-Checkpoint-Imformation verwendet. Typischerweise gibt es mindestens einen Epoch-Nachrichtenkopf pro nicht-flüchtigem Speicher-Seitenrahmen.
  • – Master-Nachrichtenköpfe (870) werden einmal pro nicht-flüchtigem Speicher-Seitenrahmen verwendet, um Imformation hinsichtlich einer Anzahl von Nachrichtenköpfen in dem nicht-flüchtigen Speicher-Seitenrahmen bereitzustellen, und darüber, wo Nicht-Nachrichtenkopf-Daten innerhalb des nicht-flüchtigen Speicher-Seitenrahmens beginnen. Verschiedene Techniken bestimmen einen Beginn von Nicht-Nachrichtenkopf-Daten, wie in den Ausführungsformen der 6 und 7 dargestellt.
  • – Redundanzblock-Nachrichtenköpfe (880) werden in bestimmten nicht-flüchtigen Speicher-Seitenrahmen verwendet, wie etwa im ersten nicht-flüchtigen Speicher-Seitenrahmen in jedem Block in einem Redundanzblock.
  • – Andere Arten von Nachrichtenköpfen (840), wie etwa Padding-Nachrichtenköpfe, Überprüfungspunkt-Nachrichtenköpfe, die größere Längen unterstützen, usw.
According to various embodiments, the headers in the non-volatile memory page frame include one or more of the following:
  • - Data message headers ( 810 ) indicating information associated with a data section of variable size. In some embodiments, data associated with a data message header begins in a same non-volatile memory page frame as where the data message header occurs. In further embodiments and / or usage scenarios, all associated data begins in a subsequent non-volatile memory page frame if a non-volatile memory page frame has only space remaining for a data message header.
  • Image message headers, such as two-level image (eg, SLM) message headers ( 820 ). The two-level map headers include a first-level map index (eg, FLMI, first-level map index) to indicate (such as for recycling and / or retrieving a two-level map) that the the two-level picture page frame is stored.
  • - log / checkpoint (log / checkpoint) message headers ( 820 ). Log / Checkpoint message headers indicate data used for recycling, retrieval, error handling, debugging, or other specific conditions.
  • - Epoch message headers ( 830 ) are used as part of retrieval, associating or associating data with corresponding map checkpoint information. Typically, there is at least one epoch header per non-volatile memory page frame.
  • - Master message headers ( 870 ) are used once per non-volatile memory page frame to provide information regarding a number of headers in the non-volatile memory page frame and where non-header data begins within the non-volatile memory page frame. Various techniques determine the beginning of non-message header data, as in the embodiments of FIGS 6 and 7 shown.
  • - redundancy block message headers ( 880 ) are used in certain non-volatile memory page frames, such as in the first non-volatile memory page frame in each block in a redundancy block.
  • - Other types of message headers ( 840 ), such as padding headers, checkpoint headers that support longer lengths, etc.

In einigen Ausführungsformen umfassen einige Nachrichtenköpfe ein TYPE(Art)-Feld, um mehrere Unterarten der Nachrichtenköpfe bereitzustellen. Im verschiedenen Ausführungsformen umfassen einige Nachrichtenköpfe ein LEN(Länge)-Feld, das eine Länge der dem Nachrichtenkopf zugeordneten Daten enthält. Im verschiedenen Ausführungsformen, anstelle von oder zusätzlich zu einem LEN-Feld, umfassen einige Nachrichtenköpfe ein OFFSET(Versatz)-Feld (nicht gezeigt), das einen Versatz (innerhalb des nicht-flüchtigen Speicher-Seitenrahmens) zum Ende der dem Nachrichtenkopf zugeordneten Daten enthält. (In einigen Ausführungsformen ist, wenn der letzte der Daten-Abschnitte mit variabler Größe einen nicht-flüchtigen Speicher-Seitenrahmen umspannt, der OFFSET ein Versatz innerhalb eines nachfolgenden, nicht-flüchtigen Speicher-Seitenrahmens oder eine Anzahl von Bytes innerhalb des nachfolgenden nicht-flüchtigen Speicher-Seitenrahmens.) Es wird im Allgemeinen nur entweder ein LEN-Feld oder ein OFFSET-Feld implementiert, weil bei den Daten-Abschnitten mit variabler Größe die ohne verschwendeten Raum zusammengepackt sind, die Start-Position und End-Position von jedem der Daten-Abschnitte mit variabler Größe in einem nicht-flüchtigen Speicher-Seitenrahmen durch die Start-Position des ersten Daten-Stücks mit variabler Größe in dem nicht-flüchtigen Speicher-Seitenrahmen impliziert ist (z.B. unmittelbar nach den Nachrichtenköpfen, wie in 7) und der letzte der LEN- oder OFFSET-Felder.In some embodiments, some message headers include a TYPE field to provide multiple subtypes of message headers. In various embodiments, some message headers include a LEN (length) field that includes a length of the data associated with the message header. In various embodiments, instead of or in addition to a LEN field, some message headers include an OFFSET field (not shown) that includes an offset (within the non-volatile memory page frame) to the end of data associated with the message header , (In some embodiments, when the last of the variable size data sections spans a non-volatile memory page frame, the OFFSET is an offset within a subsequent non-volatile memory page frame or a number of bytes within the subsequent non-volatile one Memory page frame.) In general, only either a LEN field or an OFFSET field is implemented because the data sections of variable size packed together with no wasted space, the start position and end position of each of the data Variable size sections in a non-volatile memory page frame are implied by the start position of the first variable size data piece in the non-volatile memory page frame (eg, immediately after the headers as in FIG 7 ) and the last of the LEN or OFFSET fields.

Mit Verweis auf 9 wird eine Darstellung von ausgewählten Einzelheiten einer Ausführungsform eines Abbildungseintrags 900 gezeigt. Gemäß verschiedener Ausführungsformen umfassen die Einträge der Abbildung eine oder mehrere der folgenden:

  • – eine physikalische Adresse eines nicht-flüchtigen Speicher-Seitenrahmens,
  • – ein Versatz innerhalb des nicht-flüchtigen Speicher-Seitenrahmens (z.B. OFFSET) auf ein Datenobjekt mit variabler Größe,
  • – eine Länge des Datenobjekts mit variabler Größe (z.B. LEN_M128), und
  • – andere Steuerungsinformation.
With reference to 9 Figure 12 is an illustration of selected details of one embodiment of a map entry 900 shown. According to various embodiments, the entries of the figure include one or more of the following:
  • A physical address of a non-volatile memory page frame,
  • An offset within the non-volatile memory page frame (eg OFFSET) to a variable size data object,
  • A length of the variable size data object (eg LEN_M128), and
  • - other control information.

In einigen Ausführungsformen wird die Länge beispielsweise kodiert, indem sie so versetzt wird, dass ein Wert von Null einer spezifizierten, minimalen Länge entspricht. Wenn beispielsweise die minimale Länge 128 Bytes ist, dann repräsentiert ein LEN_M128-Wert von Null 128 Bytes. In weiteren Ausführungsformen werden Daten, die auf weniger als die spezifizierte minimale Länge komprimiert sind, angefüllt (padded), so dass sie hinsichtlich ihrer Größe zumindest die spezifizierte minimale Länge haben. For example, in some embodiments, the length is encoded by being offset so that a value of zero corresponds to a specified, minimum length. For example, if the minimum length is 128 bytes, then a LEN_M128 value of zero represents 128 bytes. In further embodiments, data compressed to less than the specified minimum length becomes padded so that they have at least the specified minimum length in size.

Im verschiedenen Ausführungsformen sind die SRO-VFTL Abbildungseinträge größer als VFTL Abbildungseinträge, weil die SRO-VFTL Abbildungseinträge einen vollen Versatz und Byte-Längen von entsprechenden Daten speichern. Dementsprechend kann eine Verringerung einer Größe der Abbildungseinträge, wenn diese in dem nicht-flüchtigen Speicher gespeichert werden, vorteilhaft sein. In einer typischen Verwendung werden Daten häufig sequentiell gelesen und geschrieben, zumindest mit einiger Granularität und/oder einer gemittelten Anzahl von sequentiellen Abbildungseinheiten, die größer als eins ist. Ein Kompressionsformat für Abbildungseinträge, das einen Vorteil aus der sequentiellen Natur des Schreibens ausnutzt, ist auch relativ preiswert bzw. wenig aufwendig zu implementieren und erzeugt eine hohe Abbildungskompressionsrate. Eine Kompression von Abbildungseinträgen wird ferner durch sequentiell-geschriebene Daten begünstigt, die in dieselben nicht-flüchtigen Speicher-Seitenrahmen gehen, bis eine Grenze eines nicht-flüchtigen Speicher-Seitenrahmens überschritten wird. In various embodiments, the SRO-VFTL mapping entries are larger than VFTL map entries because the SRO-VFTL map entries store a full offset and byte lengths of corresponding data. Accordingly, reducing a size of the map entries when stored in the non-volatile memory may be advantageous. In a typical usage, data is often read and written sequentially, at least with some granularity and / or an average number of sequential mapping units that is greater than one. An image entry compression format that takes advantage of the sequential nature of writing is also relatively inexpensive to implement and produces a high image compression rate. Compression of mapping entries is further favored by sequential-written data going into the same non-volatile memory page frames until a limit of non-volatile memory page frame is exceeded.

Mit Verweis auf 10 wird eine Darstellung von ausgewählten Einzelheiten einer Ausführungsform von verschiedenen komprimierten Abbildungseinträgen gezeigt. Die verschiedenen Abbildungseinträge umfassen unkomprimierte (1010), die eine selbe nicht-flüchtige Speicher-Seitenrahmen-Adresse, wie einen vorhergehenden Abbildungseintrag, aufweisen (1020); solche, die eine selbe nicht-flüchtige Speicher-Seitenrahmen-Adresse aufweisen, wie der vorhergehende Abbildungseintrag und der bei einem Versatz beginnt, wo die vorhergehenden Daten endeten (1030); solche, die eine selbe nicht-flüchtige Speicher-Seitenrahmen-Adresse haben wie der vorhergehende Abbildungseintrag, wobei er bei einem Offset beginnt, wo die vorhergehenden Daten endeten; und solche, die eine selbe Länge aufweisen, wie der vorhergehende Abbildungseintrag (1040). With reference to 10 an illustration of selected details of one embodiment of various compressed mapping entries is shown. The various mapping entries include uncompressed ( 1010 ) having a same non-volatile memory page frame address as a previous mapping entry ( 1020 ); those that have the same nonvolatile memory page frame address as the previous mapping entry and that starts at an offset where the previous data ended ( 1030 ); those having a same nonvolatile memory page frame address as the previous mapping entry starting at an offset where the previous data ended; and those that have the same length as the previous mapping entry ( 1040 ).

In einigen Ausführungen, die eine Mehr-Niveau-Abbildung aufweisen, wird ein Cache von Abbildungs-Seitenrahmen auf niedrigem Niveau (wie etwa auf Blattebene (leaf level)) gepflegt. Die gecachten Abbildungs-Seitenrahmen sind in einer nicht-komprimierten Form, was einen schnellen Zugriff durch den Prozessor (wie etwa ein Host oder ein Steuerungsprozessor einer Steuerungseinrichtung eines Festkörper-Laufwerks) bereitstellt. Wenn Abbildungs-Seitenrahmen verschoben werden (wie etwa aus einem nicht-flüchtigen Speicher oder dynamischen Direktzugriffspeicher (z.B. DRAM)) in den Cache, dann werden die Abbildungs-Seitenrahmen dekomprimiert. Wenn die Speicher-Seitenrahmen aus dem Cache geflusht werden (wie etwa aufgrund davon, dass sie verändert werden), dann werden die Abbildungs-Seitenrahmen zum Speichern (wie etwa in dem nicht-flüchtigen Speicher) komprimiert. Gemäß verschiedener Ausführungsformen, in denen ein DRAM verwendet wird, um eine Latenzzeit zum Speichern von einigen oder allen der Abbildungs-Seitenrahmen in dem dynamischen Direktzugriffspeicher zu verringern, verwendet werden, werden die Abbildungs-Seitenrahmen in dem dynamischen Direktzugriffspeicher in einer oder mehreren der folgenden Formen gespeichert: komprimierte Form; nicht-komprimierte Form; eine selektiv komprimierte oder nicht-komprimierte Form; und mit einer Imdirektions-Tabelle, die verwendet wird, um auf die komprimierten Versionen der Abbildungs-Seitenrahmen (mit variabler Größe) in dem dynamischen Direktzugriffspeicher zuzugreifen. In some implementations having a multi-level map, a cache of map page frames is maintained at a low level (such as leaf level). The cached map page frames are in an uncompressed form, providing fast access by the processor (such as a host or control processor of a solid state drive controller). When map page frames are moved (such as from a nonvolatile memory or dynamic random access memory (e.g., DRAM)) into the cache, then the map page frames are decompressed. If the memory page frames are flushed from the cache (such as due to being changed), then the map page frames are compressed for storage (such as in the non-volatile memory). According to various embodiments in which a DRAM is used to reduce latency for storing some or all of the map page frames in the dynamic random access memory, the map page frames in the dynamic random access memory become one or more of the following forms stored: compressed form; non-compressed form; a selectively compressed or uncompressed form; and an immediate table used to access the compressed versions of the variable size map page frames in the dynamic random access memory.

In einigen Ausführungsformen werden Host-Schreib-Daten eines Host-Schreibbefehls optional und/oder selektiv komprimiert, wenn die Host-Schreib-Daten bei bzw. in einer Steuereinrichtung eines Festkörper-Laufwerks ankommen, und werden in einem First-in-First-out(z.B. FIFO)-artigen Weise in einem lokalen Speicher (wie etwa einem On-Chip-Speicher) gespeichert. In einigen Ausführungsformen werden die Host-Speicher-Daten beispielsweise in einen vereinheitlichten Puffer (z.B. UBUF, unified buffer, siehe 11A), zusammen mit Firmware-Datenstrukturen, Flash-Statistiken, Abschnitten der Abbildung (wie etwa ein Cache, der eine oder mehrere Seitenrahmen der Abbildung enthält), Lese-Daten aus dem nicht-flüchtigen Speicher, die Recycling-Lese-Daten, Nachrichtenköpfe von Daten, die in den nicht-flüchtigen Speicher geschrieben werden sollen, Software-Code, Firmware-Code und anderen Verwendungen geschrieben. Im verschiedenen Ausführungsformen werden ein oder mehrere zweckbestimmte Speicher für verschiedene lokale Speicherkriterien in dem Festkörper-Laufwerk verwendet. In some embodiments, host write data of a host write command is optionally and / or selectively compressed when host write data arrives at a controller of a solid state drive, and is first-in-first-out (eg, FIFO) -like manner stored in a local memory (such as an on-chip memory). For example, in some embodiments, the host memory data is placed in a unified buffer (eg, UBUF, unified buffer, see FIG 11A ), along with firmware data structures, flash statistics, portions of the map (such as a cache containing one or more page frames of the map), read data from the non-volatile memory, the recycle read data, headers from Data written to the non-volatile memory, software code, firmware code and other uses written. In various embodiments, one or more dedicated memories are used for different local storage criteria in the solid state drive.

In einigen Ausführungen werden Host-Schreib-Daten eines Host-Schreib-Befehls optional und/oder selektiv in einem Host komprimiert, bevor sie zu einer Steuerungseinrichtung eines Festkörper-Laufwerks gesendet werden. Beispielsweise werden Datenbank-Einträge von einer Host-Datenbank komprimiert, bevor sie zu bzw. in eine Eingabe/Ausgabe-Einrichtung geschrieben werden.In some embodiments, host write data of a host write command is optionally and / or selectively compressed in a host before being sent to a controller of a solid state drive. For example, database entries are compressed by a host database before being written to an input / output device.

Im verschiedenen Ausführungsformen, wird mit jeder Abbildungseinheit von Daten, die von dem Host eintreffen, ein Steuerungsprozessor des Festkörper-Laufwerks (z.B. die zentrale Prozessoreinheit, CPU (central processor unit) in 11A) über ein oder mehrere der folgenden benachrichtigt: eine entsprechende Adresse einer Abbildungseinheit, eine entsprechende Lokal-Speicher-Adresse, wobei Daten, die der entsprechenden Adresse der Abbildungseinheit zugeordnet sind, gespeichert werden, und/oder eine entsprechende Länge von jeder Abbildungseinheit von Host-Daten mit variabler Größe (z.B. komprimiert). Der Steuerungsprozessor ist in der Lage, eine Reihenfolge des Schreibens von nicht-flüchtigen Speicher-Seitenrahmen und eine Gesamtzahl von Nicht-Fehlerkorrektur-Codierungs-Bytes, die in jedem der nicht-flüchtigen Speicher-Seitenrahmen verfügbar sind, zu bestimmen.In various embodiments, with each mapping unit of data arriving from the host, a control processor of the solid-state drive (eg, the central processing unit, CPU) is integrated into 11A ) notifies, via one or more of the following: a corresponding address of an imaging unit, a corresponding local memory address, wherein data associated with the corresponding address of the imaging unit is stored, and / or a corresponding length of each mapping unit of host data of variable size (eg compressed). The control processor is capable of determining an order of writing non-volatile memory page frames and a total number of non-error correction encoding bytes available in each of the non-volatile memory page frames.

Gemäß der Gesamtzahl der Nicht-Fehlerkorrektur-Codierungs-Bytes, die in einem gegebenen, nicht-flüchtigen Speicher-Seitenrahmen verfügbar sind, ist der Steuerungsprozessor in der Lage, eine Anzahl von Nachrichtenköpfen und eine Daten-Menge, die in dem gegebenen nicht-flüchtigen Speicher-Seitenrahmen platziert wird, zu bestimmen. Beispielsweise akkumuliert der Steuerungsprozessor Nachrichtenköpfe für die vorgegebenen nicht-flüchtigen Speicher-Seitenrahmen (und verfolgt eine Anzahl von Bytes von Nachrichtenköpfen, die bis dahin verwendet worden sind) und fügt nacheinander Daten von Abbildungseinheiten mit variabler Größe und Nachrichtenköpfen zu dem gegebenen nicht-flüchtigen Speicher-Seitenrahmen hinzu, bis der gegebene, nicht-flüchtige Speicher-Seitenrahmen voll ist. Wenn der gegebene, nicht-flüchtige Speicher-Seitenrahmen voll ist, dann ist es möglich, dass ein letzter Abschnitt von Daten einer letzten der Abbildungseinheiten, die zu dem gegebenen nicht-flüchtigen Speicher-Seitenrahmen hinzugefügt worden ist, nicht in den gegebenen nicht-flüchtigen Speicher-Seitenrahmen passt und als ein Daten-Vervollständigungs-Abschnitt von einem nachfolgenden, nicht-flüchtigen Speicher-Seitenrahmen (z.B. Fortsetzungsdaten 640) verwendet wird, wodurch die Gesamtzahl der Nicht-Fehlerkorrektur-Codierungs-Bytes, die in dem nachfolgenden, nicht-flüchtigen Speicher-Seitenrahmen für neue Nachrichtenköpfe und Daten verfügbar sind, verringert wird. According to the total number of non-error correction coding bytes available in a given non-volatile memory page frame, the control processor is capable of generating a number of message headers and a data set that is in the given non-volatile Memory page frame is placed to determine. For example, the control processor accumulates headers for the given non-volatile memory page frames (and keeps track of a number of headers of headers that have been used until then) and sequentially adds data from variable size headers and headers to the given non-volatile memory. Add page frames until the given non-volatile memory page frame is full. If the given non-volatile memory page frame is full, then it is possible that a last portion of data of a last of the mapping units added to the given non-volatile memory page frame will not fit into the given non-volatile memory Memory page frame fits and as a data completion section of a subsequent, non-volatile memory page frame (eg, continuation data 640 ), thereby reducing the total number of non-error correction coding bytes available in the subsequent non-volatile memory page frame for new message headers and data.

In einigen Ausführungsformen ist es möglich, dass zu einem bestimmten Zeitpunkt null oder mehrere nicht-flüchtige Speicher-Seitenrahmen mit Host-Schreib-Daten gefüllt werden, und es ist möglich, dass null oder mehr nicht-flüchtige Speicher-Seitenrahmen mit recycelten Daten gefüllt werden. Beispielsweise können mindestens zwei Bänder (z.B. FIFO-artige Serien von Redundanzblöcken) gefüllt werden, respektive ein Band mit „heißen“ Daten (z.B. frisch aus dem Host) und das andere Band mit „kalten“ (z.B. recycelten) Daten, und null oder mehrere nicht-flüchtige Speicher-Seitenrahmen, die den Platz wert sind, werden aus einem Puffer in jedem Band angewiesen. Im Fortsetzung des Beispiels werden in verschiedenen Ausführungsformen die Host-Schreib-Daten optional und/oder selektiv in die Lage versetzt, dass sie direkt entweder in das heiße Band oder das kalte Band gerichtet werden können, und die recycelten Daten werden optional und/oder selektiv in die Lage versetzt, entweder in das heiße Band oder das kalte Band gerichtet zu werden. In some embodiments, it is possible for zero or more non-volatile memory page frames to be filled with host write data at a particular time, and it is possible for zero or more non-volatile memory page frames to be filled with recycled data , For example, at least two bands (eg, FIFO-like series of redundancy blocks) may be filled, one band with "hot" data (eg, fresh from the host) and the other band with "cold" (eg, recycled) data, and zero or more Nonvolatile memory page frames that are worth the space are directed from a buffer in each band. Continuing the example, in various embodiments, the host write data is optionally and / or selectively enabled to be addressed directly to either the hot band or the cold band, and the recycled data becomes optional and / or selective being able to be directed into either the hot band or the cold band.

In einigen Ausführungsformen ist der Steuerungsprozessor in der Lage, die Serie von entsprechenden Abbildungseinheits-Adressen, lokalen Speicher-Adressen und entsprechenden Längen in eine oder mehrere der folgenden umzuwandeln: eine Serie von Nachrichtenköpfen, die in einem nicht-flüchtigen Speicher-Seitenrahmen als ein Nachrichtenkopf-Abschnitt des nicht-flüchtigen Speicher-Seitenrahmens beschrieben werden soll; eine erste Start-Adresse und eine erste Länge eines sequentiellen Abschnitts des lokalen Speichers, der in den nicht-flüchtigen Speicher-Seitenrahmen als ein Nutzerdaten-Abschnitt der nicht-flüchtigen Speicher-Seitenrahmen geschrieben werden soll, wobei der Nutzerdaten-Abschnitt des nicht-flüchtigen Speicher-Seitenrahmens zumindest einen Abschnitt von mindestens einer Abbildungseinheit umfasst, eine zweite Start-Adresse und eine zweite Länge eines sequentiellen Abschnitts des lokalen Speichers, der in einen nachfolgenden nicht-flüchtigen Speicher-Seitenrahmen geschrieben werden soll, wobei der Nutzerdaten-Komplettierungs-Abschnitt einen Daten-Abschnitt von einer Abbildungseinheit umfasst oder leer ist; eine Anzahl von null oder mehreren Padding-Bytes, die in den nicht-flüchtigen Speicher-Seitenrahmen geschrieben werden sollen, wobei die Padding-Bytes beispielsweise verwendet werden, wenn der Nutzerdaten-Vervollständigungs-Abschnitt leer ist und der nicht-flüchtige Speicher-Seitenrahmen nicht voll ist. Im vorteilhafter Weise ist der Steuerungsprozessor dazu in der Lage, die Serie der entsprechenden Adressen der Abbildungseinheiten, der entsprechenden lokalen Speicher-Adressen und der entsprechenden Längen einfach durch Neuformatierung in die Serie der Nachrichtenköpfe umzuwandeln und eine kleine Anzahl von Direktzugriffspeicher (z.B. direct memory access)-Befehlen zu erzeugen, um die Abschnitte (die Serie der Nachrichtenköpfe, ein Vervollständigungs-Abschnitt eines vorhergehenden nicht-flüchtigen Speicher-Seitenrahmens, den Nutzerdaten-Abschnitt und jegliche Padding-Bytes) in den nicht-flüchtigen Speicher zu übertragen.In some embodiments, the control processor is capable of converting the series of corresponding mapping unit addresses, local memory addresses, and corresponding lengths into one or more of the following: a series of message headers stored in a non-volatile memory page frame as a message header Section of the non-volatile memory page frame is to be described; a first start address and a first length of a sequential portion of the local memory to be written in the non-volatile memory page frame as a user data portion of the non-volatile memory page frames, the user data portion of the non-volatile memory Memory page frame includes at least a portion of at least one imaging unit, a second start address and a second length of a sequential portion of the local memory to be written in a subsequent non-volatile memory page frame, the user data completion section a Data section of an imaging unit comprises or is empty; a number of zero or more padding bytes to be written in the non-volatile memory page frames, the padding bytes being used, for example, when the user data completion section is empty and the non-volatile memory page frame is not is full. Advantageously, the control processor is able to simply convert the series of corresponding addresses of the mapping units, the corresponding local memory addresses and the corresponding lengths into the series of message headers by reformatting and a small number of random access memories (eg direct memory access). To generate the sections (the series of message headers, a completion section of a previous nonvolatile memory page frame, the user data section, and any padding bytes) into the non-volatile memory.

Im verschiedenen Ausführungsformen ist die Kompression der Host-Schreib-Daten optional und/oder selektiv aktiviert. In einem Beispiel aktiviert Imformation des Host-Schreib-Befehls wahlweise die Kompression. In einem anderen Beispiel wird eine Kompression wahlweise als eine Funktion einer logischen Blockadresse (oder Bezeichner) des Host-Schreib-Befehls aktiviert. Im noch einem anderen Beispiel wird Kompression selektiv deaktiviert, wenn eine Kompression der Host-Schreib-Daten eine Größe der Host-Schreib-Daten nicht verringert. Wenn eine Kompression nicht aktiviert ist, werden die Host-Schreib-Daten unkomprimiert gespeichert. Gemäß verschiedener Ausführungsformen zeigen Einträge der Abbildung, ob die entsprechenden Daten komprimiert oder unkomprimiert sind, durch eines oder mehrere der folgenden: ein entsprechendes Bit in jedem Eintrag der Abbildung; und/oder ein Wert der in jedem Abbildungseintrag gespeicherten Länge. Wenn beispielsweise die Abbildungseinheiten 4 KB sind, dann deutet eine Länge von 4 KB in einem Abbildungseintrag an, dass zugeordnete Daten des Abbildungseintrags unkomprimiert sind, wohingegen eine Länge von weniger als 4 KB anzeigt, dass die zugeordneten Daten komprimiert sind. In einigen Ausführungsformen und/oder Nutzerszenarien spezifiziert ein Nachrichtenkopf, der der, optional und/oder selektiv komprimiert, gespeicherten Version von Host-Schreib-Daten zugeordnet ist, ob die gespeicherten Host-Schreib-Daten komprimiert sind oder nicht. In various embodiments, the compression of the host write data is optionally and / or selectively enabled. In one example, the imformation of the host write command optionally enables compression. In another example, compression is selectively enabled as a function of a logical block address (or identifier) of the host write command. In yet another example, compression is selectively disabled when compression of the host write data does not decrease a size of the host write data. If compression is not enabled, the host write data is stored uncompressed. According to various embodiments, entries of the map indicate whether the corresponding data is compressed or uncompressed, by one or more of more of the following: a corresponding bit in each entry of the figure; and / or a value of the length stored in each map entry. For example, if the mapping units are 4 KB, then a 4 KB length in a mapping entry indicates that associated data of the map entry is uncompressed, whereas a length of less than 4 KB indicates that the associated data is compressed. In some embodiments and / or user scenarios, a message header associated with the optionally and / or selectively compressed stored version of host write data specifies whether the stored host write data is compressed or not.

In einigen Ausführungsformen werden Daten recycelt, indem ein zu recyclender Redundanzblock ausgewählt wird; nicht-flüchtige Speicher-Seitenrahmen des Redundanzblocks in einer Reihenfolge ausgelesen werden, in der die nicht-flüchtigen Speicher-Seitenrahmen geschrieben worden sind; nur Leseeinheiten verarbeitet werden, die Nachrichtenköpfe der nicht-flüchtigen Speicher-Seitenrahmen enthalten; eine logische Blockadresse (oder äquivalent eine Adresse einer Abbildungseinheit oder Namen) von jedem Nachrichtenkopf, der ein Nachrichtenkopf in der Abbildung ist, nachgeschlagen wird, um festzustellen, ob die Daten immer noch gültig sind; und wenn die Daten immer noch gültig sind, geeignete neue Nachrichtenköpfe und DMA-Befehle konstruiert werden, um die zu recycelnden Daten als Teil eines neuen nicht-flüchtigen Speicher-Seitenrahmens zusammenzusetzen. Der neue nicht-flüchtige Speicher-Seitenrahmen wird dann in den nicht-flüchtigen Speicher geschrieben.In some embodiments, data is recycled by selecting a redundancy block to be recycled; nonvolatile memory page frames of the redundancy block are read in an order in which the nonvolatile memory page frames have been written; only read units containing headers of the non-volatile memory page frames are processed; a logical block address (or, equivalently, an address of an imaging unit or name) of each message header that is a message header in the map is looked up to determine if the data is still valid; and if the data is still valid, appropriate new message headers and DMA commands are constructed to assemble the data to be recycled as part of a new non-volatile memory page frame. The new non-volatile memory page frame is then written to the non-volatile memory.

Mit Verweis auf 11A wird eine Darstellung von ausgewählten Einzelheiten einer Ausführungsform einer Steuerungseinrichtung 1100 eines Festkörper-Laufwerks gezeigt. In einigen Ausführungsformen ist die Steuerungseinrichtung 1100 des Festkörper-Laufwerks in der Lage, eine oder mehrere Flash-Übergangsschichten oder Abschnitte davon zu implementieren, wie etwa durch Implementieren der Flash-Übergangsschicht in Zusammenarbeit mit einem Host. Im verschiedenen Ausführungsformen kann die Steuerungseinrichtung 1100 als ein oder mehrere integrierte Schaltkreise implementiert sein.With reference to 11A Fig. 12 is an illustration of selected details of an embodiment of a controller 1100 shown a solid-state drive. In some embodiments, the controller is 1100 The solid state drive is capable of implementing one or more flash transition layers or portions thereof, such as by implementing the flash transition layer in cooperation with a host. In various embodiments, the controller 1100 be implemented as one or more integrated circuits.

Wie in 11A dargestellt, ist ein Eingabe/Ausgabe-Empfänger, wie etwa ein SERDES (z.B. Serialisierer-Deserialisierer) der Steuerungseinrichtung 1100 des Festkörper-Laufwerks über eine externe Schnittstelle 1111 mit einem Host verbunden. Eine Host-Schnittstelle (z.B. HIF, host interface), empfängt Befehle über den SERDES, wie etwa Lese- und Schreib-Befehle, empfängt Schreib-Daten und sendet diese Daten. Die Befehle werden zu einer zentralen Verarbeitungseinheit über eine gemeinsam benutzten Speicher (z.B. OpRAM) gesendet. Die zentrale Verarbeitungseinheit interpretiert die Befehle und steuert andere Abschnitte der Steuerungseinrichtung des Festkörper-Laufwerks über den gemeinsam benutzten Speicher. Beispielsweise kommuniziert die zentrale Verarbeitungseinheit DMA-Befehle an und empfängt Antworten von verschiedenen Datenpfad-Übertragungs- und Empfangs-Einrichtungen, wie etwa das Host-Datenpfad-Empfangs-Segment (z.B. HDRx, host data path receive segment) oder ein Flash-Datenpfad-Übertragungs-Segment (z.B. FDTx, flash data path transmit segment) über den gemeinsam benutzten Speicher.As in 11A is an input / output receiver, such as a SERDES (eg, serializer-deserializer) controller 1100 of the solid-state drive via an external interface 1111 connected to a host. A host interface (eg, HIF, host interface) receives commands through the SERDES, such as read and write commands, receives write data, and sends that data. The commands are sent to a central processing unit via a shared memory (eg OpRAM). The central processing unit interprets the instructions and controls other portions of the solid-state drive controller over the shared memory. For example, the central processing unit communicates DMA commands and receives responses from various data path transmitting and receiving devices, such as the host data path receive segment (eg, HDRx, host data path receive segment) or a flash data path transfer Segment (eg FDTx, flash data path transmit segment) over the shared memory.

Schreib-Daten aus der Host-Schnittstelle werden über ein Host-Datenpfad-Empfangs-Segment (z.B. HDRx) in einen vereinheitlichten Puffer (z.B. UBUF) übertragen. Im verschiedenen Ausführungsformen enthält das Host-Datenpfad-Segment Logik zum optionalen und/oder selektiven Komprimieren und/oder Verschlüsseln der Host-Schreib-Daten. Die optional und/oder selektiv komprimierten und/oder verschlüsselten Host-Schreib-Daten werden dann aus dem vereinheitlichten Puffer an bzw. zu dem nicht-flüchtigen Speicher über ein Flash-Datenpfad-Übertragungs-Segment und eine generische Flash-Schnittstelle (z.B. GAFI, generic flash interface) gesendet. Im verschiedenen Ausführungsformen enthält das Flash-Datenpfad-Übertragungs-Segment Logik, um eine Verschlüsselung und/oder ein Scrambling und/oder eine Fehlerkorrektur-Codierung auszuführen. Im Antwort auf Host-Lese-Befehle werden Daten aus dem nicht-flüchtigen Speicher über die generische Flash-Schnittstelle gelesen und zu dem vereinheitlichten Puffer über ein Flash-Datenpfad-Empfangs-Segment (z.B. FDRx) gesendet. Im verschiedenen Ausführungsformen enthält das Flash-Datenpfad-Empfangs-Segment Fehlerkorrektur-Decodierung und/oder Verschlüsselung und/oder De-Scrambling. Im anderen Ausführungsformen ist ein gesonderter Fehlerkorrektur-Decodierer (z.B. LDPC-D zum Implementieren von LDPC-Codes) in der Lage, auf „rohen“ Daten, die in dem vereinheitlichten Puffer durch das Flash-Datenpfad-Empfangs-Segment gespeichert werden, zu arbeiten. Dekodierte Lese-Daten in dem vereinheitlichten Puffer werden dann an die Host-Schnittstelle über ein Host-Datenpfad-Übertragungs-Segment (z.B. HDTx) gesendet. Im verschiedenen Ausführungsformen enthält das Host-Datenpfad-Übertragungs-Segment Logik, um die dekodierten Lese-Daten optional und/oder selektiv zu entschlüsseln und/oder zu dekomprimieren. In einigen Ausführungsformen sind eine RAID-artige und eine Verarbeitungseinheit mit weichen Entscheidungen (soft-decision processing units, z.B. RASP)) dazu ausgelegt, RAID-artige Redundanz zu erzeugen, um Host-Schreib-Daten und/oder System-Daten, die in dem nicht-flüchtigen Speicher gespeichert sind, zusätzlich zu schützen und/oder um Soft-Decision Verarbeitungsoperationen zur Verwendung mit dem LDPC-D auszuführen.Write data from the host interface is transferred via a host data path receive segment (eg, HDRx) to a unified buffer (eg, UBUF). In various embodiments, the host data path segment includes logic for optionally and / or selectively compressing and / or encrypting the host write data. The optionally and / or selectively compressed and / or encrypted host write data is then extracted from the unified buffer to the non-volatile memory via a flash data path transfer segment and a generic flash interface (eg, GAFI, generic flash interface). In various embodiments, the flash data path transfer segment includes logic to perform encryption and / or scrambling and / or error correction coding. In response to host read commands, data is read from the nonvolatile memory via the generic flash interface and sent to the unified buffer via a flash data path receive segment (eg, FDRx). In various embodiments, the flash data path receive segment includes error correction decoding and / or encryption and / or de-scrambling. In other embodiments, a separate error correction decoder (eg, LDPC-D for implementing LDPC codes) is capable of operating on "raw" data stored in the unified buffer by the flash data path receive segment , Decoded read data in the unified buffer is then sent to the host interface via a host data path transfer segment (eg HDTx). In various embodiments, the host data path transfer segment includes logic to optionally and / or selectively decrypt and / or decompress the decoded read data. In some embodiments, a RAID-type and a soft-decision processing unit (eg, RASP) processing unit are configured to generate RAID-like redundancy to host write data and / or system data stored in the non-volatile memory are stored, in addition to protect and / or soft- To execute decision processing operations for use with the LDPC-D.

Gemäß verschiedener Ausführungsformen ist die Steuerungseinrichtung für ein Festkörper-Laufwerk dazu ausgelegt, keine, einige, alle oder Abschnitte von einem oder mehreren Flash-Übergangsschichten zu implementieren. In einem Beispiel wird ein Abbildungsabschnitt von höherem Niveau der Flash-Übertragungsschicht auf dem Host ausgeführt, und ein Abbildungsabschnitt von niedrigerem Niveau der Flash-Übergangsschicht wird in der Steuerungseinrichtung des Festkörper-Laufwerks ausgeführt. In einem anderen Beispiel sendet und empfängt die Steuerungseinrichtung eines Festkörper-Laufwerks abstrahierte physikalische Adresse einer Einheit, wie etwa Leseeinheit-Adressen und Umspannungen (spans) zu und von dem Host, und der Host bildet logische Blockadressen (oder Namen) auf die abstrahierten physikalischen Adressen der Einheiten ab. Die Steuerungseinrichtung des Festkörper-Laufwerks ist dazu ausgelegt, spezifische Daten, die den abstrahierten physikalischen Einheiten-Adressen zugeordnet sind, über einen Bezeichner der spezifischen Daten, wie etwa eine logische Blockadresse (oder Namen), die in einem Nachrichtenkopf gespeichert ist, zu lokalisieren. Im noch einem anderen Beispiel erzeugt ein Abbilden von einer logischen Blockadresse (oder einem Namen) im Host eine nicht-flüchtige Speicher-Seitenrahmen-Adresse, einen Versatz innerhalb des nicht-flüchtigen Seitenrahmens und eine Byte-Länge. Die Steuerungseinrichtung des Festkörper-Laufwerks ist dazu ausgelegt, eine Anzahl von Leseeinheiten zu bestimmen, auf die in dem nicht-flüchtigen Speicher zugegriffen werden sollen, um die spezifizierten Daten innerhalb von einem oder mehreren nicht-flüchtigen Speicher-Seitenrahmen zurückzuerlangen. Im vorteilhafter Weise werden in einem oder mehreren der Beispiele Einzelheiten der Fehlerkorrektur-Codierung (z.B. eine Anzahl von Nutzerdaten-Bytes pro nicht-flüchtigem Speicher-Seitenrahmen oder eine Größe von Leseeinheiten) durch die Steuerungseinrichtung des Festkörper-Laufwerks gepflegt, was den Overhead in dem Host verringert.According to various embodiments, the solid state drive controller is configured to implement none, some, all, or portions of one or more flash transition layers. In one example, a higher level imaging section of the flash transfer layer is executed on the host, and a lower level imaging section of the flash transition layer is executed in the controller of the solid state drive. In another example, the controller of a solid state drive sends and receives abstracted physical address of a device, such as read device addresses and spans, to and from the host, and the host forms logical block addresses (or names) on the abstracted physical addresses of the units. The controller of the solid state drive is configured to locate specific data associated with the abstracted physical device addresses via an identifier of the specific data, such as a logical block address (or name), stored in a message header. In yet another example, mapping from a logical block address (or name) in the host generates a nonvolatile memory page frame address, an offset within the non-volatile page frame, and a byte length. The controller of the solid state drive is configured to determine a number of read units to be accessed in the nonvolatile memory to retrieve the specified data within one or more nonvolatile memory page frames. Advantageously, in one or more of the examples, details of error correction coding (eg, a number of user data bytes per non-volatile memory page frame or a size of read units) are maintained by the controller of the solid state drive, which increases the overhead in the Host reduced.

Mit Verweis auf 11B wird eine Darstellung von ausgewählten Einzelheiten einer Ausführungsform eines Datenpfad-Segments gezeigt. Ein Datenpfad-Segment 1190 kann das Host-Datenpfad-Empfangs-Segment oder das Flash-Datenpfad-Übertragungs-Segment der 11A darstellen. Das Datenpfad-Segment 1190 umfasst eine Lese-Ablauf-Steuerung (read sequencer) 1130, eine Schreib-Ablauf-Steuerung (write-sequencer) 1140 und null oder mehr Datenpfad-Einheiten (z.B. DPUs, data path units). 11B zeigt ein Beispiel mit zwei Datenpfad-Einheiten 1150-1 und 1150-2.With reference to 11B An illustration of selected details of an embodiment of a data path segment is shown. A data path segment 1190 For example, the host data path receive segment or the flash data path transfer segment of the 11A represent. The data path segment 1190 includes a read sequencer 1130 , a write-sequencer 1140 and zero or more data path units (eg, DPUs, data path units). 11B shows an example with two data path units 1150-1 and 1150-2 ,

Die Lese-Ablauf-Steuerung 1130 ist mit dem OpRAM (siehe 11A) gekoppelt, um Steuerungsinformation, die die zu lesenden/zuzugreifenden Daten spezifiziert, zu empfangen. Beispielsweise kann die Imformation eine Adresse und/oder eine Länge in dem einheitlichen Puffer oder ein Befehl oder eine Host-Schnittstelle oder eine generische Flash-Schnittstelle sein, und kann Befehle, die mit den Daten zu vermischen sind, spezifizieren. Die Lese-Ablauf-Steuerung 1130 ist auch mit einer Leseeinrichtung 1110 verbunden, um die Daten zu lesen/auf diese zuzugreifen, wie etwa aus dem UBUF, der Host-Schnittstelle oder der generischen Flash-Schnittstelle. Die Lese-Ablauf-Steuerung 1130 ist dazu ausgelegt, einen verschachtelten Strom von Lese-Daten und -Befehlen, gemäß den von den OpRAM empfangenen Anforderungen, an null oder mehr Datenpfad-Einheiten 1150-1 und 1150-2 und eine Schreib-Ablauf-Steuerung 1140 zu senden. The read-expiry control 1130 is with the OpRAM (see 11A ) to receive control information specifying the data to be read / accessed. For example, the information may be an address and / or length in the unified buffer or a command or host interface or generic flash interface, and may specify commands to be merged with the data. The read-expiry control 1130 is also with a reading device 1110 connected to read / access the data, such as from the UBUF, the host interface or the generic flash interface. The read-expiry control 1130 is adapted to provide a nested stream of read data and instructions, according to the requests received from the OpRAM, to zero or more data path units 1150-1 and 1150-2 and a write-flow control 1140 to send.

Die Schreib-Ablauf-Steuerung 1140 ist dazu ausgelegt, einen verschachtelten Strom von Daten und Befehlen, der von der Lese-Ablauf-Steuerung 1130 gesendet worden ist, zu empfangen. Die Schreib-Ablauf-Steuerung 1140 ist mit einer Schreibeinrichtung 1120 zum Schreiben der Daten, wie etwa an das UBUF, die Host-Schnittstelle oder die generische Flash-Schnittstelle, verbunden. Die Daten werden gemäß den Befehlen in dem von der Schreib-Ablauf-Steuerung 1140 empfangenen Datenstrom (wie etwa die Befehle, die eine Adresse und/oder eine Länge spezifizieren) geschrieben. Die Schreib-Ablauf-Steuerung 1140 ist auch mit dem OpRAM (siehe 11A) verbunden, um gemäß den empfangenen Befehlen, Statusinformation über Daten, die geschrieben worden sind, zu senden. Beispielsweise wird Statusinformation in den OpRAM geschrieben, um die Vervollständigung des Schreibens eines bestimmten Abschnitts des Datenstroms (z.B. eine 4 KB Mapping-Einheit) anzuzeigen. The write sequence control 1140 is designed to handle a nested stream of data and commands from the read flow control 1130 has been sent to receive. The write sequence control 1140 is with a writing device 1120 for writing the data, such as to the UBUF, the host interface or the generic flash interface. The data is processed according to the instructions in the of the write sequence control 1140 received data stream (such as the instructions specifying an address and / or length). The write sequence control 1140 is also with the OpRAM (see 11A ) to send status information about data that has been written in accordance with the received commands. For example, status information is written to the OpRAM to indicate the completion of writing a particular portion of the data stream (eg, a 4 KB mapping unit).

Die Datenpfad-Einheiten 1150-1 und 1150-2 sind dazu ausgelegt, die Daten umzuwandeln, während diese zwischen der Lese-Ablauf-Steuerung 0 und der Schreib-Ablauf-Steuerung 1140 laufen. Von der Lese-Ablauf-Steuerung 1130 erzeugte Befehle in dem Datenstrom sind optional und/oder selektiv darauf gerichtet, von einem oder mehreren der Datenpfad-Einheiten 1150-1 und 1150-2 oder der Schreib-Ablauf-Steuerung 1140 empfangen zu werden. Beispiele von Datenpfad-Einheiten 1150-1 und 1150-2 umfassen:

  • – eine Codierungseinheit, die einen Befehl empfängt, der den Codierungsschlüssel (Imitialisierungs-Vektor), das zur Verschlüsselung zu verwenden ist, und die nachfolgenden Daten gemäß dem Codierungsschlüssel (salt) verschlüsselt. In weiteren Ausführungsformen umfasst der Befehl eine Spezifizierung eines Codierungsschlüssels;
  • – eine Entschlüsselungseinheit, die einen Befehl empfängt, der den Decodierungsschlüssel (Imitialisierungs-Vektor) enthält, das für die Entschlüsselung zu verwenden ist, und die folgenden Daten gemäß dem Decodierungsschlüssel (salt) entschlüsselt. In weiteren Ausführungsformen umfasst der Befehl auch eine Spezifizierung eines Dekodierungsschlüssels;
  • – eine Komprimierungseinheit, die einen Befehl empfängt, der einen Beginn einer Kompressions-Einheit (z.B. Abbildungseinheit)-Grenze anzeigt, und die folgenden Daten komprimiert. Im verschiedenen Ausführungsformen umfasst der Befehl auch eine oder mehrere einer Menge von Daten, die als eine Einheit zu komprimieren sind, eine Art der Kompression, eine maximale Laufzeit für die Kompression, und andere Kompressionssteuerungen;
  • – eine Dekomprimierungseinheit, die einen Befehl empfängt, der einen Beginn einer Kompressions-Einheits-Grenze angibt, und die folgenden Daten dekomprimiert. Im verschiedenen Ausführungsformen umfasst der Befehl auch eine oder mehrere Mengen von Daten, die als eine Einheit zu dekomprimieren sind, eine erwartete Größe der dekomprimierten Daten, einen Typ der Dekompression, eine maximale Laufzeit für die Dekompression und andere Dekomprimierungssteuerungen;
  • – eine Überprüfungseinheit für zyklische Redundanz (z.B. CRC, cyclic redundancy check), die einen Befehl empfängt, der den Überprüfungsschlüssel (Imitialisierungs-Vektor) umfasst, der zu verwenden ist, einen zyklischen Redundanz-Überprüfungs-Wert zu berechnen und einen zyklischen Redundanz-Überprüfungs-Wert über die folgenden Daten gemäß dem Überprüfungsschlüssel (salt) berechnet. In weiteren Ausführungsformen ist der Befehl dazu ausgelegt, optional und/oder selektiv die zyklische Redundanz-Überprüfungs-Einheit in die Lage zu versetzen, einen vorher berechneten zyklischen Redundanz-Überprüfungs-Wert an die vorher empfangenen Daten, die von dem zyklischen Redundanz-Überprüfungs-Wert abgedeckt sind, anzuhängen;
  • – eine Fehlerkorrektur-Codierungs- und/oder Dekodierungs-Einheit, die einen Befehl empfängt, der eine Code-Rate umfasst und/oder die folgenden Daten gemäß einem Fehlerkorrektur-Code dieser Code-Rate zu decodieren. In weiteren Ausführungsformen umfasst der Befehl optional und/oder selektiv zusätzliche Steuerungen, wie etwa Soft-Decision-Verarbeitungs-Imformation, eine maximale Anzahl von zu verwendenden Iterationen und andere Codierer und/oder Decodierer-Steuerungsinformation.
The data path units 1150-1 and 1150-2 are designed to convert the data while between the read-out control 0 and the write-flow control 1140 to run. From the read-flow control 1130 Commands generated in the data stream are optionally and / or selectively directed to one or more of the data path units 1150-1 and 1150-2 or the write-sequence control 1140 to be received. Examples of data path units 1150-1 and 1150-2 include:
  • An encoding unit which receives a command which encodes the encryption key (initialization vector) to be used for encryption and the subsequent data according to the encryption key (salt). In further embodiments, the command includes a specification of an encryption key;
  • A decryption unit which receives a command containing the decryption key (de-initialization vector) to be used for the decryption and decrypts the following data according to the decryption key (salt). In further embodiments, the command also includes a specification of a decryption key;
  • A compression unit which receives a command indicating a start of a compression unit (eg, imaging unit) boundary and compresses the following data. In various embodiments, the command also includes one or more of a set of data to be compressed as a unit, a type of compression, a maximum run time for compression, and other compression controls;
  • A decompression unit which receives a command indicating a beginning of a compression unit boundary, and decompresses the following data. In various embodiments, the command also includes one or more sets of data to be decompressed as a unit, an expected size of the decompressed data, a type of decompression, a maximum runtime for decompression, and other decompression controls;
  • A cyclic redundancy check unit (eg, CRC, cyclic redundancy check) which receives a command including the check key (initialization vector) to be used, a cyclic redundancy check value, and a cyclic redundancy check Value is calculated over the following data according to the verification key (salt). In further embodiments, the command is adapted to optionally and / or selectively enable the cyclic redundancy check unit to apply a previously calculated cyclic redundancy check value to the previously received data provided by the cyclic redundancy checker. Value are covered, attach;
  • An error correction coding and / or decoding unit receiving a command comprising a code rate and / or decoding the following data according to an error correction code of that code rate. In further embodiments, the command optionally and / or selectively includes additional controls, such as soft-decision processing information, a maximum number of iterations to use, and other encoders and / or decoder control information.

In einer beispielhaften Operation wird in Antwort auf das Empfangen eines Schreib-Befehls von einem Host eine Befehlsliste für eine Lese-Ablauf-Steuerung des Host-Datenpfad-Empfangs-Segments aufgebaut von der zentralen Verarbeitungseinheit, und gemäß der Befehlsliste wird das Host-Datenpfad-Empfangs-Segment dazu aktiviert, Schreib-Daten des Schreib-Befehls von dem Host an den vereinheitlichten Puffer über die Host-Schnittstelle zu übertragen. Eine Datenpfad-Einheit in dem Host-Datenpfad-Empfangs-Segment ist dazu ausgelegt, die Schreib-Daten zu komprimieren, bevor die (komprimierten) Schreib-Daten in den vereinheitlichten Puffer geschrieben werden. Mehrere (komprimierte) Abbildungseinheiten sind dazu ausgelegt, dicht gepackt in dem vereinheitlichten Puffer ohne überflüssigen Raum gepackt (tiled) zu werden. Die zentrale Verarbeitungseinheit wird durch die in den OpRAM geschriebene Statusinformation (über eine Schreib-Ablauf-Steuerung des Host-Datenpfad-Empfangs-Segments) hinsichtlich des Ortes und der Größe von jeder der (komprimierten) Abbildungseinheiten benachrichtigt. Die zentrale Verarbeitungseinheit ist dazu ausgelegt, Nachrichtenköpfe gemäß der Statusinformation zu konstruieren und eine Menge der Nachrichtenköpfe und der (komprimierten) Abbildungseinheiten, die einen nicht-flüchtigen Speicher-Seitenrahmen ausfüllen, zu bestimmen. Die zentrale Verarbeitungseinheit ist ferner dazu ausgelegt, eine Befehlsliste für eine Lese-Ablauf-Steuerung des Flash-Datenpfad-Übertragungs-Segments aufzubauen, um den nicht-flüchtigen Speicher-Seitenrahmen von Nachrichtenköpfen und Daten zu dem nicht-volatilen Speicher zu übertragen. Eine Datenpfad-Einheit in dem Flash-Datenpfad-Übertragungs-Segment ist dazu ausgelegt, die Nachrichtenköpfe und Daten, die zu dem nicht-flüchtigen Speicher gesendet werden, zu kodieren, und zusätzliche Bytes zum Fehlerkorrektur-Codierungs-Schutz für jede einer Vielzahl von Leseeinheiten hinzuzufügen. Beim Empfangen des Status von einer Schreib-Ablauf-Steuerung des Flash-Datenpfad-Übertragungs-Segments, dass das Beschreiben des NVM-Seitenrahmens vollständig ist, wird Platz, der in dem vereinheitlichten Puffer durch die (komprimierten) Abbildungseinheiten verwendet wird, erneut beanspruchbar (erneut benutzbar).In an exemplary operation, in response to receiving a write command from a host, a command list for read-flow control of the host data path receive segment is constructed by the central processing unit, and according to the command list, the host data path is Receive segment is enabled to transfer write data of the write command from the host to the unified buffer via the host interface. A data path unit in the host data path receive segment is configured to compress the write data before the (compressed) write data is written to the unified buffer. Several (compressed) imaging units are designed to be tightly packed in the unified buffer without tiled space. The central processing unit is notified of the location and size of each of the (compressed) mapping units by the status information written in the OpRAM (via a write-flow control of the host data path receive segment). The central processing unit is configured to construct headers according to the status information and to determine a set of the headers and the (compressed) mapping units that fill a non-volatile memory page frame. The central processing unit is further configured to build a command list for a read-flow control of the flash data path transfer segment to transfer the non-volatile memory page frame of headers and data to the non-volatile memory. A data path unit in the flash data path transfer segment is configured to encode the headers and data sent to the non-volatile memory, and additional bytes for error correction coding protection for each of a plurality of read units add. Upon receiving the status from a write-flow control of the flash data path transfer segment that the writing of the NVM page frame is complete, space used in the unified buffer by the (compressed) imaging units becomes reusable ( reusable).

In einem anderen beispielhaften Betrieb wird in Antwort auf das Empfangen eines Lese-Befehls von einem Host eine Befehlsliste für eine Lese-Lauf-Steuerung des Flash-Datenpfad-Empfangs-Segments konstruiert von der zentralen Verarbeitungseinheit, und gemäß der Befehlsliste, wird das Flash-Datenpfad-Empfangs-Segment dazu aktiviert, eine oder mehrere Leseeinheiten, die aus dem nicht-flüchtigen Speicher in den vereinheitlichten Puffer gelesen worden sind, über die generische Flash-Schnittstelle zu empfangen. In einigen Ausführungsformen ist eine Datenpfad-Einheit in dem Flash-Datenpfad-Empfangs-Segment dazu ausgelegt, die Daten, die zu dem nicht-flüchtigen Speicher gesendet worden sind, unter Verwendung der zusätzlichen Bytes zum Fehlerkorrektur-Codierungs-Schutz mit jeder Leseeinheit zu dekodieren. Im anderen Ausführungsformen geschieht eine Fehlerkorrektur über ein gesondertes Datenpfad-Segment (z.B. LDPC-D in 11A). Die zentrale Verarbeitungseinheit wird über den Empfang (der korrigierten) Daten in dem vereinheitlichten Puffer durch den Empfang eines Status aus einer Schreib-Ablauf-Steuerung des Flash-Datenpfad-Empfangs-Segments oder, in anderen Ausführungsformen, aus einer Schreib-Ablauf-Steuerung des LDPC-D-Datenpfad-Segments benachrichtigt. Die zentrale Verarbeitungseinheit ist ferner dazu ausgelegt, eine Befehlsliste für das Host-Datenpfad-Übertragungs-Segment aufzubauen, um zumindest einen Abschnitt der korrigierten Daten aus dem vereinheitlichten Puffer zu dem Host über die Host-Schnittstelle zu übertragen. Eine Datenpfad-Einheit in dem Host-Datenpfad-Übertragungs-Segment ist dazu ausgelegt, die korrigierten Daten zu dekomprimieren, bevor sie an den Host übertragen werden. Beim Empfang eines Status von einer Schreib-Ablauf-Steuerung des Host-Datenpfad-Übertragungs-Segments, dass die korrigierten Daten erfolgreich übertragen worden sind, wird Platz, der in dem vereinheitlichten Puffer durch die korrigierten Daten verwendet wurde, erneut einforderbar (erneut verwendbar). In another exemplary operation, in response to receiving a read command from a host, a command list for a read-run control of the flash data path receive segment is constructed by the central processing unit, and according to the command list, the flash Datapath receive segment is enabled to receive one or more read units read from the non-volatile memory into the unified buffer via the generic flash interface. In some embodiments, a data path unit in the flash data path receive segment is configured to use the data sent to the non-volatile memory using the to decode additional bytes for error correction coding protection with each reading unit. In other embodiments, an error correction via a separate data path segment (eg LDPC-D in 11A ). The central processing unit is characterized by receiving (corrected) data in the unified buffer by receiving a status from a write-flow control of the flash data path receive segment or, in other embodiments, a write-trace control of the LDPC-D data path segment notified. The central processing unit is further configured to construct a command data path for the host data path transfer segment to transfer at least a portion of the corrected data from the unified buffer to the host via the host interface. A data path unit in the host data path transfer segment is configured to decompress the corrected data before transferring it to the host. Upon receiving a status from a write-flow control of the host data-path transmission segment that the corrected data has been successfully transmitted, space used in the unified buffer by the corrected data is re-requestable (reusable) ,

Mit Verweis auf 11C wird eine Darstellung von ausgewählten Einzelheiten von verschiedenartigen Ausführungsformen des Systems gemäß einer Ausführungsform der Erfindung gezeigt. Die Ausführungsformen umfassen eine oder mehrere Imstanzen der Steuereinrichtung eines Festkörper-Laufwerks 1100 der 11A. Mehrere Festkörper-Laufwerke 1101a1101n umfassen allgemein Steuereinrichtungen 1100a1100n für Festkörper-Laufwerke, die mit nicht-flüchtigen Speichern 1199a1199n über Geräte-Schnittstellen 1190a1190n, respektive, verbunden sind. Die Figur stellt verschiedene Klassen von Ausführungsformen dar: ein einzelnes Festkörper-Laufwerk, das direkt mit einem Host 1102 verbunden ist, eine Vielzahl von Festkörper-Laufwerken, die jeweils über entsprechende externe Schnittstellen 1111a1111n direkt mit dem Host 1102 verbunden sind, und eine oder mehrere Festkörper-Laufwerke, die über verschiedene Zwischenverbindungs-Elemente indirekt mit dem Host 1102 gekoppelt sind.With reference to 11C an illustration of selected details of various embodiments of the system according to one embodiment of the invention is shown. The embodiments comprise one or more instances of the controller of a solid state drive 1100 of the 11A , Multiple solid-state drives 1101a - 1101n generally include control devices 1100a - 1100N for solid state drives using nonvolatile memories 1199a - 1199n via device interfaces 1190a - 1190n , respectively, are connected. The figure depicts various classes of embodiments: a single solid-state drive directly connected to a host 1102 connected to a variety of solid state drives, each with corresponding external interfaces 1111a - 1111n directly with the host 1102 and one or more solid-state drives that have various interconnect elements indirectly with the host 1102 are coupled.

Als eine beispielhafte Ausführungsform eines einzelnen Festkörper-Laufwerks, das direkt mit einem Host gekoppelt ist, ist eine Imstanz des Festkörper-Laufwerks 1101a direkt mit dem Host 1102 über eine externe Schnittstelle (interface) 1111a (z.B. wird ein Schalter/eine Struktur/eine zwischengeschaltete Steuereinrichtung 1103 ausgelassen, umgangen oder durchlaufen) gekoppelt ist. Als eine beispielhafte Ausführungsform einer Mehrzahl von Festkörper-Laufwerken, von denen jede direkt mit einem Host über entsprechende externe Schnittstellen gekoppelt sind, ist jedes aus einer Mehrzahl von Imstanzen der Festkörper-Laufwerke 1101a bis 1101n, respektive, über eine entsprechende Imstanz einer externen Schnittstelle 1111a1111n (z.B. wird ein Schalter/eine Struktur/eine zwischengeschaltete Steuereinrichtung 1103 ausgelassen, umgangen oder durchlaufen) direkt mit dem Host 1102 gekoppelt ist. Als eine beispielhafte Ausführungsform von einem oder mehreren Festkörper-Laufwerken, die über verschiedene Zwischenverbindungs-Elemente indirekt mit einem Host gekoppelt sind, ist jedes von einer oder mehreren Imstanzen des Festkörper-Laufwerks 1101, respektive, indirekt mit dem Host 1102 gekoppelt. Jede indirekte Kopplung ist über eine entsprechende Imstanz der externen Schnittstellen 1111a1111n, die mit einem Schalter/einer Struktur/einer zwischengeschalteten Steuerungseinrichtung 1103 und einer zwischengeschalteten Schnittstelle 1104 gekoppelt sind, mit dem Host 1102 gekoppelt.As an exemplary embodiment of a single solid-state drive coupled directly to a host is an imprint of the solid-state drive 1101a directly with the host 1102 via an external interface 1111a (eg, a switch / structure / intermediary controller 1103 omitted, bypassed or traversed) is coupled. As an example embodiment of a plurality of solid state drives, each of which is directly coupled to a host via corresponding external interfaces, each of a plurality of solid state drive instances is 1101a to 1101n , respectively, via a corresponding imprint of an external interface 1111a - 1111n (eg, a switch / structure / intermediary controller 1103 omitted, bypassed or traversed) directly to the host 1102 is coupled. As an example embodiment of one or more solid state drives indirectly coupled to a host via various interconnect elements, each is one or more instances of the solid state drive 1101 , respectively, indirectly with the host 1102 coupled. Each indirect coupling is via a corresponding instance of the external interfaces 1111a - 1111n connected to a switch / structure / intermediate controller 1103 and an intermediate interface 1104 coupled with the host 1102 coupled.

Einige der Ausführungsformen, die den Schalter/die Struktur/die zwischengeschaltete Steuerungseinrichtung 1103 umfassen, umfassen auch einen Karten-Speicher 1112C, der über eine Speicher-Schnittstelle 1180 gekoppelt ist und über die Festkörper-Laufwerke 1101a1101n und/oder über den Host 1102 zugreifbar ist. Im verschiedenen Ausführungsformen sind das eine oder die mehreren Festkörper-Laufwerke 1101a1101n, der Schalter/die Struktur/die zwischengeschaltete Steuerungseinrichtung 1103 und/oder der Karten-Speicher 1112C in einem physikalisch identifizierbaren Modul, einer Karte oder einem einsteckbaren Element (z.B. Eingabe/Ausgabe-Karte 1116) umfasst. In einigen Ausführungsformen entspricht ein Festkörper-Laufwerk 1101a1101n (oder Variationen davon) einem seriell angeschlossenen SCSI(z.B. SAS)-Laufwerk oder einem Laufwerk gemäß einem Anschluss in serieller fortgeschrittener Techologie (z.B. SATA, serial advanced technology attachment), der mit einem Imitiator, der als der Host 1102 arbeitet, gekoppelt ist.Some of the embodiments that comprise the switch / structure / intermediary controller 1103 include, also include a card memory 1112c that has a memory interface 1180 is coupled and over the solid state drives 1101a - 1101n and / or over the host 1102 is accessible. In various embodiments, this is one or more solid state drives 1101a - 1101n , the switch / structure / intermediate controller 1103 and / or the card memory 1112c in a physically identifiable module, a card or a pluggable element (eg input / output card 1116 ). In some embodiments, a solid state drive is equivalent 1101a - 1101n (or variations thereof) to a serial attached SCSI (eg, SAS) drive or to a serial advanced technology port (eg SATA) drive with an imitator acting as the host 1102 works, is coupled.

Der Host 1102 ist dazu ausgelegt, verschiedene Elemente der Host-Software (SW) 1115 auszuführen, wie etwa verschiedene Kombination eines Betriebssystems (z.B. OS, operating system) 1105, ein Treiber 1107, eine Anwendung 1109 und eine Multi-Geräte-Management-Software 1114. Ein gepunkteter Pfeil 1107D ist repräsentativ für eine bi-direktionale Kommunikation zwischen der Host-Software und dem Eingabe/Ausgabe-Gerät (z.B. Daten, die gesendet an/empfangen von einer oder mehreren der Imstanzen der Festkörper-Laufwerke 1101a1101n werden und von/nach irgendeinem oder mehreren der Betriebssysteme (OS) 1105 über den Treiber 1107, und die Anwendung 1109 entweder über den Treiber 1107 oder direkt als eine (z.B. PCI) virtuelle Funktion (z.B. VF)) gesendet werden. The host 1102 is designed to use different elements of the host software (SW) 1115 such as different combination of operating system (eg OS, operating system) 1105 , a driver 1107 , an application 1109 and a multi-device management software 1114 , A dotted arrow 1107d is representative of bi-directional communication between the host software and the input / output device (eg, data sent to / received from one or more of the solids of the solid state drives 1101a - 1101n and from / to any one or more of the operating systems (OS) 1105 over the driver 1107 , and the application 1109 either via the driver 1107 or directly as a (eg PCI) virtual function (eg VF)).

In einigen Ausführungsformen und/oder Nutzerszenarien umfasst die Host-Software 1115 einige, alle oder Teile einer Flash-Übergangsschicht, die mit den Festkörper-Laufwerken 1101a1101n verwendet wird. In einem Beispiel und in verschiedenen Ausführungsformen implementiert der Treiber 1107 mindestens einen Teil der Flash-Übergangsschichten, die mit den Festkörper-Laufwerken 1101a1101n verwendet werden. In einem anderen Beispiel und in verschiedenen Ausführungsformen implementiert die Multi-Geräte-Management-Software 1114 mindestens einen Teil der Flash-Übergangsschichten, die mit den Festkörper-Laufwerken 1101a1101n verwendet werden. In some embodiments and / or user scenarios, the host software includes 1115 some, all, or parts of a flash transition layer containing the solid state drives 1101a - 1101n is used. In one example and in various embodiments, the driver implements 1107 at least a portion of the flash transitional layers containing the solid state drives 1101a - 1101n be used. In another example and in various embodiments, the multi-device management software implements 1114 at least a portion of the flash transitional layers containing the solid state drives 1101a - 1101n be used.

Das Betriebssystem 1105 umfasst und/oder ist dazu ausgelegt, zu operieren mit, Treibern (die konzeptuell durch den Treiber 1107 dargestellt sind) zum Ausbilden einer Schnittstelle mit den Festkörper-Laufwerken 1101a1101n. Verschiedene Versionen von Windows (z.B. 95, 98, ME, NT, XP, 200, Server, Vista, 7 und 8), verschiedene Versionen von Linux (z.B. Red Hat, Debian und Ubuntu) und verschiedene Versionen von MacOS (z.B. 8, 9 und X) sind Beispiele des Betriebssystems 1105. Im verschiedenen Ausführungsformen sind die Treiber-Standards und/oder der generische Treiber (die gelegentlich „schrumpf-verpackt“ („shrink-wrapped“) oder vorinstalliert („pre-installed“) genannt werden, die mit einer/m Standard-Schnittstelle und/oder -Protokoll, wie etwa SATA, einer fortgeschrittenen Host-Kontroller-Schnittstelle (z.B. AHCI, advanced host controller interface) oder NVM Express betreibbar, oder sind optional Kunden-spezifisch und/oder Händler-spezifisch [ausgelegt] sind, um die Verwendung von Befehlen und/oder Flash-Übergangsschichten, die für die Festkörper-Laufwerke 1101a1101n spezifisch sind, zu ermöglichen. Einige Laufwerke und/oder Treiber haben Durchlauf-Modi (pass-through modes), um es Programmen auf Anwendungs-Niveau, wie etwa eine Anwendung 1109, über eine optimierte NAND-Zugriffs-(gelegentlich ONA (optimized NAND access) genannt) oder direkte NAND-Zugriffs-(gelegentlich DNA (direct NAND access) genannt)-Technik, zu ermöglichen, Befehle direkt an die Festkörper-Laufwerke 1101a1101n zu kommunizieren, was es einer Kunden-spezifischen Anwendung ermöglicht, Befehle und/oder Flash-Übergangsschichten zu verwenden, die spezifisch für die Festkörper-Laufwerke 1101a1101n sind, selbst mit einem generischen Treiber.The operating system 1105 includes and / or is designed to operate with, drivers (which are conceptualized by the driver 1107 shown) for interfacing with the solid state drives 1101a - 1101n , Different versions of Windows (eg 95, 98, ME, NT, XP, 200, Server, Vista, 7 and 8), different versions of Linux (eg Red Hat, Debian and Ubuntu) and different versions of MacOS (eg 8, 9 and X) are examples of the operating system 1105 , In various embodiments, the driver standards and / or the generic driver (sometimes called "shrink-wrapped" or "pre-installed") are those that come with a standard interface and or protocol, such as SATA, an advanced host controller interface (eg AHCI, advanced host controller interface) or NVM Express operable, or are optional customer-specific and / or merchant-specific [designed] to use commands and / or flash transition layers used for solid state drives 1101a - 1101n are specific to enable. Some drives and / or drivers have pass-through modes to provide application-level programs, such as an application 1109 , via an optimized NAND access (sometimes called ONA (optimized NAND access)) or direct NAND access (sometimes called DNA (direct NAND access) technique), enable commands directly to the solid state drives 1101a - 1101n Communicating what allows a custom application to use commands and / or flash transitions specific to the solid state drives 1101a - 1101n are, even with a generic driver.

Die ONA-Techniken umfassen eine oder mehrere der folgenden:
Verwendung von nicht-standardisierten Modifizierern (hints); Verwendung von Händler-spezifischen Befehlen; Kommunikation von nicht-standardisierten Statistiken, wie etwa aktuelle Verwendung von nicht-flüchtigem Speicher gemäß der Komprimierbarkeit; Verwendung von Schicht-spezifischen Flash-Übergangs-Protokollen (flash transition layer-specific protocols), wie etwa das Kommunizieren von Adressen von Leseeinheiten und Umspannungen (spans), oder solche wie das Kommunizieren von Adressen, Versätzen und Byte-Längen von nicht-flüchtigen Speicher-Seitenrahmen; und andere Techniken. Die DNA-Techniken umfassen eine oder mehrere der folgenden: Verwendung von nicht-standardisierten Befehlen oder Händler-spezifischen Befehlen, die nicht-abgebildeten Lese-, Schreib- und/oder Lösch-Zugriff auf den nicht-flüchtigen Speicher bereitstellen; Verwendung von nicht-standardisierten oder Händler-spezifischen Befehlen, die einen direkten Zugriff auf den nicht-flüchtigen Speicher bereitstellen, wie etwa das Umgehen des Formatierens von Daten, das anderenfalls die Eingabe/Ausgabe-Einrichtung erledigen würde; und andere Techniken. Beispiele der Treiber sind ein Treiber ohne ONA- oder DNA-Unterstützung, ein für ONA ausgelegter Treiber, ein für DNA ausgelegter Treiber und ein für ONA/DNA ausgelegter Treiber. Weitere Beispiele von Treibern sind ein vom Händler bereitgestellter, ein vom Händler entwickelter und/oder ein vom Händler verbesserter Treiber, und ein vom Client bereitgestellter, vom Client entwickelter und/oder vom Client verbesserter Treiber.
The ONA techniques include one or more of the following:
Use of non-standardized modifiers (hints); Use of dealer-specific commands; Communication of non-standardized statistics, such as current use of non-volatile memory according to the compressibility; Use of layer-specific flash transition layer-specific protocols, such as communicating addresses of readers and spans, or communicating addresses, offsets, and byte lengths of non-volatile ones memory page frame; and other techniques. The DNA techniques include one or more of the following: use of non-standardized instructions or dealer-specific instructions that provide non-mapped read, write, and / or erase access to the non-volatile memory; Using non-standardized or merchant-specific instructions that provide direct access to the non-volatile memory, such as bypassing the formatting of data that would otherwise handle the input / output device; and other techniques. Examples of drivers are a driver without ONA or DNA support, a driver designed for ONA, a driver designed for DNA, and a driver designed for ONA / DNA. Other examples of drivers are a dealer-provided, dealer-developed, and / or dealer-enhanced driver, and client-supplied, client-developed, and / or client-improved driver.

Beispiele der Programme auf Anwendungsniveau (application-level programs) sind eine Anwendung ohne ONA- oder DNA-Unterstützung, eine für ONA ausgelegte Anwendung, eine für DNA ausgelegte Anwendung und eine für ONA/DNA ausgelegte Anwendung. Ein gepunkteter Pfeil 1109D ist repräsentativ für eine bi-direktionale Kommunikation zwischen einer Anwendung und einer Eingabe/Ausgabe-Einrichtung (z.B. Umgehung über einen Treiber oder Umgehung über eine virtuelle Funktion) für eine Anwendung (z.B. eine für ONA ausgelegte Anwendung und ein für ONA ausgelegter Treiber, der mit einem Festkörper-Laufwerk kommuniziert, wie etwa ohne die Anwendung, die das Betriebssystem als Imtermediär verwendet). Ein gepunkteter Pfeil 1109V ist repräsentativ für eine bidirektionale Kommunikation zwischen einer Anwendung und einer Eingabe/Ausgabe-Einrichtung (z.B. Umgehung über eine virtuelle Funktion) für eine Anwendung (z.B. eine für DNA ausgelegte Anwendung und ein für DNA ausgelegter Treiber, der mit einem Festkörper-Laufwerk kommuniziert, wie etwa ohne die Anwendung, die das Betriebssystem oder den Treiber als Imtermediär verwendet). Examples of application-level programs are an application without ONA or DNA support, an ONA-designed application, a DNA-designed application, and an ONA / DNA-designed application. A dotted arrow 1109D is representative of bi-directional communication between an application and an input / output device (eg, bypassing via a driver or bypassing via a virtual function) for an application (eg, an ONA-designed application and an ONA-designed driver using communicates with a solid state drive, such as without the application using the operating system as an imtermmediate). A dotted arrow 1109V is representative of bidirectional communication between an application and an input / output device (eg, bypassing via a virtual function) for an application (eg, an application designed for DNA and a DNA driver configured to communicate with a solid state drive, such as for example, without the application that uses the operating system or the driver as an imtermmediate).

Einer oder mehrere Abschnitte der nicht-flüchtigen Speicher 1199a1199n werden, in einigen Ausführungsformen, als Firmware-Speicher (z.B. Firmware 1106a1106n) verwendet. Der Firmware-Speicher umfasst ein oder mehrere Firmware-Abbildungen (firmware images) (oder Abschnitte davon). Eine Firmware-Abbildung hat, beispielsweise, ein oder mehrere Abbildungen der Firmware, die ausgeführt werden (z.B. von der zentralen Steuerungs-Einheit (CPU) der Steuerungseinrichtungen 1100a1100n der Festkörper-Laufwerke). Eine Firmware-Abbildung hat, als ein anderes Beispiel, ein oder mehrere Abbildungen von Konstanten, Parameter-Werten und Imformation bezüglich nicht-flüchtiger Speicher-Geräte, die beispielsweise von der zentralen Verarbeitungseinheit während der Ausführung der Firmware referenziert werden. Die Abbildungen der Firmware entsprechen, beispielsweise, einem derzeitigen Firmware-Abbildung und null oder mehreren vorhergehenden (in Bezug auf Firmware-Aktualisierungen) Firmware-Bildern. Im verschiedenen Ausführungsformen stellt die Firmware generische, standardisierte, ONA und/oder DNA-Betriebsmodi bereit, ebenso wie das Betreiben mit einem oder mehreren Flash-Übergangsschichten. In einigen Ausführungsformen sind einige oder mehrere der Firmware-Betriebsmodi aktiviert (z.B. eine oder mehrere Anwendungs-Programm-Schnittstellen (z.B. API, application program interfaces) sind „nicht-blockiert“ („unlocked“) über Schlüssel oder verschiedene Software-Techniken, die optional von einem Treiber kommuniziert und/oder bereitgestellt werden). In weiteren Ausführungsformen werden verschiedene der Firmware-Abbildungen verwendet für verschiedene der Betriebsmodi und/oder verschiedene der Flash-Übergangsschichten. One or more sections of non-volatile memory 1199a - 1199n are, in some embodiments, as a firmware memory (eg firmware 1106a - 1106n ) used. The firmware memory includes one or more firmware images (or portions thereof). A firmware image has, for example, one or more images of the firmware, the be executed (eg by the central control unit (CPU) of the controllers 1100a - 1100N the solid state drives). As another example, a firmware map has one or more mappings of constants, parameter values, and non-volatile memory device imformation that are referenced, for example, by the central processing unit during firmware execution. The images of the firmware correspond to, for example, a current firmware image and zero or more previous (in terms of firmware updates) firmware images. In various embodiments, the firmware provides generic, standardized, ONA and / or DNA modes of operation, as well as operating with one or more flash transition layers. In some embodiments, some or more of the firmware operating modes are enabled (eg, one or more application program interfaces (eg, APIs) are "unlocked" via keys or various software techniques optionally communicated and / or provided by a driver). In further embodiments, various of the firmware maps are used for various of the modes of operation and / or different ones of the flash transition layers.

In einigen Ausführungsformen umfasst der Host 1102 eine Abbildung 1108 als eine eigene Hardware-Ressource, die eine Abbildung implementiert. Im anderen Ausführungsformen ist eine Abbildung teilweise oder in ihrer Gesamtheit über die Abbildung 1108 und/oder einen Host-Speicher 1112H und/oder über eine Abbildung 1141 in der Steuereinrichtung 1100 des Festkörper-Laufwerks und/oder über den Karten-Speicher 1112C implementiert. Beispiele der Abbildung 1108, des Host-Speichers 1112H, der Abbildung 1141 in der Steuereinrichtung 1100 des Festkörper-Laufwerks und des Karten-Speichers 1112C sind ein oder mehrere flüchtige und/oder nicht-flüchtige Speicher-Elemente, wie sie etwa über DRAM, SRAM und/oder Flash-oder andere nicht-flüchtige Speicher-Geräte implementiert sind. Weitere Beispiele des Host-Speichers sind System-Speicher, Host-Hauptspeicher, Host-Cache-Speicher, für den Host zugreifbare Speicher und für die Geräte zugreifbare Eingabe/Ausgabe-Speicher. In einigen Ausführungsformen und/oder Nutzerszenarien (wie etwa einige Ausführungsformen, die eine Eingabe/Ausgabe-Karte 1116 haben und den optionalen Karten-Speicher 1112C der 11C als Speicher (zumindest für einen Teil der Abbildung) verwenden), greifen ein oder mehrere der Eingabe/Ausgabe-Geräte und/oder der Host 1102 zu auf die Abbildung in dem Karten-Speicher 1112C. Im verschiedenen Ausführungsformen sind der Host 1102 und/oder eine oder mehrere der Imstanzen des Festkörper-Laufwerks 1101 dazu ausgelegt, auf die Abbildung 1108, den Host-Speicher 1112H, den Karten-Speicher 1112C und/oder die Abbildung 1141 zuzugreifen, um alle oder irgendwelche Abschnitte der Abbildungs-Imformation, die zum Umwandeln von logischen Blockadressen (oder anderen Bezeichner, wie etwa Namen) in nicht-flüchtige Speicher-Orte (wie etwa Block- und/oder Seitenrahmen-Adressen und/oder Adressen von Leseeinheiten), die auf einen oder mehrere Abschnitte eines nicht-flüchtigen Speichers einer Eingabe/Ausgabe-Einrichtung gerichtet sind, wie etwa Elemente von einer oder mehreren der Imstanzen der nicht-flüchtigen Speicher 1199a1199n verwendbar ist. Konzeptuell kann eine einzelne Abbildung existieren und gemäß verschiedener Ausführungsformen ist eine Steuerung und/oder Speicherung und/oder Verwendung der Abbildung durch einen oder mehrere der Host 1102 und/oder durch die Steuereinrichtungen 1100a1100n der Festkörper-Laufwerke bereitgestellt.In some embodiments, the host includes 1102 an illustration 1108 as a separate hardware resource that implements an image. In other embodiments, an image is partially or in its entirety about the image 1108 and / or a host memory 1112H and / or an illustration 1141 in the control device 1100 of the solid state drive and / or the card memory 1112c implemented. Examples of the picture 1108 , the host memory 1112H , the picture 1141 in the control device 1100 Solid State Drive and Card Memory 1112c are one or more volatile and / or non-volatile memory elements, such as implemented via DRAM, SRAM and / or Flash or other non-volatile memory devices. Other examples of host memory include system memory, host memory, host cache memory, host accessible memory, and device accessible input / output memory. In some embodiments and / or user scenarios (such as some embodiments including an input / output card 1116 have and the optional card memory 1112c of the 11C use as memory (at least for part of the figure)), access one or more of the input / output devices and / or the host 1102 to the picture in the card store 1112c , In different embodiments are the host 1102 and / or one or more of the solids of the solid state drive 1101 designed to look at the picture 1108 , the host memory 1112H , the card store 1112c and / or the picture 1141 to access all or any portions of the image information used to convert logical block addresses (or other identifiers, such as names) to non-volatile memory locations (such as block and / or page frame addresses and / or addresses of Reading units) directed to one or more portions of non-volatile memory of an input / output device, such as elements of one or more of the non-volatile memory instances 1199a - 1199n is usable. Conceptually, a single map may exist and, according to various embodiments, control and / or storage and / or use of the map by one or more of the hosts 1102 and / or by the control devices 1100a - 1100N the solid state drives provided.

In einigen Ausführungsformen, in denen der Schalter/die Struktur/die zwischengeschaltete Steuereinrichtung 1103 fehlt, sind die Festkörper-Laufwerke 1101a1101n über die externen Schnittstellen 1111a1111n direkt mit dem Host 1102 gekoppelt. Im verschiedenen Ausführungsformen sind die Steuereinrichtungen 1100a1100n der Festkörper-Laufwerke über ein oder mehrere zwischengeschaltete Niveaus (levels) von anderen Steuereinrichtungen, wie etwa eine RAID-Steuereinrichtung oder eine Eingabe/Ausgabe-Steuereinrichtung, mit dem Host 1102 gekoppelt. In einigen Ausführungsformen entsprechen die Festkörper-Laufwerke 1101a1101n (oder Variationen davon) einem SAS-Laufwerk oder einem SATA-Laufwerk und der Schalter/die Struktur/die zwischengeschaltete Steuereinrichtung 1103 entspricht einem Expander, der wiederum mit einem Imitiator gekoppelt ist, oder alternativ, entspricht der Schalter/die Struktur/die zwischengeschaltete Steuereinrichtung 1103 einer Brücke, die indirekt über einen Expander mit einem Imitiator gekoppelt ist. In einigen Ausführungsformen umfasst der Schalter/die Struktur/die zwischengeschaltete Steuereinrichtung 1103 einen oder mehrere PCIe-Schalter und/oder -Strukturen.In some embodiments, where the switch / structure / intermediate controller 1103 missing, are the solid state drives 1101a - 1101n via the external interfaces 1111a - 1111n directly with the host 1102 coupled. In various embodiments, the controllers are 1100a - 1100N the solid state drives have one or more intermediate levels from other controllers, such as a RAID controller or input / output controller, with the host 1102 coupled. In some embodiments, the solid state drives correspond 1101a - 1101n (or variations thereof) to a SAS drive or SATA drive and the switch / structure / intermediate controller 1103 corresponds to an expander, which in turn is coupled to an imitator, or alternatively, the switch / structure corresponds to the intermediate control device 1103 a bridge indirectly coupled to an imitator via an expander. In some embodiments, the switch / structure includes the intermediate controller 1103 one or more PCIe switches and / or structures.

Im verschiedenen Ausführungsformen, wie etwa einigen der Ausführungsformen, wobei der Host 1102 ein Rechen-Host (computing host) (z.B. ein Computer, ein Workstation-Computer, ein Server-Computer, ein Speicher-Server, ein Personal-Computer, ein Laptop-Computer, ein Notebook-Computer, ein Netbook-Computer und/oder ein Tablet-Computer) ist, ist der Rechen-Host optional dazu ausgelegt, mit einem oder mehreren lokalen und/oder abgesetzten Servern (z.B. optionale Server 1118) zu kommunizieren (z.B. über optionale Eingabe/Ausgabe- und Speicher-Einrichtungen/Ressourcen 1117 und optionale lokale Netzwerke/Weitbereichs-Netzwerke (z.B. LAN/WAN) 1119 zu kommunizieren. Die Kommunikation ermöglicht, beispielsweise, lokales und/oder Fern-Zugriffs-Management und/oder Verwendung von einem oder mehreren der Festkörper-Laufwerk-Elemente. In einigen Ausführungsformen erfolgt die Kommunikation insgesamt oder teilweise über Ethernet. In einigen Ausführungsformen erfolgt die Kommunikation ganz oder teilweise über Fibre Channel (Faserkanal). Das Lokal-Netzwerk-Weitbereichs-Netzwerk 1119 ist repräsentativ, in verschiedenen Ausführungsformen, für eine oder mehrere Lokal-Netzwerke und/oder Weitbereichs-Netzwerke, wie etwa ein oder mehrere aus einem Netzwerk in einer Server-Farm, über ein Netzwerk gekoppelte Server-Farmen, ein Großraum-Netzwerk (metro-area network) und das Imternet.In various embodiments, such as some of the embodiments, wherein the host 1102 a computing host (eg, a computer, a workstation computer, a server computer, a storage server, a personal computer, a laptop computer, a notebook computer, a netbook computer, and / or a tablet computer), the rake host is optionally adapted to one or more local and / or remote servers (eg, optional servers 1118 ) (eg via optional input / output and storage facilities / resources 1117 and optional local area networks / wide area networks (eg LAN / WAN) 1119 to communicate. The Communication allows, for example, local and / or remote access management and / or use of one or more of the solid state drive elements. In some embodiments, all or part of the communication is over Ethernet. In some embodiments, communication is wholly or partially via Fiber Channel. The local network wide area network 1119 is representative, in various embodiments, of one or more local area networks and / or wide area networks, such as one or more server farms coupled from a network in a server farm, networked over a network, a metropolitan area network (metro network), area network) and the Internet.

Im verschiedenen Ausführungsformen sind eine Steuereinrichtung für ein Festkörper-Laufwerk und/oder eine Steuereinrichtung für ein Computing-Host, nicht-flüchtigen Speicher in Kombination mit einem oder mehreren nicht-flüchtigen Speichern als eine nicht-flüchtige Speicher-Komponente implementiert, wie etwa eine Speicher-Komponente mit universellem seriellen Bus (z.B. USB), einer Speicher-Komponente mit universellem Flash-Speicher (z.B. UFS), eine Kompakt-Flash-(z.B. FC)-Speicher-Komponente, eine Multimedia-Karte-(z.B. MMC)-Speicher-Komponente, eine sichere, digitale(z.B. SD)-Speicher-Komponente, eine Speicher-Stick-(memory stick)-Speicher-Komponente und eine xD-Bild-Karten-(xD picture card)-Speicher-Komponente. In various embodiments, a controller for a solid state drive and / or a controller for a computing host, nonvolatile memory in combination with one or more nonvolatile memories are implemented as a nonvolatile memory component, such as a memory Universal serial bus (eg USB) component, universal flash memory (eg UFS) memory component, compact flash (eg FC) memory component, multimedia card (eg MMC) memory Component, a secure digital (eg, SD) memory component, a memory stick memory component, and an xD picture card memory component.

Im verschiedenen Ausführungsformen sind alle oder irgendwelche Teile einer Steuerungseinrichtung eines Festkörper-Laufwerks (oder einer Steuerungseinrichtung für einen nicht-flüchtigen Speicher eines Computing-Hosts) oder Funktionen davon in einem Host implementiert, mit dem die Steuereinrichtung gekoppelt werden soll (z.B. der Host 1102 aus 11C). Im verschiedenen Ausführungsformen sind alle oder irgendwelche Teile einer Steuereinrichtung eines Festkörper-Laufwerks (oder eine Steuereinrichtung eines nicht-flüchtigen Speichers eines Computing-Hosts) oder Funktionen davon über Hardware (z.B. Logik-Schaltkreise), Software und/oder Firmware (z.B. Treiber-Software oder Festkörper-Laufwerk-Steuerungs-Firmware) oder irgendeine Kombination derselben implementiert.In various embodiments, all or any portions of a controller of a solid state drive (or non-volatile memory controller of a computing host) or functions thereof are implemented in a host to which the controller is to be coupled (eg, the host 1102 out 11C ). In various embodiments, all or any portions of a solid state drive controller (or non-volatile memory controller of a computing host) or functions thereof are hardware (eg, logic circuits), software, and / or firmware (eg, driver software or solid state drive control firmware) or any combination thereof.

Mit Verweis auf 12 wird ein Ablaufdiagramm 1200 des Schreibens von Daten in einen nicht-flüchtigen Speicher gezeigt. Der Prozess beginnt im Schritt 1202, und im Schritt 1206 wird eine Bestimmung ausgeführt, Daten, die mit einem bestimmten aus einer Mehrzahl von Namen (oder anderen eindeutigen Bezeichnern wie etwa Objekt-Identifizierungen oder logische Blockadressen) in einen nicht-flüchtigen Speicher zu schreiben (speichern). Beispielsweise wird die Bestimmung durch eines oder mehrere aus den folgenden ausgeführt: ein Anwendungs-Programm, ein Betriebssystem, ein Hypervisor oder irgendein anderes Software- oder Firmware-Modul. In einigen Ausführungsformen sind die Schreib-Daten von variabler Größe (z.B. möglicherweise mit jeder Schreib-Operation variierend). In einigen Ausführungsformen sind die Schreib-Daten eine Anzahl von Einheiten mit festgesetzter Größe, wie etwa eine Anzahl von SATA-Sektoren. With reference to 12 becomes a flowchart 1200 of writing data to non-volatile memory. The process begins in step 1202 , and in the step 1206 a determination is made to write (store) data to a non-volatile memory with a particular one of a plurality of names (or other unique identifiers such as object identifiers or logical block addresses). For example, the determination is performed by one or more of the following: an application program, an operating system, a hypervisor, or any other software or firmware module. In some embodiments, the write data is of variable size (eg, possibly varying with each write operation). In some embodiments, the write data is a number of fixed size units, such as a number of SATA sectors.

Im Schritt 1210 werden ein Schreib-Befehl und die zugehörigen Schreib-Daten (möglicherweise mit variabler Größe) empfangen. In einem Beispiel sendet eine Anwendung einen Schreib-Befehl und Schreib-Daten (wie etwa über einen Zeiger (pointer) auf die Daten) unter Verwendung eines System-Aufrufs (system call) zu einem Treiber. In einem anderen Beispiel sendet ein Host einen Schreib-Befehl an eine Steuerungseinrichtung eines Festkörper-Laufwerks, zusammen mit Imformation, die es der Steuereinrichtung des Festkörper-Laufwerks ermöglicht, die zugeordneten Schreib-Daten zurückzuerlangen. Beispielsweise umfasst ein Schreib-Befehl ein Kennzeichen (tag) einer SATA nativen Befehlswarteschlange (z.B. NCQ, native command queue), und das Kennzeichen der nativen Befehlswarteschlange wird verwendet, um die zugeordneten Schreib-Daten zu holen.In step 1210 a write command and the associated write data (possibly of variable size) are received. In one example, an application sends a write command and write data (such as via a pointer to the data) to a driver using a system call. In another example, a host sends a write command to a controller of a solid state drive, along with an information that allows the controller of the solid state drive to retrieve the associated write data. For example, a write command includes a tag of a SATA native command queue (eg, NCQ, native command queue), and the native command queue flag is used to fetch the associated write data.

Im Schritt 1214 werden die Schreib-Daten (möglicherweise mit variabler Größe) optional und/oder selektiv komprimiert oder anderweitig lediglich ihrer Größe verringert. Selbst wenn die zugeordneten Schreib-Daten bereits von variabler Größe waren, ist eine Kompression möglicherweise in der Lage, eine Größe der zugeordneten Schreib-Daten weiter zu verringern. In einigen Ausführungsformen sind die (möglicherweise mit variabler Größe und möglicherweise komprimierten) Schreib-Daten optional und/oder selektiv verschlüsselt.In step 1214 For example, the write data (possibly of variable size) is optionally and / or selectively compressed or otherwise reduced in size only. Even if the associated write data were already of variable size, compression may be able to further reduce a size of the associated write data. In some embodiments, the write data (possibly of variable size and possibly compressed) is optionally and / or selectively encrypted.

Im Schritt 1218 wird ein nächster nicht-beschriebener Ort (einen physikalischen Speicher-Adressraum) des nicht-flüchtigen Speichers zum Schreiben von Daten bestimmt. In einem Beispiel ist der bestimmte, nächste, nicht beschriebene, physikalische Ort benachbart zu den vorhergehend-beschriebenen Daten mit variabler Größe (wodurch in dem nicht-flüchtigen Speicher kein Platz verschwendet wird). In einem anderen Beispiel beginnt der bestimmte, nächste, nicht-beschriebene physikalische Ort in derselben Leseeinheit wie die vorhergehend beschriebenen Daten mit variabler Größe. In einigen Ausführungsformen ist der bestimmte, nächste, nicht-beschriebene, physikalische Ort in Übereinstimmung mit einem in dem Schreib-Befehl spezifizierten Band. In step 1218 a next non-written location (a physical memory address space) of the non-volatile memory is designated for writing data. In one example, the particular, next undescribed, physical location is adjacent to the previously described variable size data (which would waste no space in the non-volatile memory). In another example, the particular next undetected physical location in the same read unit begins as the variable size data previously described. In some embodiments, the determined next physical location not described is in accordance with a band specified in the write command.

Im Schritt 1222 werden die Schreib-Daten (möglicherweise mit variabler Größe, möglicherweise komprimiert) in dem nicht-flüchtigen Speicher an dem bestimmten, nächsten, nicht beschriebenen, physikalischen Ort gespeichert. In einigen Ausführungsformen schreibt eine Hardware-Einheit die Schreib-Daten (möglicherweise mit variabler Größe, möglicherweise komprimiert) direkt auf eine Abbildung (image) eines nicht-flüchtigen Speicher-Seitenrahmens (z.B. einem Teil eines Puffers, der in den nicht-flüchtigen Speicher-Seitenrahmen beschrieben wird). In step 1222 The write data (possibly of variable size, possibly compressed) in the non-volatile memory on the certain, next, not described, physical location stored. In some embodiments, a hardware unit writes the write data (possibly of variable size, possibly compressed) directly to a non-volatile memory page frame image (eg, a portion of a buffer that is stored in the non-volatile memory). Side frame is described).

Im Schritt 1226 wird ein Nachrichtenkopf, der einen Bezeichner der Schreib-Daten umfasst, in einem gleichen nicht-flüchtigen Speicher-Seitenrahmen gespeichert wie zumindest ein Teil der Schreib-Daten (möglicherweise mit variabler Größe, möglicherweise komprimiert). Beispielsweise wird der Nachrichtenkopf in einer gleichen nicht-flüchtigen Speicher-Seitenrahmen gespeichert wie zumindest ein Teil der Schreib-Daten (möglicherweise mit variabler Größe, möglicherweise komprimiert) wie in 6, und/oder der Nachrichtenkopf wird in derselben Leseeinheit gespeichert wie zumindest ein Teil der Schreib-Daten (möglicherweise mit variabler Größe, möglicherweise komprimiert) in 5. Gemäß verschiedener Ausführungsformen ist der Bezeichner einer oder mehrere der folgenden: gleich wie das bestimmte Namen der Schreib-Daten; eine Funktion des bestimmten Namen der Schreib-Daten; ein Bezeichner, der den bestimmten Namen der Schreib-Daten über eine Tabelle zugeordnet ist; ein eindeutiger Bezeichner unter all den in den nicht-flüchtigen Speicher gespeicherten Daten; und irgendeine Kombination der vorgenannten. In step 1226 For example, a header comprising an identifier of the write data is stored in a same non-volatile memory page frame as at least a portion of the write data (possibly of variable size, possibly compressed). For example, the message header is stored in a same non-volatile memory page frame as at least part of the write data (possibly of variable size, possibly compressed) as in 6 , and / or the header is stored in the same reading unit as at least part of the write data (possibly of variable size, possibly compressed) in FIG 5 , According to various embodiments, the identifier is one or more of the following: same as the particular name of the write data; a function of the specific name of the write data; an identifier associated with the particular name of the write data through a table; a unique identifier among all the data stored in the non-volatile memory; and any combination of the foregoing.

Gemäß verschiedener Ausführungsformen tritt das Speichern der Schreib-Daten (mit möglicherweise variabler Größe, möglicherweise komprimiert) und/oder dem Nachrichtenkopf in den Schritten 1222 und/oder 1226 auf und/oder wird verschoben, bis ein nicht-flüchtiger Speicher-Seitenrahmen von Nachrichtenköpfen und Daten (wie etwa aus mehreren Schreib-Operationen) akkumuliert ist. In einigen Ausführungsformen wird eine Fehlerkorrektur-Codierung als Teil des Speicherns in dem nicht-flüchtigen Speicher durchgeführt. In weiteren Ausführungsformen hängt die Fehlerkorrektur-Codierung eine Anzahl von Fehlerkorrektur-Codierungs-Bytes an einen Benutzer-Abschnitt von jeder Leseeinheit, um Leseeinheiten auszubilden, so wie diese in dem nicht-flüchtigen Speicher gespeichert sind. Im noch weiteren Ausführungsformen wird ein Scrambling vor der Fehlerkorrektur-Codierung ausgeführt.According to various embodiments, storing the write data (possibly of variable size, possibly compressed) and / or the message header occurs in the steps 1222 and or 1226 and / or is postponed until a non-volatile memory page frame of message headers and data (such as multiple write operations) is accumulated. In some embodiments, error correction coding is performed as part of the storage in the non-volatile memory. In further embodiments, the error correction coding appends a number of error correction coding bytes to a user portion of each reading unit to form read units as stored in the non-volatile memory. In still further embodiments, scrambling is performed prior to error correction coding.

Im Schritt 1230 wird eine Angabe des bestimmten, nächsten, nicht beschriebenen, physikalischen Orts zurückgegeben. In einem Beispiel umfasst die Angabe des bestimmten, nächsten, nicht beschriebenen, physikalischen Ortes eine Adresse einer Leseeinheit, wie etwa eine Adresse einer ersten der Leseeinheiten, die verwendet wurde, um die Schreib-Daten (möglicherweise mit variabler Größe, möglicherweise komprimiert) zu speichern. Im Fortsetzung des Beispiels und in einigen Ausführungsformen umfasst die Angabe des bestimmten, nächsten, nicht beschriebenen, physikalischen Ortes ferner eine Anzahl von Leseeinheiten, die von den Schreib-Daten (möglicherweise mit variabler Größe, möglicherweise komprimiert) umspannt werden, beispielsweise eine Anzahl von Leseeinheit, die gelesen werden müssen, um alle und nicht mehr als die Schreib-Daten (möglicherweise mit variabler Größe, möglicherweise komprimiert) zurückzuerlangen. Eine oder mehrere aus der Anzahl der Leseeinheiten enthält optional und/oder selektiv Daten, die anderen der Namen zugeordnet sind, jedoch enthält jede aus der Anzahl der Leseeinheiten zumindest einige der Schreib-Daten (möglicherweise mit variabler Größe, möglicherweise komprimiert). In einem anderen Beispiel umfasst die Angabe der bestimmten, nächsten, nicht beschriebenen, physikalischen Ortes eine Adresse eines nicht-flüchtigen Speicher-Seitenrahmens und/oder einen Versatz in einem nicht-flüchtigen Speicher-Seitenrahmen, der verwendet wurde, um zumindest einen Teil der Schreib-Daten (möglicherweise mit variabler Größe, möglicherweise komprimiert) zu speichern. Im Fortsetzung des anderen Beispiels und in einigen Ausführungsformen umfasst die Angabe des bestimmten, nächsten, nicht beschriebenen, physikalischen Ortes ferner eine Länge in Bytes der Schreib-Daten (möglicherweise mit variabler Größe, möglicherweise komprimiert). Im weiterer Fortsetzung des anderen Beispiels und in noch weiteren Ausführungsformen umspannen die Schreib-Daten (möglicherweise mit variabler Größe, möglicherweise komprimiert) mehr als einen nicht-flüchtigen Speicher-Seitenrahmen (z.B. beginnt in einem ersten, nicht-flüchtigen Speicher-Seitenrahmen und setzt sich in eine oder mehrere darauf folgende, nicht-flüchtige Speicher-Seitenrahmen fort). Wenn beispielsweise eine verbleibende Menge von Nutzerdaten bei und nachfolgend auf den Versatz in dem ersten, nicht-flüchtigen Speicher-Seitenrahmen weniger ist als die Länge in Bytes der Schreib-Daten (möglicherweise mit variabler Größe, möglicherweise komprimiert), dann umspannen die Schreib-Daten (möglicherweise mit variabler Größe, möglicherweise komprimiert) mehr als einen nicht-flüchtigen Speicher-Seitenrahmen.In step 1230 an indication of the particular next physical location not described is returned. In one example, the indication of the particular nearest physical location not described includes an address of a reading unit, such as an address of a first one of the reading units, used to store the writing data (possibly of variable size, possibly compressed) , Continuing with the example and in some embodiments, the indication of the particular next physical location not described further includes a number of read units spanned by the write data (possibly of variable size, possibly compressed), for example a number of read units , which must be read to retrieve all and not more than the write data (possibly with variable size, possibly compressed). One or more of the plurality of readers optionally and / or selectively contains data associated with others of the names, however, each of the number of readers includes at least some of the write data (possibly of variable size, possibly compressed). In another example, the indication of the determined next physical location not described includes an address of a nonvolatile memory page frame and / or an offset in a nonvolatile memory page frame used to write at least a portion of the write To save data (possibly with variable size, possibly compressed). Continuing with the other example, and in some embodiments, the indication of the particular next physical location not described further includes a length in bytes of the write data (possibly of variable size, possibly compressed). Continuing with the other example, and in yet other embodiments, the write data (possibly of variable size, possibly compressed) spans more than one non-volatile memory page frame (eg, begins in a first non-volatile memory page frame and sits down into one or more subsequent non-volatile memory page frames). For example, if a remaining amount of user data at and subsequent to the offset in the first non-volatile memory page frame is less than the length in bytes of the write data (possibly of variable size, possibly compressed), then the write data will span (possibly variable size, possibly compressed) more than one non-volatile memory page frame.

Im Schritt 1234 wird eine Abbildung gepflegt, die einen bestimmten Namen der Eingabe des bestimmten, nächsten, nicht beschriebenen, physikalischen Ortes zuordnet. Beispielsweise ermöglicht das Pflegen der Abbildung, dass die dem bestimmten Namen zugeordneten Daten durch eine nachfolgende Lese-Operation wiedererlangt werden können.In step 1234 a mapping is maintained that assigns a specific name to the input of the particular next, not described, physical location. For example, maintaining the map allows the data associated with the particular name to be retrieved by a subsequent read operation.

Im Schritt 1238 wird eine Statistik gemäß des Schreib-Befehls gepflegt. Beispielsweise verwendet das Schreiben der den bestimmten Namen zugeordneten Daten eine bestimmte Menge Platz in einem Redundanzblock, wo die Daten geschrieben waren, und optional und/oder selektiv eine bestimmte Menge Platz in einem Redundanzblock freigegeben haben, wo eine ältere Version der dem bestimmten Namen zugeordneten Daten gespeichert waren. Die Statistik verfolgt eine Menge des verwendeten Platzes bzw. Raums (oder äquivalent in einigen Ausführungsformen eine Menge des freien Platzes) in jedem Redundanzblock. Der Prozess endet in Schritt 1290.In step 1238 a statistic is maintained according to the write command. For example, writing the data associated with the particular name uses a certain amount of space in one Redundancy block where the data was written, and optionally and / or selectively released a certain amount of space in a redundancy block where an older version of the data associated with the particular name was stored. The statistic tracks an amount of space used (or equivalently an amount of free space in some embodiments) in each redundancy block. The process ends in step 1290 ,

In einigen Ausführungsformen werden Datensperren (locks) (wie etwa Semaphore) verwendet, um einen Zugriff auf mindestens einen Teil der Abbildung während zumindest eines Teils des Prozesses 1200 zu verhindern. Beispielsweise und in einigen Ausführungsformen ist ein Eintrag der Abbildung, die dem bestimmten Namen zugeordnet ist, von den Schritten 1210 bis 1234 gesperrt, um weiteren Zugriff auf den Eintrag zu vermeiden, während er aktualisiert wird. In some embodiments, locks (such as semaphores) are used to access at least a portion of the map during at least part of the process 1200 to prevent. For example, and in some embodiments, an entry of the map associated with the particular name is of the steps 1210 to 1234 locked to prevent further access to the entry while it is being updated.

Mit Verweis auf 13 wird ein Ablauf-Diagramm 1300 des Lesens von Daten aus einem nicht-flüchtigen Speicher gezeigt. Der Prozess beginnt im Schritt 1203 und im Schritt 1306 wird eine Bestimmung ausgeführt, um Daten, die einem bestimmten aus einer Mehrzahl von Namen (oder anderen eindeutigen Bezeichnern, wie etwa Objekt-Bezeichner oder logischen Blockadressen) zugeordnet sind, aus einem nicht-flüchtigen Speicher zu lesen (wiederzuerlangen). Beispielsweise wird die Bestimmung durch ein oder mehrere von einem Anwendungs-Programm, einem Betriebssystem, einem Hypervisor oder jeglichen anderen Software- oder Firmware-Modulen gemacht. In einigen Ausführungsformen sind die Daten von variabler Größe (z.B. möglicherweise mit jeder Lese-Operation variierend). In anderen Ausführungsformen sind die Daten eine Anzahl von Einheiten mit festgesetzter Größe, wie etwa eine Anzahl von SATA-Sektoren. With reference to 13 becomes a flow diagram 1300 of reading data from a non-volatile memory. The process begins in step 1203 and in the step 1306 a determination is made to read (retrieve) data associated with a particular one of a plurality of names (or other unique identifiers, such as object identifiers or logical block addresses) from a nonvolatile memory. For example, the determination is made by one or more of an application program, an operating system, a hypervisor, or any other software or firmware modules. In some embodiments, the data is of variable size (eg, possibly varying with each read operation). In other embodiments, the data is a number of fixed size units, such as a number of SATA sectors.

Im Schritt 1310 wird der bestimmte Namen in einer Abbildung nachgeschlagen, um eine Angabe eines physikalischen Orts in dem nicht-flüchtigen Speicher einer abgespeicherten Version der Daten, die einem Namen zugeordnet sind, zu bestimmen. Gemäß verschiedener Ausführungsformen wird das Nachschlagen in der Abbildung durch ein Software-Modul, das die Lese-Operation hervorgebracht hat, ausgeführt, oder durch ein anderes Software-Modul, das von dem Software-Modul, das die Lese-Operation vorgebracht hat, aufgerufen. Beispielsweise bringt eine Anwendung die Lese-Operation hervor, und eine Treiber-Schicht in dem Host oder eine Firmware-Schicht in einer Steuereinrichtung eines Festkörper-Laufwerks führt das Nachschlagen in der Abbildung durch. In step 1310 the particular name is looked up in an image to determine an indication of a physical location in the non-volatile memory of a stored version of the data associated with a name. According to various embodiments, the look-up in the image is performed by a software module that produced the read operation, or by another software module called by the software module that performed the read operation. For example, an application effects the read operation, and a driver layer in the host or a firmware layer in a controller of a solid-state drive performs the lookup in the map.

Im Schritt 1314 wird ein Lese-Befehl mit der Eingabe eines physikalischen Orts in den nicht-flüchtigen Speicher empfangen. In einem Beispiel sendet, nachdem eine Treiber-Schicht in dem Host das Nachschlagen in der Abbildung durchgeführt hat, die Treiber-Schicht einen Lese-Befehl und die Angabe eines physikalischen Orts in dem nicht-flüchtigen Speicher an eine Steuereinrichtung eines Festkörper-Laufwerks. In einem anderen Beispiel sendet, nachdem ein erster Prozessor in einer Steuereinrichtung eines Festkörper-Laufwerks das Nachschlagen in der Abbildung durchgeführt hat, der erste Prozessor einen Lese-Befehl und die Angabe eines physikalischen Ortes in dem nicht-flüchtigen Speicher zu einem zweiten Prozessor in der Steuereinrichtung des Festkörper-Laufwerks, die den Zugriff auf den nicht-flüchtigen Speicher steuert.In step 1314 For example, a read command with the entry of a physical location is received in the non-volatile memory. In one example, after a driver layer in the host has made the look up in the map, the driver layer sends a read command and the indication of a physical location in the nonvolatile memory to a controller of a solid state drive. In another example, after a first processor in a controller of a solid state drive has performed the lookup in the map, the first processor sends a read command and the physical location in the nonvolatile memory to a second processor in the FIG Control device of the solid-state drive, which controls access to the non-volatile memory.

Im Schritt 1318 wird die Angabe eines physikalischen Orts in dem nicht-flüchtigen Speicher verwendet, um einen Ort und eine Anzahl von Leseeinheiten in dem nicht-flüchtigen Speicher, der die gespeicherte Version der dem bestimmten Namen zugeordneten Daten enthält, zu bestimmen. In einem Beispiel umfasst die Angabe des physikalischen Ortes eine Adresse einer Leseeinheit, wie etwa eine Adresse eines ersten aus einem oder mehreren Leseeinheiten, die verwendet werden, um die gespeicherte Version der dem bestimmten Namen zugeordneten Daten zu speichern. In Fortsetzung des Beispiels und in einigen Ausführungsformen umfasst die Angabe des physikalischen Ortes ferner eine Anzahl der einen oder mehreren Leseeinheiten, beispielsweise eine Anzahl von Leseeinheiten, die gelesen werden müssen, um alle und nicht mehr als die Speicher-Karte-Version der dem bestimmten Namen zugeordneten Daten zurückzuerlangen (eine oder mehrere aus der einen oder den mehreren Leseeinheiten enthält optional und/oder selektiv Daten, die anderen aus den Namen zugeordnet sind, jedoch enthält jede aus der einen oder den mehreren Leseeinheiten zumindest einige der gespeicherten Versionen der dem bestimmten Namen zugeordneten Daten). In einem anderen Beispiel umfasst die Angabe des physikalischen Ortes eine Adresse eines nicht-flüchtigen Speicher-Seitenrahmens und/oder einen Versatz in einem nicht-flüchtigen Speicher-Seitenrahmen, der verwendet wird, um zumindest einen Teil der gespeicherten Daten der dem bestimmten Namen zugeordneten Daten zu speichern. Im Fortsetzung eines anderen Beispiels und in einigen Ausführungsformen umfasst die Angabe des physikalischen Ortes ferner eine Länge in Bytes der gespeicherten Version der dem bestimmten Namen zugeordneten Daten und in weiterer Fortsetzung des anderen Beispiels und in noch weiteren Ausführungsformen umspannt die gespeicherte Version der dem bestimmten Namen zugeordneten Daten mehr als einen nicht-flüchtigen Speicher-Seitenrahmen (z.B. startet in einem ersten, nicht-flüchtigen Speicher-Seitenrahmen und setzt sich in einem oder mehreren darauffolgenden, nicht-flüchtigen Speicher-Seitenrahmen fort). Wenn beispielsweise eine verbleibende Menge von Nutzerdaten bei und nachfolgend auf den Versatz in dem ersten, nicht-flüchtigen Speicher-Seitenrahmen weniger ist als die Länge in Bytes der gespeicherten Versionen der bestimmten Namen zugeordneten Daten, dann umspannt die gespeicherte Version der den bestimmten Namen zugeordneten Daten mehr als einen nicht-flüchtigen Speicher-Seitenrahmen. In weiterer Fortsetzung des anderen Beispiels werden gemäß einer Anzahl und/oder einer Größe der Leseeinheiten in dem ersten, nicht-flüchtigen Speicher-Seitenrahmen und gemäß dem Versatz und der Länge in Bytes der gespeicherten Version der dem bestimmten Namen zugeordneten Daten eine erste aus einer oder mehreren der Leseeinheiten in dem ersten, nicht-flüchtigen Speicher-Seitenrahmen und eine Anzahl der Leseeinheiten in dem ersten nicht-flüchtigen Speicher-Seitenrahmen bestimmt. Wenn die gespeicherte Version der dem bestimmten Namen zugeordneten Daten mehr als einen nicht-flüchtigen Speicher-Seitenrahmen umspannt, wird eine ähnliche Prozedur mit einer oder mehreren darauffolgenden der nicht-flüchtigen Speicher-Seitenrahmen verwendet, um zusätzliche Leseeinheiten in den darauffolgenden, nicht-flüchtigen Speicher-Seitenrahmen, die zumindest einen Teil der gespeicherten Version der den bestimmten Namen zugeordneten Daten umfasst, zu bestimmen.In step 1318 the indication of a physical location in the non-volatile memory is used to determine a location and a number of read units in the non-volatile memory containing the stored version of the data associated with the particular name. In one example, the physical location indication includes an address of a reading unit, such as an address of a first one or more reading units used to store the stored version of the data associated with the particular name. Continuing with the example and in some embodiments, the physical location indication further includes a number of the one or more read units, for example, a number of read units that must be read, all and not more than the memory card version of the particular name to retrieve associated data (one or more of the one or more read units optionally and / or selectively includes data associated with others from the names, however, each of the one or more read units includes at least some of the stored versions of the particular name associated therewith Dates). In another example, the physical location indication includes an address of a nonvolatile memory page frame and / or an offset in a nonvolatile memory page frame that is used to encode at least a portion of the stored data of the data associated with the particular name save. Continuing another example, and in some embodiments, the physical location indication further includes a length in bytes of the stored version of the data associated with the particular name, and in continuation of the other example, and in still other embodiments, the stored version encompasses the particular name associated with the particular name Data exceeds a non-volatile memory page frame (eg, starts in a first non-volatile memory page frame and continues in one or more subsequent non-volatile memory page frames). If For example, if a remaining amount of user data at and subsequent to the offset in the first non-volatile memory page frame is less than the length in bytes of the stored versions of the particular name associated data, then the stored version of the data associated with the particular name spans more as a non-volatile memory page frame. In a further continuation of the other example, according to a number and / or a size of the reading units in the first non-volatile memory page frame and according to the offset and the length in bytes of the stored version of the data associated with the particular name, a first one of a plurality of the read units in the first nonvolatile memory page frame and a number of the read units in the first nonvolatile memory page frame. If the stored version of the data associated with the particular name spans more than one non-volatile memory page frame, a similar procedure is used with one or more subsequent ones of the non-volatile memory page frames to add additional readers to the subsequent non-volatile memory Page frame that includes at least a portion of the stored version of the data associated with the particular name.

Im Schritt 1322 werden die bestimmten Leseeinheiten aus dem nicht-flüchtigen Speicher gelesen. In einigen Ausführungsformen wird eine Fehlerkorrektur-Codierung auf den Leseeinheiten ausgeführt, um jegliche Fehler, die während des Speicherns in und/oder dem Transfer zu oder aus dem nicht-flüchtigen Speicher auftreten, zu korrigieren. In weiteren Ausführungsformen wird nachfolgend auf die Fehlerkorrektur-Codierung ein De-Scrambling ausgeführt. Aufgrund der Fehlerkorrektur-Codierung der bestimmten Leseeinheiten umfasst eine Anzahl von Bytes, die bestimmt wurde, aus dem nicht-flüchtigen Speicher gelesen zu werden, sowohl die Nutzerdaten in den Leseeinheiten als auch die Fehlerkorrektur-Codierungs-Bytes in jeder der Leseeinheiten. In einigen Ausführungsformen variiert eine Anzahl der Fehlerkorrektur-Codierungs-Bytes in jeder der Leseeinheiten dynamisch, wie etwa unter einer Steuerung der Steuereinrichtung des Festkörper-Laufwerks aufgrund einer Abnutzung des nicht-flüchtigen Speichers. Im verschiedenen Ausführungsformen und/oder Nutzerszenarien überschreitet eine Gesamtzahl von Bytes der Nutzerdaten in den bestimmten Leseeinheiten die Länge in Bytes der gespeicherten Version der dem bestimmten Namen zugeordneten Daten, wie etwa wenn mindestens eine aus den bestimmten Leseeinheiten zumindest einen Teil der Daten, die einem anderen aus den Namen zugeordnet sind, enthält. In step 1322 the particular readers are read from the non-volatile memory. In some embodiments, error correction coding is performed on the readers to correct for any errors that occur during storage in and / or transfer to or from the nonvolatile memory. In further embodiments, subsequent to the error correction coding, de-scrambling is performed. Due to the error correction coding of the particular reading units, a number of bytes determined to be read from the non-volatile memory include both the user data in the reading units and the error correcting coding bytes in each of the reading units. In some embodiments, a number of the error correction coding bytes in each of the reading units dynamically varies, such as under control of the solid state drive controller due to wear of the nonvolatile memory. In various embodiments and / or user scenarios, a total number of bytes of user data in the particular readers exceeds the length in bytes of the stored version of data associated with the particular name, such as at least one of the particular readers at least a portion of the data are assigned from the names.

Im Schritt 1326 wird die gespeicherte Version der den bestimmten Namen zugeordneten Daten aus den bestimmten Leseeinheiten extrahiert. In einigen Ausführungsformen geschieht das Extrahieren gemäß einem mit dem Lese-Befehl bereitgestellten Bezeichner. Gemäß verschiedener Ausführungsformen ist der Bezeichner eine oder mehrere der folgenden: derselbe wie ein bestimmter Name der Daten; eine Funktion des bestimmten Namens der Daten; ein Bezeichner, der dem bestimmten Namen der Daten über eine Tabelle zugeordnet ist; ein eindeutiger Bezeichner unter allen in dem nicht-flüchtigen Speicher gespeicherten Daten; und irgendeine Kombination aus dem vorgenannten. In einem Beispiel umfassen die Leseeinheiten einen oder mehrere Nachrichtenköpfe, wie in 5 dargestellt, und der Bezeichner wird verwendet, um einen übereinstimmenden aus den Nachrichtenköpfen zu bestimmen, der dann verwendet wird, um die gespeicherte Version der dem bestimmten Namen zugeordneten Daten in den bestimmten Leseeinheiten zu speichern. In einem anderen Beispiel umfasst die Angabe des physikalischen Orts Imformation, die einen Ort der gespeicherten Version der dem bestimmten Namen zugeordneten Daten innerhalb der bestimmten Leseeinheiten spezifiziert. Gemäß verschiedener Ausführungsformen ist die gespeicherte Version der dem bestimmten Namen zugeordneten Daten von variabler Größe. Beispielsweise wurden die den bestimmten Namen zugeordneten Daten komprimiert, bevor sie gespeichert wurden, und/oder die den bestimmten Namen zugeordneten Daten waren selbst von variabler Größe.In step 1326 the stored version of the data associated with the particular name is extracted from the particular readers. In some embodiments, the extraction is done according to an identifier provided with the read command. According to various embodiments, the identifier is one or more of the following: the same as a particular name of the data; a function of the particular name of the data; an identifier associated with the particular name of the data about a table; a unique identifier among all data stored in the non-volatile memory; and any combination of the foregoing. In one example, the readers include one or more message headers, as in FIG 5 and the identifier is used to determine a matching one of the message headers which is then used to store the stored version of the data associated with the particular name in the particular readers. In another example, the physical location indication includes information specifying a location of the stored version of the data associated with the particular name within the particular readers. According to various embodiments, the stored version of the data associated with the particular name is of variable size. For example, the data associated with the particular name was compressed before it was stored, and / or the data associated with the particular name itself was of variable size.

Im Schritt 1330 wird die gespeicherte Version der den bestimmten Namen zugeordneten Daten optional und/oder selektiv entschlüsselt und/oder optional und/oder selektiv dekomprimiert, um die den bestimmten Namen zugeordneten Daten zu erzeugen.In step 1330 the stored version of the data associated with the particular name is optionally and / or selectively decrypted and / or optionally and / or selectively decompressed to generate the data associated with the particular name.

Im Schritt 1334 werden die den bestimmten Namen zugeordneten Daten in Antwort auf den Lese-Befehl zurückgegeben. In step 1334 the data associated with the particular name is returned in response to the read command.

Im Schritt 1338 wird eine Statistik gemäß dem Lese-Befehl gepflegt. In einem Beispiel greift der Lese-Befehl auf eine bestimmte Anzahl von nicht-flüchtigen Speicher-Blocken zu, um die bestimmten Leseeinheiten zurückzuerlangen, und die Statistik wird gepflegt, indem eine Anzahl der Vorkommnisse von Lesestörungen pro nicht-flüchtigem Speicher-Block gezählt werden. In einem anderen Beispiel greift der Lese-Befehl auf eine bestimmte Anzahl von nicht-flüchtigen Speicher-Blöcken zurück, um die bestimmten Leseeinheiten zurückzuerlangen, Fehlerkorrektur der bestimmten Leseeinheiten korrigierte eine bestimmte Anzahl von Fehlern in jeder bestimmten Leseeinheiten, und die Statistik wird mit einer maximalen Anzahl der korrigierten Fehler in jeder Leseeinheit in jedem der nicht-flüchtigen Speicher-Blöcke gepflegt. Der Prozess endet im Schritt 1390.In step 1338 a statistic is maintained according to the read command. In one example, the read command accesses a certain number of non-volatile memory blocks to retrieve the particular read units, and the statistics are maintained by counting a number of occurrences of read errors per non-volatile memory block. In another example, the read command accesses a certain number of non-volatile memory blocks to retrieve the particular readers, error correction of the particular readers corrects a certain number of errors in each particular reader, and the statistic is given a maximum Number of corrected errors in each Maintained read unit in each of the non-volatile memory blocks. The process ends in step 1390 ,

Typischerweise ist zum Lesen von Daten einer einzelnen Abbildungseinheit, die nicht mehrere nicht-flüchtige Speicher-Seitenrahmen umfasst, eine Anzahl der Leseeinheiten, auf die in einem nicht-flüchtigen Speicher-Seitenrahmen zuzugreifen ist, um die gespeicherte Version der Daten der Abbildungseinheit zu erlangen, geringer als alle der Leseeinheiten in dem nicht-flüchtigen Speicher-Seitenrahmen. Des Weiteren ist, weil die gespeicherte Version der Daten der Abbildungseinheit von variabler Größe ist, eine Anzahl der Leseeinheiten, auf die in dem nicht-flüchtigen Speicher-Seitenrahmen für einen ersten Lese-Befehl, der eine erste logische Blockadresse (oder Namen) referenziert, zuzugreifen ist, verschieden von einer Anzahl von Leseeinheiten, auf die in dem nicht-flüchtigen Speicher-Seitenrahmen für einen zweiten Lese-Befehl, der eine zweite logische Blockadresse (oder Namen) referenziert, zuzugreifen ist, wobei die zweite logische Blockadresse verschieden von der ersten logischen Blockadresse ist. In einigen Ausführungsformen wird nur die Anzahl der Leseeinheiten, auf die in dem nicht-flüchtigen Speicher-Seitenrahmen zuzugreifen ist, aus dem nicht-flüchtigen Speicher-Seitenrahmen gelesen. Das heißt, nur diejenigen aus den Leseeinheiten, die einen Teil der gespeicherten Version der Daten der Abbildungseinheit enthalten, werden aus dem nicht-flüchtigen Speicher gelesen, um auf die gespeicherte Version der Daten der Abbildungseinheit zuzugreifen und diese zurückzuerlangen. Typically, to read data from a single imaging unit that does not include multiple non-volatile memory page frames, a number of the read units that are to be accessed in a non-volatile memory page frame to obtain the stored version of the imaging unit data; less than all of the read units in the non-volatile memory page frame. Further, because the stored version of the imaging unit data is of variable size, a number of the read units referenced in the non-volatile memory page frame for a first read instruction that references a first logical block address (or name), is to be accessed, other than a number of read units to be accessed in the non-volatile memory page frame for a second read command that references a second logical block address (or name), the second logical block address being different from the first one logical block address is. In some embodiments, only the number of read units to be accessed in the nonvolatile memory page frame is read from the nonvolatile memory page frame. That is, only those read units that include a portion of the stored version of the imaging unit data are read from the non-volatile memory to access and retrieve the stored version of the imaging unit data.

Mit Verweis auf 14 wird ein Ablauf-Diagramm des Recyclens von Daten in einem nicht-flüchtigen Speicher gezeigt. Der Prozess beginnt im Schritt 1402, und im Schritt 1406 wird eine Bestimmung hinsichtlich eines zu recycelnden Bereichs des nicht-flüchtigen Speichers gemacht. Gemäß verschiedener Ausführungsformen und/oder Nutzerszenarien ist der Bereich einer oder mehrerer der folgenden: ein Redundanzblock; ein oder mehrere nicht-flüchtige Speicher-Blöcke; ein Teil des nicht-flüchtigen Speichers, für den Statistik hinsichtlich freien und/oder verwendeten Speicherplatzes gepflegt wird; ein Teil des nicht-flüchtigen Speichers, über den eine die Abnutzung nivellierende Statistik gepflegt wird; und irgendeine Kombination der vorgenannten. Gemäß verschiedener Ausführungsformen und/oder Nutzerszenarien wird Recycling auf einem oder mehreren der folgenden ausgeführt: Abfallsammlung (angesammelter freier Platz) in dem nicht-flüchtigen Speicher; Abnutzungs-Nivellierung des nicht-flüchtigen Speichers (um die Blöcke des nicht-flüchtigen Speichers relativ gleich zu halten hinsichtlich eines entsprechenden Programmierungslöschungszählers); und Prozessfehler und/oder Ausnahmen in Bezug auf den nicht-flüchtigen Speicher, wie etwa Programmfehler, übermäßige Lese-Störungen und/oder übermäßige Fehlerraten. In weiteren Ausführungsformen wird Recycling von einem Host global ausgeführt, wie etwa über einer Mehrzahl von Festkörper-Laufwerken.With reference to 14 A flowchart of recycling data in a non-volatile memory is shown. The process begins in step 1402 , and in the step 1406 a determination is made as to a region of the non-volatile memory to be recycled. According to various embodiments and / or user scenarios, the scope is one or more of the following: a redundancy block; one or more non-volatile memory blocks; a part of the non-volatile memory maintained for free and / or used memory statistics; a part of the non-volatile memory used to maintain wear-leveling statistics; and any combination of the foregoing. According to various embodiments and / or user scenarios, recycling is performed on one or more of the following: garbage collection (accumulated free space) in the non-volatile memory; Wear leveling of the non-volatile memory (to keep the blocks of the non-volatile memory relatively equal with respect to a corresponding programming erase counter); and process faults and / or exceptions related to the non-volatile memory, such as program errors, excessive read faults, and / or excessive error rates. In other embodiments, recycling from a host is performed globally, such as over a plurality of solid state drives.

Im Schritt 1410 werden ein oder mehrere nicht-flüchtige Speicher-Seitenrahmen aus dem Bereich des nicht-flüchtigen Speichers gelesen. In einigen Ausführungsformen werden die nicht-flüchtigen Speicher-Seitenrahmen in ihrer Gesamtheit fehlerkorrigiert. Alle der Leseeinheiten in dem nicht-flüchtigen Speicher-Seitenrahmen werden fehlerkorrigiert. Im anderen Ausführungsformen wird nur ein Teil der nicht-flüchtigen Speicher-Seitenrahmen, der als Nachrichtenköpfe enthaltend bestimmt wurde (wie etwa in 6 veranschaulicht) als erstes fehlerkorrigiert, und weitere Teile der nicht-flüchtigen Speicher-Seitenrahmen werden nach Bedarf fehlerkorrigiert, wenn bestimmt wird (z.B. Schritt 1426), das die nicht-flüchtigen Speicher-Seitenrahmen Daten enthalten, die recycelt werden müssen.In step 1410 One or more non-volatile memory page frames are read from the non-volatile memory area. In some embodiments, the nonvolatile memory page frames are error corrected in their entirety. All of the read units in the non-volatile memory page frame are error corrected. In other embodiments, only a portion of the non-volatile memory page frames determined to contain message headers (such as in FIG 6 illustrated) first error-corrected, and other parts of the non-volatile memory page frames are error-corrected as needed when it is determined (eg, step 1426 ) The non-volatile memory page frames contain data that needs to be recycled.

Im Schritt 1414 werden Nachrichtenköpfe aus dem nicht-flüchtigen Speicher-Seitenrahmen extrahiert. In einem Beispiel und in einer Ausführungsform, so wie sie in 5 dargestellt ist, werden Nachrichtenköpfe aus jeder Leseeinheit in jedem der nicht-flüchtigen Speicher-Seitenrahmen extrahiert. In einem anderen Beispiel und in einer Ausführungsform, so wie sie in 6 dargestellt ist, werden Nachrichtenköpfe aus einem Teil von jedem der nicht-flüchtigen Speicher-Seitenrahmen, wie etwa einer ersten oder mehreren Leseeinheiten in jedem der nicht-flüchtigen Speicher-Seitenrahmen extrahiert.In step 1414 Message headers are extracted from the non-volatile memory page frame. In an example and in an embodiment as they are in 5 is shown, message headers are extracted from each reading unit in each of the non-volatile memory page frames. In another example and in one embodiment, as in 6 1, message headers are extracted from a part of each of the non-volatile memory page frames, such as a first or more read units in each of the non-volatile memory page frames.

Im Schritt 1418 werden die aus den nicht-flüchtigen Speicher-Seitenrahmen extrahierten Nachrichtenköpfe analysiert (geparst), um die Bezeichner von zugeordneten Daten in dem nicht-flüchtigen Speicher-Seitenrahmen (z.B. darin beginnende) zu bestimmen.In step 1418 For example, the message headers extracted from the non-volatile memory page frames are parsed (parsed) to determine the identifiers of associated data in the non-volatile memory page frame (eg, beginning therein).

Im Schritt 1422 werden die Bezeichner in einer Abbildung nachgeschlagen, um die entsprechenden Angaben der physikalischen Orte in dem nicht-flüchtigen Speicher der den Bezeichnern zugeordneten Daten zu bestimmen. In einigen Ausführungsformen sind die Bezeichner entsprechende Namen von Daten, die verwendet wurden, wenn der nicht-flüchtige Speicher beschrieben wurde. Im anderen Ausführungsformen werden die Bezeichner mit anderer Imformation, wie etwa einem Bezeichner eines Festkörper-Laufwerks, kombiniert, um Namen auszubilden, die in der Abbildung nachgeschlagen werden. Im noch anderen Ausführungsformen wird eine Abbildung gepflegt, die die Bezeichner den Namen zuordnet und/oder den Bezeichnern die Angaben des physikalischen Ortes in dem nicht-flüchtigen Speicher der dem Bezeichner zugeordneten Daten zuordnet. In step 1422 the identifiers are looked up in an image to determine the corresponding indications of the physical locations in the non-volatile memory of the data associated with the identifiers. In some embodiments, the identifiers are corresponding names of data that was used when the nonvolatile memory was written. In other embodiments, the identifiers are combined with other information, such as an identifier of a solid state drive, to form names that are looked up in the figure. In still other embodiments, an image is maintained that associates the identifiers with the name and / or associates the identities of the physical location in the nonvolatile memory with the identifiers associated with the identifiers.

Im Schritt 1426 werden jegliche Daten, die den Bezeichnern zugeordnet sind und die immer noch aktuell sind (in den nicht-flüchtigen Speicher-Seitenrahmen, die recycelt werden) an einen neuen physikalischen Ort in dem nicht-flüchtigen Speicher geschrieben. Beispielsweise werden die entsprechenden Angaben der physikalischen Orte in dem nicht-flüchtigen Speicher der den Bezeichner zugeordneten Daten umgewandelt in entsprechende Adressen von Leseeinheiten, und wenn die entsprechenden Adressen der Leseeinheiten in dem nicht-flüchtigen Speicher-Seitenrahmen sind, die recycelt werden, dann enthalten die nicht-flüchtigen Speicher-Seitenrahmen, die recycelt werden, die jüngste Version der den Bezeichnern zugeordneten Daten. Im verschiedenen Ausführungsformen wird das Schreiben der immer noch aktuellen Daten, die dem Bezeichner zugeordnet sind, an einen neuen physikalischen Ort in dem nicht-flüchtigen Speicher gleichzeitig mit den Schritten 1218 bis 1230 des Prozesses 1200 ausgeführt. Im verschiedenen Ausführungsformen werden, wenn die immer noch aktuellen Daten komprimiert und/oder verschlüsselt sind, die immer noch aktuellen Daten erneut „so wie sie sind“ in der komprimierten und/oder verschlüsselten Form geschrieben. In einigen Ausführungsformen werden die immer noch aktuellen Daten von dem nicht-flüchtigen Speicher-Seitenrahmen, der recycelt wird, in einen neuen nicht-flüchtigen Speicher-Seitenrahmen innerhalb der Steuereinrichtung des Festkörper-Laufwerks verschoben (und die immer noch aktuellen Daten werden nicht zu einem Host geschickt, um die immer noch aktuellen Daten zu recyceln). Im anderen Ausführungsformen umfasst das Recyceln das Senden der immer noch aktuellen Daten an den Host und das erneute Schreiben derselben ähnlich wie in dem Prozess 1200. In weiteren Ausführungsformen wird das Recycling global über eine Mehrzahl von Festkörper-Laufwerken ausgeführt, und immer noch aktuelle Daten, die vorher auf einem der Festkörper-Laufwerke gespeichert wurden, werden zum Zweck des Recycelns erneut in ein anderes der Festkörper-Laufwerke erneut geschrieben. In step 1426 For example, any data associated with the identifiers that are still current (in the non-volatile memory page frames that are being recycled) is written to a new physical location in the nonvolatile memory. For example, the corresponding indications of the physical locations in the non-volatile memory of the data associated with the identifier are converted to corresponding addresses of reading units, and if the corresponding addresses of the reading units are in the non-volatile memory page frame being recycled, then non-volatile memory page frames that are recycled, the most recent version of the data associated with the identifiers. In various embodiments, writing the still-current data associated with the identifier to a new physical location in the non-volatile memory concurrently with the steps 1218 to 1230 of the process 1200 executed. In various embodiments, when the still-current data is compressed and / or encrypted, the still-current data is re-written "as-is" in the compressed and / or encrypted form. In some embodiments, the still-up-to-date data from the non-volatile memory page frame being recycled is moved to a new non-volatile memory page frame within the solid-state drive controller (and the still-current data does not become one Host to recycle the still current data). In other embodiments, recycling includes sending the still-current data to the host and rewriting them similarly as in the process 1200 , In further embodiments, recycling is performed globally across a plurality of solid state drives, and still up-to-date data previously stored on one of the solid state drives is rewritten to another of the solid state drives for recycling.

Im Schritt 1430 wird die Abbildung aktualisiert, um die Angabe des neuen physikalischen Ortes von jeglichen Daten, die recycelt worden sind, widerzuspiegeln. In step 1430 the map is updated to reflect the indication of the new physical location of any data that has been recycled.

Im Schritt 1434 wird eine Bestimmung ausgeführt, ob in dem Bereich noch weitere nicht-flüchtige Speicher-Seitenrahmen zu verarbeiten sind. Wenn dem so ist, geht der Prozess zum Schritt 1410, um das Recyceln von weiteren nicht-flüchtigen Speicher-Seitenrahmen fortzusetzen.In step 1434 a determination is made as to whether additional nonvolatile memory page frames are to be processed in the area. If so, the process goes to the step 1410 to continue recycling of other non-volatile memory page frames.

Im Schritt 1438 wird eine Statistik gemäß dem Lesen und Schreiben des nicht-flüchtigen Speichers während des Recycling-Prozesses gepflegt. In einem Beispiel greift ein Lesen des nicht-flüchtigen Speichers auf eine bestimmte Anzahl von nicht-flüchtigen Speicher-Blöcken zu, um die nicht-flüchtigen Speicher-Seitenrahmen zurückerlangen, und die Statistik wird gepflegt, indem eine Anzahl der Lese-Störungs-Vorkommnisse pro nicht-flüchtigem Speicher-Block gezählt wird. In einem anderen Beispiel greift das Lesen des nicht-flüchtigen Speichers auf eine bestimmte Anzahl von nicht-flüchtigen Speicher-Blöcken zu, um die nicht-flüchtigen Speicher-Seitenrahmen zurückzuerlangen, eine Fehlerkorrektur der nicht-flüchtigen Speicher-Seitenrahmen korrigiert eine entsprechende Anzahl von Fehlern in jeder der Leseeinheiten der nicht-flüchtigen Speicher-Seitenrahmen, die durch Fehlerkorrektur dekodiert worden sind, und die Statistik wird hinsichtlich einer maximalen Anzahl der Fehler, die in jeder Leseeinheit in jedem der nicht-flüchtigen Speicher-Blöcke korrigiert wurden, gepflegt. Im noch einem anderen Beispiel verwendet das Recyceln der Daten durch Schreiben von nicht-flüchtigem Speicher eine bestimmte Menge von Platz in einem Redundanzblock, wo die recycelten Daten geschrieben wurden, und gibt optional und/oder selektiv eine bestimmte Menge von Platz in dem Redundanzblock, der recycelt wird, frei. Die Statistik verfolgt eine Menge des benutzten Platzes (oder äquivalent in einigen Ausführungsformen eine Größe bzw. Menge des freien Platzes) in jedem Redundanzblock nach. In einigen Ausführungsformen werden, wenn die Menge des verwendeten Platzes in dem Bereich, der recycelt wird, gegen null geht, keine weiteren, immer noch aktuellen (nicht bereits überschriebenen) Daten in dem Bereich recycelt und der Prozess 1400 ist in der Lage, sich zu vervollständigen, bevor alle der nicht-flüchtigen Speicher-Seitenrahmen in dem Bereich, der recycelt wird, gelesen wird. Der Prozess endet im Schritt 1490. In step 1438 a statistic is maintained according to the reading and writing of the non-volatile memory during the recycling process. In one example, reading the non-volatile memory accesses a certain number of non-volatile memory blocks to retrieve the non-volatile memory page frames, and maintaining the statistics by evaluating a number of the read-miss events per non-volatile memory block is counted. In another example, reading the non-volatile memory accesses a certain number of non-volatile memory blocks to recover the non-volatile memory page frames, and error correction of the non-volatile memory page frames corrects a corresponding number of errors in each of the read units of the non-volatile memory page frames which have been decoded by error correction, and the statistics are maintained for a maximum number of errors corrected in each reading unit in each of the non-volatile memory blocks. In yet another example, recycling the data by writing non-volatile memory uses a certain amount of space in a redundancy block where the recycled data has been written, and optionally and / or selectively gives a certain amount of space in the redundancy block recycled, free. The statistic tracks an amount of used space (or, equivalently, an amount of free space in some embodiments) in each redundancy block. In some embodiments, as the amount of space used in the area being recycled approaches zero, no further, still current (not already overwritten) data is recycled in the area and the process 1400 is able to complete itself before reading all of the non-volatile memory page frames in the area being recycled. The process ends in step 1490 ,

In einigen Ausführungsformen werden Sperren (wie etwa Semaphore) verwendet, um einen Zugriff auf mindestens einen Teil der Abbildung während zumindest eines Teils des Prozesses 1400 zu verhindern. In einigen Ausführungsformen wird z.B. ein Eintrag der Abbildung, der einem der Bezeichner mit aktuellen Daten zugeordnet ist, von den Schritten 1422 bis 1430 gesperrt, um einen anderen Zugriff auf den Eintrag zu verhindern, während er aktualisiert wird.In some embodiments, locks (such as semaphores) are used to access at least a portion of the map during at least part of the process 1400 to prevent. For example, in some embodiments, an entry of the map associated with one of the current data identifiers will be from the steps 1422 to 1430 locked to prevent another access to the entry while it is being updated.

Gemäß verschiedener Ausführungsformen wählt der Host Bereiche des nicht-flüchtigen Speichers, die zu recyceln sind; die Steuereinrichtung des Festkörper-Laufwerks wählt Bereiche des nicht-flüchtigen Speichers, die zu recyceln sind; der Host wählt Bereiche des nicht-flüchtigen Speichers, die aus einem ersten Grund zu recyceln sind, und die Steuereinrichtung des Festkörper-Laufwerks wählt Bereiche des nicht-flüchtigen Speichers, die für einen zweiten, verschiedenen Grund zu recyceln sind; und irgendeine Kombination der vorgenannten. In einem Beispiel werden alle Selektionen von Bereichen des nicht-flüchtigen Speichers, die zu recyceln sind, in dem Host ausgeführt. In einem anderen Beispiel wählt der Host Bereiche des nicht-flüchtigen Speichers, die zur Abfallsammlung zu recyceln sind, und die Steuereinrichtung des Festkörper-Laufwerks wählt Bereiche des nicht-flüchtigen Speichers, die zur Abnutzungs-Nivellierung zu recyceln sind. Im noch einem anderen Beispiel wählt der Host Bereiche des nicht-flüchtigen Speichers die zur Abfallsammlung und zur Abnutzungs-Nivellierung zu recyceln sind, und die Steuereinrichtung des Festkörper-Laufwerks wählt Bereiche des nicht-flüchtigen Speichers, die wegen außergewöhnlicher Bedingungen und/oder Fehlern, wie etwa Programm-Fehlern, übermäßiger Fehlerkorrektur-Codierungs-Fehlern oder Lese-Störungs-Vorkommnissen, zu recyceln sind. In weiteren Ausführungsformen ist die Steuereinrichtung des Festkörper-Laufwerks dazu ausgelegt, eine oder mehrere Statistiken des nicht-flüchtigen Speichers, wie etwa Programmierungslöschungszähler und/oder verwendeten Platz, an den Host zu kommunizieren. Beispielsweise werden die Statistiken als Logs, wie etwa SMART-Logs, durch einen reservierten Bereich eines logischen Blockadressraums der Steuereinrichtung des Festkörper-Laufwerks, oder durch besondere Befehle zum Lesen und/oder Schreiben der Statistik kommuniziert. In einigen Ausführungsformen und/oder Nutzerszenarien ermöglicht es das Kommunizieren der Statistiken an den Host, dass der Host Bereiche des nicht-flüchtigen Speichers, die zu recyceln sind, auswählt, während es der Steuereinrichtung des Festkörper-Laufwerks ermöglicht wird, das Pflegen der Statistik von dem Host abzustoßen. According to various embodiments, the host selects areas of the non-volatile memory to be recycled; the controller of the solid-state drive selects areas of the non-volatile memory to be recycled; the host selects areas of the non-volatile memory to be recycled for a first reason, and the solid-state drive controller selects areas of the non-volatile memory to be recycled for a second, different reason; and any combination of the foregoing. In an example, all selections of areas of the non- volatile memory to be recycled running in the host. In another example, the host selects non-volatile memory areas to recycle for waste collection, and the solid-state drive controller selects non-volatile memory areas to recycle for wear-leveling. In yet another example, the host selects non-volatile memory areas to recycle for waste collection and for wear leveling, and the solid-state drive controller selects non-volatile memory areas that are unusable due to exceptional conditions and / or errors, such as program errors, excessive error correction coding errors, or read disturb incidents. In other embodiments, the solid state drive controller is configured to communicate one or more statistics of the non-volatile memory, such as program deleting counters and / or used space, to the host. For example, the statistics are communicated as logs, such as SMART logs, through a reserved area of a logical block address space of the controller of the solid state drive, or through special instructions for reading and / or writing statistics. In some embodiments and / or user scenarios, communicating the statistics to the host allows the host to select portions of the non-volatile memory to be recycled while allowing the solid-state drive controller to maintain the statistics of to repel the host.

In einigen Ausführungsformen ist die Steuereinrichtung des Festkörper-Laufwerks dazu ausgelegt, zumindest einen Bereich des nicht-flüchtigen Speichers unabhängig von dem Host zu recyceln, und aktualisierte physikalische Orte an den Host zu kommunizieren. Beispielsweise bestimmt die Steuereinrichtung des Festkörper-Laufwerks einen Bereich des nicht-flüchtigen Speichers, der recycelt werden muss, in Antwort auf außergewöhnliche Bedingungen und/oder Fehler, wie etwa Programm-Fehler, übermäßige Fehlerkorrektur-Codierungs-Fehler oder Lese-Störungs-Vorkommnisse. Die Steuereinrichtung des Festkörper-Laufwerks liest Nachrichtenköpfe in dem Bereich des nicht-flüchtigen Speichers und lagert jegliche immer noch aktuelle Daten in dem Bereich des nicht-flüchtigen Speichers in entsprechende neue physikalische Orte in einem anderen Bereich des nicht-flüchtigen Speichers um. Gemäß verschiedener Ausführungsformen und in einer oder mehreren Implementierungen gilt: das Festkörper-Laufwerk pflegt die Abbildung und ist in der Lage, die Abbildung zu aktualisieren, um die entsprechenden, neuen physikalischen Orte der immer noch aktuellen Daten widerzuspiegeln; die Steuereinrichtung des Festkörper-Laufwerks pflegt eine gesonderte partielle Abbildung von Daten, die von der Steuereinrichtung des Festkörper-Laufwerks umgelagert wurden, wobei die gesonderte partielle Abbildung Angaben der physikalischen Orte der immer noch aktuellen Daten in dem Bereich des nicht-flüchtigen Speichers den entsprechenden neuen physikalischen Orten zuordnet; die Steuereinrichtung des Festkörper-Laufwerks kommuniziert die entsprechenden neuen physikalischen Orte zusammen mit Information aus den Nachrichtenköpfen, wie etwa entsprechende Bezeichner der immer noch aktuellen Daten, an den Host und der Host aktualisiert die Abbildung; und irgendeine Kombination der vorgehenden. In vorteilhafter Weise kann auf die immer noch aktuellen Daten sowohl in dem Bereich des nicht-flüchtigen Speichers als auch in den entsprechenden neuen physikalischen Orten zugegriffen werden, bis der Bereich des nicht-flüchtigen Speichers gelöscht wird. In weiteren Ausführungsformen wird der Bereich des nicht-flüchtigen Speichers nicht gelöscht, bevor die Abbildung mit den entsprechenden neuen physikalischen Orten aktualisiert ist. Beispielsweise wird die Steuereinrichtung des Festkörper-Laufwerks von dem Host informiert, dass die Abbildung aktualisiert worden ist, und nur dann ist es der Steuereinrichtung des Festkörper-Laufwerks möglich, den Bereich des nicht-flüchtigen Speichers zu löschen.In some embodiments, the solid state drive controller is configured to recycle at least a portion of the nonvolatile memory independently of the host and to communicate updated physical locations to the host. For example, the controller of the solid state drive determines a portion of the nonvolatile memory that needs to be recycled in response to exceptional conditions and / or errors, such as program errors, excessive error correction coding errors, or read interference events. The solid state drive controller reads message headers in the nonvolatile memory area and relocates any still current data in the nonvolatile memory area to corresponding new physical locations in another nonvolatile memory area. According to various embodiments and in one or more implementations, the solid state drive maintains the map and is capable of updating the map to reflect the corresponding new physical locations of the still-up-to-date data; the solid-state drive controller maintains a separate partial map of data migrated by the solid-state drive controller, the separate partial map representing the physical locations of the still-current data in the non-volatile memory area assigns to physical places; the solid-state drive controller communicates the corresponding new physical locations along with information from the message headers, such as corresponding identifiers of the still-current data, to the host and the host updates the map; and any combination of the preceding ones. Advantageously, the still-current data in both the non-volatile memory area and the corresponding new physical locations may be accessed until the non-volatile memory area is erased. In further embodiments, the area of the nonvolatile memory is not cleared before the map is updated with the corresponding new physical locations. For example, the controller of the solid state drive is informed by the host that the map has been updated, and only then is it possible for the controller of the solid state drive to erase the nonvolatile memory area.

Im verschiedenen Ausführungsformen steuert der Host das Lesen der nicht-flüchtigen Speicher-Seitenrahmen aus dem nicht-flüchtigen Speicher zum Recyceln (Schritt 1410), wie etwa durch Anfordern einer Anzahl der zu lesenden nicht-flüchtigen Speicher-Seitenrahmen oder eine Anzahl der an den Host zu sendenden, extrahierten Nachrichtenköpfen. Gemäß verschiedener Ausführungsformen führt der Host zumindest einen Teil der Nachrichtenkopf-Analyse (Schritt 1418) durch und/oder die Steuereinrichtung des Festkörper-Laufwerks führt zumindest einen Teil der Nachrichtenkopf-Analyse durch, wie etwa durch eine Vorverarbeitung und/oder erneutes Formatieren und/oder ein Filtern der extrahierten Nachrichtenköpfe. In weiteren Ausführungsformen führt der Host das Nachschlagen der Abbildung (Schritt 1422) durch und bestimmt, ob irgendwelche der Daten neu geschrieben werden müssen. Das Neuschreiben (Schritt 1426) wird von der Steuereinrichtung des Festkörper-Laufwerks unter der Steuerung des Hosts durchgeführt, wie etwa dadurch, dass der Host einen „Neuschreib“-Befehl für jegliche immer noch aktuelle Daten schickt. Der Neuschreib-Befehl ist ähnlich einem Schreib-Befehl, jedoch anstatt dass er Schreib-Daten aufweist, umfasst der Neuschreib-Befehl eine Angabe eines physikalischen Ortes in dem nicht-flüchtigen Speicher (der Ort, von dem die Daten recycelt werden), so wie das ein Lese-Befehl tun würde. Ähnlich wie ein Schreib-Befehl gibt der Neuschreib-Befehl eine Angabe des neuen physikalischen Orts der neu geschriebenen Daten zurück, und der Host führt den Schritt 1430 aus, um die Abbildung zu aktualisieren. Im damit zusammenhängenden Ausführungsformen, in denen der Host einen größeren Teil des Prozess 1400 ausführt, umfasst der Neuschreib-Befehl einen Pufferort in der Steuereinrichtung des Festkörper-Laufwerks von immer noch aktuellen Daten.In various embodiments, the host controls the reading of the non-volatile memory page frames from the non-volatile memory for recycling (step 1410 ), such as by requesting a number of nonvolatile memory page frames to be read or a number of the extracted headers to be sent to the host. According to various embodiments, the host performs at least part of the message header analysis (step 1418 ) and / or the controller of the solid state drive performs at least a portion of the header analysis, such as by preprocessing and / or reformatting and / or filtering the extracted headers. In other embodiments, the host performs the image lookup (step 1422 ) and determines if any of the data needs to be rewritten. The rewriting (step 1426 ) is performed by the controller of the solid state drive under the control of the host, such as by the host sending a "rewrite" command for any still current data. The rewrite command is similar to a write command, but instead of having write data, the rewrite command includes an indication of a physical location in the non-volatile memory (the location from which the data is recycled), as well as that would do a read command. Similar to a write command, the rewrite command returns an indication of the new physical location of the rewritten data, and the host performs the step 1430 to refresh the picture. Im with it related embodiments in which the host is a larger part of the process 1400 executes, the rewrite command includes a buffer location in the controller of the solid state drive of still current data.

In einigen Ausführungsformen werden nicht-standardisierte und/oder Händler-spezifische Befehle als Teil eines Kommunikations-Protokolls zwischen dem Host und der Steuereinrichtung des Festkörper-Laufwerks verwendet. Gemäß verschiedener Ausführungsformen ist das Kommunikations-Protokoll eines oder mehrerer der folgenden: SATA, Schnittstelle für kleine Computer-Systeme (z.B SCSI, small computer system interface), SAS, Schnellverbindung für periphere Komponenten (z.B. PCIe, peripheral component interconnect express), NVM Express (nicht-flüchtiger Speicher), SCSI über PCIe (z.B. SOP, SCSI Over PCIe), mobile Express, USB, UFS, eingebettete Multimedia-Karten (z.B. eMMC, embedded multimedia card), Ethernet, Fibre Channel oder irgendein anderes Protokoll, das zur Kommunikation zwischen zwei elektronischen Geräten geeignet ist. In einem Beispiel verwendet eine Kommunikation eine Angabe eines physikalischen Orts zwischen dem Host und der Steuereinrichtung des Festkörper-Laufwerks Händler-spezifische Befehle, wie etwa Händler-spezifische Versionen von standardisierten Lese- und Schreib-Befehlen. Im anderen Beispielen werden extrahierte Nachrichtenköpfe zum Recycling von der Steuereinrichtung des Festkörper-Laufwerks an den Host in Log-Seitenrahmen (wie etwa SMART-Log-Seitenrahmen) kommuniziert. Im noch einem anderen Beispiel werden extrahierte Nachrichtenköpfe ähnlich behandelt wie die Lese-Daten, werden jedoch mit einem Händler-spezifischen „Lese-extrahierte-Nachrichtenköpfe“-Befehl („read extracted headers“-Befehl) gelesen.In some embodiments, non-standardized and / or dealer specific commands are used as part of a communication protocol between the host and the solid state drive controller. According to various embodiments, the communication protocol is one or more of the following: SATA, small computer system interface (SAS), SAS, peripheral component interconnect (PCIe) peripheral connection, NVM Express (non-volatile memory), SCSI via PCIe (eg SOP, SCSI Over PCIe), mobile express, USB, UFS, embedded multimedia cards (eg eMMC, embedded multimedia card), Ethernet, Fiber Channel or any other protocol used to Communication between two electronic devices is suitable. In one example, communication indicates an indication of a physical location between the host and the controller of the solid-state drive for vendor-specific instructions, such as vendor-specific versions of standardized read and write instructions. In the other example, extracted headers are communicated from the solid state drive controller to the host in log page frames (such as SMART log page frames) for recycle. In yet another example, extracted headers are treated similarly to the read data, but are read with a trader-specific "read extracted headers" command.

Gemäß verschiedener Ausführungsformen wird irgendeiner der Schritte des Prozesses 1200 und/oder des Prozesses 1300 und/oder des Prozesses 1400 durch einen oder mehrere der folgenden ausgeführt: einen Host, der mit einer Steuereinrichtung eines Festkörper-Laufwerks gekoppelt ist; eine Steuereinrichtung eines Festkörper-Laufwerks, das mit einem Host gekoppelt ist; und mit einer Kombination der vorgenannten. In einem Beispiel wird das Nachschlagen der Abbildung und das Pflegen der Abbildung in dem Host ausgeführt. In einem anderen Beispiel wird das Bestimmen einer Anzahl von Leseeinheiten entweder von dem Host oder von der Steuereinrichtung des Festkörper-Laufwerks oder auf beiden ausgeführt. Im noch einem anderen Beispiel wird das sich anschließende, dichtpackende Schreiben (tiling) von Schreib-Daten in nicht-flüchtigen Speicher-Seitenrahmen (z.B. Schritt 1222) in der Steuereinrichtung des Festkörper-Laufwerks ausgeführt. In einem Beispiel werden Schreib-Daten dicht aneinander anschließend (tiled) in die Abbildungn von nicht-volatilen Speicher-Seitenrahmen in einem Puffer in der Steuereinrichtung des Festkörper-Laufwerks und der Steuerung des Hosts eingeschrieben. In einem anderen Beispiel wird das Extrahieren von Daten aus den Leseeinheiten (z.B. Schritt 1326) in der Steuereinrichtung des Festkörper-Laufwerks ausgeführt. Im noch einem anderen Beispiel wird das Komprimieren (z.B. Schritt 1214) und das Dekomprimieren (z.B. Schritt 1330) in der Steuereinrichtung des Festkörper-Laufwerks ausgeführt. In einem Beispiel wird die Statistik (z.B. Schritt 1238 oder Schritt 1338) in der Steuereinrichtung des Festkörper-Laufwerks gepflegt. In einem anderen Beispiel wird das Bestimmen der Bereiche des nicht-flüchtigen Speichers, die zu recyceln sind (z.B. Schritt 1406), in dem Host ausgeführt. Im noch einem anderen Beispiel wird das Verschieben von zu recycelten, immer noch aktuellen Daten von einem alten Platz an einen neuen Platz (z.B. Schritt 1426) in der Steuereinrichtung des Festkörper-Laufwerks ausgeführt.According to various embodiments, any of the steps of the process 1200 and / or the process 1300 and / or the process 1400 by one or more of the following: a host coupled to a controller of a solid state drive; a controller of a solid state drive coupled to a host; and with a combination of the aforementioned. In one example, the lookup of the map and the maintenance of the map are performed on the host. In another example, determining a number of read units is performed either by the host or by the controller of the solid state drive or both. In yet another example, the subsequent, dense-writing (tiling) of write data into non-volatile memory page frames (eg, step 1222 ) in the controller of the solid-state drive. In one example, write data is written tiled into the map of nonvolatile memory page frames in a buffer in the controller of the solid state drive and the controller of the host. In another example, extracting data from the readers (eg, step 1326 ) in the controller of the solid-state drive. In yet another example, compression (eg, step 1214 ) and decompressing (eg step 1330 ) in the controller of the solid-state drive. In one example, the statistics (eg, step 1238 or step 1338 ) maintained in the controller of the solid-state drive. In another example, determining the areas of the non-volatile memory to be recycled (eg, step 1406 ) in which host is running. In yet another example, moving from recycled to still-current data from an old place to a new place (eg 1426 ) in the controller of the solid-state drive.

In einigen Ausführungsformen pflegen der Host und/oder die Steuereinrichtung des Festkörper-Laufwerks eine Tabelle, die jeden auf einer Mehrzahl von Bereichen des nicht-flüchtigen Speichers bestimmte Eigenschaften und/oder Merkmale zuordnet. In einem Beispiel ordnet die Tabelle jedem der Bereiche des nicht-flüchtigen Speichers einen bestimmten aus einer Mehrzahl von Codierungs-Raten (Fehlerkorrektur-Code-Stärken), was ermöglicht, dass eine Menge von Daten, die in jeder der Bereiche gespeichert sind, gemäß einer „Gesundheit“ („health“) von jedem der Bereiche variiert. Gesündere Bereiche verwenden eine höhere (schwächere) Code-Rate und sind in der Lage, mehr Nutzerdaten zu speichern, und schwächere Gebiete verwenden eine niedrigere (stärkere) Code-Rate und sind in der Lage, weniger Nutzerdaten zu speichern (sind jedoch in der Lage, mehr Fehler zu korrigieren). In einem anderen Beispiel zeigt die Tabelle solche der Bereiche, die defekt sind oder die ausgefallen sind und nicht verwendet werden sollten. Beispielsweise mit einem NAND-Flash sind einige aus einer Mehrzahl von Blöcken des NAND-Flashs defekt, selbst wenn der NAND-Flash neu ist und andere der Blöcke möglicherweise während einer Lebensdauer des NAND-Flashs ausfallen. Die Tabelle zeigt Blöcke an, die überspringen werden müssen, wenn Daten über eine Mehrzahl von NAND-Flash-Geräten sequentiell geschrieben (z.B. striping) werden. In some embodiments, the host and / or controller of the solid state drive maintain a table that associates each one of a plurality of nonvolatile memory areas with certain characteristics and / or characteristics. In one example, the table assigns each of the non-volatile memory areas a particular one of a plurality of coding rates (error correction code strengths), allowing a set of data stored in each of the areas to be stored in accordance with a "Health" varies from each of the areas. Healthier domains use a higher (weaker) code rate and are able to store more user data, and weaker domains use a lower (stronger) code rate and are able to store less user data (but are able to to correct more mistakes). In another example, the table shows those of the areas that are defective or that have failed and should not be used. For example, with a NAND flash, some of a plurality of blocks of the NAND flash are defective, even if the NAND flash is new and other of the blocks may fail during a lifetime of the NAND flash. The table indicates blocks that must be skipped over when data is sequentially written (e.g., striping) through a plurality of NAND flash devices.

In einigen Ausführungsformen wird ein Teil der Abbildung von höherem Niveau (higher level) in dem Host gepflegt, und ein Teil der Abbildung mit niedrigerem Niveau (lower level) wird in der Steuereinrichtung des Festkörper-Laufwerks gepflegt. Der Teil der Abbildung mit höherem Niveau ordnet Namen (oder logischen Blockadressen) entsprechende Angaben der physikalischen Orte in dem nicht-flüchtigen Speicher zu. Die Angaben der physikalischen Orte in dem nicht-flüchtigen Speicher werden dann von der Steuereinrichtung des Festkörper-Laufwerks unter Verwendung des Teils der Abbildung mit niedrigerem Niveau weiter übersetzt, um die physikalischen Orte des nicht-flüchtigen Speichers, die zu lesen und/oder zu beschreiben sind, zu bestimmen. Aus einer Sicht des Host verhalten sich die Angaben der physikalischen Orte wie undurchsichtige Handles, dadurch, dass die Steuereinrichtung des Festkörper-Laufwerks eine der Angaben der physikalischen Orte einem bestimmten Datenobjekt beim Schreiben zuordnet und die Steuereinrichtung des Festkörper-Laufwerks in der Lage ist, das bestimmte Datenobjekt zurückzugeben, wenn die entsprechende Angabe des physikalischen Orts zurückgegeben werden. In einer anderen Weise ausgedrückt wird Kenntnis von Einzelheiten der Organisation von Nutzerdaten innerhalb des nicht-flüchtigen Speichers vor dem Host versteckt. Im vorteilhafter Weise ist die Steuereinrichtung des Festkörper-Laufwerks in der Lage, zumindest einen Teil des Managements des nicht-flüchtigen Speichers auszuführen, wie etwa das Auswählen von Code-Raten oder das Bestimmen von schlechten Blöcken (bad blocks) oder anderen Bereichen des nicht-flüchtigen Speichers, die von dem Host nicht verwendet werden.In some embodiments, a portion of the higher level map is maintained in the host, and a portion of the lower level map is maintained in the controller of the solid state drive. The part of the higher-level map associates names (or logical block addresses) with corresponding physical specifications Places in the non-volatile memory too. The indications of the physical locations in the nonvolatile memory are then further translated by the controller of the solid state drive using the portion of the lower level map to read and / or describe the physical locations of the nonvolatile memory are to be determined. From a host point of view, physical location information behaves as opaque handles, in that the solid state drive controller assigns one of the physical location indications to a particular data object in writing and the solid state drive controller is capable of performing the return specific data object if the corresponding physical location information is returned. In other words, knowledge of details of the organization of user data within the non-volatile memory is hidden from the host. Advantageously, the solid state drive controller is capable of performing at least some of the non-volatile memory management, such as selecting code rates or determining bad blocks or other areas of the non-volatile memory. volatile memory that is not used by the host.

In einem Beispiel unterteilt die Steuereinrichtung des Festkörper-Laufwerks, wenn ein bestimmter aus einer Vielzahl von Blöcken des nicht-flüchtigen Speichers zuerst verwendet wird, jeden aus einer Mehrzahl von Seitenrahmen in dem bestimmten Block in mehrere (z.B. acht) entsprechende Leseeinheiten und verwendet eine bestimmte aus einer Mehrzahl von Code-Raten zur Fehlerkorrektur des bestimmten Blocks. Später, wenn der bestimmte Block neu verwendet wird, nachdem er stärker abgenutzt ist, unterteilt die Steuereinrichtung des Festkörper-Laufwerks jeden aus der Mehrzahl der Seitenrahmen des bestimmten Blocks in mehrere (z.B. sieben) entsprechende Leseeinheiten und verwendet einen stärkeren der Code-Raten zur Fehlerkorrektur für diesen bestimmten Block. Im beiden Fällen ist, wenn der Host Daten schreibt, die in dem bestimmten Block gespeichert werden, wird eine Angabe eines physikalischen Orts in dem bestimmten Block unabhängig von einer Anzahl der Leseeinheiten in die die Seitenrahmen des bestimmten Blocks unterteilt sind.In one example, when one particular one of a plurality of blocks of non-volatile memory is used first, the solid-state drive controller divides each of a plurality of page frames in the particular block into a plurality (eg, eight) corresponding read units and uses a particular one of a plurality of code rates for error correction of the particular block. Later, when the particular block is reused after being more worn, the solid-state drive controller divides each of the plurality of page frames of the particular block into multiple (eg, seven) corresponding readers and uses a stronger one of the code rates for error correction for that particular block. In both cases, when the host writes data stored in the particular block, an indication of a physical location in the particular block is independent of a number of the reading units into which the page frames of the particular block are divided.

In einem anderen Beispiel, wenn Daten mit variabler Größe mehrere aus einer Vielzahl von Blöcken des nicht-flüchtigen Speichers umspannen, sind Angaben der von dem Host verwendeten physikalischen Orte unabhängig von einer Kenntnis darüber, ob irgendein bestimmter Block des nicht-flüchtigen Speichers in Benutzung ist oder als ein schlechter markiert worden ist und nicht verwendet wird. Im Fortsetzung des anderen Beispiels, sei angenommen, dass Block 7 eines bestimmten aus einer Mehrzahl von Chips des nicht-flüchtigen Speichers schlecht ist und nicht verwendet wird. Wenn Daten im Block 6 eines vorhergehenden der Chips bis in den nachfolgenden Block umspannt, dann verwendet die Steuereinrichtung des Festkörper-Laufwerks den Block 6 des bestimmten Chips. Wenn Daten im Block 7 des vorausgehenden Chips in einen nachfolgenden Block umspannen, überspringt die Steuereinrichtung des Festkörper-Laufwerks den Block 7 des Chips und setzt die Daten in Block 7 des nächsten Chips fort. Der Host hat keine Kenntnis darüber, welche der Blöcke die Daten umspannen.In another example, when variable sized data spans multiple ones of a plurality of blocks of nonvolatile memory, indications of the physical locations used by the host are independent of any knowledge as to whether any particular block of nonvolatile memory is in use or has been marked as bad and is not used. Continuing the other example, suppose that block 7 a particular one of a plurality of chips of the non-volatile memory is bad and is not used. When data in the block 6 of a previous one of the chips spans into the subsequent block, then the controller of the solid state drive uses the block 6 of the particular chip. When data in the block 7 spanning the previous chip into a subsequent block, the controller of the solid state drive skips the block 7 of the chip and puts the data in block 7 away from the next chip. The host has no knowledge of which blocks are spanning the data.

Gemäß verschiedener Ausführungsformen werden Hintergrund-Operationen, wie etwa Lesen, Löschen (scrub) und Recycling, durch einen oder mehrere von dem Host, der Steuereinrichtung des Festkörper-Laufwerks oder irgendeine Kombination derselben ausgeführt. Gemäß verschiedener Ausführungsformen werden jegliche Operationen des Host und/oder eines Prozessors der Steuereinrichtung des Festkörper-Laufwerks durch irgendeinen oder mehrere Zentral-Verarbeitungseinheiten, durch ein oder mehrere Hardware-Einheiten und/oder durch irgendeine Kombination der vorgenannten ausgeführt. According to various embodiments, background operations such as reading, scrub, and recycling are performed by one or more of the host, the solid state drive controller, or any combination thereof. According to various embodiments, any operations of the host and / or processor of the solid state drive controller are performed by any one or more central processing units, by one or more hardware units, and / or by any combination of the foregoing.

Gemäß verschiedener Ausführungsformen sind ein Host und/oder eine Steuereinrichtung eines Festkörper-Laufwerks dazu in der Lage, eines oder mehrere der folgenden zu verwenden: eine herkömmliche Flash-Übergangsschicht; eine Flash-Übergangsschicht mit variabler Größe; eine für sequentielles Lesen optimierte Flash-Übergangsschicht mit variabler Größe; irgendeine andere Art einer Flash-Übergangsschicht, direkter Zugriff auf den nicht-flüchtigen Speicher, irgendeine Kombination der vorgenannten in verschiedenen physikalischen Bereichen des nicht-flüchtigen Speichers; irgendeine Kombination der Vorgenannten in verschiedenen logischen Teilen eines logischen Adressraums der Steuereinrichtung des Festkörper-Laufwerks; und verarbeiteter, physikalischer Zugriff (raw physical access) auf dem nicht-flüchtigen Speicher; und irgendeine Kombination der vorgenannten.According to various embodiments, a host and / or controller of a solid state drive are capable of using one or more of the following: a conventional flash transition layer; a variable-size flash transition layer; a sequentially read optimized variable-size flash transition layer; any other type of flash transition layer, direct access to the non-volatile memory, any combination of the foregoing in various physical areas of the non-volatile memory; any combination of the foregoing in different logical parts of a logical address space of the controller of the solid state drive; and processed raw physical access on the non-volatile memory; and any combination of the foregoing.

Gemäß verschiedener Ausführungsformen werden Host-Schreib-Daten optional und/oder selektiv verschlüsselt, bevor sie in dem nicht-flüchtigen Speicher geschrieben werden, und optional und/oder selektiv entschlüsselt, nachdem sie aus dem nicht-flüchtigen Speicher gelesen worden sind. In weiteren Ausführungsformen geschieht die Verschlüsselung nachfolgend auf eine optionale und/oder selektive Komprimierung der Host-Schreib-Daten, und eine Entschlüsselung geschieht vor einem optionalen und/oder selektiven Dekomprimieren der Daten, die gelesen werden, um an den Host zurückgegeben zu werden. According to various embodiments, host write data is optionally and / or selectively encrypted before being written to the non-volatile memory, and optionally and / or selectively decrypted after being read from the non-volatile memory. In further embodiments, the encryption occurs subsequent to optional and / or selective compression of the host write data, and decryption occurs prior to optionally and / or selectively decompressing the data read to be returned to the host.

Während mehrere beispielhafte Ausführungsformen hierin das Festkörper-Laufwerk und die Steuereinrichtung des Festkörper-Laufwerks verwendet haben, sind die beschriebenen Techniken allgemein anwendbar auf andere Eingabe/Ausgabe-Einrichtungen und/oder Daten-Speicher-Einrichtungen, wie etwa Festkörper-Laufwerke. Der nicht-flüchtige Speicher, der in derartigen Eingabe/Ausgabe-Einrichtungen verwendet wird, ist, in verschiedenen Ausführungsformen, ein anderer als ein „Festkörper“ nicht-flüchtiger Speicher, wie etwa die magnetischen Festplatten (platters) eines Festkörper-Laufwerks (z.B. Festplatten-Laufwerke, die gefächertes (shingled) magnetisches Aufzeichnen verwenden).While several exemplary embodiments herein use the solid state drive and have used the controller of the solid state drive, the described techniques are generally applicable to other input / output devices and / or data storage devices, such as solid state drives. The nonvolatile memory used in such input / output devices is, in various embodiments, other than a "solid state" nonvolatile memory, such as the magnetic disks (platters) of a solid state drive (eg, hard drives Drives using shingled magnetic recording).

In einigen Ausführungsformen sind verschiedene Kombinationen von allen oder Teilen von Operationen, die von einem multi-nodalen Speicher-Gerät oder einem Teil oder Teilen davon ausgeführt werden, beispielsweise ein Festkörper-Laufwerk oder eine Festplatten-Scheibe oder eine Steuereinrichtung eines nicht-flüchtigen Speichers eines Eingabe/Ausgabe-Geräts, das zur Zusammenarbeit (interoperation) mit einem Prozessor (wie etwa eine CPU) ist in der Lage, ein Eingabe/Ausgabe-Steuer-Gerät (wie etwa einen Chip mit RAID-on-Chip), sowie Teile eines Prozessors, Mikroprozessors, System-on-a-Chip, anwendungs-spezifische integrierte Schaltkreise, Hardware-Beschleuniger, oder andere Schaltkreise, die alle oder Teile der vorgenannten Operationen bereitstellen, durch eine Spezifikation spezifiziert, die mit einer Verarbeitung durch ein Computer-System kompatibel ist. Diese Spezifikation ist in Übereinstimmung mit verschiedenen Beschreibungen, die etwa Hardware-Beschreibungssprachen, Schaltkreis-Beschreibungen, Netzlisten-Beschreibungen, Masken-Beschreibungen oder Layout-Beschreibungen. Beispielhafte Beschreibungen umfassen, sind jedoch nicht beschränkt auf: Verilog, VHDL (very high speed integrated circuit hardware description language), SPICE (simulation program with integrated circuit emphasis), SPICE Varianten, wie PSpice, IBIS (input/output buffer information specification), LEF (library exchange format), DEF (design exchange format), GDS-II (graphic database system-II), OASIS (open artwork system interchange standard) oder andere Beschreibungen. Im verschiedenen Ausführungsformen umfasst die Verarbeitung jegliche Kombination von Imterpretation, Kompilation, Simulation und Synthese, um Logik und/oder Schaltkreise, die zum Einschluss in einem oder mehreren integrierten Schaltkreisen geeignet sind, herzustellen, zu verifizieren oder zu spezifizieren. Gemäß verschiedener Ausführungsformen ist jeder integrierte Schaltkreis gemäß einer Vielzahl von Techniken entwerfbar und/oder herstellbar. Die Techniken umfassen eine programmierbare Technik (wie etwa ein Feld-, oder Masken-programmierbare (gate array integrated circuit)), ein Kunden-Verfahren mit Standard-Elementen (semi-custom technique) (wie etwa eine ganz oder teilweise Zellen-basierender integrierter Schaltkreis), und eine vollständig nach dem Kunden ausgelegte Technik (full-custom technique) (wie etwa ein integrierter Schaltkreis, der im Wesentlichen spezialisiert ist), irgendeine Kombination derselben, oder irgendeine andere Technik, die mit dem Entwurf und/oder dem Herstellen von integrierten Schaltkreisen kompatibel ist. In some embodiments, various combinations of all or part of operations performed by a multi-node memory device or a portion or portions thereof are, for example, a solid state drive or hard disk or non-volatile memory controller An input / output device capable of interoperating with a processor (such as a CPU) is capable of an input / output control device (such as a RAID-on-chip chip) as well as parts of a Processors, microprocessors, system-on-a-chip, application-specific integrated circuits, hardware accelerators, or other circuits that provide all or part of the aforementioned operations, specified by a specification compatible with processing by a computer system is. This specification is in accordance with various descriptions such as hardware description languages, circuit descriptions, netlist descriptions, mask descriptions, or layout descriptions. Exemplary descriptions include, but are not limited to: Verilog, VHDL (very high speed integrated circuit hardware description language), SPICE (simulation program with integrated circuit emphasis), SPICE variants such as PSpice, IBIS (input / output buffer information specification), Library exchange format (LEF), design exchange format (DEF), graphical database system-II (GDS-II), open artwork system interchange standard (OASIS) or other descriptions. In various embodiments, the processing includes any combination of interpretation, compilation, simulation, and synthesis to produce, verify, or specify logic and / or circuits suitable for inclusion in one or more integrated circuits. According to various embodiments, each integrated circuit may be designed and / or fabricated according to a variety of techniques. The techniques include a programmable technique (such as a field array integrated circuit (gate array integrated circuit)), a semi-custom technique (such as a wholly or partially cell-based integrated) Circuit), and a fully custom-made technique (such as an integrated circuit that is essentially specialized), any combination thereof, or any other technique involved in designing and / or manufacturing integrated circuits is compatible.

Die von den Darstellungen der 1 bis 14 ausgeführten Funktionen können unter Verwendung von einem oder mehreren der folgenden implementiert werden: einem herkömmlicher Prozessor für allgemeine Zwecke (general purpose), einem digitaler Computer, einem Mikroprozessor, einem Mikrocontroller, einem RISC(reduced instruction set computer)-Prozessor, einem CISC(complex instruction set computer)-Prozessor, einem SIMD(single instruction multiple data)-Prozessor, einem Signal-Prozessor, einer zentralen Verarbeitungseinheit (CPU), einer arithmetischen Logik-Einheit (ALU), einem digitalen Video-Signal-Prozessor (VDSP) und/oder ähnliche Rechenmaschinen, die gemäß den Lehren der Beschreibung programmiert sind, so wie das für den Fachmann in dem/n relevanten Fachgebiet/en offensichtlich ist. Geeignete Software, Firmware, Codierungen, Routinen, Instruktionen, Opcodes, Mikrocodes und/oder Programm-Module können leicht von befähigten Programmierern auf der Grundlage der Lehren dieser Offenbarung ausgearbeitet werden, so wie das für Fachleute in dem/n relevanten Fachgebiet/en offensichtlich ist. Die Software wird allgemein von einem Medium oder mehreren Medien, durch einen oder mehrere der Prozessoren der Maschinen-Implementierung ausgeführt.The of the representations of the 1 to 14 The functions performed may be implemented using one or more of the following: a general purpose general purpose computer, a digital computer, a microprocessor, a microcontroller, a reduced instruction set computer (RISC) processor, a CISC (complex instruction set computer) processor, a SIMDI (single instruction multiple data) processor, a signal processor, a central processing unit (CPU), an arithmetic logic unit (ALU), a digital video signal processor (VDSP) and or similar calculating machines programmed according to the teachings of the description, as will be apparent to those skilled in the relevant art / s. Appropriate software, firmware, encodings, routines, instructions, opcodes, microcodes, and / or program modules may be readily developed by skilled programmers based on the teachings of this disclosure, as will be apparent to those skilled in the relevant art , The software is generally executed by one or more media, by one or more of the processors of the machine implementation.

Die Erfindung kann auch durch die Herstellung von der folgenden implementiert werden: ASICs (application specific integrated circuits), Plattform ASICs, FPGAs (field programmable gate arrays), PLDs (programmable logic devices), CPLDs (complex programmable logic devices), Sea-of-Gates, RFICs (radio frequency integrated circuits), ASSPs (application specific standard products), einem oder mehreren monolithischen integrierten Schaltkreisen, einem oder mehreren Chips oder Chips, die als Flip-Chip-Module und/oder Multi-Chip-Module ausgebildet sind, oder durch Verbinden eines geeigneten Netzwerks von herkömmlichen Komponenten-Schaltkreisen, so wie das hierin beschrieben ist, und von denen Modifikationen für den Fachmann in dem/n technischen Fachgebiet/en leicht offensichtlich ist.The invention may also be implemented by the manufacture of the following: application specific integrated circuits (ASICs), platform ASICs, field programmable gate arrays (FPGAs), programmable logic devices (PLDs), complex programmable logic devices (CPLDs), sea-of Gates, RFICs (Radio Frequency Integrated Circuits), ASSPs (Application Specific Standard Products), one or more monolithic integrated circuits, one or more chips or chips formed as flip-chip modules and / or multi-chip modules or by connecting a suitable network of conventional component circuits as described herein, and modifications of which will be readily apparent to those skilled in the art.

Die Erfindung kann auch ein Computer-Produkt umfassen, das ein Speichermedium oder – medien und/oder ein Übertragungsmedium oder – medien sein kann, das bzw. die Imstruktionen umfassen, die verwendet werden können, um eine Maschine dazu zu programmieren, einen oder mehrere Prozesse oder Verfahren gemäß der Erfindung auszuführen. Die Ausführung von Imstruktionen, die in dem Computer-Produkt enthalten sind, durch die Maschine, zusammen mit Operationen von umgebenden Schaltkreisen, können Eingabe-Daten in eine oder mehrere Dateien auf dem Speicher-Medium und/oder einem oder mehreren Ausgangs-Signalen, die repräsentativ für ein physikalisches Objekt oder Substanz, wie eine Audio- und/oder visuelle Darstellung, umwandeln. Das Speichermedium kann umfassen, ist jedoch nicht beschränkt auf: irgendeine Art einer Platte, einschließlich einer Floppy-Disk, Festplatte, Magnetplatte, optische Platte, CD, ROM, DVD und magneto-optische Platten und Schaltkreise, wie etwa ROMs (read-only memories), RAMs (random access memories), EPROMs (erasable programmable ROMs), EEPROMs (electrically erasable programmable ROMs), UVPROM (ultra-violet erasable programmable ROMs), Flash-Speicher, Magnet-Karten, optische Karten und/oder jegliche Art von Medien, die zum Speichern von elektronischen Imstruktionen geeignet sind.The invention may also include a computer product which may be a storage medium or media and / or a transfer medium or media comprising instructions that may be used to program a machine to process one or more processes or to carry out the method according to the invention. The execution of the instructions contained in the computer product by the Machine, along with operations from surrounding circuits, can input data into one or more files on the storage medium and / or one or more output signals representative of a physical object or substance, such as an audio and / or visual Representation, transform. The storage medium may include, but is not limited to, any type of disk including a floppy disk, hard disk, magnetic disk, optical disk, CD, ROM, DVD, and magneto-optical disks and circuits such as read-only memories ), RAMs (random access memories), EPROMs (erasable programmable ROMs), EEPROMs (electrically erasable programmable ROMs), ultraviolet erasable programmable ROMs (UVPROMs), flash memories, magnetic cards, optical cards and / or any type of Media suitable for storing electronic instructions.

Die Elemente der Erfindung können einen Teil oder alles von einem oder mehreren Geräten, Einheiten, Komponenten, Systemen, Maschinen und/oder Vorrichtungen ausbilden. Die Geräte können umfassen, sind jedoch nicht begrenzt auf: Server, Workstations, Steuereinrichtung von Speicheranordnungen (Storage-Array-Controller), Speichersysteme, Personal-Computer, Laptop-Computer, Notebook-Computer, Hand-Computer (palm computer), Mini-Computer (personal digital assistants), tragbare elektronische Geräte, Batterie-betriebene Geräte, Digitalempfänger (Set-Top-Boxes), Codierer, Dekodierer, Trans-Codierer, Komprimierer, Dekomprimierer, Prä-Prozessoren, Post-Prozessoren, Transmitter, Receiver, Transceiver, Chiffrier-Schaltkreise, Mobiltelefone, digitale Kameras, Positions-Bestimmungs- und/oder Navigations-Systeme, medizinische Ausrüstung, Warn-Anzeige-Geräte (heads-up displays), drahtlose Geräte, Audio-Aufnahme-, Audio-Speicher- und/oder Audio-Wiedergabe-Geräte, Video-Aufnahme-, Video-Speicher- und/oder Video-Wiedergabe-Geräte, Spiele-Plattformen, Peripheriegeräte und/oder Multi-Chip-Module. Der Fachmann in dem/n relevanten Fachgebiet/en würde verstehen, dass die Elemente der Erfindung in anderen Arten von Geräten implementiert werden können, um die Kriterien einer bestimmten Anwendung zu erfüllen.The elements of the invention may form part or all of one or more devices, units, components, systems, machines, and / or devices. The devices may include, but are not limited to: servers, workstations, storage array controller, storage systems, personal computers, laptop computers, notebook computers, palm computers, mini- Personal digital assistants, portable electronic devices, battery-powered devices, set-top boxes, encoders, decoders, transcoders, compressors, decompressors, pre-processors, post-processors, transmitters, receivers, transceivers , Cipher circuits, mobile phones, digital cameras, position determination and / or navigation systems, medical equipment, heads-up displays, wireless devices, audio recording, audio storage and / or or audio playback devices, video recording, video storage and / or video playback devices, game platforms, peripherals, and / or multi-chip modules. Those skilled in the relevant art / s would understand that the elements of the invention can be implemented in other types of devices to meet the criteria of a particular application.

Die Ausdrücke „kann“ und „allgemein“, wenn sie hierin zusammen mit „ist/sind)“ und Verben verwendet werden, sind so zu verstehen, dass sie die Absicht kommunizieren, dass die Beschreibung beispielhaft ist und der Überzeugung entspricht, dass sie breit genug sind, um sowohl die in der Offenbarung dargestellten, spezifischen Beispiele, als auch alternative Beispiele, die auf der Grundlage der Offenbarung abgeleitet werden könnten, umfassen. Die Ausdrücke „kann“ und „allgemein“, so wie sie hierin verwendet werden, sollten nicht dahingehend ausgelegt werden, dass sie notwendigerweise die Wünschbarkeit oder Möglichkeit des Auslassens eines entsprechenden Elements impliziert.The terms "may" and "general" when used herein together with "verbs" and verbs are to be understood as communicating the intention that the description is exemplary and believed to be broad are enough to encompass both the specific examples presented in the disclosure and alternative examples that may be derived based on the disclosure. The terms "may" and "general" as used herein should not be construed as necessarily implying the desirability or possibility of omitting a corresponding element.

Während die Erfindung insbesondere mit Verweis auf Ausführungsformen derselben gezeigt und beschrieben worden ist, so wird von den Fachleuten verstanden werden, dass mannigfaltige Änderungen in der Form und in Einzelheiten ausgeführt werden können, ohne vom Umfang der Erfindung abzuweichen.While the invention has been particularly shown and described with reference to embodiments thereof, it will be understood by those skilled in the art that various changes in form and details may be made without departing from the scope of the invention.

ZITATE ENTHALTEN IN DER BESCHREIBUNG QUOTES INCLUDE IN THE DESCRIPTION

Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.This list of the documents listed by the applicant has been generated automatically and is included solely for the better information of the reader. The list is not part of the German patent or utility model application. The DPMA assumes no liability for any errors or omissions.

Zitierte PatentliteraturCited patent literature

  • US 2012/058583 [0003] US 2012/058583 [0003]
  • US 2012/049905 [0004] US 2012/049905 [0004]

Claims (19)

Ein Verfahren zum Verwenden einer partitionierten Flash-Übergangsschicht (flash transistion layer), das die folgenden Schritte aufweist: (A) an einer Einrichtung von bzw. aus einem Host, Empfangen eines Schreibbefehls mit ersten Schreibdaten, (B) Erzeugen von zweiten Schreibdaten durch Komprimieren, in der Einrichtung, der ersten Schreibdaten, wobei die zweiten Schreibdaten eine variable Größe aufweisen, (C) Speichern der zweiten Schreibdaten an einem physikalischen Ort in einem nicht-flüchtigen Speicher, wobei der physikalische Ort ein nächster unbeschriebener Ort ist, und (D) in Antwort auf den Schreibbefehl, Zurückgeben einer Angabe des physikalischen Orts von der Einrichtung an den Host.A method of using a partitioned flash transitions layer, comprising the steps of: (A) at a device from or from a host, receiving a write command with first write data, (B) generating second write data by compressing, in the device, the first write data, the second write data having a variable size, (C) storing the second write data at a physical location in a nonvolatile memory, the physical location being a next unrecorded location, and (D) in response to the write command, returning an indication of the physical location from the device to the host. Das Verfahren gemäß Anspruch 1, das ferner den folgenden Schritt aufweist: Partitionieren einer dem nicht-flüchtigen Speicher zugeordneten Flash-Übergangsschicht zwischen der Einrichtung und dem Host durch Speichern von (i) der Angabe in dem Host und (ii) Imformation, die der variablen Größe zugeordnet ist, in der Einrichtung.The method of claim 1, further comprising the step of: Partitioning a non-volatile memory associated flash transition layer between the device and the host by storing (i) the indication in the host; and (ii) information associated with the variable variable in the device. Das Verfahren gemäß Anspruch 1 oder 2, das ferner folgende Schritte aufweist: an der Einrichtung von dem Host, Empfangen eines Lesebefehls mit der Angabe des physikalischen Ortes, und in Antwort auf die Angabe, Zurückerlangen der zweiten Schreibdaten durch Lesen eines Bereichs des nicht-flüchtigen Speichers einschließlich des physikalischen Ortes. The method of claim 1 or 2, further comprising the steps of: at the facility of the host, receiving a read command indicating the physical location, and in response to the indication, retrieving the second write data by reading a portion of the non-volatile memory including the physical location. Das Verfahren gemäß Anspruch 3, das ferner die folgenden Schritte aufweist: Wiedererstellen der ersten Schreibdaten durch Dekomprimieren der zweiten Schreibdaten, so, wie diese aus dem nicht-flüchtigen Speicher zurückerlangt worden sind; und Zurückgeben der ersten Schreibdaten, so, wie diese wiederhergestellt worden sind, an den Host.The method of claim 3, further comprising the steps of: Restoring the first write data by decompressing the second write data as retrieved from the non-volatile memory; and Return the first write data as it was restored to the host. Das Verfahren gemäß einem der Ansprüche 1 bis 4, wobei der Schreibbefehl ferner einen Bezeichner der ersten Schreibdaten umfasst, wobei das Verfahren ferner den folgenden Schritt aufweist: Speichern des Bezeichners in dem nicht-flüchtigen Speicher als zumindest einen Abschnitt eines den zweiten Schreibdaten zugeordneten Nachrichtenkopfes.The method of one of claims 1 to 4, wherein the write command further comprises an identifier of the first write data, the method further comprising the step of: Storing the identifier in the non-volatile memory as at least a portion of a message header associated with the second write data. Das Verfahren gemäß Anspruch 5, das ferner den folgenden Schritt aufweist: in dem Host, Pflegen einer Abbildung, die den Bezeichner der Angabe des physikalischen Ortes zuordnet.The method of claim 5, further comprising the step of: in the host, maintaining an image that associates the identifier with the physical location indication. Das Verfahren gemäß Anspruch 5 oder 6, wobei (i) der Bezeichner eine logische Blockadresse ist und (ii) die Angabe eine physikalische Adresse in dem nicht-flüchtigen Speicher von einer aus einer Mehrzahl von Leseeinheiten umfasst, wobei jede der Leseeinheiten einen entsprechenden Bereich von Daten und eine entsprechende Fehlerkorrektur-Imformation, die den entsprechenden Bereich von Daten schützt, umfasst.The method of claim 5 or 6, wherein (i) the identifier is a logical block address and (ii) the indication comprises a physical address in the non-volatile memory of one of a plurality of read units, each of the read units comprising a corresponding range of Data and a corresponding error correction information that protects the corresponding area of data includes. Das Verfahren gemäß Anspruch 7, wobei (i) der nicht-flüchtige Speicher eine Mehrzahl von Seitenrahmen aufweist, (ii) die physikalische Adresse in einem ersten der Seitenrahmen ist, (iii) der erste Seitenrahmen eine erste Anzahl der Leseeinheiten enthält, (iv) ein zweiter der Seitenrahmen eine zweite Anzahl der Leseeinheiten enthält und (v) die erste Anzahl verschieden von der zweiten Anzahl ist.The method of claim 7, wherein (i) the non-volatile memory has a plurality of page frames, (ii) the physical address is in a first one of the page frames, (iii) the first page frame contains a first number of the read units, (iv) a second one of the side frames includes a second number of the read units, and (v) the first number is different from the second number. Das Verfahren gemäß einem der Ansprüche 1 bis 8, wobei der nächste nicht-beschriebene Ort an zuvor geschriebenen Daten in einem physikalischen Adressraum des nicht-flüchtigen Speichers angrenzt.The method of one of claims 1 to 8, wherein the next un-described location is adjacent to previously written data in a non-volatile memory physical address space. Ein Verfahren zum Verwenden einer partitionierten Flash-Übergangsschicht, das die folgenden Schritte aufweist: (A) an einer Einrichtung von bzw. aus einem Host, Empfangen eines Schreibbefehls, der Schreibdaten mit einer variablen Größe umfasst, (B) Speichern der Schreibdaten an einem physikalischen Ort in einem nicht-flüchtigen Speicher, wobei der physikalische Ort ein nächster nicht-beschriebener Ort ist, und (C) in Antwort auf den Schreibbefehl, Zurückgeben einer Angabe des physikalischen Ortes von der Einrichtung an den Host.A method of using a partitioned flash transition layer, comprising the steps of: (A) at a device from a host, receiving a write command that includes variable-sized write data, (B) storing the write data at a physical location in a non-volatile memory, wherein the physical location is a next un-written location, and (C) in response to the write command, returning an indication of the physical location from the device to the host. Das Verfahren gemäß Anspruch 10, das ferner die folgenden Schritte aufweist: an der Einrichtung von dem Host, Empfangen eines Schreibbefehls, der die Angabe des physikalischen Ortes aufweist, und in Antwort auf die Angabe, Wiedererlangen der Schreibdaten durch Lesen eines Bereichs des nicht-flüchtigen Speichers einschließlich des physikalischen Ortes.The method of claim 10, further comprising the steps of: at the facility of the host, receiving a write command indicative of the physical location, and in response to the indication, retrieving the write data by reading a portion of the non-volatile memory including the physical location. Das Verfahren gemäß Anspruch 11, das ferner den folgenden Schritt aufweist: Zurückgeben der Schreibdaten von der Einrichtung an den Host. The method of claim 11, further comprising the step of: Return the write data from the device to the host. Das Verfahren gemäß einem der Ansprüche 10 bis 12, wobei der Schreibbefehl ferner einen Bezeichner der Schreibdaten umfasst, wobei das Verfahren ferner den folgenden Schritt aufweist: Speichern des Bezeichners in dem nicht-flüchtigen Speicher als zumindest einen Abschnitt eines den Schreibdaten zugeordneten Nachrichtenkopfs.The method of any of claims 10 to 12, wherein the write command further comprises a Identifier of the write data, the method further comprising the step of: storing the identifier in the non-volatile memory as at least a portion of a message header associated with the write data. Das Verfahren gemäß Anspruch 13, das ferner den folgenden Schritt aufweist: in dem Host, Pflegen einer Abbildung, die den Bezeichner der Angabe des physikalischen Orts zuordnet.The method of claim 13, further comprising the step of: in the host, maintain an image that associates the identifier with the physical location specification. Das Verfahren gemäß Anspruch 13 oder 14, wobei (i) der Bezeichner eine logische Blockadresse ist und (ii) die Angabe eine physikalische Adresse in dem nicht-flüchtigen Speicher von einer aus einer Mehrzahl von Leseeinheiten umfasst, wobei jede der Leseeinheiten einen entsprechenden Abschnitt von Daten und eine entsprechende Fehlerkorrektur-Imformation, die den entsprechenden Abschnitt von Daten schützt, umfasst.The method of claim 13 or 14, wherein (i) the identifier is a logical block address and (ii) the indication comprises a physical address in the non-volatile memory of one of a plurality of readers, each of the readers comprising a corresponding portion of Data and a corresponding error correction information that protects the corresponding portion of data includes. Das Verfahren gemäß Anspruch 15, wobei (i) der nicht-flüchtige Speicher eine Mehrzahl von Seitenrahmen aufweist, (ii) die physikalische Adresse in einem ersten der Seitenrahmen ist, (iii) der erste Seitenrahmen eine erste Anzahl der Leseeinheiten enthält, (iv) ein zweiter der Seitenrahmen eine zweite Anzahl der Leseeinheiten enthält und (v) die erste Anzahl verschieden von der zweiten Anzahl ist.The method of claim 15, wherein (i) the nonvolatile memory has a plurality of page frames, (ii) the physical address is in a first one of the page frames, (iii) the first page frame contains a first number of the read units, (iv) a second one of the side frames includes a second number of the read units, and (v) the first number is different from the second number. Das Verfahren gemäß einem der Ansprüche 10 bis 16, wobei der nächste nicht-beschriebene Ort an zuvor geschriebene Daten in einem physikalischen Adressraum des nicht-flüchtigen Speichers angrenzt.The method of any one of claims 10 to 16, wherein the next unsearched location is adjacent to previously written data in a non-volatile memory physical address space. Eine Einrichtung, aufweisend: einen nicht-flüchtigen Speicher, und einen Schaltkreis, der dazu ausgelegt ist, (i) von einem Host einen Schreibbefehl mit ersten Schreibdaten zu empfangen, (ii) zweite Schreibdaten durch Komprimieren der ersten Schreibdaten zu erzeugen, (iii) zweite Schreibdaten an einem physikalischen Ort in dem nicht-flüchtigen Speicher zu speichern, und (iv) in Antwort auf den Schreibbefehl, eine Angabe des physikalischen Ortes an den Host zurückzugeben, wobei (a) die zweiten Schreibdaten eine variable Größe haben und (b) der physikalische Ort ein nächster nicht-beschriebener Ort ist.An institution comprising: a non-volatile memory, and a circuit configured to (i) receive from a host a write command with first write data, (ii) generate second write data by compressing the first write data, (iii) second write data at a physical location in the non-volatile memory and (iv) in response to the write command, return an indication of the physical location to the host, wherein (a) the second write data is a variable size and (b) the physical location is a next un-written location. Die Einrichtung gemäß Anspruch 18, wobei die Einrichtung als ein oder mehrere integrierte Schaltkreise implementiert ist.The device of claim 18, wherein the device is implemented as one or more integrated circuits.
DE102014111670.4A 2013-08-16 2014-08-14 A transition layer partitioned between a host and a controller Withdrawn DE102014111670A1 (en)

Applications Claiming Priority (10)

Application Number Priority Date Filing Date Title
US201361866672P 2013-08-16 2013-08-16
US61/866,672 2013-08-16
US201361873357P 2013-09-03 2013-09-03
US61/873,357 2013-09-03
US201361888681P 2013-10-09 2013-10-09
US61/888,681 2013-10-09
US201361893383P 2013-10-21 2013-10-21
US61/893,383 2013-10-21
US14/060,799 2013-10-23
US14/060,799 US9329991B2 (en) 2013-01-22 2013-10-23 Translation layer partitioned between host and controller

Publications (1)

Publication Number Publication Date
DE102014111670A1 true DE102014111670A1 (en) 2015-02-19

Family

ID=51662491

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102014111670.4A Withdrawn DE102014111670A1 (en) 2013-08-16 2014-08-14 A transition layer partitioned between a host and a controller

Country Status (6)

Country Link
JP (1) JP6443794B2 (en)
KR (1) KR102328612B1 (en)
CN (1) CN104679446B (en)
DE (1) DE102014111670A1 (en)
GB (1) GB2519211A (en)
TW (1) TWI637262B (en)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016139749A1 (en) * 2015-03-03 2016-09-09 株式会社日立製作所 Computer system and storage control method
CN106101096B (en) * 2016-06-10 2022-06-28 北京数盾信息科技有限公司 High-speed encryption module based on interface bus separation
US10236909B2 (en) * 2017-03-31 2019-03-19 Sandisk Technologies Llc Bit-order modification for different memory areas of a storage device
US10534718B2 (en) * 2017-07-31 2020-01-14 Micron Technology, Inc. Variable-size table for address translation
US10354732B2 (en) * 2017-08-30 2019-07-16 Micron Technology, Inc. NAND temperature data management
JP6785205B2 (en) * 2017-09-21 2020-11-18 キオクシア株式会社 Memory system and control method
JP6785204B2 (en) 2017-09-21 2020-11-18 キオクシア株式会社 Memory system and control method
FR3072476A1 (en) * 2017-10-13 2019-04-19 Proton World International N.V. MEMORY LOGIC UNIT FOR FLASH MEMORY
JP6982468B2 (en) * 2017-10-27 2021-12-17 キオクシア株式会社 Memory system and control method
CN107861752A (en) * 2017-11-29 2018-03-30 英业达科技有限公司 Server system
US10878859B2 (en) 2017-12-20 2020-12-29 Micron Technology, Inc. Utilizing write stream attributes in storage write commands
CN108319429B (en) * 2018-01-10 2021-02-19 北京思特奇信息技术股份有限公司 Method for accelerating file reading and computer equipment
JP6960877B2 (en) 2018-03-22 2021-11-05 キオクシア株式会社 Memory system
US11803325B2 (en) 2018-03-27 2023-10-31 Micron Technology, Inc. Specifying media type in write commands
CN109471596B (en) * 2018-10-31 2022-03-18 北京小米移动软件有限公司 Data writing method, device, equipment and storage medium
US11048413B2 (en) * 2019-06-12 2021-06-29 Samsung Electronics Co., Ltd. Method for reducing read ports and accelerating decompression in memory systems
US11188459B2 (en) * 2019-12-23 2021-11-30 Micron Technology, Inc. Data block switching at a memory sub-system
KR102267477B1 (en) 2020-02-20 2021-06-22 삼성전자주식회사 Storage device and operating method of the same
US11481115B2 (en) * 2020-08-17 2022-10-25 Western Digital Technologies, Inc. Host-managed hardware compression with zoned namespaces
GB2603459B (en) * 2021-01-22 2023-05-10 Advanced Risc Mach Ltd Data processing systems
CN113419678A (en) * 2021-06-18 2021-09-21 上海盈方微电子有限公司 Storage management method for embedded system

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120049905A1 (en) 2010-08-26 2012-03-01 Semiconductor Energy Laboratory Co., Ltd. Semiconductor device
US20120058583A1 (en) 2009-06-17 2012-03-08 Sumitomo Electric Industries, Ltd. Group-iii nitride semiconductor laser device, and method for fabricating group-iii nitride semiconductor laser device

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB9113469D0 (en) * 1991-06-21 1991-08-07 Anamartic Ltd Data storage management systems
US5943692A (en) * 1997-04-30 1999-08-24 International Business Machines Corporation Mobile client computer system with flash memory management utilizing a virtual address map and variable length data
JP3766188B2 (en) * 1997-08-22 2006-04-12 沖電気工業株式会社 Logical format conversion method and data storage medium
JP2000076117A (en) * 1998-08-31 2000-03-14 Kano Densan Hongkong Yugenkoshi Electronic device, control method therefor and storage medium
JP2001101071A (en) * 1999-09-29 2001-04-13 Victor Co Of Japan Ltd Data storage device using flash type memory and data managing method for the same memory
KR100706242B1 (en) * 2005-02-07 2007-04-11 삼성전자주식회사 Memory system and run level address mapping table forming method thereof
TW200832440A (en) * 2007-01-25 2008-08-01 Genesys Logic Inc Flash memory translation layer system
US7836226B2 (en) * 2007-12-06 2010-11-16 Fusion-Io, Inc. Apparatus, system, and method for coordinating storage requests in a multi-processor/multi-thread environment
WO2009110377A1 (en) * 2008-03-05 2009-09-11 日本電気株式会社 Metaserver and file management system
EP2646922A4 (en) * 2010-12-01 2015-11-25 Lsi Corp Dynamic higher-level redundancy mode management with independent silicon elements
CN103415844B (en) * 2011-01-18 2016-04-20 希捷科技有限公司 For the system and method that senior redundant information calculates
US8880839B2 (en) * 2011-04-14 2014-11-04 International Business Machines Corporation Writing adjacent tracks to a stride, based on a comparison of a destaging of tracks to a defragmentation of the stride

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120058583A1 (en) 2009-06-17 2012-03-08 Sumitomo Electric Industries, Ltd. Group-iii nitride semiconductor laser device, and method for fabricating group-iii nitride semiconductor laser device
US20120049905A1 (en) 2010-08-26 2012-03-01 Semiconductor Energy Laboratory Co., Ltd. Semiconductor device

Also Published As

Publication number Publication date
KR20150020136A (en) 2015-02-25
TWI637262B (en) 2018-10-01
KR102328612B1 (en) 2021-11-17
CN104679446A (en) 2015-06-03
JP6443794B2 (en) 2018-12-26
JP2015036982A (en) 2015-02-23
GB2519211A (en) 2015-04-15
GB201414515D0 (en) 2014-10-01
TW201518944A (en) 2015-05-16
CN104679446B (en) 2017-10-03

Similar Documents

Publication Publication Date Title
DE102014111670A1 (en) A transition layer partitioned between a host and a controller
US9329991B2 (en) Translation layer partitioned between host and controller
DE102014111668A1 (en) Flash transition layer with variable size
US10346312B2 (en) Variable-size flash translation layer
US10310737B1 (en) Size-targeted database I/O compression
US9342256B2 (en) Epoch based storage management for a storage device
US9213633B2 (en) Flash translation layer with lower write amplification
JP2018152126A (en) Method and system for storing and retrieving data
US20140325115A1 (en) Conditional Iteration for a Non-Volatile Device
DE102012216034B4 (en) Direct memory addressing for solid-state drives
KR101813786B1 (en) System and method for copy on write on an ssd
US11307931B1 (en) Using zones to manage capacity reduction due to storage device failure
US20130250686A1 (en) Semiconductor memory device, information processing system and control method
DE112015000378T5 (en) Selective copyback for a chip-backed non-volatile memory
KR20140094468A (en) Management of and region selection for writes to non-volatile memory
DE102012110692A1 (en) A data storage device that stores a partitioned file in various storage media, and data management methods
CN110795272B (en) Method and system for atomic and latency guarantees facilitated on variable-size I/O
US11397669B2 (en) Data storage device and non-volatile memory control method
US9195594B2 (en) Locating data in non-volatile memory
DE112014000251T5 (en) Real-time classification of data in data compression domains
US20170052844A1 (en) Flash memory codeword architectures
US11263147B2 (en) Memory system including logical-to-physical address translation table in a first cache and a compressed logical-to-physical address translation table in a second cache
US11176033B2 (en) Data storage devices and data processing methods
US11520500B2 (en) Managing capacity reduction when downshifting multi-level memory cells
US20190057024A1 (en) Intelligent Redundant Array Of Independent Disks With High Performance Recompaction

Legal Events

Date Code Title Description
R082 Change of representative

Representative=s name: DILG HAEUSLER SCHINDELMANN PATENTANWALTSGESELL, DE

R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee