DE102012222820A1 - Anweisung-Zwischenspeicher-Energie-Verminderung - Google Patents

Anweisung-Zwischenspeicher-Energie-Verminderung Download PDF

Info

Publication number
DE102012222820A1
DE102012222820A1 DE102012222820A DE102012222820A DE102012222820A1 DE 102012222820 A1 DE102012222820 A1 DE 102012222820A1 DE 102012222820 A DE102012222820 A DE 102012222820A DE 102012222820 A DE102012222820 A DE 102012222820A DE 102012222820 A1 DE102012222820 A1 DE 102012222820A1
Authority
DE
Germany
Prior art keywords
cache
cache line
data
field
recently used
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.)
Ceased
Application number
DE102012222820A
Other languages
English (en)
Inventor
Aneesh Aggarwal
Ross Segelken
Kevin Koschoreck
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.)
Nvidia Corp
Original Assignee
Nvidia Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nvidia Corp filed Critical Nvidia Corp
Publication of DE102012222820A1 publication Critical patent/DE102012222820A1/de
Ceased legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/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
    • 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/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1028Power efficiency
    • 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

Landscapes

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

Abstract

In einer Ausführungsform umfasst ein Verfahren zum Steuern eines Anweisungs-Zwischenspeichers, welcher ein am-wenigsten-kürzlich-benutzte-Bits-Feld, ein Kennzeichen-Feld, und ein Daten-Feld aufweist, Nachschauen, in den am-wenigsten-kürzlich-benutzte-Bits-Feld, von am-wenigsten-kürzlich-benutzten-Bits für jeden einer Mehrzahl von Zwischenspeicher-Zeilen-Sätzen in dem Anweisungs-Zwischenspeicher, Bestimmen eines kürzlichst-benutzten-Weges in einem designierten Zwischenspeicher-Zeilen-Satz der Mehrzahl von Zwischenspeicher-Zeilen-Sätzen basierend auf den am-wenigsten-kürzlich-benutzten-Bits für die designierte Zwischenspeicher-Zeile, Nachschauen, in dem Kennzeichen-Feld, von Kennzeichen für einen oder mehrere Wege in dem designierten Zwischenspeicher-Zeilen-Satz, Nachschauen, in dem Daten-Feld, von Daten, welche in dem kürzlichst-benutzten-Weg in dem designierten Zwischenspeicher-Zeilen-Satz gespeichert sind, und, wenn es einen Zwischenspeicher-Treffer in dem kürzlichst-benutzten-Weg gibt, Abrufen der Daten, welche in dem kürzlichst-benutzten-Weg gespeichert sind, aus dem Daten-Feld.

