Nothing Special   »   [go: up one dir, main page]

DE69032614T2 - Verfahren zur Datenverteilung in einer Speicherplattenanordnung - Google Patents

Verfahren zur Datenverteilung in einer Speicherplattenanordnung

Info

Publication number
DE69032614T2
DE69032614T2 DE69032614T DE69032614T DE69032614T2 DE 69032614 T2 DE69032614 T2 DE 69032614T2 DE 69032614 T DE69032614 T DE 69032614T DE 69032614 T DE69032614 T DE 69032614T DE 69032614 T2 DE69032614 T2 DE 69032614T2
Authority
DE
Germany
Prior art keywords
disk
drive
local processor
request
control transfers
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE69032614T
Other languages
English (en)
Other versions
DE69032614D1 (de
Inventor
David L. Tomball Texas 77375 Flower
David L. Houston Texas 77068 Grant
E. David Tomball Texas 77375 Neufeld
David S. The Woodlands Texas 77381 Schmenk
Stephen M. Houston Texas 77070 Schultz
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.)
Compaq Computer Corp
Original Assignee
Compaq Computer 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 Compaq Computer Corp filed Critical Compaq Computer Corp
Publication of DE69032614D1 publication Critical patent/DE69032614D1/de
Application granted granted Critical
Publication of DE69032614T2 publication Critical patent/DE69032614T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/1096Parity calculation or recalculation after configuration or reconfiguration of the system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0632Configuration or reconfiguration of storage systems by initialisation or re-initialisation of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)

