DE102015115582A1 - Vorrichtung und Verfahren zum Drosseln des Hardwarevorauslesens - Google Patents

Vorrichtung und Verfahren zum Drosseln des Hardwarevorauslesens Download PDF

Info

Publication number
DE102015115582A1
DE102015115582A1 DE102015115582.6A DE102015115582A DE102015115582A1 DE 102015115582 A1 DE102015115582 A1 DE 102015115582A1 DE 102015115582 A DE102015115582 A DE 102015115582A DE 102015115582 A1 DE102015115582 A1 DE 102015115582A1
Authority
DE
Germany
Prior art keywords
prefetch
cache
response
requests
cache lines
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.)
Pending
Application number
DE102015115582.6A
Other languages
English (en)
Inventor
William Lee
Thomas B. Berg
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.)
MIPS Tech LLC
Original Assignee
Imagination Technologies Ltd
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 Imagination Technologies Ltd filed Critical Imagination Technologies Ltd
Publication of DE102015115582A1 publication Critical patent/DE102015115582A1/de
Pending 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/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • 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/1016Performance improvement
    • G06F2212/1021Hit rate improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/28Using a specific disk cache architecture
    • G06F2212/283Plural cache memories
    • 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/6026Prefetching based on access pattern detection, e.g. stride based prefetch

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

Es wird ein Hardware-basiertes Vorauslesen für Prozessorsysteme implementiert. In einem Cache-Teilsystem kann eine Vorausleseeinheit vorgesehen sein, die in Ansprechen darauf, dass eine Bedarfsanforderung für eine Cache-Line einen Fehltreffer erzielt hat, einen Vorauslesen-Nachführer zuteilt. In Ansprechen auf nachfolgende Bedarfsanforderungen für aufeinanderfolgende Cache-Lines wird ein Vertrauensindikator erhöht. In Ansprechen auf weitere Bedarfsfehltreffer und auf einen Vertrauensindikatorwert wird eine Vorauslese-Tier erhöht, was ermöglicht, dass der Vorauslesen-Nachführer Vorausleseanforderungen für weitere Cache-Lines initiiert. Anforderungen für Cache-Lines, die innerhalb eines Anpassungsfensters für den zugeteilten Vorauslesen-Nachführer mehr als zwei Cache-Lines voneinander entfernt sind, verringern das Vertrauen schneller als Anforderungen für aufeinanderfolgende Cache-Lines das Vertrauen erhöhen. Ein Alterszähler führt nach, wann eine letzte Bedarfsanforderung innerhalb des Anpassungsfensters empfangen wurde. Die Vorauslese-Tier kann in Ansprechen auf ein verringertes Vertrauen und auf ein erhöhtes Alter verringert werden.