Description

  • Mikroprozessoren setzen typischerweise Anweisungs-Zwischenspeicher (instruction caches) ein, um Abruf und Ausführung von Anweisungen zu beschleunigen. Der Anweisungs-Zwischenspeicher agiert typischerweise als ein Pufferspeicher zwischen einem höheren Niveau von Speicher und einem Prozessor. Wenn eine Anweisung von dem Prozessor geholt wird, wird die Anweisung zum direkten Zugriff mittels des Prozessors in den Anweisungs-Zwischenspeicher kopiert. Wenn dieselben Anweisungen häufig in einem Satz von Programm-Anweisungen benutzt werden, ergibt eine Speicherung dieser Anweisungen in dem Anweisungs-Zwischenspeicher eine Erhöhung im Durchsatz, weil langsamere Zugriffe von Höheres-Niveau-Speicher vermindert sind.
  • Zum Beispiel kann ein Satz-assoziativer Anweisungs-Zwischenspeicher ein Daten-Feld und ein Kennzeichen-Feld oder Tag-Feld umfassen. Das Daten-Feld und Kennzeichen-Feld können kombiniert werden, um Zwischenspeicher-Zeilen oder -Wörter zu bilden, welche in verschiedenen Weisen innerhalb des Anweisungs-Zwischenspeichers organisiert sind. Wenn eine Adresse für eine Anweisung-Holen-Operation erzeugt wird, vergleicht der Anweisungs-Zwischenspeicher ein Kennzeichen-Feld (tag field) der Adresse mit Kennzeichen-Werten, welche momentan in einem entsprechenden Zwischenspeicher-Zeile-Satz des Kennzeichen-Feldes gespeichert sind. Wenn eine Kennzeichen-Übereinstimmung existiert, und wenn das Kennzeichen gültig ist (d. h. ein Zwischenspeicher-Treffer), dann werden diese Daten von der Stelle in dem Daten-Feld geholt, welche der gewünschten Adresse entspricht. Da die Daten direkt von dem Anweisungs-Zwischenspeicher abgerufen werden, ist eine Geschwindigkeit verbessert als ein Resultat, dass nicht auf externen Speicher zugegriffen werden muss.
  • In einer beispielhaften Implementierung eines Anweisung-Zwischenspeichers werden, wenn eine Adresse für eine Anweisung-Holen-Operation erzeugt wird, Teile des Kennzeichen-Felds und des Daten-Felds, welche einen Satz von Zwischenspeicher-Zeilen entsprechen, welche potentiell mit der Adresse übereinstimmen, parallel aktiviert. Mit anderen Worten werden alle Wege oder Weisen (all ways) in dem Kennzeichen-Feld, welche dem Satz von Zwischenspeicher-Zeilen entsprechen, aktiviert und alle Adressen in dem Daten-Feld, welche dem Satz von Zwischenspeicher-Zeilen entsprechen, werden aktiviert. Wenn das Kennzeichen-Feld und das Daten-Feld aktiviert sind, wird die Daten-Feld-Stelle, welche die Daten hält, welche der Anweisungs-Adresse entsprechen, geholt und die Daten in den anderen aktivierten Stellen werden verworfen. Indem alle Stellen sowohl des Kennzeichen-Feldes als auch des Daten-Feldes, welche dem Satz von Zwischenspeicher-Zeilen entsprechen, parallel aktiviert werden, kann eine Anweisung-Holen-Operation typischerweise verglichen mit einem seriellen Vorgehen schneller durchgeführt werden, wo alle Kennzeichen-Stellen aktiviert werden, um eine übereinstimmende Daten-Stelle in einem Taktzyklus zu identifizieren, und dann wird eine einzelne Stelle in dem Daten-Feld aktiviert, um die Daten in einem nachfolgenden Taktzyklus zu holen.
  • Es gibt jedoch verschiedene Begrenzungen mit diesen parallelen und seriellen Vorgehensweisen zum Durchführen einer Anweisung-Holen-Operation. In dem parallelen Vorgehen ist z. B., da alle Daten-Stellen in dem Daten-Feld, welche dem Satz von Zwischenspeicher-Zeilen entsprechen, aktiviert werden, um Daten von nur einer Stelle zu holen, ein Energieverbrauch zum Vorteil eines Erhöhens einer Verarbeitungs-Geschwindigkeit erhöht. Mit anderen Worten ist die parallele Zugangsweise schneller, ist jedoch auch energiehungriger. Auf der anderen Seite ist in dem seriellen Zugang ein Energieverbrauch dadurch reduziert, dass nur eine Stelle in dem Daten-Feld aktiviert wird. Die Kennzeichen-Feld- und Daten-Feld-Zugriffe müssen jedoch seriell über mehrere Taktzyklen erfolgen, um zu identifizieren, welche Stelle in dem Daten-Feld aktiviert werden muss, um die gewünschten Daten zu holen. In anderen Worten opfert der serielle Zugang eine Verarbeitungs-Geschwindigkeit zum Vorteil eines Reduzierens von Energieverbrauch.
  • ZUSAMMENFASSUNG
  • Ausführungsformen, welche ein Steuern eines Anweisungs-Zwischenspeichers eines Mikroprozessors in solch einer Weise betreffen, dass ein Energieverbrauch vermindert ist, ohne signifikant eine Performanz des Mikroprozessors zu vermindern, sind bereitgestellt. In einer Ausführungsform umfasst ein Verfahren zum Steuern eines Anweisungs-Zwischenspeichers, welcher ein am-wenigsten-kürzlich-benutzte-Bits-Feld (at least recently-used bit array), ein Kennzeichen-Feld (tag array), und ein Daten-Feld umfasst, Nachschauen (looking up), in dem am-wenigsten-kürzlich-benutzte-Bits-Feld nach am-wenigsten-kürzlich-benutzte-Bits für jeden einer Mehrzahl von Zwischenspeicher-Zeile-Sätzen in dem Anweisungs-Zwischenspeicher, Bestimmen eines kürzlichst-benutzten-Weges in einem designierten Zwischenspeicher-Zeile-Satz der Mehrzahl von Zwischenspeicher-Zeile-Sätzen basierend auf den am-wenigsten-kürzlich-benutzten-Bits für die designierte Zwischenspeicher-Zeile, Nachschauen, in dem Kennzeichen-Feld, nach Kennzeichen für einen oder mehrere Wege in dem designierten Zwischenspeicher-Zeile-Satz, Nachschauen, in dem Daten-Feld, nach Daten, welche in dem kürzlichst-benutzten Weg in dem designierten Zwischenspeicher-Zeile-Satz gespeichert sind, und wenn es einen Zwischenspeicher-Treffer in dem kürzlichst-benutzten Weg gibt, Abrufen der Daten, welche in dem kürzlichst-benutzten Weg gespeichert sind, von dem Daten-Feld.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • 1 zeigt eine Ausführungsform eines Mikroprozessors eines Rechengeräts gemäß der vorliegenden Offenbarung.
  • 2 zeigt eine Ausführungsform einer Computer-Verarbeitungs-Pipeline gemäß der vorliegenden Offenbarung.
  • 3 zeigt schematisch einen Teil einer Ausführungsform eines Anweisungs-Zwischenspeichers.
  • 4 zeigt ein Kodieren (encoding) von am-wenigsten-kürzlich-benutzten-Bits, welches einen am wenigsten-häufig-benutzten Weg in einem Zwischenspeicher-Zeilen-Satz eines Anweisungs-Zwischenspeichers identifiziert.
  • 5 zeigt ein Kodieren von am-wenigsten-kürzlich-benutzten-Bits, welches einen kürzlichst-benutzten Weg in einem Zwischenspeicher-Zeilen-Satz eines Anweisungs-Zwischenspeichers identifiziert.
  • 6 zeigt eine Ausführungsform eines Verfahrens zum Steuern eines Anweisungs-Zwischenspeichers.
  • 7 zeigt eine Zeitlinie einer beispielhaften Anweisungs-Zwischenspeicher-Operation gemäß der vorliegenden Offenbarung.
  • DETAILLIERTE BESCHREIBUNG
  • Die vorliegende Diskussion führt neue Systeme und Verfahren zum Steuern eines Anweisungs-Zwischenspeichers eines Mikroprozessors in solch einer Weise, dass ein Energieverbrauch vermindert ist, ohne signifikant eine Performanz des Mikroprozessors zu vermindern, aus. Insbesondere betrifft die vorliegende Diskussion ein Optimieren einer Steuerung eines Anweisungs-Zwischenspeichers, indem ein kürzlichst-benutzter (MRU) Weg oder Weise (way) (oder Adresse) von einem Satz von Wegen oder Weisen in dem Anweisungs-Zwischenspeicher, welcher in einer Anweisungs-Hol-Operation (instruction fetch) spezifiziert ist, bestimmt wird. Die Information über den MRU-Weg oder -Weise wird benutzt, um effizient auf den Anweisungs-Zwischenspeicher dadurch zuzugreifen, dass nur die MRU-Weise (MRU way) aktiviert ist und nicht die anderen Weisen oder Wege in dem Zwischenspeicher-Zeile-Satz aktiviert werden, um Daten abzurufen, welche bei dem MRU-Weg gespeichert sind. Wenn es einen Zwischenspeicher-Treffer bei dem MRU-Weg bzw. der MRU-Weise gibt, kann auf diese Weise die Menge von Energie, welche verbraucht ist, um die Daten in dem Anweisungs-Zwischenspeicher nachzuschauen, relativ zu Implementierungen vermindert werden, wo alle Wege oder Weisen in einem Satz aktiviert sind, um Daten von einem einzelnen Weg oder von einer einzelnen Weise abzurufen. Außerdem kann die MRU-Weise bzw. der MRU-Weg parallel mit den Kennzeichen oder Tags (tags) eines Zwischenspeicher-Zeilen-Satzes nachgeschaut werden, um schnellere Performanz relativ zu einem seriellen Zugang bereitzustellen.
  • Auf der anderen Seite sind dann, wenn es einen Treffer in einem der Wege in dem Satz anders als der MRU-Weg gibt, die Daten dann nicht verfügbar aufgrund der begrenzten Aktivierung des MRU-Weges und ein anderer Weg bzw. eine andere Weise in dem Satz wird nachfolgend aktiviert, um die Daten abzurufen. Dieses Wiederholungsspiel des Zwischenspeicher-Nachschauens vermindert im Allgemeinen eine Performanz, da es effektiv die Anweisungs-Zwischenspeicher-Treffer-Wartezeit erhöht. Die Häufigkeit dieses Ereignis-Typs ist jedoch selten genug, dass die Gesamt-Energieersparnis die geringere Verminderung in Performanz aufwiegt, verglichen mit dem parallelen Nachschau-Zugang. Wenn dieser Ereignis-Typ passiert, ist die Performanz ähnlich zu dem seriellen Nachschau-Zugang.
  • Wenn es keinen Treffer von irgendeiner Weise oder irgendeinem Weg in dem Satz gibt (d. h. ein Zwischenspeicher-Verfehlen), gibt es ferner keine Änderung des Verhaltens des Anweisungs-Zwischenspeichers relativ zu anderen Implementierungen, da die Daten von einem Höher-Niveau-Zwischenspeicher abgerufen werden müssen. Mit anderen Worten gibt es, wenn ein Zwischenspeicher-Verfehlen auftritt, keine Performanz-Strafe relativ zu dem Anweisung-Zwischenspeicher-Steuer-Zugang, wo alle Wege oder alle Weisen in einem Satz aktiviert werden, um die Daten abzurufen, und der Energieverbrauch ist noch geringer als der parallele Nachschau-Zugang.
  • 1 zeigt schematisch einen Mikroprozessor 100, welcher im Zusammenhang mit den Systemen und Verfahren, welche hierin beschrieben sind, eingesetzt werden kann. Der Mikroprozessor 100 umfasst verschiedentlich und/oder kommuniziert mit einer Speicher-Hierarchie 110, welche einen L1-Prozessor-Zwischenspeicher 112, einen L2-Prozessor-Zwischenspeicher 114, einen L3-Prozessor-Zwischenspeicher 116, Hauptspeicher 118 (z. B. einen oder mehrere DRAM-Chips), sekundären Speicher 120 (z. B. magnetische und/oder optische Speicher-Einheiten) und/oder tertiären Speicher 122 (z. B. eine Band-Farm) umfasst. Es wird verstanden werden, dass diese Speicher/Sicherungs-Komponenten in ansteigender Ordnung von Zugriffs-Zeit und Kapazität aufgelistet sind, obwohl es mögliche Ausnahmen gibt. Eine Speicher-Steuerung 124 handhabt das Protokoll und stellt die Signal-Schnittstelle bereit, welche von Hauptspeicher 118 erfordert ist, und typischerweise um Speicher-Zugriffe zu planen (schedule). Die Speicher-Steuerung kann auf einem Prozessor-Die oder auf einem separaten Die implementiert sein. Es ist zu verstehen, dass die oben bereitgestellte Speicher-Hierarchie nicht begrenzend ist und dass andere Speicher-Hierarchien benutzt werden können, ohne von dem Geltungsbereich dieser Offenbarung abzuweichen. Die gezeigte Speicher-Hierarchie ist eine beispielhafte Illustration und es wird verstanden, dass andere Hierarchien eingesetzt werden können, ohne von dem Geist der vorliegenden Offenbarung abzuweichen.
  • Der Mikroprozessor 100 umfasst Hol-Logik 126, Dekodier-Logik 128, Ausführungs-Logik 130, mem-Logik 132 und Rückschreib-(write back)-Logik 134. Hol-Logik 126 ruft Anweisungen von der Speicher-Hierarchie 110 ab (typischerweise von dem dedizierten L1-Anweisungs-Zwischenspeicher, welcher durch L2-L3-Zwischenspeicher und Hauptspeicher unterstützt oder abgesichert ist), zur Speicherung in einem Anweisungs-Zwischenspeicher 216 (in 2 gezeigt). Der Anweisungs-Zwischenspeicher 216 kann gemäß Systemen und Verfahren, welche hierin beschrieben sind, gesteuert werden, um Energieverbrauch mittels des Mikroprozessors 100 zu reduzieren, wenn Anweisungs-Hol-Operationen durchgeführt werden.
  • Dekodier-Logik 128 dekodiert geholte Anweisungen, z. B. dadurch, dass Opcodes, Operanden und Adressierungsmoden geparst bzw. analysiert werden. Auf ein Parsen hin werden die Anweisungen dann mittels der Ausführungs-Logik 130 ausgeführt. Für Operationen, welche ein Ergebnis erzeugen (z. B. im Gegensatz zu denjenigen, welche eine Verzweigung zu einer anderen Stelle in dem ausführenden Programm durchführen), schreibt die Rückschreib-Logik 134 das Ergebnis an eine geeignete Stelle, wie etwa in ein Prozessor-Register. In Lade-/Speicher-Architekturen führt mem-Logik 132 Lade- und Speicher-Operationen durch, wie etwa Laden eines Operanden von Haupt-Speicher in ein Prozessor-Register.
  • Es sollte verstanden werden, dass die obigen fünf Stufen etwas spezifisch sind für und in einer typischen reduzierter-Anweisungs-Satz-Rechen-(RISC)-Implementierung umfasst sind. Im Allgemeinen kann ein Mikroprozessor Hol-, Dekodier- und Ausführungs-Logik umfassen, wobei mem- und Rückschreib-Funktionalität mittels der Ausführungs-Logik ausgeführt ist. Die vorliegende Offenbarung ist auf diese und andere Mikroprozessor-Implementierungen gleich anwendbar.
  • In den beschriebenen Beispielen können Anweisungen eine zu einer Zeit geholt und ausgeführt werden, möglicherweise mehrere Taktzyklen erfordernd. Während dieser Zeit können signifikante Teile des Daten-Pfades unbenutzt sein. Zusätzlich zu oder anstatt eines Einzel-Anweisungs-Holens können Zuvor-Holen-Verfahren benutzt werden, um Performanz zu verbessern und Warte-Flaschenhälse zu vermeiden, welche mit Lese- und Speicher-Operationen assoziiert sind (d. h. das Lesen von Anweisungen und das Laden solcher Anweisungen in Prozessor-Register und/oder Ausführungs-Queue). Außerdem können mehrere Anweisungen bei einer gegebenen Zeit geholt werden, um Performanz zu verbessern.
  • Um höhere Performanz zu erreichen, können exemplarische Mikroprozessoren in einer Pipeline betrieben werden (pipelined), um einen Anweisung-Niveau-Parallelismus auszunutzen und effektiver den Daten-Pfad zu nutzen, so dass es mehrere Anweisungen in verschiedenen Stadien oder Stufen von Ausführung bei derselben Zeit gibt. 2 zeigt eine Ausführungsform einer Verarbeitungs-Pipeline 200 gemäß der vorliegenden Beschreibung.
  • Die Verarbeitungs-Pipeline 200 umfasst z. B. fünf Stufen:
    • • Anweisung-Holen (IF) 202
    • • Anweisung-Dekodieren (ID) 204;
    • • Ausführen (EX) 206;
    • • Speichern (MEM) 208;
    • • Rückschreiben (WB) 210.
  • In der IF-Stufe 202 wird eine Anweisung zur Ausführung in der Verarbeitungs-Pipeline 200 geholt. Ferner wird in der ID-Stufe 204 die vorher geholte Anweisung dekodiert und Register-Quell-Operanden werden von der Dekodier-Logik einschließlich einer Registerdatei gelesen. In der EX-Stufe 206 wird Ausführungs-Logik benutzt, um entweder ein Ergebnis zu berechnen (z. B. für eine „ADD”-Anweisung), die effektive Adresse für eine Speicher-Operation zu berechnen (z. B. ein „Laden” oder „Speichern”), oder eine Verzweigungs-Ziel-Adresse zu berechnen (z. B. für eine „Verzweigungs”-Anweisung), wo die Verarbeitungs-Pipeline 200 ihre nächste Anweisung holen sollte, wenn eine Verzweigung genommen wird. In der MEM-Stufe 208 greifen Lade- und Speicher-Anweisungen auf den Daten-Speicher (oder Zwischenspeicher) zu. Während der WB-Stufe 210 schreiben irgendwelche Anweisungen mit einer Register-Destination-Operation (z. B. „Addiere” oder „Speichere”) ihr Ergebnis auf eine Registerdatei (nicht gezeigt). Somit kann eine Anweisung Ergebnisse zurück auf ein internes Register schreiben, während eine andere Anweisung Daten liest oder schreibt, wobei die unmittelbar folgende Anweisung eine Operation ausführt und wobei die dieser folgende Anweisung Register-Operanden abruft, während noch eine andere Anweisung geholt wird.
  • Mit Hinwendung spezifisch auf die IF-Stufe 202 konzentriert sich die vorliegende Diskussion auf ein Steuern eines Anweisungs-Zwischenspeichers 216 während einer Anweisung-Holen-Operation. Die IF-Stufe 202 umfasst einen Programm-Zähler 212, welcher eine Speicher-Adresse einer Anweisung, welche in einer Anweisungs-Sequenz der Verarbeitungs-Pipeline 200 auszuführen ist, nachverfolgt (keeps track). Der Programm-Zähler 212 sendet eine Adresse einer auszuführenden Anweisung an einen Anweisungs-Speicher 214. Der Anweisungs-Speicher 214 umfasst einen Anweisungs-Zwischenspeicher 216 und eine Schnittstelle zu Höheres-Niveau-Speicher 226 (z. B. Höheres-Niveau-Zwischenspeicher und andere Speicher-Subsysteme). Man bemerke, dass der Anweisungs-Speicher in einer vereinfachten Form präsentiert ist und es wird geschätzt werden, dass der Anweisungs-Speicher zusätzlich oder alternativ verschiedene andere Typen von Speicher umfassen kann.
  • Der Anweisungs-Zwischenspeicher 216 agiert als ein Puffer-Speicher zwischen der Höheres-Niveau-Speicher-Schnittstelle 226 und den Stufen der Verarbeitungs-Pipeline 200. Wenn Anweisungen geholt werden, werden die Daten bei der Stelle durch den Programm-Zähler 212 referenziert, werden Stellen, welche mittels der Anweisungen angefordert sind, in den Anweisungs-Zwischenspeicher 216 kopiert, um durch die Verarbeitungs-Pipeline 200 gesendet zu werden. Wenn dieselben Anweisungs-Daten häufig zu einem Satz von Programm-Anweisungen benutzt werden, ergibt eine Speicherung dieser Anweisungen in dem Anweisungs-Zwischenspeicher 216 eine Erhöhung des Durchsatzes, weil Abruf von Anweisungen von Höheres-Niveau-Speicher über die Schnittstelle 226 vermindert ist. Wenn Daten für eine Anweisung nicht in dem Anweisungs-Zwischenspeicher 216 gespeichert sind, wird auf Höheres-Niveau-Speicher über die Schnittstelle 226 zugegriffen, um die Daten abzurufen.
  • 3 zeigt einen Teil des Anweisungs-Zwischenspeichers 216 und es wird hierauf für eine Diskussion des Anweisungs-Zwischenspeichers 216 bezogen. Der Anweisungs-Zwischenspeicher 216 umfasst einen Speicherraum, welcher in eine Mehrzahl von Zwischenspeicher-Zeilen (cache lines) geteilt ist, von welchen ein Beispiel bei 302 angezeigt ist. In einem besonderen Beispiel ist jede Zwischenspeicher-Zeile 64 Bytes. Die Mehrzahl von Zwischenspeicher-Zeilen ist logisch in eine Mehrzahl von Zwischenspeicher-Zeilen-Sätzen geteilt, von welchen ein Beispiel bei 304 angezeigt ist. In einem besonderen Beispiel umfasst der Anweisungs-Zwischenspeicher 512 Zwischenspeicher-Zeilen-Sätze, von denen vier (d. h. Setze N – N + 3) in 3 gezeigt sind. Es wird geschätzt werden, dass der Anweisungs-Zwischenspeicher irgendeine geeignete Anzahl von Zwischenspeicher-Zeilen-Sätzen umfassen kann, wobei jede der Zwischenspeicher-Zeilen eine geeignete Größe haben kann und wobei eine Anzahl von Bytes in jeder Zwischenspeicher-Zeile verschieden sein kann, ohne von dem Geltungsbereich der vorliegenden Offenbarung abzuweichen.
  • Die Anzahl von Zwischenspeicher-Zeilen in einem Zwischenspeicher-Zeilen-Satz kann die Anzahl von Stellen in dem Anweisungs-Zwischenspeicher definieren, auf welche irgendeine bestimmte Stelle in Hauptspeicher abgebildet werden kann. In dem illustrierten Beispiel umfasst der Anweisungs-Zwischenspeicher ein Vierwege-Satz assoziatives Feld, wobei jeder Satz von Zwischenspeicher-Zeile assoziativ ist und vier Wege oder Weisen umfasst, wo Anweisungs-Daten gespeichert werden können. Es wird geschätzt werden, dass der Anweisungs-Zwischenspeicher irgendeine geeignete Anzahl von Wegen oder Daten-Stellen in einem Zwischenspeicher-Zeile-Satz (z. B. zwei Wege, acht Wege, voll-assoziativ, etc.) umfassen kann, ohne von dem Geltungsbereich der vorliegenden Offenbarung abzuweichen.
  • Jede Zwischenspeicher-Zeile des Anweisungs-Zwischenspeichers 216 ist in verschiedene Bit-Felder geteilt, welche verschiedene Information bereitstellen. Insbesondere umfasst jede Zwischenspeicher-Zeile des Anweisungs-Zwischenspeichers 216 am-wenigsten-kürzlich-benutzte-(LRU)-Bits 306, Kennzeichen-Bits 308 und Daten-Bits 310. Die LRU-Bits 306 zeigen einen am-wenigsten-kürzlich-benutzten-(oder zugegriffenen)Weg oder Weise in einem Zwischenspeicher-Zeile-Satz an. Die Kennzeichen-Bits 308 identifizieren einen designierten Weg oder Weise, wo eine der Adresse entsprechende Anweisung gespeichert ist. Die Daten-Bits 310 speichern die Anweisungs-Daten. In dem illustrierten Beispiel sind die Daten-Bits 310 jeder Zwischenspeicher-Zeile in einer niedrige Hälfte und eine obere Hälfte geteilt, weil jedes Anweisungs-Holen-Lesen des Anweisungs-Zwischenspeichers eine Hälfte einer Zwischenspeicher-Zeile von Daten abruft, wenn es einen Treffer gibt. Es wird geschätzt werden, dass irgendeine geeignete Menge von Daten während eines Anweisungs-Holen-Lesen abgerufen werden kann, ohne von dem Geltungsbereich der vorliegenden Offenbarung abzuweisen.
  • Die verschiedenen Bit-Felder von jeder der Zwischenspeicher-Zeilen sind in verschiedene Felder organisiert, welche mittels einer Zwischenspeicher-Steuerung 224 gesteuert werden. Insbesondere umfasst der Anweisungs-Zwischenspeicher 216 ein LRU-Feld 218, ein Kennzeichen-Feld 220 und ein Daten-Feld 222. Das LRU-Feld 218 umfasst die LRU-Bits 306 für jeden Zwischenspeicher-Zeilen-Satz in dem Anweisungs-Zwischenspeicher 216. Das Kennzeichen-Feld 220 umfasst die Kennzeichen-Bits 308 für jede Zwischenspeicher-Zeile in dem Anweisungs-Zwischenspeicher 216. Das Daten-Feld 222 umfasst die Daten-Bits 310 für jede Zwischenspeicher-Zeile in dem Anweisungs-Zwischenspeicher 216.
  • Die Zwischenspeicher-Steuerung 224 ist konfiguriert, irgendeine designierte Stelle in irgendeinem des LRU-Feldes 218, des Kennzeichen-Feldes 220 und/oder des Daten-Feldes 222 nachzuschauen (a. k. a., zuzugreifen, oder zu aktivieren), die entsprechenden Bits abzurufen, durch eine Anweisungs-Holen-Operation hindurch. Es wird geschätzt werden, dass der Anweisungs-Zwischenspeicher in vereinfachter Form bereitgestellt ist und in einigen Implementierungen kann der Anweisungs-Zwischenspeicher alternative oder zusätzliche Feld-Strukturen umfassen, welche zusätzliche Daten halten, ohne von dem Geltungsbereich der vorliegenden Offenbarung abzuweichen.
  • Bei einem hohen Niveau, während einer Anweisungs-Holen-Operation, wenn der Programm-Zähler 212 eine Anweisungs-Holen-Anfrage initiiert, bestimmt die Zwischenspeicher-Steuerung 224 einen Zwischenspeicher-Zeilen-Satz, wo eine Anweisung gespeichert werden kann, basierend auf der Adresse, welche von dem Programm-Zähler 212 empfangen ist. In einem Beispiel aktiviert die Zwischenspeicher-Steuerung 224 alle vier Wege oder Weisen des Kennzeichen-Feldes 220 und alle der Wege oder Weisen des Daten-Feldes 222 für den Zwischenspeicher-Zeilen-Satz, um zu bestimmen, ob es einen Treffer oder ein Verfehlen in dem Zwischenspeicher-Zeilen-Satz gibt. Man bemerke, dass in einigen Implementierungen die Zwischenspeicher-Steuerung 224 das Kennzeichen-Feld 220 und das Daten-Feld 222 parallel aktiviert, um zu bestimmen, ob es einen Treffer gibt und um Anweisungs-Daten abzurufen, wenn es einen Treffer zur selben Zeit gibt. Für Zwischenspeicher-Treffer gibt die Zwischenspeicher-Steuerung 224 die Anweisungs-Daten von dem Anweisungs-Zwischenspeicher 216 an ein Register in der ID-Stufe 204 der Verarbeitungs-Pipeline 200 aus. In nachfolgenden Taktzyklen nach einem Zwischenspeicher-Treffer holt die Zwischenspeicher-Steuerung 224 Anweisungen von sequentiellen Einträgen in dem Anweisungs-Zwischenspeicher, bis ein Pipeline-Anhalten auftritt oder bis es eine Umleitung aufgrund einer Verzweigung oder eines Ereignisses gibt.
  • Für Zwischenspeicher-Verfehlen wird die Anweisung von dem Hauptspeicher 226 abgerufen und in eine Zwischenspeicher-Zeile des Anweisungs-Zwischenspeichers 216 platziert. Die Zwischenspeicher-Steuerung 224 setzt die LRU-Bits 306 des spezifizierten Zwischenspeicher-Zeilen-Satzes ein, um einen Weg oder eine Weise zur Ausschließung (eviction) auszuwählen, so dass die von dem Hauptspeicher 226 abgerufene Anweisungen in dem Anweisungs-Zwischenspeicher 216 gespeichert werden kann. Zum Beispiel kann der am-wenigsten-kürzlich-benutzte-Weg oder Weise, wie mittels der LRU-Bits 306 angezeigt, zur Ausschließung ausgewählt werden, so dass die angefragte Anweisung an seinem Platz gespeichert werden kann.
  • 4 zeigt ein Beispiel eines Kodierens 400 von LRU-Bits, welches mittels der Zwischenspeicher-Steuerung 224 benutzt ist, um einen am-wenigsten-kürzlich-benutzten-Weg oder Weise in einem Zwischenspeicher-Zeilen-Satz zu identifizieren. Der Kodierungs- oder Pseudo-LRU-Algorithmus 400 setzt einen 3-Bit-Vektor ein, um nachzuverfolgen, welcher von vier Wegen oder Weisen in einem Zwischenspeicher-Zeilen-Satz am-wenigsten-kürzlich benutzt ist (least recently used). Zum Beispiel aktualisiert die Zwischenspeicher-Steuerung 224 die LRU-Bits in dem Kodieren 400 bei Lesen des Anweisungs-Zwischenspeichers 216, welches eines der Wege in der folgenden Weise traf. Das L[0]-Bit und entweder L[1]- oder L[2]-Bits zeigen weg von dem Weg oder der Weise, welche kürzlichst benutzt wurde. Das andere L[1]- oder L[2]-Bit ist ungeändert belassen. Wenn Weg 0 der am-wenigsten-kürzlich-benutzte Weg des Satzes ist, dann wird demgemäß das L[0]-Bit auf 0 gesetzt, das L[1]-Bit ist auf 0 gesetzt und das L[2]-Bit ist nicht in Erwägung gezogen. Wenn Weg 1 der amwenigsten-kürzlich-benutzte Weg-Satzes ist, dann wird das L[0]-Bit auf 0 gesetzt, das L[1]-Bit wird auf 1 gesetzt und das L[2]-Bit ist irrelevant. Wenn Weg 2 der am-wenigsten-kürzlich-benutzte Weg des Satzes ist, dann wird das L[0]-Bit auf 1 gesetzt, das L[1]-Bit ist irrelevant und das L[2]-Bit ist auf 0 gesetzt. Wenn Weg 3 der am-wenigsten-kürzlich-benutzte Weg des Satzes ist, dann wird das L[0]-Bit auf 1 gesetzt, das L[1]-Bit ist irrelevant und das L[2]-Bit wird auf 1 gesetzt. Die Cache-Steuerung 224 aktualisiert die LRU-Bits mit jedem Zwischenspeicher-Treffer, um den am-wenigsten-kürzlich-benutzten Weg zu aktualisieren. Ferner liest die Zwischenspeicher-Steuerung 224 die LRU-Bits mit jedem Zwischenspeicher-Verfehlen, um zu bestimmen, welcher Weg zur Ausschließung auszuwählen ist.
  • Ferner werden die LRU-Bits in einer Steuer-Strategie zum Vermindern von Energieverbrauch während der Operation des Anweisungs-Zwischenspeichers 216 eingesetzt. Die Steuer-Strategie erkennt, dass die Verarbeitungs-Pipeline 200 Ausführung von einigen Anweisungen häufig durch die Operation hindurch wiederholt. Aufgrund solch einer Wiederholung gibt es eine höhere Wahrscheinlichkeit, dass eine angefragte Anweisung in einem kürzlichst-benutzten Weg relativ zu anderen Weisen oder Wegen in dem Zwischenspeicher-Zeilen-Satz gespeichert ist. Demgemäß ist die Zwischenspeicher-Steuerung 224 konfiguriert, einen am kürzlichst-benutzten (MRU) Weg in einem designierten Zwischenspeicher-Zeilen-Satz basierend auf den LRU-Bits 306 zu bestimmen. Die Zwischenspeicher-Steuerung 224 benutzt den kürzlichst-benutzten Weg, um effizient auf den Anweisungs-Zwischenspeicher 216 zuzugreifen, wenn sequentielle Einträge geholt werden. Wenn sequentiell eine nächste Anweisung geholt wird, ist z. B. die Zwischenspeicher-Steuerung 224 konfiguriert, eine Stelle in dem Daten-Feld 222 zu aktivieren, welche dem kürzlichst-benutzten Weg oder Weise entspricht, im Gegensatz zum Aktivieren aller Wege oder Weisen in dem Satz, um eine Anweisung abzurufen. In dieser Weise ist die Menge von Energie, welche verbraucht ist, um Daten in dem Anweisungs-Zwischenspeicher 216 nachzuschauen, relativ zu anderen Zugängen reduziert, welche alle Wege oder Weisen in einem Satz aktivieren, um Daten von einem einzelnen Weg oder einer einzelnen Weise abzurufen.
  • 5 zeigt ein Beispiel-Kodieren 500 von MRU-Bits für einen Zwischenspeicher-Zeilen-Satz, welcher auf den LRU-Bits des Zwischenspeicher-Zeilen-Satzes basiert. Das Kodieren 500 ist mittels der Zwischenspeicher-Steuerung 224 benutzt, um den kürzlichst-benutzten Weg in dem Zwischenspeicher-Zeilen-Satz nachzuverfolgen (track). Insbesondere ist das MRU-Kodieren 500 dadurch bestimmt, dass die Bits in dem LRU-Kodieren 400 geflippt werden. Mit anderen Worten können die LRU-Bits 306 benutzt werden, um sowohl einen am kürzlichst-benutzten Weg und einen am-wenigsten-kürzlich-benutzten-Weg für einen designierten Zwischenspeicher-Zeilen-Satz zu bestimmen. Gemäß dem MRU-Kodieren 500, wenn Weg 0 der am kürzlichst-benutzte Weg des Satzes ist, dann wird das L[0]-Bit auf 1 gesetzt, das L[1]-Bit ist auf 1 gesetzt und das L[2]-Bit ist irrelevant oder wird nicht in Erwägung gezogen. Wenn Weg 1 der am kürzlichst-benutzte Weg des Satzes ist, dann wird das L[0]-Bit auf 1 gesetzt, das L[1]-Bit ist auf 0 gesetzt und das L[2]-Bit ist irrelevant. Wenn Weg 2 der kürzlichst-benutzte Weg des Satzes ist, dann wird das L[0]-Bit auf 0 gesetzt, das L[1]-Bit ist irrelevant und das L[2]-Bit ist auf 1 gesetzt. Wenn Weg 3 der kürzlichst-benutzte-Weg des Satzes ist, dann wird das L[0]-Bit auf 0 gesetzt, das L[1]-Bit ist irrelevant und das L[2]-Bit ist auf 0 gesetzt. Das MRU-Kodieren 500 stellt ein Beispiel bereit, wie die Zwischenspeicher-Steuerung 224 einen kürzlichst-benutzten Weg in einem Zwischenspeicher-Zeilen-Satz bestimmen kann. Es wird geschätzt werden, dass die Zwischenspeicher-Steuerung einen kürzlichst-benutzten Weg in einem Zwischenspeicher-Zeilen-Satz in irgendeiner geeigneten Weise bestimmen kann, ohne von dem Geltungsbereich der vorliegenden Offenbarung abzuweichen.
  • In einer Beispiel-Implementierung ist die Zwischenspeicher-Steuerung 224 konfiguriert, LRU-Bits für vier aufeinander folgende Sätze von Zwischenspeicher-Zeilen in einer einzelnen Lese-Operation des LRU-Feldes 218 in einem Taktzyklus nachzuschauen. Mit anderen Worten beschreiben die LRU-Bits Gruppen von vier Zwischenspeicher-Zeilen-Sätzen. Die Anzahl von Zwischenspeicher-Zeilen-Sätzen, welche der Lese-Operation entspricht, ist auf der Implementierung des Anweisungs-Zwischenspeichers basiert und insbesondere auf der Anzahl von LRU-Bits, welche benutzt sind, um die Weisen bzw. Wege in einem Zwischenspeicher-Zeilen-Satz und die Größe einer Zwischenspeicher-Zeile zu beschreiben. Es wird geschätzt werden, dass LRU-Bits für irgendeine geeignete Anzahl von Zwischenspeicher-Zeilen-Sätzen von einer einzelnen Lese-Operation zurückgegeben werden können, ohne von dem Geltungsbereich der vorliegenden Offenbarung abzuweichen.
  • In einem Beispiel ist die Zwischenspeicher-Steuerung 224 konfiguriert, die LRU-Bits parallel mit einem initialen Kennzeichen-(tag) und einem Daten-Nachschauen (z. B. welche nach einer Zurücklenkung aufgrund einer Verzweigungs-Operation durchgeführt werden) für eine Anweisung-Holen-Operation nachzuschauen. Man bemerke, dass die Anzahl von Taktzyklen für den LRU-Zugriff, welcher zu vollenden ist, basierend auf der Implementierung variiert. Unter der Annahme, dass das initiale Nachschauen nicht für einen finalen Satz in dem assoziierten LRU-Eintrag war und dass es keine nachfolgende Umleitung (redirection) gab, dann sind zwei Taktzyklen nach dem initialen Zugriff die LRU-Bits für die Zwischenspeicher-Steuerung 224 verfügbar. Die Zwischenspeicher-Steuerung 224 ist konfiguriert, den kürzlichst-benutzten Weg des Anweisungs-Nachschauens (oder -Zugriffs) zu bestimmen, was dabei ist zu beginnen, und nachfolgende Zugriffe basierend auf den LRU-Bits. Für diese Zugriffe ist die Zwischenspeicher-Steuerung 224 konfiguriert, Daten nachzuschauen, welche in dem kürzlichst-benutzten Weg in dem Daten-Feld 222 gespeichert sind, um die Anweisung zu holen. Dementsprechend ist die Zwischenspeicher-Steuerung 224 konfiguriert, nicht irgendwelche anderen Wege oder Weisen in dem designierten Zwischenspeicher-Zeilen-Satz des Daten-Feldes 222 zu aktivieren. Mit anderen Worten ist nur der kürzlichst-benutzte Weg oder Weise des Daten-Feldes 222 aktiviert, um die Anweisung zu holen.
  • Ferner ist die Zwischenspeicher-Steuerung 224 konfiguriert, in dem Kennzeichen-Feld 220 Kennzeichen für alle Wege oder Weisen in dem designierten Zwischenspeicher-Zeilen-Satz nachzuschauen, um zu bestimmen, ob es einen Treffer in irgendeinem Weg des designierten Zwischenspeicher-Zeilen-Satzes gab. In einem Beispiel ist die Zwischenspeicher-Steuerung 224 konfiguriert, das Kennzeichen-Nachschauen und das kürzlichst-benutzter-Weg-Daten-Feld-Nachschauen parallel durchzuführen. Wenn es einen Treffer in dem am kürzlichst-benutzten Weg gibt, dann sind die Daten von dem aktivierten Daten-Feld verfügbar und die Zwischenspeicher-Steuerung 224 ist konfiguriert, die Daten auszugeben, welche in dem kürzlichst-benutzten Weg gespeichert sind. Wenn es einen Treffer in einem der Wege verschieden von dem kürzlichst-benutzten Weg gibt, dann sind die Daten nicht verfügbar aufgrund der begrenzten Aktivierung des Daten-Feldes 222 von nur dem kürzlichst-benutzten Weg. Nachfolgend ist die Zwischenspeicher-Steuerung 224 konfiguriert, die entsprechenden Teile des Kennzeichen-Feldes 220 und des Daten-Feldes 222 zu aktivieren, um alle Kennzeichen und Daten von allen Wegen oder Weisen in dem designierten Zwischenspeicher-Zeilen-Satz zu holen, um die Anweisung von der Weise oder dem Weg zu holen, welcher in dem Kennzeichen traf. Dieses Wiederholen des Zwischenspeicher-Nachschauens erniedrigt im Allgemeinen die Performanz, da es die Zwischenspeicher-Treffer-Wartezeit oder Latenz erhöht. Wenn es keinen Treffer in irgendeinem Weg oder in irgendeiner Weise in dem designierten Zwischenspeicher-Zeilen-Satz gibt, wird die Anweisung von dem Hauptspeicher 226 oder einem anderen Höheres-Niveau-Zwischenspeicher abgerufen.
  • In dieser Steuer-Strategie benutzt die Zwischenspeicher-Steuerung Information, welche von den LRU-Bits abgeleitet ist, um eine Stelle vorherzusagen, wo eine Anweisung gespeichert ist, und greift nur auf diese Stelle zu, um die Daten abzurufen, um Energieverbrauch zu vermindern. Insbesondere diktiert die Steuerungs-Strategie, dass der kürzlichst-benutzte-Weg in einem Zwischenspeicher-Zeilen-Satz die wahrscheinlichste Stelle für die zu speichernde Anweisung ist. Als solches aktiviert die Zwischenspeicher-Steuerung nur den kürzlichst-benutzten-Weg des Daten-Feldes, um die Daten abzurufen. Wenn die Vorhersage korrekt ist, ist der Energieverbrauch relativ zum Aktivieren aller Wege in einem Zwischenspeicher-Zeilen-Satz reduziert und es gibt keinen Performanz-Nachteil. Wenn die Vorhersage inkorrekt ist, dann ist ein zusätzlicher Zugriff erfordert, um die Daten abzurufen aufgrund der begrenzten Aktivierung des Daten-Feldes.
  • Man bemerke, dass in einigen Fällen die LRU-Bits vorher nachgeschaut werden, als wann die LRU-Bits anderenfalls für den Zweck eines Aktualisierens der LRU-Bits basierend auf einem Zwischenspeicher-Treffer nachgeschaut würden. In diesem Beispiel wird das LRU-Feld zwei Taktzyklen vor dem ersten sequentiellen Zugriff auf einen neuen LRU-Daten-Eintrag, wo die LRU-Bits benutzt würden, nachgeschaut. Man bemerke ferner, dass in diesem Beispiel Daten zwei Taktzyklen, nachdem ein Nachschauen mittels eines Zugreifens auf eines der Felder durchgeführt ist, verfügbar sind. Es wird geschätzt werden, dass die Verarbeitungs-Geschwindigkeit oder die Anzahl von Taktzyklen, um die Daten abzurufen, differieren kann, ohne von dem Geltungsbereich der vorliegenden Offenbarung abzuweichen.
  • 6 zeigt eine Ausführungsform eines Verfahrens 600 zum Steuern eines Anweisungs-Zwischenspeichers. In einem Beispiel ist die Zwischenspeicher-Steuerung 224, welche in 2 gezeigt ist, konfiguriert, das Verfahren 600 durchzuführen, um eine Operation des Anweisungs-Zwischenspeichers 216 zu steuern, einschließlich eines Zugreifens auf das LRU-Feld 218, das Kennzeichen-Feld 220 und das Daten-Feld 222. Bei 602 umfasst das Verfahren 600 Nachschauen, in dem am-wenigsten-kürzlich-benutzten-Bit-Feld, am-wenigsten-kürzlich-benutzte-Bits für jeden einer Mehrzahl von Zwischenspeicher-Zeilen-Sätzen in dem Anweisungs-Zwischenspeicher. Nachschauen der LRU-Bits umfasst ein Aktivieren des Teils des LRU-Feldes, welcher der Mehrzahl von Zwischenspeicher-Zeilen-Sätzen entspricht. In einem Beispiel repräsentiert die Mehrzahl von Zwischenspeicher-Zeilen-Sätzen sequentielle Einträge in dem Anweisungs-Zwischenspeicher. Ein designierter Satz in der Sequenz von Einträgen kann mittels einer Adresse spezifiziert sein, welche von einer Anweisungs-Hol-Operation bereitgestellt ist. In einem besonderen Beispiel umfasst ein Nachschauen der am-wenigsten-kürzlich-benutzten-Bits ein Nachschauen von am wenisten-kürzlich-benutzten-Bits für jeden der vier sequentiellen Zwischenspeicher-Zeilen-Sätze in dem Anweisungs-Zwischenspeicher. Die LRU-Bits für sequentielle Zwischenspeicher-Zeilen-Sätze können nachgeschaut werden, bevor eine Anweisung von einem der Zwischenspeicher-Zeilen-Sätze geholt wird, um den Weg oder die Weise (way) in dem Satz vorherzusagen, wo die Anweisung gespeichert ist.
  • Bei 604 umfasst das Verfahren 600 Bestimmen eines kürzlichst-benutzten-Weges in einem designierten Zwischenspeicher-Zeilen-Satz der Mehrzahl von Zwischenspeicher-Zeilen-Sätzen basierend auf den am-wenigsten-kürzlich-benutzten-Bits für die designierte Zwischenspeicher-Zeile. In einem Beispiel ist der designierte Zwischenspeicher-Zeilen-Satz der Satz, in welchem eine Anweisung, welche momentan geholt wird, gespeichert ist. In einem Beispiel kann der MRU-Weg unter Benutzung eines 3-Bit-Vektors bestimmt werden, um nachzuverfolgen (track), welcher Weg kürzlichst benutzt ist, wie oben mit Bezug auf Kodieren 500 und 5 diskutiert ist.
  • Bei 606 umfasst das Verfahren 600 in einem Beispiel Nachschauen in dem Kennzeichen-Feld, von Kennzeichen (tags) für alle Wege oder Weisen in dem designierten Zwischenspeicher-Zeilen-Satz. Alle Kennzeichen in dem Zwischenspeicher-Zeilen-Satz werden aktiviert, um zu bestimmen, ob es einen Zwischenspeicher-Treffer in irgendeinem der Wege in dem designierten Zwischenspeicher-Zeilen-Satz gibt.
  • Alternativ umfasst in einem anderen Beispiel das Verfahren 600 ein Nachschauen in dem Kennzeichen-Feld, des kürzlichst-benutzten Weges in dem designierten Zwischenspeicher-Zeilen-Satz. Wenn es einen Treffer gibt, gibt es keine Performanz-Nachteile. Wenn es ein Verfehlen gibt, weiß jedoch die Zwischenspeicher-Steuerung nicht, ob die Daten in dem Anweisungs-Zwischenspeicher in einem anderen Weg sind oder überhaupt nicht in dem Anweisungs-Zwischenspeicher. So kann nach einem Verfehlen ein zweites Nachschauen des Kennzeichen-Feldes einschließlich aller Wege durchgeführt werden, um zu bestimmen, ob die Daten in einem anderen Weg sind oder ob sie von einem Höherer-Level-Speicher abgerufen werden müssen.
  • Bei 608 umfasst das Verfahren 600 Nachschauen in dem Daten-Feld, von Daten, welche in der kürzlichst-genutzten-Weise oder in dem kürzlichst-benutzten-Weg in dem designierten Zwischenspeicher-Zeilen-Satz gespeichert sind. Insbesondere umfasst Nachschauen in dem Daten-Feld von Daten, welche in dem kürzlichst-benutzten-Weg in dem designierten Zwischenspeicher-Zeilen-Satz gespeichert sind, Aktivieren des kürzlichst-benutzten-Weges des Daten-Feldes und Nichtaktivieren irgendwelcher anderen Wege des Daten-Feldes in dem designierten Zwischenspeicher-Zeilen-Satz. Dadurch, dass die anderen Wege des Daten-Feldes in dem designierten Zwischenspeicher-Zeilen-Satz nicht aktiviert werden, kann ein Energieverbrauch während einer Anweisung-Holen-Operation relativ zu einem Zugang vermindert werden, wo alle Wege aktiviert werden, um Daten von einem einzelnen Weg abzurufen.
  • In einem Beispiel werden das Kennzeichen-Nachschauen und das Daten-Nachschauen parallel durchgeführt. Indem diese Operationen parallel durchgeführt werden, kann die Anweisungs-Holen-Operation schneller durchgeführt werden, um Verarbeitungs-Performanz relativ zu einem seriellen Zugang zu verbessern.
  • Man bemerke, dass Nachschauen, in dem am-wenigsten-kürzlich-benutzten-Bit-Feld, von am-wenigsten-kürzlich-benutzten-Bits für jeden der Mehrzahl von Zwischenspeicher-Zeilen-Sätzen vor Nachschauen in dem Kennzeichen-Feld von den Kennzeichen für alle Wege in dem Zwischenspeicher-Zeilen-Satz und vor Nachschauen, in dem Daten-Feld, von den Daten, welche in dem kürzlichst-benutzten-Weg gespeichert sind, durchgeführt ist. Indem die LRU-Bits vor dem Kennzeichen- und Daten-Nachschauen nachgeschaut werden, kann eine Vorhersage gemacht werden, wo die Anweisung gespeichert ist (d. h. der MRU-Weg), so dass das Daten-Feld effizient aktiviert werden kann, um den Energieverbrauch zu vermindern.
  • In einem Beispiel ist das Nachschauen in dem am-wenigsten-kürzlich-benutzte-Bits-Feld von am-wenigsten-kürzlich-benutzten-Bits für jeden der Mehrzahl von Zwischenspeicher-Zeilen-Sätzen zwei Taktzyklen vor dem Nachschauen, in dem Kennzeichen-Feld, von dem Kennzeichen für alle Wege in dem designierten Zwischenspeicher-Zeilen-Satz und dem Nachschauen, in dem Daten-Feld, von den Daten, welche in der kürzlichst-benutzten-Weise gespeichert sind. Es wird geschätzt werden, dass die LRU-Bits irgendeine geeignete Anzahl von Taktzyklen vor dem Kennzeichen- und Daten-Nachschauen nachgeschaut werden können, ohne von dem Geltungsbereich der vorliegenden Offenbarung abzuweichen.
  • Bei 610 umfasst das Verfahren 600 Bestimmen, ob es einen Zwischenspeicher-Treffer in dem MRU-Weg gibt. Die Bestimmung kann basierend auf den Kennzeichen (tags) getroffen werden, welche für einen oder mehrere Wege des designierten Zwischenspeicher-Zeilen-Satzes nachgeschaut wurden. Wenn bestimmt ist, dass es einen Zwischenspeicher-Treffer in dem MRU-Weg gibt, bewegt sich das Verfahren 600 zu 612. Anderenfalls bewegt sich das Verfahren 600 zu 614.
  • Bei 612 gibt es einen Zwischenspeicher-Treffer in dem MRU-Weg und das Verfahren 600 umfasst Ausgeben der Daten, welche in dem kürzlichst-benutzten-Weg gespeichert sind, von dem Daten-Feld. Die Daten repräsentieren die Anweisung, welche mittels der Anweisungs-Holen-Operation angefragt ist. In einem Beispiel werden die Daten an eine Anweisung-Dekodier-Stufe einer Verarbeitungs-Pipeline ausgegeben.
  • Bei Schritt 614 umfasst das Verfahren 600 Bestimmen, ob es einen Zwischenspeicher-Treffer in irgendeinem anderen Weg neben dem MRU-Weg in dem designierten Zwischenspeicher-Zeilen-Satz gibt. Wenn bestimmt ist, dass es einen Zwischenspeicher-Treffer in irgendeinem anderen Weg neben dem MRU-Weg in dem designierten Zwischenspeicher-Zeilen-Satz gibt, bewegt sich das Verfahren 600 zu 618 und 620. Anderenfalls bewegt sich das Verfahren 600 zu 616.
  • Bei 616 umfasst das Verfahren Abrufen von Anweisungs-Daten von einem Höheres-Niveau-Zwischenspeicher oder einem anderen Speicher. In einem Beispiel werden die Daten von einem Höheres-Niveau-Zwischenspeicher oder einem anderen Speicher durch die Höheres-Niveau-Speicher-Schnittstelle 226 abgerufen.
  • Bei 618 umfasst das Verfahren Nachschauen in dem Kennzeichen-Feld, von Kennzeichen für alle Wege in dem designierten Zwischenspeicher-Zeilen-Satz. Die Kennzeichen werden nachgeschaut, um zu bestimmen, ob es noch einen Zwischenspeicher-Treffer in dem Zwischenspeicher-Zeilen-Satz gibt.
  • Bei 620 umfasst das Verfahren 600 Nachschauen, in dem Daten-Feld, von Daten, welche in allen Wegen des designierten Zwischenspeicher-Zeilen-Satzes gespeichert sind.
  • In einem Beispiel werden das Kennzeichen-Nachschauen und das Daten-Nachschauen während des Wiederholens parallel durchgeführt. Indem diese Operationen parallel durchgeführt werden, kann die Anweisung-Holen-Operation schneller durchgeführt werden, um eine Verarbeitungs-Performanz zu verbessern.
  • Bei Schritt 622 umfasst das Verfahren 600 Ausgeben der Daten von dem Treffer-Weg in dem designierten Zwischenspeicher-Zeilen-Satz.
  • 7 zeigt eine Zeitlinie oder Zeitverlauf (timeline) einer Beispiel-Anweisungs-Zwischenspeicher-Operation gemäß der vorliegenden Offenbarung. Der Zeitverlauf zeigt eine Beispiel-Pipeline von Kennzeichen-, Daten- und LRU-Feld-Zugriffen während Anweisungs-Holen-Operationen. In diesem Beispiel wird aus Zwecken von Einfachheit und Klarheit angenommen, dass jedes Mal, wenn ein kürzlichst-benutzten-Weg aktiviert wird, es einen Zwischenspeicher-Treffer gibt. Ferner ruft jedes Anweisung-Holen-Lesen des Zwischenspeichers eine Hälfte einer Zwischenspeicher-Zeile von Daten ab, wenn es einen Treffer gibt. In dem Zeitverlauf schreitet die Zeit von links nach rechts fort und nachfolgende Anweisungs-Zwischenspeicher-Zugriffe schreiten von oben nach unten fort, obwohl einige Zugriffe parallel durchgeführt werden können.
  • In dem ersten Taktzyklus hat eine Umleitung aufgrund einer Verzweigung stattgefunden, was zu einem Anweisungs-Holen des Anweisungs-Zwischenspeichers führt. In dem zweiten Taktzyklus werden alle Kennzeichen für den designierten Zwischenspeicher-Zeilen-Satz (Satz 2) in dem Kennzeichen-Feld nachgesehen, alle niedrigen Daten-Wege für den Zwischenspeicher-Zeilen-Satz (Satz 2) werden in dem Daten-Feld nachgesehen, und die LRU-Bits für eine Gruppe von vier aufeinander folgenden Zwischenspeicher-Zeilen-Sätzen werden in dem LRU-Feld nachgeschaut einschließlich des momentanen Zwischenspeicher-Zeile-Satzes. Man bemerke, dass, obwohl LRU-Bits für eine Gruppe von vier aufeinander folgenden Zwischenspeicher-Zeilen-Sätzen nachgeschaut werden, der designierte Zwischenspeicher-Zeilen-Satz, von dem die momentane Anweisung geholt wird, nicht notwendiger Weise der erste Zwischenspeicher-Zeilen-Satz in der Gruppe sein muss. In dem illustrierten Beispiel ist der designierte Zwischenspeicher-Zeilen-Satz der dritte Zwischenspeicher-Zeilen-Satz in der Gruppe (d. h. Satz 2 aus Sätzen 0–3). Die Kennzeichen-, Daten- und LRU-Nachschauen (look ups) werden parallel in dem zweiten Taktzyklus durchgeführt. Wenn eine Umleitung aufgrund einer Verzweigung zu einem Holen von dem Anweisungs-Zwischenspeicher führt, werden alle Wege der Daten- und Kennzeichen-Felder aktiviert, um zu bestimmen, ob es einen Treffer in irgendeinem der Wege in dem Zwischenspeicher-Zeilen-Satz gab, und um die korrekten Daten zurück zu geben, wenn es einen Zwischenspeicher-Treffer gab. Das LRU-Feld wird aktiviert, um die MRU-Wege in den nächsten vier sequentiellen Zwischenspeicher-Zeilen-Sätzen zu bestimmen.
  • In diesem Beispiel sind Daten zwei Taktzyklen, nachdem ein Nachschauen durchgeführt ist, verfügbar. Während die Daten-Zugriffe von dem zweiten Taktzyklus verarbeitet werden, wird das nächste Anweisungs-Holen durchgeführt. Insbesondere werden in dem dritten Taktzyklus alle Kennzeichen und die Hoch-Daten-Wege (high data ways) für Satz 2 nachgeschaut. Alle Kennzeichen- und Hoch-Daten-Feld-Stellen werden nachgeschaut, weil die MRU-Daten noch nicht von dem initialen Nachschauen des LRU-Feldes verfügbar sind, um ein zielgerichtetes Nachschauen des MRU-Weges durchzuführen.
  • In dem vierten Taktzyklus sind die Anweisungs-Daten und die LRU-Daten von den Zugriffen, welche in dem zweiten Taktzyklus durchgeführt sind, verfügbar. Da die LRU-Bits verfügbar sind, kann der MRU-Weg des Anweisungs-Holens, welche dabei ist zu beginnen, bestimmt werden, sowie die MRU-Wege für nachfolgende Zugriffe, welche dieselben LRU-Daten benutzen (d. h. die äußeren Sätze in der Gruppe von vier sequentiellen Zwischenspeicher-Zeilen-Sätzen). Insbesondere wird nur der MRU-Niedrig-Daten-Weg (MRU low data way) des Daten-Feldes für den designierten Zwischenspeicher-Zeilen-Satz (Satz 3) aktiviert und die anderen Wege werden nicht aktiviert. Ferner sind alle Wege des Kennzeichen-Feldes noch aktiviert, um zu bestimmen, ob es einen Zwischenspeicher-Treffer in irgendeinem Weg von Satz 3 gab. Indem nur der MRU-Niedrig-Daten-Weg für Satz 3 zugegriffen wird, kann ein Energieverbrauch des Daten-Feld-Zugriffs bei keinem Performanz-Nachteil vermindert werden, wenn es einen Zwischenspeicher-Treffer gibt. Ferner werden die LRU-Bits für die nächsten vier Zwischenspeicher-Zeilen-Sätze (d. h. Sätze 4–7) in dem vierten Taktzyklus in Vorbereitung für gezielte Nachschauungen von MRU-Wegen von sequentiellen Anweisungs-Holen-Operationen nachgeschaut.
  • In dem fünften Taktzyklus wird die nächste Anweisung-Holen-Operation dadurch durchgeführt, dass alle Kennzeichen für Satz 3 in dem Kennzeichen-Feld nachgeschaut werden und indem nur der MRU-Hoch-Daten-Weg für Satz 3 in dem Daten-Feld nachgeschaut wird. Da der MRU-Hoch-Daten-Weg (MRU high data way) für Satz 3 von den LRU-Bits, welche in dem vierten Taktzyklus verfügbar gemacht wurden, bekannt ist, wird ein gezieltes Nachschauen des MRU-Hoch-Daten-Weg durchgeführt, um einen Energieverbrauch während des Anweisung-Holens zu vermindern. Ferner sind die Anweisungs-Daten von dem Anweisungs-Holen, welches in dem dritten Taktzyklus durchgeführt ist, für Propagation durch die Stufen weiter abwärts der Pipeline verfügbar.
  • In dem sechsten Taktzyklus wird das nächste sequentielle Anweisungs-Holen dadurch durchgeführt, dass alle Kennzeichen für Satz 4 in dem Kennzeichen-Feld nachgeschaut werden und dass nur der MRU-Niedrig-Daten-Weg für Satz 4 in dem Daten-Feld nachgeschaut wird. Da der MRU-Niedrig-Daten-Weg für Satz 4 von den LRU-Bits, welche in dem vierten Taktzyklus verfügbar gemacht wurden, bekannt ist, wird ein gezieltes Nachschauen des MRU-Niedrig-Daten-Weges durchgeführt, um Energieverbrauch während des Anweisung-Holens zu vermindern. Ferner sind die Anweisungs-Daten von dem Anweisungs-Holen, welches in dem vierten Taktzyklus durchgeführt wurde, für Propagation durch Stufen weiter abwärts der Pipeline verfügbar. Ferner erfolgt eine Umleitung in dem sechsten Taktzyklus auf eine andere Adresse.
  • In dem siebten Taktzyklus werden alle Kennzeichen für den designierten Zwischenspeicher-Zeilen-Satz (Satz 8) in dem Kennzeichen-Feld nachgeschaut, alle Niedrig-Daten-Wege für den Zwischenspeicher-Zeilen-Satz (Satz 8) werden in dem Daten-Feld nachgeschaut und die LRU-Bits für eine Gruppe von vier aufeinander folgenden Zwischenspeicher-Zeilen-Sätzen (Sätze 8–11) werden in dem LRU-Feld einschließlich des momentanen Zwischenspeicher-Zeilen-Satzes nachgeschaut. Die Daten, welche in dem siebten Taktzyklus nachgeschaut wurden, sind in dem neunten Taktzyklus verfügbar. Anweisungs-Holungen können sequentiell andauern, bis eine Umleitung (redirection) aufgrund einer Verzweigung auftritt.
  • Die in den vierten, fünften und sechsten Taktzyklen durchgeführten Nachschauungen, welche in 7 hervorgehoben sind, sind zielgerichtete Zugriffe der MRU-Daten-Wege. Die Energie, welche aufgrund dieser Zugriffe verbraucht ist, ist relativ zu Anweisungs-Zwischenspeicher-Steuer-Strategien vermindert, wo auf alle Daten-Wege zugegriffen wird, um eine Anweisung von einem einzelnen Daten-Weg zu holen. Aufgrund der Hoch-Wiederholungs-Natur von Anweisungs-Hol-Operationen während des Betriebes des Anweisungs-Zwischenspeichers dominiert der Energieverbrauch der Daten-Feld-Zugriffe während Anweisungs-Hol-Operationen den Gesamt-Anweisungs-Zwischenspeicher-Energieverbrauch. Indem der Anweisungs-Zwischenspeicher gemäß der hierin beschriebenen Energieverminderungs-Strategie gesteuert wird, kann der Energieverbrauch eines vollen CPU-Kernes relativ zu einer Implementierung vermindert werden, welche immer alle Wege des Daten-Feldes eines Anweisungs-Zwischenspeichers während Anweisungs-Hol-Operationen aktiviert.
  • Exemplarische Konzepte der vorliegenden Erfindung umfassen:
    Konzept 1. Verfahren zum Steuern eines Anweisungs-Zwischenspeichers einschließlich eines am-wenigsten-kürzlich-benutzten-Bits-Feldes, eines Kennzeichen-Feldes, und eines Daten-Feldes, aufweisend: Nachschauen, in dem am-wenigsten-kürzlich-benutzte-Bits-Feld, von am-wenigsten-kürzlich-benutzte-Bits für jeden einer Mehrzahl von Zwischenspeicher-Zeilen-Sätzen in dem Anweisungs-Zwischenspeicher, wobei am-wenigsten-kürzlich-benutzte-Bits für einen Zwischenspeicher-Zeilen-Satz einen am-wenigsten-kürzlich-benutzten-Weg in diesem Zwischenspeicher-Zeilen-Satz anzeigen; Bestimmen eines kürzlichst-benutzten-Weges in einem designierten Zwischenspeicher-Zeilen-Satz der Mehrzahl von Zwischenspeicher-Zeilen-Sätzen basierend auf den am-wenigsten-kürzlich-benutzten-Bits für die designierte Zwischenspeicher-Zeile; Nachschauen, in dem Kennzeichen-Feld, von Kennzeichen für einen oder mehr Wege in dem designierten Zwischenspeicher-Zeilen-Satz; Nachschauen, in dem Daten-Feld, von Daten, welche in dem kürzlichst-benutzten-Weg in dem designierten Zwischenspeicher-Zeilen-Satz gespeichert sind; und, wenn es einen Zwischenspeicher-Treffer in dem kürzlichst-benutzten-Weg gibt, Ausgeben der Daten, welche in dem kürzlichst-benutzten-Weg gespeichert sind, aus dem Daten-Feld.
    Konzept 2. Verfahren von Konzept 1, wobei Nachschauen, in dem Kennzeichen-Feld, von dem Kennzeichen für einen oder mehrere Wege in dem designierten Zwischenspeicher-Zeilen-Satz und Nachschauen, in dem Daten-Feld, von den Daten, welche in dem kürzlichst-benutzten-Weg gespeichert sind, parallel durchgeführt werden.
    Konzept 3. Verfahren von Konzept 1, wobei Nachschauen, in dem am-wenigsten-kürzlich-benutzten-Bit-Feld, von am-wenigsten-kürzlich-benutzten-Bits für jeden der Mehrzahl von Zwischenspeicher-Zeilen-Sätzen durchgeführt ist vor (1) Nachschauen, in dem Kennzeichen-Feld, von den Kennzeichen für einen oder mehrere Wege in dem designierten Zwischenspeicher-Zeilen-Satz und (2) Nachschauen, in dem Daten-Feld, von den Daten, welche in dem kürzlichst-benutzten-Weg gespeichert sind.
    Konzept 4. Verfahren von Konzept 1, wobei Nachschauen, in dem Daten-Feld, von Daten, welche in dem kürzlichst-benutzten-Weg in dem designierten Zwischenspeicher-Zeilen-Satz gespeichert sind, umfasst (1) Aktivieren des kürzlichst-benutzten-Weges des Daten-Feldes und (2) Nichtaktivieren irgendwelcher anderer Wege des Daten-Feldes in dem designierten Zwischenspeicher-Zeilen-Satz.
    Konzept 5. Verfahren von Konzept 1, wobei Nachschauen, in dem Kennzeichen-Feld, von den Kennzeichen für einen oder mehrere Wege in dem designierten Zwischenspeicher-Zeilen-Satz Nachschauen von Kennzeichen für alle Wege in dem designierten Zwischenspeicher-Zeilen-Satz umfasst.
    Konzept 6. Verfahren von Konzept 5, ferner aufweisend: Wenn es ein Zwischenspeicher-Verfehlen in allen der Wege des designierten Zwischenspeicher-Zeilen-Satzes gibt, Abrufen von Anweisungs-Daten von einem Höheres-Niveau-Speicher.
    Konzept 7. Verfahren von Konzept 1, wobei Nachschauen in dem Kennzeichen-Feld, von den Kennzeichen für einen oder mehrere Wege in dem designierten Zwischenspeicher-Zeilen-Satz Nachschauen von dem Kennzeichen für den kürzlichst-benutzten-Weg in dem designierten Zwischenspeicher-Zeilen-Satz und nicht Nachschauen von Kennzeichen für andere Wege neben dem kürzlichst-benutzten-Weg in dem designierten Zwischenspeicher-Zeilen-Satz umfasst.
    Konzept 8. Verfahren von Konzept 1, ferner aufweisend: Wenn es ein Zwischenspeicher-Verfehlen in dem kürzlichst-benutzten-Weg gibt, Nachschauen, in dem Kennzeichen-Feld, von Kennzeichen für alle Wege in dem designierten Zwischenspeicher-Zeilen-Satz; Nachschauen, in dem Daten-Feld, von Daten, welche in allen Wegen in dem designierten Zwischenspeicher-Zeilen-Satz gespeichert sind; und, wenn es einen Zwischenspeicher-Treffer in irgendeinem der Wege in dem designierten Zwischenspeicher-Zeilen-Satz gibt, Ausgeben der Daten in dem Treffer-Weg aus dem Daten-Feld.
    Konzept 9. Verfahren von Konzept 8, ferner aufweisend: Wenn es ein Zwischenspeicher-Verfehlen in allen der Wege des designierten Zwischenspeicher-Zeilen-Satzes gibt, Abrufen von Anweisungs-Daten von einem Höheres-Niveau-Speicher.
    Konzept 10. Verfahren von Konzept 8, wobei (1) Nachschauen der Kennzeichen für alle Wege in dem designierten Zwischenspeicher-Zeilen-Satz und (2) Nachschauen der Daten, welche in allen Wegen in dem designierten Zwischenspeicher-Zeilen-Satz gespeichert sind, parallel durchgeführt werden.
  • Es ist zu verstehen, dass die Konfigurationen und/oder Zugänge, welche hierin beschrieben sind, exemplarisch in Natur sind und dass diese spezifischen Ausführungsformen oder Beispiele nicht in einem begrenzenden Sinne aufzufassen sind, weil viele Variationen möglich sind. Die spezifischen Routinen oder Verfahren, welche hierin beschrieben sind, können eine oder mehr von irgendeiner Anzahl von Verarbeitungs-Strategien repräsentieren. Als solches können verschiedene Akte, welche illustriert sind, in der illustrierten Sequenz durchgeführt werden, in anderen Sequenzen, parallel, oder in einigen Fällen ausgelassen werden. Ähnlich kann die Ordnung der oben beschriebenen Prozesse geändert werden.
  • Der Gegenstand der vorliegenden Offenbarung umfasst alle neuen und nicht offensichtlichen Kombinationen und Unterkombinationen von verschiedenen Prozessen, Systemen und Konfigurationen und andere Merkmale, Funktionen, Akte, und/oder Eigenschafte, welche hierin offenbart sind, sowie irgendwelche und alle Äquivalente davon.

