DE69128741T2 - Mehrstufiger Befehlscachespeicher und Verwendungsverfahren dafür - Google Patents
Mehrstufiger Befehlscachespeicher und Verwendungsverfahren dafürInfo
- Publication number
- DE69128741T2 DE69128741T2 DE69128741T DE69128741T DE69128741T2 DE 69128741 T2 DE69128741 T2 DE 69128741T2 DE 69128741 T DE69128741 T DE 69128741T DE 69128741 T DE69128741 T DE 69128741T DE 69128741 T2 DE69128741 T2 DE 69128741T2
- Authority
- DE
- Germany
- Prior art keywords
- buffer
- instruction
- processing unit
- program counter
- prefetch
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0897—Caches characterised by their organisation or structure with two or more cache hierarchy levels
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0888—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3808—Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
- G06F9/381—Loop buffering
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3814—Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
- G06F9/383—Operand prefetching
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/6022—Using a prefetch buffer or dedicated prefetch cache
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/6028—Prefetching based on hints or prefetch instructions
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Advance Control (AREA)
Description
- Die Erfindung bezieht sich auf Verfahren und Systeme zur Speichersteuerung in einem elektronischen Rechner. Insbesondere bezieht sich die Erfindung auf Hochgeschwindigkeits-Pufferspeicher, die die Schnittstelle zwischen einer zentralen Verarbeitungseinheit oder einem Multiprozessor-Verarbeitungselement und dem Hauptspeicher eines Rechners bilden.
- Mit den Fortschritten in der VLSI-Technologie (Very Large Scale Integration) und der Größtrechner-Technik kann ein Prozessor mit einer Rechenleistung, die der eines Größtrechners ähnelt, auf einem einzigen Chip hergestellt werden. Obwohl Verbesserungen in der Technologie der integrierten Schaltungen zu erheblich reduzierten Gatter-Verzögerungen geführt haben, wurden die Geschwindigkeit und die Dichte der Speicherkomponenten nicht in gleichem Maße verbessert. Die Folge ist, daß die Gesamtleistung von Rechnern mit diesen Prozessoren normalerweise durch die Geschwindigkeit des Speichersystems beschränkt wird. Cachespeicher dienen zum Überbrücken der Lücke zwischen Speicher- und Prozessorgeschwindigkeit.
- Der Cachespeicher ist ein schneller Pufferspeicher, der die Schnittstelle zwischen der Verarbeitungseinheit und dem Hauptspeicher eines Rechners bildet. Der hier benutzte Ausdruck "Verarbeitungseinheit" kann sich auf eine zentrale Verarbeitungseinheit oder ein Multiprozessor-Verarbeitungselement beziehen. Sinn des Cachespeichers ist es, schnell zugängliche Kopien der Daten und Befehle bereitzuhalten, die der Prozessor am wahrscheinlichsten benötigen wird. Der Cachespeicher kann viel kleiner sein als der Hauptspeicher, und es ist daher möglich, den Cachespeicher mit einer schnelleren und kostenaufwendigeren Technologie zu implementieren als für die Implementierung eines Hauptspeichers wirtschaftlich wäre. Wenn der Cache die geeigneten Daten und Befehle enthält, sieht die Verarbeitungseinheit tatsächlich nur die schnelle Cache-Zugriffszeit, verfügt jedoch über den großen Adreßraum des Hauptspeichers. Außerdem kann ein ordnungsgemäß verwaltetes Cachesystem eine indirekte positive Auswirkung auf die Recheneffizienz haben, da der Datenverkehr auf dem Systembus reduziert wird.
- Eine Verarbeitungseinheit arbeitet durch sequentielle Ausführung eines Programms von Befehlen, die an adressierten Stellen des Hauptspeichers gespeichert sind. Programmblöcke mit Befehlen zur sequentiellen Ausführung sind in benachbarten Speicheradressen gespeichert. Die Verarbeitungseinheit fordert diese Befehle der Reihe nach über ein Programmzählerregister vom Speicher an, das inkrementiert wird, um bei jedem Befehlszyklus auf einen neuen Befehlscode zu zeigen. Solange der Programmablauf sequentiell bleibt, läßt sich die Funktion des Cachespeichers leicht implementieren, indem Befehlscodes von den Speicherplätzen ein oder mehrere Zeilen vor der im Programmzähler gehaltenen Adresse vorabgerufen werden. Die vorabgerufenen Befehle stehen dann im schnellen Cachespeicher zur Verfügung, wenn sie tatsächlich durch den Prozessor adressiert werden, und man spricht von einem erzielten "Cache-Volltreffer". Wenn der Programmablauf jedoch eine Verzweigung oder eine Schleife zu einer nichtsequentiellen Befehlsadresse erfordert, ist der benötigte Befehlscode eventuell nicht im Cachespeicher vorhanden, wenn er durch den Prozessor angefordert wird, und man spricht von einem "Cache-Fehltreffer". Wenn ein Cache-Fehltreffer auftritt, muß die Verarbeitung unterbrochen werden, während die Daten vom Hauptspeicher abgerufen werden.
- Die Entwurfsziele für ein gutes Cachespeichersystem sind daher: Das Cache-Volltreffer-Verhältnis sollte so hoch sein, daß die Verarbeitungseinheit nicht auf Befehle warten muß; der Bus-Datenverkehr sollte so gering wie möglich sein, damit die Wahrscheinlichkeit eines Bus-Konkurrenzbetriebs zwischen Daten- und Befehlszugriffen reduziert wird (der Bus-Datenverkehr ist ein besonders kritischer Leistungsengpaß bei Einchipsystemen, weil die Gesamtzahl der E/A-Stifte eines Chips oft begrenzt ist); und die Chipfläche sollte effizient genutzt werden, da sie immer teuer und begrenzt ist. Das letztgenannte Kriterium impliziert, daß die Komplexität der mit der Cachesteuerung verbundenen Hardware so einfach wie möglich sein sollte.
- Im Handbuch mit dem Titel "AM29000 32-bit Streamlined Instruction Processor User's Manual", das 1988 durch Advanced Micro Devices, Inc. veröffentlicht wurde, wird ein Befehlscachesystem beschrieben, bei dem alle durch einen Prozessor ausgeführten Befehle entweder von einem Sprungziel-Cache abgerufen oder von einem externen Befehlsspeicher vorabgerufen werden. Wenn Befehle von dem externen Speicher vorabgerufen werden, werden sie im vorhinein angefordert, um die Zeitsteuerung der Befehiszugriffe zu unterstützen. Der Prozessor versucht, den Abruf des nächsten Befehls während jedes Programmzyklus zu initiieren.
- Da Befehle im vorhinein - basierend auf einem vorgegebenen Bedarf - angefordert werden, ist es möglich, daß ein vorabgerufener Befehl nicht für die Ausführung benötigt wird, wenn der Vorabruf beendet ist. Um diese Möglichkeit zu berücksichtigen, enthält die Befehlsabrufeinheit einen Vier-Worte-Befehls-Vorabrufpuffer, der zirkulär adressiert wird und als First-in-First-out-Schlange für Befehle fungiert. Der Prozessor enthält auch einen Sprungziel-Cache, um den schnellen Zugriff auf Befehle zu ermöglichen, die nicht-sequentiell abgerufen werden. Das Ziel eines nicht-sequentiellen Abrufs befmdet sich im Sprungziel-Cache, wenn ein ähnlicher Abruf für das gleiche Ziel erst vor kurzem aufgetreten ist, so daß es weder durch das Ziel eines anderen nicht-sequentiellen Abrufs ersetzt wurde noch durch einen eingreifenden Befehl ungültig gemacht wurde. Wenn ein nicht-sequentieller Abruf auftritt, entweder über einen Sprungbefehl, einen Interrupt oder einen Trap (nicht programmierter Sprung), wird die Adresse für den Abruf dem Sprungziel-Cache zu der gleichen Zeit vorgelegt, wie sie an den Hauptspeicher weitergeleitet wird.
- Der bekannte Befehlscache hat den Nachteil, daß nach einem nicht-sequentiellen Abruf, wenn der externe Speicher zu langsam ist, die verfügbaren Befehle im Sprungziel-Cache erschöpft sein werden, bevor neue Befehle vom Speicher zur Verfügung stehen, so daß es zu einem Cache-Fehltreffer kommt, der die erreichbare Ausführungsgeschwindigkeit reduziert. Im Prinzip kann dieses Problem dadurch gelöst werden, daß die Größe der Sprungziel-Cache-Blöcke an die Geschwindigkeit des externen Speichers angepaßt wird, jedoch erfordert diese Lösung große Sprungziel-Speicher für viele Sprungziele.
- Die Erfindung hat zur Aufgabe, eine Cache-Architektur zu schaffen, die das Cache-Volltreffer-Verhältnis bei einer begrenzten Menge von Cachespeicher verbessert.
- Erfindungsgemäß ist ein Cachespeicher in drei Stufen organisiert: 1) ein Vorabrufpuffer; 2) ein Kopfpuffer; und 3) ein Nutzungspuffer.
- Der Vorabrufpuffer arbeitet auf herkömmliche Weise, um Befehlszeilen von sequentiellen Speicheradressen vor der Adresse vorabzurufen, die durch den Programmzähler bestimmt wird. Er ist vorzugsweise relativ klein und als FIFO-Register (First-In-First-Out) organisiert. Befehle, die in Blöcken des sequentiell ausgeführten Codes enthalten sind, führen normalerweise zu Cache-Volltreffern im Vorabrufpuffer oder im Nutzungspuffer.
- Der Nutzungspuffer ist ein relativ großer Block von schnellem Cachespeicher mit einfacher Steuerungs-Hardware, die entwurfen wurde, um die Chipfläche effizient zu nutzen. Typischerweise kann der Nutzungspuffer zum Beispiel ein direkt abgebildeter Puffer mit einer großen Blockgröße sein. Wenn der Prozessor einen Cache- Volltreffer im Vorabrufpuffer erzielt, wird die Cachezeile, die den betreffenden Befehl enthält, ebenfalls an den Nutzungspuffer übertragen, wo sie eine zuvor gespeicherte Zeile ersetzt. Der Nutzungspuffer bietet einen wirtschaftlichen und schnellen Zugriff auf vor kurzem ausgeführte Befehle und ist daher besonders effizient bei der Ausführung von Code in sich wiederholenden Programmschleifen.
- Der Kopfpuffer ist ein relativ kleiner Puffer, der als FIFO-Register organisiert ist und zum Speichern von Befehlen vom Anfang der Programmcodeblöcke an dient. Wenn die Verarbeitungseinheit einen angeforderten Befehl in den Cachepuffern verfehlt, wird über einen Bus-Abruf mit hoher Priorität auf den Befehl vom Hauptspeicher zugegriffen. Die relative Adresse des abgerufenen Befehis wird in Übereinstimmung mit einer vorgegebenen Regel geprüft, und wenn die Prüfbedingungen erfüllt werden, wird der Befehl im Kopfpuffer gespeichert. Werden die Prüfbedingungen nicht erfüllt, wird der Befehl im Nutzungspuffer gespeichert.
- Es ist möglich, eine erhöhte Cache-Effizienz zu erreichen, indem Befehle, die den Cache-Inhalt vorübergehend für späteren Zugriff einfrieren, selektiv in Programme kompiliert werden. Erfindungsgemäß kann ein mehrstufiger Cache Hardware umfassen, die auf einen Einfrier-Befehlscode reagiert, indem sie das Schreiben von neuen Daten in den Kopfpuffer und den Nutzungspuffer verhindert. Dieses Merkmal wird zum Beispiel benutzt, um eine effiziente und schnelle Ausführung von Programmschleifen zu erreichen.
- In einer Äusführungsform der Erfindung arbeitet der Vorabrufpuffer, um kontinuierlich Befehle sequentiell zum Programmzähler vorabzurufen, ungeachtet des Inhalts des Kopfpuffers und des Nutzungspuffers.
- In einer zweiten, ausgeklügelteren Ausführungsform der Erfindung wird das sequentielle Vorabrufen verhindert, sobald festgestellt wird, daß der vorabzurufende Befehl bereits im Kopfpuffer oder im Nutzungspuffer vorhanden ist. Der Vorteil dabei besteht darin, daß der Datenverkehr auf dem Systembus dadurch entsprechend reduziert wird.
- Ausführungsbeispiele der Erfindung sind in der Zeichnung dargestellt und werden im folgenden näher beschrieben. Es zeigen:
- Figur 1 die Organisation und den Befehlsfluß in einer Rechneranordnung, die die Erfindung enthält;
- Figur 2 die Pufferung der Befehle in einem Computerprogramm; und
- Figur 3 die Nutzung der Einfrier- und Ausfrier-Befehle während der Ausführung einer Programmschleife.
- Figur 1 zeigt die Organisation und den Befehlsfiuß im Cachespeicher einer Rechneranordnung, die die Erfindung enthält.
- Eine Verarbeitungseinheit 10, die Teil eines VLSI-Einchip-Mikroprozessors sein kann, enthält ein Programmzählerregister 10a, dessen Inhalt regelmäßig aktualisiert wird, um die Adresse des nächsten Programmbefehls zu enthalten, der durch die Verarbeitungseinheit ausgeführt werden soll. Programmbefehle werden in einer Hauptspeichereinheit 12 gespeichert und umfassen typischerweise Blöcke von sequentiellen Befehlen, die durch nicht-sequentielle Sprung- und Schleifenbefehle miteinander in Beziehung stehen. Der Prozessor kann auch Hardware-Interrupts unterliegen, die das Programm veranlassen, asynchron zu anderen Programmsequenzen zu verzweigen, die ebenfalls im Speicher 12 gespeichert sind. Die Daten werden zwischen dem Hauptspeicher 12 und der Verarbeitungseinheit 10 durch einen Cache übertragen, der einen Vorabruipuffer 14, einen Nutzungspuffer 16 und einen Kopfpuffer 18 enthält. Die Befehle werden vom Hauptspeicher über einen Systembus 20 in Übereinstimmung mit Protokollen abgerufen, die durch eine Cachesteuerung 24 aufgestellt wurden.
- Der Vorabrufpuffer 14 dient zur Verbesserung des Cache-Volltreffer-Verhältnisses durch das Vorabrufen von Befehlen, auf die in Kürze verwiesen wird (oder auf die mit hoher Wahrscheinlichkeit verwiesen wird). Er ist als FIFO-Register organisiert und ist typischerweise relativ klein. Der Vorabrufpuffer greift über Übertragungen mit geringer Priorität über den Systembus 20 auf Befehle von Adressen zu, die sequentiell vor der Adresse im Programmzähler 10a liegen. Wie nachstehend beschrieben, kann der Vorabrufpuffer kontinuierlich Befehle vorabrufen, oder seine Funktion kann durch die Steuerung 24 in Reaktion auf den Inhalt des Kopfpuffers und des Nutzungspuffers verhindert werden.
- Der Kopfpuffer 18 dient zum Vereinfachen des Einfrierens der ersten Zeile eines Basisblocks für Schleifen- oder Subroutinen-Befehle. Er ist relativ klein und ebenfalls als FIFO-Register organisiert.
- Alternativ können der Vorabrufpuffer und/oder der Kopfpuffer als LRU- Register (Least-recently-used) organisiert sein.
- Der Nutzungspuffer dient zum Reduzieren des Datenverkehrs auf dem Systembus 20 durch Speichern von Befehlen, auf die vor kurzem durch den Prozessor zugegriffen wurde, in der Erwartung, daß sie noch einmal benutzt werden könnten. Er ist vorzugsweise auf einfache Weise organisiert, um eine effiziente Nutzung der Chipfläche zu ermöglichen, und kann zum Beispiel ein direkt abgebildeter Cache mit einer großen Cacheblockgröße (d.h. einem kleinen Cache-Kennungsbereich) sein. Es ist auch möglich, den Nutzungspuffer als einen komplizierteren assoziativen Cache zu implementieren, indem Chipfläche für die Effizienz der Funktion eingetauscht wird.
- Wenn die Verarbeitungseinheit 10 eine Speicheranforderung ausgibt, können vier verschiedene Situationen auftreten:
- - Wenn der angeforderte Befehl sich bereits im Vorabrufpuffer 14 befinden (d.h. wenn ein Vorabrufpuffer-Volltreffer vorliegt), wird der betreffende Befehl vom Vorabrufpuffer 14 an die Verarbeitungseinheit 10 gesendet und die betreffende Befehlszeile an den Nutzungspuffer übertragen, wo sie die zuvor in dieser Zeile gespeicherten Informationen ersetzt. Nachdem die betreffende Zeile an den Nutzungspuffer übertragen wurde, wird sie aus dem Vorabrufpuffer entfernt.
- - Wenn der angeforderte Befehl bereits im Kopfpuffer 18 gespeichert ist, wird der betreffende Befehl vom Kopfpuffer an die Verarbeitungseinheit 10 gesendet. Es findet keine weitere Informationsübertragung zwischen den drei Puffern statt.
- - Wenn der betreffende Befehl bereits im Nutzungspuffer 16 gespeichert ist, wird der betreffende Befehl vom Nutzungspuffer 16 an die Verarbeitungseinheit 10 gesendet. Es findet keine weitere Informationsübertragung zwischen den drei Puffern statt.
- - Wenn der betreffende Befehl weder im Vorabrufpuffer noch im Nutzungspuffer oder im Kopfpuffer gefunden wird (d.h. es liegt ein Cache-Fehltreffer vor), wird eine Speicher-Anforderung für den betreffenden Befehl mit hoher Priorität über den Systembus 20 an den Hauptspeicher 12 gesendet. Wenn der angeforderte Befehl vom Hauptspeicher im Cache eintrifft, wird er an den Prozessor 10 gesendet und auch je nach Ergebnis einer vordefinierten Prüfung entweder im Kopfpuffer 18 oder im Nutzungspuffer 16 gespeichert. Wenn der Befehl im Kopfpuffer gespeichert wird, ersetzt er den ältesten Code in diesem Puffer und der ersetzte Code wird aus dem Cache entfernt.
- Die Prüfungen, mit denen bestimmt werden kann, ob der vom Hauptspeicher abgeholte Befehl im Kopfpuffer 18 oder im Nutzungspuffer 16 gespeichert wird, beruhen typischerweise auf einem Vergleich der Adresse des vom Speicher abgeholten Befehls mit der Adresse des zuletzt durch die Verarbeitungseinheit 10 ausgeführten Befehls. In einer Ausführungsform der Prüfung wird der vom Speicher abgerufene Befehl im Kopfpuffer gespeichert, wenn er nicht-sequentiell mit dem zuletzt ausgeführten Befehl im Programmzähler ist. In einer zweiten Ausführungform der Prüfung wird der vom Hauptspeicher abgerufene Befehl nur im Kopfpuffer gespeichert, wenn er nicht-sequentiell in bezug auf den zuvor ausgeführten Befehl mit einer negativen Verschiebung ist, die größer ist als die Größe des Nutzungspuffers. In einer dritten Ausführungsform der Prüfung wird der Befehl nur im Kopfpuffer gespeichert, wenn er nicht-sequentiell mit einem zuvor gespeicherten Befehl mit einer absoluten Verschiebung ist, die größer ist als die Größe des Nutzungspuffers. In allen Fällen wird der betreffende Befehl im Nutzungspuffer gespeichert, wenn er nicht im Kopfpuffer gespeichert wird.
- Figur 2 zeigt die Verwendung der Cachepuffer in einer typischen Programmsequenz, die Block B&sub1; mit den sequentiellen Befehlen P&sub1; bis Pn, einen zweiten sequentiellen Block B&sub2; in Form einer Schleife mit den sequentiellen Befehlen Q&sub1; bis Qn und einen dritten Block B&sub3; mit den sequentiellen Befehlen R&sub1; bis Rn umfaßt. Bei einem typischen Betrieb springt das Programm von einer entfernten Speicheradresse zu dem ersten Befehl P&sub1; von Block B&sub1;. Wenn die Befehlszeile P&sub1; nicht bereits in einem der drei Cachepuffer vorliegt, wird sie im Kopfpuffer 18 gespeichert. Die Befehle P&sub1; bis Pn in Block B&sub1; werden anschließend der Reihenfolge nach ausgeführt und auf herkömmliche Weise vom Hauptspeicher 12 in den Vorabrufpuffer 14 vorabgerufen. Die Befehle im Block werden auch im Nutzungspuffer 16 gespeichert, wenn sie vom Vorabrufpuffer 14 an die CPU 10 gesendet werden, jedoch werden sie im dargestellten Beispiel wahrscheinlich nicht noch einmal benutzt. Am Ende von Block B&sub1; springt das Programm vom Befehl Pn zum Befehl Q&sub1; an einer nicht-sequentiellen Adresse. Der Befehl Q&sub1; stellt den Anfang des Programmblocks B&sub2; dar und ist die Eintrittsstelle für eine Befehlsschleife. Der Befehl Q&sub1; steht nicht im Vorabrufpuffer zur Verfügung und wird über den Bus vom Hauptspeicher geholt und im Kopfpuffer gespeichert. Die Befehle Q&sub1; bis Qn werden anschließend der Reihe nach ausgeführt. Sie werden durch den Vorabrufpuffer vom Hauptspeicher vorabgerufen und gleichzeitig mit der Übertragung an die CPU auch im Nutzungspuffer gespeichert. Das Programm verzweigt am Ende von Block B&sub2; rückwärts zum Befehl Q&sub1;. Die Verzweigung ist nicht-sequentiell, aber der Befehl Q&sub1; befindet sich im Kopfpuffer, weil er der erste Befehl in einem kürzlich ausgeführten Block ist. Wenn die Länge der Befehlssequenz von Q&sub2; bis Qn nicht größer ist als der Nutzungspuffer, befinden sich diese Befehle nach der ersten Ausführung der Schleife immer noch im Nutzungspuffer und können ohne weitere Übertragungen über den Systembus vom Cache abgeholt werden, solange die Schleife dauert. Am Ende der Schleife erfolgt ein Sprung zu Block B&sub3;. Der Befehl R&sub1;, der sich nicht im Cache befindet, wird vom Hauptspeicher geholt und wieder im Kopfpuffer 18 gespeichert.
- In einer einfachen Ausführungsform arbeitet der Vorabrufpuffer kontinuierlich und belastet den Bus 20 dadurch ständig mit Datenverkehr. In einer bevorzugten Ausführungsform der Anordnung prüft die Steuereinheit 24 den Inhalt der drei Puffer, um zu bestimmen, ob der nächste vorabzurufende sequentielle Befehl sich bereits im Cachespeicher befindet. Wenn der Befehl bereits im Cache enthalten ist, wird der Vorabruf verhindert, um den Datenverkehr auf dem Bus 20 zu reduzieren.
- In Übereinstimmung mit der US-Patentanmeldung mit der Seriennummer 500.612 kann der Befehlssatz des Prozessors Befehle enthalten, die als "Einfrier"- und "Ausfrier"-Befehle bezeichnet werden und die selektiv das Überschreiben von Daten in einem Cachespeicher zulassen oder verhindern. In einer bevorzugten Ausführungsform der Erfindung ist ein Einfrier-Befehl über Gatter 22 implementiert, um das Schreiben von neuen Daten in den Nutzungspuffer 16 und den Kopfpuffer 18 zu verhindern, wenn der Einfrier-Befehl aktiv ist. Wenn der Nutzungspuffer und der Kopfpuffer eingefroren sind, funktioniert der Vorabrufpuffer auf übliche Weise weiter (entweder kontinuierliches Vorabrufen oder Vorabrufen in Abhängigkeit vom Inhalt des Cachespeichers) und der Prozessor darf immer noch Daten vom Kopfpuffer 18 und vom Nutzungspuffer 16 lesen.
- Figur 3 zeigt die typische Anwendung eines Einfrier-Befehis in einer Schleife. Eine Programmschleife, zum Beispiel Block B&sub2;, wird in zwei Code-Sequenzen kompiliert. Die erste Sequenz L&sub1; stellt den ersten Durchgang durch die Schleife dar und die zweite Sequenz L&sub2; stellt die nachfolgenden Durchgänge durch die Schleife dar. Während des ersten Durchgangs wird der Befehl Q1A im Kopfpuffer gespeichert und die Befehle werden sequentiell im Nutzungspuffer gespeichert. Wenn der Nutzungspuffer in der Lage ist, X Befehle zu halten und das Schleifensegment L&sub1; größer ist als X, wird der Nutzungspuffer am Ende der Schleife (nach der Ausführung des Befehls Qn) die Befehle Qn-x+1 bis Qn enthalten. An diesem Punkt fügt der Compiler einen Einfrier- Befehl in den Befehlsfluß ein, der den Inhalt des Nutzungspuffers und des Kopfpuffers einfriert. Der Code fährt mit der Ausführung des Schleifensegments L&sub2; fort, aber die Befehle Q&sub1; und Qn-x+1 bis Qn sind bereits im Cache gespeichert, so daß ein Vorabrufen mit dem damit einhergehenden Datenverkehr auf dem Bus nur zwischen den Befehlen Q&sub2; und Qn-x erforderlich ist. Wenn das Programm die Schleife verläßt, wird ein Ausfrier-Befehl ausgeführt und der Cache kehrt zu seinem normalen Betrieb zurück.
- Obwohl die Erfindung unter Bezugnahme auf bestimmte Ausführungsformen beschrieben wurde, wird der Fachkundige erkennen, daß sie leicht erweitert oder abgewandelt werden kann, und die Schutzansprüche schließen deratige Abwandlungen und Erweiterungen ein.
Claims (15)
1. Cachespeichersystem zur Implementierung der Übertragung von
Befehlscodes von einem Hauptspeicher an eine Verarbeitungseinheit (10), wobei die genannte
Verarbeitungseinheit einen Programmzähler (loa) umfaßt, dessen Inhalt eine Adresse im
Hauptspeicher (12) spezifiziert, welche einen nächsten durch die genannte
Verarbeitungseinheit auszuführenden Befehlscode enthält, mit:
Vorabrufpuffermitteln (14), die angeschlossen sind, um Befehlscodes von
Adressen im Hauptspeicher vorabzurufen und zu speichern, die sequentiell auf die im
Programmzähler enthaltenen Adressen folgen;
gekennzeichnet durch:
einen Kopfpuffer (18) zum Speichern von Befehlscodes;
einen Nutzungspuffer (16) zum Speichern von Befehlscodes;
Befehlsübertragungs-Steuerungsmittel (24), die auf den Inhalt des
Programmzählers, der Vorabrufpuffermittel, des Kopfpuffers und des Nutzungspuffers
reagieren und so funktionieren, daß:
a) wenn sich ein durch den Programmzähler (10a) spezifizierter Befehlscode im
Vorabrufpuffer (14) befindet, der genannte Code an die Verarbeitungseinheit (10)
übertragen wird und auch im Nutzungspuffer (16) gespeichert wird,
b) wenn sich der durch den Programmzähler (10a) spezifizierte Befehlscode im
Kopfpuffer (18) oder im Nutzungspuffer (16) befindet, der genannte Code an die
Verarbeitungseinheit (10) übertragen wird, oder
c) wenn sich der durch den Programmzähler (10a) spezifizierte Befehlscode nicht
in den Vorabrufpuffermitteln, im Kopfpuffer (18) oder im Nutzungspuffer (16) befindet,
der genannte Code vom Hauptspeicher (12) abgerufen wird und an die
Verarbeitungseinheit (10) übertragen sowie entweder im Kopfpuffer - wenn der Inhalt des
Programmzählers bestimmte Kriterien erfüllt - oder im Nutzungspuffer - wenn der Inhalt des
Programmzählers die genannten Kriterien nicht erfüllt - gespeichert wird.
2. System nach Anspruch 1, wobei die Befehlsübertragungs-Steuerungsmittel
weiterhin dazu dienen, den durch den Programmzähler spezifizierten Code aus dem
Vorabrufpuffer zu entfernen, nachdem der genannte Code im Nutzungspuffer
gespeichert ist.
3. System nach Anspruch 1 oder 2, wobei die
Befehlsübertragungs-Steuerungsmittel auf eine konkrete, durch den Innalt des Programmzählers spezifizierte
Speicheradresse reagieren.
4. System nach Anspruch 1 oder 2, wobei die genannten Kriterien erfüllt
werden, wenn die durch den Inhalt des Programmzählers spezifizierte Speicheradresse
nicht-sequentiell mit der Adresse des zuletzt durch die Verarbeitungseinheit ausgeführten
Befehls ist.
5. System nach Anspruch 4, wobei die genannten Kriterien erfüllt werden,
wenn die durch den Inhalt des Programmzählers spezifizierte Speicheradresse von der
Adresse des zuletzt durch die Verarbeitungseinheit ausgeführten Befehis absolut um
einen Betrag verschoben ist, der größer ist als die Größe des Nutzungspuffers.
6. System nach Anspruch 4, wobei die genannten Kriterien erfüllt werden,
wenn die durch den Inhalt des Programmzählers spezifizierte Speicheradresse von der
Adresse des zuletzt durch die Verarbeitungseinheit ausgeführten Befehls negativ um
einen Betrag verschoben ist, der größer ist als die Größe des Nutzungspuffers.
7. System nach Anspruch 1 oder 2, wobei das Vorabrufpuffermittel (14)
kontinuierlich Befehlscodes von sequentiellen Adressen im Hauptspeicher vorabruft.
8. System nach Anspruch 1 oder 2, das außerdem Vorabruf-Steuerungsmittel
(24) enthält, die mit den Vorabrufpuffermitteln (14), dem Kopfpuffer (18) und dem
Nutzungspuffer (16) verbunden sind und das Vorabrufen von Befehlscodes von den
Speicheradressen verhindern, wenn ein angeforderter Befehlscode bereits in den
Vorabrufpuffermitteln, im Kopfpuffer oder im Nutzungspuffer vorhanden ist.
9. System nach Anspruch 1 oder 2, wobei der Nutzungspuffer (16) als ein
direkt abgebildeter Cachepuffer organisiert ist.
10. System nach Anspruch 1 oder 2, wobei der Nutzungspuffer (16) als ein
assoziativer Cachepuffer organisiert ist.
30 11. System nach Anspruch 1 oder 2, wobei der Nutzungspuffer (16) größer ist
als der Vorabrufpuffer (14) und als der Kopfpuffer (18).
12. System nach Anspruch 1 oder 2, das weiterhin Cache-Einfriermittel (22)
umfaßt, welche auf steuerbare Weise die Datenübertragung in den Nutzungspuffer (16)
und den Kopfpuffer (18) in Reaktion auf vordefinierte Befehlscodes verhindern, die
durch die Verarbeitungseinheit (10) verarbeitet werden.
13. System nach Anspruch 12 in Kombination mit Befehlscompilermitteln, die
Befehlscodeschleifen wie folgt erzeugen: zuerst ein erster Block von sequentiellen
Befehlen, die eine erste Iteration einer Schleife spezifizieren, dann ein
Einfrier-Befehlscode, der die Übertragung in den Nutzungspuffer (16) und den Kopfpuffer (18)
verhindert, dann ein zweiter Block von Befehlen, die weiteren Iterationen der Schleife
implementieren, und dann ein Ausfrier-Befehlscode, der die Datenübertragung in den
Nutzungspuffer (16) und den Kopfpuffer (18) zuläßt.
14. Integrierte Mikroprozessor-Schaltung, die die Verarbeitungseinheit und
das Cachesystem von Anspruch 1 oder Anspruch 2 umfaßt.
15. Verfahren zum Betreiben eines Rechners zur Implementierung der
Übertragung von Befehlscodes von einem Hauptspeicher (12) an eine Verarbeitungseinheit
(10), wobei die genannte Verarbeitungseinheit einen Programmzahler (10a) umfaßt,
dessen Inhalt eine Adresse im Hauptspeicher spezifiziert, welche einen nächsten durch
die genannte Verarbeitungseinheit auzuführenden Befehlscode enthält, bestehend aus
folgenden Schritten:
Liefern eines Cachespeichers mit einem Vorabrufpuffer (14), einem
Befehlspuffer (18) und einem Nutzungspuffer (16), wobei der genannte Kopfpuffer und der
genannte Nutzungspuffer zum Speichern von Befehlscodes zu benutzen sind;
Vorabrufen und Speichern von Befehlscodes von Adressen im
Hauptspeicher, die sequentiell auf die im Programmzähler enthaltenen Adressen folgen, im
Vorabrufpuffer;
wobei der genannte Cachespeicher außerdem so betrieben wird, daß:
wenn sich ein durch den Programmzähler (10a) spezifizierter Befehlscode
im Vorabrufpuffer (14) befindet, der genannte Code an die Verarbeitungseinheit (10)
übertragen wird und auch im Nutzungspuffer (16) gespeichert wird,
wenn sich der durch den Programmzähler (10a) spezifizierte Befehlscode
im Kopfpuffer (18) oder im Nutzungspuffer (16) befindet, der genannte Code an die
Verarbeitungseinheit (10) übertragen wird,
wenn sich der durch den Programmzähler (10a) spezifizierte Befehlscode
nicht im Vorabrufpuffer, im Kopfpuffer (18) oder im Nutzungspuffer (16) befindet, der
genannte Code vom Hauptspeicher (12) abgerufen wird und an die Verarbeitungseinheit
(10) übertragen sowie entweder im Kopfpuffer - wenn der Inhalt des Programmzählers
bestimmte Kriterien erfüllt - oder im Nutzungspuffer - wenn der Inhalt des
Programmzahlers die genannten Kriterien nicht erfüllt - gespeichert wird.
Bildinschriften:
Fig. 1:
CPU: Verarbeitungseinheit
PREFETCH BUFFER: Vorabrufpuffer
HEAD BUFFER: Kopfpuffer
USE BUFFER: Nutzungspuffer
CONTROL: Steuerung
MAIN MEMORY: Hauptspeicher
Fig. 3:
FREEZE: EINFRIEREN
UNFREEZE: AUSFRIEREN
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US52634190A | 1990-05-18 | 1990-05-18 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| DE69128741D1 DE69128741D1 (de) | 1998-02-26 |
| DE69128741T2 true DE69128741T2 (de) | 1998-07-16 |
Family
ID=24096939
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| DE69128741T Expired - Fee Related DE69128741T2 (de) | 1990-05-18 | 1991-05-10 | Mehrstufiger Befehlscachespeicher und Verwendungsverfahren dafür |
Country Status (4)
| Country | Link |
|---|---|
| US (1) | US5473764A (de) |
| EP (1) | EP0457403B1 (de) |
| JP (1) | JPH04232549A (de) |
| DE (1) | DE69128741T2 (de) |
Families Citing this family (37)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5539911A (en) * | 1991-07-08 | 1996-07-23 | Seiko Epson Corporation | High-performance, superscalar-based computer system with out-of-order instruction execution |
| US5493687A (en) | 1991-07-08 | 1996-02-20 | Seiko Epson Corporation | RISC microprocessor architecture implementing multiple typed register sets |
| DE4306077A1 (de) * | 1992-02-27 | 1993-09-02 | Hewlett Packard Co | |
| US5649154A (en) * | 1992-02-27 | 1997-07-15 | Hewlett-Packard Company | Cache memory system having secondary cache integrated with primary cache for use with VLSI circuits |
| JPH07506921A (ja) * | 1992-03-06 | 1995-07-27 | ランバス・インコーポレーテッド | コンピュータ・システムにおける主記憶装置のアクセス時間とキャッシュ・メモリのサイズを最小限にするためのキャッシュへの先取り |
| WO1993020505A2 (en) | 1992-03-31 | 1993-10-14 | Seiko Epson Corporation | Superscalar risc instruction scheduling |
| JP3637920B2 (ja) | 1992-05-01 | 2005-04-13 | セイコーエプソン株式会社 | スーパースケーラマイクロプロセサに於て命令をリタイアさせるシステム及び方法 |
| EP1107111A3 (de) | 1992-12-31 | 2002-02-06 | Seiko Epson Corporation | System und Verfahren zur Änderung der Namen von Registern |
| US5628021A (en) | 1992-12-31 | 1997-05-06 | Seiko Epson Corporation | System and method for assigning tags to control instruction processing in a superscalar processor |
| DE69327981T2 (de) * | 1993-01-21 | 2000-10-05 | Advanced Micro Devices, Inc. | Kombinierte Speicheranordnung mit einem Vorausholungspuffer und einem Cachespeicher und Verfahren zur Befehlenversorgung für eine Prozessoreinheit, das diese Anordnung benutzt. |
| US5848432A (en) * | 1993-08-05 | 1998-12-08 | Hitachi, Ltd. | Data processor with variable types of cache memories |
| JPH07219766A (ja) * | 1994-02-02 | 1995-08-18 | Toshiba Corp | 演算処理装置 |
| US5621896A (en) * | 1994-06-01 | 1997-04-15 | Motorola, Inc. | Data processor with unified store queue permitting hit under miss memory accesses |
| US5619663A (en) * | 1994-09-16 | 1997-04-08 | Philips Electronics North America Corp. | Computer instruction prefetch system |
| US5752263A (en) * | 1995-06-05 | 1998-05-12 | Advanced Micro Devices, Inc. | Apparatus and method for reducing read miss latency by predicting sequential instruction read-aheads |
| US5940088A (en) * | 1995-07-12 | 1999-08-17 | Monolithic System Technology, Inc. | Method and structure for data traffic reduction for display refresh |
| US5809529A (en) * | 1995-08-23 | 1998-09-15 | International Business Machines Corporation | Prefetching of committed instructions from a memory to an instruction cache |
| US5737565A (en) * | 1995-08-24 | 1998-04-07 | International Business Machines Corporation | System and method for diallocating stream from a stream buffer |
| US5664147A (en) * | 1995-08-24 | 1997-09-02 | International Business Machines Corp. | System and method that progressively prefetches additional lines to a distributed stream buffer as the sequentiality of the memory accessing is demonstrated |
| US5860150A (en) * | 1995-10-06 | 1999-01-12 | International Business Machines Corporation | Instruction pre-fetching of a cache line within a processor |
| JP2000507019A (ja) * | 1996-12-13 | 2000-06-06 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | 直列式に動作する2台のプログラムドロジックコントローラを有する冗長データ処理システム |
| US6122729A (en) * | 1997-05-13 | 2000-09-19 | Advanced Micro Devices, Inc. | Prefetch buffer which stores a pointer indicating an initial predecode position |
| US5887151A (en) * | 1997-07-10 | 1999-03-23 | Emc Corporation | Method and apparatus for performing a modified prefetch which sends a list identifying a plurality of data blocks |
| US6253289B1 (en) | 1998-05-29 | 2001-06-26 | Compaq Computer Corporation | Maximizing sequential read streams while minimizing the impact on cache and other applications |
| DE10043003A1 (de) | 2000-09-01 | 2002-03-14 | Infineon Technologies Ag | Programmgesteuerte Einheit |
| US6516388B1 (en) * | 2000-09-15 | 2003-02-04 | Hewlett-Packard Company | Method and apparatus for reducing cache pollution |
| CA2378777A1 (en) * | 2002-03-25 | 2003-09-25 | Catena Networks Canada Inc. | Shared program memory with fetch and prefetch buffers |
| US20040186823A1 (en) * | 2003-02-12 | 2004-09-23 | International Business Machines Corporation | Data packet processing |
| JP4374221B2 (ja) * | 2003-08-29 | 2009-12-02 | パナソニック株式会社 | コンピュータシステムおよび記録媒体 |
| US7797493B2 (en) | 2005-02-15 | 2010-09-14 | Koninklijke Philips Electronics N.V. | Enhancing performance of a memory unit of a data processing device by separating reading and fetching functionalities |
| US7493447B2 (en) * | 2006-05-03 | 2009-02-17 | Nuvoton Technology Corporation | System and method for caching sequential programs |
| JP2008257508A (ja) * | 2007-04-05 | 2008-10-23 | Nec Electronics Corp | キャッシュ制御方法およびキャッシュ装置並びにマイクロコンピュータ |
| JP5793061B2 (ja) | 2011-11-02 | 2015-10-14 | ルネサスエレクトロニクス株式会社 | キャッシュメモリ装置、キャッシュ制御方法、およびマイクロプロセッサシステム |
| US10114750B2 (en) | 2012-01-23 | 2018-10-30 | Qualcomm Incorporated | Preventing the displacement of high temporal locality of reference data fill buffers |
| US9436501B2 (en) | 2014-08-26 | 2016-09-06 | International Business Machines Corporation | Thread-based cache content saving for task switching |
| CN112631658B (zh) * | 2021-01-13 | 2022-11-15 | 成都国科微电子有限公司 | 指令发送方法、芯片和电子设备 |
| US11650821B1 (en) * | 2021-05-19 | 2023-05-16 | Xilinx, Inc. | Branch stall elimination in pipelined microprocessors |
Family Cites Families (17)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US4521850A (en) * | 1977-12-30 | 1985-06-04 | Honeywell Information Systems Inc. | Instruction buffer associated with a cache memory unit |
| US4430712A (en) * | 1981-11-27 | 1984-02-07 | Storage Technology Corporation | Adaptive domain partitioning of cache memory space |
| US4503501A (en) * | 1981-11-27 | 1985-03-05 | Storage Technology Corporation | Adaptive domain partitioning of cache memory space |
| US4626988A (en) * | 1983-03-07 | 1986-12-02 | International Business Machines Corporation | Instruction fetch look-aside buffer with loop mode control |
| US4701844A (en) * | 1984-03-30 | 1987-10-20 | Motorola Computer Systems, Inc. | Dual cache for independent prefetch and execution units |
| US4807110A (en) * | 1984-04-06 | 1989-02-21 | International Business Machines Corporation | Prefetching system for a cache having a second directory for sequentially accessed blocks |
| JPH0630075B2 (ja) * | 1984-08-31 | 1994-04-20 | 株式会社日立製作所 | キャッシュメモリを有するデータ処理装置 |
| US4691277A (en) * | 1984-10-24 | 1987-09-01 | International Business Machines Corp. | Small instruction cache using branch target table to effect instruction prefetch |
| US4783736A (en) * | 1985-07-22 | 1988-11-08 | Alliant Computer Systems Corporation | Digital computer with multisection cache |
| WO1987005417A1 (en) * | 1986-02-28 | 1987-09-11 | Nec Corporation | Instruction prefetch control apparatus |
| US4933837A (en) * | 1986-12-01 | 1990-06-12 | Advanced Micro Devices, Inc. | Methods and apparatus for optimizing instruction processing in computer systems employing a combination of instruction cache and high speed consecutive transfer memories |
| US4980823A (en) * | 1987-06-22 | 1990-12-25 | International Business Machines Corporation | Sequential prefetching with deconfirmation |
| US4860197A (en) * | 1987-07-31 | 1989-08-22 | Prime Computer, Inc. | Branch cache system with instruction boundary determination independent of parcel boundary |
| US4943908A (en) * | 1987-12-02 | 1990-07-24 | International Business Machines Corporation | Multiple branch analyzer for prefetching cache lines |
| US4876642A (en) * | 1988-01-19 | 1989-10-24 | Gibson Glenn A | Rules and apparatus for a loop capturing code buffer that prefetches instructions |
| US4905141A (en) * | 1988-10-25 | 1990-02-27 | International Business Machines Corporation | Partitioned cache memory with partition look-aside table (PLAT) for early partition assignment identification |
| US5093778A (en) * | 1990-02-26 | 1992-03-03 | Nexgen Microsystems | Integrated single structure branch prediction cache |
-
1991
- 1991-05-10 DE DE69128741T patent/DE69128741T2/de not_active Expired - Fee Related
- 1991-05-10 EP EP91201135A patent/EP0457403B1/de not_active Expired - Lifetime
- 1991-05-17 JP JP3140695A patent/JPH04232549A/ja active Pending
-
1994
- 1994-04-08 US US08/226,113 patent/US5473764A/en not_active Expired - Fee Related
Also Published As
| Publication number | Publication date |
|---|---|
| DE69128741D1 (de) | 1998-02-26 |
| EP0457403A2 (de) | 1991-11-21 |
| US5473764A (en) | 1995-12-05 |
| JPH04232549A (ja) | 1992-08-20 |
| EP0457403B1 (de) | 1998-01-21 |
| EP0457403A3 (en) | 1992-07-01 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| DE69128741T2 (de) | Mehrstufiger Befehlscachespeicher und Verwendungsverfahren dafür | |
| DE69327981T2 (de) | Kombinierte Speicheranordnung mit einem Vorausholungspuffer und einem Cachespeicher und Verfahren zur Befehlenversorgung für eine Prozessoreinheit, das diese Anordnung benutzt. | |
| DE69331039T2 (de) | Rechnersystem mit einem Vorausholungscachespeicher | |
| DE69616465T2 (de) | Cachespeicher mit Datenvorausladung | |
| DE69518676T2 (de) | Cache-Speicheranordnung für einen Speicher | |
| DE10085373B4 (de) | Verfahren zum Flushen von Cache-Zeilen | |
| DE69616223T2 (de) | Datenstromvorausladepufferspeicher mit Datenstromfilters | |
| DE69331448T2 (de) | Dataprozessor mit einem Cachespeicher | |
| DE69721961T2 (de) | Mikroprozessor mit einem Nachschreibcachespeicher | |
| DE69514165T2 (de) | Mehrstufige Cache-Speicheranordnung | |
| DE69908193T2 (de) | Ausführung von speicher- und ladeoperationen mittels einer linkdatei | |
| DE69224084T2 (de) | Rechneranordnung mit Mehrfachpufferdatencachespeicher und Verfahren dafür | |
| DE69708188T2 (de) | Speichersteuerungseinheit | |
| DE69327288T2 (de) | Verfahren und System zur Aufrechterhaltung der Adressenübersetzungspufferspeicher-Kohärenz eines Multiprozessorsystems | |
| DE69129913T2 (de) | Datenprozessor mit aufgeschobenem Laden eines Cache-Speichers | |
| DE68929224T2 (de) | Pipeline, die einen Cachespeicher für Rechnerprozessoren enthält | |
| DE68922326T2 (de) | Speicherwarteschlange für eine festgekoppelte Mehrprozessorenkonfiguration mit einem zweistufigen Cache-Pufferspeicher. | |
| DE60222402T2 (de) | Verfahren und system zur spekulativen ungültigkeitserklärung von zeilen in einem cachespeicher | |
| DE69132186T2 (de) | Cache-Speicherverwaltungsanordnung | |
| DE69325086T2 (de) | Verfahren und System für spekulative Befehlsausführung | |
| DE102004013676B4 (de) | Schaltung in einem Prozessor zur Steuerung einer iterativen Ausführung einer Gruppe von Programmanweisungen | |
| DE69727465T2 (de) | Rechnersystem mit Speichersteuerung für Stossbetrieb-Übertragung | |
| DE69715328T2 (de) | System und Verfahren zur Parallelisierung der Durchführung von Speichertransaktionen mittels mehreren Speichermodellen | |
| DE69432133T2 (de) | Datenprozessor mit Cache-Speicher | |
| DE69023568T2 (de) | Cache-Speicheranordnung. |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| 8364 | No opposition during term of opposition | ||
| 8327 | Change in the person/name/address of the patent owner |
Owner name: KONINKLIJKE PHILIPS ELECTRONICS N.V., EINDHOVEN, N |
|
| 8339 | Ceased/non-payment of the annual fee |