-
Diese Anmeldung beansprucht den Nutzen unter 35 U.S.C. § 119(e) der vorläufigen US-Anmeldung mit der Nr. 62/368,953, mit dem Titel NON-BINARY LDPC FOR 3D-NAND AND OTHER NON-VOLATILE STORAGE und eingereicht am 29. Juli 2016, die hiermit hierin unter Bezugnahme aufgenommen wird.
-
HINTERGRUND
-
Daten werden in einem Flash-Speicher gespeichert, indem Flash-Speicherzellen zu Programmpegeln, die gewünschten Datenwerten entsprechen, programmiert werden. Durch die Verbesserung der Flash-Speichertechnologie ist die Anzahl von Programmpegeln, die zum Programmieren in individuellen Flash-Speicherzellen zur Verfügung stehen, von den zwei Programmpegeln, die in einem zum Speichern von einem Bit von Daten verwendeten Einzelpegelzellen(SLC)-NAND-Flash-Speicher zur Verfügung stehen, gestiegen. Beispielsweise nutzt ein Mehrpegelzellen(MLC)-NAND-Flash-Speicher vier Programmpegel zum Speichern von zwei Bit von Daten in jeder Flash-Speicherzelle, ein Dreifachpegelzellen(TLC)-NAND-Flash-Speicher verwendet acht Programmpegel zum Speichern von drei Bit von Daten in jeder Flash-Speicherzelle und ein Vierfachpegelzellen(QLC)-NAND-Flash-Speicher verwendet sechzehn Programmpegel zum Speichern von vier Bit von Daten in jeder Flash-Speicherzelle. Da neuere Technologien wie etwa 3D-NAND-Flash-Speicher eine noch höhere Anzahl von verfügbaren Programmpegeln bereitstellen, beeinträchtigt die binäre Art, wie Daten gegenwärtig in einen Flash-Speicher geschrieben werden und aus diesem gelesen werden, die Leistung des Flash-Speichers.
-
KURZDARSTELLUNG
-
Gemäß Aspekten der vorliegenden Technologie ist ein Verfahren bereitgestellt, das Empfangen von binären Daten zur Speicherung in einer nichtflüchtigen Speichereinrichtung und Umwandeln der binären Daten in nichtbinäre Daten beinhaltet. Das Verfahren beinhaltet ferner Codieren der nichtbinären Daten, um ein Codewort zu erzeugen, und Schreiben des Codewortes in eine Wortleitung der nichtflüchtigen Speichereinrichtung.
-
Gemäß Aspekten der vorliegenden Technologie ist ein Datenspeicherungssystem bereitgestellt. Das Datenspeicherungssystem beinhaltet mehrere nichtflüchtige Speichereinrichtungen und eine Steuerung. Die Steuerung ist zum Empfangen von ersten binären Daten zur Speicherung im Datenspeicherungssystem und zum Umwandeln von Werten mit Basis zwei der ersten binären Daten in erste nichtbinäre Daten, die Werte mit Basis X umfassen, wobei X eine ganze Zahl größer als zwei ist, konfiguriert. Die Steuerung ist ferner zum Codieren der ersten nichtbinären Daten, um ein erstes Codewort zu erzeugen, und zum Schreiben des ersten Codewortes in eine Wortleitung einer ersten nichtflüchtigen Speichereinrichtung der mehreren nichtflüchtigen Speichereinrichtungen konfiguriert.
-
Gemäß Aspekten der vorliegenden Technologie ist ein prozessorlesbares Medium, das mit Anweisungen codiert ist, bereitgestellt, die, wenn sie durch einen Prozessor ausgeführt werden, ein Verfahren durchführen. Das Verfahren beinhaltet Assoziieren einer nichtflüchtigen Speichereinrichtung mit einem Wert X basierend auf einer Eigenschaft der nichtflüchtigen Speichereinrichtung, wobei X eine ganze Zahl größer als zwei ist. Das Verfahren beinhaltet ferner Empfangen von binären Daten zur Speicherung in der nichtflüchtigen Speichereinrichtung und Umwandeln von Werten mit Basis zwei der binären Daten in nichtbinäre Daten, die Werte mit Basis X umfassen. Das Verfahren beinhaltet ferner Codieren der nichtbinären Daten, um ein Codewort zu erzeugen, und Schreiben des Codewortes in eine Wortleitung der nichtflüchtigen Speichereinrichtung.
-
Gemäß Aspekten der vorliegenden Technologie ist ein Datenspeicherungssystem bereitgestellt, das eine nichtflüchtige Speichereinrichtung beinhaltet. Das Datenspeicherungssystem beinhaltet ferner Mittel zum Empfangen von binären Daten zur Speicherung in der nichtflüchtigen Speichereinrichtung und Mittel zum Umwandeln von Werten mit Basis zwei der binären Daten in nichtbinäre Daten, die Werte mit Basis X umfassen, wobei X eine ganze Zahl größer als zwei ist. Das Datenspeicherungssystem beinhaltet ferner Mittel zum Codieren der nichtbinären Daten, um ein Codewort zu erzeugen, und Mittel zum Schreiben des Codewortes in eine Wortleitung der nichtflüchtigen Speichereinrichtung.
-
Es versteht sich, dass andere Konfigurationen der vorliegenden Technologie Fachleuten aus der folgenden ausführlichen Beschreibung ersichtlich werden, wobei verschiedene Konfigurationen der vorliegenden Technologie zur Veranschaulichung dargestellt und beschrieben sind. Wie erkannt werden wird, ist die vorliegende Technologie zu anderen und unterschiedlichen Konfigurationen imstande und ihre mehreren Einzelheiten sind zu einer Modifikation in verschiedenen anderen Hinsichten imstande, ohne jeweils vom Schutzumfang der vorliegenden Technologie abzuweichen. Dementsprechend soll in Betracht gezogen werden, dass die Zeichnungen und die ausführliche Beschreibung veranschaulichend und nicht einschränkend sind.
-
KURZE BESCHREIBUNG DER ZEICHNUNGEN
-
1 ist ein Blockdiagramm, das Komponenten eines Datenspeicherungssystems 100 gemäß Aspekten der vorliegenden Technologie veranschaulicht.
-
2 ist ein Blockdiagramm, das Komponenten einer Steuerung gemäß Aspekten der vorliegenden Technologie veranschaulicht.
-
3 ist ein Diagramm, das den Fluss von Daten, die in einen nichtflüchtigen Speicher geschrieben und aus diesem gelesen werden, gemäß Aspekten der vorliegenden Technologie veranschaulicht.
-
4 ist eine Tabelle, die entsprechende Werte für die Anzahl von Programmpegeln pro Speicherzelle, die Anzahl von codierten Bits pro Speicherzelle und die Anzahl von 1-kB-, 2-kB- und 4-kB-Codewörtern, die in einer Wortleitung mit 16-kB-Speicherzellen gespeichert werden können, auflistet.
-
5 ist eine graphische Darstellung verschiedener Werte von X, die für ein Flash-Speicher-Die mit verschiedenen Altern und Qualitätsstufen ausgewählt werden.
-
6 ist ein Flussdiagramm, das einen Prozess zum Schreiben von Daten in eine Wortleitung gemäß Aspekten der vorliegenden Technologie abbildet.
-
AUSFÜHRLICHE BESCHREIBUNG
-
Es ist beabsichtigt, dass die im Folgenden dargelegte ausführliche Beschreibung eine Beschreibung verschiedener Konfigurationen der vorliegenden Technologie ist, und es ist nicht beabsichtigt, dass sie die einzigen Konfigurationen, in denen die vorliegende Technologie realisiert werden kann, repräsentiert. Die angehängten Zeichnungen sind hierin aufgenommen und bilden ein Teil der ausführlichen Beschreibung. Die ausführliche Beschreibung beinhaltet spezifische Einzelheiten zum Zweck der Bereitstellung eines umfassenden Verständnisses der vorliegenden Technologie. Die vorliegende Technologie kann jedoch ohne diese spezifischen Einzelheiten realisiert werden. In manchen Fällen sind Strukturen und Komponenten in Blockdiagrammform dargestellt, um ein Verdunkeln der Konzepte der vorliegenden Technologie zu vermeiden. Ähnliche Komponenten sind zum leichten Verständnis mit identischen Elementnummern beschriftet.
-
Die vorliegende Technologie entfernt sich von den binären Einschränkungen von Flash-Speichersystemen, die dazu konfiguriert sind, eine ganzzahlige Anzahl von Binärbits pro Flash-Speicherzelle zu speichern. Derartige Flash-Speichersysteme sind darauf eingeschränkt, eine Anzahl von Programmierpegeln zu verwenden, die gleich einer Potenz von zwei (2n) sind. Wie zum Beispiel oben angemerkt wurde, verwendet ein SLC-NAND-Flash-Speicher zwei Programmierpegel zum Speichern eines einzelnen Bit, ein MLC-NAND-Flash-Speicher verwendet vier Programmierpegel zum Speichern von zwei Bit und ein TLC-NAND-Flash-Speicher verwendet acht Programmierpegel zum Speichern von drei Bit. Diese Arten von Flash-Speicher können Modi repräsentieren, in denen Flash-Speicher-Dies basierend auf Charakteristiken der Flash-Speicher-Dies betrieben werden. Beispielsweise können neuere Flash-Speicher-Dies oder Flash-Speicher-Dies mit höherer Qualität in der Lage sein, eine größere Anzahl von Programmpegeln zum Speichern von Daten als die Anzahl von Programmpegeln, die in älteren Flash-Speicher-Dies oder in Flash-Speicher-Dies mit niedrigerer Qualität zur Verfügung stehen, akkurat zu programmieren und zu lesen. Die binären Einschränkungen dieser Betriebsmodi zwingen die Flash-Speichersysteme, zwei Programmpegel, vier Programmpegel, acht Programmpegel, sechzehn Programmpegel usw. zu verwenden. Die binären Einschränkungen lassen potentiell jedoch die Kapazität und Leistung von Flash-Speicher-Dies, die in der Lage sind, verschiedene Anzahlen von Programmpegeln zu nutzen, als unerreichbar.
-
Die vorliegende Technologie erhöht die Flexibilität, mit der Flash-Speicher-Dies verwendet werden können, indem binäre Daten in nichtbinäre Daten umgewandelt werden und die nichtbinären Daten unter Verwendung eines nichtbinären Codierungsschemas, wie etwa einer nichtbinären LDPC(Low-Density Parity-Check)-Codierung, codiert werden, bevor die Daten in einen Flash-Speicher-Die geschrieben werden. Die Zahlenbasis der nichtbinären Daten und der nichtbinären Codierung kann basierend auf der Anzahl von Programmpegeln, die der Flash-Speicher-Die in der Lage ist, zu programmieren und mit einer gewünschten Fehlerrate zu lesen, ausgewählt werden. Eine Prüfung oder Simulation kann zum Beispiel bestimmen, dass ein Flash-Speicher-Die in der Lage ist, sieben Programmpegel zum Speichern von Daten zu verwenden. Bei diesem Beispiel werden die Werte mit Basis zwei der binären Daten, die zur Speicherung designiert sind, in Werte mit Basis sieben umgewandelt. Die umgewandelten Werte mit Basis sieben können dann unter Verwendung einer nichtbinären LDPC, bei der die von Null verschiedenen Elemente der Codierungsmatrix mit Elementen eines Galois-Felds GF(7) aufgefüllt werden, in ein Codewort codiert werden. Sobald es codiert ist, kann das Codewort in eine Wortleitung im Flash-Speicher-Die geschrieben werden. Jeder der sieben Programmpegel entspricht einem jeweiligen einzigartigen Symbol/einer jeweiligen einzigartigen Ziffer in der Nummerierung mit Basis sieben (z.B. 1, 2, 3, 4, 5, 6, 7), so dass eine Speicherzelle einen Datenwert, der einem bestimmten Symbol/einer bestimmten Ziffer entspricht, speichert, indem die Speicherzelle zum Programmpegel, der dem bestimmten Symbol/der bestimmten Ziffer entspricht, programmiert wird. Beim Lesen des Codewortes aus der Wortleitung wird das Codewort unter Verwendung der nichtbinären LDPC decodiert, bei der die von Null verschiedenen Elemente der Decodierungsmatrix mit Elementen des Galois-Felds GF(7) aufgefüllt werden. Im Gegensatz zu den binären Systemen eines MLC-, TLC-, QLC-Flash-Speichers usw., nutzt die vorliegende Technologie keine Gray-Codierung, um Daten aus Wortleitungen zu lesen. Die decodierten nichtbinären Daten werden dann zurück in binäre Daten umgewandelt. Diese Vorgänge werden im Folgenden ausführlicher beschrieben.
-
1 ist ein Blockdiagramm, das Komponenten eines Datenspeicherungssystems 100 gemäß Aspekten der vorliegenden Technologie veranschaulicht. Wie in 1 abgebildet, beinhaltet ein Datenspeicherungssystem 100 eine Steuerung 110, einen flüchtigen Speicher 120, nichtflüchtige Speichereinrichtungen 130 und eine Host-Schnittstelle 140. Die Steuerung 110 ist zum Verarbeiten von Anfragen, die von einem Host-System 150 über die Host-Schnittstelle 140 empfangen werden, konfiguriert, um auf Daten in den nichtflüchtigen Speichereinrichtungen 130 zuzugreifen. Die vom Host-System 150 empfangenen Datenzugriffsanfragen können Schreibanfragen zum Speichern von Host-Daten im nichtflüchtigen Speicher 130, Leseanfragen zum Abrufen von Host-Daten, die in den nichtflüchtigen Speichereinrichtungen 130 gespeichert sind, und Löschanfragen zum Löschen von Host-Daten, die in den nichtflüchtigen Speichereinrichtungen 130 gespeichert sind, beinhalten. Andere Arten von Anfragen, wie etwa Statusanfragen oder Einrichtungsverwaltungsanfragen, können vom Host-System 150 empfangen und durch die Steuerung 110 verarbeitet werden.
-
Die Host-Schnittstelle 140 ist dazu konfiguriert, das Host-System 150 mit dem Datenspeicherungssystem 100 zu koppeln. Die Host-Schnittstelle 140 kann elektrische und physische Verbindungen beinhalten, um das Host-System 150 funktionsfähig mit der Steuerung 110 zu koppeln. Die Host-Schnittstelle 140 ist dazu konfiguriert, Daten, Adressen und Steuersignale über die elektrischen und physischen Verbindungen zwischen dem Host-System 150 und der Steuerung 110 zu kommunizieren. Die Steuerung 110 ist zum Speichern von Host-Daten, die vom Host-System 150 empfangen werden, in die nichtflüchtigen Speichereinrichtungen 130 als Reaktion auf eine Schreibanfrage, die vom Host-System 150 empfangen wird, und zum Lesen von Host-Daten, die in den nichtflüchtigen Speichereinrichtungen 130 gespeichert sind, und zum Übertragen der gelesenen Host-Daten über die Host-Schnittstelle 140 zum Host-System 150 als Reaktion auf eine Leseanfrage, die vom Host-System 150 empfangen wird, konfiguriert.
-
Die Host-Schnittstelle 140 kann Standardschnittstellen implementieren, einschließlich unter anderem SATA (Serial Advanced Technology Attachment), ATA (Advanced Technology Attachment), SCSI (Small Computer System Interface), PCI-X (PCI-extended), Fibre Channel, SAS (Serial Attached SCSI), SD (Secure Digital), EMMC (Embedded Multi-Media Card), UFS (Universal Flash Storage) und PCIe (Peripheral Component Interconnect Express). Die vorliegende Technologie ist jedoch nicht auf die Verwendung von Standardschnittstellen eingeschränkt und kann benutzerdefinierte oder proprietäre Schnittstellen für Kommunikationen mit dem Host-System 150 nutzen.
-
Das Host-System 150 repräsentiert eine beliebige Einrichtung, die dazu konfiguriert ist, mit dem Datenspeicherungssystem 100 über die Host-Schnittstelle 140 gekoppelt zu werden und mit diesem zu kommunizieren, um Daten im Datenspeicherungssystem 100 zu speichern und aus diesem abzurufen. Das Host-System 150 kann eine Datenverarbeitungseinrichtung sein, wie etwa ein Personal Computer, ein Server, eine Arbeitsstation, ein Laptop-Computer, ein Smartphone und dergleichen. Alternativ dazu kann das Host-System 150 eine elektronische Einrichtung sein, wie etwa eine Digitalkamera, ein digitaler Audio-Player, ein digitaler Videorecorder und dergleichen.
-
Die Steuerung 110 ist zum Überwachen und Steuern des Betriebs von Komponenten des Datenspeicherungssystems 100 als Reaktion auf Anfragen, die vom Host-System 150 empfangen werden, und während der Ausführung von internen Wartungsoperationen konfiguriert. Die Steuerung 110 kann einen Mehrkernprozessor, einen Allzweck-Mikroprozessor, einen Mikrocontroller, einen Digitalsignalprozessor (DSP), eine anwendungsspezifische integrierte Schaltung (ASIC), ein feldprogrammierbares Gate-Array (FPGA), eine programmierbare Logikeinrichtung (PLD), eine Zustandsmaschine, gattergesteuerte Logik, diskrete Hardwarekomponenten oder eine Kombination der Vorangehenden beinhalten. Bei manchen Aspekten kann bzw. können eine oder mehrere Komponenten der Steuerung 100 in einen einzelnen Chip oder ein einzelnes Modul integriert sein oder können in zwei oder mehr diskrete Chips oder Module implementiert werden.
-
Der flüchtige Speicher 120 repräsentiert einen Speicher, der durch die Steuerung 110 verwendet wird, um Daten und Informationen, die zum Verwalten des Datenspeicherungssystems 100 verwendet werden, temporär zu speichern. Die Steuerung 110 kann zum Beispiel den flüchtigen Speicher 120 als Puffer für Host-Daten, die darauf warten, in die nichtflüchtigen Speichereinrichtungen 130 geschrieben zu werden, oder Host-Daten, die aus den nichtflüchtigen Speichereinrichtungen 130 gelesen werden und darauf warten, zum Host-System 150 übertragen zu werden oder zu den nichtflüchtigen Speichereinrichtungen 130 zurückgeschrieben zu werden, verwenden. Die Steuerung 110 kann verschiedene Arten von Systemdaten, die bei der Verwaltung des Datenspeicherungssystems 100 verwendet werden, im flüchtigen Speicher 120 speichern. Die Systemdaten können Daten zum Verfolgen der Codierungsarten, die verwendet werden, wenn Daten in verschiedenen Einrichtungen in den nichtflüchtigen Speichereinrichtungen 130 gespeichert werden, beinhalten. Die Systemdaten können auch Tabellen, die logische, durch das Host-System 150 referenzierte Adressen auf physische Adressen der nichtflüchtigen Speichereinrichtungen 130 abbilden, Programmier-/Lösch(P/E)-Zyklus-Zählungen, Fehlerstatistiken, gültige/ungültige Datenzählungen usw. beinhalten. Die Steuerung 110 kann einen Teil oder alle der oben beschriebenen Daten und Informationen in den nichtflüchtigen Speichereinrichtungen 130 oder einer anderen Form eines nicht dargestellten, nichtflüchtigen Speichers speichern, um die Daten und Informationen zu bewahren, wenn das Datenspeicherungssystem 100 abgeschaltet wird oder anderweitig Leistung verliert. Die Steuerung 110 kann periodisch Kopien der Daten und Informationen in den nichtflüchtigen Speichereinrichtungen 130 speichern oder kann auf ein Herunterfahren oder ein Leistungsverlustereignis warten, um die Daten und Informationen in den nichtflüchtigen Speichereinrichtungen 130 zu sichern.
-
Der flüchtige Speicher 120 kann ein Direktzugriffsspeicher (RAM) sein, wie etwa ein statischer RAM (SRAM) oder ein dynamischer RAM (DRAM). Die vorliegende Technologie ist jedoch nicht auf irgendeine bestimmte Art von RAM eingeschränkt. Zusätzlich dazu kann der flüchtige Speicher 120 unter Verwendung eines einzelnen RAM-Moduls oder mehrerer RAM-Module implementiert werden. Obwohl der flüchtige Speicher 120 so beschrieben wird, dass er distinkt von der Steuerung 110 ist, können Teile des flüchtigen Speichers 120 bzw. kann der gesamte flüchtige Speicher 120 in die Steuerung 110 integriert sein.
-
Wie in 1 abgebildet, sind die mehreren nichtflüchtigen Speichereinrichtungen 130 in mehreren Kanälen angeordnet. 1 veranschaulicht zum Beispiel, dass jeder von N Kanälen eine nichtflüchtige Speichereinrichtung 130 aufweist. Jede der nichtflüchtigen Speichereinrichtungen 130 kann einen einzelnen Die oder mehrere Dies beinhalten. Jeder Die beinhaltet nichtflüchtige Speicherzellen, wie etwa NAND-Flash-Speicherzellen oder 3D-NAND-Flash-Speicherzellen. Jede der nichtflüchtigen Speichereinrichtungen 130 kann in jeweiligen Chips oder Paketen implementiert werden. Obwohl abgebildet ist, dass jeder Kanal eine einzelne nichtflüchtige Speichereinrichtung 130 aufweist, kann die vorliegende Technologie Implementierungen beinhalten, bei denen jeder Kanal zwei oder mehr nichtflüchtige Speichereinrichtungen 130 beinhaltet.
-
Die Flash-Speicherzellen eines Die können in physischen Blöcken angeordnet sein, wobei jeder Block mehrere Wortleitungen enthält. Jede Wortleitung beinhaltet eine Anzahl von nichtflüchtigen Speicherzellen (z.B. 1 kB, 2 kB, 4 kB, 16 kB usw.). Die vorliegende Technologie ist nicht auf irgendeine bestimmte Anzahl von Wortleitungen in jedem physischen Block eingeschränkt. Jeder Block kann zum Beispiel 8 Wortleitungen, 16 Wortleitungen, 32 Wortleitungen usw. enthalten. Des Weiteren ist die Anzahl von physischen Blöcken, die in jedem Flash-Speicher-Die enthalten sind, nicht auf irgendeine bestimmte Anzahl eingeschränkt. In einem NAND-Flash-Speicher repräsentiert die Seite einer Wortleitung oder die Wortleitung insgesamt die kleinste Einheit, die zum Schreiben von Daten in den Flash-Speicher-Die oder zum Lesen von Daten aus dem Flash-Speicher-Die verfügbar ist. Physische Blöcke repräsentieren die kleinste Einheit, die zum Löschen von Daten im Flash-Speicher-Die verfügbar ist.
-
Die Steuerung 110 ist zum Kommunizieren von Befehlen, Steuerinformationen, Adressen, Daten usw. mit dem Flash-Speicher-Die über die jeweiligen Flash-Speicherkanäle 0–N konfiguriert. Jeder Kanal kann einen oder mehrere Busse repräsentieren, der bzw. die zum Kommunizieren von elektrischen Signalen, die mit Befehlen, Steuerinformationen, Adressen und/oder Daten codiert sind, zwischen der Steuerung 110 und dem Flash-Speicher-Die, der mit dem jeweiligen Flash-Speicherkanal gekoppelt ist, konfiguriert ist bzw. sind. Die vorliegende Technologie ist nicht auf irgendeine bestimmte Anzahl von Flash-Speicherkanälen eingeschränkt. Das Datenspeicherungssystem 100 kann zum Beispiel 8 Kanäle, 16 Kanäle, 32 Kanäle usw. beinhalten.
-
2 ist ein Blockdiagramm, das Komponenten der Steuerung 110 gemäß Aspekten der vorliegenden Technologie veranschaulicht. Wie in 2 abgebildet, kann die Steuerung 110 einen Codierer 210, einen Decodierer 220, ein Basisumwandlungsmodul 230 und eine Kanalsteuerung 240 beinhalten. Die Steuerung 110 ist nicht auf diese bestimmten Komponenten eingeschränkt und kann andere Arten von Komponenten beinhalten. Zusätzlich dazu ist die Steuerung 110 nicht auf einzelne Instanzen einer beliebigen gegebenen Komponente eingeschränkt und kann mit mehreren Instanzen einer beliebigen der Komponenten implementiert werden.
-
Der Codierer 210 ist zum Codieren von Daten konfiguriert, um ein Codewort zur Speicherung im nichtflüchtigen Speicher 130 zu erzeugen. Gemäß Aspekten der vorliegenden Technologie verwendet der Codierer 210 einen nichtbinären Algorithmus mit fehlerkorrigierendem Code (ECC), wie etwa einen nichtbinären LDPC(Low-Density Parity-Check)-Code-Algorithmus, zum Erzeugen des Codewortes. Der Decodierer 220 ist zum Decodieren eines Codewortes, das aus dem nichtflüchtigen Speicher 130 gelesen wird, konfiguriert, um die codierten Daten unter Verwendung des Decodierungsteils des ECC-Algorithmus, der zum Codieren der Daten verwendet wird, abzurufen. Die Steuerung 110 kann mehrere Instanzen des Codierers 210 und/oder des Decodierers 220 beinhalten, um die verfügbare Bandbreite zum Verarbeiten von Daten, die im nichtflüchtigen Speicher 130 gespeichert sind, und von Daten, die aus dem nichtflüchtigen Speicher 130 gelesen werden, zu erhöhen. Der Decodierer 220 kann einen harten Decodierungsprozess oder einen weichen Decodierungsprozess implementieren. Falls mehrere Instanzen des Decodierers 220 in der Steuerung 110 enthalten sind, können manche der Decodierer zu harten Decodierungsprozessen und andere zu weichen Decodierungsprozessen dediziert sein.
-
Zusätzlich zu den in 2 abgebildeten Komponenten kann die Steuerung 110 andere Komponenten beinhalten. Die Steuerung 110 kann zum Beispiel Manager und Scheduler zum Verwalten von Lese-, Schreib- und Löschvorgängen im Datenspeicherungssystem 100 beinhalten. Die Steuerung 110 kann auch einen Adressenübersetzungsmanager zum Verwalten der Übersetzung von Host-Adressen, die durch das Host-System 150 verwendet werden, in physische Adressen der Blöcke, Wortleitungen und Seiten im nichtflüchtigen Speicher 130 beinhalten. Andere Komponenten können Verwürfeler, Entwürfeler, Wartungsmanager (z.B. Speicherbereinigung, Verschleißausgleich, Datenverlagerung usw.) beinhalten.
-
Die Komponenten der Steuerung 100 können jeweils unter Verwendung von einer oder mehreren Sequenzen von Anweisungen (z.B. Software/Firmware), die durch einen Prozessor oder Prozessorkern geladen und ausgeführt werden, unter Verwendung von Hardwarelogikschaltungen oder einer Kombination von Hardware und Software/Firmware implementiert werden. In einer Steuerung, die mehrere Prozessoren oder einen Mehrkernprozessor beinhaltet, können zum Beispiel individuelle Prozessoren oder Prozessorkerne zugewiesen sein, um die Funktionalität von jeweiligen Komponenten der Steuerung 100 bereitzustellen. Des Weiteren kann bzw. können eine oder mehrere der oben besprochenen Komponenten außerhalb der Steuerung 110 implementiert werden, ohne vom Schutzumfang der vorliegenden Technologie abzuweichen.
-
3 ist ein Diagramm, das den Fluss von Daten, die in einen nichtflüchtigen Speicher geschrieben und aus diesem gelesen werden, gemäß Aspekten der vorliegenden Technologie veranschaulicht. Binäre Daten können zum Beispiel zur Speicherung in der nichtflüchtigen Speichereinrichtung 130 empfangen werden. Die Werte mit Basis zwei der binären Daten können zum Beispiel durch ein Basisumwandlungsmodul 230 in Werte mit Basis X umgewandelt werden. Die nichtbinären Daten werden dann dem Codierer 210 bereitgestellt, der die nichtbinären Daten zum Beispiel unter Verwendung eines nichtbinären LDPC-Codierungsalgorithmus codiert, um ein Codewort zu erzeugen. Das Codewort wird dann über die Kanalsteuerung 240 in eine Wortleitung der Flash-Medien, wie etwa die nichtflüchtige Speichereinrichtung 130, geschrieben.
-
Beim Lesen des Codewortes aus der nichtflüchtigen Speichereinrichtung 130 decodiert der Decodierer 220 das Codewort, um die nichtbinären Daten zum Beispiel unter Verwendung eines nichtbinären LDPC-Decodierungsalgorithmus abzurufen. Die Werte mit Basis X der decodierten nichtbinären Daten werden dann durch das Basisumwandlungsmodul 230 zurück in binäre Werte mit Basis zwei umgewandelt.
-
Gemäß Aspekten der vorliegenden Technologie ist X eine ganze Zahl mit einem Wert größer als zwei. Der Wert von X ist nicht auf irgendeinen bestimmten Bereich von Werten eingeschränkt und kann ganzzahlige Nicht-Zweierpotenz-Werte beinhalten. Der Wert von X bestimmt die Basis für die Umwandlung der binären Daten in nichtbinäre Daten, die Symbole des Galois-Feldes, das bei der LDPC-Codierung und -Decodierung verwendet wird, und die Anzahl von Programmpegeln, die bei der Programmierung der Speicherzellen der nichtflüchtigen Speichereinrichtung 130 verwendet werden.
-
Datenspeicherungssysteme können eine spezifizierte maximale Bitfehlerrate (BER) aufweisen, mit der das Datenspeicherungssystem zum Arbeiten ausgelegt ist. Verschiedene Eigenschaften und Metriken können die BER einer nichtflüchtigen Speichereinrichtung beeinflussen. Eine derartige Metrik ist ein Rauschabstand (SNR) der Flash-Speicherzellen. Der SNR für eine Flash-Speicherzelle kann unter Verwendung des Folgenden repräsentiert werden: SNR = 20log10 D / σ (1) wobei D der Gesamtspannungsbereich der Flash-Speicherzellen ist und σ die Standardabweichung einer Programmpegelverteilung ist. Wenn sich die Anzahl von Programmpegeln, die bei der Programmierung der Flash-Speicherzellen verwendet werden, erhöht, muss sich der SNR auch erhöhen, um eine spezifizierte BER für die nichtflüchtige Speichereinrichtung beizubehalten.
-
Wenn nichtflüchtige Speichereinrichtungen mehr Programmier-Lösch-Zyklen erfahren, neigen die Programmpegelverteilungen der Speicherzellen dazu, sich zu vergrößern, was zu größeren Standardabweichungen der Programmpegelverteilungen und einem kleineren SNR führt. Gleichermaßen können nichtflüchtige Speichereinrichtungen mit niedrigerer Qualität relativ große Programmpegelverteilungen selbst bei niedrigeren Programmier-Lösch-Zyklus-Zählungen aufweisen, was wiederum zu größeren Standardabweichungen der Programmpegelverteilungen und einem kleineren SNR führt. Die Programmpegelverteilungen und die entsprechenden SNRs für verschiedene Anzahlen von Programmier-Lösch-Zyklen und/oder verschiedene Qualitätsstufen von nichtflüchtigen Speichereinrichtungen können unter Verwendung einer Simulation oder Prüfung geschätzt werden. Die SNRs können dann mit den entsprechenden Programmier-Lösch-Zyklus-Zählungen oder Qualitätsstufen repräsentiert werden.
-
Dementsprechend wird für eine gegebene nichtflüchtige Speichereinrichtung, wie etwa einen Flash-Speicher-Die, eine Anzahl von Programmierpegeln ausgewählt, von der erwartet wird, dass sie die spezifizierte BER basierend auf dem SNR für die Speicherzellen in der Einrichtung nicht überschreitet. Falls der SNR zum Beispiel unter einem Minimalwert zum Beibehalten der spezifizierten BER für acht Programmpegel aber über einem Minimalwert zum Beibehalten der spezifizierten BER für sieben Programmpegel liegt, kann X auf sieben festgelegt werden. Die Auswahl kann zum Zeitpunkt der Montage oder Fertigung vorgenommen werden, wenn sie auf der Qualität des Flash-Speicher-Die basiert. Die Auswahl kann auch bei anderen Lebensdauerphasen des Flash-Speicher-Die vorgenommen werden, die durch Programmier-Lösch-Zyklus-Zählungen repräsentiert werden. Beispielsweise kann eine Nachschlagetabelle oder eine andere Datenstruktur Anzahlen von Programmpegeln mit jeweiligen Programmier-Lösch-Zyklus-Zählungen assoziieren. Wenn ein Flash-Speicher-Die eine bestimmte Programmier-Lösch-Zyklus-Zählung während des Betriebs überschreitet, kann die Anzahl von Programmpegeln, die durch den Wert X angegeben wird, aus dem Nachschlagetabelleneintrag, der der Programmier-Lösch-Zyklus-Zählung entspricht, bestimmt werden.
-
Die Steuerung 110 kann auch Lesefehlerzählungen für die nichtflüchtigen Speichereinrichtungen verfolgen. Wenn die Flash-Speicher-Dies Lesefehler erfahren, kann die Lesefehlerzählung aktualisiert und mit vorbestimmten Werten, die verschiedenen Werten von X entsprechen, verglichen werden. Falls sich die Lesefehlerzählungen erhöhen, muss die Anzahl von Programmpegeln, die durch den Wert für X repräsentiert wird, möglicherweise verringert werden, um Lesefehler für den bestimmten Flash-Speicher-Die zu verringern.
-
4 ist eine Tabelle, die entsprechende Werte für die Anzahl von Programmpegeln pro Speicherzelle, die Anzahl von codierten Bits pro Speicherzelle und die Anzahl von 1-kB-, 2-kB- und 4-kB-Codewörtern, die in einer Wortleitung mit 16-kB-Speicherzellen gespeichert werden können, auflistet. Wenn X zum Beispiel auf sieben festgelegt wird, um anzugeben, dass sieben Programmpegel zur Programmierung von Speicherzellen zur Verfügung stehen, führt die Umwandlung von binären Daten mit Basis zwei in nichtbinäre Daten mit Basis sieben und das Codieren der nichtbinären Daten, um ein Codewort zu erzeugen, das in der Wortleitung gespeichert wird, zu 2,807 codierten Bits pro Zelle. Mit dieser Codierungsrate können die Daten von 44 binären 1-kB-Codewörtern in einer 16-kB-Wortleitung gespeichert werden, können die Daten von 22 binären 2-kB-Codewörtern in der 16-kB-Wortleitung gespeichert werden und können die Daten von 11 binären 4-kB-Codewörtern in der 16-kB-Wortleitung gespeichert werden.
-
5 ist eine graphische Darstellung verschiedener Werte von X, die für Flash-Speicher-Dies mit verschiedenen Altern und Qualitätsstufen ausgewählt werden. In 5 werden Alter durch „NEU“ und „GEALTERT“ repräsentiert. Qualitätsstufen werden durch „BESTER DIE“, „BESSERER DIE“, „GUTER DIE“ und „KEIN DIE WIRD ZURÜCKGELASSEN“ repräsentiert. Die in 5 abgebildeten Alter und Qualitätsstufen sind Beispiele zum Zweck der Erläuterung. Die vorliegende Technologie ist nicht auf irgendeine bestimmte Anzahl von Altern oder Qualitätsstufen eingeschränkt. Die acht größeren Blöcke in 5 repräsentieren einen Flash-Speicher-Die und geben beispielhafte Auswahlen von Anzahlen von Programmpegeln, die durch den Wert von X repräsentiert werden, für verschiedene Kombinationen von Alter und Qualitätsstufe an. Ein neuer Flash-Speicher-Die, von dem angenommen wird, dass er die höchste Qualitätsstufe, „BESTER DIE“, besitzt, ist zum Beispiel zum Verwenden von 12 Programmpegeln zum Programmieren von Speicherzellen im Die konfiguriert. Andererseits ist eine gealterter Flash-Speicher-Die, von dem angenommen wird, dass er die niedrigste Qualitätsstufe, „KEIN DIE WIRD ZURÜCKGELASSEN“, besitzt, zum Verwenden von 6 Programmpegeln zum Programmieren von Speicherzellen im Die konfiguriert. Die kleineren Blöcke in den größeren Blöcken in 5 repräsentieren die Anzahl von binären 4-kB-Codewörtern, die in einer 16-kB-Wortleitung bei den verschiedenen Anzahlen von Programmpegeln gespeichert werden können. Bei 12 Programmpegeln pro Zelle können zum Beispiel die Daten von 14 binären 4-kB-Codewörtern in einer 16-kB-Wortleitung gespeichert werden, während bei 6 Programmpegeln pro Zelle die Daten von 10 binären 4-kB-Codewörtern in der 16-kB-Wortleitung gespeichert werden können.
-
Das Konfigurieren eines Flash-Speicher-Die, so dass er die ausgewählte Anzahl von Programmpegeln verwendet, kann durch die Steuerung 110 durchgeführt werden, die einen Befehl ausgibt oder ein oder mehrere Register auf dem Flash-Speicher-Die programmiert, um die Anzahl von zu verwendenden Programmpegeln, wenn Speicherzellen auf dem Die programmiert und die Speicherzellen auf dem Die gelesen werden, zu spezifizieren. Da jeder Programmpegel einem jeweiligen einzigartigen Symbol/einer jeweiligen einzigartigen Ziffer der Nummerierung mit Basis X entspricht, muss der Flash-Speicher-Die nur den jeweiligen Programmpegel, zu dem jede Speicherzelle programmiert ist, bestimmen und zurückgeben, wenn Daten gelesen werden. Dementsprechend nutzt die vorliegende Technologie keine Gray-Codierung, wenn Daten gelesen werden, und vermeidet den Verlust von Informationen auf Zellebene, der sich aus der Verwendung einer Gray-Codierung ergibt.
-
Die Steuerung 110 kann Systemdaten verwalten, um die Anzahlen von Programmpegeln zu verfolgen, die jeder Flash-Speicher-Die konfiguriert ist, zu verwenden. Wenn der ausgewählte Wert für X aufgrund des Alterns einer Flash-Speichereinrichtung geändert wird, kann die Steuerung 110 den Flash-Speicher-Die umkonfigurieren, so dass er einen früheren Wert für X zurückgibt, wenn Daten gelesen werden, die basierend auf dem früheren Wert für X programmiert werden, und den ausgewählten Wert für X für neue Datenschreibvorgänge oder -lesevorgänge für Daten zurückgibt, die basierend auf dem ausgewählten Wert für X programmiert werden. Die Steuerung 110 kann zusätzliche Systemdaten verwalten, um zu verfolgen, welche Wortleitungen/Blöcke in einem Flash-Speicher-Die unter Verwendung welcher Programmpegel programmiert wurden.
-
Zusätzlich zum Konfigurieren der nichtflüchtigen Speichereinrichtungen gemäß dem ausgewählten Wert für X kann die Steuerung 110 auch den Codierer 210, den Decodierer 220 und das Basisumwandlungsmodul 230 für den bestimmten ausgewählten Wert für X konfigurieren. Das Basisumwandlungsmodul 230 kann zum Anpassen der Umwandlung für den ausgewählten Wert für X konfigurierbar sein. Alternativ dazu kann das Basisumwandlungsmodul 230 ein entsprechendes Modul für jeden möglichen Wert für X beinhalten und die Steuerung 110 kann das Modul, das dem ausgewählten Wert für X entspricht, auswählen oder aktivieren.
-
Wie oben angemerkt, können der Codierer 210 und der Decodierer 220 einen nichtbinären LDPC-Algorithmus zum Codieren und Decodieren von Daten nutzen. Diesbezüglich kann der Codierer 210 eine Generatormatrix zum Codieren der nichtbinären Daten verwenden, um ein Codewort zu erzeugen, und der Decodierer 220 kann eine Paritätsprüfmatrix beim Decodieren des Codewortes verwenden, um die nichtbinären Daten abzurufen. Der LDPC-Algorithmus kann so ausgelegt sein, dass er die Positionen der von Null verschiedenen Elemente in diesen Matrizen bei den gleichen Positionen beibehält, unabhängig vom ausgewählten Wert für X. Die Werte, die den von Null verschiedenen Elementen für einen gegebenen Wert von X zugewiesen werden, können aus den Symbolen/Ziffern der Nummerierung mit Basis X, die dem ausgewählten Wert für X entspricht, ausgewählt werden. Die spezifischen Symbole/Ziffern für jedes von Null verschiedene Element können vorbestimmt und in einer Nachschlagetabelle oder einer anderen Datenstruktur, auf die zugegriffen werden kann, um die Symbole/Ziffern abzurufen und den Codierer und den Decodierer zu konfigurieren, gespeichert werden.
-
6 ist ein Flussdiagramm, das einen Prozess zum Schreiben von Daten in eine Wortleitung gemäß Aspekten der vorliegenden Technologie abbildet. Bei Block 600 werden binäre Daten zur Speicherung in einer nichtflüchtigen Speichereinrichtung 130 empfangen. Die binären Daten können vom Host-System 150 empfangen werden, können Teil von Systemdaten sein, die durch die Steuerung 110 verwaltet werden und in einem nichtflüchtigen Speicher zur Erhaltung gespeichert werden müssen, oder können Daten sein, die aus der nichtflüchtigen Speichereinrichtung 130 als Teil einer Wartungsoperation, wie etwa Speicherbereinigung, Verschleißausgleich, interner Datenverschiebung usw., gelesen werden.
-
Bei Block 610 werden die binären Daten in nichtbinäre Daten gemäß dem ausgewählten Wert für X, der der nichtflüchtigen Speichereinrichtung 130 entspricht, umgewandelt. Die nichtbinären Daten werden codiert, um bei Block 620 ein Codewort zu erzeugen, und das Codewort wird bei Block 630 in eine Wortleitung in der nichtflüchtigen Speichereinrichtung 130 geschrieben.
-
Die vorliegende Technologie ermöglicht die Auswahl von Werten für X, so dass die Kapazität, die Beständigkeit und die Leistung von nichtflüchtigen Speichereinrichtungen, wie etwa NAND-Flash-Speichereinrichtungen, optimiert und abgeglichen werden. Verschiedene ausgewählte Werte für X steuern die Anzahl von Programmpegeln, die zum Programmieren von Speicherzellen der nichtflüchtigen Speichereinrichtungen verwendet werden. Wie in der obigen Besprechung widergespiegelt ist, ermöglicht die Bereitstellung einer Auswahl von möglichen Werten für X, dass individuelle nichtflüchtige Speichereinrichtungen so konfiguriert sind, dass die Menge an Daten, die in den Einrichtungen gespeichert werden, maximiert wird, während Bitfehlerraten unter spezifizierten Werten gehalten werden, indem ein Wert für X basierend auf Charakteristiken der Speichereinrichtung ausgewählt wird.
-
Gemäß Aspekten der vorliegenden Technologie ist ein Verfahren bereitgestellt, das Empfangen von binären Daten zur Speicherung in einer nichtflüchtigen Speichereinrichtung und Umwandeln der binären Daten in nichtbinäre Daten beinhaltet. Das Verfahren beinhaltet ferner Codieren der nichtbinären Daten, um ein Codewort zu erzeugen, und Schreiben des Codewortes in eine Wortleitung der nichtflüchtigen Speichereinrichtung.
-
Das Umwandeln der binären Daten in nichtbinäre Daten kann Umwandeln von Werten mit Basis zwei der binären Daten in Werte mit Basis X beinhalten, wobei X eine ganze Zahl größer als zwei ist. X kann eine ganze Nicht-Zweierpotenz-Zahl sein. Das Schreiben des Codewortes in die Wortleitung der nichtflüchtigen Speichereinrichtung kann Programmieren von Speicherzellen der Wortleitung zu entsprechenden Programmpegeln, die aus X verfügbaren Programmpegeln basierend auf Werten der nichtbinären Daten ausgewählt werden, beinhalten. Das Codieren der nichtbinären Daten kann Erzeugen eines nichtbinären LDPC(Low-Density Parity-Check)-Codes beinhalten, wobei das erzeugte Codewort die nichtbinären Daten und den nichtbinären LDPC-Code beinhalten kann.
-
Das Verfahren kann ferner Lesen des Codewortes aus der Wortleitung der nichtflüchtigen Speichereinrichtung, Decodieren des Codewortes, um die nichtbinären Daten abzurufen, und Umwandeln der nichtbinären Daten zurück in die binären Daten beinhalten.
-
Gemäß Aspekten der vorliegenden Technologie ist ein Datenspeicherungssystem bereitgestellt, das mehrere nichtflüchtige Speichereinrichtungen und eine Steuerung beinhaltet. Die Steuerung kann zum Empfangen von ersten binären Daten zur Speicherung im Datenspeicherungssystem und zum Umwandeln von Werten mit Basis zwei der ersten binären Daten in erste nichtbinäre Daten, die Werte mit Basis X umfassen, wobei X eine ganze Zahl größer als zwei ist, konfiguriert sein. Die Steuerung kann ferner zum Codieren der ersten nichtbinären Daten, um ein erstes Codewort zu erzeugen, und zum Schreiben des ersten Codewortes in eine Wortleitung einer ersten nichtflüchtigen Speichereinrichtung der mehreren nichtflüchtigen Speichereinrichtungen konfiguriert sein.
-
Die Steuerung kann ferner zum Schreiben des ersten Codewortes in die Wortleitung der ersten nichtflüchtigen Speichereinrichtung durch Programmieren von Speicherzellen der Wortleitung zu entsprechenden Programmpegeln, die aus X verfügbaren Programmpegeln basierend auf den Werten der ersten nichtbinären Daten ausgewählt werden, konfiguriert sein. Die Steuerung kann ferner zum Codieren der ersten nichtbinären Daten durch Erzeugen eines ersten nichtbinären LDPC(Low-Density Parity-Check)-Codes konfiguriert sein, wobei das erzeugte erste Codewort die ersten nichtbinären Daten und den ersten LDPC-Code umfasst.
-
Die Steuerung kann zum Empfangen von zweiten binären Daten zur Speicherung im Datenspeicherungssystem, zum Umwandeln von Werten mit Basis zwei der zweiten binären Daten in zweite nichtbinäre Daten, die Werte mit Basis Y umfassen, wobei Y eine ganze Zahl größer als zwei ist und sich von X unterscheidet, und zum Codieren der zweiten nichtbinären Daten, um ein zweites Codewort zu erzeugen, konfiguriert sein. Die Steuerung kann das zweite Codewort in eine Wortleitung einer zweiten nichtflüchtigen Speichereinrichtung der mehreren nichtflüchtigen Speichereinrichtungen schreiben.
-
Die Steuerung kann ferner zum Schreiben des zweiten Codewortes in die Wortleitung der zweiten nichtflüchtigen Speichereinrichtung durch Programmieren von Speicherzellen der Wortleitung zu entsprechenden Programmpegeln, die aus Y verfügbaren Programmpegeln basierend auf den Werten der zweiten nichtbinären Daten ausgewählt werden, konfiguriert sein.
-
Die Steuerung kann ferner zum Lesen des ersten Codewortes aus der Wortleitung der ersten nichtflüchtigen Speichereinrichtung, zum Decodieren des ersten Codewortes, um die ersten nichtbinären Daten abzurufen, und zum Umwandeln der ersten nichtbinären Daten zurück in die ersten binären Daten konfiguriert sein.
-
Gemäß Aspekten der vorliegenden Technologie ist ein prozessorlesbares Medium mit Anweisungen codiert, die, wenn sie durch einen Prozessor ausgeführt werden, ein Verfahren durchführen. Das Verfahren beinhaltet Assoziieren einer nichtflüchtigen Speichereinrichtung mit einem Wert X basierend auf einer Eigenschaft der nichtflüchtigen Speichereinrichtung, wobei X eine ganze Zahl größer als zwei ist, Empfangen von binären Daten zur Speicherung in der nichtflüchtigen Speichereinrichtung, Umwandeln von Werten mit Basis zwei der binären Daten in nichtbinäre Daten, die Werte mit Basis X umfassen, Codieren der nichtbinären Daten, um ein Codewort zu erzeugen, und Schreiben des Codewortes in eine Wortleitung der nichtflüchtigen Speichereinrichtung.
-
Die Eigenschaft der nichtflüchtigen Speichereinrichtung kann eine Programmier-Lösch-Zählung beinhalten. Die Eigenschaft der nichtflüchtigen Speichereinrichtung kann auch eine Lesefehlerzählung beinhalten.
-
Das Codieren der nichtbinären Daten, um das Codewort zu erzeugen, kann Erzeugen eines nichtbinären LDPC(Low-Density Parity-Check)-Codes beinhalten, wobei das erzeugte Codewort die nichtbinären Daten und den LDPC-Code umfasst. Das Schreiben des Codewortes in die Wortleitung der nichtflüchtigen Speichereinrichtung kann Programmieren von Speicherzellen der Wortleitung zu entsprechenden Programmpegeln, die aus X verfügbaren Programmpegeln basierend auf den Werten der nichtbinären Daten ausgewählt werden, beinhalten.
-
Das Verfahren kann ferner Lesen des Codewortes aus der Wortleitung der nichtflüchtigen Speichereinrichtung, Decodieren des Codewortes, um die nichtbinären Daten abzurufen, und Umwandeln der nichtbinären Daten zurück in die binären Daten beinhalten.
-
Gemäß Aspekten der vorliegenden Technologie ist ein Datenspeicherungssystem bereitgestellt, das eine nichtflüchtige Speichereinrichtung beinhaltet. Das Datenspeicherungssystem beinhaltet ferner Mittel zum Empfangen von binären Daten zur Speicherung in der nichtflüchtigen Speichereinrichtung und Mittel zum Umwandeln von Werten mit Basis zwei der binären Daten in nichtbinäre Daten, die Werte mit Basis X umfassen, wobei X eine ganze Zahl größer als zwei ist. Das Datenspeicherungssystem beinhaltet ferner Mittel zum Codieren der nichtbinären Daten, um ein Codewort zu erzeugen, und Mittel zum Schreiben des Codewortes in eine Wortleitung der nichtflüchtigen Speichereinrichtung.
-
Das Datenspeicherungssystem kann ferner Mittel zum Lesen des Codewortes aus der Wortleitung der nichtflüchtigen Speichereinrichtung, Mittel zum Decodieren des Codewortes, um die nichtbinären Daten abzurufen, und Mittel zum Umwandeln der nichtbinären Daten zurück in die binären Daten beinhalten.
-
Viele der oben beschriebenen Merkmale des beispielhaften Prozesses und verwandte Merkmale und Anwendungen können als Software- oder Firmwareprozesse implementiert werden, die als ein Satz von Anweisungen, die auf einem prozessorlesbaren Speichermedium (auch als computerlesbares Medium bezeichnet) aufgezeichnet sind, spezifiziert sind. Wenn diese Anweisungen durch eine oder mehrere Verarbeitungseinheiten (z.B. einen oder mehrere Prozessoren, Kerne von Prozessoren oder andere Verarbeitungseinheiten) ausgeführt werden, wird bewirkt, dass die eine oder die mehreren Verarbeitungseinheiten die in den Anweisungen angegebenen Handlungen durchführt bzw. durchführen. Beispiele von prozessorlesbaren Medien beinhalten unter anderem den flüchtigen Speicher 120, den nichtflüchtigen Speicher 130, sowie andere Formen von Medien, wie etwa magnetische Medien, optische Medien und elektronische Medien. Die prozessorlesbaren Medien beinhalten keine Trägerwellen und elektronische Signale, die drahtlos oder über verdrahtete Verbindungen kommuniziert werden.
-
Der Ausdruck „Software“ soll, wenn angemessen, Firmware beinhalten, die in einem Speicher oder in im Speicher gespeicherten Anwendungen liegt und in einen Arbeitsspeicher zum Verarbeiten durch einen Prozessor gelesen werden kann. Bei manchen Implementierungen können außerdem mehrere Softwareaspekte der vorliegenden Offenbarung als Unterteile eines größeren Programms implementiert werden, während distinkte Softwareaspekte der vorliegenden Offenbarung beibehalten werden. Bei manchen Implementierungen können mehrere Softwareaspekte auch als separate Programme implementiert werden. Schließlich befindet sich eine beliebige Kombination von separaten Programmen, die zusammen einen vorliegend beschriebenen Softwareaspekt implementieren, im Schutzumfang der vorliegenden Offenbarung. Bei manchen Implementierungen definieren die Softwareprogramme, wenn sie so installiert sind, dass sie auf einem oder mehreren elektronischen Systemen arbeiten, eine oder mehrere spezifische Maschinenimplementierungen, die die Vorgänge der Softwareprogramme ausführt bzw. ausführen und durchführt bzw. durchführen.
-
Ein Computerprogramm (auch als ein Programm, eine Software, eine Softwareanwendung, ein Script, oder ein Code bekannt) kann in einer beliebigen Form von Programmiersprache geschrieben werden, einschließlich kompilierten oder interpretierten Sprachen, deklarativen oder prozeduralen Sprachen, und kann in einer beliebigen Form eingesetzt werden, einschließlich als ein eigenständiges Programm oder als ein Modul, eine Komponente, ein Unterprogramm, ein Objekt oder eine andere Einheit, die zur Verwendung in einer Datenverarbeitungsumgebung geeignet ist. Ein Computerprogramm kann, aber muss nicht, einer Datei in einem Dateisystem entsprechen. Ein Programm kann in einem Teil einer Datei, die andere Programme oder Daten (z.B. ein oder mehrere Scripts, das bzw. die in einem Markup-Language-Dokument gespeichert ist bzw. sind) hält, in einer einzelnen Datei, die dem betreffenden Programm dediziert ist, oder in mehreren koordinierten Dateien (z.B. Dateien, die ein oder mehrere Module, Unterprogramme oder Teile von Code speichern) gespeichert sein.
-
Es versteht sich, dass vorliegend beschriebene veranschaulichende Blöcke, Module, Elemente, Komponenten, Verfahren und Algorithmen als elektronische Hardware, Computersoftware oder Kombinationen von beiden implementiert werden können. Um diese Austauschbarkeit von Hardware und Software zu veranschaulichen, sind verschiedene veranschaulichende Blöcke, Module, Elemente, Komponenten, Verfahren und Algorithmen oben allgemein hinsichtlich ihrer Funktionalität beschrieben worden. Ob eine derartige Funktionalität als Hardware oder Software implementiert wird, hängt von der bestimmten Anwendung und Designeinschränkungen, die dem Gesamtsystem auferlegt werden, ab. Fachleute können die beschriebene Funktionalität auf variierende Weisen für jede bestimmte Anwendung implementieren. Verschiedene Komponenten und Blöcke können andersartig angeordnet sein (z.B. in einer anderen Reihenfolge angeordnet oder auf eine andere Weise partitioniert), ohne jeweils vom Schutzumfang der vorliegenden Offenbarung abzuweichen.
-
Es versteht sich, dass die spezifische Reihenfolge oder Hierarchie der Schritte in den offenbarten Prozessen als eine Veranschaulichung mancher beispielhaften Ansätze dargelegt ist. Basierend auf Designpräferenzen und/oder anderen Erwägungen versteht es sich, dass die spezifische Reihenfolge oder Hierarchie der Schritte in den Prozessen umgeordnet werden kann. Bei manchen Implementierungen können zum Beispiel manche der Schritte gleichzeitig durchgeführt werden. Somit legen die begleitenden Verfahrensansprüche Elemente der verschiedenen Schritte in einer Beispielreihenfolge dar und diese sollen nicht auf die spezifische dargelegte Reihenfolge oder Hierarchie eingeschränkt sein.
-
Die vorangegangene Beschreibung ist bereitgestellt, um einem beliebigen Fachmann zu ermöglichen, die verschiedenen vorliegend beschriebenen Aspekte praktizieren. Die vorangegangene Beschreibung stellt verschiedene Beispiele der vorliegenden Offenbarung bereit und die vorliegende Offenbarung ist nicht auf diese Beispiele eingeschränkt. Verschiedene Modifikationen an diesen Aspekten werden Fachleuten leicht ersichtlich und die allgemeinen vorliegend definierten Prinzipien können bei anderen Aspekten angewendet werden. Somit ist nicht beabsichtigt, dass die Ansprüche auf die vorliegend dargestellten Aspekte eingeschränkt sind, sondern sollen den vollständigen Schutzumfang vereinbar mit den Sprachansprüchen erhalten, wobei Erwähnung eines Elements im Singular nicht „eines und nur eines“ bedeuten soll, sofern es nicht spezifisch so angegeben wird, sondern „eines oder mehrere“. Sofern es nicht ausdrücklich anders angegeben wird, bezieht sich der Ausdruck „manche“ auf eines oder mehrere. Männliche Pronomen (z.B. sein) umfassen das weibliche und neutrale Geschlecht (z.B. ihr und sein) und umgekehrt. Etwaige Titel und Untertitel dienen lediglich der Zweckmäßigkeit und schränken die vorliegende Offenbarung nicht ein.
-
Die Prädikate „konfiguriert zum“, „betreibbar zum“ und „programmiert zum“ bedingen nicht irgendeine konkrete greifbare oder nichtgreifbare Modifikation eines Subjekts, sondern sollen stattdessen austauschbar verwendet werden. Ein Prozessor, der zum Beispiel zum Überwachen und Steuern einer Operation oder einer Komponente konfiguriert ist, kann auch bedeuten, dass der Prozessor dafür programmiert ist, die Operation zu überwachen und zu steuern, oder der Prozessor betreibbar ist zum Überwachen und Steuern der Operation. Gleichermaßen kann ein zum Ausführen von Code konfigurierter Prozessor als ein Prozessor, programmiert zum Ausführen von Code oder betreibbar zum Ausführen von Code, aufgefasst werden.
-
Die Ausdrücke „in Kommunikation mit“ und „gekoppelt“ bedeuten in direkter Kommunikation mit oder in indirekter Kommunikation mit, über eine oder mehrere Komponenten, die vorliegend benannt oder unbenannt sind (z.B. ein Speicherkartenlesegerät).
-
Ein Ausdruck wie etwa ein „Aspekt“ impliziert nicht, dass ein derartiger Aspekt für die vorliegende Offenbarung unerlässlich ist, oder dass ein derartiger Aspekt auf alle Konfigurationen der vorliegenden Offenbarung zutrifft. Eine Offenbarung bezüglich eines Aspekts kann auf alle Konfigurationen oder eine oder mehrere Konfigurationen zutreffen. Ein Aspekt kann ein oder mehrere Beispiele bereitstellen. Ein Ausdruck wie etwa ein Aspekt kann sich auf einen oder mehrere Aspekte beziehen und umgekehrt. Ein Ausdruck wie etwa eine „Implementierung“ impliziert nicht, dass eine derartige Implementierung für die vorliegende Offenbarung unerlässlich ist, oder dass eine derartige Implementierung auf alle Konfigurationen der vorliegenden Offenbarung zutrifft. Eine Offenbarung bezüglich einer Implementierung kann auf alle Aspekte oder einen oder mehrere Aspekte zutreffen. Eine Implementierung kann ein oder mehrere Beispiele bereitstellen. Ein Ausdruck wie etwa eine „Implementierung“ kann sich auf eine oder mehrere Implementierungen beziehen und umgekehrt. Ein Ausdruck wie etwa eine „Konfiguration“ impliziert nicht, dass eine derartige Konfiguration für die vorliegende Offenbarung unerlässlich ist, oder dass eine derartige Konfiguration auf alle Konfigurationen der vorliegenden Offenbarung zutrifft. Eine Offenbarung bezüglich einer Konfiguration kann auf alle Konfigurationen oder eine oder mehrere Konfigurationen zutreffen. Eine Konfiguration kann ein oder mehrere Beispiele bereitstellen. Ein Ausdruck wie etwa eine „Konfiguration“ kann sich auf eine oder mehrere Konfigurationen beziehen und umgekehrt.
-
Das Wort „beispielhaft“ wird in der Bedeutung verwendet, dass es „als ein Beispiel oder eine Veranschaulichung dient“. Jeglicher Aspekt oder jegliches Design, der/das vorliegend als „beispielhaft“ beschrieben ist, ist nicht notwendigerweise als bevorzugt oder vorteilhaft gegenüber anderen Aspekten oder Designs aufzufassen.