Description

  • Die Erfindung betrifft gemäß den beigefügten Ansprüchen die Steuerung von Mehrfach-Plattenlaufwerken innerhalb von Rechnersystemen, insbesondere ein Verfahren zum Verteilen von Daten über eine Mehrfachplattengruppe, außerdem ein Verfahren zum Konfigurieren der Plattengruppe.
  • Mikroprozessoren und Personal-Computer, die sie verwenden, sind in den vergangenen Jahren leistungsstärker geworden. Derzeit verfügbare Personal-Computer haben Kapazitäten, die mühelos diejenigen der Großrechner von vor 20 bis 30 Jahren überschreiten, und sie besitzen die Fähigkeiten zahlreicher derzeit hergestellter Rechner. Mikroprozessoren mit Wortgrößen von einer Breite von 32 Bits sind derzeit umfangreich verfügbar, während in der Vergangenheit 8 Bits konventionell und 16 Bits üblich waren.
  • Personal-Computer-Systeme sind im Laufe der Jahre entwickelt worden, und täglich werden neue Einsatzmöglichkeiten entdeckt. Die Verwendungen variieren, und demzufolge weisen sie verschiedene Anforderungen für verschiedene Subsysteme auf, die ein vollständiges Rechnersystem bilden. Wegen Anforderungen bezüglich des Fertigungsvolumens und den verringerten Kosten bei gesteigerten Größen ist es wünschenswert, daß möglichst viel gemeinsame Merkmale in umfangreichen Einheiten zusammengefaßt werden. Dies ist auf dem Gebiet der Personal-Computer durch die Entwicklung einer Grundsystemeinheit geschehen, die im allgemeinen eine Stromversorgung, Einrichtungen zur baulichen Unterbringung der verschiedenen Massenspeichereinrichtungen und eine Systemplatine enthält, die ihrerseits einen Mikroprozessor, zu dem Mikroprozessor gehörigen Schaltungen, Verbinder zur Aufnahme von Schaltungsplatinen, die weitere Subsysteme enthalten, Schnittstellen- Schaltungen für die Schnittstellen zwischen den Schaltungsplatinen und dem Mikroprozessor und Speicher enthalten. Der Einsatz von Verbindern und austauschbarer Schaltungsplatinen macht es möglich, Subsysteme gewünschter Kapazität für jedes Rechnersystem mühelos in das Rechnersystem einzubeziehen. Der Einsatz von austauschbaren Schaltungsplatinen erfordert die Entwicklung einer Schnittstellen- oder Bus-Norm, so daß das Subsystem einfach ausgelegt werden kann und sich keine Probleme aus nicht kompatiblen Entscheidungen der Systementwerfer einerseits und der Entwerfer der austauschbaren Schaltungsplatine andererseits ergeben.
  • Die Verwendung austauschbarer Schaltungsplatinen und einer Schnittstellen-Norm, üblicherweise als Bus-Spezifikation bezeichnet, weil die verschiedenen Signale für sämtliche Verbinder über einen Bus geleitet werden, war Gegenstand des ursprünglichen Personal-Computers der International Business Machines Corporation (IBM), des IBM PCs. Der IBM PC verwendet als Mikroprozessor einen Intel-Corporation 8088. Der 8088 besitzt eine 8 Bits oder 1 Byte umfassende externe Datenschnittstelle, arbeitet aber intern auf der Grundlage eines 16 Bits umfassenden Worts. Der 8088 besitzt 20 Adreßleitungen, was bedeutet, daß er maximal 1 Mbyte Speicher direkt adressieren kann. Darüber hinaus waren die für die Einbeziehung in den ursprünglichen IBM-PC verfügbaren Speicherkomponenten relativ langsam und teuer im Vergleich zu derzeitigen Bauelementen. Die verschiedenen Subsysteme, beispielsweise Videoausgabeeinheiten oder Massenspeichereinheiten, waren nicht komplex und besaßen außerdem relativ geringe Leistungsstufen aufgrund der relativen Einfachheit der verfügbaren Bauelemente bei vernünftigen Kosten zu jener Zeit.
  • Eingedenk dieser verschiedenen Faktoren und Bauelement-Wahlmöglichkeiten wurde eine Schnittstellen-Norm entwickelt und in dem IBM- PC verwendet. Die Norm verwendete 20 Adressenleitungen und 8 Datenleitungen, besaß individuelle Leitungen zum Kennzeichnen von Operationen im Eingangs- oder Ausgangs-Raum (E/A) oder Lese- /Schreib-Operationen im Speicherbereich, und besaß eine beschränkte Verfügbarkeit für Unterbrechungen und Direktspeicherzugriffs-Kanäle (DMA). Die Komplexität der verfügbaren Komponenten erforderte keine größere Flexibilität oder Kapazitäten der Schnittstellen-Norm, um die notwendigen Operationen zu ermöglichen. Diese Schnittstellen-Norm war für eine Reihe von Jahren zufriedenstellend.
  • Wie in der Rechner- und Elektronikindustrie unvermeidlich, verbesserten sich die Kapazitäten der verschiedenen verfügbaren Bauteile dramatisch. Preise für Speicherbauelemente fielen, Kapazitäten und Arbeitsgeschwindigkeiten nahmen zu. Die Leistungsfähigkeit und die Kapazitäten von Massenspeicher-Subsystemen nahmen zu, im allgemeinen durch die Einbeziehung von Festplatteneinheiten für frühere Floppy-Disk-Laufwerke. Die Videoprozessor-Technologie wurde derart verbessert, daß hochauflösende Farbsysteme zu vernünftigen Preisen erschwinglich wurden. Diese Entwicklungen beschleunigten die Kapazitäten der existierenden IBM-PC-Schnittstellennorm derart, daß die zahlreichen Beschränkungen der Schnittstellen-Norm zu einem Problem wurden. Mit der Einführung des 80286 der Intel Corporation entwickelte IBM einen neuen, leistungsstärkeren Personal-Computer mit der Bezeichnung AT. Der 80286 besitzt einen 16 Bits umfassenden Datenweg und 24 Adreßleitungen, so daß er direkt 16 Mbyte Speicher adressieren kann. Darüber hinaus besitzt der 80286 eine erhöhte Arbeitsgeschwindigkeit und kann mühelos zahlreiche Operationen ausführen, die die Leistungsgrenzen für den 8088 darstellten.
  • Erwünscht war, daß die vorhandenen Subsystem-Schaltungsplatinen in der Lage waren, in dem neuen AT eingesetzt zu werden, so daß die in dem PC verwendete Schnittstellen-Norm genutzt und erweitert wurde. Es wurde eine neue Schnittstellen-Norm entwickelt, die unter der Bezeichnung Industriestandard-Architektur (ISA) bekannt wurde. Es wurde ein zweiter Steckverbinder für jeden Steckplatz hinzugefügt, um zusätzliche Leitungen für die Signale zu haben, die in der Erweiterung verwendet werden. Diese Leitungen enthielten zusätzliche Adressen- und Datenleitungen, um die 24 Bits umfassende Adressierfähigkeit sowie 16 Bits umfassende Datentransfers nutzen zu können, außerdem gab es zusätzliche Unterbrechungs- und Direktspeicherzugriffs-Leitungen sowie Leitungen zum Kennzeichnen, ob die Subsystem-Schaltungsplatine in der Lage war, die erweiterten Merkmale zu nutzen. Während die Adressenwerte von dem 80286-Mikroprozessor innerhalb des Arbeitszyklus relativ früh angeboten werden, konnte die PC-Schnittstellen-Norm die einleitenden Abschnitte der Adressenverfügbarkeit deshalb nicht nutzen, weil es andere Zeitsteuer-Normen für den 8088 gab, um den herum die PC-Schnittstelle ausgestaltet war. Dies beschränkte die Geschwindigkeit, mit der Operationen ausgeführt werden konnten, weil sie nun auf die Schnittstellen-Norm-Spezifikationen für den zeitlichen Ablauf im Speicher beschränkt waren und nicht mit den Geschwindigkeiten arbeiten konnten, die mit dem 80286 verfügbar waren. Deshalb enthielten die neu hinzugekommenen Adressenleitungen vorab verfügbare Adressensignale, jedoch waren die neu hinzugefügten Signale innerhalb des Zyklus zu einem frühen Zeitpunkt verfügbar. Diese Änderung des zeitlichen Ablaufs der Adressensignale ermöglichte eine raschere Ausführung von Operationen, die die erweiterten Bereiche der Architektur benutzten.
  • Mit der Verfügbarkeit von Bauelementen höherer Leistung wurde es möglich, eine andere Haupteinheit verfügbar zu haben als den System- Mikroprozessor oder eine den Bus betreibende Direktspeicherzugriffs- Steuerung. Wegen der Notwendigkeit allerdings, mit Schaltungsplatinen zusammenzuarbeiten, die unter dem neuen 16-Bit-Standard oder dem alten 8-Bit-Standard arbeiteten, mußte jede Haupteinheit sämtliche möglichen Kombinationen von Schaltungsplatinen verstehen und mit ihnen arbeiten können. Dies erhöhte die Komplexität der Haupteinheit und führte zu einer Verdopplung der Bauelemente, weil die Haupteinheit viele von denjenigen Funktionen und Merkmalen beinhalten mußte, die bereits von der Logik und der Schaltung auf der Systemplatine und anderen Haupteinheiten ausgeführt wurden. Außerdem mußte die Haupteinheit die Direktspeicherzugriffs-Steuerung verwenden, um die Steuerung des Busses übernehmen zu können, wodurch die Prioritätsverteilung und die Anzahl von möglichen Haupteinheiten in einem gegebenen Rechnersystem beschränkt wurden.
  • Die Steigerung der Kapazität der Bauelemente hielt an. Die Speicherzugriffsgeschwindigkeiten und -größen nahmen zu, Massenspeichereinheiten und deren Größe wurden gesteigert, die Auflösungen von Videoeinheiten nahmen zu, und es wurde der Intel-80386 eingeführt. Die gesteigerten Möglichkeiten der Bauelemente führten zu dem Wunsch, Bus-Master-Einheiten zu verwenden, allerdings war die Leistungsfähigkeit einer Bus-Master-Einheit beschränkt durch die ISA-Spezifikation und die Kapazitäten. Der 80386 konnte deshalb nicht voll genutzt werden, weil er die Möglichkeit bot, direkt 4 Gbyte eines Speichers mit Hilfe von 32 Adressen-Bits zu adressieren und 32 Bit breite Datentransfers abzuwickeln, während die ISA-Norm lediglich 16 Daten-Bits und 24 Adressen-Bits zuließ. Das Konzept des lokalen Netzwerks (LAN; Local Area Network), nach welchen Informationen und Dateien, die in einem als Server bezeichneten Rechner gespeichert und auf lokale Arbeitsplätze verteilt würden, die beschränkte oder überhaupt keine Massenspeichermöglichkeiten hatten, wurde mit relativ geringem Kostenaufwand mit hoher Bauelementleistung, wie sie für angemessene Server erforderlich war, und bei geringen Kosten für die Bauteile der Arbeitsplätze in die Praxis eingeführt. Es konnte eine Erweiterung ähnlich derjenigen, die bei der Entwicklung der ISA erfolgt war, realisiert werden, um die Möglichkeiten des 80386 zu nutzen. Allerdings hatte dieser Erweiterungstyp gewisse Nachteile. Mit dem Aufkommen des LAN-Konzepts und den Hochleistungsanforderungen des Servers und den Videografik-Arbeitsplätzen, die beim rechnergestützten Entwurf und der Animations-Arbeit eingesetzt wurden, wurde der Bedarf an sehr hohen Datentransfergeschwindigkeiten kritisch. Eine Erweiterung ähnlich derjenigen, die bei der Entwicklung der ISA stattgefunden hatte, konnte diese Möglichkeiten auch dann nicht bieten, als ein etwas kürzerer Norm-Zyklus geschaffen wurde, weil dies die Leistungsfähigkeit immer noch unterhalb der gewünschten Werte gehalten hätte.
  • Mit der zunehmenden Leistungsfähigkeit von Rechnersystemen wurde ersichtlich, daß Massenspeicher-Subsysteme, wie z. B. Festplattenlaufwerke, eine zunehmend bedeutendere Rolle bei dem Transfer von Daten zu dem Rechnersystem und aus dem Rechnersystem spielten. In den vergangenen wenigen Jahren kam es zu einem neuen Trend solcher Speicher-Subsysteme zur Verbesserung der Datentransferleistung, der Kapazität und der Zuverlässigkeit. Bekannt ist dies allgemein als Plattengruppen-Subsystem. Ein Hauptgrund für den Wunsch, ein Plattengruppen-Subsystem aufzubauen, besteht in der Schaffung eines logischen Bauelements, welches eine sehr hohe Datentransfergeschwindigkeit aufweist. Erreicht werden kann dies durch "Gruppenbildung" mehrerer Standard-Plattenlaufwerke und Transferieren von Daten zu diesen oder von diesen Laufwerken zu dem Systemspeicher. Wenn n Laufwerke als Gruppe zusammengefaßt sind, erhöht sich die effektive Datentransfergeschwindigkeit um das n-fache. Diese als "Striping" bezeichnete Methode hatte ihren Ursprung in der Superrechner-Umgebung, in der der Transfer umfangreicher Datenmengen zu und von einem Sekundärspeicher ein häufiges Erfordernis darstellt. Mit dieser Vorgehensweise werden die schließlichen baulichen Laufwerke zu einem einzigen logischen Bauteil und können entweder durch Software oder durch Hardware implementiert werden.
  • In den vergangenen Jahren ist eine Anzahl von Artikeln über den Entwurf und die Verwaltung von Laufwerk-Gruppen (Arrays) veröffentlicht worden, darunter "Some Design Issues of Disk Arrays" von Spencer Ng, April 1989; IEEE; "Disk Array Systems" von Wes E. Meador, April 1989, IEEE; und "A Case for Redundant Arrays of Inexpensive Disks (RAID)" von D. Patterson, G. Gibson und R. Catts, Report Nr. UCB/CSD 87/391, Dezember 1987, Computer Science Division, University of California, Burkley, California.
  • Aus der US-A-4 797 755 sind ein System und ein Verfahren zum Transferieren von Daten zwischen mehreren Platten und einem Speicher bekannt. Dieses bekannte System und Verfahren für den Datentransfer bezieht sich auf eine Mehrzahl von Platten, die eine Plattengruppe bilden, deren Oberflächen jeweils in Sektoren aufgeteilt sind, in denen Daten gespeichert werden können, mit Antriebsmechanismen zum Dre hen der Platten und mit mehreren Datentransferköpfen. Es ist jeweils ein Transferkopf jeweils einer Plattenfläche zugeordnet. Dieses bekannte System besitzt ein intelligentes Massenspeicher- und Platten-Subsystem mit einer Mikroprozessorsteuerung, welche Daten über die Plattengruppe verteilt, wobei die physischen Laufwerksparameter, welche bei der Verteilung von Daten zu verwenden sind, darunter Plattenzylinder-, Kopf und Sektor-Information, berechnet werden.
  • Es ist Ziel der vorliegenden Erfindung, ein verbessertes Verfahren zum Verteilen von Daten über eine Plattengruppe ebenso zu schaffen wie ein verbessertes Verfahren zum Konfigurieren der Plattengruppe, welche das Leistungsvermögen der Plattengruppe steigern.
  • Erreicht wird dieses Ziel erfindungsgemäß durch ein Verfahren zur Verwendung bei einem Rechnersystem, das ein intelligentes Massenspeicher-Plattengruppen-Subsystem enthält, welches eine Mikroprozessorsteuerung besitzt, um Daten über die Plattengruppe zu verteilen, entsprechend dem unabhängigen Anspruch 1, außerdem durch ein Verfahren zur Verwendung bei einem Rechnersystem, welches ein intelligentes Massenspeicher-Gruppen-Subsystem enthält, wobei das Platten- Subsystem eine Mikroprozssorsteuerung aufweist, um die Plattengruppe zu konfigurieren, entsprechend dem unabhängigen Anspruch 7.
  • Die vorliegende Erfindung betrifft ein Verfahren für eine intelligente Plattengruppensteuerung, welches es der Steuerung ermöglicht, den Betrieb der Gruppe auch bis hin zu integrierten Standard-Plattenlaufwerken, die zu Laufwerkspaaren verbunden sind, ohne signifikante Überwachung durch den Leitrechner des Rechnersystems zu verwalten. Insbesondere betrifft die Erfindung die Umsetzung einer logischen E/A- Anforderung seitens des Rechnersystem-Leitrechners oder seitens eines anderen Gerätetreibers, in spezifische physische Laufwerksbefehle, die dazu dienen, die Daten unter den Laufwerken innerhalb der Plattengruppe zu verbreiten. Außerdem betrifft die Erfindung eine Methode, welche die Leistung basierend auf der Betriebsumgebung des Hauptrechnersystems maximiert. Die verbesserte Leistung resultiert aus der verbesserten Subsystem-Leistung, welche bedingt ist durch den Einsatz einer hochspezialisierten Subsystem-Steuerung.
  • Außerdem wird eine verbesserte Systemleistung durch Minimieren des Anteils der leitrechnerseitigen Verarbeitung erreicht. Die Plattengruppensteuerung ermöglicht es dem Hauptprozessor oder dem Gerätetreiber, unabhängig zu sein von der physischen Konfiguration der die Plattengruppe bildenden Gruppe und Laufwerke, der Datenverteilungsmethode, der Laufwerksparitätsoperationen und der meisten Fehlersuch- und Ausfalltoleranz-Aktivitäten.
  • Der Kommunikationsmechanismus zwischen der Plattengruppensteuerung und der Gerätetreiber-Software arbeitet über eine Busmasterschnittstellensteuerung oder eine Kompatibilitätsport-Schnittstellensteuerung. Die Busmastersteuerung eignet sich für Datentransferraten über den EISA- Bus bei einer Rate von 32 Mbytes pro Sekunde unter Verwendung von 32-Bit-Busmaster-Burst-DMA-Zyklen (Typ C), wie sie in der EISA- Spezifikation definiert sind, über die Busmaster-Schnittstellensteuerung. Die Datentransferrate von einem einzelnen Laufwerk innerhalb der Gruppe beträgt annähernd 2 Mbyte pro Sekunde, was bei Implementierung über vier Plattenlaufwerke eine Burst-Datenrate von 8 Mbyte pro Sekunde gestattet, eine beträchtliche Verbesserung gegenüber existierenden Transferraten für ein einzelnes EISA-integriertes Plattenlaufwerk.
  • Die vorliegende Erfindung betrifft eine Methode zum Verteilen von Daten über eine Laufwerksgruppe. Bei der vorliegenden Erfindung empfängt ein lokaler Prozessor innerhalb der Plattengruppensteuerung Informationspakte oder "logische Anforderungen" von dem Hauptprozessor, die einen Platten-E/A-Befehl spezifizieren. Das Informationspaket beinhaltet Information über den spezifischen Befehl, die Priorität des Befehls und Adressen innerhalb des Systemspeichers mit den Quellen oder Zielen für den Datentransfer zu oder von der Plattengruppe. Diese Information ist für sich genommen unzureichend, um Operationen auf Plattenebene durchzuführen. Der lokale Prozessor teilt diese logischen Anforderungen auf in eine Reihe von "Laufwerkanforderungen", welche laufwerkspezifische Information beinhalten, einschließlich einer Plattenlaufwerksnummer, Kopf-, Zylinder- und Sektorinformation, basierend auf dem Typ von Platte innerhalb der Gruppe, die spezielle Steuerung und den Typ des Betriebssystems, mit dem der Hauptrechner läuft. Jede der Laufwerksanforderungen unterhält eine Beziehung mit der logischen Ursprungsanforderung, so daß die Laufwerksanforderung ebenfalls Information beinhaltet, die sich auf die Quell- oder Zieladresse in dem Systemspeicher für den Transfer bezieht. Die Laufwerksanforderungen werden dann zur Ausführung durch die Plattengruppensteuerung verplant. Der tatsächliche Datentransfer zwischen der Plattengruppe und dem Systemspeicher wird von einem Busmaster oder von einer Kompatibilitätsportsteuerung innerhalb der Plattengruppensteuerung abgewickelt. Somit gestattet die vorliegende Erfindung dem System- Hauptprozessor die Ausgabe logischer Befehle im Gegensatz zu der Erzeugung von Laufwerksanforderungen, die von der Plattengruppensteuerung ausgeführt werden müssen, so daß dadurch der Mehraufwand für den Systemprozessor reduziert und die Systemeffizienz gesteigert wird.
  • Die vorliegende Erfindung betrifft auch das Initialisieren einer Logikeinheiten-Konfiguration, basierend auf der Information, die innerhalb der reservierten Sektoren auf der Platte innerhalb der Plattengruppe existiert. Beim Konfigurieren der logischen Einheit liest die vorliegende Erfindung die reservierten Sektoren für sämtliche Platten innerhalb der Gruppe und ermittelt, ob und welche der Platten ein zulässiges, wenn auch nichtkonsistentes Konfigurationsbild aufweist. Wenn mehr als ein zulässiges Konfigurationsbild unter den Platten innerhalb der logischen Einheit existiert, "votiert" die vorliegende Erfindung für diejenige der zulässigen Konfigurationen, die als "Schablone" für die übrigen Platten innerhalb der Gruppe verwendet wird. Besitzt keine der Platten eine zulässige Konfiguration, so leitet das erfindungsgemäße Rechnersystem außerdem die Dienstoperation ein, die dazu ausgelegt ist, eine zulässige Konfiguration zu erzeugen.
  • Ein besseres Verständnis der Erfindung ergibt sich durch die nachfolgende detaillierte Beschreibung der bevorzugten Ausführungsform in Verbindung mit den begleitenden Zeichnungen. Es zeigen:
  • Fig. 1 und 2 schematische Blockschaltbilder eines Rechnersystems, welches die vorliegende Erfindung beinhaltet;
  • Fig. 3 ein schematisches Blockdiagramm einer Plattengruppensteuerung, die die vorliegende Erfindung beinhaltet;
  • Fig. 4 ein Flußdiagramm, welches die Art und Weise darstellt, auf die E/A-Anforderungen an die erfindungsgemäße Plattengruppensteuerung gegeben werden;
  • Fig. 5 ein Flußdiagramm der Art und Weise, auf die die vorliegende Erfindung die Konfigurierung einer Plattengruppe einleitet;
  • Fig. 6 ein Flußdiagramm der Art und Weise, auf die die vorliegende Erfindung ein Datenverteilungsschema für eine Plattengruppenanforderung auswählt;
  • Fig. 7A - 7 G Flußdiagramme eines der Datenverteilungsschemata, die im Rahmen der Erfindung verwendet werden;
  • Fig. 8A - 8F Flußdiagramme weiterer Datenverteilungsschemata, die durch die vorliegende Erfindung verwendet werden;
  • Fig. 9A und 9B ein Flußdiagramm eines dritten Datenverteilungsschemas, welches die vorliegende Erfindung verwendet;
  • Fig. 10 ein Flußdiagramm einer Funktion, mit der die vorliegende Erfindung ermittelt, ob sämtliche Laufwerke innerhalb der Plattengruppe konsistente Laufwerksparameter-Information aufweisen;
  • Fig. 11 ein Flußdiagramm einer Funktion, mit der die vorliegende Erfindung ermittelt, ob zwei individuelle Laufwerke konsistente Laufwerksparameterinformation besitzen;
  • Fig. 12 ein Flußdiagramm einer Funktion, mit der die vorliegende Erfindung ermittelt, welches der Laufwerke innerhalb der Gruppe zulässige Gruppenkonfigurationsinformation enthält;
  • Fig. 13 ein Flußdiagramm der Art und Weise, in der die vorliegende Erfindung Anforderungen für physische Laufwerke plant;
  • Fig. 14 ein Flußdiagramm der Art und Weise, in der die vorliegende Erfindung ermittelt, ob die reservierten Informationssektoren auf einer speziellen Platte zulässig sind;
  • Fig. 15 ein schematisches Blockdiagramm, welches eine Befehlsliste darstellt, einschließlich eines Befehlslisten-Vorsatzes und Anforderungsblöcken; und
  • Fig. 16 ein schematisches Blockdiagramm einer Busmaster-Schnittstelle.
  • Inhaltsverzeichnis
  • I. Rechnersystemüberblick
  • II. Plattengruppensteuerung
  • III. Befehlsprotokoll und -definition
  • IV. Busmaster-Schnittstellensteuerung
  • V. Datenverteilungsbetrieb
  • A. Überblick Befehlsvorlage
  • B. Datenverteilungsmethode
  • 1. Platten-RES-Sektoren
  • 2. Plattengruppenkonfiguration
  • 3. Verteilungsschema-Auswahl
  • 4. Mehrfachblock-Kartierer
  • 5. Direkt-Kartierer
  • 6. Standard-Kartierer
  • 7. Planer
  • 8. Laufwerksprüfung
  • 9. Umfassend-Konsistent-Modul
  • 10. Konsistent-Modul
  • 11. Votieren
  • VI. Schlußfolgerung
  • I. Rechnersystemüberblick
  • Nunmehr auf die Fig. 1 und 2 Bezug nehmend, ist mit dem Buchstaben C allgemein ein Rechnersystem bezeichnet, welches die vorliegende Erfindung beinhaltet. Aus Gründen der Übersichtlichkeit ist das System C in zwei Teilen dargestellt, wobei die Verbindungen zwischen den Fig. 1 und 2 mit eingekreisten Bezugsziffern 1-8 bezeichnet sind. Das System C besteht aus einer Anzahl von Blockelementen, die über vier Busse miteinander verbunden sind. In der vorliegenden Beschreibung bedeuten mnemotechnische Signalzeichen, bei denen den Signaldeskriptoren ein Sternchen hinzugefügt ist, daß das Signal bei einem logisch niedrigen Pegel aktiv ist. Signalzeichen mit Ziffern oder mit Bereichen in spitzen Klammern beziehen sich auf jene speziellen Bits oder Stellen innerhalb eines Busses.
  • In Fig. 1 ist ein Rechnersystem dargestellt. Eine zentrale Verarbeitungseinheit CPU enthält einen Prozessor 20, einen numerischen Coprozessor 22 und eine Cachespeicher-Steuerung 24 und die dazugehörigen Logikschaltungen, die an einen lokalen Prozessorbus 26 angeschlossen sind. Zu der Cache-Steuerung 24 gehören ein Hochgeschwindigkeits-Cachedaten-Schreib-/Lese-Speicher 28, eine nicht-cachebare Speicheradressenkarten-Programmierlogikschaltung 30, ein nicht-cachebarer Adressenspeicher 32, eine Adressenaustausch-Zwischenspeicherschaltung 34 und ein Datenaustausch-Sendeempfänger 36. Zu der CPU gehören außerdem eine lokale Bus-Bereit-Logikschaltung 38, eine Folgeadressen-Freigabelogikschaltung 40 und eine Busanforderungs-Logikschaltung 42.
  • Der Prozessor 20 ist vorzugsweise ein Mikroprozessor Intel-80386. Der Prozessor 20 ist mit seinen Steuer-, Adressen- und Datenleitungen an den lokalen Prozessorbus 26 angeschlossen. Der Coprozessor 22 ist vorzugsweise ein Intel-80387 und/oder ein Weitek WTL 3167-Numerik- Coprozessor, der an den lokalen Prozessorbus 26 und an den Prozessor 20 in konventioneller Weise angeschlossen ist. Der Cache-RAM 28 ist vorzugsweise ein geeigneter statischer Hochgeschwindigkeits-Schreib- /Lese-Speicher, der an die Adressen- und Datenelemente des Busses 26 unter der Steuerung der Cache-Steuerung 24 angekoppelt ist, um die erforderlichen Cachespeicher-Operationen auszuführen. Die Cache- Steuerung 24 ist vorzugsweise eine Cache-Steuerung Intel-82385, konfiguriert für den Betrieb im assoziativen Zweiwege-Mastermodus. In der bevorzugten Ausführungsform sind die Bauteile 33-MHz-Versionen der jeweiligen Einheiten. Die Adressenzwischenspeicherschaltung 34 und der Daten-Sendeempfänger 36 sind an die Cache-Steuerung 24 mit dem Prozessor 20 angeschlossen und bilden eine lokale Bus-Schnittstelle zwischen dem lokalen Prozessorbus 26 und dem Haupt-Bus 44.
  • Die Schaltung 38 ist eine Logikschaltung, die ein Bus-Bereit-Signal bereitstellt, um Zugriff auf den lokalen Bus 26 zu steuern und zu signalisieren, wann der nächste Zyklus beginnen kann. Die Freigabeschaltung 40 wird dazu benutzt, zu signalisieren, daß auf den lokalen Bus 26 die nächste Datenadresse oder der von den Subsystem-Elementen im Pipeline-Adressenbetrieb verwendete Code plaziert werden kann.
  • Der Adressenkartei-Programmierer 30 für den nicht-cachefähigen Speicher arbeitet mit dem Prozessor 20 und dem nicht-cachefähigen Adressenspeicher 32 zusammen, um nicht-cachefähige Speicherplätze zu kartieren. Der nicht-cachefähige Adressenspeicher 32 dient zur Kennzeichnung solcher Bereiche des Systemspeichers, die nicht-cachefähig sind, um zahlreiche Arten von Cachespeicher-Inkohärenz zu vermeiden. Die Busanforderungs-Logikschaltung 42 wird von dem Prozessor 20 und dazugehörigen Elementen dazu benutzt, Zugriff auf den Hauptbus 44 in solchen Situationen anzufordern, in denen z. B. angeforderte Daten sich nicht in dem Cachespeicher 28 befinden und Zugriff auf den Systemspeicher erforderlich ist.
  • In der Zeichnung ist das System C konfiguriert durch den Prozessorbus 26, den Hauptbus 44, einen erweiterten Industrienorm-Architektur-Bus (EISA-Bus) 46 (Fig. 2) und einen X-Bus 90. Die Einzelheiten des in Fig. 2 dargestellten Systemabschnitts, die im folgenden nicht diskutiert werden, sind für die vorliegende Erfindung nicht signifikant, außer daß sie ein Beispiel für ein vollständig konfiguriertes Rechnersystem darstellen. Die EISA-Version 3.1 ist als Anhang 1 beigefügt, um die Anforderungen eines EISA-Systems vollständig zu erläutern. Der in Fig. 2 dargestellte Abschnitt des Systems C ist im wesentlichen ein konfiguriertes EISA-System, welches den benötigten EISA-Bus 46, eine EISA- Bussteuerung 48, Daten-Zwischenspeicher und -Sendeempfänger 50 sowie Adressenspeicher- und -puffer 52 zur Bildung der Schnittstelle zwischen dem EISA-Bus 46 und dem Hauptbus 44 enthält. Außerdem ist in Fig. 2 eine integrierte Systemperipherie 54 dargestellt, die eine Anzahl von Elementen beinhaltet, die in einem Rechnersystem auf EISA- Basis verwendet werden.
  • Die integrierte Systemperipherie (ISP) 54 enthält eine Direktspeicherzugriffs-Steuerung 26 zum Steuern des Zugriffs auf den Hauptspeicher 58 (Fig. 1) oder einen in EISA-Steckplätzen enthaltenen Speicher sowie Eingabe-/Ausgabe-Stellen (E/A), ohne daß das Erfordernis eines Zugriffs auf den Prozessor 20 besteht. Das Hauptspeicherfeld 58 wird als lokaler Speicher betrachtet, es enthält ein Speicherschaltungsfeld mit einer Größe, die sich für die speziellen Anforderungen des Systems eignet. Die ISP 54 enthält außerdem Unterbrechungssteuerungen 70, eine nicht maskierbare Unterbrechungslogik 32 und System-Timer 74, die die Steuerung von Unterbrechungssignalen gestatten und die benötigten Zeitsteuersignale sowie Wartezustände in einer Weise erzeugen, die der EISA-Spezifikation und üblicher Praxis entspricht. Bei der bevorzugten Ausführungsform werden vom Prozessor erzeugte Unterbrechungsanforderungen über Doppel-Unterbrechungs-Steuerschaltungen gesteuert, welche die konventionellen Intel-8259-Unterbrechungssteuerungen emulieren und erweitern. Die ISP 54 enthält außerdem eine Busentscheidungslogik 75, die in Zusammenarbeit mit der Bussteuerung 48 unter den verschiedenen Anforderungen des EISA-Busses 46 durch die Cache-Steuerung 24, die DMA-Steuerung 56 und an dem EISA-Bus 46 angeordnete Master-Bauelemente steuert und entscheidet.
  • Das Hauptspeicherfeld 58 ist vorzugsweise ein dynamischer Schreib- /Lese-Speicher. Der Speicher 58 steht mit dem Hauptbus 44 über eine Datenpufferschaltung 60, eine Speichersteuerschaltung 62 und einen Speicher-Kartierer 68 in Verbindung. Der Puffer 60 führt Daten-Sende- /Empfangsvorgänge und eine Paritätsgenerierung sowie Prüffunktionen aus. Die Speichersteuerung 62 und der Speicherkartierer 68 stehen mit dem Speicher 58 über Adressen-Multiplexer und Spaltenadressen-Strobe- Puffer 66 sowie eine Reihenadressenfreigabelogikschaltung 64 in Verbindung.
  • Der EISA-Bus 46 enthält ISA- und EISA-Steuerbusse 76 und 78, ISA- und EISA-Steuerbusse 80 und 82 sowie Adressenbusse 84, 86 und 88. Systemperipherieeinrichtungen sind über den X-Bus 90 in Kombination mit dem ISA-Steuerbus 46 von dem EISA-Bus 46 aus zugänglich. Die Steuerung und der Daten-/Adressen-Transfer für den X-Bus 90 werden erleichtert durch die X-Bus-Steuerlogik 92, die Daten-Sendeempfänger 94 und die Adressenspeicher 96.
  • An den X-Bus 90 angeschlossen sind verschiedene Peripheriegeräte, beispielsweise eine Tastatur-/Maus-Steuerung 98, die die Schnittstelle zwischen dem X-Bus 90 und geeigneten Tastatur- bzw. Maus-Verbindern 100 und 102 bildet. Ebenfalls an den X-Bus 90 angeschlossen sind Festspeicherschaltungen 106, die Software für Basisoperationen für das System C und für System-Videooperationen enthalten. Ein serieller Übertragungsport 108 ist ebenfalls über den X-Bus 90 an das System C gekoppelt. In einer Blockschaltung 110 sind ein Floppy- und ein Festplattenträger, ein paralleles Port, ein zweites serielles Port und Videounterstützungsschaltungen vorgesehen.
  • 2. Plattengruppensteuerung:
  • Die Plattengruppensteuerung 112 ist an den EISA-Bus 46 angeschlossen, um über diesen Bus die Übertragung von Daten- und Adresseninformation zu ermöglichen. Festplattenverbinder 114 sind an das Festplatten- Trägersystem angeschlossen und stehen ihrerseits in Verbindung mit einer Festplattengruppe 116. Fig. 3 ist ein schematisches Blockdiagramm der Plattengruppensteuerung 112 gemäß der Erfindung. Die Plattengruppensteuerung 112 gemäß der Erfindung enthält eine Busmaster-Schnittstellensteuerung 118 (BMIC), vorzugsweise vom Typ Intel-Corporation 82355, die zur Verwendung mit der EISA-Busmaster-Erweiterungsplatine für 32 Bits ausgelegt ist und sämtliche für Transfers über den EISA- Bus benötigten EISA-Steuer-, Adressen- und Datensignale bereitstellt. Die BMIC 118 wickelt 16 und 32 Bits umfassende Burst-Transfers zwischen dem Plattengruppensystem und dem Systemspeicher ab. Weiterhin ist die BMIC in der Lage, einen Transfer in zwei 32-Bit- Transfers umzusetzen, wenn der für den Transfer vorgesehene Speicher nicht burstfähig ist. Darüber hinaus liefert die BMIC 116 die Transfers variierender Datengrößen zwischen einer Erweiterungsplatine und EISA- sowie ISA-Bauelementen.
  • Die Plattengruppensteuerung 112 gemäß der Erfindung enthält außerdem eine Kompartibilitätsport-Steuerung 120 (CPC). Die CPC 120 ist ausgelegt als Kommunikationsmechanismus zwischen dem EISA-Bus 46 und vorhandener Haupttreiber-Software, die nicht dazu ausgelegt ist, von den Möglichkeiten der EISA vorteilhaften Gebrauch zu machen.
  • Außerdem in der Plattengruppensteuerung 112 gemäß der Erfindung enthalten ist ein Mikroprozessor 122, vorzugsweise ein 80186-Mikroprozessor der Firma Intel Corporation. Der lokale Prozessor 122 ist mit seinen Steuer-, Adressen- und Datenleitungen an die BMIC 118, die CPC 120 und die Transferkanal-Steuerung 124 angeschlossen. Außerdem bildet der lokale Prozessor 122 eine Schnittstelle bezüglich einem lokalen Festspeicher (ROM) 126 und einem dynamischen Schreib-/Lese- Speicher (RAM) 128, die sich innerhalb der Plattengruppensteuerung 112 befinden.
  • Die Transferkanal-Steuerung 124 (TCC) steuert den Betrieb von vier Haupt-DMA-Kanälen, die auf einen statischen RAM-Transferpuffer 130 zugreifen. Die TCC 124 weist DMA-Kanäle der BMIC 118, der CPC 120, dem lokalen Prozessor 122 und dem Plattengruppen-DMA-Kanal 114 zu. Die TCC 124 empfängt von den vier Kanälen Anforderungen und weist jedem Kanal eine Prioritätsstufe zu. Der lokale Prozessor 122 hat die höchste Prioritätsstufe. Der CPC-120-Kanal hat die zweithöchste Prioritätsstufe. Der BMIC-118-Kanal besitzt die dritthöchste Prioritätsstufe, und der Plattengruppen-DMA-Kanal 114 besitzt die niedrigste Prioritätsstufe.
  • Der Plattengruppen-DMA-Kanal 114 wird gemeinsam von vier Plattenlaufwerk-Subkanälen genutzt. Die vier Plattenlaufwerk-Subkanäle können irgendeinem der in der Plattengruppe vorhandenen acht verschiedenen Plattenlaufwerke zugeordnet sein. Die vier Laufwerk-Subkanäle haben innerhalb des Plattengruppen-DMA-Kanals gleiche Priorität. Die Subkanäle werden gleichmäßig durchlaufen, um die Quelle für den Plattengruppen-DMA-Kanal zu werden. Einer der Subkanäle wird in diese Rotation nur dann eingefügt, wenn er eine aktive DMA-Anforderung aufweist. Die verbleibenden drei Subkanäle sind innerhalb der Rotation stets aktiv.
  • Erfindungsgemäß wird eine Anforderung an die Plattengruppensteuerung 112 über die BMIC 118 gegeben. Der lokale Prozessor 122 erstellt bei Empfang dieser Anforderung über die BMIC 118 in dem RAM-Speicher 128 des lokalen Prozessors eine Datenstruktur. Diese Datenstruktur ist auch bekannt als Befehlsliste und kann eine einfache, an die Plattengruppe gerichtete Lese- oder Schreibanforderung sein, oder es kann sich um einen komplexeren Satz einer Anforderung handeln, der mehrfaches Lesen/Schreiben oder Diagnose- und Konfigurationsanforderungen beinhaltet. Die Befehlsliste wird dann an den lokalen Prozessor 122 gegeben, um das erfindungsgemäße Verfahren auszuführen. Der lokale Prozessor 122 überwacht dann die Ausführung der Befehlsliste einschließlich dem Datentransfer. Ist die Ausführung der Befehlsliste abgeschlossen, signalisiert der lokale Prozessor 122 dies dem Betriebssystem-Gerätetreiber. Die Vorlage der Befehlsliste und das Signalisieren einer Befehlslisten abarbeitung werden erreicht durch ein Protokoll, welches die BMIC- 118-E/A-Register verwendet. Um zu ermöglichen, daß mehrere Anforderungen an der Plattengruppensteuerung 112 anstehen, sind diese E/A-Register in zwei Kanäle unterteilt: einen Befehlslisten-Vorlagekanal und einen Befehlslisten-Beendigungskanal.
  • III. Befehlsprotokoll und Definition:
  • Unter Bezugnahme auf Fig. 15 beinhaltet das erfindungsgemäße Verfahren die Entwicklung einer Datenstruktur für die Plattengruppensteuerung 112, die als Befehlsliste 200 bekannt ist. Die Befehlsliste 200 besteht aus einem Befehlslistenvorsatz 202, an den sich eine veränderliche Anzahl von Anforderungsblöcken 204 anschließt. Die Anforderungsblöcke sind in ihrer Länge variabel, und es kann sich bei ihnen um irgendeine Kombination einer E/A-Anforderung handeln, die weiter unten erläutert wird. Eine Befehlsliste 200 enthält typischerweise eine Reihe von zueinander in Beziehung stehenden Anforderungsblöcken 204 zwischen einem Block und irgendeiner beliebigen Anzahl, die weniger als 18 Kbyte Speicher aufnehmen kann. Der Befehlslistenvorsatz 202 enthält Daten, die für sämtliche Anforderungsblöcke 204 innerhalb einer gegebenen Befehlsliste 200 gelten: logische Laufwerksnummer, Priorität und Steuer-Flags. Die Anforderungsblöcke 204 bestehen aus einem Anforderungsblockvorsatz 206 und weiteren erforderlichen Parametern, abhängig von der Beschaffenheit der Anforderung. Der Anforderungsblock-Vorsatz 206 besitzt eine fixe Länge, wohingegen andere Anforderungsparameter variable Länge aufweisen.
  • Die einzelnen Anforderungsblöcke 204 repräsentieren jeweils eine individuelle E/A-Anforderung. Durch Zusammensetzen einer Befehlsliste 200 aus mehreren individuellen Anforderungsblöcken und durch Übermitteln der Befehlsliste 200 an die Plattengruppensteuerung 112 (Fig. 2) verringert sich der Mehraufwand für den Mikroprozessor 20 des Rechnersystems C.
  • Immer noch auf Fig. 15 Bezug nehmend, enthält ein Befehlslistenvorsatz 202 Information, die auf jeden in der Befehlsliste 200 enthaltenden Anforderungsblock 204 zutrifft. Der Befehlslistenvorsatz 202 hat insgesamt eine Länge von 4 Bytes. Die logische Laufwerksnummer spezifiziert, auf welches logische Laufwerk sämtliche Anforderungsblöcke 204 innerhalb der Befehlsliste 200 sich beziehen. Das Verfahren gemäß der Erfindung ermöglicht insgesamt das Spezifizieren von 256 logischen Laufwerken. Das Prioritätsbit dient zur Schaffung einer Steuerung bei der Verarbeitung einer Befehlsliste. Die Plattengruppensteuerung 112 ist im Stande, gleichzeitig zahlreiche Befehlslisten zu bearbeiten. Durch das Spezifizieren von Priorität kann das erfindungsgemäße Verfahren einer Befehlsliste gestatten, vor solchen Befehlslisten verarbeitet zu werden, die bereits von der Plattengruppensteuerung für die Überarbeitung im Plan vorgesehen sind. Die Steuerflag-Bytes werden bei dem erfindungsgemäßen Verfahren zur Fehlerverarbeitung und zum Ordnen von Anforderungen gleicher Priorität verwendet. Geordnete Anforderungen werden nach Priorität eingeplant, allerdings werden sie hinter sämtliche früheren Anforderungen mit gleicher Priorität plaziert. Wenn sämtliche Anforderungen gleiche Priorität besitzen und das Ordnen-Flag gesetzt ist, werden die Anforderungen nach dem Prinzip "wer zuerst kommt, wird zuerst bedient" behandelt.
  • Durch Fehler-Flags innerhalb der Steuerflag-Bytes werden Fehlerzustands-Meldeoptionen spezifiziert. Für den Fall eines Fehlers kann die Plattengruppensteuerung 112 entweder: dem anfordernden Gerät dies signalisieren und mit der Verarbeitung von Anforderungsblöcken 204 innerhalb der Liste fortfahren; dem anfordernden Gerät Meldung machen und das Verarbeiten sämtlicher übriger Anforderungsblöcke 204 innerhalb der Liste anhalten; oder dem anfordernden Gerät den Fehler nicht melden. In sämtlichen Fällen wird in das Befehlslisten-Statusregister ein Fehlercode zurückgegeben, wenn die nächste Meldung über die Beendigung der Befehlsliste erfolgt, und zwar in dem Fehlercodefeld innerhalb des Anforderungsblocks 204, in dem der Fehler aufgetreten ist. Außerdem kann für jeden individuellen Anforderungsblock 204 oder für die gesamte Befehlsliste 200 eine Fertig-Meldung eingestellt werden. Falls der EISA-Bus 46 bei jeder Abarbeitung eines Anforderungsblocks eine Meldung erhalten soll, kann innerhalb des Steuerflag-Feldes ein Flag "melden, wenn jede Anforderung fertig ist" gesetzt werden.
  • Ein Anforderungsblock besteht aus zwei Teilen, einem eine feste Länge aufweisenden Anforderungsvorsatz 206 und einer eine veränderliche Länge aufweisenden Parameterliste 208. Die Parameter werden erzeugt als Datenstrukturen, die als Streu-/Sammel-Deskriptoren (S/G- Deskriptoren) bekannt sind und die Datentransferadressen definieren. Die Felder des Anforderungsvorsatzes 206 enthalten eine Verbindung zu dem nächsten Anforderungsblock 204, den E/A-Befehl, Platz für einen Rückkehr-Status, eine Blockadresse und einen Block-Zähler, außerdem einen Zähler für Elemente der Streu-/Sammel-Deskriptor-Struktur für zwei S/G-Strukturen. Der Anforderungsvorsatz hat insgesamt eine Länge von 12 Bytes.
  • Die Zähler des Streu-/Sammel-Descriptors dienen zum Kennzeichnen der Anzahl von Streu-/Sammel-Descriptoren 208, die in der speziellen Anforderung verwendet werden. Die Anzahl von Streu-/Sammel-Descriptoren 208, die zu dem Anforderungsblock 204 gehören, ist variabel. Wenn der Befehl ein Lesebefehl ist, kann die Anforderung außerdem bis zu zwei unterschiedliche Sätze von Streu-/Sammel-Descriptoren enthalten. Titus, das ist die vorliegende Erfindung, ermöglicht es einem Wegebefehl, Daten von zwei verschiedenen, nicht zusammenhängenden Adressen in irgendeinem System oder Plattenspeicher zu leiten. Jeder Streu- ISammel-Descriptor 208 enthält einen Puffer mit 32 Bit Länge und eine 32-Bit-Adresse. Diese Information dient dazu, die Systemspeicher-Datentransferadresse zu bestimmen, bei der es sich entweder um die Quelle oder die Senke für den Datentransfer handelt. Im Gegensatz zu den Anforderungsblöcken 204 in der Befehlsliste müssen die Streu-/Sammel- Descriptoren benachbart sein, und falls es einen zweiten Streu-/Sammel- Descriptor-Satz für eine Anforderung gibt, so muß dieser direkt dem ersten Satz von Streu-/Sammel-Descriptoren folgen.
  • Eine Befehlsliste 200 besitzt eine veränderliche Zahl von Anforderungsblöcken 204. Um rasch und wirksam die Liste von variablen Anforderungsblöcken 204 durchlaufen zu können, beinhaltet der Anforderungsvorsatz einen Zeiger oder Abstand zur nächsten Anforderung, welcher einen Abstand von "n" Bytes von der laufenden Anforderungsblock- Adresse zum nächsten Anforderungsblock angibt. Dieses Feld macht die Befehlsliste 200 zu einer Menge von verbundenen Listen-Anforderungsblöcken 204. Der letzte Anforderungsblock 204 besitzt an der Stelle "Abstand zur nächsten Anforderung" einen Wert 000H, um das Ende der Befehlsliste 200 zu kennzeichnen. Damit ermöglicht das erfindungsgemäße Verfahren das Vorhandensein von Speicherraum zwischen Anforderungsblöcken 204 innerhalb einer Befehlsliste 200, die von einem Betriebssystem-Gerätetreiber verwendet werden können. Allerdings sei angemerkt, daß je größer der Extraraum zwischen den Anforderungsblöcken 204 ist, desto länger Zeit für die Plattengruppensteuerung 112 erforderlich ist, um die Befehlsliste 200 in ihren lokalen Speicher zu übertragen. Der Befehl spezifiziert die Funktion des speziellen Anforderungsblocks und impliziert das Format der Parameterliste. Die von der Plattengruppensteuerung 112 ausgeführten Befehle beinhalten:
  • BEFEHL
  • IDENTIFIZIEREN LOGISCHES LAUFWERK
  • IDENTIFIZIEREN STEUERUNG
  • IDENTIFIZIEREN STATUS DES LOGISCHEN LAUFWERKS
  • STARTEN WIEDERHERSTELLUNG
  • LESEN
  • SCHREIBEN
  • DIAGNOSEMODUS
  • LESEN KONFIGURATION
  • EINSTELLEN KONFIGURATION
  • "IDENTIFIZIEREN LOGISCHES LAUFWERK" dient zum Identifizieren der logischen Laufwerke innerhalb der Plattengruppe. Die Verarbei tung des Befehls gibt Information über das logische Laufwerk in einen 28-Byte-Puffer zurück. Die enthaltene Information sind die Blocklänge, die Anzahl der Blöcke, ein Tabelleneintrag über Parameter des logischen Laufwerks und ein Fehlertoleranztyp. Wenn ein logisches Laufwerk nicht definiert ist, werden Länge und Anzahl der Blöcke für dieses logische Laufwerk als 0-Werte zurückgegeben. Bei der derzeitigen Implementierung der vorliegenden Erfindung können nur logische Lauf werke 0-7 für das BMIC 118 oder für die logischen Laufwerke CPC 120 definiert werden.
  • "IDENTIFIZIEREN STEUERUNG" dient zum Identifizieren der Konfiguration der Plattengruppensteuerung 112. Er gibt Information in einen 256-Byte-Puffer zurück und dient vornehmlich zum Zurückgeben der Anzahl logischer Laufwerke, die definiert sind. Bei der vorliegenden Implementierung der Erfindung beinhaltet die zurückgegebene Information die Anzahl der logischen Laufwerke, die Konfigurations- Signatur für die Plattengruppensteuerung und die Firmware-Revision für die Plattengruppensteuerung.
  • "IDENTIFIZIEREN STATUS DES LOGISCHEN LAUFWERKS" dient zum Anzeigen des Status eines speziellen logischen Laufwerks. Information wird nach der Verarbeitung dieses Befehls in einen 256- Byte-Puffer zurückgegeben. Die Information beinhaltet den Status des logischen Laufwerks und Zuordnungsinformation über einen Laufwerksausfall. Mögliche Werte, die im Hinblick auf den Status des logischen Laufwerks zurückgegeben werden können, beinhalten: der Ausfall des logischen Laufwerks; die Notwendigkeit des Konfigurierens des logischen Laufwerks; den Betrieb des logischen Laufwerks im Regenerier- Modus; den Bereitzustand des logischen Laufwerks zum Starten der Wiederherstellung; und die Aufnahme der Wiederherstellung des logischen Laufwerks nach einem Netzausfall. Der Befehl "STARTEN WIEDERHERSTELLUNG" ist ein Befehl, der ausschließlich von dem ROM-Speicher des Rechnersystems C während eines Selbsttests nach dem Netzeinschalten benutzt wird. Dieser Befehl erteilt der Plattengruppensteuerung die Erlaubnis, den Wiederherstellungsprozeß zu starten.
  • Ziel der Erfindung ist ein Verfahren und eine Vorrichtung zum Verteilen von Daten unter den Plattengruppenlaufwerken für E/A-Befehle, so zum Beispiel LESEN oder SCHREIBEN. Die E/A-Befehle instruieren die Plattengruppensteuerung, Streu-ISammel-Befehle bezüglich aufeinanderfolgender Datenblöcke durchzuführen. Diese Streu-/Sammel-Deskriptorstruktur wird von der Plattengruppensteuerung dazu benutzt, Daten innerhalb des Gruppenstransfers zu lokalisieren. Die Descriptorstruktur kann Pufferadressen und Pufferlängen für Daten spezifizieren, die in den Systemspeicher 58 oder aus dem Systemspeicher transferiert werden sollen. Die Gesamtpufferlänge muß gleich sein der Anzahl von zu übertragenden Bytes bei jeder E/A-Operation.
  • Der Lesebefehl transferiert sequentielle Datenblöcke von der Platte in Puffer innerhalb des Systemspeichers 58. Zwei Streu-/Sammeldescriptoren stehen zur Verfügung, um Doppel-Ziele für die Daten zu spezifizieren. Die vorliegende Erfindung beinhaltet außerdem ein Verfahren zum Spezifizieren von Teilblock-Transfers. Wenn eine Anfangspufferadresse den Wert 0FFFFFFFh (NULL) hat, springt die vorliegende Erfindung zu dem Abstand der geforderten Bytes und ignoriert im Endeffekt die spezifizierten Daten. Dann liest die Erfindung den Rest der Daten in dem speziellen Block und überträgt ihn zu der Adresse gemäß Anforderung. Die Null-Adresse erzeugt während einer Schreiboperation einen Fehler.
  • Der Schreibbefehl überträgt Daten von dem Systemspeicher 58 oder einem Gerätetreiber und schreibt sie in sequentielle Blöcke der Plattenlaufwerkgruppe. Der Streu-/Sammel-Deskriptorzähler 2 wird von einem Schreibbefehl ignoriert. Der Diagnosebefehl ist ein Spezialbefehl im Rahmen der Erfindung insofern, als er die direkte Manipulation der Hardware ermöglicht. Dieser Befehl wird im allgemeinen als die einzige Anforderung in einer Befehlsliste ausgegeben. Das einzige zulässige Feld innerhalb eines Diagnosebefehls ist das Befehlsfeld. Falls es irgendeine ausstehende Anforderung gibt, wenn der Diagnosebefehl vorgelegt wird, wird ein Abbruchfehler zurückgegeben. Nachdem die Plattengruppensteuerung in den Diagnosemodus versetzt wurde, ist die Plattengruppensteuerung bereit, nach Erhalt der Mitteilung "BEFEHL FERTIG" Diagnosebefehle auszuschließen. Die Plattengruppensteuerung bleibt im Diagnosemodus, bis ihr eine anderslautende Meldung zugeht, und sie verarbeitet keine nicht-diagnostische Befehlsliste.
  • Der Befehl "LESEN KONFIGURATION" dient zum Bestimmen der Konfiguration einer Plattengruppensteuerung, und er gibt die Information in einen 56-Byte-Puffer zurück. Die zurückgegebene Information beinhaltet die Konfigurations-Signatur, die von dem EISA-Konfigurationsdienst geliefert wird und ist in reservierten Sektoren in jedem der physischen Laufwerke eingeschrieben. Die Konfigurations-Signatur wird von dem EISA-Konfigurationsdienst dann erzeugt, wenn das Laufwerk zum ersten Mal konfiguriert wird. Diese Signatur ist in EISA-EMOS und auf den Platten innerhalb einer logischen Einheit gespeichert. Die Konfigurations-Signatur wird von der vorliegenden Erfindung dazu benutzt, zuverlässig zu erkennen, daß ein physisches Laufwerk ein Mitglied der konfigurierten logischen Einheit ist, und daß die Konfiguration der logischen Einheit zu der EISA-Konfiguration paßt. Der Puffer für "LESEN KONFIGURATION" enthält außerdem Information darüber, ob ein Kompatibilitätsport konfiguriert wurde, um die Primär- oder die Sekundäreinrichtung für den Eingang in die Plattengruppe zu sein. Der Puffer "LESEN KONFIGURATION" enthält außerdem einen Wert, der den Typ des Betriebssystems angibt, welches während der EISA-Konfiguration spezifiziert wurde. Dieser Befehl gibt außerdem Information über die Gesamtanzahl physischer Laufwerke zurück, die von dem Konfigurationsdienst während des Diagnosemodus nachgewiesen wurde, außerdem die Anzahl physischer Laufwerke, die während des Konfigurationsdienstes dem logischen Laufwerk zugeordnet wurde; den Typ der Fehlertoleranz (Parität, Spiegel oder keines) die dem logischen Laufwerk von dem Konfigurationsdienst zugeordnet wurde. Der Puffer "LESEN KONFIGURATION" beinhaltet außerdem Information über den spezifischen Laufwerksparameter, so zum Beispiel Sektoren pro Zylinder, Anzahl der Zylinder, Anzahl der Köpfe und Anzahl der Speicherplatten. Der nach Beendigung des Befehls "LESEN KONFIGURATION" geladene Puffer enthält außerdem logische Laufwerksparameter, die von dem Konfigurationsdienst geliefert werden, und eine Bit-Karte, die angibt, welche physischen Laufwerke dem speziellen logischen Laufwerk zugeordnet sind.
  • Das erfindungsgemäße Verfahren basiert auf einem Kommunikationsprotokoll, welches unidirektionale Kanäle für eine Nachrichtenübermittlung zwischen dem Systemprozessor 20 und dem lokalen Prozessor 122 der Plattengruppensteuerung verwendet. Der Kanal, der dazu dient, die neue Befehlsliste 200 zu der Plattengruppensteuerung 112 zu übermitteln, dient auch dazu, die Länge der Befehlsliste 200 in Bytes und eine Etikettenkennung zu übersenden, die zum Identifizieren der Befehlsliste 200 benutzt wird. Die Länge wird benötigt, damit die Plattengruppensteuerung 112 die richtige Menge Speicherplatz in ihrem lokalen Speicher zur Verfügung stellen kann für die Verarbeitung der Befehlsliste. Die Etikettenkennung wird ausschließlich von dem Betriebssystem-Gerätetreiber verwendet und beeinflußt nicht die Verarbeitung der Befehlsliste 200 durch die Plattengruppensteuerung 112. Der Kanal, der die Beendigung der Befehlsliste 200 und Fehlermeldungen zurückmeldet, verwendet die Adressen der Befehlsliste 200 und den Abstandszeiger zu dem die Meldung generierenden Anforderungsblock 204, die Befehlsliste 200, den Status zur Zeit der Meldung und die Etikettenkennung, die geliefert wurde, als die Befehlsliste 200 vorgelegt wurde.
  • IV. Busmaster-Schnittstellensteuerung:
  • Fig. 16 ist ein schematisches Blockdiagramm der BMIC 118. Im folgenden sollen die Funktionen und die Merkmale der BMIC 118 kurz diskutiert werden.
  • Im EISA-Slavemodus überwacht die BMIC 118 die Adreßleitungen des EISA-Busses 46 im Hinblick auf allgemeine E/A-Adressendocodierung, schlitzspezifische Adressendecodierung und Zugriff auf gemeinsam benutzte Register 144. Während Operationen im Slavemodus sind sämtliche internen Register der BMIC 118 über die Schnittstelle 142 des lokalen Prozessors zugänglich, und sämtliche gemeinsamen Register 144 sind für den EISA-Bus 46 oder den lokalen Prozessor 122 über die EISA-Schnittstelle 140 bzw. die Schnittstelle 142 für den lokalen Prozessor zugänglich.
  • Im EISA-Mastermodus wird die BMIC 118 der Master des EISA-Busses 46. Sie kann Burst-, Nicht-Burst-, unangepaßte oder Peek/Poke-Datentransfers durchführen. Während der Operationen im Master-Modus sind sämtliche internen Register der BMIC 118 für den lokalen Prozessor 122 (Fig. 3) über die Schnittstelle 140 des lokalen Prozessores der BMIC 118 zugänglich. Der Entscheiderteil der EISA-Schnittstelle 140 bestimmt, in welchem Modus sich die BMIC 118 befindet, er führt die EISA-Entscheidung durch, und er liefert das Steuersignal, welches zum Regulieren der Slave- und Master-Aktivitäten im Inneren der BMIC 118 benötigt wird. Im Slave-Modus vermittelt der Entscheiderteil der EISA- Schnittstelle 140 außerdem zwischen der EISA-Seite und der lokalen Seite während Zugriffen auf gemeinsam benutzte Register 144.
  • Die EISA-Schnittstelle mit dem Entscheider 140 enthält zwei gleiche unabhängige Transferkanäle, die konfigurierbar sind, um entweder Burst-oder Nicht-Burst-Zyklen zu und von dem Systemspeicher 58 abzuwickeln (Fig. 1). Die BMIC 118 wickelt automatisch Nicht-Burst- oder fehlangepaßte Zyklen ab, falls der durch die BMIC 118 adressierte Speicher keine Burst-Zyklen abarbeiten kann. Fehlangepaßte Zyklen laufen ab, wenn die Datengrößen-Umsetzung von 32 Bits auf 16 Bits oder 8 Bits erforderlich ist.
  • Jeder Transferkanal besitzt drei Registersätze zum Regulieren der Datentransfers. Es sind dies die Basisregistergruppe, die laufende Registergruppe und die Datenstatus-/-Steuerregistergruppe. Diese Implementierung eines dreifachen Registersatzes ermöglicht es dem lokalen Prozessor 122, den nächstfolgenden Transfer auf dem Kanal zu programmieren, während gerade ein laufender Transfer abgewickelt wird. Das Basisregister enthält sieben 8-Bit-Register. Diese Register werden von dem lokalen Prozessor 122 programmiert, wenn ein Transfer über einen der Kanäle angefordert ist. Vier Transferkanal-Basisadressenregister werden zur Bildung der 32 Bits umfassenden Start-EISA-Adresse zusammengefaßt, um während des Transfers benutzt zu werden. Die übrigen drei Register sind die Transferkanal-Basiszählregister. Die Basiszählregister dienen zur Bestimmung der Anzahl durchzuführender Transfers. Die Anzahl von Bits, die übertragen werden kann, reicht von 1 Bit bis 4 GBytes. Das höchstwertige Bit des Transferkanal-Basiszählregisters dient zum Steuern des Starts des Transfers, das zweithöchste Bit dient zum Steuern der Transferrichtung.
  • Der laufende Registersatz enthält sieben Register, von denen jedes einem Basisregister entspricht. Diese Register werden aus den Basisregistern geladen. Die laufenden Transferkanal-Adressenregister enthalten die 32 Bits umfassenden Echtzeit-EISA-Speicheradressen. Die laufenden Transferkanal-Zählregister enthalten die Anzahl der Bits, die noch über den Kanal zu übertragen sind. Der laufende Registersatz kann von dem lokalen Prozessor 122 (Fig. 3) über die Schnittstelle 142 des lokalen Prozessors gelesen werden. Der Status-/Steuerregistersatz umfaßt drei Register: das Transferkanal-Strobe-Register, das Transferkanal-Konfigurationsregister und das Transferkanal-Statusregister. Das Transferkanal- Strobe-Register dient zum Einleiten des Transfers von Daten aus dem Basisregistersatz, der dem laufenden Register zugeordnet ist. Eine Transferanforderung für den Kanal wird im Anschluß an das Laden des laufenden Registers generiert. Das Transferkanal-Konfigurationsregister dient zum Programmieren des Transfermodus. Das Transferkanal-Statusregister liefert den laufenden FIFO-146- und Transferkanal-Status.
  • Beim Initialisieren eines Transfers über einen der beiden Transferkanäle bestimmt die Erfindung zunächst, ob die Basisregister für die gewünschten Transferkanal verfügbar sind. Der lokale Prozessor 122 programmiert oder lädt den Basisregistersatz des Transferkanals mit der gewünschten Transferinformation. Der lokale Prozessor 122 lädt dann den laufenden Registersatz aus dem Basisregister und plant eine Anforderung ein, indem er in das Transfer-Strobe-Registers des Kanals einschreibt. Wenn ein Transfer auf dem angeforderten Kanal im Gange ist, erfolgt das Laden vom Basis- in das laufende Register sofort nach Abschluß des Datentransfers über den angeforderten Kanal.
  • Die BMIC 118 kann für Burst- oder Nicht-Burst-Datentransfers in und aus dem EISA-Speicher programmiert werden. Festgelegt wird dies durch Einschreiben in das Kanalkonfigurationsregister. Wird ein Burst- Modus freigegeben, so schaut die BMIC 118 nach einem Slave-Burst- Signal zu Beginn des Transfers, um festzustellen, ob das adressierte Slave-Gerät zur Abwicklung von Burst-Zyklen geeignet ist. Spricht das Slave-Gerät nicht auf das aktive Slave-Burst-Signal an, so versucht die BMIC 118 nicht, einen Burst-Transfer durchzuführen und macht weiter mit entweder einem Nicht-Burst- oder einem unangepaßten Datentransfer.
  • Damit der lokale Prozessor 122 (Fig. 3) mit anderen Geräten innerhalb des Rechnersystems C (Fig. 1, 2) kommunizieren kann, gestattet es die Erfindung dem lokalen Prozessor 122, individuelle E/A- oder Speicher- Zyklen über den EISA-Bus 46 auszuführen. Diese Zyklen kann man sich ähnlich denken wie "Peek-" oder "Poke"-Anweisungen in der Programmiersprache BASIC. Diese Zyklen können Lese- oder Schreibvorgänge oder starre Austauschvorgänge von 8, 16, 24 oder 32 Bits umfassenden Werten sein. PEEK/POKE-Transferzyklen müssen innerhalb des einzigen Doppelworts enthalten sein. Die Peek/Poke-Operation erfordert vier 8 Bits umfassende Peek-/Poke-Adressenregister, die verknüpft werden, um die 32 Bits umfassenden Peek/Poke-Adressen zu bilden, ein 8 Bits umfassendes Peek-/Poke-Steuerregister, das die Bits enthält, welche festlegen, ob der Zyklus ein E/A-Vorgang oder ein Speicher-, Peek- (Lese-)/Poke-(Schreib-) oder ein verrasteter Austausch ist, und welches Bit während des Zyklus aktiv ist, außerdem vier 8 Bits umfassende Peek-/Poke-Datenregister, die dazu dienen, die Daten für den Peek- /Poke-Zyklus aufzunehmen. Um einen individuellen Schreibzyklus (Poke) auszuführen, lädt der lokale Prozessor 122 das Peek-/Poke-Adressenregister, um die 32-Bit-Speicheradresse oder die 16-Bit-E/A-Adresse zu spezifizieren. Anschließend lädt der lokale Prozessor 122 die zu übertragenden Daten in den Peek-/Poke-Datenregistersatz an den entsprechenden Bitpositionen inneihalb der Datenregistersätze, so daß die Daten auf den korrekten Bitwegen während eines 32-Bit-Busmaster- Transfers übertragen werden. Danach lädt der lokale Prozessor 122 die Peek-/Poke-Steuerregister, um den Typ des Zyklus zu spezifizieren und den Datentransferzyklus einzuleiten. Das Bit 2 innerhalb des lokalen Status-/Steuerregisters wird von der BMIC 118 auf " 1 " gesetzt, um anzuzeigen, daß eine Peek-/Poke-Anforderung anhängig ist und die Peek-/Poke-Register belegt sind. Wenn der Poke-Zyklus mit der Ausführung über den EISA-Bus 46 beendet ist, wird das Peek-/Poke-Statusbit im lokalen Status-/Steuerregister auf normal (0) zurückgestellt. Um einen individuellen Lesezyklus (Peek) auszuführen, lädt der lokale Prozessor 122 die 32-Bit-Speicheradresse in das Peek-/Poke-Adressenregister. Anschließend lädt der lokale Prozessor 122 das Peek-/Poke-Steuerregister, um den Lesezyklus einzuleiten. Der Peek-/Poke-Zyklus erhält von der BMIC 118 das Bit 2 in dem lokalen Status-/Steuerregister auf hohen Pegel gesetzt und verbleibt aktiv, bis der Peek-Zyklus auf dem EISA-Bus 46 zuende ist. Dann kann der lokale Prozessor 122 die Daten aus dem Peek-/Poke-Datenregister lesen. Wird von dem lokalen Prozessor 122 ein verrasteter Austauschzyklus angefordert, so wird zunächst ein Peek-Zyklus geplant, anschließend sofort gefolgt von einem Poke- Zyklus. Während des verrasteten Austauschzyklus wird ein Signal "LOCK" eingerichtet, um anzuzeigen, daß kein weiterer Zugriff auf die adressierte Stelle gemacht werden kann.
  • Die Plattensteuerung 112 beginnt den Master-Modus-Betrieb zu jeder Zeit, wenn eine Transferanfordejung ansteht. Stehen mehr als eine Transferanforderung an, so bedient sie die Plattensteuerung 112 in folgender Reihenfolge: Peek-/Poke-Zyklen haben auf den EISA-Bus 46 den Zugriff mit höchster Priorität, gefolgt von den beiden Datenkanälen. Nachdem die Plattensteuerung 112 die Steuerung des EISA-Busses 46 erlangt hat, führt die Steuerung zunächst jegliche möglicherweise anhängigen Peek-/Poke- oder verrasteten Austauschtransfers durch. Gibt es keine anhängigen Peek-/Poke- oder verrastete Austauschtransfers, bearbeitet die Plattensteuerung 112 Datentransfers, die von einem der beiden Transferkanäle eingeleitet sind. Die beiden Transferkanäle haben gleiche Priorität zueinander und werden alternierend bedient. Die Plattensteuerung fährt solange mit der Inhaberschaft des EISA-Busses 46 fort, bis sie sämtliche ausstehenden Datentransferanforderungen bedient hat oder sie durch anderes Vorrecht von dem EISA-Bus 46 befreit wird. Die Plattensteuerung 112 kann so konfiguriert werden, daß sie den EISA-Bus 46 aufgibt, sobald oder nach voreingestellten Zeitspannen nach Empfang eines Vorrechtssignals über den EISA-Bus.
  • Die Transferpuffer-Schnittstelle 148 als Teil der BMIC 118 liefert Signale, die wesentlich sind für die Anpassung der Plattengruppensteuerung 112 an die physische Plattengruppe. Die Transferpuffer-Schnittstelle 148 ist mit einer Hochgeschwindigkeits-Datentransfersteuerung verbunden und verwendet eine einfache Logik ähnlich derjenigen, die in traditionellen DMA-Anordnungen eingesetzt wird. Diese Schnittstelle beinhaltet einen 16-Bit-Datenbus, einen Takteingang und sieben Steuersignale. Die 16 Datenleitungen dienen der BMIC 118 für den Transfer der Daten zu und von der Transfersteuerung 124 (Fig. 3) innerhalb der Plattengruppensteuerung 112. Die BMIC 118 setzt automatisch die von der Transfersteuerung 124 empfangenen Daten in 32-Bit-Doppelworte um für 32- Bit-Transfers über den EISA-Bus 46. Die Datenleitungen dienen außerdem der BMIC 118 für den Transport von intern generierten Transferstart- und Echtzeit-Adressen zu dem lokalen Prozessor 122 für die Verwendung während Datentransfers. Die Transferdatenpuffer- Schnittstelle 148 beinhaltet vier 8-Bit-Transferpuffer-Schnittstellenregister: zwei Basisregister und zwei laufende Register, die sämtlich mit 16-Bit-Startadressen von dem lokalen Prozessor 122 programmiert werden können. Jeder Transferkanal besitzt ein zugehöriges Basis- und laufendes Register. Die Basis-Register enthalten die Startadressen, die laufenden Register liefern Echtzeitadressen, die zum Verfolgen des laufenden Transfers dienen. Die laufenden Register rücken automatisch jedesmal um eine Adresse vor, wenn ein 16-Bit-Wort über die Transferpuffer-Schnittstelle 148 übertragen wird. Die 16-Bit-Startadresse wird von der Transferpuffer-Schnittstelle 148 zu Beginn sämtlicher neuer Datentransfers zu der Transferkanalsteuerung 124 (Fig. 3) übertragen. Die Inhalte der Basisregister der Transferpuffer-Schnittstelle 148 werden zu den laufenden Registern der Transferpuffer-Schnittstelle 148 übertragen. Die BMIC 118 liefert ein Ladesignal, welches dazu dient, die Startadresse in einem externen Adressenzähler festzuhalten, wo sie von der Transferkanalsteuerung 124 benutzt wird.
  • Die BMIC 118 kann außerdem von dem lokalen Prozessor 122 (Fig. 3) programmiert werden, um jedesmal dann die Transferadresse zu generieren, wenn ein zugehöriger Kanal die Steuerung des EISA-Busses 46 wiedererlangt, zu welchem Zeitpunkt die Adresse innerhalb des Basisregistersatzes auch die Adresse innerhalb des Echtzeit-Registersatzes ist. Durch Programmieren des Bits 7 innerhalb des Kanalkonfigurationsregisters auf "1" wird eine Startadresse zu der Transferkanalsteuerung 124 am Beginn sämtlicher neuer Transfers übertragen, und die Echtzeitadressen werden jedesmal übertragen, wenn der zugehörige Kanal die Beherrschung des EISA-Busses 46 wiedererlangt. Wenn das Bit 7 in dem Kanalkonfigurationsregister auf "0" gesetzt ist, wird die Transferstartadresse zu Beginn sämtlicher neuen Transfers übertragen, und die Echtzeitadresse braucht nicht zu dem laufenden Kanalkoniigurationsregister übertragen zu werden.
  • Die BMIC 118 enthält außerdem zwei identische FIFO-Puffer (FIFOs), einen pro Transferkanal, und einen gemeinsamen Datenausrichter für Datentransfers zwischen dem Rechnersystemspeicher 58 und der Plattengruppensteuerung. Die Primärfunktion der FIFO-/Datenausrichtereinheit 146 besteht darin, die zeitlichen Relationen zwischen dem EISA-Bus 46 und den Bauelementen innerhalb der Plattengruppensteuerung 112 zu trennen und zu vereinfachen. Der FIFO 146 gestattet die zeitliche Abwicklung seitens der Plattengruppensteuerung 112 der BMIC 118, mit lokal erzeugten Taktsignalen gekoppelt zu werden. Dieser lokale Takt kann unabhängig von dem EISA-Bus-Taktsignal sein, das den zeitlichen Ablauf auf dem EISA-Bus 46 bestimmt. Der FIFO sorgt außerdem für einen Latenzschutz für Wartezustände, die entweder auf dem EISA-Bus 46 oder innerhalb der Plattengruppensteuerung entstehen. Jeder FIFO 146 innerhalb der BMIC 118 hat eine Größe von 24 Bits. Die Transferdaten werden in die FIFOs entweder aus der Plattengruppensteuerung 112 oder von dem EISA-Bus 46 geladen, abhängig von der Richtung des Datentransfers. Die Daten werden in den FIFO als Doppelwort während des Datentransfers eingeschrieben. Wenn allerdings die Daten nicht aus einem ausgerichteten Doppelwort bestehen, erfolgt ein teilweises Laden des FIFOs zu Beginn oder am Ende eines Transfers, abhängig von der Bitzählung, dem Adressenprogramm und der Transferrichtung. Der Zustand der FIFOs 146 läßt sich bestimmen anhand des Transferkanal- Statusregistersatzes, der angibt, ob die FIFOs 146 in Ruhe oder aktiv sind. Ein FIFO-Ruhezustand wird definiert als ein FIFO, welches gefüllt ist, während über den EISA gelesen wird, oder welches leer ist, während über den EISA geschrieben wird. In jedem Fall ist die Transferkanalsteuerung 124 nicht in der Lage, den von der EISA-Einrichtung angeforderten Datentransfer aufrechtzuerhalten. Kommt es zu einem FIFO-Ruhezustand, wird der Datentransfer angehalten, und die BMIC 118 bedient entweder die Transferanforderung mit höchster Priorität oder gibt den EISA-Bus 46 zu Gunsten des Rechnersystems ab.
  • Die Datenausrichtfunktion ordnet die 16-Bit-Daten aus der Transferkanalsteuerung 124 um in eine beliebige Bitausrichtung im Systemspeicher 58. Der Datenausrichter sorgt außerdem für das Zusammenstellen und das Auflösen von EISA-Daten während des Transfers. Der Datenausrichter 146 wird auch dazu benutzt, für eine Bitausrichtung auf dem EISA-Bus 46 für den Fall zu sorgen, daß eine fehlausgerichtete Doppelwortgrenze vorliegt. Der Datenausrichter 146 gestattet der BMIC 118, Teil-Doppelwort-Transfers abzuwickeln, wenn dies zu Beginn und am Ende sämtlicher derartiger Transfers notwendig ist.
  • Die Schnittstelle 142 des lokalen Prozessors als Teil der BMIC 118 enthält zwei 8-Bit-Register, über die der lokale Prozessor 122 (Fig. 3) auf sämtliche internen Register der BMIC 118 zugreifen kann. Die Register können in die Schnittstelle 142 des lokalen Prozessors einkopiert werden, sie enthalten ein lokales Datenregister und ein lokales Indexregister. Diese Register werden von dem lokalen Prozessor 122 über Adressenleitungen der lokalen Prozessorschnittstelle 142 ausgewählt. Das lokale Status-/Steuer-Register wird ebenfalls direkt in die lokale Prozessorschnittstelle 142 einkopiert und dient dazu, den lokalen Prozessor 122 mit einem Unterbrechungs-Peek/Poke- und einem Basisregister-Status zu versorgen. Der lokale Prozessor 122 (Fig. 3) und der EISA-Bus 46 kommunizieren miteinander über einen Satz von Befehls- /Status-Registern, die als gemeinsam benutzte E/A-Register 144 bekannt sind. Die gemeinsam benutzten Register 144 beinhalten einen Satz von Briefkastenregistern, Semaphor-Ports und Türklingel-Registern. Die Briefkastenregister dienen zur Weiterleitung von Befehlen und Daten zwischen dem lokalen Prozessor und dem EISA-Bus 46 und werden von den Semaphor-Ports gesteuert. Der Türklingelregistersatz dient zum Informieren des lokalen Prozessors 122 oder des EISA-Busses 46 über das Erscheinen neuer Nachrichten. Außerdem enthalten als Bestandteil des gemeinsam benutzten E/A-Registersatzes 144 sind Identifikationsregister, die dazu dienen, die EISA-Erweiterung bei Identifikationsfunktionen zu unterstützen.
  • Die beiden Semaphor-Ports innerhalb der gemeinsam benutzten E/A- Register 144 werden als Einstell- und Testfunktionen im E/A-Raum benutzt. Die Ports dienen zum Sperren des Zugriffs zu Briefkastenregistern. Jedes der beiden Semaphor-Ports besteht aus einem Semaphor- Flagbit und einem Semaphor-Testbit. Kommt es zu einem Schreibvorgang des Semaphor-Flagbits zu entweder der EISA-Schnittstelle 140 oder der lokalen Prozessorschnittstelle 142, so wird der alte Wert des Semaphor-Flagbits in das entsprechende Semaphor-Testbit einkopiert. Der alte Wert des Semaphor-Flagbits steht dann zur Verfügung, und das zurückzulesende Testbit gelangt entweder an den lokalen Prozessor 122 oder an eine an den EISA-Bus 46 angeschlossene Einrichtung. Wenn der aus dem Semaphor-Testbit zurückgelesene Wert eine "1" ist, steht das angeforderte Betriebsmittel nicht für den Gebrauch zur Verfügung. Wenn hingegen der zurückgelesene Wert eine "0" ist, steht das angeforderte Betriebsmittel für den Gebrauch zur Verfügung und wird von dem anfordernden Prozessor oder Busmaster gesperrt.
  • Der Briefkastenregistersatz enthält einen Satz aus sechzehn 8-Bit-Allzweckregistern, die dazu dienen, Information zwischen der Plattengruppensteuerung und dem EISA-System C zu übermitteln. Die sechzehn Register werden kontinuierlich abgebildet in den EISA-schlitz-spezifischen E/A-Raum, und man kann auf sie bitweise, wortweise oder doppelwortweise zugreifen. Die Register können direkt dazu benutzt werden, Befehls- und Startinformation weiterzuleiten, oder sie können als Zeiger auf größere Befehlsblöcke innerhalb des Speichers dienen. Die Briefkastenregister können zu jeder Zeit entweder von dem EISA-Bus 46 oder der lokalen Prozessorschnittstelle 142 gelesen oder beschrieben werden. Der Briefkastenregistersatz beinhaltet außerdem ein internes Entscheidungsschema, welches die Existenz von unbestimmten Bits für den Fall verhindert, daß es von beiden Seiten des Mailbox-Registers ein gleichzeitiges Lesen und Schreiben gibt.
  • Der gemeinsam benutzte E/A-Registersatz 144 enthält außerdem zwei 8- Bit-Türklingel-Interrupt-/Statusregister, von denen das eine der EISA- Seite und das andere der Plattengruppensteuerung zugeordnet ist. Der EISA-System-Türklingelregistersatz wird von den lokalen Prozessor 122 dazu benutzt, Dienste von der EISA-Seite der BMIC anzufordern, und das lokale Türklingelregister wird von einer Einrichtung auf der EISA- Seite der BMIC 118 dazu benutzt, an den lokalen Prozessor 122 in der Plattengruppensteuerung eine Unterbrechungsanforderung zu senden. Die in jedem Türklingelregister enthaltenen 8 Bits machen es möglich, daß gleichzeitig bis zu acht getrennte Geräte oder Ereignisse in jeder Richtung eine Unterbrechungsanforderung anhängig haben. Jedem Türklingelregister ist ein 8-Bit-Unterbrechungsfreigaberegister zugeordnet, welches dazu benutzt werden kann, die Unterbrechungen seitens der Türklingelregister auf individueller Basis freizugeben oder zu sperren. Die BMIC 118 beinhaltet außerdem ein Systemunterbrechungs-Freigabe- /Steuerregister und ein lokales Status-/Steuerregister, welches zum Sperren von System- und lokalen Unterbrechungen sowie zum Verifizieren des Status der System- und lokalen Unterbrechungen auf globaler Basis dient. Jede Einrichtung oder jedes Ereignis, welches die Plattengruppensteuerung 112 unterbrechen kann, kann eine zugeordnete Bitposition innerhalb des lokalen Unterbrechungs-/Status-Türklingelregisters der BMIC 118 aufweisen. Wenn die an dem EISA-Bus 46 hängende Einrichtung versucht, eine Unterbrechungsanforderung an die Plattengruppensteuerung zu senden, so schreibt sie von der EISA-Seite in das lokale Unterbrechungs-/Status-Türklingelregister ein, in dem die den Einrichtungen zugeordnete Bitposition aktiv gemacht ist. Dies setzt das entsprechende Bit innerhalb des lokalen Unterbrechungs-/Status-Türklingelregisters, beläßt jedoch die übrigen Bits in dem Register unverändert. Wenn jene Bitposition nicht von dem Systemunterbrechungs-Freigabe- /Steuerregister gesperrt wurde, gelangt das Unterbrechungssignal durch die lokale Prozessorschnittstelle 142 zu dem lokalen Prozessor 122. Wenn der lokale Prozessor 122 den Interrupt bedient, liest er das lokale Status-/Steuerregister, um den Ursprung der Unterbrechung zu ermitteln. Wenn das Steuerregister angibt, daß das lokale Türklingelregister eine der freigegebenen Unterbrechungsquellen ist, liest der lokale Prozessor 122 den Inhalt des lokalen Türklingelregisters, um festzustellen, welche Bits aktiv sind und Unterbrechungen anfordern. Der lokale Prozessor bedient eine der Anforderungen aus dem lokalen Türklingelregister, er schreibt in das lokale Türklingelregister an der gesetzten Bitposition ein. Dies hat zur Folge, daß das Bit in dem lokalen Türklingelregister zurückgesetzt wird, daß aber die übrigen Bits unbeeinflußt bleiben.
  • V. Datenverteilungsbetrieb:
  • Das erfindungsgemäße Verfahren ist implementiert als eine Anzahl von Anwendungsaufgaben, die auf dem lokalen Prozessor 122 (Fig. 3) laufen. Aufgrund der Natur der interaktiven Eingabe-/Ausgabe- Operationen ist es für die vorliegende Erfindung unpraktisch, als einzelne Stapelaufgabe auf dem lokalen Prozessor 122 zu operieren. Folglich verwendet der lokale Prozessor 122 ein Echtzeit- Mehrprozessystem, welches es ermöglicht, daß sich der lokale Prozessor 122 mehreren Aufgaben zuwendet, einschließlich die vorliegende Erfindung. Vorzugsweise ist das Betriebssystem auf einem lokalen Prozessor das AMX86 Multitasking Executive von Kadak Products Limited. Der AMX-Betriebssystem-Kern bietet eine Reihe von Systemdiensten zusätzlich zu den Anwendungen, welche die vorliegende Erfindung ausmachen.
  • A. Überblick Befehlsvorlage
  • Wenn der Plattengruppensteuerung 112 eine neue Befehlsliste 200 vorgelegt wird, bestimmt der Systemprozessor 20, ob der Transferkanal frei ist. Ist der Kanal belegt, kann der Systemprozessor 20 durch Abfrage auf den freien Kanal warten, oder er kann die Kanal-Frei-Unterbrechung entmaskieren, so daß ihm signalisiert wird, wann die Plattengruppensteuerung den Kanal freigibt. Fig. 15 ist ein Flußdiagramm des Verfahrens, welches dazu dient, eine neue Befehlsliste 200 an die Plattengruppensteuerung 112 zu übergeben. Der Vorgang des Vorlegens be ginnt im Schritt 300. Der lokale Prozessor 122 empfängt eine Mitteilung über die Vorlage einer Befehlsliste von dem Türklingelregister, Schritt 302. Die Steuerung geht weiter zum Schritt 304, in welchem der lokale Prozessor 122 ermittelt, ob der Kanal 0 (Befehlsvorlagekanal) frei ist. Ist der Kanal frei, geht die Steuerung zum Schritt 304, der das Kanal- Frei-Bit zurücksetzt. Die Steuerung geht zum Schritt 308, der die Befehlslistenadresse, die Länge und die Etikettenkennung in die Brief kastenregister lädt, um von dem lokalen Prozessor gelesen zu werden. Die Steuerung geht zum Schritt 310, in dem der lokale Prozessor 122 das Kanal-Frei-Bit auf "belegt" setzt. Die Steuerung geht zum Schritt 332, der die Vorlage des Befehls beendet. Wenn im Schritt 304 der lokale Prozessor 122 feststellt, daß der Befehlsvorlagekanal nicht frei ist, setzt der lokale Prozessor 122 die Abfrage nach dem freien Kanal fort. Ist der Kanal frei, geht die Steuerung zum Schritt 304. Wenn der lokale Prozessor 122 im Schritt 312 feststellt, daß die Befehlslistenvorlage eine Prioritätsvorlage ist, geht die Steuerung zum Schritt 316, der die Befehlslisten-Adressenlänge und eine Etikettenkennung in eine Ringschleife einreiht, wodurch die von der BMIC 118 zu transferierende Befehlsliste 200 in eine Warteschlange gelangt, wenn der Befehlsvorlagekanal frei ist. Die Steuerung geht zum Schritt 318, in welchem der lokale Prozessor 122 das Kanal-Frei-Unterbrechungsbit entmaskiert. Bei Bedienung der Unterbrechung durch den lokalen Prozessor geht die Steuerung zum Schritt 23, der "Kanal-Frei" zurücksetzt. Die Steuerung geht zum Schritt 322, der dann die Befehlsliste aus der Warteschlange nimmt und die Befehlsliste 200 zu dem Briefkastenregister der BMIC 118 überträgt. Die Steuerung geht weiter zum Schritt 324, der die Befehlslisten-Adresse, -Länge und die Etikettenkennung in die Kanalregister lädt. Die Steuerung geht zum Schritt 326, der ermittelt, ob die Befehlslistenvorlage-Warteschlange leer ist. Ist die Befehlslistenvorlage-Warteschlange leer, geht die Steuerung zum Schritt 328, in welchem der lokale Prozessor 122 das Kanal-Frei-Unterbrechungsbit maskiert. Die Steuerung geht zum Schritt 332, der die Befehlslistenvorlage beendet. Wenn der lokale Prozessor im Schritt 326 feststellt, daß die Warteschlange nicht frei ist, geht die Steuerung zum Schritt 330, der das Kanal-Belegt-Bit setzt.
  • Anschließend geht die Steuerung über zum Schritt 332, der die Vorlage der Befehlsliste abschließt.
  • 1. Platten-RIS-Sektoren:
  • Das erfindungsgemäße Verfahren erfordert die Verwendung reservierter Sektoren auf jeder Platte innerhalb der logischen Einheit. Die reservierten Informationssektoren ("RIS") enthalten Information, die sich auf die individuellen Laufwerke bezieht, ferner auf die logische Einheit in ihrer Gesamtheit, die Konfigurationssignatur, den RIS-Revisionspegel und den individuellen Laufwerkstatus. Diese RIS-Parameter enthalten individuelle Laufwerkparameter wie beispielsweise: die Anzahl von Köpfen eines speziellen Laufwerks; die Anzahl von Bytes pro Spur für ein Laufwerk; die Anzahl von Bytes pro Sektor für ein Laufwerk, und die Anzahl von Sektoren pro Spur für ein Laufwerk und die Anzahl von Zylindern. Auf einer globaleren Stufe beinhaltet die RIS-Information die spezielle Laufwerkskennung, die Laufwerkskonfiguration, die physische Anzahl von Laufwerken, welche die logische Einheit bilden; die Anzahl von Laufwerken, welche die logische Einheit bilden; die physischen Logikeinheit- Parameter und den Treiberstatus für ein spezielles Laufwerk. Die RIS- Daten enthalten außerdem Information, die für die logische Einheit in ihrer Gesamtheit gilt, im Gegensatz zu individuellen Laufwerken. Dieser Informationstyp beeinhaltet den speziellen Volumenzustand, eine Kompatibilitätsport-Adresse, den Typ des Betriebssystems und den verwendeten Verschachtelungsfaktor, den verwendeten Fehlertoleranz-Modus und die Anzahl von Laufwerken, die tatsächlich für den Benutzer verfügbar sind, außerdem die logischen physischen Parameter einschließlich Zylindern, Köpfen etc.. Die RIS-Daten werden zu dem Zweck des Konfigurierens der logischen Einheit ebenso verwendet wie für die Verwaltung der Fehlertoleranzinformation.
  • Die Erfindung richtet sich auf das Akzeptieren eines kompletten logischen Befehls (einschließlich Streu/Sammel-Descriptoren) und auf die Übersetzung logischer Befehle in die physischen Operationen, die not wendig sind, um den logischen Befehl auszuführen. Dieser Übersetzungsprozeß beinhaltet die Umsetzung der ursprünglichen Streu/Sammel- Descriptoren in laufwerksspezifische Information, die jeden physischen Befehl begleitet. Der Übersetzungsprozeß basiert auf der ausgewählten Steuerungskonfiguration, welche die Aufteilungen der Laufwerke innerhalb der Gruppen in Untermengen berücksichtigt, ferner die physischen Kennwerte der Laufwerke innerhalb jeder Untermenge innerhalb der logischen Einheit, den ausgewählten Fehlerkorrekturmodus für die spezielle Laufwerksuntermenge, die ausgewählten Parameter für die Laufwerksuntergruppe, und die Fehlergeschichte der Laufwerksuntergruppe. Was folgt, ist das Verfahren, mit dem die vorliegende Erfindung das Abbildungsschema auswählt, welches bei der Verteilung oder dem Sammeln der Daten Anwendung findet. Die vorliegende Erfindung liest ein Feld innerhalb der Konfigurationsinformation, die die Verteilungsmethoden spezifiziert.
  • 2. Logikeinheit-Konfiguration:
  • Fig. 5 ist ein Flußdiagramm des von der vorliegenden Erfindung verwendeten Verfahrens zum Laden einer Konfiguration für eine spezielle Plattengruppe. Die Plattengruppenkonfiguration wird erzeugt durch den EISA-Konfigurationsdienst (s. Anhang 1) und ist in dem System-CMOS- Speicher gespeichert. Nach dem Netzeinschalten des Rechnersystems setzt der Systemprozessor 20 einen Zeiger auf die Plattenkonfiguration im CMOS-Speicher und sendet diese Information über die BMIC 118 an den lokalen Prozessor 122. Der lokale Prozessor 122 bildet und verifiziert anschließend die Plattenkonfiguration. Die Operation beginnt im Schritt 400. Im Schritt 406 ermittelt der lokale Prozessor 122, ob das erste physische Laufwerk in der Gruppe vorhanden ist. Wenn das erste Laufwerk nicht physisch vorhanden ist, geht die Steuerung zum Schritt 406, wo der lokale Prozessor 122 das Flag für das Laufwerk auf FALSCH setzt und die Laufwerks-RIS-Datenstruktur auf den Wert NULL setzt. Die Steuerung geht zum Schritt 412. Wenn im Schritt 406 festgestellt wird, daß das adressierte Laufwerk vorhanden ist, geht die Steuerung zum Schritt 410, wo der lokale Prozessor 122 das Flag für das vorhandene Laufwerk auf WAHR setzt. Der lokale Prozessor liest die RIS-Sektoren aus dem ausgewählten Laufwerk. Die Steuerung geht nach 412. Im Schritt 412 ermittelt der lokale Prozessor, ob es zusätzliche Laufwerke innerhalb der Plattengruppe gibt. Gibt es weitere Laufwerke, geht die Steuerung zum Schritt 406. Gibt es keine weiteren Laufwerke in der Gruppe, so geht die Steuerung zum Schritt 414. Im Schritt 414 ruft der lokale Prozessor die Routine RIS VALID, welches dazu dient, die Gültigkeit der RIS-Sektoren für jedes der gelesenen Laufwerke zu ermittlen. Die Steuerung geht zum Schritt 416. Im Schritt 416 ermittelt der lokale Prozessor 122, ob die Subroutine RIS VALID mindestens eine zulässige RIS-Struktur in der individuellen Platten-RIS- Information gefunden hat. Wurde keine zulässige RIS-Struktur gefunden, geht die Steuerung zum Schritt 416, wo der lokale Prozessor 122 einen Fehlercode setzt, und anschließend geht die Steuerung zum Schritt 420, der zum aufrufenden Programm zurückführt. Wenn im Schritt 416 festgestellt wird, daß es mindestens eine zulässige RIS-Struktur gibt, geht die Steuerung zum Schritt 422. Im Schritt 422 ruft der lokale Prozessor 122 die Funktion ALL CONSISTENT auf, in der der lokale Prozessor 122 ermittelt, ob die RIS-Sektoren unter sämtlichen existierenden Laufwerken konsistent sind, ausgenommen eine spezielle Laufwerkskennung. Die Steuerung geht zum Schritt 424. Im Schritt 424 ermittelt der lokale Prozessor 122, ob die Routine ALL CONSISTENT einen Code zurückgeliefert hat, der angibt, daß sämtliche Laufwerke konsistente RIS-Daten in ihren Strukturen besitzen. Wenn die Laufwerke nicht konsistent sind, geht die Steuerung zum Schritt 426, wo der lokale Prozessor die Routine VOTE aufruft, um festzustellen, welche der vorhandenen zulässigen RIS-Datenstrukturen dazu benutzt wird, die gesamte Gruppe zu konfigurieren. Die Routine VOTE gibt eine Datenstruktur zurück, die als Schablone für die übrigen Plattenlaufwerke innerhalb der Plattengruppe zu verwenden ist. Die Steuerung geht über zum Schritt 428, wo der lokale Prozessor 122 sämtliche RIS-Datenstrukturen unter den Laufwerken ungültig macht, die nicht konsistent sind mit der von der Routine VOTE zurückgegebenen Schablone. Die Steuerung geht über zum Schritt 430.
  • Wird im Schritt 424 festgestellt, daß sämtliche Laufwerke konsistent sind, geht die Steuerung zum Schritt 430. Im Schritt 430 ermittelt der lokale Prozessor 122, ob sämtliche Laufwerke eine einheitliche Lauf werkskennung besitzen. Wenn die Laufwerke keine einheitliche Laufwerkskennung besitzen, geht die Steuerung über zum Schritt 432, wo der lokale Prozessor 122 die Datenstruktur GLOBAL RIS auf den Wert NULL setzt und anschließend geht die Steuerung zum Schritt 434. Im Schritt 430 ermittelt der lokale Prozessor 122, daß sämtliche Laufwerke eine einheitliche Kennung besitzen, und die Steuerung geht zum Schritt 434. Im Schritt 434 ermittelt der lokale Prozessor, ob das adressierte Laufwerk seine Position in die Laufwerkskarte abbildet, wie dies durch GLOBAL RIS festgelegt wird. Dies würde angeben, ob ein spezielles Laufwerk innerhalb der Gruppe in Bezug auf seine physische Stelle innerhalb der Gruppe bewegt wurde. Wenn die Laufwerke nicht mit der Position in der Laufwerkskarte übereinstimmen, geht die Steuerung zum Schritt 436, wo der lokale Prozessor 122 die Datenstruktur GLOBAL RIS auf NULL setzt. Die Steuerung geht zum Schritt 438. Wenn im Schritt 434 festgestellt wird, daß die Laufwerke mit ihrer Position in der Laufwerkskarte übereinstimmen, geht die Steuerung zum Schritt 438, wo der lokale Prozessor feststellt, ob ein Laufwerk RIS-Daten aufweist, jedoch einen nicht-zulässigen RIS. Wenn die spezielle Platte RIS-Daten, jedoch nicht-zulässige RIS-Daten enthält, geht die Steuerung zum Schritt 440, wo der lokale Prozessor 122 das Laufwerksstatus-Flag setzt, um anzuzeigen, daß das Laufwerk ein Austauschlaufwerk ist. Die Steuerung geht zum Schritt 442. Wenn im Schritt 438 festgestellt wird, daß die Platte keine Daten und eine nicht-zulässige RIS-Struktur aufweist, geht die Steuerung zum Schritt 442. Die Schritte 430 bis 440 dienen zum Prüfen jedes Laufwerks innerhalb der Laufwerksgruppe. Im Schritt 442 ordnet der lokale Prozessor 122 den lokalen Speicher für eine neue Datenstruktur GLOBAL RIS zu. Die Steuerung geht zum Schritt 444, wo der lokale Prozessor 122 die RIS-Datenstruktur von entweder der konsistenten Konfiguration oder der Schablone kopiert, die durch VOTE bestimmt wird. Die Steuerung geht zum Schritt 446, wo der lokale Prozessor den lokalen RIS-Datenstruktur-Speicher freigibt und die neue GLOBAL RIS in sämtliche Laufwerke innerhalb der Gruppe einschreibt. Die Steuerung geht zum Schritt 448, der die Operation der laufenden Funktion beendet.
  • 3. Verteilungsschemaauswahl
  • Fig. 6 ist ein Flußdiagramm der Art und Weise, in der lokale Befehle durch die vorliegende Erfindung empfangen und verarbeitet werden. Die Operation beginnt im Schritt 450. Die Steuerung geht zum Schritt 451, wo der lokale Prozessor 122 die logische Anforderung liest und die Daten der logischen Anforderung an einen Schaltersatz gibt, der das spezielle Kartierungsschema basierend auf Information auswählt, die ihrerseits beruht auf dem Fehlertoleranzmodus, der Steuerung, dem Betriebssystem und der logischen Anforderung. Die Steuerung geht zum Schritt 452, wo, wenn die Konfigurationsinformation ein Standard-Betriebssystem angibt, der lokale Prozessor die Funktion STANDARD MAPPER aufruft. Ist eine direkte Abbildung auf die Platten innerhalb der Gruppe erforderlich, ruft im Schritt 454 der lokale Prozessor 122 die Funktion DIRECT MAPPER auf. Wird aus der Konfiguration und der logischen Anforderung festgestellt, daß die Anforderung eine Mehrblock-Anforderung ist, so ruft der lokale Prozessor 122 im Schritt 456 die Funktion MULTI BLOCK MAPPER auf. Die logische Anforderung ist dann zu einer der drei Kartierungsfunktionen gesendet, die in den Schritten 452 bis 456 angegeben sind. Die Steuerung geht zum Schritt 458, der den Ablauf dieser speziellen Funktion beendet.
  • 4. MULTI BLOCK-Kartiermodul:
  • Die Fig. 7A bis 7 G sind Flußdiagramme des Datenverteilungsverfahrens STANDARD MAPPER innerhalb der logischen Einheit. STANDARD MAPPER wird von der Funktion MAPPER aufgerufen und beginnt den Betrieb im Schritt 500. Die Steuerung geht zum Schritt SO&sub2;, wo der lokale Prozessor 122 unter Verwendung von Laufwerks-, Rechnungs- und Verschachtelungsinformation den globalen RIS holt. Die Steuerung geht zum Schritt SO&sub4;, wenn der lokale Prozessor 122 die Parameter der logischen Anforderungen in lokale Variable einkopiert. Die Steuerung geht zum Schritt 506, wo der lokale Prozessor 122 Anfangs-Laufwerkberechnungen folgendermaßen durchführt:
  • Zwi_Block = Block_Start + Block_Offset
  • Sektoren Pro Segment = Benutzer Laufwerkszählung x Verschachtelung
  • Letzter Block = Zwi_Block + Block_Zählung-1
  • Letztes Segment = Letzter Block/Sektoren Pro Segment
  • Erstes Segment = Zwi_Block/Sektoren_Pro_Segment
  • Offset_Block = Zwi_Block-(Erstes Segment · Sektoren_Pro_Segment
  • Erster_Puffer = Offset Block-(Erster_Puffer · Verschachtelung)
  • Segment_ Diff = Letztes Segment-Erstes Segment
  • Basis-Reihe = Erstes Segment · Verschachtelung
  • Die Steuerung geht zum Schritt 508, wo der logische Prozessor 122 ermittelt, ob der laufende Befehl ein Schreibbefehl ist, und die logische Einheit spezifiziert einen Paritäts-Fehlertoleranzmodus. Lautet die Antwort ja, geht die Steuerung zum Schritt 510, wo der lokale Prozessor 122 das Paritäts-Schreibflag auf WAHR setzt und den physischen Laufwerkszähler gleichsetzt mit der in dem logischen RIS spezifizierten physischen Laufwerkszähler. Die Steuerung geht zum Schritt 512, wo der lokale Prozessor 122 ermittelt, ob Blöcke nicht-zusammenhängend sind oder eine Lücke vorhanden ist. Falls ja, geht die Steuerung zum Schritt 514, wo der lokale Prozessor 122 das Lücken-Flag auf WAHR setzt und die Anzahl von für die laufende Anforderung erforderlichen Laufwerksvorsätzen gleichsetzt mit der Anzahl physischer Laufwerke, multipliziert mit zwei. Dann geht die Steuerung zum Schritt 518. Wenn im Schritt 512 ermittelt wird, daß es keine Lücke gibt, geht die Steuerung zum Schritt 516, wo der lokale Prozessor 122 das Lücken-Flag auf FALSCH setzt und die Anzahl der Laufwerksvorsätze gleichsetzt mit der Laufwerkszählung, multipliziert mit der Segmentdifferenz + 1. Die Steuerung geht zum Schritt 518. Wird im Schritt 508 festgestellt, daß der Befehl kein Schreibbefehl ist und die logische Einheit sich nicht im Paritätsmodus befindet, geht die Steuerung zum Schritt 518. Im Schritt 518 setzt der lokale Prozessor 122 das Paritäts-Schreib-Flag auf FALSCH und berechnet den letzten Offset-Block und die letzte Platte erneut. Weiterhin berechnet der lokale Prozessor 122 die Laufwerkszählung erneut und setzt ihn gleich der Letzte Platte - erste Platte + 1. Die Steuerung geht zum Schritt 520, wo der lokale Prozessor 122 feststellt, ob die Segment Differenz ungleich 0 ist. Ist sie nicht gleich 0, geht die Steuerung zum Schritt 522, der die Laufwerksvorsatzzählung erhöht um die Segment Differenz, multipliziert mit der Anzahl von Benutzerlaufwerken. Die Steuerung geht zum Schritt 523. Wenn im Schritt 520 festgestellt wird, daß die Segment Differenz gleich 0 ist, geht die Steuerung zum Schritt 523. Im Schritt 523 ermittelt der lokale Prozessor 122, ob der Anforderungstyp ein Schreibbefehl ist, und ob die logische Einheit sich in einem Spiegel-Fehlertolerenzmodus befindet. Falls ja, geht die Steuerung zum Schritt 524, wo der lokale Prozessor 122 ein Spiegel-Schreib-Flag auf WAHR setzt und die Anzahl von Lauf werksvorsätzen verdoppelt, die erforderlich sind, um die Schreibvorgänge in die Spiegel-Laufwerke ausführen zu können. Die Steuerung geht zum Schritt 526. Wird im Schritt 523 festgestellt, daß der Anforderungstyp kein Schreibbefehl ist und die logische Einheit sich nicht in einem Spiegel-Toleranzmodus befindet, geht die Steuerung zum Schritt 525, wo der lokale Prozessor 122 das Spiegel-Schreib-Flag auf FALSCH setzt. Die Steuerung geht zum Schritt 526. Im Schritt 526 bestimmt der lokale Prozessor 122 die maximale Blockzellgröße für die erste Iteration. Außerdem initialisiert der lokale Prozessor 122 die lokale Versetzungs basis mit dem Wert 0. Die Steuerung geht zum Schritt 527, wo der lokale Prozessor 122 ermittelt, ob die Blockzählung für die Iteration größer ist als die laufende Paketgröße von 1K Bytes. Falls ja, geht die Steuerung zum Schritt 528, wo der lokale Prozessor 122 die Zwischenblockzählung der Paketzählung gleichsetzt und die Anzahl von zu übertragenden Blöcken verringert. Die Steuerung geht zum Schritt 529. Wird im Schritt 527 festgestellt, daß die Blockzählung für die Iteration nicht größer ist als die Paketgröße, so geht die Steuerung zum Schritt 529, wo der lokale Prozessor 122 die Blockgröße mit der Zwischenblockzählung gleichsetzt und die Anzahl von zu übertragenden Blöcken auf 0 setzt. Dies zeigt an, daß es sich um die letzte Iteration der Schleife MULTI BLOCK-MAPPER handelt. Die Steuerung geht zum Schritt 529. Im Schritt 529 initialisiert der lokale Prozessor 122 den logischen Zwischenoffset auf 0. Die Steuerung geht zum Schritt 530, wo der lokale Prozessor 122 ermittelt, ob das Paritäts-Schreibanforderungs-Flag den Wert WAHR hat, falls nicht geht die Steuerung zum Schritt 613. Falls ja, geht die Steuerung zum Schritt 531, wo der lokale Prozessor 122 das letzte Platten Segment neu berechnet. Die Steuerung geht zum Schritt 532, wo der lokale Prozessor 122 ermittelt, ob das Lücken-Flag auf WAHR gesetzt wurde. Falls nicht, geht die Steuerung zum Schritt 661. Falls ja, geht die Steuerung zum Schritt 533, wo der lokale Prozessor 122 einen Schreibvorgang für die obere Reihe von Platten initialisiert und lokale Variablen gleichsetzt mit laufende Basis Reihe; letztes Platten Segment; Sektor Zählung und logischer Offset. Die Steuerung geht zum Schritt 534, wo der lokale Prozessor 12 physische Parameter neu berechnet, einschließlich Zylinder, Kopf und Sektor-Start, basierend auf Basis Reihe. Der lokale Prozessor 122 setzt auch den Lesezeiger und den Schreibzeiger auf NULL und weist lokalen Speicher für eine Laufwerksanforderung zu.
  • Die Steuerung geht zum Schritt 535, wo der lokale Prozessor 122 lokalen Speicher für einen Laufwerksvorsatz zuordnet. Die Steuerung geht zum Schritt 536, wo der lokale Prozessor 122 ermittelt, ob in das derzeitige Laufwerk eingeschrieben werden soll. Falls ja, geht die Steue rung zum Schritt 537, wo der lokale Prozessor 122 ermittelt, ob die derzeitige Platte derjenigen Platte gleicht, die durch letztes Platten Segment spezifiziert wird. Falls ja, geht die Steuerung zum Schritt 538, wo der lokale Prozessor 122 den Zeiger gleichsetzt mit der nächsten Schreibanforderung und lokalen Speicher für die Laufwerksanforderung zuordnet. Die Steuerung geht zum Schritt 548. Wenn im Schritt 537 ermittelt wird, daß die derzeitige Platte nicht der durch das letzte Segment spezifizierten Platte gleicht, geht die Steuerung zum Schritt 539, wo der lokale Prozessor 122 den Schreibzeiger auf die Schreibliste setzt und lokalen Speicher für die Laufwerksanforderung zuordnet. Weiterhin lädt der lokale Prozessor 122 die Befehlsinformation in die Laufwerksanforderung. Außerdem weist der lokale Prozessor 122 Transferpufferraum zu für die Anforderung, und er setzt einen Zeiger zurück auf die logische Anforderung. Die Steuerung geht zum Schritt 548. Wenn im Schritt 536 festgestellt wird, daß die derzeitige Platte nicht beschrieben werden soll, geht die Steuerung zum Schritt 540, wo der lokale Prozessor 122 ermittelt, ob die derzeitige Platte gleich ist der Anzahl von Benutzerlaufwerken in der logischen Untermenge. Falls ja, geht die Steuerung zum Schritt 541, wo der lokale Prozessor 122 Speicherplatz für die Laufwerksanforderung zuordnet und die Anforderungs-Befehlsstruktur lädt, einschließelich dem Weiterrücken zu dem nächsten Benutzerlaufwerk. Die Steuerung geht zum Schritt 548. Wird im Schritt 540 ermittelt, daß die derzeitige Platte nicht gleich ist der Anzahl von Benutzerlaufwerken in der logischen Untermenge, so geht die Steuerung zum Schritt 542, wo der lokale Prozessor 122 ermittelt, ob der Schreibzeiger auf WAHR steht. Falls ja, geht die Steuerung zum Schritt 543, wo der lokale Prozessor 122 Speicherplatz für die Laufwerksanforderung zuordnet und den Schreibzeiger auf die nächste Anforderung stellt. Die Steuerung geht zum Schritt 545. Wenn im Schritt 542 festgestellt wird, daß der Schreibzeiger nicht auf WAHR steht, geht die Steuerung zum Schritt 544, wo der lokale Prozessor 122 den Schreibzeiger auf die nächste Anforderung und die Schreibliste setzt und lokalen Speicher für die Schreibanforderung zuweist. Der lokale Prozessor 122 lädt außerdem die Sektor- und Befehlsinformation enthaltende Anforderung. Dies hat die Wirkung, daß der Rest der Reihe für diese spezielle Anforderung ausgesperrt wird. Die Steuerung geht zum Schritt 545. Im Schritt 545 ermittelt der lokale Prozessor 122, ob der Lesezeiger auf WAHR gesetzt ist. Falls ja, geht die Steuerung zum Schritt 546, wo der lokale Prozessor 122 den Lesezeiger auf die nächste Anforderung einstellt und lokalen Speicher für die Laufwerksanforderung zuweist. Die Steuerung geht zum Schritt 548. Wenn im Schritt 545 ermittelt wird, daß der Lesezeiger nicht auf WAHR eingestellt ist, geht die Steuerung zum Schritt 547, wo der lokale Prozessor 122 den Lesezeiger auf die Leseliste einstellt und Speicherplatz für eine Laufwerksanforderung zuweist. Außerdem lädt der lokale Prozessor 122 die Laufwerksanforderung für einen Pseudo- Lesebefehl; das ist ein Befehl, der zwar ein Lesen, aber keinen Transfer spezifiziert. Die Steuerung geht zum Schritt 548. Im Schritt 548 lädt der lokale Prozessor 122 den Rest der Laufwerksanforderung mit Information über Zylinder, Sektorzählung, Sektorbeginn, Kopf und Logikanforderung. Die Steuerung geht zum Schritt 549, wo der lokale Prozessor 122 ermittelt, ob das derzeitige Laufwerk das letzte Laufwerk innerhalb der Reihe ist. Falls nicht, geht die Steuerung zum Schritt 535. Falls ja, geht die Steuerung zum Schritt 550, wo der lokale Prozessor 122 die Lese- und Schreibzeigern auf NULL zurücksetzt. Die Steuerung geht zum Schritt 551, wo der lokale Prozessor 122 die zu planende Anforderung für die erste Reihe sendet. Der lokale Prozessor 122 setzt dann die Sektor Zählung, den logischen Offset und die Schreibzeiger zurück. Die Steuerung geht zum Schritt 522, wo der lokale Prozessor 122 ermittelt, ob die laufende Reihe gleich letzte Reihe ist. Falls nicht, geht die Steuerung zum Schritt 553, wo der lokale Prozessor 122 die nächste Reihe inkrementiert. Dann geht die Steuerung zum Schritt 533. Wird im Schritt 552 festgestellt, daß die laufende Reihe gleich der letzte Reihe ist, geht die Steuerung zum Schritt 554. Im Schritt 554 ermittelt der lokale Prozessor 122, ob die Block Zählung größer ist als der Verschachtelungsfaktor. Falls nicht, geht die Steuerung zum Schritt 555, wo die Anzahl von Reihen gleichgesetzt wird mit der Block Zählung. Die Steuerung geht zum Schritt 557. Wird im Schritt 554 festgestellt, daß die Blockzählung größer ist als der Verschachtelungsfaktor, geht die Steuerung zum Schritt 556, wo der lokale Prozessor 122 die Anzahl von Reihen gleichsetzt mit dem Verschachtelungsfaktor. Die Steuerung geht zum Schritt 557. Im Schritt 557 weist der lokale Prozessor 122 lokalen Speicherplatz für die Paritäts Schreibanforderung zu. Die Steuerung geht zum Schritt 558, wo der lokale Prozessor 122 ermittelt, ob die Anforderung an der derzeit berechneten Basis Reihe startet. Falls ja, setzt der lokale Prozessor 122 eine Zwischenvariable mit der Basis Reihe gleich. Dann geht die Steuerung zum Schritt 561. Wenn im Schritt 558 festgestellt wird, daß die Anforderung nicht an der Basis Reihe startet, geht die Steuerung zum Schritt 560, wo der lokale Prozessor 122 die Zwischenvariable gleichsetzt mit Basis Reihe + erster Offset. Die Steuerung geht zum Schritt 561. Im Schritt 561 berechnet der lokale Prozessor 122 für die Zwischenvariable die Kopf-, Zylinder- und Sektorstart-Information neu. Die Steuerung geht zum Schritt 562, wo der lokale Prozessor 122 lokalen Speicher für einen Laufwerksvorsatz zuweist und Laufwerksvorsatz-Information lädt, einschließlich Laufwerkskarte, Laufwerkskennung und logischer Elternteil. Außerdem schließt der logische Prozessor 122 das Laden der Paritäts- Schreibdatenstruktur ab. Die Steuerung geht zum Schritt 563, wo der lokale Prozessor 122 die Leseliste, die Schreibzählung und die Lesezählung initialisiert. Die Steuerung geht zum Schritt 564, wo der lokale Prozessor 122 den lokalen Speicher für die erste Schreibanforderung zuordnet. Die Steuerung geht zum Schritt 665, wo der lokale Prozessor 122 lokalen Speicherplatz für einen Laufwerksvorsatz zuordnet und den Elternteil, die Kennung, die Kartenposition in den Laufwerksvorsatz lädt. Außerdem initialisiert der lokale Prozessor 122 den Plattenzähler. Die Steuerung geht zum Schritt 566, wo der lokale Prozessor ermittelt, ob der Plattenzähler kleiner ist als erste Platte oder größer ist als das letzte Platten Segment. Falls nicht, geht die Steuerung zum Schritt 574. Falls ja, geht die Steuerung zum Schritt 567, wo der lokale Prozessor 122 die Anforderungs Zählung um 2 erhöht und die Lesezählung inkrementiert. Die Steuerung geht zum Schritt 568, wo der lokale Prozessor 122 ermittelt, ob der Schreibzeiger auf WAHR gesetzt ist. Falls ja, geht die Steuerung zum Schritt 569, wo der lokale Prozes sor 122 den Schreibzeiger auf die nächste Anforderung richtet und lokalen Speicher für eine Laufwerksanforderung zuordnet. Die Steuerung geht zum Schritt 571. Wenn im Schritt 568 ermittelt wird, daß der Schreibzeiger nicht den Wert WAHR hat, geht die Steuerung zum Schritt 570, wo der lokale Prozessor 122 den Schreibzeiger auf die Schreibliste einstellt und lokalen Speicher für eine Schreibanforderung zuordnet. Der lokale Prozessor 122 lädt außerdem die Laufwerksanforderungsinformation und setzt den Laufwerksbefehl mit dem Sperrbefehl gleich. Die Steuerung geht zum Schritt 571. Im Schritt 571 ermittelt der lokale Prozessor 122, ob die Leseliste auf WAHR gesetzt ist. Ist sie auf WAHR gesetzt, geht die Steuerung zum Schritt 572, wo der lokale Prozessor 122 den Lesezeiger auf die nächste Anforderung richtet und lokalen Speicher für die Laufwerksanforderung zuweist. Die Steuerung geht zum Schritt 601. Wenn im Schritt 571 ermittelt wird, daß die Leseliste nicht den Wert WAHR hat, geht die Steuerung zum Schritt 573, wo der lokale Prozessor 122 den Lesezeiger auf die Leseliste einstellt und lokalen Speicher für eine Laufwerksanforderung zuweist. Der lokale Prozessor 122 lädt dann die Laufwerksanforderung mit der Laufwerksbefehlsinformation und setzt den Befehl auf einen Lesebefehl ohne Transfer. Die Steuerung geht dann zum Schritt 601. Die Schritte 568 bis 573 haben den Effekt, daß eine Sperranforderung in der Weise erzeugt wird, daß eine Anforderung, die einen Schreibvorgang in ein Paritäts- Laufwerk innerhalb der logischen Einheit beinhaltet, garantiert früher ausgeführt wird als eine Leseanforderung bezüglich exakt der gleichen Platte innerhalb der Einheit. Ohne die Einstellung der Sperrfunktionen wäre es möglich, daß die Leseanforderung, die nach der den Schreibvorgang beinhaltenden Anforderung zum Laufwerk vorgelegt werden soll, vor der Schreibanforderung ausgeführt wird, so daß inkorrekte Paritätsdaten gelesen würden. Wenn im Schritt 566 festgestellt wird, daß der laufende Plattenzähler nicht kleiner ist als erste Platte oder größer ist als letzte Platte, geht die Steuerung zum Schritt 574, wo der lokale Prozessor 122 die Anforderungs- und Schreibzähler inkrementiert. Die Steuerung geht zum Schritt 575, wo der lokale Prozessor 122 ermittelt, ob der Schreibzähler auf WAHR eingestellt ist. Bei WAHR geht die Steue rung über zum Schritt 574, wo der lokale Prozessor 122 den Schreibzeiger auf Schreib Liste einstellt und lokalen Speicher für eine Laufwerksanforderung zuweist. Die Steuerung geht zum Schritt 578. Wenn im Schritt 575 der lokale Prozessor 122 feststellt, daß der Schreibzeiger nicht auf WAHR steht, geht die Steuerung zum Schritt 577, wo der lokale Prozessor 122 den Schreibzeiger auf die Schreibliste richtet. Die Steuerung geht zum Schritt 578. Im Schritt 578 ermittelt der lokale Prozessor 122, ob die laufende Platte gleich der ersten Platte ist. Falls im Schritt 578 festgestellt wird, daß die laufende Platte gleich der ersten Platte ist, geht die Steuerung zum Schritt 579, wo der lokale Prozessor die Reihenzählung gleichsetzt mit dem Verschachtelungsfaktor minus erster Offset. Die Steuerung geht zum Schritt 580, wo der lokale Prozessor 122 ermittelt, ob die laufende Reihenzählung größer ist als die Block Zählung. Falls ja, geht die Steuerung zum Schritt 581, wo der lokale Prozessor 122 die Reihen Zählung mit der Block Zählung gleichsetzt. Die Steuerung geht über zum Schritt 582. Wenn im Schritt 580 ermittelt wird, daß die Reihenzählung nicht größer ist als die Block Zählung, geht die Steuerung zum Schritt 582. Wird im Schritt 578 festgestellt, daß die derzeitige Platte nicht gleich ist der erste Platte, geht die Steuerung zum Schritt 583, wo der lokale Prozessor 122 feststellt, ob die Block Zählung größer als der Verschachtelungsfaktor ist. Falls ja, geht die Steuerung zum Schritt 584, wo der lokale Prozessor 122 die Reihen Zählung gleichsetzt mit dem Verschachtelungsfaktor. Die Steuerung geht zum Schritt 582. Wird im Schritt 583 festgestellt, daß die Block Zählung nicht größer ist als der Verschachtelungsfaktor, so geht die Steuerung zum Schritt 585, wo der lokale Prozessor 122 die Reihen Zählung mit der Block Zählung gleichsetzt.
  • Im Schritt 582 dekrementiert der lokale Prozessor 122 die Block Zählung um die Anzahl von Blöcken, die der speziellen Reihen Zählung zugeordnet sind. Die Steuerung geht zum Schritt 568, wo der lokale Prozessor 122 ermittelt, ob die laufende Startadresse eine einzigartige Startadresse ist, indem ermittelt wird, ob die derzeitige Platte gleichgesetzt ist mit der ersten Platte, und ob erster Offset auf WAHR steht, und ob die derzeitige Platte nicht gleich ist dem letzte Platte Segment. Handelt es sich nicht um eine einzigartige Startadresse, so geht die Steuerung zum Schritt 592. Liegt eine einzigartige Startadresse vor, geht die Steuerung zum Schritt 587, wo der lokale Prozessor 122 die Zylinder-, Kopf- und Sektorstart-Information basierend auf einer Variablen neu berechnet, die gleichgesetzt ist mit Basis Reihe + erster Offset. Die Steuerung geht zum Schritt 588, wo der lokale Prozessor 122 die Anforderungs- und Lesezählungen inkrementiert. Die Steuerung geht zum Schritt 589, wo der lokale Prozessor 122 ermittelt, ob der Leselisten-Zeiger auf WAHR steht. Steht er auf WAHR, geht die Steuerung zum Schritt 591, wo der lokale Prozessor 122 den Lesezeiger auf die nächste Anforderung einstellt und lokalen Speicher für die Leseanforderung bereitstellt. Die Steuerung geht zum Schritt 598. Wird im Schritt 589 festgestellt, daß die Leseliste auf FALSCH eingestellt ist, geht die Steuerung zum Schritt 590, wenn der lokale Prozessor 122 lokalen Speicher für die Laufwerksanforderung zuweist und die Laufwerksanforderung als Leseanforderung ohne Transfer lädt, um dadurch eine Blockieranforderung zu erzeugen. Die Steuerung geht zum Schritt 598. Wird im Schritt 586 festgestellt, daß die Startadresse nicht eine einzigartige Startadresse ist, so geht die Steuerung zum Schritt 592, wo der lokale Prozessor 122 die Schreibdatenstruktur-Zeiger auf die Sektorstart-, Zylinder- und Kopf-Information einstellt, die für Paritäts-Schreibwerte berechnet wurde. Die Steuerung geht zum Schritt 593, wo der lokale Prozessor 122 Anforderungs- und Lesezähler erhöht. Die Steuerung geht zum Schritt 594, wo der lokale Prozessor 122 ermittelt, ob die Leseliste auf WAHR eingestellt ist. Ist sie auf WAHR eingestellt, geht die Steuerung zum Schritt 595, wo der lokale Prozessor 122 den Lesezeiger auf die nächste Anforderung richtet und lokalen Speicher für eine Laufwerksanforderung zuweist. Weiterhin berechnet der lokale Prozessor 122 basierend auf einer Variablen, die mit Basis Reihe + Reihen Zählung gleichgesetzt wurde, die Information über Sektor_Zählung, Kopf, Zylinder und Sektor_Start. Der lokale Prozessor 122 lädt den Laufwerksvorsatz und die Laufwerksanforderung für den Lesebefehl in die Datenstruktur, und er setzt ihn gleich mit einem Befehl zum Lesen ohne Transfer. Somit erzeugt der lokale Prozessor 122 Sperranforderungen, um ein fehlerhaftes Paritäts-Lesen zu verhindern. Die Steuerung geht zum Schritt 597, wo der lokale Prozessor 122 ermittelt, ob die Reihen Zählung gleich der Anzahl von Reihen ist. Falls nicht, geht die Steuerung zum Schritt 593. Falls ja, geht die Steuerung zum Schritt 598. Im Schritt 598 lädt der lokale Prozessor 122 die Schreibanforderungs- Datenstruktur, wobei die Sektor Zählung gleich der Reihen Zählung ist, der Befehl auf Schreiben eingestellt ist, die Sequenzanforderung auf Paritäts Schreiben eingestellt ist, und er lädt den Zeiger zurück auf den Anforderungsvorsatz. Die Steuerung geht zum Schritt 599, wo der lokale Prozessor 122 den Vorsatz, den logischen Blocksprung und das Abstandsfeld aktualisiert. Die Steuerung geht zum Schritt 601, wo der lokale Prozessor 122 das Anforderungs-Zählfeld innerhalb der Vorsatz- Struktur gleichsetzt mit der laufenden Anforderungszählung, die in der lokalen Variablen gehalten wird. Die Steuerung geht zum Schritt 603, wo der lokale Prozessor 122 den Laufwerkszähler um 1 erhöht. Die Steuerung geht zum Schritt 605, wo der lokale Prozessor ermittelt, ob der Laufwerkszähler kleiner ist als die Anzahl von Benutzerlaufwerken innerhalb des logischen Laufwerks. Falls ja, geht die Steuerung zum Schritt 565. Falls nein, geht die Steuerung zum Schritt 606, wo der lokale Prozessor 122 die Schreibanforderungszeiger folgendermaßen einstellt: nächste Anforderung wird auf NULL gesetzt; Sequenz_Zählung wir auf laufende_Benutzer_Laufwerk_Zählung gesetzt; Sequenz Anforderung wird auf Schreib Liste gesetzt; Reihen Block wird gleichgesetzt mit Benutzer Laufwerks Zähler + 1; und Reihen_Endblock wird auf Schreib Zählung + 1 gesetzt. Die Steuerung geht zum Schritt 607, wo der lokale Prozessor 122 ermittelt, ob die Leseliste auf WAHR gesetzt ist. Ist sie auf WAHR gesetzt, geht die Steuerung zum Schritt 611, wo der lokale Prozessor 122 die Lesezeiger für die Datenstruktur auf den nächsten Zeigen auf NULL setzt, die Sequenz_Zählung auf Lese Zählung und die Anforderungsliste mit der Leseliste gleichsetzt. Die Steuerung geht zum Schritt 661. Wenn im Schritt 607 ermittelt wird, daß die Leseliste nicht auf WAHR gesetzt ist, geht die Steuerung zum Schritt 609, wo der lokale Prozessor 122 die Anforderungsliste mit der Schreibliste gleichsetzt. Die Steuerung geht zum Schritt 661. Wenn im Schritt 530 der lokale Prozessor 122 feststellt, daß die laufende Anforderung nicht ein Paritäts-Schreiben ist, geht die Steuerung zum Schritt 613. Im Schritt 613 initialisiert der lokale Prozessor 122 Variable, indem er die Anforderungsliste auf NULL setzt und den Plattenzähler auf die erste Platte setzt. Die Steuerung geht über zu Schritt 615, wo der lokale Prozessor ermittelt, ob die laufende Platte gleich der erste Platte ist. Falls ja, geht die Steuerung weiter zum Schritt 617, wo der lokale Prozessor 122 die Reihen Zählung gleichsetzt mit Verschachtelung - erster_Offset. Die Steuerung geht zum Schritt 619, wo der lokale Prozessor 122 ermittelt, ob die Reihen_Zählung größer ist als die Block Zählung. Falls ja, geht die Steuerung zum Schritt 621, wo die Reihen Zählung gleichgesetzt wird mit der Block_Zählung. Die Steuerung geht zum Schritt 623. Wenn im Schritt 619 festgestellt wird, daß die Reihen Zählung nicht größer ist als die Block_Zählung, geht die Steuerung zum Schritt 623. Im Schritt 623 wird die Reihe so berechnet, daß sie den Wert Basis Reihe + erster Offset hat. Außerdem berechnet der lokale Prozessor 122 die letzte Reihe zu Reihe + 1. Die Steuerung geht zum Schritt 633.
  • Wenn im Schritt 615 der lokale Prozessor 122 ermittelt, daß die laufende Platte nicht die erste_Platte ist, geht die Steuerung zum Schritt 625, wo der lokale Prozessor 122 feststellt, ob die Block_Zählung größer ist als der Verschachtelungsfaktor. Falls ja, geht die Steuerung zum Schritt 627, wo der lokale Prozessor 122 die Reihen Zählung gleichsetzt mit dem Verschachtelungsfaktor. Die Steuerung geht zum Schritt 631. Wenn der lokale Prozessor 122 im Schritt 625 feststellt, daß die Block_ Zählung nicht größer als der Verschachtelungsfaktor ist, geht die Steuerung zum Schritt 629, wo die Reihen Zählung gleichgesetzt wird mit der Block_Zählung. Die Steuerung geht über zum Schritt 631. Im Schritt 631 wird der lokale Prozessor 122 die Reihe gleich mit der Basis_Reihe. Die Steuerung geht zum Schritt 633.
  • Im Schritt 633 ermittelt der lokale Prozessor 122, ob der laufende Reihenwert nicht gleich ist mit letzte Reihe. Falls richtig, geht die Steuerung zum Schritt 635, wo der lokale Prozessor 122 den Reihenwert gleichsetzt mit letzte_Reihe und basierend auf dem Reihenwert die Zylinder-, Kopf- und Sektor Start-Information neu berechnet. Die Steuerung geht zum Schritt 637. Wenn im Schritt 633 der lokale Prozessor 122 feststellt, daß die Reihe gleich ist der letzte_Reihe, geht die Steuerung zum Schritt 637. Im Schritt 637 ermittelt der lokale Prozessor 122, ob die Anforderungsliste auf WAHR eingestellt ist. Falls sie WAHR ist, geht die Steuerung über zum Schritt 641, wo der lokale Prozessor 122 den Anforderungszeiger auf die nächste Anforderung richtet und lokalen Speicher für die Laufwerksanforderung zuweist. Die Steuerung geht zum Schritt 643.
  • Wenn im Schritt 637 festgestellt wird, daß die Anforderungsliste nicht auf WAHR gesetzt ist, geht die Steuerung über zum Schritt 639, wo der lokale Prozessor 122 lokalen Speicher für die Anforderungsliste zuweist. Die Steuerung geht zum Schritt 643. Im Schritt 643 lädt der lokale Prozessor 122 den Anforderungsblock mit Sektor_Zählungs-, Sektorstart-Kopf und Anforderungstyp-Information. Die Steuerung geht zum Schritt 645. Im Schritt 654 weist der lokale Prozessor 122 lokalen Speicher für den Anforderungsvorsatz zu und lädt Vorsatzblockinformation mit der Laufwerkskartenposition, der Anforderungs Zählung, der Reihen Zählung, der Laufwerkskennung und dem logischen Block Offset. Die Steuerung geht zum Schritt 647. Im Schritt 647 ermittelt der lokale Prozessor 122, ob die laufende Anforderung eine Spiegelschreibanforderung ist. Handelt es sich nicht um eine Spiegelschreibanforderung, so geht die Steuerung zum Schritt 649, wo der lokale Prozessor 122 Transferpufferplatz zuweist und die Sequenz_Anforderung auf NULL setzt. Die Steuerung geht zum Schritt 657. Wenn im Schritt 647 festgestellt wird, daß das Spiegelschreib-Flag auf WAHR steht, geht die Steuerung zum Schritt 651, wo der lokale Prozessor 122 Transferpufferplatz zuweist. Außerdem setzt der lokale Prozessor 122 die Sequenzanforderung auf den Spiegelzeiger und weist lokalen Speicher für die Laufwerksanforderung zu. Die Steuerung geht zum Schritt 653, wo der lokale Prozessor 122 Laufwerksanforderungs-Information einschließlich Befehl, Sequenz Zählung, Sequenz Anforderung, Reihen_Block und Reihen_Endblock lädt. Die Steuerung geht zum Schritt 655, wo der lokale Prozessor 122 Speicher für den Laufwerksvorsatz zuweist und die Laufwerksvorsatz-Information einschließlich eines Zeigers zurück auf die Laufwerksanforderung lädt. Die Steuerung geht zum Schritt 657. Im Schritt 657 inkrementiert der lokale Prozessor 122 den Plattenzähler auf die nächste Platte. Weiterhin dekrementiert der lokale Prozessor 122 die Block-Zählung um die Anzahl von Blöcken, die der Reihe zugeordnet sind, und aktualisiert den Logik_Offset um die Reihen_Zählung. Die Steuerung geht über zum Schritt 659, wo der lokale Prozessor 122 ermittelt, ob es weitere Blöcke in der Anforderungsliste gibt. Falls ja, geht die Steuerung zum Schritt 615. Falls nein, geht die Steuerung zum Schritt 663, wo der lokale Prozessor 122 die Basis Reihe um die Verschachtelung aktualisiert, die Variablen der ersten Platte und des erster Offset auf Null zurücksetzt und den Logik_Offset aktualisiert. Die Steuerung geht zum Schritt 665, der zu dem aufrufenden Programm zurückführt.
  • 5. Direkt-Kartierer:
  • Fig. 9A und 9B sind Flußdiagramme der Direkt-Kartierer-Funktion DIRECT_MAPPER. DIRECT_MAPPER dient zum Umsetzen einer logischen Anforderung in eine Liste von Laufwerksanforderungen unter Verwendung eines direkten logisch-phyischen Kartierungsschemas. Der Betrieb beginnt im Schritt 550. Die Steuerung geht weiter zum Schritt 552, wo der lokale Prozessor 122 lokalen Speicher für Variable zuweist und die Daten GLOBAL RIS in die lokalen Variablen einkopiert. Die Steuerung geht zum Schritt 554, wo der lokale Prozessor 122 eine Anforderungsbefehls-Startadresse und eine Befehlslänge liest. Die Steuerung geht zum Schritt 556, wo der lokale Prozessor 122 die Anzahl von Laufwerksvorsätzen ermittelt, die erforderlich sind, um die spezielle logische Anforderung zu transferieren. Die logische Anforderung wird aufgetrennt in kleinere Segmente, damit die Größe der erzeugten physischen Anforderung nicht eine definierte Maximalgröße übersteigt. Dies gewährleistet, daß die Verarbeitung der logischen Anforderung keinen System-Sperrzustand verursacht als Ergebnis davon, daß die physische Anforderung zuviel Transferpufferplatz erfordert. Die Steuerung geht zum Schritt 558, wo der logische Prozessor 122 ermittelt, ob die Plattengruppe sich in einem Toleranzmodus SPIEGEL_SCHREIBEN befindet. Im Toleranzmodus SPIEGEL_SCHREIBEN geht die Steuerung zum Schritt 560, wo der lokale Prozessor 122 die Anzahl berechneter Lauf werksvorsätze verdoppelt. Die Steuerung geht zum Schritt 562. Wenn im Schritt 558 festgestellt wird, daß die Plattengruppe sich nicht in Toleranzmodus SPIEGEL_SCHREIBEN befindet, geht die Steuerung über zum Schritt 562. Im Schritt 562 setzt der lokale Prozessor die logische Offset-Basis auf 0 und kennzeichnet damit den beginnenden Block. Die Steuerung geht zum Schritt 564, wo der lokale Prozessor 122 den nächsten Anforderungsblock liest. Die Steuerung geht zum Schritt 566, wo der lokale Prozessor ermittelt, ob die Blockzählung die für irgendeinen Transfer zulässige maximale Blockzählung übersteigt. Wird festgestellt, daß die Blockzählung größer ist als die maximal zulässige Blockzählung für einen Transfer, so geht die Steuerung zum Schritt 568, wo der lokale Prozessor 122 die Größe des laufenden Transfers auf die maximale Blockzählung beschränkt. Die Steuerung geht zum Schritt 570, wo der lokale Prozessor 122 den Rest der Blöcke aus dem speziellen Transfer auf die maximale Blockzählung addiert. Die Steuerung geht zum Schritt 572, wo der lokale Prozessor 122 Anfangsberechnungen durchführt, die erforderlich sind für den physischen Laufwerksbefehl, einschließlich Startsektor, erforderliche Anzahl von Zylindern, erforderliche Köpfe und Länge der Anforderung. Die von den lokalen Prozessor durchgeführten Berechnungen richten sich auf die spezifischen Plattenparameter, beispielsweise die zu verwendenden Anfangszylinder und Köpfe. Nachfolgend wird ein Beispiel für den Typ von Berechnungen gegeben, die möglicherweise ausgeführt werden. Die angesprochenen Variablen sind der Zylinder (cyl); die Anzahl von zu transferierenden Blöcken (Zwi_Block_Zählung); die Sektoren pro jeweiligem Plattenzylin der (Sektoren Pro Zylinder); und die spezifische Blockadresse, für die die Anforderung entwickelt wird (Block).
  • cyl = Block I Sektoren Pro Zylinder
  • Zwi-Ulong - Block - (cyl * Sektoren_Pro_Zylinder)
  • Kopf = Zwi_Ulong 1 Sektoren_Pro_Spur
  • Sektor_Start = Zwi_Ulong - (Kopf * Sektoren_Pro_Spur -1))
  • Die Steuerung geht zum Schritt 574, wo der lokale Prozessor 122 ermittelt, ob die logische Anforderung eine Anforderung PARI- TÄT_SCHREIBEN ist, indem auf den Befehlsvorsatz Bezug genommen wird. Handelt es sich bei der Anforderung um eine Anforderung PARITÄT_SCHREIBEN, geht die Steuerung zum Schritt 576, wo der lokale Prozessor 122 die Anforderungsliste initialisiert, indem er sie auf NULL setzt. Die Steuerung geht zum Schritt 578. Wenn im Schritt 574 festgestellt wird, daß der Befehl keine Anförderung PARITÄT_SCHREI- BEN ist, geht die Steuerung zum Schritt 578. Im Schritt 578 beginnt der logische Prozessor 122 mit dem Aufbau der physischen Laufwerksanforderung, indem er zunächst lokalen Speicher für die Datenstruktur für die Anforderung zuweist. Die Steuerung geht zum Schritt 580, wo der lokale Prozessor 122 die Blockzählung, die Startadresse, die Befehlsart, den Offset und den Zeiger auf die logische Ursprungsanforderung lädt. Die Steuerung geht zum Schritt 582, wo der lokale Prozessor lokalen Speicher für die Laufwerksanforderungssequenz-Struktur zwecks Einreihung in eine Warteschlange zuweist. Die Steuerung geht zum Schritt 584, wo der lokale Prozessor 122 ermittelt, ob der Befehl ein MIRROR_WRITE-Befehl ist. Handelt es sich um einen Befehl MIRROR_WRITE, bei dem der lokale Prozessor 122 eine zweite physische Laufwerksanforderung aufbaut und die Laufwerksanforderungsinformation in die Struktur lädt und sie an die gespiegelten Laufwerke richtet. Die Steuerung geht zum Schritt 590. Wird im Schritt 584 festgestellt, daß der Befehl kein Befehl MIRROR_WRITE ist, so geht die Steuerung zum Schritt 588, wo der lokale Prozessor 122 den Transfer puffer für eine Einezlblockzählung einstellt, im Gegensatz zu physischen Doppelblöcken, die Steuerung geht zum Schritt 590. Im Schritt 590 lädt der lokale Prozessor 122 Anforderungsvorsatzdaten aus dem Transferpuffer. Die Steuerung geht zum Schritt 592, wo der lokale Prozessor ermittelt, ob der laufende Befehl ein Befehl MIRROR_WRITE ist und die Steuerung geht zum Schritt 596. Falls es ein Befehl MIRROR_WRITE ist, so geht die Steuerung zum Schritt 594, wo der lokale Prozessor Speicher für die duplizierte Laufwerksanforderung zuweist und die Anforderungsvorsatzinformation für den Transferpuffer lädt. Die Steuerung geht zum Schritt 595, wo der lokale Prozessor die Treiberkarte einstellt, um das derzeitige Laufwerk zu spiegeln und die Sequenz als Spiegelzeiger einrichtet. Die Steuerung geht zum Schritt 596. Im Schritt 596 ruft der lokale Prozessor 122 die Planungsfunktion auf, um die Laufwerksanforderung in die Warteschlange zu laden. Die Steuerung geht zum Schritt 597, wo der lokale Prozessor 122 die logische Basisblockzählung in der Anforderung versetzt. Die Steuerung geht zum Schritt 598, wo der lokale Prozessor ermittelt, ob weitere Blöcke zu diesem speziellen logischen Befehl gehören. Falls ja, geht die Steuerung zum Schritt 564. Falls nein, geht die Steuerung zum Schritt 599, der die Operation dieser Funktion beendet.
  • 6. Standardkartierer:
  • Fig. 8A - 8F sind Flußdiagramme des Standardkartier-Verfahrens STANDARD_MAPPER zur Verteilung von Daten unter den Platten innerhalb der Plattengruppe. STANDARD_MAPPER dient zum Umwandeln einer logischen Anforderung in eine Liste von Laufwerksanforderungen unter Verwendung eines Standard-Verschachtelungsschemas, welches in dem GLOBAL RIS der Plattengruppe spezifiziert ist. Die Operation beginnt im Schritt 600. Die Steuerung geht zum Schritt 602, wo der lokale Prozessor 122 lokalen Speicher zum Kopieren der GLO- BAL RIS-Information in lokale Variable zuweist. Die Steuerung geht zum Schritt 604, wo der lokale Prozessor 122 Befehls-, Blockbeginn- und Blocklängendaten in die lokalen Variablen lädt. Die Steuerung geht zum Schritt 606, wo der lokale Prozessor 122 die Anzahl individueller Anforderungen ermittelt, die erforderlich sind, um die logische Anforderung ohne Verletzung der maximalen Blockgröße zu transferieren. Dies bricht die logische Anforderung auf in kleinere Segmente, damit die Größe der physischen Anforderungen, die dann erzeugt werden, nicht eine definierte Maximalgröße übersteigt. Dies stellt sicher, daß das System nicht als Folge irgendeiner physischen Anforderung, die zuviel Transferpufferraum erfordert, in einen Sperrzustand gelangt. Die Steuerung geht zum Schritt 608, wo der lokale Prozessor 122 ermittelt, ob der Befehl eine Anforderung PARITY_WRITE ist. Ist es eine Anforderung PARITY_WRITE, so geht die Steuerung zum Schritt 610, wo der lokale Prozessor 122 die Anzahl von erforderlichen Iterationen um 1 erhöht. Dann geht die Steuerung zum Sehritt 618.
  • Wird im Schritt 608 festgestellt, daß der Befehl keine PARITY_WRITE- Anforderung ist, so geht die Steuerung zum Schritt 612, wo der lokale Prozessor 122 die Anzahl von Laufwerksvorsätzen berechnet, die erforderlich sind, um die logische Anforderung zu einer physischen Anforderung zu verarbeiten. Die Steuerung geht zum Schritt 614, wo der lokale Prozessor 122 ermittelt, ob der Befehl ein Befehl MIRROR_WRITE ist. Falls ja, geht die Steuerung zum Schritt 616, wo der lokale Prozessor 122 die Anzahl von Laufwerksvorsätzen, die zum Verarbeiten der logischen Anforderung erforderlich sind, verdoppelt. Die Steuerung geht dann zum Schritt 618.
  • Wird im Schritt 614 festgestellt, daß der Befehl kein MIRROR_WRITE- Befehl ist, so geht die Steuerung zum Schritt 618, wo der lokale Prozessor 122 die logische Offset-Basisadresse auf 0 setzt. Die Steuerung geht zum Schritt 620, wo der lokale Prozessor 122 ermittelt, ob der erste logische Anforderungsblock die für eine physische Anforderung zulässige Maximalgröße übersteigt. Falls ja, geht die Steuerung zum Schritt 622, wo der lokale Prozessor die maximale Blockzählungsgröße für die spezielle Iteration transferiert, und dann geht die Steuerung zum Schritt 624. Im Schritt 624 addiert der lokale Prozessor 122 den nicht trans ferierten Rest der Blöcke auf den Blockzähler. Die Steuerung geht zum Schritt 628. Wird im Schritt 628 festgestellt, daß die logische Anforderung nicht die maximale Blockzählung übersteigt, so geht die Steuerung zum Schritt 626. Im Schritt 626 wird die Blockzählung in eine lokale Variable geladen. Die Steuerung geht über den Schritt 628, wo der lokale Prozessor 122 Berechnungen durchführt, um den Startsektor, die Anzahl erforderlicher Zylinder, die erforderlichen Köpfe und Reihen zu ermitteln.
  • Die von dem STANDARD­MAPPER an dieser Stelle ausgeführten-Berechnungen bei der Verarbeitung richten sich auf die Entwicklung von plattenspezifischen Befehlen für sämtliche E/A-Befehle und vieler Toleranzschemata. Somit sind die Parameter in diesem Stadium der Entwicklung der Laufwerksanforderung identisch für die Fehlertoleranzmodi PARITY und MIRROR. Die bei der Bestimmung der Anfangs-Plattenparameter verwendeten Variablen sind die Adresse für den Block, für den die Anforderung aufgebaut wird (temp_block), die Anzahl von zu transferierenden Blöcken (temp_block_Zählung), die Anzahl von Laufwerken, die für die Datenspeicherung verfügbar sind (Benutzer Laufwerks- Zählung), und die Anzahl von Sektoren pro Spur auf den Platten innerhalb der Gruppe. Diese letzten zwei Variablen werden durch Lesen der Information GLOBAL RIS ermittelt.
  • Diese Anfangsberechungen dienen zum Aufbau der Laufwerksanforderung für das spezielle Informationspaket mit Ausnahme der Anforderungen PARITY_WRITE.
  • Die Steuerung geht zum Schritt 630, wo der lokale Prozessor 122 ermittelt, ob der Befehl eine Anforderung PARITY_WRITE ist. Ist es keine Anforderung PARITY_WRITE, geht die Steuerung zum Schritt 802. Bei einer Anforderung PARITY_WRITE geht die Steuerung zum Schritt 634, wo der lokale Prozessor 122 ermittelt, ob die im Schritt 628 berechnete Anzahl von Reihen größer als 1 ist. Ist sie nicht größer als 1, geht die Steuerung zum Schritt 636, der den letzten Kopf, die Sektorstart- und die letzter Zylinder-Information in der speziellen Laufwerksanforderung gleichsetzt mit Werten für den derzeitigen Kopf, den Sektor-Start und den Zylinder.
  • Wird im Schritt 634 ermittelt, daß die Anzahl von Reihen größer als 1 ist, geht die Steuerung zum Schritt 638, wo der lokale Prozessor 122 die letzten beiden Reihen, den letzten Sektorstart, den letzten Kopf und den letzten Zylinder berechnet, was für diese Anforderung erforderlich ist. Die Steuerung geht zum Schritt 640. Im Schritt 640 weist der lokale Prozessor 122 lokalen Speicher für die Datenstruktur PARITY_WRITE zu. Die Steuerung geht zum Schritt 642, wo der lokale Prozessor die Anforderungs-Vorsatzfelder von PARITY_WRITE lädt, einschließlich Reihen-, Sektorstart-, Zylinder-, Kopf und Befehlsinformation. Die Steuerung geht zum Schritt 644, wo der lokale Prozessor 122 lokalen Speicher für die Laufwerksanforderungsstruktur zuweist. Die Steuerung geht zum Schritt 646, wo der lokale Prozessor 122 den Laufwerkskartenpuffer-Index, die Reihen-, Laufwerkskennungs- und Vorgängeinformation in den Laufwerksvorsatz lädt. Die Steuerung geht zum Schritt 648, wo der lokale Prozessor 122 ermittelt, ob die erste Reihe auf der derzeitigen speziellen Platte zu lesen ist.
  • Falls nicht, geht die Steuerung zum Schritt 660. Falls ja, geht die Steuerung zum Schritt 650, wo der lokale Prozessor die Anforderungszählung um 1 erhöht und ein Nicht-Schreiben-Flag für die erste Reihe der Platte setzt. Die Steuerung geht zum Schritt 652, wo der lokale Prozessor 122 ermittelt, ob der Befehl eine Leseanforderung READ ist. Ist es keine READ-Anforderung, so geht die Steuerung zum Schritt 654, wo der lokale Prozessor 122 den Lesezeiger auf die derzeitige Anforderung setzt und lokalen Speicher für die Lese-Datenstruktur zuweist. Die Steuerung geht zum Schritt 658. Wenn im Schritt 652 festgestellt wird, daß das READ-Anforderungsflag auf WAHR steht, geht die Steuerung zum Schritt 656, wo der lokale Prozessor 122 den READ-Laufwerksanforderungs-Zeiger auf die nächste Anforderung in der Anforderungsliste stellt und lokalen Speicher für die Datenstruktur der READ-Laufwerksanforderung bereitstellt. Die Steuerung geht zum Schritt 658, wo der lokale Prozessor 122 die Datenstruktur der READ-Laufwerksanforderung mit der Information über die Sektorzählung, den Sektorstart, den Zylinder und die logische Anforderung lädt. Die Steuerung geht zum Schritt 660, wo der lokale Prozessor 122 ermittelt, ob die letzte Reihe in dem derzeitigen Laufwerk gelesen werden muß. Falls nicht, geht die Steuerung zum Schrit 672:
  • Falls ja, geht die Steuerung über zum Schritt 662, wo der lokale Prozessor 122 die Anforderungs- und Lesesequenz-Zählungen erhöht. Die Steuerung geht über zum Schritt 664, wo der lokale Prozessor 122 erneut ermittelt, ob das READ-Laufwerksanforderungs-Flag auf WAHR gesetzt ist. Ist es nicht auf WAHR gesetzt, geht die Steuerung zum Schritt 666, der den READ-Zeiger auf die derzeitige Anforderung einstellt und lokalen Speicher für die Datenstruktur der READ-Laufwerksanforderung bereitstellt. Die Steuerung geht zum Schritt 670. Wenn im Schritt 664 ermittelt wird, daß das READ-Anforderungsflag auf WAHR gesetzt ist, geht die Steuerung über zum Schritt 668, in welchem der lokale Prozessor 122 den READ-Zeiger auf die nächste Anforderung in der Befehlsliste einstellt und den lokalen Speicher für die Datenstruktur der READ-Laufwerksanforderung zuweist. Die Steuerung geht zum Schritt 670.
  • Im Schritt 670 lädt der lokale Prozessor 122 die Lesedatenstruktur. Die Steuerung geht zum Schritt 672, wo der lokale Prozessor ermittelt, ob irgendwelche Reihen in das derzeitige Laufwerk geschrieben werden. Werden keine Reihen in das derzeitige Laufwerk geschrieben, geht die Steuerung zum Schritt 712. Gibt es in das derzeitige Laufwerk einzuschreibende Reihen, geht die Steuerung zum Schritt 674, wo der lokale Prozessor 122 die Anforderungszählung um 1 erhöht. Die Steuerung geht zum Schritt 676, wo der lokale Prozessor 122 ermittelt, ob das derzeitige Laufwerk größer oder gleich dem ersten Laufwerk ist. Falls nicht, geht die Steuerung zum Schritt 678, wo der lokale Prozessor 122 den logischen Blockversatz basierend auf der Anzahl von Benutzerlaufwerken, dem berechneten ersten Laufwerk, der Nummer des derzeitigen Laufwerks und der logischen Versatz-Basis neu berechnet. Die Steuerung geht zum Schritt 682. Wenn im Schritt 676 ermittelt wird, daß das derzeitige Laufwerk größer oder gleich dem ersten Laufwerk ist, geht die Steuerung über zum Schritt 680, wo der lokale Prozessor 122 den logischen Blockabstand basierend auf dem derzeitigen Laufwerk, der Nummer des berechneten ersten Laufwerks und der logischen Versatz- Basis neu berechnet.
  • Die Steuerung geht über zum Schritt 682, wo der lokale Prozessor 122 den logischen Blocksprung setzt und den Schreibablaufzähler erhöht. Die Steuerung geht zum Schritt 684. Im Schritt 684 ermittelt der lokale Prozessor 122, ob das WRITE-Anforderungsflag auf WAHR gesetzt ist. Ist es nicht auf WAHR gesetzt, geht die Steuerung zum Schritt 688, wo der logische Prozessor 122 den Schreib-Zeiger auf die laufende Anforderung stellt und lokalen Speicher für die Datenstruktur der Schreib-Laufwerksanforderung bereitstellt. Die Steuerung geht dann zum Schritt 690.
  • Wenn im Schritt 684 das Schreibanforderungs-Flag auf WAHR gesetzt ist, geht die Steuerung zum Schritt 686, wo der lokale Prozessor 122 den Schreibzeiger auf die nächste Anforderung in der Anforderungsliste stellt und lokalen Speicher für die Datenstruktur der Schreib-Laufwerksanforderung bereitstellt. Die Steuerung geht zum Schritt 690. Im Schritt 690 setzt der lokale Prozessor 122 den Sektorzähler gleich mit der Anzahl zu schreibender Reihen. Die Steuerung geht dann zum Schritt 692, wo der lokale Prozessor 122 ermittelt, ob die derzeitige Schreibanforderung erfordert, daß in die erste Reihe der laufenden Platte eingeschrieben wird. Falls ja, geht die Steuerung zum Schritt 694, wo der lokale Prozessor den Pufferabstand auf 0 setzt und die physische Befehlsinformation in die Datenstruktur der Schreib-Laufwerksanforderung lädt. Die Steuerung geht zum Schritt 710. Wird im Schritt 692 ermittelt, daß die derzeitige Anforderung kein Schreiben in die erste Reihe erfordert, geht die Steuerung über zum Schritt 696, wo der lokale Prozessor 122 den Schreib-Zeigerpuffer-Abstand auf 1 setzt.
  • Die Steuerung geht zum Schritt 698, wo der lokale Prozessor 122 ermittelt, ob die Sektorzählung und die Sektorstartinformation, die für den laufenden Block zu verwenden sind, die physische Anzahl von Sektoren pro Spur auf der Platte übersteigt. Falls nicht, geht die Steuerung zum Schritt 708. Falls ja, geht die Steuerung zum Schritt 700, wo der lokale Prozessor 122 den Sektorstart für die spezielle Spur gleichsetzt mit dem ersten Sektor für diese Spur. Die Steuerung geht zum Schritt 702, wo der lokale Prozessor 122 ermittelt, ob das Schreiben auf den speziellen Zylinder die derzeitigen Zylindergrenzen übersteigt. Falls nicht, geht die Steuerung zum Schritt 706, der die Zylinderparameter auf den derzeitigen Zylinder einstellt und die Plattenkopfauswahl weiterrückt auf den nächsten Kopf, der an den derzeit berechneten Kopf folgt. Die Steuerung geht dann zum Schritt 710.
  • Wenn im Schritt 720 festgestellt wird, daß das Schreiben auf den derzeitigen Zylinder die Zylindergrenzen überschreitet, geht die Steuerung zum Schritt 704, wo der lokale Prozessor 122 die Zylinderauswahl zu dem nächsten Zylinder auf der derzeitigen Platte vorrückt. Die Steuerung geht zum Schritt 710. Im Schritt 708 erhöht der lokale Prozessor den laufenden Sektor um einen Block und setzt die Kopf- und Zylinderparameter auf die derzeitige Kopf- und Zylinderinformation. Die Steuerung geht zum Schritt 710. Im Schritt 710 setzt der lokale Prozes sor 122 den Befehl auf Schreiben, setzt den Ausgangsanforderungs- Zeiger auf die logische Anforderung, und setzt die Sequenz auf PARITY_WRITE. Die Steuerung geht zum Schritt 712. Im Schritt 712 stetzt der lokale Prozessor die Laufwerksanforderungsstruktur-Anforderungszählung gleich mit der derzeitigen Anforderungszählung. Die Steuerung geht zum Schritt 716, wo der lokale Prozessor 122 den Zeiger auf die nächste Anforderung auf NULL setzt, und die Sequenzzählung auf den derzeitigen Wert der Sequenzzählung in der Laufwerksanforderungs-Datenstruktur setzt. Die Steuerung geht zum Schritt 718, wo der lokale Prozessor 122 ermittelt, ob der logische Befehl eine Anforderung PARITY_READ ist.
  • Ist die nächste Anforderung eine PARITY_READ-Anforderung, geht die Steuerung zum Schritt 720, wo der lokale Prozessor 122 den nächsten Anforderungszähler initialisiert. Die Steuerung geht zum Schritt 722, wo der lokale Prozessor 122 einen Zeiger auf den nächsten Lesebefehl setzt. Die Steuerung geht zum Schritt 724, wo der lokale Prozessor ermittelt, ob weitere Leseanforderungen vorhanden sind. Falls ja, geht die Steuerung zurück zum Schritt 722, bis sämtliche Leseanforderungen verknüpft sind. Die Steuerung geht zum Schritt 726, wo der lokale Prozessor 122 die Anforderungsliste gleichsetzt mit der verknüpften Leseanforderungsliste. Die Steuerung geht dann zum Schritt 730.
  • Wird im Schritt 718 ermittelt, daß der Befehl keine PARITY_READ- Anforderung ist, so geht die Steuerung zum Schritt 728, wo der lokale Prozessor 122 die Anforderungsliste gleichsetzt mit der verknüpften Schreibanforderung. Die Steuerung geht zum Schritt 730. Im Schritt 730 initialisiert der lokale Prozessor 122 die Anforderungsliste. Die Steuerung geht zum Schritt 734, wo der lokale Prozessor ermittelt, ob die Anforderung bei der ersten Reihe des derzeitigen Laufwerks beginnt. Falls ja, geht die Steuerung zum Schritt 736, wo die berechnete Sektorstartinformation in die lokale Variable einkopiert wird und die Sektorzählung und der logische Blockabstand berechnet und in lokale Varible geladen werden. Die Steuerung geht zum Schritt 740.
  • Wenn im Schritt 734 festgestellt wird, daß die Anforderung nicht in der ersten Reihe des Laufwerks beginnt, geht die Steuerung zum Schritt 738, wo der lokale Prozessor 122 den Sektorstart um einen Block versetzt, die Anzahl von Reihen erhöht und das Start-Laufwerk versetzt. Die Steuerung geht zum Schritt 740, wo der lokale Prozessor 122 ermittelt, ob das Anforderungslisten-Flag auf WAHR gesetzt ist. Ist es nicht auf WAHR gesetzt, geht die Steuerung zum Schritt 744, wo der lokale Prozessor 122 den Anforderungslisten-Zeiger auf die derzeitige Anforderung einstellt und lokalen Speicher für die Anforderung zuweist. Die Steuerung geht zum Schritt 746. Wenn im Schritt 740 das Anforderungslisten-Flag auf WAHR gesetzt ist, geht die Steuerung zum Schritt 742, wo der lokale Prozessor lokalen Speicherplatz für eine Laufwerksanforderungs-Datenstruktur zuweist und die derzeitige Laufwerksanforderung mit der nächsten Anforderung verknüpft. Die Steuerung geht zum Schritt 746, wo der lokale Prozessor 122 ermittelt, ob der Plattenkartenindex kleiner oder gleich dem letzten berechneten Laufwerk ist. Falls nicht, geht die Steuerung zum Schritt 750, wo der lokale Prozessor 122 die Sektorzählung gleichsetzt mit der derzeitigen Zwischensektorzählung minus einem Block. Die Steuerung geht weiter zum Schritt 752. Wenn der Plattenkartenindex kleiner oder gleich dem letzten berechneten Laufwerk ist, geht die Steuerung zum Schritt 748, wo der lokale Prozessor 122 die Sektorzählung gleichsetzt mit der laufenden Zwischensektorzählung.
  • Die Steuerung geht zum Schritt 752, wo der lokale Prozessor 122 ermittelt, ob der berechnete Sektorstart größer ist als die physische Anzahl von Sektoren für die Platte innerhalb der Gruppe. Falls nicht, geht die Steuerung zum Schritt 762. Falls ja, geht die Steuerung zum Schritt 754, wo der lokale Prozessor 122 den Sektorstart auf den ersten Sektor in einer Spur einstellt. Die Steuerung geht über zum Schritt 756, wo der lokale Prozessor ermittelt, ob die Anforderungsgröße die Anzahl von Köpfen für den ausgewählten Zylinder übersteigt. Falls nicht, geht die Steuerung zum Schritt 760, wo der lokale Prozessor 122 den Startsektor auf den laufenden Startsektor und Zylinder einstellt und zum nächsten Kopf für das spezielle Laufwerk vorrückt. Die Steuerung geht zum Schritt 764. Wenn im Schritt 756 festgestellt wird, daß die Anforderungsgröße die Anzahl von Köpfen für den Zylinder übersteigt, geht die Steuerung zum Schritt 758, der zu dem nächsten Zylinder und einem ersten Kopf für diesen Zylinder vorrückt. Die Steuerung geht zum Schritt 764. Im Schritt 762 stellt der lokale Prozessor 122 den Startsektor auf die derzeit berechneten Werte für den Startsektor, den Zylinder und den Kopf für das Plattenlaufwerk ein. Die Steuerung geht zum Schritt 764.
  • Im Schritt 764 lädt der lokale Prozessor die Laufwerksanforderungs- Datenstruktur mit dem Befehlstyp und einem möglichen Pufferabstand. Die Steuerung geht zum Schrit 766, wo der lokale Prozessor 122 lokalen Speicher für den Laufwerksanforderungs-Vorsatz zuweist und einen Zeiger auf die Laufwerksanforderung erzeugt. Die Steuerung geht zum Schritt 768, wo der lokale Prozessor die Laufwerkssequenz-Anforderung initialisiert und die derzeitige Laufwerksnummer in die Laufwerksanforderungs-Datenstruktur lädt. Die Steuerung geht zum Schritt 770. Wo der lokale Prozessor 122 ermittelt, ob der Befehl eine Anforderung MIRROR_WRITE ist. Falls es eine Anforderung MIRROR_WRITE ist, geht die Steuerung zum Schritt 772, der Speicher für eine Doppel-Laufwerksanforderung zuweist und die Laufwerksanforderungs-Datenstruktur für die Spiegelanforderung lädt. Der lokale Prozessor 122 lädt einen Parameter, welcher anzeigt, daß die Laufwerksanforderung auf die Spiegelgruppe von Laufwerken gerichtet ist. Die Steuerung geht zum Schritt 776.
  • Wenn im Schritt 770 festgestellt wird, daß der Befehl keine MIRROR WRITE-Anforderung ist, geht die Steuerung zum Schritt 774, der lokalen Speicher für den Transferpuffer zuweist und die Sektorzählung, die Kennung, den Blockversatz, die Benutzerlaufwerkszählung und die Anforderungszählung in die Datenstruktur der Laufwerksanforderung lädt. Die Steuerung geht zum Schritt 776. Im Schritt 776 ermittelt der lokale Prozessor, ob das Flag MIRROR_WRITE auf WAHR gesetzt ist. Falls ja, geht die Steuerung zum Schritt 782, der Speicher für die laufende Anforderung in der Spiegelliste zuordnet. Falls nicht, initialisiert der lokale Prozessor 122 den Sequenzzähler, die Spiegelliste und die Anforderungsliste. Die Steuerung geht dann über zum Schritt 780, wo der Spiegellisten-Zeiger auf die nächste Anforderung gesetzt wird und lokaler Speicher für die Datenstruktur der Laufwerksanforderung zugewiesen wird. Die Steuerung geht zum Schritt 784. Im Anschluß an die Ausführung des Schritts 782 geht die Steuerung zum Schritt 784. Im Schritt 784 lädt der lokale Prozessor 122 die Anforderungsstruktur mit Information über die logische Ursprungsanforderung, die Laufwerkszählung und den Befehl, und er setzt den Zeiger auf die nächste Anforderung innerhalb der Liste. Die Steuerung geht dann zum Schritt 786, der feststellt, ob es weitere Anforderungsblöcke in Verbindung mit der speziellen Befehlsanforderung gibt.
  • Falls ja, geht die Steuerung zum Schritt 776, und sämtliche Blöcke werden eingelesen, bis die Befehlsanforderung vollständig geladen ist. Gibt es keine weiteren Blöcke, geht die Steuerung zum Schritt 788, wo der lokale Prozessor 122 den logischen Anforderungszeiger auf die absolute Laufwerksanforderung innerhalb der Laufwerkskarte einstellt. Die Steuerung geht zum Schritt 790, wo der lokale Prozessor 122 ermittelt, ob es irgendeine zusätzliche Anforderung gibt.
  • Falls ja, geht die Steuerung zum Schritt 792, wo der lokale Prozessor 122 den Anforderungslisten-Zeiger erhöht, und die Steuerung geht weiter zum Schritt 788, wo der lokale Prozessor 122 die Abarbeitung der Schleife solange fortsetzt, bis sämtliche Anforderungen in Verbindung mit dieser speziellen Befehlsliste eingelesen sind.
  • Wenn es keine weiteren Anforderungen gibt, geht die Steuerung zum Schritt 794, wo der lokale Prozessor 122 ermittelt, ob die Befehle Spiegelanforderungen sind. Handelt es sich nicht um eine gespiegelte Anforderung, geht die Steuerung zum Schritt 802. Bei einer gespiegelten Anforderung geht die Steuerung zum Schritt 796, wo der lokale Prozessor 122 eine Verknüpfung erzeugt, welche die derzeitige Laufwerksanforderung zurückverweist auf ihren logischen Ursprung. Die Steuerung geht zum Schritt 798, wo der lokale Prozessor 122 ermittelt, ob es zusätzliche Anforderungen gibt. Falls ja, geht die Steuerung zum Schritt 800, wo der Anforderungslisten-Zeiger auf die nächste Anforderung in der Liste gerichtet wird, und die Steuerung geht zurück zum Schritt 596. Der logische Prozessor 122 fährt mit der Schleife fort, bis die gesamte Anforderung eingelesen ist. Gibt es keine weiteren Laufwerksanforderungen geht die Steuerung zum Schritt 802, wo der lokale Prozessor 122 die Funktion PLANER aufruft und die logische Blockadresse versetzt. Die Steuerung geht zum Schritt 804, wo der lokale Prozessor 122 ermittelt, ob weitere Anforderungsblöcke zu lesen sind. Falls ja, geht die Steuerung zum Schritt 608. Falls nein, geht die Steuerung zum Schritt 806, der die Operation STANDARD_MAPPER beendet.
  • 7. Planer:
  • Fig. 13 ist ein Flußdiagramm der Art und Weise, in der die vorliegende Erfindung Laufwerksanforderungen plant. Die Operation beginnt im Schritt 1000. Die Steuerung geht zum Schritt 1002, wo der lokale Prozessor 122 Zeiger auf die derzeitige Laufwerksanforderung einstellt, einschließlich des zu beschreibenden oder zu lesenden Laufwerks. Die Steuerung geht zum Schritt 1004, wo der lokale Prozessor 122 ermittelt, ob es weitere Anforderungen in einer Laufwerks-Planungsschleife gibt. Falls nicht, geht die Steuerung zum Schritt 1006, wo der lokale Prozessor 122 eine Laufwerkswarteschlange erzeugt und eine derzeitige Lauf werksanforderung an den Kopf der Laufwerkswarteschlange setzt. Die Steuerung geht zum Schritt 1008, der zu dem aufrufenden Programm zurückführt. Wenn in einem Schritt 1004 festgestellt wird, daß es keine weiteren Laufwerksanforderungen in der Warteschlange gibt, geht die Steuerung zum Schritt 1010, wo der lokale Prozessor die Laufwerksanforderung am Kopf der Warteschlange untersucht. Die Steuerung geht zum Schritt 1012, wo der lokale Prozessor ermittelt, ob die Priorität der laufenden Anforderung größer ist als die in der Anforderungswarteschlange untersuchte Anforderung. Falls nicht, geht die Steuerung zum Schritt 1014, der eine Erhöhung auf die nächste Anforderung in der Laufwerksanforderungs-Warteschlange vornimmt. Dann geht die Steuerung zum Schritt 1010. Wird festgestellt, daß die derzeitige Anforderung eine höhrere Priorität besitzt als die untersuchte Anforderung in der Warteschlange, geht die Steuerung zum Schritt 1016, der die Anforderung in die Warteschlange einreiht und die Zeiger einstellt, um die Längenliste der Plananforderung zu halten. Die Steuerung geht zum Schritt 1018, der zu dem aufrufenden Programm zurückführt. Auf diese Weise untersucht die Erfindung sämtliche Laufwerksanforderungen innerhalb der Warteschlange und plaziert die laufende Anforderung in eine prioritätsbehaftete FIFO-Warteschlange. Wenn die Priorität der laufenden Anforderung höher ist als diejenige einer bereits in der Warteschlange befindlichen Anforderung, wird die derzeitige Anforderung in die Warteschlange an jener Stelle eingefügt und es werden Zeiger eingestellt, um eine verknüpfte Liste zu halten. Wenn die Priorität der derzeitigen Anforderung nicht größer ist als irgendeiner der sich gerade in der Warteschlange befindlichen Anforderungen, so wird die laufende Anforderung an das Ende der Warteschlange gestellt.
  • Obschon in Fig. 13 nicht dargestellt, behandelt der lokale Prozessor 122 die in der Warteschlange befindlichen Anforderungen und gibt die spezifischen Anforderungen an die TCC 124 zum Zweck des Lesens/Schreibens der Platte oder für Prüfzwecke. Die spezifische Anforderung wird dann aus der Warteschlange entfernt, und der Warteschlangenzeiger wird auf die nächste Plattenanforderung weitergerückt.
  • 8. Laufwerksprüfung:
  • Fig. 14 ist ein Flußdiagramm der Art und Weise, in der die Erfindung ermittelt, ob die RIS-Sektoren für ein spezielles Laufwerk gültig sind. Die Operation beginnt im Schritt 1050. Die Steuerung geht weiter zum Schritt 1052, wo der lokale Prozessor 122 ermittelt, ob die RIS-Daten struktur für ein gegebenes Laufwerk die richtige Steuerungskennung oder Signatur enthält. Falls nicht, geht die Steuerung zum Schritt 1058, der einen Rückkehr-Code auf FALSCH setzt, und die Steuerung geht zum Schritt 1062, der zu dem aufrufenden Programm zurückführt. Gibt es eine Steuerungskennung oder -signatur in der RIS-Datenstruktur für das Laufwerk, geht die Steuerung zum Schritt 1054, wo der lokale Prozessor 122 ermittelt, ob die Signatur zu der derzeitigen Steuerungs- Signatur und der RIS-Versions-Zahl paßt. Falls nicht, geht die Steuerung zum Schritt 1058, falls ja, geht die Steuerung zum Schritt 1056, wo der lokale Prozessor ermittelt, ob Laufwerksparameter innerhalb der RIS- Datenstruktur irgendwelche Grenzparameter der logischen Einheit verletzten. Falls ja, geht die Steuerung zum Schritt 1058. Falls nein, geht die Steuerung zum Schritt 1060, und der lokale Prozessor setzt einen Rückkehr-Code auf WAHR. Dann geht die Steuerung zum Schritt 1062, der zu dem aufrufenden Programm zurückführt.
  • 9. Umfassend-Konsistent-Modul:
  • Fig. 10 ist ein Flußdiagramm der Art und Weise, in der die vorliegende Erfindung ermittelt, ob sämtliche RIS-Sektoren für Platten innerhalb der Gruppe konsistent sind. Bei der Ermittlung, ob sämtliche Laufwerke konsistent sind, liest der lokale Prozessor 122 die RIS-Sektoren für das erste Laufwerk in der Laufwerkskarte, ausschließlich der Laufwerkskennung, und vergleicht die darin enthaltene Information mit den entsprechenden RIS-Sektoren für das zweite, das dritte.... Laufwerk, bis er die erste Platte mit sämtlichen übrigen Platten innerhalb der Gruppe verglichen hat. Der lokale Prozessor 122 geht weiter zu dem zweiten Laufwerk und vergleicht dessen RIS-Sektoren mit sämtlichen nachfolgenden Laufwerken innerhalb der Gruppe. Dies wird fortgesetzt, bis feststeht, daß sämtliche Laufwerke konsistent sind, oder das Modul die Existenz einer Nicht-Konsistenz feststellt. Die Operation beginnt im Schritt 850. Die Steuerung geht zum Schritt 852, wo der lokale Prozessor 122 die Laufwerks-Zählungsvariablen initialisiert. Die Steuerung geht zum Schritt 854, wo der lokale Prozessor 122 die Konfigurations daten von einem Platten-RIS-Sektor liest (Laufwerk I). Die Steuerung geht zum Schritt 856, wo der lokale Prozessor die Konfigurationsdaten aus dem RIS-Sektor der nächsten Platte in der Laufwerkskarte liest (Laufwerk J). Die Steuerung geht zum Schritt 862, wo der$lokale Prozessor 122 ermittelt, ob die RIS-Daten für die beiden Laufwerke I und J konsistent sind. Sind sie nicht konsistent, geht die Steuerung zum Schritt 868, der ein Flag setzt, welches bedeutet, daß die Laufwerke nicht konsistent sind. Die Steuerung geht anschließend zum Schritt 872, der zu dem aufrufenden Programm zurückführt. Wenn die RIS-Daten für die Laufwerke I und J konstistent sind, geht die Steuerung zum Schritt 864, wo der lokale Prozessor 122 ermittelt, ob J gleich ist der Maximalzahl von Laufwerken innerhalb der Gruppe. Ist der Wert nicht gleich der Maximalzahl von Laufwerken innerhalb der Gruppe, geht die Steuerung über zum Schritt 858, der den J-Zähler erhöht, und anschließend geht die Steuerung zum Schritt 856. Auf diese Weise liest das Programm die erste Platte und vergleicht die RIS-Daten von der ersten Platte mit den RIS-Daten von sämtlichen übrigen Laufwerken. Wenn J der Maximalzahl von Laufwerken gleicht, geht die Steuerung zum Schritt 860, wo der lokale Prozessor 122 ermittelt, ob I gleich ist der Maximalzahl von Laufwerken innerhalb der Plattengruppe. Wenn I nicht der Maximalzahl von Laufwerken in der Plattengruppe gleicht, geht die Steuerung zum Schritt 860, wo I auf I + 1 gesetzt wird, und J = I + 1. Die Steuerung geht zum Schritt 854. Wenn I gleich ist der Maximalzahl der Laufwerke, geht die Steuerung zum Schritt 870, der ein Flag setzt, welches angibt, daß sämtliche RIS-Platten-Sektoren konsistent sind. Die Steuerung geht zum Schritt 872, der zu dem aufrufenden Programm zurückführt.
  • 10. Konsistenzmodul:
  • Fig. 11 ist ein Flußdiagramm, welches angibt, wie die vorliegende Erfindung ermittelt, ob die RIS-Datensektoren zweier Platten miteinander konsistent sind, indem gewisse Laufwerksparameter verglichen werden. Die Operationen beginnen im Schritt 900. Die Steuerung geht zum Schritt 902, wo der lokale Prozessor 122 über die beiden zu vergleichenden Platten in Kenntnis gesetzt wird. Die Steuerung geht zum Schritt 904, wo der lokale Prozessor 122 die Größe jeder der zu vergleichenden RIS-Strukturen ermittelt. Ein Zeiger für jede der Platten- RIS-Strukturen wird so initialisiert, daß der lokale Prozessor 122 mit dem ersten Byte jeder RIS-Struktur beginnt.
  • Die Steuerung geht dann zum Schritt 906, wo der lokale Prozessor 122 das laufende Byte der RIS-Struktur A mit dem laufenden Byte der RIS- Struktur B vergleicht. Die Steuerung geht zum Schritt 908, wo der lokale Prozessor ermittelt, ob die Bytes äquivalent sind. Sind sie äquivalent, geht die Steuerung zum Schritt 910, wo der lokale Prozessor 122 ermittelt, ob weitere Bytes in jeder der Datenstrukturen vorhanden sind. Falls ja, geht die Steuerung zum Schritt 912, wo der lokale Prozessor den Zeiger auf das nächste Byte in den jeweiligen RIS-Strukturen vorrückt. Dann geht die Steuerung zum Schritt 906. Wenn im Schritt 908 ermittelt wird, daß die in den laufenden Bytes beider Strukturen A und B enthaltenen Daten nicht äquivalent sind, geht die Steuerung zum Schritt 914, der einen Rückkehr-Code auf FALSCH setzt, und die Steuerung geht zum Schritt 918, der zu dem aufrufenden Programm zurückführt. Wenn im Schritt 910 ermittelt wird, daß es keine weiteren Bytes in den RIS-Strukturen der zwei verglichenen Platten gibt, geht die Steuerung zum Schritt 916, der einen Rückkehrcode auf WAHR setzt, und die Steuerung geht zum Schritt 918, der zu dem aufrufenden Programm zurückführt. Auf diese Weise prüft die Erfindung jedes Byte in den zwei ausgewählten Plattengruppen jeweils byteweise, bis eine Nicht-Konsistenz aufgefunden wird, oder bis sich die Strukturen als identisch erweisen.
  • 11. Votieren
  • Fig. 12 ist ein Flußdiagramm der Funktion VOTIEREN, mit dessen Hilfe die Erfindung ermittelt, welche von einer Anzahl zulässiger RIS- Konfigurationen, die möglicherweise auf eine Platte vorhanden sind, als Schablone für das Konfigurieren der gesamten Plattengruppe zu verwenden ist. Die Operation beginnt im Schritt 950. Die Steuerung geht zum Schrit 952, der den Gewinner auf NULL und die Anzahl von Übereinstimmungen auf 0 initialisiert. Die Steuerung geht zum Schritt 954, wo der lokale Prozessor 122 die RIS-Daten für die laufende Platte (Platte I) mit sämtlichen übrigen Platten vergleicht. Die Steuerung geht zum Schritt 956, wo der lokale Prozessor 122 ermittelt, ob das Datenfeld innerhalb der RIS-Struktur für die Platte I übereinstimmt mit den entsprechenden Datenfeldern in den übrigen Platten-RIS-Strukturen. Liegt eine Übereinstimmung vor, geht die Steuerung zum Schritt 958, der die Anzahl von Übereinstimmungen, in der die Daten für jedes Laufwerk innerhalb der Plattengruppe übereinstimmen, erhöht. Nach dem Auffinden der ersten Übereinstimmung wird das erste Laufwerk als Zwischengewinner deklariert. Die Steuerung geht zum Schritt 960. Gibt es keine weiteren Datenfeld-Übereinstimmungen im Schritt 956, so geht die Steuerung zum Schritt 960, wo der lokale Prozessor 122 ermittelt, ob die Anzahl von Übereinstimmungen für die untersuchte laufende Platte die Anzahl von Übereinstimmungen übersteigt, die für die derzeit als Gewinner deklarierte Platte ermittelt wurde. Falls ja, geht die Steuerung zum Schritt 962, der die laufende Platte mit dem Gewinner gleichsetzt. Die Steuerung geht zum Schritt 964. Im Schritt 964 ermittelt der lokale Prozessor 122, ob weitere zusätzliche Laufwerke für die Votierung zu untersuchen sind. Falls ja, geht die Steuerung zum Schritt 966, der die laufende Platte auf die nächste Platte innerhalb der Gruppe inkrementiert. Die Steuerung geht zum Schritt 954. Der lokale Prozessor setzt die Schleife zwischen den Schritten 954 und 964 solange fort, bis sämtliche Laufwerke Feld für Feld untersucht wurden und das Laufwerk mit den meisten Datenübereinstimmungen als Gewinner bezeichnet ist, oder es keinen Gewinner gibt, falls es keine Übereinstimmungen in dem RIS-Sektor der Platte gibt. Wenn im Schritt 964 ermittelt wird, daß es keine weiteren Laufwerke in dem Feld gibt, geht die Steuerung zum Schritt 968, wo der lokale Prozessor ermittelt, ob es einen Gewinner gegeben hat. Gibt es keinen Gewinner, geht die Steuerung zum Schritt 970, der einen Rückkehrdatenwert auf Null setzt. Dann geht die Steue rung zum Schritt 974, der zu dem aufrufenden Programm zurückführt. Wenn im Schritt 968 der lokale Prozessor 122 feststellt, daß es einen Gewinner gibt, geht die Steuerung zum Schritt 972, wo die Gewinner- Platten-Datenstruktur für die Rückkehr als Datenstrukturschablone mit einem Flag gekennzeichnet wird. Die Steuerung geht zum Schritt 974, der zu dem aufrufenden Programm zurückführt.
  • V. Schlußfolgerung
  • Man erkennt, daß die vorliegende Erfindung Systemprozessoroperationen dadurch verbessert, daß sie die Erzeugungen von plattenspezifischen Befehlen auf den lokalen Prozessor verlagert. Das Einreihen in eine Warteschlange und die Ausführung von Plattenanforderungen sowie das Management des Datentransfers durch die Plattensteuerung 112 ermöglicht eine effizientere Nutzung des Systemsprozessors 20.
  • Die obige Offenbarung und Beschreibung der Erfindung sind lediglich beispielhaft und anschaulich, so daß zahlreiche Änderungen hinsichtlich Größe, Form, Materialien, Komponenten, Schaltungen, Verdrahtungen und Kontakten sowie die Einzelheiten der dargestellten Schaltungen, der Aufbau und das Arbeitsverfahren möglich sind, ohne von dem Schutzumfang der Erfindung abzuweichen, der durch die beigefügten Ansprüche definiert ist.

