Kanal-E / A - Channel I/O

Beim Rechnen ist Kanal-E / A eine Hochleistungs- Eingabe / Ausgabe- Architektur (E / A), die in verschiedenen Formen auf einer Reihe von Computerarchitekturen implementiert ist, insbesondere auf Großrechnern . In der Vergangenheit wurden Kanäle im Allgemeinen mit benutzerdefinierten Geräten implementiert, die als Kanäle , E / A-Prozessor , E / A-Controller , E / A- Synchronisierer oder DMA-Controller bezeichnet wurden .

Überblick

Viele E / A-Aufgaben können komplex sein und erfordern, dass Logik auf die Daten angewendet wird, um Formate und andere ähnliche Aufgaben zu konvertieren. In diesen Situationen besteht die einfachste Lösung darin, die CPU zu bitten , die Logik zu verarbeiten. Da E / A-Geräte jedoch relativ langsam sind, kann eine CPU (in Computerperspektive) Zeit damit verschwenden, auf die Daten vom Gerät zu warten. Diese Situation wird als "E / A-gebunden" bezeichnet.

Die Kanalarchitektur vermeidet dieses Problem, indem sie eine logisch unabhängige, kostengünstige Einrichtung verwendet. Kanalprozessoren sind einfach, aber in sich geschlossen, mit minimaler Logik und ausreichend Scratchpad-Speicher (Arbeitsspeicher), um E / A-Aufgaben zu erledigen. Sie sind normalerweise nicht leistungsfähig oder flexibel genug, um allein als Computer verwendet zu werden, und können als eine Art Coprozessor ausgelegt werden . Auf einigen Systemen verwenden die Kanäle Speicher oder Register, die vom Zentralprozessor adressierbar sind, als Arbeitsblockspeicher, während sie auf anderen Systemen in der Kanalhardware vorhanden sind. In der Regel gibt es Standardschnittstellen zwischen Kanälen und externen Peripheriegeräten, und mehrere Kanäle können gleichzeitig betrieben werden.

Eine CPU bezeichnet normalerweise einen Speicherblock oder sendet ein relativ kleines Kanalprogramm an den Kanal, um E / A-Aufgaben zu erledigen, die der Kanal und der Controller in vielen Fällen ohne weitere Eingriffe der CPU ausführen können (Ausnahme: diese Kanäle) Programme, die "programmgesteuerte Interrupts" (PCIs) verwenden, um das Laden von Programmen, das Paging von Anforderungen und andere wichtige Systemaufgaben zu erleichtern).

Wenn E / A Übertragung abgeschlossen ist oder ein Fehler festgestellt wird, mit dem Controller kommuniziert mit der CPU durch den Kanal eines Interrupt . Da der Kanal direkten Zugriff auf den Hauptspeicher hat, wird er häufig auch als DMA-Controller ( Direct Memory Access ) bezeichnet.

In den neuesten Implementierungen wird das Kanalprogramm initiiert und der Kanalprozessor führt alle erforderlichen Verarbeitungen durch, bis entweder eine Endbedingung oder ein programmgesteuerter Interrupt (PCI) vorliegt. Dadurch entfällt ein Großteil der CPU-Kanal-Interaktion und die Gesamtsystemleistung wird erheblich verbessert. Der Kanal kann verschiedene Arten von Endbedingungen melden, die eindeutig normal sein können, eindeutig einen Fehler anzeigen können oder deren Bedeutung vom Kontext und den Ergebnissen einer nachfolgenden Erfassungsoperation abhängen kann. In einigen Systemen kann ein E / A-Controller eine automatische Wiederholung einiger Vorgänge ohne CPU-Eingriff anfordern. In früheren Implementierungen erforderte jeder noch so kleine Fehler einen CPU-Eingriff, und der Overhead war folglich viel höher. Eine programmgesteuerte Unterbrechung (PCI) wird immer noch von bestimmten Legacy-Vorgängen verwendet, aber der Trend geht dahin, sich von solchen PCIs zu entfernen, sofern dies nicht unvermeidbar ist.

Geschichte

