DE10236179A1 - Speichersystem und Verfahren zur Verwendung desselben - Google Patents

Speichersystem und Verfahren zur Verwendung desselben

Info

Publication number
DE10236179A1
DE10236179A1 DE10236179A DE10236179A DE10236179A1 DE 10236179 A1 DE10236179 A1 DE 10236179A1 DE 10236179 A DE10236179 A DE 10236179A DE 10236179 A DE10236179 A DE 10236179A DE 10236179 A1 DE10236179 A1 DE 10236179A1
Authority
DE
Germany
Prior art keywords
memory
segments
parity
segment
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
DE10236179A
Other languages
English (en)
Inventor
John K Walton
Michael Bermingham
Christopher S Maclellan
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.)
EMC Corp
Original Assignee
EMC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=25454074&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=DE10236179(A1) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by EMC Corp filed Critical EMC Corp
Publication of DE10236179A1 publication Critical patent/DE10236179A1/de
Withdrawn legal-status Critical Current

Links

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/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
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/1009Cache, i.e. caches used in RAID system with parity

Abstract

Es werden ein Speichersystem und ein Verfahren zur Verwendung desselben vorgesehen. Eine Ausführungsform des Systems enthält einen Halbleiterspeicher, der so konfiguriert ist, daß er eine Vielzahl von Speichersegmenten enthält. Die Speichersegmente sind zu Gruppen gruppiert: Jede Gruppe enthält N jeweilige Speichersegmente, wobei N eine Ganzzahl ist. In jeder jeweiligen Gruppe der Speichersegmente enthalten die N jeweiligen Speichersegmente jeweilige Datensegmente und ein jeweiliges Paritätssegment. Das jeweilige Paritätssegment in der jeweiligen Gruppe speichert ebenso in jeder der jeweiligen Gruppe von Speichersegmenten einen jeweiligen Datenwert P, der durch ein logisches Exklusiv-Oder-Verknüpfen von jeweiligen Datenwerten berechnet wird, die in den jeweiligen Datensegmenten in der jeweiligen Gruppe gespeichert sind.

