DE112004001608T5 - Mikro-TLB und Mikro-Etiketten für das Verringern der Leistungsaufnahme in einem Prozessor - Google Patents

Mikro-TLB und Mikro-Etiketten für das Verringern der Leistungsaufnahme in einem Prozessor Download PDF

Info

Publication number
DE112004001608T5
DE112004001608T5 DE112004001608T DE112004001608T DE112004001608T5 DE 112004001608 T5 DE112004001608 T5 DE 112004001608T5 DE 112004001608 T DE112004001608 T DE 112004001608T DE 112004001608 T DE112004001608 T DE 112004001608T DE 112004001608 T5 DE112004001608 T5 DE 112004001608T5
Authority
DE
Germany
Prior art keywords
tlb
cache
micro
circuit
hit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
DE112004001608T
Other languages
English (en)
Other versions
DE112004001608B4 (de
Inventor
Gene W. San Jose Shen
Craig S. San Jose Nelson
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 DE112004001608T5 publication Critical patent/DE112004001608T5/de
Application granted granted Critical
Publication of DE112004001608B4 publication Critical patent/DE112004001608B4/de
Expired - Fee Related 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
    • 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/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
    • 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/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
    • 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/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
    • G06F12/1063Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache the data cache being concurrently virtually addressed
    • 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
    • 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
    • G06F9/383Operand prefetching
    • G06F9/3832Value prediction for operands; operand history buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/608Details relating to cache mapping
    • G06F2212/6082Way prediction in set-associative cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/652Page size control
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

Prozessor (10) mit:
einem Zwischenspeicher (16) mit einem Datenspeicher (20), der ausgebildet ist, mehrere Zwischenspeicherzeilen zu speichern, und einem Etikettenspeicher (22), der ausgebildet ist, mehrere Etiketten zu speichern, wobei jede der mehreren Etiketten einer entsprechenden Zeile der mehreren Zwischenspeicherzeilen entspricht; und
einer Etikettenschaltung (36), die ausgebildet ist, einen Treffer in dem Zwischenspeicher (16) durch eine erste virtuelle Adresse einer Teilmenge der mehreren Zwischenspeicherzeilen zu erkennen; und
wobei in Reaktion auf einen Treffer durch die erste virtuelle Adresse in der Etikettenschaltung (36) die Etikettenschaltung (36) ausgebildet ist, ein Auslesen des Etikettenspeichers (22) zu verhindern, und wobei der Datenspeicher (20) ausgebildet ist, mindestens einen Teil einer ersten Zwischenspeicherzeile, die der ersten virtuellen Adresse entspricht, auszugeben.

Description

  • 1. Technisches Gebiet
  • Diese Erfindung betrifft das Gebiet der Prozessoren und betrifft insbesondere schnelle Zwischen- oder Pufferspeicherstrukturen bzw. Cache-Speicherstrukturen in Prozessoren.
  • 2. Hintergrund der Erfindung
  • Prozessoren beinhalten typischerweise eine virtuelle Adressierung und besitzen typischerweise Cache- bzw. schnelle Zwischen- oder Pufferspeicher zum Ablegen von Daten und/oder Instruktionen, auf die kürzlich zugegriffen wurde. Typischerweise erzeugt der Prozessor eine virtuelle Adresse einer Speicherstelle, auf die zuzugreifen ist (d.h. zum Lesen oder Schreiben), und die virtuelle Adresse wird in eine physikalische Adresse umgewandelt bzw. übersetzt, um zu bestimmen, ob der Zugriff den Zwischenspeicher betrifft. Insbesondere wird der Zugriff auf den Zwischenspeicher typischerweise parallel mit der Übersetzung begonnen, und die Übersetzung wird verwendet, um zu erkennen, ob der Zugriff auf den Zwischenspeicher diesen betrifft bzw. ein Treffer ist.
  • Der Zwischenspeicherzugriff ist typischerweise einer der zeitkritischen Signalwege in dem Prozessor, und die Zwischenspeicherwartezeit ist ebenso typischerweise kritisch für das Leistungsvermögen, das von dem Prozessor erreichbar ist. Daher versuchen Entwurfsingenieure für Prozessoren häufig, die Gestalt ihrer Zwischenspeicher/Übersetzungen zu optimieren, um damit die Zwischenspeicherwartezeit zu reduzieren und die Zeitablauferfordernisse zu erfüllen. Jedoch können viele dieser Optimierungsverfahren die Leistungsaufnahme der Zwischenspeicher/Übersetzungsschaltung erhöhen. In vielen Prozessoren kann die Zwischenspeicher/Übersetzungsschaltung den größten Beitrag zur Gesamtleistungsaufnahme des Prozessors bilden.
  • Da sich die Leistungsaufnahme der Prozessoren im Laufe der Zeit erhöht hat, wächst auch die Wichtigkeit zum Steuern der Prozessorleistungsaufnahme (und für das Gestalten von Prozessoren mit geringerer Leistungsaufnahme) an. Da die Zwischenspeicher/Übersetzungsschaltung oft wesentlich zur Leistungsaufnahme eines Prozessors beiträgt, sind Verfahren zum Reduzieren der Leistungsaufnahme der Zwischenspeicher/Übersetzungsschaltung zunehmend wünschenswert.
  • Um das Leistungsverhalten zu verbessern, werden in Prozessoren häufig teilassoziative Zwischenspeicher eingerichtet. In einem teilassoziativen Zwischenspeicher wählt eine vorgegebene Adresse, die den Zwischenspeicher betrifft, einen Satz aus zwei oder mehreren Zwischenspeicherzeilenspeicherplätzen, die zur Speicherung der Speicherzeile verwendet werden, die durch diese Adresse gekennzeichnet ist, aus. Die Zwischenspeicherzeilenplätze in dem Satz werden als die Wege des Satzes bzw. Teilmenge bezeichnet, und ein Zwischenspeicher mit W Wegen wird als W-fach-Weg teilassoziativer Speicher (wobei W eine Ganzzahl größer als eins ist) bezeichnet. Teilassoziative Zwischenspeicher besitzen typischerweise höhere Geschwindigkeiten als direkt zugeordnete Zwischenspeicher der gleichen Größe, und können daher ein besseres Leistungsverhalten als direkt zugeordnete Zwischenspeicher liefern. Jedoch können konventionelle teilassoziative Zwischenspeicher typischerweise auch mehr Leistung als direkt zugeordnete Zwischenspeicher der gleichen Größe aufnehmen. Typischerweise umfasst der Zwischenspeicher einen Datenspeicher, der die kürzlich aufgerufenen Daten enthält, und einen Etikettenspeicher, der eine Etikettenkennung der Adresse der zwischengespeicherten Daten enthält.
  • In einem konventionellen teilassoziativen Zwischenspeicher wird auf jeden Weg des Datenspeichers und des Etikettenspeichers in Reaktion auf eine eingespeiste Adresse zugegriffen. Die Etiketten, die jedem Weg in dem Satz bzw. der Menge entsprechen, können verglichen werden, um zu bestimmen, welcher Weg von der Adresse (falls überhaupt) bezeichnet wird, und die Daten aus dem entsprechenden Weg werden zur Ausgabe durch den Zwischenspeicher ausgewählt. Somit kann auf jeden Weg des Datenspeichers und des Etikettenspeichers zugegriffen werden, wodurch Leistung erforderlich ist. Da ferner der Zwischenspeicherzugriff häufig ein zeitkritischer Weg ist, können der Etikettenspeicher und der Datenspeicherzugriff im Hinblick auf den Zeitablauf und die Wartedauer optimiert werden, wodurch vermehrt eine Leistungsaufnahme erforderlich ist. Weiterhin werden die Zwischenspeicher typischerweise mit der physikalischen Ad resse etikettiert, und somit ist typischerweise die Übersetzungsschaltung in dem kritischen Pfad angesiedelt und damit für den Zeitablauf und die Wartedauer optimiert, wodurch die Leistungsaufnahme in der Übersetzungsschaltung weiter ansteigen kann.
  • ÜBERBLICK ÜBER DIE ERFINDUNG
  • In einer Ausführungsform umfasst ein Prozessor einen Cache- bzw. Zwischenspeicher, einen ersten Übersetzungs- bzw. Translationsneben(lookaside)puffer (TLB) und eine Etikettenschaltung, die mit dem ersten TLB verbunden ist. Der Zwischenspeicher umfasst einen Datenspeicher, der zur Speicherung mehrerer Zwischenspeicherzeilen ausgebildet ist, und einen Etikettenspeicher, der zur Speicherung mehrerer Etiketten ausgebildet ist. Jede der mehreren Etiketten entspricht einer der mehreren Zwischenspeicherzeilen. Der erste TLB ist ausgebildet, mehrere Seitenbereiche virtueller Adressen zu speichern, die mehrere virtuelle Seiten kennzeichnen, für die die physikalischen Adressenübersetzungen in dem ersten TLB gespeichert sind. In Reaktion auf einen Treffer durch eine erste virtuelle Adresse in dem ersten TLB und einem Treffer durch die erste virtuelle Adresse in der Etikettenschaltung ist die Etikettenschaltung ausgebildet, ein Auslesen aus dem Etikettenspeicher in dem Zwischenspeicher zu verhindern.
  • In einer weiteren Ausführungsform wird ein Verfahren beschrieben. Es wird auf einen ersten TLB mit einer ersten virtuellen Adresse zugegriffen. Der erste TLB ist ausgebildet, mehrere Seitenbereiche virtueller Adressen zu speichern, die mehrere virtuelle Adressen kennzeichnen, für die die physikalischen Adressenübersetzungen in dem ersten TLB gespeichert werden. In Reaktion auf einen Treffer durch die erste virtuelle Adresse in dem ersten TLB wird auf eine Etikettenschaltung zugegriffen. Die Etikettenschaltung ist ausgebildet, mehrere Zwischenspeicherzeilen zu kennzeichnen, die in einem Zwischenspeicher gespeichert sind und innerhalb der mehreren virtuellen Seiten liegen. Ein Treffer wird durch die erste virtuelle Adresse in dem ersten TLB und der Etikettenschaltung erkannt. In Reaktion auf den Treffer durch die erste virtuelle Adresse in dem ersten TLB und der Etikettenschaltung wird ein Auslesen aus einem Etikettenspeicher in dem Zwischenspeicher verhindert.
  • In einer noch weiteren Ausführungsform umfasst ein Prozessor einen Zwischenspeicher und eine Etikettenschaltung. Der Zwischenspeicher umfasst einen Datenspeicher, der zur Speicherung mehrerer Zwischenspeicherzeilen ausgebildet ist, und einen Etiketten speicher, der zur Speicherung mehrerer Etiketten ausgebildet ist. Jede der mehreren Etiketten entspricht einer der mehreren Zwischenspeicherzeilen. Die Etikettenschaltung ist ausgebildet, einen Treffer in dem Zwischenspeicher durch eine erste virtuelle Adresse für eine Teilmenge der mehreren Zwischenspeicherzeilen zu erkennen. In Reaktion auf einen Treffer durch die erste virtuelle Adresse in der Etikettenschaltung ist die Etikettenschaltung ausgebildet, ein Auslesen aus dem Etikettenspeicher zu verhindern, wobei der Datenspeicher ausgebildet ist, zumindest einen Teil einer ersten Zwischenspeicherzeile, die der ersten virtuellen Adresse entspricht, auszugeben.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Die folgende detaillierte Beschreibung nimmt Bezug auf die begleitenden Zeichnungen, die nachfolgend kurz beschrieben sind.
  • 1 ist eine Blockansicht eines Teils einer Ausführungsform eines Prozessors.
  • 2 ist eine Blockansicht einer Ausführungsform eines Übersetzungs- und Filterblocks, der in 1 gezeigt ist.
  • 3 ist ein Zeitablaufdiagramm, das eine Ausführungsform einer Pipeline zeigt, die durch eine Ausführungsform des Prozessors eingerichtet werden kann.
  • 4 ist eine Blockansicht einer Ausführungsform einer Mikro-TLB-Etikettenschaltung.
  • 5 ist eine Blockansicht einer Ausführungsform einer Wahrheitstabelle, die einer in 4 gezeigten Steuerschaltung entspricht.
  • 6 ist eine Blockansicht einer Ausführungsform einer Mikro-TLB-Datenschaltung.
  • 7 ist eine Blockansicht einer Ausführungsform einer Mikro-Etikettenschaltung.
  • 8 ist ein Flussdiagramm, das die Funktionsweise einer Ausführungsform der in 2 gezeigten Blöcke darstellt.
  • 9 ist eine Blockansicht einer Ausführungsform einer Wegevorhersageeinheit, der in 1 gezeigt ist.
  • 10 ist ein Flussdiagramm, das eine Ausführungsform zum Auswählen eines Ersatzweges in Reaktion auf ein Verfehlen des Zwischenspeichers zeigt.
  • 11 ist eine Blockansicht einer Ausführungsform eines Teils des Cache-Datenspeichers, der in 1 gezeigt ist.
  • 12 ist eine Blockansicht einer zweiten Ausführungsform eines Teils des in 1 gezeigten Datenzwischenspeichers.
  • 13 ist eine Blockansicht einer dritten Ausführungsform eines Teils des in 1 gezeigten Datenzwischenspeichers.
  • 14 ist ein Flussdiagramm, das eine Ausführungsform zum Erzeugen einer Wegevorhersage darstellt.
  • 15 ist eine Blockansicht einer Ausführungsform eines Computersystems mit dem in 1 gezeigten Prozessor.
  • 16 ist eine Blockansicht einer zweiten Ausführungsform eines Computersystems mit dem in 1 gezeigten Prozessor.
  • Obwohl die Erfindung diversen Modifizierungen und Alternativen unterliegen kann, sind dennoch spezielle Ausführungsformen beispielsweise in den Zeichnungen dargestellt und hierin im Detail beschrieben. Es sollte jedoch beachtet werden, dass die Zeichnungen und die detaillierte Beschreibung nicht beabsichtigen, die Erfindung auf die spezielle offenbarte Form einzuschränken, sondern die Erfindung soll vielmehr alle Modifizierungen, Äquivalente und Alternativen abdecken, die innerhalb des Grundgedankens und des Schutzbereichs der vorliegenden Erfindung liegen, wie sie durch die angefügten Patentansprüche definiert ist.
  • BESCHREIBUNG DER ERFINDUNG
  • In 1 ist eine Blockansicht eines Teils einer Ausführungsform eines Prozessors 10 gezeigt. In der dargestellten Ausführungsform umfasst der Prozessor 10 eine Adressenerzeugungseinheit (AGU) 12, eine Wegevorhersageeinheit 14, einen Datencache- bzw. Datenzwischenspeicher 16 und eine Übersetzungs- bzw. Translations/Filterschaltung 18. Der Datenzwischenspeicher 16 umfasst einen Datenpufferdatenspeicher bzw. einen Cache-Datenspeicher 20 und einen Datenpufferetikettenspeicher bzw. einen Cache-Etikettenspeicher 22. Die AGU 12 und die Wegevorhersageeinheit 14 sind angeschlossen, um Adressenoperanden zu empfangen. Die AGU 12 ist ausgebildet, eine virtuelle Adresse (VA) zu erzeugen und ist angeschlossen, die virtuelle Adresse zu der Wegevorhersageeinheit 14, dem Datenspeicher 16 (und insbesondere dem Cache-Datenspeicher 20 und dem Cache-Etikettenspeicher 22) und der Übersetzungs/Filterschaltung 18 zuzuführen. Die Wegevorhersageeinheit 14 ist angeschlossen, um eine Wegevorhersage an den Cache-Datenspeicher 20 zu senden, der ausgebildet ist, Daten in Reaktion auf die Wegevorhersage und die virtuelle Adresse weiterzuleiten. Die Wegevorhersageeinheit 14 ist ferner angeschlossen, um eine frühe Nichttrefferkennzeichnung bereitzustellen. Die Übersetzungs/Filterschaltung 18 ist mit dem Datenzwischenspeicher 16 verbunden, und ist angeschlossen, um eine Trefferkennzeichnung für einen Übersetzungsneben(lookaside)puffer (TLB) bereitzustellen. Der Datenzwischenspeicher 16 ist ausgebildet, eine Nichttrefferanzeige für einen Zwischenspeicher zu erzeugen.
  • Die AGU 12 ist angeschlossen, um die Adressenoperanden für eine Speicheroperation zu empfangen und ist ausgebildet, eine virtuelle Adresse in Reaktion auf die Adressenoperanden zu erzeugen. Beispielsweise kann die AGU 12 eine Addierschaltung aufweisen, die ausgebildet ist, die Adressenoperanden zu addieren, um die virtuelle Adresse zu erzeugen. Im hierin verwendeten Sinne können Speicheroperationen Einladeoperationen (die eine Speicherstelle auslesen) und Speicheroperationen (die in eine Speicherstelle schreiben) beinhalten. Speicheroperationen können einen impliziten Teil einer Anweisung bilden, die in einigen Ausführungsformen einen Speicheroperanden spezifiziert, oder diese können eine explizite Operation sein, die in Reaktion auf das Einladen oder Speichern einer Anweisung ausgeführt wird (was manchmal auch als eine Move-Anweisung bezeichnet wird). Adressenoperanden können Operanden der Instruktion sein, die der Speicheroperation entspricht, die definiert sind, um zum Erzeugen der Adresse des Speicheroperanden verwendet zu werden. Adressenoperanden können eines oder mehrere der folgenden Elemente enthalten: Registerwerte von Registern, die von dem Prozessor 10 eingerichtet sind, Versetzungs- bzw. Offsetdaten, die in der Instrukti on codiert sind, und in einigen Ausführungsformen eine segmentierte Basisadresse von einem Segmentierungsmechanismus, der von dem Prozessor 10 eingerichtet ist. Eine virtuelle Adresse kann eine von den Adressenoperanden einer Instruktion erzeugte Adresse beinhalten, die noch nicht durch den Seitenübersetzungsmechanismus in eine physikalische Adresse übersetzt wurde (die zum Adressieren des Speichers in einem Computersystem verwendet wird, das den Prozessor 10 enthält). Beispielsweise kann in einer Ausführungsform der Prozessor 10 die ×86-Instruktionssatzarchitektur aufweisen (auch als IA-32 bekannt). In einer derartigen Ausführungsform kann die lineare Adresse beispielsweise eine virtuelle Adresse sein. Wenn ein Seitenübersetzung nicht aktiviert ist, kann die virtuelle Adresse gleich der physikalischen Adresse sein.
  • Der Seitenmechanismus, der von dem Prozessor 10 eingerichtet ist, übersetzt virtuelle Adressen in physikalische Adressen mit der Auflösung einzelner Seiten. Das heißt, es kann mehr als einen Übersetzungseintrag geben, der für jede virtuelle Adresse in der Seite verwendet wird, um die entsprechende physikalische Adresse zu kennzeichnen. Die Seite kann von beliebiger Größe sein. Beispielsweise sind 4 Kilobytes eine typische Größe. Der ×86-Instruktionssatz spezifiziert ferner eine 2 Megabyteseitengröße und eine 4 Megabyteseitengröße in einigen Betriebsmodi. Die am wenigsten signifikanten Bits von virtuellen Adressen definieren einen Offset innerhalb der Seite und werden durch den Seitenmechanismus nicht übersetzt. Beispielsweise bilden bei einer 4 Kilobyteseitengröße die letzten signifikanten 12 Bits der virtuellen Adressen den Seitenoffset bzw. Seitenabstand. Die verbleibenden Bits einer virtuellen Adresse ohne den Seitenoffset können den Seitenbereich der virtuellen Adresse bilden. Der Seitenbereich kann in dem Seitenmechanismus verwendet werden, um eine Übersetzung der physikalischen Adresse für die virtuelle Adresse auszuwählen. Anders ausgedrückt, der Seitenbereich der virtuellen Adresse kann eine virtuelle Seite definieren, die mittels der physikalischen Adressenübersetzung in eine physikalische Seite übersetzt wird.
  • Der Prozessor 10 kann ein oder mehrere Verfahren aufweisen, um die Leistungsaufnahme zu verringern. Zum Beispiel kann die Übersetzungs/Filterschaltung 18 einen relativ kleinen TLB (der auch im Weiteren als Mikro-TLB bezeichnet wird) und eine Etikettenschaltung (die im Weiteren auch als Mikro-Etikettenschaltung bezeichnet wird) aufweisen. Die Mikro-Etikettenschaltung kann ausgebildet sein, um eine relativ kleine Anzahl an Etiketten von Zwischenspeicherzeilen zu speichern, die: (i) in den virtuellen Sei ten, für die der Mikro-TLB Übersetzungen aufweist, liegen; und (ii) in dem Datenzwischenspeicher 16 gespeichert sind.
  • Der Mikro-TLB kann in Reaktion auf eine virtuelle Adresse angesprochen werden, und wenn ein Treffer für den Mikro-TLB erkannt wird, kann ein Zugriff auf einen größeren Haupt-TLB (oder mehrere TLBs) in der Übersetzungs/Filterschaltung 18 vermieden werden. Die Leistung, die beim Zugriff auf den Haupt-TLB erforderlich wäre, kann in einem derartigen Falle eingespart werden. Wenn ferner ein Treffer für den Mikro-TLB erkannt wird, kann auf die Mikro-Etikette zugegriffen werden. Wenn ein Treffer für die Mikro-Etikette erkannt wird, kann ein Lesevorgang des Cache-Etikettenspeichers 22 zum Bestimmen eines Treffers/Nichttreffers ebenso vermieden werden (und somit kann die Leistung, die beim Zugriff auf den Cache-Etikettenspeicher 22 verbraucht würde, ebenso eingespart werden). In jedem Fall (d.h. bei einem Treffer in dem Mikro-Etikettenspeicher oder einem Treffer in dem Cache-Etikettenspeicher 22) können die Daten, die vom Zugriff auf die Zwischenspeicherzeile herrühren, von dem Cache-Datenspeicher 20 weitergeleitet werden. Somit dient der Mikro-TLB als ein Filter für Zugriffe auf den Haupt-TLB, und der Mikro-TLB und der Mikro-Etikettenspeicher dienen als ein Filter für Zugriffe auf den Cache-Etikettenspeicher 22.
  • Eine Technik zur Leistungseinsparung, die in dem Prozessor 10 eingerichtet sein kann, nutzt die Wegevorhersageeinheit 14 für Ausführungsformen, in denen der Datenzwischenspeicher 16 teilassoziativ ist. Die Wegevorhersageeinheit 14 erzeugt eine Wegevorhersage für den Cache-Datenspeicher 20 für eine Speicheroperation, die auf den Datenzwischenspeicher 16 zugreift. In Reaktion auf die Wegevorhersage und die virtuelle Adresse kann der Cache-Datenspeicher 20 Daten (Datenweiterleitung in 1) zu diversen Prozessorschaltungen, die die Daten verwenden (in 1 nicht gezeigt) weiterleiten. Die aus dem Cache-Datenspeicher 20 ausgelesenen und weitergeleiteten Daten können eine Zwischenspeicherzeile oder einen Teil einer Zwischenspeicherzeile beinhalten. Da Daten in Reaktion auf die Wegevorhersage weitergeleitet werden, ist die Übersetzungsschaltung und die Zwischenspeicheretikettenschaltung nun nicht mehr ein Teil des kritischen Pfades in dem Prozessor 10. In einigen Ausführungsformen können die Übersetzungsschaltung und die Zwischenspeicheretikettenschaltung eingerichtet werden, indem Schaltungen verwendet werden, die eine geringere Leistungsaufnahme besitzen, selbst wenn eine gewisse Verarbeitungszeit in der Schaltung erforderlich ist. Optional kann es zulässig sein, dass die Filterstrukturen, etwa der Mikro-TLB und die Mik roetikette die Wartezeit der Übersetzungsschaltung und die Zwischenspeicheretikettenvergleiche vergrößern (und damit ferner die Gesamtleistungsaufnahme verringern, indem der Zugriff auf die TLB-Strukturen und dem Cache-Etikettenspeicher 22 reduziert werden). Des Weiteren kann die Wegevorhersageeinheit 14 verwendet werden, um die Leistungsaufnahme des Prozessors 10 zu reduzieren, indem in dem Cache-Datenspeicher 20 eine reduzierte Leistungsaufnahme zulässig ist. Diverse Gestaltungsvarianten für den Cache-Datenspeicher 20 sind detaillierter nachfolgend mit Bezug zu 9 beschrieben.
  • Die Wegevorhersage kann als zulässig eingestuft werden, indem der Mikro-TLB/Mikro-Etikettenspeicher der Übersetzungs/Filterschaltung 18 und/oder ein Etikettenvergleich mit einer oder mehreren Etiketten aus dem Cache-Etikettenspeicher 22 eingesetzt werden. Wenn die Wegevorhersage korrekt ist, kann der weitere Betrieb mit dem von dem Cache-Datenspeicher 20 in Reaktion auf die Wegevorhersage weitergeleiteten Daten fortgesetzt werden. Wenn andererseits die Wegevorhersage nicht korrekt ist, kann die Speicheroperation erneut versucht werden. Alternativ kann in einigen Ausführungsformen der Datenzwischenspeicher 16 das Ersetzen so steuern, dass, wenn die Wegevorhersage nicht korrekt ist, die Adresse ein Nichttreffer für den Datenzwischenspeicher 16 ist. In einigen Ausführungsformen kann die korrekte Wegevorhersage während der Validisierung der Wegevorhersage bestimmt werden, und es kann auf dem korrekten Weg während eines erneuten Versuches zugegriffen werden. In anderen Ausführungsformen können während des Neuversuches die nicht vorhergesagten Wege nach einem Treffer abgesucht werden (beispielsweise kann eine konventionelle teilassoziative Tabellierung in dem Datenzwischenspeicher 16 ausgeführt werden). Der erneute Versuch kann in einer Vielzahl von Arten erreicht werden. Beispielsweise kann in einigen Ausführungsformen ein Puffer Instruktionen speichern, die für die Ausführung ausgegeben würden (beispielsweise eine Ablauforganisation oder eine Reservierungsstation). Die Speicheroperation kann von dem Puffer erneut ausgegeben werden. In anderen Ausführungsformen kann die Instruktion, die der Speicheroperation entspricht, und nachfolgende Instruktionen erneut abgefragt werden (beispielsweise von einem InstruktionsZwischenspeicher oder von dem Speicher).
  • In einigen Ausführungsformen kann die Verwendung der Wegevorhersageeinheit 14 die Leistungsaufnahme in dem Cache-Etikettenspeicher 22 verringern. Um die Wegevorhersage zu validisieren, muss lediglich auf die Etikette in dem vorhergesagten Weg zuge griffen werden und diese verglichen werden. In einigen Ausführungsformen wird daher lediglich auf den vorhergesagten Weg in dem Cache-Etikettenspeicher 22 zugegriffen (wenn ein Nichttreffer in dem Mikro-Etikettenspeicher erkannt wird, und somit wird ein Zugriff auf den Cache-Etikettenspeicher 22 ausgeführt, um zu erkennen, ob ein Nichttreffer für den Zwischenspeicher auftritt oder nicht). Wenn ein Nichttreffer in dem vorhergesagten Weg erkannt wird, wird die Speicheroperation erneut versucht, wie dies zuvor beschrieben ist. In derartigen Ausführungsformen kann der Cache-Etikettenspeicher 22 die Wegevorhersage empfangen, wie dies durch den gepunkteten Pfeil in 1 dargestellt ist.
  • Die Wegevorhersageeinheit 14 kann ferner eine frühe Anzeige für einen Nichttreffer bereitstellen, wenn keine Wegevorhersage für eine vorgegebene Speicheroperation erzeugt wird. Die Wegevorhersageeinheit kann ferner einen Speicher aufweisen, der eine Kennzeichnung der in jedem Weg des Zwischenspeichers gespeicherten Adresse beinhaltet, und kann die Kennzeichnung mit einer entsprechenden Kennzeichnung der virtuellen Adresse der Speicheroperation vergleichen, um die Wegevorhersage der Speicheroperation zu erzeugen. Wenn die entsprechende Kennzeichnung nicht mit den Kennzeichnungen in der Wegevorhersageeinheit übereinstimmt, so wird keine Wegevorhersage getroffen (und es wird ein Nichttreffer erkannt). Die frühe Kennzeichnung eines Nichttreffers kann als ein Hinweis für einen L2-Zwischenspeicher verwendet werden (wobei der Datenzwischenspeicher 16 als der L1-Zwischenspeicher bzw. Cache dient), dass ein Nichttreffer in dem Datenzwischenspeicher 16 auftritt und somit der L2-Zwischenspeicher berechtigt ist, einen Zugriff früher zu beginnen, als auf einen Nichttreffer des Zwischenspeichers von der Übersetzungs/Filterschaltung 18 zu warten.
  • Der Datenzwischenspeicher 16 kann einen Nichttreffer für den Zwischenspeicher kennzeichnen und die Übersetzungs/Filterschaltung 18 kann einen Nichttreffer für den TLB für andere Schaltungen in dem Prozessor 10 für Korrekturaktivitäten kennzeichnen (beispielsweise durch Absuchen einer Tabelle, um in den TLBs gespeicherte Übersetzungen aufzufinden, eine Auffüllung des Zwischenspeichers, um die fehlende Zwischenspeicherzeile in den Datenzwischenspeicher 16 zu füllen, etc.). Schaltungen zur Durchsuchung von Tabellen und zum Zugreifen auf den Speicher, zur Abrufung einer fehlenden Zwischenspeicherzeile, sind in 1 nicht gezeigt.
  • In der dargestellten Ausführungsform kann der Datenzwischenspeicher 16 teilassoziativ sein. In anderen Ausführungsformen kann dieser vollständig assoziativ sein, und die Wegevorhersageeinheit 14 kann verwendet werden, um einen Treffer für einen beliebigen Eintrag in dem Datenzwischenspeicher 16 vorherzusagen. In Ausführungsformen, in denen die Wegevorhersageeinheit 14 nicht eingerichtet ist, können andere Konfigurationen vorgesehen sein (beispielsweise direkt abgebildet bzw. zugeordnet). Im hierin verwendeten Sinne kann eine Zwischenspeicherzeile eine Reihe zusammenhängender Bytes sein, die die Einheit zum Zuordnen/Freigeben von Speicherplatz in dem Zwischenspeicher ist (beispielsweise ein Datenzwischenspeicher oder ein InstruktionsZwischenspeicher). Beispielsweise kann eine Zwischenspeicherzeile 32 zusammenhängende Bytes oder 64 zusammenhängende Bytes aufweisen, obwohl eine beliebige Größe für die Zwischenspeicherzeile vorgesehen sein kann. Der Cache-Datenspeicher 20 kann mehrere Einträge aufweisen, wovon jeder als eine Zwischenspeicherzeile konfiguriert ist. Die Einträge können in Sätzen oder Mengen aus W-Zwischenspeicherzeilen für teilassoziative Ausführungsformen angeordnet sein. Der Cache-Etikettenspeicher 22 umfasst ebenso mehrere Einträge, wovon jeder ausgebildet ist, eine Etikette für einen entsprechenden Eintrag in dem Cache-Datenspeicher 20 zu speichern. Die Einträge des Cache-Etikettenspeichers 22 können in Gruppen mit der Anzahl W angeordnet sein, entsprechend der Anordnung des Cache-Datenspeichers 20.
  • In einigen Ausführungsformen kann der Datenzwischenspeicher 16 physikalisch etikettiert sein (d.h. die Etiketten in dem Cache-Etikettenspeicher 22 können physikalische Adressen sein). Im Allgemeinen kann ein Treffer in dem Datenzwischenspeicher 16 erkannt werden, wenn die Daten entsprechend einer gegebenen physikalischen Adresse in dem Datenzwischenspeicher 16 gespeichert sind. Wenn die Daten, die der gegebenen physikalischen Adresse entsprechen, nicht in dem Datenzwischenspeicher 16 gespeichert sind, wird ein Nichttreffer erkannt. Jedoch kann es in einigen Fällen günstig sein, eine virtuelle Adresse, die in dem Datenzwischenspeicher 16 liegt, zu berücksichtigen, selbst wenn der Datenzwischenspeicher 16 physikalisch etikettiert ist. Eine virtuelle Adresse kann ein Treffer in dem Datenzwischenspeicher 16 sein, wenn die entsprechende physikalische Adresse (in die sich die virtuelle Adresse übersetzt) ein Treffer ist. In einigen Fällen kann die virtuelle Adresse als ein Treffer erkannt werden, ohne dass tatsächlich die entsprechende physikalische Adresse verwendet wird (beispielsweise in der Mikro-Etikette, die nachfolgend detailliert erläutert ist).
  • Im Allgemeinen kann der Prozessor 12 andere Schaltungen entsprechend der gewünschten Gestaltung aufweisen. In diversen Ausführungsformen kann der Prozessor 10 superskalarer oder skalarer Rechner sein, oder kann geordnete Instruktionsausführung oder ungeordnete Instruktionsausführung, etc. aufweisen, und kann Schaltungen enthalten, um die vorhergehenden Merkmale einzurichten. In einigen Ausführungsformen kann beispielsweise mehr als eine AGU 12 vorgesehen sein und kann virtuelle Adressen parallel erzeugen. Die Wegevorhersageeinheit 14, der Datenzwischenspeicher 16 und die Übersetzungs/Filterschaltung 18 können Schaltungen beinhalten, um mehrere virtuelle Adressen parallel in derartigen Ausführungsformen zu handhaben, oder können Schaltungen zum anderweitigen Handhaben der mehreren virtuellen Adressen aufweisen.
  • Zu beachten ist, dass, obwohl die Wegevorhersageeinheit 14 und die Mikro-TLB/Mikro-Etikettenfunktionalität der Übersetzungs/Filterschaltung 18 so beschrieben sind, dass diese zusammen verwendet werden, um die geringere Leistungsaufnahme zu erzeugen, auch Ausführungsformen eingeschlossen sind, die die Wegevorhersageeinheit 14 ohne Einrichten des Mikro-TLB/Mikro-Etikette vorsehen. Des Weiteren sind Ausführungsformen betrachtet, in denen die Mikro-TLB/Mikro-Etikette ohne die Wegevorhersageeinheit 14 eingerichtet sind (beispielsweise durch Verzögern der Datenweiterleitung von dem Datenzwischenspeicher 16, bis eine Wegeauswahl erfolgt ist). Beispielsweise kann die Mikro-Etikette in einigen Ausführungsformen eine Wegeauswahl für einen darin erkannten Treffer ausgeben.
  • Es ist zu beachten, dass, obwohl die Mikro-TLB/Mikro-Etikettenschaltung und die Wegevorhersageeinheit 14 so dargestellt sind, dass sie mit einem Datenzwischenspeicher verwendet werden, der Mikro-TLB, die Mikro-Etikettenschaltung und/oder die Wegevorhersageeinheit 14 zusammen mit einem InstruktionsZwischenspeicher nach Bedarf in dem Prozessor verwendet werden können.
  • In 2 ist eine Blockansicht einer Ausführungsform der Übersetzungs/Filterschaltung 18 gezeigt. In der dargestellten Ausführungsform umfasst die Übersetzungs/Filterschaltung 18 einen Mikro-TLB 30 (mit einer Mikro-TLB-Etikettenschaltung 32 und einer Mikro-TLB-Datenschaltung 34), eine Mikro-Etikettenschaltung 36, einen Haupt-TLB 38 (mit einer Haupt-TLB-Etikettenschaltung 40 und einer Haupt-TLB-Datenschaltung 42), einen Multiplexer 44 und Invertierer 46 und 48. Ferner ist in 2 ein Teil des Datenzwi schenspeichers 16 mit dem Cache-Etikettenspeicher 22, eine Zwischenspeichertreffer/Nichttreffer-Schaltung 50 und ein Komparator 52 gezeigt. Der Mikro-TLB 30 (und insbesondere die Mikro-TLB-Etikettenschaltung 32), die Mikro-Etikettenschaltung 36, der Cache-Etikettenspeicher 22 und der Haupt-TLB 38 (und insbesondere die Haupt-TLB-Etikettenschaltung 40) sind angeschlossen, die virtuelle Adresse von der AGU 12 zu empfangen. Die Mikro-TLB-Etikettenschaltung 32 ist ausgebildet, ein Treffersignal an die Mikro-TLB-Datenschaltung 34, die Mikro-Etikettenschaltung 36, den Multiplexer 44 und den Inverter 46 (der weiter mit der Haupt-TLB-Etikettenschaltung 40 verbunden ist) auszugeben. Die Mikro-TLB-Etikettenschaltung 32 ist ferner ausgebildet, eine Eintragskennzeichnung an die Mikro-TLB-Datenschaltung 34 und die Mikro-Etikettenschaltung 36 auszugeben. Die Mikro-TLB-Datenschaltung 34 ist ausgebildet, eine physikalische Adresse (PA) an den Multiplexer 44 auszugeben, ebenso wie die Haupt-TLB-Datenschaltung 42. Der Ausgang des Multiplexers 44 ist mit dem Komparator 52 verbunden. Die Haupt-TLB-Etikettenschaltung 40 ist mit der Haupt-TLB-Datenschaltung 42 verbunden und liefert eine TLB-Nichttreffer-Kennzeichnung. Die Mikro-Etikettenschaltung 36 ist ausgebildet, ein Treffersignal an den Inverter 48 (der ferner mit dem Cache-Etikettenspeicher 22 verbunden ist) und an die Zwischenspeichertreffer/Nichttreffer-Schaltung 50 auszugeben. Die Zwischenspeichertreffer/Nichttreffer-Schaltung 50 ist ferner mit dem Komparator 42 verbunden und liefert eine Zwischenspeicher-Nichttreffer-Kennzeichnung.
  • Der Mikro-TLB 30 empfängt die virtuelle Adresse von der AGU 12 und vergleicht den Seitenbereich der virtuellen Adresse mit den Seitenbereichen der virtuellen Adressen, die den Übersetzungen entsprechen, die in der Mikro-TLB 30 gespeichert sind. Insbesondere kann die Mikro-TLB-Etikettenschaltung 32 mehrere Einträge aufweisen, die die Seitenbereiche der virtuellen Adressen beinhalten. Die entsprechenden physikalischen Adressen und andere Informationen aus den Seitentabellen, die Übersetzung ergeben ha, können in der Mikro-TLB-Datenschaltung 34 gespeichert werden. Die Mikro-TLB-Etikettenschaltung 32 führt den Vergleich aus und gibt das Treffersignal aus, das anzeigt, ob die virtuelle Adresse in dem Mikro-TLB liegt oder nicht, und wenn ein Treffer angezeigt wird, gibt die Eintragkennzeichnung an, welcher Eintrag betroffen ist. Die Mikro-TLB-Datenschaltung 34 kann die Eintragkennzeichnung empfangen und kann die entsprechende physikalische Adresse an den Multiplexer 44 ausgeben. Das Treffersignal veranlasst den Multiplexer 44, die physikalische Adresse aus dem Mikro-TLB 30 als das Ausgangssignal für den Komparator 52 auszuwählen. Obwohl eine vollständig assoziati ve Ausführungsform hierin detailliert beschrieben ist, können in anderen Ausführungsformen andere Konfigurationen angewendet werden. In diversen Ausführungsformen kann beispielsweise der Mikro-TLB 30 eine vollständig assoziative, eine teilassoziativ oder eine direkt zugeordnete Konfiguration aufweisen.
  • Ferner kann das Treffersignal des Mikro-TLB 30 als eine Aktivierung der Mikro-Etikettenschaltung 36 dienen. Die Mikro-Etikettenschaltung 36 kann Etiketten für mehrere Zwischenspeicherzeilen in den virtuellen Seiten enthalten, für die der Mikro-TLB 30 Übersetzungen beinhaltet. Wenn daher ein Nichttreffer in dem Mikro-TLB auftritt, ergibt auch die Mikro-Etikettenschaltung 36 keinen Treffer. Wenn ein Treffer in dem Mikro-TLB vorliegt, dann ist es möglich, dass die Mikro-Etikettenschaltung 36 einen Treffer erzeugt. Ferner empfängt die Mikro-Etikettenschaltung 36 die Eintragskennzeichnung. Die Mikroz-Etikettenschaltung 36 bestimmt, ob es einen Treffer in der Mikro-Etikettenschaltung 36 für die virtuelle Adresse gibt, und erzeugt ein Treffersignal. Wenn ein Treffer in der Mikro-Etikettenschaltung 36 vorliegt, dann entspricht die virtuelle Adresse dem Datenzwischenspeicher 16 und ein Zugriff auf die Etikette in dem Cache-Etikettenspeicher 22 kann verhindert werden. Somit dient das Treffersignal von der Mikro-Etikettenschaltung 36 als eine Deaktivierung für den Cache-Etikettenspeicher 22, wodurch der Cache-Etikettenspeicher 22 gehindert wird, Etiketten in Reaktion auf die virtuelle Adresse auszulesen. Der Inverter 48 kann somit das Treffersignal der Mikro-Etikettenschaltung 36 invertieren und das Ausgangssignal zu dem Cache-Etikettenspeicher 22 als ein Aktivierungssignal zuführen. Die Zwischenspeichertreffer/Nichttrefferschaltung 50 empfängt ebenso das Treffersignal der Mikro-Etikettenschaltung 36 und zeigt einen Nichttreffer für den Zwischenspeicher für die virtuelle Adresse nicht an, wenn das Treffersignal einen Treffer in der Mikro-Etikettenschaltung 36 anzeigt. Der Treffer/Nichttreffer aus dem Komparator 52 kann in diesem Falle ignoriert werden.
  • Wenn es einen Nichttreffer in der Mikro-Etikettenschaltung 36 gibt (oder wenn die Mikro-Etikettenschaltung 36 aufgrund eines Nichttreffers in der Mikro-TLB-Schaltung 30 nicht aktiviert ist), wird der Cache-Etikettenspeicher 22 aktiviert und gibt eine Etikette oder mehrere Etiketten an den Komparator 52 weiter. In einigen Ausführungsformen, in denen die Wegevorhersageeinheit 14 vorgesehen ist, wird lediglich die Etikette des vorhergesagten Wegs ausgegeben. Der Cache-Etikettenspeicher 22 kann angeschlossen sein, um die Wegevorhersage (WP) für eine derartige Ausführungsform zu empfangen. In anderen Ausführungsformen kann jede Etikette in der indizierten Menge für den Vergleich ausgegeben werden. In derartigen Ausführungsformen kann die Nichttrefferkennzeichnung für den Zwischenspeicher einen Nichttreffer oder einen Nichttreffer in dem vorhergesagten Weg, jedoch einen Treffer in einem unvorhergesagten Weg bezeichnen, so dass ein Zwischenspeicherauffüllen nicht auftritt, wenn ein Treffer in einem nicht vorhergesagten Weg auftritt. In einigen Ausführungsformen kann die Auswahl eines Ersatzweges bei Auftreten eines Nichttreffers für den Zwischenspeicher so gesteuert werden, dass ein Treffer in einem nicht vorhergesagten Weg nicht auftritt. Ein Beispiel einer derartigen Ersetzung wird nachfolgend mit Bezug zu den 9 und 10 erläutert. Der Komparator 52 liefert die Vergleichsergebnisse an die Zwischenspeichertrefter/Nichttrefferschaltung 50, die entsprechend die Nichttrefferkennzeichnung für den Zwischenspeicher erzeugt. Wenn es einen Treffer in dem Cache-Etikettenspeicher 22 gibt und ein Treffer in der Mikro-TLB 30 vorlag, kann die Etikette von dem Cache-Etikettenspeicher 22 in die Mikro-Etikettenschaltung 36 eingeladen werden.
  • Da die Mikro-Etikettenschaltung 36 Etiketten speichert, die auch in dem Cache-Etikettenspeicher 22 enthalten sind, kann die Mikro-Etikettenschaltung 36 kohärent zu dem Cache-Etikettenspeicher 22 gehalten werden. Eine Zwischenspeicherzeile kann in dem Datenzwischenspeicher 16 aufgrund des Ersetzens mittels einer Zwischenspeicherauffüllung einer fehlenden Zwischenspeicherzeile als ungültig erklärt werden, oder kann aufgrund eines Anfragetreffers als ungültig erklärt werden, der von einem Zugriff von einem weiteren Prozessor oder einer weiteren Stelle einer Verbindung erzeugt würde, mit der der Prozessor 10 verbunden ist. In einer Ausführungsform kann der gesamte Inhalt der Mikro-Etikettenschaltung 36 in Reaktion auf eine Aktualisierung des Cache-Etikettenspeichers 22 als ungültig erklärt werden. Alternativ können nur Einträge in der Mikro-Etikettenschaltung 36 als ungültig erklärt werden, die den gleichen Zwischenspeicherindex wie der Index aufweisen, an der die Aktualisierung auftritt. In einer noch weiteren Alternative werden Einträge in der Mikro-Etikettenschaltung 36 als ungültig erklärt, die: (i) den gleichen Zwischenspeicherindex wie der Index aufweisen, an dem die Aktualisierung stattfindet; und (ii) die gleiche virtuelle Adresse (in dem entsprechenden Mikro-TLB-Eintrag) wie die Zwischenspeicherzeile, die in dem Datenzwischenspeicher 16 als ungültig erklärt wird, besitzen.
  • Die Mikro-Etikettenschaltung 36 speichert Etiketten innerhalb virtueller Seiten, die durch Einträge in dem Mikro-TLB 30 übersetzt werden. Wenn daher der Mikro-TLB 30 aktualisiert wird, kann auch die Mikroetikette aktualisiert werden. In einer Ausführungsform kann, wenn der Mikro-TLB 30 aktualisiert wird, der gesamte Inhalt der Mikro-Etikettenschaltung 36 als ungültig erklärt werden. Alternativ kann eine selektive Invalidisierung von Etiketten in der Mikro-Etikettenschaltung 36 eingerichtet werden, die den Mikro-TLB-Einträgen entsprechen, die gerade geändert werden.
  • Der Mikro-TLB 30 dient ferner als ein Filter für den Haupt-TLB 38. Das heißt, wenn es einen Treffer in der Mikro-TLB 30 gibt, wird ein Zugriff auf den Haupt-TLB 38 verhindert. Somit kann das von dem Mikro-TLB 30 ausgegebene Treffersignal von dem Inverter 46 invertiert werden und einem Auslöse- bzw. Aktivierungseingang der Haupt-TLB-Etikettenschaltung 40 eingespeist werden. Die Haupt-TLB-Etikettenschaltung 40 kann einen Zugriff auf die Haupt-TLB-Etiketten verhindern, wenn der Aktivierungseingang nicht gesetzt ist.
  • Wenn es einen Nichttreffer in dem Mikro-TLB 30 gibt, dann bestimmt die Haupt-TLB-Etikettenschaltung 40, ob die virtuelle Adresse ein Treffer in dem Haupt-TLB 38 ist. Wenn ein Treffer vorliegt, kann auf die Haupt-TLB-Datenschaltung 42 zugegriffen werden, um die entsprechende physikalische Adresse zu dem Multiplexer 44 auszugeben. Ferner kann die Übersetzung von dem Haupt-TLB 38 in den Miko-TLB 30 eingeladen werden. Da es einen Nichttreffer in dem Mikro-TLB 30 gibt, wählt der Multiplexer 44 die von der Haupt-TLB-Datenschaltung 42 ausgegebene physikalische Adresse als die Ausgabe für den Komparator 52 aus. Wenn der Haupt-TLB 38 aktiviert ist und ein Nichttreffer in dem Haupt-TLB 38 erkannt wird, erzeugt der Haupt-TLB 38 die TLB-Nichttrefferkennzeichnung, um einen Tabellendurchlauf der Seitentabellen zu veranlassen, um damit die gewünschte Übersetzung aufzufinden. Während der Tabellensuche kann in einigen Ausführungsformen der Prozessor 10 in einen Pausebetrieb versetzt werden, um die Leistungsaufnahme zu reduzieren. In einer Ausführungsform findet kein Einladevorgang in der Mikro-TLB 30 statt, wenn ein Ladevorgang in dem Haupt-TLB 38 stattfindet. Ein nachfolgender Nichttreffer für die Seite in der Mikro-TLB 30 kann erkannt werden und ein Treffer in dem Haupt-TLB 38 kann erkannt werden, wodurch ein Ladevorgang in der Mikro-TLB 30 stattfinden kann. Alternativ kann ein Ladevorgang gleichzeitig in der Mikro-TLB 30 und dem Haupt-TLB 38 stattfinden.
  • Da der Mikro-TLB 30 Übersetzungen speichert, die auch in dem Haupt-TLB 38 erhalten sind, kann der Mikro-TLB 30 kohärent zu dem Haupt-TLB 38 gehalten werden. Wenn ein Eintrag in dem Haupt-TLB 38 (in Reaktion auf einen Nichttreffer in dem Haupt-TLB 38 und einer erfolgreichen Absuche der Tabelle) überschrieben wird, wird der entsprechende Eintrag (falls vorhanden) in dem Mikro-TLB 30 als ungültig erklärt. In einer Ausführungsform wird der gesamte Inhalt des Mikro-TLB 30 als ungültig erklärt, wenn ein neuer Eintrag in den Haupt-TLB 38 eingeladen wird.
  • In einer Ausführungsform umfasst der Haupt-TLB 38 zwei TLBs: wovon einer Übersetzungen mit einer Seitengröße von 4 Kilobyte und ein zweiter Übersetzungen mit einer Seitengröße von 2 Megabyte oder 4 Megabyte speichert. Der 4 Kilobyte TLB kann eine beliebige Konfiguration aufweisen, kann jedoch in einer Ausführungsform ein 4-Wege-512-Einträge-TLB sein. Der 2 Megabyte/4 Megabyte TLB kann eine beliebige Konfiguration aufweisen, ist jedoch in einer Ausführungsform ein vollständig assoziativer TLB mit 8 Einträgen. In einer Ausführungsform, in der die ×86-Instruktionssatzarchitektur eingerichtet ist, enthält das CR3-Konfigurationsregister die Basisadresse der Seitentabellen im Speicher. Die Einträge in dem Haupt-TLB 38 können mit der CR3-Adresse gekennzeichnet bzw. etikettiert werden, aus der die Übersetzung ausgelesen wurde, so dass der Haupt-TLB 38 bei Änderungen in der CR3-Adresse nicht für ungültig erklärt werden muss. Die Einträge in dem Mikro-TLB 30 können in einigen Ausführungsformen in ähnlicher Weise gekennzeichnet werden, oder können nicht etikettiert werden, und können statt dessen in Reaktion auf eine Änderung der CR3-Adresse als ungültig erklärt werden.
  • Es ist zu beachten, dass, obwohl Treffersignale so beschrieben sind, dass diese von dem Mikro-TLB 30 und der Mikro-Etikettenschaltung 36 bereitgestellt werden, in allgemeiner Weise eine Trefferkennzeichnung vorgesehen werden kann, die eine beliebige Anzahl an Signalen aufweist, die anzeigen, ob ein Treffer erkannt ist oder nicht. Obwohl ferner der Mikro-TLB 30 so gezeigt ist, dass dieser eine Trefferkennzeichnung und eine Eintragskennzeichnung, die den betroffenen Eintrag benennt, ausgibt, kann eine beliebige Kennzeichnung eines Treffers und eines Eintrages vorgesehen werden. Beispielsweise können in einer Ausführungsform die Kennzeichnungen für die Treffer und Einträge in eine Einzelcodierung zusammengefasst werden, die den Einträgen in dem Mikro-TLB 30 entspricht. Die Einzelcodierung kann (mit einem beliebigen gesetzten Bit) anzeigen, dass es einen Treffer gibt, und kann den Eintrag, der betroffen ist, dadurch kennzeichnen, welches Bit gesetzt ist.
  • Zu beachten ist, dass in einigen Ausführungsformen die Übersetzungs/Filterschaltung 18 über mehrere Pipeline-Stufen hinweg betreibbar ist. Pipeline-Speichereinrichtungen (bei spielsweise Flops, Register, etc.) sind in 2 nicht gezeigt. Es kann eine beliebige Unterteilung in Pipeline-Stufen angewendet werden. Beispielsweise zeigt 3 ein Beispiel einer Pipeline, die durch eine Ausführungsform des Prozesses 10 eingerichtet werden kann. Die vertikalen gestrichelten Linien grenzen Taktzyklen in 3 ab. Die Taktzyklen sind mit AG (Adressengeneration), DC1 (Datenzwischenspeicher 1), DC2 (Datenzwischenspeicher 2) und DC3 (Datenzwischenspeicher 3) bezeichnet.
  • Während der AG-Stufe erzeugt die AGU 12 die virtuelle Adresse aus den Adressenoperationen (Bezugszeichen 60). Des Weiteren erzeugt in dieser Ausführungsform die Wegevorhersageeinheit 14 eine Wegevorhersage (Bezugszeichen 62). Die Wegevorhersageeinheit 14 kann die Adressenoperanden empfangen und kann eine Summenadressenindizierung (die detaillierter im Weiteren beschrieben ist) ausführen, um einen Speicher zu adressieren, der Wegevorhersagewerte enthält. Alternativ kann die virtuelle Adresse der AGU 12 verwendet werden, um einen Wegevorhersagespeicher zu indizieren. In anderen Ausführungsformen kann die Wegevorhersageeinheit 14 in der DC1-Stufe operieren.
  • Während der DC1-Stufe wird auf die Mikro-TLB-Etikettenschaltung 32 zugegriffen, und ein Treffer/Nichttreffer in dem Mikro-TLB 30 wir bestimmt (Bezugszeichen 64). Wenn es einen Treffer in dem Mikro-TLB 30 gibt, wird in der DC2-Stufe auf die Mikro-Etikettenschaltung 36 zugegriffen (Bezugszeichen 66) und während der DC3-Stufe wird auf die Mikro-TLB-Datenschaltung 34 zugegriffen (Bezugszeichen 68). Wenn es einen Treffer in der Mikro-Etikettenschaltung 36 gibt, kann ein Zugriff auf die Zwischenspeicheretikette vermieden werden und ein Treffer in dem Datenzwischenspeicher 16 wird über einen Treffer in der Mikro-Etikettenschaltung 36 erkannt. Wenn es einen Nichttreffer in der Mikro-Etikettenschaltung 36 gibt, wird in der DC3-Stufe auf den Cache-Etikettenspeicher 22 zugegriffen (Bezugszeichen 70) und das Ergebnis wird mit dem Ausgang der Mikro-TLB-Datenschaltung 34 verglichen.
  • Wenn es einen Nichttreffer im dem Mikro-TLB 30 gibt, wird während der DC2-Stufe auf die Haupt-TLB-Etikettenschaltung 40 zugegriffen (Bezugszeichen 72), und wenn es einen Treffer in der Haupt-TLB-Etikettenschaltung 40 gibt, wird in der DC3-Stufe auf die TLB-Datenschaltung 42 zugegriffen (Bezugszeichen 74). Der Ausgang der TLB-Datenschaltung 42 wird mit dem Ausgang des Cache-Etikettenspeichers 22 in der DC3-Stufe verglichen.
  • Ferner wird während der DC1-Stufe auf den Cache-Datenspeicher 20 zugegriffen und die Daten von dem vorhergesagten Weg werden ausgegeben (Bezugszeichen 76). Die Daten werden in der DC2-Stufe weitergeleitet (Bezugszeichen 78).
  • In 4 ist eine Blockansicht einer Ausführungsform der Mikro-TLB-Etikettenschaltung 32 gezeigt. In der Ausführungsform aus 4 umfasst die Mikro-TLB-Etikettenschaltung 32 einen Satz aus Einträgen mit Einträgen 80A und 80B, die Vergleicherschaltungen 82A und 82B entsprechen, die mit den Einträgen 80A bzw. 80B verbunden sind, und umfasst eine Steuerschaltung 84, die mit den Einträgen 80A-80B und den Vergleicherschaltungen 82A-82B verbunden ist. Die Vergleicherschaltungen 80A und 80B sind angeschlossen, um die virtuelle Adresse von der AGU 12 zu empfangen. Die Steuerschaltung 84 umfasst einen Speicher 86 mit letztem Zugriff (LRU) und ist ausgebildet, das Treffersignal zu erzeugen und Eintragskennzeichnungen der Mikro-TLB-Etikettenschaltung 32 auszugeben.
  • Die Mikro-TLB-Etikettenschaltung 32 kann eine beliebige Anzahl an Einträgen 80A-80B aufweisen. Beispielsweise sind in einer Ausführungsform 4 Einträge vorgesehen. In anderen Ausführungsformen können mehr oder weniger Einträge vorgesehen sein. Jeder Eintrag 80A-80B kann ein Gültigkeitsbit (V), ein virtuelles Adressenfeld zur Speicherung eines Seitenbereichs der virtuellen Adresse (VA[N-1:12]), die von dem Eintrag (und dem entsprechenden Eintrag in der Mikro-TLB-Datenschaltung 34, die von dem Eintrag übersetzt wird, und dem entsprechenden Eintrag in der Mikro-TLB-Datenschaltung 34, zusammen einen Eintrag des Mikro-TLB 30 bilden), und ein 2M-Bit enthalten, das anzeigt, ob die Übersetzung aus einer 2 Megabyteseitenübersetzung abgeleitet ist oder nicht. Somit wird eine virtuelle N-Bit-Adresse in der vorliegenden Ausführungsform verwendet, wobei N eine Ganzzahl ist. Beispielsweise kann in einigen Ausführungsformen N gleich 32 sein. In anderen Ausführungsformen kann N 48 sein. In weiteren Ausführungsformen kann N eine Ganzzahl zwischen einschließlich 32 und 64 sein. Im Allgemeinen können die Einträge eine beliebige Art einer Speicherung umfassen. Beispielsweise können Register, Flip-Flops oder andere Arten getakteter Speichereinrichtungen in einer Ausführungsform eingesetzt werden.
  • Die Vergleicherschaltungen 80A-80B erhalten zumindest den Seitenbereich der virtuellen Adresse von der AGU 12 und vergleichen den Seitenbereich der virtuellen Adresse mit dem in den entsprechenden Einträgen 80A-80B gespeicherten Seitenbereich. Die dargestellte Ausführungsform sieht eine minimale Seitengröße von 4 Kilobytes vor (und damit sind die Bits 11:0 in dem Seitenbereich der virtuellen Adresse nicht enthalten) und sieht ferner eine Seitengröße von 2 Megabyte für die Kompatibilität mit dem ×86-Instruktionssatz vor. Es können andere Seitengrößen verwendet werden. In der dargestellten Ausführungsform erzeugen die Vergleicherschaltungen 82A-82B zwei Übereinstimmungssignale: match lower bzw. Übereinstimmung-unten und match oben bzw. Übereinstimmung-hoch. Match_upper kann gesetzt werden, wenn das Gültigkeitsbit in dem Eintrag gesetzt ist und der Bereich der virtuellen Adresse, der in dem Seitenbereich 2M enthalten ist, übereinstimmt (d.h. VA[N-1:21]). Match_lower kann gesetzt werden, wenn der Rest der virtuellen Adresse übereinstimmt (d.h. VA[20:12]).
  • Die Steuerschaltung 84 ist angeschlossen um die Ausgangssignale der Vergleicherschaltungen 82A-82B zu empfangen und ist ferner ausgebildet, das Treffersignal und eine darauf reagierende Eintragskennzeichnung zu erzeugen. Wenn ein Treffer in einem der Einträge angezeigt wird, setzt die Steuerschaltung 84 das Treffersignal und liefert die Eintragskennzeichnung. Wenn ein Treffer nicht angezeigt wird, dann setzt die Steuerschaltung 84 das Treffersignal nicht.
  • 5 ist eine Ausführungsform einer Wahrheitstabelle 90, die durch die Steuerschaltung 84 zum Bestimmen eingerichtet wird, ob ein Eintrag von einer virtuellen Adresse betroffen ist. In der Tabelle 90 ist das 2M Bit für den Eintrag (gesetzt, um eine 2M-Übersetzung in dieser Ausführungsform anzuzeigen), das match_upper und das match_lower Signal (wobei eine Eins in der Tabelle 90 den gesetzten Zustand und eine Null den nicht gesetzten Zustand angibt), und eine Ergebnisspalte dargestellt sind, die angibt, was jede Kombination aus dem 2M-Bit, dem Signal match_upper und dem Signal match lower kennzeichnet.
  • Wenn das Signal match_upper nicht gesetzt ist, erkennt die Steuerschaltung 84 einen Nichttreffer für einen Mikro-TLB für die virtuelle Adresse. Der Nichttreffer für den Mikro-TLB findet unabhängig von der Einstellung des 2M-Bits und des Zustands des Signals match_lower statt. Folglich findet der Nichttreffer auch für die Mikro-Etikettenschaltung 36 statt.
  • Wenn das 2M-Bit gesetzt ist, dann ist die entsprechende Übersetzung für eine 2 Megabyteseite gedacht. Somit ist die VA[20:12] im Allgemeinen nicht in dem Vergleich miteingeschlossen. Um jedoch Bits für die Mikro-Etikettenschaltung 36 vorzusehen, können diese Bits als die letzte 4 Kilobyteseite definiert werden, auf die von dem Prozessor 10 in der 2 Megabyteseite zugegriffen wird. Wenn das Signal match_upper gesetzt ist, und das 2M-Bit gesetzt ist, dann findet ein Treffer für den Mikro-TLB statt. Wenn jedoch das Signal match_lower nicht gesetzt ist, findet kein Treffer für die Mikro-Etikettenschaltung 36 für diese Seite statt. Wenn das Signal match_lower gesetzt ist, erfolgt ein Treffer für die Mikro-Etikettenschaltung 36 und somit wird ein Abrufen einer Mikro-Etikette ausgeführt.
  • Wenn das 2M-Bit zurückgesetzt ist, dann dient die entsprechende Übersetzung für eine 4 Kilobyteseite. Somit werden sowohl das Signal match_upper als auch das Signal match_lower gesetzt, um einen Treffer für den Mikro-TLB anzuzeigen (und möglicherweise einen Mikro-Etikettentreffer, so dass ein Abrufen einer Mikro-Etikette ausgeführt wird). Wenn das Signal match_lower nicht gesetzt ist, wird ein Nichttreffer für den Mikro-TLB und eine Mikro-Etikette erkannt.
  • Für die Steuerschaltung 84 gemäß der Ausführungsform aus 5 kann sich die Trefferanzeige, die von der Mikro-Etikettenschaltung 36 bereitgestellt wird, von der Trefferkennzeichnung unterscheiden, die von dem Haupt-TLB 38 bereitgestellt wird. Die Trefferkennzeichnung für den Haupt-TLB 38 kann einen Treffer in dem Mikro-TLB 30 anzeigen, solange die Übersetzung ein Treffer ist (Einträge in der Tabelle 90, die einen Treffer für den Mikro-TLB angeben), selbst wenn ein Nichttreffer für die Mikro-Etikettenschaltung 36 vorliegt. Die Trefferkennzeichnung für die Mikro-Etikettenschaltung 36 kann einen Treffer anzeigen, wenn ein Abrufen einer Mikro-Etikette angezeigt ist (Einträge in der Tabelle 90, die ein Abrufen einer Mikro-Etikette angeben).
  • Die Ausführungsform der 4 und 5 unterstützt zwei unterschiedliche Seitengrößen. Andere Ausführungsformen können eine einzelne Seitengröße unterstützen, und somit kann ein einzelnes Übereinstimmungssignal von jeder der Vergleicherschaltungen 82A-82B geliefert werden, und das 2M-Bit kann aus den Einträgen 82A-82B weggelassen werden. Andere Ausführungsformen können mehr als zwei Seitengrößen unterstützen, indem der Seitenbereich der virtuellen Adresse gemäß der unterstützten Seitengrößen unterteilt wird. Zu beachten ist, dass die ×86-Instruktionssatzarchitektur auch eine Sei tengröße von 4 Megabyte unterstützt. Die Ausführungsform der 4 und 5 kann eine Seitengröße von 4 Megabyte durch Verwenden zweier 2 Megabyteeinträge in dem Mikro-TLB 30 unterstützen. Andere Ausführungsformen können eine Seitengröße von 4 Megabyte direkt unterstützen (beispielsweise unter Anwendung eines 4M-Bits in jedem Eintrag ähnlich zu dem 2M-Bit).
  • Obwohl die vorhergehende Ausführungsform die Seitengröße von 2 Megabyte unter Anwendung eines Eintrags für die 2 Megabyteseite und Kennzeichnung der 4 Kilobyteseite innerhalb der 2 Megabyteseite, auf die zuletzt zugegriffen wurde, unter Anwendung der VA[20:12] unterstützt, können in anderen Ausführungsformen mehrere Mikro-TLB-Einträge für eine gegebene 2 Megabyteseite zulässig sein. Jeder der Einträge kann eine unterschiedliche Codierung in der VA[20:12] für unterschiedliche 4 Kilobyteseiten, auf die zugegriffen wurde, aufweisen. In einer noch weiteren Alternative kann die VA[20:12] in der Mikro-Etikettenschaltung 36 für 2 Megabyteseiten enthalten sein, und ein Treffer auf einer 2 Megabyteseite kann verwendet werden, um auf die Mikro-Etikette zuzugreifen, um damit einen Treffer für eine Zwischenspeicherzeile innerhalb der 2 Megabyteseite zu erkennen.
  • Im Falle eines Nichttreffers in dem Mikro-TLB 30 und einem Treffer in dem Haupt-TLB 38 wählt die Steuerschaltung 84 einen Eintrag 82A-82B aus, der mit der zutreffenden Übersetzung von dem Haupt-TLB 38 zu ersetzen ist. In der dargestellten Ausführungsform kann die Steuerschaltung 84 einen LRU der Einträge 82A-82B bewahren und kann den Eintrag für das Ersetzen verwenden, auf den zuletzt zugegriffen wurde. Es kann ein beliebig anderer Algorithmus zum Austauschen eingerichtet sein (beispielsweise Pseudo-LRU, zufällig, etc.). Die Einträge 82A-82B sind angeschlossen, um einen Ausgangsseitenbereich einer virtuellen Adresse (VA[N-1:12]) und ein 2M-Bit, das in einem der Einträge durch die Steuerung der Steuerschaltung 84 zu speichern ist, zu empfangen (Eingangsadresse und 2M-Bit sind in 4 nicht gezeigt). Die Quelle der eingespeisten virtuellen Adresse und des 2M-Bits können der Haupt-TLB 38 oder die Tabellensuchschaltung in den diversen Ausführungsformen sein.
  • 6 ist eine Blockansicht einer Ausführungsform der Mikro-TLB-Datenschaltung 34. In der Ausführungsform aus 6 umfasst die Mikro-TLB-Datenschaltung 34 einen Satz aus Einträgen mit den Einträgen 92A-92B. Jeder der Einträge 92A-92B entspricht einem der Einträge 80A-80B aus 4. Ferner ist ein Multiplexer 94 gezeigt, der mit den Ein trägen 92A-92B gekoppelt ist und die Eintragskennzeichnung von der Mikro-TLB-Etikettenschaltung 32 empfängt. Der Multiplexer 84 kann den Inhalt des Eintrags, der durch die Eintragskennzeichnung gekennzeichnet ist, für die Ausgabe auswählen. In einer Ausführungsform wird, wenn kein Eintrag angegeben ist (d.h. ein Nichttreffer), kein Eintrag 92A-92B von dem Multiplexer 94 ausgewählt (wodurch die Leistungsaufnahme reduziert wird). Ähnlich zu den Einträgen 80A-80B in 4 können die Einträge 92A-92B in einer beliebigen Art an Speicher (in einer Ausführungsform beispielsweise diverse getaktete Speichereinrichtungen) eingerichtet werden.
  • In der dargestellten Ausführungsform enthält der Inhalt jedes Eintrags 92A-92B ein "schmutziges" Bit (D), ein Anwender/Überwacher-(U/S)-Bit, ein Lese/Schreib-(R/W)-Bit, ein Speichertypfeld (MemType[4:0]), und ein physikalisches Adressenfeld (PA[M-1:12]). In einer Ausführungsform können die Bits kompatibel mit dem Seitenmechanismus sein, der durch die ×86-Instruktionssatzarchitektur definiert ist. Das "schmutzige" Bit kann anzeigen, ob die physikalische Seite modifiziert wurde oder nicht (beispielsweise ob der Prozessor eine Speicherinstruktion in der Seite ausgeführt hat). Das Anwender/Überwacherbit kann Anwenderseiten gegenüber Überwacherseiten (privilegiert) anzeigen. Das Lese/Schreibbit kann anzeigen, ob die Seite eine Nur-Leseseite ist oder für das Lesen/Schreiben vorgesehen ist. Das Speichertypfeld gibt an, welcher Speichertyp für die Seite verwendet ist.
  • In der dargestellten Ausführungsform wird eine physikalische Adresse mit M-Bit unterstützt. M kann eine Ganzzahl sein. Insbesondere kann sich M von N unterscheiden. In einer Ausführungsform kann M eine Ganzzahl zwischen einschließlich 32 und 64 sein. In einer weiteren Ausführungsform kann M eine Ganzzahl zwischen einschließlich 32 und 52 sein. Beispielsweise ist M in einer speziellen Ausführungsform 40.
  • 7 zeigt eine Blockansicht einer Ausführungsform der Mikro-Etikettenschaltung 36. In der gezeigten Ausführungsform sind mehrere Einträge in der Mikro-Etikettenschaltung 36 in Gruppen aus Einträgen aufgeteilt. Jede Gruppe mit Einträgen ist einem anderen Eintrag des Mikro-TLB zugeordnet. Beispielsweise sind in der dargestellten Ausführungsform Gruppen 100A-100D gezeigt, die den vier Einträgen in dem Mikro-TLB 30 entsprechen. Andere Ausführungsformen können eine beliebige Anzahl an Gruppen enthalten, so dass diese einer beliebigen Anzahl an Einträgen entsprechen. Die Gruppen 100A-100D sind mit einer Steuerschaltung 102 verbunden, die angeschlossen ist, das Aktivierungseingangssignal bzw. Auslösefreigangssignal (En) (das Treffersignal von der Mikro-TLB-Etikettenschaltung 32), die Eintragskennzeichnung von der Mikro-TLB-Etikettenschaltung 32 und die virtuelle Adresse von der AGU 12 zu empfangen. Die Steuerschaltung 102 ist ausgebildet, die Trefferkennzeichnung, die von der Mikro-Etikettenschaltung 36 ausgegeben wird, zu erzeugen.
  • Die Einträge in der ausgewählten Gruppe 100A-100D werden einem der Einträge in der Mikro-TLB-Etikettenschaltung 32 zugeordnet und kennzeichnen Zwischenspeicherzeilen in der virtuellen Seite, die von diesem Eintrag gekennzeichnet ist, der auch in dem Datenzwischenspeicher 16 abgelegt ist. Es kann eine beliebige Anzahl an Einträgen in einer Gruppe enthalten sein. Beispielsweise sind in einer Ausführungsform vier Einträge in jeder Gruppe enthalten. Da auf die Mikro-Etikettenschaltung 36 zugegriffen wird, wenn ein Treffer für den Mikro-TLB erkannt wird, ist bekannt, dass die VA[N-1:12] mit der virtuellen Adresse der AGU 12 und der virtuellen Adresse der in der ausgewählten Gruppe 100A-100D repräsentierten Zwischenspeicherzeilen übereinstimmt. Um folglich einen vollständigen Vergleich der virtuellen Etiketten durchzuführen, können die Einträge in der ausgewählten Gruppe 100A-100D den Seitenoffsetbereich der virtuellen Adresse (ausschließlich der Adressenbits, die dem Zwischenspeicherzeilenoffset bilden) speichern. Für die dargestellte Ausführungsform wird eine Zwischenspeicherzeilengröße von 64 Byte angenommen, und damit sind die Adressenbits 5:0 ausgeschlossen. In anderen Ausführungsformen können andere Zwischenspeicherzeilengrößen eingesetzt werden. Die verbleibenden virtuellen Adressenbits zur Vervollständigung des Vergleichs der virtuellen Etikette sind somit die VA[11:6] in dieser Ausführungsform, und jeder Mikro-Etiketteneintrag speichert die VA[11:6], wie in 7 gezeigt ist.
  • Wenn das Auslöseeingangssignal gesetzt ist, vergleicht die Steuerschaltung 102 die Adressenbits VA[11:6] jedes Eintrags mit den entsprechenden Bits der virtuellen Adresse der AGU 12. Somit kann die Steuerschaltung 102 angeschlossen sein, um zumindest den Seitenoffsetbereit der virtuellen Adresse der AGU 12 (ausschließlich der Zwischenspeicherzeilenoffsetbits) zu empfangen. Wenn in einem Eintrag in der ausgewählten Gruppe 100A-100D eine Übereinstimmung erkannt wird und das Gültigkeitsbit (V) in diesem Eintrag gesetzt ist, dann ist die virtuelle Adresse ein Treffer in der Miko-Etikettenschaltung 36 und ist somit ein Treffer für den Datenzwischenspeicher 16. Der Cache-Etikettenspeicher 22 muss nicht abgefragt werden, um einen Treffer/Nichttreffer zu bestimmen. Wenn andererseits eine Übereinstimmung in einem Eintrag in der ausge wählten Gruppe 100A-100D nicht erkannt wird, dann kann auf den Cache-Etikettenspeicher 22 zugegriffen werden, um zu bestimmen, ob die Adresse ein Treffer oder ein Nichttreffer für den Datenzwischenspeicher 16 ist. Die Steuerschaltung 102 erzeugt das Treffersignal gemäß den Vergleichsergebnissen.
  • Zu beachten ist, dass, wenn der Datenzwischenspeicher 16 physikalisch etikettiert bzw. markiert ist (d.h., der Cache-Etikettenspeicher 22 speichert physikalische Etiketten anstelle der virtuellen Etiketten) und zumindest ein übersetztes Adressenbit in dem Index für den Datenzwischenspeicher 16 verwendet wird (beispielsweise wird zumindest Bit 12 in einer Ausführungsform mit einer 4 Kilobyteseite verwendet), dann ist es möglich, dass eine Zuordnung mehrerer virtueller Adressen für die gleiche physikalische Adresse die Arbeitsweise der Mikro-Etikettenschaltung 36 beeinflusst (da der Index sich von den virtuellen Adressenbits, die in dem Vergleich verwendet sind, unterscheiden kann). In einer derartigen Ausführungsform kann der Datenzwischenspeicher 16 physikalisch etikettiert werden, der Prozessor 10 kann jedoch sicherstellen, dass höchstens eine virtuelle Adresse, die der gleichen physikalischen Adresse zugeordnet ist, in dem Datenzwischenspeicher 16 zu einer gegebenen Zeit gespeichert wird. Das heißt, wenn eine zweite Alias-Adresse in den Datenzwischenspeicher 16 eingeladen wird, während die erste Alias-Adresse noch in dem Zwischenspeicher vorhanden ist, wird die erste Alias-Adresse in dem Datenzwischenspeicher 16 als ungültig erklärt.
  • Zu beachten ist, dass in einigen Ausführungsformen, in denen der Zwischenspeicherindex mindestens ein übersetztes Adressenbit enthält, die Mikro-Etikettenschaltung 36 jedes Adressenbit speichern kann, das in dem Zwischenspeicherindex enthalten ist, und die übersetzten Adressenbits können physikalische Bits sein. Das Speichern derartiger Bits kann eine zielgerichtete Invalidisierung von Einträgen der Mikro-Etikettenschaltung 36 ermöglichen, wenn eine Invalidisierung aller Einträge nicht erwünscht ist (beispielsweise in Reaktion auf Änderungen im Inhalt des Datenzwischenspeichers 16 oder im Inhalt des Mikro-TLB 30).
  • Im Falle eines Treffers in dem Mikro-TLB 30, eines Nichttreffers in der Mikro-Etikettenschaltung 36 und eines Treffers in dem Cache-Etikettenspeicher 22 kann einer der Einträge in der entsprechenden Gruppe 100A-100D durch das treffende Etikett ersetzt werden. Die Steuerschaltung 102 kann die LRU-Information in jeder Gruppe 100A-100D bewahren (als ein LRU-Feld in jedem Eintrag gezeigt), die dann verwendet werden kann, um den LRU-Eintrag in der ausgewählten Gruppe 100A-100D für das Ersetzen auszuwählen. In anderen Ausführungsformen können andere Austauschschemata eingesetzt werden (beispielsweise durch Zufall, mittels Pseudo-LRU, etc.). Die Gruppen 100A-100D sind angeschlossen, um die VA[11:6] von dem Datenzwischenspeicher 16 zur Speicherung eines nicht treffenden Index in der Mikro-Etikettenschaltung 36 gemäß einiger Ausführungsformen (in 7 nicht gezeigt) zu empfangen.
  • Es ist zu beachten, dass, obwohl die Einträge der Mikro-Etikettenschaltung 36 Mikro-TLB-Einträgen in der dargestellten Ausführungsform in statischer Weise zugeordnet sind, können in anderen Ausführungsformen die Einträge nach Bedarf jedem Mikro-TLB-Eintrag dynamisch zugeordnet werden. In einer derartigen Ausführungsform kann ein Mikro-TLB-Eintragsfeld in jeden Mikro-Etiketteneintrag enthalten sein, wodurch eine Kennzeichnung des Mikro-TLB-Eintrags gespeichert wird, dem dieser Mikro-Etiketteneintrag aktuell zugeordnet ist. Die Steuerschaltung 102 kann die Eintragskennzeichnung mit der Kennzeichnung vergleichen, die während eines Zugriffes von dem Mikro-TLB 30 empfangen wird, und kann einen Treffer erkennen, wenn die Eintragskennzeichnung übereinstimmt und das VA[11:6]-Feld mit dem entsprechenden Bereich der virtuellen Adresse der AGU 12 übereinstimmt.
  • Zu beachten ist, dass, obwohl die Mikro-Etikettenschaltung 36 in dieser Ausführungsform mit dem Mikro-TLB verwendet ist, in anderen Ausführungsformen die Mikro-Etikettenschaltung 36 ohne den Mikro-TLB vorgesehen sein kann. Derartige Ausführungsformen können volle Etiketten in jedem Eintrag der Mikro-Etikettenschaltung 36 aufweisen und können einen Zwischenspeichertreffer erkennen und ein Auslesen in dem Cache-Etikettenspeicher 22 durch Vergleichen mit dem vollen Etikett verhindern. Unabhängig davon, ob der Treffer in der Mikro-Etikettenschaltung 36 oder in dem Cache-Etikettenspeicher 22 erkannt wird, können die Daten von dem Cache-Datenspeicher 20 weitergeleitet werden.
  • In einer alternativen Ausführungsform kann die Mikro-Etikettenschaltung 36 einen einzelnen Eintrag pro Mikro-TLB-Eintrag aufweisen. Der Mikro-Etiketteneintrag kann ein Bit pro Zwischenspeicherzeile in der von dem Mikro-TLB-Eintrag bezeichneten Seite speichern, wodurch angezeigt wird, dass diese Zwischenspeicherzeile in dem Datenzwischenspeicher 16 betroffen ist. Wenn damit beispielsweise Zwischenspeicherzeilen 64 Byte lang sind und eine 4 Kilobyteseite verwendet wird, kann der Mikro-Etiketteneintrag 64 Bits aufweisen. Das einer vorgegebenen Zwischenspeicherzeile entsprechende Bit kann einen Treffer kennzeichnen, wenn das Bit gesetzt ist, und kann einen Nichttreffer kennzeichnen, wenn das Bit zurückgesetzt ist (oder es kann die gegenteilige Codierung angewendet werden). Eine Steuerschaltung kann den seiteninternen Bereich der VA ohne den Zwischenspeicherzeilenoffsetbereich (beispielsweise Bits 11:6 in einer Ausführungsform mit 64 Byte Zwischenspeicherzeile) ansteuern, um das geeignete Bit zum Bestimmen eines Zwischenspeichertreffers/Nichttreffers auszuwählen. In einer derartigen Ausführungsform kann die Mikro-Etikettenschaltung in der Mikro-TLB-Schaltung enthalten sein. Der Begriff "Etikettenschaltung" oder "Mikro-Etikettenschaltung" soll derartige Ausführungsformen miteinschließen, in denen die Mikro-Etikettenschaltung in der Mikro-TLB enthalten ist.
  • In 8 ist ein Flussdiagramm gezeigt, das eine beispielhafte Funktionsweise einer Ausführungsform der in 2 gezeigten Blöcke in Reaktion auf eine virtuelle Adresse von einer AGU 12 zeigt. Obwohl die Blöcke in 8 in einer speziellen Reihenfolge für ein leichteres Verständnis gezeigt sind, kann eine andere Reihenfolge angewendet werden. Die Blöcke können parallel über eine kombinatorische Logikschaltung ausgeführt werden, oder können über zwei oder mehrere Taktzyklen in einer Pipeline-artigen Weise nach Bedarf ausgeführt werden.
  • In Reaktion auf die virtuelle Adresse wird auf die Mikro-TLB-Etikettenschaltung 32 zugegriffen (Block 110). Wenn ein Mikro-TLB-Treffer erkannt wird (Entscheidungsblock 112, "ja"-Verzweigung), wird auf die Mikro-Etikettenschaltung 36 zugegriffen (Block 114). Wenn ein Treffer in der Mikro-Etikette erkannt wird (Entscheidungsblock 116, ja"-Verzweigung), kann die Zwischenspeichertreffer/Nichttreffer-Schaltung 50 einen Zwischenspeichertreffer (beispielsweise zeigt die Zwischenspeichernichttrefferkennzeichnung keinen Nichttreffer an), und es wird auf den Cache-Etikettenspeicher 22 nicht in Reaktion auf die virtuelle Adresse (Block 118) zugegriffen. Wenn ein Treffer in der Mikro-Etikette nicht erkannt wird (Entscheidungsblock 116, "nein"-Verzweigung), wird auf die Mikro-TLB-Datenschaltung 34 zugegriffen (Block 120). In einigen Ausführungsformen wird auf die Mikro-TLB-Datenschaltung 34 in Reaktion auf einen Mikro-TLB-Etikettentreffer zugegriffen, unabhängig davon, ob die Mikro-Etikette ein Treffer ist oder nicht. Ferner wird auf den Cache-Etikettenspeicher 22 zugegriffen (Block 122). Wenn ein Treffer zwischen einer Etikette von dem Cache-Etikettenspeicher 22 und der physikalischen Adresse der Mikro-TLB-Datenschaltung 34 erkannt wird (Entscheidungsblock 124, ja"-Verzweigung), zeigt die Zwischenspeichertreffer/Nichttreffer-Schaltung 50 einen Zwischenspeichertreffer an (Block 126). Da ferner ein Nichttreffer für eine Mikro-Etikette in diesem Falle erkannt wurde, kann die treffende Etikette in die Mikro-Etikette eingeladen werden. Wenn ein Nichttreffer zwischen einer Etikette von dem Cache-Etikettenspeicher 22 und der physikalischen Adresse der Mikro-TLB-Datenschaltung 34 erkannt wird (Entscheidungsblock 124, "nein"-Verzweigung), zeigt die Zwischenspeichertreffer/Nichttreffer-Schaltung 50 einen Nichttreffer für den Zwischenspeicher an (Block 128), und die fehlende Zwischenspeicherzeile kann in den Datenzwischenspeicher 16 eingeladen werden (und optional kann die Mikro-Etikettenschaltung 36 auch mit der Etikette der nicht treffenden Zwischenspeicherzeile aktualisiert werden).
  • Wenn ein Mikro-TLB-Nichttreffer erkannt wird (Entscheidungsblock 112, "nein"-Verzweigung), kann auf die Haupt-TLB-Etikettenschaltung 40 zugegriffen werden (Block 130). Wenn ein Treffer in der Haupt-TLB erkannt wird (Entscheidungsblock 132, "ja"-Verzweigung), wird der Mikro-TLB von dem Haupt-TLB aus geladen (Block 134), und die Mikro-Etiketteneinträge, die dem eingeladenen Mikro-TLB-Eintrag entsprechen, können als ungültig erklärt werden. Ferner können die Blöcke 122, 124, 126 und 128 für den Etikettenvergleich mit der physikalischen Adresse aus dem Haupt-TLB wiederholt werden. Jedoch werden im Block 126 die Mikro-Etikette optionalerweise nicht eingeladen, falls dies gewünscht ist. Wenn andererseits ein Nichttreffer in dem Haupt-TLB erkannt wird (Entscheidungsblock 132, "nein"-Verzweigung), kann der Haupt-TLB 38 einen TLB-Nichttreffer erzeugen, und der Haupt-TLB kann mit der fehlenden Übersetzung (oder es kann eine Ausnahmeregel auftreten, wenn keine Übersetzung gefunden wird) eingeladen werden (Block 136). Optional kann der Mikro-TLB beladen werden, im Falle eines Nichttreffers für den Haupt-TLB, und die Mikro-Etikette kann aktualisiert werden, um Mikro-Etiketteneinträge, die dem Mikro-TLB-Eintrag entsprechen, der gerade geladen ist, als unzulässig zu erklären.
  • Zu beachten ist, dass, obwohl die obige Beschreibung sich auf das Vergleichen der physikalischen Adresse des Mikro-TLB 30 oder des Haupt-TLB 38 mit der Etikette von dem Cache-Etikettenspeicher 22 bezieht, die TLBs im Allgemeinen den Seitenbereich der physikalischen Adresse ausgeben. Der Rest der Zwischenspeicheretikette für den Vergleich kann gebildet werden, indem der Seitenbereich der physikalischen Adresse mit dem Seitenoffsetbereich der virtuellen Adresse verknüpft wird.
  • 9 zeigt eine Blockansicht einer Ausführungsform der Wegevorhersageeinheit 14. In der dargestellten Ausführungsform umfasst die Wegevorhersageeinheit 14 einen Summenadressen-(SA)-Decodierer 140, der angeschlossen ist, um einen oder mehrere Adressenoperanden, die der virtuellen Adresse entsprechen, zu empfangen, für die eine Wegevorhersage getroffen wird, und ferner ist die Einheit mit einem Speicher 142 verbunden. Der SA-Decodierer 140 richtet eine Summenadressenindizierung ein, wie dies detaillierter nachfolgend beschrieben ist. Der Speicher 142 kann ein W-Wege teilassoziativer Speicher sein (so wie der Datenzwischenspeicher 16) und kann daher eine Vielzahl an Einträgen aufweisen, die als Wege 0 bis W-1 angeordnet sind. Jeder Eintrag des Speichers 142 enthält einen Wegevorhersagewert mit P-Bits (WP[P-1:0]). Mehrere Komparatoren mit Komparatoren 146A-146B sind mit dem Speicher 142 verbunden. Ein Komparator 146A-146B kann für jeden Weg der Wegevorhersageeinheit 14 vorgesehen sein. Die Komparatoren 146A-146B sind angeschlossen, um einen Bereich der virtuellen Adresse (VA) von der AGU 12 oder den Ausgang einer optionalen Wegevorhersageerzeugungsschaltung 148 (oder in einer weiteren Option einen Teil der Adressenoperanden) zu empfangen. Die Ausgangssignale der Komparatoren 146A-146B können den Ausgang der Wegevorhersage der Wegevorhersageeinheit 14 bilden. Wenn ferner keiner der Komparatoren 146A-146B eine Übereinstimmung erkennt, kann die Wegevorhersageeinheit 14 das frühe Nichttreffersignal ausgeben (als NOR-Gatter 150 dargestellt, das die Ausgangssignale der Komparatoren 146A-146B in 9 erhält).
  • Der Decodierer 140 ist ausgebildet, die Adressenoperanden (unter Anwendung einer Summenadressendecodierung in dieser Ausführungsform) zu decodieren, um damit einen Satz oder eine Menge 144 des Speichers 142 auszuwählen, und der Speicher 142 ist ausgebildet, den Inhalt der Menge oder des Satzes 144 an die Komparatoren 146A-146B auszugeben. Jeder der Komparatoren 146A-146B vergleicht den Wertevorhersagewert des entsprechendes Weges des Speichers 142 mit einem Wegevorhersagewert gemäß der eingespeisten virtuellen Adresse. Wenn eine Übereinstimmung erkannt wird, sagt die Wegevorhersageeinheit 14 vorher, dass der entsprechende Weg ein Treffer für den Datenzwischenspeicher 16 ist. In der dargestellten Ausführungsform umfasst die Wegevorhersage eine einmalige Codierung für die Wege, wobei ein Bit für den vorhergesagten Weg gesetzt ist. Wenn keines der Wegevorhersagebits mit den eingespeisten Wegevorhersagebits übereinstimmt, wird keine Wegevorhersage erzeugt (und das frühe Nichttreffersignal wird gesetzt). In anderen Ausführungsformen kann die Wegevorhersage in anderer Weise codiert werden, und die Wegevorhersageeinheit 14 kann eine Schaltung aufweisen, die ausgebildet ist, das Ausgangssignal der Komparatoren 146A-146B zu empfangen und um die Wegevorhersagecodierung zu erzeugen.
  • Der Wegevorhersagewert kann in beliebiger Weise nach Bedarf erzeugt werden, und kann eine beliebige Anzahl an Bits (beispielsweise kann P eine Ganzzahl größer als Eins sein) aufweisen. Die in der Wegevorhersageeinheit 14 gespeicherten Wegevorhersagewerte werden entsprechend den zugeordneten Zwischenspeicherzeilen in dem Datenzwischenspeicher 16 erzeugt. Beispielsweise kann in einer Ausführungsform der Wegevorhersagewert eine Teiletikette der virtuellen Adresse sein, die der Zwischenspeicherzeile entspricht, die unter dem gleichen Index und dem gleichen Weg in dem Datenzwischenspeicher 16 abgelegt ist. Das heißt, der Wegevorhersagewert kann eine Verkettung ausgewählter virtueller Adressenbits umfassen (wobei mindestens ein Adressenbit ausgeschlossen ist, das Teil der Zwischenspeicheretikette ist). Es kann in einer derartigen Ausführungsform wünschenswert sein, virtuelle Adressenbits auszuwählen, die häufig variieren (oder anders gesehen, die die größte Zufälligkeit unter nacheinander erfolgenden Zugriffen aufweisen). Beispielsweise können die am wenigsten signifikanten Adressenbits, die noch Teil der Zwischenspeicheretikette sind (nicht Teil des Zwischenspeicherzeilenoffsets), ausgewählt werden. Bei einer derartigen Ausführungsform kann die Wegevorhersageerzeugungsschaltung 148 nicht verwendet werden, und die ausgewählten virtuellen Adressenbits der eingespeisten virtuellen Adresse können als Eingangssignale mit den Komparatoren 146A-146B verbunden werden. In einer weiteren Ausführungsform können eines oder mehrere der Wegevorhersagewertebits als eine logische Kombination zweier oder mehrerer virtueller Adressenbits erzeugt werden. In einer derartigen Ausführungsform kann das häufige Ändern virtueller Adressenbits mit einem weniger häufigen Wechseln von virtuellen Adressenbits beispielsweise kombiniert werden. In einer Ausführungsform kann die logische Kombination eine Exklusiv-ODER-Funktion enthalten. Bei einer derartigen Ausführungsform kann die logische Kombination an den virtuellen Adressenbits mittels der Wegevorhersageerzeugungsschaltung 148 ausgeführt werden, deren Ausgang mit den Komparatoren 146A-146B verbunden ist. In einer noch weiteren Ausführungsform können Bits von den Adressenoperanden vor der Addition ausgewählt werden, um die virtuelle Adresse zu erzeugen. Die Bits können logisch unter Anwendung der Wegevorhersageerzeugungsschaltung 148 kombiniert werden, oder können verkettet werden, ähnlich zu den zuvor beschriebenen Beispielen für die virtuelle Adresse.
  • Um eine Situation zu vermeiden, in der zwei oder mehr Einträge den gleichen Wegevorhersagewert aufweisen (und damit würde eine Übereinstimmung für mehr als einen einzelnen Weg in der Wegevorhersageeinheit 14 auftreten), kann das Ersetzen der Zwischenspeicherzeilen in dem Datenzwischenspeicher 16 so gesteuert werden, dass sichergestellt ist, dass die Wegevorhersagewerte in einem gegebenen Satz der Wegevorhersageeinheit 14 einzigartig bleiben. Ein Beispiel einer derartigen Prozedur ist in dem Flussdiagramm aus 10 gezeigt. Es kann vorteilhaft sein, ausreichend Bits in den Wegevorhersagewerten vorzusehen, so dass die vorhergehende Austauschstrategie nicht häufig ein vorzeitiges Austauschen von Zwischenspeicherzeilen zur Beibehaltung der Einzigartigkeit der Wegevorhersagewerte bewirkt. Wenn beispielsweise eine Verkettung virtueller Adressenbits angewendet wird, um die Wegevorhersagewerte zu erzeugen, können ungefähr 7 Bits des Wegevorhersagewertes ausgewählt werden.
  • In einigen Ausführungsformen wird aufgrund der vergleichsweise geringen Größe der Wegevorhersageeinheit 14 im Vergleich zu dem Cache-Etikettenspeicher 22 die Wegevorhersageeinheit 14 in dem Datenweg der AGU eingeschlossen (wodurch die Strecke verringert werden kann, mit der sich die virtuelle Adresse zum Erreichen der gewünschten Schaltung ausbreiten muss).
  • Wie zuvor erwähnt ist, kann der Decodierer 140 eine Summenadressendecodierung anwenden, um die Adressenoperanden zu decodieren und einen Satz 144 auszuwählen, der der virtuellen Adresse entspricht. In anderen Ausführungsformen kann ein konventioneller Decodierer eingesetzt werden, der zum Empfangen der virtuellen Adresse angeschlossen ist. Somit empfängt im Allgemeinen der Decodierer 140 eine Kennzeichnung der Adresse, die zum Zugreifen auf den Zwischenspeicher dient. Die Kennzeichnung kann in einigen Ausführungsformen die zur Bildung der virtuellen Adresse verwendeten Adressenoperanden miteinschließen, oder kann in anderen Ausführungsformen die virtuelle Adresse selbst miteinschließen.
  • Die Summenadressendecodierung empfängt die zum Erzeugen einer Adresse verwendeten Adressenoperanden und wählt in korrekter Weise den gleichen Satz aus einem Speicher aus, der auch ausgewählt würde, wenn die Adresse selbst decodiert würde. Im allgemeinen beruht die Summenadressendecodierung auf dem Prinzip, dass der Test A+B=K für ein konstantes K schneller bewertet werden kann, als das Addieren von A+B und das Vergleichen der Summe mit K. Im Zusammenhang mit der Decodierung ist die Konstante K der Wert von A+B, der einen vorgegebenen Satz auswählen würde. Die Schaltung, die die Wortleitung für den Satz erzeugt, nimmt die Konstante K für diesen Satz an. Im Folgenden wird ein Überblick über die Summenadressendecodierung gegeben.
  • Wenn A als ein Bitvektor an-1an-2...a0 repräsentiert ist, B als ein Bitvektor bn-1bn-2...b0 dargestellt ist und K als ein Bitvektor kn-1Kn-2...k0 repräsentiert ist, so kann man zeigen, dass, wenn A+B=K ist, der Ausgangsübertrag einer gegebenen Bitposition i-1 der Addition A+B (Couti-1) und der Eingangsübertrag in der nachfolgenden Bitposition i (Cini) durch die folgenden Gleichungen 1 und 2 gegeben ist (wobei "!" eine Inversion repräsentiert, "XOR" eine Exklusiv-ODER-Funktion repräsentiert, "&" eine UND-Funktion angibt und "|" eine ODER-Funktion repräsentiert): Couti-1 = ((i-1 XOR bi-1) & !ki-1)|(ai-1 & bi-1) (1) Cini = ki XOR ai XOR b1 (2)
  • Wenn A+B = K, dann ist Couti gleich Cini für alle i (im Bereich von 0 bis n-1). Das heißt, der Term ei gemäß Gleichung 3 ist 1 für alle i, wenn A+B=K. ei = Cini XOR !Couti-1 (3)
  • Um Gleichungen von ei zu erzeugen, die in dem Decodierer 140 verwendet werden können, ist es vorteilhaft, Terme zu erzeugen, die nicht von K abhängen (wobei jede der Gleichungen 1 und 2 und daher die Gleichung 3 abhängig sind). Insbesondere hängt die Gleichung 3 von ki (über Cini) und ki-1 (über Couti-1) ab. Somit können vier ei-Terme für jede Bitposition i erzeugt werden. Jeder ei-Term kann einen Satz aus Werten für ki und ki-1 annehmen. Diese Tenne werden als e1 kiki-1 bezeichnet, wobei ki und ki-1 in der Darstellung durch den angenommenen Wert für jedes Bit ersetzt werden (beispielsweise ei 01 entspricht der Annahme ki=0 und ki-1=1). Gleichungen 4-7 zeigen die vier 4i-Terme für jede Bitposition. Jede der Gleichungen 4-7 wird durch Einsetzen der Gleichungen 1 und 2 in die Gleichung 3 gebildet, wodurch der angenommene Wert für ki und ki-1 erhalten wird, und die Terme werden unter Anwendung der Bool'schen Algebra reduziert. ei 00 = ai XOR !(ai-1 | bi-1) (4) ei 01 = ai XOR bi XOR !(ai-1 & bi-1) (5) ei 10 = !(ai XOR bi) XOR !(ai-1 | bi-1) (6) ei 00 = !(ai XOR bi) XOR !(ai-1 & bi-1) (7)
  • Ferner ersetzt für die Bitposition 0 des Index der Übertrag im Term (c-1) den i-1 Term, um Gleichungen 8 und 9 zu bilden. e0 0c = ai XOR bi XOR !c-1 (8) e0 1c = !(ai XOR bi) XOR !c-1 (9)
  • Die obigen Gleichungen können als Logik für jede Bitposition des Index in dem Wegevorhersagespeicher 142 eingerichtet werden, wobei der Übertrag in c-1 gleich dem Eingangsübertrag der Zwischenspeicherzeilenoffsetaddition ist. Dieser Übertrag kann beispielsweise von der AGU 12 von der virtuellen Adressenaddition geliefert werden. Der Eingangsübertrag kann spät eintreffen und kann zwischen Bänken auswählen, die beispielsweise gerade und ungerade Indizes darin aufweisen.
  • Um die Wortleitung für einen gegebenen Satz zu erzeugen, wird eines von ei 00, ei 01, ei 10 und ei 11 für jede Bitposition ausgewählt (auf der Grundlage des Wertes des Index entsprechend der erzeugten Wortleitung), und die ausgewählten Werte werden logisch UND-verknüpft, um die Wortleitung zu erzeugen. Beispielsweise kann die Wortleitung für den Index Null das logische UND von ei 00 jeder Bitposition und von e0 0c sein. Die Wortleitung für den Index 1 (k0=1, alle anderen ki=0) kann die logische UND-Verknüpfung von ei 00 für jedes i zwischen 2 und n-1, e1 01 und e0 1c sein. Die Wortleitung für den Index 2 (ki=1, alle anderen ki=0) kann die logische UND-Verknüpfung von el 00 für jedes i zwischen 3 und n-1, e2 01, e1 10 und e0 0c sein. Die Wortleitung für den Index 3 (k1 und k0=1, alle anderen ki=0) kann die logische UND-Verknüpfung von ei 00 für jedes i zwischen 3 und n-1, e2 01, e1 11 und e0 1c sein. Weitere Wortleitungen für andere Indizes können in ähnlicher Weise gewählt werden.
  • Weitere Details hinsichtlich einer Ausführungsform der Summenadressendecodierung können in dem Artikel von William L. Lynch, Gary Lauterbach und Joseph I. Chamdani "Geringe Ladewartezeit durch summenadressierten Speicher (SAM)", Proceedings des 25. jährlichen Internatinalen Symposiums über Computerarchitektur, 1998, Seiten 369-379 erhalten werden.
  • Die Wegevorhersageeinheit 14 kann verwendet werden, um die Leistungsaufnahme des Prozessors 10 zu verringern, indem ein reduzierter Verbrauch in dem Cache-Datenspeicher 20 zugelassen wird. Beispielsweise kann in einigen Ausführungsformen der Cache-Datenspeicher 20 einen Speicher mit wahlfreiem Zugriff (RAM) aufweisen.
  • Speicherplätze in dem RAM können freigegeben werden, indem eine Wortleitung aktiviert wird. Die freigegebenen bzw. aktivierten Speicherstellen können gewisse Bitleitungen entladen, die mit der Speicherstelle verknüpft sind, wodurch eine Differenz aus Paaren von Bitleitungen erzeugt wird, die jedes Bit in der Speicherstelle repräsentiert. Die Paare aus Bitleitungen können in Fühlerverstärker eingespeist werden, die die Spannungsdifferenzen in Ausgangsbits umwandeln. In einigen Ausführungsformen kann der Cache-Datenspeicher-RAM 20 separate Wortleitungssignale für jeden Weg in dem Cache-Datenspeicher 20 bereitstellen. Die virtuelle Adresse kann decodiert werden, um eine Satzauswahl bereitzustellen, und die Satzauswahl kann mit der Wegevorhersage überprüft werden, um die Wortleitung für jeden Weg zu erzeugen. Somit kann der vorhergesagte Weg freigegeben werden, und andere Wege können deaktiviert werden, wodurch die in der Bitleitungsentladung, die ansonsten in den nicht freigegebenen Wegen auftreten würde, verbrauchte Leistung reduziert wird. Die Bitleitungsleistungsaufnahme kann häufig einer der signifikantesten Faktoren (und kann der signifikanteste Faktor) in der Leistungsaufnahme eines derartigen Speichers sein. Ein Beispiel eines Teils einer derartigen Ausführungsform des Cache-Datenspeichers 20 ist in 11 gezeigt, in der die virtuelle Adresse (VA) von einem Decodierer empfangen wird, der eine Satzauswahl (beispielsweise Satz 0 in 11 und andere Sätze, die in 11 nicht gezeigt sind) erzeugt. UND-Gatter empfangen eine Kennzeichnung, dass der Weg 0 vorhergesagt ist (WP0) oder der Weg 1 vorhergesagt ist (WP1), und entsprechende Wegewortleitungen werden für den Weg 0 und den Weg 1 erzeugt. Das Bit 0 jedes Weges ist in 11 gezeigt, wobei die entsprechende Wegewortleitung empfangen wird. Das Bit 0 jedes Weges wird von einem Multiplexer hinsichtlich der Spalte angesteuert, der ebenfalls von den Wegevorhersagen gesteuert wird (um das Bit 0 von dem vorhergesagten Weg auszuwählen), und ein Fühlerverstärker (SAO) erfasst das Bit 0 von dem vorhergesagten Weg und gibt das Bit 0 aus dem Cache-Datenspeicher 20 heraus. Andere Bits können in ähnlicher Weise behandelt werden, und es können zusätzliche Wege vorgesehen werden, indem zusätzliche UND-Gatter und Wegevorhersagen bereitgestellt werden.
  • In anderen Ausführungsformen ist die Wegevorhersage nicht ausreichend früh verfügbar, um die Auswahl einer Wortleitungserzeugung vorzusehen. In derartigen Ausführungsformen können die Wortleitungen jedes Weges auf der Grundlage des Decodierens der Adresse angesteuert werden, und die Bitleitungsentladung kann in jedem Wege erfolgen. In einigen Ausführungsformen können die Bits jedes Weges physikalisch verzahnt und einem Spaltenmultiplexvorgang in den Fühlerverstärkern unterzogen werden.
  • Das heißt, dass das Bit 0 jedes Weges kann physikalisch benachbart zu anderen entsprechenden Bits angeordnet werden, und der Multiplexer kann das Bit 0 aus dem ausgewählten Weg an den Eingang des Fühlerverstärkers für das Bit 0 des Ausgangs anlegen. Andere Ausgangsbits können in ähnlicher Weise ausgewählt werden. Die Wegevorhersage kann benutzt werden, um eine Auswahlsteuerung für den Spaltenmultiplexer bereitzustellen, und somit kann die Anzahl der Fühlerverstärker gleich der Anzahl der von einem Weg ausgegebenen Bits sein (anstelle der Anzahl der von einem Weg ausgegebenen Bits mal der Anzahl der Wege). Leistung, die in den Fühlerverstärkern und beim Abgeben von Daten der Fühlerverstärker verbraucht wird, kann im Vergleich dazu reduziert werden, wenn separate Fühlerverstärker für jeden Weg vorgesehen sind. Die Ausleseleistung der Fühlerverstärker kann häufig einer der wichtigsten Faktoren (und kann der signifikanteste Faktor neben der Bitleitungsleistungsaufnahme sein) beim Leistungsverbrauch eines derartigen Speichers sein. Ein Beispiel eines Teils einer derartigen Ausführungsform ist in 12 gezeigt. Der Decodierer (ähnlich dem Decodierer in 11) decodiert die eingespeiste virtuelle Adresse (VA), um Wortleitungen zu erzeugen (d.h. Wortleitung 0 in 12 und andere Wortleitungen für andere Sätze, die in 12 nicht gezeigt sind). Das Bit 0 der Wege 0 und 1 ist gezeigt, und jedes Bit entlädt seine Bitleitungen in Reaktion auf das Setzen der Wortleitung. Der Multiplexer in 12 wird von den Wegevorhersagen gesteuert, um das Bit 0 von dem vorhergesagten Weg in dem Fühlerverstärker für das Bit 0 auszuwählen (SAO in 12). Andere Bits, die von dem vorhergesagten Weg ausgelesen werden, können in ähnlicher Weise behandelt werden, und es können weitere Wege in ähnlicher Weise gehandhabt werden.
  • In anderen Ausführungsformen können separate Fühlerverstärker für jeden Weg vorgesehen werden, aber die Fühlerverstärker können einen Freigabeeingang zur Aktivierung der Funktion aufweisen. Die Wegevorhersage kann angewendet werden, um lediglich die Fühlerverstärker in dem vorgesagten Weg für derartige Anwendungen zu aktivieren, und es kann Leistung, die in den Fühlerverstärkern und zum Ausgeben der Daten aus den Fühlerverstärkern verbraucht wird, in ähnlicher Weise wie bei der Verwendung der Spaltenmultiplex-Technik reduziert werden. 13 ist ein Beispiel einer derartigen Ausführungsform des Cache-Datenspeichers 20. Wiederum kann der Decodierer die eingespeiste virtuelle Adresse (VA) decodieren und Wortleitungen erzeugen, die dem Speicher für den Weg 0 und den Weg 1 zugeleitet werden. Jeder Weg gibt eine Anzahl an Bitleitungen an einen Satz aus Fühlerverstärkern für den Weg aus. Jeder Satz aus Fühlerverstärkern empfängt ein Freigabesignal, das von der Wegevorhersage für diesen Weg (WP0 und WP1 für die Wege 0 bzw. 1) gesteuert wird. Der Cache-Datenspeicher 20 in dieser Ausführungsform kann ferner auch einen Multiplexer beinhalten, um den vorhergesagten Weg aus den Ausgängen der Fühlerverstärker auszuwählen.
  • In noch weiteren Ausführungsformen kann es möglich sein, lediglich die eingespeiste virtuelle Adresse in den Weg einzuspeisen, der vorhergesagt ist, wodurch die Leistung reduziert wird, indem die Adresse der nicht vorhergesagten Wege nicht angesteuert wird.
  • 10 ist ein Flussdiagramm, worin ein Austauschmechanismus gezeigt ist, der von dem Datenzwischenspeicher 16 in Reaktion auf ein Nichttreffen des Zwischenspeichers angewendet werden kann. Obwohl die Blöcke in 10 in einer speziellen Reihenfolge für ein besseres Verständnis gezeigt sind, können auch andere Reihenfolgen angewendet werden. Blöcke können parallel mittels kombinatorischer Logikschaltungen ausgeführt werden, oder können über zwei oder mehrere Taktzyklen in einer Pipeline-weise nach Bedarf ausgeführt werden.
  • Wenn die Wegevorhersageeinheit 14 eine Wegevorhersage für die virtuelle Adresse macht, die zu einem Nichttreffen des Zwischenspeichers führt (Entscheidungsblock 160), dann wird der vorhergesagte Weg für das Austauschen ausgewählt (Block 162). Ansonsten wird der Weg zum Austauschen gemäß dem Austauschschema ausgewählt, das von dem Zwischenspeicher (Block 164) eingerichtet ist. Es kann ein beliebiger Austauschalgorithmus eingesetzt werden (beispielsweise LRU, Pseudo-LRU, zufällig, etc.).
  • Der obige Algorithmus zwingt einen Zwischenspeicherblock, der in dem Zwischenspeicher einen Nichttreffer bezeichnet, der aber mit einem aktuellen Wegevorhersagewert in der Wegevorhersageeinheit 14 übereinstimmt, die Zwischenspeicherzeile entsprechend dieser Wegevorhersagewert auszutauschen. Somit kann der gleiche Wegevorhersagewert in mehr als einer Speicherstelle in einem Satz gespeichert sein.
  • 14 ist ein Flussdiagramm, das die Bildung einer Wegevorhersage gemäß einer Ausführungsform der Wegevorhersageeinheit 14 zeigt. Obwohl die Blöcke in 14 in einer speziellen Reihenfolge zur besseren Verständlichkeit gezeigt sind, können auch andere Reihenfolgen verwendet werden. Blöcke können parallel mittels kombinatorischer Logikschaltungen ausgeführt werden, oder können über zwei oder mehrere Taktzyklen hinweg in einer Pipeline-Art nach Bedarf ausgeführt werden.
  • Die Wegevorhersageeinheit 14 decodiert die Kennzeichnung der Adresse (beispielsweise Adressenoperanden, oder in einigen Ausführungsformen die Adresse selbst) (Block 170). Die Wegevorhersageeinheit 14 gibt mehrere Wegevorhersagewerte von dem Satz, der durch das Decodieren gekennzeichnet ist, aus (Block 172). Die ausgegebenen Wegevorhersagewerte können mit einem Weg entsprechend der eingespeisten Adresse, die in Block 170 decodiert wurde, verglichen werden (Block 174). Wenn die Vergleichsergebnisse zu einem Weg führen (Entscheidungsblock 176, "ja"-Verzweigung), kann die Wegevorhersage in gleicher Weise erzeugt werden wie der Weg, für den die Übereinstimmung erkannt wird (Block 178). Ansonsten (Entscheidungsblock 176, "nein"-Verzweigung) wird keine Wegevorhersage erzeugt und die Wegevorhersageeinheit 14 die frühe Nichttrefferkennzeichnung erzeugen (Block 180). Zusammen können die Blöcke 176, 178 und 180 eine Ausführungsform zum Erzeugen einer Wegevorhersage repräsentieren.
  • Computersysteme
  • 15 zeigt eine Blockansicht einer Ausführungsform eines Computersystems 200 mit einem Prozessor 10, der mit einer Reihe von Systemkomponenten über eine Busbrücke 202 verbunden ist. In dem dargestellten System ist ein Hauptspeicher 204 mit der Busbrücke 202 über einen Speicherbus 206 verbunden, und eine Grafiksteuerung 208 ist mit der Busbrücke 202 über einen AGP-Bus 210 verbunden. Schließlich sind mehrere PCI-Geräte 212A-212B mit der Busbrücke 202 über einen PCI-Bus 214 verbunden. Eine sekundäre Busbrücke 216 kann ferner vorgesehen sein, um eine elektrische Schnittstelle mit einem oder mehreren EISA- oder ISA-Geräten 218 über einen EISA/ISA-Bus 220 zu bilden. Der Prozessor 10 ist mit der Busbrücke 202 über einen CPU-Bus 224 und mit einem optionalen L2-Cache- bzw. Zwischenspeicher 228 verbunden. Der CPU-Bus 224 und die Schnittstelle zu dem L2-Zwischenspeicher 228 können zusammen eine externe Schnittstelle bilden, an die eine externe Schnittstelleneinheit 18 angeschlossen werden kann. Der Prozessor 10 kann der in 1 gezeigte Prozessor sein und kann die strukturellen und funktionellen Details enthalten, die in den 2-14 gezeigt sind.
  • Die Busbrücke 202 stellt eine Schnittstelle zwischen dem Prozessor 10, dem Hauptspeicher 204, der Grafiksteuerung 208 und den an den PCI-Bus 214 angeschlossenen Geräten bereit. Wenn eine Operation von einem der Geräte, die mit der Busbrücke 202 ver bunden sind, empfangen wird, erkennt die Busbrücke 202 das Ziel der Operation (beispielsweise ein spezielles Gerät oder im Falle des PCI-Busses 214, dass das Ziel auf den PCI-Bus 214 liegt). Die Busbrücke 202 leitet die Operation an das Zielgerät weiter. Die Busbrücke 202 übersetzt im Allgemeinen eine Operation von dem Protokoll, das von dem Quellengerät oder dem Bus verwendet wird, in das Protokoll, das von dem Zielgerät oder Bus benutzt wird.
  • Zusätzlich zur Bereitstellung einer Schnittstelle zu einem ISA/EISA-Bus für den PCI-Bus 214 kann die sekundäre Busbrücke 216 nach Bedarf weitere Funktionen aufweisen. Eine Eingabe/Ausgabesteuerung (nicht gezeigt), die extern zu oder integriert in der sekundären Busbrücke 216 sein kann, ist ebenso in dem Computersystem 200 enthalten, um die Funktion einer Tastatur und einer Maus 222 und diverser anderer serieller und paralleler Anschlüsse nach Bedarf zu unterstützen. Eine externe Cache- bzw.
  • Zwischenspeichereinheit (nicht gezeigt) kann in anderen Ausführungsformen zwischen dem Prozessor 10 und der Busbrücke 202 mit dem CPU-Bus 224 verbunden sein. Alternativ kann der externe Zwischenspeicher mit der Busbrücke 202 verbunden sein, und eine Zwischenspeichersteuerlogik kann für den externen Zwischenspeicher in der Busbrücke 202 integriert sein. Der L2-Zwischenspeicher 228 ist ferner einer Rückseitenkonfiguration in Bezug auf den Prozessor 10 dargestellt. Zu beachten ist, dass der L2-Zwischenspeicher 228 von dem Prozessor 10 getrennt angeordnet sein kann und in einem Gehäuse (beispielsweise einem Einschub 1 oder Einschub A) des Prozessors 10 integriert sein kann, oder sogar auf einem Halbleitersubstrat zusammen mit dem Prozessor 10 ausgebildet sein kann.
  • Der Hauptspeicher 204 ist ein Speicher, in welchem Anwendungsprogramme gespeichert sind und in welchem der Prozessor 10 aus hauptsächlich operiert. Ein geeigneter Hauptspeicher 204 umfasst einen DRAM (dynamischer Speicher mit wahlfreiem Zugriff). Beispielsweise können viele Bänke aus SDRAM (synchrone DRAM), (DDR), SDRAMs mit doppelter Geschwindigkeit oder Rambus DRAM (RDRAM) geeignet sein. Der Hauptspeicher 204 kann den in 4 gezeigten Systemspeicher 42 enthalten.
  • Die PCI-Geräte 212A-212B sind beispielhaft für diverse periphere Geräte. Die peripheren Geräte können Geräte miteinschließen, die zur Kommunikation mit einem anderen Computersystem dienen, mit denen die Geräte verbunden sind (beispielsweise Netzwerkschnittstellenkarten, Modems, etc.). Des Weiteren können die peripheren Geräte andere Einrichtungen, etwa beispielsweise Videobeschleuniger, Audiokarten, Festplatten oder Diskettenlaufwerke oder Laufwerkssteuerungen, SCSI- (Kleincomputersystemschnittstelle) Adapter und Telefonkarten enthalten. In ähnlicher Weise ist das ISA-Gerät 218 für diverse Arten an peripheren Geräten, etwa ein Modem, eine Plankarte, und eine Vielzahl von Datennahmekarten, etwa GPIB oder Feldbus-Schnittstellenkarten repräsentativ.
  • Die Grafiksteuerung 208 ist vorgesehen, um das Erzeugen von Text und Bildern auf einer Anzeige 226 zu steuern. Die Grafiksteuerung 208 kann einen typischen Grafikbeschleuniger verkörpern, der im Allgemeinen bekannt ist, um damit dreidimensionale Datenstrukturen zu erzeugen, die in effizienter Weise in den Hauptspeicher 204 hinein und aus diesem heraus verschoben werden können. Die Grafiksteuerung 208 kann daher ein übergeordnetes Gerät bzw. ein Master des AGP-Busses 210 sein, insofern, dass es Zugriff auf eine Zielschnittstelle innerhalb der Busbrücke 202 anfordern und empfangen kann, um damit einen Zugriff auf den Hauptspeicher 204 zu erhalten. Ein zugeordneter Grafikbus übernimmt das rasche Abrufen von Daten aus dem Hauptspeicher 204. Für gewisse Operationen kann die Grafiksteuerung 208 ferner ausgebildet sein, um PCI-Protokolltransaktionen auf dem AGP-Bus 210 zu erzeugen. Die AGP-Schnittstelle der Busbrücke 202 kann damit Funktionen enthalten, um sowohl AGP-Protokolltransaktionen sowie auch PCI-Protokollziel- und Initiationstransaktionen zu unterstützen. Die Anzeige 226 ist eine beliebige elektronische Anzeige, auf der ein Bild oder ein Text dargestellt werden kann. Zu einer geeigneten Anzeige 226 gehört eine Kathodenstrahlröhre (CRT"), eine Flüssigkristallanzeige ("LCD"), etc.
  • Zu beachten ist, dass, obwohl die AGP-, PCI- und ISA- oder EISA-Busse als Beispiele in der obigen Beschreibung verwendet sind, beliebige Busarchitekturen stattdessen nach Bedarf eingesetzt werden können. Ferner ist zu beachten, dass das Computersystem 200 ein mehrfach prozessierendes Computersystem einschließlich zusätzlicher Prozessoren (beispielsweise der Prozessor 10a, der optional als Komponente im Computersystem 200 gezeigt ist) enthalten kann. Der Prozessor 10a kann ähnlich zu dem Prozessor 10 sein. Insbesondere kann der Prozessor 10a eine identische Kopie des Prozessors 10 sein. Der Prozessor 10a kann mit der Busbrücke 202 über einen unabhängigen Bus (in 15 gezeigt) verbunden sein oder kann sich den CPU-Bus 224 mit dem Prozessor 10 teilen. Ferner kann der Prozessor 10a mit einem optionalen L2-Zwischenspeicher 228a ähnlich dem L2-Zwischenspeicher 228 verbunden sein.
  • In 16 ist eine weitere Ausführungsform eines Computersystems 300 gezeigt. In der Ausführungsform aus 16 umfasst das Computersystem 300 diverse Verarbeitungsknoten 312A, 312B, 312C und 312D. Jeder Verarbeitungsknoten ist mit einem entsprechenden Speicher 314A-314D über eine Speichersteuerung 316A-316D verbunden, die jeweils entsprechend in den Verarbeitungsknoten 312A-312D enthalten sind. Des Weiteren umfassen die Verarbeitungsknoten 312A-312D eine Schnittstellenlogik, die zur Kommunikation zwischen den Verarbeitungsknoten 312A-312D verwendet wird. Beispielsweise umfasst der Verarbeitungsknoten 312A eine Schnittstellenlogik 318A zur Kommunikation mit dem Verarbeitungsknoten 312B, eine Schnittstellenlogik 318B zur Kommunikation mit dem Verarbeitungsknoten 312C und eine dritte Schnittstellenlogik 318C zur Kommunikation mit einem noch weiteren Verarbeitungsknoten (nicht gezeigt). In ähnlicher Weise umfasst der Verarbeitungsknoten 312B eine Schnittstellenlogik 318D, 318E und 318F; der Verarbeitungsknoten 312C umfasst eine Schnittstellenlogik 318G, 318H und 318I; und der Verarbeitungsknoten 312D umfasst eine Schnittstellenlogik 318J, 318K und 318L. Der Verarbeitungsknoten 312D ist angeschlossen, um mit mehreren Eingabe/Ausgabegeräten (beispielsweise Geräte 320A-320B in einer verketteten Konfiguration) über die Schnittstellenlogik 318L zu kommunizieren. Weitere Verarbeitungsknoten können mit anderen I/O-Geräten in ähnlicher Weise kommunizieren.
  • Die Verarbeitungsknoten 312A-312D richten eine paketbasierte Verbindung für eine Kommunikation zwischen den Verarbeitungsknoten ein. In der vorliegenden Ausführungsform wird die Verbindung als Mengen aus unidirektionalen Leitungen (beispielsweise Leitungen 324A für den zum Übertragen von Paketen von dem Verarbeitungsknoten 312A zu den Verarbeitungsknoten 312B verwendet, und Leitungen 324B werden zum Übertragen von Paketen von dem Verarbeitungsknoten 312B zu dem Verarbeitungsknoten 312A verwendet) eingerichtet. Andere Sätze aus Leitungen 324C-324H werden verwendet, um Pakete zwischen anderen Verarbeitungsknoten zu übertragen, wie in 16 gezeigt ist. Im Allgemeinen kann jeder Satz aus Leitungen 324 eine oder mehrere Datenleitungen, eine oder mehrere Taktleitungen entsprechend den Datenleitungen und eine oder mehrere Steuerleitungen, die die Art der transportierten Pakete kennzeichnen, aufweisen. Die Verbindung kann in einer mit dem Zwischenspeicher kohärenten Weise für die Kommunikation zwischen Verarbeitungsknoten betrieben werden, oder in einer nicht kohärenten Weise zur Kommunikation zwischen einem Verarbeitungsknoten und einem I/O-Gerät (oder einer Busbrücke in einem I/O-Bus konventionellen Aufbaus, etwa dem PCI-Bus oder dem ISA-Bus) betrieben werden. Ferner kann die Verbindung in einer nicht kohärenten Weise unter Anwendung einer verketteten Struktur zwischen den I/O-Geräten in der gezeigten Weise betrieben werden. Zu beachten ist, dass ein von einem Verarbeitungsknoten zu einem weiteren zu übertragendes Paket durch einen oder mehrere zwischenliegende Knoten laufen kann. Beispielsweise kann ein Paket, das von dem Verarbeitungsknoten 312A zu dem Verarbeitungsknoten 312D zu übertragen ist, durch den Verarbeitungsknoten 312B oder durch den Verarbeitungsknoten 312C laufen, wie dies in 16 gezeigt ist. Es kann ein beliebiger Signalführungsalgorithmus eingesetzt werden. Andere Ausführungsformen des Computersystems 300 können mehr oder weniger Verarbeitungsknoten als die in 16 gezeigte Ausführungsform aufweisen.
  • Im Allgemeinen können die Pakete als eine oder mehrere Bitzeiten auf den Leitungen 324 zwischen den Knoten übertragen werden. Eine Bitzeit kann die ansteigende oder abfallende Flanke des Taktsignals der entsprechenden Taktleitungen sein. Die Pakete können Befehlspakete zur Initiierung von Transaktionen, Sondierungspakete zur Beibehaltung der Zwischenspeicherkohärenz und Antwortpakete zum Antworten auf Sondierungen und Befehle enthalten.
  • Die Verarbeitungsknoten 312A-312D können zusätzlich zu einer Speichersteuerung und einer Schnittstellenlogik einen oder mehrere Prozessoren enthalten. Allgemein gesagt, umfasst ein Verarbeitungsknoten mindestens einen Prozessor und kann optional eine Speichersteuerung zur Kommunikation mit einem Speicher und andere Logik nach Bedarf aufweisen. Insbesondere kann jeder Verarbeitungsknoten 312A-312D eine oder mehrere Kopien des Prozessors 10, wie in 1 gezeigt ist, aufweisen (d.h. mit diversen strukturellen und funktionellen Details, wie sie in den 2-14 gezeigt sind). Die externe Schnittstelleneinheit 18 kann die Schnittstellenlogik 318 in dem Knoten sowie die Speichesteuerung 316 umfassen.
  • Die Speicher 314A-314D können beliebige geeignete Speichereinrichtungen umfassen. Beispielsweise kann ein Speicher 314A-314D einen oder mehrere RAMBUS DRAMs (RDRAMs), synchrone DRAMs (SDRAMs), DDR SDRAM, statische RAM, etc. aufweisen. Der Adressenraum des Computersystems 300 ist auf die Speicher 314A-314D aufgeteilt. Jeder Verarbeitungsknoten 312A-312D kann eine Speicherkarte enthalten, die verwendet wird, um zu bestimmen, welche Adresse welchem Speicher 314A-314D zugeordnet ist, und somit zu bestimmen, welchem Verarbeitungsknoten 312A-312D eine Speicheranforderung für eine spezielle Adresse zuzuleiten ist. In einer Ausführungsform ist der Kohärenzpunkt, für eine Adresse in dem Computersystem 300 die Speichersteuerung 316A-316D, die mit dem Speicher verbunden ist, der die Bytes entsprechend der Adresse enthält. Anders ausgedrückt, die Speichersteuerung 316A-316D ist dafür verantwortlich sicherzustellen, dass jeder Speicherzugriff auf den entsprechenden Speicher 314A-314D in einer mit dem Zwischenspeicher kohärenten Weise auftritt. Die Speichersteuerungen 316A-316D können eine Steuerschaltung zur Verbindung mit den Speichern 314A-314D aufweisen. Des Weiteren können die Speichersteuerungen 316A-316D Anforderungsreihen für das Aneinanderreihen von Speicheranforderungen aufweise.
  • Im Allgemeinen kann die Schnittstellenlogik 318A-318L eine Vielzahl an Puffern zum Empfangen von Paketen von der Verbindung und zum Puffern von Paketen, die über die Verbindung zu senden sind, umfassen. Das Computersystem 300 kann einen beliebigen geeigneten Ablaufsteuerungsmechanismus zum Übertragen von Paketen einsetzen. Beispielsweise speichert in einer Ausführungsform jede Schnittstellenlogik 318 eine Anzahl der Nummer jedes Puffertyps innerhalb des Empfängers am anderen Ende der Verbindung, mit der die Schnittstellenlogik verbunden ist. Die Schnittstellenlogik überträgt kein Paket, sofern die empfangende Schnittstellenlogik nicht einen freien Puffer zur Speicherung des Pakets aufweist. Wenn ein Empfangspuffer durch Weiterleiten eines Paketes verfügbar ist, sendet die empfangende Schnittstellenlogik eine Nachricht zu der sendenden Schnittstellenlogik, um anzuzeigen, dass der Puffer freigegeben ist. Ein derartiger Mechanismus kann als ein "Coupon-basiertes" System bezeichnet werden.
  • Die I/O-Geräte 320A-320B können beliebige geeignete I/O-Geräte sein. Beispielsweise können die I/O-Geräte 320A-320B Einrichtungen zur Kommunikation mit einem anderen Computersystem beinhalten, mit denen die Geräte gekoppelt sind (beispielsweise Netzwerkschnittstellenkarten oder Modems). Des Weiteren können die I/O-Geräte 320A-320B Videobeschleuniger, Audiokartenbeschleuniger, Audiokarten, Festplatten oder Laufwerke oder Laufwerkssteuerungen, SCSI (Kleincomputersystemschnittstellen) Adapter und Telefonkarten, Klangkarten und eine Vielzahl von Datennahmekarten, etwa GPIB oder Feldbus-Schnittstellenkarten umfassen. Zu beachten ist, dass der Begriff "I/O-Gerät" und der Begriff "Periphergerät" als Synonym zu betrachten sind.
  • Bei einer vollständigen Würdigung der obigen Offenbarung werden für den Fachmann diverse Variationen und Modifizierungen ersichtlich. Es ist beabsichtigt, dass die folgenden Patentansprüche so interpretiert werden, dass alle derartigen Variationen und Modifizierungen eingeschlossen sind.
  • Industrielle Anwendbarkeit
  • Diese Erfindung kann allgemein auf dem Gebiet von Prozessoren angewendet werden.
  • Zusammenfassung
  • MIKRO-TLB UND MIKRO-ETIKETTEN FÜR DAS VERRINGERN DER LEISTUNG IN EINEM PROZESSOR
  • Ein Prozessor (10) umfasst einen Zwischenspeicher (16), einen ersten TLB (30) und eine Etikettenschaltung (36). Der Zwischenspeicher (16) umfasst einen Datenspeicher (20), der mehrere Zwischenspeicherzeilen speichert, und einen Etikettenspeicher (22), der mehrere Etiketten speichert. Der erste TLB (30) speichert mehrere Seitenbereiche virtueller Adressen, die mehrere virtuelle Seiten kennzeichnen, für die physikalische Adressenübersetzungen in dem ersten TLB (30) gespeichert sind. Die Etikettenschaltung (36) ist ausgebildet, eine oder mehrere der mehreren Zwischenspeicherzeilen zu kennzeichnen, die in dem Zwischenspeicher (16) gespeichert sind und in den mehreren virtuellen Seiten enthalten sind. In Reaktion auf einen Treffer mittels einer ersten virtuellen Adresse in dem ersten TLB (30) und einem Treffer durch die erste virtuelle Adresse in der Etikettenschaltung (36) ist die Etikettenschaltung (36) ausgebildet, ein Lesen des Etikettenspeichers (22) in dem Zwischenspeicher (16) zu verhindern.

Claims (9)

  1. Prozessor (10) mit: einem Zwischenspeicher (16) mit einem Datenspeicher (20), der ausgebildet ist, mehrere Zwischenspeicherzeilen zu speichern, und einem Etikettenspeicher (22), der ausgebildet ist, mehrere Etiketten zu speichern, wobei jede der mehreren Etiketten einer entsprechenden Zeile der mehreren Zwischenspeicherzeilen entspricht; und einer Etikettenschaltung (36), die ausgebildet ist, einen Treffer in dem Zwischenspeicher (16) durch eine erste virtuelle Adresse einer Teilmenge der mehreren Zwischenspeicherzeilen zu erkennen; und wobei in Reaktion auf einen Treffer durch die erste virtuelle Adresse in der Etikettenschaltung (36) die Etikettenschaltung (36) ausgebildet ist, ein Auslesen des Etikettenspeichers (22) zu verhindern, und wobei der Datenspeicher (20) ausgebildet ist, mindestens einen Teil einer ersten Zwischenspeicherzeile, die der ersten virtuellen Adresse entspricht, auszugeben.
  2. Prozessor nach Anspruch 1, der ferner umfasst: einen ersten Translations-lookaside-Puffer (TLB) (30), der ausgebildet ist, mehrere Seitenbereiche virtueller Adressen zu speichern, die mehrere virtuelle Seiten kennzeichnen, für die physikalische Adressenübersetzungen in dem ersten TLB (30) gespeichert sind; und wobei die Etikettenschaltung (36) mit dem ersten TLB (30) verbunden ist, und wobei die Teilmenge der mehreren Zwischenspeicherzeilen den mehreren virtuellen Seiten sind; wobei die Etikettenschaltung (36) ausgebildet ist, ferner ein Auslesen des Etikettenspeichers (22) in dem Zwischenspeicher (16) in Reaktion auf einen Treffer durch die erste virtuelle Adresse in dem ersten TLB zu verhindern.
  3. Prozessor nach Anspruch 2, wobei in Reaktion auf den Treffer durch die erste virtuelle Adresse in dem ersten TLB (30) und einen Nichttreffer durch die erste virtuelle Adresse in der Etikettenschaltung (36), der Zwischenspeicher (16) ausgebildet ist, ein oder mehrere Etiketten, die in dem Etikettenspeicher (22) gespeichert sind, auszulesen und ausgebildet ist, zu erkennen, ob die erste virtuelle Adresse den Zwischenspeicher (16) betrifft oder nicht.
  4. Prozessor nach Anspruch 3, der ferner einen zweiten TLB (38) umfasst, wobei auf den zweiten TLB (38) in Reaktion auf einen Nichttreffer in dem ersten TLB (30) zugegriffen wird, und wobei der zweite TLB (38) ausgebildet ist, einen Seitenbereich einer ersten physikalischen Adresse entsprechend der ersten virtuellen Adresse in Reaktion auf einen Treffer in dem zweiten TLB (38) bereitzustellen, und wobei der Zwischenspeicher (16) angeschlossen ist, einen Etikettenbereich der ersten physikalischen Adresse zu empfangen und ausgebildet ist, den Etikettenbereich der ersten physikalischen Adresse mit mindestens einer ersten Etikette aus dem Etikettenspeicher (22) zu vergleichen, um den Treffer in dem Zwischenspeicher (16) zu erkennen.
  5. Prozessor nach Anspruch 2, wobei der erste TLB (30) mehrere erste Einträge (80A-80B) aufweist, wobei jeder der ersten Einträge (80A-80B) gestaltet ist, um einen entsprechenden Seitenbereich der mehreren Seitenbereiche virtueller Adressen zu speichern, und wobei der ersten TLB (30) ausgebildet ist, eine Kennzeichnung eines ersten Eintrags der ersten mehreren Einträge, der von der ersten virtuellen Adresse betroffen ist, auszugeben, und wobei die Etikettenschaltung (36) angeschlossen ist, um die Kennzeichnung des ersten Eintrags zu empfangen, und wobei die Etikettenschaltung (36) mehrere zweite Einträge (100A-100D) aufweist, wobei eine Teilmenge der mehreren zweiten Einträge (100A-100D) einem einzelnen der mehreren ersten Einträge (80A-80B) in dem ersten TLB (30) entspricht, und wobei dieser die Zwischenspeicherzeilen benennt, die in dem Zwischenspeicher (16) gespeichert sind und die in einer Seite sind, die von dem in dem einzelnen der mehreren ersten Einträge (80A-80B) gespeicherten Seitenbereich gekennzeichnet sind, und wobei die Etikettenschaltung (36) ausgebildet ist, die Teilmenge auf einen Treffer in Reaktion auf die Kennzeichnung des ersten Eintrags hin zu prüfen.
  6. Prozessor nach Anspruch 5, wobei jeder der mehreren zweiten Einträge (100A-100D) ausgebildet ist, virtuelle Adressenbits zu speichern, die nicht in dem Seitenbereich der virtuellen Adresse enthalten sind und nicht in dem Zwischenspeicherzeilenoffsetbereich der virtuellen Adresse enthalten sind.
  7. Verfahren mit: Zugreifen mit einer ersten virtuellen Adresse auf einen ersten Translationslookaside-Puffer (TLB) (30), der ausgebildet ist, mehrere Seitenbereiche virtueller Adressen, die mehrere virtuelle Seiten kennzeichnen, zu speichern, für die physikalische Adressenübersetzungen in dem ersten TLB (30) gespeichert sind; in Reaktion auf einen Treffer durch die erste virtuelle Adresse in dem ersten TLB (30), Zugreifen auf eine Etikettenschaltung (36), die ausgebildet ist, mehrere Zwischenspeicherzeilen zu benennen, die in einem Zwischenspeicher (16) gespeichert sind und in den mehreren virtuellen Seiten liegen; Erkennen eines Treffers durch die erste virtuelle Adresse in dem ersten TLB (30) und der Etikettenschaltung (36); und in Reaktion auf den Treffer durch die erste virtuelle Adresse in dem ersten TLB (30) und der Etikettenschaltung (36), Verhindern eines Lesens eines Etikettenspeichers (22) in dem Zwischenspeicher (16).
  8. Verfahren nach Anspruch 7, das ferner umfasst: in Reaktion auf den Treffer durch die erste virtuelle Adresse in dem ersten TLB (30) und einen Nichttreffer durch die erste virtuelle Adresse in der Etikettenschaltung (36), Lesen eines oder mehrerer Etiketten, die in dem Etikettenspeicher (22) gespeichert sind, und Erkennen, ob die erste virtuelle Adresse den Zwischenspeicher (16) betrifft oder nicht.
  9. Verfahren nach Anspruch 7, das ferner umfasst: Zugreifen auf einen zweiten TLB (38) in Reaktion auf einen Nichttreffer in dem ersten TLB (30), wobei der zweite TLB (38) ausgebildet ist, einen Seitenbereich einer ersten physikalischen Adresse bereitzustellen, die der ersten virtuellen Adresse entspricht, in Reaktion auf einen Treffer in dem zweiten TLB (38); und wobei der Zwischenspeicher (16) die erste physikalische Adresse mit mindestens einer ersten Etikette von dem Etikettenspeicher (22) vergleicht, um den Treffen in dem Zwischenspeicher (16) zu erkennen.
DE112004001608.8T 2003-09-03 2004-06-04 Mikro-TLB und Mikro-Etiketten für das Verringern der Leistungsaufnahme in einem Prozessor Expired - Fee Related DE112004001608B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/653,749 2003-09-03
US10/653,749 US7117290B2 (en) 2003-09-03 2003-09-03 MicroTLB and micro tag for reducing power in a processor
PCT/US2004/018042 WO2005024635A2 (en) 2003-09-03 2004-06-04 Microtlb and micro tag for reducing power in a processor

Publications (2)

Publication Number Publication Date
DE112004001608T5 true DE112004001608T5 (de) 2006-08-10
DE112004001608B4 DE112004001608B4 (de) 2018-09-06

Family

ID=34217964

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112004001608.8T Expired - Fee Related DE112004001608B4 (de) 2003-09-03 2004-06-04 Mikro-TLB und Mikro-Etiketten für das Verringern der Leistungsaufnahme in einem Prozessor

Country Status (8)

Country Link
US (1) US7117290B2 (de)
JP (1) JP2007504552A (de)
KR (1) KR101014395B1 (de)
CN (1) CN100485638C (de)
DE (1) DE112004001608B4 (de)
GB (1) GB2421826B (de)
TW (1) TW200519590A (de)
WO (1) WO2005024635A2 (de)

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2836407B1 (fr) * 2002-02-28 2004-05-14 Thermagen Procede de fabrication d'emballage metallique
US20050050278A1 (en) * 2003-09-03 2005-03-03 Advanced Micro Devices, Inc. Low power way-predicted cache
US20070156992A1 (en) * 2005-12-30 2007-07-05 Intel Corporation Method and system for optimizing latency of dynamic memory sizing
US20060224857A1 (en) * 2005-03-29 2006-10-05 O'connor Dennis M Locking entries into translation lookaside buffers
KR100692976B1 (ko) * 2006-02-08 2007-03-12 삼성전자주식회사 프로세서간 데이터 전송 방법 및 시스템
JP2007233615A (ja) * 2006-02-28 2007-09-13 Fujitsu Ltd アドレス変換装置
US8035650B2 (en) 2006-07-25 2011-10-11 Qualcomm Incorporated Tiled cache for multiple software programs
US7650465B2 (en) * 2006-08-18 2010-01-19 Mips Technologies, Inc. Micro tag array having way selection bits for reducing data cache access power
US7657708B2 (en) * 2006-08-18 2010-02-02 Mips Technologies, Inc. Methods for reducing data cache access power in a processor using way selection bits
US7594079B2 (en) * 2006-09-29 2009-09-22 Mips Technologies, Inc. Data cache virtual hint way prediction, and applications thereof
US20080082793A1 (en) * 2006-09-29 2008-04-03 Mips Technologies, Inc. Detection and prevention of write-after-write hazards, and applications thereof
US9946547B2 (en) 2006-09-29 2018-04-17 Arm Finance Overseas Limited Load/store unit for a processor, and applications thereof
US8688890B2 (en) * 2006-12-05 2014-04-01 Hewlett-Packard Development Company, L.P. Bit ordering for communicating an address on a serial fabric
EP2169556A4 (de) 2007-06-20 2010-10-13 Fujitsu Ltd Computer, tlb-steuerverfahren und tlb-steuerprogramm
US8145876B2 (en) * 2007-08-06 2012-03-27 Advanced Micro Devices, Inc. Address translation with multiple translation look aside buffers
US8156309B2 (en) * 2007-10-18 2012-04-10 Cisco Technology, Inc. Translation look-aside buffer with variable page sizes
GB2458295B (en) * 2008-03-12 2012-01-11 Advanced Risc Mach Ltd Cache accessing using a micro tag
US8589629B2 (en) * 2009-03-27 2013-11-19 Advanced Micro Devices, Inc. Method for way allocation and way locking in a cache
US8255629B2 (en) * 2009-06-22 2012-08-28 Arm Limited Method and apparatus with data storage protocols for maintaining consistencies in parallel translation lookaside buffers
JP5526626B2 (ja) * 2009-06-30 2014-06-18 富士通株式会社 演算処理装置およびアドレス変換方法
EP3255555B1 (de) * 2009-07-21 2020-01-29 Tadao Nakamura Stromsparender hochgeschwindigkeitscomputer ohne speicherengpässe
US8429378B2 (en) * 2010-07-06 2013-04-23 Qualcomm Incorporated System and method to manage a translation lookaside buffer
US9753858B2 (en) 2011-11-30 2017-09-05 Advanced Micro Devices, Inc. DRAM cache with tags and data jointly stored in physical rows
US8612690B2 (en) * 2012-01-17 2013-12-17 Qualcomm Incorporated Method for filtering traffic to a physically-tagged data cache
US9524248B2 (en) * 2012-07-18 2016-12-20 Micron Technology, Inc. Memory management for a hierarchical memory system
US8984368B2 (en) 2012-10-11 2015-03-17 Advanced Micro Devices, Inc. High reliability memory controller
US9367468B2 (en) * 2013-01-15 2016-06-14 Qualcomm Incorporated Data cache way prediction
US9330026B2 (en) 2013-03-05 2016-05-03 Qualcomm Incorporated Method and apparatus for preventing unauthorized access to contents of a register under certain conditions when performing a hardware table walk (HWTW)
US9015400B2 (en) * 2013-03-05 2015-04-21 Qualcomm Incorporated Methods and systems for reducing the amount of time and computing resources that are required to perform a hardware table walk (HWTW)
US9311239B2 (en) 2013-03-14 2016-04-12 Intel Corporation Power efficient level one data cache access with pre-validated tags
US9208261B2 (en) * 2014-01-24 2015-12-08 Oracle International Corporation Power reduction for fully associated translation lookaside buffer (TLB) and content addressable memory (CAM)
GB2547189A (en) * 2016-02-03 2017-08-16 Swarm64 As Cache and method
US10552338B2 (en) * 2017-02-21 2020-02-04 Arm Limited Technique for efficient utilisation of an address translation cache
WO2019005975A1 (en) * 2017-06-28 2019-01-03 Nvidia Corporation TYPE OF MEMORY THAT CAN BE HANGED WHILE INACCESSIBLE BY SPECULATIVE INSTRUCTIONS
GB2570665B (en) 2018-01-31 2020-08-26 Advanced Risc Mach Ltd Address translation in a data processing apparatus
JP2023056289A (ja) 2021-10-07 2023-04-19 富士通株式会社 演算処理装置および演算処理方法

Family Cites Families (86)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AT354159B (de) 1975-02-10 1979-12-27 Siemens Ag Assoziativspeicher mit getrennt assoziierbaren bereichen
US4453212A (en) 1981-07-13 1984-06-05 Burroughs Corporation Extended address generating apparatus and method
US4928223A (en) 1982-10-06 1990-05-22 Fairchild Semiconductor Corporation Floating point microprocessor with directable two level microinstructions
EP0109655B1 (de) 1982-11-17 1991-07-24 Nec Corporation Anordnung zum Vorabholen von Befehlen mit Vorhersage einer Verzweigungszieladresse
US4807115A (en) 1983-10-07 1989-02-21 Cornell Research Foundation, Inc. Instruction issuing mechanism for processors with multiple functional units
US4764861A (en) 1984-02-08 1988-08-16 Nec Corporation Instruction fpefetching device with prediction of a branch destination for each branch count instruction
EP0229619B1 (de) 1986-01-07 1997-08-06 Nec Corporation Befehlsvorabrufgerät mit einer Schaltung zum Prüfen der Vorhersage eines Verzweigungsbefehls vor seiner Ausführung
EP0239081B1 (de) 1986-03-26 1995-09-06 Hitachi, Ltd. Datenprozessor in Pipelinestruktur mit der Fähigkeit mehrere Befehle parallel zu dekodieren und auszuführen
US4914582A (en) 1986-06-27 1990-04-03 Hewlett-Packard Company Cache tag lookaside
EP0259095A3 (de) 1986-08-27 1990-02-28 Amdahl Corporation Warteschlange für einen Cachespeicher
IT1202687B (it) 1987-03-25 1989-02-09 Honeywell Inf Systems Memoria tampone a predizione di hit
JPS6413649A (en) * 1987-07-07 1989-01-18 Nec Corp Information processor
JPH071484B2 (ja) * 1987-07-14 1995-01-11 日本電気株式会社 情報処理装置
US4943908A (en) 1987-12-02 1990-07-24 International Business Machines Corporation Multiple branch analyzer for prefetching cache lines
US5142634A (en) 1989-02-03 1992-08-25 Digital Equipment Corporation Branch prediction
US5067069A (en) 1989-02-03 1991-11-19 Digital Equipment Corporation Control of multiple functional units with parallel operation in a microcoded execution unit
US5226126A (en) 1989-02-24 1993-07-06 Nexgen Microsystems Processor having plurality of functional units for orderly retiring outstanding operations based upon its associated tags
US5136697A (en) 1989-06-06 1992-08-04 Advanced Micro Devices, Inc. System for reducing delay for execution subsequent to correctly predicted branch instruction using fetch information stored with each block of instructions in cache
US5129067A (en) 1989-06-06 1992-07-07 Advanced Micro Devices, Inc. Multiple instruction decoder for minimizing register port requirements
JPH0654477B2 (ja) * 1989-06-12 1994-07-20 松下電器産業株式会社 記憶装置
US5091851A (en) 1989-07-19 1992-02-25 Hewlett-Packard Company Fast multiple-word accesses from a multi-way set-associative cache memory
US5148538A (en) 1989-10-20 1992-09-15 International Business Machines Corporation Translation look ahead based cache access
US5226133A (en) * 1989-12-01 1993-07-06 Silicon Graphics, Inc. Two-level translation look-aside buffer using partial addresses for enhanced speed
US5251306A (en) 1990-01-16 1993-10-05 Advanced Micro Devices, Inc. Apparatus for controlling execution of a program in a computing device
US5185868A (en) 1990-01-16 1993-02-09 Advanced Micro Devices, Inc. Apparatus having hierarchically arranged decoders concurrently decoding instructions and shifting instructions not ready for execution to vacant decoders higher in the hierarchy
JPH03232034A (ja) * 1990-02-08 1991-10-16 Oki Electric Ind Co Ltd キャッシュ制御装置
US5226130A (en) 1990-02-26 1993-07-06 Nexgen Microsystems Method and apparatus for store-into-instruction-stream detection and maintaining branch prediction cache consistency
US5163140A (en) 1990-02-26 1992-11-10 Nexgen Microsystems Two-level branch prediction cache
US5230068A (en) 1990-02-26 1993-07-20 Nexgen Microsystems Cache memory system for dynamically altering single cache memory line as either branch target entry or pre-fetch instruction queue based upon instruction sequence
EP0449369B1 (de) 1990-03-27 1998-07-29 Koninklijke Philips Electronics N.V. Datenverarbeitungssystem mit einem leistungsverbessernden Befehlscachespeicher
US5053631A (en) 1990-04-02 1991-10-01 Advanced Micro Devices, Inc. Pipelined floating point processing unit
US5058048A (en) 1990-04-02 1991-10-15 Advanced Micro Devices, Inc. Normalizing pipelined floating point processing unit
EP0459232B1 (de) 1990-05-29 1998-12-09 National Semiconductor Corporation Cache-Speicher von partiell decodierten Befehlen und Verfahren hierfür
US5283873A (en) 1990-06-29 1994-02-01 Digital Equipment Corporation Next line prediction apparatus for a pipelined computed system
US5235697A (en) 1990-06-29 1993-08-10 Digital Equipment Set prediction cache memory system using bits of the main memory address
JP2834289B2 (ja) 1990-07-20 1998-12-09 株式会社日立製作所 マイクロプロセッサ
US5412787A (en) * 1990-11-21 1995-05-02 Hewlett-Packard Company Two-level TLB having the second level TLB implemented in cache tag RAMs
US5210845A (en) 1990-11-28 1993-05-11 Intel Corporation Controller for two-way set associative cache
JP2636088B2 (ja) 1991-03-15 1997-07-30 甲府日本電気株式会社 情報処理装置
JPH0535592A (ja) * 1991-07-29 1993-02-12 Toshiba Corp キヤツシユメモリ装置
JPH0535591A (ja) * 1991-07-29 1993-02-12 Toshiba Corp キヤツシユメモリ装置
US5345569A (en) 1991-09-20 1994-09-06 Advanced Micro Devices, Inc. Apparatus and method for resolving dependencies among a plurality of instructions within a storage device
GB2263985B (en) 1992-02-06 1995-06-14 Intel Corp Two stage window multiplexors for deriving variable length instructions from a stream of instructions
SG45269A1 (en) 1992-02-06 1998-01-16 Intel Corp End bit markers for instruction decode
JP2761688B2 (ja) 1992-02-07 1998-06-04 三菱電機株式会社 データ処理装置
WO1993017385A1 (en) 1992-02-27 1993-09-02 Intel Corporation Dynamic flow instruction cache memory
US5418922A (en) 1992-04-30 1995-05-23 International Business Machines Corporation History table for set prediction for accessing a set associative cache
US5423011A (en) 1992-06-11 1995-06-06 International Business Machines Corporation Apparatus for initializing branch prediction information
WO1994003856A1 (en) 1992-08-07 1994-02-17 Massachusetts Institute Of Technology Column-associative cache
JPH06314241A (ja) 1993-03-04 1994-11-08 Sharp Corp 高速半導体記憶装置及び高速連想記憶装置
US5454117A (en) 1993-08-25 1995-09-26 Nexgen, Inc. Configurable branch prediction for a processor performing speculative execution
IE80854B1 (en) 1993-08-26 1999-04-07 Intel Corp Processor ordering consistency for a processor performing out-of-order instruction execution
DE4333547A1 (de) * 1993-10-01 1995-04-06 Hoechst Ag Verfahren zur Verwertung von Reststoffen enthaltend cellulosische Fasern und aus synthetischen Polymeren
EP0651321B1 (de) 1993-10-29 2001-11-14 Advanced Micro Devices, Inc. Superskalarmikroprozessoren
US5606683A (en) * 1994-01-28 1997-02-25 Quantum Effect Design, Inc. Structure and method for virtual-to-physical address translation in a translation lookaside buffer
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
EP0675443A1 (de) 1994-03-30 1995-10-04 Digital Equipment Corporation Vorrichtung und Verfahren zum Zugriff auf direkt abgebildete Cachespeicher
US5521306A (en) * 1994-04-26 1996-05-28 Xerox Corporation Processes for the preparation of hydroxygallium phthalocyanine
US5559975A (en) 1994-06-01 1996-09-24 Advanced Micro Devices, Inc. Program counter update mechanism
US5813031A (en) * 1994-09-21 1998-09-22 Industrial Technology Research Institute Caching tag for a large scale cache computer memory system
US5509119A (en) 1994-09-23 1996-04-16 Hewlett-Packard Company Fast comparison method and apparatus for error corrected cache tags
JP3456768B2 (ja) * 1994-09-28 2003-10-14 株式会社東芝 アドレス変換装置
US5640532A (en) 1994-10-14 1997-06-17 Compaq Computer Corporation Microprocessor cache memory way prediction based on the way of previous memory read
US5835951A (en) 1994-10-18 1998-11-10 National Semiconductor Branch processing unit with target cache read prioritization protocol for handling multiple hits
US5732242A (en) 1995-03-24 1998-03-24 Silicon Graphics, Inc. Consistently specifying way destinations through prefetching hints
US5764946A (en) 1995-04-12 1998-06-09 Advanced Micro Devices Superscalar microprocessor employing a way prediction unit to predict the way of an instruction fetch address and to concurrently provide a branch prediction address corresponding to the fetch address
US5752069A (en) 1995-08-31 1998-05-12 Advanced Micro Devices, Inc. Superscalar microprocessor employing away prediction structure
US5845323A (en) 1995-08-31 1998-12-01 Advanced Micro Devices, Inc. Way prediction structure for predicting the way of a cache in which an access hits, thereby speeding cache access time
US5893146A (en) 1995-08-31 1999-04-06 Advanced Micro Design, Inc. Cache structure having a reduced tag comparison to enable data transfer from said cache
US5802594A (en) 1995-09-06 1998-09-01 Intel Corporation Single phase pseudo-static instruction translation look-aside buffer
US5918245A (en) 1996-03-13 1999-06-29 Sun Microsystems, Inc. Microprocessor having a cache memory system using multi-level cache set prediction
WO1998020421A1 (en) 1996-11-04 1998-05-14 Advanced Micro Devices, Inc. A way prediction structure
US6065091A (en) * 1997-05-30 2000-05-16 Via-Cyrix, Inc. Translation look-aside buffer slice circuit and method of operation
US5956746A (en) 1997-08-13 1999-09-21 Intel Corporation Computer system having tag information in a processor and cache memory
US6016533A (en) 1997-12-16 2000-01-18 Advanced Micro Devices, Inc. Way prediction logic for cache array
US6016545A (en) 1997-12-16 2000-01-18 Advanced Micro Devices, Inc. Reduced size storage apparatus for storing cache-line-related data in a high frequency microprocessor
US6212602B1 (en) * 1997-12-17 2001-04-03 Sun Microsystems, Inc. Cache tag caching
US6138225A (en) 1997-12-24 2000-10-24 Intel Corporation Address translation system having first and second translation look aside buffers
JP3439350B2 (ja) * 1998-10-02 2003-08-25 Necエレクトロニクス株式会社 キャッシュ・メモリ制御方法及びキャッシュ・メモリ制御装置
US6418521B1 (en) 1998-12-23 2002-07-09 Intel Corporation Hierarchical fully-associative-translation lookaside buffer structure
US6425055B1 (en) 1999-02-24 2002-07-23 Intel Corporation Way-predicting cache memory
US6687789B1 (en) 2000-01-03 2004-02-03 Advanced Micro Devices, Inc. Cache which provides partial tags from non-predicted ways to direct search if way prediction misses
KR100351504B1 (ko) * 2000-06-05 2002-09-05 삼성전자 주식회사 캐쉬 메모리, 그의 전력 소비 절감 방법 그리고 캐쉬메모리를 구비하는 데이터 처리 시스템
JP3732397B2 (ja) * 2000-10-05 2006-01-05 株式会社日立製作所 キャッシュシステム
US6553477B1 (en) * 2000-11-06 2003-04-22 Fujitsu Limited Microprocessor and address translation method for microprocessor
JP2003196157A (ja) * 2001-12-25 2003-07-11 Mitsubishi Electric Corp プロセッサ装置及びメモリ管理方法

Also Published As

Publication number Publication date
KR20060067964A (ko) 2006-06-20
CN1846200A (zh) 2006-10-11
GB0605621D0 (en) 2006-04-26
US7117290B2 (en) 2006-10-03
DE112004001608B4 (de) 2018-09-06
GB2421826A (en) 2006-07-05
JP2007504552A (ja) 2007-03-01
KR101014395B1 (ko) 2011-02-15
CN100485638C (zh) 2009-05-06
TW200519590A (en) 2005-06-16
GB2421826B (en) 2007-04-11
WO2005024635A3 (en) 2005-05-26
US20050050277A1 (en) 2005-03-03
WO2005024635A2 (en) 2005-03-17

Similar Documents

Publication Publication Date Title
DE112004001608B4 (de) Mikro-TLB und Mikro-Etiketten für das Verringern der Leistungsaufnahme in einem Prozessor
DE60003235T2 (de) Cachespeicher zum bereitstellen von partiellen etiketten aus nicht-vorhergesagten wegen um die suche bei wegvorhersagefehlgriffen zu leiten
DE60025028T2 (de) Speicherpuffer, der daten, basierend auf index und freiwilliger weisebemusterung überträgt
DE60222402T2 (de) Verfahren und system zur spekulativen ungültigkeitserklärung von zeilen in einem cachespeicher
DE69721368T2 (de) Verfahren und Gerät zur dynamischen Vorhersage des Weges für mehrstufige und mehrwege-satz-assoziative Cachespeicher
DE60102017T2 (de) Räumungsfilter für adressenübersetzungspuffer
US5696925A (en) Memory management unit with address translation function
DE112004002848B4 (de) Mikroprozessor und Verfahren zum Verifizieren einer Speicherdatei in einem derartigen Mikroprozessor
EP0431463B1 (de) Zweistufiger Adressübersetzungspufferspeicher mit partiellen Adressen zur Geschwindigkeitserhöhung
US6014732A (en) Cache memory with reduced access time
DE60223023T2 (de) Verwendung von typenbit zur verfolgung der speicherung von ecc- und vordekodierungsbit in einem cache der ebene 2
US5265227A (en) Parallel protection checking in an address translation look-aside buffer
DE60009151T2 (de) Vorhersage von datenbeförderung von speicher- zum ladebefehl mit untrainierung
JP3666689B2 (ja) 仮想アドレス変換方法
AU658914B2 (en) Improving computer performance by simulated cache associativity
DE102018001537A1 (de) System, vorrichtung und verfahren zum selektiven freigeben einer instruktionshandhabung auf lokalitäts-basis
JPH11501745A (ja) コンピュータシステム内のアドレス変換用ルックアサイドバッファ
EP3173952A1 (de) System und verfahren zum entfernen von hash-tabelleneinträgen
DE102020132140A1 (de) Pipelines für sichere Multithread-Ausführung
EP0021097B1 (de) Verfahren zur Erhöhung der Geschwindigkeit eines Computersystems und Computersystem für Hochgeschwindigkeitsverarbeitung
JPH0695972A (ja) ディジタルコンピュータシステム
DE3740834A1 (de) Aufrechterhaltung der kohaerenz zwischen einem mikroprozessorenintegrierten cache-speicher und einem externen speicher
DE60014438T2 (de) Anrufgatterexpansion für 64 bit adressierung
DE3832758C2 (de) Verfahren zum Adressieren eines im Rückschreib-Modus betriebenen virtuellen Cache-Speichers
KR100218616B1 (ko) 현재의 트랜잭션동안 다음 어드레스를 제공하기 위한 전송방법 및 시스템

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law

Ref document number: 112004001608

Country of ref document: DE

Date of ref document: 20060810

Kind code of ref document: P

8127 New person/name/address of the applicant

Owner name: GLOBALFOUNDRIES INC., GRAND CAYMAN, KY

8128 New person/name/address of the agent

Representative=s name: GRUENECKER, KINKELDEY, STOCKMAIR & SCHWANHAEUSSER,

R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee