DE19983687B4 - Verarbeitung geordneter Datenanforderungen an einen Speicher - Google Patents

Verarbeitung geordneter Datenanforderungen an einen Speicher Download PDF

Info

Publication number
DE19983687B4
DE19983687B4 DE19983687T DE19983687T DE19983687B4 DE 19983687 B4 DE19983687 B4 DE 19983687B4 DE 19983687 T DE19983687 T DE 19983687T DE 19983687 T DE19983687 T DE 19983687T DE 19983687 B4 DE19983687 B4 DE 19983687B4
Authority
DE
Germany
Prior art keywords
data
cache
ordered
requests
memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE19983687T
Other languages
English (en)
Other versions
DE19983687T1 (de
Inventor
John Wai Cheong Saratoga Fu
Dean Ahmad Ft. Collins Mulla
Gregory S. Santa Clara MATHEWS
Stuart E. Campbell SAILER
Jeng-Jye Palo Alto Shaw
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.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE19983687T1 publication Critical patent/DE19983687T1/de
Application granted granted Critical
Publication of DE19983687B4 publication Critical patent/DE19983687B4/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/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0855Overlapped cache accessing, e.g. pipeline

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)

Abstract

Cache-Einrichtung, die von einer ersten Ausführungseinheit (105; 501; 410), die eine Mehrzahl von Datenanforderungen ausgibt (200), angesteuert wird, wobei die Datenanforderungen wenigstens zwei geordnete Datenanforderungen umfassen;
aufweisend:
einen Cache-Speicher (120; 505; 425) mit einem pipelineverschachtelten Datenanforderungsport (110; 415) zum Empfangen von Datenanforderungen und eine Steuerlogik (115; 515), wobei der Datenanforderungsport (110; 415) feststellt (210), ob eine frühere der geordneten Datenanforderungen einem Fehlversuch in dem Cache-Speicher (120; 505; 425) entspricht, und die Steuerlogik (115; 515) im Falle eines Fehlversuchs eine spätere der geordneten Datenanforderungen in einen Vorabruf konvertiert (215); und
einen sekundären Speicher (585; 435), wobei der Vorabruf das Gewinnen von Daten aus dem sekundären Speicher (585; 435) und das Speichernder gewonnenen Daten in dem Cache-Speicher (110; 505; 425) ohne unmittelbare Weiterleitung der gewonnenen Daten an die erste Ausführungseinheit (105; 501; 410) veranlasst.