Claims (10)

1. Verfahren zur Verwendung bei einem Rechnersystem (C), das ein intelligentes Massenspeicher-Plattengruppen-Subsystem aufweist, welches eine Mikroprozessorsteuerung (112) besitzt, um Daten über die Plattengruppe (116) zu verteilen, umfassend die Schritte:
a) Berechnen von physischen Laufwerksparametern, die bei der Verteilung von Daten zu verwenden sind, darunter Plattenzylinder-, Kopf und Sektor-Information, gekennzeichnet durch die weiteren Schritte:
b) Lesen einer Mehrzahl von logischen Plattenbefehlen;
c) Auswählen des Datenverteilungsschemas für die betreffende spezielle Rechnersystem-Konfiguration aus einem Satz von vorab definierten Verteilungsschemata;
d) Erstellen einer Mehrzahl von Informationspaketen, beinhaltend physische Plattenlaufwerksinformation und Laufwerksbefehle, zugehörig zu einem einzelnen logischen Laufwerksbefehl; und
e) Einreihen der Informationspakete in eine Warteschlange zur Verarbeitung durch die Mikroprozessorsteuerung (112).
2. Verfahren nach Anspruch 1, bei dem die Einrichtung zum Auswählen des Datenverteilungsschemas beinhaltet:
a) Ermitteln des Typs von Betriebssystem, welches von dem Rechnersystem verwendet wird; und
b) Ermitteln des Typs von Verschachtelungssystem, welches - falls vorhanden - von dem Rechnersystem spezifiziert ist und in der Plattengruppe (116) gespeichert ist.
3. Verfahren nach Anspruch 1 oder 2, bei dem die Berechnung von physischen Laufwerksparametern das Berechnen von physischen Parametern basierend auf einer Methode der direkten Abbildung von logischen Adressen auf physische Adressen beinhaltet.
4. Verfahren nach Anspruch 1 oder 2, bei dem die Berechnung von physischen Laufwerksparametern das Berechnen von physischen Parametern basierend auf einem Standard-Verschachtelungssystem beinhaltet.
5. Verfahren nach Anspruch 1 oder 2, bei dem die Berechnung von physischen Laufwerksparametern das Berechnen von physischen Parametern basierend auf einem Mehrfachsektor-Verschachtelungsschema beinhaltet.
6. Verfahren nach einen vorhergehenden Anspruch, bei dem das Erstellen eines Informationspakets beinhaltet:
a) Zuordnen von lokalem Speicher innerhalb der Plattengruppensteuerung (112) zur Schaffung eines Informationspakets;
b) Lesen von Plattengruppen- und plattenspezifischer Information aus reservierten Sektoren auf in der Plattengruppe (116) befindlichen Platten;
c) Laden von Parametern über physische Platten und von plattenspezifischer Information in das Informationspaket; und
d) Laden ausgewählter logischer Befehlsinformation in das Informationspaket.
7. Verfahren zur Verwendung bei einem Rechnersystem (C), das ein intelligentes Massenspeicher-Gruppen-Subsystem enthält, wobei das Platten-Subsystem eine Mikroprozessorsteuerung (112) zum Konfigurieren der Plattengruppe (116) aufweist, gekennzeichnet durch folgende Schritte:
a) Feststellen der Anzahl von Laufwerken, die physisch in der Plattengruppe (116) installiert sind;
b) Lesen von existierender Laufwerksgruppen (116) und Laufwerksinformation aus reservierten Bereichen auf den Platten innerhalb der Gruppe (116);
c) Feststellen, ob die existierende Laufwerksgruppen- (116) und Laufwerksinformation von jedem Laufwerk zulässig ist;
d) Erzeugen einer Laufwerksgruppenkonfiguration basierend auf zulässiger Laufwerksgruppen- und Laufwerksinformation; und
e) Einschreiben der Laufwerksgruppen- und Laufwerksinformation in sämtliche Plattenlaufwerke innerhalb der Gruppe (116).
8. Verfahren nach Anspruch 7, bei dem das Verfahren zum Ermitteln, ob die Plattengruppen- (116) und Plattenlaufwerksinformation, die aus reservierten Sektoren auf der Platte gelesen wird, gültig ist, beinhaltet:
a) Lesen von Plattengruppensteuerungs-Konfigurationsinformation aus reservierten Sektoren von einer Platte innerhalb der Plattengruppe (116);
b) Lesen von plattenlaufwerksspezifischer Information aus den reservierten Sektoren auf der Platte;
c) Feststellen, ob die physischen Laufwerksparameter, die in der Plattengruppensteuerungs-Information spezifiziert sind, übereinstimmen mit der laufwerkspezifischen Information für die Platte; und
d) Setzen eines Flags, welches signalisiert, daß die Information übereinstimmt und folglich zulässig ist, oder Setzen des Flags zwecks Kennzeichnung einer unzulässigen Bedingung.
9. Verfahren nach Anspruch 8, bei dem das Erzeugen einer Laufwerksgruppenkonfiguration basierend auf zulässiger Laufwerksgruppen- und Laufwerksinformation die Verwendung der Laufwerksgruppen- und Laufwerksinformation für irgendein Laufwerk innerhalb der Gruppe als Konfigurationsschablone beinhaltet, wobei die Laufwerksgruppen- und Laufwerksinformation innerhalb der reservierten Sektoren des ausgewählten Laufwerks konsistent ist mit Information, die von der sämtlichen übrigen Laufwerksgruppen- und Laufwerksinformation gelesen wurde, die von anderen Laufwerken innerhalb der Plattengruppe gelesen wurde.
10. Verfahren nach Anspruch 8, bei dem das Erzeugen einer Laufwerksgruppenkonfiguration basierend auf zulässiger Laufwerksgruppen- und Laufwerkinformation beinhaltet:
a) Feststellen, daß ein oder mehrere Laufwerke innerhalb der Gruppe zulässige Laufwerksgruppen- und Laufwerkinformation innerhalb der reservierten Sektoren der jeweiligen Platten enthalten, um es dadurch zu einem zulässigen Laufwerk zu machen;
b) Feststellen, welches der zulässigen Laufwerke am meisten konsistent ist bezüglich der Plattengruppen- und Laufwerksinformation über andere zulässige Laufwerke; und
c) Auswählen des am meisten konsistenten zulässigen Laufwerks als Laufwerksgruppen-Schablone für die übrigen Laufwerke innerhalb der Plattengruppe.
DE69032614T 1989-11-03 1990-11-02 Verfahren zur Datenverteilung in einer Speicherplattenanordnung Expired - Lifetime DE69032614T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US43174889A 1989-11-03 1989-11-03

