DE69816044T2 - Zeitstrafen-basierende cache-speicherungs- und ersetzungs-techniken - Google Patents

Zeitstrafen-basierende cache-speicherungs- und ersetzungs-techniken Download PDF

Info

Publication number
DE69816044T2
DE69816044T2 DE69816044T DE69816044T DE69816044T2 DE 69816044 T2 DE69816044 T2 DE 69816044T2 DE 69816044 T DE69816044 T DE 69816044T DE 69816044 T DE69816044 T DE 69816044T DE 69816044 T2 DE69816044 T2 DE 69816044T2
Authority
DE
Germany
Prior art keywords
data
cache
priority value
data element
priority
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
DE69816044T
Other languages
English (en)
Other versions
DE69816044D1 (de
Inventor
Per Liedberg
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.)
Telefonaktiebolaget LM Ericsson AB
Original Assignee
Telefonaktiebolaget LM Ericsson AB
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 Telefonaktiebolaget LM Ericsson AB filed Critical Telefonaktiebolaget LM Ericsson AB
Publication of DE69816044D1 publication Critical patent/DE69816044D1/de
Application granted granted Critical
Publication of DE69816044T2 publication Critical patent/DE69816044T2/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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack

Landscapes

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

Description

  • HINTERGRUND
  • Die vorliegende Erfindung betrifft Cache-Speicher, und im einzelnen Strategien zum Auswählen von Daten, die in einem Cache-Speicher ausgewechselt werden müssen.
  • Die Verarbeitung innerhalb eines Computersystems kann mittels einer Hardwarekomponente, die als Zentraleinheit bzw. Prozessor (CPU) bezeichnet wird, erfolgen. Befehle und Daten für die CPU können in einem großen Hauptspeicher bzw. auf einer Festplatte gespeichert sein. Die Arbeitsgeschwindigkeit einer CPU (d. h., die benötigte Zeit, um eine Befehl durchzuführen) ist typischerweise wesentlich schneller als die Zugriffsgeschwindigkeit auf den Hauptspeicher bzw. auf die Festplatte. Demzufolge mag die CPU gezwungen werden, auf einen angeforderte Befehl oder Datenelement untätig zu warten, während der Hauptspeicher durch eine Speicherzugriffsoperation läuft. Diese untätige Wartezeit verschlechtert ernsthaft die effektive Verarbeitungsgeschwindigkeit der CPU.
  • Um dieses Problem anzusprechen, ist häufig eine Cache-Speichereinheit in dem Computersystem ausgeführt. Cache-Speicher sind auf dem Computerfachgebiet als Hilfsspeicher wohlbekannt, die eine Puffermöglichkeit zwischen einer CPU und einem Hauptspeicher bereitstellen. Der Cache-Speicher ist typischerweise derart ausgelegt, wesentlich schneller als der Hauptspeicher zu laufen und außerhalb des Hauptspeichers geladen zu werden.
  • Speichereinrichtungen, die mit der Geschwindigkeit der CPU laufen, sind wesentlich teurer und physikalisch größer als die langsameren Einrichtungen, die den Hauptspeicher ausmachen. Daraus resultiert, dass die Größe eines Cache-Speichers (gemessen durch die Anzahl der separat adressierbaren Speicherzellen, die innerhalb des Speichers enthalten sind) wesentlich geringer als die Größe des Hauptspeichers ist. Weil der Cache-Speicher nicht sämtliche Befehle und Daten, die in dem Hauptspeicher gespeichert sind, enthalten kann, fordert die; CPU gelegentlich einen bestimmten Befehl oder eine bestimmtes Datenelement an, welches gegenwärtig nicht in dem Cache-Speicher gespeichert ist. Solch ein Auftreten wird ein „Cache-Fehltreffer" genannt und macht es erforderlich, dass der angeforderte Befehl oder das angeforderte Datenelement von dem Hauptspeicher abgefragt, in dem Cache-Speicher gespeichert und dann der CPU zugeführt werden muss. Es kann dann gesehen werden, dass jeder Cache-Fehltreffer das Potential aufweist, die CPU so lange wartend zu machen (wenn nicht länger), als wenn der Cache-Speicher nicht vorhanden sein würde.
  • Ein Nachteil der Technik zur Reduzierung der Verarbeitungsgeschwindigkeit liegt darin, dass, wann auch immer ein Datenlese Cache-Fehltreffer auftritt, die Ausführung eines Außer-Betrieb-Befehls gesetzt wird. Das bedeutet, dass Befehle im Anschluss eines Befehls, welcher den Cache-Fehltreffer verursacht hat, mit der Ausführung fortfahren werden, während die CPU auf die fehlenden Daten wartet. Für den Betrieb dieser Strategie ist es notwendig, dass die Ausführung dieser nachfolgenden Befehle unabhängig von den fehlenden Daten ist. Die Ausführung von Befehlen, die von den fehlenden Daten abhängig sind, müssen in einem Schwebezustand (z. B. in Schleifen) gehalten werden bis die fehlenden Daten zur. Verfügung stehen. Wenn die Daten zur Verfügung stehen, werden dann sämtliche Befehle, die abhängig von diesen Daten waren, ausgeführt. Außer-Betrieb-Befehlsausführungstechniken werden in William Johnson, „Superscaler Microprocessor Design", 1991 (ISBN 0-13-875634-1) beschrieben.
  • Selbst wenn die Außer-Betrieb-Ausführungsstrategie angenommen wird, werden wahrscheinlich in dem Programm Sprungbefehle auftreten, deren Zielspeicherstelle in einigen Arten bedingt durch die fehlenden Daten ist. Eine Straiegie zur Vermeidung einer langen Verzögerung bei der Befehlsabrufoperation der CPU liegt darin., zu vermuten, welcher Sprungbefehl genommen werden wird, und versuchsweise das Abrufen und das Ausführen von Befehlen von dem vermuteten Sprungbefehl fortzuführen. Falls aufgefunden wird, dass, wenn die fehlenden Daten zur Verfügung stehen, die Vermutung richtig war, dann können die Ergebnisse der versuchsweisen Ausführung fortlaufend gemacht werden (z. B. durch Speicherung der Ergebnisse in Zielspeicherplätzen). Wenn jedoch eine falsche Vermutung gemacht wurde, dann müssen sämtliche Ergebnisse der Befehle, die nach der bedingten Sprungbefehlanweisung ausgeführt wurden, geräumt werden, und die Programmausführung beginnt erneut von dem richtigen Sprungbefehlpfad. Von daher verursacht eine falsche Vermutung eine sehr große Verschlechterung des Leistungsverhaltens.
  • Ein anderer Faktor, der die effektive Ausführungsgeschwindigkeit der CPU beeinflusst, ist die Tatsache, dass, wenn ein Cache-Fehltreffer auftritt, Daten (oder ein oder mehrere Befehle für den Fall, wo sich Daten und Befehle den gleichen Cache-Speicher teilen) von dem Cache-Speicher entfernt werden müssen, um Platz für das fehlende Datenelement zu schaffen. Die Strategie zum Auswählen der Daten, die von dem Cache entfernt werden müssen (eine „Cache-Auswechslungsstrategie" genannt), kann ebenso die effektive Ausführungsgeschwindigkeit der CPU beeinflussen, da die „ausgesetzten" Daten zu einer späteren Zeit benötigt werden könnten, und von daher einen anderen Cache-Fehltreffer verursachen.
  • Bestehende Cache-Auswechslungsstrategien wurden auf die Maximierung der Wahrscheinlichkeit basiert, dass ein angeforderter Befehl oder ein angefordertes Datenelement erfolgreich in dem Cache gefunden wird (ein „Cache-Treffer" genannt). Eine solche Strategie wählt zum Entfernen das Datenelement aus, welches durch das Ausführungsprogramm am wenigsten häufig verwendet wurde (LRU). Die Basis für diesen Ansatz ist das Konzept der temporären Gebundenheit: Die Absicht, dass die Wahrscheinlichkeit, dass die nächste Adresse, auf die zugegriffen werden muss, dieselbe Adresse ist, wie die Adresse, auf die gegenwärtig zugegriffen wird, um so größer ist, je früher der zweite Zugriff in Bezug auf den ersten auftritt.
  • Andere Cache-Auswechslungsstrategien sind die Zufallsauswechslung und First-In-First-Out (FIFO).
  • Sämtliche obigen Cache-Auswechslungsstrategien weisen ein hohes Cache-Treffer-Verhältnis als Ziel auf, welches gewöhnlich als die Häufigkeiten eines versuchten Cache-Lesens beim erfolgreichen Beziehen der Daten von dem Cache dividiert durch die Gesamtzahl der versuchten Cache-Zugriffe definiert ist. (Ein ähnliches Maß ist das Cache-Fehltreffer-Verhältnis, welches gewöhnlich als 1-Cache-Treffer-Verhältnis definiert ist). Jedoch sind diese Cache-Auswechslungsstrategien unzureichend, da sie bei der Berücksichtigung der Effekte der Cache-Fehltreffer scheitern, die unvermidlich auftreten werden.
  • Der technische IBM-Veröffentlichungsbericht, Vol. 15, Nr. 12, Mai 1973, New York, US, Seiten 3803–3805, offenbart eine zuvor betrachtete Cache-Speicher-Technik.
  • ZUSAMMENFASSUNG
  • Von daher liegt der vorliegenden Erfindung die Aufgabe zugrunde, die effektive Ausführungsgeschwindigkeit einer CPU zu steigern, mittels verbesserter Verfahren und mittels einer Apparatur zum Ermitteln, welche Einträge in einem Cache-Spfsicher entfernt werden sollten, um Platz für ein Cache-Auswechslungs-Datenelement zu schaffen.
  • Die zuvor genannte und andere Aufgaben werden gelöst durch Verwendung einer Cache-Daten-Auswechslungstechnik in einem Computersystem, welches eine Zentraleinheit bzw. einen Prozessor (CPU), einen Cache-Speicher und einen Hauptspeicher bzw. eine Festplatte aufweist, wobei der Cache-Speicher eine Vielzahl darin gespeicherter Datenelemerte aufweist. In Übereinstimmung mit einem Aspekt der Erfindung weist das Cahe-Daten Auswechslungsverfahren ein Zuordnen eines Prioritätswerts zu jedem der gespeicherten Datenelemente auf, wobei für jedes Datenelement der Prioritätswert eine Abschätzung ist, wie viel CPU Verzögerungszeit auftreten wird, wenn ein Versuch unternommen wird, das Datenelement von dem Cache-Speicher abzufragen, wenn das Datenelement nicht in dem Cache-Speicher gespeichert ist.
  • Gemäß einem anderen Aspekt der Erfindung wird der Prioritätswert für jedes der Datenelemente festgestellt durch Ermittlung, wie viele andere Befehle abgerufen und in einem Pufferspeicher gespeichert werden müssen zwischen einem Zeiitintervall, welches durch die Initiierung und Vollendung der Abfrage des Datenelements von dem Hauptspeicher bzw. von der Festplatte definiert ist, wobei die Ausführung der anderen Befehle abhängig von der Vollendung der Abfrage des Datenelements ist.
  • Gemäß einem noch anderem Aspekt der Erfindung weist der Verfahrensschritt der Ermittlung für jedes der Datenelemente, wie viele andere Befehle zwischen dem Zeitintervall abgerufen und in einem Pufferspeicher gespeichert werden müssen, ferner eine Anpassung des Prioritätswerts mittels eines Betrages auf, der darauf basiert, ob irgendeiner der anderen Befehle ein bedingter Sprungbefehl ist.
  • Gemäß noch einem weiteren Aspekt der Erfindung weist der Verfahrensschritt der Ermittlung für jedes der Datenelemente, wie viele andere Befehle zwischen dem Zeitintervall abgerufen und in einem Pufferspeicher gespeichert werden müssen, ferner eine Anpassung des Prioritätswerts mittels eines Betrages auf, der darauf basiert, ob irgendeiner der anderen Befehle ein Nicht-Sprungbefehl ist.
  • Gemäß einem anderen Aspekt der Erfindung wird, wenn ein Auswechslungs-Datenelement in dem Cache gespeichert werden muss, der zu entfernende Cache-Eintrag durch eine Analyse der Prioritätswerte ermittelt, um einen geringsten Prioritätswert zu ermitteln. Dann wird eines der Datenelemente, welches den niedrigsten Prioritätswert aufweist, ausgewählt und durch das Auswechslungs-Datenelement ausgewechselt.
  • Gemäß noch einem weiteren Aspekt der Erfindung wird das Treffer-Verhältnis des Daten-Cache verbessert, in dem nicht gefordert wird, dass die Prioritätswerte der zugeordneten bzw. zugehörigen Datenelemente feststehend verharren. Stattdessen wird jeder der Prioritätswerte periodisch mittels eines bestimmten Betrages angepasst, was in einem niedrigerem Prioritätswert resultiert. Auf diese Weise können auch solche Cache-Einträge unter Umständen Kandidaten für eine Auswechslung werden, die anfänglich hohe Prioritätswerte ausweisen.
  • Gemäß noch einem anderen Aspekt der Erfindung können wertvolle bzw. nützliche Dateneinträge daran gehindert werden, auf unbestimmte Zeit in dem Daten-Cache zu verbleiben durch Anpassung des Prioritätswerts mittels eines bestimmten Betrages in Erwiderung auf einen Lesezugriff des zugehörigen Datenelementes, wobei die Anpassung in einem höheren Prioritätswert resultiert. Alternativ hierzu kann der Prioritätswert in Erwiderung auf ein Lesezugriff des zugehörigen Datenelements auf einen Anfangswert gesetzt werden. Kombiniert mit der Technik der periodischen Verminderung des Prioritätswerts der Dateneinträge, gestattet es diese Technik, dass wertvolle bzw. nützliche Dateneinträge in dem Daten-Cache so lange verbleiben, wie sie andauern, von dem ablaufenden Programm zugegriffen zu werden, und gestattet es ferner, dass diese entfernt werden, wenn sie nicht länger benutzt werden.
  • Gemäß einem Aspekt der vorliegenden Erfindung wird ein Verfahren in Übereinstimmung mit Patentanspruch 1 der beigefügten Ansprüche bereitgestellt.
  • Gemäß einem zweiten Aspekt der vorliegenden Erfindung wird ein Verfahren in Übereinstimmung mit Patentanspruch 6 der beigefügten Ansprüche bereitgestellt.
  • Gemäß einem dritten Aspekt der vorliegenden Erfindung wird eine Apparatur in Übereinstimmung mit Patentanspruch 15 der beigefügten Ansprüche bereitgestellt.
  • Gemäß einem vierten Aspekt der vorliegenden Erfindung wird eine Apparatur in Übereinstimmung mit Patentanspruch 20 der beigefügten Ansprüche bereitgestellt.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Die obig beschriebenen und andere Aufgaben und Vorteile der Erfindung werden durch Lesen der folgenden ausführlichen Bechreibung in Verbindung mit den Zeichnungen verstanden, in welchen:
  • 1 ein Blockdiagramm eines exemplarischen Computersystems ist, welches die Erfindung verkörpert;
  • 2 ein Ablaufdiagramm ist, das eine Technik zum Abfragen eines Datenelements vom Hauptspeicher und zum Speichern es in ein Daten-Cache in Übereinstimmung mit einem Aspekt der Erfindung darstellt;
  • 3 ein Diagramm einer exemplarischen Ausführung eines Daten-Cache zur Verwendung mit dem erfindungsgemäßen Cache-Speicher und den Auswechslungstechniken ist;
  • 4 Ein Ablaufdiagramm ist, welches eine Strategie zur Auswechslung von Daten in einem Cache-Speicher in Übereinstimmung mit einem anderen Aspekt der Erfindung darstellt;
  • 5 ein Diagramm einer alternativen exemplarischen Ausführungsform für ein Daten-Cache zur Verwendung mit dem erfindungsgemäßen Cache-Speicher und den Auswechslungstechniken ist; und
  • 6 ein Ablaufdiagramm ist, welches eine Strategie zum Erhalten von Prioritätswerten in Übereinstimmung mit anderen Aspekten der Erfindung darstellt.
  • DETAILLIERTE BESCHREIBUNG
  • Die verschiedenen Merkmale der Erfindung werden nun mit Berücksichtigung der Figuren beschrieben, in welchen gleiche Komponente mit gleichen Bezugszeichen bezeichnet sind.
  • Ein exemplarisches Computersystem, welches die Erfindung verkörpert, ist in 1 gezeigt. Eine CPU 101 führt Befehle aus, welche in einem Hauptspeicher 107 gespeichert sind. Die CPU 101 erhält Daten für die Befehle von einem in dem Hauptspeicher 107 enthaltenen Adressenraum. Ergebnisse von Ausführungen der Befehle werden ebenso in diesen gleichen Adressenraum rückgespeichert.
  • Die Umlauf- bzw. Zykluszeit des Hauptspesichers 107 ist wesentlich langsamer als die Ausführungsgeschwindigkeit der CFU 101. Um der CPU 101 schneller Befehle zuzuführen, ist ein Befehls-Cache 103 zwischen der CPU 101 und dem Hauptspeicher 107 zwischengeschaltet. Der Befehls-Cache 103 operiert in Übereinstimmung mit herkömmlichen Techniken und wird von daher hier nicht näher beschrieben.
  • Um es der CPU 101 zu gestatten, schneller Daten abzufragen und zu speichern, ist ebenso ein Daten-Cache 105 zwischen der CPU 101 und dem Hauptspeicher zwischengeschaltet. Der Datenfluß in den und aus dem Daten-Cache 105 wird mittels einer Daten-Cache-Steuerung gesteuert. Vieles der Betriebsweise des Daten-Cache 105 steht in Übereinstimmung mit bekannten Techniken. Ähnlich wie ein herkömmlicher Cache-Speicher, ist das Daten-Cache 105 ein Speicher, dessen Umlauf- bzw. Zykluszeit nahe der Ausführungsgeschwindigkeit der CPU ist. Ebenso wie ein herkömmlicher Cache-Speicher, hält das Daten-Cache 105 lediglich eine Teilmenge der Information, die in dem Hauptspeicher 107 enthalten ist. Demzufolge ist das Ergebnis von Cache-Fehltreffern, wie in dem HINTERGRUND-Abschnitt diskutiert, für das Daten-Cache 105 zutreffend.
  • Um den Effekt der Cache-Fehltreffer zu mildern, ist die Architektur der CPU 101 in der Lage, Aufier-Betrieb-Ausführungen auszuführen, wie es in dem HINTERGRUND-Abschnitt beschrieben wird. Techniken zum Gestalten einer CPU, die diese Fähigkeit aufweist, sind aus dem Fachgekiet bekannt und brauchen hier nicht ausführlich beschrieben werden. Um das Verständnis der Erfindung zu erleichtern, folgt eine kurze Beschreibung einer exemplarischen Ausführungsform der CPU 101. Es sollte verstanden sein, dass die hier beschriebenen erfindungsgemäßen Prinzipien es nicht erforderlich machen, dass die CPU 101 die spezielle, unten beschriebene Gestaltung annimmt, sondern kann stattdessen bei jeder Psozessorarchitektur angewandt werden, die Gebrauch von Außer-Betrieb-Ausführungen macht.
  • Die exemplarische CPU 101 weist eine Abruflogik 101 zum Ermitteln der Adresse einer nächsten Befehls und zum Abrufen dieses Befehls auf. Der Befehlssatz der exemplarischen CPU 101 ist ausgelegt, um Operanden zu verwenden, die in irgendeinem der Anzahl von adressierbaren Arbeitsregister 113 gespeichert sind. Von daher muß, bevor eine Befehlsverwendung einen Quelloperand ausführen kann, dieser Operand zunächst in das Arkeitsregister von dem Daten-Cache über die Operanden-Abruflogik 115, eine arithmetische Logikeinheit (ALU) 117 und einen Rück-Ordnungspuffer 119 geladen werden. Selbstverständlich ist die Erfindung nicht durch die Verwendung lediglich in reduzierten Befehlssatz-Computern (RISC) eingeschränkt, wie etwa solch einer, der hier beschrieben wird. Ganz im Gegensatz kann sie auf einfache Weise bei komplexen Befehlssatz-Computern (CISC) angewandt werden, in welchen, neben anderen Unterschieden, Befehle bereit gestellt werden, welche es der ALU gestatten, an Daten zu operieren, die direkt von einem adressierten Speicherort empfangen wurden, ohne dass zunächst ein Laden der Daten in ein Arbeitsregister durchgeführt wird.
  • Die Operanden-Abruflogik 115 und der Rück-Ordnungspuffer 119 stellen zusammen die Außer-Betrieb-Ausführung bereit. Die Operanden-Abruflogik 115 ist verantwortlich für das Assemblieren von Quelloperanden, welche zu den jeweiligen Eingaben der ALU 117 angewandt werden müssen. Um diese Aufgabe auszuführen, weist die Operanden-Abruflogik 115 eine Anzahl van Reservierungsstationen auf zum Speihern von entweder den Quelldaten selbst oder einer Sequenznummer (zugeordnet zu dem bis jetzt nicht ausgeführten Befehl), welche anzeigt, dass die Quelldaten noch nicht in das Arbeitsregister 113 geladen worden sind.
  • Der Rück-Ordnungspuffer 119 ist verantwortlich für das Assemblieren von Zieldaten und für das Verfolgen, ob oder ob nicht ein gegebener Befehl ausgeführt worden ist, sowie Abhängigkeiten zwischen Befehlen zu verfolgen. Wenn von daher ein Befehl empfangen wird, wird ihm eine Kennzeichnungsnummer zugewiesen und in den Rück-Ordnungspuffer 119 gesetzt. Sämtliche zuvor in dem Rück-Ordnungspuffer 119 gespeicherten Befehle werden dann überprüft, um zu ermitteln, ob irgendeine der Quellen des neuen Befehls mit den Zielorten von irgendeinem anderen der vorherigen Befehle übereinstimmt. Wenn es dort eine Übereinstimmung gibt, dann liegt dort eine Abhängigkeit vor, welche den neuen Befehl daran hindert, sofort ausgeführt zu werden (d. h., der neue Befehl erfordert einen Quelloperanden, der noch nicht mittels eines früheren Befehls erzeugt worden ist). Daraus resultiert, dass die Sequenznummer des neuen Befehls in die Operanden-Abruflogik 115 gesetzt wird anstelle der Quelldaten selbst.
  • In dieser Ausführungsform weist der Rüch-Ordnungspuffer 119 einen Speicherplatz für die Zieldaten selbst auf. Wenn demzufolge die Zieldaten zur Verfügung stehen, werden sie in den Rück-Ordnungspuffer 119 geladen und ein zugehörige Statuskennzeichen (Flag) wird gesetzt, um anzuzeigen, dass die Daten gültig sind. Um die Befehlsausführung zu beschleunigen, wenn die Zieldaten ebenso die Quelldaten einer nachfolgenden Befehl sind, können die Zieldaten direkt von dem Rück-Ordnungspuffer 119 zu der geeigneten Reservierungsstation in derOperanden-Abruflogik 115 weitergeleitet werden, eher dass erforderlich ist, dass die Daten zunächst in das Arbeitsregister geschrieben und die Daten dann von dem Arbeitsregister 113 zu der Operanden-Abruflogik 115 bewegt werden müssen. Um die Befehlsausführung ferner zu beschleunigen, weist die exemplarische CPU des weiteren einen
  • Pfad von der Ausgabe der ALU 117 zu der Eingabe der Operanden-Abruflogik 115 auf, um es neu erzeugten Quelldaten zu gestatten, früher geladen zu werden.
  • Die Tatsache, dass erzeugte Daten in den Rück-Ordnungspuffer 119 gespeichert wurden, ist transparent für das Ausführungsprogramm, welches lediglich mit der Speicherung von Ergebnissen in eines der Arbeitsregister 1132 oder in das Daten-Cache 105 (oder Hauptspeicher 107) in Beziehung steht. Demzufolge müssen die Daten eventuell von dem Rück-Ordnungspuffer 119 zu dem mittels des zugehörigen Befehls angezeigten Ziel bewegt werden. Der Vorgang der Bewegung von erzeugten Daten von dem Rück-Ordnungspuffer 119 zu dem geeigneten Ziel wird „Einspeicherung", „Erneuerung" oder „Rückschreiben" der Daten genannt. Die Architektur der exemplarischen CPU 101 macht sich die Strategie der Einspeicherung erzeugter Daten nur zu eigen, nachdem sämtliche, zu früheren Befehlen zugehörige Daten eingespeichert wurden.
  • Ungeachtet der Implikation der Fähigkeit der Außer-Betrieb-Ausführung, bürgt das Auftreten eines Daten-Cache-Fehltreffers noch einen allgemeinen Nachteil auf, welcher die effektive Ausführungsgeschwindigkeit der CPU 101 herabsetzt. Um von daher ferner die effektive Ausführungsgeschwindigkeit der CPU 101 zu steigern, verwendet die Daten-Cache-Steuerung 109 zusätzlich die nachfolgend beschriebenen erfindungsgemäßen Daten-Auswechslungstechniken, wenn auch immer ein Cache-Fehltreffer auftritt. Eher als auf die Fokussierung auf das Erzielen eines hohen Trefferverhältnis, basiert die erfindungsgemäße Cache-Auswechslungspolitik vielmehr auf eine Herabsetzung des Nachteils der Ausführungsgeschwindigkeit, welcher resultiert, wenn Daten-Fehltreffer auftreten.
  • In einem Aspekt der Erfindung wird diese Aufgabe durch das Erkennen gelöst, dass Daten als eine der drei Kategorien klassifiziert werden können:
  • Typ-1 Daten können reine Information sein, die einfach zu einer Adresse zurückgeschrieben werden, ohne dass sie als eine Eingabevariable zur Berechnung von irgendeinem anderen Datenelement verwendet werden. Ein Beispiel eines Typ-1 Datenelements sind Daten, die vom Speicher als Teil einer Herausgeberkopie und einer Paste- bzw. Einfügungsoperation erhalten werden. Ein weiteres Beispiel eines Typ-1 Datenelements ist ein Parameter, der zu einer in C geschriebenen Prozedur zugehört, wobei keine Pointer bzw. Datenzeiger zu den Variablen verwendet werden. In solch einem Fall wird das Aufrufen der Prozedur bewirken, dass die Variable zunächst zu dem Datenstapel bzw. Stack und dann zu einer lokalen Variablen mit den gleichen Inhalten kopiert wird.
  • Typ-2 Daten können Informationsdaten sein. Diese Daten werden als eine Eingabevariable zur Berechnung in einer bestimmten Anzahl von Befehlen verwendet, bevor sie zurück zu einer Adresse geschrieben werden.
  • Typ-3 Daten können Steuerungsdaten sein. Steuerungsdaten ermitteln entweder direkt oder indirekt die Operation eines bedingten Sprungbefehls. (Steuerungsdaten operieren indirekt, weenn sie als eine Eingabevariable in irgendeiner Anzahl von Berechnungsbefehlen zur Ermittlung eines Ergebnisdatenelements verwendet werden, welches dann als Prädikat zur Ermittlung der Operation eines bedingten Sprungbefehls verwendet wird.)
  • In dem Ereignis eines Cache-Fehltreffers resultieren die Typ-1 Daten in nahezu keiner Verschlechterung der Ausführungsgeschwindigkeit so lange die CPU 101 mit Hardware versehen ist, die eine Außer-Betrieb-Ausführung gestattet. Zu diesem Zweck sollten die Warteschleife bzw. Warteschlange zum Halten bevorstehender Befehle lang genug sein, um die Ausführungseinheiten in der CPU 101 zu halten, die beschäftigt ist, während fehlende Daten abgefragt werden.
  • Es besteht eine gewaltige Verschlechterung der Ausführungsgeschwindigkeit, die von einem Cache-Fehltreffer im Zusammenhang mit Typ-2 Daten resultiert, und die Ausdehnung dieser Verschlechterung ist eine Funktion davon, wie viele Befehle entweder direkt oder indirekt von den fehlenden Daten abhängen. (Indirekte Abhängigkeit tritt auf, wenn ein Befehl als eine Eingabe nicht die fehlenden Daten selbst sondern vielmehr das Ergebnis einer Berechnung, die eine Funktion der fehlenden Daten ist, erfordert.)
  • Theoretisch ist es möglich eine Außer-Betrieb-Ausführungsstrategie zu verwenden, wenn ein Cache-Fehltreffer Typ-2 Daten einschließt. In der Praxis ist jedoch die Auslegung einer Warteschlange, die lang genug ist, um bevorstehende Befehle und Daten zu halten, problematisch, da die Anzahl der abhängigen Befehle, die bevorstehend verbleiben müssen, sehr groß sein kann.
  • Das größte Problem bei der Ausführung entsteht in Bezug auf Cache-Fehltreffer, die Typ-3 Daten einschließen. Wenn ein bedingter Sprungbefehl nicht berechnet werden kann, dann weiß die CPU 101 nicht, welche Befehle abzufragen sind. Im schlimmsten Fall steht der Befehl, der gegenwärtig benötigt wird, nicht in dem Befehls-Cache 103 zur Verfügung. Daraus resultiert, dass die CPU 101 während der Abfrage des Befehls zum Stillstand kommt, wodurch die effektive Ausführungsgeschwindigkeit ernstlich verletzt wird.
  • In Übereinstimmung mit einem Aspekt der Erfindung ist die Cache-Auswechslungspolitik so ausgelegt, um zunächst die Anwesendheit der Typ-3 Datenelemente in dem Daten-Cache 105 zu maximieren. In einem anderen Aspekt der Erfindung gibt die Cahe-Auswechslungspolitik Typ-2 Datenelementen in dem Daten-Cache 105 Priorität über Typ-1 Datenelementen.
  • Eine Cache-Auswechslungspriorität von einem Datenelement wird bereitgesellt durch das Zuordnen dieses Datenelements einem Prioritätswert. Beispielsweise können Prioritätswerte derart definiert sein, dass je höher der Wert ist, desto größer der Nachteil des Cache-Fehltreffers ist. Selbstverständlich kann man mit alternativen Definitionen herkommen, die dennoch mit den hier gelehrten erfindungsgemäßen Prinzipien in Zusammenhang stehen, wie etwa, indem man niedrigere Prioritätswerte einen größeren Nachteil des Cache-Fehltreffers anzeigen lässt.
  • Eine exemplarische Ausführungsform dieser Aspekte der Erfindung werden nun unter Bezugnahme auf das in 2 gezeigte Ablaufdiagramm beschrieben. Wann auch immer ein Cache-Fehltreffer auftritt, wird das fehlende Datenelement von dem Hauptspeicher 107 abgefragt und in dem Daten-Cache 105 gespeichert (Schritt 201). Als nächstes wird eine anfänglicher Prioritätswert ermittelt als eine Funktion des Nachteils, der resultieren würde, wenn dieses Datenelement nicht in dem Daten-Cache 105 zu der Zeit vorhanden wäre, wann ein Versuch gemacht wird, auf dieses zuzugreifen (Schritt 203). Der Prioritätswert ist in bevorzugter Weise eine Funktion des gegenwärtigen Status der Warteschlangen und anderer Hardwareressourcen in dem Computer. Der angepasste Wert wird dann dem Datenelement zugeordnet (Schritt 205).
  • Die Bestimmung eines anfänglichen Prioritätswerts (Schritt 203) wird nun detaillierter beschrieben. Der Prioritätswert eines Datenelements wird in bevorzugter Weise ermittelt, wenn ein Zugriffsversuch auf dieses Datenelement in einem Cache-Fehltreffer resultiert. Wenn ein Cache-Fehltreffer auftritt, beginnt die Außer-Betrieb-Ausführung der nachfolgenden Befehle. Wenn Befehle darauf stoßen, dass die Anwesendheit eines fehlenden Datenelements erforderlich ist, dann werden solche Befehle in einer Warteschlange gespeichert bis sie ausgeführt werden können. Beispielsweise sei das folgende Programmsegment betrachtet:
    Lade r1, #1; (r1: = „Adresse 1")
    Hinzufügen r2, r1, r3; (r2: = rl + r3)
    Hinzufügen r4, r2, r5; (r4: = r2 + r5)
  • In dem obigen Beispiel ist nicht nur dies anfängliche Lade-Befehl abhängig von der Anwesendheit des Datenelements bei der Adresse 1 in dem Daten-Cache 105 sondern auch die beiden anschließenden Hinzufüg-Befehle. Dieses liegt daran, weil die erste Hinzufüg-Befehl erfordert, dass r1 den entsprechenden Wert in sich hat, was lediglich dann passiert, nachdem die anfängliche Lade-Befehl ausgeführt worden ist. Auf ähnliche Weise kann die zweite Hinzufüg-Befehl nicht ausgeführt werden bis die Inhalte von r2 ermittelt wurden. Demzufolge werden in dem Fall eines Cache-Fehltreffers im Zusammenhang mit der „Adresse 1" in dem Daten-Cache 105 alle drei der obigen Befehle in einer Warteschlange gespeichert bis die fehlenden Daten zur Verfügung stehen.
  • Die Warteschlange, in welcher Befehle gespeichert sind, wird verwendet, um den Prioritätswert der fehlenden Daten zu ermitteln. Wenn abhängige Sprungbefehle bestehen, dann ist der Prioritätswert sehr hoch. Wenn dort Datenabhängigkeiten wie in dem obigen Beispiel bestehen, dann kann der Prioritätswert auf einen mittleren Level gesetzt werden. Wenn keine Abhängigkeiten bestehen, dann ist der Prioritätswert der fehlenden Daten gering. Die Prioritätswerte können von daher jeweils auf 3, 2 und 1 gesetzt werden.
  • Ein einfacher Ansatz zur Ermittlung eines Prioritätswerts liegt darin, anzunehmen, dass alle Ausführungsbefehle direkt oder indirekt abhängig von den fehlenden Daten sind. Der Wert in diesem Fall ist V = N1 × V1 + N2 × V2, wobei N1 die Anzahl der Nicht-Sprungbefehlsanweisungen ist, die noch nicht ausgeführt worden sind, N2 die Anzahl der bedingten Sprungbefehle ist, die noch nicht ausgeführt worden sind, und V2 der Nachteilswert ist, der zu bedingien Sprungbefehlsanweisungen zugeordnet ist.
  • Es wird vermerkt, dass der obig beschriebene einfache Ansatz in einer Überlagerung von hohen Prioritätswerten resultieren kann, wenn einige oder alle der nichtausgeführten Befehle lediglich von einem Datenelement abhängig sind, das anders ist als das eine, für welches der Nachteilswert berechnet wird. Wenn auch zwei Datenabfragen in einem Code-Segment vorliegen, wobei jedes in einem Cache-Fehltreffer resultiert, wird der einfache Ansatz der Prioritätswertberechnung in hohen Prioritätswerten resultieren, die zu jedem zugeteilt werden, selbst wenn das erste Datenelement in Wirklichkeit einen niedrigen Prioritätswert und das zweite Datenelement einen hohen Prioritätswert haben sollten.
  • Im Hinblick auf die Möglichkeit der Überbestimmung der Prioritätswerte unter einigen Umständen, mag man eine anspruchsvollere Analyse der Inhalte der Befehlspuffer in dem Rück-Ordnungspuffer durchführen, um lediglich diese nichtausgeführten Befehle zu zählen, die gegenwärtig eine Abhängigkeit auf das betreffende Datenelement aufweisen. Jedoch macht es die allgemeine Zugehörigkeit mit dieser Analyse weniger attraktiv als der obig beschrieben einfache Ansatz.
  • Das Augenmerk sei nun auf ein vollständigeres Beispiel einer Prioritätswertberechnung gerichtet, wobei angenommen wird, dass das folgende Code-Segment durch die CPU 101 ausgeführt werden muß:
    Befehl Kommentar
    Lade r0, #5; (r0 := „Adresse 5")
    Sprung_auf_gleich r0, r1; (Sprung wennr0 = r1)
    Hinzufügen r6, r3, r0; (r6 := r3 + r0)
    Hinzufügen r7, r3, r2; (r7 := r3 +r2)
    Hinzufügen r8, r7, 9r; (r8 :=r7 + r9)
    Hinzufügen r9, r10, r11; (r9 := r10 + r11)
    wobei rx das Arbeitsregister x darstellt.
  • Nachdem diese Befehle abgefragt worden sind, mögen die Inhalte des Rück-Ordnungspuffers 119 wie in Tabelle 1 ausschauen: Tabelle 1
    Figure 00200001
  • Es sei angenommen, dass das „Lade r0, #5" in einem Cache-Fehltreffer resultierte, wodurch der Bedarf besteht, dass die gewünschten Daten von dem Hauptspeicher 107 abgefragt werden. Dann, wenn die Daten von der Speicheradresse 5 ankommen, treten ein bedingter Sprung (bei der Position 1) und eine Hinzufügung (bei der Position 2) auf, welche abhängig von den neu ankommenden Daten sind. Das an den Positionen 3, 4 und 5 angeordnete „Daten gültig = 1" zeigt an, dass diese Hinzufüg-Befehle ausgeführt worden sind und nicht von irgendwelchen anderen Befehlen abhängig sind. Wenn der Nachteil für bedingte Sprünge 5 (d. h. V2 = 5) und für andere Befehle 1 ist (d. h. V1 = 1), dann wird der gesamte Prioritätswert, der den Daten der Adresse 5 zugeteilt wird, 1 × 5 + 1 × 1 = 6 sein.
  • Es sei darauf hingewiesen, dass in diesem Fall sämtliche Befehle nach dem bedingten Sprungbefehl spekulativ abgefragt und ausgeführt werden, basierend auf dem erwarteten Sprungergebnis, wobei der Sprung noch nicht durchgeführt worden ist. Wenn das Sprungergebnis unerwartet ist, dann müssen sämtliche Befehle nach dem bedingten Sprung ausgelöscht und der richtige Pfad abgefragt und ausgsführt werden.
  • Es wurden Techniken zur Ermittlung eines Prioritätswerts für jeden Cache-Dateneintrag beschrieben. Wie in 2 angezeigt, ist es notwendig, den Prioritätswert dem Cacheeintrag zuzuordnen. Dies kann auf irgendeine von verschiedenen Weisen geschehen. Eine dieser wird nun unter Bezugnahme auf 3 beschrieben, die eine exemplarische Ausführungsform eines Daten-Cache 105 für die Verwendung mit der obig beschriebenen erfindungsgemäßen Technik darstellt. Das Daten-Cache 105 ist in der Lage, N Datenelemente bei Adressen, die von 0 bis N-1 bezeichnet sind, zu speichern. Bei einer exemplarischen Adresse, m, ist ein Datenelement 301 gespeichert. Das Daten-Cache 105 ist derart ausgebildet, dass es in jedem Speicherplatz ein Datenelement speichert, wobei ein entsprechender Speicherplatz zur Speicherung eines zugehörigen Prioritätswerts besteht. Von daher wird für den exemplarischen Speicherplatz m das gespeicherte Datenelement 301 einem gespeicherten Prioritätswert 303 zugeordnet. Techniken zur Auslegung eines Cache-Speichers, welcher diese Fähigkeit aufweist, sind aus dem Fachgebiet wohlbekannt und werden hier nicht detaillierter beschrieben. Siehe hierzu beispielsweise John L. Hennes, Computer Architecture, A Quantitative Approach, (1990), was hiermit als Referenz hierin aufgenommen ist.
  • In einem anderen Aspekt der Erfindung wird nun eine Strategie zur Auswechslung von Daten in einem Cache-Speicher unter Bezugnahme auf das Ablaufdiagramm von 4 beschrieben. In dieser exemplarischen Ausführungsform sei angenommen, dass jeder Eintrag in einem Daten-Cache 105 einen zugeordneten Prioritätswert, wie obig beschrieben, aufweist.
  • Wenn ein Versuch unternommen wird, einen Eintrag von dem Daien-Cache 105 zu lesen, wird eine Ermittlung in Bezug darauf gemacht, ob das angeforderte Datenelement gegenwärtig in dem Daten-Cache 105 gespeichert ist (Entscheidungsblock 401). Wenn das Element gefunden wird („Nein" Pfad aus dem Entscheidungsblock 401 heraus), dann wird das Element einfach von dem Daten-Cache 105 abgefragt (Schritt 403), und die Verarbeitung fährt fort.
  • Wenn ein Cache-Fehltreffer auftritt („Ja" Pfad aus dem Entscheidungsblock 401 heraus), dann ist es notwendig, einen Eintrag aus dem Daten-Cache 105 zu entfernen, um Platz für das angeforderte Datenelement zu schaffen. Dies wird durch das Auffinden eines Eintrages bewerkstelligt, welcher einen Prioritätswert aufweist, der der niedrigste unter sämtlichen in dem Daten-Cache 105 gespeicherten Prioritätswerten 303 ist (Schritt 405). In dem Fall, dass mehr als ein Eintrag einen niedrigsten Prioritätswert aufweist, kann irgendeine Technik zum Entscheiden verwendet werden, welcher von dem Daten-Cache 105 zu entfernen ist: Zufalls-Auswahl, die Verwendung eines Zeigers bzw. Pointers oder irgendeine andere Technik. Dann wird das angeforderte (d. h. „fehlende") Datenelement von dem Hauptspeicher 107 abgefragt (Schritt 407), und das abgefragte Datenelement wird in dem Daten-Cache 105 bei der Adresse gespeichert, die in Schritt 405 identifiziert wurde. Durch das Entfernen eines Eintrages mit einem niedrigsten Prioritätswert vermindert die erfindungsgemäße Cache-Auswechslungsstrategie die Wahrscheinlichkeit, dass ein nachfolgender, mit dem entfernten Eintrag in Zusammenhang stehender Cache-Fehltreffer auftreten wird (d. h., der Prioritätswert war niedrig, weil auf das entfernte Datenelement seit geraumer Zeit kein Zugriff esfolgte), oder alternativ macht sie es gering wahrscheinlich, dass ein nachfolgender, mit dem entfernten Eintrag in Zusammenhang stehender Cache-Fehltreffer in irgendeiner nachfolgenden Verschlechterung des Ausführungsgeschwindigkeit resultieren wird (d. h., weil eine Außer-Betrieb-Ausführung von nachfolgenden Befehlen während des Wartens auf die Abfrage des angeforderten Datenelements von dem Hauptspeicher 107 fortgesetzt werden kann).
  • Die obig beschriebene Cache-Daten-Auswechslungsstrategie, einschließlich der Ermittlung der Prioritätswerte für jeden Cacheeintrag, steigert die Wahrscheinlichkeit, dass die Daten in dem Cache von der Art sein werden, die eine nachfolgende Verschlechterung der Ausführungsgeschwirdigkeit verursachen würden, wenn sie von dem Hauptspeicher 107 abgefragt werden müssten. Das bedeutet, wenn relative Prioritätswert 1, 2 und 3 für jeweils Typ-1, -2 und -3 Daten sind, dann ist es wahrscheinlicher , dass Typ-3 Daten in dem Cache sein werden, da die Typ-1 und Typ-2 Daten mit einer höheren Wahrscheinlichkeit entfernt werden. Jedoch schafft die obig beschriebene Strategie die Möglichkeit, dass ein Datenelement auf unbestimmte Zeit in dem Daten-Cache bestehen bleibt, selbst wenn dieses Datenelement niemals wieder von der CPU 101 verwendet wird. Dies liegt daran, weil, so lange ein Cacheeintrag mit niedriger Priorität besteht, solch ein Datenelement niemals in dem Daten-Cache 105 entfernt wird. Die Anwesendheit von solch einem Cache-Eintrag (d. h., eines, das niemals entfernt wird, selbst obwohl es niemals mehr als ein Quelloperand benötigt wird) ist unerwünscht, da es das Cache-Treffer/Fehltreffer-Verhältnis herabsetzt.
  • Dieses Problem wird in einem noch anderen Aspekt der Erfindung behandelt, indem gestattet wird, dass der Prioritätswert ferner eine Funktion davon ist, wie viel Zeit verstrichen ist, seit auf das Datenelement zuletzt zugegriffen wurde. Auf diese Weise kann ebenso das Prinzip der temporären Lokalität verwendet werden, um das Treffer-Verhältnis des Caches zu steigern, während noch immer eine Präferenz auf Datentypen gegeben wird, welche höhere Verschlechterung der Ausführungsgeschwindigkeit aufweisen. In einer exemplarischen Ausführungsform wird der Prioritätswert 303 eines jeden Cacheeintrages alle T Sekunden um einen bestimmten Betrag vermindert. Daraus resultiert, dass selbst solche Cacheeinträge, die anfänglich hohe Prioritätswerte aufweisen, eventuell Prioritätswerte haben werden, die niedrig genug sind, um sie zu einem Bewerber für die Entfernung zu machen, wenn ein neuer Cacheeintrag gespeichert werden muß.
  • In noch einem anderen Aspekt der Erfindung wird die Strategie, bei welcher Prioritätswerte periodisch herabgesetzt werden, ergänzt durch eine Re-Initialisierung oder alternativ durch ein Anwachsen des Prioritätswerts 303, wann auch immer auf den Cacheeintrag zugegriffen wird. In einer Ausführungsform kann der Prioritätswert 303 mittels des zugehörigen Verschlechterungswert gesteigert werden, wann auch immer auf den Cacheeintrag zugegriffen wird. Auf diese Weise berücksichtigt der Prioritätswert nicht nur die Folgen bzw. Kosten eines Cache-Fehltreffers sondern auch die Frequenz bzw. Häufigkeit, mit welcher auf den Cacheeintrag zugegriffen wird. Es sei beispielsweise angenommen, dass ein erstes Datenelement lediglich einen Taktgeberzyklus der CPU-Verzögerungs- bzw. Stillstandszeit in dem Fall eines Cache-Fehltreffers kostet, und dass auf dieses Datenelement zehnmal häufiger zugegriffen wird, als auf ein zweites Datenelement, welches zehn Tektgeberzyklen der CPU-Verzögerungs- bzw. Stillstandszeit in dem Fall eines Cache-Fehltreffers kostet. In diesem Fall ist der Wert des ersten Datenelements gleich dem des zweiten Dalenelements. Durch das Re-Initialisieren oder das Anwachsen des Prioritätswerts zu jeder Zeit, wenn auf ein Datenelement zugegriffen wird, berücksichtigt die Auswechslungsstrategie den Effekt des häufigen Zugriffs.
  • Wenn die Strategie verwendet wird, in welcher der Prioritätswert 303 mit jedem Zugriff auf den Cacheeintrag reinitialisiert wird, ist es notwendig, für jeden Cacheeintrag nicht nur den gegenwärtigen Prioritätswert 303 sondern auch den anfänglichen Prioritätswert zu verfolgen. Dies kann durch eine wie in 5 gezeigte Organisation des Daten-Caches 105' bewerkstelligt werden. Das Daten-Cache 105' ist im wesentlichen identische mit dem in 3 gezeigten Daten-Cache 105 mit Ausnahme der Hinzufügung eines Anfangs-Prioritätswert-Feldes 501, das zu jedem Cacheeintrag zugeordnet ist.
  • Die Diskussion wird nun auf die Ermittlung von relativen Nachteilswerten (d. h., V1 und V2) für verschiedene Arten von Befehle gerichtet. Es sei angenommen, dass ein Cache-Fehltreffer, der sich von einem Versuch, ein erstes Datenelement abzufragen, ergibt, in zehn Taktgeberzyklen der CPU-Verzögerungs- bzw. Stillstandszeit resultiert, und dass ein Cache-Fehltreffer, der sich von einem Versuch, ein zweites Datenelement abzufragen, ergibt, aufgrund der Möglichkeit der Außer-Betrieb-Ausführung, in lediglich einem Taktgeberzyklus der CPU-Verzögerungs- bzw. Stillstandszeit resultiert. Es folgt, dass, wenn eine Wahl zwischen den beiden gegeben wird, eher das erste Datenelement als das zweite Datenelement in dem Daten-Cache beibehalten werden sollte, um einen umfangreichen bzw. teuren Cache-Fehltreffer zu verhindern. In diesem Sinne ist das erste Datenelement „wertvoller" als das zweite Datenelement.
  • Es sei ein drittes Datenelement betrachtet, welches, aufgrund einer sehr effektiven Außer-Betrieb-Ausführung, gar keine CPU-Verzögerungs- bzw. Stillstandszeit hervorruft, wenn ein Cache-Fehltreffer auftritt. Solch ein Datenelement braucht überhaupt nicht in dem Daten-Cache gespeichert zu werden; das bedeutet, das dritte Datenelement weist, falls überhaupt, einen geringen Wert auf.
  • Im Hinblick auf das Obige, kann gesagt werden, dass, je wertvoller ein Datenelement ist, desto länger sollte es in dem Daten-Cache 105 beibehalten werden. Eine gute Daumenregel liegt darin, ein Datenelement in Proportion zu seinem Wert beizubehalten. Beispielsweise sollte das erste Datenelement, welches zehn Taktgeberzyklen der CPU-Verzögerungs- bzw. Stillstandszeit in dem Fall eines Cache-Fehltreffers kostet, in dem Daten-Cache zehnmal länger beibehalten werden als das zweite Datenelement, welches lediglich einen Taktgeberzyklus der CPU-Verzögerungs- bzw. Stillstandszeit kostet (angenommen, dass auf kein Datenelement während dieser Zeitperiode zugegriffen wird). Dies kann auf einfache Weise bewerkstelligt werden durch das Setzen des Nachteilswerts des ersten Datenelements gleich 10 (d. h., V1 = 10), durch das Setzen des Nachteilswerts des zweiten Datenelements gleich 1 (d. h., V2 = 1), durch das Ermitteln eines Prioritätswerts für jedes, wie obig beschrieben, und dann durch Anpassan (z. B. Verminderung) des Betrages von jedem Prioritätswert bei einer bestimmten Frequenz, während ebenso durch Neuladens des Wertes zu jeder Zeit, wenn auf das Datenelement zugegriffen wird.
  • Bei der obigen Diskussion der Ermittlung der Nachteilswerte (z. B. V1, V2) wird eine Verfügbarkeit der Messungen oder Abschätzungen der CPU-Verzögerungs- bzw. Stillstandszeiten für verschiedene Arten von Befehle vorausgesetzt. In der veranschaulichen Ausführungsform sind die Nachteilswerte, die zu verschiedenen Datentypen zugeordnet sind, für jede Ermittlung eines Anfangs-Prioritätswerts 501 festgesetzt. Wenn Typ-1 oder Typ-2 Datenelemente betrachtet werden, ist es eine relativ einfache Sache, mit einem Wert aufzukommen, der eine durchschnittliche CPU-Verzögerungs- bzw. Stillstandszeit darstellt, weil die Ausführungsgeschwindigkeit dieser Arten von Befehle (z. B. Laden, Hinzufügen, logisches UND) leicht zu ennitteln sind.
  • Jedoch in Bezug auf Typ-3 Datenelemente wird die Aufgabe schwieriger, da die Ausführungsgeschwindigkeit eine Funktion davon ist, ob oder ob nicht der Sprungbefehl genommen wurde, und ob oder ob nicht zuvor abgefragte Befehle (basierend auf eine Vorhersage, ob oder ob nicht der Sprungbefehl genommen werden würde) von dem Befehls-Cache 103 entfernt und neue Befehle abgefragt und ausgeführt werden müssen. Ein Fachmann wird verstehen, dass ein durchschnittlicher Nachteilswert für Typ-3 Daten basierend auf der Kenntnis der Prozessorgeschwindigkeit, der Zugriffszeit auf den Befehlsspeicher, des Cache-Treffer-Verhältnisses und der relativen Genauigkeit des Sprungbefehl-Vorhersage-Algorithmus (z. B. 90% richtige Vorhersagen) ermittelt werden kann.
  • In einer alternativen Ausführungsform können die Nachteilswerte, die zu verschiedenen Datentypen zugeordnet sind, für jedes individuelle Datenelement dynamisch ermittelt werden. Bezüglich Typ-1 und Typ-2 Datenelemente werden die dynamisch ermittelten Werte höchstwahrscheinlich konstant (oder nahezu konstant) sein, da sich die jeweiligen Ausführungsgeschwindigkeiten dieser Arten von Befehle (z. B. Laden, hinzufügen, logisches UND) im allgemeinen nicht von Zeit zu Zeit ändern. (In manchen Architekturen kann die Ausführungsgeschwindigkeit von Befehlen, wie etwa Multiplikation und Division, etwas abhängig von Daten sein.)
  • In dieser alternativen Ausführungsform können die zu Typ-3 Daten zugeordneten Nachteilswerte dynamisch ermittelt werden, indem es jeder bevorstehenden bedingten Sprungbefehlsanweisung gestattet ist, auszuführen nachdem die fehlenden Daten eintreffen, und dann durch aktuelles Messen, um zu sehen, welche Verzögerungszeit herausfällt (z. B. sehen, ob vorabgefragte Befehle aufgrund einer falschen Sprungbefehlvorhersage herausgelöscht werden müssen, und wenn dies so ist, wie viele Befehle herausgelöscht werden). Selbstverständlich ist der allgemeine Zusammenhang dieser dynamischen Ermittlung von jedem Nachteilswert wesentlich größer als der zu der Verwendung einer festen Abschätzung des Nachteilswertes zugehörige. Auch verzögert die Ermittlung des Nachteilswerts dynamisch eine entgültige Ermittlung eines Anfangs-Prioritätswerts 501. Diese Faktoren sollten bei der Entscheidung betrachtet werden, welcher Ansatz (d. h., statische gegenüber dynamische Ermittlung des Nachteilswerts) für ein bestimmtes System verwendet werden sollte.
  • Eine Strategie zur Aufrechterhaltung von Prioritätswerten in Übereinstimmung mit den obig beschriebenen Prinzipien wird nun unter Bezugnahme auf das Ablaufdiagramm von 6 beschrieben. Es sei angenommen, dass ein Datenelement (wie etwa das Datenelement 301) und sein entsprechender, gegenwärtiger Prioritätswert 303 und Anfangs-Prioritätswert 501 in einem Daten-Cache 105' gespeichert sind. In diesem Beispiel sei ferner angenommen, dass höhere Prioritätswerte eine höhere Priorität zur Beibehaltung des Datenelements in dem Daten-Cache 105' anzeigen.
  • Die exemplarische Strategie zur Aufrechterhaltung von Prioritätswerten verwendet das Prinzip der temporären Lokalität, um ein hohes Trefferverhältnis in dem Daten-Cache 105' zu erhalten. Wenn demgemäss ermittelt wird, dass mehr als T Sekunden seit dem letzten Zugriff auf ein Datenelement vergangen sind („Ja" Pfad aus dem Entscheidungsblock 601 heraus), dann wird der Prioritätswert, der dem Datenelement zugeordnet ist, um einen bestimmten Betrag vermindert (Schritt 603). In einer bevorzugten Ausführungsform ist der bestimmte Betrag ein kleinst möglicher Betrag, wie etwa ein Betrag gleich eins.
  • Wenn ermittelt wird, dass auf das Datenelement vor kurzem zugegriffen wurde („Ja" Pfad aus dem Entscheidungsblock 605 heraus), dann wird sein zugeordneter Prioritätswert erhöht oder alternativ hierzu auf den berechneten anfänglichen Prioritätswert gesetzt (Schritt 607). Der Grund hierfür ist, weil der jüngste Zugriff eine höhere Wahrscheinlichkeit anzeigt, dass auf dieses Datenelement in kürze wieder zugegriffen wird. Demgemäss wird die Erlhöhung (oder die Re-Initialisierung) des Prioritätswerts helfen sicherzustellen, dass das Datenelement nicht entfernt sondern stattdessen in dem Daten-Cache 105' kurzfristig beibehalten wird. In einer bevorzugten Ausführungsform wiest der Schritt 607 die Differenzierung zwischen Lesezugriffen und Schreibzugriffen auf, so dass jeder Lesezugriff verursacht, dass der Prioritätswert um den anfänglich berechneten Prioritätswert (z. B. ein Betrag, der zwischen eins und etwa acht liegt) erhöht wird, während jeder Schreibzugriff verursacht, dass der Prioritätswert um den kleinst möglichen Wert (z. B. ein Betrag gleich eins) erhöht wird.
  • Die Beschreibung hat so weit vorausgesetzt, dass das Daten-Cache 105 derart gesteuert wird, dass jeder Cache-Fehltreffer lediglich bei einem Datenelement verursazht wird, welches von dem Hauptspeicher 107 abgefragt und in dem Daten-Cache 105 gespeichert wird. Es ist jedoch typischer, dass Daten-Caches derart aufgebaut sind, dass jeder Cache-Fehltreffer verursacht, dass eine Anzahl (z. B. 8, 16) von Datenelementen (welche hierin als „Cacheeintrag" bezeichnet werden) von dem Hauptspeicher 107 abgefragt und in dem Daten-Cache 105 gespeichert werden. Der Cacheeintrag weist gewöhnlich nicht nur das „fehlende" Datenelement (d. h. die Inhalte der Speicherortadresse des Hauptspeichers, dessen Abwesendheit in dem Daten-Cache 105 den Cache-Fehltreffer verursacht) sondern auch diese Datenelemente, deren Adressen. in der Nähe des „fehlenden" Datenelements liegen. Die vernunftmäßige Erklärung für diese Strategie liegt darin, das Trefferverhältnis des Daten-Caches im Vertrauen auf ein Prinzip, welches als „Ortsgebundenheit" (oder „Gebundenheit der Referenz") bekannt ist, zu verbessern. Dieses Prinzip, welches auf Beobachtungen basiert, wie viele Programme ausgelegt bzw. gestaltet sind, macht den Anspruch geltend, dass, wenn ein Speicherzugriff gegenwärtig Daten von , sagen wir, der Speicherstelle x liest, dann eine erhöhte Wahrscheinlichkeit besteht, dass ein nachfolgender Speicherzugriff versuchen wird, Daten von einer Speicheradresse lesen wird, die in der Nähe der Speicherstelle x liegt. Von daher ist es durch das Abfragen eines Cacheeintrages, der nicht nur das Datenelement von der Speicherstelle x sondern auch solche Datenelemente enthält, die bei Speicherstellen in der Nähe von x liegen, wahrscheinlicher, dass ein nachfolgender Versuch, auf das Daten-Cache 105 zuzugreifen, in einem Caache-Treffer resultieren wird.
  • In einer anderen Ausführungsform werden die obig beschriebenen Prinzipien bei einem Daten-Cache angewandt, dessen Daten-Cache-Steuerung 109 Cacheeinträge abfragt (im Gegensatz zu einzelnen Datenelementen), wann auch immer ein Cache-Fehltreffer auftritt. Ein exemplarisches Daten-Cache 105'', welches für diesen Zweck ausgelegt ist, ist in 7 gezeigt. Der gegenwärtige Prioritätswert 303 und der anfängliche Prioritätswert 501 werden ermittelt und auf die gleiche Weise, wie obig beschrieben, verwendet. Der Unterschied zwischen dem Daten-Cache 105'' und den zuvor beschriebenen Ausführungsformen liegt in der Tatsache, dass jedes Paar von gegenwärtigen Prioritätswerten 303 und anfänglichen Prioritätswerten 501 eher zu einem gesamten Cacheeintrag 701 zugeordnet ist, als einzeln zu gerade einem Datenelement 301 zugeordnet zu sein. Die Ermittlung des anfänglichen Prioritätswerts 501 basiert darauf, welches der Datenelemente 301 in dem Cacheeintrag 701 verursacht hat, dass der Cache-Fehltreffer auftritt, wodurch veranlasst wird, dass der Cacheeintrag 701 von dem Hauptspeicher 107 abgefragt wird. Eine Annahme wird gemacht, dass andere Datenelemente 301 in dem Cacheeintrag 701 von ähnlichem Datentyp sind, und somit ähnliche Prioritätswerte aufweisen würden. In einem anderen Aspekt dieser Ausführungsform kann, wann auch immer ein Zugriff auf irgendeines der Datenelemente 301 in dem Cacheeintrag 701 erfolgt, der Wert des zugeordneten gegenwärtigen Prioritätswert 303 angepasst werden (z. B. reinitialisiert oder erhöht), wie es obig unter Bezugnahme auf 6 beschrieben wurde. In noch einer anderen Ausführungsform der Erfindung kann der gegenwärtige Prioritätswert 303 auf einen Wert angepasst werden, der eine niedrigere Priorität anzeigt, wenn auf keines der Datenelemente 301 in dem Cacheeintrag 701 ein Zugriff während irgendeiner bestimmten Zeitperiode erfolgte. In all anderer Hinsicht sind die in dieser Ausführungsform involvierten Prinzipien die gleichen wie die obig beschriebenen und brauchen von daher nicht erneut beschrieben werden.
  • Die Erfindung wurde unter Bezugnahme auf eine bestimmte Ausführungsform beschrieben. Jedoch wird es einem Fachmann leicht verständlich, dass es möglich ist, die Erfindung in spezifischen Formen anders als die der obig beschriebenen bevorzugten Ausführungsform auszuführen. Die bevorzugte Ausführungsform ist bloß zur Anschauung gedacht und sollte auf keinem Fall als einschränkend gesehen werden. Der Umfang der Erfindung ist vielmehr in den beigefügten Patentansprüchen gegeben, eher als in der vorausgehenden Beschreibung, und sämtliche Abänderungen und Äquivalente, die in den Umfang der Patentansprüche fallen, sind beabsichtigt, hierin einbezogen zu sein.

Claims (28)

  1. Ein Verfahren zur Verwendung in einem Computersystem, welches einen Zentralprozessor (CPU) (101), einen Cache-Speicher (105) und einen Hauptspeicher (107) aufweist, wobei das Verfahren zum Speichern eines Datenelements (301) in dem Cache-Speicher (105) dient und folgende Verfahrensschritte aufweist: Initiation (201) einer Abfrage des Datenelements (301)von dem Hauptspeicher (107) in Erwiderung auf wenigstens einer partiellen Ausführung eines ersten Befehls; Ermittlung (203) eines Prioritätswerts (303), der mit dem Datenelement (303) in Zusammenhang stehen muß, wobei der Prioritätswert (301) eine Abschätzung ist, wie viel CPU Verzögerungszeit auftreten wird, wenn ein Versuch gemacht wird, das Datenelement (301) von dem Cache-Speicher (105) abzufragen, wenn das Datenelement (301) nicht in dem Cache-Speicher (105) gespeichent ist; und Vollendung der Abfrage des Datenelements (301) und Speicherung von sowohl dem Datenelement (301) als auch dem Prioritätswert (303) in dem Cache-Speicher (105).
  2. Das Verfahren gemäß Anspruch 1, wobei der Verfahrensschritt der Ermittlung (203) des Prioritätswerts (303) die Ermittlung aufweist, wie viele andere Befehle abgerufen und in einem Pufferspeicher (103) gespeichent werden müssen zwischen der Zeit der Abfrage-Initiation des Datenelements (301) und der Vollendung der Abfrage des Datenelements (301).
  3. Das Verfahren gemäß Anspruch 2, wobei der Verfahrensschritt der Ermittlung des Prioritätswerts (303) ferner eine Anpassung des Prioritätswerts (303) mittels eines Betrages aufweist, der darauf basient, ob irgendeiner der anderen Befehle ein bedingter Sprungbefehl ist.
  4. Das Verfahren gemäß Anspruch 2, wobei der Verfahrensschritt der Ermittlung des Prioritätswerts (303) ferner eine Anpassung des Prioritätswerts (303) mittels eines Betrages aufweist, der darauf basient, ob irgendeiner der anderen Befehle ein Nicht-Sprungbefehl ist.
  5. Das Verfahren gemäß Anspruch 1, wobei der Verfahrensschritt der Ermittlung (203) des Prioritätswerts (303) auftritt, nachdem die Abfrage des Datenelements (301) vollendet worden ist.
  6. Ein Cache-Daten Auswechslungsverfahren zur Verwendung in einem Computersystem, welches eine Zentralprozessor (CPU) (101), einen Cache-Speicher (105) und einen Hauptspeicher (107) aufweist, wobei der Cache-Spfsicher eine Vielzahl von darin gespeichente Datenelemente (301) aufweist, das Cache-Daten Auswechslungsverfahren weist die folgenden Verfahrensschritte auf: Zuordnen eines Prioritätswerts (303) mit jedem der gespeichenten Datenelemente (301), wobei für jedes Datenelement (303) der Prioritätswert (303) eine Abschätzung ist, wie viel CPU Verzögerungszeit auftreten wird, wenn ein Versuch unternommen wird, das Datenelement (301) von dem Cache-Speicher (105) abzufragen, wenn das Datenelement (301) nicht in dem Cache-Speicher (105) gespeichent ist; Analyse der Prioritätswerte (303), um einen niedrigsten Prioritätswert (405) zu ermitteln; Auswahl eines der Datenelemente (301), welches den niedrigsten Prioritätswert aufweist; und Auswechslung des ausgewählten Datenelements (301) mit einem Auswechslungs-Datenelement.
  7. Das Cache-Daten Auswechslungsverfahren gemäß Anspruch 6, wobei der Verfahrensschritt des Zuordnens eines Prioritätswerts mit jedem der gespeichenten Datenelemente (301) für jedes der Datenelemente (301) den Verfahrensschritt der Ermittlung aufweist, wie viele andere Befehlen abgerufen und in einem Pufferspeicher (103) gespeichent werden müssen zwischen einem Zeitintervall, welches durch die Initiierung und Vollendung der Abfrage des Datenelements (301) von dem Hauptspeicher (107) definient ist, wobei die Ausführung der anderen Befehle abhängig von der Vollendung der Abfrage des Datenelements (301) ist.
  8. Das Cache-Daten Auswechslungsverfahren gemäß Anspruch 7, wobei der Verfahrensschritt der Ermittlung für jedes der Datenelemente (301), wie viele andere Befehle zwischen dem Zeitintervall abgerufen und in einem Pufferspeicher (103) gespeichent werden müssen, ferner eine Anpassung des Prioritätswerts (303) mittels eines Betrages aufweist, der darauf basient, ob irgendeiner der anderen Befehle ein bedingter Sprungbefehl ist.
  9. Das Cache-Daten Auswechslungsverfahren gemäß Anspruch 7, wobei der Verfahrensschritt der Ermittlung für jedes der Datenelemente (301), wie viele andere Befehle zwischen dem Zeitintervall abgerufen und in einem Pufferspeicher (103) gespeichent werden müssen, ferner eine Anpassung des Prioritätswerts (303) mittels eines Betrages aufweist, der darauf basient, ob irgendeiner der anderen Befehle ein Nicht-Sprungbefehl ist.
  10. Das Cache-Daten Auswechslungsverfahren gemäß Anspruch 6, ferner folgenden Verfahrensschritt aufweisend: Periodische Anpassung (601) von jedem der Prioritätswerte (303) mittels eines bestimmten Betrages, was in einem niedrigeren Prioritätswert (603) resultient.
  11. Das Cache-Daten Auswechslungsverfahren gemäß Anspruch 6, ferner folgenden Verfahrensschritt aufweisend: Anpassung des Prioritätswerts (303) für jeden der Prioritätswerte (303) mittels eines ersten bestimmten Betrages (607) in Erwiderung auf einen Lesezugriff (605) des zugehörigen bzw. zugeordneten Datenelements (301), wobei die Anpassung in einem höheresn Prioritätswert resultient.
  12. Das Cache-Daten Auswechslungsverfahren gemäß Anspruch 11, ferner den folgenden Verfahrensschritt aufweisend: Anpassung des Prioritätswerts (303) für jeden der Prioritätswerte (303) mittels eines zweiten bestimmten Betrages (607) in Erwiderung auf einen Schreibzugriff (605) des zugehörigen bzw. zugeordneten Datenelements (301), wobei die Anpassung in einem höheren Prioritätswert resultient.
  13. Das Cache-Daten Auswechslungsverfahren gemäß Anspruch 12, wobei die Anpassung mittels des ersten bestimmten Betrages in einem höheren Prioritätswert resultient als die Anpassung mittels des zweiten bestimmten Betrages.
  14. Das Cache-Daten Auswechslungsverfahren gemäß Anspruch 6, ferner den folgenden Verfahrensschritt aufweisend: Setzen des Prioritätswerts (303) für jeden der Prioritätswerte (303) auf einen Anfangsprioritätswert (501) in Erwiderung auf einen Lesezugriff des zugehörigen bzw. zugeordneten Datenelements.
  15. Eine Apparatur zur Verwendung in einem in einem Computersystem, welches eine Zentralprozessor (CPU) (101), einen Cache-Speicher (105) und einen Hauptspeicher (107) aufweist, wobei die Apparatur zum Speichern eines Datenelements (301) in dem Cache-Speicher dient und folgendes aufweist: eine Einrichtung zum Initiieren (201) einer Abfrage des Datenelements (301) von dem Hauptspeicher (107) in Erwiderung auf wenigstens einer pantiellen Ausführung eines ersten Befehls; eine Einrichtung zum Ermitteln (203) eines Prioritätswerts (303), der mit dem Datenelement (303) in Zusammenhang stehen muß, wobei der Prioritätswert (301) eine Abschätzung ist, wie viel CPU Verzögerungszeit auftreten wird, wenn ein Versuch gemacht wird, das Datenelement (301) von dem Cache-Speicher (105) abzufragen, wenn das Datenelement (301) nicht in dem Cache-Speicher (105) gespeichent ist; und eine Einrichtung zur Vollendung der Abfrage des Datenelements (301) und Speicherung (205) von sowohl dem Datenelement (301) als auch dem Prioritätswert (303) in dem Cache-Speicher (105).
  16. Die Apparatur gemäß Anspruch 15, wobei die Einrichtung zum Ermitteln (203) des Prioritätswerte; (303) eine Einrichtung zum Ermitteln aufweist, wie viele endere Befehle abgerufen und in einem Pufferspeicher (103) gespeichent werden müssen zwischen der Zeit der Abfrage-Initiierung des Datenelements (301) und der Vollendung der Abfrage des Datenelements (301), wobei eine Ausführung der anderen Befehle abhängig von der Vollendung der Abfrage des Datenelements (301) ist.
  17. Die Apparatur gemäß Anspruch 16, wobei die Einrichtung zum Ermitteln (203) des Prioritätswerts (303) ferner eine Einrichtung zum Anpassen des Prioritätswerts (303) mittels eines Betrages aufweist, der darauf basient, ob irgendeiner der anderen Befehle ein bedingter Sprungbefehl ist.
  18. Die Apparatur gemäß Anspruch 16, wobei die Einrichtung zum Ermitteln (203) des Prioritätswerts (303) ferner eine Einrichtung zum Anpassen des Prioritätswerts (303) mittels eines Betrages aufweist, der darauf basient, ob irgendeiner der anderen Befehle ein Nicht-Sprungbefehl ist.
  19. Die Apparatur gemäß Anspruch 15, wobei die Einrichtung zum Ermitteln (203) des Prioritätswerts (303) die Ermittlung durchfühnt, nachdem die Abfrage des Datenelements (301) vollendet worden ist.
  20. Eine Cache-Daten Auswechslungsapparatur zur Verwendung in einem Computersystem, welches eine Zentralprozessor (CPU) (101), einen Cache-Speicher (105) und einen Hauptspeicher (107) aufweist, wobei der Cache-Speicher eine Vielzahl von darin gespeichente Datenelemente (301) aufweist, die Cache-Daten Auswechslungsapparatur weist folgendes auf: eine Einrichtung zum Zuordnen eines Prioritätswerts (303) mit jedem der gespeichenten Datenelemente (301), wobei für jedes Datenelement (303) der Prioritätswert (303) eine Abschätzung ist, wie viel CPU Verzögerungszeit auftreten wird, wenn ein Versuch unternommen wird, das Datenelement (301) von dem Cache-Speicher (105) abzufragen, wenn das Datenelement (301) nicht in dem Cache-Speicher (105) gespeichent ist; eine Einrichtung zum Analysieren der Prioritätswerte (303), um einen niedrigsten Prioritätswert (405) zu ermitteln; eine Einrichtung zum Auswählen eines der Datenelemente (301), welches den niedrigsten Prioritätswert aufweist; und eine Einrichtung zum Auswechseln des ausgewählten Datenelements (301) mit einem Auswechslungs-Datenelement.
  21. Die Cache-Daten Auswechslungsapparatur gemäß Anspruch 20, wobei die Einrichtung zum Zuordnen eines Prioritätswerts mit jedem der gespeichenten Datenelemente (301) eine Einrichtung zum Ermitteln für jedes der Datenelemente (301) aufweist, wie viele andere Befehle abgerufen und in einem Pufferspeicher (103) gespeichent werden müssen zwischen einem Zeitintervall, welches durch die Initiierung und Vollendung der Abfrage des Datenelements (301) von dem Hauptspeicher (107) definient ist, wobei die Ausführung der anderen Befehle abhängig von der Vollendung der Abfrage des Datenelements (301) ist.
  22. Die Cache-Daten Auswechslungsapparatur gemäß Anspruch 21, wobei die Einrichtung zum Ermitteln für jedes der Datenelemente (301), wie viele andere Befehle zwischen dem Zeitintervall abgerufen und in einem Pufferspeicher (103) gespeichent werden müssen, ferner eine Einrichtung zum Anpassen des Prioritätswerts (303) mittels eines Betrages aufweist, der darauf basient, ob irgendeiner der anderen Befehle ein bedingter Sprungbefehl ist.
  23. Die Cache-Daten Auswechslungsapparatur gemäß Anspruch 21, wobei die Einrichtung zum Ermitteln für jedes der Datenelemente (301), wie viele andere Befehle zwischen dem Zeitintervall abgerufen und in einem Pufferspeicher (103) gespeichent werden müssen, ferner eine Einrichtung zum Anpassen des Prioritätswerts (303) mittels eines Betrages aufweist, der darauf basient, ob irgendeiner der anderen Befehle ein Nicht-Sprungbefehl ist.
  24. Die Cache-Daten Auswechslungsapparatur gemäß Anspruch 20, ferner folgendes aufweisend: eine Einrichtung zum periodischen Anpassen (601) von jedem der Prioritätswerte (303) mittels eines bestimmten Betrages, was in einem niedrigeren Prioritätswert (603) resultient.
  25. Die Cache-Daten Auswechslungsapparatur gemäß Anspruch 20, ferner folgendes aufweisend: eine Einrichtung zum Anpassen des Prioritätswerts (303) eines zugehörigen bzw. zugeordneten Datenelements (301) mittels eines ersten bestimmten Betrages (607) in Erwiderung auf einen Lesezugriff (605) des zugehörigen bzw. zugeordneten Datenelements (301), wobei die Anpassung in einem höheren Prioritätswert resultient.
  26. Die Cache-Daten Auswechslungsapparatur gemäß Anspruch 25, ferner den folgendes aufweisend: eine Einrichtung zum Anpassen des Prioritätswents (303) eines zugehörigen bzw. zugeordneten Datenelements (301) mittels eines zweiten bestimmten Betrages (607) in Erwiderung auf einen Schreibzugriff (605) des zugehörigen bzw. zugeordneten Datenelements (301), wobei die Anpassung in einem höheren Prioritätswent resultient.
  27. Die Cache-Daten Auswechslungsapparatur gemäß Anspruch 26, wobei die Anpassung mittels des ersten bestimmten Betrages in einem höheren Prioritätswent resultient als die Anpassung mittels des zweiten bestimmten Betrages.
  28. Die Cache-Daten Auswechslungsapparatur gemäß Anspruch 20, ferner den folgendes aufweisend: eine Einrichtung zum Setzen des Prioritätswents (303) für jeden der Prioritätswerte (303) auf einen Anfangsprioritätswert (501) in Erwiderung auf einen Lesezugriff des zugehörigen bzw. zugeordneten Datenelements.
DE69816044T 1997-03-14 1998-03-13 Zeitstrafen-basierende cache-speicherungs- und ersetzungs-techniken Expired - Lifetime DE69816044T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US818340 1997-03-14
US08/818,340 US5943687A (en) 1997-03-14 1997-03-14 Penalty-based cache storage and replacement techniques
PCT/SE1998/000454 WO1998041923A1 (en) 1997-03-14 1998-03-13 Penalty-based cache storage and replacement techniques

Publications (2)

Publication Number Publication Date
DE69816044D1 DE69816044D1 (de) 2003-08-07
DE69816044T2 true DE69816044T2 (de) 2004-03-04

Family

ID=25225309

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69816044T Expired - Lifetime DE69816044T2 (de) 1997-03-14 1998-03-13 Zeitstrafen-basierende cache-speicherungs- und ersetzungs-techniken

Country Status (9)

Country Link
US (1) US5943687A (de)
EP (1) EP0966710B1 (de)
JP (1) JP2001515624A (de)
CN (1) CN1149486C (de)
AU (1) AU6430098A (de)
BR (1) BR9808245A (de)
CA (1) CA2283323A1 (de)
DE (1) DE69816044T2 (de)
WO (1) WO1998041923A1 (de)

Families Citing this family (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6266742B1 (en) * 1997-10-27 2001-07-24 International Business Machines Corporation Algorithm for cache replacement
US6792600B1 (en) * 1998-05-14 2004-09-14 International Business Machines Corporation Method and apparatus for just in time compilation of instructions
US6219827B1 (en) * 1998-03-12 2001-04-17 Hewlett-Packard Company Trace ranking in a dynamic translation system
US6385699B1 (en) * 1998-04-10 2002-05-07 International Business Machines Corporation Managing an object store based on object replacement penalties and reference probabilities
US6539382B1 (en) * 1999-04-29 2003-03-25 International Business Machines Corporation Intelligent pre-caching algorithm for a directory server based on user data access history
US6378044B1 (en) * 1999-09-22 2002-04-23 Vlsi Technology, Inc. Method and system for cache replacement among configurable cache sets
US6601143B1 (en) * 1999-09-25 2003-07-29 International Business Machines Corporation Self-adapting cache management method and system
US20050091511A1 (en) * 2000-05-25 2005-04-28 Itay Nave Useability features in on-line delivery of applications
ATE464603T1 (de) * 2000-05-25 2010-04-15 Exent Technologies Inc Plattencachespeicherung
US6801883B1 (en) 2000-06-02 2004-10-05 Unisys Corporation Code type control of caching parameters
US6826599B1 (en) * 2000-06-15 2004-11-30 Cisco Technology, Inc. Method and apparatus for optimizing memory use in network caching
JP2004503010A (ja) * 2000-06-30 2004-01-29 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ キャッシュメモリを有するデータ処理装置およびこのような装置の使用方法
US6681298B1 (en) * 2000-07-12 2004-01-20 Powertv, Inc. Hypertext markup language cache system and method
US6748492B1 (en) * 2000-08-07 2004-06-08 Broadcom Corporation Deterministic setting of replacement policy in a cache through way selection
US7058771B2 (en) * 2001-11-21 2006-06-06 Reno System and method for managing memory in a surveillance system
US8190530B2 (en) 2002-01-30 2012-05-29 Visa U.S.A. Inc. Method and system for providing multiple services via a point-of-sale portal architecture
US6769785B1 (en) * 2002-03-14 2004-08-03 Acuity Brands, Inc. Edge connectable lighting fixture assembly
CN101321047B (zh) * 2002-05-10 2012-08-08 美商内数位科技公司 协议数据单元再传输的用户终端设备及节点b
US7035978B2 (en) * 2003-03-11 2006-04-25 International Business Machines Corporation Method, system, and program for policies for improving throughput in remote mirroring systems
US6996688B2 (en) * 2003-03-11 2006-02-07 International Business Machines Corporation Method, system, and program for improved throughput in remote mirroring systems
US7073027B2 (en) * 2003-07-11 2006-07-04 International Business Machines Corporation Methods, systems and computer program products for controlling caching of distributed data
US7085895B2 (en) * 2003-09-05 2006-08-01 International Business Machines Corporation Apparatus, system, and method flushing data from a cache to secondary storage
US7177984B1 (en) * 2004-04-16 2007-02-13 Apple Computer, Inc. Cache management using historical access information
JP2006065805A (ja) * 2004-08-30 2006-03-09 Canon Inc 画像処理装置及び制御方法
US7490197B2 (en) 2004-10-21 2009-02-10 Microsoft Corporation Using external memory devices to improve system performance
US20060090034A1 (en) * 2004-10-22 2006-04-27 Fujitsu Limited System and method for providing a way memoization in a processing environment
US7376792B2 (en) * 2005-08-17 2008-05-20 International Business Machines Corporation Variable cache data retention system
US8914557B2 (en) 2005-12-16 2014-12-16 Microsoft Corporation Optimizing write and wear performance for a memory
US7461210B1 (en) * 2006-04-14 2008-12-02 Tilera Corporation Managing set associative cache memory according to entry type
US7899994B2 (en) * 2006-08-14 2011-03-01 Intel Corporation Providing quality of service (QoS) for cache architectures using priority information
US8065505B2 (en) * 2007-08-16 2011-11-22 Texas Instruments Incorporated Stall-free pipelined cache for statically scheduled and dispatched execution
CN100593146C (zh) * 2007-11-09 2010-03-03 上海可鲁系统软件有限公司 一种防止工业自动化系统雪崩的方法
US20090327577A1 (en) * 2008-06-27 2009-12-31 Microsoft Corporation Hybrid storage
US9032151B2 (en) 2008-09-15 2015-05-12 Microsoft Technology Licensing, Llc Method and system for ensuring reliability of cache data and metadata subsequent to a reboot
US7953774B2 (en) 2008-09-19 2011-05-31 Microsoft Corporation Aggregation of write traffic to a data store
US8832418B2 (en) * 2009-08-28 2014-09-09 Via Technologies, Inc. Efficient branch target address cache entry replacement
US8990506B2 (en) * 2009-12-16 2015-03-24 Intel Corporation Replacing cache lines in a cache memory based at least in part on cache coherency state information
AU2010201718B2 (en) * 2010-04-29 2012-08-23 Canon Kabushiki Kaisha Method, system and apparatus for identifying a cache line
US10019381B2 (en) * 2012-05-01 2018-07-10 Nvidia Corporation Cache control to reduce transaction roll back
US9645944B2 (en) 2012-05-07 2017-05-09 International Business Machines Corporation Enhancing data caching performance
US9110815B2 (en) * 2012-05-07 2015-08-18 International Business Machines Corporation Enhancing data processing performance by cache management of fingerprint index
US9262327B2 (en) * 2012-06-29 2016-02-16 Intel Corporation Signature based hit-predicting cache
US9372811B2 (en) * 2012-12-13 2016-06-21 Arm Limited Retention priority based cache replacement policy
JP6311370B2 (ja) * 2014-03-12 2018-04-18 日本電気株式会社 バッファキャッシュ管理装置、バッファキャッシュ管理方法、及び、バッファキャッシュ管理プログラム
WO2017015952A1 (zh) * 2015-07-30 2017-02-02 华为技术有限公司 一种高速缓冲存储器中存储数据的替换方法和替换装置
US10474458B2 (en) 2017-04-28 2019-11-12 Intel Corporation Instructions and logic to perform floating-point and integer operations for machine learning
CN109284304A (zh) * 2018-08-13 2019-01-29 中国平安人寿保险股份有限公司 一种基于缓存技术的电子出单方法及终端设备
AU2020241262A1 (en) 2019-03-15 2021-11-04 Intel Corporation Sparse optimizations for a matrix accelerator architecture
US12013808B2 (en) 2019-03-15 2024-06-18 Intel Corporation Multi-tile architecture for graphics operations
EP4024223A1 (de) 2019-03-15 2022-07-06 Intel Corporation Systeme und verfahren zur cache-optimierung
US11934342B2 (en) 2019-03-15 2024-03-19 Intel Corporation Assistance for hardware prefetch in cache access
US11861761B2 (en) 2019-11-15 2024-01-02 Intel Corporation Graphics processing unit processing and caching improvements

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5487162A (en) * 1992-02-25 1996-01-23 Matsushita Electric Industrial Co., Ltd. Cache lock information feeding system using an address translator
JPH06348595A (ja) * 1993-06-07 1994-12-22 Hitachi Ltd キャッシュ装置
JP3490742B2 (ja) * 1993-09-08 2004-01-26 松下電器産業株式会社 メモリ管理装置
US5671444A (en) * 1994-02-28 1997-09-23 Intel Corporaiton Methods and apparatus for caching data in a non-blocking manner using a plurality of fill buffers
US5649137A (en) * 1994-10-20 1997-07-15 Advanced Micro Devices, Inc. Method and apparatus for store-into-instruction-stream detection and maintaining branch prediction cache consistency
US5774685A (en) * 1995-04-21 1998-06-30 International Business Machines Corporation Method and apparatus for biasing cache LRU for prefetched instructions/data based upon evaluation of speculative conditions
US5696932A (en) * 1995-05-16 1997-12-09 International Business Machines Corporation Method and system for estimating minumun requirements on a cache in a computer based storage system

Also Published As

Publication number Publication date
AU6430098A (en) 1998-10-12
DE69816044D1 (de) 2003-08-07
BR9808245A (pt) 2000-05-16
EP0966710A1 (de) 1999-12-29
CN1255986A (zh) 2000-06-07
EP0966710B1 (de) 2003-07-02
CN1149486C (zh) 2004-05-12
WO1998041923A1 (en) 1998-09-24
US5943687A (en) 1999-08-24
CA2283323A1 (en) 1998-09-24
JP2001515624A (ja) 2001-09-18

Similar Documents

Publication Publication Date Title
DE69816044T2 (de) Zeitstrafen-basierende cache-speicherungs- und ersetzungs-techniken
DE3751474T2 (de) Verzweigungsstrom-Koprozessor.
DE69518676T2 (de) Cache-Speicheranordnung für einen Speicher
DE69321698T2 (de) Verfahren und System zur verbesserten Genauigkeit der Sprungvorhersage in einem Superskalarprozessor
DE69514165T2 (de) Mehrstufige Cache-Speicheranordnung
DE69224084T2 (de) Rechneranordnung mit Mehrfachpufferdatencachespeicher und Verfahren dafür
DE69434728T2 (de) Synchronisationssystem und verfahren in einem datencachesystem mit aufgeteiltem pegel
DE69620807T2 (de) Datenverarbeitungsvorrichtung zum Vorziehen einer Datenstruktur aus dem Hauptspeicher oder seinem Cachespeicher
DE3851488T2 (de) Registerverwaltungssystem mit Ausführung von Befehlen in Unordnung in einem Computerprozessor.
DE4222776C2 (de) Parallelverarbeitungseinheit und Verfahren zum Ausführen von Befehlen
DE68928677T2 (de) Verfahren und digitaler Computer zur Vorverarbeitung mehrerer Befehle
DE69715328T2 (de) System und Verfahren zur Parallelisierung der Durchführung von Speichertransaktionen mittels mehreren Speichermodellen
DE4225228C2 (de) Vorabrufpuffer und einen derartigen Vorabrufpuffer verwendendes Informationsverarbeitungssystem
DE3687744T2 (de) Aktualisierung der verzweigungsgeschichtstabelle in einem pipeline-verarbeitungssystem.
DE69325086T2 (de) Verfahren und System für spekulative Befehlsausführung
DE3751399T2 (de) Parallelrechner mit verteilten, gemeinsam genutzten Speichern und verteilten, aufgabenaktivierenden Schaltungen.
DE69133302T2 (de) Registerabbildung in einem einzigen Taktzyklus
DE69031991T2 (de) Verfahren und Gerät zur Beschleunigung von Verzweigungsbefehlen
DE112005001798B4 (de) Verwalten von Prozessorressourcen während Architekturereignissen
DE69225195T2 (de) Datengesteuertes Verarbeitungssystem
DE69822534T2 (de) Gemeinsame Speicherbenutzung mit variablen Blockgrössen für symmetrische Multiporzessor-Gruppen
DE69331039T2 (de) Rechnersystem mit einem Vorausholungscachespeicher
DE60009151T2 (de) Vorhersage von datenbeförderung von speicher- zum ladebefehl mit untrainierung
DE69129872T2 (de) Datenverarbeitungssystem mit einem leistungsverbessernden Befehlscachespeicher
DE69623146T2 (de) Verfahren und Vorrichtung zum Koordinieren der Benutzung von physikalischen Registern in einem Mikroprozessor

Legal Events

Date Code Title Description
8364 No opposition during term of opposition