DE69129872T2 - Datenverarbeitungssystem mit einem leistungsverbessernden Befehlscachespeicher - Google Patents

Datenverarbeitungssystem mit einem leistungsverbessernden Befehlscachespeicher

Info

Publication number
DE69129872T2
DE69129872T2 DE69129872T DE69129872T DE69129872T2 DE 69129872 T2 DE69129872 T2 DE 69129872T2 DE 69129872 T DE69129872 T DE 69129872T DE 69129872 T DE69129872 T DE 69129872T DE 69129872 T2 DE69129872 T2 DE 69129872T2
Authority
DE
Germany
Prior art keywords
instruction
instructions
cache
prefetch
branch
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE69129872T
Other languages
English (en)
Other versions
DE69129872D1 (de
Inventor
Chi-Hung C/O Int. Octrooibureau B.V. Nl-5656 Aa Eindhoven 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.)
NXP BV
Original Assignee
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 Philips Electronics NV filed Critical Philips Electronics NV
Publication of DE69129872D1 publication Critical patent/DE69129872D1/de
Application granted granted Critical
Publication of DE69129872T2 publication Critical patent/DE69129872T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/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; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
    • G06F9/381Loop buffering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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)
  • Advance Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

    ANWENDUNGSBEREICH DER ERFINDUNG
  • Die vorliegende Erfindung bezieht sich auf ein Datenverarbeitungssystem entsprechend der Einleitung von Anspruch 1.
  • In Datenverarbeitungssystemen werden gespeicherte Speicherprogramme benutzt, die durch sequentielle Ausführung von Befehlszeilen ausgeführt werden. Das Abrufen einer Befehlszeile aus dem Speicher erfordert den Zugriff auf den Systembus, wodurch die Gesamtrechengeschwindigkeit abnimmt.
  • Um die Belastung des Busses bei zeilenweiser Programmausführung zu verringern, wurden Befehlscachespeicher verwendet, die das Vorabrufen von Befehlszeilengruppen während einiger Zyklen des Speicherbusses ermöglichen. Der Prozessor kann dann auf eine Befehlszeile im Cache verweisen, ohne die Verfügbarkeit des Busses zu berücksichtigen. Ein spezielles Datenverarbeitungssystem mit einer Befehlsvorabruf- Warteschlange gefolgt von einem Befehlscache, die beide einen Befehlsdecodierbereich versorgen, wurde von Masahito Matsuo et al. in der Patentschrift US-A-4.847.753 beschrieben. Ein Komparator vergleicht eine vorhergesagte, im Befehlscache gespeicherte Zieladresse mit einer echten Zieladresse, die durch die Befehlsausführeinheit erzeugt wurde. Bei Gleichheit ist eine Fortführung des schnellen Pipelining möglich. Dieser Aufbau ist vorteilhaft bei rein sequentiellen Programmen oder solchen Programmen, in denen nur "kleine" Adressensprünge auftreten, d. h. um einen geringeren Abstand als in dem Befehlscache gespeichert.
  • Viele Programme sind von Natur aus nicht ganz sequentiell. Verzweigungsbefehle können große und kleine Adressensprünge sowohl vorwärts als auch rückwärts beinhalten. Schleifenbefehle enthalten mindestens einen Befehl mit einem Rückwärts-Adressensprung. Wenn Befehle auf sequentieller Basis vorabgerufen werden, kann es zu einem Cache-Fehltreffer kommen, falls der als nächstes auszuführende Befehl der Zielbefehl eines Rückwärts-Adressensprungs ist. Der Cache muß dann einige Buszyklen dazu verwenden, den betreffenden Befehl zu erfassen.
  • Das Vorabrufen von Befehlen zur Ausführung kann außerdem zu dem zusätzlichen Problem der Verschmutzung des Cache führen, wobei Befehlszeilen in den Cache vorabgerufen und niemals genutzt werden. Dies hat eine Vergeudung von Speicherplatz im Cache zur Folge, und zwar aufgrund der erhöhten Möglichkeit eines Cache-Fehltreffers durch die Speicherung von Befehlen im Cache, auf die nicht verwiesen wird.
  • Eine Lösung für dieses Problem liegt in einer Cache-Vorabrufoperation, die eine Zeile vorausschaut. Falls ein Cache-Fehltreffer auftritt, werden beim nächsten verfügbaren Buszugriff die verwiesene Zeile und die nächste folgende Befehlszeile vorabgerufen. Bei diesem Verfahren wird nicht überprüft, ob die nächste Zeile tatsächlich benutzt wird, wodurch der Cache eher verschmutzt als seine Leistung verbessert werden kann.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Der Erfindung liegt die Aufgabe zugrunde, das wirksame Vorabrufen von Befehlen aus einem Programmspeicher in einen Befehlscache zu schaffen, um insbesondere Cache-Fehltreffer während der Ausführung des Programms und die Verschmutzung des Cache mit ungenutzten Befehlen zu vermeiden.
  • Gemäß einem Aspekt der Erfindung wird die Aufgabe dadurch gelöst, daß die genannte Vorabrufeinheit gemäß dem beschreibenden Teil von Anspruch 1 gekennzeichnet ist.
  • Insbesondere ruft der Befehlsausführungs-Cache während eines verfügbaren Buszyklus vorab eine Vielzahl von Befehlen aus einem Hauptprogrammspeicher ab. Die abgerufenen Befehle werden von einem Vorabrufprozessor untersucht, um die Wahrscheinlichkeit eines Cache-Fehltreffers durch den Rechner während der sequentiellen Ausführung der vorabgerufenen Befehle zu bestimmen.
  • Die Vorhersage eines Cache-Fehltreffers beruht auf der Feststellung, ob ein Befehl, zum Beispiel ein Verzweigungsbefehl, in den Cache geladen wurde oder nicht. Da diese Befehlsarten dazu führen, daß die Programmausführung nicht sequentiell abläuft, und die Ausführung zu einem Zielbefehl zwingen, enthalten die nächsten vor abzurufenden Befehle den Zielbefehl.
  • In der US-amerikanischen Patentschrift 3.466.613 wird die Aufrechterhaltung einer Gruppe von Schleifenbefehlen im Cache durch Kennzeichnung des entsprechenden ersten Befehls beschrieben. In der vorliegenden Erfindung wird ebenfalls ein spezieller Vorabrufbefehl (zum Beispiel) vor dem letzten Schleifenbefehl verwendet.
  • Wenn Befehle bekanntermaßen zu einer Gruppe von wiederholt ausgeführten Befehlen, insbesondere zu einer Schleife, gehören, wird außerdem der Bereich des Befehlscache, der wiederholt ausgeführte Befehle enthält, eingefroren, d. h. er befindet sich in einem Zustand, indem die Befehle gelesen und nicht überschrieben werden können. Auf diese Weise ist es möglich, die ersten Befehle eines Programmblocks, die mit hoher Wahrscheinlichkeit wiederverwendet werden, für den wiederholten Gebrauch im Cache aufzubewahren. Manchmal wird aus praktischen Gründen nur ein Teil der Schleife eingefroren. Bei der Realisierung der Erfindung können explizite Befehle in das Programm eingefügt werden, um im nächsten verfügbaren Buszyklus einen Vorabruf der Zielbefehle eines Verzweigungsbefehls zu verlangen. Ein Befehl zum Einfrieren und Ausfrieren von Befehlen im Cache kann in das Programm eingefügt werden, um festzustellen, wann diese Maßnahmen getroffen werden müssen.
  • Weitere vorteilhafte Aspekte der Erfindung sind in den abhängigen Patentansprüchen dargelegt.
  • KURZE BESCHREIBUNG DER FIGUREN
  • Fig. 1 stellt eine Cachespeicherschnittstelle zwischen einem Programmspeicher 13 und einer Verarbeitungseinheit 11 dar.
  • Fig. 2 stellt die Programmverwaltung im Speicher 13 dar, die für ein explizites Vorabrufen von Zielbefehlen vor der Ausführung eines Verzweigungsbefehls sorgt.
  • Fig. 3 stellt die Programmverwaltung im Speicher 13 dar, die für das Einfrieren von Cachebefehlen sorgt.
  • Fig. 4 stellt den Cachebefehlsinhalt während der Programmausführung dar, wobei Befehle eingefroren sind.
  • Fig. 5 stellt eine Rechnerarchitektur zur Implementierung des Vorabrufens von Cachebefehlen gemäß des in den Fig. 2 und 3 dargestellten Befehlsflusses dar.
  • BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGSFORM
  • Fig. 1 zeigt eine Befehlsverarbeitungseinheit (CPU), die vielen Rechner- Verarbeitungssystem-Architekturen gemeinsam ist. Die Befehlscache-Schnittstelle zwischen der Verarbeitungseinheit 11 und dem Programmspeicher 13 ist zwar nur als einzelnes Betriebssystem dargestellt, es ist jedoch wohlbekannt, daß sie auch, für parallele Betriebssysteme eingesetzt werden kann. Derartige Befehlscache-Anordnungen sind in der obengenannten Referenz beschrieben. Insbesondere ist davon auszugehen, daß die Vorabrufeinheit in dem Befehlscache enthalten ist, wie es in Fig. 1 symbolisch dargestellt ist.
  • Der Befehlscache 12 erlaubt es der Verarbeitungseinheit 11, eine Anzahl von Befehlen zur Ausführung während eines verfügbaren Buszyklus oder einer ähnlichen kurzfristigen Busoperation des Rechnerbusses 10 vorabzurufen. Die vorabgerufenen Befehle werden im Befehlscache 12 gespeichert, so daß der Bus daraufhin für andere Aufgaben genutzt werden kann, die von der Verarbeitungseinheit 11 durchgeführt werden müssen. Durch die Entlastung des Busses 10 von Befehlsabrufoperationen kann die Gesamtverarbeitungsgeschwindigkeit verbessert werden, indem der Bus 10 für andere Aufgaben für die Verarbeitungseinheit 11 verfügbar gemacht wird.
  • Während einer typischen Systemoperation kann die Verarbeitungseinheit 11 eine oder mehrere Befehlszeilen aus dem Speicher 13 abrufen. Die Befehlszeilen enthalten wiederum eine Vielzahl von Worten, die jeweils einem einzelnen Teilbefehl für die Befehlszeile entsprechen können.
  • Die abgerufenen Befehle im Cache 12 werden dann von der Verarbeitungseinheit 11 sequentiell verarbeitet. Da die meisten Programme als Folge von Befehlsblöcken geschrieben sind und über einen einzigen Eingangs- und Ausgangspunkt verfügen, führt das sequentielle Vorabrufen der Befehle oft dazu, daß die für die Ausführung benötigten Befehlsfolge im Cache 12 zur Verfügung stehen. Insbesondere ist ein solches sequentielles Vorabrufen vorteilhaft, wenn das Aufrufen von Befehlen im mer von einem Befehl zum nächsten erfolgt.
  • Wenn die Verarbeitungseinheit während der Ausführung der Befehle auf das letzte Wort einer bestimmten Befehlszeile verweist, überprüft die Verarbeitungseinheit 11 als Vorbereitung für die Ausführung dieses Befehls die nächstfolgende Zeile, um zu ermitteln, ob sie sich in dem Befehlscache 12 befindet oder nicht. Wenn sie sich nicht im Befehlscache 12 befindet, wird ein Cache-Vorabruf für die Befehlszeile ausgegeben, die auf die Zeile mit dem letzten auszuführenden Wort folgt.
  • Bestimmte bedingte Verzweigungsbefehle verändern die Ausführfolge der Verarbeitungseinheit 11. Im Fall einer "Wenn"-Anweisung oder einer anderen Art von Verzweigungsbefehl ist der nächste erforderliche Befehl wahrscheinlich ein Befehl, der vorher abgerufen worden sein kann und seitdem im Befehlscache 12 ausgesondert worden ist. Das Abrufen eines derartigen ausgesonderten Befehls führt natürlich zu einem Cache-Fehltreffer.
  • Bei einem Ausführungsbeispiel der vorliegenden Erfindung wird der Befehlscache 12 nicht immer den nächsten Befehl aus dem Speicher 13 vorabrufen, wenn ein Verzweigungsbefehl vorabgerufen wurde. Wenn es sich jedoch bei dem Befehl um einen unbedingten Verzweigungsbefehl handelt, kann im Befehlscache 12 ein Vorabruf bit für diesen unbedingten Verzweigungsbefehl gesetzt werden, wodurch der nächstfolgende Befehl während des nächsten verfügbaren Buszyklus vorabgerufen werden kann.
  • Wenn ein bedingter Verzweigungsbefehl einmal ausgeführt wird, kann ein Buszyklus für Bus 10 erforderlich sein, um den bestimmten Zielbefehl abzurufen. Es erfolgt also kein Vorabruf im Befehlscache 12, bis der Verzweigungsbefehl ausgeführt worden ist.
  • Dieses spezielle Verfahren zum Verhindern des Vorabrufens, wenn ein bedingter Verzweigungbefehls zur Ausführung vorgegeben ist, verhindert den Cache- Fehltreffer, der auftreten kann, wenn ein sequentieller Befehl aus dem Programmspeicher 13 abgerufen werden sollte, bevor ein bedingter Verzweigungsbefehl ausgeführt wurde, wenn letzterer die Steuerung auf einen Zielbefehl übertragen würde, der nicht der nächste sequentielle Befehl ist.
  • Das oben beschriebene bedingte Vorabrufen kann implementiert werden, indem das Programmverhalten in Hinblick auf das Auftreten von Verzweigungsbefehlen und anderen Ereignissen analysiert wird, die die Ausführung von nicht-sequentiellen Befehlen erfordern. Durch die Vorwegnahme, daß zukünftige Verweise der Verarbeitungseinheit 11 auf Befehle des gespeicherten Programms des Speichers 13 eventuell nicht auf sequentielle Befehle erfolgen, ist es möglich, der Verschmutzung des Befehlscache 12 durch nichtgenutzte Befehle vorzubeugen, ohne irgendein zusätzliches Risiko eines Cache-Fehltreffers durch die Unterbrechung des sequentiellen Vorabrufens von Programmbefehlen einzugehen.
  • Bei der Implementierung des oben beschriebenen Verfahrens kann ein bedingter Verzweigungsbefehl auftreten, der die Programmausführungsfolge auf eine andere Zeile eventuell vor denjenigen verschiebt, die ausgeführt werden. Um ein gedankenloses Vorabrufen von Befehlen zu vermeiden, die unmittelbar auf einen derartigen bedingten Verzweigungsbefehl folgen, wird der Verzweigungsbefehl untersucht, und falls es sich um eine bedingte Verzweigung handelt, wird das Cache-Vorabrufbit so gesetzt, daß das Vorabrufen von nachfolgenden Verzweigungsbefehlen verhindert wird, bis der Verzweigungsbefehl tatsächlich ausgeführt wurde. Wenn der Verzweigungsbefehl einmal ausgeführt ist und die Verarbeitungseinheit 11 den Zielbefehl vom Speicher 13 richtig identifiziert und auf ihn verweist, kann das Vorabrufen wieder sequentiell beginnen, bis weitere Verzweigungsbefehle angetroffen werden.
  • Das obige Verfahren zur Entscheidungsfindung, wann auf sequentieller Basis in einem Programmspeicher 13 enthaltene Befehle vorabgerufen werden, funktioniert gut innerhalb von Befehlsblöcken, die das Programm enthalten. Indem der Befehlscache erkennt, wann Programme nicht sequentiell auszuführen sind, kann er einen Fehltreffer und das unnötige Vorabrufen von nicht benötigten Befehlen vermeiden. Dadurch werden unnötige Buszyklen eingespart und die Verschmutzung des Befehlscache 12 mit unbenutzten Befehlen vermieden.
  • Die Steuerung des Vorabrufens kann auch erfolgen, indem explizite Vorabruf-Steuerbefehle an verschiedenen Punkten in das Programms eingefügt werden, durch die dem Cache und dem Rechnerprozessor eine auszuführende Befehlsadresse mitgeteilt wird, die nicht sequentiell ist.
  • Fig. 2 zeigt die Verwaltung einer Reihe von Programmbefehlen im Speicher 13, die Teil eines Blockes beginnend mit der Befehlsadresse 001 sind. An der Adresse 010 befindet sich ein Verzweigungsbefehl, der ein bedingtes Ziel angibt, das der Beginn des durch die Adresse 001 bezeichneten Befehlsblocks ist. Wird die Bedingung zu einem anderen Ergebnis führt, so ist der nächste Befehl die Adresse 011. Daher werden die Befehlszeilen an den Adressen 001 bis 009 immer sequentiell ausgeführt.
  • In dem mit der Adresse 001 beginnenden Block ist auch ein expliziter Vorabrufbefehl an der Adresse 009 dargestellt. Der explizite Vorabrufbefehl gibt, wenn er vom Prozessor ausgeführt wird, dem Cache den an der Adresse 001 befindlichen Befehl an, bevor der Verzweigungsbefehl durch den Prozessor 11 ausgeführt wird. Durch Vorabrufen der Adresse 001 wird somit der Zielbefehl für den Verzweigungsbefehl an der Adresse 010 im Cache verfügbar und ein Fehltreffer vor der Ausführung des Verzweigungsbefehls wird vermieden. Das sequentielle Vorabrufen kann im nächsten verfügbaren Buszyklus von der Adresse 001 fortfahren, wodurch ein kontinuierliches sequentielles Vorabrufen der Befehle im Speicher 13 ermöglicht wird.
  • Die Verwendung des expliziten Vorabrufbefehls ist vorteilhaft an Schleifenenden, bei denen der Programmzähler für den Prozessor 11 normalerweise zum Beginn der Schleife zurückspringen würde. Verzweigungsbefehle am Ende einer Schleife sind bedingt, und obwohl die Ausführung eines Programmbefehls schließlich die Schleife verlassen wird, ist es eher wahrscheinlich, daß die Ausführungsfolge der Programmbefehle innerhalb der Schleife bleibt. Offensichtlich tritt, wenn der Verzweigungsbefehl 010 einmal erfüllt wurde und der Befehl 011 ausgeführt werden soll, ein Fehltreffer im Cache auf, wenn der Prozessor auf den Befehl 011 verweist. Die Fehltreffer-Strafzeit wird unter dieser Bedingung jedoch klar durch das Vorabrufen des wahrscheinlicheren Befehls bei 001 am Beginn der Schleife aufgewogen.
  • Unterroutinen im Programm des Speichers 13 bewirken ebenfalls eine Änderung der Ausführungsfolge von einem sequentiellen Befehl zu einem versetzten Befehl. Der explizite Vorabrufbefehl kann verwendet werden, wenn Divergenz-Befehle, zum Beispiel "Wenn"-Anweisungen, angetroffen werden. Ein Vorabrufbefehl kann auch bedingten Befehlen vorangehen, um vorteilhafterweise einen nicht-sequentiellen Zielbefehl vorabzurufen.
  • Bei der Auswahl eines Platzes eines vorabgerufenen Befehls hinsichtlich eines Verzweigungsbefehls, um ausreichend Zeit für das Vorabrufen des erforderlichen Zielbefehls vor der Ausführung des Verzweigungsbefehls zu erhalten, sollte sich der Vorabrufbefehl ein paar Befehle vom Verzweigungsbefehl entfernt befinden, so daß viel Zeit für das Vorabrufen zur Verfügung steht. In Fig. 2 befindet er sich nur eine Adresse davor. Manchmal ist ein Abstand größer als Eins vorteilhaft.
  • Es ist auch möglich, mehr als einen Vorabrufbefehl vorzusehen, der ein zweites Ziel von einem Verzweigungsbefehl angibt. Dadurch würden dann vorabgerufene Ziele geschaffen, die verfügbar wären, sobald der Verzweigungsbefehl einmal ausgeführt ist.
  • Die übermäßige Verwendung von Vorabrufbefehlen für alle Verzweigungsbefehle ist zu vermeiden. Es ist klar, daß durch das Einfügen von Vorabrufbefehlen das Verzweigungsziel vor der Ausführung vorabgerufen wird, unabhängig davon, ob dieses Verzweigungsziel benötigt wird oder nicht. Dadurch entsteht ein zusätzlicher Buszyklusaufwand zum Vorabrufen eines Befehls, der eventuell letzten Endes nicht verwendet wird.
  • Es ist offensichtlich, daß der fachkundige Programmierer selektiv explizite Cache-Vorabrufbefehle für diejenigen Verzweigungsbefehle einfügen kann, die eine größere Wahrscheinlichkeit eines Cache-Fehltreffers für ihre Verzweigungsziele auf weisen. Hierzu würden Verzweigungen zählen, die ein Ziel mit einem absoluten Versatz vom Verzweigungsbefehl ausweisen, der größer ist als die Cachegröße. Durch die Verwendung von Vorabrufbefehlen für diese Bedingungen wird die Wahrscheinlichkeit eines Cache-Fehltreffers reduziert, ohne den Bus 10 mit unnötigen Befehlsvorabrufen zu überlasten. Wenn das vorstehende Prinzip befolgt wird, daß in dem Fall, daß ein Verzweigungsbefehl die Übertragung der Programmausführung auf einen Befehl erfordert, dessen Versatz bezüglich des Verzweigungsbefehls größer als die Cachegröße ist, ist die Wahrscheinlichkeit, daß sich dieses Verzweigungsziel im Cache befindet, sehr gering, es sei denn, der Befehl wird explizit abgerufen.
  • Die obigen Verfahren zur Schaffung eines expliziten Cache-Vorabrufs können durch die Verwendung von Hardware-Decodierlogik im Befehlscache 12 realisiert werden. Durch Decodierung des Operationscodes jedes vorabgerufenen Befehls ist es möglich, das Vorliegen eines Verzweigungsbefehls zu bestimmen. Wenn die Opera tionscode-Erkennung angibt, daß der Befehl Teil eines unbedingten Verzweigungsbefehls ist, wird der sequentielle Cache-Vorabruf gestoppt und ein Vorabruf des von dem Verzweigungsbefehl angegebenen Verzweigungsziels gestartet. Wenn der Operationscode Teil eines bedingten Verzweigungsbefehls ist, werden Befehle von unterschiedlichen Verzweigungszielen entsprechend einer vorgegebenen Wahrscheinlichkeit der Ausführung dieser Verzweigungen vorabgerufen.
  • Das vorherige Decodieren von in den Befehlscache vorabgerufenen Befehlen unterscheidet sich von herkömmlichen Verfahren zum Vorabrufen von Verzweigungsbefehlen von einem gerade decodierten und vom Prozessor ausgeführten Verzweigungsbefehl. Nach dem Stand der Technik wäre jegliche Latenzzeit zwischen der Erkennung eines Verzweigungsoperationscodes und der tatsächlichen Verwendung des Verzweigungsziels sehr kurz. Die vorliegende Lösung schlägt jedoch vor, Befehle im Befehlscache vor der Ausführung zu untersuchen, indem Verzweigungsziele auf der Basis der Operationscode-Decodierung vorabgerufen werden.
  • Zu den anderen Verfahren, die eine vorherige Analyse des im Programmspeicher 13 gespeicherten Programms nutzen, zählt das selektive Einfrieren des Inhalts des Befehlscache 12. Durch die Verwendung des obigen sequentiellen Vorabrufens als normalen Vorabrufmodus ist es möglich, Elemente eines Befehlsblocks im Befehlscache 12 einzufrieren, die wahrscheinlich erneut verwendet werden. Statt auf diese Befehle, die einmal verwendet und dann ausgesondert wurden, explizit zurückzuverweisen, werden sie im Befehlscache aufrechterhalten und können nur gelesen und nicht ersetzt werden, während das Programm innerhalb des Blockes ausgeführt wird.
  • Das selektive Einfrieren von Cachezeilen ist in Situationen nützlich, in denen als Cache-Ersetzungsverfahren LRU (Least Recently Used) genutzt wird. Hierbei wird der letzte im Cache zu verwendende Befehl durch den nächsten vorabgerufenen Befehl ersetzt. Bei sequentieller Ausführung eines Befehlsblocks mit einer Schleife, die größer ist als die Cachegröße, werden die Schleifenbefehle dadurch kontinuierlich und sequentiell in den Cache abgerufen, nur einmal durch Prozessor verwiesen und dann sofort ersetzt, bevor erneut auf sie verwiesen wird. Dies fördert einen ineffizientes Vorabrufen und erfordert Buszykluszeit durch ständiges Vorabrufen von Befehlen, die nur ein paar Ausführzyklen vorher wieder verwendet wurden.
  • In Fig. 3 ist eine Folge von Programmbefehlen dargestellt, die mit der Adresse 000 beginnt und bis zur Adresse 100 geht und den Vorgang des Einfrierens von häufig verwendeten Befehlen veranschaulicht. In dem Block mit Programmbefehlen aus Fig. 3 ist ein Verzweigungsbefehl an der Adresse 010 enthalten. Durch das Einigen eines Einfrierbits in dem Befehl 1, der ein Zielbefehl für den Verzweigungsbefehl bei der Adresse 010 sein kann, ist es möglich, diesen Befehl im Cache zu halten und zu verhindern, daß er ersetzt wird, bis das Programm die Schleife zu einem Befehl mit höherer Nummer verläßt. An der Adresse 011 kann sich ein expliziter Ausfrierbefehl befinden, der es nach der Beendigung der Schleife innerhalb des Blocks, der durch die Befehle an den Adressen 001 bis 010 dargestellt wird, ermöglicht, diese eingefrorenen Befehle in nachfolgenden Vorabrufzyklen auszusondern.
  • Fig. 4 zeigt, wie Befehle an den Adressen 001, 002 und 003 in einem Bereich des Cache eingefroren werden können, wodurch nur die Zeilen 4, 5 und 6 des Cache vorabgerufen werden können. Auf diese Weise werden sie in den Cache geladen und eingefroren, wenn das sequentielle Vorabrufen von Befehlen von den Adressen 001 bis 003 beginnt. Befehle an den Adressen 004 bis 009 werden - vorzugsweise zu zweit - während aufeinanderfolgender verfügbarer Buszyklen vorabgerufen und durch den Prozessor ausgeführt. Zum Zeitpunkt des Vorabrufens des Verzweigungsbefehls an der Adresse 010, sind die Befehle an den Adressen 001, 002 und 003 in den ersten drei Zeilenbereichen des Cache eingefroren. Somit ist ein Vorabrufen der Zielbefehle nicht notwendig, da 001 ein Ziel des Verzweigungsbefehls an der Adresse 010 ist. Außerdem ist kein Vorabrufen erforderlich, bis der Befehl 003 ausgeführt worden ist, wobei die verbleibenden sequentiellen Befehle an den Adressen 004 bis 010 in den nicht ausgefrorenen Bereich des Cache eingefügt werden können. Wenn der Prozessor einmal aufgrund der Ausführung des Verzweigungsbefehls auf den Ausfrierbefehl 011 verwiesen hat und dadurch darauf hingewiesen wird, daß die Schleife vollständig ausgeführt wurde, ermöglicht es der Ausfrierbefehl, daß alle sechs (6) Plätze im Befehlscache bei dem sequentiellen Vorabrufen weiterer Befehle verwendet werden können.
  • Bei der Auswahl der Zeilen eines Cache, die eingefroren werden sollten, sind die folgenden Kriterien zu beachten.
  • Die Eintrittszeile eines grundlegenden Blocks hat die höchste Priorität beim Einfrieren im Cache. Wenn der Befehlsblock eine Schleife enthält, die als Ziel die Eintrittszeile eines grundlegenden Blocks aufweist (eine häufig auftretende Situation), ist für die Ausführung der Schleife kein Verzweigungsziel-Vorabruf erforderlich, wenn die Eintrittszeile im Cache eingefroren ist. Durch Einfrieren der ersten oder der ersten beiden Eintrittszeilen eines Befehlsblocks ist offensichtlich, daß der Befehlscache bereits den gewünschten Befehl enthält, wenn der Prozessor auf das Ziel, d. h. die Eintrittszeile, verweist. Dadurch wird nicht nur die Busauslastung reduziert, sondern auch ein expliziter Cachebefehl zum Vorabrufen des Verzweigungsziels oder jegliche zusätzliche Hardware-Decodierung zum Durchführen einer Operationscode-Untersuchung überflüssig gemacht.
  • Der Cache sollte selektiv auf eine solche Weise eingefroren werden, daß die eingefrorenen Cachezeilen und der implizite Cachevorabruf des nicht eingefrorenen Bereichs des Cache gleichmäßig auf die eine Schleife bildenden Befehle verteilt sind. Die Größe des eingefrorenen Bereichs des Befehlscache sollte so gering wie möglich sein, um sicherzustellen, daß der freie, nicht eingefrorene Bereich groß genug ist, um die restlichen Befehle einer Schleife zu handhaben.
  • Fig. 5 zeigt die Architektur zur Implementierung eines Befehlscache mit einem Bereich, der eingefroren, d. h. nur gelesen werden kann, und einem Bereich, der frei beschrieben und gelesen werden kann. Der Prozessor 11 weist hier einen Programmzähler 18 auf, der die Adresse des nächsten auszuführenden Befehls angibt. Eine Vorabrufeinheit 19, die selbst ein Prozessor ist, überwacht das Vorabrufen von Befehlszeilen aus dem Speicher 13 auf der Grundlage des Programmzählers 18 und der oben beschriebenen Vorabrufverfahren.
  • Angenommen, der Eintrittsbefehl für einen Befehlsblock wurde vom Programmzähler 18 zum ersten Mal identifiziert, d. h. es wurde noch nicht in eine Schleife eingetreten, dann bestimmt die Vorabrufeinheit 19, ob die Zeile vorher vorabgerufen wurde oder nicht und entweder im Vorabrufpufferspeicher 21, dem aktuellen Pufferspeicher 20(b) oder im Befehlscache 20(a) zur Verfügung steht. Die Vorabrufeinheit 19 erzeugt eine Zeilenanforderung in Reaktion auf den Programmzähler 18, um sicherzustellen, daß der nächste erforderliche Befehl für den Prozessor 11 zur Verfügung steht. Die Vorabrufeinheit überprüft erst alle Puffereinheiten, d. h. den Vorabruf puffer P 21, den aktuellen Puffer C 20(b) und den Befehlscache 20(a), um zu ermitteln, ob sich eine Zeile mit dem gewünschten Befehl in einer dieser Einheiten befindet. Wenn ein Cache-Treffer in einer der Puffereinheiten vorliegt, d. h. wenn der erforderliche Befehl in diesen Einheiten vorhanden ist, ist kein Vorabruf erforderlich und der Befehl wird nicht vom Speichers 13 angefordert.
  • Falls ein Cache-Fehltreffer auftritt, wird im nächsten verfügbaren Zeitkanal für Bus 25 eine Vorabrufanforderung an den Hauptspeicher gesendet. Wenn die vorabgerufene Zeile eintrifft, normalerweise ist/sind dies die nächste sequentielle Zeile oder Zeilenpaare im Zweizeilen-Vorabrufmodus, wird sie in den Vorabrufpuffer P 21 eingefügt. Die neuen Zeilen ersetzen die ältesten verwendeten Befehlszeilen gemäß den LRU-Kriterien.
  • Wenn die Verarbeitungseinheit die Anforderung für den nächsten verfügbaren Befehl ausgibt, der vom Programmzähler 18 bestimmt wurde, werden alle Puffer nach dem erforderlichen Befehl durchsucht. Wird der erforderliche Befehl im Vorabruf puffer gefunden, befindet sich die verwiesene Zeile im aktuellen Puffer. Wenn die verwiesene Zeile im aktuellen Puffer gefunden wird, bleibt der gesamte Inhalt der Puffer unverändert. Wenn der erforderliche Befehl im Befehlscache 20(a) gefunden wird, bleibt der Inhalt aller Puffer unverändert.
  • Der Befehlscache 20(a) dient als ein Bereich des Befehlscache, der eingefroren werden kann. Der freie Bereich des Befehlscache ist der mit 20(b) bezeichnete aktuelle Puffer C.
  • Das in Fig. 5 dargestellte System ruft Befehle in Abhängigkeit vom Zähler 18 aus dem Speicher 13 vorab ab. Wenn durch den Prozessor 11 ein Treffer im Vorabrufpuffer P 21 erfolgt, wird die verwiesene Zeile in den aktuellen Puffer übertragen. Dies setzt sich fort, bis der aktuelle Puffer voll ist. Ist der aktuelle Puffer 20(b) voll, tritt die LRU-Regelung in Kraft, und der älteste verwiesene Befehl wird in den Befehlscache 20(a) übertragen, wenn der Befehlscache nicht eingefroren ist. Ist der Befehlscache 20(a) eingefroren, so wird jegliche vom aktuellen Puffer C 20(b) ersetzte Zeile nicht in den Befehlscache 20(a) eingefügt. Wenn einmal ein Einfrierbefehl durch den Prozessor 11 ausgeführt wurde, ist der Befehlscache 20(a) also eingefroren und die vorher abgerufenen Befehle werden dort zurückgehalten. Es ist vorteilhaft, wenn es sich hierbei um die ersten Zeilen einer Schleife eines Befehlsblocks oder um einen anderen derartigen Zielbefehl handelt. Der aktuelle Puffer C 20(b) kann weitere vorabgerufene Befehle über den Vorabrufpuffer P 21 empfangen.
  • Es wurden somit mehrere Ausführungsbeispiele eines Gesamtsystems zur Steuerung des Vorabrufens von Befehlen aus einem Befehlsspeicher 13 beschrieben. Diese Cache-Verwaltungsverfahren reduzieren die erforderliche Buszugriffzeit für das Vorabrufen von Befehlen und gleichzeitig die Gesamtzahl der Cache-Fehltreffer. Dem Fachkundigen werden noch weitere Ausführungsbeispiele der Erfindung ersichtlich sein, die in den folgenden Patentansprüchen genauer dargelegt sind.

