DE60102017T2 - Räumungsfilter für adressenübersetzungspuffer - Google Patents

Räumungsfilter für adressenübersetzungspuffer Download PDF

Info

Publication number
DE60102017T2
DE60102017T2 DE60102017T DE60102017T DE60102017T2 DE 60102017 T2 DE60102017 T2 DE 60102017T2 DE 60102017 T DE60102017 T DE 60102017T DE 60102017 T DE60102017 T DE 60102017T DE 60102017 T2 DE60102017 T2 DE 60102017T2
Authority
DE
Germany
Prior art keywords
tlb
memory
processor
address
address translations
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE60102017T
Other languages
English (en)
Other versions
DE60102017D1 (de
Inventor
D. Gerald ZURASKI
T. Michael CLARK
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.)
GlobalFoundries Inc
Original Assignee
Advanced Micro Devices Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of DE60102017D1 publication Critical patent/DE60102017D1/de
Application granted granted Critical
Publication of DE60102017T2 publication Critical patent/DE60102017T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/682Multiprocessor TLB consistency
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

  • 1. Technisches Gebiet
  • Die vorliegende Erfindung betrifft Prozessoren und insbesondere einen Translation-Lookaside-Puffer zum Speichern von Adressenumsetzungen.
  • 2. Stand der Technik
  • Bei Computersystemen mit einem Speicher-Management kann es erforderlich sein, virtuelle Adressen in reelle Adressen umzusetzen, um einen Speicherzugriff durchzuführen. Es werden typische Computerprogramme geschrieben, um ein Speichermodell anzusprechen und somit beim Durchführen eines Speicherzugriffs virtuelle Speicheradressen auszugeben. Eine virtuelle Speicheradresse muss dann zum Zugreifen auf die von dem Programm benötigten Informationen in eine reelle Adresse umgesetzt werden. Es gibt verschiedene Mechanismen in unterschiedlichen Computerarchitekturen zum Durchführen einer Umsetzung von einer virtuellen in eine reelle Adresse.
  • Ein Problem beim Durchführen von Adressenumsetzungen ist die Latenz. Zusätzlich zu der zum Zugreifen auf die Informationen aus einem Speicher benötigten Zeit kann eine Anzahl von Taktzyklen zum Durchführen der Adressenumsetzungen verwendet werden. Diese nachteilige Latenz kann bei Programmen, die häufige Speicherzugriffe durchführen, störend oder inakzeptabel werden. Ein allgemein angewandtes Verfahren zum Reduzieren der nachteiligen Latenz beim Umsetzen von Adressen ist die Verwendung eines Translation-Lookaside-Puffers (TLB). Ein TLB ist ein kleiner Speicher innerhalb eines Prozessors und wird zum Speichern von Umsetzungen von virtuellen in reelle Adressen verwendet. Ein typischer TLB kann sowohl virtuelle als auch reelle Adressen der jüngsten Adressenumsetzungen speichern. Wenn ein Programm einen Speicherzugriff versucht, kann es eine virtuelle Adresse ausgeben. Der TLB kann dann nach der ausgegebenen virtuellen Adresse durchsucht werden. Wenn diese virtuelle Adresse gefunden ist, kann eine der ausgegebenen virtuellen Adresse entsprechende reelle Adresse zum Zugreifen auf den Hauptspeicher verwendet werden. Typischerweise werden Umsetzungen auf Seitenbasis (z. B. 4 Kilobyte, 2 Megabyte, 4 Megabyte etc.) durchgeführt und kann der TLB den Seitenteil der virtuellen Adresse und den Seitenteil der entsprechenden reellen Adresse speichern.
  • Trotz der von einem TLB gebotenen Vorteile gibt es immer noch Probleme. Ein solches Problem tritt bei einer Programmumschaltung auf. Bei vielen Prozessoren, bei denen ein TLB verwendet wird, führt eine Programmumschaltung zum Entfernen sämtlicher in dem TLB gespeicherten Umsetzungen. Dies ist als TLB-Leeren bekannt. Der TLB wird geleert, da eine oder mehrere Adressenumsetzungen entsprechend dem ausgeschalteten Programm modifiziert werden können und somit die in dem TLB gepufferten Umsetzungen möglicherweise nicht mehr die korrekten Umsetzungen sind. Wenn der der Programmumschaltung folgende neue Prozess abläuft, macht jeder Speicherzugriff leider eine Adressenumsetzung erforderlich und muss der TLB neu geladen werden. Die Adressenumsetzungen und das Neuladen des TLB können zu langen nachteiligen Latenzen führen. Diese nachteiligen Latenzen können durch Programme oder Betriebssysteme verstärkt werden, bei denen häufige Programmumschaltungen erforderlich sind.
  • Die in einem TLB gespeicherten Adressenumsetzungen werden durch darunter liegende in dem Speicher gespeicherte Datenstrukturen gestützt. Beispielsweise können Computer, bei denen ein Paging angewendet wird, Datenstrukturen in einer Seitentabelle speichern. Solche Datenstrukturen können die Umsetzungen enthalten, die in den TLB geladen sind. Obwohl diese Datenstrukturen für ein Programm verändert werden können, das über eine Pro grammumschaltung ausgeschaltet worden war, werden diese Datenstrukturen häufig nicht verändert. Trotz der Tatsache, dass die Datenstrukturen nicht in allen Fällen verändert werden, kann ein typischer Prozessor trotzdem den TLB leeren. Ein TLB-Leeren unter solchen Umständen ist möglicherweise nicht erforderlich und kann zu den oben beschriebenen langen nachteiligen Latenzen führen.
  • In US-A-6,021,481 ist ein Verfahren zum Verwalten eines Cache-Speichers für Umsetzungen von effektiven in echte Adressen beschrieben, bei dem eine Aufzeichnung darüber geführt wird, welche Segmentregister aktuell in dem Cache-Speicher abgebildet sind. Wenn dann ein Übertragung-zu-einem-Segmentregister- (MTSR-) Befehl ausgeführt wird, wird ein Cache-Speicher-Segmentregister-Latch untersucht, um festzustellen, ob dieses Segmentregister in dem Cache-Speicher abgebildet ist, und wenn dies der Fall ist, wird ein Invalidierungs-Latch gesetzt. Wenn dann ein Programmsynchronisierungsereignis eintritt, wird das Invalidierungs-Latch untersucht, um festzustellen, ob der Cache-Speicher invalidiert werden soll oder nicht.
  • In DE-A-195 16 949 ist ein Leerungs-Lookaside-Puffer (FLB) für ein schnelles Invalidieren ganzer Bereiche in einem Translation-Lookaside-Puffer (TLB) beschrieben, wobei bei Überlaufen des FLB sowohl der TLB als auch der FLB invalidiert werden.
  • In EP-A-0,568,195 ist ein Prozess zum Reduzieren des Gesamtplatzbedarfs für das TLB-Leeren dadurch, dass ein TLB nur dann geleert wird, wenn ein Adressenplatz für eine neue Aufgabe wiederverwendet wird, beschrieben, wobei ein FIFO Adressenplatzidentifizierer mit einer Leerungs-Markierung aufweist, die ein Leeren bewirkt, wenn sie am oberen Teil des FIFO erscheint.
  • In US-A-4,053,948 ist ein Lookaside-Array-Invalidierungs-Mechanismus mit einem Leerungs-Zähler und einem Leerungs-Zählfeld in einem TLB-Eingang mit einem Inkrement-Zähler und einer Invalidierung des TLB bei Zählerüberlauf beschrieben.
  • Die oben beschriebenen Probleme können zum großen Teil durch ein Translation-Lookaside-Puffer- (TLB-) Leerungsfilter, das nachstehend beschrieben wird, gelöst werden. Bei einer Ausführungsform weist ein Prozessor einen TLB zum Speichern jüngerer Adressenumsetzungen auf. Ein TLB-Leerungsfilter überwacht Speicherblöcke, aus denen Adressenumsetzungen geladen und in dem TLB gepuffert worden sind. Das TLB-Leerungsfilter stellt fest, ob sich darunter liegende Adressenumsetzungen in dem Speicher verändert haben. Wenn keine Veränderungen aufgetreten sind, kann das TLB-Leerungsfilter ein Leeren des TLB bei einer Programmumschaltung verhindern. Wenn Veränderungen an den darunter liegenden Adressenumsetzungen aufgetreten sind, kann das TLB-Leerungsfilter ein Leeren des TLB nach einer Programmumschaltung ermöglichen.
  • Bei einer Ausführungsform verwendet das TLB-Filter eine Bereichstabelle zum Verfolgen von Speicherblöcken, aus denen Adressenumsetzungen in dem TLB gepuffert worden sind. Das TLB-Leerungsfilter kann Modifikationen an den darunter liegenden Adressenumsetzungen in verschiedenen Speicherblöcken (typischerweise Seitentabellen oder Verzeichnissen) überwachen. Eine erste Programmumschaltung kann zu einer TLB-Leerung führen und kann dann das TLB-Leerungsfilter aktivieren. TLB-Leerungen können bei nachfolgenden Programmumschaltungen von dem TLB-Leerungsfilter blockiert werden, wenn keine Veränderungen an den darunter liegenden Adressenumsetzungen in dem Speicher in der Bereichstabelle detektiert werden.
  • Das Verfahren zum Betreiben des TLB-Leerungsfilters umfasst ferner das Verfolgen von Programmumschaltungen. Bei einer Ausführungsform kann dies durch Markieren der Werte eines Basisadressenregisters erfolgen. Das Basisadressenregister kann zum Speichern der Basisadresse einer einem speziellen Programm zugeordneten Seitentabelle vorgesehen sein. Die Markierung und der Istwert des Registers können als Einträge in der Bereichstabelle gespeichert werden und können spezifischen Speicherbereichen entsprechen.
  • Die Markierung kann zusammen mit anderen Daten in einem TLB-Eintrag gespeichert werden, um die Umsetzung in diesem Eintrag einem Programm zuzuordnen. Auf diese Weise können Umsetzungen für viele Programme gleichzeitig in dem TLB vorhanden sein. Nur Umsetzungen mit Programmmarkierungen, die mit der aktuellen Programmmarkierung übereinstimmen, stehen dem aktuellen Programm zur Verfügung.
  • Die bei einer Ausführungsform verwendete Bereichstabelle ist mit einem inhaltsadressierbaren Speicher (CAM) und einem Direktzugriffsspeicher (RAM) implementiert. Der CAM kann zum Speichern von Informationen bezüglich der Speicherstrukturen verwendet werden, aus denen Adressenumsetzungen in den TLB geladen werden. Solche Informationen können Seitenverzeichnisinformationen und Seitentabelleinformationen enthalten. Der RAM kann zum Speichern von Werten des Basisadressenregisters und der diesem zugeordneten Markierung verwendet werden. Ein Zähler kann ferner zum Verfolgen der Anzahl von Basisadresseneinträgen verwendet werden. Bei Zählerüberlauf können das TLB-Leerungsfilter deaktiviert und die Bereichstabelle gelöscht werden. Ein Bereichszähler kann ferner zum Aufzeichnen der Anzahl von in dem CAM gespeicherten Einträgen verwendet werden. Ein Überlaufen dieses Zählers kann ebenfalls ein Deaktivieren des TLB-Leerungsfilters und ein Löschen der Bereichstabelle bewirken. Nach der Deaktivierung des TLB-Leerungsfilters kann eine Programmumschaltung zu einer TLB-Leerung führen. Das TLB-Leerungsfilter kann dann wieder aktiviert werden.
  • Somit kann bei verschiedenen Ausführungsformen das TLB-Leerungsfilter unnötige Entleerungen eines TLB verhindern. Da unnötige Entleerungen eines TLB verhindert werden können, kann ein neues Programm die zuvor gepufferten Adressenumsetzungen verwenden, wenn sich keine der darunter liegenden Adressenumsetzungen verändert haben. In vielen Fällen kann dadurch das Erfordernis der Wiederholung des Prozesses des Umsetzens einer virtuellen Adresse in eine reelle Adresse und des Pufferns dieser Adresse in dem TLB eliminiert werden. Somit kann die Latenz bei einer großen Anzahl von Spei cherzugriffen beträchtlich reduziert werden und kann dadurch eine beträchtliche Steigerung der Prozessorleistung ermöglicht werden.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Weitere Aufgaben und Vorteile der Erfindung werden anhand der folgenden detaillierten Beschreibung mit Bezug auf die beiliegenden Zeichnungen offensichtlich. Es zeigen:
  • 1 ein Blockschaltbild einer Ausführungsform eines Prozessors, bei dem ein TLB-Leerungsfilter implementierbar ist;
  • 2 ein Blockschaltbild einer Ausführungsform eines Teils eines Prozessors, bei dem ein TLB-Leerungsfilter verwendet wird;
  • 3 ein Blockschaltbild einer Ausführungsform eines TLB-Leerungsfilters;
  • 4 eine schematische Darstellung von Bereichstabelleneinträgen für eine Ausführungsform des TLB-Leerungsfilters;
  • 5 ein Logikdiagramm mit Darstellung der Logik zum Betreiben einer Ausführungsform des TLB-Leerungsfilters;
  • 6 ein Zeitdiagramm mit Darstellung des Betreibens einer Ausführungsform des TLB-Leerungsfilters;
  • 7A ein Blockschaltbild einer Paging-Struktur mit Einträgen in einer Bereichstabelle;
  • 7B ein Blockschaltbild einer Bereichstabelle mit Einträgen entsprechend der in 7A gezeigten Paging-Struktur; und
  • 8 ein Blockschaltbild einer Ausführungsform eines Computersystems, in das ein TLB-Leerungsfilter implementierbar ist.
  • Obwohl verschiedene Modifikationen und alternative Ausführungsformen der Erfindung möglich sind, sind spezifische Ausführungsformen der Erfindung in den Zeichnungen beispielhaft dargestellt und nachstehend genauer beschrieben. Es sei jedoch darauf hingewiesen, dass die Zeichnungen und die Beschreibung die Erfindung nicht auf die spezielle offenbarte Ausführungsform beschränken, sondern im Gegenteil die Erfindung sämtliche Modifikationen, Äquivalente und Alternativen umfasst, die in den Wesensgehalt und den Umfang der vorliegenden Erfindung fallen, wie sie in den beiliegenden Patentansprüchen definiert sind.
  • ART(EN) ZUM DURCHFÜHREN DER ERFINDUNG
  • 1 zeigt ein Blockschaltbild einer Ausführungsform eines Prozessors 10. Andere Ausführungsformen sind möglich und werden in Betracht gezogen. Gemäß 1 weist der Prozessor 10 eine Vorabruf-/Vordekodiereinheit 12, eine Verzweigungs-Vorhersageeinheit 14, einen Befehls-Cache-Speicher 16, eine Befehls-Ausrichtungseinheit 18, mehrere Dekodiereinheiten 20A-20C, mehrere Reservierstationen 22A-22C, mehrere Funktionseinheiten 24A-24C, eine Lade-/Speichereinheit 26, einen Daten-Cache-Speicher 28, eine Registerdatei 30, einen Neuordnungspuffer 32, eine MROM-Einheit 34 und eine Bus-Interface-Einheit 37 auf. Elemente, die hier mit einem speziellen Bezugszeichen, dem ein Buchstabe folgt, aufgeführt sind, werden kollektiv nur mit dem Bezugszeichen bezeichnet. Beispielsweise werden die Dekodiereinheiten 20A-20C kollektiv als Dekodiereinheiten 20 bezeichnet.
  • Die Vorabruf-/Vordekodiereinheit 12 ist zum Empfangen von Befehlen von der Bus-Interface-Einheit 37 vorgesehen und ferner mit dem Befehls-Cache-Speicher 16 und der Verzweigungs-Vorhersageeinheit 14 gekoppelt. Ähnlich ist die Verzweigungs-Vorhersageeinheit 14 mit dem Befehls-Cache-Speicher 16 gekoppelt. Außerdem ist die Verzweigungs-Vorhersageeinheit 14 mit den Dekodiereinheiten 20 und den Funktionseinheiten 24 gekoppelt. Der Befehls-Cache-Speicher 16 ist ferner mit der MROM-Einheit 34 und der Befehls-Ausrichtungseinheit 18 gekoppelt. Die Befehls-Ausrichtungseinheit 18 ist wiederum mit den Dekodiereinheiten 20 gekoppelt. Jede Dekodiereinheit 20A-20C ist mit der Lade-/Speichereinheit 26 und den jeweiligen Reservierstationen 22A-22C gekoppelt. Die Reservierstationen 22A-22C sind ferner mit den jeweiligen Funktionseinheiten 24A-24C gekoppelt. Außerdem sind die Dekodiereinheiten 20 und die Reserviereinheiten 22 mit der Registerdatei 30 und dem Neuordnungspuffer 32 gekoppelt. Die Funktionseinheiten 24 sind auch mit der Lade-/Speichereinheit 26, der Registerdatei 30 und dem Neuordnungspuffer 32 gekoppelt. Der Daten-Cache-Speicher 28 ist mit der Lade-/Speichereinheit 26 und der Bus-Interface-Einheit 37 gekoppelt. Die Bus-Interface-Einheit 37 ist ferner mit einem L2-Interface zu einem L2-Cache-Speicher und mit einem Bus gekoppelt. Schließlich ist die MROM-Einheit 34 mit den Dekodiereinheiten 20 gekoppelt.
  • Der Befehls-Cache-Speicher 16 ist ein Hochgeschwindigkeits-Cache-Speicher zum Speichern von Befehlen. Befehle werden aus dem Befehls-Cache-Speicher 16 abgerufen und an die Dekodiereinheiten 20 übermittelt. Bei einer Ausführungsform ist der Befehls-Cache-Speicher 16 zum Speichern von Befehlen bis zu 64 Kilobyte in einer 2-Wege-Teilassoziativ-Struktur mit 64-Byte-Zeilen (ein Byte umfasst 8 Binärbits) vorgesehen. Alternativ kann eine beliebige andere gewünschte Konfiguration und Größe verwendet werden. Beispielsweise sei darauf hingewiesen, dass der Befehls-Cache-Speicher 16 als vollassoziative, teilassoziative oder direkt abgebildete Konfiguration implementiert werden kann.
  • Befehle werden von der Vorabruf-/Vordekodier-Einheit 12 in dem Befehls-Cache-Speicher 16 gespeichert. Befehle können vor der Anforderung gemäß einem Vorabruf-Schema aus dem Befehls-Cache-Speicher 16 vorabgerufen werden. Eine Vielzahl von Vorabruf-Schemata kann von der Vorabruf-/Vor dekodier-Einheit 12 verwendet werden. Wenn die Vorabruf-/Vordekodier-Einheit 12 Befehle in den Befehls-Cache-Speicher 16 transferiert, erzeugt die Vorabruf-/Vordekodier-Einheit 12 drei Vordekodierbits für jedes Byte des Befehls: ein Startbit, ein Endbit und ein Funktionsbit. Die Vordekodierungsbits bilden Markierungen, welche die Grenzen jedes Befehls anzeigen. Die Vordekodierungsmarkierungen können auch zusätzliche Informationen befördern, wie zum Beispiel, ob ein bestimmter Befehl direkt von den Dekodiereinheiten 20 dekodiert werden kann oder ob der Befehl durch das Aufrufen eines von der MROM Einheit 34 gesteuerten Mikrocode-Verfahrens ausgeführt wird, wie nachfolgend detaillierter beschrieben wird. Ferner kann die Vorabruf-/Vordekodier-Einheit 12 derart konfiguriert sein, dass sie Verzweigungsbefehle detektiert und Verzweigungsbefehlsinformationen entsprechend den Verzweigungsbefehlen in der Verzweigungs-Vorhersageeinheit 14 speichert. Andere Ausführungsbeispiele können jedes geeignete Vordekodierungsschema verwenden.
  • Eine Kodierung der Vordekodierungsmarkierungen für ein Ausführungsbeispiel des Prozessors 10, der einen Befehlssatz mit variabler Byte-Länge verwendet, wird als nächstes beschrieben. Ein Befehlssatz mit variabler Byte-Länge ist ein Befehlssatz, in dem verschiedene Befehle unterschiedliche Anzahlen von Bytes belegen können. Ein beispielhafter Befehlssatz mit variabler Byte-Länge, der von einem Ausführungsbeispiel des Prozessors 10 verwendet wird, ist der x86 Befehlssatz.
  • In der beispielhaften Kodierung wird, wenn ein gegebenes Byte das erste Byte eines Befehls ist, das Startbit für dieses Byte gesetzt. Wenn das Byte das letzte Byte eines Befehls ist, wird das Endbit für dieses Byte gesetzt. Befehle, die von den Dekodiereinheiten 20 direkt dekodiert werden können, werden als "Schnellweg"-Befehle bezeichnet. Die verbleibenden x86-Befehle werden bei einem Ausführungsbeispiel als MROM-Befehle bezeichnet. Bei Schnellweg-Befehlen wird das Funktionsbit für jedes in dem Befehl enthaltene Präfix-Byte gesetzt und für andere Bytes gelöscht. Alternativ wird bei MROM-Befehlen das Funktionsbit für jedes Präfix-Byte gelöscht und für andere Bytes gesetzt. Der Befehlstyp kann durch die Untersuchen des Funktionsbits, das dem Ende-Byte entspricht, bestimmt werden. Wenn dieses Funktionsbit frei ist, ist der Befehl ein Schnellweg-Befehl. Im Gegensatz dazu ist, wenn dieses Funktionsbit gesetzt ist, der Befehl ein MROM-Befehl. Der Opcode eines Befehls kann dadurch innerhalb eines Befehls angeordnet sein, welcher direkt von den Dekodiereinheiten 20 als das Byte dekodiert werden kann, das mit dem ersten freien Funktionsbit in dem Befehl verbunden ist. Zum Beispiel hätte ein Schnellweg-Befehl mit zwei Präfix-Bytes, einem Mod R/M-Byte und einem Sofort-Byte folgende Start-, End- und Funktionsbits:
    Startbits 10000
    Endbits 00001
    Funktionsbits 11000
  • MROM-Befehle sind Befehle, welche als zu komplex angesehen sind, um von den Dekodiereinheiten 20 dekodiert zu werden. MROM-Befehle werden durch das Aufrufen der MROM-Einheit 34 ausgeführt. Wenn ein MROM-Befehl angetroffen wird, analysiert die MROM-Einheit 34 den Befehl und gibt ihn in einen Teilsatz von definierten Schnellweg-Befehlen aus, um die gewünschte Operation zu bewirken. Die MROM-Einheit 34 gibt den Teilsatz von Schnellweg-Befehlen an die Dekodiereinheiten 20 weiter.
  • Der Prozessor 10 verwendet eine Verzweigungsvorhersage zum spekulativen Abrufen von Befehlen nach bedingten Verzweigungsbefehlen. Die Verzweigungs-Vorhersageeinheit 14 ist enthalten, um Verzweigungsvorhersageoperationen auszuführen. Bei einem Ausführungsbeispiel verwendet die Verzweigungs-Vorhersageeinheit 14 einen Verzweigungs-Target-Puffer, der bis zu zwei Verzweigungs-Target-Adressen und entsprechende Genommen/Nichtgenommen-Vorhersagen pro 16-Byte-Bereich einer Cachezeile im Befehls-Cache-Speicher 16 zwischenspeichert. Der Verzweigungs-Target-Puffer kann zum Beispiel 2048 Einträge oder jede andere geeignete Anzahl an Einträgen aufweisen. Die Vorabruf-/Vordekodier-Einheit 12 bestimmt die anfänglichen Verzweigungs-Targets, wenn eine bestimmte Zeile vordekodiert wird. Nach folgende Aktualisierungen der Verzweigungs-Targets, die einer Cache-Zeile entsprechen, können aufgrund der Ausführung von Befehlen innerhalb der Cache-Zeile auftreten. Der Befehls-Cache-Speicher 16 zeigt an, dass die Adresse des Befehls abgerufen wird, so dass die Verzweigungs-Vorhersageeinheit 14 bestimmen kann, welche Verzweigungs-Target-Adressen für die Erzeugung einer Verzweigungsvorhersage auszuwählen sind. Die Dekodiereinheiten 20 und die Funktionseinheiten 24 stellen der Verzweigungs-Vorhersageeinheit 14 Aktualisierungsinformationen zur Verfügung. Die Dekodiereinheiten 20 detektieren Verzweigungsbefehle, die nicht von der Verzweigungs-Vorhersageeinheit 14 vorher gesagt worden sind. Die Funktionseinheiten 24 führen die Verzweigungsbefehle aus und stellen fest, ob die vorhergesagte Richtung der Verzweigung nicht korrekt ist. Die Verzweigungsrichtung kann "genommen" werden, wobei nachfolgende Befehle von der Target-Adresse des Verzweigungsbefehls abgerufen werden. Im Gegensatz dazu ist es möglich, dass die Verzweigungsrichtung "nicht genommen" wird, wobei nachfolgende Befehle von Speicherstellen abgerufen werden, die dem Verzweigungsbefehl folgen. Wenn ein falsch vorhergesagter Verzweigungsbefehl detektiert wird, werden Befehle, die der falsch vorhergesagten Verzweigung folgen, von den verschiedenen Einheiten des Prozessors 10 verworfen. In einer alternativen Ausbildung kann die Verzweigungs-Vorhersageeinheit 14 mit dem Umordnungspuffer 32 statt mit den Dekodiereinheiten 20 und den Funktionseinheiten 24 verbunden sein und kann Verzweigungs-Fehlvorhersageinformationen von dem Umordnungspuffer 32 empfangen. Eine Vielzahl von geeigneten Algorithmen zur Verzweigungsvorhersage kann von der Verzweigungs-Vorhersageeinheit 14 verwendet werden.
  • Aus dem Befehls-Cache-Speicher 16 abgerufene Befehle werden zu der Befehls-Ausrichtungseinheit 18 befördert. Wenn Befehle aus dem Befehls-Cache-Speicher 16 abgerufen werden, werden die entsprechenden Vordekodierungsdaten abgetastet, um der Befehls-Ausrichtungseinheit 18 (und der MROM-Einheit 34) Informationen hinsichtlich der abgerufenen Befehle zu liefern. Die Befehls-Ausrichtungseinheit 18 verwendet die abgetasteten Daten, um einen Befehl auf jede der Dekodiereinheiten 20 auszurichten. Bei einem Ausfüh rungsbeispiel richtet die Befehls-Ausrichtungseinheit 18 Befehle von drei Sätzen von acht Befehls-Bytes auf die Dekodiereinheiten 20 aus. Die Dekodiereinheit 20A empfängt einen Befehl, der den Befehlen vorangeht, welche gleichzeitig von den Dekodiereinheiten 20B und 20C empfangen werden (in Programmreihenfolge. Auf ähnliche Weise empfängt die Dekodiereinheit 20B einen Befehl, der dem Befehl vorangeht, welcher in Programmreihenfolge gleichzeitig von der Dekodiereinheit 20C empfangen wird.
  • Die Dekodiereinheiten 20 sind derart konfiguriert, dass sie von der Befehls-Ausrichtungseinheit 18 empfangene Befehle dekodieren. Informationen bezüglich der Registeroperanden werden detektiert und zu der Registerdatei 30 und dem Umordnungspuffer 32 weitergeleitet. Ferner schicken die Dekodiereinheiten 20 die Speicheroperationen an die Lade-/Speicher-Einheit 26, wenn es die Befehle erforderlich machen, dass eine oder mehrere Speicheroperationen ausgeführt werden. Jeder Befehl wird in einen Satz von Steuerwerten für die Funktionseinheiten 24 dekodiert, und diese Steuerwerte werden zusammen mit Operandenadresseninformationen und Ersatz- oder Direktdaten, welche in dem Befehl enthalten sein können, an die Reservierungsstationen 22 geschickt. Bei einem bestimmten Ausführungsbeispiel wird jeder Befehl in bis zu zwei Operationen dekodiert, welche von den Funktionseinheiten 24A-24C separat ausgeführt werden können.
  • Der Prozessor 10 unterstützt eine nicht geordnete Ausführung und verwendet daher den Umordnungspuffer 32, um die ursprüngliche Abfolge des Programms für Lese- und Schreiboperationen für die Register zu verfolgen, die Registerumbenennung zu implementieren, eine spekulative Ausführung von Befehlen und die Wiederherstellung bei falsch vorhergesagten Verzweigungen zu ermöglichen und um präzise Ausnahmen zu erleichtern. Eine temporäre Speicherstelle innerhalb des Umordnungspuffers 32 wird bei Dekodierung eines Befehls reserviert, der die Aktualisierung eines Registers umfasst, um dort spekulative Registerzustände zu speichern. Wenn eine Verzweigungsvorhersage falsch ist, können die Ergebnisse der spekulativ ausgeführten Befehle entlang des falsch vorhergesagten Pfads in dem Puffer ungültig gemacht wer den bevor sie in die Registerdatei 30 geschrieben werden. Auf ähnliche Weise können Befehle, die auf einen bestimmten Befehl folgen, verworfen werden, wenn der bestimmte Befehl eine Ausnahme verursacht. Auf diese Weise werden Ausnahmen "präzise" (das heißt Befehle, die auf den bestimmten Befehl folgen, welcher eine Ausnahme verursacht, werden nicht früher als die Ausnahme beendet). Es ist festzuhalten, dass ein bestimmter Befehl spekulativ ausgeführt wird, wenn er vor Befehlen ausgeführt wird, die dem bestimmten Befehl in der Reihenfolge des Programms vorangehen. Vorangehende Befehle können ein Verzweigungsbefehl oder ein eine Ausnahme verursachender Befehl sein, in welchem Fall die spekulativen Ergebnisse von dem Umordnungspuffer 32 verworfen werden können.
  • Die Steuerwerte für die Befehle und die Ersatz- und Direktdaten, die an den Ausgängen der Dekodiereinheiten 20 zur Verfügung gestellt werden, werden direkt an die entsprechenden Reservierungsstationen 22 weitergeleitet. Bei einem Ausführungsbeispiel ist jede Reservierungsstation 22 in der Lage, Informationen bezüglich der Befehle (das heißt sowohl Befehls-Steuerwerte als auch Operandenwerte, Operandenmarkierungen und/oder Direktdaten) für bis zu sechs ausstehende Befehle, die auf die Ausgabe an die entsprechende Funktionseinheit warten, zu halten. Es ist zu bemerken, dass bei dem Ausführungsbeispiel aus 1 jede Reservierungsstation 22 einer bestimmten Funktionseinheit 24 zugeordnet ist. Entsprechend werden drei bestimmte "Ausgabepositionen" von den Reservierungsstationen 22 und den Funktionseinheiten 24 gebildet. Anders ausgedrückt wird die Ausgabeposition 0 von der Reservierungsstation 22A und der Funktionseinheit 24A gebildet. Befehle, die auf die Reservierungsstation 22A ausgerichtet und an diese geschickt wurden, werden von der Funktionseinheit 24A ausgeführt. Auf ähnliche Weise wird die Ausgabeposition 1 von der Reservierungsstation 22B und der Funktionseinheit 24B gebildet, und die Ausgabeposition 2 wird von der Reservierungsstation 22C und der Funktionseinheit 24C gebildet.
  • Bei Dekodieren eines bestimmten Befehls werden, falls ein benötigter Operand eine Registerstelle ist, Registeradresseninformationen gleichzeitig an den Umordnungspuffer 32 und die Registerdatei 30 weitergeleitet. Fachleute auf dem Gebiet wissen, dass die x86-Registerdatei acht reale 32-Bit-Register umfasst (das heißt, diese werden üblicherweise als EAX, EBX, ECX, EDX, EBP, ESI, EDI und ESP bezeichnet). Bei Ausführungsbeispielen des Prozessors 10, welche die x86-Prozessorarchitektur verwenden, weist die Registerdatei 30 Speicherstellen für jedes der realen 32-Bit-Register auf. Zusätzliche Speicherstellen können innerhalb der Registerdatei 30 für die Benutzung durch die MROM-Einheit 34 enthalten sein. Der Umordnungspuffer 32 enthält temporäre Speicherstellen für Ergebnisse, welche die Inhalte dieser Register ändern, um dadurch eine ungeordnete Ausführung zu ermöglichen. Eine temporäre Speicherstelle in dem Umordnungspuffer 32 ist für jeden Befehl reserviert, der beim Dekodieren bestimmt wird, die Inhalte eines der realen Register zu ändern. Daher kann der Umordnungspuffer 32 an verschiedenen Punkten während der Ausführung eines bestimmten Programms, eine oder mehrere Stellen haben, welche die spekulativ ausgeführten Inhalte eines gegebenen Registers enthalten. Wenn nach der Dekodierung eines gegebenen Befehls festgestellt wird, dass der Umordnungspuffer 32 eine einem Register zugewiesene vorherige Stelle oder Stellen hat, die als Operand in dem gegebenen Befehl benutzt werden, leitet der Umordnungspuffer 32 an die entsprechende Reservierungsstation weiter: entweder 1) den Wert in der zuletzt zugewiesenen Stelle oder 2) eine Markierung für die zuletzt zugewiesene Stelle, wenn der Wert bislang noch nicht von der Funktionseinheit erzeugt worden ist, die schließlich den vorherigen Befehl ausführen wird. Wenn der Umordnungspuffer 32 eine für ein bestimmtes Register reservierte Stelle hat, wird der Operandenwert (oder die Markierung des Umordnungspuffers) von dem Umordnungspuffer 32 anstatt von der Registerdatei 30 zur Verfügung gestellt. Wenn keine für ein benötigtes Register reservierte Stelle in dem Umordnungspuffer 32 vorhanden ist, wird der Wert direkt aus der Registerdatei 30 genommen. Wenn der Operand einer Speicherstelle entspricht, wird der Wert des Operanden der Reservierungsstation von der Lade-/Speicher-Einheit 26 zur Verfügung gestellt.
  • In einem bestimmten Ausführungsbeispiel ist der Umordnungspuffer 32 zum Speichern und Verändern von gleichzeitig dekodierten Befehlen als eine Ein heit konfiguriert. Diese Konfiguration wird hier als "zeilenausgerichtet" bezeichnet. Durch gemeinsames Verändern einiger Befehle kann die innerhalb des Umordnungspuffers 32 verwendete Hardware vereinfacht werden. Zum Beispiel weist ein in dem vorliegenden Ausführungsbeispiel enthaltener zeilenausgerichteter Umordnungspuffer Speicher zu, der ausreichend ist für Informationen bezüglich Befehlen, die bis zu drei Befehlen zugehören (einen von jeder Dekodiereinheit 20), und zwar immer dann, wenn ein oder mehrere Befehle von den Dekodiereinheiten 20 abgeschickt werden. Im Gegensatz dazu wird ein variables Maß an Speicherplatz in konventionellen Umordnungspuffern zugewiesen, und zwar abhängig von der Anzahl der tatsächlich abgeschickten Befehle. Eine vergleichsweise größere Anzahl von logischen Gattern kann erforderlich sein, um das variable Maß an Speicherplatz zuzuweisen. Wenn jeder der gleichzeitig dekodierten Befehle ausgeführt worden ist, werden die Ergebnisse der Befehle gleichzeitig in der Registerdatei 30 gespeichert. Der Speicher ist dann frei für die Zuweisung zu einem anderen Satz von gleichzeitig dekodierten Befehlen. Ferner ist das Maß an für jeden Befehl verwendeten Schaltungen für die Steuerlogik reduziert, weil die Steuerlogik sich über mehrere gleichzeitig dekodierte Befehle amortisiert. Eine Markierung des Umordnungspuffers, die einen bestimmten Befehl identifiziert, kann in zwei Felder geteilt sein: eine Zeilenmarkierung und eine Offset-Markierung. Die Zeilenmarkierung identifiziert den Satz von gleichzeitig dekodierten Befehlen einschließlich des bestimmten Befehls, und die Offset-Markierung identifiziert, welcher Befehl innerhalb des Satzes dem bestimmten Befehl entspricht. Es sei darauf hingewiesen, dass die Speicherung von Befehlsergebnissen in der Registerdatei 30 und das Freimachen des entsprechenden Speichers als "Zurückziehen" der Befehle bezeichnet wird. Es ist ferner festzuhalten, dass jede Konfiguration des Umordnungspuffers in verschiedenen Ausführungsbeispielen des Prozessors 10 verwendet werden kann.
  • Wie zuvor gesagt, speichern die Reservierungsstationen 22 Befehle, bis die Befehle von den entsprechenden Funktionseinheiten 24 ausgeführt werden. Ein Befehl wird für die Ausführung ausgewählt, wenn: (i) die Operanden des Befehls zur Verfügung gestellt worden sind und (ii) die Operanden bislang noch nicht für Befehle zur Verfügung gestellt worden sind, die in der gleichen Reservierungsstation 22A-22C sind und die in Programmreihenfolge vor dem Befehl liegen. Es sei darauf hingewiesen, dass, wenn ein Befehl von einer der Funktionseinheiten 24 ausgeführt wird, das Ergebnis dieses Befehls direkt an eine beliebige der Reservierungsstationen 22 ausgegeben wird, die zu dem gleichen Zeitpunkt auf dieses Ergebnis warten, zu dem das Ergebnis zur Aktualisierung des Umordnungspuffers 32 weitergegeben wird (diese Technik wird allgemein als "Ergebnisweiterleitung" bezeichnet). Ein Befehl kann für die Ausführung ausgewählt werden und während des Taktzyklus, in dem das damit verbundene Ergebnis weitergeleitet wird, an eine Funktionseinheit 24A-24C weitergegeben werden. Die Reservierungsstationen 22 leiten das weitergeleitete Ergebnis in diesem Fall an die Funktionseinheiten 24. Bei Ausführungsbeispielen, in denen Befehle in Mehrfach-Operationen dekodiert werden können, die von den Funktionseinheiten 24 auszuführen sind, können die Operationen getrennt voneinander zeitlich geplant werden.
  • Bei einem Ausführungsbeispiel ist jede der Funktionseinheiten 24 zur Ausführung von ganzzahligen arithmetischen Additions- und Subtraktionsoperationen sowie von Verschiebungen, Rotationen, logischen Operationen und Verzweigungsoperationen konfiguriert. Die Operationen werden in Reaktion auf die Steuerwerte ausgeführt, die für einen bestimmten Befehl von den Dekodiereinheiten 20 dekodiert wurden. Es sei darauf hingewiesen, dass eine (nicht gezeigte) Gleitkommaeinheit ebenfalls verwendet werden kann, um Gleitkommaoperationen durchzuführen. Die Gleitkommaeinheit kann als Koprozessor betrieben werden, der Befehle von der MROM-Einheit 34 oder von dem Umordnungspuffer 32 empfängt und nachfolgend mit dem Umordnungspuffer 32 kommuniziert, um die Befehle zu vollenden. Ferner können die Funktionseinheiten 24 zum Erzeugen von Adressen für Lade- und Speicher-Speicheroperationen konfiguriert sein, die von der Lade-/Speicher-Einheit 26 ausgeführt werden. Bei einem bestimmten Ausführungsbeispiel kann jede Funktionseinheit 24 eine Adresserzeugungseinheit zum Erzeugen von Adressen aufweisen und eine Ausführungseinheit zum Durchführen der verbleibenden Funktionen. Die beiden Einheiten können unabhängig voneinander auf verschiedenen Befehlen oder Operationen während eines Taktzyklus arbeiten.
  • Jede der Funktionseinheiten 24 stellt der Verzweigungs-Vorhersageeinheit 14 auch Informationen hinsichtlich der Ausführung von bedingten Verzweigungsbefehlen zur Verfügung. Wenn eine Verzweigungsvorhersage falsch war, löscht die Verzweigungs-Vorhersageeinheit 14 Befehle, die der falsch vorhergesagten Verzweigung folgen und die in die Befehlsverarbeitungs-Pipeline eingetreten sind, und bewirkt ein Abrufen der benötigten Befehle von dem Befehls-Cache-Speicher 16 oder dem Hauptspeicher. Es ist zu bemerken, dass in solchen Situationen die Befehlsergebnisse in der ursprünglichen Programmsequenz, die nach dem falsch vorhergesagten Verzweigungsbefehl auftreten, verworfen werden, einschließlich derjenigen, die spekulativ ausgeführt worden sind und temporär in der Lade-/Speicher-Einheit 26 und dem Umordnungspuffer 32 gespeichert worden sind. Es ist ferner zu bemerken, dass Ergebnisse von Verzweigungsausführungen von den Funktionseinheiten 24 dem Umordnungspuffer 32 zur Verfügung gestellt werden können, der den Funktionseinheiten 24 Fehlvorhersagen von Verzweigungen anzeigen kann.
  • Von den Funktionseinheiten 24 erzeugte Ergebnisse werden an den Umordnungspuffer 32 geschickt, wenn ein Registerwert aktualisiert wird, und zu der Lade-/Speicher-Einheit 26 geschickt, wenn die Inhalte einer Speicherstelle geändert werden. Wenn das Ergebnis in einem Register gespeichert werden soll, speichert der Umordnungspuffer 32 das Ergebnis an der Stelle, die für den Registerwert reserviert wurde, als der Befehl dekodiert wurde. Eine Vielzahl von Ergebnisbussen 38 ist zum Weiterleiten von Ergebnissen von den Funktionseinheiten 24 und der Lade-/Speicher-Einheit 26 vorgesehen. Die Ergebnisbusse 38 befördern sowohl das erzeugte Ergebnis als auch die Markierung des Umordnungspuffers, die den bearbeiteten Befehl identifiziert.
  • Die Lade-/Speicher-Einheit 26 stellt ein Interface zwischen den Funktionseinheiten 24 und dem Daten-Cache-Speicher 28 bereit. Bei einem Ausführungsbeispiel ist die Lade-/Speicher-Einheit 26 mit einem ersten Lade-/Speicher- Puffer, der Speicherstellen für Daten- und Adressinformationen für anstehende Lade- oder Speichervorgänge hat, die nicht auf den Daten-Cache-Speicher 28 zugegriffen haben, und einem zweiten Lade-/Speicher-Puffer konfiguriert, der Speicherstellen für Daten- und Adressinformationen für anstehende Ladeoder Speichervorgänge hat, die auf den Daten-Cache-Speicher 28 zugegriffen haben. Zum Beispiel kann der erste Puffer 12 Stellen aufweisen, und der zweite Puffer kann 32 Stellen aufweisen. Die Dekodiereinheiten 20 vermitteln Zugriff auf die Lade-/Speicher-Einheit 26. Wenn der erste Puffer voll ist, muss eine Dekodiereinheit warten, bis die Lade-/Speicher-Einheit 26 Platz für die ausstehenden Lade- oder Speicheranforderungsinformation hat. Die Lade-/ Speicher-Einheit 26 führt auch eine Abhängigkeitsüberprüfung für Lade-Speicheroperationen gegen anstehende Speicher-Speicheroperationen durch, um sicherzustellen, dass die Datenkohärenz gewährleistet bleibt. Eine Speicheroperation ist ein Transfer von Daten zwischen dem Prozessor 10 und dem Subsystem des Hauptspeichers. Speicheroperationen können das Ergebnis eines Befehls sein, der einen in dem Speicher gespeicherten Operanden verwendet, oder können das Ergebnis eines Lade-/Speicher-Befehls sein, der den Transfer der Daten, aber keine andere Operation veranlasst. Ferner kann die Lade-/Speicher-Einheit 26 einen Spezialregisterspeicher für Spezialregister aufweisen, wie zum Beispiel die Segmentregister und andere Register, die mit dem von der x86-Prozessorarchitektur definierten Mechanismus für die Adressenumsetzung zusammenhängen.
  • Der Daten-Cache-Speicher 28 ist ein Hochgeschwindigkeits-Cache-Speicher, der zum temporären Speichern von Daten, die zwischen der Lade-/Speicher-Einheit 26 und dem Subsystem des Hauptspeichers transferiert werden, vorgesehen ist. Bei einem Ausführungsbeispiel hat der Daten-Cache-Speicher 28 eine Kapazität zum Speichern von 64 Kilobyte an Daten in einer 2-Wege-Teilassoziativ-Struktur. Es sei darauf hingewiesen, dass der Daten-Cache-Speicher 28 in einer Vielzahl von bestimmten Speicherkonfigurationen implementiert sein kann, einschließlich einer Teilassoziativ-Konfiguration, einer Vollassoziativ-Konfiguration, einer Direktabbildungs-Konfiguration und jeder geeigneten Größe jeder anderen Konfiguration.
  • Bei einem bestimmten Ausführungsbeispiel des Prozessors 10, der die x86-Prozessorarchitektur verwendet, sind der Befehls-Cache-Speicher 16 und der Daten-Cache-Speicher 28 linear adressiert und reell markiert. Die lineare Adresse wird von dem durch den Befehl spezifizierten Offset und der Basisadresse gebildet, die von dem Segmentbereich des x86-Mechanismus zur Adressenumsetzung angegeben ist. Lineare Adressen können optional in reelle Adressen umgesetzt werden, um auf den Hauptspeicher zuzugreifen. Die Umsetzung von linear in reell wird von dem Seitenbereich des x86-Mechanismus zur Adressenumsetzung spezifiziert. Die reelle Adresse wird mit den reellen Markierungen verglichen, um einen Treffer-/Fehltreffer-Status zu bestimmen.
  • Die Bus-Interface-Einheit 37 ist zur Kommunikation zwischen dem Prozessor 10 und anderen Komponenten in einem Computersystem über einen Bus konfiguriert. Zum Beispiel kann der Bus mit dem von der Digital Equipment Corporation entwickelten EV-6-Bus kompatibel sein. Alternativ können sämtliche geeigneten Verbindungsstrukturen benutzt werden, einschließlich paketbasierter, unidirektionaler oder bidirektionaler Verbindungen usw. Ein optionales L2-Cache-Speicher-Interface kann auch als Interface für einen Level-2-Cache-Speicher verwendet werden.
  • 2 zeigt ein Blockschaltbild einer Ausführungsform eines Teils des Prozessors 10, bei dem ein TLB-Leerungsfilter verwendet wird. Das TLB-Leerungsfilter 40 ist mit der Lade-/Speicher-Einheit 26, der Bus-Interface-Einheit 37, dem L1-Cache-Speicher 25 und dem TLB 39 gekoppelt. Der L1-Cache-Speicher 25 kann beispielsweise einen Befehls-Cache-Speicher 16 und einen Daten-Cache-Speicher 28 aufweisen. Bei einigen Ausführungsformen können der Befehls-Cache-Speicher 16 und der Daten-Cache-Speicher 28 des L1-Cache-Speichers 25 ihrem eigenen separaten TLB zugeordnet sein. Diese TLBs können in jeden Cache-Speicher integriert sein. Die Lade-/Speicher-Einheit 26 ist mit der Registerdatei 30 gekoppelt. Unter den Registern der Registerdatei 30 befindet sich ein Basisadressenregister 301. In dem Basisadressenregister 301 kann eine Basisadresse einer Seitentabelle für das aktuell laufende Pro gramm gespeichert sein. Alternativ können in dem Basisadressenregister 301 eine Basisadresse einer Seitenverzeichnis-Zeigertabelle oder andere zu dem aktuell laufenden Programm gehörige Adresseninformationen gespeichert sein. Das Basisadressenregister 301 kann während einer Programmumschaltung aktualisiert werden.
  • Das TLB-Leerungsfilter 40 ist zum Überwachen von Speicherblöcken vorgesehen, die Adressenumsetzungen enthalten, welche in den TLB 39 geladen werden können. Wenn das TLB-Leerungsfilter 40 Veränderungen an einer oder mehreren Adressenumsetzungen in den überwachten Speicherblöcken detektiert, kann es ein Leeren des TLB 39 nach der nächsten Programmumschaltung ermöglichen. Bei der dargestellten Ausführungsform kann das TLB-Leerungsfilter ein Invalidierungs-Signal aktivieren, um ein Leeren des TLB 39 zu ermöglichen. Die Lade-/Speicher-Einheit 26 kann ebenfalls ein Leeren des TLB 39 durch Aktivieren eines Signals (das hier als LS_TLBInvalidate dargestellt ist) bewirken. Dieses Signal kann bei Aktivierung durch die Lade-/Speicher-Einheit 26 ein unbedingtes Leeren des TLB 39 bewirken oder ein Leeren des TLB bei der nächsten Programmumschaltung ermöglichen. Einige der möglichen Ursachen für ein unbedingtes Leeren werden nachstehend anhand von 5 beschrieben.
  • Das TLB-Leerungsfilter 40 kann durch eine erste Programmumschaltung aktiviert werden. Die erste Programmumschaltung kann nach dem anfänglichen Booten eines Computersystems oder nach einer Deaktivierung des Leerungsfilters erfolgen. Die erste Programmumschaltung kann zu einem Leeren des TLB 39 führen. Nach der ersten Programmumschaltung kann der aus dem TLB 39 geleerte Inhalt von dem TLB-Leerungsfilter 40 gefiltert werden.
  • Das TLB-Leerungsfilter 40 ist mit der Bus-Interface-Einheit 37 gekoppelt und kann Informationen über diejenigen Speicherblöcke, die es überwacht, empfangen. Bei der dargestellten Ausführungsform kann das TLB-Leerungsfilter 40 einen Seitenverzeichnis-Eintrag von der Bus-Interface-Einheit 37 empfangen. Bei verschiedenen Ausführungsformen kann das TLB-Leerungsfilter 40 ferner Informationen bezüglich Seitenverzeichnis-Einträgen, Seitenverzeichnis-Zeigern, Seitentabellen oder anderen Datenstrukturen, die für Adressenumsetzungen verwendet werden können, empfangen. Generell kann eine beliebige Adresse eines Speicherblocks, in dem Adressenumsetzungsinformationen gespeichert sind, über die Bus-Interface-Einheit 37 an das TLB-Leerungsfilter 40 geliefert werden. Das TLB-Leerungsfilter 40 kann ferner ein Snoop(oder Sondier-) Anforderungssignal von der Bus-Interface-Einheit 37 sowie eine Snoop-Adresse zum Durchsuchen einer Bereichstabelle (wie nachstehend beschrieben) empfangen. Das TLB-Leerungsfilter 40 kann ferner eine Benachrichtigung von der Lade-/Speicher-Einheit 26 empfangen, wenn eine Programmumschaltung erfolgt, da die Lade-/Speicher-Einheit die in dem Basisadressenregister 301 gespeicherte neue Adresse um den speziellen Registerbus(SRB-) Ring herum verbreiten kann.
  • Generell ist der SRB-Ring ein Bus, der zur Kommunikation mit Spezialregistern verwendet werden kann. Eine Vielzahl von Spezialregistern kann in verschiedenen Einheiten in dem gesamten Prozessor vorhanden sein. Bei der dargestellten Ausführungsform dient die Lade-/Speicher-Einheit 26 als Bus-Master für den SRB-Ring und kann dadurch Lese- und Schreib-Operationen, in die die Spezialregister einbezogen sind, steuern. Durch die Implementierung des SRB-Rings ist es ferner möglich, die Spezialregister näher an der Logik, die diese Register verwendet, zu platzieren, und zwar derart, dass sie immer noch von der Lade-Speicher-Einheit 26 gesteuert werden.
  • 3 zeigt ein Blockschaltbild einer Ausführungsform eines TLB-Leerungsfilters. Das TLB-Leerungsfilter 40 weist einen Ring-Schaltungspunkt 401, eine Bereichstabelle 402 und eine Filterschaltung 403 auf. Die Filterschaltung 403 ist mit dem TLB 39 gekoppelt und kann ein Signal zum Invalidieren oder Leeren des TLB aktivieren. Die Bereichstabelle 402 weist einen inhaltsadressierbaren Speicher (CAM) und einen Direktzugriffsspeicher (RAM) auf. Der CAM-Teil der Bereichstabelle 402 kann zum Speichern von Adressen, wie z. B. Seitenverzeichnis-Zeigern, sowie dazugehörigen Markierungen verwendet werden und kann ferner Adressen aus dem Basisadressenregister 301 (2) spei chern. In dem RAM-Teil der Bereichstabelle ist typischerweise eine der Basisadresse aus dem Basisadressenregister 301 zugeordnete Markierung gespeichert. CAM- und RAM-Einträge werden nachstehend genauer beschrieben.
  • Einträge in die Bereichstabelle 401 können von dem TLB-Leerungsfilter 40 über den Ring-Schaltungspunkt 401 und Multiplexer 407 empfangen werden. Die Multiplexer 407 können ferner zum Empfangen von anderen Informationen, wie z. B. Seitenverzeichnis-Eintrags- (PDE-) Attributen, verwendet werden, wie hier dargestellt. Die über die Multiplexer 407 empfangene Informationen können dann entweder im CAM oder im RAM gespeichert werden. Informationen von der Bereichstabelle 402 können ferner über den Ring-Schaltungspunkt 401 in den SRB-Ring verbreitet werden.
  • Ferner sind zwei Zähler der Bereichstabelle 402 zugeordnet. Ein Bereichszähler 404 ist zum Zählen der Anzahl von Einträgen in den CAM vorgesehen, während ein Basisadressenregisterzähler 405 zum Zählen der Anzahl von Basisadressenregistermarkierungen vorgesehen ist. Jeder Zähler verfolgt die zur Verfügung stehenden Resourcen in der Bereichstabelle. Wenn die Bereichstabelle keine verfügbaren Resourcen mehr hat, kann einer der Zähler ein Überlaufsignal aktivieren. Wenn beispielsweise jeder CAM-Eintrag voll ist, kann der Bereichszähler ein Überlaufsignal aktivieren. Dieses Überlaufsignal kann zum Deaktivieren des TLB-Leerungsfilters verwendet werden. Ähnlich kann, wenn sämtliche zur Verfügung stehenden Markierungen für den Basisadressenregisterzähler verwendet worden sind, dieser ebenfalls überlaufen, wodurch ein Überlaufsignal aktiviert wird, das das TLB-Leerungsfilter deaktivieren kann. Die erste Programmumschaltung nach der Deaktivierung des TLB-Leerungsfilters 40 kann dann zu einer TLB-Leerung führen. Wenn das TLB-Leerungsfilter 40 deaktiviert ist, können beide Zähler von der Steuerlogik 406 zurückgesetzt werden.
  • Wie oben beschrieben, ist die Bereichstabelle 402 zum Speichern mehrerer Einträge während der Operation des TLB-Leerungsfilters 40 vorgesehen. Die Einträge in der Bereichstabelle 402 können zum Detektieren von Modifikatio nen an den Seitentabellen oder anderen Datenstrukturen, die zum Laden von Adressenumsetzungen in den TLB 39 verwendet werden können, benutzt werden. Zum Detektieren, wann sich die Seitentabellen oder anderen Datenstrukturen verändert haben, kann die Bus-Intertace-Einheit 37 (1) die Bereichstabelle sondieren (d. h. durchsuchen). Das Sondieren der Bereichstabelle kann eine Funktion eines Kohärenzprotokolls in dem Prozessor sein. Generell wird die Snoop-Adresse mit der in der Bereichstabelle (z. B. dem CAM) aufgezeichneten Tabelle verglichen. Wenn das Sondieren der Bereichstabelle zu einem Treffer führt und das Sondieren einem Speicherzugriff dient, durch den die Daten in einem von dem TLB-Leerungsfilter 40 überwachten Speicherblock verändert würden (wodurch eine mögliche Modifizierung der zum Speichern von Adressenumsetzungen in dem TLB verwendeten Daten angezeigt wird), kann die nächste Programmumschaltung zu einem Leeren des TLB 39 führen. Bei der dargestellten Ausführungsform kann ein Leeren des TLB erfolgen, wenn die Filterschaltung 403 ein Invalidierungs-Signal aktiviert, wodurch sämtliche gleichzeitig in dem TLB 39 gespeicherten Einträge invalidiert werden. Typischerweise erfolgt ein Treffer, wenn ein Durchsuchen der Bereichstabelle zu einer Übereinstimmung hinsichtlich eines der in dem CAM gespeicherten Einträge führt. Wenn die Sondierung zu keinem Treffer führt, kann das TLB-Leerungsfilter 40 ein Leeren des TLB nach der nächsten Programmumschaltung verhindern.
  • 4 zeigt eine schematische Darstellung von Bereichstabelleneinträgen bei einer Ausführungsform des TLB-Leerungsfilters. Jeder Bereichstabelleneintrag enthält einen CAM-Eintrag 402-C und einen RAM-Eintrag 402-R. Der CAM-Eintrag 402-C enthält ein Gültig-Bit (V), ein Seitenverzeichniszeiger-(PDP-) Bit und eine Markierung. Bei verschiedenen anderen Ausführungsformen können die CAM-Einträge auch andere Arten von einer Speicheradresse zugeordneten Informationen enthalten, wie z. B. Attribut- und Schutzinformationen. Die Markierung des CAM-Eintrags 402-C ist typischerweise eine Adresse, die einer Adressenumsetzung entspricht, welche in dem TLB vorhanden ist. Diese Adresse kann beispielsweise ein Seitenverzeichniszeiger oder ein Seitentabellenzeiger aus einem Seitenverzeichniseintrag oder eine Basisadresse aus dem Basisadressenregister sein. Bei einer Ausführungsform kann die Adresse eine lineare Adresse sein, die einer reellen Adresse im Speicher entspricht. Wenn die von der Markierung angezeigte Adresse für einen Seitenverzeichniszeiger bestimmt ist, kann das PDP-Bit gesetzt werden. Wenn die von der Markierung angezeigte Adresse für einen Seitenverzeichniseintrag bestimmt ist, kann das PDP-Bit gelöscht werden. Das Gültig-Bit kann gesetzt werden, um anzuzeigen, dass die von der Markierung angezeigte Adresse für eine entweder in dem TLB oder in einer Seitentabelle gespeicherte Adresse gültig ist. Die in dem CAM-Eintrag gespeicherten Adressen können wie oben beschrieben von einer Bus-Interface-Einheit sondiert werden, wodurch das TLB-Leerungsfilter 40 feststellen kann, ob Modifikationen an einer Seitentabelle oder einer anderen Datenstruktur, aus der Adressenumsetzungen in den TLB geladen worden sind, aufgetreten sind.
  • Der RAM-Eintrag 402-R enthält ein Gültig-Bit und eine Basisadressenregistermarkierung. Bei der dargestellten Ausführungsform kann die Basisadressenregistermarkierung einem Basisadressenregistereintrag zugeordnet sein, der in dem CAM gespeichert sein kann. Der in dem CAM gespeicherte Basisadressenwert kann die Basisadresse für eine Seitentabelle (oder eine andere Datenstruktur) eines vorherigen Programms oder des aktuell laufenden Programms sein. Die Basisadressenregistermarkierung dieser Ausführungsform ist einfach eine Nummer, die der Basisadresse entspricht. Nach jeder Veränderung des Basisadressenregisters (die typischerweise bei jeder Programmumschaltung erfolgt) wird der neue Registerwert mit älteren Werten verglichen, die seit der letzten TLB-Leerung aufgetreten und die in der Bereichstabelle gespeichert sind. Wenn keine Übereinstimmung (d. h. ein Nichttreffer) festgestellt wird, kann dem Registerwert zusammen mit der dazugehörigen in dem RAM gespeicherten Markierung eine in dem CAM gespeicherte Markierung zugewiesen werden. Eine Übereinstimmung zeigt an, dass der aktuelle Registerwert bereits in der Bereichstabelle gespeichert ist. Somit können, wenn das vorherige Programm von dem Prozessor wiederaufgenommen wird, die zuvor verwendeten Adressenumsetzungen wiederverwendet werden. Es braucht keine neue Markierung zugewiesen zu werden, wenn eine Übereinstimmung besteht.
  • 5 zeigt ein Logikdiagramm mit Darstellung der Logik zum Betreiben einer Ausführungsform der Filterschaltung 403. Die Filterschaltung 403 weist eine Logik auf, die ein Leeren des TLB nur dann ermöglicht, wenn bestimmte Bedingungen erfüllt sind. Die Filterschaltung 403 ist zum Empfangen von LS_TLBInvalidate- und LS_TLBInvalidateM-Signalen von der Lade-/Speicher-Einheit 26 aus 1 vorgesehen. Das LS_TLB-Invalidate-Signal kann ein unbedingtes Leeren des TLB bewirken, und zwar unabhängig davon, ob das TLB-Filter aktiviert ist. Verschiedene Veränderungen beim Betreiben des Prozessors können ein Leeren des TLB erforderlich machen. Diese Bedingungen umfassen, sind jedoch nicht beschränkt auf, das Abschaltung des Paging, Einschalten des Global Paging, Verändern von Speichertypen oder Verändern von Speicherattributen. Bei Aktivierung kann sich das LS_TLB-Invalidate-Signal durch das in dem Diagramm gezeigte ODER-Gatter oder D-Flip-Flop ausbreiten. Dadurch kann dann das Aktivieren eines FF_TLBInvalidate-Signals bewirkt werden (dieses Signal ist ein Äquivalent des in 2 und 3 gezeigten Invalidierungssignals), wodurch ein Leeren des TLB nach der nächsten Programmumschaltung ermöglicht wird.
  • Das LS_TLBInvalidateM-Signal kann verwendet werden, um anzuzeigen, dass der TLB geleert werden muss, wenn eine Modifizierung aufgetreten ist. Dieses Signal muss in einem logischen H-Zustand gehalten werden, wenn das TLB-Leerungsfilter aktiviert ist. Eine Modifizierung kann Veränderungen an darunter liegenden Adressenumsetzungen oder eine Veränderung an dem Status des Leerungsfilters (wie z. B. Zählerüberlauf) umfassen. Das FF_TLBInvalidate-Signal kann aktiviert werden, wenn das LS_TLBInvalidateM-Signal als logisches H-Signal aktiviert ist und das /CLR-Signal als L-Signal aktiviert ist (und vor Eingabe in das UND-Gatter invertiert worden ist).
  • Das /CLR-Signal kann durch eine von mehreren unterschiedlichen Bedingungen in einen logischen L-Zustand getrieben werden. Diese Bedingungen kön nen bei alternativen Ausführungsformen variieren. Bei der dargestellten Ausführungsform können diese Bedingungen ein Rücksetzen des Leerungsfilters (Rücksetzsignal), ein Modifizieren von Seitendaten (Modify Page Data-Signal, in 3 als Treffer-Signal gezeigt), ein Überlaufen eines der Zähler (Overflow Region Counter-Signal, Overflow Base Address Register Counter-Signal) oder ein Signal zum Sperren des Leerungsfilters (Disable Flush Filter-Signal) umfassen. Signale für jede dieser Bedingungen sind in der in 5 gezeigten Logikschaltung vorhanden. Das /CLR-Signal wird bei der dargestellten Ausführungsform typischerweise in einem logischen H-Zustand gehalten und kann sich durch eine Rückkopplungsschaltung (mit einem ODER-Gatter) ausbreiten, um ein Eingangssignal in das in der Zeichnung gezeigte 7-Eingangs-UND-Gatter zu werden. Das FF TLBInvalidate-Signal kann sich ebenfalls durch eine Rückkopplungsschaltung und das ODER-Gatter ausbreiten, wenn es aktiviert ist. Das Treiben der Bedingungen in einen logischen N-Zustand kann zu einem logischen L-Eingang in das UND-Gatter (aufgrund der Inverter) führen, wodurch bewirkt wird, dass das /CLR-Signal in seinem logischen L-Zustand aktiviert wird.
  • 6 zeigt ein Zeitdiagramm mit Darstellung des Betreibens einer Ausführungsform des TLB-Leerungsfilters. Das Diagramm zeigt beispielhaft die Basisoperation des Leerungsfilters und erhebt nicht den Anspruch, sämtliche möglichen Bedingungen oder Ergebnisse, die eintreten können, abzudecken. Ferner erhebt das Diagramm nicht den Anspruch, spezifische Einzelheiten der Implementierung des Leerungsfilters, die bei unterschiedlichen Ausführungsformen variieren können, zu kennzeichnen.
  • Die Anfangsaktivierung des TLB-Leerungsfilters kann durch eine erste Programmumschaltung erfolgen. Da das Leerungsfilter vor der ersten Programmumschaltung nicht aktiviert war, kann ein Leeren des TLB ohne Filterung die Folge sein. Nach der ersten Programmumschaltung wird eine Seitentabelle A in den Speicher geladen. Die Seitentabelle A ist dem neuen Programm zugeordnet, und Einträge, die dieser Seitentabelle entsprechen, können somit in die in 3 gezeigte Bereichstabelle geladen werden, wenn entsprechende Adressenumsetzungen in den TLB geladen werden. Nach dem Laden der Seitentabelle A erfolgt eine weitere Programmumschaltung. In diesem Fall kann ein Leeren des TLB durch Aktivieren des TLB-Leerungsfilters verhindert werden. Dadurch kann angezeigt werden, dass keine Bedingung, die ein Leeren erforderlich machen würde, zwischen den Programmumschaltungen eingetreten ist. Bei dem dargestellten Beispiel erfolgten zwischen den Programmumschaltungen keine Modifizierungen an der Seitentabelle A.
  • Nach der zweiten Programmumschaltung wird eine Seitentabelle B in den Speicher geladen. Die Seitentabelle B kann Adressenumsetzungen enthalten, von denen einige in den TLB geladen werden können. Nach dem Laden der Seitentabelle B in den Speicher wird die Seitentabelle B modifiziert. Somit ist es möglich, dass einige aus der Seitentabelle B in den TLB geladene Adressenumsetzungen nicht mehr gültig sind. Folglich kann das TLB-Leerungsfilter ein Leeren des TLB (hier als Leerung mit Filterung gezeigt) nach der nächsten Programmumschaltung ermöglichen.
  • Das nächste Ereignis, das nach der Leerung mit Filterung eintritt, ist ein Laden einer Seitentabelle C. Wie anhand von 3 beschrieben, verfolgt ein Bereichszähler den CAM-Teil der Bereichstabelle und kann überlaufen, wenn die Bereichstabelle keinen Platz mehr für weitere Einträge hat. In dem gezeigten Diagramm erfolgt dies nach dem Laden der Seitentabelle C, durch das ein Überlaufen des Bereichszählers bewirkt wird. Ein Überlaufen des Bereichszählers kann die Deaktivierung des TLB-Leerungsfilters bewirken. Bei der ersten Programmumschaltung nach der Deaktivierung kann der TLB geleert werden. Diese erste Programmumschaltung kann ferner eine Neuaktivierung des TLB-Leerungsfilters bewirken.
  • 7A und 7B zeigen Blockschaltbilder einer Paging-Struktur mit Einträgen in eine Bereichstabelle und einer Bereichstabelle mit Einträgen entsprechend der Paging-Struktur bei einer Ausführungsform des TLB-Leerungsfilters 40. In 7A kann das Basisadressenregister 301 eine Adresse speichern, die auf einen Bereich (R0) der Seitenverzeichniszeiger zeigt. Jeder Eintrag in dem Bereich zeigt auf ein Seitenverzeichnis.
  • 8 zeigt ein Blockschaltbild zeigt ein Ausführungsbeispiel eines Computersystems 200 einschließlich des Prozessors 10, der über eine Busbrücke 202 mit einer Vielzahl von Systemkomponenten verbunden ist. Weitere Ausführungsbeispiele sind möglich und werden in Betracht gezogen. Bei dem dargestellten System ist ein Hauptspeicher 204 über einen Speicherbus 206 mit der Busbrücke 202 verbunden und eine Grafiksteuerung 208 über einen AGP-Bus 210 mit der Busbrücke 202 verbunden. Schließlich ist eine Vielzahl von PCI-Vorrichtungen 212A-212B über einen PCI-Bus 214 mit der Busbrücke 202 verbunden. Ferner kann eine Sekundär-Busbrücke 216 vorgesehen sein, um für eine oder mehrere EISA- oder ISA-Vorrichtungen 218 über einen EISA-/ISA-Bus 220 ein elektrisches Interface zu bilden. Der Prozessor 10 ist über einen CPU-Bus 224 mit der Busbrücke 202 und mit einem optionalen L2 Cache-Speicher verbunden.
  • Jede Busbrücke 202 bildet ein Interface zwischen dem Prozessor 10, dem Hauptspeicher 204, der Grafiksteuerung 208 und an dem PCI-Bus 214 angebrachten Vorrichtungen. Wenn eine Operation von einer der an der Busbrücke 202 angeschlossenen Vorrichtungen empfangen wird, identifiziert die Busbrücke 202 das Target der Operation (zum Beispiel eine bestimmte Vorrichtung, oder im Fall des PCI-Busses 214, dass das Target auf dem PCI Bus-214 ist). Die Busbrücke 202 führt die Operation zu der Target-Vorrichtung. Die Busbrücke 202 setzt generell eine Operation von dem Protokoll, das von der Quellvorrichtung oder dem Quellbus benutzt wird, in das Protokoll um, das von der Target-Vorrichtung oder dem Target-Bus benutzt wird.
  • Zusätzlich zu der Bereitstellung eines Interface zu einem ISA-/EISA-Bus für den PCI-Bus 214 kann die Sekundär-Busbrücke 216 wie gewünscht eine weitere Funktionalität enthalten. Eine (nicht gezeigte) Eingangs/Ausgangssteuerung, die entweder außerhalb der Sekundär-Busbrücke 216 liegt oder in die Sekundär-Busbrücke 216 integriert ist, kann auch in dem Computersystem 200 enthalten sein, um operationelle Unterstützung für eine Tastatur und eine Maus 222 und für verschiedene serielle und parallele Anschlüsse, wie gewünscht, bereitzustellen. Eine (nicht gezeigte) externe Cache-Speicher-Einheit kann bei anderen Ausführungsbeispielen ferner zwischen dem Prozessor 10 und der Busbrücke 202 an den CPU Bus 224 angeschlossen sein. Alternativ kann der externe Cache-Speicher an der Busbrücke 202 angeschlossen sein und kann die Cache-Speicher-Steuerlogik für den externen Cache-Speicher in der Busbrücke 202 integriert sein. Ein L2-Cache-Speicher 228 ist ferner in einer hinter dem Prozessor 10 angeordneten Konfiguration gezeigt. Es sei anzumerken, dass der L2-Cache-Speicher 228 von dem Prozessor 10 getrennt, in einer Cartridge (zum Beispiel Slot 1 oder Slot A) des Prozessors 10 integriert oder sogar auf einem Halbleitersubstrat in dem Prozessor 10 integriert sein kann.
  • Der Hauptspeicher 204 ist ein Speicher, in dem Anwendungsprogramme gespeichert sind und von dem aus der Prozessor 10 hauptsächlich ausführt. Ein geeigneter Hauptspeicher 204 weist einen DRAM (dynamischen wahlfreien Zugriffsspeicher) auf. Zum Beispiel kann eine Vielzahl von SDRAM- (Synchrones DRAM) oder Rambus DRAM- (RDRAM) Bänken geeignet sein.
  • Die PCI-Vorrichtungen 212A-212B sind beispielhaft für eine Vielzahl von Peripherievorrichtungen, wie zum Beispiel Netzwerk-Interface-Karten, Videobeschleunigern, Audiokarten, Festplatten- oder Diskettenlaufwerken oder Laufwerkssteuerungen, SCSI- (kleines Computersystem-Interface) Adaptern oder Telefonkarten. Auf ähnliche Weise ist die ISA-Vorrichtung 218 beispielhaft für verschiedene Typen von Peripherievorrichtungen, wie ein Modem, eine Sound-Karte und eine Vielzahl von Datenerfassungskarten, wie GPIB oder Feldbus-Interface-Karten.
  • Die Grafiksteuerung 208 ist zum Steuern der Wiedergabe von Text und Bildern auf einer Anzeige 226 vorgesehen. Die Grafiksteuerung 208 kann ein beim Stand der Technik bekannter typischer Grafikbeschleuniger sein, der dreidimensionale Datenstrukturen wiedergibt, die effektiv aus dem und in den Hauptspeicher 204 verschoben werden können. Die Grafiksteuerung 208 kann daher insofern ein Master des AGP-Busses 210 sein, dass sie Zugriff auf ein Target-Interface innerhalb der Busbrücke 202 anfordern und erhalten kann, um dadurch Zugriff auf den Hauptspeicher 204 zu bekommen. Ein zweckbestimmter Grafikbus gewährt eine schnelle Rückgewinnung von Daten aus dem Hauptspeicher 204. Bei bestimmten Operationen kann die Grafiksteuerung 208 ferner zum Erzeugen von PCI-Protokoll-Transaktionen auf dem AGP-Bus vorgesehen sein. Das AGP-Interface der Busbrücke 202 kann daher Funktionalitäten enthalten, um sowohl AGP-Protokoll-Transaktionen als auch PCI-Protokoll-Target- und Initiator-Transaktionen zu unterstützen. Die Anzeige 226 ist eine beliebige elektronische Anzeige, auf der ein Bild oder ein Text dargestellt werden kann. Eine geeignete Anzeige 226 weist eine Kathodenstrahlröhre ("CRT"), ein Flüssigkristall-Display ("LCD") usw. auf.
  • Es ist anzumerken, dass, obwohl die AGP-, PCI- und ISA- oder EISA-Busse in der obigen Beschreibung als Beispiele benutzt worden sind, jede Busarchitektur wie gewünscht durch eine andere ersetzt werden kann. Es ist ferner anzumerken, dass das Computersystem 200 ein Mehrfachprozessorsystem sein kann, das zusätzliche Prozessoren enthält (zum Beispiel Prozessor 10a, der als optionale Komponente des Computersystems 200 gezeigt ist). Der Prozessor 10a kann im wesentlichen gleich ausgeführt sein wie der Prozessor 10. Insbesondere kann der Prozessor 10a eine identische Kopie des Prozessors 10 sein. Der Prozessor 10a kann über einen unabhängigen Bus (wie in 5 gezeigt) mit der Busbrücke 202 verbunden sein oder kann den CPU-Bus 224 gemeinsam mit dem Prozessor 10 nutzen. Ferner kann der Prozessor 10a mit einem optionalen L2-Cache-Speicher 228a verbunden sein, der im wesentlichen gleich ausgeführt ist wie der L2-Cache-Speicher 228.
  • INDUSTRIELLE ANWENDBARKEIT
  • Die vorliegende Erfindung ist auf Mikroprozessoren und Translation-Lookaside-Puffer anwendbar.

