DE69233313T2 - Hochleistungsarchitektur für RISC-Mikroprozessor - Google Patents

Hochleistungsarchitektur für RISC-Mikroprozessor Download PDF

Info

Publication number
DE69233313T2
DE69233313T2 DE69233313T DE69233313T DE69233313T2 DE 69233313 T2 DE69233313 T2 DE 69233313T2 DE 69233313 T DE69233313 T DE 69233313T DE 69233313 T DE69233313 T DE 69233313T DE 69233313 T2 DE69233313 T2 DE 69233313T2
Authority
DE
Germany
Prior art keywords
instruction
instructions
unit
register
execution
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE69233313T
Other languages
English (en)
Other versions
DE69233313D1 (de
Inventor
Le Trong Monte Sereno Nguyen
Derek J. Los Gatos Lentz
Yoshiyuki Santa Clara Miyayama
Sanjiv Freemont Garg
Yasuaki Newark Hagiwara
Johannes Redwood City Wang
Tei-Li Palo Alto Lau
Quang H. San Jose Trang
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.)
Seiko Epson Corp
Original Assignee
Seiko Epson 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 Seiko Epson Corp filed Critical Seiko Epson Corp
Publication of DE69233313D1 publication Critical patent/DE69233313D1/de
Application granted granted Critical
Publication of DE69233313T2 publication Critical patent/DE69233313T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • 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, 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
    • 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
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30061Multi-way branch instructions, e.g. CASE
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
    • 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/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30112Register structure comprising data of variable length
    • 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/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30116Shadow registers, e.g. coupled registers, not forming part of the register space
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30123Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/3013Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30134Register stacks; shift registers
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/327Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for interrupts
    • 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, 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, look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • 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, look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • G06F9/3806Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
    • 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, look ahead
    • G06F9/3824Operand accessing
    • G06F9/3826Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
    • 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, look ahead
    • G06F9/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • 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, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • 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, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • 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, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming
    • 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, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • 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, look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3856Reordering of instructions, e.g. using queues or age tags
    • 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, look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • 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, look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3863Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers
    • 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, look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3865Recovery, e.g. branch miss-prediction, exception handling using deferred exception handling, e.g. exception flags
    • 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, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units

Description

  • Hintergrund der Erfindung
  • 1. Sachgebiet der Erfindung
  • Die vorliegende Erfindung bezieht sich allgemein auf das Design von Mikroprozessor-Architekturen vom RISC-Typ, und, insbesondere, auf RISC-Mikroprozessor-Architekturen, die dazu geeignet sind, mehrere Instruktionen gleichzeitig auszuführen.
  • 2. Beschreibung des in Bezug stehenden Stands der Technik
  • In neuerer Zeit hat sich das Design von Mikroprozessor-Architekturen von der Verwendung von komplexen Instruction Set Computer (CISC) zu einfacheren Reduced Instruction Computer (RISC) Architekturen entwickelt. Die CISC-Architekturen sind für die Vorsehung von im wesentlichen Hardware anzuführen, um eine Instruktions-Ausführungs-Pipeline auszuführen und zu unterstützen bzw. zu übertragen. Die typische, konventionelle Pipeline-Struktur umfaßt, in einer festgelegten Reihenfolge, Instruktions-Abrufungs-, Instruktions-Decodier-, Daten-Lade-, Instruktions-Ausführungs- und Daten-Speicher-Stufen. Ein Funktionsvorteil wird durch die gleichzeitige Ausführung verschiedener Teile eines Satzes von Instruktionen durch die jeweiligen Stufen der Pipeline erhalten. Je länger die Pipeline ist, desto größer ist die Anzahl von Ausführungs-Stufen, die verfügbar sind, und desto größer ist die Anzahl von Instruktionen, die gleichzeitig ausgeführt werden können.
  • Zwei allgemeine Probleme begrenzen die Effektivität von CISC-Pipeline-Architekturen. Das erste Problem ist dasjenige, daß konditionale Verzweigungs-Instruktionen nicht adäquat evaluiert werden können, bis eine Vor-Zustands-Code-Einstell-Instruktion im wesentlichen eine Ausführung über die Pipeline abgeschlossen hat.
  • Demzufolge wird die darauffolgende Ausführung der konditionalen Verzweigungs-Instruktion verzögert, oder angehalten, was dazu führt, daß verschiedene Pipeline-Stufen inaktiv für mehrfache Prozessorzyklen verbleiben. Typische Zustands-Code werden in ein Zustands-Code-Register, auch als ein Prozessor-Status-Register (PSR) bezeichnet, nur bei Abschluß einer Verarbeitung einer Instruktion über die Ausführungs-Stufe eingeschrieben. Demzufolge muß die Pipeline mit der konditionalen Verzweigungs-Instruktion in der Decodier-Stufe für eine von mehrfachen Prozessorzyklen abhängigen Bestimmung des Verzweigungs-Zustands-Codes angehalten werden. Das Anhalten der Pipeline führt zu einem wesentlichen Verlust an Durchsatz. Weiterhin wird der durchschnittliche Durchsatz des Computers im wesentlichen von der bloßen Frequenz von konditionalen Verzweigungs-Instruktionen abhängig sein, die kurz nach den den Zustands-Code einstellenden Instruktionen in der Programm-Instruktions-Folge auftreten.
  • Ein zweites Problem entsteht aus der Tatsache, daß Instruktionen, die dicht in der Programm-Instruktions-Folge auftreten, dazu tendieren werden, auf dieselben Register der Prozessor-Register-Datei Bezug zu nehmen. Daten-Register werden oftmals als die Bestimmung oder Quelle von Daten in den Speicher- und Lade-Stufen von aufeinanderfolgenden Instruktionen verwendet. Allgemein muß eine Instruktion, die Daten zu der Register-Datei hin speichert, eine Verarbeitung durch mindestens die Ausführungs-Stufe abschließen, bevor der Lade-Stufe, die eine darauffolgende Instruktion verarbeitet, erlaubt werden kann, auf die Register-Datei zuzugreifen. Da die Ausführung von vielen Instruktionen mehrfache Prozessorzyklen in einer einzelnen Ausführungs-Stufe erfordert, um Speicher-Daten zu erzeugen, wird die gesamte Pipeline typischerweise für die Dauer einer Ausführungs-Stufen-Operation angehalten. Demzufolge ist der Ausführungs-Durchsatz des Computers im wesentlichen von der internen Reihenfolge der Instruktions-Folge, die ausgeführt werden soll, abhängig.
  • Ein drittes Problem entsteht nicht so stark aufgrund der Ausführung der Instruktionen selbst, sondern durch die Wartung der Hardware unterstützten Instruktions-Ausführungsumgebung, oder des Zustands der Maschine, des Mikroprozessors selbst. Heutige CISC-Mikroprozessor-Hardware-Untersysteme können das Auftreten von Trap-Zuständen während der Ausführung von Instruktionen erfassen. Traps umfassen Hardware-Unterbrechungen, Software-Trap und Ausnahmen. Jede Trap erfordert eine Ausführung von entsprechenden Trap-Handhabungs-Programmen durch den Prozessor. Beim Erfassen der Trap muß die Ausführungs-Pipeline freigemacht werden, um die unmittelbare Ausführung des Trap-Handhabungs-Programms zu ermöglichen. Gleichzeitig muß der Zustand der Maschine als der präzise Punkt des Auftretens der Trap eingerichtet werden; der präzise Punkt eines Auftretens bei der Schlußfolgerung der ersten, momentan ausführenden Instruktion für Unterbrechungen und Traps und unmittelbar vor einer Instruktion, die aufgrund einer Ausnahme fehlschlägt. Darauffolgend muß der Zustand der Maschine und wiederum in Abhängigkeit von der Art der Trap die Ausführungs-Instruktion selbst bei dem Abschluß des Handhabungs-Programms erneut gespeichert werden. Demzufolge wird, mit jeder Trap oder einem dazu in Bezug stehenden Ereignis, eine Latenz durch das Freimachen der Pipeline bei sowohl dem Anfang als auch dem Ende des Handhabungs-Programms und einer Speicherung und einer Rückführung des präzisen Zustands der Maschine mit einer entsprechenden Verringerung des Durchsatzes des Prozessors eingeführt.
  • Diesen Problemen hat man sich auf verschiedene Art und Weise zugewandt bei der Bemühung, den potentiellen Durchsatz von CISC-Architekturen zu verbessern. Annahmen können in Bezug auf die geeignete Ausführung von konditionalen Verzweigungs-Instruktionen vorgenommen werden, um dadurch zu ermöglichen, daß eine Pipeline-Ausführung versuchsweise vor der abschließenden Beendigung des Verzweigungs-Zustands-Codes fortschreitet. Annahmen können auch dahingehend vorgenommen werden, ob ein Register modifiziert werden wird, um dadurch zu ermöglichen, daß darauffolgende Instruktionen auch versuchsweise ausgeführt werden. Schließlich kann im wesentlichen zusätzliche Hardware vorgesehen werden, um das Auftreten von Ausnahmen zu minimieren, die eine Ausführung von Handhabungs-Programmen erfordern und dadurch die Frequenz von Ausnahmen reduzieren, die die Verarbeitung der Programm-Instruktions-Folge unterbrechen können.
  • Diese Lösungen führen auch, während sie offensichtlich im wesentlichen zusätzliche Hardware-Komplexitäten einführen, bestimmte Probleme, die sie selbst betreffen, ein. Die fortgeführte Ausführung von Instruktionen vor einer abschließenden Auflösung entweder eines Verzweigungs-Zustands oder eines Register-Datei-Speicher-Zugriffs erfordern, daß der Zustand der Maschine zu irgendeinem von mehreren Punkten in der Programm-Instruktions-Folge zurückstellbar ist, einschließlich der Stelle der konditionalen Verzweigung, jeder Modifikation einer Register-Datei und für irgendein Auftreten einer Ausnahme; potentiell zu einem Punkt vor der vollständig abgeschlossenen Ausführung der letzten paar Instruktionen. Demzufolge ist sogar mehr unterstützende Hardware erforderlich und muß besonders ausgelegt sein, um nicht wesentlich die Zykluszeit irgendeiner Pipeline-Stufe zu erhöhen.
  • RISC-Architekturen sind dahingehend betrachtet worden, viele der vorstehenden Probleme durch drastisches Vereinfachen der Hardware-Umsetzung der Mikroprozessor-Architektur zu vermeiden. In dem Extremfall führt jede RISC-Instruktion nur drei in Form einer Pipeline verknüpfte Programmzyklen, einschließlich eines Ladezyklus, eines Ausfüh rungszyklus und eines Speicherzyklus, aus. Durch die Verwendung der Bypass-Führung von Lade- und Speicher-Daten können herkömmliche RISC-Architekturen im wesentlichen eine einzelne Instruktion pro Zyklus in der Drei-Stufen-Pipeline ausführen.
  • Wenn immer es möglich ist, wird eine Hardware-Unterstützung in RISC-Architekturen zugunsten von Softwareprogrammen zum Ausführen der erforderlichen Funktionen minimiert. Demzufolge bringt die RISC Architektur die Hoffnung einer wesentlichen Flexibilität und einer hohen Geschwindigkeit durch die Verwendung einer einfachen Lade/Speicher-Instruktions-Einstellung, die durch eine optimal angepaßte Pipeline ausgeführt wird, mit sich. Und in der Praxis sind RISC-Architekturen dahingehend befunden worden, daß sie hinsichtlich der Balance zwischen einer kurzen Hochleistungs-Pipeline und dem Erfordernis, wesentlich größere Anzahlen von Instruktionen auszuführen, um alle erforderlichen Funktionen umzusetzen, von Vorteil sind.
  • Das Design der RISC-Architektur vermeidet oder minimiert allgemein die Probleme, die mit CISC-Architekturen verbunden sind, und zwar hinsichtlich von Verzweigungen, Register-Referenzen und Ausnahmen. Die Pipeline, die in einer RISC Architektur eingesetzt ist, ist kurz und hinsichtlich der Geschwindigkeit optimiert. Die Kürze der Pipeline minimiert die Konsequenzen eines Pipeline-Anhaltens oder -Löschens ebenso wie eine Minimierung der Probleme beim erneuten Speichern des Zustands der Maschine zu einem früheren Ausführungspunkt.
  • Allerdings können wesentliche Durchsatz-Funktions-Erhöhungen gegenüber allgemein derzeit realisierten Niveaus nicht einfach durch die herkömmliche RISC-Architektur erreicht werden. Demzufolge sind alternativ sogenannte Super-Skalierer-Architekturen verschiedentlich vorgeschlagen worden. Diese Architekturen versuchen allgemein, mehrfache Instruktionen gleichzeitig auszuführen und dadurch proportional den Durchsatz des Prozessors zu erhöhen. Allerdings werden solche Architekturen wiederum ähnlichen, wenn nicht derselben, konditionalen Verzweigungs-, Register-Bezugnahme- und Ausnahme-Handhabungsproblemen unterworfen, wie sie bei CISC-Architekturen vorhanden sind.
  • V. Popescu et al., „The Metaflow Architecture", IEEE Mikro, Vol. 11, No. 3, 1991, Seiten 10 bis 13, 63 bis 73, offenbart die Metaflow-Architektur und deren Ausführung in einem Superscalar-Prozessor. Die primären Hardware-Elemente umfassen einen Instruktionscache, eine Registerdatei und eine oder mehrere Ausführungseinheit(en), alle durch Pipeline-Register separiert. Die Registerdatei bildet einen Speicher für acht Register. Ein Satz von bestimmten Ausführungseinheiten ist vorgesehen. In der Abrufphase ruft der Prozessor eine Instruktion bzw. einen Befehl von dem Instruktions-Cache ab. Die Ausgabe-Logik decodiert partiell die Instruktion, um den Typ einer Ausführungseinheit, die benötigt wird, zu bestimmen, und liest die Operanden der Instruktion von der Registerdatei. In der Aktualisierungsphase wird das Ergebnis der Instruktionsausführung in die Stelle deren Bestimmungsregister in der Registerdatei hineingeschrieben. Es ist beschrieben, dass ein Vorteil einer Ausführung außerhalb der Reihenfolge (out-of-order) derjenige ist, Duplikat-Ausführungseinheiten parallel laufen zu lassen. In dem entkoppelten Ablaufplanungsschema werden zwei aufeinanderfolgende Instruktionen pro Taktzyklus geplant bzw. behandelt. Eine ideale Ablaufplanungseinrichtung könnte acht Instruktionen während der ersten vier Zyklen ablaufmäßig geplant haben. Eine Ablagephase ist offenbart, bei der die Befehle dazu führen, dass sie für eine Zeitperiode vor einem Schreiben davon zu der Registerdatei ausgelagert werden, wobei sie von der Ergebnis-Auslagerung in die Registerdatei bewegt werden. Instruktionen bewegen sich in die DRIS (deferred-scheduling, register-renaming instruction shelf) zu dem Ausgabezeitpunkt in der Reihenfolge, in der sie ausgegeben wurden. Sie verbleiben dort, und zwar in dieser Reihenfolge, zu der Ablagezeit, bis sie entfernt werden. Weiterhin wird eine Verzweigungsausführungseinheit beschrieben, die eine Verzweigungsinstruktion pro Taktzyklus verarbeitet. Die Instruktionsausgabeeinheit ruft vier Instruktionen pro Taktzyklus ab. Der Ablageprozess kann bis zu acht Instruktionen pro Taktzyklen ablegen.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Es ist die Aufgabe der Erfindung, ein Verfahren zum Verarbeiten von Daten in einem Mikroprozessorsystem, einen Superscalar-Mikroprozessor und ein Mikroprozessorsystem mit einer wesentlich verbesserten Funktion zu schaffen.
  • Diese Aufgabe wird durch die Erfindung, wie sie in den unabhängigen Ansprüchen beansprucht ist, gelöst.
  • Bevorzugte Ausführungsformen sind in den abhängigen Ansprüchen definiert.
  • Demzufolge wird eine Super-Skalar-Prozessor-Architektur, auf RISC basierend, mit hoher Leistung, geschaffen, die wesentliche Funktionsvorteile gegenüber herkömmlichen CISC- und RISC-Architekturen besitzt, und die weiterhin für eine Mikroprozessor-Umsetzung geeignet ist.
  • Dies wird durch die Vorsehung einer Mikroprozessor-Architektur erreicht, die in der Lage ist, gleichzeitige Instruktionen auszuführen, die von einem Instruktionsspeicher erhalten sind. Die Mikroprozessor-Architektur umfaßt eine Instruktions-Abrufeinheit zum Abrufen vorab von Instruktions-Sätzen von dem Instruktionsspeicher. Jeder Instruktions-Satz umfaßt eine Mehrzahl von Instruktionen mit festgelegter Länge. Eine Instruktions-FIFO ist zum Puffern von Instruktions-Sätzen in einer Mehrzahl von Instruktions-Satz-Puffern vorgesehen, umfassend einen ersten Puffer und einen zweiten Puffer. Eine Instruktions-Ausführungseinheit, umfassend eine Registerdatei und eine Mehrzahl von funktionalen Einheiten, ist mit einer Instruktionssteuereinheit versehen, die zum Prüfen von Instruktionssätzen innerhalb des ersten und des zweiten Puffers und zum Herausgeben irgendeiner dieser Instruktionen zum Ausführen durch verfügbare, funktionale Einheiten vorgesehen ist. Mehrfache Datenpfade zwischen den funktionalen Einheiten und der Registerdatei ermöglichen mehrfache, unabhängige Zugriffe auf die Registerdatei, wie dies für die gleichzeitige Ausführung der jeweiligen Instruktionen notwendig ist.
  • Die Registerdatei umfaßt einen zusätzlichen Satz von Datenregistern, verwendet für die temporäre Speicherung der Registerdaten. Diese temporären Datenregister werden durch die Instruktionsausführungssteuereinheit verwendet, um Daten, verarbeitet durch die funktionalen Einheiten, in der Ausführung außerhalb der Reihenfolge von Instruktionen zu empfangen. Die Daten, die in den temporären Datenregistern gespeichert sind, werden selektiv gehalten, dann gelöscht oder erneut zu der Registerdatei aufgesucht, wenn, und falls, der präzise Zustand der Maschine zu der Stelle der Instruktion in der Instruktionsdatenfolge fortschreitet, wo alle früheren Instruktionen in der Reihenfolge vollständig ausgeführt und aufgesucht worden sind.
  • Schließlich wird das Vorababrufen von Instruktions-Sätzen von dem Instruktionsspeicher durch mehrfache Vorababruf-Pfade erleichtert, die ein Vorababrufen der Hauptprogramminstruktionsfolge, einer Ziel-Konditional-Verzweigungs-Instruktions-Datenfolge und einer prozedurale Instruktions-Datenfolge ermöglichen. Der Ziel- bzw. Target-Konditional-Verzweigungs-Vorababruf-Pfad ermöglicht, daß beide möglichen Instruktions-Datenfolgen für eine konditionale Verzweigungs-Instruktion, Haupt und Target, simultan vorab abgerufen werden. Der prozedurale Instruktions-Vorababruf-Pfad ermöglicht eine zusätzliche Instruktions-Datenfolge, die dafür effektiv ist, eine Ausführung von erweiterten Prozeduren zu ermöglichen, die eine singuläre Instruktion ausführen, die in der Haupt- oder Ziel-Instruktions-Datenfolge vorgefunden werden; der prozedurale Vorababruf-Pfad ermöglicht, daß diese erweiterten Prozeduren vorab abgerufen und ohne Löschen mindestens der Haupt-Vorababruf-Puffer ausgeführt werden.
  • Demzufolge ist ein Vorteil der vorliegenden Erfindung derjenige, daß sie eine Architektur ermöglicht, die einen extrem hohen Funktionsdurchsatz unter Verwendung einer fundamentalen RISC-Typ-Core-Architektur realisiert.
  • Ein anderer Vorteil der vorliegenden Erfindung ist derjenige, daß sie die Ausführung von mehrfachen Instruktionen pro Zyklus erzielt.
  • Ein weiterer Vorteil der vorliegenden Erfindung ist derjenige, daß sie für die dynamische Auswahl und Verwendung von funktionalen Einheiten, notwendig, um optimal mehrfache Instruktionen gleichzeitig auszuführen, dient.
  • Ein noch anderer Vorteil der vorliegenden Erfindung ist derjenige, daß sie eine Register-Datei-Einheit schafft, die integral einen Mechanismus zum Unterstützen einer Präzise-State-of-the-machine-Rückführ-Fähigkeit einsetzt.
  • Ein noch anderer Vorteil der vorliegenden Erfindung ist derjenige, daß sie mehrfache Registerdateien innerhalb der Register-Datei-Einheit einsetzt, die generalisiert, typisiert und für mehrfache Register-Datei-Funktionen geeignet sind, einschließlich einer Operation, wie mehrfache, unabhängige und parallele Integer-Register-Dateien, einer Operation einer Registerdatei als sowohl eine Fließpunkt- als auch Integerpunkt-Datei und einer Operation einer bezeichneten, Boolschen Registerdatei.
  • Ein noch weiterer Vorteil der vorliegenden Erfindung ist derjenige, daß Lade- und Speicheroperationen und die Handhabung von Ausnahme und Unterbrechungen in einer präzisen Art und Weise durch die Verwendung einer Präzise-State-of-the-machine-Rückführ-Fähigkeit durchgeführt werden kann, umfassend effiziente Instruktions-Aufhebungs-Mechanismen und einen Lade/Speicher-Reihenfolge-Synchronisierer.
  • Ein noch weiterer Vorteil der Erfindung ist die Vorsehung einer zugeordneten bzw. dedizierten Register-Datei-Einheit-Unterstützung von Trap-Zuständen, um so eine Latenz zu minimieren und einen Verarbeitungsdurchsatz zu erhöhen.
  • Ein noch weiterer Vorteil der vorliegenden Erfindung ist die Vorsehung von Haupt- und Target-Verzweigungs-Instruktions-Vorababruf-Warteschlangen, wodurch sogar eine nicht korrekte Target- bzw. Ziel-Verzweigungs-Datenfolge-Ausführung im voraus minimal den gesamten Verarbeitungsdurchsatz beeinträchtigt, der durch die vorliegende Erfindung erhaltbar ist. Weiterhin ermöglicht die prozedurale Instruktions-Vorababruf-Warteschlange eine effiziente Art und Weise eines Eingriffs in die Ausführung der Haupt- oder Target-Verzweigungs-Instruktions-Datenfolge, um die effektive Ausführung von neuen Instruktionen durch die Ausführung von prozeduralen Programmen zu ermöglichen und um wesentlich die extern gelieferte Revision der prozeduralen Programme, ausführend Built-in-Prozedural-Instruktionen, ermöglicht.
  • Kurze Beschreibung der Zeichnungen
  • Diese und andere Vorteile und Merkmale der vorliegenden Erfindung werden besser unter Berücksichtigung der nachfolgenden, detaillierten Beschreibung der Erfindung verstanden werden, wenn sie in Verbindung mit den beigefügten Zeichnungen gesehen wird, in der entsprechende Bezugszeichen entsprechende Teile durch die Figuren hinweg bezeichnen, und wobei:
  • 1 zeigt ein vereinfachtes Blockdiagramm der bevorzugten Mikroprozessor-Architektur, die die vorliegende Erfindung ausführt;
  • 2 zeigt ein detailliertes Blockdiagramm der Instruktions-Abrufeinheit, die gemäß der vorliegenden Erfindung aufgebaut ist;
  • 3 zeigt ein Blockdiagramm der Programm-Zähler-Logik-Einheit, die gemäß der vorliegenden Erfindung aufgebaut ist;
  • 4 zeigt ein weiteres, detailliertes Blockdiagramm der Programm-Zähler-Daten und der Steuerpfad-Logik;
  • 5 zeigt ein vereinfachtes Blockdiagramm der Instruktions-Ausführungs-Einheit der vorliegenden Erfindung;
  • 6a zeigt ein vereinfachtes Blockdiagramm der Register-Datei-Architektur, die in einer bevorzugten Ausführungsform der vorliegenden Erfindung verwendet wird;
  • 6b zeigt eine graphische Darstellung des Speicher-Register-Formats der Temporär-Puffer-Register-Datei, und die Daten, die in einer bevorzugten Ausführungsform der vorliegenden Erfindung verwendet sind;
  • 6c zeigt eine graphische Darstellung der Primär- und Sekundär-Instruktions-Sätze, wie sie in den letzten zwei Stufen der Instruktions-FIFO-Einheit der vorliegenden Erfindung vorhanden sind;
  • 7a7c zeigen eine graphische Darstellung der rekonfigurierbaren Zustände des Primär-Integer-Register-Satzes, wie er gemäß einer bevorzugten Ausführung der vorliegenden Erfindung vorgesehen ist;
  • 8 zeigt eine graphische Darstellung eines rekonfigurierbaren Gleitpunkt- und Sekundär-Integer-Register-Satzes, wie er gemäß der bevorzugten Ausführungsform der vorliegenden Erfindung vorgesehen ist;
  • 9 zeigt eine graphische Darstellung eines tertiären Boolschen Register-Satzes, wie dies in einer bevorzugten Ausführungsform der vorliegenden Erfindung vorgesehen ist;
  • 10 zeigt ein detailliertes Blockdiagramm des Primär-Integer-Verarbeitungs-Datenpfad-Bereichs der Instruktions-Ausführungs-Einheit, die gemäß der bevorzugten Ausführungsform der vorliegenden Erfindung aufgebaut ist;
  • 11 zeigt ein detailliertes Blockdiagramm des Primär-Fließkomma-Datenpfad-Bereichs der Instruktions-Ausführungs-Einheit, die gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung aufgebaut ist;
  • 12 zeigt ein detailliertes Blockdiagramm des Boolschen Operations-Datenpfad-Bereichs der Instruktions-Ausführungs-Einheit, wie sie gemäß der bevorzugten Ausführungsform der vorliegenden Erfindung aufgebaut ist;
  • 13 zeigt ein detailliertes Blockdiagramm einer Lade/Speicher-Einheit, die gemäß der bevorzugten Ausführungsform der vorliegenden Erfindung aufgebaut ist;
  • 14 zeigt ein Zeitabstimmungsdiagramm, das die bevorzugte Operations-Sequenz einer bevorzugten Ausführungsform der vorliegenden Erfindung beim Ausführen von mehrfachen Instruktionen gemäß der vorliegenden Erfindung darstellt;
  • 15 zeigt ein vereinfachtes Blockdiagramm der virtuellen Speicher-Steuereinheit, wie sie gemäß der bevorzugten Ausführungsform der vorliegenden Erfindung aufgebaut ist;
  • 16 zeigt eine graphische Darstellung des virtuellen Speicher-Steuer-Algorithmus, wie er in einer bevorzugten Ausführungsform der vorliegenden Erfindung verwendet wird; und
  • 17 zeigt ein vereinfachtes Blockdiagramm der Cache-Steuereinheit, wie sie in einer bevorzugten Ausführungsform der vorliegenden Erfindung verwendet wird.
  • Detaillierte Beschreibung der Erfindung
    • I. Übersicht der Mikroprozessor-Architektur
    • II. Instruktions-Abruf-Einheit
    • A) IFU-Datenpfad
    • B) IFU-Steuerpfad
    • C) IFU/IEU-Steuerschnittstelle
    • D) Detail der PC-Logik-Einheit
    • 1) Detail der PF- und ExPC-Steuer/Daten-Einheit
    • 2) Detail des PC-Steuer-Algorithmus
    • E) Unterbrechungs- und Ausnahme-Handhabung
    • 1) Übersicht
    • 2) Asynchrone Unterbrechungen
    • 3) Synchrone Ausnahmen
    • 4) Hantierer-Versenden und -Rückführen
    • 5) Verschachtelung
    • 6) Liste von Traps
    • III. Instruktions-Ausführungs-Einheit
    • A) Detail des IEU-Datenpfads
    • 1) Detail der Register-Datei
    • 2) Detail des Integer-Datenpfads
    • 3) Detail des Fließkomma-Datenpfads
    • 4) Detail des Boolschen Register-Datenpfads
    • A) Lade/Speicher-Steuereinheit
    • B) Detail des IEU-Steuerpfads
    • 1) Detail der E-Decodiereinheit
    • 2) Detail der Übertragungs-Prüfungs-Einheit
    • 3) Detail der Daten-Abhängigkeits-Prüfungs-Einheit
    • 4) Detail der Register-Umbenennungs-Einheit
    • 5) Detail der Instruktions-Ausgabeeinrichtungs-Einheit
    • 6) Detail der Erledigt-Steuereinheit
    • 7) Detail der Ablage-Steuereinheit
    • 8) Detail der Steuerfluß-Steuereinheit
    • 9) Detail der Bypass-Steuereinheit
    • IV. Steuereinheit des virtuellen Speichers
    • V. Cache-Steuereinheit
    • VI. Zusammenfassung/Schlußfolgerung
  • I. Übersicht der Mikroprozessor-Architektur:
  • Die Architektur 100 der vorliegenden Erfindung ist allgemein in 1 dargestellt. Eine Instruktions-Abruf-Einheit (Instruction Fetch Unit – IFU) 102 und eine Instruktions-Ausführungs-Einheit (Instruction Execution Unit – IEU) 104 sind die prinzipiellen, operativen Elemente der Architektur 100. Eine virtuelle Speicher-Einheit (Virtual Memory Unit – VMU) 108, eine Cache-Steuereinheit (Cache Control Unit – CCU) 106 und eine Speicher-Steuereinheit (Memory Control Unit – MCU) 110 sind vorgesehen, um direkt die Funktion der IFU 102 und der IEU 104 zu unterstützen. Eine Speicherfeld-Einheit (Memory Array Unit – MAU) 112 ist auch als ein allgemein wesentliches Element für die Operation der Architektur 100 vorgesehen, obwohl die MAU 112 nicht direkt als eine integrale Komponente der Architektur 100 existiert. Das bedeutet, daß in den bevorzugten Ausführungsformen der vorliegenden Erfindung die IFU 102, die IEU 104, die VMU 108, die CCU 106 und die MCU 110 auf einer einzelnen Siliziumplatte hergestellt sind, und zwar unter Verwendung eines Niedrigenergie-CMOS-Prozesses mit einer 0,8 Micron Designregel und einige 1.200.000 Transistoren aufweisend. Die Standard-Prozessor- oder System-Taktgeschwindigkeit der Architektur 100 beträgt 40 MHz. Allerdings beträgt, gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung, die interne Prozessor-Taktgeschwindigkeit 160 MHz.
  • Die IFU 102 ist primär für den Abruf von Instruktionen, die Pufferung von ausführungsabhängigen Instruktionen durch die IEU 104 und, allgemein, für die Berechnung der nächsten, virtuellen Adresse, die für den Abruf der nächsten Instruktion verwendet werden soll, zuständig.
  • In den bevorzugten Ausführungsformen der vorliegenden Erfindung sind Instruktionen jeweils bei einer Länge von 32 Bits festgelegt. Instruktions-Sätze, oder "Speicherbereiche" (Buckets), von vier Instruktionen werden durch die IFU 102 simultan von einem Instruktions-Cache 132 innerhalb der CCU 106 über einen 128 Bit breiten Instruktions-Bus 114 abgerufen. Die Übertragung von Instruktions-Sätzen wird zwischen der IFU 102 und der CCU 106 durch Steuersignale koordiniert, die über einen Steuer-Bus 116 geliefert werden. Die virtuelle Adresse eines Instruktions-Satzes, der abgerufen werden soll, wird durch die IFU 102 über eine IFU kombinierte Entscheidung, einen Steuer- und Adressen-Bus 108, basierend auf einer gemeinsam geteilten Entscheidung, einen Steuer- und Adressen-Bus 120, der weiterhin zwischen der IEU 104 und der VMU 108 gekoppelt ist, geliefert. Eine Entscheidung für einen Zugriff auf die VMU 108 entsteht aus der Tatsache, daß sowohl die IFU 102 als auch die IEU 104 die VMU 108 als eine gemeinsam geteilte Ressource verwenden. In der bevorzugten Ausführungsform der Architektur 100 werden Bits niedriger Ordnung, die eine Adresse innerhalb einer physikalischen Seite der virtuellen Adresse definieren, direkt durch die IFU 102 zu der Cache-Steuereinheit 106 über die Steuerleitungen 116 übertragen. Die Virtualisierungen von Bits höherer Ordnung der virtuellen Adresse, die durch die IFU 102 zugeführt ist, werden durch den Adressen- Bereich der Busse 118, 120 zu der VMU 108 für eine Translation in eine entsprechende, physikalische Seiten-Adresse geliefert. Für die IFU 102 wird diese physikalische Seiten-Adresse direkt von der VMU 108 zu der Cache-Steuereinheit 106 über die Adressen-Steuerleitungen 122, einen halben, internen Prozessorzyklus nachdem die Translationsanforderung mit der VMU 108 plaziert ist, übertragen.
  • Die Instruktions-Folge, die durch die IFU 102 abgerufen ist, wird wiederum über einen Instruktions-Folge-Bus 124 zu der IEU 104 geliefert. Steuersignale werden zwischen der IFU 102 und der IEU 104 über Steuerleitungen 126 ausgetauscht. Zusätzlich werden bestimmte Instruktions-Abruf-Adressen, typischerweise solche, die einen Zugriff auf die Register-Datei erfordern, die innerhalb der IEU 104 vorhanden ist, zurück zu der IFU über einen Ziel-Adressen-Rückführungs-Bus innerhalb der Steuerleitungen 126 geliefert.
  • Die IEU 104 speichert Daten in Bezug auf einen Daten-Cache 134 und sucht sie auf, der innerhalb der CCU 106 vorgesehen ist, und zwar über einen 80 Bit breiten bidirektionalen Daten-Bus 130. Die gesamte, physikalische Adresse für IEU-Daten-Zugriffe ist über einen Adressen-Bereich des Steuer-Busses 128 zu der CCU 106 vorgesehen. Der Steuer-Bus 128 dient auch für den Austausch von Steuersignalen zwischen der IEU 104 und der CCU 106 zum Handhaben von Daten-Übertragungen. Die IEU 104 verwendet die VMU 108 als eine Ressource zum Wandeln einer virtueller Daten-Adresse in physikalische Daten-Adressen, die für eine Sendeübergabe zu der CCU 106 geeignet sind. Der virtualisierende Bereich der Daten-Adresse wird über den Entscheidungs-, Steuer- und Adressen-Bus 120 zu der VMU 108 zugeführt. Im Gegensatz zu der Operation in Bezug auf die IFU 102 führt die VMU 108 die entsprechende, physikalische Adresse über den Bus 120 zu der IEU 104 zurück. In den bevorzugten Ausführungsformen der Architektur 100 erfordert die IEU 104 die physikalische Adresse zur Verwendung beim Sicherstellen, daß Lade/Speicheroperationen in einer geeigneten Programm-Folgen-Reihenfolge auftreten.
  • Die CCU 106 führt die allgemein konventionelle Hoch-Niveau-Funktion einer Bestimmung durch, ob über eine physikalische Adresse definierte Anforderung nach Daten von den Instruktions- und Daten-Cache-Speichern 132, 134 erfüllt werden können, wie dies geeignet ist. Dort, wo die Zugriffs-Anforderung geeignet durch Zugriff auf die Instruktions- oder Daten-Cache-Speicher 132, 134 erfüllt werden kann, koordiniert die CCU 106 die Datenübertragung über die Daten-Busse 114, 128 und führt sie durch.
  • Dort, wo eine Daten-Zugriffs-Anforderung nicht von den Instruktions- oder Daten-Cache-Speichern 132, 134 erfüllt werden kann, liefert die CCU 106 die entsprechende, physikalische Adresse zu der MCU 110 zusammen mit ausreichenden Steuerinformationen, um zu identifizieren, ob ein Lese- oder Schreib-Zugriff der MAU 112 erwünscht ist, und zwar der Source- bzw. Quellen- oder Bestimmungs-Cache 132, 134 der CCU 106 für jede Anforderung, und zusätzliche, identifizierende Informationen, um zu ermöglichen, daß die Anforderungs-Operation zu der ultimativen Daten-Anforderung, wie sie durch die IFU 102 oder IEU 104 ausgegeben ist, korrelierbar ist.
  • Die MCU 110 umfaßt vorzugsweise eine Anschluß-Umschalt-Einheit 142, die mit einem unidirektionalen Daten-Bus 136 mit dem Instruktions-Cache 132 der CCU 106 und einem bidirektionalen Daten-Bus 138 zu dem Daten-Cache 134 verbunden ist. Der Anschluß-Umschalter 142 ist im wesentlichen ein großer Multiplexer, der die Übertragung einer physikalischen Adresse, die von dem Steuer-Bus 140 erhalten ist, zu irgendeinem eine Anzahl von Anschlüssen P0–PN 1460–n und die bidirektionale Übertragung von Daten von den Anschlüssen zu den Daten-Bussen 136, 138 ermöglicht. Jede Speicher-Zugriffs-Anforderung, die durch die MCU 110 verarbeitet ist, ist einem der Anschlüsse 1460–n zu Zwecken einer Entscheidung für einen Zugriff zu dem Hauptsystem-Speicher-Bus 162, wie dies für einen Zugriff der MAU 112 erforderlich ist, zugeordnet. Wenn einmal eine Daten-Übertragungs-Verbindung eingerichtet worden ist, liefert die MCU Steuerinformationen über den Steuer-Bus 140 zu der CCU 106, um die Übertragung von Daten zwischen entweder dem Instruktions- oder Daten-Cache 132, 134 und der MAU 112 über den Anschluß-Umschalter 142 und den entsprechenden einen der Anschlüsse 1460–n zu initiieren. Entsprechend mit den bevorzugten Ausführungsformen der Architektur 100 speichert oder verriegelt die MCU 110 nicht tatsächlich Daten beim Übergang zwischen der CCU 106 und der MAU 112. Dies wird vorgenommen, um eine Latenz bei der Übertragung zu minimieren und um das Erfordernis für eine Spurung oder Handhabung von Daten zu vermeiden, die einmalig in der MCU 110 vorhanden sein können.
  • II. Instruktions-Abruf-Einheit:
  • Die primären Elemente der Instruktions-Abruf-Einheit 102 sind in 2 dargestellt. Die Operation und die Beziehung dieser Elemente untereinander kann am besten unter Betrachtung deren Partizipierung in den IFU Daten-Steuerpfaden verstanden werden.
  • A) IFU-Datenpfad:
  • Der IFU-Datenpfad beginnt mit dem Instruktions-Bus 114, der Instruktions-Sätze für eine temporäre Speicherung in einem Vorababruf-Puffer 260 aufnimmt. Ein Instruktions-Satz von dem Vorababruf-Puffer 260 wird durch eine IDecodiereinheit 262 und dann zu einer IFIFO-Einheit 264 weitergeführt. Die Instruktions-Sätze, die in den letzten zwei Stufen des Instruktions-FIFO 264 gespeichert sind, sind kontinuierlich, über die Daten-Busse 278, 280, zu der IEU 104 verfügbar.
  • Die Vorababruf-Puffer-Einheit 260 empfängt einen einzelnen Instruktions-Satz zu einem Zeitpunkt vom Instruktions-Bus 114. Der Instruktions-Satz mit einer Breite von vollen 138 Bits wird allgemein parallel zu einem von vier Vorababruf-Puffer-Stellen mit 128 Bit Breite in einem Bereich eines Haupt-Puffers (Main Buffer – MBUF) 188 des Vorababruf-Puffers 160 eingeschrieben. Bis zu vier zusätzliche Instruktions-Sätze können ähnlich in zwei Vorababruf-Puffer-Stellen eines Target-Puffers (Target Buffer – TBUF) mit einer Breite von 128 Bits oder zu zwei Vorababruf-Puffer-Stellen eines prozeduralen Puffers (Procedural Buffer – EBUF) mit einer Breite von 128 Bits eingeschrieben werden. In der bevorzugten Architektur 100 kann ein Instruktions-Satz in irgendeiner der Vorababruf-Puffer-Stellen innerhalb des MBUF 188, des TBUF 190 oder des EBUF 192 zu dem Vorababruf-Puffer-Ausgangs-Bus 196 übertragen werden. Zusätzlich ist ein direkter Abfall über den Instruktions-Satz-Bus 194 vorgesehen, um den Instruktions-Bus 114 direkt mit dem Vorababruf-Puffer-Ausgangs-Bus 196 zu verbinden, um dadurch den MBUF, den TBUF und den EBUF 188, 190, 192, im Bypass zu umgehen.
  • In der bevorzugten Architektur 100 wird der MBUF 188 zu Puffer-Instruktions-Sätzen in dem nominalen oder Haupt-Instruktions-Fluß verwendet. Der TBUF 190 wird zu Pufferinstruktionen verwendet, die von einem versuchsweisen Zielverzweigungs-Instruktionsstrom abgerufen sind. Demzufolge ermöglicht die Vorababruf-Puffer-Einheit 260, daß beide, mögliche Instruktionsflüsse einer konditionalen Verzweigungs-Instruktion folgen, die vorab abgerufen werden soll. Diese Einrichtung vermeidet die Latenz für weitere Zugriffe auf zumindest die CCU 106, wenn nicht sogar die wesentlich größere Latenz einer MAU 112, um den korrekten, nächsten Instruktions-Satz für eine Ausführung zu erhalten, die einer konditionalen Verzweigungs-Instruktion folgt, und zwar ungeachtet des bestimmten Instruktionsflusses, der eventuell unter Auflösung der konditionalen Verzweigungs-Instruktion ausgewählt ist. In der bevorzugten Architektur 100 der Erfindung ermöglicht die Vorsehung der MBUF 188 und der TBUF 190, daß die Instruktions-Abruf-Einheit 102 sowohl eine potentielle Instruktions-Folge vorab abruft als auch, wie nachfolgend in Bezug auf die Instruktions-Ausführungs-Einheit 104 diskutiert werden wird, weiterhin eine Ausführung der vorab angenommenen, korrekten Instruktions-Folge ermöglicht. Dort, wo unter Auflösung der konditionalen Verzweigungs-Instruktion der korrekten Instruktions-Folge vorab in den MBUF 188 hinein abgerufen worden ist, können irgendwelche Instruktions-Sätze in dem TBUF 190 einfach für ungültig erklärt werden. Alternativ liefert dort, wo Instruktions-Sätze der korrekten Instruktions-Folge in dem TBUF 190 vorhanden sind, die Instruktionsvorabruf-Puffer-Einheit 160 eine direkte, laterale Übertragung dieser Instruktions-Sätze von dem TBUF 190 zu jeweiligen Puffer-Stellen in dem MBUF 188. Die in dem MBUF 188 gespeicherten Instruktions-Sätze werden effektiv für ungültig erklärt, wenn sie durch von dem TBUF 190 übertragene Instruktions-Sätze überschrieben werden. Dort, wo kein TBUF-Instruktions-Satz, der zu einer MBUF-Stelle übertragen ist, vorhanden ist, wird diese Stelle einfach als ungültig markiert.
  • Ähnlich ist der EBUF 192 als ein anderer, alternativer Vorabruf-Pfad durch den Vorababruf-Puffer 260 vorgesehen. Der EBUF 192 wird vorzugsweise bei dem Vorababrufen einer alternativen Instruktions-Folge verwendet, die dazu verwendet wird, eine Operation auszuführen, die durch eine einfache Instruktion, eine "prozedurale" Instruktion, spezifiziert ist, die in der Instruktions-Folge des MBUF 188 enthalten ist. Auf diese Art und Weise können komplexe oder erweiterte Instruktionen durch Softwareprogramme, oder Prozeduren, ausgeführt werden, und über die Vorababruf-Puffer-Einheit 260 ohne Stören der Instruktions-Folge, die bereits in den MBUF 188 hinein vorab abgerufen sind, verarbeitet werden. Obwohl die vorliegende Erfindung allgemein ein Handhaben prozeduraler Instruktionen ermöglicht, die zuerst in dem TBUF 190 vorhanden sind, wird ein Vorababrufen der prozeduralen Instruktions-Folge bei allen zuvor anhängigen, konditionalen Verzweigungs-Instruktionen vorgenommen, die aufgelöst sind. Dies ermöglicht, daß konditionale Verzweigungs-Instruktionen, die in der prozeduralen Instruktions-Folge auftreten, konsistent über die Verwendung des TBUF 190 gehandhabt werden. Demzufolge werden dort, wo eine Verzweigung in der prozeduralen Folge vorgenommen ist, die Ziel-Instruktions-Sätze zuvor in den TBUF 190 hinein abgerufen worden sein und können einfach lateral zu dem EBUF 192 übertragen werden. Schließlich werden sowohl der MBUF 188 als auch der TBUF 190 und der EBUF 192 mit dem Vorabpuffer-Ausgangs-Bus 196 gekoppelt, um so irgendeinen Instruktions-Satz, gespeichert durch die Vorababruf-Einheit, auf dem Ausgangs-Bus 196 zu liefern. Zusätzlich ist ein Fluß durch den Bus 194 vorgesehen, um direkt einen Instruktions-Satz von dem Instruktions-Bus 114 zu dem Ausgangs-Bus 196 zu übertragen.
  • In der bevorzugten Architektur 100 bilden die Vorababruf-Puffer innerhalb des MBUF 188, des TBUF 190, des EBUF 192 nicht direkt eine FIFO-Struktur. Anstelle davon ermöglicht die Vorsehung einer Verbindungsmöglichkeit irgendeiner Pufferstelle zu dem Ausgangs-Bus 196 einen wesentlichen Freiheitsgrad bei der Vorababruf-Reihenfolge der Instruktions-Sätze, die von dem Instruktions-Cache 132 aufgesucht sind. Das bedeutet, daß die Instruktions-Abruf-Einheit 102 allgemein Instruktions-Sätze in der geeigneten Instruktions-Folge-Reihenfolge von Instruktionen bestimmt und anfordert. Allerdings ist hinsichtlich der Reihenfolge, in der Instruktions-Sätze zu der IFU 102 zurückgeführt werden, zugelassen, daß sie nicht in einer Reihenfolge auftreten, wie dies geeignet ist, um den Umständen Rechnung zu tragen, bei denen angeforderte Instruktions-Sätze von der CCU 106 alleine verfügbar und zugänglich sind, und andere erfordern einen Zugriff auf die MAU 112.
  • Obwohl Instruktions-Sätze nicht in der Reihenfolge zu der Vorababruf-Einheit 260 zurückgeführt werden können, muß die Sequenz einer Instruktions-Satz-Ausgabe auf dem Ausgangs-Bus 196 allgemein mit der Reihenfolge von Instruktions-Satz-Anforderungen übereinstimmen, die durch die IFU 102 ausgegeben sind; die Instruktions-Folge-Sequenz in Reihenfolge, die Gegenstand von, zum Beispiel, einer versuchsweisen Ausführung eines Vielverzweigungsflusses ist.
  • Die IDecodiereinheit 262 nimmt Instruktions-Sätze auf, allgemein einen pro Zyklus, die der Raum der IFIFO-Einheit 264 zuläßt, und zwar von dem Vorababruf-Puffer-Ausgangs-Bus 196. Jeder Satz aus vier Instruktionen, der einen einzelnen Instruktions-Satz bildet, wird parallel durch die IDecodiereinheit 262 decodiert. Während relevante Steuerfluß-Informationen über Leitungen 318 zugunsten des Steuerpfad-Bereichs der IFU 102 extrahiert werden, werden die Inhalte des Instruktions-Satzes nicht durch die IDecodiereinheit 262 verändert.
  • Instruktions-Sätze von der IDecodiereinheit 162 werden auf einen Eingangs-Bus 198 mit einer Breite von 128 Bits der IFIFO-Einheit 264 geliefert. Intern besteht die IFIFO-Einheit 264 aus einer Sequenz von Master/Slave-Registern 200, 204, 208, 212, 216, 220, 224. Jedes Register ist mit seinem Nachfolger verbunden, um zu ermöglichen, daß die Inhalte der Master-Register 200, 208, 216 während eines ersten halben, internen Prozessorzyklus einer FIFO-Operation zu den Slave-Registern 204, 212, 220 und dann zu dem nächsten, darauffolgenden Master-Register 208, 216, 224 während der Operation des darauffolgenden halben Zyklus übertragen werden können. Der Eingangs-Bus 198 ist mit dem Eingang jedes der Master-Register 200, 208, 216, 224 verbunden, um ein Laden eines Instruktions-Satzes von der IDecodiereinheit 262 direkt in ein Master-Register während des zweiten halben Zyklus einer FIFO-Operation zu ermöglichen. Allerdings muß ein Laden eines Master-Registers von dem Eingangs-Bus 198 nicht simultan mit einer FIFO-Verschiebung von Daten innerhalb der IFIFO-Einheit 264 auftreten. Demzufolge kann die IFIFO-Einheit 264 kontinuierlich von dem Eingangs-Bus 198 ungeachtet der momentanen Tiefe von Instruktions-Sätzen, die innerhalb der Instruktions-FIFO-Einheit 264 gespeichert sind, und, weiterhin, unabhängig der FIFO-Verschiebung von Daten über die IFIFO-Einheit 264 gefüllt werden.
  • Jedes der Master/Slave-Register 200, 204, 208, 212, 216, 220, 224 liefert, zusätzlich zu einer Vorsehung der vollen, parallelen Speicherung eines Instruktions-Satzes einer Breite von 128 Bits, auch eine Speicherung von verschiedenen Bits von Steuerinformationen in den jeweiligen Steuer-Registern 202, 206, 210, 214, 218, 222, 226. Der bevorzugte Satz von Steuer-Bits umfaßt Ausnahme-Fehlen und Ausnahme-Modifizieren, (VMU), keinen Speicher (MCU), Verzweigungs-Vorspannung bzw. -Beurteilung, Folge und Offset (IFU). Diese Steuerinformation hat ihren Ursprung von dem Steuerpfad-Bereich der IFU 102 simultan mit dem Laden eines IFIFO-Master-Registers mit einem neuen Instruktions-Satz von dem Eingangs-Bus 198. Danach werden die Steuer-Register-Informationen parallel gleichzeitig mit den Instruktions-Sätzen über die IFIFO-Einheit 264 verschoben.
  • Schließlich wird in der bevorzugten Architektur 100 die Ausgabe von Instruktions-Sätzen von der IFIFO-Einheit 264 simultan von den letzten zwei Master-Registern 216, 224 auf den I_Bucket_0 und I_Bucket_1 Instruktions-Satz-Ausgangs-Bussen 278, 280 erhalten. Zusätzlich werden die entsprechenden Steuer-Register-Informationen auf den IBASV0- und den IBASV1-Steuerfeld-Bussen 282, 284 geliefert. Diese Ausgangs-Busse 278, 282, 280, 284 sind alle als Instruktions-Folge-Bus 124 zu der IEU 104 vorgesehen.
  • B) IFU-Steuerpfad:
  • Der Steuerpfad für die IFU 102 unterstützt direkt die Operation der Vorababruf-Puffer-Einheit 260, der IDecodiereinheit 262 und der IFIFO-Einheit 264. Eine Vorababruf- Steuer-Logik-Einheit 266 managt primär die Operation der Vorababruf-Puffer-Einheit 260. Die Vorababruf-Steuer-Logik-Einheit 266 und die IFU 102 empfangen allgemein das Systemtaktsignal über die Taktleitung 260 zum Synchronisieren von IFU-Operationen mit denjenigen der IEU 104, der CCU 106 und der VMU 108. Steuersignale, die für die Auswahl und das Schreiben von Instruktions-Sätzen in den MBUF 188, den TBUF 190 und den EBUF 192 hinein geeignet sind, werden auf den Steuerleitungen 304 geliefert.
  • Eine Anzahl von Steuersignalen ist auf den Steuerleitungen 316 zu der Vorababruf-Steuer-Logik-Einheit 266 vorgesehen. Genauer gesagt wird ein Abrufanforderungs-Steuersignal geliefert, um eine Vorababruf-Operation zu initiieren. Andere Steuersignale, die auf der Steuerleitung 316 geliefert werden, identifizieren die vorgesehene Bestimmung der angeforderten Vorababruf-Operation dahingehend, daß sie der MBUF 188, der TBUF 190 oder der EBUF 192 ist. In Abhängigkeit einer Vorababruf-Anforderung erzeugt die Vorababruf-Steuer-Logik-Einheit 166 einen ID-Wert und bestimmt, ob die Vorababruf-Anforderung zu der CCU 106 verschickt werden kann. Die Erzeugung des ID-Werts wird über die Verwendung eines zirkularen Vier-Bit-Zählers vorgenommen.
  • Die Verwendung eines Vier-Bit-Zählers ist in dreierlei Hinsicht wesentlich. Zunächst kann beispielsweise ein Maximum von neun Instruktions-Sätzen zu einem Zeitpunkt in der Vorababruf-Puffer-Einheit 260 aktiv sein; vier Instruktions-Sätze in dem MBUF 188, zwei in dem TBUF 190, zwei in dem EBUF 192 und einer, der direkt zu der IDecodiereinheit 262 über den Fluß durch den Bus 194 geliefert wird. Zweitens umfassen Instruktions-Sätze vier Instruktionen aus vier Bytes jeweils. Demzufolge sind die signifikantesten vier Bits irgendeiner Adresse, die einen Instruktions-Satz zum Abrufen auswählt, überflüssig. Schließlich kann der Vorababruf-Anforderungs-ID-Wert leicht einer Vorababruf-Anforderung durch Einsetzen als die signifikantesten vier Bits der Vorababruf-Anforderungs-Adresse zugeordnet werden; dadurch wird die ganze Anzahl von Adressenleitungen reduziert, die erforderlich ist, um mit der CCU 106 schnittstellenmäßig zu verbinden.
  • Um zu ermöglichen, daß Instruktions-Sätze zu der CCU 106 außerhalb der Reihenfolge in Bezug auf die Sequenz von Vorababruf-Anforderungen, ausgegeben durch die IFU 102, zurückgeführt werden, dient die Architektur 100 für die Rückführung des ID-Anforderungswerts mit der Rückführung von Instruktions-Sätzen von der CCU 106. Allerdings kann die Instruktions-Satz-Rückführungsfähigkeit außerhalb der Reihenfolge zu der Abgabe der sechzehn einzigartigen IDs führen. Eine Kombination von konditionalen Instruktionen, die außerhalb der Reihenfolge ausgeführt sind, was zu zusätzlichen Vorababrufungen und Instruktions-Sätzen führt, die angefordert sind, allerdings noch nicht zurückgeführt sind, kann zu einer potentiellen Wiederverwendung eines ID-Werts führen. Deshalb wird der Vier-Bit-Zähler vorzugsweise gehalten und keine weiteren Instruktions-Satz-Vorababruf-Anforderungen werden ausgegeben, wo der nächste ID-Wert derselbe wie derjenige sein würde, der einer noch ausstehenden Abruf-Anforderung oder einem anderen Instruktions-Satz, die dann in dem Vorababruf-Puffer 260 anhängig sind, zugeordnet ist.
  • Die Vorababruf-Steuer-Logik-Einheit 266 managt direkt ein Vorababruf-Status-Feld 268, das Status-Speicher-Stellen enthält, die logisch jeder Instruktions-Satz-Vorababruf-Puffer-Stelle innerhalb des MBUF 188, des TBUF 190 und des EBUF 192 entsprechen. Die Vorababruf-Steuer-Logik-Einheit 266 kann, über Auswahl- und Datenleitungen 306, Daten abtasten, lesen und zu dem Status-Register-Feld 268 hin schreiben. Innerhalb des Felds 268 dient ein Haupt-Puffer-Register 308 zur Speicherung von vier ID-Werten mit vier Bits (MB ID), vier Einzel-Bit-Umkehr-Zeichen (MB RES) und vier Einzelbit-Gültigkeits-Zeichen (MB VAL), wobei jedes davon durch eine logische Bit-Position den jeweiligen Instruktions-Satz-Speicher-Stellen innerhalb des MBUF 180 entspricht. Ähnlich dienen ein Ziel-Puffer-Register 310 und ein erweitertes Puffer-Register 312 jeweils für die Speicherung von zwei Vier-Bit-ID-Werten (TB ID, EB ID), zwei Einzelbit-Umkehrzeichen (TB RES, EB RES) und zwei Einzel-Bit-Gültigkeitszeichen (TB VAL, EB VAL). Schließlich dient ein Fluß durch ein Status-Register 314 für die Speicherung eines Einzel-Vier-Bit-ID-Werts (FT ID), eines Einzel-Umkehr-Zeichenbits (FR RES) und eines Einzel-Gültigkeits-Zeichenbits (FT VAL).
  • Das Status-Register-Feld 268 wird zuerst abgetastet und entsprechend so, wie dies geeignet ist, durch die Vorababruf-Steuer-Logik-Einheit 266 zu jedem Zeitpunkt, zu dem eine Vorababruf-Anforderung innerhalb der CCU 106 plaziert und darauffolgend abgetastet wird, und zu jedem Zeitpunkt, zu dem ein Instruktions-Satz zurückgeführt wird, aktualisiert. Genauer gesagt erhöht, unter Empfang des Vorababruf-Anforderungs-Signals über die Steuerleitungen 316, die Vorababruf-Steuer-Logik-Einheit 216 den momentanen in dem zirkularen Zähler erzeugten ID-Wert, tastet das Status-Register-Feld 268 ab, um zu bestimmen, ob der ID-Wert zur Verwendung verfügbar ist und ob eine Vorababruf-Puffer- Stelle des Typs, der durch das Vorababruf-Anforderungs-Signal spezifiziert ist, verfügbar ist, prüft den Status der CCU IBUSY Steuerleitung 300, um zu bestimmen, ob die CCU 106 eine Vorababruf-Anforderung annehmen kann, und stellt, falls dies der Fall ist, ein CCU IREAD Steuersignal auf der Steuerleitung 298 auf und plaziert den erhöhten ID-Wert auf dem CCU-ID-Ausgangs-Bus 294 zu der CCU 106. Eine Vorababruf-Speicher-Stelle ist zur Verwendung dort verfügbar, wo sowohl das entsprechende, umgekehrte als auch das Gültigkeits-Status-Zeichen falsch sind. Die Vorababruf-Anforderung-ID wird in die ID-Speicherstelle innerhalb des Status-Register-Felds 268 entsprechend zu der vorgesehenen Speicherstelle innerhalb des MBUF 188, des TBUF 190 oder des EBUF 192 gleichzeitig mit der Plazierung der Anforderung an der CCU 106 eingeschrieben. Zusätzlich wird das entsprechende, umgekehrte Status-Zeichen auf wahr eingestellt.
  • Wenn die CCU 106 in der Lage ist, einen zuvor angeforderten Instruktions-Satz zu der IFU 102 zurückzuführen, wird das CCU IREADY-Signal auf die Steuerleitung 302 gegeben und die entsprechende Instruktions-Satz-ID wird auf die CCU-ID-Steuerleitungen 296 gegeben. Die Vorababruf-Steuer-Logik-Einheit 266 tastet die ID-Werte und umgekehrten Zeichen innerhalb des Status-Register-Felds 268 ab, um die vorgesehene Bestimmung des Instruktions-Satzes innerhalb der Vorababruf-Puffer-Einheit 260 zu identifizieren. Nur eine einzelne Anpassung ist möglich. Wenn der Instruktions-Satz einmal identifiziert ist, wird er über den Bus 114 in die geeignete Stelle innerhalb der Vorababruf-Puffer-Einheit 260 eingeschrieben, oder, wenn er als ein Fluß durch eine Anforderung identifiziert ist, wird er direkt zu der IDecodiereinheit 262 geliefert. In jedem Fall wird das Gültigkeits-Status-Zeichen in dem entsprechenden Status-Register-Feld auf wahr gesetzt.
  • Die PC-Logik-Einheit 270 spurt, wie nachfolgend im größeren Detail beschrieben werden wird, die virtuelle Adresse der Instruktions-Ströme des MBUF 188, des TBUF 190 und des EBUF 192 durch die gesamte IFU 102. Beim Durchführen dieser Funktion steuert der PC-Logik-Block 270 und arbeitet auch von der IDecodiereinheit 262 aus. Genauer gesagt werden Teile der Instruktionen, die durch die IDecodiereinheit 262 als potentiell relevant zu einer Änderung in dem Programm-Instruktions-Stromfluß decodiert sind, auf dem Bus 318 zu einer Steuerströmungs-Erfassungs-Einheit 274 und direkt zu dem PC-Logik-Block 270 geliefert. Die Steuerfluß-Erfassungs-Einheit 274 identifiziert jede Instruktion in dem decodierten Instruktions-Satz, die eine Steuerfluß-Instruktion bildet, die konditionale und nicht konditionale Verzweigungs-Instruktionen, Aufruf-Typ-Instruktionen, Software- Trap-Prozedur-Instruktionen und verschiedene Rückführ-Instruktionen bilden. Die Steuerfluß-Erfassungs-Einheit 274 liefert ein Steuersignal, und zwar über Leitungen 322, zu der PC-Logik-Einheit 270, um die Stelle und die spezifische Art der Steuerfluß-Instruktionen innerhalb des Instruktions-Satzes zu identifizieren, der in der IDecodiereinheit 262 vorhanden ist. Die PC-Logik-Einheit 270 bestimmt wiederum die Ziel-Adresse der Steuerfluß-Instruktion, typischerweise aus Daten, die innerhalb der Instruktion geliefert und zu der PC-Logik-Einheit über Leitungen 318 übertragen sind. Dort, wo zum Beispiel eine Verzweigungs-Logik-Bias ausgewählt worden ist, um zuvor konditionale Verzweigungs-Instruktionen auszuführen, wird die PC-Logik-Einheit 270 damit beginnen, das Vorababrufen von Instruktions-Sätzen von der konditionalen Verzweigungs-Instruktions-Ziel-Adresse zu richten und separat zu spuren. Demzufolge wird mit der nächsten Geltendmachung einer Vorababruf-Anforderung auf den Steuerleitungen 316 die PC-Logik-Einheit 270 weiterhin ein Steuersignal, und zwar über Leitungen 316, aufstellen, was die Bestimmung des Vorababrufens, der TBUF 190 zu sein, aufstellt, unter der Annahme, daß vorherige Vorababruf-Instruktions-Sätze zu dem MBUF 188 oder dem EBUF 192 gerichtet wurden. Wenn einmal die Vorababruf-Steuer-Logik-Einheit 266 bestimmt, daß eine Vorababruf-Anforderung zu der CCU 106 zugeführt werden kann, liefert die Vorababruf-Steuer-Logik-Einheit 266 ein Freigabesignal, wiederum über Leitungen 316, zu der PC-Logik-Einheit 270, um die Vorsehung eines Seiten-Offset-Bereichs der Target-Adresse (CCU PADDR [13:4]) über die Adressen-Leitungen 324 direkt zu der CCU 106 freizugeben. Zur selben Zeit liefert die PC-Logik-Einheit 270 dort, wo eine neue, virtuelle zur physikalischen Seitentranslation erforderlich ist, weiterhin ein VMU-Anforderungssignal über Steuerleitungen 328 und den virtualisierenden Teil der Ziel-Adresse (VMU VADDR [31:14]) über die Adressen-Leitungen 326 zu der VMU 108 für eine Translation in eine physikalische Adresse. Dort, wo eine Seitentranslation nicht erforderlich ist, ist keine Operation durch die VMU 108 erforderlich. Im Gegensatz dazu wird das vorherige Translationsergebnis in einer Ausgangsverriegelung, gekoppelt mit dem Bus 122, für eine unmittelbare Benutzung durch die CCU 106 beibehalten.
  • Operationsmäßige Fehler in der VMU 108 beim Durchführen der virtuellen zur physikalischen Translation, angefordert durch die PC-Logik-Einheit 270, werden über die VMU-Ausnahme- und VMU-Fehl-Steuerleitungen 332, 334 berichtet. Die VMU-Fehl-Steuerleitung 334 berichtet einem Translations-Look-Aside-Puffer (TLB) ein Fehlen. Das VMU-Ausnahme-Steuersignal, auf der VMU-Ausnahmeleitung 332, wird für alle anderen Ausnahmen angehoben. In beiden Fällen handhabt die PC-Logik-Einheit den Fehlerzustand durch Speichern des momentanen Ausführungspunkts in der Instruktions-Folge und nimmt dann ein Vorababrufen, wie bei der Antwort auf eine nicht konditionale Verzweigung, einer zugeordneten Ausnahme-Handhabungs-Programm-Instruktions-Folge zum Diagnostizieren und Handhaben des Fehlerzustands, vor. Die VMU-Ausnahme und Fehl-Steuersignale identifizieren die allgemeine Art der Ausnahme, die vorhanden ist, um dadurch der PC-Logik-Einheit 270 zu ermöglichen, die Vorababruf-Adresse eines entsprechenden Ausnahme-Handhabungs-Programms zu identifizieren.
  • Die IFIFO-Steuer-Logik-Einheit 272 ist vorgesehen, um direkt die IFIFO-Einheit 264 zu unterstützen. Genauer gesagt liefert die PC-Logik-Einheit 270 ein Steuersignal über die Steuerleitungen 336, um der IFIFO-Steuer-Logik-Einheit 272 zu signalisieren, daß ein Instruktions-Satz auf dem Eingangs-Bus 198 von der IDecodiereinheit 262 verfügbar ist. Die IFIFO-Steuereinheit 272 ist für eine Auswahl des tiefsten, verfügbaren Master-Registers 200, 208, 216, 224 zur Aufnahme des Instruktions-Satzes verantwortlich. Der Ausgang jedes der Master-Steuer-Register 202, 210, 218, 226 wird zu der IFIFO-Steuereinheit 272 über den Steuer-Bus 338 geliefert. Die Steuer-Bits, die durch jedes Master-Steuer-Register gespeichert sind, umfassen eine Zwei-Bit-Puffer-Adresse (IF_Bx_ADR), ein Einzel-Fluß-Indikator-Bit (IF_Bx_STRM) und ein Einzel-Gültigkeits-Bit (IF_Bx_VLD). Die Zwei-Bit-Puffer-Adresse identifiziert die erste Gültigkeits-Instruktion innerhalb des entsprechenden Instruktions-Satzes. Das bedeutet, daß Instruktions-Sätze, die durch die CCU 106 zurückgeführt sind, nicht so ausgerichtet werden können, daß die Ziel-Instruktion einer Verzweigungs-Operation zum Beispiel in der anfänglichen Instruktionsstelle innerhalb des Instruktions-Satzes angeordnet ist. Demzufolge wird der Puffer-Adressen-Wert geliefert, um einzigartig die anfängliche Instruktion innerhalb eines Instruktions-Satzes zu identifizieren, der zur Ausführung berücksichtigt werden soll.
  • Das Fluß-Bit wird im wesentlichen als ein Markierer verwendet, um die Stelle von Instruktions-Sätzen zu identifizieren, die konditionale Steuer-Fluß-Instruktionen enthalten, und geben Anlaß zu potentiellen Steuerfluß-Änderungen, und zwar in dem Fluß der Instruktionen durch die IFIFO-Einheit 264. Der Haupt-Instruktions-Fluß wird durch den MBUF 188 im allgemeinen mit einem Fluß-Bit-Wert von 0 verarbeitet. Beim Auftreten einer relativen, konditionalen Verzweigungs-Instruktion zum Beispiel wird der entsprechende Instruktions-Satz mit einem Fluß-Bit-Wert von 1 markiert. Die konditionale Verzweigungs-Instruktion wird durch die IDecodiereinheit 262 erfaßt. Bis zu vier konditionale Steuerfluß-Instruktionen können in dem Instruktions-Satz vorhanden sein. Der Instruktions-Satz wird dann in dem tiefsten, verfügbaren Master-Register der IFIFO-Einheit 264 gespeichert.
  • Um die Ziel-Adresse der konditionalen Verzweigungs-Instruktion zu bestimmen, werden die Ausführungs-Punkt-Adressen (DPC) zu der momentanen IEU 104, die relative Stelle des die konditionale Instruktion enthaltenden Instruktions-Satzes, wie dies durch das Flußfolge-Bit identifiziert ist, und das konditionale Instruktions-Stellen-Offset in dem Instruktions-Satz, wie dies durch den Steuerfluß-Detektor 274 geliefert wird, mit dem relativen Verzweigungs-Offset-Wert, wie er von einem entsprechenden Verzweigungs-Instruktions-Feld über Steuerleitungen 318 erhalten ist, kombiniert. Das Ergebnis ist eine virtuelle Verzweigungs-Ziel-Adresse, die durch die PC-Logik-Einheit 270 gespeichert wird. Die anfänglichen Instruktions-Sätze der Ziel-Instruktions-Folge können dann in dem TBUF 190 unter Verwendung dieser Adresse vorab abgerufen werden.
  • In Abhängigkeit von der zuvor ausgewählten Verzweigungs-Bias, ausgewählt für die PC-Logik-Einheit 270, wird die IFIFO-Einheit 264 fortfahren, von entweder dem MBUF 188 oder dem TBUF 190 geladen zu werden. Falls ein zweiter Instruktionssatz, der eine oder mehrere konditionale Fluß-Instruktionen enthält, vorgefunden wird, wird der Instruktions-Satz mit einem Flußfolge-Bit-Wert von 0 markiert. Da die zweite Ziel-Flußfolge nicht abgerufen werden kann, wird die Ziel-Adresse berechnet und durch die PC-Logik-Einheit 270 gespeichert, allerdings wird kein Vorababrufen durchgeführt. Zusätzlich können keine weiteren Instruktions-Sätze über die IDecodiereinheit 262 verarbeitet werden, oder zumindest keine, die dahin befunden sind, eine konditionale Fluß-Steuer-Instruktion zu enthalten.
  • Die PC-Logik-Einheit 270 kann, in den bevorzugten Ausführungsformen der vorliegenden Erfindung, bis zu acht konditionale Fluß-Instruktionen managen, die in bis zu zwei Instruktions-Sätzen auftreten. Die Ziel-Adressen für jeden der zwei Instruktions-Sätze, die durch Flußfolge-Bit-Änderungen markiert sind, werden in einem Feld aus vier Adressen-Registern gespeichert, wobei jede Ziel-Adresse logisch in Bezug auf die Stelle der entsprechenden, konditionalen Fluß-Instruktion in dem Instruktions-Satz positioniert ist.
  • Wenn einmal das Verzweigungsergebnis der konditionalen Flußinstruktion in Reihenfolge aufgelöst ist, wird die PC-Logik-Einheit 270 die Vorababruf-Steuereinheit 260 dahingehend richten, und zwar über Steuersignale auf Leitungen 316, die Inhalte des TBUF 190 zu dem MBUF 188 zu übertragen, wenn die Verzweigung vorgenommen ist, und um die Inhalte des TBUF 190 als ungültig zu markieren. Irgendwelche Instruktions-Sätze in der IFIFO-Einheit 264 von der nicht korrekten Instruktions-Flußfolge, einer Ziel-Flußfolge, wenn die Verzweigung nicht herangezogen wird, und einer Haupt-Flußfolge, falls die Verzweigung herangezogen wird, werden von der IFIFO-Einheit 264 gelöscht. Falls eine zweite oder darauffolgende, konditionale Strömungs-Steuerinstruktion in dem mit dem ersten Flußfolge-Bit markierten Instruktions-Satz existiert, wird diese Instruktion in einer konsistenten Art und Weise gehandhabt: die Instruktions-Sätze von der Ziel-Flußfolge werden vorab abgerufen, Instruktions-Sätze von dem MBUF 188 oder dem TBUF 190 werden über die IDecodiereinheit 262 in Abhängigkeit von der Verzweigungs-Bias verarbeitet und die IFIFO-Einheit 264 wird in Bezug auf nicht korrekte Flußfolge-Instruktions-Sätze gelöscht, wenn sich die konditionale Fluß-Instruktion schließlich auflöst.
  • Wenn ein sekundärer, konditionaler Fluß-Instruktions-Satz in der IFIFO-Einheit 264 verbleibt, wenn einmal die IFIFO-Einheit 264 von nicht korrekten Flußfolge-Instruktions-Sätzen gelöscht ist, und der erste, konditionale Fluß-Instruktions-Satz keine weiteren, konditionalen Fluß-Instruktionen enthält, werden die Ziel-Adressen des mit dem zweiten Flußfolge-Bit markierten Instruktions-Satzes zu dem ersten Feld von Adress-Registern überführt. In jedem Fall kann ein nächster Instruktions-Satz, der konditionale Fluß-Instruktionen enthält, dann über die IDecodiereinheit 262 evaluiert werden. Demzufolge ermöglicht die Toggle-Benutzung des Flußfolge-Bits, daß sich der potentielle Steuerfluß so ändert, um über die IFIFO-Einheit 264 markiert und gespurt zu werden, und zwar zu Zwecken einer Berechnung von Verzweigungs-Ziel-Adressen und zum Markieren der Instruktions-Satz-Stelle oberhalb der dort zu löschen ist, wo die Verzweigungs-Bias darauffolgend dahingehend bestimmt ist, nicht korrekt für eine bestimmte, konditionale Fluß-Steuer-Instruktion gewesen zu sein.
  • Im Gegensatz dazu, tatsächlich Instruktions-Sätze von den Master-Registern zu löschen, setzt die IFIFO-Steuer-Logik-Einheit 272 einfach das Gültigkeits-Bit-Zeichen in den Steuer-Registern der entsprechenden Master-Register der IFIFO-Einheit 264 zurück. Der Löschungsvorgang wird durch die PC-Logik-Einheit 270 in einem Steuersignal, das auf Leitungen 336 geliefert wird, eingeleitet. Die Eingänge jeder der Master-Steuer-Register 202, 210, 218, 226 sind direkt durch die IFIFO-Steuer-Logik-Einheit 272 über den Status- Bus 230 zugreifbar. In der bevorzugten Architektur 100 können die Bits innerhalb dieser Master-Steuer-Register 202, 210, 218, 226 durch die IFIFO-Steuereinheit 272 gleichzeitig zu oder unabhängig von einem Datenverschiebevorgang durch die IFIFO-Einheit 264 eingestellt werden. Diese Fähigkeit ermöglicht, daß ein Instruktions-Satz in irgendeinem der Master-Register 200, 208, 216, 224 eingeschrieben werden kann und die entsprechenden Status-Informationen in die Master-Steuer-Register 202, 210, 218, 226 asynchron in Bezug auf die Operation der IEU 104 eingeschrieben werden können.
  • Schließlich gibt eine zusätzliche Steuerleitung auf dem Steuer-Status-Bus 230 die FIFO-Operation der IFIFO-Einheit 264 frei und führt sie. Eine IFIFO-Verschiebung wird durch die IFIFO-Steuer-Logik-Einheit 272 in Abhängigkeit des Verschiebe-Anforderungs-Steuersignals, geliefert durch die PC-Logik-Einheit 270, über die Steuerleitungen 236 durchgeführt. Die IFIFO-Steuereinheit. 272 liefert, basierend auf der Verfügbarkeit eines Master-Registers 200, 208, 216, 224, um einen Instruktions-Satz zu empfangen, ein Steuersignal, und zwar über Leitungen 316, zu der Vorababruf-Steuereinheit 266, um die Übertragung eines nächsten, geeigneten Instruktions-Satzes von den Vorababruf-Puffern 260 anzufordern. Bei der Übertragung des Instruktions-Satzes wird das entsprechende Gültigkeits-Bit in dem Feld 268 zurückgesetzt.
  • C) IFU/IEU-Steuerschnittstelle:
  • Die Steuerschnittstelle zwischen der IFU 102 und der IEU 104 wird durch den Steuer-Bus 126 erzielt. Dieser Steuer-Bus 126 ist mit der PC-Logik-Einheit 270 verbunden und besteht aus einer Anzahl von Steuer-Adress- und spezialisierten Datenleitungen. Unterbrechungs-Anforderungs- und Rückmeldungs-Steuersignale, wie sie über die Steuerleitungen 340 geführt werden, ermöglichen der IFU 102, Unterbrechungs-Operationen mit der IEU 104 zu signalisieren und damit zu synchronisieren. Ein extern erzeugtes Unterbrechungssignal wird auf einer Leitung 292 zu der logischen Einheit 270 geliefert. Daraufhin verursacht ein Unterbrechungs-Anforderungs-Steuersignal, geliefert auf Leitungen 340, daß die IEU 104 versuchsweise ausgeführte Instruktionen aufhebt. Informationen, die sich auf die Art einer Unterbrechung beziehen, werden über Unterbrechungs-Informationsleitungen 341 ausgetauscht. Wenn die IEU 104 bereit ist, damit zu beginnen, Instruktions-Sätze aufzunehmen, die von der Unterbrechungs-Service-Programm-Adresse vorab abgerufen sind, bestimmt durch die PC-Logik-Einheit 270, stellt die IEU 104 ein Unterbrechungs-Rückmeldungs-Steuersignal auf den Leitungen 340 auf. Eine Ausführung des Unterbrechungs-Service-Programms, wie es vorab durch die IFU 102 abgerufen ist, wird dann beginnen.
  • Ein IFIFO-Lese-(IFIFO RD)-Steuersignal wird durch die IEU 104 geliefert, um zu signalisieren, daß der Instruktions-Satz, der in dem tiefsten Master-Register 224 vorhanden ist, vollständig ausgeführt worden ist, und daß ein nächster Instruktions-Satz erwünscht ist. Unter Empfangen dieses Steuersignals leitet die PC-Logik-Einheit 270 die IFIFO-Steuer-Logik-Einheit 272 so, um eine IFIFO-Verschiebe-Operation an der IFIFO-Einheit 264 durchzuführen.
  • Ein PC-Erhöhungs-Anforderungs- und -Größenwert (PC INC/SIZE) wird auf den Steuerleitungen 344 geliefert, um die PC-Logik-Einheit 270 so zu führen, den momentanen Programm-Zählerwert durch eine entsprechende Größenzahl von Instruktionen zu aktualiseren. Dies ermöglicht der PC-Logik-Einheit 270, einen Punkt eines Ausführungs-Programm-Zählers (DPC) beizubehalten, der zu der Stelle der ersten Ausführungs-Instruktion in Reihenfolge in der momentanen Programm-Instruktions-Flußfolge präzise ist.
  • Eine Ziel-Adresse (TARGET ADDR) wird auf den Adressen-Leitungen 346 zu der PC-Logik-Einheit 270 zurückgeführt. Die Ziel-Adresse ist die virtuelle Ziel-Adresse einer Verzweigungs-Instruktion, die von Daten abhängig ist, die innerhalb der Register-Datei der IEU 104 gespeichert sind. Eine Operation der IEU 104 ist deshalb erforderlich, um die Ziel-Adresse zu berechnen.
  • Steuer-Fluß-Ergebnis-(CF RESULT)-Steuersignale werden auf den Steuerleitungen 348 zu der PC-Logik-Einheit 270 geliefert, um zu identifizieren, ob irgendeine momentan anhängige, konditionale Verzweigungs-Instruktion aufgelöst worden ist und ob das Ergebnis entweder eine Verzweigung ist, die genommen ist, oder die nicht genommen ist. Basierend auf diesen Steuersignalen kann die PC-Logik-Einheit 270 bestimmen, welcher der Instruktions-Sätze in dem Vorababruf-Puffer 260 und der IFIFO-Einheit 264 aufgerufen werden muß, falls dies der Fall ist als eine Folge der Ausführung der konditionalen Ablauf-Instruktion.
  • Eine Zahl von IEU-Instruktions-Rückführungs-Typ-Steuersignalen (IEU Return) wird auf den Steuerleitungen 350 geliefert, um die IFU 102 an die Ausführung bestimmter Instruktionen durch die IEU 104 zu erinnern. Diese Instruktionen umfassen eine Rückführung von einer prozedurmäßigen Instruktion, eine Rückführung von einer Trap und eine Rückführung von einem Unterprogammaufruf. Die Rückführung von einer Trap-Instruktion wird ebenso in Hardware-Unterbrechungs- und Software-Trap-Handhabungs-Programmen verwendet. Die Unterprogramm-Aufruf-Rückführung wird auch in Verbindung mit Aufruf-Vorgängen vom Typ Sprung und Verknüpfung verwendet. In jedem Fall werden die Rückführ-Steuersignale vorgesehen, um die IFU 102 daran zu erinnern, deren Instruktions-Aufruf-Operation in Bezug auf die zuvor unterbrochene Instruktions-Flußfolge wieder aufzunehmen. Der Ursprung der Signale von der IEU 104 ermöglicht, daß die präzise Operation des Systems 100 beibehalten wird; die Wiederaufnahme einer "unterbrochenen" Instruktions-Flußfolge wird an dem Punkt einer Ausführung der Rückführ-Instruktion durchgeführt.
  • Eine momentane Instruktions-Ausführungs-PC-Adresse (momentane IF_PC) wird auf einem Adressen-Bus 352 zu der IEU 104 geliefert. Dieser Adressenwert, der DPC, identifiziert die präzise Instruktion, die durch die IEU 104 ausgeführt werden soll. Das bedeutet, daß, während die IEU 104 versuchsweise Vorinstruktionen nach der momentanen IF_PC-Adresse ausführen kann, diese Adresse zu Zwecken einer präzisen Steuerung der Architektur 100 in Bezug auf das Auftreten von Unterbrechungen, Ausnahmen und irgendwelchen anderen Ereignissen beibehalten werden muß, die eine Kenntnis des präzisen Zustands der Maschine erfordern würden. Wenn die IEU 104 bestimmt, daß der präzise Zustand der Maschine in der momentanen Ausführungs-Instruktions-Flußfolge weitergeführt werden kann, wird das PC-Inc/Size-Signal zu der IFU 102 geliefert und unmittelbar zurück in den momentanen IF_PC-Adressenwert reflektiert.
  • Schließlich wird ein Adressen- und bidirektionaler Daten-Bus 354 für die Übertragung von speziellen Register-Daten vorgesehen. Diese Daten können in spezielle Register innerhalb der IFU 102 durch die IEU 104 programmiert oder davon ausgelesen werden. Spezielle Register-Daten werden allgemein durch die IEU 104 zur Verwendung durch die IFU 102 geladen oder berechnet.
  • D) Detail der PC-Logik-Einheit:
  • Ein detailliertes Diagramm der PC-Logik-Einheit 270, die eine PC-Steuereinheit 362, eine Unterbrechungs-Steuereinheit 363, eine Vorababruf-PC-Steuereinheit 364 und eine Ausführungs-PC-Steuereinheit 366 umfaßt, ist in 3 dargestellt. Die PC-Steuereinheit 362 liefert eine Zeitabstimmungs-Steuerung über die Vorababruf- und Ausführungs-PC-Steuereinheiten 364, 366 in Abhängigkeit von Steuersignalen von der Vorababruf-Steuer-Logik-Einheit 266, der IFIFO-Steuer-Logik-Einheit 272 und der IEU 104, und zwar über den Schnittstellen-Bus 126. Die Unterbrechungs-Steuereinheit 363 ist für die Handhabung der präzisen Verarbeitung von Unterbrechungen und Ausnahmen verantwortlich, einschließlich der Bestimmung eines Vorababruf-Trap-Adressen-Offsets, das ein geeignetes Handhabungs-Programm auswählt, um einen jeweiligen Typ einer Trap zu verarbeiten. Die Vorababruf-PC-Steuereinheit 364 ist, insbesondere, zum Handhaben von Programm-Zählern verantwortlich, die dazu notwendig sind, die Vorababruf-Puffer 188, 190, 192, einschließlich Speicher-Rückführ-Adressen für Trap-Handhabungs- und prozedurmäßige Unterprogramm-Instruktions-Flüsse zu unterstützen. Bei der Unterstützung dieser Operation ist die Vorababruf-PC-Steuereinheit 364 für eine Erzeugung der virtuellen Vorababruf-Adresse verantwortlich, umfassend die CCU PADDER-Adresse auf den physikalischen Adressen-Busleitungen 324 und der VMU VMADDR-Adresse auf den Adressen-Leitungen 326. Demzufolge ist die Vorababruf-PC-Steuereinheit 364 zum Beibehalten des virtuellen, momentanen Vorababruf-PC-Adressen-Werts verantwortlich.
  • Die Vorababruf-Operation wird allgemein durch die IFIFO-Steuer-Logik-Einheit 272 über ein Steuersignal initiiert, das auf den Steuerleitungen 316 geliefert wird. In Abhängigkeit davon erzeugt die PC-Steuereinheit 362 eine Anzahl von Steuersignalen, die auf den Steuerleitungen 372 geliefert werden, um die Vorababruf-PC-Steuereinheit 364 so zu betreiben, um die PADDR- und, falls benötigt, die VMADDR-Adressen auf den Adressen-Leitungen 324, 326 zu erzeugen. Ein Erhöhungs-Signal, das einen Wert von 0 bis vier besitzt, kann auch auf den Steuerleitungen 374 geliefert werden, und zwar in Abhängigkeit davon, ob die PC-Steuereinheit 362 ein Instruktions-Satz-Abrufen an der momentanen Vorababruf-Adresse, ein Ausrichten für die zweite in einer Reihe von Vorababruf-Anforderungen, oder ein Auswählen des nächsten, vollen, sequentiellen Instruktions-Satzes für ein Vorababrufen ausführt. Schließlich wird die momentane Vorababruf-Adresse PF_PC auf dem Bus 370 zu der Ausführungs-PC-Steuereinheit 366 geliefert.
  • Neue Vorababruf-Adressen stammen von einer Anzahl von Quellen. Eine primäre Quelle von Adressen ist die momentane IF_PC Adresse, die von der Ausführungs-PC-Steuereinheit 366 über einen Bus 352 geliefert wird. Prinzipiell liefert die IF_PC Adresse eine Rückführ-Adresse für die darauffolgende Verwendung durch die Vorababruf-PC-Steuereinheit 364, wenn ein anfänglicher Ruf, eine Trap oder eine prozedurmäßige Instruktion auftritt. Die IF_PC Adresse wird in Registern in der Vorababruf-PC-Steuereinheit 364 bei jedem Auftreten dieser Instruktionen gespeichert. Auf diese Art und Weise muß die PC-Steuereinheit 362, beim Empfang eines IEU Rückführungs-Signals, über Steuerleitungen 350, nur das entsprechend Rückführ-Adressen-Register innerhalb der Vorababruf-PC-Steuereinheit 364 auswählen, um eine neue, virtuelle Vorababruf-Adresse quellenmäßig einzugeben, um dadurch den originalen Programm-Instruktions-Stromfluß wieder anzunehmen.
  • Eine andere Quelle von Vorababruf-Adressen ist der Ziel-Adressen-Wert, der auf dem relativen Ziel-Adressen-Bus 382 von der Ausführungs-PC-Steuereinheit 366 oder auf dem absoluten Ziel-Adressen-Bus 346, geliefert von der IEU 104, geliefert wird. Relative Ziel-Adressen sind solche, die durch die Ausführungs-PC-Steuereinheit 366 direkt berechnet werden können. Absolute Ziel-Adressen müssen durch die IEU 104 erzeugt werden, da solche Ziel-Adressen von Daten abhängig sind, die in der IEU-Register-Datei enthalten sind. Die Ziel-Adresse wird über den Ziel-Adressen-Bus 384 zu der Vorababruf-PC-Steuereinheit 364 zur Verwendung als eine virtuelle Vorababruf-Adresse geführt. Beim Berechnen der relativen Ziel-Adresse wird ein Operandenteil der entsprechenden Verzweigungs-Instruktion auch auf dem Operanden-Verschiebungsteil des Busses 318 von der IDecodiereinheit 262 geliefert.
  • Eine andere Quelle von virtuellen Vorababruf-Adressen ist die Ausführungs-PC-Steuereinheit 366. Ein Rückführ-Adressen-Bus 352' ist vorgesehen, um den momentanen IF_PC-Wert (DPC) zu der Vorababruf-PC-Steuereinheit 364 zu übertragen. Diese Adresse wird als eine Rückführ-Adresse dort verwendet, wo eine Unterbrechung, eine Trap oder eine andere Steuerfluß-Instruktion, wie beispielsweise ein Ruf, innerhalb der Instruktions-Folge aufgetreten ist. Die Vorababruf-PC-Steuereinheit 364 ist dann frei, um eine neue Instruktions-Folge vorab abzurufen. Die PC-Steuereinheit 362 empfängt ein IEU-Rückführsignal über Leitungen 350 von der IEU 104, wenn einmal das entsprechende Unterbrechungs- oder Trap-Handhabungs-Programm oder -Unterprogramm ausgeführt worden ist. Hieraufhin wählt die PC-Steuereinheit 362, über eines der PFPC-Steuersignale auf der Leitung 372 und basierend auf einer Identifikation der Rückführ-Instruktion, die so ausgeführt ist, wie sie über Leitung 350 geliefert ist, ein Register aus, das die momentane, virtuelle Rückführ-Adresse enthält. Diese Adresse wird dann dazu verwendet, die Vorababruf-Operation durch die PC-Logik-Einheit 270 fortzuführen.
  • Schließlich ist eine andere Quelle von virtuellen Vorababruf-Adressen eine solche von dem speziellen Register-Adressen- und Daten-Bus 354. Ein Adressen-Wert, oder mindestens ein Basis-Adressen-Wert, berechnet oder geladen durch die IEU 104, wird als Datensatz über den Bus 354 zu der Vorababruf-PC-Steuereinheit 364 übertragen. Die Basis-Adressen umfassen die Basis-Adressen für die Trap-Adressen-Tabelle, eine schnelle Trap-Tabelle und eine Basis-Prozedur-Instruktions-Versende-Tabelle. Der Bus 354 ermöglicht auch, daß viele der Register in den Vorababruf- und Ausführungs-PC-Steuereinheiten 364, 366 gelesen werden können, um entsprechende Aspekte über den Zustand der Maschine, damit er über die IEU 104 manipuliert werden kann, zu lesen.
  • Die Ausführungs-PC-Steuereinheit 366, die der Steuerung der PC-Steuereinheit 362 unterliegt, ist primär für eine Berechnung des momentanen IF_PC Adressen-Werts verantwortlich. In dieser Rolle antwortet die Ausführungs-PC-Steuereinheit 366 auf Steuersignale, die durch die PC-Steuereinheit 362 auf den ExPC-Steuerleitungen 378 geliefert werden, und auf Erhöhungs/Größen-Steuersignale, die auf den Steuerleitungen 380 geliefert werden, um die IF_PC Adresse einzustellen. Diese Steuersignale werden primär in Abhängigkeit des IFIFO-Lese-Steuersignals, geliefert auf der Leitung 342, und des PC-Erhöhungs/Größen-Werts, geliefert auf den Steuerleitungen 344, von der IEU 104 erzeugt.
  • 1) Detail der PF- und ExPC-Steuer-Daten-Einheit:
  • 4 gibt ein detailliertes Blockdiagramm der Vorababruf- und Ausführungs-PC-Steuereinheiten 364, 366 an. Diese Einheiten bestehen primär aus Registern, Inkrementoren und dergleichen, Selektoren und Addiererblöcken. Eine Steuerung zum Managen der Übertragung von Daten zwischen diesen Blöcken wird durch die PC-Steuereinheit 362 über die PFPC-Steuerleitungen 372, die ExPC-Steuerleitungen 378 und die Inkrementierungs- bzw. Erhöhungs-Steuerleitungen 374, 380 vorgenommen. Zum Zwecke der Deutlichkeit sind diese spezifischen Steuerleitungen nicht in dem Blockdiagramm der 4 dargestellt. Allerdings sollte verständlich werden, daß diese Steuersignale zu den Blöcken so zugeführt werden, wie dies hier beschrieben ist.
  • Zentral zu der Vorababruf-PC-Steuereinheit 364 ist ein Vorababruf-Selektor (PF_PC SEL) 390 vorhanden, der als ein zentraler Selektor der momentanen, virtuellen Vorababruf-Adressen arbeitet. Diese momentane Vorababruf-Adresse wird auf den Ausgangs-Bus 392 von dem Vorababruf-Selektor zu einer Inkrementator-Einheit 394 gegeben, um eine nächste Vorababruf-Adresse zu erzeugen. Diese nächste Vorababruf-Adresse wird auf dem Inkrementator-Ausgangs-Bus 396 zu einem parallelen Feld aus Registern MBUF PFnPC 398, TBUF PFnPC 400 und EBUF PFnPC 402 geliefert. Diese Register 398, 400, 402 speichern effektiv die nächste Instruktions-Vorababruf-Adresse. Allerdings werden gemäß der bevorzugten Ausführungsform der vorliegenden Erfindung separate Vorababruf-Adressen für den MBUF- 188, den TBUF 190 und den EBUF 192 gehalten. Die Vorababruf-Adressen werden, wie sie durch die M-BUF, TBUF- und EBUF PFnPC-Register 398, 400, 402 gespeichert sind, jeweils durch die Adressen-Busse 404, 408, 410 zu dem Vorababruf-Selektor 390 geliefert. Demzufolge kann die PC-Steuereinheit 362 direkt eine unmittelbare Umschaltung der Vorababruf-Instruktions-Folge nur durch Führen der Auswahl durch den Vorabauswahl-Selektor 390, eines anderen einen der Vorababruf-Register 398, 400, 402, führen. Wenn der Adressen-Wert einmal durch den Inkrementator 394 erhöht worden ist, falls ein nächster Instruktions-Satz in der Flußfolge vorab abgerufen werden soll, wird der Wert zu dem geeigneten einen der Vorababruf-Register 398, 400, 402 zurückgeführt. Ein anderes, paralleles Feld aus Registern ist, zur Vereinfachung als ein einzelner, spezieller Register-Block 412 dargestellt, vorgesehen, um eine Anzahl von speziellen Adressen zu speichern. Der Register-Block 412 umfaßt ein Trap-Rückführ-Adressen-Register, ein prozedurales Instruktions-Rückführ-Adressen-Register, ein prozedurales Instruktions-Versende-Tabellen-Basis-Adressen-Register, ein Trap-Programm-Versende-Tabelle-Basis-Adressen-Register und ein schnelles Trap-Programm-Tabellen-Basis-Adressen-Register. Unter der Steuerung der PC-Steuereinheit 362 können diese Rückführ-Adressen-Register die momentane IF_PC Ausführungs-Adresse über den Bus 352' empfangen. Die Adressen-Werte, die durch die Rückführ- und Basis-Adressen-Register innerhalb des Register-Blocks 412 gespeichert sind, können beide unabhängig durch die IEU 104 gelesen und beschrieben werden. Das Register wird ausgewählt und Werte werden über den speziellen Register-Adressen- und Daten-Bus 354 übertragen.
  • Ein Selektor innerhalb des speziellen Register-Blocks 412, gesteuert durch die PC-Steuereinheit 362, ermöglicht, daß Adressen durch die Register des Register-Blocks 412 gespeichert werden, die auf den speziellen Register-Ausgangs-Bus 416 zu dem Vorababruf-Selektor 390 gegeben werden sollen. Rückführ-Adressen werden direkt zu dem Vorababruf-Selektor 390 geführt. Basis-Adressen-Werte werden mit dem Offset-Wert, geliefert auf dem Unterbrechungs-Offset-Bus 373 von der Unterbrechungs-Steuereinheit 363, geliefert. Wenn einmal eine spezielle Adresse quellenmäßig zu dem Vorababruf-Selektor 390 über den Bus 373' geführt ist, kann diese als die Anfangs-Adresse für eine neue Vorababruf-Instruktions-Folge verwendet werden, indem danach die inkrementale bzw. Erhöhungs- Schleife der Adresse durch den Inkrementator 394 und eines der Vorababruf-Register 398, 400, 402 fortgeführt wird.
  • Eine andere Quelle von Adressen zu dem Vorababruf-Selektor 390 ist ein Feld aus Registern innerhalb des Ziel-Adressen-Register-Blocks 414. Die Ziel-Register innerhalb des Blocks 414 dienen zur Speicherung von, in der bevorzugten Ausführungsform, acht potentiellen Verzweigungs-Ziel-Adressen. Diese acht Speicherstellen entsprechen logisch den acht potentiell ausführbaren Instruktionen, die in den untersten bzw. niedrigsten zwei Master-Registern 216, 224 der IFIFO-Einheit 264 gehalten sind. Da irgendwelche, und potentiell alle, dieser Instruktionen konditionale Verzweigungs-Instruktionen sein könnten, ermöglicht der Ziel-Register-Block 414, daß deren vorab berechnete Ziel-Adressen, auf die Verwendung zum Abrufen einer Ziel-Instruktions-Flußfolge durch den TBUF 190 wartend, gespeichert werden. Insbesondere wird, wenn eine konditionale Verzweigungs-Bias so eingestellt ist, daß die PC-Steuereinheit 362 unmittelbar damit beginnt, eine Ziel-Instruktions-Folge vorab abzurufen, die Ziel-Adresse unmittelbar durch den Ziel-Register-Block 414 über den Adressen-Bus 418 zu dem Vorababruf-Selektor 390 zugeführt. Wenn die Adresse einmal durch den Inkrementator 394 erhöht ist, wird sie zurück zu dem TBUF PFnPC 400 zur Verwendung in darauffolgenden Vorababruf-Operationen der Ziel-Instruktions-Folge gespeichert. Falls zusätzliche Verzweigungs-Instruktionen innerhalb der Ziel-Instruktions-Folge auftreten, werden die Ziel-Adressen solcher sekundären Verzweigungen berechnet und in dem Ziel-Register-Feld 414 gespeichert, bei anhängiger Verwendung unter Auflösung der ersten, konditionalen Verzweigungs-Instruktion.
  • Eine berechnete Ziel-Adresse, wie sie durch den Ziel-Register-Block 414 gespeichert ist, wird von einer Ziel-Adressen-Berechnungseinheit innerhalb der Ausführungs-PC-Steuereinheit 366 über die Adressenleitungen 382 oder von der IEU 104 über den absoluten Ziel-Adressen-Bus 346 übertragen.
  • Der Adressen-Wert, der über den Vorababruf-PF_PC-Selektor 390 übertragen ist, ist ein voller, zweiunddreißig Bit, virtueller Adressen-Wert. Die Seitengröße ist, in der bevorzugten Ausführungsform der vorliegenden Erfindung, bei 16 KBytes, entsprechend dem maximalen Seiten-Offset-Adressen-Wert [13:0], festgelegt. Deshalb ist eine VMU-Seitentranslation nicht erforderlich, ohne daß dabei eine Änderung in der momentanen, virtuellen Vorababruf-Seiten-Adresse vorhanden ist [27:14]. Eine Vergleichseinrichtung in dem Vorababruf-Selektor 390 erfaßt diesen Umstand. Ein VMU-Translations- Anforderungssignal (VMXLAT) wird über die Leitung 372' zu der PC-Steuereinheit 362 geführt, wenn dort eine Änderung in der virtuellen Seiten-Adresse vorhanden ist, entweder aufgrund einer Erhöhung über eine Seitengrenze hinaus oder einer Steuerflußverzweigung zu einer anderen Seiten-Adresse. Hieraufhin richtet die PC-Steuereinheit 362 die Plazierung der VM VADDR Adresse auf den Leitungen 326, zusätzlich zu dem CCU PADDR auf den Leitungen 324, beide über eine Puffer-Einheit 420, und die geeigneten Steuersignale auf den VMU Steuerleitungen 326, 328, 330, um eine VMU virtuell zur physikalischen Seitentranslation zu erhalten. Dort, wo eine Seitentranslation nicht erforderlich ist, wird die momentane, physikalische Seiten-Adresse [31:14] durch eine Verriegelung an dem Ausgang der VMU Einheit 108 auf dem Bus 122 beibehalten.
  • Die virtuelle Adresse, die auf dem Bus 370 geliefert wird, wird durch den Inkrementator 394 in Abhängigkeit von einem Signal erhöht, das auf der Erhöhungs-Steuerleitung 374 geführt wird. Der Inkrementator 394 erhöht durch einen Wert, der einen Instruktions-Satz darstellt (vier Instruktionen oder sechzehn Bytes), um einen nächsten Instruktions-Satz auszuwählen. Die vier Bits niedriger Ordnung einer Vorababruf-Adresse, wie sie zu der CCU-Einheit 106 geliefert sind, sind Null. Deshalb kann die aktuelle Ziel-Adressen-Instruktion in einem ersten Verzweigungs-Ziel-Instruktions-Satz nicht in der ersten Instruktions-Stelle angeordnet werden. Allerdings werden die vier Bits niedriger Ordnung der Adresse zu der PC-Steuereinheit 362 geliefert, um zu ermöglichen, daß die geeignete, erste Verzweigungs-Instruktionsstelle durch die IFU 102 bekannt ist. Die Erfassung und Handhabung, durch Rückführung der Bits niedriger Ordnung [3:2] einer Ziel-Adresse als die Zwei-Bit-Puffer-Adresse, um die geeignete, erste Instruktion für eine Ausführung in einem nicht ausgerichteten Ziel-Instruktions-Satz auszuwählen, wird nur für das erste Vorababrufen einer neuen Instruktions-Folge durchgeführt, d. h. irgendeine erste, nicht sequentielle Instruktions-Satz-Adresse in einer Instruktions-Folge. Die nicht ausgerichtete Beziehung zwischen der Adresse der ersten Instruktion in einem Instruktions-Satz und der Vorababruf-Adresse, die beim Vorababrufen des Instruktions-Satzes verwendet ist, kann und wird danach ignoriert werden, und zwar für die Dauer der momentanen, sequentiellen Instruktions-Folge.
  • Der Rest der funktionalen Blöcke, dargestellt in 4, weist die Ausführungs-PC-Steuereinheit 366 auf. Gemäß der bevorzugten Ausführungsform der vorliegenden Erfindung schließt die Ausführungs-PC-Steuereinheit 366 deren eigenen, unabhängig funktio nierenden Programm-Zähler-Inkrementator ein. Zentral zu dieser Funktion ist ein Ausführungs-Selektor (DPC SEL) 430 vorhanden. Der Adressen-Ausgang durch den Ausführungs-Selektor 430, auf dem Adressen-Bus 352', ist die momentane Ausführungs-Adresse (DPC) der Architektur 100. Diese Ausführungs-Adresse wird zu einer Addierereinheit 434 geführt. Die Erhöhung/Größen-Steuersignale, die auf den Leitungen 380 gegeben sind, spezifizieren einen Instruktions-Erhöhungs-Wert von eins bis vier, den die Addierereinheit 434 zu der Adresse hinzu addiert, die von dem Selektor 430 erhalten ist. Wenn der Addieren 432 zusätzlich eine Ausgangs-Verriegelungs-Funktion durchführt, wird die erhöhte, nächste Ausführungs-Adresse auf den Adressenleitungen 436 direkt zurück zu dem Ausführungs-Selektor 430 zur Verwendung in den nächsten Ausführungs-Erhöhungs-Zyklus geführt.
  • Die anfängliche Ausführungs-Adresse und alle darauffolgenden, neuen Folge-Adressen werden über eine neue Folgefluß-Register-Einheit 438 über die Adressen-Leitungen 440 erhalten. Die neue Flußfolge-Register-Einheit 438 ermöglicht, daß die neue, momentane Vorababruf-Adresse, wie sie auf dem PFPC-Adressen-Bus 370 von dem Vorababruf-Selektor 390 geliefert wird, weiter zu dem Adressen-Bus 440 direkt geführt oder für eine darauffolgende Verwendung gespeichert wird. Das bedeutet, daß dort, wo die Vorababruf-PC-Steuereinheit 364 bestimmt, ein Vorababrufen an einer neuen, virtuellen Adresse zu beginnen, die neue Flußfolge-Adresse temporär durch die Register-Einheit 438 für die neue Flußfolge gespeichert wird. Die PC-Steuereinheit 362 hält, durch ihre eigenen Partizipierung in sowohl dem Vorababruf- als auch dem Ausführungs-Erhöhungs-Zyklus, die neue Flußfolge-Adresse in dem Register 438 für die neue Flußfolge, bis die Ausführungs-Adresse den Programm-Ausführungspunkt entsprechend zu der Steuerfluß-Instruktion erreicht hat, die die neue Instruktions-Flußfolge auferlegt hat. Die neue Flußfolge-Adresse wird dann von der Register-Einheit 438 für die neue Flußfolge zu dem Ausführungs-Selektor 430 ausgegeben, um die unabhängige Erzeugung von Ausführungs-Adressen in der neuen Instruktions-Flußfolge zu initiieren.
  • Gemäß den bevorzugten Ausführungsformen der vorliegenden Erfindung dient die Register-Einheit 438 für die neue Flußfolge zum Puffern von zwei Steuerfluß-Instruktions-Ziel-Adressen. Durch die unmittelbare Verfügbarkeit der neuen Flußfolge-Adresse ist im wesentlichen keine Latenz beim Umschalten der Ausführungs-PC-Steuereinheit 366 von der Erzeugung einer momentanen Sequenz von Ausführungs-Adressen zu einer Sequenz einer neuen Flußfolge von Ausführungs-Adressen vorhanden.
  • Schließlich ist ein IF_PC-Selektor (IF_PC SEL) 442 vorgesehen, um letztendlich die momentane IF_PC-Adresse auf dem Adressen-Bus 352 zu der IEU 104 auszugeben. Die Eingänge zu dem IF_PC-Selektor 442 sind die Ausgangs-Adressen, die von entweder dem Ausführungs-Selektor 430 oder der Register-Einheit 438 für die neue Flußfolge erhalten sind. In den meisten Fällen wird der IF_PC-Selektor 442 durch die PC-Steuereinheit 362 geführt, um die Ausführungs-Adressen-Ausgabe durch den Ausführungs-Selektor 430 auszuwählen. Allerdings kann, um weiterhin die Latenz beim Umschalten zu einer neuen, virtuellen Adressen, die dazu verwendet ist, eine Ausführung einer neuen Instruktions-Flußfolge zu initiieren, zu reduzieren, die ausgewählte Adresse, die von der Register-Einheit 438 für die neue Folge zugeführt wird, im Bypass über den Bus 440 direkt zu dem IF_PC Selektor 442 zum Vorsehen als die momentane IF_PC Ausführungs-Adresse geführt werden.
  • Die Ausführungs-PC-Steuereinheit 366 ist zum Berechnen aller relativen Verzweigungs-Ziel-Adressen geeignet. Die momentane Ausführungspunkt-Adresse und die durch die Register-Einheit 428 für die neue Flußfolge gelieferte Adresse werden durch einen Steuerfluß-Selektor (CF_PC) 446 über die Adressen-Busse 352', 440 empfangen. Dementsprechend besitzt die PC-Steuereinheit 362 eine wesentliche Flexibilität beim Auswählen der exakten, anfänglichen Adresse, von der aus eine Ziel-Adresse zu berechnen ist. Diese anfängliche oder Basis-Adresse wird über einen Adressen-Bus 454 zu einer Ziel-Adressen-ALU 450 zugeführt. Ein zweiter Eingangswert zu der Ziel-ALU 450 wird von einer Steuerfluß-Verschiebungs-Berechnungs-Einheit 452 über einen Bus 458 zugeführt. Relative Verzweigungs-Instruktionen schließen, entsprechend der bevorzugten Architektur 100, einen Verschiebungswert in der Form einer unmittelbaren Modus-Konstanten ein, die eine relative, neue Target-Adresse spezifiziert. Die Steuerfluß-Verschiebungs-Berechnungs-Einheit 452 empfängt den Operanden-Verschiebungs-Wert, der anfänglich über den IDecodiereinheit-Operanden-Ausgangsbus 318 erhalten ist. Schließlich wird ein Offset-Register-Wert zu der Ziel-Adressen-ALU 450 über die Leitungen 456 zugeführt. Das Offset-Register 448 empfängt einen Offset-Wert über die Steuerleitungen 378' von der PC-Steuereinheit 362. Die Größe des Offset-Werts wird durch die PC-Steuereinheit 362 basierend auf dem Adressen-Offset zwischen der Basis-Adresse, die auf den Adres sen-Leitungen 454 zugeführt ist, und der Adresse der momentanen Verzweigungs-Instruktion, für die die relative Ziel-Adresse berechnet werden soll, bestimmt. Das bedeutet, daß die PC-Steuereinheit 362, über deren Steuerung der IFIFO-Steuer-Logik-Einheit 372, die Anzahl von Instruktionen leitet, die die Instruktion an der momentanen Ausführungs-Punktadresse (angefordert durch CP_PC) separiert und der Instruktion, die momentan durch die IDecodiereinheit 262 verarbeitet werden soll, führt, und deshalb durch die PC-Logik-Einheit 270 verarbeitet wird, um die Ziel-Adresse für diese Instruktion zu bestimmen.
  • Wenn die relative Ziel-Adresse durch die Ziel-Adressen-ALU 450 berechnet worden ist, wird die Ziel-Adresse in ein entsprechendes eines der Ziel-Register 414 über den Adressen-Bus 382 eingeschrieben.
  • 2) Details des PC-Steuer-Algorithmus
    • 1) Haupt-Instruktions-Flußfolge-Verarbeitung: MBUF PFnPC
    • 1.1 Die Adresse der nächsten Hauptfluß-Vorababruf-Instruktion wird in der MBUF PFnPC gespeichert.
    • 1.2 Beim Nichtvorhandensein einer Steuerfluß-Instruktion stellt ein 32 Bit Inkrementator den Adressen-Wert in dem MBUF PFnPC durch sechzehn Bytes (× 16) mit jedem Vorababruf-Zyklus ein.
    • 1.3 Wenn eine nicht konditionale Steuerfluß-Instruktion I-decodiert ist, werden alle vorab abgerufenen Daten, die auf den Instruktions-Satz folgend abgerufen sind, entleert und der MBUF PFnPC wird geladen, und zwar über die Ziel-Register-Einheit, den PF_PC-Selektor und den Inkrementator, und zwar mit der neuen Haupt-Instruktions-Fluß-Adresse. Die neue Adresse wird auch in den neuen Flußfolge-Registern gespeichert.
    • 1.3.1 Die Zieladresse eines relativen, nicht konditionalen Steuerflusses wird durch die IFU von Register-Daten, die durch die IFU gehalten sind, und von Operanden-Daten, die der Steuerfluß-Instruktion folgen, berechnet.
    • 1.3.2 Die Ziel-Adresse einer absoluten, nicht konditionalen Steuerfluß-Instruktion wird eventuell durch die IEU von einer Register-Referenz, einem Basis-Register-Wert und einem Index-Register-Wert berechnet.
    • 1.3.2.1 Ein Instruktions-Vorababruf-Zyklus setzt aus, bis die Ziel-Adresse durch die IEU für eine absolute Adressen-Steuer-Fluß-Instruktion zurückgeführt ist; ein Instruktions-Ausführungs-Zyklus fährt fort.
    • 1.4 Die Adresse des nächsten Hauptfluß-Vorababruf-Instruktions-Satzes, resultierend von einer nicht konditionalen Steuerfluß-Instruktion, wird im Bypass über die Ziel-Adressen-Register-Einheit, den PF_PC-Selektor und den Inkrementator vorbeigeführt und für eine eventuelle Speicherung in dem MBUF PFnPC geführt; ein Vorababrufen fährt bei 1.2 fort.
    • 2 Prozedurale Instruktions-Flußfolge-Verareitung: EBUF PFnPC
    • 2.1 Eine prozedurale Instruktion kann in der Haupt- oder Verzweigungs-Ziel-Instruktions-Flußfolge vorab abgerufen werden. Falls in einer Ziel-Flußfolge abgerufen ist, erfolgt ein Aussetzen eines Vorababrufens der prozeduralen Flußfolge, bis sich die konditionale Steuerfluß-Instruktion auflöst und die prozedurale Instruktion zu dem MBUF übertragen wird. Dies ermöglicht, daß der TBUF beim Handhaben von konditionalen Steuerflüssen verwendet werden kann, die in der prozeduralen Instruktions-Flußfolge auftreten.
    • 2.1.1 Eine prozedurale Instruktion sollte nicht in der prozeduralen Instruktions-Folge erscheinen, d. h. prozedurale Instruktionen sollten nicht darin verschachtelt sein: eine Rückführung von einer prozeduralen Instruktion wird eine Ausführung zu dem Haupt-Instruktions-Fluß zurückführen. Um ein Verschachteln zu ermöglichen, würde eine zusätzlich zugeordnete Rückführung von einer verschachtelten, prozeduralen Instruktion erforderlich sein. Während die Architektur leicht eine solche Instruktion stützen kann, wird das Erfordernis für eine Fähigkeit hinsichtlich einer verschachtelten, prozeduralen Instruktion nicht wahrscheinlich die Funktion der Architektur verbessern.
    • 2.1.2 In einer Haupt-Instruktions-Folge wird eine prozedurale Instruktions-Flußfolge, die wiederum erste und zweite konditionale Steuerfluß-Instruktion enthaltende Instruktions-Sätze umfaßt, ein Vorababrufen in Bezug auf den zweiten, konditionalen Steuerfluß-Instruktions-Satz aussetzen, bis irgendwelche konditionalen Steuerfluß-Instruktionen in dem ersten eines solchen Instruktions-Satzes aufgelöst werden und der zweite, konditionale Steuerfluß-Instruktions-Satz zu dem MBUF übertragen worden ist.
    • 2.2 Prozedurale Instruktionen liefern ein relatives Offset, das als ein unmittelbares Modus-Operanden-Feld der Instruktion umfaßt ist, um die prozedurale Programm-Start-Adresse zu identifizieren:
    • 2.2.1 Der Offset-Wert, der durch die prozedurale Instruktion geliefert wird, wird mit einem Wert kombiniert, der in einem prozeduralen Basis-Adressen-(PBR)-Register enthalten ist, das in der IFU geführt wird. Dieses PBR-Register ist über die spezielle Adresse und einen Daten-Bus in Abhängigkeit der Ausführung einer speziellen Register-Bewegungs-Instruktion lesbar und beschreibbar.
    • 2.3 Wenn eine prozedurale Instruktion umfaßt ist, wird die nächste Haupt-Instruktions-Flußfolge-IF_PC-Adresse in dem uPC-Rückführ-Adressen-Register gespeichert und das Prozedur-In-Progress-Bit wird in das Prozessor-Status-Register (PSR) eingegeben.
    • 2.4 Die Start-Adresse der prozeduralen Flußfolge wird von dem PBR-Register (plus dem prozeduralen Instruktions-Operanden-Offset-Wert) zu dem PF PC-Selektor geführt.
    • 2.5 Die Start-Adresse der prozeduralen Flußfolge wird simultan zu der Register-Einheit für die neue Flußfolge und zu dem Inkrementator zur Erhöhung (× 16) geführt; die erhöhte Adresse wird dann in dem EBUF PFnPC gespeichert.
    • 2.6 Beim Nichtvorhandensein einer Steuerfluß-Instruktion stellt ein 32 Bit Inkrementator einen Adressen-Wert (× 16) in dem EBUF PFnPC mit jedem prozeduralen Instruktions-Vorababruf-Zyklus ein.
    • 2.7.1 Wenn eine nicht konditionale Steuerfluß-Instruktion I-decodiert wird, werden alle vorab abgerufenen Daten, die auf die Verzweigungs-Instruktion folgend abgerufen sind, gelöscht, und der EBUF PFnPC wird mit der neuen, prozeduralen Instruktions-Flußfolge-Adresse geladen.
    • 2.7.1 Die Ziel-Adresse einer relativen, nicht konditionalen Steuerfluß-Instruktion wird durch die IFU aus in der IFU gehaltenen Register-Daten und aus den Operanden-Daten, die innerhalb eines unmittelbaren Modus-Operanden-Felds der Steuerfluß-Instruktion geliefert werden, berechnet.
    • 2.7.2 Die Ziel-Adresse einer absoluten, nicht konditionalen Verzweigung wird durch die IEU von einer Register-Referenz, einem Basis-Register-Wert und einem Index-Register-Wert berechnet.
    • 2.7.2.1 Ein Instruktions-Vorababruf-Zyklus setzt aus, bis die Ziel-Adresse durch die IEU für absolute Adressen-Verzweigungen zurückgeführt ist; der Ausführungs-Zyklus fährt fort.
    • 2.8 Die Adresse des nächsten, prozeduralen Fluß-Vorababruf-Instruktions-Satzes wird in dem EBUF PFnPC gespeichert und ein Vorababrufen fährt bei 1.2 fort.
    • 2.9 Wenn eine Rückführung von einer Prozedur-Instruktion idecodiert wird, fährt ein Vorababrufen von der Adresse fort, die in dem uPC-Register gespeichert ist, die dann erhöht wird (× 16) und zu dem MBUF PFnPC-Register für darauffolgende Vorababruf-Vorgänge zurückgeführt wird.
    • 3 Verarbeitung einer Verzweigungs-Instruktions-Flußfolge: TBUF PFnPC
    • 3.1 Wenn eine konditionale Steuerfluß-Instruktion, die in einem ersten Instruktions-Satz in der MBUF-Instruktionflußfolge auftritt, I-decodiert ist, wird die Ziel-Adresse durch die IFU bestimmt, falls die Ziel-Adresse relativ zu der momentanen Adresse vorhanden ist, oder durch die IEU für absolute Adressen.
    • 3.1 Für eine "Verzweigung vorgenommene Bias"
    • 3.1.1 Falls die Verzweigung zu einer absoluten Adresse vorliegt, Aussetzen eines Instruktions-Vorababruf-Zyklus, bis die Ziel-Adresse durch die IEU zurückgeführt wird: der Ausführungs-Zyklus fährt fort.
    • 3.1.2 Laden des TBUF PFnPC mit der Verzweigungs-Ziel-Adresse durch Übertragen über den PF PC-Selektor und den Inkrementator.
    • 3.1.3 Ziel-Instruktions-Flußfolge-Instruktionen werden in den TBUF vorab abgerufen und dann in den IFIFO für eine darauffolgende Ausführung geführt: falls der IFIFO und der TBUF voll sind, Aussetzen eines Vorababrufens.
    • 3.1.4 Der 32 Bit Inkrementator stellt (× 16) den Adressen-Wert in dem TBUF PFnPC mit jedem Vorababruf-Zyklus ein.
    • 3.1.5 Aussetzen der Vorababruf-Operation beim (decodieren einer konditionalen Steuerfluß-Instruktion, die in einem zweiten Instruktions-Satz in der Ziel-Instruktions-Folge auftritt, bis alle konditionalen Verzweigungs-Instruktionen in dem ersten (primären) Satz aufgelöst sind (gehe allerdings weiter berechne die relative Ziel-Adresse und speichere sie in den Ziel-Registern).
    • 3.1.6 Falls die konditionale Verzweigung in dem ersten Instruktions-Satz sich zu "taken" ("genommen") auflöst:
    • 3.1.6.1 Entleere Instruktions-Sätze, die dem ersten, konditionalen Fluß-Instruktions-Satz in dem MBUF oder EBUF folgen, falls die Quelle der Verzweigung die EBUF-Instruktions-Flußfolge war, wie dies für das Prozedur-In-Progress-Bit bestimmt ist.
    • 3.1.6.2 Übertrage den TBUF PFnPC Wert zu dem MBUF PFnPC oder dem EBUF basierend auf dem Zustand des Prozedur-In-Progress-Bits.
    • 3.1.6.3 Übertragen die vorab abgerufene TBUF-Instruktion zu dem MBUF oder dem EBUF basierend auf dem Zustand des Prozedur-In-Progress-Bits.
    • 3.1.6.4 Falls ein zweiter, konditionaler Verzweigungs-Instruktions-Satz nicht I-decodiert worden ist, fahre mit MBUF oder EBUF Vorababruf-Operationen basierend auf dem Zustand des Prozedur-In-Progress-Bits fort.
    • 3.1.6.5 Falls eine zweite, konditionale Verzweigungs-Instruktion I-decodiert worden ist, beginne eine Verarbeitung dieser Instruktion (gehe zu Schritt 3.3.1).
    • 3.1.7 Falls die konditionale Steuerung für Instruktionen) in den ersten, konditionalen Instruktions-Satz sich zu "not taken" ("nicht genommen") auflöst:
    • 3.1.7.1 Entleere den IFIFO und IEU von Instruktions-Sätzen und Instruktionen von der Ziel-Instruktions-Flußfolge.
    • 3.1.7.2 Führe MBUF oder EBUF Vorababruf-Operationen vorab fort.
    • 3.2 Für "eine Verzweigung nicht vorgenommener Bias" ("branch not taken bias"):
    • 3.2.1 Setze ein Vorababrufen von Instruktionen in den MBUF aus; ein Ausführungs-Zyklus fährt fort.
    • 3.2.1.1 Falls die konditionale Steuerfluß-Instruktion in dem ersten, konditionalen Instruktions-Satz relativ ist, berechne die Ziel-Adresse und speichere sie in den Ziel-Registern.
    • 3.2.1.2 Falls die konditionalen Steuerfluß-Instruktionen in dem ersten, konditionalen Instruktions-Satz absolut sind, warte auf die IEU, um die Ziel-Adresse zu berechnen und führe die Adresse zu den Ziel-Registern zurück.
    • 3.2.1.3 Setze die Vorababruf-Operation beim (decodieren einer konditonalen Steuerfluß-Instruktion in einem zweiten Instruktions-Satz aus, bis die konditionale Steuerfluß- Instruktionen) in der ersten, konditionalen Instruktions-Satz-Instruktion aufgelöst ist (sind).
    • 3.2.2 Wenn einmal die Ziel-Adresse der ersten, konditionalen Verzweigung berechnet ist, Laden in den TBUF PFnPC und auch Beginn eines Vorababrufens von Instruktionen in dem TBUF gleichzeitig mit der Ausführung der Haupt-Instruktions-Flußfolge. Ziel-Instruktions-Sätze werden nicht in den IFIFO hinein geladen (die Verzweigungs-Ziel-Instruktionen stehen so zur Verfügung, wenn sich jede konditionale Steuer-Bus-Instruktion in dem ersten Instruktions-Satz auflöst).
    • 3.2.3 Falls eine konditionale Steuer-Fluß-Instruktion in dem ersten Satz sich zu "genommen" ("taken") auflöst:
    • 3.2.3.1 Entleere den MBUF oder EBUF. falls die Quelle der Verzweigung die EBUF-Instruktions-Flußfolge war, wie dies aus dem Zustand des Prozedur-In-Progress-Bits bestimmt ist, und den IFIFO und den IEU der Instruktionen von der Hauptflußfolge, dem ersten konditionalen Verzweigungs-Instruktions-Satz folgend.
    • 3.2.3.2 Übertragung des TBUF PFnPC-Werts zu dem MBUF PFnPC oder EBUF, wie dies von dem Zustand des Prozedur-In-Progress-Bits bestimmt ist.
    • 3.2.3.3 Übertragung der vorab abgerufenen TBUF-Instruktionen zu dem MBUF oder EBUF, wie dies aus dem Zustand des Prozedur-In-Progress-Bits bestimmt ist.
    • 3.2.3.4 Fortfahren von MBUF oder EBUF Vorababruf-Operationen, wie dies aus dem Zustand des Prozedur-In-Progress-Bits bestimmt ist.
    • 3.2.4 Falls eine konditionale Steuerfluß-Instruktion in dem ersten Satz sich zu "nicht genommen" ("not taken") auflöst:
    • 3.2.4.1 Entleere den TBUF von Instruktions-Sätzen von dem Ziel-Instruktions-Folgefluß.
    • 3.2.4.2 Falls eine zweite, konditionale Verzweigungs-Instruktion nicht I-decodiert worden ist, fahre mit MBUF oder EBUF fort, wie dies für den Zustand des Prozedur-In-Progress-Bits bestimmt ist, unter Vorababrufen von Operationen.
    • 3.2.4.3 Falls eine zweite, konditionale Verzweigungs-Instruktion I-decodiert worden ist, beginne eine Verarbeitung dieser Instruktion (gehe zu Schritt 3.4.1).
    • 4 Unterbrechungen, Ausnahmen und Trap-Instruktionen.
    • 4.1 Traps umfassen allegemein:
    • 4.1.1 Hardware-Unterbrechungen
    • 4.1.1.1 Asynchron (extern) Auftreten der Ereignisse, intern oder extern.
    • 4.1.1.2 Können zu irgendeinem Zeitpunkt auftreten, und arbeite weiter.
    • 4.1.1.3 Behandelt in einer Prioritätsreihenfolge zwischen atomischen (gewöhnlichen) Instruktionen, und können prozedurale Instruktionen suspendieren.
    • 4.1.1.4 Die Start-Adresse einer Unterbrechungs-Handhabungseinrichtung wird als das Vektorzahl-Offset in eine vordefinierte Tabelle von Trap-Handhabungseinrichtungs-Eintrittspunkten bestimmt.
    • 4.1.2 Software-Trap-Instruktionen
    • 4.1.2.1 Synchron (intern) auftretende Instruktionen.
    • 4.1.2.2 Eine Software-Instruktion, die als eine Ausnahme ausführt.
    • 4.1.2.3 Die Start-Adresse der Trap-Handhabungseinrichtung wird aus dem Trap-Zahl-Offset kombiniert mit einem Basis-Adressen-Wert, gespeichert in dem TBR- oder FTB-Register, bestimmt.
    • 4.1.3 Ausnahmen
    • 4.1.3.1 Ereignisse, die synchron zu einer Instruktion auftreten.
    • 4.1.3.2 Gehandhabt zu dem Zeitpunkt, zu dem die Instruktion ausgeführt wird.
    • 4.1.3.3 Aufgrund von Konsequenzen der Ausnahme werden die ausgenommene Instruktion und alle darauffolgenden, ausgeführten Instruktionen aufgehoben bzw. aufgegeben.
    • 4.1.3.4 Die Start-Adresse der Ausnahme-Handhabungseinrichtung wird aus dem Trap-Zahl-Offset in eine vordefinierte Tabelle für einen Trap-Handhabungseinrichtungs-Eintrittspunkt bestimmt.
    • 4.2 Trap-Instruktions-Flußfolge-Operationen treten Inline mit der dann momentan ausführenden Instruktions-Flußfolge auf.
    • 4.3 Traps können sich verschachteln, vorausgesetzt, das Trap-Handhabungs-Programm sichert die xPC-Adresse vor einer nächsten, zugelassenen Trap – ein Fehler dabei, dies so zu tun, wird den Zustand der Maschine nachteilig beeinflussen, falls eine Trap vor einem Abschluß der momentanen Trap-Operation auftritt.
    • 5 Trap-Instruktions-Flußfolge-Verarbeitung: xPC.
    • 5.1 Wenn eine Trap vorhanden ist:
    • 5.1.1 Falls eine asynchrone Unterbrechung, wird die Ausführung der momentanen Ausführungs-Instruktionen) aufgehoben.
    • 5.1.2 Falls eine asynchrone Ausnahme, wird die Trap unter Ausführung der ausgenommenen Instruktion verarbeitet.
    • 5.2 Wenn eine Trap verarbeitet wird:
    • 5.2.1 Unterbrechungen werden gesperrt.
    • 5.2.2 Die momentane IF_PC Adresse wird in dem xPC Trap-Zustands-Rückführ-Adressen-Register gespeichert.
    • 5.2.3 Die IFIFO und MBUF Vorababruf-Puffer an und folgend der IF_PC Adresse werden entleert.
    • 5.2.4 Ausgeführte Instruktionen an und folgend der Adresse IF_PC und die Ergebnisse solcher Instruktionen werden aus der IEU gelöscht.
    • 5.2.5 Der MBUF PFnPC wird mit der Adresse des Trap-Handhabungseinrichtungs-Programms geladen.
    • 5.2.5.1 Die Quelle einer Trap-Adresse entweder des TBF- oder FTB-Registers, in Abhängigkeit von dem Typ einer Trap, wie sie durch die Trap-Zahl bestimmt ist, die in dem Satz spezieller Register vorgesehen sind.
    • 5.2.6 Instruktionen werden vorab abgerufen und in den IFIFO zur Ausführung in einer normalen Art und Weise fallengelassen.
    • 5.2.7 Die Instruktionen des Trap-Programms werden dann ausgeführt.
    • 5.2.7.1 Das Trap-Handhabungs-Programm kann für die xPC Adresse dienen, die an einer vordefinierten Stelle gesichert werden soll, und Unterbrechungen werden erneut freigegeben; das xPC Register wird über eine spezielle Register-Bewegungs-Instruktion und den speziellen Register-Adressen- und Daten-Bus gelesen/geschrieben.
    • 5.2.8 Der Trap-Zustand muß durch die Ausführung einer Rückführung von einer Trap-Instruktion angeregt werden.
    • 5.2.8.1 Falls zuvor gesichert, muß die xPC Adresse erneut von deren vordefinierter Stelle vor einem Ausführen der Rückführung von einer Trap-Instruktion gespeichert werden.
    • 5.3 Wenn eine Rückführung von der Trap ausgeführt wird:
    • 5.3.1 Unterbrechungen werden freigegeben.
    • 5.3.2 Die xPC Adresse wird zu dem momentanen Instruktions-Folge-Register MBUF oder EBUF PFnPC zurückgeführt, wie dies aus dem Zustand des Prozedur-In-Progress-Bits bestimmt ist, und ein Vorababrufen führt von dieser Adresse fort.
    • 5.3.3 Die xPC Adresse wird in dem IF_PC Register über das neue Flußfolge-Register erneut gespeichert.
  • E) Unterbrechung- und Ausnahme-Handhabung:
  • 1) Übersicht:
  • Unterbrechungen und Ausnahmen werden, solange wie sie freigegeben sind, ungeachtet davon, ob der Prozessor von dem Haupt-Instruktions-Fluß oder einem prozeduralen Instruktionsfluß ausführt, verarbeitet werden. Unterbrechungen und Ausnahmen werden in einer Prioritätsreihenfolge bearbeitet und dauern an, bis sie beseitigt sind. Die Start-Adresse eines Trap-Hantierers wird als ein Vektor-Nummern-Offset in eine vordefinierte Tabelle von Trap-Hantierer-Adressen bestimmt, wie dies nachfolgend beschrieben ist.
  • Unterbrechungen und Ausnahmen sind von zwei Grundtypen in der vorliegenden Ausführungsform, solche, die synchron mit bestimmten Instruktionen in der Instruktions-Flußfolge auftreten, und solche, die asynchron mit bestimmten Instruktionen in der Instruktions-Flußfolge auftreten. Die Ausdrücke Unterbrechung, Ausnahme, Trap und Fehler werden gegeneinander austauschbar hier verwendet. Asynchrone Unterbrechungen werden durch Hardware, entweder auf einem Chip oder entfernt von einem Chip, erzeugt, die nicht synchron mit der Instruktions-Flußfolge arbeiten. Zum Beispiel sind Unterbrechungen, die durch einen Zeitgeber/Zähler auf einem Chip erzeugt sind, asynchron, da sie Hardware-Unterbrechungen und nicht maskierbare Unterbrechungen (NMI) sind, die von außerhalb des Chips geliefert werden. Wenn eine asynchrone Unterbrechung auftritt, wird der Prozessor-Kontext eingefroren, alle Traps werden gesperrt, bestimmte Prozessor-Status-Informationen werden gespeichert und die Prozessor-Vektoren zu einem Unterbrechungs-Hantierer entsprechend zu der bestimmten Unterbrechung werden empfangen. Nachdem der Unterbrechungs-Hantierer seine Verarbeitung abgeschlossen hat, führt eine Programmausführung mit der Instruktion fort, die der letzten, abgeschlossenen Instruktion in der Flußfolge folgt, die ausgeführt wurde, als die Unterbrechung auftrat.
  • Synchrone Ausnahmen sind solche, die synchron mit Instruktionen in der Instruktions-Flußfolge auftreten. Diese Ausnahmen treten in Relation zu bestimmten Instruktionen auf und werden gehalten, bis die relevante Instruktion ausgeführt werden soll. In den bevor zugten Ausführungsformen entstehen synchrone Ausnahmen während eines Vorababrufens, während einer Instruktionscodierung oder während einer Instruktionsausführung. Ausnahmen eines Vorababrufens umfassen, zum Beispiel, ein TLB-Fehlen oder andere VMU-Ausnahmen. Decodier-Ausnahmen entstehen zum Beispiel dann, wenn die Instruktion, die decodiert werden soll, eine illegale Instruktion ist oder nicht das momentane Privileg-Niveau des Prozessors anpaßt. Ausführungs-Ausnahmen entstehen aufgrund von arithmetischen Fehlern, zum Beispiel wie beim Dividieren durch Null. Immer wenn diese Ausnahmen auftreten, hält die bevorzugte Ausführungsform sie in Übereinstimmung mit der bestimmten Instruktion aufrecht, die die Ausnahme verursachte, und zwar bis zu der Zeit, zu der diese Instruktion abgelegt werden soll. Zu diesem Zeitpunkt werden alle früheren, abgeschlossenen Instruktionen abgelegt, irgendwelche versuchsweisen Ergebnisse von der Instruktion, die durch die Ausnahme verursacht sind, werden entleert, wie die versuchsweisen Ergebnisse von irgendwelchen folgenden, versuchsweise ausgeführten Instruktionen. Eine Steuerung wird dann zu einem Ausnahme-Hantierer entsprechend der Ausnahme zu der höchsten Priorität übertragen, die für diese Instruktion auftratt.
  • Software-Trap-Instruktionen werden an der IDecodierstufe durch CF_DET 274 (2) erfaßt und werden ähnlich zu beiden, nicht konditionalen Aufruf-Instruktionen und anderen, synchronen Traps gehandhabt. Das bedeutet, daß eine Ziel-Adresse berechnet wird und ein Vorababrufen zu der dann momentan vorab abgerufenen Warteschlange (EBUF oder MBUF) fortführt. Zur selben Zeit wird die Ausnahme auch entsprechend zu der Instruktion angeführt und gehandhabt, wenn die Instruktion abgelegt werden soll. Alle anderen Typen von synchronen Ausnahmen werden nur angeführt und entsprechend zu der bestimmten Instruktion akkumuliert, die sie verursacht hat, und werden zu der Ausführungszeit gehandhabt.
  • 2) Asynchrone Unterbrechungen:
  • Asynchrone Unterbrechungen werden zu der PC-Logik-Einheit 270 über Unterbrechungsleitungen 292 signalisiert, Wie in 3 dargestellt ist, sind diese Leitungen zu der Unterbrechungs-Logik-Einheit 363 in der PC-Logik-Einheit 270 vorgesehen und weisen eine NMI-Leitung, eine IRQ-Leitung und einen Satz von Unterbrechungs-Niveau-Leitungen (LVL) auf. Die NMI-Leitung signalisiert eine nicht maskierbare Unterbrechung und leitet von einer externen Quelle ab. Es ist die Unterbrechungs-Ausnahme mit der höchsten Priorität für ein Hardware-Reset. Die IRQ-Leitung leitet auch von einer externen Quelle ab und zeigt an, wenn die externe Vorrichtung eine Hardware-Unterbrechung anfordert. Die bevorzugten Ausführungsformen ermöglichen bis zu 32 durch den Benutzer definierte, extern zugeführte Hardware-Unterbrechungen, und die bestimmte, externe Vorrichtung, die die Unterbrechung anfordert, liefert die Zahl der Unterbrechungen (0–31) auf den Unterbrechungs-Niveau-Leitungen (LVL). Die Speicher-Fehler-Leitung wird durch MCU 110 aktiviert, um verschiedene Arten von Speicherfehlern zu signalisieren. Andere, asynchrone Unterbrechungsleitungen (nicht dargestellt) sind auch zu der Unterbrechungs-Logik-Einheit 363 vorgesehen, einschließlich Leitungen zum Anfordern einer Zeitgeber/Zähler-Unterbrechung, einer Speicher-I/O-Fehler-Unterbrechung, einer Maschinen-Prüf-Unterbrechung und einer Funktions-Monitor-Unterbrechung. Jede der asynchronen Unterbrechungen, ebenso wie die synchronen Ausnahmen, die nachfolgend beschrieben sind, besitzen eine entsprechende, vorbestimmte Trap-Zahl, die dazu zugeordnet ist, wobei 32 dieser Trap-Zahlen zu den 32 verfügbaren Hardware-Unterbrechungs-Niveaus zugeordnet werden. Eine Tabelle dieser Trap-Zahlen wird in der Unterbrechungs-Logik-Einheit 363 aufrechterhalten. Je höher die Trap-Zahl allgemein ist, desto höher ist die Priorität der Trap.
  • Wenn eine der asynchronen Unterbrechungen zu der Unterbrechungs-Logik-Einheit 363 signalisiert wird, schickt die Unterbrechungs-Steuereinheit 363 eine Unterbrechungs-Anforderung zu der IEU 104 über INT REQ/ACK-Leitungen 340 aus. Die Unterbrechungs-Steuereinheit 363 schickt auch ein anhängiges Vorababruf-Signal zu der PC-Steuereinheit 362 über Leitungen 343, was bewirkt, daß die PC-Steuereinheit 262 ein Vorababrufen von Instruktionen stoppt. Die IEU 104 hebt entweder alle dann ausführenden Instruktionen auf und entleert alle versuchsweisen Ergebnisse, oder sie kann ermöglichen, daß einige oder alle Instruktionen abgeschlossen werden. In den bevorzugten Ausführungsformen werden irgendwelche dann ausführenden Instruktionen aufgegeben, um dadurch das schnellste Ansprechen auf asynchrone Unterbrechungen zu ermöglichen. In jedem Fall wird die DPC in der Ausführungs-PC-Steuereinheit 366 aktualisiert, um der letzten Instruktion zu entsprechen, die abgeschlossen und aufgegeben bzw. abgelegt worden ist, und zwar bevor die IEU 104 die Unterbrechung bestätigt. Alle anderen, vorab abgerufenen Instruktionen in dem MBUF, dem EBUF, dem TBUF und dem IFIFO 264 werden auch aufgehoben.
  • Nur dann, wenn die IEU 104 bereit ist, die Instruktionen von einem Unterbrechungs-Hantierer zu empfangen, schickt sie ein Unterbrechungs-Bestätigungs-Signal auf den INT REQ/ACK-Leitungen 340 zurück zu der Unterbrechungs-Steuereinheit 363. Die Unterbrechungs-Steuereinheit 363 versendet dann zu dem geeigneten Trap-Hantierer so, wie dies nachfolgend beschrieben ist.
  • 3) Synchrone Ausnahmen:
  • Für synchrone Ausnahmen behält die Unterbrechungs-Steuereinheit 363 einen Satz von vier internen Ausnahme-Bits (nicht dargestellt) für jeden Instruktions-Satz bei, und zwar ein Bit entsprechend jeder Instruktion in dem Satz. Die Unterbrechungs-Steuereinheit 363 behält auch eine Indikation der bestimmten Trap-Zahlen bei, falls irgendwelche für jede Instruktion erfaßt sind.
  • Falls dem VMU-Signal eine TLB- oder eine andere VMU-Ausnahme fehlt, während ein bestimmter Instruktions-Satz vorab abgerufen wird, wird diese Information zu der PC-Logik-Einheit 270, und insbesondere zu der Unterbrechungs-Steuereinheit 363, über die VMU-Steuer-Leitungen 332 und 334 übertragen. Wenn die Unterbrechungs-Steuereinheit 363 ein solches Signal empfängt, signalisiert sie der PC-Steuereinheit 362 über die Leitung 343, weitere Vorababrufungen anzuhängen. Zu derselben Zeit stellt die Unterbrechungs-Steuereinheit 363 das VM_Miss- oder VM_Excp-Bit, wie dies geeignet ist, zugeordnet dem Vorababruf-Puffer, zu dem der Instruktions-Satz hin bestimmt war, ein. Die Unterbrechungs-Steuereinheit 363 stellt dann alle vier internen Ausnahme-Indikator-Bits entsprechend zu diesem Instruktions-Satz ein, da keine der Instruktionen in dem Satz gültig sind, und speichert die Trap-Zahl für die bestimmte Ausnahme, die entsprechend zu jeder der vier Instruktionen in dem Fehler-Instruktions-Satz erhalten ist. Die Verschiebung und Ausführung von Instruktionen vor dem Fehler-Instruktions-Satz fährt dann wie gewöhnlich fort, bis der Fehlersatz das niedrigste Niveau in dem IFIFO 264 erreicht.
  • Ähnlich wird, falls andere synchrone Ausnahmen während der Verschiebung einer Instruktion über die Vorababruf-Puffer 260 erfaßt werden, die IDecodiereinheit 262 oder der IFIFO 264 diese Information auch zu Unterbrechungs-Steuereinheit 363 übertragen, die das interne Ausnahme-Indikator-Bit entsprechend der Instruktion, die die Ausnahme erzeugt, einstellt und die Trap-Zahl entsprechend zu der Ausnahme speichert. Wie bei den Vorababruf-Synchron-Ausnahmen fährt die Verschiebung und Ausführung der Instruktion vor der Fehler-Instruktion dann wie gewöhnlich fort, bis der Fehlersatz das niedrigste Niveau in dem IFIFO 264 erreicht.
  • In den bevorzugten Ausführungsformen ist der einzige Typ einer Ausnahme, die während der Verschiebung einer Instruktion durch die Vorababruf-Puffer 260, die IDecodiereinheit 262 oder den IFIFO 264 erfaßt wird, eine Software-Trap-Instruktion. Software-Trap-Instruktionen werden an der IDecodierstufe durch eine CF_DET-Einheit 274 erfaßt. Während in einigen Ausführungsformen andere Formen von synchronen Ausnahmen in der IDecodiereinheit 262 erfaßt werden können, ist es bevorzugt, daß die Erfassung irgendwelcher anderer, synchroner Ausnahmen wartet, bis die Instruktion die Ausführungs-Einheit 104 erreicht. Dies vermeidet die Möglichkeit, daß bestimmte Ausnahmen, wie beispielsweise solche, die von der Handhabung einer privilegierten Instruktion entstehen, auf der Basis eines Prozessorzustands signalisiert werden könnte, der sich vor der effektiven Ausführung in Reihenfolge der Instruktion ändern kann. Ausnahmen, die nicht von dem Prozessorzustand abhängen, wie beispielsweise eine illegale Instruktion, könnten in der IDecodierstufe erfaßt werden, allerdings ist eine Hardware minimiert, falls dieselbe Logik alle Vorabausführungs-Synchron-Ausnahmen erfaßt (im Gegensatz zu VMU-Ausnahmen). Auch ist dabei keine Zeitstrafe vorhanden, die durch ein Warten auferlegt wird, bis Instruktionen die Ausführungs-Einheit 104 erreichen, da die Handhabung solcher Ausnahmen selten zeitkritisch ist.
  • Wie erwähnt ist, werden Software-Trap-Instruktionen an der IDecodierstufe durch die CF_Det-Einheit 274 erfaßt. Das interne Ausnahme-Indikator-Bit entsprechend zu dieser Instruktion in der Unterbrechungs-Logik-Einheit 363 wird eingestellt und die Software-Trap-Zahl, die irgendeine Zahl von 0 bis 127 sein kann und die in einem Zwischemodus-Operanden-Feld der Software-Trap-Instruktion spezifiziert ist, wird entsprechend zu der Trap-Instruktion gespeichert. Im Gegensatz zu Vorababruf-Synchron-Ausnahmen signalisiert allerdings, da Software-Traps als sowohl eine Steuerfluß-Instruktion als auch eine synchrone Ausnahme behandelt werden, die Unterbrechungs-Steuereinheit 363 nicht der PC-Steuereinheit 362, Vorababrufungen anzuhängen, wenn eine Software-Trap-Instruktion erfaßt ist. Im Gegensatz dazu ruft zu dem Zeitpunkt, zu dem die Instruktion durch den IFIFO 264 verschoben wird, die IFU 102 den Trap-Hantierer in den MBUF-Instruktions-Flußfolge-Puffer vorab ab.
  • Wenn ein Instruktions-Satz das niedrigste Niveau des IFIFO 264 erreicht, überträgt die Unterbrechungs-Logik-Einheit 363 die Ausnahme-Indikator Bits für diesen Instruktions-Satz als einen 4-Bit-Vektor zu der IEU 104 über die SYNCH_INT_INFO-Leitungen 341, um anzuzeigen, welche, falls welche vorhanden sind, der Instruktionen in dem Instruktions-Satz bereits dahingehend bestimmt worden sind, die Quelle einer synchronen Ausnahme zu sein. Die IEU 104 antwortet nicht unmittelbar, sondern läßt zu, daß alle Instruktionen in dem Instruktions-Satz in dem normalen Ablauf ablaufmäßig geplant werden können. Weitere Ausnahmen, wie beispielsweise arithmetische Integer-Ausnahmen, können während einer Ausnahme erzeugt werden. Ausnahmen, die von dem momentanen Zustand der Maschine abhängen, wie beispielsweise aufgrund der Ausführung einer privilegierten Instruktion, werden auch zu diesem Zeitpunkt erfaßt, und um sicherzustellen, daß der Zustand der Maschine aktuell zu allen vorherigen Instruktionen in der Instruktions-Flußfolge ist, wobei alle Instruktionen, die eine Möglichkeit haben, die PSR zu beeinflussen (wie beispielsweise ein spezielles Bewegen und Rückführen von Trap-Instruktionen), dazu gebracht werden, in Reihenfolge ausgeführt zu werden. Nur dann, wenn eine Instruktion, die die Quelle einer synchronen Ausnahme irgendeiner Sorte ist, abgelegt werden soll, wird das Auftreten der Ausnahme zu der Unterbrechungs-Logik-Einheit 363 signalisiert.
  • Die IEU 104 legt alle Instruktionen ab, die versuchsweise ausgeführt worden sind und die in der Instruktions-Flußfolge vor der ersten Instruktion auftreten, die eine synchrone Ausnahme besitzt, und entleert die versuchsweisen Ergebnisse von irgendwelchen versuchsweise ausgeführten Instruktionen, die in der Instruktions-Flußfolge darauffolgend auftreten. Die bestimmte Instruktion, die die Ausnahme verursachte, wird auch entleert, da die Instruktion typischerweise erneut unter Rückkehr von der Trap ausgeführt werden wird. Der IF_PC in der Ausführungs-PC-Steuereinheit 366 wird dann aktualisiert, um der letzten Instruktion, die tatsächlich abgelegt ist, zu entsprechen, und bevor irgendeine Ausnahme der Unterbrechungs-Logik-Einheit 363 signalisiert wird.
  • Wenn die Instruktion, die die Quelle einer Ausnahme ist, abgelegt ist, kehrt die IEU 104 zu der Unterbrechungs-Logik-Einheit 363, und zwar über die SYNCH_INT_INFO-Leitungen 341, sowohl einen neuen 4-Bit-Vektor, der anzeigt, welche, falls welche vorhanden sind, Instruktionen in dem abgelegten Instruktions-Satz (Register 224) eine synchrone Ausnahme hatte, als auch Informationen, die die Quelle der ersten Ausnahme in dem Instruktions-Satz anzeigen, zurück. Die Informationen in dem 4-Bit-Ausnahm-Vektor, zurückgeführt durch die IEU 104, sind eine Akkumulation der 4-Bit-Ausnahme-Vektoren, die zu der IEU 104 durch die Unterbrechungs-Steuereinheit 363 geliefert sind, ebenso wie Ausnahmen, die in der IEU 104 erzeugt sind. Der Rest der Information, zurückgeführt von der IEU 104 zu der Unterbrechungs-Steuereinheit 363, zusammen mit irgendwelchen Informationen, die bereits in der Unterbrechungs-Logik-Einheit 363 aufgrund von Ausnahmen gespeichert sind, die beim Vorababrufen oder (decodieren erfaßt sind, sind für die Unterbrechungs-Steuereinheit 363 ausreichend, um die Art der synchronen Ausnahme mit höchster Priorität und deren Trap-Zahl zu bestimmen.
  • 4) Hantierer-Versenden- und -Rückführen:
  • Nachdem ein Unterbrechungs-Kenntnis-Signal über Leitungen 340 von der IEU empfangen ist, oder nachdem ein Nicht-Null-Ausnahme-Vektor über Leitungen 341 empfangen ist, wird die momentane DPC temporär als eine Rückführ-Adresse in einem xPC-Register gespeichert, das eines der speziellen Register 412 (4) ist. Das Register über den momentanen Prozessorstatus (PSR) wird auch in einem Register für frühere PSR (PPSR) gespeichert, und das Register für den momentanen Vergleichszustand (CSR) wird in einem Register für einen früheren Vergleichszustand (PCSR) in den speziellen Registern 412 gespeichert.
  • Die Adresse eines Trap-Hantierers wird als eine Trap-Basis-Register-Adresse plus ein Offset berechnet. Die PC-Logik-Einheit 270 unterhält zwei Basis-Register für Traps, wobei beide davon ein Teil der speziellen Register 412 (4) sind und beide davon durch spezielle Bewegungs-Instruktionen, die zuvor ausgeführt sind, initialisiert sind. Für die meisten Traps ist das Basis-Register, das dazu verwendet wird, die Adresse des Hantierers zu berechnen, ein Trap-Basis-Register TBR.
  • Die Unterbrechungs-Steuereinheit 363 bestimmt die Unterbrechung oder Ausnahme mit höchster Priorität, die momentan anhängig ist, und bestimmt, über eine Durchsichtstabelle, die Trap-Zahl, die dazu zugeordnet ist. Dies wird über einen Satz von INT_OFFSET-Leitungen 373 zu der Vorababruf-PC-Steuereinheit 364 als ein Offset zu dem ausgewählten Basis-Register vorgenommen. In vorteilhafter Weise wird die Vektor-Adresse durch nur Verknüpfen der Offset-Bits als Bit niedriger Ordnung zu höherer Ordnung, erhalten von dem TBR-Register, berechnet. Dieses vermeidet irgendein Erfordernis für Verzögerungen eines Addierers. (So, wie es hier verwendet wird, wird das 2' Bit als das Bit i'-ter Ordnung bezeichnet.) Zum Beispiel kann, falls Traps von 0 bis 255 durchnumeriert sind, dargestellt als ein 8-Bit-Wert, die Hantierer-Adresse durch Verknüpfungen der 8-Bit-Trap-Zahl mit dem Ende eines 22-Bit-TBR-Speicherwerts berechnet werden.
  • Zwei Null-Bits niedriger Ordnung können an die Trap-Zahl angehängt werden, um sicherzustellen, daß die Trap-Hantierer-Adresse immer an einer Wortgrenze auftritt. Die verknüpfte Hantierer-Adresse, die so konstruiert ist, wird als eine der Eingaben, 373, zu dem Vorababruf-Selektor PF_PC Sel 390 (4) geliefert und wird als die nächste Adresse ausgewählt, von der an Instruktionen vorab abgerufen werden sollen.
  • Die Vektor-Hantierer-Adressen für Traps, unter Verwendung des TBR-Registers, sind alle nur ein Wort voneinander beabstandet. Demzufolge muß die Instruktion an der Trap-Hantierer-Adresse eine vorausgehende Verzweigungs-Instruktion zu dem längeren Trap-Handhabungs-Programm sein. Bestimmte Traps erfordern allerdings eine sehr sorgfältige Handhabung, um eine Degradation einer Systemfunktion zu verhindern. TLB-Traps müssen zum Beispiel sehr schnell ausgeführt werden. Aus diesem Grund umfassen die bevorzugten Ausführungsformen einen schnellen Trap-Mechanismus, der so ausgelegt ist, um das Aufrufen von kleinen Trap-Hantierern ohne die Kosten dieser vorausgehenden Verzweigung zu ermöglichen. Zusätzlich können schnelle Trap-Hantierer unabhängig von einem Speicher angeordnet werden, und zwar in einem auf dem Chip befindlichen ROM zum Beispiel, um Speichersystem-Nachteile, die RAM-Stellen zugeordnet sind, zu eliminieren.
  • In den bevorzugten Ausführungsformen sind nur Traps, die in schnellen Traps resultieren, die VMU-Ausnahmen, die vorstehend erwähnt sind. Schnelle Traps werden separat von anderen Traps numeriert, und besitzen einen Bereich von 0 bis 7. Allerdings haben sie dieselbe Priorität wie MMU-Ausnahmen. Wenn die Unterbrechungs-Steuereinheit 363 eine schnelle Trap als die Trap höchster Priorität erkennt, die dann anhängig ist, bewirkt sie, daß ein Basis-Register für schnelle Traps (FTB) von den speziellen Registern 412 ausgewählt wird und auf den Leitungen 416 zugeführt wird, um mit dem Trap-Offset kombiniert zu werden. Die sich ergebende Vektor-Adresse, die zu dem Vorababruf-Selektor PF_PC Sel 390, über Leitungen 373', geliefert ist, ist dann eine Verknüpfung der 22-Bits hoher Ordnung von dem FTB-Register, gefolgt durch drei Bits, die die Zahl für schnelle Traps darstellt, gefolgt durch sieben Bits von 0. Demzufolge ist jede schnelle Trap-Adresse von 128 Bytes, oder 32 Worten, beabstandet. Bei einem Aufruf verzweigt der Prozessor zu dem Start-Wort und kann Programme innerhalb des Blocks oder einer Verzweigung außerhalb davon ausführen. Eine Ausführung von kleinem Programm, wie beispielsweise von Standard TBL-Handhabungs-Programmen, die in 32 In struktionen oder weniger ausgeführt werden können, ist schneller als gewöhnliche Traps, da die vorausgehende Verzweigung zu dem tatsächlichen Ausnahme-Handhabungs-Programm vermieden wird.
  • Es sollte angemerkt werden, daß, obwohl alle Instruktionen dieselbe Länge von 4 Bytes haben (d. h. Belegen von vier Adressen-Stellen), und zwar in den bevorzugten Ausführungsformen, der schnelle Trap-Mechanismus auch in Mikroprozessoren nützlich ist, deren Instruktionen in der Länge variabel sind. In diesem Fall wird ersichtlich werden, daß die schnellen Trap-Vektor-Adressen durch ausreichenden Raum separiert sind, um mindestens zwei der kürzesten Instruktionen, die an dem Mikroprozessor verfügbar sind, und vorzugsweise ungefähr 32 durchschnittlich dimensionierte Instruktionen, aufzunehmen. Mit Sicherheit sollten, wenn der Mikroprozessor eine Rückführung von einer Trap-Instruktion umfaßt, die Vektor-Adressen durch mindestens genug Raum separiert sein, um zu ermöglichen, daß einer Instruktion mindestens eine andere Instruktion in dem Hantierer vorausgeht.
  • Auch gibt bei einer Versendung zu einem Trap-Hantierer der Prozessor sowohl einen Kernel-Mode als auch einen unterbrochenen Zustand ein. Gleichzeitig wird eine Kopie des Vergleichs-Zustands-Registers (CSR) in dem Register für den vorherigen, geführten Zustand (PCSR) plaziert und eine Kopie des PSR wird in dem Register für die frühere PSR (PPSR) gespeichert. Die Kernel-Moden und die Moden über die unterbrochenen Zustände werden durch Bits in dem Prozessor-Status-Register (PSR) dargestellt. Immer wenn das Bit über den unterbrochenen Zustand in das momentane PSR eingegeben wird, werden die Shadow-Register oder Trap-Register RT[24] bis RT[31] sichtbar, wie dies vorstehend beschrieben und in 7b dargestellt ist. Der Unterbrechungs-Hantierer kann einen Kernel-Modus nur durch Schreiben eines neuen Modus in das PSR ausschalten, allerdings ist die einzige Art und Weise, um den unterbrochenen Zustand zu belassen, diejenige, durch Ausführen einer Rückführung von einer Trap-(RTT)-Instruktion.
  • Wenn die IEU 104 eine RTT-Instruktion ausführt, wird PCSR zu dem CSR-Register hin gespeichert und das PPSR-Register wird zu dem PSR-Register zurückgespeichert, um dadurch automatisch das Bit über den Unterbrechungs-Zustand in dem PSR-Register zu beseitigen. Der PF_PC SEL-Selektor 390 wählt auch ein spezielles Register xPC in dem speziellen Register-Satz 412 als die nächste Adresse aus, von der vorab abgerufen ist. xPC wird zu entweder dem MBUF PFnPC oder dem EBUF PFnPC umgespeichert, wie dies geeignet ist, und zwar über einen Inkrementator 394 und einen Bus 396. Die Entscheidung, ob xPC in den EBUF oder den MBU F PFnPC umzuspeichern ist, wird entsprechend dem Bit "Prozedur In-Progress" des PSR vorgenommen, wenn einmal umgespeichert wird.
  • Es sollte angemerkt werden, daß der Prozessor nicht dasselbe, spezielle Register xPC verwendet, um die Rückführ-Adresse für beide Traps und prozeduralen Instruktionen zu speichern. Dir Rückführ-Adresse für eine Trap wird in dem speziellen Register xPC gespeichert, wie dies erwähnt ist, allerdings wird die Adresse, um zu einer Stelle nach einer prozeduralen Instruktion zurückzukehren, in einem unterschiedlichen, speziellen Register, uPC, gespeichert. Demzufolge verbleibt der unterbrochene Zustand gerade dann verfügbar, während der Prozessor eine Emulations-Flußfolge ausführt, die durch eine prozedurale Instruktion anforderungsmäßig herangezogen ist. Andererseits sollten Ausnahme-Handhabungs-Programme nicht irgendwelche prozeduralen Instruktionen umfassen, da dabei kein spezielles Register vorhanden ist, um eine Adresse für eine Rückführung zu dem Ausnahme-Hantierer zu speichern, nachdem die Emulations-Flußfolge abgeschlossen ist.
  • 5) Verschachtelung:
  • Obwohl bestimmte Prozessor-Status-Informationen automatisch beim Versenden zu einem Trap-Hantierer, insbesondere einem CSR, einem PSR, dem Rückführ-PC und in einem bestimmten Sinne der "A" Register-Satz ra[24] bis ra[31], gesichert wird, sind andere Kontext-Informationen nicht geschützt. Zum Beispiel werden die Inhalte eines Fließkomma-Status-Registers (FSR) nicht automatisch gesichert. Wenn ein Trap-Hantierer beabsichtigt, diese Register zu ändern, muß er seine eigene Sicherung durchführen.
  • Aufgrund der begrenzten Sicherung bzw. des Backups, die automatisch bei einem Versenden zu einem Trap-Hantierer durchgeführt wird, wird eine Verschachtelung von Traps nicht automatisch ermöglicht. Ein Trap-Hantierer sollte irgendwelche erwünschten Register aktualisieren, irgendeinen Unterbrechungszustand beseitigen, irgendwelche Informationen, die zur Handhabung der Trap für die System-Register notwendig sind, lesen und sie geeignet verarbeiten. Unterbrechungen werden automatisch unter Versenden zu dem Trap-Hantierer freigegeben. Nach einer Verarbeitung kann der Hantierer dann die gesicherten Register zurücksetzen und Unterbrechungen erneut freigeben und die RTT-Instruktion ausführen, um zu der Unterbrechung zurückzukehren.
  • Wenn verschachtelte Traps zugelassen werden sollen, sollte der Trap-Hantierer in einen ersten und einen zweiten Bereich unterteilt werden. In dem ersten Bereich sollte, während Unterbrechungen gesperrt werden, der xPC kopiert werden, und zwar unter Verwendung einer speziellen Register-Bewegungs-Instruktion, und auf den Stapel geschoben werden, der durch den Trap-Hantierer aufrechterhalten wird. Die Adresse des Beginns des zweiten Bereichs des Trap-Hantierers sollte dann zur Verwendung der speziellen Register-Bewegungs-Instruktion in den xPC verschoben werden und eine Rückführung von der Trap-Instruktion (RTT) sollte ausgeführt werden. Die RTT beseitigt den unterbrochenen Zustand (über die Zurücksetzung von PPSR in PSR) und überträgt eine Steuerung zu der Adresse in dem xPC, der nun die Adresse des zweiten Bereichs des Hantierers enthält. Der zweite Bereich kann Unterbrechungen an diesem Punkt freigeben und fortfahren die Ausnahme in dem unterbrechbaren Modus zu verarbeiten. Es sollte angemerkt werden, daß die Shadow-Register RT[24] bis RT[31] nur in dem ersten Bereich dieses Hantierers sichtbar sind und nicht in dem zweiten Bereich. Demzufolge sollte in dem zweiten Bereich der Hantierer jeder der "A" Register-Werte bewahren, wo diese Register-Werte dahingehend wahrscheinlich sind, daß sie durch den Hantierer geändert werden. Wenn die Trap-Handhabungs-Prozedur abgeschlossen ist, sollte sie alle gesicherten Register erneut speichern, in Original-xPC und dem Trap-Hantierer-Stapel herausnehmen und wieder zurück in das xPC-Spezial-Register unter Verwendung einer Spezial-Register-Bewegungs-Instruktion bewegen, und eine andere RTT ausführen. Dies führt eine Steuerung zu der geeigneten Instruktion in der Haupt- oder Emulations-Instruktions-Flußfolge zurück.
  • 6) Liste von Traps:
  • Die folgende Tabelle 1 gibt die Trap-Zahlen, Prioritäten und Handhabungs-Moden von Traps an, die in den bevorzugten Ausführungsformen erkannt werden:
  • Figure 00550001
  • III. Instruktions-Ausführungs-Einheit:
  • Die kombinierten Steuer- und Datenpfad-Bereiche der IEU 104 sind in 5 dargestellt. Der primäre Datenpfad beginnt mit dem Instruktions-Operanden-Daten-Bus 124 von der IFU 102. Als ein Daten-Bus werden Zwischen-Operanden zu einer Operanden-Ausrichtungs-Einheit 470 geliefert und weiter zu einer Register-Datei (REG ARRAY) 472 geführt. Register-Daten werden von der Register-Datei 472 über eine Bypass-Einheit 474, über einen Register-Datei-Ausgangs-Bus 476 zu einem parallelen Feld bzw. Array aus funktionalen Berechnungselementen (FU0–n) 4780–n , über einen Verteilungsbus 480, geführt. Daten, die durch die funktionalen Einheiten 4780–n erzeugt sind, werden zurück zu der Bypass-Einheit 474 oder dem Register-Feld 472, oder beiden, über einen Ausgangs-Bus 482 geliefert.
  • Eine Lade/Speicher-Einheit 484 vervollständigt den Datenpfad-Bereich der IEU 104 Die Lade/Speicher-Einheit 484 ist zum Handhaben der Übertragung von Daten zwischen der IEU 104 und der CCU 106 verantwortlich. Genauer gesagt, werden geladene Daten, die von dem Daten-Cache 134 der CCU 106 erhalten sind, durch die Lade/Speicher-Einheit 484 zu einem Eingang des Register-Felds 472 über einen Lade-Daten-Bus 486 übertragen. Daten, die zu dem Daten-Cache 134 der CCU 106 gespeichert werden sollen, werden von dem Verteilungs-Bus 480 der funktionalen Einheit empfangen.
  • Der Steuerpfad-Bereich der IEU 104 ist zum Ausgeben, Managen und Vervollständigen der Verarbeitung von Informationen über den IEU-Datenpfad verantwortlich. In den bevorzugten Ausführungsformen der vorliegenden Erfindung ist der IEU-Steuerpfad zum Managen der gleichzeitigen Ausführung von mehrfachen Instruktionen in der Lage und der IEU-Datenpfad dient für mehrfache, unabhängige Datenübertragungen zwischen im wesentlichen allen Datenpfad-Elementen der IEU 104. Der IEU-Steuerpfad arbeitet in Abhängigkeit von Instruktionen, die über den Instruktions/Operanden-Bus 124 empfangen sind. Genauer gesagt werden Instruktions-Sätze durch die EDecodiereinheit 490 empfangen. In den bevorzugten Ausführungsformen der vorliegenden Erfindung empfängt die EDcodiereinheit 490 beide Instruktions-Sätze, die durch die IFIFO-Master-Register 216, 224 gehalten sind und decodiert sie. Die Ergebnisse des Decodierens aller acht Instruktionen werden auf verschiedene Weise zu einer Übertragungs-Prüfeinrichtungs-(CRY CHKR)-Einheit 492, einer Abhängigkeits-Prüfeinrichtungs-(DEP CHKR)-Einheit 494, einer Register-Umbenennungseinheit-(REG RENAME)-Einheit 496, einer Instruktions-Herausgeber-Einheit (ISSUER) 498 und einer Ablage-Steuereinheit-(RETIRE CTL) 500 zugeführt.
  • Die Trage-Prüfeinrichtungs-Einheit 492 empfängt decodierte Informationen über die acht anhängigen Instruktionen von der EDecodiereinheit 490 über Steuerleitungen 502. Die Funktion der Übertragungs-Prüfeinrichtung 492 dient auch dazu, solche der anhängigen Instruktionen zu identifizieren, die entweder das Übertragungs-Bit des Prozessor-Status-Worts beeinflussen oder von dem Zustand des Übertragungs-Bits abhängig sind. Diese Steuerinformationen werden über Steuerleitungen 504 zu der Instruktions-Herausgeber-Einrichtungs-Einheit 498 zugeführt.
  • Decodierte Informationen, die die Register der Register-Datei 472 identifizieren, werden durch die acht anhängigen Instruktionen verwendet, wie sie direkt zu der Register- Umbenennungs-Einheit 496 über Steuerleitungen 506 zugeführt sind. Diese Informationen werden auch zu der Abhängigkeits-Prüfeinrichtungs-Einheit 494 zugeführt. Die Funktion der Abhängigkeits-Prüfeinrichtungs-Einheit 494 ist diejenige, zu bestimmen, welches der anhängigen Instruktions-Referenz-Register als die Bestimmung für Daten und welche Instruktionen, falls welche vorhanden sind, bei irgendeinem solcher Bestimmungs-Register anhängig sind. Solche Instruktionen, die Register-Abhängigkeiten haben, werden durch Steuersignale identifiziert, die über die Steuerleitungen 508 zu der Register-Umbennenungs-Einheit 496 zugeführt werden.
  • Schließlich liefert die EDecodiereinheit 490 Steuerinformationen, die die bestimmte Art und Funktion jeder der acht anhängigen Instruktionen identifizieren, zu der Instruktions-Ausgabeeinrichtungs-Einheit 498 über Steuerleitungen 510. Die Ausgabeeinrichtungs-Einheit 498 ist zur Bestimmung der Datenpfad-Ressourcen, insbesondere der Verfügbarkeit bestimmter, funktionaler Einheiten, für die Ausführung von anhängigen Instruktionen verantwortlich. Gemäß den bevorzugten Ausführungsformen der Architektur 100 ermöglicht die Instruktions-Ausgabeeinrichtungs-Einheit 498 die Ausführung außerhalb der Reihenfolge irgendwelcher der acht anhängigen Instruktionen, die Gegenstand der Verfügbarkeit von Datenpfad-Ressourcen und Führungs- und Register-Abhängigkeits-Einschränkungen sind. Die Register-Umbenennungs-Einheit 496 versorgt die Instruktions-Ausgabe-Einheit 498 mit einer Bit-Auflistung, und zwar über Steuerleitungen 512 dieser Instruktionen, die in geeigneter Weise nicht eingeschränkt sind, um eine Ausführung zu ermöglichen. Instruktionen, die bereits ausgeführt worden sind (erledigt sind) und solche mit Register- oder Übertragungsabhängigkeiten, werden logisch von der Bit-Auflistung entfernt.
  • In Abhängigkeit von der Verfügbarkeit erforderlicher, funktionaler Einheiten 4780–n kann die Instruktions-Ausgabeeinrichtungs-Einheit 498 die Ausführung von mehrfachen Instruktionen während jedes System-Takt-Zyklus initiieren. Der Status der funktionalen Einheiten 4780–n wird über einen Status-Bus 514 zu der Instruktions-Ausgabeeinrichtungs-Einheit 498 zugeführt. Steuersignale zum Initiieren, und darauffolgendem Handhaben der Ausführung der Instruktionen, werden durch die Instruktions-Ausgabeeinrichtungs-Einheit 498 auf den Steuerleitungen 516 zu der Register-Umbenennungs-Einheit 496 und selektiv zu den funktionalen Einheiten 4780–n zugeführt. In Abhängigkeit davon liefert die Register- Umbenennungs-Einheit 496 Register-Auswahl-Signale auf einem Register-Datei-Zugriffs-Steuer-Bus 518. Die spezifischen Register, die über die Steuersignale freigegeben sind, die auf dem Bus 518 zugeführt sind, werden durch die Auswahl der Instruktion, die ausgeführt werden soll, und durch die Bestimmung durch die Register-Umbenenungs-Einheit 496 der Register, auf die durch die bestimmte Instruktion Bezug genommen ist, bestimmt.
  • Eine Bypass-Steuereinheit (BYPASS CTL) 520 steuert allgemein die Operation der Bypass-Daten-Führungs-Einheit 474 über Steuersignale auf Steuerleitungen 524. Die Bypass-Steuereinheit 520 überwacht den Status jeder der funktionalen Einheiten 4780–n und bestimmt, in Verbindung mit den Register-Referenzen, die von der Register-Umbenennungs-Einheit 496 über Steuerleitungen 422 zugeführt werden, ob Daten von der Register-Datei 472 zu den funktionalen Einheiten 4780–n geführt werden sollen, oder ob Daten durch die funktionalen Einheiten 4780–n unmittelbar über die Bypass-Einheit 474 zu dem Verteilungs-Bus 480 der funktionalen Einheit zur Verwendung bei der Ausführung einer neu herausgegebenen Instruktion, die durch die Instruktions-Herausgabeeinrichtungs-Einheit 498 herausgegeben ist, geführt werden kann. In jedem Fall steuert die Instruktions-Herausgabeeinrichtungs-Einheit 498 direkt die Führung von Daten von dem Verteilungs-Bus 480 zu den funktionalen Einheiten 4780–n durch selektives Freigeben von spezifischen Register-Daten zu jeder der funktionalen Einheiten 4780–n .
  • Die verbleibenden Einheiten des IEU-Steuerpfads umfassen eine Ablage-Steuereinheit 500, eine Steuerfluß-Steuer-(CF CTI)-Einheit 528, eine Erledigt-Steuer-(DONE CTL)-Einheit 536. Die Ablage-Steuereinheit 500 arbeitet so, um die Ausführung von außerhalb der Reihenfolge ausgeführten Instruktionen zu vermeiden oder zu bestätigen. Dort, wo eine Instruktion außerhalb der Reihenfolge ausgeführt worden ist, kann diese Instruktion beschädigt werden oder, wenn einmal alle früheren Instruktionen auch abgelegt sind, abgelegt bzw. aufgegeben werden. Basierend auf einer Identifikation davon, welche des momentanen Satzes von acht anhängigen Instruktionen ausgeführt werden müssen, die auf den Steuerleitungen 532 zugeführt sind, führt die Ablage-Steuereinheit 500 Steuersignale auf den Steuerleitungen 534, gekoppelt mit dem Bus 518, zu, um effektiv die Ergebnis-Daten, die durch das Register-Feld 472 gespeichert sind, als das Ergebnis der früheren Ausführung von einer außerhalb der Reihenfolge ausgeführten Instruktion zu bestätigen.
  • Die Ablage-Steuereinheit 500 führt die PC-Erhöhungs/Größen-Steuersignale auf Steuerleitungen 344 zu der IFU 102, wenn sie jede Instruktion sucht. Da mehrfache Instruktionen außerhalb der Reihenfolge ausgeführt werden können, und deshalb leicht für eine simultane Ablage bereit sind, bestimmt die Ablage-Steuereinheit 500 einen Größenwert basierend auf der Anzahl von Instruktionen, die gleichzeitig abgelegt sind. Schließlich liefert dort, wo alle Instruktionen des IFIFO-Master-Registers 224 ausgeführt und abgelegt worden sind, die Ablage-Steuereinheit 500 das IFIFO-Lese-Steuersignal auf den Steuerleitungen 342 zu der IFU 102, um einen Verschiebevorgang der IFIFO-Einheit 264 zu initiieren, um dadurch die EDecodiereinheit 490 mit zusätzlichen, vier Instruktionen als eine instruktionsanhängige Ausführung zu versorgen.
  • Die Steuerfluß-Steuereinheit 528 führt die etwas spezifischere Funktion eines Ergebnisses des logischen Verzweigungsergebnisses jeder konditionalen Verzweigung-Instruktion durch. Die Steuerfluß-Steuereinheit 528 empfängt eine 8-Bit-Vektor-Identifikation der momentan anhängigen konditionalen Verzweigungs-Instruktionen von der EDecodiereinheit 490 über die Steuerleitungen 510. Ein 8-Bit-Vektor-Instruktions-Erledigt-Steuersignal wird ähnlich über die Steuerleitungen 582 von der Erledigt-Steuereinheit 540 empfangen. Dieses Erledigt-Steuersignal ermöglicht der Steuerfluß-Steuereinheit 528, zu identifizieren, wenn eine konditionale Verzweigungs-Instruktion vorgenommen ist, zumindest zu einem Punkt, der ausreichend ist, um einen konditionalen Steuerfluß-Status zu bestimmen. Das Steuerfluß-Status-Ergebnis für die anhängigen, konditionalen Verzweigungs-Instruktionen wird durch die Steuerfluß-Steuereinheit 528 so gespeichert, wie sie ausgeführt werden. Die Daten, die notwendig sind, um das Ergebnis der konditionalen Steuerfluß-Instruktion zu bestimmen, wird von temporären Status-Registern in dem Register-Feld 472 über die Steuerleitungen 530 erhalten. Wenn jede konditionale Steuerfluß-Instruktion ausgeführt ist, führt die Steuerfluß-Steuereinheit ein neues Steuerfluß-Ergebnis-Signal auf den Steuerleitungen 348 zu der IFU 102 zu. Dieses Steuerfluß-Ergebnis-Signal umfaßt vorzugweise zwei 8 Bit-Vektoren, die festlegen, ob die Status-Ergebnisse, durch eine jeweilige Bit-Position, der acht potentiell anhängigen Steuerfluß-Instruktionen bekannt sind und das entsprechende Status-Ergebnis angibt, was auch durch das Bit-Positions-Ansprechverhalten gegeben ist.
  • Zuletzt wird die Erledigt-Steuereinheit 540 angewiesen, den operationsmäßigen Ausführungszustand jeder der funktionalen Einheiten 4780–n zu überwachen. Wenn jede der funktionalen Einheiten 4780–n einen Abschluß einer Instruktions-Ausführungs-Operation signalisiert, liefert die Erledigt-Steuereinheit 540 ein entsprechendes Erledigt-Steuersignal auf den Steuerleitungen 542, um die Register-Umbenennungs-Einheit 496, die Instruktions-Ausgabeeinrichtungs-Einheit 498, die Ablage-Steuereinheit 500 und die Bypass-Steuereinheit 520 zu warnen bzw. darauf hinzuweisen.
  • Die Parallel-Feld-Anordung der funktionalen Einheiten 4780–n erhöht die Steuerkonsistenz der IEU 104. Die bestimmte Art der individuellen funktionalen Einheiten 4780–n muß durch die Instruktions-Herausgabeeinrichtungs-Einheit 498 bekannt sein, damit Instruktionen geeignet erkannt und für eine Ausführung ablaufmäßig geplant werden. Die funktionalen Einheiten 4780–n sind zum Bestimmen und Ausführen deren spezifischer Steuerfluß-Operationen verantwortlich, die notwendig sind, um deren erforderliche Funktionen durchzuführen. Demzufolge muß, anders als die Instruktions-Ausgabe-Einrichtung 498, keine der IEU-Steuereinheiten eine unabhängige Kenntnis der Steuerfluß-Verarbeitung einer Instruktion haben. Zusammen liefern die Instruktions-Herausgabeeinrichtungs-Einheit 498 und die funktionalen Einheiten 4780–n die notwendige Steuersignal-Führung der Funktionen, die durch die verbleibenden Steuerfluß-Handhabungs-Einheiten 496, 500, 520, 528, 540 durchgeführt werden sollen. Demzufolge beeinflußt eine Veränderung in der bestimmten Steuerfluß-Operation einer funktionalen Einheit 4780–n nicht die Steuer-Operation der IEU 104. Weiterhin erfordern die funktionale Erhöhung einer existierenden, funktionalen Einheit 4780–n und sogar die Hinzufügung einer oder mehrerer neuer funktionaler Einheiten 4780–n , wie beispielsweise ein erweiterter Präzisisons-Fließkomma-Multiplizierer und eine erweiterte Präzisions-Fließkomma-ALU, eine schnellere Fourier-Berechnungs-Funktional-Einheit und eine trigonometrische Berechnungs-Einheit, nur eine geringe Modifikation der Instruktions-Herausgabeeinrichtungs-Einheit 498. Die erforderlichen Modifikationen müssen für die Erkennung der bestimmten Instruktion, basierend auf dem entsprechenden Instruktions-Feld, isoliert durch die EDecodiereinheit 490, eine Korrelation der Instruktion zu der erforderlichen, funktionalen Einheit 4780–n liefern. Eine Steuerung bzw. Kontrolle über die Auswahl eines Register-Datums, eines Führens von Daten, eines Instruktions-Abschlusses und einer Ablage, verbleiben konsistent mit der Handhabung aller anderen Instruktionen, die in Bezug auf alle anderen funktionalen Einheiten 4780–n ausgeführt sind.
  • A) Detail des IEU-Datenpfads:
  • Das zentale Element des IEU-Datenpfads ist die Register-Datei 472. Innerhalb des IEU-Datenpfads dient allerdings die vorliegende Erfindung für eine Anzahl von parallelen Datenpfaden, die allgemein für spezifische Funktionen optimiert sind. Die zwei prinzipiellen Datenpfade sind ganzzahlig und mit Fließkomma. Innerhalb jedes parallelen Datenpfads ist ein Bereich der Register-Datei 472 vorgesehen, um Datenmanipulationen zu unterstützen, die innerhalb des Datenpfads auftreten.
  • 1) Detail der Register-Datei:
  • Die bevorzugte, allgemeine Architektur einer Datenpfad-Register-Datei ist in 6a dargestellt. Die Datenpfad-Register-Datei 550 umfaßt einen temporären Puffer 552, ein Register-Datei-Feld 564, einen Eingabe-Selektor 559 und einen Ausgabe-Selektor 556. Daten, die letztendlich für das Register-Feld 564 bestimmt sind, werden typischerweise zuerst durch den temporären Puffer 552 über einen kombinierten Daten-Eingangs-Bus 558` empfangen. Dies bedeutet, daß alle Daten, die zu der Datenpfad-Register-Datei 550 gerichtet sind, durch den Eingangs-Selektor 559 von einer Anzahl von Eingangs-Bussen 558, vorzugsweise zwei, auf dem Eingangs-Bus 558' im Multiplexverfahren verarbeitet werden. Register-Auswahl- und Freigabe-Steuersignale, die auf dem Steuer-Bus 518 geliefert werden, wählen die Register-Stelle für die empfangenen Daten innerhalb des temporären Puffers 552 aus. Bei der Ablage einer Instruktion, die Daten erzeugt hat, die in dem temporären Puffer gespeichert sind, geben Steuersignale, die wiederum auf dem Steuer-Bus 518 geliefert werden, die Übertragung der Daten von dem temporären Puffer 552 zu einem logisch entsprechenden Register innerhalb des Register-Datei-Felds 564 über den Daten-Bus 560 frei. Allerdings können, vor einer Ablage der Instruktion, Daten, die in den Registern des temporären Puffers 552 gespeichert sind, bei der Ausführung darauffolgender Instruktionen durch Führen von in dem temporären Puffer gespeicherten Daten zu dem Ausgabe-Daten-Selektor 556 über einen Bypass-Bereich des Daten-Busses 560 verwendet werden. Der Selektor 556, gesteuert durch ein Steuersignal, das über den Steuer-Bus 518 geliefert ist, wählt zwischen Daten aus, die von den Registern des temporären Puffers 552 geliefert sind, und von solchen des Register-Datei-Felds 564. Die sich ergebenden Daten werden auf dem Register-Datei-Ausgangs-Bus 564 geliefert. Auch kann dort, wo eine Ausführungs-Instruktion beim Abschluß abgelegt werden wird, d. h. die Instruktion ist in der Reihenfolge ausgeführt worden, der Eingangs-Selektor 559 so ge richtet werden, um die sich ergebenden Daten direkt zu dem Register-Feld 554 über eine Bypass-Verlängerung bzw. -Erweiterung 558'' zu führen.
  • Gemäß den bevorzugten Ausführungsformen der vorliegenden Erfindung läßt jede Datenpfad-Register-Datei 550 zwei simultane Register-Operationen zu, die auftreten. Demzufolge sieht der Eingangs-Bus 558 für zwei Voll-Register-Daten-Werte vor, daß diese in den temporären Puffer 553 eingeschrieben werden. Intern bildet der temporäre Puffer 582 ein Multiplexer-Feld, das die simultane Führung der Eingabedaten zu irgendwelchen zwei Registern innerhalb des temporären Puffers 552 ermöglicht. Ähnlich lassen die internen Multiplexer zu, daß jedes der fünf Register des temporären Puffers 552 ausgewählt werden kann, um Daten auf dem Bus 560 auszugeben. Das Register-Datei-Feld 564 umfaßt in ähnlicher Weise Eingangs- und Ausgangs-Multiplexer, die ermöglichen, daß zwei Register ausgewählt werden, um auf dem Bus 560, oder fünf zu einer Quelle, über einen Bus 562, jeweilige Daten simultan zu empfangen. Schließlich ist der Register-Datei-Ausgabe-Selektor 556 vorzugsweise so ausgeführt, um zu ermöglichen, daß irgendwelche fünf der zehn Register-Daten-Werte, die über die Busse 560, 562 empfangen sind, simultan auf dem Register-Datei-Ausgangs-Bus 564 ausgegeben werden können.
  • Der Register-Satz innerhalb des temporären Puffers ist allgemein in 6b dargestellt. Der Register-Satz 552' besteht aus acht Einzel-Wort-(32 Bit)-Registern IORD, I1RD, ... I7RD. Der Register-Satz 552' kann auch als ein Satz von vier Doppel-Wort-Registern IORD, IORD + 1 (IORD4), I1RD, I1RD + 1 (ISRD), ... I3RD, I3RD + 1 (I7RD) verwendet werden.
  • Gemäß der vorliegenden Erfindung wird, im Gegensatz dazu, Duplikat-Register für jedes der Register innerhalb des Register-Datei-Felds 554 vorzusehen, die Register in dem temporären Puffer-Register-Satz 552 durch die Register-Umbenennungs-Einheit 496 basierend auf der relativen Stelle der jeweiligen Instruktionen innerhalb der zwei IFIFO-Master-Register 216, 224 Bezug genommen. Jede Instruktion, die durch die Architektur 100 ausgeführt ist, kann zur Ausgabe auf bis zu zwei Register, oder ein Doppel-Wort-Register, für die Bestimmung von Daten, die durch die Ausführung der Instruktion erzeugt sind, Bezug nehmen. Typischerweise wird eine Instruktion nur auf ein einzelnes Ausgangs-Register Bezug nehmen. Demzufolge wird eine Instruktion zwei (I2) der acht anhängigen Instruktionen, positionsmäßig so identifiziert, wie dies in 6c dargestellt ist, und die auf ein einzelnes Ausgangs-Register Bezug nimmt, daß Datenbestimmungs- Register I2RD so ausgewählt werden, um Daten aufzunehmen, die durch die Ausführung der Instruktion produziert sind. Dort, wo die Daten, die durch die Instruktion I2 produziert sind, durch eine darauffolgende Instruktion verwendet werden, zum Beispiel I5, werden die Daten, die in dem I2RD Register gespeichert sind, heraus über den Bus 560 übertragen werden und die sich ergebenden Daten werden zurück zu dem temporären Puffer 552 in das Register, das als I5RD identifiziert ist, gespeichert werden. Es ist anzumerken, daß die Instruktion I5 von der Instruktion I2 abhängig ist. Die Instruktion I5 kann nicht ausgeführt werden, bis die Ergebnis-Daten von I2 verfügbar sind. Allerdings kann, wie gesehen werden kann, die Instruktion I5 vor der Ablage der Instruktion I2 durch Erhalten deren erforderlicher Eingangs-Daten von der Datenstelle der Instruktion I2 des temporären Puffers 552' ausgeführt werden.
  • Schließlich werden, wenn eine Instruktion I2 abgelegt wird, die Daten von dem Register I2RD zu der Register-Stelle innerhalb des Register-Datei-Felds 564 eingeschrieben werden, wie dies durch die logische Position der Instruktion an dem Punkt der Ablage bestimmt ist. Das bedeutet, daß die Ablage-Steuereinheit 560 die Adresse der Bestimmungs-Register in dem Register-Datei-Feld von den Register-Referenz-Feld-Daten, die von der EDecodiereinheit 490 auf den Steuerleitungen 510 geliefert werden, bestimmt. Wenn einmal die Instruktionen I0–3 abgelegt worden sind, werden die Werte in die I4RD–I7RD in die IORD–I3RD simultan mit einer Verschiebung der IFIFO-Einheit 264 verschoben.
  • Eine Komplikation entsteht dort, wo eine Instruktion I2 einen Doppel-Wort-Ergebnis-Wert liefert. Gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung wird eine Kombination von Stellen 12RD und 16RD dazu verwendet, die Daten zu speichern, die sich aus der Instruktion I2 ergeben, bis diese Instruktion abgelegt oder in anderer Weise aufgehoben ist. In der bevorzugten Ausführungsform wird die Ausführung von Instruktionen I4–7 dort gehalten, wo eine Doppel-Wort-Ausgangs-Referenz durch irgendeine der Instruktionen I0–3 durch die Register-Umbenennungs-Einheit 496 erfaßt ist. Dies ermöglicht, daß der gesamte temporäre Puffer 552' als ein einzelner Rang bzw. eine Datenebene von Doppelwort-Registern verwendet werden kann. Wenn einmal Instruktionen I0–3 abgelegt worden sind, kann der temporäre Puffer 552' wieder als zwei Ränge bzw. Ranks von Einzelwort-Registern verwendet werden. Weiterhin wird die Ausführung irgendeiner Instruktion I4–7 dort gehalten, wo ein Doppelwort-Ausgangs-Register erforderlich ist, bis die Instruktion in eine entsprechende I0–7 Stelle hinein verschoben worden ist.
  • Die logische Organisation des Register-Datei-Felds 564 ist in 7ab dargestellt. Gemäß den bevorzugten Ausführungsformen der vorliegenden Erfindung steht das Register-Datei-Feld 554 für einen ganzzahligen Datenpfad aus 40 Registern mit einer 32-Bit-Breite. Dieser Satz von Registern, der einen Register-Satz-Satz "A" bildet, ist als ein Basis-Register-Satz ra[0 .. 23] 565, ein oberer Satz aus Registern für allgemeine Zwecke ra[24 .. 31] 566 und ein Schatten-Register-Satz aus acht Trap-Registern für allgemeine Zwecke rt[24 .. 31] organisiert. Im normalen Betrieb bilden die Register für allgemeine Zwecke ra[0 .. 31] 565, 566 den aktiven "A" Register-Satz des Register-Datei-Felds für den ganzzahligen Datenpfad.
  • Wie in 7b dargestellt ist, können die Trap-Register rt[24 .. 31] 567 in den aktiven Register-Satz "A" ausgelagert werden, um einen Zugriff zusammen mit dem Aktiv-Basis-Satz von Registern ra[0 .. 23] 565 zu ermöglichen. Diese Konfiguration des "A" Register-Satzes wird unter der Kenntnis einer Unterbrechung oder der Ausführung eines Ausnahme-Trap-Handhabungs-Programms ausgewählt. Dieser Zustand des Register-Satzes A" wird beibehalten, bis er ausdrücklich zu dem Zustand zurückgeführt wird, der in 7a dargestellt ist, und zwar durch die Ausführung von Freigabe-Unterbrechungs-Instruktionen oder die Ausführung einer Rückführung von einer Trap-Instruktion.
  • In der bevorzugten Ausführungsform der vorliegenden Erfindung, wie sie durch die Architektur 100 ausgeführt ist, verwendet der Fließkomma-Datenpfad ein Register-Datei-Feld 572 mit erweiterter Präzision so, wie dies allgemein in 8 dargestellt ist. Das Register-Datei-Feld 572 besteht aus 32 Registern, rf[0 .. 31], wobei jedes davon eine Breite von 64 Bits besitzt. Die Fließkomma-Register-Datei 572 kann auch logisch als ein "B" Satz von ganzzahligen Registern rb[0 .. 31] bezeichnet werden. In der Architektur 100 ist dieser "B" Satz von Registern äquivalent zu 32 Bits niedriger Ordnung jeder der Fließkomma-Register rf[0 .. 31].
  • Einen dritten Datenpfad darstellend ist ein Boolscher Operator-Register-Satz 574 vorgesehen, wie dies in 9 dargestellt ist, um das logische Ergebnis von Boolschen, kombinatorischen Operationen zu speichern. Dieser "C" Register-Satz 574 besteht aus 32 Einzel-Bit-Registern rc[0 .. 31]. Die Operation des Boolschen Register-Satzes 574 ist dahingehend einzigartig, daß die Ergebnisse von Boolschen Operationen zu irgendeinem über eine Instruktions auswählbaren Register des Boolschen Register-Satzes 574 gerichtet werden kann. Dies steht im Gegensatz zu der Verwendung eines Einzel-Prozessor- Status-Wort-Registers, das einzelne Bit-Zeichen für Zustände, wie beispielsweise gleich, nicht gleich, größer als und andere, einfache, Boolsche Status-Werte speichert.
  • Sowohl der Fließkoma-Register-Satz 572 als auch der Boolsche Register-Satz 574 sind durch temporäre Puffer, die architekturmäßig identisch zu dem Ganzzahl-Temporär-Puffer 552 sind, der in 6b dargestellt ist, ausgeführt. Der wesentliche Unterschied ist derjenige, daß die Breite der Temporär-Puffer-Register so definiert ist, daß sie identisch zu demjenigen des Kompliment-Register-Datei-Felds 572, 574 sind: in der bevorzugten Ausführung 64 Bits und ein Bit jeweils.
  • Eine Anzahl von zusätzlichen, speziellen Registern ist zumindest logisch in dem Register-Feld 472 vorhanden. Die Register, die physikalisch in dem Register-Feld 472 vorhanden sind, wie dies in 7c dargestellt ist, umfassen einen Kernel-Stapel-Hinweiszeiger 568, ein Prozessor-Zustands-Register (PSR) 560, ein Register für den vorherigen Prozessor-Zustand (PPSR) 570 und ein Feld aus acht Registern für den temporären Prozessor-Zustand (tPSR[0 .. 7]) 571. Die verbleibenden, speziellen Register sind über verschiedene Teile der Architektur 100 verteilt. Der spezielle Adressen- und Daten-Bus 354 ist so vorgesehen, um Daten zwischen den speziellen Registern und den "A" und "B" Sätzen der Register auszuwählen und zu übertragen. Eine spezielle Register-Bewegungs-Instruktion ist vorgesehen, um ein Register von entweder dem "A" oder "B" Register-Satz, die Richtung einer Übertragung auszuwählen, um den Adressen-Identifizierer eines speziellen Registers zu spezifizieren.
  • Das Kernel-Stapel-Hinweiszeiger-Register und die Temporär-Prozessor-Zustands-Register unterscheiden sich von den anderen, speziellen Registern. Auf den Kernel-Stapel-Hinweiszeiger kann über die Ausführung einer Bewegungs-Instruktion von einem Standard-Register zu einem Register, wenn man sich in einem Kernel-Zustand befindet, zugegriffen werden. Auf die Temporär-Prozessor-Zustands-Register ist nicht direkt zugreifbar. Im Gegensatz hierzu wird dieses Feld von Registern dazu verwendet, einen Vererbungs-Mechanismus zum Propagieren des Werts des Prozessor-Zustands-Registers zur Verwendung bei der Ausführung von Instruktionen außerhalb der Reihenfolge auszuführen. Der anfängliche Propagations-Wert ist derjenige des Prozessor-Zustands-Registers: der Wert, der durch die letzte, abgelegte Instruktion geliefert ist. Dieser Anfangswert wird vorwärts durch die Temporär-Prozessor-Zustands-Register propagiert, so daß irgendeine Ausführungs-Instruktion außerhalb der Reihenfolge einen Zugriff auf den Wert in dem po sitionsmäßigen, entsprechenden Temporär-Prozessor-Zustands-Register besitzt. Die spezifische Art einer Instruktion definiert die Zustands-Code-Bits, falls welche vorhanden sind, so, daß die Instruktion davon abhängig ist oder sich ändern kann. Dort, wo eine Instruktion ein Code ist, wie dies durch die Register-Abhängigkeit-Prüfeinrichtungs-Einheit 494 und die Übertragungs-Abhängigkeit-Prüfeinrichtung 492 bestimmt ist, kann die Instruktion außerhalb der Reihenfolge ausgeführt werden. Irgendeine Modifikation der Zustands-Code-Bits des Prozessor-Zustands-Registers wird zu dem logisch entsprechenden Temporär-Prozessor-Zustands-Register gerichtet. Genauer gesagt werden nur solche Bits, die sich ändern können, auf den Wert in dem Temporär-Prozessor-Zustands-Register angewandt und zu allen Temporär-Prozessor-Zustands-Registern höherer Ordnung propagiert. Demzufolge führt jede außerhalb der Reihenfolge ausgeführte Instruktion ausgehend von einem Prozessor-Zustands-Register-Wert aus, geeignet modifiziert durch irgendwelche intervenierenden PSR-Modifikations-Instruktionen. Eine Ablage einer Instruktion überträgt nur den Wert der entsprechenden Temporär-Prozessor-Zustands-Register zu dem PSR-Register 569.
  • Die verbleibenden, speziellen Register werden in Tabelle II beschrieben.
  • Figure 00660001
  • Figure 00670001
  • Figure 00680001
  • 2) Detail des Integer-Datenpfads:
  • Der ganzzahlige bzw. Integer-Datenpfad der IEU 104, aufgebaut entsprechend der bevorzugten Ausführungsform der vorliegenden Erfindung, ist in 10 dargestellt. Zu Zwecken der Deutlichkeit sind viele Steuerpfadverbindungen zu dem Ganzzahl-Datenpfad 580 nicht dargestellt. Solche Verbindungen sind in Bezug auf 5 definiert.
  • Eingangs-Daten für den Datenpfad 580 werden von den Ausrichtungs-Einheiten 582, 584 und der Ganzzahl-Lade-Speicher-Einheit 586 erhalten. Ganzzahl-Zwischen-Daten-Werte, die ursprünglich als ein in eine Instruktion eingebettetes Datenfeld geliefert sind, werden von der Operanden-Einheit 470 über einen Bus 588 erhalten. Die Ausrichtungs-Einheit 582 arbeitet so, um den ganzzahligen Daten-Wert zu isolieren und den sich ergebenden Wert auf dem Ausgangs-Bus 590 zu einem Multiplexer 592 zu liefern. Ein zweiter Eingang zu dem Multiplexer 592 ist die spezielle Register-Adresse und der Daten-Bus 354.
  • Zwischen-Operanden, die aus der Instruktions-Folge erhalten sind, werden auch von der Operanden-Einheit 570 über den Daten-Bus 594 erhalten. Diese Werte sind wiederum rechtsbündig durch die Ausrichtungs-Einheit 584 vor der Weitergabe auf einem Ausgangs-Bus 596 ausgerichtet.
  • Die Ganzzahl-Lade/Speicher-Einheit 586 kommuniziert bidirektional über den externen Daten-Bus 598 mit der CCU 106. Ankommende Daten zu der IEU 104 werden über die Ganzzahl-Lade/Speicher-Einheit 586 auf dem Eingangs-Daten-Bus 600 zu einer Eingangsverriegelung 602 übertragen. Der Daten-Ausgang von dem Multiplexer 592 und der Verriegelung 602 wird auf die Multiplexer-Eingangs-Busse 604, 606 eines Multiplexers 608 gegeben. Daten von dem Funktional-Einheit-Ausgangs-Bus 482' werden auch durch den Multiplexer 608 empfangen. Dieser Multiplexer 608, in den bevorzugten Ausführungsformen der Architektur 100, ist für zwei simultane Datenpfade zu den Ausgangs-Multiplexer-Bussen 610 vorgesehen. Weiterhin kann die Übertragung von Daten über den Multiplexer 608 innerhalb jedes halben Zyklus des Systemtaktes abgeschlossen werden. Da die meisten Instruktionen, die durch die Architektur 100 ausgeführt sind, ein einzelnes Bestimmungs-Register verwenden, kann ein Maximum von vier Instruktionen Daten zu dem Temporär-Puffer 612 während jedes Systemtaktzyklus liefern.
  • Daten von dem Temporär-Puffer 612 können zu einem Ganzzahl-Register-Datei-Feld 614 übertragen werden, und zwar über Temporär-Register-Ausgangs-Busse 616, oder zu einem Ausgangs-Multiplexer 620 über alternative Temporär-Puffer-Register-Busse 618. Die Ganzzahl-Register-Feld-Ausgangs-Busse 622 ermöglichen die Übertragung von Ganzzahl-Register-Daten zu dem Multiplexer 620. Die Ausgangs-Busse, die mit dem Temporär-Puffer 612 und dem Ganzzahl-Register-Datei-Feld 614 verbunden sind, lassen jeweils zu, daß fünf Register-Werte simultan ausgegeben werden. Dies bedeutet, daß zwei Instruktionen, die auf insgesamt bis zu fünf Quellen-Register Bezug nehmen, gleichzeitig ausgegeben werden können. Der Temporär-Puffer 612, das Register-Datei-Feld 614 und der Multiplexer 620 ermöglichen, daß abgehende Register-Daten-Übertragungen jeden halben Systemtaktzyklus auftreten. Deshalb können bis zu vier Ganzzahl- und Fließkomma-Instruktionen während jedes Taktzyklus ausgegeben werden.
  • Der Multiplexer 620 arbeitet so, um ausgehende Register-Daten-Werte von dem Register-Datei-Feld 614 oder direkt von dem Temporär-Puffer 612 auszuwählen. Dies ermöglicht, daß außerhalb der Reihenfolge ausgeführte Instruktionen mit Abhängigkeiten in Bezug auf die zuvor außerhalb der Reihenfolge ausgeführten Instruktionen durch die IEU 104 ausgeführt werden können. Dies erleichtert die doppelten Ziele einer Maximierung der Ausführungs-Durchsatz-Fähigkeit des IEU-Ganzzahl-Datenpfads durch die Ausführung außerhalb der Reihenfolge von anhängigen Instruktionen, während präzise Datenergebnisse außerhalb der Reihenfolge von Datenergebnissen, die durch Instruktionen produziert sind, die ausgeführt und abgelegt worden sind, isoliert bzw. ausgesondert werden. Immer wenn eine Unterbrechung oder ein anderer Ausnahme-Zustand auftritt, der erfordert, daß der präzise Zustand der Maschine zurückgespeichert wird, ermöglicht die vorliegende Erfindung, daß die Daten-Werte, die in dem Temporär-Puffer 612 vorhanden sind, einfach gelöscht werden. Das Register-Datei-Feld 614 wird deshalb so belassen, um präzise diese Daten-Werte zu enthalten, die nur durch die Ausführung von Instruktionen produziert sind, die vor dem Auftreten der Unterbrechung oder einem anderen Ausnahme-Zustand abgeschlossen oder abgelegt sind.
  • Die bis zu fünf Register-Daten-Werte, die während jeder halben System-Taktzyklus-Operation des Multiplexers 620 ausgewählt sind, werden über die Multiplexer-Ausgangs-Busse 624 zu einer Ganzzahl-Bypass-Einheit 626 geliefert. Diese Bypass-Einheit 626 ist, ihrem Wesen nach, ein paralleles Feld aus Multiplexern, die zum Führen von Daten, die an irgendeinem derer Eingänge vorhanden sind, zu irgendeinem deren Ausgänge dient. Die Eingänge der Bypass-Einheit 626 umfassen den auf das spezielle Register adressierten Daten-Wert oder einen Zwischen-Ganzzahl-Wert über den Ausgangs-Bus 604 von dem Multiplexer 592, die bis zu fünf Register-Daten-Werte, die auf den Bussen 624 zugeführt sind, die Lade-Operanden-Daten von der Ganzzahl-Lade/Speicher-Einheit 586 über den Doppel-Ganzzahl-Bus 600, den Zwischen-Operanden-Wert, der von der Ausrichtungs-Einheit 584 über deren Ausgangs-Bus 526 erhalten ist, und schließlich einen Bypass-Datenpfad von dem Funktional-Einheit-Ausgangs-Bus 482. Dieser Bypass-Datenpfad und der Daten-Bus 682 dienen für die simultane Übertragung von vier Register-Werten pro System-Taktzyklus.
  • Daten werden über die Bypass-Einheit 626 auf einen Ganzzahl-Bypass-Bus 628, der mit dem Fließkomma-Datenpfad verbunden ist, zu zwei Operanden-Daten-Bussen, die für die Herausführung von bis zu fünf Register-Daten-Werten simultan vorgesehen sind, und einem Speicher-Daten-Bus 632, der dazu verwendet wird, Daten zu der Ganzzahl-Lade/Speicher-Einheit 586 zu liefern, ausgegeben.
  • Der Funktional-Einheit-Verteilungs-Bus 480 wird durch die Operation einer Routenführungs-Einheit 634 ausgeführt. Wiederum wird die Routenführungs-Einheit 634 durch ein paralleles Feld aus Multiplexern ausgeführt, das ermöglicht, daß fünf Register-Werte an deren Eingängen so aufgenommen werden, um zu den funktionalen Einheiten geführt zu werden, die in dem Ganzzahl-Datenpfad vorgesehen sind. Genauer gesagt empfängt die Routenführungs-Einheit 634 die fünf Register-Daten-Werte, die über die Busse 630 von der Bypass-Einheit 626 geliefert werden, den momentanen IF_PC Adressen-Wert über den Adressen-Bus 352 und den Steuer-Fluß-Offset-Wert, der durch die PC-Steuereinheit 362 bestimmt ist und wie dies über die Leitungen 378' geliefert wird. Die Routenführungs-Einheit 634 kann optional, über den Daten-Bus 636, einen Operanden-Daten-Wert empfangen, der quellenmäßig von einer Bypass-Einheit erzeugt wird, die innerhalb des Fließkomma-Datenpfads vorgesehen ist.
  • Die Register-Daten-Werte, die durch die Routenführungs-Einheit 634 empfangen sind, können auf dem Spezial-Register-Adressen- und Daten-Bus 354 und zu den funktionalen Einheiten 640, 642, 644 übertragen werden. Genauer gesagt ist die Routenführungs-Einheit 634 geeignet, bis zu drei Register-Operanden-Werte zu jeder der funktionalen Einheiten 640, 642, 644 über Routenführungs-Einrichtungs-Ausgangs-Busse 646, 648, 650 zu liefern. Übereinstimmend mit der allgemeinen Architektur bzw. dem Aufbau der Architektur 100 könnten bis zu zwei Instruktionen simultan zu den funktionalen Einheiten 640, 642, 644 ausgegeben werden. Die bevorzugte Ausführungsform der vorliegenden Erfindung sieht drei zugeordnete Ganzzahl-Funktional-Einheiten vor, die jeweils eine programmierbare Verschiebefunktion und zwei arithmetische Logik-Einheit-Funktionen ausführen.
  • Eine ALU0-Funktional-Einheit 644, eine ALU1-Funktional-Einheit 642 und eine Verschiebeeinrichtungs-Funktional-Einheit 640 liefern jeweilige Ausgangs-Register-Daten auf dem Funktional-Einheit-Bus 482'. Die Ausgangs-Daten, die durch die ALU0 und die Verschiebeeinrichtungs-Funktional-Einheit 644, 640 erzeugt sind, werden auch auf einem gemeinsam geteilten Ganzzahl-Funktional-Einheit-Bus 650 zugeführt, der in den Fließkomma-Datenpfad eingebunden ist. Ein ähnlicher Fließkomma-Funktional-Einheit-Ausgangs-Wert-Daten-Bus 652 wird auch von dem Fließkomma-Datenpfad zu dem Funktional-Einheit-Ausgangs-Bus 482' zugeführt.
  • Die ALU0-Funktional-Einheit 644 wird auch bei der Erzeugung von virtuellen Adressen-Werten beim Unterstützen sowohl der Vorababruf-Operationen der IFU 102 als auch der Daten-Operationen der Ganzzahl-Lade/Speicher-Einheit 586 verwendet. Der virtuelle Adressen-Wert, der durch die ALU0-Funktional-Einheit 644 berechnet ist, wird auf einen Ausgangs-Bus 654 gegeben, der sich mit sowohl dem Ziel-Adressen-Bus 346, der IFU 102 als auch mit der CCU 106 verbindet, um die physikalische Adresse der Ausführungs-Einheit (EX PADDR) zu liefern. Eine Verriegelung 656 ist vorgesehen, um den virtualisie renden Teil der Adresse zu speichern, der durch die ALU0-Funktional-Einheit 644 erzeugt ist. Dieser virtualisierende Teil der Adresse wird auf einem Ausgangs-Bus 658 zu der VMU 108 geliefert.
  • 3) Detail des Fließkomma-Datenpfads:
  • In 11 ist nun der Fließkomma-Datenpfad 660 dargestellt. Anfangs-Daten werden wieder von einer Anzahl von Quellen aufgenommen, die den unmittelbaren Ganzzahl-Operanden-Bus 588, den unmittelbaren Operanden-Bus 594 und den Adressen-Daten-Bus 354 des speziellen Registers umfassen. Die Endquelle von externen Daten ist eine Fließkomma-Lade/Speicher-Einheit 622, die mit der CCU 106 über den externen Daten-Bus 598 verbunden ist.
  • Der unmittelbare ganzzahlige Operand wird durch eine Ausrichtungs-Einheit 664 empfangen, die so funktioniert, um das Ganzzahl-Daten-Feld vor einer Übergabe zu einem Multiplexer 666 über einen Ausrichtungs-Ausgangs-Daten-Bus 668 rechtsbündig auszurichten. Der Multiplexer 666 empfängt auch den Adressen-Daten-Bus 354 des speziellen Registers. Unmittelbare Operanden werden zu einer zweiten Ausrichtungs-Einheit 670 für eine rechtsbündige Ausrichtung geliefert, bevor sie auf einen Ausgangs-Bus 672 geführt werden. Ankommende Daten von der Fließkomma-Lade/Speicher-Einheit 662 werden durch eine Verriegelung 674 von einem Lade-Daten-Bus 676 empfangen. Daten von dem Multiplexer 666, der Verriegelung 674 und einem Funktional-Einheit-Daten-Rückführbus 482'' werden auf den Eingängen eines Multiplexers 678 empfangen. Der Multiplexer 678 dient für auswählbare Datenpfade, die ausreichend sind, um zu ermöglichen, daß zwei Register-Daten-Werte in einen temporären Puffer 680 eingeschrieben werden, und zwar über die Multiplexer-Ausgangs-Busse 682, jeden halben Zyklus des Systemtaktes. Der temporäre Puffer 680 umfaßt einen Register-Satz logisch identisch zu dem temporären Puffer 552', wie dies in 6b dargestellt ist. Der temporäre Puffer 680 liefert weiterhin bis zu fünf Register-Daten-Werte, damit sie von dem temporären Puffer 680 gelesen werden, zu einem Fließkomma-Register-Datei-Feld 684, und zwar über Daten-Busse 686, und zu einem Ausgangs-Multiplexer 688 über Ausgangs-Daten-Busse 690. Der Multiplexer 688 empfängt auch, über Daten-Busse 692, bis zu fünf Register-Daten-Werte von dem Fließkomma-Register-Datei-Feld 684 simultan. Der Multiplexer 688 funktioniert so, um bis zu fünf Register-Daten-Werte für eine simultane Übertragung zu einer Bypass-Einheit 694 über Daten-Busse 696 auszuwählen. Die Bypass-Einheit 694 empfängt auch den unmittelbaren Operanden-Wert, der durch die Ausrichtungs-Einheit 670 über den Daten-Bus 672, den Ausgangs-Daten-Bus 698 von dem Multiplexer 666, dem Lade-Daten-Bus 676 und einer Daten-Bypass-Erweiterung des Funktional-Einheit-Daten-Rückführbusses 482'' geliefert ist. Die Bypass-Einheit 694 arbeitet so, um bis zu fünf simultane Register-Operanden-Daten-Werte zur Ausgabe auf den Bypass-Einheit-Ausgangs-Bussen 700, einem Speicher-Daten-Bus 702, der mit der Fließkomma-Lade/Speicher-Einheit 662 verbunden ist, und dem Fließkomma-Bypass-Bus 636, der sich mit der Routenführungs-Einheit 634 des Ganzzahl-Datenpfads 580 verbindet, auszuwählen.
  • Eine Fließkomma-Routenführungs-Einheit 704 dient für simultane, auswählbare Datenpfade zwischen den Bypass-Einheit-Ausgangs-Bussen 700 und dem Ganzzahl-Datenpfad-Bypass-Bus 628 und den Funktional-Einheit-Eingangs-Bussen 706, 708, 710, die mit den jeweiligen funktionalen Einheiten 712, 714, 716 verbunden sind. Jeder der Eingangs-Busse 706, 708, 710 ermöglicht, entsprechend der bevorzugten Ausführungsform der Architektur 100, die simultane Übertragung von bis zu drei Register-Operanden-Daten-Werten zu jeder der Funktional-Einheit 712, 714, 716. Die Ausgangs-Busse dieser funktionalen Einheiten 712, 714, 716 sind mit dem Funktional-Einheit-Daten-Rückführbus 482" zur Rückführung von Daten zu dem Register-Datei-Eingangs-Multiplexer 678 verbunden. Der Ganzzahl-Datenpfad-Funktional-Einheit-Ausgangs-Bus 650 kann auch so vorgesehen sein, um sich mit dem Funktional-Einheit-Daten-Rückführbus 482'' zu verbinden. Die Architektur 100 dient für eine Verbindung der Funktional-Einheit-Ausgangs-Busse einer Multiplier-Funktional-Einheit 712 und einer Fließkomma-ALU 714, um über den Fließkomma-Datenpfad-Funktional-Einheitsbus 652 mit dem Funktional-Einheit-Daten-Rückführbus 482' des Ganzzahl-Datenpfads 580 verbunden zu werden.
  • 4) Detail des Boolschen Register-Datenpfads:
  • Der Boolsche Operations-Datenpfad 720 ist in 12 dargestellt. Dieser Datenpfad 720 wird beim Unterstützen der Ausführung von im wesentlichen zwei Typen von Instruktionen verwendet. Der erste Typ ist eine Operanden-Vergleichs-Instruktion, wo zwei Operanden, ausgewählt aus den Ganzzahl-Registersätzen, den Fließkomma-Registersätzen oder als unmittelbare Operanden zugeführt, Subtraktion einer der ALU-Funktional-Einheiten der Ganzzahl- und Fließkomma-Datenpfade verglichen. Ein Vergleich wird durch eine Subtraktions-Operation durch irgendeine der ALU-Funktional- Einheiten 642, 644, 714, 716 mit den sich ergebenden Vorzeichen- und Null-Status-Bits, die zu einer kombinierten Eingangs-Selektor- und Vergleichs-Operator-Einheit 722 zugeführt werden, durchgeführt. Diese Einheit 722 wählt, in Abhängigkeit von Instruktions-Identifizierungs-Steuersignalen, die von der EDecodiereinheit 490 empfangen sind, den Ausgang einer ALU-Funktional-Einheit 642, 644, 714, 716 aus und kombiniert die Vorzeichen- und Null-Bits, um einen Boolschen Vergleichs-Ergebnis-Wert zu extrahieren. Ein Ausgangs-Bus 723 ermöglicht, daß die Ergebnisse der Vergleichs-Operation simultan zu einem Eingangs-Multiplexer 726 und einer Bypass-Einheit 742 übertragen werden. Wie in den Ganzzahl- und Fließkomma-Datenpfaden wird die Bypass-Einheit 742 als ein paralleles Feld aus Multiplexern ausgeführt, die mehrfache, auswählbare Datenpfade zwischen den Eingängen der Bypass-Einheit 742 zu mehrfachen Ausgängen bilden. Die anderen Eingänge der Bypass-Einheit 742 umfassen einen Boolschen Operations-Ergebnis-Rückführ-Daten-Bus 724 und zwei Boolsche Operanden auf Daten-Bussen 744. Die Bypass-Einheit 742 ermöglicht, daß Boolsche Operanden, die bis zu zwei simultane Boolsche Ausführungs-Instruktionen darstellen, zu einer Boolschen Operations-Funktional-Einheit 746, und zwar über Operanden-Busse 748, übertragen werden. Die Bypass-Einheit 746 ermöglicht auch eine Übertragung von bis zu zwei Boolschen Einzel-Bit-Operanden-Bits (CF0, CF1), so daß sie simultan auf den Steuerfluß-Ergebnis-Steuerleitungen 750, 752 geliefert werden.
  • Der Rest des Boolschen Operations-Datenpfads 720 umfaßt den Eingangs-Multiplexer 726, der, als seine Eingänge, die Vergleichs- und Boolschen Operations-Ergebnis-Werte aufnimmt, die auf dem Vergleichs-Ergebnisbus 723 und einem Boolschen Ergebnisbus 724 geliefert werden. Der Bus 724 ermöglicht, daß bis zu zwei simultane, Boolsche Ergebnis-Bits zu dem Multiplexer 726 übertragen werden können. Zusätzlich können bis zu zwei Vergleichs-Ergebnis-Bits über den Bus 723 zu dem Multiplexer 726 übertragen werden. Der Multiplexer 726 ermöglicht, daß irgendwelche zwei einzelne Bits, die an den Multiplexer-Eingängen auftreten, über die Multiplexer-Ausgangs-Busse 730 zu einem Boolschen Operations-Temporär-Puffer 728 während jedes halben Zyklus des Systemtakts übertragen werden. Der temporäre Puffer 728 ist logisch äquivalent zu dem temporären Puffer 752', wie dies in 6b dargestellt ist, obwohl er sich in zwei wesentlichen Punkten unterscheidet. Der erste Punkt ist derjenige, daß jeder Register-Eintritt in dem temporären Puffer 728 aus einem einzelnen Bit besteht. Die zweite Unterscheidung ist diejenige, daß nur ein einzelnes Register für jeden der acht anhängigen Instruktions-Schlitze vorgesehen ist, da das Ergebnis einer Boolschen Operation, per Definition, vollständig durch ein einzelnes Ergebnis-Bit definiert ist.
  • Der temporäre Puffer 728 liefert bis zu vier Ausgangs-Operanden-Werte simultan. Dies ermöglicht die simultane Ausführung von zwei Boolschen Instruktionen, wobei jede einen Zugriff auf zwei Quellen-Register erfordert. Die vier Boolschen Register-Werte können während jedes halben Zyklus des Systemtakts auf den Operanden-Bussen 736 zu einem Multiplexer 738 oder zu einem Boolschen Register-Datei-Feld 732 über die Bool-schen Operanden-Daten-Busse 734 übertragen werden. Das Boolsche Register-Datei-Feld 732 ist, wie es logisch in 9 dargestellt ist, ein einzelnes, 32-Bit breites Daten-Register, das ermöglicht, daß irgendeine separate Kombination von bis zu vier einzelnen Bit-Stellen mit Daten von dem temporären Puffer 728 modifiziert und von dem Boolschen Register-Datei-Feld 732 auf den Ausgangs-Bussen 740 während jedes halben Zyklus des Systemtakts gelesen werden. Der Multiplexer 738 dient für irgendwelche zwei Paare von Boolschen Operanden, die an deren Eingängen über die Busse 736, 740 empfangen werden, daß sie auf den Operanden-Ausgangs-Bussen 744 zu der Bypass-Einheit 742 übertragen werden.
  • Die Boolsche Operations-Funktional-Einheit 746 ist zum Durchführen eines weiten Bereichs von Boolschen Operationen in Bezug auf zwei Quellen-Werte geeignet. In dem Fall von Vergleichs-Instruktionen sind die Quellen-Werte ein Paar von Operanden, die von irgendeinem der Ganzzahl- und Fließkomma-Registersätzen und irgendeinem unmittelbaren Operanden, der zu der IEU 104 geliefert wird, und, für eine Boolsche Instruktion, irgendwelcher der zwei Boolschen Register-Operanden erhalten sind. Die Tabellen III und IV identifizieren die logischen Vergleichs-Operationen, die durch die bevorzugte Ausführungsform der Architektur 100 geliefert werden. Die Instruktions-Zustands-Code und Funktions-Code, die in den Tabellen III–V spezifiziert sind, stellen ein Segment der entsprechenden Instruktionen dar. Die Instruktion liefert auch eine Identifikation des Quellen-Paars von Operanden-Registern und die Boolschen Bestimmungs-Register zur Speicherung des entsprechenden Boolschen Operations-Ergebnisses.
  • Figure 00750001
  • Figure 00760001
  • Figure 00770001
  • B) Lade/Speicher-Steuereinheit:
  • Eine beispielhafte Lade/Speicher-Einheit 760 ist in 13 dargestellt. Obwohl die Lade/Speicher-Einheiten 586, 662 separat in den Datenpfaden 580, 660 dargestellt sind, werden sie vorzugsweise als ein einzelne, gemeinsam geteilte Lade/Speicher-Einheit 760 ausgeführt. Die Schnittstelle von einem jeweiligen Datenpfad 580, 660 erfolgt über einen Adressen-Bus 762 und Lade- und Speicher-Daten-Busse 764 (600, 676), 766 (632, 702).
  • Die Adresse, die durch die Lade/Speicher-Einheit 760 verwendet ist, ist eine physikalische Adresse, im Gegensatz zu der virtuellen Adresse, die durch die IFU 102 und den Rest der IEU 104 verwendet wird. Während die IFU 102 auf virtuellen Adressen arbeitet, die sich auf Koordination zwischen der CCU 106 und der VMU 108 beziehen, um eine physikalische Adresse zu produzieren, erfordert die IEU 104, daß die Lade/Speicher-Einheit 760 direkt in einem physikalischen Adressen-Modus arbeitet. Dieses Erfordernis ist notwendig, um eine Daten-Integrität beim Vorhandensein von außerhalb der Reihenfolge ausgeführten Instruktionen sicherzustellen, die ein Überlappen von physikalischen Adres sen-Daten-Lade- und Speicher-Operationen umfassen können, und bei dem Vorhandensein von Daten-Rückführungen außerhalb der Reihenfolge von der CCU 106 zu der Lade/Speicher-Einheit 760. Um eine Daten-Integrität sicherzustellen, puffert die Lade/Speicher-Einheit 760 Daten, die durch Speicher-Instruktionen geliefert werden, bis die Speicher-Instruktion durch die IEU 104 abgelegt ist. Demzufolge können Speicher-Daten, die durch die Lade/Speicher-Einheit 760 gepuffert sind, einzigartig nur in der Lade/Speicher-Einheit 760 vorhanden sein. Lade-Instruktionen, die sich auf dieselbe physikalische Adresse beziehen, wie sie ausgeführt ist, allerdings nicht auf abgelegten Speicher-Instruktionen, werden verzögert, bis die Speicher-Instruktion tatsächlich abgelegt ist. An diesem Punkt können die Speicher-Daten zu der CCU 106 durch die Lade/Speicher-Einheit 760 übertragen werden und dann unmittelbar zurück durch die Ausführung einer CCU-Daten-Lade-Operation geladen werden.
  • Genauer gesagt werden volle, physikalische Adressen von der VMU 108 auf dem Lade/Speicher-Adressen-Bus 762 geliefert. Lade-Adressen werden allgemein in Lade-Adressen-Registern 7680–3 gespeichert. Speicher-Adressen werden in Speicher-Adressen-Registern 7703–0 hinein verriegelt. Eine Lade/Speicher-Steuereinheit 774 arbeitet in Abhängigkeit von Steuersignalen, die von der Instruktions-Ausgabe-Einheit 498 empfangen sind, um eine Verriegelung von Lade- und Speicher-Adressen in die Register 7683–0 , 7703–0 hinein zu koordinieren. Die Lade/Speicher-Steuereinheit 774 liefert Steuersignale auf Steuerleitungen 778 zur Verriegelung von Lade-Adressen und auf Steuerleitungen 780 zum Verriegeln von Speicher-Adressen. Speicher-Daten werden simultan mit der Verriegelung von Speicher-Adressen in logisch entsprechenden Schlitzen des Speicher-Daten-Register-Satzes 7823–0 verriegelt. Eine 4 × 4 32 Bit breite Adressen-Komparator-Einheit 772 wird simultan mit jeder der Adressen in den Lade- und Speicher-Adressen-Registern 7683–0 , 7703–0 geliefert. Die Ausführung eines Voll-Matrix-Adressen-Vergleichs während jedes halben Zyklus des Systemtakts wird durch die Lade/Speicher-Steuereinheit 774 über Steuerleitungen 776 kontrolliert. Die Existenz und logische Stelle einer Lade-Adresse, die eine Speicher-Adresse anpaßt, wird über Steuersignale geliefert, die zu der Lade-Speicher-Steuereinheit 774 über Steuerleitungen 776 zurückgeführt sind.
  • Dort, wo eine Lade-Adresse von der VMU 108 geliefert wird und dort keine anhängigen Speicherungen vorhanden sind, wird die Lade-Adresse im Bypass direkt von dem Bus 762 zu einem Adressen-Selektor 786 gleichzeitig mit der Initiierung einer CCU-Lade-Operation vorbeigeführt. Allerdings wird dort, wo Speicher-Daten anhängig sind, die Lade-Adresse in einer verfügbaren Lade-Adressen-Verriegelung 7680–3 verriegelt werden. Unter Empfangen eines Steuersignals von der Ablage-Steuereinheit 500, das anzeigt, daß die entsprechende Speicher-Daten-Instruktion abgelegt wird, initiiert die Lade/Speicher-Steuereinheit 774 eine CCU-Daten-Übertragungs-Operation durch Entscheidung, und zwar über Steuerleitungen 784, für einen Zugriff zu der CCU 106. Wenn die CCU 106 Bereitschaft signalisiert, führt die Lade/Speicher-Steuereinheit 774 den Selektor 786 so, um eine physikalische CCU-Adresse auf dem CCU PADDR Adressen-Bus 788 zu liefern. Diese Adresse wird von dem entsprechenden Speicher-Register 7703–0 über den Adressen-Bus 790 erhalten. Daten von dem entsprechenden Speicher-Daten-Register 7823–0 werden auf dem CCU-Daten-Bus 792 geliefert.
  • Unter Ausgabe einer Lade-Instruktion durch die Instruktions-Ausgabe-Einrichtung 498 gibt die Lade-Speicher-Steuereinheit 747 eine der Lade-Adressen-Verriegelungen 7683–0 frei, um die angeforderte Lade-Adresse zu verriegeln. Die spezifische Verriegelung 7680–3 , die ausgewählt ist, entspricht logisch der Position der Lade-Instruktion in dem relevanten Instruktions-Satz. Die Instruktions-Ausgabe-Einrichtung 498 liefert zu der Lade-Speicher-Steuereinheit 774 einen Fünf-Bit-Vektor, der die Lade-Instruktion innerhalb jeder der zwei möglichen, anhängigen Instruktions-Sätze identifiziert. Dort, wo der Komparator 772 nicht eine passende Speicher-Adresse identifiziert, wird die Lade-Adresse über einen Adressen-Bus 794 zu dem Selektor bzw. der Auswahl-Einrichtung 786 für eine Ausgabe auf den CCU PADDR Adressen-Bus 788 geführt. Die Vorsehung der Adresse wird im Hinblick auf die CCU-Anforderungs- und Bereitschafts-Steuersignale durchgeführt, die zwischen der Lade/Speicher-Steuereinheit 774 und der CCU 106 ausgetauscht werden sollen. Ein Ausführungs-ID-Wert (ExID) wird auch präpariert und durch die Lade/Speicher-Steuereinheit 774 zu der CCU 106 ausgegeben, um die Lade-Anforderung zu identifizieren, wenn die CCU 106 darauffolgend die angeforderten Daten, einschließlich des ExID-Werts, zurückführt. Dieser ID-Wert besteht aus einem Vier-Bit-Vektor, der einzigartige Bits verwendet, um die jeweilige Lade-Adressen-Verriegelung 7680–3 zu identifizieren, von der die momentane Lade-Anforderung erzeugt ist. Ein fünftes Bit wird dazu verwendet, den Instruktions-Satz zu identifizieren, der die Lade-Instruktion enthält. Der ID-Wert ist demzufolge derselbe wie der Bit-Vektor, der mit der Lade-Anforderung von der Instruktions-Ausgabeeinrichtungs-Einheit 498 geliefert ist.
  • Bei einem darauffolgende Signal von der CCU 106 zu der Lade/Speicher-Steuereinheit 774 über die Verfügbarkeit von zuvor angeforderten Lade-Daten gibt die Lade/Speicher-Steuereinheit 774 eine Ausrichtungs-Einheit frei, um die Daten zu empfangen, und führt sie auf den Lade-Daten-Bus 764. Eine Ausrichtungs-Einheit 798 arbeitet so, um die Lade-Daten rechtsbündig auszurichten.
  • Gleichzeitig mit der Rückführung der Daten von der CCU 106 empfängt die Lade/Speicher-Steuereinheit 774 den ExID-Wert von der CCU 106. Die Lade/Speicher-Steuereinheit 774 führt wiederum ein Steuersignal zu der Instruktions-Ausgabeeinrichtungs-Einheit 498 zu, das identifiziert, daß Lade-Daten auf dem Lade-Daten-Bus 764 geliefert werden sollen, und führt weiterhin einen Bit-Vektor zurück, der die Lade-Instruktion identifiziert, für die die Lade-Daten zurückgeführt werden sollen.
  • C) Detail des IEU-Steuerpfads:
  • Unter Bezugnahme wiederum auf 5 wird die Operation des IEU-Steuerpfads nun im Detail unter Bezugnahme auf das Zeitabstimmungsdiagramm beschrieben werden, das in 14 angegeben ist. Die Zeitabstimmung der Ausführung von Instruktionen, dargestellt in 14, ist exemplarisch für die Operation der vorliegenden Erfindung und nicht erschöpfend für die Ausführung von Zeitabstimmungspermutationen.
  • Das Zeitabstimmungsdiagramm der 14 stellt eine Sequenz von Prozessor-Systemtaktzyklen, P0–6, dar. Jeder Prozessor-Zyklus beginnt mit einem internen T-Zyklus T0. Dabei sind zwei T-Zyklen pro Prozessor-Zyklus in einer bevorzugten Ausführungsform der vorliegenden Ausführungsform der Erfindung vorhanden, wie dies durch die Architektur 100 vorgesehen ist.
  • In einem Prozessor-Zyklus Null arbeiten die IFU 102 und die VMU 108 so, um eine physikalische Adresse zu erzeugen. Die physikalische Adresse wird zu der CCU 106 zugeführt und ein Instruktions-Cache-Zugriffs-Vorgang wird initiiert. Dort, wo der angeforderte Instruktions-Satz in dem Instruktions-Cache 132 vorhanden ist, wird ein Instruktions-Satz zu der IFU 102 bei ungefähr dem Mittelpunkt des Prozessor-Zyklus eins zurückgeführt. Die IFU 102 managt dann die Übertragung des Insstruktionssatzes durch die Vorababruf-Einheit 260 und den IFIFO 264, woraufhin der Instruktions-Satz zuerst der IEU 104 zur Ausführung präsentiert wird.
  • 1) Detail der EDecodiereinheit:
  • Die EDecodiereinheit 490 empfängt den vollen Instruktiossatz parallel zu einer Decodierung vor der Schlußfolgerung bzw. dem Abschluß des Prozessor-Zyklus eins. Die EDecodiereinheit 490 ist, in der bevorzugten Architektur 100, als ein reiner kombinatorischer, logischer Block ausgeführt, der für die direkte parallele Decodierung aller gültigen Instruktionen dient, die über den Bus 124 empfangen sind. Jeder Typ einer Instruktion, der durch die Architektur 100 erkannt ist, umfaßt die Spezifikation der Instruktion, der Register-Erfordernisse und der Ressourcen-Bedürfnisse, die in Tabelle VI identifiziert sind.
  • Figure 00810001
  • Figure 00820001
  • Die EDecodiereinheit 490d decodiert jede Instruktion eines Instruktions-Satzes parallel. Die sich ergebende Identifikation von Instruktionen, Instruktions-Funktionen, Register-Referenzen und Funktions-Erfordernisse werden an den Ausgängen der EDecodiereinheit 490 verfügbar gemacht. Diese Informationen werden durch die EDecodiereinheit 490 während jedes halben Prozessor-Zykluses regeneriert und verriegelt, bis alle Instruktionen in dem Instruktions-Satz abgelegt sind. Demzufolge werden Informationen, die sich auf alle acht anhängigen Instruktionen beziehen, konstant an dem Ausgang der EDecodiereinheit 490 beibehalten. Diese Informationen werden in der Form von acht Element-Bit-Vektoren präsentiert, wobei die Bits oder Unterfelder jedes Vektors logisch der physikalischen Stelle der entsprechenden Instruktion innerhalb der zwei anhängigen Instruktions-Sätze entsprechen. Demzufolge werden acht Vektoren über die Steuerleitungen 502 zu der Übertragungs-Prüfeinrichtung 492 zugeführt, wo jeder Vektor spezifiziert, ob die entsprechende Instruktion das Übertragungs-Bit des Prozessor-Status-Worts beeinflußt oder davon abhängig ist. Acht Vektoren werden über die Steuerleitungen 510 geführt, um die spezifische Art jeder Instruktion und die Funktions-Einheit-Erfordernisse zu identifizieren. Acht Vektoren werden über Steuerleitungen 506 geführt, um die Register-Referenzen zu spezifizieren, die durch jede der acht anhängigen Instruktionen verwendet werden. Diese Vektoren werden vor dem Ende des Prozessor-Zyklus eins zugeführt.
  • 2) Detail der Übertragungs-Prüfungs-Einheit:
  • Die Übertragungs-Prüfungs-Einheit 492 arbeitet parallel zu der Abhängigkeits-Prüfungs-Einheit 494 während der Daten-Abhängigkeits-Phase der Operation, dargestellt in 14. Die Übertragungs-Prüfungs-Einheit 492 wird in der bevorzugten Architektur 100 als reine, kombinatorische Logik ausgeführt. Demzufolge werden während jeder Iteration der Operation durch die Übertragungs-Prüfungs-Einheit 492 alle acht Instruktionen in Bezug darauf berücksichtigt, ob sie das Übertragungs-Zeichen des Prozessor-Zustands-Registers modifizieren. Dies ist notwendig, um die Ausführung außerhalb der Reihenfolge der Instruktion zu ermöglichen, die von dem Zustand des Übertragungs-Bits abhängig ist, wie es durch die frühere Instruktion eingestellt ist. Steuersignale, die auf den Steuerleitungen 504 geführt werden, ermöglichen, daß die Übertragungs-Prüfungs-Einheit 492 die spezifischen Instruktionen zuläßt, die von der Ausführung vorheriger Instruktionen in Bezug auf das Übertragungs-Zeichen abhängig sind.
  • Zusätzlich hält die Übertragungs-Prüfungs-Einheit 492 eine temporäre Kopie der Übertragungs-Bits für jede der acht anhängigen Instruktionen aufrecht. Für solche Instruktionen, die nicht das Übertragungs-Bit modifizieren, propagiert die Übertragungs-Prüfungs-Einheit 492 das Übertragungs-Bit zu der nächsten Instruktion weiter in der Reihenfolge der Programm-Insruktionsfolge. Demzufolge kann eine außerhalb der Reihenfolge ausgeführte Instruktion, die das Übertragungs-Bit modifiziert, ausgeführt werden, und weiterhin kann auch ermöglicht werden, eine darauffolgende Instruktion, die von einer solchen au ßerhalb der Reihenfolge ausgeführten Instruktion abhängig ist, auszuführen, und zwar auf die Instruktion folgend, die das Übertragungs-Bit modifiziert. Weiterhin erleichtert die Beibehaltung des Übertragungs-Bits durch die Übertragungs-Prüfungs-Einheit 492 eine Ausführung außerhalb der Reihenfolge dahingehend, daß irgendeine Ausnahme, die vor der Ablage solcher Instruktionen auftritt, nur erfordert, daß die Übertragungs-Prüfungs-Einheit 492 das interne, temporäre Übertragungs-Bit-Register löscht. Demzufolge ist das Prozessor-Status-Register durch die Ausführung von Instruktionen, die außerhalb der Reihenfolge ausgeführt sind, unbeeinflußt. Das Temporär-Bit-Übertragungs-Register, das durch die Übertragungs-Prüfungs-Einheit 492 aufrechterhalten wird, wird unter Abschluß jeder außerhalb der Reihenfolge ausgeführten Instruktion aktualisiert. Unter Ablage von außerhalb der Reihenfolge ausgeführten Instruktionen wird das Übertragungs-Bit entsprechend der letzten, abgelegten Instruktion in der Programm-Instruktions-Folge zu der Übertragungs-Bit-Stelle des Prozessor-Status-Registers übertragen.
  • 3) Detail der Daten-Abhängigkeits-Prüfungs-Einheit:
  • Die Daten-Abhängigkeits-Prüfungs-Einheit 494 empfängt die acht Register-Referenz-Identifikations-Vektoren von der EDecodiereinheit 490 über die Steuerleitungen 506. Jede Register-Referenz wird durch einen Fünf-Bit-Wert angezeigt, der zum Identifizieren eines der 32 Register zu einem Zeitpunkt geeignet ist, und einem Zwei-Bit-Wert, der die Register-Bank identifiziert, wie sie innerhalb der "A", "B" oder Boolschen Registersätze angeordnet sind. Der Fließkomma-Register-Satz ist äquivalent identifiziert als der "B" Register-Satz. Jede Instruktion kann bis zu drei Register-Referenz-Felder haben; zwei Source- bzw. Quellen-Register-Felder und eine Bestimmung. Obwohl einige Instruktionen, wobei besonders die Instruktionen der Bewegung von Register zu Register anzuführen sind, ein Bestimmungs-Register identifizieren können, kann ein Instruktions-Bit-Feld, das durch die EDecodiereinheit 490 erkannt ist, signalisieren, daß keine aktuellen Ausgangs-Daten produziert werden sollen. Im Gegensatz dazu dient eine Ausführung der Instruktion nur zu dem Zweck einer Bestimmung einer Änderung des Werts des Prozessor-Status-Registers.
  • Die Daten-Abhängigkeits-Prüfungs-Einheit 494, ausgeführt wiederum als reine, kombinatorische Logik in der bevorzugten Architektur 100, arbeitet so, um simultan Abhängigkeiten zwischen Quellen-Register-Referenzen der Instruktionen, in der Programm-Instruktions-Folge folgend, und Bestimmung-Register-Referenzen von relativ früheren Instruktionen zu bestimmen. Ein Bit-Feld wird durch die Daten-Abhängigkeits-Prüfungs- Einheit 494 erzeugt, das nicht nur identifiziert, welche Instruktionen von anderen abhängig sind, sondern auch die Register, von denen jede Abhängigkeit entsteht.
  • Die Übertragungs- und Register-Daten-Abhängigkeiten werden kurz nach dem Beginn des zweiten Prozessor-Zyklus identifiziert.
  • 4) Detail der Register-Umbenennungs-Einheit:
  • Die Register-Umbenennungs-Einheit 496 empfängt die Identifikation der Register-Referenzen aller acht anhängigen Instruktionen über die Steuerleitungen 506 und Register-Abhängigkeiten über die Steuerleitungen 508. Eine Matrix aus acht Elementen wird auch über die Steuerleitungen 542 empfangen, die solche Instruktionen innerhalb des momentanen Satzes von anhängigen Instruktionen identifizieren, die ausgeführt worden sind (erledigt sind). Aus diesen Informationen liefert die Register-Umbenennungs-Einheit 496 ein Acht-Element-Feld aus Steuersignalen zu der Instruktions-Ausgabe-Einheit 498 über die Steuerleitungen 512. Die Steuerinformationen, die so geliefert sind, reflektieren die Bestimmung, die durch die Register-Umbenennungs-Einheit 496 vorgenommen ist, dahingehend, welche momentan anhängigen Instruktionen, die bereits ausgeführt worden sind, nun verfügbar sind, um ausgeführt zu werden, unter Vorgabe des momentanen Satzes von identifizierten Daten-Abhängigkeiten. Die Register-Umbenennungs-Einheit 496 empfängt ein Auswahl-Steuersignal über die Leitung 516, das bis zu sechs Instruktionen identifiziert, die simultan zur Ausführung ausgegeben werden sollen: zweimal ganzzahlige, zweimal Fließkomma und zweimal Boolsche.
  • Die Register-Umbenennungs-Einheit 496 führt die zusätzliche Funktion einer Auswahl, über Steuersignale durch, die auf dem Bus 518 zu dem Register-Datei-Feld 472, dem Source-Register zum Zugriff bei der Ausführung der identifizierten Instruktionen, geliefert sind. Bestimmungs-Register für außerhalb der Reihenfolge ausgeführte Instruktionen werden so ausgewählt, daß sie in den temporären Puffern 612, 680, 728 des entsprechenden Datenpfads vorhanden sind. Die außerhalb der Reihenfolge ausgeführten Instruktionen werden beim Abschluß abgelegt, wobei die Ergebnis-Daten über die Register-Dateien 614, 684, 732 gespeichert werden. Die Auswahl von Quellen-Registern hängt davon ab, ob das Register zuvor als eine Bestimmung ausgeführt worden ist und die entsprechende frühere Instruktion bis jetzt nicht abgelegt worden ist. In einem solchen Fall wird das Source-Register von dem entsprechenden, temporären Puffer 612, 684, 728 ausgewählt. Dort, wo die frühere Instruktion abgelegt worden ist, wird dann das Register der entsprechenden Register-Datei 614, 684, 732 ausgewählt. Demzufolge arbeitet die Register-Umbenennungs-Einheit 496 so, um effektiv temporäre Puffer-Register-Referenzen für Register-Datei-Register-Referenzen in dem Fall von außerhalb der Reihenfolge ausgeführten Instruktionen zu substituieren.
  • Die temporären Puffer 612, 680, 728, wie sie in der Architektur 100 aufgeführt sind, sind keine Duplikat-Register-Strukturen deren entsprechender Register-Datei-Felder. Im Gegensatz dazu wird ein einzelner Bestimmungs-Register-Schlitz für jede der acht anhängigen Instruktionen vorgesehen. Demzufolge wird die Substitution einer temporären Puffer-Bestimmungs-Register-Referenz durch die Stelle der entsprechenden Instruktion innerhalb der anhängigen Registersätze bestimmt. Eine darauffolgende Quellen-Register-Referenz wird durch die Daten-Abhängigkeits-Prüfeinrichtung 494 in Bezug auf die Instruktion identifiziert, von der die Quellen-Abhängigkeit auftritt. Deshalb ist ein Bestimmungs-Schlitz in dem temporären Puffer-Register leicht durch die Register-Umbenennungs-Einheit 496 bestimmbar.
  • 5) Detail der Instruktions-Ausgabeeinrichtungs-Einheit:
  • Die Instruktions-Ausgabeeinrichtungs-Einheit 498 bestimmt den Satz von Instruktionen, die ausgegeben werden können, basierend auf dem Ausgang der Register-Umbenennungs-Einheit 496 und den Funktions-Erfordernissen der Instruktionen, wie sie durch die EDecodiereinheit 490 identifiziert sind. Die Instruktions-Ausgabeeinrichtungs-Einheit 498 nimmt diese Bestimmung basierend auf dem Status jeder der funktionalen Einheiten 4780–n vor, wie dies über die Leitungen 514 berichtet wird. Demzufolge beginnt die Instruktions-Ausgabeeinrichtungs-Einheit 498 eine Operation unter Empfang des verfügbaren Satzes von Instruktionen, um von der Register-Umbenennungs-Einheit 496 aus auszugeben. Unter der Annahme, daß ein Register-Datei-Zugriff für die Ausführung jeder Instruktion erforderlich ist, erkennt die Instruktions-Ausgabeeinrichtungs-Einheit 498 die Verfügbarkeit einer funktionalen Einheit 4780–n , die momentan eine Instruktion ausführen kann. Um die Verzögerung beim Identifizieren der Instruktionen, die zu der Register-Umbenennungs-Einheit 496 ausgegeben werden sollen, zu minimieren, wird die Instruktions-Ausgabeeinrichtungs-Einheit 498 in einer zugeordneten, kombinatorischen Logik ausgeführt.
  • Unter Identifikation der Instruktionen, um sie auszugeben, initiiert die Register-Umbenennungs-Einheit 496 einen Register-Datei-Zugriff, der an dem Ende des dritten Prozessor-Zyklus, P2, fortfährt. Zu Beginn des Prozessor-Zyklus P3 initiiert die Instruktions-Ausgabeeinrichtungs-Einheit 498 eine Operation durch eine oder mehrere der funktionalen Einheiten 4780–n , wie dies beispielsweise als "Führe 0 aus" ( "Execute 0") dargestellt ist, um Quellen-Daten zu empfangen und zu verarbeiten, die von dem Register-Datei-Feld 472 geliefert sind.
  • Typischerweise werden die meisten Instruktionen, die durch die Architektur 100 verarbeitet sind, über eine funktionale Einheit in einem einzelnen Prozessor-Zyklus ausgeführt. Allerdings erfordern mehrfache Prozessor-Zyklen, wie dies beispielsweise als "Führe 1 aus" ("Execute 1") dargestellt ist, eine simultan ausgegebene Instruktion. Die Ausführung-Null- und Ausführung-1-Instruktionen können zum Beispiel durch eine ALU und Fließkomma-Multiplier-Funktional-Einheiten jeweils ausgeführt werden. Die ALU-Funktional-Einheit erzeugt, wie in 14 dargestellt ist, Ausgangs-Daten innerhalb eines Prozessor-Zyklus und durch einfaches Vorsehen einer Ausgangs-Verriegelung, wie dies zur Verwendung beim Ausführen einer anderen Instruktion während des fünften Prozessor-Zyklus, P4, verfügbar ist. Die Fließkomma-Multiplizier-Funktional-Einheit ist vorzugsweise eine intern im Pipeline-System verarbeitende Funktional-Einheit. Deshalb kann eine andere, zusätzliche Fließkomma-Multiplizier-Instruktion in dem nächsten Prozessor-Zyklus ausgegeben werden. Allerdings wird das Ergebnis der ersten Instruktion nicht für eine datenabhängige Anzahl von Prozessor-Zyklen verfügbar sein; die Instruktion, die in 14 dargestellt ist, erfordert drei Prozessor-Zyklen, um die Verarbeitung durch die Funktional-Einheit abzuschließen.
  • Während jedes Prozessor-Zyklus wird die Funktion der Instruktions-Ausgabeeinrichtungs-Einheit 498 wiederholt. Demzufolge werden der Status des momentanen Satzes von anhängigen Instruktionen ebenso wie der verfügbare Zustand des vollen Satzes von Funktional-Einheiten 4780–n erneut während jedes Prozessor-Zyklus evaluiert. Unter optimalen Bedingungen ist die bevorzugte Architektur 100 deshalb in der Lage, bis zu sechs Instruktionen pro Prozessor-Zyklus auszuführen. Allerdings wird sich ein typischer Instruktions-Mix in einer gesamten, durchschnittlichen Ausführung von 1,5 bis 2,0 Instruktionen pro Prozessor-Zyklus ergeben.
  • Eine abschließende Betrachtung in der Funktion der Instruktions-Ausgabe-Einrichtung 498 ist deren Partizipierung bei der Handhabung von Trap-Zuständen und der Ausführung spezifischer Instruktionen. Das Auftreten eines Trap-Zustands erfordert, daß die IEU 104 von allen Instruktionen gelöscht wird, die nicht bis jetzt abgelegt worden sind. Ein solcher Umstand kann in Abhängigkeit einer extern empfangenen Unterbrechung entstehen, die zu der IEU 104 in Bezug gesetzt ist, über die Unterbrechungs-Anforderungs/Kenntnis-Steuerleitung 340 von irgendeiner der Funktional-Einheiten 4780–n in Abhängigkeit eines arithmetischen Fehlers, oder, zum Beispiel, der EDecodiereinheit 490 beim Decodieren einer illegalen Instruktion überträgt. Bei dem Auftreten des Trap-Zustands ist die Instruktions-Ausgabeeinrichtungs-Einheit 498 für ein Halten oder Leeren aller nicht abgelegter Instruktionen, die momentan in der IEU 104 anhängig sind, verantwortlich. Alle Instruktionen, die nicht simultan abgelegt werden können, werden geleert. Dieses Ergebnis ist wesentlich, um die Präzision des Auftretens der Unterbrechung hinsichtlich der herkömmlichen Ausführung in Reihenfolge einer Programm-Instruktions-Folge beizubehalten. Wenn einmal die IEU 104 bereit ist, eine Ausführung des Trap-Handhabungs-Programms zu beginnen, bestätigt die Instruktions-Ausgabe-Einrichtung 498 die Unterbrechung über ein Rückführ-Steuersignal entlang der Steuerleitungen 340. Auch kann, um die Möglichkeit zu vermeiden, daß ein Ausnahme-Zustand relativ zu einer Instruktion basierend auf einem Prozessor-Status-Bit erkannt werden kann, das geändert worden wäre, bevor die Instruktion in dem klassischen, reine Programm in Reihenfolge ausgeführt worden wäre, die Instruktions-Ausgabe-Einrichtung 498 dafür verantwortlich sein, sicherzustellen, daß alle Instruktionen, die das PSR ändern können (wie beispielsweise ein spezielles Bewegen und Rückführen von einer Trap) strikt in Reihenfolge ausgeführt werden.
  • Bestimmte Instruktionen, die einen Programm-Steuerfluß ändern, werden nicht durch die IDecodiereinheit 262 identifiziert. Instruktionen dieses Typs umfassen Unterprogramm-Rückführungen, Rückführungen von prozeduralen Instruktionen und Rückführungen von Traps. Die Instruktions-Ausgabeeinrichtungs-Einheit 498 liefert identifizierende Steuersignale über die IEU-Rückführungs-Steuerleitung 350 zu der IFI 102. Ein entsprechendes eine der speziellen Register 412 wird ausgewählt, um die IF_PC Ausführungs-Adresse, die an dem Punkt zum Zeitpunkt der Aufruf-Instruktion existiert, dem Auftreten der Trap oder dem Vorfinden einer prozeduralen Instruktion existiert.
  • 6) Detail der Erledigt-Steuereinheit:
  • Die Erledigt-Steuereinheit 540 überwacht die funktionalen Einheiten 4780–n hinsichtlich des Abschluß-Status deren momentaner Operation. In der bevorzugten Architektur 100 erwartet die Erledigt-Steuereinheit 540 den Abschluß von Operationen durch jede funktionale Einheit, die ausreichend sind, um einen Abschluß-Vektor zu liefern, der den Status der Ausführung jeder Instruktion in dem momentan anhängigen Satz von Instruktionen reflektiert, und zwar zu der Register-Umbenennungs-Einheit 496, der Bypass-Steuereinheit 520 und der Ablage-Steuereinheit 500, und zwar ungefähr einen halben Prozessor-Zyklus vor dem Ausführungs-Abschluß einer Instruktion durch eine funktionale Einheit 4780–n . Dies ermöglicht, daß die Instruktions-Ausgabeeinrichtungs-Einheit 498, über die Register-Umbenennungs-Einheit 496, die Instruktions-Abschluß-Funktional-Einheiten als verfügbare Ressourcen für den nächsten Instruktions-Ausgabe-Zyklus berücksichtigt. Die Bypass-Steuereinheit 520 ermöglicht, eine Daten-Ausgabe durch die Funktional-Einheit über die Bypass-Einheit 474 im Bypass zu präparieren. Abschließend kann die Ablage-Steuereinheit 500 so arbeiten, um die entsprechende Instruktion simultan zu der Übertragung von Daten in der Funktional-Einheit 4780–n zu dem Register-Datei-Feld 472 abzulegen.
  • 7) Detail der Ablage-Steuereinheit:
  • Zusätzlich zu dem Instruktions-Erledigt-Vektor, der von der Erledigt-Steuereinheit 540 geliefert wird, überwacht die Ablage-Steuereinheit 500 den ältesten Instruktions-Satz, der von dem EDecodier-Ausgang 490 ausgegeben ist. Da jede Instruktion in der Instruktions-Folge-Reihenfolge als erledigt durch die Erledigt-Steuereinheit 540 markiert wird, richtet die Ablage-Steuereinheit 500, über Steuersignale, die auf den Steuerleitungen 534 geliefert werden, die Übertragung von Daten von dem Temporär-Puffer-Schlitz zu der entsprechenden, durch die Instruktion spezifizierten Register-Datei-Register-Stelle innerhalb des Register-Datei-Felds 472. Die PC-Inc/Size-Steuersignale werden auf den Steuersignalen 344 für jede eine oder mehrere Instruktionen) geliefert, die simultan abgelegt sind. Bis zu vier Instruktionen können pro Prozessor-Zyklus abgelegt werden. Wenn ein gesamter Instruktions-Satz abgelegt worden ist, wird ein IFIFO-Lese-Daten-Signale auf der Steuerleitung 342 geliefert, um es zu der IFIFO 264 weiterzuleiten.
  • 8) Detail der Steuerfluß-Steuereinheit:
  • Die Steuerfluß-Steuereinheit 528 arbeitet so, um kontinuierlich die IFO 102 mit Informationen zu versorgen, die spezifizieren, ob irgendeine Steuer-Instruktion innerhalb des momentanen Satzes von anhängigen Instruktionen aufgelöst worden ist, und weiterhin, ob das Verzweigungs-Ergebnis genommen ist oder nicht genommen ist. Die Steuerfluß- Steuereinheit 528 erhält, über Steuerleitungen 510, eine Identifikation der Steuerfluß-Verzweigungs-Instruktionen durch die EDecodiereinheit 490. Der momentane Satz von Register-Abhängigkeiten wird über Steuerleitungen 536 von der Daten-Abhängigkeits-Prüfeinrichtungs-Einheit 494 zu der Steuerfluß-Steuereinheit 528 zugeführt, um zu ermöglichen, daß die Steuerfluß-Steuereinheit 528 bestimmt, ob die Ausgabe einer Verzweigungs-Instruktion durch Abhängigkeiten eingeschränkt ist oder nun bekannt ist. Die Register-Referenzen, die über den Bus 518 von der Register-Umbenennungs-Einheit 496 geliefert werden, werden durch die Steuerfluß-Steuereinheit 528 überwacht, um das Boolsche Register zu identifizieren, das die Verzweigungs-Entscheidung definieren wird. Demzufolge kann die Verzweigungs-Entscheidung sogar vor der Ausführung außerhalb der Reihenfolge der Steuerfluß-Instruktion bestimmt werden.
  • Simultan mit der Ausführung einer Steuerfluß-Instruktion wird die Bypass-Einheit 472 durch die Bypass-Steuereinheit 520 so geführt, um die Steuerfluß-Ergebnisse auf Steuerleitungen 530, die aus den Steuerfluß-Null- und Steuerfluß-Eins-Steuerleitungen 750, 752 bestehen, zu der Steuerfluß-Steuereinheit 528 zuzuführen. Abschließend liefert die Steuerfluß-Steuereinheit 528 kontinuierlich zwei Vektoren von acht Bits jeweils zu der IEU 102 über Steuerleitungen 348. Diese Vektoren definieren, ob eine Verzweigungs-Instruktion an der entsprechenden logischen Stelle entsprechend zu den Bits innerhalb der Vektoren aufgelöst worden sind, und ob das Verzweigungs-Ergebnis herangezogen ist oder nicht herangezogen ist.
  • In der bevorzugten Architektur 100 wird die Steuerfluß-Steuereinheit 528 als reine kombinatorische Logik ausgeführt, die kontinuierlich in Abhängigkeit der Eingangs-Steuersignale arbeitet, und zwar zu der Steuereinheit 528.
  • 9) Detail der Bypass-Steuereinheit:
  • Die Instuktions-Ausgabeeinrichtungs-Einheit 498 arbeitet eng in Verbindung mit der Bypass-Steuereinheit 520 um die Führung von Daten zwischen dem Register-Datei-Feld 472 und den funktionalen Einheiten 4780–n zu steuern. Die Bypass-Steuereinheit 520 arbeitet in Verbindung mit dem Register-Datei-Zugriff, der Ausgabe und den Speicherpfaden der Operation, dargestellt in 14. Während eines Register-Datei-Zugriffs kann die Bypass-Steuereinheit 520, über Steuerleitungen 522, einen Zugriff eines Bestimmungs-Registers innerhalb des Register-Datei-Felds 472 erkennen, das sich in dem Vorgang befindet, während der Ausgabephase der Ausführung einer Instruktion geschrieben zu wer den. In diesem Fall richtet die Bypass-Steuereinheit 520 die Auswahl von Daten, die auf dem Funktional-Einheit-Ausgangs-Bus 482 geliefert sind, so, daß sie im Bypass zurück zu dem Funktional-Einheit-Verteilungsbus 480 geführt werden. Eine Steuerung über die Bypass-Steuereinheit 520 wird durch die Instruktions-Ausgabeeinrichtungs-Einheit 498 über Steuerleitungen 542 geliefert.
  • IV. Steuereinheit des virtuellen Speichers:
  • Eine Schnittstellen-Definition für die VMU 108 ist in 15 angegeben. Die VMU 108 besteht prinzipiell aus einer VMU-Steuer-Logik-Einheit 800 und einem bezüglich des Inhalts adressierbaren Speicher (CAM) 802. Die allgemeine Funktion der VMU 108 ist graphisch in 16 dargestellt. Dort ist eine Darstellung einer virtuellen Adresse dargestellt, die in einen Raum-Identifizierer (SID[31:28]), eine virtuelle Seiten-Zahl (VADDR[27:14]), einen Seiten-Offset (PADDR[13:4]), und eine Anforderungs-ID (rID[3:0]) darstellt. Der Algorithmus zum Erzeugen einer physikalischen Adresse ist derjenige, den Raum-ID zu verwenden, um eines von 16 Registern innerhalb einer Raum-Tabelle 842 auszuwählen. Die Inhalte des Registers des ausgewählten Raums in Kombination mit einer virtuellen Seiten-Zahl werden als eine Adresse zum Zugreifen auf einen Tabellen-Durchsichts-Neben-Puffer (TLB) 844 verwendet. Die 32-Bit-Adresse arbeitet als ein Inhalt-Adressen-Zeichen, das dazu verwendet wird, ein entsprechendes Puffer-Register innerhalb des Puffers 844 zu identifizieren. Bei dem Auftreten einer Zeichen-Anpassung wird ein 18-Bit breiter Register-Wert als die 18 Bits hoher Ordnung einer physikalischen Adresse 846 geliefert. Die Seiten-Offset- und Anforderungs-ID wird als die 14 Bits niedriger Ordnung der physikalischen Adresse 846 geliefert.
  • Dort, wo ein Zeichen-Fehlen in dem Tabellen-Durchsichts-Neben-Puffer 844 vorhanden ist, wird ein Fehlen einer VMU signalisiert. Dies erfordert die Ausführung eines VMU-Schnell-Trap-Handhabungs-Programms, das einen herkömmlichen Hash-Algorithmus 848 ausführt, der auf eine vollständige Seiten-Tabellen-Daten-Struktur zugreift, die in der MAU 112 beibehalten wird. Diese Seiten-Tabelle 850 enthält Eintritte für alle Speicher-Seiten, die momentan durch die Architektur 100 in Verwendung sind. Der Hash-Algorithmus 848 identifiziert solche Eintritte in die Seiten-Tabelle 850, die notwendig sind, um die momentane, virtuelle Seiten-Translation-Operation zufriedenzustellen. Diese Seiten-Tabellen- Eintritte werden von der MAU 112 zu den Trap-Registern einer Register-Satzes "A" geladen und dann durch spezielle Register-Bewegungs-Instruktionen zu dem Tabellen-Durchsichts-Neben-Puffer 844 übertragen. Unter Rückkehr von dem Ausführungs-Handhabungs-Programm wird die Instruktion, die Anlaß zu der VMU-Fehl-Ausnahme gibt, erneut durch die IEU 104 ausgeführt. Die Translations-Operation von der virtuellen zu der physikalischen Adresse sollte dann ohne Ausnahme abschließen.
  • Die VMU-Steuer-Logik 800 liefert eine Dual-Schnittstelle zu sowohl der IFU 102 als auch der IEU 104. Ein Bereitschafts-Signal wird auf Steuerleitungen 822 zu der IEU 104 zugeführt, um anzuzeigen, daß die VMU 108 für eine Adressen-Translation verfügbar ist. In der bevorzugten Ausführungsform ist die VMU 108 immer bereit, Translations-Anforderungen der IFU 120 zu akzptieren. Sowohl die IFU als auch die IEU 102, 104 können Anforderungen über Stuerleitungen 328, 804 ausgeben. In der bevorzugten Architektur 100 besitzt die IFU 102 eine Prioritäts-Zugriff auf die VMU 108. Demzufolge wird nur eine einzelne Belegt-Steuerleitung 820 zu der IEU 104 vorgesehen.
  • Sowohl die IFU als auch die IEU 102, 104 liefern die Raum-ID und die virtuellen Seiten-Zahl-Felder zu der VMU-Steuer-Logik 800 über Steurleitungen 326, 808 jeweils. Zusätzlich liefert die IEU 104 ein Lese/Schreib-Steuersignal über das Steuersignal 806, um zu definieren, ob die Adresse für einen Lade- oder Speicher-Vorgang verwendet werden soll, wie dies notwendig ist, um Speicher-Zugriff-Schutz-Attribute des virtuellen Speichers, auf den Bezug genommen ist, zu modifizieren. Die Raum-ID- und virtuellen Seiten-Felder der virtuellen Adresse werden zu der CAM-Einheit 802 zugeführt, um den tatsächlichen Translations-Vorgang durchzuführen. Die Seiten-Offset- und ExID-Felder werden letztendlich durch die IEU 104 direkt zu der CCU 106 geführt. Die physikalischen Seiten- und Anforderungs-ID-Felder werden auf den Adress-Leitungen 836 zu der CAM-Einheit 802 zugeführt. Das Auftreten einer Tabellen-Durchsichts-Neben-Puffer-Anpassung wird über die Treffer-Leitung und die Steuer-Ausgangs-Leitungen 830 zu der VMU-Steuer-Logik-Einheit 800 signalisiert. Die sich ergebende physikalische Adresse, 18 Bits in der Länge, wird auf den Adressen-Ausgangsleitungen 824 zugeführt.
  • Die VMU-Steuer-Logik-Einheit 800 erzeugt die virtuellen Speicher-Fehl- und virtuellen Speicher-Ausnahme-Steuersignale auf Leitungen 334, 332 in Abhängigkeit der Treffer- und Steuer-Ausgangs-Steuersignale auf den Leitungen 830. Ein virtuelles Speicher-Translations-Fehlen wird als der Fehler definiert, einen Seiten-Tabellen-Identifizierer in dem Tabellen-Durchsichts-Neben-Puffer 844 anzupassen. Alle anderen Translations-Fehler werden als virtuelle Speicher-Ausnahmen berichtet.
  • Abschließend können die Daten-Tabellen innerhalb der CAM-Einheit 802 über die Ausführung von Bewegungs-Instruktionen von einem speziellen Register zu einem Register durch die IEU 104 modifiziert werden. Lese/Schreib-, Register-Auswahl-, Rücksetz- bzw. Reset-, Lade- und Lösch-Steuersignale werden durch die IEU 104 über Steuerleitungen 810, 812, 814, 816, 818 zugeführt. Daten, die zu den CAM-Einheit-Registern hin geschrieben werden sollen, werden durch die VMU-Steuer-Logik-Einheit 800 über den Adressen-Bus 808, der mit dem speziellen Adressen-Daten-Bus 354 verbunden ist, von den IEU 104 erhalten. Diese Daten werden über den Bus 836 zu der CAM-Einheit 802 simultan zu Steuersignalen 828, die die Initialisierung, eine Register-Auswahl und ein Lese- oder Schreib-Steuersignal steuern, übertragen. Demzufolge können die Daten-Register innerhalb der CAM-Einheit 802 leicht so beschrieben werden, wie dies während einer dynamischen Operation der Architektur 100 erforderlich ist, einschließlich eines Auslesens zur Speicherung, wie dies für die Handhabung von Kontext-Umschaltungen erforderlich ist, die durch ein Operations-System eines höheren Niveaus definiert sind.
  • V. Cache-Steuereinheit:
  • Die Steuerung an einer Daten-Schnittstelle für die CCU 106 ist in 17 dargestellt. Wiederum sind separate Schnittstellen für die IFU 102 und die IEU 104 vorgesehen. Weiterhin sind logische, separate Schnittstellen durch die CCU 106 zu der MCU 110 in Bezug auf Instruktions- und Daten-Übertragungen vorgesehen.
  • Die IFU-Schnittstelle besteht aus der physikalischen Seiten-Adresse, die auf Adressen-Leitungen 324 geliefert werden, der durch die VMU konvertierten Seiten-Adresse, wie sie auf den Adressenleitungen 824 geliefert wird, und Anforderungs-IDs, wie sie separat auf Steuerleitungen 294, 296 übertragen werden. Ein unidirektionaler Daten-Übertragungs-Bus 114 ist vorgesehen, um den Eingangs-Instruktions-Satz parallel zu der IFU 102 zu übertragen. Schließlich sind Lese/Belegt- und Bereitschafts-Steuersignale zu der CCU 106 über Steuerleitungen 298, 300, 302 vorgesehen.
  • Ähnlich ist eine vollständige, physikalische Adresse durch die IEU 102 über den physikalischen Adressen-Bus 388 vorgesehen. Die Anforderungs-ExIDs werden separat von und zu der Lade/Speicher-Einheit der IEU 104 über Steuerleitungen 796 geführt. Ein 80 Bit breiter bidirektionaler Daten-Bus wird durch de CCU 106 zu der IEU 104 zugeführt. Allerdings werden in der derzeit bevorzugten Ausführung der Architektur 100 nur die unteren 64 Bits durch die IEU 104 verwendet. Die Verfügbarkeit und die Übertragung innerhalb der CCU 106 eines vollen 80 Bit Daten-Übertragungsbus ist vorgesehen, um darauffolgende Ausführungen der Architektur 100 zu unterstützen bzw. zu tragen, und zwar über Modifikationen eines Fließkomma-Datenpfads 660, einer Fließkomma-Operation entsprechend zu dem IEEE Standard 754.
  • Die IEU-Steuerschnittstelle, gerichtet über Anforderungs-Belegt-, Bereitschafts-, Lese/Schreib- und mit Steuersignalen 784, ist im wesentlichen dieselbe wie die entsprechenden Steuersignale, die durch die IFU 102 verwendet sind. Die Ausnahme ist die Vorsehung eines Lese/Schreib-Steuersignals, um zwischen Lade- und Speicher-Vorgängen zu differenzieren. Die breiten Steuersignale spezifizieren die Anzahl vyn Bytes, die während jedes Zugriffs der CCU 106 durch die IEU 104 übertragen werden sollen; im Gegensatz dazu ist jeder Zugriff des Instruktions-Cache 134 ein festgelegter 128 Bit breiter Daten-Abruf-Vorgang.
  • Die CCU 106 führt eine im wesentlichen herkömmliche Cache-Steuer-Einrichtungs-Funktion in Bezug auf die separaten Instruktions- und Daten-Cache-Speicher 132, 134 aus. In der bevorzugten Architektur 100 ist der Instruktions-Cache 132 ein Hochgeschwindigkeitsspeicher, der für die Speicherung von 256 an 128 Bit breiten Speicher-Instruktions-Sätzen dient. Der Daten-Cache 134 dient zur Speicherung von 1024 an 32 Bit breiten Worten aus Daten. Die Instruktions-Daten-Anforderung, die nicht unmittelbar auf den Inhalten der Instruktions-Daten-Cache-Speichern 132, 134 erfüllt werden können, werden weiter zu der MCU 110 geführt. Für ein Instruktions-Cache-Fehlen wird die 28 Bit breite physikalische Adresse zu der MCU 110 über den Adressen-Bus 860 zugeführt. Die Anforderungs-ID und zusätzliche Steuersignale zur Koordination der Operation der CCU 106 und der MCU 110 werden auf Steuerleitungen 862 zugeführt. Wenn die MCU 110 einmal den notwendigen Lese-Zugriff der MAU 112 koordiniert hat, werden die aufeinanderfolgenden 64 Bit breiten Daten-Übertragungen direkt von der MAU 112 über den Instruktions-Cache 132 durchgeführt. Zwei Übertragungen sind erforderlich, unter der Maßgabe, daß der Daten-Bus 136, und zwar in der bevorzugten Architektur 100, ein 64 Bit breiter Bus ist. Wenn die angeforderten Daten über die MCU 110 zurückgeführt werden, wird die Anforderungs-ID, die während der Anhängigkeit der Anforderungs-Operation zurückgeführt wird, auch zu der CCU 106 über die Steuerleitungen 862 zurückgeführt.
  • Die Daten-Transfer-Operationen zwischen dem Daten-Cache 143 und der MCU 110 sind im wesentlichen dieselben wie die Instruktions-Cache-Operation. Da Daten-Lade- und -Speicher-Operationen auf ein einzelnes Byte Bezug nehmen können, wird eine volle, 32 Bit breite, physikalische Adresse zu der MCU 110 über den Adressen-Bus 864 zugeführt. Schnittstellen-Steuersignale und die Anforderungs-ExID werden über Steuerleitungen 836 übertragen. Bidirektionale, 64 Bit breite Daten-Übertragungen werden über den Daten-Cachebus 138 zugeführt.
  • VI. Zusammenfassung/Schlußfolgerung:
  • Demzufolge ist eine auf einem Hochleistungs-RISC basierende Mikroprozessor-Architektur offenbart worden. Die Architektur führt effektiv eine Ausführung von Instruktionen außerhalb der Reihenfolge, separate Haupt- und Ziel-Instruktions-Folge-Vorababruf-Instruktions-Übertragungs-Pfade und eine prozedurale Instruktions-Erkennung und einen zugeordneten Vorababruf-Pfad aus. Die optimierte Instruktions-Ausführungs-Einheit schafft mehrfache, optimierte Daten-Verarbeitungs-Pfade, die Ganzzahl-, Fließkomma- und Boolsche Operationen unterstützen, und setzt jeweilige temporäre Register-Dateien ein, die eine Ausführung und Instruktions-Aufhebung außerhalb der Reihenfolge erleichtern, während ein leicht eingerichteter, präziser Status über den Zustand der Maschine beibehalten wird.
  • Es sollte deshalb verständlich werden, dass, während die vorstehende Offenbarung die bevorzugte Ausführungsform der vorliegenden Erfindung beschreibt, andere Variationen und Modifikationen leicht durch Fachleute auf dem betreffenden Fachgebiet innerhalb des Schutzumfangs der vorliegenden Erfindung vorgenommen werden können.

Claims (28)

  1. Verfahren zum Verarbeiten von Daten in einem Mikroprozessorsystem (100), das die Schritte aufweist: Abrufen einer Mehrzahl von Instruktionen von einer Quelle (132) von Instruktionen entsprechend einer spezifizierten, sequenziellen Programmreihenfolge; temporäres Speichern der Mehrzahl von Instruktionen in einen Puffer (264) hinein, wobei der Puffer mindestens zwei der Mehrzahl der Instruktionen hält; gleichzeitiges Decodieren einer Mehrzahl der gepufferten Instruktionen für eine Ausführung; Ausgeben, aus der spezifizierten, sequenziellen Programmreihenfolge, von mehr als einem der decodierten Instruktionen für eine Ausführung, wobei jede der Instruktionen durch eine separate eine einer Mehrzahl von funktionalen Einheiten (478) ausgeführt werden soll; Ausführen der mehr als einen der ausgegebenen Instruktionen aus der spezifizierten, sequenziellen Programmreihenfolge, um Ausführungsergebnisse zu erzeugen; Speichern von Ausführungsergebnissen, die sich außerhalb der Reihenfolge (Out-Of-Order) befinden, in temporären Registern (552); und Ablegen der ausgeführten Instruktionen entsprechend der spezifizierten, sequenziellen Programmreihenfolge durch Speichern von Ergebnissen von den temporären Registern zu einem Registerfeld (554).
  2. Verfahren nach Anspruch 1, wobei der Ablageschritt umfasst, dass bewirkt wird, dass bis zu vier Instruktionen in einem Prozessorzyklus abgelegt werden.
  3. Verfahren nach Anspruch 1 oder 2, wobei der Ausgabeschritt umfasst, dass bewirkt wird, dass bis zu vier Instruktionen in einem Prozessorzyklus ausgegeben werden.
  4. Verfahren nach einem der Ansprüche 1 bis 3, wobei der Ausgabeschritt ein Ausgeben von vier oder mehr Instruktionen in einem einzelnen Prozessorzyklus umfasst.
  5. Verfahren nach einem der Ansprüche 1 bis 4, wobei das temporäre Speichern der Instruktionen in einem Pufferschritt ein Speichern der Instruktionen in ersten und zweiten Registern aufweist, wobei jedes der Register gleichzeitig gepufferte Instruktionen für ein Decodieren liefern kann.
  6. Verfahren nach Anspruch 5, wobei jedes der Register gleichzeitig einen Satz von vier gepufferten Instruktionen für ein Decodieren liefern kann.
  7. Verfahren nach einem der Ansprüche 1 bis 6, wobei der gleichzeitige Decodierschritt eine Mehrzahl der gepufferten Instruktionen für eine Ausgabe durch den Ausgabeschritt in einem Prozessorzyklus liefert.
  8. Mikroprozessorsystem zum Verarbeiten von Daten, das aufweist: eine Einrichtung (266) zum Abrufen einer Mehrzahl von Instruktionen von einer Quelle von Instruktionen entsprechend einer spezifizierten, sequenziellen Programmreihenfolge; eine Puffereinrichtung (264) zum temporären Speichern der Mehrzahl der Instruktionen, wobei die Puffereinrichtung mindestens zwei der Mehrzahl der Instruktionen hält; eine Einrichtung (490) zum gleichzeitigen Decodieren einer Mehrzahl der gepufferten Instruktionen für eine Ausführung; eine Einrichtung (498) zum Ausgeben aus der spezifizierten, sequenziellen Programmreihenfolge von mehr als einer der decodierten Instruktionen für eine Ausführung, wobei jede der Instruktionen durch eine separate eine einer Mehrzahl von funktionalen Einheiten ausgeführt werden soll; eine Einrichtung (478) zum Ausführen der mehr als einen der ausgegebenen Instruktionen aus der spezifizierten, sequenziellen Programmreihenfolge, um dadurch Ausführungsergebnisse zu erzeugen; eine Speichereinrichtung (472, 552) zum temporären Speichern von sich außerhalb der Reihenfolge befindlichen Ausführungsergebnissen von der Ausführungseinrichtung; und eine Einrichtung (500) zum Ablegen der ausgeführten Instruktionen entsprechend der spezifizierten, sequenziellen Programmreihenfolge durch Speichern von Ergebnissen von der Speichereinrichtung zu einem Registerfeld (554).
  9. Mikroprozessorsystem nach Anspruch 8, das ein Superscaler-Mikroprozessor ist.
  10. Mikroprozessorsystem nach Anspruch 8 oder 9, wobei die Quelle von Instruktionen ein Instruktionsspeicher (132) ist.
  11. Mikroprozessorsystem nach einem der Ansprüche 8 bis 10, wobei die Speichereinrichtung temporäre Register (552) zum Speichern der Ergebnisse von der Ausführungseinrichtung aufweist.
  12. Mikroprozessorsystem nach den Ansprüchen 8 bis 11, wobei die Speichereinrichtung weiterhin das Registerfeld aufweist.
  13. Mikroprozessorsystem nach einem der Ansprüche 8 bis 12, das weiterhin aufweist: eine Buseinrichtung (480) zum Vorsehen mehrerer Daten-Routing-Pfade zwischen der Speichereinrichtung und der Mehrzahl funktionaler Einheiten zum gleichzeitigen Zuführen von Daten zu mehr als einer der funktionalen Einheiten und um dadurch eine gleichzeitige Ausführung von mehr als einer der ausgegebenen Instruktionen durch die Mehrzahl funktionaler Einheiten zu ermöglichen.
  14. Mikroprozessorsystem nach einem der Ansprüche 8 bis 13, wobei die Ablageeinrichtung so angeordnet ist, um zu bewirken, dass die außerhalb der Reihenfolge ausgeführten Instruktionen in der Reihenfolge abgeschlossen werden; und wobei die Ablageeinrichtung bewirkt, dass Datenwerte von den temporären Registern zu dem Registerfeld übertragen werden.
  15. Mikroprozessorsystem nach einem der Ansprüche 8 bis 14, wobei die Ablageeinrichtung dazu geeignet ist, bis zu vier Instruktionen in einem Prozessorzyklus abzulegen.
  16. Mikroprozessorsystem nach einem der Ansprüche 8 bis 15, wobei der Puffer dazu geeignet ist, vier oder mehr Instruktionen zu der Decodiereinrichtung in einem Prozessorzyklus zu liefern.
  17. Mikroprozessorsystem nach einem der Ansprüche 8 bis 16, wobei die Puffereinrichtung erste und zweite Register umfasst, wobei jedes dazu vorgesehen ist, gleichzeitig eine Mehrzahl von Instruktionen zu der Decodiereinrichtung zu liefern.
  18. Mikroprozessorsystem nach Anspruch 17, wobei die ersten und die zweiten Register für ein gleichzeitiges Liefern eines gepufferten Instruktionssatzes von vier Instruktionen zu der Decodiereinrichtung angeordnet sind.
  19. Mikroprozessorsystem nach einem der Ansprüche 8 bis 18, wobei die Ausgabeeinrichtung bis zu vier Instruktionen zu der Ausführungseinrichtung in einem Prozessorzyklus ausgibt.
  20. Mikroprozessorsystem nach einem der Ansprüche 8 bis 19, wobei die Einrichtung zum Abrufen mit einem externen Cache (112) gekoppelt ist.
  21. Mikroprozessorsystem nach einem der Ansprüche 8 bis 20, wobei die Einrichtung zum Ausgeben eine Mehrzahl der gepufferten Instruktionen zu der Ausführungseinrichtung in einem Prozessorzyklus liefert.
  22. Mikroprozessorsystem nach den Ansprüchen 8 bis 21, weiterhin umfassend: einen Instruktionspuffer (260) zum Puffern der Mehrzahl der Instruktionen, abgerufen durch die Abrufeinrichtung; und einen Verzweigungsdecodierer (262), der auf den Instruktionspuffer anspricht, wobei die Puffereinrichtung die Mehrzahl von Instruktionen von dem Verzweigungsdecodierer puffert.
  23. Mikroprozessorsystem nach Anspruch 22, wobei die Puffereinrichtung die Mehrzahl der Instruktionen von dem Instruktionspuffer puffert.
  24. Mikroprozessorsystem nach den Ansprüchen 8 oder 23, wobei die Ausgabeeinrichtung dazu geeignet ist, bis zu vier Instruktionen zu der Ausführungseinrichtung in einem Prozessorzyklus auszugeben.
  25. Mikroprozessorsystem nach einem der Ansprüche 8 bis 24, wobei die Ausgabeeinrichtung zusätzlich eine Schaltung zum Ausgeben der Instruktionen außerhalb der Programmreihenfolge zu der Ausführungseinrichtung, abhängig von der Verfügbarkeit der Mehrzahl der funktionalen Einheiten, umfasst.
  26. Mikroprozessorsystem nach einem der Ansprüche 8 bis 25, wobei die Quelle mit einem externen Cache gekoppelt ist.
  27. Mikroprozessorsystem nach einem der Ansprüche 8 bis 26, wobei die Ausgabeeinrichtung gleichzeitig die Instruktionen durch Liefern einer Mehrzahl der gepufferten Instruktionen zu der Ausführungseinrichtung in einem Prozessorzyklus ausgibt.
  28. Mikroprozessorsystem nach einem der Ansprüche 8 bis 27, aufgebaut zum Verarbeiten von Daten unter Durchführen des Verfahrens nach einem der Ansprüche 1 bis 7.
DE69233313T 1991-07-08 1992-07-07 Hochleistungsarchitektur für RISC-Mikroprozessor Expired - Lifetime DE69233313T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US72700691A 1991-07-08 1991-07-08
US727006 1991-07-08

Publications (2)

Publication Number Publication Date
DE69233313D1 DE69233313D1 (de) 2004-04-01
DE69233313T2 true DE69233313T2 (de) 2004-07-15

Family

ID=24920949

Family Applications (4)

Application Number Title Priority Date Filing Date
DE0001385085T Pending DE03024585T1 (de) 1991-07-08 1992-07-07 Hochleistungsarchitektur für RISC-Mikroprozessor
DE69233777T Expired - Lifetime DE69233777D1 (de) 1991-07-08 1992-07-07 Hochleistungsarchitektur für RISC-Mikroprozessor
DE69232113T Expired - Lifetime DE69232113T2 (de) 1991-07-08 1992-07-07 Hochleistungsarchitektur für risc-mikroprozessor
DE69233313T Expired - Lifetime DE69233313T2 (de) 1991-07-08 1992-07-07 Hochleistungsarchitektur für RISC-Mikroprozessor

Family Applications Before (3)

Application Number Title Priority Date Filing Date
DE0001385085T Pending DE03024585T1 (de) 1991-07-08 1992-07-07 Hochleistungsarchitektur für RISC-Mikroprozessor
DE69233777T Expired - Lifetime DE69233777D1 (de) 1991-07-08 1992-07-07 Hochleistungsarchitektur für RISC-Mikroprozessor
DE69232113T Expired - Lifetime DE69232113T2 (de) 1991-07-08 1992-07-07 Hochleistungsarchitektur für risc-mikroprozessor

Country Status (8)

Country Link
US (19) US5539911A (de)
EP (3) EP0547241B1 (de)
JP (23) JP3441070B2 (de)
KR (42) KR100875259B1 (de)
AT (3) ATE206829T1 (de)
DE (4) DE03024585T1 (de)
HK (2) HK1014782A1 (de)
WO (1) WO1993001545A1 (de)

Families Citing this family (231)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5768575A (en) * 1989-02-24 1998-06-16 Advanced Micro Devices, Inc. Semi-Autonomous RISC pipelines for overlapped execution of RISC-like instructions within the multiple superscalar execution units of a processor having distributed pipeline control for sepculative and out-of-order execution of complex instructions
US5226126A (en) * 1989-02-24 1993-07-06 Nexgen Microsystems Processor having plurality of functional units for orderly retiring outstanding operations based upon its associated tags
US5781753A (en) * 1989-02-24 1998-07-14 Advanced Micro Devices, Inc. Semi-autonomous RISC pipelines for overlapped execution of RISC-like instructions within the multiple superscalar execution units of a processor having distributed pipeline control for speculative and out-of-order execution of complex instructions
JPH04367936A (ja) * 1991-06-17 1992-12-21 Mitsubishi Electric Corp スーパースカラープロセッサ
US5539911A (en) * 1991-07-08 1996-07-23 Seiko Epson Corporation High-performance, superscalar-based computer system with out-of-order instruction execution
ATE200357T1 (de) 1991-07-08 2001-04-15 Seiko Epson Corp Risc-prozessor mit dehnbarer architektur
US5493687A (en) 1991-07-08 1996-02-20 Seiko Epson Corporation RISC microprocessor architecture implementing multiple typed register sets
US5961629A (en) * 1991-07-08 1999-10-05 Seiko Epson Corporation High performance, superscalar-based computer system with out-of-order instruction execution
US5371684A (en) * 1992-03-31 1994-12-06 Seiko Epson Corporation Semiconductor floor plan for a register renaming circuit
DE69311330T2 (de) 1992-03-31 1997-09-25 Seiko Epson Corp Befehlsablauffolgeplanung von einem risc-superskalarprozessor
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
WO1993022722A1 (en) 1992-05-01 1993-11-11 Seiko Epson Corporation A system and method for retiring instructions in a superscalar microprocessor
EP0591695B1 (de) * 1992-09-18 1998-02-11 Hitachi, Ltd. Rechenanlage mit synchronem, dynamischem Speicher
JP3644959B2 (ja) 1992-09-29 2005-05-11 セイコーエプソン株式会社 マイクロプロセッサシステム
US6735685B1 (en) * 1992-09-29 2004-05-11 Seiko Epson Corporation System and method for handling load and/or store operations in a superscalar microprocessor
JP3531166B2 (ja) 1992-12-31 2004-05-24 セイコーエプソン株式会社 レジスタ・リネーミングのシステム及び方法
US5628021A (en) 1992-12-31 1997-05-06 Seiko Epson Corporation System and method for assigning tags to control instruction processing in a superscalar processor
JP2596712B2 (ja) * 1993-07-01 1997-04-02 インターナショナル・ビジネス・マシーンズ・コーポレイション 近接した分岐命令を含む命令の実行を管理するシステム及び方法
JP2801135B2 (ja) * 1993-11-26 1998-09-21 富士通株式会社 パイプラインプロセッサの命令読み出し方法及び命令読み出し装置
US6393550B1 (en) * 1993-12-30 2002-05-21 Intel Corporation Method and apparatus for pipeline streamlining where resources are immediate or certainly retired
US5956753A (en) * 1993-12-30 1999-09-21 Intel Corporation Method and apparatus for handling speculative memory access operations
US5724536A (en) * 1994-01-04 1998-03-03 Intel Corporation Method and apparatus for blocking execution of and storing load operations during their execution
US5546597A (en) * 1994-02-28 1996-08-13 Intel Corporation Ready selection of data dependent instructions using multi-cycle cams in a processor performing out-of-order instruction execution
US5564056A (en) * 1994-03-01 1996-10-08 Intel Corporation Method and apparatus for zero extension and bit shifting to preserve register parameters in a microprocessor utilizing register renaming
JP3212213B2 (ja) * 1994-03-16 2001-09-25 株式会社日立製作所 データ処理装置
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
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
US5778434A (en) * 1995-06-07 1998-07-07 Seiko Epson Corporation System and method for processing multiple requests and out of order returns
US5710902A (en) * 1995-09-06 1998-01-20 Intel Corporation Instruction dependency chain indentifier
US5694565A (en) * 1995-09-11 1997-12-02 International Business Machines Corporation Method and device for early deallocation of resources during load/store multiple operations to allow simultaneous dispatch/execution of subsequent instructions
US5897665A (en) * 1995-12-15 1999-04-27 Intel Corporation Register addressing for register-register architectures used for microprocessors and microcontrollers
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
US5860000A (en) * 1996-01-31 1999-01-12 Hitachi Micro Systems, Inc. Floating point unit pipeline synchronized with processor pipeline
US5715425A (en) * 1996-02-22 1998-02-03 Sun Microsystems, Inc. Apparatus and method for prefetching data into an external cache
US5652774A (en) * 1996-07-08 1997-07-29 International Business Machines Corporation Method and apparatus for decreasing the cycle times of a data processing system
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
US5915110A (en) * 1996-07-26 1999-06-22 Advanced Micro Devices, Inc. Branch misprediction recovery in a reorder buffer having a future file
US5983342A (en) * 1996-09-12 1999-11-09 Advanced Micro Devices, Inc. Superscalar microprocessor employing a future file for storing results into multiportion registers
US5774694A (en) * 1996-09-25 1998-06-30 Intel Corporation Method and apparatus for emulating status flag
US5815688A (en) * 1996-10-09 1998-09-29 Hewlett-Packard Company Verification of accesses in a functional model of a speculative out-of-order computer system
US5838941A (en) * 1996-12-30 1998-11-17 Intel Corporation Out-of-order superscalar microprocessor with a renaming device that maps instructions from memory to registers
US6195746B1 (en) 1997-01-31 2001-02-27 International Business Machines Corporation Dynamically typed register architecture
US5864701A (en) * 1997-02-14 1999-01-26 Integrated Device Technology, Inc. Apparatus and method for managing interrupt delay associated with mask flag transition
US5974538A (en) * 1997-02-21 1999-10-26 Wilmot, Ii; Richard Byron Method and apparatus for annotating operands in a computer system with source instruction identifiers
US5944810A (en) * 1997-06-27 1999-08-31 Sun Microsystems, Inc. Superscalar processor for retiring multiple instructions in working register file by changing the status bits associated with each execution result to identify valid data
US6035388A (en) 1997-06-27 2000-03-07 Sandcraft, Inc. Method and apparatus for dual issue of program instructions to symmetric multifunctional execution units
US6263416B1 (en) * 1997-06-27 2001-07-17 Sun Microsystems, Inc. Method for reducing number of register file ports in a wide instruction issue processor
US6128728A (en) * 1997-08-01 2000-10-03 Micron Technology, Inc. Virtual shadow registers and virtual register windows
US5966142A (en) * 1997-09-19 1999-10-12 Cirrus Logic, Inc. Optimized FIFO memory
US6249857B1 (en) * 1997-10-20 2001-06-19 Motorola, Inc. Apparatus using a multiple instruction register logarithm based processor
US6112293A (en) * 1997-11-17 2000-08-29 Advanced Micro Devices, Inc. Processor configured to generate lookahead results from operand collapse unit and for inhibiting receipt/execution of the first instruction based on the lookahead result
US6493790B1 (en) * 1998-01-30 2002-12-10 Sun Microsystems, Inc. Translation-lookaside buffer with current tracking reference circuit
US6345355B1 (en) 1998-05-29 2002-02-05 Telefonaktiebolaget Lm Ericsson (Publ) Method and apparatus for distributing commands to a plurality of circuit blocks
US6317820B1 (en) 1998-06-05 2001-11-13 Texas Instruments Incorporated Dual-mode VLIW architecture providing a software-controlled varying mix of instruction-level and task-level parallelism
US6266761B1 (en) * 1998-06-12 2001-07-24 International Business Machines Corporation Method and system in an information processing system for efficient maintenance of copies of values stored within registers
AU5686599A (en) * 1998-08-21 2000-03-14 California Institute Of Technology Processing element with special application for branch functions
US6308262B1 (en) * 1998-09-30 2001-10-23 Intel Corporation System and method for efficient processing of instructions using control unit to select operations
US6163155A (en) * 1999-01-28 2000-12-19 Dresser Industries, Inc. Electromagnetic wave resistivity tool having a tilted antenna for determining the horizontal and vertical resistivities and relative dip angle in anisotropic earth formations
US6882642B1 (en) * 1999-10-14 2005-04-19 Nokia, Inc. Method and apparatus for input rate regulation associated with a packet processing pipeline
US6470427B1 (en) 1999-11-09 2002-10-22 International Business Machines Corporation Programmable agent and method for managing prefetch queues
EP1109096A3 (de) * 1999-12-17 2004-02-11 Fujitsu Limited Prozessor und Verfahren zu dessen Steuerung
US6609193B1 (en) * 1999-12-30 2003-08-19 Intel Corporation Method and apparatus for multi-thread pipelined instruction decoder
US6467027B1 (en) * 1999-12-30 2002-10-15 Intel Corporation Method and system for an INUSE field resource management scheme
US6601162B1 (en) * 2000-01-19 2003-07-29 Kabushiki Kaisha Toshiba Processor which executes pipeline processing having a plurality of stages and which has an operand bypass predicting function
US7149883B1 (en) 2000-03-30 2006-12-12 Intel Corporation Method and apparatus selectively to advance a write pointer for a queue based on the indicated validity or invalidity of an instruction stored within the queue
US6446181B1 (en) * 2000-03-31 2002-09-03 Intel Corporation System having a configurable cache/SRAM memory
US6606684B1 (en) 2000-03-31 2003-08-12 Intel Corporation Multi-tiered memory bank having different data buffer sizes with a programmable bank select
US6785802B1 (en) 2000-06-01 2004-08-31 Stmicroelectronics, Inc. Method and apparatus for priority tracking in an out-of-order instruction shelf of a high performance superscalar microprocessor
US7080183B1 (en) * 2000-08-16 2006-07-18 Koninklijke Philips Electronics N.V. Reprogrammable apparatus supporting the processing of a digital signal stream and method
SE0003398D0 (sv) * 2000-09-22 2000-09-22 Ericsson Telefon Ab L M Optimization of a pipelined processor system
US6754808B1 (en) * 2000-09-29 2004-06-22 Intel Corporation Valid bit generation and tracking in a pipelined processor
US7149878B1 (en) * 2000-10-30 2006-12-12 Mips Technologies, Inc. Changing instruction set architecture mode by comparison of current instruction execution address with boundary address register values
US7079133B2 (en) * 2000-11-16 2006-07-18 S3 Graphics Co., Ltd. Superscalar 3D graphics engine
US7162718B1 (en) * 2000-12-12 2007-01-09 International Business Machines Corporation Language extension for light weight threading in a JVM
US7069422B2 (en) * 2000-12-22 2006-06-27 Modelski Richard P Load-shift carry instruction
US7007156B2 (en) * 2000-12-28 2006-02-28 Intel Corporation Multiple coprocessor architecture to process a plurality of subtasks in parallel
US6643755B2 (en) * 2001-02-20 2003-11-04 Koninklijke Philips Electronics N.V. Cyclically sequential memory prefetch
US6493814B2 (en) 2001-03-08 2002-12-10 International Business Machines Corporation Reducing resource collisions associated with memory units in a multi-level hierarchy memory system
US7711926B2 (en) * 2001-04-18 2010-05-04 Mips Technologies, Inc. Mapping system and method for instruction set processing
US6826681B2 (en) * 2001-06-18 2004-11-30 Mips Technologies, Inc. Instruction specified register value saving in allocated caller stack or not yet allocated callee stack
US7107439B2 (en) * 2001-08-10 2006-09-12 Mips Technologies, Inc. System and method of controlling software decompression through exceptions
US7191430B2 (en) * 2001-09-24 2007-03-13 Hewlett-Packard Development Company, L.P. Providing instruction execution hints to a processor using break instructions
JP2003140886A (ja) * 2001-10-31 2003-05-16 Seiko Epson Corp インストラクションセット及びコンパイラ
JP4272371B2 (ja) * 2001-11-05 2009-06-03 パナソニック株式会社 デバッグ支援装置、コンパイラ装置、デバッグ支援プログラム、コンパイラプログラム、及びコンピュータ読取可能な記録媒体。
US7376811B2 (en) * 2001-11-06 2008-05-20 Netxen, Inc. Method and apparatus for performing computations and operations on data using data steering
JP3878508B2 (ja) * 2001-11-08 2007-02-07 松下電器産業株式会社 回路群制御システム
US6895460B2 (en) * 2002-07-19 2005-05-17 Hewlett-Packard Development Company, L.P. Synchronization of asynchronous emulated interrupts
US7120068B2 (en) * 2002-07-29 2006-10-10 Micron Technology, Inc. Column/row redundancy architecture using latches programmed from a look up table
US7493478B2 (en) * 2002-12-05 2009-02-17 International Business Machines Corporation Enhanced processor virtualization mechanism via saving and restoring soft processor/system states
US20040148489A1 (en) * 2003-01-28 2004-07-29 Sun Microsystems, Inc. Sideband VLIW processor
US7502910B2 (en) * 2003-01-28 2009-03-10 Sun Microsystems, Inc. Sideband scout thread processor for reducing latency associated with a main processor
US20040199749A1 (en) * 2003-04-03 2004-10-07 Robert Golla Method and apparatus to limit register file read ports in an out-of-order, multi-stranded processor
US7873110B2 (en) * 2003-06-17 2011-01-18 Broadcom Corporation MPEG smart video transport processor with different transport packet handling
US7428631B2 (en) * 2003-07-31 2008-09-23 Intel Corporation Apparatus and method using different size rename registers for partial-bit and bulk-bit writes
US7552426B2 (en) * 2003-10-14 2009-06-23 Microsoft Corporation Systems and methods for using synthetic instructions in a virtual machine
US7310722B2 (en) 2003-12-18 2007-12-18 Nvidia Corporation Across-thread out of order instruction dispatch in a multithreaded graphics processor
US20050138297A1 (en) * 2003-12-23 2005-06-23 Intel Corporation Register file cache
US7171545B2 (en) * 2003-12-30 2007-01-30 Intel Corporation Predictive filtering of register cache entry
US7484045B2 (en) 2004-03-30 2009-01-27 Intel Corporation Store performance in strongly-ordered microprocessor architecture
US7437536B2 (en) 2004-05-03 2008-10-14 Sony Computer Entertainment Inc. Systems and methods for task migration
US7868902B1 (en) * 2004-05-14 2011-01-11 Nvidia Corporation System and method for pixel data row forwarding in a 3-D graphics pipeline
US7724263B2 (en) * 2004-05-14 2010-05-25 Nvidia Corporation System and method for a universal data write unit in a 3-D graphics pipeline including generic cache memories
US20050278517A1 (en) 2004-05-19 2005-12-15 Kar-Lik Wong Systems and methods for performing branch prediction in a variable length instruction set microprocessor
US8225034B1 (en) * 2004-06-30 2012-07-17 Oracle America, Inc. Hybrid instruction buffer
US7200693B2 (en) * 2004-08-27 2007-04-03 Micron Technology, Inc. Memory system and method having unidirectional data buses
US20080162877A1 (en) * 2005-02-24 2008-07-03 Erik Richter Altman Non-Homogeneous Multi-Processor System With Shared Memory
JP2007041837A (ja) * 2005-08-03 2007-02-15 Nec Electronics Corp 命令プリフェッチ装置及び命令プリフェッチ方法
JP4841861B2 (ja) * 2005-05-06 2011-12-21 ルネサスエレクトロニクス株式会社 演算処理装置及びデータ転送処理の実行方法
US20070028027A1 (en) * 2005-07-26 2007-02-01 Micron Technology, Inc. Memory device and method having separate write data and read data buses
US7647487B2 (en) 2005-08-29 2010-01-12 Searete, Llc Instruction-associated processor resource optimization
US7653834B2 (en) 2005-08-29 2010-01-26 Searete, Llc Power sparing synchronous apparatus
US8423824B2 (en) 2005-08-29 2013-04-16 The Invention Science Fund I, Llc Power sparing synchronous apparatus
US7607042B2 (en) * 2005-08-29 2009-10-20 Searete, Llc Adjusting a processor operating parameter based on a performance criterion
US20070050606A1 (en) * 2005-08-29 2007-03-01 Searete Llc, A Limited Liability Corporation Of The State Of Delaware Runtime-based optimization profile
US7627739B2 (en) * 2005-08-29 2009-12-01 Searete, Llc Optimization of a hardware resource shared by a multiprocessor
US7739524B2 (en) * 2005-08-29 2010-06-15 The Invention Science Fund I, Inc Power consumption management
US7774558B2 (en) * 2005-08-29 2010-08-10 The Invention Science Fund I, Inc Multiprocessor resource optimization
US8214191B2 (en) * 2005-08-29 2012-07-03 The Invention Science Fund I, Llc Cross-architecture execution optimization
US8209524B2 (en) 2005-08-29 2012-06-26 The Invention Science Fund I, Llc Cross-architecture optimization
US8181004B2 (en) * 2005-08-29 2012-05-15 The Invention Science Fund I, Llc Selecting a resource management policy for a resource available to a processor
US7725693B2 (en) 2005-08-29 2010-05-25 Searete, Llc Execution optimization using a processor resource management policy saved in an association with an instruction group
US7877584B2 (en) * 2005-08-29 2011-01-25 The Invention Science Fund I, Llc Predictive processor resource management
US7779213B2 (en) * 2005-08-29 2010-08-17 The Invention Science Fund I, Inc Optimization of instruction group execution through hardware resource management policies
US8255745B2 (en) * 2005-08-29 2012-08-28 The Invention Science Fund I, Llc Hardware-error tolerant computing
US8516300B2 (en) * 2005-08-29 2013-08-20 The Invention Science Fund I, Llc Multi-votage synchronous systems
US20070050605A1 (en) * 2005-08-29 2007-03-01 Bran Ferren Freeze-dried ghost pages
US8981996B2 (en) * 2005-09-27 2015-03-17 Qualcomm Incorporated Position location using transmitters with timing offset and phase adjustment
US20070073925A1 (en) 2005-09-28 2007-03-29 Arc International (Uk) Limited Systems and methods for synchronizing multiple processing engines of a microprocessor
US8078845B2 (en) 2005-12-16 2011-12-13 Freescale Semiconductor, Inc. Device and method for processing instructions based on masked register group size information
US8266413B2 (en) * 2006-03-14 2012-09-11 The Board Of Trustees Of The University Of Illinois Processor architecture for multipass processing of instructions downstream of a stalled instruction
EP2477109B1 (de) 2006-04-12 2016-07-13 Soft Machines, Inc. Vorrichtung und Verfahren zur Verarbeitung einer Anweisungsmatrix zur Spezifizierung von parallelen und abhängigen Betriebsabläufen
US7685467B2 (en) * 2006-04-27 2010-03-23 Texas Instruments Incorporated Data system simulated event and matrix debug of pipelined processor
US7647486B2 (en) 2006-05-02 2010-01-12 Atmel Corporation Method and system having instructions with different execution times in different modes, including a selected execution time different from default execution times in a first mode and a random execution time in a second mode
US20080077777A1 (en) * 2006-09-25 2008-03-27 Arm Limited Register renaming for instructions having unresolved condition codes
EP2523101B1 (de) 2006-11-14 2014-06-04 Soft Machines, Inc. Vorrichtung und Verfahren zum Verarbeiten von komplexen Anweisungsformaten in einer Multi-Thread-Architektur, die verschiedene Kontextschaltungsmodi und Visualisierungsschemen unterstützt
US7664932B2 (en) 2007-04-13 2010-02-16 Microsoft Corporation Scalable and configurable execution pipeline of handlers having policy information for selectively acting on payload
US8082540B2 (en) * 2007-04-19 2011-12-20 International Business Machines Corporation Method for visually indicating preceding and succeeding source code lines that are executed in a graphical debugging environment
JP2008305185A (ja) * 2007-06-07 2008-12-18 Nec Electronics Corp プロセッサ装置及び複合条件処理方法
JP4896837B2 (ja) * 2007-08-20 2012-03-14 株式会社東芝 携帯可能電子装置および携帯可能電子装置の制御方法
US7823117B1 (en) * 2007-12-21 2010-10-26 Xilinx, Inc. Separating a high-level programming language program into hardware and software components
US8176406B2 (en) * 2008-03-19 2012-05-08 International Business Machines Corporation Hard error detection
US20090249035A1 (en) * 2008-03-28 2009-10-01 International Business Machines Corporation Multi-cycle register file bypass
US20090289943A1 (en) * 2008-05-22 2009-11-26 Howard Teece Anti-aliasing system and method
KR101012121B1 (ko) * 2008-06-05 2011-02-07 경상북도 (관련부서:경상북도축산기술연구소장) 송아지 사육 케이지
KR100892857B1 (ko) * 2008-07-30 2009-04-15 주식회사 유비콘테크놀로지 시스템온칩의 내부 메모리 장치 및 그 운영방법
GB2463278B (en) * 2008-09-05 2012-05-16 Advanced Risc Mach Ltd Scheduling control within a data processing system
US8312442B2 (en) * 2008-12-10 2012-11-13 Oracle America, Inc. Method and system for interprocedural prefetching
US9690625B2 (en) * 2009-06-16 2017-06-27 Oracle America, Inc. System and method for out-of-order resource allocation and deallocation in a threaded machine
KR101032771B1 (ko) * 2009-05-29 2011-05-06 광운대학교 산학협력단 구성형 프로세서에서 risc 명령어와 확장 명령어를 병렬 처리하기 위한 방법 및 그에 따른 구성형 프로세서
KR200448337Y1 (ko) * 2009-12-31 2010-04-05 임준기 통풍기능을 구비한 농산물 받침대
CN102193775B (zh) * 2010-04-27 2015-07-29 威盛电子股份有限公司 微处理器融合搬运/算术逻辑运算/条件跳跃指令
EP2616928B1 (de) 2010-09-17 2016-11-02 Soft Machines, Inc. Mehrfach verzweigte einzelzyklus-vorhersage mit einem latenten cache für frühe und entfernte verzweigungsvorhersage
CN103262027B (zh) 2010-10-12 2016-07-20 索夫特机械公司 用于存储具有可可靠预测的指令序列的分支的指令序列缓冲器
WO2012051262A2 (en) * 2010-10-12 2012-04-19 Soft Machines, Inc. An instruction sequence buffer to enhance branch prediction efficiency
US9710270B2 (en) * 2010-12-20 2017-07-18 International Business Machines Corporation Exception control method, system, and program
WO2012135041A2 (en) 2011-03-25 2012-10-04 Soft Machines, Inc. Register file segments for supporting code block execution by using virtual cores instantiated by partitionable engines
WO2012135031A2 (en) 2011-03-25 2012-10-04 Soft Machines, Inc. Executing instruction sequence code blocks by using virtual cores instantiated by partitionable engines
EP2689326B1 (de) 2011-03-25 2022-11-16 Intel Corporation Speicherfragmente zur unterstützung einer codeblockausführung mittels durch partitionierbare engines realisierter virtueller kerne
CN102789377B (zh) 2011-05-18 2015-09-30 国际商业机器公司 处理指令分组信息的方法和装置
WO2012162189A1 (en) 2011-05-20 2012-11-29 Soft Machines, Inc. An interconnect structure to support the execution of instruction sequences by a plurality of engines
CN103649932B (zh) 2011-05-20 2017-09-26 英特尔公司 资源的分散分配以及用于支持由多个引擎执行指令序列的互连结构
US8683261B2 (en) 2011-07-20 2014-03-25 International Business Machines Corporation Out of order millicode control operation
US8615745B2 (en) 2011-10-03 2013-12-24 International Business Machines Corporation Compiling code for an enhanced application binary interface (ABI) with decode time instruction optimization
US8612959B2 (en) 2011-10-03 2013-12-17 International Business Machines Corporation Linking code for an enhanced application binary interface (ABI) with decode time instruction optimization
US10078515B2 (en) 2011-10-03 2018-09-18 International Business Machines Corporation Tracking operand liveness information in a computer system and performing function based on the liveness information
US9354874B2 (en) 2011-10-03 2016-05-31 International Business Machines Corporation Scalable decode-time instruction sequence optimization of dependent instructions
US8756591B2 (en) 2011-10-03 2014-06-17 International Business Machines Corporation Generating compiled code that indicates register liveness
US9690583B2 (en) 2011-10-03 2017-06-27 International Business Machines Corporation Exploiting an architected list-use operand indication in a computer system operand resource pool
US9286072B2 (en) 2011-10-03 2016-03-15 International Business Machines Corporation Using register last use infomation to perform decode-time computer instruction optimization
US9329869B2 (en) 2011-10-03 2016-05-03 International Business Machines Corporation Prefix computer instruction for compatibily extending instruction functionality
US9697002B2 (en) 2011-10-03 2017-07-04 International Business Machines Corporation Computer instructions for activating and deactivating operands
KR101703401B1 (ko) 2011-11-22 2017-02-06 소프트 머신즈, 인크. 다중 엔진 마이크로프로세서용 가속 코드 최적화기
US20150039859A1 (en) 2011-11-22 2015-02-05 Soft Machines, Inc. Microprocessor accelerated code optimizer
KR101912427B1 (ko) 2011-12-12 2018-10-29 삼성전자주식회사 재구성가능 프로세서 및 재구성가능 프로세서의 미니 코어
WO2013095597A1 (en) * 2011-12-22 2013-06-27 Intel Corporation Systems, apparatuses, and methods for performing an absolute difference calculation between corresponding packed data elements of two vector registers
WO2013095666A1 (en) * 2011-12-23 2013-06-27 Intel Corporation Systems, apparatuses, and methods for performing vector packed unary decoding using masks
US8930674B2 (en) 2012-03-07 2015-01-06 Soft Machines, Inc. Systems and methods for accessing a unified translation lookaside buffer
US9152566B2 (en) * 2012-06-15 2015-10-06 International Business Machines Corporation Prefetch address translation using prefetch buffer based on availability of address translation logic
US10255944B2 (en) * 2012-06-27 2019-04-09 Marvell World Trade Ltd. Systems and methods for reading and decoding encoded data from a storage device
US9229873B2 (en) 2012-07-30 2016-01-05 Soft Machines, Inc. Systems and methods for supporting a plurality of load and store accesses of a cache
US9916253B2 (en) 2012-07-30 2018-03-13 Intel Corporation Method and apparatus for supporting a plurality of load accesses of a cache in a single cycle to maintain throughput
US9710399B2 (en) 2012-07-30 2017-07-18 Intel Corporation Systems and methods for flushing a cache with modified data
US9740612B2 (en) 2012-07-30 2017-08-22 Intel Corporation Systems and methods for maintaining the coherency of a store coalescing cache and a load cache
US9678882B2 (en) 2012-10-11 2017-06-13 Intel Corporation Systems and methods for non-blocking implementation of cache flush instructions
US10299934B2 (en) * 2012-12-11 2019-05-28 Globus Medical, Inc Expandable vertebral implant
US20140281413A1 (en) * 2013-03-14 2014-09-18 Mips Technologies, Inc. Superforwarding Processor
US9891924B2 (en) 2013-03-15 2018-02-13 Intel Corporation Method for implementing a reduced size register view data structure in a microprocessor
US9436476B2 (en) 2013-03-15 2016-09-06 Soft Machines Inc. Method and apparatus for sorting elements in hardware structures
US10140138B2 (en) 2013-03-15 2018-11-27 Intel Corporation Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation
KR102083390B1 (ko) 2013-03-15 2020-03-02 인텔 코포레이션 네이티브 분산된 플래그 아키텍처를 이용하여 게스트 중앙 플래그 아키텍처를 에뮬레이션하는 방법
KR102063656B1 (ko) 2013-03-15 2020-01-09 소프트 머신즈, 인크. 블록들로 그룹화된 멀티스레드 명령어들을 실행하기 위한 방법
US9582322B2 (en) 2013-03-15 2017-02-28 Soft Machines Inc. Method and apparatus to avoid deadlock during instruction scheduling using dynamic port remapping
US9904625B2 (en) 2013-03-15 2018-02-27 Intel Corporation Methods, systems and apparatus for predicting the way of a set associative cache
US9627038B2 (en) 2013-03-15 2017-04-18 Intel Corporation Multiport memory cell having improved density area
WO2014150971A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for dependency broadcasting through a block organized source view data structure
US20140281116A1 (en) 2013-03-15 2014-09-18 Soft Machines, Inc. Method and Apparatus to Speed up the Load Access and Data Return Speed Path Using Early Lower Address Bits
WO2014150991A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for implementing a reduced size register view data structure in a microprocessor
WO2014150806A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for populating register view data structure by using register template snapshots
US9811342B2 (en) 2013-03-15 2017-11-07 Intel Corporation Method for performing dual dispatch of blocks and half blocks
US9569216B2 (en) 2013-03-15 2017-02-14 Soft Machines, Inc. Method for populating a source view data structure by using register template snapshots
US9886279B2 (en) 2013-03-15 2018-02-06 Intel Corporation Method for populating and instruction view data structure by using register template snapshots
US10275255B2 (en) 2013-03-15 2019-04-30 Intel Corporation Method for dependency broadcasting through a source organized source view data structure
GB2523823B (en) * 2014-03-07 2021-06-16 Advanced Risc Mach Ltd Data processing apparatus and method for processing vector operands
US9841974B2 (en) * 2014-04-25 2017-12-12 Avago Technologies General Ip (Singapore) Pte. Ltd. Renaming with generation numbers
WO2015175555A1 (en) 2014-05-12 2015-11-19 Soft Machines, Inc. Method and apparatus for providing hardware support for self-modifying code
CN104156196B (zh) * 2014-06-12 2017-10-27 龚伟峰 重命名预处理方法
US9678758B2 (en) 2014-09-26 2017-06-13 Qualcomm Incorporated Coprocessor for out-of-order loads
US9483409B2 (en) 2015-02-05 2016-11-01 International Business Machines Corporation Store forwarding cache
US10705841B2 (en) 2015-06-24 2020-07-07 International Business Machines Corporation Instruction to perform a logical operation on conditions and to quantize the Boolean result of that operation
US10620952B2 (en) 2015-06-24 2020-04-14 International Business Machines Corporation Conversion of boolean conditions
US10698688B2 (en) 2015-06-24 2020-06-30 International Business Machines Corporation Efficient quantization of compare results
US9794660B2 (en) 2015-09-25 2017-10-17 Intel Corporation Integrated sound bar hinge assembly for mobile electronic device
US10445091B1 (en) * 2016-03-30 2019-10-15 Apple Inc. Ordering instructions in a processing core instruction buffer
US11106467B2 (en) 2016-04-28 2021-08-31 Microsoft Technology Licensing, Llc Incremental scheduler for out-of-order block ISA processors
US10496409B2 (en) 2016-11-22 2019-12-03 The Arizona Board Of Regents Method and system for managing control of instruction and process execution in a programmable computing system
US10162680B2 (en) * 2016-12-13 2018-12-25 GM Global Technology Operations LLC Control of data exchange between a primary core and a secondary core using a freeze process flag and a data frozen flag in real-time
US10983799B1 (en) 2017-12-19 2021-04-20 Apple Inc. Selection of instructions to issue in a processor
US11422821B1 (en) 2018-09-04 2022-08-23 Apple Inc. Age tracking for independent pipelines
CN109614145B (zh) * 2018-10-18 2021-03-09 中国科学院计算技术研究所 一种处理器核心结构及数据访存方法
CN111488176B (zh) * 2019-01-25 2023-04-18 阿里巴巴集团控股有限公司 一种指令调度方法、装置、设备及存储介质
US11176055B1 (en) 2019-08-06 2021-11-16 Marvell Asia Pte, Ltd. Managing potential faults for speculative page table access
US11573802B2 (en) 2019-10-23 2023-02-07 Texas Instruments Incorporated User mode event handling
US11579884B2 (en) 2020-06-26 2023-02-14 Advanced Micro Devices, Inc. Instruction address translation and caching for primary and alternate branch prediction paths
US11656876B2 (en) 2020-10-29 2023-05-23 Cadence Design Systems, Inc. Removal of dependent instructions from an execution pipeline
US11243778B1 (en) * 2020-12-31 2022-02-08 Microsoft Technology Licensing, Llc Instruction dispatch for superscalar processors
US11886883B2 (en) 2021-08-26 2024-01-30 International Business Machines Corporation Dependency skipping in a load-compare-jump sequence of instructions by incorporating compare functionality into the jump instruction and auto-finishing the compare instruction
WO2023150114A1 (en) * 2022-02-01 2023-08-10 Apple Inc. Conditional instructions prediction
US11809874B2 (en) 2022-02-01 2023-11-07 Apple Inc. Conditional instructions distribution and execution on pipelines having different latencies for mispredictions

Family Cites Families (279)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3346851A (en) * 1964-07-08 1967-10-10 Control Data Corp Simultaneous multiprocessing computer system
US3718912A (en) * 1970-12-22 1973-02-27 Ibm Instruction execution unit
US3789365A (en) * 1971-06-03 1974-01-29 Bunker Ramo Processor interrupt system
US3771138A (en) * 1971-08-31 1973-11-06 Ibm Apparatus and method for serializing instructions from two independent instruction streams
US3913074A (en) 1973-12-18 1975-10-14 Honeywell Inf Systems Search processing apparatus
JPS5110746A (de) 1974-07-17 1976-01-28 Hitachi Ltd
US4041461A (en) * 1975-07-25 1977-08-09 International Business Machines Corporation Signal analyzer system
US4034349A (en) * 1976-01-29 1977-07-05 Sperry Rand Corporation Apparatus for processing interrupts in microprocessing systems
US4128880A (en) 1976-06-30 1978-12-05 Cray Research, Inc. Computer vector register processing
US4212076A (en) 1976-09-24 1980-07-08 Giddings & Lewis, Inc. Digital computer structure providing arithmetic and boolean logic operations, the latter controlling the former
US4101086A (en) 1977-07-20 1978-07-18 Eastman Kodak Company Yarn tie-up and transfer tail method, and yarn package tube and apparatus for the method
US4237532A (en) * 1977-09-02 1980-12-02 Sperry Corporation Table driven decision and control logic for digital computers
US4199811A (en) * 1977-09-02 1980-04-22 Sperry Corporation Microprogrammable computer utilizing concurrently operating processors
US4210960A (en) * 1977-09-02 1980-07-01 Sperry Corporation Digital computer with overlapped operation utilizing conditional control to minimize time losses
US4296465A (en) * 1977-11-03 1981-10-20 Honeywell Information Systems Inc. Data mover
AU529675B2 (en) * 1977-12-07 1983-06-16 Honeywell Information Systems Incorp. Cache memory unit
US4315314A (en) * 1977-12-30 1982-02-09 Rca Corporation Priority vectored interrupt having means to supply branch address directly
US4200927A (en) * 1978-01-03 1980-04-29 International Business Machines Corporation Multi-instruction stream branch processing mechanism
US4228495A (en) * 1978-12-19 1980-10-14 Allen-Bradley Company Multiprocessor numerical control system
US4315308A (en) 1978-12-21 1982-02-09 Intel Corporation Interface between a microprocessor chip and peripheral subsystems
US4296470A (en) * 1979-06-21 1981-10-20 International Business Machines Corp. Link register storage and restore system for use in an instruction pre-fetch micro-processor interrupt system
JPS5616248A (en) * 1979-07-17 1981-02-17 Matsushita Electric Ind Co Ltd Processing system for interruption
US4336024A (en) * 1980-02-22 1982-06-22 Airwick Industries, Inc. Process for cleaning clothes at home
JPS6028015B2 (ja) * 1980-08-28 1985-07-02 日本電気株式会社 情報処理装置
US4434461A (en) * 1980-09-15 1984-02-28 Motorola, Inc. Microprocessor with duplicate registers for processing interrupts
JPS5757345A (en) * 1980-09-24 1982-04-06 Toshiba Corp Data controller
JPS57150040A (en) 1981-03-11 1982-09-16 Mitsubishi Electric Corp Pipeline computer
JPS57155666A (en) * 1981-03-20 1982-09-25 Fujitsu Ltd Instruction controlling system of vector processor
US4574349A (en) 1981-03-30 1986-03-04 International Business Machines Corp. Apparatus for addressing a larger number of instruction addressable central processor registers than can be identified by a program instruction
US4814979A (en) 1981-04-01 1989-03-21 Teradata Corporation Network to transmit prioritized subtask pockets to dedicated processors
JPS57204125A (en) 1981-06-10 1982-12-14 Hitachi Ltd Electron-ray drawing device
US4482950A (en) 1981-09-24 1984-11-13 Dshkhunian Valery Single-chip microcomputer
US4498134A (en) 1982-01-26 1985-02-05 Hughes Aircraft Company Segregator functional plane for use in a modular array processor
JPS58151655A (ja) * 1982-03-03 1983-09-08 Fujitsu Ltd 情報処理装置
US4434641A (en) * 1982-03-11 1984-03-06 Ball Corporation Buckle resistance for metal container closures
US4484272A (en) * 1982-07-14 1984-11-20 Burroughs Corporation Digital computer for executing multiple instruction sets in a simultaneous-interleaved fashion
JPS5932045A (ja) * 1982-08-16 1984-02-21 Hitachi Ltd 情報処理装置
US4500963A (en) 1982-11-29 1985-02-19 The United States Of America As Represented By The Secretary Of The Army Automatic layout program for hybrid microcircuits (HYPAR)
US4597054A (en) 1982-12-02 1986-06-24 Ncr Corporation Arbiter circuit and method
US4594655A (en) * 1983-03-14 1986-06-10 International Business Machines Corporation (k)-Instructions-at-a-time pipelined processor for parallel execution of inherently sequential instructions
US4800486A (en) * 1983-09-29 1989-01-24 Tandem Computers Incorporated Multiple data patch CPU architecture
US4807115A (en) * 1983-10-07 1989-02-21 Cornell Research Foundation, Inc. Instruction issuing mechanism for processors with multiple functional units
GB8329509D0 (en) * 1983-11-04 1983-12-07 Inmos Ltd Computer
JPS60120439A (ja) * 1983-12-05 1985-06-27 Nec Corp 演算処理装置
JPS60168238A (ja) * 1984-02-10 1985-08-31 Hitachi Ltd パイプラインデータ処理装置
US4561051A (en) 1984-02-10 1985-12-24 Prime Computer, Inc. Memory access method and apparatus in multiple processor systems
AU553416B2 (en) * 1984-02-24 1986-07-17 Fujitsu Limited Pipeline processing
JPS60225943A (ja) * 1984-04-25 1985-11-11 Hitachi Ltd 例外割込み処理方式
US4648045A (en) 1984-05-23 1987-03-03 The Board Of Trustees Of The Leland Standford Jr. University High speed memory and processor system for raster display
JPS6140650A (ja) 1984-08-02 1986-02-26 Nec Corp マイクロコンピユ−タ
US4766564A (en) * 1984-08-13 1988-08-23 International Business Machines Corporation Dual putaway/bypass busses for multiple arithmetic units
US4677545A (en) 1984-10-12 1987-06-30 American Telephone And Telegraph Company Microprocessor having macro-rom and main program queues
US4991081A (en) 1984-10-31 1991-02-05 Texas Instruments Incorporated Cache memory addressable by both physical and virtual addresses
US4775927A (en) * 1984-10-31 1988-10-04 International Business Machines Corporation Processor including fetch operation for branch instruction with control tag
ATE94999T1 (de) * 1984-11-21 1993-10-15 Harris Corp Mikroprozessor fuer forth-aehnliche sprache.
JPS61133439A (ja) 1984-12-04 1986-06-20 Nec Corp 命令先取り制御方式
JPH0652784B2 (ja) 1984-12-07 1994-07-06 富士通株式会社 ゲートアレイ集積回路装置及びその製造方法
US4829467A (en) 1984-12-21 1989-05-09 Canon Kabushiki Kaisha Memory controller including a priority order determination circuit
NL193475C (nl) * 1984-12-27 1999-11-02 Sony Corp Microprocessorinrichting.
US5255384A (en) 1985-02-22 1993-10-19 Intergraph Corporation Memory address translation system having modifiable and non-modifiable translation mechanisms
US4714994A (en) * 1985-04-30 1987-12-22 International Business Machines Corp. Instruction prefetch buffer control
JPH0762823B2 (ja) * 1985-05-22 1995-07-05 株式会社日立製作所 デ−タ処理装置
CA1254661A (en) * 1985-06-28 1989-05-23 Allen J. Baum Method and means for instruction combination for code compression
US4613941A (en) 1985-07-02 1986-09-23 The United States Of America As Represented By The Secretary Of The Army Routing method in computer aided customization of a two level automated universal array
US4945479A (en) 1985-07-31 1990-07-31 Unisys Corporation Tightly coupled scientific processing system
US4777588A (en) 1985-08-30 1988-10-11 Advanced Micro Devices, Inc. General-purpose register file optimized for intraprocedural register allocation, procedure calls, and multitasking performance
US4734852A (en) * 1985-08-30 1988-03-29 Advanced Micro Devices, Inc. Mechanism for performing data references to storage in parallel with instruction execution on a reduced instruction-set processor
US4722049A (en) * 1985-10-11 1988-01-26 Unisys Corporation Apparatus for out-of-order program execution
US4719569A (en) 1985-10-11 1988-01-12 Sun Microsystems, Inc. Arbitrator for allocating access to data processing resources
JPH0622035B2 (ja) * 1985-11-13 1994-03-23 株式会社日立製作所 ベクトル処理装置
JPS62152043A (ja) * 1985-12-26 1987-07-07 Nec Corp 命令コ−ドアクセス制御方式
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.
IL81762A0 (en) * 1986-04-11 1987-10-20 Symbolics Inc Instruction prefetch unit
JP2545789B2 (ja) 1986-04-14 1996-10-23 株式会社日立製作所 情報処理装置
US4809169A (en) * 1986-04-23 1989-02-28 Advanced Micro Devices, Inc. Parallel, multiple coprocessor computer architecture having plural execution modes
US4903196A (en) * 1986-05-02 1990-02-20 International Business Machines Corporation Method and apparatus for guaranteeing the logical integrity of data in the general purpose registers of a complex multi-execution unit uniprocessor
US4811208A (en) 1986-05-16 1989-03-07 Intel Corporation Stack frame cache on a microprocessor chip
US5051940A (en) * 1990-04-04 1991-09-24 International Business Machines Corporation Data dependency collapsing hardware apparatus
JP2684362B2 (ja) 1986-06-18 1997-12-03 株式会社日立製作所 可変長データの記憶方式
US4814978A (en) 1986-07-15 1989-03-21 Dataflow Computer Corporation Dataflow processing element, multiprocessor, and processes
JPS6324428A (ja) * 1986-07-17 1988-02-01 Mitsubishi Electric Corp キヤツシユメモリ
US4942323A (en) * 1986-07-28 1990-07-17 Decesare Dominic Two pole electric motor with stator winding encircling the rotor
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
JPS6393041A (ja) * 1986-10-07 1988-04-23 Mitsubishi Electric Corp 計算機
JPH0793358B2 (ja) 1986-11-10 1995-10-09 日本電気株式会社 ブロック配置処理方式
US4841453A (en) 1986-11-10 1989-06-20 Ibm Corporation Multidirectional scan and print capability
JPS63131230A (ja) * 1986-11-21 1988-06-03 Hitachi Ltd 情報処理装置
JPH0810430B2 (ja) 1986-11-28 1996-01-31 株式会社日立製作所 情報処理装置
US5283903A (en) 1986-12-25 1994-02-01 Nec Corporation Priority selector
US5226170A (en) * 1987-02-24 1993-07-06 Digital Equipment Corporation Interface between processor and special instruction processor in digital data processing system
US5179689A (en) 1987-03-13 1993-01-12 Texas Instruments Incorporated Dataprocessing device with instruction cache
US4833599A (en) * 1987-04-20 1989-05-23 Multiflow Computer, Inc. Hierarchical priority branch handling for parallel execution in a parallel processor
US4858116A (en) 1987-05-01 1989-08-15 Digital Equipment Corporation Method and apparatus for managing multiple lock indicators in a multiprocessor computer system
JP2510591B2 (ja) * 1987-06-12 1996-06-26 株式会社日立製作所 命令処理装置
JPH07113903B2 (ja) 1987-06-26 1995-12-06 株式会社日立製作所 キャッシュ記憶制御方式
US4992938A (en) * 1987-07-01 1991-02-12 International Business Machines Corporation Instruction control mechanism for a computing system with register renaming, map table and queues indicating available registers
US5134561A (en) 1987-07-20 1992-07-28 International Business Machines Corporation Computer system with logic for writing instruction identifying data into array control lists for precise post-branch recoveries
US4901233A (en) 1987-07-20 1990-02-13 International Business Machines Corporation Computer system with logic for writing instruction identifying data into array control lists for precise post-branch recoveries
JP2624484B2 (ja) 1987-07-31 1997-06-25 三井東圧化学株式会社 中国語の入力処理方法
US5150309A (en) 1987-08-04 1992-09-22 Texas Instruments Incorporated Comprehensive logic circuit layout system
US4980817A (en) 1987-08-31 1990-12-25 Digital Equipment Vector register system for executing plural read/write commands concurrently and independently routing data to plural read/write ports
US4991078A (en) * 1987-09-29 1991-02-05 Digital Equipment Corporation Apparatus and method for a pipelined central processing unit in a data processing system
EP0312764A3 (de) 1987-10-19 1991-04-10 International Business Machines Corporation Datenprozessor mit mehrfachen Ausführungseinheiten zur parallelen Ausführung von mehreren Befehlsklassen
US5089951A (en) 1987-11-05 1992-02-18 Kabushiki Kaisha Toshiba Microcomputer incorporating memory
US5197136A (en) * 1987-11-12 1993-03-23 Matsushita Electric Industrial Co., Ltd. Processing system for branch instruction
US4823201A (en) 1987-11-16 1989-04-18 Technology, Inc. 64 Processor for expanding a compressed video signal
US5185878A (en) 1988-01-20 1993-02-09 Advanced Micro Device, Inc. Programmable cache memory as well as system incorporating same and method of operating programmable cache memory
US4926323A (en) * 1988-03-03 1990-05-15 Advanced Micro Devices, Inc. Streamlined instruction processor
JPH0769821B2 (ja) * 1988-03-04 1995-07-31 日本電気株式会社 情報処理装置におけるバイパスライン制御方式
JPH01228865A (ja) 1988-03-09 1989-09-12 Minolta Camera Co Ltd プリンタ制御装置
US5187796A (en) * 1988-03-29 1993-02-16 Computer Motion, Inc. Three-dimensional vector co-processor having I, J, and K register files and I, J, and K execution units
US5155817A (en) 1988-04-01 1992-10-13 Kabushiki Kaisha Toshiba Microprocessor
US5301278A (en) 1988-04-29 1994-04-05 International Business Machines Corporation Flexible dynamic memory controller
US5003462A (en) * 1988-05-31 1991-03-26 International Business Machines Corporation Apparatus and method for implementing precise interrupts on a pipelined processor with multiple functional units with separate address translation interrupt means
US4897810A (en) * 1988-06-13 1990-01-30 Advanced Micro Devices, Inc. Asynchronous interrupt status bit circuit
US5261057A (en) 1988-06-30 1993-11-09 Wang Laboratories, Inc. I/O bus to system interface
US5097409A (en) 1988-06-30 1992-03-17 Wang Laboratories, Inc. Multi-processor system with cache memories
JP2761506B2 (ja) 1988-07-08 1998-06-04 株式会社日立製作所 主記憶制御装置
JPH0222736A (ja) 1988-07-12 1990-01-25 Nec Corp 中央処理装置
US5032985A (en) 1988-07-21 1991-07-16 International Business Machines Corporation Multiprocessor system with memory fetch buffer invoked during cross-interrogation
US5148536A (en) 1988-07-25 1992-09-15 Digital Equipment Corporation Pipeline having an integral cache which processes cache misses and loads data in parallel
JPH0673105B2 (ja) * 1988-08-11 1994-09-14 株式会社東芝 命令パイプライン方式のマイクロプロセッサ
US5291615A (en) 1988-08-11 1994-03-01 Kabushiki Kaisha Toshiba Instruction pipeline microprocessor
US4974155A (en) * 1988-08-15 1990-11-27 Evans & Sutherland Computer Corp. Variable delay branch system
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
US5167035A (en) 1988-09-08 1992-11-24 Digital Equipment Corporation Transferring messages between nodes in a network
JPH0287229A (ja) 1988-09-24 1990-03-28 Nec Corp 実行命令の先取り制御方式
US4879787A (en) 1988-10-03 1989-11-14 Walls Thomas J Shoe lace knot securing device
EP0365188B1 (de) 1988-10-18 1996-09-18 Hewlett-Packard Company Verfahren und Vorrichtung für Zustandskode in einem Zentralprozessor
JP2672599B2 (ja) * 1988-10-18 1997-11-05 ヤマハ 株式会社 コンピュータシステム
JP2810068B2 (ja) * 1988-11-11 1998-10-15 株式会社日立製作所 プロセッサシステム、コンピュータシステム及び命令処理方法
US5058451A (en) * 1988-11-11 1991-10-22 Kabushiki Kaisha Kobe Seiko Sho Control lever apparatus and actuator operation apparatus
JPH0769824B2 (ja) 1988-11-11 1995-07-31 株式会社日立製作所 複数命令同時処理方式
KR920006613B1 (ko) * 1988-12-01 1992-08-10 재단법인한국전자통신연구소 파이프라인으로 동작하는 프로세서의 명령어 페취 유니트
GB8828817D0 (en) * 1988-12-09 1989-01-18 Int Computers Ltd Data processing apparatus
IL92605A0 (en) * 1988-12-19 1990-08-31 Bull Hn Information Syst Production line method and apparatus for high performance instruction execution
JPH0769811B2 (ja) * 1988-12-21 1995-07-31 松下電器産業株式会社 データ処理装置
US5148533A (en) 1989-01-05 1992-09-15 Bull Hn Information Systems Inc. Apparatus and method for data group coherency in a tightly coupled data processing system with plural execution and data cache units
US5125092A (en) 1989-01-09 1992-06-23 International Business Machines Corporation Method and apparatus for providing multiple condition code fields to to allow pipelined instructions contention free access to separate condition codes
JP2736092B2 (ja) 1989-01-10 1998-04-02 株式会社東芝 バッファ装置
US5127091A (en) * 1989-01-13 1992-06-30 International Business Machines Corporation System for reducing delay in instruction execution by executing branch instructions in separate processor while dispatching subsequent instructions to primary processor
US5075840A (en) * 1989-01-13 1991-12-24 International Business Machines Corporation Tightly coupled multiprocessor instruction synchronization
US5167026A (en) 1989-02-03 1992-11-24 Digital Equipment Corporation Simultaneously or sequentially decoding multiple specifiers of a variable length pipeline instruction based on detection of modified value of specifier registers
US5142633A (en) * 1989-02-03 1992-08-25 Digital Equipment Corporation Preprocessing implied specifiers in a pipelined processor
US5142634A (en) 1989-02-03 1992-08-25 Digital Equipment Corporation Branch prediction
US5125083A (en) 1989-02-03 1992-06-23 Digital Equipment Corporation Method and apparatus for resolving a variable number of potential memory access conflicts in a pipelined computer system
US4985825A (en) * 1989-02-03 1991-01-15 Digital Equipment Corporation System for delaying processing of memory access exceptions until the execution stage of an instruction pipeline of a virtual memory system based digital computer
US5222223A (en) 1989-02-03 1993-06-22 Digital Equipment Corporation Method and apparatus for ordering and queueing multiple memory requests
US5067069A (en) 1989-02-03 1991-11-19 Digital Equipment Corporation Control of multiple functional units with parallel operation in a microcoded execution unit
US5109495A (en) 1989-02-03 1992-04-28 Digital Equipment Corp. Method and apparatus using a source operand list and a source operand pointer queue between the execution unit and the instruction decoding and operand processing units of a pipelined data processor
US5133074A (en) 1989-02-08 1992-07-21 Acer Incorporated Deadlock resolution with cache snooping
US5226166A (en) 1989-02-10 1993-07-06 Mitsubishi Denki K.K. Parallel operation processor with second command unit
US5293500A (en) 1989-02-10 1994-03-08 Mitsubishi Denki K.K. Parallel processing method and apparatus
JPH0630063B2 (ja) * 1989-02-17 1994-04-20 株式会社東芝 マイクロプロセッサ
US5768575A (en) * 1989-02-24 1998-06-16 Advanced Micro Devices, Inc. Semi-Autonomous RISC pipelines for overlapped execution of RISC-like instructions within the multiple superscalar execution units of a processor having distributed pipeline control for sepculative and out-of-order execution of complex instructions
US5226126A (en) * 1989-02-24 1993-07-06 Nexgen Microsystems Processor having plurality of functional units for orderly retiring outstanding operations based upon its associated tags
US5239633A (en) * 1989-03-24 1993-08-24 Mitsubishi Denki Kabushiki Kaisha Data processor executing memory indirect addressing and register indirect addressing
JPH02278337A (ja) 1989-04-19 1990-11-14 Nec Corp 命令キュー装置
US5119485A (en) 1989-05-15 1992-06-02 Motorola, Inc. Method for data bus snooping in a data processing system by selective concurrent read and invalidate cache operation
CN1168004C (zh) * 1989-05-17 2004-09-22 国际商业机器公司 在数据处理系统中提供容错环境和体系结构的装置
US5155809A (en) * 1989-05-17 1992-10-13 International Business Machines Corp. Uncoupling a central processing unit from its associated hardware for interaction with data handling apparatus alien to the operating system controlling said unit and hardware
US5072364A (en) 1989-05-24 1991-12-10 Tandem Computers Incorporated Method and apparatus for recovering from an incorrect branch prediction in a processor that executes a family of instructions in parallel
CA2016068C (en) * 1989-05-24 2000-04-04 Robert W. Horst Multiple instruction issue computer architecture
US5136697A (en) 1989-06-06 1992-08-04 Advanced Micro Devices, Inc. System for reducing delay for execution subsequent to correctly predicted branch instruction using fetch information stored with each block of instructions in cache
US5129067A (en) 1989-06-06 1992-07-07 Advanced Micro Devices, Inc. Multiple instruction decoder for minimizing register port requirements
JPH0314025A (ja) * 1989-06-13 1991-01-22 Nec Corp 命令実行制御方式
DE69032812T2 (de) 1989-07-07 1999-04-29 Hitachi Ltd Vorrichtung und Verfahren zur parallelen Verarbeitung
JP2505887B2 (ja) * 1989-07-14 1996-06-12 富士通株式会社 命令処理システム
KR940000968B1 (ko) * 1989-08-28 1994-02-07 니뽄 덴끼 가부시끼가이샤 마이크로프로세서
US5317734A (en) * 1989-08-29 1994-05-31 North American Philips Corporation Method of synchronizing parallel processors employing channels and compiling method minimizing cross-processor data dependencies
JPH07120284B2 (ja) * 1989-09-04 1995-12-20 三菱電機株式会社 データ処理装置
US5303382A (en) 1989-09-21 1994-04-12 Digital Equipment Corporation Arbiter with programmable dynamic request prioritization
DE69031257T2 (de) * 1989-09-21 1998-02-12 Texas Instruments Inc Integrierte Schaltung mit einem eingebetteten digitalen Signalprozessor
JPH03137729A (ja) 1989-10-23 1991-06-12 Hokuriku Nippon Denki Software Kk 先行制御方式
JP2835103B2 (ja) * 1989-11-01 1998-12-14 富士通株式会社 命令指定方法及び命令実行方式
JPH03147134A (ja) 1989-11-02 1991-06-24 Oki Electric Ind Co Ltd 命令シーケンス制御装置
US5179530A (en) * 1989-11-03 1993-01-12 Zoran Corporation Architecture for integrated concurrent vector signal processor
US5226125A (en) 1989-11-17 1993-07-06 Keith Balmer Switch matrix having integrated crosspoint logic and method of operation
EP0429733B1 (de) 1989-11-17 1999-04-28 Texas Instruments Incorporated Multiprozessor mit Koordinatenschalter zwischen Prozessoren und Speichern
US5487156A (en) * 1989-12-15 1996-01-23 Popescu; Valeri Processor architecture having independently fetching issuing and updating operations of instructions which are sequentially assigned and stored in order fetched
JPH03186928A (ja) * 1989-12-16 1991-08-14 Mitsubishi Electric Corp データ処理装置
US5179673A (en) 1989-12-18 1993-01-12 Digital Equipment Corporation Subroutine return prediction mechanism using ring buffer and comparing predicated address with actual address to validate or flush the pipeline
US5197130A (en) 1989-12-29 1993-03-23 Supercomputer Systems Limited Partnership Cluster architecture for a highly parallel scalar/vector multiprocessor system
JPH061463B2 (ja) 1990-01-16 1994-01-05 インターナショナル・ビジネス・マシーンズ・コーポレーション マルチプロセッサ・システムおよびそのプライベート・キャッシュ制御方法
US5251306A (en) 1990-01-16 1993-10-05 Advanced Micro Devices, Inc. Apparatus for controlling execution of a program in a computing device
US5241636A (en) 1990-02-14 1993-08-31 Intel Corporation Method for parallel instruction execution in a computer
US5222240A (en) 1990-02-14 1993-06-22 Intel Corporation Method and apparatus for delaying writing back the results of instructions to a processor
US5230068A (en) * 1990-02-26 1993-07-20 Nexgen Microsystems Cache memory system for dynamically altering single cache memory line as either branch target entry or pre-fetch instruction queue based upon instruction sequence
US5185872A (en) 1990-02-28 1993-02-09 Intel Corporation System for executing different cycle instructions by selectively bypassing scoreboard register and canceling the execution of conditionally issued instruction if needed resources are busy
US5120083A (en) 1990-03-19 1992-06-09 Henkels & Mccoy, Inc. Expansion joint for conduit for cables
JP2818249B2 (ja) 1990-03-30 1998-10-30 株式会社東芝 電子計算機
DE69132675T2 (de) * 1990-04-06 2002-06-13 Nec Corp Parallelfliessband-Befehlsverarbeitungssystem für sehr lange Befehlswörter
IT1247640B (it) 1990-04-26 1994-12-28 St Microelectronics Srl Operazioni booleane tra due qualsiasi bit di due qualsiasi registri
US5201056A (en) 1990-05-02 1993-04-06 Motorola, Inc. RISC microprocessor architecture with multi-bit tag extended instructions for selectively attaching tag from either instruction or input data to arithmetic operation output
US5214763A (en) 1990-05-10 1993-05-25 International Business Machines Corporation Digital computer system capable of processing two or more instructions in parallel and having a coche and instruction compounding mechanism
EP0457403B1 (de) 1990-05-18 1998-01-21 Koninklijke Philips Electronics N.V. Mehrstufiger Befehlscachespeicher und Verwendungsverfahren dafür
US5249286A (en) 1990-05-29 1993-09-28 National Semiconductor Corporation Selectively locking memory locations within a microprocessor's on-chip cache
CA2038264C (en) * 1990-06-26 1995-06-27 Richard James Eickemeyer In-memory preprocessor for a scalable compound instruction set machine processor
US5155843A (en) * 1990-06-29 1992-10-13 Digital Equipment Corporation Error transition mode for multi-processor system
EP0463965B1 (de) * 1990-06-29 1998-09-09 Digital Equipment Corporation Sprungvorhersageeinheit für hochleistungsfähigen Prozessor
EP0468831B1 (de) 1990-06-29 1997-10-15 Digital Equipment Corporation Busprotokoll für Prozessor mit write-back cache
US5197132A (en) 1990-06-29 1993-03-23 Digital Equipment Corporation Register mapping system having a log containing sequential listing of registers that were changed in preceding cycles for precise post-branch recovery
CA2045773A1 (en) 1990-06-29 1991-12-30 Compaq Computer Corporation Byte-compare operation for high-performance processor
JPH0475139A (ja) * 1990-07-18 1992-03-10 Toshiba Corp ループ並列化装置
JPH0814492B2 (ja) * 1990-09-21 1996-02-14 日本航空電子工業株式会社 光ファイバジャイロ
DE69130723T2 (de) * 1990-10-05 1999-07-22 Koninkl Philips Electronics Nv Verarbeitungsgerät mit Speicherschaltung und eine Gruppe von Funktionseinheiten
US5301340A (en) * 1990-10-31 1994-04-05 International Business Machines Corporation IC chips including ALUs and identical register files whereby a number of ALUs directly and concurrently write results to every register file per cycle
US5222244A (en) 1990-12-20 1993-06-22 Intel Corporation Method of modifying a microinstruction with operands specified by an instruction held in an alias register
USH1291H (en) 1990-12-20 1994-02-01 Hinton Glenn J Microprocessor in which multiple instructions are executed in one clock cycle by providing separate machine bus access to a register file for different types of instructions
US5303362A (en) 1991-03-20 1994-04-12 Digital Equipment Corporation Coupled memory multiprocessor computer system including cache coherency management protocols
US5261071A (en) 1991-03-21 1993-11-09 Control Data System, Inc. Dual pipe cache memory with out-of-order issue capability
US5287467A (en) 1991-04-18 1994-02-15 International Business Machines Corporation Pipeline for removing and concurrently executing two or more branch instructions in synchronization with other instructions executing in the execution unit
US5488729A (en) * 1991-05-15 1996-01-30 Ross Technology, Inc. Central processing unit architecture with symmetric instruction scheduling to achieve multiple instruction launch and execution
US5355457A (en) 1991-05-21 1994-10-11 Motorola, Inc. Data processor for performing simultaneous instruction retirement and backtracking
US5630157A (en) 1991-06-13 1997-05-13 International Business Machines Corporation Computer organization for multiple and out-of-order execution of condition code testing and setting instructions
US5278963A (en) 1991-06-21 1994-01-11 International Business Machines Corporation Pretranslation of virtual addresses prior to page crossing
US5539911A (en) * 1991-07-08 1996-07-23 Seiko Epson Corporation High-performance, superscalar-based computer system with out-of-order instruction execution
US5440752A (en) 1991-07-08 1995-08-08 Seiko Epson Corporation Microprocessor architecture with a switch network for data transfer between cache, memory port, and IOU
US5493687A (en) 1991-07-08 1996-02-20 Seiko Epson Corporation RISC microprocessor architecture implementing multiple typed register sets
KR100294276B1 (ko) 1991-07-08 2001-09-17 야스카와 히데아키 고속트랩및예외상태를구현한알아이에스씨마이크로프로세서구조
US5826055A (en) 1991-07-08 1998-10-20 Seiko Epson Corporation System and method for retiring instructions in a superscalar microprocessor
ATE164463T1 (de) 1991-07-08 1998-04-15 Seiko Epson Corp Single-chip seitendrucker-steuerschaltung
US5961629A (en) * 1991-07-08 1999-10-05 Seiko Epson Corporation High performance, superscalar-based computer system with out-of-order instruction execution
ATE200357T1 (de) 1991-07-08 2001-04-15 Seiko Epson Corp Risc-prozessor mit dehnbarer architektur
US5345569A (en) * 1991-09-20 1994-09-06 Advanced Micro Devices, Inc. Apparatus and method for resolving dependencies among a plurality of instructions within a storage device
GB2260628A (en) 1991-10-11 1993-04-21 Intel Corp Line buffer for cache memory
JPH0820949B2 (ja) 1991-11-26 1996-03-04 松下電器産業株式会社 情報処理装置
US5285527A (en) 1991-12-11 1994-02-08 Northern Telecom Limited Predictive historical cache memory
US5617554A (en) 1992-02-10 1997-04-01 Intel Corporation Physical address size selection and page size selection in an address translator
US5398330A (en) 1992-03-05 1995-03-14 Seiko Epson Corporation Register file backup queue
JPH07504773A (ja) 1992-03-18 1995-05-25 セイコーエプソン株式会社 マルチ幅のメモリ・サブシステムをサポートするためのシステム並びに方法
US5371684A (en) 1992-03-31 1994-12-06 Seiko Epson Corporation Semiconductor floor plan for a register renaming circuit
DE69311330T2 (de) 1992-03-31 1997-09-25 Seiko Epson Corp Befehlsablauffolgeplanung von einem risc-superskalarprozessor
JP3137729B2 (ja) 1992-04-09 2001-02-26 本田技研工業株式会社 ガバリ部品の製造方法
WO1993022722A1 (en) 1992-05-01 1993-11-11 Seiko Epson Corporation A system and method for retiring instructions in a superscalar microprocessor
US5442756A (en) 1992-07-31 1995-08-15 Intel Corporation Branch prediction and resolution apparatus for a superscalar computer processor
US5619668A (en) 1992-08-10 1997-04-08 Intel Corporation Apparatus for register bypassing in a microprocessor
US6735685B1 (en) 1992-09-29 2004-05-11 Seiko Epson Corporation System and method for handling load and/or store operations in a superscalar microprocessor
US5524225A (en) 1992-12-18 1996-06-04 Advanced Micro Devices Inc. Cache system and method for providing software controlled writeback
US5604912A (en) 1992-12-31 1997-02-18 Seiko Epson Corporation System and method for assigning tags to instructions to control instruction execution
US5628021A (en) 1992-12-31 1997-05-06 Seiko Epson Corporation System and method for assigning tags to control instruction processing in a superscalar processor
JP3531166B2 (ja) 1992-12-31 2004-05-24 セイコーエプソン株式会社 レジスタ・リネーミングのシステム及び方法
US5627984A (en) 1993-03-31 1997-05-06 Intel Corporation Apparatus and method for entry allocation for a buffer resource utilizing an internal two cycle pipeline
KR100310581B1 (ko) 1993-05-14 2001-12-17 피터 엔. 데트킨 분기목표버퍼의추측기록메카니즘
US5577217A (en) 1993-05-14 1996-11-19 Intel Corporation Method and apparatus for a branch target buffer with shared branch pattern tables for associated branch predictions
JPH0728695A (ja) 1993-07-08 1995-01-31 Nec Corp メモリコントローラ
US5613132A (en) 1993-09-30 1997-03-18 Intel Corporation Integer and floating point register alias table within processor device
US5446912A (en) * 1993-09-30 1995-08-29 Intel Corporation Partial width stalls within register alias table
US5630149A (en) 1993-10-18 1997-05-13 Cyrix Corporation Pipelined processor with register renaming hardware to accommodate multiple size registers
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
DE69429061T2 (de) 1993-10-29 2002-07-18 Advanced Micro Devices Inc Superskalarmikroprozessoren
JP3218524B2 (ja) 1993-12-22 2001-10-15 村田機械株式会社 ワークホルダーのはみ出し検出装置
US5574935A (en) 1993-12-29 1996-11-12 Intel Corporation Superscalar processor with a multi-port reorder buffer
US5630075A (en) 1993-12-30 1997-05-13 Intel Corporation Write combining buffer for sequentially addressed partial line operations originating from a single instruction
US5452426A (en) 1994-01-04 1995-09-19 Intel Corporation Coordinating speculative and committed state register source data and immediate source data in a processor
US5619664A (en) 1994-01-04 1997-04-08 Intel Corporation Processor with architecture for improved pipelining of arithmetic instructions by forwarding redundant intermediate data forms
US5604877A (en) 1994-01-04 1997-02-18 Intel Corporation Method and apparatus for resolving return from subroutine instructions in a computer processor
US5627985A (en) 1994-01-04 1997-05-06 Intel Corporation Speculative and committed resource files in an out-of-order processor
US5577200A (en) 1994-02-28 1996-11-19 Intel Corporation Method and apparatus for loading and storing misaligned data on an out-of-order execution computer system
US5564056A (en) 1994-03-01 1996-10-08 Intel Corporation Method and apparatus for zero extension and bit shifting to preserve register parameters in a microprocessor utilizing register renaming
US5625788A (en) 1994-03-01 1997-04-29 Intel Corporation Microprocessor with novel instruction for signaling event occurrence and for providing event handling information in response thereto
US5630083A (en) 1994-03-01 1997-05-13 Intel Corporation Decoder for decoding multiple instructions in parallel
US5586278A (en) 1994-03-01 1996-12-17 Intel Corporation Method and apparatus for state recovery following branch misprediction in an out-of-order microprocessor
US5608885A (en) 1994-03-01 1997-03-04 Intel Corporation Method for handling instructions from a branch prior to instruction decoding in a computer which executes variable-length instructions
US5623628A (en) 1994-03-02 1997-04-22 Intel Corporation Computer system and method for maintaining memory consistency in a pipelined, non-blocking caching bus request queue
US5394351A (en) 1994-03-11 1995-02-28 Nexgen, Inc. Optimized binary adder and comparator having an implicit constant for an input
US5574927A (en) * 1994-03-25 1996-11-12 International Meta Systems, Inc. RISC architecture computer configured for emulation of the instruction set of a target computer
US5490280A (en) 1994-03-31 1996-02-06 Intel Corporation Apparatus and method for entry allocation for a resource buffer
US5615126A (en) 1994-08-24 1997-03-25 Lsi Logic Corporation High-speed internal interconnection technique for integrated circuits that reduces the number of signal lines through multiplexing
US5819101A (en) 1994-12-02 1998-10-06 Intel Corporation Method for packing a plurality of packed data elements in response to a pack instruction
WO1996017291A1 (en) 1994-12-02 1996-06-06 Intel Corporation Microprocessor with packing operation of composite operands
US5666494A (en) 1995-03-31 1997-09-09 Samsung Electronics Co., Ltd. Queue management mechanism which allows entries to be processed in any order
US6385634B1 (en) 1995-08-31 2002-05-07 Intel Corporation Method for performing multiply-add operations on packed data
US5745375A (en) 1995-09-29 1998-04-28 Intel Corporation Apparatus and method for controlling power usage
US5778210A (en) * 1996-01-11 1998-07-07 Intel Corporation Method and apparatus for recovering the state of a speculatively scheduled operation in a processor which cannot be executed at the speculated time
US5832205A (en) * 1996-08-20 1998-11-03 Transmeta Corporation Memory controller for a microprocessor for detecting a failure of speculation on the physical nature of a component being addressed
US5961129A (en) * 1997-02-07 1999-10-05 Post; Peter G. Quick-Release interlocking frame assembly for interchangeably mounting operative sports devices to a boot sole
US6418529B1 (en) 1998-03-31 2002-07-09 Intel Corporation Apparatus and method for performing intra-add operation
JP3147134U (ja) 2008-09-17 2008-12-18 洋 吉迫 プランター

Also Published As

Publication number Publication date
JP2006236396A (ja) 2006-09-07
US5539911A (en) 1996-07-23
KR100325177B1 (ko) 2002-02-21
JP2000339160A (ja) 2000-12-08
JP2005149534A (ja) 2005-06-09
US6934829B2 (en) 2005-08-23
KR100325175B1 (ko) 2002-02-25
JP2000339162A (ja) 2000-12-08
KR20040000382A (de) 2004-01-03
KR20040004504A (de) 2004-01-13
KR100403167B1 (de) 2003-10-30
ATE450826T1 (de) 2009-12-15
KR100469952B1 (de) 2005-02-04
JP2004348772A (ja) 2004-12-09
EP1024426A3 (de) 2001-08-08
JP2005251227A (ja) 2005-09-15
EP1385085A1 (de) 2004-01-28
JP2005122740A (ja) 2005-05-12
US20020029328A1 (en) 2002-03-07
JP2005267664A (ja) 2005-09-29
US7487333B2 (en) 2009-02-03
US20070106878A1 (en) 2007-05-10
KR100449236B1 (de) 2004-09-20
KR20070058594A (ko) 2007-06-08
EP0547241B1 (de) 2001-10-10
KR20040004501A (de) 2004-01-13
DE69232113T2 (de) 2002-03-14
KR20040004503A (de) 2004-01-13
JP2005108264A (ja) 2005-04-21
KR100764894B1 (ko) 2007-10-09
KR20040000383A (de) 2004-01-03
JP3731605B2 (ja) 2006-01-05
KR20070058597A (ko) 2007-06-08
KR20040000385A (de) 2004-01-03
US6038654A (en) 2000-03-14
KR100469959B1 (de) 2005-02-11
JP3654137B2 (ja) 2005-06-02
US6948052B2 (en) 2005-09-20
US7721070B2 (en) 2010-05-18
JP3791547B2 (ja) 2006-06-28
JP3791545B2 (ja) 2006-06-28
KR100469954B1 (de) 2005-02-04
EP1024426A2 (de) 2000-08-02
KR20040004505A (de) 2004-01-13
KR20070056140A (ko) 2007-05-31
KR100559455B1 (ko) 2006-03-10
HK1014782A1 (en) 1999-09-30
KR100469971B1 (de) 2005-02-04
JP2006313564A (ja) 2006-11-16
JP2006031729A (ja) 2006-02-02
JP2000353090A (ja) 2000-12-19
KR100393495B1 (de) 2003-08-02
DE03024585T1 (de) 2004-07-08
US6092181A (en) 2000-07-18
DE69232113D1 (de) 2001-11-15
ATE206829T1 (de) 2001-10-15
KR20080109099A (ko) 2008-12-16
KR20040004499A (de) 2004-01-13
KR100469964B1 (de) 2005-02-11
JP3838252B2 (ja) 2006-10-25
KR100764895B1 (ko) 2007-10-09
JP3791550B2 (ja) 2006-06-28
KR20040004506A (de) 2004-01-13
ATE260485T1 (de) 2004-03-15
US6941447B2 (en) 2005-09-06
KR100403165B1 (de) 2003-10-30
JP3729202B2 (ja) 2005-12-21
KR100393494B1 (de) 2003-08-02
EP1385085B1 (de) 2009-12-02
JP3791542B2 (ja) 2006-06-28
KR20070055586A (ko) 2007-05-30
KR100559465B1 (ko) 2006-03-10
JP2005310187A (ja) 2005-11-04
US5689720A (en) 1997-11-18
EP0547241A1 (de) 1993-06-23
KR20040000381A (de) 2004-01-03
US6915412B2 (en) 2005-07-05
KR100403166B1 (de) 2003-10-30
US6272619B1 (en) 2001-08-07
US7162610B2 (en) 2007-01-09
US20030056086A1 (en) 2003-03-20
JP3731604B2 (ja) 2006-01-05
US6959375B2 (en) 2005-10-25
US6128723A (en) 2000-10-03
JP2005293612A (ja) 2005-10-20
DE69233313D1 (de) 2004-04-01
JP3654139B2 (ja) 2005-06-02
US6256720B1 (en) 2001-07-03
KR100393497B1 (de) 2003-08-02
KR20060015783A (ko) 2006-02-20
KR100559463B1 (ko) 2006-03-10
JP2006012195A (ja) 2006-01-12
JP2003131869A (ja) 2003-05-09
US7739482B2 (en) 2010-06-15
DE69233777D1 (de) 2010-01-14
US20040093485A1 (en) 2004-05-13
US6101594A (en) 2000-08-08
KR100464272B1 (de) 2005-01-03
KR20060015781A (ko) 2006-02-20
EP1024426B1 (de) 2004-02-25
US20030056087A1 (en) 2003-03-20
KR100469968B1 (de) 2005-02-04
JP3791548B2 (ja) 2006-06-28
JP3654138B2 (ja) 2005-06-02
JP2000339163A (ja) 2000-12-08
KR100875257B1 (ko) 2008-12-19
KR20040004502A (de) 2004-01-13
KR100764898B1 (ko) 2007-10-09
KR100559468B1 (ko) 2006-03-10
US6647485B2 (en) 2003-11-11
KR100875262B1 (ko) 2008-12-22
KR100886000B1 (ko) 2009-03-03
KR20070056141A (ko) 2007-05-31
US6986024B2 (en) 2006-01-10
KR100403164B1 (de) 2003-10-30
KR100633578B1 (ko) 2006-10-16
KR20070058596A (ko) 2007-06-08
KR100633574B1 (ko) 2006-10-16
KR100559482B1 (ko) 2006-03-10
KR100559475B1 (ko) 2006-03-10
KR20040000410A (de) 2004-01-03
KR20040004500A (de) 2004-01-13
US20040093483A1 (en) 2004-05-13
KR100875259B1 (ko) 2008-12-22
KR20040000384A (de) 2004-01-03
KR100325176B1 (ko) 2002-02-25
KR100449244B1 (de) 2004-09-20
JP3760948B2 (ja) 2006-03-29
US20030079113A1 (en) 2003-04-24
JP3915842B2 (ja) 2007-05-16
KR20060015782A (ko) 2006-02-20
WO1993001545A1 (en) 1993-01-21
KR20070058595A (ko) 2007-06-08
KR20040000386A (de) 2004-01-03
US20040093482A1 (en) 2004-05-13
KR930702718A (ko) 1993-09-09
JP2000339161A (ja) 2000-12-08
JP3702873B2 (ja) 2005-10-05
KR100294475B1 (ko) 2001-09-17
JP2000357091A (ja) 2000-12-26
JP3760947B2 (ja) 2006-03-29
KR20040000411A (de) 2004-01-03
JPH06501122A (ja) 1994-01-27
JP3441070B2 (ja) 2003-08-25
KR100875252B1 (ko) 2008-12-19
KR100449242B1 (de) 2004-09-20
US20040054872A1 (en) 2004-03-18
US20090019261A1 (en) 2009-01-15
JP2005149524A (ja) 2005-06-09
KR100449238B1 (de) 2004-09-20
KR100875266B1 (ko) 2008-12-22
KR20070055585A (ko) 2007-05-30
KR100393496B1 (de) 2003-08-02
KR20040004508A (de) 2004-01-13
HK1060417A1 (en) 2004-08-06
JP2000339159A (ja) 2000-12-08
JP3791544B2 (ja) 2006-06-28
KR20040004507A (de) 2004-01-13
US20030070060A1 (en) 2003-04-10
JP2005044383A (ja) 2005-02-17

Similar Documents

Publication Publication Date Title
DE69233313T2 (de) Hochleistungsarchitektur für RISC-Mikroprozessor
DE69233493T2 (de) RISC-Prozessor mit erweiterbarer Architektur
DE2855106C2 (de) Einrichtung zur Durchführung von bedingten Verzweigungen
DE69433339T2 (de) Lade-/Speicherfunktionseinheiten und Datencachespeicher für Mikroprozessoren
DE60205363T2 (de) Mikroprozessor mit einem performance-drosselmechanismus für das energiemanagement
EP0690371B1 (de) Abholungs- und Speicherungspuffer zur nicht-sequentiellen Ausführung in einem Datenverarbeitungssystem
US5987594A (en) Apparatus for executing coded dependent instructions having variable latencies
DE69908193T2 (de) Ausführung von speicher- und ladeoperationen mittels einer linkdatei
DE69932066T2 (de) Mechanismus zur "store-to-load forwarding"
DE69534148T2 (de) Rechnersystem zur Ausführung von Verzweigungsbefehlen
DE60102017T2 (de) Räumungsfilter für adressenübersetzungspuffer
DE69727773T2 (de) Verbesserte Verzweigungsvorhersage in einem Pipelinemikroprozessor
CN100440176C (zh) 用来实现高效和灵活存储器复制操作的方法和系统
US5471591A (en) Combined write-operand queue and read-after-write dependency scoreboard
DE10085363B4 (de) Verfahren und Einrichtung zum Verwalten von Ressourcen in einem Multithreaded-Prozessor
CN100447761C (zh) 用来保护存储器页面的内容的方法和系统
DE60010907T2 (de) Sram-steuerungvorrichtung für parallele prozessorarchitektur mit adressen- und befehlswarteschlange und arbiter
DE60009151T2 (de) Vorhersage von datenbeförderung von speicher- zum ladebefehl mit untrainierung
DE69636416T2 (de) Mikroprozessor ausgelegt zum erkennen eines unterprogramm-aufrufs einer dsp-routine und zum ansteuern eines dsp, diese routine auszuführen
DE60005860T2 (de) Ablaufsteuerung zum ausgeben und wiederausgeben von ketten abhängiger befehle
US4587632A (en) Lookahead stack oriented computer
US20060112261A1 (en) Method and apparatus for incremental commitment to architectural state in a microprocessor
US7584346B1 (en) Method and apparatus for supporting different modes of multi-threaded speculative execution
EP0727735B1 (de) Verfahren und Vorrichtung zum Koordinieren der Benutzung von physikalischen Registern in einem Mikroprozessor
DE69633474T2 (de) Adressierungsverfahren zur nicht-sequentiellen Ausführung von Ladebefehlen hinsichtlich Speicherungsbefehlen

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
R071 Expiry of right

Ref document number: 1024426

Country of ref document: EP