DE19943938B4 - Dynamischer Daten-Vorabruf auf Basis eines Programmzähler- und Adressierungsmodus - Google Patents

Dynamischer Daten-Vorabruf auf Basis eines Programmzähler- und Adressierungsmodus Download PDF

Info

Publication number
DE19943938B4
DE19943938B4 DE19943938.9A DE19943938A DE19943938B4 DE 19943938 B4 DE19943938 B4 DE 19943938B4 DE 19943938 A DE19943938 A DE 19943938A DE 19943938 B4 DE19943938 B4 DE 19943938B4
Authority
DE
Germany
Prior art keywords
data
prefetch
indicator
instruction
buffer
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE19943938.9A
Other languages
English (en)
Other versions
DE19943938A1 (de
Inventor
Muhammad Afsar
Klaus Oberländer
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.)
Infineon Technologies AG
Original Assignee
Infineon Technologies AG
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 Infineon Technologies AG filed Critical Infineon Technologies AG
Publication of DE19943938A1 publication Critical patent/DE19943938A1/de
Application granted granted Critical
Publication of DE19943938B4 publication Critical patent/DE19943938B4/de
Anticipated expiration legal-status Critical
Expired - Lifetime 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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching
    • G06F9/3832Value prediction for operands; operand history buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6028Prefetching based on hints or prefetch instructions

Abstract

Ein Vorabruf von Daten an einen Niedrigere-Ebene-Speicher eines Computersystems (50) wird erreicht, indem ein Befehlsortindikator verwendet wird, der sich auf einen bevorstehenden Befehl bezieht, um einen Nächste-Daten-Vorabruf-Indikator (94) zu identifizieren und dann den Nächsten-Daten-Vorabruf-Indikator zu verwenden, um die korrespondierenden Vorabrufdaten innerhalb des Speichers (60, 64 und 68) des Computersystems zu lokalisieren. Die Vorabrufdaten werden so plaziert, daß die Vorabrufdaten zu einem Primärpuffer übertragen werden können, wo die Daten schnell von einem Prozessor (52) vorabgerufen werden können, wenn der bevorstehende Befehl ausgeführt wird. Der nächste Daten-Vorabruf-Indikator wird erzeugt durch Ausführen der Adressierungsmodusfunktion (96), die in einem Befehl nur dann eingebettet ist, wenn der Adressierungsmodus des Befehls ein deterministischer Adressierungsmodus wie etwa ein sequentieller ist. Der nächste Daten-Vorabruf-Indikator, vorzugsweise in der Form einer effektiven Adresse, wird durch den Befehlsortindikator, vorzugsweise in der Form eines Programmzählers, identifiziert durch Inbeziehungsetzen der berechneten nächsten effektiven Adressen zu den korrespondierenden Programmzählerkennzeichen in einer durchsuchbaren Tabelle.