Claims (10)

  1. Prozessor mit: einem Translation-Lookaside-Puffer (TLB) (39) zum Speichern von Adressenumsetzungen; und einem mit dem TLB gekoppelten TLB-Leerungsfilter (40); dadurch gekennzeichnet, dass das TLB-Leerungsfilter vorgesehen ist zum Überwachen von Speicherblöcken, aus denen die Adressenumsetzungen ausgelesen und in dem TLB gepuffert worden sind, und zum Feststellen, ob sich eine der Adressenumsetzungen in den Speicherblöcken verändert hat, wobei das TLB-Leerungsfilter ferner in Reaktion auf eine Programmumschaltung ein Leeren des TLB ermöglicht, wenn sich die Adressenumsetzungen verändert haben, und das TLB-Leerungsfilter ein Leeren des TLB verhindert, wenn sich die Adressenumsetzungen nicht verändert haben.
  2. Prozessor nach Anspruch 1, bei dem das TLB-Leerungsfilter (40) durch eine erste Programmumschaltung aktiviert wird.
  3. Prozessor nach Anspruch 2, bei dem die erste Programmumschaltung ein Leeren des TLB (39) bewirkt.
  4. Prozessor nach Anspruch 1, bei dem das TLB-Leerungsfilter eine Bereichstabelle (402) zum Verfolgen der Speicherblöcke aufweist.
  5. Prozessor nach Anspruch 4, bei dem das TLB-Leerungsfilter (40) zum Detektieren einer Modifikation der Speicherstelle innerhalb der Speicherblöcke vorgesehen ist, wobei das TLB-Leerungsfilter eine Leerung des TLB in Reaktion auf eine nächste Programmumschaltung und in Reaktion auf das Detektieren der Modifikation der Speicherstelle ermöglicht.
  6. Prozessor nach Anspruch 4, bei dem die Bereichstabelle (402) einen inhaltsadressierten Speicher (CAM) und einen Direktzugriffsspeicher (RAM) aufweist.
  7. Prozessor nach Anspruch 6, bei dem der CAM zum Speichern mehrerer Einträge vorgesehen ist, wobei jeder der mehreren Einträge den Speicherblöcken zugeordnete Adresseninformationen aufweist.
  8. Verfahren zum Betreiben eines Prozessors, mit folgenden Schritten: Speichern von Adressenumsetzungen in einem Translation-Lookaside-Puffer (TLB) (39), wobei die Adressenumsetzungen von einem oder mehreren Speicherblöcken in den TLB geladen werden; gekennzeichnet durch das Feststellen, ob sich in dem einen oder den mehreren Speicherblöcken gespeicherte Adressenumsetzungen verändert haben; das Leeren des TLB, wenn sich in dem einen oder den mehreren Speicherblöcken gespeicherte Adressenumsetzungen verändert haben, und das Leeren in Reaktion auf eine Programmumschaltung; und das Verhindern einer Leerung des TLB in Reaktion auf eine Programmumschaltung, wenn sich keine der in dem einen oder den mehreren Speicherblöcken gespeicherten Adressenumsetzungen verändert haben, wobei ein Leeren des TLB von einem TLB-Leerungsfilter (40) verhindert wird.
  9. Verfahren nach Anspruch 8, bei dem das TLB-Leerungsfilter (40) durch eine erste Programmumschaltung aktiviert wird.
  10. Verfahren nach Anspruch 9, bei dem die erste Programmumschaltung eine Leerung des TLB (39) bewirkt.