Description

    Gebiet der Erfindung
  • Die vorliegende Erfindung betrifft ein Speichersystem (und ein Verfahren zum Verwenden desselben), wobei ein auf Parität basierendes Fehlertoleranzverfahren benutzt wird.
  • Hintergrund der Erfindung
  • Netzwerk-Computersysteme enthalten im allgemeinen eine Vielzahl von geographisch getrennten oder verteilten Computerknoten, die so konfiguriert sind, daß sie miteinander über ein oder mehrere Netzwerk-Kommunikationsmedien, die miteinander verbunden sind, kommunizieren können. Ein herkömmlicher Typ von Netzwerk-Computersystem enthält ein Netzwerk-Speichersubsystem, das so konfiguriert ist, daß es eine zentrale Stelle in dem Netzwerk vorsieht, in dem Daten gespeichert und wiedergewonnen bzw. abgerufen werden. Bei der Verwendung eines derartigen Speichersubsystems können vorteilhafterweise viele der Datenspeichermanagement- und steuerungsfunktionen des Netzwerks in dem Subsystem zusammengefaßt sein, anstelle unter den Netzwerkknoten verteilt zu sein.
  • Eine Art von herkömmlichen Netzwerk-Speichersubsystemen, das von dem Anmelder der vorliegenden Anmeldung (im folgenden "Anmelder") unter dem Markennamen Symmetrix (im folgenden als das "herkömmliche Speichersystem des Anmelders" bezeichnet) hergestellt und verkauft wird, enthält eine Vielzahl von Festplattenspeichergeräten, die als einer oder mehrere redundante Arrays von unabhängigen (oder billigen) Platten (RAID) konfiguriert sind. Die Festplattengeräte werden durch. Festplatten-Controller (im allgemeinen als "back end"-Controller/Direktoren) gesteuert, die Benutzerdaten in ein gemeinsames Cache-Speicherbetriebsmittel (shared cache memory resource) in dem Subsystem speichern bzw. daraus die Benutzerdaten wiedergewinnen bzw. abrufen. Eine Vielzahl von Host-Controllern (im allgemeinen als "front end"- Controller/Direktoren bezeichnet) können ebenso Benutzerdaten in das gemeinsame Cache-Speicherbetriebsmittel speichern bzw. daraus abrufen. Die Festplatten-Controller sind mit jeweiligen Festplatten-Adaptern gekoppelt, die unter anderem die Festplatten- Controller an die Festplatten-Speichergeräte anschließen bzw. verbinden. In ähnlicher Weise sind die Host-Controller mit den jeweiligen Host-Channel-Adapter gekoppelt, die unter anderem die Host-Controller über Channel-Eingangs/Ausgangs-"I/O"-Ports an die Netzwerk-Kommunikationskanäle anschließt (z. B. SCSI, Enterprise Systems Connection (ESCON) und/oder auf Fibre Channel (FC) basierende Kommunikationskanäle), die das Speichersubsystem an die Computerknoten in den zu den Subsystem externen Computernetzwerk (im allgemeinen als "Host"-Computerknoten oder "Hosts" bezeichnet) koppelt.
  • Bei dem herkömmlichen Speichersystem des Anmelders kann das gemeinsame Cache-Speicherbetriebsmittel eine Vielzahl von Speicherplatinen aufweisen, die mit einer Rückwandplatine in dem Speichersystem gekoppelt sind. Das Cache-Speicherbetriebsmittel ist im Gegensatz zu den Festplatten-Speichervorrichtungen, die ebenso in dem herkömmlichen Speichersystem des Anmelders vorhanden sind, ein Halbleiterspeicher und jede der Speicherplatinen, die die Cache-Speicherbetriebsmittel aufweisen, kann unter anderem mit relativ schnellen synchronen dynamischen Schreib-Lese- Speichern (SDRAM) aus integrierten Schaltungsvorrichtungen (IC-Schaltungen) zum Speichern der Benutzerdaten bestückt sein. Das gemeinsame Cache-Speicherbetriebsmittel kann in eine Vielzahl von Cache-Speicherbereichen segmentiert sein. Jeder der Bereiche kann wiederum in eine Vielzahl von Speichersegmenten segmentiert sein.
  • Um die Fehlertoleranz des Cache-Speicherbetriebsmittel zu verbessern, hat man vorgeschlagen, das Cach-Speicherbetriebsmittel so zu konfigurieren, daß ein herkömmliches "Dual-Write"-Fehlertoleranzschema implementiert ist. Gemäß diesem Schema ist das Cache-Speicherbetriebsmittel in zwei Hälften partitioniert: eine erste Hälfte bzw. eine zweite Hälfte, wobei die gesamte Benutzerdatenmenge zu gleichen Teilen zwischen den zwei Hälften aufgeteilt ist; jedesmal, wenn Benutzerdaten in das Cache-Speicherbetriebsmittel (z. B. durch einen Host-Controller oder einen Festplattencontroller) geschrieben werden, wird eine Kopie dieser Daten an einen Abschnitt der ersten Hälfte des Cache-Speichers geschrieben, und ein Duplikat (d. h. eine redundante Kopie) der Benutzerdaten wird an einen entsprechenden Abschnitt der zweiten Hälfte des Cache-Speichers geschrieben. Gemäß diesem Schema spiegeln somit die in die erste Hälfte des Cache-Speichers gespeicherten Daten exakt die in der zweiten Hälfte des Cache-Speichers gespeicherten Daten wieder. Solange kein Fehler in einem Abschnitt des Cache-Speicherbetriebsmittel auftritt, können alle Anfragen zum Auslesen von Benutzerdaten aus dem Betriebsmittel aus der ersten Hälfte des Cache- Speichers wieder abgerufen werden. Falls jedoch ein Abschnitt der ersten Hälfte des Cache-Speichers ausfällt und die in diesem ausgefallenen Abschnitt gespeicherten Benutzerdaten ausgelesen werden sollen, können statt dessen die Benutzerdaten aus dem Abschnitt in der zweiten Hälfte des Cache-Speichers ausgelesen werden, der dem ausgefallenen Abschnitt entspricht (d. h. damit korrespondiert).
  • Bei diesem vorgeschlagenen Fehlertoleranzverfahren ist jedoch höchstens die Hälfte des gesamten Benutzerdatenplatzes in dem Cache-Speicherbetriebsmittel tatsächlich für ein Speichern von Benutzerdaten verfügbar, da die zweite Hälfte des Cache- Speicherbetriebsmittel ausschließlich zum Speichern einer redundanten Kopie der Benutzerdaten reserviert ist, die in der ersten Hälfte des Cache-Speicherbetriebsmittel gespeichert sind. Die Größe des Cache-Speicherbetriebsmittel, das tatsächlich zum Speichern von Benutzerdaten verfügbar ist, wird somit unerwünscht verringert. Dementsprechend ist es wünschenswert, ein Cache-Speicherfehlertoleranzverfahren vorzusehen, das es ermöglicht, daß mehr von dem Cache-Speicherbetriebsmittel tatsächlich zum Speichern von Benutzerdaten zur Verfügung steht, als dies bei dem Dual-Write-Verfahren des Stands der Technik möglich ist.
  • Kurzfassung der Erfindung
  • Die vorliegende Erfindung sieht ein Speichersystem und ein Verfahren zur Verwendung desselben vor, das in der Lage ist, die voranstehenden und anderen Nachteile und Hindernisse des Stands der Technik zu überwinden. Bei einer Ausführungsform der vorliegenden Erfindung wird ein Cache-Speichersystem vorgesehen, das vorteilhaft in einem Netzwerk-Datenspeichersystem verwendet werden kann. Das Cache-Speichersystem dieser Ausführungsform enthält eine Vielzahl von Speicherplatinen. Jede dieser Platinen kann eine jeweilige elektrische Schaltungsplatine oder Karte sein. Jede der Speicherplatinen kann eine jeweilige Vielzahl von Halbleiterspeichersegmenten aufweisen, die zusammen den Benutzerdaten-Speicherplatz bilden, und die die jeweiligen Datenwerte speichern. Die Segmente können zu Paritätssätzen oder -gruppen gruppiert werden. Jeder der Paritätssätze oder -gruppen kann eine jeweilige Anzahl von N Speichersegmenten enthalten, wobei N eine beliebige Ganzzahl ist. Abhängig vom Aufbau des Speichersystems kann die Zahl N gleich 4 sein.
  • Die N Speichersegmente in jedem Paritätssatz können ein jeweiliges Paritätssegment und N-1 jeweilige Benutzerdatensegmente enthalten. Die N Segmente in jedem Paritätssatz können unter den Speicherplatinen verteilt werden, so daß keines der Speicherplatinen mehr als ein jeweiliges Speichersegment von jedem jeweiligen Paritätssatz oder -gruppe aufweist. Das heißt, jede Speicherplatine kann höchstens ein einziges jeweiliges Segment für einen vorgegebenen Paritätssatz oder -gruppe aufweisen. Zumindest ein Paritätssatz oder -gruppe (im folgenden "der zumindest eine Paritätssatz") kann ein jeweiliges Paritätssegment enthalten, das einen jeweiligen Datenwert P speichert, der durch Durchführen einer XOR-Verknüpfung (d. h. eine bitweise logische Exklusiv-Oder-Verknüpfung) der jeweiligen Datenwerte berechnet wird, die in dem jeweiligen Datensegmenten des zumindest einen Paritätssatzes gespeichert sind. Falls beispielsweise die Zahl N gleich 4 ist, und die jeweiligen Datenwerte, die in den jeweiligen Datensegmenten in dem zumindest einem Paritätssatz gleich A, B bzw. C sind, dann ist der jeweilige Datenwert P gleich A XOR B XOR C. Alternativ kann jeder jeweilige Paritätssatz oder -gruppe ein jeweiliges Paritätssegment enthalten, das durch eine XOR-Verknüpfung von jeweiligen Datenwerten, die in den jeweiligen Datensegmenten der jeweiligen Paritätssätze oder -gruppen gespeichert sind, berechnet wird.
  • Das Cache-Speichersystem kann einen Steuerungsschaltungsaufbau enthalten, der dazu verwendet wird, die jeweiligen Datenwerte, die in den Segmenten in den zumindest einen Paritätssatz oder -gruppe gespeichert sind, zu verändern. Ein jeweiliger Datenwert, der ursprünglich in einem jeweiligen Datensegment in dem zumindest einem Paritätssatz oder -gruppe gespeichert ist, kann gleich dem Datenwert A sein; ein jeweiliger Datenwert, der ursprünglich in dem jeweiligen Paritätssegment in dem Paritätssatz oder -gruppe gespeichert ist, kann gleich dem Datenwert P sein. Wenn der Steuerungsschaltungsaufbau zum Verändern des Werts A zu einem anderen Wert A' verwendet wird, verändert der Schaltungsaufbau ebenso den jeweiligen Datenwert, der in dem jeweiligen Paritätssegment in dem zumindest einem Paritätssatz gespeichert ist, von dem Wert P zu einem anderen Wert P'. Der Wert P' kann gleich P XOR A XOR A' sein. Der Steuerungsschaltungsaufbau kann so konfiguriert sein, daß diese Veränderungen an den jeweiligen Datenwerten, die in dem jeweiligen Paritätssegment gespeichert sind, und an den einen jeweiligen Datensegment in dem zumindest einem Paritätssatz unter Verwendung von atomaren Operationen gemacht werden.
  • Jede Speicherplatine kann eine jeweilige Vielzahl von Speicherbereichen enthalten. Jeder Speicherbereich kann einen jeweiligen Untersatz an Speichersegmenten enthalten, die in der jeweiligen Speicherplatine oder -karte enthalten sind, die den Speicherbereich aufweisen. Jedes der Speichersegmente, die in dem jeweiligen Speicherbereich enthalten sind, kann einer jeweiligen Basis-Speicheradresse zugeordnet sein, die sich von anderen jeweiligen Basis-Speicheradressen unterscheidet, die anderen Segmenten zugeordnet sind, die in dem jeweiligen Speicherbereich enthalten sind.
  • Bei dieser Ausführungsform der vorliegenden Erfindung kann der Datenwert, der, falls ein Datensegment in einem Paritätssatz ausfällt, in diesem ausgefallenen Datensegment gespeichert war, unter Verwendung der Datenwerte, die in den nichtausgefallenen Datensegmenten gespeichert sind, und dem Paritätssegment in dem Paritätssatz, zu welchem das ausgefallene Datensegment gehört, wiederhergestellt werden. Falls beispielsweise ein gegebener Paritätssatz insgesamt drei Datensegmente und ein Paritätssegment enthält, wobei das ausgefallene Datensegment einen Datenwert A gespeichert hat und die zwei nichtausgefallenen Datensegmente und das Paritätssegment die Werte B, C bzw. P gespeichert haben, dann kann der Datenwert A, der in dem ausgefallenen Datensegment gespeichert war, auf der Grundlage der Folgenden Beziehung wiederhergestellt werden:
    A = P XOR C XOR B,
    wobei angenommen wird, daß P = A XOR B XOR C in Übereinstimmung mit dieser Ausführungsform der vorliegenden Erfindung ist.
  • Im Gegensatz zu einem Speichersystem, das das voranstehend erwähnte herkömmliche Dual-Write-Verfahren verwendet, kann bei dem verbesserten Fehlertoleranz-Speichersystem der vorliegenden Erfindung vorteilhafterweise wesentlich mehr als 50% des gesamten Benutzerdatenspeicherplatzes für ein Speichern von Benutzerdaten verfügbar gemacht werden. Beispielsweise kann bei einem verbesserten fehlertoleranten Cache-Speichersystem, das gemäß der zuvor beschriebenen Ausführungsform der vorliegenden Erfindung hergestellt ist, der maximale Prozentsatz des gesamten Cache-Speichers, der tatsächlich zum Speichern von Benutzerdaten verfügbar gemacht werden kann, durch Einstellen des Wertes von N ausgewählt werden und abhängig von dem gewählten Wert für N wesentlich höher als 50% sein. Falls beispielsweise N gleich 4 ist, dann beträgt dieser maximale Prozentsatz gleich 75%.
  • Diese und andere Merkmale und Vorteile der vorliegenden Erfindung und ihrer zahlreichen Ausführungsformen werden aus der folgenden detaillierten Beschreibung unter Bezugnahme auf die Figuren der Zeichnung vollständig ersichtlich, wobei gleiche Bezugszeichen durchweg gleiche Teile bezeichnen.
  • Kurze Beschreibung der Zeichnungen
  • Fig. 1 zeigt ein schematisches Blockdiagramm eines Datenspeichernetzwerks, das ein Datenspeichersystem enthält, worin eine Ausführungsform der vorliegenden Erfindung vorteilhaft angewendet wird.
  • Fig. 2 zeigt ein schematisches Blockdiagramm, das funktionale Bestandteile des Datenspeichersystems darstellt, das in dem in Fig. 1 gespeicherten Datennetzwerk enthalten ist.
  • Fig. 3 zeigt ein schematisches Blockdiagramm, das funktionale Bestandteile des gemeinsamen Cache-Speicherbetriebsmittel in dem Datenspeichersystem der Fig. 2 darstellt.
  • Fig. 4 zeigt ein schematisches Blockdiagramm, das funktionale Bestandteile einer Speicherplatine darstellt, die in dem gemeinsamen Cache-Speicherbetriebsmittel der Fig. 3 ausgebildet ist.
  • Fig. 5 zeigt ein schematisches Blockdiagramm, um die Beschreibung von Aspekten einer Ausführungsform der vorliegenden Erfindung zu erleichtern.
  • Obwohl die folgende detaillierte Beschreibung unter Bezugnahme auf die veranschaulichenden Ausführungsformen und Verfahren zur Verwendung der vorliegenden Erfindung erstellt worden ist, ist es offensichtlich, daß damit nicht beabsichtigt ist, die vorliegende Erfindung auf diese veranschaulichenden Ausführungsformen und Verwendungsverfahren zu beschränken. Vielmehr erschließen sich dem Fachmann viele Alternativen, Modifikationen und Äquivalente dieser veranschaulichenden Ausführungsformen und Verwendungsmethoden. Obwohl die vorliegende Erfindung beispielsweise als vorteilhafte in Verbindung mit einem Cache-Speichersystem in einem Netzwerk- Datenspeichersubsystem beschrieben wird, kann die vorliegende Erfindung auch in Verbindung mit anderen Arten von Speichersystemen verwendet werden. Dementsprechend soll der Umfang der vorliegenden Erfindung als so groß angesehen werden, daß all diese Alternativen, Modifikationen und Äquivalente, soweit sie die Fachmann ersichtlich sind, umfaßt werden, und sollte als lediglich durch die im folgenden angetuzten Ansprüche definiert betrachtet werden.
  • DETAILLIERTE BESCHREIBUNG VERANSCHAULICHENDER AUSFÜHRUNGSFORMEN
  • Gemäß Fig. 1-5 werden veranschaulichende Ausführungsformen der vorliegenden Erfindung beschrieben. Fig. 1 zeigt ein Blockdiagramm, das ein Datenspeichernetzwerk 110 darstellt, das ein Datenspeichersystem 112 enthält, worin eine Ausführungsform der vorliegenden Erfindung vorteilhaft angewendet wird. Das System 112 ist über Kommunikationsverbindungen 114, 116, 118, 120, . . . 122 mit jeweiligen Host- Computerknoten 124, 126, 128, 130, . . . 132 gekoppelt. Jede dieser Kommunikationsverbindungen 114, 116, 118, 120, . . . 122 kann für die Kommunikation unter Verwendung eines jeweiligen herkömmlichen Netzwerk-Kommunikationsprotokolls (z. B. FC, ESCON, SCSI, Fibre Connectivity, usw.) konfiguriert sein. Host-Knoten 124, 126, 128, 130, . . . 132 sind ebenso über zusätzliche jeweilige herkömmliche Netzwerk-Kommunikationsverbindungen 134, 136, 138, 140, . . . 142 mit einem externen Netzwerk 144 gekoppelt. Das Netzwerk 144 kann ein oder mehrere Nahbereichs- und/oder Fernbereichs- Netzwerke auf der Basis des Transmission Control Protocol/Internet Protocol (TCP/IP) und/oder auf Ethernet basierend aufweisen. Das Netzwerk 144 ist ebenso mit einem oder mehreren Client-Computerknoten (die gemeinsam oder einzeln durch Bezugszeichen 146 in Fig. 1 bezeichnet sind) über Netzwerk-Kommunikationsverbindungen (gemeinsam mit dem Bezugszeichen 145 in Fig. 1 bezeichnet) gekoppelt. Das Netzwerk- Kommunikationsprotokoll oder -protokolle, die von den Verbindungen 134, 136, 138, 140, . . . 142 und 145 verwendet werden, werden so ausgewählt, daß sichergestellt ist, daß die Knoten 124, 126, 128, 130, . . . 132 Daten und Befehle mit dem Knoten 146 über das Netzwerk 144 austauschen können.
  • Host-Knoten 124, 126, 128, 130, . . . 132 können irgendeine von den zahlreichen bekannten Arten von Computerknoten sein, wie beispielsweise Servercomputer, Workstacions oder Mainframes. Im allgemeinen weist jeder der Host-Knoten 124, 126, 128, 130, . . . 132 und Client-Knoten 146 einen jeweiligen computerlesbaren Speicher (nicht gezeigt) zum Speichern von Softwareprogrammen und damit verbundenen Datenstruk- turen und zum Ausführen der Funktionen und Operationen, die durch diese Knoten 124, 126, 128, 130, . . . 132 und 146 ausgeführt werden, auf. Außerdem enthält jeder der Knoten 124, 126, 128, 130, . . . 132 und 146 ferner einen oder mehrere jeweilige Prozessoren (nicht gezeigt) und Netzwerk-Kommunikationsvorrichtungen zum Ausführen dieser Softwareprogramme, Manipulieren dieser Datenstrukturen und zum Ermöglichen und Erleichtern des Austausches von Daten und Befehlen unter den Host- Knoten 124, 126, 128, 130, . . . 132 und Client-Knoten 146 über die Kommunikationsverbindungen 134, 136, 138, 140, . . . 142, dem Netzwerk 144 und den Verbindungen 145. Die Ausführung der Softwareprogramme durch die Prozessoren und die Netzwerk-Kommunikationsvorrichtungen, die in den Hosts 124, 126, 128, 130, . . . 132 enthalten sind, ermöglicht und erleichtert den Austausch von Daten und Befehlen unter den Knoten 124, 126, 128, 130, . . . 132 und dem System 112 über die Kommunikationsverbindungen 114, 116, 118, 120, . . . 122, in der nachstehend beschriebenen Art und Weise.
  • Fig. 2 zeigt ein schematisches Blockdiagramm von funktionalen Bestandteilen des Systems 112. Das System 112 enthält eine Vielzahl von Host-Adaptern 26 . . . 28, eine Vielzahl von Host-Controllem 22 . . . 24, ein Nachrichten-Netzwerk bzw. -System (message network) 14, ein gemeinsames Cache-Speicherbetriebsmittel (shared cache memory resource) 16, eine Vielzahl von Festplatten-Controllern 18 . . . 20, eine Vielzahl von Festplatten-Adaptern 30 . . . 32 und einen Satz von Festplattenspeichervorrichtungen 34 . . . 36. In dem System 112 sind die Host-Controller und Festplatten-Controller mit individuellen Speicherplatinen (memory boards; siehe Fig. 3 und 4), die in dem Cache-Speicher 16 ausgebildet sind, über ein Punkt-Zu-Punkt-Datentransfernetzwerksystem gekoppelt, das eine Vielzahl von Netzwerkverbindungen aufweist. Zum Beispiel sind die Host-Controller 22 und 24 mit dem Cache-Speicherbetriebsmittel 16 über eine jeweilige Vielzahl von Punkt-Zu-Punkt-Datentransfernetzwerkverbindungen 42 und 40, die in dem Punkt-Zu-Punkt-Datentransfernetzwerksystem enthalten sind, gekoppelt. In ähnlicher Weise sind die Festplatten-Controller 18 und 20 mit dem Cache-Speicherbetriebsmittel 16 über eine jeweilige Vielzahl von Punkt-Zu-Punkt-Datentransfernetzwerkverbindungen 44 und 46, die in dem Punkt-Zu-Punkt-Datentransfernetzwerksystem enthalten sind, gekoppelt.
  • Obgleich dies nicht explizit in den Figuren dargestellt ist, kann bei dieser Ausführungsform des Systems 112 abhängig von dem jeweiligen Kommunikationsprotokoll, das bei den jeweiligen Verbindungen 114, 116, 118, 120, . . . 122 verwendet wird, jeder Host-Adapter 26 . . . 28 mit einer Vielzahl von jeweiligen Host-Knoten gekoppelt sein. Falls beispielsweise bei dieser Ausführungsform des Systems 112 die Verbindungen 114, 116, 118, 120 FC-Kommunikationsverbindungen sind, kann der Adapter 26 mit den Host-Knoten 124, 126, 128, 130 über Verbindungen 114, 116, 118 bzw. 120 gekoppelt sein. Es ist zu beachten, daß die Anzahl der Host-Knoten mit welchen jeder Host- Adapter 26 . . . 28 gekoppelt werden kann abhängig von den einzelnen Konfigurationen der Host-Adapter 26 . . . 28 und den Host-Controllem 22 . . . 24 variieren kann, ohne von dieser Ausführungsform der vorliegenden Erfindung grundsätzlich abzuweichen. Bei dem Netzwerk 110 sieht der Host-Adapter 26 Netzwerk-Kommunikationsschnittstellen vor, über welche der Host-Controller 24 Daten und Befehle über die Verbindungen 114, 116, 118, 120 mit den Host-Knoten 124, 126, 128 bzw. 130 austauschen kann.
  • Jeder Host-Controller 22 . . . 24 kann eine einzige jeweilige Schaltungsplatte oder Leiterplatine aufweisen. Ähnlich kann jeder Festplatten-Controller 18 . . . 20 eine einzige jeweilige Schaltungsplatte oder Leiterplatine aufweisen. Jeder Festplatten-Adapter 30 . . . 32 kann eine einzige jeweilige Schalterplatte oder Leiterplatine aufweisen. In ähnlicher Weise kann jeder Host-Adapter 26 . . . 28 eine einzige jeweilige Schaltplatte oder Leiterplatine aufweisen. Jeder Host-Controller 22 . . . 24 kann elektrisch und mechanisch mit einem jeweiligen Host-Adapter 28 . . . bzw. 26 über ein jeweiliges elektromechanisches Kopplungspaarsystem gekoppelt sein.
  • Der Festplatten-Adapter 32 ist elektrisch mit einem Satz aus Massenspeichervorrichtungen 34 gekoppelt und schließt die Festplatten-Controller 20 an solche Vorrichtungen 34 an, um so den Austausch von Daten und Befehlen zwischen den Prozessoren (nicht gezeigt) in den Festplatten-Controllern 20 und den Speichervorrichtungen 34 zu ermöglichen. Der Festplatten-Adapter 30 ist elektrisch mit einem Satz aus Massenspeichervorrichtungen 36 gekoppelt und schließt den Festplatten-Controller 18 an solche Vorrichtungen 36 an, um so den Austausch von Daten und Befehlen zwischen den Prozessoren (nicht gezeigt) in dem Festplatten-Controller 18 und den Speichervorrichtungen 36 zu ermöglichen. Die Vorrichtungen 34, 36 können als redundante Arrays aus magnetischen und/oder optischen Festplatten-Massenspeichervorrichtungen konfiguriert werden.
  • Es ist zu beachten, daß die jeweilige Anzahl der jeweiligen funktionalen Bestandteile des Systems 112, die in Fig. 2 gezeigt sind, lediglich zu Darstellungszwecken gewählt worden sind, und diese abhängig von einer bestimmten Anwendung, für das das System 112 gedacht ist, variieren kann ohne grundsätzlich von der vorliegenden Erfindung abzuweichen. Es kann jedoch wünschenswert sein, es dem System 112 zu ermöglichen, daß es zu einer Ausfallsicherung durch Fehlertoleranz für den Fehlerfall eines bestimmten Bestandteils in dem System 112 in der Lage ist. Somit kann es bei einer praktischen Umsetzung des Systems 112 wünschenswert sein, daß das System 112 redundante funktionale Bestandteile und einen herkömmlichen Mechanismus zum Sicherstellen enthält, daß der Fehler bzw. Ausfall irgendeines gegebenen funktionalen Bestandteils erfaßt wird und der Betrieb des ausgefallenen funktionalen Bestandteils durch einen jeweiligen redundanten funktionalen Bestandteil des gleichen Typs, wie das ausgefallene Bestandteil, übernommen wird.
  • Im folgenden wird die allgemeine Art und Weise, mit welcher Daten aus dem System 112 abgerufen bzw. gespeichert werden, beschrieben. Beim Betrieb des Netzwerks 110 wird im allgemeinen ein Client-Knoten 146 eine Anfrage zum Abrufen bzw. Auelesen der Daten aus einem Host-Knoten (z. B. Knoten 124) über eine der mit dem Client-Knoten 146 assoziierten Verbindungen 145, das Netzwerk 144 und der mit dem Host-Knoten 124 assoziierten Verbindung 134 übermittelt. Falls Daten angefordert werden, die nicht lokal in dem Host-Knoten 124 gespeichert sind, sondern statt dessen in dem Datenspeichersystem 112 gespeichert sind, kann der Host-Knoten 124 die Übermittlung der Daten von dem System 112 über die mit dem Knoten 124 assoziierte FC-Verbindung 114 ist anfordern.
  • Die über eine Verbindung 114 übermittelte Anforderung wird ursprünglich durch den Host-Adapter 26, der mit der Verbindung 114 gekoppelt ist, empfangen. Der mit der Verbindung 114 assoziierte Host-Adapter 26 kann anschließend die Anforderung zu dem Host-Controller 24, mit welchem er gekoppelt ist, übermitteln. In Reaktion auf die ihm übermittelte Anforderung kann der Host-Controller 24 anschließend aus den Datenspeicher-Managementtabellen (nicht gezeigt), die in dem Cache 16 gespeichert sind, feststellen, ob die angeforderten Daten in dem Cache gegenwärtig vorhanden sind; falls die angeforderten Daten gegenwärtig nicht in dem Cache 16 vorhanden sind, kann der Host-Controller 24 eine Nachricht über das Nachrichtennetzwerk 14 zu dem Festplatten- Controller (beispielsweise Controller 18), der mit den Speichervorrichtungen assoziiert ist, innerhalb welcher die angeforderten Daten gespeichert sind, übermitteln, wobei der Festplatten-Controller 18 aufgefordert wird, die angeforderten Daten in den Cache 16 auszulesen.
  • In Reaktion auf die von dem Host-Controller 24 übermittelte Nachricht kann der Festplatten-Controller 18 über den Festplatten-Adapter 30, welcher mit ihm gekoppelt ist, geeignete Befehle übermitteln, die bewirken, daß eine oder mehrere der Festplattenvorrichtungen 36 die angeforderten Daten auslesen. In Reaktion auf derartige Befehle können die Vorrichtungen 36 die angeforderten Daten über den Festplatten-Adapter zu dem Festplatten-Controller 18 übermitteln, und der Festplatten-Controller 18 kann die angeforderten Daten zum Speichern in dem Cache 16 über eine oder mehrere der Verbindungen 44 übertragen. Der Festplatten-Controller 18 kann anschließend über das Netzwerk 14 eine Nachricht übermitteln, die den Host-Controller 24 davon unterrichtet, daß die angeforderten Daten in dem Cache 16 gespeichert worden sind.
  • In Reaktion auf die von dem Festplatten-Controller 18 über das Netzwerk 14 übermittelte Nachricht kann der Host-Controller 24 die angeforderten Daten aus dem Cache 16 über eine oder mehrere der Verbindungen 40 auslesen, und kann sie zu dem Host- Knoten 124 über den Adapter 26 und die Verbindung 114 übermitteln. Der Host-Knoten 124 kann anschießend die angeforderten Daten zu dem Client-Knoten 146 übermitteln, der sie über die Verbindung 134, das Netzwerk 144 und die mit dem Client-Knoten 146 assoziierte Verbindung 145 angefordert hat.
  • Außerdem kann ein Client-Knoten 146 eine Anforderung zum Speichern von Daten zu einem Host-Knoten (beispielsweise Knoten 124) über eine der mit dem Client- Knoten 146 assoziierten Verbindungen 145, dem Netzwerk 144 und der mit dem Host- Knoten 124 assoziierten Verbindung 134 übermitteln. Der Host-Knoten 124 kann die Daten lokal speichern oder alternativ dazu das Speichern dieser Daten in dem System 112 über die mit dem Knoten 124 assoziierte Verbindung 114 anfordern.
  • Die Datenspeicheranfrage, die über die Verbindung 114 übermittelt wird, wird ursprünglich bzw. zunächst durch den Host-Adapter 26, der mit dieser Verbindung 114 gekoppelt ist, empfangen. Der mit der Verbindung 114 assoziierte Host-Adapter 26 kann anschließend die Datenspeicheranforderung bzw. -anfrage an den Host-Controller 24 übermitteln, an welchen er gekoppelt ist. In Reaktion auf die an ihn übermittelte Datenspeicheranfrage kann der Host-Controller 24 anschließend zunächst die mit der Anfrage zum Speichern in dem Cache 16 assoziierten Daten über eine oder mehrere der Verbindungen 40 übertragen. Danach kann einer der Festplatten-Controller (z. B. Controller 18) durch ein Ausgeben von geeigneten Befehlen zu den Vorrichtungen 36 über den Adapter 30 bewirken, daß die in dem Cache 16 gespeicherten Daten, in einer oder mehrerer der Datenspeichervorrichtungen 36 gespeichert werden.
  • Zusätzliche Details, die die Einzelheiten und den Betrieb des Systems 112 betreffen, können z. B. der ebenfalls anhängigen weiteren US-Patentanmeldung mit der Seriennummer 09/745,814 mit dem Titel "Data Storage System Having Crossbar Switch With Multi-Staged Routing", eingereicht am 21. Dezember 2000, entnommen werden.
  • Diese ebenfalls anhängige Anmeldung der Anmelderin wird hierin durch Bezugnahme vollumfänglich mitoffenbart.
  • Im folgenden werden insbesondere unter Bezugnahme auf die Fig. 3 bis 5 veranschaulichende Ausführungsformen der vorliegenden Erfindung beschrieben, die in dem Cache-Speichersystem 16 des Systems 112 vorteilhaft verwendet werden können. Das Speichersystem 16 weist eine Vielzahl von elektrischen Schaltplatten oder Leiterplatinen oder -karten 100A, 100B, 100C, 100D . . . 100N auf, die mit einer nicht mehr dargestellten Rückwandplatine des Systems 112 gekoppelt sind. Wenn die Speicherplatinen 100A, 100B, 100C, 100D . . . 100N mit dieser Rückwandplatine gekoppelt sind, sind sie über elektrische Schaltungspfade in der Rückwandplatine mit anderen Bestandteilen des Systems 112 elektrisch verbunden, so daß die Platinen 100A, 100B, 100C, 100D . . . 100N miteinander und dem Host- und Festplatten-Controller des Systems 112 in der hierin beschriebenen Art und Weise kommunizieren und interagieren können. Es ist wichtig festzuhalten, daß die Anzahl an Speicherplatinen, die in Fig. 3 gezeigt sind, lediglich zur Veranschaulichung gewählt worden ist, und das ahängig von der Konfiguration des Systems 112 die tatsächliche Anzahl an Speicherplatinen, die in dem System 112 vorhanden sind, variieren kann. Der Aufbau und Betrieb jeder der Speicherplatine 100A, 100B, 100C, 100D . . . 100N ist im wesentlichen identisch; demgemäß wird zur Vermeidung von unnötigen Wiederholungen in der Beschreibung im folgenden lediglich der Aufbau und der Betrieb von einer Speicherplatine 100A beschrieben.
  • Fig. 4 zeigt eine logische, schematische Darstellung der entsprechenden funktionalen Bestandteile der Speicherplatine 100A. Die Platine 100A weist eine Steuerungs- und Netzwerk-Schaltung 200 und eine Vielzahl von Speicherbereichen 202, 204, 206 und 208 auf. Jeder der Speicherbereiche 202, 204, 206 und 208 weist eine jeweilige Vielzahl von Bänken einer SDRAM-IC-Vorrichtung auf. Beispielsweise weist der Bereich 202 eine Vielzahl von Bänken von SDRAM-IC-Vorrichtungen (gemeinsam durch das Bezugszeichen 210 bezeichnet) auf; der Bereich 204 weist eine Vielzahl von Bänken einer SDRAM-IC-Speichervorrichtung 212 auf; der Bereich 206 weist eine Vielzahl von Bänken von einer SDRAM-IC-Vorrichtung 214 auf; und der Bereich 208 weit eine Vielzahl von Bänken einer SDRAM-IC-Vorrichtung 216 auf. Die jeweilige Vielzahl von SDRAM-IC-Vorrichtungen, die in jedem der Bänke 210, 212, 214 und 216 enthalten sind, sind so aufgebaut, daß sie eine jeweilige Vielzahl von Speichersegmenten einer vorbestimmten Größe (z. B. jeweils 256 Megabyte) in dem Speichersystem 16 aufweisen. Bei dieser Ausführungsform der vorliegenden Erfindung kann jedes der Speichersegmente eine unterschiedliche Basisspeicheradresse unabhängig von den anderen Speichersegmenten innerhalb der selben Speicherregion aufweisen. Insbesondere sind die SDRAM-IC-Vorrichtungen in den Speicherbänken 210 derart aufgebaut, daß sie Speichersegmente 220A, 220B, . . . 220N aufweisen; die SDRAM- Vorrichtungen in den Speicherbänken 212 sind so aufgebaut, daß sie Speichersegmente 222A, 222B . . . 222N aufweisen; die SDRAM-Vorrichtungen in den Speicherbänken 214 sind so aufgebaut, daß sie Speichersegmente 224A, 224B, . . . 224N aufweisen; und die SDRAM-Vorrichtungen in den Speicherbänken 216 sind so aufgebaut, daß sie Speichersegmente 226A, 226B, . . . 226N aufweisen. Es ist festzuhalten, daß die jeweilige Anzahl an Speicherbereichen, die in dem Bord 108 enthalten sind, ebenso wie die Anzahl und Größen der Speichersegmente, die die jeweiligen Bereiche ausbilden, variieren können, ohne grundlegend von dieser Ausführungsform der vorliegenden Erfindung abzuweichen. Bei dieser Ausführungsform der vorliegenden Erfindung können die Speicherbereiche beispielsweise eine jeweilige Vielzahl von Speichersegmenten aufweisen, die zwischen zwei und einschließlich 64 variieren kann.
  • Bei jedem Speichersegment können die darin gespeicherten Daten weiter in eine jeweilige Vielzahl von Datenwörtern mit 64 Bit Länge (64 Bit Datenwörter) weiter segmentiert werden. Einzelne Datenwörter können in Stripe-Einheiten von jeweils 64 Wörtern gruppiert werden, und die Stripe-Einheiten können über die jeweiligen Speicherbereiche in jeder jeweiligen Speicherplatine gestriped (d. h. aufgeteilt) werden.
  • Es ist zu beachten, daß jede SDRAM-IC-Vorrichtung, die in dem Cache 16 vorhanden ist, eine Halbleiterspeichervorrichtung ist, und daß diese SDRAM-IC-Vorrichtungen durch den Cache 16 zum Speichern der zu dem Cache 16 von den Host- Controller und den Festplatten-Controllern im System 112 übermittelten Benutzerdaten ebenso wie von paritätsbezogenen Daten in Ubereinstimmung mit dieser Ausführungsform der vorliegenden Erfindung verwendet werden können. Dementsprechend ist das Cache-Speichersystem 16 ein Halbleiterspeichersystem im Unterschied zu den Festplattenspeichervorrichtungen 34 . . . 36, die in dem System 112 vorhanden sind, und die Speicherbereiche und Speichersegmente, die in dem Speichersystem 16 vorhanden sind, sind Halbleiterspeicherbereiche bzw. Halbleiterspeichersegmente.
  • Im allgemeinen weist die Steuerungs- und Netzwerk-Schaltung 200 eine logische Netzwerk- und logische Steuerungsschaltung (nicht gezeigt) auf, die unter anderem den Austausch von Daten und Befehlen unter den Speicherbereichen 202, 204, 206 und 208 und den Host-Controllern und Festplatten-Controllern über die Verbindungen 40, 42, 44 und 46 erleichtert. Insbesondere kann der Steuerungslogikschaltungsaufbau in Schaltung 200 Speicherbereichscontroller enthalten, die unter anderem das Speichern der Daten in und das Auslesen der Daten aus den Speicherbereichen 202, 204, 206 und 208 steuert. Der logische Netzwerk-Schaltungsaufbau in der Schaltung 200 kann einen Crossbar-Schalter (Kreuzschienenschalter) und einen dazugehörigen Punkt-Zu-Punkt- Netzwerkschaltungsaufbau (im folgenden als "Crossbar-Switching-Schaltung") und einen Seriell-Parallel-Umsetzer enthalten. Der Seriell-Paralell-Umsetzer kann so konfiguriert sein, daß er serielle Ströme an Information (z. B. Daten, Adressinformation, Befehle, zyklische Redundanzüberprüfungsinformation, Signal-Semaphoren, usw.), die er von den Host-Controllern und den Festplatten-Controllern über die Verbindungen 40, 42, 44 und 46 empfangen hat, in korrespondierende Parallelströme an Information umwandelt, und die parallelen Ströme an Information zu der Crossbar-Switching- Schaltung übermittelt. Die seriellen Ströme an Information können ebenso eine "tag"- Information enthalten, die unter anderem die Speicherplatine in dem Cache 16 und dem Speicherbereich auf der Speicherplatine, in welchem die Daten eingespeichert/ausgelesen werden sollen, sowie den Host- oder Festplatten-Controller, der den mit den Daten assoziierten Datentransfer initiiert hat, anzeigt. Der Seriell-Parallel-Umsetzer kann ebenso konfiguriert sein, daß er parallele Ströme an Information, die er von der Crossbar-Switching-Schaltung empfängt, in entsprechende serielle Ströme an Information zum Übermitteln zu den geeigneten Host- oder Festplatten-Controllern über die Verbindungen 40, 42, 44 und 46, die mit den geeigneten Controllern assoziiert sind, umwandelt.
  • Die Crossbar-Switching-Schaltung kann ein Crossbar-Schalternetzwerk und ein damit assoziiertes Punkt-Zu-Punkt-Netzwerk enthalten. Dieses Punkt-Zu-Punkt-Netzwerk kann eine Vielzahl von Punkt-Zu-Punkt-Zwischenverbindungen oder Verbindungen enthalten, die die jeweiligen Ports des Crossbar-Schalternetzwerk mit jeweiligen Ports der Speicherbereichscontroller koppelt. Das Crossbar-Schalternetzwerk kann so konfiguriert sein, daß es die Parallelinformation von den Seriell-Parallel-Umsetzer empFängt und die empfangene Information abhängig vom Inhalt der Information über eine geeignete Punkt-Zu-Punkt-Zwischenverbindung in dem Punkt-Zu-Punkt-Netzwerk der Platine 100A zu einem Port eines geeigneten Speicherbereichs-Controllers (z. B. einem Speicherbereichs-Controller, der mit dem Speicherbereich in der Platine 100A assoziiert ist und in der empfangenen parallelen Information spezifiziert ist) übermittelt.
  • Jeder Speicherbereichs-Controller kann in Reaktion auf die Information, die er über das Punkt-Zu-Punkt-Netzwerk in der Platine 100A empfängt, Befehle zu einem jeweiligen Speicherbereich 202, 204, 206 und 208, mit dem er assoziiert ist, ausgeben (z. B. Bereich 202). Diese Befehle können unter anderem bewirken, daß der Bereich 202 Daten in den Speicherbänken 210 speichert oder gespeicherte Daten von den Speicherbänken 210 ausliest. Derartige ausgelesene Daten können durch den Speicherbereichscontroller über das Punkt-Zu-Punkt-Netzwerk in der Platine 100A zu dem Crossbar- Schalternetzwerk übermittelt werden, und somit über den Seriell-Parallel-Umschalter an einen geeigneten Host- oder Festplatten-Controller über eine der Verbindungen 40, 42, 44 und 46 übermittelt werden.
  • Obgleich es nicht in den Figuren gezeigt ist, sollte festgehalten werden, daß bei einer tatsächlichen Implementation der Platine 100A Teile des Schaltungsaufbaus 200 in dem Bereich 202, 204, 206 und 208 verteilt sein können (z. B. Schaltungsaufbau zum Vorsehen von Befehlen/Signalen der unteren Befehlsebene zu vorhandenen SDRAM- IC-Vorrichtungen in dem Bereich, wie beispielsweise chip select, clock synchronization, memory addressing, data transfer, memory control/management, clock enable signals, usw.). Im Rahmen der vorliegenden Diskussion jedoch werden diese Schaltungsteile als in dem Schaltungsaufbau 200 lokal vorhanden angenommen. Weitere Details und Beschreibungen der Arten und Funktionen der Schaltung 200, die in die Bereiche 202, 204, 206 und 208 bei einer tatsächlichen Implementation der Platine 100A verteilt werden können, kann beispielsweise in der allgemein zugänglichen anhängigen US-Patentanmeldung mit Nummer 09/796,259, eingereicht am 25. Februar 2001 mit dem Titel "Error Condition Handling" (Anwaltsdokument Nr. EMC-01-034) gefunden werden. Die ebenfalls anhängige Anmeldung wird hierin durch Bezugnahme vollumfänglich mitoffenbart.
  • Fig. 5 zeigt ein schematisches Blockdiagramm zur Erleichterung des Verständnisses der Beschreibung dieser Ausführungsform der vorliegenden Erfindung. Bei Fig. 5 sind all die Speichersegmente 400A, 400B, 400C . . . 400N in all den Speicherbereichen 202, 204, 206 und 208 auf der Speicherplatine 100A enthalten und werden gemeinsam durch Ziffer 300 bezeichnet. Mit anderen Worten enthalten die Speichersegmente 400A, 400B, 400C . . . 400N all die Speichersegmente (d. h. Speichersegmente 220A, 220B, . . . 220N; 222A, 222B, . . . 222N; 224A, 224B, . . . 224N und 226A, 226B, . . . 226N), die als auf der Platine 100A befindlich beschrieben sind, und diese Speichersegmente 400A, 400B, 400C. . . 400N werden gemeinsam in Fig. 5 durch Ziffer 300 bezeichnet. Ebenso werden in Fig. 5 alle Speichersegmente 500A, 500B, 500C, . . . 500N, die in allen Speicherbereichen auf der Speicherplatine 100B enthalten sind, gemeinsam mit Ziffer 302 bezeichnet. In ähnlicher Weise werden alle Speichersegmente 600A, 600B, 600C . . . 600N, die in allen Speicherbereichen auf der Speicherplatine 100C enthalten sind, gemeinsam mit der Ziffer 304 bezeichnet; und alle Speichersegmente 700A, 700B, 700C . . . 700N, die in den Speicherbereichen auf der Speicherplatine 100D enthalten sind, werden gemeinsam mit der Ziffer 306 bezeichnet.
  • In Übereinstimmung mit dieser Ausführungsform der vorliegenden Erfindung können die Host-Controller, Festplatten-Controller und die jeweilige Steuerungs- und Netzwerkschaltung in den jeweiligen Speicherplatinen 100A, 100B, 100C, 100D . . . 100N so konfiguriert werden, daß sie eine Fehlertoleranz/Datenschutztechnik implementieren, wobei jedes der Speichersegmente in jeder der Speicherplatinen 100A, 100B, 100C, 100D . . . 100N mit anderen Speichersegmenten in einem jeweiligen Paritätssatz oder -gruppe assoziiert ist, so daß unter anderem jeder der Paritätssätze oder -gruppen, die gleiche jeweilige Ganzzahl N an Speichersegmenten enthalten kann, und keine zwei Speichersegmente in einem jeweiligen Paritätssatz oder -gruppe kann auf der gleichen jeweiligen Speicherplatine vorhanden sein. Falls somit bei dieser Ausführungsform der vorliegenden Erfindung die Anzahl N an jeweiligen Speichersegmenten in einem jeweiligen Paritätssatz gleich 4 ist, und Paritätssätze unter Verwendung der Segmente 300, 302, 304 und 306 ausgebildet sind, dann kann jedes Paritätssegment ein erstes jeweiliges Speichersegment enthalten, das aus den auf der Speicherplatine 100A vorhandenen Speichersegmenten 300 ausgewählt ist, ein zweites jeweiliges Speichersegment enthallen, das aus den auf der Speicherplatine 100B vorhandenen Speichersegmenten 302 ausgewählt ist, ein drittes jeweiliges Speichersegment enthalten, das aus den auf der Speicherplatine 100C vorhandenen Speichersegmenten 304 ausgewählt ist, und ein viertes jeweiliges Speichersegment enthalten, das aus den auf der Speicherplatine 100D vorhandenen Speichersegmenten 306 ausgewählt ist. In Ubereinstimmung mit dieser veranschaulichenden Ausführungsform kann ein erster Paritätssatz Speichersegmente 400A, 500A, 600A und 700A aufweisen, ein zweiter Paritätssatz kann Speichersegmente 400B, 500B, 600B und 700B aufweisen, ein dritter Paritätssatz kann Speichersegmente 400C, 500C, 600C und 700C aufweisen und andere Speichersegmente, die in den Segmenten 300, 302, 304 und 306 enthalten sind, können in Ubereinstimmung mit diesem Muster Paritätssätzen zugeordnet werden.
  • Jeder Paritätssatz kann ein einziges jeweiliges Paritätssegment und N-1 jeweilige Datensegmente aufweisen. Die jeweiligen Paritätssegmente und die jeweiligen Daten- Segmente in den jeweiligen Paritätssätzen können derart ausgewählt werden, daß die jeweiligen Paritätssegmente der jeweiligen Paritätssätze im wesentlichen gleich verteilt auf den Speicherplatinen sind, deren Speichersegmente in den Paritätssätzen vorhanden bzw. enthalten sind. Somit kann bei dieser Ausführungsform der vorliegenden Erfindung in dem Paritätssatz, der die Segmente 400A, 500A, 600A und 700A enthält, Segment 400A ein Paritätssegment sein und Segmente 500A, 600A und 700A können Datensegmente sein; bei dem Paritätssatz, der Segmente 400B, 500B, 600B und 700B enthält, kann Segment 500B ein Paritätssegment und Segmente 400B, 600B und 700B können Datensegmente sein; bei dem Paritätssatz, der Segmente 400C, 500C, 600C und 700C enthält, kann Segment 600C ein Paritätssegment sein und Segmente 400C, 500C und 700C können Datensegmente sein, und andere Speichersegmente, die in den Segmenten 300, 302, 304 und 306 enthalten sind, können in Übereinstimmung mit diesem Muster als Paritätssegmente oder Datensegmente gewählt werden.
  • Das jeweilige Paritätssegment und die jeweiligen Datensegmente in dem jeweiligen Paritätssatz können jeweilige Datenwerte speichern. Bei jedem jeweiligen Paritätssatz kann der in dem jeweiligen Paritätssegmenten gespeicherte Datenwert gleich einer logischen XOR-Verknüpfung von jeweiligen Datenwerten sein, die in den jeweiligen Datensegmenten in dem Paritätssatz gespeichert sind. Die jeweiligen Datenwerte, die in den jeweiligen Datensegmenten gespeichert sein können, können jeweilige Benutzerdaten sein, die in die jeweiligen Datensegmente in Reaktion auf Befehle, die von dem Speichersystem 16 von den Host- und/oder Festplatten-Controllern in dem System 112 empfangen worden sind, geschrieben worden sind. Falls somit zur Veranschaulichung die Speichersegmente 400A, 500A, 600A und 700A Datenwerte P, A, B bzw. C speichern, kann anschließend der Datenwert P gleich einer A XOR B XOR C-Verknüpfung sein.
  • Die jeweilige Steuerungs- und Netzwerkschaltung in den Speicherplatinen 100A, 100B, 100C, 100D, . . . 100N und/oder andere Bestandteile des Systems 112 (z. B. die Host- und Festplatten-Controller) können ein Mapping der jeweiligen Paritätssätze in dem Speicher 16 unterstützen, wobei das Mapping die jeweiligen Orte und die jeweilige Anzahl der Speichersegmente anzeigen kann, die in den jeweiligen Paritätssätzen enthalten sind. Eine derartige Schaltung kann so konfiguriert sein, daß sie in Übereinstimmung mit einem Initialisierungsschema (und/oder in Reaktion auf empfangene Host- oder Festplatten-Controllerbefehle) ursprüngliche jeweilige Datenwerte in die jeweiligen Paritätssegmente der jeweiligen Paritätssätze erzeugt und speichert. Bei einem derartigen Initialisierungsschema kann zum Beispiel der Datenwert A aus dem Speichersegment 500A ausgelesen werden und zu der Steuerungs- und Netzwerkschaltung 200 auf der Platine 100A in Reihen von Mehrfach-Datenworttransfers (Bursts) übermittelt werden. Die Schaltung 200 kann zeitweilig den Wert A in dem Segment 400A speichern. Der Datenwert B kann ebenso aus dem Segment 600A ausgelesen werden und zu der Steuerungs- und Netzwerkschaltung 200 in Reihen von Mehrfach- Datenworttransfers übermittelt werden. Die Schaltung 200 kann die empfangenen Datenworte vom Wert B mit entsprechenden Datenworten in dem Wert A, der vorübergehend in dem Segment 400A gespeichert ist, XOR-verknüpfen (unter Verwendung einer nicht-gezeigten XOR-Logikschaltung, die in der Schaltung 200 enthalten ist), und dem Datenwert A mit den Ergebnissen dieser XOR-Verknüpfungen (d. h. A XOR B) ersetzen. Mit anderen Worten, die Schaltung 200 führt die Verknüpfung bzw. die Operation A XOR B Datenwort für Datenwort durch und speichert die Ergebnisse davon in dem Segment 400A. Der Datenwert C kann anschließend aus dem Segment 700A ausgelesen werden und zu der Steuerungs- und Netzwerkschaltung 200 in Reihen von Mehrfach-Datenwortpaketen übermittelt werden. Die Schaltung 200 kann die empfangenen Datenworte von dem Wert C mit entsprechenden Datenworten, die in dem Segment 400A gespeichert sind, XOR-verknüpfen, und speichert die Ergebnisse dieser XOR-Verknüpfungen als den Wert P in dem Segment 400A.
  • Wenn danach ein Wert in ein Datensegment in einem jeweiligen Paritätssatz geschrieben wird (z. B. in Antwort auf Host- oder Festplatten-Controllerbefehlen), muß ebenso ein Datenwert in das Paritätssegment in dem jeweiligen Paritätssatz geschrieben werden, um sicherzustellen, daß der Datenwert, der in dem Paritätssegment gespeichert ist, die voranstehende logische Beziehung unter den Datenwerten, die in den Speichersegmenten in den jeweiligen Speicherparitätssatz gespeichert sind, erfüllt. Falls beispielsweise das Speichersegment 700A derart beschrieben wird, daß der Datenwert C, der in dem Segment 700A gespeichert ist, zu C' geändert wird, muß anschließend der Datenwert P, der in dem Speichersegment 400A gespeichert ist, ebenso zu einem neuen Datenwert (beispielsweise P) geändert werden, wobei P' gleich der Verknüpfung A XOR B XOR C' ist.
  • Um dies für jedes Datenwort bei dem Datenwert C', der relativ zu dem Datenwert C geändert worden ist, zu erreichen, kann ein jeweiliger Satz an atomaren Operationen durchgeführt werden. Jeder Satz an atomaren Operationen kann eine erste atomare Operation und eine zweite atomare Operation enthalten, die während den jeweiligen Datentransferzyklen in dem Speicher 16 durchgeführt werden können. Das heißt, für jedes jeweilige Datenwort im Wert C', das sich von dem jeweiligen korrespondierenden Datenwort im Wert C unterscheidet, kann ein jeweiliger Satz an atomaren Operationen durchgeführt werden.
  • Falls beispielsweise ein Datenwort (im folgenden als "das geänderte Datenwort" bezeichnet) in dem Wert C' sich von seinem korrespondierendem Datenwort in dem Wert C unterscheidet, kann bei der ersten dieser Speicheroperationen die XOR- Logikschaltung, die in dem Steuerung- und Netzwerk-Schaltungsaufbau auf der Platine 100D enthalten ist, zum Berechnen eines partiellen Paritätswertes verwendet werden, der gleich einer XOR-Verknüpfung des geänderten Datenworts mit dem korrespondierendem ungeänderten Datenwort in dem Wert C ist, und der partielle Paritätswert kann zu der Steuerungs- und Netzwerkschaltung auf der Platine 100A übermittelt werden. Bei den zweiten dieser Speicheroperationen kann die in der Schaltung 200 enthaltene XOR-Logikschaltung eine XOR-Verknüpfung des partiellen Paritätswerts und des Datenwerts im Wert P durchführen, der in dem Segment 400A gespeichert ist, das dem geänderten Datenwort entspricht, und kann die Ergebnisse dieser letzteren XOR-Operation an die Stelle in dem Segment 400A schreiben, in welcher das korrespondierende Datenwort von P gespeichert ist. Falls zusätzliche Datenwörter in dem Wert C' vorhanden sind, die sich von den jeweiligen korrespondierenden Datenwörtern in dem Wert C unterscheiden, kann das voranstehende Verfahren wiederholt für jedes dieser zusätzlichen Datenwörter durchgeführt werden, und am Ende derartiger zusätzlicher Durchläufe durch dieses Verfahren (falls notwendig), wird der in dem Segment 400A gespeicherte Wert P' sein, da es mathematische gezeigt werden kann (wenngleich dies im Interesse einer kurzen Darstellung hier nicht erfolgt), daß
    A XOR B XOR C' = P XOR C XOR C' = P'.
  • Die Steuerungs- und Netzwerkschaltung in den Speicherplatinen kann einen bidirektionalen Datenpfad aufweisen, der es dem geänderten Datenwort in dem Wert C' ermöglicht, in das Segment 700A gleichzeitig mit der Erzeugung und Übermittlung des partiellen Paritätswertes geschrieben zu werden. Dies ermöglicht vorteilhafterweise die Anzahl an Datentransferzyklen und somit ebenso die Zeit, die zum Durchführen eines Speicherschreibvorgangs bei dieser Ausführungsform der vorliegenden Erfindung erforderlich ist, beträchtlich zu verringern (z. B. soweit, daß sie der zum Durchführen eines Schreibvorgangs erforderlichen Zeit gleich ist, bei dem die gleiche Datenmenge in einen Speicher geschrieben wird, der ein Dual-Write-Fehlertoleranzverfahren verwendet).
  • In Übereinstimmung mit dieser Ausführungsform der vorliegenden Erfindung kann die Steuerung- und Netzwerkschaltung, die die Speicherplatinen 100A, 100B, 100C, 100D . . . 100N enthält (und/oder andere Bestandteile im System 112, z. B. die Host- und Festplatten-Controller) derart konfiguriert werden, daß sie erfassen, wenn ein Fehler bzw. Versagen eines der Datensegmente in einem Paritätssatz auftritt (z. B. unter Verwendung herkömmlicher Speicherfehlererfassungsverfahren). Wenn ein derartiger Ausfall bzw. Fehler erfaßt wird, kann die jeweilige Steuerungs- und Netzwerkschaltung, die in der betroffenen von den Speicherplatinen 100A, 100B, 100C, 100D . . . 100N enthalten ist, zum Wiederherstellen des Datenwertes, der in dem fehlerhaften Datensegment gespeichert ist, unter Verwendung der Datenwerte, die in den nicht-fehlerhaften Datensegmenten gespeichert sind, und dem Paritätssegment in dem Paritätssatz, zu welchem das fehlerhafte Datensegment gehört, verwendet werden und kann der wiederhergestellte Datenwert in einem anderen Speichersegment gespeichert werden, der nicht- fehlerhaft bzw. ausgefallen ist. Falls beispielsweise ein Fehler in dem Speichersegment 500A erfaßt wird, kann die Steuerungs- und Netzwerkschaltung 200 in der Speicherplatine 100A zum Übermitteln (z. B. in einer Reihe von Mehrfach-Datenworttransfers) des Wertes P, der in dem Speichersegment 400A für die Verwendung durch die Steuerungs- und Netzwerkschaltung auf der Platine 100D gespeichert ist, verwendet werden; die Steuerungs- und Netzwerkschaltung auf der Speicherplatine 100D kann die logische XOR-Schaltung, die in der Steuerungs- und Netzwerkschaltung auf der Platine 100D enthalten ist, zur logischen XOR-Verknüpfung der empfangenen Datenworte von dem Wert P mit den entsprechenden Datenworten in dem Wert C verwendet werden (z. B. zum Durchführen der Verknüpfung P XOR C Datenwort für Datenwort), und kann vorübergehend den Datenwert (im folgenden als "Datenwert X" bezeichnet), der sich aus diesen XOR-Verknüpfungen ergibt, in einem anderen Speichersegment (z. B. 700N) im Speicher 16 speichern, der gegenwärtig zur Datenspeicherung zur Verfügung steht. Die Steuerungs- und Netzwerkschaltung, die in der Speicherplatine 100C enthalten ist, kann (z. B. in einer Reihe von Mehrfach-Datenworttransfers) den Datenwert B, der in dem Speichersegment 600A gespeichert ist, zur Verwendung durch die Steuerungs- und Netzwerkschaltung auf der Speicherplatine 100D übermitteln; die Steuerungs- und Netzwerkschaltung auf der Speicherplatine 100D kann anschließend seine logische XOR-Schaltung verwenden, um die empfangenen Datenworte von dem Datenwert B mit den entsprechenden Datenworten von dem Wert X logisch XOR zu verknüpfen (d. h. die Verknüpfung X XOR B Datenwort für Datenwort durchzuführen), und um den sich ergebenden Wert (welcher gleich dem Datenwert A ist, der in dem fehlerhaften Segment 500A gespeichert war) zum Speichern in einem Speichersegment, das nicht auf den Speicherplatinen 100A, 100C, oder 100D angeordnet ist und zum Speichern von Daten zur Verfügung steht, zu übermitteln. Falls beispielsweise lediglich das Segment 500A auf der Platine 100B ausgefallen ist, die Platine 100B aber ansonsten normal arbeitet, und steht das Segment 500N zum Speichern von Daten zur Verfügung, kann der neu wiederhergestellte Wert A in dem Segment 500N gespeichert werden. Falls es alternativ dazu nicht gewünscht ist, den neu wiederhergestellten Wert A in der Speicherplatine 100B zu speichern, daß das fehlerhafte Segment 500A enthält, kann der wiederhergestellte Wert A z. B. in einem verfügbaren Datensegment in der Speicherplatine 100N gespeichert werden. Die einzelnen Speichersegmente, in welchen der Datenwert X und der rekonstruierte Wert A gespeichert werden können, kann ebenso variieren ohne grundsätzlich von dieser Ausführungsform der vorliegenden Erfindung abzuweichen.
  • Es ist wichtig festzuhalten, daß der Wert A in einer Datenwort-für-Datenwort Art und Weise aus den ausgefallenen Daten rekonstruiert werden kann. Das heißt, falls weniger als alle Datenworte, die in dem Segment 500A enthalten sind, ausgefallen sind, müssen lediglich diese ausgefallenen Datenworte rekonstruiert werden. Falls beispielsweise lediglich das erste Datenwort (z. B. das niederwertigste Datenwort; least significant data word) des Segments 500A ausfällt oder fehlerhaft ist, muß anschließend lediglich das jeweilige korrespondierende erste Datenwort in den Werten P, B und C verwendet werden, um das fehlerhafte erste Datenwort mathematisch zu rekonstruieren. Das rekonstruierte Datenwort kann anschließend mit anderen nicht-fehlerhaften Datenwörtern von dem Segment 500A kombiniert werden, um den Wert A zu erzeugen, wobei der Wert A anschließend in einem verfügbaren Datensegment gespeichert werden kann (z. B. 500N oder einem verfügbaren Datensegment auf der Platine 100N).
  • Teile der jeweiligen Steuerungs- und Netzwerkschaltung der jeweiligen Speicherplatine 100A, 100B, 100C, 100D . . . 100N können als anwendungsspezifische integrierte Schaltungen (und verwandte Schaltungsanordnungen) verkörpert sein, die mit bestimmten Algorithmen vorprogrammiert sein können, deren Ausführung es erlaubt, die jeweilige Steuerungs- und Netzwerkschaltung in die Lage zu versetzen, die Prozeduren, Prozesse, Techniken, Operationen und Funktionen auszuführen, wie sie voranstehend als durch eine solche Steuerungs- und Netzwerkschaltung ausführbar beschrieben worden sind.
  • Somit ist es offensichtlich, daß in Übereinstimmung mit der vorliegenden Erfindung ein Speichersystem und ein Verfahren zur Verwendung desselben vorgesehen wird, das die Ziele und Aufgaben vollständig erfüllt, und das die zuvor erwähnten Vorteile erzielt. Die Begriffe und Ausdrücke, die in dieser Anmeldung benutzt worden sind, sind als Begriffe zur Beschreibung und nicht zur Beschränkung verwendet worden und bei der Verwendung solcher Begriffe und Ausdrücke wurde daher nicht beabsichtigt, irgendwelche Äquivalente der gezeigten und beschriebenen Merkmale oder ihrer Teile auszuschließen, sondern es ist vielmehr festzustellen, daß zahlreiche Modifikationen innerhalb des Umfangs der Anmeldung, wie er beansprucht ist, möglich sind.
  • Obwohl veranschaulichende Ausführungsformen der vorliegenden Erfindung in Verbindung mit einer Verwendung in einem Netzwerkdatenspeichersystem beschrieben worden sind, daß ein Nachrichten-Netzwerk 14 aufweist, das die Kommunikation zwischen den Host-Controllern und den Festplatten-Controllern erleichtert, und ein Punkt zu Punkt Datentransfernetzwerksystem aufweist, das Verbindungen 40, 42, 44 und 46 aufweist, können beispielsweise diese Ausführungsformen der vorliegenden Erfindung, falls sie geeignet modifiziert werden, statt dessen in Verbindung mit anderen Arten von Netzwerk-Datenspeichersystemen verwendet werden, z. B. solche, die ein redundantes Bussystem verwenden, das in der allgemein zugänglichen anhängigen US-Patentanmeldung mit Nr. 09/796,29 beschrieben ist, die am 28. Februar 2001 mit dem Titel "Error Condition Handling" (Anwalts Dokument Nr. EMC-01-034) eingereicht wurde.
  • Andere Modifikationen sind ebenso möglich. Beispielsweise können bestimmte Write-Modify-Read-Speichervorgänge in dem System 16 implementiert werden, und diese Vorgänge können derart angepaßt werden, daß sie mit der vorliegenden Erfindung kompatibel sind. Beispiele für derartige Write-Modify-Read-Vorgänge können Operationen enthalten (beispielsweise Vergleichen und Auslagern (compare and swap), Addition von Halb- oder Ganzwörtern/Bytes, usw.) durch welche arithmetische und/oder logische Speichervorgänge mit einem Datenwort durchgeführt werden können, die in einem Speichersegment (z. B. Speichersegment 500A) des Speichers 16 gespeichert worden sind, wobei die Ergebnisse dieser Vorgänge verwendet werden können, um den Ort in dem Speicher zu überschreiben an dem das Datenwort zuvor gespeichert war, und das zuvor gespeicherte Datenwort kann wieder zurückgegeben werden. Diese Vorgänge können derart ausgeführt werden, daß, wenn das zuvor gespeicherte Datenwort zurückgegeben wird, eine XOR-Logikschaltung (z. B. in dem Steuerungs- und Netzwerkaufbau in der Speicherplatine, welche den Vorgang bzw. die Operation ausführt) ein zusätzliches Datenwort erzeugen und mit dem zurückgegebenen Datenwert verbinden kann, das die XOR-Verknüpfung von einem zuvor gespeicherten Datenwort und den Ergebnissen der logischen/arithmetischen Operationen sein kann. Der zurückgegebene Datenwert kann beim Verändern des Werts P zu P' in dem Paritätssegment 400A in dem Paritätssatz, zu welchem das Segment 500A gehört, in der vorangehend beschriebenen Art und Weise verwendet werden.
  • Andere Modifikationen sind ebenso möglich. Dementsprechend sollte die vorliegende Erfindung so aufgefaßt werden, daß sie alle Modifikationen, Variationen, Alternativen und Äquivalente umfaßt, solange sie durch die hieran beigefügten Ansprüche umfaßt sind.

