DE202008018572U1 - Speichersystem - Google Patents

Speichersystem Download PDF

Info

Publication number
DE202008018572U1
DE202008018572U1 DE202008018572.6U DE202008018572U DE202008018572U1 DE 202008018572 U1 DE202008018572 U1 DE 202008018572U1 DE 202008018572 U DE202008018572 U DE 202008018572U DE 202008018572 U1 DE202008018572 U1 DE 202008018572U1
Authority
DE
Germany
Prior art keywords
data
memory
modules
memory modules
module
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.)
Expired - Lifetime
Application number
DE202008018572.6U
Other languages
English (en)
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.)
Violin Memory Inc
Original Assignee
Violin Memory Inc
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 Violin Memory Inc filed Critical Violin Memory Inc
Publication of DE202008018572U1 publication Critical patent/DE202008018572U1/de
Anticipated expiration legal-status Critical
Expired - Lifetime 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/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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • 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/1072Adding 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 multilevel memories
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • 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/0608Saving storage space on storage systems
    • 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/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • 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
    • 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • 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/0653Monitoring storage devices or systems
    • 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/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • 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/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B20/18Error detection or correction; Testing, e.g. of drop-outs
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B20/18Error detection or correction; Testing, e.g. of drop-outs
    • G11B20/1833Error detection or correction; Testing, e.g. of drop-outs by adding special lists or symbols to the coded information
    • 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
    • G11C16/10Programming or data input circuits
    • 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
    • G11C16/10Programming or data input circuits
    • G11C16/14Circuits for erasing electrically, e.g. erase voltage switching circuits
    • G11C16/16Circuits for erasing electrically, e.g. erase voltage switching circuits for erasing blocks, e.g. arrays, words, groups
    • 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
    • G11C16/26Sensing or reading circuits; Data output circuits
    • 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
    • G11C29/18Address generation devices; Devices for accessing memories, e.g. details of addressing circuits
    • G11C29/26Accessing multiple arrays
    • G11C29/28Dependent multiple arrays, e.g. multi-bit arrays
    • 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/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B2220/00Record carriers by type
    • G11B2220/60Solid state media

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

Speichersystem, aufweisend:
eine Mehrzahl von Speichermodulen, wobei jedes Speichermodul zum Schreiben und Lesen von Daten geeignet ist, wobei jedes Speichermodul derart konfiguriert ist, dass Daten, die einen Datenblock und Fehlerkorrekturcodedaten für den Datenblock aufweisen, in einer Gruppe von Speichermodulen aus der Mehrzahl von Speichermodulen gespeichert werden; und
eine Speichersteuerung zum Lesen von Daten aus der Mehrzahl von Speichermodulen und zum Schreiben von Daten auf die Mehrzahl von Speichermodulen,
dadurch gekennzeichnet, dass die Speichersteuerung konfiguriert ist zum:
Anfordern des gespeicherten Datenblocks und der Fehlerkorrekturcodedaten für die gespeicherten Daten von der Gruppe von Speichermodulen aus der Mehrzahl von Speichermodulen; und
Ausgeben des Datenblocks unter Verwendung von entweder:
(a) der Fehlerkorrekturcodedaten und eines hinreichenden Teils des gespeicherten Datenblocks, um den verbleibenden Teil des gespeicherten Datenblocks unter Verwendung der Fehlerkorrekturcodedaten zu berechnen; oder
(b) der gespeicherten Daten des Datenblocks,
je nachdem, ob die Speichersteuerung (a) oder (b) zuerst erhält.

