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

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

Info

Publication number
DE19943938A1
DE19943938A1 DE19943938A DE19943938A DE19943938A1 DE 19943938 A1 DE19943938 A1 DE 19943938A1 DE 19943938 A DE19943938 A DE 19943938A DE 19943938 A DE19943938 A DE 19943938A DE 19943938 A1 DE19943938 A1 DE 19943938A1
Authority
DE
Germany
Prior art keywords
data
command
prefetch
indicator
memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
DE19943938A
Other languages
English (en)
Other versions
DE19943938B4 (de
Inventor
Muhammad Afsar
Klaus Oberlaender
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 North America Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Infineon Technologies North America Corp filed Critical Infineon Technologies North America Corp
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

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

Landscapes

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

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 Da­ tenentnahme, so daß 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 Hauptspei­ cherzugriffszeit zu minimieren, wird ein Pufferspeicher mit höherer Geschwindigkeit benutzt, um zeitweilig Befehle zu puf­ fern, derart, daß gepufferte Befehle dem Prozessor mit minima­ ler Verzögerungszeit bereitgestellt werden. Fig. 1 ist eine Abbildung einer typischen Prozessor- und Speicheranordnung, welche Pufferspeicher mehrerer Ebenen benutzt, um einen Pro­ zessor zu versorgen. In Fig. 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 Schal­ tungsanordnung 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 Mikroprozes­ sor oder eine Zentralprozessoreinheit bezeichnet wird und der einen Computercode wie beispielsweise einem Assemblierungs­ sprachcode 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 Assemblie­ rungssprache an den Prozessor von dem Speicher geliefert und dann durch den Prozessor ausgeführt. Bezugnehmend auf Fig. 2 umfaßt ein Befehl 26 in Assemblierungssprache typischerweise einen Opcode-Anteil 28 und einen Operandenanteil 30. Der Op­ code (für Operationscode) informiert den Prozessor darüber, welche Operation ausgeführt wird. Opcode-Befehle umfassen z. B. Ladebefehle, Addierbefehle und Subtrahierbefehle. Bezugneh­ mend auf Fig. 3 umfaßt 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 Funk­ tionen wie etwa Datenladen, Datenaddieren oder Datensubtrahie­ ren. Der Operand umfaßt den symbolischen Namen für die Spei­ cheradresse der Daten, die durch den Befehl abgearbeitet wer­ den sollen, oder in einigen Fällen die Speicheradressen eines anderen Befehls. Bezugnehmend auf Fig. 3 kann der Operand In­ formationen über die Quelladresse 40 oder -Adressen und die Bestimmungsadresse 42 oder -Adressen umfassen, wo die Quella­ dresse 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. Datenadressierungs­ modi können unterschieden werden in Direktzugriffsadressie­ rungsmodi oder deterministischen Adressierungsmodi. Direktzu­ griffsadressierungsmodi umfassen absolutes Adressieren, Regi­ ster-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 Fig. 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 Pufferverlu­ ste 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 vorabge­ rufen werden als Vorwegnahme eines Datenabrufs durch den Pro­ zessor. Der Vorabruf von Befehlen an den Puffer wird erleich­ tert durch eine sequentielle Art der Befehlsausführung im Com­ puterprogramm. Das heißt, daß Computerprogramme häufig Routi­ nen durchlaufen, die Programmbefehle in einer sequentiellen Reihenfolge benötigen. Als Ergebnis kann ein Strang von Befeh­ len vorabgerufen werden von dem Hauptspeicher an den Puffer mit einem bestimmten Grad an Sicherheit, daß 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 daß ein Vorabruf schwieriger auszuführen ist. Eine übliche für den Abruf von Daten verwendete Technik ist jene, daß beim Auftre­ ten 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 ge­ gangenen 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 ge­ braucht werden könnten.
Zusätzlich zum Block-Daten-Vorabruf bedienen sich andere Tech­ niken 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 beschrie­ ben in dem US-Patent mit der Nummer 5,694,568 und dem Titel "Auf komplexe Speicherzugriffsschemata anwendbares Vorabrufsy­ stem", das Harrison III et al. erteilt wurde. Obwohl diese Technik zufriedenstellend arbeiten mag für seinen beabsichtig­ ten Zweck, beruht die Technik auf der Erkennung von Zugriffs­ mustern, die auf vergangenen Datenzugriffen basieren, bei de­ nen die vergangenen Muster in unzutreffender Weise zukünftige Datenzugriffsmuster vorhersagen.
Im Hinblick auf die Unzulänglichkeiten des bekannten Standes der Technik ist das, was gebraucht wird, ein Verfahren und ei­ ne Vorrichtung zum Daten-Vorabruf, das/die eine hohe Puffer­ trefferrate aufweist.
Zusammenfassung der Erfindung
Ein Verfahren und eine Vorrichtung zum Daten-Vorabruf an einen Niedrige-Ebene-Speicher eines Computersystems bedient sich ei­ nes 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, daß 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 sequentiel­ ler 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 Pro­ grammzähler eines Befehls identifiziert zu werden. Eingaben in die Daten-Vorabruf-Vorhersagetabelle werden aus Befehlen ge­ bildet, die deterministische Adressierungsmodi zum Identifi­ zieren der effektiven Adresse der Quelldaten benutzt. Die Da­ ten-Vorabruf-Vorhersagetabelleneingaben umfassen einen Pro­ grammzählerkennzeichen und einen Nächste-Daten-Vorabruf- Indikator. Das Programmzählerkennzeichen ist der auf den aktu­ ellen Befehl bezogene Programmzähler, und das Programmzähler­ kennzeichen erlaubt es, daß 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 Adres­ sierungsmodusfunktion, welche mit dem Befehl verknüpft ist. Da die Adressierungsmodusfunktion eine deterministische Funktion ist, besteht eine hohe Wahrscheinlichkeit, daß 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äß 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 bevor­ zugten Ausführungsform ist der Prozessor ein beliebiger übli­ cher 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 Da­ tentransferrate zum Prozessor bietet und das auf der System­ hauptleiterplatte, welche mit dem Prozessor über einen System­ bus verbunden ist, plaziert ist. Der Hauptspeicher ist ein Speicher hoher Kapazität, welcher einen relativ langsamen Da­ tentransfer zum Prozessor aufweist. Der Hauptspeicher kann DRAN, Flash-Speicher oder andere geeignete Speichertypen um­ fassen. Der Hauptspeicher ist mit dem Prozessor über einen Sy­ stembus 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 Da­ tenspeicherreferenz und zum Übertragen der mit der vorherge­ sagten Datenspeicherreferenz korrespondierenden Daten zum Puf­ fer der niedrigsten Ebene eines Nächste-Daten-Vorabruf- Controllers, einem Daten-Vorabruf-Prediktor und eines Auffüll­ managers, 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 se­ quentielle 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 be­ dient sich der durch den Nächste-Daten-Vorabruf-Controller ge­ bildeten 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 ver­ antwortlich 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 auf­ tritt 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 Puf­ fer 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 durchsu­ chen. 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 Computersy­ stem zu durchsuchen nach einer Pufferlinie, welch mit der ef­ fektiven Adresse des nächsten Daten-Vorabruf-Indikators über­ einstimmt. Wenn ein Puffertreffer auftritt beim Puffer in der niedrigsten Ebene wird kein Vorabruf notwendig. Wenn anderer­ seits ein Pufferverlust auftritt beim Puffer der niedrigsten Ebene, dann erzeugt der Auffüllmanager eine Vorabrufanforde­ rung 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üllma­ nager die lokalisierten Daten zu dem Puffer in der niedrigsten Ebene im Computersystem. Mit dem zu dem Puffer in der niedrig­ sten Ebene übertragenen Zielvorabrufdaten ist der auf den ak­ tuellen Befehl bezogene Vorabruf-Prozeß komplett. Wenn der ak­ tuelle Befehl schließlich durch den Prozessor ausgeführt wird, besteht eine höhere Wahrscheinlichkeit, daß die durch den ak­ tuellen Befehl angeforderten Daten in den Puffer der niedrig­ sten Ebene plaziert sind, wobei ein schnellstmöglicher Daten­ zugriff gestattet wird.
Kurze Beschreibung der Zeichnungen
Fig. 1 zeigt einen Prozessor und einen Mehrebenen-Speicher nach dem Stand der Technik,
Fig. 2 zeigt einen Assemblierungssprachbefehl nach dem Stande der Technik,
Fig. 3 zeigt spezielle Teile eines Assemblierungssprachbe­ fehls nach dem Stande der Technik,
Fig. 4 zeigt einen Prozessor, einen Mehrebenen-Speicher und eine Daten-Vorabruf-Maschine gemäß der Erfindung,
Fig. 5 zeigt eine Daten-Vorabruf-Tabelleneingabe gemäß der Erfindung,
Fig. 6 zeigt eine Daten-Vorabruf-Vorhersagetabelle gemäß der Erfindung,
Fig. 7 zeigt in einem Flußdiagramm das Zusammenspiel zwi­ schen Elementen des Systems aus Fig. 6 gemäß der Erfindung,
Fig. 8 zeigt in einem Prozeßflußdiagramm ein bevorzugtes erfindungsgemäßes Verfahren.
Detaillierte Beschreibung
Fig. 4 zeigt eine bevorzugte Architektur eines Computersy­ stems 50 gemäß der Erfindung. Die bevorzugte Architektur um­ faßt einen Prozessor 52, eine Daten-Vorabruf-Maschine 56, ei­ nen Puffer 60 der Ebene Null (L0), einen Puffer 64 der Ebene Eins (L1) und einen Hauptspeicher 68. Bei der bevorzugten Aus­ führungsform ist der Prozessor irgendein üblicher Prozessor einschließlich eines Prozessors, der eine oder mehrere Daten­ speicherreferenzen in einem einzigen Taktzyklus erzeugen kann. Der Prozessor umfaßt einen Programmzähler, der die Adressen von auszuführenden Befehlen identifiziert, einen Befehlsdeco­ der, der den Operanden vom Opcode trennt und den Opcode in ei­ ne Reihe elektrischer Signale umwandelt, welche die durch den Opcode repräsentierte Anweisung ausführen, einen Adressdeco­ der, 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 umfaßt ein Speicherteilsystem 54 mit einer Mehrebenen-Pufferanordnung, bei der die Ebenen des Pufferspeichers hinsichtlich Größe und Latenzzeit unterschieden werden. Der L0-Puffer 60 (auch be­ kannt als Primärpuffer) bietet die schnellste Datenübertra­ gungsrate zum Prozessor 52. Der L0-Puffer ist physikalisch na­ he dem Prozessor angeordnet und ist vorzugsweise ein SRAM. Ob­ wohl zum Zwecke der Beschreibung der L0-Puffer als mit dem Prozessor über einen Bus 72 verbunden dargestellt ist, wird der L0-Puffer vorzugsweise auf dem Prozessorchip mit integriert und mit dem Prozessor 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, bietet aber eine langsa­ mere Datentransferrate zum Prozessor. Der L1-Puffer ist vor­ zugsweise ein SRAM auf dem Chip, es kann aber auch eine andere Speicherform wie etwa ein SRAM, das in das auf der System­ hauptleiterplatte 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 benötigt werden, und Opcode-Befehle, die vom Prozessor benötigt werden, werden in einem nicht dar­ gestellten separaten Puffer gespeichert. Obwohl eine geteilte Pufferanordnung beschrieben wird, kann ein vereinigter Puffer, der sowohl Daten als auch Befehle kombiniert, ebenfalls imple­ mentiert werden. Der L0-Puffer erstreckt sich typischerweise von 1 Kb bis zu 64 Kb und der L1-Puffer erstreckt sich typi­ scherweise 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 verbunden ist. Die exakte Pufferausgestaltung ist für die Erfindung nicht kri­ tisch.
Der Hauptspeicher 68 ist ein Speicher hoher Kapazität, der ei­ ne relativ langsame Datentransferrate zum Prozessor 52 bietet. Der Hauptspeicher 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 ist auch mit dem Prozessor über den Bus 72 verbunden.
Die bevorzugte Architektur des Computersystems 50 umfaßt die Daten-Vorabruf-Maschine 56, die den Vorabruf von Daten zwi­ schen dem L0-Puffer 60, dem L1-Puffer 64 und dem Hauptspeicher 68 verwaltet. Die Daten-Vorabruf-Maschine 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 ge­ wünschten Datenspeicherreferenz vorherzusagen und die mit der vorhergesagten Datenspeicherreferenz korrespondierenden Daten zu dem Puffer der niedrigsten Ebene zu übertragen, um die be­ ste 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 untersucht Programmbefehle und verwendet ausgewählte Befehle zum Aufbau einer Daten-Vorabruf- Vorhersagetabelle, die dazu verwendet wird, um den nächsten Daten-Vorabruf vorherzusagen. Der Nächste-Daten-Vorabruf- Controllerauswahlprozeß beinhaltet das Untersuchen einer Be­ fehlslinie, vorzugsweise in Bezug auf einen ausgeführten Be­ fehl, für eine bestimmte Charakteristik. Im besonderen unter­ sucht der Nächste-Daten-Vorabruf-Controller den mit der Quel­ len-Adresse, welche in dem Befehl eingebettet ist, den verbun­ denen Adressierungsmodus, wobei nach Adressierungsmodi gesucht wird, die in die deterministische Adressierungsmoduskategorie fallen. Bei der bevorzugten Ausgestaltung wird der Adressie­ rungsmodus 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 determi­ nistischen Adressierungsmodus identifiziert, wird der Befehl weiterverarbeitet zu einer Daten-Vorabruf-Vorhersagetabellen­ eingabe, die dann dazu benutzt wird, um die Daten-Vorabruf- Vorhersagetabelle zu schaffen. Wenn jedoch der Adressierungs­ modusvektor einen nicht deterministischen Adressierungsmodus identifiziert, dann wird der Befehl in dem aktuellen Vorabruf­ prozeß nicht weiter betrachtet. Befehle, die sich determini­ stischer Adressierungsmodi bedienen, werden in die Daten- Vorabruf-Vorhersagetabelle mit eingebracht, da sie eine be­ kannte 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 ef­ fektiven Adressabruf, wobei eine höhere Puffertrefferrate ge­ schaffen wird.
Die Erzeugung eines Daten-Vorabruf-Vorhersagetabelleneintrags 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 de­ terministischen Adressierungsmodus, der durch den Befehl iden­ tifiziert wird. Ein bevorzugter Daten-Vorabruf-Vorhersage­ tabelleneintrag 90 ist in Fig. 5 dargestellt und umfaßt die folgenden Vektoren; ein Programmzählerkennzeichen 92, einen Nächste-Daten-Vorabruf-Indikator 94, den Quellenadressierungs­ modus 96 und einen Gültiger-Eintrag-Vektor 98. Das Programm­ zählerkennzeichen ist der auf den aktuellen Befehl bezogene Programmzähler. Das Programmzählerkennzeichen erlaubt der Da­ ten-Vorabruf-Vorhersagetabelle, durch den Programmzähler durchsucht zu werden, der auf einen bestimmten Befehl bezogen ist. Der nächste Daten-Vorabruf-Indikator 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 Bei­ spiel 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 Computersy­ stem. 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 Adressie­ rungsmodus der Daten-Vorabruf-Vorhersagetabelleneingabe reprä­ sentiert. Es ist bereits bekannt, daß der Quellenadressie­ rungsmodus 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-Vorhersage­ tabelleneingabe enthalten, denn die Kenntnis des bestimmten involvierten Adressierungsmodus kann bei der Feinabstimmung des Systems hilfreich sein. Der gültige Eingabevektor 98 einer Tabelleneingabe ist ein 1-Bit-Vektor, der die Daten-Vorabruf- Vorhersagetabelleneingabe als gültige Eingabe identifiziert. Obwohl der Quellenadressierungsmodusvektor nicht kritisch für die Erfindung ist, ist dieser in der bevorzugten Ausgestaltung enthalten, um deren Verhalten zu verbessern. Der Quellenadres­ sierungsmodus kann von der Tabelleneingabe entfernt werden, um die Tabelleneingabegröße zu vermindern.
Unter Bezugnahme nochmals auf Fig. 4 ist die nächste Einheit in der Daten-Vorabruf-Maschine 56 der Daten-Vorabruf-Prädiktor (DPP) 80. Der Daten-Vorabruf-Prädiktor bedient sich der aus verschiedenen Tabelleneingaben gebildeten Daten-Vorabruf- Vorhersagetabelle, um schnell die nächste effektive Adresse für den Daten-Vorabruf zu identifizieren. Der Daten-Vorabruf- Prädiktor hält die Daten-Vorabruf-Vorhersagetabelle im Spei­ cher wie etwa einem inhaltsadressierbaren Speicher, der schnell durch das Programmzählerkennzeichen durchsucht werden kann, in Stand. Fig. 6 ist eine Darstellung einer beispiel­ haften Daten-Vorabruf-Vorhersagetabelle 100 mit verschiedenen Tabelleneingaben. Die Daten-Vorabruf-Vorhersagetabelle wird wie ein normaler Puffer behandelt, da sie nicht alle Befehle speichern kann. Pufferersatzmechanismen wie etwa direkt ge­ plante, 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 ist verantwortlich für das Übertragen von in einem Speicher in höherer Ebenen gefun­ denen Vorabrufdaten zu dem Puffer in niedrigster Ebene. Der Auffüllmanager erkennt, wenn ein Vorabrufverlust beim Puffer in niedrigster Ebene auftritt und erzeugt dann eine Vorab­ rufanforderung für einen Speicher in höherer Ebene bis die Zielvorabrufdaten lokalisiert und zu den Puffer in niedrigster Ebene übertragen worden sind. Es ist darauf hinzuweisen, daß 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 auf dem gleichen Chip wie der Prozessor in­ tegriert sind.
Der Betrieb des Computersystems 50 aus Fig. 4 ist mit Bezug auf Fig. 7 beschrieben. Fig. 7 ist ein Flußdiagramm, das die Interaktion zwischen den bezüglich Fig. 4 beschriebenen Ele­ menten darstellt, wobei gleiche Elemente die gleichen Bezugs­ zeichen haben. Um den Vorabrufprozeß zu beginnen, wird das Da­ tenreferenzverhalten verfolgt, um die Daten-Vorabruf- Vorhersagetabelle zu entwickeln. Um die Daten-Vorabruf- Vorhersagetabelle 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 zu erzeugen. Daten-Vorabruf-Vorhersagetabellen­ eingaben -wie in Fig. 5 gezeigt- werden aus den abgearbeite­ ten Befehlen durch Ausführen der Adressierungsmodusfunktion eines Befehls erzeugt, um die effektive Adresse der Daten zu berechnen, welchen vorhergesagt wird, daß sie als nächstes von dem Prozessor benötigt werden. Die erzeugten Tabelleneingaben werden zu dem Daten-Vorabruf-Prädiktor weitergeleitet, um die Daten-Vorabruf-Vorhersagetabelle zu erzeugen. Sobald eine an­ fängliche Daten-Vorabruf-Vorhersagetabelle erzeugt ist, wird die Tabelle kontinuierlich aktualisiert.
Nachdem die Daten-Vorabruf-Vorhersagetabelle 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äsen­ tiert, welcher bald ausgeführt werden soll. Der Programmzähler wird in den Daten-Vorabruf-Prädiktor eingespeist und wird dazu verwendet, um die Programmzählerkennzeichenspalte der Daten- Vorabruf-Vorhersagetabelle auf ein übereinstimmendes Programm­ zählerkennzeichen hin zu durchsuchen. Wenn der aktuelle Pro­ grammzähler vom Prozessor mit einem Programmzählerkennzeichen der Daten-Vorabruf-Vorhersagetabelle übereinstimmt, dann stellt die Daten-Vorabruf-Vorhersagetabelle die nächste effek­ tive Adresse bereit, welche dazu verwendet wird, den Puffer höchster Priorität, z. B. den L0-Puffer 60, nach einer über­ einstimmenden Pufferlinie zu durchsuchen. Wenn andererseits keine übereinstimmende Tabelleneingabe gefunden wird in der Daten-Vorabruf-Vorhersagetabelle, dann kann der Vorabruf fort­ gesetzt werden mit einem anderen Ansatz, wie etwa einem Block­ vorabruf oder der Vorabruf kann unterbrochen werden.
Das Durchsuchen des L0-Puffers 60 beinhaltet die Verwendung des Nächste-Daten-Vorabruf-Indikators, insbesondere der näch­ sten effektiven Adresse, welcher von der passenden Daten- Vorabruf-Vorhersagetabelleneingabe extrahiert wird, um zu se­ hen, ob die identifizierte Pufferlinie in dem L0-Puffer be­ reits existiert. Würde die durch die berechnete nächste effek­ tive Adresse identifizierte Pufferlinie bereits im L0-Puffer existieren, dann ist keine weitere Aktion notwendig, da die wahrscheinlich von einem nächsten Befehl benötigten Daten be­ reits an dem den schnellsten Datenzugriff auf den Prozessor 52 bietenden Speicherplatz plaziert sind. Wenn andererseits die Pufferlinie in dem L0-Puffer nicht existent ist, dann gibt es einen Vorabrufverlust und der Auffüllmanager 84 ist aufgeru­ fen, die Vorabrufdaten zu lokalisieren und die Daten zum L0- Puffer zu übertragen. Der Pufferspeicher wird vorzugsweise auf einer Prioritätsbasis durchsucht, wobei der Puffer auf nied­ rigster Ebene die höchste Priorität und der Puffer auf höch­ ster Ebene die niedrigste Priorität hat.
Wenn ein Vorabrufverlust im L0-Puffer 60 auftritt, erzeugt der Auffüllmanager 84 eine Vorabrufanfrage und leitet die Vorab­ rufanfrage an den nächsten Speicher 104 auf niedrigerer Ebene, z. B. den L1-Puffer, weiter. Wenn die gewünschten Vorabrufda­ ten in einer Pufferlinie des L1-Puffers existent sind, dann wird die durch die berechnete effektive Adresse identifizierte Pufferlinie zum L0-Puffer übertragen, und der Vorabruf ist kom­ plett. Wenn andererseits die Vorabrufdaten in einer Pufferli­ nie des L1-Puffers nicht existent sind, dann übermittelt der Auffüllmanager eine Vorabrufanfrage an den nächsten Speicher in einer niedrigen Ebene, in diesem Fall dem Hauptspeicher. Sobald die Vorabrufdaten in dem Hauptspeicher gefunden worden sind, können die Daten zu dem L0- oder L1-Puffer nach Bedarf übertragen werden. Aufgrund der durch die L0- und L1-Puffer­ verluste verursachte Verzögerung kann das System Zyklusnach­ teile erleiden anstelle von Vorabrufaufwand. Wenn jedoch der Vorabruf in der Lage ist, die vorhergesagten Daten zum L0- Puffer zu bringen und der Prozessor 52 dahin gelangt, die vor­ hergesagten Daten abzurufen, dann ist die Effizienz des Pro­ zessors verbessert durch den Vorabrufprozeß, da die Datenzu­ griffszeit für die an den Prozessor bereitgestellten Daten mi­ nimiert worden ist. Wenn die vorabgerufenen Daten von der Be­ fehlsausführung nicht angefordert werden, dann ist der Vorab­ rufalgorithmus nicht erfolgreich gewesen beim Vorhersagen der von dem aktuellen Befehl benötigten Daten. Der Vorabrufprozeß wird während des Betriebes des Prozessors schnell wiederholt. Es kann auch ein Schema implementiert werden, bei dem der Vorabruf annulliert wird, wenn erkannt wird, daß die Eingabe in die Vorhersagetabelle nicht mit der wirklichen Adresse des Befehls mit demselben Programmzählerkennzeichen übereinstimmt, wobei der Nachteil für die falsche Vorhersage verringert wird. Des Weiteren kann der Grund für die falsche Vorhersage festge­ stellt werden und die Tabelleneingabe kann entfernt werden, bevor sie eine andere falsche Vorhersage erzeugt.
Fig. 8 zeigt das Prozeßflußdiagramm eines bevorzugten Verfah­ rens der Erfindung. Bei einem ersten Schritt 110 wird eine Da­ ten-Vorabruf-Vorhersagetabelle erzeugt. Die Daten-Vorabruf- Vorhersagetabelle bezieht Programmzählerwerte auf effektive Adressen, welche berechnet werden unter Verwendung der auf ei­ nem Befehl bezogenen deterministischen Adressierungsmodusfunk­ tion. Bei einem nächsten Schritt 112 wird ein Programmzähler für einen bevorzustehenden Befehl identifiziert. Der Programm­ zähler ist ein Look-Ahead-Zähler, der es ermöglicht, daß die notwendigen Daten vorabgerufen werden. Bei einem nächsten Schritt 114 wird die Daten-Vorabruf-Vorhersagetabelle durch­ sucht unter Verwendung des Programmzählers von dem bevorste­ henden Befehl, um eine passende Eingabe von der Daten- Vorabruf-Vorhersagetabelle zu finden. Bei einem nächsten Schritt 116 wird ein berechneter nächster Daten-Vorabruf- Indikator 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 Computer­ speicherteilsystem nach Daten durchsucht, die durch den extra­ hierten nächsten Daten-Vorabruf-Indikator identifiziert wer­ den. Bei einem nächsten Schritt 120 werden, sobald die ge­ wünschten Daten innerhalb des Computerspeicherteilsystems lo­ kalisiert 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 (10)

1. Verfahren zum Vorabruf von Daten an einen Niedrige-Ebene- Speicher eines Computersystems, das einen Prozessor und mehre­ re Speicherebenen umfaßt, mit den Schritten:
Verwendung (114) eines Befehllokalisationsindikators, bezogen auf einen bevorstehenden Befehl, um einen Nächste-Daten- Vorabruf-Indikator (94) zu identifizieren;
Durchsuchen (118) der Speicherebenen (60, 64 und 68) des Com­ putersystems nach Daten, die auf den nächsten Daten-Vorabruf- Indikator bezogen sind; und
Übertragen (120) der auf den nächsten Daten-Vorabruf-Indikator bezogenen Daten an den Niedrige-Ebene-Speicher des Computer­ systems.
2. Verfahren nach Anspruch 1, bei dem der Verwendungsschritt folgende Schritte umfaßt:
Identifizieren eines Quellenadressierungsmodus (96), der als determenistischer Adressierungsmodus in einen ersten Befehl (90) eingebettet ist;
Ausführung einer Funktion des deterministischen Adressierungs­ modus des ersten Befehls, um den nächsten Daten-Vorabruf- Indikator (94) zu erzeugen; und
Schaffen einer Tabelleneingabe, die aus einem Befehlsortindi­ kator des ersten Befehls und des erzeugten Nächste-Daten- Vorabruf-Indikators (94) besteht.
3. Verfahren nach Anspruch 2, das zudem einen Schritt zum Er­ zeugen einer Reihe von Tabelleneingaben (100) aus einer Viel­ zahl von Befehlen aufweist.
4. Verfahren nach Anspruch 3, bei dem der Schritt des Erzeu­ gens von Reihen von Tabelleneingaben (100) einen Schritt des Speicherns der Reihen von Tabelleneingaben in einem Speicher umfaßt.
5. Verfahren nach Anspruch 3, bei dem der Verwendungsschritt (114) einen Schritt des Durchsuchens der Reihen von Tabellen­ eingaben basierend auf dem Befehlsortindikator, welcher auf den bevorstehenden Befehl bezogen ist, umfaßt, um eine korre­ spondierende Tabelleneingabe aus der Reihe von Tabelleneinga­ ben (100) zu identifizieren.
6. Verfahren nach Anspruch 5, bei dem der Schritt des Verwen­ dens des Befehlsortindikators ein Schritt des Verwendens eines Programmzählerwertes (92), der auf einen bevorstehenden Befehl bezogen ist, um die Reihen von Tabelleneingaben (100) zu durchsuchen.
7. Verfahren nach Anspruch 5, bei dem der Schritt des Ausfüh­ rens der Funktion des deterministischen Adressierungsmodus (96) ein Schritt des Ausführens eines aus einem Präinkremen­ tierungs-, Postinkrementierungs-, zirkularen Adressierungs- und/oder Bit-Umkehr-Adressierungsmodus ist, wie durch einen ge­ genwärtig ausgeführten Befehl angezeigt wird.
8. Vorrichtung zum Daten-Vorabruf an einen Niedrige-Ebene- Speicher eines Computersystems mit mehreren Speicherebenen und einem Prozessor, das aufweist:
Einen Nächste-Daten-Vorabruf-Controller (76) zum Erzeugen ei­ nes Nächste-Daten-Vorabruf-Indikators durch Ausführen einer Adressierungsmodusfunktion eines Computerbefehls, bei der der Computerbefehl einen Befehlsortindikator hat;
einen Daten-Vorabruf-Prädiktor (80) zum Identifizieren eines nächsten Daten-Vorabruf-Indikators für einen bald auszuführen­ den Computerbefehl unter Verwendung des Befehlsortindikators des bald auszuführenden Computerbefehls;
eine Vorabruf-Maschine (56) zum Durchsuchen der Speicherebenen des Computersystems, um Daten zu lokalisieren, die bezogen sind auf den nächsten Daten-Vorabruf-Indikator für den bald auszuführenden Computerbefehl; und
einen Auffüllmanager (84) zum Übertragen der lokalisierten Da­ ten, die auf den nächsten Daten-Vorabruf-Indikator für den bald auszuführenden Computerbefehl bezogen sind, von einem Hö­ here-Ebene-Speicher zu einem Niedrigere-Ebene-Speicher.
9. Vorrichtung nach Anspruch 8, bei der die Befehlsortindika­ toren Programmzähler (92) sind und bei der die Nächste-Daten- Vorabruf-Indikatoren (94) nächste effektive Adressen sind.
10. Vorrichtung nach Anspruch 8, bei der der Niedrigere-Ebene- Speicher (60) ein Pufferspeicher ist, welcher bei dem Prozes­ sor (52) mit plaziert ist.
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
US178052 1998-10-26
US09/178,052 US6401193B1 (en) 1998-10-26 1998-10-26 Dynamic data prefetching based on program counter and addressing mode

Publications (2)

Publication Number Publication Date
DE19943938A1 true DE19943938A1 (de) 2000-05-04
DE19943938B4 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
US6973457B1 (en) 2002-05-10 2005-12-06 Oracle International Corporation Method and system for scrollable cursors
US7610351B1 (en) 2002-05-10 2009-10-27 Oracle International Corporation Method and mechanism for pipelined prefetching
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
KR20060130120A (ko) * 2004-03-24 2006-12-18 마쯔시다덴기산교 가부시키가이샤 캐시 메모리 및 그 제어 방법
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
US8766707B1 (en) 2013-03-15 2014-07-01 Seagate Technology Llc Integrated always on power island for low power mode operation
US9411394B2 (en) 2013-03-15 2016-08-09 Seagate Technology Llc PHY based wake up from 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

Family Cites Families (11)

* 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
EP0496439B1 (de) 1991-01-15 1998-01-21 Koninklijke Philips Electronics N.V. Rechneranordnung mit Mehrfachpufferdatencachespeicher und Verfahren dafür
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
US5790823A (en) 1995-07-13 1998-08-04 International Business Machines Corporation Operand prefetch table
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

Also Published As

Publication number Publication date
DE19943938B4 (de) 2014-05-22
US6401193B1 (en) 2002-06-04

Similar Documents

Publication Publication Date Title
DE19943938B4 (de) Dynamischer Daten-Vorabruf auf Basis eines Programmzähler- und Adressierungsmodus
DE69434728T2 (de) Synchronisationssystem und verfahren in einem datencachesystem mit aufgeteiltem pegel
DE69816044T2 (de) Zeitstrafen-basierende cache-speicherungs- und ersetzungs-techniken
DE19527031C2 (de) Verzweigungsprozessor für ein Datenverarbeitungssystem und Verfahren zum Betreiben eines Datenverarbeitungssystems
DE19526007C2 (de) Horizontal partitionierter Befehls-Cache-Speicher
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
DE112004002848B4 (de) Mikroprozessor und Verfahren zum Verifizieren einer Speicherdatei in einem derartigen Mikroprozessor
DE10015675B4 (de) Spekulative Auswahl von heißen Spuren in einem dynamischen CACHE-Übersetzer mit geringem Aufwand
DE69433339T2 (de) Lade-/Speicherfunktionseinheiten und Datencachespeicher für Mikroprozessoren
DE60004640T2 (de) Verfahren und vorrichtung für sprungvorhersage unter verwendung einer hybriden branch-history mit gemeinsamer zugriffsstruktur
DE69133302T2 (de) Registerabbildung in einem einzigen Taktzyklus
DE10084556B4 (de) Optimierte Ausführung von statisch sehr wahrscheinlich vorhergesagten Verzweigungsbefehlen
DE69634315T2 (de) Verfahren und Gerät zur Verwendung eines Ladebefehls der keinen Fehler verursacht
DE19855806A1 (de) Vorrichtung und Verfahren zum Durchführen von Unterprogrammaufruf- und Rücksprungoperationen
DE102004013676A1 (de) Schleifenbetrieb mit null Overhead in einem Mikroprozessor mit Anweisungspuffer
DE4447238A1 (de) Einrichung und Verfahren zum Vorhersagen von Verzweigungsinstruktionen
DE19516937A1 (de) Hierarchisches Cachesystem für einen Computer
US4914582A (en) Cache tag lookaside
DE4225228A1 (de) Vorabrufpuffer und einen derartigen vorabrufpuffer verwendendes informationsverarbeitungssystem
DE10219623A1 (de) System und Verfahren zur Speicherentscheidung unter Verwendung von mehreren Warteschlangen
DE69922238T2 (de) Mechanismus zur blockierung von ladeoperationen auf adressengeneration von speicherbefehlen und universeller abhängigkeitsvektor
DE2856680A1 (de) Befehlspuffer fuer ein datenverarbeitungssystem
DE3919802C2 (de) Speichersteuersystem für ein Multiprozessorsystem
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