Die erste Verwendung von Kanal-E / A erfolgte 1957 mit dem Vakuumröhren-Mainframe IBM 709 , dessen Data Synchronizer Modell 766 der erste Kanalcontroller war. Sein transistorisierter Nachfolger, der IBM 7090 , hatte zwei bis acht 6-Bit-Kanäle (der 7607) ) und einen Kanalmultiplexer (7606), der bis zu acht Kanäle steuern kann. Die 7090 und 7094 könnten mit der 7909 auch bis zu acht 8-Bit-Kanäle haben.

Während IBM auf einigen Computern Datenkanalbefehle verwendete und die Befehlsverkettung beispielsweise auf dem 7090 zuließ, verwendeten die meisten anderen Anbieter Kanäle, die sich mit einzelnen Datensätzen befassten. Einige Systeme, z. B. die GE-600-Serie , verfügten jedoch über komplexere E / A-Architekturen.

Später waren für größere IBM System / 360- Computer und sogar für frühe System / 370- Modelle die Auswahlkanäle und die Multiplexerkanäle immer noch sperrige und teure separate Prozessoren, wie beispielsweise der IBM 2860-Auswahlkanal (ein bis drei Auswahlkanäle in einem einzigen) Box), der IBM 2870-Byte-Multiplexerkanal (ein Multiplexerkanal und optional ein Auswahlunterkanal in einer einzelnen Box) und der IBM 2880-Blockmultiplexerkanal (ein oder zwei Blockmultiplexerkanäle in einer einzelnen Box).

Die Hardware-Implementierung von System / 370-kompatiblen Kanälen durch die Amdahl Corporation war ganz anders. Eine einzelne interne Einheit, die als "C-Unit" bezeichnet wird, unterstützt bis zu 16 Kanäle mit derselben Hardware für alle unterstützten Kanäle. Es waren zwei interne "C-Units" möglich, die insgesamt bis zu 32 Kanäle unterstützen. Jede "C-Einheit" führte unabhängig einen Prozess durch, der allgemein als "Shifting Channel State Processor" (eine Art Barrel-Prozessor ) bezeichnet wird und eine spezialisierte Finite State Machine (FSM) implementierte . In jedem CPU-Zyklus, alle 32 Nanosekunden in den 470 V / 6 und / 5 und alle 26 Nanosekunden in den 470 V / 7 und / 8, liest die "C-Einheit" den vollständigen Status des nächsten Kanals in der Prioritätssequenz und seines E / A-Kanals In-Tags . Die erforderlichen Aktionen, die durch den letzten Status dieses Kanals und seine In-Tags definiert wurden, wurden ausgeführt: Daten wurden aus dem Hauptspeicher gelesen oder in diesen geschrieben, das Betriebssystemprogramm wurde unterbrochen, wenn eine solche Unterbrechung durch das Programmsteuerungs-Interrupt-Flag des Kanalprogramms angegeben wurde, und das " C-Unit "speicherte schließlich den nächsten Status dieses Kanals und setzte seine E / A-Kanal-Out-Tags und fuhr dann mit dem Kanal mit der nächstniedrigeren Priorität fort. In einigen Fällen war eine Vorauszahlung möglich. Innerhalb der "C-Einheit" wurde für alle Kanäle, die von diesem FSM emuliert wurden, ausreichend FIFO-Speicher bereitgestellt. Kanäle können mithilfe der Befehle der Wartungskonsole problemlos nach Kundenwunsch für die IBM 2860-Emulation (Selektor), die IBM 2870-Emulation (Byte-Multiplexer) oder die IBM 2880-Emulation (Blockmultiplexer) neu konfiguriert werden. "Zwei-Byte-Schnittstelle" wurde ebenso unterstützt wie "Data-In / Data-Out" und andere leistungsstarke IBM-Kanaloptionen. Es wurden auch integrierte Channel-to-Channel-Adapter angeboten, die in Amdahl-Sprache als CCAs, in IBM-Sprache als CTCs bezeichnet wurden. Ein echter Game-Changer, und dies zwang IBM, seine Mainframes neu zu gestalten, um ähnliche Kanalfähigkeiten und Flexibilität bereitzustellen. Die erste Antwort von IBM bestand darin, abgespeckte Modelle 158, die nur im "Kanalmodus" arbeiten, als Kanaleinheiten des Modells 303x einzubeziehen. In der Amdahl "C-Einheit" kann jeder Kanal ein beliebiger Typ sein, 2860, 2870 oder 2880, ohne die Kanäle 0 und 4 für die 2870 zu reservieren, wie bei einigen IBM Modellen.

