DE102014111670A1 - A transition layer partitioned between a host and a controller - Google Patents
A transition layer partitioned between a host and a controller Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
- G06F11/108—Parity data distribution in semiconductor storages, e.g. in SSD
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/04—Addressing variable-length words or parts of words
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0292—User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/40—Specific encoding of data in memory or cache
- G06F2212/401—Compressed data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7208—Multiple 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
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
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:
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
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
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
Mit Verweis auf
Mit Verweis auf
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
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
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
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
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-Nachrichtenkopf620 (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öpfe630 . 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).
- - Message headers, including a
master message header 610 , optionally and / or selectively, a redundancy block header620 (eg, a message header added in the first page frame of each block in a redundancy block), and zero or more additionalpacked 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
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
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
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 der6 und7 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.
- - 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 FIGS6 and7 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
Mit Verweis auf
- – 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.
- 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
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
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
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
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
Wie in
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
Die Lese-Ablauf-Steuerung
Die Schreib-Ablauf-Steuerung
Die Datenpfad-Einheiten
- – 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.
- 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
Mit Verweis auf
Als eine beispielhafte Ausführungsform eines einzelnen Festkörper-Laufwerks, das direkt mit einem Host gekoppelt ist, ist eine Imstanz des Festkörper-Laufwerks
Einige der Ausführungsformen, die den Schalter/die Struktur/die zwischengeschaltete Steuerungseinrichtung
Der Host
In einigen Ausführungsformen und/oder Nutzerszenarien umfasst die Host-Software
Das Betriebssystem
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
Einer oder mehrere Abschnitte der nicht-flüchtigen Speicher
In einigen Ausführungsformen umfasst der Host
In einigen Ausführungsformen, in denen der Schalter/die Struktur/die zwischengeschaltete Steuereinrichtung
Im verschiedenen Ausführungsformen, wie etwa einigen der Ausführungsformen, wobei der Host
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
Mit Verweis auf
Im Schritt
Im Schritt
Im Schritt
Im Schritt
Im Schritt
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
Im Schritt
Im Schritt
Im Schritt
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
Mit Verweis auf
Im Schritt
Im Schritt
Im Schritt
Im Schritt
Im Schritt
Im Schritt
Im Schritt
Im Schritt
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
Im Schritt
Im Schritt
Im Schritt
Im Schritt
Im Schritt
Im Schritt
Im Schritt
Im Schritt
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
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
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
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
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
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)
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)
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)
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)
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 |
-
2014
- 2014-07-28 JP JP2014152477A patent/JP6443794B2/en active Active
- 2014-08-08 TW TW103127357A patent/TWI637262B/en not_active IP Right Cessation
- 2014-08-14 DE DE102014111670.4A patent/DE102014111670A1/en not_active Withdrawn
- 2014-08-14 KR KR1020140105759A patent/KR102328612B1/en active IP Right Grant
- 2014-08-15 GB GB1414515.5A patent/GB2519211A/en not_active Withdrawn
- 2014-08-18 CN CN201410407142.XA patent/CN104679446B/en active Active
Patent Citations (2)
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 |