DE602004011018T2 - Ungültigkeitserklärung eines speichers und löschen von puffereinträgen - Google Patents

Ungültigkeitserklärung eines speichers und löschen von puffereinträgen Download PDF

Info

Publication number
DE602004011018T2
DE602004011018T2 DE602004011018T DE602004011018T DE602004011018T2 DE 602004011018 T2 DE602004011018 T2 DE 602004011018T2 DE 602004011018 T DE602004011018 T DE 602004011018T DE 602004011018 T DE602004011018 T DE 602004011018T DE 602004011018 T2 DE602004011018 T2 DE 602004011018T2
Authority
DE
Germany
Prior art keywords
address translation
entries
entry
range
field
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.)
Active
Application number
DE602004011018T
Other languages
English (en)
Other versions
DE602004011018D1 (de
Inventor
John Timothy SLEGEL
Lisa Heller
Erwin Pfeffer
Kenneth Plambeck
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE602004011018D1 publication Critical patent/DE602004011018D1/de
Application granted granted Critical
Publication of DE602004011018T2 publication Critical patent/DE602004011018T2/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0808Multiuser, multiprocessor or multiprocessing cache systems with cache invalidating means
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0891Addressing 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
    • 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
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1036Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30047Prefetch instructions; cache control instructions
    • 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/3824Operand accessing
    • 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
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • G06F2212/683Invalidation

Description

  • Diese Erfindung betrifft im Allgemeinen die Verarbeitung in einer Datenverarbeitungsumgebung und insbesondere einen oder mehrere der Vorgänge der Ungültigkeitserklärung von Speicher, des Löschens von Puffereinträgen und einen Befehl hierzu.
  • Bestehende Datenverarbeitungsumgebungen verwenden einen virtuellen Speicher, der normalerweise in einem zusätzlichen Speicher verwaltet wird, um die Größe des verfügbaren Speichers zu erhöhen. Wenn eine Bezugnahme auf eine Seite von virtuellem Speicher erfolgt, wird die bei der Bezugnahme auf die Seite verwendete virtuelle Adresse durch dynamische Adressumsetzung in eine reale Speicheradresse umgesetzt. Im Falle einer erfolgreichen Umsetzung ist der virtuelle Speicher gültig; andernfalls ist er ungültig. Eine Seite von virtuellem Speicher wird durch ein Ungültigkeitsbit in einem Seitentabelleneintrag als gültig oder ungültig angezeigt, wobei dieser Eintrag eine reale Speicheradresse enthält, falls die Seite gültig ist.
  • Zu einem bestimmten Zeitpunkt kann immer nur eine Speicherseite für ungültig erklärt werden. In einer Datenverarbeitungsumgebung auf der Grundlage der von International Business Machines Corporation angebotenen z/Architektur wird beispielsweise ein als "Seitentabelleneintrag für ungültig erklären (Invalidate Page Table Entry – IPTE) bezeichneter Befehl verwendet, um eine Speicherseite für ungültig zu erklären. Zur Ungültigkeitserklärung gehört das Setzen eines Ungültigkeitsanzeigers in einer Steuerstruktur, die dem virtuellen Speicher zugeordnet ist und sich im physischen Hauptspeicher befindet, um anzuzeigen, dass eine virtuelle Adresse einer Position im virtuellen Speicher nicht durch dynamische Adressumsetzung in eine auch als reale Adresse bezeichnete physische Hauptspeicheradresse umgesetzt werden kann. Außerdem wird der Befehl zum Löschen von der Seite zugeordneten internen Maschinenpuffereinträgen verwendet, die während der dynamischen Adressumsetzung verwendet werden können, um einen Zugriff auf die Steuerstrukturen im physischen Hauptspeicher zu vermeiden. In der z/Architektur gibt es beispielsweise Adressumsetzpuffer (Translation Lookaside Buffers), die während der dynamischen Adressumsetzung von virtuellen Adressen in reale Adressen verwendet werden. Wenn eine Speicherseite für ungültig erklärt wird, werden auch dieser Seite zugeordnete Einträge aus den entsprechenden Puffern gelöscht.
  • Außerdem gibt es Befehle, die das Löschen von ganzen Adressumsetzpuffern ermöglichen. In der z/Architektur löscht beispielsweise ein als "Vergleichen und Auslagern und Löschen" (Compare and Swap ans Purge – CSP) bezeichneter Befehl alle Einträge von Adressumsetzpuffern.
  • US-A-5 946 717 (Uchibori Katsuaki), 31. August 1999, und "Enterprise Systems Architecture/390 Principles of Operation" SA22-7201-07, [Online] 31. Juli 2001, XP002294122, am 24.08.2004 aus dem Internet abgerufen, URL: http://publibz.boulder.ibm.com/epubs/pdf/dz9ar007.pdf>, beschreiben Datenverarbeitungsumgebungen, die eine Ungültigkeitserklärung von Tabelleneinträgen und ein Löschen von Puffern ausführen.
  • Obwohl es Befehle zur Ungültigkeitserklärung einer Speicherseite und zum Löschen von dieser Seite zugeordneten Einträgen aus Puffern sowie Befehle zum Löschen ganzer Puffer gibt, besteht folglich noch immer ein Bedarf an Befehlen, die verschiedene Größen von Speichereinheiten selektiv für ungültig erklären und/oder diesen zugeordnete Einträge aus Puffern löschen können. Beispielsweise besteht ein Bedarf an einem Befehl, der die Angabe einer ausgewählten Speichereinheit ermöglicht, die größer ist als eine für ungültig zu erklärende Seite und/oder eine Seite, bei der zugeordnete Puffereinträge gelöscht wurden. Außerdem besteht ein Bedarf an einem Befehl, der das Löschen von Puffereinträgen für ausgewählte Speichereinheiten ermöglicht, ohne Puffereinträge für andere Speichereinheiten zu beeinträchtigen.
  • Die vorliegende Erfindung stellt ein Verfahren zur Ungültigkeitserklärung von Speicher einer Datenverarbeitungsumgebung bereit, wie es in Anspruch 1 beansprucht wird.
  • Vorzugsweise stellt die vorliegende Erfindung ein Verfahren zur Ungültigkeitserklärung von Speicher einer Datenverarbeitungsumgebung bereit. Das Verfahren beinhaltet beispielsweise die Angabe einer für ungültig zu erklärenden Speichereinheit, wobei die Speichereinheit eine Vielzahl von Speicherseiten enthält und wobei zur Angabe die Bereitstellung eines Deskriptors der Speichereinheit gehört; und die Ungültigkeitserklärung der Speichereinheit.
  • Vorzugsweise stellt die vorliegende Erfindung ein Verfahren zum Ermöglichen des Löschens von Puffern einer Datenverarbeitungsumgebung bereit. Das Verfahren beinhaltet beispielsweise das Kennzeichnen einer Speichereinheit, für die ein Löschen von einem oder mehreren Einträgen aus einem oder mehreren Puffern ausgeführt werden muss, wobei die Speichereinheit eine Vielzahl von Speicherseiten enthält; und das Löschen von einem oder mehreren Einträgen aus dem einen oder den mehreren der gekennzeichneten Speichereinheit zugeordneten Puffer, wobei ein oder mehrere einer anderen Speichereinheit zugeordnete Einträge nicht gelöscht werden.
  • Vorzugsweise wird ein in einer Datenverarbeitungsumgebung auszuführender Befehl bereitgestellt. Der Befehl enthält beispielsweise einen Operationscode zum Kennzeichnen eines auszuführenden Befehls; eine Ungültigkeitserklärungs-Kennzeichnung (invalidation designation) zum Angeben von Daten, die einer für ungültig zu erklärenden Speichereinheit zugeordnet sind, wobei die Speichereinheit eine Vielzahl von Speicherseiten enthält; eine andere Kennzeichnung zum Angeben zusätzlicher Daten zur Verwendung durch den Befehl; und eine Löschkennzeichnung (clearing designation) zum Angeben von Daten, die einer Speichereinheit und einer anderen Speichereinheit zugeordnet sind, bei der ein oder mehrere Einträge aus einem oder mehreren Puffern gelöscht werden müssen, wobei eine oder mehrere Komponenten der Ungültigkeitserklärungs-Kennzeichnung, der anderen Kennzeichnung oder der Löschkennzeichnung als Nicht-Vorgänge konfigurierbar sind.
  • Vorzugsweise wird ein in einer Datenverarbeitungsumgebung auszuführender Befehl bereitgestellt. Der Befehl enthält beispielsweise einen Operationscode zum Kennzeichnen eines auszuführenden Befehls; und mindestens eine von folgenden Kennzeichnungen: eine erste Ungültigkeitserklärungs-Kennzeichnung zum Angeben von Daten, die einer für ungültig zu erklärenden Speichereinheit zugeordnet sind, wobei die Speichereinheit eine Vielzahl von Speicherseiten enthält; eine zweite Ungültigkeitserklärungs-Kennzeichnung zum Angeben von zusätzlichen Daten, die der für ungültig zu erklärenden Speichereinheit zugeordnet sind; und eine Löschkennzeichnung zum Angeben von Daten, die einer Speichereinheit und einer anderen Speichereinheit zugeordnet sind, für die ein oder mehrere Einträge aus einem oder mehreren Puffern gelöscht werden müssen, wobei die durch die Löschkennzeichnung angegebenen Daten nicht mindestens einer anderen Speichereinheit zugeordnet sind, für die ein oder mehrere Einträge nicht gelöscht werden müssen.
  • Ein System und Computerprogrammprodukte entsprechend der oben zusammengefassten Verfahren werden ebenfalls hierin beschrieben und beansprucht.
  • Zusätzliche Merkmale und Vorteile werden durch die Verfahren der vorliegenden Erfindung realisiert. Andere Ausführungsformen und Aspekte der Erfindung werden hierin ausführlich beschrieben und als Teil der beanspruchten Erfindung betrachtet.
  • Das als die Erfindung betrachtete Hauptthema wird insbesondere in den Ansprüchen am Schluss der Beschreibung dargelegt und eindeutig beansprucht. Die vorhergehenden und andere Aufgaben, Merkmale und Vorteile der Erfindung gehen aus der folgenden ausführlichen Beschreibung hervor, wenn sie in Verbindung mit den begleitenden Zeichnungen gelesen wird, in denen:
  • 1 eine Ausführungsform einer Datenverarbeitungsumgebung darstellt, die einen oder mehrere Aspekte der vorliegenden Erfindung beinhaltet und verwendet;
  • 2 eine Ausführungsform von weiteren einer Steuereinheit von 1 zugeordneten Einzelheiten gemäß einem Aspekt der vorliegenden Erfindung darstellt;
  • 3 eine Ausführungsform eines Host-Computers, der einen anderen Computer emulieren kann, gemäß einem Aspekt der vorliegenden Erfindung darstellt;
  • 4 eine Ausführungsform der der Ungültigkeitserklärung von Speicher zugeordneten Logik gemäß einem Aspekt der vorliegenden Erfindung darstellt;
  • 5 eine Ausführungsform der dem Löschen von Puffereinträgen zugeordneten Logik gemäß einem Aspekt der vorliegenden Erfindung darstellt;
  • 6a eine Ausführungsform eines Formats eines Befehls "Dynamischen Adressumsetzungstabelleneintrag für ungültig erklären" (Invalidate Dynamic Address Translation Table Entry – IDTE) gemäß einem Aspekt der vorliegenden Erfindung darstellt;
  • 6b eine Ausführungsform der dem Allgemeinregister R1 des IDTE-Befehls von 6A zugeordneten Felder gemäß einem Aspekt der vorliegenden Erfindung darstellt;
  • 6c eine Ausführungsform der dem Allgemeinregister R2 des IDTE-Befehls von 6A zugeordneten Felder gemäß einem Aspekt der vorliegenden Erfindung darstellt;
  • 6d eine Ausführungsform der dem Allgemeinregister R3 des IDTE-Befehls von 6A zugeordneten Felder gemäß einem Aspekt der vorliegenden Erfindung darstellt;
  • 7a bis 7b eine Ausführungsform der dem IDTE-Befehl zugeordneten Logik gemäß einem Aspekt der vorliegenden Erfindung darstellen;
  • 8a eine Ausführungsform der dem Allgemeinregister R1 zugeordneten Felder, die für einen alternativen Vorgang des IDTE-Befehls verwendet werden, gemäß einem Aspekt der vorliegenden Erfindung darstellt;
  • 8b eine Ausführungsform der dem Allgemeinregister R2 zugeordneten Felder, die für einen alternativen Vorgang des IDTE-Befehls verwendet werden, gemäß einem Aspekt der vorliegenden Erfindung darstellt;
  • 8c eine Ausführungsform der dem Allgemeinregister R3 zugeordneten Felder, die für einen alternativen Vorgang des IDTE-Befehls verwendet werden, gemäß einem Aspekt der vorliegenden Erfindung darstellt;
  • 9 eine Ausführungsform der dem alternativen Vorgang des IDTE-Befehls zugeordneten Logik gemäß einem Aspekt der vorliegenden Erfindung darstellt.
  • Unter einem Aspekt der vorliegenden Erfindung wird ein angegebener Teil eines Speichers (z. B. virtueller Speicher) für ungültig erklärt. Beispielsweise wird ein Speichersegment, das eine Vielzahl von Speicherseiten enthält, oder ein Speicherbereich, der eine Vielzahl von Speichersegmenten enthält, zur Ungültigkeitserklärung ausgewählt. Die Ungültigkeitserklärung wird durch das Setzen von Ungültigkeitserklärungsanzeigern ermöglicht, die sich in Datenstruktureinträgen befinden, die den für ungültig zu erklärenden Speichereinheiten entsprechen. Unter einem weiteren Aspekt der vorliegenden Erfindung werden Puffereinträge (z. B. Adressumsetzpuffereinträge), die dem für ungültig erklärten Speicher oder einem anderen Speicher zugeordnet sind, gelöscht. Unter einem weiteren Aspekt der vorliegenden Erfindung werden ausgewählten Adressräumen zugeordnete Puffereinträge aus Puffern gelöscht, ohne dass Puffereinträge von nichtausgewählten Adressräumen beeinflusst werden und ohne dass eine Ungültigkeitserklärung ausgeführt wird. In einem Beispiel wird ein hierin als "Dynamischen Adressumsetzungstabelleneintrag für ungültig erklären" (Invalidate Dynamic Address Translation (DAT) Table Entry (IDTE)" bezeichneter Befehl aus der z/Architektur von IBM® verwendet, um einen oder mehrere der obigen Vorgänge auszuführen.
  • Eine Ausführungsform einer Datenverarbeitungsumgebung 100, die einen oder mehrere Aspekte der vorliegenden Erfindung beinhaltet und verwendet, wird mit Bezugnahme auf 1 beschrieben. Die Datenverarbeitungsumgebung 100 beruht beispielsweise auf der von International Business Machines Corporation, Armonk, New York, angebotenen z/Architektur. Die z/Architektur wird in einer Veröffentlichung von IBM® mit dem Titel "z/Architecture Principles of Operation", IBM Veröffentlichung Nr. SA22-7832-00, Dezember 2000, beschrieben (IBM® ist ein eingetragenes Warenzeichen von International Business Machines Corporation, Armonk, New York, USA. Andere hierin verwendete Namen können eingetragene Warenzeichen, Warenzeichen oder Produktnamen von International Business Machines Corporation oder anderen Firmen sein.) In einem Beispiel beinhaltet eine Datenverarbeitungsumgebung auf der Grundlage der z/Architektur einen von International Business Machines Corporation, Armonk, New York, angebotenen eServer der z-Serie.
  • Beispielsweise gehört zur Datenverarbeitungsumgebung 100 ein mit einer Steuereinheit 120 verbundener zentraler Prozessorkomplex (central processor complex – CPC) 102. Der zentrale Prozessorkomplex 102 beinhaltet beispielsweise eine oder mehrere Partitionen 104 (z. B. die logischen Partitionen LP1 bis LPn), einen oder mehrere zentrale Prozessoren 106 (z. B. CP1 bis CPm) und einen Hypervisor 108 (z. B. eine logische Partitionsverwaltungseinrichtung), die allesamt im Folgenden beschrieben werden.
  • Jede logische Partition 104 kann als gesondertes System fungieren. Das heißt, jede logische Partition kann unabhängig zurückgesetzt, auf Wunsch anfänglich mit einem Betriebssystem geladen werden und mit verschiedenen Programmen arbeiten. Ein in einer logischen Partition ausgeführtes Betriebssystem oder Anwendungsprogramm scheint Zugriff auf ein vollständiges System zu haben, in der Realität ist jedoch nur ein Teil von diesem verfügbar. Eine Kombination aus Hardware und lizensiertem internem Code (Licensed Internal Code) (im Allgemeinen als Microcode bezeichnet) verhindert, dass ein Programm in einer logischen Partition ein Programm in einer anderen logischen Partition beeinträchtigt. Dadurch wird es möglich, dass mehrere verschiedene logische Partitionen in einem einzigen oder mehreren physischen Prozessoren in zugeteilten Zeitintervallen (in a time sliced manner) betrieben werden. In diesem bestimmten Beispiel weist jede logische Partition ein Betriebssystem 110 auf, das für eine oder mehrere logische Partitionen unterschiedlich sein kann. In einer Ausführungsform ist das Betriebssystem 110 das von International Business Machines Corporation, Armonk, New York, angebotene Betriebssystem z/OS.
  • Die Prozessoren 106 sind physische Prozessorressourcen, die den logischen Partitionen zugeordnet werden. Beispielsweise gehören zu einer logischen Partition 104 ein oder mehrere logische Prozessoren, von denen jeder die gesamte oder einen Teil einer der Partition zugeordneten physischen Prozessorressource 106 darstellt. Die logischen Prozessoren einer bestimmten Partition 104 können entweder der Partition zugeordnet werden, so dass die zugrundeliegende Prozessorressource für diese Partition reserviert ist; oder mit einer anderen Partition gemeinsam genutzt werden, so dass die zugrundeliegende Prozessorressource möglicherweise für eine andere Partition verfügbar ist.
  • Die logischen Partitionen 104 werden vom Hypervisor 108 verwaltet, der von dem in den Prozessoren 106 ausgeführten Mikrocode realisiert wird. Die logischen Partitionen 104 und der Hypervisor 108 umfassen jeweils ein oder mehrere Programme, die sich in entsprechenden Teilen des den zentralen Prozessoren zugeordneten zentralen Speichers befinden. Ein Beispiel eines Hypervisors 108 ist Processor Resource/Systems Manager (PR/SM) von International Business Machines Corporation, Armonk, New York.
  • Die mit dem zentralen Prozessorkomplex verbundene Steuereinheit 120 beinhaltet eine zentralisierte Logik, die für die Prioritätenvergabe (arbitrating) zwischen verschiedenen Anforderungen ausgebenden Prozessoren zuständig ist. Wenn die Steuereinheit 120 eine Anforderung empfängt, stellt sie beispielsweise fest, dass der Anforderer der Hauptprozessor für diese Anforderung ist und dass die anderen Prozessoren untergeordnete Prozessoren sind; sie rundsendet Nachrichten; und bearbeitet andernfalls Anforderungen. Ein Beispiel einer Steuereinheit wird in der US-Patentschrift Nr. 6 199 219 beschrieben. Weitere Einzelheiten werden außerdem mit Bezugnahme auf 2 beschrieben. 2 zeigt ein Beispiel einer Steuereinheit 200, die mit einer Vielzahl von Zentraleinheiten (CPUs) 201 verbunden ist. In diesem Beispiel werden zwei Zentraleinheiten gezeigt. Es versteht sich jedoch von selbst, dass mehr als zwei Prozessoren mit der Steuereinheit 200 verbunden werden können.
  • Die Steuereinheit 200 beinhaltet verschiedene Steuervorgänge, darunter beispielsweise Systemserialisierungssteuerungen (system serialization controls) 202. Die Systemserialisierungssteuerungen werden verwendet, um sicherzustellen, dass zu serialisierende Vorgänge, beispielsweise Ungültigkeitserklärungsbefehle, insofern serialisiert werden, als zu einem bestimmten Zeitpunkt nur ein solcher Befehl in der Datenverarbeitungsumgebung ausgeführt wird. Außerdem überwacht sie die Abfolge von Ereignissen für diesen Vorgang.
  • Die Steuereinheit 200 ist über verschiedene Schnittstellen mit jeder Zentraleinheit verbunden. Beispielsweise wird eine Schnittstelle 204 vom lizensierten internen Code in einer Zentraleinheitverwendet, um "Steuer"-Befehle an die Steuereinheit zu übertragen, die eine zu ergreifende Maßnahme angeben, und um "Abfrage"-Befehle ("sense" commands) zu übertragen, die Daten von der Steuereinheit rückübertragen. Eine andere Schnittstelle ist ein Antwortbus 206, der zum Rückübertragen von Daten von der Steuereinheit für die "Abfrage"-Befehle verwendet wird. Der Antwortbus wird außerdem zum Übertragen des Befehlsstatus für "Steuer"-Befehle verwendet und kann von einer Vielzahl von Quellen innerhalb der Steuereinheit gesetzt werden, unter anderem von den Systemserialisierungssteuerungen. Eine Zentraleinheit kann diese Schnittstelle zum Abfragen des Status der Systemserialisierungssteuerungen in der Steuereinheit 200 verwenden.
  • Eine weitere Schnittstelle ist die Schnittstelle 208, die von der Steuereinheit zum Übertragen von Befehlen an jede CPU verwendet wird. Dies kann außerdem von einer Vielzahl von Quellen innerhalb der Steuereinheit gesteuert werden, unter anderem von Systemserialisierungssteuerungen 202. Noch eine weitere Schnittstelle ist die Schnittstelle 210, die Signale an Cachespeichersteuerungen 212 des zentralen Prozessors 201 überträgt. Auf die Signale hin verarbeiten die Cachespeichersteuerungen 212 Befehle. In einem Beispiel verarbeiten die Cachespeichersteuerungen 212 Befehle, die einen oder mehrere Puffer betreffen, beispielsweise die Adressumsetzpuffer (TLBs) 213, wie im Folgenden ausführlicher beschrieben wird.
  • Neben den Cachespeichersteuerungen 212 beinhaltet die Zentraleinheit 201 verschiedene andere Steuerungen, darunter beispielsweise die Unterbrechungssteuerungen 220 und die Ausführungssteuerungen 222. Auf bestimmte Ereignisse hin bewirken die Unterbrechungssteuerungen 220 eine in der CPU anstehende interne Unterbrechung, die ihrerseits veranlasst, dass die Ausführungssteuerungen 222 die Programmbefehlsverarbeitung an der nächsten unterbrechbaren Stelle aussetzen. Auf die Unterbrechung hin rufen die Ausführungssteuerungen 222 eine Routine des lizensierten internen Code auf, um ein Register 224 "Rundsendevorgang gestattet" (broadcast Operation allowed latch) zu setzen, um den Cachespeichersteuerungen 212 die Verarbeitung anstehender Anforderungen zu ermöglichen.
  • Die Zentraleinheit 201 beinhaltet außerdem ein Register 226 "CPU im Wartemodus" (CPU quiesced latch), das anzeigt, ob die Zentraleinheit sich im Wartemodus befindet.
  • Die oben beschriebene Datenverarbeitungsumgebung ist nur ein Beispiel. Eine oder mehrere Partitionen können beispielsweise in verschiedenen Architekturarten ausgeführt werden. Als weiteres Beispiel muss die Umgebung außerdem nicht auf der z/Architektur, sondern kann auf anderen Architekturen beruhen, wie sie von Intel, Sun Microsystems und anderen angeboten werden. Außerdem kann eine Umgebung einen Emulator beinhalten (z. B. Software oder andere Emulationsmechanismen), in dem eine bestimmte Architektur oder ein Teil von dieser emuliert wird.
  • In einer solchen Umgebung können eine oder mehrere Emulationsfunktionen des Emulators einen oder mehrere Aspekte der vorliegenden Erfindung realisieren, selbst wenn ein den Emulator ausführender Computer möglicherweise eine andere Architektur als die emulierten Funktionseigenschaften aufweist. Beispielsweise wird der spezifische emulierte Befehl oder Vorgang im Emulationsmodus decodiert und eine geeignete Emulationsfunktion erstellt, um den einzelnen Befehl oder Vorgang zu realisieren.
  • Weitere Einzelheiten einer Emulationsumgebung werden mit Bezugnahme auf 3 beschrieben. Beispielsweise kann der Host-Computer 300 eine andere Architektur, einen anderen Computer und/oder Verarbeitungsfähigkeiten eines anderen Computers emulieren. Beispielsweise beruht der Host-Computer 300 auf einer Intel-Architektur; einer RISC-Architektur, zum Beispiel PowerPC; einer von Sun Microsystems angebotenen SPARC-Architektur; oder einer anderen Architektur und kann die z/Architektur von IBM® oder eine andere Architektur von IBM® oder einer anderen Einheit emulieren.
  • Zum Host-Computer 300 gehören beispielsweise ein Speicher 302 zum Speichern von Befehlen und Daten; eine Befehlsabrufeinheit 304 zum Abrufen von Befehlen aus dem Speicher 302 und wahlweise zur Bereitstellung einer lokalen Zwischenspeicherung der abgerufenen Befehle; eine Befehlsdecodiereinheit 306 zum Empfangen von Befehlen von der Befehlsabrufeinheit 304 und zum Feststellen des Typs von abgerufenen Befehlen; und eine Befehlsausführungseinheit 308 zum Ausführen der Befehle. Die Ausführung beinhaltet möglicherweise das Laden von Daten aus dem Speicher 302 in ein Register; das Speichern von Daten aus einem Register zurück in den Speicher; oder das Ausführen eines Typs von arithmetischem oder logischem Vorgang, wie von der Decodiereinheit festgestellt wird.
  • In einem Beispiel wird jede oben beschriebene Einheit in Form von Software ausgeführt. Beispielsweise werden die von den Einheiten ausgeführten Vorgänge als eine oder mehrere Teilroutinen innerhalb der Emulatorsoftware realisiert. In einem anderen Beispiel werden ein oder mehrere der Vorgänge in Form von Firmware, Hardware, Software oder einer Kombination aus diesen realisiert.
  • Obwohl 3 in Bezug auf Emulation beschrieben wird, muss die Umgebung von 3 außerdem nicht unbedingt eine Emulationsumgebung sein. In einem anderen Beispiel werden Befehle in einer systemspezifischen Umgebung ausgeführt, und die Vorgänge werden Form von Hardware, Firmware, Software oder einer Kombination aus diesen realisiert.
  • Eine Datenverarbeitungsumgebung kann einen virtuellen Speicher sowie einen Hauptspeicher beinhalten. Der virtuelle Speicher kann die Größe von in der Konfiguration verfügbarem Hauptspeicher weit übersteigen und wird normalerweise in zusätzlichem Speicher verwaltet. Es wird davon ausgegangen, dass der virtuelle Speicher aus als Seiten bezeichneten Adressenblöcken zusammengesetzt ist. Die Seiten von virtuellem Speicher, auf die zuletzt Bezug genommen wurde, werden zuordnet, um Blöcke von physischem Hauptspeicher zu belegen. Wenn ein Benutzer auf Seiten von virtuellem Speicher Bezug nimmt, die nicht im Hauptspeicher erscheinen, werden die virtuellen Seiten hineingebracht, um die Seiten im Hauptspeicher zu ersetzen, die mit geringerer Wahrscheinlichkeit verwendet werden. Der Austausch von Seiten im Speicher kann ohne Wissen des Benutzers vom Betriebssystem ausgeführt werden.
  • Die zum Bezeichnen von Positionen im virtuellen Speicher verwendeten Adressen werden als virtuelle Adressen bezeichnet. Ein Block von sequenziellen virtuellen Adressen, die beispielsweise bis zu 4 Kilobyte umfassen, wird als eine Seite bezeichnet. Ähnlich wird ein Block von sequenziellen virtuellen Seiten, die beispielsweise bis zu 1 Megabyte umfassen, als ein Segment bezeichnet; und ein Block von sequenziellen virtuellen Segmenten, die beispielsweise bis zu 2 Gigabyte umfassen, wird als ein Bereich bezeichnet. Außerdem wird eine Folge von virtuellen Adressen, die einem virtuellen Speicher zugeordnet sind, auf den ein Adressraum-Steuerelement (address space control element – ASCE) zeigt, als Adressraum bezeichnet. Adressräume können zum Bereitstellen von Isolationsgraden zwischen Benutzern verwendet werden. Ein Adressraum kann einen oder mehrere Bereiche, ein oder mehrere Segmente, eine oder mehrere Seiten oder eine Kombination aus diesen enthalten.
  • Den verschiedenen Typen von Speichereinheiten (z. B. Bereiche, Segmente, Seiten) werden Datenstrukturen zugeordnet, die bei der den Speichereinheiten zugeordneten Verarbeitung verwendet werden. Beispielsweise werden Bereichen Bereichstabellen (region tables) zugeordnet; Segmenten werden Segmenttabellen (segment tables) zugeordnet; und Seiten werden Seitentabellen (page tables) zugeordnet. Diese Tabellen werden beispielsweise während einer Umsetzung (z. B. einer dynamischen Adressumsetzung) einer virtuellen Adresse in eine zum Zugriff auf den Hauptspeicher verwendete reale Adresse verwendet. Die bei der Umsetzung zu verwendenden Tabellen, hierin als Umsetzungstabellen bezeichnet, werden durch ein Adressraum-Steuerelement (ASCE) gekennzeichnet. Dies wird in einer Veröffentlichung von IBM® mit dem Titel "z/Architecture Principles of Operation", IBM Veröffentlichung Nr. SA22-7832-00, Dezember 200, ausführlicher beschrieben. Eine Einheit von virtuellem Speicher, die momentan nicht dem Hauptspeicher zugeordnet ist, wird als ungültig bezeichnet. Der ungültige Status einer Einheit von virtuellem Speicher wird durch einen Ungültigkeitsanzeiger in der der Einheit zugeordneten Datenstruktur angezeigt.
  • Der Mechanismus der dynamischen Adressumsetzung wird in einer Ausführungsform so ausgeführt, dass die durch den DAT-Prozess aus den Umsetzungstabellen (z. B. Bereichstabellen, Segmenttabellen und/oder Seitentabellen) abgeleiteten Daten in einem oder mehreren in den Prozessoren befindlichen, hier als Adressumsetzpuffer bezeichneten Puffern aufbewahrt werden, um die Leistungsfähigkeit der Adressumsetzung zu steigern. Das heißt, während der Umsetzung werden die Puffer auf die benötigten Daten überprüft, und falls die Daten sich nicht in den Puffern befinden, wird auf eine oder mehrere der Umsetzungstabellen zugegriffen.
  • In einer Ausführungsform wird ein Puffereintrag als einer von drei Typen betrachtet: ein kombinierter TLB-Bereichs- und Segmenttabelleneintrag; ein TLB-Seitentabelleneintrag; oder ein realer TLB-Speicherbereichseintrag, die allesamt im Folgenden beschrieben werden.
  • Ein kombinierter TLB-Bereichs- und Segmenttabelleneintrag (combined region-and-segment-table entry – CRSTE) enthält sowohl die aus dem Tabelleneintrag oder Einträgen im realen oder absoluten Speicher erhaltenen Daten als auch die zum Abrufen dieser Daten aus dem Speicher verwendeten Attribute. In einem Beispiel enthält ein kombinierter TLB-Bereichs- und Segmenttabelleneintrag (CRSTE) die folgenden Felder:
  • TO
    der Tabellenursprung im Adressraum-Steuerelement, der zum Erzeugen des Eintrags verwendet wurde;
    RX
    der Bereichsindex der virtuellen Adresse, die zum Erzeugen des Eintrags verwendet wurde;
    SX
    der Segmentindex der virtuellen Adresse, die zum Erzeugen des Eintrags verwendet wurde;
    PTC
    der aus dem Segmenttabelleneintrag im realen oder absoluten Speicher abgerufene Seitentabellenursprung;
    C
    das aus dem Segmenttabelleneintrag im realen oder absoluten Speicher abgerufene allgemeine Segmentbit (common segment bit); und
    P
    das aus dem Segmenttabelleneintrag im realen oder absoluten Speicher abgerufene Seitenschutzbit (page protection bit).
    V
    Das Gültigkeitsbit (validity bit) zeigt an, ob der Eintrag im TLB gültig ist und kann daher zum Suchen nachfolgender Einträge verwendet werden.
  • Ein Seitentabellen-TLB-Eintrag enthält die aus dem Tabelleneintrag oder Einträgen im realen oder absoluten Speicher erhaltenen Daten und die zum Abrufen dieser Daten aus dem Speicher verwendeten Attribute. In einem Beispiel enthält ein TLB-Seitentabelleneintrag Folgendes:
  • TO
    den Tabellenursprung im Adressraum-Steuerelement oder im kombinierten TLB-Bereichs- und Segmenttabelleneintrag, der zum Erzeugen des Eintrags verwendet wurde, in Abhängigkeit davon, wie der Eintrag erzeugt wurde;
    PTO
    den zum Erzeugen des Eintrags verwendeten Seitentabel1enursprung;
    PX
    den Seitenindex der zum Erzeugen des Eintrags verwendeten virtuellen Adresse;
    PFRA
    die aus dem Seitentabelleneintrag im realen oder absoluten Speicher abgerufene reale Seitenrahmenadresse (page-frame real address); und
    P
    das aus dem Seitentabelleneintrag im realen oder absoluten Speicher abgerufene Seitenschutzbit.
    V
    Das Gültigkeitsbit zeigt an, ob der Eintrag im TLB gültig ist und kann daher zum Suchen nachfolgender Einträge verwendet werden.
  • Gelegentlich muss eine Speichereinheit für ungültig erklärt werden. Um diese Ungültigkeitserklärung zu ermöglichen, wird die dieser Speichereinheit zugeordnete Umsetzungstabelle verwendet, wie hierin beschrieben wird. Außerdem können auf die Ungültigkeitserklärung des Speichers hin auch entsprechende Puffereinträge gelöscht werden. Beispielsweise wird ein Ungültigkeitsbit eines Seitentabelleneintrags gesetzt, um eine Speicherseite für ungültig zu erklären. Zusätzlich werden in einem Beispiel die entsprechenden Einträge in einem oder mehreren TLBs gelöscht. In einem bestimmten Beispiel werden die Ungültigkeitserklärung und das Löschen von Speicherseiten zugeordneten Einträgen durch einen Befehl "Seitentabelleneintrag für ungültig erklären" (Invalidate Page Table Entry – IPTE) ausgeführt.
  • Unter einem Aspekt der vorliegenden Erfindung können neben der Ungültigkeitserklärung von Speicherseiten Speichersegmente und/oder Speicherbereiche für ungültig erklärt werden. Beispielsweise werden bei dieser Ungültigkeitserklärung Segment- und/oder Bereichstabellen verwendet. Eine Ausführungsform der einer Ungültigkeitserklärung einer bestimmten Speichereinheit zugeordneten Logik wird mit Bezugnahme auf 4 beschrieben.
  • Anfänglich wird eine Bereichs- oder Segmenttabelle, in der ein oder mehrere Einträge für ungültig erklärt werden müssen, ermittelt, SCHRITT 400. In einem Beispiel beinhaltet dies die Bereitstellung eines Bereichstabellenursprungs oder eines Segmenttabellenursprungs. Anschließend wird ein Eintrag in der vorgesehenen Bereichs- oder Segmenttabelle zur Ungültigkeitserklärung gekennzeichnet, SCHRITT 402, und der Eintrag wird für ungültig erklärt, SCHRITT 404. In einem Beispiel erfolgt die Kennzeichnung durch die Bereitstellung eine Bereichsindexes oder eines Segmentindexes (Bits einer virtuellen Adresse), der einen Eintrag in der gekennzeichneten Tabelle auswählt, und die Ungültigkeitserklärung beinhaltet das Setzen eines Ungültigkeitsanzeigers in den Eintrag. Auf das Setzen des Ungültigkeitsanzeigers hin wird eine entsprechende Speichereinheit (z. B. ein Bereich oder ein Segment) für ungültig erklärt.
  • Anschließend wird festgestellt, ob es weitere für ungültig zu erklärende Einträge gibt, ANFRAGE 406. Falls es weitere für ungültig zu erklärende Einträge gibt, geht die Verarbeitung weiter mit dem SCHRITT 402. Andernfalls ist die Verarbeitung beendet.
  • Um den einen oder die mehreren Einträge in einer Bereichs- oder Segmenttabelle und folglich jene Speichereinheiten für ungültig zu erklären, können darüber hinaus die entsprechenden Einträge (oder andere Einträge) aus einem oder mehreren Puffern in einem oder mehreren Prozessoren in der Umgebung gelöscht werden. Eine Ausführungsform der diesem Löschvorgang zugeordneten Logik wird mit Bezugnahme auf 5 ausführlicher beschrieben.
  • Anfänglich wird festgestellt, ob ein Bereichs- oder Segmenttabellenursprung angegeben wird, ANFRAGE 500. Wenn ein Bereichs- oder Segmenttabellenursprung angegeben wird, wird ein Eintrag, der von dem mit dem Bereichs- oder Segmentursprung übereinstimmenden Bereichs- oder Segmentindex angegeben wird, aus einem oder mehreren Puffern gelöscht, SCHRITT 502. Anschließend wird festgestellt, ob es weitere zu löschende Einträge gibt, ANFRAGE 504. Ist dies der Fall, geht die Verarbeitung weiter mit SCHRITT 502. Andernfalls ist die Verarbeitung beendet.
  • Falls mit erneuter Bezugnahme auf ANFRAGE 500 der Bereichs- oder Segmenttabellenursprung nicht angegeben wird, wird ein vom Bereichs- oder Segmentindex angegebener Eintrag aus einem oder mehreren Puffern gelöscht, SCHRITT 508. Anschließend wird festgestellt, ob es weitere zu löschende Einträge gibt, ANFRAGE 510. Falls es weitere zu löschende Einträge gibt, geht die Verarbeitung mit SCHRITT 508 weiter. Andernfalls ist die Verarbeitung beendet.
  • In einem Beispiel werden die Ungültigkeitserklärung und das Löschen von einem Befehl ausgeführt. Der Befehl macht die ausgewählten Einträge einer Segment- oder Bereichstabelle ungültig und löscht zumindest die entsprechenden Einträge (oder andere Einträge) aus den TLBs in den Prozessoren der Konfiguration. In einem Beispiel werden die Einträge aus allen TLBs in allen Prozessoren gelöscht, ob sie nun physisch oder virtuell sind oder von Software emuliert werden. Wenn eine TLB-Struktur mit mehreren Ebenen (multi-level TLB structure) vorhanden ist, werden in einem Beispiel alle Ebenen gelöscht. Wenn mehrere logische Partitionen im System vorliegen, werden TLB-Einträge, die für die logische Partition erzeugt wurden, in der der aktuelle IDTE-Befehl ausgeführt wird, in diesem und anderen Prozessoren gelöscht.
  • Dieser Befehl kann in vielen Architekturen ausgeführt und kann emuliert werden. Beispielsweise kann der Befehl in Hardware von einem Prozessor ausgeführt werden; oder durch Emulation des Befehlssatzes, der diesen Befehl enthält, durch Software, die in einem Computer mit einem anderen ursprünglichen Befehlssatz ausgeführt wird. In einem bestimmten Beispiel wird der Befehl in der z/Architektur ausgeführt und wird hierin als ein Befehl "Dynamischen Adressumsetzungstabelleneintrag für ungültig erklären" (IDTE) bezeichnet.
  • IDTE stellt beispielsweise eine Möglichkeit zur Ungültigkeitserklärung und zum Löschen bereit, bei der ein oder mehrere Speicherbereiche oder -segmente über einen oder mehrere Einträge einer Bereichstabelle oder Segmenttabelle für ungültig erklärt werden und zumindest die entsprechenden Einträge (oder andere Einträge) aus den TLBs (z. B. allen TLBs) in der Konfiguration gelöscht werden. Der Befehl gibt einen Mindestsatz von zu löschenden TLB-Einträgen an. In einer weiteren Ausführung können bei der Ausführung des IDTE-Befehls mehr oder sogar alle TLB-Einträge gelöscht werden.
  • Eine Ausführungsform des Formates eines Befehls "DAT-Tabelleneintrag für ungültig erklären" (IDTE) wird mit Bezugnahme auf 6a beschrieben. In einem Beispiel enthält ein IDTE-Befehl 600 beispielsweise einen Operationscode 602, der den Befehl "DAT-Tabelleneintrag für ungültig erklären" bezeichnet (z. B. 'B98E'x), und eine Vielzahl von Registern 604 bis 608. Jedes der Register wird im Folgenden mit Bezugnahme auf die 6b bis 6d ausführlicher beschrieben.
  • Mit Bezugnahme auf 6b weist das Register 606, bei dem es sich um das Allgemeinregister R1 handelt, beispielsweise ein Format eines Adressraum-Steuerelementes auf, wobei ein Tabellenursprung (z. B. Bits 0 bis 51) und eine Kennzeichnungstypsteuerung (designation type control) (Bits 60 und 61) verwendet werden. Die Bits 52 bis 59, 62 und 63 werden ignoriert. Insbesondere enthält R1 beispielsweise einen Bereichstabellen- oder Segmenttabellenursprung zur Ungültigkeitserklärung 610, der die Umsetzungstabelle bezeichnet, von der ein oder mehrere Einträge für ungültig erklärt werden müssen; und eine Kennzeichnungstypsteuerung (DT) 612, die den Typ dieser Tabelle angibt (z. B. Bereichstabelle oder Segmenttabelle).
  • Das Register 608 (6c), bei dem es sich um das Allgemeinregister R2 handelt, enthält Folgendes: einen ersten Bereichsindex 614, der eine Bereichstabelle der ersten Ebene angibt; einen zweiten Bereichsindex 616, der eine Bereichstabelle der zweiten Ebene angibt; und einen dritten Bereichsindex 618, der eine Bereichstabelle der dritten Ebene angibt. Das heißt, um große virtuelle Adressen unterbringen zu können, werden drei Ebenen von Bereichstabellen verwendet. Außerdem enthält das Register R2 Folgendes: einen Segmentindex 620, bei dem es sich um einen Index in eine Segmenttabelle handelt; einen Modusanzeiger 621, der die auszuführende Funktion festlegt; und einen Anzeiger 622 für zusätzliche Einträge, der anzeigt, wie viele Einträge für ungültig erklärt werden müssen. Beispielsweise enthalten die Bits 53 bis 63 des Allgemeinregisters R2 eine binäre ganze Zahl, die die Anzahl von zusätzlichen, für ungültig zu erklärenden Tabelleneinträgen angibt. In einem Beispiel beträgt die Anzahl von für ungültig zu erklärenden Einträgen 1 bis 2048, was einem Wert in den Bits 53 bis 63 von 0 bis 2047 entspricht. Die Bits 44 bis 51 des Allgemeinregisters R2 sind Nullen; andernfalls wird ein Spezifikationsfehler erkannt. Folglich haben die Bits 0 bis 43 des Allgemeinregisters R2 das Format des Bereichsindexes und des Segmentindexes einer virtuellen Adresse. Der von der DAT verwendete Teil der Bits 0 bis 43 zum Auswählen eines Eintrags in dem vom Allgemeinregister R1 bezeichneten Typ von Tabelle wird als tatsächlicher Ungültigkeitserklärungsindex (Effective Invalidation Index) bezeichnet und im Folgenden ausführlicher beschrieben.
  • Das Register 604 (6d), bei dem es sich um das Allgemeinregister R3 handelt, hat beispielsweise ein Format eines Adressraum-Steuerelements, wobei der Tabellenursprung, die Bits 0 bis 51, verwendet wird, falls er verschieden von null ist. Dieser Tabellenursprung wird zum Auswählen zu löschender TLB-Einträge verwendet, und der Typ von Tabelle, den er bezeichnet, ist unabhängig von den Bits 60 und 61 des Allgemeinregisters R1. Die Bits 52 bis 63 des Allgemeinregisters R3 werden ignoriert. Falls R3 null ist, wird der gesamte Inhalt des Allgemeinregisters 0 ignoriert. In einem Beispiel können die zu löschenden Einträge gleich den oder verschieden von den für ungültig erklärten Einträgen sein.
  • Eine Ausführungsform der einem Ungültigkeitserklärungs- und Löschvorgang zugeordneten Logik wird mit Bezugnahme auf die 7a bis 7b beschrieben. In einem Beispiel wird ein Ungültigkeitserklärungs- und Löschvorgang angegeben, wenn das Bit 52 des Allgemeinregisters R2 null ist. Bei diesem Vorgang wird der bezeichnete Bereichstabelleneintrag oder Segmenttabelleneintrag im Speicher oder ein Bereich von Einträgen beginnend mit dem bezeichneten Eintrag für ungültig erklärt, und die zugeordneten Einträge (oder andere Einträge) werden aus den Adressumsetzpuffern (TLBs) in den CPUs der Konfiguration gelöscht. In einem Beispiel werden im Falle von mehreren Ebenen alle Ebenen der Puffer in allen CPUs gelöscht.
  • Mit Bezugnahme auf 7a wird anfangs ein Bereichstabellen- oder Segmenttabellenursprung angegeben, der eine Bereichstabelle oder Segmenttabelle bezeichnet, aus der ein oder mehrere Einträge für ungültig erklärt werden müssen, SCHRITT 700. In einem Beispiel wird dies im Allgemeinregister R1 angegeben. Außerdem wird ein Tabelleneintrag im Speicher zur Ungültigkeitserklärung ausgewählt, SCHRITT 702. In einem Beispiel wird ein Tabelleneintrag gekennzeichnet, indem der Tabelleneintrag im Allgemeinregister R1 hinzugefügt wird und der tatsächliche Ungültigkeitserklärungsindex im Allgemeinregister R2 gesetzt wird, wobei verschiedene Regeln befolgt werden, wie hierin beschrieben wird.
  • Die Bits 60 und 61 des Allgemeinregisters R1 geben folgendermaßen einen Tabellentyp und einen tatsächlichen Ungültigkeitserklärungsindex an:
    Bits 60 und 61 von Reg. R1 Tabellentyp Tatsächlicher Ungültigkeitserklärungsindex im Register R2
    11 Erste Bereichstabelle Erster Bereichsindex (Bits 0 bis 10)
    10 Zweite Bereichstabelle Zweiter Bereichsindex (Bits 11 bis 21)
    01 Dritte Bereichstabelle Dritter Bereichsindex (Bits 22 bis 32)
    00 Segmenttabelle Segmentindex (Bits 33 bis 43)
  • (Der Teil der Bits 0 bis 43 rechts vom tatsächlichen Ungültigkeitserklärungsindex wird ignoriert.)
  • Mit Bezugnahme auf die obige Tabelle wird der Teil des ersten Bereichsindexes von R2 in Verbindung mit dem ersten Bereichstabellenursprung von R1 zum Auswählen eines Eintrags in einer ersten Bereichstabelle verwendet, wenn die Bits 60 und 61 den binären Wert 11 haben. Der Tabellenursprung wird als 64-Bit-Adresse behandelt.
  • Die 64-Bit-Adresse des ersten Bereichstabelleneintrags in realem oder absolutem Speicher wird durch Anhängen von zwölf Nullen rechts an die Bits 0 bis 51 der Bezeichnung der ersten Bereichstabelle und Addieren des ersten Bereichsindexes erhalten, wobei drei niedrigstwertige und fünfzig höchstwertige Nullen angehängt werden. Diese Addition wird gemäß den Regeln für eine 64-Bit-Arithmetik ausgeführt, unabhängig vom aktuellen Adressiermodus, der von den Bits 31 und 32 des aktuellen Programmstatuswortes (Program Status Word – PSW) angegeben wird. Wenn während der Addition eine Übertragausgabe der Bitposition null stattfindet, wird sie ignoriert. Die aus diesen beiden Komponenten gebildete Adresse ist eine reale oder absolute Adresse. Alle 64 Bits der Adresse werden verwendet, ungeachtet dessen, ob das aktuelle PSW den 24-Bit-, den 31-Bit- oder den 64-Bit-Adressiermodus angibt.
  • In einem Beispiel wird der gesamte erste Bereichstabelleneintrag gleichzeitig aus dem Speicher abgerufen, wie von anderen CPUs beobachtet wird. Der Abrufzugriff auf den Eintrag ist einem schlüsselgesteuerten Schutz unterworfen, und der Speicherzugriff ist einem schlüsselgesteuerten Schutz und einem Startadressenschutz (low address protection) unterworfen. Wenn die zum Abrufen des ersten Bereichstabelleneintrags erzeugte Speicheradresse eine Position bezeichnet, die in der Konfiguration nicht verfügbar ist, wird ein Adressierfehler erkannt und die Arbeitseinheit unterdrückt.
  • Wenn die Bits 60 und 61 den binären Wert 10 haben, wird der zweite Bereichsindex von R2 in Verbindung mit dem zweiten Bereichstabellenursprung von R1 verwendet, um einen Eintrag aus der zweiten Bereichstabelle auszuwählen. Der Suchprozess in der zweiten Bereichstabelle ist ähnlich wie der Suchprozess in der ersten Bereichstabelle. Wenn keine Fehler erkannt werden, kennzeichnet der aus der zweiten Bereichstabelle abgerufene Eintrag den Beginn und gibt den Versatz (offset) und die Länge der entsprechenden dritten Bereichstabelle an.
  • Wenn die Bits 60 und 61 den binären Wert 01 haben, wird der Teil des dritten Bereichsindexes von R2 in Verbindung mit dem dritten Bereichstabellenursprung von R1 verwendet, um einen Eintrag aus der dritten Bereichstabelle auszuwählen. Die Suchprozess in der dritten Bereichstabelle ist ähnlich wie der Suchprozess in der ersten Bereichstabelle. Wenn keine Fehler erkannt werden, kennzeichnet der aus der dritten Bereichstabelle abgerufene Eintrag den Beginn und gibt den Versatz und die Länge der entsprechenden Segmenttabelle an.
  • Wenn die Bits 60 und 61 den binären Wert 00 haben, wird der Segmentindexteil von R2 in Verbindung mit dem Segmenttabellenursprung von R1 verwendet, um einen Eintrag aus der Segmenttabelle auszuwählen. Die Suchprozess in der Segmenttabelle ist ähnlich wie der Suchprozess in der ersten Bereichstabelle. Wenn keine Fehler erkannt werden, kennzeichnet der aus der Segmenttabelle abgerufene Eintrag den Beginn der entsprechenden Seitentabelle.
  • In einem Beispiel wird der gesamte Tabelleneintrag gleichzeitig aus dem Speicher abgerufen. Anschließend wird der Eintrag für ungültig erklärt, SCHRITT 704. In einem Beispiel wird der Eintrag durch Setzen von Bit 58 des Eintrags auf eine binäre 1 für ungültig erklärt. Durch die Ungültigkeitserklärung dieses Eintrags wird die entsprechende Speichereinheit für ungültig erklärt.
  • Anschließend wird festgestellt, ob weitere Einträge für ungültig erklärt werden müssen, ANFRAGE 706. In einem Beispiel wird dies durch Überprüfen der Bits 53 bis 63 des Allgemeinregisters R2 festgestellt. Falls die Bits 53 bis 63 des Allgemeinregisters R2 nicht alle null sind, müssen weitere Einträge für ungültig erklärt werden. Folglich wird zu dem zuvor verwendeten Wert des tatsächlichen Ungültigkeitserklärungsindexes eine 1 addiert, und die Verarbeitung geht weiter mit dem SCHRITT 700. Dies wird wiederholt, so dass ein Eintrag mehr als die von den Bits 53 bis 63 angegebene Anzahl von Einträgen für ungültig erklärt werden. Eine Übertragausgabe der höchstwertigen Bitposition des tatsächlichen Ungültigkeitserklärungsindexes wird ignoriert, und in diesem Fall erfolgt eine zyklische Aufeinanderfolge (wraparound) in der Tabelle. Der Inhalt des Allgemeinregisters R2 bleibt unverändert.
  • Im Anschluss an die Ungültigkeitserklärung des einen oder der mehreren Einträge löscht diese CPU gemäß einem weiteren Aspekt der vorliegenden Erfindung ausgewählte Einträge aus ihrem TLB und signalisiert den anderen CPUs in der Konfiguration, ausgewählte Einträge aus ihren TLBs zu löschen, SCHRITT 708. In einem Beispiel werden zumindest jene kombinierten Bereichs- und Segmenttabelleneinträge (Combined Region and Segment Table entries – CRSTEs) aus jedem TLB gelöscht, die die folgenden Bedingungen erfüllen:
    Der tatsächliche Ungültigkeitserklärungsindex und die Bits links von diesem im Allgemeinregister R2 sowie der gleiche Teil des Bereichs- und Segmentindexfeldes im TLB-Eintrag stimmen überein. (Falls diese Felder Segmentindexfelder beinhalten, können in einer Ausführungsform CRSTEs entweder unabhängig von ihren Bereichsindexfeldern gelöscht werden oder alle CRSTEs können gelöscht werden. Falls die Felder keine Segmentindexfelder beinhalten, können alle CRSTEs gelöscht werden.) Es sei darauf hingewiesen, dass der tatsächliche Ungültigkeitserklärungsindex erhöht wird und eine Übertragausgabe der höchstwertigen Bitposition des Indexes verloren geht, wenn mehrere Tabelleneinträge auf der Grundlage der Bits 53 bis 63 des Allgemeinregisters R2 für ungültig erklärt werden.
  • Entweder ist R3 gleich null oder das Tabellenursprungsfeld im Allgemeinregister R3 stimmt mit dem Tabellenursprungsfeld im TLB-Eintrag überein.
  • Falls der für ungültig erklärte Eintrag ein Segmenttabelleneintrag ist, stimmt das Seitentabellenursprungsfeld im für ungültig erklärten Eintrag mit dem Seitentabellenursprungsfeld im TLB-Eintrag überein. (In einer Ausführungsform kann ein TLB-Eintrag ungeachtet des Seitentabellenursprungs im Eintrag gelöscht werden.)
  • Außerdem werden aus jedem TLB zumindest jene Seitentabelleneinträge gelöscht, in denen das Seitentabellenursprungsfeld mit dem Seitentabellenursprungsfeld in (1) dem für ungültig erklärten Segmenttabelleneintrag, falls ein Segmenttabelleneintrag für ungültig erklärt wurde, oder (2) jedem kombinierten Bereichs- und Segmenttabelleneintrag, der im gleichen TLB gelöscht wurde (er befindet sich in dem zu löschenden Satz). (In einer anderen Ausführungsform kann die Ausführung einen Seitentabelleneintrag ungeachtet des Seitentabellenursprungs im Eintrag löschen.) Das heißt, alle Seitentabelleneinträge können gelöscht werden.
  • Eine Ausführungsform der dem Löschen von Einträgen aus einem TLB zugeordneten Logik wird mit Bezugnahme auf 7b beschrieben. Beispielsweise ist dies eine Fortsetzung der vom IDTE ausgeführten Verarbeitung und wird zur Ungültigkeitserklärung ausgeführt, wie von dieser CPU und anderen CPUs im System beobachtet wird.
  • Mit Bezugnahme auf 7b erfolgt anfänglich eine Feststellung, ob R3 gleich null ist, ANFRAGE 720. Falls R3 verschieden von null ist, wird ein Bereichstabellen- oder ein Segmenttabellenursprung zum Löschen im Register R3 angezeigt, und zum Löschen eines TLB-Eintrags muss der im Register R3 bezeichnete Bereichs-/Segmenttabellenursprung mit dem zum Erzeugen des Eintrags verwendeten Bereichs-/Segmenttabellenursprung übereinstimmen, SCHRITT 722. Falls R3 null ist, wird der Inhalt des Registers R3 (Register 0) ignoriert, und ein Eintrag wird ungeachtet des zum Erzeugen des Eintrags verwendeten Bereichs-/Segmenttabellenursprungs gelöscht, SCHRITT 724.
  • Jene Einträge, die von dem im Register R2 angegebenen Bereichs-/Segmentindex angegeben werden, werden in allen Prozessoren im System aus dem TLB gelöscht, SCHRITT 726. In einem Beispiel werden zumindest jene kombinierten Bereichs- und Segmenttabelleneinträge aus dem TLB gelöscht, in denen zum Beispiel der tatsächliche Ungültigkeitserklärungsindex und die Bits links von diesem im Allgemeinregister R2 sowie der gleiche Teil der Bereichs- und Segmentindextabelle im TLB-Eintrag übereinstimmen. Um einen Eintrag zu löschen, wird beispielsweise das V-Bit abgeschaltet.
  • Falls ein Segmenttabelleneintrag für ungültig erklärt wird, werden aus den TLBs in allen Prozessoren im System außerdem Seitentabelleneinträge gelöscht, in denen der Seitentabellenursprung im Eintrag gleich dem Seitentabellenursprung im TLB ist, SCHRITT 728. Falls ein Segmenttabelleneintrag für ungültig erklärt wird, werden außerdem zumindest jede Seitentabelleneinträge aus den TLBs gelöscht, in denen das Seitentabellenursprungsfeld mit dem Seitentabellenursprungsfeld in jedem CRSTE übereinstimmt, der (z. B. notwendigerweise) im gleichen TLB gelöscht wurde, SCHRITT 730. Dieser Löschprozess wird für einen Eintrag mehr als die im Feld 622 "Zusätzliche Einträge" von 6c angegebene Anzahl von Einträgen wiederholt, SCHRITT 732.
  • Anschließend erfolgt eine Feststellung, ob der Ungültigkeitserklärungs- und Löschvorgang beendet ist, ANFRAGE 734. In einem Beispiel ist der IDTE-Befehl im ausgebenden Prozessor erst beendet, wenn die gekennzeichneten TLB-Einträge in dieser CPU gelöscht wurden und alle anderen CPUs im System alle Speicherzugriffe unter Verwendung des in diesem Befehl angegebenen TLB-Eintrags beendet haben. In einem Beispiel zeigt die im Wartemodus befindliche Steuereinheit diesem ausgebenden Prozessor an, ob die anderen Prozessoren ihre Zugriffe beendet haben. Das heißt, der ausgebende Prozessor wird als Hauptprozessor betrachtet, und alle vom IDTE-Befehl betroffenen untergeordneten Prozessoren zeigen der Steuereinheit ihren Status an. Auf den Empfang des entsprechenden Status von den untergeordneten Prozessoren hin zeigt die Steuereinheit dem Hauptprozessor die Beendigung an. Falls die Verarbeitung beendet ist, endet der Befehl, SCHRITT 736. Andernfalls wartet der Prozessor eine festgelegte Zeitspanne und überprüft den Status erneut oder wird hinsichtlich der Beendigung benachrichtigt, ANFRAGE 734.
  • In einer Ausführungsform finden das Speichern im Bereichs- oder Segmenttabelleneintrag und das Löschen von TLB-Einträgen möglicherweise nicht statt, falls das Ungültigkeitsbit im Bereichs- oder Segmenttabelleneintrag bereits eins war.
  • Obwohl in der oben beschriebenen Ausführungsform das Löschen der TLB-Einträge im Anschluss an die Ungültigkeitserklärung der gewünschten Einträge ausgeführt wird, kann das Löschen von TLB-Einträgen in anderen Ausführungsformen nach jeder Ungültigkeitserklärung, nach einer ausgewählten Anzahl von Ungültigkeitserklärungen usw. erfolgen.
  • Unter einem weiteren Aspekt der vorliegenden Erfindung kann der IDTE-Befehl alternativ zum Löschen von TLB-Einträgen verwendet werden, die einem Adressraum zugeordnet sind (der z. B. von einem Adressraum-Steuerelement (ASCE) bezeichnet wird). In einem Beispiel wird diese Möglichkeit durch das Setzen des Bit 52 des Allgemeinregisters R2 auf 1 angezeigt. Bei dieser Möglichkeit werden der Inhalt des Allgemeinregisters R1 (siehe 8a) sowie die Bits 0 bis 43 und 53 bis 63 des Allgemeinregisters R2 (siehe 8b) ignoriert. Der Inhalt des Allgemeinregisters R3 hat das Format eines Adressraum-Steuerelements, wobei der Tabellenursprung, die Bits 0 bis 51, verwendet werden (8c). Die Bits 52 bis 63 des Allgemeinregisters R3 werden ignoriert. R3 kann null oder verschieden von null sein; das heißt, jedes das Register 0 enthaltende Allgemeinregister kann gekennzeichnet werden. Dieser Vorgang führt keine Ungültigkeitserklärung von Speicher aus, sondern löscht mindestens jene kombinierten Bereichs- und Segmenttabelleneinträge und Seitentabelleneinträge, in denen das Tabellenursprungsfeld mit dem Tabellenursprungsfeld im Allgemeinregister R3 übereinstimmt, aus den TLBs der CPUs. (In einer weiteren Ausführungsform kann die Ausführung einen Seitentabelleneintrag ungeachtet des Tabellenursprungs im Eintrag löschen. Das heißt, alle Seitentabelleneinträge können gelöscht werden.)
  • Eine Ausführungsform der einem Löschvorgang durch einen ASCE-Vorgang zugeordneten Logik wird mit Bezugnahme auf 9 beschrieben. Zu Beginn wird ein Bereichstabellen- oder Segmenttabellenursprung angegeben, der eine Bereichstabelle oder Segmenttabelle kennzeichnet, für die entsprechende TLB-Einträge gelöscht werden müssen, SCHRITT 900. In einem Beispiel wird dies in den Bits 0 bis 51 des Allgemeinregisters R3 angegeben. Anschließend werden zumindest die kombinierten Bereichs- und Segmenttabelleneinträge und die Seitentabelleneinträge, die dem in R3 angegebenen Tabellenursprung entsprechen, in allen Prozessoren im System gelöscht, SCHRITT 902.
  • Anschließend erfolgt eine Feststellung, ob die Ausführung des IDTE-Befehls beendet ist, ANFRAGE 904. In einer Ausführungsform ist der IDTE-Befehl im ausgebenden Prozessor erst beendet, wenn die den angegebenen Parametern entsprechenden TLB-Einträge in der ausgebenden CPU gelöscht wurden und die anderen CPUs in der Konfiguration alle Speicherzugriffe, einschließlich der Aktualisierung von Änderungs- und Bezugsbits, unter Verwendung von den angegebenen Parametern entsprechenden TLB-Einträgen beendet haben. Falls die Einträge gelöscht wurden und die Speicherzugriffe beendet sind, ist die Ausführung des IDTE-Befehls beendet, SCHRITT 906. Andernfalls wartet der Prozessor eine festgelegte Zeitspanne und prüft den Status erneut oder wird hinsichtlich der Beendigung benachrichtigt, ANFRAGE 904.
  • Die mit einem IDTE-Befehl verbundene Verarbeitung wird oben ausführlich beschrieben. In einer Ausführungsform wirken sich die Vorgänge nicht unbedingt auf TLB-Einträge im realen Speicher aus. Im Folgenden werden zusätzliche Informationen, Verbesserungen und/oder der Verarbeitung einer Ausführungsform eines IDTE-Befehls zugeordnete Ausführungsformen bereitgestellt.
    • 1. Das selektive Löschen von TLB-Einträgen kann in Abhängigkeit vom Modell oder der ausgewählten Ausführungsform auf verschiedene Arten ausgeführt werden. Im Allgemeinen können beispielsweise mehr Einträge als die angegebene Mindestanzahl gelöscht werden. Wenn der Ungültigkeitserklärungs- und Löschvorgang ausgeführt wird, können alle kombinierten Bereichs- und Segmenttabelleneinträge (CRSTEs) gelöscht werden, die einen Segmentindex enthalten, der gleich einem tatsächlichen Ungültigkeitserklärungsindex ist, bei dem es sich um einen Segmentindex handelt, oder alle CRSTEs können gelöscht werden, wenn der tatsächliche Ungültigkeitserklärungsindex kein Segmentindex ist. Außerdem kann ein CRSTE oder ein Seitentabelleneintrag ungeachtet des Seitentabellenursprungs im Eintrag gelöscht werden. Wenn der Vorgang des Löschens durch einen ASCE-Vorgang ausgeführt wird, kann ein Seitentabelleneintrag ungeachtet des Tabellenursprungs im Eintrag gelöscht werden. In einer Ausführungsform kann bei der Ausführung des Vorgangs die genaue erforderliche Mindestanzahl von Einträgen gelöscht werden.
    • 2. Ein Adressraum-Steuerelement kann einen Token-Ursprung im realen Speicher statt eines Bereichstabellen- oder Segmenttabellenursprungs enthalten. Ein Tabellenursprung im Allgemeinregister R3 ist von einem Token-Usprung im Register nicht zu unterscheiden.
    • 3. Wenn der Ungültigkeitserklärungs- und Löschvorgang angegeben wird, kann beim Löschen von TLB-Einträgen der Seitentabellenursprung in einem Segmenttabelleneintrag verwendet werden. Falls der Segmenttabelleneintrag im verbundenen Zustand einen Seitentabellenursprung enthielt, der sich vom aktuellen Wert unterscheidet, können daher Kopien von Einträgen, die die vorherigen Werte enthalten, im TLB verbleiben.
    • 4. Wenn der Ungültigkeitserklärungs- und Löschvorgang angegeben wird, ist die Adresse des DAT-Tabelleneintrags für den IDTE eine 64-Bit-Adresse, und die Adressarithmetik wird durch Befolgen der normalen Regeln für eine 64-Bit-Adressarithmetik ausgeführt mit einer zyklischen Aufeinanderfolge bei 264 – 1. Außerdem werden die Versatz- und Längenfelder nicht verwendet. Dementsprechend müssen die DAT-Tabellen nicht von maximalen Speicherpositionen bis zur Position 0 angegeben werden, und der erste gekennzeichnete Eintrag und alle zusätzlichen durch die Bits 63 bis 63 des Allgemeinregisters R3 angegebenen Einträge müssen in der gekennzeichneten Tabelle liegen.
    • 5. Der IDTE-Befehl wird unter SIE erfasst. In einer Ausführungsform wird das System serialisiert, so dass der den IDTE-Befehl ausführende Prozessor den Vorgang erst beginnen kann, wenn die anderen Prozessoren die Verwendung der anzugebenden TLB-Einträge gestoppt haben. Außerdem setzt der den IDTE-Befehl ausführende Prozessor die weitere Ausführung erst fort, wenn die entsprechenden Einträge aus den TLBs aller Prozessoren im System gelöscht wurden.
    • 6. Eine Serialisierungsfunktion wird vor dem Beginn des Vorgangs und erneut nach Beendigung des Vorgangs ausgeführt. Die Serialisierung wird auf diese CPU angewandt; andere CPUs werden nicht notwendigerweise serialisiert.
  • Oben wird ein Beispiel eines Befehls, der Einträge einer Segment- oder einer Bereichstabelle für ungültig erklären und zumindest die entsprechenden Einträge (oder andere Einträge) aus einem oder mehreren Adressumsetzpuffern löschen kann, ausführlich beschrieben. Es können andere Operationscodes, andere Felder, andere Register oder auch keine Register, andere Bits usw. verwendet werden. Beispielsweise können andere Befehlssatzarchitekturen einen gleichwertigen Befehl auf andere Art und Weise definieren (z. B. Verwendung anderer Operationscodes, anderer Felder im Befehl, anderer Register usw.), ein oder mehrere Aspekte der vorliegenden Erfindung finden dennoch Anwendung. Wie oben beschrieben wird, finden ein oder mehrere Aspekte der vorliegenden Erfindung außerdem gleichermaßen Anwendung bei einer Softwareemulation einer Zielarchitektur, beispielsweise der z/Architektur von IBM. In diesem Fall kann es sich bei den oben erläuterten TLBs um ein Feld oder eine andere Datenstruktur handeln, die vom Softwareemulator realisiert wird, um neue Abbildungen von virtuellen auf reale Adressen zwischenzuspeichern. Außerdem ist es möglich, dass die Emulatorsoftware keine einem TLB entsprechende Struktur realisiert. In diesem Fall ist möglicherweise nur die Ungültigkeitserklärung von Einträgen im Speicher anwendbar.
  • Folglich wird hierin ein Befehl bereitgestellt, der Speicher für ungültig erklären, Speicher für ungültig erklären und Puffereinträge löschen oder Puffereinträge löschen kann. Daher sind ein oder mehrere Register des Befehls als Nicht-Vorgänge (no-ops) konfigurierbar. Das heißt, die Daten in jenen Registern, die einem bestimmten Vorgang (z. B. Ungültigkeitserklärung, Löschen usw.) zugeordnet sind, der nicht bereitgestellt wird, werden gegebenenfalls ignoriert oder zeigen an, dass der Vorgang nicht ausgeführt wird.
  • Obwohl oben ein bestimmter Befehl beschrieben wird, bei dem eine Ungültigkeitserklärung, eine Ungültigkeitserklärung und ein Löschvorgang oder ein Löschvorgang bereitgestellt werden, kann der Befehl geändert oder andere Befehle können ausgeführt werden, die nur einen oder mehrere Aspekte der von IDTE vorgesehen Vorgänge ausführen. Beispielsweise kann ein Befehl lediglich die Ungültigkeitserklärung von Speicher ausführen. Als weiteres Beispiel kann der Befehl lediglich Einträge aus Puffern löschen, die bestimmten Segment- oder Bereichstabellen zugeordnet sind. Als noch ein weiteres Beispiel kann ein Befehl ausgeführt werden, der lediglich Einträge auf der Grundlage von Adressraum löscht.
  • In einer handelsüblichen Ausführung des computerarchitekturdefinierten Befehlsformates der Ungültigkeitserklärungs- und/oder Löscheinrichtung werden die Befehle von Programmierern verwendet, beispielsweise von Betriebssystemprogrammierern, die sich der Sprache Assembler bedienen. Diese in einem Speichermedium gespeicherten Befehlsformate können ursprünglich in einem IBM Server mit einer z/Architektur oder alternativ in Maschinen mit anderen Architekturen ausgeführt werden. Sie können in vorhandenen und in künftigen Großrechnerservern von IBM und in anderen Maschinen von IBM (z. B. Servern der P-Serie und X-Serie) emuliert werden. Sie können in Maschinen mit dem Betriebssystem Linux in einer großen Vielfalt von Maschinen unter Verwendung von Hardware, die von IBM, Intel, AMD, Sun Microsystems u. a. hergestellt wird, ausgeführt werden. Neben der Ausführung in der Hardware unter der z/Architektur kann Linux verwendet werden sowie Maschinen, die eine Emulation von Hercules, UMX, FXI oder Platform Solutions verwenden, wobei die Ausführung im Allgemeinen in einem Emulationsmodus erfolgt.
  • Im Emulationsmodus wird der emulierte spezifische Befehl decodiert und eine Teilroutine erstellt, um den einzelnen Befehl auszuführen, wie in einer C-Teilroutine oder einem Treiber, oder es wird ein anderes Verfahren verwendet, um einen Treiber für die spezifische Hardware bereitzustellen, was für Fachleute nach dem Verständnis der Beschreibung einer Ausführungsform der Erfindung möglich ist. Verschiedene Patente der Software- und Hardwareemulation, darunter – jedoch nicht ausschließlich – das US-Patent Nr. 5 551 013 , das US-Patent Nr. 6 009 261 , das US-Patent Nr. 5 574 873 , das US-Patent Nr. 6 308 255 , das US-Patent Nr. 6 463 582 und das US-Patent Nr. 5 790 825 , zeigen eine Vielfalt bekannter Möglichkeiten zum Ausführen der Emulation eines Befehlsformates, dessen Architektur für eine andere Maschine definiert ist, für eine Fachleuten zur Verfügung stehende Zielmaschine sowie jene handelsüblichen Softwareverfahren, die von den oben Genannten verwendet werden.
  • Ein oder mehrere Aspekte der vorliegenden Erfindung steigern vorteilhafterweise die Systemleistung. Durch das selektive Löschen von Einträgen aus Puffern statt eines vollständigen Löschens der Puffer wird die Systemleistung beispielsweise erhöht, indem kein unnötiges erneutes Erstellen von Einträgen erforderlich wird. Das heißt, zum Erstellen eines TLB-Eintrags werden 20 bis hunderte von Zyklen benötigt, und durch das selektive Löschen fällt das unnötige erneute Erstellen von Einträgen weg.
  • Ein weiterer Vorteil besteht darin, dass die Ausführung ein Überlöschen ermöglicht, falls ein kompletter TLB-Löschvorgang gewünscht wird. Außerdem kann der TLB-Teil als Nicht-Vorgang behandelt werden, falls ein TLB beispielsweise nicht verwendet wird. Vorteilhafterweise kann der IDTE-Befehl in Form von Hardware, Firmware, Software oder einer Kombination aus diesen ausgeführt werden, oder er kann in einem Emulator eines Zielcomputerbefehlssatzes verwendet werden.
  • Ein oder mehrere Aspekte der vorliegenden Erfindung finden beispielsweise gleichermaßen Anwendung bei der Emulation virtueller Maschinen, wobei eine oder mehrere auslagerbare Einheiten (pageable entities) (z. B. Gäste) in einem oder mehreren Prozessoren ablaufen. Beispielsweise werden auslagerbare Gäste von der Architektur "Start Interpretive Execution (SIE)" definiert, wobei ein Beispiel hierfür in einer Veröffentlichung von IBM mit dem Titel "IBM System/370 Extended Architecture", IBM Veröffentlichung Nr. SA22-7095 (1985), beschrieben wird.
  • Obwohl SIE und die z/Architektur oben erwähnt wurden, können ein oder mehrere Aspekte der vorliegenden Erfindung gleichermaßen in anderen Architekturen und/oder Umgebungen, die auslagerbare Einheiten oder ähnliche Konstrukte verwenden, angewandt werden.
  • Außerdem sind die verschiedenen oben beschriebenen Ausführungsformen lediglich Beispiele. Obwohl hierin eine logisch partitionierte Umgebung beschrieben wird, ist dies lediglich ein Beispiel. Aspekte der Erfindung sind für viele Typen von Umgebungen nützlich, darunter andere Umgebungen, die eine Vielzahl von Zonen aufweisen, sowie nichtpartitionierte Umgebungen. Außerdem sind möglicherweise keine Zentralprozessorkomplexe vorhanden, sondern mehrere miteinander verbundene Prozessoren. Außerdem sind ein oder mehrere Aspekte der Erfindung auf Umgebungen mit einem einzigen Prozessor anwendbar.
  • Obwohl hierin bestimmte Umgebungen beschrieben werden, können viele Änderungen an diesen Umgebungen vorgenommen werden. Falls die Umgebung logisch partitioniert ist, können beispielsweise mehr oder weniger logische Partitionen in die Umgebung aufgenommen werden. Außerdem können mehrere miteinander verbundene Zentralprozessorkomplexe vorliegen.
  • Dies sind nur einige der Änderungen, die vorgenommen werden können. Andere zusätzliche Änderungen sind möglich. Obwohl die hierin beschriebene Steuereinheit den Befehl so serialisiert, dass zu einem bestimmten Zeitpunkt ein IDTE-Befehl ausgeführt wird, können in einer anderen Ausführungsform beispielsweise mehrere Befehle gleichzeitig ausgeführt werden. Außerdem kann die Umgebung mehrere Steuereinheiten beinhalten. Oder aber mehrere im Wartemodus befindliche Anforderungen (quiesce requests) (von einer oder mehreren Steuereinheiten) können gleichzeitig im System ausstehend sein. Weitere Änderungen sind möglich.
  • Gemäß der vorliegenden Verwendung beinhaltet der Begriff "Verarbeitungseinheit" auslagerbare Einheiten, beispielsweise Gäste; Prozessoren; Emulatoren; und/oder andere ähnliche Komponenten. Außerdem bedeutet der Begriff "durch eine Verarbeitungseinheit" im Auftrag einer Verarbeitungseinheit. Der Begriff "Puffer" beinhaltet einen Speicherbereich sowie verschiedene Typen von Datenstrukturen, darunter – jedoch nicht ausschließlich – Felder; und der Begriff "Tabelle" kann andere Datenstrukturen als Strukturen vom Tabellentyp beinhalten. Außerdem kann der Befehl andere Strukturen als Register zum Kennzeichnen von Daten enthalten. Außerdem kann eine Seite, ein Segment und/oder ein Bereich eine andere Größe als die hierin beschriebene haben.
  • Eine oder mehrere Funktionseigenschaften der vorliegenden Erfindung können in Form von Software, Firmware, Hardware oder einer Kombination aus diesen ausgeführt werden. Außerdem können eine oder mehrere der Funktionseigenschaften emuliert werden.
  • Ein oder mehrere Aspekte der vorliegenden Erfindung können in einem hergestellten Gegenstand (z. B. einem oder mehreren Computerprogrammprodukten) enthalten sein, der beispielsweise in einem Computer verwendbare Medien aufweist. Die Medien enthalten beispielsweise ein computerlesbares Programmcodemittel (z. B. Befehle, einen Code usw.) zum Bereitstellen und Ermöglichen der Funktionseigenschaften der vorliegenden Erfindung. Der hergestellte Gegenstand kann als Teil eines Computersystems enthalten sein oder gesondert verkauft werden.
  • Außerdem kann mindestens eine Programmspeichereinheit bereitgestellt werden, die von einer Maschine gelesen werden kann, die mindestens ein Programm mit in der Maschine ausführbaren Befehlen enthält, um die Funktionseigenschaften der vorliegenden Erfindung auszuführen.
  • Die hierin gezeigten Flussdiagramme sind lediglich Beispiele. An diesen Diagrammen oder an den darin beschriebenen Schritten (oder Vorgängen) können viele Änderungen vorgenommen werden. Beispielsweise können die Schritte in einer anderen Reihenfolge ausgeführt werden, oder es können Schritte hinzugefügt, gelöscht oder geändert werden.

Claims (15)

  1. Verfahren zum Löschen von Adressumsetzpuffern und zur Ungültigkeitserklärung eines Bereichs von zugeordneten Speicheradressumsetzungs-Tabelleneinträgen in einem Computersystem, wobei das Computersystem eine oder mehrere Zentraleinheiten im Datenaustausch mit einem Hauptspeicher umfasst, wobei die Zentraleinheiten Adressumsetzpuffer aufweisen, wobei der Adressumsetzpuffer Adressumsetzpuffereinträge aufweist, die Adressumsetzungsdaten zwischenspeichern, wobei das Computersystem Seitentabellen und andere Adressumsetzungstabellen zum Umsetzen von virtuellen Hauptspeicheradressen einer Zentraleinheit von der einen oder den mehreren Zentraleinheiten in Hauptspeicheradressen des Computersystems aufweist, wobei die Adressumsetzungstabellen irgendeines von folgenden Elementen umfassen: eine oder mehrere Segmenttabellen, eine oder mehrere Segmenttabellen und eine oder mehrere erste Bereichstabellen, eine oder mehrere Segmenttabellen und eine oder mehrere erste Bereichstabellen und eine oder mehrere zweite Bereichstabellen oder eine oder mehrere Segmenttabellen und eine oder mehrere erste Bereichstabellen und eine oder mehrere zweite Bereichstabellen und eine oder mehrere dritte Bereichstabellen, wobei ein Segmenttabelleneintrag einen Seitentabellenursprung umfasst; wobei das Verfahren dadurch gekennzeichnet ist, dass es die folgenden Schritte umfasst: Abrufen eines Multifunktions-Computerbefehls (600) "Dynamischen Adressumsetzungstabelleneintrag für ungültig erklären" (Invalidate Dynamic Address Translation Table Entry – IDTE), wobei der Multifunktions-IDTE-Befehl ein Operationscodefeld (602) mit einem Operationscodefeldwert umfasst, der den Befehl als einen Multifunktions-IDTE-Befehl kennzeichnet, wobei der Multifunktions-IDTE-Befehl eine erste Funktion oder eine zweite Funktion ausführt, wobei die erste Funktion sowohl einen Ungültigkeitserklärung- als auch einen Löschvorgang umfasst, wobei die zweite Funktion einen Löschvorgang und keinen Vorgang der Ungültigkeitserklärung umfasst; Ausführen des Multifunktions-IDTE-Befehls durch Ausführen der folgenden Schritte: wenn die Funktion des abgerufenen Multifunktions-IDTE-Befehls aus dem Ungültigkeitserklärungs- und dem Löschvorgang besteht, Ausführen der Schritte 1) und 2): 1) Ungültigkeitserklärung (404) eines festgelegten Bereichs von einer oder mehreren Adressumsetzungstabelleneinträgen einer Adressumsetzungstabelle, beginnend bei einer festgelegten Position eines Adressumsetzungstabelleneintrags; und 2) Löschen (505, 508) von Adressumsetzpuffereinträgen, die dem einen oder den mehreren für ungültig erklärten Adressumsetzungstabelleneinträgen zugeordnet sind, aus Adressumsetzpuffern; wenn die Funktion des abgerufenen IDTE-Befehls nur aus einem Löschvorgang besteht, Ausführen des folgenden Schritts: Löschen von Adressumsetzpuffereinträgen, die dem einem oder den mehreren Adressumsetzungstabelleneinträgen zugeordnet sind, aus Adressumsetzpuffern, wobei der eine oder die mehreren Adressumsetzungstabelleneinträge einen festgelegten Bereich von einem oder mehreren Adressumsetzungstabelleneinträgen einer Adressumsetzungstabelle umfassen, beginnend bei einer festgelegten Position eines Adressumsetzungstabelleneintrags.
  2. Verfahren nach Anspruch 1, wobei der IDTE-Befehl Folgendes aufweist: ein erstes Feld (610) zum Platzieren erster Daten, wobei die ersten Daten eine Position des Adressumsetzungstabellenursprungs zur Ungültigkeitserklärung umfassen, ein zweites Feld zum Platzieren der zweiten Daten, wobei die zweiten Daten einen Bereichswert umfassen, wobei der Bereichswert eine Anzahl von zusätzlichen Einträgen anzeigt, die für ungültig erklärt werden müssen; und ein drittes Feld zum Platzieren von dritten Daten, wobei die dritten Daten einen Adressumsetzungstabellenursprung zum Löschen umfassen; wobei das Verfahren außerdem die folgenden Schritte beinhaltet: Decodieren des Befehlsoperationscodefeldes des abgerufenen Befehls und Verarbeiten des ersten Feldes, des zweiten Feldes und des dritten Feldes.
  3. Verfahren nach Anspruch 2, wobei die weiteren Schritte a) bis g) ausgeführt werden, wenn die Funktion des abgerufenen IDTE-Befehls aus einem Ungültigkeitserklärungs- und einem Löschvorgang besteht, wobei die Schritte Folgendes umfassen: a) Abrufen der ersten Daten; b) Festlegen des Bereichs von Adressumsetzungstabelleneinträgen, die für ungültig erklärt werden müssen; c) Festlegen eines Adressumsetzungstabelleneintrags, der für ungültig erklärt werden muss; d) Ungültigkeitserklärung des festgelegten Adressumsetzungstabelleneintrags; e) Feststellen, ob ein festgelegter Teil eines Adressumsetzpuffereintrags eines Adressumsetzpuffers einen Wert zum Löschen enthält; und f) Löschen des Adressumsetzpuffereintrags, von dem festgestellt wurde, dass er den Wert der Adresse zum Löschen aufweist; und g) Wiederholen (504, 510, 406) der Schritte c) bis g) für alle betroffenen Adressumsetzpuffereinträge.
  4. Verfahren nach Anspruch 2, wobei der IDTE-Befehl (600) aus 32 zusammenhängenden Bits besteht, das Operationscodefeld (602) aus 16 zusammenhängenden Bits besteht, das erste Feld aus 4 zusammenhängenden Bits besteht, das zweite Feld aus 4 zusammenhängenden Bits besteht, ein drittes Feld aus 4 zusammenhängenden Bits besteht, wobei die zusammenhängenden Bits des ersten Feldes mit den zusammenhängenden Bits des zweiten Feldes zusammenhängen.
  5. Verfahren nach Anspruch 1, wobei das Befehlsformat des IDTE-Befehls ein spezifisches Format einer Befehlsarchitektur der Zentraleinheit ist.
  6. Verfahren nach Anspruch 1, wobei das Befehlsformat des IDTE-Befehls nicht spezifisch für eine Befehlsarchitektur der Zentraleinheit ist, wobei das Verfahren weiterhin die folgenden Schritte umfasst: Interpretieren des IDTE-Befehls zum Ermitteln einer festgelegten Software-Routine zum Emulieren des Vorgangs des IDTE-Befehls, wobei die festgelegte Software-Routine eine Vielzahl von Befehlen umfasst; und Ausführen der festgelegten Software-Routine.
  7. Verfahren nach Anspruch 2, wobei die ersten Daten außerdem Folgendes umfassen: ein Kennzeichnungstypfeld zum Kennzeichnen von irgendeinem von ersten Bereichseinträgen, zweiten Bereichseinträgen, dritten Bereichseinträgen oder Segmenteinträgen, die für ungültig erklärt werden müssen.
  8. Verfahren nach Anspruch 1, wobei der Adressumsetzpuffer einen Adressumsetzpuffer (Translation Lookaside Buffer – TLB) umfasst.
  9. Verfahren nach Anspruch 1, wobei der Schritt der Ungültigkeitserklärung des festgelegten Bereichs von Adressentabelleneinträgen den weiteren Schritt des Markierens eines Feldes "Eintrag ungültig" eines Adressumsetzungstabelleneintrags als ungültig umfasst.
  10. Verfahren nach Anspruch 1, wobei der Adressumsetzpuffer einer von folgenden ist: ein der Zentraleinheit zugeordneter Adressumsetzpuffer, ein einer anderen Zentraleinheit des Computersystems zugeordneter Adressumsetzpuffer, alle dem Computersystem zugeordneten Adressumsetzpuffer.
  11. Verfahren nach Anspruch 3, wobei der Schritt c) des Festlegens eines für ungültig zu erklärenden Adressumsetzungstabelleneintrags außerdem irgendeinen der folgenden Schritte c1) bis c4) umfasst: c1) auf der Grundlage des Wertes des ersten Bereichsindexfeldes Indizieren in eine erste Bereichstabelle, um einen für ungültig zu erklärenden Eintrag zu finden, wobei der für ungültig zu erklärende Eintrag einen zweiten Bereichstabellenursprung umfasst; c2) auf der Grundlage des Wertes des zweiten Bereichsindexfeldes Indizieren in eine zweite Bereichstabelle, um einen für ungültig zu erklärenden Eintrag zu finden, wobei der für ungültig zu erklärende Eintrag einen dritten Bereichstabellenursprung umfasst; c3) auf der Grundlage des Wertes des dritten Bereichsindexfeldes Indizieren in eine dritte Bereichstabelle, um einen für ungültig zu erklärenden Eintrag zu finden, wobei der für ungültig zu erklärende Eintrag einen Segmenttabellenursprung umfasst; c4) auf der Grundlage des Wertes des Segmentindexfeldes Indizieren in eine Segmenttabelle, um einen für ungültig zu erklärenden Eintrag zu finden, wobei der für ungültig zu erklärende Eintrag einen Seitentabellenursprung umfasst; und c5) Vermindern des Wertes des Bereichs von Einträgen, die für ungültig erklärt werden müssen.
  12. Verfahren nach Anspruch 3, wobei der Schritt e) des Feststellens außerdem irgendeinen der folgenden Schritte e1) bis e4) umfasst: e1) auf der Grundlage des Wertes des ersten Bereichsindexfeldes Indizieren in eine erste Bereichstabelle, um einen Eintrag zum Löschen zu finden, wobei der Eintrag zum Löschen einen zweiten Bereichstabellenursprung umfasst; e2) auf der Grundlage des Wertes des zweiten Bereichsindexfeldes Indizieren in eine zweite Bereichstabelle, um einen Eintrag zum Löschen zu finden, wobei der Eintrag zum Löschen einen dritten Bereichstabellenursprung umfasst; e3) auf der Grundlage des Wertes des dritten Bereichsindexfeldes Indizieren in eine dritte Bereichstabelle, um einen Eintrag zum Löschen zu finden, wobei der Eintrag zum Löschen einen Segmenttabellenursprung umfasst; e4) auf der Grundlage des Wertes des Segmentindexfeldes Indizieren in eine Segmenttabelle, um einen Eintrag zum Löschen zu finden, wobei der Eintrag zum Löschen einen Seitentabellenursprung umfasst; und e5) wobei das Verfahren außerdem die Schritte des Löschens des zu löschenden Eintrags der Adressumsetzpuffer umfasst, die den Eintrag zum Löschen zwischenspeichern.
  13. Verfahren nach Anspruch 1, wobei die Zentraleinheiten außerdem Seitentabellen umfassen, wobei die Seitentabellen reale Hauptspeicheradressen aufweisen, wobei die realen Hauptspeicheradressen eine absolute Adresse, eine reale Adresse oder physische Adresse umfassen.
  14. Computerprogramm mit Befehlen zum Ausführen des Verfahrens nach irgendeinem vorhergehenden Anspruch, wenn das Programm in einem Computer ausgeführt wird.
  15. System, das ein Mittel umfasst, das zum Ausführen aller Schritte des Verfahrens nach irgendeinem vorhergehenden Verfahrensanspruch geeignet ist.