Publications (2)

Publication Number Publication Date
DE69032614D1 DE69032614D1 (de) 1998-10-08
DE69032614T2 true DE69032614T2 (de) 1999-04-15

Family

ID=23713263

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69032614T Expired - Lifetime DE69032614T2 (de) 1989-11-03 1990-11-02 Verfahren zur Datenverteilung in einer Speicherplattenanordnung

Country Status (4)

Country Link
US (3) US5440716A (de)
EP (1) EP0428021B1 (de)
CA (1) CA2029179A1 (de)
DE (1) DE69032614T2 (de)

Families Citing this family (108)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU8683991A (en) * 1990-11-09 1992-05-14 Array Technology Corporation Logical partitioning of a redundant array storage system
JP3276147B2 (ja) * 1991-08-07 2002-04-22 アダプテック・インコーポレイテッド 計算機バスとディスクドライブ間のデータの複数のセクタの自動読み出し及び自動書き込みインテリジェントハードウェア
JPH0823802B2 (ja) * 1991-11-13 1996-03-06 富士通株式会社 アレイディスク装置の状態表示方式
US5369758A (en) * 1991-11-15 1994-11-29 Fujitsu Limited Checking for proper locations of storage devices in a storage array
US5974544A (en) * 1991-12-17 1999-10-26 Dell Usa, L.P. Method and controller for defect tracking in a redundant array
US5471640A (en) * 1992-07-06 1995-11-28 Hewlett-Packard Programmable disk array controller having n counters for n disk drives for stripping data where each counter addresses specific memory location by a count n
US5423046A (en) * 1992-12-17 1995-06-06 International Business Machines Corporation High capacity data storage system using disk array
US5574851A (en) * 1993-04-19 1996-11-12 At&T Global Information Solutions Company Method for performing on-line reconfiguration of a disk array concurrent with execution of disk I/O operations
US5598549A (en) * 1993-06-11 1997-01-28 At&T Global Information Solutions Company Array storage system for returning an I/O complete signal to a virtual I/O daemon that is separated from software array driver and physical device driver
JPH08185271A (ja) * 1994-12-27 1996-07-16 Internatl Business Mach Corp <Ibm> ディスク装置用データ処理方法及びディスク装置
US5671439A (en) 1995-01-10 1997-09-23 Micron Electronics, Inc. Multi-drive virtual mass storage device and method of operating same
US5651133A (en) * 1995-02-01 1997-07-22 Hewlett-Packard Company Methods for avoiding over-commitment of virtual capacity in a redundant hierarchic data storage system
US5666512A (en) * 1995-02-10 1997-09-09 Hewlett-Packard Company Disk array having hot spare resources and methods for using hot spare resources to store user data
US5845319A (en) * 1995-08-23 1998-12-01 Fujitsu Limited Disk array device which separates local and physical disks using striping and operation mode selection
US6098128A (en) * 1995-09-18 2000-08-01 Cyberstorage Systems Corporation Universal storage management system
US5822782A (en) * 1995-10-27 1998-10-13 Symbios, Inc. Methods and structure to maintain raid configuration information on disks of the array
US5754844A (en) * 1995-12-14 1998-05-19 Sun Microsystems, Inc. Method and system for accessing chunks of data using matching of an access tab and hashing code to generate a suggested storage location
US5838892A (en) * 1995-12-29 1998-11-17 Emc Corporation Method and apparatus for calculating an error detecting code block in a disk drive controller
US5727218A (en) * 1996-03-05 1998-03-10 Unisys Corp. Controlling an apparatus disposed for adapting fiber channel transmissions to an industry standard data bus
JP2787911B2 (ja) * 1996-03-29 1998-08-20 三菱電機株式会社 データストレージ管理方式及びデータストレージ管理方法
US5819310A (en) * 1996-05-24 1998-10-06 Emc Corporation Method and apparatus for reading data from mirrored logical volumes on physical disk drives
US5887199A (en) * 1996-06-03 1999-03-23 Emc Corporation Mass storage controller with universal track size adaptability
US5835694A (en) * 1996-12-06 1998-11-10 International Business Machines Corporation Raid-configured disk drive array wherein array control occurs at the disk drive level
US5696768A (en) * 1996-12-10 1997-12-09 Intel Corporation Method and apparatus for data storage array tracking
US6092169A (en) * 1997-04-02 2000-07-18 Compaq Computer Corporation Apparatus and method for storage subsystem drive movement and volume addition
US5950230A (en) * 1997-05-28 1999-09-07 International Business Machines Corporation RAID array configuration synchronization at power on
US6108724A (en) * 1997-05-29 2000-08-22 Gateway 2000, Inc. Fast IDE drive to drive transfers
US6209059B1 (en) * 1997-09-25 2001-03-27 Emc Corporation Method and apparatus for the on-line reconfiguration of the logical volumes of a data storage system
US6128669A (en) * 1997-09-30 2000-10-03 Compaq Computer Corporation System having a bridge with distributed burst engine to decouple input/output task from a processor
US6138176A (en) * 1997-11-14 2000-10-24 3Ware Disk array controller with automated processor which routes I/O data according to addresses and commands received from disk drive controllers
US6134630A (en) 1997-11-14 2000-10-17 3Ware High-performance bus architecture for disk array system
US6205569B1 (en) * 1997-11-18 2001-03-20 Seagate Technology Llc Error recovery using alternate headers in a disc drive
US6105103A (en) * 1997-12-19 2000-08-15 Lsi Logic Corporation Method for mapping in dynamically addressed storage subsystems
US6356991B1 (en) * 1997-12-31 2002-03-12 Unisys Corporation Programmable address translation system
US6480949B2 (en) * 1998-02-27 2002-11-12 Stmicroelectronics N.V. Disk drive block ordering system
US6170063B1 (en) * 1998-03-07 2001-01-02 Hewlett-Packard Company Method for performing atomic, concurrent read and write operations on multiple storage devices
US6167461A (en) * 1998-03-31 2000-12-26 Texas Instruments Incorporated Programmable high performance disk formatter for headerless disk drive controller executing a series of low level instructions generated by a high level processing engine
JP3946873B2 (ja) 1998-06-19 2007-07-18 株式会社日立製作所 ディスクアレイ制御装置
US6421711B1 (en) * 1998-06-29 2002-07-16 Emc Corporation Virtual ports for data transferring of a data storage system
US6393540B1 (en) * 1998-06-30 2002-05-21 Emc Corporation Moving a logical object from a set of source locations to a set of destination locations using a single command
US6266740B1 (en) * 1998-07-31 2001-07-24 Emc Corporation Device sequencing and placement protection using a digital signature
US6128699A (en) * 1998-10-27 2000-10-03 Hewlett-Packard Company Method for providing read/write access while copying data between shared storage devices
TW388817B (en) * 1998-11-20 2000-05-01 Via Tech Inc Method reducing latency of writing data in memory
US6453277B1 (en) * 1999-01-28 2002-09-17 Computer Associates Think, Inc. Virtual I/O emulator in a mainframe environment
US6272442B1 (en) * 1999-02-04 2001-08-07 Dell Usa, L.P. Taking in-use computer drives offline for testing
US6411454B1 (en) * 1999-03-01 2002-06-25 Seagate Technology Llc Head control for disc drive apparatuses, systems and processes
US6272565B1 (en) 1999-03-31 2001-08-07 International Business Machines Corporation Method, system, and program for reordering a queue of input/output (I/O) commands into buckets defining ranges of consecutive sector numbers in a storage medium and performing iterations of a selection routine to select and I/O command to execute
US6453398B1 (en) * 1999-04-07 2002-09-17 Mitsubishi Electric Research Laboratories, Inc. Multiple access self-testing memory
US6654195B1 (en) * 1999-04-27 2003-11-25 Western Digital Ventures, Inc. Disk drive having a register set for providing real time position variables to a host
US6356979B1 (en) * 1999-05-17 2002-03-12 Compaq Computer Corporation System and method for selectively presenting logical storage units to multiple host operating systems in a networked computing system
EP1059588A1 (de) * 1999-06-09 2000-12-13 Texas Instruments Incorporated Multikanal-DMA mit Datenverkehrplanung auf die Ausgänge
JP3812928B2 (ja) * 1999-07-14 2006-08-23 株式会社日立製作所 外部記憶装置及び情報処理システム
US6513093B1 (en) 1999-08-11 2003-01-28 International Business Machines Corporation High reliability, high performance disk array storage system
US6546504B1 (en) * 2000-01-19 2003-04-08 Microsoft Corporation System and method for providing streaming recording and playback of audio-video data
US6851005B1 (en) * 2000-03-03 2005-02-01 International Business Machines Corporation Apparatus and method for implementing raid devices in a cluster computer system
US6691198B1 (en) 2000-03-30 2004-02-10 Western Digital Ventures, Inc. Automatically transmitting scheduling data from a plurality of storage systems to a network switch for scheduling access to the plurality of storage systems
JP2001306414A (ja) * 2000-04-25 2001-11-02 Hitachi Ltd 記憶装置のリモートコピーシステム
US6804077B1 (en) 2000-07-25 2004-10-12 Certance Llc Method and apparatus for reinitializing a tape drive after a power loss
US6795894B1 (en) 2000-08-08 2004-09-21 Hewlett-Packard Development Company, L.P. Fast disk cache writing system
US6757841B1 (en) * 2000-09-14 2004-06-29 Intel Corporation Method and apparatus for dynamic mirroring availability in a network appliance
US6681290B2 (en) 2001-01-29 2004-01-20 International Business Machines Corporation Physical data layout to reduce seeks in a raid system
US7062644B2 (en) * 2001-05-30 2006-06-13 International Business Machines Corporation Method, system, and program for initializing a storage device comprising multiple storage units through a storage controller
US7062501B1 (en) * 2001-08-08 2006-06-13 Adaptec, Inc. Structure and method for linking scatter/gather list segments for host adapters
US6892264B2 (en) 2001-10-05 2005-05-10 International Business Machines Corporation Storage area network methods and apparatus for associating a logical identification with a physical identification
US6701385B1 (en) 2002-01-16 2004-03-02 Adaptec, Inc. Raid 1 write mirroring method for host adapters
US6728791B1 (en) * 2002-01-16 2004-04-27 Adaptec, Inc. RAID 1 read mirroring method for host adapters
US7260628B2 (en) * 2002-09-06 2007-08-21 Hitachi, Ltd. Event notification in storage networks
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
US7024526B2 (en) * 2002-10-31 2006-04-04 Hitachi, Ltd. Apparatus and method of null data skip remote copy
US7225293B2 (en) * 2003-06-16 2007-05-29 Hitachi Global Storage Technologies Netherlands B.V. Method, system, and program for executing input/output requests
US7240201B2 (en) * 2003-08-01 2007-07-03 Hewlett-Packard Development Company, L.P. Method and apparatus to provide secure communication between systems
US7362704B2 (en) * 2003-09-15 2008-04-22 Teknovus, Inc. Method and apparatus for dynamically allocating upstream bandwidth in passive optical networks
US7228432B2 (en) * 2003-09-11 2007-06-05 Angelo Michael F Method and apparatus for providing security for a computer system
US7239581B2 (en) * 2004-08-24 2007-07-03 Symantec Operating Corporation Systems and methods for synchronizing the internal clocks of a plurality of processor modules
US7287133B2 (en) * 2004-08-24 2007-10-23 Symantec Operating Corporation Systems and methods for providing a modification history for a location within a data store
US7409587B2 (en) * 2004-08-24 2008-08-05 Symantec Operating Corporation Recovering from storage transaction failures using checkpoints
US7296008B2 (en) * 2004-08-24 2007-11-13 Symantec Operating Corporation Generation and use of a time map for accessing a prior image of a storage device
US7631120B2 (en) * 2004-08-24 2009-12-08 Symantec Operating Corporation Methods and apparatus for optimally selecting a storage buffer for the storage of data
US7577807B2 (en) * 2003-09-23 2009-08-18 Symantec Operating Corporation Methods and devices for restoring a portion of a data store
US7725760B2 (en) * 2003-09-23 2010-05-25 Symantec Operating Corporation Data storage system
US7827362B2 (en) * 2004-08-24 2010-11-02 Symantec Corporation Systems, apparatus, and methods for processing I/O requests
US7904428B2 (en) * 2003-09-23 2011-03-08 Symantec Corporation Methods and apparatus for recording write requests directed to a data store
US7730222B2 (en) * 2004-08-24 2010-06-01 Symantec Operating System Processing storage-related I/O requests using binary tree data structures
US7577806B2 (en) * 2003-09-23 2009-08-18 Symantec Operating Corporation Systems and methods for time dependent data storage and recovery
US7991748B2 (en) * 2003-09-23 2011-08-02 Symantec Corporation Virtual data store creation and use
CN100350371C (zh) * 2003-10-07 2007-11-21 普安科技股份有限公司 磁盘阵列一致性初始化方法
US8244974B2 (en) * 2003-12-10 2012-08-14 International Business Machines Corporation Method and system for equalizing usage of storage media
US7382880B2 (en) * 2004-01-26 2008-06-03 Hewlett-Packard Development Company, L.P. Method and apparatus for initializing multiple security modules
US7930503B2 (en) * 2004-01-26 2011-04-19 Hewlett-Packard Development Company, L.P. Method and apparatus for operating multiple security modules
US8933941B2 (en) 2004-08-23 2015-01-13 Hewlett-Packard Development Company, L.P. Method and apparatus for redirection of video data
US7444360B2 (en) * 2004-11-17 2008-10-28 International Business Machines Corporation Method, system, and program for storing and using metadata in multiple storage locations
CN103744790B (zh) * 2005-08-25 2017-05-10 美国莱迪思半导体公司 智能可缩放存储切换架构
WO2007047346A2 (en) * 2005-10-14 2007-04-26 Symantec Operating Corporation Technique for timeline compression in a data store
CN1329809C (zh) * 2005-10-25 2007-08-01 威盛电子股份有限公司 磁盘阵列的控制器及其工作方法
US20070100893A1 (en) * 2005-10-31 2007-05-03 Sigmatel, Inc. System and method for accessing data from a memory device
KR100855587B1 (ko) * 2007-01-17 2008-09-01 삼성전자주식회사 메일박스 영역을 가지는 멀티 패스 액세스블 반도체 메모리장치 및 그에 따른 메일박스 액세스 제어방법
US20090222569A1 (en) * 2008-02-29 2009-09-03 Atrato, Inc. Storage system front end
US9009358B1 (en) * 2008-09-23 2015-04-14 Western Digital Technologies, Inc. Configuring a data storage device with a parameter file interlocked with configuration code
US7984200B1 (en) 2008-09-23 2011-07-19 Western Digital Technologies, Inc. Configuring a data storage device with a configuration data record set in response to a configuration code
US8489841B1 (en) 2009-12-10 2013-07-16 Western Digital Technologies, Inc. Manufacturing station dynamically configuring a data storage device with a validated configuration data record
US8601085B1 (en) * 2011-03-28 2013-12-03 Emc Corporation Techniques for preferred path determination
US9134920B2 (en) * 2013-07-17 2015-09-15 Hitachi, Ltd. Storage apparatus and command control method
US9547448B2 (en) * 2014-02-24 2017-01-17 Netapp, Inc. System and method for transposed storage in raid arrays
US20160216891A1 (en) * 2015-01-27 2016-07-28 Cisco Technology, Inc. Dynamic storage fabric
US10424328B1 (en) * 2018-04-25 2019-09-24 Seagate Technology Llc Reduced latency I/O in multi-actuator device
US10720200B2 (en) 2018-04-25 2020-07-21 Seagate Technology Llc Reduced latency I/O in multi-actuator device
US11573741B2 (en) * 2021-05-11 2023-02-07 Vmware, Inc. Write input/output optimization for virtual disks in a virtualized computing system
US12050926B2 (en) * 2021-06-04 2024-07-30 VMware LLC Journal space reservations for virtual disks in a virtualized computing system

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5362945A (en) * 1976-11-17 1978-06-05 Toshiba Corp Disc address system
US4276595A (en) * 1978-06-30 1981-06-30 International Business Machines Corporation Microinstruction storage units employing partial address generators
DE2924781A1 (de) * 1979-06-20 1981-01-15 Philips Patentverwaltung Verfahren und anordnung zum schreiben der sektoreinteilung einer speicherplatte
US4811279A (en) * 1981-10-05 1989-03-07 Digital Equipment Corporation Secondary storage facility employing serial communications between drive and controller
US4454595A (en) * 1981-12-23 1984-06-12 Pitney Bowes Inc. Buffer for use with a fixed disk controller
US4633392A (en) * 1982-04-05 1986-12-30 Texas Instruments Incorporated Self-configuring digital processor system with logical arbiter
US4612613A (en) * 1983-05-16 1986-09-16 Data General Corporation Digital data bus system for connecting a controller and disk drives
US4825403A (en) * 1983-05-16 1989-04-25 Data General Corporation Apparatus guaranteeing that a controller in a disk drive system receives at least some data from an invalid track sector
US4773004A (en) * 1983-05-16 1988-09-20 Data General Corporation Disk drive apparatus with hierarchical control
US4590557A (en) * 1983-09-12 1986-05-20 Pitney Bowes Inc. Method and apparatus for controlling software configurations in data processing systems
US4660141A (en) * 1983-12-06 1987-04-21 Tri Sigma Corporation Self configuring computer network with automatic bus exchange of module identification numbers and processor assigned module numbers
FR2561428B1 (fr) * 1984-03-16 1986-09-12 Bull Sa Procede d'enregistrement dans une memoire a disques et systeme de memoire a disques
JPS60254463A (ja) * 1984-05-31 1985-12-16 Sony Corp デジタルデ−タの記録ないし再生方式
US4608618A (en) * 1984-10-25 1986-08-26 Verbatim Corporation Digital alignment diagnostic disk
US4855903A (en) * 1984-12-20 1989-08-08 State University Of New York Topologically-distributed-memory multiprocessor computer
US4885683A (en) * 1985-09-27 1989-12-05 Unisys Corporation Self-testing peripheral-controller system
US4805090A (en) * 1985-09-27 1989-02-14 Unisys Corporation Peripheral-controller for multiple disk drive modules having different protocols and operating conditions
JPS6278623A (ja) * 1985-10-02 1987-04-10 Toshiba Corp 磁気デイスク装置
US4825404A (en) * 1985-11-27 1989-04-25 Tektronix, Inc. Interface system which generates configuration control signal and duplex control signal for automatically determining the configuration of removable modules
US4709367A (en) * 1986-03-31 1987-11-24 International Business Machines Corporation Method and apparatus for distinguishing between diskettes in a diskette drive
JPH0719426B2 (ja) * 1986-11-07 1995-03-06 日本電気株式会社 デイスク制御装置
US4980850A (en) * 1987-05-14 1990-12-25 Digital Equipment Corporation Automatic sizing memory system with multiplexed configuration signals at memory modules
US4843544A (en) * 1987-09-25 1989-06-27 Ncr Corporation Method and apparatus for controlling data transfers through multiple buffers
US4939598A (en) * 1988-02-08 1990-07-03 International Business Machines Corporation Managing data storage space on large capacity record media
US4951248A (en) * 1988-03-04 1990-08-21 Sun Microsystems, Inc. Self configuring memory system
US4888691A (en) * 1988-03-09 1989-12-19 Prime Computer, Inc. Method for disk I/O transfer
US5027313A (en) * 1988-08-25 1991-06-25 Compaq Computer Corporation Apparatus for determining maximum usable memory size
US5014237A (en) * 1988-10-31 1991-05-07 Tandon Corporation Disk drive controller system with enhanced communications interface
US5148432A (en) * 1988-11-14 1992-09-15 Array Technology Corporation Arrayed disk drive system and method
US5163131A (en) * 1989-09-08 1992-11-10 Auspex Systems, Inc. Parallel i/o network file server architecture
US5247633A (en) * 1990-02-28 1993-09-21 Seagate Technology, Inc. Configuration of high capacity disk drives with embedded ibm pc-at type computer

