DE10113191A1 - Spekulatives Vorausräumen von Daten in einem Prozessorsystem mit einer ungeordneten Ausführung - Google Patents

Spekulatives Vorausräumen von Daten in einem Prozessorsystem mit einer ungeordneten Ausführung

Info

Publication number
DE10113191A1
DE10113191A1 DE10113191A DE10113191A DE10113191A1 DE 10113191 A1 DE10113191 A1 DE 10113191A1 DE 10113191 A DE10113191 A DE 10113191A DE 10113191 A DE10113191 A DE 10113191A DE 10113191 A1 DE10113191 A1 DE 10113191A1
Authority
DE
Germany
Prior art keywords
cache
data
processors
minimizing
address
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
DE10113191A
Other languages
English (en)
Other versions
DE10113191B4 (de
Inventor
Gregg B Lesartre
David Jerome Johnson
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.)
Hewlett Packard Development Co LP
Original Assignee
Hewlett Packard Co
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 Hewlett Packard Co filed Critical Hewlett Packard Co
Publication of DE10113191A1 publication Critical patent/DE10113191A1/de
Application granted granted Critical
Publication of DE10113191B4 publication Critical patent/DE10113191B4/de
Anticipated expiration legal-status Critical
Expired - Fee Related 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • 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 or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB
    • G06F2212/507Control mechanisms for virtual memory, cache or TLB using speculative control
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

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

Abstract

Das spekulative Vorabrufen und Vorausräumen von zusätzlichen Cachezeilen minimiert die Cacheverfehllatenz und die Kohärenzprüflatenz eines Prozessors mit einer ungeordneten Befehlsausführung. Ein Vorabruf/Vorausräum-Schlitz (DPRESLOT) ist in einer Speicherwarteschlange des Prozessors mit einer ungeordneten Ausführung vorgesehen. Der DPRESLOT überwacht die Transaktionen zwischen einer Systemschnittstelle, z. B. dem Systembus, und einem Adreßneuordnungspufferschlitz und/oder zwischen der Systemschnittstelle und einem Cachekohärenzprüfschlitz. Wenn ein Cacheverfehlen erfaßt wird, bewirkt der DPRESLOT, daß eine oder mehrere Cachezeilen zusätzlich zu der Datenzeile, die das aktuelle Cacheverfehlen bewirkt hat, von der Haupthierarchie in den Cachespeicher in der Erwartung, daß die zusätzlichen Daten in naher Zukunft erforderlich sind, vorabgerufen werden. Wenn ein Cachezurückschreiben als ein Resultat einer Cachekohärenzprüfung erfaßt wird, bewirkt der DPRESLOT, daß eine oder mehrere Cachezeilen zusätzlich zu der Datenzeile, die derzeit zurückgeschrieben wird, zu der Haupthierarchie von dem jeweiligen Cachespeicher des Prozessors, der die Zeile besitzt, vorausgeräumt werden.

Description