DE602004011018T 2003-05-12 2004-05-06 Ungültigkeitserklärung eines speichers und löschen von puffereinträgen Active DE602004011018T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/435,919 US7284100B2 (en) 2003-05-12 2003-05-12 Invalidating storage, clearing buffer entries, and an instruction therefor
US435919 2003-05-12
PCT/GB2004/001971 WO2004099997A1 (en) 2003-05-12 2004-05-06 Invalidating storage, clearing buffer entries

Publications (2)

Publication Number Publication Date
DE602004011018D1 DE602004011018D1 (de) 2008-02-07
DE602004011018T2 true DE602004011018T2 (de) 2008-12-24

Family

ID=33417045

Family Applications (6)

Application Number Title Priority Date Filing Date
DE112004000464T Ceased DE112004000464T5 (de) 2003-05-12 2004-05-06 Ungültigmachen von Speichereinträgen, Löschen von Pufferspeicher-Einträgen
DE602004011018T Active DE602004011018T2 (de) 2003-05-12 2004-05-06 Ungültigkeitserklärung eines speichers und löschen von puffereinträgen
DE602004021030T Active DE602004021030D1 (de) 2003-05-12 2004-05-06 Ungültigkeitserklärung eines Speichers und Löschen von Puffereinträgen
DE602004030452T Active DE602004030452D1 (de) 2003-05-12 2004-05-06 Speicherinvalidierung, Löschung von Puffereintragungen
DE602004031628T Active DE602004031628D1 (de) 2003-05-12 2004-05-06 Speicherinvalidierung, Löschung von Puffereintragungen
DE602004024254T Active DE602004024254D1 (de) 2003-05-12 2004-05-06 Ungültigkeitserklärung eines Speichers und Löschen von Puffereinträgen

Family Applications Before (1)

Application Number Title Priority Date Filing Date
DE112004000464T Ceased DE112004000464T5 (de) 2003-05-12 2004-05-06 Ungültigmachen von Speichereinträgen, Löschen von Pufferspeicher-Einträgen

Family Applications After (4)

Application Number Title Priority Date Filing Date
DE602004021030T Active DE602004021030D1 (de) 2003-05-12 2004-05-06 Ungültigkeitserklärung eines Speichers und Löschen von Puffereinträgen
DE602004030452T Active DE602004030452D1 (de) 2003-05-12 2004-05-06 Speicherinvalidierung, Löschung von Puffereintragungen
DE602004031628T Active DE602004031628D1 (de) 2003-05-12 2004-05-06 Speicherinvalidierung, Löschung von Puffereintragungen
DE602004024254T Active DE602004024254D1 (de) 2003-05-12 2004-05-06 Ungültigkeitserklärung eines Speichers und Löschen von Puffereinträgen

Country Status (16)

Country Link
US (7) US7284100B2 (de)
EP (5) EP1914627B1 (de)
JP (1) JP4608484B2 (de)
KR (2) KR100834362B1 (de)
CN (2) CN100397368C (de)
AT (5) ATE491178T1 (de)
CY (2) CY1111421T1 (de)
DE (6) DE112004000464T5 (de)
DK (4) DK1588267T3 (de)
ES (5) ES2357802T3 (de)
GB (3) GB2414842B (de)
IL (1) IL171905A (de)
PL (4) PL1653365T3 (de)
PT (2) PT1653343E (de)
SI (2) SI1653365T1 (de)
WO (1) WO2004099997A1 (de)

