DE102016009806A1 - Speichern von paritätsdaten getrennt von geschützten daten - Google Patents

Speichern von paritätsdaten getrennt von geschützten daten Download PDF

Info

Publication number
DE102016009806A1
DE102016009806A1 DE102016009806.6A DE102016009806A DE102016009806A1 DE 102016009806 A1 DE102016009806 A1 DE 102016009806A1 DE 102016009806 A DE102016009806 A DE 102016009806A DE 102016009806 A1 DE102016009806 A1 DE 102016009806A1
Authority
DE
Germany
Prior art keywords
parity
data
memory
devices
parity data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
DE102016009806.6A
Other languages
English (en)
Inventor
Zvonimir Z. Bandic
Robert E. Mateescu
Seung-Hwan Song
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.)
HGST Netherlands BV
Original Assignee
HGST Netherlands BV
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 HGST Netherlands BV filed Critical HGST Netherlands BV
Publication of DE102016009806A1 publication Critical patent/DE102016009806A1/de
Withdrawn legal-status Critical Current

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
    • G06F11/1044Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
    • 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/1064Adding 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 cache or content addressable memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • 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/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
    • 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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/403Error protection encoding, e.g. using parity or ECC codes
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C2029/0411Online error correction
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C2029/4402Internal storage of test result, quality data, chip identification, repair information

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Probability & Statistics with Applications (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

Eine Speichervorrichtung kann eine primäre Speicheranordnung umfassen, die eine Vielzahl von Arbeitsspeichervorrichtungen, eine oder mehrere Paritätsarbeitsspeichervorrichtungen und eine Steuerung umfasst, die konfiguriert ist, um einen Datenblock zu speichern. Die Steuerung kann konfiguriert sein, den Datenblock zu speichern durch zumindest: Einschreiben des Datenblocks in die primäre Speicheranordnung, Bestimmen von Paritätsdaten für den Datenblock und Einschreiben von zumindest einem Teil der bestimmten Paritätsdaten in die eine oder die mehreren Paritätsarbeitsspeichervorrichtungen.

Description

  • TECHNISCHES GEBIET
  • Diese Offenbarung betrifft die Arbeitsspeicherverwaltung und im Speziellen das Zuteilen von Paritätsdaten in einer Speichervorrichtung.
  • HINTERGRUND
  • In Computern oder anderen elektronischen Vorrichtungen verwendete Arbeitsspeichervorrichtungen können nichtflüchtiger Arbeitsspeicher oder flüchtiger Arbeitsspeicher sein. Der Hauptunterschied zwischen nichtflüchtigem Arbeitsspeicher und flüchtigem Arbeitsspeicher besteht darin, dass nichtflüchtiger Arbeitsspeicher weiterhin Daten speichern kann, ohne eine anhaltende Stromversorgung zu erfordern. Deshalb sind nichtflüchtige Arbeitsspeichervorrichtungen zu einem beliebten Speichertyp für eine große Bandbreite an elektronischen Anwendungen geworden. Beispielsweise sind nichtflüchtige Arbeitsspeichervorrichtungen, einschließlich Flash-Arbeitsspeichervorrichtungen, häufig in Festkörperspeichervorrichtungen wie Festkörperlaufwerke (SSDs) eingebaut.
  • In manchen Beispielen kann eine Steuerung beim Einschreiben von Daten in nichtflüchtige Arbeitsspeichervorrichtungen eine oder mehrere Operationen durchführen, um die Daten vor Arbeitsspeicherfehlern zu schützen. Beispielsweise kann eine Steuerung zusätzlich zum Einschreiben der Daten in die nichtflüchtigen Arbeitsspeichervorrichtungen Paritätsdaten erzeugen und in die Arbeitsspeichervorrichtung einschreiben, die verwendet werden können, um Daten wiederherzustellen, wie beispielsweise im Fall eines Arbeitsspeicherfehlers.
  • ZUSAMMENFASSUNG
  • In einem Beispiel umfasst eine Speichervorrichtung eine primäre Speicheranordnung, die eine Vielzahl von Arbeitsspeichervorrichtungen, eine oder mehrere Paritätsarbeitsspeichervorrichtungen und eine Steuerung umfasst, die konfiguriert ist, um einen Datenblock zu speichern. In diesem Beispiel ist die Steuerung konfiguriert, den Datenblock durch zumindest das Einschreiben des Datenblocks in die primäre Speicheranordnung, das Bestimmen von Paritätsdaten für den Datenblock und das Einschreiben von zumindest einem Teil der bestimmten Paritätsdaten in die eine oder mehreren Paritätsarbeitsspeichervorrichtungen zu speichern.
  • In einem weiteren Beispiel umfasst ein Verfahren das Einschreiben eines Datenblocks in eine primäre Speicheranordnung, die eine Vielzahl von Arbeitsspeichervorrichtungen umfasst, durch eine Steuerung einer Speichervorrichtung, das Bestimmen von Paritätsdaten für den Datenblock durch die Steuerung und das Einschreiben der bestimmten Paritätsdaten in eine oder mehrere Paritätsarbeitsspeichervorrichtungen durch die Steuerung.
  • In einem weiteren Beispiel speichert ein computerlesbares Speichermedium Befehle, die, wenn sie ausgeführt werden, dazu führen, dass ein oder mehrere Prozessoren einer Speichervorrichtung: einen Datenblock in eine primäre Speicheranordnung, die eine Vielzahl von Arbeitsspeichervorrichtungen umfasst, einschreibt, Paritätsdaten für den Datenblock bestimmt und die bestimmten Paritätsdaten in eine oder mehrere Paritätsarbeitsspeichervorrichtungen einschreibt.
  • In einem weiteren Beispiel umfasst ein System eine primäre Speicheranordnung, die eine Vielzahl von Arbeitsspeichervorrichtungen umfasst, eine oder mehrere Paritätsarbeitsspeichervorrichtungen, Mittel zum Einschreiben eines Datenblocks in die primäre Speicheranordnung, Mittel zum Bestimmen von Paritätsdaten für den Datenblock und Mittel zum Einschreiben der bestimmten Paritätsdaten in eine oder mehrere Paritätsarbeitsspeichervorrichtungen.
  • Die Details eines oder mehrerer Beispiele sind in den beigefügten Zeichnungen der untenstehenden Beschreibung ausgeführt. Weitere Merkmale, Ziele und Vorteile erschließen sich aus der Beschreibung, den Zeichnungen sowie aus den Patentansprüchen.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • 1 ist ein konzeptuelles und schematisches Blockdiagramm, das eine beispielhafte Speicherumgebung veranschaulicht, in der eine Speichervorrichtung als Speichervorrichtung für eine Hostvorrichtung fungieren kann, gemäß einem oder mehreren Verfahren der vorliegenden Offenbarung.
  • 2 ist ein konzeptuelles Blockdiagramm, das eine beispielhafte Arbeitsspeichervorrichtung veranschaulicht, die eine Vielzahl von Blöcken umfasst, wobei jeder Block eine Vielzahl von Seiten umfasst, gemäß einem oder mehreren Verfahren der vorliegenden Offenbarung.
  • 3 ist ein konzeptuelles und schematisches Blockdiagramm, das beispielhafte Details einer Steuerung veranschaulicht, gemäß einem oder mehreren Verfahren der vorliegenden Offenbarung.
  • 4 ist ein konzeptuelles Diagramm, das eine beispielhafte logische Konfiguration von Benutzerdaten und auf derselben Seite einer Arbeitsspeichervorrichtung gespeicherten entsprechenden Paritätsdaten veranschaulicht, gemäß einem oder mehreren Verfahren der vorliegenden Offenbarung.
  • 5 ist ein konzeptuelles Diagramm, das eine beispielhafte physikalische Konfiguration von Benutzerdaten auf derselben Seite einer Arbeitsspeichervorrichtung gespeicherten entsprechenden Paritätsdaten veranschaulicht, gemäß einem oder mehreren Verfahren der vorliegenden Offenbarung.
  • 6 ist ein konzeptuelles Diagramm, das eine beispielhafte logische Konfiguration von Benutzerdaten und zumindest einem Teil der auf unterschiedlichen Seiten einer Arbeitsspeichervorrichtung gespeicherten Paritätsdaten veranschaulicht, gemäß einem oder mehreren Verfahren der vorliegenden Offenbarung.
  • 7 ist ein konzeptuelles Diagramm, das eine beispielhafte physikalische Konfiguration von Benutzerdaten und zumindest einem Teil von auf unterschiedlichen Seiten einer Arbeitsspeichervorrichtung gespeicherten Paritätsdaten veranschaulicht, gemäß einer oder mehreren Verfahren der vorliegenden Offenbarung.
  • 8 ist ein konzeptuelles Diagramm, das eine beispielhafte logische Konfiguration von Benutzerdaten und zumindest einem Teil von auf unterschiedlichen Arbeitsspeichervorrichtungen gespeicherten Paritätsdaten veranschaulicht, gemäß einem oder mehreren Verfahren der vorliegenden Offenbarung.
  • 9 ist ein konzeptuelles Diagramm, das eine beispielhafte physikalische Konfiguration von Benutzerdaten und zumindest einem Teil von auf unterschiedlichen Arbeitsspeichervorrichtungen gespeicherten Paritätsdaten veranschaulicht, gemäß einem oder mehreren Verfahren der vorliegenden Offenbarung.
  • 10 ist ein Flussdiagramm, das ein beispielhaftes Verfahren zum Speichern zumindest eines Teils von Paritätsdaten in einer anderen Arbeitsspeichervorrichtung als zugeordnete Benutzerdaten veranschaulicht, gemäß einem oder mehreren Verfahren der vorliegenden Offenbarung.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Diese Offenbarung beschreibt eine Speichervorrichtung, die eine Steuerung umfasst, die konfiguriert ist, um Benutzerdaten in einer primären Arbeitsspeichervorrichtung zu speichern und zumindest einen Teil von den Benutzerdaten zugeordneten Fehlerkorrekturcode(ECC)-Paritätsdaten in einer Paritätsarbeitsspeichervorrichtung zu speichern. Durch Speichern zumindest eines Teils der ECC-Paritätsdaten in einer Paritätsarbeitsspeichervorrichtung kann eine größere Speichermenge durch ECC-Paritätsdaten verwendet werden, was stärkere ECC-Paritätsverfahren ermöglichen kann und die Integrität von Benutzerdaten besser schützt. Im Vergleich dazu kann in manchen Speichervorrichtungen die Größe der ECC-Paritätsdaten auf die Differenz zwischen der Größe eines Blocks von Benutzerdaten und der Größe der physikalischen Seite der Arbeitsspeichervorrichtung begrenzt sein. Wenn beispielsweise eine physikalische Seite in einer Arbeitsspeichervorrichtung 8.320 Bytes umfasst und die Größe des Blocks von Benutzerdaten 8.192 Bytes beträgt, kann die Größe der Paritätsdaten auf 128 Bytes begrenzt sein. Das Speichern von zumindest einem Teil der ECC-Paritätsdaten in der Paritätsarbeitsspeichervorrichtung kann auch flexible ECC-Stärke erleichtern, z. B. durch Erhöhen der Menge an ECC-Paritätsdaten mit steigendem Alter der Speichervorrichtung.
  • Ferner kann das Speichern von zumindest einem Teil der ECC-Paritätsdaten in einer Paritätsarbeitsspeichervorrichtung Lesezugriffe der primären Arbeitsspeichervorrichtung im Vergleich zu der Verwendung mehrerer Seiten von Daten innerhalb der primären Arbeitsspeichervorrichtung reduzieren, um ECC-Paritätsinformationen zu speichern. In manchen Beispielen, wie wenn eine Steuerung ein erweitertes Schema zur Abbildung von logischen auf physikalische Adressen verwendet, kann die Größe der durch die Steuerung verwendeten Paritätsdaten von der Größe von physikalischen Seiten der Arbeitsspeichervorrichtung unabhängig gemacht werden. Im Speziellen kann die Steuerung mehrere physikalische Seitenadressen zuteilen, um die Paritätsdaten zu speichern. Auf diese Weise kann eine Steuerung höhere ECC-Stärken verwenden. Da ein Teil der Paritätsdaten in einer anderen Seite der Arbeitsspeichervorrichtung als die Benutzerdaten gespeichert wird, kann es allerdings sein, dass die Steuerung sowohl die erste physikalische Seite als auch die zweite physikalische Seite auslesen muss, um die Benutzerdaten abzurufen. Ebenso kann es sein, dass die Steuerung, wenn sie die Benutzerdaten speichert, in zwei verschiedene physikalische Adressen in der Arbeitsspeichervorrichtung einschreiben muss, was möglicherweise nicht wünschenswert ist (z. B. aufgrund von erhöhter Zykluszählung, reduziertem Leistungsverhalten, reduzierter Zuverlässigkeit und erhöhter Lesestörung). Das Reduzieren von Lese- und Schreibzugriffen der primären Arbeitsspeichervorrichtung kann die Abnutzung reduzieren und die Lebensdauer der primären Arbeitsspeichervorrichtung verlängern.
  • Gemäß einem oder mehreren Verfahren der vorliegenden Offenbarung kann eine Steuerung zumindest einen Teil der ECC-Paritätsdaten in einer separaten Paritätsarbeitsspeichervorrichtung speichern. Beispielsweise kann eine Steuerung einem Block von Benutzerdaten zugeordnete Paritätsdaten bestimmen, den Block von Benutzerdaten in einer primären Arbeitsspeichervorrichtung speichern und zumindest einen Teil der Paritätsdaten in einer Paritätsarbeitsspeichervorrichtung speichern, die von der primären Arbeitsspeichervorrichtung getrennt ist. In manchen Beispielen kann die Steuerung den zumindest einen Teil der Paritätsdaten in die Paritätsarbeitsspeichervorrichtung einschreiben und den Block von Benutzerdaten parallel dazu in die primäre Arbeitsspeichervorrichtung einschreiben. Ebenso kann die Steuerung in manchen Beispielen den zumindest einen Teil der Paritätsdaten aus der Paritätsarbeitsspeichervorrichtung auslesen und den Block von Benutzerdaten parallel dazu aus der primären Arbeitsspeichervorrichtung auslesen. Auf diese Weise kann die Steuerung größere Größen von Paritätsdaten verwenden, ohne dass das Leistungsverhalten signifikant reduziert wird.
  • In manchen Beispielen kann die Paritätsarbeitsspeichervorrichtung derselbe Typ von Arbeitsspeicher sein wie die primäre Arbeitsspeichervorrichtung. Beispielsweise können in manchen Beispielen sowohl die Paritätsarbeitsspeichervorrichtung als auch die primäre Arbeitsspeichervorrichtung NAND-Flash-Arbeitsspeichervorrichtungen sein, können jedoch separat durch die Steuerung adressierbar sein. Allerdings kann die Größe der Paritätsdaten signifikant geringer als die Größe der Benutzerdaten sein; daher kann die Größe der Paritätsarbeitsspeichervorrichtung signifikant geringer als die Größe der primären Arbeitsspeichervorrichtung sein. Beispielsweise kann die Größe der in der Paritätsarbeitsspeichervorrichtung gespeicherten Paritätsdaten geringer als ein Zehntel der Größe der in der primären Arbeitsspeichervorrichtung gespeicherten Benutzerdaten sein.
  • Gemäß einem oder mehreren Verfahren der vorliegenden Offenbarung kann eine Speichervorrichtung eine primäre Arbeitsspeichervorrichtung und eine Paritätsarbeitsspeichervorrichtung umfassen, die ein anderer Typ von Arbeitsspeichervorrichtung als die primäre Vorrichtung ist. In manchen Beispielen kann die primäre Speichervorrichtung eine NAND-Flash-Arbeitsspeichervorrichtung sein und die Paritätsarbeitsspeichervorrichtung kann ein Speicherklassentyp von Arbeitsspeichervorrichtung sein, wie beispielsweise eine magnetoresistive Random-Access-Memory(MRAM)-Vorrichtung, eine Phase-Change-Random-Access-Memory(PRAM)-Vorrichtung oder eine resistive Random-Access-Memory(ReRAM)-Vorrichtung. Verglichen mit manchen Flash-Arbeitsspeichervorrichtungen (z. B. NAND-Flash-Arbeitsspeichervorrichtungen) können solche Speicherklassen-Arbeitsspeichervorrichtungen erhöhte Kosten pro Bit und reduzierte Latenzzeit (z. B. Nanosekunde vs. Mikrosekunde) aufweisen. Wie oben diskutiert, kann die Größe der Paritätsdaten signifikant geringer als die Größe der Benutzerdaten sein. Daher kann die Größe der Paritätsarbeitsspeichervorrichtung signifikant geringer als die Größe der primären Arbeitsspeichervorrichtung sein, was die Kosten der Paritätsarbeitsspeichervorrichtung weniger signifikant machen kann. Da die Paritätsarbeitsspeichervorrichtung eine kürzere Latenzzeit als die primäre Arbeitsspeichervorrichtung aufweisen kann, kann darüber hinaus das Schreiben und Lesen von Paritätsdaten in der Paritätsarbeitsspeichervorrichtung weniger Zeit benötigen als das Schreiben und Lesen von Benutzerdaten in der primären Arbeitsspeichervorrichtung. Auf diese Weise kann die Steuerung größere Größen von Paritätsdaten verwenden, ohne das Leistungsverhalten signifikant zu reduzieren.
  • 1 ist ein konzeptuelles und schematisches Blockdiagramm, das eine beispielhafte Speicherumgebung 2 veranschaulicht, in der Speichervorrichtung 6 als eine Speichervorrichtung für Hostvorrichtung 4 fungieren kann, gemäß einem oder mehreren Verfahren der vorliegenden Offenbarung. Beispielsweise kann Hostvorrichtung 4 in Speichervorrichtung 6 enthaltene nichtflüchtige Arbeitsspeichervorrichtungen verwenden, um Daten zu speichern und abzurufen. In manchen Beispielen kann die Speicherumgebung 2 eine Vielzahl von Speichervorrichtungen umfassen, wie die Speichervorrichtung 6, die als Speicheranordnung arbeiten können. Beispielsweise kann die Speicherumgebung 2 eine Vielzahl von Speichervorrichtungen 6 umfassen, die als redundante Anordnung von kostengünstigen/unabhängigen Festplatten (RAID) konfiguriert sind, die zusammen als eine Massenspeichervorrichtung für die Hostvorrichtung 4 dienen.
  • Die Speicherumgebung 2 kann eine Hostvorrichtung 4 umfassen, die Daten in und/oder von einer oder mehreren Speichervorrichtungen, wie Speichervorrichtung 6, speichern und/oder abrufen kann. Wie in 1 veranschaulicht, kann die Hostvorrichtung 4 mit der Speichervorrichtung 6 über eine Schnittstelle 14 kommunizieren. Die Hostvorrichtung 4 kann ein beliebiges einer großen Bandbreite an Vorrichtungen umfassen, einschließlich Computerservern, netzgebundener Speicher(NAS)-Einheiten, Desktopcomputern, Notebook-(d. h. Laptop-)Computern, Tabletcomputern, Set-Top-Boxen, Mobiltelefonen wie z. B. sogenannter „Smart”-Phones, sogenannter „Smart”-Pads, Fernsehgeräten, Kameras, Anzeigegeräten, digitaler Medienabspielgeräte, Videospielkonsolen, Videostreamingvorrichtungen und dergleichen.
  • Wie in 1 veranschaulicht, kann die Speichervorrichtung 6 eine Steuerung 8, eine nichtflüchtige Arbeitsspeicheranordnung 10 (NVMA 10), einen flüchtigen Arbeitsspeicher 12, eine Schnittstelle 14 und Paritätsarbeitsspeichervorrichtung(en) 20 umfassen. In manchen Beispielen kann die Speichervorrichtung 6 zusätzliche, in 1 der Klarheit halber nicht gezeigte Komponenten umfassen. Beispielsweise kann die Speichervorrichtung 6 eine Leiterplatte (PB), an der Komponenten der Speichervorrichtung 6 mechanisch befestigt sind und die elektrisch leitfähige Leiterzüge umfasst, die Komponenten der Speichervorrichtung 6 elektrisch zwischenverbinden; und dergleichen umfassen. In manchen Beispielen können die physikalischen Abmessungen und Konnektorkonfigurationen von Speichervorrichtung 6 einem oder mehreren Standardformfaktoren entsprechen. Manche beispielhafte Standardformfaktoren umfassen, sind jedoch nicht beschränkt auf 3,5''-Festplattenlaufwerk (HDD), 2-5''-HDD, 1,8''-HDD, Peripheral Component Interconnect (PCI), PCI-Extended (PCI-X), PCI Express (PCIe) (z. B. PCIe x1, x4, x8, x16, PCIe Mini Card, MiniPCI etc.). In manchen Beispielen kann die Speichervorrichtung 6 an eine Hauptplatine der Hostvorrichtung 4 direkt gekoppelt (z. B. direkt gelötet) sein.
  • Die Speichervorrichtung 6 kann eine Schnittstelle 14 zum Verbinden mit der Hostvorrichtung 4 umfassen. Die Schnittstelle 14 kann einen oder beide von einem Datenbus zum Austausch von Daten mit der Hostvorrichtung 4 und einen Steuerbus zum Austausch von Befehlen mit der Hostvorrichtung 4 umfassen. Die Schnittstelle 14 kann gemäß jeglichem geeigneten Protokoll arbeiten. Beispielsweise kann die Schnittstelle 14 gemäß einem oder mehreren der folgenden Protokolle arbeiten: Advanced Technology Attachment (ATA) (z. B. Serial ATA (SATA) und Parallel ATA (PAPA)), Fibre Channel, Small Computer System Interface (SCSI), Serially Attached SCSI (SAS), Peripheral Component Interconnect (PCI), PCI Express oder Non-Volatile Memory Express (NVMe). Die elektrische Verbindung von Schnittstelle 14 (z. B. der Datenbus, der Steuerbus oder beide) ist mit der Steuerung 8 elektrisch verbunden, wodurch eine elektrische Verbindung zwischen der Hostvorrichtung 4 und der Steuerung 8 bereitgestellt ist, was einen Datenaustausch zwischen der Hostvorrichtung 4 und der Steuerung 8 ermöglicht. In manchen Beispielen kann die elektrische Verbindung von Schnittstelle 14 es der Speichervorrichtung 6 auch erlauben, Leistung von der Hostvorrichtung 4 zu empfangen.
  • Die Speichervorrichtung 6 kann eine NVMA 10 umfassen, die eine Vielzahl von Arbeitsspeichervorrichtungen 16Aa16Nn umfassen kann (zusammen „Arbeitsspeichervorrichtungen 16”). Jede der Arbeitsspeichervorrichtungen 16 kann konfiguriert sein, um Daten zu speichern und/oder abzurufen. Beispielsweise kann eine Arbeitsspeichervorrichtung von Arbeitsspeichervorrichtungen 16 Daten und eine Nachricht von Steuerung 8 empfangen, welche die Arbeitsspeichervorrichtung anweist, die Daten zu speichern. Ebenso kann die Arbeitsspeichervorrichtung von Arbeitsspeichervorrichtungen 16 eine Nachricht von der Steuerung 8 empfangen, welche die Arbeitsspeichervorrichtung anweist, Daten abzurufen. In manchen Beispielen kann jede der Arbeitsspeichervorrichtungen 6 als Nacktchip bezeichnet werden. In manchen Beispielen kann ein einzelner physikalischer Chip eine Vielzahl von Nacktchips umfassen (d. h. eine Vielzahl von Arbeitsspeichervorrichtungen 16). In manchen Beispielen kann jede der Arbeitsspeichervorrichtungen 16 konfiguriert sein, um relativ große Datenmengen (z. B. 128 MB, 256 MB, 512 MB, 1 GB, 2 GB, 4 GB, 8 GB, 16 GB, 32 GB, 64 GB, 128 GB, 256 GB, 512 GB, 1 TB etc.) zu speichern.
  • In manchen Beispielen können Arbeitsspeichervorrichtungen 16 Flash-Arbeitsspeichervorrichtungen umfassen. Flash-Arbeitsspeichervorrichtungen können NAND- oder NOR-basierte Flash-Arbeitsspeichervorrichtungen umfassen und können Daten basierend auf einer in einem Schwebegate eines Transistors enthaltene Ladung für jede Flash-Arbeitsspeicherzelle speichern. In NAND-Flash-Arbeitsspeichervorrichtungen kann die Flash-Arbeitsspeichervorrichtung in eine Vielzahl von Blöcken geteilt sein. 2 ist ein konzeptuelles Blockdiagramm, das eine beispielhafte Arbeitsspeichervorrichtung 16Aa veranschaulicht, die eine Vielzahl von Blöcken 17A17N (zusammen „Blöcke 17”) umfasst, wobei jeder Block eine Vielzahl von Seiten 19Aa19Nm (zusammen „Seiten 19”) umfasst. Jeder Block von Blöcken 17 kann eine Vielzahl von NAND-Zellen umfassen. mn von NAND-Zellen können unter Verwendung einer Wortleitung seriell elektrisch verbunden werden, um eine Seite zu definieren (eine Seite der Seiten 19). Die jeweiligen Zellen in jeder einer Vielzahl von Seiten 19 können mit jeweiligen Bitleitungen elektrisch verbunden sein. Die Steuerung 8 kann Daten in NAND-Flash-Arbeitsspeichervorrichtungen auf Seitenebene einschreiben und daraus auslesen und Daten von NAND-Flash-Arbeitsspeichervorrichtungen auf Blockebene löschen.
  • In manchen Beispielen können Arbeitsspeichervorrichtungen 16 jeglichen Typ von nichtflüchtigen Speichervorrichtungen umfassen. Manche Beispiele für Arbeitsspeichervorrichtungen 16 umfassen, sind jedoch nicht beschränkt auf Flash-Arbeitsspeichervorrichtungen (z. B. NAND oder NOR), Phase-Change-Memory(PCM)-Vorrichtungen, resistive Random-Access-Memory(ReRAM)-Vorrichtungen, magnetoresistive Random-Access-Memory(MRAM)-Vorrichtungen, ferroelektrischen Random Access Memory (F-RAM), holographische Arbeitsspeichervorrichtungen und jeglichen anderen Typ von nichtflüchtigen Arbeitsspeichervorrichtungen.
  • In manchen Beispielen ist es für die Steuerung 8 möglicherweise nicht praktisch, mit jeder Arbeitsspeichervorrichtung von Arbeitsspeichervorrichtungen 16 separat verbunden zu sein. Als solche können die Verbindungen zwischen Arbeitsspeichervorrichtungen 16 und Steuerung 8 gemultiplext sein. Als Beispiel können die Arbeitsspeichervorrichtungen 16 in Kanäle 18A18N (zusammen „Kanäle 18”) zusammengefasst sein. Wie in 1 veranschaulicht, können die Arbeitsspeichervorrichtungen 16Aa16An beispielsweise in einen ersten Kanal 18A zusammengefasst sein und die Arbeitsspeichervorrichtungen 16Na16Nn können in einen Nten Kanal 18N zusammengefasst sein. Die in jedem der Kanäle 18 zusammengefassten Arbeitsspeichervorrichtungen 16 können eine oder mehrere Verbindungen mit der Steuerung 8 gemeinsame verwenden. Beispielsweise können die in den ersten Kanal 18A zusammengefassten Arbeitsspeichervorrichtungen 16 an einen gewöhnlichen I/O-Bus und einen gewöhnlichen Steuerbus angeschlossen sein. Die Speichervorrichtung 6 kann einen gewöhnlichen I/O-Bus und einen gewöhnlichen Steuerbus für jeden Kanal der Kanäle 18 umfassen. In manchen Beispielen kann jeder Kanal der Kanäle 18 einen Satz von Chipfreigabe(CE)-Leitungen umfassen, die verwendet werden können, um Arbeitsspeichervorrichtungen auf jedem Kanal zu multiplexen. Beispielsweise kann jede CE-Leitung mit einer jeweiligen Arbeitsspeichervorrichtung der Arbeitsspeichervorrichtungen 18 verbunden sein. Auf diese Weise kann die Anzahl von separaten Verbindungen zwischen der Steuerung 8 und den Arbeitsspeichervorrichtungen 18 reduziert werden. Da jeder Kanal einen unabhängigen Satz von Verbindungen mit der Steuerung 8 aufweist, kann es zusätzlich dazu sein, dass die Reduktion der Verbindungen die Datendurchsatzrate nicht signifikant beeinflusst, da die Steuerung 8 verschiedene Befehle zu jedem Kanal simultan ausgeben kann.
  • Die Speichervorrichtung 6 kann eine Leistungsversorgung 11 umfassen, die einer oder mehrere Komponenten der Speichervorrichtung 6 Leistung bereitstellt. Wenn sie in einem Standardmodus arbeitet, kann die Leistungsversorgung 11 Leistung der einen oder den mehreren Komponenten Leistung bereitstellen, indem sie durch eine externe Vorrichtung, wie Hostvorrichtung 4, bereitgestellte Leistung verwendet. Beispielsweise kann die Leistungsversorgung 11 der einen oder den mehreren Komponenten Leistung bereitstellen, und zwar unter Verwendung von über Schnittstelle 14 von Hostvorrichtung 4 empfangener Leistung. In manchen Beispielen kann die Leistungsversorgung 11 eine oder mehrere Leistungsspeicherkomponenten umfassen, die konfiguriert sind, um der einen oder den mehreren Komponenten Leistung bereitzustellen, wenn in einem Abschaltmodus gearbeitet wird, wenn beispielsweise keine Leistung mehr von der externen Vorrichtung empfangen wird. Auf diese Weise kann die Leistungsversorgung 11 als integrierte Back-up-Leistungsquelle fungieren. Manche Beispiele für die eine oder die mehreren Leistungsspeicherkomponenten umfassen, sind jedoch nicht beschränkt auf Kondensatoren, Superkondensatoren, Batterien und dergleichen.
  • Die Speichervorrichtung 6 kann auch einen flüchtigen Arbeitsspeicher 12 umfassen, der durch die Steuerung 8 verwendet werden kann, um Informationen zu speichern. In manchen Beispielen kann die Steuerung 8 den flüchtigen Arbeitsspeicher 12 als Cache verwenden. Beispielsweise kann die Steuerung 8 gecachte Informationen 13 im flüchtigen Arbeitsspeicher 12 speichern, bis die gecachten Informationen 13 in die Arbeitsspeichervorrichtungen 16 eingeschrieben werden. Wie in 1 veranschaulicht, kann der flüchtige Arbeitsspeicher 12 von der Leistungsversorgung 11 empfangene Leistung verbrauchen. Beispiele für einen flüchtigen Arbeitsspeicher 12 umfassen, sind jedoch nicht beschränkt auf Random-Access Memory (RAM), Dynamic Random Access Memory (DRAM), Static RAM (SRAM) und Synchronous Dynamic RAM (SDRAM (z. B. DDR1, DDR2, DDR3, DDR3L, LPDDR3, DDR4 und dergleichen).
  • Die Speichervorrichtung 6 umfasst eine Steuerung 8, die eine oder mehrere Operationen der Speichervorrichtung 6 verwalten kann. Beispielsweise kann die Steuerung 8 das Auslesen von Daten von und/oder das Einschreiben von Daten in die Arbeitsspeichervorrichtung 16 verwalten. In manchen Beispielen kann die Steuerung 8 eine oder mehrere Operationen ausführen, um durch die Arbeitsspeichervorrichtung 16 gespeicherte Daten zu verwalten. Beispielsweise kann die Steuerung 8 eine oder mehrere Operationen durchführen, um die Integrität von durch die Arbeitsspeichervorrichtungen 16 gespeicherte Daten sicherzustellen, wie beispielsweise das Speichern von Paritätsdaten für durch die Arbeitsspeichervorrichtungen 16 gespeicherte Benutzerdaten. Zusätzliche Details für die Steuerung 8 werden untenstehend unter Bezugnahme auf 3 diskutiert.
  • Gemäß einem oder mehrere Verfahren der vorliegenden Offenbarung kann die Speichervorrichtung 6 eine oder mehrere Paritätsarbeitsspeichervorrichtungen 20 umfassen, die von der Steuerung 8 verwendet werden können, um zumindest einen Teil der Paritätsinformationen zu speichern. In manchen Beispielen können die Paritätsarbeitsspeichervorrichtungen 20 jeglichen Typ von nichtflüchtigen Arbeitsspeichervorrichtungen umfassen. Manche Beispiele für Paritätsarbeitsspeichervorrichtungen 20 umfassen, sind jedoch nicht beschränkt auf Flash-Arbeitsspeichervorrichtungen, wie beispielsweise NAND-Flash-Arbeitsspeichervorrichtungen und/oder NOR-Flash-Arbeitsspeichervorrichtungen, Speicherklassen-Arbeitsspeichervorrichtungen, holographische Arbeitsspeichervorrichtungen und jeglichen anderen Typ von nichtflüchtigen Arbeitsspeichervorrichtungen. Manche Beispiele für Speicherklassen-Arbeitsspeichervorrichtungen umfassen, sind jedoch nicht beschränkt auf Phase-Change-Memory(PCM)-Vorrichtungen, resistive Random-Access-Memory(ReRAM)-Vorrichtungen, magnetoresistive Random-Access-Memory(MRAM)-Vorrichtungen und ferroelektrischen Random Access Memory (F-RAM). In manchen Beispielen können Speicherklassen-Arbeitsspeichervorrichtungen Byte-zugänglich sein, eine relativ hohe Lebensdauer aufweisen (vergleichbar mit oder größer als Flash-Arbeitsspeicher), eine relativ niedrige Schreib- und Lese-Latenzzeit aufweisen (z. B. niedriger als Flash-Arbeitsspeicher, in manchen Beispielen vergleichbar mit DRAM).
  • Wie oben diskutiert, kann die Steuerung 8 herbeiführen, dass die Arbeitsspeichervorrichtungen 16, Paritätsarbeitsspeichervorrichtungen 20 oder beide Paritätsdaten speichern, die durch die Arbeitsspeichervorrichtungen 16 gespeicherte Benutzerdaten zugeordnet sind. Wenn sie beispielweise einen Block von Benutzerdaten speichert, kann die Steuerung 8 das exklusive ODER (XOR) des Blocks von Benutzerdaten bestimmen und mit den Benutzerdaten speichern. Wenn sie den Block von Benutzerdaten abruft, kann die Steuerung, kann die Steuerung 8 sowohl den gespeicherten Block von Benutzerdaten als auch die dem Block von Benutzerdaten zugeordneten gespeicherten Paritätsdaten auslesen und die gespeicherten Paritätsdaten verwenden, um den Block von Benutzerdaten zu verifizieren. In manchen Beispielen kann die Steuerung 8 die Paritätsdaten mit den Benutzerdaten in derselben physikalischen Seite einer Arbeitsspeichervorrichtung speichern. Beispielsweise kann die Steuerung 8 Paritätsdaten zusammen mit den Benutzerdaten in Seite 19Aa von Block 17A der Arbeitsspeichervorrichtung 16Aa von 2 speichern.
  • Die Größe der durch die Steuerung 8 verwendeten Paritätsdaten kann als ECC-Stärke bezeichnet werden. In manchen Beispielen kann eine größere Größe von Paritätsdaten besseren Schutz vor Datenkorruptionsfehlern bereitstellen. Allerdings steigt mit steigender Größe der Paritätsdaten auch die Menge an durch die Paritätsdaten verbrauchtem Arbeitsspeicher. In manchen Beispielen, wie wenn die Steuerung 8 die Paritätsdaten mit den Benutzerdaten in derselben physikalischen Seite der Arbeitsspeichervorrichtung speichert, kann die Größe der Paritätsdaten auf die Differenz zwischen der Größe eines Blocks von Benutzerdaten und der Größe der physikalischen Seite der Arbeitsspeichervorrichtung begrenzt sein. Wenn beispielsweise eine Größe der physikalischen Seite 19Aa 8.320 Bytes beträgt und die Größe des Blocks von Benutzerdaten 8.192 Bytes beträgt, kann die Größe der Paritätsdaten, welche die Steuerung 8 in derselben Seite wie die Benutzerdaten speichern kann, auf 128 Bytes begrenzt sein. Allerdings kann es in manchen Beispielen wünschenswert sein, dass die Steuerung 8 größere Paritätsdaten als die begrenzte Größendifferenz zwischen der Größe eines Blocks von Benutzerdaten und der Größe der physikalischen Seite der Arbeitsspeichervorrichtung speichert, z. B. um stärkeren Schutz vor Datenkorruptionsfehlern bereitzustellen.
  • In manchen Beispielen kann die Steuerung 8 die Größe der Paritätsdaten von der Größe von physikalischen Seiten der Arbeitsspeichervorrichtungen 16, der Differenz zwischen der Größe der physikalischen Seiten der Arbeitsspeichervorrichtungen 16 und der Größe des Blocks von Benutzerdaten oder beidem unabhängig machen. Beispielsweise kann die Steuerung 8 die Benutzerdaten und zumindest einen Teil der Paritätsdaten auf verschiedenen physikalischen Seiten innerhalb der Arbeitsspeichervorrichtungen 16 speichern. Als Beispiel kann die Steuerung 8 einen ersten Teil der Paritätsdaten zusammen mit den Benutzerdaten in Seite 19Aa von Arbeitsspeichervorrichtung 16Aa speichern und einen zweiten Teil der Paritätsdaten in Seite 19Ab von Arbeitsspeichervorrichtung 16Aa speichern. Da allerdings der zweite Teil der Paritätsdaten in einer anderen Seite der Arbeitsspeichervorrichtungen 16 als die Benutzerdaten gespeichert ist, kann es sein, dass die Steuerung 8 beide Seiten (z. B. Seite 19Aa und Seite 19Ab) auslesen muss, um die Benutzerdaten abzurufen und zu dekodieren. Ebenso kann es sein, dass die Steuerung 8, wenn sie die Benutzerdaten speichert, auf zwei verschiedene physikalische Seiten in den Arbeitsspeichervorrichtungen 16 einschreiben muss, was möglicherweise nicht wünschenswert ist (z. B. aufgrund von erhöhten Zykluszählungen, reduziertem Leistungsverhalten, reduzierter Zuverlässigkeit und erhöhter Lesestörung). Ein weiteres Beispiel besteht darin, dass im Gegensatz zum Speichern der Paritätsdaten auf einer anderen physikalischen Seite als den entsprechenden Benutzerdaten innerhalb einer Arbeitsspeichervorrichtung der Arbeitsspeichervorrichtungen 16 die Steuerung 8 zumindest einen Teil der Paritätsdaten in Paritätsarbeitsspeichervorrichtungen 20 speichert. Beispielsweise kann die Steuerung 8 Paritätsdaten für einen Block von Benutzerdaten bestimmen, den Block von Benutzerdaten in Arbeitsspeichervorrichtungen 16 speichern und zumindest einen Teil der Paritätsdaten in Paritätsarbeitsspeichervorrichtungen 20 speichern. In manchen Beispielen kann die Steuerung 8 den zumindest einen Teil der Paritätsdaten in Paritätsarbeitsspeichervorrichtungen 20 einschreiben und den Block von Benutzerdaten parallel dazu in Arbeitsspeichervorrichtungen 16 einschreiben. Ebenso kann die Steuerung 8 in manchen Beispielen den zumindest einen Teil der Paritätsdaten aus der Paritätsarbeitsspeichervorrichtung 20 auslesen und den Block von Benutzerdaten parallel dazu aus den Arbeitsspeichervorrichtungen 16 auslesen. Auf diese Weise kann die Steuerung 8 größere Größen von Paritätsdaten ohne oder mit reduzierten unerwünschten Wirkungen (z. B. erhöhte Zykluszählungen, reduziertes Leistungsverhalten, reduzierte Zuverlässigkeit und erhöhte Lesestörung) verwenden.
  • 3 ist ein konzeptuelles und schematisches Blockdiagramm, das beispielshafte Details der Steuerung 8 veranschaulicht. In manchen Beispielen kann die Steuerung 8 ein Adresstranslationsmodul 22, ein Schreibmodul 24, ein Wartungsmodul 26, ein Lesemodul 28, ein Zeitplanmodul 30 und eine Vielzahl von Kanalsteuerungen 32A32N (zusammen „Kanalsteuerungen 32”) umfassen. In weiteren Beispielen kann die Steuerung 8 zusätzliche Module oder Hardwareeinheiten umfassen oder kann weniger Module und Hardwareeinheiten umfassen. Die Steuerung 8 kann einen Mikroprozessor, digitalen Signalprozessor (DSP), anwendungsspezifische integrierte Schaltung (ASIC), Field-Programmable Gate Array (FPGA) oder weitere digitale Logikschaltungen umfassen.
  • Die Steuerung 8 kann mit der Hostvorrichtung 4 über eine Schnittstelle 14 verbunden sein und das Speichern von Daten in und das Abrufen von Daten aus den Arbeitsspeichervorrichtungen 16 verwalten. Beispielsweise kann das Schreibmodul 24 der Steuerung 8 Einschreibungen in die Arbeitsspeichervorrichtungen 16 verwalten. Beispielsweise kann das Schreibmodul 24 von der Hostvorrichtung 4 über die Schnittstelle 14 eine Nachricht empfangen, welche die Speichervorrichtung 6 anweist, einer logischen Adresse zugeordnete Daten und die Daten zu speichern, die als Benutzerdaten bezeichnet werden können. Das Schreibmodul 24 kann das Einschreiben der Benutzerdaten in die Arbeitsspeichervorrichtungen 16 verwalten.
  • Beispielsweise kann das Schreibmodul 24 mit dem Adresstranslationsmodul 22 kommunizieren, das Translation zwischen logischen Adressen, die von Hostvorrichtung 4 verwendet werden, verwaltet, um Speicherorte von Daten und physikalische Blockadressen zu verwalten, die von dem Schreibmodul 24 verwendet werden, um das Einschreiben von Daten in Arbeitsspeichervorrichtungen anzuweisen. Das Adresstranslationsmodul 22 der Steuerung 8 kann eine Flash-Translationsebene oder eine Tabelle verwenden, die logische Adressen (oder logische Blockadressen) von durch Arbeitsspeichervorrichtungen 16 gespeicherten Daten zu physikalischen Blockadressen von durch Arbeitsspeichervorrichtungen 16 gespeicherten Daten translatiert. Beispielsweise kann die Hostvorrichtung 4 die logischen Blockadressen der durch Arbeitsspeichervorrichtungen 16 in Befehle oder Nachrichten an Speichervorrichtung 6 gespeicherten Daten verwenden, während das Schreibmodul 24 physikalische Blockadressen der Daten verwendet, um das Einschreiben von Daten in Arbeitsspeichervorrichtungen 16 zu steuern. (Ebenso kann das Lesemodul 28 physikalische Blockadressen verwenden, um das Auslesen von Daten aus Arbeitsspeichervorrichtungen 16 zu steuern.) Die physikalischen Blockadressen entsprechen tatsächlichen, physikalischen Blöcken von Arbeitsspeichervorrichtungen 16. In manchen Beispielen kann das Adresstranslationsmodul 22 die Flash-Translationsebene oder Tabelle in flüchtigen Arbeitsspeicher 12 speichern, wie beispielsweise innerhalb gecachter Information 13.
  • Auf diese Weise kann es der Hostvorrichtung 4 ermöglicht werden, eine statische logische Blockadresse für einen bestimmte Datensatz zu verwenden, während sich die physikalische Blockadresse, auf der die Daten tatsächlich gespeichert sind, ändert. Das Adresstranslationsmodul 22 kann die Flash-Translationsebene oder Tabelle beibehalten, um die logischen Blockadressen auf physikalischen Blockadressen abzubilden, um die Verwendung der statischen logischen Blockadressen durch die Hostvorrichtung 4 zu ermöglichen, während sich die physikalischen Blockadressen der Daten ändern können, z. B. aufgrund Wear-Leveling, Speicherbereinigung oder dergleichen.
  • Wie oben diskutiert, kann das Schreibmodul 24 von Steuerung 8 eine oder mehrere Operationen zum Verwalten des Einschreibens von Daten in Arbeitsspeichervorrichtungen 16 durchführen. Beispielsweise kann das Schreibmodul 24 das Einschreiben von Daten in Arbeitsspeichervorrichtungen 16 verwalten, indem es einen oder mehrere Blöcke innerhalb der Arbeitsspeichervorrichtungen 16 auswählt, um die Daten zu speichern, und herbeiführt, dass Arbeitsspeichervorrichtungen der Arbeitsspeichervorrichtungen 16, welche die ausgewählten Blöcke umfassen, die Daten tatsächlich speichern. Wie oben diskutiert, kann das Schreibmodul 24 herbeiführen, dass das Adresstranslationsmodul 22 die Flash-Translationsebene oder Tabelle basierend auf den ausgewählten Blöcken aktualisiert. Beispielsweise kann das Schreibmodul 24 eine Nachricht von der Hostvorrichtung 4 empfangen, die eine Dateneinheit und eine logische Blockadresse umfasst, einen Block innerhalb einer bestimmten Arbeitsspeichervorrichtung der Arbeitsspeichervorrichtungen 16 zum Speichern der Daten auswählen, herbeiführen, dass die bestimmte Arbeitsspeichervorrichtung der Arbeitsspeichervorrichtungen 16 die Daten tatsächlich speichert (z. B. über eine Kanalsteuerung der Kanalsteuerungen 32, die der bestimmten Arbeitsspeichervorrichtung entspricht), und herbeiführen, dass das Adresstranslationsmodul 22 die Flash-Translationsebene oder Tabelle aktualisiert, um anzuzeigen, dass die logische Blockadresse dem ausgewählten Block innerhalb der bestimmten Arbeitsspeichervorrichtung entspricht.
  • Das Lesemodul 28 kann ebenso das Auslesen von Daten aus Arbeitsspeichervorrichtungen 16 steuern. Beispielsweise kann das Lesemodul 28 von der Hostvorrichtung 4 eine Nachricht empfangen, die Daten mit einer zugeordneten logischen Blockadresse anfordert. Das Adresstranslationsmodul 22 kann die logische Blockadresse unter Verwendung der Flash-Translationsebene oder Tabelle in eine physikalische Blockadresse umwandeln. Das Lesemodul 28 kann dann eine oder mehrere Kanalsteuerungen 32 steuern, um die Daten von den physikalischen Blockadressen abzurufen. Ähnlich dem Schreibmodul 24 kann das Lesemodul 28 einen oder mehrere Blöcke auswählen und an die Kanalsteuerungen 32 eine Nachricht übermitteln, die herbeiführen kann, dass die Kanalsteuerungen 32 die Daten aus den ausgewählten Blöcken auslesen.
  • Um ein Bit mit einem logischen Wert von 0 (geladen) auf ein Bit mit einem vorigen logischen Wert von 1 (ungeladen) zu schreiben, wird eine hohe Stromstärke verwendet. Diese Stromstärke kann groß genug sein, dass sie unbeabsichtigte Änderungen der Ladung von benachbarten Flash-Arbeitsspeicherzellen herbeiführen kann. Zum Schutz vor unbeabsichtigten Änderungen kann ein ganzer Block von Flash-Arbeitsspeicherzellen auf einen logischen Wert von 1 (ungeladen) gelöscht werden, bevor jegliche Daten in Zellen innerhalb des Blocks eingeschrieben werden. Deshalb können Flash-Arbeitsspeicherzellen auf Blockebene gelöscht und auf Seitenebene beschrieben werden.
  • Um auch nur eine Datenmenge einzuschreiben, die weniger als eine Seite beanspruchen würde, kann die Steuerung 8 daher herbeiführen, dass ein ganzer Block gelöscht wird. Dies kann zu Schreibvervielfachung führen, was sich auf das Verhältnis zwischen der von der Hostvorrichtung 4 empfangenen Datenmenge, die in Arbeitsspeichervorrichtungen 16 einzuschreiben ist, und der tatsächlich in Arbeitsspeichervorrichtungen 16 eingeschriebenen Daten bezieht. Schreibvervielfachung trägt zu einer schnelleren Abnutzung der Flash-Arbeitsspeicherzellen bei, als sie ohne Schreibvervielfachung auftreten würde. Abnutzung von Flash-Arbeitsspeicherzellen kann auftreten, wenn Flash-Arbeitsspeicherzellen aufgrund der relativ hohen Spannungen gelöscht werden, die verwendet werden, um die Flash-Arbeitsspeicherzellen zu löschen. Über eine Vielzahl von Löschzyklen können die relativ hohen Spannungen zu Änderungen der Flash-Arbeitsspeicherzellen führen. Schließlich können sich die Flash-Arbeitsspeicherzellen abnutzen, sodass Daten nicht weiter in die Zellen eingeschrieben werden können.
  • Ein Verfahren, das die Steuerung 8 implementieren kann, um Schreibvervielfachung und Abnutzung von Flash-Arbeitsspeicherzellen zu reduzieren, umfasst das Einschreiben von Daten, die von der Hostvorrichtung 4 empfangen werden, in nicht verwendete Blöcke (z. B. Blöcke 17 von 2) oder teilweise verwendete Blöcke. Beispielsweise wenn die Hostvorrichtung 4 an die Speichervorrichtung 6 Daten sendet, die nur eine kleine Änderung von bereits durch die Speichervorrichtung 6 gespeicherten Daten umfassen. Die Steuerung kann dann die alten Daten als veraltet und nicht länger gültig markieren. Im Zeitverlauf kann dies die Anzahl von Löschoperationen, denen Blöcke ausgesetzt sind, reduzieren im Vergleich zum Löschen des Blocks, der die alten Daten hält, und Schreiben der aktualisierten Daten in denselben Block.
  • Als Antwort auf das Empfangen eines Schreibbefehls von der Hostvorrichtung 4 kann das Schreibmodul 24 bestimmen, an welchen physikalischen Orten (Blöcken 17) von Arbeitsspeichervorrichtungen 16 die Daten einzuschreiben sind. Beispielsweise kann das Schreibmodul 24 vom Adresstranslationsmodul 22 oder Wartungsmodul 26 eine oder mehrere physikalische Blockadressen anfordern, die leer sind (z. B. keine Daten speichern), teilweise leer sind (z. B. nur manche Seiten des Blocks speichern Daten), oder zumindest manche ungültige (oder veraltete) Daten speichern. Bei Erhalt der einen oder mehreren physikalischen Blockadressen kann das Schreibmodul 24 einen oder mehrere Blöcke definieren und/oder auswählen und eine Nachricht an Kanalsteuerungen 32A32N (zusammen „Kanalsteuerungen 32”) übermitteln, was dazu führt, dass die Kanalsteuerungen 32 die Daten in die Blöcke einschreiben.
  • Jede Kanalsteuerung der Kanalsteuerungen 32 kann mit einem entsprechenden Kanal der Kanäle 18 verbunden sein. In manchen Beispielen kann die Steuerung 8 dieselbe Anzahl von Kanalsteuerungen 32 umfassen wie die Anzahl von Kanälen 18 der Speichervorrichtung 2. Die Kanalsteuerungen 32 können die Nahsteuerung des Adressierens, Programmierens, Löschens und Auslesens von mit entsprechenden Kanälen verbundenen Arbeitsspeichervorrichtungen 16 durchführen, z. B. unter der Steuerung des Schreibmoduls 24, Lesemoduls 28 und/oder des Wartungsmoduls 26.
  • Das Wartungsmodul 26 kann konfiguriert sein, um Operationen in Bezug auf das Beibehalten des Leistungsverhaltens und das Erweitern der Lebensdauer von Speichervorrichtung 6 (z. B. Arbeitsspeichervorrichtungen 16) durchzuführen. Beispielsweise kann das Wartungsmodul 26 zumindest eines von Wear-Leveling oder Speicherbereinigung implementieren.
  • Das Zeitplanmodul 30 von Steuerung 8 kann eine oder mehrere Operationen zum Planen von durch die Arbeitsspeichervorrichtungen 16 durchzuführenden Aktivitäten durchführen. Beispielsweise kann die Zeitplanvorrichtung 30 von anderen Komponenten der Steuerung 8 empfangenen Anfragen planen, um eine oder mehrere Arbeitsspeichervorrichtungen 16 anzuweisen, eine oder mehrere Aktivitäten während der Laufzeit durchzuführen. In manchen Beispielen kann das Zeitplanmodul 30 die Anfragen so planen, dass sie in der Reihenfolge durchgeführt werden, in der sie empfangen wurden (z. B. nach dem Durchlauf- oder FIFO-Prinzip). In manchen Beispielen kann das Zeitplanmodul 30 die Anfragen basierend auf einem oder mehreren Faktoren planen, welche die folgenden umfassen können, ohne darauf eingeschränkt zu sein: den Anfragetyp (z. B. eine Leseanfrage, eine Schreibanfrage, eine Löschanfrage, eine Speicherbereinigungsanfrage etc.), eine Menge an Zeit, die verstrichen ist, seit die Anfrage empfangen wurde, eine Menge an Leistung, die durch das Durchführen der Anfrage verbraucht würde, Berücksichtigung der Bandbreite und dergleichen.
  • In manchen Beispielen kann das Schreibmodul 24 zusätzlich zum Herbeiführen, dass die Einheit von Benutzerdaten durch Arbeitsspeichervorrichtungen 16 gespeichert wird, herbeiführen, dass Arbeitsspeichervorrichtungen 16 Informationen (Paritätsdaten) speichern, die verwendet werden können, um die Dateneinheit wiederherzustellen und/oder zu validieren, sollten einer oder mehrere der Blocks ausfallen oder beschädigt werden. In manchen Beispielen kann das Schreibmodul 24 herbeiführen, dass die Paritätsdaten mit den Benutzerdaten in derselben physikalischen Seite einer Arbeitsspeichervorrichtung von Arbeitsspeichervorrichtungen 16 gespeichert werden. Beispielsweise kann das Adresstranslationsmodul 22 ein einfaches Schema zur Abbildung von logischen auf physikalische Adressen implementieren, das eine einzelne physikalische Seitenadresse auf einer einzelnen logischen Seitenadresse abbilden kann. Ein Beispiel für ein solches Schema ist untenstehend unter Bezugnahme auf 4 und 5 beschrieben.
  • In manchen Beispielen kann es wünschenswert sein, dass das Schreibmodul 24 herbeiführt, dass mehr Paritätsdaten für einen Block von Benutzerdaten gespeichert werden. Beispielsweise im Zuge der Verwendung und Alterung oder Alterung von Arbeitsspeichervorrichtungen 16 kann die Zuverlässigkeit der Arbeitsspeicherzellen der Arbeitsspeichervorrichtungen 16 abnehmen. In manchen Beispielen kann die Zuverlässigkeit der Arbeitsspeicherzellen von Arbeitsspeichervorrichtungen 16 als Bitfehlerhäufigkeit (BER) quantitativ bestimmt werden. Um die Wahrscheinlichkeit, dass das Lesemodul 28 den Block von Benutzerdaten erfolgreich abrufen kann, zu erhöhen, kann das Schreibmodul 24 als solches mit steigender BER größere Größen von Paritätsdaten speichern. Als ein Beispiel, wenn die BER niedriger als ein Schwellenwert ist, kann das Schreibmodul 24 weniger Paritätsdaten für jeden Block von Benutzerdaten speichern, als wenn die BER größer als ein Schwellenwert ist.
  • Allerdings kann es sein, dass in manchen Beispielen das Schreibmodul 24 nicht in der Lage ist, schnell herbeizuführen, dass die Menge von gespeicherten Paritätsdaten größer ist. In Beispielen, wo das Schreibmodul 24 herbeiführt, dass die Paritätsdaten für einen Block von Benutzerdaten mit den Benutzerdaten mit den Benutzerdaten in derselben physikalischen Seite einer Arbeitsspeichervorrichtung der Arbeitsspeichervorrichtungen 16 gespeichert wird, ist die Größe der Paritätsdaten möglicherweise auf die Differenz zwischen der Größe eines Blocks von Benutzerdaten und der Größe der physikalischen Seite der Arbeitsspeichervorrichtung begrenzt. Wenn beispielsweise die physikalische Seite in einer Arbeitsspeichervorrichtung 8.320 Bytes speichern kann und die Größe des Blocks von Benutzerdaten 8.192 Bytes beträgt, kann die Größe der Paritätsdaten auf 128 Bytes begrenzt sein. Diese Größenbegrenzung kann verhindern, dass das Schreibmodul 24 die Menge an gespeicherten Paritätsdaten schnell erhöht, was möglicherweise nicht wünschenswert ist.
  • 4 ist ein konzeptuelles Diagramm, das eine beispielhafte logische Konfiguration von Benutzerdaten und entsprechenden auf derselben Seite einer Arbeitsspeichervorrichtung gespeicherten entsprechenden Paritätsdaten veranschaulicht. Wie in 4 veranschaulicht, können Benutzerdaten 40A und entsprechende Paritätsdaten 42A einer logischen Seitenadresse 44A zugeordnet sein, und Benutzerdaten 40B und entsprechende Paritätsdaten 42B können einer logischen Seitenadresse 44B zugeordnet sein. Eine Länge 46 kann die kombinierte Länge der Benutzerdaten und der Paritätsdaten auf jeder logischen Seitenadresse darstellen. In manchen Beispielen können die Benutzerdaten 40A und Benutzerdaten 40B jeweils 8.192 Bytes lang sein und die Paritätsdaten 42A und Paritätsdaten 42B können jeweils 128 Bytes lang sein, sodass die kombinierte Länge von auf jeder logischen Seitenadresse zu speichernden Daten 8.320 Bytes betragen kann. 5 ist ein konzeptuelles Diagramm, das eine beispielhafte physikalische Konfiguration von Benutzerdaten und auf derselben Seite einer Arbeitsspeichervorrichtung gespeicherten entsprechenden Paritätsdaten veranschaulicht. In manchen Beispielen können die physikalische Seitenadresse 50A bzw. die physikalische Seitenadresse 50B Seite 19Aa bzw. Seite 19Ab von 2 entsprechen. Die Länge 48 kann eine Maximalgröße von Daten darstellen, deren Speicherung auf jede physikalische Seitenadresse das Schreibmodul 24 herbeiführen kann. In manchen Beispielen kann die Länge 48 8.320 Bytes betragen.
  • Wenn die kombinierte Größe von Datenblöcken auf einer logischen Seitenadresse weniger oder gleich der Maximalgröße von Daten ist, die auf jeder physikalischen Seitenadresse gespeichert werden können, kann das Schreibmodul 24 herbeiführen, dass die Blöcke von Daten auf jeder logischen Seitenadresse auf eine physikalische Seitenadresse ohne Neuanordnung geschrieben werden. In dem Beispiel von 4 und 5 kann das Schreibmodul 24, da die kombinierte Länge der Datenblöcke auf der logischen Seitenadresse 44A (d. h. Benutzerdaten 40A und Paritätsdaten 42A) niedriger oder gleich der Länge 48 ist, herbeiführen, dass die Datenblöcke auf der logischen Seitenadresse 44A ohne Neuanordnung auf die physikalische Seitenadresse 50A geschrieben werden. Allerdings ist es in diesem Beispiel nicht möglich, dass das Schreibmodul 24 die Größe der Paritätsdaten 42A erhöht, ohne dass die kombinierte Größe von Benutzerdaten 40A und Paritätsdaten 42A größer als die Länge 48 ist. Wie oben diskutiert, kann dieses Begrenzung nicht wünschenswert sein.
  • In manchen Beispielen kann das Schreibmodul 24 die Größe der Paritätsdaten von der Größe der physikalischen Seiten der Arbeitsspeichervorrichtungen 16 unabhängig machen. Beispielsweise kann das Schreibmodul 24 die Benutzerdaten und zumindest einen Teil der Paritätsdaten auf verschiedenen physikalischen Seiten innerhalb der Arbeitsspeichervorrichtungen 16 speichern. Als ein Beispiel kann die Steuerung 8 einen ersten Teil der Paritätsdaten zusammen mit den Benutzerdaten in Seite 19Aa der Arbeitsspeichervorrichtung 16Aa speichern und einen zweiten Teil der Paritätsdaten in Seite 19Ab der Arbeitsspeichervorrichtung 16Aa speichern. Da der zweite Teil der Paritätsdaten in einer anderen Seite der Arbeitsspeichervorrichtung 16 als die Benutzerdaten gespeichert wird, kann das Lesemodul 28 beide Seiten (z. B. Seite 19Aa und Seite 19Ab) auslesen, um die Benutzerdaten abzurufen. Ebenso kann das Schreibmodul 24 beim Speichern der Benutzerdaten in verschiedene physikalische Seiten in den Arbeitsspeichervorrichtungen 16 einschreiben.
  • In manchen Beispielen kann die Größe der durch das Schreibmodul 24 gespeicherten Paritätsdaten von der Größe der physikalischen Seiten der Arbeitsspeichervorrichtung unabhängig gemacht werden. Beispielsweise kann das Adresstranslationsmodul 22 ein erweitertes Schema zur Abbildung von logischen auf physikalische Adressen implementieren, das eine logische Seitenadresse auf mehrere physikalische Seitenadressen abbilden kann. Ein Beispiel für ein solches Schema ist untenstehend unter Bezugnahme auf 6 und 7 beschrieben.
  • 6 ist ein konzeptuelles Diagramm, das eine beispielhafte logische Konfiguration von Benutzerdaten und zumindest einen Teil von auf verschiedenen Seiten einer Arbeitsspeichervorrichtung gespeicherten Paritätsdaten veranschaulicht. Wie in 6 veranschaulicht, können Benutzerdaten 40A und entsprechende Paritätsdaten 42A1 und Paritätsdaten 42A2 einer logischen Seitenadresse 44A zugeordnet sein und Benutzerdaten 40B und entsprechende Paritätsdaten 42B1 und Paritätsdaten 42B2 können einer logischen Seitenadresse 44B zugeordnet sein. Eine Länge 46 kann die kombinierte Länge der Benutzerdaten und der Paritätsdaten auf jeder logischen Seitenadresse darstellen. In dem Beispiel von 6 können Benutzerdaten 40A und Benutzerdaten 40B jeweils 8.192 Bytes lang sein und Paritätsdaten 42A1, Paritätsdaten 42A2, Paritätsdaten 42B1 und Paritätsdaten 42B2 können jeweils 128 Bytes lang sein, sodass die auf jeder logischen Seitenadresse zu speichernde kombinierte Datenlänge 8.448 Bytes betragen kann. 7 ist ein konzeptuelles Diagramm, das eine beispielhafte physikalische Konfiguration von Benutzerdaten und zumindest einen Teil von auf verschiedenen Seiten einer Arbeitsspeichervorrichtung gespeicherten Paritätsdaten veranschaulicht. In manchen Beispielen können die physikalische Seitenadresse 50A, physikalische Seitenadresse 50B bzw. physikalische Seitenadresse 50C Seite 19Aa, 19Ab bzw. Seite 19Ac von 2 entsprechen. Die Länge 48 kann die Maximalgröße von Daten darstellen, deren Speicherung auf jede physikalische Seitenadresse das Schreibmodul 24 herbeiführen kann. In dem Beispiel von 7 kann die Länge 48 8.320 Bytes betragen.
  • Wie oben diskutiert, wenn die kombinierte Größe von Datenblöcken auf einer logischen Seitenadresse niedriger oder gleich der Maximalgröße von Daten ist, die auf jeder physikalischen Seitenadresse gespeichert werden können, kann das Schreibmodul 24 herbeiführen, dass die Datenblöcke auf jeder logischen Seitenadresse ohne Neuanordnung auf eine physikalische Seitenadresse geschrieben werden können. Da in dem Beispiel von 6 und 7 jedoch die kombinierte Länge der Datenblöcke auf der logischen Seitenadresse 44A (d. h. Benutzerdaten 40A, Paritätsdaten 42A1 und Paritätsdaten 42A2) größer als die Länge 48 ist, kann das Schreibmodul 24 herbeiführen, dass die Datenblöcke auf der logischen Seitenadresse 44A auf mehrere physikalische Seitenadressen geschrieben werden. Um es beispielsweise dem Schreibmodul 24 zu ermöglichen, die Datenblöcke auf der logischen Seitenadresse 44A zu speichern, kann das Adresstranslationsmodul 22 die logische Seitenadresse 44A auf die gesamte physikalische Seitenadresse 50A und einen ersten Teil einer physikalischen Seitenadresse 50B abbilden. Ebenso kann das Adresstranslationsmodul 22, um es dem Schreibmodul 24 zu ermöglichen, die Datenblöcke auf der logischen Seitenadresse 44B zu speichern, die logische Seitenadresse 44B auf einen zweiten Teil der physikalischen Seitenadresse 50B und einen ersten Teil der physikalischen Seitenadresse 50C abbilden. Basierend auf den Abbildungen kann das Schreibmodul 24 Benutzerdaten 40A und Paritätsdaten 42A1 auf die physikalische Seitenadresse 50A speichern, Paritätsdaten 42A2 und Benutzerdaten 40B auf der physikalischen Seitenadresse 50B speichern und Paritätsdaten 42B1 und Paritätsdaten 42B2 auf der physikalischen Seitenadresse 50C speichern. Auf diese Weise kann das Schreibmodul 24 größere Größen von Paritätsdaten speichern.
  • Da ein Teil der Paritätsdaten in einer anderen Seite als die Benutzerdaten gespeichert werden kann, kann das Schreibmodul 24 zwei Schreiboperationen ausführen, um einen Block von Benutzerdaten zu speichern. Ebenso kann das Lesemodul 28 zwei Leseoperationen ausführen, um einen Block von Benutzerdaten abzurufen. In manchen Beispielen sind mehrere Lese- oder Schreiboperationen zum Abrufen oder Speichern eines einzelnen Blocks von Benutzerdaten möglicherweise nicht wünschenswert (z. B. aufgrund von erhöhten Zykluszählungen, reduziertem Leistungsverhalten, reduzierter Zuverlässigkeit und erhöhter Lesestörung).
  • Daher kann das Schreibmodul 24 in manchen Beispielen, anstatt zumindest einen Teil der Paritätsdaten auf einer anderen physikalischen Seite als die entsprechenden Benutzerdaten innerhalb einer einzelnen Arbeitsspeichervorrichtung zu speichern (z. B. einer Arbeitsspeichervorrichtung von Arbeitsspeichervorrichtungen 16), zumindest einen Teil der Paritätsdaten in Paritätsarbeitsspeichervorrichtungen 20 speichern. Beispielsweise kann das Schreibmodul 24 Paritätsdaten für einen Block von Benutzerdaten bestimmen, den Block von Benutzerdaten in Arbeitsspeichervorrichtungen 16 speichern und zumindest einen Teil der Paritätsdaten in Paritätsarbeitsspeichervorrichtungen 20 speichern. Ein Beispiel für ein solches Schema ist untenstehend unter Bezugnahme auf 8 und 9 beschrieben. In manchen Beispielen kann das Schreibmodul 24 den Teil der Paritätsdaten in Paritätsarbeitsspeichervorrichtungen 20 einschreiben und den Block von Benutzerdaten parallel dazu in Arbeitsspeichervorrichtungen 16 einschreiben. Ebenso kann das Lesemodul 28 in manchen Beispielen den Teil der Paritätsdaten aus der Paritätsarbeitsspeichervorrichtung 20 auslesen und den Block von Benutzerdaten parallel dazu aus Arbeitsspeichervorrichtungen 16 auslesen. Auf diese Weise kann das Schreibmodul 24 größere Größen von Paritätsdaten ohne oder mit reduzierten unerwünschten Wirkungen (z. B. erhöhten Zykluszählungen, reduziertem Leistungsverhalten, reduzierter Zuverlässigkeit und erhöhter Lesestörung) verwenden.
  • 8 ist ein konzeptuelles Diagramm, das eine beispielhafte logische Konfiguration von Benutzerdaten und zumindest einen Teil von auf unterschiedlichen Arbeitsspeichervorrichtungen gespeicherten Paritätsdaten veranschaulicht. Wie in 8 veranschaulicht, können Benutzerdaten 40A und entsprechende Paritätsdaten 42A1 und Paritätsdaten 42A2 einer logischen Seitenadresse 44A zugeordnet sein und Benutzerdaten 40B und entsprechende Paritätsdaten 42B1 und Paritätsdaten 42B2 können einer logischen Seitenadresse 44B zugeordnet sein. Die Länge 46 kann die kombinierte Länge von Benutzerdaten und Paritätsdaten auf jeder logischen Seitenadresse darstellen. In dem Beispiel von 8 können Benutzerdaten 40A und Benutzerdaten 40B jeweils 8.192 Bytes lang sein und Paritätsdaten 42A1, Paritätsdaten 42A2, Paritätsdaten 42B1 und Paritätsdaten 42B2 können jeweils 128 Bytes lang sein, sodass die kombinierte Länge von auf jeder logischen Seitenadresse zu speichernden Daten 8.448 Bytes betragen kann.
  • 9 ist ein konzeptuelles Diagramm, das eine beispielhafte physikalische Konfiguration von Benutzerdaten und zumindest einen Teil von auf verschiedenen Arbeitsspeichervorrichtungen gespeicherten Paritätsdaten veranschaulicht. In manchen Beispielen können die physikalische Seitenadresse 50A bzw. physikalische Seitenadresse 50B Seite 19Aa bzw. Seite 19Ab von 2 entsprechen. Die Länge 48 kann die Maximalgröße von Daten darstellen, deren Speicherung auf jede physikalische Seitenadresse der Speichervorrichtungen 16 das Schreibmodul 24 herbeiführen kann. In dem Beispiel von 9 kann die Länge 48 8.320 Bytes betragen. Die Länge 52 kann die Größe von Paritätsdaten darstellen, die in eine Paritätsarbeitsspeichervorrichtung der Paritätsarbeitsspeichervorrichtungen 20 eingeschrieben sind.
  • Wie in 9 gezeigt, kann das Schreibmodul 24 zumindest einen Teil der Paritätsdaten in Paritätsarbeitsspeichervorrichtungen 20 speichern. Beispielsweise kann das Schreibmodul 24 erste Paritätsdaten 42A1 und zweite Paritätsdaten 42A2 für Benutzerdaten 40A bestimmen. Wie in 8 gezeigt, können Benutzerdaten 40A, erste Paritätsdaten 42A1 und zweite Paritätsdaten 42A2 jeweils der logischen Seitenadresse 44A zugeordnet sein. Das Adresstranslationsmodul 22 kann eine Abbildung bereitstellen, die Benutzerdaten 40A und erste Paritätsdaten 42A1 auf die physikalische Seitenadresse 50A der Arbeitsspeichervorrichtungen 16 abbildet, die Seite 19Aa von 2 entsprechen kann, und zweite Paritätsdaten 42A2 auf Paritätsarbeitsspeichervorrichtungen 20 abbildet. Basierend auf der Abbildung kann das Schreibmodul 24 herbeiführen, dass Benutzerdaten 40A und erste Paritätsdaten 42A1 in Seite 19Aa der Arbeitsspeichervorrichtung 16Aa von 2 eingeschrieben werden, und herbeiführen, dass zweite Paritätsdaten 42A2 in Paritätsarbeitsspeichervorrichtungen 20 eingeschrieben werden.
  • 10 ist ein Flussdiagramm eines beispielhaften Verfahrens zum Speichern von Paritätsdaten in einer anderen Arbeitsspeichervorrichtung als entsprechende Benutzerdaten, gemäß einem oder mehreren Verfahren der vorliegenden Offenbarung. Das Verfahren von 10 wird der einfacheren Beschreibung halber unter gleichzeitiger Bezugnahme auf Speichervorrichtung 6 und Steuerung 8 von 1 und 3 beschrieben, obwohl Rechenvorrichtungen mit anderen Konfigurationen als jener der Speichervorrichtung 6 oder Steuerung 8 die Verfahren von 10 ausführen können.
  • Wie in 10 dargestellt, kann die Steuerung 8 einen zu speichernden Datenblock empfangen (1002). Beispielsweise kann das Schreibmodul 24 von Steuerung 8 einen zu speichernden Block von Benutzerdaten von Host 4 von 1 empfangen. Die Steuerung 8 kann Paritätsdaten für den Datenblock bestimmen (1004). Beispielsweise kann das Schreibmodul 24 XOR-Paritätsdaten für den von der Hostvorrichtung 4 empfangenen Block von Benutzerdaten bestimmen. In manchen Beispielen kann das Schreibmodul 24 eine Größe von Paritätsdaten zur Bestimmung für den Datenblock wählen. Beispielsweise kann das Schreibmodul 24 die Größe der Paritätsdaten basierend auf einer oder mehreren Gesundheitsstatistiken der Arbeitsspeichervorrichtungen 16 auswählen, wie beispielsweise einer Bitfehlerhäufigkeit (BER). Als ein Beispiel, wenn die BER niedriger als ein Schwellenwert ist, kann das Schreibmodul 24 eine kleinere Größe von Paritätsdaten (z. B. 128 Bytes, wenn die Größe des Datenblocks 8.192 Bytes beträgt) auswählen, um den Datenblock dann zu bestimmen, wenn die BER größer als der Schwellenwert ist (z. B. 256 Bytes, wenn die Größe des Datenblocks 8.192 Bytes beträgt).
  • Die Steuerung 8 kann bestimmen, ob eine kombinierte Größe der Paritätsdaten und des Datenblocks größer als eine Größe einer Seite einer primären Speicheranordnung ist (1006). Beispielsweise kann das Schreibmodul 24 bestimmen, ob die kombinierte Größe der Paritätsdaten und des Datenblocks größer als eine Größe einer Seite einer Arbeitsspeichervorrichtung der Arbeitsspeichervorrichtungen 16 der nichtflüchtigen Arbeitsspeicheranordnung 10 ist.
  • Wenn die kombinierte Größe der Paritätsdaten und des Datenblocks nicht größer als eine Größe einer Seite der primären Speicheranordnung ist („Nein”-Verzweigung von 1006), kann die Steuerung 8 den Datenblock und die Paritätsdaten in eine Seite der primären Speicheranordnung (1008) einschreiben. Beispielsweise kann das Schreibmodul 24 herbeiführen, dass die Kanalsteuerung 32A den Datenblock und die Paritätsdaten in Seite 19Aa von Block 17A der Arbeitsspeichervorrichtung 16Aa von 2 einschreibt.
  • Wenn die kombinierte Größe der Paritätsdaten und des Datenblocks größer als eine Größe einer Seite der primären Speicheranordnung ist („Ja”-Verzweigung von 1006), kann die Steuerung 8 den Datenblock und einen ersten Teil der Paritätsdaten in eine Seite der primären Speicheranordnung einschreiben und einen zweiten Teil der Paritätsdaten in eine Paritätsarbeitsspeichervorrichtung (1010) einschreiben. Beispielsweise kann das Schreibmodul 24 herbeiführen, dass die Kanalsteuerung 32A den Datenblock und den ersten Teil der Paritätsdaten in Seite 19Aa einschreibt, und herbeiführen, dass eine Paritätsarbeitsspeichervorrichtung der Paritätsarbeitsspeichervorrichtungen 20 den zweiten Teil der Paritätsdaten speichert. Auf diese Weise kann die Steuerung 8 zumindest einen Teil von Paritätsdaten in einer anderen Arbeitsspeichervorrichtung als die entsprechenden Datenblöcke speichern.
  • Die obigen Operationen sind nur ein Beispiel und weitere Variationen kommen in Frage. Beispielsweise kann es in manchen Beispielen sein, dass die Steuerung 8 keine der Paritätsdaten in die primäre Speicheranordnung speichert und die Paritätsdaten immer in die Paritätsarbeitsspeichervorrichtungen speichert, ungeachtet der Größe der Paritätsdaten.
  • Die in der vorliegenden Offenbarung beschriebenen Verfahren können zumindest teilweise in Hardware, Software, Firmware oder jeglichen Kombination davon implementiert werden. Beispielsweise können verschiedene Aspekte der beschriebenen Verfahren innerhalb eines oder mehrerer Prozessoren implementiert sein, einschließlich eines oder mehrere Mikroprozessoren, digitaler Signalprozessoren (DSPs), anwendungsspezifischer integrierter Schaltungen (ASICs), Field-Programmable Gate Arrays (FPGAs) oder jeglicher weiteren äquivalenten integrierten oder diskreten Logikschaltung sowie jeglicher Kombinationen solcher Komponenten. Der Begriff „Prozessor” oder „verarbeitende Schaltung” kann sich im Allgemeinen auf jegliche der vorangegangenen Logikschaltungen, alleine oder in Kombination mit anderen Logikschaltungen, oder jegliche andere äquivalente Schaltung beziehen. Eine Steuereinheit umfassend Hardware kann auch eine oder mehrere Verfahren der vorliegenden Offenbarung durchführen.
  • Solche Hardware, Software und Firmware kann innerhalb derselben Vorrichtung innerhalb separater Vorrichtungen implementiert sein, um die verschiedenen in der vorliegenden Offenbarung beschriebenen Verfahren zu unterstützen. Zusätzlich dazu können jegliche der beschriebenen Einheiten, Module oder Komponenten zusammen oder separat als diskrete, aber interoperable Logikvorrichtungen implementiert sein. Die Darstellung von verschiedenen Merkmalen als Module oder Einheiten soll verschiedene funktionale Aspekte unterstreichen und impliziert nicht notwendigerweise, dass solche Module oder Einheiten durch separate Hardware-, Firmware- oder Softwarekomponenten umgesetzt werden müssen. Vielmehr kann die mit einem oder mehreren Modulen verbundene Funktionalität durch separate Hardware-, Firmware- oder Softwarekomponenten ausgeführt werden oder innerhalb gemeinsamer oder separater Hardware-, Firmware- oder Softwarekomponenten integriert sein.
  • Die in dieser Offenbarung beschriebenen Verfahren können auch in einem Herstellartikel ausgeführt oder kodiert sein, der ein mit Befehlen kodiertes computerlesbares Speichermedium umfasst. Befehle, die in einem Herstellartikel umfassend ein kodiertes computerlesbares Speichermedium eingebettet oder kodiert sind, können herbeiführen, dass eine oder mehrere programmierbare Prozessoren oder andere Prozessoren eine oder mehrere der hierin beschriebenen Verfahren implementieren, wie beispielsweise wenn in dem computerlesbaren Speichermedium enthaltene oder kodierte Befehle durch den einen oder die mehreren Prozessoren ausgeführt werden. Computerlesbare Speichermedien können Random Access Memory (RAM), Nurlesearbeitsspeicher (ROM), programmierbaren Nurlesearbeitsspeicher (PROM), löschbaren programmierbaren Nurlesearbeitsspeicher (EPROM), elektronisch löschbaren programmierbaren Nurlesearbeitsspeicher (EEPROM), Flash-Arbeitsspeicher, eine Festplatte, eine Compact-Disc-ROM (CD-ROM), eine Diskette, eine Kassette, ein Magnetmedium, optisches Medium oder ein anderes computerlesbares Medium umfassen. In manchen Beispielen kann ein Herstellartikel ein oder mehrere computerlesbare Speichermedien umfassen.
  • In manchen Beispielen kann ein computerlesbares Speichermedium ein nichtflüchtiges Medium umfassen. Der Begriff „nichtflüchtig” kann anzeigen, dass das Speichermedium nicht in einer Trägerwelle oder einem übermittelten Signal ausgeführt ist. In bestimmten Beispielen kann ein nichtflüchtiges Speichermedium Daten speichern, die sich im Zeitverlauf ändern können (z. B. in einem RAM oder Cache).
  • Es wurden verschiedene Beispiele beschrieben. Diese und weitere Beispiele liegen innerhalb des Schutzumfangs der folgenden Patentansprüche.

Claims (20)

  1. Speichervorrichtung, umfassend: eine primäre Speicheranordnung, die eine Vielzahl von Arbeitsspeichervorrichtungen umfasst; eine oder mehrere Paritätsarbeitsspeichervorrichtungen; und eine Steuerung, die konfiguriert ist, um einen Datenblock zu speichern durch zumindest: Einschreiben des Datenblocks in die primäre Speicheranordnung; Bestimmen von Paritätsdaten für den Datenblock; und Einschreiben von zumindest einem Teil der bestimmten Paritätsdaten in die eine oder die mehreren Paritätsarbeitsspeichervorrichtungen.
  2. Speichervorrichtung nach Anspruch 1, worin die Steuerung ferner konfiguriert ist, um: eine Größe von Paritätsdaten zur Bestimmung für den Datenblock auszuwählen; und den zumindest einen Teil der bestimmten Paritätsdaten in die eine oder die mehreren Paritätsarbeitsspeichervorrichtungen einzuschreiben, wobei eine kombinierte Größe der ausgewählten Größe von Paritätsdaten und des Datenblocks größer als eine Größe einer Seite der primären Speicheranordnung ist.
  3. Speichervorrichtung nach Anspruch 2, worin: um die Paritätsdaten zu bestimmen, die Steuerung konfiguriert ist, erste Paritätsdaten und zweite Paritätsdaten für den Datenblock zu bestimmen, um den Datenblock in die primäre Speicheranordnung einzuschreiben, die Steuerung konfiguriert ist, den Datenblock und die ersten Paritätsdaten in eine Seite der primären Speicheranordnung einzuschreiben, und um den Teil der Paritätsdaten in die eine oder die mehreren Paritätsvorrichtungen einzuschreiben, die Steuerung konfiguriert ist, die zweiten Paritätsdaten in die eine oder die mehreren Paritätsvorrichtungen einzuschreiben.
  4. Speichervorrichtung nach Anspruch 1, worin die Steuerung ferner konfiguriert ist, den Datenblock abzurufen durch zumindest: Auslesen des Datenblocks aus der primären Speicheranordnung; Auslesen der Paritätsdaten aus der einen oder den mehreren Paritätsvorrichtungen; und Verifizieren des Datenblocks basierend auf den Paritätsdaten.
  5. Speichervorrichtung nach Anspruch 1, worin die eine oder die mehreren Paritätsarbeitsspeichervorrichtungen ein anderer Typ von Arbeitsspeichervorrichtung als die Vielzahl von Arbeitsspeichervorrichtungen der primären Speicheranordnung sind.
  6. Speichervorrichtung nach Anspruch 5, worin die Vielzahl von Arbeitsspeichervorrichtungen der primären Speicheranordnung eine Vielzahl von Flash-Arbeitsspeichervorrichtungen umfasst und worin die eine oder die mehreren Paritätsarbeitsspeichervorrichtungen eine oder mehrere magnetoresistive Random-Access-Memory(MRAM)-, Phase-Change-Random-Access-Memory(PRAM)- oder resistive Random-Access-Memory(ReRAM)-Arbeitsspeichervorrichtungen umfassen.
  7. Verfahren, umfassend: Einschreiben eines Datenblocks in eine primäre Speicheranordnung, die eine Vielzahl von Arbeitsspeichervorrichtungen umfasst, durch eine Steuerung einer Speichervorrichtung; Bestimmen von Paritätsdaten für den Datenblock durch die Steuerung; und Einschreiben der bestimmten Paritätsdaten in eine oder mehrere Paritätsarbeitsspeichervorrichtungen durch die Steuerung.
  8. Verfahren nach Anspruch 7, ferner umfassend: Auswählen einer Größe von Paritätsdaten zur Bestimmung für den Datenblock; und Einschreiben des zumindest einen Teils der bestimmten Paritätsdaten in die eine oder die mehreren Paritätsarbeitsspeichervorrichtungen, wobei eine kombinierte Größe der ausgewählten Größe von Paritätsdaten und des Datenblocks größer als eine Größe einer Seite der primären Speicheranordnung ist.
  9. Verfahren nach Anspruch 8, worin: das Bestimmen der Paritätsdaten das Bestimmen erster Paritätsdaten und zweiter Paritätsdaten für den Datenblock umfasst, das Einschreiben des Datenblocks in die primäre Speicheranordnung das Einschreiben des Datenblocks und der ersten Paritätsdaten in eine Seite der primären Speicheranordnung umfasst, und das Einschreiben des Teils der Paritätsdaten in die eine oder die mehreren Paritätsvorrichtungen das Einschreiben der zweiten Paritätsdaten in die eine oder die mehreren Paritätsvorrichtungen umfasst.
  10. Verfahren nach Anspruch 7, ferner umfassend das Abrufen des Datenblocks durch zumindest: Auslesen des Datenblocks aus der primären Speicheranordnung; Auslesen der Paritätsdaten aus der einen oder den mehreren Paritätsvorrichtungen; und Verifizieren des Datenblocks basierend auf den Paritätsdaten.
  11. Verfahren nach Anspruch 7, worin die eine oder die mehreren Paritätsarbeitsspeichervorrichtungen ein anderer Typ von Arbeitsspeichervorrichtung als die Vielzahl von Arbeitsspeichervorrichtungen der primären Speicheranordnung sind.
  12. Verfahren nach Anspruch 11, worin die Vielzahl von Arbeitsspeichervorrichtungen der primären Speicheranordnung eine Vielzahl von Flash-Arbeitsspeichervorrichtungen umfasst und worin die eine oder die mehreren Paritätsarbeitsspeichervorrichtungen eine oder mehrere magnetoresistive Random-Access-Memory(MRAM)-, Phase-Change-Random-Access-Memory(PRAM)- oder resistive Random-Access-Memory(ReRAM)-Arbeitsspeichervorrichtungen umfassen.
  13. Computerlesbares Speichermedium, das Befehle speichert, die, wenn sie ausgeführt werden, herbeiführen, dass ein oder mehrere Prozessoren einer Speichervorrichtung: einen Datenblock in eine primäre Speicheranordnung, die eine Vielzahl von Arbeitsspeichervorrichtungen umfasst, einschreiben; Paritätsdaten für den Datenblock bestimmen; und die bestimmten Paritätsdaten in eine oder mehrere Paritätsarbeitsspeichervorrichtungen einschreiben.
  14. Computerlesbares Speichermedium nach Anspruch 13, das ferner Befehle speichert, die herbeiführen, dass der eine oder die mehreren Prozessoren: eine Größe von Paritätsdaten zur Bestimmung für den Datenblock auswählen; und den zumindest einen Teil der bestimmten Paritätsdaten in die eine oder die mehreren Paritätsarbeitsspeichervorrichtungen einschreiben, wobei eine kombinierte Größe der ausgewählten Größe von Paritätsdaten und des Datenblocks größer als eine Größe einer Seite der primären Speicheranordnung ist.
  15. Computerlesbares Speichermedium nach Anspruch 14, worin: die Befehle, die herbeiführen, dass der eine oder die mehreren Prozessoren die Paritätsdaten bestimmen, Befehle umfassen, die herbeiführen, dass der eine oder die mehreren Prozessoren erste Paritätsdaten und zweite Paritätsdaten für den Datenblock bestimmen, die Befehle, die herbeiführen, dass der eine oder die mehreren Prozessoren den Datenblock in die primäre Speicheranordnung einschreiben, Befehle umfassen, die herbeiführen, dass der eine oder die mehreren Prozessoren den Datenblock und die ersten Paritätsdaten in eine Seite der primären Speicheranordnung einschreiben, und die Befehle, die herbeiführen, dass der eine oder die mehreren Prozessoren den Teil der Paritätsdaten in die eine oder die mehreren Paritätsvorrichtungen einschreiben, Befehle umfassen, die herbeiführen, dass der eine oder die mehreren Prozessoren die zweiten Paritätsdaten in die eine oder die mehreren Paritätsvorrichtungen einschreiben.
  16. Computerlesbares Speichermedium nach Anspruch 13, worin die eine oder die mehreren Paritätsarbeitsspeichervorrichtungen ein anderer Typ von Arbeitsspeichervorrichtung als die Vielzahl von Arbeitsspeichervorrichtungen der primären Speicheranordnung sind.
  17. System, umfassend: eine primäre Speicheranordnung, die eine Vielzahl von Arbeitsspeichervorrichtungen umfasst; eine oder mehrere Paritätsarbeitsspeichervorrichtungen; Mittel zum Einschreiben eines Datenblocks in die primäre Speicheranordnung; Mittel zum Bestimmen von Paritätsdaten für den Datenblock; und Mittel zum Einschreiben der bestimmten Paritätsdaten in eine oder mehrere Paritätsarbeitsspeichervorrichtungen.
  18. System nach Anspruch 17, ferner umfassend: Mittel zum Auswählen einer Größe von Paritätsdaten zur Bestimmung für den Datenblock; und Mittel zum Einschreiben des zumindest einen Teils der bestimmten Paritätsdaten in die eine oder die mehreren Paritätsarbeitsspeichervorrichtungen, wobei eine kombinierte Größe der ausgewählten Größe von Paritätsdaten und des Datenblocks größer als eine Größe einer Seite der primären Speicheranordnung ist.
  19. System nach Anspruch 18, worin: die Mittel zum Bestimmen der Paritätsdaten Mittel zum Bestimmen erster Paritätsdaten und zweiter Paritätsdaten für den Datenblock umfassen, die Mittel zum Einschreiben des Datenblocks in die primäre Speicheranordnung Mittel zum Einschreiben des Datenblocks und der ersten Paritätsdaten in eine Seite der primären Speicheranordnung umfassen, und die Mittel zum Einschreiben des Teils der Paritätsdaten in die eine oder die mehreren Paritätsvorrichtungen Mittel zum Einschreiben der zweiten Paritätsdaten in die eine oder die mehreren Paritätsvorrichtungen umfassen.
  20. System nach Anspruch 17, worin die eine oder die mehreren Paritätsarbeitsspeichervorrichtungen ein anderer Typ von Arbeitsspeichervorrichtung als die Vielzahl von Arbeitsspeichervorrichtungen der primären Speicheranordnung sind.
DE102016009806.6A 2015-08-11 2016-08-11 Speichern von paritätsdaten getrennt von geschützten daten Withdrawn DE102016009806A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/823,796 2015-08-11
US14/823,796 US10133625B2 (en) 2015-08-11 2015-08-11 Storing parity data separate from protected data

Publications (1)

Publication Number Publication Date
DE102016009806A1 true DE102016009806A1 (de) 2017-02-16

Family

ID=57799964

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102016009806.6A Withdrawn DE102016009806A1 (de) 2015-08-11 2016-08-11 Speichern von paritätsdaten getrennt von geschützten daten

Country Status (8)

Country Link
US (1) US10133625B2 (de)
JP (1) JP2017079050A (de)
KR (1) KR101861924B1 (de)
CN (1) CN106445724B (de)
AU (1) AU2016213809B2 (de)
CA (1) CA2938584A1 (de)
DE (1) DE102016009806A1 (de)
GB (1) GB2541299B (de)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10133625B2 (en) 2015-08-11 2018-11-20 Western Digital Technologies, Inc. Storing parity data separate from protected data
US10120751B2 (en) * 2015-09-25 2018-11-06 Intel Corporation Techniques to recover data using exclusive OR (XOR) parity information
US10120797B1 (en) * 2016-09-30 2018-11-06 EMC IP Holding Company LLC Managing mapping metadata in storage systems
US20180137005A1 (en) * 2016-11-15 2018-05-17 Intel Corporation Increased redundancy in multi-device memory package to improve reliability
US10474527B1 (en) * 2017-06-30 2019-11-12 Seagate Technology Llc Host-assisted error recovery
US10459809B2 (en) 2017-06-30 2019-10-29 Intel Corporation Stacked memory chip device with enhanced data protection capability
US10970204B2 (en) * 2017-08-29 2021-04-06 Samsung Electronics Co., Ltd. Reducing read-write interference by adaptive scheduling in NAND flash SSDs
US11635894B2 (en) * 2018-03-16 2023-04-25 Micron Technology, Inc. Clustered parity for NAND data placement schema
US10997071B2 (en) * 2018-11-27 2021-05-04 Micron Technology, Inc. Write width aligned storage device buffer flush
US10949297B2 (en) 2018-12-05 2021-03-16 Micron Technology, Inc. NAND device mixed parity management
US10942809B2 (en) * 2018-12-20 2021-03-09 Micron Technology, Inc. Changing of error correction codes based on the wear of a memory sub-system
US11106534B2 (en) 2019-02-27 2021-08-31 Western Digital Technologies, Inc. 3-dimensional NAND flash layer variation aware SSD raid
CN109992444A (zh) * 2019-03-25 2019-07-09 深圳忆联信息系统有限公司 一种基于硬件的端对端数据保护方法、装置、计算机设备及存储介质
US11164652B2 (en) 2019-06-21 2021-11-02 Micron Technology, Inc. Two-layer code with low parity cost for memory sub-systems
US10838811B1 (en) * 2019-08-14 2020-11-17 Silicon Motion, Inc. Non-volatile memory write method using data protection with aid of pre-calculation information rotation, and associated apparatus
TWI714248B (zh) * 2019-09-09 2020-12-21 新唐科技股份有限公司 記憶體控制器與資料保護方法
KR20210034711A (ko) * 2019-09-20 2021-03-31 삼성전자주식회사 메모리 셀의 신뢰성에 따라 패리티 비트들을 선택적으로 생성하는 저장 장치 및 그것의 동작 방법
US11416336B2 (en) 2019-10-15 2022-08-16 International Business Machines Corporation Managing parity data associated with configuration register data
CN110708513B (zh) * 2019-10-18 2021-06-01 中国科学院长春光学精密机械与物理研究所 一种8k视频多核异构处理装置
US11119855B2 (en) * 2019-10-24 2021-09-14 International Business Machines Corporation Selectively storing parity data in different types of memory
US11099929B2 (en) * 2019-12-17 2021-08-24 Micron Technology, Inc. Separating parity data from host data in a memory sub-system
US11004535B1 (en) 2019-12-17 2021-05-11 Sandisk Technologies Llc Robust storage of bad column data and parity bits on word line
US11630725B2 (en) * 2019-12-24 2023-04-18 Micron Technology, Inc. Management of parity data in a memory sub-system
US11200162B2 (en) 2020-04-28 2021-12-14 Western Digital Technologies, Inc. Condensing logical to physical table pointers in SSDs utilizing zoned namespaces
US11296729B2 (en) 2020-07-23 2022-04-05 Micron Technology, Inc. Data reliability for extreme temperature usage conditions in data storage
US11385961B2 (en) 2020-08-14 2022-07-12 Micron Technology, Inc. Adaptive parity techniques for a memory device
CN112764683B (zh) * 2021-01-22 2023-01-10 苏州浪潮智能科技有限公司 存储块管理信息同步记录方法、系统、终端及存储介质
JP2022146585A (ja) 2021-03-22 2022-10-05 キオクシア株式会社 メモリシステム
US12019913B2 (en) 2021-05-17 2024-06-25 Western Digital Technologies, Inc. Storing log and user data in SSD with independent plane operations
US11822814B2 (en) * 2022-02-28 2023-11-21 Western Digital Technologies, Inc. Dynamic XOR bin mapping in memory devices

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05326871A (ja) 1992-05-26 1993-12-10 Kokusai Electric Co Ltd メモリモジュール
KR20080080882A (ko) * 2007-03-02 2008-09-05 삼성전자주식회사 Ecc용 레이어를 구비하는 다층 구조 반도체 메모리 장치및 이를 이용하는 에러 검출 및 정정 방법
CN103984587B (zh) * 2008-06-12 2017-10-20 普安科技股份有限公司 储存虚拟化系统中更新实体储存装置的控制程序的方法
US8516343B2 (en) 2008-11-10 2013-08-20 Fusion-Io, Inc. Apparatus, system, and method for retiring storage regions
KR101526497B1 (ko) * 2008-11-27 2015-06-10 삼성전자주식회사 시스템 온 칩 및 이에 대한 정보 처리 방법
US7818525B1 (en) 2009-08-12 2010-10-19 Texas Memory Systems, Inc. Efficient reduction of read disturb errors in NAND FLASH memory
KR20120093385A (ko) 2009-12-16 2012-08-22 샌디스크 아이엘 엘티디 멀티레벨 셀들에 기록된 데이터를 위한 보조 패리티 비트
US8726126B2 (en) 2010-03-23 2014-05-13 Apple Inc. Non-regular parity distribution detection via metadata tag
US8533550B2 (en) 2010-06-29 2013-09-10 Intel Corporation Method and system to improve the performance and/or reliability of a solid-state drive
US8769374B2 (en) 2010-10-13 2014-07-01 International Business Machines Corporation Multi-write endurance and error control coding of non-volatile memories
KR101606718B1 (ko) 2010-10-27 2016-03-28 엘에스아이 코포레이션 플래시 메모리 기반 데이터 저장을 위한 적응적 ecc 기술들
US9058288B2 (en) 2011-04-03 2015-06-16 Apple Inc. Redundant storage in non-volatile memory by storing redundancy information in volatile memory
US8874994B2 (en) * 2011-07-22 2014-10-28 Sandisk Technologies Inc. Systems and methods of storing data
US8898541B2 (en) * 2011-11-30 2014-11-25 Sony Corporation Storage controller, storage device, information processing system, and storage controlling method
JP5845876B2 (ja) 2011-12-20 2016-01-20 ソニー株式会社 記憶制御装置、記憶装置、情報処理システム、および、それらにおける処理方法
US8656257B1 (en) 2012-01-11 2014-02-18 Pmc-Sierra Us, Inc. Nonvolatile memory controller with concatenated error correction codes
JP5768022B2 (ja) 2012-03-19 2015-08-26 株式会社東芝 メモリコントローラ、記憶装置、誤り訂正装置および誤り訂正方法
KR101938210B1 (ko) 2012-04-18 2019-01-15 삼성전자주식회사 낸드 플래시 메모리, 가변 저항 메모리 및 컨트롤러를 포함하는 메모리 시스템의 동작 방법
WO2013190597A1 (en) 2012-06-21 2013-12-27 Hitachi, Ltd. Flash memory device and storage control method
US8924820B2 (en) * 2012-07-27 2014-12-30 Kabushiki Kaisha Toshiba Memory controller, semiconductor memory system, and memory control method
US9021339B2 (en) 2012-11-29 2015-04-28 Western Digital Technologies, Inc. Data reliability schemes for data storage systems
JP6327714B2 (ja) 2012-11-30 2018-05-23 学校法人 中央大学 半導体記憶装置およびその制御方法
KR101977684B1 (ko) 2012-12-12 2019-05-13 삼성전자 주식회사 저항체를 이용한 비휘발성 메모리 장치를 제어하는 메모리 컨트롤러 동작방법, 상기 메모리 컨트롤러, 상기 메모리 컨트롤러를 포함하는 메모리 시스템 및 비휘발성 메모리 장치
CN103164343B (zh) * 2013-02-27 2015-12-09 山东大学 基于相变存储器的分页、ecc校验及多位预取方法及其结构
US9262267B2 (en) 2013-12-02 2016-02-16 Intel Corporation Error correction in solid state drives (SSD)
US9262268B2 (en) * 2013-12-20 2016-02-16 Seagate Technology Llc Method to distribute user data and error correction data over different page types by leveraging error rate variations
US10182447B2 (en) 2014-05-08 2019-01-15 Lg Electronics Inc. Method for processing received signal by forming RE group in MIMO receiver
US9348695B2 (en) * 2014-05-21 2016-05-24 Sandisk Technologies Inc. System and method of storing redundancy data
KR102298607B1 (ko) * 2015-02-17 2021-09-06 삼성전자주식회사 저항성 메모리 시스템 및 저항성 메모리 시스템의 동작 방법
US9830093B2 (en) * 2015-03-27 2017-11-28 Intel Corporation Method and apparatus for improving immunity to defects in a non-volatile memory
US10133625B2 (en) 2015-08-11 2018-11-20 Western Digital Technologies, Inc. Storing parity data separate from protected data

Also Published As

Publication number Publication date
JP2017079050A (ja) 2017-04-27
AU2016213809A1 (en) 2017-03-02
GB2541299A (en) 2017-02-15
CN106445724B (zh) 2020-06-16
KR20170019330A (ko) 2017-02-21
AU2016213809B2 (en) 2017-11-23
US10133625B2 (en) 2018-11-20
CN106445724A (zh) 2017-02-22
US20170046221A1 (en) 2017-02-16
GB2541299B (en) 2020-02-05
KR101861924B1 (ko) 2018-05-28
CA2938584A1 (en) 2017-02-11

Similar Documents

Publication Publication Date Title
DE102016009806A1 (de) Speichern von paritätsdaten getrennt von geschützten daten
DE102017104150B4 (de) Abnutzungsausgleich in Speichervorrichtungen
DE102017113439B4 (de) Abbildungstabellen für Speichervorrichtungen
DE102020107659A1 (de) Zonenbildung für gezonte namensräume
DE102017104125A1 (de) Zonen von Übersetzungstabellen von logischen in physische Datenadressen mit parallelisiertem Log-Listenreplay
DE112020005060T5 (de) Ratengrenze für den übergang von zonen zum öffnen
DE112020000184T5 (de) In zonen unterteilte namensräume in festkörperlaufwerken
DE102015012566A1 (de) Mehrlagenkonzept für logische speicherungsverwaltung
DE102020112512A1 (de) Datenspeichergerät und Betriebsverfahren dafür
DE102017104158A1 (de) Gültigkeitsverfolgung für garbage collection
DE112020005180T5 (de) Kondensieren von logischen zu physischen tabellenzeigern in ssds unter verwendung von gezonten namensräumen
DE102016009807A1 (de) Korrelieren von physikalischen seitenadressen für soft-decision-dekodierung
DE102009026178A1 (de) Mehrstufiger Controller mit intelligentem Speicher-Transfer-Manager zum Verschachteln mehrfacher Ein-Chip-Flash-Speichereinheiten
DE112020004958T5 (de) Dynamische zonenaktivgrenze für offenen zns
DE112019005511T5 (de) Halten von schreibbefehlen in gezonten namensräumen
DE102017114078A1 (de) Fehlerabschwächung für 3d-nand-flash-speicher
DE102021115626A1 (de) Datenaggregation in zns-laufwerk
DE102021114458A1 (de) Befehlsentleerung unter verwendung des host-speicherpuffers
DE112020005078T5 (de) Verschieben von änderungsprotokolltabellen zum abstimmen mit zonen
DE112020004966T5 (de) Zns-parität-verschiebung nach dram
DE112020004963T5 (de) Datenintegritätsschutz für zns-anforderungen
DE112020005044T5 (de) Zonenanhang-befehlsplanung basierend auf zonenzustand
DE102021115893A1 (de) EFFIZIENTE DATENSPEICHERUNGSNUTZUNG IM ZUSAMMENHANG MIT EINEM NICHT ORDNUNGSGEMÄßEN HERUNTERFAHREN
DE102021115500A1 (de) Hostverwaltete hardwarekomprimierung mit gezonten namensräumen
DE102021114459A1 (de) Frühzeitiger übergang in den niedrigleistungsmodus für datenspeicherungsvorrichtungen

Legal Events

Date Code Title Description
R082 Change of representative

Representative=s name: MEWBURN ELLIS LLP, DE

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