Für kleinere IBM Computer, System / 360-Modelle 50 und niedriger und System / 370-Modelle 158 und darunter, wurden Kanäle im Mikrocode der CPU implementiert , und die CPU selbst arbeitete in einem von zwei Modi, entweder "CPU-Modus" oder "Kanalmodus" ", wobei der Kanalmodus den CPU-Modus" blockiert "(IBM 2860-, 2870- und 2880- und Amdahl-Kanäle waren" nicht blockierend ").

Viel später wurden die Kanäle als On-Board-Prozessor implementiert, der sich in derselben Box wie die CPU befindet, die allgemein als "Kanalprozessor" bezeichnet wird und normalerweise ein RISC- Prozessor ist, bei dem es sich jedoch um einen System / 390-Mikroprozessor handeln kann spezieller Mikrocode wie in den CMOS- Mainframes von IBM .

Einige der frühesten kommerziellen Nicht-IBM-Kanalsysteme befanden sich auf UNIVAC 490 , CDC 1604 , Burroughs B5000 , UNIVAC 1107 und GE 635 . Seitdem sind Kanalcontroller ein Standardbestandteil der meisten Mainframe-Designs und der Hauptvorteil von Mainframes gegenüber kleineren, schnelleren PCs und Netzwerkcomputern.

Der CDC 6600- Supercomputer von 1965 verwendete für diese Rolle 10 logisch unabhängige Computer, sogenannte Peripherieprozessoren (PPs), und 12 einfache E / A-Kanäle. PPs waren eine moderne Version der ersten CDC-PCs, der CDC 160 und 160A. Das Betriebssystem befand sich ursprünglich in PP0 und wurde dort ausgeführt.

Kanal-Controller wurden auch so klein wie Single-Chip-Designs mit mehreren Kanälen hergestellt, die beispielsweise in NeXT- Computern verwendet werden.

Zu einer Zeit fehlten vielen billigen Computern Kanalcontroller. Channel-Controller feiern ein Comeback in Form von Bus-Mastering- Peripheriegeräten wie PCI- DMA-Geräten ( Direct Memory Access ). Die Gründe für diese Geräte sind die gleichen wie für die ursprünglichen Kanalcontroller, nämlich Übertragung, Interrupts und Kontextumschaltung von der Haupt-CPU.

Beschreibung

Die Referenzimplementierung von Kanal-E / A ist die der IBM System / 360-Familie von Mainframes und ihrer Nachfolger, aber ähnliche Implementierungen wurden von IBM auf anderen Leitungen, z. B. 1410 und 7010 , 7030 , und von anderen Mainframe-Anbietern, wie z wie Control Data , Bull ( General Electric / Honeywell ) und Unisys .

Computersysteme, die Kanal-E / A verwenden, verfügen über spezielle Hardwarekomponenten, die alle Eingabe- / Ausgabeoperationen in ihrer Gesamtheit unabhängig von den CPUs des Systems ausführen. Die CPU eines Systems, das Kanal-E / A verwendet, hat normalerweise nur einen Maschinenbefehl in seinem Repertoire für die Eingabe und Ausgabe; Diese Anweisung wird verwendet, um Eingabe- / Ausgabebefehle in Form von Kanalprogrammen an die spezialisierte E / A-Hardware zu übergeben . Die E / A wird danach ohne Eingreifen der CPU fortgesetzt, bis ein Ereignis auftritt, das eine Benachrichtigung des Betriebssystems erfordert. Zu diesem Zeitpunkt signalisiert die E / A-Hardware der CPU einen Interrupt.

Ein Kanal ist eine unabhängige Hardwarekomponente, die alle E / A auf eine Reihe von Controllern oder Geräten abstimmt. Es ist trotz des Namens nicht nur ein Kommunikationsmedium; Es ist ein programmierbares Gerät, das alle Details der E / A verarbeitet, nachdem es eine Liste der auszuführenden E / A-Operationen (das Kanalprogramm) erhalten hat.