Claims (10)

1. Speichersystem, das aufweist:
eine Vielzahl von Speicherplatinen, wobei jede der Speicherplatinen eine jeweilige Vielzahl an Speichersegmenten aufweist, die die jeweiligen Datenwerte speichern können, wobei die Segmente in Paritätssätzen gruppiert sind, so daß jeder der Paritätssätze jeweilige Segmente der Anzahl N enthält, wobei die Anzahl N eine Ganzzahl ist, wobei die N jeweiligen Segmente in jedem jeweiligen Paritäts- Satz ein jeweiliges Paritätssegment und N-1 jeweilige Datensegmente enthalten, wobei die N jeweiligen Segmente in jedem jeweiligen Paritätssatz unter den Speicherplatinen derart verteilt sind, daß keine der Speicherplatinen mehr als ein jeweiliges Segment von jedem jeweiligen Paritätssatz aufweist, und ein jeweiliger Datenwert, der in einem jeweiligen Paritätssegment in zumindest einem Paritätssatz gespeichert ist, kann durch eine logische Exklusiv-Oder-Verknüpfung der jeweiligen Datenwerte, die in den jeweiligen Datensegmenten in dem zumindest einem Paritätssatz gespeichert sind, berechnet werden.
2. Speichersystem nach Anspruch 1, wobei:
die Anzahl N gleich 4 ist.
3. Speichersystem nach Anspruch 1, wobei:
jede Speicherplatine eine jeweilige Vielzahl von Speicherbereichen enthält;
jeder Speicherbereich einen jeweiligen Untersatz an Segmenten enthält, die in einer jeweiligen Speicherplatine enthalten sind; und
jedes der Segmente, das in einem jeweiligen Speicherbereich enthalten ist, einer jeweiligen Basis-Speicheradresse zugeordnet werden kann, die sich von anderen jeweiligen Basis-Speicheradressen unterscheidet, die anderen Segmenten zugeordnet werden können, die in dem jeweiligen Speicherbereich enthalten sind.
4. Speichersystem nach Anspruch 1, wobei:
die Anzahl N gleich 4 ist;
ein jeweiliger Datenwert, der ursprünglich in einem jeweiligen Datensegment in dem zumindest einem Paritätssatz gespeichert ist, gleich einem variablen Wert A eingestellt wird, und ein jeweiliger Datenwert, der ursprünglich in dem jeweiligen Paritätssegment in dem zumindest einen Paritätssatz gespeichert ist, gleich dem variablen Wert P eingestellt wird;
das Speichersystem eine Schaltung enthält, die zum Verändern der jeweiligen Datenwerte, die in den Segmenten, in dem zumindest einen Paritätssatz gespeichert sind, verwendet werden kann; und
die Schaltung, wenn die Schaltung zum Verändern des einen jeweiligen Datenwerts von dem variablen Wert A in einen anderen variablen Wert A' verwendet wird, ebenso den jeweiligen Datenwert, der in dem jeweiligen Paritätssegment in dem zumindest einem Paritätssatz gespeichert ist, von einem variablen Wert P zu einem anderen variablen Wert P' verändert, wobei der Wert P' gleich einer P XOR A XOR A'-Verknüpfung ist, wobei "XOR" eine logische Exklusiv-Oder- Verknüpfung darstellt.
5. Speichersystem nach Anspruch 4, wobei die Schaltung so konfiguriert ist, daß sie bei jeweiligen atomaren Operationen den einen jeweiligen Datenwert und den jeweiligen Datenwert, der in dem jeweiligen Paritätssegment in dem zumindest einem Paritätssatz gespeichert ist, verändert.
6. Speichersystem nach Anspruch 1, wobei die Speicherplatinen einen Halbleiterspeicher enthalten, und jedes der jeweiligen Vielzahl von Speichersegmenten in dem Halbleiterspeicher enthalten ist.
7. Speichersystem, das aufweist:
eine Vielzahl von Halbleiterspeichersegmenten, wobei die Segmente in Gruppen gruppiert sind, wobei jede der Gruppen N jeweilige Halbleiterspeichersegmente enthält, wobei die Anzahl N eine Ganzzahl ist, wobei die N jeweiligen Segmente in jeder jeweiligen Gruppe jeweilige Datensegmente und ein jeweiliges Paritätssegment aufweisen; und
in jeder der Gruppen:
das jeweilige Paritätssegment einen jeweiligen Datenwert P speichert, der durch eine logische Exklusiv-Oder-Verknüpfung der jeweiligen Datenwerte, die in den jeweiligen Datensegmenten gespeichert sind, berechnet werden kann.
8. Speichersystem nach Anspruch 7, wobei die Vielzahl von Speichersegmenten über eine Vielzahl von elektrischen Schaltungsplatinen so verteilt sind, daß keine der Schaltungsplatinen mehr als ein jeweiliges Segment von jeder jeweiligen Gruppe enthält.
9. Verfahren zur Verwendung eines Speichersystems, wobei das Speichersystem eine Vielzahl von Speicherplatinen enthält, wobei jede der Speicherplatinen eine jeweilige Vielzahl an Speichersegmenten aufweist, die jeweilige Datenwerte speichern können, wobei das Verfahren aufweist:
Gruppieren der Segmente in Paritätssätze derart, daß jeder der Paritätssätze jeweilige Segmente der Anzahl N enthält, wobei die Anzahl N eine Ganzzahl ist, wobei die N jeweiligen Segmente in jedem jeweiligen Paritätssatz ein jeweiliges Paritätssegment und N-1 jeweilige Datensegmente enthält;
Verteilen der N jeweiligen Segmente in jedem jeweiligen Paritätssatz unter den Speicherplatinen derart, daß keines der Speicherplatinen mehr als ein jeweiliges Segment von jedem jeweiligen Paritätssatz aufweist; und
Speichern von einem jeweiligen Datenwert in einem jeweiligen Paritätssegment in zumindest einem Paritätssatz, der durch logisches Exklusiv-Oder-Verknüpfen zusammen mit jeweiligen Datenwerten, die in den jeweiligen Datensegmenten in dem zumindest einen Paritätssatz gespeichert sind, berechnet werden kann.
10. Verfahren zur Verwendung einer Speichervorrichtung, wobei das System eine Vielzahl von Halbleiterspeichersegmenten aufweist, wobei das Verfahren aufweist:
Gruppieren der Segmente in Gruppen, wobei jede der Gruppen N jeweilige Halbleiterspeichersegmente enthält, wobei die Anzahl N eine Ganzzahl ist, wobei die N jeweiligen Segmente in jeder jeweiligen Gruppe jeweilige Datensegmente und ein jeweiliges Paritätssegment aufweisen; und
Speichern eines jeweiligen Datenwerts P in dem jeweiligen Paritätssegment in jeder der Gruppen, der durch ein logisches Exklusiv-Oder-Verknüpfen zusammen mit jeweiligen Datenwerten, die in den jeweiligen Datensegmenten gespeichert sind, berechnet werden kann.
DE10236179A 2001-08-09 2002-08-07 Speichersystem und Verfahren zur Verwendung desselben Withdrawn DE10236179A1 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US09/927,042 US6904556B2 (en) 2001-08-09 2001-08-09 Systems and methods which utilize parity sets

