DE2926343A1 - Einrichtung zum anschalten einer datenverarbeitungsanlage an ein magnetspeichersystem - Google Patents
Einrichtung zum anschalten einer datenverarbeitungsanlage an ein magnetspeichersystemInfo
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/123—Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
Description
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
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
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)
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
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:
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
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.
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 η η η η η η π ηΧΧΧΧΧΧΧΧΧΧ
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 | ||||||
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
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.
Wenn der P-Port bei einem CDP-Transfer beteiligt ist, muß
F408 mit der beginnenden P-Port-Adresse (in Byte) geladen werden.
Ist bei einem CDP-Transfer der D-Port beteiligt, muß F40C den
niedrigwertigen Teil der D/M-Port-Startadresse (in Byte) beinhalten
.
Wenn bei einem CDP-Transfer der S-Port beteiligt ist, muß F410
den niedrigwertigen Abschnitt der S-Port-Startadresse (in Byte) beinhalten.
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
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.
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.
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.
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).
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
"•g t» CL ra
3 3 3®
CCCS
a a a ~
ο «- cm eo
UJlLOI
QQQQ
O Ü O Ü
GQ QQ CQ CQ
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
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,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
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"
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
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
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".
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
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:
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
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
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:
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
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.
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)
- PATENTANWÄLTE A. GRÜNECKER0IP1.-INS.H. KINKELDEYDR-ING. · AeE [CALTECHK. SCHUMANNDR RER NAT, ■ 13(PL-PHYaP. H. JAKOBDlPL-INaG. BEZOLDOR RERNAT* D(PL-CHEM.8 MÜNCHEN 22MAXIMIUANSTRASSE 4äP 1401829. Juni 1979BUSKER EAMO CORPORATIONCommerce Drive, Oak Brook, 111. 60521, USA.Einrichten zum Anschalten einer Datenverarbeitungsanlage an ein MagnetspeichersystemPatentansprücheEinrichtung 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 das909883/0773(öse) saaaea telex os-sesso Telegramme monapat telekopiererORIGINALMagnetspeicher-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/07734. 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/0773Wö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
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)
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)
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 |
-
1978
- 1978-06-30 US US05/920,831 patent/US4399503A/en not_active Expired - Lifetime
-
1979
- 1979-06-29 DE DE19792926343 patent/DE2926343A1/de not_active Withdrawn
- 1979-06-29 GB GB7922764A patent/GB2024476A/en not_active Withdrawn
- 1979-06-29 FR FR7917083A patent/FR2434431A1/fr not_active Withdrawn
- 1979-06-30 JP JP8338779A patent/JPS5528197A/ja active Pending
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 |