DE112010003887B4 - Datenverwaltung in Halbleiter-Speichereinheiten - Google Patents

Datenverwaltung in Halbleiter-Speichereinheiten Download PDF

Info

Publication number
DE112010003887B4
DE112010003887B4 DE112010003887.2T DE112010003887T DE112010003887B4 DE 112010003887 B4 DE112010003887 B4 DE 112010003887B4 DE 112010003887 T DE112010003887 T DE 112010003887T DE 112010003887 B4 DE112010003887 B4 DE 112010003887B4
Authority
DE
Germany
Prior art keywords
data
memory
group
input data
write
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.)
Active
Application number
DE112010003887.2T
Other languages
English (en)
Other versions
DE112010003887T5 (de
Inventor
Roy D. Cideciyan
Evangelos S. Eleftheriou
Robert Haas
Xiao-Yu Hu
Ilias Iliadis
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE112010003887T5 publication Critical patent/DE112010003887T5/de
Application granted granted Critical
Publication of DE112010003887B4 publication Critical patent/DE112010003887B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • 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
    • 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
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

Steuervorrichtung (7) für eine Halbleiter-Speichereinheit (5), in welcher der Halbleiterspeicher (6) löschbare Blöcke umfasst, von denen jeder eine Vielzahl von Datenschreib-Speicherstellen umfasst, wobei die Steuervorrichtung (7) einen Speicher (13) und Steuerlogik (10) umfasst, die gestaltet sind, um:
Eingabedaten in aufeinanderfolgenden Gruppen von Datenschreib-Speicherstellen zu speichern, die auf eine Vielzahl von logischen Teilbereichen des Halbleiterspeichers (6) verteilt sind, wobei jede Gruppe in jedem logischen Teilbereich eine oder mehrere Schreib-Speicherstellen umfasst, und zwar in einem Satz von einem oder mehreren löschbaren Blöcken in jedem Teilbereich;
die Eingabedaten so für eine Fehlerkorrektur zu codieren, dass eine jede Gruppe einen Fehlerkorrektur-Code für die Eingabedaten in der Gruppe enthält;
in dem Speicher (13) Metadaten zu verwalten, welche die Speicherstelle von Eingabedaten in dem Halbleiterspeicher (6) angeben;
eine Angabe für die Gültigkeit von Daten zu verwalten, die in einer jeden Datenschreib-Speicherstelle gespeichert sind; und
für den Fall, dass eine Datenschreib-Speicherstelle einer Gruppe von Datenschreib-Speicherstellen einen Fehler enthält, vor dem Löschen des Blocks gültige Eingabedaten unter Verwendung des Fehlerkorrektur-Codes aus der oder aus jeder Gruppe wiederherzustellen, die Schreib-Speicherstellen in dem Block enthält, und die wiederhergestellten Daten als neue Eingabedaten neu zu speichern.

Description

  • Diese Erfindung bezieht sich im Allgemeinen auf eine Datenverwaltung in Halbleiter-Speichereinheiten (Solid State Storage Devices, SSDs) und insbesondere auf Verfahren und Vorrichtungen für das Steuern von Datenspeicher- und Datenlösch-Vorgängen in SSDs.
  • Ein Halbleiterspeicher ist ein nichtflüchtiger Speicher, der anstelle von herkömmlichen magnetischen oder optischen Medien wie Festplatten und Bändern eine elektronische Schaltung, in der Regel in integrierten Schaltungen, verwendet, um Daten zu speichern. SSDs wie z.B. Flash-Speichereinheiten verändern derzeit von Grund auf die Datenspeicherlandschaft. Aufgrund des Fehlens von beweglichen Teilen sind diese Einheiten robuster als herkömmliche Speichereinheiten und bieten eine außergewöhnliche Bandbreite, bedeutende Einsparungen beim Stromverbrauch und eine Leistung bei zufällig verteilten Datenzugriffen, die um Größenordnungen besser ist als diejenige von Festplattenlaufwerken.
  • Bei SSDs ist der Speicher in Speicherbereiche oder „Blöcke“ gegliedert, die jeweils einen Satz von Speicherstellen beinhalten, in die Daten geschrieben werden können. Im Folgenden werden verschiedene Betriebsmerkmale von SSDs beschrieben, wobei besonderer Bezug auf Flash-Speichereinheiten auf der Grundlage von NAND-Gattern genommen wird. Der Fachmann weiß jedoch, dass ähnliche Grundsätze auch auf andere SSD-Arten zutreffen. Ein Flash-Speicher ist z.B. in Speicherblöcke gegliedert, die Datenschreib-Speicherstellen beinhalten, die als „Seiten“ bekannt sind. Eine typische Flash-Seite hat eine Größe von 4 KB, und ein typischer Flash-Block besteht aus 64 Flash-Seiten (d.h. 256 KB). Lese- und Schreibvorgänge können auf der Grundlage von Seiten durchgeführt werden, während Löschvorgänge nur auf Blockbasis erfolgen können. Daten können nur in einen Flash-Block geschrieben werden, nachdem er erfolgreich gelöscht wurde. Üblicherweise dauert es 15 bis 25 µs, um eine Seite aus Flash-Zellen in einen Datenpufferspeicher auf einem Flash-Halbleiterplättchen (die) auszulesen. Das Schreiben einer Seite in Flash-Zellen dauert ca. 200 µs, während das Löschen eines Flash-Blocks in der Regel rund 2 ms in Anspruch nimmt. Da das Löschen eines Blocks sehr viel länger dauert als das Lesen oder Schreiben, wird ein Schreibschema, das als „write-out-of-place“ (externes Schreiben) bekannt ist, verwendet, um den Schreibdurchsatz und die Reaktionszeit zu verbessern. Bei diesem Schema wird eine gespeicherte Datenseite nicht direkt in dem Flash-Speicher aktualisiert. Vielmehr wird die aktualisierte Seite in eine andere freie Flash-Seite geschrieben, und die zugehörige bisherige Flash-Seite wird als ungültig gekennzeichnet, indem eine Gültigkeitsmarkierung in den Metadaten gesetzt wird, die als Bestandteil einer jeden Seite gespeichert werden.
  • Das Write-out-of-place-Schema sowie andere Flash-Speichermerkmale erfordern bestimmte „Organisationsvorgänge“, die für eine interne Verwaltung des Flash-Speichers durchgeführt werden müssen. Wenn z.B. Seiten aktualisiert und bisherige Seiten ungültig gemacht werden, ist ein Folgeprozess erforderlich, um ungültige Daten zu entfernen und Speicherstellen für neue Eingabedaten freizugeben. Dieser interne Verwaltungsprozess ist allgemein als „Speicherbereinigung“ bekannt. Der Speicherbereinigungsprozess beinhaltet das Auswählen eines belegten Flash-Blocks und das Wiederherstellen aller noch gültigen Daten aus diesem Block. Die gültigen Datenseiten werden an eine andere Stelle in dem Flash-Speicher kopiert, und der Block wird dann gelöscht. Blöcke werden üblicherweise ausgehend von der Anzahl der darin enthaltenen ungültigen Seiten für eine Speicherbereinigung ausgewählt. Speicherbereinigung und Blocklöschungen können jedoch auch im Rahmen anderer interner Verwaltungsprozesse stattfinden, zu denen faktisch auch das Verschieben von Daten innerhalb des Halbleiterspeichers gehört. Das Ausgleichen der nachlassenden Leistungsfähigkeit ist ein Beispiel für einen derartigen internen Verwaltungsprozess. Dieser Prozess bezieht sich auf die Merkmale der nachlassenden Leistungsfähigkeit eines Flash-Speichers. Insbesondere ist die Anzahl von Schreib-Lösch-Zyklen bei einem Flash-Speicher begrenzt, bevor die Funktionsfähigkeit des Speichers sich zu verschlechtern beginnt. Verfahren für das Ausgleichen der nachlassenden Leistungsfähigkeit versuchen, Lese-Lösch-Zyklen gleichmäßig auf alle verfügbaren Flash-Blöcke zu verteilen, um ein ungleichmäßiges Nachlassen der Leistungsfähigkeit zu vermeiden und damit die Lebensdauer insgesamt zu verlängern. Insbesondere steuert die Funktionalität für das Ausgleichen der nachlassenden Leistungsfähigkeit das Auswählen von Blöcken, in die neue Daten geschrieben werden sollten, gemäß Schreib-Lese-Zykluszählwerten, sowie das Verschieben gespeicherter Daten innerhalb des Flash-Speichers, um so Blöcke mit niedrigen Zykluszählwerten freizugeben und ein gleichmäßiges Nachlassen der Leistungsfähigkeit zu erreichen.
  • Datenplatzierungs- und interne Verwaltungsvorgänge werden üblicherweise durch eine eigens hierfür vorgesehene, als Flash-Steuereinheit bekannte Steuereinheit durchgeführt, die mit dem Flash-Speicher einhergeht. Die Flash-Steuereinheit verwaltet allgemein Daten in dem Flash-Speicher, indem sie alle internen Verwaltungsvorgänge steuert, und sie verwaltet Adress-Metadaten in dem Steuereinheits-Speicher, um die Speicherstelle von Daten in dem Flash-Speicher zu erfassen.
  • Insbesondere führt die Flash-Steuereinheit eine zwischengeschaltete Software-Ebene aus, die als „LBA-PBA (Logical Block Address - Physical Block Address)-Zuordnung“ (auch als „Flash-Übersetzungsebene (Flash Translation Layer, FTL)“ bezeichnet) oder „LPN-FPN (Logical Page Number - Flash Page Number)-Adresszuordnung“ bezeichnet wird. Sie verwaltet Metadaten in Form einer Adresszuordnung, welche die logischen, den Eingabedatenblöcken von oberen Ebenen zugehörigen Adressen z.B. einem Dateisystem oder Host in einem Speichersystem, auf physische Adressen (Flash-Seitenzahlen) in dem Flash-Speicher abbildet. Diese Software-Ebene verbirgt die „Erase-before-write“-Komplexität von Flash-Speichern und unterstützt transparente Datenschreib- und Datenaktualisierungsvorgänge, ohne dass Löschvorgänge zwischengeschaltet werden müssen.
  • Die in SSDs durchgeführten internen Verwaltungsfunktionen führen zur so genannten „Write Amplification“ (Schreib-Vervielfachung). Sie entsteht, weil Daten intern in dem Speicher verschoben werden, so dass sich die Gesamtzahl der Datenschreibvorgänge im Vergleich zur Ausgangszahl der Datenschreibanforderungen, die von der SSD empfangen wurden, vervielfacht. Die Schreib-Vervielfachung ist eines der größten Probleme, das die Zufalls-Schreibleistung und die Schreibbeständigkeits-Lebensspanne von Halbleiter-Speichereinheiten begrenzt. Ein weiteres Schlüsselproblem ist die Fehlerleistung. Eine Fehlerkorrektur-Codierung in SSDs erfolgt durch Hinzufügen von Redundanz auf Ebene der Schreibeinheit. Konkret wird für die Eingabedaten, die in jede Seite geschrieben werden, ein Fehlerkorrektur-Code berechnet, und dieser Fehlerkorrektur-Code wird zusammen mit den Eingabedaten in der Seite bzw. in dem Sektor aufgezeichnet. Diese Codierung ermöglicht bei Fehlern innerhalb einzelner Datenseiten eine Wiederherstellung. Allerdings können Halbleiter-Speichersysteme als Schutz gegen Ausfälle auf der Einheitenebene eine zusätzliche Fehlerkorrektur-Codierung verwenden. Diese Codierung erfolgt, indem eine Sammlung von Einheiten nach Art einer RAID- (Redundant Array of Independent Devices) Anordnung verwaltet wird, wie sie für gewöhnlich bei Festplatten-Speichersystemen zum Einsatz kommt. SSD-Systeme, die einen RAID-ähnlichen Schutz verwenden, werden in der US-Patentanmeldung mit der Nummer US 2008/0320214A1 sowie in „SSD Controllers by Start-Up Sandforce“, http://www.storagenewsletter.com/news/flash/sandforce-ssdcontrollers, erörtert. Bei einem Szenario kann ein Speichersystem mehrere SSDs verwenden, die jeweils wie oben beschrieben mit einer Steuereinheit betrieben werden, die ihren eigenen lokalen Speicher verwaltet. Die Sammlung von SSDs kann dann auf einer höheren Ebene wie z.B. einer RAID-Anordnung verwaltet werden. Die grundlegenden Funktionsprinzipien eines derartigen Systems werden im Folgenden mit Blick auf 1 der beigefügten Zeichnungen dargelegt.
  • 1 ist eine schematische Darstellung eines beispielhaften RAID-ähnlichen Speichersystems 1 auf der Grundlage von SSds. In diesem System werden mehrere SSDs 2 unter Steuerung durch die Speichersteuereinheit 3 betrieben, die von Hosts empfangene Lese-/Schreibanforderungen verarbeitet. Jede SSD 2 wird in der bereits erläuterten Weise betrieben, um Daten in ihrem internen Speicher 4 zu verwalten. Im Allgemeinen kann der Speicher 4 aus einem oder mehreren Speicherkanälen bestehen, von denen jeder ein oder mehrere Chips oder Chip-Pakete aufweist, wobei jeder Chip ein oder mehrere Halbleiter-Speicherplättchen beinhalten kann. In der Speichersteuereinheit 3 ist der Host-LBA-Speicherplatz logisch untergliedert, und ein Segment eines jeden logischen Blocks wird einer entsprechenden SSD 2 zugeordnet. An dieser Stelle kommt Redundanz hinzu, um RAID-Parität hinzufügen zu können.
  • Konkret führt die Speichersteuereinheit 3 für jeden Eingabe-Host-Datenblock (der einer gegebenen („globalen“) Host-LBA entspricht) eine Fehlerkorrektur-Codierung durch, und die resultierende RAID-Parität wird dem Host-Datenblock hinzugefügt. Der paritätscodierte Block wird anschließend durch die Steuereinheit 3 in „Einheiten-Datenblöcke“ untergliedert. Jeder Einheiten-Datenblock wird unter einer zugewiesenen Einheiten-LBA (unit LBA, uLBA) einer betreffenden SSD 2 zum Speichern bereitgestellt. Die Zuordnung der globalen LBAs (gLBAs) zu uLBAs in dem Satz von SSDs wird durch die Steuereinheit 3 in einer gLBA-uLBA-Abbildungstabelle erfasst. Jede SSD speichert ihren betreffenden Einheiten-Datenblock und vermerkt die physische Speicherstelle wie üblich in einer uLBA-PBA-Abbildungstabelle. Als Ergebnis dieses Prozesses werden RAID-Codewörter auf die Anordnung von SSDs 2 verteilt, wie durch den grau schattierten Teil der Figur schematisch dargestellt wird. Dies stellt eine zusätzliche Ebene der Fehlerkorrektur-Codierung bereit, die gegen Ausfälle auf der SSD-Ebene schützt. Innerhalb einer jeden SSD 2 nimmt eine lokale Steuereinheit eine interne Verwaltung des Speichers 4 vor, wie oben beschrieben wurde, wobei diese Funktionalität und die daraus folgende Neuzuordnung von uLBAs zu PBAs in dieser Architektur für die Speichersteuereinheit 3 transparent ist.
  • 1 stellt eine so genannte „äußere RAID“-Konfiguration dar, bei der RAID-Codewörter mehrere SSDs und damit mehrere Steuereinheiten umspannen. Zusätzlich oder alternativ zu einem äußeren RAID-System kann auch ein „inneres RAID“-System verwendet werden. Ein inneres RAID-System wird innerhalb einer SSD-Steuereinheit realisiert. In der Steuereinheit ist der LBA-Speicherplatz logisch untergliedert, und ein Segment eines jeden logischen Blocks wird einer anderen Teileinheit des Gesamt-Speicherplatzes zugewiesen. Erneut kommt Redundanz hinzu, um das Hinzufügen einer inneren RAID-Parität zu ermöglichen, so dass innere RAID-Codewörter untergliedert und auf den Satz von Teileinheiten verteilt werden. Konkret wird ein inneres RAID-Codewort in Teileinheiten-Datenblöcke untergliedert, und jeder Teileinheiten-Datenblock wird einer Teileinheiten-LBA (sub-unit LBA, suLBA) in dem Adressraum einer betreffenden Teileinheit zugewiesen. Die Zuordnung der LBAs zu den suLBAs wird von der Steuereinheit in einer LBAsuLBA-Adressabbildung vermerkt. Danach wird jeder Teileinheiten-Datenblock in der betreffenden Speicherteileinheit an einer physischen Speicherstelle gespeichert, die in einer suLBA-PBA-Abbildungstabelle für diese Einheit vermerkt wird. Dieser Prozess stellt eine Fehlerkorrektur-Codierung bereit, die gegen Ausfälle auf der Teileinheit-Ebene in einer SSD schützt. Wie bei äußeren RAID-Systemen nimmt die Steuereinheit in jeder Speicherteileinheit unabhängig eine interne Verwaltung vor (Speicherbereinigung, Ausgleichen der nachlassenden Leistungsfähigkeit usw.), so dass diese Funktionalität und die daraus folgende Neuzuordnung von suLBAs zu PBAs auf einer niedrigeren logischen Ebene als die RAID-Codierung auf der Logikblock-Ebene stattfindet.
  • Die Druckschrift US 2008/0201392 A1 offenbart ein Speichersystem mit einer Speichereinheit bestehend aus einer Vielzahl von Flash-Speichereinheiten. Zur Erhöhung der Datensicherheit bildet die Vielzahl von Flash-Speichereinheiten eine RAID Gruppe.
  • Die Druckschrift US 2009/0125671 A1 offenbart ein System zum Datenmanagement in einem Speichersystem mit nichtflüchtigen Speichermitteln, beispielsweise Flashspeichern. Dabei werden die Speichermittel als RAID-System verwaltet.
  • Die Druckschrift US 2009/0287956 A1 offenbart ein System zum Detektieren und Ersetzen eines fehlerhaften Datenspeichers. Das System kann mehrere nicht-flüchtige Speichereinheiten umfassen, beispielsweise Flash-Speichereinheiten. Ferner kann ein RAID-Controller vorgesehen sein, der einen Fehlerkorrekturcode für eine Datenredundanz erzeugt.
  • Ein Aspekt der vorliegenden Erfindung stellt eine Steuervorrichtung für eine Halbleiter-Speichereinheit bereit, in welcher der Halbleiterspeicher löschbare Blöcke umfasst, die jeweils eine Vielzahl von Datenschreib-Speicherstellen umfassen. Die Steuervorrichtung umfasst einen Speicher und Steuerlogik, die gestaltet sind, um:
    • Eingabedaten in aufeinanderfolgenden Gruppen von Datenschreib-Speicherstellen zu speichern, wobei jede Gruppe Schreib-Speicherstellen in einem Satz von löschbaren Blöcken in jedem aus einer Vielzahl von logischen Teilbereichen des Halbleiterspeichers umfasst;
    • die Eingabedaten so für eine Fehlerkorrektur zu codieren, dass eine jede Gruppe einen Fehlerkorrektur-Code für die Eingabedaten in der Gruppe enthält;
    • in dem Speicher Metadaten zu verwalten, welche die Speicherstelle von Eingabedaten in dem Halbleiterspeicher angeben;
    • eine Angabe für die Gültigkeit von Daten zu verwalten, die in einer jeden Datenschreib-Speicherstelle gespeichert sind; und
    • vor dem Löschen eines Blocks gültige Eingabedaten aus der oder aus jeder Gruppe wiederherzustellen, die Schreib-Speicherstellen in dem Block enthält, und die wiederhergestellten Daten als neue Eingabedaten neu zu speichern.
  • Bei Ausführungsformen dieser Erfindung ist der von der Steuervorrichtung verwaltete Speicherplatz daher logisch in eine Vielzahl von logischen Teilbereichen untergliedert, und Eingabedaten werden in Gruppen von Schreib-Speicherstellen geschrieben, die auf diese logischen Teilbereiche verteilt sind. Konkret enthält jede Gruppe in jedem logischen Teilbereich eine oder mehrere Schreib-Speicherstellen in einem Satz von (einem oder mehreren) löschbaren Blöcken in dem Teilbereich. Für die Eingabedaten in jeder Gruppe wird ein Fehlerkorrektur-Code berechnet und in der Gruppe für die Eingabedaten gespeichert. Zusätzlich ist der Prozess des Löschens von Blöcken so gestaltet, dass gültige Daten auf der Grundlage von Gruppen wiederhergestellt werden. Wenn ein Löschen von Blöcken erforderlich ist, z.B. bei der Speicherbereinigung oder anderen internen Verwaltungsfunktionen, werden gültige Daten aus der oder aus jeder Gruppe wiederhergestellt, die Schreib-Speicherstellen in einem gegebenen Block enthält, bevor der Block gelöscht wird. Die so wiederhergestellten gültigen Eingabedaten können dann als neue Eingabedaten in neuen Fehlerkorrektur-codierten Gruppen gespeichert werden. Somit bieten Ausführungsformen dieser Erfindung eine zusätzliche Ebene der Fehlerkorrektur-Codierung (d.h. über eine etwaige herkömmliche Fehlerkorrektur-Codierung, die in Schreib-Speicherstellen durchgeführt wird, wie der oben erläuterten Seiten-internen Codierung, hinausgehend), während gleichzeitig interne Verwaltungsfunktionen für den Speicher als Ganzes durchgeführt werden können. Im Gegensatz zu den oben erläuterten RAID-ähnlichen Systemen, die oberhalb der LBA-auf-PBA-Abbildung realisiert werden, findet die zusätzliche Fehlerkorrektur-Codierung auf der Ebene des physischen Blocks (PBA) anstelle auf der Ebene des logischen Blocks (LBA) statt, und der gesamte Speicherplatz kann zur Verwaltungszwecken als eine einzige Einheit verwaltet werden. Indem sie eine Fehlerkorrektur-Codierung auf der Ebene des physischen Blocks in Abstimmung mit der wesentlichen internen Verwaltungsfunktionalität durchführen, stellen Ausführungsformen der Erfindung auf eine äußerst leistungswirksame Art und Weise einen Schutz gegen Ausfälle von Speicherteilbereichen bereit. Insbesondere stellen die wechselseitigen positiven Effekte von Fehlerkorrektur-Codierung und internen Verwaltungsprozessen höhere Fehlerkorrekturraten mit beträchtlichen Verbesserungen der Gesamtleistung bereit. So kann z.B. ohne Leistungseinbußen in Form einer erhöhten Schreib-Vervielfachung und verringerten Lebensdauer, wie sie durch eine weitere Codierung auf höheren Ebenen verursacht werden würden, ein verbesserter Fehlerschutz erzielt werden. Insgesamt bietet die Steuervorrichtung, welche die Erfindung enthält, somit eine außergewöhnliche Leistung bei Halbleiter-Speichereinheiten.
  • Allgemein gesprochen könnte der Prozess der Fehlerkorrektur-Codierung durch systematisches Codieren (wobei die Eingabedaten für den Codier-Prozess durch das Codieren nicht verändert werden, aber ein Fehlerkorrektur-Code hinzugefügt wird, um das Ausgabe-Code-Wort zu erhalten) oder durch nicht systematisches Codieren (wobei die Eingabedaten für den Codier-Prozess durch das Codierung in das Ausgabe-Codewort eingebettet werden) realisiert werden. Vorzugsweise wird jedoch das systematische Codieren verwendet, wobei die Steuerlogik so gestaltet ist, dass zu den Eingabedaten in einer jeden Gruppe ein Fehlerkorrektur-Code für die Eingabedaten hinzugefügt wird.
  • Bei den Datenschreib-Speicherstellen des Halbleiterspeichers kann es sich um Flash-Seiten in einer Flash-Speichereinheit handeln. Im Allgemeinen könnten die Schreib-Speicherstellen jedoch beliebige Bereiche des Gesamtspeichers sein, in die Daten in einer SSD geschrieben werden können. Der Speicher als Ganzes könnte allgemein eine beliebige gewünschte Konfiguration von Speicherelementen umfassen, von einem einzelnen Element wie einem Chip oder einem Halbleiterplättchen bis hin zu mehreren Gruppen von Elementen. Eine typische SSD verfügt jedoch über eine Vielzahl von Speicherkanälen, die jeweils eine Speicherbank oder einen Speicherplatz bereitstellen, die/der üblicherweise mehrere Pakete aus einem oder mehreren Speicher-Chips beinhalten, von denen jede ein oder mehrere Halbleiterplättchen aufweist. Die Teilbereiche, in die der verfügbare Speicher zum Zwecke der Fehlerkorrektur-Codierung logisch untergliedert ist, könnten beliebige Teilsätze des Gesamtspeicherplatzes sein. So könnte bei einer Ausführungsform, bei der die Halbleiter-Speichereinheit eine Vielzahl von Speicherkanälen aufweist, die jeweils über einen Satz von Halbleiter-Speichereinheiten verfügen (wobei jede Einheit allgemein ein Paket, einen Chip, ein Halbleiterplättchen oder einen beliebigen andere Speicherplatz umfassen kann), jeder logische Teilbereich den Satz von Einheiten in einem betreffenden Kanal umfassen. (Allgemein gilt, dass, wenn hier von einem Satz von Elementen gesprochen wird, der Satz ein oder mehrere Elemente enthalten kann, sofern der Textzusammenhang nichts Anderslautendes nahelegt.) Alternativ könntejeder logische Teilbereich eine entsprechende Speichereinheit umfassen.
  • Zum Zwecke der Fehlerkorrektur-Codierung werden Eingabedaten in Gruppen von Schreib-Speicherstellen geschrieben, wobei eine jede Gruppe in einer jedem logischen Teilbereich eine oder mehrere Schreib-Speicherstellen in einem Satz von löschbaren Blöcken in dem Teilbereich enthält. Bei bevorzugten Ausführungsformen enthält eine Gruppe eine Vielzahl von Schreib-Speicherstellen in dem oder in einem jeden Block in einem jeden Teilbereich, wobei die Schreib-Speicherstellen innerhalb eines jeden Blocks aufeinanderfolgen (d.h. aufeinanderfolgende physische Adressen haben). Allgemein kann der Satz von Schreib-Speicherstellen für eine Gruppe in einem beliebigen einzelnen Teilbereich mehr oder weniger als die Anzahl der Schreib-Speicherstellen in einem löschbaren Block enthalten. Im Interesse einer einfachen Realisierung ist die Anzahl von Schreib-Speicherstellen in einem jeden Teilbereich jedoch vorzugsweise ein ganzzahliger Faktor oder ein ganzzahliges Vielfaches der Anzahl von Schreib-Speicherstellen in einem Block. Wenn die Anzahl von Schreib-Speicherstellen für eine Gruppe in einem jeden Teilbereich weniger als die Blockgröße beträgt, können sich mehrere Gruppen denselben Block teilen. Wenn sich etwaige Gruppen, die sich einen gemeinsamen Block in einem logischen Teilbereich teilen, auch einen gemeinsamen Block in einem jeden logischen Teilbereich teilen, werden die internen Verwaltungsvorgänge erheblich vereinfacht.
  • Wie oben beschrieben, wird der Fehlerkorrektur-Code für Eingabedaten in einer jeden Gruppe in der Gruppe mit den Eingabedaten gespeichert. Bei bevorzugten Ausführungsformen wird jedoch in aufeinanderfolgenden Phasen während der Speicherung von Eingabedaten in den Schreib-Speicherstellen einer jeden Gruppe ein vorübergehender Fehlerkorrektur-Code für die Eingabedaten berechnet und dann in der Gruppe gespeichert. Dieser vorübergehende Fehlerkorrektur-Code kann bei Bedarf zur Wiederherstellung teilweise vervollständigter Gruppen verwendet werden. Zudem ist die Steuervorrichtung vorzugsweise so gestaltet, dass sie den vorübergehenden Fehlerkorrektur-Code in dem Halbleiterspeicher als Reaktion auf eine Unterbrechung der Stromversorgung speichert, wobei der vorübergehende Code bei einem Stromausfall beibehalten werden kann. Dies stellt einen Schutz gegen einen gleichzeitig Ausfall der Stromversorgung und eines Speicherteilbereichs bereit.
  • Ein zweiter Aspekt der Erfindung stellt eine Halbleiter-Speichereinheit, die einen Halbleiterspeicher umfasst, der löschbare Blöcke umfasst, die jeweils einen Satz von Datenschreib-Speicherstellen umfassen, sowie eine Steuervorrichtung gemäß dem ersten Aspekt der Erfindung bereit.
  • Ein dritter Aspekt der Erfindung stellt ein Verfahren für das Steuern einer Halbleiter-Speichereinheit bereit, in welcher der Halbleiterspeicher löschbare Blöcke umfasst, die jeweils eine Vielzahl von Datenschreib-Speicherstellen umfassen. Das Verfahren umfasst:
    • das Speichern von Eingabedaten in aufeinanderfolgenden Gruppen von Datenschreib-Speicherstellen, wobei jede Gruppe Schreib-Speicherstellen in einem Satz von löschbaren Blöcken in jeder aus einer Vielzahl von logischen Teilbereichen des Halbleiterspeichers umfasst;
    • die Fehlerkorrektur-Codierung der Eingabedaten, so dass eine jede Gruppe einen Fehlerkorrektur-Code für die Eingabedaten in der Gruppe enthält;
    • das Verwalten von Metadaten in dem Speicher der Halbleiter-Speichereinheit, welche die Speicherstelle von Eingabedaten in dem Halbleiterspeicher angeben;
    • das Verwalten einer Angabe der Gültigkeit von Daten, die in einer jeden Datenschreib-Speicherstelle gespeichert sind; und
    • das Wiederherstellen gültiger Eingabedaten aus der oder aus einer jeden Gruppe, die Schreib-Speicherstellen in dem Block enthält, vor dem Löschen eines Blocks und das erneute Speichern der wiederhergestellten Daten als neue Eingabedaten.
  • Die Erfindung stellt außerdem ein Computerprogramm bereit, das ein Programmcodemittel umfasst, um einen Computer dazu zu veranlassen, ein Verfahren gemäß dem dritten Aspekt der Erfindung durchzuführen. Der Fachmann weiß, dass der Begriff „Computer“ hier in einem äußerst allgemeinen Sinn verwendet wird und jede Einheit, Komponente bzw. jedes System beinhaltet, die/das über eine Datenverarbeitungsfähigkeit für das Realisieren eines Computerprogramms verfügt. Zudem kann ein Computerprogramm, das die Erfindung enthält, ein unabhängiges Programm bilden oder ein Element eines größeren Programms sein, und kann z.B. im Gestalt eines computerlesbaren Mediums bereitgestellt werden, wie beispielsweise eines Datenspeichers oder einer elektronischen Übertragung, die in einen Computer geladen wird. Das Programmcodemittel des Computerprogramms kann einen beliebigen Ausdruck in einer beliebigen Sprache, einem beliebigen Code oder einer beliebigen Schreibweise aus einem Satz von Befehlen umfassen, mit denen ein Computer veranlasst werden soll, das betreffende Verfahren durchzuführen, wobei dies entweder direkt oder nach (a) der Umwandlung in eine andere Sprache, einen anderen Code oder eine andere Schreibweise und/oder (b) der Wiedergabe in einer anderen greifbaren Form erfolgen kann.
  • Sofern Merkmale hier mit Bezug auf eine Ausführungsform der Erfindung beschrieben sind, gilt generell, dass entsprechende Merkmale auch in Ausführungsformen eines anderen Aspekts der Erfindung bereitgestellt werden können.
  • Im Folgenden werden beispielhafte und mit Blick auf die beigefügten Zeichnungen bevorzugte Ausführungsformen der Erfindung beschrieben, wobei:
    • 1 eine schematische Darstellung eines Speichersystems auf der Grundlage von SSDs mit RAID-ähnlicher Codierung nach dem Stand der Technik ist;
    • 2 eine schematische Darstellung einer Halbleiter-Speichereinheit ist, welche die Erfindung enthält;
    • 3 das Schreiben von Eingabedaten in eine Gruppe von Schreib-Speicherstellen darstellt, die auf Speicherteilbereiche aus der Ausführungsform aus 2 verteilt sind;
    • 4 ein Beispiel für die Konfiguration von Schreib-Speicherstellen in einer Gruppe zeigt;
    • 5 ein weiteres Beispiel für die Konfiguration von Schreib-Speicherstellen in einer Gruppe zeigt; und
    • 6 einen internen Verwaltungsprozess darstellt, der in der SSD aus 2 durchgeführt wird.
  • 2 ist eine schematische Darstellung einer beispielhaften SSD 5, welche die Erfindung verkörpert, und zeigt die Hauptelemente, die an den zu beschreibenden Datenverwaltungsvorgängen beteiligt sind. Die SSD 5 verfügt über einen Halbleiterspeicher 6 und eine Steuervorrichtung, die allgemein mit der Ziffer 7 bezeichnet ist. In diesem Beispiel besteht der Speicher 6 aus n Speicherkanälen, Ch(1) bis Ch(n), von denen jeder eine Bank 8 aus Speichereinheiten, hier die Flash-Speicherplättchen 9, bereitstellt. Der Satz von Flash-Halbleiterplättchen 9 in jeder Bank 8 kann im Allgemeinen auf einem oder mehreren Chips oder Chip-Paketen bereitgestellt werden und könnte SLC- (Single-Level Cell)Halbleiterplättchen, MLC- (Multi-Level Cell)Halbleiterplättchen oder eine Kombination hiervon umfassen. So könnten z.B. ein oder mehrere Kanäle einen MLC-Speicher und der Rest einen SLC-Speicher bereitstellen.
  • Die Steuervorrichtung 7 der SSD 5 beinhaltet Steuerlogik in Form einer Flash-Steuereinheit 10, einer Lese-/Schreibschnittstelle 11 für das Verarbeiten von Datenlese- und Datenschreib-Anforderungen an die Einheit und eine Flash-Verbindungsschnittstelle 12 für das Austauschen von Daten mit den Flash-Speicherkanälen. Die Flash-Steuereinheit 10 steuert die Funktion der Einheit 5 im Allgemeinen, indem sie das Lesen und Schreiben von Daten als Reaktion auf empfangene Anforderungen verwaltet und alle internen Verwaltungsfunktionen für den Flash-Speicher 6 verarbeitet. Die Flash-Steuereinheit 10 führt zudem eine Fehlerkorrektur-Codierung (und entsprechende Decodierung) von Daten durch, wie weiter unten beschrieben wird. Im Allgemeinen könnte die Steuerlogik der Flash-Steuereinheit 10 in Hardware, in Software oder in einer Kombination hiervon realisiert werden. So könnte die Steuerlogik z.B. entweder ganz oder teilweise durch Software realisiert werden, die einen Prozessor der Steuervorrichtung 7 dafür konfiguriert, die beschriebenen Funktionen durchzuführen. Geeignete Software wird für den Fachmann aus der hier darlegten Beschreibung offensichtlich. Die Funktionalität für die Fehlerkorrektur-Codierung/- Decodierung kann durch fest verdrahtete Logikschaltkreise realisiert werden, wobei geeignete Schaltkreise für den Fachmann wiederum offensichtlich sein dürften. Die Steuereinheit 7 enthält ferner zum Speichern verschiedener Metadaten für den Betrieb der Flash-Steuereinheit 10 wie weiter unten beschrieben den Speicher 13, der im Allgemeinen einen oder mehrere Speicherkomponenten umfassen könnte, darunter verschiedene Arten von Speichern wie z.B. ein SDRAM (Synchronous Dynamic Random Access Memory).
  • Im Allgemeinen könnte die Einheit 5 direkt mit Hosts Daten austauschen, um Lese/Schreib-Anforderungen zu verarbeiten, oder sie könnte durch eine übergeordnete Steuereinheit verwaltet werden, die Host-Anforderungen für eine Vielzahl von Einheiten in einem Speichersystem verarbeitet. Die Einheit 5 könnte beispielsweise Teil einer RAID-ähnlichen Anordnung sein, in der mehrere SSDs entsprechend dem System aus 1 von einer Speichersteuereinheit verwaltet werden. Die Logikadressen, die Daten zugehörig sind, welche in Eingabe-Lese-/Schreibanforderungen angegeben werden, können sich somit auf den globalen (Host-) Adressraum oder auf einen logisch niedriger angeordneten Adressraum beziehen. Diese Adressen werden im Folgenden einfach als LBAs bezeichnet.
  • Datenschreibanforderungen, welche die Start-LBA und die Anforderungsgröße angeben, gehen über die Lese-/Schreibschnittstelle 11 asynchron in der Steuervorrichtung 7 ein. Die Flash-Steuereinheit 10 steuert das Schreiben der Eingabedatenblöcke (entsprechend der jeweiligen LBAs) in den Flash-Speicher 6 und führt während des Schreibprozesses zwei Ebenen von Fehlerkorrektur-Codierung durch. Die erste Fehlerkorrektur-Codierungsebene, die im Folgenden als „C1-Codierung“ bezeichnet wird, ist die herkömmliche Codierung auf der Ebene der Schreibeinheit. Während Eingabedaten in die einzelnen Flash-Seiten in dem Speicher 6 geschrieben werden, wird eine Fehlerkorrektur-Codierung für die Eingabedaten durchgeführt, und der sich ergebende Code (der C1-Code) bildet einen Teil der in der Seite gespeicherten Metadaten. Diese Metadaten beinhalten auch eine Gültigkeitsanzeige in Gestalt einer Markierung „Page-Invalid“ (PI, „Seite ungültig“). Im Rahmen der normalen Steuervorgänge der Flash-Steuereinheit 10 kann die PI-Markierung für eine Seite von der Steuereinheit gesetzt werden, falls die Daten in der Seite aus dem einen oder anderen Grund als ungültig betrachtet werden, z.B. aufgrund einer Datenaktualisierung, wie weiter unten erörtert wird. Die Seiten-Metadaten beinhalten üblicherweise auch eine Markierung „Bad-Page“ (BP, „unbrauchbare Seite“), die von der Flash-Steuereinheit 10 gesetzt werden kann, wenn festgestellt wird, dass eine Seite nicht nutzbar ist (z.B. weil sie zu viele C1-Fehler aufweist). Auch dies wird im Rahmen der normalen Steuerfunktionen der Flash-Steuereinheit 10 durchgeführt.
  • Die zweite Ebene der von der Flash-Steuereinheit 10 durchgeführten Fehlerkorrektur-Codierung wird im Folgenden als „C2-Codierung“ bezeichnet. Um die C2-Codierung zu realisieren, wird der Speicherbereich 6 der SSD 5 von der Flash-Steuereinheit 10 in eine Vielzahl von logischen Teilbereichen logisch untergliedert. In diesem Beispiel gibt es n logische Teilbereiche, die den betreffenden Speicherbänken 8 in dem Satz von n Kanälen entsprechen. Die C2-Codierung erfolgt, indem der Strom von Eingabedatenblöcken in eine Abfolge von Gruppen von Flash-Seiten geschrieben wird. Bei dieser Ausführungsform sind die Seiten einer jeden Gruppe über alle logischen Teilbereiche des Speichers 6 verteilt. Konkret enthält jede Gruppe von Seiten, die hier als „Breite“ (stride) bezeichnet wird, einen Satz bzw. „Streifen“ (strip) von Seiten in der Speicheranordnung 8 eines jeden Kanals. Jeder Streifen besteht üblicherweise aus einer vordefinierten Anzahl von aufeinanderfolgenden Seiten, d.h. Seiten mit aufeinanderfolgenden PBAs, in einem oder mehreren Flash-Blöcken des Kanalspeicherbereichs 8. Jeder Streifen verfügt über eine eindeutige Streifen-Kennung innerhalb des Speicherbereichs 8. Der Einfachheit halber kann die Streifen-Kennung aus der PBA der ersten Seite in dem Streifen bestehen.
  • Eingabedaten werden gespeichert, indem abwechselnd in jede Breite geschrieben wird, wodurch in dieser Phase die C2-Codierung um Redundanz ergänzt wird. 3 stellt diesen Schreibprozess für die momentan aktive Breite dar. Eingabedaten werden in jeden Streifen der Breite geschrieben, wobei ein Satz von Seiten in dem letzten Streifen (in Ch(n)) für den C2-Code der Breite reserviert ist. Für die Eingabedaten in einem gegebenen Streifen heißt das, dass die Flash-Steuereinheit 10 einen Fehlerkorrektur-Code für die Eingabedaten berechnet und diesen C2-Code in den letzten Seiten des Streifens speichert. Der bestimmte Fehlerkorrektur-Algorithmus, der für die C2-Codierung verwendet wird, ist für die vorliegende Erfindung nicht von wesentlicher Bedeutung. In diesem Beispiel soll der C2-Code jedoch ein XOR-Paritätscode sein. (Ein anderes C2-Codiersystem, das hier verwendet werden könnte, wird in unserer gleichzeitig anhängigen Patentanmeldung beschrieben, die zeitgleich mit dieser unter der Anmelder-Referenznummer CH9-2009-0046 eingereicht wurde und deren maßgebender Inhalt hier durch Bezugnahme als Bestandteil gelten. Bei diesem System umfasst der C2-Code, der einem Streifen wie oben beschrieben hinzugefügt wird, die gesammelten Paritätscodes einer Vielzahl von C2-Codewörter, welche die Speicherteilbereiche 8 umspannen.) Wenn die Flash-Steuereinheit 10 bei dem Schreibprozess für eine gegebene Breite eine unbrauchbare Seite erkennt (d.h., die BP-Markierung ist gesetzt), wird diese Seite übergangen, und das Schreiben fährt mit der nächsten Seite in der Breite fort. Beim Berechnen der C2-Parität gelten alle etwaigen unbrauchbaren Seiten für die Steuereinheit 10 als Seiten, die ausschließlich den Wert Null enthalten.
  • Abhängig von der Systemarchitektur können die Streifen einer gegebenen Breite im Allgemeinen nacheinander oder parallel gefüllt werden. Da bei der vorliegenden Ausführungsform der Speicher 6 logisch nach Kanälen untergliedert ist, können die Streifen parallel in den n Kanälen beschrieben werden. In diesem Fall überprüft die Flash-Steuereinheit 10 die aktive Breite auf unbrauchbare Seiten, bevor sie die Eingabedaten Streifen zuordnet und die C2-Parität für die Breite berechnet. In jedem Fall dürfte deutlich werden, dass die Auswirkung des Datenschreibprozesses darin besteht, die Eingabedaten in C2-codierten Breiten auf die Speicherkanäle der Einheit 5 zu verteilen. Die Zuordnung von Streifen zu bestimmten Breiten und die Reihenfolge der Breiten-Auswahl bei einem Schreibvorgang kann in der Steuereinheit 10 auf verschiedene Art und Weise umgesetzt werden, wobei für den Fachmann geeignete Umsetzungsformen offensichtlich sein dürften. Diese Merkmale sind für die vorliegende Erfindung nicht wesentlich und müssen hier daher nicht im Einzelnen erörtert werden. Allgemein gilt jedoch, dass jeder Streifen Seiten in einer oder mehreren Flash-Breiten eines gegebenen Kanals enthält. Die 4 und 5 zeigen zwei Beispiele möglicher Breiten-Konfigurationen. In 4 beträgt die Größe des C2-Streifens vier Seiten. Eine einzelne Breite ist durch die Pfeile in der Figur dargestellt. Bei einer Größe der Flash-Breite von 64 Seiten enthält jeder Block Streifen von 16 verschiedenen Breiten. Diese 16 Breiten teilen sich dieselben Blöcke in allen Kanälen. Ein derartiger Satz von Breiten, die sich eine gemeinsame Gruppe von Blöcken teilen, wird im Folgenden als Breiten-Gruppe bezeichnet. Dabei ist zu beachten, dass Blöcke derselben Breiten-Gruppe in verschiedenen Kanalspeicherbereichen 8 physisch nicht aneinander ausgerichtet sein müssen. 5 zeigt ein alternatives Beispiel, in dem die C2-Streifen-Größe zwei Blöcke beträgt. Somit besteht jede Breite aus zwei Blöcken in jedem Speicherkanal, während eine Breiten-Gruppe hier aus einer einzigen Breite besteht. Dabei ist zu beachten, dass Blöcke derselben Breite in jedem Kanalspeicherbereich 8 physisch nicht aufeinanderfolgen müssen.
  • Die Steuereinheit 10 vermerkt die Speicherstelle von Eingabedaten in dem Speicher 6 über Adress-Metadaten, die von der Steuereinheit 10 in dem Speicher 13 verwaltet werden. Die Adress-Metadaten umfassen hier eine LBA/PBA-Adressabbildung, welche die Zuordnung zwischen logischen Adressen (LBAs), die Eingabedatenblöcken zugehörig sind, und physischen Adressen (PBAs) in dem Speicher 6 angibt. Eine derartige Adressabbildung kann im Allgemeinen eine oder mehrere Tabellen oder anderweitige Datenstrukturen umfassen, aus denen die physischen Speicherstellen der Breiten und der darin enthaltenen Streifen, in denen Eingabedatenblöcke gespeichert sind, ermittelt werden können. So könnte die Adressabbildung z.B. die Zuordnung von LBAs zu Breiten-Kennungen in einer Tabelle und die Zuordnung von Breiten-Kennungen zu Streifen-Kennungen in einer anderen Tabelle festlegen, mit einer weiteren Tabelle, welche die PBA in einem Streifen angäbe, in dem sich die einzelnen LBAs befinden. In der Praxis könnte aus Gründen der Einfachheit jedoch eine einzige Referenztabelle mit allen Adress-Metadaten bevorzugt werden.
  • Es ist klar6, dass der C2-Codierungsprozess durch das Verteilen der Eingabedaten auf die Speicherkanäle in Fehlerkorrektur-codierten Breiten einen zusätzlichen Schutz gegen Fehler in einzelnen Kanälen bietet, der über den auf Seitenebene angesiedelten Schutz der C1-Codierung hinausgeht. Die Fehlerprüfung erfolgt in der Regel nach jedem Schreiben von Daten sowie beim Auslesen von Daten als Reaktion auf eine Leseanforderung oder während interner Verwaltungsvorgänge, wie weiter unten erläutert wird. Wenn ein Streifen Seiten- oder Blockfehler enthält, die durch den C1-Fehlerkorrekturprozess nicht behoben werden können, wird von der Flash-Steuereinheit 10 die folgende Prozedur durchgeführt. Dabei wird aus demselben Speicherbereich 8 wie der Streifen, welcher den Fehler enthält, ein neuer Streifen ausgewählt. Dieser Streifen ersetzt den „unbrauchbaren Streifen“ in der betreffenden Breite. Die anderen Streifen in der Breite werden aus den Adress-Metadaten in dem Speicher 13 ermittelt, und der Inhalt dieser Streifen wird gelesen. Der Inhalt des unbrauchbaren Streifens wird gelesen, und der Inhalt der anderen Streifen in der Breite wird verwendet, um fehlerhafte Daten in dem unbrauchbaren Streifen anhand des C2-Codieralgorithmus wiederherzustellen. Die wiederhergestellten (fehlerkorrigierten) Daten werden dann in den Ersatz-Streifen geschrieben, und die Adress-Metadaten werden aktualisiert, um die geänderte Breiten-Struktur widerzuspiegeln. Anschließend wird in jeder Seite des alten, unbrauchbaren Streifens die PI-Markierung gesetzt um anzugeben, dass der Inhalt dieser Seiten ungültig ist. Diese Seiten werden bei einem darauffolgenden Speicherbereinigungsprozess für eine erneute Nutzung rückgewonnen.
  • Neben dem Speichern der C2-Codes als Bestandteil der Breiten in dem Speicher 6 berechnet die Flash-Steuereinheit während des Schreibens einzelner Breiten auch C2-Teilcodes. Diese Teilcodes werden in aufeinanderfolgenden Phasen während des Schreibens von Eingabedaten in die Streifen einer jeden Breite berechnet, wobei dies bevorzugt erfolgt, nachdem jede Seite eines Streifens geschrieben wurde. Konkret wird nach jedem Seiten-Schreibvorgang die C2-Codierung auf die Eingabedaten angewendet, die bis dahin in der Breite gespeichert waren, um so einen vorübergehenden Fehlerkorrektur-Code oder eine „vorübergehende Parität“ für die teilweise vervollständigte Breite zu erhalten. Diese vorübergehende Parität wird von der Steuereinheit 10 gespeichert, wie in dem Speicher 13 aus 2 angegeben. In der Praxis kann die bestimmte Speicherkomponente, welche die vorübergehende Parität speichert, ein Register einer fest verdrahteten C2-Codiereinheit-Schaltung sein. Diese vorübergehende Parität kann bei Bedarf verwendet werden, um bei Fehlern in teilweise vervollständigten Breiten eine Fehlerwiederherstellung zu ermöglichen. Wenn die Flash-Steuereinheit 10 eine Unterbrechung der Stromversorgung der Steuervorrichtung 7 feststellt, kopiert die Steuereinheit zusätzlich den vorübergehenden Fehlerkorrektur-Code (zusammen mit den anderen Metadaten, einschließlich der momentanen Adressabbildung im Speicher 13) vor dem Herunterfahren in eine verfügbare Region des Flash-Speichers 6. Die vorübergehende Parität kann somit bei einem Stromausfall aufrechterhalten werden und bietet damit Schutz gegen gleichzeitige Stromausfall- und Speichereinheit/Speicherkanal-Fehler.
  • Während die Daten nach dem oben erläuterten Write-out-of-place-Schema in dem Flash-Speicher 6 aktualisiert werden, setzt die Flash-Steuereinheit 10 die PI-Markierung für eine beliebige Seite, die durch eine LBA-Überschreibung aktualisiert wurde. Die PI-Markierung wird entsprechend auch für Seiten gesetzt, die Daten enthalten, welche von einem Host gelöscht wurden. Die Speichersteuereinheit 10 verwaltet außerdem für jede Breiten-Gruppe einen Zählwert, der die Anzahl der ungültigen Seiten in der gesamten Breiten-Gruppe angibt. Diese PI-Zählwerte für Breiten-Gruppen werden als Teil der in dem Speicher 13 verwalteten Metadaten aufgezeichnet. Die PI-Zählwerte werden bei internen Verwaltungsvorgängen verwendet, die von der Steuereinheit 10 wie weiter unten beschrieben durchgeführt werden.
  • Obwohl der Speicher 6 für die oben beschriebene C2-Codierung logisch untergliedert ist, werden interne Verwaltungsfunktionen für den gesamten Speicher durchgeführt. Das heißt, die Flash-Steuereinheit 10 behandelt zu internen Verwaltungszwecken alle Teilbereiche (die n Speicherkanäle) als eine einzige Speichereinheit. Hierfür sind interne Verwaltungsfunktionen, die das Löschen von Blöcken beinhalten, wie beispielsweise Speicherbereinigung und Ausgleichen der nachlassenden Leistungsfähigkeit, so gestaltet, dass die teilbereichübergreifende C2-Codierung ermöglicht wird. Konkret erfolgt die Wiederherstellung von gültigen Daten während eines derartigen Prozesses auf der Grundlage einer Breiten-Gruppe anstelle auf der Grundlage von Blöcken. Bevor ein Block gelöscht wird, werden gültige Eingabedaten von der oder von jeder Breite in der Breiten-Gruppe wiederhergestellt, die Schreib-Speicherstellen in dem Block enthält. Dieser Vorgang wird weiter unten mit Blick auf 6 für den Prozess der Speicherbereinigung ausführlicher beschrieben.
  • Der Ablaufplan aus 6 zeigt wichtige Schritte des in der SSD 5 durchgeführten Speicherbereinigungsprozesses. Wenn die Speicherbereinigung aktiviert wird (dargestellt durch Schritt 20 in der Figur), wählt die Flash-Steuereinheit 10 zunächst die zu löschenden Blöcke aus. Diese in Schritt 21 durchgeführte Auswahl beruht auf den PI-Zählwerten, die in dem Speicher 13 für Breiten-Gruppen gespeichert sind. Konkret können die Blöcke in Breiten-Gruppen mit den höchsten PI-Zählwerten zuerst für eine erneute Nutzung ausgewählt werden. Nachdem eine Breiten-Gruppe ausgewählt wurde, stellt die Flash-Steuereinheit in Schritt 22 alle noch gültigen Daten aus den Seiten der Breiten-Gruppe wieder her. Auf diese Weise werden Daten aus allen Seiten in der Breiten-Gruppe ausgelesen, für welche die betreffenden PI-Markierungen nicht gesetzt wurden. Die auf den C1- und C2-Codes beruhende Fehlerkorrektur-Verarbeitung kann bei diesem Prozess nach Bedarf durchgeführt werden. Die damit wiederhergestellten Daten werden dann als Eingabedaten zurückgegeben, um in dem Flash-Speicher 6 erneut gespeichert zu werden. Auf diese Weise werden die wiederhergestellten Daten in neuen Breiten von neuem gespeichert, wie in Schritt 23 dargestellt. In Schritt 24 aktualisiert die Flash-Steuereinheit 10 die Adressabbildung in dem Speicher 13, um die neuen Datenspeicherstellen widerzuspiegeln. Die Blöcke der alten, erneut nutzbar gemachten Breiten-Gruppe können dann von der Flash-Steuereinheit 10 gelöscht werden, wie aus Schritt 25 hervorgeht. Löschvorgänge von Blöcken können sofort oder zu einem beliebigen späteren Zeitpunkt durch die Steuereinheit 10 durchgeführt werden, um diese Blöcke für eine Speicherung neuer Daten freizugeben.
  • Aus dem Vorangegangenen ist zu erkennen, dass während der Speicherbereinigung alle Streifen einer Breiten-Gruppe gemeinsam erneut nutzbar gemacht werden. Dasselbe Prinzip lässt sich auf jeden internen Verwaltungsprozess anwenden, z.B. den Ausgleich der nachlassenden Leistungsfähigkeit, wobei vor dem Löschen von Blöcken Daten innerhalb des Flash-Speichers verschoben werden. Im Rahmen der normalen Überwachungsfunktion der Steuereinheit 10 können Blöcke, bei denen Probleme mit der Lebensdauer auftreten können (zu viele C1-Fehler), während des Prozesses der erneuten Nutzbarmachung erkannt und als „unbrauchbare Blöcke“ markiert werden. Diese Markierung kann auf Grundlage eines Blockfehler-Zählwerts erfolgen, der von der Flash-Steuereinheit 10 als Teil der Metadaten verwaltet wird, die in dem Speicher 13 gespeichert sind. Blöcke, die auf diese Art und Weise als unbrauchbar markiert sind, werden von der Steuereinheit 10 nicht für eine spätere Datenplatzierung verwendet.
  • Aus dem Vorangegangenen ist offensichtlich, dass im Gegensatz zu RAID-ähnlichen Systemen nach dem Stand der Technik die C2-Codierung in der SSD 5 auf Ebene des physischen Blocks erfolgt, wobei der gesamte Speicherbereich zum Zweck der internen Verwaltung als eine einzige Einheit verwaltet wird. Der auf PBA-Ebene durchgeführte C2-Codierungsvorgang ist für die LBA/PBA-Abbildung transparent und bietet Schutz gegen vollständige Ausfälle, die auf Seiten-, Block-, Bank- und Kanal-Ebene stattfinden. Die Verwendung von vorübergehenden C2-Codes wie oben beschrieben stellt auch eine Widerstandsfähigkeit gegen den gleichzeitigen Ausfall von Stromversorgung und Einheit bereit. Indem die C2-Codierung wie oben beschrieben in enger Koppelung mit der internen Verwaltungsfunktion erfolgt, erzielt die SSD 5 verbesserte Fehlerraten mit einer außergewöhnlich hohen Gesamtleistung.
  • Dabei wird die Fehlerleistung insbesondere verbessert, ohne dass es zu den Nachteilen einer Codierung auf höherer Ebene in Form von Schreib-Vervielfachung und Leistungseinbußen kommt. Zur Veranschaulichung lässt sich die SSD 5 mit einem RAID-ähnlichen System auf der Grundlage von SSDs des oben beschriebenen Typs vergleichen, indem angenommen wird, dass in jedem Fall ein Kanal für die Redundanz verwendet wird. Wenn im SSD 5 der Kanal n ausschließlich C2-Codes zugeordnet ist, lässt sich w1 als Schreib-Vervielfachung aufgrund der internen Verwaltung (Speicherbereinigung und Ausgleich der nachlassenden Leistungsfähigkeit) definieren. Wenn aus Gründen der Vereinfachung jeder Streifen nur eine Seite enthält, führt jeder Seiten-Schreibvorgang zu (1+1)/(n-1)w1 Seiten-Schreibvorgängen, da die Steuereinheit eine Paritätsseite für (n-1) Seiten berechnet, d.h. eine Seite aus jedem Kanal. Wenn w2 die Schreib-Vervielfachung aufgrund von Speicherbereinigung und Ausgleichen der nachlassenden Leistungsfähigkeit angibt, dann führt im Gegensatz hierzu bei dem RAID-ähnlichen System jeder Seiten-Schreibvorgang zu 2w2 Seiten-Schreibvorgängen, d.h. zu einer Datenseite und einer RAID-Paritätsseite. Zudem gilt, dass w1< w2 ist, da die interne Verwaltung „global“ erfolgt, indem alle Speicherkanäle als ein einheitlicher Speicherbereich behandelt werden.
  • Die Leistungsfähigkeit lässt sich weiter verbessern, indem die Größe von C2-Breiten und -Streifen sowie die Beziehung zwischen der Streifen-Größe und der LBA-Größe bezogen auf den jeweiligen Fall angemessen ausgewählt werden. Der Fachmann erkennt, dass derartige Überlegungen ähnlich denjenigen bei RAID-Anwendungen sind. Bei einigen Ausführungsformen der Erfindung kann die Flash-Steuereinheit so gestaltet sein, dass die Größe von C2-Streifen und C2-Breiten während des Betriebs dynamisch angepasst wird. So könnte die Flash-Steuereinheit z.B. abhängig von vorgegebenen Kriterien, z.B. abhängig von der Größe einer Schreibanforderung, zwischen verschiedenen Streifen/Breiten-Größen wechseln. Zudem könnte die Breiten-Länge verringert werden, wenn die Blöcke z.B. aufgrund von nachlassender Leistungsfähigkeit und Alterung immer weniger zuverlässig werden. Entsprechende Anpassungen der beschriebenen Ausführungsform sind für den Fachmann offensichtlich.
  • Es dürfte deutlich geworden sein, dass an den obigen Ausführungsformen zahlreiche weitere Änderungen und Anpassungen vorgenommen werden können. So könnten - obwohl die logischen Teilbereiche für die C2-Codierung an den Speicherkanälen in der SSD 5 ausgerichtet sind - diese Teilbereiche generell auch ein beliebiger Teilsatz des verfügbaren Speichers sein. Die Teilbereiche könnten z.B. alternativ aus den entsprechenden Flash-Speicherplättchen 9 aus 2 bestehen. Außerdem könnten die C2-Codes selbstverständlich auch in einem beliebigen Speicherteilbereich gespeichert werden, wobei dieser nicht für alle Breiten identisch sein müsste. Darüber hinaus müssen einzelne C2-Codewörter nicht zwingend alle Teilbereiche umspannen. Bei der Einheit 5 könnten die C2-Breiten z.B. alternativ eine Vielzahl von Kanälen umspannen, die weniger als die Gesamtzahl n beträgt, wobei die Gruppe von Breiten insgesamt auf alle Kanäle verteilt sein könnte. Wenn ein neuer Streifen ausgewählt wird, um einen unbrauchbaren Streifen im Rahmen des C2-Fehlerkorrekturprozesses zu ersetzen, kann der neue Streifen in diesem Fall aus demselben Speicherkanal oder aus einem beliebigen anderen Kanal ausgewählt werden, der nicht bereits einen Streifen derselben Breite enthält. Auch die Breiten-Länge kann verringert werden, so dass Breiten weniger Kanäle umspannen, wenn die Zuverlässigkeit von Blöcken, wie oben beschrieben, nachlässt.
  • Die Bereitstellung einer C1-Codierung ist zwar wünschenswert, für die Funktion der Ausführungsformen der Erfindung jedoch nicht notwendig. Außerdem kann die Erfindung, obwohl konkret eine NAND-Flash-Einheit beschrieben wurde, auch auf andere Arten von SSD angewendet werden.
  • An den oben beschriebenen beispielhaften Ausführungsformen können zahlreiche weitere Änderungen und Anpassungen vorgenommen werden, ohne vom Geltungsumfang der Erfindung abzuweichen.

Claims (15)

  1. Steuervorrichtung (7) für eine Halbleiter-Speichereinheit (5), in welcher der Halbleiterspeicher (6) löschbare Blöcke umfasst, von denen jeder eine Vielzahl von Datenschreib-Speicherstellen umfasst, wobei die Steuervorrichtung (7) einen Speicher (13) und Steuerlogik (10) umfasst, die gestaltet sind, um: Eingabedaten in aufeinanderfolgenden Gruppen von Datenschreib-Speicherstellen zu speichern, die auf eine Vielzahl von logischen Teilbereichen des Halbleiterspeichers (6) verteilt sind, wobei jede Gruppe in jedem logischen Teilbereich eine oder mehrere Schreib-Speicherstellen umfasst, und zwar in einem Satz von einem oder mehreren löschbaren Blöcken in jedem Teilbereich; die Eingabedaten so für eine Fehlerkorrektur zu codieren, dass eine jede Gruppe einen Fehlerkorrektur-Code für die Eingabedaten in der Gruppe enthält; in dem Speicher (13) Metadaten zu verwalten, welche die Speicherstelle von Eingabedaten in dem Halbleiterspeicher (6) angeben; eine Angabe für die Gültigkeit von Daten zu verwalten, die in einer jeden Datenschreib-Speicherstelle gespeichert sind; und für den Fall, dass eine Datenschreib-Speicherstelle einer Gruppe von Datenschreib-Speicherstellen einen Fehler enthält, vor dem Löschen des Blocks gültige Eingabedaten unter Verwendung des Fehlerkorrektur-Codes aus der oder aus jeder Gruppe wiederherzustellen, die Schreib-Speicherstellen in dem Block enthält, und die wiederhergestellten Daten als neue Eingabedaten neu zu speichern.
  2. Vorrichtung nach Anspruch 1, wobei die Steuerlogik (10) so gestaltet ist, dass in aufeinanderfolgenden Phasen während des Speicherns von Eingabedaten in den Schreib-Speicherstellen einer jeden Gruppe die Steuerlogik (10) einen vorübergehenden Fehlerkorrektur-Code für die Eingabedaten berechnet, die dann in der Gruppe gespeichert werden.
  3. Vorrichtung nach Anspruch 2, wobei die Steuerlogik (10) so gestaltet ist, dass sie als Reaktion auf eine Unterbrechung der Stromversorgung für die Steuervorrichtung (7) den vorübergehenden Fehlerkorrektur-Code in dem Halbleiterspeicher (6) speichert.
  4. Vorrichtung nach einem beliebigen vorangegangenen Anspruch, wobei die Steuerlogik (10) so gestaltet ist, dass sie abhängig von der Anzahl von Schreib-Speicherstellen, die ungültige Daten in der Gruppe oder den Gruppen enthalten, die Schreib-Speicherstellen in dem Block enthalten, einen Block zum Löschen auswählt.
  5. Vorrichtung nach einem beliebigen vorangegangenen Anspruch, wobei die Halbleiter-Speichereinheit (5) eine Vielzahl von Speicherkanälen aufweist, die jeweils einen Satz (8) von Halbleiter-Speichereinheiten (9) aufweisen, und wobei jeder der logischen Teilbereiche den Satz (8) von Einheiten (9) in einem entsprechenden Kanal umfasst.
  6. Vorrichtung nach einem beliebigen der Ansprüche 1 bis 4, wobei der Halbleiterspeicher (6) eine Vielzahl von Speichereinheiten (9) umfasst und wobei jeder der logischen Teilbereiche eine entsprechende Speichereinheit (9) umfasst.
  7. Vorrichtung nach einem beliebigen vorangegangenen Anspruch, wobei die Steuerlogik (10) so gestaltet ist, dass jede Gruppe einen Satz von aufeinanderfolgenden Schreib-Speicherstellen in jedem Block der Gruppe enthält.
  8. Vorrichtung nach einem beliebigen vorangegangenen Anspruch, wobei die Steuerlogik (10) so gestaltet ist, dass sich alle Gruppen, die einen Block in einem logischen Teilbereich gemeinsam nutzen, auch einen gemeinsamen Block in jedem logischen Teilbereich gemeinsam nutzen.
  9. Vorrichtung nach einem beliebigen vorangegangenen Anspruch, wobei die Steuerlogik (10) so gestaltet ist, dass sie die Anzahl von Schreib-Speicherstellen in der Gruppe in Abhängigkeit von vorgegebenen Kriterien dynamisch anpasst.
  10. Vorrichtung nach einem beliebigen vorangegangenen Anspruch, wobei die Metadaten eine Adressabbildung umfassen, die eine Zuordnung zwischen logischen Adressen, welche entsprechenden Eingabedatenblöcken zugehörig sind, und physischen Adressen, welche Schreib-Speicherstellen in dem Halbleiterspeicher (6) angeben, angibt.
  11. Halbleiter-Speichereinheit (5), die einen Halbleiterspeicher (6), der löschbare Blöcke umfasst, von denen jeder einen Satz von Datenschreib-Speicherstellen umfasst, sowie eine Steuervorrichtung (7) gemäß einem beliebigen vorangegangenen Anspruch umfasst.
  12. Verfahren für das Steuern einer Halbleiter-Speichereinheit (5), in welcher der Halbleiterspeicher (6) löschbare Blöcke umfasst, die jeweils eine Vielzahl von Datenschreib-Speicherstellen umfassen, wobei das Verfahren Folgendes umfasst: Speichern von Eingabedaten in aufeinanderfolgenden Gruppen von Datenschreib-Speicherstellen, die auf eine Vielzahl von logischen Teilbereichen des Halbleiterspeichers (6) verteilt sind, wobei jede Gruppe in jedem logischen Teilbereich eine oder mehrere Schreib-Speicherstellen umfasst, und zwar in einem Satz von löschbaren Blöcken in jedem Teilbereich; Fehlerkorrektur-Codierung der Eingabedaten, so dass eine jede Gruppe einen Fehlerkorrektur-Code für die Eingabedaten in der Gruppe enthält; Verwalten von Metadaten in dem Speicher (13) der Halbleiter-Speichereinheit (5), welche die Speicherstelle von Eingabedaten in dem Halbleiterspeicher (6) angeben; Verwalten einer Angabe der Gültigkeit von Daten, die in einer jeden Datenschreib-Speicherstelle gespeichert sind; und für den Fall, dass eine Datenschreib-Speicherstelle einer Gruppe von Datenschreib-Speicherstellen einen Fehler enthält, Wiederherstellen gültiger Eingabedaten unter Verwendung des Fehlerkorrektur-Codes aus der oder aus einer jeden Gruppe, die Schreib-Speicherstellen in dem Block enthält, vor dem Löschen eines Blocks und erneutes Speichern der wiederhergestellten Daten als neue Eingabedaten.
  13. Verfahren nach Anspruch 12, das in aufeinanderfolgenden Phasen während der Speicherung von Eingabedaten in den Schreib-Speicherstellen einer jeden Gruppe das Berechnen eines vorübergehenden Fehlerkorrektur-Codes für die Eingabedaten beinhaltet, der dann in der Gruppe gespeichert wird.
  14. Verfahren nach Anspruch 13, welches das Speichern des vorübergehenden Fehlerkorrektur-Codes in dem Halbleiterspeicher (6) als Reaktion auf eine Unterbrechung der Stromversorgung für die Einheit (5) beinhaltet.
  15. Computerprogramm, das ein Programmcodemittel umfasst, um einen Computer zu veranlassen, ein Verfahren nach einem beliebigen der Ansprüche 12 bis 14 durchzuführen.
DE112010003887.2T 2009-12-17 2010-12-16 Datenverwaltung in Halbleiter-Speichereinheiten Active DE112010003887B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP09179746 2009-12-17
EP09179746.4 2009-12-17
PCT/IB2010/055874 WO2011073939A1 (en) 2009-12-17 2010-12-16 Data management in solid state storage devices

Publications (2)

Publication Number Publication Date
DE112010003887T5 DE112010003887T5 (de) 2012-08-23
DE112010003887B4 true DE112010003887B4 (de) 2020-03-12

Family

ID=43799541

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112010003887.2T Active DE112010003887B4 (de) 2009-12-17 2010-12-16 Datenverwaltung in Halbleiter-Speichereinheiten

Country Status (6)

Country Link
US (2) US8904261B2 (de)
CN (1) CN102656567B (de)
DE (1) DE112010003887B4 (de)
GB (1) GB2488457B (de)
TW (1) TWI497293B (de)
WO (1) WO2011073939A1 (de)

Families Citing this family (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI497293B (zh) 2009-12-17 2015-08-21 Ibm 固態儲存裝置內之資料管理
DE112010004863B4 (de) * 2009-12-17 2019-10-10 International Business Machines Corporation Datenverwaltung in Festkörperspeichersystemen
US11789631B2 (en) * 2010-11-29 2023-10-17 Pure Storage, Inc. Utilizing metadata storage trees in a vast storage network
US9336139B2 (en) * 2010-11-29 2016-05-10 Cleversafe, Inc. Selecting a memory for storage of an encoded data slice in a dispersed storage network
JP5917163B2 (ja) * 2011-01-27 2016-05-11 キヤノン株式会社 情報処理装置、その制御方法及びプログラム並びに記憶媒体
KR101778782B1 (ko) * 2011-04-08 2017-09-27 삼성전자주식회사 데이터 저장 장치 및 그것의 동작 방법
US9026845B2 (en) * 2012-05-15 2015-05-05 Dell Products L.P. System and method for failure protection in a storage array
CN107066202B (zh) * 2013-03-11 2020-07-28 北京忆恒创源科技有限公司 具有多个固态盘的存储设备
CN103218270B (zh) * 2013-03-11 2016-08-17 北京忆恒创源科技有限公司 具有多个固态盘的计算机
US9009397B1 (en) * 2013-09-27 2015-04-14 Avalanche Technology, Inc. Storage processor managing solid state disk array
US8954657B1 (en) * 2013-09-27 2015-02-10 Avalanche Technology, Inc. Storage processor managing solid state disk array
US9218279B2 (en) 2013-03-15 2015-12-22 Western Digital Technologies, Inc. Atomic write command support in a solid state drive
US8966164B1 (en) * 2013-09-27 2015-02-24 Avalanche Technology, Inc. Storage processor managing NVME logically addressed solid state disk array
CN103257902B (zh) * 2013-04-10 2017-02-08 深圳市硅格半导体有限公司 Nvram控制方法及系统
US9170938B1 (en) 2013-05-17 2015-10-27 Western Digital Technologies, Inc. Method and system for atomically writing scattered information in a solid state storage device
US9323617B2 (en) * 2013-05-31 2016-04-26 Hewlett Packard Enterprise Development Lp Remap raid to maintain raid level
KR102072829B1 (ko) 2013-06-14 2020-02-03 삼성전자주식회사 저장 장치 및 그것을 포함하는 데이터 저장 시스템의 글로벌 가비지 컬렉션 방법
CN104424110B (zh) 2013-09-10 2017-11-14 Lsi公司 固态驱动器的主动回收
TWI585778B (zh) * 2013-11-05 2017-06-01 威盛電子股份有限公司 非揮發性記憶體裝置的操作方法
US9911509B2 (en) * 2013-12-06 2018-03-06 Intel Corporation Counter to locate faulty die in a distributed codeword storage system
TWI523025B (zh) * 2013-12-27 2016-02-21 慧榮科技股份有限公司 資料儲存裝置及其錯誤校正方法
US9323607B2 (en) 2014-04-29 2016-04-26 Seagate Technology Llc Data recovery once ECC fails to correct the data
EP2988221B1 (de) * 2014-06-27 2017-08-09 Huawei Technologies Co., Ltd. Steuerung, flash-speichervorrichtung und verfahren zum schreiben von daten in eine flash-speicher-vorrichtung
US9529672B2 (en) * 2014-09-25 2016-12-27 Everspin Technologies Inc. ECC word configuration for system-level ECC compatibility
US9959059B2 (en) * 2014-10-20 2018-05-01 Sandisk Technologies Llc Storage error management
EP3021208B1 (de) * 2014-11-14 2019-01-09 Dot Hill Systems Corporation Verfahren und vorrichtung zur verarbeitung asynchroner ströme
CN104407813B (zh) * 2014-11-20 2019-02-19 上海宝存信息科技有限公司 一种基于固态存储介质的raid系统及方法
TWI567550B (zh) * 2015-03-04 2017-01-21 慧榮科技股份有限公司 資料儲存裝置及其資料維護方法
CN105938419B (zh) 2015-03-04 2019-05-14 慧荣科技股份有限公司 数据储存装置及其数据维护方法
US9766837B2 (en) 2015-06-10 2017-09-19 Micron Technology, Inc. Stripe mapping in memory
CN105159843B (zh) * 2015-10-19 2018-07-31 深圳芯邦科技股份有限公司 一种基于超级块的多通道管理方法与系统
US20170179979A1 (en) * 2015-12-18 2017-06-22 Netapp, Inc. Systems and Methods for Minimum Storage Regeneration Erasure Code Construction Using r-Ary Trees
KR102533389B1 (ko) 2016-02-24 2023-05-17 삼성전자주식회사 장치 수명을 향상시키는 데이터 저장 장치 및 이를 포함하는 raid 시스템
US10101939B2 (en) * 2016-03-09 2018-10-16 Toshiba Memory Corporation Storage system having a host that manages physical data locations of a storage device
US9852025B2 (en) 2016-03-29 2017-12-26 Alibaba Group Holding Limited Protecting data stored on a solid state drive
CN106020735A (zh) * 2016-05-31 2016-10-12 晨星半导体股份有限公司 一种数据存储方法及数据存储装置
US10452477B2 (en) * 2016-08-26 2019-10-22 Netapp, Inc. Multiple node repair using high rate minimum storage regeneration erasure code
US10740294B2 (en) * 2017-01-12 2020-08-11 Pure Storage, Inc. Garbage collection of data blocks in a storage system with direct-mapped storage devices
CN108733313B (zh) * 2017-04-17 2021-07-23 伊姆西Ip控股有限责任公司 利用预备盘建立多级闪速缓存的方法、设备和计算机可读介质
CN114546293A (zh) * 2017-09-22 2022-05-27 慧荣科技股份有限公司 快闪存储器的数据内部搬移方法以及使用该方法的装置
US10621084B2 (en) 2018-03-05 2020-04-14 International Business Machines Corporation Efficient garbage collection in the presence of block dependencies
US10740181B2 (en) * 2018-03-06 2020-08-11 Western Digital Technologies, Inc. Failed storage device rebuild method
US10860446B2 (en) 2018-04-26 2020-12-08 Western Digital Technologiies, Inc. Failed storage device rebuild using dynamically selected locations in overprovisioned space
US10558565B2 (en) 2018-05-29 2020-02-11 Microsoft Technology Licensing, Llc Garbage collection implementing erasure coding
US10901848B2 (en) 2018-08-03 2021-01-26 Western Digital Technologies, Inc. Storage systems with peer data recovery
US10824526B2 (en) 2018-08-03 2020-11-03 Western Digital Technologies, Inc. Using failed storage device in peer-to-peer storage system to perform storage-centric task
US10831603B2 (en) 2018-08-03 2020-11-10 Western Digital Technologies, Inc. Rebuild assist using failed storage device
US11169726B2 (en) 2018-09-13 2021-11-09 Toshiba Memory Corporation Pool-level storage management
US10824556B2 (en) 2018-11-05 2020-11-03 International Business Machines Corporation Adaptive garbage collection (GC) utilization for grid storage systems
US11182258B2 (en) 2019-01-04 2021-11-23 Western Digital Technologies, Inc. Data rebuild using dynamic peer work allocation
US10990316B2 (en) * 2019-06-28 2021-04-27 Western Digital Technologies, Inc. Log-based storage for different data types in non-volatile memory
US11467976B2 (en) * 2020-07-30 2022-10-11 Micron Technology, Inc. Write requests with partial translation units

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080201392A1 (en) * 2007-02-19 2008-08-21 Hitachi, Ltd. Storage system having plural flash memory drives and method for controlling data storage
US20090125671A1 (en) * 2006-12-06 2009-05-14 David Flynn Apparatus, system, and method for storage space recovery after reaching a read count limit
US20090287956A1 (en) * 2008-05-16 2009-11-19 David Flynn Apparatus, system, and method for detecting and replacing failed data storage

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8341332B2 (en) 2003-12-02 2012-12-25 Super Talent Electronics, Inc. Multi-level controller with smart storage transfer manager for interleaving multiple single-chip flash memory devices
US8412879B2 (en) * 2002-10-28 2013-04-02 Sandisk Technologies Inc. Hybrid implementation for error correction codes within a non-volatile memory system
US8239735B2 (en) * 2006-05-12 2012-08-07 Apple Inc. Memory Device with adaptive capacity
JP4842719B2 (ja) * 2006-06-28 2011-12-21 株式会社日立製作所 ストレージシステム及びそのデータ保護方法
US8046660B2 (en) * 2006-08-07 2011-10-25 Marvell World Trade Ltd. System and method for correcting errors in non-volatile memory using product codes
WO2008070191A2 (en) * 2006-12-06 2008-06-12 Fusion Multisystems, Inc. (Dba Fusion-Io) Apparatus, system, and method for a reconfigurable baseboard management controller
US8019959B2 (en) * 2007-02-09 2011-09-13 Marvell World Trade Ltd. Nonvolatile memory system
US20080288712A1 (en) * 2007-04-25 2008-11-20 Cornwell Michael J Accessing metadata with an external host
JP2008287404A (ja) * 2007-05-16 2008-11-27 Hitachi Ltd 読み出しによる非アクセスメモリセルのデータ破壊を検出及び回復する装置、及びその方法
WO2008150927A2 (en) * 2007-05-30 2008-12-11 Schooner Information Technology System including a fine-grained memory and a less-fine-grained memory
US8095851B2 (en) * 2007-09-06 2012-01-10 Siliconsystems, Inc. Storage subsystem capable of adjusting ECC settings based on monitored conditions
CN100555246C (zh) * 2007-09-24 2009-10-28 中兴通讯股份有限公司 一种在闪存上存取数据的系统及方法
US7873803B2 (en) * 2007-09-25 2011-01-18 Sandisk Corporation Nonvolatile memory with self recovery
EP2240058A1 (de) 2008-02-08 2010-10-20 Domo Vision Ag Gerät zum rühren, aufschäumen und gegebenenfalls erwärmen flüssiger nahrungsmittel
US8843691B2 (en) * 2008-06-25 2014-09-23 Stec, Inc. Prioritized erasure of data blocks in a flash storage device
US8744071B2 (en) * 2009-04-20 2014-06-03 Cleversafe, Inc. Dispersed data storage system data encryption and encoding
TWI428917B (zh) * 2009-11-25 2014-03-01 Silicon Motion Inc 快閃記憶裝置、資料儲存系統、以及資料儲存系統之運作方法
TWI497293B (zh) 2009-12-17 2015-08-21 Ibm 固態儲存裝置內之資料管理
DE112010004863B4 (de) * 2009-12-17 2019-10-10 International Business Machines Corporation Datenverwaltung in Festkörperspeichersystemen

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090125671A1 (en) * 2006-12-06 2009-05-14 David Flynn Apparatus, system, and method for storage space recovery after reaching a read count limit
US20080201392A1 (en) * 2007-02-19 2008-08-21 Hitachi, Ltd. Storage system having plural flash memory drives and method for controlling data storage
US20090287956A1 (en) * 2008-05-16 2009-11-19 David Flynn Apparatus, system, and method for detecting and replacing failed data storage

Also Published As

Publication number Publication date
US9176817B2 (en) 2015-11-03
TWI497293B (zh) 2015-08-21
GB2488457A (en) 2012-08-29
GB2488457B (en) 2018-01-03
CN102656567B (zh) 2015-02-25
DE112010003887T5 (de) 2012-08-23
US8904261B2 (en) 2014-12-02
GB201207325D0 (en) 2012-06-13
US20130013980A1 (en) 2013-01-10
CN102656567A (zh) 2012-09-05
TW201131359A (en) 2011-09-16
US20120266050A1 (en) 2012-10-18
WO2011073939A1 (en) 2011-06-23

Similar Documents

Publication Publication Date Title
DE112010003887B4 (de) Datenverwaltung in Halbleiter-Speichereinheiten
DE112010004863B4 (de) Datenverwaltung in Festkörperspeichersystemen
DE102017120840B4 (de) Verfahren und Vorrichtung zur Detektion und Handhabung von Lesestörungen
DE112018004256T5 (de) Redundanzcodierstreifen basierend auf internen adressen von speichervorrichtungen
DE112011103295B4 (de) Decodieren in Solid-State-Speichereinheiten
DE112010003345B4 (de) Datenspeichersystem und Verfahren für das Betreiben eines Datenspeichersystems
DE112014001305B4 (de) Auswahl einer redundanten Datenspeicherkonfiguration auf der Grundlage verfügbaren Speicherplatzes
DE60303895T2 (de) Hybridimplementierung von Fehlerkorrekturkoden eines nichtflüchtigen Speichersystems
DE112020000184T5 (de) In zonen unterteilte namensräume in festkörperlaufwerken
TWI484334B (zh) 非揮發記憶體的區域式管理方法
DE102019123709A1 (de) Verwendung verschachtelter schreibvorgänge zur trennung von die-ebenen
DE102018105854A1 (de) Dynamische Größenanpassung logischer Speicherblöcke
DE112015000378T5 (de) Selektives Rückkopieren für einen auf einem Chipplättchen gepufferten nichtflüchtigen Speicher
DE112015004863T5 (de) Verfolgen der Vermischung von Schreibvorgängen und Entabbildungsbefehlen über Stromversorgungszyklen
DE102017124079A1 (de) Speichervorrichtung zum Verarbeiten von beschädigten Metadaten und Verfahren zum Betreiben derselben
DE112019005369T5 (de) Verfahren zum umschalten zwischen herkömmlicher ssd und open-channel-ssd ohne datenverlust
DE102013106242A1 (de) Halbleiterlaufwerk mit Konvertierungsschicht (ETL) und Umleitung von temporären Dateien zur Verschleissminderung von Flashspeichern
DE112015004873T5 (de) Verarbeitung von Entabbildungsbefehlen zur Verbesserung der Leistungsfähigkeit und Standzeit einer Speicherungsvorrichtung
DE102017114078A1 (de) Fehlerabschwächung für 3d-nand-flash-speicher
DE112020002792B4 (de) Verschleissorientierte blockmodusumwandlung in nichtflüchtigen speichern
DE102009034651A1 (de) Prozess und Verfahren zur Abbildung von logischen Adressen auf physische Adressen in Festkörperplatten
DE112018004252T5 (de) Redundanzcodierstreifen auf der basis eines koordinierten internen adressschemas über mehrere vorrichtungen
DE112013006504T5 (de) Speichersystem und Datenverwaltungsverfahren
DE112011102160T5 (de) Wear-levelling bei Zellen/Seiten/Teilseiten/Blöcken eines Speichers
DE102018123670A1 (de) Speicherungssystem, Rechensystem und Verfahren dafür

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R084 Declaration of willingness to licence
R020 Patent grant now final