Families Citing this family (101)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8312222B1 (en) * 2002-12-13 2012-11-13 Open Text, S.A. Event-driven regeneration of pages for web-based applications
US8463998B1 (en) 2002-12-13 2013-06-11 Open Text S.A. System and method for managing page variations in a page delivery cache
US7284100B2 (en) * 2003-05-12 2007-10-16 International Business Machines Corporation Invalidating storage, clearing buffer entries, and an instruction therefor
US7530067B2 (en) * 2003-05-12 2009-05-05 International Business Machines Corporation Filtering processor requests based on identifiers
US9454490B2 (en) 2003-05-12 2016-09-27 International Business Machines Corporation Invalidating a range of two or more translation table entries and instruction therefore
US7443878B2 (en) * 2005-04-04 2008-10-28 Sun Microsystems, Inc. System for scaling by parallelizing network workload
US7415035B1 (en) * 2005-04-04 2008-08-19 Sun Microsystems, Inc. Device driver access method into a virtualized network interface
US7415034B2 (en) * 2005-04-04 2008-08-19 Sun Microsystems, Inc. Virtualized partitionable shared network interface
JP2006333438A (ja) * 2005-04-28 2006-12-07 Fujitsu Ten Ltd ゲートウェイ装置及びルーティング方法
US20070005932A1 (en) * 2005-06-29 2007-01-04 Intel Corporation Memory management in a multiprocessor system
JP4978008B2 (ja) * 2006-01-11 2012-07-18 株式会社日立製作所 仮想計算機上でのページテーブルアドレスの変更を高速化する方法
JP2007233615A (ja) * 2006-02-28 2007-09-13 Fujitsu Ltd アドレス変換装置
US7647509B2 (en) * 2006-05-12 2010-01-12 Intel Corporation Method and apparatus for managing power in a processing system with multiple partitions
US7797555B2 (en) * 2006-05-12 2010-09-14 Intel Corporation Method and apparatus for managing power from a sequestered partition of a processing system
US7401185B2 (en) * 2006-07-06 2008-07-15 International Business Machines Corporation Buffered indexing to manage hierarchical tables
US7555628B2 (en) * 2006-08-15 2009-06-30 Intel Corporation Synchronizing a translation lookaside buffer to an extended paging table
US20080270827A1 (en) * 2007-04-26 2008-10-30 International Business Machines Corporation Recovering diagnostic data after out-of-band data capture failure
US8799620B2 (en) * 2007-06-01 2014-08-05 Intel Corporation Linear to physical address translation with support for page attributes
US8180997B2 (en) * 2007-07-05 2012-05-15 Board Of Regents, University Of Texas System Dynamically composing processor cores to form logical processors
US8145876B2 (en) * 2007-08-06 2012-03-27 Advanced Micro Devices, Inc. Address translation with multiple translation look aside buffers
US8151083B2 (en) * 2008-01-11 2012-04-03 International Business Machines Corporation Dynamic address translation with frame management
US8677098B2 (en) 2008-01-11 2014-03-18 International Business Machines Corporation Dynamic address translation with fetch protection
US8117417B2 (en) 2008-01-11 2012-02-14 International Business Machines Corporation Dynamic address translation with change record override
US8335906B2 (en) 2008-01-11 2012-12-18 International Business Machines Corporation Perform frame management function instruction for clearing blocks of main storage
US8037278B2 (en) 2008-01-11 2011-10-11 International Business Machines Corporation Dynamic address translation with format control
US8041922B2 (en) 2008-01-11 2011-10-18 International Business Machines Corporation Enhanced dynamic address translation with load real address function
US8082405B2 (en) 2008-01-11 2011-12-20 International Business Machines Corporation Dynamic address translation with fetch protection
US8019964B2 (en) 2008-01-11 2011-09-13 International Buisness Machines Corporation Dynamic address translation with DAT protection
US8417916B2 (en) * 2008-01-11 2013-04-09 International Business Machines Corporation Perform frame management function instruction for setting storage keys and clearing blocks of main storage
US8103851B2 (en) 2008-01-11 2012-01-24 International Business Machines Corporation Dynamic address translation with translation table entry format control for indentifying format of the translation table entry
US8041923B2 (en) 2008-01-11 2011-10-18 International Business Machines Corporation Load page table entry address instruction execution based on an address translation format control field
US8112174B2 (en) * 2008-02-25 2012-02-07 International Business Machines Corporation Processor, method and computer program product for fast selective invalidation of translation lookaside buffer
US8086811B2 (en) 2008-02-25 2011-12-27 International Business Machines Corporation Optimizations of a perform frame management function issued by pageable guests
US8176280B2 (en) * 2008-02-25 2012-05-08 International Business Machines Corporation Use of test protection instruction in computing environments that support pageable guests
US8458438B2 (en) * 2008-02-26 2013-06-04 International Business Machines Corporation System, method and computer program product for providing quiesce filtering for shared memory
US8095773B2 (en) 2008-02-26 2012-01-10 International Business Machines Corporation Dynamic address translation with translation exception qualifier
US8527715B2 (en) * 2008-02-26 2013-09-03 International Business Machines Corporation Providing a shared memory translation facility
US8380907B2 (en) * 2008-02-26 2013-02-19 International Business Machines Corporation Method, system and computer program product for providing filtering of GUEST2 quiesce requests
US8140834B2 (en) * 2008-02-26 2012-03-20 International Business Machines Corporation System, method and computer program product for providing a programmable quiesce filtering register
US8266411B2 (en) * 2009-02-05 2012-09-11 International Business Machines Corporation Instruction set architecture with instruction characteristic bit indicating a result is not of architectural importance
US8510511B2 (en) 2009-12-14 2013-08-13 International Business Machines Corporation Reducing interprocessor communications pursuant to updating of a storage key
US8930635B2 (en) * 2009-12-14 2015-01-06 International Business Machines Corporation Page invalidation processing with setting of storage key to predefined value
US8918601B2 (en) * 2009-12-14 2014-12-23 International Business Machines Corporation Deferred page clearing in a multiprocessor computer system
US8806179B2 (en) 2009-12-15 2014-08-12 International Business Machines Corporation Non-quiescing key setting facility
US8214598B2 (en) * 2009-12-22 2012-07-03 Intel Corporation System, method, and apparatus for a cache flush of a range of pages and TLB invalidation of a range of entries
US8407701B2 (en) 2010-06-24 2013-03-26 International Business Machines Corporation Facilitating quiesce operations within a logically partitioned computer system
US8595469B2 (en) 2010-06-24 2013-11-26 International Business Machines Corporation Diagnose instruction for serializing processing
US8918885B2 (en) * 2012-02-09 2014-12-23 International Business Machines Corporation Automatic discovery of system integrity exposures in system code
US9182984B2 (en) 2012-06-15 2015-11-10 International Business Machines Corporation Local clearing control
US9251091B2 (en) * 2012-06-15 2016-02-02 International Business Machines Corporation Translation look-aside table management
US20130339656A1 (en) 2012-06-15 2013-12-19 International Business Machines Corporation Compare and Replace DAT Table Entry
US9043565B2 (en) * 2012-09-07 2015-05-26 Kabushiki Kaisha Toshiba Storage device and method for controlling data invalidation
US9196014B2 (en) 2012-10-22 2015-11-24 Industrial Technology Research Institute Buffer clearing apparatus and method for computer graphics
US9092382B2 (en) 2012-11-02 2015-07-28 International Business Machines Corporation Reducing microprocessor performance loss due to translation table coherency in a multi-processor system
US9330017B2 (en) * 2012-11-02 2016-05-03 International Business Machines Corporation Suppressing virtual address translation utilizing bits and instruction tagging
US10509725B2 (en) 2013-03-08 2019-12-17 Oracle International Corporation Flushing by copying entries in a non-coherent cache to main memory
US20140258635A1 (en) * 2013-03-08 2014-09-11 Oracle International Corporation Invalidating entries in a non-coherent cache
US9208362B1 (en) 2013-03-11 2015-12-08 United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration Methods, systems and apparatuses for radio frequency identification
US9619387B2 (en) * 2014-02-21 2017-04-11 Arm Limited Invalidating stored address translations
US9886391B2 (en) * 2014-03-20 2018-02-06 International Business Machines Corporation Selective purging of PCI I/O address translation buffer
EP2997478B1 (de) * 2014-07-21 2019-03-13 VIA Alliance Semiconductor Co., Ltd. Effiziente adressübersetzungscachespeicherung in einem prozessor mit unterstützung einer grossen anzahl von verschiedenen adressenräumen
US9684606B2 (en) * 2014-11-14 2017-06-20 Cavium, Inc. Translation lookaside buffer invalidation suppression
US9697137B2 (en) * 2014-11-14 2017-07-04 Cavium, Inc. Filtering translation lookaside buffer invalidations
US9477516B1 (en) 2015-03-19 2016-10-25 Google Inc. Concurrent in-memory data publication and storage system
US11755484B2 (en) 2015-06-26 2023-09-12 Microsoft Technology Licensing, Llc Instruction block allocation
US9946548B2 (en) 2015-06-26 2018-04-17 Microsoft Technology Licensing, Llc Age-based management of instruction blocks in a processor instruction window
US10409599B2 (en) 2015-06-26 2019-09-10 Microsoft Technology Licensing, Llc Decoding information about a group of instructions including a size of the group of instructions
US10409606B2 (en) 2015-06-26 2019-09-10 Microsoft Technology Licensing, Llc Verifying branch targets
US9952867B2 (en) 2015-06-26 2018-04-24 Microsoft Technology Licensing, Llc Mapping instruction blocks based on block size
US10346168B2 (en) 2015-06-26 2019-07-09 Microsoft Technology Licensing, Llc Decoupled processor instruction window and operand buffer
US10175988B2 (en) 2015-06-26 2019-01-08 Microsoft Technology Licensing, Llc Explicit instruction scheduler state information for a processor
US10169044B2 (en) 2015-06-26 2019-01-01 Microsoft Technology Licensing, Llc Processing an encoding format field to interpret header information regarding a group of instructions
US10191747B2 (en) 2015-06-26 2019-01-29 Microsoft Technology Licensing, Llc Locking operand values for groups of instructions executed atomically
US11126433B2 (en) 2015-09-19 2021-09-21 Microsoft Technology Licensing, Llc Block-based processor core composition register
US10768936B2 (en) 2015-09-19 2020-09-08 Microsoft Technology Licensing, Llc Block-based processor including topology and control registers to indicate resource sharing and size of logical processor
US11016770B2 (en) 2015-09-19 2021-05-25 Microsoft Technology Licensing, Llc Distinct system registers for logical processors
US10942683B2 (en) 2015-10-28 2021-03-09 International Business Machines Corporation Reducing page invalidation broadcasts
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
US10223281B2 (en) 2016-07-18 2019-03-05 International Business Machines Corporation Increasing the scope of local purges 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
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
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
US10180909B2 (en) 2016-07-18 2019-01-15 International Business Machines Corporation Host-based resetting of active use of guest page table indicators
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
US10168902B2 (en) 2016-07-18 2019-01-01 International Business Machines Corporation Reducing purging of structures associated with address translation
US10169243B2 (en) 2016-07-18 2019-01-01 International Business Machines Corporation Reducing over-purging of structures associated with address translation
US11531552B2 (en) 2017-02-06 2022-12-20 Microsoft Technology Licensing, Llc Executing multiple programs simultaneously on a processor core
US10528488B1 (en) * 2017-03-30 2020-01-07 Pure Storage, Inc. Efficient name coding
US10437729B2 (en) 2017-04-19 2019-10-08 International Business Machines Corporation Non-disruptive clearing of varying address ranges from cache
US10725928B1 (en) * 2019-01-09 2020-07-28 Apple Inc. Translation lookaside buffer invalidation by range
US11151267B2 (en) 2019-02-25 2021-10-19 International Business Machines Corporation Move data and set storage key based on key function control
US11042483B2 (en) 2019-04-26 2021-06-22 International Business Machines Corporation Efficient eviction of whole set associated cache or selected range of addresses
US11132470B2 (en) * 2019-11-07 2021-09-28 Micron Technology, Inc. Semiconductor device with secure access key and associated methods and systems
US11030124B2 (en) 2019-11-07 2021-06-08 Micron Technology, Inc. Semiconductor device with secure access key and associated methods and systems
US11182308B2 (en) * 2019-11-07 2021-11-23 Micron Technology, Inc. Semiconductor device with secure access key and associated methods and systems
CN111338987B (zh) * 2020-02-13 2023-12-12 江苏华创微系统有限公司 快速无效组相联tlb的方法
US11422946B2 (en) 2020-08-31 2022-08-23 Apple Inc. Translation lookaside buffer striping for efficient invalidation operations
US11615033B2 (en) 2020-09-09 2023-03-28 Apple Inc. Reducing translation lookaside buffer searches for splintered pages