Description

  • Hintergrund der Erfindung
  • Die Erfindung bezieht sich im allgemeinen auf den Vorabruf von Daten für den Zugriff durch einen Prozessor. Im spezielleren bezieht sich die Erfindung auf die Vorhersage der nächsten Datenentnahme, so dass die vorhergesagten Daten für den schnellen Puffer der niedrigsten Ebene vorabgerufen werden können, bevor die vorhergesagten Daten von dem Prozessor angefordert werden.
  • Beschreibung der diesbezüglichen Technik
  • Die Befehlsausführungsgeschwindigkeiten im Prozessor sind viel schneller als die Zeit, die für den Zugriff auf Befehle im Hauptspeicher eines Computers erforderlich ist. Die langsamere Hauptspeicherzugriffszeit kann Ausführungsengpässe erzeugen, wenn ein Prozessor gezwungen ist, auf von dem Hauptspeicher zum Prozessor zu übertragende, abgerufene Befehle zu warten. Um die Lücke zwischen Prozessorgeschwindigkeit und Hauptspeicherzugriffszeit zu minimieren, wird ein Pufferspeicher mit höherer Geschwindigkeit benutzt, um zeitweilig Befehle zu Puffern, derart, dass gepufferte Befehle dem Prozessor mit minimaler Verzögerungszeit bereitgestellt werden. 1 ist eine Abbildung einer typischen Prozessor- und Speicheranordnung, welche Pufferspeicher mehrerer Ebenen benutzt, um einen Prozessor zu versorgen. In 1 ist der Prozessor 10 mit einem Puffer 14 der Ebene Null (L0), einem Puffer 16 der Ebene Eins (L1) und einem Hauptspeicher 18 durch einen Bus 22 verbunden. Andere Ausgestaltungen sind möglich und können z. B. den L0-Puffer auf dem gleichen Chip plaziert haben wie der Prozessor und können mit dem Prozessor verbunden sein durch eine Schaltungsanordnung auf dem Chip oder es können die Pufferebenen direkt mit dem Prozessor verbunden sein. Der Prozessor kann ein beliebiger Prozessor sein, der häufig als ein Mikroprozessor oder eine Zentralprozessoreinheit bezeichnet wird und der einen Computercode wie beispielsweise einem Assemblierungssprachcode verarbeitet. Der Pufferspeicher ist häufig ein Hochgeschwindigkeitsspeicher wie beispielsweise ein statischer Direktzugriffsspeicher (SRAM) und der Hauptspeicher kann z. B. ein dynamischer Direktszugriffsspeicher (DPAM) und/oder ein Flash-Speicher sein. Der Pufferspeicher ist typischerweise in der Herstellung teurer als der Hauptspeicher und deshalb ist der Pufferspeicher üblicherweise dahingehend ausgelegt, um nur einen kleinen Anteil der Speicherkapazität des Hauptspeichers zu speichern.
  • Bei typischen Comutersystemen werden die Befehle in Assemblierungssprache an den Prozessor von dem Speicher geliefert und dann durch den Prozessor ausgeführt. Bezugnehmend auf 2 umfasst ein Befehl 26 in Assemblierungssprache typischerweise einen Opcode-Anteil 28 und einen Operandenanteil 30. Der Opcode (für Operationscode) informiert den Prozessor darüber, welche Operation ausgeführt wird. Opcode-Befehle umfassen z. B. Ladebefehle, Addierbefehle und Subtrahierbefehle. Bezugnehmend auf 3 umfasst ein typischer Befehl 32 einen Opcode 38, auf den Bezug genommen wird durch einen Programmzähler (PC) 36. Der Programmzähler ist ein Befehlsortindikator, der die Adresse des gewünschten Befehls innerhalb des Speichers identifiziert, und der Befehl leitet die Ausführung der Funktionen wie etwa Datenladen, Datenaddieren oder Datensubtrahieren. Der Operand umfasst den symbolischen Namen für die Speicheradresse der Daten, die durch den Befehl abgearbeitet werden sollen, oder in einigen Fällen die Speicheradressen eines anderen Befehls. Bezugnehmend auf 3 kann der Operand Informationen über die Quelladresse 40 oder -Adressen und die Bestimmungsadresse 42 oder -Adressen umfassen, wo die Quelladresse der Ort der Daten ist, die durch den Befehl bearbeitet werden sollen, und wo die Bestimmungsadresse der Zielort für Daten ist, welche das Ergebnis der laufenden Operationen sind. Die Quell- und Bestimmungsadressen können Adressierungsmodi umfassen, bei denen die Adressierungsmodi Algorithmen sind, welche die zutreffende Quell- oder Bestimmungsadresse für in dem Speicher gespeicherte Daten festlegt. Datenadressierungsmodi können unterschieden werden in Direktzugriffsadressierungsmodi oder deterministischen Adressierungsmodi. Direktzugriffsadressierungsmodi umfassen absolutes Adressieren, Register-Indirektadressieren und Basis-Plus-Offset-Adressieren. Deterministische Adressierungsmodi umfassen sequentielle Adressierungsmodi wie etwa Register-Indirektadressieren mit Vorher-/Nachher-Inkrementieren, zirkulares Adressieren und/oder Bit-Umkehr-Adressieren.
  • Da – bezugnehmend wieder auf 1 – der Pufferspeicher nicht das gesamte Informationsvolumen speichern kann, das in dem Hauptspeicher 18 gespeichert ist, kann nicht die gesamte vom Prozessor 10 benötigte Information in dem L0-Puffer 14 zur selben Zeit gespeichert werden, und es werden sich Pufferverluste ergeben, wenn der Prozessor Daten anfordert, die nicht in dem L0-Puffer gespeichert sind. Um das Trefferverhältnis des L0-Puffers zu erhöhen, können Befehle und/oder Daten von dem Hauptspeicher zum L0-Puffer 14 oder zum L1-Puffer 16 vorabgerufen werden als Vorwegnahme eines Datenabrufs durch den Prozessor. Der Vorabruf von Befehlen an den Puffer wird erleichtert durch eine sequentielle Art der Befehlsausführung im Computerprogramm. Das heißt, dass Computerprogramme häufig Routinen durchlaufen, die Programmbefehle in einer sequentiellen Reihenfolge benötigen. Als Ergebnis kann ein Strang von Befehlen vorabgerufen werden von dem Hauptspeicher an den Puffer mit einem bestimmten Grad an Sicherheit, dass die Befehle bald von dem Prozessor gebraucht werden. Zwei Zielpuffer können verwendet werden zum Vorabrufen von Befehlen, die sequentielle Charakteristika nicht aufweisen.
  • Im Gegensatz zu Vorabrufsbefehlen kann auf Daten häufig auf eine mehr zufällige Weise zugegriffen werden derart, so dass ein Vorabruf schwieriger auszuführen ist. Eine übliche für den Abruf von Daten verwendete Technik ist jene, dass beim Auftreten eines Pufferverlustes die laufende Pufferlinie von dem Hauptspeicher mit den gewünschten Abrufdaten aufgefüllt wird und eine nächste Pufferlinie mit einem Datenblock aus dem Hauptspeicher aufgefüllt wird, der räumlich den verloren gegangenen Daten nahekommt. Obwohl der Blockpufferungsansatz bei einigen Anwendungen zufriedenstellend arbeiten mag, hat er Nachteile. Genauer gesagt, der Block mit zusätzlichen Daten wird von dem Hauptspeicher vorabgerufen ohne irgendein Wissen über das Datenzugriffsmuster des laufenden Programms und als folge davon kann, wenn das Datenelement, auf das gegenwärtig zugegriffen wird, nicht Teil einer sequentiellen Datenstruktur ist, der Daten-Vorabruf den Puffer mit nicht gebrauchten Daten füllen anstelle von Daten, die bald von dem Prozessor gebraucht werden könnten.
  • Zusätzlich zum Block-Daten-Vorabruf bedienen sich andere Techniken zum Daten-Vorabruf der Erkennung von Zugriffsmustern, die aus vorherigen Datenzugriffen entwickelt werden und dann die erkannten Muster extrapolieren, um neue Vorabrufadressen zu erzeugen. Z. B. ist eine Mustererkennungstechnik beschrieben in dem US-Patent mit der Nummer US 5,694,568 A und dem Titel ”Auf komplexe Speicherzugriffsschemata anwendbares Vorabrufsystem”, das Harrison III et al. erteilt wurde. Obwohl diese Technik zufriedenstellend arbeiten mag für seinen beabsichtigten Zweck, beruht die Technik auf der Erkennung von Zugriffsmustern, die auf vergangenen Datenzugriffen basieren, bei denen die vergangenen Muster in unzutreffender Weise zukünftige Datenzugriffsmuster vorhersagen.
  • Als weiterer Stand der Technik werden die US 5,790,823 A und die DE 692 24 084 T2 genannt.
  • Im Hinblick auf die Unzulänglichkeiten des bekannten Standes der Technik ist das, was gebraucht wird, ein Verfahren und eine Vorrichtung zum Daten-Vorabruf, das/die eine hohe Puffertrefferrate aufweist.
  • Zusammenfassung der Erfindung
  • Diese Aufgabe wird durch ein Verfahren gemäß Patentanspruch 1 und eine Vorrichtung gemäß Patentanspruch 3 gelöst.
  • Ein Verfahren und eine Vorrichtung zum Daten-Vorabruf an einen Niedrige-Ebene-Speicher eines Computersystems bedient sich eines Befehlsortindikators, der sich auf einen bevorstehenden Befehl bezieht, um einen nächsten Daten-Vorabruf-Indikator zu identifizieren und dann den nächsten Daten-Vorabruf-Indikator zu nutzen, um die korrespondierenden Vorabrufdaten innerhalb des Hauptspeichers des Computersystems zu lokalisieren. Die Vorabrufdaten werden lokalisiert derart, dass die Vorabrufdaten zu dem Niedrige-Ebene-Speicher transferiert werden können, wo die Daten durch einen Prozessor schnell abgearbeitet werden können bevor der bevorstehende Befehl ausgeführt wird. Der nächste Daten-Vorabruf-Indikator wird erzeugt durch Ausführen der Adressiermodusfunktion, welche in einen Befehl nur dann eingebettet ist, wenn der Adressierungsmodus des Befehls ein deterministischer Adressierungsmodus wie etwa ein sequentieller Adressierungsmodus ist. Der Nächste-Daten-Vorabruf-Indikator wird durch Zuordnen korrespondierender Nächste-Daten-Vorabruf-Indikatoren zu Befehlsortindikatoren in einer durchsuchbaren Tabelle identifiziert.
  • Bei der bevorzugten Ausführungsform wird eine Daten-Vorabruf-Vorhersagetabelle erzeugt, welche den Nächste-Daten-Vorabruf-Indikator befähigt, basierend auf dem bald auszuführenden Programmzähler eines Befehls identifiziert zu werden. Eingaben in die Daten-Vorabruf-Vorhersagetabelle werden aus Befehlen gebildet, die deterministische Adressierungsmodi zum Identifizieren der effektiven Adresse der Quelldaten benutzt. Die Daten-Vorabruf-Vorhersagetabelleneingaben umfassen einen Programmzählerkennzeichen und einen Nächste-Daten-Vorabruf-Indikator. Das Programmzählerkennzeichen ist der auf den aktuellen Befehl bezogene Programmzähler, und das Programmzählerkennzeichen erlaubt es, dass die Daten-Vorabruf-Vorhersagetabelle durch den Programmzähler durchsucht werden, der auf einen bestimmten Befehl bezogen ist. Der Nächste-Daten-Vorabruf-Indikator ist die effektive Adresse der Daten, welche wahrscheinlich beim nächsten Mal, bei dem der gleiche Befehl ausgeführt wird, benötigt werden. Der Nächste-Daten-Vorabruf-Indikator wird berechnet durch Ausführen der Adressierungsmodusfunktion, welche mit dem Befehl verknüpft ist. Da die Adressierungsmodusfunktion eine deterministische Funktion ist, besteht eine hohe Wahrscheinlichkeit, dass die berechnete nächste effektive Adresse die tatsächliche effektive Adresse sein wird, die das nächste Mal, wenn der Befehl mit demselben Programmzählerwert ausgeführt wird, abgerufen wird.
  • Die Elemente eines Computersystems gemäss einer bevorzugten Ausführungsform der Erfindung umfassen einen Prozessor, einen Puffer der Ebene Null, einen Puffer der Ebene Eins, einen Hauptspeicher und eine Daten-Vorabruf-Maschine. Bei der bevorzugten Ausführungsform ist der Prozessor ein beliebiger üblicher Prozessor mit einem Programmzähler, welcher die Adresse von Befehlen identifiziert, die ausgeführt werden sollen. Der Puffer der Ebene Null ist vorzugsweise ein SRAM, welches die schnellste Datentransfer-Rate zum Prozessor bietet und welches physikalisch nahe dem Prozessor plaziert ist. Der Puffer der Ebene Eins ist vorzugsweise ein SRAM, das eine langsamere Datentransferrate zum Prozessor bietet und das auf der Systemhauptleiterplatte, welche mit dem Prozessor über einen Systembus verbunden ist, plaziert ist. Der Hauptspeicher ist ein Speicher hoher Kapazität, welcher einen relativ langsamen Datentransfer zum Prozessor aufweist. Der Hauptspeicher kann DRAN, Flash-Speicher oder andere geeignete Speichertypen umfassen. Der Hauptspeicher ist mit dem Prozessor über einen Systembus verbunden.
  • Die Daten-Vorabruf-Maschine wird vorzugsweise in den Prozessor integriert und bewerkstelligt den Daten-Vorabruf zwischen dem Puffer der Ebene Null, dem Puffer der Ebene Eins und dem Hauptspeicher. Die Daten-Vorabruf-Maschine bedient sich zum Vorhersagen der effektive Adresse der nächsten gewünschten Datenspeicherreferenz und zum Übertragen der mit der vorhergesagten Datenspeicherreferenz korrespondierenden Daten zum Puffer der niedrigsten Ebene eines Nächste-Daten-Vorabruf-Controllers, einem Daten-Vorabruf-Prediktor und eines Auffüllmanagers, um die beste Gelegenheit für einen Puffertreffer auf die Ausführung eines bestimmten Befehls zu erzeugen.
  • Der Nächste-Daten-Vorabruf-Controller sortiert Befehle mit nicht deterministischen Adressierungsmodi aus und verwendet Befehle mit deterministischen Adressierungsmodi wie etwa sequentielle Adressierungsmodi, um eine Daten-Vorabruf-Vorhersagetabelle aufzubauen, welche dazu verwendet wird, den nächsten Vorabruf vorherzusagen. Das Erzeugen einer Daten-Vorabruf-Vorhersagetabelleneingabe beinhaltet das Berechnen der auf den aktuellen Befehl bezogenen nächsten effektiven Adresse durch Ausführen der auf den aktuellen Befehl bezogenen Adressierungsmodusfunktion. Der Daten-Vorabruf-Prädiktor bedient sich der durch den Nächste-Daten-Vorabruf-Controller gebildeten Daten-Vorabruf-Vorhersagetabelle, um schnell die nächste effektive Adresse für einen auf einen bevorstehenden Befehl bezogenen Daten-Vorabruf zu identifizieren. Der Daten-Vorabruf-Prädiktor hält die Daten-Vorabruf-Vorhersagetabelle in einen inhaltsadressierbaren Speicher aufrecht, welcher schnell durch ein Programmzählerkennzeichen durch sucht werden kann. Ein Auffüllmanager der Daten-Vorabruf-Maschine ist verantwortlich für das Übertragen von Vorabrufdaten, welche nicht in dem Puffer der niedrigsten Ebene gefunden werden, zu dem Puffer in der niedrigsten Ebene, wenn ein Vorabrufverlust auftritt beim Puffer der niedrigsten Ebene. Der Auffüllmanager erzeugt Vorabrufanfragen für einen Speicher auf höherer Ebene, bis die gewünschten Vorabrufdaten lokalisiert und zu dem Puffer in der niedrigsten Ebene übertragen worden sind.
  • Im Betrieb erzeugt der Nächste-Daten-Vorabruf-Controller die Daten-Vorabruf-Vorhersagetabelle unter Verwendung ausgeführter Befehle, welche deterministische Adressierungsmodi darstellen.
  • Die Daten-Vorabruf-Vorhersagetabelle ist in dem Daten-Vorabruf-Prädiktor plaziert und wird fortlaufend erneuert durch den Nächste-Daten-Vorabruf-Controller. Wenn ein neuer Befehl identifiziert wird als ein Befehl, der bald ausgeführt werden soll, wird der auf den Befehl bezogene Programmzähler an den Daten-Vorabruf-Prädiktor weitergeleitet. Der auf den Befehl bezogene Programmzähler wird durch den Daten-Vorabruf-Prädiktor dazu verwendet, um die Programmzähler-Kennzeichenspalte der Daten-Vorabruf-Vorhersagetabelle nach einem übereinstimmenden Programmzählerkennzeichen zu durchsuchen. Wenn ein übereinstimmendes Programmzählerkennzeichen identifiziert wird, wird der nächste Daten-Vorabruf-Indikator aus der Tabelleneingabe extrahiert und der Indikator wird dazu verwendet, den Puffer auf niedrigster Ebene in dem Computersystem zu durchsuchen nach einer Pufferlinie, welch mit der effektiven Adresse des nächsten Daten-Vorabruf-Indikators übereinstimmt. Wenn ein Puffertreffer auftritt beim Puffer in der niedrigsten Ebene wird kein Vorabruf notwendig. Wenn andererseits ein Pufferverlust auftritt beim Puffer der niedrigsten Ebene, dann erzeugt der Auffüllmanager eine Vorabrufanforderung unter Verwendung des Nächste-Daten-Vorabruf-Indikators, welcher die Speicher der höheren Ebenen in die Lage versetzt, nach Daten mit der korrespondierenden effektiven Adresse zu suchen. Sobald die Daten mit der korrespondierenden nächsten effektiven Adresse lokalisiert sind, überträgt der Auffüllmanager die lokalisierten Daten zu dem Puffer in der niedrigsten Ebene im Computersystem. Mit dem zu dem Puffer in der niedrigsten Ebene übertragenen Zielvorabrufdaten ist der auf den aktuellen Befehl bezogene Vorabruf-Prozess komplett. Wenn der aktuelle Befehl schliesslich durch den Prozessor ausgeführt wird, besteht eine höhere Wahrscheinlichkeit, dass die durch den aktuellen Befehl angeforderten Daten in den Puffer der niedrigsten Ebene platziert sind, wobei ein schnellstmöglicher Datenzugriff gestattet wird.
  • Kurze Beschreibung der Zeichnungen
  • 1 zeigt einen Prozessor und einen Mehrebenen-Speicher nach dem Stand der Technik,
  • 2 zeigt einen Assemblierungssprachbefehl nach dem Stande der Technik,
  • 3 zeigt spezielle Teile eines Assemblierungssprachbefehls nach dem Stande der Technik,
  • 4 zeigt einen Prozessor, einen Mehrebenen-Speicher und eine Daten-Vorabruf-Maschine gemäss der Erfindung,
  • 5 zeigt eine Daten-Vorabruf-Tabelleneingabe gemäss der Erfindung,
  • 6 zeigt eine Daten-Vorabruf-Vorhersagetabelle gemäss der Erfindung,
  • 7 zeigt in einem Flussdiagramm das Zusammenspiel zwischen Elementen des Systems aus 6 gemäss der Erfindung,
  • 8 zeigt in einem Prozessflussdiagramm ein bevorzugtes erfindungsgemäßes Verfahren.
  • Detaillierte Beschreibung
  • 4 zeigt eine bevorzugte Architektur eines Computersystems 50 gemäss der Erfindung. Die bevorzugte Architektur umfasst einen Prozessor 52, eine Daten-Vorabruf-Maschine 56, einen Puffer 60 der Ebene Null (L0), einen Puffer 64 der Ebene Eins (L1) und einen Hauptspeicher 68. Bei der bevorzugten Ausführungsform ist der Prozessor 52 irgendein üblicher Prozessor einschließlich eines Prozessors, der eine oder mehrere Datenspeicherreferenzen in einem einzigen Taktzyklus erzeugen kann. Der Prozessor 52 umfasst einen Programmzähler, der die Adressen von auszuführenden Befehlen identifiziert, einen Befehlsdecoder, der den Operanden vom Opcode trennt und den Opcode in eine Reihe elektrischer Signale umwandelt, welche die durch den Opcode repräsentierte Anweisung ausführen, einen Adressdecoder, der innerhalb des Speichers den physikalischen Ort der benötigten Daten festlegt, einen Akkumulator, der zeitweilig Werte speichert, und eine Arithmetik-Logik-Einheit, welche die mathematischen Funktionen des Prozessors ausführt.
  • Die bevorzugte Architektur eines Computersystems 50 umfasst ein Speicherteilsystem 54 mit einer Mehrebenen-Pufferanordnung, bei der die Ebenen des Pufferspeichers hinsichtlich Grösse und Latenzzeit unterschieden werden. Der L0-Puffer 60 (auch bekannt als Primärpuffer) bietet die schnellste Datenübertragungsrate zum Prozessor 52. Der L0-Puffer 60 ist physikalisch nahe dem Prozessor 52 angeordnet und ist vorzugsweise ein SRAM. Obwohl zum Zwecke der Beschreibung der L0-Puffer 60 als mit dem Prozessor 52 über einen Bus 72 verbunden dargestellt ist, wird der L0-Puffer 60 vorzugsweise auf dem Prozessorchip mit integriert und mit dem Prozessor 52 durch eine auf dem Chip befindliche Schaltungsanordnung mit hoher Bandbreite verbunden. Der L1-Puffer 64 (auch bekannt als Sekundärpuffer) hat eine größere Speicherkapazität als der L0-Puffer 60, bietet aber eine langsamere Datentransferrate zum Prozessor 52. Der L1-Puffer 64 ist vorzugsweise ein SRAM auf dem Chip, es kann aber auch eine andere Speicherform wie etwa ein SRAM, das in das auf der Systemhauptleiterplatte befindliche System-RAN integriert sein kann. Bei der bevorzugten Ausführungsform speichern der L0-Pufferspeicher und der L1-Pufferspeicher nur Operandendaten, welche von dem Prozessor 52 benötigt werden, und Opcode-Befehle, die vom Prozessor 52 benötigt werden, werden in einem nicht dargestellten separaten Puffer gespeichert. Obwohl eine geteilte Pufferanordnung beschrieben wird, kann ein vereinigter Puffer, der sowohl Daten als auch Befehle kombiniert, ebenfalls implementiert werden. Der L0-Puffer 60 erstreckt sich typischerweise von 1 Kb bis zu 64 Kb und der L1-Puffer 64 erstreckt sich typischerweise von 64 Kb bis zu 1 Mb, obwohl dies nicht kritisch ist. Obwohl eine Zweiebenen-Pufferanordnung beschriebenen ist, sind andere Pufferanordnungen möglich einschließlich z. B. mehreren Pufferebenen (1 bis x) und/oder ein Pufferspeicher, der auf andere Weise mit einem Prozessor 52 verbunden ist. Die exakte Pufferausgestaltung ist für die Erfindung nicht kritisch.
  • Der Hauptspeicher 68 ist ein Speicher hoher Kapazität, der eine relativ langsame Datentransferrate zum Prozessor 52 bietet. Der Hauptspeicher 68 kann ein DRAM, ein SRAM, ein Flash-Speicher und ein FRAM miteinschließen. Das Speicherteilsystem kann des Weiteren mit Eingabe-/Ausgabe-Einheiten verbunden sein, wie beispielsweise einen magnetischen Speicher. Der Hauptspeicher 68 ist auch mit dem Prozessor 52 über den Bus 72 verbunden.
  • Die bevorzugte Architektur des Computersystems 50 umfasst die Daten-Vorabruf-Maschine 56, die den Vorabruf von Daten zwischen dem L0-Puffer 60, dem L1-Puffer 64 und dem Hauptspeicher 68 verwaltet. Die Daten-Vorabruf-Maschine 56 ist der Brennpunkt der Erfindung und bedient sich eines Nächste-Daten-Vorabruf-Controllers 76, eines Daten-Vorabruf-Prädiktors 80 und eines Auffüllmanagers 84, um die effektive Adresse der nächsten gewünschten Datenspeicherreferenz vorherzusagen und die mit der vorhergesagten Datenspeicherreferenz korrespondierenden Daten zu dem Puffer der niedrigsten Ebene zu übertragen, um die beste Chance für einen Puffertreffer auf die Ausführung eines gegebenen Befehls zu erzeugen.
  • Die erste Einheit in der Daten-Vorabruf-Maschine 56 ist der Nächste-Daten-Vorabruf-Controller 76. Der Nächste-Daten-Vorabruf-Controller 76 untersucht Programmbefehle und verwendet ausgewählte Befehle zum Aufbau einer Daten-Vorabruf-Vorhersagetabelle 100, die dazu verwendet wird, um den nächsten Daten-Vorabruf vorherzusagen. Der Nächste-Daten-Vorabruf-Controllerauswahlprozess beinhaltet das Untersuchen einer Befehlslinie, vorzugsweise in Bezug auf einen ausgeführten Befehl, für eine bestimmte Charakteristik. Im besonderen untersucht der Nächste-Daten-Vorabruf-Controller 76 den mit der Quellen-Adresse, welche in dem Befehl eingebettet ist, den verbundenen Adressierungsmodus, wobei nach Adressierungsmodi gesucht wird, die in die deterministische Adressierungsmoduskategorie fallen. Bei der bevorzugten Ausgestaltung wird der Adressierungsmodus durch einen 3-Bit-Vektor identifiziert und der Adressierungsmodusvektor des Befehls wird durch einen fest verdrahteten Komparator geleitet, um festzulegen, ob der Adressierungsmodusvektor mit irgendwelchen voreingestellten deterministischen Adressierungsmodusvektoren übereinstimmt, welche durch einen System-Setup identifiziert worden sind. Bei der bevorzugten Ausgestaltung umfassen die deterministischen Adressierungsmodi sequentielle Adressierungsmodi wie etwa Prä- und Post-Inkrementieren, zirkulares Adressieren und Bit-Umkehr-Adressierungsmodi.
  • Wenn der Adressierungsmodusvektor eines Befehls einen deterministischen Adressierungsmodus identifiziert, wird der Befehl weiterverarbeitet zu einer Daten-Vorabruf-Vorhersagetabelleneingabe, die dann dazu benutzt wird, um die Daten-Vorabruf-Vorhersagetabelle 100 zu schaffen. Wenn jedoch der Adressierungsmodusvektor einen nicht deterministischen Adressierungsmodus identifiziert, dann wird der Befehl in dem aktuellen Vorabrufprozess nicht weiter betrachtet. Befehle, die sich deterministischer Adressierungsmodi bedienen, werden in die Daten-Vorabruf-Vorhersagetabelle mit eingebracht, da sie eine bekannte Funktion bereit stellen, welche dazu verwendet werden kann, die effektive Adresse zu berechnen, die beim nächsten Mal identifiziert wird, wenn der gleiche Befehl erneut zur Ausführung aufgerufen wird. In Programmen, die zu den gleichen Befehlen viele Male zurückkehren, korrespondiert häufig die nächste effektive Adressenvorhersage mit dem tatsächlichen effektiven Adressabruf, wobei eine höhere Puffertrefferrate geschaffen wird.
  • Die Erzeugung eines Daten-Vorabruf-Vorhersagetabelleneintrags 90 wird durchgeführt durch den Nächste-Daten-Vorabruf-Controller 76 und beinhaltet das Berechnen der nächsten auf den aktuellen Befehl bezogenen effektiven Adresse und der Verwendung des deterministischen Adressierungsmodus, der durch den Befehl identifiziert wird. Ein bevorzugter Daten-Vorabruf-Vorhersagetabelleneintrag 90 ist in 5 dargestellt und umfasst die folgenden Vektoren; ein Programmzählerkennzeichen 92, einen Nächste-Daten-Vorabruf-Indikator 94, den Quellenadressierungsmodus 96 und einen Gültiger-Eintrag-Vektor 98. Das Programmzählerkennzeichen 92 ist der auf den aktuellen Befehl bezogene Programmzähler. Das Programmzählerkennzeichen 92 erlaubt der Daten-Vorabruf-Vorhersagetabelle 100, durch den Programmzähler durchsucht zu werden, der auf einen bestimmten Befehl bezogen ist. Der nächste Daten-Vorabruf-Indikator 94 ist ein Vektor, der die effektive Adresse der nächsten Pufferlinie identifiziert, die dann angefordert werden würde, wenn z. B. die sequentielle Adressierungsmodusfunktion des aktuellen Befehls ausgeführt wird, um die nächste effektive Adresse zu berechnen. Ein Beispiel der Berechnung einer nächsten effektiven Adresse (EA) unter einem postinkrementierenden Adressierungsmodus ist wie folgt: Aktuelle EA = A0 Nächste EA = A0 + Konstante.
  • Ein Beispiel für das Berechnen einer nächsten effektiven Adresse unter einem präinkrementierenden Adressierungsmodus ist wie folgt: Aktuelle EA = A0 + Konstante A0 = A0 + Konstante und Nächste EA = A0 + Konstante + Konstante.
  • Die zum Identifizieren einer effektiven Adresse erforderliche Anzahl von Bits in den nächsten Daten-Vorabruf-Indikatorvektor ist eine Funktion der Speicherorganisation auf dem Computersystem. Bei der bevorzugten Ausgestaltung ist der Nächste-Daten-Vorabruf-Indikatorvektor 12 Bits.
  • Der Quellenadressierungsmodusvektor 96 bei der Daten-Vorabruf-Vorhersagetabelleneingabe ist ein Vektor, der den Adressierungsmodus der Daten-Vorabruf-Vorhersagetabelleneingabe repräsentiert. Es ist bereits bekannt, dass der Quellenadressierungsmodus in die deterministische Adressierungsmoduskategorie fällt, da der Befehl aussortiert worden wäre, wenn der Befehl einen nicht deterministischen Adressierungsmodus hätte. Jedoch ist der Adressierungsmodus in der Daten-Vorabruf-Vorhersagetabelleneingabe enthalten, denn die Kenntnis des bestimmten involvierten Adressierungsmodus kann bei der Feinabstimmung des Systems hilfreich sein. Der Gültiger-Eintrag-Vektor 98 eines Tabelleneintrags 90 ist ein 1-Bit-Vektor, der den Daten-Vorabruf-Vorhersagetabelleneintrag als gültigen Eintrag identifiziert. Obwohl der Quellenadressierungsmodusvektor nicht kritisch für die Erfindung ist, ist dieser in der bevorzugten Ausgestaltung enthalten, um deren Verhalten zu verbessern. Der Quellenadressierungsmodus kann von dem Tabelleneintrag 90 entfernt werden, um die Tabelleneingabegröße zu vermindern.
  • Unter Bezugnahme nochmals auf 4 ist die nächste Einheit in der Daten-Vorabruf-Maschine 56 der Daten-Vorabruf-Prädiktor (DPP) 80. Der Daten-Vorabruf-Prädiktor 80 bedient sich der aus verschiedenen Tabelleneinträgern 90 gebildeten Daten-Vorabruf-Vorhersagetabelle 100, um schnell die nächste effektive Adresse für den Daten-Vorabruf zu identifizieren. Der Daten-Vorabruf-Prädiktor 80 hält die Daten-Vorabruf-Vorhersagetabelle 100 im Speicher wie etwa einem inhaltsadressierbaren Speicher, der schnell durch das Programmzählerkennzeichen 92 durchsucht werden kann, in Stand. 6 ist eine Darstellung einer beispielhaften Daten-Vorabruf-Vorhersagetabelle 100 mit verschiedenen Tabelleneingaben. Die Daten-Vorabruf-Vorhersagetabelle 100 wird wie ein normaler Puffer behandelt, da sie nicht alle Befehle speichern kann. Pufferersatzmechanismen wie etwa direkt geplante, zweiwege-satz-verknüpfte, voll-satz-verknüpfte oder irgendwelche andere Speicherersatzmechanismen können verwendet werden.
  • Die nächste Einheit in der Daten-Vorabruf-Maschine 56 ist der Auffüllmanager 84. Der Auffüllmanager 84 ist verantwortlich für das Übertragen von in einem Speicher in höherer Ebenen gefundenen Vorabrufdaten zu dem Puffer in niedrigster Ebene 60.
  • Der Auffüllmanager 84 erkennt, wenn ein Vorabrufverlust beim Puffer in niedrigster Ebene 60 auftritt und erzeugt dann eine Vorabrufanforderung für einen Speicher in höherer Ebene bis die Zielvorabrufdaten lokalisiert und zu den Puffer in niedrigster Ebene 60 übertragen worden sind. Es ist darauf hinzuweisen, dass obwohl die Funktionen der Daten-Vorabruf-Maschine separat von dem Prozessor 52 zum Zwecke der Beschreibung dargestellt sind, bei der bevorzugten Ausgestaltung die Teileinheiten der Daten-Vorabruf-Maschine 56 auf dem gleichen Chip wie der Prozessor 52 integriert sind.
  • Der Betrieb des Computersystems 50 aus 4 ist mit Bezug auf 7 beschrieben. 7 ist ein Flussdiagramm, das die Interaktion zwischen den bezüglich 4 beschriebenen Elementen darstellt, wobei gleiche Elemente die gleichen Bezugszeichen haben. Um den Vorabrufprozess zu beginnen, wird das Datenreferenzverhalten verfolgt, um die Daten-Vorabruf-Vorhersagetabelle 100 zu entwickeln. Um die Daten-Vorabruf-Vorhersagetabelle 100 zu erzeugen, selektiert der nächste Daten-Vorabruf-Controller 76 die ausgeführten Befehle vom Prozessor 52, welche sich deterministischer Adressierungsmodi bedienen, um effektive Adressen als die nächsten Daten-Vorabruf-Indikatoren 94 zu erzeugen. Daten-Vorabruf-Vorhersagetabelleneinträge 90 – wie in 5 gezeigt – werden aus den abgearbeiteten Befehlen durch Ausführen der Adressierungsmodusfunktion eines Befehls erzeugt, um die effektive Adresse der Daten zu berechnen, welchen vorhergesagt wird, dass sie als nächstes von dem Prozessor 52 benötigt werden. Die erzeugten Tabelleneinträge 90 werden zu dem Daten-Vorabruf-Prädiktor 80 weitergeleitet, um die Daten-Vorabruf-Vorhersagetabelle 100 zu erzeugen. Sobald eine anfängliche Daten-Vorabruf-Vorhersagetabelle 100 erzeugt ist, wird die Tabelle kontinuierlich aktualisiert.
  • Nachdem die Daten-Vorabruf-Vorhersagetabelle 100 erzeugt ist, wird ein Programmzähler vom Prozessor 52 zu dem Daten-Vorabruf-Prädiktor 80 übertragen. Der Programmzähler ist ein Look-Ahead-Programmzähler, der einen zukünftigen Befehl repräsentiert, welcher bald ausgeführt werden soll. Der Programmzähler wird in den Daten-Vorabruf-Prädiktor 80 eingespeist und wird dazu verwendet, um die Programmzählerkennzeichenspalte der Daten-Vorabruf-Vorhersagetabelle 100 auf ein übereinstimmendes Programmzählerkennzeichen 92 hin zu durchsuchen. Wenn der aktuelle Programmzähler vom Prozessor 52 mit einem Programmzählerkennzeichen 92 der Daten-Vorabruf-Vorhersagetabelle 100 übereinstimmt, dann stellt die Daten-Vorabruf-Vorhersagetabelle 100 die nächste effektive Adresse bereit, welche dazu verwendet wird, den Puffer höchster Priorität, z. B. den L0-Puffer 60, nach einer übereinstimmenden Pufferlinie zu durchsuchen. Wenn andererseits kein übereinstimmender Tabelleneintrag 90 gefunden wird in der Daten-Vorabruf-Vorhersagetabelle 100, dann kann der Vorabruf fortgesetzt werden mit einem anderen Ansatz, wie etwa einem Blockvorabruf oder der Vorabruf kann unterbrochen werden.
  • Das Durchsuchen des L0-Puffers 60 beinhaltet die Verwendung des Nächste-Daten-Vorabruf-Indikators 94, insbesondere der nächsten effektiven Adresse, welcher von dem passenden Daten-Vorabruf-Vorhersagetabelleneintrag 90 extrahiert wird, um zu sehen, ob die identifizierte Pufferlinie in dem L0-Puffer 60 bereits existiert. Würde die durch die berechnete nächste effektive Adresse identifizierte Pufferlinie bereits im L0-Puffer 60 existieren, dann ist keine weitere Aktion notwendig, da die wahrscheinlich von einem nächsten Befehl benötigten Daten bereits an dem den schnellsten Datenzugriff auf den Prozessor 52 bietenden Speicherplatz platziert sind. Wenn andererseits die Pufferlinie in dem L0-Puffer 60 nicht existent ist, dann gibt es einen Vorabrufverlust und der Auffüllmanager 84 ist aufgerufen, die Vorabrufdaten zu lokalisieren und die Daten zum L0-Puffer 60 zu übertragen. Der Pufferspeicher wird vorzugsweise auf einer Prioritätsbasis durchsucht, wobei der Puffer auf niedrigster Ebene die höchste Priorität und der Puffer auf höchster Ebene die niedrigste Priorität hat.
  • Wenn ein Vorabrufverlust im L0-Puffer 60 auftritt, erzeugt der Auffüllmanager 84 eine Vorabrufanfrage und leitet die Vorabrufanfrage an den nächsten Speicher 104 auf niedrigerer Ebene, z. B. den L1-Puffer 64, weiter. Wenn die gewünschten Vorabrufdaten in einer Pufferlinie des L1-Puffers 64 existent sind, dann wird die durch die berechnete effektive Adresse identifizierte Pufferlinie zum L0-Puffer 60 übertragen, und der Vorabruf ist komplett. Wenn andererseits die Vorabrufdaten in einer Pufferlinie des L1-Puffers 64 nicht existent sind, dann übermittelt der Auffüllmanager 84 eine Vorabrufanfrage an den nächsten Speicher 104 in einer niedrigen Ebene, in diesem Fall dem Hauptspeicher 68. Sobald die Vorabrufdaten in dem Hauptspeicher gefunden worden sind, können die Daten zu dem L0- oder L1-Puffer 60, 64 nach Bedarf übertragen werden. Aufgrund der durch die L0- und L1-Pufferverluste verursachte Verzögerung kann das System Zyklusnachteile erleiden anstelle von Vorabrufaufwand. Wenn jedoch der Vorabruf in der Lage ist, die vorhergesagten Daten zum L0-Puffer 60 zu bringen und der Prozessor 52 dahin gelangt, die vorhergesagten Daten abzurufen, dann ist die Effizienz des Prozessors 52 verbessert durch den Vorabrufprozess, da die Datenzugriffszeit für die an den Prozessor 52 bereitgestellten Daten minimiert worden ist. Wenn die vorabgerufenen Daten von der Befehlsausführung nicht angefordert werden, dann ist der Vorabrufalgorithmus nicht erfolgreich gewesen beim Vorhersagen der von dem aktuellen Befehl benötigten Daten. Der Vorabrufprozess wird während des Betriebes des Prozessors 52 schnell wiederholt. Es kann auch ein Schema implementiert werden, bei dem der Vorabruf annulliert wird, wenn erkannt wird, dass die Eingabe in die Vorhersagetabelle 100 nicht mit der wirklichen Adresse des Befehls mit demselben Programmzählerkennzeichen 92 übereinstimmt, wobei der Nachteil für die falsche Vorhersage verringert wird. Des Weiteren kann der Grund für die falsche Vorhersage festgestellt werden und der Tabelleneintrag 90 kann entfernt werden, bevor sie eine andere falsche Vorhersage erzeugt.
  • 8 zeigt das Prozessflussdiagramm eines bevorzugten Verfahrens der Erfindung. Bei einem ersten Schritt 110 wird eine Daten-Vorabruf-Vorhersagetabelle 100 erzeugt. Die Daten-Vorabruf-Vorhersagetabelle 100 bezieht Programmzählerwerte auf effektive Adressen, welche berechnet werden unter Verwendung der auf einem Befehl bezogenen deterministischen Adressierungsmodusfunktion. Bei einem nächsten Schritt 112 wird ein Programmzähler für einen bevorzustehenden Befehl identifiziert. Der Programmzähler ist ein Look-Ahead-Zähler, der es ermöglicht, dass die notwendigen Daten vorabgerufen werden. Bei einem nächsten Schritt 114 wird die Daten-Vorabruf-Vorhersagetabelle 100 durchsucht unter Verwendung des Programmzählers von dem bevorstehenden Befehl, um eine passende Eingabe von der Daten-Vorabruf-Vorhersagetabelle 100 zu finden. Bei einem nächsten Schritt 116 wird ein berechneter Nächste-Daten-Vorabruf-Indikator 94 in Form einer effektiven Adresse von der passenden Daten-Vorabruf-Vorhersagetabelleneingabe extrahiert, um das Computerspeicherteilsystem nach den gewünschten Daten zu durchsuchen. Bei einem nächsten Schritt 118 wird das Computerspeicherteilsystem nach Daten durchsucht, die durch den extrahierten Nächste-Daten-Vorabruf-Indikator 94 identifiziert werden. Bei einem nächsten Schritt 120 werden, sobald die gewünschten Daten innerhalb des Computerspeicherteilsystems lokalisiert worden sind, die gewünschten Daten zu dem Puffer in der niedrigeren Ebene übertragen, wenn die Daten noch nicht in dem Puffer der niedrigsten Ebene gegenwärtig sind.

