DE2459006A1 - Verfahren und einrichtung zur entwicklung absoluter adressen bei segmentadressierung - Google Patents

Verfahren und einrichtung zur entwicklung absoluter adressen bei segmentadressierung

Info

Publication number
DE2459006A1
DE2459006A1 DE19742459006 DE2459006A DE2459006A1 DE 2459006 A1 DE2459006 A1 DE 2459006A1 DE 19742459006 DE19742459006 DE 19742459006 DE 2459006 A DE2459006 A DE 2459006A DE 2459006 A1 DE2459006 A1 DE 2459006A1
Authority
DE
Germany
Prior art keywords
address
segment
memory
operand
absolute
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.)
Granted
Application number
DE19742459006
Other languages
English (en)
Other versions
DE2459006C2 (de
Inventor
James L Brown
Richard P Kelly
Jun Richard P Wilder
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 Inc
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 DE2459006A1 publication Critical patent/DE2459006A1/de
Application granted granted Critical
Publication of DE2459006C2 publication Critical patent/DE2459006C2/de
Expired 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/342Extension of operand address space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0615Address space extension
    • G06F12/0623Address space extension for memory modules

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Executing Machine-Instructions (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

51-01238 Ge 10. Dezember 1974
HONEYWELL INFORMATION SYSTEMS INC.
200 Smith Street
Waltham, Mass., USA
Verfahren und Einrichtung zur Entwicklung absoluter Adressen
bei Segmentadressierung.
Mit der fortlaufenden Erhöhung der Arbeitsgeschwindigkeit von Rechenanlagen und der zugehörigen Ein/Ausgabegeräte und der Entwicklung von Standardprogrammen, welche gesteuert durch ein Betriebssystem (Steuerprogramm) Funktionen übernommen haben, welche vorher den Eingriff des Programmierers erforderten, hat sich die Einzelprogrammverarbeitung durch einen einzelnen Processor zur heutigen Stapelverarbeitung weiterentwickelt, bei welcher mehrere Jobs zum Compilieren oder Assemblieren der Primärprogrammstapel in Objektprogramm-Kartensätze, d.h. zur Umsetzung des Benutzerprogramms aus der Symbolsprache in die Maschinensprache, sowie zum Laden und Ausführen des Benutzerprogramms gruppenweise zusammengefaßt werden. Durch den Stapelbetrieb wurde insbesondere der Tatsache Rechnung getragen, daß die Rüstzeit zur Vorbereitung eines Programms bei den immer schneller werdenden Rechnern ein Vielfaches der eigentlichen Rechenzeit beträgt. Mit dem zunehmenden Einsatz von Rechnern für Geschäfts- und Verwaltungsaufgaben entstand der Wunsch nach höherem Wirkungsgrad sowie nach Betriebssystemen, welche durch Mehrfachprogrammierung alle Dienstprogramme und die Steuerung für die Durchführung der Jobs zusammenfassen. Bei einfachen Stapelbetriebssystemen ist die Informationsquelle des Speichers mit wahlfreiem Zugriff, zumeist eines Kernspeichers, jedoch in jüngster Zeit vielfach eines MOS-
HB/Sr 509827/0585
Halbleiterspeichers, dem einzelnen Programm zugeordnet. Dies stellt jedoch eine Verschwendung von Speicherplatz dar, wenn das Programm nicht den gesamten Speicher ausfüllt. Eine Hauptaufgabe der Mehrfachprogrammierung besteht folglich in einer wirkungsvolleren Ausnutzung des Hauptspeichers, insbesondere wenn von der gleichen Prozedur mehrere Systemfunktionen angerufen werden. Als erster Schritt wurde der Kernspeicher unterteilt, so daß Mehrfachprogramme zur gleichen Zeit in abgetrennten Bereichen des Kernspeichers abgelegt werden konnten. Da jedoch Programme nur selten den gleichen Umfang haben, droht hierbei eine Überlappung der Speicherbereiche und damit verbunden ein überdecken eines Programms durch ein anderes. Dies ließ sich durch Zuweisung nicht überlappender Adressraumbereiche für jedes Programm vermeiden. Jedoch führt dies zu ungenutzten Kernspeicherteilen, welche für die Unterbringung anderer Informationen zu klein sind. Als ,Lösung dieses Problems wurde ein Umordnungs- oder Verschieberegister forgeschlagen, welches die fortlaufenden Adressen im Namenfeld in fortlaufende Adressen im Speicherraum umwandelt. Hierdurch gewinnt das System mehr Freiheit für die Zuordnung von Speicherplätzen und faßt die nicht benutzten Bereiche des Hauptspeichers zu einem fortlaufenden Teil zusammen. Dieses fortlaufende Umordnen und Verschieben ist jedoch umständlich und führt zu beträchtlichen Schwierigkeiten bei der Überwachung, insbesondere wenn mehrere gleichzeitig laufende Programme ständig ihre Anforderung an Speicherplatz ändern. Um hier Abhilfe zu schaffen, wurde das System der seitenweisen Zusammenfassung entwickelt. Hierbei wird das Namensfeld eines Programms in gleiche Teile, genannt Seiten, unterteilt.und der Hauptspeicher ist ebenfalls in gleiche Teile, genannt Blocks, unterteilt, wobei der Umfang einer Seite gleich dem eines Blockes ist, obwohl das gesamte Namensfeld nicht gleich dem gesamten Speicherplatz sein muß. Für die Zuordnung jedes einzelnen Blockes zu einer bestimmten Seite wird ein Blockindex verwendet, so daß es nicht nötig ist, eine Seite bei jedem Programmaufruf zu verschieben. Jeder freie Block ist ebensogut wie jeder andere, in den eine Seite eingespeichert werden kann, weil die Gleichförmigkeit des Programms über den genannten Blockindex erzielt wird und die Wahrscheinlichkeit, daß für eine neue Seite ein freier Block im Hauptspeicher gefunden werden kann, ziemlich
509827/0585
groß ist. Rechnersysteme, welche diese seitenweise Zusammenfassung benutzen, sind der Atlasrechner der Manchester University XDS94O sowie der Rechner HIS 645 von Honeywell Information Systems Inc.
Obwohl die genannte Seiten-Technik das Problem der Zuordnung von Speicherraum zu mehreren Programmen im wesentlichen löst,blieb das Problem der Zuordnung von Adressen im Namensfeld zwischen mehreren Programmen sowie der Schutz der Information im Hauptspeicher bestehen. In einem Aufsatz "Program Organization and Record Keeping for Dynamic Storage Allocation, Information Processing 62", veröffentlicht durch North-Holland Publishing Co., Amsterdam 1962, schlägt A. W. Holt eine Segmentierung vor, und J. B. Dennis hat dieses Konzept der Segmentierung zwecks Beibehaltung der Benennung und Bezugnahme auf Informationen weiterentwickelt und in einem Aufsatz "Segmentation of the Design of Multiprograiraned Computer Systems', veröffentlich im Journal of the Association for Computing Machinery, Band 12, Heft 4, Oktober 1965, auf den Seiten 589 bis 602 beschrieben. Das Segment-Prinzip wurde im Rechner Burroughs B5OOO sowie bei Anwendung des MULTICS Betriebssystems im Honeywel!-Rechner 645 eingesetzt. Beim segmentierten Adressieren ist ein Segment definiert als eine geordnete Gruppe von Worten, welche durch einen Segmentnamen bezeichnet wird, der dieses Segment von allen anderen Segmenten unterscheidet, und durch eine Gesamtadresse, welche zur Auswahl eines bestimmten Elements der geordneten Gruppe dient. Das Segment ist die Einheit für die gemeinsame Benutzung durch mehrere Benutzer, trägt einen Symbolnamen und hat einen Satz zugeordneter Zugriffsmerkmale, welche u.a. die Funktion beschreiben, bei welcher der Benutzer Zugang zu den in dem Segment enthaltenen Prozeduren und/oder Daten hat. Das Segment kann wachsen und schrumpfen und ist in den Programmen direkt adressierbar. Das Segment ist gedacht als eine Erweiterung des Dateibegriffs in herkömmlichen Systemen; jedoch ist eine Datei nicht direkt adressierbar, noch können in den Kernspeicher übertragene Dateien direkt von Programmen anderer Benutzer mitbenutzt werden.
509827/058 5
Das Segmentieren ist eine wirksame Lösung für das Problem der Benennung, Adressierung, Zuordnung und des Schutzes von Informationen im Hauptspeicher, indem:
(1) Für eine Berechnung die Benutzung eines Namensfeldes genügender Größe zur Verfügung stehen sollte, damit jeder Information auf die Bezug genommen wird, ein einziger Name zugeordnet wird und daß eine Verschiebung oder Umordnung von Information innerhalb des Namenfelds nicht notwendig ist;
(2) Datenobjekte für einen Rechenvorgang ohne Umordnung des Namenfeldes vergrößerbar sein sollten;
(3) die von mehreren Rechenvorgängen gemeinsam herangezogenen Informationen den gleichen Namen für alle Rechenvorgänge haben sollten; und
(4) ein Schutzmechanismus im Nämensfeld wirksam sein sollte, welcher im Rechenvorgang den Zugriff zu Informationen nur bei entsprechender Authorisierung gestattet (vgl. "Segmentation and the Design of Multiprogrammed Computer Systems" von Jack B. Dennis, veröffentlicht in Journal of the Association of Computing Machinery, Band 12, Heft 4, Oktober 1965, Seiten 598 602).
Während einige der obengenannten Rechnersysteme das Prinzip der seitenweisen und blockweisen Zusammenfassung sowie des Segmentierens zum Verbessern der Speicherausnutzung anwenden, sind diese Techniken dort nicht voll zum Einsatz gebracht und werden allgemein hauptsächlich in Form von Software realisiert. Der in gewissem Umfang die seitenweise Zusammenfassung und das Segmentieren benutzende Honeywell-Rechner HIS 645 beispielsweise, ist ein weiterentwickeltes System HIS 6 35, welches durch Modifikation mehrere Speichermodule, mehrere Eingabe/Ausgabe-Steuerungen, mehrere Processoren und eine Reihe von Zusatzregister genannten Sonderregistern enthält. Zusammen mit einem virtuellen Speicher und der Software des MUITICS-Systems erfüllt der Rechner HIS 645 einige der obengenannten Anforderungen.
Der Erfindung liegt die Aufgabe zugrunde, die Technik der Segmentadressierung weiter zu verbessern und insbesondere in Form von Hardware zu realisieren. Dabei soll das Segment als Einheit der
509827/058 5
mm C mm
Adressierung dienen, der Aufbau der Hardware möglichst einfach und übersichtlich sein und die Segmentadressierung sowohl bei direkter als auch bei indirekter Adressierung ermöglicht werden.
Diese Aufgabe löst das im Anspruch 1 beschriebene Verfahren. Vorteilhafte Einrichtungen zur Durchführung dieses Verfahrens sind Gegenstand der Unteransprüche. Die gemäß der Erfindung aus einer Anzahl von Adresselementen entwickelte absolute Adresse weist auf einen Byte-Speicherplatz im Hauptspeicher hin. Während der Adressentwicklung werden Hardware-Tests ausgeführt, um sicherzustellen, daß die entwickelte absolute Adresse die geforderte Adresse ist. Grundelement der Adressierung ist das Segment. Ein Adressenraum ist für einen Prozess definiert als Gruppe logischer Adressen, welche die Hardware während der Ausführung des Prozesses in absolute Adressen umwandeln darf. Eine logische Adresse besteht im typischen Fall aus einem Paar (s,d), wobei s die Segmentnummer und d die Verschiebung darstellt. Die Hardware erhält Tabellen, nämlich die Segmenttabellen, welche den Adressenraum des Prozesses bestimmen. Eine Segmenttabelle ST enthält einen Eingangs-oder Segmentdescriptor für jedes Segment. Jeder Segmentdescriptor umfaßt alle Merkmale des Segments, unter denen sich die absolute Kernadresse des Segments und die Länge des Segments befinden. Ein Befehl kann einen Operanden entweder direkt oder indirekt über einen Datendescriptor erreichen, wobei eine Adressilbe im Befehl als Hinweis dient und angibt, ob die Bezugnahme direkt oder indirekt ist. Darüberhinaus nennt die Adressilbe ein Basisregister, welches das anzuwählende Segment definiert und ebenso den OFFSET innerhalb des Segments. Die Adressilbe enthält ferner eine Verschiebung gegenüber der genannten Basis. Die Hardware zur Adressenentwicklung erhält die absolute Adresse des Segmentanfangs, addiert zu dieser den durch die genannten Register definierten OFFSET, die durch den Befehl bestimmte Verschiebung sowie, falls erforderlich, den Inhalt eines Indexregisters. Aus dieser Summation entsteht die erforderliche absolute Adresse.
Zur Erläuterung der Erfindung im einzelnen wird nachfolgend auf die in den Zeichnungen wiedergegebenen Ausführungsbeispiele
5 09827/058 5
Bezug genommen. Hierbei zeigt
Figur 1 schematisch eine Anzahl von Segmenten im Hauptspeicher; die Figuren 2A bis 2M die schematische Darstellung mehrerer neuer Hardware-Strukturen, nämlich
Figur 2A und 2B Segmentdescriptoren, Figuren 2C bis 2E Datendescriptoren, Figur 2CDE einen erweiterten Datendescriptor, Figuren 2F und 2G Basisregister,
Figuren 2H und 21 Adressilben,
Figuren 2J und 2K effektive Adresselemente, Figur 2L ein typisches Adressraumwort ASW,
Figur 2M ein typisches Segmenttabellenwort STW; Figur 3 eine schematische Darstellung der gemeinsamen Benutzung von Segmentdescriptoren durch mehrere Prozesse; Figur 4 die schematische Darstellung der Hardware-Strukturen für die segmentierte Adressierung sowie den allgemeinen Verfahrensablauf bei Segmentadressierung; Figur 5 das Flußdiagramm der Entwicklung einer segmentierten Adresse für die Erzeugung einer effektiven Adresse durch direkte oder indirekte Adressenentwicklung; Figur 6 den Aufbau der Einrichtung für die direkte Segmentadressenentwicklung ;
Figur 7 eine Einrichtung für die Entwicklung einer indirekten Segmentadresse über die Basis ITB;
Figur 8 eine Einrichtung zur indirekten Segmentadressenentwicklung über das Segment ITS;
Figur 9 das Flußdiagramm der Entwicklung einer Segmentadresse für die Entwicklung einer absoluten Adresse; Figur 10 eine Einrichtung für die Entwicklung einer absoluten Adresse;
Figur 11 eine Einrichtung für die Entwicklung einer Segmentadresse unter Verwendung eines inhaltadressierten Speichers; Figur 12A eine Weiterentwicklung für die Entwicklung einer Segmentadresse;
die Figuren 12B bis 12E den Zustanden der Einrichtung zur Entwicklung von Segmentadressen während verschiedener Zyklen.
509827/0585
In älteren Datenverarbeitungsanlagen wurde zu gegebener Zeit jeweils ein Programm verarbeitet, welches Zugriff zu allen Speicherquellen hatte, überschritt das Programm den vorhandenen Speicherraum, so mußte der Programmierer sein Programm und/oder die Daten unterteilen und das Laden der einzelnen Teile steuern. In DV-Anlagen mit Mehrprogrammverarbeitung befinden sich gleichzeitig viele Programme im Speicher. Um die Zuordnung von Speicherplätzen zu erleichtern, erfolgt eine dynamische Zuordnung durch eine Kombination des Betriebssystems mit der Hardware. Wegen des unterschiedlichen ümfangs der Programme ordnet dieses System den Speicher in Segmente unterschiedlicher Größe und hat die Möglichkeit, während des Programmablaufs die SpeicherZuordnung umzuordnen. Somit können einem Programm mehrere Speichersegmente zugeordnet sein, welche nicht in aufeinanderfolgenden Bereichen des Speichers liegen. Figur 1 zeigtaus einem Riöchner den Speicher 100 mit wahlweisem Zugriff, in dem fünf verschiedene Segmente von drei verschiedenen Programmen, A, B und C gespeichert sind. Segment 1 des Programms 1 ist im Teil 101 des Hauptspeichers 100 abgelegt, ein Segment 3 des Programms B in einem Teil 102, ein Segment 6 des Programms C in einem Teil 103
2
des Speichers, ein Segment des Programms B in einem Speicherteil 104 und schießlich ein Segment 2 des Programms A im Speicherteil 105. Andere Bereiche des Speichers können verschiedene Segmente weiterer Programme oder Daten aufnehmen. Bei dieser Prozedur ergibt sich normalerweise das Problem, daß alle Speicheradressen in einem Programm modifiziert werden müssen, wenn ein Programm oder ein Programmsegment anders zugeordnet wird. Um dies zu vermeiden, werden hier im Benutzerprogramm logische Adressen statt absoluter Hauptspeicheradressen verwendet. Diese logischen Adressen dienen dann zur Entwicklung der absoluten Hauptspeicheradresse. Mit dieser Technik können Benutzerprogramme ohne Rücksicht auf die zur Verfügung stehenden Speicherplätze im Hauptspeicher geschrieben werden. Mit diesem SpeicherZuordnungssystem hat jeder Prozeß über entsprechende Segmentdescriptoren ■ Zugriff zu seinen eigenen oder zugehörigen Speiehersegmenten. Das Format eines Segmentdescriptors ist in den Figuren 2A und 2B wiedergegeben. Figur 2Ä zeigt einen direkten Segmentdescriptor 200A
509827/0585
und Figur 2B einen indirekten Segmentdescriptor 2OOB. Ein direkter Segmentdescriptor beschreibt ein Segment und weist auf dieses hin, während ein indirekter Segmentdescriptor auf einen anderen Segmentdescriptor hinweist. In Figur 2A befindet sich an der Bit-Stelle 0 das Anwesenheitszeichen P. Es nimmt den Wert "1" an, wenn für die dem Segmentdescriptor entsprechende Segmentnummer im Hauptspeicher ein Segment angegeben ist. Hat das P-FeId den Wert'O", so ist kein Segment bestimmt und be toi Anwählen dieses Segmentdescriptors entsteht ein Fehlsegment-Ausnahmesignal. Das Ein-Bit-Feld I an der zweiten Stelle zeigt, daß der Descriptor die absolute Adresse eines anderen Segmentdescriptors und nicht die Basisadresse eines Segments enthält. Das Zugriffsfeld des indirekten Descriptors I wird in Zugriffsschutzprüfungen anstelle des Zugriffsfeldes des Segmentdescripttors benutzt, auf den der indirekte Descriptor hinweist. Ein Benutzungsanzeiger U in der Bit-Position Zwei läßt erkennen, ob ein Zugriff zum Segment erfolgt ist oder nicht. Das Feld hat den Wert "0", wenn kein Zugriff erfolgt, und nimmt im Falle eines Zugriffs den Wert "1" an. Der Schreibanzeiger W an der Bit-Position Fünf zeigt, ob in das Segment Information eingeschrieben worden ist oder nicht. Wurde keine Information eingeschrieben, so hat dieses Feld den Wert "O". Diese Anzeiger werden bei jedem Zugriff zu einem Segment durch Firmware fortgeschrieben, wozu eine indirekte Adressierung und Prozedur oder eine Semaphoresteuerung gehört. Das Zugängigkeits-Bit A an der Stelle Drei gibt an, ob das Segment zur Verfügung steht. Es hat den Wert "1", wenn das dem Descriptor entsprechende Segment verfügbar ist, während der Wert "0" ist, falls das Segment gesperrt ist. In diesem Falle erzeugt ein Anwählen des Segmentdescriptors ein Segmentsperr-Ausnahmesignal. Der Durchschaltungsanzeiger G-S ist ein Zwei-Bit-Feld, welcher überprüft wird, falls bestimmte Befehle ausgeführt werden sollen. Beispielsweise verlangt ein Prozeduranfangsbefehl ENT, daß das G-S-FeId dieCodierung 1 0 hat, während ein Semaphorebefehl den Code 0 1 erfordert. Jeder andere als der erforderliche Code führt zu einem Segmentdescriptor-Ungültigkeits-Ausnähmesignal. Das Feld MBZ an der Stelle Vier zeigt, wenn es den Wert "0", daß das adressierte Segment nicht größer als ein
509827/0585
vorgegebener Umfang ist. Erneut entsteht ein Segmentdescriptor-Ungültigkeits-Ausnahmesignal, falls das Feld MBZ nicht den Wert "O" hat. Die Segmentbasis X24 im direkten Segmentdescriptor ist ein 24-Eit-Basis-Feld, welches die absolute Adresse der Basis eines im direkten Segmentdescriptor bestimmten Segments angibt. Der Indirekte Segmentdescriptor gemäß Figur 2B hat eine verringerte Anzahl von Indikatoren und ein 28-Bit-Descriptorplatzfeld, welches die absolute Adresse eines direkten Descriptors bestimmt. Die Indikatoren P, I, MBZ und A des indirekten Descriptors 2OOB haben gleichartige Funktionen, wie die entsprechenden Indikatoren im direkten Descriptor.
Um eine möglichst hohe Flexibilität zu erzielen, hat jeder Prozeß die Möglichkeit des Zugriffs zu üblicherweise 2.048 Speichersegmenten, obwohl diese Zahl auch größer oder kleiner sein kann. Für den genannten Fall wären somit 2.04# Segmentdescriptoren pro Prozeß erforderlich. In einer Gruppe zusammen ablaufender Prozesse sind jedoch normalerweise eine Vielzahl von Segmenten, die von mehr als einem Prozeß benutzt werden. Folglich werden die Segmentdescriptoren gruppenweise zu Segmenttabellen zusammengefaßt, welche davon abhängen, ob sie für eine Prozeß, eine Gruppe von Prozessen (Job) oder jeden Prozeß im System zugängig sind. Diese gruppenweise Zusammenfassung dient auch dem Programmschutz. Somit wird eine Reihe von Segmentdescriptor-Tabellen für Einzelprogrammbenutzung, Mehrfachprogrammbenutzung und allgemeine Benutzung zusammengestellt. In diesem System hat jedes Segment nur einen Segmentdescriptor. Hierdurch verringert sich der für die Unterbringung der Segmentdescriptoren erforderliche Speicherrauirij und außerdem wird die Fortschreibung während der Umordnung des Speichers verringert. In Figur 3 sind die Segmentdescriptoren in drei verschiedenen Segmentdescriptortabellen 304, 305 und 306 zusammengefaßt. Die Segmentdescriptortabelle 304 umfaßt die gemeinsamen Segmentdescriptoren, was dadurch angezeigt wird, daß die Prozesse A, B und C aus den Blocks 301, 302 und 303 Zugriff zu dieser Tabelle 304 haben, wie dies durch die Pfeile 307, 308 und 309 angedeutet ist. Demgegenüber können nur die Prozesse B
509827.70585
und C in den Blocks 302 und 3O3 den Job-Segmentdescriptor 305 · erreichen, während nur der Prozeß C im Block 303 Zugriff zu dem Prozeß C-Segmentdescriptor 306 hat. Wegen der großen Anzahl der im System vorhandenen Jobs und damit der entsprechenden Anzahl von Segmenttabellen muß jeder Prozeß bestimmen können, zu welcher Segmenttabelle er Zugriff hat. Zu diesem Zweck hat jeder Prozeß zwei Segmenttabellen-Wortfelder, welche die Adressen aller für den Prozeß zugängigen Segmenttabellen enthalten. In den Segmenttabellen selbst befinden sich die Segmentdescriptoren. Die Segmenttabellen-Wortfelder STWA enthalten die Segmenttabellenworte STW's , deren Form in Figur 2M gezeigt ist.
In Figur 2M bestimmt das Umfangsfeld STSZ, welches die Bitstellen 0 bis 7 Umfaßt, die Gesamtzahl der Segmentdescriptoren in der Segmenttabelle. Die Anzahl kann von 0 bis 4 für die Segmenttabellenworte im Feld Nr. 0 variieren, welches durch das Adressraumwort ASW Nr. 0 angewählt wird. Die Anzahl kann zwischen 0 und 255 für Segmenttabellenworte im Feld Nr. 1 liegen, auf welches durch das Adressenraumwort Nr. 1 hingewiesen wird. Ist das umfangsfeld STSZ gleich "0", so ist die Segmenttabelle leer. Das Segmenttabellen-Adressenfeld STA mit den Bits 8 bis 31 bestimmt die absolute Adresse der Segmenttabelle, welche gleich 16 X STA in Bytes ist. Die Segmenttabellen-Wortfelder STWA werden durch die zuvorerwähnten Adressraumworte ASW gekennzeichnet und haben das in Figur 2L gezeigte Format. Es ist dem Format der Segmenttabellenworte STW ähnlich, jedoch bezieht sich das STWZ-FeId auf den Umfang des Feldes. Der Höchstwert eines Segmenttabellenwort-Umfangsfeldes STWSZ ist gleich 6 für das Adressraumwort Nr. 0 und ist gleich 8 für das Adressraumwort Nr. 1. Das Segmenttabellen-Wortfeld STWA mit den Bits 8-31 adressiert die absolute Adresse des Segmenttabellen-Wortfeldes in Einheiten von 16 Bytes.
In Figur 4 sind einige der Schritte wiedergegeben, mit denen ein vorgegebener Prozeß Zugriff zu einem zulässigen Segment erreichen kann. Ein Prozeß A, B oder C, dargestellt durch die Blocks 401, 402 und 403 ist mit zwei Adressraumworten ASWO und ASW1
509827/058S
ausgestattet, welche durch die Blocks 404 und 409 dargestellt sind. Die Adressraumworte ASW sind in einem Prozeßsteuerblock PCB abgelegt, der durch einen Prozeß erzeugt wird. Jedem Prozeß ist ein Prozeßsteuerblock zugeordnet und enthält die erforderlichen Informationen über den Prozeß einschließlich der absoluten Anfangsadresse der die vom Prozeß erreichbaren Segmenttabellen bestimmenden Tabellen. Jeder Prozeß braucht zwei Adressraumworte ASW, weil zwei Arten von Segmenten dem Prozeß zugeordnet sein können, nämlich sehr große Segme'nte mit einem Verschiebebereich
22
von (2 -1), und eine große Anzahl kleinerer Segmente mit einem Verschiebebereich von Null bis (2 -1). Die'Adressraumworte 404 bis 409 liefern die Adresse für die Segmenttabellen-Wortfelder STWA 410 bis 415. Letztere enthalten die Segmenttabellenwortdescriptoren und liefern die Adresse der Segmenttabellen, welche dem zugehörigen Prozeß zugängig sind. Die Segmenttabellen 416 bis 426 enthalten die Segmentdescriptoren und werden zur Bezeichnung eines bestimmten Segments 426 bis 439 im Hauptspeicher verwendet.
Die Entwicklung einer absoluten Hauptspeicheradresse besteht aus zwei Phasen, nämlich erstens aus der Entwicklung einer effektiven Adresse aus der die logische Adresse enthaltenden Adressilbe; und zweitens der Entwicklung einer absoluten Adresse aus der effektiven Adresse aufgrund von Informationen aus der Adressilbe und Informationen in einem Basisregister, wobei die effektive Adresse aus der Addition des OFFSET im Basisregister zur Verschiebung in der Adressilbe besteht, um eine relative Segmentadresse SRA zu erhalten. Die effektive Adresse gewinnt man durch Addieren des Inhalts eines Indexregisters, sofern vorhanden, zur relativen Segmentadresse SRA. In der zweiten Phase wird die absolute Adresse dadurch entwickelt, daß man die Segmentnummer SEG im Basisregister für den Zugriff zu einem Segmentdescriptor verwendet und die Basisadresse im Segmentdescriptor zur effektiven Segmentadresse addier*.
Bei der Entwicklung einer effektiven Adresse wird das Basisregister zusammen mit einer Adressilbe benutzt. Im gezeigten Ausführungsbeispiel werden typischerweise 8 Basisregister bezeichnet
509827/0585
mit Register O bis Register 7, eingesetzt (vgl. Block 1102 in Figur 11). Das Format des Basisregisters ergibt sich aus den Figuren 2F und 2G. Auch hieraus zeigt sich, daß zwei Formate erforderlich sind, für die Adressierung von zwei unterschiedlichen Arten von Segmenten. Das Format der Basisregister gemäß den Figuren 2F und 2G ist ähnlich mit Ausnahme, daß unterschiedliche Eingangsgrößen verschiedene Bit-Feld-Plätze besetzen. Das Hinweisfeld TAG ist ein 2-Bit-Feld, welches dem TAG-FeId des Datendescriptors gemäß den Figuren 2C bis· 2E entspricht. Ein 2-Bit-Ringfeld enthält die der Segmentadresse zugeordnete Ringnummer und wird für den Informationsschutz verwendet. Das Segmentkennzeichnungsfeld SEG besteht aus der Segmenttabellennummer STN und der Segmenttabellen-Eingangsnummer STE und stellt dasjenige Feld dar, welches ein Segment in der Segmenttabelle beschreibt. Der OFFSET is je nach Segmenttabellennummer ein 16-Bit oder ein 22-Bt-Feld, welches eine positive ganze Zahl darstellt und bei der Adressenentwicklung als Hinweisadresse innerhalb eines Segments dient.
Das Format der Adressensilbe ergibt sich aus den Figuren 2H und 21. Das Indirektadressierungs-Bit IND gibt an, ob direkt oder indirekt adressiert wird. Hat dieses Bit den Wert"O", so erfolgt direkte Adressierung, während beim Wert "1" eine indirekte Adressierung vorgenommen wird. Das Basisregisterfeld BR bezeichnet dasjenige der 8 Basisregister, welches bei der Entwicklung der effektiven Adresse angewählt wird. Das Index-Bit IDX dient zur Festlegung, ob bei der Adressenentwicklung ein Indexregister benutzt wird oder nicht,sowie zur Angabe der Länge des Verschiebungsfeldes D. Hat das Index-Bit IDX den Wert "0", so bedeutet dies, daß kein Indexregister zu benutzen ist und die Verschiebung D 15 Bits lang ist. Hat hingegen das Index-Bit IDX den Wert "1", so wird damit angezeigt, daß ein durch das Feld IXR bestimmtes Indexregister benutzt werden soll und das Verschiebungsfeld D 12 Bits lang ist. Hieraus ersieht man, daß das Format gemäß Figur 1 das Indexformat der Adressilbe ist. Das Feld IXR ist nur vorhanden, wenn IDX gleich "1" ist und gibt dann das
509827/058B
Indexregister an, welches bei der Entwicklung der effektiven Adresse anzuwählen ist. Das -Verschiebungsfeld D entspricht einer positiven ganzen Zahl, welche als Verschiebung dient. Ist IDX
15 gleich "0", so ist der Maximalwert von D gleich (2 -1), während
bei IDX gleich "1" der Maximalwert von D (212-1) beträgt. Das Adressilbenformat beginnt mit Bit 12 und endet mit Bit 31. Dies ist dadurch bedingt, daß die Adressensilbe üblicherweise einen Teil eines Befehls enthält und in den Befehl beginnend mit Bit 12 eingeordnet ist.
Die Entwicklung einer effektiven Adresse aus einer Adressilbe kann auf vier verschiedenen Wegen vorgenommen werden: (1) Die Entwicklung der effektiven Adresse kann direkt sein; (2) die Entwicklung der effektiven Adresse kann indirekt erfolgen; (3) die Entwicklung der effektiven Adresse kann direkt und indiziert sein; und (4) die effektive Adresse kann indirekt und indiziert entwickelt werden. Alle vier Arten der Adressensilbe enthalten ein Basisregister-Feld BR, welches den Zugriff zum Basisregister bestimmt, welches eines der beiden in den Figuren 2F und 2G wiedergegebenen Formate2OOF und 2OOG haben kann. Die Inhalte des Basisregisters werden durch ein Benutzerprogramm verarbeitet, welches einen Basisregister-Ladebefehl benutzt.
Das direkte Verfahren zur Entwicklung einer effektiven Adresse ist in den Fiugren 5 und 6 wiedergegeben. Eine Direkt-Adressensilbe 500 in Figur 5 bzw. 601 in Figur 6, dargestellt dadurch, daß ihr Indirektadressierungs-Bit IND gleich "O", ihr Index-Bit IDX gleich "0" und das Verschiebefeld D sehr lang ist, weist auf ein Basisregister 602, das dieSegmentnummer SEG der Segmenttabelle 604 sowie einen OFFSET innerhalb dieser Segmenttabelle angibt. Diese Segmenttabelle enthält Segmentdescriptoren, von denen einer in diesem speziellen Beispiel eine Basisadresse für das Segment beschreibt. Die Adressilbe 601 liefert ferner das Verschiebe-Bit D. Durch Addieren der Verschiebung D der Adressilbe 601 und des OFFSET des Basisregisters 602 wird eine relative Segmentadresse SRA erzeugt. Die Basiselemente der effektiven Adresse umfassen die Basis des Segments, welches
509827/058 5
durch die Segmentnummer SEG und die relative Segmentadresse bestimmt sind, sowie einen Index (falls überhaupt) im Indexregister 602. Bei einer anderen Ausführungsform ist der Index aus dem Indexregister 602 nicht Teil der effektiven Adresse, sondern wird gemäß dem strichpunktiertem Pfeil 621 der absoluten Adresse 608 zugeleitet.
Das Format der effektiven Adresse ergibt sich aus den Figuren 2J und 2K. In dieses Format ist ein zusätzliches Basiselement, nämlich die effektive Adressringnummer EAR eingeschlossen. Diese stellt eine Schutzinformation dar, die die Zugriffsmöglichkeit zum Speicher bestimmt. Sie liegt zwischen Null und Drei und führt zu einer Datenverarbeitung innerhalb von vier Privilegringen unterschiedlichen Grades.(vgl. Parallelanmeldung P entsprechend US S.N. 424 239). Das Bit-Feld zwischen den Bits Null und Eins hat keine Bedeutung für die effektive Adresse, sondern entspricht dem TAG-FeId des Datendescriptors. Das Feld STN der Segmenttabellennummer bestimmt eine von 15 dem Prozeß zugeordneten Segmenttabellen. Das Segmenttabellen-Eingangsfeld STE gibt eine bestimmte Eingangsstelle innerhalb des Segments an, welches einen Segmentdescriptor enthält und ein bestimmtes Segment bezeichnet. Das Relativsegment-Adressenfeld SRA stellt eine 16 oder 22 Bit lange positive Zahl dar, die die Anzahl des Bytes von der Basis des Segments bis zum ersten Byte des Operanden angibt. Für ein großes Segment (Segment Null bis Sechs) kann die
22
relative Segmentnummer zwischen 0 bis (2 -1) liegen. Bei kleinen Segmenten (Segmente Acht bis Fünfzehn) liegt die relative Segmentadresse zwischen 0 und (2 -1). Das Effektivadressen-Bit-OFFSET-FeId EBO besteht nur , wenn der Operand im Speicher eine Bit-Zeichenfolge ist. Die der Adressenentwicklung dienende Hardware 607 erhält die absolute Adresse des durch die Basisadresse des Segmentdescriptors 605 bezeichneten Segmentanfangs, wobei der Segmentdescriptor seinerseits durch die Segmentnummer SEG gekennzeichnet ist. Sie addiert die Basisadresse zur relativen Segmentadresse SRA und erzeugt auf diese Weise eine absolute Adresse 608.
509827/058 5
In Figur 5 beschreiben die Schritte 500, 501, 502, 504 und 505 die Entwicklung einer effektiven Adresse mit einer direkten Silbe. Die Schritte 500, 501, 503 und 505 beschreiben die zweite Methode für die Entwicklung einer effektiven Adresse unter Verwendung einer direkten indizierten Adresssilbe. Die Entwicklung einer effektiven Adresse aus einer direkten indizierten Adressilbe, d.h. wenn das Indirektadressierungs-Bit IND in den Figuren 2H und 21 gleich "0" und das Index-Bit IDX gleich "V'und ein kurzes Verschiebungsfeld vorhanden ist, erfolgt in der gleichen Weise wie die Entwicklung aus einer direkten Adressilbe, jedoch mit einer Ausnahme: Die relative Segmentadresse SRA wird durch Addieren des Verschiebefeldes der Adressilbe 601 in Figur 6, des OFFSET-Feldes im Basisregister 602 und des Inhalts des durch das Indexregisterfeld IXR der Adressilbe benannten Indexregisters 603 entwickelt.
Bei der Entwicklung der indirekten oder der indirekten indizierten effektiven Adresse erfolgt der Zugriff zu einem Operanden über eine oder zwei Ebenen indirekter.Adressierung, d.h. nach der Erzeugung einer absoluten Adresse aus der ersten effektiven Adresse wird ein Datendescirptor abgerufen, aus dem eine andere effektive Adresse entwickelt wird, ehe die Entwicklung der endgültigen absoluten Adresse erfolgt, die zum Abruf des Operanden dient. Es gibt zwei Arten der Entwicklung indirekter und indirekter indizierter Adressen: Die eine steht in einer indirekten Adressierung ITB der Basis, wobei ein Datendescriptor vom Format 200C in Figur 2C abgerufen wird, und die andere in der indirekten Adressierung ITS eines Segments, wobei ein Descriptor vom Format 200D in Figur 2D abgerufen wird.
Die Figuren 2C bis 2E zeigen verschiedene Arten von Datendescriptoren. In Figur 2C ist ein ITB-Datendescriptor für die indirekte Adressierung der Basis, während die Figuren 2D und 2E ITS-Datendescriptoren für die indirekte Adressierung des Segments wiedergeben. Ein weiteres Format gemäß Figur 2CDE
50982 7 /OS85 ■
- 1g -
stellt einen erweiterten Datendescriptor dar und kann den anderen Datendescriptoren an der Bit-Stelle 3L zugeführt werden. Es gibt auch zwei verschiedene Formate des ITS-Datendescriptors, von denen das eine gemäß Figur 2D zum Bezeichnen einer Segmenttabellennummer O bis 6 in den großen Segmenten dient, während das Format des Datendescriptörs gemäß Figur 2E zur Bezeichnung der Segmenttabellennummer STN 8 bis 15 in der Maschine dient, die zur Benennung kleinerer Segmente verwendet werden. Ein Datendescriptor kann auch Operanden bezeichnen, statt einen anderen Datendescriptor oder einen Segmentdescriptor.
Die Mindestgröße eines Datendescriptörs beträgt vier Bytes. Der Speicherplatz des Datendescriptörs wird durch die Adresse des am weitesten links stehenden Bytes bestimmt, das irgendeine Byte-Adresse sein kann. Der Datendescriptor bestimmt Adressen im Speicher entweder durch indirekte Basisadressierung ITB oder durch indirekte Segmentadressierung ITS. Die Basisadressierung ITB ist gegeben, wenn die Bits 4 bis 7 der obengenannten Formate 2OOC bis 200E gleich 0111 sind. Eine indirekte Segmentadressierung wird festgestellt, wenn die Bits 4 bis 7 des Datendescriptor-Formats von 0111 verschieden sind. Der ITS-Descriptor bezeichnet eine Segmentnummer SEG , bestehend aus einer Segmenttabellennummer STN und einer Segmenttabellen-Eingangsnummer STE, welche für die Bildung der effektiven Adresse zu benutzen sind. Der ITB-Descriptor entspricht einer Adressensilbe, welche über das Datenbasisregister in eine effektive Adresse umgeformt wird.
In den Figuren 2C bis 2E bezeichnet das TAG-FeId die Art des Descriptors wie folgt:
00 bedeutet den normalen direkten Descriptor, welcher auf Daten hinweist;
01 ist der erweiterte direkte Datendescriptor, worin der Descriptor auf Daten hinweist;
10 ist der indirekte Descriptor, wobei der Descriptor auf einen anderen Descriptor hinweist;
11 bedeutet eine Fehleranzeige.
Das DRN-FeId bezeichnet die Ringnummer, zu der der betreffende
509827/0585
Descriptor Zugang hat (vgl. die obengenannte Parallelanmeldung). STN bezeichnet die von jenem Descriptor angewählte Segmenttabellennummer, wenn die Bits 4 bis 7 seines Formats jede andere Zahl außer 0111 haben. Diese Segmenttabelleneingangsnummer STE liegt üblicherweise zwischen O und 3, d.h. bezieht sich auf sehr große Segmente, wenn STN zwischen O und 6 liegt (Format 200D), während bei kleineren Segmenten, d.h. für STN zwischen 8 und 15 STE zwischen 0 und 254 liegt (Format 20OE). Die Segmenttabellennummer STN und die Segmenttabellen-Eingangsnummer STE bilden zusammen die Segmentnummer SEG. Das Datendescriptorformat 200D beschreibt also vier Segmente, welche die Segmentnummern SEG 0 bis 4 in der Maschine kennzeichnen, während der Datendescriptor vom Format 200E 256 Segmente beschreibt, welche in der Maschine die Nummern SEG 0 bis 255 haben, also eine große Anzahl kleiner Segmente darstellen. Die Verschiebung DISP bezeichnet die Byte-Adresse eines Segmentwortes, welches durch eine Segmentnummer SEG gekennzeichnet ist. Als Beispiel hierfür würde bei einem Descriptorformat 200D oder 200E, falls STN die Nummer 5 und STE die Nummer 7 sowie DISP die Nummer 4 enthielte, ein Zugriff zum vierten Byte eines Wortes, in dem durch den siebenten Descri]
erfolgen sollen.
siebenten Descriptor in der Segmenttabelle bezeichneten Segment
Ein ITB-Descriptor ist eine Adressensilbe, welche über ein Datenbasisregister in eine effektive Adresse entwickelt wird. Ein ITS-Descriptor stellt eine effektive Adresse dar, die zur Entwicklung einer absoluten Adresse dient. Bei der Bildung einer effektiven Adresse entweder von einem ITB oder einem ITS-Descriptor wird zunächst überprüft, ob nicht eine zweite Stufe indirekter Adressierung erforderlich ist. Ist eine solche zweite Stufe nicht nötig, so wird überprüft, ob das Index-Bit in der Adressilbe gleich Eins ist. Trifft dies zu, so wird der Inhalt des durch die Adressilbe bestimmten Indexregister der Adresse angehängt. Ist jedoch eine zweite Stufe indirekter Adressierung nötig, so wird sie in der gleichen Weise durchgeführt wie die erste. Während der Bildung einer« Segmentadresse sind bis zu
509827/0 5 85
16 Schritte oder Ebenen indirekter Adressierung zulässig. Jede effektive Adresse besteht aus einer Segmentnummer, welche den Zugriff zu einem bestimmten Speichersegment bestimmt,und der Verschiebung, die für den Zugriff zu einem bestimmten Speicherplatz innerhalb des Segments zuständig ist. Die Segmentnummer besteht, wie oben erwähnt, aus der Segmenttabellennummer STN und der Segmenttabellen-Eingangsnummer STE, wobei STN zur Bildung der Segmenttabellenadresse und STE zur Bildung einer Segmentdescriptorenadresse innerhalb der Tabelle dient. Die Segmentnummer wird aus dem Basisregister geholt, welches von der Adresssilbe angewählt ist. Die Segmentnummer hat entweder 6 oder 12 Bits, je nach dem angewähltenBasisregister und seinem Format, welches entweder dem Format 2OOF oder 20OG entsprechen kann. Das letztgenannte besteht außer einer 6-Bit-Segmentnummer SEG, die aus einem 4-Bit-Segmenttabellen-Nummernfeld STN und einem 2-Bit-Segmenttabelleneingangsfeld STE zusammengesetzt ist. Das 4-Bit-STN-FeId, dessen höchstwertiges Bit gleich Null ist, ermöglicht den Zugriff zu sieben Segmenttabellen 0 bis 6 (STN gleich 7 ist unzulässig). Das 2-Bit-STE-Feld ermöglicht vier Segmentdescriptoren innerhalb jeder Tabelle oder vier Eingangsstellen zu der Tabelle. Der Umfang der durch diese Tabellen erreichbaren Segmente kann bis zu 4 Megabyte betragen, weil ein 22-Bit OFFSET vorgesehen ist. Bei Benutzung dieses Formats kann ein Prozeßzugriff zu achtundzwanzig 4-Megabyte-Segmenten haben (7 Segmenttabellen, 4 Segmentdescriptoren pro Tabelle). Das Basisregisterformat 200F ergibt eine 12-Bit-Segmentnummer SEG, bestehend aus einem 4-Bit-STN-FeId und einem 8-Bit STE-FeId. Das 4-Bit-STN-Feld, dessen höchstwertiges Bit gleich Eins ist, ergibt Zugriff zu 8 Segmenttabellen. Das 8-Bit-STE-Feld macht 256 Segmentdescriptoren innerhalb jeder Tabelle zugängig. Der Umfang der durch diese Tabellen erreichbaren Segmente kann 64 Kilobyte betragen, weil ein 16-Bit-OFFSET vorgesehen ist. Dieses Format ermöglicht Zugriff zu 2.048 Segmenten von je 64 Kilobyte (8 Segmenttabellen, 256 Segmentdescriptoren pro Tabelle). Natürlich kann auch eine andere Anzahl von Tabellen oder Segmenten im Rahmen der Erfindung vorgesehen sein.
509827/0585
Im Flußdiagramm gemäß Figur 4 beziehen sich die Schritte 506 bis 517 auf die Bildung einer effektiven Segmentadresse bei indirekter oder direkter Indizierung. Die Figuren 6 und 7 zeigen hierfür die erforderliche Hardware zur Erzeugung der effektiven und der absoluten Segmentadressen. Die Bildung einer relativen Segmentadresse SRA 606, 711 erfolgt ähnlich wie bei direkter Segnentadressierung,und die effektive Segmentadresse benutzt die relative Segmentadresse SRA 606,711 und die Segmenttabellennummer sowie die Segmenttabellen-Eingangsnummer der Basisregister 602,701 (siehe Formate 200J und 200K), Später wird noch die Bildung einer absoluten Adresse 608,709 beschrieben werden, die der Entwicklung der endgültigen effektiven Adresse dient, welche ihrerseits für die Bildung der endgültigen absoluten, den Zugriff zum Operanden bewirkenden Adresse benutzt wird.
Unter Bezugnahme auf Figur 4 sei angenommen, daß die Adressensilbe 700 in ihrem Indirektadressierungsfeld IND eine "1" aufweist, was auf indirekte Adressierung hinweist. Das Basisregisterfeld BR der Adressensilbe 700 weist auf das Bäsisregister 701 hin, welches seinerseits eine Segmentnummer SEG liefert, die ihrerseits eine Segmenttabelleneingangsstelle der Segmentdescriptoren 704 bereitstellt, die sich in der Segmenttabelle 702. befinden. Das Index-Bit IDX der Adressilbe 700 ist bei diesem Beispiel auf "0" gesetzt und gibt an, daß kein Indexregister zu benutzen ist. Wäre das Index-Bit IDX gleich "1", so würde eine indirekte indizierte Adressierung erfolgen müssen und über die gestrichelte Leitung 706a das Indexregister 706 für die Bildung der endgültigen relativen Segmentadresse herangezogen werden. Die relative Segmentadresse SRA 707 wird aus dem OFFSET des Basisregisters 701 gebildet, der auf das erste Byte eines Wortes innerhalb des Segments hinweist, auf dessen Basisspeicherplatz das Basisfeld des Segmentdescriptors gerichtet ist; und zwar desjenigen Segmentdescriptors, auf den STN und STE sowie die Verschiebung der Adressilbe 700 hinweisen, die auf das Byte eines Wortes gerichtet ist. Die relative Segmentadresse SRA zusammen mit der Segmentnummer bilden in diesem Fall die Elemente der effektiven Segmentadresse, weil keine Indizierung erforderlich
509827705 8 5
war. Fände eine Indteierung statt, so würde die effektive Adresse den Index enthalten. Diese effektive Segmentadresse wird in später noch zu beschreibender Weise für die Bildung einer absoluten Datendescriptoradresse 709 eingesetzt. Das Basisregisterfeld BR des Datendescriptors 710 hätte in diesem Fall den Code 0111, was bedeutet, daß der Datendescriptor 710 eine indirekte Adressierung zum Basis ITB-Format enthält (siehe Datendescriptorformat 20OC und 200E). Das Basisregisterfeld BR des Datendescriptors 710 weist ferner auf das Datenbasisregister 704 hin. Der OFFSET des Datenbasisregisters 704 und die Verschiebung des Datendescriptors 710 und, sofern vorhanden, der Index des Indexregisters 706, bilden die relative Segmentadresse SRA 711. Diese relative Segmentadresse 711 enthält zusammen mit der Segmentnummer und gegebenenfalls einem Index eine zweite effektive Segmentadresse, die zur Bildung der absoluten Adresse 713 desjenigen Operanden im Hauptspeicher dient, zu dem Zugriff erfolgen soll.
Die Schritte 506 bis 509, 511, 515 bis 517 und 512 bis 514 in Figur 5 sowie Figur 8 zeigen das Verfahren und die Harware zur indirekten Adressenbildung gemäß der Methode der indirekten Adressierung eines Segments ITS. Verfahren und Hardware sind ähnlich dem ITB-Modus mit Ausnahme, daß der Datendescriptor 810 nicht wie der Datendescriptor 710 in Figur 7 auf ein Basisregister ge-
ist,
richtet "sondern direkt über seine Segmentnummer SEG auf das Segment. Das Format 200 D bzw. 200E des Datendescriptors 810, gezeigt in den Figuren 21
descriptors 710.
in den Figuren 2D und 2E ist folglich anders als das des Daten-
Nachdem die Elemente der effektiven Segmentadresse zur Verfügung stehen, kann nunmehr die absolute Adresse des Operanden oder Descriptors gebildet werden.-Die Figuren 9 und 10 zeigen eine Ausführungsform des Verfahrens und der Hardware für die Entwicklung einer absoluten Adresse. Hierbei wird der Prozeßsteuerblock 1002 über J. P. Tabellen erreicht. Diese stellen eine Sammlung logischer Adresse für die Ermittlung eines dem Prozeß zugeordneten Prozeßsteuerblocks dar. Unter einer logischen Adresse ist hierbei
509827/0585
ein Element des Prozeßadressraums zu verstehen, beispielsweise die Segmentnummer SEG und die Verschiebung D. Das höherwertige Bit der Segmenttabellennummer STN der effektiven Adresse 1001 wird für den Zugriff zu einem der beiden Adressraumworte 1003 oder 1004 benutzt. Das angewählte Adressraumwort enthält die Basisadresse eines Segmenttabellenwortfeldes 1005. Der·Inhalt des Adressraumwortes wird den 3 Bits niedriger Ordnung der Segmenttabellennummer STN der effektiven Adresse 1001 über den Addierer 1011 hinzugefügt, wodurch die Adresse eines Segmenttabellenwortes 1006 innerhalb des Segmenttabellen-Wortfeldes 1005 entsteht. Jedes Segmenttabellenwort 1006 enthält die absolute Anfangsadresse einer Segmenttabelle 1007, die den Segmentdescriptor 1008 enthält. Durch Auslesen des Segmenttabellenwortes 1006 und Hinzufügen der Segmenttabellen-Eingangsnummer STE der effektiven Adresse 1001 mittels des Addierers 1012 entsteht die Adresse eines bestimmten Segmentdescriptors 1008 in der Segmenttabelle 1007. Wie zuvor beschrieben wurde, enthält der Segmentdescriptor Information über ein zugehöriges Speichersegment einschließlich der Start- oder Basisadresse des Segments und der Länge des Segments. Somit wird durch Hinzufügen der absoluten Startadresse des Segments und des Verschiebungs-Bits der relativen Segmentadresse der effektiven Adresse 101 die gewünschte Hauptspeicheradresse 1010 erhalten. Diese kann nur mittels Zugriff zu den Segmenttabellen der absoluten Hauptspeicheradresse zugeordnet werden. Da jedoch für die Entwicklung der Basisadresse des in dem Segmentdescriptor enthaltenen Speichersegments eine Anzahl von SpeicherZugriffen erforderlich ist, speichert üblicherweise eine Assoziativspeicher in der Zentraleinheit CPU (vgl. Figur 11) die acht zuletzt benutzen Segmentdescriptoren zusammen mit ihren Segmentnummern. Bei der Bildung der absoluten Adresse wird die Segmentnummer in der effektiven Adresse 1001 mit der Segmentnummer im Assoziativspeicher verglichenjund wenn eine Übereinstimmung (Treffer) ermittelt wird, wird der Segmentdescriptor im Assoziativspeicher für die Adressenbildung herangezogen. Die Verwendung eines Assoziativspeichers für die Adressenentwicklung ist Gegenstand der DT-OS- 23 39 741.
509827/0585
Wird jedoch keine Übereinstimmung festgestellt, so wird der Segmentdescriptor 1008 in der üblichen Weise aus dem Speicher abgerufen und zusammen mit seiner Segmentnummer für spätere Verwendung in den Assoziativspeicher 1206 eingegeben. Bei dieser Erläuterung der Bildung absoluter Adressen ist angenommen, daß der Segmentdescriptor ein direkter Segmentdescriptor ist. Es kann sich jedoch auch um einen indirekten Descriptor handeln, der die absolute Adresse eines zweiten Descriptors enthält. Die Adresse des zweiten Descriptors wird dann zum Abruf eines zweiten Datendescriptors benutzt, der die absolute Startadresse des Segments enthält.
Anhandvon Figur 11 wird nachstehend die Entwicklung einer effektiven und absoluten Segmentadresse unter Verwendung eines Assoziators oder inhaltsadressierbaren Speichers 1106 erläutert (vgl. auch DT-OS 23 39 741). Die Basisregister BRO bis BR7 werden durch den Inhalt der UG und UH Register 1103 und 1104 über den UWB Daten-Selektor 1203 (vgl. Figur 12A) adressiert. Die Register 1103 und 1104 enthalten die Basisregisteradressen von einem Befehle, einem Mikrobefehl oder sonstwie. Die Segmentnummer SEG der Basisregisteradresse wird über den UBS-Sektor 1110 in das US Register 1105 eingegeben und der OFFSET des Basisregisteradresse über den UBS-Selektor 1110 in das UN-Register 1107, von wo aus es in den UBD-Addierer 1108 übertragen und der Verschiebung aus der Adressilbe hinzugefügt werden kann. Die Summe aus Verschiebung und OFFSET wird dann in das 2-Arbeitsregister UW 1101 eingegeben. Der UAS Assoziativspeicher 1106 wird abgefragt um festzustellen, ob sich die Adresse im US-Register 1105 im Assoziativspeicher befindet^und falls dies zutrifft, wird die Segmentbasisadresse aus dem Assoziativspeicher UAS 1106 in das UN-Register 11o) eingespeichert. Sodann wird das den OFFSET und die Verschiebung enthaltende UW-Register abgefragt und sein Inhalt in den UBD-Addierer 1108 überführt und dort an die im UN-Register 1107 gespeicherte Segmentbasisadresse angehängt. Das Ergebnis dieser Addition ist die absolute Adresse der Adressensilbe. Sie kann dem UA-Register 1109 für die Adressierung des Hauptspeichers zugeführt werden. Die absolute Adresse kann auch im 2-Arbeitsregister UW gespeichert werden. Ist die Information
509827/0585
im UAS-Assoziativspeicher 1106 nicht verfügbar, so wird die Segmentnummer benutzt, um den Segmentdescriptor aus dem Hauptspeicher abzurufen. Der Segmentdescriptor kann dann im Assoziativspeicher 1106 zusammen mit einem die Übereinstimmung anzeigenden Treffer-Bit für spätere Benutzung abgelegt werden.
Figur 12A zeigt nähere Einzelheiten der Hardware gemäß Figur 11. Eine Registerdatei 1204 umfaßt vier Arbeitsregister UW4 bis ÜW7 sowie acht Basisregister BRO bis BR7, die bei der Adressenbildung eingesetzt werden. Jedes Register ist 36 Bits groß (32 Daten-Bits, 4 Paritäts-Bitsi. Die Registerdatei ist mit einer diskreten Logik versehen und derart strukturiert, daß gleichzeitig in jedes der Register eingegeben und aus drei der Register ausgespeichert werden kann. Die ersten acht Register BRO bis BR7 der Datei sind Basisregister und sind für den Programmierer zugängig. Die letzten vier Register UW4 bis UW7 sind Arbeitsregister, welche nur der Hardware zugängig sind (nur Internbetrieb). Die in die Register einzuspeichernden Daten werden aus verschiedenen Quellen durch einen UWB-Datenselektor 1203 ausgewählt, der weiter nichts zu sein braucht als ein Multiplexer, während das bestimmte Register, in welches eingelesen werden soll, durch eine Schreib/Steuerlogik 12O3A (Figur 12B) bestimmt wird, die Teil des Dateneselektors 1203 ist. Das Auslesen aus der Registerdatei wird über die Selektoren USB 1215 und UBS 1216 bewerkstelligt, die ebenfalls Multiplexer sein können. Die Asynchronlogik des Basisregisterselektors 1208 wählt eines der ersten acht Basisregister über den Selektor UBS 1216 aus, während das Adressregister UK 1211 die gleiche Funktion für die letzten acht (4 Bais- und 4 Arbeits-) Register über den Selektor USB 1215 erfüllt. Ein Addierer UBD 1219 summiert den Inhalt des Selektors USB 1215 und des Basis-OFFSET-RBgisters UN 1221. Der Bestimmungsplatz des Addiererausgangssignals wird durch die Art der durchgeführten Operation festgelegt. Sobald eine absolute Adresse gebildet ist, wird sie über das UA-Register 1220 der Hauptspeicher-Schnittstelleneinheit MIU zugeleitet. Das Grenzregister UL1227 enthält eine Adresse, die die Grenze oder das obere Ende der absoluten Adresse im UA-Register 1220 darstellt. Diese beiden Adressen werden im Grenz-
509827/0585
' 24 - 2A5900-6
überprüfer ULC 1229 verglichen, der einen Prüfanzeiger erzeugt, wenn die Inhalte übereinstimmen* bzw. UA^UL ist.
Der Adressenassoziator 1222 enthält die Segmentnummern STN/STE von bis zu 16 Segmentdescriptoren, welche im Assoziatorpuffer 1226 untergebracht sind. Jeder der 16 Speicherplätze im Adressenassoziator 1222 besteht aus 12 Daten-Bits und 4 Bits für Steuer- und Prüfzwecke. Während der Adressenbildung wird die Nummer des gewünschten Segments in das US-Register 1217 geladen. Der Inhalt dieses Registers wird einem simultanen Parallelvergleich mit den Segmentnummern aller 16 Adressassoziator-Speicherplätzen unterworfen. Dieser Vergleich benötigt weniger als einen Zyklus, d.h. weniger als 510 ns. Zeigt der Vergleich eine Übereinstimmung (Treffer), so werden die Bits des Adressenassoziatorwortes durch einen Trefferdecoder/Codierer 1223 in einen 4-Bit-Code decodiert/ der seinerseits dasjenige Wort im Assoziatorpuf fer auswählt/ welches den Segmentdescriptor enthält. Da eine gegebene Segmentnummer nur einmal im Adressenassoziator auftreten sollte, führt ein Mehrfachtreffer zu einer überprüfung mittels des Trefferdecoders.Besteht keine Übereinstimmung (kein Treffer), so wird der Descriptor für das gewünschte Segment über die Sammelschiene 1223 aus dem Hauptspeicher abgerufen und über das UY-Register 1228 in den Assoziatorpuffer eingegeben. Das UY-Register 1228 wird zum Lesen und Schreiben im Assoziatorpuffer verwendet. Da dieser die Descriptoren für die 16 zuletzt benutzten Segmente enthält und da die meisten Programme nur wenige Segmente benutzen, können mehr als 90% aller Adressen über diese Hochgeschwindigkeitseinheit entwickelt werden.
Die verschiedenen Zyklen zur Bildung einer ausgewählten Adresse werden nachfolgend anhand der Figuren 12B bis 12E erläutert.
Zyklus 1 (Hardware-Status gemäß Figur 12B)
a. Das Verschiebungsfeld des Befehls wird,gesteuert durch die Schreib/Steuerlogik 12O3A über den Datenselektor 1203, einem Arbeitsregister 1204 zugeführt.
509827/0585
b. Die Basisregisteradresse wird zum Basisregisterselektor UBR 1209 übertragen, welcher das zum Auslesen geeignete Basisregister auswählt.
c. Das Basisregister-OFFSET-Feld wird in das Basis-OFFSET-Register übertragen, das während des Zyklus 2 benutzt wird.
d. STN und STE, d.h. die Segmentnummer SEG werden gleichzeitig in das US-Register 1217 (Verriegelungsregister) eingegeben.
e. Während des Einspeicherns in das US-Register 1217 beginnt die gleichzeitige Abfrage aller 16 Adressassoziator-Speicherplätze.
Am Ende des Zyklus 1 ergibt sich somit folgender Zustand:
1. Das Verschiebefeld des Befehls befindet sich in einem Arbeitsregister.
2. Das Basisregister-OFFSET-Feld befindet sich im Basis/OFFSET-Register UN 1221.
3. Der Adressenassoziativspeicher wird abgefragt.
Zyklus 2 (Hardware-Status gemäß Figur 12C)
a. Das die Verschiebung enthaltende Arbeitsregister wird durch das UK-Register 1211 ausgewählt und die Verschiebung über den USB-Selektor 1215 in den Addierer 1219 übertragen.
b. Der OFFSET wird aus dem Basis/OFFSET-Register UN 1221 zum Addierer 1217 übertragen und dort der Verschiebung hinzugefügt.
c. Die Summe von OFFSET und Verschiebung, d.h. die relative Segmentadresse wird vom Addierer über den Datenselektor 1203 in ein Arbeitsregister übertragen.
d. Die Abfrage des Adressenassoziativspeichers wird zu Ende geführt; da angenommen wurde, daß der gewünschte Segmentdescriptor sich im Assoziatorpuffer 1226 befindet, liegt seine Segmentnummer im Adressassoziativspeicher 1222 und ein tibereinst immungs zustand (Treffer) ist gegeben.
509827/0585
e. Der Inhalt des Adressassoziator-Speicherplatzes, in welchem die Übereinstimmung auftrat, wird dem Trefferdecoder 1223 zugeleitet, welcher seinerseits den geeigneten Assoziatorpuffer-Speicherplatz zum Ausspeichern auswählt.
f. Die Segmentdescriptorbasis wird in das Basis/OFFSET-Register UN 1221 übertragen und das Grenzfeld in das UL Grenzregister 1227.
Am Ende des 2. Zyklus ergibt sich folgender Zustand:
1. Die relative Segmentadresse liegt in einem Arbeitsregister.
2. Die Segmentdescriptorbasis befindet sich im Basis/OFFSET-Register.
3. Die Grenze, d.h. die Adresse über welche die absolute Adresse nicht hinausgehen kann, liegt im Grenzregister.
Zyklus 3 (Hardware-Status gemäß Figur 12D)
a. Das die relative Segmentadresse SRA enthaltende Arbeitsregister wird vom UK-Register 1211 ausgewählt und die relative Segmentadresse über den USB-Selektor 1215 dem Addierer 1219 zugeleitet.
b. Die Segmentdescriptorbasis wird vom Basis/OFFSET-Register UN 1221 ebenfalls dem Addierer 1219 zugeleitet und dort der relativen Segmentadresse hinzugefügt, wodurch die absolute Adresse entsteht.
c. Die absolute Adresse wird in das UA Register 1220 übertragen. Am Ende des 3. Zyklus ergibt sich somit folgender Zustand:
1. Die absolute Adresse liegt im UA-Register 1220.
2. Die Grenze für die Adresse befindet sich UL-Grenzregister 1227.
Zyklus 4(Hardware-Status gemäß Figur 12E)
a. Die absolute Adresse wird an die nicht dargestellte Hauptspeicher-Schnittstelleneinheit MIU und den Grenzüberprüfer ULC 1229 weitergegeben;Der Hauptspeicher-Schnittstellenzyklus beginnt.
509827/0585
b. Die Grenzinformation im Grenzregister 1227 wird dem Grenzüberprüfer 1129 zugeführt und dort mit der absoluten Adresse verglichen. Überschreitet die Adresse den Grenzwert, d.h. der Inhalt UA>UL, so erscheint ein Obergrenzen-Prüfsignal und der Hauptspeicher-Schnittstellenzyklus gemäß (a) wird abgebrochen. Ein solcher Zyklus beginnt in Erwartung einer gültigen Adresse bereits vor Abschluß der Grenzüberprüfung. Da mehrere Zyklen für den Speicherzugriff erforderlich sind, kann die Operation leicht abgebrochen werden, ehe Daten zerstört werden. Der Abbruch des Schnittstellenzyklus erfolgt durch Umwandlung in eine Leseoperation, wodurch Änderungen der gespeicherten Daten verhindert werden.
Die Erfindung zeigt somit ein Adressierverfahren, bei welchem der direkte Zugriff entweder in Höhe einem einzelnen Prozeß zugeordneter Segmente, oder in der Ebene der von mehreren Prozessen einer Prozeßgruppe gemeinsam benutzten Segmente oder schließlich bei den von allen Prozessen benutzten Segmenten erfolgt. Die Adressierung bei gleichzeitiger Benutzung mehrerer Prozesse erfolgt durch indirekten Zugriff.
Wesentliches Element für die Adressierung ist das Segment, wobei ein Adressenraum für den Prozeß definiert und als Teil der gesteuerten Information des logischen Prozessors eingeschlossen ist. Der Adressenraum definiert eine vorgegebene Anzahl unterschiedlicher Segmente, in welchen Befehle Operanden erreichen können. Innerhalb eines Segments wird der Zugriff durch relative Anwahl des Segmentanfangs bewerkstellig und das Segment während der Adressenbildung berechnet. Jeder Versuch, Information oberhalb einer Segmentgrenze zu erreichen, wird durch die Hardware festgestellt und ein Ausnahmesignal erscheint. Ein Befehl kann einen Operanden entweder direkt oder indirekt über einen Datendescriptor erreichen, wobei eine Adressilbe im Befehl als Bezugnahme dient und angibt, ob die Bezugnahme direkt oder indirekt sein soll. Die Adressensilbe bezeichnet ein Basisregister, das das anzuwählende Segment bestimmt sowie einen OFFSET innerhalb des Segments. Die Adressensilbe enthält ferner eine Verschiebung
50 9 8 27/0585
gegenüber dieser genannten Basis. Die Hardware zur Adressenbildung erhält die absolute Adresse vom Beginn des Segments, fügt zu dieser den in den Basisregistern bestimmten OFFSET, die durch den Befehl definierte Verschiebung und erforderlichenfalls den Inhalt eines Indexregisters hinzu, so daß durch diese Summierung die gewünschte absolute Adresse entsteht.
509827/0585
Begriffsliste
Job Der Job ist die Hauptarbeitseinheit bei
Stapelverarbeitung. Er dient der Beschreibung, Planung und Abrechnung der Arbeit, welche der Benutzer durchführen läßt.
Job-Schritt Eine kleiner Einheit bei Stapelverarbeitung. Sie
bezeichnet im allgemeinen einen Schritt, welcher in der Verarbeitung logisch zusammenhängender Vorgänge besteht.
Programm
Prozessgruppe
Prozess
Prozedur
Logischer
Prozess
Die kleinste Einheit der vom Benutzer bestimmten Arbeit. Innerhalb dieser Arbeitseinheit ist keine für den Benutzer sichtbare Gleichzeitigkeit von Operationen zulässig.
Eine Gruppe von einem Programmierer geschriebener Algorithmen, welche die zur Durchführung eines Jobs oder eines Teils hiervon erforderlichen Prozedurinformationen liefert.
Eine Gruppe zusammengehöriger Prozesse, üblicherweise diejenigen, welche zur Durchführung eines Job-Schrittes erforderlich sind.
Die gesteuerte Durchführung von Befehlen ohne Gleichzeitigkeit. Ihre physikalische Darstellung und Steuerung werden durch die interne Systemausbildung oder durch Konvention bestimmt.
Eine benannte Software-Funktion oder ein Algorithmus, welcher von einem Rechner ohne Gleichzeitigkeit durchführbar ist. Ihre physikalische Darstellung und Durchführung wird durch das interne System oder eine Konvention bestimmt.
Eine Sammlung von Hardware-Quellen und Steuerinformationen für die Durchführung eines Prozesses.
Adressenraum Die Gruppe derjenigen logischen Adressen, welche die (Segmentie- Zentraleinheit CPU während eines bestimmten Prozes-
ses in absolute Adressen umformen kann. Obwohl ein Prozessor die technische Möglichkeit der Adressie- " rung jeder einzelnen Zelle eines Speichers hat, ist es erwünscht, den Zugriff auf jene Zellen zu be- · schränken, welche während der Durchführung des dem Prozessor zugeordneten Prozesses benutzt werden.
509 8 2 7/058 5
Logische Adresse Ein Element des Prozessadressenraums, beispielsweise die Segmentnummer SEG und die Verschiebung D.
Basisadressen- Eine Hardware-Prozedur, die aufgrund einer Anentwicklung zahl von Adressenelementen eine absolute Adresse
berechnet, die auf einen Byte-Speicherplatz im
Kernspeicher hinweist.
Prozess-Steuer- Jedem Prozess ist ein Prozess-Steuerblock PCB block zugeordnet. Er enthält die für den zugehörigen
Prozess erforderlichen Informationen einschließlich der die für den Prozeß zugängigen Segmenttabellen bestimmenden Tabellen.
J.. P.-Tabellen Eine Sammlung logischer Adressen für die Feststellung eines einem Prozeß zugeordneten Prozeßsteuerblocks. >
509827/0585

Claims (10)

  1. 2459ÜQ6
    Patentansprüche
    (\J) Verfahren zum Bilden einer absoluten Adresse zu einem Operanden in einem Speicher, der' in eine Vielzahl von Segmenten unterschiedlicher Größe unterteilt ist, dadurch gekennz e, i chne t, daß ein das betreffende Segment sowie den Offset im Segment bestimmendes Basisregister durch eine zugleich die Verschiebung gegenüber dieser Basis bezeichnende AdresSilbe des Befehls ausgewählt wird und eine Adressenentwicklungseinrichtung die absolute Adresse des Operanden durch Anhängen des Offsets im Basisregister, der vom Befehl definierten Verschiebung und gegebenenfalls des Inhalts eines Indexregisters an die absolute Adresse des Segmentanfangs entwickelt.
  2. 2. Einrichtung zur Durchführung des Verfahrens nach Anspruch 1, insbesondere zur Entwicklung der absoluten Adresse eines direkt adressierbaren Operanden, gekennzeichnet durch
    (a) einen ersten Speicher für eine Vielzahl erster Adressen, welche Art und Lage der Segmente innerhalb des Speichers bestimmen;
    (b) einen zweiten Speicher für eine Vielzahl zweiter Adressen, welche die Segmente identifizieren und die Lage der Operanden innerhalb der Segmente bezeichnen;
    (c) eine an den zweiten Speicher angeschlossene Auswahlvorrichtung für eine der zweiten Adressen;
    50982 7/05 8 5
    (d) einen an die beiden Speicher und die Auswahlvorrichtung angeschlossenen Vergleicher, welcher das Segment der ausgewählten zweiten Adresse mit einem der Segmente der ersten Adressen vergleicht; und
    (e) einen an die beiden Speicher und die Auswahlvorrichtung angeschlossenen und durch den Vergleicher gesteuerten Addierer, der die ausgewählte zweite Adresse an diejenige erste Adresse anfügt, deren Segment mit demjenigen der ausgewählten zweiten Adresse übereinstimmt.
  3. 3. Einrichtung nach Anspruch 2,dadurch gekennzeichnet, daß an den Addierer ein dritter Speicher für die Speicherung einer dritten Adresse !angeschlossen ist, welche die Adresse eines ausgewählten Bytes innerhalb des ausgewählten Operanden bezogen auf das erste Byte des Operanden darstellt, und daß der Addierer zur Bildung der absoluten Adresse eines Bytes innerhalb des ausgewählten Operanden die dritte Adresse an die erste und die zweite Adresse anhängt.
  4. 4. Einrichtung nach Anspruch 3, dadurch gekennzeichnet, daß im ersten Speicher den Segmenten jeder der ersten Adressen zugeordnete Grenzwerte der absoluten Adresse gespeichert sind, welche die Adresse angeben, über welche die absolute Adresse des zugeordneten Segments nicht hinausgehen kann, und daß an den ersten Speicher und den Addierer ein zweiter Vergleicher angeschlossen ist, welcher die absolute Adresse des ausgewählten Operanden mit dem Absolutadressen-Grenzwert desjenigen Segments vergleicht, in dem der ausgewählte Operand liegt.
  5. 5. Einrichtung nach Anspruch 4,dadurch gekennzeichnet, daß an den zweiten Vergleicher eine die Adressierung des ausgewählten Operanden dann verhindernde Einrichtung angeschlossen ist, wenn die absolute Adresse des ausgewählten Operanden größer ist als der Absolutadressen-Grenzwert des ausgewählten Segments.
    509827/0585
  6. 6. Einrichtung zur Durchführung des Verfahrens nach Anspruch 1, insbesondere zur Entwicklung der absoluten Adresse eines indirekt adressierbaren Operanden, gekennzeichnet durch
    (a) einen ersten Speicher für eine Vielzahl von Segmentdescriptoren, von denen jeder jeweils einem vorgewählten Segment aus einer Vielzahl von Segmenten zugeordnet ist und eine Basisadresse des zugeordneten Segments im Speicherraum enthält;
    (b) einen an den ersten Speicher angeschlossenen zweiten Speicher für eine Vielzahl von Segmentnummern, von denen je eine je einem der vorgewählten Segmente entspricht, deren zugehöriger Segmentdescriptor sich im ersten Speicher befindet;
    (c) einen dritten Speicher für die Segmentnummern des ausgewählten Segments im Speicherraum;
    (d) einen an den zweiten und den dritten Speicher angeschlossenen Vergleicher, der die Segmentnummer im dritten Speicher mit einer der Segmentnummern im zweiten Speicher vergleicht;
    (e) einen vierten Speicher für eine Offset-Adresse des ausgewählten Operanden innerhalb des ausgewählten Segments im Speicheradressraum;
    (f) einen an den Vergleicher angeschlossenen fünften Speicher für die Basisadresse eines ausgewählten Segments aus den vorgewählten Segmenten, wobei die Basisadresse sich in demjenigen Descriptor im ersten Speicher befindet, dessen zugehörige Segmentnummer mit einer der Segmentnummern im dritten Speicher übereinstimmt; und
    (g) einen an den vierten und den fünften Speicher angeschlossenen und durch den Vergleicher gesteuerten Addierer, wel-. eher zur Erzeugung der absoluten Adresse des ausgewählten Operanden die Offset-Adresse im vierten Speicher zur Basisadresse im fünften Speicher hinzufügt.
    509827/0585
  7. 7. Einrichtung nach Anspruch 6,dadurch gekennzeichnet, daß an den Addierer ein sechster Speicher für eine die auf das erste Byte des Operanden bezogene Adresse eines ausgewählten Bytes im Operanden darstellende Verschiebungsadresse des ausgewählten Operanden angeschlossen ist und der Addierer zur Erzeugung der absoluten Adresse eines Bytes innerhalb des genannten Operanden die Verschiebungsadresse der Basis- und Offset-Adresse hinzufügt.
  8. 8. Einrichtung nach Anspruch 7,dadurch gekennzeichnet, daß jeder der im ersten Speicher abgelegten Segmentdescriptoren ein Maximaladressen-Grenzwertfeld umfaßt, welches die obere Grenzadresse eines dem im ersten Speicher abgelegten Segmentdescriptors entsprechenden Segments bestimmt und daß an den ersten Speicher angeschlossener sechster Speicher den Adressengrenzwert des ausgewählten Segments speichert.
  9. 9. Einrichtung nach Anspruch 8,dadurch gekennzeichnet, daß an den Addierer und den sechsten Speicher ein zweiter Vergleicher angeschlossen ist, der die absolute Adresse des ausgewählten Operanden mit dem Adressengrenzwert des ausgewählten Segments vergleicht.
  10. 10. Einrichtung nach Anspruch 9,dadurch gekennzeichnet, daß an den zweiten Vergleicher eine die Adressierung des ausgewählten Operanden dann verhindernde Sperreinrichtung angeschlossen ist, wenn die absolute Adresse des ausgewählten Operanden größer ist als der Adressengrenzwert des ausgewählten Segments.
    509827/05 8 5
DE2459006A 1973-12-17 1974-12-13 Einrichtung zum Bilden einer absoluten Adresse in einer Datenverarbeitunsanlage Expired DE2459006C2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US05/425,356 US3938096A (en) 1973-12-17 1973-12-17 Apparatus for developing an address of a segment within main memory and an absolute address of an operand within the segment

Publications (2)

Publication Number Publication Date
DE2459006A1 true DE2459006A1 (de) 1975-07-03
DE2459006C2 DE2459006C2 (de) 1986-02-13

Family

ID=23686198

Family Applications (1)

Application Number Title Priority Date Filing Date
DE2459006A Expired DE2459006C2 (de) 1973-12-17 1974-12-13 Einrichtung zum Bilden einer absoluten Adresse in einer Datenverarbeitunsanlage

Country Status (8)

Country Link
US (1) US3938096A (de)
JP (1) JPS5757781B2 (de)
BE (1) BE823436A (de)
CA (1) CA1037158A (de)
DE (1) DE2459006C2 (de)
FR (2) FR2254827B1 (de)
GB (1) GB1492067A (de)
IT (1) IT1024461B (de)

Families Citing this family (67)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2230258A5 (de) * 1973-05-16 1974-12-13 Honeywell Bull Soc Ind
FR2253421A5 (de) * 1973-11-30 1975-06-27 Honeywell Bull Soc Ind
US4300192A (en) * 1974-04-18 1981-11-10 Honeywell Information Systems Inc. Method and means for storing and accessing information in a shared access multiprogrammed data processing system
JPS5148937A (en) * 1974-10-25 1976-04-27 Fujitsu Ltd Kiokusochi niokeru junjoseigyohoshiki
JPS5171648A (de) * 1974-12-18 1976-06-21 Panafacom Ltd
US4025901A (en) * 1975-06-19 1977-05-24 Honeywell Information Systems, Inc. Database instruction find owner
CA1074022A (en) * 1975-06-19 1980-03-18 Charles W. Bachman Digital computer
US4024508A (en) * 1975-06-19 1977-05-17 Honeywell Information Systems, Inc. Database instruction find serial
US4042912A (en) * 1975-06-19 1977-08-16 Honeywell Information Systems Inc. Database set condition test instruction
US4044334A (en) * 1975-06-19 1977-08-23 Honeywell Information Systems, Inc. Database instruction unload
JPS6020767B2 (ja) * 1975-06-24 1985-05-23 日本電気株式会社 情報探索機能を有する電子計算機
US4173783A (en) * 1975-06-30 1979-11-06 Honeywell Information Systems, Inc. Method of accessing paged memory by an input-output unit
US4079451A (en) * 1976-04-07 1978-03-14 Honeywell Information Systems Inc. Word, byte and bit indexed addressing in a data processing system
US4042911A (en) * 1976-04-30 1977-08-16 International Business Machines Corporation Outer and asynchronous storage extension system
US4079453A (en) * 1976-08-20 1978-03-14 Honeywell Information Systems Inc. Method and apparatus to test address formulation in an advanced computer system
US4092715A (en) * 1976-09-22 1978-05-30 Honeywell Information Systems Inc. Input-output unit having extended addressing capability
US4084226A (en) * 1976-09-24 1978-04-11 Sperry Rand Corporation Virtual address translator
JPS5815814B2 (ja) * 1976-11-05 1983-03-28 横河電機株式会社 マルチプロセサ方式のデ−タ処理装置
US4093986A (en) * 1976-12-27 1978-06-06 International Business Machines Corporation Address translation with storage protection
JPS5464933A (en) * 1977-11-01 1979-05-25 Panafacom Ltd Main storage extension system
GB2008821B (en) * 1977-11-04 1982-01-13 Sperry Rand Corp Digital computers
US4363091A (en) * 1978-01-31 1982-12-07 Intel Corporation Extended address, single and multiple bit microprocessor
US4340932A (en) * 1978-05-17 1982-07-20 Harris Corporation Dual mapping memory expansion unit
NL7807314A (nl) * 1978-07-06 1980-01-08 Philips Nv Inrichting voor het vergroten van de lengte van een logisch computeradres.
US4218743A (en) * 1978-07-17 1980-08-19 International Business Machines Corporation Address translation apparatus
US4388685A (en) * 1978-08-04 1983-06-14 Digital Equipment Corporation Central processor with apparatus for extended virtual addressing
US4215402A (en) * 1978-10-23 1980-07-29 International Business Machines Corporation Hash index table hash generator apparatus
US4251860A (en) * 1978-10-23 1981-02-17 International Business Machines Corporation Virtual addressing apparatus employing separate data paths for segment and offset portions of a virtual address and utilizing only the offset portion to calculate virtual address
FR2445989B1 (fr) * 1979-01-02 1987-06-26 Honeywell Inf Systems Dispositif de determination de priorite et d'interruption d'un systeme de traitement de donnees
US4255786A (en) * 1979-01-02 1981-03-10 Honeywell Information Systems Inc. Multi-way vectored interrupt capability
US4290104A (en) * 1979-01-02 1981-09-15 Honeywell Information Systems Inc. Computer system having a paging apparatus for mapping virtual addresses to real addresses for a memory of a multiline communications controller
FR2445988A1 (fr) * 1979-01-02 1980-08-01 Honeywell Inf Systems Dispositif d'adressage perfectionne d'un systeme de traitement de donnees
US4507781A (en) * 1980-03-14 1985-03-26 Ibm Corporation Time domain multiple access broadcasting, multipoint, and conferencing communication apparatus and method
US4355355A (en) * 1980-03-19 1982-10-19 International Business Machines Corp. Address generating mechanism for multiple virtual spaces
DE3177242D1 (de) * 1980-04-25 1991-04-11 Data General Corp Datenverarbeitungssystem.
JPS6017130B2 (ja) * 1980-06-06 1985-05-01 日本電気株式会社 アドレス制御装置
JPS5734251A (en) * 1980-08-07 1982-02-24 Toshiba Corp Address conversion and generating system
JPS5750052A (en) * 1980-09-09 1982-03-24 Toshiba Corp Address extension system
US4521846A (en) * 1981-02-20 1985-06-04 International Business Machines Corporation Mechanism for accessing multiple virtual address spaces
US4574349A (en) * 1981-03-30 1986-03-04 International Business Machines Corp. Apparatus for addressing a larger number of instruction addressable central processor registers than can be identified by a program instruction
US4432053A (en) * 1981-06-29 1984-02-14 Burroughs Corporation Address generating apparatus and method
US4453212A (en) * 1981-07-13 1984-06-05 Burroughs Corporation Extended address generating apparatus and method
US4428045A (en) 1981-09-11 1984-01-24 Data General Corporation Apparatus for specifying and resolving addresses of operands in a digital data processing system
US4594682A (en) * 1982-12-22 1986-06-10 Ibm Corporation Vector processing
US4607346A (en) * 1983-03-28 1986-08-19 International Business Machines Corporation Apparatus and method for placing data on a partitioned direct access storage device
JPS6051957A (ja) * 1983-08-31 1985-03-23 Toshiba Corp マイクロプロセツサシステム
DE3470242D1 (en) * 1983-10-05 1988-05-05 Nippon Musical Instruments Mfg Data processing circuit for digital audio system
US4757438A (en) * 1984-07-12 1988-07-12 Texas Instruments Incorporated Computer system enabling automatic memory management operations
US4984151A (en) * 1985-03-01 1991-01-08 Advanced Micro Devices, Inc. Flexible, next-address generation microprogram sequencer
US4972338A (en) * 1985-06-13 1990-11-20 Intel Corporation Memory management for microprocessor system
US5218713A (en) * 1985-06-17 1993-06-08 International Business Machines Corporation Distributed data management mechanism for handling a data stream
US5056003A (en) * 1985-06-17 1991-10-08 International Business Machines Corporation Distributed data management mechanism
JPH0658649B2 (ja) * 1985-10-28 1994-08-03 株式会社日立製作所 仮想記憶装置における領域管理方法
US5561429A (en) * 1986-04-16 1996-10-01 Raytheon Company Content limit addressable memory
US5053951A (en) * 1986-12-23 1991-10-01 Bull Hn Information Systems Inc. Segment descriptor unit for performing static and dynamic address translation operations
KR0120930B1 (ko) * 1987-12-01 1997-10-29 미다 가쓰시게 실행어드레스의 계산방법 및 통신제어장치
US5418965A (en) * 1988-06-24 1995-05-23 Mahar; Robert C. Subroutine-type computer program for enhancing the speed of data processing in data management programs systems
JPH0289132A (ja) * 1988-09-26 1990-03-29 Nec Corp 論理アドレス生成方式
EP0429733B1 (de) * 1989-11-17 1999-04-28 Texas Instruments Incorporated Multiprozessor mit Koordinatenschalter zwischen Prozessoren und Speichern
JP2536651B2 (ja) * 1990-02-21 1996-09-18 日本電気株式会社 例外アドレスバッファ管理方式
US5313606A (en) * 1991-01-17 1994-05-17 Chips And Technologies, Inc. System for detecting boundary cross-over of instruction memory space using reduced number of address bits
DE69325207T2 (de) * 1992-06-15 1999-12-09 Koninklijke Philips Electronics N.V., Eindhoven Prozessor zur Verarbeitung zeitdiskreter Signale
US5890222A (en) * 1995-01-04 1999-03-30 International Business Machines Corporation Method and system for addressing registers in a data processing unit in an indirect addressing mode
US5845296A (en) * 1996-07-10 1998-12-01 Oracle Corporation Method and apparatus for implementing segmented arrays in a database
US7599753B2 (en) * 2000-09-23 2009-10-06 Microsoft Corporation Systems and methods for running priority-based application threads on a realtime component
JP2008165589A (ja) * 2006-12-28 2008-07-17 Fujitsu Ltd 情報処理装置
TWI421685B (zh) * 2007-10-16 2014-01-01 Mstar Semiconductor Inc 記憶裝置之定址裝置及方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE2217565A1 (de) * 1971-04-13 1972-12-14 Sperry Rand Corp Steuerteil eines Rechenautomaten, der die relative Basisadresse von Befehlen bildet

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3685020A (en) * 1970-05-25 1972-08-15 Cogar Corp Compound and multilevel memories
US3699533A (en) * 1970-10-29 1972-10-17 Rca Corp Memory system including buffer memories
US3701984A (en) * 1971-03-05 1972-10-31 Rca Corp Memory subsystem array
US3693165A (en) * 1971-06-29 1972-09-19 Ibm Parallel addressing of a storage hierarchy in a data processing system using virtual addressing
US3764996A (en) * 1971-12-23 1973-10-09 Ibm Storage control and address translation
US3800286A (en) * 1972-08-24 1974-03-26 Honeywell Inf Systems Address development technique utilizing a content addressable memory

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE2217565A1 (de) * 1971-04-13 1972-12-14 Sperry Rand Corp Steuerteil eines Rechenautomaten, der die relative Basisadresse von Befehlen bildet
US3731283A (en) * 1971-04-13 1973-05-01 L Carlson Digital computer incorporating base relative addressing of instructions

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
DE-Z "Elektronische Rechenanlagen" 12, 1970, Heft 1, S. 26-35 *

Also Published As

Publication number Publication date
DE2459006C2 (de) 1986-02-13
AU7640474A (en) 1976-06-17
FR2254827A1 (de) 1975-07-11
CA1037158A (en) 1978-08-22
US3938096A (en) 1976-02-10
BE823436A (fr) 1975-04-16
FR122199A (de)
FR2254827B1 (de) 1978-06-23
GB1492067A (en) 1977-11-16
JPS5093343A (de) 1975-07-25
IT1024461B (it) 1978-06-20
JPS5757781B2 (de) 1982-12-06

Similar Documents

Publication Publication Date Title
DE2459006A1 (de) Verfahren und einrichtung zur entwicklung absoluter adressen bei segmentadressierung
DE4410060B4 (de) Übersetzungsvorrichtung zum Umsetzen einer virtuellen Speicheradresse in eine physikalische Speicheradresse
DE69427625T2 (de) Adressübersetzungsmechanismus für Rechnersystem mit virtuellen Speicher, der eine Vielzahl von Seitengrössen unterstützt
DE2423194C2 (de) Vorrichtung zum Berechnen einer absoluten Hauptspeicheradresse in einer Datenverarbeitungsanlage
EP1393184B1 (de) Vorrichtung und verfahren zum ermitteln einer physikalischen adresse aus einer virtuellen adresse unter verwendung einer hierarchischen abbildungsvorschrift mit komprimierten knoten
DE69231611T2 (de) Verfahren zu grosser logischer Adressierung
DE3833933C2 (de) Informationsverarbeitungseinrichtung mit einer Adressenerweiterungsfunktion
DE69028269T2 (de) Virtuelles Adressierungsverfahren zum Betrieb eines Speichers in einer Datenverarbeitungsanlage und Einrichtung zur Ausführung besagten Verfahrens
DE69738101T2 (de) Verwaltung des Zugangs zu Objekten mit Hilfe von Referenzen mit drei Zuständen
DE3131204A1 (de) Adressumrechnungs- und generatoranordnung
DE2458300A1 (de) Datenverarbeitungssystem zur verarbeitung verschiedener datenformate
DE3805107A1 (de) Verfahren und vorrichtung zur steuerung virtueller adressraeume eines virtuellen speichers
DE2725718A1 (de) Verarbeitungssystem mit mehreren virtuellen adressenraeumen
WO1994027222A1 (de) Verfahren zum umsetzen einer virtuellen speicheradresse mit einer ersten länge in eine realadresse mit einer zweiten länge
DE10002120A1 (de) Logikstruktur eines Adressumsetzpuffers
DE69522426T2 (de) Wort-Wiederauffindungsapparat für ein Wörterbuch
DE2054947A1 (de) Adressenvorbereitungseinnchtung und verfahren und Speicherzugnffan forderungseinnchtung fur ein Infor mationsver arbeitungssystem
DE69432064T2 (de) Dateidaten-Speicherung auf Festplatte in vielfacher Darstellung
EP1639475B1 (de) Prozessorarchitektur für exakte zeigeridentifizierung
DE3689217T2 (de) Datenverarbeitungseinrichtung mit einer Schaltung zur Prüfung der Adressgrenzen in einem virtuellen Speicher.
DE2458286A1 (de) Datenverarbeitungssystem zum verschieben von datenfeldern mit verschiedenen strukturen
DE3518818A1 (de) Datenverarbeitungsvorrichtung und verfahren und vorrichtung zur umsetzung von datenelementen
DE68925376T2 (de) In Direktabbildung und in Bankabbildung wirksamer Informationsprozessor und Verfahren zum Schalten der Abbildungsschemas
DE69229424T2 (de) Adressengeneration in einer Datenverarbeitungseinheit
DE2458259A1 (de) Datenverarbeitungssystem zum vergleichen verschiedener datenstrukturen

Legal Events

Date Code Title Description
8110 Request for examination paragraph 44
8125 Change of the main classification

Ipc: G06F 9/36

D2 Grant after examination
8364 No opposition during term of opposition
8327 Change in the person/name/address of the patent owner

Owner name: HONEYWELL BULL INC., MINNEAPOLIS, MINN., US

8339 Ceased/non-payment of the annual fee