DE2546354A1 - Mehrprogramm-dv-system - Google Patents

Mehrprogramm-dv-system

Info

Publication number
DE2546354A1
DE2546354A1 DE19752546354 DE2546354A DE2546354A1 DE 2546354 A1 DE2546354 A1 DE 2546354A1 DE 19752546354 DE19752546354 DE 19752546354 DE 2546354 A DE2546354 A DE 2546354A DE 2546354 A1 DE2546354 A1 DE 2546354A1
Authority
DE
Germany
Prior art keywords
descriptor
register
segment
descriptors
bit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
DE19752546354
Other languages
English (en)
Inventor
Richard P Carlisle
John F Couleur
Paul H Jennings
Jane King
Thomas A Kinhan
Robert F Montee
William A Shelly
Dale L Shipley
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Bull HN Information Systems Italia SpA
Original Assignee
Honeywell Information Systems Italia SpA
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Honeywell Information Systems Italia SpA filed Critical Honeywell Information Systems Italia SpA
Publication of DE2546354A1 publication Critical patent/DE2546354A1/de
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/145Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being virtual, e.g. for virtual blocks or segments before a translation mechanism

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Storage Device Security (AREA)

Description

52-02488 Ge 14. Oktober 1975
HONEYWELL INFORMATION SYSTEMS INC.
200 Smith Street
Waltham, Mass., TjSA
Mehrprogramm-DV-System
Die Erfindung bezieht sich auf ein Mehrprogramm-DV-System mit einem in eine Vielzahl von Arbeitsbereichen unterteilten Speicher, wobei Benutzern jeweils bestimmte Arbeitsbereiche zuordenbar sind.
Moderne DV-Systeme enthalten meistens mehrere Prozessoren und gestatten Mehrfach-Durchführung von Programmen durch örtliche und über Fernleitungen angeschlossene Benutzer. Bei einer solchen Datenverarbeitung müssen für die Benutzerprograitune und Daten, die Betriebssystem-Software und die mehrfach ausgenutzten Anwendungsprogramme umfangreiche Datenspeicher vorgesehen werden. Außerdem sind hochentwickelte Software und Hardware erforderlich, um bei der Durchführung der einzelnen Vorgänge in den Systemprozessoren die Programme und Daten zu verarbeiten. Um den Anforderungen der Benutzer ohne einen unerschwinglich hohen Preis für den Kernspeicher Rechnung tragen zu können, verwenden DV-Systeme erweiterte Speicher, in denen der Primär- oder Kernspeicher des Systems durch Sekundär- oder Massenspeicher in Form von Magnetplatten oder dergleichen ergänzt ist. Während irgendein Benutzer tatsächlich während der Durchführung eines Programmes
609817/0931
Hz /de
nur einen kleinen Teil des Hauptspeichers belegt, steht ihm scheinbar ein wesentlich größerer virtueller Speicher zur Verfügung, der durch die Erweiterung des Hauptspeichers durch die Sekundärspeicher gegeben ist.
Die Informationsspeicherung im Haupt- bzw. im erweiterten Speicher kann in Form von Segmenten und Seiten erfolgen, wobei die Benutzerprogramme in Segmente unterschiedlicher Länge unterteilt sind und die Segmente eine Vielzahl von Datenseiten gleicher Länge aufweisen können. Die Unterteilung in Seiten führt zu einer flexiblen Informationsspeicherung in dem zur Verfügung stehenden Speicherraum, wobei eine Seitentabelle dem Benutzer das Auffinden der gespeicherten Seiten ermöglicht.
In der älteren deutschen Patentanmeldung P 25 16 050.3 der Anmelderin ist ein verbessertes Verfahren sowie eine Vorrichtung zum Speichern und zum Zugriff auf Daten in einem Großspeichersystem beschrieben. Durch die Verwendung der Abteilungs-, Segmentierungs- und Seitentechnik ist eine direkte Adressierung des Speichers möglich. Ferner ergibt sich eine vergrößerte Sicherheit der Benutzerprogramme und Daten durch die Verwendung von Arbeitsspeicherbereichen, wobei auf einige von diesen gemeinsam und auf andere nur exklusiv Zugriff genommen werden kann. Dies führt zu einer Benutzer- und Informationstrennung. Die Sicherstellung eines begrenzten Zugriffes auf sichere Bereiche oder Domänen hinsichtlich eines aufgerufenen Programmes wird durch die Bildung von Descriptoren gewährleistet, welche Programmsegmente im Speicher kennzeichnen. Zusätzlich kann durch Schrumpfungsdescriptoren der durch ein aufgerufenes Programm belegte Speicherraum auf die spezifischen Daten innerhalb eines Segmentes reduziert werden, wobei dieses Segment wesentlich für das aufgerufene Programm ist und die verbleibenden Teile des Segmentes für dieses gesperrt werden.
809817/0931
Es ist die Aufgabe der vorliegenden Erfindung, ein DV-System anzugeben, das während des Ablaufs einer ersten Prozedur den sicheren Aufruf einer weiteren Prozedur und bei Beendigung der Ausführung der aufgerufenen Prozedur die Rückkehr zu der ersten Prozedur gestatten soll. Die Lösung dieser Aufgabe gelingt durch die im Anspruch 1 gekennzeichnete Erfindung. Weitere vorteilhafte Ausgestaltungen der Erfindung ergeben sich aus den Unteransprüchen. Das erfindungsgemäße DV-System verwendet Speicherdescriptoren, die einen Speicher-Arbeitsbereich, eine Basisposition innerhalb des Arbeitsbereiches zur Kennzeichnung eines Anfangspunktes und eine Grenze zur Kennzeichnung des durch den Descriptor belegten Speicherplatzes festlegen. Weiterhin wird ein Befehl verwendet, welcher die Basisposition, die Größe oder auch beides modifiziert. Überprüfungen werden durchgeführt,um sicherzustellen, daß der durch den neuen Descriptor beschriebene Speicherplatz vollständig innerhalb des durch den ursprünglichen Descriptor definierten Speicherplatzes liegt. Der Zugriff zu dem durch den neuen Descriptor bestimmten Speicherbereich beinhaltet ferner alle Begrenzungen, denen auch der durch den ursprünglichen Descriptor beschriebene Speicherbereich unterlag.
Zur Erläuterung der Erfindung wird im folgenden auf die beiliegenden Zeichnungen Bezug genommen. Dabei zeigt:
Figur 1 ein Flußdiagramm, welches den allgemeinen Ablauf beim Aufruf einer Prozedur durch eine andere Prozedur und die Rückkehr zu der aufrufenden Prozedur gemäß der vorliegenden Erfindung darstellt;
Figuren 2 bis 7 Descriptorformate wie sie bei der vorliegenden Erfindung Verwendung finden;
Figur 8 das Format eines ümsteig-Befehles gemäß der vorliegenden Erfindung;
Figuren 9 und 10 die Descriptor-Basisbildung und das Grenzformat unter einem ersten Gesichtspunkt gemäß der Erfindung;
609817/0931
2646354
Figuren 11, 12 und 13 die Registerbasis- und Grenzbildung unter einem anderen Gesichtspunkt gemäß der Erfindung; Figur 14 eine Registergrenzerweiterung gemäß der vorliegenden Erfindung;
Figuren 15 bis 17 Descriptorformate für Lade- und Schrumpfdescriptoren und
Figur 18 die Bildung einer neuen Descriptorbasis in Übereinstimmung mit der vorliegenden Erfindung.
Wie in der älteren Anmeldung P 25 16 050.3 beschrieben,ist der durch die Systembenutzer betrachtete virtuelle Speicher in eine Vielzahl von großen Speicher-Arbeitsbereichen unterteilt/ in denen die gesamte Information gespeichert ist. Auf einige Arbeitsbereiche kann durch alle Systembenutzer gemeinsam Zugriff genommen werden, während andere Arbeitsbereiche nur für besondere Benutzer vorgesehen sind. Das Operationssystem kann beispielsweise einen Arbeitsbereich belegen, wobei dieser Arbeitsbereich für alle Benutzer zugreifbar ist. Ein Benutzerprogramm und die zugehörigen Daten können in einem anderen Arbeitsbereich gespeichert werden, auf den nur durch den zugeordneten Benutzer Zugriff genommen werden kann, so daß irgendeine Prozedur oder Routine nur durch den zugeordneten Benutzer ausgeführt werden kann. Auf diese Weise wird eine Trennung von Benutzerdaten und Programmen erzielt, wobei durch Begrenzung des BenutzerZugriffs auf wenige für seine Programmausführung erforderliche Arbeitsbereiche die Datensicherheit verbessert wird.
Weiterhin erfolgt die Informationsspeicherung in den verschiedenen Arbeitsbereichen durch die bekannte Seitentechnik. Die Daten werden in Gruppen einheitlicher Größe oder Seiten gespeichert, z. B. 1024 Worte oder 4096 Bytes jeweils, wobei diese Gruppen oder Seiten im verfügbaren Speicherraum des tatsächlichen Speichers gespeichert sind. Die Seitentechnik gestattet eine Speicherabbildung, wodurch die Notwendigkeit für eine periodische Speicherverdichtung eliminiert und die Anforderungen
609817/0 9 31
der Benutzer während der Programraausführung an den Hauptspeicher reduziert werden.
Ferner sind die Programme in logische Elemente, sogenannte Segmente, unterteilt, welche wieder auffindbar in einem Speicher-Arbeitsbereich gespeichert sind, der einem Benutzer zugeordnet ist. Auf diese Segmente wird mittels Descriptoren zurückgegriffen, wenn man Daten und Programmbefehle gewinnen und speichern möchte, wobei durch die Descriptoren ein Arbeitsbereich, ein Startpunkt oder Basis innerhalb des Arbeitsbereiches, eine Segmentgröße oder Grenze und Zugriffsrechte hinsichtlich eines Benutzers des Segmentes bestimmt werden. Die Gesamtzahl der Segmente, auf die durch ein Programm Bezug genommen wird, bilden die"Domäne" des Programmes. Eine Programmdomäne umfaßt nicht nur die permanent mit ihr verbundenen Segmente, sondern auch jene Segmente, welche für das Programm durch andere Programme freigegeben werden, sowie Eingangsstellen in andere Domänen für Aufrufe und Rücksprünge.
Die Segmente identifizierenden Descriptoren werden in speziellen Segmenten gespeichert, wobei diese speziellen Segmente als vom Speicher aufrufbare Verbindungs-, Parameter- und Argumentsegmente bezeichnet werden. Das Verbindungssegment weist Descriptoren auf, welche vor oder während des Ablaufs des Operationssystems errichtet wurden. Die Parametersegmente weisen durch eine Aufrufprozedur geschaffene Descriptoren auf und das Argumentsegment enthält Descriptoren die durch die im Ablauf befindliche Prozedur gebildet werden und auf die aufgerufene Prozedur übertragen werden sollen.
Figur 1 stellt ein funktionelles und symbolisches Blockdiagramm der gespeicherten Prozedur-Segmentdescriptoren im Verbindungssegment 10, Parametersegment 12 und Argumentsegment 14 dar. Um auf diese Segmente Zugriff nehmen zu können, müssen das Verbindungsdescriptorregister 11, das Parameterdescriptorregister 13 und das Argumentdescriptorregister 15 mit den Descriptoren geladen werden, die die Segmente im Speicher bestimmen. Bei der
S09817/0931
25463b4
Ausführung der Routine werden Descriptoren des Verbindungssegmentes 10, des Parametersegmentes 12 oder des Argumentsegmentes 14 in Operandendescriptorregister 18 geladen. Die Descriptoren nehmen Bezug auf Segmente im virtuellen Speicher, wie dies durch die Bezugsziffer 20 angedeutet ist. Tatsächliche Speicherplätze für die Segmente werden sodann durch Seitentabellen im tatsächlichen Speicherraum 22 bestimmt, welche ihrerseits die Speicherplätze im tatsächlichen Speicher 24 kennzeichnen.
Vor einem Aufruf kann eine Prozedur Descriptoren entweder unverändert oder durch eine Schrumpfoperation reduziert in das Argumentsegment überführen. Bei Ausführung des Aufrufbefehls werden alle Descriptorregister, wie durch gestrichelte Linien angedeutet, gesichert im Segment 26 abgelegt, der Inhalt des Verbindungssegmentdescriptorregisters 11 wird aus dem Verbindungs- oder Parametersegment zusammen mit dem Descriptor für das neue Verbindungssegment geladen und die Descriptoren des zu übertragenden Argumentsegmentes 14 bilden die Descriptoren des Parametersegmentes 12 infolge Ladens des Parameterdescriptorregisters 13 aus dem Argumentdescriptorregister 15. In ähnlicher Weise führt die Ausführung eines Rücksprungbefehls zu einer Umkehr dieser Schritte. Die Ausführung eines Aufruf- oder Rücksprungbefehls verursacht folglich eine vollständige Änderung der Domänen, wobei zwei Domänen nur jene Segmente gemeinsam haben, die als Parameter des Aufrufs übertragen worden sind.
Nimmt man gemäß Figur 1 an, daß ein Aufruf erfolgt, so lädt die aufrufende Prozedur die weiterzuleitenden Descriptoren in das Argumentsegment 14, welches durch das Argumentdescriptorregister 15 bezeichnet wird, während alle anderen Register-Inhalte der aufrufenden Prozedur gesichert im Segment 26 gespeichert werden, das durch das Sicherheitsspeicherdescriptorregister 28 bezeichnet wird. Sodann wird die aufrufende Prozedur in der Schwebe
BO98 17/0931
gehalten und die aufgerufene Prozedur geladen. Nach dem Laden der aufgerufenen Routine gelangt der Prozessor in eine völlig neue Domäne mit Ausnahme derjenigen Parameter, welche übertragen wurden und mit Ausnahme der gemeinsam benutzten Descriptoren. Die Descriptoren im Parametersegment 12 werden in den Speicher in ähnlicher Weise übertragen, wie oben in Bezug auf die Verbindungsdescriptorsegmente beschrieben wurde. Bei einem Rücksprung wird die Information von der aufgerufenen Prozedur gespeichert und die zugehörigen Descriptoren werden im Argumentdescriptorregister 15 abgelegt. Die Steuerung kehrt zu der ursprünglich aufrufenden Prozedur zurück.
Im dargestellten Ausführungsbeispiel wirken ein Paar 36-Bit-Wörter als ein Descriptor zur Bestimmung eines Segmentes zusammen, wobei durch diese Worte der Arbeitsbereich die Zugriffsmarkierung, die Grenze oder Größe und die Basisposition innerhalb eines Arbeitsbereiches bestimmt werden. In Übereinstimmung mit der vorliegenden Erfindung wird ein Mechanismus vorgesehen, um die übertragung von einer Prozedur auf eine andere Prozedur zu bewerkstelligen, wobei dieser Mechanismus in der Folge als Umsteig-Befehl (CLIMB) bezeichnet wird. Ein Aufrufbefehl sei in der Folge als Einwärts-Umsteigen (INWARD CLIMB) und ein Rücksprungbefehl als Auswarts-Umsteigen (OUTWARD CLIMB) bezeichnet. Ferner können die ümsteig-Befehle innerhalb oder zwischen den Domänen wirken und die übertragung von keinen Parametern, bestehenden Parametern oder noch zu erstellenden Parametern, wie beispielsweise beim Schrumpfen(erfordern.
Bevor der Umsteig-Mechanismus betrachtet wird, seien die folgenden System-Programmregister und Descriptorformate definiert: Programmregister
Die für das Programm erkennbaren Register des Systems sind nachstehend aufgeführt:
609817/0931
— ο —
Nr. Name Mnemonisch
8 Arbeitsbereichregister WSRn* 9 Bits
1 Sicherheitsspeicher SSR 72 Bits
1 Verbindungssegmentregister LSR 72 Bits
1 ArgumentStapelregister ASR 72 Bits
1 ParameterStapelregister PSR 72 Bits
1 Befehlssegmentregister ISR 72 Bits
8 Operandendescriptorregister DRn* 72 Bits
8 Segmentidentitätsregister SEGIDn* 12 Bits
1 Befehlssegmentidentitäts-
register SEGID (IS) 12 Bits
*n = 0,1 ,7
Die Funktion eines jeden der oben genannten Register und Registersätze wird nachstehend beschrieben. Die Registerformate für alle 72-Bit-Register sind identisch mit dem Descriptorformat des jeweiligen Descriptors, welches das Register in der nachstehend beschriebenen Weise speichert.
Arbeitsbereichregister (WSR)
Diese Gruppe von acht 9-Bit-Registern wird benutzt zur Speicherung der Arbeitsbereich (WS)-Nummer, welche bei der Bildung einer virtuellen Adresse benötigt wird. Auf ein besonderes Arbeitsbereichregister wird durch das W-FeId eines Descriptors Bezug genommen. Dieser enthält einen Befehl zum Laden und einen Befehl zum Speichern der Arbeitsbereichregister. Diese beiden Befehle laden oder speichern alle 8 Arbeitsbereichregister gleichzeitig und machen es erforderlich, daß der Prozessor im privilegierten Hauptbetrieb arbeitet, d. h. daß sich die ablaufende Prozedur innerhalb der eigenen Domäne befindet.
Sicherheitsspeicherregister (SSR)
Dieses 72-Bit-Register wird zur Speicherung eines Standard-Descriptors vom Typ 1 oder 3 benutzt, welcher den Sicherheitsspeicherstapel des laufenden Prozessors beschreibt. Befehle
609817/0931
im privilegierten Hauptbetrieb sind vorgesehen zum Laden und Speichern des Sicherheitsspeicherregisters. Das Sicherheitsspeicherregister wird durch die Prozessor-Hardware bei der Ausführung des Umsteig-Befehls benutzt.
Verbindungssegmentregister (LSR)
Dieses 72-Bit-Register speichert einen Standarddescriptor vom Typ 1 oder 3, welcher das Verbindungssegment des laufenden Prozesses beschreibt. Das Verbindungssegmentregister kann lediglich durch die Ausführung eines Umsteig-Befehls geladen werden. Das Verbindungssegmentregister kann gespeichert werden, wenn der Prozessor im privilegierten Hauptbetrieb arbeitet, in dem der Inhalt zu einem Operandendescriptorregister (DRn) mit dem LDn-Befehl übertragen wird und sodann das Operandendescriptorregister mit dem SDn-Befehl gespeichert wird.
Argumeht-Stapelregister (ASR)
Dieses 72-Bit-Register speichert einen Standarddescriptor vom Typ 1 oder 3, welcher den Argumentstapel des laufenden Prozesses beschreibt oder einrahmt. Es sind Befehle zum Laden im privilegierten Hauptbetrieb und zum Speichern des Argumentstapelregisters vorgesehen. Das Argumentstapelregister kann durch die Hardware während der Ausführung des SDn- oder des Umsteig-Befehls benutzt werden bzw. es kann sein Inhalt durch diese Befehle verändert werden.
Parameter-Stapelregister (PSR)
Dieses 72-Bit-Register speichert einen Standarddescriptor vom Typ 1 oder 3, welcher den laufenden Parameterstapel des Prozessors eingrenzt. Befehle zum Laden im privilegierten Hauptbetrieb und zum Speichern des Parameterstapelregisters sind vorgesehen. Das Parameterstapelregister wird durch die Hardware während der Ausführung des SDn- oder des Umsteig-Befehls benutzt und sein Inhalt kann durch diese Befehle verändert werden.
609817/0931
Befehlsegmentregister (ISR)
Das Befehlsegmentregister besteht aus einem 72-Bit-Register, welches einen Descriptor vom Typ T=O oder 2 speichert, der seinerseits das laufende Befehlssegment beschreibt. Das Befehlsegmentregister kann nicht direkt geladen oder gespeichert werden. Es wird während der Ausführung eines ümsteig-Befehls oder einer übertragung mit eingeschaltetem Bit 29 geladen und kann indirekt durch Verschiebung seines Inhalts in ein Operandendescriptorregister (DRn) und anschließende Speicherung des Registerinhaltes gespeichert werden. Wenn das Bit 29 eines Befehlswortes Null ist, wird das Befehlsegmentregister für die Bildung der Operandenadresse (virtuell) herangezogen.
Operandendescriptorregister (DRn)
Diese acht 72-Bit-Register speichern Operandendescriptoren, welche ihrerseits Operanden-Adressräume im Speicher beschreiben, auf die durch den laufenden Prozeß zugegriffen werden kann. Befehle zum Laden und Speichern der Descriptorregister und zur Modifizierung ihrer Inhalte sind verfügbar. Das Operandendescriptorregister wird bei der Entwicklung einer virtuellen Operandenadresse aufgerufen, wenn das Bit 29 des Befehls gleich eins ist und die Adressbits 0, 1 und 2 das Operandendescriptorregister η (DRn) bestimmen.
Segmentidentitätsregister (SEGIDn)
Dieser Satz von acht 12-Bit-Registern entspricht dem Satz von Operandendescriptorregistern, wobei das Segmentidentitätsregister darauf hinweist, woher die Beschreibung im Operandendescriptorregister kommt. Es existieren Befehle, die ein direktes Laden und Speichern des Segmentidentitätsregisters gestatten.
BO 98 17/09 3 1
Befehlssegmentidentitätsregister JSEGID(ISy
Dieses 12-Bit-Register ist in der gleichen Weise dem Befehlsegmentregister wie das Segmentidentitätsregister dem Operandendescriptorregister zugeordnet. Das Befehlsegmentidentitätsregister kann jedoch nicht direkt geladen oder gespeichert werden. Es wird zusammen mit dem Befehlsegmentregister mit dem gleichen Descriptor geladen.
Descriptorformate
Im folgenden werden Segmentdescriptoren angegeben, welche von dem System erkannt werden. Alle Descriptorformate bestehen aus einem Doppelwortpaar und müssen/ wenn sie sich im Speicher befinden, an einer ungeraden Wortgrenze stehen. Wenn der Prozessor auf einen Descriptor im Speicher Zugriff nimmt, stellt er zunächst sicher, daß der Descriptor an einer Doppelwortgrenze steht. In ähnlicher Weise wird in jenen Fällen, wo die Descriptoren in einem Register gespeichert sind, die Speicherung durch die Prozessor-Hardware innerhalb einer Doppelwortgrenze vorgenommen .
Standarddescriptor (T = 0 oder 1)
Das Format des Standarddescriptors ist in Figur 2 dargestellt.
Grenze - Ein 20 Bit-Feld, welches die maximal gültige Byteadresse innerhalb des Segmentes darstellt, wobei die Bits 0-17 eine Wortadresse und die Bits 18 - 19 die Byteadresse darstellen. Die Grenze ist auf die Basis bezogen.
Markierungen - Das Markierungenfeld beschreibt die Privilegien, die dem Descriptor zugeordnet sind und wie folgt interpretiert werden:
609817/0931
Lesen freigegeben
Lesen gesperrt
Schreiben freigegeben
Schreiben gesperrt
Reserviert für Software
Ausführung freigegeben
Ausführung gesperrt
privilegiert
nicht privilegiert
Grenzfeld ist maximale effektive Adresse
Leersegment; Grenze irrelevant
Segment vorhanden
Segment fehlt; Fehler
W - Ein 3-Bit-Feld, welches definiert, welcher der 8 Arbeitsbereichregister im Zusammenhang mit diesem Descriptor benutzt werden soll.
T - Ein 4-Bit-Feld, welches den Descriptortyp definiert. Es gibt zwei Standarddescriptortypen der folgenden Art:
T=O bedeutet, daß der Descriptor den Speicherplatz einer Operandenadresse einrahmt,
T=I bedeutet, daß der Descriptor einen Adressspeicherraum einrahmt, der seinerseits Descriptoren enthält.
Basis - Eine virtuelle 36-Bit-Byteadresse, welche auf den durch das Arbeitsspeicherregister definierten Arbeitsspeicher bezogen ist, wobei durch das W-FeId auf den Arbeitsspeicher hingewiesen wird. Die Bits 0-33 sind eine 34-Bit-Wortadresse und die Bits 34-35 stellen ein Byte innerhalb des Wortes dar.
6098 17/0931
Standarddescriptor mit Arbeitsbereichnummer (T = 2 oder 3)
Der Standarddescriptor mit Arbeitsbereichnummer (WSN) besitzt das in Figur 3 dargestellte Format. Dieses Format ist das gleiche wie für den Standarddescriptor mit der Ausnahme, daß das Markierungsfeld (F) reduziert worden ist, um dem Descriptor die Aufnahme der tatsächlichen Arbeitsbereichnummer (WSN) anstelle eines Hinweises auf ein Arbeitsspeicherregister zu gestatten. Die drei Markierungsbits entsprechen den Markierungsbits des Standarddescriptors. Der Status der beschnittenen Markierungen sei wie folgt angenommen: (1)Ausführung gesperrt, (2) nicht privilegiert, (3) nicht leer und (4) Segment vorhanden. Die Basis ist auf die Arbeitsbereichnummer bezogen. Es gibt zwei Arten dieses Descriptors.
T = 2 bedeutet, daß der Descriptor den Speicherraum
einer Operandenadresse einrahmt, T = 3 bedeutet, daß der Descriptor einen Adressenraum einrahmt, der seinerseits Descriptoren enthält.
Superdescriptor (T = 4)
Das Format des Superdescriptors ist in Figur 4 dargestellt. Der Superdescriptor gestattet die Zuordnung von virtuellem Adressenspeicherraum innerhalb eines Arbeitsbereiches, welcher der Basis und Grenze modulo 2 Bytes entspricht.
2fi
Basis - Eine 10-Bit modulo 2 virtuelle Byteadresse innerhalb eines Arbeitsbereiches. Die 10-Bit-Basis kann in eine 36-Bit-Bytebasis umgewandelt werden, indem an der rechten Seite 26 Nullbits angefügt werden.
Speicherplatz - Eine 36-Bit-Byteeingangsstelle oder virtuelle Startadresse bezogen auf die Basis, z.B. ein Offset von der
26
modulo 2 Bytebasis.
609817/0931
26
Grenze - Eine 10-Bit modulo 2 virtuelle Byteadresse, welche die maximale effektive Adresse des Segmentes darstellt. Eine Umwandlung in eine 36-Bit-Bytegrenze wird durch Erweiterung des ΙΟ-Bitfeldes auf der rechten Seite durch 26 Einerbits erzielt. Die Grenze ist auf die Basis bezogen.
Die Markierungen sowie die W- und T-Felder sind mit denjenigen hinsichtlich des Standarddescriptors identisch. T = 4 ist die Typnummer hinsichtlich des Superdescriptors.
Superdescriptor mit Arbeitsbereichnummer ( T = 6)
Das Format des Superdescriptors mit Arbeitsbereichnummer (WSN) ist in Figur 5 dargestellt. Die Basis, die Grenze, der Speicherplatz und das T-FeId haben die gleichen Definitionen wie beim Superdescriptor. Die Arbeitsbereichnummer (WSN) entspricht der tatsächlichen Arbeitsbereichnummer, auf die die Basis bezogen ist, wobei die Grenze auf die Basis bezogen ist. Mit F ist das beschnittene Markierungsfeld bezeichnet. Diese drei Bits stimmen mit den entsprechenden drei Bits des Standarddescriptors identisch überein. Der Status des beschnittenen Markierungsfeldes sei wie folgt angenommen: (1) Ausführung gesperrt, (2) nicht privilegiert, (3) nicht leer und (4) Segment vorhanden. T = 6 definiert den Descriptor als "Super mit Arbeitsbereichnummer11.
Eingangsstellendescriptor
Ein Eingangsstellendescriptor wird zum Gebrauch im Zusammenhang mit dem Umsteig-Befehl definiert. Dieser Descriptor kann nicht in ein Descriptorregister geladen werden. Sein Format ist in Figur 6 dargestellt.
Eingangsstellenspeicherplatz - Eine 18-Bit-Wortadresse, welche in den Befehlszähler geladen wird, wenn der Eingangsstellendescriptor als ein Argument des Umsteig-Befehls benutzt wird. Der Eingangsstellenspeicherplatz ist auf die Basis des neuen
09817/0931
_ 15 . 2b46354
Befehlsegmentes bezogen. Das Bit 18 wird nicht interpretiert.
ISEG. Nr. - Diese Nummer kennzeichnet die Descriptornummer, die in das Befehlsegmentregister geladen werden soll. Die ISEG. Nr. wird in Descriptoreinheiten ausgedrückt und ist auf die Verbindungsbasis bezogen. Um diese Nr. in Bytes auszudrücken, muß sie um drei Nullstellen erweitert werden.
W - definiert, auf welches Arbeitsspeicherregister die Verbindungsbasis bezogen ist.
T = 5 definiert einen Eingangsstellendescriptor L Größe - definiert die Größe des Verbindungssegmentes ausgedrückt in Descriptoreinheiten. Um diese Größe in Bytes auszudrücken, muß die L Größe um 3 Einerbits erweitert werden.
Verbindungsbasis - Diese ergibt sich als die virtuelle Startadresse des Verbindungssegmentes relativ zum Arbeitsbereich, der seinerseits durch das Arbeitsbereichsregister definiert wird, auf welches durch das W-FeId hingewiesen wird. Somit muß das zugeordnete Verbindungssegment bei Benutzung eines
26
Eingangsstellendescriptors in den ersten 2 Bytes des Arbeitsbereiches liegen. Die letzten drei Bits der Verbindungsbasis sind als Nullen dargestellt, da das Verbindungssegment an einer Doppelwortgrenze beginnen muß.
Indirekter Eingangsstellendescriptor
Ein indirekter Descriptor wird definiert, welcher nur aufgerufen werden soll, wenn das Argument eines Umsteig-Befehls, der indirekte Descriptor, auf einen Eingangsstellendescriptor verweisen muß. Das Format des indirekten Eingangsstellendescriptors ist in Figur 7 dargestellt. Die Bits 0-19 des geraden Wortes werden nicht interpretiert. Das Markierungsfeld sowie das W- und T-FeId sind mit denjenigen des Standarddescriptors identisch. T = 7 verweist auf den indirekten Eingangsstellendescriptor .
609817/0931
Speicherplatz des Descriptors - Dieser Speicherplatz wird durch die ungerade Wortadresse des Eingangsstellendescriptors gebildet, welcher auf den Arbeitsbereich bezogen ist, der durch das Arbeitsspeicherregister definiert ist, auf welches durch das W-FeId hingewiesen wird.
Umsteig-Befehle
Der Umsteig-Befehl gemäß Figur 8 bildet den Mechanismus zum Übergang der Steuerung von einer Funktion auf eine andere mit einer hohen Software-Sicherheit. Dieser Befehl besitzt vier Variationen und führt die Funktionen des Aufrufs, des Rücksprungs und einer Koroutinenveranlassung innerhalb und zwischen den Befehlsegmenten sowie innerhalb und zwischen den Domänen aus. Der Umsteig-Befehl ist ein Zweiwortbefehl, wobei jedes Wort Bits gemäß Figur 8 aufweist.
Das erste Wort besitzt ein Standard-Befehlswortformat, wobei die Bits 0-17 die Adresse, die Bits 18 - 27 den Operationscode für den Umsteig-Befehl enthalten, das Bit 28 ein Unterbrechungs-Sperrbit darstellt und die Bits 29-35 die Art der Modifikation spezifizieren, der die Adresse zu unterwerfen ist.
Das zweite Wort des Umsteig-Befehls enthält fünf Steuerfelder, wobei das S- und D-Feld gemeinsam als ein einziges Feld benutzt wird. Die Steuerfelder ebenso wie die Anwendung des Umsteig- und Schrumpfbefehls werden weiter unten näher beschrieben.
(1) E-FeId
E = I"
Dies bedeutet, daß entweder P + 1 Parameter oder P + 1 zusätzliche Argumente übertragen werden.
609817/0931
E = O
Dies bedeutet, daß entweder das Parametersegment leer ist und keine Parameter übertragen werden oder daß keine zusätzlichen Argumente übertragen werden.
(2) P-FeId
Im Falle E=I bestimmt dieses Feld entweder die Anzahl der hindurchzulassenden Parameter oder die Anzahl der hindurchzulassenden zusätzlichen Argumente.
(3) R-FeId
Dieses Feld steuert das Ausmaß, in welchem die Kommunikation über die acht Operandendescriptorregister (DRn) stattfindet. Jedes Bit des 8-Bit-Feldes ist einem Operandendescriptorregister zugeordnet: Das Bit 10 des R-Feldes gehört zu dem Operandendescriptorregister 0; Das Bit des R-Feldes zu dem Register 1; ... und das Bit 17 des R-Feldes zu dem Operandendescriptorregister 7. Der Status 0 bzw. 1 des zugeordneten Bits veranlasst eine Beeinflussung des zugeordneten Registers wie folgt:
R-Bit = 0
Durch dieses Bit wird das zugeordnete Descriptorregister in den Status des gesuchten Befehlsegmentdescriptorregisters gesetzt. Weiterhin wird das zugeordnete Descriptorregister beim Rücksprung neu gespeichert.
R-Bit = 1
Dies bedeutet, daß das Descriptorregister unverändert bleibt und für die neue Domäne verfügbar ist. Im Fall der Aufrufversion erfordert diese Prozedur keine Neuspeicherung des Registers beim Rücksprung. Das R-FeId muß durch die Hardware bei der Aufrufversion des Befehls für eine spätere Benutzung bei einer Rückkehrversion sicher gespeichert werden.
S09817/0931
(4) C-FeId
Bit 18 = O bedeutet, daß die effektive Adresse in das Indexregister O (XO) nicht überführt werden soll.
Bit 18 = 1 bedeutet die überführung der effektiven Adresse über XO.
Bit 19 = 1 beinhaltet die Aufbewahrung des Zustandes des den Hauptbetrieb kennzeichnenden Bits des Indikatorregisters.
Bit 19 = 0 verweist auf den Nebenbetrieb.
Bit 20 = 0 beinhaltet die Vorbereitung von Descriptoren Bit 20 = 1 verweist darauf, daß die Descriptoren im
Argumentsegment vorhanden sind. Bit 21 = 0 bedeutet, daß die Vektorliste sofort geschlossen
dem Umsteig-Befehl folgt und der Umsteig-Befehl
mit einer ungeraden Wortgrenze beginnen muß. Bit 21 = 1 bedeutet, daß die Vektorliste von dem im
Operandendescriptorregister Null enthaltenen
Segmentdescriptor getrennt wird.
die Bits 22
und 23 bestimmen, welche von den vier Versionen des
Befehls ausgeführt werden soll und werden wie folgt interpretiert:
00: Einwärtsübertragung - Diese arbeitet als ein
Aufruf, wobei beispielsweise eine Prozedur eine andere Prozedur für eine Aufgabenbearbeitung aufruft und einen Rücksprung in Aussicht stellt.
01: Auswärtsübertragung - Diese bewirkt einen Rücksprung auf die aufrufende Prozedur.
10: Seitliche übertragung - Diese veranlasst die Aufbewahrung des gleichen Parametersegmentes und Argumentsegmentes.
11: Seitliche übertragung - Diese veranlasst die Bildung eines neuen Parametersegmentes und Argumentsegmentes.
609817/0 931
Die Ausdrücke einwärts, auswärts und seitlich beziehen sich auf den Gebrauch der Stapelsegmente. Einwärts bedeutet ein Durchschieben des Sicherheitsspeicherstapels unter Bewahrung des Prozessorzustandes, Eingrenzung eines neuen ParameterSegmentes (PS) und öffnen eines neuen Argumentsegmentes (AS). Auswärts bedeutet ein Abspringen vom Sicherheitsspeicherstapel unter Neuspeicherung des früheren Prozessorzustandes und umkehren des Parametersegmentes und Argumentsegmentes zu seiner vorangegangenen Einstellung. Seitlich bedeutet, daß der Sicherheitsspeicherstapel unverändert bleibt. Durch die erste seitliche Veränderung (10) bleiben die Parameter- und Argumentsegmentregister unverändert, wobei das Argumentsegment sich vergrößern kann, wenn neue Argumente auf den Stapel aufgeschoben werden, während die zweite Variation (11) neue Parametersegmente und Argumentsegmente in der gleichen Weise wie bei der Einwärtsübertragung erzeugt.
(5) S, D-Feld
Durch diese Felder wird angezeigt, wo der bestimmungsgemäße Descriptor herzuholen ist.
Es seien nun die vier Variationen des ümsteig-Befehls, wie er durch die Bits 22 und 23 des C-Feldes festgelegt ist, betrachtet. Eines der mit dem Umsteig-Befehl zu verwirklichenden Ziele besteht darin, daß dieser Befehl erneut startbar sein soll, wenn gewisse Fehler während seiner Ausführung auftreten. Daher werden zahlreiche Überprüfungen vor der Änderung des Systemzustandes durchgeführt.
Einwärts-ümsteigen (Bits 22 und 23 des C-Feldes = 00)
Unter Verwendung des S, D-Feldes soll die Hardware auf das geeignete Segment (S) Zugriff nehmen und einen Descriptor (D) gewinnen, welcher einem der folgenden Typen entsprechen muß:
809817/0931
Indirekter Descriptor (T = 7) Eingangsstellendescriptor (T = 5) Standarddescriptor (T = 0)
Die nächste Maßnahme hängt von der Art des Descriptors ab.
(a) Indirekter Descriptor
Wenn ein indirekter Descriptor das Argument des S, D-Feldes bildet, so benutzt das System den indirekten Descriptor, um den Eingangsstellendescriptor zu gewinnen. Der Descriptor, auf den durch den indirekten Descriptor verwiesen wird, muß ein Eingangsstellendescriptor sein, andernfalls liegt ein Fehler vor. Nachdem der Eingangsstellendescriptor gewonnen ist, fährt der Befehl wie zuvor hinsichtlich eines Eingangsstellendescriptors beschrieben fort.
(b) Eingangsstellendescriptor
Die Tatsache, daß durch das S, D-Feld entweder direkt oder indirekt auf einen Eingangsstellendescriptor.Bezug genommen wurde, definiert ferner den Einwärts-Umsteig-Befehl als eine Interdomänenübertragung.
Unter Benutzung des Eingangsstellendescriptors gewinnt das System den neuen Befehlsegmentdescriptor (ISD) aus dem neuen Verbindungssegment (LS), wie es durch den Eingangsstellendescriptor beschrieben wird. Der gewonnene Befehlsegmentdescriptor (ISD) muß ein Standarddescriptor vom Typ T=O s'ein und die folgenden Markierungsbits 25, 27 und 28 müssen den Wert eins aufweisen. Wenn die Markierungsbits 25 und/oder 27 den Wert Null aufweisen, so soll ein IPR-Fehler erzeugt werden. Besitzt das Markierungsbit 28 den Wert Null, so soll ein Fehler erzeugt werden, der ein fehlendes Segment betrifft. Durch Heranziehung des Eingangsstellenspeicherplatzes des Eingangsstellendescriptors soll die Hardware ebenfalls sicherstellen, daß die diesen ersten Befehl enthaltende Seite vorhanden ist. Ist dies nicht der Fall, so wird ein Fehler erzeugt,, der auf die fehlende Seite hinweist.
609817/0931
(c) Standarddescriptor
Wenn der durch das S, D-Feld gekennzeichnete Descriptor ein Descriptor vom Standardtyp ist, so bewirkt der Einwärts-Umsteig-Befehl eine Übertragung innerhalb der Domäne, was bedeutet, daß das Verbindungssegmentregister nicht verändert wird. Der gewonnene Descriptor wird zum neuen Befehlsegment. Die Markierungsbits 25, 27 und 28 werden überprüft und müssen den Wert eins aufweisen; andernfalls wird ein Fehler erzeugt.
Das System fährt nun mit der Vorbereitung des Parameterstapels wie folgt fort: Zunächst wird das Bit E des zweiten Wortes des Befehles überprüft. Ist E=O, so müssen keine Parameter überführt werden und dieser Teil des Befehles wird ausgelassen. Ist E= 1, so müssen P + 1 Parameter überführt werden und es muß in der unten angegebenen Weise weiter verfahren werden. Sodann wird das Bit 20 des C-Feldes überprüft. Besitzt das Bit 20 den Wert 1, so sind Parameterdescriptoren errichtet worden und befinden sich auf dem Argumentstapel. Später werden die Parameterregister eingestellt, um diese Parameter einzurahmen, aber der vorliegende Zustand muß zunächst gesichert werden. Besitzt das Bit 20 den Wert 0, so müssen keine Parameterdescriptoren errichtet werden.
Vor der Errichtung der Parameter muß eine Prüfung durch die Hardware durchgeführt werden, um sicherzustellen, daß alle Parameter in dem Argumentstapel gespeichert werden können, d. h. daß beispielsweise kein Fehler auf Grund einer fehlenden Seite auftritt.
Nunmehr wird das Bit 21 des C-Feldes überprüft, um festzustellen, wo die Vektorliste zur Errichtung der Parameter abgelegt ist. Weist das Bit 21 den Wert 0 auf, so folgt die Vektorliste diesem Befehl unmittelbar und die Vektoren müssen sich an einer geraden Wortgrenze im Speicher befinden. Besitzt
809817/0931
25A635A
Δ Δ
das Bit 21 den Wert 1, so wird die Vektorliste durch den Descriptor im Hinweisregister 0 abgelegt. Die, Vektoren müssen mit einer geraden Wortgrenze im Speicher beginnen.
Die P + 1 Vektoren werden aus dem Speicherplatz wie er durch das Bit 21 des C-Feldes bestimmt ist, gewonnen. Der Descriptor wird sodann durch das S, D-Feld des Vektors bestimmt. Der auf diese Weise errichtete Descriptor wird in den nächsten verfügbaren Speicherplatz des laufenden Argumentstapels abgelegt. Diese Prozedur wird fortgesetzt, bis alle P + 1 Descriptoren in dem Argumentenstapel abgelegt sind. Ein Fehler kann auftreten, wenn ein Vektor oder Descriptor ungenau spezifiziert ist.
Eine sichere Speicherung des Prozessorzustandes wird in dem Sicherheitsspeicherstapel vorgenommen. Die Basis des Sicherheitsspeicherregisters (SSR) wird erhöht, d. h. um 64 Worte (256 Bytes) verschoben und das Grenzfeld wird um 24 Worte erniedrigt, wobei eine automatische Speicherung der Register durch die Hardware erfolgt. Eine Überprüfung wird hinsichtlich des Grenzfeldes durchgeführt, um festzustellen, ob lediglich ein Sicherheitsspeicherrahmen übrig bleibt und falls dies der Fall ist, wird ein Fehler erzeugt.
Im gesicherten Zustand kann das System nunmehr mit der Veränderung der Register wie folgt weiterfahren: Zunächst wird das Befehlsegmentregister geladen. Ergibt sich hierbei eine übertragung innerhalb einer Domäne, so wird der durch das S, D-Feld ausgewiesene Standarddescriptor des Befehls in dem Befehlsegmentregister abgelegt. Bei einem Wechsel zwischen den Domänen wird der durch den Eingangsstellendescriptor ausgewiesene Descriptor in das Befehlsegmentregister geladen.
609817/0 931
Laden des Befehlszählers (IC) innerhalb einer Domäne - Eine effektive Adresse wird unter Benutzung des Adressfeldes des Befehles und Anwendung der angezeigten AR und/oder Hinweis-Feldmodifikation gebildet. Diese effektive Adresse mit 18 Bit wird im Befehlszähler abgelegt. Zwischen den Domänen erfolgt das Laden des Befehlszählers, indem der Eingangsstellen-Speicherplatz von 18 Bit im Eingangsstellendescriptor in dem Befehlszähler abgelegt wird.
Laden des Verbindungssegmentregisters (LSR) - Innerhalb einer Domäne verändert sich das Verbindungssegment nicht. Zwischen den Domänen wird aus dem Eingangsstellendescriptor ein Standarddescriptor gebildet und in dem Verbindungssegmentregister wie folgt abgelegt: Die Basis entspricht der Verbindungsbasis mit Nullstellen in den 10 bedeutendsten Bitpositionen. Die Größe entspricht der L Größe erweitert mit 3 Einerbits auf der rechten Seite und mit Nullstellen in den 7 bedeutendsten Bitpositionen. W=W, T=I, Markierungsbits 20, 22, 23, 24, 27 und 28 = 1, Markierungsbits 21, 25 und 26 = 0.
Das Argumentstapelregister und das Parameterstapelregister werden wie folgt eingestellt: Bit E=O (kein Durchgang von Parametern), überprüfung des ASR-Leerbits (Markierungsbit 27); wenn das ASR-Markierungsbit 27 = 0 ist, so wird keine Änderung des Argumentstapelregisters vorgenommen, da es schon leer ist und die Basis sich nicht verändert. Wenn das ASR-Markierungsbit 27 = 1 ist, so wird die Argumentstapelregisterbasis gesetzt, um auf die nächste verfügbare Speicherstelle zu verweisen, indem die Argumentstapelregisterbasis durch ASR-Basis + (ASR-Grenze + 1) ersetzt wird, was in Figur 9 dargestellt ist. Sodann wird das ASR-Grenzfeld = 0 modulo 2 Bytes gesetzt, wodurch ein neues Grenzfeld gemäß Figur 10 errichtet wird. Das ASR-Markierungsbit 27 wird auf 0 gesetzt, um anzuzeigen, daß das Segment leer ist. Sodann wird das Leerbit des Parameterstapelregisters überprüft. Wenn das Markierungsbit 27 des
609817/0931
25A6354
Parameterstapelregisters = O ist, so wird keine Änderung des Parameterstapelregisters durchgeführt, da es bereits als leer markiert ist. Ist das Markierungsbit 27 des Parameterstapelreyisters = 1, so werden die Basis und Grenze des Parameterstapelregisters auf die gleichen Werte wie zuvor bei dem Argumentstapelregister gesetzt.
Bit E=I (Durchlaß von Parametern). Unter Benutzung der laufenden Werte der Basis und Grenzfelder des Argumentstapelregisters werden das Argumentstapelregister und das ParameterstapeI-register wie in Figur 11 dargestellt gesetzt. Dabei wird davon ausgegangen, daß bei der Errichtung von Parametern durch die Hardware die Grenze des Argumentstapelregisters um 8 Bytes jedesmal dann erhöht wurde, wenn ein errichteter Descriptor auf den Stapel verschoben wurde.
Bildung einer neuen Basis des Parameterstapelregisters.
Die Bildung der neuen Parameterstapelregisterbasis ist in Figur 12 dargestellt, während die neue ParameterStapelregistergrenze durch Figur 13 veranschaulicht wird. Eine neue Basis und Grenze für das Argumentstapelregister werden identisch in der zuvor beschriebenen Weise für den Fall gebildet, wo das Bit E=O und das ASR-Markierungsbit 27 = 1 ist. Das ASR-Markierungsbit 27 wird auf Null gesetzt, um anzuzeigen, daß das Segment leer ist. Mit dem Wert 1 für das PSR-Markierungsbit wird angezeigt, daß das Segment nicht leer ist.
Selektives Laden der Operandendescriptorregister (DR1s).
Unter Heranziehung des R-Feldes des zweiten Wortes des Befehles werden die folgenden Schritte für jedes Operandendescriptorregister ausgeführt: Bei einem Bit R=I wird nichts hinsichtlich des zugeordneten Operandendescriptorregisters veranlasst. Mit einem Bit R=O wird das zugeordnete Operandendescriptorregister in den Zustand des gesuchten Identitätsregisters (IS) gesetzt. Die den Segmentidentitätsregistern (SEGIDJ zugeordneten Operandendescriptorregister werden gesetzt, um auf das Befehlsegmentregister (ISR) als Quelle zu verweisen.
609817/0931
Selektives Setzen des Indexregisters O (XO). Wenn das Bit 18 des C-Feldes den Wert 1 aufweist und wenn ein Umsteig-Befehl innerhalb einer Domäne vorliegt, wobei ein Eingangsstellendescriptor beteiligt ist, so wird die effektive Adresse für den Befehl erzeugt und in das Indexregister 0 geladen. Wenn das Bit 19 des C-Feldes den Wert 0 aufweist, so wird die Nebenbetriebsweise veranlasst. Die Steuerung geht zu dem Befehl, auf den durch den Befehlszähler IC verwiesen wird.
Auswärts-Umsteig-Befehl (Rücksprung);(Bits 22 und 23 des C-Feldes = 01)
Diese Version des Umsteig-Befehles arbeitet als Rücksprung, veranlasst durch den letzten im Sicherheitsspeicherstapel gespeicherten Rahmen. Das S, D-Feld und das Bit 19 des C-Feldes bleiben unbeachtet. Das R-FeId des Befehls und das alte R-FeId, welches gesichert in dem Sicherheitsspeicherbereich steht, werden einer logischen UND-Verknüpfung unterzogen. Ein resultierendes Bit mit dem Wert 1 bedeutet, daß das zugeordnete Operandendescriptorregister (DR) unverändert bleibt; ein resultierendes Bit mit dem Wert 0 bedeutet, daß das Operandendescriptorregister mit seinem früheren Wert neu gespeichert wird. Die folgenden Register werden mit dem letzten 64 Wort-Sicherheitsspeicherrahmen neu gespeichert: Die Steuereinheit, die Domänendescriptorregister, jene Operandendescriptorregister, welche auf Grund der Kombination der beiden R-Felder zur Neuspeicherung bestimmt sind, Hinweiszeichen und Längen, Adressen und Segmentidentitätsregister.
Das Bit E legt fest, ob Descriptoren über das Argumentsegment zu der aufrufenden Prozedur zurückgeführt werden sollen. Ist das Bit E=O, so werden keine Descriptoren zurückgeführt. Ist dagegen das Bit E= 1, so werden P + 1 Descriptoren zurückgeführt. Wenn das Bit E=I ist, so bestimmt das Bit 20 des C-Feldes entweder, daß das System die Descriptoren vorzubereiten
609817/09 31
hat oder daß die Descriptoren in dem Argumentsegment stehen. Wenn die Systemh&rdware die Dejcriptoren (Bit 2O = 0) vorzubereiten hat, so legt das Bit 21 des C-Feldes den Speicherort der Vektorliste fest. Die Prozessorhardware erhält die Vektoren t erarbeitet die Descriptoren und verschiebt sie auf das Argumentsegment, wie dies im Zusammenhang mit dem Einwärts-Umsteig-Befehl beschrieben wurde. Die Hardware stellt nunmehr das Grenzfeld des Argumentstapelregisters ein, damit es die P + 1 Descriptoren in dem Argumentstapel umfasst. Dies setzt voraus, daß das Grenzfeld des Argumentstapelregisters bereits mit dem Wert des Sicherheitsspeichers zurückgespeichert wurde. Befinden sich die Descriptoren bereits in dem Argumentstapel ( Bit 20 des C-Feldes = 1), so besteht die Aufgabe der Hardware einzig und allein darin, das Grenzfeld des Argumentstapelregisters einzustellen, d. h. zu erweitern, damit es alle P + 1 Descriptoren innerhalb des Rahmens umfasst. Dies ist in Figur 14 dargestellt. Auf diese Weise hat die mittels eines Einwärts-Umsteig-Befehls zurückgesprungene Prozedur die Parameter und Argumente zur Verfügung, welche vor dem Aufruf (Auswärts-ümsteig-Befehl) verfügbar waren und zusätzlich jene Argumente, welche durch die aufgerufene Prozedur zurückgeführt wurden.
Wenn das Bit E den Wert 0 aufweist, so werden keine Descriptoren übertragen. Das Argumentstapelregister wird mit seinem früheren Zustand aus dem Sicherheitsspeicherrahmen neu gespeichert und hinsichtlich des Grenzfeldes erfolgt keine Änderung. Wenn das Bit 18 des C-Feldes den Wert 1 aufweist, so wird die effektive Adresse für den Befehl erzeugt und in das Indexregister 0 geladen. Das Sicherheitsspeichersegmentregister wird um 64 Worte erniedrigt. Die Steuerung geht zu dem Befehl, auf den durch den Befehlszähler verwiesen wird. Bei der Neuspeicherung des Indikatorregisters, welches einen Teil der Information der Steuereinheit in dem Sicherheitsspeicherrahmen bildet, wird das den Hauptbetrieb bestimmende Bit eingeschaltet.
609817/0931
Seitliche Übertragung (mit gleichen Parametern und gleichen bzw. zusätzlichen Argumenten)
Bei dieser Version des Umsteig-Befehles bleibt der Sicherheitsspeicherstapel und die Parameterstapelregister unverändert. Dadurch wird der gegenwärtige Prozessorzustand nicht gesichert und das Parametersegment, welches durch das Parameterstapelregister eingerahmt ist, ist für die Prozedur verfügbar, auf welche übergegangen wurde. Die Basis des Argumentstapelregisters bleibt unverändert. Es können jedoch zusätzliche Descriptoren durch die Hardware im Stapel abgelegt werden und die Grenzen verändert werden. Auf diese Weise sind alle vorliegenden, durch das ArgumentStapelregister eingerahmten Descriptoren für die angewählte Prozedur verfügbar und es sind weiterhin irgendwelche Descriptoren verfügbar, die dem Argumentstapel während der Ausführung der übertragung hinzugefügt wurden.
Das Bit E des Befehls legt durch seinen Zustand fest, ob die Hardware zusätzliche Descriptoren vorbereiten und auf dem Argumentstapel ablegen soll. Bei einem Bit E=O werden keine zusätzlichen Descriptoren dem Segment hinzugefügt. Bei einem Bit E=I soll die Hardware P + 1 Descriptoren erstellen und auf den Argumentstapel in der gleichen Weise verschieben, wie dies im Zusammenhang mit dem Einwärts-Umsteig-Befehl beschrieben wurde. Das Grenzfeld des Argumentstapelregisters wird sodann so eingestellt, daß es diese Descriptoren innerhalb des Rahmens umfasst, wobei dies in der gleichen Weise geschieht, wie dies im Zusammenhang mit der Rücksprungversion beschrieben wurde. Das Bit 20 des C-Feldes hat in diesem Fall keine Bedeutung und wird vernachlässigt.
Diese Übertragung kann zwischen oder innerhalb einer ausgewählten Domäne stattfinden, wobei die Domäne wie bereits beim
609817/0931
Einwärts-Umsteig-Befehl durch den durch das S, D-Feld ausgewiesenen Descriptor bestimmt wird. Mit Ausnahme der festgestellten Unterschiede arbeitet diese Version genau wie dies im Zusammenhang mit dem Einwärts-Umsteig-Befehl beschrieben wurde. Es sei festgestellt, daß für den Fall eines nicht gesicherten Prozessorzustandes eine diese Version des Umsteig-Befehles ausführende Prozedur nicht über einen Auswärts-Umsteig-Befehl zurückgeführt werden kann (Rücksprung).
Seitliche übertragung (mit bzw. ohne Parameter)
Mit der einzigen Ausnahme, daß in diesem Fall der Prozessorzustand im Sicherheitsspeicherstapel nicht gesichert wird, arbeitet diese Version in identischer Übereinstimmung mit dem Einwärts-ümsteig-Befehl.
Laden des Descriptors und Schrumpfen.
Die Befehle zum Laden des Descriptors ergeben die Möglichkeit, ein spezielles Descriptorregister (DRn) mit einem neuen Descriptor zu laden oder den gerade im Descriptorregister enthaltenen Descriptor zu modifizieren. Die Festlegung, welche Tätigkeit durch den Befehl hinsichtlich des Descriptorregisters auszuführen ist, wird durch einen Operandenvektor im Speicher getroffen, der aus einem oder zwei Doppelwortpaaren besteht. Der Vektor ist im Speicher verfügbar und hat die in Figur 15 dargestellte Form. Der Vektor kann aus zwei oder vier Worten bestehen, was durch das Bit 29 des ersten Wortes festgelegt ist. Ist das Bit 29 = 0, so besteht der Vektor aus den ersten beiden Worten; ist das Bit 29 = 1, so besteht der Vektor aus vier Worten. Die schraffierten Teile der Worte werden von der Hardware nicht berücksichtigt und können irgendein Bitmuster enthalten. Das unbenutzte vierte Wort des Vektors dient der Aufrechterhaltung der Übereinstimmung mit den geraden/ungeraden Wortgrenzen.
609817/0931
Das Markierungsbit 28 des Vektors hat eine spezielle Bedeutung und wird wie folgt interpretiert: Mark.ierungsbit 28 - 0 (schrumpfen) - es wird der ausgewählte Descriptor in das Descriptorregister übertragen und es wird der Descriptor in der angegebenen Weise geschrumpft. Markierungsbit 28 = 1 (kopieren) - es wird der ausgewählte Descriptor in das Descriptorregister übertragen und es werden die Größe, der Basisaddierer und andere Markierungsfelder vernachlässigt. Das Argumentregister (ARn) wird auf 0 gesetzt und das Segmentidentitätsregister (SEGIDn) wird so eingestellt, daß es die Herkunft des Descriptors anzeigt. Die Einzelheiten hinsichtlich der Ausführung der o.g. Maßnahmen werden nachstehend erörtert.
1) Markierungsbit 28 = 1
Die S, D-Felder des Vektors kennzeichnen den Speicherort des in das Descriptorregister zu ladenden Descriptors. Die Interpretation der S, D-Felder geschieht wie folgt:
S=O- Das D-Feld bestimmt den Speicherort des in das Descriptorregister zu ladenden Descriptors wie folgt:
Für D = 176Og - 1777g wird der Inhalt des ausgewählten Registers in das Descriptorregister DRn übertragen.
D = 176O8 - 1762g nicht definiert, IPR Fehler = 1763O Befehlsegmentregister (ISR)
= 1764g* Sicherheitsspeicherregister (SSR)
= 1765g£ Verbindungssegmentregister (LSR)
= 1766Q^ Argumentstapelregister (ASR)
= 1767gjf. Parameterstapelregister (PSR)
= 177Og DRO, Operandendescriptorregister
= 177I8 DRl
= 1772g DR2
= 1773g DR3
= 1774g DR4
= 17758 DR5
= 1776g DR6
= 17778 DR7
603817/0931
Für D = 0000g - 1757g muß der Descriptor aus dem Parametersegment geladen werden und es wird D als sin Hinweis auf den gesuchten Descriptor verwendet. Der Wert des D-Feldes gibt die Adresse des zu ladenden Descriptors an und kann als ein modulo 8 Index behandelt werden. Dies bedeutet, daß der Inhalt des D-Feldes in eine Byteadresse umgewandelt werden kann, indem 3 Nullstellen an den 3 niedrigrangigsten Bitstellen hinzugefügt werden. Das D-Feld wird hinsichtlich seiner Größe durch das Grenzfeld des Parametersegmentregisters überprüft. Wenn D )>. Grenze ist, so wird ein Speicherfehler (STR) erzeugt. Wenn D ^ Grenze ist, so wird D zu der Basis des Parametersegmentregisters hinzuaddiert und der adressierte Descriptor wird in das Operandendescriptorregister DRn geladen.
Wenn S=O und D = 1764g - 1767„, so muß der Prozessor im privilegierten Hauptbetrieb arbeiten; andernfalls soll ein Steuerfehler auftreten.
S=I- Das D-Feld wird gemäß Figur 10 in zwei Unterfelder unterteilt. DO wird herangezogen, um einen der ersten 16 Descriptoren aus dem laufenden Verbindungssegment auszuwählen. Der ausgewählte Descriptor begrenzt ein untergeordnetes Descriptorsegment, welches den gesuchten Descriptor enthält. DO wird in eine relative Byteadresse umgewandelt, indem 3 Nullstellen in den niedrigrangigsten Bitstellen angefügt werden. Dieser Wert wird herangezogen, um eine Größenüberprüfung durch das Grenzfeld des Verbindungssegmentregisters durchzuführen. Ist DO größer als das Grenzfeld in dem Verbindungssegmentregister, so wird ein Speicherfehler STR erzeugt und die Ausführung des Befehles beendet. Andernfalls wird DO modulo 8 zu der in dem Verbindungssegmentregister enthaltenen Basisadresse hinzugefügt und es wird der 72-Bit-Descriptor aus dem Speicher gewonnen. Eine überprüfung des
609 8 17/0 9 31
Descriptortypes wird durchgeführt, denn dieser muß ein Standarddescriptor mit einem T-FeId von 1 oder 3 sein.
Durch Dl wird festgelegt, welcher der bis zu 74 durch den zuvor erhaltenen Descriptor eingerahmten Descriptoren geladen werden soll. Dl wird in eine effektive Byteadresse durch Erweiterung mit 3 Nullstellen umgewandelt. Dl wird ferner mit dem Grenzfeld überprüft und zu der Basis hinzuaddiert. Wenn Dl >*· Grenzfeld ist, so wird ein Speicherfehler STR erzeugt. Anderenfalls wird der adressierte Descriptor gewonnen und auf seinen Typ überprüft. Wenn T=I oder 3 ist und der Prozessor nicht im privilegierten Hauptbetrieb arbeitet, wird ein Steuerfehler erzeugt. Bei allen anderen Werten für T wird der Descriptor in das Operandendescriptorregister DRn geladen.
S = 2 - Der Descriptor mit dem Rang D wird aus dem vorliegenden Argumentsegment ausgewählt. Wie zuvor beschriebe^wird ein relativer Byte-Offset durch Erweiterung des D-Feldes mit 3 Nullstellen gebildet. Dieser Wert wird auf seine Größe mit dem Grenzfeld des Argumentstapelregisters ASR überprüft. Wenn D >· Grenze ist, wird ein Speicherfehler STR erzeugt. Wenn D ^ Grenze ist, so wird der adressierte Descriptor gewonnen und auf seinen Typ überprüft. Wenn T = 1 oder 3 ist und der Prozessor sich nicht im privilegierten Hauptbetrieb befindet, wird ein Steuerfehler erzeugt. Anderenfalls wird der Descriptor in das Operandendescriptorregister DRn geladen.
S = 3 - Der Descriptor mit dem Rang D des laufenden Verbindungssegmentes wird ausgewählt. Die Operation ist ähnlich derjenigen, wie sie für S = 2 beschrieben wurde, mit der Ausnahme, daß das Verbindungssegmentregister LSR benutzt wird. Ein relativer Byte-Offset wird durch die Erweiterung von D um 3 Nullstellen gebildet. Eine Größenüberprüfung wird mit dem Grenzfeld des Verbindungssegmentregisters LSR durchgeführt. Wenn D größer als
609817/0931
das Grenzfeld des Verbindungssegmentregisters ist, so wird ein Speicherfehler STR erzeugt, anderenfalls wird das erweiterte D-Feld zu der Basis des Verbindungssegmentregisters addiert und der Descriptor wird gewonnen und auf seinen Typ hin überprüft. Wenn T=I oder 3 ist und der Prozessor nicht im privilegierten Hauptbetrieb arbeitet, so wird ein Steuerfehler erzeugt. Für alle anderen Werte von T wird der Descriptor in das Operandendescriptorregister DRn geladen.
In allen vorstehenden Fällen wird bei der Ladung des Operandendescriptorregisters DRn ebenfalls das Adressregister (ARn) und das Segmentidentitätsregister (SEGIDn) an der Stelle η wie folgt beeinflußt:
0 ... 0-^ARn Bits 0-23
Wenn das Operandendescriptorregister DRn von einem anderen Operandendescriptorregister DR oder dem Befehlsegmentregister ISR geladen wurde, so wird der Inhalt des zugeordneten Segmentidentitätsregisters SEGID zu dem Segmentidentitätsregister SEGIDn an der Stelle η übertragen. Anderenfalls wird der Inhalt des Segmentidentitätsregisters SEGIDn an der Stelle η auf den in dem Vektor enthaltenen Wert des S, D-Feldes gesetzt. Wenn ein IPR- oder ein STR-Fehler auftritt, werden die Register DRn, ARn und SEGIDn nicht verändert.
2) Markierungsbit 28 =0
Wenn das Markierungsbit 28 den Wert 0 aufweist, so wird das Operandendescriptorregister DRn zunächst in der Weise geladen, wie dies oben für das Markierungsbit 28 = 1 beschrieben wurde und anschließend wird die Schrumpfoperation ausgeführt. Damit die Schrumpfoperation stattfinden kann, muß der durch das S, D-Feld ausgewiesene Descriptor ein Standard- oder Superdescriptor sein. Wenn D=I oder 3 ist, muß der Prozessor im privilegierten Hauptbetrieb arbeiten. Wenn T = 15 ist, soll ein
609817/0931
dynamischer Verbindungsfehler auftreten. Werte von 5 oder 7-14 für T sollen zu einem IPR-Fehler führen. Die Schrumpfoperation für Standard und Superdescriptoren wird nachstehend einzeln erläutert.
Standarddescriptor
Die exakte Schrittfolge bei der Schrumpfoperation ist davon abhängig, ob der Vektor aus zwei oder vier Worten besteht. Diese beiden Fälle werden getrennt behandelt.
1) Zweiwortvektor - Der Basisaddierer und das Größenfeld des Vektors sind auf die Basis und Grenzfelder des Operandendescriptorregisters DRn bezogen. Diese Werte müssen zuerst hinsichtlich ihrer Gültigkeit überprüft werden, indem festgestellt wird, ob Basisaddierer + Größe ^L Grenze ist. Ein Speicherfehler STR soll auftreten, wenn die Summe des Basisaddierers und der Größe die Grenze übertrifft oder wenn ein Übertrag erzeugt wird beim Kombinieren des Basisaddierers und des Größenfeldes. Für eine erfolgreiche überprüfung wird die neue Basis durch addieren des Basisaddiererwertes zu der Basis gebildet, wobei die Erzeugung eines Übertrages zu einem Speicherfehler STR führen soll. Das Größenfeld des Vektors und die neue Basis werden in die entsprechenden Grenz- und Basisfelder des Operandendescriptorregisters DRn geladen.
2} Vierwortvektor - Ein Vierwortvektor benutzt ein Indexfeld (SCPT) bei der Bildung der neuen Basis und der Grenzfelder des geschrumpften Descriptors. Zunächst wird die folgende Gültigkeitsprüfung durchgeführt.
(Basisaddierer + SCPT) + Größe - SCPT) ^ Grenze A k i
1^ Entnahme führt zu Speicherfehler STR
. Übertrag führt zu Speicherfehler STR
'-übertrag wird unterdrückt; dies bedeutet, daß der Wert des Basisaddierers einen negativen Wert darstellen kann
609817/0931
Nachdem die Gültigkeitsprüfung durchgeführt ist, werden die neue Basis und die Grenzen für den Descriptor in der folgenden Weise gebildet:
Neue Basis = Basis + (Basisaddierer + SCPT)
- Übertrag nicht beachtet
Ein Übertrag soll zu einem Speicherfehler STR führen
Neue Grenze = Größe - SCPT
Eine Entnahme führt zu einem Speicherfehler STR
Die Werte für die neue Basis und Grenze werden in das Operandendescriptorregister DRn geladen.
Die IndiZierungsfunktion führt zu einem wirksamen Softwareverfahren zur Erzeugung von Descriptoren für Indizierte Feldreferenzen.
Das Markierungsfeld des Vektors zeigt die zu gewährende bzw. die zu verweigernde Zustimmung an und es soll mit dem laufend im Operandendescriptorregister DRn enthaltenen Markierungsfeld in einer solchen Weise kombiniert werden, daß nicht mehr Zustimmung übertragen wird, als verfügbar ist. Zu diesem Zweck werden beispielsweise die beiden Markierungsfelder Bit für Bit einer logischen UND-Verknüpfung unterzogen. Ein Fehler soll dann nicht auftreten, wenn mehr Zustimmung angefordert wird, als verfügbar ist. Das Ergebnis der Kombination der beiden Markierungsfelder wird in das Markierungsfeld des Operandendescriptorregisters DRn geladen. Das entsprechende Argumentregister ARn wird auf Null gesetzt. Das Segmentidentitätsregister SEGIDn wird auf Selbst-Identifizierung eingestellt. Es sei beispielsweise angenommen, daß gerade auf das Operandendescriptorregister DR3 Bezug genommen wird. In diesem Fall wird das Segmentidentitätsregister SEGID3 in der in Figur 17 dargestellten Weise
6 0 9 8 17/0931
gesetzt, wodurch angezeigt wird, daß der gerade im Operandendescriptorregister DR3 enthaltene Descriptor von DR3 kommt. Wenn während der Ausführung des ersten Teiles des Befehles ein Fehler auftritt, so sollen die Register ARn und SEGIDn nicht verändert werden.
Superdescriptor
Wenn hinsichtlich eines Superdescriptors eine Schrumpfoperation ausgeführt wird, so führt dies zu einem Standarddescriptor. Ein Superdescriptor vom Typ T = 4 führt zur Bildung eines Standarddescriptors vom Typ T=O. Ein Superdescriptor vom Typ T = 6 ergibt einen Standarddescriptor vom Typ T = Die Schrumpfoperation wird nachstehend anhand eines Zwei- und Vierwortvektors erläutert.
1) Zweiwortvektor - Zunächst wird eine Grenzüberprüfung ausgeführt, wie dies durch die nachstehende Gleichung veranschaulicht wird:
Speicherplatz + (Basisaddierer + Größe) ^ Grenze
Einem Übertrag wird die Fortpflanzung gestattet
L Ein Übertrag soll zu einem Speicherfehler STR führen
Für eine erfolgreiche Grenzüberprüfung wird die Ausführung des Befehls fortgesetzt. Der Basiswert für den geschaffenen Standarddescriptor wird von der Basis-, dem Speicherfeld des Operandendescriptorregisters DRn und dem Basisaddiererfeld des Vektors gemäß Figur 18 gebildet.
Die Addition und Behandlung der Überträge gemäß Figur 18 wird durch die folgende Gleichung veranschaulicht:
609817/0931
Neue Basis = Basis + (Speicherplatz + Basisaddierer)
<— Ein übertrag soll zu einem Speicherfehler STR führen
L Ein übertrag soll zu einem Speicherfehler STR führen
Diese neue Basis und das Größenfeld des Vektors v/erden in das Basis- und Grenzfeld des Operandendescriptorregisters DRn geladen.
2) Vierwortvektor - Das Indexfeld SCPT wird in einer ähnlichen Weise wie dies hinsichtlich des Standarddescriptors beschrieben wurde, benutzt. Die folgenden drei Gleichungen erläutern die Reihenfolge der Kombination sowie die Behandlung des Übertrags und der Entnahme.
Grenzüberprüfung
Speicherplatz + (Basisaddierer + SCPT) + (Größe - SCPT)^ Grenze
f t t t
I u Entnahme
führt zu Speicherfehler STR
übertrag pflanzt sich zum Speicherplatzfeld fort
*- übertrag wird nicht beachtet übertrag führt zu einem Speicherfehler STR
Neue Basisbildung
Basis + (Speicherplatz + (Basisaddierer + SCPT))
·- übertrag wird nicht beachtet
-übertrag führt zu Speicherfehler STR - übertrag führt zu Speicherfehler STR 609817/0931
Neue Grenzbildung
Größe - SCPT
Entnahme führt zu Speicherfehler STR
- ü
Die neu gebildete Basis und Grenze werden in die entsprechenden Felder des Operandendescriptorregisters DRn geladen. Das Markierungsfeld des Vektors wird mit dem Markierungsfeld des Operandendescriptorregisters DRn kombiniert, wie dies zuvor anhand des Standarddescriptors erläutert wurde. Das T-FeId des Operandendescriptorregisters DRn wird wie folgt gesetzt: 1. Wenn T = 4, dann 0 —♦· T; 2. Wenn T = 6, dann 2 —*-T. Das zugehörige Argumentregister ARn wird auf Null gesetzt. Das Segmentidentitätsregister SEGIDn wird auf Selbst-Identifizierung eingestellt und der Befehl wird zu Ende geführt.
Modifikationen: Alle mit Ausnahme von CI, SC, SCR, DU, DL. Beeinflußte Indikatoren: Keine
Illegale Wiederholungen: RPT, RPD, RPL.
Illegale Prozedurfehler sollen in den folgenden Fällen auftreten:
Die oben aufgeführten Modifikationen, die oben aufgeführten Wiederholungen S = O, D = 176O8 - 1762g,
S=I und der aus dem Verbindungssegment über den Index DO erhaltene Descriptor ist nicht vom Typ T=I, 3 oder 15 (falls T = 15, so wird der dynamische Verbindungsfehler erzeugt; falls T=I oder 3, so wird die Bearbeitung des Befehls fortgeführt).
Weiterhin soll ein illegaler Prozedurfehler auftreten, wenn der von dem Argument-, Parameter- oder Verbindungssegment erhaltene Descriptor oder der Descriptor, auf den durch den durch den Index
609817/09 31
Dl im Falle S=I hingewiesen wird vom Typ T = 8 - 14 oder vom Typ T = 5 oder 7 ist und das Bit 28 des Vektors gleich O ist.
Ein Befehlsfehler soll auftreten in folgenden Fällen:
Wenn S=O und D = 1764g - !767g ist und der Prozessor nicht im privilegierten Hauptbetrieb arbeitet.
Wenn der zum Laden in das Operandendescriptorregister DRn gewonnene Descriptor vom Typ T=I oder 3 ist und der Prozessor nicht im privilegierten Hauptbetrieb arbeitet.
Ein Speicherfehler (STR) soll in folgenden Fällen auftreten:
bei S=O und D >- Grenze des Parameterstapelregisters
(PSR)
bei S=I und DO >· Grenze des Verbindungssegmentregisters
(LSR)
bei S=I und Dl ■>> Grenzfeld des von dem Verbindungssegment unter Benutzung von DO gewonnenen Descriptors bei S = 2 und D ^ Grenzfeld des Argumentstapelregisters
(ASR)
bei S = 3 und D >. Grenzfeld des Verbindungssegmentregisters (LSR)
bei einer Schrumpfoperation hinsichtlich des Standarddescriptors und bei Basisaddierer + Größe (V) >- Grenze (DRn)
Schrumpfoperation hinsichtlich eines Superdescriptors und bei Speicherplatz (DRn) + Basisaddierer (V) + Größe (V) > Grenze (DRn)
Beim Auftritt eines illegalen Übertrags oder einer illegalen Entnahme während der Bildung oder der Größenüberprüfung der Basis und Grenzen.
8 0 9 8 17/0931
Ein dynamischer Verbindungsfehler soll jedesmal auftreten, wenn auf einen Descriptor vom Typ T = 15 Bezug genommen wird,
609817/0931