Claims (3)

  1. Verfahren zum Vorabruf von Daten in einen Niedrige-Ebene-Speicher (60) eines Computersystems, das einen Prozessor (52) und mehrere Speicherebenen (60, 64, 68) umfasst, mit den Schritten: Erzeugen (110) einer Daten-Vorabruf-Vorhersage-Tabelle (100) für eine Vielzahl von ausgeführten Befehlen mit deterministischem Adressierungsmodus, mit einer Verknüpfungen zwischen Befehlsortindikatoren (92) zur Lokalisierung von Befehlen und Nächste-Daten-Vorabruf-Indikatoren (94) zur Lokalisierung der Vorabrufdaten, wobei die Nächste-Daten-Vorabruf-Indikatoren (94) durch Ausführen des deterministischen Adressierungsmodus des jeweiligen Befehls berechnnet werden; Identifizieren eines Befehlsortindikators für einen bevorstehenden Befehl (112); Bestimmen des mit dem Befehlsortindikator verknüpften Nächste-Daten-Vorabruf-Indikators (114, 116); Übertragen der auf den nächsten Daten-Vorabrufindikator bezogenen Daten an den Niedrige-Ebene-Speicher (60) des Computersystems, wenn diese nicht im Niedrig-Ebene-Speicher existent sind.
  2. Verfahren nach Anspruch 1, bei dem der Schritt des Ausführens der Funktion des dederministischen Adressierungsmodus (96) ein Schritt des Ausführens eines aus einem Präinkrementierungs-, Postinkrementierungs-, zirkularen Adressierungs- und/oder Bit-Umkehr-Adressierungsmodus ist, wie durch einen gegenwärtig ausgeführten Befehl angezeigt wird.
  3. Vorrichtung zum Daten-Vorabruf an einen Niedrige-Ebene-Speicher eines Computersystems mit mehreren Speicherebenen (60, 64, 68) und einem Prozessor (52), das aufweist: Einen Nächste-Daten-Vorabruf-Controller (76) zum Erzeugen eines Nächste-Daten-Vorabruf-Indikators (94) durch Ausführen einer Adressierungsmodusfunktion eines Computerbefehls mit deterministischem Adressierungsmodus, bei der der Computerbefehl einen Befehlsortindikator (92) hat; einen Daten-Vorabruf-Prädiktor (80) zum Identifizieren eines nächsten Daten-Vorabruf-Indikators (94) für einen bald auszuführenden Computerbefehl unter Verwendung des Befehlsortindikators (92) des bald auszuführenden Computerbefehls (112) mit einem inhaltsadressierbaren Speicher mit einer Daten-Vorabruf-Vorhersagetabelle (100) mit einer Verknüpfung zwischen einem Programmzählerkennzeichen (92), dem Nächste-Daten-Vorabruf-Indikator (94) einem Eintrag über den Quellenadressierungsmodus (96) und einem Gültiger-Eintrag-Vektor (98); eine Vorabruf-Maschine (56) zum Durchsuchen der Speicherebenen des Computersystems, um Daten zu lokalisieren, die bezogen sind auf den Nächsten-Daten-Vorabruf-Indikator (94) für den bald auszuführenden Computerbefehl (112); und einen Auffüllmanager (84) zum Übertragen der lokalisierten Daten, die auf den Nächsten-Daten-Vorabruf-Indikator (94) für den bald auszuführenden Computerbefehl (112) bezogen sind, von einem Höhere-Ebene-Speicher (64, 68) zu einem Niedrigere-Ebene-Speicher (60), wenn diese im Niedrigere-Ebene-Speicher (60) nicht existent sind.