Claims (10)

  1. Anweisungs-Zwischenspeicher, aufweisend: ein am-wenigsten-kürzlich-benutzte-Bits-Feld; ein Kennzeichen-Feld; ein Daten-Feld; und eine Zwischenspeicher-Steuerung, welche konfiguriert ist, um (1) in dem am-wenigsten-kürzlich-benutzte-Bits-Feld, am-wenigsten-kürzlich-benutzte-Bits für jeden einer Mehrzahl von Zwischenspeicher-Zeilen-Sätzen in dem Anweisungs-Zwischenspeicher nachzuschauen, wobei die am-wenigsten-kürzlich-benutzten-Bits für einen Zwischenspeicher-Zeilen-Satz einen am-wenigsten-kürzlich-benutzten-Weg in diesem Zwischenspeicher-Zeilen-Satz anzeigen, (2) einen kürzlichst-benutzten-Weg in einem designierten Zwischenspeicher-Zeilen-Satz der Mehrzahl von Zwischenspeicher-Zeilen-Sätzen basierend auf den am-wenigsten-kürzlich-benutzten-Bits für den designierten Zwischenspeicher-Zeilen-Satz zu bestimmen, (3) in dem Kennzeichen-Feld Kennzeichen für einen oder mehrere Wege in dem designierten Zwischenspeicher-Zeilen-Satz nachzuschauen, (4) in dem Daten-Feld Daten, welche in dem kürzlichst-benutzten-Weg gespeichert sind, in dem designierten Zwischenspeicher-Zeilen-Satz nachzuschauen, und wenn es einen Zwischenspeicher-Treffer in dem kürzlichst-benutzten-Weg gibt, und (5) die Daten, welche in dem kürzlichst-benutzten-Weg gespeichert sind, aus dem Daten-Feld auszugeben.
  2. Anweisungs-Zwischenspeicher gemäß Anspruch 1, wobei die Zwischenspeicher-Steuerung konfiguriert ist, um (1) in dem Kennzeichen-Feld die Kennzeichen für einen oder mehrere Wege in dem designierten Zwischenspeicher-Zeilen-Satz nachzuschauen und (2) in dem Daten-Feld die Daten, welche in der kürzlichst-benutzten-Weg gespeichert sind, parallel nachzuschauen.
  3. Zwischenspeicher gemäß Anspruch 1, wobei die Zwischenspeicher-Steuerung konfiguriert ist, in dem am-wenigsten-kürzlich-benutzte-Bits-Feld, am-wenigsten-kürzlich-benutzte-Bits für jeden der Mehrzahl von Zwischenspeicher-Zeilen-Sätze nachzuschauen vor (1) Nachschauen, in dem Kennzeichen-Feld, von den Tags für einen oder mehrere Wege in dem designierten Zwischenspeicher-Zeilen-Satz und (2) Nachschauen, in dem Daten-Feld, von den Daten, welche in dem kürzlichst-benutzten-Weg gespeichert sind.
  4. Anweisungs-Zwischenspeicher gemäß Anspruch 1, wobei die Zwischenspeicher-Steuerung konfiguriert ist, um (1) den kürzlichst-benutzten-Weg in dem designierten Zwischenspeicher-Zeilen-Satz des Daten-Feldes zu aktivieren und (2) nicht irgendwelche anderen Wege in dem designierten Zwischenspeicher-Zeilen-Satz des Daten-Feldes zu aktivieren, um Daten nachzuschauen, welche in dem kürzlichst-benutzten-Weg in dem designierten Zwischenspeicher-Zeilen-Satz gespeichert sind.
  5. Anweisungs-Zwischenspeicher gemäß Anspruch 1, wobei die Zwischenspeicher-Steuerung konfiguriert ist, in dem Kennzeichen-Feld die Kennzeichen für alle Wege in dem designierten Zwischenspeicher-Zeilen-Satz nachzuschauen.
  6. Anweisungs-Zwischenspeicher gemäß Anspruch 5, wobei die Zwischenspeicher-Steuerung konfiguriert ist, um (1) wenn es ein Zwischenspeicher-Verfehlen in dem kürzlichst-benutzten-Weg gibt, in dem Kennzeichen-Feld Kennzeichen für alle Wege in dem designierten Zwischenspeicher-Zeilen-Satz nachzuschauen, (2) in dem Daten-Feld Daten, welche in allen Wegen in dem designierten Zwischenspeicher-Zeilen-Satz gespeichert sind, nachzuschauen und (3) wenn es einen Zwischenspeicher-Treffer in irgendeinem der Wege in dem designierten Zwischenspeicher-Zeilen-Satz gibt, Ausgeben der Daten in dem Treffer-Weg aus dem Daten-Feld.
  7. Verfahren zum Steuern eines Anweisungs-Zwischenspeichers einschließlich eines am-wenigsten-kürzlich-benutzte-Bits-Feldes, eines Kennzeichen-Feldes und eines Daten-Feldes, aufweisend: Nachschauen, in dem am-wenigsten-kürzlich-benutzte-Bits-Feld, von am-wenigsten-kürzlich-benutzte-Bits für jeden einer Mehrzahl von Zwischenspeicher-Zeilen-Sätzen in dem Anweisungs-Zwischenspeicher, wobei am-wenigsten-kürzlich-benutzte-Bits für einen Zwischenspeicher-Zeilen-Satz einen am-wenigsten-kürzlich-benutzten-Weg in diesem Zwischenspeicher-Zeilen-Satz anzeigen; Bestimmen eines kürzlichst-benutzten-Weges in einem designierten Zwischenspeicher-Zeilen-Satz der Mehrzahl von Zwischenspeicher-Zeilen-Sätzen basierend auf den am-wenigsten-kürzlich-benutzten-Bits für die designierte Zwischenspeicher-Zeile; Nachschauen, in dem Kennzeichen-Feld, von Tags für einen oder mehrere Wege in dem designierten Zwischenspeicher-Zeilen-Satz; Nachschauen, in dem Daten-Feld, von Daten, welche in dem kürzlichst-benutzten-Weg in dem designierten Zwischenspeicher-Zeilen-Satz gespeichert sind; und wenn es einen Zwischenspeicher-Treffer in dem kürzlichst-benutzten-Weg gibt, Ausgeben der Daten, welche in dem kürzlichst-benutzten-Weg gespeichert sind, aus dem Daten-Feld.
  8. Verfahren gemäß Anspruch 7, wobei Nachschauen, in dem Kennzeichen-Feld, von den Tags für einen oder mehrere Wege in dem designierten Zwischenspeicher-Zeilen-Satz und Nachschauen, in dem Daten-Feld, von den Daten, welche in dem kürzlichst-benutzten-Weg gespeichert sind, parallel durchgeführt wird.
  9. Verfahren gemäß Anspruch 7, wobei Nachschauen, in dem am-wenigsten-kürzlich-benutzten-Bits-Feld, von am-wenigsten-kürzlich-benutzten-Bits für jeden der Mehrzahl von Zwischenspeicher-Zeilen-Sätzen durchgeführt wird vor (1) Nachschauen, in dem Kennzeichen-Feld, von den Tags für einen oder mehrere Wege in dem designierten Zwischenspeicher-Zeilen-Satz und (2) Nachschauen, in dem Daten-Feld, von den Daten, welche in dem kürzlichst-benutzten-Weg gespeichert sind.
  10. Verfahren gemäß Anspruch 7, wobei Nachschauen, in dem Daten-Feld, von Daten, welche in dem kürzlichst-benutzten-Weg gespeichert sind, in dem designierten Zwischenspeicher-Zeilen-Satz umfasst (1) Aktivieren des kürzlichst-benutzten-Weges des Daten-Feldes und (2) Nichtaktivieren von irgendwelchen anderen Wegen des Daten-Feldes in dem designierten Zwischenspeicher-Zeilen-Satz.
