DE69130588T2 - Cache-Speicher von partiell decodierten Befehlen und Verfahren hierfür - Google Patents

Cache-Speicher von partiell decodierten Befehlen und Verfahren hierfür

Info

Publication number
DE69130588T2
DE69130588T2 DE69130588T DE69130588T DE69130588T2 DE 69130588 T2 DE69130588 T2 DE 69130588T2 DE 69130588 T DE69130588 T DE 69130588T DE 69130588 T DE69130588 T DE 69130588T DE 69130588 T2 DE69130588 T2 DE 69130588T2
Authority
DE
Germany
Prior art keywords
instructions
instruction
cache
processor
memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE69130588T
Other languages
English (en)
Other versions
DE69130588D1 (de
Inventor
Donald B. Herzli Alpert
Dror Netanya Avnon
Amos Ramat Aviv Ben-Meir
Ran Raanana Talmudi
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.)
National Semiconductor Corp
Original Assignee
National Semiconductor Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by National Semiconductor Corp filed Critical National Semiconductor Corp
Publication of DE69130588D1 publication Critical patent/DE69130588D1/de
Application granted granted Critical
Publication of DE69130588T2 publication Critical patent/DE69130588T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related 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/3818Decoding for concurrent execution
    • G06F9/382Pipelined decoding, e.g. using predecoding
    • 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/3017Runtime instruction translation, e.g. macros
    • 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/3017Runtime instruction translation, e.g. macros
    • G06F9/30174Runtime instruction translation, e.g. macros for non-native instruction set, e.g. Javabyte, legacy code
    • 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
    • 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/3818Decoding for concurrent execution
    • G06F9/3822Parallel decoding, e.g. parallel decode units
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
    • 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/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • 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/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units

Landscapes

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