DE19943938.9A 1998-10-26 1999-09-14 Dynamischer Daten-Vorabruf auf Basis eines Programmzähler- und Adressierungsmodus Expired - Lifetime DE19943938B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/178,052 US6401193B1 (en) 1998-10-26 1998-10-26 Dynamic data prefetching based on program counter and addressing mode
US178052 1998-10-26

Publications (2)

Publication Number Publication Date
DE19943938A1 DE19943938A1 (de) 2000-05-04
DE19943938B4 true DE19943938B4 (de) 2014-05-22

Family

ID=22650991

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19943938.9A Expired - Lifetime DE19943938B4 (de) 1998-10-26 1999-09-14 Dynamischer Daten-Vorabruf auf Basis eines Programmzähler- und Adressierungsmodus

Country Status (2)

Country Link
US (1) US6401193B1 (de)
DE (1) DE19943938B4 (de)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7089331B1 (en) * 1998-05-29 2006-08-08 Oracle International Corporation Method and mechanism for reducing client-side memory footprint of transmitted data
JP3968914B2 (ja) * 1999-06-02 2007-08-29 株式会社日立製作所 ディスクアレイ装置
US7389284B1 (en) 2000-02-29 2008-06-17 Oracle International Corporation Method and mechanism for efficient processing of remote-mapped queries
US6871273B1 (en) * 2000-06-22 2005-03-22 International Business Machines Corporation Processor and method of executing a load instruction that dynamically bifurcate a load instruction into separately executable prefetch and register operations
US6795876B1 (en) * 2001-03-27 2004-09-21 Intel Corporation Adaptive read pre-fetch
DE10116863A1 (de) * 2001-04-04 2002-10-17 Infineon Technologies Ag Schnittstelle
US7103590B1 (en) 2001-08-24 2006-09-05 Oracle International Corporation Method and system for pipelined database table functions
US7610351B1 (en) 2002-05-10 2009-10-27 Oracle International Corporation Method and mechanism for pipelined prefetching
US6973457B1 (en) 2002-05-10 2005-12-06 Oracle International Corporation Method and system for scrollable cursors
US20040193754A1 (en) * 2003-03-27 2004-09-30 International Business Machines Corporation DMA prefetch
US7380059B2 (en) * 2003-05-16 2008-05-27 Pillar Data Systems, Inc. Methods and systems of cache memory management and snapshot operations
US7200689B2 (en) * 2003-07-31 2007-04-03 International Business Machines Corporation Cacheable DMA
US20050149562A1 (en) * 2003-12-31 2005-07-07 International Business Machines Corporation Method and system for managing data access requests utilizing storage meta data processing
US20070186048A1 (en) * 2004-03-24 2007-08-09 Matsushita Electric Industrial Co., Ltd. Cache memory and control method thereof
US7657667B2 (en) * 2004-03-25 2010-02-02 International Business Machines Corporation Method to provide cache management commands for a DMA controller
US7904604B2 (en) * 2004-07-19 2011-03-08 Seagate Technology Llc Expedited and low power command sequence servicing
US7420841B2 (en) * 2006-08-30 2008-09-02 Qimonda Ag Memory device and method for transforming between non-power-of-2 levels of multilevel memory cells and 2-level data bits
US7930485B2 (en) * 2007-07-19 2011-04-19 Globalfoundries Inc. Speculative memory prefetch
US8667225B2 (en) * 2009-09-11 2014-03-04 Advanced Micro Devices, Inc. Store aware prefetching for a datastream
US8583894B2 (en) * 2010-09-09 2013-11-12 Advanced Micro Devices Hybrid prefetch method and apparatus
US8850123B2 (en) * 2010-10-19 2014-09-30 Avago Technologies General Ip (Singapore) Pte. Ltd. Cache prefetch learning
US9367468B2 (en) 2013-01-15 2016-06-14 Qualcomm Incorporated Data cache way prediction
US9335809B2 (en) 2013-03-15 2016-05-10 Seagate Technology Llc Volatile memory storing system data during low power mode operation and monitoring the voltage supplied to the memory during low power mode
US9411394B2 (en) 2013-03-15 2016-08-09 Seagate Technology Llc PHY based wake up from low power mode operation
US8766707B1 (en) 2013-03-15 2014-07-01 Seagate Technology Llc Integrated always on power island for low power mode operation
US9792224B2 (en) * 2015-10-23 2017-10-17 Intel Corporation Reducing latency by persisting data relationships in relation to corresponding data in persistent memory
US10592154B1 (en) * 2018-01-31 2020-03-17 EMC IP Holding Company LLC Accessing data previously migrated to a cloud
US11099995B2 (en) 2018-03-28 2021-08-24 Intel Corporation Techniques for prefetching data to a first level of memory of a hierarchical arrangement of memory
US10613869B2 (en) * 2018-03-29 2020-04-07 Arm Limited Branch target address provision

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69224084T2 (de) * 1991-01-15 1998-07-23 Koninkl Philips Electronics Nv Rechneranordnung mit Mehrfachpufferdatencachespeicher und Verfahren dafür
US5790823A (en) * 1995-07-13 1998-08-04 International Business Machines Corporation Operand prefetch table

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4926323A (en) 1988-03-03 1990-05-15 Advanced Micro Devices, Inc. Streamlined instruction processor
US5210838A (en) * 1990-05-15 1993-05-11 Sun Microsystems, Inc. Method and apparatus for predicting the effective addresses of future memory load operations in a microprocessor
US5784711A (en) * 1990-05-18 1998-07-21 Philips Electronics North America Corporation Data cache prefetching under control of instruction cache
US5367656A (en) 1992-03-13 1994-11-22 Bull Hn Information Systems Inc. Controlling cache predictive prefetching based on cache hit ratio trend
US5704053A (en) 1995-05-18 1997-12-30 Hewlett-Packard Company Efficient explicit data prefetching analysis and code generation in a low-level optimizer for inserting prefetch instructions into loops of applications
US5694568A (en) 1995-07-27 1997-12-02 Board Of Trustees Of The University Of Illinois Prefetch system applicable to complex memory access schemes
US5829028A (en) * 1996-05-06 1998-10-27 Advanced Micro Devices, Inc. Data cache configured to store data in a use-once manner
US5778435A (en) * 1996-05-30 1998-07-07 Lucent Technologies, Inc. History-based prefetch cache including a time queue
US6055622A (en) * 1997-02-03 2000-04-25 Intel Corporation Global stride prefetching apparatus and method for a high-performance processor

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69224084T2 (de) * 1991-01-15 1998-07-23 Koninkl Philips Electronics Nv Rechneranordnung mit Mehrfachpufferdatencachespeicher und Verfahren dafür
US5790823A (en) * 1995-07-13 1998-08-04 International Business Machines Corporation Operand prefetch table

