DE3485821T2 - Verfahren und mechanismus zum arbeitslastausgleich in einem mehreinheitensystem. - Google Patents

Verfahren und mechanismus zum arbeitslastausgleich in einem mehreinheitensystem.

Info

Publication number
DE3485821T2
DE3485821T2 DE19843485821 DE3485821T DE3485821T2 DE 3485821 T2 DE3485821 T2 DE 3485821T2 DE 19843485821 DE19843485821 DE 19843485821 DE 3485821 T DE3485821 T DE 3485821T DE 3485821 T2 DE3485821 T2 DE 3485821T2
Authority
DE
Germany
Prior art keywords
data
work
unit
programmable
cache
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
DE19843485821
Other languages
English (en)
Other versions
DE3485821D1 (de
Inventor
Michael Howard Hartung
Arthur Herbert Nolta
David Gordon Reed
Gerald Ellsworth Tayler
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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
Priority claimed from US06/469,680 external-priority patent/US4633387A/en
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Application granted granted Critical
Publication of DE3485821D1 publication Critical patent/DE3485821D1/de
Publication of DE3485821T2 publication Critical patent/DE3485821T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)

Description

  • Die vorliegende Erfindung bezieht sich auf das Paging von Datenspeichersystemen unter Verwendung eines Hintergrundspeichers, beispielsweise einer direkten Zugriffsspeichereinrichtung DASD (Direct Access Storage Device), und eines Vordergrundspeichers, der als Cache-Speicher dient und vorzugsweise aus einem beliebigen Zugriffsspeicher (RAM) besteht.
  • Paging- und Swapping-Speicher stehen in unterschiedlichen Konfigurationen zur Verfügung. Beispielsweise werden verschiedene direkte Zugriffsspeichereinrichtungen (RAM) direkt für die Speicherung von Paging- und Swapping-Daten verwendet. Die im Zusammenhang mit solchen Einrichtungen auftretenden Probleme liegen in der relativ langen Zugriffsdauer auf gespeicherte Paging- und Swapping-Daten, was zu einer gegenläufigen Wirkung auf die gesamte Zentralverarbeitungseinheit oder auf die Leistungsfähigkeit des Datenverarbeitungssystems führen kann. Das IBM 2305 Festkopf-Speichermodul, das in der Veröffentlichung GA-26-1589 dargestellt wird und bei der International Business Machines Corporation, Armonk, New York, erhältlich ist, beschreibt eine Speichertrommel für die Verwendung in einer Paging- und Swapping-Umgebung. Ein Vorteil der Speichertrommel gegenüber direkten Zugriffsspeichereinrichtungen besteht in einem relativ schnellen Zugriff auf die Paging- und Swapping-Datensignale. Der Nachteil hierbei liegt in den relativ hohen Kosten für eine gegebene Kapazität der Speichertrommel. Entsprechend speichert in vielen Paging- und Swapping-Anwendungen eine Speichertrommel wie beispielsweise die Einheit IBM 2305 aktive Paging-Daten, während relativ inaktive Daten auf direkten Zugriffsspeichereinrichtungen belassen werden. Daher ist ein hierarchisches Paging- Speichersystem wünschenswert, das automatisch Befehls-, Pagingund Spooling-Daten zwischen einem Vordergrundspeicher, der mit schneller Geschwindigkeit Zugriffe ermöglicht, und einem Hintergrundspeicher, der eine relativ hohe Kapazität und einen geringen Kostenaufwand bei gleichzeitig längeren Zugriffszeiten aufweist, überträgt.
  • Des weiteren sind mehrere Zugriffsmöglichkeiten auf die Daten vorzusehen. Das heißt, für den Zugriff auf eine gegebene Dateneinheit soll mehr als eine Adresse verwendbar sein. In diesem Sinne unterstützt die Einheit IBM 2305 Mehrfachanforderungen insofern, als die Adressen 0-7 einen Zugriff auf eine magnetische Speichertrommel mit der physikalischen Adresse 0 ermöglichen, während Adressen in der Gruppe 8-15 das Trommelmodul mit der physikalischen Adresse 8 auswählen. Jede Trommel kann jedoch zu einem bestimmten Zeitpunkt nur einen einzigen Zugriff ermöglichen; daher würde ein gegebener Zugriff über eine der Adressen für ein gegebenes Trommelmodul alle Adressen in einem nicht zugriffbaren Status auf dieses gegebene Trommelmodul plazieren. Für eine verbesserte Durchführung von Befehlsprogrammen und eine optimalere Übertragung von Paging- und Swapping-Datensätzen ist eine größere Flexibilität im Mehrfachadressierbereich wünschenswert.
  • Hierarchische Datenspeicher für diverse Anwendungen werden mit unterschiedlichen Hintergrundspeichern verwendet. Beispielsweise kann es sich bei Hintergrundspeichern um Magnetbandrekorder, magnetische Plattenspeichereinrichtungen wie beispielsweise direkte Zugriffsspeichereinrichtungen (DASD), relativ langsame flüchtige beliebige Zugriffsspeicher, Magnetblasenspeicher oder Shift-Registerspeicher, Bandbibliothekssysteme oder ähnliches handeln. Vordergrundspeicher, die so ausgelegt sind, daß relativ lange Zugriffszeiten auf einem Hintergrundspeicher maskiert werden, existieren ebenfalls in verschiedenen Konfigurationen. Beispielsweise besteht im Massenspeichersystem IBM 3850 ein Hintergrundspeicher aus einer magnetischen Bandbibliothek, während ein Vordergrundspeicher aus einer Mehrzahl direkter Zugriffsspeichereinrichtungen besteht. In diesem Fall war der Zugriff auf die direkten Zugriffsspeichereinrichtungen relativ schnell im Vergleich zum Zugriff auf Daten, die auf einer Datenkassette gespeichert sind, die sich in der automatischen Bandbibliothek befindet.
  • Im Eden US Patent 3,569,938 wird ein hierarchischer Speicher vorgestellt als ein geeigneter Speicher für ein verwendetes Datenverarbeitungssystem. In diesem Patent wird ein Cache- Konzept vorgestellt, wobei ein Speicher mit relativ hoher Zugriffsgeschwindigkeit als Puffer für einen Speicher mit relativ niedriger Geschwindigkeit dient. In diesem Zusammenhang dient ein beliebiger Zugriffsspeicher als Vordergrundspeicher oder Cache-Speicher, während es sich beim Hintergrundspeicher entweder um Band- oder Plattendatenspeichereinrichtungen handelt. Die Größe des geeigneten Speichers war gleichzeitig die Kapazität des Hintergrundspeichers, während die Zugriffs zeit in etwa dem schnellen Zugriff des Vordergrundspeichers entsprach. Ein weiterer hierarchischer Speicher wird in Spencer, US Patent 3,839,704 dargestellt, wobei eine direkte Zugriffsspeichereinrichtung durch einen beliebigen Zugriffsspeicher (RAM) gepuffert wird, der über eine Verzeichnisstruktur zugriffbar ist. Die Verzeichnisstruktur interpretiert die Adressen für die direkte Zugriffsspeichereinrichtung (DASD) als Hintergrundspeicher und konvertiert diese unter Verwendung von Tabellensuchmechanismen, die im Bereich Datenverarbeitung wohl bekannt sind, in eine Pufferadresse. Auch hier lag der Zweck der Anordnung von Spencer darin, relativ lange Zugriffszeiten auf der direkten Zugriffsspeichereinheit zu maskieren. Spencer sah ebenfalls vor, die Daten von den direkten Zugriffsspeichereinrichtungen zum Puffer vor dem Datenverarbeitungssystem zu übertragen, das an diesen hierarchischen Speicher angeschlossen war. Die Daten wurden benötigt, um die Zugriffsdauer auf die Daten möglichst gering zu halten. In diesen beiden Patenten werden allgemeine Anordnungen zum Verbergen unterschiedlicher Arten peripherer Speichereinrichtungen dargestellt. Es werden jedoch noch weitere Steuerungen benötigt, um den heutigen Anforderungen eines Paging- und Swapping-Speichersystems gerecht zu werden.
  • Ein weiterer technologischer Bereich, in dem die Cache-Technologie zu einer Leistungssteigerung führt, kann im Hauptspeicherbereich eines Computers, das heißt in der Zentraleinheit, gefunden werden. Jedes Datenverarbeitungssystem enthält eine Zentraleinheit, die mit einem Cache-Speicher oder einem Hochgeschwindigkeitsspeicher ausgestattet ist. Als Hintergrundspeicher für diesen Cache-Speicher dient normalerweise der Hauptspeicher. Zur Verbesserung der Cache-Operationen werden unterschiedliche Verfahren verwendet, so daß die Ausführung der Befehle von der Zentraleinheit sowie die Operandendatenübertragungen maximiert werden. Ein Beispiel für die Steuerung der Operation eines Cache-Speichers in bezug auf eine Zentraleinheit und einen Hauptspeicher befindet sich in Calle, et al, US Patent 4,075,686. Aus den Ausführungen in diesem US Patent geht hervor, daß die Verwendung eines Cache-Speichers nicht uneingeschränkt ratsam ist, sondern daß in einigen Fällen die Umgehung des Cache-Speichers zu einer Leistungssteigerung führen kann. Die Umgehung des Cache-Speichers wird durch eine von mehreren möglichen Methoden erzielt. In einem Beispiel wird der Hauptspeicher in Segmenten angeordnet. Einige dieser Segmente können Eingabe/Ausgabe-Operationen oder Peripherieoperationen zugeordnet werden. Sämtliche Zugriffe auf diese Segmente erfolgen unter Umgehung des Hauptspeicher-Caches. In ähnlicher Weise kann der Cache-Speicher für eine direkte Zugriffsspeichereinrichtung bei ausgewählten Einrichtungen oder Teilen solcher Einrichtungen unter bestimmten Bedingungen umgangen werden. In einer weiteren Anregung von Calle läßt sich eine Leistungssteigerung auch dadurch erreichen, daß der Cach-Speicher durch Befehle selektiv umgangen wird. In diesem Fall enthält der Befehl an den Hauptspeicherbereich nur ein einziges Cache-Umgehungsbit. Wird das Bit auf Einheit gesetzt, dann wird der Cache-Speicher nicht verwendet (der Zugriff erfolgt direkt auf den Hauptspeicher). Wird das Cache-Umgehungsbit auf Null zurückgesetzt, dann wird der Cache-Speicher verwendet. Während die selektive Umgehung eines Cache-Speichers in vielen Fällen zu einer Leistungsoptimierung eines Datenspeichersystems führen kann, beispielsweise des Hauptspeicher-Cache-Systems oder eines DASD-Cache-Systems, so sind für die Erfüllung der hohen Anforderungen heutiger Paging- und Swapping-Datenübertragungen weitere Steuerungen erforderlich.
  • Innerhalb einer Datenspeicherhierarchie mit Mehrfachpfaden zwischen den einzelnen Einrichtungen der Hierarchie können die Datenbewegungen einem vorteilhaften Lastausgleich mit dem Ziel einer Leistungssteigerung unterzogen werden. Werden außerdem auf einigen Stufen der Hierarchie Datenspeicher für flüchtige Daten verwendet, so kann durch einen solchen Lastausgleich die Speichersystem- und Datenverfügbarkeit verbessert werden.
  • Lastausgleich in der Datenverarbeitung zwischen einer Mehrzahl an Einheiten tritt normalerweise während einer Aufgabenzuordnungszeit ein. Bevor die Datenverarbeitungsaufgaben folgen, stellt ein Steuermechanismus fest, welche Einheit eine Aufgabe auszuführen hat; sobald eine Aufgabe einer Einheit zugeordnet ist, so fährt diese Einheit mit ihrer Operation fort, auch wenn sie zu einem späteren Zeitpunkt möglicherweise mehr belastet ist als andere Einheiten innerhalb des Systems. Ein Beispiel für einen solchen Ausgleich der Aufgabenzuordnung wird im technischen IBM Bulletin, Band 20, Nr. 3, August 1977, Seiten 937-938, in einem Artikel mit dem Titel "Load Balancing Control for a Multi-processor", von J. F. Baker und D. E. Holst beschrieben. Dieser Artikel erläutert einen lose gekoppelten Multiprozessorspeicher und ein Speichersystem mit Lastausgleichstabellen in verschiedenen Prozessoren, die das System steuern. Der Lastausgleich wird zum Zeitpunkt der Zuordnung erreicht, und arbeitet auch dann, wenn eine größere Belastung vorhanden ist als in anderen Einheiten des Systems. Der Lastausgleich wird zum Zeitpunkt der Zuordnung erreicht und zwar auf der Grundlage von Lastausgleichstabellen, die das Maß für die Länge der Warteschlange anzeigen. Zwischen den verschiedenen Prozessoren des Speichersystems werden Lastausgleichsdaten ausgetauscht. Die Aufstellung der Reihenfolge der eingestellten Prozesse wird ebenfalls beschrieben. Ein weiteres Beispiel eines Lastausgleichs zum Zeitpunkt der Aufgabenzuordnung befindet sich in einem ähnlichen technischen Artikel eines IBM Bulletins, Band 14, Nr. 11, April 1972, mit dem Titel "Input/Output Channel/Device Load Balancing Algorithm," von L. A. Jaikes, et al, wobei die Aufgaben eines Peripherie-Untersystems zum Zeitpunkt der Aufgabenzuordnung ausgeglichen werden.
  • Zentralprozessoren oder Host-Stellen innerhalb einer Multiprozessoranordnung führen ebenfalls oft einen Lastausgleich zum Zeitpunkt der Aufgabenzuordnung durch. Ein Beispiel hierfür befindet sich im US Patent 3,648,253. Dabei werden von einem programmierten Scheduler, der an späterer Stelle unter Bezugnahme auf Fig. 15 beschrieben wird, in einer Multiprozessoranordnung Aufgaben zugeordnet. Der Ausgleich von Arbeitslasten erfolgt durch Zuordnung von Aufgaben, bevor mit deren Durchführung begonnen wird. Das US Patent 4,032,899 zeigt ein Datenschaltnetzwerk, das den Datenverkehr auf einer Aggregatverarbeitungslast ausgleicht. Dieser Ausgleich wird erzielt durch einen geplanten Ausgabeverkehr an Ports mit einzelnen Prozessoren auf der Basis einer ausschließlichen Zuordnung; das heißt, auch hier wird der Lastausgleich erzielt, wenn die durchzuführende Aufgabe zuerst zugeordnet wird.
  • Lastausgleich wurde ebenfalls bei der Feststellung einer Fehlerbedingung erzielt; beispielsweise zeigt das US Patent 3,787,816 ein Multiprozessorsystem, das kontrolliert umkonfiguriert werden kann; anschließend können die Funktionen, die bestimmten ähnlichen Einheiten zugeordnet sind, neu zugeteilt werden, so daß eine kontinuierliche Datenverarbeitung auch nach einer Fehlfunktion oder einer Fehlerbedingung gewährleistet ist.
  • Für Lastausgleiche werden Aktivitätsanzeigen verwendet. Das US Patent 3,588,837 stellt ein System zur Messung der Aktivität aller wichtigen Datenpfade dar, wobei in Zeitintervalproben die Ausnutzung festgestellt wird. Die Proben werden dynamisch gespeichert und geben so das Verhältnis der Anzahl der Proben wider, womit eine Aussage über die Anzahl der Proben innerhalb eines Zeitintervals verglichen mit der Anzahl der Proben während eines früheren Zeitintervals gemacht werden kann, wobei die Aktivität aller möglichen Warteschlangepunkte innerhalb einer dynamischen Umgebung aufgezeichnet werden, um statistische Daten zur Nutzung der Datenverarbeitungs- und Kommunikationsanlage liefern zu können. Dieses Patent stellt ein Meßsystem dar, jedoch keinen Lastausgleich, welcher durch ein solches Meßsystem bewerkstelligt werden könnte.
  • Zum Zeitpunkt der Niederschrift wurde nicht der gesamte Umfang des Lastausgleichs erreicht; beispielsweise zeigt das US Patent 4,099,235 eine Methode für das Betreiben eines Datenverarbeitungssystems auf, das mit zwei Echtzeit-Datenprozessoren ausgestattet ist, in denen gegebene Aufgaben selektiv in einem der Datenprozessoren ausgeführt werden. Eine solche Selektion ist abhängig vom Charakter der Aufgabe und davon, welcher Prozessor für die Durchführung der Aufgabe ausgewählt wurde. Jeder der Datenprozessoren wird kontinuierlich überwacht mit dem Zweck, zu jedem Zeitpunkt den Nutzungsgrad bestimmen zu können. Jedem Prozessor wird ein vorbestimmter oberer Grenzwert eines solchen Nutzungsgrads zugeordnet, der unterhalb des Überlastungsgrenzwerts des Prozessors liegt. Sobald ein solcher oberer Grenzwert überschritten wird, werden die in einem stark belasteten Prozessor ausgeführten Aufgaben einem anderen Prozessor übertragen, so daß der empfangende oder ein weiterer Prozessor die übertragene Aufgabe übernimmt. Dieses Patent stellt eine Nutzungsschwelle dar, die als Methode für das Auslösen einer Übertragung laufender Aufgaben zwischen Datenprozessoren dient. Die beschriebene Methode ist vorzugsweise ein Verhältnis der Wartezeit, die aus den durchzuführenden Aufgaben resultiert, zur freien Zeit für die Anzeige des Nutzungsgrades. Dieses Patent bezieht sich ebenfalls auf das US Patent 3,665,404, bei dem Peripheriegeräte zwischen Datenprozessoren hin- und hergeschaltet werden; hierfür wird ein elektromechanischer Schalter in Verbindung mit dem Ausgleich der Eingabe/Ausgabe- Last zwischen diesen Prozessoren verwendet. In Übereinstimmung mit dem US Patent 4,099,235 ähneln viele der Echtzeitoperationen einer Stapelverarbeitung; folglich können solche Aufgaben, die zu einem bestimmten Zeitpunkt keiner Verarbeitung unterliegen, frei zwischen den Prozessoren übertragen werden. Das bedeutet, daß nur inaktive Aufgaben zum Zweck eines Lastausgleichs übertragen werden.
  • In einem dynamischen Datenverarbeitungssystem, wo die Aktivität über die Steuerung des steuernden Datenprozessors hinausgehen kann, hat ein Lastausgleich zwischen den verschiedenen Datenprozessoren/datenverarbeitenden Pfaden in vollem Umfang nachfolgende unvorhersehbare dynamische Änderungen der Aktivitäten zu berücksichtigen, so daß Datenübertragungen für den Lastausgleich möglichst gering gehalten werden, damit eine maximale Datenverarbeitungsleistung gewährleistet ist.
  • In einer Paging- und Swapping-Umgebung ist es wünschenswert, daß möglichst viele Zugriffe für das Multitasking Paging zur Verfügung stehen, während die Host-Steuerungen über das Speichersystem möglichst gering gehalten werden sollen; das bedeutet, das Paging- und Swapping-Speichersystem sollte über eine ausreichende Anzahl an Steuerungen verfügen, um die Arbeitsabläufe des Hosts oder der Zentraleinheit zu optimieren, während die Kontinuität jeder unabhängigen Operation aufrechtzuerhalten ist, um die Integrität der Paging- und Swapping-Umgebung zu sichern. Ein Ausgleich asynchroner Operationen zwischen den Einheiten in der Umgebung kann dazu beitragen, die Verfügbarkeit des Datenspeichersystems zu verbessern.
  • In einer Mehreinheitenumgebung untersucht jede Einheit mit einer vorbestimmten Arbeitsleerzeit die anderen Einheiten. Die anderen Einheiten können durchzuführende Operationen an erstere Einheit übertragen. Die Bestimmung der Arbeitslastzeit bzw. der Arbeitsleerzeit wird vorzugsweise erzielt durch Untersuchung von Warteschlangen der unterschiedlichen Einheiten. In einem besonderen Gesichtspunkt der Erfindungsbeschreibung laufen in einer Datenspeicherhierarchie mit mehreren Operationsstufen interne Operationen ab, die im wesentlichen asynchron zu externen Operationen ausgeführt werden, die mit der Hierarchie im Zusammenhang stehen. Mehrere Einheiten auf einer Hierarchiestufe stellen durchzuführende Arbeiten auf einer niedrigeren Hierarchiestufe in eine Warteschlange. Sobald eine Einheit auf der einen Stufe nur wenige oder gar keine solche Arbeiten auf der geringeren Hierarchiestufe zu verzeichnen hat, dann fordert sie bei anderen Einheiten auf derselben Stufe Arbeiten der niedrigeren Stufe an, die diese Einheit dann für eine oder mehrere der anderen Einheiten durchführt. Ein anderer Gesichtspunkt beschreibt die Tatsache, daß jede der Einheiten auf derselben Stufe Warteschlangen anlegt, in denen die auszuführenden Arbeiten in bezug auf die niedrigere Stufe (beispielsweise Datenübertragungen) aneinandergereiht werden. Sobald eine Einheit innerhalb dieser Stufe eine leere Warteschlange vorfindet, so werden andere Einheiten untersucht und bei diesen eine Übertragung von Arbeiten aus Warteschlangen der anderen Einheiten auf der einen Stufe angefordert.
  • Das bisher gesagte sowie weitere Sachverhalte, Eigenschaften und Vorteile der Erfindung, die in den beiliegenden Ansprüchen näher erläutert sind, werden aufgrund der nachfolgenden Beschreibung der bevorzugten Realisierung der Erfindung anhand der beigefügten Zeichnungen anschaulicher dargestellt.
  • Fig. 1 ist eine schematische Darstellung eines Mehreinheitensystems unter Einbeziehung der vorliegenden Erfindung.
  • Fig. 2 ist ein vereinfachtes Flußdiagramm, das Maschinenoperationen des in Fig. 1 dargestellten Systems zur Implementierung der vorliegenden Erfindung zeigt.
  • Fig. 3 ist ein logisches Diagramm eines hierarchischen Pagingund Swapping-Speichersystems unter Einbeziehung der Grundsätze der vorliegenden Erfindung.
  • Fig. 4 zeigt eine bevorzugte Implementierung des in Fig. 1 dargestellten Systems.
  • Fig. 5 stellt Sätze von Steuerregistern dar, die mit dem in den Fig. 1-4 dargestellten System verwendbar sind.
  • Fig. 6 ist eine Kombination aus einem logischen Diagramm und einem Flußdiagramm, die die Adreß- und Befehlsauswertung aus Fig. 3 zeigt.
  • Fig. 7 ist ein logisches Flußdiagramm, das die direkte Zugriffssteuerung aus Fig. 3 darstellt.
  • Fig. 8 stellt eine Cache-Zugriffssteuerung dar, die in der in Fig. 3 dargestellten Anordnung verwendbar ist.
  • Fig. 9 stellt einen Ausführungsfluß der SET PAGING PARAMETERS- Befehlslogik des in Fig. 3 dargestellten Systems dar.
  • Fig. 10 stellt einen logischen Fluß dar, der sich auf den Empfang eines Befehls in der Adreß- und Befehlsauswertung von Fig. 3 bezieht.
  • Fig. 11 stellt einen Teil eines logischen Flusses der in Fig. 8 dargestellten Cache-Zugriffssteuerung dar, die sich auf die Untersuchung des Verzeichnisses der Cache-Zugriffssteuerung aus Fig. 3 bezieht.
  • Fig. 12 ist eine Darstellung von Maschinenoperationen in bezug auf Lese- oder Schreibbefehle der in Fig. 8 dargestellten Cache-Zugriffssteuerung.
  • Fig. 13 zeigt einen Teil eines logischen Flusses der in Fig. 8 dargestellten Cache-Zugriffssteuerung, die sich auf Operationen bezieht, bei denen der Zugriff auf einen Cache in einer Verfehlung resultiert.
  • Fig. 14 stellt einen Teil eines logischen Flusses der in Fig. 8 dargestellten Cache-Zugriffssteuerung dar, die sich auf das Setzen von Leseanforderungen in eine Warteschlange des Hintergrundspeichers bezieht, wenn sich die angeforderten Daten nicht im Cache befinden.
  • Die Fig. 15 und 16 sind Flußdiagramme, die die Operation des in den Fig. 1-4 dargestellten Systems unter Verwendung separater bzw. gemeinsamer Schreib-Warteschlangen beschreiben.
  • Die Fig. 17-19 sind Flußdiagramme, die eine ausführliche Beschreibung der Maschinenoperationen zur Implementierung der Erfindung des in den Fig. 1-14 dargestellten Systems liefern.
  • Nachfolgend soll etwas ausführlicher auf die Zeichnungen Bezug genommen werden; gleiche Zahlen verweisen dabei in den unterschiedlichen Diagrammen auf gleiche Teile oder Eigenschaften. Die Fig. 1 bis 4 zeigen eine periphere Datenspeicherhierarchie unter Verwendung der vorliegenden Erfindung. Die allgemeine Anordnung aus Fig. 1 zeigt einen Host 11, beispielsweise eine Zentraleinheit, eine Multiprozessorumgebung usw., gekoppelt an eine Datenspeicherhierarchie 10 für die Speicherung und das Aufsuchen von Daten für die Verwendung durch den Host 11. Die Datenspeicherhierarchie 10 enthält eine Mehrzahl an direkten Zugriffsspeichereinrichtungen (DASDs) 16, die durch einen beliebigen der Speicherdirektoren 17 an den Host gekoppelt sind. Die Speicherdirektoren 17 besitzen einen gemeinsamen Cache 40, der in einen Systemspeicher 30 eingebettet ist; dieser Speicher besteht aus einer Anordnung aus beliebigen Zugriffsspeichern (RAMs), bestehend aus Halbleitereinheiten, und der üblichen Zugriffsschaltung 26. Die Zugriffsschaltung 26 enthält einen Zugriffssteuerungsschalter mit einem Paar an bidirektionalen Eingabe/Ausgabe-Ports P1 und P2, die an die Speicherdirektoren 17 angeschlossen sind. Im Speicher 30 ist ein Verzeichnis 43 enthalten, das im Halbleiter-Datenspeicherbereich gespeichert ist und erkennt, welche Daten im Cache gespeichert sind. Das Verzeichnis verbindet die Adressen dieser im Cache gespeicherten Daten mit den DASD 16-Adressen derart, daß der Host 11 durch Verwendung der DASD 16-Adressen auf die im Cache 40 gespeicherten Daten zugreifen kann. Die Operation des Cache 40 in bezug auf den DASD 16, die Speicherdirektoren 17 und den Host 11 werden an späterer Stelle erläutert.
  • Für den Lastausgleich eines Speicherdirektors 17, der für einen anderen Speicherdirektor Aufgaben erledigt, werden zwischen den Speicherdirektoren Steuermeldungen ausgetauscht, die über ein RAM für Meldungen 18 laufen, das an beide Speicherdirektoren 17 angeschlossen ist. Die Operation sieht derart aus, daß wenn nur einer der Speicherdirektoren 17 eine schwache oder gar keine Arbeitsauslastung hat, er über den Meldungs-RAM 18 eine Anforderungsmeldung an den anderen oder aufgabensendenden Speicherdirektor 17 abschickt und so die Übertragung von Aufgaben bewirkt. Der aufgabensendende Speicherdirektor 17 untersucht anschließend die Arbeitsauslastung und, falls anwendbar, sendet die vorbestimmte Anzahl an Aufgaben an den anfordernden Speicherdirektor. Der anfordernde Speicherdirektor führt diese Aufgaben dann anstelle des arbeitssendenden Speicherdirektors aus. In einer bevorzugten Ausführung der Erfindung stellt eine Anforderung eines Datenspeicherzugriffs (eine oder mehrere Datenaufzeichnungen) für jeden der DASDs 16 eine Einheit uneingeschränkt gleichwertiger Arbeit dar.
  • Eine der wichtigen asynchronen Operationen, die in einer Datenspeicherhierarchie zwischen den Speicherdirektoren 17 und den DASDs 16 auftreten, ist die Aufzeichnung von Daten auf den DASDs 16, die im Cache 40 gespeichert sind und vom Host 11 empfangen wurden. Solche Operationen, die auch als Schreibabläufe angesehen werden können, werden in die Schreib-Warteschlange WRQ 19 gestellt. Diese Schreibabläufe stellen einen großen Anteil der stellvertretenden Arbeit dar; unter bestimmten Bedingungen können die vom DASD in den Cache 26 zu lesenden Daten als stellvertretende Arbeit übertragen werden. In einer ersten Anordnung besitzt jeder der Speicherdirektoren 17 seine eigene unabhängige Schreib-Warteschlange. In einer zweiten oder gemeinsamen Schreib-Warteschlangen-Anordnung, dargestellt in Fig. 1, dient WRQ 19 gemeinsam für beide Speicherdirektoren 17. In dieser zweiten Anordnung empfängt WRQ 19 Schreibaufgaben von beiden Speicherdirektoren 17 und stellt sie in eine einzelne Warteschlange. Sobald einer der Speicherdirektoren 17 in einen DASD 16 schreiben muß oder einen leichten oder einen anderen Arbeitsstatus hat, was bedeutet, daß Daten in den DASD 16 zu schreiben sind, dann greift dieser Speicherdirektor 17 auf WRQ 19 zu und schreibt Daten aus dem Cache 40, die mit allen Speicherdirektoren in der Datenspeicherhierarchie zusammenhängen, in ein DASD 16. Diese letztere Anordnung ermöglicht eine stellvertretende Aufgabenanordnung.
  • Fig. 2 ist eine Darstellung eines allgemeinen Maschinenoperationsflusses eines anfordernden Speicherdirektors 17, der stellvertretende Arbeit für einen arbeitssendenden Speicherdirektor innerhalb einer Datenspeicherhierarchie leistet. Bei der Ausführung einer solchen stellvertretenden Arbeit wird auf die vorrangige Verantwortung jedes Speicherdirektors 17 geachtet, was die Reaktion auf die vom Host 11 gelieferten Befehle und andere Anforderungen anbelangt. Für das Empfangen der Befehle und Anforderungen vom Host 11 enthält jeder der Speicherdirektoren 17 eine Mehrzahl an Adaptern 32, die den Speicherdirektor an den Host 11 koppeln. Wie in Fig. 2 dargestellt liefert ein Kanaladapter 32 ein Signal, das eine Host-Anforderung anzeigt, so daß der an späterer Stelle beschriebene digitale Prozessor in einem Speicherdirektor 17 über einen Befehl vom Adapter 32, den er vom Host 11 erhalten hat, antworten kann. Im Maschinenoperationsschritt 320 untersucht der Speicherdirektor 17, ob der Kanaladapter 32 einen Befehl vom Host 11 erhalten hat. Der Speicherdirektor 17 antwortet auf den erhaltenen Befehl (DO- Befehl) an 321; anschließend gibt er eine Maschinenoperations- Leerschleife ein, die durch 322 angegeben ist, um erneut den Status des vom Kanaladapter 32 empfangenen Befehls zu untersuchen. Auf diese Weise wird der Host 11 aufgrund der gelieferten Befehle vorrangig vom Speicherdirektor 17 berücksichtigt. Für den Fall, daß keiner der Kanaladapter irgendeinen Befehl empfängt, untersucht der Speicherdirektor 17 die an späterer Stelle beschriebenen Arbeits-Warteschlangen, um die bereits erwähnten asynchronen Operationen zwischen dem Speicherdirektor 17, dem Cache 40 und den DASDs 16 durchzuführen. Für das Auslösen einer asynchronen Operation wird an 323 eine Lese-Schreib-Priorität untersucht, um zu bestimmen, ob Daten erst von einem DASD 16 zum Cache 40 (Lesen) oder umgekehrt (Schreiben) zu übertragen sind. Eine solche Priorität ist eine Funktion von Warteschlangenlängen, Cache-Belegung, Cache-Verfügbarkeit oder freiem Speicherplatz oder ähnlichem. Für eine Lese-Priorität an 323 untersucht der Speicherdirektor 17 an 324 die Lese-Warteschlange RQ. Wird in der Lese- Warteschlange aufgrund der an 323 angezeigten Priorität auszuführende asynchrone Arbeit identifiziert, so werden an 325 (DO READ) Lese-Operationen (Datenübertragungen von DASD 16 zum Cache 40) durchgeführt. Anschließend wird erneut die Leerschleife 322 eingegeben, die nach einem eingegangenen Befehl sucht. Auf diese Weise werden die asynchronen Operationen und Befehlsausführungen (synchrone Operationen mit entsprechenden Hosts 11) dynamisch verschachtelt. Für den Fall, daß der Speicherdirektor 17 an Schritt 324 in der Lese-Warteschlange keine auszuführende Arbeit vorfindet, dann untersucht er in Schritt 326 die Schreib-Warteschlange WQ. (Diese Warteschlange kann die gesamte Schreibaktivität enthalten, also sowohl lokal als auch stellvertretend.) Für den Fall, daß an der Schreib- Warteschlange eine Eingabe erfolgt, wie beispielsweise an WRQ 19, so wird an 327 ein Schreibvorgang ausgeführt. Anschließend wird wiederum die Leerschleife 322 eingegeben, um nach einem vom Host gelieferten Befehl zu suchen. Unter gewissen Bedingungen kann es vorteilhaft sein, daß der Empfang eines Befehls die oben beschriebene asynchrone Operation unterbrechen kann. Das heißt, es verstreicht Zeit zwischen dem Moment, in dem festgestellt wird, daß eine asynchrone Operation ausgeführt werden soll, und der tatsächlichen Datenübertragung. Während einer solchen Verzögerung können die Befehle ausgeführt werden, ohne die asynchronen Operationen zu beeinträchtigen.
  • Wenn der Speicherdirektor 17 an Schritt 323 feststellt, daß die Priorität asynchroner Operationen anzeigt, daß Daten-Schreibabläufe vom Cache 40 zum DASD 16 auszuführen sind, so untersucht der Speicherdirektor 17 an 330 zunächst die Schreib-Warteschlange WQ. Für jeden Schreibablauf in der Warteschlange wird der Schritt 327 DO WRITE ausgeführt. Bei einer leeren Schreib- Warteschlange an Schritt 330 fährt der Speicherdirektor 17 nach Schritt 331 fort, um dort die Lese-Warteschlange RQ zu untersuchen. Auch hier gilt, daß wenn in RQ eine Eingabe gefunden wird, die Lese-Operation in der Warteschlange an 325 ausgeführt wird.
  • Ist an Schritt 320 kein auszuführender Befehl vorhanden und ist keine asynchrone Arbeit auszuführen, wie dies durch die Leseund Schreib-Warteschlangen angezeigt wird, dann sucht der Speicherdirektor 17 von Schritt 326 oder 331 aus an 332 stellvertretende Arbeit. Diese stellvertretende Arbeit wird anschließend den Lese- oder Schreib-Warteschlangen angefügt oder wird separat vom arbeitsanfordernden Speicherdirektor ausgeführt. Während der Zeit zwischen der Einstellung der stellvertretenden Arbeit und der tatsächlichen Ausführung der Datenübertragung wird die Leerschleife 332 erneut eingegeben. Auf diese Weise wird die stellvertretende Arbeit mit Befehlsausführungen und mit anderen asynchronen Operationen ebenfalls dynamisch verschachtelt. Die Datenübertragungen zwischen dem Cache 40 und den DASDs 16 sind bekannt und werden daher nicht näher beschrieben.
  • Die Fig. 3 und 4 stellen ein peripheres System 10 für die Verwendung der Erfindung dar. Figur stellt das System in einer logischen Form dar, während Fig. 4 das System in einer elektronischen Schaltung oder in Hardware-Form darstellt. In Fig. 3 kommuniziert ein einzelner Host 11 (der Begriff Host umfaßt die Zentraleinheit und eine Multiprozessorumgebung, die als einzelne Einheit wirkt) mit dem peripheren System 10 für das Paging und Swapping von Daten. Eine Mehrzahl an Eingabe/Ausgabe- Verbindungen 12, 13, 14 und 15 verbinden den Host 11 mit dem peripheren System 10, einem Paging-Speicher. Bei diesen Eingabe/Ausgabe-Verbindungen kann es sich um dieselben handeln, die bei IBM Computern verwendet werden, was bekannt ist. Die Paging- und Swapping-Daten werden in einem Hintergrundspeicher gespeichert, der die niedrigere Stufe eines zweistufigen Speichers darstellt. Der Hintergrundspeicher besteht aus einer Mehrzahl an DASDs 16. Jeder Speicherdirektor 17 stellt ein Pfadmittel dar, das den Cache 40 an die DASDs 16 koppelt. In der dargestellten Anordnung wird ein einzelner String aus solchen DASDs 16 dargestellt; der String ist schaltbar zwischen der Mehrzahl an Direktoren 17 und zwar unter Verwendung bekannter Techniken und wie dies schematisch in Fig. 1 dargestellt ist. Die Operation läuft derart ab, daß 4,096 Byte-Blocks an Daten schnell zwischen dem Host 11 und den DASDs 16 übertragen werden. Jeder der acht DASDs 16 besitzt Device-Adressen D0-D7 für einen unabhängigen Zugriff über jede der Eingabe/Ausgabe-Verbindungen 12-15. Das heißt, der Host 11 kann über jede der Eingabe/Ausgabe-Verbindungen jeden der DASDs 16 adressieren. Zusätzlich zu den Mehrfachzugriffpfaden steht eine Mehrzahl an Zugriffsadressen für jeden der DASDs 16 zur Verfügung. Diese Zugriffsadressen befinden sich in einer Adreßform, die durch die Ziffer 20 angezeigt wird. Die Steuereinheit oder die Adresse des Systems 10 wird durch den Teil CU angezeigt, der normalerweise aus 3 Bits bestehen kann. Die tatsächliche oder physikalische DASD 16-Adresse wird im Teil DEV angezeigt, der für acht Devices drei Bits besitzt. Die Änderung der tatsächlichen Adresse der DASDs 16 erfolgt über einen Zugriff oder einen Adreß-Modifyer AC, der in der vorliegenden Anordnung aus zwei Bits besteht. Die Adressierung des Device D0 durch die vier Zugriffe kann einen direkten Zugriff 21 enthalten, in dem der AC-Teil ausschließlich aus Nullen besteht. Drei zusätzliche Zugriffe auf Device D0 können über den Cache 40 erfolgen und werden über die AC- Bitmuster 22 identifiziert, die aus 01, 10 und 11 bestehen. Der Device-Adreßteil für alle drei Zugriffe bleibt derselbe. Wenn der Host 11 unter Verwendung einer der vier Zugriffe auf die Daten eines DASD 16 zugreift, einschließlich des Zugriffs auf die Daten des Caches 40, dann wird jeder der Zugriffe als separater logischer Device behandelt, so daß eine Mehrzahl an unabhängigen Eingabe/Ausgabe-Operationen in bezug auf jeden DASD 16 ausgeführt wird und zwar eine unabhängige Operation für jeden der Zugriffe. Je nach der elektronischen Schaltungskonfiguration eines bestimmten peripheren Systems 10 kann auf ein DASD 16 durch die Adresse 21 gleichzeitig und unabhängig vom Zugriffs-Cache 40 durch die drei angezeigten Cache-bezogenen Device- Adressen zugegriffen werden. Die Adresse 21 kann vom Host 11 für jede der Eingabe/Ausgabe-Verbindungen 12-15 bereitgestellt werden, sowie auch alle logischen Device-Zugriffe zur Verfügung gestellt werden können. Auf den Device D1 wird direkt durch die Adresse 24 zugegriffen, die an AC aus Nullen besteht und dessen DEV-Teil 001 ist. Der logische Device oder die Cache-Zugriffe 25 besitzen für alle DASDs 16 ein ähnliches Muster, wie es für die logischen Device-Zugriffe 22 und 23 beschrieben wird.
  • Der Vordergrundspeicher oder die obere Stufe der Paging- Speicherhierarchie des peripheren Systems 10 enthält einen Systemspeicher 30, auf den über die Steuerung 31 zugegriffen wird und von dieser Steuerung gesteuert wird. Die Signalübertragungen zwischen dem Systemspeicher 30, der Steuerungen 31 und dem Host 11 erfolgen über eine Mehrzahl an Kanaladaptern 32, die die individuellen Bezeichnungen CAA, CAB, CAC und CAD tragen. Bei diesen Kanaladaptern handelt es sich um diejenigen Zusatzschaltungen, die man in Steuereinheiten verwendet, die zusätzlich an IBM Computer über die Eingabe/Ausgabe-Verbindungen 12-15 angeschlossen werden. Die Signalübertragungen zwischen den DASDs 16 und dem Systemspeicher 30 unter Anweisung der Steuerung 31 erfolgen über einen Satz Datenschaltungen 33, die die normalen digitalen Signale, die man in Datenverarbeitungssystemen verwendet, in ein serielles Format und ein Protokoll umformatieren, das in der Plattenspeicheranlage verwendbar ist; diese Technologie ist dem Fachmann vertraut. Die Datenflußschaltungen 33 hingegen übertragen Signale über den Device-Adapter DAA 34 und anschließend über den Plattensteuerungsadapter DCA 35. Die DASDs 16 werden durch eine Adresse DCHR adressiert, wobei D der Device-Adresse DEV entspricht, C die Zylinderadresse angibt, H die Kopfadresse (Aufzeichnungsfläche) und R die Aufzeichnungsnummer anzeigt. Die Aufzeichnung wird durch eine Rotationsposition auf der Plattenspeicheranlage schnell aufgefunden, was dem Fachmann bekannt ist. Der Systemspeicher 30 besteht hauptsächlich aus den folgenden drei Teilen: der erste und größere Teil 40 ist ein Cache für die Speicherung von Paging-Daten, auf die vom Host 11 schnell zugegriffen werden kann, sowie für die Speicherung von Paging-Daten, die auf die DASDs 16 geschrieben werden sollen, so daß der Host 11 nicht auf die DASDs 16 warten muß, um diese Daten zu akzeptieren. Das Cache-Prinzip wird im Referenzmaterial der bisherigen Technologie beschrieben, das in den Hintergrundangaben der Erfindung enthalten ist. Der Zugriff auf die im Cache 40 gespeicherten Daten erfolgt über ein Verzeichnis 43, das aus einer Mehrzahl an Registern besteht; diese Register enthalten Signale, die die Adresse der DASDs 16 (DCHR), die Adresse der Register im Cache 40, wo die Daten gespeichert sind und weitere Steuerinformationen enthalten; dies wird an späterer Stelle unter Bezugnahme auf Fig. 5 näher erläutert. Da der Cache 40 relativ groß ist, beispielsweise mehrere Megabytes, wird der Zugriff auf den Cache 40 durch Verwendung eines Hashing- Verfahrens verbessert, die in der Hash-Schaltung 44 implementiert wird. Das Hashing-Verfahren für Adressen ist bekannt und gehört nicht zum Verständnis dieser Erfindung; daher wird es an dieser Stelle nicht näher beschrieben. Die Ausgabe der Hashing-Schaltung 44 adressiert eine Streuindextabelle 45, die auch mit SIT bezeichnet wird, die die dem Hashing-Verfahren unterzogene Adresse an das Verzeichnis 43 indexiert, um das Verzeichnis 43 zu adressieren, so daß auf den Cache 40 zugegriffen werden kann. Bei jedem Zugriff auf den Cache kann es sich um einen oder mehrere Einträge in das Verzeichnis handeln. Eine Mehrzahl an Einträgen, die sich auf eine gegebene Hashing- Ausgabe beziehen, wird als Hashing-Klasse bezeichnet; diese wird verkettet, indem eine einzeln oder doppelt verkettete Liste verwendet wird, so daß ein einfacher Zugriff auf das Verzeichnis 43 in einem vollständigen Suchlauf durch den Cache 40 für einen gegebenen Adreßbereich resultiert. Der Cache 40 überträgt Signale mit den Kanaladaptern 32 über den internen Bus 41 und mit den Datenschaltungen 33 über den internen Bus 42. Die Übertragung solcher Datensignale zwischen dem beliebigen Zugriffsspeicher, der für den Systemspeicher 30 und andere DASDs 16 verwendet wird, ist bekannt und wird daher nicht näher beschrieben.
  • Die Steuerung 31 besteht hauptsächlich aus drei Teilen: Der erste Teil, die Adreß- und Befehlsauswertung (ACE) 50, ist an die Kanaladapter 32 über die entsprechenden Busverbindungen 51, 52, 53 und 54 angeschlossen. ACE 50 empfängt mehrere Eingabe/Ausgabe-Befehle über die Kanaladapter vom Host 11, dekodiert diese teilweise, bestimmt, ob die mit einem Befehl vom Host 11 gelieferte DASD-Adresse ein direkter oder ein logischer Zugriff ist, was an früherer Stelle in bezug auf die Adressierung beschrieben wurde. Wird ein direkter Zugriff durch eine Adresse 21, 24 und so weiter angezeigt, so aktiviert ACE 50 die direkte Zugriffssteuerung 56 (DAC 56). DAC wurde unter Verwendung der Technologie für Steuereinheiten konstruiert, die die direkten Zugriffsspeicher DASDs 16 an den Host 11 koppeln; diese Zugriffssteuerungen sind bekannt und werden in bezug auf einen solchen direkten Zugriff nicht näher beschrieben. Die Operation von Host 11 über DAC 56 an die DASDs 16 umfaßt die Fähigkeit, die DASDs 16 über einen beliebigen Kanaladapter 32 dem Host 11 vorzubehalten. Das bedeutet, daß der Zugriff auf den adressierten Device beschränkt ist auf einen spezifischen Kanaladapter 32. Die Prinzipien des Vorbehalts und der Freigabe, wie sie auf IBM Computern praktiziert werden, sind bekannt und werden daher an dieser Stelle nicht näher erläutert.
  • ACE 50 kann beim Empfangen der Befehle mit den dazugehörigen Adressen von Host 11 eine der drei logischen Zugriffe feststellen, wie dies durch die Ziffern 22, 23 oder 25 angezeigt wird. In diesem Fall kommuniziert ACE 50 mit der Cache-Zugriffssteuerung CAC 61 über einen der Pfade 60 für den Zugriff auf den Cache 40 zur Speicherung von Paging-Daten in den Cache 40 oder zum Laden von Paging-Daten aus dem Cache 40. Wird ein logischer Zugriff mit dem Befehl von Host 11 spezifiziert, so können die DASDs 16 nicht vorbehalten werden; das heißt, wird der Device D0 dem Kanaladapter CAA für den Zugriff durch Host 11 vorbehalten, so kann der Host 11 dennoch über Pfad 14 durch CAC 61 zum Speichersystem 10 eine unabhängige Datenanforderung senden. Für den Fall, daß sich die angeforderten Daten nicht im Cache 40 befinden, so greift CAC 61 über den Pfad 66 auf den adressierten DASD über DAC 56 zu, obwohl dieser adressierte Device für den Zugriff auf den Kanaladapter CAA vorbehalten ist. Auf diese Weise werden die DASDs 16 für gewisse Datenverarbeitungsoperationen vorbehalten, sind aber dennoch vollständig offen für den Zugriff für Paging-Datenoperationen.
  • CAC 61 arbeitet mit einer Mehrzahl statusanzeigender Register. Beispielsweise enthalten die LDCB- (logischer Device-steuerblock) Register 62, wie später unter Bezugnahme auf Fig. 5 beschrieben wird, Steuerinformationssignale, die sich auf die logischen Device-Zugriffe über den Cache 40 beziehen, so daß also jeder angeforderte Zugriff einzeln behandelt wird. Die Übertragung von Datensignalen über den Bus 41 zwischen dem Cache 40 und den Kanaladaptern 32 wird durch Signale angezeigt, die in einem Satz von Registern gespeichert sind und die Bezeichnung Steuerblock (CCB) 63 tragen. Der Zugriff auf den Cache 40 wird durch eine Anforderung einer Hashing-Operation über den Bus 64 zu den Hashing-Steuerungen 44 ausgelöst. Sobald die Steuerungen 44 den korrekten Eintrag im Verzeichnis 43 identifizieren, wird der Eintrag vom Systemspeicher 30 an einen Satz an Registern ADEB (aktiver Verzeichniseintragspuffer) 76 übertragen, so daß CAC 61 mit dem Cache 40 arbeiten kann, ohne sich länger auf den Systemspeicher 30 zu stützen, um solche Steuerinformationen zu erhalten. Zeigt das Verzeichnis 43 an, daß die Daten, die durch einen logischen Zugriff angefordert wurden, nicht im Cache 40 sind, beispielsweise wenn kein Verzeichniseintrag existiert, dann müssen die angeforderten Daten von einem DASD 16 an den Cache 40 übertragen werden, um an den Host 11 weitergeleitet werden zu können. Dieser Ablauf wird in äußerst asynchroner Weise erzielt, indem die Leseanforderungen in einen Satz an Warteschlangenregister 69 gestellt werden; diese Warteschlange wird als Warteschlange RQ bezeichnet, was an späterer Stelle unter Bezugnahme auf Fig. 5 näher beschrieben wird. In manchen Fällen hat CAC 61 Adreßinformationen, so daß auf das Verzeichnis 43 zugegriffen werden kann, ohne die Hashing-Steuerungen 44 oder SIT 45 miteinbeziehen zu müssen. Dieser Zugriff wird dadurch angezeigt, daß der Bus 43A direkt auf das Verzeichnis 43 zugreift. Bei einem Datenfehlgriffs in einer Anforderung an den Cache 40 greift CAC 61 über den Pfad 66 auf die DASDs 16 zu. Weitere Kommunikationen werden durch den Doppelpfeil 68 angezeigt. Sobald DAC 56 die Datensignale vom DASD 16 an den Cache 40 über den Bus 42 übertragen hat (eine Kombination mit Bus 41 ist möglich, wenn simultane Übertragungen an den und vom Cache 40 nicht implementiert sind), dann teilt DAC 56 an CAC 61 über den Pfad 67 mit, daß Paging-Daten an den Cache 40 geleitet wurden. Anschließend liefert CAC 61 an den Host 11 ein geeignetes Anzeigesignal, so daß der Host 11 dann die Daten vom System 10 erneut anfordern kann, so daß diese dann direkt aus dem Cache 40 an den Host 11 geleitet werden. Solche Verfahren sind in der Fachwelt bekannt und werden als Channel Command Retry bezeichnet, wenn sie in Verbindung mit IBM Datenverarbeitungssystemen verwendet werden.
  • Die Eingabe/Ausgabe-Befehle, die vom Host 11 an das periphere System 10 geleitet werden, sind dieselben, die im Zusammenhang mit Plattenspeicheranlagen verwendet werden. Weitere Befehle für die logischen Zugriffe sind beispielsweise Paging-Einstellparameter, die an den CAC 61 gehen und die an späterer Stelle beschrieben werden. Die Adreßstruktur 20 für die Mehrfachzugriffe ähnelt der Adreßstruktur für diejenigen Plattenspeicheranlagen, die lediglich direkte Zugriffsadressen verwenden. Dementsprechend werden beim Einsatz der vorliegenden Erfindung in den Eingabe/Ausgabe-Anforderungen mit einem Host 11 über dem gewöhnlichen direkten Zugriffsspeichersystem, wie es durch DAC 56 verwendet wird, nur minimale Änderungen benötigt. Es ist außerdem zu beachten, daß der Betrieb von Cache 40 in bezug auf die DASDs 16 und den Host 11 verbesserte und simultane Zugriffe liefert, um einen Speicher nach Cache-Prinzip zu erzielen; er besitzt eine hohe Leistung bei gleichzeitig großer Kapazität.
  • Bei der Implementierung von Proxy-Arbeit innerhalb des Speicherdirektors 17 wird eine Proxy-Warteschlange 84 an ACE 50 hinzugefügt, was in den späteren Ausführungen deutlich wird. Wie bereits an früherer Stelle erwähnt wurde, kann bei Proxy- Schreiboperationen die Warteschlange WQ sowohl für lokale als auch für Proxy-Operationen verwendet werden. Die Proxy- Warteschlange 84 ist noch immer nützlich für das Proxy-Lesen aus DASD bis hin zu Cache-Operationen. Die Proxy-Warteschlange 84 in der bevorzugten Anordnung enthält nur eine Proxy-Arbeit pro DASD 16, beispielsweise eine Schreib- oder eine Leseoperation, die in bezug auf einen DASD 16 ausgeführt wird. Außerdem ist bei der Verwendung von Proxy-Lesearbeiten ein Proxy-Bit P97 in LDCB 62 enthalten. Außerdem enthält die Warteschlange 69, die als separate Warteschlange für jeden der Speicherdirektoren dargestellt ist eine Lesewarteschlange RQ, eine Schreibwarteschlange WQ und möglicherweise ein Proxy-Bit P, das anzeigt, daß bei der Vollendung der asynchronen Proxy-Arbeit, wenn keine gemeinsame oder geteilte Warteschlange verwendet wird, eine Antwort an den anderen Speicherdirektor 17 geliefert werden muß, so daß sie ihre entsprechenden Aufzeichnungen aktualisieren kann. Die Meldung RAM 18 enthält Zugriffs- und Kommunikationsschaltungen 335, die den Speicherdirektor 17 in die Lage versetzen, auf den RAM-Bereich 336 zuzugreifen und Anweisungen zur Ermöglichung der Kommunikationen durch einen entsprechenden Meldungsbereich im anderen Speicherdirektor 17 zu geben; das heißt, der Meldebereich 18, wie in Fig. 1 dargestellt, besteht in einer bevorzugten Anordnung aus zwei Bereichen; jeder dieser Speicherbereiche befindet sich im dazugehörigen Speicherdirektor 17. Alternativ hierzu kann ein Einzelmeldungs-RAM 18 vorgesehen werden, bei dem das Packaging in einem der Speicherdirektoren 17 stattfindet. Im Meldungs-RAM 18 enthält die Steuerung 335 die üblichen Zugriffs- und Kommunikationssteuerungen 337, die dem Fachmann der Datenverarbeitungstechnologie bekannt sind. Beispielsweise Datenfluß: Die Parameterdaten werden mit der Meldung 18 über die Busse 338 und 340 übertragen, so daß die vom ACE 50 übertragenen Proxy-Daten zur Proxy-Warteschlange 84 geleitet werden; diese Proxy-Daten aktualisieren P Bit 97 und die Warteschlange 69. Diese Parameterdaten reichen aus, um es ACE 50 zu ermöglichen, den geeigneten Befehl an CAC 61 und DAC 56 zu liefern und zwar in derselben Weise, in der es Befehle als Antwort auf Anforderungen vom Host 11 liefert. Die üblichen Handshake-Steuerungen befinden sich zwischen der Steuerung 337 und ACE 50, wie dies durch die Linie 341 dargestellt ist und zum anderen Speicherdirektor, wie dies durch die Linie 342 dargestellt ist. Da solche Handshake-Steuerungen bekannt sind, werden sie hier nicht näher ausgeführt, um nicht von der Beschreibung der eigentlichen Erfindung abzuweichen.
  • Fig. 4 stellt eine bevorzugte Implementierung der in Fig. 3 dargestellten Anordnung dar. Die Steuerung 31 aus Fig. 3 wird in einer Computerform implementiert, wie dies in Fig. 4 dargestellt ist; hier ist ein digitaler Prozessor 31P enthalten, der direkt mit den Kanaladaptern 32 über die Pfade 51 bis 54 kommuniziert. Der Datenfluß zwischen dem Host 11 und den DASDs 16 erfolgt über einen Bus 70, der sich direkt von den Kanaladaptern 32 bis zu den Datenflußschaltungen 33 erstreckt. Die Kanaladapter 32 verwenden Schaltungen für das Zu- und Abschalten von Bus 70, was in den meisten heutigen Steuereinheiten praktiziert wird. Der Prozessor 31P steuert die Datenflußschaltungen 33 über den Bus 71, was bereits bekannt ist und aus diesem Grund nicht ausführlicher erläutert wird. Der Prozessor 31P kommuniziert mit dem Systemspeicher 30 über den Bus 72. Der Bus 72 leitet normalerweise Adreßsignale, Lesebefehlssignale, Speichersteuersignale und ähnliches zum Systemspeicher 30. Der Prozessor 31P wird durch einen Satz an Mikrocode-Programmen, die im Steuerspeicher 73 enthalten sind, gesteuert. Der Prozessor 31P holt die Mikrocode-Programme über den Bus 74 und ermöglicht dadurch dem Prozessor 31P, sämtliche der Steuerfunktionen auszuführen, die für die in Fig. 3 dargestellte Steuerung 31 beschrieben ist. Beispielsweise werden die Funktionen der Adreßund Befehlsauswertung ACE 50 durch den Prozessor 31P ausgeführt, der die Programme ACE 50P ausführt. In ähnlicher Weise werden die Funktionen der direkten Zugriffssteuerung DAC 56 durch den Prozessor 31P ausgeführt, der die Programme DAC 56P ausführt; die Cache-Zugriffssteuerung 61 entspricht den Programmen CAC 61P. Natürlich erfordert der Betrieb eines Speichersystems viele andere Programme für Diagnosezwecke und ähnliches, was durch OP (andere Programme) 75 dargestellt ist. Der Steuerungsspeicher 73 enthält ebenfalls die adressierbaren Register LDCB 62 (die das Proxy-Bit 97 enthalten), ADEB 76, die Warteschlangenregister 69 (einschließlich WR, RQ und P), CCB 63, möglicherweise SIT 45 sowie andere Register, die für die vorliegende Erfindung nicht relevant sind, die jedoch der Prozessor 31P möglicherweise verwendet, um das Speichersystem 10 zu nutzen. Beispielsweise können die Funktionen der Hashing-Schaltungen 44 von OP 75 ausgeführt werden. Die Kommunikationen mit SIT 45 im Systemspeicher 30 (oder je nach dem im Steuerspeicher 73) vom OP 75 erfolgen natürlich über den Prozessor 31P, der die Programme ausführt und der geeignete Ausgabe-Steuersignale über den Bus 72 zum Systemspeicher 30 sendet; wenn sich SIT 45 im Steuerspeicher 73 befindet, werden die Operationen schneller ausgeführt.
  • Bevor die ausführliche Beschreibung der Operation der vorliegenden Erfindung, wie sie in dem in den Fig. 3 und 4 dargestellten Datenspeichersystem angeordnet ist, werden die Register, die die für eine erfolgreiche Anwendung der Erfindung in der dargestellten Anordnung erforderlichen Steuerdaten enthalten, in bezug auf Fig. 5 beschrieben. LDCB 62 enthält Steuerdaten für den Prozessor 31P, um erfolgreich alle Abläufe des Speichersystems 10 im Hinblick auf jeden der logischen Devices verarbeiten zu können. Für jeden DASD 16 gibt es drei logische Device-Steuerblöcke. In einem 8-Devices-Steuersystem 10 wären 24 logische Devices-Steuerblöcke. Der direkte Zugriff aus DASDs 16, der über DAC 56 abgewickelt wird, erfordert keinen logischen Device-Steuerblock; DAC behandelt den Zugriff wie bisherige Plattenspeichersysteme.
  • LDCB 62 ist am besten verständlich, wenn man die Steuerdaten in vier Hauptbereiche unterteilt. Ein erster Teil, Fundament 80, bezieht sich auf die Steuerdaten, die die grundlegenden Funktionen der dargestellten Anordnung beschreiben. PPARMs 81 (Paging- Parameter) enthalten Steuerdaten, die sich auf den Befehl SET PAGING PARAMETERS, der von Host 11 empfangen wird, bezieht.
  • CPARMs 82 (Steuerparameter) enthalten Steuerdaten, die sich auf die Befehle SET SECTOR, SEEK und SEARCH ID, die vom Host 11 empfangen werden, beziehen. Die RPARMs (Leseparameter) beziehen sich auf die Steuerdaten für den Zugriff auf die DASDs 16 zum Zweck der Übertragung von Datensignalen zum Cache 40.
  • Was die praktische Anwendung der vorliegenden Erfindung betrifft, enthält der Fundamentteil 80 die folgenden Steuerdatenfelder: ODE 90 ist ein einzelnes Bit, das anzeigt, daß ein Device-Ende (DE) für den Host fällig ist in bezug auf den logischen Device, der mit dem vorliegenden LDCB in Zusammenhang steht. Die Kanalmaske (CNLMASK) 91 zeigt an, welcher der Kanaladapter 32, also welcher der Kanäle von Host 11 den logischen Device aktiviert hat, um auf Daten von einem identifizierten DASD 16 über Cache 40 zuzugreifen. Die logische Adresse 92 (LDADDR) stellt fest, welche der logischen Adressen mit LDCB in Zusammenhang stehen. Beispielsweise würde ein DASD 16 LDADDR 92 das Bitmuster 01000 für einen ersten der drei logischen Devices auf der Grundlage von DASD 16 enthalten. Aus praktischen Gründen erfolgt die Adressierung der LDCBs durch eine logische Device- Adresse, die als Abweichung von einer Basisadresse verwendet wird. Die LDADDR-Sektion 92 stellt eine überprüfende und selbstidentifizierende Funktion von LDCB 62 dar. Jeder Befehl, der vom Host 11 empfangen wurde, der gegenwärtig im System 10 für den identifizierten logischen Device aktiv ist, wird im CMD 93 gespeichert. SEQ 94 ist ein Einzelbit, das feststellt, ob ein sequenzieller Zugriff vom Host 11 angezeigt wurde. Wenn dieses Bit aktiv ist, zeigt es an, daß der Host 11 eine Folge an Paging-Blockdaten primär in vorbestimmter Reihenfolge lesen wird. CCR 95 ist ein Bit, das anzeigt, daß ein Channel Command Retry (CCR) derzeit abläuft und beispielsweise an den Host 11 gesendet wurde. Cannel Command Retries sind Bestandteil der bekannten IBM Eingabe/Ausgabe-Systemoperationen und werden verwendet, wenn eine Cache 40-fehlfunktion auftritt. MISS Bit 96 zeigt an, daß ein Durchlauf von DIR 43 eine MISS-Bedingung ergeben hat, weil beispielsweise keine gewünschten Daten im Cache 40 waren oder kein Speicherplatz für die vom Host 11 zu schreibenden Daten im Cache 40 zugeordnet war. Das Proxy-Bit P97 befindet sich im Fundamentteil 80. Natürlich findet man auch andere Steuerfelder in diesem Bereich, jedoch sind diese zum Verständnis der vorliegenden Erfindung nicht notwendig und werden daher nicht näher erläutert.
  • PPARMs 81 enthält SEQ 100, um anzuzeigen, daß eine Anzahl an zusammenhängenden Blockadressen von Host 11 referenziert werden. SEQ 100 enthält dieselben Informationen wie SEQ 94. RO 101 zeigt an, daß alle Paging-Blöcke, die von Cache 40 über den Kanaladapter 32 an den Host 11 als Ergebnis eines READ-Befehls von Host 11 übertragen werden, nach dieser Datenübertragung invalidiert werden können. B COUNT 102 zeigt die aktuelle Anzahl der noch zu verarbeitenden Paging-Blöcke an. BASE CYL 103 zeigt die Basiszylinderadresse an, die während der Ausführung eines SET PAGING PARAMETER-Befehls empfangen wurde. Weitere Felder, die im Zusammenhang mit der vorliegenden Erfindung nicht relevant sind, kommen ebenfalls in den PPARMs 81 vor.
  • CPARMs 82 enthalten SEEK ADDR 104, welches die Adresse eines DASD 16 zusammen mit seinem Zylinder und seinen Spuradressen zur Ausführung einer Plattenspeichersuche enthält, was bekannt ist. SID 105 enthält das Suchidentifikationsargument. SECT 106 enthält den aktuellen SET SECTOR-Wert, beispielsweise die Rotationsposition eines Plattenspeichers für den Zugriff eines Paging-Blocks.
  • RPARMs 83 enthält REQD 110 zur Anzeige, daß ein Zugriff auf ein DASD 16 erforderlich ist, um einer Host-Anforderung zu genügen; beispielsweise müssen Daten von einem DASD 16 an Cache 40 übertragen werden, um eine Verbindung mit Host 11 herzustellen. RIP 111 zeigt an, daß eine aktuelle Übertragung von einem DASD 16 zum Cache 40 derzeit abläuft. RA 112 zeigt an, daß eine gewisse Nachverarbeitung für die Übertragung vom DASD 16 zum Cache 40 derzeit abläuft. In den RPARMs 83 lassen sich weitere Steuer-Flags zur Statusanzeige des Verhältnisses zwischen den DASDs 16 und dem Cache 40 integrieren. DADDR 113 enthält die Adresse eines DASD 16, das in der Leseoperation involviert ist. DIR INDEX 114 ist ein Index an das Verzeichnis 43, der zur Berechnung der Adresse des entsprechenden Eintrags im Verzeichnis verwendet wird, was durch DADDR 113 und die entsprechende Kennzeichnung des Zylinderkopfes und die Aufzeichnung angezeigt wird. SSAR 115 enthält die Angabe des Speicheradreßregisters (nicht dargestellt) des Systemspeichers 30, der in Verbindung mit dem Lesen eines Paging-Blocks aus einem DASD 16 und dessen Weiterleitung an einen Systemspeicher 30 verwendet wird. In diesem Fall kann der Systemspeicher 30 eine Mehrzahl (beispielsweise 8 oder 16) an Adreßregistern aufweisen, die adressierbar sind, um schnellere Datenübertragungen zwischen dem Host 11 und dem Cache 40 sowie zwischen dem DASD 16 und Cache 40 zu vereinfachen. Ein einzelner SSAR ist ebenfalls akzeptabel. CADDR 118 enthält eine aktuelle Adresse des Cache-Blocks für die Übertragung von Signalen zwischen dem Cache 40 und einem DASD 16. SAVE 119 ist ein vorübergehender Speicherbereich für Parameter für nicht angeschlossene Operationen, was gewöhnlich in der Datenverarbeitung praktiziert wird, besonders bei der Steuerung peripherer Devices.
  • CCB 63 enthält SPP Bit 120, welches angibt, ob ein SET PAGING PARAMETERS-Befehl empfangen wurde. Der SET PAGING PARAMETERS- Befehl ermöglicht den Zugriff auf den Systemspeicher 30 für die Operation in einem Paging-Modus. CC Bit 121 zeigt an, daß der Host 11 eine Befehlsverkettung aufgestellt hat. Die Befehlsverkettung ist eine Operation, die einen Befehlssatz zusammenfaßt, was in der Datenverarbeitungstechnologie weit verbreitet ist. Das RR Bit 122 zeigt an, daß ein Lese-Wiederholungsversuch im Systemspeicher 30 aktiv ist. Beispielsweise kann eine Fehlerbedingung auftreten; die Beseitigung dieser Fehlerbedingung kann einen Lese-Wiederholungsversuch erforderlich machen. Die näheren Einzelheiten des Wiederholungsversuchs werden in der vorliegenden Beschreibung nicht aufgeführt. CMD 123 enthält den aktuellen oder letzten Befehl, der vom Host 11 empfangen wurde und der gegenwärtig im Speichersystem 10 behandelt wird. CNL MASK 124 stellt fest, welcher Kanaladapter 32 den Inhalt von CMD 123 an die Steuerung 31 weitergeleitet hat. LDADDR 125 enthält die Adresse eines logischen Device, der derzeit von Host 11 ausgewählt ist. LDCBP 126 ist ein Hinweis oder Adreßwert, der auf den LDCB 62 hinweist, der mit dem aktuellen logischen Device in Verbindung steht. SPEED 127 zeigt die Datengeschwindigkeit eines angeschlossenen Kanals an. RWR 128 bezieht sich auf übergangene Zählungen, bevor ein Wiederholungsversuch vermieden wird; da die Schwellen für die Wiederholungsversuche bekannt sind, wird diese Maßnahme in der vorliegenden Anwendung nicht beschrieben. CCB 63 kann zusätzliche Steuerbits und -felder enthalten, je nach dem, wie die Anordnung dies erforderlich macht.
  • ADEB 76 enthält einen Eintrag aus DIR 43. Entsprechend geht die Beschreibung von ADEB 76 ebenfalls auf DIR 43 ein. INDEX 107 ist die logische Adresse des momentanen Verzeichniseintrags. Dieses Feld liefert selbstidentifizierende Daten in jedem Eintrag. INDEX 107 enthält dieselben Informationen, die auch in DIR INDEX 114 von den RPARMs 83 enthalten sind. Die Sektion 108 enthält die Adresse des DASD 16, welches die Daten speichert, die möglicherweise im Cache 40 vervielfältigt werden oder vervielfältigt werden sollen. CCP gibt die Zylinderadresse des physikalischen Device an, während CCL die logische Zylinderadresse des Device angibt. H gibt die Kopfadresse an, beispielsweise auf welche Oberfläche des DASD 16 zugegriffen werden soll, D ist die Device-Adresse, R ist die Aufzeichnungsnummer und SECTOR enthält die Sektoradresse, beispielsweise die Rotationsposition. D entspricht DADDR 113. Aus dem bisher gesagten ist ersichtlich, daß LDCB 62 alle Steuerungen für die logischen Devices liefert, während DIR 43 und ADEB 76 die Steuerungen für die DASDs 16 enthalten und zwar unabhängig von den logischen Devices. Das heißt, der Betrieb des Speichersystems 10 zwischen den DASDs 16 und dem Systemspeicher 30 ist für alle logischen Devices derselbe. Die Steuerung 31 sorgt für die Trennung und die Kontinuität der logischen Devices, die zwischen dem Host 11 und dem Systemspeicher 30 für die Bereitstellung von Mehrfachzugriffen auf ein DASD 16 bestehen. LINK 109 von ADEB 76 verbindet die Eingänge von DIR 43 jeder Hashing-Klasse. In anderen Worten, die Hashing-Schaltung 44 greift über SIT 45 auf einen ersten Eintrag in DIR 43 zu. Handelt es sich bei diesem Eintrag um einen Nicht-Vergleich, dann wird LINK 109 verwendet, um einen zweiten Eintrag aus DIR 43 zu holen, der sich in derselben Hashing-Klasse befindet und daher von der SIT 45-Anzeige für DIR 43 identifiziert wird. Am Ende der Hashing-Klasse hat LINK 109 nur noch Nullen und zeigt damit das Ende des Hashing oder der Verkettung von Einträgen in DIR 43 an. Werden in SIT 45 nur Nullen vorgefunden, so ist eine Fehlfunktion eingetreten. Natürlich kann das Verzeichnis 43 zusätzliche Felder für jeden Eintrag enthalten; dies gehört jedoch nicht zum Anwendungsbereich der vorliegenden Beschreibung.
  • Die Datenübertragungen zwischen dem Systemspeicher 30 und den DASDs 16 sind asynchron und im wesentlichen unabhängig von den Operationen zwischen dem Host 11 und den DASDs 16 sowie von den Operationen zwischen dem Host 11 und dem Systemspeicher 30. Zur Erzielung dieser Unabhängigkeit wird ein Satz an Lesewarteschlangen RQs und Schreibwarteschlangen WQs in einem Satz Warteschlangenregister 69 aufgestellt. Die Warteschlange 69 enthält die Schreibwarteschlange 85, die eine separate Warteschlange für jeden der Devices mit der Bezeichnung D0 bis D4 enthält... Jedes Schreibwarteschlangenregister enthält den Index, der Index 107 von DIR 43 entspricht. Die Warteschlange speichert auch die Adresse, die für den Zugriff der geeigneten DASDs 16 erforderlich ist; dies umfaßt ein Anforderungsargument, ein Suchargument, einen Sektor, einen Device, Schreib- und Lesemasken und den Adreßteil für den Zugriff auf Cache 40, beispielsweise die Cache-Blockadresse und den SSAR (nicht dargestellt) für die Adressierung des Systemspeichers 30. Wird eine Proxy-Schreibarbeit an einen anderen Speicherdirektor 17 gesendet, so kann die Schreibwarteschlange WQ 85 gelöscht werden, so daß die Schreibvervielfältigungen nicht auftreten. Es ist jedoch sehr wichtig, darauf zu achten, daß der asynchrone Schreibablauf stattfindet. Entsprechend kann es wünschenswert sein, innerhalb der Schreibwarteschlange 85 anzuzeigen, daß ein Proxy-Schreibablauf an den anderen Speicherdirektor ausgegeben wurde. Eine solche Anzeige erfolgt durch das Einzelbit PBO in der entsprechenden Schreibwarteschlange, die sich auf den Device bezieht. PBO zeigt dem Speicherdirektor an, daß eine Proxy-Schreibaufgabe an den anderen Speicherdirektor gesendet wird, daß eine Proxy-Schreibaufgabe an ein gegebenes DASD 16 initiiert wurde. In einer Anordnung der Erfindung befindet sich die empfangene Proxy-Schreibaufgabe in der Einzel-Proxy-Warteschlange 84 für ein DASD 16. Für das Mischen von Schreibaufgaben aus beiden Speicherdirektoren enthält WQ 85 ein Eingabe-Proxy-Schreibbit PWI, um dem Speicherdirektor 17 beim Scannen von WQ 85 mitzuteilen, die Proxy-Warteschlange 84 nach zusätzlichen Schreiboperationen zum dazugehörigen DASD 16 zu überprüfen. ID 361 die Identifikation der Proxy-Aufgabe, die durch die in den an späterer Stelle beschriebenen Elementen 350 bis 360 gespeicherten Signale dargestellt ist. Ein solches ID wird durch einen Zähler PIDK 363 für einen anfordernden Speicherdirektor 17 erzeugt; hierbei handelt es sich um einen Proxy-Identifikationszähler. PIDK 363 wird jedesmal, wenn eine Proxy-Anforderung zu einem anderen Speicherdirektor 17 gesendet wird, inkrementiert. Ein solches ID enthält die Identifikation des Speicherdirektors im statistischen Feld SD 364. In WQ 85 kann ein Verkettungsfeld enthalten sein, das auf den nächsten Eintrag in der Schreibwarteschlange 85 für den gegebenen Device hinweist oder für den Hinweis auf die nächste Device-Schreiboperation dient, welche Seite beispielsweise im Cache 40 als nächstes in ein DASD 16 geschrieben werden soll. Entsprechend kann jede Schreibwarteschlange 85 eine oder mehrere Schreiboperationen für ein gegebenes DASD 16 enthalten.
  • Die Warteschlange 69 enthält außerdem die Lesewarteschlangen RQ, von denen jede die Teile 86 und 87 enthält, die eine Round-Robin-Warteschlange darstellen. Der Teil 86 enthält die LDCB 62-Adressen zur Identifizierung, welche logischen Devices Datenübertragungen vom entsprechenden DASD 16 an den Cache 40 erfordern. Der Teil 87 zeigt einen Hinweis an einen von drei möglichen Einträgen in jeder Warteschlange und zwar zum Hinweis, welcher logische Device als nächstes zu bedienen ist. Beispielsweise enthält D0 im Teil 87 die Ziffer 2, die anzeigt, daß LDCB 2 als nächstes zu bedienen ist; danach wird erst LDCB 2 und anschließend LDCB 3 bedient, anschließend LDCB 1 usw. D0 besitzt eine vollständige Lesewarteschlange für alle dazugehörigen logischen Devices. Der Device D1 besitzt zwei Einträge. In dieser Lesewarteschlange zeigen LDCB 1 und LDCB 3 mit der Hinweisziffer 3 im Teil 87 an, daß LDCB 3 als nächstes zu bedienen ist. Durch Zugriff auf die Lesewarteschlange 86-87 wird der Prozessor 31P dazu befähigt, auf den korrekten LDCB 62 für die Datenübertragung von einem DASD 16 auf den Cache 40 zuzugreifen und zwar in einer geeigneter Reihenfolge, die abhängig ist von der Reihenfolge, in der die Daten vom Host 11 angefordert wurden. Andere Formen der Prioritätsbestimmung können bei der praktischen Anwendung der vorliegenden Erfindung ebenfalls in Betracht gezogen werden. Zum besseren Aufspüren der Proxy-Leseanforderungen kann der Teil RQ 86 für jeden LDCB- Eintrag zwei Bitpositionen, nämlich PRO und PRI, enthalten. PRO zeigt an, daß ein Proxy-Lesevorgang an den anderen Speicherdirektor 17 ausgegeben wurde, während PRI bedeutet, daß ein Proxy- Lesevorgang vom anderen Speicherdirektor 17 eingegeben wurde. Das Proxy-Bit 97 kann sowohl PRO- als auch PRI-Bits enthalten. Der Betrieb des Lese-Proxy-Bits ist derselbe wie der, der für WQ 85 beschrieben wird. Die Proxy-Warteschlange 84 in einer ersten Anordnung, in der nur eine einzige Proxy-Arbeit zu einer gegebenen Zeit ausgeführt werden kann, enthält einen Satz an Registern, in denen Proxy-Arbeiten in eine Warteschlange gestellt werden können. Eine dazugehörige Mehrzahl an Registern kann eine Mehrfach-Proxy-Warteschlange behandeln; jeder Satz an Registern enthält dieselben Daten plus ein Verkettungsfeld (nicht dargestellt) für die Verkettung der Register sowie eine Prioritätsanzeige, die angibt, welche Proxy-Arbeit als erste durchzuführen ist. Wie in Fig. 5 dargestellt ist, enthält die Proxy-Arbeitsschlange 84 das Bit PDR 350 zur Anzeige, daß ein Proxy-Destage empfangen wurde. Ein Destage entspricht einer Schreiboperation zur Übertragung von Daten aus dem Cache 40 in ein angegebenes DASD 16. In ähnlicher Weise handelt es sich bei PSR 351 um ein Einzelbit, das anzeigt, daß ein Proxy-Stage empfangen wurde. Ein Stage entspricht einer Leseoperation, bei der Daten von einem DASD 16 in einen Cache 40 übertragen werden. Die Adresse des DASD 16 ist im Register 352 enthalten, das außerdem die Device-Anzeige D0 usw. sowie die interne Adreßbezeichnung des Zylinders, des Kopfes und der Aufzeichnungsziffern (CCHHR) enthält. Diese Adresse liefert außerdem eine Eingabe an Verzeichnis 43 für den Zugriff auf den geeigneten Bereich im Cache 40 für die Datenübertragung, die durch die Bits 350 und 351 angezeigt wird. Die Zuordnung von Datenspeicherplatz im Cache 40 und die Wiederaufhebung dieser Zuordnung erfolgt nach gewöhnlichen Prozeduren. An 353 wird die Block- oder Aufzeichnungszählung BCOUNT gespeichert. Dadurch ist es einer Einzel-Proxy-Anweisung möglich, eine Mehrzahl an Aufzeichnungen zu behandeln, um auf effektivere Weise die asynchronen Datenübertragungen auszuführen. QS 354 ist ein Einzelbit, welches anzeigt, daß eine Statusanforderung gesendet wurde. Das heißt, der arbeitsanfordernde Speicherdirektor 17 hat an einen Speicherdirektor 17, der für die Aufnahme von Proxy-Arbeit bereitsteht, eine Anforderung gesendet. Es wird darauf hingewiesen, daß der Empfang zusätzlicher Arbeit von Host 11, der dadurch zustandekommt, daß der Speicherdirektor 17 ein QS an den anderen Speicherdirektor sendet, die Proxy-Operation nicht beeinträchtigt oder verhindert. PS 355 zeigt an, daß für den anderen arbeitssendenden Speicherdirektor 17 ein Proxy-Stage begonnen wurde. Entsprechend zeigt PD 356 an, daß ein Proxy-Destage begonnen wurde. CPS 357 zeigt an, daß das Proxy-Stage, dessen Beginn durch das Bit PS 355 angezeigt wird, beendet ist. In ähnlicher Weise zeigt CPD 358 an, daß das durch PD 356 angezeigte Proxy-Destage beendet ist. PE 359 zeigt an, daß eine Fehlerbedingung während der Proxy-Operation aufgetreten ist; diese Fehlerbedingung ist an den anderen Speicherdirektor zu senden. Die Bits 354 bis 359 sind Meldestatusbits, die dem Speicherdirektor 17 den Status einer Proxy-Arbeit mitteilen. PA 360 zeigt an, daß für eine Proxy-Operation eine Bestätigung gesendet oder empfangen wurde. Wenn QS 354 und PA 360 beide auf Einheit gesetzt wurden, dann wurde eine Proxy-Anforderung gesendet und der andere arbeitssendende Speicherdirektor 17 hat diese Anforderung bestätigt, so daß die empfangene Proxy-Arbeit unabhängig vom arbeitssendenden Speicherdirektor 17 ausgeführt werden kann. Zusätzlich zu den in Fig. 5 dargestellten Registern können zum Aufbau eines Speichersystems 10 andere Register verwendet werden. Diese Register sind jedoch für das Verständnis der praktischen Anwendung der vorliegenden Erfindung in der dargestellten Umgebung nicht erforderlich.
  • Fig. 6 ist eine vereinfachte Darstellung von ACE 50P zusammen mit der Verbindung der Kanalschaltungen 32, die darstellen, wie die vorliegende Erfindung in bezug auf jenen Teil von Steuerung 31 praktisch umgesetzt wird. Es ist zu berücksichtigen, daß andere Befehle und Funktionen in ACE 50P ausgeführt werden, die für das Verständnis der vorliegenden Erfindung nicht erforderlich sind. Die Befehle von Host 11 werden über einen Eingabe/Ausgabe-Anschluß 12-15 an einen Kanaladapter 32 geleitet, der eine gewöhnliche Befehlsvorverarbeitung ausführt und an das Register 130 eine Befehlscodepermutation und eine Codepermutation des logischen Device liefert. Der Bus 131 befördert einen Teil der Adresse in Register 130, der die Steuereinheit CU identifiziert, wie dies in bezug auf Fig. 3 erklärt wird. Der Bus 132 befördert eine DASD 16-Adresse, beispielsweise Adresse 23 des gesamten Adreßfeldes als DEV von Element 20. Der Bus 133 befördert die Codepermutation AC (Element 20, Fig. 1), die feststellt, ob ein direkter Zugriff auf das adressierte DASD 16 zu implementieren ist oder welcher logische Device derzeit adressiert wird. Der Bus 134 befördert eine Codepermutation für den empfangenen Befehl zur Steuerung 31. Zusätzlich liefern die Kanaladapter 32 Unterbrechungssignale an den Prozessor 31P, um das Mikrocodeprogramm ACE 50P zu aktivieren. Bei der Aktivierung durch ein Unterbrechungssignal des Kanaladapters 32 führt der Prozessor 31P einige nicht dazugehörige Funktionen an 135 aus, bevor der empfangene Befehl verarbeitet wird, wie dies in der vorliegenden Erfindung vorgesehen ist. An 136 wird der Adreßteil AC analysiert, um zu bestimmen, ob ein direkter Zugriff auf die DASDs 16 gewünscht wird oder ob der Zugriff auf die Devices über den Cache 40 erfolgt. Bei einem Zugriff im Direktmodus wird der logische Pfad 137 durch einen Prozessor 31P nach DAC 56P verfolgt. Bei der Aktivierung von DAC 56P ist es wünschenswert, daß der adressierte DASD 16 belegt ist und nicht für die Datensignalübertragung mit Cache 40 zur Verfügung steht. Wird der Direktmodus an 136 nicht angezeigt, so wird der Paging-Modus, beispielsweise der Zugriff auf Daten eines Device 16 über den Cache 40, angezeigt. Am logischen Schritt 140 wird ein Page-Bit (PB) eines internen Registers im Prozessor 31P auf die aktive Bedingung gesetzt. Dieses Bit wird nur von ACE 50P verwendet, um anzuzeigen, daß ein Befehl im Paging-Modus verarbeitet wird. Nach der Beendigung einer ACE 50P-Operation wird PB gelöscht. Aus diesem Grund wird die Bit-Position eines internen Registers nicht dargestellt. Nach dem Schritt 140 werden einige nicht dazugehörige logische Schritte an 141 ausgeführt. An 142 wird festgestellt, ob der empfangene Befehl ein SENSE-Befehl (der Host 11 hat SENSE oder Statusinformationen vom Speichersystem 10 angefordert) für den adressierten logischen Device ist. Bei einem SENSE-Befehl wird der logische Pfad 143 bis Schritt 144 verfolgt, wo PB auf Null gesetzt wird, beispielsweise werden Statusinformationen an Host 11 geliefert und weitere Paging-Funktionen werden nicht mehr ausgeführt.
  • Nach dem Schritt 142 wird bei einem Befehl, der nicht dem Typ SENSE entspricht, der logische Schritt 145 ausgeführt. Vor der Ausführung von Schritt 145 werden Fehlerprüfbedingungen als nicht existent festgestellt; gewisse interne Funktionen, die nicht zur praktischen Anwendung der vorliegenden Erfindung gehören, beispielsweise Adreßeinstellungen u.ä., werden ausgeführt. Anschließend in Schritt 145 stellt ACE 50P den Befehl SET PAGING PARAMETERS (SPP) fest. Bei einem festgestellten SET PAGING PARAMETERS-Befehl wird der logische Pfad 146 bis zu den in Fig. 9 dargestellten Schritten verfolgt. Andernfalls werden einige andere nicht dazugehörige Funktionen an 147 ausgeführt und es folgt die Feststellung eines Nichtoperationsbefehls 148. Bei einem Nichtoperationsbefehl wird der logische Pfad 149 zu Funktionen verfolgt, die an dieser Stelle nicht näher beschrieben werden. An 138 wird PB auf Null gesetzt, was einige nicht dazugehörige Funktionen an 139 nach sich zieht. Danach wird CAC 61P aktiviert, wie dies in Fig. 7 dargestellt ist. Fig. 7 stellt die logischen Schritte von DAC 56P dar, die für das Verständnis der vorliegenden Erfindung erforderlich sind. Die Aktivierung von 56P kann entweder durch ACE 50P oder CAC 61P erfolgen. Für den direkten Zugriff auf die DASDs 16 resultiert die Eingabe an 55 (siehe Fig. 1) von ACE 50 aus in einem Versuch der Auswahl des adressierten DASD 16 an 150. Außerdem wird der Flip-Flop 153 (im Innern des Prozessors 31P) auf die Bedingungen für die Anzeige des direkten Zugriffsmodus (50) nach den Schritten 150 eingestellt; an 151 stellt der Prozessor 31P fest, ob der adressierte Device für einen Kanaladapter 32 vorbehalten ist, der den Befehl nicht erhalten hat. Wenn dies der Fall ist, dann führt der logische Pfad 152 den Prozessor 31P zum gewöhnlichen Vorbehaltverstoßcode, der dem anfordernden Kanaladapter 32 einen belegten Status anzeigt. Ist der Device nicht für einen anderen Kanaladapter vorbehalten, dann wird die Device-Auswahl innerhalb von DAC 56P fortgeführt.
  • Der angeforderte Zugriff auf ein DASD 16 über DAC 56P kann außerdem von CAC 61P über den logischen Pfad 66 auftreten. Eine solche Anforderung hat zur Folge, daß der Flip-Flop 153 an 61 gesetzt wird und so anzeigt, daß ein Paging-Zugriff abläuft. Da die Anforderung von CAC 61P über den logischen Pfad 66 läuft und zwar nach dem Vorbehaltauswertungsschritt 151, hat der Device- Vorbehalt keine Auswirkung auf den Paging-Zugriff auf die DASDs 16. Von Schritt 151 oder von Pfad 66 aus überprüft der logische Schritt 154, ob der entweder durch Host 11 oder durch CAC 61P adressierte DASD 16 belegt ist, ob er beispielsweise derzeit eine Datenverarbeitungsfunktion oder eine frei stehende Funktion, wie das radiale Aufsuchen einer Spur, ausführt. Ist der Device nicht belegt, so wird ein 'Device belegt' Flip-Flop (nicht dargestellt) an 155 auf aktiv gesetzt. Ein solcher Flip-Flop kann sowohl durch den Kanaladapter 32 als auch durch den Prozessor 31P gemessen werden, um festzustellen, ob der Device belegt ist. An 156 ist die adressierte DASD 16-Auswahl beendet und ermöglicht dadurch eine nachfolgende Datenübertragung. An 157 wird die Operation ausgeführt. Das heißt, besteht der Befehl von der Steuereinheit an das adressierte DASD darin, einen Zylinder zu durchsuchen, dann führt der Schritt 157 zur Übertragung des Befehls SEEK CYLINDER zusammen mit der Zielzylinderadresse zum adressierten DASD 16; beim Befehl READ würde ein Lesevorgang durchgeführt, wobei die Signale von 16-18 an den Host 11 über den Bus 70 (Fig. 4) oder an Cache 40 über Bus 42 übertragen würden.
  • Wenn andererseits das adressierte DASD belegt ist, dann wird an 160 die Anzeige 'DEVICE belegt' an den anfordernden Kanaladapter 32 oder an CAC 61P übertragen. Ein Device-Steuerblock DCB (nicht dargestellt), der Steuerdaten für den Betrieb mit Devices enthält, besitzt ein Device-End-Flag, das an 161 auf Einheit gesetzt ist. Bei einem versuchten Zugriff von einem CAC 61P auf DASDs 16 wird ODE 90 von LDCB 62 (Fig. 5) auf die aktive Bedingung gesetzt. An 162 bestimmt der Prozessor 31P, ob die soeben ausgeführte Operation einem direkten Zugriff oder einem Paging-Zugriff dient. Der Flip-Flop 153 liefert dieses Anzeigesignal über die Leitung 163, so daß, wenn sich der Flip-Flop 153 im Status 61 befindet, der logische Pfad 68 zu 61P verfolgt wird, während der direkte Zugriffsmodus (der Status 50) aktiv ist; die Rückkehr zu ACE 50P zur Mitteilung des Status und zum Abschließen der Operationen mit dem Kanaladapter 32 wird durchgeführt. Solche Status- und Abschlußoperationen werden normalerweise im Zusammenhang mit IBM Computern ausgeführt und werden daher an dieser Stelle nicht näher beschrieben.
  • Fig. 8 stellt den gesamten logischen Fluß der Operation des Systems 10 dar. Von ACE 50P aus wird der Paging-Modus an 170 eingestellt, was an späterer Stelle in bezug auf Fig. 9 beschrieben wird. An 171 werden einige nicht dazugehörige Funktionen ausgeführt, sobald die vollendete Einstellung des Paging- Modus über ACE 50P an 172 mitgeteilt wird. Anschließend sendet der Host 11 einen weiteren Befehl, der an 173 decodiert wird.
  • Die Ausführung des Befehls wird an 174 initiiert. Ein Durchsuchen des Verzeichnisses erfolgt an 175, um festzustellen, ob der Speicherplatz in Cache 40 dem anfordernden Paging-Block zugeteilt wurde. Bei einem erfolgreichen Auffinden an 176 wird eine Datenübertragung, die entweder ein Lesevorgang an Host 11 oder ein Schreibvorgang von Host 11 ist, an 177 ausgeführt. Der adressierte Bereich von Cache 40 für die Datenübertragung wird dann angezeigt als ein unmittelbar zuvor in der LRU-Liste verwendeter Aktualisierungsschritt. Dann kehrt der Prozessor 31P zu ACE 50P zurück, um die Beendigung des Befehls mitzuteilen. Bei einer Cache-Verfehlung, die durch einen empfangenen READ- Befehl verursacht wurde, erfolgt eine Leseanforderung an 180, und ein CCR (Kanalbefehl-Wiederholungsversuch) wird an 181 über ACE 50P an Host 11 gesendet. Bei einem WRITE-Befehl wird ein Segment des Cache 40 zugeordnet; anschließend wird unter Verfolgung des logischen Pfads 182 die Datenübertragung 177 ausgeführt. Es ist zu berücksichtigen, daß ein Schreibvorgang auf den Cache die Ausführung eines Befehls nicht verzögert, abgesehen von einer unbedeutenden Zeitspanne, die benötigt wird, um den Speicherplatz in Cache 40 zuzuordnen. Selbstverständlich können die Schritte 173 bis 180 mehrmals während jeder Befehlskette ausgeführt werden, jedoch wird der Paging-Modus nur ein einziges Mal pro Befehlskette eingestellt.
  • Asynchrone Datenübertragungen von einem DASD 16 zu einem Cache 40 erfordern die Aktivierung durch den Prozessor 31P, der das bekannte Scannen nach Arbeit (idle scan) durchführt. Bei der Verfolgung des logischen Pfades 183 wird die Warteschlange 69 an 184 untersucht. Wenn die Warteschlange anzeigt, daß nachfolgend eine Datenübertragung auszuführen ist, so wird diese Arbeit anschließend abgesendet. An 185 wird Speicherplatz zugeordnet und eine Kette interner Befehlswörter (ICW) wird an 186 erstellt. Ein ICW ähnelt einem CCW, der durch einen Kanaladapter 32 von Host 11 empfangen wird. Auf diese Weise werden die asynchronen Datenübertragungen zwischen dem Cache 40 und einem DASD 16 durch DAC 56P ausgeführt. Das bedeutet, daß sich die asynchrone Operation auf der selben Stufe befindet wie die Operation des Direktzugriffs, das heißt, beide Prioritäten sind gleich im gegensatz zu einer Erteilung einer Priorität an die direkte Zugriffsanforderung von Host 11. Die Verarbeitung wird bei 187 an DAC 56P übertragen, um eine automatische Datenübertragung von einem DASD 16 an den Cache 40 zu bewirken. Nach der Vollendung dieser Übertragung führt der Prozessor 31P an 188 interne Funktionen zur Aktualisierung des Verzeichnisses 43 u.ä. aus. An 189 wird die Arbeit aus der Warteschlange 69 genommen. Bei einer Leseoperation wird ein Device-Ende über ein ACE 50P an den Host 11 gesendet. Der Befehl SET PAGING PARAMETERS von Host 11 teilt dem Speichersystem 10 mit, daß in einer nachfolgenden Befehlskette Datenübertragungen folgen können, die den Cache 40 dazu verwenden, auf einen DASD 16 über eine der drei logischen Adressen zuzugreifen.
  • Wie in Fig. 9 dargestellt ist, erfolgt die Aktivierung der logischen Schritte von SET PAGING PARAMETERS über den logischen Pfad 146. An Schritt 119 wird auf CCB 63 zugegriffen, um SPM 120 auf Einheit, CC121 auf Null und RR 122 auf Null zu setzen. Dies initialisiert CCB 63 zur Ausführung des Befehls SET PAGING PARAMETERS. Anschließend wird an 191 erneut auf CCB 63 zugegriffen, um CMD 123 gleich einzustellen wie die Codepermutation, die SPP darstellt. An 192 wird auf CCB 63 erneut zugegriffen, um eine Kanalmaske an das CNLMASK-Register 124 (Fig. 5) zu übertragen. Anschließend wird an 193 der LDCB 62-Hinweis erzeugt und an LDCBP 126 von CCB 63 übertragen. Der LDCB 62-Hinweis besteht aus der Basisadresse der LDCBs (LDCBB), wie sie durch die logische Device-Adresse geändert wurde. Anschließend zeigt in LDCB 62, das dem in Schritt 193 erzeugten Hinweis entspricht, der logische Schritt 194 an, daß ein 510 (Start Input/Output) Host-Auswahlsignal empfangen (dies ist in FOUND 80 nicht dargestellt), ODE 90 auf Null gesetzt, CCR 95 auf Null gesetzt und SEQ 94 auf den im Befehl SET PAGING PARAMETERS empfangenen Wert gesetzt wurde; das heißt, ob eine Operation der Reihenfolge nach durchgeführt werden soll, wie sie im Befehl SET PAGING PARAMETERS vorgesehen ist. In ähnlicher Weise wird Read and Discard, ein Paging-Parameter, der durch den Befehl SET PAGING PARAMETERS ausgewählt wird, in RO 101 von PPARMs 81 eingefügt. An 195 werden durch den Prozessor 31P einige nicht dazugehörige logische Schritte ausgeführt; anschließend wird an 196 LDCB 62 an der logischen Adresse untersucht, um zu bestimmen, ob das Sequenzbit SEQ 94 auf die aktive Bedingung eingestellt wurde. Wenn dies nicht der Fall ist, so wird zu ACE 50P zurückgekehrt; dadurch wird angezeigt, daß der Befehl SET PAGING PARAMETERS ausgeführt wurde. Beim Sequenzmodus wird die Blockzählung an 197 in BCOUNT 102 von PPARMs 81 gesetzt. Wenn das Sequenzbit aktiv ist, so verfügt der Befehl SET PAGING PARAMETERS über ein Byte Modifyer-Daten, das die Anzahl der in der aktuellen Befehlskette zu übertragenden Blöcke anzeigt. An 198 wird die Blockzählung überprüft; falls diese gleich Null ist, so ist eine Fehlerbedingung aufgetreten, beispielsweise ist sie für Host 11 ungeeignet, um eine Übertragung von Null Blöcken anzuzeigen. Ist diese nicht gleich Null, so wird zu ACE 50P zurückgekehrt und so die erfolgreiche Beendigung des Befehls SET PAGING PARAMETERS mitgeteilt.
  • ACE 50P decodiert nicht nur Befehle, sondern CAC 61P muß ebenfalls diejenigen Befehle, die sich auf Paging-Operationen beziehen, decodieren. Fig. 10 stellt die Logik dar, die für eine solche Dekodierung gilt. Die Eingabe erfolgt über ACE 50P während einer verketteten Neuauswahl einer logischen Adresse im Paging-Modus, CAC 61P decodiert den im Register 130 (Fig. 6) aufgefundenen Befehl und initiiert die entsprechende Maßnahme. Fehlerbedingungen werden ebenfalls mitgeteilt. Mehrere interne Register (IR) werden während der Ausführung dieses Moduls verwendet; diese IRs werden der Übersichtlichkeit halber in der Zeichnung nicht dargestellt; die Verwendung der internen Register im Mikrocode und andere Arten an Funktionen der Prozessoren 31P sind bekannt. Die logische Device-Adresse steht mit dem Befehl in Register 130 (Fig. 6) in Zusammenhang. Bei der erweiterten Verarbeitung werden ausgewählte Teile von LDCB 62 an die internen Register (nicht dargesellt) von Prozessor 31P übertragen. Anschließend werden an 200 die Kanalmaske von Sektion 91 vom Fundamentteil 80 und die logische Adresse in der Sektion 92 an andere interne Register (nicht dargestellt) von Prozessor 31P übertragen. Der Befehl von Register 130 wird an das interne Register (nicht dargestellt) an 201 übertragen. An 202 wird auf CCB 63 zugegriffen, um die logische Adresse im Registerteil 125 (Fig. 5) mit der logischen Adresse, die von Register 130 (Fig. 6) empfangen wird, zu vergleichen. Ist keine Änderung der Adressen vorhanden, dann werden die Schritte 203 und 204 ausgelassen. Andernfalls wird CCB 63 an 203 initialisiert, um alle aktuellen Steuerdaten von den Kanaladaptern 32 und von Register 130 in CCB 63 zu übertragen.
  • Ein neuer Hinweis LDCBP zu LDCB 62 wird an 204 berechnet, wie dies an früherer Stelle beschrieben wurde, und ebenfalls an CCB 63, Teil 126, übertragen. An 205 wird das LDCB 62 SIO (Start I/O) Flag (nicht dargestellt) auf Null zurückgesetzt. Das heißt, es folgt nun der Übergang in die Befehlsverarbeitung und der SIO wird nicht länger als aktuell angesehen. An 206 wird das CCR-Bit 95 vom Fundamentteil 80 von LDCB 62 untersucht. Ist dieses gleich Null, so werden an 207 einige nicht dazugehörige Schritte ausgeführt; dann an 208 wird der empfangene Befehl in Register 130, der im internen Register an 201 gespeichert ist, in LDCB 62, Sektion 93, gespeichert. Einige Flags, so beispielsweise SEQ 100, RO 101 usw. werden an ein internes Register (nicht dargestellt) von Prozessor 31P übertragen. Anschließend wird das Code-Modul zur Ausführung des empfangenen Befehls an 209 aktiviert. Dieser Teil des Mikrocodes setzt nach der Beendigung des Befehls den Prozessor 31P auf ACE 50P zurück. Bei diesen Befehlen kann es sich beispielsweise um SET SECTOR, SEEK CYLINDER, READ, WRITE usw. handeln; das Code-Modul für solche Befehle ist bekannt. Wurde an 206 ein Kanalbefehl-Wiederholungsversuch (CCR) angezeigt, dann überprüft der Prozessor 31P an 212, ob der vom Kanaladapter 32 empfangene Befehl mit dem in Sektion 93 von LDCB 62 gespeicherten Befehl übereinstimmt. Sind diese gleich, so ist alles in Ordnung und das CCR-Bit 95 wird an 214 auf Null zurückgesetzt. Dann werden die Schritte 208 und 209 ausgeführt. Wenn die Befehle nicht gleich sind, wird an 213 eine Fehlerbedingung angezeigt und es wird unverzüglich zu ACE 50P zurückgekehrt, um Host 11 den Fehlerstatus mitzuteilen.
  • In einer Befehlsausführung, wie sie beispielsweise an Schritt 209 aktiviert wird, besteht eine der ersten Maßnahmen darin, DIR 43 nach einem in Cache 40 zugeordneten Speicherplatz zu durchsuchen, der dem angeforderten Paging-Block entspricht. Fig. 11 stellt die logischen Schritte dar, die die Steuerung sowohl für Lese- als auch für Schreibdatenbefehle mit einer logischen Device-Adresse ausführen. DIR 43 wird zuerst durchsucht; befindet sich der angeforderte Paging-Block nicht im Cache 40, so tritt eine Fehlfunktion auf. Anschließend werden einige Funktionen, wie in Fig. 13 dargestellt, ausgeführt. Andererseits gilt, daß wenn der angeforderte Paging-Block als im Cache 40 vorhanden identifiziert wird, ein sogenannter Cache-Treffer eintritt, der eine Datenübertragung zur Folge hat. Die Lese- oder Schreibbefehlausführung wird fortgeführt, was noch ersichtlich werden wird. Im einzelnen werden an 221 im Zusammenhang mit dem Fehlerstatus einige nicht dazugehörige logische Schritte ausgeführt. Handelt es sich beispielsweise beim empfangenen Befehl nicht um einen Lese- oder Schreibbefehl, dann ist es nicht angebracht, eine Verzeichnissuche auszuführen und eine Fehlerbedingung muß angezeigt werden. An 222 wird aus der Device-Adresse D, der Zylinderadresse C, der Kopfadresse H und der Aufzeichnung R eine Blockidentifikation (BID) erstellt. In der vorliegenden Anordnung gibt es vier Aufzeichnungen pro Spur, daher besitzt die Aufzeichnungsnummer eine von vier Werten. Die Erstellung von BID besteht lediglich darin, die Adresse heranzuziehen und sie in ein internes 2-Byte-Register zu stellen. An 2223 wird Hash 44 ausgeführt. Der Hash, bei dem es sich um eine beliebige Hashing-Operation handeln kann, erzeugt ein Adreßsignal, das der Adreßverlagerung entspricht, an SIT 45, das den Verzeichnisindex 43 enthält. Dieser Hinweis wird von SIT 45 an 224 geholt. Anschließend wird in Schleife 205 DIR 43 innerhalb einer Hashing-Klasse gescannt. Wenn SIT 45 an 224 gelesen wird, wird eine Eingabe von DIR 43, die die erste Eingabe in einer Hashing-Klasse darstellt, aus dem Untersystemspeicher 30 gelesen und in das interne Register (nicht dargestellt) des Prozessors 31P gestellt. Dies macht den Systemspeicher 30 für andere Operationen frei, falls eine Unterbrechung auftritt. In jedem Fall umfaßt die Verzeichnissuche, daß ADEB 76 gleich dem adressierten Verzeichniseintrag an 227 gemacht wird. Diese Maßnahme beinhaltet auch, daß der entsprechende Eintrag in Verzeichnis 43 gelesen wird und an ADEB 76 übertragen wird. An 228 werden einige nicht dazugehörige logische Schritte ausgeführt. An 229 werden die Inhalte von BID mit der in ADEB 76 enthaltenen Adresse 108 verglichen. Sind die beiden Werte gleich, so tritt ein Treffer auf und der logische Pfad 230 wird verfolgt. Sind die beiden Werte nicht gleich, dann wird die Suche im Verzeichnis 43 fortgesetzt. LINK 109 wird an ein geeignetes internes Register (nicht dargestellt) an 231 gesendet. An 226 wird das LINK anschließend überprüft, um zu sehen, ob es das Ende einer Hashing-Kette (EOC) ist. Ist der Eintrag der letzte in der Hash-LINK-Kette, so ist eine Cache-Fehlfunktion eingetreten und ein Rückkehrcode RC, der eine Cache-Fehlfunktion darstellt, wird an 233 eingestellt. Andernfalls wiederholt das Scannen die Schritte 227 und 229 und sucht dabei nach einem Cache-Treffer, indem aufeinanderfolgende Einträge in Verzeichnis 43 zu ADEB 76 übertragen werden.
  • Tritt ein Cache-Treffer an Schritt 229 (BID=DIR) auf, so überprüft der Prozessor 31P an 240 das CCL von Sektion 108 von ADEB 76 mit dem Zylinderwert C auf Ungleichheit. Ist in Cache 40 keine Aufzeichnung enthalten, die der gewünschten Aufzeichnung entspricht, so wird der Rückkehrcode RC an 241 auf keine Aufzeichnung gesetzt. Für die Gleichheit zwischen CCL und C wird eine gefundene oder getroffene Aufzeichnung an 242 angezeigt und an 243 wird ein internes Register (nicht dargestellt) gleich eingestellt wie der INDEX 107 von ADEB 76 (Fig. 5). Der logische Pfad 234 wird verfolgt, um einige nicht dazugehörige, fehlerbezogene Funktionen an 250 auszuführen; dann folgt an 251, unabhängig davon, ob eine Cache-Fehlfunktion angezeigt wird, eine Untersuchung. Wurde eine Cache-Fehlfunktion nicht angezeigt (getroffen), dann wird an 254, unabhängig davon, ob eine Aufzeichnung gefunden wurde, folgendes untersucht: der Rückkehrcode keiner Aufzeichnung an 241 oder eine Aufzeichnung, die an 242 gefunden wurde. Bei keiner Aufzeichnung wird an 255 eine Fehlerbedingung angezeigt und der Prozessor 31P kehrt zu ACE 50P zurück, um die Fehlerbedingung mitzuteilen. Andernfalls wurde eine Aufzeichnung gefunden und die Ausführung des Lesebefehls für die Datenübertragung von Cache 40 an Host 11 oder in umgekehrter Richtung wird durchgeführt, wie dies an späterer Stelle in bezug auf Fig. 12 beschrieben wird. Andererseits greift bei einer Cache-Fehlbedingung an 251 der Prozessor 31P an 252 auf LDCB 62 für den adressierten logischen Device zu und setzt das Fehlbit 96 im Fundamentteil 80 (Fig. 5) auf Einheit. Anschließend bereitet an 253 der Prozessor 31P den Cache 40 für die Befehlsausführung vor, wie dies an späterer Stelle in bezug auf Fig. 13 beschrieben wird.
  • Bei einem Cache 40-Treffer zeigen die logischen Schritte von Fig. 11, daß der Prozessor 31P den logischen Pfad 256 zu Fig. 12 verfolgt, um eine Fehlererkennung auszuführen und um zusammenhängende nicht dazugehörige logische Schritte an 260 anzuzeigen. An 261 wird der Modus Lesen oder Schreiben untersucht. Die Modusüberprüfung umfaßt außerdem eine Untersuchung der Befehlscodepermutation, die in Sektion 93 des Fundamentteils 80 von LDCB 62 gespeichert ist. Bei einem Lesebefehl wird der logische Pfad 262 verfolgt, während bei einem Schreibbefehl der logische Pfad 263 verfolgt wird.
  • Bei einem gelesenen Befehlstreffer werden Daten von Cache 40 zum Host 11 übertragen. An 270 findet die Übertragung dadurch statt, indem Daten vom Cache 40 über den Bus 41 (Fig. 3) zu den Kanaladaptern 32 für die Verbindung mit Host 11 übertragen werden. Nach Beendigung der Datenübertragung, was durch eine automatische Datenübertragungsschaltung (nicht dargestellt) von bekanntem Aufbau erzielt werden kann, wie sie in der Datenverarbeitungstechnologie verbreitet Anwendung findet, kehrt die Steuerung des Speichersystems 10 dazu zurück, entsprechend dem derzeit empfangenen Befehl zu operieren. Es wird darauf hingewiesen, daß Steuerfunktionen während der Verarbeitung von Cache-Fehltreffern mit Datenübertragungsfunktionen in den verschiedenen Kanaladaptern 32 verschachtelt werden können. Auf jeden Fall untersucht an 271 der Prozessor 31P das LDCB 62-Bit RO 101. Wenn RO gleich Null ist, so wird nach dem Lesen nicht ignoriert. Die Blockidentifikation (BID) wird dann auf eine zuvor am wenigsten verwendete Liste als das am letzten verwendete (MRU) Cache-Segment an 272 gesetzt. Da die LRU-Listen bekannt sind, werden sie nicht beschrieben. Von Schritt 272 geht der Prozessor 31P weiter zu dem an späterer Stelle beschriebenen Schritt 277. Wenn RD 101 an 271 gleich Einheit ist, dann untersucht der Prozessor 31P an 273 das ADEB 76-Bit M 269, um zu bestimmen, ob der in Cache 40 bestimmte Paging-Block beim Kopieren der Daten in DASD 16 modifiziert wird. M Bit 269 wird immer dann gesetzt, wenn ein Schreibbefehl gegen Cache 40 bei einer gegebenen Aufzeichnung ausgeführt wird. Zeigt das Verzeichnis 43 an, daß in dem in Cache 40 gespeicherten Paging-Block keine Modifikation auftrat, so wird der Bereich von Cache 40, der einen Paging-Block speichert, an 274 freigesetzt und die Inhalte von ADEB 76 sowie der entsprechende Eintrag in Verzeichnis 43 werden gelöscht. Diese Maßnahme löscht den Paging-Block aus dem Cache 40. Einige Fehlerbedingungen werden überprüft, wie dies durch den logischen Pfad 275 angezeigt wird. Der Prozessor 31P fährt damit fort, nicht dazugehörige logische Schritte an 276 auszuführen.
  • Bevor ein Teil von Cache 40, der einen modifizierten Datenblock speichert, freigesetzt werden kann, muß dieser Paging-Block von Cache 40 zum entsprechenden DASD 16 verlegt werden. In einer Version der Durchführung der vorliegenden Erfindung wurden solche modifizierten Paging-Blöcke unmittelbar nach dem letzten Befehl in der Befehlskette und bevor die Kette als vollständig angezeigt wurde zu einem DASD 16 übertragen. Die nicht dazugehörigen logischen Schritte 276 enthalten außerdem das Auflisten des Paging-Blocks für die mögliche Übertragung zum entsprechenden DASD 16 in einem Steuerblock (nicht dargestellt), der dazu verwendet wird, um das Destaging oder die Verlagerung von Daten vom Puffer zum entsprechenden Hintergrundspeicher zu steuern.
  • Diese Mechanismen sind bekannt und werden aus diesem Grund an dieser Stelle nicht näher beschrieben. Dann untersucht an 277 der Prozessor 31P an LDCB 62 und SEQ 94, ob Sequenzdaten verarbeitet werden. Wenn nicht, dann wurde nur ein Block an Paging- Daten zum Host gesendet und die Beendigung des Befehls kann durch ACE 50P mitgeteilt werden; andernfalls untersucht der Prozessor 31P am logischen Schritt 278 die Blockzählung, die in Sektion 102 von PPARMs 81 (Fig. 5) angezeigt ist. Ist die Blockzählung nicht gleich Null, so wird an 279 eins von der Blockzählung abgezogen und die Beendigung des Befehls wird über ACE 50P an Host 11 mitgeteilt. Im anderen Fall ist die Blockzählung an 279 gleich Null; dann wurden alle Sequenzdaten an den Host 11 übertragen und die Beendigung des Befehls kann sofort über ACE 50P an Host 11 mitgeteilt werden.
  • Bei einem Schreibbefehl vom logischen Pfad 263 führt der Prozessor 31P zunächst an 289 einige nicht dazugehörige Funktionen aus. Diese nicht dazugehörigen Befehle umfassen beispielsweise die Erstellung einer automatischen Datenübertragungsschaltung (nicht dargestellt) für die Datenübertragung von Host 11 durch den entsprechenden Kanaladapter 32 und somit über den Bus 41 zum Cache 40. Diese Datenübertragung findet eigentlich an 290 statt. Während der Datenübertragung kann der Prozessor 31P damit fortfahren, mit den anderen Kanaladaptern 32 im Steuerfunktionsbereich zu operieren. Außerdem kann gleichzeitig ein direkter Zugriff auf ein DASD 16 einschließlich einer Übertragung von Datensignalen auftreten. Das heißt, Kanaladapter CAA kann zwischen dem Cache 40 und dem Host 11 über die I/O-Verbindung 12 gleichzeitig Signale übertragen, während der Kanaladapter CAD Datensignale zwischen der Host 11 Eingabe/Ausgabe-Verbindung 15 und einem DASD 16 überträgt. Diese Überlappung trägt zur Leistung des Speichersystems 10 bei. Nach der Datenübertragung führt der Prozessor 31P an 291 fehlerbezogene Funktionen aus. Wenn anschließend an 292 die Blockidentifikation der soeben übertragenen Datensignale aktiv ist, so bedeutet dies, daß der Block nicht mit dem Cache in Verbindung steht; er kann also ausgetauscht werden. Dann wird an 293 das M Bit 269 auf Einheit gesetzt und an 294 wird die Blockidentifikation in der LRU-Liste (nicht dargestellt) als zuletzt verwendet dargestellt. Anschließend werden an 295 nicht dazugehörige Funktionen ausgeführt. Schließlich wird zur Mitteilung des Status des Schreibbefehls die Steuerung des Prozessors 31P zu ACE 50P zurückgesetzt. Wenn der Block an 292 an Cache 40 gebunden wird, um eine Wiederholung der Fehlerbedingung zu vermeiden, so erfolgt das Schreiben in den Cache in einen neu zugeordneten Bereich von Cache 40 und der fehlerbezogene Bereich von Cache 40 wird entsprechend markiert.
  • Bei einem Cache-Fehltreffer in Fig. 11 verfolgt der Prozessor 31P den logischen Pfad 253 zu den Schritten in Fig. 13. An Schritt 300 untersucht der Prozessor 31P, ob es sich bei dem Befehl um einen Lese- oder einen Schreibbefehl handelt. Bei einem Lesebefehl wird die Leseanforderung an 301 in die Warteschlange gestellt, wie an späterer Stelle in bezug auf Fig. 14 beschrieben wird und wie dies in Fig. 5 dargestellt ist. Anschließend werden an 302 gewisse nicht dazugehörige Funktionen ausgeführt, und an den Host 11 wird über ACE 50P ein Kanalbefehl-Wiederholungsversuch CCR gesendet. Der CCR fordert den Host 11 auf, den Befehl erneut zu senden, nachdem ein sogenanntes DEVICE END vom Speichersystem 10 gesendet wurde, was anzeigt, daß sich die Daten nun im Cache 40 befinden.
  • Bei einem Schreibbefehl an Schritt 300 geht der Prozessor 31P zu Schritt 303, um einen Cache-Block für den bevorstehenden Schreibbefehl zuzuordnen. Eine Fehlerbedingung kann gefunden werden, wenn ein Fehler über den logischen Pfad 304 mitgeteilt wird. An Schritt 305 wird ein neuer Eintrag in das Verzeichnis 43 hinzugefügt, wobei die Formateinstellung verwendet wird, die für ADEB 76 in Fig. 5 dargestellt ist. Dann läuft die eigentliche Datenübertragung an 306 ab, während die Signale von Host 11 durch einen Kanaladapter 32 über einen Bus 41 an den Cache 40 übertragen werden. Anschließend werden an 307 in Fig. 13 die Schritte 291-295 von Fig. 12 ausgeführt.
  • Die Lesewarteschlangen werden erstellt, wie dies in Fig. 14 dargestellt ist, wobei der Prozessor 31P an 310 auf CCB 63 zugreift, um die Inhalte eines internen Registers mit den Inhalten von LDADDR 125 gleichzusetzen. An 311 wird das LDADDR in eine physikalische Device-Adresse DADDR konvertiert, indem der AC-Teil gelöscht wird. An 312 wird die Lesewarteschlange, die dem Device (QX) entspricht, mit Einheit gleichgesetzt, beispielsweise wird der Teil 86 (Fig. 5), der dem logischen Device entspricht, auf Einheit gesetzt. Dieses Einzelbit wird dann in LDCB 62-Adressen übersetzt; die Basisadresse des LDCB ist bekannt, wobei der Versatz die logische Adresse ist. Da die Position des Teils in LDCB 62 die logische Adresse ist, ist der LDCB-Versatz ebenfalls bekannt. Anschließend bestimmt an 314 der Prozessor 31P, ob der Teil 87 (Fig. 5) Null ist, das heißt, ob keine Leseoperationen in der Warteschlange stehen. Wenn der Teil 87 leer ist, so wird an 320 der Hinweis für die Lesewarteschlange auf den logischen Device gesetzt; das heißt, 1, 2 oder 3, abhängig davon, welcher logische Device in LDADDR ist. An 321 wird auf LDCB 62 zugegriffen, während Lesewiederholungsversuch RR Bit 122 und RWR 128 auf Einheit gesetzt werden. Befindet sich in der Lesewarteschlange ein Eintrag in der Sektion 86, das heißt, eine Lesewarteschlange wurde bereits eingefügt, dann wird an 315 der Hinweis durch die Warteschlange durch 1 indexiert. An 316 wird der Hinweis für die Warteschlange erneut geprüft. Ist der Hinweis kleiner als 3, dann verfolgt der Prozessor 31P den logischen 318 Prozessor 31P, um erneut die nächste Position im Teil 86 zu untersuchen und festzustellen, ob diese leer ist. Wenn diese nicht leer ist, so wird der Zyklus wiederholt, bis entweder eine neue Warteschlangenposition gefunden oder an 317 eine Fehlerbedingung angezeigt wird, bei der eine Lesewarteschlangen-Anforderung vorhanden ist, obwohl die Lesewarteschlange voll ist (das heißt, der Hinweis ist gleich 3).
  • Fig. 15 stellt den logischen Fluß in beiden Speicherdirektoren 17 für das Senden und Empfangen von Proxy-Arbeit zur Ausführung eines Lastausgleichs und zur Leistungssteigerung der Datenspeicherhierarchie 10 dar. Zur Erleichterung der Referenz werden, da die Logik in beiden Speicherdirektoren identisch ist, dieselben Ziffern verwendet, um auf entsprechende Logikteile in den beiden Speicherdirektoren hinzuweisen. In der Beschreibung ist der Speicherdirektor 17A der arbeitsanfordernde Speicherdirektor, während der Speicherdirektor 17B der arbeitssendende Speicherdirektor ist, der auf die Anforderung nach Proxy-Arbeit antwortet. Die Formate der zwischen den Speicherdirektoren 17A und 17B ausgetauschten Meldungen werden als drei Arten dargestellt, wobei gilt, daß zusätzliche Meldungen besonders im anfordernden Status verwendet werden können, das heißt, der arbeitssendende Speicherdirektor 17B kann beispielsweise den Status anfordern, den die Proxy-Arbeit hat, die durch den arbeitsanfordernden Speicherdirektor 17A ausgeführt wird.
  • Zuerst werden die Meldeformate beschrieben, um einen Überblick über die Proxy-bezogenen Maschinenoperationen zu geben. Jede Proxy-Operation wird durch eine Proxy-Anforderungsmeldung initiiert, die sich zusammensetzt aus einer Proxy-Identifikation, ID 385; vorzugsweise enthält eine solche Identifikation eine Angabe dazu, welcher Speicherdirektor 17 ursprünglich die Anforderung abgeschickt hat sowie die Seriennummer der Anforderung. Auf diese Weise kann Host 11 in regelmäßigen Abständen die Speicherdirektoren abfragen, um festzustellen, wie gut die Arbeitslasten zwischen den Speicherdirektoren ausgeglichen sind, nämlich einfach durch Vergleich der höchsten Seriennummern im entsprechenden Speicherdirektor 17. Aufgrund des Status von Cache 40 (Menge des freien Speicherplatzes ist minimal) kann der anfordernde Speicherdirektor 17A eine Präferenz für eine Proxy- Schreibaufgabe angeben, indem das PW Bit 386 auf Einheit gesetzt wird. In ähnlicher Weise zeigt die Einstellung von PR Bit 387 auf Einheit eine Präferenz für eine Proxy-Leseoperation an (Cache 40 hat ein Minimum an freiem Speicherplatz). Das PAA Bit 388 bedeutet, daß jede Form der Proxy-Operation zufriedenstellend ist (der freie Speicherplatz in Cache 40 ist ein vorbestimmter Mittelwert). Das Statusanforderungsbit SR 389 kann vom antwortenden Speicherdirektor 17B dazu verwendet werden, um vom anfordernden Speicherdirektor 17A den Status der Proxy-Arbeit abzufragen, die mit ID 385 in Zusammenhang steht. Die Logik der Anforderung und der Lieferung des Status wird nicht ausführlich beschrieben, da die Statusmeldung bekannt ist.
  • Die Proxy-Antwortmeldung, die vom antwortenden Speicherdirektor 17B an den anfordernden Speicherdirektor 17A geliefert wird, enthält ID 375, der eine Codepermutation enthält, die gleich ID 385 ist, so daß der anfordernde Speicherdirektor die Antwort in die Anforderung einbinden kann. PSV 376 enthält ein Bitset, das den Statusvektor des antwortenden oder arbeitssendenden Speicherdirektor 17B angibt. Dies kann bedeuten, daß keine Proxy-Arbeit zur Verfügung steht, usw. Die Flags (FLG) enthalten gemischte Informationsbits, so beispielsweise eine Identifikation des Prozesses in Host 11, für den die Proxy-Arbeit ausgeführt werden soll, den Prioritätsstatus der Proxy-Arbeit usw. Die Proxy-Flags (FLG) 378 zeigen den Charakter der Proxy-Antwort an, das heißt, Lesen, Schreiben usw. Die Proxy Stage-Parameter (PARMs) 379 enthalten die Informationen, die in der Proxy- Arbeitsschlange 84, Felder 352 und 353, für eine Leseoperation stehen, während die Proxy-Destage-PARMs 380 dieselben Informationen für ein Destage-Proxy enthalten. Ein Proxy-Operationsstatus 381 wird als Antwort auf eine Statusanforderung in einer Proxy-Anforderungsmeldung verwendet, um den aktuellen Status der Proxy-Operation anzuzeigen. Da die Statusmitteilung nicht ausführlich beschrieben wird, folgt hier keine nähere Erläuterung. Die Ziffer 382 zeigt an, daß der Proxy-Antwortmeldung zusätzliche Felder hinzugefügt werden können. Die Proxy-Statusmeldung wird nach Beendigung einer Proxy-Operation vom anfordernden Speicherdirektor 17A geliefert. Die Statusmeldung enthält die Identifikation 390, die dieselbe Codepermutation aufweist wie die Proxy-Anforderung und die Antwortmeldungen. Der Rückkehrcode 391 zeigt an, ob eine fehlerfreie Proxy-Operation durchgeführt wurde. Wenn ein Fehler aufgetaucht ist, dann ist RC 391 nicht Null und zusätzliche Fehlerparameter werden geliefert, was durch die Ellipse 392 angezeigt wird. Des weiteren gilt für eine Proxy-Leseoperation, daß das Statusende für Host 11 innerhalb der Proxy-Statusmeldung geliefert wird. Dieses Statusende ist von der Architektur von Host 11 abhängig und wird aus diesem Grund ausgegeben. Die Sequenz der in Fig. 15 dargestellten Maschinenoperationen beginnt mit der Leerschleife von Prozessor 31P. Die Leerschleife an 400 sucht nach zugeordneten Arbeitsfunktionen; solche Funktionen, beispielsweise Datenübertragung, Befehlsausführung, Überprüfung des Kanalbefehl-Wiederholungsversuchs usw. sind bekannt und werden aus diesem Grund an dieser Stelle nicht näher erläutert. Der Leer-Scan der zugeordneten Arbeitsfunktionen kann beispielsweise keine zugeordnete auszuführende Arbeit finden.
  • Dann verfolgt der anfordernde Speicherdirektor 17A den logischen Pfad 401 bis Schritt 402. An 402 untersucht der anfordernde Speicherdirektor 17A seine asynchrone Arbeitsebene, indem die Warteschlangen 69 getestet werden. Wenn die Warteschlangen 69 eine relativ hohe Arbeitsebene aufweisen, dann kehrt der logische Pfad 408 zu den zugeordneten Arbeitsfunktionen 400 zurück, um die Warteschlangen 69 zu scannen und die darin enthaltenen Arbeiten auszuführen. Beispielsweise kann die Lese- Warteschlange RQ die beiden Schwellen 404 und 405 aufweisen. Die Schwelle 404 ist eine geringere Schwelle zur Ausführung von Lesearbeiten, die nicht unmittelbar mit einer bevorstehenden oder aktuellen Anforderung an Host 11 in Zusammenhang stehen. Die Schwelle 405 zeigt eine übermäßig hohe Anzahl an Lesearbeiten an, die durch den anfordernden Speicherdirektor 17A ausgeführt werden müssen. Bei einer Lesewarteschlange mit dieser Länge kann keine Proxy-Arbeit angefordert werden. In einer Anordnung gleicht Schwelle 404 keinen bevorstehenden Leseanforderungen. In ähnlicher Weise besitzt WQ eine Schwelle 406. Die Schwelle 406 kann so ausgewählt werden, daß Schreibanforderungen gestapelt oder gruppiert werden, um effektiver auf DASD 16 zugreifen zu können. In jedem Fall werden die Inhalte von RQ und WQ der Warteschlangen 69, was durch das Linienpaar 407 angezeigt wird, bei der Feststellung der Arbeitsebene berücksichtigt. Wenn RQ und WQ eine relativ niedrige Arbeitsebene aufweisen (in der bevorzugten Anordnung wird eine Ebene 0 verwendet), dann wird eine Proxy-Arbeitsanforderung zum arbeitssendenden oder antwortenden Speicherdirektor 17B geschickt. Zuerst wird eine Zeitdauer 410 eingestellt (beispielsweise 2 Sekunden), in der der antwortende Speicherdirektor 17 auf die unmittelbare Proxy-Arbeitsanforderung antworten kann. Bei der Formulierung der Proxy-Anforderungsmeldung an 411 wird PIDK 363 (Fig. 5) zunächst inkrementiert, dann werden die Inhalte der Felder 363 und 364 als ID 385 gebildet und in ID 361 von Proxy-Warteschlange 84 gespeichert. Die Anforderung, die an 411 formuliert wird, empfängt von LRU (nicht dargestellt) 412 eine Eingabe, die den zur Verfügung stehenden zuteilbaren und freien Speicherplatz in Cache 40 anzeigt. Basierend auf dem zuteilbaren Speicherplatz, der unter Verwendung bekannter Technologien der LRU-Liste zur Verfügung steht, wie dies durch den LRU (zuletzt verwendete Ersatzsteuerliste) angezeigt wird, kann entweder eine Proxy-Schreibarbeit oder eine Proxy-Lesearbeit, wie sie durch die Bits PW 386 bzw. PR 387 angezeigt wird, für den antwortenden Speicherdirektor 17B angefordert werden. Da die LRU wegen der Dateninhalte in Cache 40 die Operation beider Speicherdirektoren 17 beeinträchtigt, besitzt der am wenigsten ausgelastete Speicherdirektor 17 eine zusätzliche Eingabe für die Speicherplatzverwaltung von Cache 40. Wenn beispielsweise der zuteilbare zur Verfügung stehende Cache-Datenspeicherplatz relativ klein ist, dann würde eine Proxy-Schreibarbeit angefordert werden, um den zuteilbaren Speicherplatz in Cache 40 zu erhöhen. Wäre andererseits ein großer Teil von Cache 40 zuteilbar, dann würde eine Proxy-Leseoperation angefordert, um die Leistung der Datenspeicherhierarchie in bezug auf Host 11 zu steigern. Liegt der zuteilbare Speicherplatz, der durch LRU 412 angezeigt wird, zwischen den beiden Schwellen zuteilbaren Speicherplatzes, dann zeigt PA 388 an, daß der antwortende Speicherdirektor 17B auswählen kann, welche Art von Proxy-Operation an den anfordernden Speicherdirektor 17A gesendet werden soll.
  • Die an 411 eingebaute Proxy-Anforderung wird dann durch den Melde-RAM 18 über den Datenbus 340 geliefert, nachdem der Parameterdatenaustausch durch die Tag-Leitungen zum antwortenden Speicherdirektor 17B in geeigneter Form eingestellt wurde. Der antwortende Speicherdirektor 17B hat zwischen den sich überlappenden Maschinenoperationen eine Leerzeit, so daß die vom anfordernden Speicherdirektor 17A gelieferte Proxy-Anforderungsmeldung verarbeitet werden kann. An 422 untersucht der antwortende Speicherdirektor 17B seinen Arbeitsstatus und untersucht seine Warteschlangen 69 auf die entsprechenden Längen; die Untersuchung kann sich beispielsweise auf den zuteilbaren oder freien Speicherplatz von Cache 40 erstrecken, auch wenn der anfordernde Speicherdirektor 17A zuvor dasselbe getan hat. Wenn der Arbeitsstatus an 422 relativ niedrig war, was auf willkürliche Weise oder in anderer Form definiert werden kann, so ist es aus Gründen der Effektivität besser, daß keine Proxy-Arbeit fortgesetzt wird. Entsprechend behält der antwortende Speicherdirektor 17B an 425 seine Arbeit für sich, anstatt sie weiterzugeben. In der Proxy-Antwortmeldung zeigt PSV 376 an, daß keine Arbeit ausgesendet wird, weil der PSV-Statusvektor einen relativ niedrigen Arbeitsstatus anzeigt. Eine solche Schwelle entspricht den Schwellen 404 und 406 der Warteschlangen 69. Andererseits kann der antwortende Speicherdirektor 17B an 422 feststellen, daß seine Arbeitsebene relativ hoch ist, das heißt, beispielsweise über Schwelle 406 oder über Schwelle 405. In diesem Fall wird die Proxy-Arbeit ausgewählt und abgeschickt, wie dies durch den Maschinenoperationsschritt SEND 426 angezeigt wird. Der Maschinenoperationsschritt 426 umfaßt die Auswahl einer Datenübertragungsoperation von RQ oder WQ und das Einsetzen der Steuerparameter; die Proxy-Antwortmeldung wird an den anfordernden Speicherdirektor 17A gesendet, wie dies an früherer Stelle beschrieben wurde. Sobald die Meldung HOLD oder SEND an 425 bzw. 426 erzeugt wurde, überträgt der antwortende Speicherdirektor 17B an 427 die Proxy-Antwortmeldung durch den Melde-RAM 18 zum anfordernden Speicherdirektor 17A. Außerdem kann der antwortende Speicherdirektor die Einträge PWI, PWO, PRI und PRO der Warteschlangenregister 69 (Fig. 5) als Operations- Interlock zur Vermeidung einer Duplizierung der Proxy-Arbeit, die an den anfordernden Speicherdirektor gesendet wurde, verwenden.
  • Die übertragene Proxy-Arbeit wird vom anfordernden Speicherdirektor 17A behandelt, indem die Proxy-Antwortmeldung zur Proxy-Warteschlange 84 als zugeordnete Arbeitsfunktion übertragen wird. Anschließend wird, wie dies in dieser Beschreibung bereits ausgeführt wurde, die angeforderte Datenübertragung aufgestellt und vom anfordernden Speicherdirektor 17A ausgeführt, als ob ihm vom Host 11 Arbeit zugeteilt worden sei. Es wird darauf hingewiesen, daß während der Ausführung der Proxy-Arbeit andere Arbeiten vom Host 11 empfangen werden können, die dann mit der Proxy-Arbeit verschachtelt werden.
  • Nach der Beendigung der Datenübertragung zwischen Cache 40 und DASD 16, die in der Proxy-Antwortmeldung erforderlich ist, liefert der anfordernde Speicherdirektor 17A die Proxy-Statusmeldung, wie dies durch den logischen Pfad 432 angezeigt ist, der sich von der zugeordneten Arbeitsfunktion zum Proxy-Statusschritt 433 erstreckt. Das Zusammensetzen einer Proxy-Statusmeldung ist dasselbe, wie wenn ein Speicherdirektor ein Statusende zusammensetzt, um einem Host 11 eine beendete Maschinenoperation mitzuteilen. Da dieser Ablauf bekannt ist, wird er an dieser Stelle nicht näher beschrieben. Es genügt zu sagen, daß der Rückkehrcode 391 für einen fehlerfreien Status Null ist und er nicht Null ist, wenn ein Fehler während der Proxy-Datenübertragung auftritt. Die Proxy-Statusmeldung wird an den antwortenden Speicherdirektor 178, wie dies durch die Linie 434 angezeigt wird; dadurch wird eine zugeordnete Arbeitsfunktion 400 dazu veranlaßt, eine Nachverarbeitung der Proxy-Arbeit auszuführen, um die Aufzeichnungen im antwortenden Speicherdirektor 17B zu aktualisieren. Eine solche Maßnahme kann beinhalten, daß nach einer Proxy-Lesedatenübertragung ein DEVICE END an den Host 11 gesendet wird, um dem Host 11 anzuzeigen, daß sich die angeforderten Daten nun im Cache 40 befinden und bereitstehen, um an den Host 11 übertragen zu werden, als ob der antwortende Speicherdirektor 178 die angeforderten Daten aus dem DASD 16 genommen und zum Cache 40 gesendet hätte.
  • Die Proxy-Warteschlange innerhalb des anfordernden Speicherdirektors 17A wird folgendermaßen aktualisiert. Wenn eine Anforderung 411 gesendet wird, so wird QS 354 auf die aktuelle Bedingung gesetzt. In ähnlicher Weise aktualisiert die zugeordnete Arbeitsfunktion 400 CPS 357 oder CPD 358 nach der Beendigung der Arbeit. Durch die zugeordnete Arbeitsfunktion 400 wird eine Fehlerbedingung in PE 359 angezeigt. Beim Senden der Proxy- Statusmeldung an 433 zum antwortenden Speicherdirektor 17B löscht der anfordernde Speicherdirektor 17A die Inhalte der Proxy-Arbeitsschlange 84 sowie alle anderen Proxy-anzeigenden Bits, die mit ID 361 in Zusammenhang stehen, das im Speicherdirektor enthalten ist. Der antwortende Speicherdirektor 17B aktualisiert seine Aufzeichnungen in ähnlicher Weise.
  • Fig. 16 zeigt eine andere Methode der Proxy-Steuerung, besonders für das Schreiben von Daten von Cache 40 in ein DASD 16 (Destage). Die Numerierung in Fig. 16 sind dieselben wie in Fig. 15. Der Arbeitsstufenschritt 402 im anfordernden Speicherdirektor 17A wird in erster Linie durch die Lese-Warteschlange RQ beeinträchtigt; hierfür ist keine Begrenzung vorgesehen. Bei niedriger Stufe der Lese-Warteschlange wird WRQ 19 an 450 überprüft. Besitzt WRQ 19 eine Anzahl von Einträgen über der Schwelle 406, wie dies durch die Linie 451 angezeigt wird, dann wird an 452 eine Schreibarbeit an DASD 16 ausgeführt. Durch eine Nicht-Null-Schwelle 406 können zahlreiche Aufzeichnungen gruppiert werden, um auf effektive Weise Daten von Cache 40 zum DASD 16 zu übertragen. Für den Fall, daß WRQ keine Einträge hat (Schwelle 406 kann auf Null gesetzt werden), dann verfolgt der anfordernde Speicherdirektor 17A den Pfad 453, um nach zusätzlich auszuführender Arbeit zu suchen. Andernfalls wird an 452 der Pfad 455 zur zugeordneten Arbeitsfunktion für eine Hostverarbeitende Operation verfolgt. Wie an früherer Stelle in bezug auf Fig. 15 erwähnt wurde, werden mit einer geteilten Schreib-Warteschlange WRQ 19 alle Schreibarbeiten als lokale Operationen behandelt, wobei die geteilte Datenbank in WRQ 19 und im Verzeichnis 43 zum Zweck der Synchronisation und der Datenintegrität die Kommunikationen zwischen den beiden Speicherdirektoren 17 ermöglicht. Bei einer Lesewarteschlangen- Proxy-Operation wird die in Fig. 15 aufgeführte Prozedur auch für die andere Anordnung in Betracht gezogen.
  • Fig. 17 ist eine Maschinenoperationstabelle, die eine ausführliche Darstellung einer Maschinenoperation zeigt, die dem Flußdiagramm von Fig. 2 entspricht. Als Bestandteil der Leer- Scan-Routine untersucht der Speicherdirektor 17 an 460 die am wenigsten zuvor verwendete Liste (LRU), um die Menge des zur Verfügung stehenden zuteilbaren Speicherplatzes in Cache 40 zu bestimmen. Es ist bekannt, daß LRUs in der Reihenfolge der vorigen Verwendung aufgelistet werden und im allgemeinen eine Anzeige aufweisen, die angibt, ob der zuteilbare Datenspeicherplatz des entsprechenden Cache 40 für die Zuordnung zur Verfügung steht. Im allgemeinen steht der Datenspeicherplatz dann für die Zuordnung zur Verfügung, wenn sich die Auflistung im LRU unter einer gegebenen Schwelle befindet und wenn der Inhalt des Caches im Datenspeicherbereich identisch ist mit dem Kopieren der Daten im DASD 16. Auf jeden Fall gilt, daß wenn die Menge des zuteilbaren Datenspeicherplatzes in Cache 40 an Schritt 460 gering ist, das heißt, sich unter einer gegebenen Schwelle befindet, dann untersucht der Speicherdirektor 17 an 461 den Teil WQ der Warteschlange 69. Dies geschieht erst so, daß das Destaging oder die Schreiboperationen auf DASD 16 auftreten können, um die Menge des zuteilbaren Datenspeicherplatzes zu erhöhen. In entsprechender Weise verfolgt der Speicherdirektor 17 den logischen Pfad 462 zum Datenübertragungsschritt 463, der an anderer Stelle in dieser Beschreibung erläutert wird, um eine Kopie der in Cache 40 gespeicherten Daten zu übertragen, wie dies durch die Einträge in WQ der Warteschlange 69 zum DASD identifiziert ist. Nach der Datenübertragung 463 fährt der Speicherdirektor 17 mit der Nachverarbeitung an 464 fort, wie dies in Fig. 18 dargestellt ist.
  • Wenn WQ von Warteschlange 69 keine Einträge hat, untersucht der Speicherdirektor 17 an 465 die Teile RQ von Warteschlange 69. Diese asynchrone Datenübertragungsoperation mit sekundärer Priorität hat die Datenübertragung von DASD 16 zum Cache 40 zur Folge. Der Speicherdirektor 17 verfolgt den logischen Pfad 466 zum Datenübertragungsschritt 463. Für den Fall, daß sowohl der Teil RQ als auch der Teil WQ der Warteschlange 69 leer ist, wird die oben beschriebene Proxy-Operation an 470 initiiert. Die Arbeitsstatusanforderung wird an den antwortenden Speicherdirektor 17B geliefert, wie dies oben beschrieben wird und wie dies durch Pfeil 471 angezeigt wird. Ein Timer wird so eingestellt, daß wenn die Zeit abgelaufen ist, beispielsweise nach 2 oder 3 Sekunden, über den logischen Pfad 475 ein Fehler angezeigt wird. Nachdem die Arbeitsstatusanforderung an 470 gemacht wurde, geht der anfordernde Speicherdirektor 17A in seine Leerschleife, wo er von Host 11 zusätzliche Befehle empfangen kann oder von einem beliebigen DASD 16 Achtungssignale empfängt. Solche Achtungssignale sind bekannt und werden aus diesem Grund an dieser Stelle nicht näher erläutert. An 472 kann andere zugeteilte Arbeit ausgeführt werden, selbst bevor der antwortende Speicherdirektor 17B auf die Proxy-Arbeitsanforderungsmeldung antwortet. Der antwortende Speicherdirektor 17B liefert seine Proxy-Antwortmeldung, wie dies durch Linie 474 angezeigt wird, die den Bestätigungsschritt 473 dazu befähigt, zu den Schritten 480 und folgende fortzufahren, wie dies durch Ziffer 332 angezeigt wird. Bis die Meldung vom antwortenden Speicherdirektor 17B empfangen wurde, hält der anfordernde Speicherdirektor 17A den Timer 410 durch die Leerschleife aktiv, die durch Ziffer 472 angezeigt ist, und fährt damit fort, nach auszuführender Arbeit zu suchen oder die DASDs 16 zu überprüfen.
  • Wenn der anfordernde Speicherdirektor 17A die Proxy-Antwortmeldung empfangen hat, wählt er an 480 aus, ob eine Lese- oder eine Schreibdatenübertragung auszuführen ist. An 473 bestätigt er durch eine andere Meldung (nicht dargestellt), daß die Meldung tatsächlich empfangen wurde. Diese Bestätigung kann lediglich darin bestehen, daß eine Tag-Linie innerhalb der Tag-Linien 342 aktiviert wird, die sich über das Melde-RAM 18 zum antwortenden Speicherdirektor 17B erstrecken. Schritt 480 entspricht dem Senden der Proxy-Anforderungsmeldung, wie dies in Fig. 15 an 411 dargestellt ist. Dann kehrt an 481 der anfordernde Speicherdirektor 17A zu seiner Leerschleife zurück und sucht nach DASDs, die eine Untersuchung benötigen, und empfängt Befehle von Host 11. Die Proxy-Antwortmeldung wird dann an 482 empfangen, was dem Schritt 427 in Fig. 15 entspricht. Dann untersucht an 483 der anfordernde Speicherdirektor 17A den Status des zu adressierenden DASD 16. Ist der DASD belegt (DVE BUSY), dann wird die Proxy-angeforderte Datenübertragung entweder in RQ oder WQ zusammen mit dem Proxy-Bit in die Warteschlange des Device gestellt, wie dies in Fig. 5 dargestellt ist. Es wird darauf hingewiesen, daß die Inhalte der Proxy-Warteschlange 84 unverändert bleiben. Sobald der adressierte DASD 16 frei für den Zugriff wird, untersucht der anfordernde Speicherdirektor 17A die Warteschlange und initiiert die Datenübertragung an Schritt 463 unter Verwendung bekannter Datenzugriffstechnologien. Ist der adressierte DASD 16 an 483 nicht belegt, so wird an 485 die Device-Warteschlange von WQ 85 oder RQ 86 entfernt. An 486 untersucht der anfordernde Speicherdirektor 17A durch Prüfung der Bits 350 und 351, ob es sich bei der Proxy-Arbeit um eine Lese- oder Schreiboperation handelt. Bei einer Proxy-Lesearbeit (PR) wird eine Lesedatenübertragung an 463 initiiert.
  • In Fig. 18 findet die Nachverarbeitung nach der Datenübertragung an 463 von Fig. 19 durch den anfordernden Speicherdirektor 17A anhand der Untersuchung an 500 heraus, ob es sich bei der soeben beendeten Datenübertragung und eine Proxy-Datenübertragung handelt. Ist dies nicht der Fall, so werden an 501 die üblichen Host-verarbeitenden Operationen durchgeführt, von denen aus der anfordernde Speicherdirektor 17A zum Leer-Scan weitergeht. Für eine Proxy-Datenübertragung an 463 aktualisiert der anfordernde Speicherdirektor 17A an 502 das Verzeichnis 43. Da das Verzeichnis 43 sowohl dem anfordernden Speicherdirektor 17A als auch dem antwortenden Speicherdirektor 17B gemeinsam ist, hat derjenige Speicherdirektor, der am wenigsten ausgelastet ist, Aufgaben des antwortenden oder beschäftigteren Speicherdirektors übernommen. Anschließend untersucht an 503 der anfordernde Speicherdirektor 17A, ob soeben eine Schreib- oder Leseoperation aufgetreten ist. Diese Untersuchung beeinträchtigt die Art der Information, die an den antwortenden Speicherdirektor 17B geliefert wird. Bei einer Schreiboperation, die vollkommen unabhängig von Host 11 abläuft, wird der Status an 504 erstellt. Dieser Status wird an den antwortenden Speicherdirektor 17 über die in Fig. 15 angezeigte Proxy-Statusmeldung geliefert. Für eine Leseoperation erstellt der anfordernde Speicherdirektor 17A an 505 das Statusende für den antwortenden Speicherdirektor 17B und leitet den Status als Bestandteil der Proxy-Statusmeldung weiter. Anschließend sendet nach dem Schritt 504 oder 505 der Schritt 506 die Statusmeldung über Melde-RAM 18. Die Proxy-Warteschlange 84 wird auf Null zurückgesetzt; dadurch kann eine neue Proxy-Operation folgen. Anschließend wird an 507 zum Leer-Scan zurückgekehrt. Fig. 19 zeigt den Betrieb des antwortenden Speicherdirektors 17B. Er antwortet nicht auf die Meldung, bis er einen Leerscanteil seiner Operationen erreicht hat, das heißt, die Antwort auf eine Proxy-Anforderung wird mit anderen Datenverarbeitungsoperationen verschachtelt. Nach dem Empfang der Anforderung an 510 untersucht der antwortende Speicherdirektor 17B an 511 den LRU- Speicherplatz, das heißt, ob Cache 40 viel zur Verfügung stehenden Speicherplatz hat oder nicht. Bei einer niedrigen Menge an Datenspeicherplatz in Cache 40 untersucht der antwortende Speicherdirektor 17B an 512 zuerst die Schreibwarteschlange 85. Ist die Warteschlange gleich Null, besitzt sie keine Einträge, dann wird die Lesewarteschlange RQ 86 an 513 untersucht. Wenn entweder RQ 86 oder WQ 85 Einträge besitzt (nicht gleich Null sind), so wird die Arbeit an Schritt 514 dem anfordernden Speicherdirektor 17A zugeordnet. Schritt 514 entspricht der Antwort 427 in Fig. 15 nach der Arbeitsstatusanalyse von Schritt 422 und wird der Einfachheit halber in Fig. 19 ausgelassen. Dann wird an 515 zum Leerscan zurückgekehrt, um zugeordnete Arbeit innerhalb des ausgelasteteren Speicherdirektors 17 auszuführen. Scheint der LRU-Speicherplatz an 511 zufriedenstellend zu sein, dann ist es wünschenswert, Daten von DASD 16 in Cache 40 zu übertragen, um die Leistung der Datenspeicherhierarchie 10 zu steigern. Entsprechend wird an 516 zuerst RQ 86 untersucht; wenn RQ 86 einige Einträge besitzt, dann werden die in Warteschlange befindlichen Lesearbeiten an 514 dem anfordernden Speicherdirektor 17A als Proxy-Arbeit geliefert. Wenn RQ 85 an 516 leer ist, dann wird WQ 85 an 512 nach der oben beschriebenen Sequenz an Schritten untersucht. In diesem Fall kann RQ 85 zweimal untersucht werden. Wenn sowohl RQ 86 als auch WQ 85 leer sind, dann liefert an 517 der antwortende Speicherdirektor 17B eine Keine-Arbeit-Anzeige in der Proxy- Antwortmeldung von Fig. 15, indem in PSV 376 dem Code, der willkürlich als 43 festgelegt wird, mitgeteilt wird, daß für Proxy-Zwecke keine zu übertragende Arbeit verfügbar ist.
  • Wie in der Proxy-Anforderungsmeldung von Fig. 15 dargestellt ist, kann der anfordernde Speicherdirektor 17A entweder eine Lese- oder eine Schreiboperation anfordern. In diesem Fall verfolgt bei einer Schreib-Proxy-Anforderung von Schritt 510 der antwortende Speicherdirektor 17B den logischen Pfad 520 direkt zum Schritt 512 und läßt den Schritt 511 der LRU-Speicherplatzanalyse aus. Wurde andererseits eine Leseanforderung mit der Proxy-Anforderungsmeldung eingeleitet, dann verfolgt der antwortende Speicherdirektor 17B den logischen Pfad 521 direkt bis zu Schritt 516, um erst RQ 86 zu untersuchen und erneut den Schritt 511 auszulassen. In entsprechender Weise gilt, daß obwohl der anfordernde Speicherdirektor 17A eine Präferenz für eine Lese- oder Schreib-Proxy-Operation angeben kann, der antwortende Speicherdirektor 17B die Möglichkeit hat, eine andere Datenverarbeitungsoperation durch die angeforderte zu ersetzen. Wenn die geeignete Situation vorhanden ist, ermöglicht das Zusammenwirken zwischen beiden Speicherdirektoren 17 eine verbesserte Operation bei minimaler Steuerung.