Description

  • Gebiet
  • In einem Aspekt bezieht sich das Folgende auf eine Mikroprozessor-Mikroarchitekur und in einem besonderen Aspekt auf Mikroprozessorspeicherzugriffe.
  • Verwandtes Gebiet
  • Viele Prozessorsysteme weisen einen oder mehrere Prozessoren auf, die jeweils einen privaten Cache der 1. Ebene (L1-Cache) aufweisen. Im Fall eines Mehrprozessorsystems können mehrere Prozessoren einen Cache der 2. Ebene (L2-Cache) gemeinsam benutzen. Es kann der Reihe nach zusätzliche Ebenen der Cache-Hierarchie (z. B. einen L3-Cache) und einen Hauptspeicher geben. Einige Herangehensweisen des Mehrprozessor-Caching duplizieren in jedem L1 gespeicherte Daten in einem gemeinsam genutzten L2-Cache, während andere Herangehensweisen dies nicht tun. Caches können Write-back-Caches oder Write-through-Caches sein. Es sind verschiedene Herangehensweisen zum Aufrechterhalten der Kohärenz gecachter Daten bekannt.
  • Allgemein weist jede Cache-Ebene, beginnend von dem Hauptspeicher, eine zunehmend höhere Bandbreite und niedrigere Latenzzeit als die vorhergehende auf. Zum Beispiel können einige Prozessoren eine kleine Anzahl von Verzögerungszyklen (z. B. zwischen 2–4), zum Zugreifen auf Daten von einem privaten L1-Cache und verhältnismäßig mehr zum Zugreifen auf Daten von einem L2 (z. B. 10–20) und noch mehr zum Zugreifen auf einen L3 usw. aufweisen. Der Hauptspeicher kann im dynamischen Ram (DRAM), der verschiedene Zugriffsmuster und erheblich längere Zugriffszeit als ein Cache mit statischem RAM (SRAM-Cache) aufweist, implementiert sein.
  • Allerdings weist jede Cache-Ebene von L3 bis L1 allgemein fortschreitend eine kleinere Größe auf (z. B. kann ein L1-Daten-Cache 32 kB sein, während ein L2-Cache 256 kB oder 512 kB sein kann und ein L3-Cache in einem Mehrprozessorsystem mehrere Megabytes sein kann). Caches verbrauchen sowohl Leistung als auch Fläche. Obwohl Caches die Leistungsfähigkeit eines Prozessors oder Prozessorsystems stark verbessern können, werden somit üblicherweise Cache-Management-Techniken verwendet, um die Vorteile von Caches zu verbessern.
  • ZUSAMMENFASSUNG
  • In einem Aspekt bezieht sich die Offenbarung auf eine Hardware-basierte Herangehensweise an das prädiktive Abrufen (Vorauslesen) von Daten aus einer Speicherhierarchie (wie etwa einem L3-Cache und einem Hauptspeicher) in einen L2-Cache. In einigen Aspekten wird die Herangehensweise zur Verwendung mit einem Außer-der-Reihe-Ausführungs-Prozessor (OO-Ausführungs-Prozessor), einem Multithreading-Prozessor (MT-Prozessor) oder mit einem Prozessor, der sowohl OO als auch MT unterstützt, implementiert. In einigen Aspekten unterstützt die Herangehensweise Mehrprozessorsysteme und kann sie mit einer Schaltungsanordnung, die Kohärenz-Caches in dem Mehrprozessorsystem aufrechterhält, implementiert werden.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • 1 zeigt einen Vorrichtungskontext, in dem Implementierungen der Offenbarung bereitgestellt werden können;
  • 2 zeigt eine beinspielhafte Implementierung einer Vorauslesen-Nachführungseinheit, die Vorauslesen-Nachführer in Übereinstimmung mit der Offenbarung enthält;
  • 3 zeigt ein beispielhaftes Diagramm eines Vorauslesen-Nachführers;
  • 4 zeigt ein Diagramm von Daten, die für einen zugewiesenen Vorauslesen-Nachführer aufrechterhalten werden;
  • 5 zeigt ein Verfahren, das durch eine Vorauslesen-Nachführungseinheit implementiert wird.
  • 6-9 zeigen beispielhafte jeweilige Verfahren zum Aufrechterhalten von Zustandsinformationen für einen zugewiesenen Vorauslesen-Nachführer; und
  • 10 zeigt ein beispielhaftes Verfahren zum Aktualisieren einer Vorauslesen-Tier, das zur Zunahme oder Abnahme einer Anzahl von Cache-Lines führt, für die der Vorauslesen-Nachführer Vorausleseanforderungen initiieren kann.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Ausgehend von einem Betrag der Verzögerung, die durch einen L2-Cache-Fehltreffer zugezogen wird, wäre es erwünscht, eine Cache-Line abzurufen, bevor Daten von den Cache-Lines durch eine Bedarfsanforderung angefordert worden sind. Ein Programm, das durch einen Prozessor ausgeführt wird, besitzt Einsicht darin, welche Daten von Anweisungen in dem Programm angefordert werden. Somit ist vorgeschlagen worden, Software-Vorauslesehinweise zu implementieren, die durch einen Anweisungsdecodierer (oder durch eine andere Schaltungsanordnung) in einem Prozessor interpretiert werden können, um Daten zu identifizieren, die für diesen Anweisungsstrom vorausgelesen werden sollen. Dies erfordert, dass ein Compiler das Programm analysiert und diese Hinweise erzeugt. Obwohl solche Vorauslesehinweise einige Vorteile bieten können, hat das Softwarevorauslesen Nachteile. Zum Beispiel muss ein Programm compiliert werden, damit es eine bestimmte Herangehensweise zum Vorauslesen zum Ziel hat, was ein Programm weniger portabel macht. Außerdem kann ein Vorauslesehinweis, der unter der Annahme erzeugt wird, dass die Programmausführung annähernd der Reihenfolge der Anweisungen in diesem Programm folgt, eigentlich nicht hilfreich sein, falls der Prozessor Anwendungen außer der Reihe ausführen kann, Multi-Threading unterstützen kann, oder beides.
  • Im Gegensatz dazu kann ein Prozessor nicht bestimmen, welche Daten von einer Anweisung, die noch nicht decodiert worden ist, tatsächlich angefordert werden. Diese Offenbarung bietet eine Herangehensweise an das Vorhersagen des Datenabrufverhaltens für Programme in Hardware. In besonderen Implementierungen kann die Offenbarung verwendet werden, um für einen Außer-der-Reihe-Prozessor und/oder für einen Multithreading-Prozessor und/oder für einen Außer-der-Reihe-Multithreading-Ausführungsprozessor ein Hardwarevorauslesen zu implementieren.
  • Obwohl das Hardware-basierte Vorauslesen in der Theorie zu Vorteilen wie etwa einer Verringerung der Blockierungen, während Daten aus dem Hauptspeicher erhalten werden, führen würde, ist die Realität differenzierter. Insbesondere ist die Bandbreite über einen Kanal zum Zugreifen auf den Hauptspeicher ein Betriebsmittel, das zugewiesen werden muss. Das wahllose Vorauslesen von Daten kann dazu führen, dass weniger Bedarfsanforderungen bedient werden (wobei eine Bedarfsanforderung die tatsächlichen Daten sind, die durch eine Anweisung angefordert werden). Außerdem ist ein L2-Cache ein beschränktes Betriebsmittel, wobei der Ersatz von bei Bedarf angeforderten Daten, um vorausgelesene Daten zu installieren, zu einer Situation führen kann, in der die auf Bedarf angeforderten Daten tatsächlich wieder benötigt werden können, während die vorausgelesenen Daten überhaupt nicht benötigt werden können. Somit gibt es Szenarien, in denen das Vorauslesen von Daten im allgemeinen Sinn oder für einige Lastprofile nicht zu einer Gesamtverbesserung der Speichersystemleistungsfähigkeit führen kann.
  • Somit bieten einige Aspekte der Offenbarung eine Herangehensweise des variablen Vorauslesens, bei der das Vorauslesen zunehmend aggressiv werden kann, während das Vertrauen in die Nützlichkeit des Vorauslesens zunimmt. Nochmals weitere Aspekte gehen aus der folgenden Offenbarung hervor.
  • 1 zeigt eine Vorrichtung 5 (wie etwa ein Mikroprozessor-Computersystem), die einen Kohärenzmanager 10 (CM 10) enthält. Der Begriff ”Kohärenzmanager” ist zur Erleichterung der Bezugnahme verwendet, wobei Implementierungen der Offenbarung aber keine Schaltungsanordnung bereitzustellen brauchen, die alle Merkmale oder Funktionen des CM 10 enthält, oder irgendeinen besonderen Abschnitt einer Schaltungsanordnung als einen ”Kohärenzmanager” zu bezeichnen brauchen, um die Offenbarung zu implementieren. Ferner sind einige Teile des CM 10 und seiner Konnektivität mit anderen Funktionselementen abstrahiert, um einige Aspekte der Offenbarung in größerer Klarheit darzustellen.
  • Der CM 10 ist mit mehreren CPUs 15 gekoppelt. Jede CPU 15 weist einen jeweiligen L1-Cache 16 auf, der z. B. ein Cache nur für Daten sein kann. Der CM 10 enthält eine Anforderungseinheit (RQU) 22, die mit jeder CPU 15 gekoppelt ist, um Anforderungen 45 für Daten zu empfangen; diese Anforderungen können Daten betreffen, die in dem L1-Cache 16 des Prozessors, der diese Daten anfordert, nicht verfügbar waren. In Abhängigkeit von dem Kohärenzprotokoll könnten diese Daten in einem L1-Cache eines anderen Prozessors gültig/geändert sein oder in einem anderen L1-Cache nicht vorhanden sein, aber in einem L2- oder L3-Cache (z. B. in dem L2-Cache 29) und/oder in einem Hauptspeicher vorhanden sein. Der CM 10 enthält eine Eingriffseinheit (IVU) 24, die Eingriffsanforderungen für die L1-Caches 16 erzeugen kann, die dazu dienen, Daten, die gültig/geändert sind, in einem der Caches, die von einer anderen CPU angefordert worden sind, zu erhalten. Die CPUs 15 können Antworten 46 auf die Eingriffsanforderungen an die IVU 24 zurückgeben. Einige Implementierungen können ermöglichen, dass ein L1-Cache 16 Daten direkt an einen anderen L1-Cache 16 weiterleitet, so dass die Daten den CM 10 nicht zu durchlaufen brauchen, selbst wenn der CM 10 die Übertragung steuern kann und auf andere Weise Statusinformationen dafür, welche Daten in verschiedenen L1-Caches 16 gültig/geändert sind, aufrechterhalten kann. Einige Implementierungen können den L2-Cache 29 mit Daten aktualisieren, die in Ansprechen auf eine Eingriffsanforderung bereitgestellt werden (so dass diese Daten durch eine L2-Cache-Pipeline 28 bedient werden könnten, die eine Schnittstelle mit einem L2-Cache 29 bereitstellt, falls sie durch einen anderen Prozessor angefordert werden). An die Aufrechterhaltung der Aufteilung von Daten zwischen L1-Caches und einem L2-Cache und für die Aufrechterhaltung der Kohärenz solcher Daten gibt es verschiedene Herangehensweisen, wobei die Obige ein Beispiel ist.
  • Eine Transaktions-Routing-Einheit (TRU) 26 kann Anforderungen von der RQU 22 empfangen und bestimmen, ob diese Anforderungen durch die L2-Cache-Pipeline 28 oder durch eine Systemspeichereinheit 32, die mit einem Speicher 50 gekoppelt ist, bedient werden sollen (wobei dieses Beispiel keinen L3-Cache enthält, wobei aber weitere Ebenen der Cache-Hierarchie in anderen Implementierungen aufgenommen sein können).
  • Eine Vorausleseeinheit (PFU) 35 empfängt wie etwa von der RQU 22 Bedarfsanforderungen und kann Vorausleseanforderungen an die TRU 26 senden. Die durch die PFU 35 erzeugten Vorausleseanforderungen betreffen im Speicher 50 enthaltene Daten, von denen die PFU 35 bestimmt hat, dass sie vorausgelesen werden sollten. Die Vorausleseanforderungen werden an die TRU 26 gesendet, die bestimmt, welche Anforderungen durch die L2-Cache-Pipeline 28 und welche durch die SMU 32 bedient werden sollten, die zwischen jeder dieser Anforderungsteilmengen entscheidet und die die jeweiligen Anforderungen für jede zu bedienende L2-Pipeline 28 und SMU 32 bereitstellt. Das Folgende offenbart eine beispielhafte Konstruktion der PFU 35 und wie die PFU 35 arbeitet.
  • Die Vorrichtung 5 kann eine Vielzahl verschiedener physikalischer Verwirklichungen aufweisen. Zum Beispiel können alle gezeigten Strukturen (z. B. ein CM 10 und zwei oder vier CPUs 15) auf einem Halbleitersubstrat implementiert sein. In einem anderen Beispiel könnten eine, zwei, vier oder acht CPUs 15 auf einem Substrat gebildet sein und könnten mehrere solche Substrate mit einem Substrat, das einen CM 10 enthält, gekoppelt sein.
  • 2 zeigt eine beispielhafte Implementierung einer PFU 35, die einen PFT-Zuteiler 65, einen Satz von Vorauslesen-Nachführern (PFTs) 7577 und einen Arbiter 80 enthält. In einem Beispiel können sechzehn PFTs vorgesehen sein; andere Implementierungen können mehr oder weniger PFTs aufweisen. 3 zeigt eine beispielhafte Implementierung von PFTs 7577, die eine Zustandsmaschine 60, Konfigurationsregister 62 und eine Ablage für Folgendes enthält: einen Vertrauenszähler 110, einen L2-Bedarfs-Fehltreffer-Zähler 112, einen Vorauslesen-Treffer-Zähler (PF-Treffer-Zähler) 114, einen Alterszähler 116, einen PFT-Tier-Nachführer 118 und einen Anpassungsfenster-Startzeiger 128, einen Zeiger 130 der Adresse des letzten Bedarfs, einen Zeiger der Adresse des nächsten Abrufs und einen Vorauslesen-Grenzwertzeiger 134. Im Folgenden sind die beispielhafte Nutzung und Aktualisierung dieser verschiedenen Elemente beschrieben.
  • 4 zeigt ein Diagramm der relativen Anordnung der oben beschriebenen Zeiger für einen gegebenen PFT innerhalb eines Satzes von Cache-Line-Adressen 125. Insbesondere zeigt 4, dass der Anpassungsfenster-Startzeiger 128 und der Vorauslesen-Grenzwertzeiger 134 jedes PFT ein Anpassungsfenster 125 definieren und dass ein Zeiger 130 der Adresse des letzten Bedarfs und der Vorauslesen-Grenzwertzeiger 134 ein Vorauslesefenster 120 definieren. Außerdem kann jedem PFT ein Prioritätsindikator zugeteilt sein. Der Prioritätsindikator kann auf einer relativen Priorität eines Threads oder anderen Betriebsmittels, der bzw. das die Bedarfsanforderung ausgegeben hat, die veranlasst hat, dass der PFT zugeteilt wird, beruhen. Einige Implementierungen können PFTs pro Kern (pro virtualisiertem Kern) bereitstellen, während andere einen Pool von PFTs, die unter mehreren Kernen (virtualisierten Kernen) gemeinsam verwendet werden, bereitstellen können. Wo eine Virtualisierung verwendet wird, kann es mehrere physikalische Kerne und mehrere virtuelle Kerne pro physikalischem Kern geben und kann die Entscheidung zwischen Pool-PFT und getrenntem PFT auf der physikalischen oder auf der virtualisierten Ebene getroffen werden.
  • 5 zeigt eine beispielhafte Operation der PFU 35. Wie gezeigt ist, werden Bedarfsanforderungen in dem Anforderungsstrom 45 für die PFU 35 und in einem besonderen Beispiel für jeden der PFTs 7577 verfügbar gemacht. Jede Bedarfsanforderung kann eine Speicheradresse enthalten, die Daten enthält (wobei die Speicheradresse eine Cache-Line-Granularität oder spezifischer sein kann). Somit veranlasst jede dieser Bedarfsanforderungen in typischen Implementierungen die Installation einer Cache-Line, die diese Daten enthält, im L2-Cache 29. Die PFU 35 kann diese Anforderungen überwachen 205 (wobei in einem Beispiel jeder PFT 7577 diese Anforderungen empfängt und überwacht 205). Diese Überwachung kann das Identifizieren 207 enthalten, welche Anforderungen im L2-Cache 29 einen Fehltreffer erzielten; diese Informationen können z. B. durch die L2-Cache-Pipeline 28 über die Kopplung 47 an die PFU 35 gesendet werden.
  • Jeder PFT 7577 kann bestimmen (211), ob diese Adresse innerhalb eines jeweiligen Anpassungsfensters 125 dieses PFT liegt. Wenn das nicht der Fall ist, wird ein PFT-Zuteilungs-Unterverfahren 213 initiiert. Andernfalls wird ein Satz von null oder mehr Vorausleseanforderungen erzeugt. Der Satz weist eine von der PFT-Tier 118 abhängige Anzahl auf und kann null enthalten, so dass kein Vorauslesen stattfindet. Es wird der Zustand für den PFT aktualisiert (219). Diese Aktionen kann die Zustandsmaschine (z. B. die Zustandsmaschine 60) in jedem PFT ausführen. In diesem Beispiel führt jeder PFT 7577 einen Teil der Aktionen aus und kann er die Operation auf der Grundlage von Zwischenergebnissen der Aktionen anhalten. Zum Beispiel braucht jeder PFT mit einem Anpassungsfenster, das sich mit der Adresse in der Anforderung nicht überlappt, den Rest der Aktionen nicht auszuführen. In einigen Implementierungen können einige Speichergebiete als für das Vorauslesen nicht verfügbar angegeben sein.
  • Falls kein PFT ein Anpassungsfenster aufwies, das sich mit der Adresse in einer Bedarfsanforderung überlappt, wird die PFT-Zuteilung 213 ausgeführt. In einem Beispiel enthält die PFT-Zuteilung das Initialisieren des Vertrauenszählers 110 auf 2, wobei einer Anfangs-PFT-Tier 118 ein Vorauslesesatz der Größe null zugeteilt wird. Der Alterszähler 116 kann auf 0 initialisiert werden.
  • Der Arbiter 80 empfängt von jedem PFT 7577 erzeugte Vorausleseanforderungen und bestimmt, welchen Vorausleseanforderungen und in welcher Reihenfolge an die TRU 26 übergeben werden sollen. Außerdem kann der Arbiter 80 für den PFT-Zuteiler 65 Situationen angeben, die die Aufrechterhaltung von PFTs 7577 erfordern. Falls z. B. zwei PFTs Vorausleseanforderungen für dieselbe Cache-Line erzeugen, ist dies eine Angabe, dass sich die Vorauslesefenster dieser zwei PFTs überlappt haben und dass die Zuteilung von einem von ihnen aufgehoben werden kann. Unter diesem Umstand kann die Frage, welche Daten für diese zwei PFTs aufrechterhalten werden, eine Implementierungsentscheidung sein (z. B. die, einen PFT einer höheren Tier, der jedes Mal mehr Cache-Lines vorausliest, oder einen PFT einer niedrigeren Tier, der weniger vorausliest, zu behalten).
  • Wie oben erläutert wurde, veranlasst ein PFT kein Vorauslesen, wenn er in einer niedrigsten Tier des Vorauslesens ist. Somit muss sich ein PFT wenigstens eine Tier nach oben bewegen, um mit dem Vorauslesen zu beginnen. Allerdings ist es unter einigen Umständen möglich, dass die Zuteilung des PFT aufgehoben wird, ohne dass jemals irgendwelche Daten vorausgelesen worden sind, falls bestimmte Bedingungen nicht erfüllt sind. In einer Implementierung bewegt sich jeder PFT in Ansprechen auf einen Schritt der Cache-Lines in Bedarfsanforderungen, die regelmäßig in der Zeit sind, und in einem Adressenschritt, wobei diese Anforderungen weiter einen Fehltreffer im L2-Cache 29 erzielen, nach oben, wobei er Tiers vorausliest. Im Allgemeinen können sich PFTs in Ansprechen darauf, dass Adressen in Bedarfsanforderungen in der Zeit oder im Adressenraum irregulär sind oder dass Bedarfsadressen in Cache-Lines, die vorausgelesen wurden, einen Treffer erzielen, nach unten bewegen, wobei sie Tiers vorauslesen.
  • Die 69 zeigen ein spezifischeres Beispiel der Aktualisierung des PFT-Zustands, der als Eingabe verwendet wird, um zu bestimmen, wann eine PFT-Tier zu ändern ist, und 10 zeigt ein spezifischeres Beispiel, wie diese Eingaben zu verwenden sind. 6 zeigt, dass bestimmt wird, ob eine Cache-Line (CL) für eine Bedarfsanforderung um eine CL (kann vorwärts oder rückwärts sein) von der CL in einer letzten Bedarfsanforderung (in diesem Fenster) verschieden ist. Wenn das der Fall ist, wird der Vertrauenszähler um 1 inkrementiert. Wenn das nicht der Fall ist, wird bestimmt, ob sich die CL von der CL in der vorhergehenden Bedarfsanforderung um mehr als 3 CLs unterscheidet. Wenn das der Fall ist, wird der Vertrauenszähler um 2 dekrementiert, und andernfalls wird er um 1 dekrementiert. In Erinnerung daran, dass das Beispiel den Vertrauenszähler auf 0 initialisiert hat, gibt 6 ein Beispiel, in dem das Vertrauen, dass der PFT eine Folge von Anforderungen nachführt, für die das Vorauslesen nützlich ist, stark verringert wird, falls die nächste angeforderte CL von der vorhergehenden Bedarfs-CL stark verschieden ist. Falls die Differenz aber klein ist, wird das Vertrauen langsamer verringert, um die Möglichkeit einer Anforderungsumordnung zu berücksichtigen. Es gibt verschiedene logisch äquivalente Implementierungen für dieses Beispiel, wobei irgendeine selbstkonsistente Herangehensweise an die Nachführung dieser Informationen bereitgestellt werden kann. Zum Beispiel kann der Vertrauenszähler 110 mit einem anderen Wert initialisiert werden und in Ansprechen auf verschiedene Disparitäten zwischen CLs in Anforderungen anders inkrementiert oder dekrementiert werden.
  • 7 zeigt, dass der L2-Bedarfs-Fehltreffer-Zähler 112 in Ansprechen auf eine Änderung der Tier (275) zurückgesetzt wird (279) und dass der L2-Bedarfs-Fehltreffer-Zähler 112 andernfalls inkrementiert wird (298), falls die Anforderung ein Fehltreffer ist (277), und dekrementiert wird (296), falls sie ein Treffer ist.
  • 8 zeigt, dass der PF-Treffer-Zähler 114 in Ansprechen auf eine Tier-Änderung (290) zurückgesetzt wird (294), und dass andernfalls der PF-Treffer-Zähler inkrementiert wird (298), falls eine Anforderung einen Treffer erzielt (292), und dass er andernfalls dekrementiert wird (296).
  • 9 zeigt, dass der Alterszähler 116 in Ansprechen auf eine Bedarfsanforderung innerhalb des Anpassungsfensters 125 zurückgesetzt wird (305), und andernfalls für jedes bestimmte Alterstaktinkrement (308) inkrementiert wird (309). Der Alterstakt kann z. B. ein Bruchteil oder ein Mehrfaches eines der PFU 35 zugeführten Takts sein. Der Bruchteil oder das Mehrfache kann auf selbstkonsistente Weise in Bezug auf einen Grenzwert eingestellt werden, mit dem der Alterszähler 116, wie im Folgenden beschrieben ist, verglichen wird.
  • 10 zeigt, dass die Vorauslese-Tier 118 in Ansprechen darauf, dass der Vertrauenszähler gleich oder größer (325) als ein jeweiliger Aufwärtsschwellenwert für den Vertrauenszähler ist und dass ein L2-Bedarfs-Fehltreffer-Zähler größer oder gleich (327) als ein jeweiliger Aufwärtsschwellenwert ist, inkrementiert wird (330). Jeder dieser Aufwärtsschwellenwerte kann in Konfigurationsregistern 62 gespeichert werden und kann für die aktuelle Tier spezifisch sein. Umgekehrt wird die Vorauslese-Tier 118 dekrementiert (338), falls entweder die Bestimmung 325 oder die Bestimmung 327 negativ war und falls der Vertrauenszähler 110 kleiner als ein jeweiliger dn-Schwellenwert ist (333) oder falls der Alterszähler 116 größer oder gleich einem jeweiligen dn-Schwellenwert ist (335) oder falls der Vorauslesen-Treffer-Zähler 114 größer oder gleich einem jeweiligen dn-Schwellenwert ist (337). Jeder jeweilige do-Schwellenwert kann in Konfigurationsregistern gespeichert werden und kann außerdem spezifisch für die Vorauslese-Tier sein.
  • Für das beispielhafte Verfahren aus 10 gibt es eine Anzahl von Implementierungsänderungen. Zum Beispiel können die verschiedenen Bestimmungen parallel ausgeführt werden und kann eine geeignete Logik vorgesehen sein, um zu bestimmen, ob inkrementiert werden soll, dekrementiert werden soll oder weder das eine noch das andere getan werden soll. Zum Beispiel können die Bestimmungen 325 und 327 ”UND-verknüpft” sein, während die Bestimmungen 333, 335 und 337 zum Dekrementieren ”ODER-verknüpft” sein können.
  • In einem Beispiel liest eine Anfangs-Vorauslese-Tier (Tier 0) 0 CLs voraus, liest die Tier 1 4 voraus, liest die Tier 2 8 voraus und liest die Tier 3 12 voraus, was ein Maximum ist. Beispielhaft wird bei einem Anfangs-L2-Fehltreffer für eine Bedarfsanforderung ein PFT bei Tier 0 zugeteilt und wird der PFT in Ansprechen auf eine zweite nachfolgende Anforderung, die einen Fehltreffer erzielt, auf eine Tier 1 erhöht und beginnt er mit dem Vorauslesen. Allerdings sind die Aufwärtsschwellenwerte für Tier 1 so eingestellt, dass sie 4 weitere Bedarfsanforderungen für nachfolgende CLs und 3 weitere Fehltreffer erfordern, um auf Tier 2 zu erhöhen. Eine Zunahme von Tier 2 zu Tier 3 kann ähnlich aufbereitet werden. Beispielhaft kann ein PFT bei Tier 2 in Ansprechen darauf, dass 3 Bedarfsanforderungen in vorausgelesenen Cache-Lines Treffer erzielen oder dass das Alter seit der letzten Bedarfsanforderung innerhalb des Anpassungsfensters für diesen PFT ”mehr” als der jeweilige dn-Schwellenwert für diesen Wert ist, zu Tier 1 bewegt werden. Beispielhaft wird der Vertrauenszähler 110 nicht zurückgesetzt, während der L2-Bedarfs-Fehltreffer-Zähler 112, der Vorauslesen-Treffer-Zähler 114 und der Alterszähler 116 jeweils zurückgesetzt werden, wenn es eine Tier-Änderung gibt. Somit ist der Vertrauenszähler 110 für einen Tier-2-PFT in diesem Beispiel höher als für einen Tier-1-PFT. Somit wird in Ansprechen darauf, dass es eine Bedarfsanforderung innerhalb des Anpassungsfensters für den Tier-2-PFT gibt, die aber von der letzten Bedarfsanforderung in diesem Anpassungsfenster um 3 Cache-Lines verschieden ist, der Vertrauenszähler um 2 dekrementiert werden, was das Doppelte der Inkrementrate ist, so dass der Tier-2-PFT in nur zwei solchen großen Fehltreffern zu einem Tier-1-PFT abfällt, und ähnlich für Tier 1 zu Tier 0.
  • Obwohl dies nicht getrennt gezeigt ist, wird der Zeiger 130 der Adresse des letzten Bedarfs für jede innerhalb des Anpassungsfensters 125 empfangene Bedarfsanforderung aktualisiert, wird der Zeiger 132 der Adresse des nächsten Vorauslesens in Verbindung mit der Erzeugung von Vorausleseanforderungen aktualisiert. Der Vorauslesegrenzwert 134 kann statisch oder dynamisch sein oder kann bis zu einem harten Halt dynamisch sein. Zum Beispiel kann der Vorauslesegrenzwert einen harten Halt bei einer Seitenbegrenzung aufweisen, könnte er aber dynamisch eingestellt werden, solange der PFT ein aktives Muster von Anforderungen weiter nachführt.
  • In der obigen Offenbarung werden eine Vielzahl von Werten nachgeführt, aktualisiert und mit jeweiligen Schwellenwerten verglichen. Obwohl die Offenbarung in Bezug auf das Initialisieren, Inkrementieren und Dekrementieren solcher Werte bestimmte Beispiele gegeben hat, ist die Offenbarung darauf, wie selbstkonsistente Herangehensweisen innerhalb des Schutzumfangs der Offenbarung implementiert werden können, nicht beschränkt. Außerdem können für andere Implementierungen als das vorliegende Beispiel andere Schwellenwerte geeignet sein. Solche Schwellenwerte können einer Änderung durch Software unterworfen werden und könnten für verschiedene Lastprofile unterschiedlich eingestellt werden. Ein solcher Schwellenwert kann in Ansprechen auf die Profilbidung des Caches und auf das Vorausleseverhalten zusammen, für bestimmte Lastprofile oder beides eingestellt werden. Zum Beispiel kann eine Verringerung der Aggressivität des Vorauslesens durch eine Anzahl der Cache-Lines, die bei einer gegebenen Tier vorausgelesen werden, dadurch, wie schnell PFT-Tiers in Ansprechen auf Treffer zum Vorauslesen von Lines dekrementiert werden, durch nicht aufeinanderfolgende Cache-Line-Bedarfsanforderungen und durch die Anforderungsalterung abgestimmt werden. Diese Schwellenwerte können auf der Grundlage dessen eingestellt werden, ein wie großes Anweisungsunordnungsfenster in einer bestimmten Implementierung verfügbar ist. Obwohl die obige Offenbarung im Kontext eines Mehrprozessorsystems erfolgte, bei dem von dem CM 10 gesehene Anforderungen von mehreren verschiedenen Prozessoren kommen können, können die hier offenbarten Aspekte ebenfalls in einem Einprozessorsystem implementiert werden. Der Begriff 'Prozessor' enthält irgendeine einer Vielzahl von Maschinenstrukturen, die Daten verarbeiten oder behandeln können, einschließlich z. B. eines digitalen Signalprozessors, einer Festfunktionsschaltungsanordnung, Eingabe/Ausgabe (E/A) oder sogar von Funktionseinheiten innerhalb eines Prozessors. Nochmals weiter enthält 'Prozessor' virtualisierte Ausführungsbetriebsmittel, so dass ein Satz physikalischer Ausführungsbetriebsmittel als mehrere physikalische Prozessoren abstrahiert sein können. Eine operative Entscheidung ist, ob eine Unterstützung für das Vorauslesen von Daten in eine relativ lokale Ablage von einer relativ fernen Ablage bereitgestellt wird, und eine untergeordnete Entscheidung, die die Implementierung der Offenbarung verlangen kann, sind die Fähigkeit der Umordnung von Bedarfsanforderungen, einer Außer-der-Reihe-Verarbeitung, des Multi-Threading oder beide.
  • Moderne Universalprozessoren erfordern regulär, dass über zwei Milliarden Transistoren implementiert werden, während Graphikverarbeitungseinheiten über fünf Milliarden Transistoren aufweisen. Die Transistoranzahlen werden wahrscheinlich zunehmen. Diese Prozessoren verwenden diese Transistoren, um eine zunehmend komplexe Operationsumordnung, Vorhersage, stärkere Parallelität, größere Speicher (einschließlich mehr und größerer Caches) usw. zu implementieren. Somit wird es notwendig, den technischen Gegenstand, der solche Prozessoren betrifft, gleich, ob universell oder anwendungsspezifisch, auf einer für die behandelte Technologie geeigneten Einzelheitsebene beschreiben oder diskutieren zu können. Im Allgemeinen wird eine Hierarchie von Konzepten angewendet, um zu ermöglichen, dass sich der Durchschnittsfachmann auf Einzelheiten des behandelten Gegenstands konzentriert.
  • Zum Beispiel übermitteln Merkmale einer höheren Ebene, wie etwa, welche Anweisungen ein Prozessor unterstützt, die Einzelheiten der Architekturebene. Wenn eine Technologie höherer Ebene wie etwa ein Programmiermodell beschrieben wird, ist eine solche Abstraktionsebene geeignet. Die Mikroarchitektureinzelheit beschreibt Einzelheiten einer höheren Ebene, die eine Implementierung einer Architektur betreffen (selbst während dieselbe Mikroarchitektur verschiedene ISAs ausführen kann). Dennoch beschreiben Mikroarchitektureinzelheiten üblicherweise verschiedene Funktionseinheiten und ihre Beziehung, wie etwa, wie und wann sich Daten zwischen diesen verschiedenen Funktionseinheiten bewegen. Somit ist die Bezugnahme auf diese Einheiten nach ihrer Funktionalität, anstatt Implementierungen dieser Funktionseinheiten zu behandeln, ebenfalls eine geeignete Abstraktionsebene, da jede dieser Funktionseinheiten selbst Hunderttausende oder Millionen von Gates umfassen kann. Wenn ein bestimmtes Merkmal dieser Funktionseinheiten behandelt wird, kann es geeignet sein, Ersatzfunktionen dieser Einheiten zu identifizieren und diese zu abstrahieren, während der relevante Teil dieser Funktionseinheit ausführlicher behandelt wird.
  • Schließlich kann eine genaue logische Anordnung der Gates und der Verdrahtung (eine Netzliste), die diese Funktionseinheiten (im Kontext des Gesamtprozessors) implementieren, spezifiziert werden. Allerdings kann sich die Frage, wie eine solche Logikanordnung in einem bestimmten Chip physikalisch realisiert wird (wie diese Logik und diese Verdrahtung in einem bestimmten Entwurf angeordnet sind), immer noch in unterschiedlichen Verarbeitungstechnologien und aus einer Vielzahl anderer Gründe unterscheiden. Viele der Einzelheiten, die Produktionsnetzlisten für Funktionseinheiten sowie die tatsächliche Anordnung betreffen, werden unter Verwendung der Entwurfsautomatisierung bestimmt, wobei von einer logischen Beschreibung auf einer höheren Ebene der zu implementierenden Logik (z. B. einer ”Hardwarebeschreibungssprache”) fortgeschritten wird.
  • Der Begriff ”Schaltungsanordnung” bedeutet keinen einzeln elektrisch verbundenen Satz von Schaltungen. Eine Schaltungsanordnung kann eine Festfunktions-Schaltungsanordnung, ein konfigurierbare oder eine programmierbare Schaltungsanordnung sein. Allgemein kann eine Schaltungsanordnung, die eine Funktionseinheit implementiert, wahrscheinlicher konfigurierbar sein oder stärker konfigurierbar sein als eine Schaltungsanordnung, die einen spezifischen Abschnitt einer Funktionseinheit implementiert. Zum Beispiel kann eine Arithmetik-Logik-Einheit (ALU) eines Prozessors denselben Abschnitt der Schaltungsanordnung anders wiederverwenden, wenn verschiedene arithmetische oder logische Operationen ausgeführt werden. Somit ist dieser Abschnitt der Schaltungsanordnung für jede verschiedene Operation, wenn er dafür konfiguriert oder auf andere Weise dafür verdrahtet ist, jede verschiedene Operation auszuführen, effektiv eine Schaltungsanordnung oder ein Teil einer Schaltungsanordnung. Eine solche Konfiguration kann z. B. von Anweisungen oder Mikrocode kommen oder darauf beruhen.
  • In allen diesen Fällen übermittelt die Beschreibung von Abschnitten eines Prozessors hinsichtlich seiner Funktionalität dem Durchschnittsfachmann auf dem Gebiet die Struktur. Im Kontext dieser Offenbarung bezieht sich der Begriff ”Einheit” in einigen Implementierungen auf eine Klasse oder Gruppe von Schaltungsanordnungen, die die Funktionen oder die dieser Einheit zugeschriebenen Funktionen implementieren. Eine solche Schaltungsanordnung kann zusätzliche Funktionen implementieren, so dass die Identifizierung einer Schaltungsanordnung, die eine Funktion ausführt, nicht bedeutet, dass dieselbe Schaltungsanordnung oder ein Abschnitt davon nicht ebenfalls andere Funktionen ausführen kann. Unter solchen Umständen kann die Funktionseinheit identifiziert werden und kann daraufhin eine Funktionsbeschreibung der Schaltungsanordnung, die ein bestimmtes Merkmal anders ausführt oder ein neues Merkmal implementiert, beschrieben werden. Zum Beispiel bezieht sich eine ”Decodierungseinheit” auf eine Schaltungsanordnung, die die Decodierung von Prozessoranweisungen implementiert. Die Beschreibung erklärt, dass eine solche Decodierungseinheit und somit eine Schaltungsanordnung, die eine solche Decodierungseinheit implementiert, in einigen Aspekten die Decodierung spezifizierter Anweisungstypen unterstützt. Die Decodierung von Anweisungen unterscheidet sich über verschiedene Architekturen und Mikroarchitekturen, wobei der Begriff abgesehen von den expliziten Anforderungen der Ansprüche keine davon ausschließt. Zum Beispiel können verschiedene Mikroarchitekturen die Anweisungsdecodierung und Anweisungsplanung in Übereinstimmung mit den Entwurfszielen dieser Implementierung etwas anders implementieren. Ähnlich gibt es Situationen, in denen Strukturen ihre Bezeichnungen den Funktionen entnommen haben, die sie ausführen. Zum Beispiel beschreibt ein ”Decodierer” von Programmanweisungen, der sich auf eine vorgeschriebene Weise verhält, eine Struktur, die dieses Verhalten unterstützt. In einigen Fällen kann die Struktur dauerhafte physikalische Differenzen oder Anpassungen gegenüber Decodierern aufweisen, die dieses Verhalten nicht unterstützen. Allerdings kann eine solche Struktur ebenfalls durch eine vorübergehende Anpassung oder Konfiguration, wie etwa eine, die gemäß einer Programmsteuerung, Mikrocode oder einer anderen Quelle der Konfiguration veranlasst wird, erzeugt werden.
  • An den Entwurf einer Schaltungsanordnung gibt es verschiedene Herangehensweisen, wobei eine Schaltungsanordnung z. B. in Bezug auf einen Takt synchron oder asynchron sein kann. Eine Schaltungsanordnung kann dafür ausgelegt, statisch oder dynamisch zu sein. Um verschiedene Funktionseinheiten oder Teile davon zu implementieren, können verschiedene Schaltungsentwurfsphilosophien verwendet werden. Ohne eine kontextspezifische Grundlage umfasst ”Schaltungsanordnung” alle solchen Entwurfsherangehensweisen.
  • Obwohl eine Schaltungsanordnung oder Funktionseinheiten, die hier beschrieben sind, am häufigsten durch eine elektrische Schaltungsanordnung und insbesondere durch eine Schaltungsanordnung, die sich hauptsächlich auf einen in einem Halbleiter implementierten Transistor als ein Hauptschaltelement stützt, implementiert werden können, bezieht sich dieser Begriff selbstverständlich auf die offenbarte Technologie. Zum Beispiel können in einer Schaltungsanordnung, die Aspekte der Offenbarung implementiert, verschiedene physikalische Verfahren wie etwa optische Elemente, Nanoröhrchen, mikroelektromechanische Elemente, Quantenschalter oder eine Quantenspeicherablage, magnetoresistive Logikelemente usw. verwendet werden. Obwohl sich eine Wahl der zur Konstruktion der Schaltungsanordnung oder Funktionseinheiten verwendeten Technologie in Übereinstimmung mit der Technologie im Zeitverlauf ändern kann, ist diese Wahl eine Implementierungsentscheidung, die in Übereinstimmung mit dem dann aktuellen Stand der Technologie getroffen werden muss. Dies wird durch die Übergänge von der Verwendung von Vakuumröhren als Schaltelemente zur Verwendung von Schaltungen mit diskreten Transistoren zur Verwendung integrierter Schaltungen und zu Fortschritten der Speichertechnologien beispielhaft erläutert, wobei, obwohl es in diesen Bereichen viele Erfindungen gab, diese Erfindungen nicht notwendig grundsätzlich änderten, wie Computer grundsätzlich arbeiteten. Zum Beispiel war die Verwendung gespeicherter Programme mit einer Folge von Anweisungen, die aus einer Anweisungssatzarchitektur ausgewählt werden, eine wichtige Änderung gegenüber einem Computer, der das physikalische Neuschreiben zum Ändern des Programms erforderte, wobei aber nachfolgend viele Fortschritte für verschiedene Funktionseinheiten innerhalb eines solchen gespeicherten Computerprogramms gemacht wurden.
  • Funktionsmodule können aus einer Schaltungsanordnung zusammengesetzt sein, wobei diese Schaltungsanordnung eine Festfunktionsschaltungsanordnung, gemäß Programmsteuerung konfigurierbar oder gemäß anderen Konfigurationsinformationen konfigurierbar oder eine Kombination davon sein kann. Somit können die Funktionsmodule selbst durch die Funktionen beschrieben werden, die sie ausführen, um abstrahieren zu helfen, wie einige der Bestandteile solcher Funktionen implementiert werden können.
  • In einigen Situationen können eine Schaltungsanordnung und Funktionsmodule teilweise in Funktionsbegriffen und teilweise in Strukturbegriffen beschrieben sein. In einigen Situationen kann der Strukturteil einer solchen Beschreibung hinsichtlich einer auf eine Schaltungsanordnung oder auf Funktionsmodule oder auf beide angewendeten Konfiguration beschrieben sein.
  • Obwohl ein bestimmter Gegenstand in einer für Beispiele von Strukturmerkmalen und/oder Verfahrensschritten spezifischen Sprache beschrieben worden sein kann, ist der in den beigefügten Ansprüchen definierte Gegenstand selbstverständlich nicht notwendig auf diese beschriebenen Merkmale oder Tätigkeiten beschränkt. Zum Beispiel kann ein gegebenes Strukturmerkmal innerhalb eines anderen Strukturelements subsumiert sein oder kann ein solches Merkmal auf verschiedene Komponenten aufgeteilt oder verteilt sein. Ähnlich kann ein beispielhafter Abschnitt eines Verfahrens als ein Nebenprodukt oder gleichzeitig mit der Ausführung einer anderen Tätigkeit oder eines anderen Verfahrens erreicht werden oder kann er in einigen Implementierungen als mehrere getrennte Tätigkeiten ausgeführt werden. Somit sind Implementierungen in Übereinstimmung mit dieser Offenbarung nicht auf jene mit einer 1:1-Entsprechung zu den gezeigten und/oder beschriebenen Beispielen beschränkt.
  • Oben wurden verschiedene Beispiele für die Computerhardwareprogrammierung und/oder Computersoftwareprogrammierung sowie Beispiele dafür, wie Hardware/Software miteinander kommunizieren können, erläutert. Diese Beispiele für Hardware oder für Hardware, die mit Software konfiguriert wird, und diese Kommunikationsschnittstellen stellen Mittel bereit, um die jeder von ihnen zugeschriebenen Funktionen auszuführen. Zum Beispiel enthält ein Mittel zum Ausführen von Implementierungen von hier beschriebenen Softwareverfahren durch eine Maschine ausführbaren Code, der verwendet wird, um eine Maschine zum Ausführen eines solchen Verfahrens zu konfigurieren. Einige Aspekte der Offenbarung betreffen Prozesse, die durch beschränkte Konfigurierbarkeit oder durch Festfunktionsschaltungen ausgeführt werden, wobei in solchen Situationen Mittel zur Ausführung solcher Verfahren eine oder mehrere Spezialhardware und Hardware mit beschränkter Programmierbarkeit enthalten. Solche Hardware kann durch Software, die in einem Universalcomputer ausgeführt wird, gesteuert oder aufgerufen werden.
  • Implementierungen der Offenbarung können zur Verwendung in eingebetteten Systemen wie etwa Fernsehgeräten, Geräten, Fahrzeugen oder Personal Computer, Desktop-Computer, Laptop-Computern, Nachrichtenprozessoren, Handvorrichtungen, Mehrprozessorsystemen, mikroprozessorbasierter oder programmierbarer Konsumgüterelektronik, Spielekonsolen, Netz-PCs, Minicomputern, Großrechnern, Mobiltelephonen, PDAs, Tablets und dergleichen bereitgestellt werden.
  • Außer Hardwareausführungsformen (z. B. innerhalb einer Zentraleinheit (”CPU”), eines Mikroprozessors, eines Mikrocontrollers, eines digitalen Signalprozessors, eines Prozessorkerns, eines Ein-Chip-Systems (”SOC”) oder irgendeiner anderen programmierbaren oder elektronischen Vorrichtung oder damit gekoppelt) können Implementierungen ebenfalls in Software (z. B. als computerlesbarer Code, Programmcode, Anweisungen und/oder Daten, die in irgendeiner Form wie etwa einer Quellsprache, Objektsprache oder Maschinensprache) verkörpert werden, die z. B. in einem durch einen Computer nutzbaren Medium (z. B. in einem computerlesbaren) Medium, das zum Speichern der Software konfiguriert ist, angeordnet ist. Diese Software kann z. B. die Funktion, die Herstellung, die Modellierung, die Simulation, die Beschreibung und/oder Tests der hier beschriebenen Vorrichtungen und Verfahren ermöglichen. Zum Beispiel kann dies unter Verwendung allgemeiner Programmiersprachen (z. B. C, C++), von GDSII-Datenbanken, Hardwarebeschreibungssprachen (HDL) einschließlich Verilog-HDL, VHDL, SystemC Register Transfer Level (RTL) usw. oder anderer verfügbarer Programme, Datenbanken und/oder Schaltungserfassungshilfsmittel (d. h. schematischer Hilfsmittel) ausgeführt werden. Ausführungsformen können in einem computernutzbaren Medium einschließlich nichtvorübergehender Speicher wie etwa von Speichern, die Halbleiter, eine Magnetplatte, eine optische Platte, einen Eisenspeicher, einen resistiven Speicher usw. verwenden, angeordnet sein.
  • Als spezifische Beispiele können Implementierungen der offenbarten Vorrichtungen und Verfahren selbstverständlich in einem Schutzrechts-Halbleiterkern wie etwa einem Mikroprozessorkern oder einem Abschnitt davon, der in einer Hardwarebeschreibungssprache (HDL) verkörpert ist, die zum Erzeugen einer spezifischen Implementierung einer integrierten Schaltung verwendet werden kann, implementiert werden. Ein computerlesbares Medium kann. solche Beschreibungssprachendaten verkörpern oder speichern und somit einen Herstellungsartikel bilden. Ein nicht vorübergehendes maschinenlesbares Medium ist ein Beispiel für computerlesbare Medien. Beispiele anderer Ausführungsformen enthalten computerlesbare Medien, die eine Register-Transfer-Language-Beschreibung (RTL-Beschreibung), die zur Verwendung in einer spezifischen Architektur- oder Mikroarchitekturimplementierung angepasst werden kann, speichern. Außerdem können die hier beschriebenen Vorrichtungen und Verfahren als eine Kombination aus Hardware und Software, die Hardware konfiguriert oder programmiert, verkörpert werden.
  • Außerdem sind hier in einigen Fällen Termini verwendet worden, da davon ausgegangen wird, dass sie dem Durchschnittsfachmann die Hauptpunkte vernünftiger vermitteln, wobei solche Termini aber nicht als Beschränkung eines Bereichs der Implementierungen, der von den offenbarten Beispielen und anderen Beispielen eingeschlossen wird, anzusehen sind. In der vorstehenden Offenbarung sind eine Anzahl von Beispielen dargestellt und beschrieben worden. Notwendigerweise kann nicht jedes Beispiel jeden Aspekt erläutern und stellen die Beispiele keine ausschließlichen Zusammensetzungen solcher Aspekte dar. Stattdessen können Aspekte, die in Bezug auf eine Figur oder ein Beispiel dargestellt und beschrieben sind, mit anderen Aspekten, die in Bezug auf andere Figuren dargestellt und beschrieben sind, verwendet oder kombiniert werden. Somit versteht der Durchschnittsfachmann aus diesen Offenbarungen, dass die obige Offenbarung hinsichtlich der Wahl von Ausführungsformen in Übereinstimmung mit den Ansprüchen nicht beschränkend ist und vielmehr der Schutzumfang der Ansprüche die Breite und den Schutzumfang der vorliegenden erfindungsgemäßen Ausführungsformen definiert. Der Zusammenfassungsabschnitt in der Beschreibung und die separate Zusammenfassung können einen oder mehrere, aber nicht alle beispielhaften Ausführungsformen und Aspekte im Schutzumfang der Ansprüche darlegen.

