DE69733076T2 - Hochleistungsdatenweg mit sofortigem xor - Google Patents

Hochleistungsdatenweg mit sofortigem xor Download PDF

Info

Publication number
DE69733076T2
DE69733076T2 DE69733076T DE69733076T DE69733076T2 DE 69733076 T2 DE69733076 T2 DE 69733076T2 DE 69733076 T DE69733076 T DE 69733076T DE 69733076 T DE69733076 T DE 69733076T DE 69733076 T2 DE69733076 T2 DE 69733076T2
Authority
DE
Germany
Prior art keywords
data
bus
memory
disk
host
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 - Fee Related
Application number
DE69733076T
Other languages
English (en)
Other versions
DE69733076D1 (de
Inventor
C. Robert SOLOMON
K. Brian BAILEY
Robert Yates
Peter Everdell
H. Elizabeth REEVES
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
Application filed by EMC Corp filed Critical EMC Corp
Application granted granted Critical
Publication of DE69733076D1 publication Critical patent/DE69733076D1/de
Publication of DE69733076T2 publication Critical patent/DE69733076T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related 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
    • 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/1054Parity-fast hardware, i.e. dedicated fast hardware for RAID systems with parity

Description

  • Die vorliegende Erfindung betrifft Hochverfügbarkeits-Festplattenarrays (Disk-Arrays) zur Verwendung in Datenverarbeitungssystemen und im Besonderen einen Hochleistungsdatenweg zum Berücksichtigen von Validitäts- und Fehlerprüfungen, wobei ein akzeptabler und zuverlässiger Durchsatz während Plattenzugriffsvorgängen aufrecht erhalten wird.
  • Der Engpass vieler Systeme und ihrer Anwendungen liegt auf der Ein-/Ausgabeebene. Anwendungen verlangen mehr und mehr Geschwindigkeit und Bandbreite von ihren Datenspeicherprodukten. Außer der Geschwindigkeit müssen bei einer Anwendung wie Video-on-Demand (VOD, Video auf Verlangen) die Festplattenzugriffe bezüglich Geschwindigkeit und Intervall rechtzeitig sein. Das heißt, der Bedarf für VOD ist der einer hohen Bandbreite ohne Unterbrechung. Speziell muss die für VOD erforderliche Geschwindigkeit unterbrechungsfrei aufrecht erhalten werden – was ununterbrochene Filmausschnitte ergibt.
  • Festplattenarray-Systeme wurden für hohe Verfügbarkeit und Zuverlässigkeit entwickelt. Insbesondere stellen die als RAID (Redundant Array of Inexpensive Disks) bekannten Systeme Ausfallsicherheit durch die Verwendung von mehreren Festplatten und Datenverteilungs- und -korrekturmethoden bereit. US-Patent Nr. 5537567 offenbart ein RAID-System mit Datenverteilung und Paritätsblöcken für Datenschutz. Leider bewirken die Methoden zum Erhöhen der Zuverlässigkeit oft die Verlangsamung eines Ein-/Ausgabevorgangs.
  • Es ist erwünscht, Systeme und Methoden zum Aufrechterhalten der Zuverlässigkeit von RAID-Systemen und gleichzeitig zum Vergrößern ihrer Geschwindigkeit zu konzipieren.
  • Zusammenfassung der Erfindung
  • Die vorliegende Erfindung wird von den angefügten unabhängigen Ansprüchen definiert und betrifft einen Hochleistungsdatenweg zur Verwendung insbesondere in einem RAID-Controller. Der Hochleistungsdatenweg erlaubt beschleunigte Verfahren zum Lesen und Schreiben von Daten aus einem/in ein Festplattenarray, das ein EXKLUSIV-ODER-gestütztes Paritätssystem implementiert. Der Hochleistungsdatenweg hat einen ersten Bus und einen zweiten Bus, die schaltbar miteinander verbunden sind. Ein erster Speicher befindet sich auf dem ersten Bus und ein zweiter Speicher befindet sich auf dem zweiten Bus. Eine EXKLUSIV-ODER-Maschine (XOR-Maschine) ist schaltbar mit dem ersten und dem zweiten Bus verbunden. Die XOR-Maschine dient zum EXKLUSIV-ODER-Verknüpfen von Daten, die zwischen dem ersten und dem zweiten Speicher über den ersten und den zweiten Bus geleitet werden, mit Daten in einem Pufferspeicher und zum Zurücksetzen des Ergebnisses in den Pufferspeicher. Einer der zwei Speicher kann als ein hostseitiger Speicher bezeichnet werden und der andere als festplattenseitiger Speicher. Der hostseitige Speicher zwischenspeichert Daten für einen Schreibvorgang und der festplattenseitige Speicher zwischenspeichert von den Festplatten erhaltene Daten zum Vervollständigen eines Lesevorgangs. Die zwei Speicher können auch vorteilhaft als Cache-Speicher verwendet werden.
  • Der Hochleistungsdatenweg ist zum Durchführen von Datenlese- und -schreibvorgängen von/zu einem redundanten Festplattenarray nützlich. Festplattengruppen stehen insofern miteinander in Interrelation, als ein Sektor auf einer der Platten einem Sektor in jeder der anderen Platten in der Gruppe entspricht. Der Sektor von einer der Platten in der Gruppe enthält Parität, die aus den Ergebnissen der EXKLUSIV-ODER-Verknüpfung von entsprechenden Worten in den entsprechenden Datensektoren zusammengesetzt ist. Wenn ein Lesevorgang von den Festplatten über den Hochleistungsdatenweg durchgeführt wird, kann eine EXKLUSIV-ODER-Verknüpfung entsprechender Wörter bei laufendem Betrieb („on the fly") durchgeführt werden, d.h. während Daten an der XOR-Maschine vorbeibewegt werden. Das ausnutzend können Daten an einen Hostrechner geliefert werden, bevor alle Platten auf den Lesevorgang reagiert haben. Die fehlenden Daten von der letzten Platte werden im Wesentlichen bei laufendem Betrieb in der XOR-Maschine rekonstruiert. Der Schreibvorgang zu den Festplatten wird auch insofern beschleunigt, als Daten, während sie aus dem Zwischenspeicherbereich im hostseitigen Speicher zu dem festplattenseitigen Speicher bewegt werden, die im Hochleistungsdatenweg separat vorgesehen sind, gleichzeitig in der XOR-Maschine EXKLUSIV-ODER-verknüpft werden. Nach Abschluss des Bewegens der Daten aus dem hostseitigen Speicher in den festplattenseitigen Speicher enthält der XOR-Pufferspeicher die EXKLUSIV-ODER-verknüpfte Parität zum Bewegen auf die Paritätsplatte.
  • Ein DMA (direkter Speicherzugriff) steuert die XOR-Maschine und kann auch zusätzliche Funktionalität bereitstellen. Beispielsweise kann das DMA zum Erzeugen einer Prüfsumme für Daten, die geschrieben werden, und zum Prüfen der Prüfsumme von gelesenen Daten verwendet werden. Indem sie bei laufendem Betrieb arbeiten, werden das DMA und der XOR-Vorgang vorteilhaft ohne Leistungsverschlechterung abgeschlossen.
  • Andere Aufgaben und Vorteile der vorliegenden Erfindung gehen aus der folgenden Beschreibung in Verbindung mit den Zeichnungen hervor.
  • Kurze Beschreibung der Zeichnungen
  • 1 ist ein Blockdiagramm eines RAID-Controllers mit dem Hochleistungsdatenweg der vorliegenden Erfindung.
  • 2 ist ein Blockdiagramm des Speichercontrollers und des Speichers, die mit jedem der festplattenseitigen und hostseitigen Speicher in der Erfindung von 1 verwendet werden.
  • 3 ist ein Blockdiagramm einer Datenwegsteuermaschine zur Verwendung in dem Hochleistungsdatenweg der vorliegenden Erfindung.
  • 4 ist ein Blockdiagramm der DMA-Logik zum Aufnehmen in die Datenwegsteuermaschine von 3.
  • Ausführliche Beschreibung der im Vorliegenden bevorzugten Ausgestaltung
  • Der Hochleistungsdatenweg der Erfindung wird jetzt im Zusammenhang des in 1 gezeigten RAID-Controllers beschrieben. Der RAID-Controller leitet Ein-/Ausgabevorgänge zwischen einem Festplattenarray und den Hostrechnern. Daten auf den Platten werden nach einem RAID-Algorithmus, z.B. RAID 3 oder RAID 5, angeordnet. Der RAID-Controller der im Vorliegenden bevorzugten Ausgestaltung ist zur Verwendung mit einem Fibre-Channel implementiert. Ein Fibre-Channel-Protokoll wurde für die Systemkommunikation mit Festplattenarrays standardisiert. Ein hostseitiger Fibre-Channel-Controller 12 ist am Host-Ende des RAID-Controllers zum Anschluss an Hostrechner bereitgestellt. Ein Hub 14 ermöglicht, dass mehr als ein Host mit dem hostseitigen Fibre-Channel-Controller 12 verbunden wird. Der hostseitige Fibre-Channel-Controller in Verbindung mit Treibersoftware implementiert das hostseitige Fibre-Channel-Protokoll. Der hostseitige Fibre-Channel-Controller bewegt zwei Typen von Daten zwischen sich und einem angebrachten Speichersystem, Steuerdaten und Anwenderplattendaten. Steuerdaten haben einen relativ niedrigen Bandbreitenbedarf und die Anwenderplattendaten haben einen relativ hohen Bandbreitenbedarf. Der Hochleistungsdatenweg der vorliegenden Erfindung ist zum Beschleunigen von Vorgängen, an denen Anwenderplattendaten beteiligt sind, ausgeführt.
  • Steuerdaten bestehen aus Steuerstrukturen, einer kleinen Menge von FCP-Daten (Modusseiten usw.) und Fibre-Channel-Daten (Login etc.). Diese Daten sind alle Daten, auf die selten zugegriffen wird. Der Bandbreitenbedarf dieser Daten ist relativ klein und der Prozessorbedarf zum Lesen und Schreiben dieser Daten ist relativ hoch. Infolgedessen werden die Steuerdaten alle in einem gemeinsam genutzten Speichersystem gespeichert, das die Job-Verarbeitungseinheit 24 auch für ihre eigene Betriebssoftware benutzt. Alle Steuerdatenabrufe zu und von dem hostseitigen Fibre-Channel-Controller 12 und einem festplattenseitigen Fiber-Channel-Controller 16 werden über einen oberen Bus 20 durchgeführt, der ein standardmäßiger PCI-Bus ist.
  • Plattendaten sind die Daten, die zwischen dem Host und den Festplatten passieren. Die Job-Verarbeitungseinheit 24 braucht diese Daten nicht zu lesen oder zu schreiben. Für diese Daten werden EXKLUSIV-ODER-Verknüpfungen oder Prüfsummen benötigt. Datenwörter werden mit entsprechenden Wörtern in einem Paritätssektor EXKLUSIV-ODER-verknüpft, um eine aktualisierte Parität zu erhalten. Eine Prüfsumme wird für einen Sektor ermittelt, indem alle Plattendatenwörter in dem Sektor zusammen EXKLUSIV-ODER-verknüpft werden. Die Bandbreitenerfordernisse von Plattendaten sind bedeutend. Infolgedessen ist der spezialisierte Hochleistungsdatenweg der vorliegenden Erfindung zur Verwendung mit allen Plattendatenbewegungen vorgesehen.
  • Der festplattenseitige Fibre-Channel-Controller 16 implementiert in Verbindung mit festplattenseitiger Treibersoftware das Fibre Channel-Arbitrated Loop-Protokoll unter den Festplattenarrays. Sowohl der hostseitige Fibre-Channel-Controller 12 als auch der festplattenseitige Fibre-Channel-Controller 16 haben Zugang zu dem PCI-Bus 20 und dem Hochleistungsdatenweg der vorliegenden Erfindung. Der hostseitige Fibre-Channel-Controller hat Schnittstellen mit Hostrechnern, während der festplattenseitige Fibre-Channel- Controller Schnittstellen mit den Festplattenlaufwerken hat. Der hostseitige Fibre-Channel-Controller und der festplattenseitige Channel-Controller können konventionelle Fibre-Controller wie der von Hewlett Packard hergestellte TachyonTM-Chip sein.
  • Der Router 18 in dem Diagramm bietet die Fähigkeit des Systems zum Verbinden des festplattenseitigen Fibre-Channel-Controllers 16 mit einer der zwei Fibre-Channel-Schleifen, die konventionell in einem Fibre-Channel-System vorhanden sind. Ein im Vorliegenden bevorzugtes Verfahren für den Anschluss an Festplattenarrays in einem Fibre-Channel-System wird in der US-Patentanmeldung der Seriennummer 08/749,311, angemeldet am 14. November 1996 und mit dem Titel „Fail-over Switching System" derselben Zessionarin wie der der vorliegenden Anmeldung gezeigt.
  • Bus Gaskets 22 bilden eine Schnittstelle zwischen dem Bus von jedem der Fibre-Channel-Controller und dem PCI-Bus 20 und dem Hochleistungsdatenweg der Erfindung. Der PCI-Bus ist durch eine PCI-Brückenschnittstelle 26 mit der Job-Verarbeitungseinheit 24 verbunden. Die PCI-Brückenschnittstelle 26 muss die Schnittstelle für den 32-Bit-PCI-Bus mit dem in der Job-Verarbeitungseinheit 24 verwendeten 64-Bit-60X-Bus herstellen. Die Job-Verarbeitungseinheit 24 weist einen Mikroprozessor auf. Gemäß der im Vorliegenden bevorzugten Ausgestaltung ist ein Motorola Power PC mit 200 MHz Leistung implementiert. Zur Vervollständigung der Job-Verarbeitungseinheit 24 gibt es auch noch einen Level 2 Prozessor-Cache-Speicher, ein Steuer-DRAM und ein Flash-ROM. Mit Einschaltprozeduren in Bezug stehende RAID-Controller-Firmware findet sich in dem Flash-ROM. Firmware in dem Flash-ROM wird in der Job-Verarbeitungseinheit 24 ausgeführt. Die Job-Verarbeitungseinheit hat eine feste DRAM-Menge, die gemäß der im Vorliegenden bevorzugten Ausgestaltung 8 MB zur Verwendung durch die Firmware, die Platten-Cache-Kontrollstrukturen (Cache Tracking-Strukturen) und die Steuerstrukturen für die Fibre-Channel-Controller beträgt.
  • Eine Lokalressourceneinheit 28 ist durch eine PCI-PCMCIA-Brücke 30 mit dem PCI-Bus verbunden. Die Lokalressourceneinheit 28 ist ein Umgebungsmonitor. Sie stellt eine Sammelstelle für von dem RAID-Controller benutzte Steuer, Status- und gemeinsam genutzte Ressourcen dar. Zu diesen Ressourcen gehören Kommunikationsports für externe Konsole, Austauscheinheitsstatus und Notstromversorgungsüberwachung.
  • Im Folgenden wird nun der Hochleistungsdatenweg in dem RAID-Controller beschrieben. Durch den normalen Betrieb eines RAID-Controllers wird Speicher zum Zwischenspeichern benötigt, um der asynchronen Art von Festplatten-Ein-/Ausgaben gerecht zu werden. Logisch miteinander verwandte Vorgänge, aber Vorgänge physikalisch separater Festplatten müssen oft bis zum Abschluss aller Festplattenvorgänge zwischengespeichert werden. Ein RAID-Controller sollte daher einen Speicher zum Zwischenspeichern haben. Gemäß der vorliegenden Erfindung sind ein erster hostseitiger Speicher 32 und ein zweiter festplattenseitiger Speicher 34 vorgesehen. Ein vorteilhaftes Merkmal der vorliegenden Erfindung ist, dass der hostseitige Speicher 32 und der festplattenseitige Speicher 34 die doppelte Funktion von Speichern zum Zwischenspeichern und Cache-Speichern haben können. Mit der aktuellen Konstruktion können die separaten festplattenseitigen und hostseitigen Cache-Speicher so nahe wie möglich an ihren Quellen angeordnet werden. Algorithmen und Architekturen zum Platten-Cache-Speichern sind im Fach gut bekannt. Der hostseitige Speicher und der festplattenseitige Speicher sind DRAM DIMMs mit ECC-Schutz (ECC: Error Correcting Code/Fehlerbeseitigungscode) gemäß der im Vorliegenden bevorzugten Ausgestaltung. Die Speicher werden jeweils von einem Speichercontroller 36 gesteuert. Der Hochleistungsdatenweg hat einen ersten Bus r zum Verbinden mit dem Speichercontroller 36, der den hostseitigen Speicher 32 betreibt. Es gibt auch einen zweiten Bus 40 zum Verbinden mit dem Speichercontroller, der den festplattenseitigen Speicher 34 betreibt. Der erste und der zweite Bus sind durch Schaltvorrichtungen 42 selektiv schaltbar.
  • Die Schaltvorrichtungen 42 sind auch mit einer Datenwegsteuermaschine 44 verbunden. Die Datenwegsteuermaschine ist eine kombinierte DMA-Einheit (DMA: direkter Speicherzugriff) und XOR-Maschine. Die Datenwegsteuermaschine kann auch eine Maschine für die Prüfsummenerstellung aufweisen. Die Schaltvorrichtungen 42 können den ersten Bus, den zweiten Bus und die Datenwegsteuermaschine alle auf einmal miteinander verbinden oder sie können dazu verwendet werden, den hostseitigen Speicher 32 oder den festplattenseitigen Speicher 34 von den anderen zu isolieren. Die Datenwegsteuermaschine 44 hat auch eine DMA/XOR-Maschine 46 und einen XOR-Pufferspeicher 48. Beim Durchführen einer EXKLUSIV-ODER-Verknüpfung an Datentransfers werden die ersten Daten, die zwischen dem hostseitigen Speicher und dem festplattenseitigen Speicher geleitet werden, in den XOR-Pufferspeicher 48 kopiert. In nachfolgenden Datentransfers zwischen den zwei Speichern werden Datenwörter von der DMA/XOR-Maschine mit den entsprechenden Datenwörtern in dem XOR-Pufferspeicher 48 EXKLUSIV-ODER-verknüpft. Jedesmal wird das Ergebnis der EXKLUSIV-ODER-Verknüpfung wieder in den XOR-Pufferspeicher 48 gelegt. Beim Durchführen eines Schreibvorgangs zu miteinander in Interrelation stehenden RAID-Festplatten, wenn alle Daten in einer entsprechenden Gruppe EXKLUSIV-ODER-verknüpft wurden, finden sich die Paritätsdaten in dem XOR-Pufferspeicher.
  • Eine Ablaufsteuerung (Sequencer) 50 wird zum Steuern des Betriebs der DMA/XOR-Maschine 46 verwendet. Die Ablaufsteuerung ist ein Mikroprozessor, der eine Liste von Anweisungen durchführt. Die Anweisungen werden von der Job-Verarbeitungseinheit 24 geliefert. Eine PCI-Brückenschnittstelle 52 bildet die Schnittstelle zwischen dem 64-Bit-Bus der Ablaufsteuerung 50 und dem 32-Bit-PCI-Bus. Die Ablaufsteuerung 50 arbeitet in Verbindung mit einem Flash-ROM 54, der den Konfigurations- und Power-on-Selbsttestcode für die Ablaufsteuerung 50 enthält. Die Ablaufsteuerung 50 weist die DMA-Einheit auch mit Bezug auf den Zustand der Schaltvorrichtungen 42 an. Die Ablaufsteuerung kann ein Motorola Power PC mit einem Betrieb bis zu 100 MHz gemäß der im Vorliegenden bevorzugten Ausgestaltung sein.
  • Der im Vorliegenden bevorzugte RAID-Controller ist mit einem Peer-Controller versehen. Die zwei Controller sind bei normalem Betrieb jeweils mit unabhängigen Fibre-Channels verbunden. Eine direkte SCSI-Verbindung zwischen den Controllern stellt Direktverbindungen zwischen den zwei Controllern bereit. Eine Peer-Brücke 60 erleichtert diese Kommunikation. Um einen hochverfügbaren Schreib-Cache-Speicher im hostseitigen Speicher 32 aufrecht zu erhalten, muss er gespiegelt werden. Speicher in dem Peer-Prozessor wird für die Spiegelung des Schreib-Cache-Speichers für jeden der RAID-Controller verwendet. Zwei dedizierte 64-Bit-Datenwege sind zwischen den zwei Peer-Controllern zur Verwendung bei der Spiegelung der Cache-Speicherungsdaten vorgesehen. Alle Schreibdaten werden gespiegelt, bevor sie auf eine Platte geschrieben werden. Vorteilhaft kann die Spiegelung bei von dem Lesebus 40 isoliertem Schreibbus 38 stattfinden, sodass der Lesebus andere Operationen während des Spiegelungsvorgangs abarbeiten kann. Die Spiegelungsdaten werden gemäß der im Vorliegenden bevorzugten Ausgestaltung von einem Controller zu dem anderen geschoben. Das heißt, dass ein Controller Daten in einen Spiegelungs-FIFO 58 legt, der am Peer-Controller physikalisch vorhanden ist. Der Peer-Controller entfernt die Daten aus seinem Spiegelungs-FIFO und legt sie in seinen eigenen Speicher. Dieser Ansatz erlaubt dem empfangenden Controller, bestimmte Validitätsprüfungen an der Adresse der Daten durchzuführen und Firewalls zwischen den zwei Platinen aufzubauen, sodass, wenn ein erster Controller versuchen sollte, Daten in eine Stelle am Peer-Controller zu schreiben, für die er nicht autorisiert ist, der erste Controller abgefangen wird und daran gehindert wird, Schäden an dem empfangenden Peer-Controller zu verursachen.
  • Der gespiegelte Cache gewährt im Fall eines Speicherausfalls oder eines Prozessorausfalls Schutz. Im Fall eines derartigen Ausfalls bleiben die Daten des Hosts in dem gespiegelten Cache verfügbar.
  • Der Hochleistungsdatenweg der Erfindung ist zur Verwendung in Verbindung mit einem Festplattenarray bestimmt, in dem die Daten auf einer Gruppe von Platten miteinander in Interrelation stehen. Die Interrelation beinhaltet das Bereitstellen von Parität auf einer der Platten. Die Paritätsdaten sind eine EXKLUSIV-ODER-Verknüpfung der Daten auf jeder der anderen Platten. Die Platten sind meist in Streifen aufgeteilt (Striping), sodass Sektoren auf jeder der Platten zu einem Streifen gehören. Es wird hierin davon ausgegangen, dass zu einem Streifen gehörende Sektoren alle einander entsprechen. Alle Datensektoren in einem Streifen werden miteinander EXKLUSIV-ODER-verknüpft, um den Paritätssektor für diesen Streifen zu erzeugen.
  • Die Vorteile des Hochleistungsdatenwegs der Erfindung sind in dem Abschluss von RAID-Operationen besser ersichtlich. Beispielsweise wird ein RAID 3-Lesevorgang durchgeführt, indem der Sektor von jeder Platte in einem Streifen aus einer miteinander in Interrelation stehenden Gruppe von Platten gelesen werden. Das Lesen aus den Platten findet asynchron statt. Während des Lesens von Daten aus den Platten in den festplattenseitigen Speicher isolieren die Schaltvorrichtungen 42 den Lesebus 40 von dem Schreibbus 38 und der Datenwegsteuermaschine 44. Wenn die Daten ankommen, werden sie in den festplattenseitigen Speicher 34 geschrieben. So werden die Daten bis zum Abschluss des gesamten Lesevorgangs in dem festplattenseitigen Speicher zwischengespeichert. Im typischen Fall liest ein RAID 3-Lesevorgang nur die Datensektoren in einem Streifen. Man würde warten, bis alle Datensektoren in dem Streifen gelesen und in den Speicher geschrieben sind. Infolgedessen kann es gelegentlich zu längeren Verzögerungen kommen, wenn eine der Platten einen Fehler erfährt oder nicht pünktlich reagiert. Auch der Übergang zu einem verschlechterten Betrieb (bei dem eines der Plattenlaufwerke fehlt) führt zu einer merklich längeren Verzögerung, weil dann Paritätsinformationen und -rekonstruktion erforderlich sind. Gemäß der vorliegenden Erfindung kann eine Modus ausgewählt werden, in dem alle der Sektoren einschließlich dem Paritätssektor gelesen werden, aber nicht gewartet werden muss, bis das letzte Plattenlaufwerk seinen Datensektor bereitstellt. Bei Betrieb in diesem „N – 1 and go"-Betrieb werden die Daten von den ersten N – 1 Platten (wobei N die Gesamtzahl von Platten in einer Gruppe ist) in der in Interrelation stehenden Gruppe nacheinander von dem festplattenseitigen Speicher zu dem hostseitigen Speicher bewegt. Zu diesem Zweck verbinden die Schaltvorrichtungen 42 den festplattenseitigen Speicher, den hostseitigen Speicher und die Datenwegsteuermaschine miteinander. Wenn die Daten aus dem festplattenseitigen Speicher zu dem hostseitigen Speicher bewegt werden, wird gleichzeitig eine Kopie der Daten für die erste Bewegung in den XOR-Pufferspeicher 48 kopiert oder gefüllt. Für jeden nachfolgenden Datensektor, der von dem festplattenseitigen Speicher zu dem hostseitigen Speicher bewegt wird, führt die DMA/XOR-Maschine 46 eine EXKLUSIV-ODER-Verknüpfung an diesen Daten mit den entsprechenden Wörtern von in dem XOR-Pufferspeicher 48 befindlichen Daten durch. Das Ergebnis der EXKLUSIV-ODER-Operation wird wieder in den XOR-Pufferspeicher gelegt. Die EXKLUSIV-ODER-Verknüpfung wird aufeinanderfolgend wiederholt, bis alle außer einem der entsprechenden Sektoren in dem Streifen bewegt worden sind. Auf der Basis dessen, welche Plattenein-/-ausgaben abgeschlossen wurden, weiß die Job-Verarbeitungseinheit 24 immer, welche Daten und Parität von den Platten erhalten wurden. Dies wird beim Versehen der Ablaufsteuerung 50 mit ihrer Liste durchzuführender Operationen verwendet. Wenn der letzte noch fehlende Sektor ein Datensektor ist, wird der Inhalt des XOR-Pufferspeichers 48 dann in den hostseitigen Speicher bewegt, da er gleich den Daten in dem Sektor sein sollte, die noch nicht angekommen sind. Wenn der letzte noch fehlende Sektor der Paritätssektor ist, wird der Inhalt des XOR-Pufferspeichers 48 nicht benötigt und die normalen RAID 3-Bewegungen des Datensektors waren ausreichend.
  • Ein von dem Hochleistungsdatenweg unterstützter Schreibvorgang funktioniert wie folgt. Die zu schreibenden Daten werden in den hostseitigen Speicher 32 geschrieben, während der Schreib-Bus 38 von dem Lese-Bus 40 und der Datenwegsteuermaschine 44 isoliert ist. Die Daten werden daher bis zum Abschluss des Schreibvorgangs in dem hostseitigen Speicher zwischengespeichert. Der hostseitige Speicher wird mit der Datenwegsteuermaschine und dem festplattenseitigen Speicher in Verbindung geschaltet. Datensektoren werden nacheinander aus dem hostseitigen Speicher in den festplattenseitigen Speicher bewegt. Der erste Datensektor wird kopiert und in den XOR-Pufferspeicher 48 gefüllt. Für jeden nachfolgenden Datensektor werden seine Datenwörter in der DMA/XOR-Maschine 46 mit entsprechenden Wörtern in dem XOR-Pufferspeicher 48 EXKLUSIV-ODER-verknüpft, um ein Ergebnis zu produzieren, das wieder in den XOR-Pufferspeicher 48 zurück gelegt wird. Nachdem der letzte der Datensektoren EXKLUSIV-ODER-verknüpft worden ist, wird der Inhalt des XOR-Pufferspeichers 48 zum festplattenseitigen Speicher bewegt und als der Paritätssektor behandelt. Die Datensektoren und der Paritätssektor des Streifens befinden sich dann in dem festplattenseitigen Speicher und sind zum Schreiben auf die jeweiligen Platten unter der Kontrolle des festplattenseitigen Fibre-Channel-Controllers 16 verfügbar. Das Schreiben auf Platte kann stattfinden, während der Lese-Bus 40 durch die Schalter 42 von dem Schreib-Bus 38 und der Datenwegsteuermaschine 44 isoliert ist.
  • Die Speichercontroller 36 für den hostseitigen Speicher und den festplattenseitigen Speicher können auf die gleiche Weise wie in 2 gezeigt konfiguriert sein. Die spezifische im Vorliegenden bevorzugte Implementierung wird zwar unten beschrieben, aber der durchschnittliche Fachmann kann jede beliebige Zahl von Speichercontrollern implementieren, die die hierin beanspruchten Funktionen der Erfindung erzielen. Konventionelle Speichersteuermethoden sind verfügbar, um zum Erfüllen des Speichersteuerungsbedarfs der vorliegenden Erfindung implementiert zu werden. Die vorliegende Erfindung wird daher in keiner Weise durch die folgende Besprechung der im Vorliegenden bevorzugten Ausgestaltung der Speichercontroller begrenzt. Die Logik für den Betrieb des Speichercontrollers der im Vorliegenden bevorzugten Ausgestaltung ist in einem Speichersteuerlogikbaustein 70 enthalten. Der Logikbaustein kann ein komplexer programmierbarer Logikbaustein (CPLD) wie die von Advanced Micro Devices hergestellten sein. Der Speichersteuerlogikbaustein 70 setzt sich aus drei Abschnitten zusammen: einem Adressen-Controller, einem Datenweg-Controller und einem DIMM-Controller. Der Adressen-Controller zwischenspeichert (latcht) Adressen und Befehle vom jeweiligen Bus weg. Paritätsprüfungen werden an der Adresse durchgeführt. Der Logikbaustein 70 decodiert die Adresse, erzeugt die Reihen- und Spalten-Adressen, inkrementiert die CAS-Adresse (CAS: column address strobe) während Burst-Operationen und arbeitet Seitenüberquerungen ab. Der Daten-Controller-Teil des Logikbausteins ist für die ganze Datenwegsteuerung und das Daten-gültig-Handshake-Protokoll zwischen einem Initiator und einem Ziel verantwortlich. Der DIMM-Controller-Teil arbeitet den Zeilenadressen-Puls RAS (Row Address Strobe), den Spaltenadressen-Puls CAS (Column Address Strobe), das Schreibfreigabesignal WE (Write Enable), das Lesefreigabesignal OE (Output Enable) und das Auffrischen (Refresh) für die DRAMS ab. Der DIMM-Controller enthält RAS- und CAS-Zustandsmaschinen. Die CAS-Maschine ist der einzige Teil des Controllers, der mit 66 MHz läuft. Der Rest des Controllers arbeitet in der im Vorliegenden bevorzugten Ausgestaltung mit 33 MHz. Der Adressen-Controller des Logikbausteins arbeitet in Verbindung mit einem Adressregister 72. Das Adressregister besteht aus zwei Bus-Transceivern mit Paritätsgeneratoren/-prüfern. In der im Vorliegenden bevorzugten Ausgestaltung wird einer der Eingänge zum Adressen-Controller N_X_FRAME genannt. Das N_X_FRAME-Signal wird von dem aktuellen Bus-Master bestätigt (asserted), um das Beginnen und die Dauer eines Zugriffs anzuzeigen. Die Bestätigung wird zu Beginn der letzten Datenphase aufgehoben (deasserted). Bei Einzel-Beat-Betrieb (ein Beat = 8 Byte) wird es für einen Zyklus bestätigt. Das Wort „Beat", wie es hierin gebraucht wird, bezieht sich auf einen einzelnen Buszyklus. Wenn das N_X_FRAME-Signal zwischengespeichert wird, ist das Latch im nächsten Zyklus geschlossen. Das Latch wird wieder geöffnet, wenn die Operation abgeschlossen ist. Ungerade Byte-Parität wird auf jeder Adresse geprüft und ist während des Zyklus nach dem Bestätigen von N_X_FRAME gültig. Ein Lese-/Schreib-Bit X_W_NR wird mit N_X_FRAME für einen Zyklus während der Adressenphase bestätigt. Ein weiteres ähnliches Bit in der im Vorliegenden bevorzugten Ausgestaltung ist mit EDAC_DMD bezeichnet. Das EDAC-Bit definiert den Betrieb als einen EDAC-Betriebsregister-Schreibvorgang für Power-up-Konfiguration oder einen EDAC-Diagnoseregister-Lesevorgang. Beide dieser Signale sind in dem ersten Zyklus gültig, in dem N_X_FRAME bestätigt ist.
  • Der Xbus-Adressbus X_AD ist mit den niedrigstwertigen 32 Datenbits zeitmultiplexiert. Er wird für einen Zyklus mit N_X_FRAME bestätigt. Die Adressenparitätspins X_PAR haben ungerade Byteparität. Sie werden für einen Zyklus mit N_X_FRAME bestätigt. Bit 3:0 enthält Adressparität für X_AD. Adressen werden auf ungerade Byteparität geprüft, wenn sie während des Zyklus nach der Bestätigung von N_X_FRAME in dem Adressregister zwischengespeichert werden. Wenn es einen Fehler mit ungerader Byteparität gibt, setzt das Adressregister 72 das Adressparitätsfehlerflag N_X_ADDR_PERR in dem Zyklus nach der Bestätigung von N_X_FRAME. Auf die Busadresse BA wird mit dem Logikbaustein 70 vom Adressregister 72 zugegriffen. Das Adressregister erhält eine Adresse zum Beginnen eines Speicherzugriffs und diese Adresse wird inkrementiert, bis der Zugriff abgeschlossen ist.
  • Des Weiteren hat mit Bezug auf den Adressen-Controller die Spaltenadresse einen Inkrementierer, um Burst-Betrieb mit bis zu 65 Beats (530 Bytes) zu erlauben. Wenn eine DRAM-Seitenüberquerung (8-kByte-Grenze, wenn Reihenadresse inkrementiert werden muss) erfasst wird, dann wird eine inkrementierte Reihenadresse generiert, während N_RAS voraufgeladen wird. N_RAS ist der Reihenadresse-Puls (Row Address Strobe) für DIMMs 33. Es wird zwei Zyklen nach N_X_FRAME bestätigt und die Bestätigung wird in dem Zyklus, nachdem die CAS-Zustandsmaschine in den Ruhezustand geht, aufgehoben. Bei einer Seitenüberquerung (Page Crossing) wird die Bestätigung für das Voraufladen (Precharge) aufgehoben, während die neue Adresse generiert wird. N_CAS ist der Spaltenadressen-Puls (Column Address Strobe) für die DIMMs 33. Es wird für einen halben Zyklus bestätigt und von einem 66 MHz-Takt angesteuert. Während Wartezuständen wird es in Voraufladung (Bestätigung aufgehoben) gehalten. Die im Vorliegenden bevorzugte Ausgestaltung ist konfiguriert, um eine von der DRAM-Größe unabhängige Seitengröße (Page Size) zu unterstützen. In der bevorzugten Ausgestaltung unterstützt die Speichergestaltung transparent Zeilenüberquerungen, um synchronisierte Datentransfers zwischen dem Lese- und festplattenseitigen Speicher und dem festplattenseitigen Speicher zu erlauben. Daher besteht keine Notwendigkeit für zusätzliche Wartezustände während Zeilenüberquerungen.
  • Der festplattenseite und der hostseitige Speicher der im Vorliegenden bevorzugten Erfindung werden in nichtverschachtelte DIMM-Buchsen gesteckt. Mithilfe von 16- und 64-Mbit-DRAMs kann der Speicher einer gewünschten Größe konfiguriert werden. In der im Vorliegenden bevorzugten Ausgestaltung ist die DIMM-Buchse spannungsspezifisch gestaltet, sodass nur 3,3-Volt-DRAMS in die Buchse gesteckt werden können. Die DIMMs 33 verwenden bevorzugt 74 LVT 16244 zum Puffern der Adresse und aller Steuersignale außer N_RAS. Neben jedem DRAM sind Entkopplungskondensatoren montiert.
  • Der DIMM-Controller des Logikbausteins 70 hat eine RAS- und eine CAS-Zustandsmaschine. Die RAS-Zustandsmaschine ist die Master-Zustandsmaschine, die sowohl Auffrischung (Refresh) als auch Lese-/Schreibzugriffe abarbeitet. Bei einem Lese-/Schreibvorgang wird N_RAS drei Zyklen, nachdem N_X_FRAME bestätigt worden ist, bestätigt und bleibt bestätigt, bis die CAS-Zustandsmaschine in den Ruhezustand zurückkehrt. Während einer Seitenüberquerung durchläuft die RAS-Zustandsmaschine den Zyklus zurück durch den Ruhezustand, um N_RAS voraufzuladen, während die neue Reihenadresse generiert wird. Für ein CBR-Refresh (CBR: CAS before RAS) startet die RAS-Maschine die CAS-Zustandsmaschine und bestätigt dann N_RAS einen Zyklus, nachdem N_CAS bestätigt wird.
  • Die CAS-Zustandsmaschine wird von einem 66-MHz-Takt betrieben und von der RAS-Zustandsmaschine ausgelöst. Während Lese-/Schreibzugriffen wird N_CAS 15 ns lang bestätigt und dann 15 ns lang voraufgeladen. Wenn Wartezustände von dem Master bestätigt werden oder eine Seitenüberquerung stattfindet, bleibt N_CAS in Voraufladung. Wenn die CAS-Zustandsmaschine gestartet worden ist, synchronisiert sie sich mit einem 33 MHz-Taktsignal, sodass N_CAS immer an der positiven Flanke des 66-MHz-Signals bestätigt wird, das auf die positive Flanke des 33-MHz-Taktsignals ausgerichtet ist. So tastet die Maschine nur 33-MHz-Signale in der zweiten Hälfte des 30-ns-Zyklus ab. Jedes der DIMMs hat separate Aktivierungssignale, die durch N_WE(3:0) und N_MOE(3:0) angezeigt werden. Das Ausgangsfreigabesignal N_MOE wird in demselben Zyklus wie N_RAS an Lesevorgängen bestätigt und für so lange, wie N_RAS bestätigt wird, es sei denn, dass es eine Seitenüberquerung gibt. Während einer Seitenüberquerung werden die Ausgangsfreigabesignale geschaltet, während N_RAS voraufgeladen wird. Das Schreibfreigabesignal N_WE wird auf die gleiche Weise abgearbeitet. Es wird bei Schreibvorgängen in demselben Zyklus wie N_RAS bestätigt, so lange wie N_RAS bestätigt wird, es sei denn, dass es eine Seitenüberquerung gibt.
  • Ein Zeitglied in der lokalen Ressourceneinheit (LRU) 28 bestätigt N_REF_TIME alle 15,4 μs. Der Logikbaustein 70 hat eine Refresh-Zustandsmaschine, die N_X_REF_REQ in dem folgenden Zyklus zum Anfordern eines Refresh-Zyklus ungeachtet des aktuellen Zustands des Controllers bestätigt. Es ist Aufgabe eines in einen CPLD einprogrammierten Zuteilers, das Refresh (Auffrischung) erst zu gewähren, wenn der X-Bus im Ruhezustand ist. Nach Erhalt von N_X_REF_GNT wird ein CBR-Refresh-Zyklus von der RAS- und der CAS-Zustandsmaschine gestartet. Der festplattenseitige und der hostseitige Speicher werden gleichzeitig aufgefrischt. N_X_REF_REQ bleibt bestätigt, bis das Refresh abgeschlossen ist. Das lässt den Zuteiler wissen, wann der Bus frei ist. Während Refresh gewährt der Zuteiler den Bus niemand anderem.
  • Der Datenweg-Controller des Logikbausteins 70 steuert ein erstes Datenregister 76, ein zweites Datenregister 78, eine Fehlererkennungs- und -beseitigungseinrichtung (EDAC) 80 und einen Datentransceiver 82 und das Daten-gültig-Handshake-Schnittstellenprotokoll auf dem X-Bus. Bei einem Lesevorgang werden Daten von dem aktivierten DIMM in das zweite Datenregister 78 getaktet. Um das EDAC 80 im Durchlaufbetrieb zu verwenden, werden die Daten dann in das erste Datenregister 76 an der positiven Flanke des 33-MHz-Takts getaktet. Es nimmt einen ganzen Zyklus ein, durch das EDAC 80 zu gelangen und Setup in den Datentransceiver 82 zu machen [sic]. Das EDAC 80 führt ECC-Erkennung und -Beseitigung im laufenden Betrieb durch und erzeugt ungerade Byteparität für den X-Bus. Daten werden im nächsten Zyklus auf den X-Bus aufgesteuert. N_RD_XOE ist das Ausgangsfreigabesignal des Datentransceivers. Das EDAC prüft die Parität und erzeugt ECC-Prüfbits. Im nächsten Zyklus werden Daten in das zweite Datenregister 78 eingekoppelt und in dem nachfolgenden Zyklus werden Daten in das entsprechende DIMM geschrieben.
  • Ein Vor-Ziel-bereit-Signal dient als Hilfe für das DMA 66 beim Steuern der Initiator-bereit-Signale zwischen dem festplattenseitigen und dem hostseitigen Speicher. Das Vor-Ziel-bereit-Signal setzt den Datentransfer aus, während der Speicher sich auf die Überquerung der Seitengrenze vorbereitet. Wenn ein Lesevorgang läuft, wird das Vor-Ziel-bereit-Signal in dem Zyklus bestätigt, bevor Daten auf dem X-Bus gültig sind. Für Bewegungen zwischen dem Schreib- und dem Lesespeicher erlaubt dies dem DMA-Controller, ein Initiator-bereit-Signal dem Ziel des Lesevorgangs des folgenden Zyklus zu bestätigen. Beim nächsten Zyklus wird ein Ziel-bereit-Signal bis zu dem Zyklus bestätigt, in dem die Bestätigung von N_X_FRAME aufgehoben wird (bei Einzel-Beat-Vorgängen wird es nur für einen Zyklus bestätigt, wenn das Initiator-bereit-Signal ebenfalls bestätigt wird).
  • Für einen Schreibvorgang wird das Vor-Ziel-bereit-Signal in dem Zyklus, bevor es zum Akzeptieren von Daten von dem X-Bus bereit ist, bestätigt. Für Bewegungen zwischen dem Schreib- und dem Lesespeicher erlaubt dies dem DMA, der Quelle des Schreibvorgangs in dem folgenden Zyklus das Initiator-bereit-Signal zu bestätigen. Bestätigung und Aufheben der Bestätigung des Ziel-bereit-Signals sind die gleichen wie für Lesevorgänge.
  • Das EDAC 80 der im Vorliegenden bevorzugten Ausgestaltung ist ein IDT49C466A. Es ist eine 64-Bit-Durchlauf-Fehlererkennungs- und -beseitigungseinheit. Sie verwendet einen modifizierten Hamming-Code zum Korrigieren aller beständigen und sporadische Einbitfehler und erkennt alle Doppelbit- und einige Mehrbitfehler. Die Durchlaufarchitektur mit separaten System- und Speicherbussen ermöglicht einen Pipeline-Datenweg.
  • Im Folgenden wird nun der Betrieb der DMA/XOR-Maschine mit Bezug auf 3 eingehender beschrieben. Die DMA/XOR-Maschine besteht aus zwei Teileinheiten. Die erste ist eine Datenmaschine und die zweite eine XOR-Maschine. Die Datenmaschine ist zum Erzeugen/Prüfen der Prüfsumme und zum Bewegen von Daten zwischen dem festplattenseitigen- und dem hostseitigen Speicher, aus dem hostseitigen Speicher zu dem Spiegelungs-FIFO 58, aus dem XOR-Pufferspeicher 48 zu dem festplattenseitigen und dem hostseitigen Speicher, aus dem festplattenseitigen und dem hostseitigen Speicher zu dem XOR-Pufferspeicher 48 und für unmittelbare Datenbewegungen zu und von dem festplattenseitigen oder dem hostseitigen Speicher, dem XOR-Pufferspeicher oder dem Spiegelungs-FIFO 58 zuständig. Unmittelbare Datenbewegungen sind als vorbestimmte Bewegungen eines Konstantzahlenwertes (zum Definieren der Zahl wird keine Adresse benötigt) vorcodiert. Die Datenmaschine überwacht auch den Status des Spiegelungs-FIFOs 58 des zweiten Peer-Prozessors. Wenn sich im Spiegelungs-FIFO 58 Daten befinden, enthält das DMA 66 ein sie abbildendes Statusbit. Wenn die Peer-Ablaufsteuerung ihre gespiegelten Daten in ihren hostseitigen Speicher bewegt hat, signalisiert sie der DMA-Ablaufsteuerung, dass es beendet wurde und dass während des Transfers kein Fehler auftrat.
  • Die zweite Einheit der DMA/XOR-Maschine ist die XOR-Maschine, die RAID-Paritätsdaten generiert, die RAID 3-Paritätsdaten prüft und auf Hardware-Bus-(Daten- und Addressenweg)-Paritätsfehler von dem festplattenseitigen und dem hostseitigen Speicher prüft. Die XOR-Maschine setzt sich aus programmierbaren Logikbausteinen und dem XOR-Pufferspeicher 48 zusammen. Die XOR-Maschine sendet RAID-Datenstatus zu der Datenmaschine und Hardware-Paritätsfehler zu der lokalen Ressourceneinheit (LRU) 28 zurück.
  • Die Schaltvorrichtungen 42 sind als drei separate Schalter implementiert. Ein erster Schalter 62 kann zum Isolieren des Schreibbusses 38 von dem Lesebus 40 und der Datenwegsteuermaschine 44 verwendet werden. Ein zweiter Schalter 64 kann zum Isolieren des Lesebusses 40 von dem Schreibbus 38 und der Datenwegsteuermaschine 44 verwendet werden. Ein dritter Schalter 68 ist zum Erhalten der Ausgabe des XOR-Puffers 48 geschaltet. Der dritte Schalter 68 erlaubt das Laden der Ergebnisse in dem XOR-Pufferspeicher 48 auf den Lese- oder Schreibbus, je nach dem Zustand der anderen zwei Schalter. Die Schalter in einer im Vorliegenden bevorzugten Ausgestaltung sind mit Kreuzschienenschaltern implementiert, insbesondere CBT16212-Schaltern. Der Zustand der Schalter wird von dem DMA 66 gesteuert. Der Zustand der Schalter kann gesteuert werden, sodass der Lesebus 40, der Schreibbus 38 und die Datenwegsteuermaschine 44 alle miteinander verbunden werden. Alternativ können die Schalter zum Isolieren von einem oder mehreren dieser Datenwege von den anderen gesteuert werden.
  • Das DMA 66 wird von der Ablaufsteuerung 50 programmiert und sendet Status zur Ablaufsteuerung zurück, wenn es sein Task abgeschlossen hat. Die Ablaufsteuerung 50 kommuniziert mit dem Flash-ROM 54 und dem DMA 66 durch einen Transceiver 74. Der Transceiver 74 stellt einen Pufferweg von der Ablaufsteuerung zu Registern in dem DMA bereit. Die Ablaufsteuerung liest und schreibt aus/in die DMA-Register. Die Ablaufsteuerung 50 verwendet das Programm in dem Flash-ROM 54 zum Hochfahren.
  • Das DMA 66 kommuniziert in der Form von Lese-/Schreibvorgängen mit dem festplattenseitigen oder dem hostplattenseitigen Speicher, dem Spiegelungs-FIFO oder der XOR-Maschine. Für jede Sektorbewegung generiert oder prüft die Datenmaschine automatisch die Prüfsumme dieser Daten. Die Prüfsumme wird auch jedesmal generiert, wenn der XOR-Pufferspeicher 48 entladen wird. Zum Starten des Prüfsummenverfahrens wird ein Bit („Sektoranfang"-Bit) gesetzt, um den Anfang des Sektortranfers anzuzeigen. Das Setzen dieses Bits verursacht, dass die Prüfsummenlogik den Inhalt eines Prüfsummen-Startparameters mit dem ersten Datenstück EXKLUSIV-ODER-verknüpft. Wenn dieses Bit nicht gesetzt wird, dann wird das erste Datenstück mit dem Inhalt des Prüfsummenregisters EXKLUSIV-ODER-verknüpft. Das Sektoranfangsbit ermöglicht Variierbarkeit der Größe des Sektors ohne Modifizieren der Prüfsummmenlogik. Jedesmal, wenn der Registersatz von Statusbits gelesen wird, wird die berechnete Prüfsumme zur Ablaufsteuerung zurückgesendet. In Verbindung mit dem Erzeugen einer Prüfsumme wird die Datenfortpflanzung aufgehoben, wenn eine Prüfsumme erzeugt und auf den Datenbus gemischt wird. Der Zyklus wird zum Wenden des Datenbusses und zum Beenden der Erzeugung der Prüfsumme verwendet.
  • Das DMA hat ein CMD/Statusregister mit fünf Feldern. Ein erstes Feld sagt dem DMA, ob die Operation eine Datenbewegung ist, an der ein festplattenseitiger oder hostseitiger Speicher beteiligt ist, oder ob es ein Lese-/Schreibvorgang unmittelbarer Daten ist, d.h. ein einzelner Daten-Beat (8 Byte). Für Datenbewegungen muss die Datenquelle von dem Quellenfeld des CMD/Statusregisters mit der Quellenadresse in dem Quellenregister angegeben werden. Wenn die Quelle der XOR-Pufferspeicher 48 ist, entlädt die XOR-Maschine die Daten und füllt sich gleichzeitig wieder mit denselben Daten. Dies erlaubt rekonstruierten RAID 3-Daten in dem XOR-Pufferspeicher 48 zu bleiben, sodass sie gegen das endgültige Datenstück geprüft werden können. Wenn das letzte Stück des Sektors eintrifft, kann es durch Setzen eines Prüfparitätsdatenbits des CMD/Statusregisters geprüft werden. Die Bestimmungsadresse muss auch durch Setzen des Bestimmungsfeldes in dem CMD/Status- und seiner Adresse in dem Bestimmungsregister angegeben werden. Die zu übertragende Datenmenge wird von dem Wortzählerfeld angezeigt.
  • Der Flash-ROM 54 wird zum Speichern von Urladecodes verwendet. Der Flash-ROM der im Vorliegenden bevorzugten Ausgestaltung ist ein 512 KB × 8 und liegt auf der Spur des höchstwertigen Bytes des Datenbusses.
  • Die DMA-Maschine wirkt immer als Initiator und ist immer für das Aufsteuern des Initiator-bereit-Signals verantwortlich, selbst wenn sie nicht die Quelle der Daten bildet. Der festplattenseitige und der hostseitige Speicher und der Spiegelungs-FIFO sind immer Ziele. Der Schreibbus 38 und der Lesebus 40 haben jeweils ihre eigenen Schnittstellensteuersignale, selbst wenn die Busse miteinander verbunden sind. Am Anfang von Bewegungen zwischen dem festplattenseitigen und dem hostseitigen Speicher synchronisiert das DMA den Datenfluss zwischen den zwei Speichersystemen. DMA führt durch das Initiator-bereit- und das Vor-Ziel-bereit-Signal einen Handshake mit den Speichern durch. Wenn ein Speicher zum Empfangen oder Senden von Daten bereit ist, bestätigt er das Vor-Ziel-bereit-Signal einen Zyklus, bevor die Daten gültig sind. In Reaktion darauf bestätigt das DMA das Initiator-bereit-Signal. Wenn beide Speicher in dem Transfer benutzt werden, bestätigt das DMA das Initiator-bereit-Signal den Speichern erst dann, wenn es beide Vor-Ziel-bereit-Signale erhalten hat. Wenn es diese beiden Signale erhalten hat, bestätigt es zum gleichen Zeitpunkt das Initiator-bereit-Signal. Dann gelten die Daten als gültig auf dem Xbus, d.h. dem Lese- und dem Schreibbus.
  • Gemäß der im Vorliegenden bevorzugten Ausgestaltung, werden neben der Prüfsumme auch andere Validitätsprüfmechanismen verwendet. Ein Zeitstempel ist eine eindeutige Zahl, die sich in einem Validitätsfeld jedes Datensektors befindet. Die eindeutige Nummer wird während einer Hauptstreifenaktualisierung in jeden Sektor in einer RAID-Gruppe eingetragen. Eine Hauptstreifenaktualisierung bezieht sich auf das Schreiben von Daten, die jeden Sektor in einem RAID-Streifen füllen. Wenn die Daten danach in einen Sektor geschrieben werden, dann wird der Zeitstempel ungültig. Ein neuer Zeitstempel wird bei der nächsten Streifenaktualisierung eingetragen. Ein Schreibstempel sieht ein Bit für jede Platte in einer Gruppe vor. Wenn ein Schreibvorgang auf eine Platte durchgeführt wird, wird der Wert des Bits für diese Platte gewechselt, d.h. von 1 auf 0 bzw. von 0 auf 1 geändert, je nach seinem aktuellen Wert. Um die Schreib- und Zeitstempelinformationen der im Vorliegenden bevorzugten Ausgestaltung zu berücksichtigen, setzt das DMA einen Vorgang am Ende des Datentransfers nur aus, um die Prüfsumme und die Stempelinformationen anzuhängen. Zu diesem Zeitpunkt wird die Bestätigung für das Initiator-bereit-Signal für einen Zyklus aufgehoben und es dann für einen Zyklus bestätigt, wenn die 8 Bytes mit den Stempelinformationen von dem DMA und den Prüfsummeninformationen von der XOR-Maschine auf dem Bus sind. Die Verzögerung um einen Zyklus wird benötigt, um die Erzeugung der Prüfsumme abzuschließen. In der entgegengesetzten Richtung werden die Zeitinformationen, wenn Daten aus dem festplattenseitigen Speicher zu dem hostseitigen Speicher bewegt werden, entnommen und in Stempelregister in dem DMA gelegt. Die Stempelinformationen werden nicht zum hostseitigen Speicher gesendet. Gemäß der im Vorliegenden bevorzugten Ausgestaltung speichert also der hostseitige Speicher 512 Bytes für jeden Sektor und der festplattenseitige Speicher speichert 520 Bytes pro Sektor.
  • Der bevorzugte XOR-Pufferspeicher 48 ist ein FIFO. Der FIFO 48 fasst einen Sektor. Der FIFO 48 kann von einem von drei Wegen geladen werden. Die Wahl der Wege wird durch Betrieb eines Multiplexers 84 geschaltet, der durch einen Pufferspeicher 86 von dem FIFO 48 getrennt sein kann. Der erste Weg ist mit Daten direkt von dem Datenbus. Eine Busschnittstelle 88 entfernt Daten aus dem Bus zur Verwendung in der XOR-Maschine. Daten werden extern registriert und die Parität geprüft, bevor sie in den FIFO geschrieben werden. Ein zweiter Weg ist ein Rückkopplungsweg vom FIFO in sich selbst. Dieser wird benötigt, um eine Kopie in dem FIFO aufrecht zu erhalten, während die FIFO-Daten auf den Bus entladen werden. Der letzte logische Weg in den FIFO ist der EXKLUSIV-ODER-Weg (XOR-Weg). Die XOR-Logik 90 EXKLUSIV-ODER-verknüpft die registrierten Daten aus dem Bus mit dem Inhalt des FIFOs. Das Ergebnis der EXKLUSIV-ODER-Verknüpfung wird hinter den alten Daten in den FIFO 48 eingegeben, da die alten Daten sequentiell zur EXKLUSIV-ODER-Logik ausgegeben werden. Die existierenden Daten werden daher durch EXKLUSIV-ODER-Ergebnisse ersetzt. Die Auswahl des benötigten Wegs erfolgt durch die Ablaufsteuerung, indem die entsprechenden Bits in dem CMD/Status-Register gesetzt werden. Bei jedem Entladen der EXKLUSIV-ODER-FIFO kann die DMA-Logik zum Anhängen der erzeugten Prüfsumme und der Schreib- und Zeitstempelinformationen, die sich in den DMA-Registersätzen finden, programmiert werden.
  • Die XOR-Maschine kann vorteilhaft zum Erkennen von RAID 3-Benutzerdatenparitätsfehlern verwendet werden. Während eines RAID 3-Rekonstruktionsvorgangs kann die XOR-Maschine durch das DMA zum Rekonstruieren des letzten Datenstücks programmiert werden. Wenn die Daten regeneriert worden sind, können sie aus dem FIFO-Pufferspeicher 48 in den hostseitigen Speicher entladen werden. Wenn die neuen Daten mit den alten Daten verglichen werden sollen, dann kann während des Entladevorgangs das Paritätsdaten-Prüfbit gesetzt werden. Dies erlaubt das Wiedereinlesen der neuen Daten, die gelesen werden, in den FIFO-Pufferspeicher 48. Die alten Daten können dann, wenn sie ankommen, mit den neuen Daten verglichen werden, indem dieses Bit mit einem EXKLUSIV-ODER-Vorgang gesetzt wird. Wenn die alten und die neuen Daten nicht übereinstimmen, wird das Prüfsummenfehlerbit in dem CMD/Status-Register gesetzt. Es ist zu beachten, dass der EXKLUSIV-ODER-FIFO während des Vergleichs nicht neu geladen wird.
  • 4 illustriert die DMA-Logik für das Durchführen der Prüfsumme im laufenden Betrieb. Ein Prüfsummenpufferspeicher 92 hält die Prüfsummendaten, während sie berechnet werden. Ein Multiplexer 94 speist die Prüfsummen-EXKLUSIV-ODER-Logik 96 mit den Daten in dem Prüfsummenpufferspeicher 92 oder mit in einem DMA-Register gefundenen anfänglichen Startparameterdaten. Der andere Eingang zu der EXKLUSIV-ODER-Logik 96 sind die Daten, an denen der Prüfsummenvorgang durchgeführt wird.
  • Der Hochleistungsdatenweg der vorliegenden Erfindung erlaubt eine „N – 1 and go"-Betriebsart zum Durchführen von RAID-Lesevorgängen. Wenn eines der Eingangssignale problematisch oder nicht funktioniert, kann die „N – 1 and go"-Betriebsart eine ziemlich konstante Transferrate zum Host aufrecht erhalten. Die „N – 1 and go"-Betriebsart ist zwar für Situationen, in denen ein Eingangssignal nicht richtig oder nicht funktioniert, schneller, diese Betriebsart ist aber auch langsamer als der normale Betrieb. Unter normalen Bedingungen ist der „N – 1 and go"-Betrieb langsamer, weil es eine zusätzliche Latenzzeit für die Abarbeitung der EXKLUSIV-ODER-Operation gibt und es eine zusätzliche Anforderung von der festplattenseitigen Fibre-Schleife gibt. Anstatt Daten nur aus den Datensektoren anzufordern, wird auch der Paritätssektor angefordert. Der Vorteil dieser Betriebsart ist, dass der Durchsatz deterministischer ist. Für Anwendungen, in denen dies von großer Bedeutung ist, ist die Geschwindigkeitsverringerung für den normalen Betrieb ein akzeptabler Kompromiss.

Claims (13)

  1. Hochleistungsdatenweg zum Lesen von Daten aus und zum Schreiben von Daten in ein Festplattenarray mit einem ersten Bus (38), einem zweiten Bus (40), einem an dem genannten ersten Bus angebrachten hostseitigen Speicher (32), einer mit dem genannten Hochleistungsdatenweg gekoppelten EXKLUSIV-ODER-Maschine (46) und einem mit der genannten EXKLUSIV-ODER-Maschine (40) gekoppelten Pufferspeicher, gekennzeichnet durch: einen an dem genannten zweiten Bus angebrachten festplattenseitigen Speicher (34), wobei der genannte festplattenseitige Speicher ein nicht festplattengestützter Speicher ist; einen Schalter (42), der mit dem genannten ersten Bus und dem genannten zweiten Bus verbunden ist, sodass der genannte zweite Bus selektiv an den genannten ersten Bus angeschlossen wird, um einen verlängerten Bus zu bilden, der sich aus dem genannten ersten Bus und dem genannten zweiten Bus zusammensetzt, und wobei die genannte EXKLUSIV-ODER-Maschine (46) schaltbar mit dem genannten ersten und zweiten Bus verbunden werden kann, um aufeinanderfolgende EXKLUSIV-ODER-Verknüpfungen entsprechender Daten durchzuführen, die zwischen dem genannten hostseitigen und dem genannten festplattenseitigen Speicher längs dem verlängerten Bus übertragen werden.
  2. Datenweg nach Anspruch 1, bei dem der Pufferspeicher (48) zum Erhalten von zwischen dem genannten hostseitigen und dem genannten festplattenseitigen Speicher übertragenen Daten schaltbar verbunden ist und mit der genannten EXKLUSIV-ODER-Maschine (46) verbunden ist, um Daten in dem genannten Pufferspeicher durch ein Ergebnis aus der genannten EXKLUSIV-ODER-Maschine von dem EXKLUSIV-ODER-Verknüpfen von zwischen dem genannten hostseitigen und dem genannten festplattenseitigen Speicher übertragenen Daten mit den Daten in dem genannten Pufferspeicher zu ersetzen.
  3. Datenweg nach Anspruch 2, bei dem der genannte Pufferspeicher (48) einen FIFO-Speicher umfasst.
  4. Datenweg nach einem der obigen Ansprüche, wobei der genannte Datenweg zur Verwendung mit einem Hostrechner vorgesehen ist und ferner eine mit dem genannten ersten Bus gekoppelte Schnittstelle (22) umfasst, die die Schnittstelle des genannten ersten Busses mit dem Hostrechner bildet.
  5. Datenweg nach einem der obigen Ansprüche, bei dem der genannte Datenweg zur Verwendung mit einem Festplattenarray vorgesehen ist und ferner eine mit dem genannten zweiten Bus gekoppelte Schnittstelle (22) hat, die die Schnittstelle des genannten zweiten Busses mit dem Festplattenarray bildet.
  6. Datenweg nach einem der obigen Ansprüche, bei dem der genannte hostseitige Speicher (32) Daten für Schreibvorgänge zwischenspeichert und als Cache-Speicher fungiert.
  7. Datenweg nach einem der obigen Ansprüche, bei dem der genannte festplattenseitige Speicher (34) während eines Lesevorgangs ausgelesene Daten zwischenspeichert und als Cache-Speicher fungiert.
  8. Datenweg nach einem der obigen Ansprüche, bei dem der genannte Schalter (42) das Trennen des genannten ersten Busses von dem genannten zweiten Bus und der genannten EXKLUSIV-ODER-Maschine zulässt.
  9. Datenweg nach einem der obigen Ansprüche, bei dem der genannte Schalter (42) das Trennen des genannten zweiten Busses von dem genannten ersten Bus und der genannten EXKLUSIV-ODER-Maschine zulässt.
  10. Datenweg nach einem der obigen Ansprüche, bei dem der genannte hostseitige Speicher einen mit dem genannten ersten Bus (38) gekoppelten ersten Arbeitsspeicher (32) umfasst und der genannte festplattenseitige Speicher einen mit dem genannten zweiten Bus (40) gekoppelten zweiten Arbeitsspeicher (34) umfasst.
  11. Verfahren zum Durchführen eines Lesevorgangs aus einer Gruppe von wechselseitig in Bezug stehenden Festplatten, bei der ein Datensektor auf einer der Festplatten einem Sektor auf jeder der anderen Festplatten in der Gruppe entspricht, wobei das Verfahren die folgenden Schritte umfasst: Lesen entsprechender Sektoren auf wenigstens allen Festplatten außer einer in der Festplattengruppe; Schreiben von Daten aus den entsprechenden Sektoren auf den wenigstens allen Festplatten außer einer in einen festplattenseitigen Speicher; sukzessives Bewegen der Daten der entsprechenden Sektoren aus dem festplattenseitigen Speicher in einen hostseitigen Speicher; Füllen einer Kopie der Daten eines ersten der entsprechenden Sektoren aus dem festplattenseitigen Speicher in einen Pufferspeicher; sukzessives EXKLUSIV-ODER-Verknüpfen von Daten aus Sektoren, die dem ersten der entsprechenden Sektoren aus dem festplattenseitigen Speicher entsprechen, in einer EXKLUSIV-ODER-Maschine mit den entsprechenden Daten in dem Pufferspeicher und Ersetzen der Daten in dem Pufferspeicher durch Ergebnisse der EXKLUSIV-ODER-Verknüpfung, bis alle entsprechenden Sektoren in der Gruppe außer einem EXKLUSIV-ODER-verknüpft wurden; und dann Bewegen der Daten in dem Pufferspeicher in den hostseitigen Speicher.
  12. Verfahren nach Anspruch 11, bei dem der Schritt des Füllens der Kopie der Daten des ersten der entsprechenden Sektoren synchron mit dem Bewegen der Daten des ersten der entsprechenden Sektoren aus dem festplattenseitigen Speicher in den hostseitigen Speicher stattfindet.
  13. Verfahren zum Schreiben von Daten in eine Gruppe von wechselseitig in Bezug stehenden Festplatten, wobei ein Paritätssektor generiert wird, umfassend: (a) Bewegen eines ersten Datensektors aus einem hostseitigen Speicher auf einem ersten Bus in einen Pufferspeicher, der mit dem ersten Bus in Verbindung geschaltet ist, und an einem zweiten, an den ersten Bus angeschlossenen Bus entlang in einen festplattenseitigen Speicher; (b) sukzessives Bewegen von dem ersten Datensektor entsprechenden Datensektoren aus dem hostseitigen Speicher zu dem festplattenseitigen Speicher über den ersten Bus und den an ihn angeschlossenen zweiten Bus; (c) Durchführen einer EXKLUSIV-ODER-Verknüpfung in einer EXKLUSIV-ODER-Maschine von Daten in dem Pufferspeicher mit entsprechenden aus dem hostseitigen Speicher bewegten Daten und Ersetzen der Daten in dem Pufferspeicher durch Ergebnisse der genannten EXKLUSIV-ODER-Verknüpfung; (d) sukzessives Durchführen von Schritt (c), bis alle entsprechenden Sektoren mit Daten in dem Pufferspeicher EXKLUSIV-ODER-verknüpft worden sind; (e) Bewegen der Daten aus dem Pufferspeicher zum festplattenseitigen Speicher, wobei die genannten Daten den Paritätssektor bilden; (f) Schreiben der entsprechenden Datensektoren und Paritätssektoren aus dem festplattenseitigen Speicher in die Gruppe von wechselseitig in Bezug stehenden Festplatten, wobei jede der genannten Festplatten einen der Sektoren aus den entsprechenden Datensektoren und dem entsprechenden Paritätssektor erhält; und (g) Umschalten zum Trennen des festplattenseitigen Speichers von dem hostseitigen Speicher und der EXKLUSIV-ODER-Maschine vor dem Schreibschritt.
DE69733076T 1996-11-14 1997-10-08 Hochleistungsdatenweg mit sofortigem xor Expired - Fee Related DE69733076T2 (de)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US74931296A 1996-11-14 1996-11-14
US749312 1996-11-14
US08/815,193 US6161165A (en) 1996-11-14 1997-03-11 High performance data path with XOR on the fly
US815193 1997-03-11
PCT/US1997/018523 WO1998021656A1 (en) 1996-11-14 1997-10-08 High performance data path with xor on the fly

Publications (2)

Publication Number Publication Date
DE69733076D1 DE69733076D1 (de) 2005-05-25
DE69733076T2 true DE69733076T2 (de) 2006-02-23

Family

ID=27115094

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69733076T Expired - Fee Related DE69733076T2 (de) 1996-11-14 1997-10-08 Hochleistungsdatenweg mit sofortigem xor

Country Status (7)

Country Link
US (1) US6161165A (de)
EP (1) EP0938704B1 (de)
JP (2) JP3606881B2 (de)
AU (1) AU4820197A (de)
CA (1) CA2268548A1 (de)
DE (1) DE69733076T2 (de)
WO (1) WO1998021656A1 (de)

Families Citing this family (55)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5963962A (en) * 1995-05-31 1999-10-05 Network Appliance, Inc. Write anywhere file-system layout
US6138126A (en) 1995-05-31 2000-10-24 Network Appliance, Inc. Method for allocating files in a file system integrated with a raid disk sub-system
JPH08511368A (ja) * 1993-06-04 1996-11-26 ネットワーク・アプリアンス・コーポレーション 不揮発性メモリを用いてraidサブシステムにパリティを形成する方法
US5950225A (en) * 1997-02-28 1999-09-07 Network Appliance, Inc. Fly-by XOR for generating parity for data gleaned from a bus
US6988176B2 (en) * 1997-09-12 2006-01-17 Hitachi, Ltd. Method and apparatus for data duplexing in storage unit system
US6665781B2 (en) * 2000-10-17 2003-12-16 Hitachi, Ltd. Method and apparatus for data duplexing in storage unit system
US6516351B2 (en) 1997-12-05 2003-02-04 Network Appliance, Inc. Enforcing uniform file-locking for diverse file-locking protocols
US6622224B1 (en) * 1997-12-29 2003-09-16 Micron Technology, Inc. Internal buffered bus for a drum
US6415355B1 (en) * 1998-05-11 2002-07-02 Kabushiki Kaisha Toshiba Combined disk array controller and cache control method for parity generation mode and data restoration mode
US6279011B1 (en) 1998-06-19 2001-08-21 Network Appliance, Inc. Backup and restore for heterogeneous file server environment
US6119244A (en) * 1998-08-25 2000-09-12 Network Appliance, Inc. Coordinating persistent status information with multiple file servers
US7047357B1 (en) * 1998-10-01 2006-05-16 Intel Corporation Virtualized striping controller
US6460122B1 (en) * 1999-03-31 2002-10-01 International Business Machine Corporation System, apparatus and method for multi-level cache in a multi-processor/multi-controller environment
KR100287190B1 (ko) * 1999-04-07 2001-04-16 윤종용 선택되는 메모리 모듈만을 데이터 라인에 연결하는 메모리 모듈 시스템 및 이를 이용한 데이터 입출력 방법
JP2000305856A (ja) * 1999-04-26 2000-11-02 Hitachi Ltd ディスクサブシステム及びこれらの統合システム
JP2001022529A (ja) * 1999-06-30 2001-01-26 Internatl Business Mach Corp <Ibm> ディスクドライブ装置及びその制御方法
US6542960B1 (en) * 1999-12-16 2003-04-01 Adaptec, Inc. System and method for parity caching based on stripe locking in raid data storage
JP4434407B2 (ja) * 2000-01-28 2010-03-17 株式会社日立製作所 サブシステム及びこれらの統合システム
JP4044717B2 (ja) 2000-03-31 2008-02-06 株式会社日立製作所 記憶サブシステムのデータ二重化方法及びデータ二重化システム
US6675253B1 (en) * 2000-04-04 2004-01-06 Hewlett-Packard Development Company, L.P. Dynamic routing of data across multiple data paths from a source controller to a destination controller
US6370616B1 (en) * 2000-04-04 2002-04-09 Compaq Computer Corporation Memory interface controller for datum raid operations with a datum multiplier
US7127668B2 (en) * 2000-06-15 2006-10-24 Datadirect Networks, Inc. Data management architecture
WO2002015018A1 (en) * 2000-08-11 2002-02-21 3Ware, Inc. Architecture for providing block-level storage access over a computer network
US7072916B1 (en) 2000-08-18 2006-07-04 Network Appliance, Inc. Instant snapshot
US6728922B1 (en) 2000-08-18 2004-04-27 Network Appliance, Inc. Dynamic data space
US6636879B1 (en) 2000-08-18 2003-10-21 Network Appliance, Inc. Space allocation in a write anywhere file system
US6665773B1 (en) * 2000-12-26 2003-12-16 Lsi Logic Corporation Simple and scalable RAID XOR assist logic with overlapped operations
US6799284B1 (en) * 2001-02-28 2004-09-28 Network Appliance, Inc. Reparity bitmap RAID failure recovery
US6513098B2 (en) 2001-05-25 2003-01-28 Adaptec, Inc. Method and apparatus for scalable error correction code generation performance
US7093158B2 (en) * 2002-03-11 2006-08-15 Hewlett-Packard Development Company, L.P. Data redundancy in a hot pluggable, large symmetric multi-processor system
US7111228B1 (en) * 2002-05-07 2006-09-19 Marvell International Ltd. System and method for performing parity checks in disk storage system
US6918007B2 (en) * 2002-09-09 2005-07-12 Hewlett-Packard Development Company, L.P. Memory controller interface with XOR operations on memory read to accelerate RAID operations
US20040163027A1 (en) * 2003-02-18 2004-08-19 Maclaren John M. Technique for implementing chipkill in a memory system with X8 memory devices
US7096407B2 (en) * 2003-02-18 2006-08-22 Hewlett-Packard Development Company, L.P. Technique for implementing chipkill in a memory system
CN100371874C (zh) * 2003-04-21 2008-02-27 耐特塞尔公司 具有可重新配置的数据通路的盘阵列控制器及方法
US7379974B2 (en) * 2003-07-14 2008-05-27 International Business Machines Corporation Multipath data retrieval from redundant array
US7281177B2 (en) * 2003-07-14 2007-10-09 International Business Machines Corporation Autonomic parity exchange
US7533325B2 (en) 2003-07-14 2009-05-12 International Business Machines Corporation Anamorphic codes
US7254754B2 (en) * 2003-07-14 2007-08-07 International Business Machines Corporation Raid 3+3
US7428691B2 (en) * 2003-11-12 2008-09-23 Norman Ken Ouchi Data recovery from multiple failed data blocks and storage units
US7913148B2 (en) * 2004-03-12 2011-03-22 Nvidia Corporation Disk controller methods and apparatus with improved striping, redundancy operations and interfaces
TWI251745B (en) * 2004-07-27 2006-03-21 Via Tech Inc Apparatus and related method for calculating parity of redundant array of inexpensive disks
US20060123312A1 (en) * 2004-11-19 2006-06-08 International Business Machines Corporation Method and system for increasing parallelism of disk accesses when restoring data in a disk array system
TWI285313B (en) * 2005-06-22 2007-08-11 Accusys Inc XOR circuit, RAID device capable of recover a plurality of failures and method thereof
US7797467B2 (en) * 2005-11-01 2010-09-14 Lsi Corporation Systems for implementing SDRAM controllers, and buses adapted to include advanced high performance bus features
US20070233926A1 (en) * 2006-03-10 2007-10-04 Inventec Corporation Bus width automatic adjusting method and system
GB0622224D0 (en) * 2006-11-08 2006-12-20 Ibm Apparatus and method for disk read checking
US8458377B2 (en) * 2010-03-05 2013-06-04 Lsi Corporation DMA engine capable of concurrent data manipulation
US8316195B2 (en) * 2010-09-10 2012-11-20 Hitachi, Ltd. Storage system and data transfer method of storage system
FR2991799B1 (fr) * 2012-06-11 2015-05-29 St Microelectronics Rousset Adaptation d'un circuit d'antenne pour terminal de communication en champ proche
US10236043B2 (en) 2016-06-06 2019-03-19 Altera Corporation Emulated multiport memory element circuitry with exclusive-OR based control circuitry
US10372531B2 (en) 2017-01-05 2019-08-06 Texas Instruments Incorporated Error-correcting code memory
US10365967B2 (en) 2017-08-23 2019-07-30 Toshiba Memory Corporation On the fly raid parity calculation
US11662955B2 (en) * 2021-09-27 2023-05-30 GRAID Technology Inc. Direct memory access data path for RAID storage
US11726715B2 (en) 2021-10-11 2023-08-15 Western Digital Technologies, Inc. Efficient data path in compare command execution

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4761785B1 (en) * 1986-06-12 1996-03-12 Ibm Parity spreading to enhance storage access
US5163132A (en) * 1987-09-24 1992-11-10 Ncr Corporation Integrated controller using alternately filled and emptied buffers for controlling bi-directional data transfer between a processor and a data storage device
US5206943A (en) * 1989-11-03 1993-04-27 Compaq Computer Corporation Disk array controller with parity capabilities
US5146588A (en) * 1990-11-26 1992-09-08 Storage Technology Corporation Redundancy accumulator for disk drive array memory
US5191584A (en) * 1991-02-20 1993-03-02 Micropolis Corporation Mass storage array with efficient parity calculation
US5345565A (en) * 1991-03-13 1994-09-06 Ncr Corporation Multiple configuration data path architecture for a disk array controller
JPH07122864B2 (ja) * 1991-07-22 1995-12-25 インターナショナル・ビジネス・マシーンズ・コーポレイション データ処理システム、データ処理システムに使用するインターフエース回路及びデータ・プロセツサ間の通信方法
US5257391A (en) * 1991-08-16 1993-10-26 Ncr Corporation Disk controller having host interface and bus switches for selecting buffer and drive busses respectively based on configuration control signals
DE69223104T2 (de) * 1991-08-27 1998-04-02 Toshiba Kawasaki Kk Gerät zur Vermeidung der Zerstörung von aus Speichereinheit gelesenen Rechnerdaten
US5708668A (en) * 1992-05-06 1998-01-13 International Business Machines Corporation Method and apparatus for operating an array of storage devices
US5335235A (en) * 1992-07-07 1994-08-02 Digital Equipment Corporation FIFO based parity generator
JP3183719B2 (ja) * 1992-08-26 2001-07-09 三菱電機株式会社 アレイ型記録装置
US5396620A (en) * 1993-12-21 1995-03-07 Storage Technology Corporation Method for writing specific values last into data storage groups containing redundancy
US5537567A (en) * 1994-03-14 1996-07-16 International Business Machines Corporation Parity block configuration in an array of storage devices
JP3661205B2 (ja) * 1994-09-09 2005-06-15 株式会社日立製作所 ディスクアレイシステムおよびディスクアレイシステムのパリティデータの生成方法
EP0727750B1 (de) * 1995-02-17 2004-05-12 Kabushiki Kaisha Toshiba Server für kontinuierliche Daten und Datentransferschema für mehrfache gleichzeitige Datenzugriffe
US5592612A (en) * 1995-04-28 1997-01-07 Birk; Yitzhak Method and apparatus for supplying data streams
US5737744A (en) * 1995-10-13 1998-04-07 Compaq Computer Corporation Disk array controller for performing exclusive or operations
US5721839A (en) * 1995-10-13 1998-02-24 Compaq Computer Corporation Apparatus and method for synchronously providing a fullness indication of a dual ported buffer situated between two asynchronous buses
US5771359A (en) * 1995-10-13 1998-06-23 Compaq Computer Corporation Bridge having a data buffer for each bus master
US5809280A (en) * 1995-10-13 1998-09-15 Compaq Computer Corporation Adaptive ahead FIFO with LRU replacement
US5903906A (en) * 1996-06-05 1999-05-11 Compaq Computer Corporation Receiving a write request that allows less than one cache line of data to be written and issuing a subsequent write request that requires at least one cache line of data to be written
US5937174A (en) * 1996-06-28 1999-08-10 Lsi Logic Corporation Scalable hierarchial memory structure for high data bandwidth raid applications
US5748911A (en) * 1996-07-19 1998-05-05 Compaq Computer Corporation Serial bus system for shadowing registers
US5950225A (en) * 1997-02-28 1999-09-07 Network Appliance, Inc. Fly-by XOR for generating parity for data gleaned from a bus

Also Published As

Publication number Publication date
US6161165A (en) 2000-12-12
JP3606881B2 (ja) 2005-01-05
CA2268548A1 (en) 1998-05-22
WO1998021656A1 (en) 1998-05-22
EP0938704B1 (de) 2005-04-20
JP2001500654A (ja) 2001-01-16
EP0938704A1 (de) 1999-09-01
AU4820197A (en) 1998-06-03
JP2005032265A (ja) 2005-02-03
DE69733076D1 (de) 2005-05-25

Similar Documents

Publication Publication Date Title
DE69733076T2 (de) Hochleistungsdatenweg mit sofortigem xor
DE19581103C2 (de) Verfahren und Vorrichtung zur Echtzeit-Rekonstruktion zerstörter Daten in einem Speichersystem mit redundanter Anordnung
DE60223470T2 (de) Knotensteuerung für ein Datenspeicherungssystem
DE69817696T2 (de) Warmaustausch von gespiegeltem Nachschreib-Cachespeicher
EP0163096B1 (de) Einrichtung zur Rettung eines Rechnerzustandes
DE60318687T2 (de) Herstellen einer gespiegelten kopie unter verwendung inkrementeller divergenz
DE60031064T2 (de) Kopierverfahren zwischen logischen Speicherplatten, Speicherplattensystem und Programm dafür
DE69738091T2 (de) Speicherplattenanordnung und Verfahren zu deren Steuerung
DE69630624T2 (de) EEPROM-Matrix mit einem, dem &#34;Flash&#34;-Speicher ähnlichen Kern
US5124987A (en) Logical track write scheduling system for a parallel disk drive array data storage subsystem
DE112007002175T5 (de) Optimierte Rekonstruktion und Rückkopiemethodik für ein ausgefallenes Laufwerk bei Anwesenheit einer globalen Hot Spare Platte
DE112019005408B4 (de) Masterloses raid für byte-adressierbaren nichtflüchtigen speicher
DE10297430T5 (de) Datenspiegelung unter Anwendung von shared Bussen
DE602005000819T2 (de) Aufrechterhaltung der konsistenz einer fernkopie unter verwendung von virtualisierung
DE112011100112T5 (de) Pufferspeicher-platte in blitzkopie-kaskade
DE69734551T2 (de) Verfahren und Gerät zur Erzeugung von Paritätsblöcken
DE3909896A1 (de) Vorrichtung und verfahren fuer den zugriff zu in einem seitenspeicher gespeicherten daten
DE10348326A1 (de) Permanentspeichervorrichtung, die an eine Kommunikationsverbindung angeschlossen ist
US20030159082A1 (en) Apparatus for reducing the overhead of cache coherency processing on each primary controller and increasing the overall throughput of the system
DE112007002170T5 (de) Optimierte Rekonstruktion und Rückkopiemethodik für ein abgetrenntes Laufwerk bei Anwesenheit einer globalen Hot Spare Platte
DE69532703T2 (de) Speicherplattenanordnungsuntersystem und Datenerzeugungsverfahren dazu
DE60303468T2 (de) Fehlertolerante Vorrichtung zur Informationsverarbeitung
DE4335061C2 (de) Mehrspeichervorrichtung
DE4429969A1 (de) Verfahren für einen Programmpaketeaustausch in einem Mehrrechnersystem und Rechner dafür
DE69433947T2 (de) Festgekoppelte Dual-Steuermodule benutzendes fehlertolerantes Speichersteuergerät

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee