DE2227882C2 - Virtuelle Speicheranordnung - Google Patents
Virtuelle SpeicheranordnungInfo
- Publication number
- DE2227882C2 DE2227882C2 DE2227882A DE2227882A DE2227882C2 DE 2227882 C2 DE2227882 C2 DE 2227882C2 DE 2227882 A DE2227882 A DE 2227882A DE 2227882 A DE2227882 A DE 2227882A DE 2227882 C2 DE2227882 C2 DE 2227882C2
- Authority
- DE
- Germany
- Prior art keywords
- address
- virtual
- bits
- memory
- data
- 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.)
- Expired
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1045—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
- G06F12/1054—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache the data cache being concurrently physically addressed
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Description
55
Die Erfindung betrifft eine virtuelle Speicheranordnung nach dem Oberbegriff des Patentanspruchs 1.
Speicheranordnungen mit Übersetzungstabellen zur Übersetzung von virtuellen in reale Adressen sind aus ω
den US-Patentschriften 32 17 298 und 33 17 898 bekannt.
In Datenverarbeitungsanlagen, in denen zugleich mehrere Programme, sei es in einem einzigen Prozessor
oder in einem Multiprozessorsystem, verarbeitet wer- b5
den, wird zumindest ein für alle Programme gemeinsamer Speicher benutzt. Durch die Vielzahl der Programme
jedoch muß die Speicherkapazität dieses Speichers sehr groß gewählt werden, so daß oft der in der
Datenverarbeitungsanlage vorhandene Hauptspeicher in seiner Kapazität nicht mehr ausreicht In einem
solchen Falle werden die Daten z. B. in einem externen
Großraumspeicher untergebracht und zur Adressierung des Hauptspeichers die Adressen des externen Speichers.
d.h. die virtuellen Adressen des virtueilen Speichers benutzt. Hierbei wird der virtuelle Speicherraum
in einzelne Segmente aufgeteilt, wobei jedes Segment seinerseits wiederum in mehrere Seiten
aufgeteilt wird. In jeder Seite kann eine bestimmte Anzahl von Datenbytes gespeichert werden. Die
Zuteilung von Hauptspeicherbereichen kann dabei in Ausmaßen einer oder mehrerer Seiten erfolgen, wobei
zu den einzelnen Programmen bestimmte Seiten vorgesehen werden. Hierbei sind die Datenseiten also
willkürlich im Hauptspeicherraum verteilt und muß bei Bedarf eine Übertragung von benötigten Seiten in den
Hauptspeicher und von nicht mehr benötigten Seiten aus dem Hauptspeicher erfolgen. Da die Seiten
willkürlich im Hauptspeicherraum verteilt sind, müßten Tabellen vorgesehen werden, in denen zu jeder Seite die
Hauptspeicherstelle gespeichert wird, an der z. B. die Seite beginnt. Eine bestimmte Seitentabelle speichert
dabei z. B. die realen Hauptspeicher-Seitenadressen der Seiten eines Segments. Die Seitentabellen werden dabei
im Hauptspeicher untergebracht, wodurch eine weitere Segmenttabelle nötig wird, welche angibt, an welchen
Hauptspeicherstellen die Seitentabellen gespeichert sind. Bei der Adressierung eines Datenbytes durch eine
virtuelle Adresse muß also eine Übersetzung der virtuellen Adresse in die reale Hauptspeicheradresse
durch Verwendung der Seiten- und Segmenttabellen erfolgen.
Um die Geschwindigkeit der Speicherzugriffe zu erhöhen, sind in modernen Datenverarbeitungsanlagen
zusätzlich zum Hauptspeicher noch Pufferspeicher, auch Arbeitsspeicher genannt, vorgesehen. Wenn von
der Zentraleinheit Daten angefordert werden, wird zunächst geprüft, ob die betreffenden Daten im
Pufferspeicher vorhanden sind und gegebenenfalls werden die Daten direkt aus dem Pufferspeicher
ausgelesen. Wenn es sich um das Einspeichern von Daten handelt, werden die Daten sowohl im Pufferspeicher
als auch im Hauptspeicher gespeichert. Wenn die gewünschten Daten nicht im Pufferspeicher vorhanden
sind, muß ein Hauptspeicherzugriff durchgeführt werden. Hierbei können die abgelesenen Daten zugleich
auch im Pufferspeicher gespeichert werden. Wenn es sich um das Einspeichern von Daten handelt, werden die
betreffenden Daten normalerweise nur im Hauptspeicher gespeichert. Bei Datenanforderungen von einem
Kanal aus ist normalerweise der Pufferspeicher nicht betroffen. Es wird ein Hauptspeicherzugriff durchgeführt
und die Daten werden dem betreffenden Kanal zur Verfugung gestellt. Wenn es sich jedoch um das
Einschreiben von Daten handelt, muß überprüft werden, ob zur adressierten Speicherstelle schon Daten im
Pufferspeicher gespeichert sind. Gegebenenfalls müssen dann diese Daten sowohl im Hauptspeicher als auch im
Pufferspeicher gespeichert werden.
Der Pufferspeicher kann zur Adressierung in einen Adressenteil und einen Datentei! aufgeteilt sein. Der
Adressenteil enthält dabei Blockadressen für jeden im Datenteil gespeicherten Datenblock, wobei ein Datenblock
z. B. einer Datenseite entsprechen kann. In einer virtuellen Speicheranordnung liefert jedoch die Zentraleinheit
virtuelle Adressen, während vom Kanal reale
Datenadressen erhalten werden. Hierbei ergibt sich also die Notwendigkeit, zu bestimmen, ob zu der realen
Adresse, welche der angebotenen virtuellen Adresse entspricht. Daten im Pufferspeicher gespeichert sind.
Zur Lösung dieses Problems ist es prinzipiell möglich, auch den Pufferspeicher durch virtuelle Acressen und
nicht durch reale Adressen zu adressieren. Dies hätte den Vorteil, daß bei Zugriffsanforderungen von der
Zentraleinheit zum Pufferspeicher keine Adressenübersetzung notwendig wäre. Eine Verzögerung würde
jedoch dann auftreten, wenn eine Datenübertragung zwischen dar. Pufferspeicher und dem durch reale
Adressen adressierten Hauptspeicher notwendig wäre. Die genannte Lösung führt jedoch zu Unstimmigkeiten,
wenn zwei verschiedene virtuelle Adressen sich auf dieselbe reale Adresse beziehen. Der Pufferspeicher,
welcher durch virtuelle Adressen adressiert wird, speichert dann die Daten vom Hauptspeicher in
verschiedenen Speicherstellen für jede verschiedene virtuelle Adresse ab. Deshalb ist eine besondere
Überprüfungseinrichtung notwendig. Ein arideres Problem tritt auf, wenn Eintragungen in den Segment- oder
Seitentabellen gelöscht werden sollen. Auch bei der Verwendung von Speicherschutz-Schlüsselworten ergeben
sich Probleme, da diese Schlüsselworte normalerweise an reale Adressen angepaßt sind und bei jeder
Speicheranforderung von der Zentraleinheit geprüft werden müssen. Da die Zentraleinheit jedoch virtuelle
Adressen liefert, ergeben sich bei der Oberprüfung der Schlüsselworte Schwierigkeiten. m
Der Erfindung liegt daher die Aufgabe zugrunde, die Adressierungseinrichtungen der Nebentabelle und des
Verzeichnisses derart zu gestalten, daß die Datenübertragung zwischen dem Prozessor, dem Pufferspeicher
und dem Hauptspeicher einfacher und rascher erfolgt i=>
Die Lösung gelingt durch eine wie im Patentanspruch 1 gekennzeichnete Speicheranordnung.
Die Erfindung hat den Vorteil, daß bei notwendigen Datenübertragungen zwischen dem Hauptspeicher und
dem Pufferspeicher die reale Adresse bereits zur Verfügung steht, so daß kein Zeitverlust durch
Übersetzung entsteht.
Ein Ausführungsbeispiel der Erfindung soll nun anhand von Figuren näher beschrieben werden. Es zeigt
Fig.! das Format einer virtuellen Adresse,
F i g. 2 die schematische Darstellung der Übersetzung einer virtuellen Adresse in eine reale Adresse,
Fig.3 das Format von Segmenttabellen-Eintragungen
und Seitentabellen-Eintragungen,
Fig.4 ein Blockschema mit Einheiten einer bevorzugten
Ausführungsform der Erfindung,
F i g. 5 ein Zeitdiagramm, welches den zeitlichen Funktionsablauf der in Fig.4 gezeigten Einrichtung
angibt,
F i g. 6 das bevorzugte Format von Eint» agungen einer Übersetzungs-Nebentabelle, welcher Teil der
vorliegenden Erfindung ist,
F i g. 7 ein Blockschema, welches die Einrichtung nach der vorliegenden Erfindung mehr im einzelnen darstellt.
F i g. 1 zeigt das bevorzugte Format einer virtuellen Adresse. Die Adresse weist 24 Bits auf, welche in drei
Felder unterteilt sind: Ein Segmentfeld (SX) mit den Bits 8 bis 15, ein Seitenfeld (PX) mit den Bits 16 bis 20
und ein Bytefeld mit den Bits 21 bis 31. Mit einem solchen Adressenformat kann ein virtueller Speicher bi
von 256 Segmenten adressiert werden, worin jedes Segment bis zu 32 Seiten und jede Seite bis zu 2048
Bvtes enthalten kann. Natürlich ist auch eine andere Unterteilung der Adresse und eine andere Anordnung
der Felder möglich. Zum Beispiel- können für das Segmentfeld die Bits 8 bis 11, für das Seitenfeld die
Bits 12 bis 19 und für das Bytefeld die Bits 20 bis 31
vorgesehen werden. Der virtuelle Speicher würde dann aus 16 Segmenten bestehen, wobei jedes Segment bis zu
256 Selten und jede Seite bis zu 4096 Bytes enthalten kann. Die Bits 0 bis 7 werden im vorliegenden
Ausführungsbeispiel nicht verwendet, könnten jedoch wahlweise dazu dienen, einen größeren virtuellen
Speicher zu adressieren. Ein solcher Speicher würde über vier Milliarden Bytes aufweisen.
Das Segmentfeld dient als index und weist auf eine bestimmte Eintragung in der Segmenttabelle hin. Diese
Eintragung in der Segmenttabelle enthält eine Adressenangabe, weiche die Beginnadresse der mit dem
betreffenden Segment verbundenen Seitentabelle darstellt Das Seitenfeld der virtuellen Adresse weist auf
eine bestimmte Eintragung in der Seitentabelle hin. Diese Eintragung enthält die reale Adresse der Seite.
Das Bytefeld wird durch die Übersetzung nicht verändert und ergibt als niederwertige Bits zusammen
mit der als hochwertige Bits verwendeten gefundenen realen Seitenadresse die gesuchte reale Hauptspeicheradresse.
Adressenübersetzung
Die Adressenübersetzung soll nun in Zusammenhang mit Fig.2 näher erklärt werden. Die Übersetzung
erfolgt in zwei Stufen und verwendet Segmenttabellen und Seitentabellen im Hauptspeicher. Das Segmentfeld
(SX) der virtuellen Adresse wird zu einer Segmenttabellenbeginnadresse
(STO), welche in einem Steuerregister gespeichert ist, addiert und ergibt dann die Adresse
einer Speicherstelle 4 in der Segmenttabelle 6. Im Steuerregister ist außerdem die Länge (LTH) der
Segmenttabelle zu Prüfzwecken gespeichert.
Aus der adressierten Speicherstelle in der Segmenttabelle wird die Beginnadresse (PTO) einer Seitenadresse
ausgelesen, welche zum Seitenfeld der virtuellen Adresse addiert wird. Die gefundene Adresse wird zur
Adressierung einer Speicherstelle 8 in der Seitentabelle 10 verwendet. An der Speicherstelie 8 wird eine reale
Adresse ausgelesen, welches an das Bytefeld der virtuellen Adresse aneinandergereiht die reale Adresse
eines Bytes ergibt. Um nicht bei jedem Hauptspeicherzugriff eine solche Übersetzung in zwei Stufen
ausführen zu müssen, ist eine weitere Tabelle vorgesehen, in der das Segmentfeld und das Seitenfeld der
übersetzten virtuellen Adresse zusammen mit der entsprechenden durch die Übersetzung gefundenen
realen Adresse gespeichert wird. In dieser zusätzlichen Tabelle werden alle zuletzt verwendeten, d. h. aktuellen
Übersetzungsdaten gespeichert.
Zum Beginn einer jeden Übersetzung einer virtuellen Adresse in eine reale Adresse wird die zusätzliche
Tabelle überprüft, um festzustellen, ob nicht vielleicht die gesuchte Übersetzung, schon in der Tabelle
gespeichert ist. Wenn dies der Fall ist, wird die reale Adresse sogleich aus der Tabelle ausgelesen und mit
dem Bytefeld der virtuellen Adresse zusammengesetzt. Wenn die Adresse nicht in der Tabelle gefunden wird,
wird die oben beschriebene Übersetzung in zwei Stufen ausgeführt und werden die Übersetzungsdaten in der
Tabel'e abgespeichert.
Fig.3 zeigt ein bevorzugtes Format für Segmenttabelleneintragungen
4 und Seitentabelleneintragungen 8. Für jeden virtuellen Speicher, falls mehrere vorhanden
sind, ist eine Segmenttabelle mit entsprechenden Seitentabellen vorgesehen. Die Beginnadresse und
Länge der aktuellen Segmenttabelle wird im Steuerregister (Fig.2) gespeichert. Die Eintragungen 4 in der
Segmenttabelle weisen auch eine Längenangabe (LTH) > in den Bits 0 bis 3 auf, welche die Länge der
Seitentabelle in Inkrementen von 1At der maximalen
Größe angeben. Das Bit 31, das /-Bit, gibt die Gültigkeit der Information in der Segmenttabelle an. Wenn das
besetzt ist, kann die betreffende Eintragung nicht zur m Übersetzung benutzt werden. Die Seitentabelleneintragung
8 enthält in den Bitpositionen 0 bis 12 die höherwertigen 13 Bits der realen Speicheradresse. Die
niederwertigen realen Bits der virtuellen Adresse werden neben die höherwertigen Bits von der r>
Seitentabelle gesetzt und geben die Byteadresse, d. h. die relative Byte-Entfernung in der Seite an. Ebenso
wird zu jeder Seitentabelleneintragung ein Invaliditätsbit / gespeichert. Wenn dieses /Bit gesetzt ist, kann
diese Eintragung nicht zur Übersetzung benutzt werden.
Während die obenbeschriebene Übersetzung weitgehend bekannt ist, soll nun im nachfolgenden ein
Übersetzungsvorgang unter Benutzung einer Übersetzungs-Nebentabelle
und der Austausch von Seiten zwischen dem virtuellen Speicher und dem Hauptspeieher
beschrieben werden.
Fig.4 zeigt verschiedene Einrichtungen, welche einen solchen Übersetzungsvorgang unter Benutzung
einer Übersetzungs-Nebentabelle ausführen. Die virtuelle Adresse 12 wird von der Zentraleinheit geliefert und jo
dient zur Adressierung der Übersetzungsnebentabelle (TLAT)U und des Verzeichnisses PFR UT16. Die
Nebentabelle 14 enthält kürzlich übersetzte virtuelle Adressen und die entsprechenden realen Adressen,
während das Verzeichnis 16 die realen Adressen von Daten in Form einer Tabelle gespeichert hat, welche
gegenwärtig in dem zur Unterstützung des Hauptspeichers vorgesehenen schnellen Pufferspeicher gespeichert
sind. Bei den Tabellen 14 und 16 kann es sich z. B. um Assoziativspeicher handeln, welche ein assoziatives
Abfragen ermöglichen. Ebenso kann es sich bei diesen Tabellen um explizit durch Bits der virtuellen Adresse
adressierte Tabellen handeln. Im allgemeinen wird nur ein Teil der virtuellen Adresse dazu gebraucht werden,
die Übersetzungsnebentabelle 14 zu adressieren. Die dem restlichen Teil entsprechende virtuelle Adresse
wird von der Nebentabelle 14 ausgelesen und mit dem entsprechenden Teil in der von der Zentraleinheit
gelieferten Adresse 12 in einem Vergleicher 18 verglichen. Um sicherzustellen, daß die Daten, welche
sich gegenwärtig im Pufferspeicher befinden, auch die Daten sind, die von der virtuellen Adresse 12 gewünscht
werden, wird die von der Nebentabelle 14 ausgelesene reale Adresse mit der von dem Verzeichnis 16
ausgelesenen realen Adresse im Vergleicher 20 verglichen. Die Ausgangssignale der Vergleicher 18 und
20 speisen die Eingänge eines UND-Gliedes 22, welches ein Signal an seinem Ausgang 24 erzeugt, wenn sich die
gewünschten Daten im Pufferspeicher befinden. Die betreffenden Teile der virtuellen Adresse und der realen f>o
Adresse werden über die Leitungen 26 und 28 zum Pufferspeicheradressenregister 30 gesendet, so daß nun
ein Zugriff zum Pufferspeicher durchgefiährt werden kann. Wenn In der Nebentabelle 14 eine reale Adresse
gespeichert ist, welche der angebotenen virtuellen *>■>
Adresse 12 entspricht jedoch die gewünschten Daten nicht im Pufferspeicher vorhanden sind, spricht ein
UND-Glied 34 an, da das fehlende Ausgängssignal des Vergleichers 20 nach seiner Umkehrung im Inverter 32
zusammen mit dem Ausgangssignal vom Vergleicher 18 die beiden Eingänge des UND-Gliedes 34 speist. Das
UND-Glied 34 erzeugt auf der Leitung 36 ein Signal, welches angibt, daß ein Zugriff zum Hauptspeicher
durchgeführt werden muß.
Wenn zu der angebotenen virtuellen Adresse 12 keine gleiche virtuelle Adresse in der Nebentabelle 14
gefunden wird, erzeugt der Vergleicher 8 kein Signal, wodurch am Ausgang des Gliedes 38 ein Signal auf der
Leitung 40 entsteht, welches anzeigt, daß ein Übersetzungsprozeß, wie er in F i g. 2 dargestellt ist, durchgeführt
werden muß. Die Adressierung der einzelnen Speicher sowie das Durchführen einer Übersetzung
nach F i g. 2 brauchen jedoch hier nicht näher beschrieben zu werden.
F i g. 5 zeigt in einer übersichtlichen Form die von der Einrichtung nach F i g. 4 durchgeführten Funktionen.
Aus Fig.5 ist auch ersichtlich, welche Operationen nacheinander und welche gleichzeitig durchgeführt
werden. Die von der Zentraleinheit gelieferte Adresse VA adressiert parallel die Übersetzungsnebentabelle
TLATund das Verzeichnis PFR-UT. Hierauf wird zur
gleichen Zeit die in der Nebentabelle enthaltene virtuelle Adresse mit der von der Zentraleinheit
gelieferten virtuellen Adresse und die reale Adresse von der Nebentabelle mit der realen Adresse der Tabelle 16
verglichen. Wenn beide Vergleiche positiv ausfallen, kann ein Zugriff zum Pufferspeicher durchgeführt
werden.
In einer bevorzugten Ausführungsform weist die Übersetzungsnebentabelle 64 Wörter auf, von denen
jedes zwei virtuelle Adressen zusammen mit den ihnen entsprechenden realen Adressen speichert. Jedes Wort
enthält dabei die Übersetzungsdaten für eine mit einer geraden Adresse bezeichneten Seite und für die nächste
darauf folgende mit einer ungeradzahligen Adresse bezeichneten Seite. Wenn ein Zugriff zu der Nebentabelle
durchgeführt wird, wird das entsprechende Halbwort, welches durch das Bit 20 des Seitenadressenfeldes
PX der virtuellen Adresse bezeichnet ist, ausgelesen. In F i g. 6 werden Einzelheiten des Formats
eines TLAT-Wortes gezeigt Da beide Worthälften identisch im Format sind, ist nur die eine Hälfte davon,
welche 27 Bits aufweist gezeigt Wie in F i g. 1 gezeigt wurde, weisen das Segmentadressenfeld SX und das
Seitenadressenfeld PX der virtuellen Adresse zusammen 13 Bits auf. In einer bevorzugten Ausführungsform
werden 6 dieser Bits dazu verwendet die Nebentabelle zu adressieren und, wie oben erwähnt wurde, wird ein
siebentes Bit dazu benutzt in dem adressierten TLz1I1T-Wort das gewünschte Halbwort auszuwählen. Es
müssen also nur 6 Bits der virtuellen Adresse, weiche in Fig.6 mit VlR bezeichnet sind, jeweils in der
Nebentabelle gespeichert werden. Ein 12-Bit-Teil des
Wortes enthält die 10 realen Adressenbits, welche die
Übersetzung des Segment- und Seitenteiles der virtuellen Adresse darstellen, sowie ein Gültigkeitsbit /
und ein Paritätsbit P. 6 Bits, welche mit STPRO
bezeichnet sind, können für Speicherschutzfunktionen verwendet werden. 2 codierte Gültigkeitsbits, welche
mit 5TO bezeichnet sind, sind in jeder Speicherstelle der
Nebentabelle gespeichert Diese Bits werden dazu benutzt anzuzeigen, ob eine gespeicherte Information
gültig oder ungültig ist Wenn eine Eintragung gültig ist kann sie sich auf einen von drei verschiedenen
Adressenbereichen beziehen, wobei der bezeichnete Bereich durch den Wert der codierten 57Ö-Bits
definiert ist. Die verschiedenen Segmenttabellen-Beginnadressen, welche den verschiedenen codierten
Werten der Gültigkeitsbits entsprechen, sind im Pufferspeicher oder Hauptspeicher gespeichert. Die
Abspeicherung dieser Werte, d. h. ihre Zuteilung wird vom Mikroprogramm gesteuert. Die vier verschiedenen
Werte der STO Bits haben folgende Bedeutung.
00 bezeichnet eine ungültige Eintragung,
01 bezeichnet eine gültige Eintragung, welche zu einem ersten 5TO-Wert im Pufferspeicher gehört,
10 bezeichnet eine gültige Eintragung, welche zu einem zweiten STO- Wert im Pufferspeicher gehört
und
11 bezeichnet eine gültige Eintragung, welche zu einem dritten 5TO-Wert im Pufferspeicher gehört.
Wenn das Steuerregister (siehe F i g. 2) mit einer Segmenttabellen-Beginnadresse geladen wird, wird
durch das Mikroprogramm bestimmt, ob diese Adresse zu einem der drei laufenden Segmenttabellen-Beginnadressenwerte im Pufferspeicher gehört. Wenn der
Adressenwert, welcher gerade ins Steuerregister geladen wird, keiner der drei existierenden Beginnadressen
entspricht, wird eine Referenz hergestellt. Wenn alle drei codierten 5TO-Werte aktiv sind, und
keiner mit dem neuen ins Steuerregister geladenen Wert übereinstimmt, wird der älteste Beginnadressenwert aus der Nebentabelle ausgelesen, indem das
entsprechende STO-Bit auf 00 gesetzt wird, und werden x>
die codierten Bits dem neuen Wert zugeteilt.
Zur Adressierung der Übersetzungsnebentabelle TLATwerden drei virtuelle Bits des Segmentadressenfeldes
SX (Bits 13,14 und 15) und drei virtuelle Bits des Seitenadressenfeldes (Bits 17, 18 und 19) dazu verwen- r>
det, eine der 64 Speicherstellen auszuwählen. Das niederste PX-Bit (Bit 20) trifft die Auswahl zwischen der
geraden oder ungeraden Eintragung. Die in der Nebentabelle abgespeicherten Bits sind infolgedessen
die virtuellen Bits 8,9,10,11,12 und 16. Um eine virtuelle
Adresse zu übersetzen, wird ein Zugriff zu einer der 64 Speicherstellen der Übersetzungsnebentabelle durchgeführt
und die gerade oder ungerade Eintragung ausgewählt Die restlichen hochwertigen virtuellen Bits
in der von der Zentraleinheit gelieferten virtuellen -r. Adresse werden mit den hochwertigen virtuellen Bits,
welche aus der Nebentabelle ausgelesen werden, verglichen. Wenn eine Übereinstimmung festgestellt
wird, wird die übersetzte reale Adresse aus der entsprechenden Speicherstelle ausgelesen. Diese reale
>i> Adresse wird dann mit den im Verzeichnis gespeicherten realen Adressen verglichen, um festzustellen, ob die
Daten zu dieser Adresse im Pufferspeicher gespeichert sind. Wenn dies nicht der Fall ist, wird ein Zugriff zum
Hauptspeicher durchgeführt. _
Wenn der Zugriff zur Nebentabelle keine Übersetzung liefert, wenn also kein Vergleich festgestellt wird,
muß die Anlage die in F i g. 2 gezeigte Übersetzung in zwei Stufen ausführen. Das Ergebnis dieser Übersetzung
wird dann in die Nebentabelle TLA Tgespeichert.
Zur gleichen Zeit wird ebenfalls die entsprechende ungeradzahlige oder geradzahlige Seite übersetzt,
zumindest, wenn sie gültig ist und in der Nebentabelle gespeichert, so daß also zwei Übersetzungen zugleich
durchgeführt werden.
F i g. 7 zeigt zusätzliche Einzelheiten der bevorzugten Ausführungsform der vorliegenden Erfindung. Bits 8 bis
31 der von der Zentraleinheit gelieferten virtuellen Adresse werden auf eine Speicheradressensammelleitune
44 zur Verteilung innerhalb der Anlage gegeben. Bits 13 bis 15 und 17 bis 19 werden dazu benutzt, die
Übersetzungsnebentabelle 46, welche die virtuellen Adressenbits 8 bis 12 und 16 enthält, zu adressieren. Der
Teil der Nebentabelle, welcher Übersetzungen für geradzahlige virtuelle Adressen enthält, liefert diese
virtuellen Adressenbits an eine logische Schaltung 48, während der Teil der Nebentabelle, welcher Übersetzungen
für ungeradzahlige virtuelle Adressen enthält, die virtuellen Adressenbits an eine logische Schaltung
50 liefert. Wenn das Bit 20 der virtuellen Adresse 0 ist, wird die Torschaltung 48 leitend gemacht und die sechs
virtuellen Adressenbits werden dem Vergleicher 52 zugeführt. Wenn das Bit 20 1 ist, wird die Torschaltung
50 leitend gemacht und die virtuellen Adressenbits von dem ungeradzahligen Teil der Nebentabelle zu der
Vergleichsschaltung 52 geleitet. Die Bits 8 bis 12 und 16
der von der Zentraleinheit gelieferten virtuellen Adresse werden ebenfalls der Vergleichsschaltung 52
zugeführt. Wenn die beiden Eingangsinformationen gleich sind, liefert der Vergleicher 52 ein Signal auf der
Leitung 54. Zur gleichen Zeit, da ein Zugriff zur Nebentabelle ausgeführt wird, wird auch ein Zugriff
zum Verzeichnis 16 durch die Bits 20 bis 26 der von der Zentraleinheit gelieferten Adresse durchgeführt. Im
vorliegenden Ausführungsbeispiel weist das Verzeichnis 128 Worte auf, wobei in jedem Wort zwei reale
Adressen gespeichert sind. Die beiden realen Adressen, welche in einem solchen adressierten Wort der Tabelle
56 gespeichert sind, werden zu zwei Vergleichsschaltungen 58 und 60 ausgelesen. Ungefähr zum gleichen
Zeitpunkt wird eine reale Adresse vom entsprechenden (geraden oder ungeraden) Teil der Nebentabelle 46 über
die Torschaltungen 62 oder 64 den Vergleichern 58 und 60 zugeführt. Der Codierer 66 erzeugt das Bit 19 der
realen Adresse, dessen Wert davon abhängt, welche der beiden Vergleichsschaltungen Gleichheit festgestellt
hat, und diesem Bit 19 wird hierauf zum Pufferspeicheradressenregister
68 übertragen. Ungefähr zur gleichen Zeit wird das Bit 20 der realen Adresse über die Leitung
70 von der Nebentabelle 46 zum Adressenregister 68 und die Bits 21 bis 28 der realen Adresse über die
Leitung 72 von der Speicheradressensammelleitung 44 zum Adressenregister 68 übertragen. Die Bits 19 bis 28
im Pufferspeicheradressenregister 68 werden dazu benutzt, eines von 1024 Worten im Pufferspeicher 74 zu
adressieren und zur Zentraleinheit zu übertragen. Die Bits 29 bis 31 (die niederwertigen realen Adressenbits)
der von der Zentraleinheit gelieferten virtuellen Adresse brauchen für einen Zugriff vom Pufferspeicher
nicht verwendet werden, da im gezeigten Ausführungsbeispiei jedes Wort im Pufferspeicher 8 Datenbytes
enthält, wobei jedes Byte aus 8 Datenbits und einem Paritätsbit besteht
Wenn keine der beiden Vergleichsschaltungen 58 oder 60 Gleichheit festgestellt hat (keine gleiche reale
Adresse im Verzeichnis gefunden, d. h. Daten nicht im Pufferspeicher) oder wenn der Vergleicher 52 nicht
Gleichheit festgestellt hat (Übersetzung der aktuellen virtuellen Adresse nicht in der Nebentabelle vorhanden),
muß die Übersetzung wie oben in Zusammenhang mit der F i g. 4 beschrieben durchgeführt werden.
Es ist klar, daß die Zugriffe zum Pufferspeicher nicht notwendigerweise darauf warten müssen, bis die
Adressenvergleiche durchgeführt sind. Der Zugriff zum Pufferspeicher könnte z. B. auch von der einlangenden
virtuellen Adresse ausgelöst werden und die vom
230244/60
Pufferspeicher ausgelesenen Daten könnten abhängig von den Vergleichen übertragen werden oder nicht.
Auch bei einer solchen Arbeitsweise kann der Pufferspeicher durch reale Adressen adressiert werden
und enthält auch das Verzeichnis 16 reale Adressen.
Hierzu 2 Blatt Zeichnuncen
Claims (4)
1. Virtuelle hierarchische Speicheranordnung in einer Datenverarbeitungsanlage mit einem externen
Großraumspeicher, einem internen Hauptspeicher zur Speicherung von Datenblöcken und einem dem
Prozessor der Anlage zugeordneten Pufferspeicher samt Verzeichnis der im Pufferspeicher enthaltenen
Daten, sowie mit Tabellen zur Übersetzung von aus einem virtuellen Teil und einem eine Byteadresse im
adressierten Datenblock angebenden realen Teil bestehenden virtuellen Adressen in reaje Adressen
und einer schnellen Nebentabelle zur übersetzung der zuletzt verwendeten virtuellen Adressen, gekennzeichnet
durch ein die virtuelle Adresse (Fig. 1) aufnehmendes Adressenregister (12, Fig.4), welches
ausgangsieiiig sowohl mit der Nebentabelle (14) als
auch mit dem Verzeichnis (16) derart verbunden ist, daß zur Adressierung der Nebentabelle ein Teil der
virtuellen Adresse (Bits 13 bis 15, 17 bis 19) und zur Adressierung des Verzeichnisses zumindest ein Teil
(Bits 20 bis 26) des realen Teils der virtuellen Adresse verwendet werden,
durch einenersten Vergleicher (18) zum Vergleich
des restlichen Teils der virtuellen Adresse (Bits 8 bis 12, 16) mit einem in der adressierten Stelle der
Nebentabelle gespeicherten entsprechenden Adressenteil (VA) und
durch einen zweiten Vergleicher (20) zum
Vergleich der aus der Nebentabelle ausgelesenen übersetzten realen Adresse (RA) mit der aus dem
Verzeichnis ausgelesenen Adresse.
2. Speicheranordnung nach Anspruch 1, worin die angebotene virtuelle Adresse aus einem virtuellen ^
Segmentteil und einem virtuellen Seitenteil besteht, dadurch gekennzeichnet, daß zur Adressierung der
Nebentabelle (14) virtuelle Segment- und virtuelle Seitenbits verwendet werden.
3. Speicheranordnung nach Anspruch 2, dadurch gekennzeichnet, daß die Eintragungen in der
Nebentabelle (14) in zwei Halbwortc für ungerade und gerade Seitenadressendaten aufgeteilt sind und
ein virtuelles Seitenbit zur Unterscheidung zwischen diesen beiden Teilen verwendet wird.
4. Speicheranordnung nach Anspruch 1, dadurch gekennzeichnet, daß die Eintragungen im Verzeichnis
(16) in zwei Halbworte aufgeteilt sind und zwei weitere Vergleicher (58, 60) speisen, welche mit
einem Codierer (66) verbunden sind.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15818071A | 1971-06-30 | 1971-06-30 |
Publications (2)
Publication Number | Publication Date |
---|---|
DE2227882A1 DE2227882A1 (de) | 1972-12-28 |
DE2227882C2 true DE2227882C2 (de) | 1982-11-04 |
Family
ID=22566979
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE2227882A Expired DE2227882C2 (de) | 1971-06-30 | 1972-06-08 | Virtuelle Speicheranordnung |
Country Status (7)
Country | Link |
---|---|
US (1) | US3761881A (de) |
JP (1) | JPS5136178B1 (de) |
CA (1) | CA960783A (de) |
DE (1) | DE2227882C2 (de) |
FR (1) | FR2144265A5 (de) |
GB (1) | GB1342459A (de) |
IT (1) | IT956847B (de) |
Families Citing this family (67)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3764996A (en) * | 1971-12-23 | 1973-10-09 | Ibm | Storage control and address translation |
US4010451A (en) * | 1972-10-03 | 1977-03-01 | National Research Development Corporation | Data structure processor |
US3825904A (en) * | 1973-06-08 | 1974-07-23 | Ibm | Virtual memory system |
US3866183A (en) * | 1973-08-31 | 1975-02-11 | Honeywell Inf Systems | Communications control apparatus for the use with a cache store |
FR130806A (de) * | 1973-11-21 | |||
US3896419A (en) * | 1974-01-17 | 1975-07-22 | Honeywell Inf Systems | Cache memory store in a processor of a data processing system |
US3909798A (en) * | 1974-01-25 | 1975-09-30 | Raytheon Co | Virtual addressing method and apparatus |
US3938100A (en) * | 1974-06-07 | 1976-02-10 | Control Data Corporation | Virtual addressing apparatus for addressing the memory of a computer utilizing associative addressing techniques |
JPS5615066B2 (de) * | 1974-06-13 | 1981-04-08 | ||
DE2542845B2 (de) * | 1975-09-25 | 1980-03-13 | Siemens Ag, 1000 Berlin Und 8000 Muenchen | Verfahren zum Betreiben eines hierarchisch gegliederten, mehrstufigen Arbeitsspeichersystems und Schaltungsanordnung zur Durchführung des Verfahrens |
DE2605617A1 (de) * | 1976-02-12 | 1977-08-18 | Siemens Ag | Schaltungsanordnung zum adressieren von daten |
JPS52130532A (en) * | 1976-04-27 | 1977-11-01 | Fujitsu Ltd | Address conversion system |
US4084226A (en) * | 1976-09-24 | 1978-04-11 | Sperry Rand Corporation | Virtual address translator |
US4285040A (en) * | 1977-11-04 | 1981-08-18 | Sperry Corporation | Dual mode virtual-to-real address translation mechanism |
US4241401A (en) * | 1977-12-19 | 1980-12-23 | Sperry Corporation | Virtual address translator utilizing interrupt level code |
US4170039A (en) * | 1978-07-17 | 1979-10-02 | International Business Machines Corporation | Virtual address translation speed up technique |
DE2842288A1 (de) * | 1978-09-28 | 1980-04-17 | Siemens Ag | Datentransferschalter mit assoziativer adressauswahl in einem virtuellen speicher |
US4277826A (en) * | 1978-10-23 | 1981-07-07 | Collins Robert W | Synchronizing mechanism for page replacement control |
US4254463A (en) * | 1978-12-14 | 1981-03-03 | Rockwell International Corporation | Data processing system with address translation |
US4298932A (en) * | 1979-06-11 | 1981-11-03 | International Business Machines Corporation | Serial storage subsystem for a data processor |
DE2939411C2 (de) * | 1979-09-28 | 1982-09-02 | Siemens AG, 1000 Berlin und 8000 München | Datenverarbeitungsanlage mit virtueller Speicheradressierung |
JPS5687282A (en) * | 1979-12-14 | 1981-07-15 | Nec Corp | Data processor |
US4332010A (en) * | 1980-03-17 | 1982-05-25 | International Business Machines Corporation | Cache synonym detection and handling mechanism |
US4393443A (en) * | 1980-05-20 | 1983-07-12 | Tektronix, Inc. | Memory mapping system |
JPS5734251A (en) * | 1980-08-07 | 1982-02-24 | Toshiba Corp | Address conversion and generating system |
US4386402A (en) * | 1980-09-25 | 1983-05-31 | Bell Telephone Laboratories, Incorporated | Computer with dual vat buffers for accessing a common memory shared by a cache and a processor interrupt stack |
US4481573A (en) * | 1980-11-17 | 1984-11-06 | Hitachi, Ltd. | Shared virtual address translation unit for a multiprocessor system |
US4482952A (en) * | 1980-12-15 | 1984-11-13 | Nippon Electric Co., Ltd. | Virtual addressing system using page field comparisons to selectively validate cache buffer data on read main memory data |
US4400774A (en) * | 1981-02-02 | 1983-08-23 | Bell Telephone Laboratories, Incorporated | Cache addressing arrangement in a computer system |
US4539637A (en) * | 1982-08-26 | 1985-09-03 | At&T Bell Laboratories | Method and apparatus for handling interprocessor calls in a multiprocessor system |
US4819154A (en) * | 1982-12-09 | 1989-04-04 | Sequoia Systems, Inc. | Memory back up system with one cache memory and two physically separated main memories |
DE3382152D1 (de) * | 1982-12-09 | 1991-03-07 | Sequoia Systems Inc | Sicherstellungsspeichersystem. |
JPS59157887A (ja) * | 1983-02-28 | 1984-09-07 | Hitachi Ltd | 情報処理装置 |
EP0124799B1 (de) * | 1983-04-13 | 1990-10-31 | Nec Corporation | Speicherzugriffseinrichtung in einem Datenverarbeitungssystem |
US4580217A (en) * | 1983-06-22 | 1986-04-01 | Ncr Corporation | High speed memory management system and method |
US4731739A (en) * | 1983-08-29 | 1988-03-15 | Amdahl Corporation | Eviction control apparatus |
US4680700A (en) * | 1983-12-07 | 1987-07-14 | International Business Machines Corporation | Virtual memory address translation mechanism with combined hash address table and inverted page table |
US4663742A (en) * | 1984-10-30 | 1987-05-05 | International Business Machines Corporation | Directory memory system having simultaneous write, compare and bypass capabilites |
US4991081A (en) * | 1984-10-31 | 1991-02-05 | Texas Instruments Incorporated | Cache memory addressable by both physical and virtual addresses |
US4884197A (en) * | 1985-02-22 | 1989-11-28 | Intergraph Corporation | Method and apparatus for addressing a cache memory |
US5255384A (en) * | 1985-02-22 | 1993-10-19 | Intergraph Corporation | Memory address translation system having modifiable and non-modifiable translation mechanisms |
US4933835A (en) * | 1985-02-22 | 1990-06-12 | Intergraph Corporation | Apparatus for maintaining consistency of a cache memory with a primary memory |
US4860192A (en) * | 1985-02-22 | 1989-08-22 | Intergraph Corporation | Quadword boundary cache system |
US4899275A (en) * | 1985-02-22 | 1990-02-06 | Intergraph Corporation | Cache-MMU system |
US4821171A (en) * | 1985-05-07 | 1989-04-11 | Prime Computer, Inc. | System of selective purging of address translation in computer memories |
US4636990A (en) * | 1985-05-31 | 1987-01-13 | International Business Machines Corporation | Three state select circuit for use in a data processing system or the like |
US5091846A (en) * | 1986-10-03 | 1992-02-25 | Intergraph Corporation | Cache providing caching/non-caching write-through and copyback modes for virtual addresses and including bus snooping to maintain coherency |
WO1988006763A1 (en) * | 1987-02-24 | 1988-09-07 | Digital Equipment Corporation | Central processor unit for digital data processing system including virtual to physical address translation circuit |
JPH0221342A (ja) * | 1987-02-27 | 1990-01-24 | Hitachi Ltd | マルチプロセッサシステム及びマルチプロセッサシステムにおける論理キャッシュメモリのアクセス方法 |
JP2507756B2 (ja) * | 1987-10-05 | 1996-06-19 | 株式会社日立製作所 | 情報処理装置 |
JPH01154261A (ja) * | 1987-12-11 | 1989-06-16 | Toshiba Corp | 情報処理装置 |
US5150471A (en) * | 1989-04-20 | 1992-09-22 | Ncr Corporation | Method and apparatus for offset register address accessing |
JPH0679296B2 (ja) * | 1989-09-22 | 1994-10-05 | 株式会社日立製作所 | 多重仮想アドレス空間アクセス方法およびデータ処理装置 |
US5584003A (en) * | 1990-03-29 | 1996-12-10 | Matsushita Electric Industrial Co., Ltd. | Control systems having an address conversion device for controlling a cache memory and a cache tag memory |
US5193184A (en) * | 1990-06-18 | 1993-03-09 | Storage Technology Corporation | Deleted data file space release system for a dynamically mapped virtual data storage subsystem |
JP3190700B2 (ja) * | 1991-05-31 | 2001-07-23 | 日本電気株式会社 | アドレス変換装置 |
EP0764302B1 (de) * | 1994-06-10 | 1998-12-02 | Texas Micro Inc. | Hauptspeichervorrichtung und wiederanlaufkennzeichnungsverfahren für ein fehlertolerantes rechnersystem |
US5890221A (en) * | 1994-10-05 | 1999-03-30 | International Business Machines Corporation | Method and system for offset miss sequence handling in a data cache array having multiple content addressable field per cache line utilizing an MRU bit |
JP3086779B2 (ja) * | 1995-06-19 | 2000-09-11 | 株式会社東芝 | メモリ状態復元装置 |
US5751939A (en) * | 1995-11-29 | 1998-05-12 | Texas Micro, Inc. | Main memory system and checkpointing protocol for fault-tolerant computer system using an exclusive-or memory |
US5864657A (en) * | 1995-11-29 | 1999-01-26 | Texas Micro, Inc. | Main memory system and checkpointing protocol for fault-tolerant computer system |
US5745672A (en) * | 1995-11-29 | 1998-04-28 | Texas Micro, Inc. | Main memory system and checkpointing protocol for a fault-tolerant computer system using a read buffer |
US5737514A (en) * | 1995-11-29 | 1998-04-07 | Texas Micro, Inc. | Remote checkpoint memory system and protocol for fault-tolerant computer system |
US5724551A (en) * | 1996-05-23 | 1998-03-03 | International Business Machines Corporation | Method for managing I/O buffers in shared storage by structuring buffer table having entries include storage keys for controlling accesses to the buffers |
TW379298B (en) * | 1996-09-30 | 2000-01-11 | Toshiba Corp | Memory updating history saving device and memory updating history saving method |
US6968398B2 (en) * | 2001-08-15 | 2005-11-22 | International Business Machines Corporation | Method of virtualizing I/O resources in a computer system |
US7604658B2 (en) * | 2004-05-04 | 2009-10-20 | Codman & Shurtleff, Inc. | Multiple lumen sensor attachment |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB979632A (en) * | 1960-04-20 | 1965-01-06 | Nat Res Dev | Improvements in or relating to electronic digital computing machines |
DE1218761B (de) * | 1963-07-19 | 1966-06-08 | International Business Machines Corporation, Armonk, N. Y. (V. St. A.) | Datenspeidbereinrichtung |
US3339183A (en) * | 1964-11-16 | 1967-08-29 | Burroughs Corp | Copy memory for a digital processor |
US3568155A (en) * | 1967-04-10 | 1971-03-02 | Ibm | Method of storing and retrieving records |
US3533075A (en) * | 1967-10-19 | 1970-10-06 | Ibm | Dynamic address translation unit with look-ahead |
GB1265006A (de) * | 1968-11-08 | 1972-03-01 | ||
GB1234484A (de) * | 1968-11-12 | 1971-06-03 | ||
US3648254A (en) * | 1969-12-31 | 1972-03-07 | Ibm | High-speed associative memory |
-
1971
- 1971-06-30 US US00158180A patent/US3761881A/en not_active Expired - Lifetime
-
1972
- 1972-05-01 GB GB2005372A patent/GB1342459A/en not_active Expired
- 1972-06-08 FR FR7221502A patent/FR2144265A5/fr not_active Expired
- 1972-06-08 DE DE2227882A patent/DE2227882C2/de not_active Expired
- 1972-06-20 JP JP47061058A patent/JPS5136178B1/ja active Pending
- 1972-06-22 CA CA145,362A patent/CA960783A/en not_active Expired
- 1972-06-27 IT IT26240/72A patent/IT956847B/it active
Also Published As
Publication number | Publication date |
---|---|
IT956847B (it) | 1973-10-10 |
US3761881A (en) | 1973-09-25 |
GB1342459A (en) | 1974-01-03 |
FR2144265A5 (de) | 1973-02-09 |
CA960783A (en) | 1975-01-07 |
DE2227882A1 (de) | 1972-12-28 |
JPS5136178B1 (de) | 1976-10-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE2227882C2 (de) | Virtuelle Speicheranordnung | |
DE2235841C2 (de) | Datenverarbeitungsanlage mit Speichersteuerung für mindestens einen Prozessor und diesen zugeordneten Pufferspeichern | |
DE2241257C3 (de) | Datenverarbeitende Anlage | |
DE2807476C2 (de) | Speichereinrichtung mit mehreren virtuellen Adreßräumen | |
DE2260353C2 (de) | Schaltungsanordnung für die Adressenumsetzung in einer Datenverarbeitungsanlage | |
DE3011552C2 (de) | ||
DE2226382C3 (de) | Datenverarbeitungsanlage mit mehreren Prozessoren und diesen zugeordneten Pufferspeichern | |
DE2459006C2 (de) | Einrichtung zum Bilden einer absoluten Adresse in einer Datenverarbeitunsanlage | |
DE2455047C2 (de) | Datenverarbeitungssystem mit einem Informationsspeicher | |
DE2350215C2 (de) | Rechenanlage | |
EP0013737B1 (de) | Mehrstufige Speicherhierarchie für ein Datenverarbeitungssystem | |
DE4410060B4 (de) | Übersetzungsvorrichtung zum Umsetzen einer virtuellen Speicheradresse in eine physikalische Speicheradresse | |
DE1956604C3 (de) | Datenverarbeitungsanlage | |
DE3338345C2 (de) | ||
DE2841041A1 (de) | Datenverarbeitungsanlage mit mindestens zwei mit einem schnellen arbeitsspeicher ausgeruesteten prozessoren | |
DE2346525A1 (de) | Virtuelle speichereinrichtung | |
DE2835989A1 (de) | Anordnung zum umwandeln einer virtuellen adresse in eine physikalische adresse eines datenwortes | |
DE68925336T2 (de) | Datenverarbeitungsvorrichtung mit Cache-Speicher | |
DE3046912C2 (de) | Schaltungsanordnung zum selektiven Löschen von Cachespeichern in einer Multiprozessor-Datenverarbeitungsanlage | |
DE2551740A1 (de) | Datenverarbeitungseinheit | |
DE4123550A1 (de) | Informationsverarbeitungssystem mit direktem speicherzugriff | |
DE3025167C2 (de) | Datenverarbeitungseinrichtung | |
DE3121710C2 (de) | Steuereinrichtung für einen virtuellen Speicher in einer Datenverarbeitungsanlage | |
DE2605617A1 (de) | Schaltungsanordnung zum adressieren von daten | |
DE2332603C3 (de) | Virtuelle Speichereinrichtung mit zusätzlichem Pufferspeicher |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OD | Request for examination | ||
8126 | Change of the secondary classification |
Ipc: G06F 9/00 |
|
D2 | Grant after examination | ||
8339 | Ceased/non-payment of the annual fee |