Description

  • Diese Erfindung betrifft eine Cache-Einrichtung mit einem Cache-Speicher und einem sekundären Speicher, wobei die Cache-Einrichtung einen Port zum Empfangen von Datenanforderungen aufweist.
  • Der Bedarf an schnelleren und leistungsfähigeren Personalcomputern führte zu vielen technologischen Fortschritten in der Computerindustrie einschließlich der Entwicklung schnellerer Speicher. Historisch ist die Leistung eines Personalcomputers mit der Geschwindigkeit des Zugriffes auf den Speicher verknüpft, um Daten wiederzugewinnen, die durch Befehle bearbeitet worden sind, und um Daten wiederzugewinnen, die die Befehle selbst codieren. Die Leistung von Hochgeschwindigkeitsprozessoren wurde durch langsame Datenzugriffszeiten behindert. Um die Datenzugriffe zu beschleunigen, wurde ein als "Cache-Speicher" bekannter schneller Speicher entwickelt.
  • Ein Cache-Speicher ist relativ klein und arbeitet bei einer höheren Geschwindigkeit als ein Hauptspeicher infolge entweder einer direkteren Kopplung mit dem Prozessor oder von Hardwareanpassungen. Der Cache-Speicher speichert die jüngst benutzten Datenblöcke derart, daß ein Zugreifen auf diese Blöcke schneller ist als ein Zugreifen auf ein Hauptspeicher.
  • Die Verwendung von Cache-Speichern gestattet es gewöhnlich dem Prozessor, die Anzahl der Warteperioden zu reduzieren, die dem Wiedergewinnen (Lesen) von Daten aus dem Speicher zugeordnet sind. Wenn der Datenanforderer eine Anforderung nach Daten ausgibt, bestimmt der Cache-Speicher, ob die Daten in dem Cache-Speicher vorhanden sind. Wenn die Daten in dem Cache-Speicher vorhanden sind, tritt eine als Cache-Speicher"Treffer" ("Hit") bezeichnete Situation ein und die Daten werden an den Datenanforderer mit einer relativ geringen Wartezeit weitergeleitet. Wenn die Daten nicht in dem Cache-Speicher vorhanden sind, tritt eine als Cache-Speicher "Fehlversuch" ("Miss") bezeichnete Situation ein und der Cache-Speicher führt verschiedene Operationen aus. Als erstes gewinnt der Cache-Speicher die angeforderten Daten aus einem sekundären Speicher. Dann sendet der Cache-Speicher die angeforderten Daten an den Datenanforderer und speichert die wiedergewonnenen Daten in dem Cache-Speicher selbst. Der sekundäre Speicher kann ein Hauptspeicher oder ein weiterer Cache-Speicher sein, das heißt ein Mehr-Ebenen-Cache-Speicher. Die Wiedergewinnung von Daten aus dem sekundären Speicher ist oftmals eine viel langsamere Operation.
  • Die meisten Cache-Speicher weisen zwei Subsysteme auf, ein "Cache-Tag-Array" und ein "Cache-Daten-Array". Das Cache-Tag-Array speichert Einträge für Adressen des sekundären Speichers, die den Daten-Array-Einträgen zugeordnet sind. Die Adressen werden verwendet, um zu bestimmen, ob eine Datenanforderung zu einem Cache-Speicher-Treffer führt. Das Cache-Daten-Array speichert und liefert die Daten in Erwiderung der Datenanforderungen. Bei Mehr-Ebenen-Cache-Speichern weist jedes Cache-Daten-Array ein zugehöriges Tag-Array auf.
  • Pipelines haben die Leistung von Prozessoren weiter verbessert, indem eine Verarbeitung parallel und in Stufen durchgeführt wird. Im Unterschied zur seriellen Verarbeitung, bei der sämtliche Stufen die Verarbeitung eines Befehls abschließen, bevor die Verarbeitung des nächsten Befehls begonnen wird, überlappt eine Pipeline-Einrichtung (zeitlich verschachtelte Einrichtung) die Stufen, indem verschiedene Befehle zur gleichen Zeit verarbeitet werden. Die effektive Verarbeitungsgeschwindigkeit jedes Befehls bleibt ungeändert, aber der Durchsatz für die Befehlsverarbeitung wird erhöht, da verschiedene Befehle durch verschiedene einzelne Pipeline-Stufen parallel verarbeitet werden können. Da Datenanforderungen wiederholt an Speicher gerichtet werden, können pipelineverschachtelte Datenanforderungsteile die Verarbeitung der Datenanforderungen beschleunigen.
  • 1A ist ein Zeitdiagramm für zwei serielle Datenanforderungen an einen Cache-Speicher, der einen Pipeline-verschachtelten Anforderungsport aufweist. Die Pipeline hat vier Stufen, das heißt eine Verzögerung (Latenz) von Vier, und bei jedem Taktzyklus kann eine Datenanforderung starten, das heißt, es ergibt sich eine Bandbreite von Eins pro Takt. Die erste und die zweite Anforderung werden bei t = 0 bzw. t = 1 empfangen. Bei dem veranschaulichten Pipeline-Datenanforderungsport wird der Treffer- oder Fehlversuch-Status einer Datenanforderung in der dritten Stufe bekannt. Somit gibt es ein Nacheilen von drei Taktzyklen zwischen dem Zeitpunkt, zu welchem der Port die Verarbeitung einer Datenanforderung startet, und dem Zeitpunkt, zu welchem bekannt wird, daß die Datenanforderung ohne eine langsame Datenwiedergewinnung aus einem sekundären Speicher abgeschlossen werden kann.
  • Datenanforderungen können entweder "geordnet" oder "ungeordnet" sein. Die Ordnung diktiert die sequentielle Reihenfolge, in welcher zueinander geordnete Anforderungen von der Hardware abgeschlossen werden sollten. Ein Beispiel einer geordneten Relation verlangt, daß eine früher ausgegebene Anforderung, beispielsweise die erste Anforderung gemäß 1A, vor einer später ausgegebenen Anforderung, beispielsweise der zweiten Anforderung gemäß 1A, abgeschlossen wird. Andere Ordnungsrelationen existieren, beispielsweise können gleichzeitig ausgegebene Datenanforderungen mit der Reihenfolge eines Programms geordnet sein. Im folgenden sind "frühere" geordnete Operationen als solche definiert, die vor "späteren" geordneten Operationen abgeschlossen werden sollten. "Früher" und "später" ist nicht auf die Programmreihenfolge beschränkt. Wenn zwei Anforderungen "ungeordnet" sind, kann die Hardware die beiden Anforderungen in einer beliebigen Reihenfolge abschließen. Das Ordnen der Datenanforderungen kann die Verarbeitung der Datenanforderungen durch einen pipelineverschachtelten Cache-Speicher verlangsamen.
  • 1B ist ein Zeitdiagramm, das veranschaulicht, weshalb die Verarbeitung geordneter Datenanforderungen problematisch sein kann. Die erste und die zweite Datenanforderung sind jeweils die frühere und die spätere geordnete Anforderung an den Cache-Speicher gemäß 1A, welche zu t = 0 bzw. t = 1 empfangen werden. In 1B führt die erste Anforderung zu einem Cache-Speicher-Fehlversuch. Die erste Anforderung wird in mehr als vier Taktzyklen abgeschlossen, weil die angeforderten Daten bei einem Cache-Speicher-Fehlversuch aus einem langsamen sekundären Speicher wiedergewonnen werden müssen. Andererseits wird die zweite Anforderung in vier Zyklen abgeschlossen, weil die zweite Datenanforderung zu einem Cache-Speicher-Treffer führt. Somit kann das serielle Ausgeben geordneter Datenanforderungen in Situationen von Cache-Speicher-Fehlversuchen zu Wiedergewinnungen (Retrievals) führen, die die Ordnungsrelationen verletzen.
  • 1C zeigt ein Verfahren zum Vermeiden von Datenwiedergewinnungen, die die Ordnungsbeziehungen verletzen. Die Ausgabe der zweiten oder späteren geordneten Datenanforderung wird verzögert, bis t = 3 ist, das heißt, bis der Treffer/Fehlversuch-Status der ersten Anforderung bekannt ist. Bei dem veranschaulichten Pipeline-Cache-Speicher wartet die zweite Anforderung drei Taktzyklen, bis der Treffer/Fehlversuch-Status der ersten Anforderung bestimmt ist. Die Notwendigkeit des Wartens auf den Status der früheren Anforderungen reduziert die Geschwindigkeit zur Verarbeitung geordneter Datenanforderungen, das heißt erhöht die Latenz und vermindert die Vorteile des Pipelining.
  • Ein Multi-Porting kann die Geschwindigkeit eines Speichers weiter erhöhen, indem die Verarbeitung mehrerer Datenanforderungen während jedes Taktzyklus ermöglicht wird. 2A ist ein Zeitdiagramm für einen doppelten (dualen) pipelineverschachtelten Datenanforderungsport von vier Stufen bei einem Cache-Speicher. Zwei Datenanforderungen können in jedem Taktzyklus empfangen werden. So kann der doppelte Datenanforderungsport den Durchsatz für Datenanforderungen verdoppeln, das heißt, die Bandbreite beträgt zwei pro Takt. Cache-Speicher-Treffer und -Fehlversuche sind in der dritten Stufe bekannt, was ein Nacheilen von drei Taktimpulsen bedeutet, ein Nacheilen, das zu Problemen bei der Verarbeitung geordneter Datenanforderungen führen kann.
  • 2B ist ein Zeitdiagramm, das ein Problem bei der Verarbeitung geordneter Anforderungen bei dem doppelten Pipe line-Datenanforderungsport gemäß 2A veranschaulicht. Die erste und zweite Datenanforderung sind seriell geordnet, das heißt, die erste Datenanforderung ist die frühere Anforderung. Zum Zeitpunkt t = 2 wird festgestellt, daß die erste Datenanforderung einen Cache-Speicher-Fehlversuch registriert. Die zweite Datenanforderung registriert einen Cache-Speicher-Treffer und kann zum Zeitpunkt t = 3, das heißt vor der früheren ersten Datenanforderung, abgeschlossen werden, weil die erste Datenanforderung eine langsame Datenwiedergewinnung aus dem sekundären Speicher für ihren Abschluß benötigt. Geordnete Datenanforderungen können nicht durch ein solches Verfahren bei einem Mehr-Port-Speicher verarbeitet werden, weil ein späterer geordneter Befehl infolge eines Cache-Speicher-Fehlversuchs vor einer früheren Anforderung abgeschlossen werden könnte.
  • Die Zeitleiste gemäß 2C veranschaulicht ein Verfahren der Verarbeitung geordneter Anforderungen bei dem doppelten Pipeline-Datenanforderungsport gemäß 2A. In Erwiderung eines Cache-Speicher-Fehlversuchs für die frühere geordnete Datenanforderung, das heißt die erste Datenanforderung, werden sämtliche anhängigen Anforderungen in der Pipeline gespült (einer Flush-Operation unterzogen). Die Flush-Operation eliminiert Ordnungsverletzungen. Allerdings reduziert die Flush-Operation außerdem die Geschwindigkeit des Speichers und die Vorteile der Pipeline, weil einige der der Flush-Operation unterzogene Anforderungen möglicherweise nicht geordnet sind.
  • Aus dem US-Patent Nr. 5,506,957 ist ein System bekannt, das vorgesehen ist, um Out-Of-Order-Gleitkommadaten über die Verwendung von zwei Datenports und Datenbusse zu synchronisieren. Eine Festkommaeinheit (FPU) und eine Gleitkommaeinheit (FXU) sind miteinander verbunden, so daß es der FXU ermöglicht wird, ein Synchronisationssignal an die FPU zur Verfügung zu stellen. Gemäß Spalte 2, Zeilen 25 bis 31 wird dann, wenn ein Cache-Fehlversuch auftritt, der einen ersten der Busse beeinflußt, der diesen Daten entsprechende Befehl angehalten. Jegliche nachfolgenden Gleitkommabefehle werden dann von der FPU auf dem zweiten Bus empfangen, der keinem Fehlversuch ausgesetzt war. Auf diese Weise werden Außer-Der-Reihe-Befehlsausführungen in der FPU implementiert. Gemäß Spalte 4, Zeile 65 bis Spalte 5, Zeile 30 wird ein "Load not ready" Kommando von der FXU an die FPU zur Verfügung gestellt, wenn ein Cache-Fehlversuch an einem Datenport erfaßt wird, wobei dieses Signal die FPU darüber informiert, daß Daten für irgendeinen nachfolgenden Befehl auf dem anderen Datenport eintreffen. Die Außer-Der-Reihe-Befehle können dann ausgeführt werden, bevor der Cache-Fehlversuch aufgelöst wird. Die Druckschrift beschreibt somit ein System, das die Implementierung von Außer-Der-Reihe-Gleitkommabefehlen gestattet.
  • Ausgehend von diesem Stand der Technik ist es eine Aufgabe der Erfindung, die mit einem Fehlversuch bei einer pipelineverschachtelten Cache-Einrichtung verbundenen zeitlichen Verzögerungen zu verringen.
  • Diese Aufgabe wird erfindungsgemäß durch eine Datenverarbeitungseinrichtung mit den Merkmalen des Anspruchs 1 gelöst.
  • Vorteilhafte und/oder bevorzugte Weiterbildungen der Erfindung sind in den Unteransprüchen gekennzeichnet.
  • Andere Vorteile der Erfindung werden beim Lesen der folgenden detaillierten Beschreibung und bei Bezugnahme auf die Zeichnungen klar, in welchen:
  • 1A eine Zeitleiste ist, die das Voranschreiten zweier sequentiell empfangener Datenanforderungen in einem Pipeline-verschachtelten Datenanforderungsport eines bekannten Cache-Speichers veranschaulicht;
  • 1B eine Zeitleiste ist, die ein Problem bei der sequentiellen Verarbeitung zweier "geordneter" Datenanforderungen bei dem Pipeline-Datenanforderungsport gemäß 1A veranschaulicht;
  • 1C eine Zeitleiste ist, die ein bekanntes Verfahren der Verarbeitung "geordneter" Datenanforderungen bei dem bekannten Cache-Speicher gemäß 1A veranschaulicht;
  • 2A eine Zeitleiste ist, die das Voranschreiten von zwei Datenanforderungen bei einem doppelten Pipeline-ver schachtelten Datenanforderungsport eines bekannten Cache-Speichers veranschaulicht;
  • 2B eine Zeitleiste ist, die ein Problem bei der Verarbeitung zweier "geordneter" Datenanforderungen bei dem bekannten Cache-Speicher gemäß 2A veranschaulicht;
  • 2C eine Zeitleiste ist, die veranschaulicht, wie Flush-Operationen benutzt werden können, um geordnete Datenanforderungen bei dem bekannten Cache-Speicher gemäß 2A zu verarbeiten;
  • 3A eine Blockdarstellung eines Ausführungsbeispiels einer Einrichtung zum Verarbeiten geordneter Datenanforderungen ist;
  • 3B eine Zeitleiste ist, die Verfahren zum Verarbeiten späterer Datenanforderungen in Erwiderung eines Speicher-Fehlversuchs einer früheren geordneten Datenanforderung veranschaulicht;
  • 4A ein Ablaufdiagramm ist, das ein Ausführungsbeispiel eines Verfahrens zum Verarbeiten geordneter Datenanforderungen an den Speicher gemäß 3A veranschaulicht;
  • 4B ein Ablaufdiagramm ist, das ein spezielles Ausführungsbeispiel des Verfahrens gemäß 4A veranschaulicht;
  • 5 ein Ablaufdiagramm ist, das ein alternatives Ausführungsbeispiel eines Verfahrens zum Verarbeiten geordneter Datenanforderungen an den Speicher gemäß 3A veranschaulicht;
  • 6 eine Blockdarstellung eines Ausführungsbeispiels einer Einrichtung zum Verarbeiten geordneter Datenanforderungen an ein Mehr-Ebenen-Cache-Speichersystem ist; und
  • 7 eine Blockdarstellung des Ausführungsbeispiels zum Verarbeiten geordneter Datenanforderungen aus verschiedenen Ausführungseinheiten ist.
  • 3A zeigt ein Ausführungsbeispiel der vorliegenden Erfindung, welches einen Prozessor 100 mit einer Ausführungseinheit 105, einem Pipeline-verschachtelten Datenanforderungsport 110, einer Steuerlogik 115 und einem Cache-Speicher 120 enthält. Der Pipeline-verschachtelte Port 110 weist ein Cache-Tag-Array auf. Darüber hinaus kann sich, obwohl dies nicht in 3A gezeigt ist, die Steuerlogik 115 bei einigen alternativen Ausführungsbeispielen in dem Pipeline-Datenanforderungsport 110 aufhalten. Der Pipeline-Datenanforderungsport 110 kann ein Mehrfach-Datenanforderungs-Port für den Cache-Speicher 120 sein.
  • Die Ausführungseinheit 105 ist in der Lage, mehrere geordnete Datenanforderungen an dem Cache-Speicher 120 während eines Taktzyklus auszugeben. Die Ausführungseinheit 105 erwartet, daß jede geordnete Datenanforderung in der Reihenfolge abgeschlossen wird, in der sie ursprünglich an den Pipeline-Port 110 ausgegeben worden ist. Der Cache-Speicher 120 kann darüber hinaus Datenanforderungen von weiteren Ausführungseinheiten (die nicht gezeigt sind) empfangen. Die weiteren Datenanforderungen können auch ungeordnet in Bezug auf die Datenanforderungen aus der Ausführungseinheit 105 sein. Die Steuerlogik 115 ist in der Lage, eine geordnete Datenanforderung in einen Vorabruf (prefetch) zu konvertieren, sofern der Pipeline-verschachtelte Port 110 feststellt, daß eine frühere Datenanforderung, die in Bezug auf die weitere geordnete Datenanforderung geordnet ist, einen Cache-Speicher-Fehlversuch registriert. Mit anderen Worten, die Steuerlogik 115 bei dem Ausführungsbeispiel gemäß 3 konvertiert im Falle eines Cache-Speicher-"Fehlversuchs" für eine frühere geordnete Datenanforderung eine nachfolgende geordnete Datenanforderung in einen Vorabruf.
  • Es wird noch auf 3A Bezug genommen; ein Vorabruf gewinnt (liest) die angeforderten Daten aus einem (nicht gezeigten) sekundären Speicher und speichert die gelesenen Daten in dem primären Speicher, beispielsweise dem Cache-Speicher 120, ohne die Daten an den ursprünglichen Datenanforderer, beispielsweise die Ausführungseinheit 105, weiterzuleiten. Bei einigen Ausführungsbeispielen werden Datenanforderungen nur dann in Vorabrufe in der oben beschriebenen Weise konvertiert, wenn bei der zu konvertierenden Datenanforderung selbst festgestellt wird, daß sie ein Cache-Speicher-Fehlversuch ist.
  • Es wird noch auf 3A Bezug genommen; der Cache-Speicher 120 kann einen Mehrfach-Pipeline-Datenanforderungsport aufweisen, der in der Lage ist, mehrere Datenanforderungen während jedes Taktzyklus zu akzeptieren. So kann die Ausführungseinheit 105 eine Mehrzahl geordneter Datenanforderungen an den Pipeline-Port 110 während jedes Taktzyklus ausgeben. Beispielsweise kann die Ausführungseinheit 105 eine Mehrzahl geordneter Datenanforderungen während eines ersten Taktzyklus ausgeben und dann eine weitere Mehrzahl geordneter Datenanforderungen während eines zweiten Taktzyklus ausgeben. Der Pipeline-Datenanforderungsport 110 kann darüber hinaus Da tenanforderungen von weiteren (nicht gezeigten) Ausführungseinheiten empfangen. Die weiteren Datenanforderungen können in Bezug auf die Datenanforderungen aus der veranschaulichten Ausführungseinheit 105 geordnet sein oder nicht. So kann der Pipeline-Port 110 geordnete und nicht geordnete Datenanforderungen gleichzeitig empfangen. Das veranschaulichte Ausführungsbeispiel sorgt dafür, daß die angeforderten Informationen an die Ausführungseinheit 105 in der ausgegebenen Reihenfolge zurückgegeben werden, unabhängig davon, ob ein Cache-Speicher"Treffer" oder -"Fehlversuch" während der Verarbeitung der Datenanforderung auftritt.
  • 4A zeigt ein Ausführungsbeispiel eines Verfahrens 190 zum Verarbeiten von Datenanforderungen, beispielsweise von Anforderungen an den Speicher 120 gemäß 3A, wobei einige der Datenanforderungen untereinander geordnet sind. Am Block 200 werden mehrere Datenanforderungen an den Speicher 120 ausgegeben. Die mehreren Datenanforderungen umfassen wenigstens zwei Datenanforderungen, die zueinander geordnet sind. Beispielsweise können die zwei Datenanforderungen von derselben Ausführungseinheit, beispielsweise der Ausführungseinheit 105 gemäß 3A, herrühren. Die Mehrzahl der Datenanforderungen kann in einem oder in mehreren Taktzyklen ausgegeben werden und kann ungeordnete Datenanforderungen umfassen. Am Block 210 bestimmt der Pipeline-Port 110, ob eine frühere Anforderung der geordneten Datenanforderungen ein Speicher-Treffer ist, das heißt, ob sich die angeforderten Daten in dem Speicher 120 befinden. Beim Block 215 konvertiert die Steuerlogik 115 eine spätere Anforderung der geordneten Datenanforderungen in einen Vorabruf, sofern von einer früheren geordneten Datenanforderung bestimmt worden ist, daß sie ein Cache-Speicher-Fehlversuch ist. Bei einigen Ausführungsbeispielen werden sämtliche Datenanforderungen, die in Bezug auf die Datenanforderung, von der festgestellt worden ist, daß sie ein Cache-Speicher-Fehlversuch ist, später eingeordnet sind, in Vorabrufe konvertiert. Beim Block 220 führt der Pipeline-Port 110 die frühere und die spätere geordnete Datenanforderung an den Speicher 120 aus, wenn im Block 210 festgestellt worden ist, daß die frühere geordnete Datenanforderung zu einem Speicher-Treffer führt.
  • Es wird auf die 3A und 4A Bezug genommen; eine spätere Datenanforderung wird dann nicht in einen Vorabruf konvertiert, wenn ein Cache-Speicher-Fehlversuch bei einer früheren Datenanforderung, welche in Bezug auf die spätere Datenanforderung nicht geordnet ist, auftritt. Beispielsweise führt ein Cache-Speicher-Fehlversuch bei einer Datenanforderung durch eine zweite Ausführungseinheit (die nicht in 3 gezeigt ist) nicht zu einer Konvertierung einer Datenanforderung von der Ausführungseinheit 105 in einen Vorabruf bei einigen Ausführungsbeispielen. Dennoch können Datenanforderungen aus verschiedenen Ausführungseinheiten bei anderen Ausführungsbeispielen in Bezug zueinander geordnet sein.
  • 4B veranschaulicht ein spezielles Ausführungsbeispiel 225 des Verfahrens gemäß 4A, bei dem eine spätere geordnete Datenanforderung, von der selbst festgestellt wird, daß sie ein Cache-Speicher-Treffer ist, nicht in einen Vorabruf konvertiert wird. Die Blöcke 200, 210, 215 und 220 wurden bereits in Bezug auf 4A beschrieben. Am Block 230 bestimmt der Pipeline-Datenanforderungsport 110, ob eine spätere der geordneten Datenanforderungen ein Cache-Speicher-Treffer ist. Beim Block 235 spült (flushes) der Pipeline-Anforderungsport 110 die spätere der geordneten Datenanforderungen, wenn bestimmt wird, daß die spätere der geordneten Datenanforderungen ein Cache-Speicher-Treffer ist, das heißt, ohne diese späteren geordneten Datenanforderungen in Vorabrufe zu konvertieren. Blöcke 230 und 235 werden an einzelnen Anforderungen ausgeführt und können separat für verschiedene spätere geordnete Datenanforderungen ausgeführt werden. Die Flush-Operation des Blockes 235 kann die Effizienz des Prozessors gemäß 3A verbessern, da ein Vorabruf für Datenanforderungen, die einen Cache-Speicher-Treffer registrieren, nutzlos ist.
  • Das Verfahren 240 gemäß 5 ist ein spezielles Ausführungsbeispiel des Verfahrens gemäß 4A. Die Blöcke 200, 210, 215 und 220 wurden bereits unter Bezugnahme auf 4A beschrieben. Zusätzlich schließt am Block 245 der Pipeline-Port 110 die Datenanforderungen ab, die in Bezug auf die frühere geordnete Anforderung, von der festgestellt worden ist, daß sie ein Cache-Speicher-Fehlversuch ist, ungeordnet sind. Beim Block 250 werden die späteren geordneten Datenanforderungen in Erwiderung des Abschlusses der früheren geordneten Anforderung, von der zuvor im Block 210 festgestellt worden ist, daß sie ein Speicher-Fehlversuch ist, neu ausgegeben. Die späteren geordneten Datenanforderungen umfassen die in einen Vorabruf beim Block 215 konvertierte Anforderung und darüber hinaus möglicherweise weitere geordnete Anforderungen, z. B. die einer Flush-Operation beim Block 235 gemäß 4B unterzogenen Anforderungen. Die späteren geordneten Anforderungen müssen neu ausgegeben werden, da sie noch nicht die angeforderten Daten an die Datenanforderer, beispielsweise die Ausführungseinheit 105, geliefert haben. Die Verfahren gemäß den 4A und 5 werden jedes Mal dann wiederholt, wenn die Ausführungseinheit 105 geordnete Datenanforderungen an den Pipeline-Port 110 ausgibt.
  • Es wird auf die 4A, 4B und 5 Bezug genommen; die verschiedenen Ausführungsbeispiele können die Bandbreite eines Cache-Speichers 120 verbessern und die Verzögerung (Latenz) verringern. Zunächst werden geordnete Datenanforderungen spekulativ ohne Verzögerung ausgegeben, bis frühere geordnete Anforderungen abgeschlossen sind. Zweitens werden dann, wenn eine frühere geordnete Anforderung einen Cache-Speicher-Fehlversuch registriert, später spekulativ ausgegebene geordnete Anforderungen in Vorabrufe konvertiert. Die Konvertierungen in Vorabrufe verringern die Verzögerungen, wenn konvertierte Datenanforderungen später neu ausgegeben werden. Drit tens wird dann, wenn eine spätere Datenanforderung nicht in Bezug auf eine frühere Datenanforderung geordnet ist, die spätere Datenanforderung nicht einer Flush-Operation unterzogen, wenn die frühere Datenanforderung einen Speicher-Fehlversuch registriert. Die Verfahren gemäß den 4A, 4B und 5 ermöglichen es einem Speicher, geordnete Datenanforderungen ohne die bei dem Pipeline-Port gemäß 1C verwendete Verzögerung zu empfangen und Außer-der-Reihe-Abschlüsse auf eine Weise zu vermeiden, die weniger nachteilig für die Bandbreite und die Verzögerung ist, als die von dem Pipeline-Port gemäß 2C verwendete Flush-Operation.
  • Sofern die erste geordnete Datenanforderung in dem Cache-Speicher 120 gemäß 3A ein Fehlversuch ist, so könnten gemäß den Verfahren der 4A, 4B und 5 eine oder mehrere der verbleibenden später geordneten Datenanforderungen durch den Pipeline-Port 110 und die Steuerlogik 115 in Vorabrufe konvertiert werden. Die Cache-Speicher-Pipeline könnte einer Flush-Operation unterzogen werden, und sowohl die geordneten Anforderungen, die konvertiert wurden, als auch die geordneten Anforderungen, die der Flush-Operation unterzogen wurden, könnten entweder von der Ausführungseinheit 105 oder dem Pipeline-Port 110 selbst neu ausgegeben werden.
  • Die Verfahren 190 und 225 gemäß den 4A und 4B können durch die Zeitleiste gemäß 3B veranschaulicht werden. Ausschließlich zu Zwecken der Veranschaulichung stellt jeder durch 3B beschriebene Taktzyklus des Pipeline-Port eine verschiedene Stufe einer vierstufigen Dual-Port-Pipeline dar, bei welcher der Speicher-Treffer- oder -Fehler-Status in der dritten Stufe bestimmt wird. Die erste und die zweite Datenanforderung werden von den Pipeline-verschachtelten Ports zum Zeitpunkt t = 0 empfangen und die dritte und die vierte Datenanforderung werden zu t = 1 empfangen. Bei dem veranschaulichten Beispiel wird der Status der ersten Datenanforderung, einer geordneten Datenanforderung, als Fehlversuch zum Zeitpunkt t = 2 bestimmt. In Erwiderung des Speicher- Fehlversuchs der ersten Datenanforderung konvertiert der Pipeline-Port die späteren anhängigen Anforderungen, welche in Bezug auf die erste Anforderung geordnete Anforderungen sind, in Vorabrufe und ermöglicht es den weiteren anhängigen Anforderungen, welche in Bezug auf die erste Anforderung ungeordnet sind, abgeschlossen zu werden. Einige Ausführungsbeispiele spülen (flush) sämtliche geordneten Anforderungen, von denen bekannt ist, daß sie Speicher-Treffer darstellen und später als die erste Anforderung sind, statt sie zu konvertieren, weil Vorabrufe für solche Datenanforderungen nicht nützlich sind – die angeforderten Daten befinden sich bereits in dem Cache-Speicher. Ein Ausführungsbeispiel könnte nur die zweite Datenanforderung in einen Vorabruf konvertieren, weil der Speicher-Treffer- oder -Fehlversuch-Status der noch späteren dritten und vierten Anforderung unbekannt ist, wenn für die erste Anforderung zum Zeitpunkt t = 2 festgestellt wird, daß sie ein Speicher-Fehlversuch ist. Bei diesem Ausführungsbeispiel werden die dritte und die vierte Anforderung aus der Pipeline gespült (flush), wenn sie in Bezug auf die erste Datenanforderung geordnet sind, und dann in Erwiderung des Abschlusses der ersten Datenanforderung neu ausgegeben. Andere Ausführungsbeispiele konvertieren sämtliche geordneten Anforderungen in früheren Pipeline-Stufen in Vorabrufe, beispielsweise die dritte und die vierte Anforderung, weil der Speicher-Treffer- oder -Fehlversuch-Status solcher Anforderungen unbekannt ist, wenn der Fehlversuch-Status der früheren geordneten Anforderung, beispielsweise der ersten Anforderung, zum Zeitpunkt t = 2 auftritt.
  • 6 zeigt ein weiteres Ausführungsbeispiel, das eine 3-Ebenen-Pipeline-Cache-Speicherarchitektur aufweist. Der Prozessor 500 enthält eine Ausführungseinheit 501, einen primären Cache-Speicher L0 502, einen sekundären Cache-Speicher L1 505, eine Cache-Speicher-Steuereinrichtung 510 für den L1-Cache-Speicher 505, eine Steuerlogik 515 und eine Bus-Steuereinrichtung 517. Die Bus-Steuereinrichtung 517 ist über einen Front-Side-Bus 570 mit einer Speichersteuereinrichtung 540 des Hauptspeichers 550 gekoppelt. Der Prozessor ist über einen Front-Side-Bus 570 mit einer Speichersteuereinrichtung 540 des Hauptspeichers 550 gekoppelt. Der Prozessor ist über einen Backside-Bus 580 mit einem tertiären Cache-Speicher oder Cache-Speicher der dritten Ebene L2 575 gekoppelt. Der tertiäre Cache-Speicher 575 hält sich auf einem Cache-Chip 585 und somit außerhalb des Chips für den Prozessor 500 auf.
  • Wie es in 6 gezeigt ist, weist die L1-Cache-Speichersteuereinrichtung 510 die Steuerlogik 515 für die Pipeline-verschachtelten Anforderungsports auf, die die in den 4A, 4B und 5 veranschaulichten Verfahren implementieren. Unter Verwendung des Verfahrens der vorliegenden Erfindung ist die L1-Cache-Speichersteuereinrichtung 510 in der Lage, eine Mehrzahl geordneter Datenanforderungen im wesentlichen gleichzeitig zu empfangen und zu verarbeiten, das heißt, ohne auf den Abschluß einer früheren geordneten Anforderung zu warten. Die Cache-Speichersteuereinrichtung und die Steuerlogik 510, 515 konvertieren eine spätere anhängige geordnete Datenanforderung an den L1-Cache-Speicher 505 in einen Vorabruf von Daten aus dem L2-Cache-Speicher 575, wenn sie feststellen, daß eine frühere geordnete Datenanforderung zu einem Fehlversuch in dem L1-Cache-Speicher 505 führt.
  • Die Steuerlogiken 115, 515 gemäß den 3 und 6, die zum Implementieren der in den 4A, 4B und 5 veranschaulichten Verfahren verwendet werden, können von Fachleuten konstruiert werden, die diese Offenbarung kennen. Die Steuerlogik 115, 515 kann als Hardware oder Software implementiert werden. Obwohl die Steuerlogik 515 bei dem speziellen Ausführungsbeispiel gemäß 6 sich in der Cache-Speichersteuereinrichtung 510 aufhält, ist dies darüber hinaus nicht erforderlich, um die Erfindung auszuführen. Es könnte möglich sein, die Cache-Speicher-Latenz der geordneten Datenanforderungen zu reduzieren, indem eine ähnliche Steuerlogik irgendwo in dem Datenverarbeitungssystem implementiert wird, beispielsweise für geordnete Datenanforderungen an irgendeine Kombination der L0-, L1- und L2-Cache-Speicher 502, 510, 575.
  • Die vorliegende Erfindung zum Verringern der Latenz und zum Erhöhen der Bandbreite für geordnete Datenanforderungen ist auf eine beliebige Speicherarchitektur anwendbar und nicht auf die Cache-Speicher-Architekturen gemäß den 3 und 6 beschränkt.
  • 7 veranschaulicht ein Ausführungsbeispiel eines Datenverarbeitungssystems 400 für geordnete Speicheranforderungen aus zwei Ausführungseinheiten 410, 430. Ein Prozessor 405 enthält die erste Ausführungseinheit 410, einen pipelineverschachtelten Datenanforderungsport 415 und einen Speicher 425. Der Pipeline-Anforderungsport 415 behandelt Datenanforderungen an den Speicher 425. Sowohl die erste als auch die zweite Ausführungseinheit 410, 430 können Datenanforderungen an den Speicher 425 über den Pipeline-Anforderungsport 415 ausgeben. Die Datenanforderungen aus jeder der Ausführungseinheiten 410, 430 sind jeweils geordnet. Bei einigen Ausführungsbeispielen sind die Datenanforderungen aus der ersten Ausführungseinheit 410 in Bezug auf die Datenanforderungen aus der zweiten Ausführungseinheit 430 nicht geordnet. Bei einigen Ausführungsbeispielen gehören die erste und die zweite Ausführungseinheit 410, 430 zu demselben Prozessor 405. Bei anderen Ausführungsbeispielen ist die zweite Ausführungseinheit 430 ein separater Prozessor. Der Pipeline-verschachtelte Datenanforderungsport 415 kann eine Mehrzahl von Datenanforderungen verarbeiten, wobei ein Teil der Anforderungen geordnet ist und ein Teil der Anforderungen ungeordnet.
  • Es wird noch auf 7 Bezug genommen; der Pipeline-Anforderungsport 415 verarbeitet Datenanforderungen gemäß den in den 4A und 4B veranschaulichten Verfahren. In Erwiderung auf geordnete Datenanforderungen, welche Fehlversuche in dem Speicher 425 sind, erzeugte Vorabrufe lesen Daten aus einem sekundären Speicher 435. Der Pipeline-Port 415 übermittelt Vorabrufanforderungen an den sekundären Speicher 435 über einen Bus 440 und liest vorabgerufene, in dem Speicher 425 zu speichernde Daten über den Bus 440. Bei einigen Ausführungs beispielen ist der Bus 440 ein Systembus, der darüber hinaus Signale zwischen weiteren (nicht gezeigten) Hardware-Strukturen übermittelt. Vorabrufe an den sekundären Speicher 435 können langsamer sein als Datenanforderungen an den Speicher 425, was zum Teil auf die langsame Geschwindigkeit von Transaktionen über den Bus 440 und zum Teil auf die geringere Geschwindigkeit des sekundären Speichers 435 zurückzuführen sein kann. Bei einigen Ausführungsbeispielen kann der sekundäre Speicher 435 ein außerhalb des Prozessors 405 befindlicher Speicher sein, während der Speicher 425 ein interner Cache-Speicher sein kann.