Family Cites Families (57)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US592853A (en) 1897-11-02 Electric battery
US4432053A (en) 1981-06-29 1984-02-14 Burroughs Corporation Address generating apparatus and method
JPS5815195A (ja) 1981-07-22 1983-01-28 株式会社日立製作所 制御棒駆動装置の自動交換装置
JPS5815196A (ja) 1981-07-22 1983-01-28 株式会社日立製作所 蒸気発生プラント
JPS58150196A (ja) 1982-02-27 1983-09-06 Fujitsu Ltd 主記憶キ−の更新制御方式
JPS58150195A (ja) 1982-02-27 1983-09-06 Fujitsu Ltd 主記憶キ−制御方式
JPS5994289A (ja) * 1982-11-22 1984-05-30 Hitachi Ltd 記憶制御方式
US4779188A (en) * 1983-12-14 1988-10-18 International Business Machines Corporation Selective guest system purge control
US4792895A (en) * 1984-07-30 1988-12-20 International Business Machines Corp. Instruction processing in higher level virtual machines by a real machine
EP0206653B1 (de) 1985-06-28 1992-10-21 Hewlett-Packard Company Verfahren und Mittel zum Laden und Speichern von Daten in einem Rechner mit beschränktem Befehlssatz
EP0220451B1 (de) 1985-10-30 1994-08-10 International Business Machines Corporation Cache-Speicherübereinstimmungsvorrichtung mit Verriegelung
JP2545789B2 (ja) 1986-04-14 1996-10-23 株式会社日立製作所 情報処理装置
JPS62295147A (ja) * 1986-06-16 1987-12-22 Hitachi Ltd 仮想計算機システム
JP2960415B2 (ja) * 1987-05-22 1999-10-06 株式会社日立製作所 記憶保護方法および装置
JP2510605B2 (ja) 1987-07-24 1996-06-26 株式会社日立製作所 仮想計算機システム
JP2507785B2 (ja) * 1988-07-25 1996-06-19 富士通株式会社 ペ―ジテ―ブルエントリ無効化装置
JP2592958B2 (ja) * 1989-06-30 1997-03-19 キヤノン株式会社 液晶装置
US5471593A (en) 1989-12-11 1995-11-28 Branigin; Michael H. Computer processor with an efficient means of executing many instructions simultaneously
US5317705A (en) 1990-10-24 1994-05-31 International Business Machines Corporation Apparatus and method for TLB purge reduction in a multi-level machine system
US5500948A (en) * 1991-10-29 1996-03-19 Intel Corporation Translating instruction pointer virtual addresses to physical addresses for accessing an instruction cache
US5423014A (en) * 1991-10-29 1995-06-06 Intel Corporation Instruction fetch unit with early instruction fetch mechanism
JP3242161B2 (ja) 1992-09-11 2001-12-25 株式会社日立製作所 データプロセッサ
US5615354A (en) * 1992-12-23 1997-03-25 International Business Machines Corporation Method and system for controlling references to system storage by overriding values
WO1994027215A1 (en) 1993-05-07 1994-11-24 Apple Computer, Inc. Method for decoding guest instructions for a host computer
DE69425310T2 (de) 1993-10-18 2001-06-13 Via Cyrix Inc Mikrosteuereinheit für einen superpipeline-superskalaren Mikroprozessor
JP2806778B2 (ja) 1994-01-28 1998-09-30 甲府日本電気株式会社 変換索引バッファクリア命令処理方式
DE19516949A1 (de) 1994-05-11 1996-02-15 Gmd Gmbh Speichervorrichtung zum Speichern von Daten
US5551013A (en) 1994-06-03 1996-08-27 International Business Machines Corporation Multiprocessor for hardware emulation
JP2842313B2 (ja) * 1995-07-13 1999-01-06 日本電気株式会社 情報処理装置
US5790825A (en) 1995-11-08 1998-08-04 Apple Computer, Inc. Method for emulating guest instructions on a host computer through dynamic recompilation of host instructions
US5761743A (en) * 1996-06-28 1998-06-09 Marmon Holdings, Inc. Finger cot and method of manufacturing finger cot
US5761734A (en) 1996-08-13 1998-06-02 International Business Machines Corporation Token-based serialisation of instructions in a multiprocessor system
US5782029A (en) * 1996-09-25 1998-07-21 Saf T Lok Corporation Firearm safety mechanism
JPH10301814A (ja) * 1997-04-23 1998-11-13 Hitachi Ltd 情報処理システム
US6009261A (en) 1997-12-16 1999-12-28 International Business Machines Corporation Preprocessing of stored target routines for emulating incompatible instructions on a target processor
US6079013A (en) 1998-04-30 2000-06-20 International Business Machines Corporation Multiprocessor serialization with early release of processors
US6119219A (en) 1998-04-30 2000-09-12 International Business Machines Corporation System serialization with early release of individual processor
US6199219B1 (en) 1998-05-08 2001-03-13 Howard Silken Device to facilitate removal of a helmet face mask
US6308255B1 (en) 1998-05-26 2001-10-23 Advanced Micro Devices, Inc. Symmetrical multiprocessing bus and chipset used for coprocessor support allowing non-native code to run in a system
US6119204A (en) 1998-06-30 2000-09-12 International Business Machines Corporation Data processing system and method for maintaining translation lookaside buffer TLB coherency without enforcing complete instruction serialization
US6978357B1 (en) 1998-07-24 2005-12-20 Intel Corporation Method and apparatus for performing cache segment flush and cache segment invalidation operations
US20020147969A1 (en) 1998-10-21 2002-10-10 Richard A. Lethin Dynamic optimizing object code translator for architecture emulation and dynamic optimizing object code translation method
GB9825102D0 (en) 1998-11-16 1999-01-13 Insignia Solutions Plc Computer system
US6467007B1 (en) 1999-05-19 2002-10-15 International Business Machines Corporation Processor reset generated via memory access interrupt
US6587964B1 (en) 2000-02-18 2003-07-01 Hewlett-Packard Development Company, L.P. Transparent software emulation as an alternative to hardware bus lock
US6604187B1 (en) 2000-06-19 2003-08-05 Advanced Micro Devices, Inc. Providing global translations with address space numbers
US6651132B1 (en) * 2000-07-17 2003-11-18 Microsoft Corporation System and method for emulating the operation of a translation look-aside buffer
EP1182570A3 (de) 2000-08-21 2004-08-04 Texas Instruments Incorporated TLB mit Ressource-Kennzeichnungsfeld
US6684305B1 (en) 2001-04-24 2004-01-27 Advanced Micro Devices, Inc. Multiprocessor system implementing virtual memory using a shared memory, and a page replacement method for maintaining paged memory coherence
US6715050B2 (en) * 2001-05-31 2004-03-30 Oracle International Corporation Storage access keys
US6801993B2 (en) 2001-09-28 2004-10-05 International Business Machines Corporation Table offset for shortening translation tables from their beginnings
US6931471B2 (en) * 2002-04-04 2005-08-16 International Business Machines Corporation Method, apparatus, and computer program product for migrating data subject to access by input/output devices
US7197585B2 (en) * 2002-09-30 2007-03-27 International Business Machines Corporation Method and apparatus for managing the execution of a broadcast instruction on a guest processor
JP3936672B2 (ja) * 2003-04-30 2007-06-27 富士通株式会社 マイクロプロセッサ
US7284100B2 (en) 2003-05-12 2007-10-16 International Business Machines Corporation Invalidating storage, clearing buffer entries, and an instruction therefor
US7530067B2 (en) * 2003-05-12 2009-05-05 International Business Machines Corporation Filtering processor requests based on identifiers
US7356710B2 (en) 2003-05-12 2008-04-08 International Business Machines Corporation Security message authentication control instruction