Jeder Kanal kann einen oder mehrere Controller und / oder Geräte unterstützen, aber jedes Kanalprogramm kann nur auf eines dieser angeschlossenen Geräte gerichtet sein. Ein Kanalprogramm enthält eine Liste von Befehlen für den Kanal selbst sowie für die Steuerung und das Gerät, an das es gerichtet ist. Sobald das Betriebssystem eine vollständige Liste der Kanalbefehle erstellt hat, führt es eine einzelne E / A-Maschinenanweisung aus, um das Kanalprogramm zu starten. Der Kanal übernimmt danach die Kontrolle über die E / A-Operationen, bis sie abgeschlossen sind.

Es ist möglich, sehr komplexe Kanalprogramme zu entwickeln, einschließlich Testen von Daten und bedingter Verzweigung innerhalb dieses Kanalprogramms. Diese Flexibilität befreit die CPU vom Aufwand für das Starten, Überwachen und Verwalten einzelner E / A-Vorgänge. Die spezialisierte Kanalhardware wiederum ist für E / A vorgesehen und kann effizienter als die CPU (und vollständig parallel zur CPU) ausgeführt werden. Channel I / O ist dem Direct Memory Access (DMA) von Mikrocomputern nicht unähnlich , nur komplexer und fortschrittlicher.

Auf großen Mainframe-Computersystemen sind CPUs nur eine von mehreren leistungsstarken Hardwarekomponenten, die parallel arbeiten. Spezielle Ein- / Ausgabesteuerungen (deren genaue Namen von Hersteller zu Hersteller unterschiedlich sind) verarbeiten ausschließlich E / A, und diese sind wiederum mit Hardwarekanälen verbunden, die auch für die Ein- und Ausgabe vorgesehen sind. Es können mehrere CPUs und mehrere E / A-Prozessoren vorhanden sein. Die Gesamtarchitektur optimiert die Eingabe- / Ausgabeleistung, ohne die reine CPU-Leistung zu beeinträchtigen. Da die meisten realen Anwendungen von Mainframe-Systemen stark E / A-intensive Geschäftsanwendungen sind, trägt diese Architektur dazu bei, den sehr hohen Durchsatz bereitzustellen, der Mainframes von anderen Computertypen unterscheidet.

In der IBM ESA / 390- Terminologie ist ein Kanal eine parallele Datenverbindung innerhalb des baumartigen oder hierarchisch organisierten E / A-Subsystems. In System / 390-E / A-Käfigen werden Kanäle entweder direkt mit Geräten verbunden, die im Käfig installiert sind (Kommunikationsadapter wie ESCON , FICON , Open Systems Adapter ), oder sie verlaufen außerhalb des Käfigs unterhalb des Doppelbodens als Kabel des Dicke eines Daumens und direkte Verbindung mit Kanalschnittstellen auf größeren Geräten wie Bandsubsystemen , Direktzugriffsspeichergeräten (DASDs), Terminalkonzentratoren und anderen ESA / 390-Systemen.

Arten von Kanälen

Kanäle unterscheiden sich in der Anzahl und Art der von ihnen unterstützten gleichzeitigen E / A-Vorgänge. In der IBM-Terminologie unterstützt ein Multiplexerkanal eine Reihe von gleichzeitig verschachtelten langsamen Operationen, die jeweils ein Byte von einem Gerät übertragen. Ein Auswahlkanal unterstützt eine Hochgeschwindigkeitsoperation, bei der jeweils ein Datenblock übertragen wird. Ein Blockmultiplexer unterstützt eine Reihe von logisch gleichzeitigen Kanalprogrammen, jedoch jeweils nur eine Hochgeschwindigkeitsdatenübertragung.

Kanalprogramm

Ein Kanalprogramm ist eine Folge von Kanalbefehlswörtern (CCWs), die vom E / A-Kanalsubsystem in IBM System / 360 und nachfolgenden Architekturen ausgeführt werden. Ein Kanalprogramm besteht aus einem oder mehreren Kanalbefehlswörtern. Das Betriebssystem signalisiert dem E / A-Kanal-Subsystem, mit der Ausführung des Kanalprogramms mit einem SSCH-Befehl (Start-Subkanal) zu beginnen. Dem Zentralprozessor steht es dann frei, mit Nicht-E / A-Anweisungen fortzufahren, bis sie unterbrochen werden. Wenn die Kanaloperationen abgeschlossen sind, unterbricht der Kanal den Zentralprozessor mit einer E / A-Unterbrechung. In früheren Modellen der IBM Mainframe-Leitung war die Kanaleinheit eine identifizierbare Komponente, eine für jeden Kanal. In modernen Mainframes werden die Kanäle unter Verwendung eines unabhängigen RISC-Prozessors implementiert, des Kanalprozessors, einer für alle Kanäle. IBM System / 370 Extended Architecture und seine Nachfolger ersetzten die früheren Maschinenanweisungen SIO ( Start-E / A ) und SIOF ( Start-E / A-Schnellfreigabe ) (System / 360 und frühes System / 370) durch SSCH ( Start-Unterkanal ). Anweisung (ESA / 370 und Nachfolger).