Also Published As

Publication number Publication date
EP0428021A2 (de) 1991-05-22
US5440716A (en) 1995-08-08
US5592648A (en) 1997-01-07
DE69032614D1 (de) 1998-10-08
EP0428021A3 (en) 1993-07-28
CA2029179A1 (en) 1991-05-04
US5909691A (en) 1999-06-01
EP0428021B1 (de) 1998-09-02

Similar Documents

Publication Publication Date Title
DE69032614T2 (de) Verfahren zur Datenverteilung in einer Speicherplattenanordnung
DE69030861T2 (de) Bus-Master-Steuerprotokoll
DE69033476T2 (de) Schutz von Datenredundanz und -rückgewinnung
DE69223303T2 (de) Verfahren und Gerät für die dynamische Zuweisung von unadressierten Unterbrechungen
DE3789104T2 (de) Netzwerkübertragungsadapter.
DE69117371T2 (de) Hintergrund-Plattenoberflächenanalyse durch eine Steuerung für intelligente Speicherplattenanordnung ausgeführt
DE3688763T2 (de) Mehrfachport-Übertragungsadaptiervorrichtung.
DE3650036T2 (de) Mehrfachport-Diensterweiterungsadapter für Übertragungssteuerung.
DE69610157T2 (de) Ein Ein-/Ausgabeprozessor der gemeinsame Betriebsmittel einem Ein-/Ausgabebus in einem Rechner zur Verfügung stellt
DE3788354T2 (de) Eingangs-/ausgangssteuerungstechnik.
DE69521549T2 (de) Verfahren zur Verwaltung gemeinsamer Mittel mehrerer Verarbeitungseinheiten
US6505268B1 (en) Data distribution in a disk array
DE68913629T2 (de) Satzverriegelungsprozessor für vielfachverarbeitungsdatensystem.
DE69132652T2 (de) Rechnerdatenleitweglenkungssystem
DE69429279T2 (de) Multiprozessor-programmierbares unterbrechungskontrollersystem mit prozessor-integrierten unterbrechungskontrollern
DE3688810T2 (de) Mehrfachport-integrierter Steuerer und Arbitrierer für DMA und Unterbrechungen.
DE69534616T2 (de) System und Verfahren zum Verarbeiten von E/A-Anfragen über einen Schnittstellenbus zu einer Speicherplattenanordnung
DE3687764T2 (de) Rechnersystem mit hoher Leistung.
DE3751616T2 (de) Parallel-Grossrechner.
DE68926036T2 (de) Speicherkonfiguration zur Verwendung für Schnittstellenbildung zwischen einer Systemsteuereinheit für ein Multiprozessorsystem und dem Hauptspeicher
DE3587378T2 (de) Abtastloser Nachrichtenkonzentrator und Multiplexer.
DE69312589T2 (de) Verfahren zur anteiligen Nutzung von Ein-/ Ausgabebetriebsmitteln zwischen einer Vielzahl von Betriebsystemen und Programmen
DE3127349C2 (de)
DE3606211A1 (de) Multiprozessor-computersystem
DE69316022T2 (de) Steuerungsvorrichtung fuer speicherplattenanordnung mit steuerbloecken fuer steuerungsinformation

Legal Events

Date Code Title Description
8364 No opposition during term of opposition