Claims (8)

1. Steuerungsmechanismus für einen Lastausgleich zum Ausgleichen einer asynchronen Aktivität in einem System mit mehreren Einheiten, bei welchem sich eine solche asynchrone Aktivität mittelbar auf eine vorbestimmte synchrone Aktivität bezieht und die asynchrone Aktivität das Übertragen von Datensignalen zwischen irgendeiner aus einer Mehrzahl erster Einheiten (16) und einer anderen Einheit (40) über irgendeine aus einer Mehrzahl programmierbarer Einheiten (17 A, B) einschließt, gekennzeichnet durch
(a) Mittel (50, 402), die jeweils jeder programmierbaren Einheit zugeordnet sind, um ein niedriges Volumen einer Arbeit für eine solche programmierbare Einheit anzuzeigen,
(b) Anforderungsmittel (50, 411), die jeder programmierbaren Einheit und den Mitteln zum Anzeigen eines niedrigen Volumens zugeordnet sind, um aus einem der Pfadmittel eine Nachricht für eine Vertretungsanforderung an eine andere der programmierbaren Einheiten zu senden,
(c) Antwortermittel (50, 427) in der anderen programmierbaren Einheit, die mit den Anforderungsmitteln gekoppelt sind, um einen Job für eine Vertretungsarbeit an diese zu liefern und
(d) Betriebssteuermittel (5, 400) in der einen programmierbaren Einheit und mit den Antwortermitteln, mit den ersten Einheiten und mit der anderen Einheit gekoppelt, um den Job für eine Vertretungsarbeit durchzuführen, der von der anderen programmierbaren Einheit empfangen wird und ferner mit Mitteln, um solche Arbeitsgänge unabhängig von dem Job für eine Vertretungsarbeit durchzuführen.
2. Steuerung für einen Lastausgleich nach Anspruch 1, bei welcher jede der programmierbaren Einheiten ein Speicherleiter (17) ist und die ersten Einheiten Datenspeichereinrichtungen (DASD) (16) sind und die andere Einheit ein Cache-Speicher (40) für Datenspeicherung ist, jeder der Speicherleiter Mittel (50) aufweist, um Anforderungen aus einer externen Quelle zum Zugreifen auf die DASD zu empfangen und Mittel zum Verwalten solcher empfangenen Anforderungen einschließlich Mittel aufweist, um Arbeitsgänge mit Bezug auf die asynchrone Aktivität mit Arbeitsgängen zu überlappen, die mit dem Arbeitsgang der externen Quelle synchron sind, gekennzeichnet in Kombination durch:
ein Mittel (50, 422) in dem Speicherleiter, welcher die andere programmierbare Einheit (178) zum Anzeigen seines Arbeitsstatus ist und mit den Antwortermitteln (50, 427) gekoppelt ist, um diesen die Ebene einer Arbeit in der anderen programmierbaren Einheit anzuzeigen und
Mittel (50) in den Antwortermitteln, um die Arbeitsstatusanzeige zu empfangen, damit das Übertragen des Jobs für eine Vertretungsarbeit verhindert wird, wenn die Arbeitsstatusanzeige eine vorbestimmte niedrige Arbeitsebene anzeigt, wodurch ein Lastausgleich durch Übertragungen einer Vertretungsarbeit auf Speicherleiter mit einer vorbestimmten Arbeitsebene beschränkt ist.
3. Steuerung für einen Lastausgleich nach Anspruch 2, die ferner in jedem der Speicherleiter folgendes aufweist: eine Leseschlange (69, RQ), um jene Elemente für eine asynchrone Aktivität mit Bezug auf das Übertragen von Daten aus den DASD zu dem Cache-Speicher anzuzeigen und eine Schreibeschlange (69 WQ), um jene Elemente für eine asynchrone Aktivität mit Bezug auf das Übertragen von Daten aus dem Cache-Speicher zu den DASD anzuzeigen und
Mittel (50; 402) in jeden der Speicherleiter, die mit den Schlagen gekoppelt sind, wobei sie ein Teil der Arbeitsstatusmittel sind, um die Ebene einer Arbeit anzuzeigen, die von jeder der gekoppelten Schlangen durchgeführt werden soll, wodurch die Gesamtarbeit in jedem entsprechenden Speicherleiter über die Schlangen angezeigt wird.
4. Steuerung für einen Lastausgleich nach Anspruch 2, die ferner folgendes aufweist: eine Schreibeschlangen (19), die allen Speicherleitern gemeinsam ist und eine Leseschlange (RQ) in jedem der Speicherleiter, die von allen anderen Leseschlangen unabhängig ist,
Mittel (50, 450, 452) in den Anforderungsmitteln, die mit der gemeinsamen Schreibeschlange (19) gekoppelt sind, um eine asynchrone Leseaktivität für jeden der Speicherleiter unmittelbar aus der gemeinsamen Schreibeschlange und für die Anzeigemittel für ein niedriges Volumen zu initialisieren, die nur bezüglich der unabhängigen Leseschlangen arbeiten beziehungsweise mit denselben gekoppelt sind und
Mittel in in den Anforderungsmitteln, die mit den gemeinsamen Schreibeschlangemitteln und mit den Mitteln für ein niedriges Volumen gekoppelt sind, um eine Arbeitspriorität zwischen ihnen auszuwählen.
5. Verfahren mittels Maschinenimplementierung zum Betreiben einer Mehrzahl programmierbarer Einheiten (17A, 17B), wobei jede programmierbare Einheit eine Mehrzahl asynchrone Arbeit durchführender Teile und Nachrichtenmittel (411, 427) aufweist, die jede der programmierbaren Einheiten koppeln, um zwischen ihnen eine Kommunikation zu ermöglichen und daher Anforderungsmittel (411) und Antwortermittel (427) umfassen, wobei die asynchrone Arbeit durchführenden Teile eine ähnliche Arbeit, einschließlich des Übertragens von Datensignalen zwischen irgendeiner aus einer Mehrzahl erster Einheiten (16) und einer anderen Einheit (40) so durchführen, daß eine asynchrone Arbeit einer der programmierbaren Einheiten von einer anderen der programmierbaren Einheiten durchgeführt werden kann, gekennzeichnet durch den folgenden Schritt:
in jeder der programmierbaren Einheiten (17A, 178) Aufrechterhalten einer Arbeitsschlange (69), um eine Arbeit, die durchgeführt werden soll in dem entsprechenden asynchronen Teil der programmierbaren Einheiten vorzuplanen und durch die folgenden weiteren Schritte:
(a) Abfragen (402) der Arbeitsschlange (69) in einer der programmierbaren Einheiten (17A), um zu bestimmen, ob ein Zustand mit einer kleinen Last vorherrscht oder nicht, falls keine kleine Last vorherrscht, Fortsetzen des Betreibens des asynchronen Teils unabhängig von den anderen programmierbaren Einheiten (17B),
(b) nach dem Abfragen eines Zustands (LOW) mit einer kleinen Last Senden einer Anforderung (411) zu einer der anderen programmierbaren Einheiten (17B) über die Nachrichtenmittel (411, 427), die an der Arbeitsschlange (69) der anderen Einheit (17B) arbeiten, die zu der einen programmierbaren Einheit (17A) übertragen werden soll,
(c) in der anderen programmierbaren Einheit (17B) Prüfen ihrer Arbeitswarteschlange (69) und falls eine gegebene Arbeitsebene vorhanden ist, Senden einer Nachricht (427) über die Nachrichtenmittel (411, 427) zu der einen programmierbaren Einheit (17A) zum Identifizieren einer vorbestimmten Arbeit,
(d) Durchführen (400) der vorbestimmten Arbeit in der einen programmierbaren Einheit (17A), als ob eine solche vorbestimmte Arbeit von der anderen programmierbaren Einheit (17B) durchgeführt worden wäre und
(e) nach dem Abschließen der vorbestimmten Arbeit von der einen programmierbaren Einheit Senden einer Abschlußnachricht (433) in der einen programmierbaren Einheit zu der anderen programmierbaren Einheit und Verarbeiten der vorbestimmten Arbeit im nachhinein in der anderen programmierbaren Einheit, wie wenn innerhalb der anderen programmierbaren Einheit abgeschlossen.
6. Verfahren mittels Maschinenimplementierung nach Anspruch 5, einschließlich (auf die zuletzt zugegriffen wurde) (LRU)- Mittel (460), die mit jeder der programmierbaren Einheiten gekoppelt sind, um einen Status einer ersten gemeinsamen Datenspeichereinheit anzuzeigen, die in Verbindung mit jedem der asynchronen Teile verwendet wird, das ferner die folgenden Schritte umfaßt:
Zugreifen auf die LRU-Mittel und Aktualisieren derselben vor dem Senden einer Abschlußnachricht in der einen programmierbaren Einheit, um den Status der gemeinsamen Datenspeichereinheit nach dem Abschließen der vorbestimmten Arbeit wiederzugeben und
Senden der Abschlußnachricht für die vorbestimmte Arbeit in einer ersten Form, wenn eine erste vorbestimmte Arbeitsart durchgeführt wurde, und in einer zweiten Form, wenn eine zweite vorbestimmte Arbeitsart durchgeführt wurde.
7. Verfahren mittels Maschinenimplementierung nach Anspruch 7, das ferner eine Mehrzahl zweiter gemeinsamer adressierbarer Datenspeichereinheiten einbezieht, die mit den programmierbaren Einheiten gekoppelt sind, um Daten für sie zu speichern, wobei die vorbestimmte Arbeit der ersten Art das Übertragen von Datensignalen aus der ersten Datenspeichereinheit zu einer adressierten der zweiten Datenspeichereinheiten ist und die vorbestimmte Arbeit einer zweiten Art das Übertragen von Datensignalen aus einer adressierten der zweiten Datenspeichereinheiten zu der ersten Datenspeichereinheit ist, wobei die eine programmierbare Einheit die Abschlußnachricht für die zweite Art vorbestimmter Arbeit in einer Form sendet, um es der anderen programmierbaren Einheit zu ermöglichen, daß das weitere Verarbeiten solcher übertragener Datensignale aus der ersten Datenspeichereinheit fortgesetzt wird und die Abschlußnachricht für die erste Art vorbestimmter Arbeit nur zum Löschen derselben in ihrer entsprechenden Arbeitsschlange sendet.
8. Bei dem Verfahren mittels Maschinenimplementierung nach Anspruch 7 zum Behandeln von Übertragungen zwischen einer Mehrzahl peripherer Einrichtungen und einer Datenspeichereinheit, die mit den Einrichtungen gekoppelt ist, um die Datenübertragungen durchzuführen, eine Verwendungseinheit, die mit der Datenspeichereinheit gekoppelt sind, um Datensignale mit ihr zu übertragen, Vorplanungsmittel für einen Einrichtungszugriff, die mit dem Verwendungseinheitsmittel und den Einrichtungen zum Vorplanen von Zugriffen auf die Einrichtungen gekoppelt sind, zum Vorplanen von Datenübertragungen zwischen der Datenspeichereinheit und den Einrichtungen, unter Einbeziehung der folgenden automatischen Schritte:
in der Verwendungseinheit Aufrechterhalten einer Liste von Arbeitselementen, die durchgeführt werden sollen einschließlich Identifizierungen von Daten, die erforderlich sind, um solche Arbeitselemente durchzuführen, die Datenübertragungen zwischen der Verwendungseinheit und der Datenspeichereinheit erfordern können,
in den Vorplanungsmitteln für einen Einrichtungszugriff Aufrechterhalten einer Liste von Datenübertragungen, die zwischen den peripheren Einrichtungen und der Datenspeichereinheit durchgeführt werden sollen,
Abfragen der Liste von Arbeitselementen in der Verwendungseinheit, um die Datenidentifizierungen zu prüfen, falls solche geprüfte Identifizierungen den in der Datenspeichereinheit gespeicherten Daten nicht entsprechen, Zufügen von Datenübertragungen in der Liste von Datenübertragungen in den Vorplanungsmitteln für einen Einrichtungszugriff, um Datenübertragungen von Daten vorzuplanen, die solchen geprüften Identifizierungen entsprechen, bevor die Verwendungseinheit ein entsprechendes Arbeitselement in der Liste von Arbeitselemente erreicht, wodurch die Verwendungseinheit durch irgendwelche erforderliche Datenübertragungen zwischen den Einrichtungen und der Datenspeichereinheit nicht verzögert wird,
Empfangen einer Anforderung für Daten aus der Verwendungseinheit in der Datenspeichereinheit, falls solche angeforderten Daten in der Datenspeichereinheit gespeichert sind, Liefern solcher angeforderten Daten an die Verwendungseinheit und falls solche angeforderten Daten in der Datenspeichereinheit nicht gespeichert sind, Zufügen einer Datenübertragungsidentifizierung in der Liste von Datenübertragungen in den Vorplanungsmitteln für Einrichtungen und
Abfragen der Liste von Datenübertragungen in den Vorplanungsmitteln für Einrichtungen, um Datenübertragungen zwischen der Datenspeichereinheit und den peripheren Einrichtungen vorzuplanen und sodann die vorgeplanten Datenübertragungen in einer vorbestimmten Reihenfolge durchzuführen.
DE19843485821 1983-02-25 1984-01-17 Verfahren und mechanismus zum arbeitslastausgleich in einem mehreinheitensystem. Expired - Lifetime DE3485821T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US06/469,680 US4633387A (en) 1983-02-25 1983-02-25 Load balancing in a multiunit system