Description

  • Diese Anmeldung beansprucht Begünstigung durch die provisorische U.S.-Anmeldung mit der Anmeldungsnummer 60/920,737, die am 29. März 2007 eingereicht wurde und die durch Bezugnahme in diese Beschreibung aufgenommen wird.
  • TECHNISCHER BEREICH
  • Die vorliegende Anmeldung betrifft ein Computerspeichersystem.
  • HINTERGRUND
  • Computerspeichersysteme können entweder vom nicht-flüchtigen oder flüchtigen Typ sein. Beispiele nicht-flüchtiger Speichertypen sind Magnetkerne, Plattenlaufwerke, Bandlaufwerke und Halbleiter-Flash-Speicher. Flüchtige Speichertypen können Halbleiterspeicher wie beispielsweise dynamische RAM-Speicher (DRAM) oder dergleichen sein. Flüchtige Speichertypen haben in der Regel sowohl für das Lesen als auch für das Schreiben von Daten schnelle Zugriffszeiten und kommen als Haupt- oder Cachespeicher in Rechnern zum Einsatz. Die Daten werden in solchen Speichern mit Mitteln gehalten, die eine Energieversorgung erfordern, und die darin gespeicherte Information kann verlorengehen, wenn die Energieversorgung unterbrochen wird. Systeme, die flüchtige Speicher verwenden, verfügen üblicherweise über eine zusätzliche Energieversorgung, wobei es sich um eine kapazitatives Speichervorrichtung, die zur Überbrückung kurzzeitiger Unterbrechungen der Energieversorgung geeignet ist, handeln kann, oder um eine Notstromversorgung, bei der Batterien, Generatoren oder dergleichen zum Einsatz kommen, um Daten längerfristig zu halten.
  • Nicht-flüchtige Speichervorrichtungen wie beispielsweise Platten-Band- oder Flash-Speicher halten die gespeicherten Daten selbst dann, wenn die Energiequelle von dem Gerät entfernt wird, und werden häufig zur Sicherung flüchtiger Datenspeichervorrichtungen verwendet und auch bei einer längerfristigen Datenspeicherung, wenn die Kosten oder die Zuverlässigkeit einer Bereitstellung einer kontinuierlichen Energiezufuhr nicht praktikabel sind. Hinzu kommt, dass angesichts dessen, dass größere Datenmengen in den nicht-flüchtigen Datenspeichergeräten gespeichert werden, die entwickelten Technologien sich an der Kostenreduzierung per gespeichertem Bit und weniger an der Verminderung der Zugriffsgeschwindigkeit orientiert haben. Daher verwenden viele Rechnersysteme eine Vielzahl von Speicherarten, um die unterschiedlichen Funktionen zu implementieren, wobei sofort benötigte Daten unter Umständen auf flüchtige Weise, unterstützt durch nicht-flüchtiges Sichern, gespeichert werden, während Daten, auf die weniger häufig zugegriffen wird, wie auch große Datengruppierungen in einem nicht-flüchtigen Speicher abgelegt werden.
  • Rechnerdatenbanksysteme, die als Rechenzentren bezeichnet werden können, oder verteilte Rechnersysteme wie beispielsweise das Internet und die damit assoziierten Speichergeräte sind in der Lage, riesige Datenmengen zu speichern. Heutzutage können solche Datenmengen 1000 Terabyte (TB) übersteigen; es wird davon ausgegangen, dass diese Zahl weiter ansteigen wird. Viele dieser Datensätze sind erheblich umfangreicher als die Kapazität eines flüchtigen Speichers für einen Sofortzugriff, und die Reaktionszeit der Server in einem Rechenzentrum beim Bedienen einer Anfrage von einem Client-Computer kann zu einem ernsthaften Engpass hinsichtlich der Systemleistung werden. Diese Beschränkung ist großenteils auf die Latenz nicht-flüchtiger Speichermedien beim Datenzugriff zurückzuführen. Bei Bandsystemen muss das lineare Band gespult werden werden, so dass der auszulesende oder zu schreibende Datenbereich am Lese- oder Schreibkopf positioniert ist. Ähnlich muss der Kopf bei einem Plattenlaufwerk derart positioniert sein, dass er über der Datenspur ist, wo sich der gewünschte Datensektor befindet, und der Laufwerkcontroller wartet, bis der Abschnitt unter den positionierten Kopf gedreht ist. Jede dieser Operationen ist erheblich langsamer als das Lesen oder Beschreiben flüchtiger Speichervorrichtungen. Einschränkungen dieser Art sind besonders schwerwiegend, wenn einzelne Datenspeicherplätze an einer zufälligen Speicherstelle innerhalb der Datenbank zu lesen, zu schreiben oder zu modifizieren sind.
  • Die Zeit, die zwischen einer Anfrage nach gespeicherten Daten im Speicher und dem Aufrufen solcher Daten aus dem Speicher liegt, kann man als Latenz bezeichnen. Flash-Speicher, die zu den derzeit verwendeten nicht-flüchtigen Speichertechnologien gehören, haben eine niedrigere Latenz als mechanische Geräte, wie beispielsweise Plattenlaufwerke, aber eine signifikant höhere Latenz als aktuell verwendete flüchtige Speicherarten. Der Preis von Flash-Speichern und ähnlichen Solid-State-Technologien regelt sich von je her durch das als das Mooresche Gesetz bekannte Prinzip, was den allgemeinen Gerätetrend einer Kapazitätsverdopplung bei einer Preishalbierung im Verlauf von 18 Monaten postuliert. Demnach wird der Kostenaufwand bei der Datenspeicherung in einem Flash-Speicher anstatt beispielsweise auf einem Plattenlaufwerk erwartungsgemäß bald Parität erreichen.
  • Trotz bedeutend geringerer Latenz als dies bei einem Festplattengerät der Fall ist, unterliegt der Flash-Speicher aufgrund des betriebsspezifischen Designs und Verfahrens aktuell verfügbarer Speichermodule Beschränkungen hinsichtlich der Zugriffszeiten. Der Begriff Flash-Speicher ist ein generischer Ausdruck, was bedeutet, dass es möglich ist, eine Vielzahl von Festkörpergerätetypen als Flash-Speicher aufzufassen. Ursprünglich gab es einen elektrisch löschbaren programmierbaren Nur-Lese-Speicher (EEPROM), gefolgt von weiteren Entwicklungen, die unter den Bezeichnungen NOR-Flash, NAND-Flash und dergleichen bekannt sind. Jede dieser Technologien verfügt über ein anderes Design und einen anderen Aufbau sowie unterschiedliche Attribute im Hinblick auf das Lesen und Schreiben von Daten. Das bedeutet, es können Einschränkungen vorliegen bei der Mindestgröße eines Datenblocks, der entweder gelesen oder geschrieben werden kann (beispielsweise Datenwort und -seite oder Datensektor), oder Unterschiede im Hinblick auf die Zeit, die benötigt wird, um Daten zu lesen oder zu schreiben. In vielen Fällen ist die für das Lesen oder Schreiben von Daten aufgewendete Zeit nicht deterministisch und kann in einem breiten Rahmen variieren. Der Speichercontroller oder ein anderes solches Gerät muss noch unerledigte Anfragen verfolgen, bis sie abgearbeitet sind; es ist diese Anforderung, die die Datenlatenz zu einer variablen Größe macht, die den Systembetrieb insgesamt verlangsamen und die Komplexität von Hardware und Software, die zur Speicherverwaltung eingesetzt werden, erhöhen kann. Hinzu kommt, dass davon ausgegangen wird, dass die Betriebsdauer eines Flash-Speichergeräts einem Verschleißmechanismus unterworfen ist und in Lese-, Schreib- (auch als „Programm” bezeichnet, wenn ein Bezug zu FLASH-Speichern hergestellt wird) oder Löschzyklen gemessen wird. Vorliegend wird der Begriff „Schreiben” im Sinne von „Programm” verwendet, wenn ein FLASH-Speicher verwendet wird.
  • Selbst wenn die Anzahl der Zyklen im Verlauf einer Betriebsdauer für jeden Ort oder Sektor groß sein kann, ist eine Kalkulation möglich, wonach aufgezeigt werden kann, dass sowohl in der Praxis als auch in möglichen, potenziell pathologischen Situationen die Betriebsdauer individueller Komponenten großer Speicher, die aus Flash-Geräten gebildet werden, ausreichend kurz ist, dass erhebliche Anstrengungen unter Umständen für einen Speicherausgleich sowie eine Fehlerkennung und -korrektur erforderlich sind sowie die Markierung schlechter Datenblöcke und dergleichen.
  • Das RAID-Konzept (engl.: Redundant Arrays of Independent/Inexpensive Disks = redundante Anordnungen unabhängiger/kostengünstiger Plattenspeicher) ist mindestens so alt wie eine von David Patterson, Garth Gibson und Randy H. Katz im Jahr 1988 verfasste Arbeit. Das RAID-Konzept ermöglicht es, Plattenspeichersysteme derart anzuordnen, dass durch das Hinzufügen von Redundanzen ein Schutz gegen den Verlust von Daten, die auf denselben enthalten sind, geboten wird. Bei einer ordnungsgemäß konfigurierten RAID-Architektur kommt es aufgrund des Verlusts eines einzelnen Plattenspeichers zu keiner Beeinträchtigung der Kapazität, auf gespeicherte Daten zuzugreifen oder diese zu rekonstruieren. Die mittlere Betriebsdauer bis zum Ausfall (engl.: Mean Time Between Failure, MTBF) der Plattenspeicheranordnung ohne RAID ist gleich dem MTBF eines Einzellaufwerks geteilt durch die Anzahl der Laufwerke in der Anordnung, denn der Verlust jedes Laufwerks führt zu einem Datenverlust. Daher wäre die MTBF einer Anordnung von Plattenspeicherlaufwerken für viele Anwendungsanforderungen zu gering. Jedoch können Plattenspeicheranordnungen durch das verschiedenartige redundante Speichern von Informationen fehlertolerant gemacht werden.
  • Beispielsweise sind RAID-3, RAID-4 und RAID-5 allesamt Variationen eines Motivs. Bei dem Motiv handelt es sich um paritätsgestützte RAIDs. Anstatt ein vollständiges Duplikat der Daten, wie dies bei RAID-1 der Fall ist, aufzubewahren, werden die Daten über verschiedene Plattenspeicher verteilt und ein zusätzlicher Plattenspeicher hinzugefügt. Die Daten auf dem zusätzlichen Laufwerk können jeweils basierend auf den in den anderen Plattenspeichern enthaltenen Daten (unter Verwendung von booleschen XORs) berechnet werden. Geht ein beliebiger einzelner Plattenspeicher eines Satzes von Plattenspeichern verloren, so ist es möglich, die auf jenem Plattenspeicher gespeicherten Daten mittels Berechnungen, die auf der Grundlage der auf den übrigen Plattenspeichern enthaltenen Daten durchgeführt werden, wiederherzustellen. Diese Realisierungen sind kostengünstiger als RAID-1, denn sie erfordern nicht den 100%igen plattentechnischen Aufwand, der bei RAID-1 erforderlich ist. Da es sich bei den Daten auf den Plattenspeichern um berechnete Daten handelt, kommt es jedoch zu einigen leistungsspezifischen Implikationen im Zusammenhang mit dem Schreiben und Wiederherstellen von Daten, nachdem ein Plattenspeicher verloren gegangen ist. Viele kommerzielle Realisierungen von Paritäts-RAID verwenden Cachespeicher für den entschärfenden Umgang mit den Leistungsproblematiken.
  • Bei einer RAID-4 Plattenspeicheranordnung gibt es einen Satz von Datenplattenspeichern, der üblicherweise 4 oder 5 Platten umfasst, plus einen Extraplattenspeicher zum Speichern der Paritätsinformationen für die Daten auf den anderen Speicherplatten. Da alles Einspeichern jeweils zur Aktualisierung der Paritätsspeicherplatte führt, wird diese Platte zu einem Staupunkt, aufgrund dessen alle Schreibaktivitäten für die gesamte Anordnung sich verlangsamen.
  • Ein fundamentaler Aspekt von RAID ist das „Striping” (d. h. das In-Streifen-Zerlegen), ein Verfahren zur Verkettung mehrerer Laufwerke (Speichereinheiten), um diese zu einer logischen Speichereinheit zusammenzufassen. Beim Striping ist vorgesehen, dass der Speicherplatz jedes Laufwerks in sogenannte „Streifen” (engl.: stripes) aufgeteilt wird, die so klein sein können, dass sie nur einen Sektor (beispielsweise 512 Byte) oder so groß, dass sie mehrere Megabyte enthalten. Diese Streifen werden dann verschachtelt oder überlappt (engl.: „interleaving”), so dass der zusammengelegte Plattenplatz der Streifen jedes Laufwerks in dem Streifen umfasst. Die Art der Anwendungsumgebung, I/O oder datenintensiv, ist eine entwicklungstechnische Überlegung, mittels der bestimmt wird, ob große oder kleine Streifen verwendet werden.
  • RAID-5 kann unter Verwendung derselben Hardwarekonfiguration wie bei RAID-4 realisiert werden. Im Fall von RAID-4 wird der Paritätsblock für jeden der Streifen auf demselben Plattenspeicher gespeichert, so dass man einen sogenannten Paritätsplattenspeicher erhalten kann. Im Fall von RAID-5 wird der Paritätsblock für jeden Streifen auf einem Plattenspeicher gespeichert, der Teil des Streifens ist, jedoch sind die Paritätsblöcke derart verteilt, dass sie im Wesentlichen einheitlich über mehrere Plattenspeicher, aus denen sich das Speichersystem zusammensetzt, verteilt sind. RAID-6 ist eine weitere Verbesserung der Datenprojektion, wobei es um die Berechnung einer Parität über mehrere Streifen geht, beispielsweise unter Verwendung der Spalten der Streifen als Grundlage für die Berechnung der Parität.
  • Die Leistung einer RAID 4 Anordnung für Leseaktionen (engl.: „Reads”) vorteilhaft sein (ebenso wie Level 0). Bei Schreibaktionen (engl.: „Writes”) ist es jedoch erforderlich, dass die Paritätsdaten jedes Mal aktualisiert werden. Damit werden insbesondere kleine, zufällige Writes entschleunigt, obwohl große oder sequentielle Writes recht schnell ablaufen. Da nur ein Laufwerk in einer Anordnung redundante Daten speichert, kann der Kostenaufwand je Megabyte einer RAID 4-Anorndnung recht niedrig sein. Die Verteilung der Daten über mehrere Plattenspeicher kann entweder mittels einer dedizierten Hardware oder Software verwaltet werden. Zusätzlich existieren Hybridformen von RAID-Architekturen, die teilweise auf eine Software gestützte und teilweise auf eine Hardware gestützte Lösungen sind.
  • Eine konzeptionelle Darstellung der Organisation von Daten und Paritätsdaten zur Fehlerkorrektur ist in der 1 abgebildet, wo die Daten in einem Block A als Datensätze A1, A2 and A3 über drei Plattenspeicher gestreift sind; ein Paritätsdatensatz Ap befindet sich auf der vierten Platte, und wobei der Paritätsdatensatz Ap in der Regel als exklusiv-ODER (XOR) der Datensätze A1, A2 und A3 berechnet wird. Dem Fachmann ist wohl bekannt, dass jeder der Datensätze A1, A2, A3 oder Ap sodann aus den drei anderen Datensätzen rekonstruiert werden kann. Deshalb kann ein Fehler in einem der Datensätze, der sich beispielsweise als Ausfall einer der Plattenspeicher niederschlägt, mittels Verwendung der anderen Datensätze korrigiert werden.
  • Ein Fehlerkorrekturcode (engl.: error-correcting code, ECC) ist ein Algorithmus, bei dem jedes Datensignal mit spezifischen Berechnungsregeln konform ist, so dass jedes Abweichen von dieser Berechnung in dem empfangenen oder wiederhergestellten Signal, was einen solchen Fehler darstellt, im Allgemeinen automatisch erfasst und korrigiert werden kann. Ein ECC wird bei der Speicherung von Rechnerdaten verwendet, beispielsweise bei dynamischem RAM, Flash-Speichern und dergleichen sowie in der Datenübertragung. Exemplarische ECCs sind unter anderem der Hamming-Code, BCH-Code, Reed-Solomon-Code, Reed-Muller-Code, der binäre Golay-Code, der Faltungscode und Turbo-Code. Die einfachsten Fehlerkorrekturcodes sind in der Lage, Einzelbit-Fehler zu beheben und Doppelbit-Fehler zu erfassen. Andere Codes können Multibit-Fehler erfassen und korrigieren. Durch die Bereitstellung eines Fehlerschutzes im Rechnerspeicher bietet der ECC-Speicher eine höhere Datengenauigkeit und längere Systemlaufzeiten. Jeder Datensatz A1, A2, A3, Ap der Striped-Daten kann einen entsprechend assoziierten Datensatz für einen Fehlerkorrekturcode ECC haben, der hieran angehängt und auf demselben Plattenspeicher gespeichert ist. Wenn die Daten von einer Platte ausgelesen werden, wird die Integrität der Daten von dem ECC verifiziert und in Abhängigkeit davon, welcher ECC verwendet wird, können ein oder mehrere Fehler erfasst und korrigiert werden. Allgemein ist die Erfassung und Korrektur mehrerer Fehler eine Funktion des jeweils verwendeten ECCs, wobei die Auswahl des ECCs von der Höhe der erforderlichen Datenintegrität, der Verarbeitungszeit und den anderen Kosten abhängig ist.
  • ZUSAMMENFASSUNG
  • Beschrieben wird ein Speichersystem mit mehreren Speichermodulen, wobei jedes Modul die Kapazität zum Schreiben und Lesen von Daten aufweisen kann. M Byte von Daten können in einer Gruppe von N Speichermodulen der mehreren der Speichermodule gespeichert werden. Ein Fehlerkorrekturcode für die M Byte von Daten, die in der Gruppe der N Speichermodule gespeichert werden, kann in einem anderen der Speichermodule der mehreren Module gespeichert oder über die Module verteilt werden. Wenn die gespeicherten Daten von einem der N-1 Module der Gruppe der N Speichermodule aufgerufen werden und Fehlerkorrekturdaten beinhaltet sind, ist es möglich, die M Byte der in der Gruppe von N Speichermodulen gespeicherten Daten wiederherzustellen.
  • In einem veranschaulichenden Beispiel weist ein Speichersystem mehrere Speichermodule auf, wobei jedes Modul eine Zeitsteuerungsschaltung haben kann und die Zeitsteuerungsschaltungen gleichzeitig initialisiert werden oder eine bekannte Beziehung im Hinblick auf eine Referenzzeit haben. Eine Gruppe K der Speichermodule kann dazu konfiguriert werden, Datenblöcke und einen Paritätsdatenblock der Datenblöcke zu speichern, und jedes der K Speichermodule kann einem nicht-überlappenden Zeitabstand zugewiesen werden, in dem Daten auf eines der Speichermodule des K Speichermodules geschrieben werden können oder ein Löschvorgang hieran durchgeführt werden kann.
  • In einem weiteren Beispiel zur Veranschaulichung wird ein Betriebsverfahren für ein Speichersystem beschrieben, wobei das Verfahren Folgendes vorsieht: das Bereitstellen eines Speichersystems mit mehreren Speichermodulen; das Speichern eines Streifens von Speichermodulen von M Datenblöcken und einem Paritätsblock der mehreren Speichermodule; das Rückgewinnen von mindestens M der Datenblöcke oder M-1 der Datenblöcke und Paritätsdaten von den Speichermodulen; und das Verwenden einer ersten empfangenen Gruppe der M Datenblöcke oder der M-1 Datenblöcke und der Paritätsdaten, um die M Datenblöcke darzustellen.
  • In einem weiteren Beispiel zur Veranschaulichung wird ein Computerprogrammprodukt beschrieben. Das Produkt wird gespeichert oder auf einem rechnerlesbaren Medium verteilt und enthält unter anderem Instruktionen zur Verwaltung der Daten eines Speichersystems. Das Speichersystem kann mehrere Speichermodule aufweisen, die dazu konfiguriert sind, dass Blöcke von Daten und Paritätsdaten, die aus den Blöcken der gespeicherten Daten berechnet wurden, in L unterschiedlichen Speichermodulen der mehreren Module gespeichert werden. L-1 Blöcke von Daten und der Paritätsdaten oder die gespeicherten Blöcke von Daten werden wiedergewonnen, wobei entweder die wiedergewonnenen L-1 Blöcke von Daten und die Paritätsdaten oder die gespeicherten Blöcke von Daten, je nachdem welche zuerst empfangen werden, für die Darstellung der gespeicherten Blöcke von Daten verwendet werden. Alternativ können die Paritätsdaten mit den gespeicherten Blöcken von Daten assoziiert und über L + 1 Speichermodule verteilt werden, oder die Paritätsdaten können in einem anderen Speichermodul gespeichert werden.
  • In einem weiteren Beispiel zur Veranschaulichung schließt ein Verfahren zur Berechnung der Parität in einem Speichersystem das Anordnen von mehreren Speichermodulen in einer Baumstruktur ein, wobei die Baumstruktur Knoten aufweist. Von jedem von beiden Knoten kann ein Datenblock an einen dritten Knoten übertragen werden, der sich näher an einer Wurzel der Baumstruktur befindet. Ein erster Paritätsblock wird aus den empfangenen Datenblöcken berechnet. Ein zweiter Paritätsblock wird unter Verwendung des ersten Paritätsblocks und eines Datenblocks, der am dritten Knoten gespeichert ist, berechnet, um einen dritten Paritätsblock zu bilden. Der dritte Paritätsblock jedes der zwei dritten Knoten wird an einen Knoten übertragen, der sich näher an der Wurzel befindet als ein Datenblock. Ein vierter Paritätsblock wird berechnet und gespeichert, wobei der vierte Paritätsblock aus den zwei dritten Paritätsblöcken und den Daten, die in dem Knoten gespeichert sind, der sich näher zur Wurzel befindet, berechnet wird.
  • Die folgenden numerierten Klauseln zeigen weitere veranschaulichende Beispiele:
    • 1. Speichersystem, aufweisend: eine Mehrzahl von Speichermodulen, wobei jedes Modul eine Fähigkeit zum Schreiben und Lesen von Daten aufweist, wobei M-Datenblöcke und Fehlerkorrekturcodedaten in einer Gruppe von N-Speichermodulen aus der Mehrzahl von Speichermodulen gespeichert sind, wobei N größer gleich M ist, und M und N ganze Zahlen sind; und jedes Modul der Gruppe von N-Speichermodulen ist konfiguriert derart, dass Daten auf das Modul geschrieben oder von diesem gelöscht werden, während einer Zeitperiode s, wobei Zeitperioden sich nicht vollständig überlappen.
    • 2. Speichersystem nach Klausel 1, wobei die Zeitperioden sich im Wesentlichen nicht überlappen.
    • 3. Speichersystem nach Klausel 1, wobei die Zeitperioden von zwei beliebigen Modulen sich um nicht mehr als die Hälfte der Zeitperiode überlappen.
    • 4. Speichersystem nach Klausel 1, wobei die Überlappung der Zeitperioden von der Schreib- oder Lösch-Last einer RAID-Gruppe der Mehrzahl von Modulen abhängt.
    • 5. Speichersystem nach Klausel 1, wobei die M-Datenblöcke, die in der Gruppe von N-Speichermodulen gespeichert sind, abrufbar sind, wenn Daten von beliebigen N-1 Modulen aus der Gruppe von N-Speichermodulen entgegengenommen werden.
    • 6. Speichersystem nach Klausel 1, wobei Daten der M-Datenblöcke durch Berechnen einer Exklusiv-ODER-Verknüpfung der Daten aus den N-1 Modulen abrufbar sind, wenn die von den N-1 Speichermodulen entgegengenommen Daten Fehlerkorrekturdaten beinhalten.
    • 7. Speichersystem nach Klausel 1, wobei die Fehlerkorrekturcodedaten als Exklusiv-ODER-Verknüpfung der gespeicherten M-Datenblöcke berechnet werden.
    • 8. Speichersystem nach Klausel 6, wobei die Daten durch eine Speichersteuerung entgegengenommen werden.
    • 9. Speichersystem nach Klausel 1, wobei die Zeitperioden nicht überlappend sind.
    • 10. Speichersystem nach Klausel 1, wobei die Speichermodule mindestens eines der folgenden ist: eine elektronische Schaltung ein physikalischer Adressbereich.
    • 11. Speichersystem nach Klausel 10, wobei die elektronische Schaltung mindestens FLASH-Speicher beinhaltet.
    • 12. Speichersystem nach Klausel 1, wobei das Speichermodul ein logischer Adressbereich ist.
    • 13. Speichersystem nach Klausel 7, wobei die Fehlerkorrekturcodedaten über die N-Speichermodule verteilt sind.
    • 14. Speichersystem nach Klausel 1, wobei nicht mehr als R der M Module während des gleichen Zeitintervalls beschrieben oder gelöscht werden, wobei R kleiner oder gleich M ist, und R ist gleich der Anzahl von Modulen der M Module, für welche die Daten unter Verwendung des Fehlerkorrekturcodes wieder hergestellt werden können.
    • 15. Speichersystem, umfassend: eine Mehrzahl von Speichermodulen, wobei jedes Modul eine Zeitgeberschaltung aufweist, und eine Gruppe K der Speichermodule derart konfiguriert ist, um Datenblöcke zu speichern einschließlich Paritätsdaten der Datenblöcke, wobei jedes der K-Speichermodule ein nicht überlappendes Zeitintervall zugeordnet erhalten hat, in welchem Daten auf die Speichermodule der K-Speichermodule beschrieben werden können oder in dem eine Löschoperation auf den Speichermodulen der K-Speichermodule ausgeführt werden können.
    • 16. Speichersystem nach Klausel 15, die an einer Speichersteuerung von beliebigen K-1 Speichermodulen entgegengenommenen Datenblöcken verwendet werden können, um die gespeicherten Daten darzustellen.
    • 17. Speichersystem nach Klausel 15, wobei die Datenblöcke von beliebigen K-1 Speichermodulen verwendet werden können um die gespeicherten Daten einschließlich der Paritätsdaten darzustellen.
    • 18. Speichersystem nach Klausel 15, wobei die Datenblöcke und die Paritätsdaten über die Gruppe von K-Speichermodulen verteilt sind.
    • 19. Speichersystem nach Klausel 17, wobei die Paritätsdaten über eine XOR-Verknüpfung mit den Datenblöcken zum Rekonstruieren eines fehlenden Datenblockes verknüpft werden.
    • 20. Speichersystem nach Klausel 15, wobei die Speichermodule mindestens eines von folgendem umfassen: nicht flüchtiger Speicher, flüchtiger Speicher und eine Bus-Schnittstelle.
    • 21. Speichersystem nach Klausel 15, ferner umfassend eine mit den Speichermodulen unter Verwendung eines Busses kommunizierende Speichersteuerung.
    • 22. Speichersystem nach Klausel 15, wobei das Zeitintervall mindestens das größere einer Lösch-Zeitdauer und einer Schreib-Zeitdauer ist.
    • 23. Speichersystem nach Klausel 15, wobei dann, wenn mehr als eine vorbestimmte Anzahl von Schreib- oder Lösch-Operationen für ein Speichermodul anstehen, ein anderes Zeitintervall ebenfalls zum Durchführen einer Schreib- oder Lösch-Operation herangezogen wird.
    • 24. Speichermodul nach Klausel 23, wobei das andere Zeitintervall um eine andere Anzahl von Zeitintervallen von dem Zeitintervall bei jedem Speichermodul aus der Gruppe von K-Speichermodulen erhöht wird.
    • 25. Speichermodul nach Klausel 23, wobei das andere Zeitintervall jedes Speichermoduls aus den K-Speichermodulen seitlich koinsidieren.
    • 26. Ein Verfahren zum Berechnen einer Parität in einem Speichersystem, wobei das Verfahren umfasst: Anordnen einer Mehrzahl von Speichermodulen in einem Baum, wobei der Baum Knoten aufweist; Übertragen von Daten von jedem der beiden ersten Knoten auf einen dritten Knoten, wobei der dritte Knoten näher an einer Wurzel des Baumes angeordnet ist; Berechnen der ersten Paritätsdaten unter Verwendung der Daten von den beiden ersten Knoten und von am dritten Knoten gespeicherten Daten, um die zweiten Paritätsdaten zu bilden; Übertragen der zweiten Paritätsdaten von jedem der zweiten Knoten zu einem Knoten näher an der Wurzel; Speichern dritter Paritätsdaten, wobei die dritten Paritätsdaten aus zweiten Paritätsdaten, die von jedem der zwei dritten Knoten entgegengenommen worden sind, und von auf dem näher an der Wurzel gelegenen Knoten gespeicherten Daten berechnet sind.
    • 27. Verfahren nach Klausel 26, wobei die dritte Parität an dem Wurzelknoten berechnete Paritätsdaten sind.
    • 28. Verfahren nach Klausel 26, wobei die dritten Paritätsdaten in einem Modul gespeichert werden, das ein anderes ist als die Module, von welchen die dritte Parität berechnet wurde.
    • 29. Verfahren nach Klausel 26, wobei Paritätsdaten durch Ausführen einer Exklusiv-ODER(XOR)-Berechnung berechnet werden.
    • 30. Computerprogrammprodukt, wobei das Produkt auf einem computerlesbarem Medium gespeichert oder vertrieben wird, umfassend: Instruktionen zum Leiten der Daten eines Speichersystems, wobei das Speichersystem eine Mehrzahl von Speichermodulen aufweist, die derart konfiguriert sind, so dass Datenblöcke und Fehlerkorrekturcodedaten auf L Speichermodulen aus der Mehrzahl von Modulen gespeichert sind, und darüber hinaus zum Abrufen von Daten von mindestens L-1 Speichermodulen; und Berechnen von Daten, die die gespeicherten Datenblöcke darstellen, unter Verwendung entweder der von den L-1 Speichermodulen abgerufenen Daten, welche Paritätsdaten beinhalten, oder unter Verwendung der von den L-1 Speichermodulen abgerufenen Daten, die keine Paritätsdaten beinhalten, je nach dem, welche zuerst entgegengenommen werden, wobei Schreib- oder Lösch-Operationen derart gesteuert werden, dass jedes der L Speichermodule in einem nicht überlappenden Zeitintervall beschrieben oder gelöscht wird.
    • 31. Computerprogrammprodukt nach Klausel 30, wobei die Paritätsdaten mit den Daten von den L-1 Speichermodulen von Daten verwendet werden, um einen fehlenden Datenblock der gespeicherten Datenblöcke zu berechnen.
    • 32. Computerprogrammprodukt nach Klausel 30, wobei die Paritätsdaten das Exklusiv-ODER (XOR) der Daten sind.
    • 33. Computerprogrammprodukt nach Klausel 31, wobei die fehlenden Daten durch Exklusiv-ODER der abgerufenen Daten und der Fehlerkorrekturcodedaten berechnet werden.
    • 34. Computerprogrammprodukt nach Klausel 30, wobei M Datenblöcke die gespeicherten Daten sind und wobei der Fehlerkorrekturcode ein zusätzlicher Datenblock ist, derart, dass die M+1 Datenblöcke auf L Speichermodulen gespeichert sind.
    • 35. Computerprogrammprodukt nach Klausel 34, wobei L = M + 1 gilt.
    • 36. Computerprogrammprodukt nach Klausel 30, wobei die berechnete Darstellung der gespeicherten Daten die Fehlerkorrekturcodedaten beinhaltet.
    • 37. Ein Verfahren zum Betreiben eines Speichersystems, wobei das Verfahren umfasst: Vorsehen eines Speichersystems mit einer Mehrzahl von Speichermodulen; Speichern eines Streifens von M Datenblöcken und Fehlerkorrekturcodedatenblöcken auf Speichermodulen aus der Mehrzahl von Speichermodulen; Abrufen der Datenblöcke einschließlich der Fehlerkorrekturcodedaten aus den Speichermodulen; und Verwenden einer Gruppe von entweder M Datenblöcken, die keine Fehlerkorrekturcodedaten umfassen, oder von M-1 Datenblöcken einschließlich der Fehlerkorrekturcodedaten, jenachdem, welche Gruppe zuerst entgegengenommen wird, um eine Darstellung der M Datenblöcke zu berechnen.
    • 38. Verfahren nach Klausel 37, wobei die abgerufenen Datenblöcke bei einer Speichersteuerung oder einem Computer entgegengenommen werden.
    • 39. Verfahren nach Klausel 37, wobei ein fehlender Datenblock der M-1 Datenblöcke einschließlich der Fehlerkorrekturdaten aus den M-1 Datenblöcken und den Fehlerkorrekturdaten berechnet wird.
    • 40. Verfahren nach Klausel 37, wobei das Speichermodul mindestens eines von folgendem ist: eine elektronische Schaltung oder ein physikalischer Adressbereich.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • 1 veranschaulicht ein RAID-4 Datenspeichersystem auf mehreren Plattenspeicherlaufwerken (Stand der Technik);
  • 2 veranschaulicht mehrere in einer Reihen- und Spaltenanordnung arrangierten Speichermodulen; und
  • 3 ist eine exemplarische Darstellung einer Datenstruktur für eine Anordnung A, die auf mehreren Speichermodulen gespeichert ist;
  • 4A veranschaulicht eine Anordnung von Speichermodulen, die als Baumarchitektur angeordnet sind, wobei die Speichermodule in einem logischen Datenstreifen sich in den Blättern an den Zweigenden befinden;
  • 4B veranschaulicht eine Anordnung des Speichermoduls aus 4A, wobei die Speichermodule in einem logischen Datenstreifen sich in einem Zweig befinden.
  • 5 ist eine schematische Anordnung der Daten in einem RAID-Speicher;
  • 6A zeigt die Zeitfolge der Schreibvorgänge für einen RAID-Streifen;
  • 6B zeigt die Beziehung der Schreib- und Lesevorgänge für die sequentiellen Zeitabstände der 6A;
  • 7 ist ein Blockschaltbild eines Speichermoduls;
  • 8 zeigt eine Gruppe von Speichermodulen, wobei jedes Modul mehr als einer RAID-Gruppe angehört und die RAID-Gruppen auf andere Weise modulübergreifend in Streifen aufgeteilt sind; und
  • 9 zeigt eine RAID-Anordnung, in der die Adressensequenz innerhalb einer Gruppe möglicherweise nicht zusammenhängend ist.
  • DETAILLIERTE BESCHREIBUNG
  • Die exemplarischen Ausführungsformen sind unter Bezugnahme auf die Zeichnungen besser verständlich, was aber nicht bedeuten soll, dass die Ausführungsbeispiele in irgendeiner Weise einschränkend sein sollen. Elemente mit denselben Bezugszeichen innerhalb einer oder mehrerer Zeichnungen verrichten äquivalente Funktionen. Die Elemente sind entweder numeriert oder mit Abkürzungen oder mit beidem versehen, wobei die Wahl der jeweils verwendeten Darstellungsart allein mit dem Anliegen, optimale Klarheit bereitzustellen, getroffen wurde, so dass ein Element, das an einer Stelle numeriert und an einer anderen mittels Abkürzung oder einem alphanumerischen Zeichen identifiziert wird, nicht auf dieser Grundlage differenziert werden sollte.
  • Vom Fachmann wird gewürdigt, dass die beschriebenen Verfahren und die in den Figuren dargestellte Vorrichtung mittels maschinenablauffähigen Instruktionen konfiguriert oder ausgeführt werden, wie beispielsweise Software oder als Hardware oder als Kombination von beiden. Die Instruktionen können verwendet werden, um einen zu Allgemeinzwecken zu verwendenden Rechner, einen zu Sonderzwecken zu verwendenden Prozessor, wie beispielsweise einen DSP oder einen Vektorprozessor oder dergleichen, der mit den Instruktionen zur Implementierung der beschriebenen Vorgänge programmiert ist. Alternativ können die Operationen mittels spezifischer Hardwarekomponenten, die festverdrahtete Logik- oder Firmware-Instruktionen zur Implementierung der beschriebenen Vorgänge enthalten, ausgeführt werden oder mittels einer beliebigen Kombination programmierter Rechnerkomponenten und benutzerspezifischer Hardwarekomponenten, die unter Umständen analoge Schaltungen enthalten können.
  • Die Verfahren können zumindest teilweise als ein Computerprogramprodukt bereitgestellt werden, das ein maschinenlesbares Medium mit darauf gespeicherten Instruktionen enthalten kann, die zur Programmierung eines Computers (oder der Programmierung von anderen elektronischen Geräten) dienen, um die Verfahren zu implementieren. So wie er im Zusammenhang der vorliegenden Gebrauchsmusterschrift verwendet wird, ist der Begriff „maschinenlesbares Medium” derart aufzufassen, dass er sich auf alle Medien bezieht, die in der Lage sind, eine Folge von Instruktionen oder Daten zur Ausführung einer Aufgabe durch ein Rechnergerät oder Hardwareprodukt für Spezialzweckanwendungen zu speichern oder zu verschlüsseln und die darin resultieren, dass jenes Gerät oder Hardwareprodukt für Spezialzweckanwendungen dazu veranlasst wird, beliebige der erfindungsgemäßen Methoden oder Funktionen durchzuführen. Demzufolge ist der Begriff „maschinenlesbares Medium” einschließlich, ohne jedoch hierauf beschränkt zu sein, als Festkörperspeicher, optischer und Magnetspeicher und Trägerwellensignale beinhaltend aufzufassen. Die Beschreibung der Verfahrensimplementierung mittels Computer soll nicht ausschließen, dass dasselbe Verfahren von einem Menschen durchgeführt werden kann.
  • Beispielsweise, ohne jedoch hierauf beschränkt zu sein, sind die folgenden maschinenlesbaren Medien denkbar: ein Nur-Lese-Speicher (engl.: Read-Only Memory, ROM), ein Direktzugriffspeicher mit wahlfreiem Zugriff (engl.: Random Access Memory, RAM) jeder Art (beispielsweise S-RAM, D-RAM. P-RAM), ein programmierbarer Nur-Lese-Speicher (engl.: Programmable Read-Only Memory, PROM), ein elektronisch veränderbarer (insbesondere löschbarer) programmierbarer Nur-Lese-Speicher (engl.: Erasable Programmable Read-Only Memory, EPROM), ein magnetischer Direktzugriffsspeicher, Plattenspeichermedien, Flash-Speicher oder elektrische, optische, akustische Datenspeichermedien oder dergleichen. Häufig werden die Daten in der Form einer Logikanordnung als Datenstruktur gespeichert. Jedoch kann dieselbe Logikanordnung mit einer physischen Speicheranordnung desselben Aufbaus assoziiert sein. Obwohl die Betriebsweise vieler der vorliegenden Beispiele beschrieben wird, als gebe es eine direkte Entsprechung zwischen der logischen Datenstruktur und der physischen Vorrichtung, ist dies unter Umständen nicht die Anordnung, die in der Praxis zur Anwendung kommt, wenn die Zuweisung der Daten zu Speicherplätzen von der Architektur des Speichersystems, der Möglichkeit schadhafter Speicherplätze und dergleichen bestimmt sein kann. Eine solche Zuweisung der Daten an physische Plätze kann mittels eines Dateiverwaltungssystems vorgenommen werden, wie beispielsweise dem PCMCIA Flash Translation Layer FTL, oder von Dateisystemen wie beispielsweisen dem Linux Journaling Flash File System Version 2 (JFFS2), dem Aleph One Yet Another Flash File System (YAFFS) oder Storage-Aware-Dateisystemen, wie beispielsweise ZFS (Sun Microsystems) usw., welche dem Durchschnittsfachmann bekannt sind.
  • Bei der Auslegung der vorliegend beschriebenen Beispiele kann das Bestehen dieser Beziehung zwischen den logischen und physikalischen Adressen angenommen werden. Die Wahl des einen oder anderen zum Zwecke der Erörterung geschieht dies aus Gründen der Bequemlichkeit und nicht mit dem Zweck, eine Beschränkung aufzuerlegen, es sei denn, es wird ausdrücklich anderes erwähnt. Datenstreifen eines RAID-strukturierten Speichers können auf beliebige tatsächliche Speicherplätze im Speichersystem abgebildet werden. Die Zwänge bei der zeitlichen Steuerung hinsichtlich Lösch-, Schreib- und Lesevorgängen sollten daher mit Bezug auf die Daten in einem Streifen interpretiert werden, egal wo ein solcher Streifen sich im Speichersystem befindet. Dies bedeutet, dass die Begriffe Speichermodul, Speicherplatz, Datenblock und dergleichen im Allgemeinen effektiv als gegeneinander austauschbar verwendet werden können.
  • Ferner ist es im Stand der Technik üblich, von Software in der einen oder anderen Form (beispielsweise als Programm, Verfahren, Prozess, Anwendung, Modul, Algorithmus oder Logik) in dem Sinne zu sprechen, als werde eine Aktion vorgenommen oder ein Ergebnis herbeigeführt. Solche Begriffe dienen nur der Bequemlichkeit, um zum Ausdruck zu bringen, dass die Ausführung der Software durch einen Computer oder durch ein äquivalentes Gerät den Prozessor des Computers oder des gleichwertigen Geräts dazu veranlasst, eine Aktion durchzuführen oder ein Resultat zu erzeugen; ein Stand der Dinge, der dem Fachmann wohlbekannt ist.
  • Die Beschreibung eines besonderen Beispiels weist beispielsweise ein bestimmtes Merkmal, eine bestimmte Struktur oder ein besonderes Kennzeichen auf, jedoch braucht nicht jedes Beispiel notwendigerweise das besondere Merkmal, die besondere Struktur oder das besondere Kennzeichen aufzuweisen. Dies bedeutet nicht, dass vorgeschlagen oder nahegelegt werden soll, dass die Merkmale, Strukturen oder Kennzeichen von zwei oder mehr Beispielen nicht mit einander kombiniert werden sollten oder könnten, es sei denn, eine solche Kombination wird ausdrücklich ausgeschlossen. Wird ein besonderes Merkmal, eine besondere Struktur oder ein besonderes Kennzeichen im Zusammenhang mit einem Beispiel beschrieben, kann der Fachmann ein solches Merkmal, eine solche Struktur oder ein solches Kennzeichen im Zusammenhang gemeinsam mit anderen Beispielen zum Tragen bringen, unbeschadet dessen, ob dies explizit beschrieben ist oder nicht.
  • Eine Speicheranordnung kann auch aus anderen Speicherelementen als Plattenspeicherlaufwerken bestehen. Beispielsweise kann die Speicheranordnung aus mehreren Flash-Speichermodulen oder anderen Halbleiterspeichergeräten gebildet werden.
  • In einem ersten Beispiel wird eine RAID-4 Architektur verwendet, ohne dass hierdurch nahegelegt werden soll, dass die Verwendung anderer RAID-Architekturen oder dergleichen ausgeschlossen ist. Die Wahl einer RAID-Architektur wird aus ingenieurmäßigen und wirtschaftlichen Erwägungen getroffen, wie beispielsweise Kostenaufwand, Zuverlässigkeit, Latenz für das Lesen und Schreiben, Energieverbrauch, die Geschwindigkeit bei der Datenwiederherstellung und dergleichen. Ein Fachmann versteht, dass das in diesem Beispiel aufgezeigte System und Verfahren anpassungsfähig sind, um die Leistung des RAID-Systems entweder im Hinblick auf das Lesen von Daten, das Schreiben von Daten oder von beidem zu optimieren.
  • Flash-Speicher haben eine begrenzte Lebensdauer. Ausfälle bei Flash-Speichern können im weitesten Sinne in konventionelles Betriebsversagen, das durch einen Konstruktionsfehler bedingt ist, der latent vorliegt oder sich über die Zeit hinweg ausbildet und als typisches Problem bei elektronischen Komponenten gilt, und auf einen Verschleißmechanismus unterteilt werden. In der Regel ist der Verschleißmechanismus von der Anzahl der Zugriffe auf das Flash-Speichermodul abhängig, typischerweise für einen Löschvorgang, obwohl je nach der spezifischen Technologie auch das Lesen und Schreiben die Stelle des Verschleißmechanismus einnehmen könnten. Obwohl es sich um einen elektronischen Fehlermechanismus handelt, kann jener eher als typisch für einen mechanischen Fehlermechanismus aufgefasst werden, derart, wie bekannte Ausfallmechanismen etwa aufgrund der gefahrenen Kilometerzahl bei einem Automobil. Beide Mechanismen sind unter Umständen beim Systemdesign zu berücksichtigen, und die übermäßige Belegung eines bestimmten Speicherplatzes im Rahmen der Hardware- oder Softwareverwaltung des Betriebs des Systems ist zu vermeiden.
  • Wenn ein Flash-Speicher verwendet wird, kann der Fehlermechanismus beim Verschleiß ein einzelner Bitfehler innerhalb einer Anordnung von Daten sein. Ein solcher Einzelbitfehler kann normalerweise mittels eines Fehlerkorrekturcodes (engl.: error correcting mode, ECC), der mit dem Datensatz in einem bestimmten Speichermodul assoziiert ist, erfasst und korrigiert werden. Die korrigierten Daten werden dann an den Speichercontroller (die Speichersteuerung) übertragen und mit den von den anderen Streifen ausgelesenen Daten kombiniert, um den angeforderten Datensatz A zu bilden. Da die von den gespeicherten Datensätzen A1, A2, A3 aufgerufenen Daten fehlerfrei sind oder die Fehler mittels ECC korrigiert wurden, sind die Daten aus dem Datensatz Ap redundant. Erst wenn einer der Datensätze A1, A2, A3 einen zwar erfassten, jedoch nicht korrigierbaren Fehler aufweist, beispielsweise wegen eines Speichermodulausfalls, wird der Datensatz Ap gebraucht, um die Daten des Datensatzes A zu korrigieren. Ein solcher Mehr-bit-Fehler würde beispielsweise bei einem Versagen des Speichermoduls an sich auftreten, wonach die Daten unter Zuhilfenahme der verbleibenden drei Datensätze rekonstruiert (den jeweils anderen drei Datensätzen der Sätze A1, A2, A3, Ap) werden müssten. Das Auftreten einer solchen Fehlerart kann als die elektronische mittlere Zeit zwischen [zwei] Ausfällen (engl.: mean time between [two] failures MTBF) eines einzelnen Speichermoduls aufgefasst werden. Im Allgemeinen werden nur die in den Streifen A1, A2 und A3 enthaltenen Daten verwendet und der Paritätsstreifen Ap nur für die Datenrekonstruktion aufgerufen und verwendet, wenn ein Fehler auftritt.
  • Wenn ein Einzelbit-Fehler in den im Speichermodul gespeicherten Daten gemeldet wurde, kann davon ausgegangen werden, dass ein Speichermodul nicht mehr zuverlässig funktionsfähig ist, und der Speichercontroller „markiert” oder zeichnet den Platz in dem Speichermodul als unbrauchbar auf, bis das Speichermodul ausgewechselt wird. Alternativ kann zugelassen werden, dass eine festgelegte Anzahl von Einzelbit-Fehlern sich ansammeln darf, bevor eine Reparaturaktion durchgeführt wird.
  • Die Charakteristiken mancher Flash-Speichertechnologien machen das Schreiben und Lesen kleiner Datenblöcke unter Umständen etwas unpraktisch, und es kann zu einer Situation kommen, in der die Größe des zu schreibenden Blocks die Mindestbockgröße unterschreiten kann, die das Speichersystem in der Lage ist, schreiben zu können. Beispielsweise kann ein Softwaresystem Dateien in Mindestblockgrößen von jeweils 512 Byte segmentieren, jedoch beträgt die praktische Mindestlöschgröße für das System 128 KByte. Die vier 512-Byte-Blöcke (mit Bezug auf das Betriebssystem, aber „Sektoren” für FLASH) können zusammengenommen als eine Seite von 2 KByte bildend betrachtet werden. Bei einer generischen Begriffsverwendung kann sich der Begriff „Block” auf eine beliebige Datenart einschließlich Paritätsdaten beziehen und soll keine Konnotationen hinsichtlich einer spezifischen Byte-Größe oder irgendeiner anderen Maßeinheit beinhalten; der Begriff wird zur Bezugnahme auf Gruppen von Daten, die mit einer bestimmten Beschreibung assoziiert sind, verwendet.
  • Wird ein RAID-4 System verwendet, können die jeweils 512 Byte umfassenden Segmente der Seite über vier Speichermodule in Streifen organisiert sein, und ein fünftes Speichermodul wird für die Paritätsdaten verwendet. In diesem Beispiel wird von einer Blockgröße von 512 Byte, der Verwendung von 5 Speichermodulen zur Speicherung der Blockaspekte und einer Mindestlöschgröße von 128 Kbyte ausgegangen, wobei es sich jedoch versteht, dass es sich bei diesen Parametern lediglich um exemplarische Werte handelt und dass damit nicht beabsichtigt wird, nahezulegen, dass das System oder das Verfahren bestimmten Beschränkungen unterliegt.
  • 2 veranschaulicht ein Speichersystem, das mehrere Speichermodule umfasst, wobei die Speichermodule über einen Bus mit einem Speichercontroller verbunden sind. Jeder Bus verfügt über mehrere Speichermodule, die in einer seriellen Buskonfiguration miteinander verbunden sind, und ist in einer Art und Weise organisiert, die mit einem Plattenspeicher in der in 1 dargestellten Plattenspeicheranordnung vergleichbar ist. Neben dem repräsentativen Charakter bei der Realisierung einer physischen Anordnung von Speichermodulen kann diese Anordnung als logischer Adressraum für Speichermodule mit einer anderen physischen Organisation aufgefasst werden.
  • 3 veranschaulicht eine Organisation von Speicherplätzen gemäß der Datenanordnung A, wobei angenommen wird, dass die Datenanordnung die Mindestblockgröße hat, die auf das Speichergerät geschrieben werden kann. Jedes der Speichermodule hat eine Größe von 128 KByte und setzt sich aus mehreren Speichersektoren zusammen, die jeweils eine Größe von 512 Byte haben und als Amn bezeichnet werden, wobei m der Speicherbus ist, auf dem sich das Speichermodul befindet, und wobei n für die individuellen Speicherplätze steht, die mit den 512-Byte-Sektoren in jedem Speichermodul-Schreibblock assoziiert sind. In dem vorliegenden Beispiel gibt es 256 Sektoren von jeweils 512 Byte innerhalb von jedem 128-Kbyte-Löschblock des Speichermoduls.
  • Ein Datenblock von 512 Byte kann damit auf die Sektoren A11, A21, A31, A41 geschrieben werden, und die Paritätsanordnung Ap kann mittels der Berechnung einer exklusiv-ODER-Operation auf den Datenanordnungen A1, A2, A3 und A4 aktualisiert werden. Wenn die Daten auf die Sektoren A11, A21, A31 und A41 geschrieben werden, werden die Daten, die beispielsweise in den Sektoren A12–A1n des Speichermoduls 0 enthalten sind, ebenfalls geschrieben. Dies kann auftreten, da die Daten in der Datenanordnung A1 unter Umständen gelöscht werden müssen, bevor veränderte oder neue Daten im Sektor A11 aufgezeichnet werden. Ein Beispiel dieses Vorgangs beinhaltet unter Umständen, dass die Datenanordnung A1 in eine flüchtiges Speichervorrichtung eingelesen wird, Löschen des mit der Datenanordnung A1 in dem Speichermodul 0 assoziierten Speichers, Ändern der Daten im Sektor 11 der Datenanordnung A1 im Speichermodul 0, und anschließend Schreiben der Daten der Anordnung A1 von dem flüchtigen Speicher zum Speichermodul 0. Dies stellt ein Beispiel für die Operationen dar, die bei dem Änderungsprozess der Daten, die in einem Flash-Speicher gespeichert werden, durchgeführt werden können. Die üblichen Routinevorgänge für den Umgang mit einem Flash-Speichersystem sollen an dieser Stelle nicht weiter beschrieben werden. Zu diesen Prüfungen im Hinblick auf das Vorliegen beschädigter Blöcke, Verschleißausgleich (engl.: Wear Leveling), das Konsolidieren von Daten zur Rückgewinnung von Speicherplätzen („Müllentsorgung”), das Erfassen und Korrigieren von Fehlern und dergleichen gehören. Solche Vorgänge können als Overhead aufgefasst werden und resultieren in einer Reduzierung der Systembandbreite für das Lesen und Schreiben sowie einer Verlängerung der Latenzzeit. Die Betriebsweise des Flashspeichers in diesen Beispielen wird vorliegend auf makroskopischer Ebene beschrieben, wobei angenommen wird, dass jeder interne Vorgang, der im Wesentlichen für den Benutzer transparent ist, ohne weitere Beschreibung abläuft. Wird jedoch eine Beschränkung im Hinblick auf einen Lese- oder Schreib-Vorgang geltend gemacht, laufen routinemäßig ausgeführte Vorgänge allgemein mit den Beschränkungen, die externem Lesen oder Schreiben auferlegt sind, konform ab, können jedoch, sofern dies notwendig ist, während den zeitlichen Abständen, in denen sie zulässig sind, in ihrer Ausführung priorisiert behandelt werden. Interne Vorgänge, die möglicherweise gebraucht werden, damit ein externer Befehl zum Tragen kommt, wie beispielsweise „Lesen” oder „Schreiben”, können in den dem Lesen und Schreiben zugeordneten Zeiträumen durchgeführt werden, selbst wenn es sich bei solchen Vorgängen um eine Kombination von internen Lese- und Schreibvorgängen handelt.
  • In einem Beispiel, bei dem aktuell verfügbare FLASH-Speicher-Komponenten verwendet werden, kann der Datentransfer von 2 KByte in dem FLASH-Chip zwischen dem FLASH-Speicher und dem internen Datenregister beim Lesen etwa 25 μs dauern. Die Übertragung von 512 Byte Daten von dem internen Register zu der den FLASH kontrollierenden Vorrichtung kann bei einer Geschwindigkeit von 25 MB/s auf dem Bus, der verwendet wird, um mittels eines Controllers auf dem Speichermodul auf das FLASH-Chip zuzugreifen, etwa 20 μs dauern, was eine Gesamtzeit von etwa 45 μs ergibt. Jedoch kann die Zeit zur Durchführung eines Löschvorgangs eines 128-KB-Blocks des FLASH, um damit das Schreiben neuer Daten zu ermöglichen, etwa 1 ms bis etwa 2 ms in Anspruch nehmen, was etwa 20 bis 40 mal länger ist als die Zeit, die zur Implementierung des Lesevorgangs aufgewendet wird. Bei der Durchführung eines Programmier-(Schreib)-Vorgangs des FLASH werden bis zu 20 μs gebraucht, um 512 Byte Daten über den Bus in den inneren Register des FLASH-Chips zu transferieren und etwa 200 μs bis etwa 700 μs, um die Daten in dem FLASH-Speicher zu programmieren, was 5 bis 15 mal länger ist als die Durchführung eines Lesevorgangs. Das Löschen eines Blocks von 128 K und das Programmieren des 128 K Blocks erfordert unter Umständen etwa 13 ms bis etwa 42 ms oder etwa 200 bis 800 mal so lang wie die Implementierung eines Lesevorgangs. Während der Zeit, in der das Speichermodul in den Lösch- oder Programmier-(Schreib-)Vorgängen aktiviert ist, kann das Speichermodul unter Umständen keine anderen Funktionen verrichten, wie beispielsweise das Lesen von Daten von einem anderen der Sektoren A12 bis A1n, sofern die Daten, die gelesen werden sollen, auf demselben Gerät des Moduls gespeichert sind, das gerade gelöscht oder programmiert wird. Daher kann für eine Zeitdauer, während der Leseoperationen hinsichtlich unter Umständen nicht hierauf bezogener Daten stattfinden, welche auf demselben Speicheranordnungsblock A1 gespeichert sind, der Speicheranordnungsblock A1 blockiert sein, wenn eine Schreib-(Programmier-)Operation fortschreitet, während eine Leseanforderung empfangen wird Bei vielen Datenbanksystemen ist eine solche Verzögerung, die als Latenz bezeichnet werden kann, nicht wünschenswert und kann unter Umständen unannehmbar sein. Die Verzögerung kann mit den Verzögerungen, die man bei Plattenspeichermedien antrifft, vergleichbar werden.
  • In einer Situation, in der beabsichtigt wird, die Asymmetrie zwischen der benötigten Zeit für den Lesevorgang und der Zeit für den Schreibvorgang auf einem Datensektor dazu einzusetzen, um im Ergebnis zu einem schnellen Lesen der Daten zu gelangen, kann die Aktion des Schreibens eines Blocks von 2 K Byte, der über 4 Speichermodule und ein Paritätsmodul in Streifen aufgeteilt ist, zu einer Stauung der Lesevorgänge führen, bei der das Lesen von bis zu 10–30 K Daten während des Latenzzeitraums möglich gewesen wäre. Ähnlich könnte ein Löschvorgang Lesevorgänge für etwa 80–160 K Daten sperren.
  • Diese Situation lässt sich durch einen Betrieb des Speichercontrollers (der Speichersteuerung) und der Speichermodule abmildern, so dass die Daten in Sektoren von 512 Byte sequentiell anstatt parallel zu jedem der Speichermodule A1, A2, A3, A4 und Ap geschrieben werden. Das bedeutet, es wird zugelassen, dass der Schreibvorgang für die Anordnung A1 zu Ende geführt werden darf, bevor der Schreibvorgang für A2 gestartet wird, und auf ähnliche Weise wird zugelassen, dass der Schreibvorgang für A2 erst beendet wird, bevor mit dem Schreibevorgang für A3 begonnen wird. Dies wird fortgesetzt, bis das Schreiben für alle Speichermodule im Streifen A einschließlich Berechnung und Schreiben der Parität zum Modul Ap beendet ist. Während der Zeit, in der die Module, die die Datenanordnungen A1, A2, A3 und Ap enthalten, geschrieben werden, kann die spezifische mit dem Modul assoziierte Datenanordnung nicht gelesen werden. In diesem Beispiel darf jedoch nur eines der Module A1, A2, A3, A3 und Ap zu einer gegebenen Zeit einen Schreibvorgang durchführen.
  • Wenn ein Lesebefehl für die 512 Byte der in den Modulen A11, A21, A31, A41 und Ap gespeicherten Daten ausgegeben wird, kann jedes der Speichermodule die Leseanfrage empfangen. Häufig sind alle Speichermodule in einem Zustand, in dem eine Leseanfrage sofort verarbeitet werden kann und die Daten zum Speichercontroller zurückgeführt werden. Wird jedoch ein Schreibbefehl von einem Speichermodul verarbeitet, kann es sein, dass die Daten nicht sofort von dem Speichermodul auslesbar sind, wodurch eine der Antworten von den Datenanordnungen A1, A2, A3, A4 oder Ap erheblich verzögert sein kann. In Situationen, in denen das Modul Ap nur zu Zwecken der Datenwiederherstellung verwendet wird, wird es nur dann gelesen, wenn es zu einem Speicherausfall gekommen ist. Da die Speicherverwaltungshardware oder -software erwartet, von allen passenden Modulen A1–A4 Antworten zu haben, kann sich die Beendung der Abfrage verzögern, wenn auf einem oder mehreren der Speichermodule ein Schreibvorgang stattfindet, sei es wegen einem externen Befehl oder Routinearbeiten.
  • In Situationen, in denen jedoch 4 der Speichermodule Daten enthalten und ein Speichermodul Paritätsdaten enthält, kann es sein, dass nur 4 von den 5 Modulen Daten zurücksenden müssen, damit die gewünschten Daten gelesen werden. Das bedeutet, dass eines der Datenmodule möglicherweise ausfallen kann oder dass ein nicht zu behebender Fehler gemeldet werden kann oder dass das Modul durch einen Schreib- oder Löschvorgang gesperrt ist. Beispielsweise, wenn es sich bei dem Datenmodul, dass keine Daten zurückgibt, beispielsweise um A2 handelt, können die verbleibenden Datenmodule A1, A3, A4 und Ap sein, wobei in diesem Fall die gewünschten 512 Bytes wiederhergestellt worden sind. In Fällen, in denen die fehlenden Daten von einem der Module A1, A2, A3 und A4 kommen, kann das Modul Ap verwendet werden, wobei es sich um Paritätsdaten handelt, um die Daten des fehlenden oder verzögerten Abfragemoduls wiederherzustellen.
  • Wenn beispielsweise die im Speichermodul A1 gespeicherten Daten gelesen werden, können die Daten mittels eines Fehlerkorrekturcodes verifiziert werden, wobei deren Daten-ECC1 in demselben Speichermodul gespeichert werden können wie die Daten selbst. Sind die Daten korrekt, braucht keine Aktion eingeleitet zu werden. Wird ein Fehler detektiert, kann der Fehler korrigiert werden, wobei es sich bei der Anzahl der detektions- oder korrigierfähigen Fehler um ein Kennzeichen des bestimmten jeweils verwendeten Fehlerkorrekturcodes handelt. In der Form, wie sie zum Speichercontroller zurückgeführt werden, sind die Daten entweder korrekt oder wurden von dem ECC korrigiert oder wurden als schadhaft markiert, insofern das ECC zwar in der Lage war, einen oder mehrere Fehler zu erfassen, aber nicht zu korrigieren.
  • In der Regel tritt bei einem FLASH-Speichersystem ein Einzelfehler entweder aufgrund des Verschleißphänomens auf oder weil das Speichermodul einen weitreichenden Hardwareausfall erlitten hat, was zu mehreren Fehlern solchen Art geführt hat, die von dem Speichercontroller erfasst werden können. Das Speichermodul kann betriebsunfähig werden.
  • Im Fall, dass ein Einzelfehler gemeldet wird, wobei der Fehler jedoch von dem ECC korrigiert wurde, kann das Auftreten eines Fehlers unter Umständen dem Speichercontroller oder einer anderen Hardware oder Software, die für die Verwaltung des FLASH-Speichersystems verwendet wird, gemeldet werden, einschließlich einer On-Chip-Speicherverwaltung, und das Speichermodul oder ein spezifischer Datenchip oder Datenblock wird möglicherweise als mangelhaft markiert beziehungsweise hinsichtlich weiterer korrigierfähiger Fehler überwacht. Der Speicherverwaltungsalgorithmus kann feststellen, dass ein Speichermodul oder Chip nicht länger für die Datenspeicherung verwendet werden kann. Die aktuell in dem Speichermodul oder auf dem Chip gespeicherten Daten werden zu einem anderen Speicherplatz verschoben, der nicht als mangelhaft markiert ist.
  • Alternativ gilt, dass, sofern das gesamte Speichermodul mangelhaft ist, beispielsweise infolge eines weitreichenden Hardwareausfalls, die Daten von einer der Datenanordnungen A1, A2, A3, A4 fehlen oder als fehlerhaft befunden wurden. In einem solchen Fall können die Daten von dem Ap unter Umständen verwendet werden, um die Daten des ausgefallenen Moduls zu rekonstruieren und die rekonstruierten Daten in einem Modul zu speichern, das nicht als mangelhaft ausgewiesen ist. Dadurch wird selbst in Fällen eines umfangreichen Hardwareversagens die Datenintegrität beibehalten.
  • In Fällen, wenn bekannt ist, dass die Daten korrekt sind oder einen Fehler enthalten hatten, der von dem ECC korrigiert wurde, können die gewünschten 512 Byte Daten dem Speichercontroller zur Verfügung stehen, nachdem die Daten von dem die Anordnungen enthaltenden Modul von vier der fünf Speichermodule A1, A2, A3 und A4 und Ap zurückgewonnen wurden. Beispielsweise können Daten von den Modulen A1, A2, A3 und A4 empfangen werden. Die Daten des Modules, das Ap enthält, sind dann redundant, denn sie werden weder zur Korrektheitsbestimmung von Daten in den erwünschten 512 Byte gebraucht, noch sind sie notwendig, um einen Fehler zu korrigieren. Sofern eines der Module, das die Datenanordnungen A1, A2, A3 oder A4 aufweist, keine Daten zurückgibt oder Daten zurückgibt, von denen bekannt ist, dass sie inkorrekt sind, oder die Datenrückgabe erfolgt mit einer Verzögerung, können die Daten auf dem Modul Ap verwendet werden, um die fehlenden Daten zu rekonstruieren, wobei die Paritätsdaten in Ap und die restlichen drei Datenanordnungen verwendet werden. Wenn der Begriff „es werden keine Daten zurückgegeben” verwendet wird, handelt es sich laut der einschlägigen Kriterien darum, dass die Daten nicht innerhalb eines bestimmten für einen Lesevorgang typischen Zeitraum zurückgegeben wurden. Die verlängerten Datenrückgabezeiten sind möglicherweise auf einen störenden Schreib- oder Lesevorgang zurückzuführen oder auf einen Hardwarefehler. Die Daten von dem Modul, das „keine Daten zurückgibt”, können zulässigerweise zu einer späteren Zeit zurückgegeben werden oder der Lesevorgang für jenes Modul wird annulliert. Auf jeden Fall darf die Aufrufzeit von Daten von einem Datenstreifen nicht durch ein Modul, das Daten nicht innerhalb eines angemessen Zeitrahmens zurückgibt, verlängert werden.
  • Das bedeutet entsprechend, dass es bei einer Speichermodulanordnung, bei der eines der Speichermodule für redundante Daten verwendet wird (beispielsweise Paritätsdaten), nicht notwendig ist, dass alle Speichermodule gültige Daten zurückgeben, bevor die angeforderten Daten zur Verfügung stehen oder die Daten rekonstruiert werden können. Das heißt beispielsweise, dass die angeforderten Daten verfügbar sind, nachdem die Datenmodule A1, A2, A3 und Ap gelesen wurden. Daten von A4 werden unter Umständen nicht gebraucht.
  • Ein Grund, weshalb die Daten von A4 unter Umständen gar nicht oder nicht pünktlich zur Verfügung stehen, liegt darin, dass Daten gerade auf einen Sektor von A4 geschrieben werden oder dass ein Sektor gerade gelöscht wird, wodurch sich das Auslesen von Daten aus dem Block, der gerade geschrieben wird, verzögert. Zum Zeitpunkt des Eingangs einer Leseanfrage, die charakteristisch für die Lesezeit ist, stehen die Daten aus 4 der 5 Speichermodule zur Verfügung. Die Daten des fünften Moduls stehen unter Umständen pünktlich zur Verfügung, vorausgesetzt, dass gerade kein Schreibvorgang stattfindet; jedoch können die Daten aus dem fünften Modul außer Acht gelassen werden, es sei denn, es liegt ein nicht korrigierter Fehler vor. Bei einer wesentlichen Verzögerung der Daten sind die verzögerten Daten redundant und können bei der routinemäßigen Datenverarbeitung in dem Speichercontroller außer Acht gelassen werden.
  • Als solches können die Daten von beliebigen 4 der 5 Speichermodule eines Streifens verwendet werden, um Daten, die in dem Streifen gespeichert sind, bei vorliegender geringer Latenz zu lesen, denn das Lesen der Daten von 4 oder 5 Modulen wird nicht durch den Schreibvorgang zu 4 der 5 Module gestört.
  • Der Prozess der Speicherverwaltung innerhalb eines Speichersystems, in welchem die Zeiten für das Lesen und Schreiben asymmetrisch sind und die Zeit für Schreibvorgänge erheblich länger ist als die Lesezeit, schließt unter Umständen ein: Das Schreiben von Daten auf mehreren Speichermodulen, wobei die Speichermodule logisch in einem Muster aus Streifen organisiert sind. Jedes der Speichermodule kann einen Fehlerkorrekturcode mit Bezug auf die Daten in dem Speichermodul haben, und ein zusätzliches Speichermodul kann einen Fehlerkorrekturcode (beispielsweise XOR-Parität) mit Bezug auf die Daten in mehreren Modulen haben. Die Vorgänge des Schreibens oder Löschens können durch ein sequentielles Schreiben oder Löschen von Daten auf jedem der Speichermodule durchgeführt werden, wobei die Vorgang des Schreibens oder Löschens jedes jeweils als nächstes folgenden Moduls verzögert wird, bis der Schreibvorgang beim vorherigen Speichermodul abgeschlossen ist. Nachdem der Schreib- oder Löschvorgang auf den Speichermodulen beendet ist, werden die redundanten Daten in dem zusätzlichen Modul aktualisiert, damit die Datenintegrität bewahrt bleibt. Demzufolge ist zu einer gegebenen Zeit immer nur ein Modul im Schreibzustand. Alternativ können die redundanten Daten in einem flüchtigen Speicher aktualisiert werden, bis das Schreiben oder Löschen der Daten zu und von den die Daten enthaltenden Modulen abgeschlossen ist, woraufhin die Daten zu dem zusätzlichen Modul geschrieben werden.
  • Werden Schreib- oder Löschvorgänge an Speichermodulen in einem Streifen auf sequenzielle Art und Weise vorgenommen, ist nur eines der Speichermodule in dem Streifen gegen ein sofortiges Lesen von Daten als Reaktion auf eine Leseanfrage gesperrt; in dem vorliegenden Beispiel geben mindestens 4 der 5 Speichermodule sofort Daten an die Speichersteuerung zurück. Dies ist ausreichend, um den Lesevorgang zu beenden. Der Lesevorgang als solcher wird nicht durch einen Schreib- oder Löschvorgang verzögert, obwohl die Geschwindigkeit von Schreib- und Löschvorgängen insgesamt reduziert ist, weil sich nur ein Modul zu einer gegebenen Zeit im Schreib- oder Löschzustand befinden darf. Die im Wesentlichen nicht überlappenden Zeiten für das Schreiben der Daten zu dem Speichermodul reduzieren Konflikte zwischen den Lese- und Schreibvorgängen für einen Datenstreifen auf ein Minimum.
  • Der Speichercontroller wartet unter Umständen eine gewisse Zeit ab, bis der Lesevorgang beendet ist und verwendet dann die mindestens 4 der 5 Antworten, um den angeforderten Datensektor zu assemblieren, wobei es sich um die Daten oder die rekonstruierten Daten handeln kann. Sofern alle 5 der Datenblöcke zurückgegeben werden, darf je nach dem per Design erwünschten Vertrauenswert einer der Datenblöcke außer Acht gelassen werden oder die redundanten Daten im Dienste eines zusätzlichen Fehlererfassungsschritts verwendet werden.
  • Das Schreiben von Daten hat unter Umständen bei der Erstbestückung einer Datenanordnung Vorrang; und die Daten können parallel auf mehrere Speichermodule in einem Streifen geschrieben werden. Unter diesen Umständen kann sich das Auslesen von Daten, wie vorstehend beschrieben wurde, verzögern, was jedoch akzeptiert werden kann, wenn große Anordnungen initialisiert oder große Datenblöcke verschoben werden. Im vorliegenden Beispiel beträgt die Datenschreibgeschwindigkeit etwa 20 Prozent der maximalen Schreibgeschwindigkeit, denn jedes der 5 Speichermodule wird sequenziell geschrieben, während die Lesegeschwindigkeit nicht länger ist als ungefähr die für ein Einzelmodul erwartete Lesegeschwindigkeit, denn 4 der 5 Speichermodule, die durch das Schreiben gesperrt werden, müssen antworten, damit das Lesen erfolgreich ist. Diese Sperrung kann im Zuge des Anstiegs der Schreiblast verwaltet werden.
  • In einem weiteren Beispiel kann die Speicheranordnung anders aufgebaut sein als eine aus Reihen und Spalten bestehende Matrix, wie in dem vorherigen Beispiel. Die Reihen- und Spaltenbezeichnung der vorstehend beschriebenen Daten kann als eine logische Adresse, die auf eine physische Adresse abgebildet ist, aufgefasst werden. In der Speicherarchitektur, die in 4 zu sehen ist, sind die Speichermodule in einer Baumstruktur angeordnet, entsprechend der Lehre des aktuellen Erfinders in der am 17. April 2006 eingereichten US-Patentanmeldung 11/405,083 mit dem Titel „Interconnection System” und die durch Bezugnahme in diese Anmeldung einbezogen ist. Bei der Anordnung im vorliegenden Beispiel sind baumartige Strukturen miteinander verbunden und verfügen über externe Verbindungen zu einem/r oder mehreren Speichercontrollern bzw. Speichersteuerungen. Ein Attribut des Baumstruktursystems ist in 4A dargestellt, wonach mittels mindestens einem der Speichercontroller auf jedes der Speichermodule (die in den viereckigen Kästen abgebildet sind) zugegriffen werden kann, selbst wenn eines der Speichermodule ein Komplettversagen erlitten hat, eine der physischen Verknüpfungen unterbrochen wurde oder wenn einer der Speichercontroller ausgefallen ist. Die einzelnen Speichermodule M als solche können den Datenanordnungen A zugewiesen werden, ohne dass auf die physische Position des Speichermodules innerhalb des Systems Rücksicht genommen würde. (In diesem Beispiel werden die Speichermodulbezeichnungen M aus Gründen der Einfachheit mit den jeweils assoziierten Datenanordnungsbezeichnungen A ersetzt). Die Baumarchitektur kann entsprechend angepasst werden, so dass sie eine große Anzahl von Speichermodulen enthält, wobei jedes Modul im Hinblick auf die Entfernung, die von den Signalen unter Umständen zurückzulegen ist, im Vergleich zu linearen Architekturen, die eine ähnliche Anzahl von Speichermodulen und Speichercontrollern aufweisen, relativ nahe an der Wurzel liegt.
  • Zur Illustrierung werden die Datenanordnungen A in einem Zuweisungsbeispiel mit den physischen Modulen des Speichersystems der 4A gezeigt, wobei es sich versteht, dass es sich hierbei um eine Optionen aus einer Vielzahl möglicher Zuweisungen handelt. Die Zuweisung von Datenanordnungen zu Speichermodulen ist unter Umständen veränderlich, um den Ausfall von einem oder mehreren Speichermodulen zu berücksichtigen, ohne dass hierdurch signifikante Auswirkungen bei der Latenzzeit oder anderen Leistungsmaßstäben zu Buche schlagen. Ein Attribut eines baumartigen Speichersystems mit einer redundanten Verbundarchitektur liegt darin, dass die individuellen Speichermodule ausgetauscht werden können, während sich das Speichersystem im Betrieb befindet. Dieser Vorgang wird als „Hot Swapping” bezeichnet.
  • 4B zeigt eine weitere Veranschaulichung einer möglichen Zuweisung der Datenanordnungen A1, A2, A3, A4 und Ap zu verschiedenen physischen Speichermodulen innerhalb der Speicherarchitektur der 4A. Die Module sind hier dazu ausgewählt, dass sie nahe aneinander liegen und dieselben oder teilweise dieselben Datenpfade zwischen den Speichermodulen und einem der Speichercontroller verwenden. Sollte entweder der Speichercontroller oder eines der Speichermodule ausfallen, würden die alternativen Pfade (von denen manche mittels der durchbrochenen Linien dargestellt sind) verwendet, um die Speichermodule mit dem ursprünglichen Controller oder einem alternativen Controller zu verbinden. Die Assoziierung einer logischen Darstellung der Datenanordnung A als solche mit dem physischen Speichermodul ist flexibel. Das Umwidmen eines beliebigen Teils der Datenanordnung A mit Bezug auf den Belegungsplatz im Speichersystem ist eine Änderung am logisch-auf-physisch-Abbilden (Mapping) und am Routing von Daten und wird üblicherweise nur durch die Verfügbarkeit eines physischen Speichermoduls und nicht durch den Platz des Speichermoduls innerhalb des Speichersystems beschränkt.
  • Versagt ein Speichermodul und muss es ausgewechselt werden, so besteht die Möglichkeit eines zweiten Ausfalls während desselben Zeitraums. Der Fehlermechanismus eines Moduls kann in einen Verschleißmechanismus und einen konventionellen elektronischen Schaltungsmechanismus unterteilt werden. Letzterer ist von der Gesamtbetriebszeit und Ersterer ist von der Belegung des Speichermoduls abhängig. Ein abnutzungs- bzw. verschleißspezifischer Ausfall geschieht allmählich mit einem korrigierbaren Einzelbit-Versagen als anfängliche Ausfallerscheinung. In einem solchen Fall lässt sich die Wahrscheinlichkeit, mit der ein zweites Modul ausfällt, während das erste Modul ausgetauscht wird, in der Größenordnung des Umkehrwertes von MTBF des Speichersystems geteilt durch die für die Auswechslung des ausgefallenen Speichers erforderliche Stundenzahl abschätzen. Ähnlich gilt, sofern die Ausfallursache elektrisch bedingt ist, dass ein verschleißbedingtes Versagen wahrscheinlich nicht in der Lage ist, einen Ausfall innerhalb der kurzen Zeit, die erforderlich ist, um ein betriebsunfähiges Speichermodul zu ersetzen, zu verursachen, was bedeutet, dass die Wahrscheinlichkeit eines zweiten Ausfalls ähnlich gering ist. Da es sich bei dem System um RAID-4 handelt, findet ein Datenverlust statt, wenn zwei der Speichermodule des Speichermoduls 5, das die Datenanordnung enthält, verloren gehen.
  • Der Fehlermechanismus der FLASH-Speicher ist derart beschaffen, dass ein Verschleißphänomen eintritt, das zu einem Fehlerzustand führt. Der Verschleißmechanismus kann zwischen den verschiedenen Typen von FLASH-Speichern und den von individuellen Herstellern eingesetzten Produktionstechnologien variieren. Da Verschleiß jedoch zu Geräteversagen, Stillstandzeiten des Geräts und möglichen Verlusten bei der Datenintegrität führt, wurde eine Vielfalt von Strategien für den Umgang mit Verschleiß und Abnutzung bei Flash-Speichern entwickelt. Häufig werden die Anzahl der Schreib- oder Löschzyklen jedes Datenblocks aufgezeichnet und parallel dazu, nach Maßgabe der Zunahme der Anzahl der Schreibzyklen, können Daten zur Verlängerung der Betriebsdauer eines Speichermoduls von einem hohen Belegungsbereich zu einem Bereich mit einer geringeren Belegung verschoben werden. Der charakteristische Ausfallmodus eines FLASH-Speichermoduls bedingt durch Verschleiß oder Abnutzung manifestiert sich darin, dass ein Einzelbit fehlerhaft ist. Jenes Bit tendiert dazu, in wiederholten Lesevorgängen als fehlerhaft aufzutreten, bis ein zweites Bit auch einen Fehler anzeigt. Da die Fehlerkorrekturcodes (engl.: error correcting codes, ECC), die verwendet werden können, in der Lage sind, einen Einzelfehler zu erfassen und zu korrigieren, aber nicht in der Lage sind, einen Doppelfehler zu korrigieren, lässt sich das Speichermodul weiter verwenden, bis ein zweiter Bitfehler auftritt. Bei der Auffindung eines Zwei-Bit-Fehlers werden die redundanten Paritätsdaten gebraucht, um die gewünschten Daten zu rekonstruieren. Demnach ist es möglich, alternative Richtlinien bei der Systemverwaltung einzusetzen.
  • In einer ersten Richtlinie wird das Speichermodul als unbrauchbar markiert, wenn ein einzelner Bitfehler gefunden wird. Da der Einzelbit-Fehler von dem EEC, der mit dem Speichermodul assoziiert ist, korrigiert wird, müssen die mit dem Streifen assoziierten redundanten Daten (beispielsweise die Paritätsdaten) nicht verwendet werden, denn nur 4 der 5 Module des vorherigen Beispiels würden ausreichen, um die gewünschten Daten darzustellen, und der Lesevorgang wird wegen des Wartens auf die Beendung eines Schreibvorgangs nicht verzögert. Alternativ kann das Speichermodul weiter verwendet werden, bis ein zweiter Bitfehler in der Datenanordnung eines Speichermoduls erfasst wird. Unter diesen Umständen können die redundanten Daten verwendet werden, um Daten zu rekonstruieren, wenn ein Datenfehler in einem anderen Speichermodul als derjenigen, das die redundanten Daten enthält, aufgetreten ist.
  • Wenn eine Bitposition in einem Speichermodul abgenutzt ist (engl.: wear out), verändert sich nicht der Bitstatus in der ausgefallenen Bitposition. Das bedeutet, wenn das Bit erwartungsgemäß logisch 1 war und durch das Versagen logisch gesehen 0 wurde, behält das Bit den Ausfallstatus von logisch Null. Der Ausfall einer Bitposition, die ein logisches 0-Datenbit enthält, würde nicht sofort erfasst werden, denn das Bit, so wie es aufgrund seines Ausfallplatzes angezeigt wird, ist identisch mit seinem erwartungsgemäßen Wert, nämlich logisch Null. Werden die Daten, die an der Bitposition gespeichert sind, jedoch geändert, und die neuen Daten wären logisch 1, so zeigt die Bitposition hingegen an, dass die Daten logisch 0 sind, wodurch der Fehler endlich erfasst und korrigiert wird. In einer solchen Situation kann das mit dem Speichermodul assoziierte ECC die Daten, die von dem Speichermodul ausgelesen werden, unter Umständen korrigieren; da es sich bei der Bitposition jedoch um eine ausgefallene Position handelt, kann der Istwert der Daten an jenem Platz nicht geändert werden. Jedoch kann der korrekte Wert des Bit an dem ausgefallenen Bitplatz mittels einer Rekonstruktion der Daten unter Verwendung der Paritätsinformationen in einem anderen Speichermodul bestimmt werden. Dort, wo dies stattfindet, kann der Ist-Platz des fehlgeschlagenen Bitplatzes bestimmt werden und eine Korrektur für jenen Platz kann separat gespeichert und angewendet werden, wenn der ECC zwei Fehler erfasst hat, so dass die Betriebsdauer des Flash-Speichermoduls noch einmal verlängert wird. Die Informationen zu dem Platz der ausgefallenen Speicherplätze können durch Erweiterung der Größe des ECCs in dem ECC-Bereich gespeichert werden, und eine kleine Anzahl ausgefallener Bits kann vor der Zuweisung des ECCs korrigiert werden.
  • Im Vergleich zu einem Plattenspeichersystem kann ein Solid-State-Speichersystem mit erheblich geringeren Störungen zwischen den Lese-, Schreib- und Löschvorgängen oder zwischen mehreren Vorgängen derselben Art auf Datenanordnungen zugreifen, die in mehreren Speichermodulen gespeichert sind.
  • In einem weiteren, in 5 dargestellten Beispiel wird die Verwaltung einer zweidimensionalen Anordnung dargestellt. Wie vorstehend erwähnt, gilt, dass wenn das RAID-4-System derart betrieben wird, dass es nur einem von fünf Speichermodulen A1-Ap gestattet ist, zu einer gegebenen Zeit im Schreibmodus zu sein, die restlichen vier Speichermodule Daten sofort zurückgeben, so dass die Latenz für einen Lesevorgang bei einer Schreiblast von 20 Prozent oder darunter nicht beeinträchtigt ist. Diese Situation steht im Kontrast zu einem System ohne diese sequenzspezifischen Rahmenbedingungen bei den Schreibvorgängen, bei denen die Störung zwischen Lese- und Schreibvorgängen bereits bei einer sehr niedrigen Schreiblast beginnt.
  • Es kann jedoch zu Situationen kommen, in denen eine größere Schreiblast als 20 Prozent der Zeitschiene erwünscht ist, jedoch die Leselatenz wunschgemäß dennoch situationskonform so gering wie möglich sein soll. Dies kann erreicht werden, wenn der Schreibvorgang die Streifengruppen übergreifend verwaltet.
  • Bei der Beschreibung der Betriebsweise dieses und anderer Beispiele variieren die Lade- und Antwortzeiten des Speichermoduls und -systems zur Erklärung des Betriebsprinzips. Aus Gründen der bequemeren Handhabung werden die zeitliche Verteilung der Lese- und Schreibanfragen als zeitlich einheitlich angenommen, ebenso wie die Durchschnittsrate einer Lese- oder Schreiblast entspricht. Für einen kurzen Zeitraum wird das Laden als stationärer Wert angenommen. Die Beschränkungen der Busbandweite und dergleichen werden außer Acht gelassen; allgemein sind die Latenz- und Antwortzeiten der Speichermodule recht lang im Vergleich zu der Latenz, die mit der Busübertragungszeit assoziiert ist. Hinzu kommt, dass die Last an verschiedenen Streifen in dem Speichersystem variieren kann, da verschiedene Datenbereiche innerhalb eines Speichersystems unterschiedlichen Lese- und Schreiblasten unterliegen beispielsweise wegen solchen Faktoren wie der Art der gespeicherten Daten, dem Anwendungsprogramms, das auf die Daten zugreift und dergleichen, und die beschriebene Situation kann als repräsentativ für einen lokalen anstatt einem globalen Lastwert betrachtet werden. Die Adaptierung des Speichers als solche kann eher auf lokaler anstatt globaler Basis stattfinden. Die operative Koordination kann, wo dies gebraucht wird, durch einen globalen oder lokalen Zeitgeber-Algorithmus, Token-Weitergabe, Polling-Abfragen, Signalausgabe oder dergleichen oder mittels anderer Verfahren zur Koordination temporaler Operationen in einem Rechner- oder Speichersystem erreicht werden.
  • Die Daten in 5 sind abs in Streifen organisiert dargestellt; und ein nullter Streifen 410 umfasst die Speichermodule 310 (oder beispielsweise die Chips) A0, B0 C0, D0 and P0, die jeweils in Spalten A, B, C, D beziehungsweise P angeordnet sind. Die verbleibenden Streifen des Systems, 2–9, sind ähnlich, so dass ein Speichersystem von 50 Modulen entsteht.
  • Zu Erklärungszwecken wird angenommen, dass ein Zeitgeber-Schaltkreis auf jedem Speichermodul zu derselben Zeit wie bei anderen Speicherschaltungen initialisiert wird und die Zeit in Abständen von jeweils 1 ms markiert, was einem ausreichenden Zeitraum entspricht, um mindestens einen Schreib- oder Löschvorgang zu Ende zu bringen. Solche Schreib- oder Löschvorgänge werden spaltenweise, eine Spalte nach der anderen und in jeweils aufeinander folgenden Zeitabständen, durchgeführt. 6A zeigt die Spalten 514 der Speichermodule als in aufeinander folgenden Zeitlabständen t1, t2, ..., t10 für den Schreibvorgang aktiviert, und welche sich überdies wiederholen, Modulo 10. Wie in 6B dargestellt, wo eine zeitliche Historie des Streifens 0 zu erkennen ist, kann man sehen, dass jederzeit ein einzelnes Speichermodul für einen Schreibvorgang aktiviert ist. Damit ist das Kriterium, dass 4 der 5 Speichermodule in einem Streifen jederzeit für einen Lesevorgang verfügbar sind, erfüllt. Es ergibt sich also eine Latenz, die nur von der Leselatenz abhängig ist, ohne Beeinflussung durch die Schreiblast.
  • Wenn die Schreiblast 20 Prozent überschreitet, ist diese Strategie nicht in der Lage, mit den Datenmengen, die laut Wunsch geschrieben werden sollen, Schritt zu halten. Es müssen zusätzliche Schreibzeiträume zugeordnet werden. In dem Ausmaß, in dem diese nach Bedarf zugeordnet werden, kann es sein, das mehr als ein Speichermodul in einem Streifen sich zum Zeitpunkt einer Leseanfrage in einem Schreibzustand befindet. 4 der 5 Speichermodule als solche können nicht sofort auf die Leseanfrage reagieren; und die Leselatenz erhöht sich von einem sehr kleinen Wert (10fache von Mikrosekunden) auf mindestens etwa 1 ms entsprechend der Dauer des Schreibzustands.
  • Bei einer Erörterung der Latenz und bei einer einheitlichen Ankunftsrate von Anfragen beträgt die Latenz die Hälfte der Dauer der durch den Schreibstatus geschafften Sperrung. Zur Vereinfachung der Erläuterungen wird die Dauer des Schreibzustands verwendet.
  • Mit der Zunahme der Schreiblast erhöht sich die Anzahl der Speichermodule innerhalb eines Streifens, die zu einer gegebenen Zeit im Schreibzustand sind, und die Latenz kann auf die Summe der Verzögerungen, die mit den Schreibzuständen des Streifens assoziiert sind, ansteigen, vielleicht auf etwa 4 ms.
  • Jedoch kann der Höchstwert des Schreibstatus auf 1 ms begrenzt sein, wenn alle Speichermodule innerhalb eines Streifens 410 dazu veranlasst werden, zur gleichen Zeit in einen Schreibstatus einzutreten. Wenn die Schreiblast beispielsweise 20% überschreitet, wie in diesem Beispiel, aber geringer ist als 28%, kann jeder Streifen auch alle jeweils 10 Zeitabstände für einen Schreibvorgang aktiviert werden. Zusätzlich zu einer Spalte als solcher kann (beispielsweise P in 5) ein Streifen 410 (Streifen 0) für die Dauer des ersten Zeitabstands aktiviert sein. Bei dieser Strategie werden alle Streifen gleichzeitig beschrieben, so dass die Gesamtsperrung der Schreibzeit auf 1 ms beschränkt ist. Mit dem Anstieg der Schreiblast können unter Umständen zusätzliche Zeitabstände für das Streifen-Schreiben zugeordnet werden. Insbesondere kann durch die Strategie vorgesehen sein, Streifen-Schreib-Aktionen unter Umständen soweit wie möglich zeitlich voneinander entfernt vorzusehen. Das bedeutet, bei dem nächsten Inkrement können der erste und der fünfte Zeitabstand einer Modulo 10 Wiederholung verwendet werden.
  • Es kann erwartet werden, dass die Schreiblast für die Speichermodule in einem Streifen während einer beliebigen Epoche in etwa dieselbe sein kann, da, wenn überhaupt Seiten geschrieben werden, das Schreiben auf einem Speichermodul zu dem Beschreiben aller Speichermodule innerhalb eines Streifens führen würde. Trotzdem wird es zu Unterschieden bei der Schreiblast kommen, die auf Schreiben von weniger als einer Seite oder auf Routineaktivitäten zurückzuführen sind, die von den bestimmen Speicher-Chips abhängig sind (aufgrund von beschädigten Blöcken und dergleichen).
  • Ein Speichermodul 310 kann, wie in 7 dargestellt, beispielsweise einen nicht-flüchtigen Speicher 320, bei dem es sich um einen FLASH-Speicher handeln kann, einen Pufferspeicher 330, der beispielsweise ein DRAM sein kann, und eine Controller/Bus-Schnittstelle 340 aufweisen, wobei es sich um ein konfigurierbares Schaltelement (engl.: configurable switching element, CSE), wie in der US-Patentanmeldung mit der Seriennummer: 11/405,083 beschrieben, oder eine andere Busschnittstelle handeln kann. Das Speichermodul kann in der Lage sein, Eingangs- und Ausgangsdaten und Befehle zu Puffern, so dass ein Speichermodul eine Warteschlange anhängiger Vorgänge aufrechterhalten kann.
  • Vorgänge, die mit Lese-, -Schreib- und Löschvorgängen mit niedriger Latenz in Konflikt sind, können auf die Zeitabstände beschränkt werden, die für Schreibvorgänge designiert sind. Wenn ein Zeitsteuerungs-Slot des Speichermoduls einen Schreibvorgang zulässt, können so viele Schreib- und Lösch-Vorgänge, wie während der Zeitdauer des Slots potentiell durchführbar sind, aus der im Controller 340 gepflegten Warteschlange genommen und durchgeführt werden. Wenn hingegen keine anhängigen Schreib- oder Löschvorgänge anstehen, können anhängige Lesevorgänge aus der Warteschlange in dem Controller 340 genommen und durchgeführt werden.
  • Alternativ können Schreib- oder Löschvorgänge zurückbleiben (für eine bequemere Handhabung werden beide vorliegend als Schreibvorgänge bezeichnet). Je nach den programmierten operativen Richtlinien werden zusätzliche, zurückbleibende Vorgange als Hinweis darauf gewertet, dass die Schreiblast 20% überschritten hat und dass zusätzliche Schreibzeiten zugeteilt werden müssen. Entweder wird der Haupt-Speichercontroller benachrichtigt, so dass die Schreibvorgänge zum Streifen gedrosselt werden, oder es werden zusätzliche Zeit-Slots dem Schreibvorgang zugeordnet, bis die Warteschlange auf einen Nominalstand, der Null oder eine kleine Anzahl anhängiger Vorgänge sein kann, reduziert wurde. Werden Zeit-Slots dem Schreibprozess zugeteilt, so werden die Zeit-Slots während der Modulo 10 Wiederholung des Musters auf Abstand angeordnet. Parallel dazu, wie die Schreiblast zunimmt und mehr Schreib-Slots gebraucht werden, werden diese in zunehmend engeren Abständen zueinander angeordnet; jedoch wird zwischen aufeinander folgenden Schreibaktionen solange wie möglich ein Slot freigelassen. Auf diese Art und Weise wird die Gesamtlänge jeder Schreibsperrung einer Leseanfrage minimiert, in dem Maße wie die Schreiblast ansteigt und bei einer Schreiblast von unter etwa 50% beträgt die maximale Sperrung nur einen Schreibzeitraum. Die für Leseaktionen verfügbare Zeitschiene ist entsprechend reduziert; jedoch sind hohe Leselasten und hohe Schreiblasten zu demselben Streifen wahrscheinlich nur vorübergehender Natur und haben nur geringe Auswirkungen auf die Reaktionszeit des Gesamtsystems.
  • Die Richtlinie, die die Zuordnung zusätzlicher Schreib-Zeitblöcke, jeweils abhängig von der lokalen Warteschlange, vorsieht, ermöglicht ein Adaptieren der Operation jedes Streifens an den hieran angelegten Lese- und Schreibbedarf mittels des dynamischen Systembetriebs.
  • Gemäß einem weiteren Aspekt der Erfindung ist vorgesehen, dass – wenn die Einzelmodule innerhalb eines Streifens miteinander kommunizieren, beispielsweise mittels eines Token-Weitergabe-Konstruktes – das Token eine Berechtigung zur Durchführung eines Schreibintervalles darstellen kann. Das Token kann sequentiell zwischen den Speichermodulen A-P eines Streifens transportiert werden (beispielsweise Streifen 1). Wenn das Token von A1 gehalten wird, wird ein Schreibintervall von einem Schreibabstand, welcher im vorliegenden Beispiel 1 ms ist, zugelassen. Enthält die Warteschlange Schreibvorgänge und können solche Schreibvorgänge innerhalb jenes Intervalles beendet werden, werden sie ausgeführt. Das Token wird dann an B1 weitergegeben, wo der Prozess sich wiederholt; das Token wird kontinuierlich weitergegeben, und sobald P1 das Token hat, wird das Token an A1 weitergegeben, so dass sich der Ringvorgang, sprich: Round Robin, schließt.
  • Dort, wo es nach der Beendung des Schreibintervalles noch anhängige Vorgänge gibt, gilt dies als Hinweis darauf, dass die aktuelle Schreiblast den 20%-Wert, für den die Leselatenz für das Schreiben transparent ist, überschreitet. Wenn es keine anderen Mittel zu Beschränkung der Last gibt, kann es sein, dass die anhängigen Schreibvorgänge zeitnah ausgeführt werden müssen, um ein Überlaufen des Pufferspeichers 330 zu vermeiden. Unter diesen Umständen wird ein weiterer Schreibvorgang durchgeführt, nachdem das Token weitergereicht wurde, wodurch mindestens ein Zeitabstand zwischen Schreibabständen ermöglicht wird. Die Anzahl der Schreibintervalle, die während eines beliebigen Round Robin verwendet wird, kann somit je nach der Schreiblast variieren, jedoch kann die Anzahl der aufeinander folgenden Schreibintervalle eine Einheit betragen, bis die Schreiblast sehr hoch geworden ist.
  • Das Zuordnen von Zeiträumen, in denen Speichermodule ihre Lösch- oder Programmiervorgänge durchführen können, kann auf verschiedene Arten erfolgen: Beispielsweise durch Zuordnen von Zeiträumen mit Bezug auf eine globale Referenzzeit, so dass die Module mit der lokalen Festlegung des Zeitraumes arbeiten; durch die Übertragung von Steuermeldungen von einem globalen Controller; mittels Token-Passing von einem Modul zum anderen; durch Befehlsbusse oder Leitungen zwischen den Modulen oder dergleichen. Es kann eine Kombination von Ansätzen verwendet werden: Beispielsweise in einem System, in dem, wenn die gewünschte Programmierungsdatenrate höher ist als von einer einzelnen Spalte der RAID-Gruppe, die die Programmierung zu einer gegebenen Zeit durchführt, bedient werden kann; und wenn es mehrere RAID-Gruppen gibt, dann kann ein Modul einer oder aller RAID-Gruppen programmieren oder löschen, während gleichzeitig für eine Anzahl von RAID-Gruppen ein oder alle Module programmiert oder löscht, wie in 5 dargestellt. Bei einem solchen System kann beispielsweise die Spalte, die Löschen oder Programmieren vornimmt, mittels einer festen Zuordnung der Zeiträume festgelegt werden, während die Bestimmung des Zeitpunkts, wenn eine ganze Reihe oder RAID-Gruppe einen Lösch- oder Programmiervorgang vornimmt, durch eines der Module in der RAID-Gruppe bestimmt wird, indem ein Befehl an die nächste RAID-Gruppe gesendet wird, der anzeigt, dass die nächste RAID-Gruppe beginnen kann; eine Art von Token-Passing; und das Modul kann festlegen, dass alle Module in der eigenen RAID-Gruppe des Moduls ihre Programmier- oder Löschvorgänge beendet haben – signalisiert durch die Verwendung eines zweiten Token-Passing-Prozesses, oder durch eine 'Pull Down'-Leitung, die alle Modulen anhält, bis sie fertig sind; oder durch einen Befehlsbus, den die anderen Module verwenden, um anzuzeigen, dass sie fertig sind, oder ein ähnliches Verfahren oder eine ähnliche Konfiguration.
  • Dort, wo alle Zeiträume nicht überlappend sind, können die Latenzeffekte des Lösch- oder Programmiervorgangs vollständig versteckt sein; an Stellen, an denen die Zeiträume nur im Wesentlichen nicht überlappend sind, kann die Latenz des Lösch- oder Programmiervorgangs bis zur Zeitdauer der Überlappung beobachtbar sein. Solange die Menge der zeitlichen Überlappung geringer ist als 100%, können die Vorrichtung und das Verfahren im Vergleich mit einem vollständig überlappenden Lösch- und Programmiervorgang immer noch zu einer reduzierten Latenz der Zugriffszeit führen.
  • Wie in 5 dargestellt, betragen die nicht-Überlappungszeiten diejenigen einer RAID-Gruppe mit Bezug auf die nächste RAID-Gruppe anstatt von einem Modul in einer RAID-Gruppe zum nächsten Modul, wenn einige RAID-Gruppen einen Programmier- oder Löschvorgang über mehr als ein Modul oder über alle Module der Gruppe hinweg vornehmen. Die Verbesserung bei der Latenz ist hier nicht diejenige eines einzelnen Lesezugriffs, sondern, falls beispielsweise Lesezugriffe auf alle RAID-Gruppen hergestellt werden, bei denen mehr als ein Modul programmiert oder gelöscht wird, erfahren diese Zugriffe eine erhöhte Latenz, während Zugriffe auf jene RAID-Gruppen, die nur ein Modul programmieren oder löschen, eine solche Zunahme nicht erfahren. Im Ergebnis kann sich die durchschnittliche Latenz über alle Lesezugriffe hinweg verbessert haben.
  • Der Ansatz kann auf FLASH-Speicher in anderen Konfigurationen, die entfernbar oder fest sein können, angewendet werden. Der vorliegend beschriebene Ansatz kann innerhalb eines Moduls selbst durchgeführt werden, vorausgesetzt, dass das Modul über eine ausreichende Anzahl von FLASH-Vorrichtungen verfügt. Der Ansatz kann daher unabhängig auf mehreren Ebenen in einer Speicherarchitektur verwendet werden; so beispielsweise Solid-State-Festplatten (SSD) im Formfaktor einer standardmäßigen Festplatte, die durch ein Plattenspeicherzugriffsprotokoll, wie beispielsweise SATA, SCSI, Fibre Channel oder andere Formfaktoren oder Zugriffsprotokolle, die bekannt sind oder möglicherweise noch entwickelt werden, gekoppelt sind. Die Entsprechung zwischen RAID-Gruppen und Modulen ist derart, dass unter Umständen keine Eins-zu-Eins-Entsprechung der Module und „Spalten” in einer RAID-Gruppe vorliegt. Beispielsweise an Stellen, wo eine „Spalte” einer RAID-Gruppe sich über mehr als ein Modul erstreckt, oder dort, wo die Daten auf einem Modul aufgrund der RAID-Rekonstruktion im Begriff sein können, zu einem Auswechslungsmodul verschoben zu werden, und es ist möglich, dass mehr als ein Modul eine „Spalte” einer RAID-Gruppe für einige Zeit enthalten kann.
  • Nach einem weiteren Aspekt kann eine RAID-6-Organisation einer RAID-4/5 Organisation überlagert sein, wo eine weitere Paritätsberechnung an den Spalten der Datenanordnung vorgenommen wird. Alternativ kann die zusätzliche Paritätsberechnung an dem Speichermodul vorgenommen werden, was als physische Konfiguration aufgefasst wird. Das bedeutet, ohne hierbei die Zuordnung von Speichermodulen zu Streifen zu berücksichtigen, dass die Daten in einer Spalte einer linearen Anordnung von Modulen einer XOR-Operation (exklusiv-ODER) unterzogen werden können, um die Paritätsdaten zu berechnen. Dies kann auch im Fall eines binären Strukturbaums erfolgen, wie dies in 4A oder 4B gezeigt. Beispielsweise können die Daten von den zwei Speichermodulen in dem Baum bei Empfang auf der nächsthöher gelegenen Ebene in dem Baum einer XOR-Operation unterworfen werden, um erste Paritätsdaten zu erzeugen. Auf ähnliche Weise kann dieser Paritätsblock mit den Daten am Empfangsmodul einer XOR-Operation unterworfen werden, um einen neuen Paritätsblock zu erzeugen. Da es sich hier um eine binäre Baumstruktur handelt, können die beiden neuen Paritätsblöcke von ihren jeweiligen Knoten zum nächsthöheren physischen Knoten in der Baumstruktur übertragen werden, an welcher Stelle der Prozess des Unterwerfens unter eine XOR-Operation wieder durchgeführt werden kann, was fortgesetzt wird, bis die Baumwurzel oder ein anderer Knoten einer höheren Ebene erreicht ist. Diese Paritätsdaten können ähnlich verwendet werden wie die Spaltenparität eines RAID-6-Systems, um so zusätzliche Paritätsdaten für den Fall des Ausfallens von mehr als einem Modul bereitzustellen. Die Ausbreitung der X-ODER-Paritätsdaten ist auf diejenige Datenmenge beschränkt, die für den Datenblock an sich auf jeder Ebene der Baumstruktur gebraucht wird und kann ohne erhebliche Buslast und mit den Berechnungen, die mit den Berechnungen der X-ODER-Parität, jeweils verteilt über die Speichermodule auf eine im Wesentlichen gleichmäßige Art, assoziiert sind, durchgeführt werden.
  • An Stellen, an denen der Begriff Speichermodul verwendet wird, kann es sich bei dem Modul beispielsweise um eine Schaltungskarte mit Steckkontakt handeln, die mehrere Speicherschaltungen aufweist, oder es handelt sich bei dem Speichermodul jeweils um eine einzelne oder um eine eine Gruppe von Speicherschaltungen auf der Schaltungskarte oder um eine sogenannte Solid-State-Festplatte (SSD), wobei es SSDs in vielen Formfaktoren von Einzelkarten bis hin zu Paketen gibt, die mit der Größe und Form eines mechanischen Plattenspeichers konform sein können. Der Maßstab des logischen Adressbereichs, der mit einem Speichermodul oder Speicherplatz assoziiert sein kann, soll nicht durch die vorliegende Beschreibung beschränkt werden, was bedeutet, dass in einem Speichermodul somit sowohl größere als auch kleinere Datenspeichergeräte oder Datenstrukturen untergebracht werden können.
  • 8 zeigt exemplarisch eine Gruppe von Modulen, wobei jedes der Module mehr als einer RAID-Gruppe angehört; die RAID-Gruppen sind hier jedoch verschiedenartig über den Modulen in Streifen (Stripes) strukturiert. Beispielsweise sind die RAID-Gruppen A, B, C, D horizontal in Streifen strukturiert, wobei jeder Streifen X Adressen beinhaltet; der Streifen A hat die Adressen 0 bis X-1, B hat X bis 2X-1 usw., wohingegen die Gruppen E, F, G, H, I diagonal in Streifen strukturiert sind und jede Gruppe auch X Adressen beinhaltet. 9 ist eine Darstellung dessen, dass die Anzahl der Adressen in einer Gruppe nicht kontinuierlich oder identisch zu anderen Gruppen sein muss. Bei diesem Beispiel erfolgt ein Umbruch nach der letzten Adresse in Gruppe I, um mit der Gruppe A, die die Adressen 0 bis X-1 und 9X bis 10X-1 hat, fortgesetzt zu werden.
  • Obwohl die Layouts in 8 und 9 einheitlich und gleichmäßig sind, bedeutet dies nicht, dass es erforderlich ist, dass die RAID-Streifen regelmäßig oder einheitlich sind; als Beispiel kann das ZFS-Dateisystem dienen, wo jedes geschriebene Datenstück zu seinem eigenen RAID-Streifen gemacht wird, der auf einen beliebigen Satz von Modulen in einem Speichersystem wie dem vorliegend beschriebenen platziert werden kann.
  • Nach einem Aspekt der Erfindung werden die Daten eines RAID-Steifens in mehrere Datengruppen geteilt. Eine Parität wird als exklusive-ODER (engl.: XOR) der Mehrzahl der Gruppen von Daten berechnet. Die Datengruppen und die Parität werden auf einen RAID-Streifen geschrieben. Die Paritätsdaten können unter den Speichermodulen des RAID-Streifens verteilt werden oder auf ein Speichermodul des RAID-Streifens, der separat von den Daten ist, geschrieben werden. Wenn der RAID-Streifen gelesen wird, und der RAID-Streifen verfügt über M Speichermodule, so können die Daten von den ersten M-1 Speichermodulen zur Bestimmung der Daten, die in dem RAID-Streifen gespeichert wurden, verwendet werden. Wenn die Speichermodule eines RAID-Streifens derart verwaltet werden, dass ein Schreib- oder Löschvorgang zu einer gegebenen Zeit nur an einem der Module durchgeführt werden kann, ist es möglich, einen Lesevorgang durchzuführen, der ausreicht, um die gespeicherten Daten wiederherzustellen, ohne dass das Ende des Schreib- oder Löschvorgangs abgewartet werden müsste.
  • In den vorangegangenen Beispielen wird der Begriff des Moduls allgemein verwendet, um auf eine physische Speicherschaltung oder auf einen logischen oder physischen Adressenbereich hinzuweisen, was ein einzelner Adressenplatz sein kann oder ein Bereich physischer oder logischer Adressen, die an einem einzelnen Adressplatz sein können oder über einen Bereich physischer oder logischer Plätze verteilt sein können. Speicherschaltungen auf einem physischen Modul können gruppiert werden, so dass sie Teil von verschiedenen RAID-Streifen sind und unterschiedliche Zeiträume haben, in denen das Lesen, Schreiben und Löschen erfolgen kann. Die Verwendung des Begriffes des Moduls ist per se eine Entscheidung im Dienste eines bequemeren Umgangs und soll keineswegs die Verwendung einer spezifischen Anordnung nahelegen oder erfordern. Ähnlich würde es sich verstehen, dass suboptimale Durchsatzkonfigurationen aus anderen Gründen gewählt werden können und mit den vorliegend beschriebenen Konfigurationen gemischt werden, wenn dies wünschenswert ist.
  • Demzufolge soll die vorangegangene detaillierte Beschreibung als veranschaulichend und nicht als einschränkend aufgefasst werden, wobei es sich versteht, dass die nachstehenden Ansprüche einschließlich aller ihrer Äquivalente den Geltungsbereich dieser Erfindung definieren sollen.