Description

  • Die vorliegende Erfindung bezieht sich auf Mikroprozessorarchitekturen und insbesondere auf einen Mikroprozessor, der Befehle teilweise decodiert, die aus einem externen Speicher wiedergewonnen wurden, bevor er diese in einem internen Befehls-Cache speichert. Teilweise decodierte Befehle werden aus dem internen Cache wiedergewonnen für entweder eine parallele oder eine sequentielle Ausführung mittels mehrerer paralleler Pipeline-Funktionsschaltungen.
  • In den letzten Jahren gab es einen Trend beim Entwurf von Mikroprozessorarchitekturen von Computern mit komplexem Befehlssatz (CISC) in Richtung zu Computern mit reduziertem Befehlssatz (RISC) um eine höhere Leistung zu erreichen, während die Einfachheit des Entwurfs beibehalten wurde.
  • In einer CISC-Architektur muß jeder Makrobefehl, der vom Prozessor empfangen wird, intern in eine Serie von Mikrobefehlsunterroutinen decodiert werden. Diese Mikrobefehlsunterroutinen werden anschließend vom Mikroprozessor ausgeführt.
  • In einer RISC-Architektur ist die Anzahl der Makrobefehle, die der Prozessor verstehen und ausführen kann, deutlich reduziert. Ferner sind diese Makrobefehle, die der Prozessor verstehen und ausführen kann, sehr einfach, so daß der Prozessor entweder diese nicht in irgendwelche Mikrobefehle decodieren muß (der Makrobefehl wird in seiner Makroform ausgeführt), oder die decodierte Mikrobefehlsunterroutine verwendet sehr wenige Mikrobefehle.
  • Der Übergang von CISC-Architekturen zu RISC-Architekturen wurde vorangetrieben durch zwei grundlegende Entwicklungen im Computerentwurf, die nun extensiv auf Mikroprozessoren angewendet werden. Diese Entwicklungen sind der integrierte Cache-Speicher und optimierende Compiler.
  • Ein Cache-Speicher ist ein kleiner Hochgeschwindigkeitspuffer, der zwischen dem Prozessor und dem Hauptspeicher angeordnet ist, um die Befehle und Daten zu halten, die vom Prozessor zuletzt benutzt wurden. Die Erfahrung zeigt, daß Computer gewöhnlich starke Eigenschaften der Lokalität in ihren Speicherzugriffen aufweisen. Das heißt, die Zugriffe neigen dazu, häufig entweder an Orten stattzufinden, auf die vor kurzem zugegriffen wurde (zeitliche Lokalität), oder an Orten, die nahe bei anderen Orten liegen, auf die vor kurzem zugegriffen wurde (räumliche Lokalität). Als Folge dieser Lokalität kann ein Cache-Speicher, der sehr viel kleiner ist als der Hauptspeicher, die große Mehrheit der Programmspeicherzugriffe bedienen. Da der Cache-Speicher relativ klein ist, kann er mit einer schnelleren Speichertechnologie verwirklicht werden, als es für den sehr viel größeren Hauptspeicher wirtschaftliche wäre.
  • Vor der Entwicklung von Cache-Speichertechniken zur Verwendung in gewöhnlichen Computern bestand ein großes Ungleichgewicht zwischen der Zykluszeit eines Prozessors und derjenigen des Speichers. Dieses Ungleichgewicht war eine Folge davon, daß der Prozessor in relativ schneller bipolarer Halbleitertechnik verwirklicht worden ist und der Speicher mittels der sehr viel langsameren Magnetkerntechnik verwirklicht wurde. Die inhärente Geschwindigkeitsdifferenz zwischen der Logik und dem Speicher hat die Entwicklung komplexer Befehlssätze begünstigt, die es erlauben, einen einzelnen Befehl aus dem Speicher zu holen, um die Operation des Prozessors für mehrere Taktzyklen zu steuern. Das Ungleichgewicht zwischen den Prozessor- und Speichergeschwindigkeiten war ferner eine Eigenschaft der frühen Generationen der 32-Bit-Mikroprozessoren. Diese Mikroprozessoren benötigten gewöhnlich vier oder fünf Taktzyklen für jeden Speicherzugriff.
  • Ohne die Einführung des integrierten Cache-Speichers wäre es unwahrscheinlich, daß RISC-Architekturen mit CISC-Architekturen vergleichbar geworden wären. Da ein RISC-Prozessor mehr Befehle ausführt als ein CISC-Prozessor, um die gleiche Aufgabe zu bewältigen, kann ein RISC-Prozessor nur dann eine mit einem CISC-Prozessor vergleichbare Leistung bieten, wenn ein schnelleres und teureres Speichersystem eingesetzt wird. Der integrierte Cache-Speicher ermöglicht einem RISC-Prozessor, einen Befehl in derselben Zeit zu holen, die er benötigt, den Befehl mittels einer effizienten Prozessor-Pipeline auszuführen.
  • Die zweite Entwicklung, die zur Effektivität von RISC-Architekturen geführt hat, ist die Optimierung durch die Compiler. Ein Compiler, der entweder mittels Hardware oder mittels Software implementiert sein kann, übersetzt ein Computerprogramm von einer Hochsprache, die vom Programmierer verwendet wird, in die Maschinensprache, die vom Computer verstanden wird.
  • Über viele Jahre nach der Einführung der Hochsprachen wurden Computer immer noch extensiv in Assemblersprache programmiert. Die Assemblersprache ist eine Quellcode-Sprache auf niedriger Ebene, die grobe Mnemonics verwendet, die vom Programmierer leichter verstanden werden als der Objektcode oder die binären Äquivalente. Die Vorteile der verbesserten Softwareproduktivität und der Übersetzbarkeit der Hochsprachenprogrammierung waren klar, jedoch haben einfache Compiler einen ineffizienten Code erzeugt. Frühe Generationen von 32-Bit-Mikroprozessoren wurden unter Berücksichtigung der Assemblersprachenprogrammierung und einfacher Compiler entwickelt.
  • Seit kurzem wurden die Vorteile der Compilertechnologie auf Mikroprozessoren angewendet. Optimierende Compiler können ein Programm analysieren, um große Mengen von Registern effizient zuzuweisen und die Prozessor-Pipeline-Betriebsmittel zu verwalten. Als Folge hiervon können Hochsprachenprogramme mit einer Leistung ausgeführt werden, die mit derjenigen von Assemblerprogrammen vergleichbar ist oder diese übersteigt.
  • Viele der führenden Pioniere in der RISC-Entwicklung waren Compiler-Spezialisten, die gezeigt haben, daß optimierende Compiler hocheffizienten Code für einfache und regelmäßige Architekturen erzeugen können.
  • Hochintegrierte Einzelchip-Mikroprozessoren verwenden sowohl die pipelinegesteuerte als auch die parallele Ausführung, um die Leistung zu verbessern. Die pipelinegesteuerte Ausführung bedeutet, daß der Mikroprozessor, während er einen Befehl holt, gleichzeitig einen zweiten Befehl decodieren kann, die Quellenoperanden für einen dritten Befehl lesen kann, die Ergebnisse für einen vierten Befehl berechnen kann und die Ergebnisse eines fünften Befehls speichern kann. Die parallele Ausführung bedeutet, daß der Mikroprozessor die Operanden für zwei oder mehr unabhängige Befehle gleichzeitig in getrennte Funktionseinheiten holen kann.
  • Wie oben erwähnt, ist eine der Hauptherausforderungen beim Entwurf von Hochleistungsmikroprozessoren mit mehrfachen pipelinegesteuerten Funktionseinheiten, einen ausreichenden Befehlsspeicher auf dem Chip zu schaffen und auf den Befehlsspeicher effizient zuzugreifen, um die Funktionseinheiten zu steuern.
  • Die Anforderungen für die effiziente Steuerung der Funktionseinheiten eines Mikroprozessors schreibt ein regelmäßiges Befehlsformat vor, das einfach zu decodieren ist. In her kömmlichen Mikroprozessorarchitekturen jedoch sind die Befehle im Hauptspeicher stark codiert und besitzen eine veränderliche Länge, um den Raum im Hauptspeicher und die beschränkte Bandbreite, die zwischen dem Mikroprozessor und dem Hauptspeicher zur Verfügung steht, effizient zu nutzen.
  • Die vorliegende Erfindung ist durch die unabhängigen Ansprüche 1 und 8 definiert und schafft einen Prozessor und ein zugehöriges Verfahren, die die konkurrierenden Anforderungen für eine effiziente Verwendung des Hauptspeicherraums und die effiziente Steuerung der Funktionseinheiten auflöst durch teilweises Decodieren der aus dem Hauptspeicher wiedergewonnenen Befehle, bevor diese im integrierten Befehls- Cache des Mikroprozessors plaziert werden. Jeder Eintrag im Befehls-Cache besitzt vorzugsweise zwei Schlitze für teilweise decodierte Befehle. Ein Schlitz steuert eine der Ausführungs-Pipelines des Mikroprozessors und einen Anschluß für dessen Daten-Cache. Der zweite Schlitz steuert eine zweite Ausführungs-Pipeline oder eine der Gleitkommaeinheiten des Mikroprozessors, oder einen Steuerübertragungsbefehl. Eine Befehlsdecodierungseinheit oder eine Ladevorrichtung decodiert die Befehle aus deren kompakten Format, wie es im Hauptspeicher gespeichert ist, und plaziert diese in den zwei Schlitzen des Befehls-Cache-Eintrags gemäß ihren Funktionen. Ferner können Hilfsinformationen im Cache-Eintrag gemeinsam mit dem Befehl plaziert werden, um die parallele Ausführung und die Emulation komplexer Befehle zu steuern. Ein Bit in jedem Cache-Eintrag kann anzeigen, ob die Befehle in den zwei Schlitzen für diesen Eintrag unabhängig sind, so daß sie parallel ausgeführt werden können, oder abhängig sind, so daß sie sequentiell ausgeführt werden müssen. Die Verwendung eines einzelnen Bits zu diesem Zweck erlaubt, zwei unabhängige Befehle in den Schlitzen eines einzelnen Cache-Eintrags zu speichern. Andernfalls müßten die zwei Befehle in separaten Einträgen gespeichert werden, wobei nur eine Hälfte des Cache-Speichers in diesen zwei Einträgen genutzt würde.
  • Einige Merkmale der unabhängigen Ansprüche sind an sich bekannt.
  • US-A-4.873.629 offenbart einen Computer, der für die Optimierung der Verarbeitungsrate der Befehle konfiguriert ist, sowie ein zugehöriges Verfahren. Der Computer enthält einen Hauptspeicher, eine Cache-Einheit, sowie eine Zentraleinheit. Gemäß diesem Dokument werden (codierte) Befehle, die aus dem Hauptspeicher wiedergewonnen werden, "zerlegt", d.h. die Adreßfelder der Befehle werden decodiert, so daß sie in einer logischen Befehls-Cache-Einheit gespeichert werden können. Wenn die zerlegten Befehle aus der Cache- Einheit für die anschließende Ausführung wiedergewonnen werden, werden sie (sequentiell) zu einem Ausgangspuffer und einer Decodiereinrichtung gesendet, in der ein Decodierungsschritt stattfindet, wobei ferner eine decodierte Programmzähler- und Verschiebungsinformation erzeugt wird. Die decodierten Befehle werden anschließend zur Ausführung zu den ALUs gesendet.
  • Die Technik gemäß diesem Dokument benötigt daher die zeitaufwendige Mehrfachspeicherung der Befehle und lehrt insbesondere, die Cache-Einrichtung und die Funktionseinheiten durch Zwischenpuffereinrichtungen zu entkoppeln.
  • Eine weitere Technik wird offenbart von der EP-A-0 363 222. Dieses Dokument bezieht sich auf eine Vorrichtung und ein Verfahren zum gleichzeitigen Versenden von Befehlswörtern. Diese Befehle können separat und im wesentlichen gleichzeitig von unterschiedlichen Funktionseinheiten empfangen werden, wie z.B. einer Gleitkommaeinheit und einer Ganzzahleneinheit, die Teil eines Prozessors sind. Befehle, die von einer externen Quelle stammen, werden wiedergewonnen und in einem Befehls-Cache gespeichert, wobei der Cache in gerade und ungerade Cache-Abschnitte unterteilt ist, die jeweils nacheinander über eine logische Einrichtung mit den Funktionseinheiten verbunden werden. Die Logikeinheiten enthalten eine Decodierungseinrichtung, die die codierten Befehle nach dem Empfangen decodieren kann. Dementsprechend sind die im Befehls-Cache zwischengespeicherten Befehle immer noch codiert.
  • Die bekannte Architektur ist geeignet für CISC-Computer mit einer Zentraleinheit, ruft jedoch Probleme hervor, wenn sie auf RISC-Architektur-Computer übertragen wird. Ein Problem, das beim Verarbeiten von Befehlen in einer RISC-Architektur entsteht, besteht darin, daß die Anzahl der Befehle, die vom Prozessor verstanden werden, stark reduziert ist, wobei gleichzeitig diese Befehle sehr schnell ausgeführt werden. Die Operation der vollständigen Decodierung eines wiedergewonnenen codierten Befehls birgt die unvorhersagbare Unsicherheit bezüglich der benötigten Zeitspanne, wenn die Decodierungsoperation so durchgeführt wird, daß die Prozessorzeit schwierig zu optimieren ist.
  • Ein Artikel von Stevens, G. B. u. a., "HARP: A parallel pipelined RISC processor", Microprocessor and Microsystems, Bd. 13, Nr. 9, November 1989, S. 579-587, London, GB, bezieht sich auf einen Compiler, der unabhängige "HARP"-Befehle, die parallel ausgeführt werden können, in lange Befehlswörter packt. Die langen Befehlswörter werden aus einem Befehlscache wiedergewonnen, um die Komponentenkurzbefehle des langen Befehlsworts über eine parallele Pipelinestruktur weiterzuleiten.
  • Es existiert keine Lehre, die einen Hinweis auf das teilweise Decodieren codierter Befehle vor dem Speichern derselben in einem Cache liefert.
  • WO-A-90 03 001 offenbart ein CISC-System, in welchem codierte Befehle aus dem Hauptspeicher wiedergewonnen werden und anschließend in einer Cache-Einrichtung gespeichert werden. Die Befehle werden, nachdem sie aus dem Cache wiedergewonnen wurden, teilweise decodiert und vor der Ausführung in einem FIFO-Befehlspuffer gespeichert.
  • Eine solche FIFO-Warteschlange bewirkt unter anderem eine teilweise Entkopplung des Cache und der Prozessoreinheit zum Puffern von Laufzeitproblemen aufgrund der teilweisen Decodierung. Es ist klar, daß diese Lösung kompliziertere Architekturen schafft und selbstverständlich nicht diese Erfindung lehrt.
  • Ein besseres Verständnis der Merkmale und Vorteile der vorliegenden Erfindung wird erhalten mit Bezug auf die folgende genaue Beschreibung der Erfindung und die beigefügten Zeichnungen, die eine beispielhafte Ausführungsform zeigen, bei der die Prinzipien der Erfindung genutzt werden.
  • Fig. 1 ist ein Blockschaltbild, das eine Mikroprozessorarchitektur zeigt, die die Konzepte der vorliegenden Erfindung enthält.
  • Fig. 2 ist ein Blockschaltbild, das die Struktur eines Cache für teilweise decodierte Befehle zeigt, der in der Architektur der Fig. 1 verwendet wird.
  • Fig. 3 ist eine vereinfachte Darstellung eines teilweise decodierten Eintrags, der in dem in Fig. 2 gezeigten Befehls-Cache gespeichert ist.
  • Fig. 4 ist ein Blockschaltbild, das die Struktur der Ganzzahl-Pipelines zeigt, die in der in Fig. 1 gezeigten Mikroprozessorarchitektur verwendet werden.
  • Die Fig. 1 zeigt ein Blockschaltbild eines Mikroprozessors 10, der mehrere pipelinegesteuerte Funktionseinheiten enthält, die zwei Befehle parallel ausführen können.
  • Der Mikroprozessor 10 enthält drei Hauptabschnitte: einen Befehlsprozessor 12, einen Ausführungsprozessor 14 und einen Busschnittstellenprozessor 16.
  • Der Befehlsprozessor 12 enthält drei Module: eine Befehlsladevorrichtung 18, einen Befehlsemulator 20 und einen Befehls-Cache 22. Diese Module laden Befehle aus dem externen System über den Busschnittstellenprozessor 16, speichern die Befehle im Befehls-Cache 22 und liefern Paare von Befehlen zur Ausführung zum Ausführungsprozessor 14.
  • Der Ausführungsprozessor 14 enthält zwei vierstufige Pipeline-Ganzzahlausführungseinheiten 24 und 26, eine fünfstufige Pipelinegleitkommaausführungseinheit mit doppelter Genauigkeit 28 sowie einen 1024-Byte-Daten-Cache 30. Ein Satz von Ganzzahlregistern 32 bedient zwei Ganzzahleinheiten 24 und 26; in ähnlicher Weise bedient ein Satz von Gleitkommaregistern 34 die Gleitkommaausführungseinheit 28.
  • Der Busschnittstellenprozessor 16 enthält eine Busschnittstelleneinheit 36 und mehrere Systemmodule 38. Die Busschnittstelleneinheit 36 steuert die Buszugriffe, die sowohl vom Befehlsprozessor 12 als auch vom Ausführungsprozessor 14 gefordert werden. In der dargestellten Ausführungsform enthalten die Systemmodule 38 einen Zeitgeber 40, eine Speicherdirektzugriff-(DMA)-Steuervorrichtung 42, eine Unterbrechungssteuervorrichtung (ICU) 44 sowie E/A-Puffer 46.
  • Wie im folgenden genauer beschrieben wird, decodiert die Befehlsladevorrichtung 18 teilweise die vom Hauptspeicher wiedergewonnenen Befehle und plaziert die teilweise deco dierten Befehle im Befehls-Cache 22. Das heißt, die Befehlsladevorrichtung 18 übersetzt einen im (nicht gezeigten) Hauptspeicher gespeicherten Befehl in das decodierte Format des Befehls-Cache 22. Wie ferner im folgenden genauer beschrieben wird, ist die Befehlsladevorrichtung 18 ferner zuständig für die Überprüfung, ob irgendwelche Abhängigkeiten zwischen den aufeinanderfolgenden Befehlen bestehen, die in einem einzelnen Befehls-Cache-Eintrag paarweise zusammengefaßt werden.
  • Der Befehls-Cache 22 enthält 512 Einträge für teilweise decodierte Befehle.
  • Gemäß einem Aspekt der vorliegenden Erfindung, und wie im folgenden genauer erläutert wird, enthält jeder Eintrag im Befehls-Cache 22 entweder einen oder zwei Befehle, die in einem teilweise decodierten Format für eine effiziente Steuerung der verschiedenen Funktionseinheiten des Mikroprozessors 10 gespeichert sind.
  • Gemäß einem weiteren Aspekt der vorliegenden Erfindung enthält jeder Eintrag im Befehls-Cache 22 ferner Hilfsinformationen, die anzeigen, ob die zwei Befehle, die in diesem Eintrag gespeichert sind, unabhängig sind, so daß sie parallel ausgeführt werden können, oder abhängig sind, so daß sie sequentiell ausgeführt werden müssen.
  • Der Befehlsemulator 20 führt Spezialbefehle aus, die im Befehlssatz des Mikroprozessors 10 definiert sind. Wenn die Befehlsladevorrichtung 18 einen solchen Befehl entdeckt, überträgt sie die Steuerung an den Emulator 20. Der Emulator ist verantwortlich für das Erzeugen einer Sequenz von Kernbefehlen (im folgenden definiert), die die Funktion eines einzelnen komplexen Befehls (im folgenden definiert) durchführen. Diesbezüglich liefert der Emulator 20 ROM-residenten Mikrocode. Der Emulator 20 steuert ferner die Ausnahmeverarbeitung und die Selbsttestoperation.
  • Die zwei vierstufigen Ganzzahl-Pipelines 24 und 26 führen grundlegende Arithmetik/Logik-Operationen und Datenspeicherzugriffe durch. Jede Ganzzahl-Pipeline 24, 26 kann Befehle mit einem Durchsatz von einem Befehl pro Systemtaktzyklus ausführen.
  • Die Gleitkommaausführungseinheit 28 enthält drei Untereinheiten, die Operationen mit einfacher Genauigkeit und mit doppelter Genauigkeit ausführen. Eine FPU-Addierer-Untereinheit 28a ist verantwortlich für Additions- und Umsetzungsoperationen, während eine zweite Untereinheit 28b verantwortlich ist für Multiplikationsoperationen und eine dritte Untereinheit 28c verantwortlich ist für Divisionsoperationen.
  • Wenn Additions- und Multiplikationsoperationen wechselweise ausgeführt werden, kann die Gleitkommaausführungseinheit 28 Befehle mit einem Durchsatz von einem Befehl pro Systemtaktzyklus ausführen.
  • Speicherzugriffe für die Gleitkommaausführungseinheit 28 werden von einer der Ganzzahl-Pipelines 24, 26 gesteuert und können parallel zu den Gleitkommaoperationen ausgeführt werden.
  • Datenspeicherzugriffe werden unter Verwendung des 1-kByte- Daten-Cache 30 durchgeführt. Der Daten-Cache 30 bietet einen schnellen On-Chip-Zugriff auf häufig verwendete Daten. Für den Fall, daß die Daten nicht im Daten-Cache 30 angeordnet sind, werden mittels der Schnittstelleneinheit (BIU) 36 Off- Chip-Zugriffe unter Verwendung des Pipelinesystembus 48 durchgeführt.
  • Der Daten-Cache 30 verwendet eine Lasteinteilungstechnik, so daß er bei Fehlgriffen nicht unbedingt anhalten muß. Dies bedeutet, daß die zwei Ausführungspipelines 24, 26 weiter Befehle verarbeiten und zusätzliche Speicherzugriffe einleiten können, während die Daten aus dem Hauptspeicher gelesen werden.
  • Die Busschnittstelleneinheit 36 kann Anfragen für Hauptspeicherzugriffe entweder vom Befehlsprozessor 12 oder vom Ausführungsprozessor 14 empfangen. Diese Anfragen werden an den externen Pipelinebus 48 gesendet. Der externe Bus kann so programmiert sein, daß er mit der halben Frequenz des Mikroprozessors 10 arbeitet; dies erlaubt eine einfache Befehlsschnittstelle mit einer relativ niedrigen Frequenz, während der Mikroprozessor 10 zwei Befehle mit der vollen Geschwindigkeit ausführt.
  • Der Befehlssatz des Mikroprozessors 10 ist in einen Kernabschnitt und in einen Nicht-Kernabschnitt unterteilt. Der Kernabschnitt des Befehlssatzes umfaßt leistungskritische Befehle und Adressierungsarten zusammen mit einigen Spezialfunktionsbefehlen für wichtige Systemoperationen. Der Nicht- Kernabschnitt umfaßt den Rest des Befehlssatzes. Leistungskritische Befehle und Adressierungsarten wurden auf der Grundlage einer Analyse und Auswertung des Betriebssystems (in diesem Fall UNIX), der Arbeitsbelastung und verschiedener technischer, wissenschaftlicher und eingebetteter Steuerungsanwendungen bewertet. Diese Befehle werden als Teil der RISC-Architektur des Mikroprozessors 10 direkt ausgeführt.
  • Wie oben erwähnt, werden Spezialfunktions- und Nicht-Kern- Befehle im Mikroprozessor 10 mittels Makrobefehlsunterroutinen emuliert, die Sequenzen von Kernbefehlen verwenden. Das heißt, Befehle, die ein Teil des gesamten Befehlssatzes der Architektur des Mikroprozessors 10 sind, die jedoch außerhalb des direkt implementierten RISC-Kerns liegen, werden unter der Steuerung des Befehlsemulators 20 ausgeführt. Wenn die Befehlsladevorrichtung 18 einen Nicht-Kernbefehl entdeckt, übersetzt sie diesen entweder in zwei Kernbefehle (für einfachere Befehle wie MOVB 1(R0),0(R1)) oder überträgt die Steuerung an den Befehlsemulator 20. Der Befehlsemulator 20 ist verantwortlich für die Erzeugung einer Sequenz von Kernbefehlen, die die Funktion des einzelnen komplexen Befehls ausführen.
  • Die Fig. 2 zeigt die Struktur des Befehls-Cache 22. Der Befehls-Cache 22 verwendet eine satzassoziative Zweiwege- Organisation mit 512 Einträgen für teilweise decodierte Befehle. Dies bedeutet, daß für jede Speicheradresse zwei Einträge im Befehls-Cache 22 vorhanden sind, an denen der an dieser Adresse angeordnete Befehl gespeichert werden kann. Die zwei Einträge werden als "Satz" bezeichnet.
  • Wie in Fig. 3 gezeigt, enthält jeder Befehls-Cache-Eintrag zwei Schlitze, nämlich Schlitz A und Schlitz B. Somit kann jeder Eintrag einen oder zwei teilweise decodierte Befehle enthalten, die mit festen Feldern für den Opcode (OPC), die Quellen- und Ziel-Registernummern (R1 beziehungsweise R2) und unmittelbare Werte (32b IMM) dargestellt werden. Der Eintrag enthält ferner Hilfsinformationen, die zum Steuern der Sequenz der Befehlsausführung verwendet werden, einschließlich eines Bits P, das anzeigt, ob der Eintrag zwei aufeinanderfolgende Befehle enthält, die parallel ausgeführt werden können, und eines Bits G, das anzeigt, ob der Eintrag für einen komplexen Befehl steht, der emuliert wird, sowie zusätzlicher Informationen, die die Länge des Befehls in einer Form darstellen, die eine schnelle Berechnung der nächsten Befehlsadresse erlaubt.
  • Wie in Fig. 2 gezeigt, ist jedem Eintrag im Befehls-Cache 22 ein 26-Bit-Ettikett zugeordnet, TAG0 beziehungsweise TAG1, das die 22 höchstwertigen Bits, die drei niedrigstwertigen Bits und ein Benutzer/Supervisor-Bit der virtuellen Adresse des im Eintrag gespeicherten Befehls enthält. In dem Fall, in dem zwei aufeinanderfolgende Befehle in einem Eintrag zusammengefaßt sind, entspricht das Etikett dem Befehl mit der niedrigeren Adresse. Dem Etikett sind zwei Bits zugeordnet, die anzeigen, ob der Eintrag gültig ist und ob er gesperrt ist. Für jeden Satz gibt es ein zusätzliches einzelnes Bit, das den Eintrag innerhalb des Satzes anzeigt, der in einer Längstens-Unbenutzt-Reihenfolge zu ersetzen ist.
  • Der Befehls-Cache 22 wird für einen Befehlsholvorgang freigegeben, wenn das entsprechende Bit des Konfigurationsregisters des Mikroprozessors 10, das verwendet wird, um verschiedene Betriebsarten des Mikroprozessors 10 freizugeben oder zu sperren, gleich 1 ist und entweder die Adreßübersetzung gesperrt ist oder das CI-Bit im Ebene-2-Seitentabelleneintrag (PTE) gleich 0 ist, das verwendet wird, um die virtuelle Adresse des Befehls zu übersetzen.
  • Wenn der Befehls-Cache 22 gesperrt ist, umgeht der Befehlsholvorgang den Befehls-Cache 22 und die Inhalte des Befehls- Cache 22 werden nicht beeinflußt. Der Befehl wird direkt aus dem Hauptspeicher gelesen, von der Befehlsladevorrichtung 18 teilweise decodiert, um einen Eintrag zu bilden (der zwei teilweise decodierte Befehle enthalten kann), und über die IL-Umleitungs-Leitung zur Ausführung zu den Ganzzahl-Pipelines 24, 26 übertragen.
  • Wenn wie in Fig. 2 gezeigt der Befehls-Cache 22 für einen Befehlsholvorgang freigegeben ist, werden 8 Bits, d.h. die Bits PC(10:3) der Befehlsadresse, die vom Programmzähler (PC) geliefert wird, decodiert, um den Satz von Einträgen auszuwählen, in dem der Befehl gespeichert werden kann. Der ausgewählte Satz von vier Einträgen wird gelesen und die zugehörigen Etiketten werden mit den 23 höchstwertigen Bits, d.h. PC(31:10), und den zwei niedrigstwertigen Bits PC(1:0) der virtuellen Befehlsadresse verglichen. Wenn eines der Etiketten paßt und der passende Eintrag gültig ist, wird der Eintrag für die Übertragung zu den Ganzzahl-Pipelines 24, 26 zur Ausführung ausgewählt. Andernfalls wird der fehlende Befehl direkt aus dem Hauptspeicher gelesen und teilweise decodiert, wie im folgenden erläutert wird.
  • Wenn der fragliche Befehl im Befehls-Cache 22 fehlt und die Inhalte des ausgewählten Satzes alle gesperrt sind, ist die Handhabung des Zugriffs identisch mit der obenbeschriebenen für den Fall, in dem der Befehls-Cache 22 gesperrt ist.
  • Wenn der fragliche Befehl im Befehls-Cache 22 fehlt und wenigstens einer der Einträge im ausgewählten Satz nicht gesperrt ist, werden folgende Maßnahmen ergriffen. Einer der Einträge wird für die Ersetzung entsprechend dem Längstens- Unbenutzt-Ersatzargorithmus ausgewählt und anschließend der LRU-Zeiger aktualisiert (LRU = "Least Recently Used" bedeutet soviel wie "längstens unbenutzt"). Wenn der für die Ersetzung ausgewählte Eintrag gesperrt ist, ist die Handhabung des Zugriffs identisch mit der obenbeschriebenen für den Fall, in dem der Befehls-Cache 22 gesperrt ist. Ansonsten wird der fehlende Befehl direkt aus dem externen Speicher gelesen und anschließend teilweise von der Befehlsladevorrichtung 18 decodiert, um einen Eintrag zu bilden (der zwei teilweise decodierte Befehle enthalten kann), welcher anschließend zur Ausführung zu den Ganzzahl-Pipelines 24, 26 übertragen wird. Wenn CIIN während der Buszyklen nicht aktiv ist, um den fehlenden Befehl zu lesen, wird anschließend der teilweise decodierte Befehl ebenfalls in den für den Ersatz ausgewählten Befehls-Cache-Eintrag geschrieben, das zugehörige Gültigkeitsbit gesetzt und der Eintrag gesperrt, wenn das Sperre-Befehlscache-Bit CFG.LIC im Konfigurationsregister gleich 1 ist.
  • Nachdem der Mikroprozessor 10 das Holen eines fehlenden Befehls vom externen Hauptspeicher abgeschlossen hat, fährt er mit dem sequentiellen Holen von Befehlen im voraus fort. Für nachfolgende sequentielle Befehlsholvorgänge durchsucht der Mikroprozessor 10 den Befehls-Cache 22, um zu ermitteln, ob sich der Befehl im Chip befindet. Wenn die Suche erfolgreich ist oder ein nicht-sequentieller Befehlsholvorgang stattfindet, beendet der Mikroprozessor 10 das Holen im voraus. Andernfalls sind die im voraus geholten Befehle sehr schnell für die Decodierung und Ausführung verfügbar. Der Mikroprozessor 10 leitet Vorausholvorgänge nur während der Buszyklen ein, die ansonsten nicht genutzt werden, da keine Off-Chip-Datenzugriffe erforderlich sind.
  • Es ist möglich, einen Befehl zu holen und ihn im Befehls- Cache 22 zu sperren, ohne den Befehl ausführen zu müssen. Dies kann bewerkstelligt werden durch Freigeben einer Störungsbeseitigungsfalle (DBG) für einen Programmzählerwert, der zu zwei Befehlsadressen paßt. Die Fehlerbeseitigungsfalle ist eine Dienstroutine, die Maßnahmen entsprechend diesem Typ von Ausnahme durchführt. Am Ende der DBG-Routine wird der Ausführungsrücksprung-(RETX)-Befehl ausgeführt, um das Ausführen der Befehle an der Stelle wiederaufzunehmen, an der die Ausnahme erkannt wurde. Der Befehl wird geholt und im Befehls-Cache 22 plaziert, bevor die Falle verarbeitet wird.
  • Wenn der Befehl, der im Befehls-Cache gesperrt ist, zur Ausführung gelangt und eine Fehlerbeseitigungsfalle für diesen Befehl freigegeben ist, wird anstelle der Ausführung des Befehls der Prozessor zur Fehlerbeseitigungsfallen- Dienstroutine springen. Die Dienstroutine kann einen Unterbrechungspunkt für den nächsten Befehl setzen, so daß der Prozessor dann, wenn er von der Dienstroutine zurückkehrt, nicht den nächsten Befehl ausführt, sondern statt dessen erneut zur Fehlerbeseitigungsfallen-Routine übergeht.
  • Der obenbeschriebene Prozeß, der üblicherweise während des Systemstarts ausgeführt wird, erlaubt dem Benutzer, Routinen im Befehls-Cache 22 zu speichern, diese zu sperren und diese für die Operation bereitzuhalten, ohne diese während des Sperrprozesses auszuführen.
  • Weitere Informationen bezüglich der Architektur des Mikroprozessors 10 und seiner Cache-Sperrfähigkeiten liefert EP-A-0 459 233.
  • Die Inhalte des Befehls-Cache 22 können mittels Software oder mittels Hardware ungültig gemacht werden.
  • Der Befehls-Cache 22 wird mittels Software wie folgt ungültig gemacht: die gesamten Befehls-Cache-Inhalte einschließlich gesperrter Einträge werden ungültig gemacht, wenn das Bit CFG.EC des Konfigurationsregisters gleich 0 ist. Die LRU-Ersatzinformation wird ebenfalls auf 0 initialisiert, wenn das Bit CFG.IC gleich 0 ist. Der Cache-Ungültig-CINV- Befehl kann ausgeführt werden, um die gesamten Befehls- Cache-Inhalte ungültig zu machen. Die Ausführung des CINXT macht entweder den gesamten Cache oder nur ungesperrte Zeilen ungültig, in Abhängigkeit von der L-Option des Befehls.
  • Der gesamte Befehls-Cache 22 wird in der Hardware ungültig gemacht durch Aktivieren eines INVIC -Eingangssignals.
  • Die Fig. 3 zeigt eine vereinfachte Ansicht eines teilweise decodierten Eintrags, der im Befehls-Cache 22 gespeichert ist. Wie in Fig. 3 gezeigt, besitzt jeder Eintrag zwei Schlitze für Befehle. Der Schlitz A steuert die Ganzzahl- Pipeline 24 und den Anschluß zum Daten-Cache 30. Der Schlitz B steuert die zweite Ganzzahl-Pipeline 26 oder eine der Gleitkommaeinheiten oder einen Steuerübertragungsbefehl. Der Schlitz B kann ferner den Anschluß zum Daten-Cache 30 steuern, jedoch nur, wenn nicht der Schlitz A den Daten-Cache 30 verwendet. Wie oben erwähnt, holt die Befehlsladevorrichtung 18 codierte Befehle in ihrem kompakten Format aus dem Hauptspeicher und plaziert diese entsprechend ihrer Funktionen in den Schlitzen A und B.
  • Somit umfassen gemäß der vorliegenden Erfindung die neuartigen Aspekte des Befehls-Cache 22 (1) das teilweise Decodieren der Befehle zum Speichern im Cache-Speicher, (2) das Plazieren der Befehle in zwei Cache-Schlitzen entsprechend ihrer Funktion und (3) das Plazieren von Hilfsinformationen in den Cache-Einträgen zusammen mit den Befehlen, um die parallele Ausführung und die Emulation komplexer Befehle zu steuern.
  • Wie ferner in Fig. 3 gezeigt, zeigt ein Bit P in jedem Befehls-Cache-Eintrag an, ob die Befehle in den Schlitzen A und B unabhängig sind, so daß sie parallel ausgeführt werden können, oder abhängig sind, so daß sie sequentiell ausgeführt werden müssen.
  • Ein Beispiel für unabhängige Befehle, die parallel ausgeführt werden können, ist:
  • Load 4(R0),R1 ; Addcd 4, R0
  • Ein Beispiel abhängiger Befehle, die eine sequentielle Ausführung erfordern, ist:
  • Addd R0,R1 ; Addd R1,R2
  • Die Verwendung eines einzelnen Bits zu diesem Zweck erlaubt, zwei unabhängige Befehle in den Schlitzen eines einzelnen Cache-Eintrags zu speichern, andernfalls würden die zwei Befehle in separaten Einträgen gespeichert und nur die Hälfte des Befehls-Cache 22 würde in diesen zwei Einträgen genutzt.
  • Fig. 3 zeigt ferner ein Bit G in jedem Befehls-Cache-Eintrag, das anzeigt, ob die Befehle in den Schlitzen A und B einen einzelnen komplexeren Befehl aus dem Hauptspeicher emulieren. Zum Beispiel übersetzt die Ladevorrichtung den Einzelbefehl ADDD 0(R0),R1 in das folgende Paar von Befehlen in den Schlitzen A und B und setzt die Sequentiell- und Emulationsmerker in den Einträgen:
  • Load 0(R0), Temp
  • ADDD Temp, R1
  • Gemäß der Pipelineorganisation des Mikroprozessors 10 durchläuft jeder vom Mikroprozessor 10 ausgeführte Befehl eine Reihe von Stufen. Die zwei Ganzzahlpipelines 24, 26 (Fig. 1) können parallel mit Befehlspaaren arbeiten. Die Ganzzahleinheit 24 und die Ganzzahleinheit 26 sind nicht identisch, wobei die Befehle, die in der Ganzzahleinheit 24 ausgeführt werden können, eine Teilmenge derjenigen Befehle sind, die in der Ganzzahleinheit 26 ausgeführt werden können.
  • Wie oben erwähnt, wird der Befehlsholvorgang von der Befehlsladevorrichtung 18 durchgeführt, die die decodierten Befehle im Befehls-Cache 22 speichert. Die Ganzzahl-Doppelpipeline empfängt decodierte Befehlspaare für die Ausführung.
  • Wie in Fig. 3 gezeigt und oben erwähnt ist, umfaßt ein Befehlspaar zwei Schlitze: Schlitz A und Schlitz B. Der Befehl im Schlitz A wird der Ganzzahleinheit 24 zugeteilt; der Befehl im Schlitz B wird der Ganzzahleinheit 26 zugeteilt. Die zwei Befehle, die zum gleichen Paar gehören, rücken gleichzeitig von einer Stufe der Ganzzahlpipeline zur nächsten vor, mit Ausnahme des Falls, in dem der Befehl im Schlitz B in der Befehlsdecodierungsstufe der Pipeline wie im folgenden beschrieben verzögert wird. In diesem Fall kann der Befehl in der Ganzzahlpipeline 24 zu den folgenden Pipelinestufen vorrücken. Neue Befehle können jedoch nicht in die Pipeline eintreten, bis die Befehlsdecodierungsstufe in beiden Pipelineeinheiten 24 und 26 frei ist.
  • Obwohl die Befehle in den Einheiten 24 und 26 parallel ausgeführt werden (mit Ausnahme des Falls des Halte-ID-B- Befehls), geht der Befehl im Schlitz A dem entsprechenden Befehl im Schlitz B immer voran, wobei dann, wenn der Befehl im Schlitz A aufgrund einer Ausnahme nicht abgeschlossen werden kann, der entsprechende Befehl im Schlitz B verworfen wird.
  • Wie in Fig. 4 gezeigt, enthält jede der Ganzzahl-Pipelineeinheiten 24, 26 vier Stufen: eine Befehlsdecodierungsstufe (ID), eine Ausführungsstufe (EX), eine Speicherzugriffsstufe (ME) und eine Ergebnisspeicherstufe (ST).
  • Ein Befehl wird in die ID-Stufe der Ganzzahleinheit eingegeben, der er zugeteilt ist, worin seine Decodierung abgeschlossen wird und die Registerquellenoperanden gelesen werden. In der EX-Stufe wird die Arithmetik/Logik-Einheit des Mikroprozessors 10 aktiviert, um die Ergebnisse des Befehls zu berechnen oder die effektive Speicheradresse für die Lade/Speicher-Befehle zu berechnen. In der ME-Stufe wird von den Lade/Speicher-Befehlen auf den Daten-Cache 30 (Fig. 1) zugegriffen, wobei die Ausnahmebedingungen geprüft werden. In der ST-Stufe werden die Ergebnisse in die Registergruppe oder in den Daten-Cache 30 im Fall eines Speicher-Befehls geschrieben, wobei die Programmstatusregister- (PSR)-Merker aktualisiert werden. In dieser Stufe kann der Befehl nicht mehr rückgängig gemacht werden.
  • Wie in Fig. 4 gezeigt, können die Ergebnisse von der EX- Stufe und der ME-Stufe zur ID-Stufe zurückgeführt werden, wodurch eine Befehlslatenz von ein bis zwei Zyklen ermöglicht wird.
  • Bei Fehlen jeglicher Verzögerungen akzeptiert die Doppel- Ausführungspipeline des Mikroprozessors 10 in jedem Taktzyklus ein neues Befehlspaar (d.h. es ergibt sich ein Spitzendurchsatz von zwei Befehlen pro Zyklus) und schiebt alle anderen Befehle längs der Pipeline eine Stufe weiter. Die Doppel-Pipeline enthält einen globalen Anhaltemechanismus, mit dem eine beliebige Funktionseinheit die Pipeline anhalten kann, wenn sie einen Konflikt erfaßt. Jede hält die entsprechende Stufe und alle vorangehenden Stufen für einen weiteren Zyklus an. Wenn eine Stufe blockiert, hält sie den momentan darin enthaltenen Befehl für einen weiteren Zyklus und startet dann alle Stufenaktivitäten erneut, wie im unblockierten Fall.
  • Die Pipelineeinheit, auf der der jeweilige Befehl ausgeführt werden soll, wird zur Laufzeit von der Befehlsladevorrichtung 18 ermittelt, wenn Befehle aus dem Hauptspeicher geholt werden.
  • Die Befehlsladevorrichtung decodiert die im voraus geholten Befehle, versucht, diese in Befehlspaareinträge zu packen, und liefert diese an die Doppel-Pipeline. Wenn der Befehls- Cache 22 freigegeben ist (wie oben beschrieben), können cache-fähige Befehle im Befehls-Cache gespeichert werden. In diesem Fall wird ein Eintrag, der ein Befehlspaar oder einen Einzelbefehl enthält, ebenfalls zum Befehls-Cache 22 gesendet und dort als einzelner Cache-Eintrag gespeichert. Bei Befehls-Cache-Treffern werden aus dem Befehls-Cache gespeicherte Befehlspaare wiedergewonnen und zur Ausführung an die Doppel-Pipeline geliefert.
  • Die Befehlsladevorrichtung 18 versucht, wann immer möglich, Befehle in Paare zu packen. Das Packen von zwei Befehlen in einen Eintrag ist nur dann möglich, wenn der erste Befehl von der Ganzzahl-Pipelineeinheit 24 ausgeführt werden kann und beide Befehle kürzer als eine vorgegebene Maximallänge sind. Wenn es unmöglich ist, zwei Befehle in ein Paar zu packen, wird ein einzelner Befehl im Schlitz B plaziert.
  • Zwei Befehle können nur dann gepaart werden, wenn alle folgenden Bedingungen erfüllt sind: (1) beide Befehle sind leistungskritische Kernbefehle, (2) der erste Befehl kann von der Ganzzahl-Pipelineeinheit 24 ausgeführt werden und (3) die Verschiebungs- und Unmittelbar-Felder in beiden Befehlen verwenden eine Kurzcodierung (die Kurzcodierung für alle Befehle mit Ausnahme des Verzweigungsbefehls umfaßt 11 Bits und 17 Bits für die bedingte Verzweigung und die Verzweigungs- sowie Verknüpfungsbefehle).
  • Mehrere Befehle des Befehlssatzes des Mikroprozessors 10 sind darauf beschränkt, nur auf der Ganzzahl-Pipelineeinheit 26 zu laufen. Da z.B. die Befehlspaare im Befehls-Cache 22 durch die Schlitz-A-Adresse gekennzeichnet sind, ist es zwecklos, einen Verzweigungsbefehl im Schlitz A zu plazieren, da der entsprechende Schlitz-B-Befehl nicht zugänglich wäre. Da nur eine einzige aithmetische Gleitkomma-Pipeline vorhanden ist, ist es in ähnlicher Weise nicht möglich, zwei arithmetische Gleitkommabefehle parallel auszuführen. Das Beschränken dieser Befehle auf die Ganzzahl-Pipelineeinheit 26 ermöglicht, den Doppel-Pipeline-Datenpfadentwurf erheblich zu vereinfachen, ohne die Leistungsfähigkeit zu beeinträchtigen.
  • Die Ganzzahleinheit 26 kann beliebige Befehle im Befehlssatz des Mikroprozessors 10 ausführen.
  • Die Befehlsladevorrichtung 18 leitet die Befehlspaarbildung nach einem Befehls-Cache-Fehlgriff ein, wobei sie in diesem Fall beginnt, Befehle im voraus in eine Befehlswarteschlange zu holen. Parallel hierzu untersucht die Befehlsladevorrichtung 18 den nächsten Befehl, der noch nicht aus der Befehlswarteschlange entnommen worden ist, und versucht, diesen gemäß dem folgenden Algorithmus zu packen:
  • Schritt 1: Versuche, den nächsten Befehl in den Schlitz A einzusetzen.
  • (a) Wenn der nächste Befehl nicht leistungskritisch ist, gehe zu Schritt S.
  • (b) Entnehme den nächsten Befehl aus der Befehlswarteschlange und plaziere in vorläufig im Schlitz A.
  • (c) Wenn der Befehl für den Schlitz A ungeeignet ist, oder wenn der Befehl ein Unmittelbar-/Verschiebungs-Feld besitzt, das nicht in 11 Bits dargestellt werden kann, oder wenn der Befehl nicht auf eine Vierwortgrenze ausgerichtet ist, dann gehe zu Schritt 4.
  • (d) Ansonsten, fahre mit Schritt 2 fort.
  • Schritt 2: Versuche, den nächsten Befehl in den Schlitz B einzusetzen.
  • (a) Wenn der nächste Befehl nicht leistungskritisch ist, oder wenn der nächste Befehl ein codiertes Unmittelbar-/Verschiebungs-Feld länger als 11 Bits besitzt, oder wenn der nächste Befehl eine Verzweigung mit einer Verschiebung länger als 17 Bits ist, dann gehe zu Schritt 4.
  • (b) Ansonsten, entnehme den nächsten Befehl aus der Befehlswarteschlange, plaziere ihn im Schlitz B und gehe zu Schritt 3.
  • Schritt 3: Konstruiere einen Befehlspaareintrag.
  • In diesem Fall enthalten sowohl Schlitz A als auch Schlitz B gültige Befehle und alle Paarbildungsbedingungen sind erfüllt. Gebe einen Paareintrag aus und gehe zu Schritt 1.
  • Schritt 4: Konstruiere einen Einzelbefehleintrag.
  • In diesem Fall enthält der Schlitz A einen Befehl, der nicht gepaart werden kann. Bewege diesen Befehl in den Schlitz B. Wenn dieser Befehl ein Unmittelbar-/Verschiebungs-Feld länger als 17 Bits enthält, oder wenn er eine Verzweigung mit einer Verschiebung länger als 17 Bits ist, und wenn er nicht auf eine Vierwortgrenze ausgerichtet ist, dann ersetze ihn durch UNDefiniert. Gebe den Befehl aus und gehe zu Schritt 1.
  • Schritt 5: Handhabe nicht-leistungskritische Befehle.
  • Entnehme den nächsten Befehl aus der Befehlswarteschlange und sende ihn zum Befehlsemulator 20. Nach Abschluß dieses Befehls, gehe zu Schritt 1.
  • Der eben beschriebene Paarbildungsalgorithmus packt immer dann zwei Befehle, wenn sie in einem einzelnen Befehls- Cache-Eintrag gehalten werden können. Es kann jedoch vorkommen, daß diese Befehl abhängig sind, wobei sie in diesem Fall nicht parallel ausgeführt werden können. Die Abhängigkeiten werden vom Ausführungsprozessor 14 erfaßt.