Also Published As

Publication number Publication date
US6401193B1 (en) 2002-06-04
DE19943938A1 (de) 2000-05-04

Similar Documents

Publication Publication Date Title
DE19943938B4 (de) Dynamischer Daten-Vorabruf auf Basis eines Programmzähler- und Adressierungsmodus
DE19526007C2 (de) Horizontal partitionierter Befehls-Cache-Speicher
DE69434728T2 (de) Synchronisationssystem und verfahren in einem datencachesystem mit aufgeteiltem pegel
DE69433339T2 (de) Lade-/Speicherfunktionseinheiten und Datencachespeicher für Mikroprozessoren
DE112004002848B4 (de) Mikroprozessor und Verfahren zum Verifizieren einer Speicherdatei in einem derartigen Mikroprozessor
DE69534148T2 (de) Rechnersystem zur Ausführung von Verzweigungsbefehlen
DE69738188T2 (de) Verfahren und apparat für eine erhöhte genauigkeit bei der verzweigungsvorhersage in einem superskalaren mirkroprozessor
DE69816044T2 (de) Zeitstrafen-basierende cache-speicherungs- und ersetzungs-techniken
DE19527031C2 (de) Verzweigungsprozessor für ein Datenverarbeitungssystem und Verfahren zum Betreiben eines Datenverarbeitungssystems
DE60009151T2 (de) Vorhersage von datenbeförderung von speicher- zum ladebefehl mit untrainierung
DE69634315T2 (de) Verfahren und Gerät zur Verwendung eines Ladebefehls der keinen Fehler verursacht
DE4335475A1 (de) Datenverarbeitungseinrichtung mit Cache-Speicher
DE19855806A1 (de) Vorrichtung und Verfahren zum Durchführen von Unterprogrammaufruf- und Rücksprungoperationen
US4914582A (en) Cache tag lookaside
DE19516937A1 (de) Hierarchisches Cachesystem für einen Computer
DE10056827A1 (de) Duale Verwendung von Cache-Verbindungen
DE10219623A1 (de) System und Verfahren zur Speicherentscheidung unter Verwendung von mehreren Warteschlangen
DE112005002420T5 (de) Verfahren und Vorrichtung zum Pushen von Daten in den Cache eines Prozessors
DE102013204414A1 (de) Daten-Cachespeicherblock-Freigabeanforderungen in einer Cachespeicherhierarchie mit mehreren Ebenen
US5257360A (en) Re-configurable block length cache
DE102013204417A1 (de) Daten-Cachespeicherblock-Freigabeanforderungen
DE2856680A1 (de) Befehlspuffer fuer ein datenverarbeitungssystem
DE3919802C2 (de) Speichersteuersystem für ein Multiprozessorsystem
DE10392127T5 (de) Verwendung eines Kontextidentifizierers in einem Zwischenspeicher
DE112004001248B4 (de) Mikroprozessor und Verfahren zum Ausführen einer index-behafteten Speicher-zu-Lade-Weiterleitung

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
R016 Response to examination communication
R016 Response to examination communication
R082 Change of representative

