[go: up one dir, main page]

DE69128741T2 - Mehrstufiger Befehlscachespeicher und Verwendungsverfahren dafür - Google Patents

Mehrstufiger Befehlscachespeicher und Verwendungsverfahren dafür

Info

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
Application number
DE69128741T
Other languages
English (en)
Other versions
DE69128741D1 (de
Inventor
Chi-Hung Chi
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.)
Koninklijke Philips NV
Original Assignee
Koninklijke Philips Electronics NV
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 Koninklijke Philips Electronics NV filed Critical Koninklijke Philips Electronics NV
Publication of DE69128741D1 publication Critical patent/DE69128741D1/de
Application granted granted Critical
Publication of DE69128741T2 publication Critical patent/DE69128741T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/0888Addressing 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
    • G06F9/381Loop buffering
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3814Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6022Using a prefetch buffer or dedicated prefetch cache
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6028Prefetching based on hints or prefetch instructions

Landscapes

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

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
DE69128741T 1990-05-18 1991-05-10 Mehrstufiger Befehlscachespeicher und Verwendungsverfahren dafür Expired - Fee Related DE69128741T2 (de)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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