-
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.