Claims (8)

  1. Patentansprüche
    Mehrprogramm-DV-System mit einem in eine Vielzahl von Arbeitsbereichen unterteilten Speicher, wobei Benutztem jeweils bestimmte Arbeitsbereiche zuordenbar sind, dadurch gekennzeichnet, daß Benutzerprogramme in Programmsegmente unterteilt und Dateien in durch Descriptoren bestimmten Speicherplätzen gespeichert sind, wobei die Descriptoren Basis- und Grenzbezeichnungen aufweisen, daß mehrere Register zum Speichern und Bearbeiten der Descriptoren während der Programmausftihrung vorgesehen sind und daß der Wechsel von einer ersten auf eine ζ weite Prozedur folgende Schritte umfaßt:
    Die Feststellung von Zugriffsrechten zu Operandendescriptorregistern,
    die sichere Abspeicherung von Descriptoren, auf die von der aufgerufenen Routine nicht zugegriffen werden kann, die Ablegung einer durch die aufgerufene Prozedur angeforderten Vektorliste,
    das Laden eines Befehlsegmentregisters mit Adressen von Befehlen für diese Prozedur,
    das Laden eines Befehlszählers mit der Nummer des nächsten auszuführenden Befehls,
    das Laden eines Parameter-Stapelregisters, wenn die Parameter hindurchgelassen werden sollen und das Einstellen des Parameter-Stapelregisters und eines \ Argument-Stapelregisters, um den Durchgang von Parametern zu berücksichtigen.
  2. 2. DV-System nach Anspruch 1, dadurch gekennzeichnet, daß bei fehlendem Parameterdurchgang das Argumentsegmentregister und das Parametersegmentregister den Leerzustand anzeigen.
    809817/0 9 31
  3. 3. DV-System nach Anspruch 1, dadurch gekennzeichnet , daß bei durchgehenden Parametern dnrch das Parametersegmentregister eine Basis erzeugt wird, die der laufenden Argumentsegmentregisterbasis plus der laufenden Argumentsegmentregistergrenze minus der Länge der durchgehenden Paramter gleich ist.
  4. 4. DV-System nach Anspruch 1, gekennzeichnet durch einen Rücksprung zur Ausführung der ersten Prozedur auf Grund der zweiten durch die erste Prozedur verursachten Prozedur, indem sicherheitsgespeicherte Descriptoren in Registern neu gespeichert werden und im Argumentsegment des Speichers abgelegte Descriptoren zurückgeholt werden.
  5. 5. DV-System nach Anspruch 4, dadurch gekennzeichnet , daß die Grenze des Argumentsegmentregisters erweitert wird, so daß es die Speicherplätze der in das Argumentsegment geladenen, zurückgeholten Descriptoren umfaßt.
  6. 6. DV-System nach Anspruch 1, dadurch gekennzeichnet , daß bei der Errichtung von Zugriffsrechten zu den Operandendescriptorregistern ein Parameterregister mit einem Descriptor geladen wird, der die Basis und Grenze des die hindurchgehende Information aufweisenden Speicherplatzes enthält, daß die Basis und Grenze so eingestellt wird, wie es zur Bestimmung des nur die hindurchzulassende Information enthaltenden Speicherplatzes erforderlich ist und daß dieser die eingestellte Basis und Grenze aufweisende Descriptor in ein für die zweite Prozedur zugreifbares Register übertragen wird.
    809817/0931
  7. 7. DV-System nach Anspruch 6, dadurch gekennzeichnet , daß die eingestellte Basis und Größe des übertragenen Descriptors anhand der Grenze des in das Parameterregister geladenen Descriptors geprüft und ein Fehler notiert wird, wenn die Grenze überschritten wird.
  8. 8. DV-System nach Anspruch 6, dadurch gekennzeichnet , daß die ursprüngliche Basis und Grenze des Descriptors beim Rücksprung von der zweiten Prozedur zu der ersten Prozedur neu gespeichert wird.
    609817/0931