Kanal-E / A bietet erhebliche Einsparungen bei der Eingabe / Ausgabe. Unter IBM Linux unter IBM Z erfordert die Formatierung einer gesamten Spur eines DASD beispielsweise nur ein Kanalprogramm (und damit nur einen E / A-Befehl), jedoch mehrere Kanalbefehlswörter (eines pro Block). Das Programm wird vom dedizierten E / A-Prozessor ausgeführt, während der Anwendungsprozessor (die CPU) für andere Arbeiten frei ist.

Kanalbefehlswörter

Ein Kanalbefehlswort ( CCW ) ist eine Anweisung an einen spezialisierten E / A-Kanalprozessor, der tatsächlich eine Finite-State-Maschine ist. Es wird verwendet, um eine E / A-Operation wie "Lesen", "Schreiben" oder "Erfassen" auf einem mit einem Kanal verbundenen Gerät zu initiieren. Bei Systemarchitekturen, die Kanal-E / A implementieren, sind normalerweise alle Geräte über Kanäle verbunden. Daher erfordern alle E / A die Verwendung von CCWs.

CCWs werden vom Betriebssystem und der E / A-Unterroutine, einem Hilfsprogramm, oder von eigenständiger Software (z. B. Test- und Diagnoseprogrammen) in Kanalprogrammen organisiert . Eine begrenzte "Verzweigungs" -Fähigkeit, daher eine dynamisch programmierbare Fähigkeit, ist in solchen Kanalprogrammen unter Verwendung des Kanalflags "Statusmodifikator" und des CCW "Übertragung im Kanal" verfügbar.

Verkettung

IBM CCWs werden verkettet , um das Kanalprogramm zu bilden. Bits in der CCW zeigen an, dass der folgende Speicherort eine CCW enthält, die Teil desselben Kanalprogramms ist. Das Kanalprogramm führt normalerweise sequentielle CCWs aus, bis eine Ausnahme auftritt, eine TIC-CCW (Transfer-in-Channel) ausgeführt wird oder eine CCW ausgeführt wird, ohne dass eine Verkettung angezeigt wird. Die Befehlsverkettung teilt dem Kanal mit, dass der nächste CCW einen neuen Befehl enthält. Datenverkettung zeigt an, dass die nächste CCW die Adresse zusätzlicher Daten für denselben Befehl enthält, sodass beispielsweise Teile eines Datensatzes aus mehreren Datenbereichen im Speicher geschrieben oder in diese gelesen werden können (Sammeln und Streuen).

Selbstmodifizierende Kanalprogramme

Kanalprogramme können ihren eigenen Betrieb während der Ausführung basierend auf den gelesenen Daten ändern. Beispielsweise wird die Selbstmodifikation in OS / 360 ISAM häufig verwendet .

Beispiel für ein Kanalprogramm

Im folgenden Beispiel wird ein Datenträgerdatensatz gelesen, der durch einen aufgezeichneten Schlüssel gekennzeichnet ist . Die Spur, die den Datensatz und den gewünschten Wert der Tonart enthält, ist bekannt. Die Gerätesteuereinheit durchsucht die Spur, um den angeforderten Datensatz zu finden. In diesem Beispiel <> geben Sie an, dass das Kanalprogramm die Speicheradresse des angegebenen Felds enthält.

  SEEK             <cylinder/head number>
  SEARCH KEY EQUAL <key value>
  TIC              *-8 Back to search if not equal
  READ DATA        <buffer> 

Der TIC (Übertragung im Kanal) bewirkt, dass das Kanalprogramm zum Befehl SEARCH verzweigt, bis ein Datensatz mit einer passenden Taste (oder dem Ende der Spur) gefunden wird. Wenn ein Datensatz mit einem passenden Schlüssel gefunden wird, enthält der DASD-Controller den Status Modifier im Kanalstatus, wodurch der Kanal den TIC CCW überspringt. Somit verzweigt das Kanalprogramm nicht und der Kanal führt den Befehl READ aus.

