DE69129872T2 - Datenverarbeitungssystem mit einem leistungsverbessernden Befehlscachespeicher - Google Patents
Datenverarbeitungssystem mit einem leistungsverbessernden BefehlscachespeicherInfo
- 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
Links
- 239000000872 buffer Substances 0.000 description 21
- 238000000034 method Methods 0.000 description 9
- 230000008014 freezing Effects 0.000 description 6
- 238000007710 freezing Methods 0.000 description 6
- 238000001514 detection method Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 238000011109 contamination Methods 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3808—Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3808—Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
- G06F9/381—Loop buffering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0875—Addressing 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/6028—Prefetching based on hints or prefetch instructions
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Description
- 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.
- 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.
- 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.
- 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.
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)
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)
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 |
-
1991
- 1991-03-25 DE DE69129872T patent/DE69129872T2/de not_active Expired - Lifetime
- 1991-03-25 EP EP91200656A patent/EP0449369B1/de not_active Expired - Lifetime
- 1991-03-27 JP JP03085842A patent/JP3095802B2/ja not_active Expired - Lifetime
-
1993
- 1993-05-19 US US08/063,845 patent/US5701435A/en not_active Expired - Lifetime
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 |