DE69707181T2 - Architektur und Verfahren zur gemeinsamen Benutzung von TLB-Einträgen - Google Patents
Architektur und Verfahren zur gemeinsamen Benutzung von TLB-EinträgenInfo
- Publication number
- DE69707181T2 DE69707181T2 DE69707181T DE69707181T DE69707181T2 DE 69707181 T2 DE69707181 T2 DE 69707181T2 DE 69707181 T DE69707181 T DE 69707181T DE 69707181 T DE69707181 T DE 69707181T DE 69707181 T2 DE69707181 T2 DE 69707181T2
- Authority
- DE
- Germany
- Prior art keywords
- context
- translation
- address
- virtual address
- logic
- 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 - Fee Related
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Description
- Die Erfindung betrifft im allgemeinen das Gebiet der elektronischen Adressierung. Spezieller betrifft die vorliegende Erfindung eine Adressierarchitektur und ein Verfahren zur Verbesserung seiner Leistung durch gemeinsames Nutzen von Übersetzungstabelleneinträgen eines Vorgriffsübersetzungspufferspeichers (translation look-aside buffer).
- Gegenwärtig existieren verschiedene Adressierarchitekturen, die innerhalb eines Computers implementiert sind, um Adreßübersetzungen vom Virtuellen ins Physikalische durchzuführen. Diese Adressierarchitekturen sind typischerweise als eine Speicherverwaltungseinheit ("MMU") implementiert, die in Kombination mit einem Prozessor des Computers arbeiten, um ein besonderes Adreßübersetzungsschema wie zum Beispiel ein "forwarded page table"- Schema von Fig. 1 zu vollziehen.
- Das forwarded page-Tabellenschema 100 beinhaltet die Übersetzung einer virtuellen Adresse 110 in eine physikalische Adresse 150 durch Zugreifen auf drei verschiedene Tabellen in Folge, nämlich eine Kontexttabelle 120, eine Segmenttabelle 130 und eine Seitentabelle 140. Genauer gesagt wird die virtuelle Adresse 110 in die physikalische Adresse 150 übersetzt durch zunächst Kombinieren der Inhalte eines Prozessorregisterzustandes während der Initialisierung des MMU (d. h. Wurzeltabellenzeiger 115) und der Information innerhalb eines Kontextregisters 116. Das Kontextregister 116 ist ein Speicherelement (z. B. Prozessorregister), das Informationen speichert, um Prozesse eindeutig zu identifizieren, die dieselbe virtuelle Adresse haben. Durch Kombinieren des Wurzeltabellenzeigers 115 mit der Information des Kontextregisters 116 wird ein Zeiger zu einem Eintrag 121 der Kontexttabelle 120 erzeugt. Dieser Eintrag 121 wird als Index für den Zugriff auf die Inhalte eines Eintrages 131 von der Segmenttabelle 130 verwendet, deren Basisadresse durch die Inhalte des Segmentabschnittes 111 der virtuellen Adresse 110 eingestellt wird. Ebenso werden die Inhalte des Eintrages 131 als ein Index für die Seitentabelle 140 mit einem Seitenabschnitt 112 als seiner Basisadresse, um auf die Inhalte eines Seiteneintrages 141 zuzugreifen, benutzt. Die Inhalte des Seiteneintrages 141 kombiniert mit einem Seitenoffset 113 der virtuellen Adresse 110 bilden die physikalische Adresse 150.
- Mit dem Erscheinen von Prozessoren, die einen 64 Bit-Adreßraum unterstützen, sind mit einem MMU, der das forwarded page-Tabellenschema benutzt, eine Anzahl von Nachteilen verknüpft. Ein Nachteil ist, daß dieses Schema die gemeinsame Nutzung bei einer Granularität einer Tabelle erfordert (z. B. 256 Kilobytes für eine SuperSPARCTM-Achritektur, 4 Megabytes für eine MIPS®-Architektur). Somit verlangen Architekturen, die das forwarded-page- Tabellenschema unterstützen, von allen Teilnehmern, alle physikalischen Seiten, die von der Seitentabelle gemappt wurden, gemeinsam zu nutzen, anstatt das mappings bzw. Abbildungen für einen willkürlichen Satz von virtuellen Seiten gemeinsam genutzt werden. Ein anderer Nachteil der mit dem forwarded-page-Tabellenschema verbunden ist, ist wenn 64 Bit-Adreßraum häufiger verwendet wird, eine große Menge von physikalischem Speicher erforderlich würde, um Adreßübersetzungstabellen von virtuell zu physikalisch mit fester Größe zu unterstützen. Dies ist kein kosteneffizienter Ansatz. Noch ein anderer Nachteil ist, daß dieses Schema Anordnungserfordernisse auferlegt, da die virtuelle Adresse, die für die gemeinsame Nutzung eines Objektes verwendet wird, richtig auf einem Segment oder einer Seitentabellengrenze angeordnet sein muß. Dies ist notwendig, um die gemeinsame Nutzung einer Seitentabellengranularität wie oben beschrieben beizubehalten.
- Währender der letzten paar Jahre und teilweise aufgrund der offensichtlichen Akzeptanz des 64-Bit-Adreßraumes bestand ein dramatisches Bedürfnis für Computerarchitekturen, die virtuellen Speicher über softwareverwaltete Vorgriffsübersetzungspufferspeicher ("TLBs") unterstützen, die nicht irgendwelche festen Seitentabellenerfordernisse auferlegen. Ein TLB ist ein kleiner Cache-Speicher, der hauptsächlich durch ein Betriebssystem des Computers verwaltet wird. Der TLB beinhaltet einen Speicher, der eine Übersetzungstabelle und ein Schaltkreis für den Kennzeichenvergleich enthält, um der Betriebssystemsoftware zu signalisieren, daß ein Übersetzungstabelleneintrag ("TTE") Informationen beinhaltet, die zu einer angeforderten Adreßübersetzung gehören, wie in Fig. 2B gezeigt.
- In Fig. 2A beinhaltet die Datenstruktur der Übersetzungstabelle 200 des TLB eine Anzahl von Einträgen ("TTEs") 210, in der jeder TTE Daten 220 und ein Kennzeichen bzw. Tag 230 beinhaltet. Das TTE-Tag 230 beinhaltet eine vorher gespeicherte virtuelle Adresse ("VA") 231, eine Prozeßkontextidentifikation ("Kontext ID") 232, die verwendet wird, um eindeutig ein Prozeß und ein globales Bit 233 zu identifizieren. Die Daten beinhalten eine physikalische Seitennummer ("PPN") 221 und Seitenattribute (z. B. Schutz, Referenz, Veränderung usw.) 222.
- Der Tag-Vergleichsschaltkreis, der eingesetzt wird, um das konventionelle softwareverwaltete TLB-Übersetzungsschema zu unterstützen, ist in Fig. 2B gezeigt. Dieser Schaltkreis 250 empfängt das TTE-Tag 230 und gibt die Kontext ID 232 in einen Eingang eines Dualeingangsvergleichers 255 ein. Der Schaltkreis 250 beinhaltet weiterhin ein Kontextregister 260, das eine ausgewählte Kontextzahl enthält, die von dem Betriebssystem bei einer bestimmten Kontextschaltzeit eingeladen wurde, um einen Prozeßsystemzustand des Computers zu repräsentieren. Wenn der Vergleicher 255 bestimmt, daß die Kontext ID 232 äquivalent zu der ausgewählten Kontextnummer ist, die in dem Kontextregister enthalten ist, aktiviert der Vergleicher 255 eine Steuerleitung 261, die mit einem ersten Eingang eines ersten logischen Gatters 262 verbunden ist. In dieser Ausführungsform ist das erste logische Gatter 262 konstruiert, um als ein Oder-Gatter zu arbeiten. Wenn entweder die Steuerleitung 261 aktiviert oder das globale Bit 233 aktiv ist, aktiviert das erste logische Gatter 262 eine Steuerleitung 263, die mit einem ersten Eingang eines zweiten logischen Gatters verbunden ist.
- Zusätzlich wird die vorher abgelegte virtuelle Adresse 231, die in dem TTE-Tag 230 enthalten ist, mit einer abgefragten zu übersetzenden virtuellen Adresse verglichen, die direkt von dem Prozessor zur Verfügung gestellt wurde, die als die "virtuelle Prozessoradresse" 236 bezeichnet wird. Dieser Vergleich wird von einem zweiten Vergleicher 270 durchgeführt. Wenn diese virtuellen Adressen identisch sind (bitweiser Vergleich) oder äquivalent (bitweiser oder nichtbitweiser Vergleich), aktiviert der zweite Vergleicher eine Steuerleitung 264, die mit einem zweiten Eingang des zweiten logischen Gatters 265 verbunden ist. Wenn beide Eingänge "aktive" Signale empfangen, übermittelt das zweite logische Gatter 265 ein Übersetzungs-"Treffer"- Signal, um die Betriebssystemsoftware zu unterrichten, daß die Übersetzung in der Übersetzungstabelle des TLB gefunden wurde. Andernfalls wird die Übersetzung von einem Eintrag in der Seitentabelle des Kernels erhalten, die alle Adreßübersetzungen vom Virtuellen ins Physikalische enthält.
- Im allgemeinen erlaubt das obenbeschriebene konventionelle softwareverwaltete TLB- Übersetzungsschema vielen Prozessen physikalische Objekte (z. B. gemeinsame Bibliotheken, Speicher usw.) gemeinsam zu nutzen. Diese Prozesse können eine einzelne virtuelle Adresse nutzen, um eine gemeinsam genutzte physikalische Seite abzubilden. Dieses Übersetzungsschema versagt jedoch bei der Optimierung des der Verwendung zugewiesenen Speichers, wie z. B. Kernelspeicher bzw. Kernspeicher und des TLB, da es getrennte Seitentabelleneinträge und TTEs jedem getrennten Prozeß zuweist, selbst wenn diese Prozesse die gleiche Übersetzungsinformation verwenden.
- Die WO-A-93/00 636 zeigt einen Übersetzungspufferspeicher für virtuelle Maschinen mit Adreßraumübereinstimmung. Eine CPU, die ein Verwaltungssystem für virtuellen Speicher ausführt, setzt für das Ablegen von kürzlich verwendeten Seitentabelleneinträgen im Cache- Speicher einen Übersetzungspufferspeicher ein. Wenn mehr als ein Prozeß von der CPU ausgeführt wird, wird der Übersetzungspufferspeicher üblicherweise gelöscht, wenn eine Kontextumschaltung durchgeführt wird, selbst wenn manche der Einträge für die gemeinsam referenzierten Speichergebiete immer noch gültig wären. Ein Adreßraumnummernmerkmal wird eingesetzt, um es Einträgen zu erlauben, in dem Übersetzungspufferspeicher zu verbleiben für Prozesse, die gegenwärtig ausgeführt werden, und die getrennten Prozesse oder das Betriebssystem kann die Einträge in dem Übersetzungspufferspeicher für diese Speicherseiten, die gemeinsam referenziert sind, wiederverwenden. Um dies zu ermöglichen, signalisiert ein "address space match"-Eintrag ("Adreßraumübereinstimmungseintrag") in dem Seitentabelleneintrag, daß der Übersetzungspufferspeicherinhalt verwendet werden kann, wenn die Adreßkennzeichen übereinstimmen, selbst wenn die Adreßraumnummern nicht zwangsläufig identisch sind. Wenn virtuelle Maschinen auf dieser CPU mit einem virtuellen Maschinenmonitor ausgeführt werden, wird das Adreßraumübereinstimmungsmerkmal zwischen Prozessen einer virtuellen Maschine eingesetzt, wobei aber ein zusätzlicher Eintrag zur Verfügung gestellt wird, um das Adreßraumübereinstimmungsmerkmal für alle Adreßraumzahlen für den virtuellen Maschinenmonitor zu deaktivieren.
- Kürzlich wurde ein anderes Übersetzungsschema eingeführt, um Übersetzungen von unterschiedlichen Adreßräumen unter Verwendung von ähnlichen virtuellen Adressen, die denselben physikalischen Adreßraum abbilden, zu erlauben, einen einzelnen Übersetzungseintrag gemeinsam zu nutzen. Dieses Schema wird als ein "common mask"-Schema (gemeinsames Maskenschema) bezeichnet. Wie in Fig. 2C gezeigt ist, erweitert das common mask-Schema das Kontext ID 232 eines TTE 210 um einen Bitvektor 234, der einen Satz von gemeinsamen Regionen (d. h. gemeinsam genutzten physikalischen Seiten) identifiziert, die von dem Prozeß mit Aktivierung eines gemeinsam genutzten Bits 235 gemeinsam genutzt werden sollen. Wenn andernfalls das gemeinsam genutzte Bit 235 inaktiv ist, stellt der Bitvektor 234 einen ursprünglichen Kontext ID dar, wie er für die nicht gemeinsam genutzten Übersetzungen verwendet wird. Das common mask-Schema ist in einer Veröffentlichung der Sun Microsystems Laboratories mit dem Titel "Improving the Address Translation Performance of Widely Shared Pages" der Autoren Yousef A. Khalidi und Madhusudhan Talluri beschrieben. Das Schema des common mask- Mappings ist jedoch durch das Erfordernis einer komplexen Adressierungsarchitektur teuer zu verwalten.
- Wie dargelegt, ist das gemeinsame Mappingschema von Fig. 2C begrenzt und teuer zu verwalten. Wenn beispielsweise das Kontextregister gleich "m + n" Bits in der Größe ist, kann die gemeinsame Maskenarchitektur "m" Bits zuweisen, um den Prozeß eindeutig zu identifizieren und "n" Bits in dem Kontextidentifizierer für die Maske zuweisen, so daß die gesamte Anzahl von Objekten, die gemeinsam genutzt werden kann, zu jeder gegebenen Zeit auf "n" Objekte begrenzt ist. Im Ergebnis muß das Betriebssystem diese "n" Bits mit Bedacht zusweisen, was zusätzliches Systemoverhead für die Zuweisungssteuerung erfordert.
- Auf der anderen Seite verwendet die vorgeschlagene Adressierungsarchitektur den vollen Kontextidentifizierer als eine Zahl die das System mit 2m+n -Gruppen versorgt. Jede Prozeßgruppe kann wiederum viele Objekte, begrenzt nur durch die Größe des virtuellen Adreßraumes, gemeinsam benutzen. Wir können die Programmposition ausnutzen, um mehrere Gruppenmitgliedschaften zu unterstützen. Das Betriebssystem kann bei einem Seitenfehler das Gruppenkontextregister mit dem entsprechenden Gruppenidentifizierer für das Objekt, auf das zugegriffen werden soll, laden. Da dies ein kleiner Seitenfehler ist, wird die Leistung nicht wesentlich herabgesetzt.
- Ein Ziel dieser Erfindung ist es, eine verbesserte Adressierungsarchitektur zur Verfügung zu stellen, die zusätzliche in dem TTE-Tag zu speichernde Information benutzt, um die Verwendung der Übersetzungstabelle des TLB zu optimieren.
- Besondere und bevorzugte Aspekte der vorliegenden Erfindung sind in den angehängten Ansprüchen ausgeführt.
- Eine Ausführungsform der Erfindung kann einen Adreßübersetzungssteuerschaltkreis zur Verfügung stellen, der in Verbindung mit einem Prozessor und einem Vorgriffsübersetzungspufferspeicher ("TLB") arbeitet, um eine virtuelle Adresse in eine physikalische Adresse zu übersetzen, während gemeinsam genutzte Einträge des TLB benutzt werden. Jeder Eintrag einer Übersetzungstabelle des TLB beinhaltet zumindest eine vorher abgelegte virtuelle Adresse, eine Kontextidentifikationszahl und ein Kontextauswahlbit. Die bevorzugte Ausführungsform des Adreßübersetzungssteuerschaltkreises umfaßt ein Kontexthauptspeicherelement, ein Gruppenkontextspeicherelement, einen Kontextübereinstimmungsschaltkreis, eine Vergleichseinheit und eine logische Einheit. Der Kontextübereinstimmungsschaltkreis ist mit dem Haupt- und Gruppenkontextspeicherelement verbunden, um deren Kontextzahlen zu empfangen und die Kontextidentifikationszahl und den Kontextauswahlbitwert aus einem ausgewählten Übersetzungstabelleneintrag auszulesen. Gleichzeitig vergleicht die Vergleichseinheit die vorher abgelegte virtuelle Adresse, die in dem Eintrag enthalten ist, mit der abgefragten virtuellen Adresse. Die logische Einheit empfängt den Ausgangswert des Kontextübereinstimmungsschaltkreises und der Vergleichseinheit, um der Betriebssystemsoftware anzuzeigen, ob oder ob nicht die geeignete Adreßübersetzung vom Virtuellen ins Physikalische in dem TLB enthalten ist. Aktive Ausgangswerte von dem Kontextübereinstimmungsschaltkreis und der Vergleichseinheit zeigen an, daß die Übersetzung in dem TLB enthalten ist.
- Es gibt zwei bevorzugte Ausführungsformen des Kontextübereinstimmungsschaltkreises. Die erste Ausführungsform beinhaltet eine Multiplexeinheit und eine vergleichende Einheit. Die Multiplexeinheit gibt eine ausgewählte Kontextnummer aus, die eine der Kontextnummern ist, die von dem Hauptkontextspeicherelement und dem Gruppenkontextspeicherelement zur Verfügung gestellt wurden, abhängig von dem Bitwert des Kontextauswahlbits. Die Vergleichseinheit vergleicht die ausgewählte Kontextnummer mit der Kontextidentifikationsnummer, um zu prüfen, ob eine Übereinstimmung existiert. Wenn dies der Fall ist, so gibt es ein aktives Kontextübereinstimmungssignal an die logische Einheit aus. Die zweite Ausführungsform beinhaltet die Verwendung eines Paares von Vergleichseinheiten in Kombination mit bestimmten logischen Gattern, um die Verwendung der Multiplexeinheit zu vermeiden, die schwieriger zu implementieren ist.
- Ausführungsformen der Erfindung sind im folgenden lediglich beispielhalber unter Bezugnahme auf die begleitenden Zeichnungen beschrieben.
- Fig. 1 ist eine Darstellung eines konventionellen forwarded page- Tabellenabbildungsschemas.
- Fig. 2A ist ein Blockdiagramm einer Datenstruktur der Übersetzungstabelle des TLB und TTE-Eintrag.
- Fig. 2B ist ein Blockdiagramm eines konventionellen Kennzeichenvergleichsschaltkreises, der in Verbindung mit der Übersetzungstabelle des TLB verwendet wird.
- Fig. 2C ist ein Blockdiagramm der Datenstruktur des Kontext ID eines TTE, der ein common mask-Übersetzungsschema unterstützt.
- Fig. 3 ist ein Blockdiagramm eines Computersystems, das ein verbessertes softwareverwaltetes TLB-Übersetzungsschema einsetzt.
- Fig. 4 ist ein Diagramm der Datenstrukturen, die ein verbessertes softwareverwaltetes TLB-Übersetzungsschema darstellen.
- Fig. 5 ist eine anschauliche Ausführungsform des Adressierungsübersetzungssteuerschaltkreises, der das verbesserte softwareverwaltete TLB-Übersetzungsschema unterstützt.
- Fig. 6A ist ein detailliertes Blockdiagramm einer Ausführungsform des Kontextübereinstimmungsschaltkreises von Fig. 5
- Fig. 6B ist eine andere anschauliche Ausführungsform des Kontextübereinstimmungsschaltkreises von Fig. 5.
- Eine Ausführungsform der vorliegenden Erfindung liefert eine verbesserte Adressierungsarchitektur, die einer Anzahl von Prozessen erlaubt, denselben Übersetzungstabelleneintrag ("TTE") eines Vorgriffsübersetzungspufferspeichers ("TLB") gemeinsam zu nutzen, wenn Asdreßübersetzungsresourcen gemeinsam genutzt werden. Obgleich viele spezifische Details ausgeführt sind, versteht es sich, daß diese nicht erforderlich sind, um die Erfindung umzusetzen. In anderen Fällen brauchen bekannte Schaltkreise, Geräte und dergleichen, die nicht erörtert werden, die vorliegende Erfindung nicht in den Schatten zu stellen.
- Bestimmte bekannte Terminologie wird hier allgemein definiert. Beispielsweise ist ein "Prozeß" als eine Abfolge von Funktionsschritten definiert, die von einem Prozessor durchgeführt werden, der sich auf Adreßübersetzungsressourcen (d. h. zugewiesenen Code, Daten, Stapel, gemeinsam genutzte Bibliotheken) für die erfolgreiche Ausführung verläßt. Jedem Prozeß ist eine eindeutige Adreßübersetzungshandlung zugeordnet. Eine "Gruppe von Prozessen" ist eine Sammlung von Prozessen, die zusammen kooperieren, um eine spezifische Operation durchzuführen. Der Begriff "aktiviert" oder "aktiv" zeigt an, daß ein Signal, das sich über eine Kommunikationsleitung ausbreitet, "logisch high" ist, oder das Signal "logisch low" ist, wenn es ein aktives low-Signal ist.
- In Fig. 3 ist eine vereinfachte Ausführungsform eines Computersystems, das die verbesserte Adressierungsarchitektur der vorliegenden Erfindung einsetzt, gezeigt. Das Computersystem 300 ist mit einer Mehrzahl von Anschlüssen (z. B. Personalcomputern, nichtintelligenten Terminals usw.) 350a bis 350n über Kommunikationsverbindungen 316 verknüpft. Das Computersystem 300 weist eine Prozessoreinheit 305 und Hauptspeicher 310 auf, die über einen ersten Bus 315 miteinander verbunden sind. Der erste Bus 315 ist mit einem Eingabe- /Ausgabekontroller 320 verbunden, der einen Kommunikationspfad zwischen dem ersten Bus 315 und einem zweiten Bus (z. B. ein I/O-Bus) zur Verfügung stellt. Der zweite Bus 325 breitet Information aus, die von einem der Mehrzahl von Anschlüssen 350a bis 350n stammen und von einer Transceiver-Einheit 330 (z. B. Modem) empfangen werden.
- Wie weiterhin in Fig. 3 gezeigt ist, beinhaltet die Verarbeitungseinheit 305 einen Prozessor 306 und eine Speicherverwaltungseinheit ("MMU") 307, die von dem Prozessor 306 verwendet wird, um die virtuellen Adressen in physikalische Adressen zu übersetzen, wenn auf Daten von dem Hauptspeicher 310 zugegriffen wird. Die MMU 307 beinhaltet eine TLB 308, die in erster Linie sowohl von der Betriebssystemsoftware (nicht gezeigt) und deren Adreßübersetzungssteuerschaltkreis und einer Mehrzahl von Kontextspeicherelementen (z. B. Register und andere Speicherkomponenten), nämlich einem Hauptkontextspeicherelement 309a und zumindest einem Gruppenkontextspeicherelement 309b, gesteuert wird. Das Hauptkontextspeicherelement 309a beinhaltet eine Kontextidentifikationsnummer, die verwendet wird, den gegenwärtigen Prozeß eindeutig zu definieren, während das Gruppenkontextspeicherelement 309b als Kontextidentifikation für diejenigen Prozesse, die die physikalischen Seiten gemeinsam nutzen, verwendet wird. Der Hauptspeicher 310 beinhaltet üblicherweise einen Speicherkontroller 311, der eine physikalische Adresse von dem Prozessor 306 empfängt und den Zugriff auf Daten von einem Speicherelement 312, wie z. b. dynamischem Arbeitsspeicher ("DRAM"), Videoarbeitsspeicher ("VRAM") und dergleichen steuert.
- Das Computersystem 300 unterzieht sich Adressenübersetzungen vom Virtuellen ins Physikalische wie beschrieben. Zunächst erzeugt der Prozessor 306 eine angeforderte virtuelle Adresse und überträgt diese in die MMU 307. Die MMU 307, insbesondere der Adreßübersetzungssteuerschaltkreis, führt einen Nachschlagvorgang nach der physikalischen Adresse durch, in der sie die angeforderte virtuelle Adresse und Kontextinformation (z. B. globales Bit, Kontextauswahlbit und Kontext ID wie unten beschrieben) benutzt, um zu ermitteln, ob Übersetzungsinformation für die abgefragte virtuelle Adresse im TLB 308 abgelegt ist. Wenn die physikalische Adresse für die abgefragte virtuelle Adresse in dem TLB 308 enthalten ist, gibt es ein Übersetzungs-"Treffer"-Signal aus und leitet die physikalische Adresse in den Prozessor 306 weiter. Andernfalls, wenn die physikalische Adresse nicht in dem TLB 308 enthalten ist, erzeugt die MMU 307 einen nichtprogrammierten Sprung durch Übertragen eines Übersetzungs-"Fehler"-Signals an den Prozessor 306. Danach führt die Betriebssystemsoftware einen Nachschlagvorgang in der Kernseitentabelle durch, die alle Adreßübersetzungen vom Virtuellen ins Physikalische enthält, um die physikalisch Adresse zu erhalten, und stellt dem Prozessor 306 diese Adresse zur Verfügung.
- In Fig. 4 sind die Datenstrukturen der Betriebssystemsoftware und des TLB gezeigt, die gemeinsam die Adreßübersetzungen durchführen. Diese Datenstrukturen sind zusätzlich in einer gleichzeitig eingereichten US-Patentanmeldung mit dem Titel "Separate Code and Data Contexts: An Architectural Approach to Virtual Text Sharing" von dem Anmelder der vorliegenden Erfindung (Anwaltsakte Nr. 082225.P1176), die hierdurch mittels Bezugnahme aufgenommen wird, gezeigt. Die Datenstrukturen beinhalten eine Kernseitentabelle 410, einen Übersetzungssoftwarepufferspeicher 420 und die TLB 430. Die Kernseitentabelle 410 verwaltet alle physikalischen Seiten, die mit dem physikalischen Speicher verknüpft sind. Der Übersetzungssoftwarepufferspeicher 420 arbeitet im Grunde als ein Cache-Speicher der zuletzt verwendeten Adreßübersetzungen. Dies erhöht die Geschwindigkeit des Übersetzungsschemas und wird vorzugsweise implementiert, obwohl es offensichtlich optional ist. Der TLB 430 ist ein Speicher (z. B. eine Übersetzungstabelle), die durch den Adreßübersetzungssteuerschaltkreis gesteuert wird, um in einer ähnlichen Weise wie der Cache-Speicher zu arbeiten. Der TLB 430 empfängt ein Kennzeichen bzw. Tag eines ausgewählten Übersetzungstabelleneintrages ("TTE") und benutzt Bitabschnitte des TTE-Tags, um festzustellen, ob die physikalische Adresse, die mit der angeforderten virtuellen Adresse verknüpft ist, in dem TLB 430 abgelegt ist.
- Immer noch unter Bezugnahme Fig. 4 ist es offensichtlich, daß Ressourcen dupliziert werden, wenn unterschiedliche Prozesse die gleiche Anwendung laufen lassen und auf die gleichen physikalischen Seiten über die gleichen virtuellen Adressen Bezug nehmen. Im Grunde genommen wird durch Feststellen der Anzahl von Prozessen, die ein gemeinsames Segment verwenden und durch Faktorisieren der gemeinsamen Segmente in einem Proxyadreßraum, der durch eine Gruppenkontextzahl "k" identifiziert wird, ein Gruppenprozeß gebildet. Dieser Gruppenprozeß benutzt nur einen TTE, der mit mehreren Prozessen verknüpft ist, so lange wie dieses Adreßübersetzungsschema die folgenden Bedingungen erfüllt, um die genauen Adressierungen zu garantieren. Eine Bedingung ist, daß alle gemeinsam genutzten Segmente für alle Teilnehmer auf derselben virtuellen Adresse abgebildet sein müssen. Dies wird garantieren, daß Adreßübersetzungen vom Virtuellen ins Physikalische für gemeinsam genutzte Segmente für alle Prozesse in der Gruppe identisch sind. Die zweite Bedingung ist, daß der durch die Gruppenkontextnummer adressierte Adreßraum von jedem privaten Adreßraum, der mit der Hauptkontextnummer verknüpft ist, unterschiedlich ist. Mit anderen Worten, eine virtuelle Adresse, die auf ein gemeinsam genutztes Segment in einem Prozeß zugreift, muß auf dasselbe gemeinsam genutzte Segment in allen Prozessen für diese Gruppe zugreifen. Dies hindert einen Prozeß innerhalb der Gruppe, ein privates Segment bei einer virtuellen Adresse abzubilden, wenn der Rest der Gruppe für ein unterschiedlich gemeinsam genutztes Segment ist.
- Der Adreßübersetzungssteuerschaltkreis 500, der mit jeden Eintrag des TLB verknüpft ist, beinhaltet in Fig. 5 einen Kontextübereinstimmungsschaltkreis 520, zumindest eine Vergleichseinheit 540 und eine Mehrzahl von logischen Gattern 560 und 570. Der Adreßübersetzungssteuerschaltkreis 500 empfängt Kontextinformationen sowohl von dem Hauptkontextspeicherelement 309a als auch dem Gruppenkontextspeicherelement 309b, die innerhalb der Computerarchitektur implementiert sind. Diese Kontextspeicherelemente 309a und 309b enthalten eine Kontextnummer, die "m" Bits in der Größe ist ("m" ist von willkürlicher Größe). Zusätzlich empfängt der Adreßübersetzungssteuerschaltkreis 500 das TTE-Tag 580, das mit einem bestimmten Prozeß oder einer Gruppe von Prozessen verknüpft ist. Wie gezeigt ist, wird das TTE- Tag 580 modifiziert, um eine Anzahl von Bitfeldern einschließlich, jedoch nicht hierauf begrenzt, eines globalen Bitfeldes 581, eines Kontextauswahlbitfeldes 582, eines Kontextnummerbitfeldes 583 und eines Bitfeldes, das die vorher abgelegte virtuelle Adresse 584 enthält. Vorzugsweise ist das TTE-Tag 230 64 Bit groß ("TAG[63 : 0]"), in dem die vorher abgelegte virtuelle Adresse 42-Bits groß ist ("TAG[41 : 0]"), das Kontextnummernfeld ist 13 Bits groß ("TAG[60-48]"), und die Kontextauswahl- und Globalbitfelder ("TAG[62]" und "TAG[63]") sind Einzelbit groß. Es ist offensichtlich, daß die Felder des TTE-Tags 230 abhängig von einer gewählten Computerarchitektur andere Bitgrößen haben können.
- Der Kontextübereinstimmungsschaltkreis 520 ist derart konfiguriert, daß er eine Kontextidentifikationsnummer, die in dem Kontextnummernbitfeld 582 ("r" Bits in der Größe) in dem TTE-Tag 580 enthalten ist, entweder mit der Kontextnummer, die in dem Hauptkontextspeicherelement 309a enthalten ist, oder dem Gruppenkontextspeicherelement 309b vergleichen kann. Das Kontextauswahlbit 582 wählt dynamisch aus, welche Kontextnummer mit der Kontextidentifikationsnummer von dem TTE-Tag 580 verglichen wird, nämlich ob die Kontextnummer von dem Hauptkontextspeicherelement 309a (wenn das Kontextauswahlbit 582 inaktiv ist) oder von dem Gruppenkontextspeicherelement 309b (wenn das Kontextauswahlbit 582 aktiv ist) erhalten wird. Wenn die vorher abgelegte virtuelle Adresse 584 mit "shared" (gemeinsam genutzten) Seiten verknüpft ist, lädt die Betriebssystemsoftware ein aktives Kontextauswahlbit 582. Andernfalls, wenn die vorher abgelegte virtuelle Adresse 584 mit einer "non-shared" (nicht gemeinsam genutzten) Seite verknüpft ist, ist das Kontextauswahlbit 582 inaktiv.
- Wenn ein Kontextübereinstimmungsschaltkreis 520 bestimmt, daß die Kontextnummern übereinstimmen, gibt er ein aktives Kontextübereinstimmungssignal in einen ersten Eingang eines ersten logischen Gatters 560 ein. Das erste logische Gatter 560 arbeitet als ein ODER- Gatter. Andernfalls wird ein inaktives Kontextübereinstimmungssignal zu dem ersten Eingang des ersten logischen Gatters 560 übertragen. Zusätzlich wird das globale Bit 581 in einen zweiten Eingang des ersten logischen Gatters 560 eingegeben, da bestimmte Übersetzungen kontextunabhängig sein können. Beispielsweise liefert das globale Bit 581 dem Betriebssystem einen Mechanismus, um einen einzelnen TTE für sich selbst zu verwenden, da alle Prozesse den Betriebssystemkern an der gleichen virtuellen Adresse in ihrem Adreßraum abbilden. Diese Architektur wird jedoch weniger häufig verwendet, da den Betriebssystemen nun eine getrennte Schutzdomäne zugewiesen ist, wodurch dem Betriebssystem erlaubt wird, eine größere virtuelle Adresse zu haben. Da das globale Bit 581 nicht in vielen gegenwärtigen Architekturen verwendet werden kann, ist seine Verwendung für die Adressierungsarchitektur optional.
- Wenn einer der Eingänge des ersten logischen Gatters 560 ein aktives Signal empfängt, überträgt das erste logische Gatter 560 ein aktives Signal zu einem ersten Eingang eines zweiten logischen Gatters 570. Selbstverständlich wird, wenn das globale Bit 581 nicht von der Adressierungsarchitektur verwendet wird, das logische Gatter 560 entfernt, und der Ausgang des Kontextübereinstimmungsschaltkreises 520 kann in dieser Ausführungsform zu dem zweiten logischen Gatter 570 geleitet werden. Das zweite logische Gatter 570 arbeitet vorzugsweise als ein UND-Gatter. Ein zweiter Eingang des zweiten logischen Gatters 570 ist mit einem Ausgang einer Vergleichseinheit 540 verbunden, die die vorher abgelegte virtuelle Adresse, die in dem TTE-Tag enthalten ist, mit der angeforderten virtuellen Adresse, die von dem Prozessor zur Verfügung gestellt wird, vergleicht. Wenn diese virtuellen Adressen identisch sind, was anzeigt, daß das TTE die korrekte Übersetzungsinformation enthält, gibt die Vergleichseinheit 540 ein aktives Vergleichssignal an den zweiten Eingang des zweiten logischen Gatters 570 aus. Dies veranlaßt das zweite logische Gatter 570, ein Übersetzungs-"Treffer"-Signal an den Prozessor auszugeben, um anzuzeigen, daß die Adreßübersetzung von dem TLB unterstützt werden kann. Andernfalls, wenn das erste logische Gatter 560 (oder der Kontextübereinstimmungsschaltkreis bei Fehlen des globalen Bits) ein inaktives Signal erzeugt oder die Vergleichseinheit 540 ein inaktives Signal erzeugt, gibt der Adreßübersetzungsschaltkreis 500 ein Übersetzungs-"Fehler"-Signal aus, das anzeigt, daß die Übersetzung nicht im TLB enthalten ist, so daß der Zugriff auf die Kernseitentabelle notwendig ist.
- In den Fig. 6A und 6B sind anschauliche Ausführungsformen des Kontextübereinstimmungsschaltkreises 520 gezeigt. In Fig. 6A ist der Kontextübereinstimmungsschaltkreis 520 als eine Multiplexeinheit 521 und eine Vergleichseinheit 522 gezeigt. Die Multiplexeinheit 521 weist "r"-Dualeingangsmultiplexer auf, die als Eingänge die Kontextnummern des Hauptkontextspeicherelemente 309a und des Gruppenkontextspeicherelementes 309b und ein ausgewähltes Signal basierend auf dem Bitwert des Kontextauswahlbits des TTE-Tags. Es können jedoch andere Implementationen abhängig von der Bitgröße des Kontextauswahlfeldes und der Anordnung und Charakteristiken der Multiplexer benutzt werden. Die Vergleichseinheit 522 ist als ein Dualeingangvergleicher gezeigt, obgleich andere Komponenten erhältlich sind.
- In dieser Ausführungsform wird, welche Kontextnummer auch immer gemäß des Kontextauswahlbits ausgewählt wird, diese in einen ersten Eingang der Vergleichseinheit 522 eingegeben. Die Kontextidentifikationsnummer, die in dem TTE-Tag enthalten ist, wird in einen zweiten Eingang der Vergleichseinheit 522 eingegeben, und diese Werte werden verglichen. Wenn sie identisch sind, gibt die Vergleichseinheit 522 das aktive Vergleichssignal in den ersten Eingang des ersten logischen Gatters 560 ein. Andernfalls gibt sie das inaktive Vergleichssignal zu dem ersten logischen Gatter 560 aus.
- In Fig. 6B ist eine andere Ausführungsform des Kontextübereinstimmungsschaltkreises gezeigt. Darin werden die Kontextnummern von sowohl dem Gruppenkontextspeicherelement als auch dem Hauptkontextspeicherelement in die ersten Eingänge der Vergleichseinheiten 530 bzw. 531 eingegeben. Diese Kontextnummern werden parallel mit der Kontextidentifikationsnummer, die von dem TTE-Tag zur Verfügung gestellt wird, verglichen. Im Ergebnis erzeugen die Vergleichseinheiten 530 und 531 jeweils Vergleichssignale, die in einen ersten Eingang eines ersten und zweiten logischen Übereinstimmungsgatters 532 und 533 eingegeben, die jeweils als ein UND-Gatter funktionieren. Das erste logische Übereinstimmungsgatter 532 empfängt als einen zweiten Eingang den Kontextauswahlbitwert von dem TTE-Tag. Das zweite logische Übereinstimmungsgatter 533 empfängt als einen zweiten Eingang das Komplement des Kontextauswahlbits, da der Bitwert des Auswahlbits durch ein Invertiergatter 534 invertiert wird. Somit gibt nur eines der ersten und zweiten logischen Übereinstimmungsgatter 532 und 533 ein aktives Signal an das erste logische Gatter 560 von Fig. 5 aus. Deshalb erfordert das erste logische Gatter 560 für diese Ausführungsform drei Eingänge, wobei es als ein ODER-Gatter mit drei Eingängen funktioniert, wenn das globale Bit verwendet wird, oder als ein Zweieingangs- ODER-Gatter funktioniert, falls es nicht verwendet.
- Der Vorteil, der mit der zweiten Ausführungsform des Kontextübereinstimmungsschaltkreises verbunden ist, ist mit der Reduzierung der Menge der Logiken innerhalb des Adreßübersetzungssteuerschaltkreises verbunden. In diesem Fall werden ein n-Bit-Vergleicher und ein 2 Bit-Multiplexer anstelle eines n-Bit-Multiplexers benötigt, der schwieriger zu implementieren ist. Zusätzlich können die Vergleiche parallel durchgeführt werden, was die Gesamtgatterverzögerung des Systems reduziert.
- Somit wurde ein verbessertes Adressierungsschema beschrieben. Dem Fachmann ergeben sich alternative Ausführungsformen der Erfindung. Die bevorzugten Ausführungsformen wurden aus anschaulichen Gründen verwendet und dürfen nicht als Begrenzung des Schutzbereiches der Erfindung angesehen werden.
Claims (11)
1. Ein Adreßübersetzungssystem, das aufweist:
einen Übersetzungsvorgriffspufferspeicher bzw. translation look-asidebuffer
(TLB) (308, 430), der eine Übersetzungstabelle beinhaltet mit zumindest einem
Übersetzungstabelleneintrag, der eine vorher abgelegte virtuelle Adresse (584) und eine
Kontextidentifikationsnummer (583) und ein Kontextauswahlbit (582) beinhaltet, und
einen Steuerkreis (500) für die Adreßübersetzung, der beinhaltet:
eine Mehrzahl von Kontextspeicherelementen, die ein erstes
Kontextspeicherelement (309a), um eine erste Kontextnummer zu umfassen, und ein zweites
Kontextspeicherelement (309b), um eine zweite Kontextnummer zu umfassen, beinhalten, und
einen Schaltkreis, der mit der Mehrzahl von Kontextspeicherelementen
verbunden ist, wobei der Schaltkreis dafür ausgelegt ist, eine, die erste oder die zweite
Kontextnummer ausschließlich in Antwort auf das Kontextauswahlbit auszuwählen und der
so konfiguriert ist, daß er ein Treffersignal für die Übersetzung ausgibt, um anzuzeigen,
daß der Übersetzungsvorgriffspufferspeicher gegenwärtig eine physikalische Adresse
ablegt entsprechend einer angeforderten virtuellen Adresse, wenn (i) die
Kontextidentifikationsnummer mit der ausgewählten ersten oder zweiten Kontextnummer
übereinstimmt und (ii) die vorher abgelegte virtuelle Adresse mit der angeforderten virtuellen
Adresse übereinstimmt.
2. Adreßübersetzungssystem gemäß Anspruch 1, in dem der Schaltkreis des
Steuerkreises (500) für die Adreßübersetzung weiterhin aufweist:
einen Schaltkreis (520) für die Kontextübereinstimmung, der derart konfiguriert
ist, daß er die erste und zweite Kontextnummer (309a, 309b) und die
Kontextidentifikationsnummer empfängt und zumindest ein Signal für die Kontextübereinstimmung
ausgibt, das anzeigt, ob die Kontextidentifikationsnummer (533) mit der ausgewählten
ersten oder zweiten Kontextnummer übereinstimmt.
3. Adreßübersetzungssystem gemäß Anspruch 1 oder Anspruch 2, in dem der Schaltkreis
des Steuerkreises für die Adreßübersetzung aufweist:
eine Vergleichseinheit (540), die derart konfiguriert ist, daß sie die abgefragte
virtuelle Adresse mit der vorher abgelegten virtuellen Adresse vergleicht und ein
Vergleichssignal ausgibt, das anzeigt, ob die vorher abgelegte virtuelle Adresse mit der
abgefragten virtuellen Adresse übereinstimmt.
4. Adreßübersetzungssystem nach Anspruch 2 oder Anspruch 3, soweit von Anspruch 2
abhängig, in dem der Schaltkreis des Steuerkreises für die Adreßübersetzung aufweist:
eine logische Einheit (570), die mit dem Schaltkreis für die
Kontextübereinstimmung und der Vergleichseinheit verbunden ist, wobei die logische Einheit derart
konfiguriert ist, daß sie das Treffer-Signal für die Übersetzung ausgibt, wenn das Signal für die
Kontextübereinstimmung anzeigt, daß die Kontextidentifikationsnummer mit der
ausgewählten Kontextnummer übereinstimmt und das Vergleichssignal anzeigt, daß die vorher
abgelegte virtuelle Adresse mit der angeforderten virtuellen Adresse übereinstimmt.
5. Adreßübersetzungssystem nach Anspruch 2 oder den Ansprüchen 3 oder 4, soweit von
Anspruch 2 abhängig, in dem der Schaltkreis für die Kontextübereinstimmung des
Steuerkreises (500) für die Adreßübersetzung aufweist:
eine Multiplexingeinheit (521), die derart konfiguriert ist, daß sie die erste
Kontextnummer, die zweite Kontextnummer und ein Kontextauswahlbit von dem zumindest
einen Übersetzungstabelleneintrag als Eingangswerte empfängt, und
eine Vergleichseinheit (522), die derart konfiguriert ist, daß sie einen
Ausgangswert der Multiplexingeinheit empfängt und mit der Kontextidentifikationsnummer von
dem zumindest einen Übersetzungstabelleneintrag vergleicht.
6. Steuerschaltkreis für die Adreßübersetzung nach Anspruch 2 oder den Ansprüchen 3
oder 4, soweit von Anspruch 2 abhängig, wobei der Schaltkreis für die
Kontextübereinstimmung des Steuerkreises (500) für die Adreßübersetzung beinhaltet:
eine erste Vergleichseinheit (530), die derart konfiguriert ist, daß sie (i) die erste
Kontextnummer empfängt und mit der Kontextidentifikationsnummer vergleicht und (ii)
ein erstes Vergleichssignal ausgibt, das anzeigt, ob die erste Kontextnummer mit der
Kontextidentifikationsnummer übereinstimmt,
ein erstes logisches Übereinstimmungsgatter (532), das derart konfiguriert ist,
daß es (i) das erste Vergleichssignal und ein Kontextauswahlbit als Eingangswerte
empfängt und (ii) ein erstes Kontextübereinstimmungssignal an die logische Einheit ausgibt
und
eine zweite Vergleichseinheit (531), die derart konfiguriert ist, daß sie (i) die
zweite Kontextnummer empfängt und mit der Kontextidentifikationsnummer vergleicht und (ii)
ein zweites Vergleichssignal ausgibt, das anzeigt, ob die zweite Kontextnummer mit der
Kontextidentifikationsnummer übereinstimmt,
einen Invertierer (534), der derart konfiguriert ist, daß er das Kontextauswahlbit
empfängt und invertiert, und
ein zweites logisches Übereinstimmungsgatter (533), das derart konfiguriert ist,
daß es (i) das zweite Vergleichssignal und das Komplement des Kontextauswahlbits als
Eingangswerte empfängt und (ii) ein zweites Kontextübereinstimmungssignal an die
logische Einheit ausgibt.
7. Adreßübersetzungssystem nach Anspruch 4 oder den Ansprüchen 5 oder 6, soweit von
Anspruch 4 abhängig, in dem die logische Einheit des Steuerkreises für die
Adreßübersetzung beinhaltet:
ein erstes logisches Gatter (560), das derart konfiguriert ist, daß es (i) das erste
und zweite Kontextübereinstimmungssignal als Eingangswerte empfängt und (ii) ein
erstes logisches Ausgangssignal erzeugt, wenn eines, das erste oder das zweite
Kontextübereinstimmungssignal aktiv ist und
ein zweites logisches Gatter (570), das derart konfiguriert ist, daß es (i) das erste
logische Ausgangssignal und das Vergleichssignal als Eingangswerte empfängt und (ii)
das Übersetzungs-Treffer-Signal ausgibt, wenn das erste logische Ausgangssignal
anzeigt, daß die Kontextidentifikationsnummer mit der ersten oder der zweiten
Kontextnummer übereinstimmt und das Vergleichssignal anzeigt, daß die vorher abgelegte
virtuelle Adresse mit der abgefragten virtuellen Adresse übereinstimmt.
8. Adreßübersetzungssystem nach Anspruch 4 oder nach den Ansprüchen 5 oder 6,
soweit von Anspruch 4 abhängig, in dem die logische Einheit des Steuerkreises (500) für
die Adreßübersetzung beinhaltet:
ein erstes logisches Gatter (560), das derart konfiguriert ist, daß es (i) das erste
und zweite Kontextübereinstimmungssignal und ein globales Bit (581) von dem
zumindest einen Übersetzungstabelleneintrag als Eingangswerte empfängt und (ii) ein erstes
logisches Ausgangssignal erzeugt, das anzeigt, daß eine der Mehrzahl von
Bedingungen erfüllt ist, wobei die Mehrzahl von Bedingungen beinhaltet, daß die
Kontextidentifikationsnummer äquivalent zu der ausgewählten Kontextnummer ist und eine
Übersetzung, die mit der angefragten virtuellen Adresse verknüpft ist, kontextunabhängig ist,
und
ein zweites logisches Gatter (570), das derart konfiguriert ist, daß es (i) das erste
logische Ausgangssignal und das Vergleichssignal als Eingangswerte empfängt und (ii)
das Übersetzungs-Treffer-Signal ausgibt, wenn das erste logische Ausgangssignal
anzeigt, daß eine der Mehrzahl von Bedingungen erfüllt ist und das Vergleichssignal
anzeigt, daß die vorher abgelegte virtuelle Adresse mit der angefragten virtuellen Adresse
übereinstimmt.
9. Verfahren zur Übersetzung einer virtuellen Adresse von einer elektronischen Vorrichtung
in eine physikalische Adresse durch die Verwendung eines
Übersetzungsvorgriffspufferspeichers (308, 430), wobei das Verfahren aufweist:
Einladen einer ersten Kontextnummer in ein primäres Kontextspeicherelement
(309a),
Einladen einer zweiten Kontextnummer in ein Kontextgruppenspeicherelement
(309b),
Beziehen eines Kennzeichenabschnittes eines Übersetzungstabelleneintrags
einer Übersetzungstabelle des Übersetzungsvorgriffspufferspeichers, der mit der
virtuellen Adresse verknüpft ist, wobei der Kennzeichenabschnitt ein Kontextauswahlbit (582),
eine Kontextidentifikationsnummer (583) und eine vorher abgelegte virtuelle Adresse
(584) beinhaltet,
Auswählen der ersten oder der zweiten Kontextnummer ausschließlich in Antwort
auf das Kontextauswahlbit,
Vergleichen der ausgewählten ersten oder der zweiten Kontextnummer, mit der
Kontextidentifikationsnummer,
Vergleichen der vorher abgelegten virtuellen Adresse mit der virtuellen Adresse
und
Übertragen eines Übersetzungs-Treffer-Signales, vorausgesetzt, daß (i) die
ausgewählte erste oder zweite Kontextnummer, mit der Kontextidentifikationsnummer
übereinstimmt und (ii) die vorher abgelegte virtuelle Adresse mit der virtuellen Adresse
übereinstimmt.
10. Verfahren nach Anspruch 9, das weiterhin aufweist:
Übertragen eines Übersetzungs-Fehler-Signales, vorausgesetzt, daß (i) die
ausgewählte Kontextnummer, die erste oder die zweite Kontextnummer, nicht mit der
abgelegten Kontextnummer übereinstimmt oder (ii) die abgelegte virtuelle Adresse nicht mit
der virtuellen Adresse übereinstimmt.
11. Verfahren nach Anspruch 9 oder Anspruch 10, in dem die Auswahl von der ersten oder
der zweiten Kontextnummer ausschließlich in Antwort auf das einzelne
Kontextauswahlbit beinhaltet:
das Bestimmen eines Zustandes des Kontextauswahlbits (582) und
das Auswählen der zweiten Kontextnummer, wenn das Kontextauswahlbit aktiv
ist und alternativ dazu das Auswählen der ersten Kontextnummer, wenn das
Kontextauswahlbit inaktiv ist.
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US08/620,464 US5754818A (en) | 1996-03-22 | 1996-03-22 | Architecture and method for sharing TLB entries through process IDS |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| DE69707181D1 DE69707181D1 (de) | 2001-11-15 |
| DE69707181T2 true DE69707181T2 (de) | 2002-06-06 |
Family
ID=24486057
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| DE69707181T Expired - Fee Related DE69707181T2 (de) | 1996-03-22 | 1997-03-20 | Architektur und Verfahren zur gemeinsamen Benutzung von TLB-Einträgen |
Country Status (4)
| Country | Link |
|---|---|
| US (1) | US5754818A (de) |
| EP (1) | EP0797149B1 (de) |
| JP (1) | JP3920395B2 (de) |
| DE (1) | DE69707181T2 (de) |
Families Citing this family (63)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6427162B1 (en) * | 1996-05-02 | 2002-07-30 | Sun Microsystems, Inc. | Separate code and data contexts: an architectural approach to virtual text sharing |
| US6247040B1 (en) * | 1996-09-30 | 2001-06-12 | Lsi Logic Corporation | Method and structure for automated switching between multiple contexts in a storage subsystem target device |
| US6081849A (en) * | 1996-10-01 | 2000-06-27 | Lsi Logic Corporation | Method and structure for switching multiple contexts in storage subsystem target device |
| JPH11122301A (ja) * | 1997-10-20 | 1999-04-30 | Fujitsu Ltd | アドレス変換接続装置 |
| US6122719A (en) * | 1997-10-31 | 2000-09-19 | Silicon Spice | Method and apparatus for retiming in a network of multiple context processing elements |
| US6108760A (en) * | 1997-10-31 | 2000-08-22 | Silicon Spice | Method and apparatus for position independent reconfiguration in a network of multiple context processing elements |
| US5915123A (en) | 1997-10-31 | 1999-06-22 | Silicon Spice | Method and apparatus for controlling configuration memory contexts of processing elements in a network of multiple context processing elements |
| US6633922B1 (en) * | 1997-12-15 | 2003-10-14 | International Business Machines Corporation | Object access mechanism that dynamically switches between multiple distributed access models |
| US6182210B1 (en) | 1997-12-16 | 2001-01-30 | Intel Corporation | Processor having multiple program counters and trace buffers outside an execution pipeline |
| US6463522B1 (en) | 1997-12-16 | 2002-10-08 | Intel Corporation | Memory system for ordering load and store instructions in a processor that performs multithread execution |
| US6240509B1 (en) * | 1997-12-16 | 2001-05-29 | Intel Corporation | Out-of-pipeline trace buffer for holding instructions that may be re-executed following misspeculation |
| US6772324B2 (en) | 1997-12-17 | 2004-08-03 | Intel Corporation | Processor having multiple program counters and trace buffers outside an execution pipeline |
| US6226735B1 (en) | 1998-05-08 | 2001-05-01 | Broadcom | Method and apparatus for configuring arbitrary sized data paths comprising multiple context processing elements |
| US6564311B2 (en) | 1999-01-19 | 2003-05-13 | Matsushita Electric Industrial Co., Ltd. | Apparatus for translation between virtual and physical addresses using a virtual page number, a physical page number, a process identifier and a global bit |
| US6745317B1 (en) | 1999-07-30 | 2004-06-01 | Broadcom Corporation | Three level direct communication connections between neighboring multiple context processing elements |
| EP1182571B1 (de) * | 2000-08-21 | 2011-01-26 | Texas Instruments Incorporated | Auf gemeinsamem Bit basierte TLB-Operationen |
| US6560690B2 (en) * | 2000-12-29 | 2003-05-06 | Intel Corporation | System and method for employing a global bit for page sharing in a linear-addressed cache |
| US7073044B2 (en) * | 2001-03-30 | 2006-07-04 | Intel Corporation | Method and apparatus for sharing TLB entries |
| US6728858B2 (en) * | 2001-03-30 | 2004-04-27 | Intel Corporation | Method and apparatus including heuristic for sharing TLB entries |
| US7085889B2 (en) * | 2002-03-22 | 2006-08-01 | Intel Corporation | Use of a context identifier in a cache memory |
| US7003630B1 (en) | 2002-06-27 | 2006-02-21 | Mips Technologies, Inc. | Mechanism for proxy management of multiprocessor storage hierarchies |
| US7017025B1 (en) * | 2002-06-27 | 2006-03-21 | Mips Technologies, Inc. | Mechanism for proxy management of multiprocessor virtual memory |
| US7089397B1 (en) | 2003-07-03 | 2006-08-08 | Transmeta Corporation | Method and system for caching attribute data for matching attributes with physical addresses |
| US7093100B2 (en) * | 2003-11-14 | 2006-08-15 | International Business Machines Corporation | Translation look aside buffer (TLB) with increased translational capacity for multi-threaded computer processes |
| US7206916B2 (en) * | 2004-03-08 | 2007-04-17 | Sun Microsystems, Inc. | Partial address compares stored in translation lookaside buffer |
| JP4064380B2 (ja) * | 2004-07-29 | 2008-03-19 | 富士通株式会社 | 演算処理装置およびその制御方法 |
| WO2006027643A1 (en) * | 2004-09-07 | 2006-03-16 | Freescale Semiconductors, Inc | A virtual address cache and method for sharing data stored in a virtual address cache |
| US8522253B1 (en) * | 2005-03-31 | 2013-08-27 | Guillermo Rozas | Hardware support for virtual machine and operating system context switching in translation lookaside buffers and virtually tagged caches |
| EP1736887A3 (de) * | 2005-05-31 | 2009-04-22 | Stmicroelectronics Sa | Speicherseitenverzeichnis |
| CN101449256B (zh) | 2006-04-12 | 2013-12-25 | 索夫特机械公司 | 对载明并行和依赖运算的指令矩阵进行处理的装置和方法 |
| CN107368285B (zh) | 2006-11-14 | 2020-10-09 | 英特尔公司 | 多线程架构 |
| US8799620B2 (en) | 2007-06-01 | 2014-08-05 | Intel Corporation | Linear to physical address translation with support for page attributes |
| WO2008155841A1 (ja) * | 2007-06-20 | 2008-12-24 | Fujitsu Limited | 演算処理装置および演算処理方法 |
| EP3156896B1 (de) | 2010-09-17 | 2020-04-08 | Soft Machines, Inc. | Mehrfach verzweigte einzelzyklusvorhersage mit einem latenten cache für frühe und entfernte verzweigungsvorhersage |
| CN108376097B (zh) | 2011-03-25 | 2022-04-15 | 英特尔公司 | 用于通过使用由可分割引擎实例化的虚拟核来支持代码块执行的寄存器文件段 |
| US9274793B2 (en) | 2011-03-25 | 2016-03-01 | Soft Machines, Inc. | Memory fragments for supporting code block execution by using virtual cores instantiated by partitionable engines |
| WO2012135031A2 (en) | 2011-03-25 | 2012-10-04 | Soft Machines, Inc. | Executing instruction sequence code blocks by using virtual cores instantiated by partitionable engines |
| EP2710480B1 (de) | 2011-05-20 | 2018-06-20 | Intel Corporation | Verbindungsstruktur zur unterstützung der ausführung von instruktionssequenzen durch mehrere maschinen |
| TWI603198B (zh) | 2011-05-20 | 2017-10-21 | 英特爾股份有限公司 | 以複數個引擎作資源與互連結構的分散式分配以支援指令序列的執行 |
| CN108427574B (zh) | 2011-11-22 | 2022-06-07 | 英特尔公司 | 微处理器加速的代码优化器 |
| WO2013077875A1 (en) | 2011-11-22 | 2013-05-30 | Soft Machines, Inc. | An accelerated code optimizer for a multiengine microprocessor |
| US8930674B2 (en) | 2012-03-07 | 2015-01-06 | Soft Machines, Inc. | Systems and methods for accessing a unified translation lookaside buffer |
| US9916253B2 (en) | 2012-07-30 | 2018-03-13 | Intel Corporation | Method and apparatus for supporting a plurality of load accesses of a cache in a single cycle to maintain throughput |
| US9229873B2 (en) | 2012-07-30 | 2016-01-05 | Soft Machines, Inc. | Systems and methods for supporting a plurality of load and store accesses of a cache |
| US9710399B2 (en) | 2012-07-30 | 2017-07-18 | Intel Corporation | Systems and methods for flushing a cache with modified data |
| US9430410B2 (en) | 2012-07-30 | 2016-08-30 | Soft Machines, Inc. | Systems and methods for supporting a plurality of load accesses of a cache in a single cycle |
| US9740612B2 (en) | 2012-07-30 | 2017-08-22 | Intel Corporation | Systems and methods for maintaining the coherency of a store coalescing cache and a load cache |
| US9678882B2 (en) | 2012-10-11 | 2017-06-13 | Intel Corporation | Systems and methods for non-blocking implementation of cache flush instructions |
| US10275255B2 (en) | 2013-03-15 | 2019-04-30 | Intel Corporation | Method for dependency broadcasting through a source organized source view data structure |
| WO2014150806A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for populating register view data structure by using register template snapshots |
| US9811342B2 (en) | 2013-03-15 | 2017-11-07 | Intel Corporation | Method for performing dual dispatch of blocks and half blocks |
| US10140138B2 (en) | 2013-03-15 | 2018-11-27 | Intel Corporation | Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation |
| EP2972845B1 (de) | 2013-03-15 | 2021-07-07 | Intel Corporation | Verfahren zur ausführung von in blöcken gruppierten befehlen aus mehreren threads |
| US9569216B2 (en) | 2013-03-15 | 2017-02-14 | Soft Machines, Inc. | Method for populating a source view data structure by using register template snapshots |
| US9886279B2 (en) | 2013-03-15 | 2018-02-06 | Intel Corporation | Method for populating and instruction view data structure by using register template snapshots |
| WO2014150991A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for implementing a reduced size register view data structure in a microprocessor |
| EP2972836B1 (de) | 2013-03-15 | 2022-11-09 | Intel Corporation | Verfahren zur emulierung einer zentralisierten gast-flag-architektur mithilfe einer nativen verteilten flag-architektur |
| US9891924B2 (en) | 2013-03-15 | 2018-02-13 | Intel Corporation | Method for implementing a reduced size register view data structure in a microprocessor |
| US9904625B2 (en) | 2013-03-15 | 2018-02-27 | Intel Corporation | Methods, systems and apparatus for predicting the way of a set associative cache |
| WO2014150971A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for dependency broadcasting through a block organized source view data structure |
| US9317443B2 (en) | 2014-04-17 | 2016-04-19 | International Business Machines Corporation | Managing translations across multiple contexts using a TLB with entries directed to multiple privilege levels and to multiple types of address spaces |
| US9323692B2 (en) | 2014-04-17 | 2016-04-26 | International Business Machines Corporation | Managing translation of a same address across multiple contexts using a same entry in a translation lookaside buffer |
| US10977192B1 (en) * | 2016-04-08 | 2021-04-13 | Amazon Technologies, Inc. | Real-time memory-page state tracking and its applications |
Family Cites Families (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US4136385A (en) * | 1977-03-24 | 1979-01-23 | International Business Machines Corporation | Synonym control means for multiple virtual storage systems |
| US4525778A (en) * | 1982-05-25 | 1985-06-25 | Massachusetts Computer Corporation | Computer memory control |
| US4811209A (en) * | 1986-07-31 | 1989-03-07 | Hewlett-Packard Company | Cache memory with multiple valid bits for each data indication the validity within different contents |
| US5319760A (en) * | 1991-06-28 | 1994-06-07 | Digital Equipment Corporation | Translation buffer for virtual machines with address space match |
| US5319761A (en) * | 1991-08-12 | 1994-06-07 | International Business Machines Corporation | Directory look-aside table for a virtual storage system including means for minimizing synonym entries |
| US5630087A (en) * | 1994-11-02 | 1997-05-13 | Sun Microsystems, Inc. | Apparatus and method for efficient sharing of virtual memory translations |
-
1996
- 1996-03-22 US US08/620,464 patent/US5754818A/en not_active Expired - Lifetime
-
1997
- 1997-03-20 EP EP97301874A patent/EP0797149B1/de not_active Expired - Lifetime
- 1997-03-20 DE DE69707181T patent/DE69707181T2/de not_active Expired - Fee Related
- 1997-03-24 JP JP08721097A patent/JP3920395B2/ja not_active Expired - Lifetime
Also Published As
| Publication number | Publication date |
|---|---|
| EP0797149A3 (de) | 1998-09-02 |
| DE69707181D1 (de) | 2001-11-15 |
| EP0797149A2 (de) | 1997-09-24 |
| US5754818A (en) | 1998-05-19 |
| JP3920395B2 (ja) | 2007-05-30 |
| JPH1083352A (ja) | 1998-03-31 |
| EP0797149B1 (de) | 2001-10-10 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| DE69707181T2 (de) | Architektur und Verfahren zur gemeinsamen Benutzung von TLB-Einträgen | |
| DE112005003863B3 (de) | Verwalten von Prozessorressourcen während Architekturereignissen | |
| DE69721590T2 (de) | Ein bereichsbasiertes seiten-table-walk-bit verwendendes verfahren sowie vorrichtung | |
| DE69734129T2 (de) | Hierarchisches Datenverarbeitungssystem mit symetrischen Multiprozessoren | |
| DE69520718T2 (de) | Datenprozessor mit Adressübersetzungsmechanismus | |
| DE69637294T2 (de) | Mikro-tlb mit parallelem zugriff zum beschleunigen der adressübersetzung | |
| DE3586389T2 (de) | Dynamisch zugeordnete lokale/globale speicheranordnung. | |
| DE69331039T2 (de) | Rechnersystem mit einem Vorausholungscachespeicher | |
| DE102011076894B9 (de) | Persistenter Speicher für einen Hauptspeicher eines Prozessors | |
| DE3687307T2 (de) | Computeranordnungen mit cache-speichern. | |
| DE2226382C3 (de) | Datenverarbeitungsanlage mit mehreren Prozessoren und diesen zugeordneten Pufferspeichern | |
| DE69629140T2 (de) | Cachefähigkeitsattribut für virtuelle Adressen in Cachespeichern mit sowohl virtuellen als auch physikalischem Index | |
| DE69031978T2 (de) | Einrichtung und Verfahren zum Vermindern von Störungen in zweistufigen Cache-Speichern | |
| DE3689209T2 (de) | Direkte Ein-- und Ausgabe in einer virtuellen Speicheranordnung. | |
| DE60015395T2 (de) | Speicher, der zwischen verarbeitenden threads geteilt ist | |
| DE10297433B4 (de) | Speicherverwaltungseinheit, Verfahren zum Bereitstellen einer Speicherzugriffssicherheit auf der Basis einer linearen Adresse und Prozessor | |
| DE69732181T2 (de) | Verfahren und gerät zum zwischenspeichern von systemverwaltungsinformationen mit anderen informationen | |
| DE3805107A1 (de) | Verfahren und vorrichtung zur steuerung virtueller adressraeume eines virtuellen speichers | |
| DE10219623A1 (de) | System und Verfahren zur Speicherentscheidung unter Verwendung von mehreren Warteschlangen | |
| DE4335475A1 (de) | Datenverarbeitungseinrichtung mit Cache-Speicher | |
| DE19526960A1 (de) | Eine Übersetzungs-Querzuordnungs-Puffer-Organisation mit variabler Seitengrößenabbildung und Opfer-Cache-Speicherung | |
| DE3502147C2 (de) | ||
| WO1994027222A1 (de) | Verfahren zum umsetzen einer virtuellen speicheradresse mit einer ersten länge in eine realadresse mit einer zweiten länge | |
| DE10002120A1 (de) | Logikstruktur eines Adressumsetzpuffers | |
| DE69623691T2 (de) | Ein Gerät und Verfahren, das ein für Cache-Kollisionen weniger anfälliges Cache-Indizierungsverfahren vorsieht |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| 8364 | No opposition during term of opposition | ||
| 8339 | Ceased/non-payment of the annual fee |