DE102012222820A 2012-01-09 2012-12-11 Anweisung-Zwischenspeicher-Energie-Verminderung Ceased DE102012222820A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/346,536 2012-01-09
US13/346,536 US9396117B2 (en) 2012-01-09 2012-01-09 Instruction cache power reduction

Publications (1)

Publication Number Publication Date
DE102012222820A1 true DE102012222820A1 (de) 2013-07-11

Family

ID=48652698

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102012222820A Ceased DE102012222820A1 (de) 2012-01-09 2012-12-11 Anweisung-Zwischenspeicher-Energie-Verminderung

Country Status (4)

Country Link
US (1) US9396117B2 (de)
CN (1) CN103198026A (de)
DE (1) DE102012222820A1 (de)
TW (1) TW201351145A (de)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9652396B2 (en) 2013-12-27 2017-05-16 Samsung Electronics Co., Ltd. Cache element processing for energy use reduction
US9779025B2 (en) * 2014-06-02 2017-10-03 Micron Technology, Inc. Cache architecture for comparing data
US9946588B2 (en) 2014-12-17 2018-04-17 International Business Machines Corporation Structure for reducing power consumption for memory device
US10055810B2 (en) * 2016-03-04 2018-08-21 Samsung Electronics Co., Ltd. Cache architecture for efficiently accessing texture data using buffers
US10073787B2 (en) * 2016-04-18 2018-09-11 Via Alliance Semiconductor Co., Ltd. Dynamic powering of cache memory by ways within multiple set groups based on utilization trends
US10156887B2 (en) 2016-09-29 2018-12-18 Qualcomm Incorporated Cache memory clock generation circuits for reducing power consumption and read errors in cache memory
US10324850B2 (en) 2016-11-11 2019-06-18 Microsoft Technology Licensing, Llc Serial lookup of tag ways
EP3534265A4 (de) * 2016-11-16 2019-10-30 Huawei Technologies Co., Ltd. Speicherzugriffstechnik
US10599566B2 (en) * 2016-11-29 2020-03-24 Qualcomm Incorporated Multi-mode cache invalidation
US10324852B2 (en) * 2016-12-09 2019-06-18 Intel Corporation System and method to increase availability in a multi-level memory configuration
CN106844232A (zh) * 2016-12-23 2017-06-13 北京北大众志微系统科技有限责任公司 一种面向多核处理器的共享末级高速缓存访存方法和装置
CN106844231A (zh) * 2016-12-23 2017-06-13 北京北大众志微系统科技有限责任公司 末级高速缓存软硬件协作分区域管理系统及管理方法
US10565122B2 (en) 2017-05-30 2020-02-18 Microsoft Technology Licensing, Llc Serial tag lookup with way-prediction
US10229061B2 (en) 2017-07-14 2019-03-12 International Business Machines Corporation Method and arrangement for saving cache power
US20230066662A1 (en) * 2021-08-31 2023-03-02 Ceremorphic, Inc. Instruction Cache for Hardware Multi-Thread Microprocessor