Claims (8)

1. Datenverarbeitungssystem mit einer Verarbeitungseinheit zum Ausführen eines gespeicherten Programms, das eine Vielzahl von Befehlen umfaßt, die sequentiell verbundene Befehlsblöcke bilden, wobei einige der genannten Befehlsblöcke Verzweigungsbefehle zum Übertragung der Ausführungsfolge für den genannten Befehl auf einen nicht-sequentiellen Befehl an anderer Stelle enthalten; wobei das genannte System folgendes umfaßt:
einen Befehlsspeicher zum Speichern des genannten gespeicherten Programms;
einen Befehlscache zum Speichern einer kleinen Anzahl der genannten Befehle von einem der genannten Blöcke und
eine Vorabrufeinheit, die von dem genannten Befehlsspeicher versorgt wird und selbst den genannten Befehlscache versorgt, um die genannte kleine Anzahl von Befehlen vorabzurufen,
dadurch gekennzeichnet, daß die genannte Vorabrufeinheit Analysemittel zum Analysieren eines expliziten Befehls unter den vorabgerufenen, aber nicht ausgeführten Befehlen besitzt, der sich vor einem bedingten Verzweigungsbefehl befindet, woraufhin das Vorabrufen von einem oder mehreren nächsten sequentiellen Befehlen ermöglicht wird, die auf den genannten bedingten Verzweigungsbefehl folgen, und das Vorabrufen in dem Fall, daß die Verzweigungsbedingungen des bedingten Verzweigungsbefehls erfüllt werden, vom/von den nächsten sequentiellen Befehl(en) umgeleitet und sonst die genannten vorabgerufenen nächsten sequentiellen Befehle ausgewählt werden.
2. System nach Anspruch 1, wobei das Programm im Befehlsspeicher voranalysiert wird und die genannte Vorabrufeinheit Befehlsblöcke im genannten Cache einfriert, für die während der Voranalyse festgestellt wurde, daß sie wahrscheinlich wieder verwendet werden.
3. System nach Anspruch 2, wobei die genannten eingefrorenen Befehle Schleifenbefehle sind.
4. System aus Anspruch 1, wobei das genannte Umleiten von dem genannten expliziten Befehl um eine Anzahl von Befehlen versetzt ist, die größer als die genannte Cache-Speicherkapazität ist.
5. System aus Anspruch 1, wobei der genannte explizite Befehl, der einen expliziten Vorabruf steuert, nur in einer Gruppe von Befehlen auftritt, die eine Schleife innerhalb eines Blocks bilden, wobei die genannte Schleife mehr Befehle als die Cachegröße enthält.
6. System nach einem der Ansprüche 1 bis 5, wobei das genannte Vorabrufen unbedingt blockweise erfolgt, wobei ein derartiger Block eine Vielzahl von einzelnen Befehlen enthält.
7. System nach Anspruch 2 oder 3, wobei in dem genannten Programm dem genannten Verzweigungsbefehl in einer sequentiellen Reihenfolge ein Ausfrierbefehl folgt.
8. System nach Anspruch 2 oder 3, wobei eine bestimmte Start-Befehlsteilfolge einer Schleifenfolge selbst signalisiert, eingefroren werden zu können.
DE69129872T 1990-03-27 1991-03-25 Datenverarbeitungssystem mit einem leistungsverbessernden Befehlscachespeicher Expired - Lifetime DE69129872T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US50061290A 1990-03-27 1990-03-27