DE19752546354 1974-10-21 1975-10-16 Mehrprogramm-dv-system Withdrawn DE2546354A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US51655874A 1974-10-21 1974-10-21
US51655974A 1974-10-21 1974-10-21

Publications (1)

Publication Number Publication Date
DE2546354A1 true DE2546354A1 (de) 1976-04-22

Family

ID=27058889

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19752546354 Withdrawn DE2546354A1 (de) 1974-10-21 1975-10-16 Mehrprogramm-dv-system

Country Status (5)

Country Link
JP (1) JPS6042495B2 (de)
AU (1) AU506710B2 (de)
DE (1) DE2546354A1 (de)
FR (1) FR2289005A1 (de)
GB (1) GB1532251A (de)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE2737353A1 (de) * 1976-08-20 1978-02-23 Honeywell Inf Systems Verfahren zum testen der adressbildung in einem dv-system und vorrichtung zur durchfuehrung des verfahrens
EP0007003A1 (de) * 1978-07-17 1980-01-23 International Business Machines Corporation Eine Einrichtung zur Adressenübersetzung enthaltendes Datenverarbeitungssystem

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4041462A (en) * 1976-04-30 1977-08-09 International Business Machines Corporation Data processing system featuring subroutine linkage operations using hardware controlled stacks
US4366537A (en) * 1980-05-23 1982-12-28 International Business Machines Corp. Authorization mechanism for transfer of program control or data between different address spaces having different storage protect keys
US4454580A (en) * 1981-09-16 1984-06-12 International Business Machines Corporation Program call method and call instruction execution apparatus

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS447524Y1 (de) * 1965-10-23 1969-03-22
JPS4511372Y1 (de) * 1967-05-24 1970-05-21
JPS528337Y2 (de) * 1973-05-18 1977-02-22
GB1498116A (en) * 1974-04-18 1978-01-18 Honeywell Inf Systems Data processing systems

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE2737353A1 (de) * 1976-08-20 1978-02-23 Honeywell Inf Systems Verfahren zum testen der adressbildung in einem dv-system und vorrichtung zur durchfuehrung des verfahrens
EP0007003A1 (de) * 1978-07-17 1980-01-23 International Business Machines Corporation Eine Einrichtung zur Adressenübersetzung enthaltendes Datenverarbeitungssystem