Claims (8)

  1. Speichersystem, aufweisend: eine Mehrzahl von Speichermodulen, wobei jedes Speichermodul zum Schreiben und Lesen von Daten geeignet ist, wobei jedes Speichermodul derart konfiguriert ist, dass Daten, die einen Datenblock und Fehlerkorrekturcodedaten für den Datenblock aufweisen, in einer Gruppe von Speichermodulen aus der Mehrzahl von Speichermodulen gespeichert werden; und eine Speichersteuerung zum Lesen von Daten aus der Mehrzahl von Speichermodulen und zum Schreiben von Daten auf die Mehrzahl von Speichermodulen, dadurch gekennzeichnet, dass die Speichersteuerung konfiguriert ist zum: Anfordern des gespeicherten Datenblocks und der Fehlerkorrekturcodedaten für die gespeicherten Daten von der Gruppe von Speichermodulen aus der Mehrzahl von Speichermodulen; und Ausgeben des Datenblocks unter Verwendung von entweder: (a) der Fehlerkorrekturcodedaten und eines hinreichenden Teils des gespeicherten Datenblocks, um den verbleibenden Teil des gespeicherten Datenblocks unter Verwendung der Fehlerkorrekturcodedaten zu berechnen; oder (b) der gespeicherten Daten des Datenblocks, je nachdem, ob die Speichersteuerung (a) oder (b) zuerst erhält.
  2. Speichersystem nach Anspruch 1, wobei jedes Speichermodul ferner aufweist: eine Speicherschaltung; und eine Bus-Schnittstelle.
  3. Speichersystem nach Anspruch 1, wobei die Speichersteuerung ferner zur Kommunikation mit der Mehrzahl von Speichermodulen über einen Bus konfiguriert ist.
  4. Speichersystem nach Anspruch 1, wobei ein Speichermodul aus der Mehrzahl von Speichermodulen mindestens FLASH-Speicher umfasst.
  5. Speichersystem nach Anspruch 1, wobei die Fehlerkorrekturcodedaten Paritätsdaten sind.
  6. Speichersystem nach Anspruch 5, wobei der Datenblock und die Paritätsdaten für den Datenblock in der Gruppe von Speichermodulen derart gespeichert sind, dass das Fehlen von aus einem Speichermodul abgerufen Daten die Berechnung einer Ausgabe des in der Gruppe von Speichermodulen gespeicherten Datenblocks nicht verhindert.
  7. Speichersystem nach Anspruch 6, wobei die Ausgabe des Ausgabedatenblocks als exklusives ODER der Paritätsdaten für den gespeicherten Datenblock und dem unvollständigen gespeicherten Datenblock berechnet wird, wenn die Speichersteuerung zuerst den unvollständigen gespeicherten Datenblock sowie die Paritätsdaten für den gespeicherten Datenblock erhält.
  8. Speichersystem nach Anspruch 1, wobei das System derart konfiguriert ist, dass eine vollständige Überlappung eines Lösch- und/oder Schreibvorgangs bei zwei oder mehr Modulen der Gruppe von Speichermodulen aus der Mehrzahl von Speichermodulen nicht vorkommt.