Das obige Beispiel ist korrekt für unblockierte Aufzeichnungen (eine Aufzeichnung pro Block). Bei blockierten Datensätzen (mehr als ein Datensatz pro Block) muss der aufgezeichnete Schlüssel mit dem höchsten Schlüssel in diesem Block identisch sein (und die Datensätze müssen in Schlüsselfolge vorliegen), und das folgende Kanalprogramm wird verwendet:

  SEEK                     <cylinder/head number>
  SEARCH KEY HIGH OR EQUAL <key value>
  TIC                      *-8 Back to search if not high or equal
  READ DATA                <buffer> 

Wenn der Datensatz in Spuren zugeordnet ist und das Ende der Spur erreicht ist, ohne dass der angeforderte Datensatz gefunden wurde, wird das Kanalprogramm beendet und gibt die Statusanzeige "Kein Datensatz gefunden" zurück. In ähnlicher Weise wird das Kanalprogramm beendet und gibt die Statusanzeige "Kein Datensatz gefunden" zurück, wenn der Datensatz in Zylindern zugeordnet ist und das Ende des Zylinders erreicht ist, ohne dass der angeforderte Datensatz gefunden wurde. In einigen Fällen hat die Systemsoftware die Möglichkeit, die Spur- oder Zylindernummer zu aktualisieren und den E / A-Betrieb erneut zu starten, ohne das Anwendungsprogramm zu unterbrechen.

Kanalprogramme in virtuellen Speichersystemen

Auf den meisten Systemen arbeiten Kanäle mit realen (oder physischen) Adressen , während die Kanalprogramme mit virtuellen Adressen erstellt werden . Das Betriebssystem ist verantwortlich für die Übersetzung dieser Channel - Programme , bevor sie ausgeführt wird , und für diesen besonderen Zweck der Input / Output Betreuer (IOS) hat eine spezielle schnelle Fix - Funktion , die in das Betriebssystem Betreuer entworfen wurde nur für die „Korrekturen“ , die relativ sind kurze Dauer (dh deutlich kürzer als "Wanduhrzeit"). Seiten, die Daten enthalten, die von der E / A-Operation verwendet werden sollen, sind im realen Speicher gesperrt oder seitenfest . Das Kanalprogramm wird kopiert und alle virtuellen Adressen werden durch reale Adressen ersetzt, bevor der E / A-Vorgang gestartet wird. Nach Abschluss des Vorgangs werden die Seiten nicht mehr fixiert.

Da das Fixieren und Entfixieren von Seiten ein CPU-teurer Prozess ist, wird manchmal das langfristige Fixieren von Seiten verwendet, um die CPU-Kosten zu senken. Hier ist der virtuelle Speicher für die Lebensdauer der Anwendung seitenfixiert, anstatt jede E / A-Operation zu reparieren und freizugeben. Ein Beispiel für ein Programm, das langfristige Seitenkorrekturen verwenden kann, ist DB2 .

Eine Alternative zur langfristigen Seitenkorrektur besteht darin, die gesamte Anwendung einschließlich aller Datenpuffer in einen bevorzugten Bereich des Hauptspeichers zu verschieben. Dies wird durch ein spezielles SYSEVENT in MVS / 370 bis z / OS-Betriebssystemen erreicht, bei dem die Anwendung zunächst von einem beliebigen Ort aus, vermutlich aus einem nicht bevorzugten Bereich, ausgetauscht wird , um externen Speicher auszutauschen und zu blättern , und wird zweitens in einen bevorzugten Bereich (SYSEVENT TRANSWAP) eingetauscht. Danach kann die Anwendung von einem anderen speziellen SYSEVENT (SYSEVENT DONTSWAP) als nicht austauschbar markiert werden . Wenn eine solche Anwendung normal oder abnormal beendet wird, gibt das Betriebssystem implizit ein weiteres spezielles SYSEVENT im Namen der Anwendung aus, sofern dies noch nicht geschehen ist (SYSEVENT OKSWAP).

Booten mit Kanal-E / A.

