DE2926343A1 - Einrichtung zum anschalten einer datenverarbeitungsanlage an ein magnetspeichersystem - Google Patents

Einrichtung zum anschalten einer datenverarbeitungsanlage an ein magnetspeichersystem

Info

Publication number
DE2926343A1
DE2926343A1 DE19792926343 DE2926343A DE2926343A1 DE 2926343 A1 DE2926343 A1 DE 2926343A1 DE 19792926343 DE19792926343 DE 19792926343 DE 2926343 A DE2926343 A DE 2926343A DE 2926343 A1 DE2926343 A1 DE 2926343A1
Authority
DE
Germany
Prior art keywords
data
memory
disk
address
cdp
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
DE19792926343
Other languages
English (en)
Inventor
Kenneth Ronald Hawley
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Bunker Ramo Corp
Original Assignee
Bunker Ramo Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Bunker Ramo Corp filed Critical Bunker Ramo Corp
Publication of DE2926343A1 publication Critical patent/DE2926343A1/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
    • 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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list

Description

Beschreibung
Die Erfindung bezieht sich auf eine Verbesserung in Informationsmanagementsystemen, insbesondere auf eine Einrichtung zum Optimieren des Durchsatzes derartiger Systeme, die Magnetplattenspeicher als Hilfsspeicher für Daten verwenden.
An über der ganzen Erde verstreuten Orten sind flexible und leistungsfähige, durch einen Rechner gesteuerte Datenbehandlungs- und -Steuersysteme entwickelt und zum Einsatz gebracht worden. Ein derartiges System besteht aus mehrfachen AN/GYQ-21(V)-Einheiten interaktiver Analysesysteme, die für die automatische Datenbehandlung und -steuerung von aus mehreren Quellen stammender Nachrichteninformation sowie zum Steuern von Daten ausgelegt wurden. Diese Systeme beinhalten folgende fünf grundlegende Funktionen:
Nachrichtensteuerung, -speicherung und -verteilung; interaktive Analyseunterstützung sowie analytische Hilfe;
Mehrfachkanalkommunikation und mehrschichtige Kommunikation ;
spezielle Unterstützung durch Computerzeichnungen und -anzeigen;
Unterstützung bei der Vorbereitung von Dokumenten und Berichten.
Jede Einheit besteht aus einer Zentraleinheit (CPU), einer Großdatei, programmierbaren KommunikationsSteuerungen und Echtzeit-BetriebsSoftware. An einem Ort sind Einheiten miteinander verbunden, um so eine einzelne Betriebsgesamtheit zu bilden, wobei jede Einheit die ihr zukommenden Aufgaben zu dem Betrieb des Gesamtsystems beisteuert. Diese Technik der "verteilten Verarbeitung" gestattet es, daß jede Einheit gleichzeitig mit anderen Einheiten Berechnungen vornimmt, auf ihre eigenen Daten sowie auf die Daten anderer Einheiten nach einem Prioritätssystem zugreift, wodurch sich eine effektive Leistung ergibt, die die Leistung der meisten Großsysteme übersteigt. Ändern sich die durch die Arbeitsbelastung bedingten Anforderungen, so können Einheiten entfernt oder neue Einheiten hinzugefügt werden -90988 3/0773
An manchen Orten sind die Einheiten an digitale Haupt-Großrechner angeschlossen. In einem solchen Fall arbeitet das System als Vorrechner, um die Hauptrechner besonders von den Arbeiten zu entlasten, die mit den Schnittstellen zu externen Systemen in Verbindung stehen. In Kombination mit Tastatur/ Anzeige-Terminals, große Wandanzeigeeinrichtungen, liefert das System eine automatische Unterstützung der Anwender bei der Wahrnehmung ihrer Aufgaben. Dies geschieht durch einen direkten interaktiven Dialog zwischen dem Terminal-Benutzer und einem weltweiten Netzwerk ähnlicher Systeme und Datenbanken. Der Benutzer ist in der :Lage, sehr rasch Daten von anderen und ähnlich ausgestatteten Stellen auf der Erde zu empfangen, zu übertragen und zur Anzeige zu bringen. Darüber hinaus weist das System verschiedenartige Verfahren zur Kommunikation mit dem Benutzer bei der Manipulation, Verschmelzung und Auswertung von Daten auf. Über die Tastatur und Anzeigeeinrichtungen liefert das System:
Statusangaben, laufende Ereignisse und anhängige Aktionen über automatische Abfrage von Datenbanken sowie Beurteilung von Nachrichten;
Daten in Form von zwischen Terminals übertragenen Nachrichten, Standard-Datenformate, freier Text aus historischen Dateien und Literaturverzeichnissen, sowie rechnergenerierte Grafiken;
verfahrensmäßige Hilfen beim Ausfüllen von Anzeige-Schemata, rechnergelenkte Weckvorgänge und Aufbereitungen; Betriebsrückkopplung von Bedieneraktivitäten zu dem System in Form von angezeigten Bemerkungen; Alarme, um die Aufmerksamkeit des Bedieners auf kritische Ereignisse oder Nachrichten zu lenken; spezielle Betriebsleistungen, wie beispielsweise TeIe-Konferenzschaltungen, automatisches Rückrufen, umfangreiche Nachrichtenübertragung an individuelle Adressen, oder Prioritätsabgabe, entfernte Programmeingabe, zeitlich verzahntes Arbeiten, automatische Protokoll- und Report-Gener ierung.
909883/0773
In einem typischen Anwendungsfall eines solchen Systems liegt eine hohe Datenübertragungs-Verarbeitungsbelastung, umfangreicher Online-Datenbankbetrieb und eine hochentwickelte Unterstützung einer großen Analyse-Terminalbesetzung vor. Viele Systeme sind Teil verteilter Prozessor-Ausbaustufen mit drei bis zehn Systemen, von denen jedes eine Online-Datenbank mit in "der Größenordnung von Milliarden liegenden Zeichen aufweist. Zu Beginn traten bei einigen dieser Systeme Schwierigkeiten aufgrund uneffizienter Ausnutzung der Hardware und Software sowie andere Entwurfsprobleme auf, die zur vorschnellen Auslastung des Systems und mangelnder Ansprechempfindlichkeit führten. Es wurde jedoch gezeigt, daß diese Probleme durch sinnvollere und bessere Ausnutzung der Systemelemente überwunden werden können. Untersuchungen in dieser Richtung brachten die Faktoren zutage, die die Leistungsfähigkeit des Systems bei diesen Anwendungen beschränken, und sie wiesen hin auf die nächste bedeutende Systemverbesserung. Bei diesen leistungsbeschränkenden Faktoren handelt es sich um die Hauptspeicherverwendung und die Platten-Zugriffszeit .
Es wurden verschiedene herkömmliche Lösungen dieses Problems untersucht, und es wurde herausgefunden, daß sie bei weitem nicht das Optimum darstellen. Sind die Leistungsbeschränkungen lediglich durch die Tatsache begründet, daß die Speicherkapazität zu niedrig ist, so besteht eine Lösung erst einmal darin, zusätzlich eine große Zentraleinheit, wie beispielsweise eine PDP 11/70 zu der System-Prozessorfamilie mit zwei Millionen Wort Speicherkapazität hinzuzufügen. Das System liefert eine Reihe von Ansatzpunkten, durch die Kompromisse zwischen zusätzlicher Speicherkapazität und verminderten Platten-Zugriffsverzögerungen erzielbar sind. Sind solche Maßnahmen auch wirksam bei der Herabsetzung von Verzögerungen bei dem Laden'von System-Tasks, so haben sie jedoch nur beschränkten Wert bei Mehrfach-Benutzersystemen mit großer Datenbank. In derartigen Systemen ist stets eine große Anzahl unterschiedlicher Dateien aktiv, und der Preis, der notwendig ist, in einem Notizblockspeicher die sich ergebenden großen Zahlen von hauptspeicherresidenten Adreßbüchernj. Indizes und Dateivorsätzen bei der Verwendung derartiger Techniken bereitzuhalten, verbietet Maß-
909883/0773
nahmen in dieser Richtung.
Eine zweite üblicherweise Verwendung findende Technik sieht sowohl feste als auch bewegliche Kopfplatten in einer hierarchischen Anordnung von Speichermedien mit progressiv ansteigender Zugriffsgeschwindigkeit jedoch kleinerer Kapazität vor. Durch diese Technik wird die durch die oben erwähnte große PDP 11/70 erreichte Leistungsfähigkeit annähernd verdoppelt, und es ergeben sich dieselben Beschränkungen. Aufgrund der kleinen Kapazität (500K Wörter) kann nur ein Bruchteil der gleichzeitig aktiven Dateien in dem Notizblockspeicher abgespeichert werden. Darüber hinaus würde die Benutzungsfrequenz jedes Blocks in der Datei mit Ausnahme der Systemdateien (Tasks, Abbildungen, usw.) nicht den Verarbeitungsüberhang rechtfertigen, der für den anfänglichen Datentransfer zwischen Hauptdatenbank und Zwischenspeichermedium notwendig ist. Eine solche Technik wäre lediglich effektiv, um eine bevorzugte Behandlung eines sehr kleinen Satzes von Dateien auf einer halbpermanenten Basis zu schaffen. Darüber hinaus wäre noch mit Gesamt-Zugriffsverzögerungen von zehn bis zwanzig Millisekunden zu rechnen. Eine Variante dieser Technik verwendet Vertauschungen großer Datenmengen für die Festkopf-Platteneinheiten. Dies bietet den Vorteil wesentlich geringerer Zugriff sver zöger ungen, nachteilig sind jedoch die Beschränkungen hinsichtlich der Kapazität.
Die durch die vorliegende Erfindung geschaffene Lösung ähnelt in funktioneller Hinsicht den oben erwähnten herkömmlichen Lösungen, jedoch mit wenigstens einem bedeutenden Unterschied. Obschon ein Schreib/Lese-Speicher begrenzter Speicherkapazität Verwendung findet, erfolgt diese Verwendung in hohem Maße selektiv und auf der Grundlage von vorhersagbaren Anforderungen an die auf der Platte vorhandenen Daten sowie von dynamisch vorgegebenen Prioritätskriterien. Die Erfindung macht sich bestimmte Eigenschaften, die Datei-Managementsystemen anhaften, zunutze, um den Bedarf an einem Speicher mit schnellem Zugriff zu minimieren, wie er erforderlich ist, um seine Funktion zu
908883/0773
erfüllen. Im Ergebnis werden für jede Benutzertransaktion nur jene Datenblöcke, die tatsächlich zur Verarbeitung anstehen, in einem Speicher mit schnellem Zugriff notiert, die Platten-Transaktionen werden in Form von umfangreicheren und effizienteren Mehrblock-Transfers durchgeführt.
Es ist ein Ziel der vorliegenden Erfindung, den Durchsatz und die Ansprechempfindlichkeit einer Datenverarbeitungsanlage, die einen Plattenspeicher verwendet, zu erhöhen. Weitere Ziele der Erfindung sind: das vorausgehende Zugreifen der am häufigsten benutzten Plattendaten und Speichern dieser Daten in einem schnellen Schreib/Lese-Speicher (RAM), das Vermeiden von in kurzen Zeiträumen wiederholten Lesevorgängen betreffend dieselben Plattendaten, und das Wiederauffinden von Mehrdateidaten pro Plattenzugriff, ohne daß ein größerer Pufferspeicher für die Platte erforderlich ist. Diese und andere Ziele der Erfindung werden in einem bevorzugten Ausführungsbeispiel von einer programmierbaren Steuereinheit erreicht, die zwischen einem oder mehreren Plattenspeicher-Subsystemen und einer Datenverarbeitungsanlage angeordnet ist, die einen Hauptspeicher und wahlweise eine Zentraleinheit aufweist. Die Steuereinheit ist in der Lage, auf einen kleinen Prozentsatz der Plattendaten vorab zuzugreifen und diese Daten in einem RAM zu speichern, indem ein dynamisches Verfahren für den Transfer von Datenblocks zwischen einer Platte und dem RAM verwendet wird, wobei kontinuierlich bestimmt wird, welche Daten in den RAM zu speichern sind, indem zu Beginn sämtliche Daten, die in Einzel-Blockinkrementen gelesen werden, gespeichert werden, um anschließend zu bestimmen, welche Daten zurückgehalten werden. Diese Bestimmung erfolgt auf der Grundlage der "Zwischengeschichte" bezüglich der Brauchbarkeit der Daten. Bei dem dynamischen Verfahren hat jeder Plattenzugriff auf einen Datenblock zur Folge, daß eine vorgegebene Zahl nachfolgender Blöcke (zum Beispiel vier Blöcke) ebenfalls in den RAM eingelesen werden, und zwar in der Erwartung, daß auf diese Blöcke als nächstes zugegriffen wird. Wenn auf diese Daten in dem RAM zugegriffen wird, so werden sie erneut eingegeben. Die Steuereinheit hält ein Adreßbuch bezüglich der festgehaltenen Daten und bestimmt immer dann, wenn neue Datenblöcke aus dem Plattenspeicher gelesen werden,
909883/0773
welche Daten entfernt werden. Zu Beginn werden sämtliche gelesenen Daten in dem RAM festgehalten, bis die gesamte Speicherkapazität des RAM ausgenutzt ist. Dann veranlaßt die Steuereinheit auf der Grundlage vorgegebener Parameter, die die am wenigsten brauchbaren Daten festlegen, daß auf neue Daten des Plattenspeichers zugegriffen wird, welche die am wenigsten brauchbaren (in dem RAM) notierten Daten ersetzen. Die Zentraleinheit kann periodisch die bei der Bestimmung der am wenigsten brauchbaren Daten verwendeten Parameter modifizieren, um die größte Effektivität bei der Verwendung des RAM zu erzielen, und zwar unabhängig von der Art der Systemaktivität. Grundsätzlich hält das Programm in der Steuereinheit ein FIFO-Adreßbuch mit Neueintragung (FIFO-Speicher: die zuersteingegebenen Daten verlassen den Speicher auch zuerst), in welchem Einträge von dem RAM wie auch von dem Plattenspeicher am Ende des als Austauschschlange verwendeten Adreßbuchs eingetragen werden, während andere Einträge zum Kopf des Adreßbuchs fortschreiten und entfernt werden. Häufig aufgerufene und neu eingetragene Blökke verbleiben somit länger in dem RAM. Tatsächlich kann ein über unbestimmte Zeit häufig verwendeter Datenblock praktisch unbeschränkt lange festgehalten werden. Es kann eine Vielzahl von Initialisierungs- und Zurückhaltungsfaktoren verwendet und aktualisiert werden, um die Zurückhaltungszeit zu variieren. So zum Beispiel können innerhalb einer Anzahl aufeinanderfolgender Zugriffe für sämtliche Plattendaten zwei Zugriffe erforderlich gemacht werden, bevor ein Eintrag zum Ende des Adreßbuchs hin zurückgebracht wird. Diese Zahl kann von Zeit zu Zeit geändert werden, wobei die gewählte Zahl abhängt von der Art oder Klasse der Daten, auf die zugegriffen wird. Wird ein Ädreßbucheintrag zum Ende hin verschoben, so verschieben sich sämtliche anderen Einträge im Adreßbuch nach "oben", um die durch den zum Ende verschobenen Eintrag frei gewordene Stelle aufzufüllen. Auf diese Weise funktioniert das Adreßbuch wie eine modifizierte FIFO-Steuerung bei der Verwendung des RAM.
In der bevorzugten Ausführungsform der Erfindung werden die Einträge selbst in dem Adreßbuch nicht neu geordnet. Statt dessen wird für die Einträge eine Zeigertabelle eingerichtet, und die Einträge werden innerhalb der Zeigertabelle zur Imple-
909883/0773
mentierung dieser FIFO-Technik neu angeordnet, obschon die Einträge selbst neu organisiert werden könnten, falls diese Einträge kurz genug wären, um zum Zwecke der Durchführbarkeit in einem oder zwei Speicherwörtern Platz zu finden. Auf diese Weise verbleiben sowohl die Einträge in dem von der Steuereinheit gehaltenen Adreßbuch als auch die Datenblöcke in dem Notizblockspeicher an ihrer Stelle, und es werden lediglich die Zeiger neu angeordnet. Die Steuereinheit wird vorzugsweise durch eine mikroprogrammierbare, konfigurierbare Verbindungsstelle oder Datenpfadleitung zwischen drei Ports implementiert. Diese Ports sind: ein erster Port, S, zu der Datenverarbeitungsanlage, ein zweiter Port, D/M (der zur Vereinfachung als D-Port bezeichnet werden soll) , zu dem Platten- und/oder Notizblockspeicher, und ein dritter Port, P, zu einem Mikroprozessor mit einem Speicher, in welchem ein Steuerprogramm gespeichert ist, und in welchem Plattendaten gespeichert werden können. Plattendaten (auch: plattenresidente Daten) können auch in einer Erweiterung des Mikroprozessorspeichers gespeichert werden. Der Mikroprozessor empfängt Befehle von der Datenverarbeitungsanlage, welche zu der Plattensteuerung gelangen sollen, die aber von dem konfigurierbaren Datenpfad (CDP) abgefangen werden. Der Mikroprozessor behandelt dann den Befehl und entscheidet, ob die aufgerufenen Daten von der Platte gelesen und zu der Datenverarbeitungsanlage und dem Notizblockspeicher gebracht werden sollen, oder ob sie aus dem Notizblockspeicher gelesen werden sollen, wobei der CDP entsprechend eingestellt wird. Der Mikroprozessor entscheidet weiterhin, ob die zu der Platte übertragenen Daten auch in dem Notizblockspeicher zu aktualisieren sind, und falls dies der Fall ist, stellt er den CDP so ein, daß die Daten in dem Notizblockspeicher aktualisiert werden. Der CDP empfängt Mikrobefehle von dem Mikroprozessor und führt die Befehle dadurch aus, daß er mikroprogrammierte Routinen ausführt.
Nach einem bevorzugten Gedanken der Erfindung wird eine Einrichtung angegeben zum Optimieren des Durchsatzes in Informations-
909S83/0773
Managementsystemen, welche Magnetplattenspeicher als Hilfsspeicher für Daten verwenden. Es wurde herausgefunden, daß sich bei solchen Systemen Beschränkungen in der Leistungsfähigkeit durch die Hauptspeicherverwendung und die Platten-Zugriffszeit ergeben. Herkömmliche Lösungen bezüglich dieses Problems wurden untersucht, und es wurde festgestellt, daß sie bei weitem unter dem zu erreichenden Optimum liegen. Wurde durch frühere Maßnahmen erreicht, daß Verzögerungen beim Laden von Systemtasks verringert wurden, so sind diese Maßnahmen jedoch bei Mehrbenutzer-Systemen mit großen Datenbanken nur bedingt tauglich; bei solchen Systemen ist eine große Anzahl unterschiedlicher Dateien stets aktiv, und der Preis, der notwendig ist, die sich ergebende Anzahl von Indizes in einem Notizblockspeicher zu halten, verbietet derartige Maßnahmen. Die vorliegende Erfindung schafft eine programmierbare Steuereinheit für einen Magnetspeicher und eine Steuerung mit einem Mikroprozessor, einem Schreib/Lese-Speicher (RAM), der als Puffer verwendet wird, um die Plattendaten, die von der Datenverarbeitungsanlage (DPS) verwendet werden, zu notieren, sowie einem konfigurierbaren Datenpfad (CDP), der die Datenverarbeitungsanlage an die Plattensteuerung anschaltet. Der Mikroprozessor ist so programmiert, daß er einen raschen Zugriff der Datenverarbeitungsanlage auf Plattendaten liefert, indem er den CDP so steuert, daß eine Speichernotierung von Plattendaten in dem RAM gehalten wird.
Im folgenden werden Ausführungsbeispiele der Erfindung anhand der Zeichnung näher erläutert. Es zeigen:
Fig. 1 ein funktionelles Blockdiagramm der vorliegenden Erfindung,
Fig. 2 eine Organisationsübersicht des in Fig. 1 dargestellten konfigurierbaren Datenpfads,
Fig. 3A und 3B in zwei Teilen ein funktionelles Blockdiagramm eines konfigurierbaren Datenpfads (CDP),
Fig. 4 ein Flußdiagramm für die in dem CDP ausgeführten Routinen GO, GET und PÜT,
909883/0773
Fig. 5 ein Blockdiagramm des Steuerabschnitts für den CDP7 Fig. 6 ein Zeitdiagramm für die zeitliche Steuerung des MP-Bus in Fig. 1,
Fig. 7 ein Diagramm für die MP-Haltezeitsteuerung, Fig. 8 bis 23 Flußdiagramitie der inikroprogramniierten CDP-Routinen, und zwar:
8. S zum Briefkasten
9. Service-MP (Teil 1)
10. Service-MP (Teil 2)
11. Unterbrechen D/M-Port
12. Platte - Notizblock
13. Platte / System
14. Platte - MP
15. Platte - Doppelweg
16. Unterbrechung an S-Port
17. S- PUT
18. D/M - PUT
19. MP- PUT
20. S - GET
21 . D/M - GET
22. MP- GET
23. CDP - GO
Fig. 24 eine schematische Darstellung zur Veranschaulichung der Organisation der Platten-Notizblockspeicher-Adressierung und Zeigertabelle,
Fig. 25 eine Skizze zum Veranschaulichen des Formats eines Notizblockspeicher-Adreßbucheintrags,
Figuren 26 bis 34 Flußdiagramm von Notizblockspeicher-Programmen (CP) für programmierte Unterroutinen, und zwar:
26. CPINIT - Initialisieren Notierungsprogramm (CP)
27. CPFIX - Fixieren der Plattendatenblpcke im
Notizblockspeicher
28. CPREAD - Lesen Plaggenblöcke
29. CPSORT - Ordnen der Zeigertafel
30. CPHOLE - bilde einen Raum im dynamischen Notizblock
909883/0773
31. CPWRITE - Schreiben Plattenblöcke
32. CPDEFIX - hebe Zuordnung im Notizblock auf
33. CPDLTE - hebe "Lesen von Platte in Notizblock"
auf
34. DPSRBK - Suchen Notizblock für Blocknummer.
Fig. 1 zeigt ein funktionelles Blockdiagramm einer programmierbaren Steuereinheit 10, die in der Lage ist, den Durchsatz zwischen einem oder mehreren Standard-Plattenspeicher-Subsystemen, jeweils bestehend aus einer Plattensteuerung 12 und einem Plattenspeicher 14, und einer zentralen Verarbeitungseinheit (CPU) 16 zu optimieren. Zu der CPU gehört wahlweise ein Hauptspeicher 18, zu dem Plattenspeicher-Subsystem gehört wahlweise ein Kernpufferspeicher 20. Die Verbindung zwischen der CPU, dem Hauptspeicher und der Steuereinheit erfolgt durch einen Systembus 22, die Verbindung zwischen dem Plattenspeicher-Subsystem, dem Pufferspeicher und der Steuereinheit erfolgt überfeinen Plattenbus 24.
Die Aufgabe der Steuereinheit 10 besteht darin, den Systemdurchsatz durch Vermindern der zum Auffinden von Daten in dem Plattenspeicher durchschnittlich benötigten Zeit zu verbessern. Obschon in dem hier geschilderten Ausführungsbeispiel der Erfindung lediglich eine CPU dargestellt ist, versteht sich, daß mehrere unabhängige Prozessoren vorgesehen sein können, die Zugriff zu einem oder mehreren Plattenspeichern haben, wobei die Steuereinheit entsprechend programmiert ist.
Die Steuereinheit erfüllt ihre Aufgabe dadurch, daß sie einen geringen Prozentsatz der p'lattenresidenten Daten vorab aufruft und festhält. Die Daten werden entweder in einem kleinen Hochgeschwindigkeits-Schreib/Lese-Speicher (RAM) eines Mikroprozessors 26 oder einem erweiterten RAM 28 gehalten. Die Wirksamkeit dieser Steuereinheit bei der Erfüllung ihrer Aufgabe ist abhängig von dem Ausmaß, in welchem Anforderungen bezüglich Plattendaten vorab berücksichtigt werden können. Es wurde gezeigt, daß dies bei vielen typischen Anwendungsfällen für 60 %
909883/0773
der Plattendatenanforderungen möglich ist, was eine Verbesserung des Durchsatzes um den Faktor 2 oder 3 bedeutet. Mit in dem Mikroprozessor vorgesehenen Programmroutinen für dynamische Selbstoptimierung kann noch eine weitergehende Verbesserung des Durchsatzes erzielt werden.
Bei dem Mikroprozessor kann es sich um einen von der Firma Texas Instruments, Inc., hergestellten herkömmlichen Mikroprozessor der Reihe 990 handeln. Dieser Mikroprozessor enthält eine Programmier-Steuertafel 29 sowie einen programmierbaren Nur-Lese-Speicher (PROM) mit 1K bis 3K Worten Speicherkapazität, sowie ferner einen Schreib/Lese-Speicher (RAM) mit einer Kapazität von 1K bis 28K. Geht man von einem Maximum von 28K aus, so braucht der Pufferspeicher 20 nicht notwendig zu sein, insbesondere wenn in der Steuereinheit der Erweiterungs-RÄM mit einer Kapazität von 24K Worten vorgesehen ist. In jedem Fall kann wahlweise der Pufferspeicher 20 vorgesehen sein, der dieselbe Verwendung findet wie der RAM 28, falls es der betreffende Anwendungsfall erfordert. Als Pufferspeicher eignet sich ein von der Firma Bunker Ramo Corporation hergestelltes Modell BR-1539 mit einer Speicherkapazität von 16K bis 124K Worten.
Der Mikroprozessor ist über einen Bus 30 an den RMl 28 (falls vorhanden) angeschlossen. Dieser Bus 30 wiederum ist an den Systembus 22 und den Plattenbus 24 über einen konfigurierbaren Datenpfad (CDP) 32 geschaltet, der durch den Mikroprozessor über den Bus 31 gesteuert wird. Der CDP besitzt drei Ports: S, P und D/M (für Platte und wahlweisen Notizblockspeicher). Der Port D/M soll im folgenden vereinfach als Port D bezeichnet werden.
Der Port S ist kompatibel mit dem Systembus, und zwar unabhängig davon, ob es sich um den Unibus der Firma Digital Equipment Corporation (DEC) oder um den B-Bus der Firma Bunker Ramo Corporation handelt. Für einige Datenverarbeitungssysteme, wie beispielsweise die PDP-11/70-Systeme der Firma DEC kann eine Speicher-Schnittstelleneinheit (interface) zwischen dem
909883/0773
Prozessor-Unibus, dem Hauptspeicherbus und.dem Port S des CDP notwendig sein, so wie beispielsweise dem von der Firma Bunker Ramo Corporation hergestellten Speicherbus BR-1566. Kann der Hauptspeicher an den Systembus der CPU angeschaltet werden, wie es bei der PDP 11/45 der Firma DEC der Fall ist, so ist eine solche Schnittstelle nicht erforderlich. Dieser einfachere Fall ist in Fig. 1 dargestellt. Der Port D ist kompatibel mit dem Bus 24, während der Port P kompatibel ist mit dem Mikroprozessorbus 31.
Die CDP-Verbindungszustände sind synchron mit dem Takt des Mikroprozessors, der Datentransfer über die CDP-Verbindungen erfolgt jedoch asynchron. Der CDP-Datenpfad ist daher doppelt getaktet, um den richtigen Port für die Dauer des Transfers zu halten. Die möglichen Transfers finden statt zwischen den Ports S und D, den Ports S und P und den Ports P und D. In jedem Fall eines Transfers zu oder von einem Port kann der Transfer zu oder von einer Einheit erfolgen, die an denjenigen Bus angeschaltet ist, der an den Port angeschlossen ist. Die bei der vorliegenden Erfindung vornehmlich interessierenden Transfers sind: von der Platte zur zentralen Verarbeitungseinheit mit doppelwegigem Transfer zum Notizblockspeicher (28 oder 20) des übertragenen Blocks zuzüglich der nächsten vier Blöcke des PlattenSpeichers; vom Notizblockspeicher (28 oder 20) zur Datenverarbeitungsanlage; von der CPU zur Platte und von der CPU zum Notizblockspeicher und dann zum Plattenspeicher.
Die CDP-Steuerregister werden von dem Mikroprozessor als spezielle Speicherstellen gehalten und angesprochen. Andere durch den Mikroprozessor ansprechbare Speicherstellen, die außerhalb seines eigenen Speichers liegen, befinden sich im RAM 28. Folglich ist ein Teil der Speicher-Adressiermöglichkeit des Mikroprozessors für diese Register reserviert, um die konfigurierbaren Datenwege zwischen den Ports zu definieren. Geht man aus von einem hexadezimalen 15 Bits umfassenden Adreßwort, so ergeben sich folgende Steuerregister-Zuordnungen:
909883/0773
F400-CQdierte CDP-Funktion
Die Bits 15 bis 13 des Bytes F400 werden zum Spezifizieren der CDP-Funktionen verwendet. Die Bits 12 bis 8 dienen als augenblickliche Drucktasten. Das heißt, jedesmal, wenn der Mikroprozessor in den Bits 12 bis 8 eine binäre "1" ausgibt, findet die diesem Bit zugeordnete Aktivität statt. Die Bits 8 bis definieren die F400-Adresse. Eine binäre "1" in Bit 12 veranlaßt den CDP, die in den Bits 15 bis 13 identifizierte Aktivität aufzunehmen. Eine binäre "1" im Bit 11 veranlaßt den CDP, eine Unterbrechungs-(interrupt)Vektoradresse (siehe Byte F405) zu dem S-Port an die CPU zu senden. Eine binäre "1" in den Bits 10, 9 oder 8 führt die von dem S-Port, dem D-Port (siehe Byte F404) oder dem CDP kommende,zu dem Mikroprozessor führende Unterbrechung zurück. Die acht möglichen Funktionen und fünf Aktivitäten des CDP sind wie folgt:
13 ]4 J5 Funktion
0 0 0 CDP in Ruhe
0 0 1 Daten-Transfer von D/M nach S
0 10 Daten-Transfer von S nach D/M
0 1 1 Daten-Transfer von P nach S
10 0 Daten-Transfer von S nach P
10 1 Daten-Transfer von D/M nach P
110 Daten-Transfer von P nach D/M
111 Zählregister auf Null herunterzählen, Unterbrechung veranlassen (Diagenosefunktion)
Bit Aktivität
12 1 = Anstoßen der in den Bits 13-15 definierten
CDP-Aktivität
11 1 = Unterbrechung an CPU auf S-Port
10 1 = Löschen der Unterbrechung am S-Port 9 1 = Löschen D/M-Port-Unterbrechung 8 1 = Löschen CDP-Unterbrechung
909883/0773
F4 01-CDP-UnterbrechungsSteuerung
Das Byte F401 beinhaltet die UnterbrechungsSteuerung und die Status-Bits sowie ein Bit (7), welches den "Slave" bestimmt, der auf einen D-Port-"Master" anspricht. Die Bits 0, 2, 4 und 6 sind binär " 1", wenn die entsprechenden Unterbrechungen nicht behandelt wurden, ungeachtet des Zustandes des entsprechenden Blockier-Bits. Die Unterbrechungsmaske oder die Blockier-Bits, 1,3 und 5 werden durch den Mikroprozessor auf "1" gesetzt, um zu verhindern, daß eine anhängige Unterbrechung tatsächlich zu dem Mikroprozessor gesendet wird. Es ergibt sich folgende Bit-Zuordnung:
Bit Funktion
0 1 = Unterbrechung vom S-Port anhängig
1 1 = Ermöglichen S-Port-Unterbrechung 0 = Blockiere S-Port-Unterbrechung
2 1 = Unterbrechung vom D/M-Port anhängig
3 1 = Ermöglichen D/M-Port-Unterbrechung 0 = Blockiere D/M-Port-Unterbrechung
4 1 = CDP-"Transfer beendet"-Unterbrechung anhängig
5 1 = Ermöglichen D/M-Port-Unterbrechung 0 = Blockiere D/M-Port-Unterbrechung
6 1 = Unterbrechung am S-Port anhängig
7 1 = D/M-Port-Master zum S-Port-Slave
0 = D/M-Port-Master zum D/M-Port-Slave
Beachte: Für die Änderung der Bits 1, 3, 5 oder 7 verwende den Befehl S0C.
F402-CDP-Status-Bits Das Byte F402 beinhaltet folgende CDP-Fehler-Status-Bits:
D/M-Port-Leitung PA (1 = Fehler)
D/M-Port-Leitung PB (1 = Fehler)
S-Port-Leitung PA (1 = Fehler)
909883/0773
12 S-Port-Leitung PB (1 = Fehler) 11 CDP Zeitablauf am D/M-Port
10 CDP Zeitablauf am S-Port
*9 1 = Fortsetzen Transfer, falls Daten-Paritätsfehler
0 = Anhalten Transfer bei Datenparitätsfehler *10 1 = S-Port ist B-Bus
0 = S-Port ist Uni-Bus
* Jumper gesteuert am CDP als zu der CPU gelangende Status-Bits. .
Die Fehler-Bits 15 bis 10 werden gelöscht, wenn ein CDP-Transfer angestoßen wird. Die Bits 15, 14, 13 und 12 geben Auskunft über den Status der S- oder D-Port-Leitungen PA und PB. Wenn diese Leitungen zu irgendeinem Zeitpunkt während eines durch den CDP gesteuerten Transfers gesetzt werden, so wird dies in dem Byte F402 festgehalten und nicht eher gelöscht, bis ein anderer Transfer angestoßen wird. Im binären Zustand "1" zeigen die Bits 11 oder 10 an, daß der CDP als Bus-Master an dem S- oder D-Port einen Zeitablauf überschritten hat und den angeforderten Transfer fallengelassen hat. Bit 9 ist ein Status-Bit, welches anzeigt, daß der CDP einen Transfer anhält, falls ein Daten-Paritätsfehler erfaßt wird (0) oder den Transfer fortsetzt (1). Bit 10 zeigt die Konfiguration des S-Ports an: Eine binäre "1" bedeutet einen B-Bus (PDP 11/70), eine binäre "0" zeigt einen Uni-Bus an (PDP 11/45), wodurch zwei Konfigurationen vorgesehen sind, obschon nur eine dargestellt ist.
F403-Seitenaüswahlregister (PSR)
Der Mikroprozessor kann indirekt auf irgendeinen Adreßraum des D-Bus zugreifen. Ein Seitenschema verwendet das PSR-Register, um die acht höchstwertigen Adreß-Bits (η) des D-Bus zu liefern. Die niedrigstwertigen neun Wortauswahl-Bits (x) werden von dem Mikroprozessor-Adreßbus 30 geliefert.(Das Byteauswahl-Bit 15
909883/0773
ist eine binäre 0.) Durch die Verwendung von neun Auswahl-Bits ergibt sich eine Seitengröße von 512-q Wörtern. Die bei fOOO (Mikroprozessor-Adresse) beginnenden 512..Q Wörter werden über den D-Bus seitenmäßig angesprochen. Dieses Merkmal wird normalerweise dazu verwendet, auf die Steuerregister für den Eingabe-Ausgabe-(I/O)Raum zuzugreifen, es kann aber auch dazu verwendet werden, auf irgendeinen D-Bus-Adreßraum zuzugreifen.
Mikroprozessor-Adreß-Bits 01 2 3 4 5678 9 10 1112 131415
FOOO bis F3FE 1 1 1 1 0 0XXXXXXXXX Seitenauswahl-Regi- -·
Ster (PSR) 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
D-Bus-Adresse η η η η η η π ηΧΧΧΧΧΧΧΧΧΧ
F404-Ünterbrechungs-Vektoradresse vom D-Port
Das Byte F404 beinhaltet die Unterbrechungs-Vektoradresse (IVA), die von der den D-Bus belegenden unterbrechenden Einheit empfangen wird. Die größmögliche Adresse ist 374„ mit folgendem
Format: 10 11 12 F404 14 15
Bit X X X 13 0 0
8 9 X
X X
F405-ünterbrechungs-Vektoradresse zum S-Port
Das Byte F405 beinhaltet die Unterbrechungs-Vektoradresse, die zu der Zentraleinheit (CPU) übertragen wird. Die größtmögliche Adresse ist 374g mit folgendem Format:
Bit 2 3 4 5 F405 7
0 1 X X X X 6 0
X X 0
909883/0773
OR'GIWAL INSPECTED
F406-CDP-Wortzählregister, Bits G-I5
Vor dem Anstoßen eines CDP-Transfers muß F406 das Komplement der Anzahl von zu übertragenden Wörtern beinhalten. Der maximale Transfer umfaßt 65K Wörter.
F408-P-Port-Adreß-Bits 0-15
Wenn der P-Port bei einem CDP-Transfer beteiligt ist, muß F408 mit der beginnenden P-Port-Adresse (in Byte) geladen werden.
F40A-D-Port-Adreß-Bits 0-15
Ist bei einem CDP-Transfer der D-Port beteiligt, muß F40C den niedrigwertigen Teil der D/M-Port-Startadresse (in Byte) beinhalten .
F40C-S-Port-Adreß-Bits 0-15
Wenn bei einem CDP-Transfer der S-Port beteiligt ist, muß F410 den niedrigwertigen Abschnitt der S-Port-Startadresse (in Byte) beinhalten.
F40E-D-Port-Adreß-Bits 16 - 21
Byte F40E beinhaltet die höchstwertigen Adreß-Bits für den D-Port.
F40F-S-Port-Adreß-Bits 16-21
Das Byte F40F beinhaltet die höchstwertigen Adreß-Bits für den S-Port.
Jeder Versuch durch den S-Port-Prozessor, auf 64 vorbestimmte Wörter in dem Eingabe-/Ausgabe-Raum (E/A-Raum) des S-Port-Bus zuzugreifen, führt dazu, daß der CDP die adressierte Speicher-
909883/0773
stelle in den P-Port-Speicherraum beginnend bei 000 abbildet, wobei m irgendeine Hexadezimalzahl zwischen 1 und F ist. Handelt es sich bei dem Zugriff um DAT0, so schaltet der CDP die Mikroprozessor-Unterbrechung S-Port-zu-P-Port an.
Hier wird die Erläuterung der Steuerregisterzuweisungen abgeschlossen. Der Mikroprozessor steuert den CDP durch Laden dieser Register mit den entsprechenden Steuerworten.
Die Funktion des durch den Mikroprozessor gesteuerten CDP besteht darin, auf einen vorbestimmten kleinen Prozentsatz der Plattendaten vorab zuzugreifen und die Daten zu halten (zu notieren). Die Daten werden entweder in einem kleinen RAM 28 gehalten oder wahlweise in einem größeren Kernpufferspeicher Es gibt zwei grundsätzliche Verfahren zum Steuern der Inhalte des Notizblockspeichers (20 oder 28), das heißt, zum Bestimmen, was notiert wird. Im allgemeinen werden beide Verfahren gleichzeitig verwendet. Bei einem Verfahren, einem gelenkten Verfahren, wird der Mikroprozessor über eine Task auf den Benutzer-Level oder durch eine über eine Steuertafel gegebene Anweisung dazu gebracht, bestimmte Daten zu halten oder aus dem Notizblockspeicher zu holen. Wenn dieses eine Verfahren nicht angegeben wird, kommt das zweite Verfahren zum Einsatz.
Im Gegensatz zu dem gelenkten oder gesteuerten Verfahren hängt das zweite Verfahren, ein "dynamisches" Verfahren ab von der Verwendung eines intern in dem Mikroprozessor ausgeführten Algorhythmus zum Bestimmen, welche Daten in dem Notizblockspeicher gehalten werden sollen. Bei dem Verfahren werden zu Beginn sämtliche Daten, die in Einzelblock-Inkrementen gelesen werden, festgehalten. Dann sagt das Verfahren auf der Grundlage der Zwischengeschichte der Plattenaktivität voraus, welche notierten Daten am wenigsten nützlich sindund abgelegt werden können.
Der dynamische Notierungsalgorhythmus besteht in Wirklichkeit aus der Zusammensetzung von zwei Algorhythmen, die als "Vorausschau" und "additive Berechnung" bezeichnet werden ("lookahead" and "additive accounting"). Nur einer dieser Algorhithmen
909883/07 73
" 23 ~ 2326343
ist zu einer gegebenen Zeit mit der Steuerung befaßt, wie sie durch die Software des Mikroprozessors, die die Wirksamkeit der Notierungen überwacht, gelenkt wird.
Zusätzlich zu den Verschiebungen zwischen den beiden grundlegenden Algorhithmen können feinere Steuermaßnahmen innerhalb jedes Algorhithmus' erzielt werden, indem ihre Parameter geändert werden. Da die Notierungseffektivität abhängig ist von der Art der Systemaktivität, werden wenigstens diese beiden Algorhythmen verwendet, da sie in dieser Hinsicht in Bezug aufeinander komplementär und darüber hinaus für sich jeweils in hohem Maße effektiv sind. So kann die Mikroprozessor-Software wie das Steuerelement in einem Servosystem periodisch die Parameter modifizieren, um die größtmögliche Notxerungseffektivität ungeachtet der Art der Systemaktivität zu gewährleisten. Wie bei der Software für die Steuerung des Mikroprozessors liegt die Software im allgemeinen als Firmware vor, das heißt, in Form von in einem Nur-Lese-Speicher gespeicherten Programmroutinen. Daher wird jeder grundsätzliche Plattenspeichertyp separate Firmware-Moduln erfordern. Folglich soll die hier erläuterte beispielhafte Software anhand von allgemeinen Ausdrükken beschrieben werden unter Bezugnahme auf Flußdiagramrae, die sich an eine ausführlichere Beschreibung der CDP-Organisation anschließen. Die Steuereinheit arbeitet, indem sie die vorliegenden Datenübertragungen zwischen den verschiedenen Plattenhantierern (Software-Programme in der Datenverarbeitungsanlage) und dem Plattenspeicher-Subsystem abfängt und in der erforderlichen Weise in beide Richtungen antwortet.
Bevor mit einer Beschreibung der CDP-Organisation fortgefahren wird, soll kurz die Aufgabe dieser Software erläutert werden. Die Aufgabe oder das Ziel ähnelt der herkömmlichen Software-Technik zum Fixieren häufig verwendeter Tasks und Datentabellen in einem Hauptspeicher, mit der Ausnahme, daß statt dessen ein Hilfsspeicher (20 oder 28) verwendet wird. Der Ablauf ist für die Datenverarbeitungsanlage, die wie zuvor die Schnittstelle mit dem Platten-Subsystem für diese Transaktionen bildet.
909883/0773
transparent. Kurz gesagt, schafft die Steuereinheit eine Erweiterung der Möglichkeit der Datenverarbeitungsanlage, Teile des Programmvorrats und andere spezifische Daten im Hauptspeicher zu fixieren, ohne daß jedoch zusätzliche Hauptspeichereinrichtungen notwendig sind.
Zusätzlich zu den Plattendaten, die "fixiert" werden, stellt ein großer Prozentsatz von Systemanforderungen für Plattendaten eine Wiederholung vorangegangener Anforderungen dar, die nur kurze Zeit vorher stattgefunden haben. Aufgrund der beschränkten Hauptspeicherkapazität können diese Daten zwischen den Anforderungen nicht in dem Hauptspeicher festgehalten werden. Die Steuereinheit jedoch schafft einen Zwischenspeicher und eine Steuerung zum Festhalten eines bedeutenden Prozentsatzes solcher Daten. Der Zeitraum, in dem ein ^spezieller Datenblock gespeichert (notiert) wird, ist eine Funktion des verfügbaren Notizblockspeichers und der Verwendung dieses Datenblocks. Es sei von einem System ausgegangen, welches Platten-Speicherplatz in Fünf-Block-Inkrementen zuordnet. Ferner sei angenommen, daß sämtliche Dateien angrenzend spezifiziert oder gehalten werden, oder in dem Ausmaß wenigstens dieser Segmente nicht benachbart oder angrenzend sind. Um Hauptspeicherplatz einzusparen, werden die meisten Dateien in einzelnen oder- höchstens doppelten Blocksegmenten verarbeitet. Dies führt zu separaten Plattenzugriffen für jedes Dateisegment. Zwischen aufeinanderfolgenden Segment-Suchvorgängen bei Mehrfachbenutzersystemen liegt genug Verarbeitungsverzögerung, so daß Platten-Transaktionen bezüglich anderer Dateien vonstatten gehen können. Dies hat zur Folge, daß eine weitere Suchverzögerung eintritt. Es ergibt sich also eine signifikante Systemverbesserung, wenn die Steuereinheit pro Platten-Lesezugriff mehrere (bis zu fünf) Blöcke liest, obschon nur ein Block angefordert wird. Der gewünschte Block wird zu der Datenverarbextungsanlage geleitet, jedoch sämtliche fünf Blöcke werden in Vorausschau auf nachfolgende Anforderungen auf eben diese Blöcke notiert. So braucht bei nacheinander stattfindenden Datei-Suchvorgängen lediglich ein tatsächlicher Plattenzugriff von fünf zu erfolgen. Dies ist das oben erwähnte Merkmal des "Vorausschau"-Algorhithmus.
909883/0773
Ist der Notizblockspeicher einmal gefüllt, so wird es notwendig, zu steuern, welche notierten Daten abgelegt werden können, wenn neue Datenanforderungen bewirken, daß zusätzliche Mehrfach-Blocks aus dem Plattenspeicher in den Notizblockspeicher eingelesen werden. Wie oben bereits erläutert wurde, gibt es ein gesteuertes oder gelenktes Verfahren, durch das die Steuereinheit veranlaßt wird, bestimmte Daten in dem Notizblockspeicher zu halten (zu fixieren), oder aus dem Speicher zu entfernen. Die Daten werden dann gehalten, bis eine zweite Anweisung über eine Task auf dem Benutzer-Level oder eine Steuertafel empfangen wird, um die Daten zu entfernen (zu lösen). Im Gegensatz zu dem gelenkten Verfahren hängt das dynamische Verfahren ab von der Verwendung intern durchgeführter Algorhithmen, durch die bestimmt wird, welche Daten in dem Notizblockspeicher zurückgehalten werden. Es hält sämtliche Daten, die als Antwort auf Anforderungen gelesen werden. Das Verfahren bestimmt dann auf der Grundlage der Zwischengeschichte der Plattendaten-Anforderungen, welche zuvor notierten Daten am wenigsten brauchbar sind und entfernt werden können, um Platz für die nächsten zu notierenden Daten zu schaffen.
Der dynamische Notierungsalgorhythmus besteht in Wirklichkeit aus der Kombination zweier Algorhithmen, von denen einer als 11 Voraus schau" und der andere als "additive Berechnung" bezeichnet wird. Zusätzlich zu dem Wechsel zwischen diesen beiden grundlegenden Algorhithmen kann eine· verfeinerte Steuerung innerhalb jedes Algorhithmus1 dadurch erreicht werden, daß deren Steuerparameter variiert werden, wie oben bereits erwähnt wurde. Da die Notierungseffektxvität abhängt von der Art der Systemaktivität, wurden zwei Algorhithmen ausgewählt, da sie in dieser Hinsicht in Bezug aufeinander komplementär und jeweils für sich in hohem Maße effektiv sind.
Es sollte jedoch bemerkt werden, daß zusätzlich zu diesen beiden komplementären dynamischen Algorhithmen andere Algorhithmen hinzukommen können. Die Plattensteuerungsfunktxonen bleiben grundsätzlich dieselben. Diese Funktionen sind: Abarbeiten von in
909883/0773
ORIGINAL
Warteschlangen angeordneten Plattendaten-Anforderungen, Gültigkeitsbestiiranung von Anforderungsparametern, Umwandlung von Anforderungsparametern, Laden und Lesen von Platten-Subsystem-Hardware-Registern, Durchführen von Software-Fehlererkennung und Berichten über Transaktionsstatus.
Die Datenverarbeitungsanlage überträgt Daten über den Bus 22 zur Steuerung der Steuereinheit (CDP und Mikroprozessor) für folgende Zwecke: Anweisen der Notierungs-Initialisierung, Steuern des Notierungsvorgangs und Ausführen der Notizblockprüfung .
Die Steuereinheit führt die folgenden Funktionen für jeden durch die Datenverarbeitungsanlage angestoßenen Plattenzugriff aus:
- Abfangen sämtlicher Datenübertragungen von der Datenverarbeitungsanlage zu der Plattensteuerung, um Zugriffsparameter zu erhalten;
- Suchen des Notizblock-Adreßbuchs, um zu bestimmen, ob es die Daten, auf die zugegriffen wird, enthält, das heißt, Bestimmen, ob der laufende Zugriff ein Notizblock-Treffer oder -Fehlschlag (hit oder miss) ist;
- Bereitstellen des erforderlichen Datenweges und Steuerung des Datentransfers von dem Notizblockspeicher zu der Datenverarbeitungsanlage für jeden gelesenen "Treffer" (hit);
- Bereitstellen der erforderlichen Datenwege und Anstoßen gleichzeitiger Datentransfers von der Platte zu der Datenverarbeitungsanlage und den Notizblockspeicher für jeden fehlgeschlagenen Leseversuch (miss);
- Aktualisieren und Neuordnen des Notizblickspeicher-Adreßbuchs für jeden fehlgeschlagenen Leseversuch und jeden "Treffer" beim Schreiben, und zwar gleichzeitig mit dem tatsächlichen Datenaustausch zwischen der Datenverarbeitungsanlage und der Platte;
- Freimachen des Notizblocks von unzulässigen (Schreib-"Treffern") oder von Daten mit dem geringsten Wert, um
909 8 83/0773
Platz zu schaffen für neue Eingänge nach Maßgabe eines automatischen Algorhythmus;
- Erzeugen einer Abschlußunterbrechung, die an die Datenverarbeitungsanlage gelangt, für sämtliche Transaktionen, und Rückgabe spezifizierter Statusausdrücke " (Platten/ Notizblockspeicher-Registerinhalte) auf Anfrage.
Die Funktionen des Kernpufferspeichers sind:
- Annehmen und Speichern von Daten aus dem Platten-Subsystem im Anschluß an die Bus-Protokollierung mit dem Platten-Subsystem als Bus-Master;
- Auffinden und Übertragen von Daten zu dem CDP im Anschluß an die Bus-Protokollierung mit dem CDP als Bus-Master;
- Erzeugen und Prüfen des Paritätscodes bei jedem Schreibbzw. Lesevorgang; und Melden des Paritätsfehlers an den Bus-Master als Teil des Bus-Protokolls.
Die hauptsächlichen Merkmale der Steuereinheit und der zugehörigen Plattenspeicher-Subsysteme sind:
- Auf notierte Datenblöcke wird mit einer Geschwindigkeit von 700 Blöcken pro Sekunde zugegriffen im Gegensatz zu nicht notierten Daten, auf die mit einer Geschwindigkeit von 20 bis 30 Blöcken pro Sekunde zugegriffen wird.
- Bis zu 124K Wörtern (496 Blöcke) von Daten können gleichzeitig in einem 124K-Pufferspeicher notiert werden; es kann ein Pufferspeicher hinzugefügt oder entfernt werden, ohne daß die Steuereinheit geändert wird.
- Notierte Daten werden durch zwei grundlegende Mechanismen gesteuert, und zwar einen festen und einen dynamischen, von denen jeder durch die AnwenderZuordnung des Notizblock-Speicherraums gesteuert wird.
- Es ist eine Vielfalt von Notizblock-Algorhythmen möglich, um die Inhalte des dynamischen Teils des Notizblocks zu steuern; eine Kombination von "Vorausschau"- und "additive Berechnung"-Algorhythmen wurde in den beobachteten Anwendungsfällen als am günstigsten festgestellt; bei diesen
909883/0773
Algorhythmen handelt es sich um einen komplementären Satz.
- Der dynamische Teil des Notizblockbetriebs ist für den Anwender transparent.
- Für "Fehlschläge" (miss) werden die meisten Notizblock-Arbeitsvorgänge und Datentransfer-Verzögerungen mit dem Datenaustausch zwischen Platte und Datenverarbeitungsanlage überlappt; folglich wird in solchen Fällen weniger als 3 Prozent zusätzliche Verzögerung in kauf genommen.
- Das Notieren kann unter Programmsteuerung freigegeben und gesperrt werden als Hilfe bei der Fehlerisolierung, und um eine abgestufte Betriebsweise zu ermöglichen.
- Die Inhalte des RAM 28 der Steuereinheit können in eine Plattendatei einkopiert und anschließend unter Steuerung eines Programms der Datenverarbeitungsanlage neu geladen werden. Hierdurch wird ein rasch arbeitendes Mittel geschaffen zum Umschalten zwischen einer Notizblock-Umgebung auf eine andere oder zum erneuten Initialisieren des Subsystems.
Nachstehend soll der konfigurierbare Datenweg (CDP) im einzelnen erläutert werden. Im Betrieb stößt die CPU normalerweise Plattentransfers an, indem sie Transferparameter über zuvor vereinbarte Adressen auf den Systembus 22 zu der Plattensteuerung 12 bringt, mit der programmierbaren Steuereinheit 10 als Bestandteil des Systems jedoch werden die Transferparameter statt dessen von dem CDP erkannt und in einen vorab festgelegten Speicherblock innerhalb der MP-Einheit einkopiert. Wenn dies abgeschlossen ist, unterbricht der CDP den MP. Als Antwort auf die Transferparameter kann der MP folgende Systemaktivitäten veranlassen:
- Transfer eines Datenblocks zwischen der Platte 14 und dem Hauptspeicher 18;
- Transfer eines Datenblocks zwischen der Platte 14 und dem Pufferspeicher 20;
- Transfer eines Datenblocks zwischen der Platte 14 und dem RAM 28;
- Transfer eines Datenblocks zwischen der Platte 14 zum Puf-
9 D 9 6 B 3 / 0 7 7 3
ORIGINAL INSPECTED
ferspeicher 20 wie auch zum Hauptspeicher 18; Transfer eines Datenblocks zwischen dem Pufferspeicher 20 und dem Hauptspeicher 18; und
- Transfer eines Datenblocks zwischen dem RAM 28 und dem Hauptspeicher 18.
Fig. 1 zeigt den CDP als über den S-Bus mit dem Hauptsystem (CPU und Hauptspeicher) angeschlossen; der S-Bus ist an den DEC-Unibus angepaßt und mit diesem funktxonskomparatxbel (wenn die CPU als PDP 11/45 der Firma DEC ausgebildet ist). Der CDP kann modifiziert werden, um bei Verwendung der PDP-11/70 an den BR-1566-Speicherbus angeschlossen zu sein, wie oben erwähnt wurde. Der Plattenbus ist an den DEC-Unibus angepaßt und mit diesem funktionskompatibel. Der MP-Bus ist einzig für den MP vorhanden.
Die CPU steht über vorab zugewiesene Speicherraumadressen mit Gerätesteuereinheiten in übermittlungsverbxndung. Bis zu 48 E/ARaum-Adressen können dem CDP zugewiesen sein. Ein FPLA 34 wird dazu verwendet, die gewünschten S-Bus-Adressen in dem CDP-Briefkastenspeicher 36 abzubilden, wie in Fig. 2 angedeutet ist. Bei dem FPLA handelt es sich um ein feld-programmierbares Logikfeld, wie es von der Firma Intersel, Inc., oder Texas Instruments hergestellt wird. Der IM 5200-FPLA der Firma Intersel besitzt 14 Eingänge und 8 Ausgänge. Er kann bis zu 48 Produktausdrücke aufweisen, wobei jeder Produktausdruck bis zu 14 Variable haben kann. Jeder der Ausgänge liefert eine Summe der Produktausdrücke. Der FPLA kann von dem Anwender so programmiert werden, daß er eine Summe von Produktausdrücken an jedem der acht Ausgänge erzeugt. Seine Organisation umfaßt Eingangspuffer für ein programmierbares Produktausdruck-Feld (14x48), welches an ein Summierfeld (8x48) gekoppelt .ist, das auf die 48 Produktausdrücke anspricht und 8 Ausgangsgrößen über Ausgangspuffer erzeugt, die so programmiert werden können, daß sie die gewünschten logischen Pegel für jeden der 8 Ausgänge liefern. Die Stellen FOOO bis F3FE (512 Wörter) werden über eine B-Bus-Speicherraum seitenmäßig umgewechselt. Die oberen D-Bus-Adreß-Bits werden durch den Inhalt eines CDP-Parameter-RAM 38 (Stelle F498) geliefert.
9G9 8J3.3/G77 ORIGINAL
It·..
Die Stellen F400 bis F47E (64 Wörter) werden dem CDP-Briefkastenspeicher 36 zugeordnet.
Die Stellen F480 bis F49E (16 Wörter) werden dem CDP-Parameter-RAM 38 zugeordnet.
Die Stellen F4A0 bis F4A6 (4 Wörter) werden den CDP-Befehls-, Steuer- und Statusregistern 40 zugeordnet.
Der CDP besteht somit aus einer mikroprogammierten Steuerung, die auf den MP-Bus ansteht. Betrieben von Programmen des MP, funktioniert der CDP als zusammenhängender Datenpfad-Schalter für vier Datenquellen und Datensenken: der Systemspeicher (CPU und Hauptspeicher), die Platte, ein externer alleinstehender Speicher (wahlweise Kernspeicherpuffer) und der Speicher der Mikroprozessoreinheit MPU mit dem Erweiterungs-RAM.
Irgendeine Zahl von abgebildeten Adressen kann (unter Verwendung des FPLA) als spezielle Steuerstelle identifiziert werden. Wenn die CPU eine "1" auf das Daten-Bit Null einer speziellen Steuerstelle schreibt, wird für den MP eine Unterbrechung gesetzt, und das Daten-Bit 7 dieser speziellen Steuerstelle wird auf "0" gesetzt. Dieses Merkmal gibt der CDP-S-Port-Schriittstelle eine Bereit/Belegt-Verriegelung sowie die Möglichkeit, direkt mit dem MP zu kommunizieren. Der MP kommuniziert mit dem CDP (und über den CDP mit dem D-Bus) über zuvor zugewiesene MP-Speicherraum-Adressen. Im Gegensatz zu der S-Port-Abbildung (mapping) ist die MP-Port-Abbildung fest. Der dem CDP zugewiesene Speicherraum ist unterteilt in vier funktionelle Gruppen. Die Stellen FOOO bis F3FE (512 Wörter) werden über irgendeinen D-Bus-Speicherraum seitenweise umgelegt. Die oberen D-Bus-Adreß-Bits werden durch den Inhalt eines CDP-Parameter-RAM 38 (Stelle F498) geliefert. Die Stellen F400 bis F47E (64 Wörter werden dem CDP-Briefkasten zugeordnet. Stellen F480 bis F49E (16 Wörter) werden dem CDP-Parameter-RAM zugeordnet.
909883/0773
Die Stellen F4A0 bis F4A6 (4 Wörter) werden den CDP-Befehls-, Steuer- und Status-Registern 40 zugeordnet. Die CDP besteht somit aus einer mikroprogranunierten Steuerung, die auf dem MP-Bus vorhanden ist. Betrieben von Programmen in dem MP, funktioniert der CDP als zusammenhängender Datenwegschalter für vier Datenquellen und Datensenken: CPU und Hauptspeicher, Plattenspeicher, wahlweise Kernpufferspeicher und MP-Speicher mit Erweiterungs-RAM.
Von den Registern 40 sind drei Hardware-Register der CDP, auf die nur der Mikroprozessor zugreifen kann. Es sind:
a. F4A0 (hex) - CDP-Status-Register
b. F4A2 (hex) - CDP- und Platten-Transfermodusregister
c. F4A4 (hex) - CDP-"Tasten".
Bei dem CDP Status-Register handelt es sich um ein Register, das sich auf den Status der CDP beziehende Information enthält, wie der nachstehenden Tabelle zu entnehmen ist:
Tabelle 1: CDP-Status-Register (F4A0)
MP-Bit
15 CDP Belegt
14 MP-ünterbrechung möglich
13 Unterbrechung möglich vom D/M-Bus
12 anhängige Unterbrechung bei S .
11 zweigleisiger Transfer vollständig
10 CDP-Transfer abgeschlossen
9 Platten-Transfer abgeschlossen
8 S-Port der CPU hat in F404 (MPCS) geschrieben
7 Fehler-Summation (Bits 0-5)
6 (reserviert)
5 MP-Memory-Paritätsfehler
4 CDP-Zeitablauf
3 S-PB-Leitung
2 . S-PA-Leitung
1 D/M-PB-Leitung
0 D/M-PA-Leitung
909883/0773
Das CDP- und Platten-Transfermodusregister definiert den Modus oder die Art der CDP-Transfers und Platten-Transfers entsprechend folgender Tabelle:
Tabelle 2: CDP-Transfer-Art-Register (F4A2J
MP-Bits
5-6-7 CDP-Transfer-Art
000 nicht verwenden
001 Notizblockspeicher zum System
010 System zum Notizblockspeicher
011 MP zum System
100 System zum MP
101 Notizblockspeicher zum MP
110 MP zum Notizblockspeicher
111 nicht verwenden
14-15 Platten-Transferart
00 zwischen Platte und Notizblockspeicher
01 zwischen Platte und System
10 zwischen Platte und MP
11 Platte zum Notizblockspeicher und System
J_ Bus-Art
0 Unibus
1 B-BUS (BR-1566)
Die verschiedenen Transfer-Arten werden bei der folgenden Diskussion noch näher betrachtet werden. Es handelt sich hier um ein Lese/Schreib-Register. Das CDP-"Drucktaste"-Register ist lediglich als Schreibstelle ausgebildet. Durch Einschreiben verschiedener Masken in diese Stelle können Unterbrechungen blockiert, Unterbrechungs-Flags gelöscht und Fehler-Flags zurückgesetzt werden. So zum Beispiel stößt das Einschreiben einer "1" in das zweitniedrigste Bit einen CDP-Transfer entsprechend nachstehender Tabelle an:
909ß83/0773
Tabelle 3: CDP-"Tasten" (F4A4)
MP-Bit
(reserviert) Starte CDP-Transfer Löschen Unterbrechung von S Löschen Unterbrechung vom CDP Löschen von Doppelweg Löschen von D
9 Unterbrechung an S
8 (reserviert)
7 Ermöglichen Unterbrechung für MP
6 Blockiere Unterbrechung für MP
5 Ermöglichen Unterbrechung von D
4 Löschen Fehler-Flags
3 (reserviert)
2 (reserviert)
1 (reserviert)
0 (reserviert)
Wie man aus der nachstehenden Tabelle entnehmen kann, werden Befehls- und Status-Informationen zwischen dem S-Port und der CPU über einen Block von 26 Stellen ausgetauscht:
Tabelle 4: Brxefkasten MPDS
PDP-Adresse MP-Adresse MPER
776710 F400 MPCS
776712 F402 MPWC
776714 F404 MPBA
776716 F406 MPCA
776720 F408 MPDA
776722 F40A MPAE
776724 F40C DBLH
776726 F40E
776730 F4T0
909883/0773
PDP-Adresse
MP-Adresse
Fortsetzung Tabelle 4:
776732 F412
776734 F414
776736 F416
776740 F418
776742 F41A
776744 F41C
776746 F41E
776750 F420
776752 F422
776754 F424
776756 F426
776760 F428 776762 . F42A
776764 F42C
776766 F42E
776770 F430
776772 F432
DBLL DHBN CHEX CHCD CHST CHAC CHRD CHWT CHIT CHFH CHTX CHCZ CHFZ CHIN CHRT CHAD CHIC
Die erste Gruppe (MXXX) enthält die Pseudo-Plattensteuerungs-Register. Die zweite Gruppe (CSSS) enthält die Notizblock-Register. Dieser Block von 26 Stellen stellt das Mittel dar, über das das System mit dem MP in Datenübermittlung treten kann. Diese Gruppe von Adressen wird als "Briefkasten" bezeichnet. Die tatsächlichen Plattensteuerungs-Register (RXXX) stehen an dem D-Bus an, und auf sie wird von dem MP entsprechend nachstehender Tabelle zugegriffen:
909383/0773
Tabelle 5: Plattensteuerungs-Register
(F498=PSR=00FF)
D-Adresse
MP-Adresse FIC8 RPDS
FICA RPER
FICC RPCS
FICE RPWC
FIDO RPBA
FID2 RPCA
FID4 RPDA
FID6 RBAE
176710 176712 176714 176716 176720 176722 176724 176726
Ein funktionelles Blockdiagramm des CDP ist in Fig. 3 dargestellt. Die von dem S-Buc über eine Schnittstelle 40 (an der
linken Seite der Zeichnung) kommenden System-Adreßleitungen
werden durch eine Logik 41 in eine 6-Bit-Adresse umgewandelt
und von einem 2-zu-1-Multiplexer (MUX) 42 als Adressen für den Briefkastenspeicher 36 ausgewählt. Daten von dem System kommen von Datenempfängern 43 (links oben in der Zeichnung). Über einen 4-ZU-1-MUX 44 (in der Mitte oben der aus Fig. 3A und 3B zusammengesetzten Zeichnung) erreichen die Daten den Briefkastenspexcher über einen bidirektionalen Abschnitt 45 des Datenweges.
Wenn das System in die Stelle 776714 (oktal) eine ungerade Zahl einschreibt (das heißt eine Zahl, die in dem niedrigstwertigen·. Bit eine 1 besitzt), wird durch die Abbildungslogik 41 ein Unterbrechungs-Flag gesetzt, um den Mikroprozessor zu unterbrechen. Ein Lese- oder Schreibvorgang des Systems in irgendeiner der 26 Stellen des Briefkastenspeichers ruft eine im Mikrocode vorliegende Routine auf, die den Briefkastenzugriff behandelt.
Während Blocktransfers gelangen Daten von dem System über den 4-ZU-1-MUX 44 und einen 2-zu-i-MUX 46 in einen Vierfach-Puffer 47. Wenn der Transfer zu dem externen Notizblockspeicher (dem
909883/0773
wahlweisen Kernpufferspeicher 20) stattfindet, werden die Daten aus dem Vierfach-Puffer geholt und den D-Datenbus-Treibern 48 angeboten. Findet der Transfer zu dem MP-Speicher statt, so werden die Daten aus dem Vierfach-Puffer über den 4-ZU-1-MUX 49 des Mikroprozessors den MP-Port-Datenbustreibern angeboten. D-Bus-Transfers von den Datenempfängern 51 zu dem System-Bus über 52 oder zu dem MP-Speicher oder MP-Speicher-Transfers von den Empfängern 53 zu dem System erfolgen nach demselben grundlegenden Ablauf.
Innerhalb des 16 Worte umfassenden RAM 38 (in der unteren Mitte der Zeichnung) befinden sich die Blocktransferparameter. Die Stellen F480 bis F488 enthalten die C-, P- und S-Bus-Adressen. Während eines CDP-Transfers (das heißt, bei einem Transfer, der die Platte nicht beteiligt) müssen zwei dieser Stellen verwendet werden, um eine Quelladresse und eine Senkenadresse zu kennzeichnen. Während dieser Transfers wird der CDP-Wortzähler (F49A) verwendet. Diese Parameter werden von dem MP entsprechend nachstehender Tabelle geladen:
Tabelle 6: CDP-Schreib/Lese-Speicher
MP-Adresse
F480 D/M-Adresse 0-15
F482 D/M-Adresse 16-17
F484 P-Adresse 0-15
F486 S-Adresse 0-15
F488 S-Adresse 16-21
F48A Platten-Slave-Adresse 0-15
F48C Platten-Slave-Adresse 16-21
F48E (reserviert)
F490 (reserviert)
F492 (reserviert)
F494 Unterbrechungs-Vektor von D/M
F496 Unterbrechungs-Vektor nach S
F498 Seitenauswahl-Register (PSR)
F49A CDP-Wortzähler
F49C Doppelweg-Wortzähler
F49E (reserviert)
8 8 3/0773
Die S-Bus-Adresse wird aus den Stellen F486 und F488 erzeugt. Der Mikrocode greift auf diese beiden Wörter als vierte und fünfte RAM-Speicherstelle zu. Die Adreß-Bits 0-15 werden in das Register 55 (in der Mitte des Blockdiagrainms) geladen. Adreß-Bits 16-21 werden in den oberen Adreßzähler 56 geladen (dieser befindet sich rechts vom RAM 38). Die beiden Adressen werden aneinandergehängt (konkateniert) und von dem Adreßbusschreiber 57 (in der Mitte rechts in der Zeichnung) als Systemadresse verwendet.
Während eines Transfers zwischen der Platte 12 und dem externen Pufferspeicher 20 werden Daten- und Adreßwege nicht durch den CDP gelenkt, da beide Geräte an denselben Bus angeschaltet sind. Die CDP-Steuerlogik 58 steuert jedoch die Handshake-Abläufe zwischen der Platte und dem Notizblockspeicher.
Für einen Plattentransfer zwischen dem S- oder D-Port werden die Platten-Slave-Adreßregister in dem RAM anstelle der Plattensteuerungs-Busadreßregister verwendet. Für Transfers zwischen der Platte und dem System werden 22 Adreß-Bits aus F48A und F48C in derselben Weise gebildet, wie es oben für S beschrieben wurde. Für einen Transfer zwischen der Platte und dem MP werden nur die unteren 16 Bits verwendet (F48A).
Der CDP kann Daten von einem Bus auf den anderen geben. Die beiden Bus-Adressen sind in den Stellen F480 bis F488 enthalten.
Anstatt die D-Adreßregister zu verwenden, verwendet der MP.seine eigene 16-Bit-Adresse zusammen mit dem Seitenauswahl-Register (F498) beim Zugreifen auf den D-Bus. Durch diesen Mechanismus kann der MP die aktuellen Plattensteuerungsregister lesen (in diesem Fall muß F498 den Inhalt 00FF haben).
Für eine solche Operation muß der Mikrocode einen Zugriff auf den D-Speicherraum erkennen. In seiner Behandlungsroutine lädt der Mikrocode den Ausgabepuffer des RAM 38 mit dem Seitenauswahlregister. Die beiden 2-zu-1-Multiplexer 59 und 60 (unten
3/0773
rechts in der Zeichnung) geben die sechs Bits des Puffer-Registers und die zehn niedrigwertigen Bits der Mikroprozessor-Adresse an den Adreßtreiber 61, wodurch eine 18-Bit-Adresse gebildet wird.
Adressen für den MP-Port 62 kommen sämtlich über das Ausgangs-Puff erregister 55. Abhängig von der Transfer-Art kommt die Adresse entweder von dem P-Adreßregister oder den Platten-Slave-Adreßregister in dem RAM 38. Der Blockdaten-Transfer erfolgt über den Rundweg wie die anderen Blocktransfers mit der Ausnahme, daß er auch über den MP-4-zu-1-Multiplexer erfolgt.
RAM-Daten für den MP werden vom Port 3 des 4-zu-1-Multiplexers 44 (oben in der Zeichnung) ausgewählt und gelangen über den 2-ZU-1-Multiplexer 46 an den Port 3 des MP-4-zu-l-Datenmultiplexers 49 und den MP-Datentreibern 50. Die CDP-Status- und Befehlregister 63 und 64 werden von dem MP über Ports 0 und des MP-Datenmultiplexers 49 gelesen.
In Abhängigkeit eines Anstoßes durch den D-, den S- oder den P-Bus wird eine Firmware-Routine zur Behandlung ausgeführt. Für einen Datentransfer von der Platte werden Adreßwörter über Empfänger 65 empfangen, für einen Datentransfer von dem MP (oder dessen Erweiterungsspeicher) werden Adreßwörter über Empfänger 66 empfangen. In letzterem Fall ist entweder der 2-zu-!-Multiplexer 60 für einen Transfer zu dem D-Bus über die Treiber 62 beteiligt, oder aber der 2-zu-!-Multiplexer 42, wobei der Briefkastenspeicher 36 zusammen mit der Steuerlogik 58 verwendet wird. In jedem Fall kann der RAM 38 über einen 2-zu-!-Multiplexer 67 beteiligt sein. In den RAM 38 können über einen 2-zu-l-MüX 68 sowohl Daten- als auch Adreßworte in den RAM 38 eingegeben werden. Treiber 47 werden für Adreßworte auf dem S-Bus verwendet, und für Adreßworte auf dem P-Bus werden entweder Treiber 61 oder Treiber 69 verwendet. Die folgenden Absätze behandeln verschiedene Anstoßsignale und die sich ergebenden Antworten. Um diese Anstöße zu behandeln, wird eine ' spezielle Mikroprogrammierungs-Technik verwendet.
'^09883/0773
Bevor irgendein Datentransfer "erfolgen kann, müssen eine Datenquelle und eine Datensenke definiert werden. In dem CDP sind sechs Verbindungszustände möglich. Die CDP-Verbindungszustände und die Datentransfers sind mit dem Mikroprozessortakt synchron. Der CDP enthält einen 4-Wort-(Vierfach-)Puffer 70 und sämtliche Datentransfers erfolgen entweder in einem oder vier Worten gleichzeitig, wobei das entsprechende Wort für die Dauer des Transfers (ein oder vier Worte) gehalten werden.
Die CDP-Befehls- und Statusregister sind in dem Adreßraum des Mikroprozessors angeordnet und werden als F4A0, F4A2 und F4A4 (siehe Tabellen 1, 2 und 3) angesprochen. Andere Speicherstellen, auf die der Mikroprozessor zugreifen kann, befinden sich in dem RAM 38 (siehe Tabellen 4, 5 und 6). Folglich ist ein Teil der Speicher-Adressiermöglichkeit des Mikroprozessors für diese Register reserviert, um zwischen den Ports die konfigurierbaren Datenwege zu definieren.
Für die CDP-Transfermodusregister F4A2 (Tabelle 2) werden die zwei niedrigstwertigen Bits des unteren Bytes von F4A2 (14 und 15) verwendet, um die Art des Plattentransfers (das heißt, die Verbindungszustände) zu bestimmen. Die Transferrichtung wird durch das Register RPCS der Platte definiert. Für einen Doppelweg- oder zweigleisigen Transfer werden diese beiden Bits auf "1" gesetzt. Wenn bei dieser Transfer-Art die Wortgröße der Plattenwortzählung (FICE) größer ist als der Inhalt des Doppelweg-Wortzählregisters, dann werden nach Abschluß des gleichzeitigen Transfers von der Platte zu der Datenverarbeitungsanlage und dem Notizblockspeicher diese beiden Bits gelöscht, und der verbleibende Teil des Transfers findet in Form eines Platten-Notizblockspeicher-Transfers statt. Die drei niedrigstwertigen Bits des oberen Bytes von F4A2 (5, 6 und 7) werden dazu verwendet, während eines CDP-Transfers einen Port zu erlangen.
Das höchstwertige Bit des oberen Bytes von F4A2 (1) wird durch die Hardware der CDP gesetzt, um anzuzeigen, ob der S-Bus ein UNIBUS oder ein B-Bus (BR-1566) ist. Dies Bit ist ein Nur-Lejse-Bit.
9098S3/IÖ773
Für das CDP-Statusregister (F4A0) (siehe Tabelle 1) zeigt das niedrigstwertige Bit im Zustand "1" an, daß der CDP belegt ist und an einer Routine "GET-PUT" (hole-gebe) oder 11CDP-Block-Transfer" beteiligt ist. Bits 14 bis 12 zeigen die verschiedenen ünterbrechungsstat des MP-, D- und S-Busses an. Die Bits 11 bis 9 werden entsprechend der Beendigung dieser speziellen Transfer-Arten gesetzt. Um ein Schreiben des niedrigstwertigen Bits von MPCS (MP-Adresse = F404, System-Adresse = 776710) zu erfassen, wird Bit 8 gesetzt. Bit 7 bildet eine Summation der Fehler-Bits 5 bis 0. Bit 3 bis 0 sind der PB- und PA-Status sowohl für den S-Bus als auch den D-Bus. Diese Bits zeigen Paritätsfehler an, wie sie von der CPU definiert werden. Bit 5 zeigt einen Paritätsfehler in dem MP-Speicher während eines Lesevorgangs des CDP-Speichers an. Bit 4 wird gesetzt, wenn der CDP eine Firmware-Routine nicht innerhalb 21,5 Mikrosekunden beendet. Dies zeigt für gewöhnlich an, daß von der Firmware keine vorweggenommene Antwort empfangen wurde. Wenn bei dem CDP ein Zeitablauf eintritt, werden der CDP und die Platte zurückgesetzt.
Für die CDP-Tasten (F4A4) (siehe Tabelle 3) arbeiten die Bits 15 bis 0 wie Augenblicks-Drucktasten. Das heißt, jedesmal wenn der Mikroprozessor eine "1" auf den Bits 15 bis 0 ausgibt, wird die zu diesem Bit gehörige Funktion oder Aktivität angestoßen. Die Ausgabe einer "1" auf dem Bit 14 startet die Aktivität, die durch die MP-Bits 5 bis 7 nach Tabelle 2 definiert ist. Um die durch die MP-Bits 15 bis 14 nach Tabelle 2 definierte Aktivität in Gang zu setzen, muß ein entsprechender Plattenbefehl und eine "1" in das nxedrxgstwertige Bit in FICC (PSR = 00FF) geschrieben werden.
Was die Transferparameter anbelangt, so müssen, falls der D-Port bei einem CDP-Transfer beteiligt ist, F480 bis F482 die D-Port-Startadresse (im Byte) beinhalten. Ist bei einem CDP-Transfer der P- oder MP-Port beteiligt, so muß F484 die Startadresse (im Byte) enthalten. Wenn der S-Port bei einem CDP-Transfer beteiligt ist, müssen F486 bis F488 die S-Port-
909883/0773
Startadresse enthalten (in Byte-Form beim UNIBUS und in Wortform beim B-Bus). Wenn die Platte bei einem Transfer durch den CDP beteiligt ist, müssen F48A bis F48C die Busadresse (in Worten beim B-Bus, in Bytes für alle anderen Fälle) beinhalten. Nach einer Unterbrechung von der Platte enthält F494 die Unterbrechungs-Vektoradresse von der Platte. Wenn eine Unterbrechung an das System gegeben wird, muß F496 die Unterbrechungs-vektoradresse des Systems enthalten.
Der Mikroprozessor kann indirekt auf irgendeinen Adreßraum des D-Busses zugreifen. Ein Seitenwechselverfahren verwendet das PSR-Register, um die acht höchstwertigen D-Bus-Adreß-Bits (n) zu liefern. Die niedrigstwertigen neun Wortadressen-Bits (X) werden von dem Mikroprozessor geliefert. (Das Byte-Auswahl-Bit 15 ist "0".) Die Verwendung von neun Auswahl-Bits ergibt eine Seitengröße von 512 (CPU)-Worten. Die 512 Wörter beginnen bei FOOO (Mikroprozessor-Adresse) und werden über den D-Bus seitenweise umgelagert. Dieses Merkmal wird normalerweise dazu verwendet, auf die E/A-Raum-Steuerregister zuzugreifen, es kann jedoch dazu verwendet werden, ebenso auf irgendeinen Adreßraum des D-Busses zuzugreifen.
Mikroprozessor-Adreß-Bits 0 1 2 3 4 5 6 7 8 9 10 11 12 131415
FOOO 1 -1110 OX" XXXXXXXX.
Seitenauswahl-Register 57 ^ 15 14 13 12 11 io 9 8 7 6 5 4 3 2 1
D-Bus-Adresse n n n n nn n „.XXX XXXXXXX
Für dine F49A-CDP-Wortzählung muß F49A das 2er-Komplement der Anzahl von-Worten eines CDP-Transfers enthalten, und für eine F49C-Doppelweg-Wortzählung muß F49C den Doppelweg-Zählerstand in Form des 2er-Komplements enthalten. Was die CDP-Mikrocode-Routinen anbelangt, so zeigt die nachstehende Tabelle 7 die 21 Firmware-Routinen (Mikroprogramme), die in dem CDP vorhanden sind. Diese Routinen können in sechs Hauptgruppen unterteilt werden. Jedes dieser Programme wird in Abhängigkeit von einem Anstoß- oder Reizsignal, welches zu der Prioritätslogik
gelangt, aufgerufen. Diese Anstoßsignale kommen entweder von einer externen oder internen Quelle (das heißt, eine Routine ruft eine andere Routine auf).
Tabelle 7: Programmfunktion Mikroprogramm
A. Verbinde S-Port-CPÜ mit dem Briefkastenspeicher
B. Sende Unterbrechungs-Vektoradresse an den S-Port-CPU
C. Verbinde MP für eine Aktivität mit dem CDP
D. Empfange Unterbrechungs-Vektoradresse von der Platte
E. Bewege Daten zwischen der Platte und dem Notxzblockspeicher
F. Bewege Daten zwischen der Platte und dem S-Port-Speicher
G. Bewege Daten zwischen der Platte und dem MP-Speicher
H. Bewege Daten von der Platte zu dem Notxzblockspeicher und
dem S-Port-Speicher
I. Prüfe zulässige Wortzählung, stoße Routine "GET" (hole) an
J. Gebe (put) vier Wörter in den S-Port-Speicher
K. Gebe vier Wörter in den Notxzblockspeicher
L. Gebe vier Wörter in den MP-Speicher
M. Hole (get) vier Wörter aus dem Notxzblockspeicher
N. Hole vier Wörter aus dem S-Port-Speicher
0. Hole vier Wörter aus dem MP-Speicher
P. Gebe ein Wort in den S-Port-Speicher
Q. Gebe ein Wort in den Notxzblockspeicher
R. Gebe ein Wort in den MP-Speicher
S. Hole ein Wort aus dem Notxzblockspeicher
T. Hole ein Wort aus dem S-Port-Speicher
U. Hole ein Wort aus dem MP-Speicher.
Nachfolgend soll eine kurze Beschreibung dieser Programmfunktionen gegeben werden:
A --Verbinde S-Port-CPU mit Briefkastenspeicher Nach dem Erkennen eines Versuchs seitens des S-Port-CPU, auf eine dem BR-1539 zugewiesene Busadresse zuzugreifen, setzt das FPLA (feld-programmierbares Logikfeld) SYSHIT, wodurch GOODHIT gesetzt wird. GOODHIT ist die Eingabe höchster Priori-
809883/0773
tat, die an die Prioritäts-Verbindungslogik gelangt.
B - Gebe Unterbrechungs-Vektoradresse an den S-Port-CPU Wenn der Mikroprozessor eine 40 (HEX) nach F4A4 schreibt, wird MPUPUSH6 niedrig, wodurch ein BR5 das System verläßt. Nach Empfang einer Bestätigung (S OUR BG5 Ql S OS) wird dieses Flag bei der Prioritäts-Verbindungslogik gebucht.
C - Verbinde MP für eine Aktivität mit dem CDP
Ein MP-Zugriff auf die Adressen in dem Raum FOOO bis F4A6 veranlaßt, daß in der Prioritäts-Verbindungslogik (PCL) ein Flag CDP SELECT (CDP-Auswahl) gesetzt wird.
D - Empfange Unterbrechungs-Vektoradresse von der Platte Bei Erhalt eines zulässigen DM BR von der Platte wird in der Prioritäts-Verbindungslogik ein Flag DM BR5 IN ANDOK gesetzt.
E-H - Plattenbehandlung
Bei Erhalt von NPR von der Platte und nach Sicherstellung des erforderlichen Worts setzt der U ROM in der Prioritäts-Verbindungslogik ein Flag SERVICE DISK (Plattenbehandlung).
I - U - Transfer-Routinen
Durch das Einschreiben einer "1" in das Bit 14 von F4A4 wird über MPUPUSH1 das Bit CDP GO gesetzt. Dann würde CDP GO die Routine "CDP GO" über die Prioritäts-Verbindungslogik aufrufen. Am Ende dieser Routine wird die Routine "GET" (hole) angestoßen. Am Ende der Routine GET wird die Routine "PÜT" (gebe) angestoßen. Fig. 4 zeigt den Ablauf. Die Flags GET und PUT sind die Eingänge der Prioritäts-Verbindungslogik mit der niedrigsten Priorität.
Nun sei wieder Fig. 3 für die weitere Erläuterung betrachtet. Es sei daran erinnert, daß Blocktransferparameter in dem bipolaren, 16 Worte umfassenden RAM 38 auf hoher Geschwindigkeit gehalten werden (das RAM 38 ist in der Mitte unten gezeigt).
9098 83/0773
Auf den RAM kann entweder durch die MP- oder die CDP-Firmware zugegriffen werden. Wenn der MP in irgendeine Adresse innerhalb des F480-F49E-Blocks einschreibt, so wird durch die Firmware ein Pfad derart ausgewählt, daß die Daten von den MP-Datenempfängern (in der Mitte links in Fig. 3) durch den 4-ZU-1-Multiplexer 44, den 2-zu-1-Multiplexer 46 und schließlich durch den 2-zu-1-Datenmultiplexer 62 zu dem RAM gelenkt werden. Die Adresse wird von den MP-Adreßempfängern 66 (links unten in der Zeichnung) abgegriffen und durch den 2-zu-1-Adreßmultiplexer 42 geleitet. Wenn der MP den RAM liest, wird das Ausgabepuffer-Register 55 mit den Ausgabedaten geladen, die über den Port 3 des 4-zu-1-Multiplexers 44 (oben in der Zeichnung) gesteuert werden. Die aus dem 4-zu-1-Multiplexer kommenden Daten gelangen durch den 2-zu-1-Multiplexer 46 und durch den Port 3 des MP-Datenmultiplexers 49 zu den MP-Port-Datentreibern 50.
Wenn die Firmware in dem CDP auf den RAM zugreift, kann ein anderer Port des Adreßmultiplexers 67 und einer der Ports des Datenmultiplexers 68 ausgewählt werden, um den Speicherinhalt zu lesen und zu aktualisieren. Wenn beispielsweise die S-Adreßregister benutzt würden, wäre der Inhalt der Bits 0-15 in dem oberen Adreßzähler 56 geblieben. Nimmt man nun an, daß der Inhalt des Ausgangs-Pufferregisters 55 in hexadezimaler Form den Wert FFFE habe, so wird, wenn der Mikrocode die S-Adreßregister aktualisieren will, eine 2 an den anderen Eingang des Addierers 71 gelegt. Der Ausgang des Addierers umfaßt nun sämtlich Nullen mit einem Übertrag. Durch einen Inkrementierungsbefehl seitens der Firmware veranlaßt der übertrag, daß der Zähler 56 erhöht wird. Nachdem die Bits 0 - 15 in den RAM zurückgeschrieben sind, würde der Port 1 des Datenmultiplexers 68 ausgewählt, und der Zählerinhalt über den Multiplexer 46 in den RAM eingegeben.
Die CDP-Steuerlogik 58 soll nun unter Bezugnahme auf Fig. 5 erläutert werden. Durch drei Sätze synchroner, parallel geladener 8-Bit-Zähler A, B und C wird ein Mikrozustands-Zähler 80
909883/0773
implementiert. Durch die Verwendung von 8 Bits kann der Zähler 256 Zustände annehmen. Ein Seitenauswahl-Bit 81 verdoppelt diesen Wert auf 512. Die Ausgangsgrößen des Zustandszählers werden als Adresse für 20 Mikroprogramm-Steuer-ROMs verwendet. Jedes ROM (Nur-Lese-Speicher) umfaßt 512 Wörter von je vier Bits.(Drei Zustandszähler werden verwendet, um Schaltstörungen bei Verteilung von Quellenschaltern in einem großen Bereich zu reduzieren.) Die drei Zähler werden starr gekoppelt betrieben. Das durch den Zustandszähler ausgewählte 80-Bit-ROM-Wort steuert den CDP.
Es gibt vier Quellen für den nächsten Inhalt des Zustandszählers 80: die laufende Adresse +1 (Inkrementieren durch den Takt 82);' die Sprung-ROMs 83 (Verzweigungen); die Startadressen-ROMs 73 (Hardware-Verzweigung zum Starten einer Behandlungsroutine) und einen Wartungseingang 85 (externer Kippschalter). Die ersten beiden Möglichkeiten werden dazu verwendet, den Inhalt des Zustandszählers zu ändern; sie werden implementiert durch einen Test/Sprung-MUX 86. Die Lade- (LD) und Zählfreigabe-(P,T) eingänge sind an die Klemme INCR angeschlossen. Ist INCR hoch, so wird der Zustandszähler beim nächsten Takt erhöht. Ist INCR niedrig, so nimmt der Zähler beim nächsten Takt den derzeitig auf den Dateneingangsleitungen vorliegenden Zustand ein.
Die zum Herleiten von INCR verwendete Logik umfaßt zwei 16-zu-i-Multiplexer und verschiedene EXCLUSIV-ODER-Glieder. Die Logik reduziert sich auf ein äquivalentes EXCLUSIV-NOR-Glied.
Für die Startadresse werden die Ädreßeingänge des 512-Wort-Startadressen-ROM.84 (Fig. 5) in drei Gruppen unterteilt. Der Plattenbefehl wird an Adressen AO und Al eingegeben. Der CDP-Befehl wird an Adressen A2, A3 und A4 gelegt. Die CDP-Prioritäts-Verbindungslogik 87 wird an A5, A6 und A7 gegeben. Ein an A8 gelangender Eingang (Status, Fig. 3) bestimmt, wo die durch den CDP gesteuerten Transfers stattfinden (ein Wort oder vier Worte zu einer Zeit). Die gelesene Startadressen-Stelle ist daher eine Funktion der Prioritäts-Verbindungslogik (A5, A6 und A7) und des speziellen CDP- oder Platten-Transfermodus.
909883/0773
Die nachstehende Tabelle 8 ist eine Übersicht des Startadressen-ROM.
α. C α.
Q S O
CL υ ti O
η
O 8 CL
υ ί-
Ul
C3 ο
Η
ρ
lsi
□-■at:
ίο
II .
3 E
S2OZSO
QQQQQQQQ
OOOOOOÜO
CQ CO fi^ C^ CQ Γ0 CQ CQ
"•g t» CL ra 3 3 3®
CCCS
a a a ~
ο «- cm eo
UJlLOI
QQQQ
O Ü O Ü
GQ QQ CQ CQ
OOOOOOOO O O O O
W CO U.
■I*
S ti χι
> N
— tj
•C 'ΐϊ O c Z
" 5 w Z 2 Έ
w 1- 3 Η-
ο. α ο. oc dc α
QQQQQQQQ
Uüüüüüüü
Q3 ^O Γ^ CQ «I
3 3 3 JS
M] M Π) P
ΰ j3 +j Co
CL Q. CL g>
C C C %
qj Q) (U ^
jc£ r ο
Ü O O Q.
w w « a "> "> "ξ ο
ν B 5 Q
ο »- cm co
IUlLU)X
QQQQ ο ο υ ο CQ CQ CQ CQ
I!
S S
909883/0773 ORIGINAL INSPECTS
Jeder Buchstabe stellt die Startadresse von einem der 21 Mikroprogramme dar. Die Spaltenauswahl ist die Ausgangsgröße der CDP-Prioritäts-Verbindungslogik (das, was als nächstes zu tun ist). Die Reihenauswahl ist die vorliegende CDP- und Plattentransfer-Art und das STATUS FLG 3. Das STATUS FLG 3 zeigt die Anzahl von Worten an, die für den derzeitigen CDP-Transfer noch verbleiben. Das STATUS FLG 3 ist hoch, wenn zwischen ein und drei Worten für den Transfer verbleiben, es ist niedrig, wenn vier oder mehr Worte noch übertragen werden müssen. Als Beispiel sei angenommen, daß die derzeitige CDP-Transfer-Art ein Transfer zwischen Notizblockspeicher und Datenverarbeitungsanlage ist (1), daß noch vier oder mehr Wörter zu übertragen sind (STATUS FLG 3 ist niedrig), und daß die CDP-Prioritätslogik festlegt, daß eine Routine PUT ausgeführt werden soll (1). Die Übersicht zeigt, daß das Startadressen-ROM die Adresse J auslesen soll. Tabelle 7 zeigt, daß die Adresse J die Mikrocode-Routine ist, die vier Wörter an den S-Port-Speicher gibt (PUT).
Die CDP-Prioritäts-Verbindungslogik 87 (siehe Fig. 5) überwacht fortlaufend Aktivitätsanforderungen.
Ein Plattentransfer wird angestoßen, wenn in das Bit 0 der Stelle 776714g (RPCS) eine "1" eingeschrieben wird. Weiterhin wird das Bit 7, das Fertig-Bit, auf NuIiL gelöscht, wenn das Bit 0 auf "1" gesetzt wird. Um diesen Vorgang zu emulieren, wird das FPLA-Bit F7 eingestellt, wenn das S-Port-CPU eine "Eins" in das Bit 0 der Stelle 776714 schreibt. Der eingestellte Block 7 verhindert, daß der Bit-7-Datenweg zwischen den S-Port-Schnittstellen-Übertragungsgliedern und dem 4-zu-1-Multiplexer 44, der zu dem Briefkastenspeicher 36 führt, zustandekommt (siehe in Fig. 3 das Blockdiagramm der Datenwege). BLOCK 7 wird mit dem Mikrocode-ROM-Bit N1 UND-verknüpft am Verknüfungsglied CDP SYS INT PT. Hierdurch wird das INT S Q F/F gesetzt, wodurch eine Unterbrechung an den Mikroprozessor (INT A WO) gesendet wird.
90988 3/0773
Es gibt acht verschiedene Eingänge, die zu der Prioritäts-Verbindungslogik führen; jeder Eingang wird nachstehend im einzelnen erläutert. Es handelt sich um folgende Eingänge nach Prioritäten geordnet:
a. GOODHIT - Dieser Eingang erfordert,daß der CDP eine Funktion S-Port-CPU zum Briefkasten behandelt.
b. S OUR BG5 Q1 S OK - Dieser Eingang erfordert, daß der CDP eine Unterbrechungs-Vektoradresse an das S-Port-CPU sendet.
c. CDP SELECT - Dieser Eingang macht erforderlich, daß der CDP eine Mikroprozessor-Anforderung zum Lesen oder Einschreiben des CDP-Adreßraums behandelt.
d. DM BR5 IN AND OK - Dieser Eingang erforder, daß der CDP eine Unterbrechungs-Vektoradresse vom D-Bus (Plattensteuerung) annimmt.
e. SERVICE DISK - Dieser Eingang erfordert, daß der CDP eine D-Bus-Master-(Platten-)Anforderung zum Übertragen von Daten behandelt.
f. CDP GO - Dieser Eingang macht erforderlich, daß der CDP einen DMA-Transfer anstößt.
g. PUT - Dieser Eingang erfordert, daß der CDP vier (oder ein) Wörter (Wort) an die durch den CDP-Transfermodus spezifizierte Zieladresse liefert.
h. GET - Dieser Eingang macht erforderlich, daß der CDP vier Wörter (oder ein Wort) von der durch den CDP-Transfermodus spezifizierten Quelle holt.
Nun sollen eine Wartungs-Schnittstelle und -Logik beschrieben werden. Dieser Logiksatz ist gedacht als Mittel zur Behebung von Schwierigkeiten und als eine Einrichtung, die es dem Bedienungspersonal gestattet, Fehler zu isolieren und zu korrigieren. Die Erläuterung erfolgt hier lediglich aus Gründen der Vollständigkeit einer Beschreibung einer beispielhaften Implementierung einer Ausführungsform der Erfindung, die als beste Ausführungsform angesehen wird.
909883/0773
Die Logik in der Wartungsschnittstelle arbeitet zusammen mit einer externen Hardware, die als Testbox oder Prüfbox bekannt ist. Die Prüfbox weist zwei Kabel auf, die an den CDP bei den Stellen S08 und R08 angeschaltet werden. Über diese Kabel wird von dem CDP Leistung entnommen, um die Testbox mit Energie zu versorgen. Weiterhin bilden die Kabel eine Einrichtung, über die die CDP-WartungsSteuerlogik und die Prüfbox Steuersignale austauschen. Die Prüfbox enthält eine Anzeigeeinrichtung, die den Ausgang des Statuszählers in der CDP überwacht, einen Satz von Adreßschaltern, deren Werte in die Statuszähler geladen werden können,und eine Gruppe von Steuerschaltern. In der Prüfbox befindet sich eine Logik, die den Ausgang des Statuszählers mit den eingestellten Adreßschaltern vergleichen kann, um eine Übereinstimmung mittels einer Leuchtdiode anzuzeigen. Weiterhin gibt die Logik einen Impuls jedesmal dann aus, wenn eine Übereinstimmung auftritt. Dieser Impuls kann als Bezugnahme zum Anschaulichmachen anderer Signale der CDP verwendet werden. Dieses Signal ist an einem Testpunkt der Box verfügbar. Es gibt vier Schalter, die den Betrieb der Schnittstelle steuern: CMP/CLR: Im Vergleichsmodus leuchtet eine Leuchtdiode (LED) auf und bleibt angeschaltet, wenn der Ausgang des Statuszählers, mit den Adreßschaltern übereinstimmt. Wird der Schalter in die CLR-Stellung gebracht, so wird die Leuchtdiode gelöscht. Die Stellung dieses Schalters verhindert in keiner Weise die Ausgabe von Vergleichsimpulsen am Testpunkt .
NORM/LOAD: Im NORM-Modus inkrementiert der CDP entweder oder verzweigt beim nächsten Takt, abhängig vom Zustand der Ausgangsgröße der Test/Sprung-MUX-Logik. Im LOAD-Modus wird der Inhalt der Adreßschalter freigegeben und bei einem nachfolgenden Takt in den Zustandezähler geladen (es handelt sich hier nicht notwendigerweise um den nächsten Takt).
RUN/STP: Im RUN-Modus läuft der freie CDP-Systemtakt. In der Stellung STP wird der Takt gestoppt, und die Taktsteuerung wird durch einen Schalter SINGLE STEP übernommen.
SINGLE STEP: Befindet sich der Schalter RUN/STP in der
90 98 83/0773
Stellung STP, so wird der Schalter SINGLE STEP freigegeben, und er veranlaßt bei Betätigung, daß ein einzelner Takt in dem CDP erzeugt wird.
Befindet sich das Signal SYNC STP CLK in hohem Zustand, so bewirkt ein Loslassen des Knopfes SINGLE STEP, daß das Signal END ONE STEP für eine Taktperiode nach der Abfallflanke des Taktsignals niedrig wird. Da SYNC STP CLK niedrig ist, wird CLK STP für eine Taktperiode hoch, wodurch ein Taktimpuls erzeugt werden kann.
Befindet sich der Schalter NORM/LOAD in der Stellung LOAD, so ist MANLOAD hoch, wodurch der Decoder CO7 gesperrt wird. Dies bringt sämtliche Ausgänge von CO7 in den hohen Zustand, wodurch die Ausgänge der Startadressen- und Sprung-ROMs abgeschaltet werden. Das Signal MANLOAD gibt weiterhin die Verknüpfungsglieder MO7 und MO6 (mit offenem Kollektor) frei und gibt somit die Schalterstellungen der Prüfbox an die Eingänge des Zustandszählers. Um diese Werte jedoch zu laden, muß der Ladeeingang der Zähler niedrig sein. Wenn bei diesem Ablauf eine Mikrocode-Routine über den Schalter RUN/LTP gestoppt wird, muß die Bedienungsperson irgendwie veranlassen, daß der Ladeeingang der Zähler niedrig wird. Wenn eine im Mikrocode vorliegende Routine zum nächsten Zustand inkrementieren will, wird der 1-Eingang von K05 ausgewählt. Normalerweise wäre MLD niedrig, und die Zustandszähler würden beim nächsten Takt inkrementiert. Das Einstellen von MANLOAD auf einen niedrigen Pegel jedoch veranlaßt, daß MLD hoch ist, und somit würden die Zähler beim nächsten Takt geladen. Wenn andererseits der Mikrocode an einem der Eingänge der Multiplexer einen Test vollzieht, dann kann der Ausgang des XOR-Verknüpfungsgliedes, INCR, niedrig sein oder auch nicht. Ist INCR hoch, so wird der Inhalt der Zustandszähler erhöht; sonst werden die Schaltersignale geladen. Daher kann man im allgemeinen einen Zustand von der Prüfbox innerhalb von zwei Takten laden, wenn man nicht den Mikrocode in Codeabschnitten anhält, wo nacheinander zwei oder mehr Bedingungen abgeprüft werden.
90988 3/0773
Mikroprogramme
Im folgenden Abschnitt wird der CDP-Mikrocode funktionsmäßig im einzelnen erläutert. Jede Funktion besitzt zwei Erläuterungsniveaus. Die beiden Niveaus der Dokumentation sind: eine allgemeine Beschreibung der durch die Mikrocode-Routine ausgeführten Funktion; und eine schnell übersichtliche Flußdiagramm-Darstellung,,in der lediglich die Prüf- und Sprungbedingungen notiert sind. Ein zu sich selbst zurückführender Zustand bedeutet für die angezeigte Bedingung einen Zustand "warten".
ROM-Codierung: Die ROMs für den CDP-Mikrocode umfassen jeweils Worte von je 4 Bits. Die CDP-Mikroeinheit umfaßt 20 derartiger ROMs. Jedes Wort (oder Zustand) ist 80 Bits lang.
a. Die Mikrocodeform ist 32 Worte von 80 Bits. 16 Formen werden dazu verwendet, sämtliche CDP-Mikrocode-Routinen zu dokumentieren.
b. Jede Form teilt sich auf in zwei Seiten mit je 16 Worten. Der 8-Bit-CDP-Zustandszähler identifiziert die vorliegende Seitenstellung und einer der ROMs (ROM A1) wählt, aus zwischen hoher und niedriger Seite. Der Zustandszähler schreitet (inkrementiert) von Zeile zu Zeile (166 ns pro Zustand), wenn nicht eine Sprungbedingung erfüllt ist. Tritt eine Sprungbedingung auf, so wird der Zustandszähler mit dem Inhalt der Sprung-ROMs geladen, der in der rechten Seite der Form gezeigt ist. Die mit einem Dreieck markierten Bits sind durch ein Flip-Flop gepuffert. Das heißt, das so markierte Bit wird zu der CDP-Logik bei demjenigen Takt gesendet, der auf den Takt folgt, welcher veranlaßt hat, daß dieser Zustand eingenommen wurde. ROM-Bits, die nicht mit einem Dreieck versehen sind, werden wirksam in der Mitte der Taktperiode. Die untere Reihe der Form identifiziert dasjenige Blatt des Logikdiagramms, auf dem das ROM-Bit verwendet wird. Als weitere Verständnishilfe sind diejenigen ROM-Bits, die den CDP-Datenpfad steuern,
909893/0773
in dem Datenpfad-Blockdiagramm (Fig.3) gezeigt. So zum Beispiel wird der Ausgang des Vierfach-Puffers durch ROM H4 freigegeben und ausgewählt durch ROM H2 und ROM H3.
Test-Routinen: Beim Betreten dieser Routine vom Unbelegt-Zustand aus sollte das RAM-Ausgangspufferregister (OBR) eine Null enthalten. Mit dieser Information werden R1 und R2 mit dem in OBR enthaltenen Wert geladen. R3 wird dann über den Addierer inkrementiert, bis der Zustand R3 = FF erreicht ist. An diesem Punkt werden OBR = R3 und die Bedingung (OBR+1) in den Addierer gegeben, und an dem Addierer sollte ein Übertrag-Ausgangssignal entstehen. Dann wird das Flip-Flop STATUS FLAG getaktet, wodurch dessen Ausgang hoch werden sollte. Dann wird R3 (= 11111111) nach R2 gespeichert, und OBR wird unter Verwendung von R1 gelöscht. R3 wird ebenfalls gelöscht, und wiederum wird das Flip-Flop STATUS FLAG 3 getaktet. Da nun der Übertrag-Ausgang niedrig sein sollte, sollte das Flip-Flop abfallen, und dieser Vorgang wird wiederholt. Während dieser Zeit sind die Daten- und Adreßtreiber des D-Ports und des S-Ports freigegeben. Wenn der grundlegende Datenweg vom RAM zu diesen Ports richtig ist, sollte am Ausgang dieser Treiber eine Teiler-2-Rechteckwelle beobachtet werden. Wenn beispielsweise die Frequenz von DATAOOBS 1 MHz beträgt, dann sollte die DATAO1BS auf 500 kHz wechseln. Diese Routine stelle Werte in R1 und R2 bereit, die in nachfolgenden Vorgängen verwendet werden.
Erhöhen des oberen Adreßzählers: Diese Routine beginnt damit, über R2 lauter Einsen nach OBR zu laden. Die Bedingung (OBR+1) wird dann in den Addierer gegeben, und der obere Adreßzähler (UAC) wird für das Zählen freigegeben. Dann sollte der UAC zählen.
Laden des oberen Adreßzählers; Der UAC wird alternierend mit Einsen und Nullen über R2, bzw. R3 geladen.
Einsen/Nullen-Prüfung: Zuerst wird OBR gelöscht, die Bedingung (OBR+1) wird in den Addierer gegeben, und das Übertrag-Flip-Flop
909883/0773
wird getaktet. Während dieser Zeit sollte kein Übertrag vorliegen. Dann wird die Bedingung (OBR+FF) erzwungen, und das Übertrag-Flip-Flop wird getaktet. Während dieser Zeit sollte ebenfalls kein Übertrag auftreten. Dann wird OBR mit FF geladen, die Bedingung (OBR+0) wird im Addierer erzwungen, und das Übertrag-Flip-Flop wird getaktet. Wiederum sollte das Flip-Flop nicht gesetzt sein. Schließlich wird (OBR+1) erzwungen und das Übertrag-Flip-Flop getaktet. Nun sollte das Flip-Flop gesetzt sein. Die Bedingung (OBR+0) wird in dem Addierer erwzungen, und das Flip-Flop wird getaktet; anschließend sollte das STATUS FLAG 3 auf Null gehen.
Tabelle 9: Test-Routinen-Programmzustände
Zustand Befehle
Init./Inkr.
4 Inhalt des RAM-Ausgangspuffer-Registers nach R1 (RAM 01) schreiben
5 R1-Schreibvorgang abgeschlossen
6 Schreibe den Inhalt des RAM-Ausgangspuffer-Registers nach R3
7 R3-Schreibvorgang abgeschlossen
10 Laden des RAM-Ausgangspuffer-Registers (OBR) mit R3
11 Addiere 1 zum Inhalt des RAM-OBR
12 Springen nach 15, falls Übertrag festgestellt wird
13 Addiere 1 auf den Inhalt des RAM-OBR
14 Schreibe das Ergebnis nach R3. Springe nach 10
15 Laden des Übertrag-Flag (STATUS FLAG 3)
16 Schreibe den Inhalt von RAM-OBR nach R2
17 R2-Schreibvorgang abgeschlossen
H,Q Laden des RAM-OBR mit R1 (löschen Rl)
H,1 Schreiben des Inhalts des RAM-OBR nach R3 (R3 0). Laden des Übertrag-Flags
H,2 R3-Schreibvorgang abgeschlossen. Springe nach 10
Inkrementxerungstest des oberen Adreßzählers
H,4 Laden des RAM-OBR mit R2 (11...1). Addiere 1 auf den Inhalt des RAM OBR. Erfasse den Inhalt des oberen Adreßzählers. Sprung auf der Stelle.
909883/0773
Fortsetzung Tabelle 9 - Test-Routinen-Programmzustände
Zustand Befehle
Ladetest für den oberen Adreßzähler Laden des oberen Adreßzählers (UAC) mit R2(1 1)
Laden des UAC mit R1 (Null). Sprung nach H,6
Vierfachpuffer-Test
Laden des RAM-OBR mit R2. Sprung nach H,13 Laden des RAM-OBR mit R1
Schreiben des RAM-OBR nach Stelle 1 des Vierfachpuffers
Abschluß des Schreibvorgangs Lesen von Stelle 1 des Vxerfachpuffers Beende Lesevorgang. Sprung nach H,13
4-zu-1/2-zu-1-Datenpfad-Multiplexer Lade R2 nach UAC und RAM-OBR. Sprung nach H,2 Lade R1 nach UAC und RAM-OBR Schreiben UAC nach R4 Schreiben beendet Schreiben RAM-OBR nach R5 Schreiben beendet. Sprung nach H,2
PSR - Multiplexer
Laden R2 nach UAC und RAM-OBR. Sprung nach Hr11 Laden R1 nach UAC und RAM-OBR Auswahl der PSR-Adreßleitungen
Auswahl der N-PSR-Adreßleitungen (= PSR*). Sprung nach ΗΛ11.
Einsen/Nullen-Test am Addierer Laden R1 nach RAM-OBR. Laden Übertrag-Flag Addiere 1 auf RAM-OBR Laden Übertrag-Flag Addiere 1 ... 1 auf RAM-OBR. Sprung nach H,0
Adresse 1111XXXX Laden Übertrag-Flag Laden RAM-OBR mit R2 (Einsen) Addiere null auf das RAM OBR. Laden Übertrag-Flag
909883/0773
Fortsetzung Tabelle 9 - Test-Routinen-Programmzustände
Zustand Befehl
Forts. Adresse 1111XXXX
H,3 Addiere 1 auf das RAM-OBR
H,4 Laden Übertrag-Flag
H,5 unbelegt. Entferne alle Eingangsgrößen am Addiere
H,6 unbelegt. Warte bis übertrag (falls vorhanden) fort. Sprung nach H,14
S-zu-Briefkasten: Die bei 0 0001 0000 beginnende Mikrocode-Routine verbindet den S-Port (Prozessor) mit dem Briefkasten. Der Briefkasten kann von dem S-Port-Master gelesen oder beschrieben werden. Liest der S-Port-Master (DATI) den Briefkasten, so schreitet der Mikrocode von Stelle 1 bis 5. Verschiedene Zustände stellen Wiederholungen eines vorausgehenden Zustandes dar, um zeitlichen Erfordernissen des Briefkastens (TMS 4036-2) zu genügen. Schreibt der S-Port-Master (DATO) in den Briefkasten ein, so schreitet der Mikrocode von Stelle 7 bis 15. Verschiedene Zustände stellen Wiederholungen eines vorangehenden 'Zustandes dar, um Zeitsteuerungsanforderungen des Briefkastens (TMS 4036-2) zu genügen. Bei Stelle 7 wird ROMN1 gesetzt. ROMN1 wird mit einem Ausdruck UND-verknüpft, welcher einen Versuch feststelle, das Daten-Bit 0 an einer Stelle zu schreiben, die durch ein FPLA-Flag identifiziert wird (SYSINTERR). Der sich ergebende Ausdruck (CDPSYSINTP) setzt ein Flag, welches den MP unterbricht. Fig. 8 und die nachstehende Tabelle beziehen sich auf die S-zu-Briefkasten-Mikrocode-Routinen.
909883/0773
Tabelle 10: S-zu-Briefkasten-Zustandsbefehle Programmstelle: X 0001 XXXX
Zustand Befehl
Falls "SCI" hoch, springe nach DATO (Zustand 7)
Falls "SC1" niedrig, Fortschreiten nach DAT1 (Zustand 1)
Auswählen von FPLA als Quelle für Briefkasten-Adresse (ROM 02)
DAT1
Falls Daten für S-CPU, Freigabe des Briefkastenspeicher-Ausgangs. Freigabe des Datenweges zum 2-zu-1-MüX-Ausgang. Freigabe von 8838-Treibern zum S-Bus
Wiederholung des Zustandes 1
Wiederholung des Zustandes 1. Anstoßen Slave-sync nach S-PCU. Warten auf Negierung vom S-Master-sync. (Wenn vorliegt, übergang nach Zustand 4)
Behandlung abgeschlossen. Negieren der Daten auf dem S-Bus. Sende Ende-Impuls zur Prioritäts-Verbindungslogik.
Sprung nach "unbelegt". Auswahl des Startadressen-ROM. Negiere den Slave-sync.
RSVD
DATO
Falls Daten von S-CPU, Freigabe des Datenweges 4-2U-1-Multiplexer. FPLA als Quelle für Briefkasten-Adresse. Sende Unterbrechung an MP, falls die Stelle gekennzeichnet ist
Wiederhole 7
wiederhole 7
Wiederhole 7. Anstoßen eines Schreibvorgangs im Briefkasten.
Wiederhole 12
Wiederhole 7. Sende Slave-sync nach S-CPU. Warten, bis S-Master-sync negiert.
Negieren Slave-sync nach S-CPU, End-Impuls. Auswahl Startadressen-ROM.
909883/0773
MP-Behandlung: Die an der STelle 0 0010 0000 beginnende Mikrocode-Routine behandelt einen MP-Zugriff auf den CDP zugewiesenen Speicherraum. Der CDP-Adreßraum ist in vier unterschiedliche Gruppen aufgeteilt. Ein MP-Zugriff auf Speicherstellen FOOO bis F3FE (512 Wörter) veranlaßt den CDP, den MP-Bus an den D-Bus anzuschalten. Die höchstwertigen Bits des D-Bus, A17-A10, werden von den Bits 7-0 der RAM-Stelle 14 (F498) beliefert. Die niedrigstwertigen Bits des D-Bus, A9-A1, werden durch die zugehörigen MP-Adreß-Bits 6-14 geliefert. Ein MP-Zugriff auf Stellen F400 bis F47E veranlaßt, daß der CDP den MP an den Briefkasten anschaltet. Ein MP-Zugriff auf Stellen F480 bis F49E veranlaßt, daß der CDP den Mikroprozessor an den Parameter-RAM anschaltet. Ein MP-Zugriff auf die Stellen F4A0 bis F4A4 veranlaßt, daß der CDP den Mikroprozessor an die Befehlsregister, die Tasten und Status-Bits anschaltet. Figuren 9 und 10 sowie die nachstehende Tabelle gehören zu der Mikrocode-Routine.
Tabelle 11: MP-Behandlungs-Zustandsbefehle Programmstellen: X 0010 XXXX
Zustand Befehl
0 Wenn der MP auf den 512-Wort-Speicherraum zugreift, springe auf Adresse 071 „. Gib MP-Daten auf den Datenweg.
1 Wenn MP."auf den Briefkasten zugreift, Sprung nach 7
2 Wenn MP auf Status- und Befehlsregister zugreift, Sprung nach 4
3 Sprung nach H,2
4 Setzen des MP-GO-Bits (Mitteilung an MP, das CDP fertig ist). Warten, bis ENDMEMCYC wahr wird.
5 Setzen des Bits MPUEND (Bestätigung des Empfangs von ENDMEMCYC). Warten auf Negierung von ENDMEMCYC
6 Sprung nach "unbesetzt"
7 Falls MP eine Leseoperation durchführt, Sprung nach 15
10 unbesetzt (NOP). (Speicher-Bereitstellungszeit)
11 Schreiben in Briefkasten
12 Hier Beendigung des Schreibvorgangs
13 Setzen von MP GO (Mitteilung an MP, daß CDP fertig). Warten, bis ENDMEMCYC wahr wird.
909883/0773
Fortsetzung Tabelle 11 - MP-Behandlungs-Zustandsbefehle
Zustand Befehl
Sprung nach H,5
Lesen Briefkasten (Setzen ROM04} unbesetzt (NOP). (Warten auf zulässige Daten) Sprung nach H,0
Setzen MP GO. Warten, bis ENDMEMCYC wahr wird.
Sprung nach H,5
Bereitstellen von MP-Daten und -Adresse für RAM-Speicher. Wenn MP liest, Sprung nach H,7
Schreiben des RAM-Speichers (Setzen von ROM E2). Sprung nach H, 14
Abschluß des Schreibvorgangs und Setzen von MP GO. Warten, bis ENDMEMCYC wahr wird
Setzen von MPU END (ROM M3). Warten, bis ENDMEMCYC wahr wird.
Sprung nach "unbelegt"
Setzen von ROM 11 (zwingen des MP-Daten-Multiplexers, Datenweg auszuwählen). Laden des RAM-Speicher-Ausgangsdaten-Registers. Sprung nach H,4
H,14 Hier Abschluß des Schreibvorgangs und Sprung nach H,4,
Programm: MP nach D/M-Bus Stelle: 0011 1001 Lesen PSR. Warten, falls D/M-Bus noch belegt.
Falls Transfer DATO, gehe zum Zustand 14.
Falls DAT1, gehe zum Zustand H,7
Falls DATO, schalte Datenweg vom MP zum D/M-Bus. PSR-Adreß-Bit ein. Mache D/M-Bus "belegt". D/M C1 ein
Wenn D/M-Adresse E/A-Seit« ist, gehe zum Zustand
Setze MEM MSYC. Sprung nach H,0, ermögliche Selbstrücksetzen von MSYN.
Setze Platten-MSYSNC. Sprung nach H,5 H,0 Warten auf MEM FINI
H,1 Buszyklus vollständig. Sende MPU GO. Warten auf END CYCLE
H,2 Negieren MPU GO. Warten auf END CYCLE*. Senden MPU END
H,3 Senden Ende-Impuls
H,4 Senden Ende-Impuls (END PULSE), übergang nach "unbesetzt". Auswahl SA ROM
9098 8 3/0773
Fortsetzung Tabelle 11 - MP-Behandlungs-Zustandsbefehle
Zustand Befehl
H, 5 Platten-MSYN ein. Warten auf Platten-SSYN H,6 Platten-SSYN, gehe nach H,1
DAT1
H,7 Verbinde Datenweg zwischen D/M und MP. Falls D/M-Adresse eine E/A-Seite ist, gehe nach H,15. Senden Adresse, "Bus belegt" aus
H,10 Notizblock muß MSYN an Notizblock senden, kein Selbstrücksetzen von MSYN. Hier warten auf Notizblock-SSYN
H,11 Senden MPU GO. Warten auf END CYCLE H,12 Negieren MSYN zum Notizblock
H,13 Negieren MPU GO und Warten auf END CYCLE*. Senden MPU END
H,14 Sprung nach H,3
H,15 Senden MSYN an Platte und Warten auf Platten-SSYN
H,16 Senden MPU GO und Warten auf END CYCLE
H,17 Sprung nach H,13 und Abfallen von MSYN
Unterbrechung von D/M: Die bei der Stelle 0 0011 0110 beginnende Mikrocode-Routine empfängt eine Unterbrechungs-Vektoradresse von einem D-Bus-Master und speichert sie in der (MP-Adresse) Stelle F494. Wird von dem D-Bus-Master eine Unterbrechungs-Vektoradresse empfangen, so wird an den MP ein Unterbrechungssignal gesendet. Fig. 11 und die nachstehende Tabelle 9ehören zu dieser Routine.
Tabelle 12 D-Bus-Unterbrechungs-Zustandsbefehle Speicherstelle: 0011 XXXX
Zustand Befehl
0 Auswahl von RAM-Speicherstellen für Platten-Unterbrechungs-Vektor. Freigeben der Datenwege 4-;zu-1- und 2-ZU-1, Auswahl der D-Daten. Hier Warten für D-Bus-Unterbrechung
909883/0773
Fortsetzung Tabelle 12 - D-Bus-Unterbrechungs-Zustandsbefehle
Zustand Befehl
1 Nun D/M-Bus-Unterbrechung durch Anstoßen eines Schreibvorgangs im RAM. Senden INT nach MP (ROMNZ)
2 RAM-Schreibvorgang abgeschlossen. Senden Slave-sync (ROM 13) an D-Bus.
3 Hier Warten auf Unterbrechung zum Negieren des noch gesetzten Slave-sync
4 Hier Warten, falls BR5 noch an. Negiere Slave-sync
5 END PULSE. SA ROM, Sprung nach "unbesetzt"
6 Senden BG5 an Platte. Warten auf SACK von Platte
7 Sprung nach 0011 0000. Abfall von BG5 zur Platte.
Platten-Notizblock: Die an der Stelle 0 0100 0000 beginnende Mikrocode-Routine verbindet die Platte an den Notizblock (extern, D-Bus) für einen Datentransfer. Der CDP muß dies tun, da die Master/Slave-Synchronisationen einzigartig sind für die Plattensteuerung und den D-Bus-Speicher. Fig. 12 und die nachstehende Tabelle gehören zu dieser Routine.
Tabelle 13: Platten-Notizblock-Programmzustände
Zustand Befehl
0 Hier Warten auf SACK von Platte. Senden NPG zu der Platte (ROM M1)
1 Hier Warten auf Piatten-M-sync
2 Sprung nach C1 (DISK DATO) zum Zustand 14
3 C1 nicht an, so daß Transfer (DISK DAT1) ist. Senden MSYN an Speicher (ROM 12). Hier Warten auf Speicher-Slave-sync
4 Slave-sync vom Speicher, daher senden von Slave-sync an Platte (ROM 13). Warten, bis Platte M-sync fallenläßt
5 Negieren M-sync zum Speicher. Schreite nach 6
6 Negiere Slave-sync an Platte. Schreite nach 7
909883/0773
Fortsetzung Tabelle 13 - Platten-Notizblock-Programmzustände
Zustand Befehl
7 Sprung Platten-MSYN nach 2
10 Sprung "belegt" nach 7. Sende END PULSE (ROM P4) 1T Ausgang nach "unbesetzt"
Platte-nach-Speicher
14 Sende MSYN zum Speicher (ROM 12). Warte auf Speicher-Slave-sync. Ermögliche Selbstrücksetzen für MSYN (ROM E4).
15 · Sprung nach 4
Platte/System: Die an der Stelle 0 0101 0000 beginnende Mikrocode-Routine verbindet den D-Port-Bus-Master mit dem S-Port-Bus für einen NPR (Daten) Transfer. Die S-Port-Adresse wird'in den CDP-RAM-Speicherstellen 5 (LSB) und 6 (MSB) gehalten. Diese RAM-Speicherstellen werden von dem MP als Stellen F48A und F48C angesprochen. Die Routine behandelt Plattendaten-Transfers, bis die Plattensteuerung ihre Eigenschaft als Bus-Master abgibt. Der CDP behält keine Wortzählung, und es wird durch den Plattendaten-Transfer keine CDP-Unterbrechung erzeugt. Fig. sowie die nachstehende Tabelle gehören zu der Platten/System-Mikrocode-Routine.
a. Platte/System-Flußdiagramm, Figuren 6-19
b. Platte/System-Codeform, Figuren 6-20
c. Platte/System-Zustandsbefehle, Tabelle 6-14
Tabelle 14: Platte/System-Zustandsbefehle Speicherstelle: 0101 XXXX
Zustand Befehl
0 Laden des niedrigstwertigen Teils der Platten-Slave-Adresse. Senden NPG an Platte (ROM M1)
1 Lade höchstwertigen Teil der Platten-Slave-Adresse. Senden NPG an Platte. Hier Warten auf "Platten-Bus belegt".
2 Hier Warten auf Platten-Bus-M-sync. Abfallen von NPG an Platte
909883/0773
Fortsetzung Tabelle 14 - Platte/System-Zustandsbefehle
Zustand Befehl
Sprung auf C1 (DISK DATO) nach 17
C1 ist aus, so daß der Transfer (DISK DAT1) ist. Warten, bis S-Bus auf "nicht belegt" geht. Auswahl des S-Ports für Datenweg 4-zu-1-Multiplexer und 2-ZU-1-Multiplexer (ROM G3, ROM G4)
S-Bus ist nicht belegt, daher Senden der Adresse (S belegt, ROM K3). Addiere zwei auf Addierer (ROM C2) und stoße Zurückschreiben der nächsten S-Bus-Adresse an (ROM E2) . Gib Datenweg zum DM-Bus C frei.
Senden Master-sync an S-Bus. Hier Warten auf Slavesync. Der bei Schritt 5 angestoßene Schreibvorgang ist hier beendet.
Senden Slave-sync an Platte. Hier warten, bis Platten-MSYN fällt
Platten-MSYN aus, so Abfall von MSYN auf S-Bus. Hier Warten, bis S-SSYN fällt.
Fallen SSYN an Platte. Erhöhen obere Adreß-Bits. Anstoßen des Zurückschrexbens der oberen Adreß-Bits.
Hier beendigen des angestoßenen Obere-Adresse-Schreibvorgangs
Falls nicht belegt, Verlassen der Routine bei Schritt 15. Laden der niedrigeren Adresse trotzdem, besonders in dem Fall, wo ein weiteres Wort verarbeitet wird.
Falls D/M-MSYN ein, gehe zu Schritt 5.
Erzeuge END PULSE. Sprung bei "D/M-Bus belegt" nach 14
Sprung nach "unbesetzt"
Übergang zur hohen Seite. Platten-Transfer ist DATO, daher verbinde Plattendatenlextungen mit S-Bus (ROM G1, G3, G4)
H,0 Hier warten, falls S-Bus noch belegt
H,1 Falls S nicht belegt, gib Daten frei (ROM K4) sowie Adressen (ROM K3) an S. Schreiben der nächsten Adresse nach RAM
H,2 Senden M-sync an den S-Bus. Warten auf Slavesync. Schreiben von 1 hier abgeschlossen.
H,3 Slave-sync zurück vom S-Bus, dann Negieren von S-M-sync (ROM K1)
909883/0773
Fortsetzung Tabelle 14 - Platten/System-Zustandsbefehle
Zustand Befehl
H,4 Setzen Slave-sync zum Platten-Bus. Schreiben der oberen Adresse in den RAM und Takten der oberen Adreß-Bits (ROM D2, ROM E2)
H,5 Setzen von Slave-sync an Platten-Bus, Warten bis M-sync abfällt. Schreiben der nächsten Adresse hier beendet (obere Bits)
H,6 Falls D/M-Bus nicht belegt, gehe nach 11 und verlasse die Routine; lade jedoch die unteren Adreß-Bits
H,7 Ist Platten-M-sync zurück, so gehe zum Zustand 1
H,10 Gehe zurück nach 6
H,11 Sende S SACK END PULSE
H,12 Sende S Sack. Sprung zu "unbesetzt"
Platte-MP: Die an der Stelle 0 0110 000 beginnende Mikrocode-Routine verbindet den D-Port-Bus-Master mit dem MP-Port für einen NPR (Daten)-Transfer. Die MP-Port-Adresse wird in der CDP-RAM-Steile 5 gehalten. Die RAM-Speicherstelle 5 wird durch den MP an Stelle F48A angesprochen. Diese Routine behandelt Plattendaten-Transfers, bis die Plattendaten-Steuerung ihre Eigenschaft als Bus-Master abtritt. Der CDP behält keine Fortzählung, und durch einen Plattendaten-Transfer wird keine CDP-ünterbrechung erzeugt. Fig. 14 und die folgende Tabelle beziehen sich auf diese Routine.
Tabelle 15: Platte-MP-Progr^mmzustände
Zustand Befehl
Hier Warten auf SACK. Lesen der MP-Adresse (RAM 5). Senden NPG an Platte. Warten auf SACK
Warten auf Platten-MSYN
Falls C1 an, so ist Transfer;(DISK DATO), gehe zum Zustand 14. Schreibe nächste Adresse zurück (RAM. 5)
Ist C1 aus, so ist der Transfer (DISK DAT1). Verschalte Datenweg zwischen MP und Platte. Setze MPU GO und warte auf DMA END. Gib Daten an die Platte aus (ROM J1). Aktualisierung der nächsten Adresse hier fertig.
Senden SSYN an Platte. Warten bis Platten-MSYN negiert. 909883/0773
Fortsetzung Tabelle 15 - Platte-Mp-Programmzustände
Zustand Befehl
5 Senden MPU ΈΝΌ an den MP. Warten auf DMA END. Lesen der nächsten Adresse (RAM 5)
6 Platten-MSYN an, gehe nach 2
7 Belegt an, gehe nach 6
10 Lösche HOLD REQ. Warte bis HOLDA negiert. END PULSE
11 END PULSE. Sprung nach "unbesetzt"
12 RSVD
13 RSVD
14 C1 ist an, so daS der Transfer ein (DISK DATO). Verschalte Datenweg Platte-MP. Setze MPU WRITE und MPU GO. Warte auf DMA END. Schreiben der nächsten Adresse hier beendet
15 Setzen MPU END und Warten, bis DMA END negiert
16 Senden SSYN an Platte. Warten, bis MSYN negiert
17 Sprung nach 6. Lesen der nächsten Adresse (RAM 5)
Platte-Doppelweg: Die an der Stelle 0 0111 000 beginnende Mikrocode-Routine verbindet den D-Bus-Master (Plattensteuerung) mit dem externen Notizblockspeicher und dem S-Port-Bus für Daten (Daten aus der Plattensteuerung). Die externe Notizblockspeicheradresse und der Transfer-Wortzähler werden in der Plattensteuerung gehalten. Dies Systemadresse wird in der CDP-Parameter-RAM-Stelle 5 (F48A) und 6 (F48C) gehalten. In der RAM-Speicherstelle 16 (F49C) wird eine Wortzählung (im 2er-
Komplement) gehalten. Die Wortzählung (F49C) wird bei jedem übertragenen Wort vermindert. Wenn (und falls) die Wortzählung auf Null vermindert wird, wird der Platten-Transfermodus (F4A3) zurückgesetzt, und es wird ein Unterbrechungs-Flag gesetzt (BF-übertragungen abgeschlossen, F4A0-Bit 11). Wenn der Platten-Transfermodus auf Null gesetzt wird, gelangen anschließende Plattendaten nur zu dem externen Notizblock-Speicher. Wenn die BF-Wortzählung (F49C) gleich ist oder kleiner als die Platten-Transfer-Wortzählung, so wird eine Unterbrechung "Doppelwegtransfer abgeschlossen" erzeugt. Falls die genannte Bedingung nicht erfüllt wird, so wird die Unterbrechung nicht erzeugt.
90 9883/0773
Fig. 15 und die nachstehende Tabelle entsprechen dieser Routine:
Tabelle 16: Platten-Doppelweg-Transf er-Programmzustände Speicherstelle: 0111 XXX
Zustand Befehl
0 Hole obere Adreß-Bits. (RAM 6) NPG an Platte
1 Hole niedrigere Adreß-Bits (RAM 5) . Hier Ttfarten auf Platten-MSYN. Datenweg zum System
2 Hier Warten, Falls S-Bus belegt. Schreiben der nächsten Adresse (niedrigere Bits) in den RAM 5. Zwei zum Addierer
3 Setzen des S-Busses auf "belegt". Daten und Adressen aus.
4 Setzen S-MSYN. Setze Notizblock-MSYN. Warten auf Bus-FINI ■
5 Beide Bus-Zyklen abgeschlossen. Setzen Slave-sync an Platte. Hier Warten, bis Platte MSYN negiert
6 Inkrementieren der oberen Adreß-Bits und Zurückschreiben derselben in den RAM 6
7 Hier Schreibvorgang abgeschlossen.
10 Lesen BF-Wortzählung, RAM 16. Eins zum Addierer
11 Schreiben der nächsten Wortzählung zurück zum RAM
12 Hier Schreibvorgang abgeschlossen. Falls CY ein,
so war dies der letzte BF-Transfer. Gehe zum Zustand 17
13 Platten-MSYN ein? Gehe nach 1
14 Platte^belegt" ein? Gehe nach 13
15 "Platte belegt" aus, daher END-Impuls. SACK nach S-Bus
16 SACK nach S. Sprung nach "unbesetzt". END-Impuls
17 Sprung nach H,0. Rücksetzen des BF-Transfer modus (ROM Q1)
H,0 Platten-MSYN ein? Gehe nach H,3. SACK nach S
H,1 "Platte belegt" ein? SACK nach S
H,2 Gehe nach "unbesetzt"
H,3 Gehe nach Notizblockspeicher-Transfer (0100 0010)
S-Bus-Steuerung
H,10 Ermöglichen MSYN-Rücksetzen (AMR) H,11 Setzen SSYN
H,12 Gib Zeit, so daß MSYN hochgehen kann
909883/0773
Fortsetzung Tabelle 16- Platten-Doppelweg-Transfer-
Programmzustände
Zustand Befehl
H, 13 Warten, bis MSYN abfällt
H, 14 Abfall von SSYN
H,15 Warten bis BSUFINI niedrig wird. Abfall von AMR
H,16 Warten, bis BUSFINI hoch wird. Sprung nach H,0
Unterbrechung nach S: Die an der Stelle 0 1000 000 beginnende Mikrocode-Routine überträgt die Unterbrechungs-Vektoradresse (IVA, Interrupt-Vector-Address), die in dem CDP-Parameter-RAM unter der Stelle 13g (F496) vorliegt, zu der CPU, die den S-Bus besitzt. Figur 16 und die nachstehende Tabelle .gehören zu dieser Routine.
Tabelle 17: Programmzustände für "Unterbrechung nach S" Speicherstelle: 1000 0000
Zustand Befehl
0 Lesen RAM-Speicherstelle 13 (S-Unterbrechungs-Vektoradresse) in Ausgaberegister. Hier Warten, falls S-Bus belegt
1 Sprung zum Zustand 3, falls Slave-sync vom vorhergehenden Zyklus aus
2 Sprung nach Zustand 1 - Slave-sync immer noch vom vorhergehenden Zustand aus
3 Setzen "Bus belegt" und Vektor nach S-CPU (ROM K3, ROM K4). Senden SACK nach S-CPU (ROM L2)
4 Wiederholen des Zustandes 3. Negieren Bus-Anfrage an S-CPU (ROM L4). Senden Unterbrechung an S-CPU. Hier Warten, bis Bus-Erteilung negiert.
5 Immer noch Senden "Bus belegt", Daten und Unterbrechung an S-CPU. Abfallen von SACK.
6 Immer noch Senden "Bus belegt", Daten und Unterbrechung an S-CPU. Hier Warten, daß S-SSYN gesetzt.
7 Fortfahren mit Senden Unterbrechung und "Bus belegt" an S-CPU. Negieren der Daten
10 Halten "Bus belegt", jedoch negieren der Unterbrechung. Senden Unterbrechung an S-CPU
9 0 9 8 8 3/0773
" 67 " ' 2326343
Fortsetzung Tabelle 17 - Programmzustände für
"Unterbrechung nach S"
Zustand Befehl
11 Abfallen von "Bus belegt". Sprung nach unbelegt, Start Adressen-ROM
S-PUT: Die an der Stelle 0 1001 0000 beginnende Mikrocode-Routine überträgt ein Datenwort von dem CDP-Vierfachpuffer an eine S-Adresse, die sich bestimmt aus dem Inhalt der Parameter-RAM-Speicherstelle 3 (F486) (LSB) und 4 (F488) (MSB). Nachdem das Wort zu dem Systemspeicher übertragen ist, wird die Stelle 15 (F49A) in den Parameter-RAM auf null hin geprüft. Ist F49A null, so ist der Transfer abgeschlossen, und es wird an den MP eine Unterbrechung (F4A0, Bit 10) gesendet. Ist F49A nicht null, so wird verzweigt zu dem Wortzählungs-Aktualisierungsteil der CDP-GO-Routine (Stelle 0 1111 0010). Die an der Stelle 0 1001 1011 beginnende Mikrocode-Routine überträgt vier Worte von dem CDP-Vierfachpuffer an die S-Bus-Adresse, und zwar in derselben Weise wie die Routine "S-PUT-ONE". Es erfolgt ein Verlassen der Routine zu der Wortzählungs-Aktualisierungs-Routine, wenn mehr Worte übertragen werden sollen. Falls der Transfer beendet ist (Wortzählung gleich null),wird der MP unterbrochen und die Routine verlassen. Fig. 17 und nachstehende Tabelle gehören zu dieser Routine.
Tabelle 18: S-PUT-Programmzustände Speicherstelle: 1001 XXXX
Zustand Befehl
Ein Wort
0 Laden der oberen Adreß-Bits (RAM 4). Hier Warten, falls der S-Port noch belegt.
1 Laden der unteren Adreß-Bits (RAM 3). Zwei zum Addierer. Auswahl des Vierfachpuffers für S-Port-Daten (ROM H4)
2 Setzen "S-Bus belegt" und C1 (ROM K3, ROM K4). Zurückschreiben der nächsten Adresse (RAM 3)
909883/0773
Forsetzung Tabelle 18 - S-PÜT-Programmzustände
Zustand Befehl
3 Setzen S-Bus-MSYNC (ROM K1) und SACK (ROM L2) . Löschen der Entscheidungslogik (ROM D3). Hier Warten auf S-SYNC. Ermöglichen der Selbstrücksetzung für M-SYNC (ROM E4)
4 Erhöhen .der oberen Adreß-Bits und Zurückschreiben derselben (RAM 4)
5 Schreibvorgang beendet
6 Lesen Wortzählung (RAM 15), sämtliche Einsen zum Addierer
7 Falls CY ON, Sprung zu der Routine "Aktualisieren Wortzählung" CDP GO (1111 0010). END-Impuls
10 Zählerstand ist null, so daß das letzte Wort verarbeitet ist. Setze INT für MP (ROM N3). Sprung nach "unbesetzt"
Vier Wörter
13 Lese obere Adreß-Bits (RAM 4)
14 Laden. Lese untere Adreß-Bits. Hier Warten, falls S-Bus belegt. Nullsetzen des Vierfachpuffers und zwei an den Addierer.
15 Schreiben. Setze "S-Bus belegt'an Daten aus. Anstoßen des Rückschreibens der nächsten Adresse
16 Warten. Setze MSYN - Warten auf BUSFINI. Senden SACK an S (ROM L2). Lösche Logik GET PUT
17 Laden. Erhöhen obere Adreß-Bits. Laden der nächsten unteren Adresse. Sprung nach H,0. Vierfachpuffer eins.
H,0 Schreiben. Wie 15
H,1 Warten. Wie 16
H,2 Laden. Wie 17, Vierfachpuffer 2
H,3 Schreiben. Wie 15, Vierfachpuffer 2
H,4 Warten. Wie 16, Vierfachpuffer 2
H,5 Laden. Wie 17, Vierfachpuffer 3
H,6 Schreiben. Wie 15, Vierfachpuffer 3
H,7 Warten. Wie 16, Vierfachpuffer 3
H,10 Erhöhen obere Adreß-Bits und Rückschreiben derselben (RAM 4)
H,11 Schreibvorgang hier beendet
H,12 Lesen der Anzahl von Worten (RAM 15), sämtliche Einsen zum Addierer
H,13 Falls CY an für zusätzliche Verarbeitung, Sprung zur CDP-GO-Routine über H,15
90 9 883/0773
Fortsetzung Tabelle 18 - S-PUT-Programmzustände
Zustand Befehl
H,14 Fertig, daher Setzen MP-Unterbrechung Nr. 5. Sprung nach "unbesetzt"
H,15 Nicht fertig, daher zum Teil "Aktualisiere Wortzähler" der CDP-GO-Routine (1111 0010)
D/M-PÜT; Die an der Stelle 0 1010 000 beginnende Mikrocode-Routine überträgt ein Datenwort von dem CDP-Vierfachpuffer an eine D-Bus-Adresse, die aus dem Inhalt der Parameter-RAM-Speicherstelle 0 (F480, LSB) und 1 (F482, MSB) bestimmt wird. Nachdem das Wort zum Systemspeicher übertragen ist, wird die Parameter-RAM-Stelle 15 (F49A) auf null geprüft. Ist F49A null, so ist der Blocktransfer abgeschlossen, und an den MP wird eine Unterbrechung (F4A0, Bit 10) gesendet. Ist F49A nicht null, so erfolgt ein Verlassen der Routine zu dem Teil "Aktualisiere Wortzählung" der CDP-GO-Routine (Stelle 0 1111 0010). Die an der Stelle 0 1010 1011 beginnende Routine überträgt vier Wörter von dem CDP-Vierfachpuffer an eine D-Bus-Adresse, und zwar in derselben Weise wie die Routine D PUT ONE. Die Routine "Aktualisiere Wortzählung" wird verlassen, wenn mehr Worte zu übertragen sind. Ist der Transfer abgeschlossen (F49A = 0),. wird der MP unterbrochen (F4A0, Bit 10), und die Routine wird verlassen. (Die Routine D-PUT ist ziemlich identisch zu der Routine S-PUT, weshalb die Mikrocode-Anweisungen für S-PUT zu verwenden sind, wobei sämtliche S-PUT-Funktionen für den D-Port zu ändern sind.) Fig. 18 und die ^letzte Tabelle oben gehören zu dieser Routine.
MPU PUT: Die an der Stelle 0 1011 0000 beginnende Mikrocode- ' Routine überträgt ein Datenwort von dem CDP-Vierfachpuffer an eine MP-Bus-Adresse, die bestimmt wird durch den Inhalt der Paramter-RAM-Speicherstelle 2 (F484). Nachdem das Wort zu dem Systemspeicher übertragen ist, wird die Parameter-RAM-Speicherstelle 15 (F49A) auf null geprüft. Ist F49A null, so ist der Blocktransfer abgeschlossen, und es wird eine Unterbre-
909883/0773
chung (F4A0, Bit 10) an den MP gesendet. Ist F49A nicht null, so erfolgt ein Verlassen der Routine zu dem Teil "Aktualisiere Wortzählung" der CDP-GO-Routine (Stelle 0 1111 0010). Die ander Stelle 0 1011 1111 beginnende Routine überträgt vier Worte von dem CDP-Vierfachpuffer an eine MP-Bus-Adresse, und zwar in derselben Weise die die MPU-PUT-Routine für ein Wort. Wenn mehr Worte zu übertragen sind, erfolgt ein Übergang zu der Routine "Aktualisiere Wortzählung". Wenn der Blocktransfer abgeschlossen ist (F49A = 0), wird der MP unterbrochen (F4A0, Bit 10), und die Routine wird verlassen. Fig. 19 und die nachstehende Tabelle gehören zu dieser Routine.
Tabelle 19: MPü-PUT-Programmzustände Speicherstelle: 1011 XXXX
Zustand Befehl
Ein Wort
0 Laden MP-Adresse (RAM 2). Freigabe der Vierfachpuffer-Stelle 0. Setzen Schreibmodus für MP
1 Setzen MPU GO. Hier Warten auf DMA END. Schreiben der nächsten Adresse
2 Setzen MPU END. Warten auf DMA END*. Schreibvorgang hier abgeschlossen.
3 Lies Anzahl der zu übertragenden Worte (RAM 15). Sämtliche Einsen zum Addierer. Rücksetzen der Entscheidungslogik
4 Falls CY ein, Sprung zur CDP-Routine "Aktualisiere Wortzählung" (1111 0010) ROM Q4. Löschen des Haltesignals für MP
5 Ende des Transfers. Senden einer Unterbrechung an MP (ROM N3). Sprung nach unbesetzt. END PULSE
Vier Worte
17 0 Laden MP-Adresse (RAM 2), Freigabe der Vierfachpuffer-Stelle 0. Setzen Schreibmodus für MP. Sprung nach H,0
H,0 1 Setzen PM GO. Hier Warten auf DM?. END. Schreiben der nächsten Adresse in RAM 2
H,1 Setzen MPU END. Hier Warten auf DMA END. Schreiben der nächsten Adresse hier fertig.
909883/0 773
ORIGINAL INSPECTED
Fortsetzung Tabelle 19- MPU-PUT-Programmzustände
Zustand Befehl
H,2 Wie 17, Vierfachpuffer 1 H,3 Wie H7O, Vierfachpuffer 1 H,4 Wie H,1, Vierfachpuffer 1
Ein Wort
H,5 Wie 17, Vierfachpuffer 2
H,6 Wie H,0, Vierfachpuffer 2
H,7 Wie H,1, Vierfachpuffer 2
H,10 Wie 17, Vierfachpuffer 3
H,11 Wie H,0, Vierfachpuffer 3
H,12 Wie H,1, Vierfachpuffer 3
H,13 Lesen der Anzahl zu verarbeitender Worte (RAM 15). Sämtliche Einsen zum Addierer. Löschen der Logik GET/PUT
H,14 Falls CY ein, gehe nach 16 und arbeite weiter. ROM Q4, Löschen des Haltesignals
H,15 CY aus, daher INT MPU (ROM N3). Sprung nach "unbesetzt". END PULSE
H,16 Gehe zum Wortzählabschnitt der CDP-GO-Routine (1111 0010). END PULSE
S-GET: Die an der Stelle 0 1100 0000 beginnende Routine bewegt ein Wort von der S-Bus-Adresse, die durch den Inhalt der Parameter-RAM-Stelle 3 (F486, LSB) und 4 (F488, MSB) bestimmt wird, zum Vierfachpuffer. Der S-Bus-Zeiger wird erhöht und in den Parameter-RAM zurückgebracht.
Die an der Stelle 0 1100 101 beginnende Routine bewegt vier Worte von den S-Bus-Adressen, die an den durch den Inhalt der Parameter-RAM-Stellen 3 und 4 (wie bei S-GET, ein Wort) bestimmten Stellen beginnen, zu dem Vierfachpuffer. Wenn ein Wort gelesen ist, wird der S-Bus-Zeiger erhöht und in den1 Parameter-RAM zurückgebracht. Fig. 20 und die nachstehende Tabelle gehören zu dieser Routine.
909883/0773
Tabelle 20: S-GET-Programinzustände
Speicherstelle: 1100 XXXX
Zustand Befehl
Ein Wort
Lesen S-Bus-Adresse (MSB) (RAM 4)
Lesen S-Bus-Adresse (LSB) (RAM 3). Hier Warten, falls S-Bus noch belegt. Durchschalten des Datenweges S/Vierfachpuffer
Setzen "S-Bus belegt" (ROM K3). Schreiben der nächsten Adresse (LSB) in den RAM 3. Rücksetzen der Entscheidungslogik
Schreiben des Zustandes 2 hier abgeschlossen. Setzen MSYN auf S-Bus. Ermöglichen des Selbstrücksetzens für MSYN. Hier Warten auf BUSFINI. Senden SACK nach S-CPU (ROM L2)
Erhöhen obere Adreß-Bits. Schreiben neuer oberer Bits nach RAM 4
Schreiben des Zustande 4 hier beendet. Anstoßen PUT-Logik und END-Impuls
Auswahl Startadressen-ROM. Sprung nach "unbesetzt".
Vier Wörter
Lesen der oberen Adreß-Bits (RAM 4). Hier Warten, falls S-Bus noch belegt
Lesen der unteren Adreß-Bits (RAM 3). Setzen "S-Bus belegt". Datenweg S/Vierfachpuffer
.17 Zwei zum Addierer. Schreiben der nächsten Adresse (RAM 3). Setzen S-MSYN. Sprung zur hohen Seite. Ermöglichen der Selbstrücksetzung von MSYN
H,0 Hier Warten für S MEM SSYN. Schreiben "Vierfachpuffer null"
H,1 Erhöhen der oberen Adreß-Bits und Laden der nächsten Adresse aus RAM 3
H,2 Setzen S MSYN. Zurückschreiben der nächsten Adresse (RAM 3) . Vierfachpuffer, BUF WRT ONE. SACK nach S-Bus (ROM L2)
H,3 Warten auf S SSYN. SACK nach S-Bus
H,4 Wie H,1
H,5 Wie H,2
H,6 Wie H,3, Vierfachpuffer 2
H,7 Wie H,1
909883/077
Fortsetzung Tabelle 20 - S-GET-Programmzustände
Zustand Befehl
H, 10 Wie H, 2
H, 11 Wie H,3, Vierfachpuffer 3
H,12 Zurückschreiben der oberen Bits zum RAM 4. Entscheidungslogik GO, PUT. END-Impuls
H,13 Sprung nach "unbesetzt"
D/M-GET: Die an der Stelle 0 1101 0000 beginnende Routine bewegt ein Wort von einer D-Bus-Adresse, die bestimmt wird durch den Inhalt der Parameter-RAM-Stelle 0 (F480, LSB) und 1 (F 482, MSB), zum Vierfachpuffer. Der D-Bus-Zeiger wird erhöht und in den Parameter-RAM zurückgebracht. Die an der Stelle 0 1101 1101 beginnende Routine bewegt vier Worte von den D-Bus-Adressen, die bei den durch den Inhalt der Parameter-RAM-Stellen 0 und 1 (wie bei D-GET, ein Wort) bestimmten Stelle beginnen, zu dem Vierfachpuffer. Wenn ein Wort gelesen ist, wird der Zeiger erhöht und in den Parameter-RAM zurückgebracht. Fig. 1 und die nachstehende Tabelle gehören zu dieser Routine.
Tabelle 21: D/M-GET-Programmzustände Speicherstelle: 1101 XXXX
Zustand Befehl
Ein Wort
0 Lesen D/M-Bus-Adresse (MSB, RAM 1)
1 Lesen D/M-Bus-Adresse (LSB, RAM 0). Hier Warten, falls D/M-Bus noch belegt ist. Verschalten Datenweg von D/M-Bus auf Vierfachpuffer (ROM G), zwei an den Addierer
2 Setzen "D/M-Bus belegt" (Adresse aus). Schreiben der nächsten Adresse (LSB) in RAM 0
3 Setzen "D/M-Master SYNC", Ermöglichen Selbstrücksetzen von D/M-MYSN (ROM E4). Hier Warten auf BUSFINI
4 Erhöhen der oberen Adreß-Bits. Schreiben der neuen oberen Adreß-Bits in den RAM
909883/0773
Fortsetzung Tabelle 21 - D/M-GET-Programmzustände
Zustand j ι Befehl
5 RAM-Schreibvorgang abgeschlossen. Anstoßen eines PUT-Zyklus1 (ROM P1) und END-Impuls
6 Sprung nach "unbesetzt"
Vier Worte
15 Lesen der oberen Adreß-Bits (RAM 1). Hier Warten, falls D/M-Bus noch belegt
16 Lesen der unteren Adreß-Bits. Setzen "D/M-Bus belegt"
17 Zwei zum Addierer, Zurückschreiben der nächsten Adresse; Setzen des Notizblock-MSYNC; Springen zur hohen Seite, Ermöglichen des Selbstrücksetzens des Notizblock-MSYNC
H,0 Hier Warten, auf Notizblock-Antwort. In den Vierfachpuffer eine Null eingeschrieben
H,1 Erhöhen der oberen Adreß-Bits und Laden der nächsten Adresse aus RAM 0
H,2 Setzen Notizblock-MSYN. Zurückschreiben der nächsten Adresse in RAM 0, Vierfachpuffer-Adresse auf eins.
H,3 Hier Warten auf Notizblock-MSYN.
H,4 Wie H,1
H,5 Wie H,2
H,6 Wie H,3, Vierfachpuffer 2
H, 7 Wie H,1
H, 10 Wie H,2
H,11 Wie H,3, Vierfachpuffer 3
H,12 Schreibe obere Bits zurück ins RAM 1. Entscheidung GO, PUT, END PULSE
H, 13 Sprung nach "unbesetzt"
MPU-GET: Die bei der Stelle 0 1110 0000 beginnende Mikrocode-Routine bewegt ein Wort von einer MP-Bus-Adresse, die durch den Inhalt der Parameter-RAM-Stelle 2 (F484) bestimmt wird, zu dem Vierfachpuffer. Der MP-Bus-Zeiger wird erhöht und in den Parameter-RAM zurückgebracht. Die an der Stelle 0 1110 1111 beginnende Routine bewegt vier Worte von MP-Bus-Adressen, die bei derjenigen Stelle beginnen, die bestimmt wird durch den
909883/0 773
Inhalt der Parameter-RAM-Stelle 2 (wie bei MPU-GET, ein Wort), zu dem Vierfachpuffer. Bei jeder Wortübertragung wird der Zeiger erhöht und in den Parameter-RAM zurückgebracht. Fig. und die nachstehende Tabelle gehören zu dieser Routine.
Tabelle 22: MPU-GET-Programmzustände Speicherstelle: 1110 XXXX
Zustand Befehle
Ein Wort
0 Hole MP-Adresse aus RAM 2. Schalte Datenweg MP/ Vierfachpuffer.
1 Setzen MPU GO. Zwei zum Addierer und Anstoßen des Schreibvorgangs der nächsten Adresse. Hier Warten auf DMA END. Schreiben Vierfachpuffer
2 Setzen MPU END. Schreiben der nächsten Adresse abgeschlossen. Warten auf DMA END*. Löschen der Logik GET/PUT
3 END PULSE. ROM Q4, Löschen Haltesignal
4, Anstoßen PUT CYCLE. Sprung nach "unbesetzt" Weiterhin END PULSE
Vier Worte
17 Hole MP-Adresse aus RAM 2. Verschalte Datenweg MP/ Vierfachpuffer null. Sprung nach H,0
H,0 Setzen MPU GO, zwei zum Addierer und Anstoßen des Schreibens der nächsten Adresse. Hier auf DMA END Warten. Schreiben Vierfachpuffer null.
H,1 Setzen MPU END. Hier ist das Schreiben der nächsten Adresse abgeschlossen. Warten auf DMA END*
H,2 Wie 17, Vierf^chpuffer 1
H,3 Wie H,0, Vierfachpuffer 1
H,4 Wie H,1, Vierfachpuffer 1
H,5 Wie 17, Vierfachpuffer 2
H,6 Wie H,0, Vierfachpuffer 2
H,7 Wie H,1, Vierfachpuffer 2
H, 10 Wie 17, Vierfachpuffer 3
H, 11 Wie H,0, Vierfachpuffer 3
H,12 Wie H,1, Vierfachpuffer 3
H,13 END PULSE. ROM Q4, Löschen Haltesignal (Löschen der Logik GET PUT)
H,14 END PULSE. Setzen der Logik GET. Sprung nach "unbesetzt"
909883/0773
CDP-GO: Wenn der MP einen CDP-gesteuerten Transfer anstößt, wird die Routine an der Stelle 0 1111 0000 betreten. Wenn der Anfangswort-Zähler (Parameter-RAM-Stelle 15 (F49A)) null ist, wird im Zustand 1 eine Fehlerverzweigung vorgenommen. Wenn die Wortzählung nicht null ist, wird sie geprüft. Verbleiben weniger als vier Worte zu Übertragen, so wird das Flag DO ONE gesetzt, die Bus-Entscheidungslogik für einen GET-Zyklus wird angestoßen, und die Routine wird verlassen. Verbleiben mehr als drei Worte für die Übertragung, wird das Flag DO ONE zurückgesetzt, die Entscheidungslogik für einen GET-Zyklus wird angestoßen, und die Routine wird verlassen. Bei Beendigung jedeä PUT-Zyklus1 wird, falls die Wortzählung nicht null ist, die CDP-GO-Routine im Zustand 2 direkt vom PUT-Mikrocode betreten. Fig. 23 und die nachstehende Tabelle gelten für diese Routine.
Tabelle 23: CDP-GO-Programmzustände Speicherstelle: 1111 XXXX
Zustand Befehle
0 Lesen CDP-Wortzählung (RAM 15). Sämtliche Einsen zum Addierer. Rücksetzen des CDP-GO-Bits (ROM A3)
1 Falls CY aus ist, Sprung auf null und Senden einer Unterbrechung an den MP (ROM M3)
2 Wortzählung nicht null, daher addiere drei zu dem Addierer, Lesen der Wortzählung (RAM 15). Hier Eintritt von letzter Wortzählung. Prüfteil der PUT-Routine
3 Takten des CY-Flags (ROM Q1). Sprung nach C4 (Zustand 7), falls CY "1" ist
4 Es sind vier oder mehr Worte zu verarbeiten, also addiere vier zum Addierer. Anstoßen des Schreibens einer neuen Wortzählung in den RAM 15. END-Impuls
5 Hier ist das Schreiben beendet. Setze Entscheidungslogik GO, GET (ROM P1, P2). Sprung nach "unbesetzt"
7 Weniger als vier Worte sind zu verarbeiten, also addiere eins zum Addierer. Anstoßen des Schreibens der Wortzählung (RAM 15). END-Impuls
909863/0773
Fortsetzung Tabelle 22 - CDP-GP-Programmzustände
Zustand Befehle
10 Hier ist Schreibvorgang beendet. Setzen der Entscheidungslogik GO, GET und Sprung nach "unbesetzt"
H,10 Ermöglichen Der MSYN-Rücksetzung (AMR). Setzen MSYN
H,11 Setzen S SYN
H,12 Verfügbarmachen der Zeit für das Hochgehen von MSYN
H1.13 Warten, bis MSYN abfällt
H,14 Abfall von S SYN
H,15 Warten, bis BUSFINI niedrig wird. Abfall von AMR
H,16 Warten, bis BUSFINI hoch wird. Sprung nach H, 10
Notizblock - Programm
Bevor das Notizblock-Programm detailliert erläutert wird, sollen die allgemeinen Betriebsabläufe, welche das Programm implementiert, kurz beschrieben werden, zuerst der Datentransfer von der Platte zu der CPU, und anschließend von der CPU zu der Platte.
Für einen Transfer von der CPU zu der Platte besteht die erste Operation darin, Transfer-Parameter, die für die Plattensteuerung bestimmt sind, mittels des CDP abzufangen. Dann stößt die CPU einen Transfer mit einem Befehl an, der wiederum für die Plattensteuerung gedacht ist. Die CDP erkennt den Anstoßbefehl und unterbricht den MP, der damit fortfährt, die Parameter zu untersuchen und eine Entscheidung darüber zu treffen, ob der Transfer von der Platte stattfinden soll (1) (da die aufgerufenen Daten nicht im Notizblockspexcher vorliegen), ob der Transfer aus dem Notizblockspexcher erfolgen soll (2), oder ob lediglich Daten von der Platte zu der Datenverarbeitungsanlage übertragen werden sollen (3).
In den beiden letztgenannten Fällen überträgt der MP die Parameter zu der Platte und stelle den Transfermodus (die Tränsfer-
8 83/0 773
art) und die Zieladresse in den CDP ein. Dann setzt er das Bit GO, und die von der Platte gelesenen Daten können übertragen werden. Während der Transfer stattfindet, aktualisiert der MP ein Notizblockspeicher-Adreßbuch, falls die übertragenen Daten aus dem Notizblockspeicher kommen. Im anderen Fall des Transfers von der Platte zu der CPU ohne einen Transfer zu dem Notizblockspeicher kann die Datenverarbeitungsanlagä eine Steuerung bei dem Notierungsvorgang ausüben, so zum Beispiel, wenn bekannt ist, daß der Datenblock nicht wieder aufgerufen wird, oder wenigstens für lange Zeit nicht aufgerufen wird.
Ist der Transfer abgeschlossen, so unterbricht die Plattensteuerung den MP über den CDP, und der MP aktualisiert die Transfer-Parameter in dem Briefkasten, um das Plattenregister in der Steuerung derart einzustellen, daß die CPU in dem CDP "nachschauen" kann und die Steuerung wirksam beobachten kann. Dies ist notwendig, da der Briefkasten zuerst von der CPU mit den Start-Parametern des Transfers belegt wird und der Briefkasten während des Transfers nicht aktualisiert wird. Dann schickt der MP über den CDP eine Unterbrechung an die Datenverarbeitungsanlage, um zu signalisieren, daß der Transfer abgeschlossen ist.
Für den ersten der drei Transferfälle von der Platte zu der CPU und zum Notizblockspeicher aufgrund der Tatsache, daß die aufgerufenen Daten nicht im Notxzblockspexcher vorliegen, ist die Prozedur dieselbe wie bei dem Transfer von Parametern zu der Platte von dem MP zu dem CDP, und das Einrichten des Transfers geschieht mit der Ausnahme, daß der Transfer nun den Notxzblockspexcher als Datensenke beinhaltet, und daß vier zusätzliche aufeinanderfolgende Datenblöcke dorthin zusammen mit dem von der CPU aufgerufenen Datenblock übertragen werden. Dies stellt das "Vorausschau" (look ahead)-Merkmal der Erfindung dar. Dann werden die Transfers vollzogen, und bei Beendigung unterbricht der CDP den MP, der die Transfer-Parameter in den Briefkasten für den soeben zur CPU gelangten Datenblock aktualisiert. Schließlich unterbricht der CDP den MP.
309883/0773
Während.des Datentransfers zu dem Notizblockspeicher aktualisiert den MP das Adreßbuch des Notizblockspeichers, welches schematisch in Fig. 24 enthalten ist. Es enthält dann die Plattenblockadresse und die Notizblockspeicher-Adresse für jeden Datenblock, der in dem internen Notizblockspeicher 28 oder dem externen Notizblockspeicher 20 (siehe Fig. 1) gespeichert ist. Eine Adresse des Notizblockspeicher-Adreßbuchs ist in Fig. 25 gezeigt. Der Eintrag "Trefferzählung" bildet eine laufende Zählung darüber, wie oft auf den Datenblock in dem Notizblockspeicher zugegriffen wird» Für jeden Blockeintrag in dem Adreßbuch wird weiterhin ein Zeiger in einer Tabelle gehalten. Jedesmal, wenn ein Datenblock adressiert wird, wird das Adreßbuch abgefragt, um zu bestimmen, ob der Datenblock in dem Notizblockspeicher gespeichert ist oder nicht. Der durch Blockadressen in absteigender Reihenfolge angeordnete Zeiger wird zum Erleichtern der Suche verwendet.
Ist einmal die Adresse für den aufgerufenen Block in der Zeigertabelle gefunden, wird der Zeiger auf das Adreßbuch ausgelesen, um den betreffenden Eintrag in dem Adreßbuch zu adressieren, damit die Parameter ausgelesen werden und die Trefferzählung erhöht wird. Auf diese Weise behält das Notizblock-Programm eine Kopie ausgewählter Plattensektoren in dem Notizblockspeicher für den ersten Zugriff bei Lesevorgängen.
Das Notizblockprogramm liegt innerhalb des MP in mikrocodierter Form vor. Die Routinen- und Aufruffolge ist nachstehend zusammengestellt:
Aufruf Bedeutung
BLWP bei CPINI Initialisiere Notizblockprogramm BLWP bei CPFIX Fixiere Plattenblpcke im Notizblockprogramm BLWP bei CPREAD Lesen Plattenblöcke BLWP bei CPS0RT Ordnen der Zeigertafel
BLWP bei CPH0LE Platzschaffen im dynamischen Notizblockprogramm für kommende Platten-Blöcke
309883/0773
Aufruf Bedeutung
BLWP bei CPWRITE Schreiben Plattenblöcke BLWP bei CPDFIX Lösen der Daten im Notizblockprograinm BLWP bei CPDLTE Aufheben des Lesens von der Platte
in dem Notizblockprogramm
BLWP bei CPSBLK Absuchen des Notizblocks nach Plattenblock-Nummern
Subroutine-Arbeitsplatz-Register-Definition
WR4 - HOLE-Zeiger (Lückenzeiger)
WR5 - HOLE-Adresse hoch
WR6 - HOLE-Adresse niedrig
WR7 - Notizblocktabellenzeiger
WR8 - Notizblock-Adresse hoch
WR9 - Notizblock-Adresse niedrig
WR10 - Notizblock-Status
Status-Wort-Definition
BIT-OO 1T
BIT-01 •11
BIT-02
BIT-03
BIT-15
Fixierung gesperrt
unzulässige Platten-Adresse Notizblock voll
Es liegt keine dynamische Notierung vor
Adresse gefunden
Beschreibung von Routinen-Eingangsgrößen
INITIALIZE gelieferte Parameter
Initialisierungs-Faktor Zurückhaltungs-Faktor "Vorausschauend Lesen"-Faktor Notizblockgröße Intern und Extern
FIX gelieferte Parameter
Platten-Block-Adresse, Anzahl der zu fixierenden Blöcke
909383/0773
READ (Lesen)
gelieferte Parameter: Zeiger auf Adreßbuch, Platten-Block-Adresse, Anzahl zu lesender Blpcke. Hole-Zeiger (Lücken-Zeiger)
H0LB gelieferte Parameter: kein
WRITE (Schreiben) gelieferte Parameter:
Platten-Block-Adresse, Anzahl zu schreibender Blöcke
DEFIX gelieferte Parameter: Platten-Blockadresse, Anzahl der Blöcke: nein. Einträge ins Adreßbuch
DELETE (Löschen) gelieferte Parameter: Platten-Block-Adresse. Anzahl zu löschender Blöcke. Hole-Zeiger
CPSRBK gelieferte Parameter: Pla 11eneinhei t-Nummer
Beschreibung der Ausgangsgrößen
INITIALIZE keine Ausgabe
FIX
zurückgegebene Parameter: Notizblockspexcher-Adresse
S0RT Notizblockspeicher-Adresse des nächsten verfügbaren Platzes im dynamischen Notizblock, Hole-Zeiger
HOLE Notizblockspeicher-Adresse des nächsten verfügbaren Platzes im dynamischen Notizblock, Hole-Zeiger
909883/0773
READ zurückgegebene Parameter:
Adressenübereinstimmungs-Status entsprechend Notizblock-Adresse. Notizblock-Adresse zum Lesen der Daten von der Platte
DEFIX zurückgegebene Parameter:
keine
WRITE zurückgegebene Parameter:
Adressenübereinstimmungs-Status, entsprechend Notizblockadresse, Angabe zu schreibender Blöcke
DELETE Zurückgegebene Parameter:
keine
CPSRBK zurückgegebene Parameter:
Plattenblockzahlen
Benutzte Dateien: keine
Status und Restriktionen:
INITIALIZE Status zurückgegeben:
keine
FIX Status zurückgegeben:
Fixieren sperren, Notizblock voll, Übereinstimmung gefunden
READ (Lesen) Status zurückgegeben:
Dynamische Notierung liegt nicht vor, Übereinstimmung gefunden
909883/0773
SORT
Status zurückgegeben: keine
HOLE
Status zurückgegeben: keine
WRITE (Schreiben)
Status zurückgegeben: Übereinstimmung gefunden
DEFIX
Status zurückgegeben: Übereinstimmung gefunden
DELETE (Löschen)
Status zurückgegeben: Übereinstimmung gefunden
CPSRBK
Status zurückgegeben: Plattenblocknummer gefunden
Beschreibung der Verarbeitung
Ist einmal das Notizblockprogramm in dem RAM 28 gespeichert, so ruft der CDP das Notizblockprogramm auf, um die Notizblock-Adreßbuch-Zeigertabelie und andere hierzu in Beziehung stehende Flags zu initialisieren. Einmal initialisiert, akzeptiert das Notizblockprogramm Aufrufe, um Plattenvektoren in dem Notizblockspeicher zu fixieren. Das Fixieren wird gesperrt, wenn die ersten ausgelesenen Werte empfangen sind.
INITIALIZE (siehe Fig. 26)
a. Initialisiere 30 Speicherstellen beginnend mit dem Symbol TFIXB.
b. Rechne tatsächlich vorhandenen gesamten Notizblockspeicherraum, der zum Fixieren der Notierung verfügbar ist.
c. Initialisieren der Adreßbuch-Zeigertabelle
d. Initialisieren der Adreßbuch-Größe der Zeigertabelle und des Adreßbuchs, die in Schritt c bestimmt wurde.
•90.98-83/0773
Für die Eingabe/Ausgabe zwischen dem Notizblockprogramm und dem Behandler verwendete Arbeitsregister Eingangspunkt für das Notizblock-Adreßbuch ist in (NAHP) gespeichert.
FIX (siehe Fig. 27)
a. Ist das Fixieren gesperrt, so setze Flag "Sperre Fixieren" in dem Notizblock-Status, anschließend Rückkehr.
b. Ist der gesamte Notizblockspeicher verbraucht, setze Flags "Notizblockspeicher voll" und "Fixieren gesperrt" im Notizblock-Status. Anschließend Rückkehr.
c. Schreibe Plattenblockadressen in das Adreßbuch, sowohl obere als auch untere Grenzen.
d. Aktualisiere fixierte Zahl der Notizblockspexcherblöcke.
e. Bestimme, ob die Plattenblöcke in den internen oder externen Notizblockspeicher geschrieben werden und setze das entsprechende Flag.
f. Schreibe Notizblockspeicher-Blocknummer in das Adreßbuch.
g. Ordne Zeigertabelle mit Plattenblockadressen.
h. Aktualisiere Hole-Zeiger und Anzahl erfolgter Einträge.
i. Schreibe Notizblockspeicher-Blockadresse in das Register für den Behandler.
j. Setze Flag "Übereinstimmung gefunden" in Notizblock-Status, anschließend Rückkehr.
READ (siehe Fig. 28)
a. Falls das Fixieren nicht gesperrt, setze Flag "Fixieren sperren"
b. Falls Notizblockspeicher vollständig für das Fixieren verwendet wird, fixiere Plattenblöcke, setze "keine dynamischen Notizblockspeicher vorhanden" und führe binäre Suche aus, um gegebene Datenblockadresse in dem Adreßbuch aufzufinden.
c. Falls Notizblockspeicher für dynamische Notizblockabbildung verfügbar, bereit pseudo-dynamische Notierungs-
18 83/0773
abbildung unter Verwendung des "Vorausschauend lesen"-Faktors und des Fehler-Initialisierungsfaktors von eins vor.- Führe binäre Suche durch, um gegebene Datenblockadresse in dem Adreßbuch aufzufinden.
d. Binäre Suche für Datenblockadresse in der Zeigertabelle. Falls Übereinstimmung gefunden, speichere den Zeiger unter die Eintragsnummer der Tabelle.
e. Falls keine Übereinstimmung gefunden, setze Notizblockstatus zurück, anschließend Rückkehr.
f. Falls Übereinstimmung gefunden, setze Flag in dem Notizblock-Status.
g. Schreibe entsprechende Notizblockadresse in die Register des Behandlers.
h. Erhöhe Trefferzählung in dem Adreßbuch um eins, i. Addiere Zurückhaltüngsfaktor zum Notizblock-Status in dem Adreßbuch für additive Berechnung. Rückkehr.
SORT (siehe Fig. 29)
a. Binäre Suche nach Zeigertabelle für Hole-Zeiger, bestimme Stelle in der Tabelle.
b. Ordne die Zeigertabelle zwischen der Stelle für die Plattenblockadresse während des Lesevorgangs und der Stelle für den Hole-Zeiger neu.
c. Hole Notizblock-Status aus dem Adreßbuch entsprechend dem nächsten verfügbaren Hole-Zeiger und vermindere um eins.
d. Falls Notizblock-Status null, Hole (Lücke) gefunden, schreibe entsprechende Notizblock-Adresse in die Register für den Behandler, die im folgenden benutzt werden sollen. Aktualisiere nächsten verfügbaren Zeiger, anschließend Rückkehr.
e. Falls Notizblock-Status nicht null ist und maximale Suche durchgeführt wurde, setze Notizblock-Adreßregister zurück, um anzuzeigen, daß der Behandler keine Lücke gefunden hat. Rückkehr.
f.· Falls maximale Suche durch das Adreßbuch nicht gemacht wurde und der Zeiger sich nicht am Ende der Adreßbuch-
909883/0773
abbildung befindet, aktualisiere Zeiger und wiederhole die Schritte c bis f.
g. Falls der Zeiger auf das Adreßbuch das Ende des Adreßbuchs erreicht hat, beginne Suche für eine Lücke unter Verwendung der Startlücke für die dynamische Notierung. Wiederhole die Schritte c bis g.
HOLE (Lücke) (siehe Fig. 30)
a. Suche nächsten verfügbaren Lückenzeiger auf das Adreßbuch und folge den Schritten c bis g der Routine SORT.
WRITE (siehe Fig. 31)
a. Falls Blockzählung null, setze Notizblock-Status zurück, um dem Behandler anzuzeigen, daß keine weiteren Blöcke in den Notizblock zu schreiben sind.
b. Falls die Blockzählung nicht null, suche die Zeigertabelle. Falls Übereinstimmung gefunden und der Zeiger nicht auf das Ende der Tabelle zeigt, halte den Zeiger für die nächste binäre Suche.
c. Falls Übereinstimmung gefunden, schreibe die nächste Notizblockspeicher-Blockadresse für den Behandler.
d. Setze Flag "Übereinstimmung gefunden" in den Notizblock-Status, um dem Behandler einen zu schreibenden Block anzuzeigen.
e. Falls keine Übereinstimmung gefunden, erhöhe Platten-Blockadresse .
f. Vermindere Plattenzählung um eins.
DEFIX (siehe Fig. 32)
a. Vermindere die Eintragzahl in der Zeiger tabelle um eins.
b. Vermindere die Anzahl der fixierten Notizblockspeicher-Blöcke um die zu löschende Blockzahl.
c. Suche die Zeigertabelle ab, um die Platten-Blockadresse zu finden.
d. Falls Übereinstimmung gefunden, ordne die Zeigertabelle zwischen dem durch die binäre Suche gefundenen Zeiger und dem letzten Eintrag in der Zeigertabelle neu. Rückkehr,
3/0773
e. Falls keine Übereinstimmung gefunden, speichere die Zahl der Einträge entsprechend der vorhergehenden Zahl zurück. Speichere die Gesamtzahl fixierter Blöcke entsprechend dem ursprünglichen Wert zurück. Rückkehr.
DELETE (siehe Fig. 33)
a. Suche mittels binärer Suche die Zeigertabelle ab, um zu löschende Platten-Blockadresse zu finden.
b. Falls keine Übereinstimmung, Rückkehr.
c. Falls Übereinstimmung gefunden, bestimme, ob es fixierte Notierung oder dynamische Notierung ist. Falls es sich um fixierte Notierung handelt, schreibe Pseudo-Plattenblockadresse in das Adreßbuch.
d. Falls es sich um dynamische Notierung handelt, schreibe Pseudo-Plattenblockadresse und Initialisierungsfaktor "1" im Notizblock-Status in das Adreßbuch.
e. Aktualisiere Pseudo-Plattenblockzählung durch Addieren der Anzahl zu löschender Blöcke.
f. Ordne die Zeigertafel zwischen dem Zeiger für die Plattenblockadr es se und dem letzten Eintrag der Tabelle neu. Nicht zugewiesene Notizblockspeicher-Blöcke befinden sich am Ende der Tabelle.
Führe nochmals binäre Suche mit dem aus dem letzten Suchvorgang aufbewahrten Zeiger durch.
CPSRBK (siehe Fig. 34)
a. Lösche Status-Register.
b. Hole letzten delta (I)-Wert und generiere neuen M-Wert. M=M+ Delta (I).
c. Suche binär die Notizblock-Tabelle ab, um Plattenblocknummer für spezifizierte Platteneinheit zu finden.
d. Falls Plattenblocknummer gefunden, bestimme, ob es sich um eine Pseudo-Plattenblocknummer handelt.
e. Falls die gefundene Plattenblocknummer eine Pseudoblocknummer ist, prüfe, ob Suche abgeschlossen ist.
f. Falls die gesamte Notizblock-Tabelle abgesucht ist, setze die Anzahl von Blockzellen zurück und verlasse die Routine.
909 8 -83/0773
g. Falls die Plattenblocknuinmer gefunden ist, speichere Plattenblocknummer und bestimme Anzahl vorhandener Blöcke.
h. Setze Status entsprechend gefundener Plattenblockzahl und verlasse die Routine.
909883/0773

