DE2459006A1 - Verfahren und einrichtung zur entwicklung absoluter adressen bei segmentadressierung - Google Patents
Verfahren und einrichtung zur entwicklung absoluter adressen bei segmentadressierungInfo
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/342—Extension of operand address space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0292—User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0615—Address space extension
- G06F12/0623—Address 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
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
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.
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.
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.
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
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)
- 2459ÜQ6Patentansprü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. 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. 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. 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. 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. 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. 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. 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. 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. 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
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)
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)
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)
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 |
-
0
- FR FR122199D patent/FR122199A/fr active Active
-
1973
- 1973-12-17 US US05/425,356 patent/US3938096A/en not_active Expired - Lifetime
-
1974
- 1974-12-13 CA CA215,950A patent/CA1037158A/en not_active Expired
- 1974-12-13 IT IT54557/74A patent/IT1024461B/it active
- 1974-12-13 DE DE2459006A patent/DE2459006C2/de not_active Expired
- 1974-12-16 FR FR7441411A patent/FR2254827B1/fr not_active Expired
- 1974-12-17 BE BE151572A patent/BE823436A/xx not_active IP Right Cessation
- 1974-12-17 GB GB54421/74A patent/GB1492067A/en not_active Expired
- 1974-12-17 JP JP49144179A patent/JPS5757781B2/ja not_active Expired
Patent Citations (2)
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)
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 |