DE112005001798T5 - Verwalten von Prozessorressourcen während Architekturereignissen - Google Patents
Verwalten von Prozessorressourcen während Architekturereignissen Download PDFInfo
- Publication number
- DE112005001798T5 DE112005001798T5 DE112005001798T DE112005001798T DE112005001798T5 DE 112005001798 T5 DE112005001798 T5 DE 112005001798T5 DE 112005001798 T DE112005001798 T DE 112005001798T DE 112005001798 T DE112005001798 T DE 112005001798T DE 112005001798 T5 DE112005001798 T5 DE 112005001798T5
- Authority
- DE
- Germany
- Prior art keywords
- address space
- entries
- address
- processor
- processor resource
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1036—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0292—User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0891—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1045—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
- G06F12/1063—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache the data cache being concurrently virtually addressed
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/109—Address translation for multiple virtual address spaces, e.g. segmentation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/123—Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45591—Monitoring or debugging support
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/15—Use in a specific computing environment
- G06F2212/152—Virtualized environment, e.g. logically partitioned system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/30—Providing cache or TLB in specific location of a processing system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/50—Control mechanisms for virtual memory, cache or TLB
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/604—Details relating to cache allocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/651—Multi-level translation tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/657—Virtual address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/68—Details of translation look-aside buffer [TLB]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/68—Details of translation look-aside buffer [TLB]
- G06F2212/683—Invalidation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/68—Details of translation look-aside buffer [TLB]
- G06F2212/684—TLB miss handling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/70—Details relating to dynamic memory management
Abstract
Schalten zwischen einem ersten Adreßraum und einem zweiten Adreßraum;
Bestimmen, ob der zweite Adreßraum in einer Liste von Adreßräumen existiert; und
Verwalten von Einträgen des ersten Adreßraums in einem Umsetzungspuffer nach dem Schalten.
Description
- Allgemeiner Stand der Technik
- Die vorliegende Erfindung betrifft im allgemeinen Datenverarbeitungssysteme und genauer die Verarbeitung in verschiedenen Kontexten mit Hilfe eines Prozessors.
- Viele derzeitige Computersysteme benutzen virtuelle Speichersysteme, um Speicher zu verwalten und verschiedenen Prozessen zuzuweisen, welche innerhalb des Systems ablaufen, wobei diese jedem Prozeß, der auf dem System abläuft, ermöglichen zu arbeiten, als ob er den gesamten Bereich von Adressen steuert, die von dem System bereitgestellt werden. Das Betriebssystem (OS) bildet den virtuellen Adreßraum für jeden Prozeß auf den tatsächlichen physikalischen Adreßraum für das System ab. Das Abbilden einer physikalischen Adresse auf eine virtuelle Adresse wird in der Regel durch die Benutzung von Seitentabellen verwaltet.
- Die Prozessorleistung wird durch eine mehrstufige Pipelinearchitektur verbessert, in der verschiedene Pipelineressourcen wie Caches, Puffer, Anordnungen und dergleichen benutzt werden können, um Befehle effizient auszuführen. Eine solche Pipelineressource, welche die Benutzung virtueller Speichersysteme verbessert, ist ein Adreßumsetzungsspeicher (TLB). Ein TLB ist ein relativ kleiner Speicherabschnitt in einer Prozessorpipeline, der einen Teil der virtuellen Adresse des Systems in physikalischen Adreßumsetzungen zwischenspeichert. Spezifisch werden einige wenige Elemente des Umsetzungssatzes in dem TLP gespeichert, auf den der Prozessor äußerst schnell zugreifen kann. Verschiedene TLBs können in einem System existieren. Zum Beispiel können für Befehle und Daten getrennte TLBs existieren (jeweils ein Befehls-TLB (iTLB) und ein Daten-TLB (dTLB). Darüber hinaus kann in bestimmten Systemen ein dTLB auf zweiter Ebene (STLB) vorhanden sein.
- Wenn eine Umsetzung für eine bestimmte virtuelle Adresse nicht in dem TLB vorhanden ist, tritt ein „Umsetzungs-Fehltreffer" auf und die Adreßumsetzung wird mit Hilfe allgemeinerer Mechanismen gelöst. Diese Verarbeitung wird fortgesetzt, bis eine Kontextumschaltung eintritt. Eine Kontextumschaltung kann eintreten, wenn ein Mehrprozeß-OS mit der Ausführung eines Prozesses (zum Beispiel einer Anwendung) aufhört und mit der Ausführung eines anderen beginnt. Wenn eine Kontextumschaltung eintritt, werden Seitentabellen, die ein Seitenverzeichnis und eine Seitentabelle für den neuen Prozeß aufweisen, geladen und der TLB und andere Pipelineressourcen müssen entleert werden. Entleert bedeutet, daß die Inhalte der Ressourcen gelöscht werden.
- Bestimmte Systeme können eine virtuelle Maschinen (VM)-Umgebung zum Einsatz bringen, in welcher eine virtuelle Maschinenüberwachung (VMM) einer anderen Software die Abstraktion einer oder mehrerer virtueller Maschinen bereitstellt. Jede VM kann als eine unabhängige Plattform fungieren, welche ihre eigenes „Gastbetriebssystem" (das heißt, ein OS, das von der VMM gehostet wird) und andere Software betreibt, die kollektiv als eine Gastsoftware (oder einfach als ein „Gast") bezeichnet wird. Die Gastsoftware nimmt an, daß sie betrieben wird, als ob sie auf einem zweckbestimmten Computer läuft und nicht auf einer virtuellen Maschine. Dementsprechend nimmt die Gastsoftware an, daß sie verschiedene Ereignisse steuert und zu Hardwareressourcen wie prozessorresidenten Ressourcen, Ressourcen, die in dem Speicher angeordnet sind, und Ressourcen, die auf der zugrundeliegenden Hardwareplattform angeordnet sind, Zugang hat.
- In einer virtuellen Maschinenumgebung hat die VMM im allgemeinen die endgültige Kontrolle über diese Ereignisse und Hardwareressourcen, um einen angemessenen Betrieb der Gastsoftware und Schutz vor und zwischen Gastsoftware bereitzustellen, die auf unterschiedlichen virtuellen Maschinen läuft. Um dies zu erreichen, erhält die VMM in der Regel die Steuerung (das heißt, führt eine Kontextumschaltung durch), wenn die Gastsoftware auf eine geschützte Ressource zugreift oder wenn andere Ereignisse (wie Unterbrechungen oder Ausnahmen) eintreten.
- Kontextumschaltungen in einer VM oder anderen Umgebung verursachen eine bedeutende Systemverwaltungszeit in modernen Mikroprozessoren. Diese Systemverwaltungszeit wird durch große TLBs auf zweiter Ebene verschärft, die bei jeder Kontextumschaltung entleert und neu geladen werden müssen. Folglich kann diese Systemverwaltungszeit die Leistung negativ beeinflussen, insbesondere in Systemen mit vielen aktiven Kontexten. Deshalb besteht ein Bedarf an einer effizienteren Verwaltung von Pipelineressourcen bei Kontextumschaltungen.
- Kurzbeschreibung der Zeichnungen
-
1 ist eine lineare Adreßumsetzung gemäß einer Ausführungsform der vorliegenden Erfindung. -
2 ist ein Blockdiagramm eines Abschnitts eines Systems gemäß einer Ausführungsform der vorliegenden Erfindung. -
3 ist ein Flußdiagramm eines Verfahrens gemäß einer Ausführungsform der vorliegenden Erfindung. -
4 ist ein Flußdiagramm eines Verfahrens gemäß einer anderen Ausführungsform der vorliegenden Erfindung. -
5 ist ein Flußdiagramm eines Verfahrens gemäß noch einer anderen Ausführungsform der vorliegenden Erfindung. -
6 ist ein Blockdiagramm eines repräsentativen Computersystems gemäß einer Ausführungsform der vorliegenden Erfindung. - Ausführliche Beschreibung
- In verschiedenen Ausführungsformen der vorliegenden Erfindung können Pipelineressourcen oder Strukturen wie TLBs, Ablaufverfolgungs-Caches (TC), Zweigvorhersageeinheits- (BPU)-Anordnungen, Minitags und dergleichen eine Vielzahl von Adreßräumen unterstützen. Wie hier verwendet, bezieht sich der Ausdruck „Adreßraum" auf einen Satz von Adressen im Speicher, die einer gegebenen Anwendung (zum Beispiel einem Kontext) entsprechen.
- In verschiedenen Ausführungsformen können die Adreßräume durch eine Kombination von Architektursteuerregistern gesteuert werden (zum Beispiel Steuerregister 3, das ein Seitenverzeichnis-Basisregister (CR3.PDBR), ein Cachedeaktivierungsbit auf Seitenebene (PCD), ein Durchschreibebit auf Seitenebene (PWT); Steuerregister 0, das ein Seitenwechselbit (CR0.PG) aufweist; ein Schutzaktivierungsbit (CR0.PE); Steuerregister 4, das ein Seitengrößenerweiterungsbit (CR4.PSE) und ein globales Seitenaktivierungsbit und ein physikalisches Adreßerweiterungsbit (CR4.PGE und PAE) aufweist, ein Langmodus-Adressierungsbit (EFER.LMA) mit erweitertem Merkmalsaktivierungsregister und ein Nichtausführungsbit (EFER.NXE)), um linear-physikalische Umsetzungen zu bestimmen oder zu beeinflussen.
- In verschiedenen Ausführungsformen können Adreßraumkennungen (ASIDs) benutzt werden, um lineare Adressen in verschiedenen Pipelineressourcen mit einem Zeiger zu dem Kontext zu vermehren, mit dem sie assoziiert sind. Wie hier verwendet, kann eine "Adreßraumkennung" jede beliebige Zahl, Code oder andere Notation sein, welche einen oder mehrere Adreßräume identifiziert, mit denen sie assoziiert ist. In einer Ausführungsform können ASIDs mit Hilfe einer Zweibit-ASID (das heißt, vier Adreßraumkontexte) pro Faden umgesetzt werden, obwohl der Schutzbereich der vorliegenden Erfindung nicht darauf beschränkt ist. Dies ermöglicht einer Vielzahl von Anwendungskontexten, Pipelinestrukturen gemeinsam zu benutzen, wodurch die Kontextumschaltungs-Systemverwaltungszeit verringert wird. Wenn zum Beispiel eine Kontextumschaltung auftritt, kann der derzeitige ASID-Wert verändert werden und die Pipelinestrukturen werden nicht entleert. In ähnlicher Weise kann in einer bestimmten Ausführungsform eine Fadenkennung (Faden-ID) bereitgestellt werden, um einen gegebenen Prozessorfaden für einen entsprechenden Adreßraum zu identifizieren.
- Verschiedene Architekturereignisse können eine selektive Entleerung der TLBs gemäß Ausführungsformen der vorliegenden Erfindung bewirken. Diese Ereignisse weisen zum Beispiel einen Befehl Übertragen an CR3 (MOV-to-CR3); Verändern von CR0-Seitenmodusbits; CR0.PE und CR0.PG und EFER.LMA; Verändern von CR4-Seitenmodusbits; VM-Eingang/-Ausgang; und eine 32-Bit-Kontextumschaltung (falls die Seitenmodusbits in CR0 oder CR4 verändert werden) auf. In bestimmten Ausführungsformen können ein MOV-to-CR3-Vorgang oder ein VMEntry-/VMExit-Ereignis die ASID verändern/erhöhen.
- Viele Pipelinestrukturen sind linear markiert oder indexiert. In verschiedenen Ausführungsformen können ASIDs die lineare Adresse in diesen Pipelineressourcen mit einem Zeiger auf den entsprechenden Adreßraum erhöhen. In solchen Ausführungsformen kann der Mikroprozessor ein derzeitiges globales ASID-Register verwalten, das aktualisiert wird, wenn ein neuer Adreßraum geschaffen wird oder wenn zu einem anderen, vorher gesehenen Adreßraum gewechselt wird. TLB-Einfügungen können mit dem derzeitigen ASID-Wert erweitert werden und TLB-Durchsuchungen stimmen nur dann überein, wenn der ASID-Tag mit dem derzeitigen ASID-Wert übereinstimmt. Wenn eine Kontextumschaltung (zum Beispiel ein MOV-to-CR3 oder VM-Eingang/-Ausgang) einen Adreßraumwechsel auslöst, kann der Mikroprozessor zu einem anderen ASID-Wert umschalten, der für den neuen Adreßraum steht, statt die TLBs und andere Pipelinestrukturen zu entleeren. In bestimmten Ausführungsformen kann entweder kein Entleeren von Einträgen oder ein selektives Entleeren einiger oder aller Einträge, die einem spezifischen Adreßraum entsprechen, eine wesentliche Leistungssteigerung für Umgebungen mit Mehrfachkontexten bereitstellen.
- Mit Bezug auf
1 ist eine lineare Adreßumsetzung gemäß einer Ausführungsform der vorliegenden Erfindung dargestellt, welche 64-Bit-Adreßumsetzungen unterbringt. Wie in1 dargestellt, kann eine Seite in einem Speicher240 mit Hilfe einer linearen Adresse300 adressiert werden. Wie dargestellt, weist die lineare Adresse300 eine Anzahl von Feldern auf, um eine Seitenwechselstruktur auf Ebene vier zu indexieren, um auf eine physikalische Adresse in dem Speicher240 zuzugreifen. Ein Versatzfeld (Bits 0 bis 11) wird benutzt, um die physikalische Adresse innerhalb einer Seite des Speichers240 zu adressieren. Ein Seitentabelleneintrag (Bits 12 bis 20) adressiert einen Seitentabelleneintrag in einer Seitentabelle (PT)310 . Ein Seitenverzeichniseintrag (Bits 21 bis 29) adressiert einen Seitenverzeichniseintrag in einem Seitenverzeichnis (PD)320 . Ein Seitenverzeichniszeiger (Bits 30 bis 38) adressiert einen Seitenverzeichniszeiger-Eintrag in einer Seitenverzeichniszeiger-Tabelle (PDPT)330 . Schließlich adressiert ein Seitenabbildungszeiger auf Ebene vier (PML4) (Bits 39 bis 47) einen PML4-Eintrag in einem PML4340 . Auf die Basis von PML4340 kann mit Hilfe eines Zeigers in CR3 zugegriffen werden. Auf diese Weise kann eine lineare 64-Bit-Adresse benutzt werden, um eine Seitenwechselstruktur auf Ebene vier umzusetzen, um auf eine physikalische Adresse zuzugreifen. - In verschiedenen Ausführungsformen kann ein TLB gemäß einer Ausführungsform physikalische Adressen (Tag-Adressen) und assoziierte gültige Faden-ID- und ASID-Bits zusammen mit entsprechenden linearen und physikalischen Adressen aufweisen. TLB-Einträge weisen ein ASID-Feld in ihrem Tag auf, das den Adreßraum anzeigt, dem sie entsprechen.
- Dieses ASID-Feld enthält den Wert der derzeitigen ASID, wenn dieser TLB-Eintrag geladen wurde. Da sich ein ASID-Feld in dem Tag der TLB-Einträge befindet, wird ein TLB-Eintrag nur dann getroffen, wenn der derzeitige ASID-Wert mit dem ASID-Feld in diesem TLB-Eintrag übereinstimmt.
- Bei einem Adreßraumwechsel (das heißt, Kontextumschaltung) kann ein Mikrocode Information über den derzeitigen Adreßraum/ASID (CR3-, CR0- und CR4-Seitenwechselbits, LMA) in einem Notizblockspeicher speichern und kann den neuen Adreßraum mit der gespeicherten Adreßrauminformation jeder ASID vergleichen. Wenn kein gespeicherter Adreßraum/ASID mit dem neuen Adreßraum übereinstimmt, ist der Adreßraum vorher noch nicht angezeigt worden. Folglich weist der Mikrocode entweder eine neue ASID für diesen Adreßraum zu oder wählt eine existierende ASID aus, um diese zum Beispiel durch ein Seitenverdrängungsregelwerk (least recently used = LRU) zu ersetzen. In letzterem Fall kann der Mikrocode TLB-Einträge für die LRU-ASID entleeren.
- Mit Bezug auf
2 ist ein Blockdiagramm eines Abschnitts eines Systems gemäß einer Ausführungsform der vorliegenden Erfindung dargestellt. Wie in2 dargestellt, weist das System10 einen Systemspeicher20 und verschiedene Softwareentitäten auf, einschließlich einer ersten Gastsoftware (das heißt, eines ersten Gastes)30 , einer zweiten Gastsoftware (das heißt, eines zweiten Gastes)40 und einer virtuellen Maschinenerweiterungs (VMX)-Überwachung50 . In einer Ausführungsform kann der Systemspeicher20 sowohl Code als auch Daten aufweisen und kann zum Beispiel aus einem dynamischen Direktzugangsspeicher (DRAM) gebildet sein. - In der Ausführungsform aus
2 kann die VMX-Überwachung50 einer anderen Software (zum Beispiel der Gastsoftware) die Abstraktion einer oder mehrerer virtueller Maschinen bereitstellen. Die VMX-Überwachung50 kann den verschiedenen Gästen die gleichen oder unterschiedliche Abstraktionen bereitstellen. Die Gastsoftware, die auf jeder VM läuft, kann ein Gast-OS und verschiedene Gastsoftwareanwendungen aufweisen. Das Gast-OS und Softwareanwendungen werden hierin kollektiv als Gastsoftware bezeichnet. Die Gastsoftware nimmt an, daß sie auf physikalische Ressourcen (zum Beispiel Prozessorregister, Speicher und Eingabe-/Ausgabe (I/O)-Vorrichtungen) innerhalb der VMs zugreift, auf denen die Gastsoftware läuft. Die VMX-Überwachung50 kann den Zugang zu Ressourcen gewähren, die von der Gastsoftware erwünscht werden, und gleichzeitig die endgültige Kontrolle über Ressourcen innerhalb der Plattformhardware behalten. - In einer Ausführungsform können Kriterien (Steuertransferkriterien und/oder Fehlerkriterien) mittels Daten definiert werden, die in einem oder mehreren bezeichneten Feldern in der Steuerstruktur einer virtuellen Maschine (VMCS) (in
2 nicht spezifisch dargestellt) gespeichert sind. Zum Beispiel kann die VMCS den Status der Gastsoftware und Information zur Steuerung des Betriebs davon speichern. Die VMCS kann sich in dem Speicher20 befinden und kann von einem Prozessor verwaltet werden. Man muß verstehen, daß jede beliebige andere Datenstruktur (zum Beispiel ein Cache-auf-einem-Chip, eine Datei, eine Nachschlagtabelle usw.) benutzt werden kann, um die Information zu speichern, die in der VMCS gespeichert ist. - Wenn die Transferkriterien in einer Ausführungsform bestimmen, daß ein derzeitiges Ereignis von der VMX-Überwachung
50 verarbeitet werden muß, wird die Steuerung an die VMX-Überwachung50 übertragen. Die VMX-Überwachung50 kann das Ereignis verarbeiten und die Steuerung zurück an die Gastsoftware übertragen. Der Transfer der Steuerung von einer VMM oder einer VMX-Überwachung an eine Gastsoftware wird hierin als ein VM-Eingang bezeichnet und der Transfer der Steuerung von der Gastsoftware zu der VMM oder der VMX-Überwachung wird hierin als ein VM-Ausgang bezeichnet. - Wie in
2 dargestellt, kann der Speicher20 eine erste Seite35 , auf welche mit Hilfe eines Seitentabelleneintrags (PTE) für die Gastsoftware30 zugegriffen werden kann, und eine zweite Seite45 aufweisen, auf die mittels eines PTEs für die zweite Gastsoftware40 zugegriffen werden kann. Das heißt, die erste Seite35 und die zweite Seite45 können Code und/oder Daten enthalten, die jeweils dem ersten Gast30 und dem zweiten Gast40 entsprechen. In der Ausführungsform aus2 kann der Speicher20 einem physikalischen Adreßraum entsprechen, der sowohl Code als auch Daten aufweist, und die Adressen, die den ASIDs der Gastsoftware30 und der Gastsoftware40 entsprechen, können den linearen Adressen (oder einem Teil davon) entsprechen, die zum Zeigen auf den physikalischen Adreßraum benutzt werden. - Noch immer mit Bezug auf
2 weist der erste Gast30 einen ersten ASID-Wert (das heißt, ASID = 1) auf und weist darüber hinaus einen CR3-Wert auf, der dem ersten Adreßraum entspricht. Auch weist der zweite Gast40 einen zweiten ASID-Wert (das heißt, ASID = 2) auf und weist ferner einen damit assoziierten CR3-Wert auf. - Eine VMX-Überwachung, welche die Ausführung der ersten Gastsoftware
30 und der zweiten Gastsoftware40 steuert, kann auch einen damit assoziierten ASID-Wert aufweisen. Zum Beispiel kann die VMX-Überwachung50 , wie in der Ausführungsform aus2 dargestellt, einen damit assoziierten ASID-Wert von drei aufweisen. - Wie in
2 dargestellt, kann ein MOV-to-CR3-Befehl ausgeführt werden, um eine Kontextumschaltung zu verursachen, wie durch den Pfeil55 dargestellt ist. Darüber hinaus kann die VMX-Überwachung50 den Betrieb der Gastsoftware durch Bewirken eines VM-Ausgangs steuern, der durch das Bezugszeichen60 dargestellt ist, was den Ausgang aus einem derzeit ausgeführten Gast bewirkt, um die Steuerung zurück an die VMX-Überwachung50 zu übertragen. In ähnlicher Weise kann die VMX-Überwachung50 die Initiierung oder Wideraufnahme eines Gastes bewirken, indem ein VM-Eingang (durch das Bezugszeichen70 in2 dargestellt) ausgeführt wird. - In verschiedenen Ausführungsformen können VMX-Architekturverbesserungen einer VMX-Überwachung ermöglichen, das Entleeren von TLBs oder anderen ähnlichen Prozessorressourcen bei Kontextumschaltungen und VMX-Übergängen durch Verwendung von ASIDs zu vermeiden. In verschiedenen Ausführungsformen wird weder eine explizite ASID-Verwaltung in Software noch eine Hardware benötigt, um eine Adreßraum-Querkontamination zu erkennen.
- In verschiedenen Ausführungsformen können bei Ereignissen wie denjenigen aus
2 , einschließlich einer Kontextumschaltung, die mittels eines MOV-to-CR3-Befehls, eines VM-Ausgangs oder eines VM-Eingangs ausgeführt wird, Entleerungen von TLBs und anderen Prozessorressourcen vermieden werden, wodurch die Leistungsfähigkeit verbessert wird und die Systemverwaltungszeit bei solchen Kontextumschaltungen und anderen Architekturereignissen verringert wird. - In bestimmen Ausführungsformen werden Seiten innerhalb eines Systemspeichers
20 oder andere im Cache zwischengespeicherte Seiten folglich durch die VMX-Überwachung50 quer über alle Adreßräume geschützt, so daß jede versuchte Speicherung in solchen Seiten einen VMX-Ausgang von der Gastsoftware bewirken kann, welche solch eine Speicherung initiiert. Bei solch einem Ereignis kann die VMX-Überwachung50 bewirken, daß die Adresse(n), welche solchen Speichervorgängen entsprechen, in allen TLBs und anderen Prozessorressourcen annulliert werden. - In verschiedenen Ausführungsformen kann ein Prozessor bestimmte Ereignisse, Befehle und VMX-Übergänge unterschiedlich verarbeiten. Solche unterschiedlichen Umsetzungen der verschiedenen Befehle und Ereignisse können in einem Prozessormikrocode ausgeführt werden. Zum Beispiel kann bei einem MOV-to-CR3-Befehl in einem Gast, einem VM-Ausgang oder einem VM-Eingang ein Prozessor nach einer existierenden ASID suchen, welche mit dem neuen Adreßraum übereinstimmt. Solch eine Bestimmung kann durch Vergleichen einer ASID des neuen Adreßraums mit einer Liste von ASIDs vorgenommen werden, die von dem Prozessor verwaltet wird. Wenn eine Übereinstimmung existiert, macht der Prozessor diese ASID zu der derzeitigen ASID, ohne TLB-Einträge zu entleeren. Anderenfalls werden alle TLB-Einträge, welche in einer Ausführungsform der LRU-ASID entsprechen, entleert und der ASID-Wert der LRU-ASID wird zu der derzeitigen ASID gemacht. Die TLB-Einträge aus dem vorherigen Adreßraum können beibehalten werden, wenn diese ASID nicht entleert wurde.
- Im Gegensatz dazu kann ein Befehl, der einen TLB-Eintrag für eine spezifische Seite (zum Beispiel ein INVLPG-Befehl) annulliert, anders verarbeitet werden. Zum Beispiel kann in einer Ausführungsform auf solch einen Befehl hin ein linearer Adreßraum in allen TLBs annulliert werden. Wieder andere Vorgänge können bei anderen Befehlen auftreten. Zum Beispiel kann in einer Ausführungsform ein MOV-to-CR4-Befehl, der keine Veränderung des CR4-Wertes erkennt, alle TLB-Einträge in jeder ASID-Kennung annullieren.
- Mit Bezug auf
3 ist ein Flußdiagramm eines Verfahrens gemäß einer Ausführungsform der vorliegenden Erfindung dargestellt. Das Verfahren100 kann angewendet werden, um zwischen unterschiedlichen Kontexten innerhalb eines Prozessors umzuschalten. Wie in3 dargestellt, kann zwischen einem ersten und einem zweiten Adreßraum eine Schaltung eintreten (Block110 ). Wenngleich in3 nicht dargestellt, kann der erste Adreßraum vor solch einer Schaltung in einem Steuerregister (oder einem anderen. Speicher) gespeichert werden, das der derzeitigen Adreßraumkennung entspricht. In anderen Ausführungsformen kann solch eine Speicherung zu anderen Zeitpunkten eintreten. - Die Adreßraumumschaltung kann einem VM-Ausgang oder einem VM-Eingang entsprechen oder kann durch einen MOV-to-CR3-Befehl oder ein anderes solches Ereignis verursacht werden. Danach kann bestimmt werden, ob der zweite Adreßraum in einer ASID-Liste (Raute
120 ) existiert. Solch eine Liste kann von einem Prozessor verwaltet werden, um unterschiedliche aktive Adreßräume, diesbezügliche Stellen in linearen Adreßräumen und wahlweise andere Information zu identifizieren. Zum Beispiel kann die ASID-Liste ein Notizblockspeicher in dem Prozessor sein. - Wenn der zweite Adreßraum in der ASID-Liste vorhanden ist, kann die Steuerung zu Block
130 übergehen, bei dem der erste Adreßraum verwaltet werden kann, einschließlich sämtlicher Einträge innerhalb der TLBs, welche dem ersten Adreßraum entsprechen. Darüber hinaus kann die zweite ASID in einem Steuerregister des Prozessors (zum Beispiel einem derzeitigen ASID-Register) (oder anderer Speicherstelle) gespeichert werden, um anzuzeigen, daß der zweite Adreßraum (das heißt, der in der Raute120 zu findende Adreßraum) der derzeit ausgeführte Adreßraum innerhalb des Prozessors (Block135 ) ist. - Falls statt dessen an der Raute
120 bestimmt wird, daß der zweite Adreßraum nicht in der ASID-Liste vorhanden ist, kann als Nächstes bestimmt werden, ob die ASID-Liste voll ist (Raute140 ). Wenn die Liste nicht voll ist, kann die Steuerung zu Block145 übergehen, bei dem der erste Adreßraum verwaltet werden kann, einschließlich sämtlicher Einträge innerhalb der TLBs, welche dem ersten Adreßraum entsprechen. Darüber hinaus kann die zweite ASID in einem Steuerregister des Prozessors (zum Beispiel einem derzeitigen ASID-Register oder einer anderen Speicherstelle) gespeichert werden, um anzuzeigen, daß der zweite Adreßraum (das heißt, ein leerer Adreßraum oder der freigemachte Adreßraum aus Block160 , wie unten erläutert) der derzeit ausgeführte Adreßraum innerhalb des Prozessors (Block150 ) ist. - Falls an der Raute
140 statt dessen bestimmt wird, daß die ASID-Liste voll ist, können Einträge innerhalb der TLBs, die einem LRU-Eintrag in der ASID-Liste entsprechen, entleert werden (Raute160 ). Danach kann die Steuerung zur weiteren Verarbeitung wie oben erläutert, zu Block145 weitergehen, wobei die zweite ASID in dem LRU-Eintrag gespeichert werden kann. Dementsprechend werden TLB-Einträge und andere Ressourcen, die mit der zweiten ASID in Verbindung stehen, aktiviert. - Wenngleich in der Ausführungsform aus
3 die Verwendung eines LRU-Regelwerks zum Entleeren von TLB-Einträgen benutzt wird, muß man verstehen, daß in anderen Ausführungsformen andere Regelwerke oder Mechanismen benutzt werden können, um einen angemessenen Adreßraum zum Entleeren zu bestimmen, wenn eine ASID-Liste voll ist. - In bestimmten Ausführungsformen können je nach der Ursache für eine Adreßraumumschaltung bestimmte Einträge innerhalb der TLBs oder andere Prozessorressourcen mit Hilfe einer Software entleert werden. Wie oben erläutert, wenn zum Beispiel eine versuchte Speicherung in einer geschützten Seite einen VM-Ausgang verursacht, werden Adressen innerhalb der TLBs entleert, welche dem geschützten Raum entsprechen. Das heißt, in verschiedenen Umsetzungen einer VMX-Architektur schützt eine VMX-Überwachung jede Seitenwechselhierarchie. In einer Virtualisierungsumgebung kann eine Software benutzt werden, um einen TLB oder eine andere Ressource, wie von einem Gast vorgeschrieben, entleert werden. Dann entleeren bestimmte Ereignisse, die von dem Gast unternommen werden (zum Beispiel ein MOV-to-CR3-Befehl) die Ressourcen nicht, da die Virtualisierungssoftware die Entleerungsaktivitäten wie hierin beschrieben verarbeitet. Wenn folglich ein Speicherbefehl einen TLB-Eintrag, der von einem CR3 benutzt wird, in einen CR3-Zielwert modifiziert, tritt ein VM-Ausgang ein.
- Bei durchscheinenden ASIDs kann die Software gemäß einer Ausführungsform der vorliegenden Erfindung nach solch einem VM-Ausgang alle TLB-Einträge, die dem Speicherbefehl entsprechen, der den VM-Ausgang verursacht hat, entleeren, sogar wenn der TLB-Eintrag zum Zeitpunkt des VM-Ausgangs nicht von dem Gast benutzt wurde. Wenn die Software in solch einer Ausführungsform einen einzelnen Eintrag entleeren möchte, kann die Software einen TNVLPG-Befehl mit einer linearen Adresse ausführen, welche diesem TLB-Eintrag in dem angemessenen Adreßraum entspricht. Bei solch einem von einer Software aufgerufenen INVLPG-Befehl kann der Prozessor sämtliche TLB-Einträge entleeren, welche dieser linearen Adresse entsprechen, ungeachtet ihrer ASID. Wenngleich die Umsetzung mittels eines INVLPG-Befehls beschrieben ist, können in anderen Ausführungsformen andere Befehle oder Vorgänge solche Einträge entleeren.
- Mit Bezug auf
4 ist ein Flußdiagramm eines Verfahrens gemäß einer Ausführungsform der vorliegenden Erfindung dargestellt. Genauer zeigt4 ein Verfahren200 zum Entleeren bestimmter Einträge innerhalb eines TLB. Solch ein Verfahren kann in einer VM-Umgebung ausgeführt werden und bei einem VM-Ausgang initiiert werden. Wie in4 dargestellt, kann das Verfahren200 durch Bestimmen der Ursache eines VM-Ausgangs (Block210 ) beginnen. Zum Beispiel kann in einer Ausführungsform ein letzter Vorgang vor einem VM-Ausgang analysiert werden, um zu bestimmen, ob eine Speicherung oder ein anderer Speichervorgang bezüglich eines geschützten Speicherraums den VM-Ausgang bewirkt hat. Natürlich kann es viele andere Gründe für das Eintreten eines VM-Ausgangs geben. - Dann kann bei Raute
220 bestimmt werden, ob ein Speichervorgang versucht hat, einen geschützten Eintrag wie einen geschützten TLB-Eintrag (der zum Beispiel einem anderen Adreßraum entspricht) zu modifizieren. Falls nicht, kann die normale Ausführung der VMX-Überwachung fortgesetzt werden (Block230 ). Solche eine Ausführung kann je nach den Programmbefehlen viele Formen annehmen. Nach solch einer Ausführung kann die Steuerung gegebenenfalls an den Gast zurückgegeben werden. - Wenn statt dessen bestimmt wird, daß eine Speicherung versucht hat, einen geschützten Eintrag zu modifizieren, kann die VMX-Überwachung den Speichervorgang (Block
235 ) ausführen, da sie Zugang zu der geschützten Stelle hat, was bei dem Gast nicht der Fall ist. Dann können alle TLB-Einträge, die der Speicheradresse entsprechen, aus allen TLBs und anderen Prozessorressourcen entleert werden (Block240 ). Ein VM-Eingang kann dann die Steuerung zur weiteren Ausführung an den Gast zurückgeben (Block245 ). Solch eine Ausführung kann zum Beispiel bei einem nächsten Befehl des Gastes fortgesetzt werden. - In wieder anderen Ausführungsformen kann gewünscht werden, alle Einträge innerhalb aller TLBs zu entleeren. Wenn zum Beispiel Seitenwechselmechanismen auf höherer Ebene modifiziert worden sind, kann solch eine Entleerung gewünscht werden, um die TLBs zu löschen oder einen Adreßraum aus den TLBs zu entfernen, wenn eine VMX-Überwachung diesen nicht mehr schützt. Wenn die Software in einer Ausführungsform einen gesamten TLB für einen Adreßraum entleeren möchte, kann die Software einen MOV-to-CR4-Befehl mit exakt dem gleichen Wert ausführen, der dort bereits gespeichert ist. Wenn der Prozessor solch einen CR4-Schreibvorgang sieht, kann er alle TLBs für alle ASIDs entleeren, da die Software nicht angibt, welche ASID entleert werden muß. In verschiedenen Ausführungsformen kann die Software einen gesamten TLB für einen Adreßraum entleeren, falls ein PDB-(oder höherer) Eintrag verändert wurde oder falls ein CR3 von dem CR3-Zielwert entfernt wird und die Überwachung diesen nicht mehr schützt.
- Mit Bezug auf
5 ist ein Flußdiagramm eines anderen Verfahrens gemäß einer Ausführungsform der vorliegenden Erfindung dargestellt. Spezifisch kann das Verfahren250 angewendet werden, um alle TLBs für alle ASIDs zu entleeren. Wie in5 dargestellt, kann solch ein Verfahren mit dem Empfangen eines MOV-to-CR4-Befehls (Oval255 ) beginnen. Bei Erhalt solch eines Befehls kann ein Prozessor bestimmen, ob der neue CR4-Wert der gleiche ist wie sein vorheriger Wert (Raute260 ). Falls der neue Adreßwert nicht der gleiche ist, können ein normaler CR4-Vorgang oder CR4-Vorgänge ausgeführt werden (Block270 ). Solche Vorgänge können basierend auf dem Zustand der verschiedenen Bits in dem CR4 variieren. Zum Beispiel können basierend auf den Bitzuständen Prozessorressourcen wie TLBs entleert werden und eine andere Verarbeitung kann eintreten. Zum Beispiel können CR4-Übergänge, welche Daten verändern, bewirken, daß Einträge in mindestens einem derzeitigen TLB entleert werden. Darüber hinaus kann solch ein CR4-Übergang einen Wechsel der Adreßräume erfordern. Solch ein Adreßraumwechsel kann in ähnlicher Weise ausgeführt werden wie oben mit Bezug auf3 beschrieben. - Falls statt dessen bestimmt wird, daß der neue Wert der gleiche ist wie der vorherige Wert, kann dies ein Flag sein, um anzuzeigen, daß eine VMX-Überwachung oder eine andere Entität alle TLBs entleeren möchte. Wie oben beschrieben, kann es verschiedene Gründe für das Entleeren aller TLBs geben. Dementsprechend können bei Block
280 alle TLBs für alle ASIDs entleert werden. Schließlich kann die Ausführung in dem gleichen (das heißt, ursprünglichen) Adreßraum (Block290 ) (zum Beispiel bei einem nächsten Befehl) fortgesetzt werden. - Wenngleich die Ausführung in der Ausführungsform aus
5 bezüglich eines MOV-to-CR4-Befehls beschrieben ist, muß man verstehen, daß in anderen Ausführungsformen andere Befehle oder Vorgänge als ein Flag benutzt werden können, um anzuzeigen, daß eine VMX-Überwachung oder eine andere Entität alle TLBs entleeren möchte. Wenngleich diese besondere Ausführung mit Bezug auf5 beschrieben ist, kann in anderen Ausführungsformen ferner jeder beliebige ausgewählte Wert, der aus einem vorbestimmten Befehl folgt, analysiert werden, um zu bestimmen, ob sich der Wert verändert hat. Falls nicht, kann in einer oder in mehreren Prozessorressourcen eine gewünschte Maßnahme ergriffen werden. - Mit Bezug auf
6 ist ein Blockdiagramm eines repräsentativen Computersystems400 gemäß einer Ausführungsform der vorliegenden Erfindung dargestellt. Wie in6 dargestellt, weist das Computersystem400 einen Prozessor401 auf. Der Prozessor401 kann in einer Ausführungsform über einen Vorderseitenbus420 mit einem Speicherknotenpunkt430 verbunden sein, der mit einem gemeinsam benutzten Hauptspeicher440 über einen Speicherbus verbunden ist. Wie in6 dargestellt, kann der Prozessor401 einen TLB403 und eine ASID-Liste405 gemäß einer Ausführungsform der vorliegenden Erfindung aufweisen. Darüber hinaus kann ein Cache auf Ebene 2 (L2)407 mit dem Prozessor401 verbunden sein. - Der Speicherknotenpunkt
430 kann (über eine Knotenpunktverknüpfung) mit einem I/O-Knotenpunkt435 verbunden sein, der mit einem I/O-Erweiterungsbus455 und einem peripheren Bus450 verbunden ist. In verschiedenen Ausführungsformen kann ein I/O-Erweiterungsbus455 mit verschiedenen I/O-Vorrichtungen wie einer Tastatur und Maus, unter anderen Vorrichtungen, verbunden sein. Der periphere Bus450 kann mit verschiedenen Komponenten wie einer peripheren Vorrichtung470 verbunden sein, die eine Speichervorrichtung wie einen Flashspeicher, eine Erweiterungskarte und dergleichen sein kann. Obwohl die Beschreibung auf spezifische Komponenten des Systems400 Bezug nimmt, sind zahlreiche Modifikationen der dargestellten Ausführungsformen möglich. - Die Ausführungsformen können in einem Computerprogramm, das auf einem Speichermedium mit Befehlen zum Programmieren eines Computersystems gespeichert sein kann, umgesetzt werden, um die Ausführungsformen auszuführen. Das Speichermedium kann aufweisen, ist jedoch nicht beschränkt auf jede beliebige Art Plattenspeicher, einschließlich Disketten, optischen Platten, Kompaktplatten-Nurlesespeicher (CD-ROMs), wiederbeschreibbare Kompaktplattenspeicher (CD-RWs) und magneto-optische Plattenspeicher, Halbleitervorrichtungen wie Nurlesespeicher (ROMs), Direktzugriffsspeicher (RAMs) wie dynamische und statische RAMs, löschbare programmierbare Nurlesespeicher (EPROMs), elektrisch löschbare programmierbare Nurlesespeicher (EEPROMs), Flashspeicher, magnetische oder optische Karten oder jede beliebige andere Art geeigneter Medien zum Speichern elektronischer Befehle. Andere Ausführungsformen können als Softwaremodule umgesetzt werden, die von einer programmierbaren Steuervorrichtung ausgeführt werden.
- Da die Software den Prozessor beim Schützen und Annullieren von TLB-Einträgen unterstützt, können TLB-Einträge in verschiedenen Ausführungsformen bei Kontextumschaltungen (zum Beispiel MOV-to-CR3, VM-Ausgang und VM-Eingang) verwaltet werden. Folglich wird in verschiedenen Ausführungsformen keine TLB-Schnüffelhardware benötigt, wodurch die TLB-Schnüffelkapazität oder andere Einschränkungen vermieden werden.
- In anderen Ausführungsformen können durchscheinende ASIDs mit jeder beliebigen Architektur benutzt werden, die Seitentabellen enthält und den verschiedenen Adreßräumen ausdrücklich keine IDs zuweist, sondern erfordert, daß der Prozessor eine besondere Maßnahme ergreift, um TLB-Einträge nach dem Modifizieren von Seitentabellen zu entleeren, selbst wenn dieser TLB-Eintrag derzeit nicht von dem derzeitigen Adreßraum benutzt wird.
- Dementsprechend kann ein Prozessor in verschiedenen Ausführungsformen ASIDs unterstützen und TLB-Entleerungen (zum Beispiel bei Kontextumschaltungen) vermeiden, ohne entweder eine spezialisierte Hardware zum Erkennen von Adreßraum-Querkontamination oder eine explizite Softwaresteuerung und ASID-Zuweisung zu benutzen.
- Wenngleich die vorliegende Erfindung mit Bezug auf eine beschränkte Anzahl von Ausführungsformen beschrieben worden ist, wird der Fachmann zahlreiche Modifikationen und Variationen davon zu schätzen wissen. Die angehängten Ansprüche sollen all solche Modifikationen und Variationen abdecken, die innerhalb des wahren Geistes und Schutzbereichs der vorliegenden Erfindung fallen.
- Zusammenfassung
- In einer Ausführungsform der vorliegenden Erfindung weist ein Verfahren das Schalten zwischen einem ersten Adreßraum und einem zweiten Adreßraum; das Bestimmen, ob der zweite Adreßraum in einer Liste von Adreßräumen existiert; und das Verwalten von Einträgen des ersten Adreßraums in einem Umsetzungspuffer nach dem Schalten auf. Auf diese Weise kann die Systemverwaltungszeit, die mit solch einer Kontextumschaltung assoziiert wird, verringert werden.
Claims (32)
- Verfahren, das umfaßt: Schalten zwischen einem ersten Adreßraum und einem zweiten Adreßraum; Bestimmen, ob der zweite Adreßraum in einer Liste von Adreßräumen existiert; und Verwalten von Einträgen des ersten Adreßraums in einem Umsetzungspuffer nach dem Schalten.
- Verfahren nach Anspruch 1, das ferner ein Erhalten einer Adreßraumkennung, die dem zweiten Adreßraum aus der Liste entspricht, und ein Speichern der Adreßraumkennung in einem Steuerregister umfaßt.
- Verfahren nach Anspruch 1, das ferner ein Entleeren von Einträgen eines ausgewählten Adreßraums in dem Umsetzungspuffer, falls der zweite Adreßraum in der Liste von Adreßräumen nicht existiert, umfaßt.
- Verfahren nach Anspruch 1, das ferner ein Bestimmen, ob eine Speicherung in eine geschützte Stelle das Schalten bewirkt hat, umfaßt.
- Verfahren nach Anspruch 4, das ferner ein Entleeren von Einträgen umfaßt, die der geschützten Stelle entsprechen, aus dem Umsetzungspuffer, falls die Speicherung das Schalten bewirkt hat.
- Verfahren nach Anspruch 5, wobei das Entleeren der Einträge, die der geschützten Stelle entsprechen, das Annullieren einer linearen Adresse in dem Umsetzungspuffer mittels eines Eintragsannullierungsbefehls umfaßt.
- Verfahren nach Anspruch 1, wobei der erste Adreßraum eine Gastsoftware umfaßt und der zweite Adreßraum eine virtuelle Maschinenüberwachung umfaßt.
- Verfahren nach Anspruch 7, das ferner ein Verwalten der Einträge auf einem virtuellen Maschinenausgangsbetriebe umfaßt.
- Verfahren nach Anspruch 1, wobei der erste Adreßraum eine virtuelle Maschinenüberwachung umfaßt und der zweite Adreßraum eine Gastsoftware umfaßt.
- Verfahren nach Anspruch 9, das ferner ein Verwalten der Einträge auf einem virtuellen Maschineneingangsbetrieb umfaßt.
- Verfahren, das umfaßt: Schalten zwischen einer Gastsoftware und einer virtuellen Maschinenüberwachung; Bestimmen, ob eine Speicherung in einer geschützten Stelle das Schalten bewirkt hat; und selektives Entleeren mindestens eines Eintrags einer Prozessorressource, welcher der geschützten Stelle entspricht, und gleichzeitiges Verwalten anderer Einträge der Prozessorressource, die der Gastsoftware entsprechen.
- Verfahren nach Anspruch 11, das ferner ein Entleeren von Seiteneinträgen eines ausgewählten Adreßraums in der Prozessorressource, falls eine Adreßraumkennung, welche der virtuellen Maschinenüberwachung entspricht, in einer Liste von Adreßräumen nicht existiert, umfaßt.
- Verfahren nach Anspruch 11, das ferner ein Benutzen eines Eintragsannullierungsbefehls, um den mindestens einen Eintrag selektiv zu entleeren, umfaßt.
- Verfahren nach Anspruch 11, wobei das Schalten durch einen Steuerregisterübertragungs-Befehl bewirkt wird.
- Verfahren nach Anspruch 11, wobei das selektive Entleeren des mindestens einen Eintrags das Entleeren mindestens eines Eintrags umfaßt, der von einem derzeitigen Adreßraum nicht benutzt wird.
- Verfahren nach Anspruch 11, das ferner ein Benutzen eines Mikrocodes umfaßt, um die Verwaltung der anderen Einträge zu aktivieren.
- Verfahren, das umfaßt: Bestimmen, ob ein vorbestimmter Befehl einen ausgewählten Wert nicht modifiziert; und Ergreifen einer Maßnahme auf einem Prozessor, falls der ausgewählte Wert nicht derart modifiziert wird.
- Verfahren nach Anspruch 17, das ferner ein Entleeren aller Einträge in allen Adreßräumen der Prozessorressource, umfaßt.
- Verfahren nach Anspruch 17, wobei der vorbestimmte Befehl einen Übertragen-an-Steuerregister-Befehl umfaßt.
- Verfahren nach Anspruch 17, wobei der ausgewählte Wert einen Steuerregisterwert umfaßt.
- Verfahren nach Anspruch 17, wobei das Ergreifen einer Maßnahme das Entleeren mindestens eines Adreßumsetzungspuffers umfasst.
- Vorrichtung, die umfaßt: eine Prozessorressource mit Einträgen eines ersten und eines zweiten Adreßraums, wobei der erste und der zweite Adreßraum einer jeweiligen ersten und zweiten Adreßraumkennung entsprechen, und eine Ausführungsmaschine, die mit der Prozessorressource verbunden ist, um mindestens einen Teil der Einträge des ersten Adreßraums nach einer Kontextumschaltung zu dem zweiten Adreßraum zu verwalten.
- Vorrichtung nach Anspruch 22, die ferner einen Adreßraumpuffer, der mit der Prozessorressource verbunden ist, um die erste und die zweite Adreßraumkennung den Einträgen bereitzustellen, umfaßt.
- Vorrichtung nach Anspruch 22, wobei die Ausführungsmaschine so ausgebildet ist, daß sie einen Mikrocode ausführt, um Einträge des ersten Adreßraums selektiv zu entleeren, falls eine Speicherung in einer geschützten Stelle die Kontextumschaltung bewirkt hat.
- Vorrichtung nach Anspruch 22, wobei die Prozessorressource einen Adreßumsetzungspuffer umfaßt.
- System, das umfaßt: einen Prozessor, der eine Prozessorressource mit Einträgen eines ersten und eines zweiten Adreßraums, wobei der erste und der zweite Adreßraum jeweils einer ersten und einer zweiten Adreßraumkennung entsprechen, und eine Ausführungsmaschine aufweist, die mit der Prozessorressource verbunden ist, um nach einer Kontextumschaltung zu dem zweiten Adreßraum mindestens einen Teil der Einträge des ersten Adreßraums zu verwalten; und einen dynamischen Direktzugangsspeicher, der mit dem Prozessor verbunden ist.
- System nach Anspruch 26, das ferner einen Adreßraumpuffer umfaßt, der mit der Prozessorressource verbunden ist, um die erste und die zweite Adreßraumkennung der Prozessorressource bereitzustellen.
- System nach Anspruch 26, das ferner eine Adreßraumkennungs-Liste umfaßt, um Adreßraumkennungen mit Einträgen in der Prozessorressource zu speichern.
- System nach Anspruch 26, wobei die Prozessorressource einen Adreßumsetzungspuffer umfaßt.
- Gegenstand, der ein maschinenzugängliches Speichermedium umfaßt, das Befehle enthält, welche bei Ausführung ein System aktivieren zum Bestimmen, ob ein vorbestimmter Befehl einen ausgewählten Wert nicht modifiziert; und Ergreifen einer Maßnahme auf einem Prozessor, falls der ausgewählte Wert nicht derart modifiziert wird.
- Gegenstand nach Anspruch 30, der ferner Befehle umfaßt, die bei Ausführung das System aktivieren, um alle Einträge in allen Adreßräumen der Prozessorressource zu entleeren.
- Gegenstand nach Anspruch 30, der ferner Befehle umfaßt, die bei Ausführung das System aktivieren, um mindestens einen Adreßumsetzungspuffer zu entleeren.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/903,704 | 2004-07-30 | ||
US10/903,704 US7562179B2 (en) | 2004-07-30 | 2004-07-30 | Maintaining processor resources during architectural events |
PCT/US2005/024997 WO2006019914A2 (en) | 2004-07-30 | 2005-07-14 | Maintaining translation lookaside buffers during architectural events |
Publications (2)
Publication Number | Publication Date |
---|---|
DE112005001798T5 true DE112005001798T5 (de) | 2007-05-24 |
DE112005001798B4 DE112005001798B4 (de) | 2018-09-06 |
Family
ID=35207593
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE112005003859.9T Active DE112005003859B4 (de) | 2004-07-30 | 2005-07-14 | Verwalten von Prozessorressourcen während Architekturereignissen |
DE112005001798.2T Active DE112005001798B4 (de) | 2004-07-30 | 2005-07-14 | Verwalten von Prozessorressourcen während Architekturereignissen |
DE112005003863.7T Active DE112005003863B3 (de) | 2004-07-30 | 2005-07-14 | Verwalten von Prozessorressourcen während Architekturereignissen |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE112005003859.9T Active DE112005003859B4 (de) | 2004-07-30 | 2005-07-14 | Verwalten von Prozessorressourcen während Architekturereignissen |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE112005003863.7T Active DE112005003863B3 (de) | 2004-07-30 | 2005-07-14 | Verwalten von Prozessorressourcen während Architekturereignissen |
Country Status (6)
Country | Link |
---|---|
US (14) | US7562179B2 (de) |
JP (10) | JP2008508598A (de) |
CN (2) | CN1993683B (de) |
DE (3) | DE112005003859B4 (de) |
HK (1) | HK1101436A1 (de) |
WO (1) | WO2006019914A2 (de) |
Families Citing this family (72)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7562179B2 (en) | 2004-07-30 | 2009-07-14 | Intel Corporation | Maintaining processor resources during architectural events |
US7395400B2 (en) * | 2004-09-20 | 2008-07-01 | Hewlett-Packard Development Company, L.P. | Adaptive address space operating system |
US7886126B2 (en) * | 2005-01-14 | 2011-02-08 | Intel Corporation | Extended paging tables to map guest physical memory addresses from virtual memory page tables to host physical memory addresses in a virtual machine system |
US8214830B2 (en) * | 2005-01-19 | 2012-07-03 | Intel Corporation | Performance in a virtualization architecture with a processor abstraction layer |
US7395405B2 (en) * | 2005-01-28 | 2008-07-01 | Intel Corporation | Method and apparatus for supporting address translation in a virtual machine environment |
US7685635B2 (en) * | 2005-03-11 | 2010-03-23 | Microsoft Corporation | Systems and methods for multi-level intercept processing in a virtual machine environment |
US7386669B2 (en) * | 2005-03-31 | 2008-06-10 | International Business Machines Corporation | System and method of improving task switching and page translation performance utilizing a multilevel translation lookaside buffer |
US8327353B2 (en) * | 2005-08-30 | 2012-12-04 | Microsoft Corporation | Hierarchical virtualization with a multi-level virtualization mechanism |
US7555628B2 (en) * | 2006-08-15 | 2009-06-30 | Intel Corporation | Synchronizing a translation lookaside buffer to an extended paging table |
US8479264B2 (en) | 2006-09-29 | 2013-07-02 | Micron Technology, Inc. | Architecture for virtual security module |
US7945761B2 (en) * | 2006-11-21 | 2011-05-17 | Vmware, Inc. | Maintaining validity of cached address mappings |
US8615643B2 (en) * | 2006-12-05 | 2013-12-24 | Microsoft Corporation | Operational efficiency of virtual TLBs |
US8171255B1 (en) | 2007-02-06 | 2012-05-01 | Parallels IP Holdings GmbH | Optimization of paging cache protection in virtual environment |
US7596677B1 (en) | 2007-02-06 | 2009-09-29 | Parallels Software International, Inc. | Paging cache optimization for virtual machine |
US7685355B2 (en) * | 2007-05-07 | 2010-03-23 | Microsoft Corporation | Hardware memory management unit simulation using concurrent lookups for address translation data |
US8549254B2 (en) * | 2007-12-31 | 2013-10-01 | Intel Corporation | Using a translation lookaside buffer in a multiple stage memory address translation structure to manage protected microcontexts |
US8560806B2 (en) * | 2007-12-31 | 2013-10-15 | Intel Corporation | Using a multiple stage memory address translation structure to manage protected micro-contexts |
US20090172346A1 (en) * | 2007-12-31 | 2009-07-02 | Ravi Sahita | Transitioning between software component partitions using a page table pointer target list |
US9098625B2 (en) * | 2008-02-29 | 2015-08-04 | International Business Machines Corporation | Viral trace |
FR2929729A1 (fr) * | 2008-04-03 | 2009-10-09 | Alveol Technology Sarl | Dispositif de gestion de la memoire d'un environnement informatique |
US8316211B2 (en) | 2008-06-30 | 2012-11-20 | Intel Corporation | Generating multiple address space identifiers per virtual machine to switch between protected micro-contexts |
US8140825B2 (en) * | 2008-08-05 | 2012-03-20 | International Business Machines Corporation | Systems and methods for selectively closing pages in a memory |
JP5300407B2 (ja) * | 2008-10-20 | 2013-09-25 | 株式会社東芝 | 仮想アドレスキャッシュメモリ及び仮想アドレスキャッシュ方法 |
JP5459006B2 (ja) * | 2010-03-24 | 2014-04-02 | 富士通株式会社 | メモリ管理装置、メモリ管理方法及びメモリ管理プログラム |
KR20120068573A (ko) * | 2010-12-17 | 2012-06-27 | 삼성전자주식회사 | 심리스 애플리케이션 통합 장치 및 방법 |
KR20120071554A (ko) * | 2010-12-23 | 2012-07-03 | 한국전자통신연구원 | 완전가상화를 위한 주소공간 전환 방법 및 장치 |
US9158592B2 (en) * | 2011-05-02 | 2015-10-13 | Green Hills Software, Inc. | System and method for time variant scheduling of affinity groups comprising processor core and address spaces on a synchronized multicore processor |
US9916257B2 (en) * | 2011-07-26 | 2018-03-13 | Intel Corporation | Method and apparatus for TLB shoot-down in a heterogeneous computing system supporting shared virtual memory |
US9804870B2 (en) | 2011-10-28 | 2017-10-31 | Intel Corporation | Instruction-set support for invocation of VMM-configured services without VMM intervention |
US8719464B2 (en) * | 2011-11-30 | 2014-05-06 | Advanced Micro Device, Inc. | Efficient memory and resource management |
JP5852677B2 (ja) * | 2011-12-26 | 2016-02-03 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | レジスタ・マッピング方法 |
US9342704B2 (en) * | 2011-12-28 | 2016-05-17 | Intel Corporation | Allocating memory access control policies |
US9465748B2 (en) * | 2011-12-30 | 2016-10-11 | Advanced Micro Devices, Inc. | Instruction fetch translation lookaside buffer management to support host and guest O/S translations |
US10037228B2 (en) | 2012-10-25 | 2018-07-31 | Nvidia Corporation | Efficient memory virtualization in multi-threaded processing units |
US10310973B2 (en) | 2012-10-25 | 2019-06-04 | Nvidia Corporation | Efficient memory virtualization in multi-threaded processing units |
US10169091B2 (en) | 2012-10-25 | 2019-01-01 | Nvidia Corporation | Efficient memory virtualization in multi-threaded processing units |
US10102003B2 (en) | 2012-11-01 | 2018-10-16 | International Business Machines Corporation | Intelligent context management |
US10078518B2 (en) | 2012-11-01 | 2018-09-18 | International Business Machines Corporation | Intelligent context management |
US9158702B2 (en) * | 2012-12-28 | 2015-10-13 | Intel Corporation | Apparatus and method for implementing a scratchpad memory using priority hint |
CN104239237B (zh) * | 2013-06-20 | 2017-07-14 | 华为技术有限公司 | 一种tlb管理方法及装置 |
WO2015030746A1 (en) * | 2013-08-28 | 2015-03-05 | Empire Technology Development, Llc | Virtual machine exit analyzer |
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 |
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 |
US9626221B2 (en) * | 2015-02-24 | 2017-04-18 | Red Hat Israel, Ltd. | Dynamic guest virtual machine identifier allocation |
US11354128B2 (en) | 2015-03-04 | 2022-06-07 | Intel Corporation | Optimized mode transitions through predicting target state |
TWI518585B (zh) * | 2015-05-18 | 2016-01-21 | 國立成功大學 | 具有草稿式記憶體的電子裝置與草稿式記憶體的管理方法 |
WO2017044124A1 (en) * | 2015-09-11 | 2017-03-16 | Hewlett Packard Enterprise Development Lp | Switch process virtual address space |
US9946566B2 (en) * | 2015-09-28 | 2018-04-17 | Intel Corporation | Method and apparatus for light-weight virtualization contexts |
US20170220466A1 (en) * | 2016-01-30 | 2017-08-03 | Intel Corporation | Sharing a guest physical address space among virtualized contexts |
KR102525229B1 (ko) * | 2016-05-13 | 2023-04-25 | 에스케이하이닉스 주식회사 | 메모리 모듈 및 이를 포함하는 시스템 |
US10162764B2 (en) | 2016-07-18 | 2018-12-25 | International Business Machines Corporation | Marking page table/page status table entries to indicate memory used to back address translation structures |
US10176111B2 (en) | 2016-07-18 | 2019-01-08 | International Business Machines Corporation | Host page management using active guest page table indicators |
US10248573B2 (en) | 2016-07-18 | 2019-04-02 | International Business Machines Corporation | Managing memory used to back address translation structures |
US10282305B2 (en) | 2016-07-18 | 2019-05-07 | International Business Machines Corporation | Selective purging of entries of structures associated with address translation in a virtualized environment |
US10169243B2 (en) | 2016-07-18 | 2019-01-01 | International Business Machines Corporation | Reducing over-purging of structures associated with address translation |
US10176110B2 (en) | 2016-07-18 | 2019-01-08 | International Business Machines Corporation | Marking storage keys to indicate memory used to back address translation structures |
US10802986B2 (en) | 2016-07-18 | 2020-10-13 | International Business Machines Corporation | Marking to indicate memory used to back address translation structures |
US10241924B2 (en) | 2016-07-18 | 2019-03-26 | International Business Machines Corporation | Reducing over-purging of structures associated with address translation using an array of tags |
US10180909B2 (en) | 2016-07-18 | 2019-01-15 | International Business Machines Corporation | Host-based resetting of active use of guest page table indicators |
US10168902B2 (en) | 2016-07-18 | 2019-01-01 | International Business Machines Corporation | Reducing purging of structures associated with address translation |
US10176006B2 (en) | 2016-07-18 | 2019-01-08 | International Business Machines Corporation | Delaying purging of structures associated with address translation |
US10223281B2 (en) | 2016-07-18 | 2019-03-05 | International Business Machines Corporation | Increasing the scope of local purges of structures associated with address translation |
KR102439466B1 (ko) * | 2017-03-27 | 2022-09-02 | 엘지전자 주식회사 | 단말기 및 그 제어 방법 |
US10866904B2 (en) * | 2017-11-22 | 2020-12-15 | Arm Limited | Data storage for multiple data types |
US11579770B2 (en) * | 2018-03-15 | 2023-02-14 | Western Digital Technologies, Inc. | Volatility management for memory device |
JP2019212244A (ja) * | 2018-06-08 | 2019-12-12 | 富士通株式会社 | 通知制御プログラム、通知制御方法および情報処理装置 |
US11797665B1 (en) * | 2018-06-28 | 2023-10-24 | Advanced Micro Devices, Inc. | Protection against branch target buffer poisoning by a management layer |
US10970224B2 (en) * | 2019-06-28 | 2021-04-06 | International Business Machines Corporation | Operational context subspaces |
US11074195B2 (en) | 2019-06-28 | 2021-07-27 | International Business Machines Corporation | Access to dynamic address translation across multiple spaces for operational context subspaces |
US10891238B1 (en) | 2019-06-28 | 2021-01-12 | International Business Machines Corporation | Dynamically joining and splitting dynamic address translation (DAT) tables based on operational context |
CN112099907B (zh) * | 2020-08-26 | 2024-01-26 | 海光信息技术股份有限公司 | 一种虚拟机运行方法、装置及服务器 |
US11513963B2 (en) * | 2021-03-11 | 2022-11-29 | Western Digital Technologies. Inc. | Data storage device and method for application identifier handler heads-up for faster storage response |
Family Cites Families (68)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3855456A (en) * | 1972-11-22 | 1974-12-17 | Ebasco Serv | Monitor and results computer system |
JPS553077A (en) | 1978-06-23 | 1980-01-10 | Fujitsu Ltd | Multi-virtual data processing system |
JPS6091462A (ja) * | 1983-10-26 | 1985-05-22 | Toshiba Corp | 演算制御装置 |
JPS60100245A (ja) | 1983-11-02 | 1985-06-04 | Mitsubishi Electric Corp | アドレス変換装置 |
AU559311B2 (en) * | 1984-02-15 | 1987-03-05 | Matsushita Electric Industrial Co., Ltd. | Pay tv charge/time data display |
US5123101A (en) * | 1986-11-12 | 1992-06-16 | Xerox Corporation | Multiple address space mapping technique for shared memory wherein a processor operates a fault handling routine upon a translator miss |
JPH0336648A (ja) * | 1989-07-03 | 1991-02-18 | Hitachi Ltd | 電子計算機及びtlb装置とマイクロプロセッサチップ |
JPH03185539A (ja) * | 1989-12-14 | 1991-08-13 | Hitachi Ltd | データ処理装置 |
EP0464333A3 (en) * | 1990-07-03 | 1992-07-29 | International Business Machines Corporation | Virtual memory |
JPH04349548A (ja) | 1991-05-28 | 1992-12-04 | Nec Eng Ltd | アドレス変換方式 |
US5319760A (en) * | 1991-06-28 | 1994-06-07 | Digital Equipment Corporation | Translation buffer for virtual machines with address space match |
JPH06139149A (ja) * | 1992-10-29 | 1994-05-20 | Mitsubishi Electric Corp | 多重仮想空間制御装置 |
US6356989B1 (en) * | 1992-12-21 | 2002-03-12 | Intel Corporation | Translation lookaside buffer (TLB) arrangement wherein the TLB contents retained for a task as swapped out and reloaded when a task is rescheduled |
JPH06332803A (ja) * | 1993-05-25 | 1994-12-02 | Hitachi Ltd | 仮想計算機システムにおけるtlb制御方法 |
US5892944A (en) * | 1993-07-20 | 1999-04-06 | Kabushiki Kaisha Toshiba | Program execution and operation right management system suitable for single virtual memory scheme |
JPH0784883A (ja) * | 1993-09-17 | 1995-03-31 | Hitachi Ltd | 仮想計算機システムのアドレス変換バッファパージ方法 |
JPH07105091A (ja) | 1993-10-01 | 1995-04-21 | Hitachi Ltd | キャッシュの制御装置および制御方法 |
BR9407962A (pt) * | 1993-11-02 | 1996-12-03 | Paracom Corp | Aparelho para processamento acelerado de transaçoes com base de dados de computador |
JPH07134659A (ja) * | 1993-11-09 | 1995-05-23 | Hitachi Ltd | 仮想計算機システムのアドレス変換バッファ制御方式 |
JPH07134658A (ja) * | 1993-11-09 | 1995-05-23 | Hitachi Ltd | 仮想計算機システムのアドレス変換バッファ制御方式 |
JP3740195B2 (ja) * | 1994-09-09 | 2006-02-01 | 株式会社ルネサステクノロジ | データ処理装置 |
US5682495A (en) | 1994-12-09 | 1997-10-28 | International Business Machines Corporation | Fully associative address translation buffer having separate segment and page invalidation |
GB9502864D0 (en) * | 1995-02-14 | 1995-04-05 | Digicash Bv | Cryptographic reduced instruction set processor |
JPH09109380A (ja) | 1995-10-20 | 1997-04-28 | Brother Ind Ltd | インクジェットプリンタ |
JP3557026B2 (ja) * | 1996-01-12 | 2004-08-25 | 株式会社東芝 | 仮想記憶管理方法 |
US5906001A (en) * | 1996-12-19 | 1999-05-18 | Intel Corporation | Method and apparatus for performing TLB shutdown operations in a multiprocessor system without invoking interrup handler routines |
US6075938A (en) * | 1997-06-10 | 2000-06-13 | The Board Of Trustees Of The Leland Stanford Junior University | Virtual machine monitors for scalable multiprocessors |
JPH117411A (ja) | 1997-06-17 | 1999-01-12 | Fujitsu Ltd | アドレス変換装置 |
JPH1117411A (ja) | 1997-06-27 | 1999-01-22 | Nec Corp | マイクロ波回路 |
GB2339037B (en) | 1998-07-03 | 2002-11-20 | Advanced Risc Mach Ltd | Memory address translation in a data processing system |
US7409694B2 (en) * | 1998-09-09 | 2008-08-05 | Microsoft Corporation | Highly componentized system architecture with loadable virtual memory manager |
US6230248B1 (en) * | 1998-10-12 | 2001-05-08 | Institute For The Development Of Emerging Architectures, L.L.C. | Method and apparatus for pre-validating regions in a virtual addressing scheme |
US6418521B1 (en) * | 1998-12-23 | 2002-07-09 | Intel Corporation | Hierarchical fully-associative-translation lookaside buffer structure |
US6327646B1 (en) * | 1999-03-12 | 2001-12-04 | Intel Corporation | Translation look-aside buffer utilizing high-order bits for fast access |
US6604184B2 (en) | 1999-06-30 | 2003-08-05 | Intel Corporation | Virtual memory mapping using region-based page tables |
JP2001022927A (ja) | 1999-07-06 | 2001-01-26 | Fuji Photo Film Co Ltd | 画像処理装置、画像処理方法、及び記憶媒体 |
US6625720B1 (en) * | 1999-08-17 | 2003-09-23 | Nec Electronics, Inc. | System for posting vector synchronization instructions to vector instruction queue to separate vector instructions from different application programs |
US6889319B1 (en) * | 1999-12-09 | 2005-05-03 | Intel Corporation | Method and apparatus for entering and exiting multiple threads within a multithreaded processor |
JP2001236221A (ja) | 2000-02-21 | 2001-08-31 | Keisuke Shindo | マルチスレッドを利用するパイプライン並列プロセッサ |
US6510508B1 (en) * | 2000-06-15 | 2003-01-21 | Advanced Micro Devices, Inc. | Translation lookaside buffer flush filter |
US6604187B1 (en) * | 2000-06-19 | 2003-08-05 | Advanced Micro Devices, Inc. | Providing global translations with address space numbers |
EP1182568A3 (de) * | 2000-08-21 | 2004-07-21 | Texas Instruments Incorporated | Auf Task-Kennzeichnung basierte TLB-Operation |
US6907600B2 (en) * | 2000-12-27 | 2005-06-14 | Intel Corporation | Virtual translation lookaside buffer |
US6854046B1 (en) * | 2001-08-03 | 2005-02-08 | Tensilica, Inc. | Configurable memory management unit |
US6646899B2 (en) | 2001-09-21 | 2003-11-11 | Broadcom Corporation | Content addressable memory with power reduction technique |
US20050015637A1 (en) | 2001-12-14 | 2005-01-20 | Josephus Theodorus Johannes Van Eijndhoven | Data processing system |
US7127548B2 (en) * | 2002-04-16 | 2006-10-24 | Intel Corporation | Control register access virtualization performance improvement in the virtual-machine architecture |
US6920521B2 (en) * | 2002-10-10 | 2005-07-19 | International Business Machines Corporation | Method and system of managing virtualized physical memory in a data processing system |
US6904490B2 (en) * | 2002-10-10 | 2005-06-07 | International Business Machines Corporation | Method and system of managing virtualized physical memory in a multi-processor system |
US7073042B2 (en) * | 2002-12-12 | 2006-07-04 | Intel Corporation | Reclaiming existing fields in address translation data structures to extend control over memory accesses |
US7793286B2 (en) * | 2002-12-19 | 2010-09-07 | Intel Corporation | Methods and systems to manage machine state in virtual machine operations |
US7409487B1 (en) * | 2003-06-30 | 2008-08-05 | Vmware, Inc. | Virtualization system for computers that use address space indentifiers |
US7552255B1 (en) | 2003-07-30 | 2009-06-23 | Intel Corporation | Dynamically partitioning pipeline resources |
US7552254B1 (en) | 2003-07-30 | 2009-06-23 | Intel Corporation | Associating address space identifiers with active contexts |
US7870553B2 (en) * | 2003-08-28 | 2011-01-11 | Mips Technologies, Inc. | Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts |
US20050182903A1 (en) * | 2004-02-12 | 2005-08-18 | Mips Technologies, Inc. | Apparatus and method for preventing duplicate matching entries in a translation lookaside buffer |
US7562179B2 (en) * | 2004-07-30 | 2009-07-14 | Intel Corporation | Maintaining processor resources during architectural events |
US8312452B2 (en) * | 2005-06-30 | 2012-11-13 | Intel Corporation | Method and apparatus for a guest to access a privileged register |
US8555081B2 (en) * | 2007-10-30 | 2013-10-08 | Vmware, Inc. | Cryptographic multi-shadowing with integrity verification |
JP5459006B2 (ja) * | 2010-03-24 | 2014-04-02 | 富士通株式会社 | メモリ管理装置、メモリ管理方法及びメモリ管理プログラム |
US8751833B2 (en) * | 2010-04-30 | 2014-06-10 | Arm Limited | Data processing system |
US8667258B2 (en) * | 2010-06-23 | 2014-03-04 | International Business Machines Corporation | High performance cache translation look-aside buffer (TLB) lookups using multiple page size prediction |
US9465748B2 (en) * | 2011-12-30 | 2016-10-11 | Advanced Micro Devices, Inc. | Instruction fetch translation lookaside buffer management to support host and guest O/S translations |
US9804896B2 (en) * | 2012-07-31 | 2017-10-31 | Empire Technology Development Llc | Thread migration across cores of a multi-core processor |
US10310973B2 (en) * | 2012-10-25 | 2019-06-04 | Nvidia Corporation | Efficient memory virtualization in multi-threaded processing units |
US9009413B2 (en) * | 2012-12-21 | 2015-04-14 | Intel Corporation | Method and apparatus to implement lazy flush in a virtually tagged cache memory |
US9703951B2 (en) * | 2014-09-30 | 2017-07-11 | Amazon Technologies, Inc. | Allocation of shared system resources |
US10209991B2 (en) * | 2016-01-21 | 2019-02-19 | Advanced Micro Devices, Inc. | Instruction set and micro-architecture supporting asynchronous memory access |
-
2004
- 2004-07-30 US US10/903,704 patent/US7562179B2/en active Active
-
2005
- 2005-07-14 DE DE112005003859.9T patent/DE112005003859B4/de active Active
- 2005-07-14 DE DE112005001798.2T patent/DE112005001798B4/de active Active
- 2005-07-14 WO PCT/US2005/024997 patent/WO2006019914A2/en active Application Filing
- 2005-07-14 CN CN200580025726XA patent/CN1993683B/zh active Active
- 2005-07-14 DE DE112005003863.7T patent/DE112005003863B3/de active Active
- 2005-07-14 CN CN2010102276573A patent/CN101872316B/zh active Active
- 2005-07-14 JP JP2007523610A patent/JP2008508598A/ja active Pending
-
2007
- 2007-08-27 HK HK07109284A patent/HK1101436A1/xx not_active IP Right Cessation
-
2009
- 2009-03-30 US US12/413,655 patent/US7904694B2/en active Active
- 2009-06-12 US US12/483,519 patent/US7899972B2/en active Active
-
2010
- 2010-08-10 JP JP2010179219A patent/JP2011023017A/ja active Pending
- 2010-08-10 JP JP2010179220A patent/JP5214676B2/ja active Active
-
2011
- 2011-02-03 US US13/020,161 patent/US8543793B2/en active Active
- 2011-05-11 JP JP2011106136A patent/JP5372994B2/ja active Active
- 2011-05-11 JP JP2011106137A patent/JP5378450B2/ja active Active
-
2012
- 2012-12-07 US US13/708,547 patent/US8788790B2/en active Active
-
2013
- 2013-03-15 US US13/837,997 patent/US9086958B2/en not_active Expired - Fee Related
- 2013-03-15 US US13/843,601 patent/US8806172B2/en active Active
- 2013-04-25 JP JP2013092397A patent/JP5670508B2/ja not_active Expired - Fee Related
- 2013-09-30 JP JP2013204470A patent/JP2013257911A/ja active Pending
-
2014
- 2014-12-22 US US14/579,040 patent/US9152561B2/en not_active Expired - Fee Related
- 2014-12-22 US US14/579,526 patent/US9164901B2/en not_active Expired - Fee Related
- 2014-12-23 US US14/580,345 patent/US9164918B2/en not_active Expired - Fee Related
-
2015
- 2015-02-04 JP JP2015020410A patent/JP2015084260A/ja active Pending
- 2015-09-18 US US14/858,835 patent/US9507730B2/en active Active
-
2016
- 2016-08-16 JP JP2016159588A patent/JP2016192241A/ja active Pending
- 2016-11-29 US US15/362,820 patent/US9996475B2/en active Active
-
2018
- 2018-06-11 US US16/005,385 patent/US10303620B2/en not_active Expired - Fee Related
- 2018-11-20 JP JP2018217401A patent/JP6995731B2/ja active Active
-
2019
- 2019-05-02 US US16/401,889 patent/US10740249B2/en active Active
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE112005001798B4 (de) | Verwalten von Prozessorressourcen während Architekturereignissen | |
DE69721590T2 (de) | Ein bereichsbasiertes seiten-table-walk-bit verwendendes verfahren sowie vorrichtung | |
DE69724572T2 (de) | Verfahren und Vorrichtung zur Vorladung von verschiedenen vorgegebenen Adressenübersetzungsattributen | |
DE102014014076A1 (de) | Reduzierte Adressenkonvertierung mit mehreren Seitengrößen | |
DE112005003098T5 (de) | Verfahren und Vorrichtung zum Zugreifen auf einen physikalischen Speicher von einer CPU oder einem Prozessorelement mit hoher Leistung | |
DE102020125075A1 (de) | Verfahren zum ermöglichen der verhinderung von cache-trashing in hypervisor-systemen ohne speicherverwaltungseinheit (mmu) | |
JPH04320532A (ja) | プログラムロード方式 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
R130 | Divisional application to |
Ref document number: 112005003859 Country of ref document: DE Effective date: 20140205 Ref document number: 112005003863 Country of ref document: DE Effective date: 20140205 |
|
R130 | Divisional application to |
Ref document number: 112005003863 Country of ref document: DE Ref document number: 112005003859 Country of ref document: DE |
|
R130 | Divisional application to |
Ref document number: 112005003859 Country of ref document: DE Effective date: 20141222 Ref document number: 112005003863 Country of ref document: DE Effective date: 20141222 |
|
R082 | Change of representative |
Representative=s name: BOEHMERT & BOEHMERT ANWALTSPARTNERSCHAFT MBB -, DE Representative=s name: MUELLER HOFFMANN & PARTNER PATENTANWAELTE MBB, DE |
|
R020 | Patent grant now final | ||
R082 | Change of representative |
Representative=s name: BOEHMERT & BOEHMERT ANWALTSPARTNERSCHAFT MBB -, DE |