DE202008018572.6U 2007-03-29 2008-03-27 Speichersystem Expired - Lifetime DE202008018572U1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US92073707P 2007-03-29 2007-03-29
US920737P 2007-03-29

Publications (1)

Publication Number Publication Date
DE202008018572U1 true DE202008018572U1 (de) 2015-11-27

Family

ID=39689485

Family Applications (2)

Application Number Title Priority Date Filing Date
DE202008018573.4U Expired - Lifetime DE202008018573U1 (de) 2007-03-29 2008-03-27 Speichersystem
DE202008018572.6U Expired - Lifetime DE202008018572U1 (de) 2007-03-29 2008-03-27 Speichersystem

Family Applications Before (1)

Application Number Title Priority Date Filing Date
DE202008018573.4U Expired - Lifetime DE202008018573U1 (de) 2007-03-29 2008-03-27 Speichersystem

Country Status (6)

Country Link
US (6) US8200887B2 (de)
EP (2) EP2132636B1 (de)
KR (2) KR101448192B1 (de)
CN (2) CN102346694B (de)
DE (2) DE202008018573U1 (de)
WO (1) WO2008121306A2 (de)

Families Citing this family (491)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8200887B2 (en) 2007-03-29 2012-06-12 Violin Memory, Inc. Memory management system and method
US9384818B2 (en) * 2005-04-21 2016-07-05 Violin Memory Memory power management
US11221917B1 (en) 2005-09-30 2022-01-11 Pure Storage, Inc. Integrity processing in a dispersed storage network
US11620185B2 (en) 2005-09-30 2023-04-04 Pure Storage, Inc. Integrity processing in a dispersed storage network
US10860424B1 (en) 2005-09-30 2020-12-08 Pure Storage, Inc. Background verification processing in a storage network
US8555109B2 (en) 2009-07-30 2013-10-08 Cleversafe, Inc. Method and apparatus for distributed storage integrity processing
US9632870B2 (en) 2007-03-29 2017-04-25 Violin Memory, Inc. Memory system with multiple striping of raid groups and method for performing the same
US11010076B2 (en) 2007-03-29 2021-05-18 Violin Systems Llc Memory system with multiple striping of raid groups and method for performing the same
US8037272B2 (en) * 2007-06-27 2011-10-11 International Business Machines Corporation Structure for memory chip for high capacity memory subsystem supporting multiple speed bus
US7996641B2 (en) * 2007-06-27 2011-08-09 International Business Machines Corporation Structure for hub for supporting high capacity memory subsystem
US20090006774A1 (en) * 2007-06-27 2009-01-01 Gerald Keith Bartley High Capacity Memory Subsystem Architecture Employing Multiple-Speed Bus
US7822936B2 (en) * 2007-06-27 2010-10-26 International Business Machines Corporation Memory chip for high capacity memory subsystem supporting replication of command data
US7809913B2 (en) * 2007-06-27 2010-10-05 International Business Machines Corporation Memory chip for high capacity memory subsystem supporting multiple speed bus
US7921271B2 (en) * 2007-06-27 2011-04-05 International Business Machines Corporation Hub for supporting high capacity memory subsystem
US8037258B2 (en) * 2007-06-27 2011-10-11 International Business Machines Corporation Structure for dual-mode memory chip for high capacity memory subsystem
US8019949B2 (en) * 2007-06-27 2011-09-13 International Business Machines Corporation High capacity memory subsystem architecture storing interleaved data for reduced bus speed
US7818512B2 (en) * 2007-06-27 2010-10-19 International Business Machines Corporation High capacity memory subsystem architecture employing hierarchical tree configuration of memory modules
US7921264B2 (en) * 2007-06-27 2011-04-05 International Business Machines Corporation Dual-mode memory chip for high capacity memory subsystem
US8037270B2 (en) * 2007-06-27 2011-10-11 International Business Machines Corporation Structure for memory chip for high capacity memory subsystem supporting replication of command data
US8041990B2 (en) * 2007-06-28 2011-10-18 International Business Machines Corporation System and method for error correction and detection in a memory system
US8041989B2 (en) * 2007-06-28 2011-10-18 International Business Machines Corporation System and method for providing a high fault tolerant memory system
JP5335779B2 (ja) * 2008-05-12 2013-11-06 パナソニック株式会社 半導体記録装置
CN102124527A (zh) 2008-05-16 2011-07-13 弗森-艾奥公司 用于检测和替代失效的数据存储器的装置、系统和方法
WO2010049928A1 (en) * 2008-10-27 2010-05-06 Kaminario Tehnologies Ltd. System and methods for raid writing and asynchronous parity computation
US8438455B2 (en) 2008-12-31 2013-05-07 Intel Corporation Error correction in a solid state disk
US8327224B2 (en) * 2009-04-16 2012-12-04 Micron Technology, Inc. Data recovery in a solid state storage system
US7945822B1 (en) * 2009-04-27 2011-05-17 Netapp, Inc. Storing data to multi-chip low-latency random read memory device using non-aligned striping
US8281227B2 (en) 2009-05-18 2012-10-02 Fusion-10, Inc. Apparatus, system, and method to increase data integrity in a redundant storage system
US8307258B2 (en) 2009-05-18 2012-11-06 Fusion-10, Inc Apparatus, system, and method for reconfiguring an array to operate with less storage elements
JP2010282369A (ja) * 2009-06-03 2010-12-16 Toshiba Corp メモリシステム
KR101324688B1 (ko) 2009-06-12 2013-11-04 바이올린 메모리 인코포레이티드 영구 가비지 컬렉션을 갖는 메모리 시스템
US8489915B2 (en) * 2009-07-30 2013-07-16 Cleversafe, Inc. Method and apparatus for storage integrity processing based on error types in a dispersed storage network
US8706980B2 (en) * 2009-07-30 2014-04-22 Cleversafe, Inc. Method and apparatus for slice partial rebuilding in a dispersed storage network
DE112010003345B4 (de) * 2009-08-21 2017-07-27 International Business Machines Corporation Datenspeichersystem und Verfahren für das Betreiben eines Datenspeichersystems
US8850103B2 (en) 2009-08-28 2014-09-30 Microsoft Corporation Interruptible NAND flash memory
US20110078343A1 (en) * 2009-09-29 2011-03-31 Cleversafe, Inc. Distributed storage network including memory diversity
US8266501B2 (en) * 2009-09-29 2012-09-11 Micron Technology, Inc. Stripe based memory operation
EP4361815A3 (de) * 2009-10-09 2024-06-19 Violin Systems LLC Speichersystem mit multiple-striping von raid-gruppen und verfahren zur durchführung davon
US8285946B2 (en) * 2009-12-15 2012-10-09 International Business Machines Corporation Reducing access contention in flash-based memory systems
KR101678868B1 (ko) 2010-02-11 2016-11-23 삼성전자주식회사 플래시 주소 변환 장치 및 그 방법
US8671265B2 (en) 2010-03-05 2014-03-11 Solidfire, Inc. Distributed data storage system providing de-duplication of data using block identifiers
KR101541040B1 (ko) 2010-03-12 2015-08-03 엘에스아이 코포레이션 플래시 메모리들을 위한 ldpc 소거 디코딩
US8365041B2 (en) * 2010-03-17 2013-01-29 Sandisk Enterprise Ip Llc MLC self-raid flash data protection scheme
US8478796B2 (en) * 2010-03-23 2013-07-02 Apple Inc. Uncorrectable error handling schemes for non-volatile memories
US8407517B2 (en) * 2010-04-08 2013-03-26 Hitachi, Ltd. Methods and apparatus for managing error codes for storage systems coupled with external storage systems
US8898511B2 (en) 2010-06-24 2014-11-25 International Business Machines Corporation Homogeneous recovery in a redundant memory system
US8549378B2 (en) 2010-06-24 2013-10-01 International Business Machines Corporation RAIM system using decoding of virtual ECC
US8631271B2 (en) 2010-06-24 2014-01-14 International Business Machines Corporation Heterogeneous recovery in a redundant memory system
US8484529B2 (en) 2010-06-24 2013-07-09 International Business Machines Corporation Error correction and detection in a redundant memory system
US20120054427A1 (en) * 2010-08-27 2012-03-01 Wei-Jen Huang Increasing data access performance
US8417877B2 (en) * 2010-08-31 2013-04-09 Micron Technology, Inc Stripe-based non-volatile multilevel memory operation
US12008266B2 (en) 2010-09-15 2024-06-11 Pure Storage, Inc. Efficient read by reconstruction
US8589655B2 (en) 2010-09-15 2013-11-19 Pure Storage, Inc. Scheduling of I/O in an SSD environment
US11614893B2 (en) 2010-09-15 2023-03-28 Pure Storage, Inc. Optimizing storage device access based on latency
US8732426B2 (en) 2010-09-15 2014-05-20 Pure Storage, Inc. Scheduling of reactive I/O operations in a storage environment
US11275509B1 (en) 2010-09-15 2022-03-15 Pure Storage, Inc. Intelligently sizing high latency I/O requests in a storage environment
US9244769B2 (en) 2010-09-28 2016-01-26 Pure Storage, Inc. Offset protection data in a RAID array
US8775868B2 (en) 2010-09-28 2014-07-08 Pure Storage, Inc. Adaptive RAID for an SSD environment
US8762644B2 (en) * 2010-10-15 2014-06-24 Qualcomm Incorporated Low-power audio decoding and playback using cached images
US9003153B2 (en) * 2010-11-08 2015-04-07 Greenliant Llc Method of storing blocks of data in a plurality of memory devices in a redundant manner, a memory controller and a memory system
US8583987B2 (en) * 2010-11-16 2013-11-12 Micron Technology, Inc. Method and apparatus to perform concurrent read and write memory operations
EP2646922A4 (de) 2010-12-01 2015-11-25 Lsi Corp Management eines dynamischen modus mit übergeordneter redundanz mit unabhängigen siliciumelementen
WO2012099937A2 (en) 2011-01-18 2012-07-26 Lsi Corporation Higher-level redundancy information computation
US9727414B2 (en) 2010-12-01 2017-08-08 Seagate Technology Llc Fractional redundant array of silicon independent elements
JP5720210B2 (ja) * 2010-12-02 2015-05-20 富士通株式会社 アクセス制御装置、誤り訂正制御方法およびストレージ装置
US8719663B2 (en) 2010-12-12 2014-05-06 Lsi Corporation Cross-decoding for non-volatile storage
US8522122B2 (en) 2011-01-29 2013-08-27 International Business Machines Corporation Correcting memory device and memory channel failures in the presence of known memory device failures
KR101778782B1 (ko) 2011-04-08 2017-09-27 삼성전자주식회사 데이터 저장 장치 및 그것의 동작 방법
KR20120129239A (ko) * 2011-05-19 2012-11-28 삼성전자주식회사 비휘발성 메모리 장치, 이의 동작 방법, 및 이를 포함하는 메모리 시스템
US9335939B2 (en) 2011-07-12 2016-05-10 Violin Memory Inc. RAIDed memory system
US9417823B2 (en) 2011-07-12 2016-08-16 Violin Memory Inc. Memory system management
US20130019057A1 (en) * 2011-07-15 2013-01-17 Violin Memory, Inc. Flash disk array and controller
US8707104B1 (en) 2011-09-06 2014-04-22 Western Digital Technologies, Inc. Systems and methods for error injection in data storage systems
US9195530B1 (en) 2011-09-06 2015-11-24 Western Digital Technologies, Inc. Systems and methods for improved data management in data storage systems
US8713357B1 (en) * 2011-09-06 2014-04-29 Western Digital Technologies, Inc. Systems and methods for detailed error reporting in data storage systems
US8700834B2 (en) * 2011-09-06 2014-04-15 Western Digital Technologies, Inc. Systems and methods for an enhanced controller architecture in data storage systems
US8661320B2 (en) * 2011-10-07 2014-02-25 Aeroflex Colorado Springs Inc. Independent orthogonal error correction and detection
US8949553B2 (en) 2011-10-28 2015-02-03 Dell Products L.P. System and method for retention of historical data in storage resources
WO2013065085A1 (en) * 2011-11-01 2013-05-10 Hitachi, Ltd. Nonvolatile storage system compensating prior probability for low-density parity check codes
CN102419697B (zh) * 2011-11-02 2013-12-18 华中科技大学 垂直raid-6编码中单盘重构的方法
US8762771B2 (en) * 2011-11-04 2014-06-24 Lsi Corporation Method for completing write operations to a RAID drive pool with an abnormally slow drive in a timely fashion
US9054992B2 (en) 2011-12-27 2015-06-09 Solidfire, Inc. Quality of service policy sets
US9838269B2 (en) 2011-12-27 2017-12-05 Netapp, Inc. Proportional quality of service based on client usage and system metrics
JP5844473B2 (ja) * 2012-02-08 2016-01-20 株式会社日立製作所 複数の不揮発性の半導体記憶媒体を有し、ホットデータを長寿命記憶媒体に配置しコールドデータを短寿命記憶媒体に配置するストレージ装置、及び、記憶制御方法
KR101445025B1 (ko) 2012-02-09 2014-09-26 서울시립대학교 산학협력단 신뢰성 있는 ssd를 위한 효율적인 raid 기법
WO2013119074A1 (ko) * 2012-02-09 2013-08-15 Noh Sam Hyuk 신뢰성 있는 ssd를 위한 효율적인 raid 기법
US8719540B1 (en) 2012-03-15 2014-05-06 Pure Storage, Inc. Fractal layout of data blocks across multiple devices
US8341342B1 (en) 2012-03-23 2012-12-25 DSSD, Inc. Storage system with incremental multi-dimensional RAID
US8301832B1 (en) 2012-03-23 2012-10-30 DSSD, Inc. Storage system with guaranteed read latency
US8327185B1 (en) 2012-03-23 2012-12-04 DSSD, Inc. Method and system for multi-dimensional raid
US9053008B1 (en) 2012-03-26 2015-06-09 Western Digital Technologies, Inc. Systems and methods for providing inline parameter service in data storage devices
US9513845B2 (en) 2012-03-30 2016-12-06 Violin Memory Inc. Memory module virtualization
CN102662608B (zh) 2012-03-30 2015-11-25 华为技术有限公司 一种降低读延时的方法及装置
WO2013158817A1 (en) 2012-04-20 2013-10-24 Violin Memory, Inc. Lun management with distributed raid controllers
KR102133316B1 (ko) 2012-06-07 2020-07-21 바이올린 메모리 인코포레이티드 메모리 시스템 관리
US9170757B1 (en) 2012-06-08 2015-10-27 Violon Memory Inc. Optimization of raid group storage
WO2014008261A1 (en) 2012-07-03 2014-01-09 Violin Memory, Inc. Synchronization of a dispersed raid group
KR101925383B1 (ko) 2012-07-23 2018-12-05 삼성전자주식회사 불휘발성 메모리 장치 및 그것의 데이터 관리 방법
US8856431B2 (en) 2012-08-02 2014-10-07 Lsi Corporation Mixed granularity higher-level redundancy for non-volatile memory
US8909860B2 (en) 2012-08-23 2014-12-09 Cisco Technology, Inc. Executing parallel operations to increase data access performance
US8839074B2 (en) 2012-09-13 2014-09-16 Sandisk Technologies Inc. On chip data recovery for non-volatile storage
US10623386B1 (en) 2012-09-26 2020-04-14 Pure Storage, Inc. Secret sharing data protection in a storage system
US11032259B1 (en) 2012-09-26 2021-06-08 Pure Storage, Inc. Data protection in a storage system
EP2915049B1 (de) * 2012-10-30 2020-03-04 Hewlett-Packard Enterprise Development LP Intelligente speicherpuffer
US8464095B1 (en) 2012-11-15 2013-06-11 DSSD, Inc. Method and system for multi-dimensional raid reconstruction and defect avoidance
TWI506443B (zh) 2012-12-27 2015-11-01 Mediatek Inc 處理器與週邊裝置之間的媒介週邊介面及其通信方法
US9436720B2 (en) 2013-01-10 2016-09-06 Pure Storage, Inc. Safety for volume operations
US8554997B1 (en) 2013-01-18 2013-10-08 DSSD, Inc. Method and system for mirrored multi-dimensional raid
US20140215148A1 (en) 2013-01-31 2014-07-31 International Business Machines Corporation Limiting the execution of background management operations in a drive array
US8713502B1 (en) 2013-02-26 2014-04-29 International Business Machines Corporation Methods and systems to reduce a number of simulations in a timing analysis
US9069695B2 (en) 2013-03-14 2015-06-30 Apple Inc. Correction of block errors for a system having non-volatile memory
GB2513377A (en) 2013-04-25 2014-10-29 Ibm Controlling data storage in an array of storage devices
KR102072829B1 (ko) 2013-06-14 2020-02-03 삼성전자주식회사 저장 장치 및 그것을 포함하는 데이터 저장 시스템의 글로벌 가비지 컬렉션 방법
CN103336727B (zh) * 2013-06-20 2016-06-22 酷丰实业(上海)有限公司 对nand闪存存储设备进行数据操作的方法
US20150071021A1 (en) * 2013-09-11 2015-03-12 Oracle International Corporation Accessing independently addressable memory chips
US9400745B2 (en) 2013-11-06 2016-07-26 International Business Machines Corporation Physical address management in solid state memory
US11630585B1 (en) 2016-08-25 2023-04-18 Pure Storage, Inc. Processing evacuation events in a storage array that includes a plurality of storage devices
US10365858B2 (en) 2013-11-06 2019-07-30 Pure Storage, Inc. Thin provisioning in a storage device
US11128448B1 (en) 2013-11-06 2021-09-21 Pure Storage, Inc. Quorum-aware secret sharing
US10263770B2 (en) 2013-11-06 2019-04-16 Pure Storage, Inc. Data protection in a storage system using external secrets
US8924776B1 (en) 2013-12-04 2014-12-30 DSSD, Inc. Method and system for calculating parity values for multi-dimensional raid
US10067829B2 (en) 2013-12-13 2018-09-04 Intel Corporation Managing redundancy information in a non-volatile memory
US9448924B2 (en) 2014-01-08 2016-09-20 Netapp, Inc. Flash optimized, log-structured layer of a file system
CN106170773A (zh) * 2014-01-09 2016-11-30 桑迪士克科技有限责任公司 用于裸芯上缓冲式非易失性存储器的选择性回拷
US8949692B1 (en) 2014-01-23 2015-02-03 DSSD, Inc. Method and system for service-aware parity placement in a storage system
US9798620B2 (en) * 2014-02-06 2017-10-24 Sandisk Technologies Llc Systems and methods for non-blocking solid-state memory
US20150244795A1 (en) 2014-02-21 2015-08-27 Solidfire, Inc. Data syncing in a distributed system
US9778986B2 (en) * 2014-03-28 2017-10-03 Hitachi, Ltd. Storage system
US9779268B1 (en) 2014-06-03 2017-10-03 Pure Storage, Inc. Utilizing a non-repeating identifier to encrypt data
US11399063B2 (en) 2014-06-04 2022-07-26 Pure Storage, Inc. Network authentication for a storage system
US9218244B1 (en) 2014-06-04 2015-12-22 Pure Storage, Inc. Rebuilding data across storage nodes
US10496556B1 (en) 2014-06-25 2019-12-03 Pure Storage, Inc. Dynamic data protection within a flash storage system
US9218407B1 (en) 2014-06-25 2015-12-22 Pure Storage, Inc. Replication and intermediate read-write state for mediums
US9798728B2 (en) 2014-07-24 2017-10-24 Netapp, Inc. System performing data deduplication using a dense tree data structure
US9495255B2 (en) 2014-08-07 2016-11-15 Pure Storage, Inc. Error recovery in a storage cluster
US9558069B2 (en) 2014-08-07 2017-01-31 Pure Storage, Inc. Failure mapping in a storage array
CN105450704A (zh) * 2014-08-28 2016-03-30 北京兆易创新科技股份有限公司 一种用于闪存的网络存储设备及其处理方法
US10430079B2 (en) 2014-09-08 2019-10-01 Pure Storage, Inc. Adjusting storage capacity in a computing system
US9671960B2 (en) 2014-09-12 2017-06-06 Netapp, Inc. Rate matching technique for balancing segment cleaning and I/O workload
US10133511B2 (en) 2014-09-12 2018-11-20 Netapp, Inc Optimized segment cleaning technique
US10164841B2 (en) 2014-10-02 2018-12-25 Pure Storage, Inc. Cloud assist for storage systems
US9489132B2 (en) 2014-10-07 2016-11-08 Pure Storage, Inc. Utilizing unmapped and unknown states in a replicated storage system
CN104461379A (zh) * 2014-10-31 2015-03-25 上海华为技术有限公司 提高nand闪存的稳定性的方法和nand闪存
US9836229B2 (en) 2014-11-18 2017-12-05 Netapp, Inc. N-way merge technique for updating volume metadata in a storage I/O stack
US9727485B1 (en) 2014-11-24 2017-08-08 Pure Storage, Inc. Metadata rewrite and flatten optimization
US9766978B2 (en) 2014-12-09 2017-09-19 Marvell Israel (M.I.S.L) Ltd. System and method for performing simultaneous read and write operations in a memory
US9588842B1 (en) 2014-12-11 2017-03-07 Pure Storage, Inc. Drive rebuild
US9552248B2 (en) 2014-12-11 2017-01-24 Pure Storage, Inc. Cloud alert to replica
US9864769B2 (en) 2014-12-12 2018-01-09 Pure Storage, Inc. Storing data utilizing repeating pattern detection
US10545987B2 (en) 2014-12-19 2020-01-28 Pure Storage, Inc. Replication to the cloud
CN105867833B (zh) * 2015-01-21 2019-05-28 深圳市硅格半导体有限公司 数据存储装置及数据存储方法
US10296354B1 (en) 2015-01-21 2019-05-21 Pure Storage, Inc. Optimized boot operations within a flash storage array
US11947968B2 (en) 2015-01-21 2024-04-02 Pure Storage, Inc. Efficient use of zone in a storage device
US9720601B2 (en) 2015-02-11 2017-08-01 Netapp, Inc. Load balancing technique for a storage array
US9710165B1 (en) 2015-02-18 2017-07-18 Pure Storage, Inc. Identifying volume candidates for space reclamation
US10275310B2 (en) * 2015-03-09 2019-04-30 Western Digital Technologies, Inc. Updating exclusive-or parity data
US9762460B2 (en) 2015-03-24 2017-09-12 Netapp, Inc. Providing continuous context for operational information of a storage system
US10082985B2 (en) 2015-03-27 2018-09-25 Pure Storage, Inc. Data striping across storage nodes that are assigned to multiple logical arrays
US9710317B2 (en) 2015-03-30 2017-07-18 Netapp, Inc. Methods to identify, handle and recover from suspect SSDS in a clustered flash array
US10178169B2 (en) 2015-04-09 2019-01-08 Pure Storage, Inc. Point to point based backend communication layer for storage processing
US10466913B2 (en) 2015-04-29 2019-11-05 EMC IP Holding Company LLC Method and system for replicating and using grid level metadata in a storage system
US11403173B2 (en) 2015-04-30 2022-08-02 Marvell Israel (M.I.S.L) Ltd. Multiple read and write port memory
CN107787485B (zh) 2015-04-30 2021-04-09 马维尔以色列(M.I.S.L.)有限公司 多读取和写入端口存储器
US10140149B1 (en) 2015-05-19 2018-11-27 Pure Storage, Inc. Transactional commits with hardware assists in remote memory
US9740440B2 (en) * 2015-05-21 2017-08-22 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Separating a hybrid asymmetric mix of a RAID 1 mirror and a parity-based RAID array
US9716755B2 (en) 2015-05-26 2017-07-25 Pure Storage, Inc. Providing cloud storage array services by a local storage array in a data center
US11102298B1 (en) 2015-05-26 2021-08-24 Pure Storage, Inc. Locally providing cloud storage services for fleet management
US9594678B1 (en) 2015-05-27 2017-03-14 Pure Storage, Inc. Preventing duplicate entries of identical data in a storage device
US10021170B2 (en) 2015-05-29 2018-07-10 Pure Storage, Inc. Managing a storage array using client-side services
US11503031B1 (en) 2015-05-29 2022-11-15 Pure Storage, Inc. Storage array access control from cloud-based user authorization and authentication
US9588691B2 (en) 2015-06-10 2017-03-07 Pure Storage, Inc. Dynamically managing control information in a storage device
CN107615248B (zh) * 2015-06-17 2019-12-13 华为技术有限公司 分布式数据存储方法、控制设备和系统
US9594512B1 (en) 2015-06-19 2017-03-14 Pure Storage, Inc. Attributing consumed storage capacity among entities storing data in a storage array
US9547441B1 (en) 2015-06-23 2017-01-17 Pure Storage, Inc. Exposing a geometry of a storage device
US10310740B2 (en) 2015-06-23 2019-06-04 Pure Storage, Inc. Aligning memory access operations to a geometry of a storage device
US10296236B2 (en) 2015-07-01 2019-05-21 Pure Storage, Inc. Offloading device management responsibilities from a storage device in an array of storage devices
US9740566B2 (en) 2015-07-31 2017-08-22 Netapp, Inc. Snapshot creation workflow
US9892071B2 (en) 2015-08-03 2018-02-13 Pure Storage, Inc. Emulating a remote direct memory access (‘RDMA’) link between controllers in a storage array
US11625181B1 (en) 2015-08-24 2023-04-11 Pure Storage, Inc. Data tiering using snapshots
US11294588B1 (en) 2015-08-24 2022-04-05 Pure Storage, Inc. Placing data within a storage device
US11341136B2 (en) 2015-09-04 2022-05-24 Pure Storage, Inc. Dynamically resizable structures for approximate membership queries
KR20170028825A (ko) 2015-09-04 2017-03-14 퓨어 스토리지, 아이앤씨. 압축된 인덱스들을 사용한 해시 테이블들에서의 메모리 효율적인 스토리지 및 탐색
US11269884B2 (en) 2015-09-04 2022-03-08 Pure Storage, Inc. Dynamically resizable structures for approximate membership queries
US9530442B1 (en) * 2015-09-23 2016-12-27 Western Digital Technologies, Inc. Enhanced low overhead data protection in data storage drives
US11360844B1 (en) 2015-10-23 2022-06-14 Pure Storage, Inc. Recovery of a container storage provider
US10514978B1 (en) 2015-10-23 2019-12-24 Pure Storage, Inc. Automatic deployment of corrective measures for storage arrays
US9843453B2 (en) 2015-10-23 2017-12-12 Pure Storage, Inc. Authorizing I/O commands with I/O tokens
US10284232B2 (en) 2015-10-28 2019-05-07 Pure Storage, Inc. Dynamic error processing in a storage device
US10374868B2 (en) 2015-10-29 2019-08-06 Pure Storage, Inc. Distributed command processing in a flash storage system
US9740414B2 (en) 2015-10-29 2017-08-22 Pure Storage, Inc. Optimizing copy operations
US10353777B2 (en) 2015-10-30 2019-07-16 Pure Storage, Inc. Ensuring crash-safe forward progress of a system configuration update
US9804787B2 (en) 2015-11-03 2017-10-31 Samsung Electronics Co., Ltd. Mitigating GC effect in a raid configuration
US10346246B2 (en) * 2015-11-30 2019-07-09 International Business Machines Corporation Recovering data copies in a dispersed storage network
US11762764B1 (en) 2015-12-02 2023-09-19 Pure Storage, Inc. Writing data in a storage system that includes a first type of storage device and a second type of storage device
US11616834B2 (en) 2015-12-08 2023-03-28 Pure Storage, Inc. Efficient replication of a dataset to the cloud
US10326836B2 (en) 2015-12-08 2019-06-18 Pure Storage, Inc. Partially replicating a snapshot between storage systems
US11347697B1 (en) 2015-12-15 2022-05-31 Pure Storage, Inc. Proactively optimizing a storage system
US10162835B2 (en) 2015-12-15 2018-12-25 Pure Storage, Inc. Proactive management of a plurality of storage arrays in a multi-array system
US10346043B2 (en) 2015-12-28 2019-07-09 Pure Storage, Inc. Adaptive computing for data compression
US10599518B2 (en) * 2015-12-31 2020-03-24 Texas Instruments Incorporated Protecting data memory in a signal processing system
WO2017127104A1 (en) * 2016-01-22 2017-07-27 Hewlett Packard Enterprise Development Lp Inject delay to simulate latency
US20170212705A1 (en) * 2016-01-26 2017-07-27 Netapp, Inc. Dynamic Weighting for Distributed Parity Device Layouts
US9886314B2 (en) 2016-01-28 2018-02-06 Pure Storage, Inc. Placing workloads in a multi-array system
US10572460B2 (en) 2016-02-11 2020-02-25 Pure Storage, Inc. Compressing data in dependence upon characteristics of a storage system
US9760297B2 (en) 2016-02-12 2017-09-12 Pure Storage, Inc. Managing input/output (‘I/O’) queues in a data storage system
US11995315B2 (en) 2016-03-16 2024-05-28 Pure Storage, Inc. Converting data formats in a storage system
US9959043B2 (en) 2016-03-16 2018-05-01 Pure Storage, Inc. Performing a non-disruptive upgrade of data in a storage system
WO2017164844A1 (en) * 2016-03-22 2017-09-28 Hewlett Packard Enterprise Development Lp Memory
US10127113B1 (en) 2016-03-31 2018-11-13 EMC IP Holding Company LLC Method and system for checkerboard RAID
US10929022B2 (en) 2016-04-25 2021-02-23 Netapp. Inc. Space savings reporting for storage system supporting snapshot and clones
US9841921B2 (en) 2016-04-27 2017-12-12 Pure Storage, Inc. Migrating data in a storage array that includes a plurality of storage devices
US11112990B1 (en) 2016-04-27 2021-09-07 Pure Storage, Inc. Managing storage device evacuation
US11809727B1 (en) 2016-04-27 2023-11-07 Pure Storage, Inc. Predicting failures in a storage system that includes a plurality of storage devices
US9811264B1 (en) 2016-04-28 2017-11-07 Pure Storage, Inc. Deploying client-specific applications in a storage system utilizing redundant system resources
US10545825B2 (en) * 2016-04-29 2020-01-28 Synamedia Limited Fault-tolerant enterprise object storage system for small objects
US10452297B1 (en) 2016-05-02 2019-10-22 Pure Storage, Inc. Generating and optimizing summary index levels in a deduplication storage system
US10303390B1 (en) 2016-05-02 2019-05-28 Pure Storage, Inc. Resolving fingerprint collisions in flash storage system
US10133503B1 (en) 2016-05-02 2018-11-20 Pure Storage, Inc. Selecting a deduplication process based on a difference between performance metrics
US9507532B1 (en) 2016-05-20 2016-11-29 Pure Storage, Inc. Migrating data in a storage array that includes a plurality of storage devices and a plurality of write buffer devices
US11188270B2 (en) * 2016-05-25 2021-11-30 International Business Machines Corporation Targeted secure data overwrite
US10203903B2 (en) 2016-07-26 2019-02-12 Pure Storage, Inc. Geometry based, space aware shelf/writegroup evacuation
US10671439B1 (en) 2016-09-07 2020-06-02 Pure Storage, Inc. Workload planning with quality-of-service (‘QOS’) integration
US11481261B1 (en) 2016-09-07 2022-10-25 Pure Storage, Inc. Preventing extended latency in a storage system
US10235229B1 (en) 2016-09-07 2019-03-19 Pure Storage, Inc. Rehabilitating storage devices in a storage array that includes a plurality of storage devices
US10908966B1 (en) 2016-09-07 2021-02-02 Pure Storage, Inc. Adapting target service times in a storage system
US11531577B1 (en) 2016-09-07 2022-12-20 Pure Storage, Inc. Temporarily limiting access to a storage device
US10331588B2 (en) 2016-09-07 2019-06-25 Pure Storage, Inc. Ensuring the appropriate utilization of system resources using weighted workload based, time-independent scheduling
US10146585B2 (en) 2016-09-07 2018-12-04 Pure Storage, Inc. Ensuring the fair utilization of system resources using workload based, time-independent scheduling
US11960348B2 (en) 2016-09-07 2024-04-16 Pure Storage, Inc. Cloud-based monitoring of hardware components in a fleet of storage systems
US11886922B2 (en) 2016-09-07 2024-01-30 Pure Storage, Inc. Scheduling input/output operations for a storage system
US10642763B2 (en) 2016-09-20 2020-05-05 Netapp, Inc. Quality of service policy sets
US10162523B2 (en) 2016-10-04 2018-12-25 Pure Storage, Inc. Migrating data between volumes using virtual copy operation
US10545861B2 (en) 2016-10-04 2020-01-28 Pure Storage, Inc. Distributed integrated high-speed solid-state non-volatile random-access memory
US10191662B2 (en) 2016-10-04 2019-01-29 Pure Storage, Inc. Dynamic allocation of segments in a flash storage system
US10756816B1 (en) 2016-10-04 2020-08-25 Pure Storage, Inc. Optimized fibre channel and non-volatile memory express access
US10007459B2 (en) 2016-10-20 2018-06-26 Pure Storage, Inc. Performance tuning in a storage system that includes one or more storage devices
US10481798B2 (en) 2016-10-28 2019-11-19 Pure Storage, Inc. Efficient flash management for multiple controllers
US11379132B1 (en) 2016-10-20 2022-07-05 Pure Storage, Inc. Correlating medical sensor data
US10185505B1 (en) 2016-10-28 2019-01-22 Pure Storage, Inc. Reading a portion of data to replicate a volume based on sequence numbers
US10359942B2 (en) 2016-10-31 2019-07-23 Pure Storage, Inc. Deduplication aware scalable content placement
US9996285B2 (en) * 2016-11-08 2018-06-12 SK Hynix Inc. Cyclically interleaved XOR array for error recovery
US10162566B2 (en) 2016-11-22 2018-12-25 Pure Storage, Inc. Accumulating application-level statistics in a storage system
US11620075B2 (en) 2016-11-22 2023-04-04 Pure Storage, Inc. Providing application aware storage
US11550481B2 (en) 2016-12-19 2023-01-10 Pure Storage, Inc. Efficiently writing data in a zoned drive storage system
US10452290B2 (en) 2016-12-19 2019-10-22 Pure Storage, Inc. Block consolidation in a direct-mapped flash storage system
US10198205B1 (en) 2016-12-19 2019-02-05 Pure Storage, Inc. Dynamically adjusting a number of storage devices utilized to simultaneously service write operations
US11461273B1 (en) 2016-12-20 2022-10-04 Pure Storage, Inc. Modifying storage distribution in a storage system that includes one or more storage devices
US10489307B2 (en) 2017-01-05 2019-11-26 Pure Storage, Inc. Periodically re-encrypting user data stored on a storage device
US11307998B2 (en) 2017-01-09 2022-04-19 Pure Storage, Inc. Storage efficiency of encrypted host system data
US11093146B2 (en) 2017-01-12 2021-08-17 Pure Storage, Inc. Automatic load rebalancing of a write group
US10558519B2 (en) * 2017-01-17 2020-02-11 International Business Machines Corporation Power-reduced redundant array of independent memory (RAIM) system
US11340800B1 (en) 2017-01-19 2022-05-24 Pure Storage, Inc. Content masking in a storage system
US11163624B2 (en) 2017-01-27 2021-11-02 Pure Storage, Inc. Dynamically adjusting an amount of log data generated for a storage system
US11675520B2 (en) 2017-03-10 2023-06-13 Pure Storage, Inc. Application replication among storage systems synchronously replicating a dataset
US10521344B1 (en) 2017-03-10 2019-12-31 Pure Storage, Inc. Servicing input/output (‘I/O’) operations directed to a dataset that is synchronized across a plurality of storage systems
US11941279B2 (en) 2017-03-10 2024-03-26 Pure Storage, Inc. Data path virtualization
US10503427B2 (en) 2017-03-10 2019-12-10 Pure Storage, Inc. Synchronously replicating datasets and other managed objects to cloud-based storage systems
US11442825B2 (en) 2017-03-10 2022-09-13 Pure Storage, Inc. Establishing a synchronous replication relationship between two or more storage systems
US11089105B1 (en) 2017-12-14 2021-08-10 Pure Storage, Inc. Synchronously replicating datasets in cloud-based storage systems
US12056383B2 (en) 2017-03-10 2024-08-06 Pure Storage, Inc. Edge management service
US11803453B1 (en) 2017-03-10 2023-10-31 Pure Storage, Inc. Using host connectivity states to avoid queuing I/O requests
US11169727B1 (en) 2017-03-10 2021-11-09 Pure Storage, Inc. Synchronous replication between storage systems with virtualized storage
JP6640776B2 (ja) * 2017-03-17 2020-02-05 キオクシア株式会社 メモリシステム
US10528488B1 (en) 2017-03-30 2020-01-07 Pure Storage, Inc. Efficient name coding
US10263643B2 (en) * 2017-04-05 2019-04-16 Alibaba Group Holding Limited Method and system of multi-fold data protection for high-density storage appliance with improved availability and robustness
US10459664B1 (en) 2017-04-10 2019-10-29 Pure Storage, Inc. Virtualized copy-by-reference
US9910618B1 (en) 2017-04-10 2018-03-06 Pure Storage, Inc. Migrating applications executing on a storage system
CN108572883B (zh) * 2017-04-19 2021-06-18 北京金山云网络技术有限公司 一种数据正确性校验方法及装置
US11403019B2 (en) 2017-04-21 2022-08-02 Pure Storage, Inc. Deduplication-aware per-tenant encryption
US12045487B2 (en) 2017-04-21 2024-07-23 Pure Storage, Inc. Preserving data deduplication in a multi-tenant storage system
US10705911B2 (en) * 2017-04-24 2020-07-07 Hewlett Packard Enterprise Development Lp Storing data in a distributed storage system
US10944671B2 (en) 2017-04-27 2021-03-09 Pure Storage, Inc. Efficient data forwarding in a networked device
US10614019B2 (en) 2017-04-28 2020-04-07 EMC IP Holding Company LLC Method and system for fast ordered writes with target collaboration
US10289491B1 (en) 2017-04-28 2019-05-14 EMC IP Holding Company LLC Method and system for implementing multi-dimensional raid in an extensible storage array to optimize performance
US10466930B2 (en) 2017-04-28 2019-11-05 EMC IP Holding Company LLC Method and system for fast ordered writes with atomic multicast
US10339062B2 (en) 2017-04-28 2019-07-02 EMC IP Holding Company LLC Method and system for writing data to and read data from persistent storage
US11868629B1 (en) 2017-05-05 2024-01-09 Pure Storage, Inc. Storage system sizing service
CN113760786A (zh) * 2017-05-10 2021-12-07 北京忆芯科技有限公司 页条带的数据组织以及向页条带写入数据的方法与装置
US10446174B2 (en) * 2017-05-26 2019-10-15 Microsoft Technology Licensing, Llc File system for shingled magnetic recording (SMR)
US10068663B1 (en) * 2017-05-30 2018-09-04 Seagate Technology Llc Data storage device with rewriteable in-place memory
WO2018226228A1 (en) * 2017-06-08 2018-12-13 Hitachi Data Systems Corporation Deduplicating distributed erasure coded objects
US12086651B2 (en) 2017-06-12 2024-09-10 Pure Storage, Inc. Migrating workloads using active disaster recovery
US10853148B1 (en) 2017-06-12 2020-12-01 Pure Storage, Inc. Migrating workloads between a plurality of execution environments
US10417092B2 (en) 2017-09-07 2019-09-17 Pure Storage, Inc. Incremental RAID stripe update parity calculation
US11609718B1 (en) 2017-06-12 2023-03-21 Pure Storage, Inc. Identifying valid data after a storage system recovery
US11340939B1 (en) 2017-06-12 2022-05-24 Pure Storage, Inc. Application-aware analytics for storage systems
US11593036B2 (en) 2017-06-12 2023-02-28 Pure Storage, Inc. Staging data within a unified storage element
US12086650B2 (en) 2017-06-12 2024-09-10 Pure Storage, Inc. Workload placement based on carbon emissions
US11989429B1 (en) 2017-06-12 2024-05-21 Pure Storage, Inc. Recommending changes to a storage system
US11016824B1 (en) 2017-06-12 2021-05-25 Pure Storage, Inc. Event identification with out-of-order reporting in a cloud-based environment
WO2018231350A1 (en) 2017-06-12 2018-12-20 Pure Storage, Inc. Accessible fast durable storage integrated into a bulk storage device
US11592991B2 (en) 2017-09-07 2023-02-28 Pure Storage, Inc. Converting raid data between persistent storage types
US10613791B2 (en) 2017-06-12 2020-04-07 Pure Storage, Inc. Portable snapshot replication between storage systems
US10976962B2 (en) 2018-03-15 2021-04-13 Pure Storage, Inc. Servicing I/O operations in a cloud-based storage system
US11442669B1 (en) 2018-03-15 2022-09-13 Pure Storage, Inc. Orchestrating a virtual storage system
US12061822B1 (en) 2017-06-12 2024-08-13 Pure Storage, Inc. Utilizing volume-level policies in a storage system
US11210133B1 (en) 2017-06-12 2021-12-28 Pure Storage, Inc. Workload mobility between disparate execution environments
US11422731B1 (en) 2017-06-12 2022-08-23 Pure Storage, Inc. Metadata-based replication of a dataset
US10884636B1 (en) 2017-06-12 2021-01-05 Pure Storage, Inc. Presenting workload performance in a storage system
US10402266B1 (en) 2017-07-31 2019-09-03 Pure Storage, Inc. Redundant array of independent disks in a direct-mapped flash storage system
US10970204B2 (en) * 2017-08-29 2021-04-06 Samsung Electronics Co., Ltd. Reducing read-write interference by adaptive scheduling in NAND flash SSDs
US10831935B2 (en) 2017-08-31 2020-11-10 Pure Storage, Inc. Encryption management with host-side data reduction
US10459798B2 (en) * 2017-09-15 2019-10-29 Seagate Technology Llc Data storage system with multiple parity redundancy
KR102369402B1 (ko) 2017-09-20 2022-03-02 삼성전자주식회사 스토리지 장치, 이의 동작 방법 및 스토리지 장치를 포함하는 스토리지 시스템
US10776202B1 (en) 2017-09-22 2020-09-15 Pure Storage, Inc. Drive, blade, or data shard decommission via RAID geometry shrinkage
US10789211B1 (en) 2017-10-04 2020-09-29 Pure Storage, Inc. Feature-based deduplication
US10360214B2 (en) 2017-10-19 2019-07-23 Pure Storage, Inc. Ensuring reproducibility in an artificial intelligence infrastructure
US10452444B1 (en) 2017-10-19 2019-10-22 Pure Storage, Inc. Storage system with compute resources and shared storage resources
US11455168B1 (en) 2017-10-19 2022-09-27 Pure Storage, Inc. Batch building for deep learning training workloads
US11494692B1 (en) 2018-03-26 2022-11-08 Pure Storage, Inc. Hyperscale artificial intelligence and machine learning infrastructure
US11861423B1 (en) 2017-10-19 2024-01-02 Pure Storage, Inc. Accelerating artificial intelligence (‘AI’) workflows
US12067466B2 (en) 2017-10-19 2024-08-20 Pure Storage, Inc. Artificial intelligence and machine learning hyperscale infrastructure
US10671435B1 (en) 2017-10-19 2020-06-02 Pure Storage, Inc. Data transformation caching in an artificial intelligence infrastructure
US10884919B2 (en) 2017-10-31 2021-01-05 Pure Storage, Inc. Memory management in a storage system
US10484174B1 (en) 2017-11-01 2019-11-19 Pure Storage, Inc. Protecting an encryption key for data stored in a storage system that includes a plurality of storage devices
US10817392B1 (en) 2017-11-01 2020-10-27 Pure Storage, Inc. Ensuring resiliency to storage device failures in a storage system that includes a plurality of storage devices
US10860475B1 (en) 2017-11-17 2020-12-08 Pure Storage, Inc. Hybrid flash translation layer
US10929226B1 (en) 2017-11-21 2021-02-23 Pure Storage, Inc. Providing for increased flexibility for large scale parity
US10990282B1 (en) 2017-11-28 2021-04-27 Pure Storage, Inc. Hybrid data tiering with cloud storage
US10936238B2 (en) 2017-11-28 2021-03-02 Pure Storage, Inc. Hybrid data tiering
US10795598B1 (en) 2017-12-07 2020-10-06 Pure Storage, Inc. Volume migration for storage systems synchronously replicating a dataset
US11036677B1 (en) 2017-12-14 2021-06-15 Pure Storage, Inc. Replicated data integrity
US10929031B2 (en) 2017-12-21 2021-02-23 Pure Storage, Inc. Maximizing data reduction in a partially encrypted volume
CN108280028B (zh) * 2017-12-27 2024-04-05 浙江恒业电子股份有限公司 一种基于动态分配的智能电能表负荷记录实现的方法
US11010233B1 (en) 2018-01-18 2021-05-18 Pure Storage, Inc Hardware-based system monitoring
US10970395B1 (en) 2018-01-18 2021-04-06 Pure Storage, Inc Security threat monitoring for a storage system
US11144638B1 (en) 2018-01-18 2021-10-12 Pure Storage, Inc. Method for storage system detection and alerting on potential malicious action
US10992533B1 (en) 2018-01-30 2021-04-27 Pure Storage, Inc. Policy based path management
US10467527B1 (en) 2018-01-31 2019-11-05 Pure Storage, Inc. Method and apparatus for artificial intelligence acceleration
US11036596B1 (en) 2018-02-18 2021-06-15 Pure Storage, Inc. System for delaying acknowledgements on open NAND locations until durability has been confirmed
KR102378819B1 (ko) 2018-02-20 2022-03-25 삼성전자주식회사 메모리 장치
US11494109B1 (en) 2018-02-22 2022-11-08 Pure Storage, Inc. Erase block trimming for heterogenous flash memory storage devices
US10942650B1 (en) 2018-03-05 2021-03-09 Pure Storage, Inc. Reporting capacity utilization in a storage system
US11861170B2 (en) 2018-03-05 2024-01-02 Pure Storage, Inc. Sizing resources for a replication target
US11150834B1 (en) 2018-03-05 2021-10-19 Pure Storage, Inc. Determining storage consumption in a storage system
US11972134B2 (en) 2018-03-05 2024-04-30 Pure Storage, Inc. Resource utilization using normalized input/output (‘I/O’) operations
US10521151B1 (en) 2018-03-05 2019-12-31 Pure Storage, Inc. Determining effective space utilization in a storage system
US10296258B1 (en) 2018-03-09 2019-05-21 Pure Storage, Inc. Offloading data storage to a decentralized storage network
US11288138B1 (en) 2018-03-15 2022-03-29 Pure Storage, Inc. Recovery from a system fault in a cloud-based storage system
US10917471B1 (en) 2018-03-15 2021-02-09 Pure Storage, Inc. Active membership in a cloud-based storage system
US12066900B2 (en) 2018-03-15 2024-08-20 Pure Storage, Inc. Managing disaster recovery to cloud computing environment
US11048590B1 (en) 2018-03-15 2021-06-29 Pure Storage, Inc. Data consistency during recovery in a cloud-based storage system
US10924548B1 (en) 2018-03-15 2021-02-16 Pure Storage, Inc. Symmetric storage using a cloud-based storage system
US11210009B1 (en) 2018-03-15 2021-12-28 Pure Storage, Inc. Staging data in a cloud-based storage system
US11095706B1 (en) 2018-03-21 2021-08-17 Pure Storage, Inc. Secure cloud-based storage system management
US11171950B1 (en) 2018-03-21 2021-11-09 Pure Storage, Inc. Secure cloud-based storage system management
US10838833B1 (en) 2018-03-26 2020-11-17 Pure Storage, Inc. Providing for high availability in a data analytics pipeline without replicas
US11934322B1 (en) 2018-04-05 2024-03-19 Pure Storage, Inc. Multiple encryption keys on storage drives
US11392553B1 (en) 2018-04-24 2022-07-19 Pure Storage, Inc. Remote data management
US11436344B1 (en) 2018-04-24 2022-09-06 Pure Storage, Inc. Secure encryption in deduplication cluster
US11995336B2 (en) 2018-04-25 2024-05-28 Pure Storage, Inc. Bucket views
US10678433B1 (en) 2018-04-27 2020-06-09 Pure Storage, Inc. Resource-preserving system upgrade
US11385792B2 (en) 2018-04-27 2022-07-12 Pure Storage, Inc. High availability controller pair transitioning
US11675503B1 (en) 2018-05-21 2023-06-13 Pure Storage, Inc. Role-based data access
US11954220B2 (en) 2018-05-21 2024-04-09 Pure Storage, Inc. Data protection for container storage
US12086431B1 (en) 2018-05-21 2024-09-10 Pure Storage, Inc. Selective communication protocol layering for synchronous replication
US11455409B2 (en) 2018-05-21 2022-09-27 Pure Storage, Inc. Storage layer data obfuscation
US20190354628A1 (en) 2018-05-21 2019-11-21 Pure Storage, Inc. Asynchronous replication of synchronously replicated data
US10871922B2 (en) 2018-05-22 2020-12-22 Pure Storage, Inc. Integrated storage management between storage systems and container orchestrators
US10678436B1 (en) 2018-05-29 2020-06-09 Pure Storage, Inc. Using a PID controller to opportunistically compress more data during garbage collection
US11436023B2 (en) 2018-05-31 2022-09-06 Pure Storage, Inc. Mechanism for updating host file system and flash translation layer based on underlying NAND technology
EP3803599A4 (de) * 2018-06-01 2022-01-26 Microsoft Technology Licensing, LLC Löschcodierung mit überlappenden lokalen rekonstruktionscodes
US10776046B1 (en) 2018-06-08 2020-09-15 Pure Storage, Inc. Optimized non-uniform memory access
US11281577B1 (en) 2018-06-19 2022-03-22 Pure Storage, Inc. Garbage collection tuning for low drive wear
US11869586B2 (en) 2018-07-11 2024-01-09 Pure Storage, Inc. Increased data protection by recovering data from partially-failed solid-state devices
CN110737615B (zh) * 2018-07-19 2021-06-08 海鹰航空通用装备有限责任公司 一种数据存取方法及装置
US11403000B1 (en) 2018-07-20 2022-08-02 Pure Storage, Inc. Resiliency in a cloud-based storage system
US11416298B1 (en) 2018-07-20 2022-08-16 Pure Storage, Inc. Providing application-specific storage by a storage system
US11954238B1 (en) 2018-07-24 2024-04-09 Pure Storage, Inc. Role-based access control for a storage system
US11146564B1 (en) 2018-07-24 2021-10-12 Pure Storage, Inc. Login authentication in a cloud storage platform
US11632360B1 (en) 2018-07-24 2023-04-18 Pure Storage, Inc. Remote access to a storage device
US11194759B2 (en) 2018-09-06 2021-12-07 Pure Storage, Inc. Optimizing local data relocation operations of a storage device of a storage system
US11133076B2 (en) 2018-09-06 2021-09-28 Pure Storage, Inc. Efficient relocation of data between storage devices of a storage system
US11860820B1 (en) 2018-09-11 2024-01-02 Pure Storage, Inc. Processing data through a storage system in a data pipeline
US10846216B2 (en) 2018-10-25 2020-11-24 Pure Storage, Inc. Scalable garbage collection
CN111104046B (zh) 2018-10-25 2023-08-25 伊姆西Ip控股有限责任公司 管理冗余磁盘阵列的方法、设备和计算机可读存储介质
CN109491926B (zh) * 2018-10-26 2023-03-28 浙江工商大学 基于延长写时间的优化非易失性存储器写寿命的内存管理方法
US12026381B2 (en) 2018-10-26 2024-07-02 Pure Storage, Inc. Preserving identities and policies across replication
US11113409B2 (en) 2018-10-26 2021-09-07 Pure Storage, Inc. Efficient rekey in a transparent decrypting storage array
US10671302B1 (en) 2018-10-26 2020-06-02 Pure Storage, Inc. Applying a rate limit across a plurality of storage systems
KR102689927B1 (ko) * 2018-11-16 2024-07-31 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작방법
US10963189B1 (en) 2018-11-18 2021-03-30 Pure Storage, Inc. Coalescing write operations in a cloud-based storage system
US11526405B1 (en) 2018-11-18 2022-12-13 Pure Storage, Inc. Cloud-based disaster recovery
US11023179B2 (en) 2018-11-18 2021-06-01 Pure Storage, Inc. Cloud-based storage system storage management
US12026060B1 (en) 2018-11-18 2024-07-02 Pure Storage, Inc. Reverting between codified states in a cloud-based storage system
US11340837B1 (en) 2018-11-18 2022-05-24 Pure Storage, Inc. Storage system management via a remote console
US12026061B1 (en) 2018-11-18 2024-07-02 Pure Storage, Inc. Restoring a cloud-based storage system to a selected state
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
US11650749B1 (en) 2018-12-17 2023-05-16 Pure Storage, Inc. Controlling access to sensitive data in a shared dataset
TWI720400B (zh) * 2019-01-04 2021-03-01 群聯電子股份有限公司 記憶體控制方法、記憶體儲存裝置及記憶體控制電路單元
CN111435287B (zh) * 2019-01-14 2023-06-27 群联电子股份有限公司 存储器控制方法、存储器存储装置及存储器控制电路单元
US11003369B1 (en) 2019-01-14 2021-05-11 Pure Storage, Inc. Performing a tune-up procedure on a storage device during a boot process
US11194473B1 (en) 2019-01-23 2021-12-07 Pure Storage, Inc. Programming frequently read data to low latency portions of a solid-state storage array
US11588633B1 (en) 2019-03-15 2023-02-21 Pure Storage, Inc. Decommissioning keys in a decryption storage system
US11042452B1 (en) 2019-03-20 2021-06-22 Pure Storage, Inc. Storage system data recovery using data recovery as a service
US11334254B2 (en) 2019-03-29 2022-05-17 Pure Storage, Inc. Reliability based flash page sizing
US11221778B1 (en) 2019-04-02 2022-01-11 Pure Storage, Inc. Preparing data for deduplication
US11397674B1 (en) 2019-04-03 2022-07-26 Pure Storage, Inc. Optimizing garbage collection across heterogeneous flash devices
US11775189B2 (en) 2019-04-03 2023-10-03 Pure Storage, Inc. Segment level heterogeneity
US10990480B1 (en) 2019-04-05 2021-04-27 Pure Storage, Inc. Performance of RAID rebuild operations by a storage group controller of a storage system
US11068162B1 (en) 2019-04-09 2021-07-20 Pure Storage, Inc. Storage management in a cloud data store
US12087382B2 (en) 2019-04-11 2024-09-10 Pure Storage, Inc. Adaptive threshold for bad flash memory blocks
US11099986B2 (en) 2019-04-12 2021-08-24 Pure Storage, Inc. Efficient transfer of memory contents
US11392555B2 (en) 2019-05-15 2022-07-19 Pure Storage, Inc. Cloud-based file services
US11853266B2 (en) 2019-05-15 2023-12-26 Pure Storage, Inc. Providing a file system in a cloud environment
US11126364B2 (en) 2019-07-18 2021-09-21 Pure Storage, Inc. Virtual storage system architecture
US11327676B1 (en) 2019-07-18 2022-05-10 Pure Storage, Inc. Predictive data streaming in a virtual storage system
CN110196687B (zh) * 2019-05-20 2023-02-03 杭州宏杉科技股份有限公司 数据读写方法、装置、电子设备
US12001355B1 (en) 2019-05-24 2024-06-04 Pure Storage, Inc. Chunked memory efficient storage data transfers
US11487665B2 (en) 2019-06-05 2022-11-01 Pure Storage, Inc. Tiered caching of data in a storage system
US11514027B2 (en) * 2019-06-07 2022-11-29 Sap Se Paged hybrid LOBs
US11281394B2 (en) 2019-06-24 2022-03-22 Pure Storage, Inc. Replication across partitioning schemes in a distributed storage system
US10929046B2 (en) 2019-07-09 2021-02-23 Pure Storage, Inc. Identifying and relocating hot data to a cache determined with read velocity based on a threshold stored at a storage device
US11487715B1 (en) 2019-07-18 2022-11-01 Pure Storage, Inc. Resiliency in a cloud-based storage system
US11550514B2 (en) 2019-07-18 2023-01-10 Pure Storage, Inc. Efficient transfers between tiers of a virtual storage system
US11526408B2 (en) * 2019-07-18 2022-12-13 Pure Storage, Inc. Data recovery in a virtual storage system
US11861221B1 (en) 2019-07-18 2024-01-02 Pure Storage, Inc. Providing scalable and reliable container-based storage services
US11093139B1 (en) 2019-07-18 2021-08-17 Pure Storage, Inc. Durably storing data within a virtual storage system
US11422751B2 (en) 2019-07-18 2022-08-23 Pure Storage, Inc. Creating a virtual storage system
US11086713B1 (en) 2019-07-23 2021-08-10 Pure Storage, Inc. Optimized end-to-end integrity storage system
US11086553B1 (en) 2019-08-28 2021-08-10 Pure Storage, Inc. Tiering duplicated objects in a cloud-based object store
US11693713B1 (en) 2019-09-04 2023-07-04 Pure Storage, Inc. Self-tuning clusters for resilient microservices
US11963321B2 (en) 2019-09-11 2024-04-16 Pure Storage, Inc. Low profile latching mechanism
US12045252B2 (en) 2019-09-13 2024-07-23 Pure Storage, Inc. Providing quality of service (QoS) for replicating datasets
US11625416B1 (en) 2019-09-13 2023-04-11 Pure Storage, Inc. Uniform model for distinct types of data replication
US11797569B2 (en) 2019-09-13 2023-10-24 Pure Storage, Inc. Configurable data replication
US11573864B1 (en) 2019-09-16 2023-02-07 Pure Storage, Inc. Automating database management in a storage system
US11669386B1 (en) 2019-10-08 2023-06-06 Pure Storage, Inc. Managing an application's resource stack
US11403043B2 (en) 2019-10-15 2022-08-02 Pure Storage, Inc. Efficient data compression by grouping similar data within a data segment
US11625481B2 (en) 2019-11-22 2023-04-11 Pure Storage, Inc. Selective throttling of operations potentially related to a security threat to a storage system
US12050683B2 (en) * 2019-11-22 2024-07-30 Pure Storage, Inc. Selective control of a data synchronization setting of a storage system based on a possible ransomware attack against the storage system
US12079333B2 (en) 2019-11-22 2024-09-03 Pure Storage, Inc. Independent security threat detection and remediation by storage systems in a synchronous replication arrangement
US11941116B2 (en) 2019-11-22 2024-03-26 Pure Storage, Inc. Ransomware-based data protection parameter modification
US11615185B2 (en) 2019-11-22 2023-03-28 Pure Storage, Inc. Multi-layer security threat detection for a storage system
US11500788B2 (en) 2019-11-22 2022-11-15 Pure Storage, Inc. Logical address based authorization of operations with respect to a storage system
US11651075B2 (en) 2019-11-22 2023-05-16 Pure Storage, Inc. Extensible attack monitoring by a storage system
US12079356B2 (en) 2019-11-22 2024-09-03 Pure Storage, Inc. Measurement interval anomaly detection-based generation of snapshots
US11720714B2 (en) 2019-11-22 2023-08-08 Pure Storage, Inc. Inter-I/O relationship based detection of a security threat to a storage system
US11645162B2 (en) 2019-11-22 2023-05-09 Pure Storage, Inc. Recovery point determination for data restoration in a storage system
US12050689B2 (en) 2019-11-22 2024-07-30 Pure Storage, Inc. Host anomaly-based generation of snapshots
US11675898B2 (en) 2019-11-22 2023-06-13 Pure Storage, Inc. Recovery dataset management for security threat monitoring
US11341236B2 (en) 2019-11-22 2022-05-24 Pure Storage, Inc. Traffic-based detection of a security threat to a storage system
US12067118B2 (en) 2019-11-22 2024-08-20 Pure Storage, Inc. Detection of writing to a non-header portion of a file as an indicator of a possible ransomware attack against a storage system
US11720692B2 (en) 2019-11-22 2023-08-08 Pure Storage, Inc. Hardware token based management of recovery datasets for a storage system
US11657155B2 (en) 2019-11-22 2023-05-23 Pure Storage, Inc Snapshot delta metric based determination of a possible ransomware attack against data maintained by a storage system
US11687418B2 (en) 2019-11-22 2023-06-27 Pure Storage, Inc. Automatic generation of recovery plans specific to individual storage elements
US11520907B1 (en) 2019-11-22 2022-12-06 Pure Storage, Inc. Storage system snapshot retention based on encrypted data
US12079502B2 (en) 2019-11-22 2024-09-03 Pure Storage, Inc. Storage element attribute-based determination of a data protection policy for use within a storage system
US11755751B2 (en) 2019-11-22 2023-09-12 Pure Storage, Inc. Modify access restrictions in response to a possible attack against data stored by a storage system
US11531487B1 (en) 2019-12-06 2022-12-20 Pure Storage, Inc. Creating a replica of a storage system
US11720497B1 (en) 2020-01-13 2023-08-08 Pure Storage, Inc. Inferred nonsequential prefetch based on data access patterns
US11709636B1 (en) 2020-01-13 2023-07-25 Pure Storage, Inc. Non-sequential readahead for deep learning training
US11733901B1 (en) 2020-01-13 2023-08-22 Pure Storage, Inc. Providing persistent storage to transient cloud computing services
US11520659B2 (en) * 2020-01-13 2022-12-06 International Business Machines Corporation Refresh-hiding memory system staggered refresh
US11200119B2 (en) 2020-01-13 2021-12-14 International Business Machines Corporation Low latency availability in degraded redundant array of independent memory
US12014065B2 (en) 2020-02-11 2024-06-18 Pure Storage, Inc. Multi-cloud orchestration as-a-service
US11637896B1 (en) 2020-02-25 2023-04-25 Pure Storage, Inc. Migrating applications to a cloud-computing environment
US11868622B2 (en) 2020-02-25 2024-01-09 Pure Storage, Inc. Application recovery across storage systems
US12038881B2 (en) 2020-03-25 2024-07-16 Pure Storage, Inc. Replica transitions for file storage
US12124725B2 (en) 2020-03-25 2024-10-22 Pure Storage, Inc. Managing host mappings for replication endpoints
US11321006B1 (en) 2020-03-25 2022-05-03 Pure Storage, Inc. Data loss prevention during transitions from a replication source
US11630598B1 (en) 2020-04-06 2023-04-18 Pure Storage, Inc. Scheduling data replication operations
US11301152B1 (en) 2020-04-06 2022-04-12 Pure Storage, Inc. Intelligently moving data between storage systems
US11494267B2 (en) 2020-04-14 2022-11-08 Pure Storage, Inc. Continuous value data redundancy
US11921670B1 (en) 2020-04-20 2024-03-05 Pure Storage, Inc. Multivariate data backup retention policies
US12131056B2 (en) 2020-05-08 2024-10-29 Pure Storage, Inc. Providing data management as-a-service
US11431488B1 (en) 2020-06-08 2022-08-30 Pure Storage, Inc. Protecting local key generation using a remote key management service
US11349917B2 (en) 2020-07-23 2022-05-31 Pure Storage, Inc. Replication handling among distinct networks
US11442652B1 (en) 2020-07-23 2022-09-13 Pure Storage, Inc. Replication handling during storage system transportation
CN114063887A (zh) * 2020-07-31 2022-02-18 深圳市中兴微电子技术有限公司 写入及读取方法、处理器芯片、存储介质和电子设备
US12079222B1 (en) 2020-09-04 2024-09-03 Pure Storage, Inc. Enabling data portability between systems
US12131044B2 (en) 2020-09-04 2024-10-29 Pure Storage, Inc. Intelligent application placement in a hybrid infrastructure
US11960754B2 (en) 2020-12-30 2024-04-16 Micron Technology, Inc. Memory sub-system memory bank search component
US11397545B1 (en) 2021-01-20 2022-07-26 Pure Storage, Inc. Emulating persistent reservations in a cloud-based storage system
US11853285B1 (en) 2021-01-22 2023-12-26 Pure Storage, Inc. Blockchain logging of volume-level events in a storage system
US12086649B2 (en) 2021-05-12 2024-09-10 Pure Storage, Inc. Rebalancing in a fleet of storage systems using data science
CN112988081B (zh) * 2021-05-17 2021-08-17 浙江正泰仪器仪表有限责任公司 一种电量数据存储、抄读方法
US11816129B2 (en) 2021-06-22 2023-11-14 Pure Storage, Inc. Generating datasets using approximate baselines
US11893263B2 (en) 2021-10-29 2024-02-06 Pure Storage, Inc. Coordinated checkpoints among storage systems implementing checkpoint-based replication
CN113946469B (zh) * 2021-10-29 2024-05-24 苏州浪潮智能科技有限公司 一种固态硬盘的数据纠错处理方法及装置
US11714723B2 (en) 2021-10-29 2023-08-01 Pure Storage, Inc. Coordinated snapshots for data stored across distinct storage environments
US11914867B2 (en) 2021-10-29 2024-02-27 Pure Storage, Inc. Coordinated snapshots among storage systems implementing a promotion/demotion model
CN114153648B (zh) * 2021-12-03 2022-09-16 海光信息技术股份有限公司 数据读取、写入方法及装置、软错误处理系统
TWI764856B (zh) 2021-12-13 2022-05-11 慧榮科技股份有限公司 記憶體控制器與資料處理方法
US11922052B2 (en) 2021-12-15 2024-03-05 Pure Storage, Inc. Managing links between storage objects
US11847071B2 (en) 2021-12-30 2023-12-19 Pure Storage, Inc. Enabling communication between a single-port device and multiple storage system controllers
US12001300B2 (en) 2022-01-04 2024-06-04 Pure Storage, Inc. Assessing protection for storage resources
US11860780B2 (en) 2022-01-28 2024-01-02 Pure Storage, Inc. Storage cache management
US11886295B2 (en) 2022-01-31 2024-01-30 Pure Storage, Inc. Intra-block error correction
CN114968653B (zh) * 2022-07-14 2022-11-11 麒麟软件有限公司 一种zfs文件系统的raidz校验值的确定方法