Family Cites Families (67)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4168541A (en) * 1978-09-25 1979-09-18 Sperry Rand Corporation Paired least recently used block replacement system
US4525780A (en) * 1981-05-22 1985-06-25 Data General Corporation Data processing system having a memory using object-based information and a protection scheme for determining access rights to such information
US4807110A (en) * 1984-04-06 1989-02-21 International Business Machines Corporation Prefetching system for a cache having a second directory for sequentially accessed blocks
US5125085A (en) * 1989-09-01 1992-06-23 Bull Hn Information Systems Inc. Least recently used replacement level generating apparatus and method
US5325503A (en) * 1992-02-21 1994-06-28 Compaq Computer Corporation Cache memory system which snoops an operation to a first location in a cache line and does not snoop further operations to locations in the same line
US5974508A (en) * 1992-07-31 1999-10-26 Fujitsu Limited Cache memory system and method for automatically locking cache entries to prevent selected memory items from being replaced
US5544342A (en) * 1993-06-30 1996-08-06 International Business Machines Corporation System and method for prefetching information in a processing system
US5835934A (en) * 1993-10-12 1998-11-10 Texas Instruments Incorporated Method and apparatus of low power cache operation with a tag hit enablement
US5623627A (en) * 1993-12-09 1997-04-22 Advanced Micro Devices, Inc. Computer memory architecture including a replacement cache
US5784590A (en) * 1994-06-29 1998-07-21 Exponential Technology, Inc. Slave cache having sub-line valid bits updated by a master cache
US5666514A (en) * 1994-07-01 1997-09-09 Board Of Trustees Of The Leland Stanford Junior University Cache memory containing extra status bits to indicate memory regions where logging of data should occur
US5640532A (en) 1994-10-14 1997-06-17 Compaq Computer Corporation Microprocessor cache memory way prediction based on the way of previous memory read
US5933860A (en) * 1995-02-10 1999-08-03 Digital Equipment Corporation Multiprobe instruction cache with instruction-based probe hint generation and training whereby the cache bank or way to be accessed next is predicted
US5737748A (en) * 1995-03-15 1998-04-07 Texas Instruments Incorporated Microprocessor unit having a first level write-through cache memory and a smaller second-level write-back cache memory
US5860127A (en) * 1995-06-01 1999-01-12 Hitachi, Ltd. Cache memory employing dynamically controlled data array start timing and a microcomputer using the same
US5845317A (en) * 1995-11-17 1998-12-01 Micron Technology, Inc. Multi-way cache expansion circuit architecture
US5809522A (en) * 1995-12-18 1998-09-15 Advanced Micro Devices, Inc. Microprocessor system with process identification tag entries to reduce cache flushing after a context switch
DE69738810D1 (de) * 1996-01-24 2008-08-14 Sun Microsystems Inc Befehlsfalten in einem stapelspeicherprozessor
US5687110A (en) 1996-02-20 1997-11-11 Advanced Micro Devices, Inc. Array having an update circuit for updating a storage location with a value stored in another storage location
US6236674B1 (en) 1996-02-23 2001-05-22 Teletransactions, Inc. Transceiver control with sleep mode operation
US5978906A (en) 1996-11-19 1999-11-02 Advanced Micro Devices, Inc. Branch selectors associated with byte ranges within an instruction cache for rapidly identifying branch predictions
US5848428A (en) * 1996-12-19 1998-12-08 Compaq Computer Corporation Sense amplifier decoding in a memory device to reduce power consumption
US6282663B1 (en) 1997-01-22 2001-08-28 Intel Corporation Method and apparatus for performing power management by suppressing the speculative execution of instructions within a pipelined microprocessor
US6247094B1 (en) * 1997-12-22 2001-06-12 Intel Corporation Cache memory architecture with on-chip tag array and off-chip data array
US6601161B2 (en) 1998-12-30 2003-07-29 Intel Corporation Method and system for branch target prediction using path information
US6356990B1 (en) * 2000-02-02 2002-03-12 International Business Machines Corporation Set-associative cache memory having a built-in set prediction array
KR100373849B1 (ko) * 2000-03-13 2003-02-26 삼성전자주식회사 어소시어티브 캐시 메모리
EP1150213B1 (de) 2000-04-28 2012-01-25 TELEFONAKTIEBOLAGET LM ERICSSON (publ) Datenverarbeitungssystem und Verfahren
US7487369B1 (en) * 2000-05-01 2009-02-03 Rmi Corporation Low-power cache system and method
JP2002196981A (ja) * 2000-12-22 2002-07-12 Fujitsu Ltd データ処理装置
JP2002236616A (ja) * 2001-02-13 2002-08-23 Fujitsu Ltd キャッシュメモリシステム
US6886093B2 (en) 2001-05-04 2005-04-26 Ip-First, Llc Speculative hybrid branch direction predictor
US6718439B1 (en) * 2001-06-01 2004-04-06 Advanced Micro Devices, Inc. Cache memory and method of operation
US7191281B2 (en) 2001-06-13 2007-03-13 Intel Corporation Mobile computer system having a navigation mode to optimize system performance and power management for mobile applications
US6678792B2 (en) 2001-06-22 2004-01-13 Koninklijke Philips Electronics N.V. Fast and accurate cache way selection
US6948079B2 (en) 2001-12-26 2005-09-20 Intel Corporation Method and apparatus for providing supply voltages for a processor
JP2003242029A (ja) * 2002-02-15 2003-08-29 Hitachi Ltd 半導体集積回路
US6912623B2 (en) 2002-06-04 2005-06-28 Sandbridge Technologies, Inc. Method and apparatus for multithreaded cache with simplified implementation of cache replacement policy
KR100702746B1 (ko) 2002-08-20 2007-04-03 엘지전자 주식회사 컴퓨터 시스템에서의 무선 랜 모듈 전원 관리방법 및 그장치
JP3986950B2 (ja) 2002-11-22 2007-10-03 シャープ株式会社 Cpuおよびこれを備えた情報処理装置、cpuの制御方法
US20040181654A1 (en) 2003-03-11 2004-09-16 Chung-Hui Chen Low power branch prediction target buffer
US7177981B2 (en) * 2003-05-09 2007-02-13 Via-Cyrix, Inc. Method and system for cache power reduction
US7369815B2 (en) 2003-09-19 2008-05-06 Qualcomm Incorporated Power collapse for a wireless terminal
US7360023B2 (en) * 2003-09-30 2008-04-15 Starcore, Llc Method and system for reducing power consumption in a cache memory
US20050239518A1 (en) 2004-04-21 2005-10-27 D Agostino Anthony Systems and methods that provide enhanced state machine power management
JP3834323B2 (ja) * 2004-04-30 2006-10-18 日本電気株式会社 キャッシュメモリおよびキャッシュ制御方法
US8775740B2 (en) * 2004-08-30 2014-07-08 Texas Instruments Incorporated System and method for high performance, power efficient store buffer forwarding
US7475192B2 (en) * 2005-07-12 2009-01-06 International Business Machines Corporation Cache organization for power optimized memory access
US7536510B1 (en) * 2005-10-03 2009-05-19 Advanced Micro Devices, Inc. Hierarchical MRU policy for data cache
US7412570B2 (en) 2005-11-15 2008-08-12 Sun Microsystems, Inc. Small and power-efficient cache that can provide data for background DNA devices while the processor is in a low-power state
US7904658B2 (en) * 2005-11-30 2011-03-08 International Business Machines Corporation Structure for power-efficient cache memory
TW200723094A (en) 2005-12-01 2007-06-16 Ind Tech Res Inst Dynamic branch prediction system and method
US7644294B2 (en) 2006-01-06 2010-01-05 Advanced Micro Devices, Inc. Dynamically self-decaying device architecture
US7689772B2 (en) * 2006-05-04 2010-03-30 Intel Corporation Power-performance modulation in caches using a smart least recently used scheme
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
US7681021B2 (en) 2006-09-28 2010-03-16 Freescale Semiconductor, Inc. Dynamic branch prediction using a wake value to enable low power mode for a predicted number of instruction fetches between a branch and a subsequent branch
US8335122B2 (en) * 2007-11-21 2012-12-18 The Regents Of The University Of Michigan Cache memory system for a data processing apparatus
US8028180B2 (en) 2008-02-20 2011-09-27 International Business Machines Corporation Method and system for power conservation in a hierarchical branch predictor
US8458404B1 (en) * 2008-08-14 2013-06-04 Marvell International Ltd. Programmable cache access protocol to optimize power consumption and performance
CN101763249A (zh) 2008-12-25 2010-06-30 世意法(北京)半导体研发有限责任公司 对非控制流指令减少分支检验
US8799628B2 (en) 2009-08-31 2014-08-05 Advanced Micro Devices, Inc. Early branch determination
JP2011081564A (ja) * 2009-10-06 2011-04-21 Fujitsu Ltd 制御装置、記憶装置、演算処理装置および制御方法
US20110093658A1 (en) 2009-10-19 2011-04-21 Zuraski Jr Gerald D Classifying and segregating branch targets
US8990506B2 (en) 2009-12-16 2015-03-24 Intel Corporation Replacing cache lines in a cache memory based at least in part on cache coherency state information
US8352683B2 (en) * 2010-06-24 2013-01-08 Intel Corporation Method and system to reduce the power consumption of a memory device
US20120079303A1 (en) 2010-09-24 2012-03-29 Madduri Venkateswara R Method and apparatus for reducing power consumption in a processor by powering down an instruction fetch unit
US8667257B2 (en) 2010-11-10 2014-03-04 Advanced Micro Devices, Inc. Detecting branch direction and target address pattern and supplying fetch address by replay unit instead of branch prediction unit