Representative=s name: PATENTANWAELTE WESTPHAL MUSSGNUG & PARTNER, DE

R082 Change of representative

Representative=s name: PATENTANWAELTE WESTPHAL MUSSGNUG & PARTNER, DE

R081 Change of applicant/patentee

Owner name: INFINEON TECHNOLOGIES AG, DE

Free format text: FORMER OWNER: INFINEON TECHNOLOGIES NORTH AMERICA CORP., SAN JOSE, US

Effective date: 20121022

Owner name: INFINEON TECHNOLOGIES AG, DE

Free format text: FORMER OWNER: INFINEON TECHNOLOGIES CORPORATION, SAN JOSE, US

Effective date: 20121016

Owner name: INFINEON TECHNOLOGIES AG, DE

Free format text: FORMER OWNER: INFINEON TECHNOLOGIES CORPORATION, SAN JOSE, CALIF., US

Effective date: 20121016

Owner name: INFINEON TECHNOLOGIES AG, DE

Free format text: FORMER OWNER: INFINEON TECHNOLOGIES NORTH AMERICA CORP., SAN JOSE, CALIF., US

Effective date: 20121022

R082 Change of representative

Representative=s name: PATENTANWAELTE WESTPHAL MUSSGNUG & PARTNER, DE

Effective date: 20121016

Representative=s name: PATENTANWAELTE WESTPHAL MUSSGNUG & PARTNER, DE

Effective date: 20121022

Representative=s name: WESTPHAL, MUSSGNUG & PARTNER PATENTANWAELTE MI, DE

Effective date: 20121022

Representative=s name: WESTPHAL, MUSSGNUG & PARTNER PATENTANWAELTE MI, DE

Effective date: 20121016

R018 Grant decision by examination section/examining division
R020 Patent grant now final
R020 Patent grant now final

Effective date: 20150224

R071 Expiry of right