DE60036960T2 - Unterscheidung von feinkorntranslation - Google Patents

Unterscheidung von feinkorntranslation Download PDF

Info

Publication number
DE60036960T2
DE60036960T2 DE60036960T DE60036960T DE60036960T2 DE 60036960 T2 DE60036960 T2 DE 60036960T2 DE 60036960 T DE60036960 T DE 60036960T DE 60036960 T DE60036960 T DE 60036960T DE 60036960 T2 DE60036960 T2 DE 60036960T2
Authority
DE
Germany
Prior art keywords
instructions
host
translated
target
destination
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE60036960T
Other languages
English (en)
Other versions
DE60036960D1 (de
Inventor
John Sunnyvale BANNING
H. Peter San Jose ANVIN
Benjamin Santa Clara GRIBSTAD
David Seattle KEPPEL
Alex Mountain View KLAIBER
Paul Sunnyvale SERRIS
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.)
Intellectual Ventures Holding 81 LLC
Original Assignee
Transmeta 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 Transmeta Inc filed Critical Transmeta Inc
Publication of DE60036960D1 publication Critical patent/DE60036960D1/de
Application granted granted Critical
Publication of DE60036960T2 publication Critical patent/DE60036960T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3812Instruction prefetching with instruction modification, e.g. store into instruction stream
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators

Description

  • ALLGEMEINER STAND DER TECHNIK
  • GEBIET DER ERFINDUNG
  • Diese Erfindung betrifft Computersysteme, und, insbesondere, Verfahren und Vorrichtungen zum Erkennen von Versuchen, durch einen Mikroprozessor, welcher dynamisch Instruktionen aus einem Ziel- in einen Hostinstruktionensatz übersetzt, in einen Speicher zu schreiben, welcher Zielinstruktionen speichert, welche bereits übersetzt worden sind.
  • GESCHICHTE DES STANDES DER TECHNIK
  • Vor kurzem wurde ein neuer Mikroprozessor entwickelt, welcher einen einfachen, jedoch sehr schnellen Hostprozessor (bezeichnet als "Morph Host") und Software (bezeichnet als "Code Morphing Software") kombiniert, um Anwendungsprogramme auszuführen, welche für einen Prozessor entworfen sind, welcher einen Instruktionensatz aufweist, welcher anders ist als der Instruktionensatz des Morph-Host-Prozessors. Der Morph-Host-Prozessor führt die Code Morphing Software aus, welche die Anwendungsprogramme dynamisch in Hostprozessorinstruktionen übersetzt, welche in der Lage sind, den Zweck der Originalsoftware zu erfüllen. Sowie die Instruktionen übersetzt sind, werden sie in einem Übersetzungspuffer gespeichert, wo sie ohne weitere Übersetzung ausgeführt werden können. Wenngleich die ursprüngliche Übersetzung eines Programms langsam ist, werden, einmal übersetzt, viele der Schritte, welche normalerweise für Hardware erforderlich sind, um ein Programm auszuführen, eliminiert. Der neue Mikroprozessor hat sich als in der Lage erwiesen, übersetzte "Zielprogramme" ebenso schnell auszuführen wie der "Zielprozessor", für welchen die Programme gestaltet worden sind.
  • Der Morph-Host-Prozessor umfasst eine Anzahl an Hardwareverbesserungen, welche zulassen, dass Sequenzen von Zielinstruktionen, welche über bekannte Zustände des Zielprozessors reichen, in Hostinstruktionen übersetzt, zur weiteren Verwendung in dem Übersetzungspuffer gespeichert und geprüft werden, um zu bestimmen, ob die übersetzten Instruktionen korrekt auszuführen sind. Diese Hardwareverbesserungen lassen das Puffern der Effekte der Ausführung von Übersetzungen zu, bis die Ausführung erfolgreich ist. Abspeicherungen und Zielprozessorzustand werden bei erfolgreicher Ausführung in einem Prozess, bezeichnet als "Commit", aktualisiert. Diese Hardwareverbesserungen ermöglichen die rasche und exakte Behandlung von Ausnahmen, welche während der Ausführung der Sequenzen der Hostinstruktionen auftreten, durch Rückführen der Ausführung zum Anfang einer Sequenz von Instruktionen, an welchem ein bekannter Zustand des Zielprozessors existiert. Rückführen der Operationen an einen Punkt in der Ausführung, an welchem ein Zielzustand bekannt ist, wird als "Rollback" bezeichnet. Der neue Mikroprozessor ist ausführlich beschrieben in der US-Patentschrift 5,832,205 : Memory Controller For A Microprozessor For Detecting A Failure Of Speculation On The Physical Nature Of A Component Being Addressed, Kelly et al, 3. November 1998, übertragen an den Inhaber der vorliegenden Erfindung.
  • Ein Problem, welches mit dem neuen Prozessor auftreten kann, besteht darin, dass es mit einigen Betriebssystemen und Anwendungen für einen Zielprozessor möglich ist, in Zielinstruktionen zu schreiben, welche im Speicher gespeichert sind. Wenn das passiert, sind die Hostinstruktionen, welche Übersetzungen der Zielinstruktionen sind, welche überschrieben worden sind, nicht länger gültig. Um sicherzustellen, dass ungültige Hostübersetzungen nicht verwendet werden, benutzt der neue Prozessor einen Indikator, bezeichnet als ein "T-Bit". Das T-Bit wird mit einer physikalischen Seitenadresse in einem Translation-Lookaside-Puffer (TLB) gespeichert. Ein Lookaside-Puffer speichert Einträge, welche sowohl die virtuellen als auch die physikalischen Speicheradressen aktueller Speicherzugriffe enthalten, was zulässt, dass auf einen Speicher rascher zugegriffen werden kann als durch Seitentabellen. Jeder Eintrag in dem TLB des neuen Prozessors enthält ein T-Bit, welches immer dann gesetzt wird, wenn Instruktionen auf der adressierten Speicherseite in Hostinstruktionen übersetzt worden sind. Wenn ein Schreibvorgang in eine Speicherseite versucht wird, welche durch ein T-Bit geschützt ist, wird eine T-Bit-Ausnahme erzeugt. Eine T-Bit-Ausnahme bewirkt, dass eine Ausnahmebehandlung eine Datenstruktur nachschlägt, welche Bezüge zu Adressen von Hostinstruktionen beinhaltet, welche aus den Zielinstruktionen übersetzt worden sind, auf der Seite, welche durch das T-Bit geschützt ist. Die Ausnahmebehandlung macht diese Übersetzungen ungültig, durch Aufheben des T-Bit-Schutzes für den TLB-Eintrag.
  • Die Anordnung zum Benutzen von T-Bits ist ausführlich in der US-Patentschrift 6,199,152 beschrieben, mit dem Titel: Translated Memory Protection Apparatus For An Advanced Microprocessor, Kelly et al, vom 22. August 1996, und übertragen an den Inhaber der vorliegenden Erfindung.
  • Wenngleich die Anordnung, welche T-Bits in TLB-Einträgen benutzt, in den meisten Situationen effizient funktioniert, bleiben doch einige Probleme im Betrieb. Eines dieser Probleme besteht darin, dass bestimmte Zielprozessoren Betriebssysteme einsetzen, welche nicht unterscheiden zwischen Bereichen, in welchen Instruktionen und Daten gespeichert sind. Zum Beispiel lässt Microsoft Windows zu, dass Segmente, welche für Instruktionen ausgewiesen sind und andere Segmente, welche für Daten ausgewiesen sind, auf denselben Speicherseiten gespeichert werden.
  • Wenn das auftritt, erzeugt ein Versuch, in die Daten einer derartigen Speicherseite zu schreiben, einen T-Bit-Fehler. Die resultierende Ausnahme bewirkt, dass alle Übersetzungen von Zielinstruktionen auf der Speicherseite, welche von dem konkreten T-Bit geschützt ist, ungültig gemacht werden, selbst wenn ein Schreibvorgang in Daten nicht anzeigt, dass irgendeine Zielinstruktion sich geändert hat. Das Ungültigmachen korrekter Übersetzungen auf der Speicherseite verlangsamt den Betrieb des neuen Mikroprozessors signifikant.
  • Es ist wünschenswert, die Betriebsgeschwindigkeit des neuen Mikroprozessors zu verbessern, durch Eliminieren des Ungültigmachens von Übersetzungen, welche nicht von Schreibvorgängen in Speicherseiten, welche von T-Bits geschützt sind, betroffen sind, und durch Reduzieren der Anzahl von ausgeführten T-Bit-Traps, welche nicht das Ungültigmachen von Übersetzungen bewirken.
  • Die US-Patentschrift 4,794,522 offenbart die Verwendung von Lock Bits, um Speicherabschnitte zu schützen, welche kleiner sind als eine Seite, um Zielinstruktionen zu schützen, welche in Hostinstruktionen übersetzt worden sind, welche im Speicher gespeichert sind.
  • KURZDARSTELLUNG DER ERFINDUNG
  • Es ist daher wünschenswert, einen schnelleren Mikroprozessor vorzulegen, welcher kompatibel ist mit Anwendungsprogrammen und Betriebssystemen, welche für andere Mikroprozessoren gestaltet sind, und welcher in der Lage ist, diese auszuführen, bei einer höheren Geschwindigkeit als jene anderen Mikroprozessoren.
  • Aspekte der Erfindung sind in den beigefügten Ansprüchen dargelegt. Eine Ausführungsform der Erfindung betrifft einen Computer, welcher Instruktionen aus einem Zielinstruktionensatz in einen Hostinstruktionensatz übersetzt, durch ein Verfahren zum Bestimmen, ob Schreibvorgänge in eine Speicherseite auf Zielinstruktionen gerichtet sind, welche in Host-Instruktionen übersetzt worden sind, in einem Computer, welcher Instruktionen aus einem Zielinstruktionensatz in einen Hostinstruktionensatz übersetzt, umfassend die Schritte des Erkennens eines Schreibvorgangs in eine Speicherseite, welche Zielinstruktionen speichert, welche in Hostinstruktionen übersetzt worden sind, des Erkennens, ob ein Unterbereich der Speicherseite, an welchen der Schreibvorgang adressiert ist, Zielinstruktionen speichert, welche übersetzt worden sind, und des Ungültigmachens von Hostinstruktionen, welche aus adressierten Zielinstruktionen übersetzt sind.
  • Die Erfindung wird besser zu verstehen sein, mit Bezug auf die ausführliche Beschreibung, die nun folgt, welche gemeinsam zu sehen ist mit den Zeichnungen, in welchen gleiche Elemente, durch die mehreren Ansichten hindurch, mit den gleichen Bezeichnungen benannt sind.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • 1 ist ein Blockdiagramm, welches einen Mikroprozessor illustriert, welcher eine Ausführungsform der vorliegenden Erfindung benutzt.
  • 2 ist ein Blockdiagramm, welches eine Hardwareimplementierung einer Ausführungsform der vorliegenden Erfindung illustriert.
  • 3 ist ein Ablaufdiagramm, welches den Betrieb einer Ausführungsform der vorliegenden Erfindung illustriert.
  • 4 ist ein Blockdiagramm, welches die Datenstrukturen im Hostspeicher für eine Implementierung einer Ausführungsform der vorliegenden Erfindung illustriert.
  • AUSFÜHRLICHE BESCHREIBUNG
  • 1 illustriert einen Mikroprozessor 11, welcher Ausführungsformen der vorliegenden Erfindung benutzen kann. Der abgebildete Mikroprozessor ist ausführlich in der US-Patentschrift 5,832,205 beschrieben. Der Mikroprozessor umfasst eine Gleitkommaeinheit 12, eine Ganzzahleneinheit 13, einen Übersetzungspuffer 14, welcher ein Teil des Systemspeichers ist, Zielspeicher 15, welcher ein weiterer Teil des Systemspeichers ist, und einen Translation-Lookaside-Puffer 16, welcher ein Teil einer Speicherverwaltungseinheit ist.
  • Wie oben beschrieben, verwendet der neue Mikroprozessor ein einzigartiges Verfahren, um sicherzustellen, dass übersetzte Instruktionen konsistent bleiben mit den Zielinstruktionen, aus welchen sie übersetzt worden sind. Das Verfahren wird als eine "T-Bit-Ausnahme" bezeichnet. Ein T-Bit wird im Eintrag in dem Translation-Lookaside-Puffer 16 abgelegt, um zu signalisieren, dass eine Speicherseite im Zielspeicher 15, in welche ein Schreibvorgang versucht wird, Zielinstruktionen speichert, welche in Hostinstruktionen übersetzt worden sind, welche im Übersetzungspuffer 14 gespeichert sind. Eine T-Bit-Ausnahme wird erzeugt, wenn es einen Versuch gibt, in eine Speicherseite zu schreiben, welche die Zielinstruktionen speichert, welche übersetzt worden sind.
  • Der Zweck des T-Bits besteht darin, zuzulassen, dass übersetzte Hostinstruktionen ungültig gemacht werden, sodass die Übersetzung nicht verwendet wird (oder wenigstens vor Verwenden geprüft wird, um zu bestimmen, ob sie noch gültig ist), wenn die Zielinstruktionen, aus welchen die Übersetzung erzeugt worden ist, sich ändern. "Ungültigmachen" ist in dieser Spezifikation so verwendet, dass beide Bedeutungen inkludiert sind. Allerdings ist mit einigen Zielprozessoren (besonders der X86-Familie) zulässig, dass Speicherseiten existieren, welche sowohl übersetzte Instruktionen als auch Daten enthalten. Das Schreiben von Daten in eine Speicherseite ändert Instruktionen auf der Seite nicht, also besteht kein Grund, Hostinstruktionen ungültig zu machen, welche aus Instruktionen auf der Speicherseite übersetzt worden sind. Folglich ist ein neuer Prozess erdacht worden, mittels dessen die Code Morphing Software bestimmen kann, ob ein versuchter Schreibvorgang in eine Speicherseite in übersetzte Instruktionen erfolgt oder in Daten, und Schreibvorgänge in Daten zulassen, ohne die Übersetzungen von Instruktionen auf dieser Seite ungültig zu machen. Der neue Prozess limitiert auch die Effekte von Schreibvorgängen in Instruktionen auf der Seite auf tatsächlich beschriebene Bereiche der Speicherseite.
  • Der Prozess von Ausführungsformen der vorliegenden Erfindung, durch welchen das erreicht wird, sieht eine feinkörnigere Unterteilung von Speicherseiten vor, welche durch ein T-Bit geschützt sind. Der Prozess teilt geschützte Seiten in mehrere Unterbereiche von gleicher Größe und speichert Indikatoren für jeden der Unterbereiche einer derartigen Speicherseite. In einer Ausführungsform bilden die Indikatoren eine Maske, welche ein Bit vorsieht, für jeden der mehreren Unterbereiche, wobei die Maske gespeichert werden kann als ein Teil der Speicherseite, welche T-Bit-geschützt ist. Die Indikatoren für jeden Unterbereich, welcher geschützt ist, werden als "Fine-Grain-T-Bits" bezeichnet. In einer Ausführungsform ist die Maske ein 32-Bit-Wort, sodass jedes "Fine-Grain-T-Bit" einen 128-Byte-Unterbereich einer 4096-Byte-Speicherseite schützt. Für jeden Unterbereich, welcher Zielinstruktionen enthält, wird ein Fine-Grain-T-Bit gesetzt. Wenn eine T-Bit-Ausnahme auftritt, prüft die Ausnahmebehandlung die Indikatoren, um zu bestimmen, ob Fine-Grain-T-Bit-Schutz für die Speicherseite vorgesehen worden ist, in welche der Schreibvorgang versucht wird.
  • Um das Prüfen zu beschleunigen, werden die zwölf niedrigstwertigen Bits der Adresse, auf welche zugegriffen wird, verwendet, um eine Maske zu erzeugen. Diese Maske weist eine Eins auf, an der Position des adressierten Bytes (und, wenn die gespeicherten Daten lang genug sind, um in den nächsten Unterbereich zu verlaufen, eine Eins in der nächsten Bit-Position in Folge). Die Maske der niedrigstwertigen Adressbits und die Fine-Grain-T-Bit-Maske werden UND-verknüpft. Eine Null, welche an irgendeiner Stelle resultiert, gibt an, dass ein Fine-Grain-T-Bit für diesen Unterbereich gesetzt ist, sodass die T-Bit-Ausnahme erzeugt werden sollte.
  • Wenn die Speicherseite nicht in Unterbereiche geteilt worden ist (d. h. nur Zielinstruktionen sind auf die Seite geschrieben worden), wird die T-Bit-Ausnahme bestätigt, welche Übersetzungen in dem Übersetzungspuffer ungültig macht, welche sich auf diese Seite beziehen. Wenn die Speicherseite in Unterbereiche geteilt worden ist, sodass Fine-Grain-T-Bit-Indikatoren existieren, und das Nachschlagen zeigt, dass der Schreibvorgang in einen oder mehrere Unterbereiche erfolgt, welche nicht durch ein Fine-Grain-T-Bit ausgewiesen sind, dann wird die ursprüngliche T-Bit-Ausnahme durch die Software ignoriert. Wenn die Speicherseite in Unterbereiche geteilt worden ist, und das Nachschlagen zeigt, dass der Schreibvorgang in einen oder mehrere Unterbereiche erfolgt, welche durch ein Fine-Grain-T-Bit ausgewiesen sind (ein Bereich, welcher Instruktionen speichert), dann wird die ursprüngliche T-Bit-Ausnahme bestätigt; und die Ausnahmebehandlung macht die Hostinstruktionen ungültig, welche in dem Übersetzungspuffer gespeichert sind, welche übersetzt sind aus Zielinstruktionen, welche in dem konkreten Unterbereich auf der geschützten Speicherseite gespeichert sind.
  • Wie sich zeigt, eliminiert Fine-Grain-T-Bit-Schutz einen signifikanten Teil der T-Bit-Ausnahmen, welche von dem neuen Prozessor erzeugt werden. Fine-Grain-T-Bit-Schutz limitiert auch die verworfenen Übersetzungen auf jene, welche Instruktionen in den beschriebenen Unterbereichen übersetzen. Also ist der erfindungsgemäße Prozess viel schneller als ständiges Verwerfen der gesamten Speicherseite.
  • Selbst wenn der Prozess, welcher die Code Morphing Software und eine Software-Ausnahmebehandlung verwendet, schneller ist als Basis-T-Bit-Schutz, kann er weiter beschleunigt werden. Um den Prozess von Ausführungsformen der Erfindung schneller werden zu lassen, wurde eine Hardware-Ausführungsform, illustriert in 2, konstruiert. Diese Ausführungsform umfasst eine Schaltung 20, welche einen ersten TLB 21 aufweist, konstruiert in der Art des bereits erörterten TLB. Dieser TLB sieht Positionen vor, zum Speichern von Einträgen, wobei jeder die virtuelle Adresse einer Speicherseite enthält, eine physikalische Seitenadresse, an welcher die durch die virtuelle Speicheradresse adressierte Information tatsächlich gespeichert ist, und ein T-Bit. Wenn eine gültige Speicherseite Zielinstruktionen speichert, welche übersetzt worden sind, wird das T-Bit für den Eintrag in dem TLB 21 gesetzt.
  • Die Schaltung 20 enthält auch eine zweite TLB-artige Struktur 23, welche als eine "Fine-Grain-T-Bit-Nachschlagetabelle" bezeichnet wird. Die Fine-Grain-T-Bit-Nachschlagetabelle 23 weist typischerweise eine kleinere Anzahl an Einträgen auf als TLB 21, da von wenigen Speicherseiten, welche Zielinstruktionen speichern, die übersetzt worden sind, erwartet werden kann, dass sie auch Daten speichern. Die Tabelle 23 sieht Positionen vor, zum Speichern von Einträgen, von denen jeder die physikalische Seitenadresse einer Speicherseite enthält, welche sowohl Daten als auch Zielinstruktionen, welche übersetzt worden sind, enthält. Jeder Eintrag der Tabelle 23 speichert auch denselben Satz von Indikatoren, welche in der Software-Ausführungsform (z. B. einer 32-Bit-Wortmaske) benutzt werden, welche die Unterbereiche angeben, welche tatsächlich durch Fine-Grain-T-Bits geschützt sind.
  • Der Betrieb der Schaltung 20 ist durch das Ablaufdiagramm in 3 illustriert. Wenn ein Schreibvorgang in eine Speicherseite versucht wird, wird die Tabelle 23 durchsucht, um zu bestimmen, ob ein Eintrag für die adressierte Speicherseite in der Tabelle existiert. Um das zu erreichen, wird eine Suche nach einem Eintrag durchgeführt, welcher die virtuelle Speicheradresse enthält. Wenn ein derartiger Eintrag existiert, wird die physikalische Adresse der Seite gefunden, und der Zustand des T-Bits für die Seite wird bestimmt. Wenn das T-Bit nicht gesetzt ist, ist die Speicherseite keine Seite, welche Zielinstruktionen speichert, welche übersetzt worden sind, sodass sie eigentlich keine Seite ist, welche T-Bit-Schutz aufweist. Wenn die Speicherseite Zielinstruktionen speichert, welche übersetzt worden sind, sodass sie durch ein T-Bit geschützt ist, welches gesetzt ist, wird ein T-Bit-Trap für die Seite erzeugt; und die physikalische Adresse des Eintrags wird an die Fine-Grain-T-Bit-Nachschlagetabelle 23 gesendet.
  • Eine Suche wird in der Tabelle 23 durchgeführt, nach einem Eintrag, welcher die physikalische Adresse enthält. Wenn ein Eintrag, welcher die physikalische Adresse enthält, nicht in der Tabelle 23 existiert, speichert (1) die Speicherseite nicht sowohl Daten als auch übersetzte Zielinstruktionen, oder (2) die Speicherseite speichert sowohl Daten als auch übersetzte Zielinstruktionen, jedoch ist ein Eintrag für die Speicherseite nicht in Tabelle 23 eingegeben worden. In der ersten Situation wird, da das gesetzte T-Bit in dem Eintrag in TLB 21 anzeigt, dass die Seite übersetzte Zielinstruktionen enthält, eine T-Bit-Trap-Ausnahme erzeugt, welche die Übersetzungen ungültig macht, welche in dem Übersetzungspuffer gespeichert sind, welche sich auf diese Seite beziehen. In der zweiten Situation wird der Eintrag für die physikalische Adresse in die Tabelle 23 geladen, und der Schreibvorgang wird erneut versucht.
  • Wenn es einen Treffer in der Fine-Grain-T-Bit-Nachschlagetabelle 23 gibt, wird eine Prüfung für den konkreten Unterbereich der Seite durchgeführt, um zu bestimmen, ob der adressierte Unterbereich von einem Fine-Grain-T-Bit geschützt ist. Wenn ein Fine-Grain-T-Bit nicht für den Unterbereich gesetzt ist, wird keine T-Bit-Trap-Ausnahme erzeugt, und Daten werden auf der Speicherseite gespeichert. Wenn ein Fine-Grain-T-Bit für den Unterbereich gesetzt ist, wird eine T-Bit-Trap-Ausnahme erzeugt, welche den konkreten Unterbereich der Speicherseite, den Eintrag in dem TLB 21 und die Übersetzungen, welche in dem Übersetzungspuffer gespeichert sind, welche sich auf den konkreten Unterbereich dieser Speicherseite beziehen, ungültig macht.
  • Um zu bestimmen, ob ein Fine-Grain-T-Bit für den adressierten Bereich gesetzt ist, bewirkt eine Übereinstimmung der physikalischen Adresse in der Tabelle 23 der Schaltung 20, dass die Maske, welche die durch Fine-Grain-T-Bits geschützten Unterbereiche anzeigt, in einem Register 25 abgelegt wird, in einer Ausführungsform der Erfindung. Die niedrigerwertigen Bits der virtuellen Adresse werden danach verwendet, um zu bestimmen, ob die adressierten Unterbereiche durch Fine-Grain-T-Bits geschützt sind. Diese niedrigerwertigen Bits definieren die Adresse, auf welche durch den Schreibzugriff zugegriffen wird, innerhalb der adressierten Speicherseite. Die konkreten Unterbereiche der Seite, an welche der Schreibzugriff adressiert ist, werden mit dem 32-Bit-T-Bit-Indikator der Maske in Register 25 auf Übereinstimmung geprüft, um zu bestimmen, ob die Adresse, sich innerhalb eines oder mehrerer Unterbereiche befindet, welche durch ein Fine-Grain-T-Bit geschützt sind. Wenn der Schreibvorgang in einen Unterbereich erfolgt, welcher durch ein Fine-Grain-T-Bit geschützt ist, dann bewirkt der Trap, dass eine T-Bit-Ausnahme erzeugt wird, welche die konkreten Unterbereiche, die Übersetzungen von Instruktionen, welche in diesem Unterbereichen gespeichert sind, und den adressierten Eintrag in dem TLB 21 ungültig macht.
  • Um zu bestimmen, ob ein adressierter Unterbereich einer Speicherseite Eine-Grain-T-Bit-Schutz aufweist, benutzt eine Ausführungsform der vorliegenden Erfindung die fünf höchstwertigen Bits der zwölf niedrigstwertigen Adressbits, um zu bestimmen, welcher der 32 Unterbereiche betroffen ist. Jeder derartige Unterbereich enthält 128 Bytes für eine Seite von 4096 Bytes. Wenn der konkrete adressierte Unterbereich bestimmt worden ist, werden die sieben niedrigstwertigen Bits der Adresse verwendet, um das spezifische, in dem Unterbereich adressierte Byte zu bestimmen. Wenn das adressierte Byte bestimmt worden ist, wird die Bitposition, welche den Indikator für den adressierten Unterbereich beinhaltet, in der Maske, welche die Unterbereiche anzeigt, welche durch Fine-Grain-T-Bits geschützt sind (die Maske in Register 25) geprüft, um zu bestimmen, ob ein Eine-Grain-T-Bit gesetzt ist. Da es in einer Ausführungsform sein kann, dass ein Schreibvorgang nicht weniger als acht Bytes ausmacht, wird die Länge der gespeicherten Daten (minus eins) zu der beginnenden Byteadresse addiert, innerhalb des Unterbereichs, um zu bestimmen, ob der Schreibvorgang in den nächsten Unterbereich hineinreicht. Wenn der Schreibvorgang in den nächsten Unterbereich hineinreicht, wird die Maske ebenfalls geprüft, um zu bestimmen, ob ein Fine-Grain-T-Bit für den nächsten Unterbereich gesetzt ist.
  • Die Hardware nimmt den Bitvektor, welcher in dem T-Bit-Maskenregister abgelegt ist, und verschiebt ihn nach unten, um die oberen fünf der zwölf Bits Seitenoffset. Das bewegt das Bit für den konkreten Unterbereich, welcher beschrieben worden ist, in die niedrigstwertige Bitposition, und das Bit für den nächsten Unterbereich, in die nächste niedrigstwertige Bitposition. Das eine (oder, wenn der nächste Unterbereich beschrieben worden ist, die zwei) niedrigstwertige(n) Bit(s) wird/werden danach geprüft. Wenn eines davon gesetzt ist, wird eine T-Bit-Ausnahme aufgestellt.
  • Der Basis-T-Bit-Schutz, welcher in US-Patentschrift 6,199,152 beschrieben ist, benutzt eine Datenstruktur, welche Adressen von Host-Instruktionen enthält, welche aus Zielinstruktionen übersetzt worden sind, welche in durch T-Bits geschützten Bereichen gespeichert sind. Um die Fine-Grain-Aspekte des T-Bit-Schutzes zu nutzen, welche durch Ausführungsformen der vorliegenden Erfindung optimal geleistet werden, wird diese Datenstruktur modifiziert, auf eine Weise, wie illustriert in 4. Die Code Morphing Software benutzt eine Reihe von Einträgen, bezeichnet als ein Map physikalischer Seiten. Der Eintrag in das Map physikalischer Seiten ist durch die höchstwertigen Bits der physikalischen Adresse indiziert. Jeder Eintrag ist ein Zeiger auf die Datenstrukturen, welche die Übersetzungen identifizieren, welche Zielinstruktionen übersetzen, aus der entsprechenden physikalischen Seite. Jede Übersetzung von Zielinstruktionen auf der physikalischen Seite weist einen Fine-Grain-T-Bit-Indikator auf (z. B. die Zweiunddreißig-Bit-Wortmaske), welche Unterbereiche der Speicherseite identifiziert, welche übersetzte Zielinstruktionen speichert, welche durch Fine-Grain-T-Bits geschützt sind. Wenn es eine T-Bit-Ausnahme gibt, wird die Maske, welche aus den niedrigstwertigen Bits der Speicherungsadresse und der Größe der Speicherung erzeugt wird, auf die oben beschriebene Weise verwendet, um für jede Übersetzung zu bestimmen, ob sie Instruktionen aus dem Unterbereich der physikalischen Seite übersetzt, auf welchen zugegriffen wird.
  • Jeder Eintrag in dem Map physikalischer Seiten zeigt auf eine Liste von Zeigern auf Übersetzungen. Jeder Übersetzung ordnet er eine T-Bit-Maske zu. Wenn die T-Bit-Masken für die Übersetzungen auf einer derartigen Liste für eine Seite ODER-verknüpft werden, wird eine T-Bit-Maske für die Seite gebildet. Diese können gespeichert werden und verwendet, um die Tabelle 23 rasch zu füllen, und um eine neue Seite in die Tabelle 23 zu laden; die Masken werden immer dann neu berechnet, wenn eine neue Übersetzung zu der Liste hinzugefügt wird, oder immer dann, wenn eine Übersetzung auf der Liste ungültig gemacht wird.
  • Hier ist anzumerken, dass, wenn eine Zielinstruktion oder eine Sequenz von Zielinstruktionen übersetzt wird, eine Sequenz von Hostinstruktionen erzeugt wird. Oft werden diese Hostinstruktionen neu geordnet und gereiht, um die Betriebsgeschwindigkeit des Computers zu erhöhen. Folglich wird, in einer Ausführungsform der Erfindung, wenn eine Übersetzung wegen einer Speicherung ungültig gemacht wird, die gesamte Folge der Hostinstruktionen, welche der Übersetzung zugeordnet sind, ungültig gemacht, selbst jene, welche Zielinstruktionen aus Bereichen übersetzen, auf welche von der Speicherung nicht zugegriffen wird.
  • Es gibt verschiedenen alternative Ausführungsformen, welche verwendet werden können, an Stelle der bevorzugten Ausführungsform, welche illustriert ist. Zum Beispiel könnte auf den T-Bit-Puffer 23 unter Verwendung virtueller an Stelle von physikalischen Adressen zugegriffen werden. Eine derartige Modifikation würde zulassen, dass auf die Puffer 21 und 23 in demselben Takt zugegriffen würde. Eine weitere Ausführungsform ist außerdem möglich, welche den Puffer 23 eliminieren und die gesamte T-Bit-Maske speichern würde, an Stelle eines einzelnen Bits in dem TLB 21. Andere spezifische Ausführungsformen werden sich in Fachkreisen ergeben.
  • Ausführungsformen der Erfindung können ferner verbessert werden durch Schaffen von Unterbereichen unterschiedlicher Größe, für welche Fine-Grain-T-Bit-Schutz geleistet wird. Eine Ausführungsform zum Erreichen dieses Resultats teilt ferner die Unterbereiche in kleinere Unterbereiche, welche ebenfalls mit Eine-Grain-T-Bit-Schutz versehen sind, auf dieselbe Weise wie die großen Unterbereiche, welche oben beschrieben sind, und liefert Schaltungen, welche eine zusätzliche Tabelle schaffen, welche der Tabelle 23 ähnlich ist, und zugeordnete Schaltungen, zum Bestimmen, ob versuchte Speicherungen in geschützte der kleineren Unterbereiche erfolgen.
  • Wenngleich die vorliegende Erfindung anhand einer bevorzugten Ausführungsform beschrieben worden ist, versteht es sich, dass verschiedene Modifikationen und Änderungen in Fachkreisen vorgenommen werden könnten.