Family Cites Families (123)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4363094A (en) 1977-12-29 1982-12-07 M/A-COM DDC, Inc. Communications processor
US4791552A (en) * 1986-01-29 1988-12-13 Digital Equipment Corporation Apparatus and method for addressing semiconductor arrays in a main memory unit on consecutive system clock cycles
US4843288A (en) 1988-03-28 1989-06-27 Rigidyne Corporation Phase locked motor control system for multiple disk drive units
US5128810A (en) 1988-08-02 1992-07-07 Cray Research, Inc. Single disk emulation interface for an array of synchronous spindle disk drives
EP0544954B1 (de) 1991-12-05 1996-04-24 International Business Machines Corporation Plattenlaufwerksynchronisierung
EP0547769B1 (de) 1991-12-18 1999-10-13 Sun Microsystems, Inc. Schreibüberlappung mit Verhinderung des Überschreibens
JP3412839B2 (ja) 1992-07-01 2003-06-03 株式会社東芝 不揮発性半導体メモリ装置
ATE222384T1 (de) 1993-06-03 2002-08-15 Network Appliance Inc Verfahren und dateisystem zur zuordnung von datei-blöcken zu speicherplatz in einem raid- plattensystem
US5522031A (en) 1993-06-29 1996-05-28 Digital Equipment Corporation Method and apparatus for the on-line restoration of a disk in a RAID-4 or RAID-5 array with concurrent access by applications
US5623595A (en) * 1994-09-26 1997-04-22 Oracle Corporation Method and apparatus for transparent, real time reconstruction of corrupted data in a redundant array data storage system
DE19540915A1 (de) * 1994-11-10 1996-05-15 Raymond Engineering Redundante Anordnung von Festkörper-Speicherbausteinen
US5799140A (en) 1995-04-21 1998-08-25 International Business Machines Corporation Disk array system and method for storing data
US6728851B1 (en) 1995-07-31 2004-04-27 Lexar Media, Inc. Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices
US6151289A (en) 1996-01-22 2000-11-21 T. Squared G, Inc. Multibyte random access mass storage/memory system
JPH09265357A (ja) 1996-03-27 1997-10-07 Ekushingu:Kk ディスクアレイ装置
US6018778A (en) 1996-05-03 2000-01-25 Netcell Corporation Disk array controller for reading/writing striped data using a single address counter for synchronously transferring data between data ports and buffer memory
JP3976839B2 (ja) 1996-07-09 2007-09-19 株式会社ルネサステクノロジ 不揮発性メモリシステムおよび不揮発性半導体メモリ
US5771346A (en) 1996-10-24 1998-06-23 Micron Quantum Devices, Inc. Apparatus and method for detecting over-programming condition in multistate memory device
US5974503A (en) 1997-04-25 1999-10-26 Emc Corporation Storage and access of continuous media files indexed as lists of raid stripe sets associated with file names
US6226708B1 (en) 1997-08-18 2001-05-01 Texas Instruments Incorporated Method and system for efficiently programming non-volatile memory
JP3618529B2 (ja) 1997-11-04 2005-02-09 富士通株式会社 ディスクアレイ装置
US6009547A (en) 1997-12-03 1999-12-28 International Business Machines Corporation ECC in memory arrays having subsequent insertion of content
US6353895B1 (en) 1998-02-19 2002-03-05 Adaptec, Inc. RAID architecture with two-drive fault tolerance
JP4085478B2 (ja) 1998-07-28 2008-05-14 ソニー株式会社 記憶媒体及び電子機器システム
US6374337B1 (en) * 1998-11-17 2002-04-16 Lexar Media, Inc. Data pipelining method and apparatus for memory control circuit
JP2000173289A (ja) 1998-12-10 2000-06-23 Toshiba Corp エラー訂正可能なフラッシュメモリシステム
US6205571B1 (en) 1998-12-29 2001-03-20 International Business Machines Corporation X-Y grid tree tuning method
US6321345B1 (en) 1999-03-01 2001-11-20 Seachange Systems, Inc. Slow response in redundant arrays of inexpensive disks
US6484235B1 (en) 1999-05-03 2002-11-19 3Ware, Inc. Methods and systems for dynamically distributing disk array data accesses
US6745363B2 (en) 1999-07-30 2004-06-01 Hewlett-Packard Development Company, Lp Early error detection using ECC
US6425052B1 (en) 1999-10-28 2002-07-23 Sun Microsystems, Inc. Load balancing configuration for storage arrays employing mirroring and striping
JP3573032B2 (ja) 1999-11-09 2004-10-06 日本電気株式会社 ディスクアレイ装置
US6581185B1 (en) * 2000-01-24 2003-06-17 Storage Technology Corporation Apparatus and method for reconstructing data using cross-parity stripes on storage media
US6834326B1 (en) 2000-02-04 2004-12-21 3Com Corporation RAID method and device with network protocol between controller and storage devices
US6851026B1 (en) * 2000-07-28 2005-02-01 Micron Technology, Inc. Synchronous flash memory with concurrent write and read operation
US8281022B1 (en) 2000-06-30 2012-10-02 Emc Corporation Method and apparatus for implementing high-performance, scaleable data processing and storage systems
US6883044B1 (en) * 2000-07-28 2005-04-19 Micron Technology, Inc. Synchronous flash memory with simultaneous access to one or more banks
GB0022131D0 (en) * 2000-09-09 2000-10-25 Ibm Data sorting in information storage systems
GB0025226D0 (en) 2000-10-14 2000-11-29 Ibm Data storage system and method of storing data
EP1204027A2 (de) 2000-11-02 2002-05-08 Matsushita Electric Industrial Co., Ltd. On-line Wiederherstellungsverfahren und -gerät
US6813688B2 (en) 2000-12-04 2004-11-02 Sun Microsystems, Inc. System and method for efficient data mirroring in a pair of storage devices
US6973484B1 (en) * 2000-12-29 2005-12-06 3Pardata, Inc. Method of communicating data in an interconnect system
US6763424B2 (en) 2001-01-19 2004-07-13 Sandisk Corporation Partial block data programming and reading operations in a non-volatile memory
US6862692B2 (en) * 2001-01-29 2005-03-01 Adaptec, Inc. Dynamic redistribution of parity groups
US6820152B2 (en) * 2001-04-25 2004-11-16 Matsushita Electric Industrial Co., Ltd. Memory control device and LSI
JP2003076498A (ja) 2001-09-05 2003-03-14 Hitachi Ltd ディスク記憶装置
US6845465B2 (en) * 2001-09-17 2005-01-18 Sun Microsystems, Inc. Method and system for leveraging spares in a data storage system including a plurality of disk drives
US6938133B2 (en) 2001-09-28 2005-08-30 Hewlett-Packard Development Company, L.P. Memory latency and bandwidth optimizations
GB0123416D0 (en) * 2001-09-28 2001-11-21 Memquest Ltd Non-volatile memory control
US20030084397A1 (en) * 2001-10-31 2003-05-01 Exanet Co. Apparatus and method for a distributed raid
US6760807B2 (en) 2001-11-14 2004-07-06 International Business Machines Corporation System, apparatus and method providing adaptive write policy for disk array controllers
US6785771B2 (en) 2001-12-04 2004-08-31 International Business Machines Corporation Method, system, and program for destaging data in cache
JP3967121B2 (ja) 2001-12-11 2007-08-29 株式会社ルネサステクノロジ ファイルシステム、ファイルシステム制御方法およびファイルシステムを制御するためのプログラム
US7640484B2 (en) * 2001-12-28 2009-12-29 Netapp, Inc. Triple parity technique for enabling efficient recovery from triple failures in a storage array
US6871257B2 (en) 2002-02-22 2005-03-22 Sandisk Corporation Pipelined parallel programming operation in a non-volatile memory system
WO2003085677A1 (fr) * 2002-04-05 2003-10-16 Renesas Technology Corp. Memoire non volatile
US20030208511A1 (en) 2002-05-02 2003-11-06 Earl Leroy D. Database replication system
US6789165B2 (en) 2002-05-10 2004-09-07 International Business Machines Corporation Data storage array method and system
US7149857B2 (en) 2002-05-14 2006-12-12 Micron Technology, Inc. Out of order DRAM sequencer
US7734867B1 (en) * 2002-05-17 2010-06-08 Hewlett-Packard Development Company, L.P. Data storage using disk drives in accordance with a schedule of operations
EP1523711A1 (de) * 2002-06-19 2005-04-20 Tokyo Electron Device Limited Speicherbaustein, speicherverwaltungsverfahren und programm
US7191304B1 (en) * 2002-09-06 2007-03-13 3Pardata, Inc. Efficient and reliable virtual volume mapping
US20040153902A1 (en) 2003-01-21 2004-08-05 Nexflash Technologies, Inc. Serial flash integrated circuit having error detection and correction
US7143305B2 (en) * 2003-06-25 2006-11-28 International Business Machines Corporation Using redundant spares to reduce storage device array rebuild time
US7007115B2 (en) * 2003-07-18 2006-02-28 Intel Corporation Removing lane-to-lane skew
US7191283B2 (en) * 2003-08-21 2007-03-13 International Business Machines Corporation Grouping of storage media based on parameters associated with the storage media
JP4437650B2 (ja) * 2003-08-25 2010-03-24 株式会社日立製作所 ストレージシステム
US7149950B2 (en) 2003-09-12 2006-12-12 Hewlett-Packard Development Company, L.P. Assisted memory device for reading and writing single and multiple units of data
US7310703B2 (en) 2003-10-23 2007-12-18 Hewlett-Packard Development Company, L.P. Methods of reading and writing data
JP4493321B2 (ja) * 2003-11-19 2010-06-30 株式会社日立製作所 ディスクアレイ装置及びデータ退避方法
JP4486348B2 (ja) * 2003-11-26 2010-06-23 株式会社日立製作所 ドライブの稼働時間を抑止するディスクアレイ
US20090204872A1 (en) * 2003-12-02 2009-08-13 Super Talent Electronics Inc. Command Queuing Smart Storage Transfer Manager for Striping Data to Raw-NAND Flash Modules
US7913148B2 (en) 2004-03-12 2011-03-22 Nvidia Corporation Disk controller methods and apparatus with improved striping, redundancy operations and interfaces
US7203889B2 (en) 2004-04-01 2007-04-10 Intel Corporation Error correction for memory
US7213103B2 (en) 2004-04-22 2007-05-01 Apple Inc. Accessing data storage systems without waiting for read errors
US20050246362A1 (en) 2004-05-03 2005-11-03 Borland Devin P System and method for dynamci log compression in a file system
US7093157B2 (en) * 2004-06-17 2006-08-15 International Business Machines Corporation Method and system for autonomic protection against data strip loss
US7366852B2 (en) 2004-07-29 2008-04-29 Infortrend Technology, Inc. Method for improving data reading performance and storage system for performing the same
US7418560B2 (en) * 2004-09-23 2008-08-26 Sap Ag Centralized cache storage for runtime systems
US7392458B2 (en) * 2004-11-19 2008-06-24 International Business Machines Corporation Method and system for enhanced error identification with disk array parity checking
JP2006171957A (ja) * 2004-12-14 2006-06-29 Fujitsu Ltd ストレージ制御装置および方法
US7433998B2 (en) 2005-01-14 2008-10-07 Dell Products L.P. System and method for implementing self-describing RAID configurations
CN101507145B (zh) 2005-01-21 2013-05-29 Rmi公司 执行不同路由信道级联的系统和方法
US20060195657A1 (en) 2005-02-28 2006-08-31 Infrant Technologies, Inc. Expandable RAID method and device
JP2006285889A (ja) 2005-04-05 2006-10-19 Sony Corp データ記憶装置、再構築制御装置、再構築制御方法、プログラム及び記憶媒体
US7512862B1 (en) 2005-04-13 2009-03-31 Network Appliance, Inc. Compression of data for protection
US8200887B2 (en) * 2007-03-29 2012-06-12 Violin Memory, Inc. Memory management system and method
JP2008537265A (ja) 2005-04-21 2008-09-11 ヴァイオリン メモリー インコーポレイテッド 相互接続システム
US8452929B2 (en) * 2005-04-21 2013-05-28 Violin Memory Inc. Method and system for storage of data in non-volatile media
US7752381B2 (en) 2005-05-24 2010-07-06 Micron Technology, Inc. Version based non-volatile memory translation layer
US7984084B2 (en) 2005-08-03 2011-07-19 SanDisk Technologies, Inc. Non-volatile memory with scheduled reclaim operations
JP2007072988A (ja) * 2005-09-09 2007-03-22 Hitachi Ltd ディスクアレイ装置及びデータ移動方法並びにプログラム
JP4745169B2 (ja) 2005-09-16 2011-08-10 株式会社東芝 半導体記憶装置
JP4817783B2 (ja) 2005-09-30 2011-11-16 富士通株式会社 Raidシステム及びそのリビルド/コピーバック処理方法
US9047344B2 (en) 2005-10-17 2015-06-02 International Business Machines Corporation Guaranteeing data and metadata referential integrity in content management archival solutions
US7783845B2 (en) 2005-11-14 2010-08-24 Sandisk Corporation Structures for the management of erase operations in non-volatile memories
US20070162516A1 (en) 2005-12-30 2007-07-12 Microsoft Corporation Computing asynchronous transaction log replication progress based on file change notifications
US7440331B2 (en) 2006-06-01 2008-10-21 Sandisk Corporation Verify operation for non-volatile storage using different voltages
JP2008015769A (ja) 2006-07-05 2008-01-24 Hitachi Ltd ストレージシステム及び書き込み分散方法
US7555575B2 (en) * 2006-07-27 2009-06-30 Hitachi, Ltd. Method and apparatus for migrating data between storage volumes of different data pattern
US7451265B2 (en) * 2006-08-04 2008-11-11 Sandisk Corporation Non-volatile memory storage systems for phased garbage collection
US20080052446A1 (en) 2006-08-28 2008-02-28 Sandisk Il Ltd. Logical super block mapping for NAND flash memory
US20080059869A1 (en) 2006-09-01 2008-03-06 The Regents Of The University Of California Low cost, high performance error detection and correction
US7499317B2 (en) 2006-10-13 2009-03-03 Sandisk Corporation System for partitioned erase and erase verification in a non-volatile memory to compensate for capacitive coupling
US7840612B2 (en) * 2006-10-23 2010-11-23 Research In Motion Limited Methods and apparatus for concurrently executing a garbage collection process during execution of a primary application program
US7822921B2 (en) 2006-10-31 2010-10-26 Netapp, Inc. System and method for optimizing write operations in storage systems
CN101681282A (zh) 2006-12-06 2010-03-24 弗森多系统公司(dba弗森-艾奥) 用于共享的、前端、分布式raid的装置、系统和方法
US7660911B2 (en) * 2006-12-20 2010-02-09 Smart Modular Technologies, Inc. Block-based data striping to flash memory
US7882301B2 (en) 2007-05-09 2011-02-01 Stmicroelectronics S.R.L. Wear leveling in storage devices based on flash memories and related circuit, system, and method
KR100882841B1 (ko) * 2007-06-19 2009-02-10 삼성전자주식회사 읽기 디스터번스로 인한 비트 에러를 검출할 수 있는메모리 시스템 및 그것의 읽기 방법
US20080320366A1 (en) 2007-06-25 2008-12-25 Lin Jason T Methods of reading nonvolatile memory
US8041990B2 (en) 2007-06-28 2011-10-18 International Business Machines Corporation System and method for error correction and detection in a memory system
US7508715B2 (en) 2007-07-03 2009-03-24 Sandisk Corporation Coarse/fine program verification in non-volatile memory using different reference levels for improved sensing
US8024177B2 (en) 2007-09-28 2011-09-20 Cycorp, Inc. Method of transforming natural language expression into formal language representation
US8095763B2 (en) 2007-10-18 2012-01-10 Datadirect Networks, Inc. Method for reducing latency in a raid memory system while maintaining data integrity
US8296498B2 (en) 2007-11-13 2012-10-23 Sandisk Technologies Inc. Method and system for virtual fast access non-volatile RAM
US7688638B2 (en) 2007-12-07 2010-03-30 Sandisk Corporation Faster programming of multi-level non-volatile storage through reduced verify operations
US8621137B2 (en) * 2007-12-27 2013-12-31 Sandisk Enterprise Ip Llc Metadata rebuild in a flash memory controller following a loss of power
US20090172335A1 (en) * 2007-12-31 2009-07-02 Anand Krishnamurthi Kulkarni Flash devices with raid
US20090198952A1 (en) 2008-02-04 2009-08-06 Apple Inc Memory Mapping Architecture
US8219781B2 (en) 2008-11-06 2012-07-10 Silicon Motion Inc. Method for managing a memory apparatus, and associated memory apparatus thereof
US7818525B1 (en) * 2009-08-12 2010-10-19 Texas Memory Systems, Inc. Efficient reduction of read disturb errors in NAND FLASH memory
US8214580B2 (en) * 2009-10-23 2012-07-03 International Business Machines Corporation Solid state drive with adjustable drive life and capacity