Claims (19)

  1. Prozessorsystem, das umfasst: einen oder mehrere Prozessoren; ein Cache-Teilsystem, das mit dem einen oder mit den mehreren Prozessoren gekoppelt ist, wobei das Cache-Teilsystem einen Cache und eine Vorausleseeinheit umfasst, wobei die Vorausleseeinheit mehrere Vorauslesen-Nachführer umfasst, wobei jeder Vorauslesen-Nachführer dafür konfiguriert ist: Initialisiert zu werden, um auf der Grundlage der Anfangsbedarfsanforderung von dem einem oder von den mehreren Prozessoren ein Anpassungsfenster von Cache-Lines nachzuführen, einen Vertrauensindikator aufrechtzuerhalten, der das Vertrauen in Ansprechen auf Bedarfsanforderungen für aufeinanderfolgende Cache-Lines innerhalb des Anpassungsfensters erhöht und das Vertrauen in Ansprechen auf Anforderungen für nicht aufeinanderfolgende Cache-Lines innerhalb des Anpassungsfensters verringert, eine Vorauslese-Tier in Ansprechen sowohl darauf, (1) dass der Vertrauensindikator jeweilige Tier-Erhöhungs-Schwellenkriterien erfüllt, als auch darauf, (2) dass eine Anzahl der Cache-Fehltreffer für Bedarfsanforderungen jeweilige Tier-Erhöhungs-Schwellenkriterien erfüllt, zu aktualisieren, und das Vorauslesen einer Anzahl von Cache-Lines innerhalb eines Vorauslesefensters aus einem Speicherteilsystem in den Cache zu initiieren, wobei die Anzahl der Cache-Lines in Übereinstimmung mit einer dem Vorauslesen-Nachführer zugeteilten dann aktuellen Vorauslese-Tier steht.
  2. Prozessorsystem nach Anspruch 1, wobei jeder der Vorauslesen-Nachführer ferner dafür konfiguriert ist, in Ansprechen darauf, dass der Vertrauensindikator jeweilige Tier-Verringerungs-Schwellenkriterien erfüllt, die Vorauslese-Tier zu aktualisieren.
  3. Prozessorsystem nach Anspruch 1 oder 2, wobei jeder der Vorauslesen-Nachführer dafür konfiguriert ist, in Ansprechen darauf, dass aufeinanderfolgende Anforderungen mehr als zwei Cache-Lines voneinander beabstandet sind, den Vertrauensindikator durch Verringern des Vertrauens um einen größeren Betrag aufrechtzuerhalten.
  4. Prozessorsystem nach Anspruch 3, wobei das Verringern des Vertrauens das Dekrementieren eines Vertrauenszählers umfasst und das Erhöhen des Vertrauens das Inkrementieren des Vertrauenszählers umfasst.
  5. Prozessorsystem nach Anspruch 4, wobei der Vertrauenszähler auf einen Anfangswert initialisiert wird, wenn der Vorauslesen-Nachführer auf der Grundlage der Anfangsbedarfsanforderung initialisiert wird.
  6. Prozessorsystem nach einem der vorhergehenden Ansprüche, wobei jeder der Vorauslesen-Nachführer ferner dafür konfiguriert ist, einen Alterszähler zu aktualisieren, der eine Zeitdauer, seitdem eine letzte Bedarfsanforderung innerhalb des Anpassungsfensters empfangen wurde, nachführt.
  7. Prozessorsystem nach Anspruch 6, wobei jeder der Vorauslesen-Nachführer ferner dafür konfiguriert ist, eine Vorauslese-Tier in Ansprechen darauf, dass der Alterszähler jeweilige Schwellenkriterien erfüllt, zu verringern.
  8. Prozessorsystem nach einen der vorhergehenden Ansprüche, wobei jeder der Vorauslesen-Nachführer ferner dafür konfiguriert ist, bis zu 4 Vorauslese-Tier nachzuführen, wobei jede Tier einer entsprechenden Anzahl von Cache-Lines, die für diese Tier vorausgelesen werden, zugeteilt ist.
  9. Prozessorsystem nach Anspruch 8, wobei einer ersten Vorauslese-Tier ein Cache-Line-Vorauslesegrenzwert von 0 zugeteilt ist und wobei jede nachfolgende Tier einen erhöhten Grenzwert von zwischen zwei und vier Cache-Lines aufweist.
  10. Prozessorsystem nach einen der vorhergehenden Ansprüche, das ferner einen Arbiter umfasst, der zum Empfangen von durch die Vorauslesen-Nachführer erzeugten Vorausleseanforderungen und zum Detektieren von Vorausleseanforderungen für dieselbe Cache-Line gekoppelt ist.
  11. Prozessorsystem nach einen der vorhergehenden Ansprüche, wobei der Cache ein Cache der 2. Ebene ist und wobei der eine oder die mehreren Prozessoren mehrere Prozessoren umfassen, wobei jeder mit einem privaten L1-Cache gekoppelt ist.
  12. Prozessorsystem nach einen der vorhergehenden Ansprüche, wobei das Cache-Teilsystem einen Zuteiler zum Zuteilen der Vorauslesen-Nachführer in Ansprechen auf Bedarfsanforderungen und zum Freigeben von Vorauslesen-Nachführern in Ansprechen darauf, dass die Vorauslese-Tier auf einer niedrigsten Ebene ist und das Vertrauen einen vorgegebenen Wert erreicht, umfasst.
  13. Verfahren, das innerhalb eines Cache-Teilsystems zum Vorauslesen von Daten implementiert wird, wobei das Verfahren umfasst: Empfangen einer Bedarfsanforderung von einem Prozessor und in Ansprechen darauf Zuteilen eines Vorauslesen-Nachführers mit einem Anpassungsfenster, das auf einer Adresse in der Bedarfsanforderung beruht; Aufrechterhalten eines Vertrauensindikators durch Erhöhen des Vertrauens in Ansprechen auf Bedarfsanforderungen für aufeinanderfolgende Cache-Lines innerhalb des Anpassungsfensters und Verringern des Vertrauens in Ansprechen auf Anforderungen für nicht aufeinanderfolgende Cache-Lines innerhalb des Anpassungsfensters; Aktualisieren einer Vorauslese-Tier für den Vorauslesen-Nachführer in Ansprechen sowohl darauf, (1) dass der Vertrauensindikator jeweilige Tier-Erhöhungs-Schwellenkriterien erfüllt, als auch darauf, (2) dass eine Anzahl der Cache-Fehltreffer für Bedarfsanforderungen jeweilige Tier-Erhöhungs-Schwellenkriterien erfüllt; und Initiieren des Vorauslesens einer Anzahl von Cache-Lines innerhalb eines Vorauslesefensters aus einem Speicherteilsystem in den Cache, wobei die Anzahl der Cache-Lines in Übereinstimmung mit einer dem Vorauslesen-Nachführer zugeteilten dann aktuellen Vorauslese-Tier steht.
  14. Verfahren, das innerhalb eines Cache-Teilsystems zum Vorauslesen von Daten implementiert wird, nach Anspruch 13, wobei der Vorauslesen-Nachführer von mehreren Vorauslesen-Nachführern zugeteilt wird und wobei er ferner das Initialisieren der Vorauslese-Tier für den zugeteilten Vorauslesen-Nachführer auf eine Tier 0, in der kein Vorauslesen ausgeführt wird, und des Vertrauensindikators auf einen Anfangswert umfasst.
  15. Verfahren, das innerhalb eines Cache-Teilsystems zum Vorauslesen von Daten implementiert wird, nach Anspruch 13 oder 14, das ferner das Inkrementieren des Vertrauensindikators in Ansprechen darauf, dass der Vertrauensindikator jeweilige Tier-Verringerungs-Schwellenkriterien erfüllt, umfasst.
  16. Verfahren, das innerhalb eines Cache-Teilsystems zum Vorauslesen von Daten implementiert wird, nach einem der vorhergehenden Ansprüche 13–15, das ferner das Aktualisieren der Vorauslese-Tier in Ansprechen darauf, dass der Vertrauensindikator jeweilige Tier-Verringerungs-Schwellenkriterien erfüllt, umfasst.
  17. Verfahren, das innerhalb eines Cache-Teilsystems zum Vorauslesen von Daten implementiert wird, nach einem der vorhergehenden Ansprüche 13–16, wobei das Aufrechterhalten des Vertrauensindikators wenigstens eines der Folgenden umfasst: – Erhöhen des Vertrauens in Ansprechen darauf, dass aufeinanderfolgende Anforderungen eine Cache-Line voneinander entfernt sind. – Verringern des Vertrauens um einen größeren Betrag in Ansprechen darauf, dass aufeinanderfolgende Anforderungen mehr als zwei Cache-Lines voneinander entfernt sind, als in Ansprechen darauf, dass aufeinanderfolgende Anforderungen zwei Cache-Lines voneinander entfernt sind. – Dekrementieren eines Vertrauenszählers und Erhöhen des Vertrauens, was das Inkrementieren des Vertrauenszählers umfasst.
  18. Verfahren, das innerhalb eines Cache-Teilsystems zum Vorauslesen von Daten implementiert wird, nach einem der vorhergehenden Ansprüche 13–17, das ferner das Aktualisieren eines Alterszählers, der eine Zeitdauer, seit innerhalb des Anpassungsfensters eine letzte Bedarfsanforderung empfangen wurde, nachführt, und das Verringern einer Vorauslese-Tier in Ansprechen darauf, dass der Alterszähler jeweilige Schwellenkriterien erfüllt, umfasst.
  19. Verfahren, das innerhalb eines Cache-Teilsystems zum Vorauslesen von Daten implementiert wird, nach einem der vorhergehenden Ansprüche 13–18, das ferner das Detektieren von Vorausleseanforderungen, die von mehreren zugeteilten Vorauslesen-Nachführern, die für dieselbe Cache-Line sind, erzeugt werden, und in Ansprechen darauf das Vereinigen der Vorauslesen-Nachführer umfasst.