Claims (10)

1. Prozessor, der Befehle ausführt, mit:
einer Prozessoreinheit (14), die mehrere funktionale Einheiten (24, 26, 28) zum parallelen Ausführen von Befehlen enthält,
einer ersten Wiedergewinnungseinrichtung (18) zum Wiedergewinnen eines codierten Befehls von einem externen Hauptspeicher;
einer Decodierungseinrichtung (18, 20) zum Decodieren codierter Befehle;
einer internen Cache-Speichereinrichtung (22), die mehrere Cache-Speicherplätze zum Speichern von Befehlen enthält; und
einer zweiten Wiedergewinnungseinrichtung zum gleichzeitigen Wiedergewinnen mehrerer Befehle von ausgewählten Cache-Speicherplätzen für deren Ausführung durch die funktionalen Einheiten (24, 26, 28), wobei
die interne Cache-Speichereinrichtung (22) so beschaffen ist, daß sie teilweise decodierte Befehle speichert,
die codierten Befehle, die aus dem Hauptspeicher wiedergewonnen werden, durch die Decodierungseinrichtung (18, 20) teilweise decodiert werden, bevor sie in der internen Cache-Speichereinrichtung (22) gespeichert werden, und
die teilweise decodierten Befehle, die von der internen Cache-Speichereinrichtung (22) wiedergewonnen werden, von der zweiten Wiedergewinnungseinrichtung direkt zu den funktionalen Einheiten (24, 26, 28) geschickt werden.
2. Prozessor nach Anspruch 1, wobei jeder der Cache- Speicherplätze mehrere Speicherschlitze enthält, wovon jeder eine Einrichtung zum Speichern eines teilweise decodierten Befehls enthält.
3. Prozessor nach Anspruch 2, wobei die zweite Wiedergewinnungseinrichtung gleichzeitig mehrere teilweise decodierte Befehle von den Speicherschlitzen eines ausgewählten Cache-Speicherplatzes wiedergewinnen kann, damit sie von den mehreren funktionalen Einheiten (24, 26, 28) parallel ausgeführt werden können.
4. Prozessor nach einem der Ansprüche 1 bis 3, wobei jeder der Cache-Speicherplätze eine Einrichtung zum Speichern von Hilfsinformationen enthält, die angeben, ob die mehreren in den Schlitzen eines Cache-Speicherplatzes gespeicherten Befehle unabhängig sind, so daß die Befehle parallel ausgeführt werden können, oder abhängig sind, so daß die Befehle sequentiell ausgeführt werden müssen.
5. Prozessor nach einem der Ansprüche 1 bis 4, wobei der externe Hauptspeicher an den Prozessor durch einen Systembus angeschlossen ist, der an eine Busschnittstelleneinheit (36) zum Wiedergewinnen codierter Kernbefehle und codierter Nichtkern-Befehle vom externen Hauptspeicher angeschlossen ist.
6. Prozessor nach einem der Ansprüche 1 bis 5, wobei die Decodierungseinrichtung (18, 20) eine Befehlsladeeinrichtung (18) zum Übersetzen eines ersten codierten Kernbefehls in einen ersten teilweise decodierten Befehl und eines zweiten codierten Kernbefehls in einen zweiten teilweise decodierten Befehl enthält und ferner eine Einrichtung enthält, die auf einen empfangenen Nichtkern-Befehl anspricht, wobei
die interne Cache-Speichereinrichtung (22) die mehreren Cache-Speicherplätze umfaßt, wobei jeder Cache- Speicherplatz mehrere Speicherschlitze enthält, wovon jeder eine Einrichtung zum Speichern eines decodierten Befehls enthält; und
eine Einrichtung zum gleichzeitigen Wiedergewinnen mehrerer decodierter Befehle aus den Speicherschlitzen eines ausgewählten Cache-Speicherplatzes zum parallelen oder sequentiellen Ausführen durch die mehreren funktionalen Einheiten, und wobei
jeder der Cache-Speicherplätze eine Einrichtung zum Speichern von Hilfsinformationen enthält, die angeben, ob die mehreren Befehle, die in den Schlitzen eines Cache- Speicherplatzes gespeichert sind, unabhängig sind, so daß die Befehle parallel ausgeführt werden können, oder abhängig sind, so daß die Befehle sequentiell ausgeführt werden müssen.
7. Prozessor nach einem der Ansprüche 1 bis 6, wobei die interne Cache-Speichereinrichtung (22) eine mengenassoziative Zweiwege-Organisation enthält.
8. Verfahren zum Ausführen von Befehlen in einem Prozessor, wobei der Prozessor enthält:
eine Prozessoreinheit (14), die mehrere funktionale Einheiten (24, 26, 28) zum parallelen Ausführen von Befehlen enthält;
eine erste Wiedergewinnungseinrichtung (18) zum Wiedergewinnen eines codierten Befehls vom externen Hauptspeicher;
eine Decodierungseinrichtung (18, 20) zum Decodieren codierter Befehle;
eine interne Cache-Speichereinrichtung (22), die mehrere Cache-Speicherplätze zum Speichern von Befehlen enthält; und
eine zweite Wiedergewinnungseinrichtung zum gleichzeitigen Wiedergewinnen mehrerer Befehle von ausgewählten Cache-Speicherplätzen für die Ausführung durch die funktionalen Einheiten (24, 26, 28),
wobei das Verfahren die folgenden Schritte enthält:
(a) Wiedergewinnen codierter Befehle vom externen Hauptspeicher;
(b) teilweises Decodieren der im Wiedergewinnungsschritt (a) wiedergewonnen Befehle;
(c) Speichern der im Decodierungsschritt (b) teilweise decodierten Befehle in der internen Cache-Speichereinrichtung (22); und
(d) Wiedergewinnen der im Speicherschritt (c) gespeicherten teilweise decodierten Befehle für eine nachfolgende Ausführung durch die mehreren funktionalen Einheiten,
wobei die Schritte (a) bis (c) vor der Ausführung des Schrittes (d) ausgeführt werden, wobei teilweise decodierte Befehle direkt zu den funktionalen Einheiten (24, 26, 28) geschickt werden, wodurch die Verarbeitungsgeschwindigkeit erhöht wird.
9. Verfahren nach Anspruch 8, mit dem Schritt des Speicherns von Hilfsinformationen in den Cache-Speicherplätzen, wobei die Hilfsinformationen angeben, ob die mehreren in den Schlitzen eines Cache-Speicherplatzes gespeicherten Befehle unabhängig sind, so daß die Befehle parallel ausgeführt werden können, oder abhängig sind, so daß die Befehle sequentiell ausgeführt werden müssen.
10. Verfahren nach Anspruch 8 oder 9, bei dem die interne Cache-Speichereinrichtung die mehreren Cache-Speicherplätze enthält, wobei jeder Cache-Speicherplatz mehrere Speicherschlitze enthält, wovon jeder eine Einrichtung zum Speichern eines decodierten Befehls enthält; und
mit dem Schritt des gleichzeitigen Wiedergewinnens mehrerer decodierter Befehle aus den Speicherschlitzen eines ausgewählten Cache-Speicherplatzes für eine parallele oder sequentielle Ausführung durch die mehreren funktionalen Einheiten, und mit dem Schritt des Speicherns von Hilfsinformationen in den Cache-Speicherplätzen, wobei die Hilfsinformationen angeben, ob die mehreren in den Schlitzen eines Cache-Speicherplatzes gespeicherten Befehle unabhängig sind, so daß die Befehle parallel ausgeführt werden können, oder abhängig sind, so daß die Befehle sequentiell ausgeführt werden müssen.
DE69130588T 1990-05-29 1991-05-16 Cache-Speicher von partiell decodierten Befehlen und Verfahren hierfür Expired - Fee Related DE69130588T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US52986990A 1990-05-29 1990-05-29