Claims (14)

  1. Verfahren zur Verwendung in einem Computer, welcher Instruktionen aus einem Zielinstruktionensatz in einen Hostinstruktionensatz übersetzt, wobei das Verfahren ein Verfahren zum Bestimmen ist, ob Schreibvorgänge in eine Speicherseite, welche Daten und Instruktionen enthält, auf Zielinstruktionen gerichtet sind, welche in Hostinstruktionen übersetzt worden sind, umfassend die Schritte: Erkennen eines physikalisch adressierten Schreibvorgangs in eine physikalische Speicherseite, welche Zielinstruktionen speichert, welche in Hostinstruktionen übersetzt worden sind, umfassend die Schritte: Speichern eines Indikators, in einem physikalisch adressierbaren Speicher, für jede physikalische Speicherseite, die Zielinstruktionen speichert, welche in Hostinstruktionen übersetzt worden sind; und Erkennen des Indikators, wenn ein Schreibvorgang in jede derartige physikalische Speicherseite versucht wird; wobei das Verfahren ferner die Schritte umfasst: Erkennen, ob ein Unterbereich der physikalischen Speicherseite, an welchen der Schreibvorgang adressiert ist, Zielinstruktionen speichert, welche übersetzt worden sind, und Ungültigmachen oder Prüfen von Hostinstruktionen, welche aus physikalisch adressierten Zielinstruktionen übersetzt sind, wenn ein Schreibvorgang in die Unterbereiche des physikalischen Systemspeichers versucht wird, welche Zielinstruktionen speichern, welche übersetzt worden sind.
  2. Verfahren nach Anspruch 1, wobei der Schritt des Erkennens, ob ein Unterbereich der physikalischen Speicherseite, an welchen der Schreibvorgang adressiert ist, Zielinstruktionen speichert, welche übersetzt worden sind, die Schritte umfasst: Speichern eines Indikators, in einem physikalisch adressierbaren Speicher, für jeden Unterbereich einer physikalischen Speicherseite, der Zielinstruktionen speichert, welche in Hostinstruktionen übersetzt worden sind, und Erkennen des Indikators für einen derartigen Unterbereich, wenn ein Schreibvorgang in jeden derartigen Unterbereich einer derartigen physikalischen Speicherseite versucht wird.
  3. Verfahren nach Anspruch 1, wobei der Schritt des Ungültigmachens von Hostinstruktionen, welche aus physikalisch adressierten Zielinstruktionen übersetzt sind, Ungültigmachen aller Hostinstruktionen umfasst, die aus adressierten Zielinstruktionen übersetzt sind, welche auf einer physikalischen Speicherseite gespeichert sind, welche nur Zielinstruktionen speichert.
  4. Verfahren nach Anspruch 1, wobei der Schritt des Ungültigmachens von Hostinstruktionen, welche aus physikalisch adressierten Zielinstruktionen übersetzt sind, Ungültigmachen nur von Hostinstruktionen umfasst, welche aus physikalisch adressierten Zielinstruktionen übersetzt sind, welche auf einem Unterbereich einer Speicherseite gespeichert sind, an welchen der Schreibvorgang adressiert ist.
  5. Verfahren nach Anspruch 1, wobei der Schritt des Ungültigmachens von Hostinstruktionen, welche aus physikalisch adressierten Zielinstruktionen übersetzt sind, Ungültigmachen aller Hostinstruktionen umfasst, welche Teil einer Übersetzung aus physikalisch adressierten Zielinstruktionen sind, welche in einem beliebigen Unterbereich einer physikalischen Speicherseite gespeichert sind, an welche der Schreibvorgang adressiert ist.
  6. Speicherverwaltungseinheit zum Steuern von Systemspeicherzugriff in einem Computer, welcher Instruktionen aus einem Zielinstruktionensatz in einen Hostinstruktionensatz übersetzt, umfassend: Mittel, welche auf physikalisch adressierte Instruktionen reagieren, zum Anzeigen von Systemspeicherseiten, welche Daten und Instruktionen enthalten, welche Zielinstruktionen speichern, die in Hostinstruktionen übersetzt worden sind, wobei die Mittel zum Anzeigen von Systemspeicherseiten ferner umfassen: Mittel zum Speichern eines Indikators, in einem physikalisch adressierbaren Speicher, für jede physikalische Speicherseite, die Zielinstruktionen speichert, welche in Zielinstruktionen übersetzt worden sind; und Mittel zum Erkennen des Indikators, wenn ein Schreibvorgang in jede derartige Speicherseite versucht wird, wobei die Speicherverwaltungseinheit ferner umfasst: Mittel, welche auf physikalisch adressierte Instruktionen reagieren, zum Anzeigen von Unterbereichen der Systemspeicherseiten, welche Ziel instruktionen speichern, die in Hostinstruktionen übersetzt worden sind, und Mittel zum Ungültigmachen oder Prüfen von Hostinstruktionen, welche aus Zielinstruktionen übersetzt sind, welche in Unterbereichen von Systemspeicherseiten gespeichert sind, welche Zielinstruktionen speichern, wenn ein Schreibvorgang in derartige Unterbereiche des Systemspeichers versucht wird.
  7. Speicherverwaltungseinheit nach Anspruch 6, ferner umfassend Mittel zum Ungültigmachen oder Prüfen von Hostinstruktionen, welche aus Zielinstruktionen übersetzt sind, welche in Systemspeicherseiten gespeichert sind, welche nur Zielinstruktionen speichern, wenn ein Schreibvorgang in derartige Systemspeicherseiten versucht wird.
  8. Speicherverwaltungseinheit nach Anspruch 6, ferner umfassend Mittel zum Ungültigmachen von Hostinstruktionen, welche aus Zielinstruktionen übersetzt sind, welche in Unterbereichen von Unterbereichen von Systemspeicherseiten gespeichert sind, welche Zielinstruktionen speichern, wenn ein Schreibvorgang in derartige Unterbereiche von Unterbereichen des Systemspeichers versucht wird.
  9. Speicherverwaltungseinheit nach Anspruch 6, wobei: ein Translation-Lookaside-Puffer (16, 21) Einträge speichert, welche mittels virtueller Adressen adressierbar sind, für Seiten des physikalischen Systemspeichers, wobei jeder Eintrag eine physikalische Adresse einer Seite des physikalischen Systemspeichers enthält, sowie eine Anzeige, ob übersetzte Zielinstruktionen auf der Seite gespeichert sind.
  10. Speicherverwaltungseinheit nach Anspruch 6, wobei das Mittel, welches auf physikalisch adressierte Instruktionen reagiert, zum Anzeigen von Unterbereichen der Systemspeicherseiten, welche Zielinstruktionen speichern, die in Hostinstruktionen übersetzt worden sind, umfasst: eine Tabelle (23) zum Speichern von Einträgen für Systemspeicherseiten, welche mittels physikalischer Adressen adressierbar sind, wobei jeder Eintrag Indikatoren enthält, welche Unterbereiche unterscheiden, in welchen übersetzte Zielinstruktionen gespeichert sind.
  11. Speicherverwaltungseinheit nach Anspruch 10, wobei: die Unterbereiche von gleicher Größe sind, und die Indikatoren in jedem Eintrag Bitpositionen sind, deren Zustand die Speicherung übersetzter Zielinstruktionen unterscheidet, und deren Position den Unterbereich der Seite anzeigt.
  12. Speicherverwaltungseinheit nach Anspruch 9, wobei das Mittel, welches auf physikalisch adressierte Instruktionen reagiert, zum Ungültigmachen von Hostinstruktionen, welche in Unterbereichen von Systemspeicherseiten gespeichert sind, welche Zielinstruktionen speichern, wenn ein Schreibvorgang in derartige Unterbereiche versucht wird, umfasst: Ausnahme-Behandlungsmittel, welche auf einen Schreibvorgang in einen Unterbereich reagieren, welcher Zielinstruktionen speichert, welche in Hostinstruktionen übersetzt worden sind, zum Ungültigmachen von Hostinstruktionen, welche aus Zielinstruktionen übersetzt sind, welche in derartigen Unterbereichen gespeichert sind.
  13. Speicherverwaltungseinheit nach Anspruch 12, ferner umfassend Ausnahme-Behandlungsmittel zum Ungültigmachen von Systemspeicherseiten, welche aus Zielinstruktionen übersetzte Hostinstruktionen speichern, welche übersetzt worden sind, wenn ein Schreibvorgang auf derartige Seiten versucht wird.
  14. Computer, welcher Instruktionen aus einem Zielinstruktionensatz in einen Hostinstruktionensatz übersetzt, umfassend: eine Verarbeitungseinheit zum Ausführen von Hostinstruktionen, Systemspeicher, eine Speicherverwaltungseinheit nach einem der Ansprüche 7 bis 13.