Sogar das Bootstrapping des Systems oder das Initial Program Load (IPL) in der IBM-Nomenklatur wird von Kanälen ausgeführt, obwohl der Prozess von der CPU teilweise durch einen impliziten Start-E / A-Befehl (SIO), ein implizites Kanaladresswort (SIO), simuliert wird CAW) an Position 0 und ein implizites Kanalbefehlswort (CCW) mit einem Opcode von Read IPL, ebenfalls an Position 0. Die Befehlsverkettung wird angenommen, sodass die implizite CCW an Position 0 bis zur Fortsetzung des Kanalprogramms an Position 8 durchfällt und 16 und möglicherweise anderswo sollte einer dieser CCWs ein Transfer-in-Channel (TIC) sein.

Um ein System zu laden, liest das implizierte Read IPL CCW den ersten Block des ausgewählten IPL-Geräts in den 24-Byte-Datenbereich an Position 0, der Kanal fährt mit dem zweiten und dritten Doppelwort fort, die CCWs sind, und dieses Kanalprogramm wird geladen Der erste Teil der Systemladesoftware befindet sich an einer anderen Stelle im Hauptspeicher. Das erste Doppelwort enthält ein PSW, das beim Abrufen am Ende des IPL bewirkt, dass die CPU den vom CCW an Position 8 eingelesenen IPL-Text (Bootstrap Loader) ausführt. Der IPL-Text lokalisiert, lädt und überträgt die Kontrolle an der Nucleus des Betriebssystems. Der Nucleus führt alle erforderlichen Initialisierungen durch oder initiiert sie und beginnt dann mit dem normalen Betriebssystembetrieb.

Dieses IPL-Konzept ist geräteunabhängig. Es kann von einem Kartenspiel, von einem Magnetband oder von einem Direktzugriffsspeichergerät (DASD), z. B. einer Festplatte oder einer Trommel, IPL-fähig sein . Der Befehl Read IPL (X'02 '), der von der CPU simuliert wird, ist ein Lesebefehl EBCDIC Select Stacker 1 auf dem Kartenleser und ein Lesebefehl auf Bandmedien (die von Natur aus sequentiellen Zugriff haben), aber a spezieller Read-IPL-Befehl auf DASD.

DASD-Controller akzeptieren den Befehl X'02 ', versuchen, X'0000' Kopf X'0000 'zu zylindern, springen zum Indexpunkt (dh kurz nach dem Track Descriptor Record (R0)) und behandeln den Befehl Read IPL wie folgt Es war ein Befehl zum Lesen von Daten (X'06 '). Ohne dieses spezielle Verhalten des DASD-Controllers wäre ein geräteunabhängiges IPL nicht möglich. Auf einem DASD ist der IPL-Text auf Zylinder X'0000 ', Spur X'0000' und Aufzeichnung X'01 '(24 Bytes) und Zylinder X'0000', Spur X'0000 'und Aufzeichnung X' enthalten. 02 '(ziemlich groß, sicherlich etwas mehr als 3.000 Bytes). Die Datenträgerbezeichnung befindet sich immer auf dem Zylinder X'0000 ', der Spur X'0000' und dem Block X'03 '(80 Byte). Die Datenträgerbezeichnung zeigt immer auf das VTOC mit einem Zeiger der Form HHHH (dh das VTOC muss sich innerhalb der ersten 65.536 Spuren befinden). Das Format 4 DSCB des VTOC definiert die Ausdehnung (Größe) des VTOC, sodass die Datenträgerbezeichnung nur einen Zeiger auf die erste Spur in der Ausdehnung des VTOC benötigt. Da das Format 4 DSCB, das das VTOC beschreibt, immer das allererste DSCB ist Im VTOC verweist HHHH auch auf das Format 4 DSCB.

Wenn von einem Gerät, das nicht mit IPL Text initialisiert wurde, ein IPL-Versuch unternommen wird, wechselt das System einfach in einen Wartezustand. Das DASD-Initialisierungsprogramm (Direct Access Storage Device) IBCDASDI oder die DASD-Initialisierungsanwendung ICKDSF setzen einen Wartezustand PSW und eine Dummy-CCW-Zeichenfolge in die 24 Bytes, falls das Gerät danach nur für Daten und nicht für IPL bestimmt wird welche diese Programme das VTOC formatieren und andere Festplatteninitialisierungsfunktionen ausführen.

Siehe auch

Verweise

Anmerkungen

Externe Links