Publications (1)

Publication Number Publication Date
DE10236179A1 true DE10236179A1 (de) 2003-02-20

Family

ID=25454074

Family Applications (1)

Application Number Title Priority Date Filing Date
DE10236179A Withdrawn DE10236179A1 (de) 2001-08-09 2002-08-07 Speichersystem und Verfahren zur Verwendung desselben

Country Status (4)

Country Link
US (1) US6904556B2 (de)
JP (2) JP2003131953A (de)
DE (1) DE10236179A1 (de)
GB (1) GB2380836B (de)

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7346831B1 (en) * 2001-11-13 2008-03-18 Network Appliance, Inc. Parity assignment technique for parity declustering in a parity array of a storage system
US6851082B1 (en) 2001-11-13 2005-02-01 Network Appliance, Inc. Concentrated parity technique for handling double failures and enabling storage of more than one parity block per stripe on a storage device of a storage array
US7293138B1 (en) * 2002-06-27 2007-11-06 Adaptec, Inc. Method and apparatus for raid on memory
US7117316B2 (en) * 2002-08-05 2006-10-03 Micron Technology, Inc. Memory hub and access method having internal row caching
US7149874B2 (en) * 2002-08-16 2006-12-12 Micron Technology, Inc. Memory hub bypass circuit and method
US7836252B2 (en) 2002-08-29 2010-11-16 Micron Technology, Inc. System and method for optimizing interconnections of memory devices in a multichip module
US7392436B2 (en) * 2003-05-08 2008-06-24 Micron Technology, Inc. Program failure recovery
US7120727B2 (en) 2003-06-19 2006-10-10 Micron Technology, Inc. Reconfigurable memory module and method
US7260685B2 (en) * 2003-06-20 2007-08-21 Micron Technology, Inc. Memory hub and access method having internal prefetch buffers
US7133991B2 (en) * 2003-08-20 2006-11-07 Micron Technology, Inc. Method and system for capturing and bypassing memory transactions in a hub-based memory system
US7136958B2 (en) 2003-08-28 2006-11-14 Micron Technology, Inc. Multiple processor system and method including multiple memory hub modules
US7120743B2 (en) * 2003-10-20 2006-10-10 Micron Technology, Inc. Arbitration system and method for memory responses in a hub-based memory system
US7788451B2 (en) 2004-02-05 2010-08-31 Micron Technology, Inc. Apparatus and method for data bypass for a bi-directional data bus in a hub-based memory sub-system
US7257683B2 (en) 2004-03-24 2007-08-14 Micron Technology, Inc. Memory arbitration system and method having an arbitration packet protocol
US6980042B2 (en) 2004-04-05 2005-12-27 Micron Technology, Inc. Delay line synchronizer apparatus and method
JP2005309818A (ja) * 2004-04-22 2005-11-04 Hitachi Ltd ストレージ装置、そのデータ読出方法、及びそのデータ読出プログラム
US7363419B2 (en) 2004-05-28 2008-04-22 Micron Technology, Inc. Method and system for terminating write commands in a hub-based memory system
US7681105B1 (en) * 2004-08-09 2010-03-16 Bakbone Software, Inc. Method for lock-free clustered erasure coding and recovery of data across a plurality of data stores in a network
JP5096161B2 (ja) * 2004-12-08 2012-12-12 ジーイー・アビエイション・システムズ・エルエルシー メモリ周辺装置における改良されたエラー検出のためのシステムおよび方法
US20080270704A1 (en) * 2007-04-30 2008-10-30 He Dingshan Cache arrangement for improving raid i/o operations
US8327225B2 (en) 2010-01-04 2012-12-04 Micron Technology, Inc. Error correction in a stacked memory
JP5464347B2 (ja) * 2010-02-22 2014-04-09 日本電気株式会社 メモリ障害処理装置、メモリ障害処理方法及びメモリ障害処理プログラム
US8103937B1 (en) * 2010-03-31 2012-01-24 Emc Corporation Cas command network replication
EP2915049B1 (de) * 2012-10-30 2020-03-04 Hewlett-Packard Enterprise Development LP Intelligente speicherpuffer
US9747035B2 (en) * 2014-12-17 2017-08-29 Empire Technology Development Llc Reducing memory overhead associated with memory protected by a fault protection scheme
WO2022198429A1 (zh) * 2021-03-23 2022-09-29 深圳市欢太科技有限公司 一种数据冗余备份方法、装置、存储介质及电子设备

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5218691A (en) * 1988-07-26 1993-06-08 Disk Emulation Systems, Inc. Disk emulation system
JPH0731582B2 (ja) * 1990-06-21 1995-04-10 インターナショナル・ビジネス・マシーンズ・コーポレイション パリティ保護データを回復するための方法および装置
WO1993023803A1 (fr) * 1992-05-21 1993-11-25 Fujitsu Limited Appareil de commande pour pile de disques
JP3065481B2 (ja) * 1994-04-22 2000-07-17 インターナショナル・ビジネス・マシーンズ・コーポレ−ション ディスク・アレイ装置およびデータの格納方法
JPH0887424A (ja) * 1994-09-16 1996-04-02 Toshiba Corp 電子計算機
DE19540915A1 (de) * 1994-11-10 1996-05-15 Raymond Engineering Redundante Anordnung von Festkörper-Speicherbausteinen
US5862158A (en) * 1995-11-08 1999-01-19 International Business Machines Corporation Efficient method for providing fault tolerance against double device failures in multiple device systems
JPH09218754A (ja) * 1996-02-13 1997-08-19 Ekushingu:Kk データ記憶システム
US6247157B1 (en) * 1998-05-13 2001-06-12 Intel Corporation Method of encoding data signals for storage
US6785835B2 (en) 2000-01-25 2004-08-31 Hewlett-Packard Development Company, L.P. Raid memory
US6745284B1 (en) 2000-10-02 2004-06-01 Sun Microsystems, Inc. Data storage subsystem including a storage disk array employing dynamic data striping