Also Published As

Publication number Publication date
CY1111466T1 (el) 2015-08-05
GB2414842A (en) 2005-12-07
US20050268045A1 (en) 2005-12-01
CN100397368C (zh) 2008-06-25
KR20060014030A (ko) 2006-02-14
ATE430963T1 (de) 2009-05-15
WO2004099997A1 (en) 2004-11-18
KR100834365B1 (ko) 2008-06-02
US20110119466A1 (en) 2011-05-19
EP1653343B1 (de) 2010-12-08
SI1653365T1 (sl) 2011-06-30
US20040230749A1 (en) 2004-11-18
GB0518904D0 (en) 2005-10-26
EP1914627B1 (de) 2009-11-18
DK1588267T3 (da) 2008-05-13
EP1588267A1 (de) 2005-10-26
EP1653343A2 (de) 2006-05-03
DE602004031628D1 (de) 2011-04-14
ES2297417T3 (es) 2008-05-01
GB0518901D0 (en) 2005-10-26
PT1653343E (pt) 2010-12-20
ATE491178T1 (de) 2010-12-15
EP1914627A3 (de) 2008-06-25
ES2327058T3 (es) 2009-10-23
US20050273561A1 (en) 2005-12-08
ATE449374T1 (de) 2009-12-15
WO2004099997A9 (en) 2005-10-27
US7284100B2 (en) 2007-10-16
DK1653365T3 (da) 2011-05-09
US20060036824A1 (en) 2006-02-16
PT1653365E (pt) 2011-03-22
SI1653343T1 (sl) 2011-01-31
US20120117356A1 (en) 2012-05-10
EP1653343A3 (de) 2006-07-19
ES2336973T3 (es) 2010-04-19
DE112004000464T5 (de) 2006-06-01
US7197601B2 (en) 2007-03-27
PL1701269T3 (pl) 2009-10-30
EP1653365B1 (de) 2011-03-02
GB2413876B (en) 2006-03-01
US7890731B2 (en) 2011-02-15
DE602004011018D1 (de) 2008-02-07
ATE500553T1 (de) 2011-03-15
US8122224B2 (en) 2012-02-21
US20070186075A1 (en) 2007-08-09
JP2006526203A (ja) 2006-11-16
CN1904860A (zh) 2007-01-31
EP1701269A1 (de) 2006-09-13
US7281115B2 (en) 2007-10-09
GB2414841A (en) 2005-12-07
ES2357802T3 (es) 2011-04-29
PL1653365T3 (pl) 2011-07-29
EP1701269B1 (de) 2009-05-06
EP1914627A2 (de) 2008-04-23
CY1111421T1 (el) 2015-08-05
CN1784663A (zh) 2006-06-07
DE602004030452D1 (de) 2011-01-20
DK1653343T3 (da) 2011-01-24
EP1653365A3 (de) 2006-11-08
EP1588267B1 (de) 2008-01-02
ES2359893T3 (es) 2011-05-27
GB0516192D0 (en) 2005-09-14
KR100834362B1 (ko) 2008-06-02
GB2414841B (en) 2006-07-05
GB2413876A (en) 2005-11-09
PL1588267T3 (pl) 2008-06-30
DE602004024254D1 (de) 2009-12-31
DK1701269T3 (da) 2009-08-03
DE602004021030D1 (de) 2009-06-18
ATE382896T1 (de) 2008-01-15
KR20060093140A (ko) 2006-08-23
US8452942B2 (en) 2013-05-28
JP4608484B2 (ja) 2011-01-12
CN100363908C (zh) 2008-01-23
PL1653343T3 (pl) 2011-03-31
IL171905A0 (en) 2006-04-10
IL171905A (en) 2010-06-16
GB2414842B (en) 2006-07-05
EP1653365A2 (de) 2006-05-03