Claims (10)

  1. Cache-Einrichtung, die von einer ersten Ausführungseinheit (105; 501; 410), die eine Mehrzahl von Datenanforderungen ausgibt (200), angesteuert wird, wobei die Datenanforderungen wenigstens zwei geordnete Datenanforderungen umfassen; aufweisend: einen Cache-Speicher (120; 505; 425) mit einem pipelineverschachtelten Datenanforderungsport (110; 415) zum Empfangen von Datenanforderungen und eine Steuerlogik (115; 515), wobei der Datenanforderungsport (110; 415) feststellt (210), ob eine frühere der geordneten Datenanforderungen einem Fehlversuch in dem Cache-Speicher (120; 505; 425) entspricht, und die Steuerlogik (115; 515) im Falle eines Fehlversuchs eine spätere der geordneten Datenanforderungen in einen Vorabruf konvertiert (215); und einen sekundären Speicher (585; 435), wobei der Vorabruf das Gewinnen von Daten aus dem sekundären Speicher (585; 435) und das Speichernder gewonnenen Daten in dem Cache-Speicher (110; 505; 425) ohne unmittelbare Weiterleitung der gewonnenen Daten an die erste Ausführungseinheit (105; 501; 410) veranlasst.
  2. Cache-Einrichtung nach Anspruch 1, dadurch gekennzeichnet, daß der Pipeline-verschachtelte Datenanforderungsport (110; 415) wenigstens zwei Stufen aufweist.
  3. Cache-Einrichtung nach Anspruch 2, dadurch gekennzeichnet, daß der Pipeline-verschachtelte Datenanforderungsport (110; 415) die angeforderten Daten in der Reihenfolge, in der die Datenanforderungen ausgegeben worden sind, ausliest.
  4. Cache-Einrichtung nach Anspruch 2, dadurch gekennzeichnet, daß an diese die erste Ausführungseinheit (105; 501; 410) die spätere geordnete Datenanforderung neu ausgibt, wenn der Cache-Speicher die spätere geordnete Datenanforderung in einen Vorabruf konvertiert hat.
  5. Cache-Einrichtung nach Anspruch 2, dadurch gekennzeichnet, daß der Cache-Speicher (120; 505; 425) ein primärer Cache-Speicher und der sekundäre Speicher (585; 435) ein sekundärer Cache-Speicher ist.
  6. Cache-Einrichtung nach Anspruch 2, dadurch gekennzeichnet, daß der Pipeline-verschachtelte Datenanforderungsport (110; 415) mehrere Datenanforderungen in einem Taktzyklus empfängt.
  7. Cache-Einrichtung nach Anspruch 2, dadurch gekennzeichnet, daß der Pipeline-verschachtelte Datenanforderungsport (110; 415) Daten aus dem sekundären Speicher in Erwiderung eines Fehlversuchs in dem Cache-Speicher für eine frühere geordnete Datenanforderung wiedergewinnt und die spätere geordnete Datenanforderung in Erwiderung des Wiedergewinnens von Daten für die frühere geordnete Datenanforderung aus dem sekundären Speicher neu ausgibt.
  8. Cache-Einrichtung nach Anspruch 2, dadurch gekennzeichnet, dass sie von einer zweiten Ausführungseinheit (430) zum Ausgeben von Datenanforderungen an den pipelineverschachtelten Datenanforderungsport (110; 415) angesteuert wird.
  9. Cache-Einrichtung nach Anspruch 2, dadurch gekennzeichnet, daß die spätere geordnete Datenanforderung in eine Vorabruf-Anforderung zu dem sekundären Speicher konvertiert wird, wenn sowohl die frühere als auch die spätere geordnete Datenanforderung Fehlversuche in dem Cache-Speicher sind.
  10. Cache-Einrichtung nach Anspruch 2, dadurch gekennzeichnet, daß dann, wenn der Pipeline-verschachtelte Datenanforderungsport (110; 415) feststellt, daß eine frühere geordnete Datenanforderung einem Fehlversuch in dem Cache-Speicher (120; 505; 425) entspricht, er eine nicht geordnete anhängige Datenanforderung abschließt.