Die vorliegende Erfindung bezieht sich allgemein auf Compu­ terprozessoroperationen und Computerprozessorarchitekturen. Die vorliegende Erfindung bezieht sich insbesondere auf die Leistungsoptimierung durch spekulatives Vorabrufen und Vor­ ausräumen von Daten in einem Prozessorsystem, bei dem Be­ fehle ungeordnet ausgeführt werden können.
Ein Hochleistungsprozessor, z. B. ein superskalarer Prozes­ sor, bei dem zwei oder mehrere skalare Operationen parallel durchgeführt werden, kann entworfen sein, um Befehle unge­ ordnet, d. h. in einer Reihenfolge, die sich von derselben unterscheidet, die durch das Programm definiert ist, das in dem Prozessor läuft, auszuführen. Das heißt, bei diesem Hochleistungsprozessorsystem werden Befehle dann ausge­ führt, wenn sie ausgeführt werden können, und nicht wenn sie in der Folge, die durch das Programm definiert ist, er­ scheinen. Nach der ungeordneten Ausführung von Befehlen werden die Resultate typischerweise schließlich neu geord­ net, um der ordnungsgemäßen Befehlsreihenfolge zu entspre­ chen, bevor die Resultate zurück zu dem Programm weiterge­ leitet werden, das in dem Prozessor läuft.
Beispiele von Prozessorarchitekturen, die Befehle ungeord­ net ausführen, sind in dem U. S.-Patent Nr. 5,758,178 (er­ teilt am 26. Mai 1998, mit dem Titel "Miss Tracking System and Method"), dem U. S.-Patent Nr. 5,761,713 (erteilt am 2. Juni 1998, mit dem Titel "Address Aggregation System and Method for Increasing Troughput to a Multi-Banked Data Cache From a Processor by Concurrently Forwarding an Ad­ dress to Each Bank"), dem U. S.-Patent Nr. 5,838,942 (erteilt am 17. November 1998, mit dem Titel "Panic Trap System and Method"), dem U. S.-Patent Nr. 5,809,275 (erteilt am 15. September 1998 mit dem Titel "Store-to Load Hazard Resolution System and Method for a Processor that Executes Instructions Out of Order"), dem U. S.-Patent Nr. 5,799,167 (erteilt am 25. August 1998 mit dem Titel "Instruction Nul­ lifaction System and Method for a Processor that Executes Instructions Out of Order") beschrieben, die alle von Gregg Lesartre sind, der einer der Erfinder ist, und die der Be­ vollmächtigten übertragen und alle ausdrücklich hierin und durch Bezugnahme in ihrer Gesamtheit aufgenommen sind.
Detaillierter beschrieben, z. B. in dem U. S.-Patent Nr. 5,758,178 ('178), kann ein Prozessorsystem mit ungeordneter Ausführung einen oder mehrere Prozessoren umfassen, wobei jeder derselben eine Speicherwarteschlange (MQUEUE; MQUEUE = Memory QUEUE) zum Empfangen und Ausführen von Befehlen aufweist, die auf Speicherzugriffe zu dem Cachespeicher (DCACHE) oder der Speicherhierarchie gerichtet sind. Die MQUEUE umfaßt eine Mehrzahl von Befehlsverarbeitungsvor­ richtungen zum Empfangen und dem ungeordneten Ausführen von jeweiligen Speicherbefehlen. Jede Befehlsverarbeitungsvor­ richtung umfaßt ein Befehlsregister zum Speichern eines Be­ fehls und einen Adressenneuanordnungspufferschlitz (ARB­ SLOT; ARBSLOT = Adress Reorder Buffer SLOT) zum Speichern der Datenadresse der Befehlsausführungsresultate. Eine Ab­ hängig-Vom-Verfehlen-(DM-; DM = Dependent-On-Miss)Anzei­ gelogik in jedem ARBSLOT verhindert insbesondere eine An­ frage von dem jeweiligen ARBSLOT derselben zu der Speicher­ hierarchie nach fehlenden Daten, die in dem DCACHE nicht anwesend sind, wenn ein weiterer ARBSLOT die fehlenden Da­ ten bereits aus der Speicherhierarchie angefordert hat.
Fig. 1 zeigt beispielsweise insbesondere ein Blockdiagramm der relevanten Abschnitte des Computersystems zum Darstel­ len des Betriebs des Abschnitts der Befehlsverarbeitungs­ vorrichtung 39b der MQUEUE. Die MQUEUE umfaßt einen oder mehrere ARBSLOTs 48 (wobei lediglich einer derselben ge­ zeigt ist). Wenn ein ARBSLOT 48 eine Cachezeile von dem DCACHE 24 anfordert, aktiviert der ARBSLOT 48 ein Signal ACCESS_REQ 115 (Zugriffsanforderung), das von einer Adresse ACCESS_ADDR 114 (Zugriffsadresse) begleitet wird. Bei dem Fall, daß es einen möglichen Treffer in dem DCACHE 24 gibt, wird der Statusanzeiger 82 (oder die Statusanzeiger, wenn der Cache assoziativ ist) eine gültige Cachezeile oder gül­ tige Cachezeilen widerspiegeln. Eine Etikettvergleichsvor­ richtung 108 liest ferner das Etikett (= TAG) DCACHE_TAG(s) 81 und vergleicht dasselbe mit dem Etikett ACCESS_TAG 116, das der Zugriffsadresse ACCESS_ADDR 114 zugeordnet ist. Wenn eine Übereinstimmung vorliegt, folgert die Etikettver­ gleichsvorrichtung 108, daß ein Treffer aufgetreten ist, und deaktiviert das Signal ~HIT 118 (~Treffer), um einen Treffer anzuzeigen, was bewirkt, daß der ARBSLOT 48 sich selbst als erledigt (= done) etikettiert. Das Resultat der Operation wird in einem Umbenennungsregister (nicht ge­ zeigt) so lange gehalten, bis sich der Befehl zurückzieht, wenn derselbe zu einem architektonischen Register (nicht gezeigt) bewegt wird.
Wenn der Cachezugriff, z. B. basierend auf einem Statusan­ zeiger 82, der eine ungültige Cachezeile(n) anzeigt, oder alternativ, wenn das Etikett DCACHE_TAG(s) 81 nicht mit dem Etikett ACCESS_TAG 116 übereinstimmt, zu einem Cacheverfeh­ len führt, dann aktiviert die Etikettvergleichsvorrichtung 108 das Signal ~HIT 118, um ein Verfehlen zu dem ARBSLOT 48 anzuzeigen. Unter der Annahme, daß dies der erste ARBSLOT 48 ist, der versucht, auf diese fehlende Datenzeile zuzu­ greifen, bewirkt die DM-Anzeigerlogik 135, daß das Fehlan­ forderungssignal MISS_REQUEST 111 zu dem Verfehlen- Entscheider 107 ausgegeben wird. Der Verfehlen-Entscheider 107 entscheidet durch Priorisieren der verschiedenen Fehlanforderungen, die durch die verschiedenen ARBSLOTs 48 erzeugt werden können. Schließlich gibt der Verfehlen- Entscheider 107 ein Signal MISS_GRANTED (VERFEHLEN GEWÄHRT) 112 aus, um die Fehlanforderung zu gewähren. Dieses Signal wird zu dem ARBSLOT 48 gesendet, der seinerseits das Ver­ fehlen-Steuersignal MISS_CAV 101 zu der Systemschnittstel­ lensteuerung 102 aktiviert. Die Systemschnittstellensteue­ rung 102 führt ihrerseits eine Speicheranforderung zu der Speicherhierarchie (nicht gezeigt) nach der Datenzeile ba­ sierend auf der Adresse MISS/COPY_IN-ADDR 104 (Verfeh­ len/Kopieren_Hinein-Adresse), die von dem ARBSLOT 48 zu der Systemschnittstellensteuerung 102 weitergeleitet wird, durch.
Sobald die Datenzeile von der Speicherhierarchie zu der Sy­ stemschnittstellensteuerung 102 übertragen ist, gibt die Systemschnittstellensteuerung 102 die Datenzeile zu dem DCACHE 24 weiter, wie es durch den Bezugspfeil 105 gezeigt ist, aktiviert das Steuersignal COPY_IN zu dem DCACHE 24 und gibt die Statusbits zu dem DCACHE 24 aus. Gleichzeitig aktiviert die Systemschnittstellensteuerung 102 das Steuer­ signal COPY_IN 103 zu den ARBSLOTs 48 und plaziert die zu­ geordnete Adresse in der MISS/COPY_IN-ADDR 104 zu den ARBS­ LOTs 48.
Wenn ein weiterer ARBSLOT 48 versucht, auf den DCACHE 24 nach einer fehlenden Datenzeile, die derzeit von der Spei­ cherhierarchie angefordert wird, zuzugreifen, dann wird der spezielle ARBSLOT 48 durch den Statusanzeiger 82 beraten, da der Statusanzeiger 82 einen Verfehlen-Anhängig-Status oder daß die Cachezeile durch einen weiteren ARBSLOT 48 an­ gefoidert wird, anzeigt. Eine redundante Speicheranforde­ rung nach einer Datenzeile, die bereits angefordert wurde, wird daher vermieden. Eine detailliertere Beschreibung der Speicherwarteschlange (MQUEUE) und des DM-Anzeigers 135 kann in den oben aufgelisteten U. S.-Patenten, z. B. dem '178-Patent, gefunden werden.
Während moderne Hochleistungsprozessoren, z. B. ein super­ skalarer Prozessor, der oben beschrieben ist, stark die Be­ fehlsausführungszeit verbessert haben, ist eine langsame Speicherzugriffszeit immer noch ein wesentliches Hindernis für einen Prozessor, der mit seiner voller Geschwindigkeit läuft. Wenn Anforderungen nach Daten aus dem Cachespeicher erfüllt werden können, können Verzögerungen, die einem Zu­ griff zu der langsameren Speicherhierarchie zugeordnet sind - auf die üblicherweise als eine Cacheverfehlen-Latenz Be­ zug genommen wird - vermieden werden. Das Reduzieren der Häufigkeit des Cacheverfehlens ist daher ein Ziel bei Hochleistungsprozessorentwürfen.
Bei einem Mehrprozessorsystem ist außerdem immer dann, wenn ein Prozessor eine Datenzeile anfordert, eine Kohärenzprü­ fung erforderlich, um zu bestimmen, ob jeweilige Caches der anderen Prozessoren die angeforderte Datenzeile enthalten, und/oder ob ein Zurückschreiben (oder Ausräumen) der Daten­ zeile zu der Speicherhierarchie erforderlich ist, z. B. wenn die Datenzeile durch den speziellen Prozessor, der die Datenzeile besitzt, modifiziert wurde. Die Kohärenzprüfung trägt zu Verzögerungen bei den Speicherzugriffen bei, auf die im folgenden als Kohärenzprüflatenz Bezug genommen wird.
Das spekulative Vorabrufen und Vorausräumen basiert auf ei­ ner gut bekannten Ortstheorie, die die räumliche Ortstheo­ rie genannt wird, die darauf achtet, daß, wenn auf Informa­ tionen durch den Prozessor zugegriffen wird, auf Informa­ tionen, deren Adressen nahe zu den Informationen, auf die zugegriffen wird, sind, ebenso zugegriffen wird. Dies ist insbesondere wahr, wenn die Lade- oder Speicher-Operation, die das Cacheverfehlen bewirkt hat, ein Teil der Be­ fehlscodefolge ist, die auf eine Datensatzlänge zugreift, die länger als eine Cachezeile ist, d. h. wenn die Be­ fehlseodefolge auf Daten Bezug nimmt, die mehrere Datenzei­ len überspannen. Bei einem System, das ein Vorabrufen und/oder Vorausräumen und nicht ein Abrufen (und/oder Aus­ räumen) von lediglich Daten, auf die derzeit zugegriffen wird, in (oder aus) den Cachespeicher Verwendet, kann ein Block von Daten (oder eine oder mehrere Cachezeilen) in der Nähe, der die Daten umfaßt, auf die derzeit zugegriffen wird, in den Cachespeicher gebracht werden (und/oder aus demselben ausgeräumt werden). Dieses spekulative Vorabrufen und Vorausräumen von zusätzlichen Datenzeilen in den oder aus dem Datencache, bevor dieselben durch spätere Speicher­ bezugnahmebefehle erforderlich sind, kann mindestens einen Teil der Cacheverfehllatenz und der Kohärenzprüflatenz ver­ stecken und daher die Gesamtleistung des Prozessorsystems verbessern.
Im vorhergehenden existieren jedoch ungünstigerweise keine bekannten Lösungen zum Implementieren des Vorabrufens und/oder Vorausräumens von Datenzeilen in Prozessoren, die eine ungeordnete Ausführung von Befehlen durchführen. Bei einem System das ein spekulatives Vorabrufen und/oder Vor­ ausräumen verwendet, das oben beschrieben ist, betrifft je­ de zusätzliche Speicheranforderung, die aus einer ungeord­ neten Ausführung von Befehlen resultiert, eine Speicher­ transaktion, die eine Übertragung einer Zahl von Datenzei­ len (und nicht einer einzigen Datenzeile ohne das Vorabru­ fen und Vorausräumen von zusätzlichen Datenzeilen) erfor­ dert, und kann zu einem sogar noch stärker erhöhten Verkehr über den Systembus führen, kann die übermäßige Verwendung der Systemschnittstellenbandbreite verschlimmern und kann daher die Systemleistung gefährden.
Die Aufgabe der vorliegenden Erfindung besteht darin, eine Vorrichtung zum Minimieren der Cachekohärenzprüflatenz bei einem System mit einer ungeordneten Befehlsausführung, das eine Mehrzahl von Prozessoren aufweist, und ein Verfahren zum Minimieren der Cachekohärenzprüflatenz bei einem System mit einer ungeordneten Befehlsausführung, das eine Mehrzahl von Prozessoren aufweist, zu schaffen, die ein effizientes System und ein effizientes Verfahren zum Vorabrufen von ei­ ner oder mehreren Datenzeilen aus einer Speicherhierarchie zu einem Cachespeicher ermöglichen, ohne die Systemleistung eines Systems mit einer ungeordneten Verarbeitung zu ge­ fährden.
Diese Aufgabe wird durch eine Vorrichtung zum Minimieren der Cachekohärenzprüflatenz bei einem System mit einer un­ geordneten Befehlsausführung, das eine Mehrzahl von Prozes­ soren aufweist, gemäß Anspruch 1 und durch ein Verfahren zum Minimieren der Cachekohärenzprüflatenz bei einem System mit einer ungeordneten Befehlsausführung, das eine Mehrzahl von Prozessoren aufweist, gemäß Anspruch 11 gelöst.
Ein Vorteil der vorliegenden Erfindung besteht darin, daß dieselbe ein effizientes System und effizientes Verfahren zum Vorabrufen von einer oder mehreren Datenzeilen von ei­ ner Speicherhierarchie zu einem Cachespeicher ermöglicht, während dieselbe mehrere redundante Speicheranforderungen bei dem Fall eines Cacheverfehlens bei einem System mit ei­ nem ungeordneten Verarbeiten minimiert.
Ein weiterer Vorteil der vorliegenden Erfindung besteht darin, daß dieselbe ein effizientes System und effizientes Verfahren zum Vorausräumen von einer oder mehreren Daten­ zeilen aus einem Cachespeicher bei einem System mit einer ungeordneten Befehlsausführung mit mehreren Prozessoren er­ möglicht, ohne zu der Systemkomplexität beizutragen und um dadurch die Kohärenzprüflatenz des Systems zu minimieren.
Gemäß den Prinzipien der vorliegenden Erfindung weist eine Vorrichtung zum Minimieren der Cachekohärenzprüflatenz in einem System mit einer ungeordneten Befehlsausführung, das eine Mehrzahl von Prozessoren aufweist, mindestens eine Cachekohärenzprüfvorrichtung, die einem ersten der Mehrzahl von Prozessoren zugeordnet ist, wobei die mindestens eine Cachekohärenzprüfvorrichtung konfiguriert ist, um ein Anwe­ senheitssignal auszugeben, das anzeigt, daß eine erste Da­ tenzeile, die durch einen zweiten der Mehrzahl von Prozes­ soren angefordert wird, in einem Cachespeicher anwesend ist, der dem ersten der Mehrzahl von Prozessoren zugeordnet ist, mindestens einen Vorausräumschlitz, der konfiguriert ist, um bei dem Empfang des Anwesenheitssignals mindestens eine zusätzliche Datenzeile zu bestimmen, die aus dem Cachespeicher, der dem ersten der Mehrzahl von Prozessoren zugeordnet ist, zu der Speicherhierarchie vorausgeräumt werden soll, und eine Logik auf, die dem mindestens einen Vorausräumschlitz zugeordnet ist, wobei die Logik konfigu­ riert ist, um eine Anzeige zu liefern, ob die mindestens eine zusätzliche Datenzeile bereits zu der Speicherhierar­ chie vom dem Cachespeicher ausgeräumt ist.
Gemäß einem weiteren Aspekt der Prinzipien der vorliegenden Erfindung weist ein Verfahren zum Minimieren der Cachekohä­ renzprüflatenz in einem System mit einer ungeordneten Be­ fehlsausführung, das eine Mehrzahl von Prozessoren auf­ weist, zusätzlich das Erfassen einer Anforderung eines Zu­ griffs auf eine erste Datenzeile von einer Speicherhierar­ chie, wobei die Anforderung durch einen ersten der Mehrzahl von Prozessoren durchgeführt wird, das Bestimmen, ob die erste Datenzeile in einem Cachespeicher, der einem zweiten der Mehrzahl von Prozessoren zugeordnet ist, anwesend ist, das Berechnen einer Adresse von mindestens einer zusätzli­ chen Datenzeile, die von dem Cachespeicher zu der Speicher­ hierarchie vorausgeräumt werden soll, und das Bestimmen auf, ob eine vorher durchgeführte Anforderung der minde­ stens einen zusätzlichen Datenzeile von dem Cachespeicher anhängig ist.
Bevorzugte Ausführungsbeispiele der vorliegenden Erfindung sind nachfolgend unter Bezugnahme auf die beiliegenden Zeichnungen näher erläutert. Es zeigen:
Fig. 1 ein Blockdiagramm, das die relevanten Abschnitte eines Vermächtniscomputersystems zeigt, das einen Prozessor für eine ungeordnete Befehlsausführung aufweist;
Fig. 2 ein Blockdiagramm eines exemplarischen Ausfüh­ rungsbeispiels des Vorabruf/Vorausräum-Schlitzes (DPRESLOT) gemäß den Prinzipien der vorliegenden Erfindung;
Fig. 2A ein Blockdiagramm eines exemplarischen Ausfüh­ rungsbeispiels der Cachetorentscheidungslogik ge­ mäß einem bevorzugten Ausführungsbeispiel der vorliegenden Erfindung;
Fig. 3 ein Flußdiagramm eines exemplarischen Ausfüh­ rungsbeispiels des Vorabrufverfahrens gemäß den Prinzipien der vorliegenden Erfindung;
Fig. 4 ein Blockdiagramm eines exemplarischen Ausfüh­ rungsbeispiels des Cachekohärenzprüfschlitzes (CCCSLOT) gemäß den Prinzipien der vorliegenden Erfindung; und
Fig. 5 ein Flußdiagramm eines exemplarischen Ausfüh­ rungsbeispiels des Vorausräumverfahrens gemäß den Prinzipien der vorliegenden Erfindung.
Für Vereinfachungs- und Darstellungs-Zwecke sind die Prin­ zipien der vorliegenden Erfindung hauptsächlich unter Be­ zugnahme auf ein exemplarisches Ausführungsbeispiel, insbe­ sondere unter Bezugnahme auf ein Beispiel, bei dem ein spe­ zifischer Schaltungsentwurf implementiert ist, beschrieben. Fachleuten ist es jedoch ohne weiteres offensichtlich, daß die gleichen Prinzipien gleichermaßen auf andere Schal­ tungsentwürfe anwendbar sind und in denselben implementiert werden können, und daß jede solche Variation innerhalb der Modifikationen liegt, die nicht von dem wahren Geist und dem Schutzbereich der vorliegenden Erfindung abweichen.
Gemäß den Prinzipien der vorliegenden Erfindung ist ein Vorabruf/Vorausräum-Schlitz (DPRESLOT) in einer Speicher­ warteschlange (MQUEUE) des Prozessors mit einer ungeordne­ ten Ausführung vorgesehen. Der DPRESLOT überwacht die Transaktionen zwischen einer Systemschnittstelle, z. B. dem Systembus, und einem Adreßneuordnungspufferschlitz (ARB­ SLOT) und/oder zwischen der Systemschnittstelle und einem Cachekohärenzprüfschlitz (CCCSLOT). Wenn ein Cacheverfehlen erfaßt wird, bewirkt der DPRESLOT, daß eine oder mehrere Cachezeilen zusätzlich zu der Datenzeile, die das aktuelle Cacheverfehlen bewirkt hat, aus der Speicherhierarchie in den Cachespeicher (DCACHE) in der Erwartung, daß die zu­ sätzlichen Daten in naher Zukunft erforderlich sind, vorab­ gerufen werden. Wenn ein Cachezurückschreiben als ein Re­ sultat einer Cachekohärenzprüfung erfaßt wird, bewirkt der DPRESLOT, daß eine oder mehrere Cachezeilen zusätzlich zu der Datenzeile, die derzeit zurückgeschrieben wird, aus der Speicherhierarchie von dem jeweiligen Cachespeicher (DCACHE) des Prozessors, der die Zeile besitzt, in der Er­ wartung, daß die zusätzlichen Daten für den anfordernden Prozessor in naher Zukunft erforderlich sind, vorausgeräumt werden. Eine Logik, die in dem DPRESLOT umfaßt ist, verhin­ dert eine Cachefehlanforderung nach den zusätzlichen Daten, wenn eine weitere Anforderung bereits nach diesen Daten durchgeführt wurde. Ein spekulatives Vorabrufen und Voraus­ räumen der zusätzlichen Datenzeilen minimiert die Cachever­ fehllatenz und die Kohärenzprüflatenz eines Prozessors mit einer ungeordneten Befehlsausführung.
Gemäß einem bevorzugten Ausführungsbeispiel der vorliegen­ den Erfindung werden insbesondere einer oder mehrere DPRESLOT(s) zu der Befehlsverarbeitungsvorrichtung 39b (Fig. 1) hinzugefügt. Alternativ können einer oder mehrere ARBSLOTs, die in Fig. 1 gezeigt sind, modifiziert werden, um die Funktionen des DPRESLOT durchzuführen, die nun de­ tailliert beschrieben sind.
Fig. 2 zeigt ein Blockdiagramm eines exemplarischen Ausfüh­ rungsbeispiels des Vorabruf/Vorausräum-Schlitzes (DPRESLOT) 200 gemäß den Prinzipien der vorliegenden Erfindung, der ein Register 136 zum Speichern eines Nicht-Treffer- (~HIT-) Anzeigers 136a, der durch das Signal ~HIT 118 von der Eti­ kettvergleichsvorrichtung 108 (Fig. 1) eingestellt wird, einen CACHE-INDEX 136b und ein reales Adreßetikett (TAG) 136c, die als eine Adresse ADDR 128 bzw. als ein TAG 134 von der Nachbaradressenlogik 213 empfangen werden, und wahlweise bei einem bevorzugten Ausführungsbeispiel der vorliegenden Erfindung einen Verfehlen-Typ-Speicher (= Miss Type Store) 136d zum Halten einer Speicherflag (STORE), die von einem MISS_STORE-Eingang 214 empfangen wird, umfaßt. Die einzelne Bitflag STORE zeigt an, ob der verarbeitete Speicherzugriffsbefehl eine Lese- oder eine Schreib- Operation durchführt, und wird aus dem Befehl abgeleitet, der derzeit in der Befehlsverarbeitungsvorrichtung 39b (Fig. 1) verarbeitet wird. Die Flag STORE wird durch den DCACHE 24 verwendet, um den Cachebetrieb bezüglich der vorabgerufenen Datenzeile(n), die mit dem Speicherzugriffs­ befehl, der durchgeführt wird, übereinstimmend zu halten.
Die Nachbaradressenlogik 213 empfängt die Adresse, die in der MISS/COPY_IN-ADDR 104 anwesend ist, die ein Teil der Transaktionsschnittstelle zwischen der Befehlsverarbei­ tungsvorrichtung 39b (Fig. 1) und der Systemschnittstellen­ steuerung 102 (Fig. 1) ist. Die Nachbaradressenlogik 213 erzeugt Adressen, die benachbart zu der Adresse positio­ niert sind, die durch die MISS/COPY_IN-ADDR 104 empfangen werden, durch beispielsweise Invertieren von einem oder mehreren niederwertigen Bits der empfangenen Adresse oder durch die Verwendung eines Zählers, um eine Zahl von Adres­ sen zu erzeugen. Bei diesem exemplarischen Ausführungsbei­ spiel wird das niederwertigste Bit (LSB; LSB = Least Signi­ ficant Bit) der empfangenen Adresse invertiert, um eine einzige Adresse zu erzeugen, die eine Position aufweist, die unmittelbar am nächsten, d. h. unmittelbar vorhergehend oder unmittelbar folgend, zu der empfangenen Adresse ist.
Die benachbarte Adresse(n), die daher erzeugt wird, wird zu ADDR 128 zur Speicherung in dem CACHE-INDEX 136b des Regi­ sters 136 ausgegeben. Die Nachbaradressenlogik 213 liefert ferner das TAG 134, das eine reale Seitenzahl (RPN; RPN = Real Page Number) ist, die der benachbarten Adresse bei dem bevorzugten Ausführungsbeispiel zugeordnet ist, zur Spei­ cherung in dem TAG 136c des Registers 136. Das Register 136 empfängt ein Aktualisierungssignal 212. Während das Aktua­ lisierungssignal 212 aktiv ist, aktualisiert das Register 136 den Inhalt desselben, d. h. den Inhalt von jedem der Felder desselben, d. h. das ~HIT 136a, den CACHE-INDEX 136b, das TAG 136c und die STORE 136d.
Das Aktualisierungssignal 212 wird von dem Invertierer 219 ausgegeben, der als Eingangssignal desselben ein Signal BUSY (= BESCHÄFTIGT) 204 von dem Busy-Latch (= Beschäftigt- Latch) 203 empfängt. Das Busy-Latch 203 kann beispielsweise ein Einstell-und-Neueinstell-(S-R-)Flip-Flop aufweisen und weist zwei Eingangssignale SET (= EINSTELLEN) 205 und CLR (= CLEAR = LÖSCHEN) 206 auf, die das Signal BUSY 204 einstellen bzw. neu einstellen. Wenn das Signal BUSY 204 eingestellt ist, d. h. aktiv ist, wird das Aktualisierungs­ signal 212 aktiv und das Aktualisieren des Registers 136 wird daher angehalten. Der SET-Eingang 205 empfängt ein de­ codiertes Ausgangssignal von dem Decodierer 202, der Ein­ gangssignale MISS_CAV 101 und TRANS_TYPE 201 empfängt. Das TRANS_TYPE 201 kann entweder ein "Ladeverfehlen", das aus einem Lesebefehl resultiert, ein "Speicherverfehlen", das aus einem Schreibbefehl resultiert, oder eine Kohärenz TRANS_TYPE 201 wird aus dem Befehl, der derzeit durch die Befehlsverarbeitungsvorrichtung 39b (Fig. 1) verarbeitet wird, und/oder aus Signalen abgeleitet, die von der System­ schnittstellensteuerung 102 (Fig. 1) empfangen werden.
Der Decodierer 202 gibt ein aktives Signal SET 205 aus, wenn MISS_CAV 101 eine gültige Adresse anzeigt, die in der MISS/COPY_IN-ADDR 104 anwesend ist, und wenn das TRANS_TYPE 201 anzeigt, daß die Transaktion, die in der Transaktions­ schnittstelle zwischen der Befehlsverarbeitungsvorrichtung 39b (Fig. 1) und der Systemschnittstellensteuerung 102 (Fig. 1) verarbeitet wird, eine Speicherzugriffsanforderung ist, die aus einem Cacheverfehlen für einen der ARBSLOTs 48 resultiert, oder die aus einer Cachekohärenzprüfung resul­ tiert, die detaillierter im folgenden beschrieben ist.
Das Register 136 aktualisiert kontinuierlich den Inhalt desselben, solange das Signal BUSY 204 inaktiv bleibt (d. h. wenn das Aktualisierungssignal 212 aktiv ist). Wenn das Signal BUSY 204 aktiv wird, hält das Register 136 das Aktualisieren des Inhalts desselben an, und der DPRESLOT 200 gibt eine ACCESS_REQ 115 (die in Fig. 1 gezeigt ist), die den aktuellen Inhalt des CACHE-INDEX 136b, des TAG 136c und der STORE 136d darstellt, in dem ACCESS_ADDR 114, dem ACCESS_TAG 116 und dem ACCESS_STORE 218 zu dem DCACHE 24 aus.
Bei dem Fall, daß es einen möglichen Treffer in dem DCACHE 24 gibt, wird der Statusanzeiger 82 eine gültige Cachezei­ le(n) widerspiegeln, wie es detaillierter in dem '178- Patent beschrieben ist. Die Etikettvergleichsvorrichtung 108 liest ferner das (die) Etikett(en) DCACHE_TAG(s) 81 und vergleicht dasselbe (dieselben) mit dem Etikett ACCESS_TAG 116, das der Zugriffsadresse ACCESS_ADDR 114 zugeordnet ist. Wenn es eine Übereinstimmung gibt, folgert die Eti­ kettvergleichsvorrichtung 108, daß es einen Treffer gibt, und deaktiviert das Signal ~HIT 118, um einen Treffer anzu­ zeigen, was bewirkt, daß das Eingangssignal CLR 206 des Busy-Latch 203 aktiviert wird, was bewirkt, daß das Signal BUSY 204 deaktiviert wird.
Wenn der Cachezugriff, basierend auf einem Statusanzeiger 82 verfehlt, oder wenn alternativ das Etikett DCACHE_TAG 81 nicht mit dem Etikett ACCESS_TAG 116 übereinstimmt, dann aktiviert die Etikettvergleichsvorrichtung 108 das Signal ~HIT 118, um ein Verfehlen anzuzeigen. Eine Vergleichsvor­ richtung 145 empfängt einen Cacheindex von der Adresse MISS/COPY_IN-ADDR 104, wie es durch den Bezugspfeil 146 an­ gezeigt wird, und vergleicht dieselbe mit dem CACHE-INDEX 136b von dem Register 136, wie es durch einen Bezugspfeil 147 gezeigt ist. Die Resultate der Vergleichsvorrichtung 145 werden zu einem UND-Gatter 214 weitergeleitet, wie es durch einen Bezugspfeil 149 gezeigt ist. Vorausgesetzt, daß das Verfehlensteuersignal MISS_CAV 101 aktiviert ist, kann das Vergleichssignal 149 bewirken, daß das Busy-Latch 203 neu eingestellt wird, was bewirkt, daß das Signal BUSY 204 deaktiviert wird. Bei diesem exemplarischen Ausführungsbei­ spiel ermöglicht das Vergleichssignal 149, daß das Aktuali­ sieren des Registers 136, nachdem das Signal MISS_GRANTED 112 durch den DPRESLOT 200 empfangen wird, wieder aufgenom­ men wird.
Das Busy-Latch 203 kann ebenfalls neu eingestellt werden, wenn es bereits eine anhängige Anforderung der Cachezeile gibt. Wenn einer der ARBSLOTs 148 bereits die gleiche Cachezeile von der Speicherhierarchie (nicht gezeigt) ange­ fordert hat, dann wird der DPRESLOT 200 durch den Statusan­ zeiger 82 (Fig. 1), da der Statusanzeiger 82 einen Verfeh­ len-Anhängig-Status, wie es detaillierter in dem '178- Patent beschrieben ist, anzeigen wird, beraten. In diesem Fall aktiviert die Etikettvergleichsvorrichtung 108 das Si­ gnal HIT_DM 121 (wie es in Fig. 1 gezeigt ist), das zusam­ men mit einem Signal ACCESS_+_2, das durch die Bezugsziffer 158 bezeichnet ist, und das zwei Zyklen nach dem Signal ACCESS_REQ 115 (Fig. 3) darstellt, in das UND-Logikgatter 211 eingespeist wird, was bewirkt, daß das Signal BUSY 204 deaktiviert wird.
Eine noch weitere Gelegenheit, bei der das Busy-Latch 203 gelöscht werden kann, ist dann, wenn ein Signal, das ein Auftreten eines unerwarteten katastrophalen Ereignisses an­ zeigt, von dem Eingang 208 des ODER-Logikgatters 207 emp­ fangen wird. Ein unerwartetes katastrophales Ereignis kann beispielsweise eine CPU-Falle sein.
Da das Signal BUSY 204 in das UND-Logikgatter 137 einge­ speist wird, wenn dasselbe inaktiv ist, d. h. in einem de­ aktivierten Zustand ist, wird DPRESLOT 200 an dem Erzeugen einer MISS_REQUEST 111 gehindert. Das deaktivierte Signal BUSY 204 bewirkt ferner, daß das Register 136 fortfährt, den Inhalt desselben zu aktualisieren.
Wenn auf der anderen Seite die ACCESS_REQ 115 dieser be­ nachbarten Cachezeile ein Verfehlen verursacht hat, d. h. das Signal ~HIT 139 und das Signal BUSY 204 sind aktiviert, dann wird das UND-Logikgatter 137 das Fehlanforderungs­ signal MISS_REQUEST 111 zu dem Verfehlen-Entscheider 107 (Fig. 1) ausgeben. Der Verfehlen-Entscheider 107 entschei­ det durch Priorisieren der verschiedenen Fehlanforderungen, die durch die verschiedenen ARBSLOTs 48 und/oder den DPRESLOT 200 erzeugt werden können. Der Verfehlen- Entscheider 107 gibt schließlich ein Signal MISS_GRANTED 112 aus, um die Fehlanforderung zu gewähren. Dieses Signal wird zu dem Treiber 213 in dem DPRESLOT 200 gesendet, der seinerseits das Verfehlen-Steuersignal MISS_CAV 101 zu der Systemschnittstellensteuerung 102 aktiviert. Die System­ schnittstellensteuerung 102 führt ihrerseits eine Speicher­ anforderung zu der Speicherhierarchie (nicht gezeigt) nach der Datenzeile basierend auf der Adresse MISS/COPY_IN-ADDR 104 durch.
Fig. 2A zeigt ein exemplarisches Blockdiagramm der relevan­ ten Abschnitte der Cachetorentscheidungslogik gemäß einem bevorzugten Ausführungsbeispiel der vorliegenden Erfindung, bei der drei Treiber 220 hinzugefügt sind, wobei jeder der­ selben aktiviert ist, d. h. das Signal ausgeben kann, das in den jeweiligen Eingangssignalen, wenn das Signal CACHE_GRANT 221 durch den Cachetorentscheider 222 aktiviert wird, der ein Teil des DCACHE 24 sein kann, dargestellt ist. Das Signal CACHE_GRANT 221 wird bei einem Empfang und bei einer Entscheidung des Signals CACHE_REQ 223 aktiviert, das von dem UND-Logikgatter 224 empfangen wird. Das UND- Logikgatter 224 empfängt seinerseits als Eingangssignale desselben den Taktpuls 225, das Signal BUSY, das ~ACCESS+1 (d. h. das Komplement von einem Taktzyklus nach ACCESS_REQ 115) 226 und das ~ACCESS+2 (d. h. das Komplement von zwei Taktzyklen nach ACCESS_REQ 115) 158.
Das Verfahren der erfinderischen Vorabrufoperation ist nun unter Bezugnahme auf ein exemplarisches Flußdiagramm, das in Fig. 3 gezeigt ist, beschrieben. Bei einem Schritt 301 wird die Transaktionsschnittstelle zwischen der Befehlsver­ arbeitungsvorrichtung 39b und der Systemschnittstellen­ steuerung 102 (auf die einfach als die "Transaktions­ schnittstelle" im folgenden Bezug genommen wird) kontinu­ ierlich nach einer Anwesenheit einer Transaktion überwacht, was beispielsweise durch Überwachen einer Aktivierung des MISS_CAV 101 bei dem exemplarischen DPRESLOT 200, der in Fig. 2 gezeigt ist, durchgeführt werden kann.
Sobald eine Transaktion erfaßt wird, wird bei einem Schritt 302 eine Bestimmung durchgeführt, ob es eine gültige Adres­ se gibt, die in der Transaktionsschnittstelle anwesend ist. Bei dem in Fig. 2 gezeigten Beispiel kann die Anwesenheit einer gültigen Adresse, z. B. wenn das Signal MISS_CAV 101 aktiviert ist, vermutet werden. Wenn bestimmt ist, daß eine gültige Adresse nicht in der Transaktionsschnittstelle an­ wesend ist, dann kehrt das Verfahren zu dem Schritt 301 zu­ rück, d. h. das Überwachen der Transaktionsschnittstelle wird fortgefahren.
Auf der anderen Seite fährt, wenn eine gültige Adresse er­ faßt wird, das Verfahren zu einem Schritt 303 fort, während dessen eine Bestimmung durchgeführt wird, ob die Transakti­ on eine Speicherzugriffsanforderung ist, die aus einem Cacheverfehlen resultiert. Bei dem Beispiel von Fig. 2 kann diese Bestimmung basierend auf dem TRANS_TYPE 201 durchge­ führt werden. Wenn bestimmt wird, daß die Transaktion kein Cacheverfehlen ist, dann kehrt das Verfahren zu dem Schritt 301 zurück, d. h. das Überwachen der Transaktionsschnitt­ stelle wird fortgefahren.
Wenn jedoch die Transaktion eine Speicherzugriffsanforde­ rung ist, die aus einem Cacheverfehlen resultiert, dann wird bei einem Schritt 304 das Überwachen der Transaktions­ schnittstelle angehalten. Bei dem DPRESLOT 200 wird bei­ spielsweise das Aktualisieren des Registers 136 durch Ein­ stellen des Busy-Latch 203 angehalten. Dann werden bei ei­ nem Schritt 305 eine oder mehrere Adressen von Datenzeilen, die vorabgerufen werden sollen, berechnet. Bei dem DPRESLOT 200 berechnet beispielsweise die Nachbaradressenlogik 213 die vorabzurufenden Adressen durch Invertieren von einem oder mehreren Bits (z. B. des niederwertigsten Bits (LSB; LSB = Least Significant Bit)) der Adresse der Datenzeile, deren versuchter Zugriff das Cacheverfehlen bewirkt hat, die in dem MISS/COPY_IN-ADDR 104 anwesend ist.
Bei einem Schritt 306 wird eine Cachenachschlagoperation für die Adressen durchgeführt, die während des obigen Schritts 305 berechnet werden. Bei dem Beispiel von Fig. 2 gibt beispielsweise der DPRESLOT 200 eine ACCESS_REQ 115, die den aktuellen Inhalt des CACHE-INDEX 136b, des TAG 136c und der STORE 136d darstellt, in dem ACCESS_ADDR 114, dem ACCESS_TAG 116 und dem ACCESS_STORE 218, zu dem DCACHE 24 aus.
Bei einem Schritt 307 wird das Resultat der Cachenach­ schlagoperation untersucht, um zu bestimmen, ob die vorab­ zurufenden Datenzeilen bereits in dem Cachespeicher anwe­ send sind, d. h. ob ein Cachetreffer auftritt. Bei dem Bei­ spiel von Fig. 2 bestimmt beispielsweise DPRESLOT 200, daß ein Cachetreffer aufgetreten ist, indem beobachtet wird, daß das ~HIT 118 durch die Etikettvergleichsvorrichtung 108, deaktiviert wird. Wenn ein Cachetreffer aufgetreten ist, kehrt das Verfahren zu dem Schritt 301 zurück und das Überwachen der Transaktionsschnittstelle wird wieder aufge­ nommen.
Wenn jedoch bei einem Schritt 307 ein Cacheverfehlen erfaßt wird, fährt das Verfahren zu einem Schritt 308 fort, bei dem eine Bestimmung durchgeführt wird, ob eine Anforderung der vorabzurufenden Datenzeile(n), z. B. durch einen ARBSLOT 48 bei dem Beispiel, das in Fig. 2 gezeigt ist, be­ reits durchgeführt wurde. Bei dem Beispiel von Fig. 2 kann eine anhängige Anforderung der Datenzeile aus dem HIT_DM 121 erfaßt werden. Wenn bestimmt wird, daß eine Anforderung der Datenzeile bereits anhängig ist, dann kehrt das Verfah­ ren zu dem Schritt 301 zurück und das Überwachen der Trans­ aktionsschnittstelle wird wieder aufgenommen.
Bei einem Schritt 309 wird schließlich, wenn keine vorher­ gehenden Anforderungen der Datenzeile anhängig sind, eine Anforderung nach der vorabzurufenden Datenzeile, z. B. durch Ausgeben des MISS_REQUEST 111 bei dem Beispiel von Fig. 2, ausgegeben, was schließlich dazu führt, daß das MISS_CAV 101 aktiviert wird und einen Speicherhierarchiezu­ griff nach der Datenzeile(n) bewirkt. Bei einem bevorzugten Ausführungsbeispiel kehrt, sobald die Anforderung der vorabzurufenden Datenzeile(n) ausgegeben ist (MISS_CAV 101 feuert ab), das Verfahren unmittelbar zu dem Schritt 301 zurück, und das gesamte Verfahren wird kontinuierlich wie­ derholt. In Fig. 2 handhabt beispielsweise die System­ schnittstellensteuerung 102 vorteilhafterweise den tatsäch­ lichen Zugriff der Speicherhierarchie, was es ermöglicht, daß DPRESLOT 200 das oben beschriebene Verfahren fortfährt. Wenn die Adresse der vorabzurufenden Datenzeile in der MISS/COPY_IN-ADDR 104 als ein Teil der Anforderung zu der Systemschnittstellensteuerung 102 plaziert ist, empfängt die Vergleichsvorrichtung 145 einen identischen Cacheindex in beiden Eingangssignalen 146 und 147 derselben, und das Signal BUSY 204 wird daher deaktiviert, was bewirkt, daß das Register 136 das Aktualisieren des Inhalts desselben wieder aufnimmt.
Wenn eine Fehlanforderung durch einen Befehl in ARBSLOT 48 eingeleitet wird, der mit der Adresse in dem Vergleichsein­ gangssignal 147 übereinstimmt bevor DPRESLOT 200 das Signal MISS_GRANTED 112 empfängt, wird das Signal BUSY 204 deakti­ viert und das Aktualisieren des Registers 13C wird weiter wieder aufgenommen.
Das erfinderische Cachevorausräumsystem und das erfinderi­ sche Verfahren gemäß den Prinzipien der vorliegenden Erfin­ dung sind im folgenden unter Bezugnahme auf exemplarische Ausführungsbeispiele, die in den Fig. 4 und 5 gezeigt sind, beschrieben.
Gemäß einem bevorzugten Ausführungsbeispiel der vorliegen­ den Erfindung werden einer oder mehrere Cachekohärenzprüf­ schlitze (CCCSLOT) zu der Befehlsverarbeitungsvorrichtung 39b (Fig. 1) hinzugefügt. Bei der Alternative können einer oder mehrere der ARBSLOTs, die in Fig. 1 gezeigt sind, mo­ difiziert sein, um die Funktionen des CCCSLOT, die detail­ lierter im folgenden beschrieben sind, zu übernehmen.
Fig. 4 zeigt insbesondere ein Blockdiagramm eines exempla­ rischen Ausführungsbeispiels des Cachekohärenzprüfschlitzes (CCCSLOT), der wie ein ARBSLOT 48, wie in dem '178-Patent beschrieben, erscheinen und auf eine ähnliche Art und Weise funktionieren kann, wobei die Hauptunterschiede unter ande­ rem das Hinzufügen des Erledigt-Latches 402 und des Trei­ bers 407 sind, und daß die Adresse 128 und das Etikett 134 von der Systemschnittstellensteuerung 102 und nicht von dem Adreßrechner 58 empfangen werden.
Wenn einer der mehreren Prozessoren in einem Mehrprozessor­ berechnungssystem eine oder mehrere Datenzeilen von der Speicherhierarchie anfordert, erscheint die Speicheranfor­ derung und die Adresse(n) von der einen oder den mehreren Datenzeilen in der Systemschnittstelle 22 (Fig. 1). Die Sy­ stemschnittstelle 102 von jedem Prozessor gibt beim Erfas­ sen der Speicheranforderung ein Signal CCC_INSERT 401 zu der Befehlsverarbeitungsvorrichtung 39b derselben aus.
Zu diesem Zweck empfängt bei dem bevorzugten Ausführungs­ beispiel der vorliegenden Erfindung ein jeweiliger CCCSLOT 400 von jedem der Prozessoren die ADDR 128, das TAG 134 und das Signal CCC_INSERT 401 von der Systemschnittstellen­ steuerung 102, wobei die ADDR 128 und das TAG 134 der Da­ tenzeile zugeordnet sind, die durch einen weiteren Prozes­ sor in dem System angefordert wird. Das Signal CCC_INSERT 401 dient als ein Taktsignal zu dem Register 136 des CCCSLOT 400, was dem Register 136 daher ermöglicht, den CACHE-INDEX 136b desselben und das TAG 136c mit der ADDR 128 bzw. dem TAG 134 zu aktualisieren. Das Signal CCC_INSERT 401 wird ferner in den Lösch-(CLR-; CLR = CLEAR)Eingang des Erledigt-Latches 402 eingespeist, das z. B. ein Einstell-und-Neueinstell-(S-R-; S-R = SET-RESET)- Flip-Flop sein kann. Wenn das CLR-Eingangssignal empfangen wird, wird das Ausgangssignal des Erledigt-Latches 402 in­ aktiv. Der Invertierer 510 invertiert das Ausgangssignal des Erledigt-Latches 402, wodurch ein aktives Signal ~DONE (= ~ERLEDIGT) dem Eingang des UND-Logikgatters 137, wie ge­ zeigt, dargestellt wird.
Beim Empfang des Signals CCC_INSERT 401 gibt der CCCSLOT 400 ein Signal ACCESS_REQ 115 zu dem DCACHE 24 aus und pla­ ziert den CACHE-INDEX 136b und das TAG 134 in der ACCESS_ADDR 114 bzw. dem ACCESS_TAG 116. Ansprechend darauf gibt der DCACHE 24 das (die) DCACHE_TAG(s) 81 und den STATUS 82, wie in Fig. 1 gezeigt, aus. Auf eine sehr ähnli­ che Art und Weise, wie im vorhergehenden in dem '178-Patent hinsichtlich des ARBSLOT 48 beschrieben, wird eine MISS_REQUEST 111 erzeugt, wenn die Datenzeile, die der ADDR 128 und dem TAG 134 entspricht, in dem DCACHE 24 abwesend ist, und wenn keine andere Anforderung der gleichen Daten­ zeile anhängig ist. Wenn der VERFEHLEN-ENTSCHEIDER (= MISS_ARBITRATOR) 107 das Signal MISS_GRANTED 112 anspre­ chend auf die MISS_REQUEST 111 zurückgibt, wird das Signal MISS_GRANTED 112 in den SET-Eingang des Erledigt-Latches 402 eingespeist, wodurch ein aktives Signal DONE erzeugt wird, um zu verhindern, daß eine weitere MISS_REQUEST 111 ausgegeben wird.
Das Signal MISS_GRANTED 112 ermöglicht ferner, daß der Treiber 407 den aktuellen Inhalt des ~HIT 136a des Regi­ sters 136 weiter zu dem Signal CCC_MISS/HIT 408 gibt, das zu der Systemschnittstellensteuerung 102 gesendet wird. Ba­ sierend auf dem empfangenen Signal CCC_MISS/HIT 408 und dem STATUS 82 bestimmt die Systemschnittstellensteuerung 102, ob ein Zurückschreiben oder Ausräumen der Datenzeile (d. h. auf die durch die MISS/COPY_IN-ADDR 104 gezeigt wird) aus dem DCACHE 24 zu der Speicherhierarchie (nicht gezeigt) er­ forderlich ist. Bei einem Ausführungsbeispiel der vorlie­ genden Erfindung bewirkt immer dann, wenn die Datenzeile in dem DCACHE 24 gefunden wird, d. h. wenn CCC_MISS/HIT 408 inaktiv ist, und der STATUS 82 anzeigt, daß die Cachezeile verunreinigt ist, die Systemschnittstellensteuerung 102, daß die Datenzeile (d. h. auf die durch MISS/COPY_IN-ADDR 104 gezeigt wird) aus dem Prozessor geschrieben wird, der die Cachezeile angefordert hat.
Wenn der DPRESLOT 200 das angezeigte Cachekohärenzprüfre­ sultat an dem Eingang TRANS_TYPE 201 empfängt, der durch den CCCSLOT 400 getrieben wird, leitet der DPRESLOT 200 ei­ ne Vorausräumoperation gemäß den Prinzipien der vorliegen­ den Erfindung ein, die im folgenden unter Bezugnahme auf die Fig. 2 und 5 beschrieben ist.
Fig. 5 zeigt insbesondere ein Flußdiagramm eines exemplari­ schen Ausführungsbeispiels des Vorausräumverfahrens, wobei bei einem Schritt 501 desselben die Transaktionsschnitt­ stelle zwischen der Befehlsverarbeitungsvorrichtung 39b und der Systemschnittstellensteuerung 102 (auf die einfach als die "Transaktionsschnittstelle" im folgenden Bezug genommen wird) kontinuierlich nach einer Anwesenheit einer Transak­ tion überwacht wird, was beispielsweise durch Überwachen einer Aktivierung des MISS_CAV 101 bei dem exemplarischen DPRESLOT 200, der in Fig. 2 gezeigt ist, durchgeführt wer­ den kann.
Sobald eine Transaktion erfaßt ist, wird eine Bestimmung, ob es eine gültige Adresse gibt, die in der Transaktions­ schnittstelle anwesend ist, z. B. durch Erfassen, daß das Signal MISS_CAV 101 aktiviert ist (Schritt 502) durchge­ führt. Wenn bestimmt ist, daß eine gültige Adresse nicht in der Transaktionsschnittstelle anwesend ist, dann kehrt das Verfahren zu dem Schritt 501 zurück, d. h. das Überwachen der Transaktionsschnittstelle fährt fort.
Wenn auf der anderen Seite eine gültige Adresse erfaßt wird, fährt das Verfahren zu einem Schritt 503 fort, wäh­ rend dessen eine Bestimmung durchgeführt wird, ob die Transaktion eine Kohärenzantwort ist, die aus einer Cache­ kohärenzprüfung resultiert. Wenn bestimmt wird, daß die Transaktion keine Cachekohärenzantwort ist, dann kehrt das Verfahren zu dem Schritt 501 zurück, d. h. das Überwachen der Transaktionsschnittstelle fährt fort.
Wenn jedoch die Transaktion eine Kohärenzantwort ist, z. B. eine Kohärenzantworttransaktion, die das Kopieren von un­ sauberen Daten erfordert, wie es durch den STATUS 82 ange­ zeigt ist, wird das Überwachen der Transaktionsschnittstel­ le, beispielsweise durch Einstellen des Busy-Latch 203, um das Aktualisieren des Registers 136 anzuhalten, angehalten. Dann werden bei einem Schritt 505 eine oder mehrere Adres­ sen von Datenzeilen, die vorausgeräumt werden sollen, be­ rechnet. Die Nachbaradressenlogik 213 berechnet die voraus­ zuräumenden Adressen durch Invertieren von einem oder meh­ reren Bits (z. B. des niederwertigsten Bits (LSB)) der Adresse der Datenzeile, die in der MISS/COPY_IN-ADDR 104 anwesend ist.
Bei einem Schritt 506 wird eine Cachenachschlagoperation für die Adressen durchgeführt, die während des obigen Schritts 505 berechnet werden. Der DPRESLOT 200 gibt eine ACCESS_REQ 115, die den aktuellen Inhalt des CACHE-INDEX 136b, des TAG 136c und der STORE 136d darstellt, in dem ACCESS_ADDR 114, dem ACCESS_TAG 116 bzw. dem ACCESS_STORE 218, zu dem DCACHE 24 aus.
Bei einem Schritt 507 wird das Resultat der Cachenach­ schlagoperation untersucht, um zu bestimmen, ob die voraus­ zuräumende(n) Datenzeile(n) in dem Cachespeicher anwesend ist, d. h. DPRESLOT 200 bestimmt durch Beobachten, daß das ~HIT 118 durch die Etikettvergleichsvorrichtung 108 deakti­ viert wird, daß ein Cachetreffer aufgetreten ist. Wenn ein Cacheverfehlen aufgetreten ist, kehrt das Verfahren zu dem Schritt 501 zurück und das Überwachen der Transaktions­ schnittstelle wird wieder aufgenommen.
Wenn jedoch bei dem Schritt 507 ein Cachetreffer erfaßt wird, fährt das Verfahren zu dem Schritt 508 fort, bei dem eine Bestimmung, ob eine Anforderung der (den) vorauszuräu­ menden Datenzeile(n) bereits durchgeführt wurde, z. B. durch einen ARBSLOT 48, der in Fig. 1 gezeigt ist, durch Beobachten eines HIT_DM 121 durchgeführt wird. Wenn be­ stimmt wird, daß eine Anforderung einer Datenzeile bereits anhängig ist, dann kehrt das Verfahren zu dem Schritt 501 zurück und das Überwachen der Transaktionsschnittstelle wird wieder aufgenommen.
Schließlich wird bei einem Schritt 509, wenn keine vorher­ gehenden Anforderungen nach der Datenzeile anhängig sind, eine Ausräumtransaktion für die vorauszuräumende Datenzei­ le, z. B. durch Ausgeben der MISS_REQUEST 111, die bewirkt, daß ein Speicherhierarchiezugriff durch die Systemschnitt­ stellensteuerung 102 die Datenzeile(n) von dem DCACHE 24 zu der Speicherhierarchie schreibt, ausgegeben. Zu diesem Zweck kann das Eingangssignal ~HIT zu dem UND-Logikgatter 137 für den Zweck des Verwendens des DPRESLOT 200 für eine Vorausräumoperation invertiert werden, z. B. wenn das TRANS_TYPE 201 eine Cachekohärenzprüfung anzeigt. Bei einem bevorzugten Ausführungsbeispiel der vorliegenden Erfindung wird der STATUS 82 berücksichtigt, und die vorauszuräumende Datenzeile wird lediglich ausgeräumt, wenn der Status der vorauszuräumenden Datenzeile anzeigt, daß die Daten unsau­ ber sind. Bei der Alternative kann die vorauszuräumende Da­ tenzeile ohne Rücksicht auf den Status derselben ausgeräumt werden. Bei einem bevorzugten Ausführungsbeispiel kehrt, sobald die Anforderung nach der (den) vorauszuräumenden Da­ tenzeile(n) ausgegeben ist, das Verfahren unmittelbar zu dem Schritt 501 zurück und das gesamte Verfahren wird kon­ tinuierlich wiederholt.
Wie es offensichtlich ist, ist ein effizientes System zum Vorabrufen und/oder Vorausräumen von einer oder mehreren Datenzeilen, das nicht die anderen Komponenten von einem System mit einem ungeordneten Verarbeiten beeinflußt und ohne weiteres in dasselbe integriert werden kann und das ferner die redundanten mehreren Speicheranforderungen mini­ miert, beschrieben.

Claims (18)

1. Vorrichtung (100) zum Minimieren einer Cachekohärenz­ prüflatenz in einem System mit einer ungeordneten Be­ fehlsausführung, das eine Mehrzahl von Prozessoren aufweist, mit folgenden Merkmalen:
mindestens einer Cachekohärenzprüfvorrichtung (400), die einem ersten der Mehrzahl von Prozessoren zugeord­ net ist, wobei die mindestens eine Cachekohärenzprüf­ vorrichtung (400) konfiguriert ist, um ein Anwesen­ heitssignal (408) auszugeben, das anzeigt, daß eine erste Datenzeile, die durch einen zweiten der Mehrzahl von Prozessoren angefordert wird, in einem Cachespei­ cher (24) anwesend ist, der dem ersten der Mehrzahl von Prozessoren zugeordnet ist;
mindestens einem Vorausräumschlitz (200), der konfigu­ riert ist, um beim Empfang des Anwesenheitssignals (408) mindestens eine zusätzliche Datenzeile zu bestimmen, die aus dem Cachespeicher (24), der dem er­ sten der Mehrzahl von Prozessoren zugeordnet ist, zu dem zweiten der Mehrzahl von Prozessoren vorausgeräumt werden soll; und
einer Logik, die dem mindestens einem Vorausräum­ schlitz (200) zugeordnet ist, wobei die Logik konfigu­ riert ist, um eine Anzeige zu liefern, ob die mindes­ tens eine zusätzliche Datenzeile bereits aus dem Cachespeicher (24) ausgeräumt wird.
2. Vorrichtung (100) zum Minimieren der Cachekohärenz­ prüflatenz gemäß Anspruch 1, bei der der mindestens eine Vorausräumschlitz (200) folgende Merkmale auf­ weist:
eine Nachbaradressenlogik (213), die konfiguriert ist, um eine oder mehrere zusätzliche Adressen zu liefern, die der mindestens einen zusätzlichen Datenzeile ent­ sprechen, wobei die mindestens eine zusätzliche Daten­ zeile eine Speicherposition aufweist, die benachbart zu der ersten Datenzeile ist.
3. Vorrichtung (100) zum Minimieren der Cachekohärenz­ prüflatenz gemäß Anspruch 2, bei der die Nachbaradressenlogik (213) eine erste Adresse emp­ fängt, die der ersten Datenzeile entspricht, und eine oder mehrere zusätzliche Adressen durch Invertieren von einem oder mehreren Bits der ersten Adresse lie­ fert.
4. Vorrichtung (100) zum Minimieren der Cachekohärenz­ prüflatenz gemäß Anspruch 3, bei der das eine oder die mehreren Bits der ersten Adresse ein niederwertigstes Bit der ersten Adresse aufweisen.
5. Vorrichtung (100) zum Minimieren der Cachekohärenz­ prüflatenz gemäß Anspruch 2, 3 oder 4, mit ferner fol­ genden Merkmalen:
einem Beschäftigt-Latch (203), das ein Einstell-Ein­ gangssignal (205) und ein Lösch-Eingangssignal (206) aufweist, wobei das Beschäftigt-Latch (203) konfigu­ riert ist, um ein Beschäftigt-Signal (204) auszugeben, und das Beschäftigt-Signal (204) aktiv ist, wenn das Einstell-Eingangssignal (205) ausgelöst ist, und inak­ tiv ist, wenn das Lösch-Eingangssignal (206) ausgelöst ist; und
einem Register (136), das konfiguriert ist, um einen Cacheindex (136b) und ein Etikett (136c) zu speichern, wobei beide derselben aus einer Adresse abgeleitet werden, die von der Nachbaradressenlogik (213) empfan­ gen wird, wobei das Register (136) die Adresse von der Nachbaradressenlogik (213) beim Empfang eines Aktuall­ sierungssignals (212) empfängt, wobei das Aktualisie­ rungssignal durch Invertieren des Beschäftigt-Signals (204) erzeugt wird.
6. Vorrichtung (100) zum Minimieren der Cachekohärenz­ prüflatenz gemäß Anspruch 5, mit ferner folgendem Merkmal:
einer Decodierlogik (202) zum Empfangen eines Transak­ tionstyps (201), wobei die Decodierlogik (202) konfi­ guriert ist, um das Einstell-Eingangssignal (205) des Beschäftigt-Latch (203) auszulösen, wenn der empfange­ ne Transaktionstyp (201) einen Empfang des Anwesen­ heitssignals (408) anzeigt.
7. Vorrichtung (100) zum Minimieren der Cachekohärenz­ prüflatenz gemäß Anspruch 5 oder 6, bei der der mindestens eine Vorausräumschlitz (200) konfigu­ riert ist, um zu bestimmen, ob die mindestens eine zu­ sätzliche Datenzeile in dem Cachespeicher (24) anwe­ send ist, wenn das Beschäftigt-Signal (204) aktiv ist.
8. Vorrichtung (100) zum Minimieren der Cachekohärenz­ prüflatenz gemäß einem der Ansprüche 2 bis 7, bei der die mindestens eine Cachekohärenzprüfvorrichtung (400) konfiguriert ist, um das Anwesenheitssignal (48) aus­ zugeben, wenn die erste Datenzeile zu dem zweiten der Mehrzahl von Prozessoren aus dem Cachespeicher (24) ausgeräumt wurde.
9. Vorrichtung (100) zum Minimieren der Cachekohärenz­ prüflatenz gemäß Anspruch 5, 6 oder 7, bei der der mindestens eine Vorausräumschlitz (200) konfigu­ riert ist, um zu bewirken, daß die mindestens eine zu­ sätzliche Datenzeile zu dem zweiten der Mehrzahl von Prozessoren aus dem Cachespeicher (24) ausgeräumt wird, wenn das Beschäftigt-Signal (204) aktiv ist.
10. Vorrichtung (100) zum Minimieren der Cachekohärenz­ prüflatenz gemäß einem der Ansprüche 1 bis 9, bei der der mindestens eine Vorausräumschlitz (200) konfigu­ riert ist, um zu bewirken, daß die mindestens eine zu­ sätzliche Datenzeile zu dem zweiten der Mehrzahl von Prozessoren aus dem Cachespeicher (24) ausgeräumt wird, wenn bestimmt wird, daß die mindestens eine zu­ sätzliche Datenzeile in dem Cachespeicher (24) anwe­ send ist.
11. Verfahren zum Minimieren der Cachekohärenzprüflatenz in einem System mit einer ungeordneten Befehlsausfüh­ rung, das eine Mehrzahl von Prozessoren aufweist, mit folgenden Schritten:
Erfassen einer Anforderung eines Zugriffs auf eine er­ ste Datenzeile von einer Speicherhierarchie, wobei die Anforderung durch einen ersten der Mehrzahl von Pro­ zessoren durchgeführt wird;
Bestimmen, ob die erste Datenzeile in einem Cachespei­ cher (24) anwesend ist, der einem zweiten der Mehrzahl von Prozessoren zugeordnet ist;
Berechnen einer Adresse von mindestens einer zusätzli­ chen Datenzeile, die aus dem Cachespeicher zu dem zweiten der Mehrzahl von Prozessoren vorausgeräumt werden soll; und
Bestimmen, ob eine vorher durchgeführte Anforderung nach der mindestens einen zusätzlichen Datenzeile aus dem Cachespeicher anhängig ist.
12. Verfahren zum Minimieren der Cachekohärenzprüflatenz gemäß Anspruch 11, bei dem der Schritt des Berechnens der Adresse von der mindestens einen zusätzlichen Da­ tenzeile folgenden Schritt aufweist:
Invertieren von einem oder mehreren Bits einer Adresse der ersten Datenzeile.
13. Verfahren zum Minimieren der Cachekohärenzprüflatenz gemäß Anspruch 12, bei dem das eine oder die mehreren Bits ein niederwertigstes Bit aufweisen.
14. Verfahren zum Minimieren der Cachekohärenzprüflatenz gemäß Anspruch 11, 12 oder 13, mit ferner folgendem Schritt:
Verhindern eines Ausräumens der mindestens einen zu­ sätzlichen Datenzeile zu dem zweiten der Mehrzahl von Prozessoren, wenn die vorher durchgeführte Anforderung anhängig ist.
15. Verfahren zum Minimieren der Cachekohärenzprüflatenz gemäß einem der Ansprüche 11 bis 14, mit ferner fol­ gendem Schritt:
Ausgeben einer Anforderung der mindestens einen zu­ sätzlichen Datenzeile, die zu dem zweiten der Mehrzahl von Prozessoren ausgeräumt werden soll, wenn die vor­ her durchgeführte Anforderung nicht anhängig ist.
16. Verfahren zum Minimieren der Cachekohärenzprüflatenz gemäß einem der Ansprüche 11 bis 15, mit ferner fol­ gendem Schritt:
Bestimmen, ob die mindestens eine zusätzliche Daten­ zeile in dem Cachespeicher (24) anwesend ist.
17. Verfahren zum Minimieren der Cachekohärenzprüflatenz gemäß Anspruch 16, mit ferner folgendem Schritt:
Ausgeben einer Anforderung der mindestens einen zu­ sätzlichen Datenzeile, die zu dem zweiten der Mehrzahl von Prozessoren ausgeräumt werden soll, wenn die min­ destens eine zusätzliche Datenzeile in dem Cachespei­ cher (24) anwesend ist.
18. Verfahren zum Minimieren der Cachekohärenzprüflatenz gemäß Anspruch 16 oder 17, mit ferner folgendem Schritt:
Verhindern, daß die mindestens eine zusätzliche Daten­ zeile zu dem zweiten der Mehrzahl von Prozessoren aus­ geräumt wird, wenn die mindestens eine zusätzliche Da­ tenzeile nicht in dem Cachespeicher (24) anwesend ist.
DE10113191A 2000-05-04 2001-03-19 Spekulatives Vorausräumen von Daten in einem Prozessorsystem mit einer ungeordneten Ausführung Expired - Fee Related DE10113191B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/565,013 US6408363B1 (en) 2000-05-04 2000-05-04 Speculative pre-flush of data in an out-of-order execution processor system
US09/565,013 2000-05-04

Publications (2)

Publication Number Publication Date
DE10113191A1 true DE10113191A1 (de) 2001-11-08
DE10113191B4 DE10113191B4 (de) 2004-11-04

Family

ID=24256843

Family Applications (1)

Application Number Title Priority Date Filing Date
DE10113191A Expired - Fee Related DE10113191B4 (de) 2000-05-04 2001-03-19 Spekulatives Vorausräumen von Daten in einem Prozessorsystem mit einer ungeordneten Ausführung

Country Status (2)

Country Link
US (1) US6408363B1 (de)
DE (1) DE10113191B4 (de)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2329680A1 (en) * 1999-12-30 2001-06-30 Michael A. Cook Three layer washer
US6704842B1 (en) * 2000-04-12 2004-03-09 Hewlett-Packard Development Company, L.P. Multi-processor system with proactive speculative data transfer
US7000081B2 (en) * 2002-02-12 2006-02-14 Ip-First, Llc Write back and invalidate mechanism for multiple cache lines
US8281079B2 (en) * 2004-01-13 2012-10-02 Hewlett-Packard Development Company, L.P. Multi-processor system receiving input from a pre-fetch buffer
US7406565B2 (en) * 2004-01-13 2008-07-29 Hewlett-Packard Development Company, L.P. Multi-processor systems and methods for backup for non-coherent speculative fills
US7383409B2 (en) 2004-01-13 2008-06-03 Hewlett-Packard Development Company, L.P. Cache systems and methods for employing speculative fills
US7380107B2 (en) * 2004-01-13 2008-05-27 Hewlett-Packard Development Company, L.P. Multi-processor system utilizing concurrent speculative source request and system source request in response to cache miss
US7360069B2 (en) * 2004-01-13 2008-04-15 Hewlett-Packard Development Company, L.P. Systems and methods for executing across at least one memory barrier employing speculative fills
US7409500B2 (en) * 2004-01-13 2008-08-05 Hewlett-Packard Development Company, L.P. Systems and methods for employing speculative fills
US7376794B2 (en) * 2004-01-13 2008-05-20 Hewlett-Packard Development Company, L.P. Coherent signal in a multi-processor system
US8301844B2 (en) * 2004-01-13 2012-10-30 Hewlett-Packard Development Company, L.P. Consistency evaluation of program execution across at least one memory barrier
US7340565B2 (en) * 2004-01-13 2008-03-04 Hewlett-Packard Development Company, L.P. Source request arbitration
US7409503B2 (en) * 2004-01-13 2008-08-05 Hewlett-Packard Development Company, L.P. Register file systems and methods for employing speculative fills
US7962696B2 (en) * 2004-01-15 2011-06-14 Hewlett-Packard Development Company, L.P. System and method for updating owner predictors
US7240165B2 (en) * 2004-01-15 2007-07-03 Hewlett-Packard Development Company, L.P. System and method for providing parallel data requests
US9852074B2 (en) * 2015-01-12 2017-12-26 Alcatel Lucent Cache-optimized hash table data structure
US10489298B2 (en) * 2015-07-28 2019-11-26 Hewlett Packard Enterprise Development Lp Hardware flush assist

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5214766A (en) * 1989-04-28 1993-05-25 International Business Machines Corporation Data prefetching based on store information in multi-processor caches
US5787267A (en) * 1995-06-07 1998-07-28 Monolithic System Technology, Inc. Caching method and circuit for a memory system with circuit module architecture
US5758178A (en) * 1996-03-01 1998-05-26 Hewlett-Packard Company Miss tracking system and method
US5881303A (en) * 1996-07-01 1999-03-09 Sun Microsystems, Inc. Multiprocessing system configured to perform prefetch coherency activity with separate reissue queue for each processing subnode
US5848254A (en) * 1996-07-01 1998-12-08 Sun Microsystems, Inc. Multiprocessing system using an access to a second memory space to initiate software controlled data prefetch into a first address space
US6247107B1 (en) * 1998-04-06 2001-06-12 Advanced Micro Devices, Inc. Chipset configured to perform data-directed prefetching

Also Published As

Publication number Publication date
US6408363B1 (en) 2002-06-18
DE10113191B4 (de) 2004-11-04

Similar Documents

Publication Publication Date Title
DE69721961T2 (de) Mikroprozessor mit einem Nachschreibcachespeicher
DE10085373B4 (de) Verfahren zum Flushen von Cache-Zeilen
DE10113191B4 (de) Spekulatives Vorausräumen von Daten in einem Prozessorsystem mit einer ungeordneten Ausführung
DE60222402T2 (de) Verfahren und system zur spekulativen ungültigkeitserklärung von zeilen in einem cachespeicher
DE69636452T2 (de) Mehrprozessor-cachespeicherkohärenzprotokoll für einen lokalbus
DE19983793B4 (de) System mit einem Prozessor, auf dem mehrere, gleichzeitig aktive Ausführungsentitäten ausgeführt werden, und mit einem mehrere, den Ausführungsentitäten zugewiese Cache-Abschnitte aufweisenden Cache-Speicher
DE69531933T2 (de) Busarchitektur in hochgradiger pipeline-ausführung
DE4218003C2 (de) Cache-Steuereinrichtung für ein sekundäres Cache-Speichersystem
DE60009151T2 (de) Vorhersage von datenbeförderung von speicher- zum ladebefehl mit untrainierung
DE69816044T2 (de) Zeitstrafen-basierende cache-speicherungs- und ersetzungs-techniken
DE60005860T2 (de) Ablaufsteuerung zum ausgeben und wiederausgeben von ketten abhängiger befehle
DE112006003453T5 (de) Per-Satz-Relaxation der Cache-Inklusion
DE60210633T2 (de) Verfahren und vorrichtungen zur verbesserung des durchsatzes von eingebetteten prozessoren auf cache-basis durch umschalten von tasks als reaktion auf eine cache-verfehlung
DE10262164B4 (de) Computersystem mit einer hierarchischen Cacheanordnung
DE112007001171T5 (de) Verfahren für virtualisierten Transaktionsspeicher bei globalem Überlauf
DE19506734A1 (de) Computersystem und Verfahren zum Aufrechterhalten der Speicherkonsistenz in einer Busanforderungswarteschlange
DE112004002267T5 (de) Ruhezustandsmechansimus für virtuelles Multithreading
DE112010004322T5 (de) Vorhersagen und Vermeiden von Operand-Speichervorgang-Vergleich-Gefahren in Mikroprozessoren mit abweichender Reihenfolge
DE4335475A1 (de) Datenverarbeitungseinrichtung mit Cache-Speicher
DE112004001854T5 (de) System und Verfahren zur Handhabung von Sonderinstruktionen in einem Prozessor auf Grundlage eines Cache-Speichers mit Ablaufverfolgung
DE10219623A1 (de) System und Verfahren zur Speicherentscheidung unter Verwendung von mehreren Warteschlangen
DE10006430B4 (de) Verfahren zur Aufrechterhaltung einer Kohärenz für ein Multi-Prozessor-System
DE10393803T5 (de) Verfahren und Vorrichtung zum Bestimmen einer Seitenverwaltungsimplementierung bei dynamischem Speicher mit wahlfreiem Zugriff
DE10219621A1 (de) Schnelle Prioritätsbestimmungsschaltung mit rotierender Priorität
DE10045188A1 (de) Cacheadresskonfliktvorrichtung ohne Speicherpuffer

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8364 No opposition during term of opposition
8327 Change in the person/name/address of the patent owner

Owner name: HEWLETT-PACKARD DEVELOPMENT CO., L.P., HOUSTON, TE

R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee