DE3390323T1 - Ermittlung eines sequentiellen Datenstroms - Google Patents
Ermittlung eines sequentiellen DatenstromsInfo
- Publication number
- DE3390323T1 DE3390323T1 DE19833390323 DE3390323T DE3390323T1 DE 3390323 T1 DE3390323 T1 DE 3390323T1 DE 19833390323 DE19833390323 DE 19833390323 DE 3390323 T DE3390323 T DE 3390323T DE 3390323 T1 DE3390323 T1 DE 3390323T1
- Authority
- DE
- Germany
- Prior art keywords
- data
- storage device
- main computer
- magnetic disk
- 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.)
- Withdrawn
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0888—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11B—INFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
- G11B20/00—Signal processing not specific to the method of recording or reproducing; Circuits therefor
- G11B20/10—Digital recording or reproducing
- G11B20/18—Error detection or correction; Testing, e.g. of drop-outs
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11B—INFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
- G11B20/00—Signal processing not specific to the method of recording or reproducing; Circuits therefor
- G11B20/10—Digital recording or reproducing
- G11B20/18—Error detection or correction; Testing, e.g. of drop-outs
- G11B20/1883—Methods for assignment of alternate areas for defective areas
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/6026—Prefetching based on access pattern detection, e.g. stride based prefetch
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/6028—Prefetching based on hints or prefetch instructions
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11B—INFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
- G11B20/00—Signal processing not specific to the method of recording or reproducing; Circuits therefor
- G11B20/10—Digital recording or reproducing
- G11B2020/10916—Seeking data on the record carrier for preparing an access to a specific address
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11B—INFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
- G11B2220/00—Record carriers by type
- G11B2220/20—Disc-shaped record carriers
Description
Diese Anmeldung stellt eine Teilfortführung der US-Anmeldung
325 350, eingereicht am 27. November 1981, dar.
5 Gebiet der Erfindung
Die Erfindung bezieht sich auf das Gebiet der Datenspeicherung und Datenverwaltung. Insbesondere betrifft die Erfindung
ein Verfahren zur Ermittlung, ob ein bestimmter Datensatz, der von einem Hauptrechner von einem Langzeitspeicher
angefordert wurde, voraussichtlich Teil einer Folge derartiger Datensätze ist, und zur Ausführung einer geeigneten
Maßnahme in Erwiderung auf diese Ermittlung.
Stand der Technik
Moderne Datenverarbeitungssysteme bestehen in üblicher Weise aus einem Hauptrechner, der eine arithmetische und
logische Einheit und einen Hauptspeicher zur Aufnahme von momentan zu bearbeitenden Daten und Instruktionen umfaßt,
sowie einem Langzeitspeicher zur Speicherung von Daten und Bearbeitungsinstruktionen, die zu anderen Zeitpunkten
verwendet bzw. abgearbeitet werden. Bei Systemen, die mit einer IBM-Ausrüstung ausgestattet sind, steht der Langzeitspeicher
mit dem Hauptrechner mittels eines "Kanals" in Verbindung. Benötigt der Hauptrechner einen bestimmten Datensatz
oder eine bestimmte Aufzeichnung, so gibt er über den Kanal einen Befehl an den Langzeitspeicher, der dann
die Daten, auf welchem Medium diese auch immer gespeichert sind, z.B. auf Magnetplatten oder einem Magnetbandspeichermedium, lokalisiert und von diesem Medium über den Kanal
in den Hauptspeicher des Hauptrechners einliest. Die beachtliche Zeitdauer, die erforderlich ist, um die Daten
in dem Langzeitspeicher zu suchen und von diesem zu holen, begrenzt den Durchsatz bzw. die Verwendung des Hauptrechners.
Im einzelnen ist die Lokalisierung des Beginns des Datensatzes, d.h. die physikalische Ausrichtung der Stelle
des Beginns einer auf einer Magnetplatte gespeicherten Aufzeichnung in bezug auf den Lese-Schreibkopf, zeitaufwendig.
Das wirkliche Lesen der Daten geschieht verhältnismäßig schnell. Um diese Einbuße im Hinblick auf die Verwendung
des Hauptrechners minimieren zu können, wird der Hauptrechner in üblicher Weise eine Anzahl von Datenanforderungen ausgeben und dann andere Aufgaben durchführen, wäh-
rend diese Daten in dem Langzeit-Platten- oder Bandspeicher gesucht und von diesem geholt werden. Aber selbst
dann, wenn dieses "Schlangestehen" ausgeführt wird, geht beachtliche Rechenzeit des Hauptrechners verloren, da für
den Zugriff zu den Daten und dem Betrieb der Software, die
in Verbindung mit dem Warteschlangenvorgang steht, Zeit erforderlich ist. Dies stellt in bezug auf den Stand der
Technik ein ungelöstes Problem dar und es ist somit Aufgäbe
der Erfindung, den Durchsatz eines Hauptrechners durch Verringerung der Wartezeiten zu verbessern.
Beim Stand der Technik wurde vorgeschlagen, diese Wartezeiten
zu verringern, indem man physikalisch gespeicherte Datensätze, die alle Daten umfassen, von einem Magnetplattenspeicher
zu einem Festspeicher mit viel schnellerer Zugriffszeit
übertragt, was Gegenstand eines vom Hauptrechner ausgegebenen "SUCH"-Befehls ist. Dieser Festkörperspeicher
ist außerhalb des Hauptrechners, und zwar außen am Kanal des Hauptrechners angeschlossen. Wenn somit der
Hauptrechner nachfolgend "LESE"-Befehle ausgibt, können die gesuchten Daten bereits in dem Hochgeschwindigkeits-Festkörperspeicher
enthalten sein und dem Hauptrechner mehr oder weniger momentan zugeführt werden. Werden jedoch
alle Datensätze, die die Aufzeichnungen umgeben, zu denen
der Hauptrechner Zugriff nimmt, in einen Festkörperspeicher eingelesen, der - wie oben beschrieben - außerhalb
des Hauptrechners angeordnet ist, so wird das Problem des
Schlangestehens nicht ganz beseitigt, da dann die Kanal-
und die Interpolatorbenutzungszeit, die während des Dateneinlesens in einen Cachespeicher verbraucht wird, zur tatsächlichen
Zugriffszeit, die erforderlich ist, um den Datensatz
auf der Magnetplatte zu lokalisieren und gegenüber dem Kopf anzuordnen, hinzuaddiert wird.
Außerdem ist ersichtlich, daß es im allgemeinen zwei Arten gibt, mit denen der Hauptrechner zu Daten Zugriff nimmt.
So können zu einem bestimmten Zeitpunkt alle Daten in einem bestimmten Datensatz vom Hauptrechner aufgerufen werden,
oder der Hauptrechner kann, falls erforderlich, einen separaten
Aufruf für jeden Teil des Datensatzes in die Wege leiten. Im ersten Fall bringt das Hinzufügen des Cachespeichers zum System keine Leistungsverbesserung, da lediglich
eine einzige Zugriffszeit erforderlich ist, um jeder Eingabe/Ausgabe-Anforderung
zu genügen. Im zweiten Fall, bei dem jede einzelne Instruktion des Hauptrechners Teil einer
Folge von Instruktionen ist, die typischerweise auf den Zugriff aufeinanderfolgender Teile einer physikalischen Aufzeichnung,
wie z.B. einer Band- oder Magnetplattenaufzeich-(*""■*■■
nung, gerichtet ist, wird Zugriffszeit beim Ansprechen auf jeden Teil des Datensatzes verbraucht. Bei dieser Situation
kann die gesamte Zugriffszeit zu der eines einzigen Zugriff svorganges verringert werden, falls aufeinanderfolgende
Teile des Datensatzes in einem Hochgeschwindigkeits-Festkörpercachespeichers eingelesen werden. Nachfolgende
Anforderungen anderer Teile des Datensatzes können dann direkt vom Festkörperspeicher befriedigt werden, ohne daß
dies zweite und nachfolgende physikalische Zugriffsvorgänge mit sich bringt. D.h., sind die Daten in Voraussicht eines
nachfolgenden "SUCH"-Befehls in den Cachespeicher übertragen
worden, so werden diese sofort zur Verfügung stehen. Demzufolge ist es erwünscht, eine Einrichtung vorzusehen,
die bestimmt, welche vom Hauptrechner stammenden Datenanforderungen voraussichtlich Teil einer Folge derartiger Anforderungen
sind.
Es wäre natürlich für den Hauptrechner möglich, ein Signal
abzugeben, das anzeigt, ob ein spezieller, aufgerufener Datensatz Teil einer Folge derartiger Sätze ist oder nicht.
Einige nachfolgend vorgetragene Systeme werden dieses Merkmal aufweisen. Dies würde natürlich die Entscheidung vereinfachen,
ob die nachfolgende Aufzeichnung vom Langzeitdatenspeicher in einen Cachespeicher übertragen werden soll
oder nicht. Jedoch sehen viele existierende Computersysteme, die eine wirtschaftliche Bedeutung aufweisen (wie z.B. die
meisten der IBM-Computer), ein derartiges Signal nicht vor.
■.-.. ·.■ - Andererseits ist es nicht erwünscht, diese Rechner, insbesondere
ihre Betriebssysteme abzuändern bzw. zu modifizieren, um ein derartiges Signal vorzusehen, da es schwierig
ist, derartige Modifikationen korrekt vorzunehmen und derartige
Modifikationen bei den Computeranwendern nicht gut angeschrieben sind.
.., ; 10 Demzufolge ist es erwünscht, die Datenübertragungsfunktion
zum Cachespeicher effizienter zu gestalten, indem man zur
Bestimmung, ob eine vom Hauptrechner stammende bestimmte Datenanforderung Teil einer Folge von auf den gleichen Datensatz
gerichteten Anforderungen ist (wobei man in diesem Fall den nachfolgenden Teil des Datensatzes in den Cachespeicher
übertragen würde), verbesserte Einrichtungen und Verfahren verwendet, wohingegen Daten, die einer effizienten
Übertragung in den Cachespeicher nicht zugänglich sind, in gleicher Weise wie beim Stand der Technik verarbeitet werden.
Es ist weiterhin Aufgabe der Erfindung, ein System vorzuschlagen, in dem sequentielle Teile eines Datensatzes derart
zum Cachespeicher übertragen werden können, daß der Durchsatz eines Hauptrechnersystems ohne Vornahme von Modifikationen
am Hauptrechner verbessert werden kann.
Eine weitere Aufgabe der Erfindung besteht darin, eine Einrichtung
sowie ein Verfahren vorzuschlagen, die bestimmen, ob eine gesuchte Datenaufzeichnung Teil einer Folge derartiger
Aufzeichnungen ist, wobei die Einrichtung und das Verfahren unter Verwendung von Informationen arbeitet, die
in einem von dem Speicherdetektor verarbeiteten "Kanalpro-
- sr-
gramm " enthalten sind und wobei die Durchführung des erfindungsgmäßen
Verfahrens einfach bewerkstelligt werden kann und relativ kostengünstig ist.
Eine weitere Aufgabe der Erfindung besteht darin, ein Verfahren vorzusehen, mit dessen Hilfe ein einem speziellen
Datensatz zugeteilter Bereich des Cachespeichers automatisch freigegeben werden kann, so daß Speicherplatz zur weiteren
Verwendung frei wird.
Die vorliegende Erfindung befriedigt die Bedürfnisse des Standes der Technik und löst die Aufgaben der Erfindung, die
oben erläutert wurden, indem jede Datenaufzeichnung, die vom
Langzeitdatenspeicher in den Hauptrechner eingelesen wird, einer Überprüfung unterzogen wird. Steuersignale, die in
dem (üblichen) Kanalprogramm enthalten sind, werden verwendet, um negative Indikatoren vorzusehen, d.h. Zeichen
dafür, daß die gesuchte Aufzeichnung nicht eine Aufzeichnung einer Folge von Aufzeichnungen ist, die zusammen im
Langzeitspeicher abgespeichert sind. Wird keiner dieser Indikatoren während der Übertragung einer bestimmten Aufzeichnung
von einem Langzeitspeicher zu einem Hauptrechner aufgefunden, so werden dann die nachfolgenden Aufzeichnungen in
den Cachespeicher übertragen. Nach Empfang jeder folgenden "LESE"-Anforderung vom Hauptrechner wird die Anforderung
mit einer Adreßliste verglichen, die den in den Cachespeicher übertragenen Aufzeichnungen folgt, so daß die Anforderung
des Hauptrechners, falls möglich, seitens des Cachespeichers befriedigt werden kann. Wird bei einem besonders
bevorzugten Ausführungsbeispiel eine auf einer bestimmten Plattenspur befindliche erste Aufzeichnung vom Plattenspei-
eher in den Hauptrechner eingelesen und kein Indikator dafür
festgestellt, daß die erste Aufzeichnung nicht Teil einer Folge von Aufzeichnungen auf der bestimmten Spur ist,
so werden dann die auf der gegebenen Spur befindlichen Daten
in den Cachespeicher übertragen. Werden dann die auf dem Rest dieser Spur befindlichen Daten vom Hauptrechner
aufgerufen, so wird diejenige Spur zum Cachespeicher übertragen,
die als nächste der gegebenen Spur folgt - und zwar wieder ohne Vermittlung des Hauptrechners - usw. Eine Spur
kann auch "im voraus übertragen" bzw. vorübertragen werden, falls z.B. keine ausreichende Anzahl ungelesener Bytes
sich im Cachespeicher befindet, um einer nachfolgenden Datenanforderung zu genügen, die in der Größe derjenigen entspricht,
die vor äußerst kurzer Zeit befriedigt wurde.
Bei einem weiteren bevorzugten Ausführungsbeispiel kann zum Zeitpunkt der Installation des Computersystems oder
zu einem späteren Zeitpunkt mit gewissen Magnetplattenstapeln, d.h., physikalischen Baugruppen aus magnetischen Speicherplatten,
gerechnet werden, die im wesentlichen gestreute Datensätze aufweisen, während mit anderen gerechnet werden
kann, in denen hauptsächlich sequentielle Datensätze gespeichert sind. Auf die seitens eines Hauptrechners vorliegende
Anforderung von Daten, die in einem dieser Magnetplattenstapel gespeichert sind, können unterschiedliche
Steuerfolgen ausgeführt werden, um zu bestimmen, ob die Übertragung weiterer Daten zum Cachespeicher erforderlich
sein wird. Falls z.B. die Zugriffsanforderung einen Plattenstapel
betrifft, von dem man annimmt, daß dieser im wesentlichen stochastische, verteilte Daten aufweist, so
kann ein vergleichsweise geringerer Betrag an Daten zum Cachespeicher übertragen werden, der ansonsten erforderlich
ist, falls sich die Anforderung als die einer Folge erweist, Bezieht sich die Anforderung auf einen Plattenstapel, von
dem man annimmt, daß er hauptsächlich sequentielle Aufzeichnungen enthält, so kann ein wesentlich größerer Betrag
an Daten in Erwiderung auf die Feststellung, daß eine Übertragung von Daten in den Cachespeicher erwünscht ist,
in den Cachespeicher übertragen werden.
Die Erfindung wird durch Bezugnahme auf die beiliegenden
Zeichnungen besser verständlich. Es zeigen:
Fig. 1 eine vereinfachte Ansicht des Systems, inner halb dessen die Erfindung einen Teil bildet,
Fig. 2 bis 5, 8 und 9
Flußdiagramme des erfindungsgemäßen Entschei dungsfindungs-Vorganges und
Fig. 6 und 7 graphische Darstellungen der durch die Erfindung erzielten Leistungsverbesserung.
Das erfindungsgemäße Verfahren zum Erfassen eines sequentiellen
Datenstroms wurde insbesondere im Hinblick auf den Betrieb in einem Cachespeicher gepufferten Subsystem entwickelt,
das Gegenstand der gleichzeitig anhängenden US-Anmeldung 325 346 ist, die am 27. November 1981 eingereicht wurde.
Die Hauptaufgabe des cachegepufferten Subsystems, das Gegenstand der oben erwähnten, gleichzeitig anhängigen Anmeldung
ist und von der die vorliegende Anmeldung einen Teil
bildet, besteht darin, Zugriffszeit einzusparen, die erfor-
derlich ist, um eine vom Hauptrechner abgegebene "SUCH"-Instruktion
abzuschließen, indem Daten aus-einem Langzeit-
.,.■■'■ Magnetspeicher mit langsamem Zugriff in einen Speicher mit
schnellem Zugriff, üblicherweise in einen Festkörperspeieher,
eingelesen werden/ und zwar bevor der Hauptrechner die Daten tatsächlich aufruft. Wird dann die in dem Cachespeicher
befindliche Aufzeichnung aufgerufen, so tritt demzufolge keine physikalische Verzögerung auf. Es ist selbstverständlich
erwünscht, daß nur diejenigen Aufzeichnungen,
die tatsächlich Teile sequentiell aufgegriffener Folgen von Aufzeichnungen sind, in den Festkörperspeicher oder Cachespeicher
übertragen werden. Andererseits wird die Übertragung
von Daten in den Cachespeicher nur dann günstige Auswirkungen zeigen, wenn im wesentlichen alle gesuchten Daten
tatsächlich sequentiell sind, d.h. in einer Größenordnung
von 90%. Dies ist nicht der Fall in typischen kommerziellen
Systemen. Es ist demzufolge erforderlich, daß irgendwelche Vorrichtungen vorgesehen werden, um erstens zu
ermitteln, welche Aufzeichnungen Teile von Aufzeichnungsfolgen
sind, und zweitens nur diese in den Cachespeicher zu übertragen. Die vorliegende Erfindung sieht Einrichtungen
zur Durchführung dieser Ermittlung vor.
wie oben erläutert, können in dem bevorzugten Ausführungsbeispiel der Erfindung einige Daten sogar übertragen werden,
wenn nicht deutlich bestimmt ist, daß eine gegebene Anforderung Teil einer Folge von Anforderungen ist. Simulationstests
zeigen, daß auf statistischer Basis dies doch zu einer Leistungsverbesserung führt.
Die Erfindung ist für den Betrieb in einem cachegepufferten
Speichersubsystem ausgebildet, das als Zusatz für ein bereits bestehendes Speichersystem arbeitet, das steckerkompatibel
zu einem Hauptrechner ist - beim bevorzugten Aus-
- ver -
führungsbeispiel zu einer Maschine der 370er-Serie von IBM,
die unter einem typischen IBM-Betriebssystem arbeitet. Der grobe Systemaufbau der oben erwähnten, gleichzeitig anhängigen
Anmeldung ist in Fig. 1 dargestellt. Dabei gibt der Hauptrechner zehn Befehle und Daten an ein Kanalinterface
12 ab und empfängt von diesem Interface 12 Daten. Für den
Fall, daß die Daten, auf die Zugriff genommen werden soll, auf einem Magnetplattenlaufwerk 11 abgespeichert sind, werden
Zugriffsbefehle zu einem Speicherinterpolator 16 geschickt,
der diese in eine Form umwandelt, die zur Steuerung eines Steuermoduls 18 geeignet sind. Dieses Steuermodul
18 steuert die Bewegung der Plattenlaufwerke 14, d.h. die radiale Bewegung der Lese/Schreibköpfe in bezug auf die
Magnetplatten und dgl. Das bis jetzt beschriebene System ist üblich. Was aber durch die Erfindung der gleichzeitig
anhängigen, vorstehend erläuterten Anmeldung hinzukommt, ist ein Cachespeichersubsystem 20, das einen Festkörpercachespeicher
22 sowie einen Cacheverwalter 24 aufweist, um bestimmen zu können, welche Daten von den Magnetplattenlaufwerken
14 in den Cachespeicher 22 übertragen werden sollen. Es ist demzufolge der Cacheverwalter 24, der das erfindungsgemäße
Verfahren ausführt, das nachfolgend im Detail beschrieben wird.
Versucht der Hauptrechner 10 Daten von einem Plättenlaufwerk
14 zu erhalten, so gibt dieser einen wohldefinierten "SUCH"-Befehl über den Kanal 12 ab, der von dem Speicherinterpolator 16 bei dem Arbeitsablauf des sogenannten "Kanalprogramms" bearbeitet wird, so daß das Steuermodul 18
Zugriff zu den gesuchten Daten nehmen kann. Die -Daten'Wer—
den dann über das Steuermodul 18, den Speicherinterpolator 16 und das Kanalinterface 12 zum Hauptrechner 10 zurückgeleitet. Das aktuelle Lesen und Schreiben von Daten wird
unter Einsatz des Kanalprogramms durchgeführt, einschließlich
des "SUCH"-Befehls, der von IBM, wie auch das Kanal-
interface selbst, in einer Druckschrift mit dem Titel "I/O
Interface Channel to Control Unit", IBM-Veröffentlichung GA 22-6974-4 definiert ist. Wie für den Fachmann verständlich,
ermöglicht dieses genau definierte Protokoll (Leitungsprozedur), daß das Kanalprogramm zusätzliche Instruktionen
für weitere Datenlese- und Datenschreibvorgänge aufnehmen kann. Ist z.B. ein bestimmter Datensatz an mehreren
unterschiedlichen Speicherstellen auf der Magnetplatte gespeichert, beispielsweise auf mehreren unterschiedlichen
"Zylindern" (dies sind Datenspeicherbereiche, die unterschiedliche
Abstände zur Mittelachse des Plattenstapels aufweisen), so' kann während des Kanalprogramms einem
"ZYLINDERSUCH"-Befehl begegnet werden. Das Steuermodul und der SpeJiCherinterpolator bewirken dann, daß der Kopf zu dem
neuen^gesuchten Zylinder Zugriff nimmt und mit dem Lesevorgtrng
fortfährt. Ähnliche Instruktionen enthalten "KOPFSUCH"-Befehle.#%omit
folgt der Speicherinterpolator - wie beim Stand"'i!der Technik üblich - derartigen zusätzlichen "eingebetteten"
Befehlen, die in dem Kanalprogramm angetroffen werden. Obwohl das erfindungsgemäße System äußerst "softwaretransparent"
und "steckerkompatibel" für den Hauptrechner ist, so daß keine Modifikationen des Hauptrechners erforderlich
ist, führt es weiterhin diese Instruktionen aus. Jedoch weist der Cacheverwalter eine Einrichtung zur Überprüfung
der Information auf, die vom Interpolator bei der Ausführung des Kanalprogramms empfangen wird, um zu bestimmen,
ob nach Beendigung des vom Hauptrechner befohlenen aktuellen Vorgangs zusätzliche Daten vom Plattenspeichen
in den Cachespeicher übertragen werden sollen. Im einzelnen überprüft der Cacheverwalter 24 die Kanalbefehle,
während diese durch den Speicherinterpolator laufen, nach Befehlen, wie z.B. die obigen, d.h. nach "ZYLINDERSUCH"-Befehlen,"KOPFSUCH"-Befehlenund
dgl. Falls der Cacheverwalter 24 keine Hinweise empfängt, daß die Daten nicht
- YT-
sequentieller Natur sind - dies wird nachfolgend eingehend
erläutert - , so fährt er dann fort, alle auf einer bestimmten Spur (d.h. in einem eine volle Umdrehung langen Datenspeicherbereich
einer einzigen Seite einer Magnetplatte) gespeicherten Daten in den Cachespeicher zu übertragen. Ruft
dann der Hauptrechner den Rest der Spur auf, so erfaßt der Cacheverwalter diesen Vorgang und bewirkt, daß die nächste
Spur auf gleiche Weise ohne einen Eingriff des Hauptrechners zum Cachespeicher übertragen wird, usw. In diesem Zusammenhang
ist zu bemerken, daß die "nächste Spur" nicht physikalisch benachbart der letzten, auf der gleichen Magnetplattenfläche
befindlichen Spur sein muß. Abhängig von der Organisation des Plattenspeichersystems kann die
"nächste Spur" auf einer völlig anderen Magnetplattenfläche
sein, obwohl gewöhnlich bei einem Magnetplattenstapel die nächste Spur oberhalb oder unterhalb der letzten angeordnet
wird, um sowohl Such- als auch Zugriffsverzögerungszeiten zu vermeiden.
Demzufolge prüft der Cacheverwalter die Kanalbefehle während des Lesens des Kanalprogramms, wohingegen die tatsächliche
Entscheidung, ob die folgende Spur übertragen werden soll, am Ende der Anforderung getroffen wird; d.h. am Ende
des üblichen "Kanalprogramms". Die Erfindung betrifft demzufolge eine zusätzliche Entscheidungsfindung, die unabhängig
vom Hauptrechner mit Hilfe des Cacheverwalters 24 durchgeführt wird. Im einzelnen meldet der Speicherinterpolator
16 dem Cacheverwalter 24 eine gewisse Information oder "Statistik", die den Cacheverwalter 24 in die Lage versetzt,
Entscheidungen zu treffen, die den Wunsch nach einer
Übertragung nachfolgender Spuren betreffen. Bei einem gegenwärtig bevorzugten Ausführungsbeispiel können diese Statistiken
beinhalten:
1. Befand sich die erste auf der Spur befindliche Aufzeichnung unter den bearbeiteten Aufzeichnungen?
2. Befand sich die letzte auf der Spur befindliche Aufzeichnung
unter den bearbeiteten Aufzeichnungen?
3. Befand sich die "Dateiende"-Aufzeichnung unter den
bearbeiteten Aufzeichnungen?
4. Wurde das Kanalprogramm gegenüber dem Cachespeicher
oder direkt gegenüber der Magnetplattenspeichereinrichtung ausgeübt?
10 5. Wurden Cachespeicher- oder Magnetplattenspeicherlesefehler angetroffen?
6. Wurde einem eingebetteten KOPF- oder ZYLINDERSUCH-Befehl
im Kanalprogramm begegnet?
7. Trat ein Schreibbefehl während des Kanalprogramms auf?
15 8. Wieviele Aufzeichnungen in der Spur wurden während des
Kanalprogramms bearbeitet?
9. Wie lange wurden die Aufzeichnungen bearbeitet?
Wie oben erläutert, gibt es zwei grundlegende Arten von Entscheidungen,
die sich darauf beziehen, ob eine der Ausfüh-20 rung des Kanalprogramms folgende Übertragung in den Cachespeicher
stattfinden soll. Wurde das Kanalprogramm vom Kanalinterpolator direkt auf das Magnetplattenlaufwerk abgearbeitet, d.h. wurde eine nicht in den Cachespeicher
übertragene Aufzeichnung gelesen, so stellt sich erstens
übertragen die Frage, ob der Rest der Spur in den Cachespeicher werden
soll. Die zweite Frage tritt dann auf, wenn das Kanalprogramm gegenüber dem Cachespeicher abgearbeitet wurde, d.h.
die vom Kanalprogramm gesuchten Daten tatsächlich im Cachespeicher
gefunden wurden. In diesem Fall stellt sich die Frage, ob die gesamte nächste Magnetplattenspur in den
Cachespeicher "vorübertragen" werden soll. Aufgrund der obigen Statistik schließt das folgende die Übertragung von
Daten in den Cachespeicher aus: Fehler, Schreibbefehle oder "Dateiende"-Aufzeichnungen, und zwar sowohl die Über-
<""~ tragung als auch die Vorübertragung. Diese stellen alle
Gegenindikatoren für den Wunsch einer Übertragung in den Cachespeicher dar, da sie anzeigen, daß die nächste Aufzeichnung
auf der Magnetplattenspur nicht unbedingt Teil
15 des gleichen Datensatzes wie der gelesene ist oder daß einige Teile des Systems fehlerhaft funktionieren.
Eingebettete Suchbefehle werden auch als Teil der Statistik betrachtet, jedoch werden diese etwas unterschiedlich behandelt,
und zwar abhängig vom Ausführungsbeispiel der Erfindung. Wie vor kurzem erörtert, können bei einem gegenwärtig
bevorzugten Ausführungsbeispiel der Erfindung ge-...
wisse spezielle Magnetplattenlaufwerke dazu bestimmt werden, daß sie größtenteils sequentielle Datensätze oder
größtenteils gestreute bzw. zufällige Datensätze enthal-
2 5 ten. Z.B. kann im Fall von gestreuten Datensätzen der
Hauptrechner nicht alle Daten eines gegebenen Datensatzes
zu einem Zeitpunkt aufrufen, so daß für den Fall eines zu
einem solchen Magnetplattenstapel gerichteten Lese-Befehls eine begrenzte Übertragung in den Cachespeicher erfolgen
sollte. Begegnet man einem "ZYLINDERSUCH"-Befehl während der Abarbeitung eines Kanalprogramms, so würde dies eine
Gegenanzeige für eine gewünschte Übertragung in den Cachespeicher darstellen, da wahrscheinlich selbst ein sequentieller
Datensatz sich nicht oft über mehrere Zylinder eines
Magnetplattenstapels erstrecken würde. Jedoch wird ein "KOPFSUCH"-Befehl, der anzeigt, daß die nächste vom Kanalprogramm
gesuchte Aufzeichnung sich in dem gleichen Zylinder befindet wie die vorausgehende, selbst bei einem gestreuten
Datensatz nicht als Gegenanzeige für den Wunsch einer Übertragung in den Cachespeicher angesehen.
"KOPFSUCH"- und "ZYLINDERSUCH"-Befehle werden unterschiedlich behandelt, falls man davon ausgeht, daß der Magnetplattenstapel
wahrscheinlich sequentielle Daten enthält.
10 Im Falle von sequentiellen Daten stellen sowohl die
"KOPFSUCH"-Befehle als auch die "ZYLINDERSUCH"-Befehle
eine Gegenanzeige für eine Übertragung in den Cachespeicher dar, da keine Sicherheit besteht, daß nachfolgende Datensätze
nicht für den gleichen Zylinder bearbeitet werden können. Ganz besonders im Falle eines Magnetplattenstapels
mit gestreuten bzw. zufälligen Daten wird die Übertragung
in den Cachespeicher ohne Bezug auf die sequentielle Form der Daten durchgeführt, so daß "KOPFSUCH"-Befehle die Übertragung
in den Cachespeicher nicht ausschließen. Der Betrag an Daten, die in den Cachespeicher übertragen werden,
wird bewußt gering gehalten, um die Auswirkungen von unnötigen Übertragungen in den Cachespeicher, die nicht zu
einem direkten Nutzen führen, zu minimieren.
Fig. 2 zeigt den Entscheidungsfindungsvorgang, der am Ende
jedes Lesevorganges ausgeführt werden soll; d.h. nach Beendigung des Kanalprogramms (dieses Stadium ist mit dem
Block 28 gekennzeichnet), und zwar in bezug auf einen Plattenstapel, von dem man annimmt, daß er hauptsächlich sequentielle
Datensätze enthält. Zuerst wird die Prüfung der vom Speicherinterpolator 16 verwalteten Statistik vorgenommen,
um zu bestimmen, ob irgendeine Statistik die Übertragung der Aufzeichnung ausschließt, wie dies beim Block
dargestellt wird, wo die Existenz irgendwelcher "keine Übertragung" anzeigender Indikatoren, gemäß Punkte 3 und
5 bis 7 der vorstehend aufgelisteten Statistik bestimmt wird. Liegen derartige Indikatoren vor, werden die Daten
nicht übertragen, wie dies der Block 32 darstellt. Liegen andererseits keine derartigen Indikatoren vor, so stellt
sich als nächstes die Frage, ob der vorausgehende Zugriff direkt von der Magnetplatte zum Hauptrechner vorgenommen
wurde oder ob der Vorgang vom Cachespeicher zum Hauptrechner stattgefunden hat, wie dies anhand des Entscheidungsblockes 34 dargestellt ist. Falls der Vorgang sich von der
Magnetplatte zum Hauptrechner abspielte (NEIN-Antwort des
Blockes 34), werden die Daten betrachtet, um zu sehen, ob die erste Aufzeichnung der Spur gelesen wurde und daß nicht
mehr als 38 138 Bytes (die maximale Zahl von Bytes, die auf zwei Spuren eines speziellen Modells eines Magnetplattenlaufwerkes
gespeichert werden können) gelesen wurden, wie dies beim Block 36 dargestellt ist. Falls dies der Fall ist,
wird dann zumindest der Rest der Spur übertragen, vergleiche Block 38. Unter gewissen Umständen werden mehrere Spuren
übertragen, wie dies nachstehend in Verbindung mit Fig. 3b erörtert wird.
Betrachtet man wieder den Block 34, so stellt sich, falls
der vorangegangene Vorgang vom Cachespeicher zum Hauptrech-5
ner gerichtet war, was anzeigt, daß eine Folge von Aufzeichnungen korrekt erfaßt und in den Cachespeicher übertragen wurden, dann die Frage, ob eine "Vorübertragung"
der nächsten Spur erwünscht ist. Beim Entscheidungsblock 40 stellt sich die Frage, ob die Vorübertragung für Aufzeichnungen
gestattet wird, die auf einer bestimmten Magnetplatteneinrichtung gespeichert sind. Die ermöglicht dem
Systemplaner zu verhindern, daß Daten in den Cachespeicher übertragen werden, die auf bestimmten Magnetplatteneinrich-
3310323
tungen gespeichert sind; d.h. es ermöglicht dem Systemplaner,
'gewisse Magnetplatten für Daten freizuhalten, von denen
er weiß, daß sie stochastisch bzw. gestreut sind. Z.B. würde
man sogenannte "Magnetplatteneinrichtungen mit festem Kopf", die allgemein eine geringere Zugriffszeit als Magnetplatteneinrichtungen
mit einem beweglichen Kopf aufweisen, gewöhnlich nicht für sequentielle Datensätze verwenden. Wird die
Vorübertragung nicht gestattet, so lautet die Entscheidung einfach "keine Übertragung". Wird eine Vorübertragung zugelassen,
so bestimmt dann der Cacheverwalter 24 (Fig. 1), ob eine Vorübertragung erwünscht ist. Z.B. könnte die Entscheidung
in Erwägung ziehen, ob eine ausreichende Anzahl von Bytes vorliegt, die beim Lesen in den Cachespeicher
übrigblieb, um einer nachfolgenden Datenanforderung gleieher
Größe zu genügen, wie dies der Block 42 verdeutlicht. Auf ähnliche Weise kann der Cacheverwalter 24 die Länge der
Aufzeichnung betrachten, die bei einer gegebenen Anforderung abgerufen wird, und mehr als den Rest der Spur oder
mehr als eine einzelne folgende Spur übertragen, falls es scheint, daß einer oder mehreren nachfolgenden, ähnlichen
Anforderungen andererseits durch die in dem Cachespeicher übertragenen Daten nicht nachgekommen wird. Werden beide
Bedingungen erfüllt, so wird in eine Vorübertragungs-Subroutine eingetreten, die in Verbindung mit Fig. 3a beschrieben
wird, wie dies anhand des Blockes 44 verdeutlicht wird.
Die Fig. 3a und 3b zeigen, wie die Anzahl der zu übertragenden oder vorzuübertragenden Spuren bestimmt wird. In beiden
Fällen ist die Anzahl der zu übertragenden oder vorzuübertragenden Spuren proportional der Anzahl der Bytes, die
bei der Ausführung des Kanalprogramms gelesen wird. Es wird von der Annahme ausgegangen, daß, je länger die Anforderung
ist, desto eher wahrscheinlich ist es, daß nachfolgende Anforderungen auch lang sein werden. Demzufolge wer-
den in Fig. 3, falls weniger als 6000 Bytes gelesen wurden, eine Spur vorübertragen, falls zwischen 6000 und 12000
Bytes gelesen wurden, zwei Spuren vorübertragen und falls die Gesamtzahl der Bytes zwischen 12000 und 38138 liegt,
werden drei Spuren vorübertragen (wie oben erwähnt, stellt die Zahl 38138 die maximale Anzahl von Bytes dar, die auf
zwei Magnetplattenspuren einer bekannten Familie von Magnetplattenlaufwerken
gespeichert werden können). Wird demzufolge eine einzige Lese-Anforderung von insgesamt zwei Spuren
ausgeführt, so werden drei Spuren zum Cachespeicher vorübertragen, um somit sicherzustellen, daß ähnlichen nachfolgenden
Anforderungen genügt werden kann, ohne sich einem Nachteil im Hinblick auf die Zugriffszeit auszusetzen. Falls
die Gesamtzahl der bei einem bestimmten Vorgang gelesenen Bytes mehr als zwei Spuren ausmacht, d.h. mehr als 38138
Bytes beträgt, wird eine Vorübertragung in den Cachespeicher nicht durchgeführt. Dies ist so einfach, da die Befriedigung
einer zum Übertragen in den Cachespeicher einleitenden Anforderung
dieser Länge eine beträchtliche Interpolator- und Cacheverwalterbetriebszeit beansprucht, die besser anderswo
aufgewandt werden sollte.
Fig. 3b zeigt ähnliche Berechnungen für den Übertragungsvorgang. Es wird eine Spur übertragen, falls die bei der
Durchführung des Kanalprogramms gelesene Gesamtzahl von Bytes unter 4500 lag; es werden zwei Spuren übertragen,
falls die Gesamtzahl der gelesenen Bytes zwischen 4500 und 9000 lag und es werden drei Spuren übertragen, falls die
Gesamtzahl der gelesenen Bytes zwischen 9000 und 38138 lag.
Es ist verständlich, daß es wichtig ist, die Verwendung jeder im Cachespeicher abgespeicherten Daten zu überwachen,
so daß, falls die Daten im Cachespeicher nicht langer gespeichert werden müssen, der diesen Daten zugeordnete"Rah-
■•■■--J* -
men" - d.h. der Bereich des Cachespeichers - "freigegeben"
: und zum Pool der leeren Rahmen wieder zurückgebrach-t werden
kann. Diese Bereichsaufhebung wird durchgeführt, um Speicherplatz zur Speicherung von Daten freizumachen (was
iri Verbindung mit Fig. 4 erörtert wird) und um die Datensicherheit
zu gewährleisten (Fig. 5).
Fig. 4 zeigt ein Flußdiagramm, das die bei der Bereichsauf-
: . hebung ausgeführten Vorgänge verdeutlicht. Dieses Flußdiagramm
beginnt beim Block 50 mit der Frage: Wurde die EOF(Dateiende)-Aufzeichnung gelesen? Falls die EOF-Aufzeichnung,
d.h. die letzte Aufzeichnung in einer bestimmten Datei, gelesen wurde, sollen verständlicherweise weder irgendwelche
weiteren Übertragungen stattfinden noch wird irgendeine erwartete weitere Verwendung für die Daten vorliegen. Demzufolge
wird der dieser Spur zugehörige Rahmen freigegeben, wie dieses anhand des Blockes 52 dargestellt ist. Wird in ähnlicher
Weise beim Block 58 ein Anzeichen gefunden, daß die letzte Aufzeichnung einer Spur gelesen wurde, so besteht
kein Anlaß die in dem vorangehenden Rahmen gespeicherten Daten, d.h. in dem Rahmen, der die Daten von der momentanen
Spurauresse minus 1 enthält, aufzubewahren, so daß er, wie
anhand des Blockes 60 verdeutlicht, freigegeben wird.
i^ Der Ausführung der in Fig. 4 gezeigten Bereichsaufhebungssubroutine
folgt der in Fig. 5 gezeigte Vorgang, der - wie oben erwähnt - die Bereichsaufhebung zum Zwecke der Datensicherheit steuert. Schreibt somit beispielsweise der Hauptrechner
in eine in den Cachespeicher übertragene Spur ein (Block 70), sollte verständlicherweise der Cachespeicherbereich, in. dem die dem Schreibvorgang entsprechenden Daten
abgespeichert werden, freigegeben werden, da er nicht langer gültige Daten enthält. Entscheidungsblöcke 72 bis 80
zeigen an, inwieweit der Cachespeicher nach dem Erfassen eines Schreibvorganges freigegeben werden soll. Falls beim
Block 72 ein eingebetteter SUCH-Befehl angetroffen wurde,
-sollte der Zylinder freigegeben werden (vergleiche Block 74). Trat ein Mehrspur-Vorgang auf, d.h. ein Vorgang, bei
dem das Schreiben bei einer Folge von Spuren durchgeführt wurde (vergleiche Block 76), so wird dieser Bereich von
Spuren freigegeben, wie dies anhand des Blockes 78 verdeutlicht wird. Im übrigen wird einfach die einzelne Spur,
auf der ein Schreibvorgang stattgefunden hat, freigegeben
(vergleiche Block 18). Bearbeitet das Kanalprogramm lediglieh
einen Lesevorgang, d.h. die Entscheidung in Block 70 hat ein negatives Ergebnis, so wird dann einfach beim
Block 82 nachgesehen, ob ein Cachespeicher-Lesefehler während des Lesevorganges erfaßt wurde. Ist dies der Fall,
so wird der Rahmen ständig freigegeben (vergleiche Block 84), und zwar in der Annahme, daß ein defektes Speicherelement
darin enthalten ist oder dergleichen.
Fig. 8 zeigt das Flußdiagramm des Entscheidungsfindungsvorganges,
der bei dem gegenwärtig bevorzugten Ausführungsbeispiel der Erfindung durchgeführt wird, bei dem Daten
zur Übertragung in den Cachespeicher in Betracht gezogen werden, die auf einem Magnetplattenstapel gespeichert
sind, von dem man annimmt, daß hauptsächlich gestreute Datensätze, jedoch möglicherweise einige sequentielle
Datensätze enthalten sind. Ein fester Betrag an Daten 5 wird in Erwiderung auf alle Leseanforderungen in den
Cachespeicher übertragen. Der Betrag der in den Cachespeicher übertragenen Daten wird durch Gewichtung der
dadurch erzielten Einsparung an Zugriffszeit gegenüber der Interpolatorzeit, die verbraucht wird, durch die Übertragung
in den Cachespeicher bestimmt. Gegenwärtig entspricht der Betrag an Daten, die vorausübertragen werden
sollen, einer vollen Spur. Selbst wenn die Datenanforderung wirklich gestreute bzw. zufällige Daten umfaßt, so
belastet diese Praxis das System nicht mit unnötig zum
Cachespeicher übertragenen Daten und ermöglicht eine Leistungsverbesserung.
Eine Computernachbildung unter der, Annahme einer Spurgröße von 19 kBytes und einem gesamten
Cachespeicherraum von 12 Megabytes zeigt, daß eine Verbesserung eintritt. Das Modul beginnt beim Block 86 in
Betracht zu ziehen, ob irgendwelche der "keine Übertragung" anzeigenden Indikatoren sich im EIN-Zustand befinden;
ist dies der Fall, wird keine Übertragung ausgeführt. Ist die Gesamtzahl der gelesenen Bytes größer als 6000,
wird keine Übertragung vorgenommen, da Datenblöcke dieser Größe eine beachtliche Interpolatorzeit bei der Übertragung
in den Cachespeicher verbrauchen. Beim Block 90 wird die Spur übertragen. Falls die erste Aufzeichnung der Spur
auch gelesen wurde (vergleiche Block 92), wird beim Block 94 eine "möglicherweise sequentiell"-Hinweismarke gesetzt.
Falls diese Marke gesetzt wird (vergleiche Block 95), wird als nächstes eine Vorübertragungsbestimmung durchgeführt,
wie dies in Fig. 9 dargestellt ist. Beim Block 96 wird ein Versuch unternommen, um die Spur freizugeben, die die gegenwärtige
Spuradresse abzüglich des Wertes 2 aufweist (CTA-2), d.h. die Spur, die bei der üblichen Lesefolge
zwei Spuren der gegenwärtig betrachteten Spur vorhergeht. Ist dies beim Block 98 möglich, was anzeigt, daß drei Spuren
in einer Reihe gelesen wurden, so wird dann die folgende Spuradresse, d.h. die Spuradresse CTA+1 vorübertragen
(vergleiche Block 100), und zwar wieder unter der Annahme, daß die Folge wahrscheinlich fortlaufen soll. Eine
Bereichsaufhebung wird im Hinblick auf Daten, die von einem Magnetplattenstapel mit gestreuten Datensätzen in
den Cachespeicher übertragen werden, in ähnlicher Weise durchgeführt, wie dies vorstehend in Verbindung mit Magnetplattenstapeln
erörtert wurde, die sequentielle Datensätze aufweisen. Wie oben erwähnt, wird beim Block 96 eine
Bereichsaufhebung bei der gegenwärtigen Spuradresse minus-2
durchgeführt und die Bereichsaufhebungsroutine für die Datensicherheit
- wie in Verbindung mit Fig. 5 beschrieben wird ebenso durchgeführt, insbesondere im Hinblick auf Cachespeicher-Lesefehler.
Es sollte ebenso bemerkt werden, daß die Bereichsaufhebung
bzw. -freigäbe im Hinblick auf Magnetplattenstapel mit gestreuten Datensätzen gemäß der Zuordnung der Rahmen zu den
zu übertragenden Daten durchgeführt wird, und zwar entsprechend der gleichzeitig anhängigen US-Anmeldung 325 351
"Adaptive Domain Partitioning of Cache Memory Space" sowie einer gleichzeitig anhängigen Teilfortführungsanmeldung mit
gleichem Titel. Entsprechend jener Erfindung werden zufällige bzw. gestreute Daten, die gemäß den in Verbindung mit den
Fig. 8 und 9 erläuterten Verfahren in den Cachespeicher übertragen wurden, schließlich freigegeben, und zwar einfach deshalb,
weil sie nicht verwendet wurden.
Die Flußdiagramme der Fig. 2 bis 5 und 8 bis 9 können, wie dem Fachmann ohne weiteres verständlich ist, als Subprogramme
innerhalb eines Cacheverwalter-Steuerprogramms arbeiten. Insbesondere sind die oben beschriebenen, erfindungsgemäßen
Verfahren für den Betrieb des Magnetplattensteuergeräts Modell 8890 der Storage Technology Corp. - dem Anmelder
der vorliegenden Anmeldung - ausgelegt. Demzufolge sind die in den Fig. 2 bis 5 gezeigten Entscheidungsfindungsfolgen
als Subprogramme aufgebaut, die jedesmal, wenn ein Kanalprogramm abläuft, ausgeführt werden. Es gibt unzählige andere
Arten, mit denen es möglich wäre, das Verfahren der Erfindung
auszuführen. Z.B. könnte die Übertragung nur dann in Betracht gezogen werden, wenn die vor äußerst kurzer Zeit gelesene
Aufzeichnung eine Spur begann, wohingegen eine Vorübertragung nur am Ende einer Spur in Betracht gezogen werden könnte. Für
den Fachmann ist ersichtlich, daß zahlreiche andere Auswege möglich sind.
Bei einem gegenwärtig bevorzugten Ausführungsbeispiel der
Erfindung ist das Entscheidungsfindungsvermögen der Erfindung
in einem Mikrobefehlscode eingebettet, der permanent in einer Diskette eingeschrieben ist und physikalisch in
die Speicherinterpolatoreinheit übertragen sowie in einen Festkörper-Direktzugriffsspeicher umgeschrieben werden kann,
und zwar jedesmal, wenn der Interpolator eingeschaltet wird. Dieser steht mit einem bereits bestehenden Speicherinterpolatorprozessor
zur Ausführung der Cacheverwalterfunktion operativ in Verbindung.
Die Fig. 6 und 7 zeigen graphisch die Leistungsverbesserung, die von dem erfindungsgemäßen Subsystem zur Durchführung
einer Übertragung von Daten in einen Cachespeicher erzielt wird. Diese Figuren verdeutlichen Daten, die durch Computersimulation
der Systemleistung erzeugt wurden. Bis zum Einreichungstag vorliegenderAnmeldung waren keine vergleichbaren
aktuellen Daten verfügbar, obwohl Testvorgänge in bezug auf spezielle Bearbeitungsabläufe verdeutlichen, daß ein
bedeutender Leistungsvorteil realisiert wird. Diese Ergebnisse beziehen sich auf ein bevorzugtes Ausführungsbeispiel,
bei dem die Daten in Magnetplattenspureneinheiten zum Cachespeicher
übertragen werden, die zu Nachbildungszwecken begrifflieh
so definiert sind, daß sie vier Aufzeichnungen enthalten.
Fig. 6 verdeutlicht die durchschnittliche Eingabe/Ausgabebefehls-Beantwortungszeit
gegenüber der Blockgröße der Daten, auf die Zugriff genommen wird. Die Eingabe/Ausgabe-Zeit
umfaßt die Zugriffszeit, die für einen bestimmten Sektor
einer bestimmten Magnetplatte erforderlich ist, um gegenüber dem Lese/Schreibkopf angeordnet zu werden, sowie die
Zeit, die für den Lese/Schreibkopf erforderlich ist, um sich radial bezüglich der Magnetplatte zu bewegen (und zwar
bei den Magnetplattenlaufwerken, bei denen bewegliche Köpfe
verwendet werden), zuzüglich der "RPS-Fehlzeit", d.h. derjenigen
Zeit, .die verlorengeht, da Komponenten des Eingabe/ Ausgabeweges nicht zu dem Zeitpunkt verfügbar sind, zu denen
die Daten verfügbar sind. Die Such- und Zugriffsverzögerungen sind unabhängig von der Blockgröße. Da jedoch der längere
Block mehr Zeit zum Beschreiben bzw. Lesen fordert, nimmt sowohl die Eingabe/Ausgabeübertragungszeit als auch die RPS-Fehlzeit
mit steigender Blockgröße zu. Die Kurve a der Fig. 6 zeigt dies anhand einer graphischen- Darstellung der durchschnittlichen
Ansprech- bzw. Beantwortungszeit eines bekann-,-""■
ten Systems; d.h. eines Systems, in dem kein Cachespeicher vorgesehen ist. Je langer demnach der Block ist, desto langer
ist die Ansprechzeit. Die minimale Zeit, die erreicht wird, ist jedoch nicht Null, da selbst bei einem Block von
extrem kurzer Größe Warte- und Zugriffszeit erforderlich ist.
Die Kurve b der Fig. 6 zeigt die Verbesserung, die durch Übertragung eines größeren Teils von Daten hervorgerufen
wird, als der Teil, der nach Empfang aller Eingabe/Ausgabe-Anforderungen
abgefragt wird; d.h. es wird nicht zwischen denjenigen Anforderungen, die wahrscheinlich für sequentiell
betrachtet werden und denjenigen, die zufällig bzw. gestreut sind, unterschieden. Die Eingabe/Ausgabezeit wird in bezug
auf Blöcke mit kleineren Größen verbessert, da die Wartebzw. Zugriffszeit beachtlich verringert wird. Die Tatsache,
daß Daten, selbst wenn sie nicht sequentieller Natur sind, in den Cachespeicher übertragen werden - d.h. in Erwiderung
auf zufällige Anforderungen, was zusätzliche Zeit verbraucht,
da der Interpolator nicht zur Verfügung steht -bedeutet jedoch, daß die durchschnittliche Eingabe/Ausgabezeit im Hin-
blick auf große Blocks größer als in einem Subsystem ohne
Cachespeicher ist. Somit zeigt die Kurve b, daß die durchschnittliche Eingabe/Ausgabezeit größer ist,als für die Einrichtung
ohne Cachespeicher gemäß Kurve a, falls die Blockgröße zunimmt.
Kurve c der Fig. 6 zeigt die durch die Erfindung hervorgerufene Verbesserung, wobei effektiv ein Unterschied gemacht
wird zwischen Daten, die als wahrscheinlich sequentiell betrachtet
werden und denjenigen, die nicht sequentiell sind. Da Direktzugriffsdaten, d.h. Daten, die nicht als sequentiell
identifiziert werden, nicht in den Cachespeicher übertragen werden, weisen die zufälligen Daten die gleiche Eingabe/Ausgabe-Zugriff
szeit auf, wie der Stand der Technik, wie dies anhand der Kurve a verdeutlicht wird. Die Verbesserung infolge
der Übertragung von sequentiellen Daten in den Cache-
ι ■
speicher zeigt sich darin, daß die Kurve c unterhalb der
Kurve a liegt, bis die Blocklängen zu lang werden; an diesem
Punkt ist die Zugriffszeit von geringerer Bedeutung, als die erforderliche tatsächliche Lese/Schreibzeit, wie
vorstehend erläutert.
Fig. 7 zeigt die durchschnittliche Eingabe/Ausgabezeit als Funktion des Prozentsatzes der vom Hauptrechner aufgerufenen
sequentiellen Daten. Alle Kurven unterstellen ein relativ belegtes System. Die Kurve a zeigt wiederum die Leistung
eines Magnetplattensystems ohne Cachespeicher. In einem derartigen System wird kein Unterschied gemacht zwischen
sequentiellen Daten und Direktzugriffsdaten. Demzufolge ist
die Kurve a im wesentlichen flach. Kurve b hingegen verdeutlicht ein System mit Cachespeicher, bei dem alle Datenanforderungen
in den Cachespeicher übertragen werden. Diese Kurve b zeigt eine bedeutende Verringerung der Eingabe/Ausgabzeit,
falls der Prozentsatz an sequentiellen Daten zunimmt, da sobald weniger zufällige Daten unnötigerweise in den Cachespeicher
übertragen werden, der Prozentsatz von sinnvoll in den Cachespeicher übertragenen sequentiellen Daten zunimmt,
so daß die Leistung verbessert wird, was sich in der Erniedrigung der Eingabe/Ausgabezeit wiederspiegelt. Jedoch
muß der Prozentsatz an Daten, die sequentieller Natur sind,
ziemlich hoch sein, ehe eine Leistungssteigerung realisiert werden kann. Die Kurve- c hingegen zeigt wieder die Eingabe/
Ausgabezeit eines Cachespeicher-Subsystems gemäß der Erfindung, bei dem nur Daten in den Cachespeicher übertragen werden,
die wahrscheinlich sequentieller Natur sind. Die dargestellte gesamte Leistungsverbesserung ist der Tatsache zuzuschreiben,
daß das Cachespeichersystem nur verwendet wird, falls sequentielle Daten vorliegen; außerdem wird nicht
nutzlos Interpolatorzeit durch Übertragung von Zufallsdaten in den Cachespeicher verbraucht.
Als ein Beispiel der Ausführungsmethoden der Erfindung ist als Anhang A (Appendix A) eine "Pseudocode"-Übersetzung des
erfindungsgemäßen Verfahrens beigefügt, auf die Bezug genommen wird. Dieser Pseudocode umfaßt sowohl aktuelle Mikrocode-Instruktionen
als auch dokumentarische Bemerkungen, so daß auch ein anderer als der ursprüngliche Programmierer
das Programm verstehen kann. Ferner ist ein Dokument mit dem Titel "Chinook Prolog and Pseudocode Conventions" als
Anhang A-I (Appendix A-I) beigefügt, das die Pseudocode-Sprache
erläutert. Der Anhang A beschreibt ein Mikrocodemodul
mit dem Titel "End-Channel Program Processing". Es beginnt mit einer allgemeinen Beschreibung der Programmfunktion
und mit Funktionsbeschreibungen einschließlich der Bits, die vom Speicherinterpolator zu dessen Betrieb ange-
25 fordert werden sowie einer Definition der verschiedenen
Subroutinen und der verschiedenen erforderlichen Register.
Der Hauptteil des Programms beginnt bei Zeile 1820 (Seite 4) und weist aktuelle Mikrocodeinstruktionen, z.B. bei den Zeilen 2170 bis 2370 auf, denen englischsprachige Erläuterungen
vorangehen, die den Gegenstand der Entscheidungen beschreiben, die durch den nachfolgenden Mikrocode getroffen werden,
vergleiche Zeile 1980 bis 2150. Der dargestellte Mikrocode führt die gesamte Verwaltungsfunktion aus und ruft, falls
erforderlich, verschiedene Subroutinen auf. Z.B. wird die
Subroutine für die der Datensicherheit dienenden Bereichsaufhebung, die in Verbindung mit Fig. 5 oben beschrieben
wurde, in den Zeilen 2440 bis 2470 des Anhanges A aufgerufen.
Die aktuelle Subroutine ist als Anhang B beigefügt. So werden z.B. die Schritte, die in Erwiderung auf die durch
den Block 82 gemäß Fig. 5 dargestellte Entscheidung "Cachespeicher-Lesefehler?"
vorgenommen werden, in englischer Sprachform in den Zeilen 1500 bis 1570 und im Mikrocode in
den Zeilen 1590 bis 1730 des Anhanges B dargestellt.
Dem Fachmann, dem diese Dokumentation des "End-Channel Program" zur Verfügung gestellt wird, wird keine Schwierigkeiten
bei der Ausführung des erfindungsgemäßen Verfahrens haben.
Andere gleichzeitig anhängige Anmeldungen, die für das Verständnis
der vorliegenden Erfindung von Bedeutung sein könnten, sind durch Bezugnahme in die Beschreibung aufgenommen
worden, so z.B. die gleichzeitig anhängige US-Anmeldung . 325 351 von Coulson et al, eingereicht am 27. November 1981,
mit dem Titel "Adaptive Domain Partitioning of Cache Memory Space", die die Organisation des in dem Festkörpercachespeieher
22 enthaltenen Speicherraums erörtert, sowie eine Teilfortführung dieser Anmeldung. Vom Cacheverwalter durchgeführte
Fehlerverwaltung und Wiederanlauffunktionen werden in einer
gleichzeitig anhängigen US-Anmeldung 325 287, eingereicht am 27. November 1981, von Blickenstaff et al, mit dem Titel
"Data Path Reconfiguration for Error Control", erörtert.
Ebenso von Bedeutung ist die gleichzeitig anhängige US-Anmeldung 325 288, eingereicht am 27. November 1981, von
Moreno et al, mit dem Titel "Control of Cache Buffer for Memory Subsystem" sowie eine Teilfortführung dieser Anmeldung,
die erörtert, wie man eine genaue gegenseitige Beziehung zwischen den Speicherstellen auf den Magnetplatten-
einrichtungen und Speicherzellen in den Cachespeicher aufrechterhält.
Für den Fachmann ist verständlich, daß ein Verfahren zur Bestimmung der sequentiellen Natur einer Magnetplattenauf-Zeichnungseinrichtung
beschrieben wurde, das die Bedürfnisse des Standes der Technik befriedigt und die Aufgaben
der Erfindung löst, die vorstehend erörtert wurden. Trotzdem ist es verständlich, daß es verschiedene Arten gibt,
in denen das Verfahren der Erfindung verkörpert werden kann und eine Verbesserung vornimmt und daß demzufolge die obige
Offenbarung nicht als eine Beschränkung der Erfindung angesehen werden sollte, sondern lediglich als ein Beispiel der
Erfindung. Die Erfindung wird durch die folgenden Patentansprüche angemessener definiert.
Ul
I Γ"
H D .■■Ζ
W CU Ρ-ι
ι ι
«·» | ι-ι |
X
V) O ΟΟΟ |
ο | O O | O O | O ΟΟΟ | ·» | Ο | O | ο | α | »"κ | ο | O | ^* | O | 82 | O | O | Ο | O | ΟΟΟ | B) | O | O | O O | O | Ο | O | O O | O C | O | O | Φ | B) | O | O | ο | O | O | O O | O | O | D | O | ο | τ- | |
O | ΙΛ |
(ν rs <» ιη
Λ ί·Χ *··. ^S |
' O | (O f | m σι | O - | V) | 1 | ιη | (C | B) | CQ | B) | 0) | :οο)} :οο}} |
(N | O | ν. | ιη | id r- (ο | 4J >» | Γ) | ιη | O | ^- | £ | U | τ— | O | |||||||||||||||||||
§ | V) | T | • O | Ii | ■ CM D | C | 8 | 88 | 3 | 88 | C | 8 | TJ |
O
O |
:οο}} | 8 | 8 | 888 | C Xl | 8 | 8 | 88 | :οο)) | '0O)) | 8 | :οο}) :οο>) |
§g | 8 | '0O)) | 4-* | ((σο-; | OO)) |
ο
ο |
τ | 8 | 88 | '0O)) | ?00)) | 8 |
O
O |
S | O | ||||||
(9 | Ul | ■ U | 8888 | O | I | 0 | φ | C | φ | C | φ | E | C | B) | 0 | φ | CS | τ-1 | Ό | B) | >. | α | φ | η | C | B) | φ | O | ||||||||||||||||||||
# | L- | υ | » U. | β | L· | T- | ο | £ | O | E Φ | O | T) | TJ* | L | φ | £ | £ | <η | C | Φ | 4-1 | φ | τ- | 0 | τ. | O) | C5 | |||||||||||||||||||||
i | ο | • O |
4·· .
υ |
L· | It- | ■τ- | £ | •τ- | Ol E | I. | φ | φ | 3 | T-* | 4^ | 4V | 4-> | -τ- | S) | 4-> | τ- | ο | ί | η | U. | |||||||||||||||||||||||
τ | X | C | B) | β | τ- | 4-1 | -H | Φ — | Ol | E | E | S) | *τ- | ιη | 4-» | >. | Ι. | ο) | Ο | 4J | E | 4- | O | |||||||||||||||||||||||||
η! | α | T ·· | 3 | υ | β | B) | (0 | β) 4^ | 0 | Ι | ί- | Ol | υ | T) | C | ς. | C | φ | Xl | Oi | V) | T-I | β) | £ | V) | X | ||||||||||||||||||||||
.. | ■ ■ | > Ul | H- | « | TJ |
φ
α |
υ | 3 | L. | Ο | Ο | C- | τ- | φ | E | Φ | — | E | Φ | φ | φ | O | U | τ-1 | ||||||||||||||||||||||||
■» | X | χ | > X | Φ | α | B) | ο |
B)
Φ |
£
4-1 |
B, | α |
U.
ί. |
π
ι |
φ | E | O |
Ι
Ο |
£
Ι |
U- | ιη |
O
ί. |
C
0 |
4-< | £ | Ι | 0 | ||||||||||||||||||||||
.· | E | B) | φ | Τ | C | T- | τ— | φ | α) | £ | T- | U- | H- | τ-4 | B) | ψ— | O | Oi | -· | |||||||||||||||||||||||||||||
in | Or | α | ι Z | O | 3 | L. | Ο | T- | Ό | U- | φ | α | α | t- | ■— | ί. | 4ν | Ο | — | (0 | D) | C | X | |||||||||||||||||||||||||
C | ο | C | C | C | φ | β | (D | IO | S) | τ-1 | £ | Ol | 44 | |||||||||||||||||||||||||||||||||||
O | ο | > Ul | O) | C | φ | 4-* | TJ | 3 | α | 0 | C | η | B) | . | Ό | α | Φ | E | • | TJ | S) | TD | OC | |||||||||||||||||||||||||
α | OC | ► -J | 0 | £ | τ- | Ν·* | U | ο | T- | T- | Ε | O | Bl | Ε | £ | α |
Φ
E |
TJ | C | U | ||||||||||||||||||||||||||||
0. | CL | ς. | υ | 1. | ί. | £ | Φ | υ | T- | S) | T-* | O | ο | α | φ | L | T) | 0 | O | |||||||||||||||||||||||||||||
co | > O | α | UIO | α | *"^ | O | TJ | T) | 4·* | υ | C | C | U- | 0 | ί. | U- | L. | TJ | 0 | φ | φ | α | OC | |||||||||||||||||||||||||
S. | ι | » O | £_ | υ | O | Dl | C | Φ | φ | α | 0 | 0 | It- | 4-* | Ol | φ | C | U- | (D | U- | £ | T- | ιη | α | ||||||||||||||||||||||||
ID | Ul | ι X | r— | U- | τ | β | £ | B) | τ- | 3 | C | Ό | O | ιη | τ- | C | Φ | Ι | Τ | Φ | ||||||||||||||||||||||||||||
Φ | - |- | Τ | O | η | 3 | Ul | TJ | 4^ | 4> | Χι | L | C | Ό | ί | O | O | φ | C | T) | |||||||||||||||||||||||||||||
"ν | C | Ο | U- | C | U | β | 3 | O | Φ | ο. | Φ | U- | £ | φ | Ο | L | ||||||||||||||||||||||||||||||||
ω | «5 | ■ | C | φ | *** | ι | C | Φ | Ul | C | C | Φ | 4-* | E | C | V) | φ | 0 | ||||||||||||||||||||||||||||||
O | I | E | φ | Xl | I | O | Η- | Xl | 3 | Φ | E | Τ | "φ | Γ* | 0 | 3 | Ο) | 0. | υ | |||||||||||||||||||||||||||||
υ | £ | O | +■ | B) | 0 | φ | Φ | H- | E | O | Ο | L | 4-» | O | ^ | φ— | B) | |||||||||||||||||||||||||||||||
ι | E1 | υ | ί. | τ- | 3 | TJ | φ | 0 | £ | £ | L. | Φ | υ | υ | φ | τ- | £ | 4J | Ω | |||||||||||||||||||||||||||||
α | I | im | T- | 1. | S) | φ | υ | (0 | B) | 4^ | B) | φ | υ | φ | C | O | L. | 4^ | U | Φ | O | φ | ο | |||||||||||||||||||||||||
Ul | . " . ■ t |
β) | TJ | φ | Dl | υ | τ«· | C | C | O) | V) | 4^ | 0) | £ | to | C | 4·* | O | O | S | β | Xl | 1- | £ | £ | |||||||||||||||||||||||
IC | I | V) | C | B) | Φ | X) | U- | (0 | T- | 0 | B) | >^ | C | Φ | φ | OC | ι— | Ι | (0 | (0 | O) υ | 4·* | 4·» | |||||||||||||||||||||||||
φ | Ul | ID | T- | E | E | Τ | E | Xl | T- | C- | T) | Ο) | T- | £ | ·— | Ό | C | 0 | ||||||||||||||||||||||||||||||
OC | υ | Φ | C | Ü | S. | ι. | Ο | £ | T) | φ | 4·* | υ | TJ | ο | Φ | O | B) | |||||||||||||||||||||||||||||||
Ul | I | 0 | D) | τ— | τ- | C | φ | 0 | Φ | ί | Ό | T) | C | £ | Φ | φ | 4^ | — | 3 | O | ||||||||||||||||||||||||||||
I | L | C | φ | O | α | H- | *> | α | Τ | Φ | C | α | O | 4"» | • | E | D | τ— | φ | S) | 4-» | η | 4·* | O | ||||||||||||||||||||||||
I | » | O. | α | Ο | τ» | V) | L. | Φ | Ι. | ^~ | 0 | T- | B) | S) | C | Ό | τ— | £ | Τ | O | τ. | O | ||||||||||||||||||||||||||
Ul | I | * | 4·* | T-* | φ | Ό | 0 | U- | JC | 4^ | B) | C | L. | C | IO | 4-· | Ο | υ | 4^ | Dl | ||||||||||||||||||||||||||||
V) | I | E | O | I | IS | α | E | α | I | D) | T- | η | Φ | β | * | O | (S | 4V | UJ | U | 0 | 0 | V) | C | ||||||||||||||||||||||||
IA | I | β | Ό | T) | £ | υ | T- | φ | υ | 0. | 3 | £ | V) | E | ν- | |||||||||||||||||||||||||||||||||
ί. | Τ | Φ | β | φ | B) | ο | E | 4-» | O | Η- | η | V) | Γ— | £ | T) | τ- | ||||||||||||||||||||||||||||||||
I | D) | Ο | Τ | C | Dl | C | α | 4-· | S) | T- | L. | Ο | T- | T- | α | O | 4-* | C | Ο | |||||||||||||||||||||||||||||
Ul | O | *" | C | Q | Ι. | 0 | α | Φ | B) | τ- | τ | L. | Ό | φ | » | φ | τ- | C | 0 | υ | ||||||||||||||||||||||||||||
O | L. | φ | 0 | O | £ | £( | 4-* | α | Dl | C | D) | φ | T) | ί- | φ | α | ||||||||||||||||||||||||||||||||
D | α | £ | •ψ- | Dl | V) | O | B) | φ | 0 | O | β | B) | C | τ— | Ο | E | ιη | |||||||||||||||||||||||||||||||
U
O |
^. | 4-* | B) | ♦* | C | φ | L· | α | T) | (. | υ | 4-* | υ | O | 3 | D) | >> | Oi | 0) | φ | ||||||||||||||||||||||||||||
OC | Φ | O | β | C | Φ | ο | C | C | "^, | t. | 0. | ι. | V) | ** | χι |
TJ
O |
O | O |
Ct
E) |
ί-
L. |
ο | |||||||||||||||||||||||||||
υ | § | B) | B) | 1. | E | E | U- | T- | 0 | τ— | φ | O | τ— | 0 | B) | Ι | E | C | ||||||||||||||||||||||||||||||
β | «·- | E | TJ | E | S) | C | L. | U- | T- | T^ | C | L. | . (D | U | τ | Z | τ- | Ο | O | O | £ | (C | Ü | >, | ||||||||||||||||||||||||
X | £ | g | C | TJ | L | t- | O | Φ | Φ | *> | T) | O | ο | C | C | L. | S) | ο | 4^ | α | Φ | T) | υ | X | Ω | |||||||||||||||||||||||
υ | υ | Z | O | C | κ | Φ | U. | T- | 4·* | T) | Ό | υ | φ | 4^ | ο | C | φ | φ | O | U | 4-* | T- | φ | φ | ||||||||||||||||||||||||
O | Τ | 0 | 4·· | 4·* | φ | 0) | C | ·— | JC | B) | τ- | β | QC | Ι | 4^ | T- | C | ο | £ | CD | C | |||||||||||||||||||||||||||
41 | Z | Ό | ν | fr-t | Ι. | Φ | ι | α | Ό | V) | Φ | 3 | φ | 4-» | £ | Ο. | V) | 0) | 3 | 4-" | S | Ü | ^ | |||||||||||||||||||||||||
O | C | υ | ^*. | Φ | φ | 4-» | TJ | C | 3 | 1- | H- | (S | Ol | φ | S) | υ | C | α | .C | L. | O | »τ- | IS | 4-t | η | 4-· | ||||||||||||||||||||||
» | Ul | O. | Q. | φ | V) | C | 0 | υ | V) | £ | C | α | OC | φ | Ol | υ | T) | Η- | α | 3 | φ | 3 | ||||||||||||||||||||||||||
OC | t** | Φ | IA | C | E | O | 4^ | 4·* | TJ | U | 4-* | "ά | Bl | φ | 0 | V) | O | 0 | ||||||||||||||||||||||||||||||
f— · | Ul | OC | τ' | O | B) | α | φ | E | C | 4·1 | V) | O | φ | V) | Τ | . | ο | L. | ||||||||||||||||||||||||||||||
_) | OC | υ | % | 4·* | α | Φ | O | I | 0 | £ | φ | ** | > | Ul | V) | g | UJ | τ: | αϊ | B) | >· | (· | ^ | — | ^ | |||||||||||||||||||||||
Ul | V) | O |
K
O |
V) | S) | Φ | υ~ |
Jh.
4-· |
O
T) |
Έ |
Q)
4-* |
O | φ | L- | O |
φ
E |
φ
U |
Ο
υ |
T- |
L.
0 |
φ
£ |
O | 0 | 0 | ||||||||||||||||||||||||
Q | Z |
UJ
O |
E | τ— | U | TJ | 0 O | T- | 0 | O D | η. | 0 | * | O | Ι | —J | (S | U | L· | τ- | 4·* | T- | H- | τ- | ||||||||||||||||||||||||
ζ υ | ι— | φ | 0 | ·— Τ-» | CO | TJ | 4- i-t | υ | Ο | L | α | B) | O) | τ' | 4-* | 4^ | ||||||||||||||||||||||||||||||||
Ul «-ι | O | -J | η | φ | 4·* | Φ | — ο | O | C | O | φ | 4-· | T- | Z | U. | T- | φ | η | C | IO | S) | |||||||||||||||||||||||||||
X U- | Ul | L | (0 | Τ | D | IS | Q | ■•ψ- | > | » | Ol | 3 | T) | O | 4-1 | U | τ- | C | C | |||||||||||||||||||||||||||||
Ul ► | -J | Ul | 2 | £ | OTJ | Ο | ο | φ > | Τ | E | τ— | φ | ο | α | C | L. | »-4 | 01 | Φ | φ | C | T- | τ- | — | ||||||||||||||||||||||||
■Ν | _) | O | Ι | +■ | φ | 4^ | O X) | Ο | L | Τ | φ | σ | 4J | C | τ- | φ | j | \~- | ιη | £ | C | Τ | Ό | E | χ] | E | ||||||||||||||||||||||
K U | O | »-Ι | Vl | O | V) | φ | Ο | £ | ο | η | T- | £ | 0 | *χ | Si | 4-1 | τ- | C | T) | L. | Φ | I. | ||||||||||||||||||||||||||
< Ul | O | μ. | ι | 4-* | 3 | 4·* | Bl | Ο | OC | Φ | 4·* | Ο | T- | C | φ | τ— | 0 | |||||||||||||||||||||||||||||||
ι- α | Σ | (_j | I | I | ι | φ | Φ | B) | O | φ | R | 0) | Τ | UJ | Τ | 4-1 | 3 | 4^ | 3 | 4^ | Τ | 4-> | ||||||||||||||||||||||||||
V) V) | Z | £ | T) | U | U- | Φ | Z | £ | £ | Ο | O. | Ο | O | O | O | C | 0 | Φ | Ο | Φ | ||||||||||||||||||||||||||||
D | ί- | S) | E | Ι | H- | H- | O | ο: | σ | L. | Ό | U- | T) | υ | Ό | |||||||||||||||||||||||||||||||||
U. | ||||||||||||||||||||||||||||||||||||||||||||||||
U. | ||||||||||||||||||||||||||||||||||||||||||||||||
O | ||||||||||||||||||||||||||||||||||||||||||||||||
OC | ||||||||||||||||||||||||||||||||||||||||||||||||
■ | ||||||||||||||||||||||||||||||||||||||||||||||||
C | ||||||||||||||||||||||||||||||||||||||||||||||||
I- | ||||||||||||||||||||||||||||||||||||||||||||||||
V) | ||||||||||||||||||||||||||||||||||||||||||||||||
α ο O
EC CMGR0004
** MICROCODE ASSEMBLER 6.8 08/16/82 PROGRAM: MDFGDD01
15:47:21 **
PAGE
ADDR INST
STATEMENT
STMT
the stage parameters for an ensuing Read | Stage. | this point. | *{((00530 | 53 | |
and gives a return code Indicating that a | *{{(00540 | 54 | |||
* If the channel program Is finished and not Just at the end of a | * stage 1s queued. The return code from ECP Is set based on the | Seek routine 1s called to store the last | •{{{OO550 | 55 | |
* section (the 'True ECP' flag Is set), the Dequeue Stage routine 1s | • return code from Dequeue | * seek address. If the 'Update Last Seek Only' bit 1s on, control Is | *{{(ΟΟ56Ο | 56 | |
* called to see 1f any stage requests ape queued for this DID. If | * returned to the caller at | *({(ΟΟ57Ο | 57 | ||
* so, Dequeue Stage sets up | • Finally, the Update Last | *({{00580 | 58 | ||
* Stage Parameters command | * SPECIAL CONSIDERATIONS | DESCRIPTION/PARAMETERS | ♦{{{00590 | 59 | |
* { { {00600 | 60 | ||||
* none | ♦{{{00610 | 61 | |||
ENTRY PARAMETERS - Receive buffer | ♦{{{00620 | 62 | |||
* INTERNAL ITEMS NAME | DID RCV DIDC | ♦{{{00630 | 63 | ||
FLAG BYTE 1 RCV-FLAG | *{{{00640 | 64 | |||
FLAG BYTE 2 RCV-FLAG | ♦{({00650 | 65 | |||
• ENTRY POINT(S): MDFGDD01 | C (HI) ,RCV-DIDC | ♦{{{00660 | 66 | ||
C (LO) 1RCV-CYLH | ♦{{{00670 ♦ { { (00680 |
R7 | |||
H RCV-CYLH | ♦{({00690 | 68 | |||
NUMBER OF RECORDS RCV-RCKL | ♦{{{00700 | 69 | |||
RCRD LEN/ERR ADD 1 RCV-ERRD | ♦{{{00710 | 70 | |||
RCRD LEN/ERR' ADD 2 RCV-ERRA | ♦{{{00720 | 71 | |||
RCRD LEN/ERR ADD 3 RCV-ERRA | ♦{{{00730 | 72 | |||
♦{{{00740 | 73 | ||||
RETURN REGISTER GROUP (RTN) | ♦{{{00750 | 74 | |||
RETURN FLAG - RETFLAG | ♦( { (00760 | 75 | |||
Bit 0"0 --> Normal End | ♦{{{00770 | 76 | |||
■1 --> Check End | ♦{{{00780 | 77 | |||
♦NORMAL EXIT(S): caller | Bit 1-1 --> Send Data | ♦{{{0O790 | 78 | ||
♦{{{00800 | 79 | ||||
RETURN CODE - RETCODE | ♦{{{00810 | 80 | |||
Normal End | ♦{{{00820 | 81 | |||
Read Stege Perms NE RDSTG | ♦ { ( (00830 | 82 | |||
Check End | ♦{{{00840 | 83 | |||
♦({{00850 | 84 | ||||
♦{{{00860 | 85 | ||||
Release Frame | ♦{({00870 | 86 | |||
Store Last Seek | ♦ j({00880 | 87 | |||
Deallocation For Data Integrity | ♦{{(00890 | 88 | |||
* ERROR EXIT(S): none | Update Statistics | ♦{({0O90O | 89 | ||
• ROUTINES USED: MDFGDAS3 | Stage Determination - 1 Basic | ♦({(00910 | 90 | ||
♦ MDFGDSB1 | Deallocation Determination - 1 Basic | ♦ U{0O920 | 91 | ||
* MDFGDDSI | Stage Determination - 2 Sequential | ♦<{{0O930 | 92 | ||
• MDFGDDS2 | Deallocation Determination - 2 Seq | ♦{((00940 | 93 | ||
• MDFGDDS3 | ♦({{00950 | 94 | |||
» MDFGDDS4 | ♦{((00960 | 95 | |||
• MDFGDDS3 | ♦{{{00970 | 96 | |||
* MDFG0DS6 | ♦{({00980 | 97 | |||
♦{{(0O990 | 98 | ||||
♦{ { (O1OOO | 99 | ||||
• { { {01010 | 1OO | ||||
♦{{{01020 | 101 | ||||
♦{{{01030 | 102 | ||||
103 |
EC CMGROOO4
PAGE
EC CMGR0004
ADDR INST
*■♦■ MICROCODE ASSEMBLE« 6.8 OB/16/82
PROGRAM: MOFGDDO1
15:47:21 ··
PAGE
♦ DATA STRUCTURES:
INTERNAL REGS:
EXTERNAL REGS:
ENTRY IRG:
* CHANGE ACTIVITY
M0FGDDS5
MDFGDDS8
MDFGDS07
MDFGDSE2
USAVE
UCALLMOD
UBTRACE
USETIRG
URESTORE
URETURN
MDDGDT09
MDDGDT04
MDDGAT01
IRG
P(EX STK) S(PLD
STATEMENT
R/W
EXIT IRG: P(EX STK) S(RTN)
* 01/09/81 RLC START
* 02/10/81 D1 SCHEDULED (prolog)
* 02/10/B1 DI COMPLETED
* 03/25/81 11 SCHEDULED (pseudo code)
* 03/25/81 11 COMPLETED
* 04/06/81 Changes as a result of new prolog format and review
* 04/16/81 Changes as a result of new Interface definition
* 07/15/81 REAL CODE STARTED.
* 07/23/8 1 12 SCHEDULED (real code)
* 07/24/81 12 COMPLETED (MODULE SIZE « 77? words)
* 02/10/82 RLC Changes to Incorporate new algorithms
* 02/16/82 Second D1 review scheduled
* 02/24/82 Second D1 review complete
* 03/02/82 RLC Pseudo and real code updates for new algorithms
* 03/17/82 RLC Second 11 review complete
* 04/07/82 RLC Pseudo and real code updates for new algorithms
* 05/10/82 RLC Change so only call Release Frame after cache
* channel program. Call with last seek address.
* 06/24/82 RLC Add trace point
* 07/26/82 RLC Postpone Store Last Seek until the end of End
* Channel Program processing
STMT H
♦({{01040 | 104 |
♦{{{01050 | 105 |
•{{{01060 | 106 |
♦(((O1O7O | 107 |
♦{{{01080 | 108 |
♦{{{01090 | 109 |
♦{{(01100 | 110 |
•{{{01110 | 111 |
•{{{01120 | 112 |
•({{01130 | 113 |
•{{{01140 | 114 |
•{{{01150 | 115 |
♦{{(01160 | 116 |
♦{{(01170 | 117 |
♦{{{01180 | 118 |
♦{{{01190 | 119 |
♦{{{01200 | 120 |
♦{{{01210 | 121 |
♦{{{01220 | 122 |
♦({{01230 | 123 |
♦{{{01240 | 124 |
♦{{{01250 | 125 |
♦{{{01260 | 126 |
♦{{{01270 | 127 |
♦{{{01280 | 128 |
♦{{{01290 | 129 |
♦{{{01300 | 130 |
♦{{{01310 | 131 |
♦{{{01320 | 132 |
♦{{(01330 | 133 |
♦{{{01340 | 134 |
♦{{{01350 | 135 |
♦{{{01360 | 136 |
♦{{{01370 | 137 |
•{({01380 | 138 |
* {.{{01390 | 139 |
•({{01400 | 140 |
•{{{01410 | 141 |
♦{{{01420 | 142 |
*{{(01430 | 143 |
*({{01440 | 144 |
•{{{01450 | 145 |
*{ {{01460 | 146 |
•{{{01470 | 147 |
■■'■-:t
CO
CO -CD
O CO
co
PAGE
EC CMGR0004
*♦ MICROCODE ASSEMBLER 6.8 08/16/82 PROGRAM: MDFGDDOI
15:47:21 **
PAGE
ADOR INST
STATEMENT
STMT #
- | 2DF3 | * LOCALS | DEF | PO | MOFGDDO1 | ■ - | [RG | MIC.BTRCBIT,TLAB0002 | < (ADDRESS).INC | * | ♦ACCESS COUNT | {{{01490 | ♦SAVE THE IRG | * | •SET UP ADDRESS OF RCVBUFFER | {{{01560 | 149 | |
27F1 | DEF | P0P1 | ORG MDFGDDO1 | IRG + X10 | TRACEMOD | »TRACKS PER CYLINDER | {{{01500 | •SAVE IRG IN P3 | {{{01570 | 150 | ||||||||
ACCCOUNT | DEF | P1 | USAVE | UBTRACE TRC 2040 | X2O4O | ({{01510 {{{01520 |
•INCREMENT PRIMARY GROUP | •GET THE FLAG BYTES | ({{01580 | |||||||||
1D13 | XXTRKCYL | DEF | P1 | P3 » : | OH | {{{01530 | ({{01590 | 131 152 |
||||||||||
6FE4 | TRKCYL | DEF | P2 | IRG » | DC | {{{01540 | •IF TRACE OFF THEN SKIP | {{{01600 | 153 | |||||||||
2040 | THEAD | DEF | P2P3 | DC | ♦TEMPORARY COPY OF HEAD ADDRESS{{{01550 | •BAL INSTR TO TRACE ROUTINE | {{{01610 | 154 | ||||||||||
TRHEAD | DEF | P2 | * Get Flag Bytes | •TEMPORARY COPY OF RETURNED HD | •TRACE ID | {{{01620 | 155 | |||||||||||
ADDRESS | DEF | P3 | •LABEL EQUATED TO NEXT LINE | {{{01630 | 156 | |||||||||||||
ADDRESSH | DEF | P4P5 | {{{01640 | 157 | ||||||||||||||
ADDRESSL | DEF | P5 | {{{01650 | 158 | ||||||||||||||
TALGINF | DEF | P6P7 | »ALGORITHM INFO BYTES | {({01660 | 159 | |||||||||||||
AA20 | ALGORITH | DEF | P6 | »ALGORITHM SPECIFIED | {{{01670 | 160 | ||||||||||||
8A3O | FLAGS | DEF | O | •FLAG BYTES | {{(01680 | 161 | ||||||||||||
4E26 | FLAGO | DEF | 2 | ADDRESSH » $RCVBUF | •FLAG BYTE O | {{{01690 | 162 | |||||||||||
DASDRERR | DEF | 3 | ADORESSL · :RCV FLAG | •DASD READ ERROR | {{{01700 | 163 | ||||||||||||
CACHRERR | DEF | 4 | FLAGS | •CACHE READ ERROR | {{{01710 | 164 | ||||||||||||
IMBCYLSK | DEF | 5 | •IMBEDDED CYLINDER SEEK | {{{01720 | 165 | |||||||||||||
TRSWITCH | DEF | 6 | •TRACK SWITCH | {{{01730 | 166 | |||||||||||||
WRITEOCC | DEF | 7 | •WRITE OCCURRED | ({{01740 | 167 | |||||||||||||
IMBHDSK | DEF | P7 | ♦IMBEDDED HEAD SEEK | {{{01750 | 168 | |||||||||||||
CHANLRES | DEF | O | ♦CHANNEL INTERFACE RESET | ({{01760 | 169 | |||||||||||||
FLAGI | DEF | 1 | ♦FLAG BYTE 1 | (((0177O | 170 | |||||||||||||
FIRSTREC | DEF | 2 | •FIRST RECORD READ | {({01780 | 171 | |||||||||||||
LASTREC | DEF | 3 | ♦LAST RECORD READ | {({01790 | 172 | |||||||||||||
EOFREC | DEF | 4 | •EOF RECORD READ | {({01800 ({{01810 {{(01820 |
173 | |||||||||||||
UPSKONLY | DEF | 5 | •UPDATE SEEK ONLY | {{{01830 | 174 | |||||||||||||
DASDOPER | •DASD OPERATION | {{{01840 | 175 | |||||||||||||||
TRUEECP | •TRUE END OF CHANNEL PROGRA | {{{00520 | 176 | |||||||||||||||
{{(00530 | 177 | |||||||||||||||||
";ND CHANNEL PROGRAM PROCESSING | {{{01850 | 178 | ||||||||||||||||
START | 179 | |||||||||||||||||
* ENTRY t | * | {{{OO5OO |
180
iQi |
|||||||||||||||
{{{OO51O | ι Ο ι 182 |
|||||||||||||||||
183 | ||||||||||||||||||
MOFGDDO1 | {({01860 | 184 | ||||||||||||||||
+ MOFGDDO1 | {{{01870 {({01880 |
|||||||||||||||||
OFOO | + | {{{01890 {{{O190O |
||||||||||||||||
OF01 | {{{01910 | 185 | ||||||||||||||||
+ | {{(01920 | |||||||||||||||||
0F02 | + | |||||||||||||||||
0F03 | + | |||||||||||||||||
0F04 | + TLAB0002 | |||||||||||||||||
186 | ||||||||||||||||||
4 B7 | ||||||||||||||||||
I O ' 188 |
||||||||||||||||||
1 OQ | ||||||||||||||||||
1 O5 190 |
||||||||||||||||||
OF 05 | 191 | |||||||||||||||||
0F06 | 192 | |||||||||||||||||
0F07 | ||||||||||||||||||
PAGE
EC CMGROOO4
♦· MICROCODE ASSEMBLER 6.8 08/16/82 15:47:21 ♦*
PROGRAM: MDFGDDOI
PAGE
ADDR INST
STATEMENT
STMT 0
31FO | USETIRG IRG SECD PL2 SECD | t | ♦SWITCH TO PL2 | * | * | {{(01930 | {{{02290 | 193 | |
OF 08 | 33F2 | + IRG » IRG . XFO | i | ♦Clear appropriate nibble | # | * | {{(00660 | {{(00660 | |
0F09 | 4E28 | + IRG « IRG / X02 | i | •Set appropriate nibble | set ♦ | processing ♦ | {({OO67Ö | {'{ (00670 | |
OFOA | 4A2A | PL2DIDCY < (ADDRESS),INC | t | ♦PUT DID.C INTO PASS REGS | ■ * | {{{01940 | {{{02300 | 194 | |
OFOB | PL2CHD < (ADDRESS) | i | ♦ PUT CH INTO PASS REGS | * | {{{01950 | {({02310 | 195 | ||
i | * | ♦BRANCH IF NOT UPDATE SEEK ONLY | {{{01960 | {{{02320 | 196 | ||||
* | * | {{{01970 | {{{00660 | 197 | |||||
i | • . ■ ♦ | ♦TEST IF ON CACHE | {{{01980 | {{(00670 | 198 | ||||
i | ♦ | ♦BRANCH IF OP STARTED ON DASD | {({01990 | {{(02330 | 199 | ||||
* | ♦MAKE COPY OF HEAD | {{{02000 | 200 | ||||||
i | * | ♦GET LAST SEEK | {{{02010 | 201 | |||||
Count, Algorithm ♦ | ♦BAL INSTR TO CALL ROUTINE | {{{02020 | 202 | ||||||
* | ♦ADDRESS OF CALLED MODULE | {{(02030 | 203 | ||||||
* Store Access Count and Algorithm Information bytes In ♦ | ♦GET COPY OF LAST SEEK HEAD | {{{02040 | 204 | ||||||
1 Current Channel Program Information table ♦ | ♦RESTORE IRG TO PL2 | ({{Ö2050 | 205 | ||||||
1 Set Head-Address to Local-Head | ♦MOVE TO PASS REGS | {{{02060 | 206 | ||||||
END-THEN for cache operation | ♦RELEASE FRAME | {{{02070 | 207 | ||||||
4 | Store value of last seek for future | ♦BAL INSTR TO CALL ROUTINE | {{{02080 | 208 | |||||
♦ADDRESS OF CALLED MODULE | { { (02090 | 209 | |||||||
♦PERSERVE ACCESS COUNT | ({(021OO | 210 | |||||||
> IF update seek only bit not set | OL FLAG1.UPSKONLY.THENO | {{{02110 | 211 | ||||||
B ELSE1 | {{{02120 | 212 | |||||||
* THEN-DO for update seek only bit not | THENO JL FLAG1.DASDOPER,THEN1 | {{(02130 | 213 | ||||||
► IF 'DASD Operation' Is off | B C0NT7 | {{{02140 | 214 | ||||||
* THEN-DO for cache operation | THEN1 THEAD » PL2HEAD | {{{02 150 | 215 | ||||||
5672 | * CALL Get Last Seek | UCALLMOD MDFGDSB2 | {((02160 | 216 | |||||
0F67 | » PASS: DID | • + DC CALLMOD | ({(02170 | 217 | |||||
5872 | ' RECEIVE: DID.C.C.H | + DA MDFGDSB2 | {{{02 180 | 218 | |||||
OFOC | 0F21 | » Copy Head-Address to Local-Head | TRHEAD = RTN HEAD | {{{02190 | 219 | ||||
OFOD | 7AB1 | ' CALL Release Frame | IRG * SAVEDIRG | {{(02200 | 220 | ||||
OFOE | • PASS: DID.C.C.H | PL2HEAD « TRHEAD | {{(02210 | 221 | |||||
OFOF | 6FE0 | " RECEIVE: Return flags. Access | UCALLMOD MDFGDSA3 | {{{02220 | 222 | ||||
0F10 | 1720 | Information Bytes | + DC CALLMOD | {{{00500 | |||||
7AO2 | + DA MDFGDSA3 | {{(00510 | |||||||
OF 1 1 | 2FF3 | ACCCOUNT - ACCESSCT | {{{02230 - | 223 | |||||
OF 12 | 7A2B | TALGINF » RTNALGIN | {{(02240 | 224 | |||||
OF 13 | USETIRG IRG SECD CPI SECD | {{{02250 | 225 | ||||||
OF 14 | 6FE0 | + IRG · IRG~. XFO | {{{02260 | 226 | |||||
OF 15 | 1200 | + IRG « IRG / X06 | {{(00500 | ||||||
7AFO | CPI NACC « ACCCOUNT | {{{005 10 | |||||||
OF 16 | 4ED4 | CPI ALG - TALGINF | {({02270 | 227 | |||||
OF 17 | USETIRG IRG SECD PL2 SECD | ♦PERSERVE ALGORITHM INFORMATION{{{02280 | 228 | ||||||
OF 18 | 31FO | + IRG - IRG~. XFO | ♦SWITCH TO CHANNEL PROGRAM INFO | 229 | |||||
OF 19 | 33F6 | + IRG » IRG / X02 | ♦Clear appropriate nibble | ||||||
7A08 | ♦Set appropriate nibble | ||||||||
OF 1Λ | 4E5A | PL2HEAD · THEAD | ♦STORE ACCESS COUNT | 230 | |||||
0F1B | ♦STORE ALGORITHM INFORMATION | 231 | |||||||
OF 1C | 31FO | ♦SWITCH BACK TO PL2 | 232 | ||||||
0F1D | 33F2 | ♦Clear appropriate nibble | |||||||
7A1B | ♦Set appropriate nibble | ||||||||
OF «Ϊ | ♦RESTORE ORIGINAL HEAD | 233 | |||||||
OF 1F | |||||||||
OF 20 | |||||||||
PROGRAM: MDFGDDOI
PAGE
EC CMGR0004
*· MICROCODE ASSEMBLER 6.8 08/16/82 15:47:21 ** PROGRAM: MDFGDDO1
PAGE
ADDR INST
0F21 8A2F
0F22 BA3F
OF23 482A
STATEMENT
STMT
0F2D
0F2E
0F2F
OF 30
C0NT7
OF24 6B00
OF25 31FO
0F26 33F2
OF27 6FEO
OF28 0C80
31FO 33F5 7AF5 805F
31F0 33F2 8C51 4B37
6FE0 OCOO 2FF3
6FEO 0B30 0F53
ADDRESSH ADDRESSL PL2CHD >
» SSKSTORE « : SKSTORE
(ADDRESS)
•STORE LAST SEEK ADDRESS
PASS: none
IRG » IRG~. XFO
IRG · IRG / X02
DC CALLMOD
DA MDFGDDS1
♦UPDATE STATS
♦BRANCH TO ROUTINE (IN 4K)
♦SWITCH BACK TO PL2
♦Clear appropriate nibble ♦Set appropriate nibble
♦DEALLOCATION FOR DATA INTEG ♦BAL INSTR TO CALL ROUTINE
♦ADDRESS OF CALLED MODULE
CALL Deallocation Determination 1 - Basic
PASS: none RECEIVE: none
CALL Stage Determination 1 - Basic PASS: none RECEIVE: none END-WHEN 'Basic' algorithm specified
USETIRG IRG SECD SST SECD IRG » IRG~. XFO ~ IRG - IRG / X05
ALGORITH « SST DFLG ALGORITH · ALGÖRITH . XOF USETIRG IRG SECD PL2 SECD
IRG ■ IRG . XFO IRG « IRG / X02 D · ALGORITH CE XO1
BNEO SELI UCALLMOD MDFGDDS4 DC CALLMOD DA MDFGDQS4 ·
IRG « SAVEOIRG UCALLMOD MDFGDDS3 DC CALLMOD DA MDFGDDS3
B ENDSELI
♦SWITCH TO SST
♦Clear appropriate nibble ♦Set appropriate nibble
♦GET ALGORITHM
♦MASK OUT OTHER STUFF
♦SWITCH TO PASS LINK
♦Clear appropriate nibble ♦Set appropriate nibble
♦BASIC ALGORITHM?
♦NO BRANCH TO NEXT ONE
♦BASIC DEALLOC DETERMINATION ♦BAL INSTR TO CALL ROUTINE
♦ADDRESS OF CALLED MODULE
♦RESTORE TO PL2
♦BASIC STAGE DETERMINATION ♦BAL INSTR TO CALL ROUTINE
♦ADDRESS OF CALLEO MODULE
•BRANCH TO END OF SELECT
{{'{02340 | 234 |
{{(02350 | 235 |
{({02360 | 236 |
{{{02370 | 237 |
♦{{(02380 | 238 |
•{{ (02390 | 239 |
•({{02400 | 240 |
•{{{02410 | 24 1 |
• {{ (02420 | 242 |
•(((02430 | 243 |
{{{02440 | 244 |
{({004BO | |
{{{02450 | 245 |
{((00660 | |
(((00G70 | |
{{{02460 | 246 |
(((00500 | |
{({00510 | |
({{02470 | 247 |
♦({{02480 | 248 |
♦(({02490 | 249 |
♦{{(02500 | 250 |
♦({{02510 | 251 |
•{{(02520 | 252 |
•{{{02530 | 253 |
•{{{02540 | 254 |
* { ({02550 | 255 |
·{ {{02560 | 256 |
•{{{02570 | 257 |
•{{{02580 | 258 |
♦{{{02590 | 259 |
{((02600 | 260 |
{({00660 | |
{{(00670 | |
{{{02610 | 261 |
{{{02620 | 262 |
{{{02630 | 263 |
{{{00660 | |
{{{00670 | |
{{{02640 | 264 |
{((02650 | 265 |
({{02660 | 266 |
{{{00500 | |
{{{00510 | |
{{{02670 | 267 |
({{02680 | 268 |
{{(00500 | |
({{00510 | |
{{(02690 | 269 |
{{{02700 | 270 |
•{{{02710 | 271 |
J-
O3
CO <D
CD CO
ro co
EC CMGR0004
PAGE
EC CMGROOO4
>· MICROCODE ASSEMBtER 6.8 08/16/82
PROGRAM: MDFGDDO1 15:47:21 *·
END CHANNEL PROGRAM PROCESSING
PAGE
ADDR INST
STATEMENT STMT 0
• DO-WHEN 'Sequential' | algorithm | specified | ' algorithm | Sequential |
* CALL Deallocation | Determination 2 - Sequential | |||
• PASS: none | ||||
* RECEIVE; none | specified | |||
• CALL Stage Determination 2 - | ||||
* PASS: none | ||||
• RECEIVE: none | ||||
* END-WHEN 'Sequential | ||||
8C52 4B3F
6FEO 100 2FF3
6FE0 0000 0F53
SEL1 D » ALGORITH CE X02 BNEO SEL2 UCALLMOD MDFGDDS6 DC CALLMOD
DA M0FGDDS6 IRG ■ SAVEDIRG UCALLMOD MDFGDDS5 DC CALLMOD
DA MDFG0DS5 B ENDSEL1
8C53 4B47
6FE0 1Λ0 2FF3
6FE0 130 OF53 •SEQUENTIAL ALGORITHM?
*N0 BRANCH TO NEXT ONE
*SEO DEALLOC DETERMINATION
*BAL INSTR TO CALL ROUTINE
♦ADDRESS OF CALLED MODULE
*BAL INSTR TO CALL ROUTINE
♦ADDRESS OF CALLED MODULE
♦RESTORE TO PL2 ♦SEO STAGE DETERMINATION
♦BAL INSTR TO CALL ROUTINE
♦ADDRESS OF CALLED MODULE
♦ADDRESS OF CALLED MODULE
♦BRANCH TO END OF SELECT
DO-WHEN 'Random' algorithm specified ......
CALL Deallocation Determination 3 - Random
PASS: none RECEIVE: none
CALL Stage Determination 3 - Random PASS: none
RECEIVE: none END-WHEN 'Random' algorithm specified
SEL2 D · ALGORITH CE X03 BNEO SEL3 UCALLMOD MDFGDDS8
DC CALLMOD DA MDFGDDS8 IRG - SAVEDIRG UCALLMOD MDFGDÖS7
DC CALLMOD DA MDFGDDS7 B ENDSEL1 ♦RANDOM ALG0RITHM7
♦NO BRANCH TO NEXT ONE
♦RND DEALLOC DETERMINATION
♦NO BRANCH TO NEXT ONE
♦RND DEALLOC DETERMINATION
♦BAL INSTR TO CALL ROUTINE
♦ADDRESS OF CALLED MODULE
♦RESTORE TO PL2
♦RND STAGE DETERMINATION
♦ADDRESS OF CALLED MODULE
♦RESTORE TO PL2
♦RND STAGE DETERMINATION
♦BAL INSTR TO CALL ROUTINE
♦ADDRESS OF CALLED MODULE
♦BRANCH TO END OF SELECT
♦ADDRESS OF CALLED MODULE
♦BRANCH TO END OF SELECT
OTHERWISE HALT - bad algorithm specified
END-SELECT on algorithm specified
IF 'True End Channel Program' flag on
THEN CALL Dequeue Stage PASS: none RECEIVE: Return Flag
♦{{{02720 | 272 |
♦({{02730 | 273 |
♦{{{02740 | 274 |
♦{{{02750 | 275 |
♦{{{02760 | 276 |
♦{{{02770 | 277 |
♦{{{02780 | 278 |
♦{{{02790 | 279 |
♦{{{02800 | 280 |
{{{02810 | 281 |
{{{02820 | 282 |
{{{02830 | 283 |
{{{00500 | |
{{{00510 | |
{{{02840 | 284 |
{{{02850 | 285 |
{{{00500 | |
{{{00510 | |
{{{02860 | 286 |
{{{02870 | 287 |
♦{{{02880 | 288 |
♦{{{02890 | 289 |
♦{{{02900 | 290 |
♦{{{02910 | 291 |
♦{{{02920 | 292 |
♦{{{02930 | 293 |
♦{{{02940 | 294 |
♦{{{02950 | 295 |
♦{{(02960 | 296 |
♦{({02970 | 297 |
{{{02980 | 298 |
{{{02990 | 299 |
{{{03000 | 300 |
{{{0O50O | |
{{{00510 | |
{{{03010 | 301 |
({(03020 | 302 |
{'{ (00500 | |
{{(00510 | |
{{{03030 | 303 |
{((03040 | 304 |
* (<(03050 | 305 |
♦ {{(03060 | 306 |
♦{((03070 | 307 |
♦{{(03080 | 308 |
♦{{(03090 | 309 |
♦{{(03100 | 310 |
♦{{ (03 110 | 31 1 |
♦{{(03120 | 312 |
♦(({03130 | 313 |
♦{({03140 | 314 |
co co co
ο co ro co
EC CMGRO004
PROGRAM: MDFGDDOI PAGE
EC CMGR0004
** MICROCODE ASSEMBLER 6.8 08/16/82 15:47:21 **
FROGRAM: MDFGDDO1
PAGE
ADOR INST
STATEMENT
(* use these return values as the Return Code for
this module *)
ELSE-DO for not true end of channel program
Set normal end return flag
Set zero return code
END-ELSE for not true end of channel program
Get last seek address stored previously
CALL Store Last Seek
PASS: DID.C.C.H
RECEIVE: none
END-THEN for update seek only bit not set
STMT H
1D13 | SEL3 | ENDSEL1 | + | ELSE | NTFOUND | UHALT HALT X63 | |
0F47 | 6FE4 | + SEL3 | + | + ELSE | OH MIC.BTRCBIT,TLAB0013 | ||
OF48 | FF63 | + | + | D0NE1 | DC TRACEMOD | ||
0F49 | 8AOO | + | + D0NE1 | DB XFF,X63 | |||
0F4A | BA13 | + TLABOO13 | + | PO « XOO | |||
0F4B | BB20 | + | P1 ■ X63 | ||||
0F4C | 4004 | ■ + | P2 ■ SCCT TABL | ||||
0F4D | 23D2 | + | P0P1 > (P2.T:CCT HERR) | ||||
0F4E | 231 1 | + | XBP « XBP / SWBÄNK1 | ||||
0F4F | 21DD | + | + | MDR « MDR / X10 | |||
OF 50 | 23C4 | + | XBP « XBP . SWBANKO | ||||
0F51 | 0F52 | + | ILR « ILR / ILR SETI | ||||
0F52 | 5A78 | + | B LOOP | ||||
OF53 | 2FF3 | JL FLAG1.TRUEECP,ELSE | |||||
0F54 | IRG » SAVEDIRG | ||||||
6FEO | UCALLMOD MDFGDSE2 | ||||||
0F55 | 1A50 | DC CALLMOD | |||||
OF56 | 5186 | DA MDFGDSE2 | |||||
OF57 | AA90 | JH RETFLAG.NOTFOUND,NTFOUNO | |||||
OF58 | 8A8O | RETCODE ■ NE RDSTG | |||||
0F59 | 0F5F | RETFLAG ■ NORMEND | |||||
0F5A | B D0NE1 | ||||||
31FO | USETIRG IRG SECD RTN SECD | ||||||
0F5B | 33F4 | IRG - IRG . XFO | |||||
0F5C | 8A90 | IRG - IRG / X04 | |||||
0F5D | 8A8O | RETCODE » NE NORM | |||||
0F5E | RETFLAG - NORMEND | ||||||
31FO | USETIRG IRG SECD PL2 SECD | ||||||
0F5F | 33F2 | IRG · IRG . XFO | |||||
OF 60 | 8A2F | IRG · IRG / X02 | |||||
0F61 | BA3F | ADDRESSH = SSKSTORE | |||||
OF62 | 4A2A | ADDRESSL * :SKSTORE | |||||
OF63 | PL2CHD < (ADDRESS) | ||||||
6FEO | UCALLMOD MDFGDSB1 | ||||||
OF64 | 17OO | DC CALLMOD | |||||
0F65 | 0F6B | DA MDFGDSBI | |||||
OrSS | B DONE | ||||||
»ILLEGAL ALGORITHM SPECIFIED ♦BRANCH IF TRACE NOT ON
*BAL TO TRACE MODULE "TRACE X63
♦CLEAR HIGH ORDER BYTE ♦GET HALT X63
♦SET UP ADDRESS TO CCT ♦STORE HALT IO IN CCT ♦SWITCH TO BANK 1
♦INHIBIT DESELECTION RESET ♦SWITCH TO BANK O ♦CAUSE LEVEL 1 INTERRUPT
♦ HANG
♦BRANCH IF NOT TRUE ECP
♦RESTORE TO PL2
♦DEQUEUE STAGE
♦BAL INSTR TO CALL ROUTINE ♦ADDRESS OF CALLED MODULE
♦BRANCH IF NO STAGE PENDING
♦SET READ STAGE PARMS
♦SET ZERO RETURN FLAG
♦SWITCH TO RETURN REGS
♦Clear appropriate nibble ♦Set appropriate nibble
♦SET NORMAL RETURN CODE
♦SET ZERO RETURN FLAG
♦SWITCH TO PL2
♦Clear appropriate nibble ♦Set appropriate nibble
♦RETRIEVE LAST SEEK ADDRESS
♦CALL STORE LAST SEEK
♦BAL INSTR TO CALL ROUTINE ♦ADDRESS OF CALLED MODULE
M( | (03150 | 315 |
•u | (03160 | 316 |
*{[ | (03170 | 317 |
*{( | (03180 | 318 |
*{( | (03 190 | 319 |
♦ u | (03200 | 320 |
M( | (032 10 | 321 |
Ml | (03220 | 322 |
Mt | (03230 | 323 |
·{( | (03240 | 324 |
·{( | (03250 | 325 |
·{( | (03260 | 326 |
{< | (03270 | 327 |
({ | (00550 | |
{( | (00550 | |
U | (00560 | |
(( | (00570 | |
{{ | (00580 |
{{(OO59O | 328 |
{((03280 | 329 |
{{{03290 | 330 |
{((03300 | |
{{(OO5OO | |
{{{00510 | 331 |
{{{03310 | 332 |
{{(03320 | 333 |
{{(03330 | 334 |
{{(03340 | 335 |
{{{03350 | |
{{(00660 | |
{{(00670 | 336 |
{{{03360 | 337 |
{{{03370 | 338 |
{{{03380 | |
{{(OO66O | |
{{(00670 | 339 |
{ { (03390 | 340 |
{({03400 | 341 |
{((03410 | 342 |
{((03420 | |
{{(00500 | |
(({00510 | 343 |
({{03430 | 344 |
{{{03440 | 345 |
•{{{03450 | |
co co co ο co
ro co
PAGE
.8
EC CMGR0004
·♦ MICROCODE ASSEMBLER 6.θ 08/16/82 15:47:21 ♦♦
PROGRAM: MOFGDDO1
PAGE
ADOR INST
STATEMENT
STMT Κ
ELSE-DO update seek only bit set Set normal return Flag
CALL Store Last Seek PASS: DID.C.C.H
RECEIVE: none Set zero return code
END-ELSE update seek only bit set
6FEO | ELSE1 | UCALLMOD MOFGDSB1 | |
OF67 | 1700 | + ELSE1 | DC CALLMOD |
0F68 | BA90 | + | DA MOFGDSB1 |
OF69 | SA80 | RETCOOE · NE NORM | |
0F6A | RETFLAG « NORMEND | ||
♦STORE LAST SEEK
♦BAL INSTR TO CALL ROUTINE
♦ADDRESS OF CALLED MODULE
♦ZERO RETURN CODE
♦NORMAL END
RETURN
31FO | DONE | SKSTORE | URESTORE | P4P5, | XFO | |
0F6B | 37F4 | + DONE | IRG · | DC XOO | X04 | |
0F6C | 27FF | ■ IRG . | END | XFO | ||
0F6D | + | IRG » IRG + | ||||
4C54 | IRG « IRG + | P4P5 | ||||
0F6E | OOOO, | + | URETURN | |||
0F6F | BALR | |||||
0F70 | ||||||
♦RESTORE THE IRG
♦ZERO SECONDRY REGISTER GRP
♦SET SECONDARY TO
♦AND DECREMENT PRIMARY ♦RETURN TO CALLER
♦RETURN TO CALLER
♦TEMPORARY LOCATION FOR SK ADDR
♦{{{03460 | 346 |
♦{{{03470 | 347 |
♦{{{03480 | 348 |
♦{{{03490 | 349 |
♦{{{03500 | 350 |
♦{{{03510 | 351 |
♦{{{03520 | 352 |
♦{{{03530 | 353 |
{{{03540 | 354 |
{{{00500 | |
{{{00510 | |
{ {{03550 | 355 |
{({03560 | 356 |
{{{03570 | 357 |
♦{{{03580 | 358 |
♦ {{{03590 | 359 |
♦{{{03600 | 360 |
{{{03610 | 361 |
{{{00510 | |
{{{00520 | |
{{{0O530 | |
{{{03620 | 362 |
{{{00480 | |
{{{03630 | 363 |
H{{ {03640 | 364 |
{{{03650 | 365 |
CD CD CO
EC CMGR0004
PROGRAM: MDFGDD01 PAGE
EC CMGR0004
** MICROCODE ASSEMBLER 6.8 08/16/82 15:47:21 ·* PROGRAM: MDFGDDOI
END CHANNEL PROGRAM PROCESSING ♦♦ LABEL TABLE WITH REFERENCES **
PAGE
10
ADDR | EQUATE | |
LABEL | VALUE | |
ACCCOUNT | PO | |
ACCESSCT | S7 | |
ADORESS | P2P3 | |
ADDRESSH | P2 | |
ADDRESSL | P3 | |
ALGORITH | PS | |
BTRCBIT | 6 | |
CALLMOD | X6FE0 | |
CCT HERR | X7OO4 | |
CCT TABL | 0F21 | X 7 000 |
C0NT7 | ||
CPI ALG | S2S3 | |
CPI NACC | SO | |
CPI SECD | X06 | |
DASDOPER | 0F6B | 4 |
DONE | 0F5F | |
D0NE1 | 0F5B | |
ELSE | 0F67 | |
ELSE1 | 0F53 | |
ENDSEL1 | ||
FLAGS | P6P7 | |
FLAG1 | P7 | |
HALT X63 | X63 | |
ILR | E28 | |
ILR SET1 | X40 | |
IRG~ | E31 | |
IRG SECD | XFO | |
MDFGDOS1 | XOC 80 | |
MDFGDDS2 | XOBOO | |
MDFGDDS3 | XOB 30 | |
MDFGDDS4 | XOCOO | |
MDFGDDS5 | XODOO | |
MDFGDDS6 | X1 100 | |
M0FGDDS7 | X1130 | |
MDFGODSe | X1 1AO | |
MDFGODO1 | XOFOO | |
MDFGDSA3 | X12OO | |
MDFGOSB1 | X 1700 | |
MDFGDSB2 | X172O | |
MDFGDSE2 | X1A50 | |
MDR | E17 | |
MIC | E 17 | |
NE NORM | XOO | |
NE-RDSTG | X40 | |
NORMENO | XOO | |
NOTFOUNO | O | |
OF 18 0F18 0F07 0F05 0F06 0F2B 0F02 OF 11 0F4D 0F4C OFOF 0F1D
0F1C 0F1A OFOE 0F66 0F5A OF53 OFOD OF36
0F07 OFOC OF47 0F51 0F51 OFOO 0F25 0F5B
0F08 0F28 0F24 OF 35 OF32 OF 30 0F3A OF45
OF42 OFOO OF 17 0F65 OF 12 OF 56 0F4F 0F02 0F5D 0F58
0F59 OF57
0F1C
OFOA OFOB 0F23 0F63
0F21 0F61
OF22 OF62
0F2C 0F2C 0F2F 0F37 0F3F
0F47 0F16 OF27 0F31 0F34 0F39 0F3C 0F41 0F44 0F55 0F64 0F67
0F3E 0F46 OFOE OF53
0F51
OF01 OF 0F5B 0F1A
OFOI 0F08 0F08 0F09 0F09 OF 14 0F1A 0F1A 0F1B 0F1B 0F1E 0F1E
0F26 0F26 0F29 0F29 0F2A 0F2A 0F2D 0F2D 0F2E 0F2E OF33 0F3B
0F5C 0F5C 0F5F 0F5F 0F60 0F60 0F6B 0F6B 0F6C 0F6C 0F6D 0F6D
0F1E 0F25 OF29 0F2D 0F5B 0F5F
0F1F 0F1F
OF43 OF54
OF43 OF54
co
0000 OF68
0F4F 0F47 0F69
0F5E 0F6A
•PROGRAM: MDFGODOI PAGE
CO
co co
co co
10
EC CMGR0004
•♦MICROCODE ASSEMBLER 6.8 Οβ/16/82 15:47:21
PROGRAM: MDFGDDOI
END CHANNEL PROGRAM PROCESSING ** LABEL TABLE WITH REFERENCES **
ADDR | EOUATE | |
LABEL | 0F50 | VALUE |
NTFOUND | ||
PL2 SECD | X02 | |
PL2CHD | S2S3 | |
PL20IDCY | S0S1 | |
PL2HEAD | S3 | |
RCV FLAG | X4OOO | |
RCVBUF | X4OO0 | |
RETCODE | S1 | |
RETFLAG | SO | |
RTN HEAD | S5 | |
RTN SECD | X04 | |
RTNALGIN | S4S5 | |
SAVEOIRG | 0F37 | P3 |
5EL1 | 0F3F | |
SEL2 | OF47 | |
SEL3 | 0F6F | |
SKSTORE | ||
SST DFLG | S7 | |
SST_SECD | X05 | |
SWBANKO | XDF | |
SWBANK1 | X20 | |
TALGINF | P4P5 | |
THEAD | OFOE | P1 |
THENO | OF 10 | |
THEN1 | OF 05 | |
TLAB0002 | 0F4A | |
TLAB0013 | ||
TRACEMOD | X6FE4 | |
TRC 2040 | X2O4O | |
trhIad | P2 | |
TRUEECP . | 5 | |
UPSKONLY XBP |
3
E 29 |
|
OF 57
0F08
OFOB
OFOA
OF1O
0F06
0F05
0F58
OF 57
OF 13
0F5B
OF 19
OF 14
OF 30
0F38
0F40
0F21
0F2B
OF 29
OF 50
OF 4 E
OF 19
OF 10
OFOC
OFOE
0F02
OF47
0F03
0F02
OF 13
0F53
OFOC
0F4E
OFIE OF25 0F2D 0F5F 0F23 0F63
OF 15 0F20
0F69 0F5E 0F6A
OF33 0F3B OF43 0F54
0F22 0F61 0F62
0F4E 0F50 0F50
co CO CD CD CO ro co
1
DMRB14
CHINOOK PROLOG ANO PSEUDO-CODE CONVENTIONS
FROM: RON BLICKENSTAFF
BRIAN TREDE
STC-159 Y
APPENDIX A-I
This design memo attempts to document the conventions used
by the Chinook microcode group In the development .of the
microcode for the Cache buffer subsystem. The description of these conventions 1s divided Into two parts; the prolog
and the pseudo code.
Figure 1 shows the prolog skeleton used when creating a new microcode module. The engineer fills In each section as he
or she designs the module. After the module Is designed. It
1s reviewed via the design review process. This Is the 'D1'
step. The pseudo code Is then written and Is also reviewed
via the design review process. This 1s the '11' step.
After the pseudo code has been reviewed and approved, then the actual microcode Is written. The pseudo code Is blocked
off as comment lines and the microcode for each block of
pseudo code Is placed directly underneath the pseudo code block. The microcode Is then reviewed and/or simulated.
This Is the '12' step. By following this method of design
and Implementation, the resultant module Is self documenting. All the steps of the design are documented In
the finished listing for that module.
CO CO O Ca>
TITLE *>B'
*,***.*,**.**«****** START OF SPECIFICATIONS **♦*
MODULE NAME: >A
MODULE TITLE: >B
MODULE OWNER: >
FUNCTIONAL DESCRIPTION
MODULE TITLE: >B
MODULE OWNER: >
FUNCTIONAL DESCRIPTION
♦♦«♦***·
* >(WHAT the module does - include ell functions provided. Be sure
* to Include a high level description of the parameters passed
* Into and out of the module.)
* OPERATIONAL DESCRIPTION
♦ >(HOW the module does it - this Is an overview)
• SPECIAL CONSIDERATIONS
>(such as timings, configuration, device types. Integrity,
initialization requirements, execution level)
INTERNAL ITEMS
NAME
* ENTRY POINT(S): >A
♦ NORMAL EXIT(S): >
♦ ERROR EXIT(S): >
♦ ROUTINES USED: >
* MACROS USED: >
* DATA STRUCTURES: >
♦ INTERNAL REGS: >
• EXTERNAL REGS: >
* ■
• ENTRY IRG: >
* CHANGE ACTIVITY
EXIT IRG:
MM/DD/YY START
MM/DD/YY DI SCHEDULED (prolog)
MM/DD/YY 01 COMPLETED
MM/DD/YY 11 SCHEDULED (pseudo code)
MM/DD/YY 11 COMPLETED
MM/DD/YY 12 SCHEDULED (real code)
MM/DD/YY 12 COMPLETED (MODULE SIZE · 777 words)
>(m/d/y) >(by) >(change #) >(change description)
* END OF SPECIFICATIONS
Chinook Prolog Skeleton FIGURE
♦♦♦♦****·♦*♦♦**♦·
co
co
CD Q CO
K)
co
PAGE
! PROLOG CONVENTIONS
! The following discussion describes the usage of each of the
j sections In the prolog skeleton.
j . 1) &M0D3 TITLE '>B'
! This line performs two functions: The &M0D3 Is
! Ignored by the assembler but Is used by the Chinook
j script control file when the module Is Imbedded
page of the listing output for this module. The
capital 'B's (and 'A's) are for convenience when J filling In the skeleton.
j 2) MODULE NAME Is the 1 to 8 character name assigned
to this module and is usually the same as the label { used by other modules to call this module.
j 3) MODULE TITLE is the actual title of the module that
j describes what the module Is for.
j 4) MODULE OWNER 1s the name or initials of the engineer responsible for the design and
implementation of this module. The module owner
Information Is deleted when the microcode Is·
finally released. ·· „-
5) FUNCTIONAL DESCRIPTION Is an english description of ;
of all the major functions provided to the caller.
accomplIshed (see the next section). Also included !
in this section In a final paragraph is a high
level description of the parameters that are
directly passed to and returned from this module.
and output with the more specific concepts of
parameter passage here. An example of this Is as ;
follows: A module Is created that outputs a line
of text to a video display tube. An Input . ;
parameter might be the text Itself or a pointer to
a message stored In a table. The output of the ^*3
! module Is the line of text displayed on the video CO
j returned to the caller. In this case, the _-
j paragraph would state that there are no parameters ^~^
j passed back to the caller. The preceeding ^*5
j paragraphs would state that the function of this hO
; module Is tb display a specified line of text to a ^4J
j video display tube.
.: . -' ■■'■' . "-.·" ' PAGE 3 "'■■'· ■ "■ ■- . ■ . ■■ ·-: ■::.".
j 6) OPERATIONAL DESCRIPTION Is a description of HOW the
module accomplishes Its functipn(s). The
overview of the basic flow (or structure) of the
module. The tendency to avoid here is that of
getting so specific that this section becomes a
prose duplication of the pseudo code to follow.
The basic concept to be kept In mind is that the ■ level of detail generally increases as the
progression is made from Operational Description to
ι pseudo code to microcode.
j 7) SPECIAL CONSIDERATIONS 1s a section that describes
j constraints, requirements, or subtle pieces of
j Information that affect the design or the execution
j 8) ENTRY POINT(S): this section contains a list of
the label names of all the entry points to the
module and the corresponding descriptions of the
specific input parameters for each entry. These j descriptions go down to the bit level If necessary
j and also tell the user of the module how the
parameters are passed (via a pass table or specific
j Internal registers, for example).
j 9) NORMAL EXIT(S): this section contains a list of
the label names of the exits from this module that
are not error exits. Hopefully there will only be ■
a single exit from most modules, and that will be a
return to the caller. If the normal exit is a ·
return to the caller, then the word 'caller' is
placed in the name column for this entry. A
description of the output (return) parameters for <■
each exit 1s Included and contains the same level
! of detail as that used for the input parameters j described above.
! 10) ERROR EXIT(S): this section contains a list of
j the error exits and a one line description of the
j error for each exit. If parameters are passed,
j these are then described underneath the error
j descr1pt ion.
; 11) ROUTINES USED: this section is a list of the ^
i names of all the routines that are called by this CO
; module. The titles of each of the used routines (_Q
! are also included. Input and output "parameters · ς—*.
i are not Included here since they are described In
1 the prolog of the called routine. ^**
12) DATA STRUCTURES: Is a list of all the tables or
j other data structures that are utilized by this
PAGE
j module. The title of each data structure Is also
included. In addition. It (s helpful to put a 3
j or 4 character abbreviation of the table title in j parenthesis at the end of the title. This
abbreviation can then be used in the pseudo code
for variable definition (see the Variables section
j of Pseudo-code Conventions).
j 13) INTERNAL REGS: this section is specific to the
current microprocessor design and describes the
Internal registers of the current primary group ! that are affected by this module. If the module
j Increments the IRG and does not affect the current
group, then this section should state 'current
I group not affected'.
! 14) EXTERNAL REGS: this section describes the usage
I of the external registers by this module. The description (or title) of each external register
J used 1s listed under the description column.
j 15) ENTRY and EXIT IRG: this section defines what the
expected value of the IRG (Internal Register
Group) is when this module is called and what the
j value will be when this module 1s exited.
j 16) CHANGE ACTIVITY 1s a section that documents the
j progress of the module as it passes through the <$^" ;,,,;
i design, implementation, and debug phases. The (j*i ■
j tendency 1s to not fill this section In. However, ,,'','
if filled in, this section can provide useful ',,',
information for the project manager when the next '|
project is planned. The final item under Change
made to the module after it has entered system 1I.,,
test. This Is a useful way of charting the "
changes to a module that have occurred after the ,,!,
] initial design process has been completed.
j A final note on the time at which each of these sections ·' ■
should be filled out: All sections through Special
Considerations should be filled out prior to the 'DI'
j review. The Routines Used and the Data Structures sections j should be filled out prior to the ΊΓ review. The Change
appropriate milestones or changes are made. The remaining £*3
sections should be filled in when the actual microcode Is CO
J wr1tten. f—)
. - :■ ■ "■''■■■ PAGE 5 ■'"''■ ■ . :■■ '-. ■ - * ..""■■ ■·■' ■· ■■
PSEUDO-CODE CONVENTIONS
j The writing of pseudo code Is a difficult art to develop.
j The pseudo code Is meant to be a bridge between the prolog's
operational description and the microcode Itself. There
! seems to be either the tendency to make the pseudo code too
j general or too specific and detailed. If It Is too general,
j then ft becomes a duplication of the operational description
J and does not contain enough detail for the 1II' reviewers to
j satisfactorily check out the design. If It Is too specific,
then it becomes a duplication of the microcode and contains
so much detail that the reader becomes bogged down and looks instead at the actual microcode. The trick Is to maintain a
{ happy medium between these two extremes.
The pseudo code language used for the CHINOOK project
consists of the following pseudo code control keywords. The _ ;■
purpose of the keywords is twofold: First, consistency between microcoders is achieved. It Is much easier to
understand another persons code if It looks similar to your
own code. Second, the module becomes much more structured by
using standard conventions for decisions, loops, and 1inkage.
j A final phi 11 soph1cal note: If the microcode does not
follow the pseudo code as closely as possible, or if the microcode is changed during the debug phase of the project
but the pseudo code 1s not updated. then It becomes less
than worthless and can actually contribute to confusion and
j errors in understanding. < '
The pseudo code conventions are: ■ ·
1) All pseudo code keywords must be capitalized. When ' ']
two keywords appear together (END-THEN), they will ·
be hyphenated. ' ' '.
2) Pseudo code begins 1n column three and each level
of nesting Is Indented two spaces. ;
j 3) The use of Set and Initialize words 1n comments and
; pseudo code is often ambiguous. While the usage of
'■ Reset Is generally accepted as meaning 'put It to CO
; the inactive (or zero) state', the usage of Set or OJ
; Initialize often means one thing to the author ^q
j while the reader may Interpret them differently.
! By being a little more explicit, this confusion *—'
j could be eliminated. Such as: CO
Not -- Set the 'Cache Mode' flag
But -- Set the 'Cache Mode' flag on
Not -- Initialize the Status Table
Not -- Initialize the Status Table
PAGE 6
But -- Initialize the Status Table to zeros (xOO)
Not -- Initialize the print buffer
4) All variables are either
A) enclosed by single quotes, such as 'temp return code' (this allows for single word variables),
or
B) hyphenated and the first letter of each word Is
capitalized, such as Temp-Return-Code.
Flags follow either format but also Include the word flag or the word bit following the variable
name. such as 'streaming active' flag or Streaming-Act1ve-B1t.
Note: Either convention for variable naming Is acceptable. However, be consistent within all of
your modules.
Variable names are further modified by specifying where they are coming from the first time they are
used In a module. For example:
Tag-Code (local) « a locally defined variable Tag-Code (L) ■ a locally defined variable
Tag-Code (input) · a variable passed to this module Tag-Code (I) ■ a variable passed to this module
Tag-Code (output)» a variable passed from this module Tag-Code (0) « a variable passed from this module
Tag-Code (CST) ■= a global variable that resides In the
table with the corresponding abbreviation In the Data Structures section of
the prolog
Listed below are the pseudo keywords, followed by examples
of their use. One of the primary benefits of pseudo code Is
to separate code into small cohesive units. Thus, the pseudo
language Is designed to block code by using 'DO' 'END'
groups.
Ύ,
<D O CO
K)
,PAGE 7, -
DECISIONS
Keywords:
THEN (NULL)
ELSE (NULL)
THEN-DO
ENO-THEN
ELSE-DO
END-ELSE
All decisions must begin with the 'IF' keyword. The next
part of the pseudo code depends on what action Is performed.
If for example, the positive leg of the test consists of only one pseudo instruction the 'THEN' form of the code Is
used. If the leg consists of two or more pseudo
instructions the 'THEN-DO'. 'END-THEN' form Is used.
The NULL keyword Is used for pseudo code completeness, but
does not result In real code other than possibly a branch. If a test is made on one condition but the action is
performed on the other, the THEN leg becomes null and the
THEN NULL statement must be used. If the ELSE leg is null, the ELSE NULL statement Is optional. The NULL is not part
of the THEN or ELSE· keyword, but Is the action performed.
Thus, it is not hyphenated.
XjO CO CO O CO N>
CO
PAGE 8
Examples:
IF the enable/disable switch 1s disabled
THEN set the 'disable' flag on
THEN set the 'disable' flag on
IF the enable/disable switch Is disabled
THEN-DO for disabled
THEN-DO for disabled
Set the 'disable' flag on
Setup to notify the cache director
END-THEN for disabled
Setup to notify the cache director
END-THEN for disabled
IF the enable/disable switch Is disabled
THEN set the 'disable' flag on
ELSE set the 'enable' flag on
THEN set the 'disable' flag on
ELSE set the 'enable' flag on
IF the enable/disable switch Is disabled
THEN-DO for disabled
THEN-DO for disabled
Set the 'disable' flag on
Setup to notify the cache director
END-THEN for disabled
ELSE-DO for enabled
END-THEN for disabled
ELSE-DO for enabled
Set the 'enable' flag on
Setup to continue
END-ELSE for enabled
END-ELSE for enabled
IF the 'deselection reset' or 'check t reset' flags are on and
the 'table update In progress' and 'reset pending' flags are off
THEN NULL for deselection reset
ELSE-DO for general reset
THEN NULL for deselection reset
ELSE-DO for general reset
Reset the 'deselection reset' flag
Reset the 'check 1 reset' flag
END-ELSE for general reset .
Reset the 'check 1 reset' flag
END-ELSE for general reset .
KjJ CO CO O
. page 9
LOOPS
Keywords:
DO-WHILE
END-WHILE
END-WHILE
DO-UNTIL
ENO-UNTIL
ENO-UNTIL
WAIT
HALT
HALT
Loops are coded 1n several ways. Either the check for the
exit from the loop Is done at the beginning of the loop or
at the end. If It Is done at the end. then the loop will
always be executed at least once. The DO-WHILE has the
check 1n the beginning while the DO-UNTIL checks at the end.
A third type of loop Is a one word loop which spine on a
condition, waiting for the condition to come or go away. These are coded using the WAIT keyword.
A fourth type of loop Is a one word loop which Is used
during the debug phase of a product. It Is used to detect
Internal logic problems that should not occur and are
normally not even coded because It would be to expensive. To
attempt to find these problems during the testing phase, the *
HALT keyword Is used. The HALT statements result In (jl
execution of a macro which does a one word loop during the λ
test phase. When the product Is shipped, the macro can be ^
changed to a NOP or to a generalized recovery routine.
Examples: " ·
DO-WHILE there are valid entries In the directory
Save the device type 1n the LRU table
Save the time stamp 1n the LRU table
END-WHILE there are valid entries 1n the directory
DO-UNTIL there are no valid entries In the directory
Save the device type In the LRU table
Save the time stamp 1n the LRU table END-UNTIL there are no valid entries 1n the directory "GO
WAIT for tag valid to rise ,-»
HALT because the Cache Directory Indicates 'Stage In Progress' CD
PAGE 10
ROUTING
Keywords:
SELECT
DO-WHEN
JND-WHEN
END-SELECT '
The case form of this pseudo code uses the SELECT, WHEN,
OTHERWISE, keywords. It Is used to select only one option when there are many to choose from. The WHEN keyword Is
used to select the options you need to process, while the OTHERWISE keyword 1s used at the end of the select structure
to catch the remaining or Invalid options. In any SELECT structure the OTHERWISE keyword must be used. If no action
ts to be taken 1n the OTHERWISE, then the OTHERWISE NULL statement must be used. LK
structure would suffice. If there Is more than one option t
possible then the IF, THEN with a null ELSE structure would
be used. \J| ■.-.,,>
ι
Example: · ' .''.'.
Send response
END-WHEN for poll command - tag 02
Set Return-Code (output) for an Invalid tag
END-SELECT on tag
PAGE 11·
LINKAGE
Keywords:
Keywords:
ENTRY '
CALL
PASS:
RECEIVE:
TRANSFER ■ . :
(PARM LIST:)
INCLUDE
RETURN , , .-■'..
INCLUDE
RETURN , , .-■'..
These keywords are used to block a module, or pass control
to another module. The PASS and RECEIVE fields on the CALL "
keyword are designed to force narrow Interfaces. You should
always be able to state exactly what parameters are
exchanged.
The CALL keyword Is used when a module or subroutine is
being Invoked and return Is expected. If a return (S not
expected, then the TRANSFER keyword is used. TRANSFER should only be used in special situations such as Reset,
TRANSFERMng control back to the Idle Loop, or error exits /j^
to a central error recovery handler. The PARM LIST keyword ■·,//
Is optional and is used when parameters are passed during a \ S.
TRANSFER.
(r\
The INCLUDE keyword 1s used to include a segment of code ^
inline Into the module. Segments are created to package a "
module Into small logically cohesive units. They are used
instead of subroutines because they are invoked In only one
place. Because of addressing and assembler restrictions,
segments 1n the CHINOOK system are implemented using the BALR Instruction.
Example:
ENTRY Space Manager ■
SELECT by command
DO-WHEN a directory search
Set DID-CC-H for search routine
CALL Search Routine to see If entry is In the Cache r")
PASS: DID-CC-H
RECEIVE: 'found' flag ^*-*
IF DIO-CC-H was found <1D
THEN set 'found' flag , Q
ELSE TRANSFER to the Reset Manager ,»
Save the DID-CC-H 1n the device table ■ J™1^
tND-WHEN for directory search "^
WHEN a read frame 1d : OO
INCLUDE the read frame ld segment
PAGE 12
END-SELECT by command
RETURN to caller
RETURN to caller
When parameters to be passed to a module are not to be
referenced anymore after they are passed, the CALL statement
may be stated In either of two ways:
Set Tag-Bus for a write tag
Set Bus-Out for a directory search command and residual count
CALL Send Tag module (MX123) to send the tag PASS: Tag-Bus, Bus-Out
RECEIVE: Bus-In-Va1ue
! CALL Send Tag module (MX123) to send a directory search command
; PASS: tag bus, bus-out
j RECEIVE: Bus-In-Value
! In addition, when a parameter received from a called module
j 1s not used, the CALL statement may be stated as follows:
j CALL Send Tag module (MX123) to send a directory search command
j PASS: tag bus, bus-out
g
RECEIVE: Bus-In-Value (not used)
RECEIVE: Bus-In-Value (not used)
j Do not specify 'nothing' as received from the called module,
as-this will lead to confusion as to whether or not the
module designer Is aware of the proper pass/return
j parameters for the called module.
CJ CD Q U)
PAGE 13
■ Af-FIiNUJLA D
EC CMGR0O04
♦ · MICROCODE ASSEMBLER 6.θ 08/16/82 13:54:06 **
PROGRAM: MDFGODS1
DEALLOCATION FOR DATA INTEGRITY -GE
ADDR INST
STATEMENT
»*·***··*···*··****» START OF SPECIFICATIONS ·····*♦·**··*··*·♦·*
MODULE NAME: MDFGDOS1
MODULE TITLE: DEALLOCATION FOR DATA INTEGRITY
MODULE OWNER: Rick Coulson
FUNCTIONAL DESCRIPTION
STMT #
This module deallocates frames according to the flags set In the
End Channel Program command. Frames are only deallocated If they
represent a data Integrity exposure.
If the 'Cache Read Error' flag 1s on then permanently deal locate
the frame to which the channel program was executing.
If the 'Write Occurred' flag and the 'Head Seek' flag are both on,
deallocate the cylinder to which the channel program was executIng.
If the 'Write Occurred' flag and the 'Track Switch' flag are both
on. deallocate the range between the starting head and the ending head.
* If the 'Write Occurred' flag Is on but neither 'DASD Operation' or
* 'Track Switch' or 'Head Seek' are on, deallocate the track to
* which the channel program was executing.
* No parameters are explicitly passed to this module and none are
* returned to the caller.
* OPERATIONAL DESCRIPTION
* If the 'Cache Read Error' flag 1s on, the Permanently Deallocate
* Frame routine Is called to remove the frame from active service.
* If the 'Write Occurred' flag Is on, then the action to take
* depends on the value of 'Imbedded Head Seek' and the 'Track
* Switch' flags. When 'Imbedded Head Seek' Is on, call the
* Deallocate Range routine, passing 0 and the number of tracks per
* cylinder as the range. This will cause the entire cylinder to be
* deallocated. When 'Track switch' 1s on, call Get Last Seek to get
* the head addrees the channel program started on. Then cal1
* Deallocate Range to Invalidate all tracks between the starting
* head and the current head Inclusive. If neither 'DASD Operation'
* or 'Imbedded Head Seek' or 'Track Switch' Is on, call Deallocate
* Frame to Invalidate the frame containing the specified track.
*
*
* SPECIAL CONSIDERATIONS
•••{{(00020 | 2 | ■Β | υ | C | ■B · J | J |
•{{{00030 | 3 | E | O | " *" >. | ||
•{((00040 | 4 | *c | 3 = "5. | a α.1 |
||
•{{{00050 | 5 | 5 | 0 | J -; E | 'i | |
•{{{OO060 | 6 | X | ■5 | |||
♦({{00070 | 7 | 111 | JO | - S-S | ■j | |
♦{{{00080 | 8 | Nil | Ul | O. |
ν» ·£ ·*
K * ·.' |
S |
♦{{(00090 | 9 | 3 | V | ·* " · β> c -£ |
||
•{{(00100 | 10 | fc | U t; |
c · β •Ζ c |
J S |
|
•{{{00110 | 11 | O KJ |
S"I i | •Μ β |
||
*{{{00120 | 12 | ι * >; | "? | |||
•{{(00130 | 13 | O | t | j> | , » | |
•{{{00140 | 14 | 0. ti |
Ί | lit | ||
•{{(00150 | 15 | O | i. | ; | S ' β | |
•{{{00160 | 16 | I | • | ■ | ||
•{{{00170 | 17 | t | "0 | ." ϊ · | ||
•{({00180 | 18 | Dt | X | C | M w | |
•{{{00190 | 19 | j | .C | •Χ *» ( M |
||
♦ { {(00200 | 20 | υ | ο ε « | |||
•{{{00210 | 21 | ΙΛ | I | U | ||
•{{{00220 | 22 | ΰΐ | O | S. | ? " * | |
•{({00230 | 23 | C σ |
||||
♦{{(00240 | 24 | O | ί | m | « I .S | |
♦ { { (00250 | 25 | Q Q. |
||||
♦{((00260 | 26 | |||||
♦({{00270 | 27 | CO | ||||
*{{{00280 | 28 | CO | ||||
*{{ {0O290 | 29 | |||||
• { { {00300 | 30 | CD | ||||
*{ {(00310 | 31 | O | ||||
♦{{(O0320 | 32 | CO | ||||
• ( { (00330 | 33 | |||||
♦{{(00340 | 34 | |||||
♦{{{00350 | 35 | |||||
■·{{(00360 | 36 | |||||
*{ {(00370 | 37 | |||||
•{{(00380 | 38 | |||||
* {({00390 | 39 | |||||
♦{{ {ΌΌΛ00 | 40 | |||||
♦(((004 10 | 4 1 | |||||
*{{(00420 | 42 | |||||
♦{{{00430 | 43 | |||||
♦{{(00440 | 44 | |||||
.♦({{00450 | 45 | |||||
♦({(00460 | 46 | |||||
♦{((00470 | 47 | |||||
•({(00480 | 48 | |||||
*{({00490 | 49 | |||||
•{({00500 | 50 | |||||
♦{{(00510 | 51 | |||||
•({(00520 | 52 | |||||
co
PROGRAM: MDFGDDSI PAGE
♦* MICROCODE ASSEMBLER G.β 08/16/82 13:54:06 **
PROGRAM: MDFGDDSI
PAGE
ADDR INST
STATEMENT
Remember that even If an operation started out on cache, we might
need to deallocate a range or cylinder. A write could cause a return to DASD and then once on DASD encounter head seeks etc.
Care must be taken to Insure that all required deallocation
actions are taken. For example, A 'Cache Read Error' should not prevent the deallocation of a cylinder If 'Write Occurred' and
'Head Switch' are on.
No special deallocation action le needed for the 'Channel
Interface Reset' flag. The other flags In the End Channel Program Message will correctly specify any required deallocation.
STMT H
* ENTRY POINT(S): | MDFGDDS1 | ENTRY PARAMETERS -- | PAS5 LINK 2 | DESCRIPTOR | (prolog) | CODE COMPLETE | (MODULE SIZE · 777 | ) | words I |
* | DID | PL2DID | 12 COMPLETED | ||||||
* | C | PL2CYLH | R/W REGISTER GROUP POINTER | (pseudo code) | |||||
# ' ■ | C | PL2CYLL | EXIT IRG: P(EX STK, | ||||||
* | HEAD | PL2HEAD | S(RTN) | (real code) | |||||
* NORMAL EXIT(S): | caller | none | |||||||
* ERROR EXIT(S): | none | ||||||||
* ROUTINES USED: | MDFGDSA5 | PERMANENTLY DEALLOCATE FRAME | |||||||
* | MDFGDSA7 | DEALLOCATE FRAME | |||||||
* | MDFGDSA8 | DEALLOCATE RANGE | |||||||
* | M0FGDSB2 | GET LAST SEEK | |||||||
♦ MACROS USED: | UHALT | HALT MACRO | |||||||
* | USETIRG | CHANGE THE IRG | |||||||
* | UCALLMOD | CALL A MODULE | |||||||
* | USAVE | SAVE THE IRG | |||||||
tt | URESTORE | RESTORE THE IRG | |||||||
* | URETURN | RETURN TO CALLER | |||||||
* DATA STRUCTURES | : MDDGDT02 | R DEVICE TYPE | |||||||
* INTERNAL REGS: | ' > | >(R/W) > | |||||||
* EXTERNAL REGS: | IRG | ||||||||
• ENTRY IRG: | P(EX STK) | ||||||||
* | S(PL2) | ||||||||
• CHANGE ACTIVITY | |||||||||
* 03/08/82 RLC | START | ||||||||
• 03/17/82 | D1 SCHEDULED | ||||||||
* 03/17/82 | D1 COMPLETED | ||||||||
* 03/17/82 | 11 SCHEDULED | ||||||||
• O3/17/B2 | I 1 COMPLETED | ||||||||
• 03/30/82 | 12 SCHEDULED | ||||||||
♦ 04/14/82 RLC | |||||||||
♦ MM/DD/YY |
* >(m/d/y) >(by) >(change #)
>(change description)
*{{{00530 | 53 |
*{{{OO54O | 54 |
*({{00550 | 55 |
*{((00560 | 56 |
*{{(00570 | 57 |
*{((00580 | 58 |
•{((00590 | 59 |
•{{(00600 | 60 |
*{{(00610 | 61 |
•{{(00620 | 62 |
•({{00630 | 63 |
* ( {(00640 | 64 |
*({{00650 | 65 |
M I (00660 | 66 |
M({00670 | 67 |
M{(00680 | 68 |
♦{{{00690 | 69 |
♦{((0070O | 70 |
♦({{00710 | 71 |
M I (00720 | 72 |
*{{(00730 | 73 |
M I (00740 | 74 |
*{({00750 | 75 |
*{({00760 | 76 |
♦(({00770 | 77 |
*(({00780 | 78 |
*(((ΟΟ79Ο | 79 |
*({{ΟΟ8ΟΟ | 8Ο |
*({{00810 | 81 |
*({{00820 | 82 |
♦{{(00830 | 83 |
*{ ( (00840 | 84 |
•{ {(00850 | 85 |
Μ((0Ο860 | 86 |
•(((ΟΟ87Ο | 87 |
• {{(ΟΟ88Ο | 88 |
*{{(00890 | 89 |
♦{{(00900 | 90 |
MU00910 | 91 |
♦{{{ΟΟ92Ο | 92 |
*{{(00930 | 93 |
•{{(00940 | 94 |
*({{00950 | 95 |
•({(00960 | 96 |
* { { (00970 | 97 |
M((00980 | 98 |
·.(( (00990 | 99 |
*(<(010OO | 1OO |
* {({01010 | 101 |
•{{(01020 | 102 |
•{({01030 | 103 |
EC CMGR00O4
PROGRAM: MDFGODS1 PAGE
EC CMGROOO4
ADDR INST
·· MICROCODE ASSEMBLER 6.8 08/16/82 13:54:06 ·'
PROGRAM: MDFGDDSI
STATEMENT **.*****.·*·**·*· END OF SPECIFICATIONS
STMT » {({01040 104
EC CMGR0004
EC CMGR0OO4
** MICROCODE ASSEMBLER β.β 08/16/82 13:54:06 *♦
PROGRAM: MDFGDDS1
PAGE
ADDR INST
STATEMENT
STMT #
2DF3 | • LOCALS | PO | MDFGDOSI | < (ADDRESS) | •ACCESS COUNT | -♦{({01060 | 106 | |
27F1 | P1 | MDFGDDS1 | *LOCAL FLAGBYTE | ♦{{{υ 1070 | 107 | |||
A A 20 | O | •DEALLOC FLAG | -♦{{{01080 | 108 | ||||
8A30 | ACCCOUNT DEF | X80 | [RG | *SET FLAG | {({01090 | 109 | ||
4A26 | LOCFLAGS DEF | X7F | IRG + XIO | * IF 'cache read error' flag on | ♦RESET FLAG | (((οι loo | 1 10 | |
DEALLOC DEF | P2P3 | ADDRESSH « $RCVBUF | * THEN-DO for cache read error | (((όπιο | 1 1 1 | |||
SETDEALL DEF | P2 | ADDRESSL · :RCV FLAG | ,'-.· CALL Permanently Deallocate Frame | {( (01 120 | 1 12 | |||
RESDEALL DEF | P3 | FLAGS |
• PASS: OID.C.C.H, error address
OBfW! |
{((01130 | 113 | |||
ADDRESS DEF | P4P5 | »ERROR DOMAIN ADDRESS | {{{01140 | 1 14 | ||||
ADDRESSH DEF | P5 | {{{01150 | 1 15 | |||||
ADDRESSL DEF | P4P5 | *ERROR ADDRESS | ({(01160 | 1 16 | ||||
XXERRDOM DEF | P4P5 | ♦TRACKS PER CYLINDER | {{(01170 | 117 | ||||
ERRDOMAN DEF | P5 | (((011BO | 1 18 | |||||
ERRADDR DEF | P5 | {{{01190 | 1 19 | |||||
XXTRKCYL DEF | P6P7 | ♦FLAG BYTES | (((012OO | 120 | ||||
TRKCYL DEF | P6 | ♦FLAG BYTE O | (((0121O | 121 | ||||
OLDHEAD DEF | O | ♦DASD READ ERROR | {{(01220 | 122 | ||||
FLAGS DEF | 2 | ♦CACHE READ ERROR | {{{01230 | 123 | ||||
FLAGO DEF | 3 | ♦IMBEDDED CYLINDER SEEK | {({01240 | 124 | ||||
DASDRERR DEF | 4 | ♦TRACK SWITCH | {{{01250 | 125 | ||||
CACHRERR DEF | 5 | ♦WRITE OCCURRED | {{(01260 | 126 | ||||
IMBCYLSK DEF | 6 | ♦IMBEDDED HEAD SEEK | {({01270 | 127 | ||||
TRSWITCH DEF | 7 | ♦CHANNEL INTERFACE RESET | ({{01280 | 128 | ||||
WRITEOCC DEF | P7 | ♦FLAG BYTE 1 | {{(01290 | 129 | ||||
IMBHDSK DEF | O | ♦FIRST RECORD READ | {{{01300 | 130 | ||||
CHANLRES DEF | 1 | ♦LAST RECORD READ | {{(01310 | 131 | ||||
FLAG1 DEF | 2 | ♦EOF RECORD READ | {{{01320 | 132 | ||||
FIRSTREC DEF | 3 | ♦UPDATE SEEK ONLY | {{(01330 | 133 | ||||
LASTREC DEF | 4 | ♦DASD OPERATION | {{(01340 | 134 | ||||
EOFREC DEF | {({01350 | 135 | ||||||
UPSKONLY OEF | {{{01360 | 136 | ||||||
DASDOPER DEF | ({{01370 | 137 | ||||||
• ENTRY Deallocation For Data Integrity | {((01380 | 138 | ||||||
♦{((01390 | 139 | |||||||
ORG | ♦{{(01400 | 140 | ||||||
START |
■♦{((01410
({{01420 |
λ A i | ||||||
MDFGDDS1 USAVE | ♦SAVE THE IRG | {{{01430 |
I ·# 1
142 |
|||||
+ MDFGDDSI P3 · | ♦SAVE IRG IN P3 | {{{01440 | 143 | |||||
+ IRG « | ♦INCREMENT PRIMARY GROUP | {{(00520 | 144 | |||||
♦POINT TO RECEIVE BUFFER | {{{00530 | |||||||
♦POINT TO FLAG BYTES | {{{01450 | |||||||
OCCO | ♦GET FLAG BYTES | {{(01460 | 145 | |||||
0C81 | {({01470 | 146 | ||||||
OC82 | {{(01480 | 147 | ||||||
OC83 | * {{{01490 | 148 | ||||||
0C8< | *{{(01500 | 149 | ||||||
♦{{{01510 | 150 | |||||||
•{{(01520 | 151 | |||||||
DAU. unernhc4 | ♦{{{01530 | 152 | ||||||
153 | ||||||||
O Ca)
ro
PAGE
EC CMGS0OO4
*· MICROCODE ASSEMBLER 6.8 08/16/82 13:54:06 ♦·*
PROGRAM: MDFGODS1
PAGE
ADOR INST
STATEMENT STMT H
OC85 | 5562 |
0CB6 | 0C9E |
OC87 | ΑΛ20 |
OC88 | 8Λ33 |
0C89 | 4A24 |
OCBA | 7A5E |
0C8B | 8A34 |
0C8C | 4Λ24 |
0C8D | 4E5C |
0C8E | 6FE0 |
0C8F | 1540 |
0C90 | 5182 |
0C91 | 0C9E |
0C92 | 1013 |
0C93 | 6FE4 |
0C94 | FF60 |
OC95 | 8 Λ00 |
0C96 | BA 10 |
0C97 | BB20 |
OC98 | 4004 |
0C99 | 2302 |
0C9A | 231 1 |
0C9B | 21DD |
0C9C | 23C4 |
0C9D | OC 90 |
QCzZ 5362
0C9F 0CD2
0C9F 0CD2
RECEIVE: Return Flag IF frame not found return flag
THEN HALT 60 - cache reed error END-THEN for cache read error
on frame not found
OH
B
B
FLAGO.CACHRERR.LABEL
WHEN2
LABEL
ADDRESSH
ADORESSL
XXERROOM
PL2ERRDM
ADDRESSL
ADORESSL
XXERROOM
PL2ERRDM
ADDRESSL
tRCVBUF :RCV_ERRD (ADDRESS) ERRDOMAN :RCV ERRA
•BRANCH IF CACHE READ ERROR ♦JL WON'T REACH
•SET UP ADDRESS OF
ERRADDR < (ADDRESS) PL2ERRAA « ERRADDR
DC CALLMOD
DA MDFGDSA5
B WHEN2
DB XFF,X60
TLAB0003 PO » XOO
P1 - X60
P2 « $CCT_TABL
XBP - XBP . SWBANKO / ILR SET1
HALT1
+ HALT1
*{{{O154O •{((01550
♦{{(01560 •{{{01570 * H{01580
{{{01590 {({016OO
ERROR 00MAIN{({01610 {{{01620
({{01630 {{{01640 {{{01650
{({01660 {{{01670 {{{01680
{{{01690 {{{00500 {{{00510
(((017OO {{(01710 ♦CACHE RD ERROR FRAME NOT FOUND{{{01720
♦GET ERROR DOMAIN ♦PASS ERROR DOMAIN ♦SET UP ADDRESS OF
♦GET ERROR ADDRESS ♦PASS ERROR ADDRESS ♦DID.C.C.H IS ALREADY
♦PERM DEALLOC FRAME ♦BAL INSTR TO CALL ♦ADDRESS OF CALLED
♦BRANCH IF FRAME NOT
ERROR ADDR
IN PL2
ROUTINE
MODULE
FOUND
ILR
B
- ILR
LOOP
♦BRANCH IF TRACE NOT ON ♦BAL TO TRACE MODULE
♦TRACE X60
♦CLEAR HIGH ORDER BYTE
♦GET HALT X60
♦SET UP ADDRESS TO CCT
♦STORE HALT ID IN CCT
•SWITCH TO BANK 1
♦INHIBIT DESELECTION RESET
♦SWITCH TO BANK O
♦CAUSE LEVEL 1 INTERRUPT
♦ HANG
IF 'Write Occurred' flag on THEN-DO for write occurred SELECT on flags
WHEN2
JH
B
FLAGO,WRITEOCC,SELECT2
DONE
♦BRANCH ♦BRANCH
IF TO
WRITE DONE
OCCURRED
DO-WHEN Imbedded head seek
Get tracks/cyl for this device type (DTD)
CALL Deallocate Range
PASS: DID.C.C.O, tracks/cyl (deallocate cylinder)
RECEIVE: Return flag byte END-WHEN Imbedded head seek
{{{00550
{{{00550 {{{00560 {{{00570 {{{00580
{({00590
{{(01730
♦{{{01740
♦{ { (01750
♦ { ( {01760 ♦(((01770
♦( ({01780
{((01790 {((018OO ({ (01810
♦ { { (01820 ♦{{{01830
♦ { ({01840 ♦'{ ( (01850 *(((01BR0
*(((O187O *({
154 155 156 157 158 159 160
161 162 163 164 165 166 167 168 169
170 171 172
OCAO 5062
SELECT2 OH
FLAGO.IMBHDSK,LABEL2
♦BRANCH IF HEAD SEEK {((01900
173 174 175 176 177 178
179 180 181 182 183 18 185
186 1B7 108 189 190
CO CO <JD
CD CO
ro co
EC CMGR0004
PROGRAM: MDFGDDSI PAGE
EC CMGH0004
·· MICROCODE ASSEMBLER 6.8 OB/16/82 13:54:06 *· PROGRAM: MDFGDDSI
DEALLOCATION FOR DATA INTEGRITY
PAGE
ADDR | INST | LABEL2 | TYPEA |
0CA1 | 0CB2 | + LABEL2 | |
+ | CALLIT | ||
0CA2 | 31F0 | + CALLIT | |
0CA3 | 33F5 | + | |
0CA4 | BB20 | ||
0CA5 | 5 1F4 | ||
0CA6 | CA37 | + | |
0CA7 | 4Λ24 | + | |
0CA8 | OCAB | ||
0CA9 | CA3O | ||
OCAA | 4Δ24 | ||
OCAB | 3 1F0 | ||
OCAC | 33F2 | ||
OCAD | 6ΛΒ0 | ||
OCAE | 7A5C | ||
OCAF | 6FE0 | ||
OCBO | 16OO | ||
OCB 1 | OCD 2 | ||
STATEMENT STMT H
B WHEN22
USETIRG IRG SECD SST SECD
IRG - IRG~. XFO
IRG » IRG / X05
ADDRESSH « iDTD TABL
JH SST DFLG.BITDEVTA.TYPEA
ADDRESSL ^ :DFHDTRKB
XXTRKCYL < (ADDRESS)
B CALLIT
ADDRESSL · :DFHDTRKA
XXTRKCYL < (ADDRESS)
USETIRG IRG SECD PL2_SECD
IRG « IRG~. XFO ~
IRG - IRG / X02
PL2HEAD = XOO
PL2HEAD2 - TRKCYL
UCALLMOD MDFGDSAB
DC CALLMOD
DA MDFGDSA8
B DONE
♦JL WON'T REACH
♦SWITCH TO SST
•Clear appropriate nibble ♦Set appropriate nibble
♦SET UP ADDRESS OF DTD ♦JUMP IF TYPE A
♦GET TRACKS/CYLINDER B
♦GET TRACKS/CYLINDER A ♦SWITCH TO PL2
♦Clear appropriate nibble ♦Set appropriate nibble
♦LOWER LIMIT - O
♦UPPER LIMIT - TRACKS/CYL ♦DEALLOCATE RANGE
♦BAL INSTR TO CALL ROUTINE ♦ADDRESS OF CALLED MODULE
DO-WHEN track switch CALL Get Last Seek PASS: DID
RECEIVE: DID.C.C.H (old)
CALL Deallocate range
PASS: DID.C.C.H (old), H (new)
RECEIVE: Return flag byte END-WHEN track switch
31FO | WHEN22 | USETIRG IRG SECD PL2_SECD | |
0CB2 | 33F2 | + WHEN22 | IRG » IRG . XFO ~ |
0CB3 | 5868 | + | IRG - IRG / X02 |
0CB4 | vJL FLAGO.TRSWITCH.WHEN23 | ||
6FE0 | UCALLMOD MDFGDSB2 | ||
0CB5 | 1720 | + | DC CALLMOD |
0CB6 | 7AD5 | + | DA MDFGDSB2 |
0CB7 | OLDHEAD * RTN HEAD | ||
31FO | USETIRG IRG SECD PL2 SECD | ||
OCB η | 33F2 | + | IRG « IRG . XFO |
0CB9 | 7ABC | + | IRG · IRG / X02 |
OCBA | 7A5B | PL2HEAD2 - PL2HEAD | |
OCBB | PL2HEAD » OLDHEAD | ||
GFEO | UCALLMOD MDFGDSA8 | ||
ocrc | 1600 | + | DC CALLMOD |
OCBD ■ | OCD 2 | + | DA MDFGDSA8 |
OCBE | B DONE | ||
♦SWITCH TO PL2
♦Clear appropriate nibble ♦Set appropriate nibble
♦BRANCH IF NO TRACK SWITCH ♦GET LAST SEEK
♦BAL INSTR TO CALL ROUTINE ♦ADDRESS OF CALLED MODULE
♦MAKE COPY OF OLD HEAD ♦SWITCH TO PL2
♦Clear appropriate nibble ♦Set appropriate nibble
♦UPPER LIMIT IS CURRENT HEAD ♦LOWER LIMIT IS OLD HEAD ♦DEALLOCATE RANGE
♦BAL INSTR TO CALL ROUTINE ♦ADDRESS OF CALLED MODULE
♦(IGNORE RETURN FLAG)
DO-WHEN not dasd operation
({{01910 | 191 |
(({01920 | 192 |
{{(00660 | |
{{(00670 | |
({{01930 | 193 |
{{ (01940 | 194 |
{{{01950 | 195 |
{({01960 | 196 |
{{{01970 | 197 |
{{{01980 | 198 |
{{{01990 | 199 |
{{{02000 | 200 |
{{(00660 | |
{{{00670 | |
{{{02010 | 201 |
{{{02020 | 202 |
{ ( {02030 | 203 |
{{(00500 | |
({{00510 | |
{{{02040 | 204 |
{ {(02050 | 205 |
♦{{{02060 | 206 |
♦{{{02070 | 207 |
♦{{{02080 | 208 |
♦{{ {02090 | 209 |
♦{{{021OO | 210 |
♦{{{02110 | 21 1 |
♦{{(02120 | 212 |
♦{{{02130 | 213 |
♦{{(02140 | 214 |
♦{{{02150 | 215 |
({(02160 | 216 |
{{(00660 | |
{{{00670 | |
{({02170 | 217 |
{{{02180 | 218 |
{{(00500 | |
{{{00510 | |
{{{02190 | 219 |
{{{02200 | 220 |
({(00660 | |
{((ΟΟ67Ο | |
{{{02210 | 221 |
{{{02220 | 222 |
{{{02230 | 223 |
{{(00500 | |
{{{00510 | |
{{{02240 | 224 |
{{{02250 | 225 |
♦ {{(02260 | 226 |
♦{{(02270 | 227 |
GO CO O
■PROGRAM: MDFGDDS1
PAGE
EC CMGROOO4
·* MICROCODE ASSEMBLER 6.8 08/16/82 13:54:06 »«
PROGRAM: MDFGDDS1
PAGE
AOOR INST
STATEMENT
CALL Deallocate Frame PASS: DID.C.C.H
RECEIVE: Return flags IF 'not found' return flag set
THEN HALT 61 - deallocation for frame not found
END-WHEN not dasd operation OTHERWISE NULL END-SELECT on flags
END-WHEN write occurred
»BRANCH IF NOT ON DASD
♦SWITCH TO PL2
♦Clear appropriate nibble
♦Set appropriate nibble
♦DEALLOC FRAME
*BAL INSTR TO CALL ROUTINE
♦ADDRESS OF CALLED MODULE
♦BRANCH IF FOUND
♦DEALLOCATION ON FRAME NOT FND
♦BRANCH IF TRACE NOT ON
♦BAL TO TRACE MODULE
♦TRACE X61
♦CLEAR HIGH ORDER BYTE
♦GET HALT X61
♦SET UP ADDRESS TO CCT
♦STORE HALT ID IN CCT
♦SWITCH TO BANK 1
♦INHIBIT DESELECTION RESET
♦SWITCH TO BANK O
♦CAUSE LEVEL 1 INTERRUPT
♦ HANG
STMT #
OCBF | 5872 | WHEN23 JL | F LAG1,DASDOPER,CACHEOK | » IRG . XFO | CALLMOD | MIC,BTRCBIT,TLABOOOD |
OCCO | 0CD2 | B | DONE | - IRG / X02 | MDFGDSA7 | TRACEMOD |
CACHEOK USETIRG IRG SECD PL2 SECD | UCALLMOD MDFGDSA7 | RETFLAG,NOTFOUND.DONE | XFF,Χ61 | |||
OCC 1 | 31F0 | + CACHEOK IRG | + DC | UHALT HALT X61 | « XOO | |
0CC2 | 33F2 | + IRG | + DA | + JH | « Χ61 | |
JL | + DC | « $CCT TABL | ||||
0CC3 | 6FE0 | + DB | > (P2..:CCT HERR) | |||
0CC4 | 1590 | + TLABOOOD PO | « XBP / SWBÄNK1 | |||
0CC5 | 508D | + P1 | ■ MDR / X10 | |||
+ P2 | « XBP . SWBANKO | |||||
0CC6 | 1D13 | + POP 1 | ■ ILR / ILR SET1 | |||
0CC7 | 6FE4 | + XBP | LOOP | |||
OCC 8 | FF61 | + MDR | ||||
0CC9 | 8Λ00 | + XBP | ||||
OCCA | 8A1 1 | + ILR | ||||
OCCB | BB20 | + B | ||||
OCCC | 4004 | |||||
OCCD | 23D2 | |||||
OCCE | 231 1 | |||||
OCCF | 21DD | |||||
OCDO | 23C4 | |||||
OCD 1 | OCD 1 |
*{{{O228O | 228 |
♦({{02290 | 229 |
♦{{{02300 | 230 |
♦{{{02310 | 231 |
♦{{{02320 | 232 |
♦{{(02330 | 233 |
*{{{O234O | 234 |
♦ { {{02350 | 235 |
♦{{{02360 | 236 |
♦{{{02370 | 237 |
{{{02380 | 238 |
239 | |
{{{02390 | 240 |
{ {{00660 | |
{{{00670 | |
{{{Ö24OO | 241 |
(((00500 | |
{{{00510 | |
{{{024 10 | 242 |
{{{02420 | 243 |
{{{00550 | |
{({00550 | |
{{{00560 | |
{{(00570 | |
{{(00580 |
♦ Return
31FO | DONE | URESTORE | XFO | |
OCD 7 | 37F4 | + DONE | IRG « IRG . | X04 |
0CD3 | 27FF | + | IRG · IRG + | XFO |
0CD4 | + | IRG · IRG + | ||
4C54 | URETURN | P4P5 | ||
OCCj | BALR P4P5, | |||
OCD6 | END | |||
♦RESTORE THE IRG ♦ZERO SECONDRY REGISTER GRP
♦SET SECONDARY TO 4
♦AND DECREMENT PRIMARY
♦RETURN TO CALLER
♦RETURN TO CALLER
»RETURN TO CALLER
<( | {00590 | 244 |
(( | {03430 | 245 |
({ | {02440 | 246 |
(( | {02450 | 247 |
{( | (02460 | 248 |
{( | (02470 | |
({ | (00510 | |
U | (00520 | |
(( | (00530 | 249 |
(1 | (02180 | |
(( | (00480 | 250 |
U | (02490 | |
CO O CO K)
PROGRAM: MDFGDDS1 PAGE
EC CMG^OOO4
*· MICROCODE ASSEMBLER 6.B O8/16/B2 13:54:06 *♦
PROGRAM: MDFGDDSI
DEALLOCATION FOR DATA INTEGRITY ♦· LABEL TABLE WITH REFERENCES **
PAGE
ADDR | EOUATE | |
LABEL | VALUE | |
ADDRESS | P2P3 | |
AODRESSH | P2 | |
ADDRESSL | P3 | |
BITDEVTA | O | |
BTRCBIT | OCC1 | 6 |
CACHEOK | ||
CACHRERR | OCAB | 2 |
CALLIT | ||
CALLMOD | X6FE0 | |
CCT HERR | X7OO4 | |
CCT~TABL | X7000 | |
DASDOPER | 4 | |
DFHDTRKA | X7O8O | |
DTHDTRKB | 0CD2 | X7087 |
DONE | ||
DTD TABL | X7O8O | |
ERRADDR | P4P5 | |
ERRDOMAN | P5 | |
FLAGS | P6P7 | |
FLAGO | P6 | |
FLAG1 | P7 | |
HALT X60 | X60 | |
HALT~X61 | OC92 | X61 |
haltT | ||
ILR | E 28 | |
ILR SET1 | X40 | |
IMBHDSK | 6 | |
IRG | E31 | |
IRG SECD. | 0C87 | XFO |
LABEL | OC A 2 | |
LABEL2 | ||
MDFGDDS1 | X0C80 | |
MDFGDSA5 | X 1540 | |
MDFGDSA7 | X1590 | |
MDFGDSA8 | X1600 | |
MDFGDSB2 | X172O | |
MDR | E17 | |
MlC | £17 | |
NOTFOUND | O | |
OLDHEAD | P5 | |
PL2 SECD | X02 | |
PL2ERRAA | S4S5 | |
PL2ERRDM | S6 | |
PL2HEAD | S3 | |
PL2HEAD2 | S4 | |
RCV ERRA | X4004 | |
RCV~ERRD | X4003 | |
0C84 OC82 0C83 0CA5 OC92 OCBF 0C85 OCAB
0C8E 0C98 0C97 OCBF 0CA9 0CA6 0C9F 0CA4 0C8C 0C8A 0C84
OC85 OCBF 0C92 0CC6 0C90 0C9C 0C9C OCAO 0C80 OCB 8
0CA2 0C85 OCAO 0C80 0C8F 0CC4 OCBO 0CB6 0C9A OC92
0C90 0CB7 OCAB 0C8D 0C8A OCAD OCAE OC 88 OC88
0C89 0C8C 0CA7 OCAA
0C87 0CA4
OC88 0C8B 0CA6 0CA9
0CC6
OCAF 0CB5 OCBC 0CC3
OCCC
OCCB
OCB1 OCBE OCCO 0CC5 0C8D
0C9E OCAO 0CB4
0C9C OCDO OCDO OCDO
0C81 0C81 0CA2 0CA2 0CA3 0CA3 OCAB OCAB OCAC OCAC 0CB2 0CB2 0CB3 0CB3 0CB8
0CB9 0CB9 OCC1 OCCV 0CC2 0CC2 0CD2 0CD2 0CD3 0CD3 0CD4 0CD4 OCAB 0CB2 OCBB OCC1
0C80 .t:
OCBD
0C9A OCCE OCCE
0CC6
0CC5
OCBB
0CB2 OCBB OCC1
OCBA OCBB OCBA CO
co ^>
CD CO hO CO
er TMGROOO4
PROGRAM: MDFGDDSI PAGE
tC CMGR0O04
►* MICROCODE ASSEMBLER 6.8 08/16/82 13:54:06
PROGRAM: MDFGDDSI
DEALLOCATION FOR DATA INTEGRITY ·♦ LABEL TABLE WITH REFERENCES **
PAGE
ADOR | EQUATE | |
LABEL | VALUE | |
RCV FLAG | X4000 | |
RCVBUF | X4000 | |
RETFLAG | SO | |
RTN HEAD | OCAO | S5 |
SELECT2 | ||
SST DFLG | S7 | |
SST SECD | X05 | |
SWB&NKO | XDF | |
SWBANK1 | 0CC9 | X20 |
TLABOOOD | 0C95 | |
TLAB0003 | ||
TRACEMOD | X6FE4 | |
TRKCYL | P5 | |
TRSWITCH | 0CA9 | 4 |
TYPEA | 0C9E | |
WHEN2 | OCB 2 | |
WHEN22 | OCBF | |
WHEN23 | ||
WRITEOCC | 5 | |
XBP | E29 | |
XXERRDOM | P4P5 | |
XXTRKCYL | P4P5 | |
OC83 OC 82 0C90 0CB7 0C9E
0CA5 0CA2 0C9B OC99 0CC6 0C92 OC93
OCAE OCB 4 0CA5 OC86 0CA1 OCB 4 0C9E
0C99 0C89 0CA7
OC87 0CC5
OCCF OCCD
0CC7 0C91
0C99 0C9B 0C9B OCCD OCCD OCCF OCCF OCAA
so
CO OO CD
CO
ro co
EC CMGR0O04
PAGE
Claims (14)
1. Verfahren zur Verbesserung der Leistungsfähigkeit
eines Computersystemtyps, der einen Hauptrechner mit einer arithmetischen und logischen Einheit und einer
Hauptspeichereinrichtung sowie eine Langzeitspeichereinrichtung aufweist, dadurch gekennzeichnet,
daß man nicht vom Hauptrechner aufgerufene Da-
v ten von der Langzeitspeichereinrichtung zu einer zwischen
der Langzeitspeichereinrichtung und dem Hauptrechner angeordneten Festkörper-Speichereinrichtung
3 0 auf die Anzeige hin überträgt, daß die Übertragung
eine! erhöhte Leistungsfähigkeit vorsehen würde, wobei
die Anzeige durch Prüfung von Indikatoren abgeleitet wird, die anzeigen, ob die vorher aufgerufenen Daten
nicht Teil eines sequentiellen Datenstromes sind und wobei die Übertragung nur dann durchgeführt wird, falls
diese Indikatoren nicht vorliegen.
2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß die Indikatoren Befehle einschließen,
die zusätzliche, zu lesende Daten von anderen als den nachfolgenden Speicherstellen steuern.
3. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß die Daten auf Magnetplattenlaufwerksmedien
gespeichert werden, die zu logischen Spuren organisiert sind, und daß die Übertragung nur durchgeführt
wird, falls die Indikatoren nicht vorliegen und die vorher gelesenen Daten den Anfangsteil einer
der logischen Spuren einschließen.
4. Verfahren nach Anspruch 1, dadurch g e k e η η ζ
e i c h η e t , daß die Langzeitdatenspeichereinrichtung MagnetplattenlaufWerkeinrichtungen aufweist,
wobei die Daten auf der Magnetplatte auf konzentrischen Spuren gespeichert werden, und daß die Übertragung be-
: züglich einer ganzen Spur auf einmal durchgeführt wird, wobei nachfolgende Spuren in den Cachespeicher übertra-,
gen werden, falls vorher übertragene Spuren vom Hauptrechner aμfgerufen werden.
5. Verfahren zur Verbesserung der Leistungsfähigkeit
eines Datenverarbeitungssystemtyps, der einen über eine Kanaleinrichtung mit einer Langzeitdatenspeichereinrichtung
verbundenen Hauptrechner aufweist, wobei
.. 5 der Hauptrechner Befehle ausgibt, die in der Langzeitdatenspeichereinrichtung
gespeicherte, spezielle Datenaufzeichnungen aufrufen, dadurch gekennzeichnet,
- daß man jeden einzelnen, vom Hauptrechner stammenden Befehl überprüft, der eine spezielle Datenaufzeichnung
sucht, um zu überprüfen, ob die derart aufgerufenen Daten in einer außerhalb des Kanals vorgesehenen
Festkörper-Speichereinrichtung abgespeichert sind, wobei man die Daten zum Hauptrechner überträgt,
falls die Daten in der Festkörper-Speichereinrichtung abgespeichert sind,
- daß man, falls die Daten nicht in der Festkörper-Speichereinrichtung
abgespeichert sind, zu diesen Daten über die Langzeitdatenspeichereinrichtung Zugriff
nimmt und diese Daten über die Kanaleinrichtung zum Hauptrechner leitet und die Folge von Befehlen
überprüft, die durch die Daten von der Langzeitdatenspeichereinrichtung zu dem Hauptrechner übertragen
werden, um zu bestimmen, ob die Aufzeichnung eine
25 einer Folge derartiger Aufzeichnungen ist und
- daß man, falls die Bestimmung anzeigt, daß die Aufzeichnung eine Aufzeichnung einer derartigen Folge
ist, die nächste Aufzeichnung in dieser Folge in der Erwartung, daß diese vom Hauptrechner aufgerufen
wird, von der Langzeitspeichereinrichtung in die Festkörperspeiehereinrichtung einliest.
6. Verfahren nach Anspruch 5, dadurch gekennzeichnet, daß die Anzeige, daß eine bestimmte
Aufzeichnung eine einer Folge ist, durch Prüfung der Befehle für die Indikatoren erfolgt, die anzeigen, daß
- 5 die Daten nicht Teil einer solchen Folge sind.
7. Verfahren nach Anspruch 6, dadurch gekennzeichnet , daß die Daten auf Magnetplattenlaufwerkseinrichtungen
gespeichert werden, wobei die Magnetplatten in Spuren organisiert sind,und daß die Indikatoren,die
anzeigen, daß eine betimmte Aufzeichnung nicht Teil einer Folge derartiger Aufzeichnungen ist,
Befehle einschließen, wodurch Aufzeichnungen, die nicht
auf der gleichen Spur der gleichen Magnetplatte vorliegen, dem Hauptrechner zugeführt werden.
8. Verfahren nach Anspruch 5, dadurch gekennzeichnet, daß die Aufzeichnungen auf Langzeitspeichereinrichtungen
gespeichert sind, die MagnetplattenlaufWerkeinrichtungen
aufweisen, die zu Spuren organisierte Daten abspeichern und daß die Daten
von der Langzeitspeichereinrichtung in die Festkörper-Speichereinrichtung
Spur um Spur eingelesen werden.
9. Verfahren zur Steuerung der Abspeicherung digitaler Daten in eine Speichereinrichtung, die Langzeitmagnet-
speiehereinrichtungen und Festkörper-Speichereinrichtungen
mit schnellerem Zugriff aufweist, wobei die Festkörperspeichereinrichtung Daten, die in der Langzeitspeichereinrichtung
gespeichert waren, auf die Anzeige hin aufnimmt, daß diese Daten voraussichtlich
vom Hauptrechner abgerufen werden, wobei die Anzeige
aus der Überprüfung der Befehle abgeleitet wird, durch die in der Langzeitspeichereinrichtung gespeicherte Daten
vorher vom Hauptrechner abgerufen wurden.
10. Verfahren nach Anspruch 9, dadurch gekennzeichnet, daß die Überprüfung die Bestimmung
einschließt, ob die Befehle zum Lesen der vorher aufgerufenen Daten Instruktionen zum Lesen anderer, nicht
sequentiell in der Langzeit-Speichereinrichtung abgespeicherter Daten aufweisen.
11. Datenverarbeitungssystem mit einem Hauptrechner und einem Datenspeichersubsystem, wobei der Hauptrechner
mit dem Datenspeichersubsystem über einen Kanal in Verbindung steht, dadurch gekennzeich-■:
net, daß das Datenspeichersubsystem folgende Elemente
umfaßt:
- einen mit dem Kanal (12) in Verbindung stehenden Interpolator (16),
- ein mit dem Interpolator (16) in Verbindung stehendes
Steuermodul (18) sowie
- mit dem Steuermodul (18) in Verbindung stehende Plattenlauf Werkeinrichtungen (14, 14),
wobei über den Kanal Signale zum Interpolator zur Steuerung des Datenspeichersubsystems geschickt werden
und wobei die Signale kein Signal einschließen, das anzeigt, ob eine spezielle Datenzugriffsanforderung
des Hauptrechners eine Anforderung einer Folge derartiger
Anforderungen ist, die auf einen einzigen Teil
einer einzigen Magnetplatte gerichtet sind,
und daß das Datenspeichersubsystem weiter folgende Element umfaßt:
- eine Festkörper-Cachespeichereinrichtung (22) zur ' Speicherung von Daten, wobei die Cachespeichereinrichtung
mit dem Interpolator (16) in Verbindung steht, über den der Cachespeicher Daten von der MagnetplattenlaufWerkeinrichtung
empfangen kann und über den der Cachespeicher Daten über den Interpolator an den Kanal zur Übertragung zum Hauptrechner
(10) abgeben kann, und
- eine Cacheverwaltereinrichtung (24) zur Steuerung des Betriebs der Cachespeichereinrichtung (22), wobei
der Cacheverwalter die Folge von Signalen überprüft, die vom Hauptrechner über den Kanal zum Interpolator
bei der Durchführung eines Datenzugriffsvorganges geschickt werden und anhand dieser Signale bestimmt,
ob eine spezielle Datenzugriffsanforderung
wahrscheinlich eine einer Reihe derartiger Datenzugriff sanforderungen ist, die auf einem einzelnen Bereich
einer der Magnetplatten gerichtet ist, und da-0 für sorgt, daß vom Hauptrechner nicht aufgerufene Daten
von der Magnetplatte über den Interpolator in den Festkörper-Cachespeicher zur Speicherung übertragen
werden, nachdem die Bestimmung erfolgt ist, daß eine bestimmte Datenzugriffsanforderung als eine einer
Folge derartiger Anforderungen erscheint, die auf einen einzigen Bereich einer Magnetplatte gerichtet
ist. ■ . '
12. Verfahren zum Steuern eines Datenflusses zwischen einem Hauptrechnertyp, der eine vorbestimmte Serie von DatentloBbefehlen
ausgibt, und einem Spei ehersubsystem,wobei
die Datenflußbefehle keine Anzeige dafür einschlie-Ben,
ob eine bestimmte Datenanforderung eine einer FoI-
ge derartiger Anforderungen ist oder nicht, und wobei
das Subsystem MagnetplattenlaufWerkeinrichtungen, eine
Steuermoduleinrichtung, eine Speicherinterpolatoreinrichtung, eine Festkörper-Cachespeichereinrichtung sowie
eine Cacheverwaltereinrichtung aufweist, dadurch
gekennzeichnet,
■■'■■- daß man auf die vom Hauptrechner abgegebene Serie
• von Befehlen reagiert,
- daß man diese Serie von Befehlen überprüft, um zu
bestimmen, ob irgendeine Datenanforderung wahrscheinlich
eine einer Serie derartiger Anforderungen ist,
- daß man eine erste Menge an Daten, die vom Hauptrechner nicht abgerufen werden, von den Magnetplattenlauf-Werkeinrichtungen
zu den Cachespeichereinrichtungen überträgt, und zwar in Erwiderung auf jede Datenanforderung
hin, ungeachtet des Ergebnisses der Bestimmung und
- daß man eine zweite, relativ kleine Menge an Daten von der Magnetplattenlaufwerkeinrichtung zur Cachespeichereinrichtung
überträgt, falls die Bestimmung anzeigt, daß diese Anforderung wahrscheinlich eine
einer Serie derartiger Anforderungen ist.
1W
13. Verfahren nach Anspruch 12, dadurch gekennzeichnet , daß die erste Menge an Daten höchstens
einer Magnetplattenspur und die zweite Menge an Daten wenigstens einer Magnetplattenspur entspricht.
14. Verfahren zum Steuern eines Cachespeichersubsystems, das an einen Hauptrechner anschließbar ist, dadurch
gekennzeichnet , daß das Subsystem eine
Festkörper-Cachespeichereinrichtung und eine Cacheverwaltereinrichtung
aufweist, wobei der Cachevervalter Signale überprüft, die zwischen dem Hauptrochner und
einem Speicherinterpolator verlaufen und Cach'esteuersignale
abgibt, um den Datenfluß von einer Magnetplattendatenspeichereinrichtung
über den Interpolator in die Cachespeichereinrichtung und den Datenfluß von der Cachespeichereinrichtung über den Interpolator zum
Hauptrechner zu steuern, wobei der Cacheverwalter die vom Hauptrechner während der Befriedigung einer Hauptrechner-Leseanforderung
abgegebenen Steuersignale überprüft und nach Erledigung der Anforderung anhand der
Signale bestimmt, ob diese Anforderung wahrscheinlich eine einer Folge derartiger Anforderungen ist, und
falls dies der Fall ist, den Fluß zusätzlicher, nicht vom Hauptrechner abgerufener Daten in die Cachespeichereinrichtung
steuert, und zwar in Erwartung von Anforderungen nach derartigen zusätzlichen Daten seitens
des Hauptrechners.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US06/441,901 US4536836A (en) | 1981-11-27 | 1982-11-15 | Detection of sequential data stream |
Publications (1)
Publication Number | Publication Date |
---|---|
DE3390323T1 true DE3390323T1 (de) | 1985-07-11 |
Family
ID=23754749
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE19833390323 Withdrawn DE3390323T1 (de) | 1982-11-15 | 1983-11-14 | Ermittlung eines sequentiellen Datenstroms |
DE8383306969T Expired - Fee Related DE3381298D1 (de) | 1982-11-15 | 1983-11-15 | Betriebsverfahren fuer eine rechneranordnung. |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE8383306969T Expired - Fee Related DE3381298D1 (de) | 1982-11-15 | 1983-11-15 | Betriebsverfahren fuer eine rechneranordnung. |
Country Status (6)
Country | Link |
---|---|
US (1) | US4536836A (de) |
EP (1) | EP0109309B1 (de) |
CA (1) | CA1203320A (de) |
DE (2) | DE3390323T1 (de) |
GB (1) | GB2140596B (de) |
WO (1) | WO1984002014A1 (de) |
Families Citing this family (37)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4724518A (en) * | 1983-07-29 | 1988-02-09 | Hewlett-Packard Company | Odd/even storage in cache memory |
US4638424A (en) * | 1984-01-12 | 1987-01-20 | International Business Machines Corporation | Managing data storage devices connected to a digital computer |
DE3854902T2 (de) * | 1987-02-13 | 1996-08-14 | Ibm | Datenverarbeitungsverfahren und -system zum Zugreifen auf rotierende Speichermittel |
JPH0650479B2 (ja) * | 1987-02-13 | 1994-06-29 | インターナシヨナル・ビジネス・マシーンズ・コーポレーシヨン | データ処理装置 |
US5136692A (en) * | 1987-02-13 | 1992-08-04 | International Business Machines Corporation | Memory disk buffer manager |
US4972316A (en) * | 1987-03-30 | 1990-11-20 | International Business Machines Corporation | Method of handling disk sector errors in DASD cache |
US4882642A (en) * | 1987-07-02 | 1989-11-21 | International Business Machines Corporation | Sequentially processing data in a cached data storage system |
JPH01194006A (ja) * | 1988-01-29 | 1989-08-04 | Fanuc Ltd | フロッピィディスク駆動用モータの制御装置 |
US5060142A (en) * | 1988-05-20 | 1991-10-22 | Menon Moothedath J | System which matches a received sequence of channel commands to sequence defining rules for predictively optimizing peripheral subsystem operations |
US5253351A (en) * | 1988-08-11 | 1993-10-12 | Hitachi, Ltd. | Memory controller with a cache memory and control method of cache memory including steps of determining memory access threshold values |
JP2637788B2 (ja) * | 1988-09-02 | 1997-08-06 | 株式会社日立製作所 | ディスクキャッシュ制御方式および情報処理システム |
US5257370A (en) * | 1989-08-29 | 1993-10-26 | Microsoft Corporation | Method and system for optimizing data caching in a disk-based computer system |
US5045940A (en) * | 1989-12-22 | 1991-09-03 | Avid Technology, Inc. | Video/audio transmission systsem and method |
AU634354B2 (en) * | 1990-08-31 | 1993-02-18 | Sun Microsystems, Inc. | Method and apparatus for predictive caching |
WO1992015053A1 (en) * | 1991-02-19 | 1992-09-03 | International Business Machines Corporation | Data transfer within a data storage subsystem |
US5659713A (en) * | 1992-04-24 | 1997-08-19 | Digital Equipment Corporation | Memory stream buffer with variable-size prefetch depending on memory interleaving configuration |
US5581784A (en) * | 1992-11-17 | 1996-12-03 | Starlight Networks | Method for performing I/O's in a storage system to maintain the continuity of a plurality of video streams |
JP3737528B2 (ja) * | 1993-06-30 | 2006-01-18 | インテル・コーポレーション | フラッシュ・メモリ・デバイス、それのページ・バッファー資源の割り当てをする方法および回路 |
US5701450A (en) * | 1994-02-25 | 1997-12-23 | Seagate Technology, Inc. | System including ATA sequencer microprocessor which executes sequencer instructions to handle plurality of real-time events allowing to perform all operations without local microprocessor intervention |
US5732239A (en) * | 1994-05-19 | 1998-03-24 | Starlight Networks | Method for operating a disk storage system which stores video data so as to maintain the continuity of a plurality of video streams |
US5802394A (en) * | 1994-06-06 | 1998-09-01 | Starlight Networks, Inc. | Method for accessing one or more streams in a video storage system using multiple queues and maintaining continuity thereof |
JPH08328752A (ja) * | 1994-06-10 | 1996-12-13 | Canon Inc | 情報記録装置及び方法 |
US5627994A (en) * | 1994-07-29 | 1997-05-06 | International Business Machines Corporation | Method for the assignment of request streams to cache memories |
US5649153A (en) * | 1995-06-19 | 1997-07-15 | International Business Machines Corporation | Aggressive adaption algorithm for selective record caching |
US5867685A (en) * | 1995-08-29 | 1999-02-02 | Storage Technology Corporation | System and method for sequential detection in a cache management system |
US5732256A (en) * | 1995-08-30 | 1998-03-24 | Microsoft Corporation | CD-ROM optimization and stream splitting |
US5862337A (en) * | 1996-07-12 | 1999-01-19 | Microsoft Corporation | Determining throughput dynamically |
US6065100A (en) * | 1996-11-12 | 2000-05-16 | Micro-Design International | Caching apparatus and method for enhancing retrieval of data from an optical storage device |
US6167496A (en) * | 1998-02-18 | 2000-12-26 | Storage Technology Corporation | Data stream optimization system for video on demand |
US7275135B2 (en) * | 2001-08-31 | 2007-09-25 | Intel Corporation | Hardware updated metadata for non-volatile mass storage cache |
US20030074524A1 (en) | 2001-10-16 | 2003-04-17 | Intel Corporation | Mass storage caching processes for power reduction |
US7035978B2 (en) * | 2003-03-11 | 2006-04-25 | International Business Machines Corporation | Method, system, and program for policies for improving throughput in remote mirroring systems |
JP4462852B2 (ja) * | 2003-06-23 | 2010-05-12 | 株式会社日立製作所 | ストレージシステム及びストレージシステムの接続方法 |
US20050138296A1 (en) * | 2003-12-18 | 2005-06-23 | Coulson Richard L. | Method and system to alter a cache policy |
US7380067B2 (en) * | 2004-07-19 | 2008-05-27 | Infortrend Technology, Inc. | IO-stream adaptive write caching policy adjustment |
US7761444B2 (en) * | 2006-10-05 | 2010-07-20 | Hewlett-Packard Development Company, L.P. | Identifying a sequence of blocks of data to retrieve based on a query |
US9069678B2 (en) * | 2011-07-26 | 2015-06-30 | International Business Machines Corporation | Adaptive record caching for solid state disks |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4371927A (en) * | 1977-11-22 | 1983-02-01 | Honeywell Information Systems Inc. | Data processing system programmable pre-read capability |
US4157587A (en) * | 1977-12-22 | 1979-06-05 | Honeywell Information Systems Inc. | High speed buffer memory system with word prefetch |
US4225922A (en) * | 1978-12-11 | 1980-09-30 | Honeywell Information Systems Inc. | Command queue apparatus included within a cache unit for facilitating command sequencing |
US4312036A (en) * | 1978-12-11 | 1982-01-19 | Honeywell Information Systems Inc. | Instruction buffer apparatus of a cache unit |
US4370710A (en) * | 1980-08-26 | 1983-01-25 | Control Data Corporation | Cache memory organization utilizing miss information holding registers to prevent lockup from cache misses |
US4394732A (en) * | 1980-11-14 | 1983-07-19 | Sperry Corporation | Cache/disk subsystem trickle |
US4429363A (en) * | 1981-10-15 | 1984-01-31 | International Business Machines Corporation | Method and apparatus for managing data movements from a backing store to a caching buffer store |
US4468730A (en) * | 1981-11-27 | 1984-08-28 | Storage Technology Corporation | Detection of sequential data stream for improvements in cache data storage |
-
1982
- 1982-11-15 US US06/441,901 patent/US4536836A/en not_active Expired - Fee Related
-
1983
- 1983-11-14 WO PCT/US1983/001772 patent/WO1984002014A1/en active Application Filing
- 1983-11-14 DE DE19833390323 patent/DE3390323T1/de not_active Withdrawn
- 1983-11-14 GB GB08417055A patent/GB2140596B/en not_active Expired
- 1983-11-15 DE DE8383306969T patent/DE3381298D1/de not_active Expired - Fee Related
- 1983-11-15 EP EP83306969A patent/EP0109309B1/de not_active Expired - Lifetime
- 1983-11-15 CA CA000441192A patent/CA1203320A/en not_active Expired
Also Published As
Publication number | Publication date |
---|---|
EP0109309A3 (en) | 1986-06-18 |
CA1203320A (en) | 1986-04-15 |
EP0109309B1 (de) | 1990-03-07 |
GB2140596A (en) | 1984-11-28 |
GB8417055D0 (en) | 1984-08-08 |
US4536836A (en) | 1985-08-20 |
WO1984002014A1 (en) | 1984-05-24 |
GB2140596B (en) | 1987-06-03 |
EP0109309A2 (de) | 1984-05-23 |
DE3381298D1 (de) | 1990-04-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE3390323T1 (de) | Ermittlung eines sequentiellen Datenstroms | |
DE69636330T2 (de) | Verfahren für On-line- und Echzeit-Datenmigration | |
DE69816686T2 (de) | Hochfrequenzabtastung von Leistungszählern | |
DE4220198C2 (de) | Transaktionsverarbeitungsverfahren für einen digitalen Computer und Transaktionsverarbeitungssystem | |
DE69133302T2 (de) | Registerabbildung in einem einzigen Taktzyklus | |
DE60213867T2 (de) | Vorrichtung zur verwaltung von datenreplikation | |
DE3151745C2 (de) | ||
DE4216871C2 (de) | Ausführungsordnen zum Sicherstellen der Serialisierbarkeit verteilter Transaktionen | |
DE602005001041T2 (de) | Speicherauszugssystem | |
DE602005004166T2 (de) | Vorrichtung, system und verfahren zur reinitialisierung einer serialisierung von dateisystemen | |
DE112011102076B4 (de) | Neuordnen des Zugriffs zum Verringern der Gesamtsuchzeit auf Bandmedien | |
DE69738101T2 (de) | Verwaltung des Zugangs zu Objekten mit Hilfe von Referenzen mit drei Zuständen | |
DE3131341C2 (de) | ||
US6651073B1 (en) | Method and apparatus for insuring database data integrity without data recovery logging | |
DE4237417C2 (de) | Datenverarbeitungssystem | |
DE60112257T2 (de) | Virtuelles Dateisystem für dynamisch erzeugte Webseiten | |
DE69833815T2 (de) | Verbesserter Disk-Log mit verteiltem Schreibsystem | |
DE69733305T2 (de) | System/Verfahren zur wirkungsvollen Übermittlung von Datenströmen in einem Multimediasystem | |
DE10234736A1 (de) | System und Verfahren zum Synchronisieren von Mediendaten | |
DE102010050487A1 (de) | Blockverschlüsselungssicherung für ein System aus integriertem Mikrocontroller und externem Speicher | |
CH629901A5 (de) | Verfahren zum steuern einer textverarbeitungseinrichtung beim speichern und lesen von text. | |
EP3084638A1 (de) | Posix-kompatibles dateisystem, verfahren zum erzeugen einer dateiliste und speichervorrichtung | |
DE102013204414A1 (de) | Daten-Cachespeicherblock-Freigabeanforderungen in einer Cachespeicherhierarchie mit mehreren Ebenen | |
DE602004007925T2 (de) | Verwalten einer beziehung zwischen einem zielvolumen und einem quellenvolumen | |
DE10006430A1 (de) | Verbessertes Kohärenzprotokoll für einen Computer-Cache |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8130 | Withdrawal |