Also Published As

Publication number Publication date
US20080250270A1 (en) 2008-10-09
KR20090129416A (ko) 2009-12-16
CN101681305A (zh) 2010-03-24
EP2860635A1 (de) 2015-04-15
DE202008018573U1 (de) 2015-12-03
US20150242271A1 (en) 2015-08-27
US9311182B2 (en) 2016-04-12
EP2860635B1 (de) 2016-11-02
US20150178157A1 (en) 2015-06-25
WO2008121306A9 (en) 2009-04-09
WO2008121306A2 (en) 2008-10-09
US9081713B1 (en) 2015-07-14
US20180341408A1 (en) 2018-11-29
US20120221922A1 (en) 2012-08-30
EP2132636A2 (de) 2009-12-16
KR101502519B1 (ko) 2015-03-13
CN102346694B (zh) 2015-02-11
KR101448192B1 (ko) 2014-10-07
KR20140106752A (ko) 2014-09-03
CN101681305B (zh) 2013-10-30
US10761766B2 (en) 2020-09-01
US8200887B2 (en) 2012-06-12
EP2132636B1 (de) 2014-10-29
US10157016B2 (en) 2018-12-18
US20160246509A1 (en) 2016-08-25
US9189334B2 (en) 2015-11-17
CN102346694A (zh) 2012-02-08