Publications (2)

Publication Number Publication Date
DE69130588D1 DE69130588D1 (de) 1999-01-21
DE69130588T2 true DE69130588T2 (de) 1999-05-27

Family

ID=24111573

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69130588T Expired - Fee Related DE69130588T2 (de) 1990-05-29 1991-05-16 Cache-Speicher von partiell decodierten Befehlen und Verfahren hierfür

Country Status (4)

Country Link
US (2) US5481751A (de)
EP (1) EP0459232B1 (de)
JP (1) JP3186798B2 (de)
DE (1) DE69130588T2 (de)

Families Citing this family (197)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2810068B2 (ja) 1988-11-11 1998-10-15 株式会社日立製作所 プロセッサシステム、コンピュータシステム及び命令処理方法
US5295249A (en) * 1990-05-04 1994-03-15 International Business Machines Corporation Compounding preprocessor for cache for identifying multiple instructions which may be executed in parallel
EP0650612B1 (de) * 1992-03-25 1999-08-18 Zilog Incorporated Schnelle befehlsdekodierung in einem pipeline-prozessor
US5438668A (en) 1992-03-31 1995-08-01 Seiko Epson Corporation System and method for extraction, alignment and decoding of CISC instructions into a nano-instruction bucket for execution by a RISC computer
US5974508A (en) * 1992-07-31 1999-10-26 Fujitsu Limited Cache memory system and method for automatically locking cache entries to prevent selected memory items from being replaced
EP0586057B1 (de) * 1992-08-31 2000-03-01 Sun Microsystems, Inc. Schnelles Vorausholen und Zuteilung von Befehlen mittels vorausschauender Anmerkungen von früher vorausgeholten
JP3417984B2 (ja) * 1993-09-10 2003-06-16 株式会社日立製作所 キャッシュ競合削減コンパイル方法
DE69434669T2 (de) * 1993-10-29 2006-10-12 Advanced Micro Devices, Inc., Sunnyvale Spekulative Befehlswarteschlange für Befehle mit variabler Byteslänge
DE69427734T2 (de) * 1993-10-29 2002-05-23 Advanced Micro Devices, Inc. Linearadressierter Mikroprozessorcachespeicher
US5878245A (en) 1993-10-29 1999-03-02 Advanced Micro Devices, Inc. High performance load/store functional unit and data cache
DE69427265T2 (de) 1993-10-29 2002-05-02 Advanced Micro Devices, Inc. Superskalarbefehlsdekoder
US5689672A (en) * 1993-10-29 1997-11-18 Advanced Micro Devices, Inc. Pre-decoded instruction cache and method therefor particularly suitable for variable byte-length instructions
US5630082A (en) * 1993-10-29 1997-05-13 Advanced Micro Devices, Inc. Apparatus and method for instruction queue scanning
US5510934A (en) * 1993-12-15 1996-04-23 Silicon Graphics, Inc. Memory system including local and global caches for storing floating point and integer data
US5974534A (en) * 1994-02-14 1999-10-26 Hewlett-Packard Company Predecoding and steering mechanism for instructions in a superscalar processor
US5819057A (en) * 1995-01-25 1998-10-06 Advanced Micro Devices, Inc. Superscalar microprocessor including an instruction alignment unit with limited dispatch to decode units
US5878244A (en) * 1995-01-25 1999-03-02 Advanced Micro Devices, Inc. Reorder buffer configured to allocate storage capable of storing results corresponding to a maximum number of concurrently receivable instructions regardless of a number of instructions received
US5742784A (en) * 1995-01-25 1998-04-21 International Business Machines Corporation System for reordering of instructions before placement into cache to reduce dispatch latency
US5903741A (en) * 1995-01-25 1999-05-11 Advanced Micro Devices, Inc. Method of allocating a fixed reorder buffer storage line for execution results regardless of a number of concurrently dispatched instructions
US6237082B1 (en) 1995-01-25 2001-05-22 Advanced Micro Devices, Inc. Reorder buffer configured to allocate storage for instruction results corresponding to predefined maximum number of concurrently receivable instructions independent of a number of instructions received
US5901302A (en) * 1995-01-25 1999-05-04 Advanced Micro Devices, Inc. Superscalar microprocessor having symmetrical, fixed issue positions each configured to execute a particular subset of instructions
US5832249A (en) * 1995-01-25 1998-11-03 Advanced Micro Devices, Inc. High performance superscalar alignment unit
US6006324A (en) 1995-01-25 1999-12-21 Advanced Micro Devices, Inc. High performance superscalar alignment unit
US5632028A (en) * 1995-03-03 1997-05-20 Hal Computer Systems, Inc. Hardware support for fast software emulation of unimplemented instructions
US5737550A (en) * 1995-03-28 1998-04-07 Advanced Micro Devices, Inc. Cache memory to processor bus interface and method thereof
US5802588A (en) * 1995-04-12 1998-09-01 Advanced Micro Devices, Inc. Load/store unit implementing non-blocking loads for a superscalar microprocessor and method of selecting loads in a non-blocking fashion from a load/store buffer
US5832297A (en) * 1995-04-12 1998-11-03 Advanced Micro Devices, Inc. Superscalar microprocessor load/store unit employing a unified buffer and separate pointers for load and store operations
US5822558A (en) * 1995-04-12 1998-10-13 Advanced Micro Devices, Inc. Method and apparatus for predecoding variable byte-length instructions within a superscalar microprocessor
US5758114A (en) * 1995-04-12 1998-05-26 Advanced Micro Devices, Inc. High speed instruction alignment unit for aligning variable byte-length instructions according to predecode information in a superscalar microprocessor
US5764946A (en) * 1995-04-12 1998-06-09 Advanced Micro Devices Superscalar microprocessor employing a way prediction unit to predict the way of an instruction fetch address and to concurrently provide a branch prediction address corresponding to the fetch address
US5887152A (en) * 1995-04-12 1999-03-23 Advanced Micro Devices, Inc. Load/store unit with multiple oldest outstanding instruction pointers for completing store and load/store miss instructions
US5991869A (en) * 1995-04-12 1999-11-23 Advanced Micro Devices, Inc. Superscalar microprocessor including a high speed instruction alignment unit
US5822574A (en) * 1995-04-12 1998-10-13 Advanced Micro Devices, Inc. Functional unit with a pointer for mispredicted resolution, and a superscalar microprocessor employing the same
US5835753A (en) * 1995-04-12 1998-11-10 Advanced Micro Devices, Inc. Microprocessor with dynamically extendable pipeline stages and a classifying circuit
US5819059A (en) * 1995-04-12 1998-10-06 Advanced Micro Devices, Inc. Predecode unit adapted for variable byte-length instruction set processors and method of operating the same
US5900012A (en) * 1995-05-10 1999-05-04 Advanced Micro Devices, Inc. Storage device having varying access times and a superscalar microprocessor employing the same
US5768574A (en) * 1995-06-07 1998-06-16 Advanced Micro Devices, Inc. Microprocessor using an instruction field to expand the condition flags and a computer system employing the microprocessor
US5761712A (en) * 1995-06-07 1998-06-02 Advanced Micro Devices Data memory unit and method for storing data into a lockable cache in one clock cycle by previewing the tag array
US5822778A (en) * 1995-06-07 1998-10-13 Advanced Micro Devices, Inc. Microprocessor and method of using a segment override prefix instruction field to expand the register file
US5875315A (en) * 1995-06-07 1999-02-23 Advanced Micro Devices, Inc. Parallel and scalable instruction scanning unit
US6604190B1 (en) 1995-06-07 2003-08-05 Advanced Micro Devices, Inc. Data address prediction structure and a method for operating the same
US5768610A (en) * 1995-06-07 1998-06-16 Advanced Micro Devices, Inc. Lookahead register value generator and a superscalar microprocessor employing same
US5878255A (en) * 1995-06-07 1999-03-02 Advanced Micro Devices, Inc. Update unit for providing a delayed update to a branch prediction array
US5680578A (en) * 1995-06-07 1997-10-21 Advanced Micro Devices, Inc. Microprocessor using an instruction field to specify expanded functionality and a computer system employing same
US5859991A (en) * 1995-06-07 1999-01-12 Advanced Micro Devices, Inc. Parallel and scalable method for identifying valid instructions and a superscalar microprocessor including an instruction scanning unit employing the method
US5875324A (en) * 1995-06-07 1999-02-23 Advanced Micro Devices, Inc. Superscalar microprocessor which delays update of branch prediction information in response to branch misprediction until a subsequent idle clock
US5987561A (en) 1995-08-31 1999-11-16 Advanced Micro Devices, Inc. Superscalar microprocessor employing a data cache capable of performing store accesses in a single clock cycle
US5893146A (en) * 1995-08-31 1999-04-06 Advanced Micro Design, Inc. Cache structure having a reduced tag comparison to enable data transfer from said cache
US5826071A (en) * 1995-08-31 1998-10-20 Advanced Micro Devices, Inc. Parallel mask decoder and method for generating said mask
US5854921A (en) * 1995-08-31 1998-12-29 Advanced Micro Devices, Inc. Stride-based data address prediction structure
US5781789A (en) * 1995-08-31 1998-07-14 Advanced Micro Devices, Inc. Superscaler microprocessor employing a parallel mask decoder
US5860104A (en) * 1995-08-31 1999-01-12 Advanced Micro Devices, Inc. Data cache which speculatively updates a predicted data cache storage location with store data and subsequently corrects mispredicted updates
US5845323A (en) * 1995-08-31 1998-12-01 Advanced Micro Devices, Inc. Way prediction structure for predicting the way of a cache in which an access hits, thereby speeding cache access time
US5752069A (en) * 1995-08-31 1998-05-12 Advanced Micro Devices, Inc. Superscalar microprocessor employing away prediction structure
US5809273A (en) * 1996-01-26 1998-09-15 Advanced Micro Devices, Inc. Instruction predecode and multiple instruction decode
US5872947A (en) * 1995-10-24 1999-02-16 Advanced Micro Devices, Inc. Instruction classification circuit configured to classify instructions into a plurality of instruction types prior to decoding said instructions
US5933618A (en) * 1995-10-30 1999-08-03 Advanced Micro Devices, Inc. Speculative register storage for storing speculative results corresponding to register updated by a plurality of concurrently recorded instruction
US5881278A (en) * 1995-10-30 1999-03-09 Advanced Micro Devices, Inc. Return address prediction system which adjusts the contents of return stack storage to enable continued prediction after a mispredicted branch
US5892936A (en) * 1995-10-30 1999-04-06 Advanced Micro Devices, Inc. Speculative register file for storing speculative register states and removing dependencies between instructions utilizing the register
US5796974A (en) * 1995-11-07 1998-08-18 Advanced Micro Devices, Inc. Microcode patching apparatus and method
US5903910A (en) * 1995-11-20 1999-05-11 Advanced Micro Devices, Inc. Method for transferring data between a pair of caches configured to be accessed from different stages of an instruction processing pipeline
US5765035A (en) * 1995-11-20 1998-06-09 Advanced Micro Devices, Inc. Recorder buffer capable of detecting dependencies between accesses to a pair of caches
US5835744A (en) * 1995-11-20 1998-11-10 Advanced Micro Devices, Inc. Microprocessor configured to swap operands in order to minimize dependency checking logic
US5787474A (en) * 1995-11-20 1998-07-28 Advanced Micro Devices, Inc. Dependency checking structure for a pair of caches which are accessed from different pipeline stages of an instruction processing pipeline
US5864707A (en) 1995-12-11 1999-01-26 Advanced Micro Devices, Inc. Superscalar microprocessor configured to predict return addresses from a return stack storage
US5930490A (en) * 1996-01-02 1999-07-27 Advanced Micro Devices, Inc. Microprocessor configured to switch instruction sets upon detection of a plurality of consecutive instructions
US5822559A (en) * 1996-01-02 1998-10-13 Advanced Micro Devices, Inc. Apparatus and method for aligning variable byte-length instructions to a plurality of issue positions
US5819080A (en) * 1996-01-02 1998-10-06 Advanced Micro Devices, Inc. Microprocessor using an instruction field to specify condition flags for use with branch instructions and a computer system employing the microprocessor
US5742791A (en) 1996-02-14 1998-04-21 Advanced Micro Devices, Inc. Apparatus for detecting updates to instructions which are within an instruction processing pipeline of a microprocessor
US5848287A (en) 1996-02-20 1998-12-08 Advanced Micro Devices, Inc. Superscalar microprocessor including a reorder buffer which detects dependencies between accesses to a pair of caches
US5787266A (en) * 1996-02-20 1998-07-28 Advanced Micro Devices, Inc. Apparatus and method for accessing special registers without serialization
US5687110A (en) * 1996-02-20 1997-11-11 Advanced Micro Devices, Inc. Array having an update circuit for updating a storage location with a value stored in another storage location
US5715425A (en) * 1996-02-22 1998-02-03 Sun Microsystems, Inc. Apparatus and method for prefetching data into an external cache
US5790821A (en) * 1996-03-08 1998-08-04 Advanced Micro Devices, Inc. Control bit vector storage for storing control vectors corresponding to instruction operations in a microprocessor
US5813033A (en) * 1996-03-08 1998-09-22 Advanced Micro Devices, Inc. Superscalar microprocessor including a cache configured to detect dependencies between accesses to the cache and another cache
US5838943A (en) * 1996-03-26 1998-11-17 Advanced Micro Devices, Inc. Apparatus for speculatively storing and restoring data to a cache memory
US5752259A (en) * 1996-03-26 1998-05-12 Advanced Micro Devices, Inc. Instruction cache configured to provide instructions to a microprocessor having a clock cycle time less than a cache access time of said instruction cache
US5835968A (en) * 1996-04-17 1998-11-10 Advanced Micro Devices, Inc. Apparatus for providing memory and register operands concurrently to functional units
US6085302A (en) * 1996-04-17 2000-07-04 Advanced Micro Devices, Inc. Microprocessor having address generation units for efficient generation of memory operation addresses
US5918056A (en) * 1996-05-17 1999-06-29 Advanced Micro Devices, Inc. Segmentation suspend mode for real-time interrupt support
US5835511A (en) * 1996-05-17 1998-11-10 Advanced Micro Devices, Inc. Method and mechanism for checking integrity of byte enable signals
US5748978A (en) * 1996-05-17 1998-05-05 Advanced Micro Devices, Inc. Byte queue divided into multiple subqueues for optimizing instruction selection logic
US6108769A (en) * 1996-05-17 2000-08-22 Advanced Micro Devices, Inc. Dependency table for reducing dependency checking hardware
US5822560A (en) * 1996-05-23 1998-10-13 Advanced Micro Devices, Inc. Apparatus for efficient instruction execution via variable issue and variable control vectors per issue
US6006320A (en) * 1996-07-01 1999-12-21 Sun Microsystems, Inc. Processor architecture with independent OS resources
US5867680A (en) * 1996-07-24 1999-02-02 Advanced Micro Devices, Inc. Microprocessor configured to simultaneously dispatch microcode and directly-decoded instructions
US5903740A (en) 1996-07-24 1999-05-11 Advanced Micro Devices, Inc. Apparatus and method for retiring instructions in excess of the number of accessible write ports
US6049863A (en) * 1996-07-24 2000-04-11 Advanced Micro Devices, Inc. Predecoding technique for indicating locations of opcode bytes in variable byte-length instructions within a superscalar microprocessor
US5813045A (en) * 1996-07-24 1998-09-22 Advanced Micro Devices, Inc. Conditional early data address generation mechanism for a microprocessor
US5915110A (en) * 1996-07-26 1999-06-22 Advanced Micro Devices, Inc. Branch misprediction recovery in a reorder buffer having a future file
US5872943A (en) * 1996-07-26 1999-02-16 Advanced Micro Devices, Inc. Apparatus for aligning instructions using predecoded shift amounts
US5900013A (en) * 1996-07-26 1999-05-04 Advanced Micro Devices, Inc. Dual comparator scheme for detecting a wrap-around condition and generating a cancel signal for removing wrap-around buffer entries
US5872951A (en) * 1996-07-26 1999-02-16 Advanced Micro Design, Inc. Reorder buffer having a future file for storing speculative instruction execution results
US5946468A (en) * 1996-07-26 1999-08-31 Advanced Micro Devices, Inc. Reorder buffer having an improved future file for storing speculative instruction execution results
US5765016A (en) * 1996-09-12 1998-06-09 Advanced Micro Devices, Inc. Reorder buffer configured to store both speculative and committed register states
US5822575A (en) * 1996-09-12 1998-10-13 Advanced Micro Devices, Inc. Branch prediction storage for storing branch prediction information such that a corresponding tag may be routed with the branch instruction
US5794028A (en) * 1996-10-17 1998-08-11 Advanced Micro Devices, Inc. Shared branch prediction structure
US5870579A (en) * 1996-11-18 1999-02-09 Advanced Micro Devices, Inc. Reorder buffer including a circuit for selecting a designated mask corresponding to an instruction that results in an exception
US5920710A (en) * 1996-11-18 1999-07-06 Advanced Micro Devices, Inc. Apparatus and method for modifying status bits in a reorder buffer with a large speculative state
US5978906A (en) * 1996-11-19 1999-11-02 Advanced Micro Devices, Inc. Branch selectors associated with byte ranges within an instruction cache for rapidly identifying branch predictions
US5995749A (en) * 1996-11-19 1999-11-30 Advanced Micro Devices, Inc. Branch prediction mechanism employing branch selectors to select a branch prediction
US5954816A (en) * 1996-11-19 1999-09-21 Advanced Micro Devices, Inc. Branch selector prediction
US6175906B1 (en) 1996-12-06 2001-01-16 Advanced Micro Devices, Inc. Mechanism for fast revalidation of virtual tags
US5887160A (en) * 1996-12-10 1999-03-23 Fujitsu Limited Method and apparatus for communicating integer and floating point data over a shared data path in a single instruction pipeline processor
US5881305A (en) * 1996-12-13 1999-03-09 Advanced Micro Devices, Inc. Register rename stack for a microprocessor
US5870580A (en) * 1996-12-13 1999-02-09 Advanced Micro Devices, Inc. Decoupled forwarding reorder buffer configured to allocate storage in chunks for instructions having unresolved dependencies
JPH10232779A (ja) * 1997-01-24 1998-09-02 Texas Instr Inc <Ti> 命令並列処理方法及び装置
US5923862A (en) * 1997-01-28 1999-07-13 Samsung Electronics Co., Ltd. Processor that decodes a multi-cycle instruction into single-cycle micro-instructions and schedules execution of the micro-instructions
US5983321A (en) * 1997-03-12 1999-11-09 Advanced Micro Devices, Inc. Cache holding register for receiving instruction packets and for providing the instruction packets to a predecode unit and instruction cache
US5862065A (en) * 1997-02-13 1999-01-19 Advanced Micro Devices, Inc. Method and circuit for fast generation of zero flag condition code in a microprocessor-based computer
US5768555A (en) * 1997-02-20 1998-06-16 Advanced Micro Devices, Inc. Reorder buffer employing last in buffer and last in line bits
US6141740A (en) * 1997-03-03 2000-10-31 Advanced Micro Devices, Inc. Apparatus and method for microcode patching for generating a next address
US6233672B1 (en) 1997-03-06 2001-05-15 Advanced Micro Devices, Inc. Piping rounding mode bits with floating point instructions to eliminate serialization
US5968163A (en) * 1997-03-10 1999-10-19 Advanced Micro Devices, Inc. Microcode scan unit for scanning microcode instructions using predecode data
US5850532A (en) * 1997-03-10 1998-12-15 Advanced Micro Devices, Inc. Invalid instruction scan unit for detecting invalid predecode data corresponding to instructions being fetched
US5852727A (en) * 1997-03-10 1998-12-22 Advanced Micro Devices, Inc. Instruction scanning unit for locating instructions via parallel scanning of start and end byte information
US5859992A (en) * 1997-03-12 1999-01-12 Advanced Micro Devices, Inc. Instruction alignment using a dispatch list and a latch list
US5828873A (en) * 1997-03-19 1998-10-27 Advanced Micro Devices, Inc. Assembly queue for a floating point unit
US5887185A (en) * 1997-03-19 1999-03-23 Advanced Micro Devices, Inc. Interface for coupling a floating point unit to a reorder buffer
US5930492A (en) * 1997-03-19 1999-07-27 Advanced Micro Devices, Inc. Rapid pipeline control using a control word and a steering word
US5859998A (en) * 1997-03-19 1999-01-12 Advanced Micro Devices, Inc. Hierarchical microcode implementation of floating point instructions for a microprocessor
US5963723A (en) * 1997-03-26 1999-10-05 International Business Machines Corporation System for pairing dependent instructions having non-contiguous addresses during dispatch
US5987235A (en) * 1997-04-04 1999-11-16 Advanced Micro Devices, Inc. Method and apparatus for predecoding variable byte length instructions for fast scanning of instructions
TW384445B (en) * 1997-04-11 2000-03-11 Ibm Method for bursting processor data to or from an I/O device
US5901076A (en) * 1997-04-16 1999-05-04 Advanced Micro Designs, Inc. Ripple carry shifter in a floating point arithmetic unit of a microprocessor
US6003128A (en) * 1997-05-01 1999-12-14 Advanced Micro Devices, Inc. Number of pipeline stages and loop length related counter differential based end-loop prediction
US6122729A (en) 1997-05-13 2000-09-19 Advanced Micro Devices, Inc. Prefetch buffer which stores a pointer indicating an initial predecode position
US5845101A (en) * 1997-05-13 1998-12-01 Advanced Micro Devices, Inc. Prefetch buffer for storing instructions prior to placing the instructions in an instruction cache
US5940602A (en) * 1997-06-11 1999-08-17 Advanced Micro Devices, Inc. Method and apparatus for predecoding variable byte length instructions for scanning of a number of RISC operations
US6009511A (en) * 1997-06-11 1999-12-28 Advanced Micro Devices, Inc. Apparatus and method for tagging floating point operands and results for rapid detection of special floating point numbers
US5872946A (en) * 1997-06-11 1999-02-16 Advanced Micro Devices, Inc. Instruction alignment unit employing dual instruction queues for high frequency instruction dispatch
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
US5898865A (en) * 1997-06-12 1999-04-27 Advanced Micro Devices, Inc. Apparatus and method for predicting an end of loop for string instructions
US5983337A (en) * 1997-06-12 1999-11-09 Advanced Micro Devices, Inc. Apparatus and method for patching an instruction by providing a substitute instruction or instructions from an external memory responsive to detecting an opcode of the instruction
US5933629A (en) * 1997-06-12 1999-08-03 Advanced Micro Devices, Inc. Apparatus and method for detecting microbranches early
US5933626A (en) * 1997-06-12 1999-08-03 Advanced Micro Devices, Inc. Apparatus and method for tracing microprocessor instructions
US6012125A (en) * 1997-06-20 2000-01-04 Advanced Micro Devices, Inc. Superscalar microprocessor including a decoded instruction cache configured to receive partially decoded instructions
US5948098A (en) * 1997-06-30 1999-09-07 Sun Microsystems, Inc. Execution unit and method for executing performance critical and non-performance critical arithmetic instructions in separate pipelines
US5978901A (en) * 1997-08-21 1999-11-02 Advanced Micro Devices, Inc. Floating point and multimedia unit with data type reclassification capability
US6101577A (en) * 1997-09-15 2000-08-08 Advanced Micro Devices, Inc. Pipelined instruction cache and branch prediction mechanism therefor
US5931943A (en) * 1997-10-21 1999-08-03 Advanced Micro Devices, Inc. Floating point NaN comparison
US6185675B1 (en) 1997-10-24 2001-02-06 Advanced Micro Devices, Inc. Basic block oriented trace cache utilizing a basic block sequence buffer to indicate program order of cached basic blocks
US6032252A (en) * 1997-10-28 2000-02-29 Advanced Micro Devices, Inc. Apparatus and method for efficient loop control in a superscalar microprocessor
US5974542A (en) * 1997-10-30 1999-10-26 Advanced Micro Devices, Inc. Branch prediction unit which approximates a larger number of branch predictions using a smaller number of branch predictions and an alternate target indication
US6230259B1 (en) 1997-10-31 2001-05-08 Advanced Micro Devices, Inc. Transparent extended state save
US6157996A (en) * 1997-11-13 2000-12-05 Advanced Micro Devices, Inc. Processor programably configurable to execute enhanced variable byte length instructions including predicated execution, three operand addressing, and increased register space
US6199154B1 (en) 1997-11-17 2001-03-06 Advanced Micro Devices, Inc. Selecting cache to fetch in multi-level cache system based on fetch address source and pre-fetching additional data to the cache for future access
US6516395B1 (en) 1997-11-20 2003-02-04 Advanced Micro Devices, Inc. System and method for controlling access to a privilege-partitioned address space with a fixed set of attributes
US6079003A (en) * 1997-11-20 2000-06-20 Advanced Micro Devices, Inc. Reverse TLB for providing branch target address in a microprocessor having a physically-tagged cache
US6154818A (en) * 1997-11-20 2000-11-28 Advanced Micro Devices, Inc. System and method of controlling access to privilege partitioned address space for a model specific register file
US6079005A (en) * 1997-11-20 2000-06-20 Advanced Micro Devices, Inc. Microprocessor including virtual address branch prediction and current page register to provide page portion of virtual and physical fetch address
US5974432A (en) * 1997-12-05 1999-10-26 Advanced Micro Devices, Inc. On-the-fly one-hot encoding of leading zero count
GB2332075B (en) * 1997-12-06 2002-08-07 Mitel Corp Optimized instruction storage and distribution for parallel processors architectures
US5870578A (en) * 1997-12-09 1999-02-09 Advanced Micro Devices, Inc. Workload balancing in a microprocessor for reduced instruction dispatch stalling
US6097716A (en) * 1997-12-12 2000-08-01 Lucent Technologies Inc. Rate detection for multi-rate communications
US6016533A (en) * 1997-12-16 2000-01-18 Advanced Micro Devices, Inc. Way prediction logic for cache array
US6016545A (en) * 1997-12-16 2000-01-18 Advanced Micro Devices, Inc. Reduced size storage apparatus for storing cache-line-related data in a high frequency microprocessor
US6157986A (en) * 1997-12-16 2000-12-05 Advanced Micro Devices, Inc. Fast linear tag validation unit for use in microprocessor
US6112296A (en) * 1997-12-18 2000-08-29 Advanced Micro Devices, Inc. Floating point stack manipulation using a register map and speculative top of stack values
US6018798A (en) * 1997-12-18 2000-01-25 Advanced Micro Devices, Inc. Floating point unit using a central window for storing instructions capable of executing multiple instructions in a single clock cycle
US6112018A (en) * 1997-12-18 2000-08-29 Advanced Micro Devices, Inc. Apparatus for exchanging two stack registers
US6141745A (en) * 1998-04-30 2000-10-31 Advanced Micro Devices, Inc. Functional bit identifying a prefix byte via a particular state regardless of type of instruction
US6175908B1 (en) 1998-04-30 2001-01-16 Advanced Micro Devices, Inc. Variable byte-length instructions using state of function bit of second byte of plurality of instructions bytes as indicative of whether first byte is a prefix byte
US6256727B1 (en) 1998-05-12 2001-07-03 International Business Machines Corporation Method and system for fetching noncontiguous instructions in a single clock cycle
SG83719A1 (en) * 1998-05-21 2001-10-16 Texas Instruments Inc Method and system for buffering instructions in a processor
US6275924B1 (en) 1998-09-15 2001-08-14 Texas Instruments Incorporated System for buffering instructions in a processor by reissuing instruction fetches during decoder stall time
US6122656A (en) 1998-07-31 2000-09-19 Advanced Micro Devices, Inc. Processor configured to map logical register numbers to physical register numbers using virtual register numbers
US6119223A (en) * 1998-07-31 2000-09-12 Advanced Micro Devices, Inc. Map unit having rapid misprediction recovery
US6230262B1 (en) 1998-07-31 2001-05-08 Advanced Micro Devices, Inc. Processor configured to selectively free physical registers upon retirement of instructions
US6339822B1 (en) 1998-10-02 2002-01-15 Advanced Micro Devices, Inc. Using padded instructions in a block-oriented cache
US6223254B1 (en) 1998-12-04 2001-04-24 Stmicroelectronics, Inc. Parcel cache
US6546478B1 (en) 1999-10-14 2003-04-08 Advanced Micro Devices, Inc. Line predictor entry with location pointers and control information for corresponding instructions in a cache line
US6636959B1 (en) 1999-10-14 2003-10-21 Advanced Micro Devices, Inc. Predictor miss decoder updating line predictor storing instruction fetch address and alignment information upon instruction decode termination condition
US6647490B2 (en) 1999-10-14 2003-11-11 Advanced Micro Devices, Inc. Training line predictor for branch targets
US6351802B1 (en) * 1999-12-03 2002-02-26 Intel Corporation Method and apparatus for constructing a pre-scheduled instruction cache
US6748492B1 (en) 2000-08-07 2004-06-08 Broadcom Corporation Deterministic setting of replacement policy in a cache through way selection
US6732234B1 (en) 2000-08-07 2004-05-04 Broadcom Corporation Direct access mode for a cache
US6848024B1 (en) 2000-08-07 2005-01-25 Broadcom Corporation Programmably disabling one or more cache entries
US6981132B2 (en) 2000-08-09 2005-12-27 Advanced Micro Devices, Inc. Uniform register addressing using prefix byte
US6877084B1 (en) 2000-08-09 2005-04-05 Advanced Micro Devices, Inc. Central processing unit (CPU) accessing an extended register set in an extended register mode
US6738792B1 (en) 2001-03-09 2004-05-18 Advanced Micro Devices, Inc. Parallel mask generator
US6748495B2 (en) 2001-05-15 2004-06-08 Broadcom Corporation Random generator
GB2381602B (en) 2001-10-12 2004-04-14 Siroyan Ltd Early resolving instructions
US20030196072A1 (en) * 2002-04-11 2003-10-16 Chinnakonda Murali S. Digital signal processor architecture for high computation speed
US7266587B2 (en) 2002-05-15 2007-09-04 Broadcom Corporation System having interfaces, switch, and memory bridge for CC-NUMA operation
JP2004013602A (ja) * 2002-06-07 2004-01-15 Handotai Rikougaku Kenkyu Center:Kk データ駆動プロセッサのエミュレーションシステム
GB2393274B (en) * 2002-09-20 2006-03-15 Advanced Risc Mach Ltd Data processing system having an external instruction set and an internal instruction set
US7117290B2 (en) 2003-09-03 2006-10-03 Advanced Micro Devices, Inc. MicroTLB and micro tag for reducing power in a processor
US20050138331A1 (en) * 2003-12-22 2005-06-23 Alberola Carl A. Direct memory access unit with instruction pre-decoder
US7685410B2 (en) 2007-02-13 2010-03-23 Global Foundries Inc. Redirect recovery cache that receives branch misprediction redirects and caches instructions to be dispatched in response to the redirects
US8578387B1 (en) * 2007-07-31 2013-11-05 Nvidia Corporation Dynamic load balancing of instructions for execution by heterogeneous processing engines
US9304775B1 (en) 2007-11-05 2016-04-05 Nvidia Corporation Dispatching of instructions for execution by heterogeneous processing engines
US9124233B2 (en) * 2010-08-25 2015-09-01 Vixs Systems, Inc Audio equalizer and methods for use therewith
US9430243B2 (en) 2012-04-30 2016-08-30 Apple Inc. Optimizing register initialization operations
US9405690B2 (en) 2013-08-07 2016-08-02 Oracle International Corporation Method for storing modified instruction data in a shared cache
US10311191B2 (en) 2017-01-26 2019-06-04 Advanced Micro Devices, Inc. Memory including side-car arrays with irregular sized entries
US11100001B2 (en) 2017-05-04 2021-08-24 Sisense Ltd. Techniques for improving space utilization in a cache

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4589087A (en) * 1983-06-30 1986-05-13 International Business Machines Corporation Condition register architecture for a primitive instruction set machine
US4873629A (en) * 1984-06-20 1989-10-10 Convex Computer Corporation Instruction processing unit for computer
US4620275A (en) * 1984-06-20 1986-10-28 Wallach Steven J Computer system
US4646233A (en) * 1984-06-20 1987-02-24 Weatherford James R Physical cache unit for computer
DE3751503T2 (de) * 1986-03-26 1996-05-09 Hitachi Ltd Datenprozessor in Pipelinestruktur mit der Fähigkeit mehrere Befehle parallel zu dekodieren und auszuführen.
US4766566A (en) * 1986-08-18 1988-08-23 International Business Machines Corp. Performance enhancement scheme for a RISC type VLSI processor using dual execution units for parallel instruction processing
US4933837A (en) * 1986-12-01 1990-06-12 Advanced Micro Devices, Inc. Methods and apparatus for optimizing instruction processing in computer systems employing a combination of instruction cache and high speed consecutive transfer memories
US5050070A (en) * 1988-02-29 1991-09-17 Convex Computer Corporation Multi-processor computer system having self-allocating processors
US5202967A (en) * 1988-08-09 1993-04-13 Matsushita Electric Industrial Co., Ltd. Data processing apparatus for performing parallel decoding and parallel execution of a variable word length instruction
US5101341A (en) * 1988-08-25 1992-03-31 Edgcore Technology, Inc. Pipelined system for reducing instruction access time by accumulating predecoded instruction bits a FIFO
US5050068A (en) * 1988-10-03 1991-09-17 Duke University Method and apparatus for using extracted program flow information to prepare for execution multiple instruction streams
US5051885A (en) * 1988-10-07 1991-09-24 Hewlett-Packard Company Data processing system for concurrent dispatch of instructions to multiple functional units
JP2810068B2 (ja) * 1988-11-11 1998-10-15 株式会社日立製作所 プロセッサシステム、コンピュータシステム及び命令処理方法
US5129067A (en) * 1989-06-06 1992-07-07 Advanced Micro Devices, Inc. Multiple instruction decoder for minimizing register port requirements