Also Published As

Publication number Publication date
US6904556B2 (en) 2005-06-07
JP2003131953A (ja) 2003-05-09
GB2380836A (en) 2003-04-16
GB2380836B (en) 2005-06-15
GB0217160D0 (en) 2002-09-04
US20030033572A1 (en) 2003-02-13
JP4643539B2 (ja) 2011-03-02
JP2007052805A (ja) 2007-03-01

Similar Documents

Publication Publication Date Title
DE10236179A1 (de) Speichersystem und Verfahren zur Verwendung desselben
DE69636663T2 (de) System und Verfahren zur Zugriffsverteilung von Mehrfachspeichermatrixen zwischen Mehrfachwirtrechnersystemen
DE60316776T2 (de) Auf netzwerkdatenspeicherung bezogene operationen
DE60031499T2 (de) Verfahren zur Übertragung von Signalen der Typen "fibre-channel" und "non-fibre-channel" über ein gemeinsames Kabel
DE69733076T2 (de) Hochleistungsdatenweg mit sofortigem xor
DE69632219T2 (de) Speicherplattenanordnungssystem
DE602005004120T2 (de) System und verfahren zur übernahme von partnerbetriebsmitteln in verbindung mit coredump
DE69814579T2 (de) Parallel arbeitende exklusiv-oder-einheit
DE69724834T2 (de) System für hochverfügbare datenspeicherung mit allgemein-adressiertem speicher
DE4422786B4 (de) Speichersystem
DE69919137T2 (de) Datenspeichersystem
DE69838898T2 (de) Doppelte Plattenspeichersteuerungen
DE2749850C3 (de) Hybrider Halbleiterspeicher mit assoziativer Seitenadressierung, Seitenaustausch und Steuerung auf dem Chip
DE602005000926T2 (de) Speichersystem und Speicherauszugs-Erstellungsverfahren eines Speichersystems
DE69724846T2 (de) Mehrweg-Ein/Ausgabespeichersysteme mit Mehrweg-Ein/Ausgabeanforderungsmechanismus
EP2880534B1 (de) Hochverfügbares rechnersystem, arbeitsverfahren und dessen verwendung
DE102013101863A1 (de) Hochverfügbares Hauptspeicher-Datenbanksystem, Arbeitsverfahren und deren Verwendungen
DE112007002211T5 (de) Vorrichtung und Verfahren zum Verbinden von SAS RAID Controller-Vorrichtungs-Kanälen über redundante Speichersubsysteme hinweg
DE3032630C2 (de) Halbleiterspeicher aus Speicherbausteinen mit redundanten Speicherbereichen und Verfahren zu dessen Betrieb
DE4423949A1 (de) E/A-Hilfssystem und Exklusiv-Steuerverfahren, Datenspeicherverfahren und Speicherinitialisierungsverfahren in einem E/A-Hilfssystem
DE19723909A1 (de) Verfahren zum Erzielen einer geteilten Paritätsersatzplatte in einem RAID-Untersystem
DE69930307T2 (de) Datenspeichersystem
DE112019005408B4 (de) Masterloses raid für byte-adressierbaren nichtflüchtigen speicher
DE69635713T2 (de) Diskarray-Teilsystem
DE10350590A1 (de) Verfahren und Vorrichtung zum Sichern von Daten bei mehreren unabhängigen Schreib-Lese-Speichern

Legal Events

Date Code Title Description
8139 Disposal/non-payment of the annual fee