DE19983687T 1998-10-30 1999-10-18 Verarbeitung geordneter Datenanforderungen an einen Speicher Expired - Fee Related DE19983687B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/183,519 US6381678B2 (en) 1998-10-30 1998-10-30 Processing ordered data requests to a memory
US09/183,519 1998-10-30
PCT/US1999/024362 WO2000026742A2 (en) 1998-10-30 1999-10-18 Processing ordered data requests to a memory

Publications (2)

Publication Number Publication Date
DE19983687T1 DE19983687T1 (de) 2001-11-22
DE19983687B4 true DE19983687B4 (de) 2008-09-11

Family

ID=22673147

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19983687T Expired - Fee Related DE19983687B4 (de) 1998-10-30 1999-10-18 Verarbeitung geordneter Datenanforderungen an einen Speicher

Country Status (7)

Country Link
US (2) US6381678B2 (de)
CN (1) CN1208723C (de)
AU (1) AU1122400A (de)
DE (1) DE19983687B4 (de)
GB (1) GB2358941B (de)
TW (1) TW486628B (de)
WO (1) WO2000026742A2 (de)

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6381678B2 (en) 1998-10-30 2002-04-30 Intel Corporation Processing ordered data requests to a memory
TW449695B (en) * 1999-11-26 2001-08-11 Via Tech Inc PCI data reading system for using reading requirement pipe and its method
US6832308B1 (en) 2000-02-15 2004-12-14 Intel Corporation Apparatus and method for instruction fetch unit
US6826573B1 (en) 2000-02-15 2004-11-30 Intel Corporation Method and apparatus for queue issue pointer
US6665776B2 (en) 2001-01-04 2003-12-16 Hewlett-Packard Development Company L.P. Apparatus and method for speculative prefetching after data cache misses
US7487330B2 (en) * 2001-05-02 2009-02-03 International Business Machines Corporations Method and apparatus for transferring control in a computer system with dynamic compilation capability
US20030137519A1 (en) * 2002-01-22 2003-07-24 Nazanda Rima M. Method and apparatus to handle multiple requests to different memory agents
US7334086B2 (en) * 2002-10-08 2008-02-19 Rmi Corporation Advanced processor with system on a chip interconnect technology
US8601606B2 (en) 2002-11-25 2013-12-03 Carolyn W. Hafeman Computer recovery or return
US7870342B2 (en) * 2003-07-24 2011-01-11 Marvell International Ltd. Line cache controller with lookahead
US7139879B2 (en) * 2003-07-24 2006-11-21 International Business Machinces Corporation System and method of improving fault-based multi-page pre-fetches
US20050039016A1 (en) * 2003-08-12 2005-02-17 Selim Aissi Method for using trusted, hardware-based identity credentials in runtime package signature to secure mobile communications and high-value transaction execution
US7281120B2 (en) * 2004-03-26 2007-10-09 International Business Machines Corporation Apparatus and method for decreasing the latency between an instruction cache and a pipeline processor
US7284092B2 (en) * 2004-06-24 2007-10-16 International Business Machines Corporation Digital data processing apparatus having multi-level register file
US7181575B2 (en) * 2004-09-29 2007-02-20 Hewlett-Packard Development Company, L.P. Instruction cache using single-ported memories
US7917731B2 (en) * 2006-08-02 2011-03-29 Qualcomm Incorporated Method and apparatus for prefetching non-sequential instruction addresses
JP2011028736A (ja) * 2009-07-02 2011-02-10 Fujitsu Ltd キャッシュメモリ装置、演算処理装置及びキャッシュメモリ装置の制御方法
US20110022802A1 (en) * 2009-07-27 2011-01-27 Arm Limited Controlling data accesses to hierarchical data stores to retain access order
US8700646B2 (en) * 2009-08-12 2014-04-15 Apple Inc. Reference file for formatted views
US8775700B2 (en) * 2011-09-29 2014-07-08 Intel Corporation Issuing requests to a fabric
US9098418B2 (en) * 2012-03-20 2015-08-04 Apple Inc. Coordinated prefetching based on training in hierarchically cached processors
US9971694B1 (en) 2015-06-24 2018-05-15 Apple Inc. Prefetch circuit for a processor with pointer optimization
US9904624B1 (en) 2016-04-07 2018-02-27 Apple Inc. Prefetch throttling in a multi-core system
US10180905B1 (en) 2016-04-07 2019-01-15 Apple Inc. Unified prefetch circuit for multi-level caches
US10331567B1 (en) 2017-02-17 2019-06-25 Apple Inc. Prefetch circuit with global quality factor to reduce aggressiveness in low power modes
US10380034B2 (en) 2017-07-14 2019-08-13 International Business Machines Corporation Cache return order optimization

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5506957A (en) * 1992-12-01 1996-04-09 International Business Machines Corporation Synchronization for out of order floating point data loads
US5724533A (en) * 1995-11-17 1998-03-03 Unisys Corporation High performance instruction data path

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5247649A (en) * 1988-05-06 1993-09-21 Hitachi, Ltd. Multi-processor system having a multi-port cache memory
EP0348628A3 (de) * 1988-06-28 1991-01-02 International Business Machines Corporation Cache-Speicheranordnung
US5307477A (en) * 1989-12-01 1994-04-26 Mips Computer Systems, Inc. Two-level cache memory system
US5544342A (en) * 1993-06-30 1996-08-06 International Business Machines Corporation System and method for prefetching information in a processing system
US5553276A (en) * 1993-06-30 1996-09-03 International Business Machines Corporation Self-time processor with dynamic clock generator having plurality of tracking elements for outputting sequencing signals to functional units
US5826052A (en) * 1994-04-29 1998-10-20 Advanced Micro Devices, Inc. Method and apparatus for concurrent access to multiple physical caches
US6012134A (en) * 1998-04-09 2000-01-04 Institute For The Development Of Emerging Architectures, L.L.C. High-performance processor with streaming buffer that facilitates prefetching of instructions
US6381678B2 (en) 1998-10-30 2002-04-30 Intel Corporation Processing ordered data requests to a memory

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5506957A (en) * 1992-12-01 1996-04-09 International Business Machines Corporation Synchronization for out of order floating point data loads
US5724533A (en) * 1995-11-17 1998-03-03 Unisys Corporation High performance instruction data path