Publications (2)

Publication Number Publication Date
DE69129872D1 DE69129872D1 (de) 1998-09-03
DE69129872T2 true DE69129872T2 (de) 1999-03-04

Family

ID=23990184

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69129872T Expired - Lifetime DE69129872T2 (de) 1990-03-27 1991-03-25 Datenverarbeitungssystem mit einem leistungsverbessernden Befehlscachespeicher

Country Status (4)

Country Link
US (1) US5701435A (de)
EP (1) EP0449369B1 (de)
JP (1) JP3095802B2 (de)
DE (1) DE69129872T2 (de)

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2247546B (en) * 1990-08-31 1995-03-01 Sun Microsystems Inc Method and apparatus for predictive caching
US5226138A (en) * 1990-11-27 1993-07-06 Sun Microsystems, Inc. Method for selectively transferring data instructions to a cache memory
US5774164A (en) * 1994-10-27 1998-06-30 Dai Nippon Printing Co., Ltd. Thermal transfer image-receiving sheet
JPH10124315A (ja) * 1996-10-18 1998-05-15 Hitachi Ltd 分岐処理方法およびそのための情報処理装置
JPH10177482A (ja) * 1996-10-31 1998-06-30 Texas Instr Inc <Ti> マイクロプロセッサおよび動作方法
US5958045A (en) * 1997-04-02 1999-09-28 Advanced Micro Devices, Inc. Start of access instruction configured to indicate an access mode for fetching memory operands in a microprocessor
US6073230A (en) * 1997-06-11 2000-06-06 Advanced Micro Devices, Inc. Instruction fetch unit configured to provide sequential way prediction for sequential instruction fetches
DE19747275A1 (de) * 1997-10-25 1999-04-29 Philips Patentverwaltung Mobilfunkgerät mit einem Steuersignalgenerator
US6016533A (en) * 1997-12-16 2000-01-18 Advanced Micro Devices, Inc. Way prediction logic for cache array
US6393527B1 (en) * 1998-12-18 2002-05-21 Ati International Srl Prefetch buffer with continue detect
US7546444B1 (en) 1999-09-01 2009-06-09 Intel Corporation Register set used in multithreaded parallel processor architecture
US6748496B1 (en) * 2000-04-18 2004-06-08 Ati International Srl Method and apparatus for providing cacheable data to a peripheral device
US7681018B2 (en) 2000-08-31 2010-03-16 Intel Corporation Method and apparatus for providing large register address space while maximizing cycletime performance for a multi-threaded register file set
ATE521032T1 (de) 2001-01-30 2011-09-15 Silicon Hive Bv Computerbefehl mit befehlsabruf-steuerbit
US7487505B2 (en) 2001-08-27 2009-02-03 Intel Corporation Multithreaded microprocessor with register allocation based on number of active threads
US7225281B2 (en) 2001-08-27 2007-05-29 Intel Corporation Multiprocessor infrastructure for providing flexible bandwidth allocation via multiple instantiations of separate data buses, control buses and support mechanisms
US7216204B2 (en) 2001-08-27 2007-05-08 Intel Corporation Mechanism for providing early coherency detection to enable high performance memory updates in a latency sensitive multithreaded environment
US6868476B2 (en) 2001-08-27 2005-03-15 Intel Corporation Software controlled content addressable memory in a general purpose execution datapath
US6925535B2 (en) * 2001-08-29 2005-08-02 Hewlett-Packard Development Company, L.P. Program control flow conditioned on presence of requested data in cache memory
US7610451B2 (en) 2002-01-25 2009-10-27 Intel Corporation Data transfer mechanism using unidirectional pull bus and push bus
US7337275B2 (en) 2002-08-13 2008-02-26 Intel Corporation Free list and ring data structure management
US6941438B2 (en) 2003-01-10 2005-09-06 Intel Corporation Memory interleaving
US7055000B1 (en) 2003-08-29 2006-05-30 Western Digital Technologies, Inc. Disk drive employing enhanced instruction cache management to facilitate non-sequential immediate operands
US7117290B2 (en) * 2003-09-03 2006-10-03 Advanced Micro Devices, Inc. MicroTLB and micro tag for reducing power in a processor
US20050050278A1 (en) * 2003-09-03 2005-03-03 Advanced Micro Devices, Inc. Low power way-predicted cache
JP4837247B2 (ja) * 2003-09-24 2011-12-14 パナソニック株式会社 プロセッサ
US7917731B2 (en) * 2006-08-02 2011-03-29 Qualcomm Incorporated Method and apparatus for prefetching non-sequential instruction addresses
EP1901169A1 (de) * 2006-09-14 2008-03-19 SiTel Semiconductor B.V. Anordnung mit Befehlscache
US9311085B2 (en) * 2007-12-30 2016-04-12 Intel Corporation Compiler assisted low power and high performance load handling based on load types
US8312442B2 (en) * 2008-12-10 2012-11-13 Oracle America, Inc. Method and system for interprocedural prefetching
JP5444889B2 (ja) * 2009-06-30 2014-03-19 富士通株式会社 演算処理装置および演算処理装置の制御方法
US9557999B2 (en) 2012-06-15 2017-01-31 Apple Inc. Loop buffer learning
US9753733B2 (en) 2012-06-15 2017-09-05 Apple Inc. Methods, apparatus, and processors for packing multiple iterations of loop in a loop buffer
US9471322B2 (en) 2014-02-12 2016-10-18 Apple Inc. Early loop buffer mode entry upon number of mispredictions of exit condition exceeding threshold
US9772824B2 (en) * 2015-03-25 2017-09-26 International Business Machines Corporation Program structure-based blocking
US11650821B1 (en) * 2021-05-19 2023-05-16 Xilinx, Inc. Branch stall elimination in pipelined microprocessors

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3466613A (en) * 1967-01-13 1969-09-09 Ibm Instruction buffering system
US4157587A (en) * 1977-12-22 1979-06-05 Honeywell Information Systems Inc. High speed buffer memory system with word prefetch
US4189770A (en) * 1978-03-16 1980-02-19 International Business Machines Corporation Cache bypass control for operand fetches
US4437149A (en) * 1980-11-17 1984-03-13 International Business Machines Corporation Cache memory architecture with decoding
US4500954A (en) * 1981-10-15 1985-02-19 International Business Machines Corporation Cache bypass system with post-block transfer directory examinations for updating cache and/or maintaining bypass
US4594659A (en) * 1982-10-13 1986-06-10 Honeywell Information Systems Inc. Method and apparatus for prefetching instructions for a central execution pipeline unit
US4626988A (en) * 1983-03-07 1986-12-02 International Business Machines Corporation Instruction fetch look-aside buffer with loop mode control
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
US4942518A (en) * 1984-06-20 1990-07-17 Convex Computer Corporation Cache store bypass for computer
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
US4761731A (en) * 1985-08-14 1988-08-02 Control Data Corporation Look-ahead instruction fetch control for a cache memory
US4802085A (en) * 1987-01-22 1989-01-31 National Semiconductor Corporation Apparatus and method for detecting and handling memory-mapped I/O by a pipelined microprocessor
US4851993A (en) * 1987-04-20 1989-07-25 Amdahl Corporation Cache move-in bypass
US4860197A (en) * 1987-07-31 1989-08-22 Prime Computer, Inc. Branch cache system with instruction boundary determination independent of parcel boundary
US4894772A (en) * 1987-07-31 1990-01-16 Prime Computer, Inc. Method and apparatus for qualifying branch cache entries
US4943908A (en) * 1987-12-02 1990-07-24 International Business Machines Corporation Multiple branch analyzer for prefetching cache lines
JP2690921B2 (ja) * 1987-12-25 1997-12-17 株式会社日立製作所 情報処理装置
US4876642A (en) * 1988-01-19 1989-10-24 Gibson Glenn A Rules and apparatus for a loop capturing code buffer that prefetches instructions
US5025366A (en) * 1988-01-20 1991-06-18 Advanced Micro Devices, Inc. Organization of an integrated cache unit for flexible usage in cache system design
EP0402524B1 (de) * 1988-11-25 1996-10-02 Nec Corporation Mikrorechner, geeignet zur Schnellverarbeitung eines Verzweigungsbefehlskodes