DE60036960T 1999-10-13 2000-09-06 Unterscheidung von feinkorntranslation Expired - Lifetime DE60036960T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/417,356 US6363336B1 (en) 1999-10-13 1999-10-13 Fine grain translation discrimination
PCT/US2000/024651 WO2001027743A1 (en) 1999-10-13 2000-09-06 Fine grain translation discrimination
US417356 2003-04-16

Publications (2)

Publication Number Publication Date
DE60036960D1 DE60036960D1 (de) 2007-12-13
DE60036960T2 true DE60036960T2 (de) 2008-08-14

Family

ID=23653666

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60036960T Expired - Lifetime DE60036960T2 (de) 1999-10-13 2000-09-06 Unterscheidung von feinkorntranslation

Country Status (9)

Country Link
US (1) US6363336B1 (de)
EP (1) EP1240582B1 (de)
JP (2) JP4275884B2 (de)
KR (1) KR100573446B1 (de)
CN (1) CN1196994C (de)
AT (1) ATE377212T1 (de)
CA (1) CA2384254C (de)
DE (1) DE60036960T2 (de)
WO (1) WO2001027743A1 (de)

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6826748B1 (en) 1999-01-28 2004-11-30 Ati International Srl Profiling program execution into registers of a computer
US7111290B1 (en) * 1999-01-28 2006-09-19 Ati International Srl Profiling program execution to identify frequently-executed portions and to assist binary translation
US8074055B1 (en) 1999-01-28 2011-12-06 Ati Technologies Ulc Altering data storage conventions of a processor when execution flows from first architecture code to second architecture code
US7941647B2 (en) 1999-01-28 2011-05-10 Ati Technologies Ulc Computer for executing two instruction sets and adds a macroinstruction end marker for performing iterations after loop termination
US8065504B2 (en) 1999-01-28 2011-11-22 Ati International Srl Using on-chip and off-chip look-up tables indexed by instruction address to control instruction execution in a processor
US6954923B1 (en) 1999-01-28 2005-10-11 Ati International Srl Recording classification of instructions executed by a computer
US8127121B2 (en) * 1999-01-28 2012-02-28 Ati Technologies Ulc Apparatus for executing programs for a first computer architechture on a computer of a second architechture
US6779107B1 (en) 1999-05-28 2004-08-17 Ati International Srl Computer execution by opportunistic adaptation
US7761857B1 (en) * 1999-10-13 2010-07-20 Robert Bedichek Method for switching between interpretation and dynamic translation in a processor system based upon code sequence execution counts
US6845353B1 (en) * 1999-12-23 2005-01-18 Transmeta Corporation Interpage prologue to protect virtual address mappings
US7680999B1 (en) * 2000-02-08 2010-03-16 Hewlett-Packard Development Company, L.P. Privilege promotion based on check of previous privilege level
US6594821B1 (en) 2000-03-30 2003-07-15 Transmeta Corporation Translation consistency checking for modified target instructions by comparing to original copy
US6615300B1 (en) 2000-06-19 2003-09-02 Transmeta Corporation Fast look-up of indirect branch destination in a dynamic translation system
US6826682B1 (en) 2000-06-26 2004-11-30 Transmeta Corporation Floating point exception handling in pipelined processor using special instruction to detect generated exception and execute instructions singly from known correct state
GB2393274B (en) * 2002-09-20 2006-03-15 Advanced Risc Mach Ltd Data processing system having an external instruction set and an internal instruction set
US7310723B1 (en) 2003-04-02 2007-12-18 Transmeta Corporation Methods and systems employing a flag for deferring exception handling to a commit or rollback point
US6925928B2 (en) * 2003-09-18 2005-08-09 Anthony Fox Trash compactor for fast food restaurant waste
JP4520790B2 (ja) * 2004-07-30 2010-08-11 富士通株式会社 情報処理装置およびソフトウェアプリフェッチ制御方法
US8413162B1 (en) 2005-06-28 2013-04-02 Guillermo J. Rozas Multi-threading based on rollback
US7774583B1 (en) 2006-09-29 2010-08-10 Parag Gupta Processing bypass register file system and method
US7478226B1 (en) 2006-09-29 2009-01-13 Transmeta Corporation Processing bypass directory tracking system and method
US8006055B2 (en) 2008-03-04 2011-08-23 Microsoft Corporation Fine granularity hierarchiacal memory protection
JP5246014B2 (ja) * 2009-04-22 2013-07-24 富士通株式会社 仮想化プログラム、仮想化処理方法及び装置
KR101744081B1 (ko) 2012-12-27 2017-06-07 인텔 코포레이션 이진 변환된 자가 수정 코드 및 교차 수정 코드의 처리
US9081707B2 (en) * 2012-12-29 2015-07-14 Intel Corporation Apparatus and method for tracking TLB flushes on a per thread basis
US9411600B2 (en) * 2013-12-08 2016-08-09 Intel Corporation Instructions and logic to provide memory access key protection functionality

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4589092A (en) * 1983-12-12 1986-05-13 International Business Machines Corporation Data buffer having separate lock bit storage array
US4638462A (en) * 1985-01-31 1987-01-20 International Business Machines Corporation Self-timed precharge circuit
US4794522A (en) * 1985-09-30 1988-12-27 International Business Machines Corporation Method for detecting modified object code in an emulator
EP0425771A3 (en) * 1989-11-03 1992-09-02 International Business Machines Corporation An efficient mechanism for providing fine grain storage protection intervals
CA2078310A1 (en) * 1991-09-20 1993-03-21 Mark A. Kaufman Digital processor with distributed memory system
US5437017A (en) * 1992-10-09 1995-07-25 International Business Machines Corporation Method and system for maintaining translation lookaside buffer coherency in a multiprocessor data processing system
US5548746A (en) * 1993-11-12 1996-08-20 International Business Machines Corporation Non-contiguous mapping of I/O addresses to use page protection of a process
US5781750A (en) * 1994-01-11 1998-07-14 Exponential Technology, Inc. Dual-instruction-set architecture CPU with hidden software emulation mode
US5560013A (en) * 1994-12-06 1996-09-24 International Business Machines Corporation Method of using a target processor to execute programs of a source architecture that uses multiple address spaces
US5577231A (en) * 1994-12-06 1996-11-19 International Business Machines Corporation Storage access authorization controls in a computer system using dynamic translation of large addresses
US5832205A (en) * 1996-08-20 1998-11-03 Transmeta Corporation Memory controller for a microprocessor for detecting a failure of speculation on the physical nature of a component being addressed
US6199152B1 (en) * 1996-08-22 2001-03-06 Transmeta Corporation Translated memory protection apparatus for an advanced microprocessor
US6009516A (en) * 1996-10-21 1999-12-28 Texas Instruments Incorporated Pipelined microprocessor with efficient self-modifying code detection and handling
US6243668B1 (en) * 1998-08-07 2001-06-05 Hewlett-Packard Company Instruction set interpreter which uses a register stack to efficiently map an application register state

