[go: up one dir, main page]

DE69707181T2 - Architektur und Verfahren zur gemeinsamen Benutzung von TLB-Einträgen - Google Patents

Architektur und Verfahren zur gemeinsamen Benutzung von TLB-Einträgen

Info

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
Application number
DE69707181T
Other languages
English (en)
Other versions
DE69707181D1 (de
Inventor
Ahmed Hassan Mohamed
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of DE69707181D1 publication Critical patent/DE69707181D1/de
Application granted granted Critical
Publication of DE69707181T2 publication Critical patent/DE69707181T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1036Address 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.
DE69707181T 1996-03-22 1997-03-20 Architektur und Verfahren zur gemeinsamen Benutzung von TLB-Einträgen Expired - Fee Related DE69707181T2 (de)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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