DE102014111668A1 - Flash-Übergangsschicht mit variabler Größe - Google Patents

Flash-Übergangsschicht mit variabler Größe Download PDF

Info

Publication number
DE102014111668A1
DE102014111668A1 DE102014111668.2A DE102014111668A DE102014111668A1 DE 102014111668 A1 DE102014111668 A1 DE 102014111668A1 DE 102014111668 A DE102014111668 A DE 102014111668A DE 102014111668 A1 DE102014111668 A1 DE 102014111668A1
Authority
DE
Germany
Prior art keywords
data
page frame
read
units
compressed data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
DE102014111668.2A
Other languages
English (en)
Inventor
Earl T. Cohen
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
LSI Corp
Original Assignee
LSI Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US14/055,336 external-priority patent/US9495288B2/en
Application filed by LSI Corp filed Critical LSI Corp
Publication of DE102014111668A1 publication Critical patent/DE102014111668A1/de
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/108Parity data distribution in semiconductor storages, e.g. in SSD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/401Compressed data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7208Multiple device management, e.g. distributing data over multiple flash devices

Landscapes

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

Abstract

Offenbart wird ein Verfahren zum Verwenden einer Flash-Übergangsschicht mit variabler Größe. Schritt (A) empfängt eine Lese-Anforderung zum Lesen von Daten entsprechend einer logischen Blockadresse von einem nicht-flüchtigen Speicher. Schritt (B) liest einen bestimmten Eintrag aus einer Abbildung, um folgendes zu erlangen: (i) eine physikalische Adresse von einem bestimmten Seitenrahmen in dem nicht-flüchtigen Speicher, (ii) einen Versatz in dem bestimmten Seitenrahmen zu komprimierten Daten, die zuvor gespeichert worden sind, und (iii) eine Länge der komprimierten Daten. Der bestimmte Eintrag ist der logischen Blockadresse zugeordnet. Schritt (C) wandelt den Versatz und die Länge um in: (i) eine Adresse einer gegebenen Leseeinheit in dem bestimmten Seitenrahmen und (ii) eine Anzahl der zu lesenden Leseeinheiten. Schritt (D) liest aus dem bestimmten Seitenrahmen maximal die Anzahl der Leseeinheiten beginnend bei der gegebenen Leseeinheit. Eine Granularität eines Versatzes und einer Länge sind feiner als eine Leseeinheit.