Also Published As

Publication number Publication date
ATE377212T1 (de) 2007-11-15
EP1240582A4 (de) 2005-08-31
WO2001027743A1 (en) 2001-04-19
CA2384254A1 (en) 2001-04-19
DE60036960D1 (de) 2007-12-13
JP4417346B2 (ja) 2010-02-17
CN1399735A (zh) 2003-02-26
EP1240582A1 (de) 2002-09-18
JP2006244516A (ja) 2006-09-14
CN1196994C (zh) 2005-04-13
KR20020039685A (ko) 2002-05-27
CA2384254C (en) 2004-11-02
EP1240582B1 (de) 2007-10-31
KR100573446B1 (ko) 2006-04-26
US6363336B1 (en) 2002-03-26
JP4275884B2 (ja) 2009-06-10
JP2003511788A (ja) 2003-03-25

Similar Documents

Publication Publication Date Title
DE60036960T2 (de) Unterscheidung von feinkorntranslation
DE3151745C2 (de)
DE69629800T2 (de) Adressenübersetzungsbuffer in einem rechnersystem
DE60003273T2 (de) Verfahren und Vorrichtung zur Erzeugung einer Eingabeadresse
DE4410060B4 (de) Übersetzungsvorrichtung zum Umsetzen einer virtuellen Speicheradresse in eine physikalische Speicheradresse
DE69721590T2 (de) Ein bereichsbasiertes seiten-table-walk-bit verwendendes verfahren sowie vorrichtung
DE69724572T2 (de) Verfahren und Vorrichtung zur Vorladung von verschiedenen vorgegebenen Adressenübersetzungsattributen
DE69738101T2 (de) Verwaltung des Zugangs zu Objekten mit Hilfe von Referenzen mit drei Zuständen
DE60023002T2 (de) Erweiterung und abbildung auf physikalischem speicher von linearen adressen unter verwendung von 4 und 8 byte seitentabelleneinträgen in einem 32-bit mikroprozessor
DE602004011018T2 (de) Ungültigkeitserklärung eines speichers und löschen von puffereinträgen
DE69732181T2 (de) Verfahren und gerät zum zwischenspeichern von systemverwaltungsinformationen mit anderen informationen
DE69721368T2 (de) Verfahren und Gerät zur dynamischen Vorhersage des Weges für mehrstufige und mehrwege-satz-assoziative Cachespeicher
DE60102017T2 (de) Räumungsfilter für adressenübersetzungspuffer
DE69629140T2 (de) Cachefähigkeitsattribut für virtuelle Adressen in Cachespeichern mit sowohl virtuellen als auch physikalischem Index
DE10297433B4 (de) Speicherverwaltungseinheit, Verfahren zum Bereitstellen einer Speicherzugriffssicherheit auf der Basis einer linearen Adresse und Prozessor
DE112005003859B4 (de) Verwalten von Prozessorressourcen während Architekturereignissen
DE69530776T2 (de) Zweiwege set-assoziativer cache-speicher
DE112005003098B4 (de) Verfahren und Vorrichtung zum Zugreifen auf einen physikalischen Speicher von einer CPU oder einem Prozessorelement mit hoher Leistung
DE102006015106B4 (de) Bereitstellen eines erweiterten Speicherschutzes
DE60003235T2 (de) Cachespeicher zum bereitstellen von partiellen etiketten aus nicht-vorhergesagten wegen um die suche bei wegvorhersagefehlgriffen zu leiten
DE60203612T2 (de) Datenverarbeitung mit mehrfachbefehlssätzen
DE3833933C2 (de) Informationsverarbeitungseinrichtung mit einer Adressenerweiterungsfunktion
DE112017001027B4 (de) Seitenfehlerbehebung
DE3805107A1 (de) Verfahren und vorrichtung zur steuerung virtueller adressraeume eines virtuellen speichers
DE69634315T2 (de) Verfahren und Gerät zur Verwendung eines Ladebefehls der keinen Fehler verursacht

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8327 Change in the person/name/address of the patent owner

Owner name: INTELLECTUAL VENTURE FUNDING LLC, CARSON CITY,, US