Also Published As

Publication number Publication date
FR2289005B1 (de) 1980-02-15
AU506710B2 (en) 1980-01-24
JPS6042495B2 (ja) 1985-09-24
FR2289005A1 (fr) 1976-05-21
GB1532251A (en) 1978-11-15
JPS5165534A (de) 1976-06-07
AU8566175A (en) 1977-04-21

Similar Documents

Publication Publication Date Title
DE2431379C3 (de) Datenverarbeitungseinrichtung
DE2458065C2 (de) Datenverarbeitungsanlage
DE2645537C2 (de)
DE2350884C2 (de) Adreßumsetzungseinheit
DE2459006C2 (de) Einrichtung zum Bilden einer absoluten Adresse in einer Datenverarbeitunsanlage
DE2716051C2 (de) Datenverarbeitungsanlage mit einem oder mehreren Prozessoren mit mindestem einem Ein-/Ausgabekanal mit mehreren Unterkanälen und mit einer Speicheranordnung, bei der zum Speicherzugriff Schlüssel verwendet werden
DE69730276T2 (de) Vorrichtung und Verfahren zur Erleichterung der Vermeidung von exzeptionellen bestimmten Zuständen während des Ablaufs eines Programmes
DE2423194C2 (de) Vorrichtung zum Berechnen einer absoluten Hauptspeicheradresse in einer Datenverarbeitungsanlage
DE69918334T2 (de) Erzeugung von kompilierten programmen für interpretative laufzeitumgebungen
DE2417795C2 (de) Datenverarbeitungsanlage
DE2540975A1 (de) Multi-mikro-prozessor-einheit
DE2755371A1 (de) Ein/ausgabe-verarbeitungssystem
DE2725718A1 (de) Verarbeitungssystem mit mehreren virtuellen adressenraeumen
DE2926589A1 (de) Anordnung zur verlaengerung einer logischen computeradresse
DE2458300A1 (de) Datenverarbeitungssystem zur verarbeitung verschiedener datenformate
DE3131204A1 (de) Adressumrechnungs- und generatoranordnung
DE1549531A1 (de) Digitale Rechenanlage
DE2801518A1 (de) Datenverarbeitungssystem mit speicher-schutzeinrichtung
DE2626703A1 (de) Intern programmierbares datenverarbeitungssystem
DE2647574C2 (de) Vorrichtung zum Verarbeiten von durch ein Anfangs- und Endzeichen begrenzten Datenfeldsegementen variabler Länge bei einem Umlaufspeicher
DE2458286A1 (de) Datenverarbeitungssystem zum verschieben von datenfeldern mit verschiedenen strukturen
DE1189294B (de) Datenverarbeitungsanlage
DE2617127A1 (de) Mehrfachprogramm-datenverarbeitungssystem
DE2458525B2 (de) Speicheranordnung mit Haupt- und Pufferspeicher
DE2546354A1 (de) Mehrprogramm-dv-system

Legal Events

Date Code Title Description
8110 Request for examination paragraph 44
8176 Proceedings suspended because of application no:

Ref document number: 2516050

Country of ref document: DE

Format of ref document f/p: P

8178 Suspension cancelled
8130 Withdrawal