Publications (2)

Publication Number Publication Date
DE3485821D1 DE3485821D1 (de) 1992-08-27
DE3485821T2 true DE3485821T2 (de) 1993-03-04

Family

ID=23864700

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19843485821 Expired - Lifetime DE3485821T2 (de) 1983-02-25 1984-01-17 Verfahren und mechanismus zum arbeitslastausgleich in einem mehreinheitensystem.

Country Status (1)

Country Link
DE (1) DE3485821T2 (de)

Also Published As

Publication number Publication date
DE3485821D1 (de) 1992-08-27

Similar Documents

Publication Publication Date Title
DE69724354T2 (de) Ein Mehrprozessorrechnersystem mit lokalen und globalen Adressräumen und mehreren Zugriffsmoden
DE69128107T2 (de) Busanordnung für Speicherzugriff
DE69722079T2 (de) Ein Mehrrechnersystem mit Anordnung zum Durchführen von Blockkopieroperationen
EP0117408B1 (de) Verfahren und Mechanismus zum Arbeitslastausgleich in einem Mehreinheitensystem
DE69729243T2 (de) Multiprozessorsystem mit Vorrichtung zur Optimierung von Spin-Lock-Operationen
DE102009023898B4 (de) Optimierung von gleichzeitigen Zugriffen in einem verzeichnisbasierten Kohärenzprotokoll
DE3689226T2 (de) Multiprozessorsystem mit multihierarchischen Ebenen.
DE69727856T2 (de) Multiprozessorsystem mit Konsistenzfehler-Registrierung mit entsprechendem Verfahren
DE69832943T2 (de) Sequenzsteuerungsmechanismus für ein switch-basiertes Mehrprozessorsystem
DE69116953T2 (de) Methode und Vorrichtung zur dynamischen Ermittlung und Wegfindung für nichtgleichförmigen Verkehr, in parallelen, gepufferten, mehrstufigen Verbindungsnetzwerken
DE69721640T2 (de) Multiprozessor-Rechnersystem und Verfahren zur Steuerung des Verkehrsflusses
DE68927375T2 (de) Arbitrierung von Übertragungsanforderungen in einem Multiprozessor-Rechnersystem
DE69724846T2 (de) Mehrweg-Ein/Ausgabespeichersysteme mit Mehrweg-Ein/Ausgabeanforderungsmechanismus
DE69724353T2 (de) Mehrrechnersystem mit einem Drei-Sprung-Kommunikationsprotokoll
DE69906585T2 (de) Datenverarbeitungssystem mit nichtuniformen speicherzugriffen (numa) mit spekulativer weiterleitung einer leseanforderung an einen entfernten verarbeitungsknoten
DE3751399T2 (de) Parallelrechner mit verteilten, gemeinsam genutzten Speichern und verteilten, aufgabenaktivierenden Schaltungen.
DE68927172T2 (de) Multiprozessorsystem mit cache-speichern
DE69732938T2 (de) Hybrides Speicherzugangsprotokoll in einem Datenverarbeitungssystem mit verteiltem, gemeinsamem Speicher
DE2226382C3 (de) Datenverarbeitungsanlage mit mehreren Prozessoren und diesen zugeordneten Pufferspeichern
DE69722512T2 (de) Mehrrechnersystem mit einem die Anzahl der Antworten enthaltenden Kohärenzprotokoll
DE3782335T2 (de) Speichersteuersystem.
DE69031978T2 (de) Einrichtung und Verfahren zum Vermindern von Störungen in zweistufigen Cache-Speichern
DE10045915A1 (de) Verfahren und System zum Steuern von Datenübertragungen mit physikalischer Trennung der Datenfunktionalität von der Adressen- und Steuerfunktionalität in einem verteilten Multi-Bus-Mehrprozessorsystem
DE602004012492T2 (de) DMA-Steuerung mit Busbesetzungszeit-Beschränkung sowie DMA-Parametersätze für mehrere logische Prozessoren
DE3934145C2 (de) Platteneinheit-Steuerungsvorrichtung und Informationsverarbeitungssystem, das dieselbe enthält

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8330 Complete renunciation