DE102015115582.6A 2014-10-22 2015-09-16 Vorrichtung und Verfahren zum Drosseln des Hardwarevorauslesens Pending DE102015115582A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201462067090P 2014-10-22 2014-10-22
US62/067,090 2014-10-22

Publications (1)

Publication Number Publication Date
DE102015115582A1 true DE102015115582A1 (de) 2016-04-28

Family

ID=54544352

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102015115582.6A Pending DE102015115582A1 (de) 2014-10-22 2015-09-16 Vorrichtung und Verfahren zum Drosseln des Hardwarevorauslesens

Country Status (4)

Country Link
US (1) US20160117250A1 (de)
CN (1) CN105550031A (de)
DE (1) DE102015115582A1 (de)
GB (1) GB2532851B (de)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170147249A1 (en) * 2015-11-23 2017-05-25 Qualcomm Incorporated Method to enforce proportional bandwidth allocations for quality of service
US10474578B2 (en) * 2017-08-30 2019-11-12 Oracle International Corporation Utilization-based throttling of hardware prefetchers
US10579531B2 (en) * 2017-08-30 2020-03-03 Oracle International Corporation Multi-line data prefetching using dynamic prefetch depth
US10776282B2 (en) 2017-12-15 2020-09-15 Advanced Micro Devices, Inc. Home agent based cache transfer acceleration scheme
US10671394B2 (en) 2018-10-31 2020-06-02 International Business Machines Corporation Prefetch stream allocation for multithreading systems
US11263138B2 (en) * 2018-10-31 2022-03-01 Arm Limited Correlated addresses and prefetching
US10664403B1 (en) * 2018-11-26 2020-05-26 Ati Technologies Ulc Per-group prefetch status to reduce duplicate prefetch requests
CN112084122B (zh) * 2019-09-30 2021-09-28 成都海光微电子技术有限公司 计算机存储器中对区域预取器的置信度和侵略性控制
WO2020172693A2 (en) * 2020-04-29 2020-08-27 Futurewei Technologies, Inc. Statistic based cache pre-fetcher

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6571318B1 (en) * 2001-03-02 2003-05-27 Advanced Micro Devices, Inc. Stride based prefetcher with confidence counter and dynamic prefetch-ahead mechanism
US7389385B2 (en) * 2003-12-19 2008-06-17 Intel Corporation Methods and apparatus to dynamically insert prefetch instructions based on compiler and garbage collector analysis
US7526616B2 (en) * 2004-03-22 2009-04-28 International Business Machines Corporation Method and apparatus for prefetching data from a data structure
US7975108B1 (en) * 2004-03-25 2011-07-05 Brian Holscher Request tracking data prefetcher apparatus
US20060248280A1 (en) * 2005-05-02 2006-11-02 Al-Sukhni Hassan F Prefetch address generation implementing multiple confidence levels
US7917702B2 (en) * 2007-07-10 2011-03-29 Qualcomm Incorporated Data prefetch throttle
US8214599B2 (en) * 2008-11-04 2012-07-03 Gridiron Systems, Inc. Storage device prefetch system using directed graph clusters
US20130013867A1 (en) * 2011-07-06 2013-01-10 Advanced Micro Devices, Inc. Data prefetcher mechanism with intelligent disabling and enabling of a prefetching function
US9639471B2 (en) * 2012-11-27 2017-05-02 Nvidia Corporation Prefetching according to attributes of access requests
US9047173B2 (en) * 2013-02-21 2015-06-02 Advanced Micro Devices, Inc. Tracking and eliminating bad prefetches generated by a stride prefetcher
US9298634B2 (en) * 2013-03-06 2016-03-29 Gregory RECUPERO Client spatial locality through the use of virtual request trackers
CN103226521B (zh) * 2013-04-18 2016-03-02 浙江大学 多模式数据预取装置及其管理方法