Description

  • Diese Anmeldung bezieht sich auf die am 9. Oktober 2013 eingereichte U.S. Provisional Application Nr. 61/888,681, die am 16. August 2013 eingereichte U.S. Provisional Application Nr. 61/866,672 und die am 22. Januar 2013 eingereichte U.S. Provisional Application Nr. 61/755,169, wobei jede von diesen hiermit durch Verweis in ihrer Gesamtheit aufgenommen ist.
  • 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 U.S. Provisional Application Nr. 61/316,373 bezieht, wobei jede von diesen hiermit durch Verweis in ihrer Gesamtheit aufgenommen ist.
  • Diese Anmeldung bezieht sich auch auf die Internationale Anmeldung PCT/US2012/058583, die ein internationales Anmeldungsdatum vom 4. Oktober 2012 hat und die die Vorteile der am 5. Oktober 2011 eingereichten U.S. Provisional Application Nr. 61/543,707 beansprucht, wobei jede dieser hiermit durch Verweis in ihrer Gesamtheit aufgenommen ist.
  • TECHNISCHES GEBIET DER ERFINDUNG
  • Die Erfindung bezieht sich auf einen Rechen-Host und auf Eingabe/Ausgabe-Geräte-Technologie im Allgemeinen und insbesondere auf ein Verfahren und/oder eine Vorrichtung zum Implementieren einer Flash-Übergangsschicht (flash transition layer) mit variabler Größe.
  • HINTERGRUND
  • Herkömmliche Festkörper-Laufwerke speichern eine festgesetzte, ganzzahlige Anzahl von logischen Host-Blöcken in jedem Seitenrahmen eines nicht-flüchtigen Speichers. Speichereffizienz-Themen treten auf, wenn entweder eine Nutzerdatengröße oder eine verwendbare Größe von jedem Seitenrahmen des nicht-flüchtigen Speichers nicht festgesetzt ist. Architekturen für Flash-Übergangsschichten mit variabler Größe in dem Festkörper-Laufwerk sind Hardware-intensiv. Es werden Seitenrahmen-Nachrichtenköpfe verwendet, um anzugeben, wo die Nutzerdaten unter bzw. in mehreren Leseeinheiten innerhalb der Seitenrahmen des Festplatten-Laufwerks gespeichert sind, und ein Extrahieren der Daten bedingt ein erstes Lesen und Analysieren (Parsen) der Seitenrahmen-Nachrichtenköpfe.
  • ZUSAMMENFASSUNG
  • Die Erfindung betrifft ein Verfahren zum Verwenden einer Flash-Übergangsschicht (flash transition layer) mit variabler Größe. Schritt (A) empfängt eine Lese-Anforderung zum Lesen von Daten entsprechend einer logischen Blockadresse von einem nicht-flüchtigen Speicher. Schritt (B) liest einen bestimmten Eintrag von einer Abbildung, um folgendes zu erlangen: (i) eine physikalische Adresse von einem bestimmten Seitenrahmen in dem nicht-flüchtigen Speicher, (ii) einen Versatz (offset) in dem bestimmten Seitenrahmen zu komprimierten Daten, die zuvor gespeichert wurden, und (iii) eine Länge der komprimierten Daten. Der bestimmte Eintrag ist der logischen Blockadresse zugeordnet. Schritt (C) wandelt den Versatz und die Länge um in (i) eine Adresse einer gegebenen Leseeinheit in dem bestimmten Seitenrahmen und (ii) eine Anzahl der zu lesenden Leseeinheiten. Schritt (D) liest aus dem bestimmten Seitenrahmen maximal die Anzahl der Leseeinheiten beginnend bei der gegebenen Leseeinheit. Eine Granularität des Versatzes und der Länge sind feiner als eine Leseeinheit.
  • KURZE BESCHREIBUNG DER FIGUREN
  • Ausführungsformen der Erfindung werden aus der nachfolgenden, ausführlichen Beschreibung und den beigefügten Patentansprüchen und den Zeichnungen offensichtlich, für die gilt:
  • 1 ist eine Darstellung von ausgewählten Einzelheiten einer Ausführungsform des Abbildens einer logischen Blockadresse auf Bereiche mit festgesetzter Größe innerhalb eines Flash-Seitenrahmens,
  • 2 ist eine Darstellung von ausgewählten Einzelheiten einer Ausführungsform des Abbildens einer logischen Blockadresse auf einem Bereich mit variabler Größe, der optional Flash-Seitenrahmen umspannt,
  • 3 ist eine Darstellung einer Ausführungsform eines Flash-Seitenrahmens, der eine ganzzahlige Anzahl von Leseeinheiten umfasst,
  • 4 ist eine Darstellung von ausgewählten Einzelheiten einer Ausführungsform des Abbildens einer logischen Blockadresse auf einen Abschnitt mit variabler Größe, der eine oder mehrere Leseeinheiten umspannt,
  • 5 ist eine Darstellung von ausgewählten Einzelheiten einer Ausführungsform von einer Leseeinheit, die Nachrichtenköpfe und Daten umfasst,
  • 6 ist eine Darstellung von ausgewählten Einzelheiten von einer Ausführungsform eines Flash-Seitenrahmens, der Nachrichtenköpfe und Daten umfasst,
  • 7 ist eine Veranschaulichung von ausgewählten Einzelheiten einer Ausführungsform eines Flash-Seitenrahmens, der Nachrichtenköpfe und Daten umfasst, gemäß einer Ausführungsform der Erfindung,
  • 8 ist eine Darstellung von ausgewählten Einzelheiten von einer Ausführungsform von verschiedenen Arten von Nachrichtenköpfen,
  • 9 ist eine Darstellung von ausgewählten Einzelheiten von einer Ausführungsform eines Abbildungseintrags,
  • 10 ist eine Darstellung von ausgewählten Einzelheiten von einer Ausführungsform von verschiedenen komprimierten Abbildungseinträgen,
  • 11 ist ein Ablauf-Diagramm des Lesens eines nicht-flüchtigen Speichers, und
  • 12 ist eine Darstellung von ausgewählten Einzelheiten einer Ausführungsform von einer Steuerungs-Einrichtung eines Festkörper-Laufwerks.
  • AUSFÜHRLICHE BESCHREIBUNG DER AUSFÜHRUNGSFORMEN
  • Ausführungsformen der Erfindung umfassen das Bereitstellen einer Flash-Übergangsschicht (flash transition layer) mit variabler Größe, die folgendes kann: (i) Unterstützen eines breiten Bereichs von Daten-Größen, (ii) Erzeugen von Nachrichtenköpfen mittels eines Dichtpack-Speicherungs(tiling)-Prozesses, (iii) Analysieren (Parsen) von Nachrichtenköpfen mit einem Entpackungs(un-tiling)-Prozess, (iv) Anordnen aller Nachrichtenköpfen an einem Beginn eines Seitenrahmens, (v) Anordnen aller Daten nach den Nachrichtenköpfen in jedem Seitenrahmen, (vi) Verwenden von Versätzen (offsets) und Nachrichtenköpfen, die nicht mit Grenzen von Leseeinheiten ausgerichtet sind, und/oder (vii) implementiert Sein als ein oder mehrere integrierte Schaltkreise und/oder zugeordnete Firmware.
  • Die Erfindung kann auf vielfältige Arten implementiert werden, beispielsweise als ein Prozess, ein Herstellungsartikel, eine Vorrichtung, ein System, eine Zusammensetzung von Stoffen, und ein computer-lesbares Medium, wie etwa ein computer-lesbares Speichermedium (z. B. Medien in einer optischen und/oder magnetischen Massenspeicher-Einrichtung, wie etwa eine Scheibe (disc), ein integrierter Schaltkreis mit nicht-flüchtigem Speicher, wie etwa ein Flash-Speicher) oder ein Computer-Netzwerk, in dem Programmbefehle über optische oder elektronische Kommunikationsverbindungen gesendet werden. Die ausführliche Beschreibung gibt eine Darstellung von einer oder mehreren Ausführungsformen der Erfindung, die Verbesserungen hinsichtlich Kosten, Profitabilität, Leistungsfähigkeit, Effizienz und Nützlichkeit der Verwendung in dem oben identifizierten technischen Gebiet ermöglichen. Die ausführliche Beschreibung umfasst eine Einführung, um ein Verständnis des Rests der ausführlichen Beschreibung zu erleichtern. Die Einführung enthält beispielhafte Ausführungsformen von einem oder mehreren Systemen und Verfahren, Herstellungsartikeln und computerlesbaren Medien gemäß den hierin beschriebenen Konzepten. So, wie das hierin in größerer Ausführlichkeit besprochen wird, umfasst die Erfindung alle möglichen Modifikationen und Variationen innerhalb des Umfangs der erteilten Patentansprüche.
  • Flash-Übergangsschichten (z. B. FTLs, flash transition layers) bilden logische Blockadresse (z. B. LBAs, logical block address) in einem logischen Blockadressraum (wie etwa die, die von einem Host zum Ausführen von Eingabe/Ausgabe-Operationen an ein Eingabe/Ausgabe-Gerät verwendet werden) auf physikalische Orte in einem nicht-flüchtigen Speicher (z. B. NVM, nonvolatile memory), wie etwa ein NAND-Flash-nicht-flüchtigen Speicher, ab. Die Abbildung arbeitet auf ausgerichteten Einheiten von einem oder mehrere logischen Blöcken, die eine Abbildungseinheit genannt werden, so dass jede Abbildungseinheit einen entsprechenden physikalischen Ort hat, wo Daten der Abbildungseinheit gespeichert sind (einschließlich der Möglichkeit eines physikalischen NULL Ortes, falls die Abbildungseinheit niemals geschrieben worden ist oder beschnitten (trimmed) ist.) Beispielsweise mit 4 Kilobyte (z. B. KB) Abbildungseinheiten werden acht zusammenhängende (und typischerweise bezüglich acht Sektoren ausgerichtete) Sektoren von 512 Bytes in der Form von Serial Advanced Technology Attachment (z. B. SATA) als eine einzige Einheit abgebildet. Allgemein hat eine Übersetzungstabelle, wie etwa eine Abbildung, einen Eintrag pro Abbildungseinheit, um eine entsprechende Übersetzung der der Abbildungseinheit zugeordneten logischen Blockadresse in eine physikalische Adresse in dem nicht-flüchtigen Speicher und/oder andere Steuerungsinformation zu speichern.
  • Nicht-flüchtige Speicher, wie etwa ein NAND-Flash, stellen eine beschreibbare (oder programmierbare) Einheit, die ein Flash-Seitenrahmen bzw. eine Flash-Seite (flash page) genannt wird, bereit. Ein Flash-Seitenrahmen bzw. eine Flash-Seite umfasst eine Anzahl von Nutzer(Nicht-Fehlerkorrektur-Code)-Daten-Bytes und eine Menge von Speicherraum für Meta-Daten und Fehlerkorrektur-Codierung (z. B. ECC, error correction coding), und ist allgemein die kleinste beschreibbare Einheit des nicht-flüchtigen Speichers. Typische Größen von Flash-Seitenrahmen sind 8 KB oder 16 KB oder 32 KB von Nutzerdaten, wohingegen typische Größen von Abbildungseinheiten 4 KB oder 8 KB sind. (Während der Ausdruck „Benutzer-Daten im Hinblick auf Flash-Seitenrahmen verwendet wird, speichern einige Flash-Seitenrahmen „System”-Daten, wie etwa Abbildungsdaten und/oder Überprüfungspunkt-(checkpoint)-Daten. Nutzerdaten sind allgemein dazu vorgesehen, auf Nicht-ECC-Bereichen eines Flash-Seitenrahmens zu verweisen.) Die 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 Flash-Seitenrahmen wird gelöscht, bevor der Seitenrahmen in der Lage ist, (erneut) beschrieben zu werden.
  • Mit Verweis auf 1 wird eine Darstellung von ausgewählten Einzelheiten einer Ausführungsform des Abbildens einer logischen Blockadresse auf einen Abschnitt mit festgesetzter Größe innerhalb eines Flash-Seitenrahmens gezeigt. Herkömmliche Flash-Übergangsschichten gehen von einer Anzahl von Nutzerdaten-Bytes in einem Flash-Seitenrahmen (z. B. Flash-Page 100), der eine Potenz von zwei (und/oder ein Vielfaches der Sektorgröße) ist, aus und unterteilen den Flash-Seitenrahmen in eine ganzzahlige Anzahl von Abbildungseinheiten (von denen jede in 1 als Daten dargestellt ist). Beispielsweise umfasst mit 16 KB Nutzerdaten pro Flash-Seitenrahmen und 4 KB Abbildungseinheiten jeder Flash-Seitenrahmen vier Abbildungseinheiten, und die Flash-Übergangsschicht bildet eine Adresse von jeder Abbildungseinheit (z. B. LBA[M:U] 110) auf einen entsprechenden Flash-Seitenrahmen und einen der vier Abbildungseinheiten innerhalb des entsprechenden Flash-Seitenrahmens ab. Das heißt, jeder Abbildungseintrag enthält entsprechende Felder wie etwa: flash_page_address[n-1:0], mapping_unit_within_flash_page [k-1:0], wobei der Bezeichner „flash_page_address” einen eindeutigen Flash-Seitenrahmen in dem nicht-flüchtigen Speicher bezeichnet und der Bezeichner „mapping_unit_within_flash_page” einen von 2k-Abschnitten mit der Größe von einer Abbildungseinheit in jedem Flash-Seitenrahmen (wobei k für den gesamten nicht-flüchtigen Speicher festgesetzt ist) bezeichnet. Eine Sub-Seitenrahmen (sub-page)-Adresse 104 ist eine Kombination von einem „flash_page_address” und einem „mapping_unit_within_Flash_page”. Bei sektor-basierender Adressierung spezifizieren die. niederwertigen Bits der logischen Blockadresse (z. B. LBA[U-1:0] 111) einen Teilbereich, wie etwa eine Anzahl von Sektoren (z. B. Sektor(en) innerhalb des Sub-Seitenrahmens 113 innerhalb der Abbildungseinheit.
  • Mit Verweis auf 2 wird eine Darstellung von ausgewählten Einzelheiten einer Ausführungsform der Abbildung einer logischen Blockadresse auf einen Bereich mit variabler Größe, der optional Flash-Seitenrahmen umspannt, gezeigt. Flash-Übergangsschichten (mit variabler Größe) (z. B. VFTLs, variable-sized flash transition layers) bilden konzeptuell eine Adresse von einer Abbildungseinheit (z. B. LBA[M:U] 110) auf einen Abschnitt mit variabler Größe von einem oder mehreren Flash-Seitenrahmen ab (weil beispielsweise Daten der Abbildungseinheit komprimiert werden, bevor sie in dem Flash gespeichert werden, und/oder weil in einem anderen Beispiel die Abbildungseinheiten von dem Host Teile mit variabler Größe, wie etwa für einen Objekt-Speicher (object store) geschrieben werden). Jedoch macht das Bereitstellen einer vollständigen Byte-Adresse 204 und Byte-Datenlänge 206 in jedem Abbildungseintrag die Abbildungseinträge groß im Vergleich zu herkömmlichen Flash-Übergangsschichten.
  • Flash-Übergangsschichten mit variabler Größe werden in einigen Festkörper-Platten (z. B. SSDs, solid-state discs) verwendet. Die Festkörper-Platten-Systeme sind allgemein ausgelegt worden für einen höher-endigen (higher-end) Client und/oder Unternehmensanwendungen (enterprise applications), bei denen Beschränkungen der Leistungsfähigkeit für zufälligen Zugriff (random access performance) ein treibender Faktor im gesamten Systemdesign sind. Um eine Flash-Übergangsschicht mit variabler Größe für eine niedrig-endige (low-end) und/oder mobile Umgebung auszulegen, können Änderungen implementiert werden, um diese für sequentielle Leistungsfähigkeit als den treibenden Faktor zu konfigurieren. Ausführungsformen der Erfindung stellen eine oder mehrere Arten der Organisation von Nutzerdaten und VFTL-Meta-Daten bereit, um weniger teure und leistungsfähigere niedrig-endige (low-end) und mobile, nicht-flüchtige Speicher-Systeme zu ermöglichen, bei denen die sequentielle Lese-Leistungsfähigkeit eine dominierende Beschränkung ist.
  • Mit Verweis auf 3 wird eine Darstellung einer Ausführungsform eines Flash-Seitenrahmens, der eine ganzzahlige Anzahl von Leseeinheiten umfasst, gezeigt. In einigen Ausführungsformen führen Flash-Übergangsschichten mit variabler Größe die Abbildung von Adressen von Abbildungseinheiten auf physikalische Adressen aus, indem eine Epage (z. B. ECC)-Adresse, die auch eine „Leseeinheit”-Adresse genannt wird, abgebildet wird, Eine Epage (oder Leseeinheit) ist die minimale Größe von Daten, die aus dem nicht-flüchtigen Speicher gelesen werden und von dem Fehlerkorrektur-Code zum Schützen des Inhalts des nicht-flüchtigen Speichers korrigiert werden kann. Das heißt, jede Leseeinheit umfasst eine Menge von Daten und entsprechende ECC-Überprüfungs-Bytes (check bytes), die diese Daten schützen. In einigen Ausführungsformen wird ein Flash-Seitenrahmen (wie etwa der Flash-Seitenrahmen 100), oder in anderen Ausführungsformen eine Gruppe von Flash-Seitenrahmen, als eine Einheit zum Zweck des Schreibens in eine ganzzahlige Anzahl von Leseeinheiten unterteilt, so wie das in 3 dargestellt ist.
  • In vielen Ausführungsformen ist es zugelassen, dass die Anzahl der Leseeinheiten pro Flash-Seitenrahmen variiert. Beispielsweise verwenden einige Abschnitte des nicht-flüchtigen Speichers einen stärkeren Fehlerkorrektur-Code als andere (indem sie mehr Bytes in dem Flash-Seitenrahmen zur Fehlerkorrektur-Codierung verwenden), und haben weniger Leseeinheiten und/oder weniger verwendbare Daten pro Daten-Einheit. In einem anderen Beispiel variiert die Anzahl der Leseeinheiten pro Flash-Seitenrahmen, wenn der nicht-flüchtige Speicher verwendet wird, weil die Programmierungs- bzw. 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 (abgenutzt) wird.
  • Gemäß einiger Ausführungsformen ist der verwendete Fehlerkorrektur-Code einer oder mehrerer der folgenden; ein Reed-Solomon(z. B. RS)-Code; eine Bose Chaudhuri Hocquenghem(z. B. BCH)-Code; ein Turbo-Code, ein Code mit Paritätsprüfung niedriger Dichte (z. B. LDPC, low-density paritycheck); ein Polar-Code; ein nicht-binärer Code; eine redundante Anordnung von Code von preiswerten/unabhängigen Scheiben (z. B. RAID code, redundant array of inexpensive/independent disks code); ein Löschungs-Code; irgendein anderer Fehlerkorrektur-Code; irgendeine Kombination der vorgenannten einschließlich Kompositionen, Zusammenhängungen und Verschachtelungen. Typische Größen von Code-Wörtern reichen von 512 Bytes (plus ECC-Bytes) bis zu 2176 Bytes (plus ECC-Bytes). Typische Anzahlen von ECC-Bytes reichen von nur einigen Bytes bis zu mehreren Hundert Bytes.
  • Mit Verweis auf 4 wird eine Darstellung von ausgewählten Einzelheiten einer Ausführungsform einer Abbildung einer logischen Blockadresse auf einen Abschnitt mit variabler Größe, der eine oder mehrere Leseeinheiten umspannt, gezeigt. In einigen Ausführungsformen bildet eine VFTL-Abbildung die Adresse einer Abbildungseinheit mit variabler Größe (z. B. komprimiert) (z. B. LBA[M:U] 110) ab auf eine Anzahl von Leseeinheiten, die in jedem Eintrag der Abbildung als eine Adresse 404 einer Leseeinheit und eine Umspannung (eine Anzahl von Leseeinheiten) 406 dargestellt ist. Die von einem der Abbildungseinträge bezeichneten Leseeinheiten sind beispielsweise in einer oder mehreren (logisch und/oder physikalisch) aufeinander folgenden Flash-Seitenrahmen und die Anzahl der Leseeinheiten überschreiten optional und/oder selektiv eine Grenze eines Flash-Seitenrahmens. Ein Eintrag der Abbildung alleine ist allgemein nicht ausreichend, um die zugeordneten Daten zu lokalisieren (weil der Eintrag nur die Leseeinheiten referenziert und nicht einen Ort der Daten innerhalb der Leseeinheiten), und es werden weitere Information (wie etwa Nachrichtenköpfe) innerhalb der referenzierten Leseeinheiten verwendet, um die zugeordneten Daten genau zu lokalisieren.
  • In einigen Ausführungsformen werden Daten in Flash-Seitenrahmen in einer Art und Weise geschrieben, die über mehrere Chips des nicht-flüchtigen Speichers gebändert (striped) ist. Das Bändern (striping) von Schreib-Daten über mehrere Chips ermöglicht in vorteilhafter Weise eine größere Schreib-Bandbreite, indem nur ein Flash-Seitenrahmen in einen gegebenen Chip einmal pro Band (strip) geschrieben wird. Ein Band von Blöcken (stripe of blocks) über mehrere Chips wird als ein Redundanzblock bezeichnet, weil in weiteren Ausführungsformen und/oder Nutzerszenarien eine RAID-artige Redundanz zu einer Redundanzblock-Basis hinzugefügt wird unter Verwendung von, beispielsweise, einem redundanten Chip. In verschiedenen Ausführungsformen sind einige Blöcke des nicht-flüchtigen Speichers defekt und werden beim Schreiben übersprungen, so dass das Bändern (striping) gelegentlich „Löcher” aufweist, in denen einer der Chips übersprungen wird (anstatt das in einen Flash-Seitenrahmen eines schlechten Blocks (bad block) geschrieben wird). In derartigen Ausführungsformen sind „sequentielle” Flash-Seitenrahmen in einer logischen Reihenfolge, die durch eine Reihenfolge bestimmt ist, in der die Flash-Seitenrahmen geschrieben sind, aufeinanderfolgend.
  • Mit Verweis auf 5 wird eine Darstellung von ausgewählten Einzelheiten einer Ausführungsform einer Leseeinheit, die Nachrichtenköpfe und Daten umfasst, gezeigt. In verschiedenen Ausführungsformen erzeugt die in der 4 dargestellte Abbildung ein Kriterium, um die Daten mit variabler Größe innerhalb der Leseeinheiten zu lokalisieren. Wie in 5 dargestellt, hat jede Leseeinheit (z. B. Leseeinheiten 500 und 510) einen Satz von Nachrichtenköpfen 501, und die Nachrichtenköpfe werden typischerweise mittels Hardware geschrieben, wenn die Daten mit variabler Größen in einer oder mehreren Leseeinheiten dicht gepackt gespeichert („tiled”) (z. B. ohne verschwendeten Platz dicht gepackt) werden. Die Nachrichtenköpfe werden interpretiert, typischerweise durch eine andere Hardware, um die Daten mit variabler Größe zu extrahieren, wenn der nicht-flüchtige Speicher gelesen wird. Daten mit variabler Größe sind durch einen entsprechenden Versatz und eine Länge in einem der Nachrichtenköpfe, die eine zusammenpassende logische Blockadresse haben, lokalisiert, und die Daten umspannen optional und/oder selektiv Leseeinheiten (wie die Daten mit variabler Größe, die durch „Daten, Beginn” und „Daten, Fortsetzung” dargestellt sind).
  • In verschiedenen Ausführungsformen werden die Nachrichtenköpfe auch als ein Teil von Recycling (z. B. Abfallsammlung) verwendet – das Einschließen der logischen Blockadresse (oder äquivalent der Adresse der Abbildungseinheit) in den Nachrichtenköpfen ermöglicht zum einen das Auffinden der Daten mit variabler Größe innerhalb einer Leseeinheit und stellt andererseits eine Möglichkeit bereit, zu bestimmen, wenn eine bestimmte der Leseeinheiten gelesen wird, ob die Daten mit variabler Größe immer noch gültig sind oder überschrieben worden sind (durch Nachschlagen der logischen Blockadresse in der Abbildung und Bestimmen, ob die Abbildung immer noch eine physikalische Adresse der bestimmten Leseeinheit referenziert oder dahingehend aktualisiert worden ist, dass sie eine andere der Leseeinheiten referenziert).
  • In einigen Ausführungsformen ist eine zweckbestimmte Hardware zum Extrahieren von Daten aus den Leseeinheiten, basierend auf den logischen Blockadressen implementiert, um mit hoher Effizienz für zufällige Auslesungen zu operieren. Die zweckbestimmte Hardware analysiert Nachrichtenköpfe innerhalb von einer oder mehreren Leseeinheiten, um den einen der Nachrichtenköpfe mit einer gegebenen logischen Blockadresse zu finden, und verwendet dann die entsprechende Länge und den Versatz, um die zugeordneten Daten mit variabler Größe zu extrahieren. Jedoch ist eine Hardware-basierende Lösung kostspielig (hinsichtlich Siliziumfläche und Leistung). Für eine niedrig-endige (low-end) und/oder mobile Umgebung, wo sequentielle Leistungsfähigkeit wichtiger als zufällige ist, werden Änderungen in der Flash-Übergangsschicht mit variabler Größe implementiert, um Siliziumfläche zu verringern, Leistung zu sparen und hohe sequentielle Durchfluss-Raten zu erzielen.
  • In einigen Ausführungsformen speichert dicht packend eine für sequentielles Lesen optimierte Flash-Übergangsschicht mit variabler Größe (z. B. SRO-VFTL, sequential read-optimized variable-size flash transition layer) Daten in Flash-Seitenrahmen (oder in einigen Ausführungsformen in einer Gruppe von Flash-Seitenrahmen, die zum Zwecke des Schreibens als eine Einheit behandelt wird) ohne irgendwelche Lücken für Nachrichtenköpfe innerhalb der Daten – alle Nachrichtenköpfe sind in einem Abschnitt des Flash-Seitenrahmens gruppiert. In weiteren Ausführungsformen werden die Nachrichtenköpfe nicht dynamisch verwendet, um auf Daten zuzugreifen (wie in einigen Flash-Übergangsschichten mit variabler Größe), sondern werden nur zum Recycling und zur Wiedererlangung [von Daten] verwendet. Stattdessen umfassen Einträge der Abbildung vollständige Information, die zum Auffinden von Daten mit variabler Größe (z. B. komprimiert) innerhalb des Flash-Seitenrahmens verwendet wird. Das Trennen von Nachrichtenköpfen und Daten in verschiedene Abschnitte des Flash-Seitenrahmens führt zu Leseeinheiten, die nur Nachrichtenköpfe umfassen, Leseeinheiten, die eine Mischung von Nachrichtenköpfen und Daten (jedoch nur eine derartige Leseeinheit pro Flash-Seitenrahmen) und Leseeinheiten, die nur Daten umfassen.
  • Während sie für sequentiellen Lesedurchsatz bei niedrigen Kosten ausgelegt ist, ist eine für sequentielles Lesen optimierte Flash-Übergangsschicht mit variabler Größe in der Lage, in anderen Metriken, wie etwa zufällige Lese-Eingabe/Ausgabe-Operationen pro Sekunde (z. B. IOPs, input/output operations per second), zufällige 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 (data tiling) mit Nachrichtenköpfen in jeder Leseeinheit eine größere Last auf einen Steuerungsprozessor.
  • Mit Verweis auf 6 wird eine Darstellung einer ersten Ausführungsform eines SRO-VFTL Flash-Seitenrahmens gezeigt. Mit Verweis auf 7 wird eine Darstellung einer zweiten Ausführungsform eines SRO-VFTL Flash-Seitenrahmens gemäß einer Ausführungsform der Erfindung gezeigt. Ein Unterschied zwischen den Ausführungsformen der 6 und der 7 ist, ob die Fortsetzungsdaten von einem vorhergehenden Flash-Seitenrahmen 640 vor oder nach den Nachrichtenköpfen ist. Verschiedene Ausführungsformen und Anordnungen von Daten innerhalb des Flash-Seitenrahmens sind denkbar.
  • Gemäß verschiedener Ausführungsformen umfasst ein Flash-Seitenrahmen ein oder mehrere der folgenden:
    • – Nachrichtenköpfe, einschließlich eines Master-Nachrichtenkopfes 610, optional und/oder selektiv einen Redundanzblock-Nachrichtenkopf 620 (z. B. ein Nachrichtenkopf, der in dem ersten Seitenrahmen eines jeden Blocks in einem Redundanzblock hinzugefügt wird), und null oder mehrere zusätzliche gepackte Nachrichtenköpfe 630. Jeder Flash-Seitenrahmen hat mindestens einen Zähler der Anzahl der folgenden Nachrichtenköpfe und einen Zeiger (pointer) dahin, wo Daten (die den Nachrichtenköpfen zugeordnet sind) in dem Flash-Seitenrahmen beginnen. In einigen Ausführungsformen können die Nachrichtenköpfe nach Bytes ausgerichtet sein, und sind jeweils nur 6 Bytes (z. B. B). 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 gepackt sind.
    • – optional und/oder selektiv Fortsetzungsdaten von einem vorausgehenden Flash-Seitenrahmen (ein Teil von Daten mit variabler Größe einer Abbildungseinheit) 640.
    • – gepackte (z. B. optional und/oder selektiv komprimierte) Daten von einer oder mehreren Abbildungseinheiten 650 zum Auffüllen des Flash-Seitenrahmens, von denen die letzten sich optional und/oder selektiv in einem nachfolgenden Flash-Seitenrahmen fortsetzen.
    • – optionale Auffüllungen (padding) am Ende des Flash-Seitenrahmens (in 650 umfasst). In verschiedenen Ausführungsformen sind die Daten Byte-weise gepackt (z. B. keine Zwischenräume), obwohl sie möglicherweise am Ende des Flash-Seitenrahmens aufgefüllt (padded) sind, wenn sie hoch komprimiert sind (z. B. zu viele Nachrichtenköpfe). Padding wird beispielsweise verwendet, falls: (i) ein letzter Abschnitt von Daten mit variabler Größe, der in dem Flash-Seitenrahmen hinzugefügt wurde, weniger nicht-benutzte Bytes hinterließ als eine Größe eines Nachrichtenkopfes (so dass ein neuer Nachrichtenkopf nicht hinzugefügt werden könnte, um einen anderen Abschnitt variabler Größe zu beginnen) und (ii) optional und/oder selektiv, eine bestimmte Anzahl von Nachrichtenköpfen pro Flash-Seitenrahmen überstiegen wird (so dass die Anzahl der in dem Flash-Seitenrahmen gespeicherten Abbildungseinheiten durch die spezifische Anzahl der Nachrichtenköpfe und nicht durch eine Größe der Daten der Abbildungseinheiten begrenzt ist).
  • In einigen Ausführungsformen ist ein Wiedererlangen und/oder Recyceln (z. B. Abfallsammlung) mit einer für sequentielles Lesen optimierten Flash-Übergangsschicht mit variabler Größe in vorteilhafter Weise dazu in der Lage, nur einen Nachrichtenkopf-Abschnitt aus jedem der Flash-Seitenrahmen zu lesen und/oder Fehler zu korrigieren und/oder zu untersuchen, und nicht jede Leseeinheit, wie in einer nicht für sequentielles Lesen optimierten Flash-Übergangsschicht mit variabler Größe. Wenn das Recyceln bestimmt, dass Daten eines Flash-Seitenrahmens neu geschrieben werden können, dann können diese Daten auch gelesen werden und können auch fehlerkorrigiert werden. In einigen Ausführungsformen wird zum Recyceln ein gesamter Flash-Seitenrahmen gelesen, jedoch wird nur der Nachrichtenkopf-Abschnitt fehlerkorrigiert, bis eine Bestimmung ausgeführt wurde, dass einige Daten in dem Flash-Seitenrahmen recycelt werden sollten.
  • In verschiedenen Ausführungsformen ist eine Anzahl von Nachrichtenköpfen pro Flash-Seitenrahmen begrenzt zum Beschränken einer Anzahl von Leseeinheiten pro Flash-Seitenrahmen, die gelesen werden können, um sicherzustellen, dass alle die Nachrichtenköpfe aus dem nicht-flüchtigen Speicher gelesen worden sind. In der Ausführungsform der 6 wird nur eine Anzahl von Leseeinheiten gelesen, die dazu ausreicht, die maximale Anzahl von Nachrichtenköpfen zu enthalten. In der Ausführungsform der 7 wird eine zusätzliche Anzahl von Leseeinheiten gelesen, um eine größte Größe von Daten, die von einem vorhergehenden Flash-Seitenrahmen übersteht, z. B. Fortsetzungsdaten 740, zu berücksichtigen. Die Ausführungsform der 7 ermöglicht jedoch, dass eine Anzahl von Leseeinheiten auf die Daten-Vervollständigung von einem vorhergehenden Flash-Seitenrahmen, der aus dem zugeordneten Abbildungseintrag bestimmt werden soll, zugreifen können, weil die Anzahl der Bytes in dem Überlauf der Daten auf der Grundlage des entsprechenden Versatzes und der Länge des zugeordneten Abbildungseintrags, und der Anzahl der Bytes von Nutzer(Nicht-Fehlerkorrektur-Code)-Daten in dem vorhergehenden Flash-Seitenrahmen bestimmbar ist. Ferner gilt, dass die einzigen Nachrichtenköpfe vor dem Überlauf der Daten die optionalen Redundanzblock-Nachrichtenköpfe (die nur in bekannten Flash-Seitenrahmen, wie etwa dem ersten Seitenrahmen in jedem Block, vorhanden sind) und der Master-Nachrichtenkopf (der in jedem Flash-Seitenrahmen immer vorhanden ist). In der Ausführungsform der 6 wird zum Lesen des Überlaufs bzw. der Vervollständigung der Daten, ohne dass zweimal auf den nicht-flüchtigen Speicher zugegriffen werden muss, angenommen, dass die maximale Anzahl der Nachrichtenköpfe vorhanden ist (oder dass der gesamte Flash-Nachrichtenkopf gelesen wird).
  • In einigen Ausführungsformen verwendet die für sequentielles Lesen optimierte Flash-Übergangsschicht mit variabler Größe eine Einzel-Niveau-(single-level)-Abbildung mit einer Vielzahl von Abbildungseinträgen. In anderen Ausführungsformen verwendet die für sequentielles Lesen optimierte Flash-Übergangsschicht mit variabler Größe eine Mehr-Niveau-Abbildung, wie etwa eine Zwei-Niveau-Abbildung, die eine Erst-Niveau-Abbildung (z. B. FLM, first-level map) aufweist, die auf die Zwei-Niveau-Abbildung (z. B. SLM, second-level map)-Seitenrahmen zeigt, wobei jeder der Zwei-Niveau-Abbildungsseitenrahmen eine Mehrzahl von Abbildungseinträgen auf Blattebene (leave-level map entries). In weiteren Ausführungsformen haben die Mehr-Niveau-Abbildungen (multi-level map) mehr als zwei Niveaus, wie etwa drei Niveaus. In einigen Ausführungsformen und/oder Nutzerszenarien ermöglicht die Verwendung einer Mehr-Niveau-Abbildung nur einen (z. B. den in Verwendung befindlichen) Teil der Abbildung, der in einem lokalen (z. B. on-chip)-Speicher zu speichern (z. B. zu cachen) ist, was Kosten des Pflegens der Abbildung verringert. Wenn beispielsweise typische Verwendungsmuster 1 Gigabyte (z. B. GB) logischen Blockadressraums, der zu einem Zeitpunkt aktiv ist, aufweist, dann wird nur ein Teil der Abbildung, der ausreichend ist, um auf den aktiven Teil des logischen Blockadressraums zuzugreifen, für einen schnellen Zugriff lokal gespeichert, versus in dem nicht-flüchtigen Speicher gespeichert zu werden. Verweise bzw. Referenzen nach außerhalb des aktiven Bereichs des logischen Blockadressraums holen angeforderte Abschnitte von einem oder mehreren Niveaus der Mehr-Niveau-Abbildung aus dem nicht-flüchtigen Speicher, wodurch optional und/oder selektiv andere lokalgespeicherte Abschnitte der Abbildung ersetzt werden.
  • Jedem der Abbildungseinträge auf Blatt-Niveau ist eine Adresse von einer aus der Mehrzahl der Abbildungseinheiten zugeordnet bzw. entspricht dieser. Eine logische Blockadresse wird in eine Adresse einer Abbildungseinheit umgewandelt, wie etwa durch Entfernen von null oder mehr am wenigstens signifikanten Bits (z. B. LSBs, least-significant bits) der logischen Blockadresse und/oder Hinzufügen einer Konstante zu der logischen Blockadresse zum Zwecke der Ausrichtung, und die Adresse der Abbildungseinheit wird in der Abbildung nachgeschlagen, um einen entsprechenden Abbildungseintrag zu bestimmen.
  • Mit Verweis auf 8 wird eine Darstellung von Einzelheiten einer Ausführungsform von verschiedenen Arten von Nachrichtenköpfen gezeigt. In dem Beispiel der 8 sind die Nachrichtenköpfe so formatiert, dass jeder in 6 Bytes passt. Gemäß verschiedener Ausführungsformen sind die Arten der Nachrichtenköpfe eine oder mehrere der folgenden: alle von einer selben Größe; optional und/oder selektiv von verschiedenen Größen; jeder umfasst ein entsprechendes Feld, das eine Größe des Nachrichtenkopfs spezifiziert; variierend in der Größe in verschiedenen Flash-Seitenrahmen; und jede beliebige Kombination der vorgenannten.
  • Gemäß verschiedener Ausführungsformen umfassen die Nachrichtenköpfe in dem Flash-Seitenrahmen einen oder mehrere der folgenden:
    • – Daten-Nachrichtenköpfe (810), die Informationen, die einem Daten-Abschnitt mit variabler Größe zugeordnet ist, anzeigen. In einigen Ausführungsformen beginnen die einem Daten-Nachrichtenkopf zugeordneten Daten in einem selben Flash-Seitenrahmen wie der, wo der Daten-Nachrichtenkopf erscheint. In weiteren Ausführungsformen und/oder Nutzerszenarien beginnen alle zugeordneten Daten in einem nachfolgenden Flash-Seitenrahmen, wenn ein Flash-Seitenrahmen nur verbleibenden Platz für einen Daten-Nachrichtenkopf aufweist.
    • – Abbildungs-Nachrichtenköpfe, wie etwa Nachrichtenköpfe (820) für Zwei-Niveau-Abbildung (z. B. SLM). Die Nachrichtenköpfe des zweiten Niveaus umfassen einen Erst-Niveau-Abbildungs-Index (z. B. FLMI, first-level map index), um anzugeben, wie etwa für ein Recycling der Abbildung und/oder eine Wiedererlangung von Daten im zweiten Niveau, welcher Abbildungsseitenrahmen des zweiten Niveaus gespeichert wird.
    • – Log/Überprüfungspunkt (log/checkpoint)-Nachrichtenköpfe (820). Log/Überprüfungspunkt-Nachrichtenköpfe geben Daten an, die zum Recyceln, zur [Daten]-Wiedererlangung, zur Fehlerhandhabung, zum Debuggers oder bei anderen besonderen Bedingungen verwendet werden.
    • – Epoch-Nachrichtenköpfe (830) werden als Teil der Wiedererlangung von zugeordneten Daten mit entsprechender Abbildungs-/Überprüfungspunkt(map/checkpoint)-Information verwendet. Typischerweise gibt es mindestens einen Epoch-Nachrichtenkopf pro Flash-Seitenrahmen.
    • – Master-Nachrichtenköpfe (870) werden einmal pro Flash-Seitenrahmen verwendet, um Information bereitzustellen, wie etwa eine Anzahl von Nachrichtenköpfen in dem Flash-Seitenrahmen, und wo Nicht-Nachrichtenkopf-Daten innerhalb des Flash-Seitenrahmens beginnen. Verschiedene Techniken bestimmen einen Beginn von Nicht-Nachrichtenkopf-Daten, wie dies etwa in den Ausführungsformen der 6 und 7 dargestellt ist.
    • – Redundanzblock-Nachrichtenköpfe (880) werden in bestimmten Flash-Seitenrahmen verwendet, wie etwa dem ersten Flash-Seitenrahmen in jedem Block eines Redundanzblocks.
    • – Andere Arten von Nachrichtenköpfen (840), wie etwa Auffüllungs-Nachrichtenköpfe (padding headers) und Überprüfungspunkt-Nachrichtenköpfe (checkpoint headers), die größere Längen unterstützen, usw.
  • In einigen Ausführungsformen umfassen einige Nachrichtenköpfe ein TYPE-Feld, um mehrere Unter-Arten des Nachrichtenkopfs bereitzustellen. In verschiedenen Ausführungsformen umfassen einige Header ein LEN-(Länge)-Feld, das eine Länge der dem Nachrichtenkopf zugeordneten Daten enthält. In anderen Ausführungsformen umfassen einige Nachrichtenköpfe ein OFFSET(Versatz)-Feld (nicht gezeigt), das einen Versatz (innerhalb des Flash-Seitenrahmens) zum Ende der dem Nachrichtenkopf zugeordneten Daten enthält. (Wenn das letzte eine von Datenabschnitten mit variabler Größe einen Flash-Seitenrahmen umspannt, ist OFFSET ein Versatz innerhalb eines nachfolgenden Flash-Seitenrahmens oder eine Anzahl von Bytes innerhalb des nachfolgenden Flash-Seitenrahmens.) Allgemein ist nur eines aus einem LEN-Feld oder einem OFFSET-Feld implementiert, weil für Datenabschnitte mit variabler Größe, die ohne verschwendeten Platz gespeichert sind, der Start-Ort und End-Ort von jedem der Datenabschnitte mit variabler Größe in einem Flash-Seitenrahmen durch den Start-Ort des ersten Abschnitts von Daten mit variabler Größe in dem Flash-Seitenrahmen (z. B. unmittelbar nach den Nachrichtenköpfen wie in 7) und die Liste der LEN- oder OFFSET-Felder impliziert ist.
  • Mit Verweis auf 9 wird eine Darstellung von ausgewählten Einzelheiten einer Ausführungsform eines Abbildungseintrags 900 gezeigt. Gemäß verschiedener Ausführungsformen umfassen die Einträge der Abbildung eine oder mehrere der folgenden:
    • – Eine physikalische Flash-Seitenrahmen-Adresse,
    • – einen Versatz (offset) innerhalb des Flash-Seitenrahmens zu einem Datenobjekt mit variabler Größe,
    • – eine Länge des Datenobjekts mit variabler Größe und
    • – andere Steuerungsinformation.
  • In einigen Ausführungsformen ist die Länge beispielsweise dadurch codiert, dass sie so versetzt ist, dass ein Wert von null einer spezifizierten minimalen Länge entspricht. In weiteren Ausführungsformen werden die Daten, die auf weniger als die spezifizierte minimale Länge komprimiert sind, aufgefüllt (padded), so dass ihre Größe mindestens die spezifizierte minimale Länge ist.
  • In verschiedenen Ausführungsformen sind die SRO-VFTL Abbildungseinträge größer als VFT Abbildungseinträge, weil die SRO-VFTL Abbildungseinträge eine vollständige Versatz- und Byte-Länge der entsprechenden Daten speichern. Folglich kann eine Verringerung einer Größe der Abbildungseinträge vorteilhaft sein, wenn diese in dem nicht-flüchtigen Speicher gespeichert werden. In einer typischen Verwendung werden Daten häufig sequentiell gelesen und geschrieben, zumindest mit derselben Granularität und/oder mittleren Anzahl von aufeinanderfolgenden Abbildungseinheiten, die größer als eins ist, und ein Kompressionsformat für Abbildungseinträge, das Vorteile der aufeinanderfolgenden Natur des Schreibens ausnutzt, sind relativ unaufwändig zu implementieren und erzeugen eine hohe Abbildungskompressionsrate. Die Kompression von Abbildungseinträgen wird ferner durch sequentiell geschriebene Daten begünstigt, die in selbe Flash-Seitenrahmen gehen, bis eine Grenze eines Flash-Seitenrahmens überschritten wird.
  • Mit Verweis auf 10 wird eine Darstellung von ausgewählten Einzelheiten einer Ausführungsform von verschiedenen komprimierten Abbildungseinträgen gezeigt. Die verschiedenen Abbildungseinträge umfassen nicht-komprimierte (1010); solche, die eine selbe Flash-Seitenrahmen-Adresse haben wie ein vorhergehender Abbildungseintrag (1020); solche die einen selben Flash-Seitenrahmen-Adresse haben wie der vorhergehende Abbildungseintrag und die bei einem Versatz beginnen, wo die vorhergehenden Daten endeten (1030); und solche, die eine selbe Flash-Seitenrahmen-Adresse haben wie der vorhergehende Abbildungseintrag und die bei einem Versatz beginnen, wo die vorhergehenden Daten endeten und die ein selbe Länge wie der vorhergehende Abbildungseintrag haben (1040).
  • In einigen Ausführungsformen, die eine Mehr-Ebenen-Abbildung (multi-level map) haben, wird ein Cache von Abbildungsseitenrahmen von niedrigerem Niveau (wie etwa dem untersten Niveau (leaf-level)) gepflegt. Die gecachten Abbildungsseitenrahmen sind in einer nicht-komprimierten Form, was einen schnellen Zugriff durch den Prozessor bereitstellt. Wenn Abbildungsseitenrahmen verschoben werden (wie etwa von einem nicht-flüchtigen Speicher oder einem dynamischen Direktzugriffsspeicher (z. B. DRAM, dynamic random access memory) in den Cache, dann sind die Abbildungsseitenrahmen nicht komprimiert. Wenn die Abbildungsseitenrahmen aus dem Cache geflasht werden (wie etwa aufgrund dessen, dass sie verändert worden sind), sind die Abbildungsseitenrahmen zum Speichern (wie etwa in dem nicht-flüchtigen Speicher) komprimiert. In verschiedenen Ausführungsformen, in denen ein DRAM verwendet wird, um eine Latenzzeit zu verringern, indem einige oder alle der Abbildungsseitenrahmen in den dynamischen Direktzugriffsspeicher gespeichert werden, werden die Abbildungsseitenrahmen in dem dynamischen Direktzugriffsspeicher gemäß einer oder mehreren der folgenden gespeichert: komprimierte Form; nicht-komprimierte Form; eine selektiv komprimierte oder nicht-komprimierte Form; und mit einer Indirektions-Tabelle, die verwendet wird, um auf die komprimierten Versionen der Abbildungsseitenrahmen in dem dynamischen Direktzugriffsspeicher zuzugreifen.
  • In einigen Ausführungsformen werden Host-Schreib-Daten eines Host-Schreib-Befehls optional und/oder selektiv komprimiert, wenn die Host-Schreib-Daten eintreffen, und in einer First-in-First-out(z. B. FIFO)-artigen Weise in einem lokalen (wie etwa einem On-Chip) Speicher gespeichert. In einigen Ausführungsformen werden beispielsweise die Host-Schreib-Daten in einem vereinheitlichten Puffer (z. B. UBUF, unified buffer, siehe 12) gespeichert, zusammen mit Firmware-Datenstrukturen, Flash-Statistiken, Teilen der Abbildung, wie etwa ein Cache, der eine oder mehrere Seitenrahmen der Abbildung enthält, Lesedaten aus dem nicht-flüchtigen Speicher, einschließlich Recycling-Lesedaten, Nachrichtenköpfe von Daten, die in dem nicht-flüchtigen Speicher geschrieben werden sollen, Firmware-Code, und andere Verwendungen. In anderen Ausführungsformen werden ein oder mehrere zweckbestimmte Speicher gemäß verschiedener lokaler Speicherkriterien des Festkörper-Laufwerks verwendet.
  • Mit jeder Abbildungseinheit von Daten, die aus dem Host eintrifft, wird ein Steuerungsprozessor des Festkörper-Laufwerks (z. B. central processing unit, CPU, in 12) hinsichtlich eines oder mehreren der folgenden benachrichtigt: eine entsprechende Adresse einer Abbildungseinheit, eine entsprechende Adresse eines lokalen Speichers und/oder eine entsprechende Länge von jeder Abbildungseinheit von Host-Daten mit variabler Größe (z. B. komprimiert). Der Steuerungsprozessor ist dazu ausgelegt, eine Reihenfolge des Schreibens von Flash-Seitenrahmen und eine Gesamtzahl von Nicht-ECC-Bytes, die in jedem der Flash-Seitenrahmen verfügbar sind, zu bestimmen. Entsprechend der Gesamtzahl der in einem vorgegebenen einen der Flash-Seitenrahmen verfügbaren Nicht-ECC-Bytes ist der Steuerungsprozessor in der Lage, eine Menge von Nachrichtenköpfen und eine Menge von in dem vorgegebenen Flash-Seitenrahmen angeordneten Daten zu bestimmen. Beispielsweise akkumuliert der Steuerungsprozessor Nachrichtenköpfe für den gegebenen Flash-Seitenrahmen (und verfolgt eine Anzahl der Bytes der bisher verwendeten Nachrichtenköpfe) und fügt Daten der Abbildungseinheiten mit variabler Größe und Nachrichtenköpfe zu dem gegebenen Flash-Seitenrahmen jeweils einen nach dem anderen hinzu, bis der gegebene Flash-Seitenrahmen voll ist. Wenn der gegebene Flash-Seitenrahmen voll ist, passt möglicherweise ein letzter Abschnitt der Daten des letzten einen der Abbildungseinheiten, die in dem gegebenen Flash-Seitenrahmen hinzugefügt worden sind, nicht in den gegebenen Flash-Seitenrahmen und wird als ein Daten-Vervollständigungsabschnitt von einem nachfolgenden Flash-Seitenrahmen verwendet, was die Gesamtzahl von Nicht-ECC-Bytes, die in dem nachfolgenden Flash-Seitenrahmen für neue Daten-Köpfe und Daten verfügbar sind, verringert.
  • Zu einem bestimmten Zeitpunkt sind ein oder mehrere Flash-Seitenrahmen dazu ausgelegt, mit Host-Schreib-Daten gefüllt zu werden, und eine oder mehrere Flash-Seitenrahmen sind dazu ausgelegt, mit recycelten Daten gefüllt zu werden. Beispielsweise können mindestens zwei Bänder (z. B. FIFO-artige Serien von Redundanzblöcken) gefüllt werden, ein Band mit „heißen” Daten (z. B. frisch vom Host) und das andere Band mit „kalten” (z. B. recycelten) Daten. In Fortsetzung des Beispiels und in verschiedenen Ausführungsformen sind die Host-Schreib-Daten dazu ausgelegt, direkt entweder in das heiße oder das kalte Band gerichtet zu werden, und die recycelten Daten sind dazu ausgelegt, entweder in das heiße oder kalte Band gelenkt zu werden.
  • Der Steuerungsprozessor ist dazu ausgelegt, die Serie der entsprechenden Adressen von Abbildungseinheiten, Adressen von lokalen Speichern und Längen in eines oder mehrere der folgenden umzuwandeln; eine Serie von Nachrichtenköpfen, die in einem Flash-Seitenrahmen als ein Nachrichtenkopf-Abschnitt des Flash-Seitenrahmens geschrieben werden sollen; eine erste Beginn-Adresse und eine erste Länge eines sequentiellen Abschnitts des lokalen Speichers, der in einen Flash-Seitenrahmen als ein Nutzerdaten-Abschnitt des Flash-Seitenrahmens geschrieben werden soll, wobei der Nutzerdaten-Abschnitt des Flash-Seitenrahmens mindestens einen Abschnitt von Daten von mindestens einer Abbildungseinheit umfasst; eine zweite Beginn-Adresse und eine zweite Länge eines sequentiellen Abschnitts des lokalen Speichers, der in einem nachfolgenden Flash-Seitenrahmen als ein Nutzerdaten-Vervollständigungsabschnitt des nachfolgenden Flash-Seitenrahmens in einen nachfolgenden Flash-Seitenrahmen geschrieben werden soll, wobei der Nutzerdaten-Vervollständigungsabschnitt einen Abschnitt von Daten von einer Abbildungseinheit umfasst oder leer ist; eine Anzahl von null oder mehr Padding-Bytes, die in den Flash-Seitenrahmen geschrieben werden sollen, wobei die Padding-Bytes beispielsweise verwendet werden, wenn der Nutzerdaten-Vervollständigungsabschnitt leer ist und der Flash-Seitenrahmen nicht voll ist. In vorteilhafter Weise ist der Steuerungsprozessor dazu ausgelegt, die Serien der entsprechenden Adressen von Abbildungseinheiten, Lokal-Speicher-Adressen und -Längen in die Serie von Nachrichtenköpfen einfach dadurch umzuwandeln, dass sie neu formatiert werden, und eine kleine Anzahl von Direkt-Speicherzugriffs(z. B. DMA, direct memory access)-Befehlen zu erzeugen, um die Abschnitte, die den Flash-Seitenrahmen (die Serie der Nachrichtenköpfe, ein Vervollständigungsabschnitt von einem vorhergehenden Flash-Seitenrahmen, der Nutzerdaten-Abschnitt und jegliche Padding-Bytes) umfassen, in den nicht-flüchtigen Speicher zu übertragen.
  • In verschiedenen Ausführungsformen ist das Komprimieren der Host-Schreib-Daten optional und/oder selektiv ermöglicht. In einem ersten Beispiel ermöglicht Information des Host-Schreib-Befehls selektiv eine Kompression. In einem zweiten Beispiel ist eine Kompression selektiv als eine Funktion einer logischen Blockadresse des Host-Schreib-Befehls ermöglicht. In einem dritten Beispiel ist eine Kompression selektiv deaktiviert, wenn eine Kompression der Host-Schreib-Daten eine Größe der Host-Schreib-Daten nicht verringert. Wenn eine Kompression nicht ermöglicht ist, werden die Host-Schreib-Daten nicht-komprimiert gespeichert. Gemäß verschiedener Ausführungsformen zeigen Einträge der Abbildung, ob die entsprechenden Daten komprimiert oder nicht-komprimiert 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 Abbildungseinheiten 4 KB sind, zeigt eine Länge von 4 KB in einem Abbildungseintrag an, dass die zugeordneten Daten des Abbildungseintrags nicht-komprimiert sind, wohingegen eine Länge von weniger als 4 KB anzeigt, dass die zugeordneten Daten komprimiert sind.
  • In einigen Ausführungsformen werden Daten recycelt, indem ein zu recycelnder Redundanzblock ausgewählt wird; ein Flash-Seitenrahmen des Redundanzblocks in einer Reihenfolge gelesen wird, in der die Flash-Seitenrahmen geschrieben wurden; nur die Leseeinheiten verarbeitet werden, die Nachrichtenköpfe der Flash-Seitenrahmen enthalten; eine logische Blockadresse (oder äquivalent eine Adresse einer Abbildungseinheit) von jedem Nachrichtenkopf, der ein Nachrichtenkopf in der Abbildung ist, nachgeschlagen wird, um zu sehen, 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 einen Abschnitt eines neuen Flash-Seitenrahmens zusammenzusetzen. Der neue Flash-Seitenrahmen wird dann in den nicht-flüchtigen Speicher geschrieben, Mit Verweis auf 11 wird eine Darstellung eines Ablaufdiagramms 1100 des Lesens eines nicht-flüchtigen Speichers gezeigt. Im Gegensatz zu der nicht für sequentielles Lesen optimierten Flash-Übergangsschicht mit variabler Größe werden Nachrichtenköpfe innerhalb der Leseeinheiten (oder innerhalb der Flash-Seitenrahmen) nicht verwendet, um Lesedaten zu extrahieren. Sowohl die nicht für sequentielles Lesen optimierte Flash-Übergangsschicht mit variabler Größe als auch die für sequentielles Lesen optimierte Flash-Übergangsschicht mit variabler Größe sind in vorteilhafter Weise dazu ausgelegt, auf Daten mit variabler Größe zuzugreifen, und nur auf die Leseeinheiten zuzugreifen, die die gewünschten Lesedaten enthalten.
  • In einigen Ausführungsformen sind der Steuerungsprozessor und/oder verschiedene Hardware-Einheiten dazu ausgelegt, in Antwort auf das Empfangen eines Lese-Befehls aus dem Host, der eine logische Blockadresse umfasst (Schritt 1100), einen oder mehreren der folgenden Schritte auszuführen:
    • – Umwandeln der logischen Blockadresse in eine Adresse einer Abbildungseinheit (Schritt 1114);
    • – Nachschlagen der Adresse der Abbildungseinheit in einer Abbildung, die eine Vielzahl von Abbildungseinheiten zum Bestimmen eines zugeordneten einen der Abbildungseinträge umfasst (Schritt 1118);
    • – Extrahieren einer entsprechenden Adresse eines Flash-Seitenrahmens des zugeordneten Abbildungseintrags (Schritt 1122) und Bestimmen, ob der zugeordnete Flash-Seitenrahmen in einem Flash-Seitenrahmen-Cache ist oder aus dem nicht-flüchtigen Speicher gelesen wird (Schritt 1130);
    • – Extrahieren eines entsprechenden Versatzes und einer Länge aus dem zugeordneten Abbildungseintrag und gemäß dem entsprechenden Versatz und der Länge, Bestimmen des folgenden (Schritt 1126): a. eine Anzahl einer Mehrzahl von Leseeinheiten, auf die zugegriffen werden soll, in dem zugegriffenen Flash-Seitenrahmen, b. ein Leseeinheiten-Versatz und eine Gesamtlänge der Leseeinheiten innerhalb des Flash-Seitenrahmens der zugegriffenen Leseeinheiten, und c. einen DMA-Befehl zum Extrahieren und Verarbeiten (wie etwa durch Dekomprimieren) von Daten, die der Adresse der Abbildungseinheit von decodierten Versionen der zugegriffenen Leseeinheiten zugeordnet sind;
    • – in Antwort auf eine Bestimmung, dass der zugeordnete Flash-Seitenrahmen nicht indem Flash-Seitenrahmen-Cache ist, Lesen der zugegriffenen Leseeinheiten des zugeordneten Flash-Seitenrahmens aus dem nicht-flüchtigen Speicher (Schritt 1134) und Durchführen einer Fehlerkorrektur-Decodierung auf den zugegriffenen Leseeinheiten (Schritt 1138), um korrigierte Daten zu erzeugen;
    • – Extrahieren der zugeordneten Daten innerhalb der korrigierten Daten gemäß dem entsprechenden Versatz und der Länge des zugeordneten Abbildungseintrags und Dekomprimieren der extrahierten Daten (Schritt 1142); und
    • – in Antwort auf den Lese-Befehl, Bereitstellen der dekomprimierten Daten für den Host (Schritt 1146).
  • Typischerweise ist für ein statistisches Lesen die Anzahl der Leseeinheiten, auf die in dem zugeordneten Flash-Seitenrahmen zugegriffen werden soll, um die zugeordneten Daten zu lesen, kleiner als alle Leseeinheiten in dem zugeordneten Flash-Seitenrahmen. Ferner ist, weil die zugeordneten Daten von variabler Größe sind, eine Anzahl der Leseeinheiten, auf die für einen Lese-Befehl, der eine erste logische Blockadresse referenziert, in dem zugeordneten Flash-Seitenrahmen zugegriffen werden soll, verschieden von einer Anzahl von Leseeinheiten, auf die für einen zweiten Lese-Befehl, der eine zweite logische Blockadresse referenziert, in dem zugeordneten Flash-Seitenrahmen zugegriffen werden soll, 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 zugeordneten Flash-Seitenrahmen zugegriffen werden sollen, aus dem zugeordneten Flash-Seitenrahmen gelesen. Das heißt, es werden nur diejenigen der Leseeinheiten, die einen Teil der zugeordneten Daten enthalten, gelesen, um auf die zugeordneten Daten zuzugreifen.
  • In einigen Ausführungsformen und/oder Nutzerszenarien umfasst eine bestimmte eine der Leseeinheiten mindestens einen Teil der Daten, die einer ersten logischen Blockadresse zugeordnet sind, und mindestens einen Teil der Daten, die einer zweiten logischen Blockadresse zugeordnet sind.
  • Mit Verweis auf 12 wird eine Darstellung von ausgewählten Einzelheiten einer Ausführungsform einer Steuerungseinrichtung 1200 eines Festkörper-Laufwerks gezeigt. In einigen Ausführungsformen ist die Steuerungseinrichtung 1200 des Festkörper-Laufwerks dazu ausgelegt, eine für sequentielles Lesen optimierte Flash-Übergangsschicht mit variabler Größe zu implementieren. In verschiedenen Ausführungsformen kann die Steuerungs-Einrichtung 1200 als eine oder mehrere integrierte Schaltkreise implementiert sein.
  • Wie in 12 gezeigt, empfängt eine Host-Schnittstelle (z. B. HIF, host interface) über einen Eingabe/Ausgabe-Empfänger, wie etwa einen SERDES (z. B. Serialisierer/Deserialisierer), Befehle, wie etwa Lese- und Schreib-Befehle, empfängt Schreib-Daten und sendet Lesedaten. Befehle werden über einen geteilten bzw. gemeinsam benutzten Speicher (z. B. OpRAM) an eine CPU gesendet. Die CPU interpretiert die Befehle und steuert andere Teile der SSD-Steuerungs-Einrichtung über den geteilten Speicher. Beispielsweise kommuniziert die CPU DMA-Befehle an und empfängt Antworten von verschiedenen Datenpfad-Transmissions- und Empfangs-Einheiten, wie etwa den Host-Empfangs-Datenpfad (z. B. HDRx (host receive datapath)) oder den Flash-Transmissions-Datenpfad (z. B. FDTx (flash transmit datapath)), über den gemeinsam benutzten Speicher.
  • Schreib-Daten von der Host-Schnittstelle werden über einen Host-Empfangs-Datenpfad (z. B. HDRx, host receive datapath) an einen vereinheitlichten Puffer (z. B. UBUF, unified buffer) übertragen. In verschiedenen Ausführungsformen umfasst der Host-Receive-Datenpfad Logik, um die Host-Schreib-Daten optional und/oder selektiv zu komprimieren und/oder zu verschlüsseln. Die optional und/oder selektiv komprimierten und/oder verschlüsselten Host-Schreib-Daten werden dann von dem vereinheitlichten Puffer zu dem nicht-flüchtigen Speicher über einen Flash-Transmissions-Datenpfad (z. B. FDTx, flash transmit datapath) und eine generische Flash-Schnittstelle (z. B. GAFI, generic flash interface) gesendet. In verschiedenen Ausführungsformen umfasst der Flash-Transmissions-Datenpfad Logik zum Ausführen von Verschlüsselung und/oder Geheim-Verschlüsselung (scrambling) und/oder Fehlerkorrektur-Codierung. In Antwort auf Host-Lese-Befehle werden Daten aus dem nicht-flüchtigen Speicher über die generische Flash-Schnittstelle (z. B. GAFI) gelesen und über einen Flash-Empfangs-Datenpfad (z. B. FDRx, flash receive datapath) an den vereinheitlichten Puffer gesendet. In verschiedenen Ausführungsformen beinhaltet der Flash-Empfangs-Datenpfad Fehlerkorrektur-Decodierung und/oder Entschlüsselung und/oder De-Scrambling. In anderen Ausführungsformen ist ein gesonderter Fehlerkorrektur-Decodierer (z. B. LDPC-D zum Implementieren von LDPC-Codes) dazu ausgelegt, auf „rohen” Daten, die von dem Flash-Empfangs-Datenpfad in dem vereinheitlichten Puffer gespeichert worden sind, zu arbeiten. Decodierte Lesedaten in dem vereinheitlichten Puffer werden dann über einen Host-Transmissions-Datenpfad (z. B. HDTx, host transmit datapath) an die Host-Schnittstelle gesendet. In verschiedenen Ausführungsformen umfasst der Host-Transmissions-Datenpfad Logik zum optionalen und/oder selektiven Entschlüsseln und/oder Dekomprimieren der dekodierten Lesedaten. In einigen Ausführungsformen ist eine RAID-artige und auf weichen Entscheidungen basierte (soft decision)-Verarbeitungseinheit (z. B. RASP, RAID-like and soft-decision processing unit) dazu ausgelegt, eine 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-Verarbeitungs-Operationen zur Verwendung mit dem LDPC-D auszuführen.
  • Gemäß verschiedener Ausführungsformen werden jegliche Operationen des Steuerungsprozessors, durch eine oder mehrere CPUs, durch eine oder mehrere Hardware-Einheiten, und/oder durch eine Kombination der vorgenannten ausgeführt. Zum Schreiben wird beispielsweise eine Umwandlung der Serien der entsprechenden Adressen von Abbildungseinheiten, Adressen vom lokalen Speicher und Längen in die Serien von Nachrichtenköpfen durch Hardware unterstützt, die die Serien der entsprechenden Adressen von Abbildungseinheiten, Adressen des lokalen Speichers und Längen in einem Format bereitstellt, das dasselbe wie und/oder ähnlich wie ein Format der Serie der Nachrichtenköpfe ist.
  • Gemäß verschiedener Ausführungsformen ist eine Steuerungseinrichtung für ein Festkörper-Laufwerk, die mit einem nichtflüchtigen Speicher gekoppelt ist, dazu ausgelegt, eine 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 Kombination der vorgenannten in verschiedenen physikalischen Bereichen des nicht-flüchtigen Speichers; irgendeine Kombination der vorgenannten in verschiedenen logischen Bereichen eines logischen Adressraums der SSD-Steuerungseinrichtung; roher physikalischer Zugriff auf den nicht-flüchtigen Speicher; und irgendeine Kombination der vorgenannten unter Steuerung eines mit der SSD-Steuerungseinrichtung gekoppelten Hosts.
  • Gemäß verschiedenen Ausführungsformen werden Host-Schreib-Daten optional verschlüsselt, bevor sie in den nicht-flüchtigen Speicher geschrieben werden, und entschlüsselt, nachdem sie aus dem nicht-flüchtigen Speicher gelesen worden sind. In weiteren Ausführungsformen findet die Verschlüsselung nachfolgend auf die Komprimierung der Host-Schreib-Daten statt, und die Entschlüsselung findet vor der Dekomprimierung der Daten, die gelesen werden, zur Rückgabe an den Host statt.
  • Während beispielhafte Ausführungsformen Festkörper-Laufwerke verwendet haben, sind die hierin beschriebenen Techniken allgemein anwendbar auf andere Eingabe/Ausgabe-Einrichtungen und/oder Daten-Speicher-Einrichtungen, wie etwa Festplatten-Laufwerke.
  • Das Folgende ist eine Sammlung von beispielhaften Ausführungsformen, einschließlich zumindest einiger explizit aufgezählter beispielhafter Kombinationen (z. B. ECs, example combinations), wobei eine zusätzliche Beschreibung einer Vielzahl von Typen von Ausführungsformen gemäß den hierin beschriebenen Konzepten bereitgestellt wird; die Beispiele sind nicht dazu gedacht, gegenseitig ausschließend, erschöpfend oder einschränkend zu sein; und die Erfindung ist nicht auf diese beispielhaften Ausführungsformen beschränkt, sondern umfasst alle möglichen Modifikationen und Variationen innerhalb des Schutzumfangs der ausgearbeiteten Patentansprüche und ihrer Äquivalente.
  • Ein Verfahren EC1 umfasst: an einer Eingabe/Ausgabe-Einrichtung und über einen Host an eine Schnittstelle der Eingabe/Ausgabe-Einrichtung, Empfangen einer Lese-Anforderung zum Lesen von Daten, die einer logischen Blockadresse der Lese-Anforderung entsprechen, aus einem nicht-flüchtigen Speicher der Eingabe/Ausgabe-Einrichtung; und in Antwort auf das Empfangen der Lese-Anforderung, Lesen eines bestimmten einen aus einer Mehrzahl von Einträgen einer Abbildung, wobei der bestimmte Abbildungseintrag, der der logischen Blockadresse der Lese-Anforderung zugeordnet ist, um eine physikalische Adresse eines bestimmten einen aus einer Mehrzahl von Seitenrahmen des nicht-flüchtigen Speichers, einen Versatz (offset) in dem bestimmten Seitenrahmen zu komprimierten Daten, die zuvor in Antwort auf ein Schreiben von Daten entsprechend der logischen Blockadresse geschrieben worden sind, und einer Länge in Bytes der komprimierten Daten zu erlangen, Umwandeln des Versatzes in dem bestimmten Seitenrahmen zu den komprimierten Daten und der Länge in Bytes der komprimierten Daten zu einer Adresse einer ersten einen aus einer Mehrzahl von Schreibeinheiten in dem bestimmten Seitenrahmen und einer Anzahl der aus dem bestimmten Seitenrahmen zu lesenden Leseeinheiten, Lesen aus dem bestimmten Seitenrahmen von lediglich der Anzahl der Leseeinheiten, Ausführen von Fehlerkorrektur-Decodierung auf jeder der Leseeinheiten, die aus dem bestimmten Seitenrahmen gelesen worden sind, um korrigierte Daten zu erhalten, Extrahieren der komprimierten Daten aus den korrigierten Daten gemäß dem Versatz in dem bestimmten Seitenrahmen zu den komprimierten Daten und der Länge in Bytes der komprimierten Daten, Dekomprimieren der komprimierten Daten, um Rückgabe-Daten zu erzeugen, und Zurückgeben der Rückgabe-Daten an den Host.
  • Ein Verfahren EC2 umfasst: an einer Eingabe/Ausgabe-Einrichtung und über einen Host zu einer Schnittstelle der Eingabe/Ausgabe-Einrichtung, Empfangen einer Lese-Anforderung zum Lesen von Daten entsprechend einer logischen Blockadresse der Daten-Anforderung aus einem nicht-flüchtigen Speicher der Eingabe/Ausgabe-Einrichtung; und in Antwort auf das Empfangen der Lese-Anforderung, Lesen eines bestimmten einen aus einer Vielzahl von Einträgen einer Abbildung, wobei die bestimmte Abbildungseinheit der Blockadresse der Lese-Anforderung zugeordnet ist, um eine physikalische Adresse von einem bestimmten einen aus einer Mehrzahl von Seitenrahmen des nicht-flüchtigen Speichers, einen Versatz in dem bestimmten Seitenrahmen zu komprimierten Daten, die zuvor in Antwort auf das Schreiben von Daten entsprechend der logischen Blockadresse gespeichert worden sind, und eine Länge in Bytes der komprimierten Daten zu erlangen, Umwandeln des Versatzes in dem bestimmten Seitenrahmen zu den komprimierten Daten und die Länge in Bytes der komprimierten Daten zu einer Adresse von einem ersten einen aus einer Mehrzahl von Leseeinheiten in dem bestimmten Seitenrahmen und eine Anzahl der Leseeinheiten, die aus dem bestimmten Seitenrahmen zu lesen sind, Lesen aus dem bestimmten Seitenrahmen von zumindest der Anzahl der Leseeinheiten und weniger als allen der Leseeinheiten in dem bestimmten Seitenrahmen, Ausführen von Fehlerkorrektur-Decodierung auf jeder der Leseeinheiten, die aus dem bestimmten Seitenrahmen gelesen worden sind, um korrigierte Daten zu erhalten, Extrahieren der komprimierten Daten aus den korrigierten Daten gemäß dem Versatz in dem bestimmten Seitenrahmen zu den komprimierten Daten und der Länge in Bytes der komprimierten Daten, Dekomprimieren der komprimierten Daten, um Rückgabe-Daten zu erzeugen, und Zurückgeben der Rückgabe-Daten an den Host.
  • Ein Verfahren EC3 gemäß EC1 oder EC2, wobei die Anzahl der zu lesenden Leseeinheiten kleiner ist als alle Leseeinheiten in dem bestimmten Seitenrahmen.
  • Ein Verfahren EC4 gemäß entweder EC1 oder EC2, das ferner umfasst: Bestimmen gemäß dem Versatz in dem bestimmten Seitenrahmen zu den komprimierten Daten und der Länge in Bytes der komprimierten Daten, kombiniert mit einer Menge von Nutzerdaten in dem bestimmten Seitenrahmen, das zumindest ein Teil der komprimierten Daten-Einheiten in einer oder mehreren Leseeinheiten von einem nachfolgenden einen der Seitenrahmen des nicht-flüchtigen Speichers ist.
  • Ein Verfahren EC5 gemäß EC4, wobei in Antwort auf das Aktualisieren der globalen redundanten Daten auf dem zweiten Verarbeitungs-Knoten, die entsprechende lokale Redundanz-Berechnungseinheit des zweiten Verarbeitungsknotens dazu in der Lage ist, zweite redundante Daten zu berechnen gemäß Daten der Aktualisierung der globalen redundanten Daten, zum Speichern von mindestens einigen der entsprechenden Scheiben des zweiten Verarbeitungsknotens.
  • Ein Verfahren EC6 gemäß EC1 oder EC2, wobei ein erster der Seitenrahmen des nicht-flüchtigen Speichers eine erste Anzahl von Leseeinheiten umfasst, ein zweiter der Seitenrahmen des nicht-flüchtigen Speichers eine zweite Anzahl von Leseeinheiten umfasst, und die erste Anzahl der Leseeinheiten verschieden von der zweiten Anzahl der Leseeinheiten ist.
  • Ein Verfahren EC7 gemäß EC1 oder EC2, wobei ein erster der Seitenrahmen des nicht-flüchtigen Speichers eine erste Menge von Nutzerdaten umfasst, ein zweiter der Seitenrahmen des nicht-flüchtigen Speichers eine zweite Menge der Nutzerdaten umfasst, und die erste Anzahl der Nutzerdaten verschieden von der zweiten Anzahl der Nutzerdaten ist.
  • Ein Verfahren EC8 gemäß EC1 oder EC2, das ferner folgendes umfasst: an der Eingabe/Ausgabe-Einrichtung und über den Host zu der Schnittstelle der Eingabe/Ausgabe-Einrichtung, Empfangen einer Schreib-Anforderung zum Schreiben der Daten entsprechend der logischen Blockadresse; in Antwort auf das Empfangen der Schreib-Anforderung, Komprimieren der Daten, die der logischen Blockadresse entsprechen, zum Ausbilden von komprimierten Schreib-Daten, die kleiner sind als die Daten, die der logischen Blockadresse entsprechen, Schreiben in den bestimmten Seitenrahmen von mindestens einem ersten Teil der komprimierten Schreib-Daten und Speichern in dem bestimmten Eintrag, der physikalischen Adresse des bestimmten Seitenrahmens, des Versatzes in dem bestimmten Seitenrahmen zu den komprimierten Schreib-Daten und der Länge in Bytes der komprimierten Schreib-Daten.
  • Ein Verfahren EC9 gemäß EC8, ferner aufweisend: in Antwort auf das Empfangen der Anforderung zum Schreiben von Daten, Schreiben in dem bestimmten Seitenrahmen von einem Nachrichtenkopf, wobei der Nachrichtenkopf zumindest einen Teil der logischen Blockadressen der Anforderung und eine Länge in Bytes der komprimierten Daten umfasst.
  • Ein Verfahren EC10 gemäß EC1 oder EC2, wobei die logische Blockadresse eine erste aus einer Mehrzahl von logischen Blockadressen ist, und mindestens eine der Leseeinheiten aus der Anzahl der Leseeinheiten zumindest einige Daten entsprechend einer anderen einen der logischen Blockadressen umfasst.
  • Ein Verfahren EC11 gemäß EC1 oder EC2, wobei zumindest eine der Leseeinheiten der Anzahl der Leseeinheiten einen oder mehrere Nachrichtenköpfe zusätzlich zu einem Teil der komprimierten Daten umfasst.
  • Ein Verfahren EC12, das folgendes aufweist: an einer Eingabe/Ausgabe-Einrichtung und über einen Host zu einer Schnittstelle der Eingabe/Ausgabe-Einrichtung, Empfangen einer Lese-Anforderung zum Lesen von Daten entsprechend einer logischen Blockadresse der Lese-Anforderung aus dem nicht-flüchtigen Speicher der Eingabe/Ausgabe-Einrichtung; und in Antwort auf das Empfangen der Lese-Anforderung, Lesen von einem bestimmten einen aus einer Mehrzahl von Einträgen einer Abbildung, wobei der bestimmte Abbildungseintrag, der der logischen Blockadresse der Lese-Anforderung zugeordnet ist, um eine physikalische Adresse von einem bestimmten einen aus einer Mehrzahl von Seitenrahmen des nicht-flüchtigen Speichers, einen Versatz in dem bestimmten Seitenrahmen zu Daten mit variabler Größe, die zuvor in Antwort auf das Schreiben von Daten entsprechend der logischen Blockadresse, geschrieben worden sind, und eine Länge in Bytes der Daten mit variabler Größe, Umwandeln des Versatzes in den bestimmten Seitenrahmen zu den Daten mit variabler Größe und der Länge in Bytes der Daten mit variabler Größe zu einer Adresse von einer ersten aus einer Mehrzahl von Leseeinheiten in dem bestimmten Seitenrahmen und eine Anzahl der aus dem bestimmten Seitenrahmen zu lesenden Leseeinheiten, Lesen aus dem bestimmten Seitenrahmen von lediglich der Anzahl der Leseeinheiten, Ausführen einer Fehlerkorrektur-Decodierung auf jeder der aus den bestimmten Seitenrahmen gelesenen Leseeinheiten, um korrigierte Daten zu erhalten, Extrahieren der Daten mit variabler Größe aus den korrigierten Daten gemäß dem Versatz in dem bestimmten Seitenrahmen zu den Daten mit variabler Größe und der Länge in Bytes der Daten mit variabler Größe, und Zurückgeben der extrahierten Daten an den Host.
  • Ein Verfahren EC13 gemäß EC1 oder EC22, das ferner folgendes aufweist; an der Eingabe/Ausgabe-Einrichtung und über den Host an eine Schnittstelle der Eingabe/Ausgabe-Einrichtung, Empfangen einer Schreib-Anforderung zum Schreiben der Daten mit variabler Größe entsprechend der logischen Blockadresse und einer Größe der Daten mit variabler Größe; in Antwort auf das Empfangen der Schreib-Anforderung, Schreiben des bestimmten Seitenrahmens von zumindest einem ersten Teil der Daten mit variabler Größe und Speichern in dem bestimmten Eintrag, der physikalischen Adresse des bestimmten Seitenrahmens, des Versatzes in dem bestimmten Seitenrahmen zu den Daten mit variabler Größe, und der Länge in Bytes der Daten mit variabler Größe, gemäß der Größe der Daten mit variabler Größe.
  • In einigen Ausführungsformen werden verschiedene Kombinationen von allen oder Teilen von Operationen, die von einer mehr-knotigen Speicher-Einrichtung (multi-node storage device) oder einem Teil oder Teilen derselben ausgeführt werden, beispielsweise eine Steuerungseinrichtung eines Festplatten-Laufwerks oder eines Festkörper-Laufwerks von einer Eingabe/Ausgabe-Einrichtung, die zur Zusammenarbeit mit einem Prozessor (wie etwa einer CPU) ausgelegt ist, eine Eingabe/Ausgabe-Steuerungseinrichtung (wie etwa ein RAID-on-Chip-Gehäuse-Chip) und Teile von einem Prozessor, Mikroprozessor, System-on-a-Chip, anwendungsspezifischen integrierten Schaltkreis, Hardware-Accelerator oder andere Schaltkreise, die alle oder Teile der vorgenannten Operationen bereitstellen, durch eine Spezifikation, die mit einer Verarbeitung durch ein Computersystem kompatibel ist, spezifiziert. Die Spezifikation ist in Übereinstimmung mit verschiedenen Beschreibungen, wie etwa Hardware-Beschreibungssprachen, Schaltkreis-Beschreibungen, Netzlisten-Beschreibungen, Masken-Beschreibungen oder Layout-Beschreibungen. Beispielhafte Beschreibungen umfassen, sind jedoch nicht beschränkt auf: Verilog, VHDL, SPICE, SPICE-Varianten, wie PSpice, IBIS, LEF, DEF, GDS-II, OASIS, oder andere Beschreibungen. In verschiedenen Ausführungsformen umfasst die Verarbeitung irgendeine beliebige Kombination aus Interpretation, Kompilation, Simulation und Synthese, um Logik und/oder Schaltkreise, die zum Einbeziehen auf einen 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 integrierter Schaltkreis mit einer Feld- oder Masken-programmierbaren Gate-Anordnung, eine Kunden-Technik mit Standard-Elementen (semi-custom technique) (wie etwa ein vollständig oder teilweise Zellen-basierender integrierter Schaltkreis), und eine vollständig Kunden-spezifische Technik (full-custom technique) (wie etwa ein integrierter Schaltkreis, der im Wesentlichen spezialisiert ist), irgendeine Kombination derselben, oder irgendeine andere Technik, die mit dem Design und/oder der Herstellung von integrierten Schaltkreisen kompatibel ist.
  • In einigen Ausführungsformen werden verschiedene Kombinationen von allen oder Teilen der Operationen, wie sie von einem Computer-lesbaren Medium, das einen darauf gespeicherten Satz von Instruktionen hat, ausgeführt durch Ausführung und/oder Interpretation von einem oder mehreren Programm-Instruktionen, durch Interpretation und/oder Kompilieren von einem oder mehreren quellen und/oder Script-Sprachen-Aussagen, oder durch Ausführen von binären Instruktionen, die durch Kompilieren, Übersetzen und/oder Interpretieren von Informationen, die in Programmier- und/oder Scripting-Sprachen-Aussagen ausgedrückt sind. Die Aussagen (statements) sind kompatibel mit einer beliebigen Standard-Programmier- oder Scripting-Sprache (wie etwa C, C++, Fortran, Pascal, Ada, Java, VBscript und Shell). Eine oder mehrere der Programm-Instruktionen, der Sprach-Aussagen oder binären Aussagen sind optional in einem oder mehreren Computer-lesbaren Speichermediumelementen gespeichert. In verschiedenen Ausführungsformen sind einige, alle oder verschiedene Teile der Programm-Instruktionen als eine oder mehrere Funktionen, Routinen, Subroutinen, In-Line-Routinen, Prozeduren, Makros oder Teilen derselben realisiert.
  • In der Beschreibung wurden einige Auswahlen lediglich zur Dienlichkeit beim Ausarbeiten des Texts und der Zeichnungen getroffen, und außer wenn es einen Hinweis auf das Gegenteil gibt, sollten die Auswahlen nicht per se so ausgelegt werden, dass sie zusätzliche Information hinsichtlich der Struktur oder der Funktionsweise der beschriebenen Ausführungsformen vermitteln. Beispiele der Auswahlen umfassen, sind jedoch nicht beschränkt auf: die bestimmte Organisation oder Belegung der Bezeichnungen, die zur Nummerierung der Figuren verwendet wurde, und die bestimmte Organisation oder Belegung der Element-Bezeichner (z. B. die Hinweise oder numerischen Bezeichner), die zum Identifizieren und Referenzieren der Merkmale und Elemente der Ausführungsformen verwendet worden sind.
  • Die Worte „umfasst” oder „umfassend” sind insbesondere dazu gedacht, als Abstraktionen ausgelegt zu werden, die logische Mengen mit einem unbeschränkten Umfang beschreiben, und sind nicht dazu gedacht, einen physikalischen Inhalt zu vermitteln, es sei denn, dass auf sie explizit das Wort „innerhalb” folgt.
  • Obwohl die vorgenannten Ausführungsformen für Zwecke der Klarheit der Beschreibung und des Verständnisses in einigen Einzelheiten beschrieben worden sind, ist die Erfindung nicht auf die bereitgestellten Einzelheiten beschränkt. Es gibt viele Ausführungsformen der Erfindung. Die offenbarten Ausführungsformen sind beispielhaft und nicht beschränkend.
  • Viele Variationen hinsichtlich der Konstruktion, der Anordnung und der Verwendung sind mit der Beschreibung möglicherweise konsistent und sind innerhalb des Schutzumfangs der Patentansprüche des erteilten Patents. Beispielsweise sind Bit-Breiten von Verbindungen und Funktionseinheiten, Taktgeschwindigkeiten und die Art der verwendeten Technologie in jedem Komponenten-Block gemäß der verschiedenen Ausführungsformen variabel Die Namen, die für Verbindungen und Logik vergeben worden sind, sind lediglich beispielhaft, und sollten nicht dahingehend ausgelegt werden, dass sie die beschriebenen Konzepte begrenzen. Die Reihenfolge und Anordnung von Ablaufdiagrammen und Flussdiagramm-Prozessen, Aktionen, und Funktions-Elementen sind gemäß verschiedener Ausführungsformen variabel Auch sind, es sei denn, dass sie spezifisch gegenteilig erwähnt ist, spezifizierte Werte-Bereiche, verwendete Maximal- und Minimal-Werte oder andere bestimmte Spezifikationen (wie etwa Technologie-Arten von Eingabe/Ausgabe-Einrichtungen und die Anzahl und Einträge oder Stufen in Registern und Puffern) lediglich diejenigen der beschriebenen Ausführungsformen, es wird erwartet, dass diese sich bei Verbesserungen und Veränderungen in der Implementierungs-Technik mit verändern, und sie sollten nicht als Beschränkungen ausgelegt werden.
  • Im Stand der Technik bekannte, funktionelle äquivalente Techniken sind anstelle der beschriebenen einsetzbar, um verschiedene Komponenten, Subsysteme, Operationen, Funktionen, Routinen, Sub-Routinen, In-Line-Routinen, Prozeduren, Makros oder Teile derselben zu implementieren. Viele funktionelle Aspekte der Ausführungsformen sind wahlweise entweder in Hardware (z. B. für allgemeine Zwecke bestimmte Schaltkreise) oder Software (z. B. über einige Arten von programmierten Steuerungseinrichtungen oder Prozessoren) in Abhängigkeit von der Ausführungsform realisierbar, in Abhängigkeit von Entwurfs-Beschränkungen und Technologie-Trends von schnellerer Verarbeitung (was die Migration von Funktionen, die zuvor in Hardware waren, in Software erleichtert) und höhere Integrationsdichte (was die Migration von Funktionen, die zuvor in Software waren, in Hardware erleichtert). Spezifische Variationen in verschiedenen Ausführungsformen umfassen, sind jedoch nicht beschränkt auf: Unterschiede in Unterteilungen; verschiedene Form-Faktoren und Konfigurationen; Verwendung verschiedener Betriebssysteme und anderer System-Software; Verwendung verschiedener Schnittstellen-Standards, Netzwerk-Protokolle oder Kommunikationsverbindungen; Verwendung verschiedener Codierungsarten; und andere Variationen, die erwartet werden können, wenn die hierin beschriebenen Konzepte in Übereinstimmung mit den besonderen Entwicklungs- und Geschäfts-Beschränkungen einer bestimmten Anwendung implementiert werden.
  • Die Ausführungsformen sind in Einzelheiten und im Umgebungs-Kontext beschrieben worden, die wohl über eine minimale Implementierung von vielen Aspekten der beschriebenen Ausführungsform hinausgehen. Fachleute werden erkennen, dass einige Ausführungsformen offenbarte Komponenten oder Merkmale auslassen können, ohne die grundlegende Zusammenarbeit unter den verbleibenden Elementen zu verändern. Viele der offenbarten Einzelheiten werden nicht verwendet, um verschiedene Aspekte der beschriebenen Ausführungsformen zu implementieren. In dem Ausmaß, wie die verbleibenden Elemente von dem Stand der Technik unterscheidbar sind, sind Komponenten und Merkmale, die ausgelassen worden sind, bezüglich der hierin beschriebenen Konzepte nicht beschränkend.
  • Alle derartigen Variationen im Design sind nicht-wesentliche Änderungen über die durch die beschriebenen Ausführungsformen vermittelten Techniken. Die hierin beschriebenen Ausführungsformen haben eine breite Anwendbarkeit für andere Rechen- und Netzwerk-Anwendungen, und sind für die bestimmte Anwendung oder Industrie der beschriebenen Ausführungsformen nicht beschränkend. Die Erfindung soll somit so ausgelegt werden, dass alle möglichen Modifikationen und Variationen, die innerhalb des Schutzumfangs der Patentansprüche des erteilten Patents enthalten sind, umfasst sind. Die von den Abbildungen der 1 bis 12 ausgeführten Funktionen können unter Verwendung von einem oder mehreren der folgenden implementiert werden: einem herkömmlichen Prozessor für allgemeine Zwecke, einem digitalen Computer, einem Mikroprozessor, einem Mikrocontroller, einem RISC(reduced instruction set computer)-Prozessor, einem CISC(complex instruction set computer)-Prozessor, einem SIMD(single instruction multiple data)-Prozessor, einem Signalprozessor, einer zentralen Verarbeitungseinheit (CPU, central processor unit), einer Arithmetik-Logik-Einheit (ALU, arithmetic logic unit), einem digitalen Video-Signal-Prozessor (VDSP, video digital signal processor) und/oder ähnlichen Rechenmaschinen, die gemäß den Lehren der Beschreibung programmiert sind, so wie das für die Fachleute in dem relevanten Fachgebiet bzw. den relevanten Fachgebieten offensichtlich ist. Geeignete Software, Firmware, Codierungen, Routinen, Instruktionen, Opcodes, Mikro-Codes und/oder Programm-Module können von befähigten Programmierern auf der Grundlage der Lehren der Offenbarung leicht ausgearbeitet werden, und werden den Fachleuten in dem technischen Gebiet bzw. den technischen Gebieten ebenfalls offensichtlich sein. Die Software wird allgemein von einem Medium oder mehreren Medien durch einen oder mehrere der Prozessoren der Maschinen-Implementierung ausgeführt.
  • Die Erfindung kann auch implementiert werden durch die Herstellung von ASICs (application specific integrated circuits), Platform-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 Gehäuse-Chips, die als Flip-Chip-Module und/oder Multi-Chip-Module oder durch Verbinden zu einem geeigneten Netzwerk von herkömmlichen Komponenten-Schaftkreisen angeordnet sind, so wie das hierin beschrieben ist, und von denen Modifikationen für den Fachmann ohne weiteres offensichtlich sind.
  • Die Erfindung kann somit auch ein Computer-Produkt umfassen, das ein Speichermedium oder -medien und/oder ein Übertragungsmedium oder -medien sein kann, das/die Instruktionen enthält/enthalten, die dazu verwendet werden können, eine Maschine so zu programmieren, dass sie einen oder mehrere Prozesse oder Verfahren gemäß der Erfindung ausführt. Die Ausführung der in dem Computer-Produkt enthaltenen Informationen durch die Maschine, zusammen mit Operationen von umgebenden Schaltkreisen, kann Eingabedaten in eine oder mehrere Dateien in dem Speichermedium und/oder ein oder mehrere Ausgabe-Signale, die für ein physikalisches Objekt oder eine Substanz, wie etwa eine Audio- und/oder visuelle Darstellung, repräsentativ sind, umwandeln. Das Speichermedium kann umfassen, ist jedoch nicht beschränkt auf: jegliche Art von Platten, einschließlich Floppy-Disk, Festplatte, magnetische Platte, 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 Instruktionen geeignet sind.
  • Die Elemente der Erfindung können einen Teil oder das Ganze von einem oder mehreren Geräten, Einheiten, Komponenten, Systemen, Maschinen und/oder Vorrichtungen ausmachen. Die Einrichtungen können umfassen, sind jedoch nicht beschränkt auf: Server, Workstations, Steuerungseinrichtungen von Speicheranordnungen, Speichersysteme, Personal-Computer, Laptop-Computer, Notebook-Computer, Hand-Computer (palm computer), Mini-Computer (personal digital assistants), tragbare elektronische Einrichtungen, Batterie-betriebene Einrichtungen, Digital-Empfänger (set-top boxes), Codierer, Decodierer, Transcodierer, Komprimierer, Dekomprimierer, Pre-Prozessoren, Post-Prozessoren, Transmitter, Receiver, Transceiver, Chiffrier-Schaltkreise, Mobiltelefone, digitale Kameras, Positionsbestimmungs- und/oder Navigations-Systeme, medizinische Ausrüstung, Warnungs-Anzeige-Einrichtungen (heads-up displays), drahtlose Geräte, Audio-Aufzeichnungs-, Audio-Speicher- und/oder Audio-Wiedergabe-Geräte, Video-Aufnahme-, Video-Speicher- und/oder Video-Wiedergabe-Geräte, Spieleplattformen, Peripheriegeräte und/oder Multichip-Module. Fachleute in dem technischen Gebiet bzw. den technischen Gebieten würden 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.
  • Die Ausdrücke „kann” und „allgemein”, wenn diese hierin zusammen mit „ist/sind” und Verben verwendet werden, sind dazu gedacht, die Absicht zu kommunizieren, dass die Beschreibung beispielhaft ist, und von diesen wird angenommen, dass sie breit genug sind, um sowohl die in dieser Offenbarung dargestellten, spezifischen Beispiele als auch alternative Beispiele, die auf der Grundlage dieser Offenbarung abgeleitet werden könnten, zu 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 implizieren.
  • Während die Erfindung insbesondere mit Verweis auf Ausführungsformen derselben gezeigt und beschrieben worden ist, so wird von Fachleuten verstanden werden, dass verschiedene Änderungen hinsichtlich der Form und Einzelheiten ausgeführt werden können, ohne vom Umfang der Erfindung abzuweichen.

Claims (20)

  1. Ein Verfahren zum Verwenden einer Flash-Übergangsschicht (flash transition layer) mit variabler Größe, das die folgenden Schritte aufweist: (A) an einer Einrichtung von bzw. aus einem Host, Empfangen einer Lese-Anforderung, um bestimmte Daten entsprechend einer logischen Blockadresse von bzw. aus einem nicht-flüchtigen Speicher der Einrichtung zu lesen, (B) Lesen von einem bestimmten aus einer Mehrzahl von Einträgen in einer Abbildung, um folgendes zu erlangen: (i) eine physikalische Adresse von einem bestimmten aus einer Mehrzahl von Seitenrahmen des nicht-flüchtigen Speichers, (ii) einen Versatz in dem bestimmten Seitenrahmen zu komprimierten Daten, die zuvor in Antwort auf ein Schreiben der komprimierten Daten gemäß der logischen Blockadresse gespeichert worden sind, und (iii) eine Länge der komprimierten Daten, wobei der bestimmte Eintrag der logischen Blockadresse zugeordnet ist, (C) Umwandeln des Versatzes und der Länge in (i) eine Adresse von einer vorgegebenen einen aus einer Mehrzahl von Leseeinheiten in dem bestimmten Seitenrahmen und (ii) eine Anzahl der aus dem bestimmten Seitenrahmen zu lesenden Leseeinheiten, und (D) Lesen aus dem bestimmten Seitenrahmen von maximal der Anzahl der Leseeinheiten beginnend die bei der gegebenen Leseeinheit, wobei eine Granularität des Versatzes und der Länge feiner als eine Größe von einer der Leseeinheiten ist.
  2. Das Verfahren gemäß Anspruch 1, das ferner die folgenden Schritte aufweist: Ausführen einer Fehlerkorrektur-Dekodierung auf jeder der Leseeinheiten, so wie aus dem bestimmten Seitenrahmen gelesen, um korrigierte Daten zu erzeugen, und Extrahieren der komprimierten Daten aus den korrigierten Daten gemäß sowohl (i) dem Versatz in dem bestimmten Seitenrahmen zu den komprimierten Daten als auch (ii) der Länge der komprimierten Daten.
  3. Das Verfahren gemäß Anspruch 2, das ferner die folgenden Schritte aufweist: Dekomprimieren der komprimierten Daten, um Rückgabe-Daten zu erzeugen, und Übertragen der Rückgabe-Daten an den Host.
  4. Das Verfahren gemäß einem der Ansprüche 1 bis 3, wobei die Anzahl der zu lesenden Leseeinheiten geringer als alle der Leseeinheiten in dem bestimmten Seitenrahmen ist.
  5. Das Verfahren gemäß einem der Ansprüche 1 bis 4, das ferner die folgenden Schritte aufweist: Bestimmen, dass zumindest ein Teil der komprimierten Daten in einer oder mehreren nachfolgenden Leseeinheiten von einem nachfolgenden einen der Seitenrahmen des nicht-flüchtigen Speichers ist, basierend auf sowohl (i) dem Versatz in dem Seitenrahmen zu den komprimierten Daten als auch (ii) der Länge der komprimierten Daten kombiniert mit einer Größe bzw. Menge von Nutzerdaten in dem bestimmten Seitenrahmen.
  6. Das Verfahren gemäß Anspruch 5, das ferner den folgenden Schritt aufweist: Lesen aus dem nachfolgenden Seitenrahmen von maximal der einen oder mehreren nachfolgenden Leseeinheiten.
  7. Das Verfahren gemäß einem der Ansprüche 1 bis 6, wobei (i) ein erster einer der Seitenrahmen des nicht-flüchtigen Speichers eine erste Anzahl der Leseeinheiten enthält, (ii) ein zweiter einer der Seitenrahmen des nichtflüchtigen Speichers eine zweite Anzahl der Leseeinheiten enthält, und (ii) die erste Anzahl verschieden von der zweiten Anzahl ist.
  8. Das Verfahren gemäß einem der Ansprüche 1 bis 7, wobei (i) ein erster einer der Seitenrahmen des nicht-flüchtigen Speichers eine erste Menge von Nutzerdaten umfasst, (ii) ein zweiter einer der Seitenrahmen des nicht-flüchtigen Speichers eine zweite Menge der Nutzerdaten umfasst, und (iii) die erste Menge verschieden von der zweiten Menge ist.
  9. Das Verfahren gemäß einem der Ansprüche 1 bis 8, das ferner die folgenden Schritte aufweist. Empfangen einer Schreib-Anforderung, um die bestimmten Daten in dem nicht-flüchtigen Speicher zu schreiben, Komprimieren der bestimmten Daten, um die komprimierten Daten, die kleiner als die bestimmten Daten sind, zu erzeugen, Schreiben von zumindest einem Teil der komprimierten Daten in den bestimmten Seitenrahmen, und Speichern in dem bestimmten Eintrag von (i) der physikalischen Adresse des bestimmten Seitenrahmens, (ii) dem Versatz in dem bestimmten Seitenrahmen zu den komprimierten Daten und (iii) der Länge der komprimierten Daten.
  10. Das Verfahren gemäß Anspruch 9, das ferner den folgenden Schritt aufweist: Schreiben von einem Nachrichtenkopf in den bestimmten Seitenrahmen, welcher Nachrichtenkopf zumindest einen Teil der logischen Blockadresse der Schreib-Anforderung und die Länge umfasst.
  11. Das Verfahren gemäß einem der Ansprüche 1 bis 10, wobei (i) die logische Blockadresse eine aus einer Mehrzahl von logischen Blockadressen ist, und (ii) mindestens eine der Leseeinheiten aus der Anzahl der Leseeinheiten zumindest einige unterschiedliche Daten, entsprechend einer verschiedenen einen der logischen Blockadressen, umfasst.
  12. Das Verfahren gemäß einem der Ansprüche 1 bis 11, wobei zumindest eine der Leseeinheiten aus der Anzahl der Leseeinheiten (i) einen oder mehrere Nachrichtenköpfe und (ii) einen Teil der komprimierten Daten umfasst.
  13. Eine Einrichtung mit folgendem: einem nicht-flüchtigen Speicher, und einem Schaltkreis, der dazu ausgelegt ist: (i) eine Lese-Anforderung von bzw. aus einem Host zu empfangen, um bestimmte Daten, die einer logischen Blockadresse aus dem nicht-flüchtigen Speicher entsprechen, zu lesen, (ii) einen bestimmten einen aus einer Mehrzahl von Einträgen in einer Abbildung zu lesen, um folgendes zu erlangen: (a) eine physikalische Adresse von einem bestimmten einen aus einer Mehrzahl von Seitenrahmen des nicht-flüchtigen Speichers, (b) einen Versatz in dem bestimmten Seitenrahmen zu komprimierten Daten, die zuvor in Antwort auf ein Schreiben der komprimierten Daten, die der logischen Blockadresse entsprechen, gespeichert worden sind, und (c) eine Länge der komprimierten Daten, wobei der bestimmte Eintrag der logischen Blockadresse zugeordnet ist, (iii) den Versatz und die Länge umzuwandeln in (a) eine Adresse von einer gegebenen einen aus einer Mehrzahl von Leseeinheiten in dem bestimmten Seitenrahmen und (b) eine Anzahl der aus dem bestimmten Seitenrahmen zu lesenden Leseeinheiten, und (iv) aus dem bestimmten Seitenrahmen maximal die Anzahl der Leseeinheiten, beginnend bei der gegebenen Leseeinheit, zu lesen, wobei eine Granularität des Versatzes und der Länge ferner als eine Größe von einer der Leseeinheiten ist.
  14. Die Einrichtung gemäß Anspruch 13, wobei der Schaltkreis ferner dazu ausgelegt ist: (i) eine Fehlerkorrektur-Dekodierung auf jeder der Leseeinheiten, so wie diese aus dem bestimmten Seitenrahmen gelesen worden sind, auszuführen, um korrigierte Daten zu erzeugen, und (ii) die komprimierten Daten aus den korrigierten Daten zu extrahieren gemäß sowohl (a) dem Versatz in dem bestimmten Seitenrahmen zu den komprimierten Daten als auch (b) der Länge der komprimierten Daten.
  15. Die Einrichtung gemäß Anspruch 14, wobei der Schaltkreis ferner dazu ausgelegt ist, (i) die komprimierten Daten zu dekomprimieren, um Rückgabe-Daten zu erzeugen, und (ii) die Rückgabe-Daten an den Host zu übertragen.
  16. Die Einrichtung gemäß einem der Ansprüche 13 is 15, wobei die Anzahl der zu lesenden Leseeinheiten niedriger als alle der Leseeinheiten in dem bestimmten Seitenrahmen ist.
  17. Die Einrichtung gemäß einem der Ansprüche 13 bis 16, wobei der Schaltkreis ferner dazu ausgelegt ist, zu bestimmen, dass mindestens ein Teil der komprimierten Daten in einer oder mehreren der nachfolgenden Leseeinheiten von einem nachfolgenden einen der Seitenrahmen des nicht-flüchtigen Speichers ist, basierend auf sowohl (i) dem Versatz in dem bestimmten Seitenrahmen zu den komprimierten Daten und (ii) der Länge der komprimierten Daten kombiniert mit einer Größe bzw. Menge von Nutzer-Daten in dem bestimmten Seitenrahmen.
  18. Die Einrichtung gemäß Anspruch 17, wobei der Schaltkreis ferner dazu ausgelegt ist, aus dem nachfolgenden Seitenrahmen maximal die eine oder mehrere nachfolgende Leseeinheiten zu lesen.
  19. Die Einrichtung gemäß einem der Ansprüche 13 bis 18, wobei (i) ein erster einer der Seitenrahmen des nicht-flüchtigen Speichers eine erste Anzahl von Leseeinheiten umfasst, (ii) ein zweiter einer der Seitenrahmen des nicht-flüchtigen Speichers eine zweite Anzahl der Leseeinheiten umfasst, und (iii) die erste Anzahl verschieden von der zweiten Anzahl ist.
  20. Die Einrichtung gemäß einem der Ansprüche 13 bis 19, wobei die Vorrichtung als ein oder mehrere integrierte Schaltkreise implementiert ist.
DE102014111668.2A 2013-08-16 2014-08-14 Flash-Übergangsschicht mit variabler Größe Withdrawn DE102014111668A1 (de)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US201361866672P 2013-08-16 2013-08-16
US61/866,672 2013-08-16
US201361888681P 2013-10-09 2013-10-09
US61/888,681 2013-10-09
US14/055,336 2013-10-16
US14/055,336 US9495288B2 (en) 2013-01-22 2013-10-16 Variable-size flash translation layer

Publications (1)

Publication Number Publication Date
DE102014111668A1 true DE102014111668A1 (de) 2015-02-19

Family

ID=52430390

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102014111668.2A Withdrawn DE102014111668A1 (de) 2013-08-16 2014-08-14 Flash-Übergangsschicht mit variabler Größe

Country Status (4)

Country Link
KR (1) KR102307382B1 (de)
CN (1) CN104375956B (de)
DE (1) DE102014111668A1 (de)
TW (1) TWI609263B (de)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106354615B (zh) * 2015-07-21 2021-06-01 北京忆恒创源科技有限公司 固态硬盘日志生成方法及其装置
US10359953B2 (en) * 2016-12-16 2019-07-23 Western Digital Technologies, Inc. Method and apparatus for offloading data processing to hybrid storage devices
US10579377B2 (en) 2017-01-19 2020-03-03 International Business Machines Corporation Guarded storage event handling during transactional execution
US10452288B2 (en) 2017-01-19 2019-10-22 International Business Machines Corporation Identifying processor attributes based on detecting a guarded storage event
US10496311B2 (en) 2017-01-19 2019-12-03 International Business Machines Corporation Run-time instrumentation of guarded storage event processing
US10725685B2 (en) * 2017-01-19 2020-07-28 International Business Machines Corporation Load logical and shift guarded instruction
US10732858B2 (en) 2017-01-19 2020-08-04 International Business Machines Corporation Loading and storing controls regulating the operation of a guarded storage facility
US10496292B2 (en) 2017-01-19 2019-12-03 International Business Machines Corporation Saving/restoring guarded storage controls in a virtualized environment
TWI633434B (zh) * 2017-07-12 2018-08-21 宏碁股份有限公司 管理固態硬碟之方法、系統及電腦可讀取媒體
CN108959491A (zh) * 2018-06-25 2018-12-07 北斗地网(重庆)科技集团有限公司 一种卫星数据的可视化显示方法、装置、设备及存储介质
CN109471594B (zh) * 2018-10-09 2020-07-10 华中科技大学 一种mlc闪存读写方法
CN111724295B (zh) * 2019-03-18 2024-05-14 芯原微电子(成都)有限公司 一种外部存储器的协同访问方法及系统、协同访问架构
CN112115067A (zh) 2019-06-21 2020-12-22 慧荣科技股份有限公司 闪存物理资源集合管理装置及方法及计算机可读取存储介质
BR112021024426A2 (pt) * 2019-07-02 2022-01-18 Microsoft Technology Licensing Llc Compressão de memória com base em hardware
TWI754206B (zh) 2020-01-10 2022-02-01 祥碩科技股份有限公司 資料儲存系統、資料儲存裝置及其管理方法
CN114327272A (zh) * 2021-12-28 2022-04-12 深圳大普微电子科技有限公司 一种数据处理方法、固态硬盘控制器及固态硬盘
CN115629720B (zh) * 2022-12-20 2023-07-28 鹏钛存储技术(南京)有限公司 基于闪存为介质的存储设备上的非对称条带化方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6523104B2 (en) * 2001-07-13 2003-02-18 Mips Technologies, Inc. Mechanism for programmable modification of memory mapping granularity
US7469331B2 (en) * 2004-07-22 2008-12-23 International Business Machines Corporation Method and apparatus for supporting shared library text replication across a fork system call
KR20050107369A (ko) * 2005-10-27 2005-11-11 서운식 모바일 기기를 위한 코드 직접 수행기능을 갖는 대용량저장장치 및 제어 방법
TW200823923A (en) * 2006-11-23 2008-06-01 Genesys Logic Inc Caching method for address translation layer of flash memory
US8533564B2 (en) * 2009-12-23 2013-09-10 Sandisk Technologies Inc. System and method of error correction of control data at a memory device
US8949513B2 (en) * 2011-05-10 2015-02-03 Marvell World Trade Ltd. Data compression and compacting for memory devices
CN102567132B (zh) * 2011-12-30 2014-12-03 记忆科技(深圳)有限公司 端对端芯片数据通路保护装置及其方法

Also Published As

Publication number Publication date
CN104375956A (zh) 2015-02-25
TW201523249A (zh) 2015-06-16
TWI609263B (zh) 2017-12-21
KR102307382B1 (ko) 2021-09-29
CN104375956B (zh) 2017-11-14
KR20150020137A (ko) 2015-02-25

Similar Documents

Publication Publication Date Title
DE102014111668A1 (de) Flash-Übergangsschicht mit variabler Größe
US10346312B2 (en) Variable-size flash translation layer
DE102014111670A1 (de) Eine zwischen einem Host und einer Steuereinrichtung partitionierte Übergangsschicht
US9329991B2 (en) Translation layer partitioned between host and controller
US9971547B2 (en) Storage system with application to NVM address, span, and length
US9213633B2 (en) Flash translation layer with lower write amplification
US9886383B2 (en) Self-journaling and hierarchical consistency for non-volatile storage
DE102012216034B4 (de) Direkte Speicheradressierung für Solid-State-Laufwerke
US20140351526A1 (en) Data storage controller with multiple pipelines
DE112015000378T5 (de) Selektives Rückkopieren für einen auf einem Chipplättchen gepufferten nichtflüchtigen Speicher
DE112016000726T5 (de) Transparente hardwareunterstützte speicherdekompression
CN110795272B (zh) 用于在可变大小的i/o上促进的原子性和延迟保证的方法和系统
US10048867B2 (en) Method to shorten hash chains in lempel-ziv compression of data with repetitive symbols
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
US11200159B2 (en) System and method for facilitating efficient utilization of NAND flash memory
DE112020004591T5 (de) L2P-Übersetzungstechniken in begrenzten RAM-Systemen
US11176033B2 (en) Data storage devices and data processing methods
GB2519629A (en) Variable-size flash translation layer
US9396104B1 (en) Accessing compressed data of varying-sized quanta in non-volatile memory
CN114203250B (zh) 固态存储器的数据存储方法、数据读取方法及固态存储器
DE112021006882T5 (de) Ähnlichkeitsdeduplizierung
US11461173B1 (en) Method and system for facilitating efficient data compression based on error correction code and reorganization of data placement
US20230176734A1 (en) Adaptive mapping for transparent block device level compression
CN117519572A (zh) 数据存储方法、装置、处理设备、存储系统和存储介质
DE102022210344A1 (de) Vorrichtung und verfahren zum verbessern der dateneingabe-/-ausgabeleistung eines speichers

Legal Events

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