-
Bereich der
Technik
-
Diese Erfindung betrifft ein Datenverarbeitungssystem
mit mehreren unabhängigen
Pfaden zur Übertragung
zwischen mehreren unabhängigen Speichersteuereinheiten
und Speichereinheiten. Genauer gesagt, diese Erfindung betrifft
ein Verfahren und ein Mittel zur wirkungsvollen Verwaltung der Warteschlangen
in einem Speicher-Teilsystem mit mehreren unabhängigen Pfaden, bei dem die
Anforderungen für
den Zugriff auf die Speichereinheiten ausgeführt werden können, ohne
dass die Warteschlangen synchron sein müssen.
-
Stand der
Technik
-
Datenverarbeitungssysteme (Systeme)
mit mehreren Eingabe/Ausgabe-(E/A-)Speicher-Teilsystemen haben im
Allgemeinen mehrere unabhängige Kommunikationspfade
zwischen dem Prozessor und jeder Speichereinheit in dem System.
Ein typisches Datenverarbeitungssystem 100, das ein solches Merkmal
aufweist, ist in 1 gezeigt.
Der Host 110 umfasst im Allgemeinen ein Anwendungsprogramm 112,
ein Betriebssystem 114 und eine E/A-Überwachungseinrichtung (I/O
supervisor) 116, die des Weiteren eine Host-Taskwarteschlange 117 enthält, um die
vom Host ausgegebenen Anforderungen zu verwalten. Der Host 110 umfasst überdies
eine Vielzahl von E/A-Kanälen 118 zur
Kommunikation mit der Speichersteuereinheit 120. Die Speichersteuereinheit 120 umfasst
im Allgemeinen eine Vielzahl von E/A-Anschlüssen (I/O ports) 122 zur
Kommunikation mit dem Host 110, einen gemeinsam benutzten
Cachespeicher 124 für
hohe Leistungsfähigkeit
und eine Vielzahl von Steuereinheit-Pfaden 130, um auf die
Speichereinheiten 140 zuzugreifen. Die Speichersteuereinheit 120 und
die Speichereinheiten 140 werden im Allgemeinen als Speicher-Teilsystem
bezeichnet.
-
Wenn eine vom Host 110 ausgegebene E/A-Anforderung
nicht durch die Bereitstellung von Daten erfüllt werden kann, die bereits
im Cachespeicher 124 abgelegt sind, greift die Speichersteuereinheit 120 im
Allgemeinen über
einen der verfügbaren Steuereinheit-Pfade 130 auf
die entsprechende Speichereinheit zu, um die E/A-Anforderung auszuführen. Das
Datenverarbeitungssystem von 1 zeichnet sich
im Allgemeinen aufgrund der Redundanz des Speicher-Teilsystems,
mehrerer E/A-Kanäle,
mehrerer Steuereinheit-Pfade in der Speichersteuereinheit und mehrerer
Kommunikationsverbindungen zwischen der Speichersteuereinheit und
den Speichereinheiten durch hohe Verfügbarkeit aus.
-
Bei dieser Art von System wird eine
vom Host 110 ausgegebene E/A-Anforderung typischerweise
wie folgt in die Warteschlange gestellt: Die E/A-Anforderung wird
vom Anwendungsprogramm 112 ausgelöst und an die E/A-Überwachungseinrichtung 116 übermittelt.
Die E/A-Überwachungseinrichtung 116 empfängt die
Anforderung und fügt
sie zur Host-Taskwarteschlange 117 hinzu, die von der E/A-Überwachungseinrichtung
verwaltet wird. Wenn eine der Kommunikationsverbindungen 150 verfügbar wird,
löst die
E/A-Überwachungseinrichtung 116 einen
E/A-Prozess für
die erste Anforderung in der Warteschlange 117 aus, für die die
entsprechende Einheit verfügbar
ist.
-
Da die Host-Taskwarteschlange 117 die
einzige im System verfügbare
Warteschlange für E/A-Operationen
ist, werden bei dieser Art von System alle Operationen am Host 110 eingeleitet,
und nur eine Operation kann für
eine beliebige Einheit aktiv sein. Überdies muss diese Operation
als abgearbeitet gemeldet werden, bevor die E/A-Überwachungseinrichtung 116 eine
andere Operation für
diese Einheit einleiten kann.
-
Bei dieser Art von Architektur wird
durch den Ausfall von einem der Kanäle 118, einer der
Kommunikationsverbindungen 150, einer der Einheiten-Kommunikationsverbindungen 160 oder
einem der Steuereinheit-Pfade 130 nicht der Zugriff auf
die Speichereinheiten verhindert, aber ein Ausfall, der die Host-Taskwarteschlange 117 betrifft,
führt dazu, dass
Anforderungen in der Host-Taskwarteschlange 117 fehlschlagen,
und die Wahrscheinlichkeit ist groß, dass eines oder mehrere
Programme abgebrochen werden. Eine Wiederherstellung nach einem Fehler
kann zur Folge haben, dass das Programm auf demselben Host oder
auf einem anderen Host-System neu ausgeführt werden muss.
-
In einem Datenverarbeitungssystem,
bei dem die Speichersteuereinheit über einen Cachespeicher verfügt, ist
es jedoch erwünscht,
dass Operationen zwischen dem Cachespeicher 124 und den Speichereinheiten 140 gleichzeitig
mit Operationen zwischen dem Cachespeicher 124 und dem
Host 110 (der auch als Zentraleinheit (CPU) bezeichnet
wird) ausgeführt
werden. Eine Anforderung beispielsweise, Daten in die Speichereinheit 142 zu
schreiben, die vom Host 110 ausgegeben wird, kann vom Host 110 als
vollständig
abgearbeitet betrachtet werden, wenn die Daten in den Cachespeicher 124 übertragen
worden sind.
-
Anschließend können nachfolgende Operationen
für die
Einheit 142 aus dem Cachespeicher 124 ausgeführt werden,
während
die aktualisierten Daten in die Speichereinheit 142 geschrieben
werden.
-
Ein Beispiel für ein Datenverarbeitungssystem,
bei dem die Speichersteuereinheit über einen Cachespeicher verfügt, ist
in 2 gezeigt. 2 stellt ein IBM System/390 (Host 110)
dar, das mit der IBM-Speichersteuereinheit 3990 (Speichersteuereinheit 120)
kommuniziert, die den Betrieb der IBM-Magnetspeichereinheiten 3390 (Speichereinheiten 140) steuert.
Bei diesem System gibt es vier Kommunikationspfade (Datenpfade)
zwischen der Speichersteuereinheit 120 und den Speichereinheiten 140.
Jeder Datenpfad umfasst einen Steuereinheit-Pfad 130 und eine
Einheiten-Kommunikationsverbindung 160 und steht
zur Übertragung
von Befehlen zur Verfügung, um
Operationen in beliebigen der Speichereinheiten 140 auszuführen.
-
Um eine hohe Verfügbarkeit zu ermöglichen, wird
die Speichersteuereinheit 120 im Allgemeinen in zwei Speicher-Teilsteuereinheiten 132 und 134 unterteilt.
Die Speicher-Teilsteuereinheit 132 umfasst eine
Steuereinheit-Taskwarteschlange 126 und
eine Vielzahl von Steuereinheit-Pfaden 130 (in 2 sind zwei Steuereinheit-Pfade
gezeigt). Die Speicher-Teilsteuereinheit 134 umfasst eine
Steuereinheit-Taskwarteschlange 128 und
eine Vielzahl von Steuereinheit-Pfaden 130 (in 2 sind zwei Steuereinheit-Pfade
gezeigt). Die Taskwarteschlangen 126 und 128 stellen
jeweils Repliken voneinander dar. Außerdem sind die beiden Speicher-Teilsteuereinheiten
für verschiedene
Leistungsgrenzen ausgelegt, um die Zuverlässigkeit des Gesamtsystems
zu verbessern. Wenn eine der Speicher-Teilsteuereinheiten ausfiele,
würde daher
die andere Speicher-Teilsteuereinheit weiterhin Anforderungen aus
ihrer Taskwarteschlange ausführen
und dadurch eine zwar geringere, aber gleichbleibende Leistung bereitstellen.
-
Wenn man berücksichtigt, dass jede Anforderung
für den
Zugriff auf eine Speichereinheit, die vom Host 110 ausgegeben
wird, mehrere Teilbefehle enthalten und jeder der Teilbefehle von
einer Teilsteuereinheit ausgegeben und von einer anderen abgearbeitet
werden kann, wird die Verwaltung der Taskwarteschlangen in der Speichersteuereinheit 120 eine äußerst ernsthafte
Angelegenheit, die von zentraler Bedeutung ist. Eine E/A-Anforderung
beispielsweise enthält
gewöhnlich
zwei Teilbefehle, 1) einen vorbereitenden Zustandsbefehl "suchen/finden" ("seek/locate") und 2) einen als "lesen/schreiben" ("read/write") bekannten zeitabhängigen Datenübertragungsbefehl.
Bei dieser Art einer E/A-Anforderung kann eine von beiden Speicher-Teilsteuereinheiten
zur Verfügung
stehen, um beliebige der Teilbefehle zu einem bestimmten Zeitpunkt
auszuführen,
und sie kann auch die nächste
Operation an der Warteschlange bedienen.
-
Daher muss jede Speicher-Teilsteuereinheit den
Zustand der E/A-Anforderung für
jede Einheit überwachen,
um zu gewährleisten,
dass ein Schreib-/Lesebefehl ("read/write") der richtigen E/A-Anforderung
zugeordnet wird, bevor er von einer der beiden Teilsteuereinheiten
ausgeführt
wird. Das heißt,
es muss einen Mechanismus geben, über den eine Bestätigung darüber, dass
der Teilbefehl "suchen/finden" abgearbeitet wurde,
von beiden Teilsteuereinheiten empfangen wird. Beispielsweise kann
die Ausführung
des Teilbefehls "lesen/schreiben" durch eine der Teilsteuereinheiten
verzögert werden,
bis beide Teilsteuereinheiten eine Bestätigung von der Speichereinheit
empfangen haben. Diese Vorgehensweise würde jedoch den Zugriff auf die
Speichereinheiten äußerst langsam
machen und auch die Unabhängigkeit
der Speicher-Teilsteuereinheiten
beeinträchtigen.
-
Eine Möglichkeit, dieses Problem anzugehen,
besteht darin, sicherzustellen, dass die Speicher-Teilsteuereinheiten
unabhängig
voneinander arbeiten, um eine hohe Verfügbarkeit zu gewährleisten, bei
der Verarbeitung von Zugriffsanforderungen auf Einheiten aber dennoch
sehr eng zusammenarbeiten, um die Leistungsfähigkeit zu verbessern. Eine solche
Architektur ist in 2 gezeigt,
in der eine Anforderung für
den Zugriff auf eine Speichereinheit von jeder Speicher-Teilsteuereinheit
repliziert und von jeder Teilsteuereinheit an die Einheit gesendet
wird. Bei dieser Architektur sendet die erste Speicher-Teilsteuereinheit,
die in den Besitz der Einheit kommt und einen Kommunikationspfad
aufbaut, den Befehl "suchen/finden" an die Einheit.
Der Kommunikationspfad wird dann von der Einheit getrennt, und die Speichereinheit
beginnt mit der Ausführung
des Teilbefehls "suchen/finden". Sobald die Operation
abgeschlossen und die Einheit zur Datenübertragung bereit ist, aktiviert
die Einheit einen Merker (flag) oder eine Unterbrechung, um die
Speichersteuereinheit zu informieren. Sobald die Einheit einen Merker
oder eine Unterbrechung aktiviert hat, kommt die erste verfügbare Teilsteuereinheit,
die die Unterbrechung von der Einheit feststellt, in den Besitz
der Einheit und schließt
die Datenübertragung
von der Einheit an den gemeinsam benutzten Cachespeicher 124 in
der Speichersteuereinheit 120 ab.
-
Bei dieser Architektur arbeiten die
Speicher-Teilsteuereinheiten
daher unabhängig
voneinander, um eine hohe Verfügbarkeit
zu ermöglichen, gleichzeitig
arbeiten sie jedoch sehr eng zusammen, um eine hohe Leistungsfähigkeit
zu gewährleisten. Da
die Kommunikationspfade durch jede Speicher-Teilsteuereinheit jedoch asynchron sind,
was bedeutet, dass Anforderungen über einen Kommunikationspfad
im Vergleich zu einem anderen Pfad Verzögerungen erfahren können, kann
dies gut dazu führen,
dass eine Speicher-Teilsteuereinheit eine Anforderung oder einen
Teilbefehl ausführt,
die/der bereits von der anderen Speicher-Teilsteuereinheit ausgeführt worden
ist. Dies könnte
leicht zu vergeudeten Operationen führen, was die gesamte Leistungsfähigkeit
des Speicher-Teilsystems herabsetzt, und gleichzeitig Probleme bezüglich der
Vollständigkeit und
Unversehrtheit der Daten (Datenintegrität) verursachen.
-
Eine Architektur, die Nachrichten
mit hoher Geschwindigkeit weiterleitet, kann in dem System von 2 zwischen den Speicher-Teilsteuereinheiten
verwendet werden, um eine Teilsteuereinheit über die Operationen zu unterrichten,
die von der anderen Teilsteuereinheit ausgeführt werden. Aber selbst beim
Versenden von Nachrichten von einer Teilsteuereinheit an eine andere
kann es zu Verzögerungen
kommen, was zu doppelt ausgeführten
Anforderungen und zu Problemen mit der Datenintegrität führt.
-
Da es außerdem eine Vielzahl von Kommunikationspfaden
zwischen der Speichersteuereinheit 120 und den Speichereinheiten 140 gibt
und ein beliebiger der verfügbaren
Kommunikationspfade die nächste
E/A-Anforderung von einer der beiden Taskwarteschlangen 126 und 128 bedienen
kann, muss dafür gesorgt
werden, dass die beiden Kopien der Warteschlangen jederzeit identisch
sind, um zu verhindern, dass dieselbe E/A-Anforderung zweimal ausgeführt wird.
Dies bedeutet, dass ein durchdachtes und komplexes Verriegelungsschema
verwendet werden muss, um sicherzustellen, dass eine arbeitsbereite
Teilsteuereinheit den exklusiven Zugriff auf beide Kopien der Warteschlangen
hat und dass beide Kopien der Warteschlange aktualisiert wurden, bevor
die Sperre freigegeben wird.
-
Während
die beiden Speicher-Teilsteuereinheiten der Speichersteuereinheit 120 in
Bezug auf Hardware-Ausfälle
absichtlich unabhängig
voneinander sind, ist die Kommunikation zwischen den beiden Teilsteuereinheiten
daher von ganz entscheidender Bedeutung, um die Integrität der Warteschlange
zu gewährleisten.
Die Abhängigkeit
von komplexen und komplizierten Verriegelungsschemata und Hochgeschwindigkeitsübertragungen
zwischen den Teilsteuereinheiten der Speichersteuereinheit hat eine
verminderte Systemleistung zur Folge und kann zu Leistungsengpässen führen.
-
Eine Möglichkeit, einen solchen Engpass und
die Abhängigkeit
von komplexen Verriegelungsschemata zwischen den Warteschlangen
zu beseitigen, besteht darin, auf die Speichersteuereinheit 120 zu
verzichten und die notwendige Funktion auf jede Speichereinheit
zu verlagern. Eine solche Architektur ist in 3 gezeigt, in der eine Vielzahl von Prozessoren 210 und 212 über einen
Schnittstellenbus 218 für
Kleinrechner (SCSI-Bus) mit mehreren Speichereinheiten 220 kommunizieren.
Bei dieser Architektur enthält
jede Speichereinheit 220 eine Einheitensteuereinheit 224 und
ein Speichermedium 222. Jede SCSI-Einheitensteuereinheit 224 umfasst
darüber
hinaus ihre eigene Einheiten-Taskwarteschlange 226.
-
Eine Warteschlange mit Arbeiten für eine Speichereinheit
auf Einheitenebene selbst zu verwalten, ist vom Standpunkt des Warteschlangenbetriebs aus
betrachtet effizient, aber eine solche Einheit erfordert zusätzliche
Hardware und Software und muss über
eine ausgereifte Einheitensteuereinheit verfügen. Es gibt zwar Einheiten,
die über
ausgereifte Steuereinheiten verfügen
(SCSI-Einheiten), doch besteht auch der Wunsch nach einer einfachen
Speichereinheit ohne Einheitensteuereinheit, die direkt mit einer
Speichersteuereinheit oder einer RAID-Steuereinheit oder einem an ein Netzwerk
angeschlossenen Datenserver verbunden werden kann, ohne dass dies
die mit der Verwaltung von mehreren Warteschlangen an der Speichersteuereinheit
verbundenen Probleme verursacht.
-
Ein Beispiel für eine Anordnung nach dem Stand
der Technik findet sich in der Europäischen Patentschrift
EP 0560 343 , die ein E/A-Steuersystem mit
einem E/A-Prozessor offen legt, bei dem E/A-Anforderungen in einer
Warteschlange gespeichert werden.
-
In einem Speicher-Teilsystem, das über eine Vielzahl
von Speichereinheiten verfügt,
die über
eine Vielzahl von unabhängigen
E/A-Kommunikations-(Daten-)Pfaden mit einer Speichersteuereinheit kommunizieren,
besteht folglich ein Bedarf nach einem Verfahren und einem Mittel
zur Koordination von E/A-Anforderungen, die in mehreren Taskwarteschlangen
verwaltet werden, sowie zur Löschung von
abgeschlossenen Operationen unter den unabhängigen Kommunikationspfaden,
ohne dass die Taskwarteschlangen in der Speicher-Teilsteuereinheit vollständig synchron
gehalten werden müssen, ohne
dass der Status einer jeden Speichereinheit und einer jeden Anforderung
fortlaufend zwischen den Speicher-Teilsteuereinheiten bereitgestellt
werden muss und ohne dass zwischen den Teilsteuereinheiten bei dem
Versuch, die Warteschlangen synchron zu halten, Hochgeschwindigkeitsübertragungen
stattfinden müssen.
-
Auch besteht in einem Datenverarbeitungssystem,
das über
eine Vielzahl von unabhängigen Speichersteuereinheiten
verfügt,
die über
eine Vielzahl von unabhängigen
E/A-Kommunikations-(Daten)Pfaden mit Speichereinheiten kommunizieren, ein
Bedarf nach einem Verfahren und einem Mittel zur Verarbeitung der
E/A-Anforderungen,
die in mehreren Taskwarteschlangen in den Steuereinheiten verwaltet
werden, sowie zur Löschung
von abgeschlossenen Operationen unter den unabhängigen Kommunikationspfaden,
ohne dass die Taskwarteschlangen in der Steuereinheit vollständig synchron gehalten
werden müssen,
ohne dass der Status einer jeden Speichereinheit und einer jeden
Anforderung fortlaufend zwischen den Speichersteuereinheiten bereitgestellt
werden muss und ohne dass zwischen den Speichersteuereinheiten bei
dem Versuch, die Warteschlangen synchron zu halten, Hochgeschwindigkeitsübertragungen
stattfinden müssen.
-
Offenlegung
der Erfindung
-
In einem Datenverarbeitungssystem,
das über
mehrere unabhängige
E/A-Pfade zwischen einer Speichersteuereinheit und Speichereinheiten verfügt, wobei
die Speichersteuereinheit eine Vielzahl von Speicher-Teilsteuereinheiten
umfasst und wobei jede Speicher-Teilsteuereinheit eine Taskwarteschlange (Warteschlange)
umfasst, werden gemäß der vorliegenden
Erfindung ein Verfahren und ein Mittel offen gelegt, bei denen der
Status einer jeden Warteschlange und der E/A-Anforderung (des Jobs), die
abgearbeitet oder in Ausführung
befindlich ist, den anderen Warteschlangen über ein Register mitgeteilt
wird, das an jeder Speichereinheit verwaltet wird. Dies geschieht,
indem:
- (1) jeder E/A-Anforderung eine eindeutige
Kennung zugewiesen wird, bevor die Anforderung in den Warteschlangen
gespeichert wird. Die eindeutige Kennung für jede E/A-Anforderung, die
in den Warteschlangen gespeichert wird, gewährleistet, dass eine E/A-Anforderung
aus allen Kopien der Warteschlangen entfernt wird, wenn diese Anforderung
durch eine beliebige der Speicher-Teilsteuereinheiten abgearbeitet
worden ist;
- (2) ein als "Mailbox" (elektronischer
Briefkasten) bekanntes Register in jeder Speichereinheit verwaltet
wird, das von jeder Teilsteuereinheit gelesen und/oder beschrieben
werden kann, die einen Kommunikationspfad mit dieser Einheit aufbaut. Die
Mailbox enthält
die eindeutige Kennung und den Status der zuletzt ausgeführten E/A-Anforderung
oder der E/A-Anforderung, die gerade von dieser Einheit ausgeführt wird;
und
- (3) jeder der Speicher-Teilsteuereinheiten gestattet wird, den
Inhalt der Mailbox zu lesen und in Abhängigkeit vom Inhalt der Mailbox
die geeignete Maßnahme
zu ergreifen.
-
Die geeignete Maßnahme, die von einer Speicher-Teilsteuereinheit,
welche die Mailbox einer Einheit liest, ergriffen wird, kann dazu
führen,
dass der Status der Speichereinheit geändert und der Inhalt der Mailbox aktualisiert
wird, um die Änderung des
Status widerzuspiegeln. Die Teilsteuereinheit, die die Mailbox liest,
kann ihre Kopie der Warteschlange auf der Grundlage des soeben Gelesenen ebenfalls
aktualisieren.
-
Auf der Grundlage der hier offen
gelegten Erfindung sind die Kopien der Warteschlangen daher nicht
unbedingt synchron. Tatsächlich
könnten
die Warteschlangen vollkommen unsynchron sein, ohne doppelte Arbeit
und Probleme mit der Datenintegrität zu verursachen oder die Verarbeitung
der E/A-Anforderungen
zu verlangsamen.
-
Wenn der Host beispielsweise eine
Anforderung, Daten aus der Speichereinheit A zu lesen, ausgibt,
wird der Anforderung ein eindeutiger Bezeichner x von der Speichersteuereinheit
zugewiesen, bevor die Anforderung in den Taskwarteschlangen gespeichert
wird. Sobald die Einheit A verfügbar
wird, wird die Anforderung für
den Zugriff auf die Einheit A über alle
verfügbaren
Kommunikationspfade versendet. Wenn der Pfad 1 der erste
ist, der in den Besitz der Einheit A kommt, gibt er den Befehl "suchen/finden" aus, um die Einheit
auf die Datenübertragung
vorzubereiten. Die Einheit A speichert dann den eindeutigen Bezeichner
x in ihrer Mailbox und setzt den Zustand der E/A-Operation so, dass
dieser anzeigt, dass der Befehl an die Einheit A ausgegeben wurde, um
sie auf die Datenübertragung
vorzubereiten. Der Pfad 1 gibt dann die Einheit A frei
und führt
andere Operationen aus, während
die Einheit A sich auf die Datenübertragung
vorbereitet. Unter der Annahme, dass der Pfad 2 der erste
Pfad ist, der feststellt, dass die Einheit A zur Datenübertragung
bereit ist, ist der Ablauf wie folgt: Der Pfad 2 liest
die Mailbox der Einheit A und stellt fest, dass die Anforderung
mit dem eindeutigen Bezeichner x in Ausführung befindlich ist, er ordnet
die Datenübertragung
der Anforderung mit dem Bezeichner x in seiner Taskwarteschlange zu
und führt
dann die Datenübertragung
aus. Sobald die Datenübertragung
abgeschlossen ist, wird der Zustand dieser bestimmten E/A- Anforderung
an der Einheit A auf "abgeschlossen" gesetzt, um zu zeigen, dass
die zu dem eindeutigen Bezeichner x gehörende Anforderung ausgeführt worden
ist. Wenn man annimmt, dass der Pfad 1 nun versucht, die
Mailbox der Einheit A zu lesen, wird er, sobald er sie liest, feststellen,
dass die Anforderung, der der eindeutige Bezeichner x zugeordnet
ist, bereits über
einen anderen Pfad abgearbeitet worden ist. Folglich löscht der
Pfad 1 die Anforderung, der der eindeutige Bezeichner x zugeordnet
ist, aus seiner eigenen Taskwarteschlange und gibt dann die Einheit
A frei.
-
Durch die Verwendung eines eindeutigen Bezeichners
für jede
in den Taskwarteschlangen gespeicherte E/A-Anforderung in Verbindung
mit einer Mailbox an jeder Speichereinheit wird verhindert, dass
dieselbe Anforderung mehr als einmal von den Speicher-Teilsteuereinheiten
ausgeführt
wird. Gleichzeitig können
dadurch die Taskwarteschlangen asynchron aktualisiert werden, ohne
die Leistungsfähigkeit
eines Speichersystems zu beeinträchtigen.
Verwendet man außerdem
einen eindeutigen Bezeichner für
jede E/A-Anforderung in Verbindung mit einer Mailbox an jeder Speichereinheit,
entfällt
die Notwendigkeit für
komplizierte und komplexe Sperrschritt-Schemata, um sicherzustellen,
dass die Taskwarteschlange in jeder Speicher-Teilsteuereinheit synchron zu den Taskwarteschlangen
in den anderen Speicher-Teilsteuereinheiten ist. Durch die Verwendung
der vorliegenden Erfindung entfällt
auch die Notwendigkeit, eine direkte Hochgeschwindigkeitsübertragung
zwischen Speicher-Teilsteuereinheiten zu ermöglichen, um den Status der
Warteschlangen schnell und regelmäßig zu übertragen, da die Taskwarteschlangen
nicht synchron sein müssen.
-
Kurze Beschreibung
der Zeichnungen
-
Die Erfindung wird nun lediglich
anhand eines Beispiels mit Bezug auf die beigefügten Zeichnungen beschrieben,
in denen:
-
1 ein
Datenverarbeitungssystem nach dem Stand der Technik zeigt, dessen
Host mit einem Speicher-Teilsystem kommuniziert;
-
2 ein
weiteres Datenverarbeitungssystem nach dem Stand der Technik zeigt,
das über
eine Vielzahl von Taskwarteschlangen an der Speichersteuereinheit
verfügt;
-
3 ein
weiteres Datenverarbeitungssystem nach dem Stand der Technik zeigt,
das eine Taskwarteschlange in jeder Einheit hat;
-
4 die
bevorzugte Ausführungsform
der vorliegenden Erfindung zeigt;
-
5 eine
ausführliche
Prinzipdarstellung der in 4 gezeigten
Matrixsteuereinheit (array controller) ist;
-
6 eine
Mailbox zeigt, die in jeder Speichereinheit gespeichert wird;
-
7 ein
Flussdiagramm der Abwicklung von E/A-Anforderungen in der bevorzugten
Ausführungsform
der vorliegenden Erfindung ist;
-
8 eine
alternative Ausführungsform
der vorliegenden Erfindung zeigt;
-
9 eine
weitere alternative Ausführungsform
der vorliegenden Erfindung zeigt; und
-
10 noch
eine weitere alternative Ausführungsform
der vorliegenden Erfindung zeigt.
-
Ausführliche
Beschreibung der Erfindung
-
Bezug nehmend auf 4 ist die bevorzugte Ausführungsform
der vorliegenden Erfindung gezeigt. Das Datenverarbeitungssystem 300 umfasst einen
Host 310, der mit der Speichersteuereinheit 320 kommuniziert,
wobei die Speichersteuereinheit mit der Speichermatrix 340 kommuniziert.
Die Speichermatrix 340 umfasst des Weiteren eine Matrixsteuereinheit 350,
die den Zugriff auf die Speichereinheiten 345 steuert.
In dieser Ausführungsform werden
die Speichereinheiten, die normalerweise an die Speichersteuereinheit 320 angeschlossen
werden, durch die Speichermatrix 340 ersetzt. Die Speichermatrix 340 kann
dann als eine logische Speichereinheit vom Typ IBM 3390 behandelt
werden. Das heißt,
die Speichermatrix 340 kann den Anschluss von standardmäßigen Speichereinheiten
an die Speichersteuereinheit 320 ermöglichen, indem sie die zuvor
vorhandenen Speichereinheiten wie zum Beispiel das Speicher-Teilsystem IBM 3390 emuliert.
Außerdem
kann die Matrixsteuereinheit 350 in Verbindung mit den
Speichereinheiten 345 über
Architekturen wie zum Beispiel zuverlässige Systeme aus mehreren
Plattenlaufwerken mit automatischer Redundanz der Ablage von Informationen
(RAID) eine äußerst hohe
Datenverfügbarkeit
bieten.
-
Nochmals Bezug nehmend auf 4 umfasst der Host 310 ein
Anwendungsprogramm 312, ein Betriebssystem 314,
eine E/A-Überwachungseinrichtung 316 und
eine Vielzahl von E/A-Kanälen
318 zur Kommunikation mit der Speichersteuereinheit 320.
Die Speichersteuereinheit 320 umfasst im Allgemeinen eine
Vielzahl von E/A-Anschlüssen
(I/O ports) 322 zur Kommunikation mit dem Host 310,
einen gemeinsam benutzten Cachespeicher 324 für hohe Leistungsfähigkeit
und zwei Speicher-Teilsteuereinheiten 331 und 332 für den Zugriff
auf die Speichermatrix 340. Die Speicher-Teilsteuereinheit 331 umfasst
eine Speichereinheit-Taskwarteschlange 326 und
die Steuereinheit-Pfade 333 und 334. Die Speicher-Teilsteuereinheit 332 umfasst
eine Steuereinheit-Taskwarteschlange 328 und
die Steuereinheit-Pfade 335 und 336. Die Speichersteuereinheit 320 kommuniziert
mit der Speichermatrix 340 über eine Vielzahl von Übertragungsleitungen 380.
-
5 ist
eine ausführliche
Prinzipdarstellung der Matrixsteuereinheit 350, die mit
den Speichereinheiten 345 und der Speichersteuereinheit 320 kommuniziert.
Die Matrixsteuereinheit 350 umfasst zwei identische unabhängig voneinander
arbeitende Steuereinheit-Pfade 352 und 354. Die
Steuereinheit-Pfade 352 und 354 sorgen zusammen
für eine verbesserte
Leistungsfähigkeit
und einen fehlertoleranten Betrieb. In der bevorzugten Ausführungsform kommuniziert
die Matrixsteuereinheit 350 mit der Speichersteuereinheit 320 über eine
Vielzahl von Kommunikationsverbindungen 380 (in diesem
Beispiel sind vier gezeigt). Die Matrixsteuereinheit 350 umfasst
des Weiteren eine Vielzahl von Speicherschnittstellenadaptern 400 (in
diesem Beispiel sind vier gezeigt, zwei in jedem Steuereinheit-Pfad).
Die Speicherschnittstellenadapter 400 empfangen Befehle
(Anweisungen, Anforderungen) für
den Zugriff auf die Speichereinheiten 345 von der Speichersteuereinheit 320 und
stellen zunächst
fest, ob eine von der Speichersteuereinheit 320 ausgegebene
Anforderung entweder vom Pufferspeicher 416 oder vom Pufferspeicher 418 erfüllt werden
kann. Die Pufferspeicher 416 und 418 speichern
von den Einheiten und von der Speichersteuereinheit empfangene Daten.
Wenn die Anforderung aus dem Inhalt von einem der beiden Pufferspeicher
erfüllt
werden kann, wird diese Information über einen der Speicherschnittstellenadapter 400 an
die Speichersteuereinheit 320 zurückübermittelt. Für jede Anforderung,
die nicht aus dem Inhalt von einem der Pufferspeicher erfüllt werden
kann, erzeugt einer der Speicherschnittstellenadapter eine eindeutige
Anforderungskennung (auch "Bezeichner" genannt) und sendet
die Anforderung mit ihrer eindeutigen Kennung an die Matrix-Verwaltungseinrichtungen
(array managers) 412 und 414. Die Matrix-Verwaltungseinrichtungen 412 und 414 fügen die
Anforderung und ihren Bezeichner wiederum ihren jeweiligen Warteschlange 413 und 415 hinzu.
-
Die Matrix-Verwaltungseinrichtungen 412 und 414 sind
im Allgemeinen für
die Verwaltung der Datenabwicklung zwischen der Speichersteuereinheit 320 und
den Speichereinheiten 345 zuständig. Darüber hinaus setzen sie das Datenformat
zwischen den Speichereinheiten 345 (ursprüngliches Format)
und der emulierten Einheit (das Format aus Sicht der Speichersteuereinheit 320)
um. Beispielsweise könnten
die Daten in den Speichereinheiten 345 als festes Blockformat
(ursprüngliches
Format der Einheiten) gespeichert werden.
-
Andererseits kann die Speichersteuereinheit 320 so
konfiguriert sein, dass sie die Daten in einem Count-Key-Data-Format handhabt.
Daher stellen die Matrix-Verwaltungseinrichtungen 412 und 414 die Umsetzungsfunktion
zwischen diesen beiden verschiedenen Datenformatarten bereit. Jede
Matrix-Verwaltungseinrichtung verwaltet überdies ihre eigene Taskwarteschlange.
Beispielsweise verwaltet die Matrix-Verwaltungseinrichtung 412 die
Matrix-Taskwarteschlange 413, und die Matrix-Verwaltungseinrichtung 414 verwaltet
die Matrix-Taskwarteschlange 415. Jede Matrixverwaltungseinrichtung aktualisiert
ihre eigene Matrix-Taskwarteschlange
auf der Grundlage von Nachrichten, die sie von einem beliebigen
der Speicherschnittstellenadapter 400 empfängt, und
auf der Grundlage des Inhalts der Mailbox in jeder Speichereinheit.
Die Matrix-Verwaltungseinrichtungen 412 und 414 handhaben
darüber hinaus
die Zuteilung von Einheitenoperationen an die Speichereinheiten 345 über die
Einheitenschnittstellenadapter 440 beziehungsweise 442.
-
In der bevorzugten Ausführungsform
enthält jeder
Matrixsteuereinheit-Pfad 352 und 354 vier Einheitenschnittstellenadapter.
Die Matrixverwaltungseinrichtungen 412 und 414 benachrichtigen überdies die
Einheitenschnittstellenadapter 440 beziehungsweise 442,
wenn eine Anforderung für
den Zugriff auf eine Einheit oder auf Daten zur Übertragung bereit ist. Über den Übertragungsbus 410, über den
sie sich über
die Ereignisse benachrichtigen können,
die sich gegebenenfalls auf die Operationen ihrer jeweiligen Matrixsteuereinheit-Pfade 352 und 354 auswirken, kommunizieren
die Matrix-Verwaltungseinrichtungen 412 und 414 auch
miteinander. Die Matrix-Verwaltungseinrichtungen 412 und 414 können des
Weiteren Exklusiv-ODER-(XOR-)RAID-Funktionen enthalten, um die Parität über alle
Speichereinheiten 345 hinweg aufrechtzuerhalten, so dass
die redundante Aufzeichnung von Daten- und fehlertoleranten Operationen
sichergestellt wird.
-
Wie vorstehend erwähnt wurde,
ermöglichen die
Einheitenschnittstellenadapter 440 und 442 den Zugriff
auf die Einheiten 345 und die Operationen der Steuerspeichereinheiten.
Die Einheitenschnittstellenadapter stellen ihrer jeweiligen Matrix-Verwaltungseinrichtung
auch den Status der Operationen bereit. 5 zeigt des Weiteren eine Vielzahl von Speichereinheiten 345 (in
diesem Beispiel sind 32 Einheiten gezeigt und mit SD1 bis SD32 gekennzeichnet),
wobei jede Einheit über
eine Mailbox 500 verfügt.
In 5 sind die Speichereinheiten 345 in vier
Gruppen angeordnet, wobei jede Gruppe acht Einheiten enthält. Die
Matrixsteuereinheit-Pfade 352 und 354 können über ihre
jeweiligen Einheitenschnittstellenadapter 440 und 442 unabhängig voneinander
auf die Einheiten 345 zugreifen. Jeder Einheitenschnittstellenadapter
kann auf vier Speichereinheiten, auf eine von jeder Gruppe, gleichzeitig
zugreifen.
-
Bezug nehmend auf 6 ist
die Mailbox 500 einer Einheit dargestellt, die in jeder
der Speichereinheiten 345 verwaltet wird. In der bevorzugten Ausführungsform
umfasst die Mailbox 500 ein 8-Byte-Feld zur Speicherung
der eindeutigen Anforderungskennung 510 (Task-ID) und des
Status 520 (Task-Status)
der letzten Anforderung, die eine Speichereinheit von der Matrixsteuereinheit 350 empfangen
hat. Die eindeutigen Anforderungs-(Task-)Kennungen (IDs) 510 sind
im Interesse einer einfachen Handhabung und eines einfachen Ablaufs vorzugsweise,
aber nicht notwendigerweise, fortlaufend. Die Mailbox 500 kann
auch Informationen wie zum Beispiel die Kennung des Einheitenschnittstellenadapters
enthalten, von dem die Anforderung empfangen wurde. Die Mailbox 500 kann
auch Informationen wie zum Beispiel die Zugehörigkeit der Einheit enthalten.
-
Bezug nehmend auf 7 ist ein Flussdiagramm des Einheitenzugriffs
und des Ablaufs der Warteschlangenverwaltung gezeigt, die von den
Matrix-Verwaltungseinrichtungen 412 und 414 in
der bevorzugten Ausführungsform
der vorliegenden Erfindung durchgeführt wird. Der Ablauf wird mit
Bezug auf die Matrix-Verwaltungseinrichtung 412 beschrieben,
obgleich er genauso auf die Matrix-Verwaltungseinrichtung 414 zutrifft.
-
Die Matrix-Verwaltungseinrichtung 412 stellt zunächst fest,
ob von der Matrix-Verwaltungseinrichtung 414 über den Übertragungsbus 410 (Block 705) eine
Nachricht hinsichtlich des Status der Warteschlangen empfangen wurde.
Die Matrix-Taskwarteschlange 413 wird
entsprechend aktualisiert, wenn eine solche Nachricht empfangen
wird (Block 706), andernfalls stellt die Matrix-Verwaltungseinrichtung 412 fest,
ob eine Unterbrechung von einer der Einheiten 345 empfangen
wurde (Block 710). Wenn eine Einheitenunterbrechung von
der Einheit n empfangen wird, wird die Einheit n ausgewählt, und
ihre Mailbox wird gelesen, um die Task-ID (Anforderungs-ID) und
den Status der zuletzt an die Einheit n gesandten Anforderung festzustellen
(Blöcke 712 und 715).
Nehmen wir an, dass der Inhalt des Mailbox-Registers anzeigt, dass
die Task mit der eindeutigen fortlaufenden ID "R" (die
einfach als Task "R" bezeichnet wird)
in Ausführung
befindlich ist. Die Matrix-Verwaltungseinrichtung 412 aktualisiert
dann die Matrix- Taskwarteschlange 413 und
löscht
alle Anforderungen, deren eindeutige fortlaufende ID kleiner "R" sind, und aktualisiert die Warteschlange 413,
um zu zeigen, dass die Task "R" in Ausführung befindlich ist
(Block 716). Die Matrix-Verwaltungseinrichtung 412 gibt
dann an die Einheit n einen Befehl aus, die Task "R" abzuarbeiten (Block 717) und
aktualisiert gleichzeitig die Mailbox in der Einheit n, um festzuhalten,
dass die "Task R
abgearbeitet ist" (Block 718). Die
Matrix-Verwaltungseinrichtung 412 nimmt dann die Auswahl
der Einheit n zurück
und löscht
die Task "R" aus ihrer Matrix-Taskwarteschlange 413 (Block 720).
-
Nochmals Bezug nehmend auf den Block 715 aktualisiert
die Matrix-Verwaltungseinrichtung 412 die Matrix-Taskwarteschlange 413,
indem sie die Task "R" und alle Anforderungen,
deren eindeutige fortlaufende ID kleiner "R" sind,
löscht,
wenn der Inhalt des Mailbox-Registers in der Einheit n angibt, dass
die Task "R" abgearbeitet worden
ist (Block 725). Die MatrixVerwaltungseinrichtung 412 prüft dann
die Matrix-Taskwarteschlange 413,
um festzustellen, ob es noch weitere Tasks in der Warteschlange
für die
Einheit n gibt (Block 726); wenn nicht, kehrt die Operation
zum Block 700 zurück.
wenn es eine Task "S" für die Einheit
n gibt, gibt die Matrix-Verwaltungseinrichtung 412 Befehle
aus, um die Ausführung
der Task "S" einzuleiten (Block 727),
die Mailbox wird aktualisiert, um zu zeigen, dass die Task "S" in Ausführung befindlich ist (Block 728),
die Auswahl der Einheit n wird zurückgenommen, und der Status der
Task "S" in der Warteschlange 413 wird
aktualisiert (Block 729).
-
Kehren wir nochmals zum Block 710 zurück. Wenn
die Matrix-Verwaltungseinrichtung 412 keine Unterbrechung
von einer Einheit empfängt,
prüft sie die
Warteschlange 413, um festzustellen, welches die nächste auszuführende Task
ist und für
welche Einheit sie ausgeführt
werden soll (Block 740). Nehmen wir an, dass die nächste von
der Matrixverwaltungseinrichtung 412 gemäß ihrer
Warteschlange 413 auszuführende Task die Task "T" für
die Einheit n ist. Die Matrix-Verwaltungseinrichtung 412 gibt
dann Befehle aus, um die Einheit n auszuwählen und ihre Mailbox zu lesen,
um die ID und den Status der zuletzt an die Einheit n ausgegebenen
Task festzustellen (Block 742). Wenn die Task-ID in der
Mailbox der Einheit n kleiner "T" ist (Block 745)
und ihr Status "in Ausführung befindlich" lautet (Block 770),
ist ein Fehler aufgetreten, und der Fehler wird der Matrix-Verwaltungseinrichtung 412 gemeldet
(Block 775). Wenn die Task-ID in der Mailbox der Einheit
n kleiner "T" ist (Block 745)
und ihr Status "abgearbeitet" lautet, gibt die
Matrix-Verwaltungseinrichtung
Befehle aus, um die Task "T" einzuleiten, sie
aktualisiert die Mailbox für
die Einheit n, um zu zeigen, dass die Task "T" in
Ausführung
befindlich ist, und nimmt dann die Auswahl der Einheit n zurück und aktualisiert
den Status der Task "T" in der Matrix-Taskwarteschlange 413 (Blöcke 771, 772 und 773).
-
Wenn die Task-ID in der Mailbox der
Einheit n "U" lautet, was größer als "T" ist (Block 745), und der Status
der Task "U" "abgeschlossen" lautet, löscht die Matrix-Verwaltungseinrichtung 412 die Tasks "T" und "U" aus
der Warteschlange 413 (Block 755) und stellt fest,
ob es noch eine weitere Task in der Warteschlange 413 für die Einheit
n gibt (Block 756); wenn nicht, kehrt die Operation zum
Block 700 zurück.
Wenn es für
die Einheit n eine Task "V" in der Warteschlange 413 gibt,
gibt die Matrix-Verwaltungseinrichtung
412 Befehle aus,
um die Ausführung
der Task "V" einzuleiten (Block 757),
die Mailbox wird aktualisiert, um zu zeigen, dass die Task "V" in Ausführung befindlich ist (Block 758),
und die Auswahl der Einheit n wird zurückgenommen, und der Status
der Task "V" in der Warteschlange 413 wird
aktualisiert (Block 759).
-
Wenn die Task-ID in der Mailbox der
Einheit n "U" lautet, was größer als "T" ist (Block 745), und der Status
der Task "U" "in Ausführung befindlich" lautet, aktualisiert
die Matrix-Verwaltungseinrichtung 412 die
Matrix-Taskwarteschlange 413 und löscht alle Tasks (Anforderungen),
deren Task-IDs kleiner "U" sind, und aktualisiert
die Warteschlange 413, um zu zeigen, dass die Task "U" in Ausführung befindlich ist (Block 751).
Die Matrix-Verwaltungseinrichtung 412 gibt dann einen Befehl
an die Einheit n aus, die Task "U" abzuarbeiten (Block 752),
und gleichzeitig aktualisiert sie die Mailbox in der Einheit n,
um festzuhalten, dass die "Task
U abgearbeitet ist" (Block 753).
Die Matrix-Verwaltungseinrichtung 412 nimmt dann die Auswahl
der Einheit n zurück
und löscht
die Task "U" aus ihrer Matrix-Taskwarteschlange 413 (Block 754).
-
Nun allgemein Bezug nehmend auf die 4 bis 7 werden der Betrieb der Taskwarteschlangen 413 und 415 und
die Verwendung der Mailbox anhand des folgenden Beispiels näher erklärt. Nehmen
wir an, dass die Taskwarteschlange 413 eindeutige fortlaufend
nummerierte Anforderungen 25 und 26 für die Speichereinheit 8 (SD8)
enthält.
Die Anforderung 25 befindet sich ganz am Anfang der Warteschlange
(was bedeutet, dass sie die nächste
auszuführende
Operation ist). Die Matrix-Verwaltungseinrichtung 412 gibt
dann einen Befehl über
den Einheitenschnittstellenadapter 440 aus, um festzustellen, ob die
Speichereinheit 8 verfügbar
oder beschäftigt ist.
Wenn die Speichereinheit 8 beschäftigt ist, wird diese Information
an die Matrix-Verwaltungseinrichtung 412 zurück übermittelt,
die sich dann gegebenenfalls dafür
entscheidet, Anforderungen für
andere Einheiten auszuführen,
bevor sie einen weiteren Versuch unternimmt, mit der Speichereinheit 8 zu
kommunizieren. Wenn die Speichereinheit 8 andererseits verfügbar ist,
wählt die
Matrix-Verwaltungseinrichtung 412 die Einheit 8 aus
und liest sofort die Mailbox 500 in der Speichereinheit 8,
um den Status der letzten Anforderung festzustellen, die von der
Speichereinheit 8 ausgeführt wurde. wenn die Mailbox 500 zeigt,
dass die letzte Anforderung, die abgearbeitet wurde, die Anforderung
Nummer 24 war, gibt die Matrix-Verwaltungseinrichtung 412 an
die Speichereinheit 8 den Befehl "suchen/finden" für
die Anforderung 25 aus. Sie aktualisiert dann die Mailbox,
um zu zeigen, dass die Anforderung 25 in Ausführung befindlich
ist. Dies geschieht, indem der Task-Status 520 auf "p" (wobei "p" für "in Ausführung befindlich" ("in progress") steht) gesetzt
wird. Die Matrix-Verwaltungseinrichtung 412 nimmt
dann die Auswahl der Speichereinheit 8 zurück und aktualisiert
die Warteschlange 413, um zu zeigen, dass die Anforderung 25 in
Ausführung
befindlich ist. Die Matrix-Verwaltungseinrichtung 412 kann über den Übertragungsbus 410 auch
eine Nachricht an die Matrix-Verwaltungseinrichtung 414 senden
und diese darüber
informieren, dass die Anforderung 25 in Ausführung befindlich
ist. Die Matrix-Verwaltungseinrichtung 412 kann dann in
den Ruhezustand zurückkehren
oder eine Verbindung mit den anderen Einheiten aufbauen.
-
Wenn die Matrix-Verwaltungseinrichtung 412 andererseits
die Speichereinheit 8 auswählt und, nachdem sie die Mailbox 500 gelesen
hat, feststellt, dass der Befehl "suchen/finden" für
die Anforderung 25 bereits in Ausführung befindlich ist, aktualisiert
die Matrix-Verwaltungseinrichtung 412 die Warteschlange 413,
um zu zeigen, dass die Anforderung 25 in Ausführung befindlich
ist, sie gibt dann Befehle an die Speichereinheit 8 aus,
um die Anforderung 25 abzuarbeiten, aktualisiert die Mailbox,
um die Änderung des
Status anzuzeigen, nimmt die Auswahl der Speichereinheit 8 zurück und löscht die
Anforderung 25 aus der Warteschlange 413.
-
Wenn die Matrix-Verwaltungseinrichtung 412 alternativ
dazu eine Kommunikationsverbindung mit der Speichereinheit 8 aufbaut,
um die Anforderung 25 auszuführen, und, nachdem sie die
Mailbox der Einheit 8 gelesen hat, feststellt, dass der
Befehl "suchen/finden" für die Anforderung 26 bereits
in Ausführung
befindlich ist, kommt die Matrix-Verwaltungseinrichtung 412 zu
dem Schluss, dass die Anforderung 25 bereits von der Matrix-Verwaltungseinrichtung 414 abgearbeitet
worden ist. Die Matrix-Verwaltungseinrichtung 412 nimmt
dann die Auswahl der Speichereinheit 8 zurück und löscht die
Anforderung 25 aus der Warteschlange 413. Sie
aktualisiert auch die Warteschlange 413, um zu zeigen,
dass die Anforderung 26 in Ausführung befindlich ist, und kehrt anschließend in
den Ruhezustand zurück.
-
Wenn die Matrix-Verwaltungseinrichtung 412 andererseits
versucht, die Anforderung 25 für die Speichereinheit 8 auszuführen und,
indem sie die Mailbox 500 liest, feststellt, dass die Anforderung 26 bereits
abgearbeitet worden ist, kommt sie zu dem Schluss, dass die Anforderung 25 ebenfalls
schon abgearbeitet worden ist und dass beide Anforderungen 25 und 26 von
der Matrix-Verwaltungseinrichtung 414 bedient wurden. Die Matrix-Verwaltungseinrichtung 412 löscht dann
beide Anforderungen 25 und 26 aus der Warteschlange 413 und
durchsucht anschließend
diese Warteschlange, um festzustellen, ob es in der Warteschlange 413 weitere
Anforderungen für
die Einheit 8 gibt. Wenn eine solche Anforderung gefunden
wird, versucht sie, diese auszuführen.
Wenn in der Speichereinheit 8 keine solche Anforderung
gefunden wird, nimmt sie die Auswahl der Speichereinheit 8 zurück und durchsucht
die Warteschlange 413 nach Anforderungen für andere
Einheiten.
-
Auf der Grundlage der ausführlichen
Beschreibung und der gegebenen Beispiele lässt sich daher ohne weiteres
erkennen, dass die Bedienung einer Anforderung, die eine Vielzahl
von Teilbefehlen (zwei, drei oder mehr Teilbefehle) hat, von einer
Matrix-Verwaltungseinrichtung mit Hilfe der Informationen in ihrer
eigenen jeweiligen Matrix-Taskwarteschlange eingeleitet werden kann
und dass dieselbe Anforderung von einer anderen Matrix-Verwaltungseinrichtung
weiter ausgeführt
oder abgearbeitet werden kann. Es lässt sich ebenfalls ohne weiteres
erkennen, dass mehrere Anforderungen, die in beiden Matrix-Taskwarteschlangen
vorhanden sind, nur von einer der Matrix-Verwaltungseinrichtungen
bedient werden können,
falls die andere Matrix-Verwaltungseinrichtung nie Zeit haben sollte,
an einem solchen Bedienungsvorgang teilzunehmen.
-
Wenn an jeder Speichereinheit ein
Mailbox-Register verwendet wird, stellt dies jedoch eine einfache
und wirkungsvolle Möglichkeit
dar, jeder Matrix-Verwaltungseinrichtung in einer Matrixsteuereinheit
den Status einer jeden Anforderung zur Verfügung zu stellen. Somit könnten Warteschlangen
in jedem Steuereinheit-Pfad vollkommen unsynchron sein, ohne dass
es Probleme mit der Datenintegrität oder die Möglichkeit
gäbe, dass
dieselbe Anforderung doppelt ausgeführt würde. Durch eine eindeutige
Kennzeichnung der Anforderungen in Verbindung mit der Verwendung
einer Mailbox an jeder Speichereinheit kann der Status einer jeden
Anforderung (abgeschlossen, in Ausführung befindlich, in den Warteschlangen
auf Ausführung
wartend) zwischen den Matrix-Verwaltungseinrichtungen übermittelt
werden, ohne dass eine getrennte Hochgeschwindigkeits-Kommunikationsverbindung
oder ein komplexes Verriegelungsschema notwendig ist, um sicherzustellen,
dass die Matrix-Taskwarteschlangen jederzeit synchron sind.
-
8 zeigt
eine alternative Ausführungsform
der vorliegenden Erfindung. Das Datenverarbeitungssystem 800 umfasst
einen Host 810, der mit der Speichersteuereinheit 820 kommuniziert,
wobei die Speichersteuereinheit direkt mit den Speichereinheiten 840 kommuniziert.
Im Gegensatz zu der in den 4 und 5 gezeigten bevorzugten Ausführungsform
steuert die Speichersteuereinheit 820 in dieser Ausführungsform
direkt den Zugriff auf die Einheiten 840. Der Host umfasst
die Anwendungsprogramme 812, das Betriebssystem 814,
die E/A-Überwachungseinrichtung 816 und
eine Vielzahl von Übertragungskanälen 818.
-
Die Speichersteuereinheit 820 umfasst
eine Vielzahl von E/A-Anschlüssen 822 zur
Kommunikation mit dem Host 810, einen gemeinsam benutzten Cachespeicher 824 und
zwei Speicher-Teilsteuereinheiten 831 und 832.
Die Speicher-Teilsteuereinheit 831 umfasst
eine Taskwarteschlange 826 und einen Steuereinheit-Pfad 829.
Die Speicher-Teilsteuereinheit 832 umfasst eine Taskwarteschlange 828 und
einen Steuereinheit-Pfad 830. Jeder Steuereinheit-Pfad
umfasst zudem einen Prozessor und eine Speichereinheit. Die Speicher- Teilsteuereinheiten 831 und 832 kommunizieren
mit den Speichereinheiten 840 über die Übertragungskanäle 846 und 847. Jede
der Speichereinheiten 840 umfasst eine Mailbox, die die
eindeutige ID und den Status der zuletzt von jeder der Speichereinheiten
ausgeführten
Anforderung speichert. Der Vorgang des Zugriffs auf die Einheiten,
des Lesens der elektronischen Briefkästen und der Verwaltung der
Taskwarteschlangen durch die Speicher-Teilsteuereinheiten ist ähnlich dem
Vorgang bei der bevorzugten Ausführungsform
der vorliegenden Erfindung. Man beachte, dass die Taskwarteschlangen 826 und 828 in
dieser Ausführungsform
vollkommen unsynchron sein könnten, ohne
den Systembetrieb zu verlangsamen oder Probleme mit der Datenintegrität sowie
doppelt ausgeführte
Anforderungen zu verursachen.
-
9 zeigt
eine weitere alternative Ausführungsform
der vorliegenden Erfindung, die ähnlich der
in 8 gezeigten Ausführungsform
ist. In dieser alternativen Ausführungsform
umfasst das Datenverarbeitungssystem 900 eine Speichersteuereinheit 920,
wobei die Speichersteuereinheit vier Speicher-Teilsteuereinheiten 930, 931, 932 und 933 umfasst.
Jede Speicher-Teilsteuereinheit hat außerdem ihre eigene Taskwarteschlange.
In dieser Ausführungsform
gibt es daher vier Taskwarteschlangen in der Speichersteuereinheit,
die vom Host 910 ausgegebene Anforderungen bedienen können. Bei
Verwendung der hier offen gelegten Erfindung könnten die Taskwarteschlangen
vollkommen unsynchron sein, ohne Probleme mit der Datenintegrität sowie doppelt
ausgeführte
Anforderungen auf der Einheitenebene zu verursachen oder komplizierte
Verriegelungsschemata für
die Warteschlangen erforderlich zu machen.
-
10 zeigt
eine weitere alternative Ausführungsform
der vorliegenden Erfindung, bei der ein Host mit den Speichereinheiten über eine
Vielzahl von Speichersteuereinheiten, die in einem Netzwerk miteinander
verbunden sind, kommunizieren kann. In dieser alternativen Ausführungsform
umfasst das Datenverarbeitungssystem 1000 einen Host 1010, eine
Vielzahl von Speichersteuereinheiten 1020A, 1020B,
... und 1020N sowie die Speichereinheiten 1040.
Jede Speichersteuereinheit umfasst einen Cachespeicher und kann
auch eine oder mehrere Speicher-Teilsteuereinheiten umfassen, wobei
jede Speicher-Teilsteuereinheit ihre eigene Taskwarteschlange hat.
In dieser Ausführungsform
wird daher eine Anforderung des Host 1010 an zwei oder
mehrere Steuereinheiten zur Verarbeitung gesandt. Die eindeutige
Task-ID der Anforderung
wird vorzugsweise, aber nicht notwendigerweise, vom Host 1010 zur
selben Zeit erzeugt, zu der die Anforderung erzeugt und an die Steuereinheiten
gesendet wird. Wenn die Anforderung nicht anhand der bereits in
den Cachespeichern abgelegten Informationen verarbeitet werden kann,
wird sie in den Taskwarteschlangen gespeichert und verarbeitet,
indem ähnlich
wie bei der bevorzugten Ausführungsform
der vorliegenden Erfindung auf die Speichereinheiten 1040 zugegriffen wird.
Bei Verwendung der hier offen gelegten Erfindung könnten die
Taskwarteschlangen in verschiedenen Steuereinheiten vollständig unsynchron
sein, ohne Probleme mit der Datenintegrität sowie doppelt ausgeführte Anforderungen
auf Einheitenebene zu verursachen oder komplizierte Verriegelungsschemata
für die
Warteschlangen erforderlich zu machen.
-
Mehrere Ausführungsformen der vorliegenden
Erfindung wurden beschrieben. Dennoch versteht es sich, dass verschiedene Änderungen
vorgenommen werden können,
ohne vom Umfang der Erfindung abzuweichen. Beispielsweise kann die
Anzahl der Taskwarteschlangen beliebig groß sein, ohne die hier offen
gelegte Erfindung zu beschränken.
Die Mailbox kann so erweitert werden, dass sie zusätzliche
Informationen wie zum Beispiel den Verlauf der letzten n Anforderungen,
die von einer beliebigen Einheit abgewickelt wurden, und die Angabe, welcher
Pfad die Anforderungen ausgelöst
oder abgearbeitet hat, festhält.
Die Mailbox kann darüber
hinaus Informationen wie zum Beispiel abgebrochene Anforderungen
und die Angabe, ob der Zugriff auf die Einheiten auf einen bestimmten
Pfad beschränkt
ist, enthalten.