DE69520718T2 - Datenprozessor mit Adressübersetzungsmechanismus - Google Patents
Datenprozessor mit AdressübersetzungsmechanismusInfo
- Publication number
- DE69520718T2 DE69520718T2 DE69520718T DE69520718T DE69520718T2 DE 69520718 T2 DE69520718 T2 DE 69520718T2 DE 69520718 T DE69520718 T DE 69520718T DE 69520718 T DE69520718 T DE 69520718T DE 69520718 T2 DE69520718 T2 DE 69520718T2
- Authority
- DE
- Germany
- Prior art keywords
- address
- virtual
- size
- data processor
- information
- 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 - Lifetime
Links
- 238000013519 translation Methods 0.000 title claims description 132
- 230000007246 mechanism Effects 0.000 title description 21
- 230000015654 memory Effects 0.000 claims description 140
- 238000000034 method Methods 0.000 claims description 110
- 239000000872 buffer Substances 0.000 claims description 85
- 230000008569 process Effects 0.000 claims description 73
- 238000012545 processing Methods 0.000 claims description 42
- 239000004065 semiconductor Substances 0.000 claims description 4
- 230000006386 memory function Effects 0.000 claims 3
- 238000010586 diagram Methods 0.000 description 15
- BDEDPKFUFGCVCJ-UHFFFAOYSA-N 3,6-dihydroxy-8,8-dimethyl-1-oxo-3,4,7,9-tetrahydrocyclopenta[h]isochromene-5-carbaldehyde Chemical compound O=C1OC(O)CC(C(C=O)=C2O)=C1C1=C2CC(C)(C)C1 BDEDPKFUFGCVCJ-UHFFFAOYSA-N 0.000 description 11
- 238000001514 detection method Methods 0.000 description 8
- 230000009471 action Effects 0.000 description 6
- 238000013507 mapping Methods 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 101150068401 BSL1 gene Proteins 0.000 description 3
- 230000008859 change Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 229910021421 monocrystalline silicon Inorganic materials 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
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/1036—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
-
- 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]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/652—Page size control
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Description
- Die Erfindung betrifft einen Datenprozessor mit Adressübersetzungsmechanismus, und spezieller betrifft sie einen Datenprozessor mit einem als Adressübersetzungsmechanismus verwendeten Satz- oder gruppenassoziativen Cachespeicher, wie im folgenden Dokument offenbart: Computer Architecture News, Vol. 20, No. 2, 1. Mai 1992, Seiten 415-425, wobei dieser zwei Seitengrößen unterstützt. Genauer gesagt, soll die Erfindung das Adressübersetzungsverfahren diversifizieren, und sie betrifft eine Technik, die wirkungsvoll ist, wenn sie bei einem Mikrocomputer angewandt wird.
- Im Bereich, in dem das Betriebssystem (das auch als "OS" bezeichnet wird) arbeitet, während sich der Benutzer des tatsächlichen Speichers nicht bewusst wird, muss der Datenprozessor den Adressübersetzungsmechanismus unterstützen. Dieser Adressübersetzungsmechanismus ist ein Mechanismus zum Übersetzen der durch die zentrale Verarbeitungseinheit (CPU) erzeugten logischen Adresse in eine absolute Adresse, um einen virtuellen Speicher zu realisieren. Um diesen Adressübersetzungsmechanismus mit hoher Geschwindigkeit auszuführen, wird eine Technik verwendet, bei der ein Adressenübersetzungsspeicher oder Übersetzungsverweispuffer (translation lookaside buffer) (der auch kurz als "TLB" bezeichnet wird) im Datenprozessor mit der zentralen Verarbeitungseinheit (CPU) zusammengebaut ist. Der Übersetzungsverweispuffer ist z. B. als Pufferspeicher mit Assoziativspeicherstruktur aufgebaut, um ein Übersetzungspaar aus einer logischen Adresse und der absoluten Adresse, wie sie aktuell verwendet werden, einzuspeichern. Ein Pufferspeicher mit Assoziativspeicherstruktur ist z. B. ein vollständig assoziativer Speicher aus einem CAM (d. h. Content Adressable Memory = inhaltsbezogener adressierbarer Speicher) mit einem Vergleichsschaltungsaufbau in jeder Speicherzelle, oder ein gruppenassoziativer Speicher, der einen relativ hohen Trefferprozentsatz dadurch erzielen kann, dass er einen Universal-Direktzugriffsspeicher verwendet. Übrigens ist ein Übersetzungsverweispuffer vom Typ eines Assoziativspeichers z. B. auf den Seiten 287 und 288 von "Super-High Speed MOS Device" herausgegeben von Kabushiki Gaisha Baifukan am 10. Februar 1986, offenbart.
- Wir haben derartige Übersetzungsverweispuffer hinsichtlich der Punkte untersucht, den vom Benutzer geforderten Spezifikationen zu genügen und hervorragenden Benutzungskomfort zu realisieren, und wir haben die folgenden Probleme herausgefunden.
- (1) Bei einem einen virtuellen Speicher unterstützenden Adressübersetzungsmechanismus wird ein Logikadressenraum in Einheiten unterteilt, die als "logischer Raum" bezeichnet werden, und die Adressenübersetzung in die Absolutadresse wird mit Seiteneinheit ausgeführt. Im Fall einer kleinen Gesamtkapazität des echten Speichers (oder physikalischen Speichers), wie er tatsächlich in ein System einzubauen ist, tritt andererseits Bedarf zum Verbessern des Speichers unter Verwendung des Wirkungsgrads für jeden Prozess dadurch, dass die virtuelle Seite relativ klein gemacht wird, auf. Es sei angenommen, dass ein auszuführender Rechenauftrag z. B. aus einem Programm relativ geringer Größe besteht. Wenn die dieser Rechenaufgabe zuzuordnende virtuelle Seite über eine relativ große Größe verfügt, ist die Größe der physikalischen Seite zum Ausführen der Rechenaufgabe entsprechend groß. Im Ergebnis wird der Rechenaufgabe ein größerer Speicherraum als erforderlich zugewiesen, so dass der Speichernutzungs- Wirkungsgrad fällt. Insbesondere dann, wenn das Speichervermögen des echten Speichers relativ klein ist, ist es erwünscht, durch Verkleinern der Größe der virtuellen Seite zu verhindern, dass der Nutzungswirkungsgrad des echten Speichers fällt. Um diesem Wunsch geeignet zu genügen, ist es ferner erwünscht, die virtuelle Seite mit variabler Größe zu versehen. Einhergehend mit dieser variablen Größe besteht jedoch eine Änderung der Anzahl der Bits der Information zum Definieren der virtuellen Seite in einem vorbestimmten logischen Raum. Im Ergebnis müssen die Anzahl und die Position der Bits der Objektinformation, die zu vergleichen ist, um die Information assoziativ aus dem Übersetzungsverweispuffer abzurufen, mit der Größe der virtuellen Seite geändert werden. Um dies zu meistern, ist es denkbar, den vollständig assoziativen Typ eines CAM für den Übersetzungsverweispuffer zu verwenden. Bei dieser Anwendung wird jede Speicherzelle mit einem Komparator versehen, so dass die virtuelle Seite relativ leicht, ohne irgendwelche spezielle Berücksichtigung, variabel gemacht werden kann. Da jedoch jede Speicherzelle mit einem Komparator versehen ist, besteht noch der Mangel, dass die Chipbelegungsfläche und der Energieverbrauch im Vergleich mit denen bei einem gruppenassoziativen Übersetzungsverweispuffer verdoppelt sind.
- (2) Bei einem gruppenassoziativen Übersetzungsverweispuffer kann die Anzahl der für jede Indexadresse einzuspeichernden Einträge erhöht werden, um den Trefferwirkungsgrad zu verbessern, wenn die Anzahl der in mehreren Gruppen existierenden Bänke oder Wege erhöht wird. Im Fall eines gruppenassoziativen Typs mit vier Wegen können z. B. die maximal vier Einträge für jede Indexadresse eingespeichert werden. Jedoch nutzen im Fall einer gemultiplexten virtuellen Unterstützung, bei der jeder von Prozessen über Adressübersetzungsinformation über das gesamte Feld des logischen Raums verfügt, so dass die logische Adresse durch die Adressenraumkennung (eine Prozessnummer) modifiziert oder erweitert wird, relativ mehr Prozesse häufig dieselbe virtuelle Seite, wenn sie parallel gestartet werden. Die einzelnen Prozesse werden in verschiedenen Einträgen, die durch eine Indexadresse spezifiziert sind, eingespeichert, da sie verschiedene Adressenraumkennungen aufweisen. So fällt, wenn die Anzahl der Prozesse diejenige der Wege überschreitet, die Trefferrate selbst beim gruppenassoziativen Typ auf relative Weise. Beim Nutzungsmodus mit mehrfacher virtueller Unterstützung, bei dem viele Prozesse parallel gestartet werden, ist es daher erforderlich, das Indexverfahren abhängig vom Nutzungsmodus auswählbar zu machen, damit das Abfallen des Trefferwirkungsgrads unterdrückt werden kann.
- (3) Wenn ein Zielübersetzungspaar nicht in den Übersetzungsverweispuffer eingespeichert wird, wird ein diesen Cachefehlschlag betreffendes Übersetzungspaar (d. h. ein gewünschtes übersetzungspaar als neuer Eintrag im Übersetzungsverweispuffer hinzugefügt. Dabei wird ein Austausch von Übersetzungspaaren ausgeführt, wenn alle Übersetzungspaare in einem Eintrag mit Index gültig sind. Dieser Austauschalgorithmus ist beispielsweise vom Zufallstyp, vom FIFO-Typ, bei dem der Austausch mit dem zuerst geladenen Eintrag beginnt, oder vom LRU(d. h. Least Recently Used = Am längsten nicht benutzt)-Typ, bei dem der Austausch mit dem Eintrag beginnt, auf den am längsten nicht Bezug genommen wurde. Wenn der Austauschalgorithmus festgelegt ist, kann jedoch der Datenverarbeitungskomfort nicht im geringsten der Forderung genügen, ein spezielles Übersetzungspaar als Eintrag in den Übersetzungsverweispuffer einzuspeichern oder der Forderung, zu verhindern, dass ein spezielles Adressenübersetzungspaar ausgetauscht wird.
- (4) Die virtuelle Unterstützung ist beispielsweise nicht nur die oben beschriebene mehrfache virtuelle Unterstützung, sondern auch eine virtuelle Einzelunterstützung, bei der ein Teil des logischen Adressenraums ausschließlich mehreren Prozessen zugewiesen wird. Es ist wünschenswert, den Nutzungskomfort dahingehend zu verbessern, dass diese zwei virtuellen Unterstützungen ausgewählt werden können.
- Es ist eine Aufgabe der Erfindung, einen Datenprozessor zu schaffen, der mit einem Adressübersetzungsmechanismus versehen ist, der den vom Benutzer geforderten Spezifizierungen genügen kann und über hervorragenden Nutzungskomfort verfügt.
- Die Aufgabe der Erfindung wird nachfolgend spezieller angegeben:
- - einen Datenprozessor zu schaffen, der mit einem Adressübersetzungsmechanismus versehen ist, der mehrere Seitengrößen unterstützen kann, ohne dass die Chipbelegungsfläche oder der Energieverbrauch erhöht ist.
- - einen Datenprozessor zu schaffen, der mit einem Adressübersetzungsmechanismus versehen ist, der mehrere Indexverfahren unterstützen und eines derselben auswählen kann.
- - einen Datenprozessor zu schaffen, der mit einem Adressübersetzungsmechanismus versehen ist, der gewisse Freiheit hinsichtlich eines auszutauschenden Adressenübersetzungpaars liefern kann.
- - einen Datenprozessor zu schaffen, der mit einem Adressübersetzungsmechanismus versehen ist, der auch hinsichtlich der virtuellen Unterstützungen einen gewissen Freiheitsgrad schaffen kann.
- Die vorstehenden und andere Aufgaben und neuartige Merkmale der Erfindung werden aus der folgenden Beschreibung ersichtlich, die unter Bezugnahme auf die beigefügten Zeichnungen erfolgt.
- Eine repräsentative Ausführungsform der hierzu offenbarenden Erfindung wird nachfolgend kurz zusammengefasst.
- Ein virtuelle Speicher unterstützender Datenprozessor unterteilt einen Raum logischer Adressen in als "logische Seiten" bezeichnete Einheiten, und er übersetzt die logische Adressen in absolute Adressen (was als "Adressübersetzung" bezeichnet wird) für jede der logischen Seiten. Bei diesem Datenprozessor ist die Größe der logischen Seite für jede Seite variabel gemacht, wie es beispielhaft in Fig. 1 dargestellt ist. Ein Pufferspeicher 1 wie ein Übersetzungsverweispuffer wird gemeinsam für mehrere logische Seiten mit jeweils variabler Größe verwendet. Dieser zu verwendende Pufferspeicher 1 ist beispielsweise ein gruppenassoziativer Cachespeicher mit mehreren Bänken 11 bis 14, die jeweils über Speicherfelder zum Speichern entsprechender Informationen verfügen, einschließlich logischer Seitennummern VPN und entsprechender physikalischer Seitennummern PPN entsprechend den logischen Seitennummern VPN, und auf die durch eine gemeinsame Indexadresse 2 zugegriffen wird.
- Die Maximalgröße der zu unterstützenden logischen Seiten wird auf eine Potenz von zwei (d. h. die N-te Potenz von zwei) betreffend die Minimalgröße eingestellt, und die Anzahl der Bänke des gruppenassoziativen Pufferspeichers wird nicht kleiner als eine Potenz von zwei (d. h. die N-te Potenz von zwei) eingestellt. Wie es beispielhaft in Fig. 1 dargestellt ist, weisen, im logischen Adressenraum (wie durch logische Adressen mit Bits 0 bis 31 spezifiziert) von 4 GB (Gigabyte), die logischen Seiten zwei Arten von Größen, nämlich von 4 kB (Kilobyte) und 1 kB auf. In diesem Fall beinhaltet der Pufferspeicher 1 vier Bänke, so dass er als gruppenassoziativer Cachespeicher mit vier Wegen aufgebaut ist. Wenn die Größe einer logischen Seite 4 kB ist, wird der Offset der logischen Adresse in den Bits 0 bis 11 derselben eingetragen, und eine Logikseitennummer VPN wird in den Bits 12 bis 31 derselben eingetragen. Wenn die Logikseiten-Adressengröße 1 kB beträgt, wird der Offset der logischen Adresse in den Bits 0 bis 9 derselben eingetragen, und die Logikseitennummer VPN wird in den Bits 10 bis 31 derselben eingetragen. Übrigens bezeichnen kleine Buchstaben vpn, ppn und asid, wie hier verwendet, die Logikseitennummer, die Absolutseitennummer und die Adressenraumkennung (Prozessnummer), die für den Zugriff zu verwenden sind und die von einer Logikseitennummer VPN, einer Absolutseitennummer PPN und einer Adressenraumkennung (Prozessnummer) ASID zu unterscheiden sind, die mit großen Buchstaben angegeben werden und entweder für den Eintrag im Pufferspeicher (oder im Übersetzungsverweispuffer) oder für den Seitentabelleneintrag verwendet werden.
- Beim oben beschriebenen Übersetzungsverweispuffer werden, gemäß dem Spezifizierverfahren für eine Indexadresse für den Pufferspeicher, die Größen der logischen Seiten für 4 kE und 1 kB gemeinsam genutzt, und als Indexadresse werden mehrere vorbestimmte Bits ab dem niedrigsten in der Logikseitenadresse mit der maximalen Seitengröße vergeben. Gemäß dem oben genannten Beispiel der Fig. 1 wird der Pufferspeicher dadurch indiziert, dass die fünf Bits 12 bis 16 in der logischen Adressen mit insgesamt 32 Bits verwendet werden. Mit diesen fünf Bits der Indexadresse können einer. Bank maximal 32 Einträge zugewiesen werden. Im Fall von vier Bänken können, wie beim Beispiel der Fig. 1, maximal vier Einträge einer Indexadresse zugewiesen werden. Im Fall einer Seitengröße von 4 kB werden die fünf Bits (d. h. Bits 12 bis 16) ab dem niedrigsten Bit der Logikseitennummer vpn der oben genannten Indexadresse zugewiesen, so dass maximal 32 Einträge einer beliebigen virtuellen Seitennummer jeder Bank zugewiesen werden können (demgemäß insgesamt 128 Einträge). Im Fall einer Seitengröße von 1 kB werden dagegen die zwei Bits (d. h. die Bits 10 und 11) ab dem niedrigsten Bit der virtuellen Seitennummer vpn nicht zu Indexzwecken verwendet. Genauer gesagt, ist, wenn die Größe einer virtuellen Seite 1 kE beträgt und nur der Index einer Bank betrachtet wird, der indizierte Eintrag einer der vier virtuellen Seitennummern, von denen einer durch die zwei Bits (d. h. die Bits 10 und 11) auszuwählen ist, die für den Index nicht benutzt sind. Wenn nur eine Bank vorhanden ist, kann daher nur eine der vier aufeinanderfolgenden Seiten als Eintrag eingespeichert werden. In dieser Hinsicht wird die Maximalgröße (d. h. 4 kB) der virtuellen Seiten auf die zweite Potenz von zwei hinsichtlich der Minimalgröße (d. h. 1 kB) eingestellt, und die Banknummer wird auf die zweite Potenz von zwei (d. h. vier) eingestellt. Insgesamt können für den Pufferspeicher (d. h. den Übersetzungsverweispuffer), wie bei einer Seitengröße von 4 kB, 128 Einträge betreffend eine beliebige virtuelle Seitennummer zugewiesen werden. Jedoch unterliegt die virtuelle Seitennummer der Einträge, wie einer Bank zuweisbar, einer Einschränkung hinsichtlich jeweils 4 kB. Diese Einschränkung übt auf die Trefferrate (d. h. TLB-Treffer) keinen Einfluss aus, wenn die virtuellen Seitennummern der Einträge, wie dem Übersetzungsverweispuffer zugewiesen, fortlaufend sind. Wenn diese Nummern diskret sind, ist die Trefferrate in gewissem Ausmaß beeinflusst. Wenn, selbst in diesem Fall, eine virtuelle Seite von 1 kB einer Adressenabbildung für jeweils 2 kB unterzogen wird, kann der Einfluss verringert werden. Dieser Einfluss kann vollständig beseitigt werden, wenn die Adressenabbildung für jeweils 4 kB ausfällt.
- Um einen TLB-Treffer/Fehlschlag zu erkennen, muss die Bitzahl für den Adressenvergleich, für das Widerspiegeln bei der Trefferentscheidung in einer Komparatoreinrichtung 15, die für jede der Bänke 11 bis 14 vorhanden ist, entsprechend der Größe der logischen (virtuellen) Seite geändert werden. Gemäß dem Beispiel der Fig. 1 müssen die Bits 10 und 11 der logischen Adresse im Fall einer virtuellen Seitengröße von 1 kB verglichen werden, im Gegensatz zum Fall einer virtuellen Seitengröße von 4 kB. Der Pufferspeicher 1 ist auf die Bitzahl der Felder zum Speichern der entsprechenden Information (oder des übersetzungspaars) zwischen der virtuellen Seitennummer und der Absolutseitennummer eingestellt, damit alle zu vergleichenden Bits abgedeckt werden können. Der Pufferspeicher 1 ist für jedes Übersetzungspaar mit einem Feld ausgebildet, das die dadurch zu unterstützende Größe der virtuellen Seite anzeigt, und die Anzahl der Bits mit für die Trefferentscheidung zu vergleichenden Adressen wird entsprechend dem Wert (oder Größenbit) 52 des Felds geändert. Die Einzelgrößen, deren Vergleichsbitszahl geändert werden muss, sind beispielsweise sowohl die virtuelle Seitennummer der logischen Adresse und die virtuelle Seitenummer, die im Übersetzungspaar im Pufferspeicher enthalten ist. Bezugszeichen hit1 bis hit4 bezeichnen Treffersignale zum Mitteilen der Trefferentscheidungsergebnisse in den einzelnen Bänken 11 bis 14, damit TLB-Treffer/Fehlschläge auf Grundlage der Treffersignale erkannt werden.
- Der Datenprozessor zum Unterstützen des virtuellen Speichers weist Folgendes auf: einen Pufferspeicher mit einem gruppenassoziativen Cachespeicher mit mehreren Bänken, die jeweils über Speicherfelder zum Speichern der entsprechenden Informationen zwischen virtuellen Seitennummern und Absolutseitennummern aufweisen und auf die durch eine gemeinsam benutzte Indexadresse individuell zugegriffen wird; und eine Einrichtung, die das Verfahren zum Erzeugen von Indexadressen für die Pufferspeicher variabel macht. Zum Beispiel wird im Fall einer mehrfachen virtuellen Unterstützung, bei der mehrere Prozesse vorliegen, die jeweils über Adressübersetzungsinformationen verfügen, so dass sie durch ihre Nummern unterschieden werden, entweder das Verfahren des Decodierens nur eines Teils (d. h. der Bits 12 bis 16) der logischen Adresse, wie beispielhaft durch Fig. 2 veranschaulicht, oder das Verfahren des Decodierens des durch Modifizieren (d. h. XOR = Exklusiv-ODER) eines Teils (d. h. der Bits 12 bis 16) der logischen Adresse durch einen Teil der aktuellen Prozessnummer (asid), erhalten wird, wie in Fig. 3 dargestellt, als Adressenspezifizierverfahren zum Indizieren des Eintrags aus dem Pufferspeicher entsprechend dem logischen Wert eines Registers MMUCR.IX angegeben wird. Übrigens sind diejenigen Information der virtuellen Seitennummer VPN, die im Übersetzungspaar im Pufferspeicher 1 enthalten sind, und vpn (16 - 12) entsprechen, wie für den Index zu verwenden, in den Fig. 3 und 2 weggelassen, und sie sind mit VPN (31 - 17) und VPN (11 - 10) spezifiziert. Hierbei beinhaltet die Spezifizierung von vpn (16 - 12) die Information der virtuellen Seitennummer, die die Bits 12 bis 16 der logischen Adresse beinhaltet. Die Spezifizierung von VPN (31 - 17) beinhaltet die Information der virtuellen Seitennummer als Einträge des Pufferspeichers, entsprechend den Bits 17 bis 31 der logischen Adresse.
- Der Datenprozessor zum Unterstützen des virtuellen Speichers verfügt über den Pufferspeicher 1 mit einem gruppenassoziativen Cachespeichern mit vier Wegen mit mehreren Bänken 11 bis 14, die jeweils über Speicherfelder zum Einspeichern der entsprechenden Informationen zwischen der virtuellen Seitennummer VPN und der Absolutseitennummer PPN verfügen und deren einzelne Indexadressen gemeinsam genutzt werden. Wenn die eingespeicherte Information wegen des Auftretens eines Cachefehlschlags aus diesen mehreren Bänken auszutauschen ist, kann die auszutauschende Gruppe dadurch wahlfrei spezifiziert werden, dass durch die zentrale Verarbeitungseinheit eine Software abgearbeitet wird. Zum Beispiel ist das Register MMUCR.RC ein Register, das mit Information von, zwei Bits zu laden ist, um die oben genannten Bänke wahlfrei zu spezifizieren. Wenn eine Wertegruppe in diesem Register durch einen Decodierer 17 decodiert wird, werden Signale BSL1 bis BSL4 erzeugt, um eine der vier Bänke 11 bis 14 auszuwählen. Im Ergebnis ist eine der vier Bänke 11 bis 14, wie durch die Auswählsignale spezifiziert, d. h. ein durch die Indexadresse 2 spezifizierter Eintrag, das Austauschziel. Wenn der Wert des Bits MMUCR.RC in diesem Register MMUCR durch die Hardwarerichtung eingestellt wird, kann die Bankspezifizierung durch diese Hardwareeinrichtung wahlfrei dadurch geändert werden, dass die Software durch die oben genannte zentrale Verarbeitungseinheit (CPU) abgearbeitet wird.
- Die oben genannte Hardwareeinrichtung ist mit dem Register MMUCR.RC als Zählereinrichtung, wie als Zufallszähler, versehen, wie es in Fig. 4 dargestellt ist. Dieser Zählereinrichtung verfügt über eine Potenz von zwei betreffend die Bitzahl, entsprechend der Anzahl (= 4) der Bänke des Pufferspeichers 1. Eine in der oben genannten Hardwareeinrichtung vorhandene Steuerungsschaltung CTRL inkrementiert die Zählereinrichtung um eins, wenn die eingespeicherte Information für den Pufferspeicher 1 auszutauschen ist, und sie setzt das inkrementierte Ergebnis auf die Banknummer für den Austausch, wenn gültige Daten auch im indizierten Speicherfeld irgendeiner Bank eingespeichert sind (d. h., wenn jeder Eintrag jeder der indizierten Bänke ein Gültigkeitsbit V aufweist, das die Gültigkeit "1" anzeigt). Wenn dagegen im indizierten Speicherfeld keine gültigen Daten eingespeichert sind (d. h., wenn jeder indizierte Eintrag ein Gültigkeitsbit V aufweist, das Ungültigkeit "0" anzeigt), lädt die Steuerungsschaltung CTRL die Zählereinrichtung mit der Nummer der Bank, die den Eintrag enthält, für den keine gültigen Daten eingespeichert sind. Gemäß dieser vorbestimmten Regel wird die auszutauschende Bank spezifiziert. Dabei bildet jedes Bit der oben genannten Zählereinrichtung ein Ziel, das durch die von der zentralen Verarbeitungseinheit abgearbeitete Software auf einen wahlfreien Wert zu ändern ist.
- Der Datenprozessor zum Unterstützen des virtuellen Speichers verfügt über einen Adressübersetzungsmechanismus zum Unterteilen des logischen Adressenraums in als "virtuelle Seiten" bezeichnete Einheiten, um dadurch eine logische Adresse auf Seiteneinheit in eine absolute Adresse zu übersetzen. Dieser Adressübersetzungsmechanismus weist Folgendes auf: eine virtuelle Mehrfachunterstützung zum Modifizieren oder Erweitern der logischen Adresse für die Adressenraumkennung (asid), wenn jeder der Prozesse über Adressübersetzungsinformation verfügt, die den gesamten logischen Raum überdeckt; und eine virtuelle Einzelunterstützung, um die logische Adresse für die Adressenraumkennung (asid) weder zu modifizieren noch zu erweitern, wenn ein Teil des logischen Adressenraums ausschließlich mehreren Prozessen zugewiesen ist, so dass jedem Prozess Adressübersetzungsinformation des logischen Adressenraums zugewiesen ist. Der Adressübersetzungsmechanismus kann die virtuelle Mehrfachunterstützung und die virtuelle Einzelunterstützung auswählen. Im Ergebnis ist, wie es in Fig. 5 dargestellt ist, jeder Eintrag im Pufferspeicher nicht nur mit dem übersetzungspaar der virtuellen Seitennummer VPN und der Absolutseitennummer PPN versehen, sondern auch dem Feld der Adressenraumkennung ASID. Der Inhalt dieses Felds wird abhängig von der virtuellen Einzelunterstützung oder der virtuellen Mehrfachunterstützung verschieden verarbeitet. Wenn die virtuelle Seite, die der in einem TLB- Eintrag enthaltenen Adressenraumkennung entspricht, nicht gemeinsam mit einem anderen Prozess benutzt werden kann, wird der Inhalt des Felds der Adressenraumkennung ASID bei der virtuellen Mehrfachunterstützung dazu verwendet, einen Suchtreffer/-Fehlschlag (d. h. TLB-Treffer/TLB-Fehlschlag) für den Pufferspeicher zu erkennen. In diesem Fall wird kein TLB-Treffer erkannt, wenn die Information der virtuellen Seitennummer VPN des im Pufferspeicher eingespeicherten Eintrags mit der Information der virtuellen Seitenadresse VPN übereinstimmt und die Adressenraumkennung ASID für denselben Eintrag nicht mit der aktuellen Adressenraumkennung ASID übereinstimmt. Bei der virtuellen Einzelunterstützung wird der Inhalt des Felds der Adressenraumkennung ASID als Speicherschutzinformation verwendet. In diesem Fall wird, wenn auf Grund eines Unterschieds bei der Adressenraumkennung ein TLB-Fehlschlag auftritt, durch die Software entschieden, ob der Fehlschlag durch einen Unterschied bei der Adressenraumkennung oder bei der virtuellen Seitenadresse verursacht wurde. Wenn der Fehlschlag durch einen Unterschied bei der Adressenraumkennung verursacht wurde, wird der Fehlschlag als Schutzfehler behandelt. Ob die virtuelle Einzelunterstützung oder die virtuelle Mehrfachunterstützung, wie oben angegeben, verwendet wird, wird durch den Werts des Bits MMUCR.SV des Registers MMUCR, wie in Fig. 6 dargestellt, angegeben. Der Wert dieses Bits MMUCR.SV kann durch die durch die zentrale Verarbeitungseinheit abzuarbeitende Software wahlfrei eingetragen werden.
- Dank des oben beschriebenen Aufbaus können die folgenden Wirkungen erzielt werden.
- Der Datenprozessor zum selektiven Unterstützen mehrerer Seitengrößen kann leicht in die Lage versetzt werden, der Forderung hinsichtlich einer Verbesserung des Nutzungswirkungsgrads des Speichers für jeden Prozess zu genügen, in dem die Größe der virtuellen Seiten relativ klein gemacht wird, wenn die Gesamtkapazität des tatsächlich in das System einzubauenden Speichers klein ist. Wenn dabei die maximale virtuelle Seitengröße auf eine Potenz von zwei betreffend die Minimalgröße eingestellt wird, wohingegen die Anzahl der Bänke des gruppenassoziativen Pufferspeichers auf die Potenz von zwei mit demselben Wert eingestellt wird, können Einträge mit derselben Anzahl in Bezug auf eine beliebige virtuelle Seitennummer im Prinzip unabhängig von der Größe der auszuwählenden virtuellen Seite in den Pufferspeicher eingespeichert werden, und zwar selbst dann, wenn das Verfahren zum Spezifizieren der Indexadresse mit dem für die maximale virtuellen Seitengröße identisch gemacht wird. Wenn die Bitzahl beim Adressenvergleich, für Widerspiegelung bei der Trefferentscheidung, unter Verwendung der Information zum Anzeigen der Größe der virtuellen Seite geändert wird, kann die Bitzahl oder -position der Information, die zum assoziativen Abrufen des Pufferspeichers zu vergleichen ist, entsprechend der Größe der virtuellen Seite geändert werden. Wenn der Pufferspeicher zum Unterstützen mehrerer Seitengrößen durch einen gruppenassoziativen Cachespeicher realisiert wird, sind sowohl die Chipbelegungsfläche als auch der Energieverbrauch gegenüber denjenigen Werten beim Aufbau eines CAM auf die Hälfte verringert.
- Gemäß der Maßnahme zum Unterstützen der mehreren Indizierverfahren können diese Verfahren entsprechend dem Nutzungsmodus ausgewählt werden, bei dem viele Prozesse bei virtueller Mehrfachunterstützung parallel gestartet werden, um ein Abfallen der Trefferrate beim Benutzungsmodus zu unterdrücken. Das Abfallen der Trefferrate beim Benutzungsmodus, bei dem viele Prozesse bei virtueller Mehrfachunterstützung parallel gestartet werden, kann dadurch unterdrückt werden, dass ein Teil der logischen Adresse mit der Adressenraumkennung (asid) unter Verwendung derselben logischen Adresse modifiziert wird, um dadurch den Pufferspeicher zu indizieren.
- Gemäß der Maßnahme zum Verbessern des Freiheitsgrads beim Austausch kann die auszutauschende Bank durch die, Software beliebig festgelegt werden, ohne dass der Austauschalgorithmus zum Austauschen des Übersetzungspaars im Pufferspeicher festgelegt wird. Im Ergebnis ist es hinsichtlich des Datenverarbeitungskomforts möglich, der Forderung zu genügen, als Eintrag im Übersetzungsverweispuffer immer ein spezielles Übersetzungspaar einzuspeichern, sowie der Forderung, zu verhindern, dass das spezielle Adressübersetzungspaar ausgetauscht wird. Das Bereitstellen eines Registers zum Anweisen des Austauschziels durch die Software kann für Freiheit beim Austausch entsprechend dem Zufalls-, FIFO- oder LRU-Typ, abhängig vom Algorithmus der Software, gesorgt werden.
- Die Maßnahme für virtuelle Einzelunterstützung und virtuelle Mehrfachunterstützung kann den Nutzungskomfort des Adressübersetzungsmechanismus verbessern. Dieser Nutzungskomfort kann dadurch eher verbessert werden, dass eine dieser Unterstützungsformen durch die Software ausgewählt wird. Wenn die Adressenraumkennung (asid) bei virtueller Mehrfachunterstützung als Speicherschutzinformation bei virtueller Einzelunterstützung verwendet wird, ist es leicht möglich, den Speicherschutz dann zu vervollständigen, wenn die virtueller Einzelunterstützung ausgewählt wird.
- Fig. 1 ist ein erläuterndes Diagramm eines Aufbaus zum Unterstützen mehrerer Seitengrößen in einem Mikrocomputer gemäß einem Ausführungsbeispiel der Erfindung;
- Fig. 2 ist ein erläuterndes Diagramm eines Verfahrens zum Indizieren eines TLB unter Verwendung eines Teils einer virtuellen Seitenadresse in unveränderter Weise;
- Fig. 3 ist ein erläuterndes Diagramm eines Verfahrens zum Indizieren des TLB unter Verwendung eines Teils der virtuellen Seitenadresse und eines Teils einer Adressenraumkennung;
- Fig. 4 ist ein erläuterndes Diagramm eines Aufbaus, der eine Bank, wenn diese auszutauschen ist, eines TLB-Eintrags durch Software wahlfrei bestimmen kann;
- Fig. 5 ist ein erläuterndes Diagramm zum Erläutern verschiedener logischer Adressen einer Seitengröße sowie von Beispielen zum Format des TLB-Eintrags, um diese zu unterstützen;
- Fig. 6 ist ein erläuterndes Diagramm zum Erläutern von Beispielen verschiedener Register für den TLB;
- Fig. 7 ist ein Gesamtblockdiagramm, das einen wesentlichen Teil des Mikrocomputers gemäß einem Ausführungsbeispiel der Erfindung zeigt;
- Fig. 8(A) und 8(B) sind erläuternde Diagramme zum Erläutern einer Adressenkarte, wie sie durch den Mikrocomputer des vorliegenden Ausführungsbeispiels zu unterstützen ist;
- Fig. 9 ist ein erläuterndes Diagramm eines Zugriffsrechts, das durch ein zum Speicherschutz verwendetes Schutzbit PR geregelt wird;
- Fig. 10 ist ein Steuerungs-Hauptflussdiagramm für eine Adressübersetzung;
- Fig. 11 ist ein Steuerungsflussdiagramm zum Auswählen eines Indizierverfahrens für den TLB;
- Fig. 12 ist ein Steuerungsflussdiagramm zum Vergleichen der logischen Adresse und der Adresse einer durch die erstere indizierten Marke;
- Fig. 13 ist ein Flussdiagramm eines Teils der Schutzsteuerung, der die Steuerung zur Nutzung einer ASID für den Speicherschutz bei virtueller Einzelunterstützung enthält;
- Fig. 14 ist ein Flussdiagramm, das eine Prozedur zum Erzeugen einer absoluten Adresse entsprechend einer Seitengröße veranschaulicht;
- Fig. 15 ist ein Steuerungsflussdiagramm zum Spezifizieren einer auszutauschenden Bank durch Hardware;
- Fig. 16 ist ein Flussdiagramm, das ein Beispiel zur Verarbeitung einer TLB-Fehlschlag-Handhabungsmaßnahme zum Aktualisieren des TLB-Eintrags, wie durch eine durch den TLB- Fehlschlag hervorgerufene Ausnahme gestartet, zeigt;
- Fig. 17 ist ein Flussdiagramm, das die erste Hälfte des Ausnahmeerkennungsprozesses hinsichtlich des TLB bei virtueller Einzelunterstützung zeigt;
- Fig. 18 ist ein Flussdiagramm, das die zweite Hälfte des Ausnahmeerkennungsprozesses hinsichtlich des TLB bei virtueller Einzelunterstützung zeigt;
- Fig. 19 ist ein erläuterndes Diagramm, das alle Unterschiede zwischen virtueller Einzelunterstützung und virtueller Mehrfachunterstützung zeigt;
- Fig. 20(A) und 20(B) sind erläuternde Diagramme, die Konzepte der virtuellen Einzelunterstützung und der virtuellen Mehrfachunterstützung zeigen;
- Fig. 21 ist ein Logikschaltbild, das ein Beispiel der Steuerungslogik zum Steuern des Adressenvergleichsergebnisses zeigt, wie es bei einem Treffersignal in jeder Bank des TLB widergespiegelt werden soll; und
- Fig. 22 ist ein Blockdiagramm, das einen Teil von Fig. 7 detaillierter zeigt.
- Fig. 7 zeigt einen wesentlichen Teil eines Mikrocomputers gemäß einem Ausführungsbeispiel eines erfindungsgemäßen Datenprozessors. Der Mikrocomputer des vorliegenden Ausführungsbeispiels ist auf einem Halbleitersubstrat aus einkristallinem Silicium durch die gut bekannte Herstelltechnik für integrierte Halbleiterschaltungen hergestellt, wobei jedoch keine spezielle Beschränkung hierauf besteht. In Fig. 7 sind als repräsentative Schaltungsblöcke die Folgenden dargestellt: ein Logikadressenbus VABUS, ein Absolutadressenbus PABUS, ein Datenbus DBUS, eine zentrale Verarbeitungseinheit (CPU) 3, ein Cachespeicher (CACHE) 4, ein Übersetzungsverweispuffer (TLB) 1 als Pufferspeicher und eine TLB-Steuerungseinrichtung (TLBC) 5. Die CPU 3 erfasst eine Anweisung aus einem nicht dargestellten Programmspeicher, und sie verarbeitet Daten entsprechend der Beschreibung in der Anweisung. Wenn ein externer Zugriff erforderlich ist, gibt die CPU 3 eine logische Adresse an den Logikadressenbus VABUS aus, und sie führt eine Eingabe/Ausgabe der Daten über den Datenbus DBUS aus. Der Cachespeicher 4 ist beispielsweise vom gruppenassoziativen Typ mit vier Wegen, wobei jedoch keine spezielle Beschränkung hierauf besteht. Das Band wird unter Verwendung eines Teils vom Logikadressenbus VABUS zugeführten logischen Adresse indiziert. Die absolute Adresse wird im Marke-Abschnitt des Eintrags eingespeichert. Die logische Adresse des so indizierten Marke-Abschnitts wird durch den Übersetzungsverweispuffer 1 übersetzt und mit der auf den Absolutadressenbus PABUS ausgegebenen absoluten Adresse verglichen. Cache-Fehlschläge/Treffer werden entsprechend dem Vergleichsergebnis erkannt.
- Der Mikrocomputer des vorliegenden Ausführungsbeispiels unterteilt den Logikadressenraum in als "virtuelle Seite" bezeichnete Einheiten, und er unterstützt den virtuellen Speicher für die Adressübersetzung von einer logischen Adresse in eine absolute Adresse auf Seiteneinheit. Der oben genannte Übersetzungsverweispuffer 1 speichert ein Übersetzungspaar zwischen einer virtuellen Seitennummer VPN und einer entsprechenden Absolutseitennummer PPN als TLB-Eintrag ein. Die TLB-Steuerungseinrichtung 5 übersetzt die von der zentralen Verarbeitungseinheit 3 ausgegebene logische Adresse unter Verwendung des Übersetzungsverweispuffers 1 in eine absolute Adresse. Dieser Übersetzungsverweispuffer 1 besteht aus einem gruppenassoziativen Cachespeicher mit vier Wegen mit vier die Indexadressen gemeinsam nutzenden Bänken. Obwohl in Fig. 7 nur eine Bank 11 repräsentativ dargestellt ist, um komplizierte Darstellungen zu vermeiden, sind andere Bänke 12 bis 14, wie die Bank 11, tatsächlich in der Richtung zur Zeichnung und von dieser weg angeordnet, wie es in Fig. 1 dargestellt ist. Der Adressübersetzungsmechanismus für die oben genannte virtuelle Unterstützung besteht aus den oben genannten Übersetzungsverweispuffer 1, der TLB- Steuerungseinrichtung 5 und der CPU 3 sowie der Systemsoftware oder dem Betriebssystem für die Adressübersetzung und den Speicherschutz.
- Hier wird vorab den Adressenraum des Mikrocomputers des vorliegenden Ausführungsbespiels beschrieben. Beim Mikrocomputer des vorliegenden Ausführungsbeispiels erzeugt die zentrale Verarbeitungseinheit 3 eine logische Adresse von 32 Bits, um den logischen Adressenraum von 4 GB zu unterstützen. Die logische Adresse ist durch eine später beschriebene Adressenraumkennung (oder Raumkennung) asid erweiterbar gemacht. In den Fig. 8(A) und 8(B) ist die Adressenabbildung des unterstützten logischen Adressenraums veranschaulicht. In diesen Figuren sind die Felder, wie "abgebildet", diejenigen, die der Adressübersetzung unter Verwendung des Übersetzungsverweispuffers (TLB) 1 zu unterziehen sind. Auf die Felder H'FFFFFFFF (wobei H' die Hexadezimalnotation bezeichnet) bis H'80000000 kann im privilegierten Modus zugegriffen werden, und es wird auf einen Adresserfehler entschieden, wenn ein Zugriff im Benutzermodus erfolgt. Ein Feld P4 ist ein Steuerungsraum, der durch ein Peripheriesteuerungsregister abgebildet wird. Felder P1 und P2 sind solche, in denen die entsprechenden absoluten Adressen festgelegt sind, und sie unterliegen keiner Adressübersetzung unter Verwendung des Übersetzungsverweispuffers 1. Die logischen Adressen dieser Felder P1 und P2 werden dadurch in absolute Adressen übersetzt, dass eine vorbestimmte Konstante addiert oder subtrahiert wird. Im privilegierten Modus erfolgt daher keine Ausnahme hinsichtlich der Adressübersetzung, wie ausgehend von einem TLB-Fehlschlag, wenn auf die Felder P1 und P2 zugegriffen wird. Insbesondere erfährt das Feld P2 keinen Cachevorgang durch den Cachespeicher CACHE, und es erfolgt kein Cachevorgang für das Feld P1.
- Der Mikrocomputer des vorliegenden Ausführungsbeispiels verfügt über den privilegierten Modus und den Benutzermodus, wie oben beschrieben, und es wird durch den Wert des Modusbits MD in einem Statusregister SR in der zentralen Verarbeitungseinheit 3 angezeigt, ob der Mikrocomputer im privilegierten Modus oder im Benutzermodus arbeitet. Der Betrieb im Benutzermodus wird durch MD = 0 angezeigt, und der Betrieb im privilegierten Modus wird durch MD = 1 angezeigt. Im privilegierten Zustand (wenn in den privilegierten Modus versetzt), wie in den Fig. 8(A) und (B) dargestellt, ist es möglich, auf den Adressenraum (von P1 bis P4) zuzugreifen, der einen Adressierfehler verursacht, wenn auf ihn im Benutzerstatus (wie in den Benutzermodus versetzt) zugegriffen wird, so dass eine privilegierte Anweisung oder eine Systemsteuerungsanweisung, die im Benutzerstatus nicht ausgeführt werden kann, im Unterschied zum Benutzerstatus ausgeführt werden kann.
- Im logischen Adressenraum von 4 GB, wie in Fig. 8(A) und 8(B) dargestellt, sind das Feld P0 und das Feld P3 mehrfach mit einer als virtuelle Seite bezeichneten Einheit unterteilt, so dass die logische Adresse mit der Einheit der Unterteilungsseiten in die absolute Adresse übersetzt wird, wobei jedoch keine spezielle Beschränkung hierauf besteht. Die vom Mikrocomputer des vorliegenden Ausführungsbeispiels zu unterstützenden virtuellen Seiten entsprechen zwei Arten von 4 kB und 1 kB. Dies genügt der Beziehung, dass die Maximalgröße (= 4 kB) der zu unterstützenden Seiten auf eine Potenz von 2 eingestellt ist, wobei die Anzahl ( = 4) der Bänke des Übersetzungsverweispuffers 1 nicht kleiner als eine Potenz von 2 bezüglich der ersteren ist. Wenn die virtuellen Seitengröße 1 kB beträgt, wie in Fig. 5 dargestellt, zeigen bei den durch die zentrale Verarbeitungseinheit zu erzeugenden logischen Adressen (d. h. den Adressen mit 32 Bits vom Bit 0 bis zum Bit 31) die Bits 0 bis 9 einen Offset, wohingegen die Bits 10 bis 31 auf die virtuellen Seitennummern (oder die virtuellen Seitenadressen) gesetzt sind. Wenn die virtuelle Seitengröße 4 kB beträgt, zeigen die Bits 0 bis 11, bei den logischen Adressen, einen Offset, wohingegen die Bits 12 bis 31 auf die virtuellen Seitennummern (oder die virtuellen Seitenadressen) gesetzt sind. Der Index für den Übersetzungsverweispuffer 1 ist beispielhaft durch die Information der Bitpositionen der weniger signifikanten fünf Bits der virtuellen Seitenadressen mit einer Seitengröße von 4 kB angegeben, d. h. durch die Bits 12 bis 16 der logischen Adressen von 32 Bits, unabhängig davon, ob die Seitengröße 4 kB oder 1 kB ist. Im Fall einer Übersetzung von einer logischen in eine absolute Adresse werden die absoluten Adressen dadurch erfasst, dass die Absolutseitennummer dem Eintrag entnommen wird, der der virtuellen Seitennummer der logischen Adresse entspricht, und die Offsetinformation betreffend die logische Adresse auf der weniger signifikanten Seite der Absolutseitennummer addiert wird.
- Wenn ein TLB-Fehlschlag auftritt, wird die durch den Eintrag im Übersetzungsverweispuffer 1 abzurufende Information (d. h. der Seitentabelleneintrag) vorab durch die Software erzeugt und im externen Speicher (z. B. dem Speicher RAM in Fig. 22), der aus Fig. 7 weggelassen ist, eingespeichert. Genauer gesagt, beinhaltet der Seitentabelleneintrag für den virtuellen Speicher die Beschreibung der Übersetzungsinformation, die die Entsprechung zwischen der virtuellen Seitennummer VPN und der Absolutseitennummer PPN oder die Zugriffsattribute anzeigt, und er ist in die im externen Speicher ausgebildete Seitentabelle eingespeichert. Für eine schnelle Adressübersetzung wird der in der Seitentabelle eingespeicherte Eintrag teilweise in den Bänken 11 bis 14 des oben genannten TLB 1 eingespeichert. Die Adressen der Seitentabelle im externen Speicher werden vorab in das Übersetzungstabellenregister (TTB) eingetragen, wie dies unter Bezugnahme auf Fig. 6 beschrieben wird. Wenn ein TLB-Fehlschlag auftritt, werden die im Übersetzungstabellenregister 53 eingetragene Basisadresse und die virtuelle Seitennummer beim Fehlschlag von der CPU 3 dazu verwendet, auf die oben genannte Seitentabelle zuzugreifen, um dadurch den Eintrag zu ermitteln, der die dabei der virtuellen Seitennummer entsprechende Absolutseitennummer enthält. Der so bestimmte Eintrag wird z. B. in die Bank im TLB 1 eingeschrieben. Im Ergebnis wird die absolute Adresse erzeugt, die der logischen Adresse zu diesem Zeitpunkt entspricht.
- Der in jede Bank des TLB 1 einzuspeichernde Eintrag ist zweckdienlicherweise in einen Adressenteil und einen Datenteil unterteilt, wie es detailliert in Fig. 5 dargestellt ist. Der Adressenteil besteht aus den Informationen VPN (31 - 17) und VPN (11 - 10) der virtuellen Seitennummer, einem Gültigkeitsbit V (von 1 Bit), das die Gültigkeit des Eintrags anzeigt, einer Raumkennung ASID (von 8 Bits), einem Größenbit 5% (von 1 Bit) und einem Gemeinsamnutzungsstatus SH (von 1 Bit). Der Datenteil besteht aus einem Schutz PR (von 2 Bits) zum Speicherschutz, der Absolutseitennummer PPN (von 22 Bits), entsprechend der virtuellen Seitennummer, einer Speichermarke (dirty bit) D (von 1 Bit) und einem cachespeicherbaren Bit C (von 1 Bit). Die Informationen der durch den Adressenteil eingespeicherten virtuellen Seitennummern sind die Bits 10 bis 11 und die Bits 17 bis 31 der logischen Adressen von 32 Bits, woraus die Bits ausgeschlossen sind, die zum Indizieren des Bitformats verwendet werden. Die ersteren Bits werden durch die VPN (11 - 10) wiedergegeben, wohingegen die letzteren Bits durch die VPN (31 - 17) wiedergegeben werden. Der Gemeinsamnutzungszustand SH zeigt an, ob die entsprechende Seite von den mehreren Prozessen gemeinsam benutzt wird, und der Nichtgemeinsamnutzungszustand ist durch SH = 0 angezeigt, wohingegen der Gemeinsamnutzungszustand durch SH = 1 angezeigt ist. Die Raumkennung ASID wird in Zugehörigkeit zu einem speziellen Prozess verwendet, um die virtuelle Seite zu definieren, und sie wird auch als "Adressenraumkennung" bezeichnet. Der Schutz PR ist ein Datenwert, der codiert ist, um das Zugriffsrecht für die Seite zu definieren, wobei dieses in den in Fig. 9 dargestellten Modi durch Kombinieren seiner Werte definiert ist. Die Bitgröße 52 ist ein Bit zum Spezifizieren der virtuellen Seitengröße, und eine Seitengröße von 4 kB ist durch den logischen Wert 1 spezifiziert, wohingegen eine Seitengröße von 1 kB durch den logischen Wert 0 spezifiziert ist.
- Nun werden die Konzepte der virtuellen Einzelunterstützung und der virtuellen Mehrfachunterstützung unter Bezugnahme auf die Fig. 20(A) und 20(B) beschrieben. Die virtuelle Mehrfachunterstützung ist dahingehend definiert, dass sie die logische Adresse mittels der Adressenraumkennung asid modifiziert oder erweitert, wenn jeder der mehreren Prozesse über Adressübersetzungsinformation verfügt, die sich über den gesamten logischen Raum erstreckt. Bei der virtuellen Einzelunterstützung wird dagegen ein Teil des logischen Adressenraums ausschließlich den mehreren Prozessen zugewiesen. Anders gesagt, ist die virtuelle Einzelunterstützung so definiert, dass sie die logische Adresse mittels der Adressenraumkennung asid weder modifiziert noch erweitert, wenn jedem Prozess Adressübersetzungsinformation betreffend den zugewiesenen logischen Adressenraum aufweist. So wird bei der virtuellen Einzelunterstützung der logische Adressenraum den mehreren Prozessen ausschließlich so zugewiesen, dass jeder dem Prozess zugewiesene logische Adressenraum seine charakteristische Adressenübersetzungsinformation aufweist, wie es in Fig. 20(B) dargestellt ist. Dies ermöglicht es, dass nur eine Adressübersetzungstabelle existiert. Unter Verwendung dieser einen Adressübersetzungstabelle wird eine bestimmte logische Adresse A eindeutig in eine entsprechende absolute Adresse D übersetzt. Bei virtueller Mehrfachunterstützung ist dagegen der logische Adressenraum auf wechselseitig überlappende Weise den mehreren Prozessen zugewiesen. Demgemäß müssen die Adressenübersetzungsinformationen für die einzelnen Prozesse in den voneinander verschiedenen Adressenübersetzungstabellen enthalten sein. Im Ergebnis wird die logische Adresse A durch voneinander verschiedene Adressenübersetzungstabellen i und j in verschiedene absolute Adressen B und C umgesetzt. Dabei wird mittels der Adressenraumkennung unterschieden, zu welchem Prozess die übersetzende logische Adresse A gehört. Bei der virtuellen Mehrfachunterstützung entspricht, gemäß Fig. 20(A), die Adressübersetzungstabelle i der Adressenraumkennung i, wohingegen die Adressübersetzungstabelle j der Adressenraumkennung j entspricht. Diese Adressenraumkennungen können als Unterscheidungszahlen bei den mehreren Prozessen unter Verwendung (oder beim Zugreifen) auf einen jeweils gleichen logischen Adressenraum angesehen werden. Fig. 10 veranschaulicht die Unterschiede zwischen der virtuellen Einzelunterstützung und der virtuellen Mehrfachunterstützung hinsichtich des logischen Raums, der Übersetzungsinformation und des Schutzes. In Fig. 19 bezeichnen Buchstaben PR die Schutzinformation, wie in Fig. 9 dargestellt.
- In Fig. 7 verfügt die oben genannte TLB-Steuerungseinrichtung 5 über eine Steuerungseinrichtung (CTRL) 50, ein Tabelleneintrag-Hoch(PTEH = page table entry high)-Register 51, ein Seitentabelleneintrag-Niedrig(PTEL = page table entry low)-Register 52, ein Übersetzungstabellebasis(TTB = translation table base)-Register 53, ein TLB-Ausnahmeadresse(TEA = TLB-exception address)-Register 54 und ein Steuerungsregister (MMUCR) 55. Dieser Register sind mit der CPU 3 verbunden, wie es unter Bezugnahme auf Fig. 22 beschrieben wird. Davon kann durch die CPU 3 hinsichtlich zumindest des TEA-Registers 54 und des MMUCR-Registers 55 direkt gelesen/- geschrieben werden. Auch kann die CPU 3 auf die restlichen Register 51 bis 53 zugreifen.
- Wie es in Fig. 6 dargestellt ist, sind das PTEH-Register 51 und das PTEL-Register 52 mit einem Feld versehen, das einen Seitentabelleneintrag zum Aktualisieren oder Hinzufügen eines Eintrags im TLB 1 zum Zeitpunkt eines TLB-Fehlschlags einspeichern kann. Das PTEH-Register 51 wird von der zentralen Verarbeitungseinheit 3 durch Abarbeiten der Software mit der Raumkennung asid des vorliegenden Prozesses geladen. Darüber hinaus erhält das PTEH-Register 51 auch eine Funktion zum Einspeichern der virtuellen Seitenadresse VPN beim TLB- Fehlschlag, wie von der CPU 3 ausgegeben, wenn ein TLB-Fehlschlag auftritt. Der Offset der von der CPU 3 ausgegebenen logischen Adresse wird in einer nicht dargestellten Latchstufe in der CTRL 50 eingespeichert. Die Basisadresse der aktuellen Seitentabelle wird im TTB-Register 53 eingespeichert. Das TEA-Register 54 führt eine Einspeicherung der logischen Adresse aus, wenn eine Ausnahme hinsichtlich des TLB oder eines Adressenfehlerausnahme auftritt. Das MMUCR-Register 55 weist Folgendes auf: ein Bit AT (das beim logischen Wert 1 gültig und beim logischen Wert 0 ungültig anzeigt), das anweist, ob eine Adressenübersetzung gültig oder ungültig zu machen ist; ein Bit TF, das das Fluten des TLB 1 anzeigt; ein Zufallszählerfeld RC von zwei Bits; ein Indiziermodusbit IX zum Spezifizieren des Indiziermodus; und ein virtuelles Einzelbit SV (zum Auswählen der virtuellen Einzelunterstützung bei SV = 1 und der virtuellen Mehrfachunterstützung bei SV = 0), um anzuweisen, ob die virtuelle Einzelunterstützung oder die virtuelle Mehrfachunterstützung auszuwählen ist. Wenn das oben genannte Indiziermodusbit IX auf 1 steht, wird das Indizierverfahren unter Verwendung der asid (4 - 0), d. h. der Bits 0 bis 4 der aktuellen Raumkennung und der Bits 12 bis 16 der von der zentralen Verarbeitungseinheit 3 ausgegebenen virtuellen Seitennummer vpn ausgeführt, wie in Fig. 3 dargestellt. Im Fall IX = 0 wird dagegen das Indizierverfahren unter Verwendung der Bits 12 bis 16 der von der zentralen Verarbeitungseinheit 3 ausgegebenen virtuellen Seitennummer vpn ausgewählt, wie in Fig. 2 dargestellt. Genauer gesagt, wird die Indexadresse für den Fall IX = 1 durch ein Exklusiv-ODER-Gatter XOR erzeugt, das die Bits 0 bis 4 der Raumkennung asid gemäß dem PTEH-Register 51 sowie die Bits 12 bis 16 der von der CPU 3 ausgegebenen virtuellen Seitennummer vpn, d. h. die vpn (16 - 12), aufnimmt, wie in Fig. 7 dargestellt. Ein Selektor 18 in Fig. 7 wählt entweder das durch das Exklusiv-ODER-Gatter XOR abgetrennte Ausgangssignal oder die vpn (16 - 12) als Indexadresse aus. Der Steuerungsvorgang für diese Auswahl wird entsprechend dem Wert des Indiziermodusbit IX durch das von der CTRL 50 ausgegebene Auswählsignal 550 bestimmt.
- Von den virtuellen Seitenummern vpn (31 - 10) der von der CPU 3 ausgegebenen logischen Adressen, wie in Fig. 7 dargestellt, wird die vpn (16 - 12), entsprechend den Bits 12 bis 16, zum Erzeugen der Indexadresse 2 verwendet, die für die vier Bänke 11 bis 14 im TLB gemeinsam benutzt wird. Da die virtuelle Seitennummer durch fünf Bits wiedergegeben wird, wie oben beschrieben, werden die 32 Einträge jeder der Bänke ausgewählt und mittels der gemeinsam benutzten Indexadresse 2 einzeln ausgelesen. Jeder der auszuwählenden Einträge enthält, als Information, die VPN (31 - 17), die VPN (11 - 10), die ASID, das SH, das 52, das V, die PPN (31 - 10), das PR, das C und das D. Mit den Informationen der ausgewählten und ausgelesenen Einträge wird Folgendes ausgeführt: die gelesenen VPN (31 - 17) werden durch einen Komparator 151 mit den VPN (31 - 17) der von der zentralen Verarbeitungseinheit 3 ausgegebenen logischen Adressen verglichen; die VPN (11 - 10) werden durch einen Komparator 152 mit den VPN (11 - 10) der von der zentralen Verarbeitungseinheit 3 ausgegebenen logischen Adressen verglichen; und die ausgelesene ASID wird durch einen Komparator 153 mit der vom PTEH-Register 51 eingespeicherten aktuellen Raumkennung verglichen. Hinsichtlich der Vergleichsergebnisse entscheidet die Steuerungslogik 154 dadurch auf einen Treffer/Fehlschlag betreffend die Bank 11, dass sie die Werte des Gemeinsamnutzungsstatus SH, des Größenbits 52, des virtuellen Einzelbits 5 V und des Modusbits MD berücksichtigt. Das Treffersignal hit1 ist das Entscheidungsergebnis betreffend einen Fehlschlag/Treffer in der Bank 11. Die oben genannten Komparatoren 151 bis 153 und die Steuerungslogik 154 sind für jede der Bänke 11 bis 14 vorhanden. In Fig. 7 sind die Treffersignale hit2 bis hit4 repräsentativ für die einzelnen Bänke 12 bis 14 dargestellt. Gemäß dem vorliegenden Ausführungsbeispiel nehmen die Ausgangssignale der einzelnen Komparatoren 151 bis 153 bei einem Treffer den hohen Pegel ein. Die hohen Pegel der Treffersignale hit1 bis hit4 werden als Trefferpegel verwendet. Die Steuerungsschaltung 50 entscheidet auf einen TLB-Treffer, wenn eines der Treffersignale hit1 bis hit4 auf den Trefferpegel gesetzt ist. Die in Fig. 7 auftretende Bezugszahl 501 bezeichnet ein TLB-Treffersignal zum Informieren der CPU 3 über das Entscheidungsergebnis betreffend einen TLB-Treffer/Fehlschlag. Wenn ein TLB-Fehlschlag auftritt, wird der Eintrag im Übersetzungsverweispuffer 1 ausgetauscht. Bei diesem Austausch wird der Inhalt des auszutauschenden Eintrags in das PTEH-Register 51 und das PTEL-Register 52 eingespeichert, damit die auszutauschende Information vom PTEH-Register 51 und vom PTEL-Register 52 geliefert und in den TLB 1 abgerufen wird. Das Indizierverfahren zum Auswählen des auszutauschenden Eintrags ist identisch mit dem beim oben genannten Lesezeitpunkt, wobei jedoch durch den Wert (MMUCR.RC) des RC im MMUCR-Register 55 festgelegt wird, in welche Bank (oder Gruppe) dieser Eintrag einzuspeichern ist.
- Fig. 21 zeigt ein Beispiel für den Logikaufbau der oben genannten Steuerungslogik 154. Die Zahl 1541 bezeichnet ein UND-Gatter mit drei Eingängen; die Zahl 1542 ein ODER-Gatter mit zwei Eingängen; und die Zahl 1543 ein ODER-Gatter mit zwei Eingängen. Das ODER-Gatter 1542 nimmt sowohl das Ausgangssignal des Komparators 152 oder das Ergebpis des Vergleichs zwischen der im indizierten TLB-Eintrag (d. h. der durch die Indexadresse ausgewählte und ausgelesene Eintrag) enthaltenen VPN (11 - 10) und der in der logischen Adresse enthaltenen vpn (11 - 10) sowie das vom oben genannten, indizierten TLB-Eintrag herrührende Größenbit 52 auf. Wenn das Größenbit 52 auf 1 gesetzt ist, so dass ein virtuelle Seitengröße von 4 kB angezeigt wird, ist es nicht erforderlich, die VPN (11 - 10) im TLB-Eintrag und die vpn (11 - 10) von der CPU 3 beim Adressenvergleich zum Erkennen eines TLB- Fehlschlags/Treffers zu vergleichen. Beim Zustand des Größenbits SZ = 1 spiegelt sich daher das Vergleichsergebnis für die oben genannten Adressenbits 11 und 10 nicht im Ausgangssignal hit1 des UND-Gatters 1541 wider. Wenn das Größenbit S2 auf 0 gesetzt ist, um eine virtuelle Seitengröße von 1 kB anzuzeigen, ist der Vergleich zwischen den Adressenbits 11 und 10 für die Erkennung eines TLB-Fehlschlags/- Treffers erforderlich, und das Vergleichsergebnis spiegelt sich im Signal hit1 wider.
- Das oben genannte ODER-Gatter 1543 nimmt sowohl das Ausgangssignal des Komparators 153 oder das Ergebnis des Vergleichs zwischen der im indizierten TLB-Eintrag enthaltenen Adressenraumkennung ASID und der aktuellen Adressenraumkennung (oder der vom PTEH-Register 51 ausgegebenen Adressenraumkennung) asid als auch das vom oben genannten indizierten TLB-Eintrag herrührende Gemeinsamnutzungsbit SH auf. Wenn sich dieses Gemeinsamnutzungsbit SH auf 1 befindet, wird der Zustand "gemeinsame Nutzung der virtuellen Seite für die Prozesse" angezeigt. In diesem Zustand ist daher beim Adressenvergleich zum Erkennen eines TLB-Fehlschlags/- Treffers kein Vergleich zwischen den Adressenraumkennungen erforderlich. Beim Zustand SH = 1 des Gemeinsamnutzungsbits spiegelt sich daher das Vergleichsergebnis zwischen den Adressenraumkennungen nicht im Ausgangssignal hit1 des UND- Gatters 1541 wider. Wenn das Gemeinsamnutzungsbit SH im oben genannten Index auf 0 gesetzt ist, um den "Nichtgemeinsamnutzungszustand für die virtuelle Seite hinsichtich der Prozesse "anzuzeigen", ist der Vergleich zwischen den Adressenraumkennungen beim Adressenvergleich zum Erkennen eines TLB- Fehlschlags/Treffers erforderlich. Beim Zustand SH = 0 des Gemeinsamnutzungsbits spiegelt sich daher das Vergleichsergebnis zwischen den Adressenraumkennungen im Ausgangssignal hit1 des UND-Gatters 1541 wider.
- Bei der virtuellen Einzelunterstützung wird die dem TLB-Eintrag eigene, oben genannte Adressenraumkennung ASID als Speicherschutzinformation (oder als Domänennummer) verwendet. Nicht nur bei der virtuellen Einzelunterstützung sondern auch bei der virtuellen Mehrfachunterstützung wird der Gemeinsamnutzungs- oder Nichtgemeinsamnutzungszustand durch das Gemeinsamnutzungsbit SH angezeigt. Wenn fehlende gemeinsame Benutzung angezeigt wird, wird eine Fehlübereinstimmung zwischen der aktuellen Adressenraumkennung asid und der im TLB-Eintrag enthaltenen Adressenraumkennung ASID bei virtueller Mehrfachunterstützung als TLB-Fehlschlag erkannt. Wenn fehlende gemeinsame Benutzung angezeigt wird, wird dagegen, bei virtueller Einzelunterstützung, eine Fehlübereinstimmung zwischen den Adressenraumkennungen asid und ASID dazu verwendet, die TLB-Schutzfehlerausnahme zu erkennen. Um dies zu realisieren, ist die Steuerungsschaltung 50 mit einem UND- Gatter 502, wie in Fig. 21 dargestellt, als einer Logikmaßnahme zum Prüfen des Zugriffsrechts versehen. Auf das invertierte Ausgangssignal des oben genannten ODER-Gatters 1543, das virtuelle Einzelbit SV vom MMUCR-Register und das invertierte Signal des Modusbits MD im Statusregister in der zentralen Verarbeitungseinheit 3 hin erzeugt das UND-Gatter 502 ein TLB-Schutzfehlerausnahme-Erkennungssignal 503. Dieses Erkennungssignal 503 weist beim Erkennungspegel der TLB- Schutzfehlerausnahme hohen Pegel auf. Diese TLB-Schutzfehlerausnahme wird durch das Signal 503 nur dann erkannt, wenn die Adressenraumkennungen nicht übereinstimmen und nicht gemeinsam benutzt werden, (d. h. wenn sich das Ausgangssignal des ODER-Gatters 1543 auf niedrigem Pegel befindet) und wenn die Bedingungen für die virtuelle Einzelunterstützung (SV - 1) und den Benutzermodus (MD = 0) erfüllt sind. Genauer gesagt, wird im Wesentlichen auf einen TLB-Fehlschlag entschieden, wenn die Adressenraumkennungen nicht übereinstimmen und sie bei der virtuellen Einzelunterstützung nicht gemeinsam benutzt werden. Dieser Zustand wird als TLB-Schutzfehlerausnahme zum Speicherschutz eingestellt. Beim durch das Modusbit MD = 1 angezeigten privilegierten Status ist es erwünscht, dass auch auf die einem anderen Prozess zugewiesene virtuelle Seite zugegriffen werden kann. Beim privilegierten Status mit MD = 1 wird daher keine TLB-Schutzfehlerausnahme erkannt.
- Fig. 10 ist ein Hauptflussdiagramm, das den Steuerungsvorgang für eine Adressenübersetzung durch die Steuerungsschaltung 50 veranschaulicht. Dieser Steuerungsvorgang ist grob in einen Schritt L1 des Indizierens des Übersetzungsverweispuffers 1, einen Schritt L2 des Vergleichens der Adressen und des Prüfens des V-Bits, einen Schritt L3 des Überprüfens des Zugriffsrechts sowie einen Schritt L4 des Erzeugens der absoluten Adresse unterteilt. Diese Schritte werden durch die CPU 3 und die Steuerungseinrichtung 5 gesteuert.
- Im Schritt L1 des Indizierens des Übersetzungsverweispuffers 1 wird die bei diesem Schritt zu verwendende logische Adresse unabhängig von ihrer Größe auf vpn (16 - 12) eingestellt. In diesem Indizierschritt wird durch den Wert (MMUCR.IX) des IX des MMUCR. Registers 55 festgelegt, ob die durch den Abschnitt asid (4 - 0) der Raumkennung asid ausgeschnittene logische Adresse vom Exklusiv-ODER-Gatter XOR als Indexadresse zu verwenden ist oder nicht. Wenn sich MMUCR.IX auf 1 befindet, wie in Fig. 11 dargestellt, wird die oben genannte, verwendete logische Adresse durch die asid (4 - 0) für die Indexadresse ausgeschnitten. Wenn sich MMUCR.X auf 0 befindet, wird dagegen die vpn (16 - 12) unverändert als Indexadresse verwendet. Das erstere Indizierverfahren ist in Fig. 3 veranschaulicht, wohingegen in Fig. 2 veranschaulicht ist. Wenn der TLB 1 indiziert wird, wird einer der, 32 Einträge aus jeder der Bänke 11 bis 14 ausgewählt und ausgelesen. Jeder auszuwählende Eintrag enthält die VPN (31 - 12), die VPN (11 - 10), die ASID, das SH, das 52, das V, die PPN (31 - 10), das PR, das C und das D als Information.
- In Fig. 12 ist ein Beispiel zur Prozedur des Adressenvergleichs dargestellt, die im Schritt L2 des Vergleichens der Adressen und des Prüfens des V-Bits auszuführen ist. Die hier dargestellte Prozedur beruht auf der Logik der in Fig. 21 dargestellten Steuerungslogik 154, jedoch ist die Erkennung der TLB-Schutzfehlerausnahme auch als Vergleich mit der Raumkennung ASID in Betracht zu ziehen. Wie sich das Objekt des Adressenvergleichs in den Treffersignalen hit1 bis hit4 widerspiegeln soll, wird wie folgt entschieden. Zu allererst wird abhängig davon, ob das SH auf 1 steht oder nicht, grob entschieden, ob die Raumkennung als Objekt des Adressenvergleichs zu berücksichtigen ist oder nicht. Ob die VPN (11 - 10) als Objekt des Adressenvergleichs zu berücksichtigen ist, wird abhängig davon entschieden, ob das 52 auf 0 steht oder nicht. Insbesondere bei der virtuellen Einzelunterstützung (SV = 1) werden die Internfeld-Daten der Raumkennung ASID als Speicherschutzinformation verwendet. Bei der virtuellen Einzelunterstützung und im privilegierten Modus (SV = 1 und MD = 1) wird jedoch das Feld der Raumkennung ASID als Vergleichsobjekt ausgeschlossen, so dass auf die im privilegierten Modus für einen anderen Prozess zugewiesen virtuelle Seite auch vom aktuellen Prozess aus zugegriffen werden kann, so dass keine TLB-Schutzfehlerausnahme erkannt werden soll.
- Durch diesen Index wird der TLB-Eintrag aus dem TLB 1 gelesen. Auf Grundlage des Gemeinsamnutzungsstatus SH im gelesenen TLB-Eintrag wird entschieden, ob die Raumkennung ASID beim Adressenvergleich zu berücksichtigen ist oder nicht. Die Raumkennung ASID wird nicht als Objekt des Adtessenvergleichs berücksichtigt, wenn SH = 1 (gemeinsame Benutzung gilt), jedoch wird sie im Fall von SH = 0 (keine gemeinsame Benutzung) als Objekt des Adressenvergleichs berücksichtigt. Darüber hinaus wird die Raumkennung ASID beim Erkennen einer TLB-Schutzfehlerausnahme nicht berücksichtigt, wenn der Wert (MMUCR.SV) des SV im MMUCR-Register 55 auf 1 gesetzt ist, so dass die virtuelle Einzelunterstützung eingestellt ist, und wenn das Modusbit SR. MD des Statusregisters 51k auf 1 steht (d. h., die zentrale Verarbeitungseinheit arbeitet im privilegierten Modus). Dies ist ausgehend von den Eigenschaften des privilegierten Modus vorgesehen, um es zu ermöglichen, ausgehend vom aktuellen Prozess, auf eine virtuelle Seite zuzugreifen, die einem anderen Prozess zugewiesen ist.
- Beim vorliegenden Ausführungsbeispiel wird eine Größe von 1 kB oder 4 kE als Größe der virtuellen Seite abhängig vom Wert des Größenbits 52 im TLB-Eintrag ausgewählt. Wenn die Größe der virtuellen Seite 1 kB ist, werden die Informationen VPN (31 - 17) und VPN (11 - 10) im TLB-Eintrag, wie in jeder Bank indiziert, zu Objekten des Vergleichs mit den entsprechenden Bits vpn (31 - 17) und vpn (11 - 10) der logischen Adresse gemacht. Wenn die virtuelle Seitengröße 4 kB beträgt, werden die vpn (11 - 10) im TLB-Eintrag, wie in jeder Bank indiziert, und die entsprechende vpn (11 - 10) in der virtuellen Seite aus dem Objekt der Vergleichsentscheidung ausgeschlossen.
- Wie oben beschrieben, werden die Vergleichsobjekte (VPN (31 - 17, 11 - 10), vpn (31 - 17, 11 - 10), ASTD und asid) bestimmt und verglichen. Wenn in irgendeiner Bank als Ergebnis der Vergleichsvorgänge eine Übereinstimmung auftritt, wird von der Übereinstimmungsbank ein Treffersignal ausgegeben. Die Treffer der einzelnen Bänke werden als Treffersignale hit1 bis hit4 ausgegeben, so dass ein TLB-Treffer bestimmt wird. Wenn von allen Bänken kein Treffersignal ausgegeben wird, d. h. im Fall fehlender Übereinstimmung, wird dagegen eine TLB-Fehlschlagausnahme erkannt. Dieses Ergebnis wird durch das Signal 501 an die CPU 3 mitgeteilt, die die TLB- Fehlschlagausnahme so verarbeitet, wie es nachfolgend beschrieben wird.
- Hinsichtlich des Eintrags jeder indizierten Bank wird darüber hinaus das V-Bit im gelesenen Eintrag überprüft. Im Fall eines TLB-Treffers wird das V-Bit im Treffereintrag auf 0 steht (ungültig ist), die TLB-Ungültigkeitsausnahme erkannt und an die CPU 3 mitgeteilt. Der Inhalt dieser Ausnahmeverarbeitung wird nachfolgend beschrieben. Das Entscheidungsergebnis zum V-Bit im Fall eines TLB-Fehlschlags wird beim später beschriebenen Eintragsersatz betreffend einen TLB- Fehlschlag verwendet.
- Im Schritt L3 des Prüfens des Zugriffsrechts wird dieses entsprechend dem Inhalt der Information PR im mittels des Index gelesenen TLB-Eintrag und des Inhalts des Bits MMUCR.SV im MMUCR-Register geprüft. Wie es in Fig. 13 dargestellt ist, wird z. B. als Erstes entschieden, ob das Bit MMUCR.SV im MMUCR-Register auf 1 (virtuelle Einzelunterstützung) oder auf 0 (virtuelle Mehrfachunterstützung) steht. Im Fall der virtuellen Mehrfachunterstützung (SV = 0) wird der durch die Information im TLB-Eintrag ausgedrückte Adressenraum entsprechend dem Inhalt des PR geschützt wie in Fig. 9 dargestellt. Im Fall der virtuellen Einzelunterstützung und des privilegierten Modus, d. h. im Fall von MMUCR.SV = 1 (virtuelle Einzelunterstützung) und im Fall das Bits SR.MD = 1 (privilegierter Modus) im Statusregister kann auf den Adressenraum, wie er durch die Information im TLB-Eintrag angegeben ist, ohne Bedingung zugegriffen werden. Im Fall des Benutzermodus (SR. MD = 0: Benutzermodus) werden dagegen, trotz der virtuellen Einzelunterstützung, die Raumkennung ASID und der Gemeinsamnutzungszustand SH beim Prüfen des Zugriffsrechts berücksichtigt. Genauer gesagt, wird, entweder im Fall einer Übereinstimmung zwischen der Raumkennung ASID des PTEH-Registers 51 zum Zugriffszeitpunkt der aus dem TLB 1 gelesenen Raumkennung ASID oder im Fall von SH = 1 (gemeinsame Benutzung) der Adressenraum, wie durch die Information im TLB-Eintrag angegeben, gemäß dem oben genannten PR geschützt. Wenn die Adressenraumkennungen nicht übereinstimmen und nicht gemeinsam genutzt werden, wird dagegen eine TLB-Schutzfehlerausnahme erkannt. Der Inhalt dieser Ausnahme wird nachfolgend beschrieben. Im Schritt L3 des Prüfens des Zugriffsrechts wird darüber hinaus der Zugriffstyp abhängig davon bestimmt, ob der Zugriff für einen Lese- oder einen Schreibvorgang dient, und es wird das D-Bit des aus dem TLB 1 gelesenen Eintrags bestimmt. Wenn der Zugriff für den ersten Schreibvorgang gilt (d. h. der erste Schreibzugriff nach dem Einschalten der Spannung oder nach dem Rücksetzen) wird eine TLB-Schreibausnahme für die Anfangsseite erkannt. Genauer gesagt, wird diese TLB-Schreibausnahme für die Anfangsseite unter den Bedingungen erkannt, dass das Vergleichsergebnis zwischen der logischen Adresse und dem indizierten TLB-Eintrag einem TLB-Treffer entspricht, dass die Speichermarke D im TLB-Eintrag auf 0 steht und dass der dabei erfolgende Zugriff ein Schreibzugriff ist. Der Inhalt dieser TLB-Schreibausnahmeverarbeitung für die Anfangsseite wird nachfolgend beschrieben.
- Im Schritt L4 des Erzeugens der absoluten Adresse wird diese, wie in Fig. 14 dargestellt, entsprechend dem Größenbit SZ des indizierten TLB-Eintrags erzeugt. Der Offset va (9 - 0) einer logischen Adresse va, die zum Erzeugen einer absoluten Adresse pa verwendet wird, wird in die Latchstufe in der Steuerungsschaltung CTRL 50 eingespeichert, was jedoch nicht dargestellt ist. Wenn SA = 0 gilt (die virtuelle Seitengröße ist 1 kB), wird va (9 - 0) der von der CPU 3 ausgegebenen logischen Adresse va als Offset pa (9 - 0) der absoluten Adresse pa verwendet. Genauer gesagt, werden alle Bits PPN (31 - 10) der Absolutseitennummer PPN, wie im Datenteil des TLB-Treffereintrags enthalten, als Adresse pa (31 - 10) der absoluten Seite verwendet. Die Adresse (9 - 0) wird als Offset zur weniger signifikanten Seite addiert, um die absolute Adresse pa zu erzeugen. Wenn SZ 1 gilt (die Größe der virtuellen Seite ist 4 kB), wird der Offset va (11- 0) der von der CPU 3 ausgegebenen logischen Adresse va als Offset pa (11 - 0) der absoluten Adresse pa verwendet. Hinsichtlich der im Datenteil im TLB-Treffereintrag enthaltenen Absolutseitennummer PPN wird die PPN (31 - 12) unter Nichtberücksichtigung ihrer weniger signifikanten zwei Bits als Absolutseitenadresse pa (31 - 12) verwendet. Die Adresse (11- 0) wird als Offset zur weniger signifikanten Seite addiert, um die absolute Adresse pa zu erzeugen wird als Offset zur weniger signifikanten Seite addiert, um die absolute Adresse pa zu erzeugen.
- Fig. 15 veranschaulicht ein Hardware-Spezifizierverfahren einer Bank, die bei einer TLB-Fehlschlagsausnahme auszutauschen ist, wie es im Schritt L2 des Überprüfens beim Adressenvergleich und des V-Bits erkannt wird. Dieser Steuerungsvorgang wird ausschließlich von der Steuerungsschaltung 50 entsprechend ihrem Logikaufbau ausgeführt, und er verwendet das Bit MMUCR.RC des MMUCR-Registers als Zählereinrichtung, wie als Zufallszähler. Hierbei entspricht die Potenz von zwei der Bitnummer des MMUCR.RC der Zahl (= 4) der Bänke des oben genannten TLB 1. Auf die Tatsache hin, dass keines der oben genannten Treffersignale hit1 bis hit4 einen Trefferzustand anzeigt, entscheidet die Steuerungsschaltung 50 auf das Erfordernis des Austauschs des Eintrags hinsichtlich des TLB 1. Nach dieser Entscheidung inkrementiert die Steuerungsschaltung 50 das MMUCR.RC um 1 (+1), um zu untersuchen, ob sich unter den vier indizierten Einträgen ein ungültiger Eintrag befindet. Dies wird dadurch erzielt, dass das V-Bit in jedem der vier indizierten Einträge untersucht wird. Wenn diese Untersuchung des V-Bits keinen ungültigen Eintrag ergibt (alle Einträge jeder indizierten Bank speichern einen gültigen Datenwert "V = 1" ein), wird das inkrementierte Ergebnis als auszutauschende Banknummer ersetzt und das MMUCR.RC wird auf keinen Vorgang eingestellt. Wenn ein ungültiger Eintrag vorliegt (einer der in jeder Bank indizierten Einträge ergibt V = 0 und es ist kein gültiger Datenwert eingespeichert), wird die Banknummer der Bank mit dem ungültigen Eintrag im MI4UCR.RC eingetragen, und die Bank mit der eingetragenen Nummer wird als auszutauschende Bank verwendet. Darüber hinaus kann der Wert jedes Bits des oben genannten MMUCR.RC beliebig geändert werden, wenn die Software von der CPU 3 abgearbeitet wird. Im Ergebnis kann die in diesem Register eingetragene Banknummer, wie oben beschrieben, durch die Software weiter geändert werden. Im Ergebnis kann jede Bank zum Gegenstand eines Austauschs gemacht werden.
- Fig. 16 veranschaulicht eine Verarbeitungsprozedur durch die TLB-Fehlschlag-Handhabungsmaßnahme zum Aktualisieren des TLB-Eintrags in solcher Weise, dass die oben genannte TLB- Fehlschlagsausnahme gemeistert wird. Eine TLB-Ladeanweisung wird dazu verwendet, den Eintrag des TLB 1 zu aktualisieren. Diese TLB-Ladeanweisung (die auch als "LDTLB" bezeichnet wird) wird für die folgende Verarbeitung durch die CPU 3 ausgeführt. Genauer gesagt, werden die Werte der einzelnen Register 51 und 52, PTEH und PTEL, in die Einträge des TLB 1 eingeschrieben. In diesem Fall sind die einzuschreibenden Einträge diejenigen in den Bänken, die durch die in das MMUCR.RC eingetragenen Banknummer angezeigt werden, wobei jedoch keine Beschränkung hierauf besteht, und es sind Einträge zum Anzeigen der im PTEH-Register 51 eingespeicherten logischen Adressen (d. h. die Bits 12 bis 16) als Indexadressen. Wenn die oben genannte TLB-Fehlschlagsausnahme erkannt wird, wird der Teil (d. h. die Bits 10 bis 31) der logischen Adressen zu diesem Zeitpunkt, wie von der CPU 3 ausgegeben, in das oben genannte PTEH-Register 51 eingespeichert. Im Ergebnis wird der Eintrag zum Austauschzeitpunkt durch die Indexadresse mit derselben Nummer wie der der Indexadresse zu demjenigen Zeitpunkt, zu dem die TLB-Fehlschlagsausnahme auftritt, angezeigt. Jedoch wird die für den Austausch zu verwendende Bank durch die im MMUCR.RC eingetragene Banknummer festgelegt.
- Um eine TLB-Fehlschlagsausnahme zu meistern, wird vom Benutzer vorab eine Seitentabelle im externen Speicher RAM bereitgestellt, wie es in Fig. 22 dargestellt ist. In dieser Seitentabelle ist eine Anzahl von Übersetzungsinformationen (z. B. Seitentabelleeinträge), die den einzelnen logischen Adressen entsprechen, gemäß vorbestimmten Regeln eingespeichert, wobei jedoch keine spezielle Beschränkung hierauf besteht. Die Adressen dieser Seitentabelle, wie eine Startadresse, werden vorab als Basisadresse in das Register TTB 53 eingespeichert. In dieser Seitentabelle sind mehrere Seitentabelleeinträge, die jeweils den logischen Adressen entsprechen, gemäß solchen Regeln angeordnet, dass die Seitentabelleneinträge (die die entsprechende Absolutseitennummer ppn,- das Gültigkeitsbit V, das Schutzbit PR, das Größenbit SZ, das cache-speicherbare Bit c, die Speicherungsmarke d und den Status sh enthalten) entsprechend diesen logischen Adressen auf Grundlage der oben genannten Basisadressen und logischen Adressen als Startadresse abgerufen werden können, wobei jedoch keine spezielle Beschränkung hierauf besteht.
- Die oben genannte TLB-Fehlschlags-Handhabungsmaßnahme wird vom Benutzer angegeben. Diese TLB-Fehlschlags-Handhabungsmaßnahme wird von ihr selbst gestartet, wenn eine TLB-Fehlschlagsausnahme erkannt wird. Im Ergebnis wird die Information vpn (10-31) der logischen Adresse beim Auftreten des TLB-Fehlschlags in das PTEH-Register 51 eingespeichert. Dabei kann auch die Raumkennung asid beim Auftreten des TLB- Fehlschlags in das PTEH-Register 51 eingespeichert werden. Andererseits greift die CPU 3 unter Verwendung der im Register TTB 53 eingespeicherten Basisadresse und der logischen Adresse beim Auftreten des TLB-Fehlschlags auf die oben genannte Basistabelle im externen Speicher zu. Der Inhalt des Seitentabelleneintrags, der der logischen Adresse beim Auftreten des TLB-Fehlschlags entspricht, wird, wenn bei diesem Abruf erkannt, in das PTEL-Register 52 geladen. Als Nächstes wird die TLB-Ladeanweisung ausgegeben, damit die Einträge im TLB 1 durch die Werte der einzelnen Register 51 und 52, PTEH und PTEL, aktualisiert werden. Im Ergebnis werden die Informationen vpn und asid der logischen Adressen beim Auftreten des TLB-Fehlschlags, wie in das PTEH-Register 51 eingespeichert, als Teil-VPN und ASID der TLB-Einträge verwendet. Darüber hinaus sind die dabei auszutauschenden Einträge diejenigen in der Bank, die durch die in das MMUCR.RC eingetragene Banknummer angezeigt wird, wie oben beschrieben, und sie werden durch dieselbe Indexadresse wie die beim Auftreten des TLB-Fehlschlags angezeigt.
- Die oben genannte TLB-Ungültigkeitsausnahme tritt im Fall eines Seitenfehlers bei einem TLB-Treffer auf. Für diese Ausnahme wird z. B. der Seitentabelleneintrag im externen Speicher rückgewonnen, um das V-Bit im Seitentabelleneintrag auf den logischen Wert 1 zu setzen. Danach wird das PTEL-Register 52 mit diesem Seitentabelleneintrag von externen Speicher geladen, und die oben genannte TLB-Ladeariweisung wird ausgegeben, um den entsprechenden Eintrag im TLB 1 durch die Werte der einzelnen Register 51 und 52, PTEH und PTEL, zu aktualisieren.
- Wenn die oben genannte TLB-Schreibausnahme betreffend die Anfangsseite erkannt wird, wird D-Bit im entsprechenden Seitentabelleneintrag im externen Speicher auf den logischen Wert 1 gesetzt, um das PTEL-Register 52 mit diesem Seitentabelleneintrag aus dem externen Speicher zu laden. Danach wird die oben genannte TLB-Ladeanweisung ausgegeben, um den entsprechenden Eintrag im TLB 1 mit den Werten der einzelnen Register 51 und 52, PTEH und PTEL, zu aktualisieren. Übrigens werden die Informationen vpn und asid der logischen Adressen, um die Ausnahme zu verursachen, in das PTEH-Register 51 eingespeichert. Die Situation für D = 1 entsteht beim ersten Schreiben des Absolutenseitenfelds im Hauptspeicher. Bei der virtuellen Unterstützung ist es, um für Übereinstimmung der Daten zwischen dem Hilfsspeicher und dem Hauptspeicher (z. B. dem externen Speicher der Fig. 22) beim Seitenaustausch zu sorgen, erforderlich, zu entscheiden, ob der Inhalt der auszutauschenden Seite im Hauptspeicher in den Hilfsspeicher zurückzukopieren ist oder nicht. Für diese Entscheidung wird die Speicherungsmarkierung D verwendet.
- Wenn die oben genannte TLB-Schutzfehlerausnahme erkannt wird, wird die virtuelle Seitennummer vpn der logischen Adresse zum Hervorrufen der Ausnahme in das PTEH-Register 51 eingeschrieben, und die logische Adresse wird in das PTEH- Register 51 eingeschrieben. Danach wird die Handhabungsmaßnahme zum Überwinden dieses Schutzfehlers gestartet.
- Wenn das MMUCR.RC als Zähler verwendet wird, wie oben beschrieben, ist eine Inkrementierung zum Registrieren eines neuen Bankeintrags zum Zeitpunkt, wenn die oben genannte TLB-Fehlschlagsausnahme zu meistern ist, erwünscht. = Um die oben genannte Ungültigkeitsausnahme, die TLB-Schreibausnahme betreffend die Anfangsseite und die TLB-Schutzfehlerausnahme zu meistern, ist es dagegen erwünscht, das MMUCR.RC zu inkrementieren. Dies, da bei diesen Gegenmaßnahmen nur das D-Bit oder das V-Bit geändert werden muss, damit der TLB wirkungsvoller ohne Registrierung in einer neuen Bank als Mitregistrierung in der ursprünglichen Bank verwendet werden kann, obwohl die Erfindung nicht hierauf beschränkt sein soll.
- Die Fig. 17 und 18 zeigen die Gesamtheit des Ausnahmeerkennungsablaufs für den TLB 1, wenn die virtuelle Mehrfachunterstützung dadurch angezeigt wird, dass das Bit MMUCR.SV des MMUCR-Registers auf 0 gesetzt ist. Gemäß Fig. 17 wird der TLB 1 durch ein vorbestimmtes Verfahren entsprechend der vpn der logischen Adresse und der aktuellen Raumkennung asid indiziert (in S2). Wenn der indizierte Eintrag schließlich SH = 0 (keine gemeinsame Benutzung) enthält, wird die TLB- Fehlschlagsausnahme (EX1) erkannt, wenn nicht Übereinstimmung betreffend ASID oder VPN besteht (in S3). Wenn der indizierte Eintrag SH 1 (gemeinsame Benutzung) enthält, wird die ASId nicht verglichen und die TLB-Fehlschlagsausnahme (EX1) wird erkannt, wenn nicht Übereinstimmung für die VPN besteht (in S4). Im Fall eines TLB-Treffers (wenn die Antworten in S3 und S4 JA sind) wird festgestellt (in S5), ob V = 1 gilt oder nicht. Im Fall V = 0 (ungültig), wird eine TLB-Ungültigkeitsausnahme (EX2) erkannt. Im Fall V = 1 (gültig), wird aus dem Bit SR.MC des Statusregisters bestimmt (in S6), wie in Fig. 18 dargestellt, ob der Modus der Benutzermodus (Benutzer) oder der privilegierte Modus (privilegiert) ist. Im Fall (PR = 00 oder 01) arbeitet die CPU 3 im Benutzermodus, so dass der durch den Zugriff durch die in diesem Modus arbeitende CPU 3 gelesene Eintrag die Information PR enthält, die die Zulässigkeit des Zugriffs im privilegierten Modus anzeigt (oder das Sperren des Zugriffs im Benutzermodus), wird die TLB-Schutzfehlerausnahme (EX3) erkannt. Wenn dagegen bestimmt wird, dass die Information PR im Leseeintrag durch den Zugriff im Benutzermodus auf 10 steht, wird weiter bestimmt, ob der Zugriff zum Lesezugriffstyp oder zum Schreibzugriffstyp gehört. Wenn die Information auf 10 steht, wie in Fig. 9 dargestellt, darf ein Benutzerzugriff nur vom Lesezugriffstyp sein. Wenn daher der oben genannte Zugriff zum Schreibzugriffstyp gehört, ist der Zugriffstyp anders (d. h. ein Schreibvorgang in 57), und es wird eine TLB-Schutzfehlerausnahme (Ex3) erkannt.
- Im Fall PR = 00 oder 10 wird selbst bei Zugriff im privilegierten Modus eine TLB-Schutzfehlerausnahme (EX4) erkannt, wenn der Typ eines Lese/Schreib-Zugriffs dem Inhalt des PR widerspricht (d. h. Schreiben in S8). Genauer gesagt, differiert das Zugriffsrecht, wie es durch das PR zuzulassen ist, abhängig davon, ob die CPU 3 im Benutzermodus oder im privilegierten Modus arbeitet. In jedem Fall werden, wenn der Zugriff mit einem anderen Zugriffstyp als dem durch das PR zugelassenen erfolgt, die TLB-Schutzfehlerausnahmen (EX3 und EX4) erkannt. Wenn der Zugriffstyp zum Recht (d. h. Schreiben in S9 und S10) gehört, das vom PR zugelassen ist, wird die TLB-Schreibausnahme für anfängliches Schreiben (EX5) erkannt, wenn sich die Information D im Eintrag auf 0 befindet (oder eine nicht geschriebene Seite vorliegt). Wenn die Information D im Eintrag auf 1 steht, wird andererseits auf den Cachespeicher 4 zugegriffen, wenn die Information C im Eintrag auf 1 steht, und es wird auf den Hauptspeicher (z. B. den externen Speicher RAM oder ROM in Fig. 2) zugegriffen, wenn C = 0 gilt. Wenn der Zugriffstyp der vom PR zugelassene Lesetyp ist (d. h. Lesen in S7 bis S10), wird auf den Cachespeicher 4 zugegriffen, wenn C = 1 gilt, und es wird auf den Hauptspeicher zugegriffen, wenn C = 0 gilt.
- Fig. 2 zeigt hauptsächlich die Verbindungsbeziehungen zwischen den einzelnen Registern und der zentralen Verarbeitungseinheit CPU, wie in Fig. 7 dargestellt. Die durch die zentrale Verarbeitungseinheit CPU erzeugten logischen Adressen werden über den internen Logikadressenbus VABUS an den Selektor in der TLB-Steuerungsschaltung TLBC geliefert. Dieser Selektor decodiert die logischen Adressen und erzeugt ein Auswählsignal zum Auswählen der Register, wenn diese logischen Adressen spezifische sind, die den Registern zugewiesen sind. Wenn die logischen Adressen diejenigen sind, die dem PTEL-Register zugewiesen sind, erzeugt der Selektor z. B. das Auswählsignal C4 zum Auswählen dieses Registers. In ähnlicher Weise werden die restlichen Register (PTEH, MMUCR, TEA und TTB) ausgewählt. Anders gesagt, erfahren diese Register eine Adressenabbildung. Ein Lese/Schreib-Vorgang für das ausgewählte Register durch die zentrale Verarbeitungseinheit wird mittels des nicht dargestellten internen Steuerbusses durch die Lese/Schreib-Steuersignale angewiesen, die von der zentralen Verarbeitungseinheit an die einzelnen Register geliefert werden. Es ist ziemlich natürlich, dass die einzelnen Register und die zentrale Verarbeitungseinheit CPU über den internen Datenbus DBUS, wie dargestellt, miteinander verbunden sind. Die einzelnen Register sind sowohl mit der Steuerungsschaltung 51 als auch dem TLB 1 verbunden, wie in Fig. 7 dargestellt, jedoch sind sie in Fig. 22 nicht so dargestellt, um eine komplizierte Darstellung zu vermeiden. Die zentrale Verarbeitungseinheit wird durch Abarbeiten der Software dazu aktiviert, die Daten in die Register einzuschreiben. Genauer gesagt, wird die zentrale Verarbeitungseinheit dadurch dazu aktiviert, die Daten in die Register einzuschreiben, dass sie die Software zum Ausgeben der den Registern zugewiesenen logischen Adressen an den Bus VABUS abarbeitet, um die Daten an den Bus DBUS auszugeben und einen Schreibvorgang durch die Lese/Schreib- Signale anzuweisen. Durch Ausführen der Software kann die zentrale Verarbeitungseinheit auch die Daten von den Registern auslesen. Durch dieses Ausführen der Software ist es möglich, die Logikraumkennungen und die logischen Adressen zum TLB-Fehlschlagszeitpunkt in das PTEH-Register einzuschreiben, den Tabelleneintrag zum Austauschzeitpunkt in das PTEL-Register einzuschreiben, die Basisadresse in das TTB- Register einzuschreiben und die logischen Adressen zum Zeitpunkt der Schutzfehlerausnahme in das TEA-Register einzuschreiben. Darüber hinaus können die in Fig. 6 dargestellten Steuerungsdaten in das MMUCR-Register eingeschrieben werden, so dass die speziellen Bits als Zähler verwendet werden können.
- Der interne Logikadressenbus VABUS ist auch mit der Steuerungsschaltung CTRL und dem TLB 1 verbunden. Die Steuerungsschaltung CTRL ist mit einer Latchschaltung zum Einspeichern des Offsets der logischen Adresse versehen, wie oben beschrieben, so dass der Offset der logischen Adresse vom internen Logikadressenbus VABUS eingespeichert wird. Darüber hinaus wird die logische Adresse von der CPU 3 über diesen internen Logikadressenbus VABUS in den TLB 1 eingespeist, so dass sie als Indexadresse und Abrufadresse verwendet wird. Es ist ziemlich natürlich, dass die oben genannte, in der Steuerungsschaltung CTRL angeordnete Latchschaltung nicht nur die Offsetadresse sondern auch die logischen Adressen einspeichert.
- Diese Zeichnung veranschaulicht explizit nur die Verbindung zwischen dem oben genannten PTEH-Register und dem TLB 1. Die Raumkennung zum Festlegen eines Fehlschlags/Treffers betreffend den TLB 1 wird in dieses Register eingetragen und von diesem an den oben genannten TLB 1 geliefert. Auch bei den Gegenmaßnahmen für die Fehlschlagsausnahme des TLB 1 werden die logischen Adressen von diesem Register an den TLB 1 geliefert.
- Der interne Datenbus DBUS und der interne Absolutadressenbus PABUS sind mit dem externen Datenbus DBUS und dem externen Adressenbus ABUS über die externen Anschlüsse TD und TA verbunden, die in diesem Datenprozessor vorhanden sind. Mittels dieser externen Busse sind sie mit den externen Speichern RAM und ROM verbunden, wie dargestellt. Von diesen ist der externe Speicher RAM ein flüchtiger Speicher, der mit den oben genannten verschiedenen Tabellen ausgebildet ist, wobei jedoch keine spezielle Beschränkung hierauf besteht. Andererseits ist der externe Speicher ROM ein nichtflüchtiger Speicher, der verschiedene Programme einspeichert (z. B. die Software für die oben genannte Handhabungsmaßnahme).
- Nachfolgend werden die Wirkungen und Merkmale der virtuellen Speicher im Mikrocomputer des vorliegenden Ausführungsbeispiels einzeln beschrieben.
- Wie es in den Fig. 5 und 6 dargestellt ist, enthalten der Seitentabelleneintrag und der TLB-Eintrag das oben genannte Größenbit 52, so dass die Größen virtueller Seiten für jede Seite eingetragen werden können. Der gruppenassoziative Übersetzungsverweispuffer 1 mit vier Wegen wird durch die mehreren virtuellen Seiten, deren Größe variabel eingestellt werden kann, gemeinsam genutzt. Beim vorliegenden Ausführungsbeispiel werden zwei Arten virtuellen Seitengrößen von 1 kB und 4 kB durch den Mikrocomputer unterstützt. Darüber hinaus wird das Verfahren zum Spezifizieren der Indexadresse für den TLB 1 für 4 kB und 1 kB gemeinsam benutzt. Beim vorliegenden Ausführungsbeispiel werden, wie es in den Fig. 2 und 3 dargestellt ist, von allen logischen Adressen mit 32 Bits, die in der zentralen Verarbeitungseinheit zu erzeugen sind, die Bits 12 bis 16, d. h. die vpn (16 - 12) zum Indizieren des TLB 1 verwendet. Da die Indexadressen über fünf Bits verfügen, können maximal 32 Einträge für eine Bank (oder einen Weg) aufrechterhalten werden. Da der TLB 1 die vier Bänke 11 bis 14 enthält, können maximal vier Einträge für eine Indexadresse aufrechterhalten werden. Wenn die Seitengröße 4 kB beträgt, wird dafür gesorgt, dass die Indexadressen in die fünf Bits vpn (16 - 12), ab dem geringstsignifikanten, der virtuellen Seitennummer vpn fallen. Für eine Seitengröße von 4 kB können die Einträge einer beliebigen virtuellen Seitennummer in den 32 Einträgen für jede Bank aufrechterhalten werden, (d. h. 128 Einträge für alle Bänke). Im Fall einer Seitengröße von 1 kB wird dagegen die vpn (11 - 10) mit zwei Bits ab dem geringssignifikanten Bit in der virtuellen Seitennummer vpn nicht zum Indizieren verwendet. Wenn daher der Index im Fall einer Bank für eine virtuelle Seitengröße von 1 kB berücksichtigt wird, zeigt der indizierte Eintrag eine der vier virtuellen Seitennummern (mit jeweils einer Seitengröße von 1 kB) an, wie durch die Indexadressen von fünf Bits ausgewählt. Die zwei Bits (d. h. die Bits 10 und 11), die nicht für die Indizierung verwendet werden, werden dazu verwendet, eine der vier ausgewählten virtuellen Seitennummern anzuzeigen. Wenn daher nur eine Bank vorhanden ist, wird den vier aufeinanderfolgenden virtuellen Seiten nur ein Eintrag zugewiesen. Beim vorliegenden Ausführungsbeispiel ist die maximale Größe der virtuellen Seite auf die N-Potenz von zwei betreffend die minimale Größe eingestellt, und die Anzahl der bereitzustellenden Bänke ist ebenfalls die N-te Potenz von zwei. Genauer gesagt, ist die Minimalgröße der virtuellen Seite auf 1 kB eingestellt, und ihre maximale Größe ist auf die zweite Potenz von zwei der ersteren, d. h. auf 4 kB, eingestellt, und die Anzahl der bereitzustellenden Bänke ist die zweite Potenz von zwei, d. h. 4. So kann, wie im Fall einer Seitengröße von 4 kB, der Übersetzungsverweispuffer 1 128 Einträge einer beliebigen virtuellen Seitenummer, wie es eine Seitengröße von 1 kB insgesamt aufweist, einspeichern. Jedoch besteht für die virtuellen Seitennummern der in einer Bank aufrechtzuerhaltenen Einträge eine Beschränkung auf jeweils 4 kB. Diese Beschränkung übt auf die Trefferrate des TLB 1 keinen Einfluss aus, wenn die virtuellen Seitennummern der im Übersetzungsverweispuffer 1 aufrechterhaltenen Einträge fortlaufend sind. Diese Trefferrate ist in gewissem Ausmaß beeinflusst, wenn die virtuellen Seitennummern diskret sind. Auch in diesem Fall kann der Einfluss verringert werden, wenn die virtuelle Seite von 1 kB für jeweils 2 kB adressen-abgebildet wird, und er kann vollständig beseitigt werden, wenn eine Adressenabbildung für jeweils 4 kB erfolgt. Wenn die Übersetzungsinformation mit einer Seitengröße von 1 kB in den Übersetzungsverweispuffer 1 einzutragen (oder einzuschreiben) ist, werden die vier Einträge (E11), (E12), (E13) und (E14), wie durch die indexadressen von fünf Bits angezeigt, von den vier Bänken (11), (12), (13) bzw. (14) durch die Übersetzungsinformation, wenn die 2-Bit-vpn (11 - 10) auf "00" steht, die Übersetzungsinformation, wenn die 2-Bit-vpn (11 - 10) auf "O1" steht, die Übersetzungsinformation, wenn die 2-Bit-vpn (11 - 10) auf "10" steht, und die Übersetzungsinformation, wenn die 2-Bit-vpn (11 - 10) auf "11" steht, gesetzt. So ist es möglich, ein Abfallen der Trefferrate zu verhindern.
- Die Bitanzahl beim Adressenvergleich für die Trefferentscheidungen muss entsprechend der Seitengröße verändert werden, wie es unter Bezugnahme auf Fig. 12 beschrieben wurde. Wenn die virtuelle Seite 1 kB ist, muss die vpn (11 - 10) mit der VPN (11 - 10) verglichen werden, abweichend vom Fall mit 4 kB. Um alle derartigen Bitanzahlen von Vergleichszielen abzudecken, ist der TLB 1 mit den Speicherfeldern der VPN (31 - 17) und der VPN (11 - 10) und mit dem Speicherfeld von 22 Bits selbst für die Absolutseitennummer PPN versehen. Der TLB 1 ist auch im Datenteil jedes Eintrags mit dem Größenbit 52 versehen, das die dadurch zu unterstützende Größe der virtuellen Seite anzeigt, so dass die Bitzahl für den Adressenvergleich bei der Bitentscheidung entsprechend dem Wert des Größenbits geändert wird. Im Fall des Größenbits 52 = 1 (d. h. Größe der virtuellen Seite = 4 kB), wird, wie es unter Bezugnahme auf Fig. 12 beschrieben wurde, die VPN (31 - 17) mit den entsprechenden Bits der logischen, Adresse verglichen. Im Fall des Größenbits SZ = 0 (d. h. Größe der virtuellen Seite = 1 kB) werden die VPN (31 - 17) und die VPN (11 - 10) mit den entsprechenden Bits der logischen Adresse verglichen.
- So kann der Mikrocomputer zum Unterstützen der mehreren Seitengrößen selektiv auf einfache Weise der Forderung einer Verbesserung des Speichernutzungswirkungsgrads für jeden Prozess dadurch genügen, dass er die Größen der virtuellen Seiten relativ klein macht, wenn die Gesamtspeicherkapazität des in das System einzubauenden echten Speichers klein ist. Dabei wird der Übersetzungsverweispuffer 1 dadurch aktiviert, dass die maximale virtuelle Seitengröße auf die Potenz von zwei betreffend die minimale Größe eingestellt wird, mit einer Anzahl der Bänke im gruppenassoziativen TLB 1 nicht unter einer Potenz von zwei, um die Einträge einer beliebigen virtuellen Seitennummer im Prinzip selbst dann einzuspeichern, wenn das Verfahren zum Indizieren der Indexadresse mit dem für die maximale virtuelle Seitengröße unabhängig davon übereinstimmt, ob die ausgewählte virtuelle Seitengröße die maximale oder die minimale ist. Wenn die Information zum Anzeigen der Größe der virtuellen Seite so bereitgestellt wird, dass sie der virtuellen Seitennummer entspricht, so dass die Bitzahl beim Adressenvergleich für die Trefferentscheidung unter Verwendung dieser Größe geändert wird, können die Anzahl und die Position der Vergleichszielinformation für einen Abruf aus dem Übersetzungsverweispuffer 1 auf assoziative Weise leicht entsprechend der Größe der virtuellen Seite geändert werden. Wenn der Übersetzungsverweispuffer 1 zum Unterstützen der mehreren Seitengrößen durch einen gruppenassoziativen Cachespeicher realisiert ist, können die Chipbelegungsfläche und der Energieverbrauch auf die Hälfte der Werte im Fall, wenn derselbe aus einem CAM besteht, gesenkt werden.
- Wenn eine virtuelle Mehrfachunterstützung, bei der mehrere Prozesse mit jeweils Adressübersetzungsinformationen, so dass die Prozesse durch die Adressenraumkennung asid unterschieden werden, unterstützt wird, können das Verfahren zum Decodieren nur eines Teils (d. h. der Indexadressen) der logischen Adressen, wie in Fig. 2 dargestellt, und das Verfahren zum Decodieren des Ergebnisses beim Modifizieren eines Teils (d. h. der Indexadressen) der logischen Adressen durch einen Teil der aktuellen Adressenraumkennung asid durch das Exklusiv-ODER-Gatter XOR, wie in Fig. 3 dargestellt, als Verfahren zum Spezifizieren der Indexadressen des TLB 1 entsprechend den logischen Werts des Bits MMUCR.IX des Registers MMUCR angewiesen werden. So können im Benutzermodus, bei dem viele Prozesse bei virtueller Mehrfachunterstützung parallel gestartet werden, die Indizierverfahren entsprechend dem Benutzermodus ausgewählt werden, um ein Abfallen der Trefferrate zu unterdrücken. Wenn darüber hinaus ein Teil der logischen Adressen durch die Adressenraumkennung unter Verwendung der logischen Adressen modifiziert wird, um den Pufferspeicher zu indizieren, kann ein Abfallen der Trefferrate im Benutzermodus unterdrückt werden, bei dem viele Prozesse bei virtueller Mehrfachunterstützung parallel gestartet werden.
- Wie oben beschrieben, ist der TLB 1 als gruppenassoziativer Cachespeicher mit vier Wegen ausgebildet, der mit mehreren Bänken 11 bis 14 versehen ist, deren Indexadressen gemeinsam benutzer werden. Wenn die eingespeicherte Information wegen eines Cachefehlgriffs aus den mehreren Bänken (oder Wegen) auszutauschen ist, kann die auszutauschende Bank wahlfrei dadurch spezifiziert werden, dass die Software durch die zentrale Verarbeitungseinheit 3 abgearbeitet wird. Im in Fig. 6 dargestellten Register MMUCR ist das Bit MMUCR.RC ein Feld, in das die Information von zwei Bits zum Spezifizieren der oben genannten Bank auf wahlfreie Weise eingetragen wird. Dieser eingetragene Wert wird durch einen Decodierer 17 in Fig. 4 decodiert, um Signale (BSL1 bis BSL4) zum Auswählen einer der vier Bänke 11 bis 14 zu erzeugen. Im Ergebnis wird einer der Einträge in den vier Bänken 11 bis 14, wie durch die Indexadresse 2 spezifiziert, durch die oben genannten Auswählsignale (BSL1 bis BSL4) ausgewählt und ersetzt. Das Bit NNUCR.RC kann auch als Zählereinrichtung, wie als Zufallszähler, verwendet werden. Die Potenz von zwei betreffend die Bitzahl des MMUCR.RC entspricht der Anzahl (4) der Bänke des oben genannten Pufferspeichers 1. Die Steuerungsschaltung (CTRL) 50 spezifiziert die Bänke entsprechend den folgenden vorbestimmten Regeln, wie es unter Bezugnahme auf Fig. 15 beschrieben wurde. Wenn ein Austausch der eingespeicherten Information für den TLB 1 erforderlich ist (bei einem TLB-Fehlschlag), wird das NMUCR.RC um eins inkrementiert. Wenn irgendeine Bank die effektiven Daten in ihrem indizierten Speicherfeld einspeichert (d. h., dass die Übersetzungsinformation V in jedem der Indexeinträge den Wert eins einspeichert), wird das inkrementierte Ergebnis als Nummer der auszutauschenden Bank verwendet. Wenn eine Bank existiert, die in ihrem indizierten Speicherfeld keine effektiven Daten gespeichert hat (d. h., dass einige der indizierten Einträge V = 0 einspeichern), wird die Banknummer in das MMUCR.RC eingetragen, und die Bank mit der eingetragenen Nummer ist auszutauschen. Dabei müssen die Werte der einzelnen Bits des MMUCR.RC durch Ausführen der Software durch die zentrale Verarbeitungseinheit 3 wahlfrei änderbar sein. Genauer gesagt, besteht für das MMUCR.RC keine Beschränkung auf das Inkrement +1 wegen des Auftretens eines TLB-Fehlschlags. Das MMUCR.RC kann so aktualisiert werden, dass ein spezieller Wert ausgeschlossen ist. Darüber hinaus können verschiedene Austauschvorgänge abhängig vom Algorithmus der durch die CPU 3 abzuarbeitenden Software erzielt werden. Zum Beispiel können ein Zufallsaustausch, ein FIFO-Austausch, der vom anfangs geladenen Wert ausgeht, und ein LRU(Least Recently Used = am längsten nicht verwendet)-Austausch der vom Wert, auf den zuletzt Bezug genommen wurde, ausgeht, leicht dadurch realisiert werden, dass das Verfahren zum Aktualisieren des MMUCR.RC geändert wird. Im Ergebnis ist es möglich, den Freiheitsgrad beim Austausch zu gewährleisten,
- Durch Fehlen des Festlegens dieser Austauschalgorithmen zum Austauschen der Einträge im TLB 1, wobei es ermöglicht ist, die auszutauschenden Bänke wahlfrei zu bestimmen, ist es für den Datenverarbeitungskomfort möglich, der Forderung einer jederzeitigen Einspeicherung eines speziellen Übersetzungspaars als Einträge im Übersetzungsverweispuffer 1 sowie der Forderung zu genügen, einen speziellen Eintrag unausgetauscht zu belassen.
- Beim Mikrocomputer des vorliegenden Ausführungsbeispiels ist es möglich, virtuelle Mehrfachunterstützung auszuwählen, bei der die logische Adresse durch die Adressenraumkennung asid modifiziert oder erweitert wird, wenn die einzeln auszuführenden mehrere Prozesse Adressenübersetzungsinformation über den gesamten logischen Raum enthalten, sowie virtuelle Einzelunterstützung, bei der die logische Adresse duch die Adressenraumkennung asid weder modifiziert noch erweitert wird, wenn den einzelnen Prozessen Adressübersetzungsinformation aus dem logischen Adressenraum zugewiesen wird. Die Steuerung dieser virtuellen Unterstützungen wird durch den Wert des MMUCR.SV, wie durch Fig. 6 beispielhaft angegeben, angewiesen. Der Wert dieses MMUCR.SV wird durch das Ausführen der Software durch die zentrale Verarbeitungseinheit 3 wahlfrei eingestellt. Die konzeptionellen Unterschiede zwischen virtueller Einzelunterstützung und virtueller Mehrfachunterstützung werden unter Bezugnahme auf Fig. 20 beschrieben, und der restliche repräsentative Unterschied wird beispielhaft in Fig. 19 dargestellt. Wie es in Fig. 5 dargestellt ist, ist der TLB 1 mit Felder nicht nur für die virtuelle Seitennummer VPN, die Absolutseitennummer PPN und die Adressenraumkennung ASID versehen. Diese Fehler weisen abhängig davon, ob die virtuelle Unterstützung einfach oder mehrfach ist, verschiedene Werte auf. Wenn die virtuelle Seite, die der in einem TLB-Eintrag enthaltenen Adressenraumkennung entspricht, nicht so eingestellt ist, dass sie von anderen Prozessen gemeinsam benutzt wird, wird die Adressenraumkennung ASID bei der virtuellen Mehrfachunterstützung dazu verwendet, einen TLB-Treffer/Fehlschlag im TLB 1 zu erkennen, wie es unter Bezugnahme auf Fig. 17 beschrieben wurde. Demgemäß wird kein TLB-Treffer erkannt, solange nicht die virtuelle Seitennummer VPN des im TLB 1 eingespeicherten Eintrags mit der virtuellen Seitenadresse VPN übereinstimmt und solange nicht die Adressenraumkennung ASID dieses Eintrags mit der aktuellen Adressenraumkennung ASID übereinstimmt. Bei virtueller Einzelunterstützung wird die Adressenraumkennung ASID als Speicherschutzinformation (oder Domänennummer) verwendet. Im Benutzermodus wird der Zugriff auf eine nicht gemeinsam benutzte Seite durch einen anderen Prozess durch die Software als TLB-Schutzfehlerausnahme verarbeitet.
- Der Nutzungskomfort des Adressübersetzungsmechanismus kann dadurch verbessert werden, dass der Wert des MMUCR.SV mittels der CPU 3 eingestellt wird, um selektiv die virtuelle Einzelunterstützung oder die virtuelle Mehrfachunterstützung zu unterstützen. Der Speicherschutz kann leicht dadurch vollständig gemacht werden, dass die Adressenraumkennung ASID bei virtueller Mehrfachunterstützung als Speicherschutzinformation bei virtueller Einzelunterstützung verwendet wird.
- Obwohl unsere Erfindung speziell auf Grundlage ihrer Ausführungsbeispiele beschrieben wurde, soll sie nicht hierauf beschränkt sein, sondern sie kann selbstverständlich auf verschiedene Arten modifiziert werden, ohne dass von ihrem Grundgedanken abgewichen wird.
- Beim vorstehenden Ausführungsbeispiel kann z. B. die Zahl, d. h. die Bankanzahl des TLB auf 5 oder mehr, wie 8, erhöht werden. Wenn die Seitengröße z. B. 1 kB und 8 kB beträgt, kann die Anzahl der Wege (oder die Bankanzahl) des TLB 8 oder mehr betragen. Darüber hinaus kann, wenn die Seitengröße 4 kB oder 16 kE beträgt, die Anzahl der Wege (oder die Bankanzahl) des TLB 4 oder mehr betragen. Diese Modifizierungen können zu Effekten ähnlich denen beim vorstehenden Ausführungsbeispiel führen. Kurz gesagt, wird die maximale Größe der zu unterstützenden Seiten auf die Potenz von 2 betreffend die minimale Größe eingestellt, und die eingestellte Anzahl betreffend den gruppenassoziativen Pufferspeicher kann auf die Potenz von 2 betreffend die erstere Zahl oder mehr eingestellt werden. Die Größe des durch den Mikrocomputer zu unterstützenden Adressenraums soll nicht auf 4 GB beschränkt sein, und es besteht auch keine Beschränkung für die Bitanzahl der logischen Adresse. Die zu unterstützende Seitengröße kann in geeigneter Weise auf eine geeignete Größe geändert werden, und es kann auch die Anzahl der zu unterstützenden Arten geeignet geändert werden. Darüber hinaus soll für die virtuelle Seitennummer VPN, die als TLB-Eintrag einzuspeichern ist, keine Beschränkung auf den Aufbau, aus dem die entsprechenden Bits, die für den Index zu verwenden sind, ausgeschlossen sind, wie beim vorstehenden Ausführungsbeispiel bestehen, sondern es können alle Bits der virtuellen Seitennummer als TLB-Eintrag eingespeichert werden.
- Obwohl unsere Erfindung für den Fall beschrieben wurde, dass sie bei einem Mikrocomputer angewendet wird, der ihren Hintergrund bildet, soll keine Beschränkung hierauf bestehen, sondern sie kann in weitem Umfang z. B. bei einem MMU (Memory Management Unit)-Steuerungschip angewandt werden.
- Die durch die hier offenbarte Repräsentation der Erfindung erzielten Effekte werden nachfolgend kurz beschrieben. Genauer gesagt, ist es möglich, einen Datenprozessor zu realisieren, der mehrere Seitengrößen unterstützen kann, ohne dass die Chipbelegungsfläche und der Energieverbrauch erhöht werden. Es ist auch möglich, einen Adressübersetzungsmechanismus zu realisieren, der Indizierverfahren auswählen kann. Das auszutauschende Adressenübersetzungspaar kann mit gewisser Freiheit versehen sein. Diese gewisse Freiheit kann auch für den zu unterstützenden virtuellen Speichertyp gegeben sein. Dank dieser Maßnahmen ist es möglich, einen Datenprozessor zu realisieren, der mit einem Adressübersetzungsmechanismus versehen ist, der die vom Benutzer geforderten Spezifizierungen erfüllen kann und Nutzungskomfort aufweist.
Claims (22)
1. Datenprozessor mit einer virtuellen Speicherfunktion,
bei der ein logischer Adressbereich in mehrere virtuelle
Seiten aufgeteilt ist und eine virtuelle Adresse in eine
absolute Adresse auf der Seiteneinheit übersetzt wird, umfassend:
einen Adressenübersetzungs-Pufferspeicher (1), der
mehrere Banken (11 bis 14) enthält, wobei jede Bank (11 bis 14)
mehrere Speicherfelder umfaßt, deren jedes virtuelle
Seiteninformation enthält, die die absolute Seiteninformation einer
virtuellen Seite repräsentiert, wobei der Datenprozessor
ferner umfaßt:
ein Auswahlelement, das ein Speicherfeld aus den Banken
(11 bis 14) in Übereinstimmung mit einem ersten vorbestimmten
Teil der virtuellen Adresse auswählt; und
ein Vergleichselement, das die virtuelle
Seiteninformation in dem ausgewählten Speicherfeld mit einem zweiten Teil
der virtuellen Adresse vergleicht, wobei der Datenprozessor
dadurch gekennzeichnet ist, daß
jedes der Speicherfelder zusätzlich Größeninformation
der virtuellen Seite enthält und dadurch, daß der zweite Teil
der virtuellen Adresse Bits der virtuellen Adresse enthält,
die entsprechend der Größeninformation im ausgewählten
Speicherfeld bestimmt werden.
2. Datenprozessor nach Anspruch 1, wobei eine Größe der
virtuellen Seite zwischen einer maximalen Größe und einer
minimalen Größe eingestellt wird, wobei die maximale Größe ein
2N-Vielfaches der minimalen Größe ist, und wobei die Anzahl
der Banken des Pufferspeichers nicht kleiner als 2 N ist.
3. Datenprozessor nach Anspruch 2, wobei der erste Teil der
virtuellen Adresse zum Auswählen des Speicherfelds aus jeder
der Banken 11 bis 14 Adressenorte hat, die in der virtuellen
Adresse fixiert sind, und wobei die fixierten Adressenorte
durch Adressenorte in der virtuellen Adresse bestimmt werden,
durch die das Speicherfeld aus einer der Banken ausgewählt
wird, wenn die virtuelle Seite die maximale Größe aufweist.
4. Datenprozessor nach Anspruch 3, wobei die virtuelle
Seiteninformation, die im Speicherfeld gespeichert ist, ein Feld
zum Speichern erster Bits zum Vergleich mit dem zweiten Teil
der virtuellen Adresse enthält, wenn die virtuelle Seite die
maximale Größe hat, und ein Feld zum Speichern zweiter Bits,
die nicht mit dem zweiten Teil der logischen Adresse
verglichen werden, wenn die virtuelle Seite die maximale Größe hat,
und die mit dem zweiten Teil der logischen Adresse verglichen
werden, wenn die virtuelle Seite die minimale Größe aufweist,
und
wobei unabhängig davon, ob der Vergleich für die zweiten
Bits durchgeführt wurde, eine Trefferentscheidung
entsprechend der Größeninformation bestimmt wird.
5. Datenprozessor nach Anspruch 1, wobei der
Adressenübersetzungs-Pufferspeicher (1) assoziativ ist, ferner umfassend:
Einrichtung zum Bereitstellen eines Steuersignals; und
ein Indexadressen-Erzeugungselement, das mindestens
einen Teil der virtuellen Adresse und des Steuersignals
empfängt, wobei das Indexadressen-Erzeugungselement eine
Indexadresse zum Auswählen eines Speicherfelds aus jeder der
mehreren Banken erzeugt, und wobei das
Indexadressen-Erzeugungselement dem Kontrollsignal entsprechend unterschiedliche
Indexadressen erzeugt.
6. Datenprozessor nach Anspruch 5, wobei das Indexadressen-
Erzeugungselement ein erstes Element enthält, das basierend
auf Informationen, die einem Prozeß entsprechen, der die
virtuelle Adresse benutzt, den Teil der virtuellen Adresse
verändert, und ein Element, das den Abschnitt der virtuellen
Adresse oder eine Ausgabe des ersten Elements als die
Indexadresse entsprechend dem Steuersignal bereitstellt.
7. Datenprozessor nach Anspruch 1, einschließlich einer
Zentraleinheit (3), wobei der
Adressenübersetzungs-Pufferspeicher (1) Satz-assoziativ ist, ferner umfassend:
ein Bestimmungselement, auf das die Zentraleinheit
zugreift und das eine Bank einschließlich einem Speicherfeld
bestimmt, in dem Information zu ersetzen ist, wobei die Bank,
in der Information zu ersetzen ist, durch eine Software
bestimmt wird, die von der Zentraleinheit 3 ausgeführt wird.
8. Datenprozessor nach Anspruch 7, wobei das
Bestimmungselement ein Register enthält, in dem die Information zum
Bestimmen der Bank, in der Information zu ersetzen ist, durch
das Ausführen einer Software durch die Zentraleinheit (3)
bestimmt wird.
9. Datenprozessor nach Anspruch 1, wobei der
Adressenübersetzungs-Pufferspeicher (1) Satz-assoziativ ist, ferner
umfassend:
ein Element, das eine von mehreren Banken (11 bis 14)
bestimmt, die ein Speicherfeld mit Information enthält, die
entsprechend einer vorbestimmten Regel zu ersetzen ist; und
eine Zentraleinheit (3), die mit dem Element gekoppelt
ist und die die Bestimmung der Bank durch das Element der
eine vorbestimmte Software ausführenden Zentraleinheit (3)
ändert.
10. Datenprozessor nach Anspruch 9, wobei das
Bestimmungselement ein Zählelement enthält, und wobei die vorbestimmte
Regel zur Bestimmung der Bank (1 bis 14), die die zu
ersetzende Information enthält,
das Inkrementieren der Zähleinheit entsprechend einer
Anfrage zum Ersetzen der Information vom Satz-assoziativen
Zwischenspeicher (1) umfaßt,
das Einstellen des inkrementierten Ergebnisses, als die
Bank (11 bis 14), die zu ersetzende Information enthält, wenn
jede der Banken (11 bis 14) effektive Daten speichert, und
das Einstellen des Zählelements mit der Nummer einer
Bank (11 bis 14), die keine effektiven Daten speichert, als
die Bank (11 bis 14), die zu ersetzende Information enthält,
wenn der Satz-assoziative Zwischenspeicher (1) eine Bank
enthält, die keine effektiven Daten speichert; und
wobei die Zentraleinheit das Zählelement beim Ausführen
der vorbestimmten Software ändert, wobei die Bestimmung der
Bank geändert wird.
11. Datenprozessor nach Anspruch 1, umfassend
eine Prozeßeinheit, die die logische Adresse erzeugt,
welche eine Indexadresse, eine Vergleichsadresse und eine
Distanzadresse enthält; und wobei der
Adressenübersetzungs-Pufferspeicher (1) ein Adressenübersetzungsspeicher (TLB) ist,
der die virtuelle Adresse, die von der Prozeßeinheit erzeugt
ist, in eine absolute Adresse übersetzt, wobei der
Adressenübersetzungsspeicher (TLB) (1) umfaßt:
mehrere Banken (11 bis 14) mit jeweils mehreren
Einträgen, die jeweils eine virtuelle Seitennummer, die die
virtuelle Seite angibt, Größeninformation, die die Größe der
virtuellen Seite angibt, und eine absolute Seitennummer, die zur
virtuellen Seitennummer paßt, haben,
einen Selektor, der einen von der Indexadresse
bestimmten Eintrag aus jeder der Banken entsprechend der
Indexadresse auswählt; und
einen Komparator (1 51 bis 1 53), der die virtuellen
Seitennummer des ausgewählten Eintrags mit der Vergleichsadresse
vergleicht, wobei eine Bitnummer der zu vergleichenden
virtuellen Seitennummer durch die Größeninformation im
ausgewählten Eintrag festgelegt wird, und
wobei die absolute Adresse aus der absoluten
Seitennummer im ausgewählten Eintrag und der Distanzadresse erzeugt
wird.
12. Datenprozessor nach Anspruch 11, wobei der Prozessor und
der Adressenübersetzungsspeicher (TLB) auf einem
Halbleiterchip ausgebildet sind.
13. Datenprozessor nach Anspruch 12, wobei eine erste Größe
der virtuellen Seite die N-te Potenz von Zwei einer zweiten
Größe der virtuellen Seite beträgt, und wobei eine Anzahl der
Banken 11 bis 14 nicht größer als N-te Potenz von Zwei ist.
14. Datenprozessor nach Anspruch 11, wobei der
Datenprozessor unter Verwendung der virtuellen Speicherfunktion mehrere
Prozesse ausführt, wobei der Datenprozessor ferner umfaßt:
ein vom Prozessor einstellbares Steuerbit, und
ein Register zur Ausgabe einer Prozeßnummer zum Anzeigen
eines Prozesses unter mehreren Prozessen, und
wobei der Selektor die Indexadresse mit einem Abschnitt
der Prozeßnummer verändert und einen Eintrag auswählt, indem
er die geänderte Indexadresse verwendet, wenn das Steuerbit
in einem ersten Zustand eingestellt ist, und wobei der
Selektor einen Eintrag unter Verwendung der Indexadresse auswählt,
wenn das Steuerbit in einem zweiten Zustand eingestellt ist.
15. Datenprozessor nach Anspruch 14, wobei der. Selektor ein
ausschließliches logisches Element umfaßt, das die
Indexadresse und den Abschnitt der Prozeßnummer empfängt und einen
Dekoder, der entweder eine Ausgabe des exklusiven logischen
Elements oder der Indexadresse in Übereinstimmung mit dem
ersten Steuerbit dekodiert.
16. Datenprozessor nach Anspruch 14, wobei jeder von
mehreren Einträgen eine Prozeßnummer umfaßt, die mit der
Prozeßnummer aus dem Register zu vergleichen ist.
17. Datenprozessor nach Anspruch 12, ferner umfassend
ein durch den Prozessor einstellbares Steuerbit und
einen zweiten Selektor, der eine von mehreren Banken (11 bis
14) entsprechend dem Steuerbit bestimmt, wenn keine effektive
Information in einem der von der Indexadresse ausgewählten
Einträge gespeichert ist,
wobei eine absolute Seitennummer in den Eintrag
geschrieben wird, der von der Indexadresse bestimmt ist, und
der in der Bank enthalten ist, die vom zweiten Selektor
bestimmt ist, wobei die Information in dem Eintrag im
Adressenübersetzungsspeicher (TLB) (1) ersetzt wird.
18. Datenprozessor nach Anspruch 12, wobei der
Datenprozessor unter Verwendung der virtuellen Speicherfunktion mehrere
Prozesse ausführt, ferner umfassend
ein Register, das eine Prozeßnummer zum Spezifizieren
eines von mehreren Prozessen speichert,
wobei jeder der mehreren Einträge ein Prozeßfeld zum
Speichern einer Prozeßnummer zum Spezifizieren eines
Prozesses enthält sowie ein Teilfeld zum Speichern einer
Teilinformation, die anzeigt, ob eine virtuelle Seite, die von einer
virtuellen, in dem Eintrag gespeicherten Seitennummer
angezeigt wird, von mehreren Prozessen geteilt wird, und
wobei durch die Teilinformation entschieden wird, ob ein
Vergleich zwischen der Prozeßnummer, die in dem Register
gespeichert ist, und der Prozeßnummer, die in dem Prozeßfeld
gespeichert ist, durch den Komparator ausgeführt wird.
19. Datenprozessor nach Anspruch 11, ferner umfassend ein
von der Prozeßeinheit einstellbares Bankbestimmungselement,
und wobei der Adressenübersetzungsspeicher (TLB) (1) ferner
umfaßt:
einen Komparator (151 bis 153), der die virtuelle
Seitennummer aus dem ausgewählten Eintrag mit der
Vergleichsadresse vergleicht; und
einen Bankauswähler, der eine Bank bestimmt, die von dem
Bankbestimmungselement dazu bestimmt ist, den Austausch: eines
Eintrags auszuführen, wenn der Komparator anzeigt, daß eine
virtuelle Seitennummer, die zu der Vergleichsadresse gehört,
nicht in dem ausgewählten Eintrag gespeichert ist.
20. Datenprozessor nach Anspruch 19, wobei der
Datenprozessor auf einem Halbleiterchip ausgebildet ist.
21. Datenprozessor nach Anspruch 1, wobei eine Größe der
virtuellen Seite auf eine maximale und eine minimale Größe
einstellbar ist, und wobei die Beziehung zwischen der Anzahl
der Banken, der maximalen und der minimalen Größe durch N
Smax/Smin dargestellt ist, wobei N die Anzahl der Banken,
Smax die maximale Größe und Smin die minimale Größe angibt,
und wobei die maximale Größe eine Potenz von zwei der
minimalen Größe ist.
22. Datenprozessor nach Anspruch 12,
wobei die Größe der virtuellen Seite auf eine erste und
zweite Größe einstellbar ist und wobei die Beziehung zwischen
der Anzahl der Banken, der ersten Größe und der zweiten Größe
durch N ≥ S1/S2 dargestellt ist, wobei N die Anzahl der
Banken, S1 die erste Größe und S2 die zweite Größe darstellt,
und wobei die erste Größe eine Potenz von zwei der zweiten
Größe ist.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP24199394 | 1994-09-09 | ||
JP8606895 | 1995-03-17 | ||
JP24087195A JP3740195B2 (ja) | 1994-09-09 | 1995-08-25 | データ処理装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
DE69520718D1 DE69520718D1 (de) | 2001-05-23 |
DE69520718T2 true DE69520718T2 (de) | 2001-08-02 |
Family
ID=27305071
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE69520718T Expired - Lifetime DE69520718T2 (de) | 1994-09-09 | 1995-09-01 | Datenprozessor mit Adressübersetzungsmechanismus |
Country Status (5)
Country | Link |
---|---|
US (2) | US5796978A (de) |
EP (2) | EP0977123A3 (de) |
JP (1) | JP3740195B2 (de) |
KR (1) | KR100368196B1 (de) |
DE (1) | DE69520718T2 (de) |
Families Citing this family (122)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5918251A (en) * | 1996-12-23 | 1999-06-29 | Intel Corporation | Method and apparatus for preloading different default address translation attributes |
US5950228A (en) * | 1997-02-03 | 1999-09-07 | Digital Equipment Corporation | Variable-grained memory sharing for clusters of symmetric multi-processors using private and shared state tables |
KR100263672B1 (ko) * | 1997-05-08 | 2000-09-01 | 김영환 | 가변적인 페이지 크기를 지원하는 어드레스 변환장치 |
JPH10333971A (ja) * | 1997-05-28 | 1998-12-18 | Sony Corp | データ演算装置 |
DE19735948C1 (de) * | 1997-08-19 | 1998-10-01 | Siemens Nixdorf Inf Syst | Verfahren zur Verbesserung der Steuerungsmöglichkeit in Datenverarbeitungsanlagen mit Adreßübersetzung |
JP3457644B2 (ja) * | 1997-11-06 | 2003-10-20 | 株式会社日立製作所 | データ処理装置およびデータ処理システム |
EP0926600B1 (de) * | 1997-12-24 | 2003-06-11 | Texas Instruments Inc. | Computer Anordnung mit Prozessor und Speicher-Hierarchie und sein Betriebsverfahren |
US6289431B1 (en) * | 1998-01-26 | 2001-09-11 | Intel Corporation | Method and apparatus for accessing more than 4 Gigabytes of physical memory with 4-byte table entries |
US6266754B1 (en) * | 1998-05-29 | 2001-07-24 | Texas Instruments Incorporated | Secure computing device including operating system stored in non-relocatable page of memory |
US6311212B1 (en) * | 1998-06-27 | 2001-10-30 | Intel Corporation | Systems and methods for on-chip storage of virtual connection descriptors |
US6728249B2 (en) | 1998-06-27 | 2004-04-27 | Intel Corporation | System and method for performing cut-through forwarding in an ATM network supporting LAN emulation |
US6603768B1 (en) | 1998-06-27 | 2003-08-05 | Intel Corporation | Multi-protocol conversion assistance method and system for a network accelerator |
US6604136B1 (en) | 1998-06-27 | 2003-08-05 | Intel Corporation | Application programming interfaces and methods enabling a host to interface with a network processor |
US6735773B1 (en) | 1998-06-27 | 2004-05-11 | Intel Corporation | Method and apparatus for issuing commands to a network processor configured to provide a plurality of APIs |
US6724767B1 (en) | 1998-06-27 | 2004-04-20 | Intel Corporation | Two-dimensional queuing/de-queuing methods and systems for implementing the same |
US6657959B1 (en) | 1998-06-27 | 2003-12-02 | Intel Corporation | Systems and methods for implementing ABR with guaranteed MCR |
US6226731B1 (en) * | 1998-09-08 | 2001-05-01 | International Business Machines Corporation | Method and system for accessing a cache memory within a data-processing system utilizing a pre-calculated comparison array |
DE19842849C2 (de) * | 1998-09-18 | 2001-02-01 | Siemens Ag | Verfahren und Anordnung zum Übertragen von digitalen Daten |
US6910109B2 (en) * | 1998-09-30 | 2005-06-21 | Intel Corporation | Tracking memory page state |
US6826191B1 (en) | 1999-10-01 | 2004-11-30 | Stmicroelectronics Ltd. | Packets containing transaction attributes |
US6502210B1 (en) | 1999-10-01 | 2002-12-31 | Stmicroelectronics, Ltd. | Microcomputer debug architecture and method |
US6546480B1 (en) | 1999-10-01 | 2003-04-08 | Hitachi, Ltd. | Instructions for arithmetic operations on vectored data |
US6412043B1 (en) | 1999-10-01 | 2002-06-25 | Hitachi, Ltd. | Microprocessor having improved memory management unit and cache memory |
US6693914B1 (en) | 1999-10-01 | 2004-02-17 | Stmicroelectronics, Inc. | Arbitration mechanism for packet transmission |
US6820195B1 (en) | 1999-10-01 | 2004-11-16 | Hitachi, Ltd. | Aligning load/store data with big/little endian determined rotation distance control |
US7266728B1 (en) | 1999-10-01 | 2007-09-04 | Stmicroelectronics Ltd. | Circuit for monitoring information on an interconnect |
US6772325B1 (en) * | 1999-10-01 | 2004-08-03 | Hitachi, Ltd. | Processor architecture and operation for exploiting improved branch control instruction |
US6591369B1 (en) | 1999-10-01 | 2003-07-08 | Stmicroelectronics, Ltd. | System and method for communicating with an integrated circuit |
US6463553B1 (en) | 1999-10-01 | 2002-10-08 | Stmicroelectronics, Ltd. | Microcomputer debug architecture and method |
US6530047B1 (en) | 1999-10-01 | 2003-03-04 | Stmicroelectronics Limited | System and method for communicating with an integrated circuit |
US6557119B1 (en) | 1999-10-01 | 2003-04-29 | Stmicroelectronics Limited | Microcomputer debug architecture and method |
JP2001142692A (ja) * | 1999-10-01 | 2001-05-25 | Hitachi Ltd | 2つの異なる固定長命令セットを実行するマイクロプロセッサ、マイクロコンピュータおよび命令実行方法 |
US6928073B2 (en) * | 1999-10-01 | 2005-08-09 | Stmicroelectronics Ltd. | Integrated circuit implementing packet transmission |
US6918065B1 (en) | 1999-10-01 | 2005-07-12 | Hitachi, Ltd. | Method for compressing and decompressing trace information |
US6732307B1 (en) | 1999-10-01 | 2004-05-04 | Hitachi, Ltd. | Apparatus and method for storing trace information |
US6629115B1 (en) | 1999-10-01 | 2003-09-30 | Hitachi, Ltd. | Method and apparatus for manipulating vectored data |
US7000078B1 (en) | 1999-10-01 | 2006-02-14 | Stmicroelectronics Ltd. | System and method for maintaining cache coherency in a shared memory system |
US6351803B2 (en) | 1999-10-01 | 2002-02-26 | Hitachi Ltd. | Mechanism for power efficient processing in a pipeline processor |
US6598177B1 (en) | 1999-10-01 | 2003-07-22 | Stmicroelectronics Ltd. | Monitoring error conditions in an integrated circuit |
US6598128B1 (en) | 1999-10-01 | 2003-07-22 | Hitachi, Ltd. | Microprocessor having improved memory management unit and cache memory |
US6349371B1 (en) | 1999-10-01 | 2002-02-19 | Stmicroelectronics Ltd. | Circuit for storing information |
US6701405B1 (en) | 1999-10-01 | 2004-03-02 | Hitachi, Ltd. | DMA handshake protocol |
US6633971B2 (en) | 1999-10-01 | 2003-10-14 | Hitachi, Ltd. | Mechanism for forward data in a processor pipeline using a single pipefile connected to the pipeline |
US6487683B1 (en) | 1999-10-01 | 2002-11-26 | Stmicroelectronics Limited | Microcomputer debug architecture and method |
US6665816B1 (en) | 1999-10-01 | 2003-12-16 | Stmicroelectronics Limited | Data shift register |
US6449712B1 (en) | 1999-10-01 | 2002-09-10 | Hitachi, Ltd. | Emulating execution of smaller fixed-length branch/delay slot instructions with a sequence of larger fixed-length instructions |
US6574651B1 (en) | 1999-10-01 | 2003-06-03 | Hitachi, Ltd. | Method and apparatus for arithmetic operation on vectored data |
US6542983B1 (en) | 1999-10-01 | 2003-04-01 | Hitachi, Ltd. | Microcomputer/floating point processor interface and method |
US6412047B2 (en) | 1999-10-01 | 2002-06-25 | Stmicroelectronics, Inc. | Coherency protocol |
US6408381B1 (en) | 1999-10-01 | 2002-06-18 | Hitachi, Ltd. | Mechanism for fast access to control space in a pipeline processor |
US6779145B1 (en) | 1999-10-01 | 2004-08-17 | Stmicroelectronics Limited | System and method for communicating with an integrated circuit |
US6590907B1 (en) | 1999-10-01 | 2003-07-08 | Stmicroelectronics Ltd. | Integrated circuit with additional ports |
US7260745B1 (en) | 1999-10-01 | 2007-08-21 | Stmicroelectronics Ltd. | Detection of information on an interconnect |
US6629207B1 (en) | 1999-10-01 | 2003-09-30 | Hitachi, Ltd. | Method for loading instructions or data into a locked way of a cache memory |
US6553460B1 (en) | 1999-10-01 | 2003-04-22 | Hitachi, Ltd. | Microprocessor having improved memory management unit and cache memory |
US7072817B1 (en) | 1999-10-01 | 2006-07-04 | Stmicroelectronics Ltd. | Method of designing an initiator in an integrated circuit |
US6567932B2 (en) | 1999-10-01 | 2003-05-20 | Stmicroelectronics Limited | System and method for communicating with an integrated circuit |
US6460174B1 (en) | 1999-10-01 | 2002-10-01 | Stmicroelectronics, Ltd. | Methods and models for use in designing an integrated circuit |
US6434665B1 (en) | 1999-10-01 | 2002-08-13 | Stmicroelectronics, Inc. | Cache memory store buffer |
US6615370B1 (en) | 1999-10-01 | 2003-09-02 | Hitachi, Ltd. | Circuit for storing trace information |
US6298394B1 (en) | 1999-10-01 | 2001-10-02 | Stmicroelectronics, Ltd. | System and method for capturing information on an interconnect in an integrated circuit |
US6496905B1 (en) | 1999-10-01 | 2002-12-17 | Hitachi, Ltd. | Write buffer with burst capability |
US6859891B2 (en) | 1999-10-01 | 2005-02-22 | Stmicroelectronics Limited | Apparatus and method for shadowing processor information |
US6457118B1 (en) | 1999-10-01 | 2002-09-24 | Hitachi Ltd | Method and system for selecting and using source operands in computer system instructions |
US6601189B1 (en) | 1999-10-01 | 2003-07-29 | Stmicroelectronics Limited | System and method for communicating with an integrated circuit |
US6684348B1 (en) | 1999-10-01 | 2004-01-27 | Hitachi, Ltd. | Circuit for processing trace information |
US7793261B1 (en) | 1999-10-01 | 2010-09-07 | Stmicroelectronics Limited | Interface for transferring debug information |
US6970992B2 (en) * | 1999-10-04 | 2005-11-29 | Intel Corporation | Apparatus to map virtual pages to disparate-sized, non-contiguous real pages and methods relating thereto |
US6519684B1 (en) * | 1999-11-23 | 2003-02-11 | Motorola, Inc. | Low overhead method for selecting and updating an entry in a cache memory |
US6625714B1 (en) * | 1999-12-17 | 2003-09-23 | Hewlett-Packard Development Company, L.P. | Parallel distributed function translation lookaside buffer |
US7140022B2 (en) * | 2000-06-02 | 2006-11-21 | Honeywell International Inc. | Method and apparatus for slack stealing with dynamic threads |
EP1182571B1 (de) * | 2000-08-21 | 2011-01-26 | Texas Instruments Incorporated | Auf gemeinsamem Bit basierte TLB-Operationen |
US6549987B1 (en) * | 2000-11-16 | 2003-04-15 | Intel Corporation | Cache structure for storing variable length data |
DE10105284A1 (de) * | 2001-02-06 | 2002-08-29 | Infineon Technologies Ag | Mikroprozessorschaltung für Datenträger und Verfahren zum Organisieren des Zugriffs auf in einem Speicher abgelegten Daten |
US6549997B2 (en) * | 2001-03-16 | 2003-04-15 | Fujitsu Limited | Dynamic variable page size translation of addresses |
US7424576B2 (en) * | 2001-05-02 | 2008-09-09 | Intel Corporation | Parallel cachelets |
US6523104B2 (en) * | 2001-07-13 | 2003-02-18 | Mips Technologies, Inc. | Mechanism for programmable modification of memory mapping granularity |
US6728859B1 (en) | 2001-07-13 | 2004-04-27 | Mips Technologies, Inc. | Programmable page table access |
US6854039B1 (en) * | 2001-12-05 | 2005-02-08 | Advanced Micro Devices, Inc. | Memory management system and method providing increased memory access security |
KR100450675B1 (ko) * | 2002-03-19 | 2004-10-01 | 삼성전자주식회사 | 성능향상 및 전력소모를 감소시킬 수 있는 tlb |
US7069442B2 (en) | 2002-03-29 | 2006-06-27 | Intel Corporation | System and method for execution of a secured environment initialization instruction |
JP4186509B2 (ja) * | 2002-05-10 | 2008-11-26 | 株式会社日立製作所 | ディスクシステムとそのキャッシュ制御方法 |
US7178139B2 (en) * | 2002-08-27 | 2007-02-13 | Delphi Technologies, Inc. | Executable file system for an embedded computer |
US7103748B2 (en) * | 2002-12-12 | 2006-09-05 | International Business Machines Corporation | Memory management for real-time applications |
US7412569B2 (en) * | 2003-04-10 | 2008-08-12 | Intel Corporation | System and method to track changes in memory |
US7089397B1 (en) | 2003-07-03 | 2006-08-08 | Transmeta Corporation | Method and system for caching attribute data for matching attributes with physical addresses |
US7100018B2 (en) * | 2003-07-31 | 2006-08-29 | Silicon Graphics, Inc. | System and method for encoding page size information |
US7055004B2 (en) * | 2003-09-04 | 2006-05-30 | International Business Machines Corporation | Pseudo-LRU for a locking cache |
US7120748B2 (en) * | 2003-09-04 | 2006-10-10 | International Business Machines Corporation | Software-controlled cache set management |
US7114035B2 (en) * | 2003-09-04 | 2006-09-26 | International Business Machines Corporation | Software-controlled cache set management with software-generated class identifiers |
US7069390B2 (en) * | 2003-09-04 | 2006-06-27 | International Business Machines Corporation | Implementation of a pseudo-LRU algorithm in a partitioned cache |
US7076632B2 (en) * | 2003-10-16 | 2006-07-11 | International Business Machines Corporation | Fast paging of a large memory block |
US7278008B1 (en) | 2004-01-30 | 2007-10-02 | Nvidia Corporation | Virtual address translation system with caching of variable-range translation clusters |
US7296139B1 (en) | 2004-01-30 | 2007-11-13 | Nvidia Corporation | In-memory table structure for virtual address translation system with translation units of variable range size |
US7334108B1 (en) | 2004-01-30 | 2008-02-19 | Nvidia Corporation | Multi-client virtual address translation system with translation units of variable-range size |
US7082075B2 (en) * | 2004-03-18 | 2006-07-25 | Micron Technology, Inc. | Memory device and method having banks of different sizes |
US7426625B2 (en) | 2004-03-31 | 2008-09-16 | International Business Machines Corporation | Data processing system and computer program product for support of system memory addresses with holes |
US20050273575A1 (en) * | 2004-06-02 | 2005-12-08 | Mukherjee Shubhendu S | Mechanism to invalidate data translation buffer entries a multiprocessor system |
US7266670B2 (en) * | 2004-06-04 | 2007-09-04 | Faraday Technology Corp. | Method of determining whether a virtual address corresponds to a physical address in a translation lookaside buffer |
JP4576172B2 (ja) * | 2004-07-29 | 2010-11-04 | 富士通株式会社 | 演算処理装置,情報処理装置及び演算処理装置の制御方法 |
US7562179B2 (en) | 2004-07-30 | 2009-07-14 | Intel Corporation | Maintaining processor resources during architectural events |
WO2006123351A1 (en) * | 2005-04-11 | 2006-11-23 | Hewlett-Packard Development Company L.P. | Tlb page fault handler and dump manager |
US7590819B2 (en) * | 2005-05-09 | 2009-09-15 | Lsi Logic Corporation | Compact memory management unit |
US7805588B2 (en) * | 2005-10-20 | 2010-09-28 | Qualcomm Incorporated | Caching memory attribute indicators with cached memory data field |
US20080028181A1 (en) * | 2006-07-31 | 2008-01-31 | Nvidia Corporation | Dedicated mechanism for page mapping in a gpu |
US8464000B2 (en) | 2008-02-29 | 2013-06-11 | Qualcomm Incorporated | Systems and methods for cache line replacements |
JP5252570B2 (ja) * | 2009-03-30 | 2013-07-31 | メタウォーター株式会社 | データ記録装置 |
JP5337247B2 (ja) | 2009-08-07 | 2013-11-06 | パナソニック株式会社 | 半導体記憶装置 |
CN104216833B (zh) * | 2013-05-29 | 2017-10-10 | 华为技术有限公司 | 一种确定物理地址的方法及装置 |
US9582426B2 (en) * | 2013-08-20 | 2017-02-28 | International Business Machines Corporation | Hardware managed compressed cache |
US9940129B2 (en) * | 2015-04-24 | 2018-04-10 | Optimum Semiconductor Technologies, Inc. | Computer processor with register direct branches and employing an instruction preload structure |
US10222984B1 (en) * | 2015-12-31 | 2019-03-05 | EMC IP Holding Company LLC | Managing multi-granularity flash translation layers in solid state drives |
US10198203B2 (en) * | 2016-11-15 | 2019-02-05 | Samsung Electronics Co., Ltd. | Method of operating memory device using pseudo-random functions, memory device using the same and memory system including the device |
US10664306B2 (en) | 2017-01-13 | 2020-05-26 | Arm Limited | Memory partitioning |
US10649678B2 (en) | 2017-01-13 | 2020-05-12 | Arm Limited | Partitioning of memory system resources or performance monitoring |
US20180203807A1 (en) * | 2017-01-13 | 2018-07-19 | Arm Limited | Partitioning tlb or cache allocation |
US10719451B2 (en) * | 2017-01-13 | 2020-07-21 | Optimum Semiconductor Technologies Inc. | Variable translation-lookaside buffer (TLB) indexing |
US10664400B2 (en) | 2017-07-11 | 2020-05-26 | Arm Limited | Address translation cache partitioning |
US10769076B2 (en) * | 2018-11-21 | 2020-09-08 | Nvidia Corporation | Distributed address translation in a multi-node interconnect fabric |
US11256625B2 (en) | 2019-09-10 | 2022-02-22 | Arm Limited | Partition identifiers for page table walk memory transactions |
US11226902B2 (en) * | 2019-09-30 | 2022-01-18 | International Business Machines Corporation | Translation load instruction with access protection |
US20240241832A1 (en) * | 2023-01-16 | 2024-07-18 | Nokia Solutions And Networks Oy | Multi-mode indexed cache in a processor |
Family Cites Families (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4084230A (en) * | 1976-11-29 | 1978-04-11 | International Business Machines Corporation | Hybrid semiconductor memory with on-chip associative page addressing, page replacement and control |
DE2939411C2 (de) * | 1979-09-28 | 1982-09-02 | Siemens AG, 1000 Berlin und 8000 München | Datenverarbeitungsanlage mit virtueller Speicheradressierung |
US4525778A (en) * | 1982-05-25 | 1985-06-25 | Massachusetts Computer Corporation | Computer memory control |
JPH0685156B2 (ja) * | 1985-05-24 | 1994-10-26 | 株式会社日立製作所 | アドレス変換装置 |
US5230045A (en) * | 1986-11-12 | 1993-07-20 | Xerox Corporation | Multiple address space system including address translator for receiving virtual addresses from bus and providing real addresses on the bus |
US5123101A (en) * | 1986-11-12 | 1992-06-16 | Xerox Corporation | Multiple address space mapping technique for shared memory wherein a processor operates a fault handling routine upon a translator miss |
JPS63177239A (ja) * | 1987-01-19 | 1988-07-21 | Hitachi Ltd | 仮想計算機システム |
JPS63223849A (ja) * | 1987-03-12 | 1988-09-19 | Fujitsu Ltd | 多重仮想空間方式 |
JPS63231550A (ja) * | 1987-03-19 | 1988-09-27 | Hitachi Ltd | 多重仮想空間制御方式 |
JPS6410359A (en) * | 1987-07-03 | 1989-01-13 | Hitachi Ltd | Address conversion system for virtual computer system |
US5133058A (en) * | 1989-09-18 | 1992-07-21 | Sun Microsystems, Inc. | Page-tagging translation look-aside buffer for a computer memory system |
CA2045789A1 (en) * | 1990-06-29 | 1991-12-30 | Richard Lee Sites | Granularity hint for translation buffer in high performance processor |
JPH04160448A (ja) * | 1990-10-23 | 1992-06-03 | Fujitsu Ltd | アドレス変換方式 |
US5222222A (en) * | 1990-12-18 | 1993-06-22 | Sun Microsystems, Inc. | Apparatus and method for a space saving translation lookaside buffer for content addressable memory |
US5263140A (en) * | 1991-01-23 | 1993-11-16 | Silicon Graphics, Inc. | Variable page size per entry translation look-aside buffer |
EP0508577A1 (de) * | 1991-03-13 | 1992-10-14 | International Business Machines Corporation | Adressübersetzungseinrichtung |
US5319760A (en) * | 1991-06-28 | 1994-06-07 | Digital Equipment Corporation | Translation buffer for virtual machines with address space match |
JPH0581132A (ja) * | 1991-09-19 | 1993-04-02 | Nec Ibaraki Ltd | アドレス変換バツフアのアクセス回路 |
JPH05314003A (ja) * | 1992-05-14 | 1993-11-26 | Mitsubishi Electric Corp | キャッシュメモリ装置 |
US5473348A (en) * | 1992-06-09 | 1995-12-05 | Kabushiki Kaisha Toshiba | Apparatus and method of controlling paging unit of coprocessor built in display control system |
US5465337A (en) * | 1992-08-13 | 1995-11-07 | Sun Microsystems, Inc. | Method and apparatus for a memory management unit supporting multiple page sizes |
JPH06202954A (ja) * | 1992-12-28 | 1994-07-22 | Fujitsu Ltd | タグ比較回路及びこれを用いたトランスレーション・ルック・アサイド・バッファ |
US5479627A (en) * | 1993-09-08 | 1995-12-26 | Sun Microsystems, Inc. | Virtual address to physical address translation cache that supports multiple page sizes |
-
1995
- 1995-08-25 JP JP24087195A patent/JP3740195B2/ja not_active Expired - Fee Related
- 1995-09-01 EP EP99120560A patent/EP0977123A3/de not_active Withdrawn
- 1995-09-01 EP EP95113771A patent/EP0701211B1/de not_active Expired - Lifetime
- 1995-09-01 DE DE69520718T patent/DE69520718T2/de not_active Expired - Lifetime
- 1995-09-06 KR KR1019950029114A patent/KR100368196B1/ko not_active IP Right Cessation
- 1995-09-07 US US08/524,561 patent/US5796978A/en not_active Expired - Lifetime
-
1998
- 1998-01-14 US US09/007,249 patent/US6047354A/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
KR960011742A (ko) | 1996-04-20 |
US6047354A (en) | 2000-04-04 |
KR100368196B1 (ko) | 2003-04-10 |
JP3740195B2 (ja) | 2006-02-01 |
US5796978A (en) | 1998-08-18 |
EP0977123A3 (de) | 2004-11-24 |
EP0701211A2 (de) | 1996-03-13 |
JPH08320830A (ja) | 1996-12-03 |
EP0701211B1 (de) | 2001-04-18 |
EP0977123A2 (de) | 2000-02-02 |
EP0701211A3 (de) | 1997-10-15 |
DE69520718D1 (de) | 2001-05-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69520718T2 (de) | Datenprozessor mit Adressübersetzungsmechanismus | |
DE69529374T2 (de) | Datenprozessor mit Teilassoziativer Einheit | |
DE69225622T2 (de) | Adressenübersetzungspufferspeicher mit per Eingabe veränderlicher Seitengrösse | |
DE69707181T2 (de) | Architektur und Verfahren zur gemeinsamen Benutzung von TLB-Einträgen | |
DE112005003863B3 (de) | Verwalten von Prozessorressourcen während Architekturereignissen | |
DE3688192T2 (de) | Seitenorganisierter cachespeicher mit virtueller adressierung. | |
DE69724572T2 (de) | Verfahren und Vorrichtung zur Vorladung von verschiedenen vorgegebenen Adressenübersetzungsattributen | |
DE69721590T2 (de) | Ein bereichsbasiertes seiten-table-walk-bit verwendendes verfahren sowie vorrichtung | |
DE2226382C3 (de) | Datenverarbeitungsanlage mit mehreren Prozessoren und diesen zugeordneten Pufferspeichern | |
DE3587960T2 (de) | Datenverarbeitungsanlage mit einem Speicherzugriffssteuergerät. | |
DE69629140T2 (de) | Cachefähigkeitsattribut für virtuelle Adressen in Cachespeichern mit sowohl virtuellen als auch physikalischem Index | |
DE2459006C2 (de) | Einrichtung zum Bilden einer absoluten Adresse in einer Datenverarbeitunsanlage | |
DE3805107C2 (de) | ||
DE69331039T2 (de) | Rechnersystem mit einem Vorausholungscachespeicher | |
DE69317729T2 (de) | Cache-Etikettenspeicher | |
DE69715203T2 (de) | Ein Datenverarbeitungssystem mit cc-NUMA (cache coherent, non-uniform memory access) Architektur und im lokalen Speicher enthaltenem Cache-Speicher für Fernzugriff | |
DE69210714T2 (de) | Durch Doppelzweck-On-Chip-Speicher implementierter Echtzeit-Cachespeicher | |
DE69231611T2 (de) | Verfahren zu grosser logischer Adressierung | |
DE2807476A1 (de) | Speichereinrichtung mit mehreren virtuellen adressraeumen | |
DE4335475A1 (de) | Datenverarbeitungseinrichtung mit Cache-Speicher | |
DE3280414T2 (de) | Methode fuer den betrieb eines virtuellen speicherorganisationssystems. | |
DE3873388T2 (de) | Cache-speicher. | |
DE69815482T2 (de) | Computer Anordnung mit Prozessor und Speicher-Hierarchie und sein Betriebsverfahren | |
DE4234695C2 (de) | Computer-Speichersystem und Verfahren zur Aufrechterhaltung der Cache-Kohärenz zwischen einem Daten-Cache und einem Segmentdeskriptor-Cache | |
DE69029176T2 (de) | Steuerungsanordnung und Verfahren zum Zugriff auf einen virtuellen Speicheradressraum |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8327 | Change in the person/name/address of the patent owner |
Owner name: RENESAS TECHNOLOGY CORP., TOKYO, JP |
|
8327 | Change in the person/name/address of the patent owner |
Owner name: RENESAS ELECTRONICS CORP., KAWASAKI-SHI, KANAG, JP |