Claims (1)

  1. PATENTANWÄLTE A. GRÜNECKER
    0IP1.-INS.
    H. KINKELDEY
    DR-ING. · AeE [CALTECH
    K. SCHUMANN
    DR RER NAT, ■ 13(PL-PHYa
    P. H. JAKOB
    DlPL-INa
    G. BEZOLD
    OR RERNAT* D(PL-CHEM.
    8 MÜNCHEN 22
    MAXIMIUANSTRASSE 4ä
    P 14018
    29. Juni 1979
    BUSKER EAMO CORPORATION
    Commerce Drive, Oak Brook, 111. 60521, USA.
    Einrichten zum Anschalten einer Datenverarbeitungsanlage an ein Magnetspeichersystem
    Patentansprüche
    Einrichtung zum Anschalten einer Datenverarbeitungsanlage an ein Magnetspeichersubsystem, gekennzeichnet durch eine Schreib/Lese-Speicher-Transfereinrichtung (20, 28), um auf eine vorbestimmte Menge von Magnetspeicherdaten vorab zuzugreifen und sie in den Schreib/Lese-Speicher (20, 28) zu übertragen, eine konfigurierbare Datenpfadanordnung (32) zum Schaffen eines Datenpfades zwischen der Datenverarbeitungsanlage (16, 18) und dem Magnetspeicher-Subsystem (12, 14), zwischen der Datenverarbeitungsanlage (16, 18) und dem Schreib/Lese-Speicher (28, 20) und zwischen dem Schreib/Lese-Speicher (20, 28) und dem Magnetspeicher-Subsystem (12, 14) nach Maßgabe der von der Datenverarbeitungsanlage· (16, 18) an das
    909883/0773
    (öse) saaaea telex os-sesso Telegramme monapat telekopierer
    ORIGINAL
    Magnetspeicher-Subsystem (12, 14) abgegebenen Befehle, die von der konfigurierbaren Datenpfadanordnung (32) abgefangen werden, wo die Transfereinrichtung auf jeden angeforderten Magnetspeicher-Datenzugriff bezüglich eines Datenblocks anspricht und den Zugriff auf den Block in dem Schreib/Lese-Speicher (20, 28) steuert, falls der Block zuvor bereits übertragen wurde und noch in dem Schreib/ Lese-Speicher (20, 28) vorhanden ist, und die den Zugriff auf den Block im Magnetspeicher-Subsystem (12, 14) für eine Zeitdauer, die dynamisch durch vorgegebene Parameter festgelegt wird, steuert, falls der Datenblock nicht in dem Schreib/Lese-Speicher (20, 28) vorhanden ist.
    2. Einrichtung nach Anspruch 1, dadurch gekennzeichnet, daß die Parameter sich auf Kriterien zum Bestimmen der am wenigsten brauchbaren Daten beziehen, so daß, wenn einmal der Schreib/Lese-Speicher (20, 28) gefüllt ist, die Transfereinrichtung das Ersetzen der am wenigsten brauchbaren Daten durch nachfolgende Datenblöcke in Abhängigkeit von angeforderten Zugriffen auf Daten, die nicht in dem Schreib/Lese-Speicher (20, 28) vorliegen, steuert.
    3. Einrichtung nach Anspruch 1, dadurch gekennzeichnet, daß das Kriterium sich auf die Benut zungs fr equen ζ bezieht, daß die Steuereinrichtung ein nach dem Prinzip first-in-firstout arbeitendes Adreßbuch aufweist, in welchem in den Schreib/Lese-Speicher (20, 28) eingegebene Daten zum Kopf des Adreßbuchs. vorrücken, wenn neue Daten in den Schreib/ Lese-Speicher eingegeben werden, daß alte Daten am Kopf des Adreßbuchs abgelegt werden, und daß Adreßbuchdaten, auf die in dem Schreib/Lese-Speicher zugegriffen wird, am Ende des Adreßbuchs erneut eingegeben werden, wodurch auch Daten, auf die häufig zugegriffen wird, häufig erneut in das Adreßbuch eingegeben werden, um die Daten für längere Zeit in dem Schreib/Lese-Speicher (20, 28) zu halten.
    9098 8.3/0773
    4. Einrichtung nach Anspruch 3, dadurch gekennzeichnet, daß die Steuereinrichtung eine Einrichtung zum Lenken des Datentransfers von dem Magnetplattenspeicher-Subsystem (12, 14) zu dem Schreib/Lese-Speicher (20, 28) aufweist, um die Daten zurückzuhalten, bis angewiesen wird, die Daten zu entfernen.
    5. Steuereinheit zum Vermindern der Zeit, die notwendig ist, um adressierte Informationsworte zwischen einem Plattenspeicher und einem Systembus zu Übertragen, zur Verwendung in einer Datenverarbeitungsanlage mit einem (1) Haupt-Schreib/Lese-Speicher zum Speichern adressierbarer Informationsworte, (2) wenigstens einem Plattenspeicher, der adressierbare Informationsworte speichert, (3) einer Verarbeitungseinheit, die in der Lage ist, Befehle zu erzeugen zum Auffinden von Informationsworten, die in dem Plattenspeicher gespeichert sind oder zum Speichern von Informationsworten in dem Plattenspeicher, sowie (4) einem Systembus, der den Hauptspeicher, den Plattenspeicher und die Verarbeitungseinheit miteinander verbindet, gekennzeichnet durch einen schnellen Pufferspeicher (20, 28) zum Speichern einiger der in dem Plattenspeicher (12, 14) gespeicherten Informationswörter, und eine Logikschaltung (10), die an den Systembus (22) angeschlossen ist und auf Befehle zum Auffinden in den Pufferspeicher (14) gespeicherter adressierter Informationsworte anspricht, um zu bestimmen, ob jeder adressierte Informationsausdruck in dem Pufferspeicher (20, 28) gespeichert ist oder nicht, und die exne Einrichtung aufweist, um entweder auf den adressierten InforiQationsausdruck in dem Pufferspeicher (20, 28) zuzugreifen, falls die adressierte Information dort gespeichert ist, oder um auf den adresierten Informationsausdruck im Plattenspeicher (14) zuzugreifen, wenn der Ausdruck nicht in dem Pufferspeicher (20, 28) gespeichert ist, wobei die Logikschaltung (10) weiterhin eine Datenpfadeinrichtung (32) aufweist, um auf Informationswörter, auf die in dem Pufferspeicher (20,28) zugegriffen wurde, zu dem Systembus (22) zu übertragen, und um Informations-
    9098 8 3/0773
    Wörter, auf die in dem Plattenspeicher (14) zugegriffen wurde, zu dem Systembus (22) und dem Pufferspeicher (20, 28) zu übertragen.
    6. Steuereinheit nach Anspruch 5, dadurch gekennzeichnet, daß die Logikschaltung (10) weiterhin einen programmierbaren Datenprozessor (26) mit einem Speicher aufweist, in dem Informationsdaten gespeichert sind, die die in dem Pufferspeicher (20, 28) gespeicherten Informationsworte oder -ausdrücke identifizieren.
    7. Steuereinheit nach Anspruch 6, dadurch gekennzeichnet, daß der Speicher weiterhin Programminformation speichert, und daß der Datenprozessor (26) auf die Programminformation anspricht, um die Datenpfadeinrichtung (32) so zu steuern, daß sie Informationsausdrücke, auf die in dem Plattenspeicher (12, 14) zugegriffen wurde, zu dem Systemspeicher und selektiv zu dem Pufferspeicher (20, 28) überträgt.
    8. Steuereinheit nach Anspruch 5, dadurch gekennzeichnet, daß die Logikschaltung (10) weiterhin eine Datenpfadeinrichtung (32) aufweist, um Informationsausdrücke von dem Systembus (22) zu dem Plattenspeicher (12) und dem Pufferspeicher (20, 28) zu übertragen.
    9. Steuereinheit nach Anspruch 8, dadurch gekennzeichnet, daß die Logikschaltung (10) einen programmierbaren Datenprozecsor (26) aufweist, der einen Speicher zum Speichern von Programminformation aufweist, und daß der Datenprozessor (26) auf die Programminformation anspricht und die Datenpfadeinrichtung (32) derart steuert, daß diese selektiv Informationsausdrücke zu und von dem Pufferspeicher (20, 28) überträgt.
    10. Steuereinheit nach Anspruch 5, dadurch gekennzeichnet, daß der Pufferspeicher einen Schreib/Lese-Speicher (20, 28) aufweist.
    3098 83/0773
DE19792926343 1978-06-30 1979-06-29 Einrichtung zum anschalten einer datenverarbeitungsanlage an ein magnetspeichersystem Withdrawn DE2926343A1 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US05/920,831 US4399503A (en) 1978-06-30 1978-06-30 Dynamic disk buffer control unit

Publications (1)

Publication Number Publication Date
DE2926343A1 true DE2926343A1 (de) 1980-01-17

Family

ID=25444485

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19792926343 Withdrawn DE2926343A1 (de) 1978-06-30 1979-06-29 Einrichtung zum anschalten einer datenverarbeitungsanlage an ein magnetspeichersystem

Country Status (5)

Country Link
US (1) US4399503A (de)
JP (1) JPS5528197A (de)
DE (1) DE2926343A1 (de)
FR (1) FR2434431A1 (de)
GB (1) GB2024476A (de)

Families Citing this family (147)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4868734A (en) * 1984-04-30 1989-09-19 Unisys Corp. Variable rate improvement of disc cache subsystem
US5371855A (en) * 1979-06-04 1994-12-06 Unisys Corporation Disc cache subsystem having plural-level cache memories
US5241666A (en) * 1979-06-04 1993-08-31 Unisys Corporation Variable rate improvement of disc cache subsystem
FR2486291A1 (fr) * 1980-07-04 1982-01-08 Copernique Systeme memoire intercalaire entre calculateur et memoire auxiliaire
US4489378A (en) * 1981-06-05 1984-12-18 International Business Machines Corporation Automatic adjustment of the quantity of prefetch data in a disk cache operation
US4490782A (en) * 1981-06-05 1984-12-25 International Business Machines Corporation I/O Storage controller cache system with prefetch determined by requested record's position within data block
US4476524A (en) * 1981-07-02 1984-10-09 International Business Machines Corporation Page storage control methods and means
US4533995A (en) * 1981-08-03 1985-08-06 International Business Machines Corporation Method and system for handling sequential data in a hierarchical store
US4468730A (en) * 1981-11-27 1984-08-28 Storage Technology Corporation Detection of sequential data stream for improvements in cache data storage
EP0080878A3 (de) * 1981-11-27 1985-06-26 Storage Technology Corporation Cache-Speicher und Steuerungsverfahren für die Verwendung mit Magnetscheiben
US4476526A (en) * 1981-11-27 1984-10-09 Storage Technology Corporation Cache buffered memory subsystem
US4636946A (en) * 1982-02-24 1987-01-13 International Business Machines Corporation Method and apparatus for grouping asynchronous recording operations
JPS58154054A (ja) * 1982-03-10 1983-09-13 Hitachi Ltd 外部記憶装置制御用回路
US4509115A (en) * 1982-04-21 1985-04-02 Digital Equipment Corporation Two-port memory controller
US4527233A (en) * 1982-07-26 1985-07-02 Ambrosius Iii William H Addressable buffer circuit with address incrementer independently clocked by host computer and external storage device controller
CA1253627A (en) * 1982-11-09 1989-05-02 Paul B. Brown Dynamic addressing for variable track length cache memory
JPS59100964A (ja) * 1982-12-01 1984-06-11 Hitachi Ltd ディスク制御システム及びその並列データ転送方法
JPS59153251A (ja) * 1983-02-18 1984-09-01 Toshiba Corp デイスクキヤツシユシステム
US4633393A (en) * 1983-10-21 1986-12-30 Storage Technology Partners Ii Generic key for indexing and searching user data in a digital information storage and retrieval device
US4792896A (en) * 1983-12-07 1988-12-20 516277 Ontario Limited Storage controller emulator providing transparent resource sharing in a computer system
JPH06100981B2 (ja) * 1983-12-28 1994-12-12 株式会社日立製作所 記憶階層制御方式
US4896262A (en) * 1984-02-24 1990-01-23 Kabushiki Kaisha Meidensha Emulation device for converting magnetic disc memory mode signal from computer into semiconductor memory access mode signal for semiconductor memory
JPS60229111A (ja) * 1984-04-26 1985-11-14 Fanuc Ltd 数値制御方式
JPS60233749A (ja) * 1984-05-07 1985-11-20 Sharp Corp メモリフアイル装置
JPS60235269A (ja) * 1984-05-08 1985-11-21 Toshiba Corp デ−タ転送制御装置
US4604683A (en) * 1984-12-10 1986-08-05 Advanced Computer Communications Communication controller using multiported random access memory
US4779189A (en) * 1985-06-28 1988-10-18 International Business Machines Corporation Peripheral subsystem initialization method and apparatus
US4821185A (en) * 1986-05-19 1989-04-11 American Telephone And Telegraph Company I/O interface system using plural buffers sized smaller than non-overlapping contiguous computer memory portions dedicated to each buffer
US4722046A (en) * 1986-08-27 1988-01-26 Amdahl Corporation Cache storage priority
US5136692A (en) * 1987-02-13 1992-08-04 International Business Machines Corporation Memory disk buffer manager
US4984149A (en) * 1987-03-28 1991-01-08 Kabushiki Kaisha Toshiba Memory access control apparatus
AU622626B2 (en) * 1987-06-03 1992-04-16 Sony Corporation Method of processing data
US5163132A (en) * 1987-09-24 1992-11-10 Ncr Corporation Integrated controller using alternately filled and emptied buffers for controlling bi-directional data transfer between a processor and a data storage device
US4965801A (en) * 1987-09-28 1990-10-23 Ncr Corporation Architectural arrangement for a SCSI disk controller integrated circuit
US5091850A (en) * 1987-09-28 1992-02-25 Compaq Computer Corporation System for fast selection of non-cacheable address ranges using programmed array logic
US5157774A (en) * 1987-09-28 1992-10-20 Compaq Computer Corporation System for fast selection of non-cacheable address ranges using programmed array logic
JP2965987B2 (ja) * 1988-02-22 1999-10-18 株式会社日立製作所 データ処理システム
US5016121A (en) * 1988-02-25 1991-05-14 Tandon Corporation Disk drive controller system
US4977495A (en) * 1988-02-29 1990-12-11 Unisys Corporation System and method for accessing a cache memory which is located in the main memory of a large data processing system
US4993030A (en) * 1988-04-22 1991-02-12 Amdahl Corporation File system for a plurality of storage classes
US5418965A (en) * 1988-06-24 1995-05-23 Mahar; Robert C. Subroutine-type computer program for enhancing the speed of data processing in data management programs systems
US5283791A (en) * 1988-08-02 1994-02-01 Cray Research Systems, Inc. Error recovery method and apparatus for high performance disk drives
US5128810A (en) * 1988-08-02 1992-07-07 Cray Research, Inc. Single disk emulation interface for an array of synchronous spindle disk drives
US5218689A (en) * 1988-08-16 1993-06-08 Cray Research, Inc. Single disk emulation interface for an array of asynchronously operating disk drives
US5261074A (en) * 1988-10-03 1993-11-09 Silicon Graphics, Inc. Computer write-initiated special transferoperation
US5202972A (en) * 1988-12-29 1993-04-13 International Business Machines Corporation Store buffer apparatus in a multiprocessor system
US5287457A (en) * 1989-01-13 1994-02-15 International Business Machines Corporation Computer system DMA transfer
US5140683A (en) * 1989-03-01 1992-08-18 International Business Machines Corporation Method for dispatching work requests in a data storage hierarchy
US5133060A (en) * 1989-06-05 1992-07-21 Compuadd Corporation Disk controller includes cache memory and a local processor which limits data transfers from memory to cache in accordance with a maximum look ahead parameter
JPH0322156A (ja) * 1989-06-20 1991-01-30 Tokico Ltd 磁気ディスク装置
DE69033092D1 (de) * 1989-09-08 1999-06-10 Auspex Systems Inc Santa Clara Betriebssystemaufbau mit mehreren verarbeitungseinheiten
US5163131A (en) * 1989-09-08 1992-11-10 Auspex Systems, Inc. Parallel i/o network file server architecture
JP2780821B2 (ja) * 1989-09-22 1998-07-30 株式会社日立製作所 オンライン中のダンプ方式およびディスクサブシステム
JP2826857B2 (ja) * 1989-12-13 1998-11-18 株式会社日立製作所 キャッシュ制御方法および制御装置
US5018095A (en) * 1990-02-15 1991-05-21 Seagate Technology, Inc. Universal disk drive type emulation for IBM PC-AT computers
US5247633A (en) * 1990-02-28 1993-09-21 Seagate Technology, Inc. Configuration of high capacity disk drives with embedded ibm pc-at type computer
DE69118781T2 (de) * 1990-08-31 1996-10-31 Advanced Micro Devices Inc Übertragungssteuerungssystem für einen Rechner und Peripheriegeräte
US5142667A (en) * 1990-09-28 1992-08-25 Xerox Corporation Resource and memory management algorithms for electric printing and electronic reprographic systems
US5206935A (en) * 1991-03-26 1993-04-27 Sinks Rod G Apparatus and method for fast i/o data transfer in an intelligent cell
WO1993023811A2 (en) * 1992-05-13 1993-11-25 Southwestern Bell Technology Resources, Inc. Open architecture interface storage controller
CA2121852A1 (en) * 1993-04-29 1994-10-30 Larry T. Jost Disk meshing and flexible storage mapping with enhanced flexible caching
US5499354A (en) * 1993-05-19 1996-03-12 International Business Machines Corporation Method and means for dynamic cache management by variable space and time binding and rebinding of cache extents to DASD cylinders
US6604118B2 (en) 1998-07-31 2003-08-05 Network Appliance, Inc. File system image transfer
US7174352B2 (en) 1993-06-03 2007-02-06 Network Appliance, Inc. File system image transfer
EP0701716B1 (de) * 1993-06-03 2002-08-14 Network Appliance, Inc. Verfahren und Dateisystem zur Zuordnung von Datei-Blöcken zu Speicherplatz in einem RAID-Plattensystem
US6138126A (en) * 1995-05-31 2000-10-24 Network Appliance, Inc. Method for allocating files in a file system integrated with a raid disk sub-system
DE69425658T2 (de) * 1993-06-03 2001-04-19 Network Appliance Inc Anordnung eines dateisystems zum beschreiben beliebiger bereiche
DE69434381T2 (de) * 1993-06-04 2006-01-19 Network Appliance, Inc., Sunnyvale Verfahren zur Paritätsdarstellung in einem Raid-Untersystem unter Verwendung eines nichtflüchtigen Speichers
JP3711144B2 (ja) * 1994-02-16 2005-10-26 アップル コンピューター インコーポレーテッド グラフィックイメージ生成方法
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
US6457130B2 (en) 1998-03-03 2002-09-24 Network Appliance, Inc. File access control in a multi-protocol file server
US6317844B1 (en) 1998-03-10 2001-11-13 Network Appliance, Inc. File server storage arrangement
US6715056B1 (en) 1998-04-30 2004-03-30 International Business Machines Corporation Network document transmission to receiving display stations with automatic sizing of received document caches based upon user activity in prior browsing sessions
US6343984B1 (en) 1998-11-30 2002-02-05 Network Appliance, Inc. Laminar flow duct cooling system
JP5220974B2 (ja) 1999-10-14 2013-06-26 ブルアーク ユーケー リミテッド ハードウェア実行又はオペレーティングシステム機能の加速のための装置及び方法
US6564291B1 (en) 2000-11-17 2003-05-13 Texas Instruments Incorporated Multi-function peripheral storage device buffer system
US6983318B2 (en) * 2001-01-22 2006-01-03 International Business Machines Corporation Cache management method and system for storing dynamic contents
US6978283B1 (en) 2001-12-21 2005-12-20 Network Appliance, Inc. File system defragmentation technique via write allocation
US6993539B2 (en) 2002-03-19 2006-01-31 Network Appliance, Inc. System and method for determining changes in two snapshots and for transmitting changes to destination snapshot
US7873700B2 (en) * 2002-08-09 2011-01-18 Netapp, Inc. Multi-protocol storage appliance that provides integrated support for file and block access protocols
US7340486B1 (en) * 2002-10-10 2008-03-04 Network Appliance, Inc. System and method for file system snapshot of a virtual logical disk
US7457822B1 (en) 2002-11-01 2008-11-25 Bluearc Uk Limited Apparatus and method for hardware-based file system
US8041735B1 (en) 2002-11-01 2011-10-18 Bluearc Uk Limited Distributed file system and method
US7809693B2 (en) * 2003-02-10 2010-10-05 Netapp, Inc. System and method for restoring data on demand for instant volume restoration
US7383378B1 (en) * 2003-04-11 2008-06-03 Network Appliance, Inc. System and method for supporting file and block access to storage object on a storage appliance
US7437523B1 (en) 2003-04-25 2008-10-14 Network Appliance, Inc. System and method for on-the-fly file folding in a replicated storage system
US7783611B1 (en) 2003-11-10 2010-08-24 Netapp, Inc. System and method for managing file metadata during consistency points
US7721062B1 (en) 2003-11-10 2010-05-18 Netapp, Inc. Method for detecting leaked buffer writes across file system consistency points
US7401093B1 (en) 2003-11-10 2008-07-15 Network Appliance, Inc. System and method for managing file data during consistency points
WO2005064469A1 (en) * 2003-12-19 2005-07-14 Network Appliance, Inc. System and method for supporting asynchronous data replication with very short update intervals
US7478101B1 (en) 2003-12-23 2009-01-13 Networks Appliance, Inc. System-independent data format in a mirrored storage system environment and method for using the same
US8041888B2 (en) * 2004-02-05 2011-10-18 Netapp, Inc. System and method for LUN cloning
US7409494B2 (en) 2004-04-30 2008-08-05 Network Appliance, Inc. Extension of write anywhere file system layout
US7334094B2 (en) * 2004-04-30 2008-02-19 Network Appliance, Inc. Online clone volume splitting technique
US7409511B2 (en) * 2004-04-30 2008-08-05 Network Appliance, Inc. Cloning technique for efficiently creating a copy of a volume in a storage system
US7430571B2 (en) * 2004-04-30 2008-09-30 Network Appliance, Inc. Extension of write anywhere file layout write allocation
US7334095B1 (en) 2004-04-30 2008-02-19 Network Appliance, Inc. Writable clone of read-only volume
US7509329B1 (en) 2004-06-01 2009-03-24 Network Appliance, Inc. Technique for accelerating file deletion by preloading indirect blocks
US7519628B1 (en) 2004-06-01 2009-04-14 Network Appliance, Inc. Technique for accelerating log replay with partial cache flush
US7194595B1 (en) 2004-09-27 2007-03-20 Network Appliance, Inc. Technique for translating a hybrid virtual volume file system into a pure virtual file system data stream
US7243207B1 (en) 2004-09-27 2007-07-10 Network Appliance, Inc. Technique for translating a pure virtual file system data stream into a hybrid virtual volume
US7260678B1 (en) 2004-10-13 2007-08-21 Network Appliance, Inc. System and method for determining disk ownership model
US7603532B2 (en) * 2004-10-15 2009-10-13 Netapp, Inc. System and method for reclaiming unused space from a thinly provisioned data container
US7730277B1 (en) 2004-10-25 2010-06-01 Netapp, Inc. System and method for using pvbn placeholders in a flexible volume of a storage system
US7636744B1 (en) 2004-11-17 2009-12-22 Netapp, Inc. System and method for flexible space reservations in a file system supporting persistent consistency point images
US7523286B2 (en) * 2004-11-19 2009-04-21 Network Appliance, Inc. System and method for real-time balancing of user workload across multiple storage systems with shared back end storage
US7707165B1 (en) 2004-12-09 2010-04-27 Netapp, Inc. System and method for managing data versions in a file system
US7506111B1 (en) 2004-12-20 2009-03-17 Network Appliance, Inc. System and method for determining a number of overwitten blocks between data containers
US7424497B1 (en) 2005-01-27 2008-09-09 Network Appliance, Inc. Technique for accelerating the creation of a point in time prepresentation of a virtual file system
US8180855B2 (en) * 2005-01-27 2012-05-15 Netapp, Inc. Coordinated shared storage architecture
US8019842B1 (en) 2005-01-27 2011-09-13 Netapp, Inc. System and method for distributing enclosure services data to coordinate shared storage
US7574464B2 (en) * 2005-02-14 2009-08-11 Netapp, Inc. System and method for enabling a storage system to support multiple volume formats simultaneously
US7757056B1 (en) 2005-03-16 2010-07-13 Netapp, Inc. System and method for efficiently calculating storage required to split a clone volume
US20060230226A1 (en) 2005-04-12 2006-10-12 M-Systems Flash Disk Pioneers, Ltd. Hard disk drive with optional cache memory
US8055702B2 (en) * 2005-04-25 2011-11-08 Netapp, Inc. System and method for caching network file systems
US7617370B2 (en) 2005-04-29 2009-11-10 Netapp, Inc. Data allocation within a storage system architecture
US7634760B1 (en) 2005-05-23 2009-12-15 Netapp, Inc. System and method for remote execution of a debugging utility using a remote management module
US7739318B2 (en) * 2005-06-20 2010-06-15 Netapp, Inc. System and method for maintaining mappings from data containers to their parent directories
US7653682B2 (en) * 2005-07-22 2010-01-26 Netapp, Inc. Client failure fencing mechanism for fencing network file system data in a host-cluster environment
US7516285B1 (en) 2005-07-22 2009-04-07 Network Appliance, Inc. Server side API for fencing cluster hosts via export access rights
US7650366B1 (en) 2005-09-09 2010-01-19 Netapp, Inc. System and method for generating a crash consistent persistent consistency point image set
US20070088917A1 (en) * 2005-10-14 2007-04-19 Ranaweera Samantha L System and method for creating and maintaining a logical serial attached SCSI communication channel among a plurality of storage systems
US7467276B1 (en) 2005-10-25 2008-12-16 Network Appliance, Inc. System and method for automatic root volume creation
US7376796B2 (en) 2005-11-01 2008-05-20 Network Appliance, Inc. Lightweight coherency control protocol for clustered storage system
US7693864B1 (en) 2006-01-03 2010-04-06 Netapp, Inc. System and method for quickly determining changed metadata using persistent consistency point image differencing
US7734603B1 (en) 2006-01-26 2010-06-08 Netapp, Inc. Content addressable storage array element
US8560503B1 (en) 2006-01-26 2013-10-15 Netapp, Inc. Content addressable storage system
US8285817B1 (en) 2006-03-20 2012-10-09 Netapp, Inc. Migration engine for use in a logical namespace of a storage system environment
US7590660B1 (en) 2006-03-21 2009-09-15 Network Appliance, Inc. Method and system for efficient database cloning
US8260831B2 (en) * 2006-03-31 2012-09-04 Netapp, Inc. System and method for implementing a flexible storage manager with threshold control
US20070233868A1 (en) * 2006-03-31 2007-10-04 Tyrrell John C System and method for intelligent provisioning of storage across a plurality of storage systems
US7769723B2 (en) * 2006-04-28 2010-08-03 Netapp, Inc. System and method for providing continuous data protection
US8301673B2 (en) * 2006-12-29 2012-10-30 Netapp, Inc. System and method for performing distributed consistency verification of a clustered file system
US8219821B2 (en) 2007-03-27 2012-07-10 Netapp, Inc. System and method for signature based data container recognition
US8312214B1 (en) 2007-03-28 2012-11-13 Netapp, Inc. System and method for pausing disk drives in an aggregate
US7827350B1 (en) 2007-04-27 2010-11-02 Netapp, Inc. Method and system for promoting a snapshot in a distributed file system
US8219749B2 (en) * 2007-04-27 2012-07-10 Netapp, Inc. System and method for efficient updates of sequential block storage
US7882304B2 (en) * 2007-04-27 2011-02-01 Netapp, Inc. System and method for efficient updates of sequential block storage
US7996636B1 (en) 2007-11-06 2011-08-09 Netapp, Inc. Uniquely identifying block context signatures in a storage volume hierarchy
US7984259B1 (en) 2007-12-17 2011-07-19 Netapp, Inc. Reducing load imbalance in a storage system
US8725986B1 (en) 2008-04-18 2014-05-13 Netapp, Inc. System and method for volume block number to disk block number mapping
US8621154B1 (en) 2008-04-18 2013-12-31 Netapp, Inc. Flow based reply cache
US8161236B1 (en) 2008-04-23 2012-04-17 Netapp, Inc. Persistent reply cache integrated with file system
US8171227B1 (en) 2009-03-11 2012-05-01 Netapp, Inc. System and method for managing a flow based reply cache
KR20140040870A (ko) * 2009-07-07 2014-04-04 엘에스아이 코포레이션 계층화된 비휘발성 스토리지를 위한 시스템 및 방법
US8825685B2 (en) * 2009-11-16 2014-09-02 Symantec Corporation Selective file system caching based upon a configurable cache map
US9501591B2 (en) 2013-12-09 2016-11-22 International Business Machines Corporation Dynamically modifiable component model

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3275991A (en) * 1962-12-03 1966-09-27 Bunker Ramo Memory system
US3647348A (en) * 1970-01-19 1972-03-07 Fairchild Camera Instr Co Hardware-oriented paging control system
US3820078A (en) * 1972-10-05 1974-06-25 Honeywell Inf Systems Multi-level storage system having a buffer store with variable mapping modes
US3911401A (en) * 1973-06-04 1975-10-07 Ibm Hierarchial memory/storage system for an electronic computer
US4080651A (en) * 1977-02-17 1978-03-21 Xerox Corporation Memory control processor

Also Published As

Publication number Publication date
US4399503A (en) 1983-08-16
GB2024476A (en) 1980-01-09
JPS5528197A (en) 1980-02-28
FR2434431A1 (fr) 1980-03-21

Similar Documents

Publication Publication Date Title
DE2926343A1 (de) Einrichtung zum anschalten einer datenverarbeitungsanlage an ein magnetspeichersystem
DE2641741C2 (de) Rechenanlage aus mehreren miteinander über ein Sammelleitungssystem verbundenen und zusammenwirkenden Einzelrechnern und einem Steuerrechner
DE2560474C2 (de) Schaltungsanordnung in einer digitalen Datenverarbeitungsanlage zur Steuerung der Übertragung von Informationen zwischen peripheren Einheiten und einem Zentralprozessor
DE69132652T2 (de) Rechnerdatenleitweglenkungssystem
DE2646296C3 (de) Elektronische assoziative Mehrrechner Schaltungsanordnung mit einem modularen Aufbau
DE69834026T2 (de) Verfahren und vorrichtung zur befehlswiedereinordnung und wiederherstellung von daten zur originalen befehlsreihenfolge
EP1329816B1 (de) Verfahren zum selbständigen dynamischen Umladen von Datenflussprozessoren (DFPs) sowie Bausteinen mit zwei- oder mehrdimensionalen programmierbaren Zellstrukturen (FPGAs, DPGAs, o.dgl.)
DE2751106C2 (de)
DE3131341A1 (de) "pufferspeicherorganisation"
DE2104733A1 (de) Mehrkanal Ubertragungsverarbeitungs system zum unabhängigen Steuern von Ein gäbe/Ausgabe Datenübertragungen
DE102005055000A1 (de) Modulares Avioniksystem eines Flugzeuges
DE2523372B2 (de) Eingabe-ZAusgabe-Anschlußsteuereinrichtung
DE60211452T2 (de) DMA-Übertragung von Daten und Prüfinformation zu und von einem Datenspeicherungsgerät
DE2747146A1 (de) Datenverarbeitungsanlage
DE2164793A1 (de) Verfahren und Datenverarbeitungsanlage zur Steuerung einer Vielzahl von Eingabe/ Ausgabe-Einheiten mittels eine Zentraleinheit
CH634938A5 (de) Einrichtung fuer die weiterleitung von speicherzugriffsanforderungen.
DE2054830B2 (de) Informationsverarbeitungsanlage mit mitteln zum zugriff zu speicher-datenfeldern variabler laenge
DE3936339C2 (de) DMA-Controller
DE3142504A1 (de) Mehrfachplattenspeicher-uebertragungssystem
DE3003340C2 (de) Verfahren und Schaltungsanordnung zur Übertragung von binären Signalen zwischen über ein zentrales Busleitungssystem miteinander verbundenen Anschlußgeräten
EP1308846B1 (de) Datenübertragungseinrichtung
DE2845218B1 (de) Mikroprogrammgesteuerte Ein-/Ausgabeeinrichtung und Verfahren zum Durchfuehren von Ein-/Ausgabeoperationen
DE3149678C2 (de) Anordnung zur Zwischenspeicherung von zwischen zwei Funktionseinheiten in beiden Richtungen zu übertragenden Informationen in einem Pufferspeicher
DE2507405A1 (de) Verfahren und anordnung zum synchronisieren der tasks in peripheriegeraeten in einer datenverarbeitungsanlage
DE2858284C2 (de)

Legal Events

Date Code Title Description
8139 Disposal/non-payment of the annual fee