Also Published As

Publication number Publication date
TW486628B (en) 2002-05-11
GB0109917D0 (en) 2001-06-13
CN1208723C (zh) 2005-06-29
CN1411575A (zh) 2003-04-16
US20020073284A1 (en) 2002-06-13
WO2000026742A2 (en) 2000-05-11
US20010044881A1 (en) 2001-11-22
AU1122400A (en) 2000-05-22
US6725339B2 (en) 2004-04-20
GB2358941A (en) 2001-08-08
GB2358941B (en) 2003-07-23
WO2000026742A3 (en) 2000-08-10
DE19983687T1 (de) 2001-11-22
US6381678B2 (en) 2002-04-30

Similar Documents

Publication Publication Date Title
DE19983687B4 (de) Verarbeitung geordneter Datenanforderungen an einen Speicher
DE3750935T2 (de) Verfahren und System zum Erleichtern der Befehlsausführung in einem digitalen Rechner.
DE69929936T2 (de) Verfahren und Vorrichtung zum Abrufen von nicht-angrenzenden Befehlen in einem Datenverarbeitungssystem
DE69323790T2 (de) Verfahren und Vorrichtung für mehreren ausstehende Operationen in einem cachespeicherkohärenten Multiprozessorsystem
DE60204687T2 (de) Speicherkopierbefehl mit Angabe von Quelle und Ziel, der in der Speichersteuerung ausgeführt wird
DE69226928T2 (de) Verfahren und Direktspeicherzugriffssteuerung zum asynchronen Daten-Lesen von einem -Schreiben in einen Speicher mit verbessertem Durchfluss
DE3853529T2 (de) Dynamische Mehrbefehle-Mehrdaten-Mehrpipeline-Gleitpunkteinheit.
DE68927492T2 (de) Verfahren und Vorrichtung zur gleichzeitigen Verteilung von Befehlen an mehrere funktionelle Einheiten
DE4291778B4 (de) Cache-Speichereinrichtung für ein Mikroprozessorsystem mit einem Cache-Speicher mit asynchronem Datenpfad
DE69127101T2 (de) System für verteilte mehrfachrechnerkommunikation
DE69231197T2 (de) Verfahren und Vorrichtung für eine verbesserte Speicherarchitektur
DE69418146T2 (de) Temporärer Registersatz für einen superpipeline-superskalaren Prozessor
DE69429061T2 (de) Superskalarmikroprozessoren
DE60036016T2 (de) Schnell multithreading für eng gekoppelte multiprozessoren
DE69715328T2 (de) System und Verfahren zur Parallelisierung der Durchführung von Speichertransaktionen mittels mehreren Speichermodellen
DE69325086T2 (de) Verfahren und System für spekulative Befehlsausführung
DE69612991T2 (de) System zur bearbeitung von selbstmodifizierendem kode
DE69130858T2 (de) Überlappende Serienverarbeitung
DE69130757T2 (de) Ausführungsvorrichtung für bedingte Verzweigungsbefehle
DE19506435C2 (de) Verfahren und Einrichtung zum Vermeiden von Rückschreibkonflikten zwischen einen gemeinsamen Rückschreibpfad verwendenden Ausführungseinheiten
DE4207148A1 (de) Superscalar-prozessor
DE69908175T2 (de) Verbesserte befehlsdekodierung durch paralleldekodierungsalgorithmus
DE3750028T2 (de) Pipelineprozessor mit schwacher Kopplung.
DE10056827A1 (de) Duale Verwendung von Cache-Verbindungen
DE69425580T2 (de) Gerät und verfahren zur schnittstellenbildung zwischen einem datenprozessor einerseits und einer e-a-steuerung und einem haupspeicher andererseits

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8125 Change of the main classification

Ipc: G06F 12/12

8607 Notification of search results after publication
8364 No opposition during term of opposition
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee

Effective date: 20110502