Also Published As

Publication number Publication date
JPH04225428A (ja) 1992-08-14
EP0449369B1 (de) 1998-07-29
JP3095802B2 (ja) 2000-10-10
US5701435A (en) 1997-12-23
EP0449369A3 (en) 1992-03-18
DE69129872D1 (de) 1998-09-03
EP0449369A2 (de) 1991-10-02

Similar Documents

Publication Publication Date Title
DE69129872T2 (de) Datenverarbeitungssystem mit einem leistungsverbessernden Befehlscachespeicher
DE4225228C2 (de) Vorabrufpuffer und einen derartigen Vorabrufpuffer verwendendes Informationsverarbeitungssystem
DE69224084T2 (de) Rechneranordnung mit Mehrfachpufferdatencachespeicher und Verfahren dafür
DE4227345C2 (de) Verfahren zur Ablaufsteuerung von Prozessen in einem Mehrprozessor-Computersystem
DE69816044T2 (de) Zeitstrafen-basierende cache-speicherungs- und ersetzungs-techniken
DE69023568T2 (de) Cache-Speicheranordnung.
DE69031991T2 (de) Verfahren und Gerät zur Beschleunigung von Verzweigungsbefehlen
DE10084556B4 (de) Optimierte Ausführung von statisch sehr wahrscheinlich vorhergesagten Verzweigungsbefehlen
DE69228380T2 (de) Verfahren zur erhöhung der datenverarbeitungsgeschwindigkeit in einem rechnersystem
DE69534148T2 (de) Rechnersystem zur Ausführung von Verzweigungsbefehlen
DE3751474T2 (de) Verzweigungsstrom-Koprozessor.
DE69702350T2 (de) Verzweigungsvorhersageschema für cachespeicherzeile, das von sätzen eines set-assoziativen cachespeichers gemeinsam verwendet wird
DE19527031C2 (de) Verzweigungsprozessor für ein Datenverarbeitungssystem und Verfahren zum Betreiben eines Datenverarbeitungssystems
DE3889578T2 (de) Vorrichtung zur Sicherung und Rückspeicherung einer Registerinformation.
DE69128741T2 (de) Mehrstufiger Befehlscachespeicher und Verwendungsverfahren dafür
DE4330751C2 (de) Verfahren zum Liefern von Daten von einem Hauptspeicher über ein Speicherpuffersystem zu einem Datenverarbeitungssystem
DE60308201T2 (de) Datenverarbeitungssystem mit externen und internen anweisungssätzen
DE3588182T2 (de) Vorausschauende Speicherabrufmethode und System für Verzweigung mit Ausführungsbefehlen
DE69636861T2 (de) Mikroprozessor mit Lade-/Speicheroperation zu/von mehreren Registern
DE69130858T2 (de) Überlappende Serienverarbeitung
DE19855806A1 (de) Vorrichtung und Verfahren zum Durchführen von Unterprogrammaufruf- und Rücksprungoperationen
DE69305366T2 (de) System und verfahren zum kennzeichnen von befehlen zur steuerung der befehlsausführung
DE69131472T2 (de) Verfahren zum Vorsehen eines synchronisierten Datencachespeicherbetriebs für Prozessoren in einer parallelen Verarbeitungsanordnung und parallele Verarbeitungsanordnung zur Durchführung des Verfahrens
DE102012210895A1 (de) Vorhersage der ungeordneten Parallelverarbeitung der Befehle von Threads in einem Multithread-Prozessor
DE4345028A1 (de) Vorrichtung zur Reduzierung von Verzögerungen aufgrund von Verzweigungen

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

8320 Willingness to grant licences declared (paragraph 23)
8328 Change in the person/name/address of the agent

Representative=s name: EISENFUEHR, SPEISER & PARTNER, 10178 BERLIN

8327 Change in the person/name/address of the patent owner

Owner name: NXP B.V., EINDHOVEN, NL