DE3390323T1 - Ermittlung eines sequentiellen Datenstroms - Google Patents

Ermittlung eines sequentiellen Datenstroms

Info

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
Application number
DE19833390323
Other languages
English (en)
Inventor
Ronald L. Boulder Col. Blickenstaff
Richard L. Stanford Calif. Coulson
P. David Dodd
J. Robert Boulder Col. Moreno
Brian E. Lafayette Col. Trede
Original Assignee
Storage Technology Corp., Louisville, Col.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Storage Technology Corp., Louisville, Col. filed Critical Storage Technology Corp., Louisville, Col.
Publication of DE3390323T1 publication Critical patent/DE3390323T1/de
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0888Addressing 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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B20/18Error detection or correction; Testing, e.g. of drop-outs
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B20/18Error detection or correction; Testing, e.g. of drop-outs
    • G11B20/1883Methods for assignment of alternate areas for defective areas
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6026Prefetching based on access pattern detection, e.g. stride based prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6028Prefetching based on hints or prefetch instructions
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B2020/10916Seeking data on the record carrier for preparing an access to a specific address
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B2220/00Record carriers by type
    • G11B2220/20Disc-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.
Zusammenfassung der Erfindung
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.
Kurze Beschreibung der Zeichnungen
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.
Beschreibung der bevorzugten Ausführungsbeispiele
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. β T- ο £ O E Φ O T) TJ* L φ £ £ C Φ 4-1 φ τ- 0 τ. O) C5
i ο • O 4·· .
υ
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- ■— ί. Ο (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 φ α 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 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 τ- 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 **
END CHANNEL PROGRAM PROCESSING
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
P1ROGRAM; MDFGOD01
PAGE
EC CMGR0004
ADDR INST
*■♦■ MICROCODE ASSEMBLE« 6.8 OB/16/82 PROGRAM: MOFGDDO1
15:47:21 ·· PAGE
ENO CHANNEL PROGRAM PROCESSING MACROS USED:
♦ 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
Stage Determination - 3 Random Deallocation Determination - 3 Random Take Statistics Dequeue Stage Save the IRG Call a Module Block Trace Change the IRG Restore the IRG Return to CaIler R/R Space Management Status (SST) R/W DtD Status Table (DST) R/W Cache Manager Status (CST) Register Group Pointer
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
END OF SPECIFICATIONS
♦({{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
PROGRAM: MDFGDDO1
PAGE
EC CMGR0004
*♦ MICROCODE ASSEMBLER 6.8 08/16/82 PROGRAM: MDFGDDOI
15:47:21 **
END CHANNEL PROGRAM PROCESSING
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
PROGRAM: MOFGDDOI
PAGE
EC CMGROOO4
♦· MICROCODE ASSEMBLER 6.8 08/16/82 15:47:21 ♦* PROGRAM: MDFGDDOI
ENO CHANNEL PROGRAM PROCESSING
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
END CHANNEL PROGRAM PROCESSING
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
INCLUDE Update Statistics CALL Deallocation For Data Integrity
PASS: none
RECEIVE: none UCALLSEG MDFGD0S2 BAL MDFGDDS2 USETIRG IRG SECD PL2 SECD
IRG » IRG~. XFO
IRG · IRG / X02
UCALLMOD MDFGDDS1
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
SELECT on algorithm specified (SST) DO-WHEN 'Basic' algorithm specified
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
PROGRAM: MOFGDDOI
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
♦RESTORE TO PL2 ♦SEO STAGE DETERMINATION
♦BAL INSTR TO CALL ROUTINE
♦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
♦BAL INSTR TO CALL ROUTINE
♦ADDRESS OF CALLED MODULE
♦RESTORE TO PL2
♦RND STAGE DETERMINATION
♦BAL INSTR TO CALL ROUTINE
♦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
END CHANNEL PROGRAM PROCESSING
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
PROGRAM: MOFGODO1
PAGE
.8
EC CMGR0004
·♦ MICROCODE ASSEMBLER 6.θ 08/16/82 15:47:21 ♦♦ PROGRAM: MOFGDDO1
END CHANNEL PROGRAM PROCESSING
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
REFERENCE ADDRESSES
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
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
REFERENCE ADDRESSES
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
PROGRAM: MDFGDDO1
1
DMRB14 CHINOOK PROLOG ANO PSEUDO-CODE CONVENTIONS
FROM: RON BLICKENSTAFF BRIAN TREDE
CC: CHINOOK Group DATE: 11/14/80 LATEST REVISION: 08/12/82
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
♦♦«♦***·
* >(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
DESCRIPTION/PARAMETERS
* 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
Into the Chinook design specification. The TITLE Is used by the assembler to assign a title to each
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 ;
WHAT the module does. This Includes a description
of all the major functions provided to the caller.
Avoid providing details of how the functions are ■
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.
Avoid confusing the more global concepts of input
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 tube. However there may not be any parameters ( p>
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
Operational Description should give the reader an
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 of this module.
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
Activity is meant to be used whenever a change Is ,*'"',
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
Activity section should obviously be filled In as the
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
PAGE 6
But -- Initialize the Status Table to zeros (xOO) Not -- Initialize the print buffer
But -- Initialize the print buffer to blanks (x40)
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
IF the enable/disable switch Is disabled
THEN-DO for disabled
Set the 'disable' flag on
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
IF the enable/disable switch Is disabled
THEN-DO for disabled
Set the 'disable' flag on
Setup to notify the cache director
END-THEN for disabled
ELSE-DO for enabled
Set the 'enable' flag on
Setup to continue
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
Reset the 'deselection reset' flag
Reset the 'check 1 reset' flag
END-ELSE for general reset .
KjJ CO CO O
. page 9
LOOPS
Keywords:
DO-WHILE
END-WHILE
DO-UNTIL
ENO-UNTIL
WAIT
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
OTHERWISE (NULL) ■ DO-OrHERWISE END-OTHERWISE
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
If there are only two options then a simple IF,THEN, ELSE, *o
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: · ' .''.'.
SELECT on tag DO-WHEN a poll command - tag 02 >.,, CALL Pol 1 module ; PASS: tag, command ■ · >> RECEIVE: Bus-In-VaVue ;'■· Set response In bus-In · ■ \ ·
Send response END-WHEN for poll command - tag 02
WHEN read or write command - tags OE or OF ' ', I CALL the Space Management module ■ ' {j$ 1! ' PASS: Tag-Value, Command-Value, Data-Length, Parms-Byte _ -». RECEIVE: Return-Code, Status-Byte. Data-Received Υτ WHEN read or write diagnostic command - tag OC or OD ^" CALL the Diagnostic Management module CD PASS: Tag-Value, Command-Value, Data-Length, Parms-Byte ^4) RECEIVE: Return-Code, Status-Byte, Data-Received ^0 OTHERWISE for an Invalld tag
Set Return-Code (output) for an Invalid tag END-SELECT on tag
PAGE 11·
LINKAGE
Keywords:
ENTRY '
CALL
PASS:
RECEIVE:
TRANSFER ■ . :
(PARM LIST:)
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
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)
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
EC CMTROOCM
♦* MICROCODE ASSEMBLER G.β 08/16/82 13:54:06 ** PROGRAM: MDFGDDSI
DEALLOCATION FOR DATA INTEGRITY
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
INTERNAL ITEMS NAME DESCRIPTION/PARAMETERS
* 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ΟΟ
*({{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
DEALLOCATION FOR DATA INTEGRITY
STATEMENT **.*****.·*·**·*· END OF SPECIFICATIONS
STMT » {({01040 104
EC CMGR0004
PROGRAM: MDFGDDS1
EC CMGR0OO4
** MICROCODE ASSEMBLER β.β 08/16/82 13:54:06 *♦ PROGRAM: MDFGDDS1
DEALLOCATION FOR DATA INTEGRITY
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
DEALLOCATION FOR DATA INTEGRITY
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
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
FLAGO.CACHRERR.LABEL WHEN2
LABEL
ADDRESSH
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
UCALLMOD MDFGDSA5
DC CALLMOD
DA MDFGDSA5
OH RETFLAG.NOTFOUND,HALTI
B WHEN2
UHALT HALT X60 OH MIC,BTRCBIT,TLAB0003 DC TRACEMOD
DB XFF,X60
TLAB0003 PO » XOO
P1 - X60
P2 « $CCT_TABL
P0P1 > (P2..:CCT_HERR) XBP - XBP / SWBANK1 MDR ■ MDR / XIO
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
DEALLOCATION FOR DATA INTEGRITY
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
<( {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
REFERENCE ADDRESSES
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
REFERENCE ADDRESSES
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
PROGRAM: MDFGDDS1
PAGE

Claims (14)

Patentansprüche:
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.
DE19833390323 1982-11-15 1983-11-14 Ermittlung eines sequentiellen Datenstroms Withdrawn DE3390323T1 (de)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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