Also Published As

Publication number Publication date
US20130179640A1 (en) 2013-07-11
US9396117B2 (en) 2016-07-19
TW201351145A (zh) 2013-12-16
CN103198026A (zh) 2013-07-10

Similar Documents

Publication Publication Date Title
DE102012222820A1 (de) Anweisung-Zwischenspeicher-Energie-Verminderung
Ranganathan et al. Reconfigurable caches and their application to media processing
DE102013201767B4 (de) Übersetzungs-Adresse-Zwischenspeicher für einen Mikroprozessor
US6584547B2 (en) Shared cache structure for temporal and non-temporal instructions
US7822926B2 (en) Cache memory
KR101898322B1 (ko) 상이한 인덱싱 방식을 사용하는 1차 캐시와 오버플로 캐시를 갖는 캐시 시스템
CN109240945B (zh) 一种数据处理方法及处理器
Gupta et al. Adaptive cache bypassing for inclusive last level caches
DE112013003731T5 (de) Neue befehls- und hocheffiziente Mikroarchitektur zum ermöglichen einer sofortigen Kontextumschaltung für Benutzerebenen-Threading
DE102010053972A1 (de) Übergang vom Quellbefehlssatzarchitektur-(ISA)-Code zum übersetzten Code in einer Teilemulationsumgebung
JPH0364893B2 (de)
DE102012216571A1 (de) Nutzung einer architekturdefinierten letztverwendungs-operandenangabe in einem computersystem-operandenressourcenpool
DE102013202995A1 (de) Energieeinsparung in Verzweigungsvorhersagen
DE102012216567A1 (de) Verwalten eines register-cachespeichers auf grundlage eines architekturdefinierten computeranweisungssatzes
US9547593B2 (en) Systems and methods for reconfiguring cache memory
DE102013202992A1 (de) Energieeinsparung bei Verzweigungsvorhersage
KR102594288B1 (ko) 성능 또는 에너지 소모 특성이 상이한 제1 및 제2 처리 모드를 갖는 처리 파이프라인
DE112017001700T5 (de) Prozessoren, Verfahren, Systeme und Anweisungen zum Abruf von Daten auf der angegebenen Cache-Ebene mit garantiertem Abschluss
DE102018002294A1 (de) Effizientes bereichsbasiertes speicher-rückschreiben zum verbessern der host-zu-geräte-kommunikation für optimale energie und leistung
DE102018004727A1 (de) Verfahren und System zum Durchführen von Datenbewegungsoperationen mit Lese-Snapshot und In-Place-Schreibaktualisierung
Rodrigues et al. Towards a scatter-gather architecture: hardware and software issues
DE102015115582A1 (de) Vorrichtung und Verfahren zum Drosseln des Hardwarevorauslesens
US7761665B2 (en) Handling of cache accesses in a data processing apparatus
KR20160065773A (ko) 1차 캐시와 오버플로 선입 선출 캐시를 구비하는 캐시 시스템
DE102019119956A1 (de) Architektur und verfahren zur datenparallelen einzelprogramm- mehrfachdaten(spmd)-ausführung

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R002 Refusal decision in examination/registration proceedings
R003 Refusal decision now final

Effective date: 20140614