Similar Documents

Publication Publication Date Title
DE602004011018T2 (de) Ungültigkeitserklärung eines speichers und löschen von puffereinträgen
DE112015001977B4 (de) Synchronisieren von Aktualisierungen von Statusanzeigern in einer Datenverarbeitungsumgebung
DE102007063960B3 (de) Synchronisieren eines Übersetzungspufers (TLB) mit einer erweiterten Seitenwechseltabelle
DE112005003859B4 (de) Verwalten von Prozessorressourcen während Architekturereignissen
DE112005002405B4 (de) Fehlerverarbeitung für Direktspeicherzugriffs-Adreßübersetzung
DE112010003492B4 (de) Transaktionsspeichersystem mit wirksamerZwischenspeicherunterstützung
DE60103414T2 (de) Cpu, die auf ein erweitertes registerset in einem erweiterten registermodus zugreift und entsprechendes verfahren
DE69738101T2 (de) Verwaltung des Zugangs zu Objekten mit Hilfe von Referenzen mit drei Zuständen
DE2226382C3 (de) Datenverarbeitungsanlage mit mehreren Prozessoren und diesen zugeordneten Pufferspeichern
DE112017001027B4 (de) Seitenfehlerbehebung
DE112018004384B4 (de) Schützen von arbeitsspeicherinternen konfigurationsstatusregistern
DE112010004322T5 (de) Vorhersagen und Vermeiden von Operand-Speichervorgang-Vergleich-Gefahren in Mikroprozessoren mit abweichender Reihenfolge
DE112010004971T5 (de) Ein System, Verfahren und eine Vorrichtung für einen Cache-Flush eines Seitenbereichs und TLB Invalidierung eines Bereichs von Einträgen
DE102010035603A1 (de) Bereitstellen von Hardwareunterstützung für gemeinsam benutzten virtuellen Speicher zwischen physischem Lokal- und Fernspeicher
DE102008025476A1 (de) Übersetzung einer virtuellen Adresse in eine physikalische Adresse mit Unterstützung von Seitenattributen
DE102014014076A1 (de) Reduzierte Adressenkonvertierung mit mehreren Seitengrößen
DE112007001988T5 (de) Gemeinsames Nutzen von Informationen durch Gäste in einer Virtuelle-Maschine-Umgebung
DE112013003731T5 (de) Neue befehls- und hocheffiziente Mikroarchitektur zum ermöglichen einer sofortigen Kontextumschaltung für Benutzerebenen-Threading
DE202014010938U1 (de) Omega-Namen: Namenserzeugung und -ableitung
DE102014109083A1 (de) Bilden von Anweisungsgruppen basierend auf der Optimierung von Anweisungen bei der Dekodierung
DE112013004397T5 (de) Auswählbare Adressumsetzungsmechanismen
DE112018004364B4 (de) Vereinfachung einer verarbeitung in einer datenverarbeitungsumgebung durch gruppierung eines konfigurationsstatusregisters auf grundlage von funktionaler affinität
DE102012217315A1 (de) Verwenden von nativen Routinen an Stelle von emulierten Routinen in einer emulierten Anwendung
DE112016005823T5 (de) Überwachen des betriebs eines prozessors
DE112018003032T5 (de) Cachestruktur, die ein logisches verzeichnis verwendet

Legal Events

Date Code Title Description
8364 No opposition during term of opposition