Similar Documents

Publication Publication Date Title
DE202008018572U1 (de) Speichersystem
US10372366B2 (en) Memory system with multiple striping of RAID groups and method for performing the same
DE112010003345B4 (de) Datenspeichersystem und Verfahren für das Betreiben eines Datenspeichersystems
KR101411566B1 (ko) Raid 그룹의 여러 스트라이핑을 갖는 메모리 및 그 수행방법
DE112019000213T5 (de) Speichersysteme mit Peer-Datenwiederherstellung
DE112016005869T5 (de) Vorausschauende Arbeitsspeicherinstandhaltung
US11960743B2 (en) Memory system with multiple striping of RAID groups and method for performing the same
DE112019000201T5 (de) Speichersysteme mit peer-datenbereinigung
US20040123032A1 (en) Method for storing integrity metadata in redundant data layouts
DE112014005570T5 (de) Deaktivieren von Seiten in einem Nand-Flash-Speicher-System

Legal Events

Date Code Title Description
R081 Change of applicant/patentee

Owner name: VIOLIN MEMORY, INC., SANTA CLARA, US

Free format text: FORMER OWNER: VIOLIN MEMORY, INC., ISELIN, N.J., US

R082 Change of representative

Representative=s name: SCHMITT-NILSON SCHRAUD WAIBEL WOHLFROM PATENTA, DE

Representative=s name: KSNH PATENTANWAELTE KLUNKER/SCHMITT-NILSON/HIR, DE

R151 Utility model maintained after payment of second maintenance fee after six years
R207 Utility model specification
R152 Utility model maintained after payment of third maintenance fee after eight years
R082 Change of representative

Representative=s name: SCHMITT-NILSON SCHRAUD WAIBEL WOHLFROM PATENTA, DE

R071 Expiry of right