Also Published As

Publication number Publication date
CN105550031A (zh) 2016-05-04
GB2532851A (en) 2016-06-01
US20160117250A1 (en) 2016-04-28
GB201517296D0 (en) 2015-11-11
GB2532851B (en) 2017-09-13

Similar Documents

Publication Publication Date Title
DE102015115582A1 (de) Vorrichtung und Verfahren zum Drosseln des Hardwarevorauslesens
DE19983793B4 (de) System mit einem Prozessor, auf dem mehrere, gleichzeitig aktive Ausführungsentitäten ausgeführt werden, und mit einem mehrere, den Ausführungsentitäten zugewiese Cache-Abschnitte aufweisenden Cache-Speicher
DE112011100743B4 (de) Datenverarbeitungsvorrichtung und -verfahren zum Übertragen einer Arbeitslast zwischen Quell- und Zielverarbeitungsschaltkreisen
DE10353268B3 (de) Paralleler Multithread-Prozessor (PMT) mit geteilten Kontexten
DE112007001171T5 (de) Verfahren für virtualisierten Transaktionsspeicher bei globalem Überlauf
DE112013001361B4 (de) System auf einem Chip, Verfahren, maschinenlesbares Medium und System für die Bereitstellung einer Snoop-Filterung zugeordnet mit einem Datenpuffer
DE102013017509A1 (de) Effiziente Speichervirtualisierung in mehrsträngigen Verarbeitungseinheiten
DE112010005821T5 (de) Kontextwechsel
DE102010054337A1 (de) Mechanismen, um ineffizientes Core-Hopping zu vermeiden und Hardware-unterstützte Auswahl eines Niedrigleitungszustands bereitzustellen
DE112011104596T5 (de) Systeme, Vorrichtungen und Verfahren für ein Hardware- und Softwaresystem zum automatischen Zerlegen eines Programms in mehrere parallele Threads
DE112010003758T5 (de) Instruktionen zum Verwalten einer parallelen Cache-Hierarchie
DE112010004971T5 (de) Ein System, Verfahren und eine Vorrichtung für einen Cache-Flush eines Seitenbereichs und TLB Invalidierung eines Bereichs von Einträgen
DE19506734A1 (de) Computersystem und Verfahren zum Aufrechterhalten der Speicherkonsistenz in einer Busanforderungswarteschlange
DE102013017511A1 (de) Effiziente speichervirtualisierung in mehrsträngigen verarbeitungseinheiten
US20120221812A1 (en) Method for preserving memory affinity in a non-uniform memory access data processing system
DE102013200503A1 (de) Virtualisierungs-Support zum Speichern und Wiederherstellen von Zuständen einer Sprungvorhersage-Logik
DE102010034555A1 (de) Bereitstellen von Zustandsspeicher in einem Prozessor für Systemmanagement-Modus
DE102012222820A1 (de) Anweisung-Zwischenspeicher-Energie-Verminderung
DE112017001700T5 (de) Prozessoren, Verfahren, Systeme und Anweisungen zum Abruf von Daten auf der angegebenen Cache-Ebene mit garantiertem Abschluss
DE112007000645B4 (de) Dynamisch aktualisierbarer, adaptiver Leerlauf-Zeitgeber
DE102018002294A1 (de) Effizientes bereichsbasiertes speicher-rückschreiben zum verbessern der host-zu-geräte-kommunikation für optimale energie und leistung
DE112020004181T5 (de) Bereitstellen eines direkten datenzugriffs zwischen beschleunigern und speicher in einer datenverarbeitungsumgebung
DE102018004727A1 (de) Verfahren und System zum Durchführen von Datenbewegungsoperationen mit Lese-Snapshot und In-Place-Schreibaktualisierung
DE102013206336A1 (de) Cache-Steuerung zur Reduktion von Transaktions-Rollback
DE102013216237A1 (de) Verfahren und System zum automatischen Clock-Gating eines Taktgitters bei einer Taktquelle

Legal Events

Date Code Title Description
R081 Change of applicant/patentee

Owner name: MIPS TECH, LLC, SANTA CLARA, US

Free format text: FORMER OWNER: IMAGINATION TECHNOLOGIES LIMITED, KINGS LANGLEY, HERTFORDSHIRE, GB

R082 Change of representative

Representative=s name: TER MEER STEINMEISTER & PARTNER PATENTANWAELTE, DE

R012 Request for examination validly filed