DE60102017T 2000-06-15 2001-03-09 Räumungsfilter für adressenübersetzungspuffer Expired - Lifetime DE60102017T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/595,597 US6510508B1 (en) 2000-06-15 2000-06-15 Translation lookaside buffer flush filter
US595597 2000-06-15
PCT/US2001/007591 WO2001097043A1 (en) 2000-06-15 2001-03-09 A translation lookaside buffer flush filter

Publications (2)

Publication Number Publication Date
DE60102017D1 DE60102017D1 (de) 2004-03-18
DE60102017T2 true DE60102017T2 (de) 2004-11-25

Family

ID=24383899

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60102017T Expired - Lifetime DE60102017T2 (de) 2000-06-15 2001-03-09 Räumungsfilter für adressenübersetzungspuffer

Country Status (8)

Country Link
US (1) US6510508B1 (de)
EP (1) EP1290562B1 (de)
JP (1) JP4437001B2 (de)
KR (1) KR100804285B1 (de)
CN (1) CN1304962C (de)
DE (1) DE60102017T2 (de)
TW (1) TW561341B (de)
WO (1) WO2001097043A1 (de)

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
SE0003446L (sv) * 2000-09-27 2002-03-28 Ericsson Telefon Ab L M En pipelinemikroprocessor och ett förfarnade relaterande därtill
US6907600B2 (en) * 2000-12-27 2005-06-14 Intel Corporation Virtual translation lookaside buffer
US6910097B1 (en) * 2001-04-09 2005-06-21 Netlogic Microsystems, Inc. Classless interdomain routing using binary content addressable memory
US6622211B2 (en) * 2001-08-15 2003-09-16 Ip-First, L.L.C. Virtual set cache that redirects store data to correct virtual set to avoid virtual set store miss penalty
US7069442B2 (en) 2002-03-29 2006-06-27 Intel Corporation System and method for execution of a secured environment initialization instruction
US7089396B2 (en) * 2002-10-10 2006-08-08 International Business Machines Corporation Method and profiling cache for management of virtual memory
US7552254B1 (en) * 2003-07-30 2009-06-23 Intel Corporation Associating address space identifiers with active contexts
US7552255B1 (en) 2003-07-30 2009-06-23 Intel Corporation Dynamically partitioning pipeline resources
US7069389B2 (en) * 2003-11-26 2006-06-27 Microsoft Corporation Lazy flushing of translation lookaside buffers
US7711898B2 (en) * 2003-12-18 2010-05-04 Intel Corporation Register alias table cache to map a logical register to a physical register
US7082486B2 (en) * 2004-01-14 2006-07-25 International Business Machines Corporation Method and apparatus for counting interrupts by type
US20050273575A1 (en) * 2004-06-02 2005-12-08 Mukherjee Shubhendu S Mechanism to invalidate data translation buffer entries a multiprocessor system
US7562179B2 (en) * 2004-07-30 2009-07-14 Intel Corporation Maintaining processor resources during architectural events
WO2006123351A1 (en) 2005-04-11 2006-11-23 Hewlett-Packard Development Company L.P. Tlb page fault handler and dump manager
US7823151B2 (en) * 2005-06-15 2010-10-26 Intel Corporation Method of ensuring the integrity of TLB entries after changing the translation mode of a virtualized operating system without requiring a flush of the TLB
US7606363B1 (en) 2005-07-26 2009-10-20 Rockwell Collins, Inc. System and method for context switching of a cryptographic engine
US7634642B2 (en) * 2006-07-06 2009-12-15 International Business Machines Corporation Mechanism to save and restore cache and translation trace for fast context switch
US7631147B2 (en) * 2006-12-06 2009-12-08 Microsoft Corporation Efficient flushing of translation lookaside buffers in a multiprocessor environment
US20080263256A1 (en) * 2007-04-20 2008-10-23 Motorola, Inc. Logic Device with Write Protected Memory Management Unit Registers
US8538000B2 (en) * 2007-08-10 2013-09-17 Tekelec, Inc. Methods, systems, and computer program products for performing message deposit transaction screening
US8601234B2 (en) 2007-11-07 2013-12-03 Qualcomm Incorporated Configurable translation lookaside buffer
US7937556B2 (en) * 2008-04-30 2011-05-03 Oracle America, Inc. Minimizing TLB comparison size
US8140825B2 (en) * 2008-08-05 2012-03-20 International Business Machines Corporation Systems and methods for selectively closing pages in a memory
US9524248B2 (en) * 2012-07-18 2016-12-20 Micron Technology, Inc. Memory management for a hierarchical memory system
US9081707B2 (en) * 2012-12-29 2015-07-14 Intel Corporation Apparatus and method for tracking TLB flushes on a per thread basis
US9886391B2 (en) * 2014-03-20 2018-02-06 International Business Machines Corporation Selective purging of PCI I/O address translation buffer
US9323692B2 (en) 2014-04-17 2016-04-26 International Business Machines Corporation Managing translation of a same address across multiple contexts using a same entry in a translation lookaside buffer
US9317443B2 (en) 2014-04-17 2016-04-19 International Business Machines Corporation Managing translations across multiple contexts using a TLB with entries directed to multiple privilege levels and to multiple types of address spaces
US20160179726A1 (en) * 2014-12-17 2016-06-23 Qualcomm Incorporated Programming hardware registers using a pipelined register bus, and related methods, systems, and apparatuses
US10599566B2 (en) 2016-11-29 2020-03-24 Qualcomm Incorporated Multi-mode cache invalidation
US10353825B2 (en) 2017-06-16 2019-07-16 International Business Machines Corporation Suspending translation look-aside buffer purge execution in a multi-processor environment
US10318436B2 (en) * 2017-07-25 2019-06-11 Qualcomm Incorporated Precise invalidation of virtually tagged caches
US10552162B2 (en) 2018-01-22 2020-02-04 International Business Machines Corporation Variable latency flush filtering
US10776281B2 (en) * 2018-10-04 2020-09-15 International Business Machines Corporation Snoop invalidate filter for distributed memory management unit to reduce snoop invalidate latency
GB2586984B (en) * 2019-09-10 2021-12-29 Advanced Risc Mach Ltd Translation lookaside buffer invalidation
US12135652B2 (en) * 2023-03-22 2024-11-05 Qualcomm Incorporated Filtering remote data synchronization barrier (DSB) instruction execution in processor-based devices

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US602148A (en) * 1898-04-12 John- w
US4053948A (en) 1976-06-21 1977-10-11 Ibm Corporation Look aside array invalidation mechanism
JPS5687282A (en) 1979-12-14 1981-07-15 Nec Corp Data processor
US4669043A (en) 1984-02-17 1987-05-26 Signetics Corporation Memory access controller
US5060137A (en) 1985-06-28 1991-10-22 Hewlett-Packard Company Explicit instructions for control of translation lookaside buffers
GB2210479B (en) 1987-10-02 1992-06-17 Sun Microsystems Inc Alias address support.
US5428757A (en) 1992-04-29 1995-06-27 International Business Machines Corporation Method for reducing translation look aside buffer purges in a multitasking system
EP0651332B1 (de) 1993-10-29 2001-07-18 Advanced Micro Devices, Inc. Linearadressierter Mikroprozessorcachespeicher
US5680572A (en) 1994-02-28 1997-10-21 Intel Corporation Cache memory system having data and tag arrays and multi-purpose buffer assembly with multiple line buffers
US5671444A (en) 1994-02-28 1997-09-23 Intel Corporaiton Methods and apparatus for caching data in a non-blocking manner using a plurality of fill buffers
DE19516949A1 (de) * 1994-05-11 1996-02-15 Gmd Gmbh Speichervorrichtung zum Speichern von Daten
ZA954460B (en) 1994-09-30 1996-02-05 Intel Corp Method and apparatus for processing memory-type information within a microprocessor
US5752274A (en) 1994-11-08 1998-05-12 Cyrix Corporation Address translation unit employing a victim TLB
US5682495A (en) 1994-12-09 1997-10-28 International Business Machines Corporation Fully associative address translation buffer having separate segment and page invalidation
US5924125A (en) 1995-08-01 1999-07-13 Arya; Siamak Method and apparatus for parallel access to consecutive TLB entries
US5895501A (en) 1996-09-03 1999-04-20 Cray Research, Inc. Virtual memory system for vector based computer systems
US5809563A (en) * 1996-11-12 1998-09-15 Institute For The Development Of Emerging Architectures, Llc Method and apparatus utilizing a region based page table walk bit
US6021481A (en) 1997-11-10 2000-02-01 International Business Machines Corporation Effective-to-real address cache managing apparatus and method