Also Published As

Publication number Publication date
US5669011A (en) 1997-09-16
EP0459232B1 (de) 1998-12-09
DE69130588D1 (de) 1999-01-21
JPH0553795A (ja) 1993-03-05
EP0459232A3 (en) 1992-04-15
US5481751A (en) 1996-01-02
JP3186798B2 (ja) 2001-07-11
EP0459232A2 (de) 1991-12-04

Similar Documents

Publication Publication Date Title
DE69130588T2 (de) Cache-Speicher von partiell decodierten Befehlen und Verfahren hierfür
DE69427672T2 (de) Befehlscachespeicher für Befehle mit variabler Byteslänge
DE69130379T2 (de) Datenvorausladebefehl in einem Prozessor mit reduziertem Befehlssatz
DE69727773T2 (de) Verbesserte Verzweigungsvorhersage in einem Pipelinemikroprozessor
DE69127242T2 (de) Sicherung der Datenintegrität in einem Multipipelineprozessorsystem
DE69429061T2 (de) Superskalarmikroprozessoren
DE69129881T2 (de) Verzweigung in einem Pipeline-Prozessor
DE69130138T2 (de) Sprungvorhersageeinheit für hochleistungsfähigen Prozessor
DE69508303T2 (de) Superskalarmikroprozessor mit einer Vorrichtung zur Namenänderung und Beförderung einer Operandenflagge und Verfahren zur Bearbeitung von RISC-ähnliche Funktionen in diesem Superskalarmikroprozessor
DE69131189T2 (de) Bytevergleich-Operation für einen hochleistungsfähigen Prozessor
DE69325086T2 (de) Verfahren und System für spekulative Befehlsausführung
DE69130519T2 (de) Hochleistungsfähiger Multiprozessor mit Gleitkommaeinheit und Verfahren zu seinem Betrieb
DE69130495T2 (de) Umwandlung der Befehle von internen Prozessorregistern in I/O-Adressraum
DE69434669T2 (de) Spekulative Befehlswarteschlange für Befehle mit variabler Byteslänge
DE68928812T2 (de) Vorrichtung zur Auflösung von einer variablen Anzahl von möglichen Speicherzugriffskonflikten in einem Pipeline-Rechnersystem und Verfahren dazu
DE69031433T2 (de) Speicherzugriffsausnahmebehandlung bei vorausgelesenen Befehlswörtern in dem Befehlsfliessband eines Rechners mit virtuellem Speicher
DE69904189T2 (de) Konfigurierter prozessor zur abbildung von logischen registernummern auf physikalische registernummern unter verwendung von virtuellen registernummern
DE69433339T2 (de) Lade-/Speicherfunktionseinheiten und Datencachespeicher für Mikroprozessoren
DE69607760T2 (de) Ungeordnete lade-/speicher-ausführungssteuerung
DE69031991T2 (de) Verfahren und Gerät zur Beschleunigung von Verzweigungsbefehlen
DE69229198T2 (de) Verzweigungsbefehlprozessor und Verfahren
DE69427734T2 (de) Linearadressierter Mikroprozessorcachespeicher
DE69111707T2 (de) Fehlerübergangsmodus für eine Mehrrechneranordnung.
DE69631778T2 (de) Flexible implementierung eines systemverwaltungsmodus in einem prozessor
DE69127726T2 (de) Kombinierte Warteschlange für Entwertungen und Rücklaufdaten in einem Multiprozessorsystem

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee