-
Allgemeiner
Stand der Technik
-
Die
Erfindung betrifft das Aufrechterhalten der Integrität von Daten
und spezieller das Aufrechterhalten der Integrität von Daten, die in einem Plattenspeichersystem
gespeichert werden.
-
In
modernen Computersystemen werden zwischen Hostrechner-Prozessoren und dem
peripheren Speicher oder Terminals des Systems kontinuierlich Daten
transferiert. Während
des Lesens, Schreibens oder der eigentlichen Übertragung können Fehler
in die Daten eingefügt
werden. Folglich wurde Fehlerüberwachung
zu einem integralen Bestandteil beim Entwurf moderner Computersysteme. Im
Rahmen der gebräuchlichsten
Verfahren zur Fehlererkennung werden den Bits, die die eigentlichen Daten
repräsentieren,
ein oder mehrere sog. Redundanzbits hinzugefügt. Bei diesen Redundanzbits handelt
es sich nicht um Daten, sondern um Metadaten, die einzig zur Bestimmung
der Korrektheit der Datenbits benutzt werden.
-
Eine
beliebte Methode zur Fehlererkennung ist die zyklische Redundanzprüfung (CRC,
engl. „Cyclic
Redundancy Check").
Bei dieser Methode werden alle Zeichen in einem Nachrichtenblock
wie eine serielle Kette aus Bits behandelt, die eine binäre Zahl repräsentieren.
Diese Zahl wird dann modulo 2 durch eine vorbestimmte Binärzahl dividiert,
und der Rest dieser Division wird als CRC-Zeichen an den Block aus
Zeichen angehängt.
Das CRC-Zeichen wird am Ende mit dem Prüfzeichen verglichen, das auf
gleichartige Weise erhalten wird. Bei Übereinstimmung wird angenommen,
dass die Nach richt korrekt ist. Bei Nichtübereinstimmung kann eine Fehlermeldung
gesendet werden, oder das empfangende Terminal bzw. der empfangende
Hostrechner kann eine Neuübertragung
anfordern.
-
Im
US-Patent Nr. 5,844,918 werden ein digitales Sende-/Empfangsverfahren,
ein digitales Kommunikationsverfahren und eine Datenempfangsvorrichtung
offenbart, wobei eine Fehlerkorrektur bezüglich der Gesamtübertragungs-Basisdaten
ausgeführt wird.
Bezüglich
der einzelnen Pakete wird unter Verwendung des Fehlererkennungscodes
eine Fehlererkennungsoperation ausgeführt. Wenn festgestellt wird,
dass ein Paket Fehler enthält,
wird bei der sendenden Seite eine erneute Übertragung dieses Pakets angefordert.
Der Fehlerkorrekturcode umfasst Basisdaten und einen daran angehängten, BCH-basierten
Paritätscode,
der in kleinere Pakete unterteilt ist. An jedes der solchermaßen unterteilten
Pakete wird ein Fehlererkennungscode angehängt, und auf diese Weise werden
die Übertragungs-Basisdaten ausgebildet.
Beim Empfangen der Übertragungs-Basisdaten
werden die Basisdaten und ein BCH-basierter Paritätscode aus
den Übertragungs-Basisdaten abgeleitet.
-
Es
wird auf 1 Bezug genommen. Bei einer
herkömmlichen
Implementierung nach Stand der Technik, die CRC benutzt, weist ein
System 10 einen Enterprise-Plattenspeicher 12 auf,
der mit Hostcomputern (nachstehend „Hostrechnern") 14a, 14b, 14c verbunden
ist. Der Begriff „Enterprise" bedeutet hier, dass
der Plattenspeicher dazu konfiguriert ist, multiple Konnektivität beispielsweise
durch von verschiedenen Anbietern bereitgestellte Hostrechner zuzulassen.
Das Plattenspeichersystem 12 kann beispielsweise eines
aus einer Anzahl verschiedener Symmetrix-Systeme sein, wobei es
sich um Produkte der EMC Corporation, Hopkinton, MA, USA handelt. Einzelheiten
bezüglich
der Architektur und dem Betrieb dieser Systeme finden sich beispielsweise
in den Symmetrix Product Manuals für die Modelle 5500, 52XX, 5100,
3500, 32XX und 3100).
-
Es
wird auf 2 Bezug genommen. Eine repräsentative
Dateneinheit, hier ein 4 KBytes (4096 Bytes) großer Datensektor 30,
wird zum Beispiel von dem Hostrechner 14a an den Plattenspeicher 12 übertragen.
Jeder Sektor umfasst acht Datenblöcke, die jeweils 512 Bytes
lang sind. Mit dem Sektor 30 ist ein von dem Hostrechner 12 mit
einem CRC-Algorithmus
berechnetes und gespeichertes CRC-Ergebnis 34 assoziiert.
Dieses CRC-Ergebnis 34 wird im Allgemeinen von dem Sektor 30 getrennt
gespeichert, zum Beispiel auf einem anderen Plattenspeicher. Bei einer
normalen Leseoperation wendet der Hostrechner 14a den CRC-Algorithmus
erneut an, und das Ergebnis wird mit dem zuvor berechneten und gespeicherten
CRC-Ergebnis 34 verglichen. Wenn die Ergebnisse nicht identisch
sind, wird, im Allgemeinen in Form einer Fehlermeldung, eine Anzeige
darüber, dass
ein Fehler aufgetreten ist, bereitgestellt.
-
Die
oben beschriebene Anwendung des CRC-Algorithmus durch den Hostrechner 14a ist
vergleichsweise unkompliziert, falls der Hostrechner 14a den
Lesesektor 30 vollständig
anfordert. Wenn der Hostrechner 14a allerdings eine Anforderung
sendet, lediglich einen Abschnitt des Sektors 30 auszulesen, zum
Beispiel einen 2 KBytes großen
Abschnitt, ist der Vorgang nicht annähernd so einfach. In diesem
Falle liest der Hostrechner 14a den gesamten Sektor 30 ein
und wendet den CRC-Algorithmus sowohl auf den angeforderten Abschnitt
als auch auf den restlichen Abschnitt an. Die beiden Ergebnisse
werden zusammenaddiert und dann mit dem zuvor berechneten und gespeicherten
CRC-Ergebnis 34 verglichen. Somit ist die Rechenzeit, die
benötigt
wird, um zu bestimmen, ob bei einem Abschnitt des 4-KByte-Sektors 30 ein
Fehler aufgetreten ist, in Wirklichkeit länger als die Rechenzeit, die
benötigt wird,
um zu bestimmen, ob bei dem gesamten 4-KByte-Sektor 30 ein
Fehler aufgetreten ist.
-
Kurzdarstellung
der Erfindung
-
Merkmal
der Erfindung sind ein Verfahren und ein System zum Aufrechterhalten
der Integrität von
Daten in einem Speichersystem.
-
Gemäß einem
allgemeinen Aspekt der Erfindung wird die Integrität von Daten
aufrechterhalten, die von einer Mehrzahl von Hostrechnern auf einem Plattenspeichersystem
gespeichert werden. Dieses Verfahren umfasst die folgenden Schritte:
Eine Größe eines
größten Blocks
aus der vorbestimmten Anzahl von Blöcken, die von der Mehrzahl
von Hostrechnern übertragen
werden, wird bestimmt. Es werden Datenblöcke von jedem der Hostrechner
empfangen, wobei die einzelnen Datenblöcke jeweils einen vorbestimmten
Mehrfachblock-Fehlererkennungscode aufweisen. Die einzelnen Datenblöcke werden
gelesen, und es wird für
jeden Datenblock ein Informationen enthaltender Abschnitt erzeugt,
der einen individuellen Fehlererkennungscode für den jeweiligen Datenblock
beinhaltet. An alle Datenblöcke, deren
Größe kleiner
als die des größten Blocks
aus der vorbestimmten Anzahl von Blöcken ist, wird ein Auffüllabschnitt
angehängt,
der eine Anzahl von Bytes beinhaltet, die ausreicht, um der Größe des größten Blocks
aus der vorbestimmten Anzahl von Blöcken zu entsprechen. Dann werden
alle Daten blöcke,
alle entsprechenden Informationen enthaltenden Abschnitte und, falls
notwendig, alle Auffüllabschnitte
gespeichert.
-
Diese
Anordnung hat besondere Vorteile für die Verwendung mit einem
Enterprise-Speichersystem, das benutzt wird, um Daten von verschiedenen Hostrechnern
zu speichern, die verschiedene Konventionen zum Speichern von Daten
benutzen. Zum Beispiel kann ein Hostrechner einen Block als 512 Bytes
lang definieren, wohingegen ein anderer Hostrechner einen Block
als 520 Bytes lang definieren kann. In beiden Fällen hängt das Verfahren, wo dies nötig ist,
einen Auffüllabschnitt
an, so dass alle Blöcke
gleich groß sind,
wenn sie gespeichert werden.
-
Ausführungsformen
dieser Aspekte der Erfindung können
eines oder mehrere der folgenden Merkmale aufweisen:
Jeder
Datenblock wird angrenzend an seinen entsprechenden Informationen
enthaltenden Abschnitt gespeichert. Somit können anders als bei herkömmlichen
Schemata, wo der Fehlererkennungscode auf einer entfernten Speichervorrichtung
gespeichert wird, der Datenblock und sein Fehlererkennungscode zusammen
gespeichert werden. Somit werden zum Zugreifen auf die Daten und
ihren entsprechenden Fehlercode weniger Leseoperationen benötigt. Jeder
Informationen enthaltende Abschnitt beinhaltet ferner einen Zeitstempel
und/oder eine Anzeige des Autors der Daten. Auf diese Weise kann
ein Benutzer bestimmen, ob die Daten „veraltet" (d.h., älter als gewünscht) sind
und daher ihre Zuverlässigkeit
möglicherweise
fragwürdig
ist. Die Datenblöcke
repräsentieren
einen Abschnitt eines Plattenspeichers, beispielsweise einen Sektor
einer Platte. Der Sektor des Plattenspeichers ist 4096 Bytes groß, und jeder
Block ist 512 Bytes groß.
-
Merkmal
eines weiteren Aspekts der Erfindung ist ein Speichersystem zum
Speichern von Daten, die von einer Mehrzahl von Hostrechnern verwendet
werden, die zum Durchführen
der erfinderischen Verfahren eingerichtet sind, wobei jeder Hostrechner
zum Übertragen
von Datenblöcken
fähig ist. Das
Speichersystem weist auf: Speicherfeldvorrichtungen zum Speichern
von Datenblöcken,
die von der Mehrzahl von Hostrechnern übertragen werden, einen Kanaladapter,
der mit einem der Hostrechner assoziiert ist und eine erste Datenblockintegritätseinheit
zum Anwenden und Speichern von Fehlererkennungsinformationen, die
mit den übertragenen
Datenblöcken
assoziiert sind, beinhaltet und einen Speicherfeldadapter, der mit
einer entsprechenden der Speicherfeldvorrichtungen assoziiert ist
und eine zweite Datenblockintegritätseinheit zum Beziehen von
Datenblöcken
von der entsprechenden Speicherfeldvorrichtung und zum Prüfen der
Fehlererkennungsinformationen, die mit den gespeicherten Datenblöcken assoziiert
sind, beinhaltet.
-
Ausführungsformen
dieses Aspekts der Erfindung können
eines oder mehrere der folgenden Merkmale aufweisen: Das Plattenspeichersystem weist
ferner eine Mehrzahl von Kanaladaptern auf, von denen jeder mit
einem entsprechenden der Hostrechner assoziiert ist. Das Plattenspeichersystem weist
ferner eine Mehrzahl von Speicherfeldadaptern auf, von denen jeder
mit einer entsprechenden der Speicherfeldvorrichtungen assoziiert
ist. Das Speichersystem weist einen globalen Speicher auf, der zwischen
den Kanaladapter und den Speicherfeldadapter geschaltet ist.
-
Andere
Vorteile und Merkmale der Erfindung gehen aus der folgenden Beschreibung
und den Ansprüchen
hervor.
-
Kurze Beschreibung
der Zeichnungen
-
1 ist
eine Blockdiagrammdarstellung eines herkömmlichen Enterprise-Plattenspeichers,
der mit verschiedenen Hosts verbunden ist,
-
2 ist
ein Beispiel für
einen Datensektor mit Datenblöcken
und einem assoziierten CRC-Ergebnis,
-
3 ist
eine Blockdiagrammdarstellung eines Enterprise-Plattenspeichers, der über eine
erfindungsgemäße Datenblockintegritätseinheit
mit verschiedenen Hosts verbunden ist,
-
4 ist
eine Blockdiagrammdarstellung einer Datenblockintegritätseinheit
für einen
Frontend-Steueradapter,
-
5 ist
eine Blockdiagrammdarstellung einer Datenblockintegritätseinheit
für einen
Backend-Plattenadapter,
-
6 ist
ein Flussdiagramm, das die Arbeitsweise der Integritätseinheit
aus 3 während einer
Schreiboperation veranschaulicht,
-
7 ist
eine schematische Darstellung eines Datensektors mit Datenblöcken, der
von der Integritätseinheit
aus 4 empfangen wird, und der resultierenden Daten
und dem CRC-Ergebnis,
die in dem Enterprise-Plattenspeicher gespeichert werden, und
-
8 ist
ein Flussdiagramm, das die Arbeitsweise der Integritätseinheit
aus 5 während einer
Leseoperation veranschaulicht.
-
Detaillierte
Beschreibung
-
Es
wird auf 3 Bezug genommen. Ein Speichersystem 40 weist
einen Enterprise-Plattenspeicher 42 auf, der mit hier vier
Hostcomputern (nachstehend „Hostrechnern") 14a, 14b, 14c, 14d verbunden
ist, die alle von demselben Typ sein können oder, was wahrscheinlicher
ist, von verschiedenen Herstellern bereitgestellt sein können. Der
Enterprise-Plattenspeicher 42 weist
einen Hochgeschwindigkeits-Zwischenspeicher bzw. Cache oder globalen Speicher 44 auf,
durch welchen Daten zwischen den Hosts und einer Anzahl von Plattenfeldspeichern 46a, 46b, 46c geleitet
werden. Wie nachstehend ausführlicher
beschrieben werden wird, weist das Speichersystem Datenintegritätseinheiten
auf, die eine Fehlererkennung für
individuelle, zwischen den Hostrechnern und den Plattenfeldspeichern
laufende Datenblöcke
bereitstellen, statt sich auf Mehrblock-Fehlererkennungsschemata
zu verlassen, die normalerweise von den Hostrechnern selbst bereitgestellt werden
und mit größeren Datenblöcken (z.B.
Plattensektoren) assoziiert sind.
-
Die
Frontend-Schnittstelle zwischen den Hostrechnern und dem globalen
Speicher 44 wird durch Kanaladapter (CA, engl. „channel
adapter") 48a, 48b, 48c bereitgestellt,
während
die Backend-Schnittstelle zwischen dem globalen Speicher und den
Plattenfeldspeichern über
Plattenadapter (DA, engl. „disk
adapter") 50a, 50b, 50c bereitgestellt wird.
Diese Kanaladapter und Plattenadapter weisen mehrere eingebettete
Prozessoren auf und werden oft als „Direktoren" bzw. „Steuereinheiten" bezeichnet. Globale
Speicherbusse (nicht gezeigt) stellen die Konnektivität zwischen
dem globalen Speicher 44 und sowohl den Kanaladaptern als
auch den Plattenadaptern bereit.
-
Neben
anderen Aufgaben empfangen Kanaladapter Daten von einem bestimmten
Hostrechner und setzen die Daten in ein Speicherformat zusammen,
das mit dem betreffenden Hostrechner kompatibel ist. Jeder Kanaladapter
ist dazu konfiguriert, mehrere Hosts zu bedienen. Zum Beispiel ist der
Kanaladapter 48b, wie in 3 gezeigt,
dazu konfiguriert, mit den Hosts 14b und 14c in
Kontakt zu treten. Die einzelnen Kanaladapter 48a, 48b, 48c sind
jeweils dazu konfiguriert, einen bestimmten Hosttyp zu bedienen.
Zum Beispiel ist der Kanaladapter 48a dazu konfiguriert,
mit dem Mainframe-Hostrechner 14a in Kontakt zu treten,
der bei dieser Ausführungsform
zu der als ESCON (Enterprise System Connection) bekannten Glasfaserkanal-Architektur
von IBM konform ist. Der Kanaladapter 48b andererseits
ist dazu konfiguriert, mit Hosts in Kontakt zu treten, die konform
zu der bekannten SCSI-Schnittstelle (Small Computer Systems Interface) sind.
Plattenadapter am Backend empfangen Daten aus dem globalen Speicher 44 und
zerlegen die Daten in das mit den Plattenfeldspeichern 46a, 46b, 46c kompatible
SCSI-Format.
-
Sowohl
die Kanaladapter 48a, 48b, 48c als auch
die Plattenadapter 50a, 50b, 50c weisen
Datenblockintegritätseinheiten 60 bzw. 62 auf
zum Anwenden und Speichern eines Fehlererkennungsalgorithmus auf
individuelle Datenblöcke,
die zwischen den Hosts und den Plattenfeldspeichern laufen. Zwar können von
den Datenblockintegritätseinheiten 60, 62 andere
Fehlererkennungsalgorithmen benutzt werden, aber bei dieser Ausführungsform
wird eine zyklische Redundanzprüfung
(CRC, Cyclic Redundancy Check) benutzt, um die Integrität der Daten aufrechtzuerhalten.
Wie nachstehend im Zusammenhang mit 4 und 5 beschrieben
werden wird, empfangen die Kanaladapter Daten, die in Plattenfeldspeicher
geschrieben werden sollen, und setzen die Daten zu einem Speicherwort
zusammen, das ein geeignetes Speicherformat aufweist. Sektionen
von vorbestimmter Größe mit Speicherwörtern (z.B.
32 Speicherwörter)
werden im Dual-Port-RAM 64 gespeichert, bis dieser voll
ist; dann wird der Inhalt des RAMs (im „Burst"-Verfahren) in den globalen Speicher 44 transferiert,
wo er von einem geeigneten Plattenadapter gelesen und in einem oder
mehreren Plattenfeldspeichern gespeichert werden kann.
-
Es
wird auf 4 Bezug genommen, in der eine
Ausführungsform
einer Datenblockintegritätseinheit 60 eines
Kanaladapters (hier: Adapter 48a) gezeigt ist. In diesem
Fall ist die Datenblockintegritätseinheit 60 dazu
konfiguriert, mit dem ESCON-Mainframe-Hostrechner 14a in
Kontakt zu treten. Die Datenblockintegritätseinheit 60 weist
einen ESCON-Schnittstellenbus 70 auf,
der 32-Bit-Worte (4 Bytes) empfängt,
wobei jedes Byte in einem aus vier Empfangspuffern 72 gespeichert
wird. Ein Ladepuffer 74 wird benutzt, um die einzelnen Bytes
sequentiell aus den Empfangspuffern 72 zu lesen, so dass
in jedem Taktzyklus der Inhalt des Ladepuffers in die Zusammensetzbankpuffer 74 einer
Zusammensetzstufe 76 gelesen wird.
-
Während die
einzelnen Bytes in einen Zusammensetzbankpuffer 74 gelesen
werden, berechnet ein CRC-Generator 78 kontinuierlich ein
CRC-Ergebnis (in diesem Fall, ein ESCON-CRC-Ergebnis), das in einem „END OF
BLK CRC"-Register 80 (dt. „Blockende-CRC-Register") gespeichert wird.
Ein BLK-Zähler 82 wird
benutzt, um die Anzahl von Bytes zu zählen, die den Ladepuffer 74 durchlaufen.
Sobald die Bankpuffer 74 voll sind, werden alle acht Datenbytes
parallel in eine erste Pipelinestufe 84 geschoben. Während jedes
Taktzyklus werden die acht Datenbytes in eine zweite Pipelinestufe 86 geschoben, die
daraufhin die Daten einem Systemdaten-E/A-Bus 88 bereitstellt,
der mit dem Dual-Port-RAM 64 verbunden ist. Die zweite
Pipelinestufe 86 wird bereitgestellt, um die Wahrscheinlichkeit
einer Blockade des ESCON-Schnittstellenbusses 70, der kontinuierlich Daten
empfängt,
zu minimieren, und um mögliche „Kollisionen" zu vermeiden, wenn
andere Steueradapter (möglicherweise
auf derselben Platine) um den E/A-Bus 82 konkurrieren.
-
Sobald
von dem BLK-Zähler 82 eine
vorbestimmte Anzahl von Bytes (z.B. 512 Bytes) gelesen worden ist,
werden an die zwischen den Bankpuffern 74 und der ersten
Pipelinestufe 84 laufenden Daten FBA-Informationen (8 Bytes)
angehängt.
Als Teil der angehängten
FBA-Informationen in diese aufgenommen sind auch das im Register 80 gespeicherte CRC-Ergebnis
sowie ein Formatcode, ein Schreiber-Identifikationscode, ein Softwarestempelcode und
eine logische Blockadresse (LBA).
-
Es
wird auf 5 Bezug genommen, in der eine
Ausführungsform
eines Plattenadapters 50a gezeigt wird, die sich zum Beziehen
der Daten (d.h. der vom Steueradapter 48a aus 4 zusammengesetzten
Daten) und zum Speichern der Daten in einem der Plattenfeldspeicher
eignet. Bei dieser Ausführungsform
liest die Backend-Datenintegritätseinheit 62 über den
SDIO-Bus 91 durch eine Reihe von Puffern 90, 92 und
Zerlegebankpuffern 94 Daten aus dem globalen Speicher 44 aus
und generiert dann ein CRC-Ergebnis (für den späteren Vergleich), wenn der
BLK-Zähler 82 abläuft. Das
nächste
Speicherwort umfasst die FBA-Informationen, die das CRC-Ergebnis für diesen
Block enthalten. Das generierte CRC-Ergebnis wird daraufhin mit dem CRC
in den FBA-Informationen
vergleichen. Insbesondere weist der Plattenadapter 50a einen
Blockgrößenzähler 96 auf,
der die Anzahl der gelesenen Bytes nachführt. Sobald die vorbestimmte
Anzahl von Bytes, in diesem Falle 512 Bytes, gelesen worden ist,
weiß der Zähler 96,
dass die FBA-Informationen erwartet werden, welche den Formatcode,
die LBA-Startadresse und das Blockende-CRC-Ergebnis beinhalten.
All diese Informationen werden geprüft, um zu bestimmen, ob sie
das erwartete Ergebnis aufweisen. Falls ja, wird der Speicherblock über den
SCSI-Schnittstellenbus 98 in dem passenden Plattenfeldspeicher
gespeichert. Falls nicht, wird eine Fehlermeldung generiert. Wenn
alle Speicherblöcke
aus dem ESCON-Mainframe-Hostrechner 14a in den Plattenfeldspeicher
eingelesen worden sind, ist die Schreiboperation abgeschlossen.
-
Bei
einer Leseoperation (d.h. ein Hostrechner fordert Daten von einem
Plattenfeldspeicher an), führt
der Backend-Plattenadapter an den aus dem passenden Plattenfeldspeicher
ausgelesenen Speicherblöcken
eine CRC-Prüfung
durch. Im Speziellen empfängt
eine Eingangs-Kippschaltung 100 die einzelnen Speicherworte
und übermittelt
sie an eine Abfolge aus Schreibpuffern 102, 104 und 106.
Während
der Zeit, in der Speicherworte von der Kippschaltung 100 an
den Schreibpuffer 102 geleitet werden, berechnet ein CRC-Generator 108 für jedes Speicherwort
ein CRC-Ergebnis. Es ist wichtig, zu erkennen, dass an einen Block
aus Speicherworten FBA-Informationen angehängt worden und zusammen mit
diesem in dem Plattenfeldspeicher gespeichert worden sind. Wie dies
auch für
den Steueradapter 48a der Fall war, zählt ein Blockgrößenzähler 110 die
Anzahl der Bytes, die durch die Kippschaltung 100 laufen,
und, sobald eine vorbestimmte Anzahl von Bytes (z.B. 512 Bytes)
gezählt
wurden, bestimmt der Backend-Plattenadapter, dass der nächste Bytesatz
die FBA-Informationen
beinhaltet, die den Formatcode, die LBA-Startadresse und das Blockende-CRC-Ergebnis
umfassen. Falls diese FBA-Informationen mit dem übereinstimmen, was erwartet
wurde, wird die Weiterleitung der Speicherworte zum Schreibpuffer 102 zugelassen.
Beim Weiterleiten von Speicherworten vom Schreibpuffer 102 an
den Schreibpuffer 104 fügt
der Plattenadapter 50a einen neuen Schreiber-Identifikationscode
ein, der identifiziert, wer die Daten geschrieben hat. Daraufhin
werden die Speicherworte über
den Schreiberpuffer 106 und den SDIO-Bus 91 an
den globalen Speicher 44 weitergeleitet.
-
Es
wird erneut auf 4 Bezug genommen. Der Kanaladapter 48a liest
Daten aus dem globalen Speicher über
den SDIO-Bus 88 in den Dual-Port-RAM 64 und in
eine erste Lesepufferstufe 120 ein. Die Daten werden an
eine zweite Lesepufferstufe 122 weitergeleitet und in eine
Zerlegestufe 124 multiplexiert, die vier Bankpuffer 126 aufweist,
welche jeweils acht Bytes Daten aufnehmen. Der Blockzähler 82 wird
benutzt, um zu bestimmen, wann für
einen Block von Speicherworten die FBA-Informationen erreicht worden
sind. An diesem Punkt werden die LBA-Adresse, der Formatcode und
das CRC-Ergebnis jeweils in eines der Abtastregister 128, 130 bzw. 132 gespeichert.
Diese Informationen werden geprüft,
und falls ein Fehler erkannt wird, wird er markiert. Bei bestimmten
Ausführungsformen
können „CRC ALT"-Puffer aufgenommen
werden, die die herkömmliche,
vom Hostrechner bereitgestellte CRC-Prüfung unterstützen. Weil
die einzelnen Kanaladapter wissen, wann die FBA-Informationen auftreten,
prüfen
sie das mit jedem Block assoziierte CRC-Ergebnis. Außerdem werden
die FBA-Informationen verworfen, nachdem sie geprüft worden
sind, weil der Hostrechner sie nicht benötigt. Auf diese Weise setzt
sich der Datentransfer fort, bis alle Daten übertragen worden sind.
-
Es
ist wichtig, zu erkennen, dass bei dem Ausführungsbeispiel der in 4 gezeigte
Steueradapter 48a benutzt wurde, um Daten für einen ESCON-Hostrechner
zusammenzusetzen und zu zerlegen. Andere Steueradapter (z.B. 48b und/oder 48c),
die mit dem Speichersystem 40 verbunden sind, können dazu
konfiguriert werden, Daten von anderen Typen von Hostrechnern zusammenzusetzen bzw.
zu zerlegen, z.B. von Hostrechnern, die eine SCSI-Schnittstelle
aufweisen.
-
Es
wird auf 6 und 7 Bezug
genommen. Ein Flussdiagramm (6) fasst
die von der Datenblockintegritätseinheit 60 an
einem Datensektor 30 (7), der
von einem Hostrechner empfangen wurde, ausgeführte Schreiboperation zusammen.
Insbesondere werden, wenn ein Hostrechner eine Schreiboperation
auf einen der Plattenfeldspeicher anfordert, die Daten zunächst von
der Integritätseinheit 60 gelesen.
Daten, die von einem Hostrechner übertragen werden, umfassen
im Allgemeinen einen Header, der Metadaten (d.h., Informationen,
die sich auf die Daten beziehen) beinhaltet. Die Metadaten beinhalten
typischerweise zum Beispiel die Größe der Datenblöcke, die übertragen
werden, einen Zeit-/Datumsstempel und, wie oben beschrieben wurde,
den Autor (Schreiber-Identifikation) der Arbeit. Die Integritätsdateneinheit 60 liest
zunächst den
Header ein, um die Größe der Blöcke zu bestimmen,
die von dem fraglichen Hostrechner übertragen werden (Schritt 140).
Der Blockzähler 82 (4)
der Integritätseinheit 60 wird
initialisiert, und Daten werden gelesen (Schritt 142).
Wenn der Zähler 82 anzeigt,
dass ein ganzer Block gelesen worden ist (Schritt 144),
wird für
den betreffenden Block ein CRC-Ergebnis
generiert (Schritt 146). Das CRC-Ergebnis wird dann an
den Datenblock angehängt
und an das passende Plattenspeicherfeld weitergeleitet (Schritt 148),
und der Vorgang wird für
die nachfolgenden Blöcke
wiederholt. Wie sich aus 7 ersehen lässt, hat daher jeder Block
(B1, B2, ...) ein assoziiertes CRC-Ergebnis, das mit dem Datenblock
gespeichert wird.
-
Es
wird auf 8 Bezug genommen. Wenn der Hostrechner
das Lesen eines gesamten Sektors oder eines beliebigen Abschnitts
eines Sektors aus einem Plattenfeldspeicher anfordert, liest die
Integritätseinheit 60 jeden
einzelnen Datenblock, sobald er von dem Plattenfeldspeicher bezogen
wird (Schritt 150). Dann generiert die Integritätseinheit 60 ein CRC-Ergebnis
aus dem Datenblock (Schritt 152). Das neu generierte CRC-Ergebnis
wird mit dem zuvor gespeicherten CRC-Ergebnis verglichen (Schritt 154).
Falls sich die Ergebnisse unterscheiden, wird eine Fehlermeldung
generiert (Schritt 156). Andernfalls wird der Vorgang für nachfolgende
Blöcke
wiederholt.
-
Weitere
Ausführungsformen
fallen in den Schutzumfang der Ansprüche. Zum Beispiel muss der
Plattenspeicher 40, da es sich bei ihm um eine Enterprise-Speichereinheit
handelt, dazu in der Lage sein, Daten von einem beliebigen aus einer
Vielfalt unterschiedlicher Hostrechner zu empfangen. Hosts verschiedener
Anbieter können
jedoch unterschiedliche Blockgrößen benutzen.
Zwar ist bei den meisten Architektu ren mit festen Blöcken 512
Bytes eine akzeptierte Blockgröße; dennoch
können
andere Architekturen eine Blockgröße von zum Beispiel 520 oder 528
Bytes benutzen. In diesem Falle bestimmen die Integritätsdateneinheiten 60 bzw. 62 der
Steueradapter bzw. Plattenadapter eine maximale Blockgröße für alle mit
dem Plattenspeicher 40 verbundenen Hosts. Sobald dieses
Maximum bestimmt worden ist, hängen
die Integritätseinheiten 60, 62 bei
Schreiboperationen zusätzliche
Bytes (ohne Daten) an die Blöcke
derjenigen Anbieter an, die die größere Blockgröße nicht
unterstützen,
so dass alle Blöcke
die gleiche Größe haben.