Also Published As

Publication number Publication date
US6510508B1 (en) 2003-01-21
WO2001097043A1 (en) 2001-12-20
EP1290562A1 (de) 2003-03-12
DE60102017D1 (de) 2004-03-18
CN1436332A (zh) 2003-08-13
KR20030010727A (ko) 2003-02-05
JP2004503870A (ja) 2004-02-05
KR100804285B1 (ko) 2008-02-18
JP4437001B2 (ja) 2010-03-24
TW561341B (en) 2003-11-11
EP1290562B1 (de) 2004-02-11
CN1304962C (zh) 2007-03-14

Similar Documents

Publication Publication Date Title
DE60102017T2 (de) Räumungsfilter für adressenübersetzungspuffer
DE69901910T2 (de) Verfahren und gerät zur rechnung von indirekten verzweigungszieladressen
DE69904479T2 (de) Registerumbenennung wobei übertragungsinstruktionen mittels umbenennungsschildernzeichen realisiert werden
DE60036016T2 (de) Schnell multithreading für eng gekoppelte multiprozessoren
DE69902392T2 (de) Verwenden von ecc/paritätsbits zum speichern von vor- dekodierungs-informationen
DE60205363T2 (de) Mikroprozessor mit einem performance-drosselmechanismus für das energiemanagement
DE60003235T2 (de) Cachespeicher zum bereitstellen von partiellen etiketten aus nicht-vorhergesagten wegen um die suche bei wegvorhersagefehlgriffen zu leiten
DE69331448T2 (de) Dataprozessor mit einem Cachespeicher
DE69031433T2 (de) Speicherzugriffsausnahmebehandlung bei vorausgelesenen Befehlswörtern in dem Befehlsfliessband eines Rechners mit virtuellem Speicher
DE60223023T2 (de) Verwendung von typenbit zur verfolgung der speicherung von ecc- und vordekodierungsbit in einem cache der ebene 2
DE69721368T2 (de) Verfahren und Gerät zur dynamischen Vorhersage des Weges für mehrstufige und mehrwege-satz-assoziative Cachespeicher
DE69518362T2 (de) Wiedersynchronisierung eines Superskalarprozessors
DE112004002848B4 (de) Mikroprozessor und Verfahren zum Verifizieren einer Speicherdatei in einem derartigen Mikroprozessor
DE68928812T2 (de) Vorrichtung zur Auflösung von einer variablen Anzahl von möglichen Speicherzugriffskonflikten in einem Pipeline-Rechnersystem und Verfahren dazu
DE69904189T2 (de) Konfigurierter prozessor zur abbildung von logischen registernummern auf physikalische registernummern unter verwendung von virtuellen registernummern
DE69908193T2 (de) Ausführung von speicher- und ladeoperationen mittels einer linkdatei
DE69727773T2 (de) Verbesserte Verzweigungsvorhersage in einem Pipelinemikroprozessor
DE69227465T2 (de) Cpu mit pipeline-einheit und effektiv-adressenrechnungseinheit mit möglichkeit zur beibehaltung von virtuellen operandenadressen.
DE69929936T2 (de) Verfahren und Vorrichtung zum Abrufen von nicht-angrenzenden Befehlen in einem Datenverarbeitungssystem
DE69631778T2 (de) Flexible implementierung eines systemverwaltungsmodus in einem prozessor
DE69721961T2 (de) Mikroprozessor mit einem Nachschreibcachespeicher
DE69508303T2 (de) Superskalarmikroprozessor mit einer Vorrichtung zur Namenänderung und Beförderung einer Operandenflagge und Verfahren zur Bearbeitung von RISC-ähnliche Funktionen in diesem Superskalarmikroprozessor
DE69802209T2 (de) An bytebereiche innerhalb eines befehlscaches gebundene verzweigungsselektoren zur schnellen identifizierung von verzweigungsprädiktoren
DE60308201T2 (de) Datenverarbeitungssystem mit externen und internen anweisungssätzen
DE69434669T2 (de) Spekulative Befehlswarteschlange für Befehle mit variabler Byteslänge

Legal Events

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

Owner name: GLOBALFOUNDRIES INC. MAPLES CORPORATE SERVICES, KY