DE69230057T2 - Risc mikroprozessorarchitektur mit mehrere registersätze von unterschiedlichen typen - Google Patents

Risc mikroprozessorarchitektur mit mehrere registersätze von unterschiedlichen typen

Info

Publication number
DE69230057T2
DE69230057T2 DE69230057T DE69230057T DE69230057T2 DE 69230057 T2 DE69230057 T2 DE 69230057T2 DE 69230057 T DE69230057 T DE 69230057T DE 69230057 T DE69230057 T DE 69230057T DE 69230057 T2 DE69230057 T2 DE 69230057T2
Authority
DE
Germany
Prior art keywords
boolean
register
integer
instruction
data
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
DE69230057T
Other languages
English (en)
Other versions
DE69230057D1 (de
Inventor
Sho Chen
Sanjiv Garg
Derek Lentz
Le Trong Nguyen
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
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=24919957&utm_source=***_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=DE69230057(T2) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by Seiko Epson Corp filed Critical Seiko Epson Corp
Publication of DE69230057D1 publication Critical patent/DE69230057D1/de
Application granted granted Critical
Publication of DE69230057T2 publication Critical patent/DE69230057T2/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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30029Logical and Boolean instructions, e.g. XOR, NOT
    • 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/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • 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
    • 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/30138Extension of register space, e.g. register cache
    • 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/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Mathematical Physics (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)

Description

    RISC-Mikroprozessor-Architektur mit mehreren Registersätzen von unterschiedlichen Typen Querverweis auf verwandte Anmeldungen
  • Für die vorliegende Anmeldung von besonderem Interesse sind folgende Anmeldungen:
  • 1. High-Performance RISC Microprocessor Architecture, Anmeldenummer 07/727,006, eingereicht am 08. Juli 1991 von Le T. Nguyen et al.; zugehörige Veröffentlichung: WO-A-93/01 545.
  • 2. Extensible RISC Microprocessor Architecture, Anmeldenummer 07/727,058, eingereicht am 08. Juli 1991 von Le T. Nguyen et al.; zugehörige Veröffentlichung: WO-A-93/01 546.
  • 3. RISC Microprocessor Architecture with Isolated Architectural Dependencies, Anmeldenummer 07/726,744, eingereicht am 08. Juli 1991 von Le T. Nguyen et al.; zugehörige Veröffentlichung: WO-A-93/01 563.
  • 4. RISC Microprocessor Architecture Implementing Fast Trap and Exception State, Anmeldenummer 07/726,942, eingereicht am 08. Juli 1991 von Le T. Nguyen et al.; zugehörige Veröffentlichung WO-A-93/01 547.
  • 5. Single Chip Page Printer Controller, Anmeldenummer 07/726, 929, eingereicht am 08. Juli 1991 von Derek J. Lentz et al.; zugehörige Veröffentlichung WO-A-93/01 565.
  • 6. Microprocessor Architecture Capable of Supporting Multiple Heterogeneous Processors, Anmeldenummer 07/726,893, eingereicht am 08. Juli 1991 von Derek J. Lentz et al.; zugehörige Veröffentlichung: WO-A-93/01 553.
  • Die oben aufgeführten Anmeldungen werden hierbei durch Bezugnahme eingeschlossen, und ihre gesamten Lehren sind Teil der vorliegenden Offenbarung.
  • Hintergrund der Erfindung Gebiet der Erfindung
  • Die vorliegende Erfindung betrifft allgemein Mikroprozessoren und bezieht sich genauer auf einen RISC-Mikroprozessor mit mehreren symmetrischen Sätzen von Registern.
  • Beschreibung des Hintergrundes der Erfindung
  • Zusätzlich zu der gewöhnlichen gegenseitigen Ergänzung von Hauptspeicher-Speicherung und sekundärer Festwertspeicherung enthält ein mikroprozessor-basiertes Computersystem typischerweise auch ein oder mehrere universale Datenregister, ein oder mehrere Adreßregister und ein oder mehrere Status-Flags. Frühere Systeme haben Ganzzahl-Register zum Halten von Ganzzahl-Daten (Integer- Daten) und Gleitkomma-Register zum Halten von Gleitkomma-Daten (Floating-Point-Daten) enthalten. Typischerweise werden Status-Flags verwendet, um bestimmte Bedingungen anzuzeigen, die sich aus dem zuletzt ausgeführten Vorgang (Operation) ergeben. Es gibt gewöhnlicherweise Status-Flags, um anzuzeigen, ob in der vorherigen Operation ein Übertrag ("Carry") auftrat, sich eine negative Zahl ergab und/oder eine Null resultierte.
  • Diese Flags erweisen sich als nützlich bei der Bestimmung des Ergebnisses von bedingten Verzweigungen innerhalb des Programm- Steuerflusses. Wenn es beispielsweise gewünscht ist, eine erste Zahl mit einer zweiten Zahl zu vergleichen und unter der Bedingung, daß beide gleich sind, zu einer gegebenen Unterroutine zu verzweigen, kann der Mikroprozessor die zwei Zahlen durch Subtraktion der einen von der anderen vergleichen, wobei er die geeigneten Bedingungs- Flags setzt oder löscht. Der numerische Ergebniswert der Subtraktion braucht nicht gespeichert zu werden. Ein Bedingungsverzweigungsbefehl (eine Bedingungsverzweigungsinstruktion) kann dann abhängig von dem Status des Zero-Flags ausgeführt werden. Obgleich diese Vorgehensweise einfach zu implementieren ist, mangelt es ihr doch an Flexibilität und Leistungsfähigkeit. Wenn der Vergleich erst einmal ausgeführt worden ist, können vor der Bedingungsverzweigung bei einem geeigneten Flag keine weiteren numerischen oder anderen Operationen ausgeführt werden; andernfalls werden die dazwischenkommenden Befehle die sich aus dem Vergleich ergebenden Bedingungsflagwerte überschreiben und wahrscheinlich eine fehlerhafte Verzweigung verursachen. Die Vorgehensweise wird weiterhin durch den Umstand kompliziert, daß es wünschenswert sein kann, außerordentlich komplexe Verzweigungstests anstelle des oben angegebenen einfachen Gleichheitsbeispiels zu bilden.
  • Man nehme beispielsweise an, daß das Programm zu einer Unterroutine nur unter der Bedingung verzweigen soll, daß eine erste Zahl größer als eine zweite Zahl und eine dritte Zahl kleiner als eine vierte Zahl und eine fünfte Zahl gleich einer sechsten Zahl ist. Für frühere Mikroprozessoren würde es notwendig sein, eine längliche Abfolge von Vergleichen durchzuführen, die in beträchtlichem Ausmaß mit Bedingungsverzweigungen durchsetzt ist. Ein besonders unerwünschtes Merkmal dieses seriellen Schemas von Vergleichen und Verzweigungen wird in jedem Mikroprozessor mit einer Befehls- Pipeline beobachtet.
  • In einem Pipeline-Mikroprozessor wird zu jeder gegebenen Zeit mehr als ein Befehl ausgeführt, wobei sich die mehreren Befehle zu irgendeinem gegebenen Moment in verschiedenen Stufen der Ausführung befinden. Dies führt zu einem ungemein verbesserten Durchsatz. Ein typischer Pipeline-Mikroprozessor kann Pipeline-Stufen enthalten zum (a) Holen eines Befehles, (b) Dekodieren des Befehles, (c) Beschaffen von Operanden des Befehles, (d) Ausführen des Befehles und (e) Speichern der Ergebnisse. Das Problem entsteht, wenn ein Bedingungsverzweigungsbefehl geholt wird. Es kann der Fall auftreten, daß die Bedingung der Bedingungsverzweigung noch nicht getestet werden kann, weil der Operanden möglicherweise noch nicht berechnet worden sind, wenn es solche Operanden sind, die sich aus Operationen ergeben, die noch in der Pipeline sind. Dies führt zu einem "Pipeline-Stillstand" ("stall"), der den Prozessor drastisch verlangsamt.
  • Eine andere Unzulänglichkeit bisheriger mikroprozessor-basierter Systeme ist der Umstand, daß sie lediglich einen einzigen Satz von Registern für jeden gegebenen Datentyp aufweisen. Wenn in früheren Architekturen eine erhöhte Anzahl von Registern innerhalb eines gegebenen Datentypes erwünscht war, war die Lösung diejenige, einfach die Größe des einzigen Satzes dieses Registertyps zu erhöhen. Dies kann zu Adressierungsproblemen, Zugriffskonfliktproblemen und Symmetrieproblemen führen.
  • Mit anderen Worten, bisherige Architekturen haben jeden gegebenen Registersatz auf einen jeweiligen numerischen Datentyp eingeschränkt. Verschiedene herkömmliche Systeme haben Universal- Register zugelassen, um entweder numerische Daten oder Adreß-"Daten" zu halten, jedoch wird die vorliegende Anmeldung den Begriff "Daten" nicht so verwenden, daß Adressen hierin eingeschlossen sind. Was beabsichtigt ist, kann am besten unter Bezugnahme auf zwei herkömmliche Systeme verstanden werden. Der Intel-8085- Mikroprozessor enthält ein Register-Paar "HL", das verwendet werden kann, um entweder zwei Bytes numerischer Daten oder eine Adresse von zwei Byte zu halten. Die Verbesserung durch die vorliegende Anmeldung ist nicht auf diesen Gesichtspunkt gerichtet. Des weiteren enthält der Intel-80486-Mikroprozessor einen Satz von universalen Ganzzahldatenregistern und einen Satz von Gleitkommaregistern, wobei jeder Satz wenigstens zu Zwecken der direkten Registerverwendung durch arithmetische und logische Einheiten auf seinen jeweiligen Datentyp begrenzt ist.
  • Dies erweist sich als verschwenderisch bezüglich der Ressourcen des Mikroprozessors, wie etwa der verfügbaren Siliziumfläche, wenn der Mikroprozessor Operationen ausführt, die nicht beide Datentypen einschließen. Beispielsweise enthalten Benutzeranwendungen häufig ausschließlich Ganzzahl-Operationen und führen überhaupt keine Gleitkomma-Operationen aus. Wenn eine solche Benutzeranwendung auf einem bisherigen Mikroprozessor läuft, der Gleitkomma-Register enthält (wie etwa der 80486), bleiben diese Gleitkomma-Register während der gesamten Ausführung im Leerlaufzustand.
  • Ein anderes Problem mit der Registersatz-Architektur bisheriger Mikroprozessoren wird beim Kontextschalten oder Zustandsschalten zwischen einer Benutzeranwendung und einer Einheit mit einem höheren Grad an Zugriffs-Privilegen, wie etwa einem Betriebssystemkernel, beobachtet. Wenn die Steuerung innerhalb des Mikroprozessors den Kontext, Modus oder Zustand schaltet, arbeitet der Betriebssystemkernel oder eine andere Einheit, der die Steuerung übergeben wird, typischerweise nicht mit denselben Daten, mit denen die Benutzeranwendung gearbeitet hat. Somit halten die Datenregister typischerweise Datenwerte, die für die neue Steuerungseinheit nicht verwendbar sind, die aber beibehalten werden müssen, bis die Benutzeranwendung fortgesetzt wird. Der Kernel muß gewöhnlich Register zu seiner eigenen Verwendung haben, verfügt jedoch typischerweise über keine Mittel, um zu erkennen, welche Register gegenwärtig von der Benutzeranwendung verwendet werden. Um Raum für seine eigenen Daten zu schaffen, muß der Kernel die Inhalte eines vorbestimmten Untersatzes der Register auslagern (swapping) oder anderweitig speichern. Dies führt zu einem beträchtlichen Verlust an Verarbeitungszeit für einen Overhead, insbesondere wenn der Kernel wiederholte Kurzzeit-Steuerhandlungen vornimmt.
  • Mit anderen Worten, wenn es in herkömmlichen Mikroprozessoren erforderlich ist, daß eine Kontext-Umschaltung "im großen Maßstab" durchgeführt wird, war es für den Mikroprozessor notwendig, Verarbeitungs-Ressourcen in noch größerem Umfang einschließlich einer gewöhnlich hohem Anzahl an Verarbeitungszyklen aufzuwenden, um alle Daten und Zustandsinformationen zu speichern, bevor der Schaltvorgang durchgeführt wird. Wenn der Kontext zurückgeschaltet wird, wurde bisher dieselbe Performance eingebüßt, um das System in seinen früheren Zustand zurückzuführen. Wenn beispielsweise ein Mikroprozessor zwei Benutzer-Anwendungen ausführt, von denen jedes die volle Anzahl an Registern jedes Datentyps benötigt und die sich jeweils in verschiedenen Stufen von Bedingungs-Code setzenden Operationen oder numerischen Berechnungen befinden, beinhaltet jedes Umschalten von einer Benutzeranwendung auf die andere notwendigerweise das Auslagern oder anderweitige Speichern der Inhalte aller Datenregister und Status-Flags in dem System. Dies beinhaltet offensichtlich einen sehr großen Operationsoverhead und führt zu einer signifikanten Performance-Verringerung, besonders wenn der Haupt- oder Sekundärspeicher, in die die Register gespeichert werden müssen, deutlich langsamer als der Mikroprozessor selbst sind.
  • Folglich haben wir aufgedeckt, daß es wünschenswert ist, über eine verbesserte Mikroprozessor-Architektur zu verfügen, die die Berechnung der verschiedenen Teilbedingungen einer komplexen Bedingung ohne jegliche dazwischenkommende Bedingungsverzweigungen erlaubt. Wir haben ferner aufgedeckt, daß es wünschenswert ist, daß die mehrfachen einfachen Bedingungen parallel berechenbar seien, um den Durchsatz des Mikroprozessors zu verbessern.
  • Wir haben auch aufgedeckt, daß es wünschenswert ist, über eine Architektur zu verfügen, die mehrfache Registersätze innerhalb eines gegebenen Datentyps erlaubt.
  • Zusätzlich haben wir gemäß der in Patentanspruch 1 beanspruchten Erfindung aufgedeckt, daß es für Gleitkomma-Register eines Mikroprozessors wünschenswert ist, als Ganzzahl-Register verwendbar zu sein, falls die verfügbaren Ganzzahl-Register nicht in optimaler Weise geeignet sind, die notwendige Menge an Ganzzahl-Daten zu halten. Es ist zu beachten, daß wir aufgedeckt haben, daß es wünschenswert ist, daß diese Typumstellung für die Benutzeranwendung vollständig transparent ist.
  • Wir haben aufgedeckt, daß es in hohem Maße wünschenswert ist, über einen Mikroprozessor zu verfügen, der einen spezifischen Untersatz von Registern bereitstellt, die zur Verwendung durch den Kernel reserviert sind, anstelle wenigstens eines Untersatzes von Benutzer- Registern, und daß dieser neue Satz von Registern in exakt derselben Weise adressierbar sein soll wie der Register-Untersatz, den sie ersetzen, damit der Kernel dasselbe Register-Adressierungsschema wie die Benutzeranwendungen verwenden kann. Wir haben weiterhin beobachtet, daß es wünschenswert ist, daß das Umschalten zwischen den zwei Untersätzen von Registern keine Overhead-Zyklen des Mikroprozessors erfordert, um die Ressourcen des Mikroprozessors maximal auszunutzen.
  • Wir haben auch aufgedeckt, daß es wünschenswert ist, über eine Mikroprozessor-Architektur zu verfügen, die die Durchführung einer Kontext-Umschaltung "im großen Maßstab" mit minimalem Overhead erlaubt. In diesem Zusammenhang haben wir aufgedeckt, daß es wünschenswert ist, über eine Architektur zu verfügen, die mehrere Bänke von Register-Sätzen jedes Typs zuläßt, so daß zwei oder mehrere Benutzeranwendungen in einer Multitasking-Umgebung oder einem anderen "Simultanmodus" zur Anwendung kommen können, wobei jede Benutzeranwendung den alleinigen Zugriff auf wenigstens eine volle Bank von Registern hat. Wir haben aufgedeckt, daß sich das Register-Adressierungsschema wünschenswerterweise nicht zwischen Benutzeranwendungen noch zwischen Registerbänken unterscheidet, um die Einfachheit der Benutzeranwendungen zu maximieren, und daß das System eine Hardwareunterstützung zum Umschalten zwischen den Registerbänken bereitstellen sollte, so daß die Benutzeranwendungen keine Kenntnis darüber zu haben brauchen, welche Registerbank sie gegenwärtig verwenden, oder selbst über die Existenz anderer Registerbänke oder anderer Benutzeranwendungen.
  • Diese und andere Vorteile unserer Erfindung, wie sie in den Ansprüchen spezifiziert ist, werden unter Bezugnahme auf die folgende Beschreibung unserer Erfindung, die begleitenden Zeichnungen und die Ansprüche ersichtlich werden.
  • Kurze Beschreibung der Figuren
  • Fig. 1 ist ein Blockdiagramm der Befehlsausführungseinheit des Mikroprozessors der vorliegenden Erfindung und zeigt die Elemente der Register-File.
  • Fig. 2-4 sind vereinfachte schematische und Blockdiagramme der Gleitkomma-, Ganzzahl- bzw. Booleschen Abschnitte der Befehlsausführungseinheit von Fig. 1.
  • Fig. 5-6 sind genauere Ansichten der Gleitkomma- bzw. Ganzzahlabschnitte und zeigen die Einrichtungen zum Wählen zwischen Registersätzen.
  • Fig. 7 verdeutlicht die Felder eines beispielhaften Mikroprozessorbefehlswortes, das von der Befehlsausführungseinheit der Fig. 1 ausführbar ist.
  • Genaue Beschreibung der bevorzugten Ausgestaltungen I. Registeranordnung (Register-File)
  • Fig. 1 verdeutlicht die Basiskomponenten der Befehlsausführungseinheit (IEU) 10 des RISC-Mikroprozessors (RISC: Rechnen mit eingeschränktem Befehlsvorrat) der vorliegenden Beschreibung. Die IEU 10 enthält ein Register-File 12 und eine Ausführungseinrichtung (Ausführungsmaschine) 14. Das Register-File 12 enthält eine oder mehrere Registerbänke 16-0 bis 16-n. Es wird einsichtig sein, daß die Struktur jeder Registerbank 16 identisch mit allen anderen Registerbänken 16 ist. Folglich wird die vorliegende Anmeldung lediglich die Registerbank 16-0 beschreiben. Die Registerbank enthält einen Registersatz A 18, einen Registersatz FB 20 und einen Registersatz C 22.
  • Im allgemeinen kann die Erfindung charakterisiert werden als ein RISC-Mikroprozessor mit einem Register-File, das für die Verwendung zur Ausführung von RISC-Befehlen optimal konfiguriert ist, im Gegensatz zu konventionellen Register-Files, die der Verwendung zur Ausführung von CISC-Befehlen (CISC: Rechnen mit komplexem Befehlsvorrat) durch CISC-Prozessoren genügen. Dadurch, daß sie über ein speziell angepaßtes Register-File verfügt, erlangt die Ausführungsmaschine der IEU des Mikroprozessors eine stark verbesserte Performance sowohl hinsichtlich der Ressourcennutzung als auch hinsichtlich des Rohdurchsatzes. Es ist das allgemeine Konzept, einen Registersatz auf einen RISC-Befehl abzustimmen.
  • A. Registersatz A
  • Der Registersatz A 18 enthält Ganzzahl-Register 24 (RA[31:0]), von denen jedes zum Halten eines Ganzzahlwertdatums angepaßt ist. In einer Ausgestaltung kann jede Ganzzahl zweiunddreißig Bit breit sein. Die RA-Ganzzahl-Register 24 enthalten eine erste Vielzahl 26 von Ganzzahl-Registern (RA[23:0]) und eine zweite Vielzahl 28 von Ganzzahl-Registern (RA[31:24]). Die RA-Ganzzahl-Register 24 haben jeweils eine identische Struktur und sind alle auf dieselbe Weise adressierbar, wenn auch mit einer einzigartigen Adresse innerhalb des Ganzzahl-Registersatzes 24. Beispielsweise ist ein erstes Ganzzahl-Register 30 (RA[0]) mit einem Offset von Null innerhalb des Ganzzahl-Registersatzes 24 adressierbar.
  • RA[0] enthält stets den Wert Null. Es wurde festgestellt, daß Benutzeranwendungen und andere Programme den konstanten Wert Null häufiger als irgendeinen anderen konstanten Wert verwenden. Es ist folglich wünschenswert, zu allein Zeiten zu Lösch-, Vergleichs- und anderen Zwecken eine Null leicht verfügbar zu haben. Ein anderer Vorteil darin, einen konstanten, festverdrahteten Wert in einem gegebenen Register unbeachtet des bestimmten Wertes zu haben, liegt darin, daß das gegebene Register als das Ziel irgendeines Befehles verwendet werden kann, dessen Ergebnisse nicht gespeichert zu werden brauchen.
  • Auch bedeutet dies, daß das festgelegte Register niemals die Ursache für eine Datenabhängigkeitsverzögerung sein wird. Eine Datenabhängigkeit besteht, wenn ein "Slave"-Befehl für einen oder mehrere seiner Operanden das Ergebnis eines "Master"-Befehls benötigt. In einem Pipeline-Prozessor kann dies Pipeline-Stillstände verursachen. Beispielsweise kann der Masterbefehl, obwohl er in der Code-Abfolge früher als der Slave-Befehl auftritt, für die Ausführung beträchtlich länger brauchen. Es wird leicht zu erkennen sein, daß in dem Falle, daß ein Slave-Befehl "Inkrementiere und Speichere" mit den Ergebnisdaten eines Master-Befehls "Teile Quadrupelwort Ganzzahl" arbeitet, der Slave-Befehl geholt und dekodiert werden wird und auf die Ausführung viele Taktzyklen wartet, bevor der Master-Befehl die Ausführung abgeschlossen hat.
  • Jedoch wird unter bestimmten Umständen das numerische Ergebnis eines Master-Befehls nicht benötigt, und der Master-Befehl wird lediglich zu einem anderen Zweck ausgeführt, wie etwa um Bedingungscode-Flags zu setzen. Falls das Ziel des Master-Befehls RA[0] ist, werden die numerischen Ergebnisse wirksam verworfen. Die Datenabhängigkeits- Überprüfungseinrichtung (nicht gezeigt) der IEU 10 wird keine Verzögerung des Slave-Befehls verursachen, da das endgültige Ergebnis des Master-Befehles - Null - bereits bekannt ist.
  • Der Ganzzahl-Registersatz A 24 enthält auch einen Satz von Schattenregistern 32 (RT[31:24]). Jedes Schattenregister kann einen Ganzzahlwert halten und ist in einem Ausführungsbeispiel auch zweiunddreißig Bit breit. Jedes Schattenregister ist als ein Offset in derselben Weise adressierbar, in der jedes Ganzzahl-Register 7:7 adressierbar ist.
  • Schließlich enthält der Registersatz A einen IEU-Modus- Ganzzahlschalter 34. Der Schalter 34 braucht, wie andere solche Elemente, keine physikalische Ausgestaltung als ein Schalter zu haben, solange die entsprechende logische Funktionalität innerhalb der Registersätze bereitgestellt wird. Der IEU-Modus- Ganzzahlschalter 34 ist mit dem ersten Untersatz 26 von Ganzzahl- Registern mit Leitung 36, mit dem zweiten Untersatz von Ganzzahl- Registern 28 mit Leitung 38 und mit den Schattenregistern 32 mit Leitung 40 verbunden. Alle Zugriffe auf den Registersatz A 18 werden auf Leitung 42 durch den IEU-Modus-Ganzzahlschalter 34 gemacht. Jede Zugriffsanforderung zum Lesen oder Schreiben eines Registers in dem ersten Untersatz RA[23:0] wird automatisch durch den IEU-Modus- Ganzzahlschalter 34 geleitet. Jedoch werden Zugriffe auf ein Ganzzahl-Register mit einem Offset außerhalb des ersten Untersatzes RA[23:0] abhängig von dem Betriebsmodus der Ausführungsmaschine 14 entweder auf den zweiten Untersatz RA[31:24] oder auf die Schattenregister RT[31:24] gerichtet.
  • Der IEU-Modus-Ganzzahlschalter 34 spricht auf eine Modus- Steuereinheit 44 in der Ausführungsmaschine 14 an. Die Modus- Steuereinheit 44 liefert auf Leitung 46 an den IEU-Modus- Ganzzahlschalter 34 geeignete Status- oder Modusinformationen über die IEU 10. Wenn die Ausführungsmaschine eine Kontextumschaltung wie etwa einen Übergang in den Kernelmodus durchführt, steuert die Modus-Steuereinheit 44 den IEU-Modus Ganzzahlschalter 34 so, daß alle Anforderungen an den zweiten Untersatz RA[31:24] auf den Schatten RT[31:24] umgeleitet werden, wobei derselbe angeforderte Offset innerhalb des Ganzzahlsatzes verwendet wird. Ein Betriebssystemkernel oder eine andere dann zur Ausführung kommende Einheit kann so einen Schein-Zugriff auf den zweiten Untersatz RA[31:24] ohne den anderweitig erforderlichen Overhead des Auslagerns der Inhalte des zweiten Untersatzes RA[31:24] in den Hauptspeicher oder des Schiebens (Push) des zweiten Untersatzes RA[31:24] auf einen Stapel (Stack) oder einer anderen konventionellen Register-Sicherungstechnik haben.
  • Wenn die Ausführungsmaschine 14 in einen normalen Benutzer-Modus zurückkehrt und die Steuerung auf die ursprünglich laufende Benutzeranwendung übergeht, steuert die Modus-Steuereinheit 44 den IEU-Modus-Ganzzahlschalter 34 so, daß der Zugriff wieder auf den zweiten Untersatz RA[31:24] gerichtet ist. In einer Ausgestaltung spricht die Modus-Steuereinheit 44 auf den gegenwärtigen Zustand der Interrupt-Freigabe in der IEU 10 an. In einer Ausgestaltung enthält die Ausführungsmaschine 14 ein Prozessor-Status-Register (PSR) (nicht gezeigt), das ein Flag von einem Bit enthält (PSR[7]), das anzeigt, ob Interrupts freigegeben oder gesperrt sind. Somit kann die Leitung 46 einfach den IEU-Modus-Ganzzahlschalter 34 mit dem bezüglich der Interrupts freigegebenen Flag in dem PSR verbinden. Sind die Interrupts gesperrt, behält die IEU 10 den Zugriff auf die Ganzzahlen RA[23:0], damit sie leicht eine Analyse verschiedener Daten der Benutzeranwendung durchführen kann. Dies kann eine verbesserte Fehlersuche (Debugging), Fehlermeldung oder Systemperformance-Analyse erlauben.
  • B. Registersatz FB
  • Der bezüglich seines Typs umstellbare Registersatz FB 20 kann als Gleitkomma-Register 48 (RF[31:0]) und/oder Ganzzahl-Register 50 (RB[31:0]) enthaltend gedacht werden. Wenn keiner der beiden Datentypen unter Ausschluß des anderen einbezogen ist, wird diese Anmeldung den Ausdruck RFB verwenden. Die Gleitkomma-Register RF belegen denselben physikalischen Siliziumraum wie die Ganzzahl- Register RB. In einer Ausgestaltung sind die Gleitkomma-Register RF vierundsechzig Bit und die Ganzzahl-Register RB zweiunddreißig Bit breit.
  • Jedes individuelle Register in dem Registersatz RFB kann entweder einen Gleitkommawert oder einen Ganzzahlwert halten. Der Registersatz RFB kann optionale Hardware enthalten, um einen unbeabsichtigten Zugriff auf einen Gleitkommawert, als wäre es ein Ganzzahlwert, zu verhindern, und umgekehrt. In einer Ausgestaltung ist es jedoch im Interesse einer Vereinfachung des Registersatzes RFB einfach dem Software-Programmierer überlassen sicherzustellen, daß keine fehlerhaften Anwendungen der individuellen Register 7 erfolgen. Somit gibt die Ausführungsmaschine 14 einfach eine Zugriffsanforderung auf Leitung 52, wobei sie einen Offset in dem Registersatz RFB angibt, ohne zu spezifizieren, ob es beabsichtigt ist, daß das Register an dem gegebenen Offset als Gleitkomma- Register oder als Ganzzahl-Register verwendet werden soll. Innerhalb der Ausführungsmaschine 14 können verschiedene Einheiten entweder die vollen vierundsechzig Bits, die von dem Registersatz RFB bereitgestellt werden, oder nur die niederwertigen zweiunddreißig Bits wie etwa in Ganzzahl-Operationen oder in einfachgenauen Gleitkomma-Operationen verwenden.
  • Ein erstes Register RFB[0] 51 enthält den konstanten Wert Null in einer solchen Form, daß RB[0] eine zweiunddreißig Bit breit Ganzzahl Null (0000heX) und RF[0] eine vierundsechzig Bit breite Gleitkommazahl Null (00000000neX) ist. Dies führt zu denselben Vorteilen wie oben für RA[0] beschrieben.
  • C. Registersatz C
  • Der Registersatz C 22 enthält eine Vielzahl von Booleschen Registern 54 (RC[31:0]). RC ist auch als das "Bedingungsstatusregister" (CSR) bekannt. Die Booleschen Register RC sind jeweils bezüglich ihrer Struktur und Adressierung identisch, wenn auch jedes Register individuell an einer einzigartigen Adresse oder einem Offset innerhalb RC adressierbar ist.
  • In einer Ausgestaltung enthält der Registersatz C weiterhin ein "Statusregister einer vorherigen Bedingung " (PCSR) 60, und der Registersatz C enthält auch eine CSR-Auswahleinheit 62, die auf die Modus-Steuereinheit 44 anspricht, um alternativ zwischen dem CSR 54 und dem PCSR 60 zu wählen. In der einen Ausgestaltung wird das CSR verwendet, wenn Interrupts freigegeben sind, und das PCSR, wenn Interrupts gesperrt sind. Das CSR und PCSR sind in allen anderen Punkten identisch. In der einen Ausgestaltung schiebt die CSR- Auswahleinheit 62 die Inhalte des CSR in den PCSR (Push), wenn Interrupts gesperrt gesetzt sind, wobei sie die früheren Inhalte des PCSR überschreibt, und wenn Interrupts wieder freigeschaltet werden, schiebt die CSR-Auswahleinheit 62 die Inhalte des PCSR zurück in den CSR (Pop). In anderen Ausgestaltungen kann es wünschenswert sein, den Zugriff zwischen dem CSR und dem PCSR lediglich abzuwechseln, wie es mit RA[31:24] und RT[31:24] getan wird. Auf jeden Fall ist das PCSR stets als ein zweiunddreißig Bit breites "Spezialregister" verfügbar.
  • Anders als die Booleschen Register in bisher bekannten Mikroprozessoren ist keines der Booleschen Register ein reserviertes Bedingungsflag. Das bedeutet, daß das CSR 54 kein reserviertes Übertrag-Flag (Carry-Flag) noch ein reserviertes Minus-Flag noch ein reserviertes Flag enthält, das die Gleichheit eines Vergleiches oder ein Subtraktionsergebnis von Null anzeigt. Vielmehr kann jedes Boolesche Register das Ziel des Booleschen Ergebnisses jeder Booleschen Operation sein. Wie in den anderen Registersätzen enthält ein erstes Boolesches Register 58 (RC[0]) stets den Wert Null, um die oben für RA[0] erläuterten Vorteile zu erlangen. In der bevorzugten Ausgestaltung ist jedes Boolesche Register ein Bit breit und zeigt einen Booleschen Wert an.
  • II. Ausführungsmaschine
  • Die Ausführungsmaschine 14 enthält eine oder mehrere Ganzzahl- Funktionseinheiten 66, eine oder mehrere Gleitkomma- Funktionseinheiten 68 und eine oder mehrere Boolesche Funktionseinheiten 70. Die Funktionseinheiten (Funktionaleinheiten) führen Befehle aus, wie unten erläutert werden wird. Busse 72, 73 und 75 verbinden die verschiedenen Elemente der IEU 10 und stellen jeweils Datenpfade, Adreßpfade und Steuerpfade dar, wie ersichtlich werden wird.
  • A. Befehlsformat
  • Fig. 7 verdeutlicht ein beispielhaftes Format für einen Ganzzahl- Befehl, den die Ausführungsmaschine 14 ausführen kann. Es ist begreiflich, daß sich nicht alle Befehle strikt an das gezeigte Format zu halten brauchen, und daß das Datenverarbeitungssystem eine Befehlsholvorrichtung und einen Befehlsdekoder (nicht gezeigt) enthält, die eingerichtet sind, um mit Befehlen verschiedenen Formates zu arbeiten. Das einzelne Beispiel von Fig. 7 soll lediglich die Erklärung erleichtern. In dieser gesamten Anmeldung wird die Bezeichnung I verwendet werden, um verschiedene Bits des Befehls zu identifizieren. I[31:30] sind für zukünftige Implementierungen der Ausführungsmaschine 14 reserviert. I[29:26] kennzeichnen die Befehlsklasse des speziellen Befehls. Die Tabelle 1 zeigt die verschiedenen Klassen von Befehlen, die von der vorliegenden Erfindung ausgeführt werden.
  • Tabelle 1 Befehlsklassen Klasse Befehle
  • 0-3 Ganzzahl- und Gleitkommabefehle von Register zu Register
  • 4 Unverzügliches Laden einer Konstante
  • 5 Reserviert
  • 6 Laden
  • 7 Speichern
  • 8-11 Steuerungsfluß
  • 12 Modifizierer
  • 13 Boolesche Operationen
  • 14 Reserviert
  • 15 Atomar (erweitert)
  • Befehlsklassen von besonderer Bedeutung für diese Anmeldung schließen die Register-zu-Register-Befehle der Klassen 0-3 und die Booleschen Operationen der Klasse 13 ein. Obwohl andere Befehlsklassen auch mit dem Register-File 12 arbeiten, wird eine weitere Diskussion dieser Klassen für nicht notwendig erachtet, um die vorliegende Erfindung vollständig zu verstehen.
  • I[25] wird als B0 identifiziert und zeigt an, ob das Zielregister im Registersatz A oder im Registersatz B liegt. I[24:22] ist ein Operationscode, der innerhalb einer gegebenen Befehlsklasse anzeigt, welche spezifische Funktion ausgeführt werden soll. Beispielsweise kann innerhalb der Register-zu-Register-Klassen ein Operationscode "Addition" spezifizieren. I[21] identifiziert den Adressierungsmodus, der bei der Ausführung des Befehles zu verwenden ist - entweder eine Register-Quellenadressierung oder eine unmittelbare Quellenadressierung. I[20:16] identifiziert das Zielregister als Offset innerhalb des durch B0 angezeigten Registersatzes an. I[15] wird als B1 identifiziert und zeigt an, ob der erste Operand vom Registersatz A oder vom Registersatz B genommen werden soll. I[14:10] identifiziert den Registeroffset, von dem der erste Operand zu nehmen ist. I[9:8] identifiziert eine Funktionsauswahl - eine Erweiterung des Operationscodes I[24:22]. I[7:6] sind reserviert. I[5] wird als B2 identifiziert und zeigt an, ob ein zweiter Operand des Befehles vom Registersatz A oder vom Registersatz B genommen werden soll. Schließlich identifiziert I[4:0] den Registeroffset, von dem der zweite Operand zu nehmen ist.
  • Unter Bezugnahme auf Fig. 1 sind die Ganzzahl-Funktionseinheit 66 und die Gleitkomma-Funktionseinheit 68 eingerichtet, um Ganzzahl- Vergleichsbefehle bzw. Gleitkommavergleiche durchzuführen. Das Befehlsformat für den Vergleichsbefehl ist im wesentlichen mit dem in Fig. 7 gezeigten identisch, mit der Ausnahme, daß verschiedene Felder vorzugsweise durch geringfügig verschiedene Namen identifiziert sein können. I[20:16] identifiziert zwar das Zielregister, wo das Ergebnis gespeichert werden soll, jedoch wählt das Adressierungsmodusfeld I[21] nicht zwischen den Registersätzen A oder B aus. Vielmehr zeigt das Adressierungsmodusfeld an, ob die zweite Quelle für den Vergleich in einem Register oder in unmittelbaren Daten gefunden wird. Da der Vergleich ein Befehl vom Booleschen Typ ist, wird das Zielregister stets im Registersatz C zu finden sein. Alle anderen Felder funktionieren so wie in Fig. 7 gezeigt. Bei der Ausführung Boolescher Operationen innerhalb der Ganzzahl- und Gleitkomma-Funktionseinheiten identifizieren der Operationscode und die Funktionsauswahlfelder, auf welche Boolesche Bedingung beim Vergleichen der zwei Operanden geprüft werden soll. Die Ganzzahl- und die Gleitkomma-Funktionseinheiten unterstützen vollständig die IEEE-Standards für numerische Vergleiche.
  • Die IEU 10 ist eine Lade-/Speicher-Maschine. Das bedeutet, daß eine Adreßberechnung durchgeführt werden muß, wenn die Inhalte eines Registers in einen Speicher gespeichert oder aus einem Speicher gelesen werden, um festzustellen, welcher Ort im Speicher die Quelle bzw. das Ziel für die Speicherung bzw. das Laden sein soll. Wenn dies der Fall ist, identifiziert das Ziel-Registerfeld I[20:16] das Register, das das Ziel bzw. die Quelle für den Lade- bzw. Speichervorgang ist. Das Feld I[14:10] für Quellregister 1 identifiziert ein Register in entweder dem Satz A oder B, das eine Basisadresse des Speicherortes enthält. In einer Ausgestaltung identifiziert das Feld I[4:0] für Quellregister 2 ein Register im Satz A oder im Satz B, das einen Index oder einen Offset von der Basis enthält. Die Lade/Speicheradresse wird durch Addieren des Indexes zu der Basis berechnet. In einem anderen Modus enthält I[7:0] unmittelbare Daten, die als Index zu der Basis zu addieren sind.
  • B. Betrieb der Befehlsausführungseinheit und Registersätze
  • Fachleute werden verstehen, daß die Ganzzahl-Funktionseinheit 66, die Gleitkomma-Funktionseinheit 68 und die Boolesche Funktionseinheit 70 auf die Inhalte des Befehlsklassenfeldes, des Operationscode-Feldes und des Funktionsauswahlfeldes eines vorliegenden Befehles ansprechen, der gerade ausgeführt wird.
  • 1. Ganzzahlbefehle
  • Wenn beispielsweise die Befehlsklasse, der Operationscode und die Funktionsauswahl anzeigen, daß eine Ganzzahl-Addition von Register zu Register ausgeführt werden soll, kann die Ganzzahl- Funktionseinheit darauf ansprechen, um die angezeigte Operation durchzuführen, während die Gleitkomma-Funktionseinheit und die Boolesche Funktionseinheit darauf ansprechen können, um die Operation nicht durchzuführen. Wie jedoch aus den querverwiesenen Anmeldungen ersichtlich ist, ist die Gleitkomma-Funktionseinheit 68 eingerichtet, um sowohl Gleitkomma-Funktionen als auch Ganzzahl- Operationen auszuführen. Auch sind die Funktionseinheiten so konstruiert, daß sie jeweils mehr als einen Befehl gleichzeitig ausführen.
  • Die Ganzzahl-Funktionseinheit 66 führt lediglich Ganzzahl-Funktionen aus. Ganzzahl-Operationen schließen typischerweise eine erste Quelle, eine zweite Quelle und ein Ziel ein. Ein gegebener Ganzzahl- Befehl wird eine bestimmte Operation spezifizieren, die an einem oder mehreren Quell-Operanden ausgeführt werden soll, und wird angeben, daß das Ergebnis der Ganzzahl-Operation an einem gegebenen Ziel gespeichert werden soll. In einigen Befehlen, wie etwa in Lade/Speicher-Operationen angewendeten Adreßberechnungen, werden die Quellen als eine Basis und ein Index verwendet. Die Ganzzahl- Funktionseinheit 66 ist mit einem ersten Bus 72 verbunden, über den die Ganzzahl-Funktionseinheit 66 mit einer Schalt- und Multiplex- Steuereinheit (SMC) A 74 und einer SMC-Einheit B 76 verbunden ist. Jeder von der Ganzzahl-Funktionseinheit 66 ausgeführte Ganzzahl- Befehl wird angeben, ob jede seiner Quellen und das Ziel dem Registersatz A oder dem Registersatz B innewohnen.
  • Man nehme an, daß die IEU 10 von der Befehlsholeinheit (nicht gezeigt) einen Befehl empfangen hat, um eine Ganzzahl-Addition von Register zu Register durchzuführen. In verschiedenen Ausgestaltungen kann der Befehl eine Registerbank spezifizieren, vielleicht sogar eine separate Bank für jede Quelle und das Ziel. In einer Ausgestaltung ist der Befehl I auf eine Länge von zweiunddreißig Bit begrenzt und enthält keinerlei Angabe darüber, welche Registerbank 16-0 bis 16-n in dem Befehl einbezogen ist. Vielmehr steuert die Bankauswahleinheit 78, welche Registerbank gegenwärtig aktiv ist. In einer Ausgestaltung spricht die Bankauswahleinheit 78 auf ein oder mehrere Bankauswahl-Bits in einem Statuswort (nicht gezeigt) innerhalb der IEU 10 an.
  • Um einen Ganzzahl-Additionsbefehl auszuführen, spricht die Ganzzahl- Funktionseinheit 66 auf die Kennzeichnung in I[14:10] und I[4:0] der ersten und zweiten Quellregister an. Die Ganzzahl-Funktionseinheit 66 legt eine Identifikation der ersten und zweiten Quellregister an die Ports S1 bzw. S2 auf dem Ganzzahl-Funktionseinheitsbus 72, der sowohl mit der SMC-Einheit A 74 als auch mit der SMC-Einheit B 76 verbunden ist. In einer Ausgestaltung sind die SMC-Einheiten A und B jeweils verbunden, um B0-2 von dem Befehl I zu empfangen. In einer Ausgestaltung zeigt eine Null in allen jeweiligen Bn den Registersatz A und eine Eins den Registersatz B an. Während Lade/Speicher-Operationen werden die Quell-Ports der Ganzzahl- und Gleitkomma-Funktionseinheiten 66 und 68 als ein Basis-Port B bzw. ein Index-Port I verwendet.
  • Nach dem Erhalt der ersten und zweiten Operanden von dem angezeigten Registersatz auf dem Bus 72, wie unten erläutert, führt die Ganzzahl-Funktionseinheit 66 die angezeigte Operation auf diesen Operanden durch und liefert das Ergebnis an den Port D auf dem Ganzzahl-Funktionseinheitsbus 72. Die SMC-Einheiten A und B sprechen auf B0 an, um das Ergebnis an den entsprechenden Registersatz A oder B zu leiten.
  • Die SMC-Einheit B spricht weiterhin auf die Befehlsklasse, den Operationscode und die Funktionsauswahl an, um zu steuern, ob Operanden von entweder einem Gleitkomma-Register RF oder einem Ganzzahl-Register RB gelesen werden (oder Ergebnisse entsprechend gespeichert werden). Wie angegeben, können in einer Ausgestaltung die Register RF vierundsechzig Bit breit sein, während die Register RB nur zweiunddreißig Bit breit sind. Somit steuert die SMC-Einheit B, ob ein Wort oder ein Doppelwort in den Registersatz RFB geschrieben wird. Da alle Register innerhalb des Registersatzes A zweiunddreißig Bit breit sind, braucht die SMC- Einheit A keine Mittel zum Steuern der Breite des Datentransfers auf dem Bus 42 zu enthalten.
  • Zwar sind alle Daten auf dem Bus 42 zweiunddreißig Bit breit, jedoch gibt es im Registersatz A andere Arten von Kompliziertheiten. Der IEU-Modus-Ganzzahlschalter 34 spricht auf die Modus-Steuereinheit 44 der Ausführungsmaschine 14 an, um zu steuern, ob Daten auf dem Bus 42 zu Bus 36, Bus 38 oder Bus 40 durchverbunden werden, und umgekehrt.
  • Der IEU-Modus-Ganzzahlschalter 34 spricht weiterhin auf I[20:16], I[14:20] und I[4:0] an. Wenn ein gegebenes angezeigtes Ziel oder eine Quelle in RA[23:0] vörliegt, koppelt der IEU-Modus- Ganzzahlschalter 34 automatisch die Daten zwischen den Leitungen 42 und 36. Jedoch stellt der IEU-Modus-Ganzzahlschalter 34 für die Register RA[31:24] fest, ob Daten auf der Leitung 42 mit Leitung 38 oder Leitung 40 verbunden sind, und umgekehrt. Wenn Interrupts freigegeben sind, verbindet der IEU-Modus-Ganzzahlschalter 34 die SMC-Einheit A mit dem zweiten Untersatz 28 der Ganzzahl-Register RA[31:24]. Wenn Interrupts gesperrt sind, verbindet der IEU-Modus- Ganzzahlschalter 34 die SMC-Einheit A mit den Schattenregistern RT[31:24]. Somit braucht ein innerhalb der Ganzzahl-Funktionseinheit 66 zur Ausführung kommender Befehl nicht damit befaßt zu sein, ob RA[31:24] oder RT[31:24] adressiert werden sollen. Es wird verstanden werden, daß die SMC-Einheit A vorteilhafterweise in gleicher Weise unabhängig davon arbeitet, ob auf sie von der Ganzzahl-Funktionseinheit 66 oder von der Gleitkomma- Funktionseinheit 68 zugegriffen wird.
  • 2. Gleitkomma-Operationen
  • Die Gleitkomma-Funktionseinheit 68 spricht auf die Klassen-, Operationscode- und Funktionsauswahlfelder des Befehles an, um Gleitkomma-Operationen durchzuführen. Die Ports S1, S2 und D arbeiten wie bei der Ganzzahl-Funktionseinheit 66 beschrieben. Die SMC-Einheit B spricht an, um Gleitkomma-Operanden von den Gleitkomma-Registern RF auf Bus 52 wiederzugewinnen und numerische Gleitkomma-Ergebnisse dorthin zu schreiben.
  • 3. Boolesche Operationen
  • Die SMC-Einheit C 80 spricht auf die Befehlsklassen-, Operationscode- und Funktionsauswahlfelder des Befehles I an. Wenn die SMC-Einheit C feststellt, daß eine Vergleichsoperation durch eine der numerischen Funktionseinheiten 66 oder 68 ausgeführt worden ist, schreibt sie das Boolesche Ergebnis über Bus 56 in das Boolesche Register, das an dem D-Port der Funktionseinheit, die den Vergleich durchgeführt hat, angezeigt ist.
  • Die Boolesche Funktionseinheit 70 führt keine Vergleichsbefehle durch, wie dies die Ganzzahl- und Gleitkomma-Funktionseinheiten 66 und 68 tun. Vielmehr wird die Boolesche Funktionseinheit 70 nur bei der Durchführung einer bitweisen logischen Kombination von Inhalten Boolescher Register gemäß der in Tabelle 2 aufgeführten Booleschen Funktionen verwendet.
  • Tabelle 2 Boolesche Funktionen I[23,22,9,8] Berechnung des Booleschen Ergebnisses
  • 0000 Null
  • 0001 S1 AND S2
  • 0010 S1 AND (NOT S2)
  • 0011 S1
  • 0100 (NOT S1) AND S2
  • 0101 S2
  • 0110 S1 XOR S2
  • 0111 S1 OR S2
  • 1000 S1 NOR S2
  • 1001 S1 XNOR S2
  • 1010 NOT S2
  • 1011 S1 OR (NOT S2)
  • 1100 NOT S1
  • 1101 (NOT S1) OR S2
  • 1110 S1 NAND S2
  • 1111 Eins
  • Der Vorteil, den die vorliegende Erfindung dadurch erlangt, daß sie eine Vielzahl homogener Boolescher Register aufweist, die alle als das Ziel einer Booleschen Operation individuell adressierbar sind, wird unter Bezugnahme auf Tabellen 3-5 erläutert werden. Die Tabelle 3 verdeutlicht ein Beispiel eines Codesegments, das eine Bedingungsverzweigung basierend auf einer komplexen Booleschen Funktion durchführt. Die komplexe Boolesche Funktion enthält drei Abschnitte, die miteinander ODER-verknüpft sind. Der erste Abschnitt enthält zwei Unterabschnitte, die miteinander UND-verknüpft sind.
  • Tabelle 3 Beispiel einer komplexen Booleschen Funktion
  • 1 RA[1] := 0;
  • 2 IF (((RA[2] = RA[3]) AND (RA[4] > RA[5])) OR
  • 3 (RA[6] < RA[7]) OR
  • 4 (RA[8] < > RA[9])) THEN
  • 5 X()
  • 6 ELSE
  • 7 y();
  • 8 RA[10] := 1;
  • Tabelle 4 verdeutlicht in Pseudoassembler-Form ein mögliches Verfahren, mit dem bisherige Mikroprozessoren die Funktion von Tabelle 3 ausführen würden. Der Code in Tabelle 4 ist so geschrieben worden, als ob er von einem Compiler wenigstens normaler Intelligenz erzeugt worden wäre, der den Code von Tabelle 3 bearbeitet. Das bedeutet, der Compiler wird erkennen, daß die in Zeilen 2-4 der Tabelle 3 ausgedrückte Bedingung übergangen wird, wenn eine der drei Abschnitte wahr ist. Tabelle 4 Ausführung einer komplexen Booleschen Funktion ohne Booleschen Registersatz
  • Die Zuweisung in Zeile 1 der Tabelle 3 wird durch die Anweisung "Lade unmittelbar" in Zeile 1 der Tabelle 4 durchgeführt. Der in Zeile 2 der Tabelle 3 ausgedrückte erste Abschnitt der komplexen Booleschen Bedingung ist durch die Anweisungen in den Zeilen 2-5 der Tabelle 4 dargestellt. Um zu überprüfen, ob RA[2] gleich RA[3] ist, führt die Vergleichsanweisung in Zeile 2 der Tabelle 4 eine Subtraktion von RA[2] von RA[3] oder umgekehrt (abhängig von der Implementierung) durch und kann das Ergebnis dieser Subtraktion speichern oder auch nicht. Die wichtige durch diese Vergleichsanweisung durchgeführte Funktion ist, daß die Zero-, Minus- und Carry-Flags geeignet gesetzt oder gelöscht werden.
  • Die Bedingungsverzweigungsanweisung in Zeile 3 der Tabelle 4 verzweigt auf einen nachfolgenden Code-Abschnitt bei der Bedingung, daß RA[2] nicht gleich RA[3] war. Wenn diese beiden ungleich sind, wird das Zeroflag gelöscht werden und der zweite Unterabschnitt braucht nicht ausgeführt zu werden. Das Vorhandensein der Bedingungsverzweigungsanweisung in Zeile 3 der Tabelle 4 verhindert das weitere Holen, Dekodieren und Ausführen irgendeiner nachfolgenden Anweisung in Tabelle 4, bis die Resultate des Vergleichs in Zeile 2 bekannt sind, wodurch ein Pipeline-Stillstand verursacht wird. Wenn der erste Unterabschnitt des ersten Abschnittes (TEST1) übergangen wird, vergleicht dann der zweite Unterabschnitt in Zeile 4 der Tabelle 4 RA[4] mit RA[5] und setzt und löscht wiederum die geeigneten Statusflags.
  • Wenn RA[2] gleich RA[3] und RA[4] größer als RA[5] ist, brauchen die verbleibenden zwei Abschnitte (TEST2 und TEST3) in der komplexen Booleschen Funktion nicht getestet zu werden und die Anweisung in Tabelle 4, Zeile 5, wird bedingungsmäßig zu dem Label DO_IF verzweigen, um die Operation innerhalb des "IF" der Tabelle 3 durchzuführen. Wenn jedoch der erste Abschnitt der Überprüfung fehlgeschlagen hat, ist eine zusätzliche Verarbeitung erforderlich, um festzustellen, welcher der Abschnitte "IF" und "ELSE" ausgeführt werden soll.
  • Der zweite Abschnitt der Booleschen Funktion ist der Vergleich von RA[6] mit RA[7] in Zeile 6 der Tabelle 4, der wiederum die geeigneten Statusflags setzt und löscht. Wenn die Bedingung "kleiner als" durch die Statusflags angezeigt wird, wird die komplexe Boolesche Funktion übergangen und die Ausführung kann unmittelbar zu dem Label DO_IF verzweigen. In verschiedenen herkömmlichen Mikroprozessoren kann die Bedingung "kleiner als" durch Untersuchung des Minusflags getestet werden. Wenn RA[7] nicht kleiner als RA[6] war, muß der dritte Abschnitt des Tests durchgeführt werden. Die Anweisung in Zeile 8 der Tabelle 4 vergleicht RA[8] mit RA[9]. Wenn dieser Vergleich fehlgeschlagen hat, sollte der "ELSE"-Code ausgeführt werden; andernfalls kann die Ausführung einfach zu dem "IF"-Code in Zeile 10 der Tabelle 4 durchschreiten, dem ein zusätzlicher Sprung über den "ELSE"-Code hinweg folgt. Jede der Bedingungsverzweigungen der Tabelle 4 in den Zeilen 3, 5, 7 und 9 führt zu einem separaten Pipeline-Stillstand, wodurch die für die Behandlung der komplexen Booleschen Funktion erforderliche Verarbeitungszeit signifikant erhöht wird.
  • Der deutlich verbesserte Durchsatz, der sich aus der Anwendung des Booleschen Registersatzes C der vorliegenden Erfindung ergibt, wird nun unter besonderer Bezugnahme auf Tabelle 5 leicht ersichtlich sein. Tabelle 5 Ausführung einer komplexen Booleschen Funktion mit Booleschem Registersatz
  • Wie am bemerkenswertesten in den Zeilen 2-5 der Tabelle 5 zu sehen ist, ermöglicht es der Boolesche Registersatz C dem Mikroprozessor, die drei Testabschnitte Rücken an Rücken ohne zwischenliegende Verzweigung durchzuführen. Jeder Boolesche Vergleich spezifiziert zwei Operanden, ein Ziel und eine Boolesche Bedingung, auf die zu prüfen ist. Beispielsweise vergleicht der Vergleich in Zeile 2 der Tabelle 5 die Inhalte von RA[2] mit den Inhalten von RA[3], prüft sie auf Gleichheit und speichert in RC[11] den Booleschen Ergebniswert des Vergleiches. Es ist zu beachten, daß jeder Vergleich der Booleschen Funktion seine jeweiligen unmittelbaren Ergebnisse in einem separaten Booleschen Register speichert. Wie unter Bezugnahme auf die obengenannten, in Bezug stehenden Anmeldungen verstanden werden wird, ist die IEU 10 imstande, mehr als einen der Vergleiche gleichzeitig durchzuführen.
  • Nachdem wenigstens die ersten zwei Vergleiche in den Zeilen 2-3 der Tabelle 5 abgeschlossen sind, werden die zwei jeweiligen Vergleichsergebnisse miteinander, wie in Zeile 6 der Tabelle 3 gezeigt, UND-verknüpft. RC[15] hält dann das Ergebnis des ersten Testabschnitts. Die Ergebnisse der zweiten und dritten Unterabschnitte der Booleschen Funktion werden wie in Tabelle 5, Zeile 7 zu sehen miteinander ODER-verknüpft. Verständlicherweise können die UND-Verknüpfung in Zeile 6 und die ODER-Verknüpfung in Zeile 7 parallel ausgeführt werden, da keine Datenabhängigkeiten involviert sind. Schließlich werden die Resultate dieser zwei Operationen, wie in Zeile 8 der Tabelle 5 zu sehen, miteinander ODER-verknüpft.
  • Es wird verstanden werden, daß das Register RC[17] dann einen Booleschen Wert enthalten wird, der das Wahr- oder Falschsein der gesamten komplexen Booleschen Funktion der Tabelle 3 anzeigt. Es ist dann möglich, eine einzelne Bedingungsverzweigung, wie in Zeile 9 der Tabelle 5 gezeigt, durchzuführen. In dem in Tabelle 5 gezeigten Modus verzweigt das Verfahren zu dem "ELSE"-Code, wenn das Boolesche Register RC[17] gelöscht ist, was anzeigt, daß die komplexe Funktion fehlgeschlagen war. Der restliche Code kann derselbe sein wie für den Fall des Nichtvorliegens des Booleschen Registersatzes in Tabelle 4 gezeigt.
  • Die Boolesche Funktionseinheit 70 spricht, wie die anderen Funktionseinheiten, auf die Befehlsklassen-, Operationscode- und Funktionsauswahlfelder an. Somit wird wiederum unter Bezugnahme auf Tabelle 5 verstanden werden, daß die Ganzzahl- und/oder Gleitkomma- Funktionseinheiten die Befehle in den Zeilen 1-5 und 13 und die Boolesche Funktionseinheit 70 die Booleschen bitweisen Kombinationsbefehle in den Zeilen 6-8 ausführen werden. Die Steuerfluß- und Verzweigungsbefehle in den Zeilen 9-12 werden durch Elemente der IEU 10 ausgeführt, die in Fig. 1 nicht gezeigt sind.
  • III. Datenpfade
  • Die Fig. 2-5 verdeutlichen weitere Einzelheiten der Datenpfade innerhalb der Gleitkomma-, Ganzzahl- bzw. Booleschen Abschnitte der IEU.
  • A. Datenpfade des Gleitkomma-Abschnitts
  • Wie in Fig. 2 ersichtlich, ist der Registersatz FB 20 ein Registersatz mit mehreren Ports. In einer Ausgestaltung hat der Registersatz FB 20 zwei Schreibports WFB0-1 und fünf Leseports RDFB0-4. Die Gleitkomma-Funktionseinheit 68 von Fig. 1 ist aus der ALU2 102, FALU 104, MULT 106 und NULL 108 von Fig. 2 zusammengesetzt. Alle Elemente von Fig. 2 mit Ausnahme des Registersatzes 20 und der Elemente 102-108 umfassen die SMC-Einheit B von Fig. 1.
  • Der externe bidirektionale Datenbus EX_DATA liefert Daten an die Gleitkomma-Lade/Speichereinheit 122. Der Bus für unmittelbare Gleitkomma-Daten LDF_IMED liefert Daten von einem Befehl "Lade unmittelbar". Andere unmittelbare Gleitkomma-Daten werden auf den Bussen RFF1_IMED und RFF2_IMED bereitgestellt, wie etwa im Zuge eines Befehles "Addiere unmittelbar". Daten werden auch auf dem Bus EX_SR_DT in Erwiderung auf einen Befehl "Spezialregister-Move" bereitgestellt. Daten auf den Bussen 114 und 120 können auch von dem in Fig. 3 gezeigten Ganzzahl-Abschnitt stammen.
  • Die zwei Schreibports WFB0 und WFB1 des Gleitkomma-Registersatzes sind mit den Schreibmultiplexern 110-0 bzw. 110-1 verbunden. Die Schreibmultiplexer 110 empfangen Daten von: der ALU0 oder SHF0 des Ganzzahl-Abschnittes von Fig. 3; der FALU; der MULT; der ALU2; entweder von EX_SR_DT oder LDF_IMED; und von EX_DATA. Fachleute werden verstehen, daß Steuersignale (nicht gezeigt) bestimmen, welche Eingabe an jedem Port ausgewählt wird, und daß Adreßsignale (nicht gezeigt) bestimmen, in welches Register die Eingabedaten geschrieben werden. Die Multiplexer-Steuerung und die Register-Adressierung gehören zum Fachwissen eines Fachmanns und werden für keinen Multiplexer oder Registersatz in der vorliegenden Erfindung diskutiert werden.
  • Die fünf Leseports RDFB0 bis RDFB4 des Gleitkomma-Registersatzes sind jeweils mit Lesemultiplexern 112-0 bis 112-4 verbunden. Jeder Lesemultiplexer empfängt auch Daten von: entweder EX_SR_DT oder LDF_IMED auf dem Lade-Unmittelbar-Umgehungsbus 126; von dem Lade- Externdaten-Umgehungsbus 127, der es externen Ladedaten ermöglicht, den Registersatz FB zu übergehen; der Ausgabe der ALU2 102, die Ganzzahl-Operationen ausführt, die keine Multiplikationsoperationen sind; von der FALU 104, die Gleitkomma-Operationen ausführt, die keine Multiplikationsoperationen sind; von der MULT 106, die Multiplikationsoperationen ausführt; und entweder von der ALU0 140 oder der SHF0 144 des in Fig. 3 gezeigten Ganzzahl-Abschnittes, die Ganzzahl-Operationen, die keine Multiplikationsoperationen sind, bzw. Schiebeoperationen durchführen. Die Lesemultiplexer 112-1 und 112-3 empfangen auch Daten von RFF1_IMED bzw. RFF2_IMED.
  • Jede Einheit 102-106 von arithmetischem Typ in dem Gleitkomma- Abschnitt empfängt zwei Eingaben, nämlich von Sätzen der ersten bzw. zweiten Quellmultiplexer 51 und 52. Die erste Quelle jeder Einheit ALU2, FALU und MULT stammt von der Ausgabe eines der Lesemultiplexer 112-0 und 112-2, und die zweite Quelle stammt von der Ausgabe eines der Lesemultiplexer 112-1 und 112-3. Die Quellen der FALU und der MULT können auch von dem Ganzzahl-Abschnitt von Fig. 3 über Bus 114 stammen.
  • Die Ergebnisse der ALU2, FALU und MULT werden den Schreibmultiplexern 110 zur Speicherung in die Gleitkomma-Register RF und auch den Lesemultiplexern 112 zur Wiederverwendung als Operanden nachfolgender Operationen zurückgeliefert. Die FALU gibt auch ein Signal FALU_BD aus, das das Boolesche Ergebnis einer Gleitkomma-Vergleichsoperation angibt. FALU_BD wird direkt aus internen Zero- und Vorzeichenflags der FALU berechnet.
  • Die Null-Byte-Überprüfungseinrichtung NULL 108 führt Null-Byte- Überprüfungsoperationen an einem Operanden von einem ersten Quellmultiplexer in einem Modus, dem der ALU2, durch. Die NULL 108 gibt ein Boolesches Signal NULLB_BD aus, das angibt, ob der zweiunddreißig Bit breite erste Quell-Operand ein Byte des Wertes Null enthält.
  • Die Ausgaben der Lesemultiplexer 112-0, 112-1 und 112-4 werden an den Ganzzahl-Abschnitt (der Fig. 3) über Bus 118 geliefert. Die Ausgabe des Lesemultiplexers 112-4 wird auch als STDT_FP- Speicherdaten an die Gleitkomma-Lade/Speichereinheit 122 geliefert.
  • Die Fig. 5 verdeutlicht weitere Details der Steuerung der Multiplexer S1 und S2. Wie zu sehen ist, kann in einer Ausgestaltung jeder S1-Multiplexer auf Bit B1 des Befehles I und jeder S2- Multiplexer auf Bit B2 des Befehles I ansprechen. Die S1- und S2- Multiplexer wählen die Quellen für die verschiedenen Funktionseinheiten aus. Die Quellen können von jedem der Register- Files stammen, wie durch die B1- und B2-Bits des Befehles selbst gesteuert. Zusätzlich enthält jedes Register-File zwei Lese-Ports, von denen die Quellen stammen können, wie durch in den Figuren nicht gezeigte Hardware gesteuert.
  • B. Datenpfade des Ganzzahl-Abschnitts
  • Wie aus Fig. 3 ersichtlich ist, hat auch der Registersatz A 18 mehrere Ports. In einer Ausgestaltung hat der Registersatz A 18 zwei Schreibports WA0-1 und fünf Leseports RDA0-4. Die Ganzzahl- Funktionseinheit 66 von Fig. 1 ist aus der ALU0 140, ALU1 142, SHF0 144 und NULL 146 von Fig. 3 zusammengesetzt. Alle Elemente von Fig. 3 mit Ausnahme des Registersatzes 18 und der Elemente 140-146 umfassen die SMC-Einheit A von Fig. 1.
  • Der externe Datenbus EX_DATA liefert Daten an die Ganzzahl- Lade/Speichereinheit 152. Unmittelbare Ganzzahl-Daten auf Bus LDI_IMED werden in Erwiderung auf einen Befehl "Lade unmittelbar" bereitgestellt. Andere unmittelbare Ganzzahl-Daten werden auf den Bussen RFA1_IMED und RFA2_IMED in Erwiderung auf Befehle, die keine unmittelbaren Ladebefehle sind, bereitgestellt, wie etwa ein "Addiere unmittelbar". Daten werden auch auf dem Bus EX-SR-DT in Erwiderung auf einen Befehl "Spezialregister-Move" bereitgestellt. Daten können auch von dem (in Fig. 2 gezeigten) Gleitkomma-Abschnitt über die Busse 116 und 118 stammen.
  • Die zwei Schreibports WA0 und WA1 des Ganzzahl-Registersatzes sind mit Schreibmultiplexern 148-0 bzw. 148-1 verbunden. Die Schreibmultiplexer 148 empfangen Daten von: der FALU oder MULT des Gleitkomma-Abschnittes (der Fig. 2); der ALU0; der ALU1; der SHF0; entweder von EX_SR_DT oder LDI_IMED; und von EX_DATA.
  • Die fünf Leseports RDA0 bis RDA4 des Ganzzahl-Registersatzes sind mit jeweiligen Lesemultiplexern 150-0 bis 150-4 verbunden. Jeder Lesemultiplexer empfängt auch Daten von: entweder EX_SR_DT oder LDI IMED über den Lade-unmittelbar-Umgehungsbus 160; den Lade- Externdaten-Umgehungsbus 154, der es externen Ladedaten ermöglicht, den Registersatz A zu übergehen; der ALU0; der ALU1; der SHF0; und entweder der FALU oder der MULT des Gleitkomma-Abschnittes (der Fig. 2). Die Lesemultiplexer 150-1 und 150-3 empfangen auch Daten von RFA1_IMED bzw. RFA2_IMED.
  • Jede Einheit 140-144 vom arithmetischen Typ in dem Ganzzahl- Abschnitt empfängt zwei Eingaben, von entsprechenden Sätzen der ersten und zweiten Quellmultiplexer S1 und S2. Die erste Quelle von ALU0 stammt von entweder der Ausgabe des Lesemultiplexers 150-2, von einer zweiunddreißig Bit breiten Konstante Null (0000hex) oder vom Gleitkomma-Lesemultiplexer 112-4. Die zweite Quelle der ALU0 stammt von entweder dem Lesemultiplexer 150-3 oder dem Gleitkomma- Lesemultiplexer 112-1. Die erste Quelle der ALU1 stammt von entweder dem Lesemultiplexer 150-0 oder von IF_PC. IF_PC wird bei der Berechnung einer Rückkehr-Adresse verwendet, die von der Befehlsholeinheit (nicht gezeigt) infolge der Fähigkeit der IEU benötigt wird, Befehle in einer nicht der Reihenfolge entsprechenden Abfolge auszuführen ("out-of-order"). Die zweite Quelle der ALU1 stammt von entweder dem Lesemultiplexer 150-1 oder von CF_OFFSET. CF_OFFSET wird bei der Berechnung einer Rückkehr-Adresse für einen CALL-Befehl ebenfalls infolge der Out-of-order-Fähigkeit verwendet.
  • Die erste Quelle des Schiebers (Shifters) SHF0 144 stammt von entweder den Gleitkomma-Lesemultiplexern 112-0 oder 112-4 oder von irgendeinem Ganzzahl-Lesemultiplexer 150. Die zweite Quelle von SHF0 stammt entweder von den Gleitkomma-Lesemultiplexern 112-0 oder 112-4 oder von den Ganzzahl-Lesemultiplexern 150-0, 150-2 oder 150-4. Der SHF0 übernimmt eine dritte Eingabe von einem Schiebebetragsmultiplexer (SA). Die dritte Eingabe steuert, wie weit geschoben werden soll, und wird von dem SA-Multiplexer entweder von dem Gleitkomma-Lesemultiplexer 112-1, dem Ganzzahl-Lesemultiplexer 150-1 oder 150-3 oder von einer fünf Bit breiten Konstante Einunddreißig (11111&sub2; oder 31&sub1;&sub0;) übernommen. Der Schieber SHF0 erfordert eine vierte Eingabe von dem Größenmultiplexer (S). Die vierte Eingabe steuert, wieviele Daten zu schieben sind, und wird von dem S-Multiplexer entweder vom Lesemultiplexer 150-1, vom Lesemultiplexer 150-3 oder von einer fünf Bit breiten Konstante Sechzehn (10000&sub2; oder 16&sub1;&sub0;) übernommen.
  • Die Ergebnisse der ALU0, ALU1 und SHF0 werden den Schreibmultiplexern 148 zur Speicherung in die Ganzzahl-Register RA und auch den Lesemultiplexern 150 zur Wiederverwendung als Operanden in nachfolgenden Operationen zurückgeliefert. Die Ausgabe entweder der ALU0 oder der SHF0 wird dem Gleitkomma-Abschnitt von Fig. 3 über den Bus 120 geliefert. Die ALU0 und ALU1 geben auch Signale ALU0_BD bzw. ALU1_BD aus, die die Booleschen Ergebnisse der Ganzzahl-Vergleichs-Operationen angeben. ALU0_BD und ALU1_BD werden direkt aus den Zero- und Vorzeichenflags der jeweiligen Funktionseinheiten berechnet. Die ALU0 gibt auch die Signale EX_TADR und EX_VM_ADR aus. EX_TADR ist die für einen absoluten Verzweigungsbefehl erzeugte Zieladresse und wird der IFU (nicht gezeigt) zum Holen des Zielbefehls übermittelt. EX_VM_ADR ist eine virtuelle Adresse, die für alle Ladevorgänge vom Speicher und Speichervorgänge in den Speicher verwendet wird, und wird der VMU (nicht gezeigt) zur Adreß-Übersetzung übermittelt.
  • Die Null-Byte-Überprüfungseinrichtung NULL 146 führt Null-Byte- Überprüfungsoperationen auf einem Operanden von einem ersten Quellmultiplexer durch. In einer Ausgestaltung stammt der Operand von der ALU0. Die NULL 146 gibt ein Boolesches Signal NULLA_BD aus, das angibt, ob der zweiunddreißig Bit breite erste Quelloperand ein Byte des Wertes Null enthält.
  • Die Ausgaben der Lesemultiplexer 150-0 und 150-1 werden an den Gleitkomma-Abschnitt (der Fig. 2) über Bus 114 geliefert. Die Ausgabe des Lesemultiplexers 150-4 wird auch als STDT INT- Speicherdaten an die Ganzzahl-Lade/Speichereinheit 152 geliefert.
  • Ein Steuerbit PSR[7] wird an den Registersatz A 18 geliefert. Es ist dieses Signal, welches in Fig. 1 von der Modus-Steuereinheit 44 an den IEU-Modus-Ganzzahlschalter 34 über Leitung 46 bereitgestellt wird. Der IEU-Modus-Ganzzahlschalter liegt innerhalb des Registersatzes A 18, wie in Fig. 3 gezeigt.
  • Die Fig. 6 verdeutlicht weitere Details der Steuerung der S1- und S2-Multiplexer. Das Signal ALU0_BD sei erwähnt.
  • C. Datenpfade des Booleschen Abschnitts
  • Wie aus Fig. 4 ersichtlich, verfügt auch der Registersatz C 22 über mehrere Ports. In einer Ausgestaltung hat der Registersatz C 22 zwei Schreibports WC0-1 und fünf Leseports RDA0-4. Alle Elemente von Fig. 4 mit Ausnahme des Registersatzes 22 und der Booleschen Kombinationseinheit 70 umfassen die SMC-Einheit C von Fig. 1.
  • Die zwei Schreibports WC0 und WC1 des Booleschen Registersatzes sind mit den Schreibmultiplexern 170-0 bzw. 170-1 verbunden. Die Schreibmultiplexer 170 empfangen Daten von: der Ausgabe der Booleschen Kombinationseinheit 70, die das Boolesche Ergebnis einer Booleschen Kombinationsoperation angibt; von ALU0_BD von dem Ganzzahl-Abschnitt von Fig. 3, das das Boolesche Ergebnis eines Ganzzahlvergleichs angibt; von FALU_BD von dem Gleitkomma-Abschnitt von Fig. 2, das das Boolesche Ergebnis eines Gleitkomma-Vergleichs angibt; entweder von ALU1_BD_P von der ALU1, das die Ergebnisse eines Vergleichsbefehls in der ALU1 angibt, oder von NULLA_BD von der NULL 146, das ein Null-Byte in dem Ganzzahl-Abschnitt angibt; und entweder von ALU2_BD_P von der ALU2, das die Ergebnisse einer Vergleichsoperation in der ALU2 angibt, oder von NULLB_BD von der NULL 108, das ein Null-Byte in dem Gleitkomma-Abschnitt angibt. In einem Modus werden die Signale ALU0_BD, ALU1_BD, ALU2_BD und FALU_BD nicht von den Datenpfaden übernommen, sondern werden als Funktion des Zeroflags, Minusflags, Carryflags und anderer Bedingungsflags in der PSR berechnet. In einem Modus, in dem bis zu acht Befehle in einem Augenblick in der IEU ausgeführt werden können, behält die IEU bis zu acht PSRs bei.
  • Der Boolesche Registersatz C ist auch mit dem Bus EX_SR_DT zur Verwendung mit Befehlen "Spezialregister-Move" verbunden. Die CSR kann als Ganzes beschrieben oder gelesen werden, als ob sie ein einziges 32-Bit-Register wäre. Dies ermöglicht schnelles Speichern und Wiederherstellen von Maschinenzustands-Informationen, wie es bei bestimmten drastischen Systemfehlern oder bei bestimmten Formen von Kontextumschaltung im großen Maßstab erforderlich sein kann.
  • Die fünf Leseports RDC0 bis RDC3 des Booleschen Registersatzes sind mit jeweiligen Lesemultiplexern 172-0 bis 172-4 verbunden. Die Lesemultiplexer 172 empfangen denselben Satz von Eingaben wie die Schreibmultiplexer 170. Die Boolesche Kombinationseinheit 70 empfängt Eingaben von den Lesemultiplexern 170-0 und 170-1. Die Lesemultiplexer 172-2 bzw. 172-3 liefern Signale BLBP CPORT und BLBP_DPORT. BLBP_CPORT wird als Basis für Bedingungsverzweigungsbefehle in der IEU verwendet. BLBP_DPORT wird in dem Befehl "Addiere mit Boole" verwendet, der ein Ganzzahl- Register in dem A- oder B-Satz auf Null oder Eins (mit führenden Nullen) abhängig von dem Inhalt eines Registers in dem C-Satz setzt. Der Leseport RDC4 wird gegenwärtig nicht verwendet und ist für zukünftige Erweiterungen der Booleschen Funktionalität der IEU reserviert.
  • IV. Schlußfolgerung
  • Während die Merkmale und Vorteile der vorliegenden Erfindung im Hinblick auf besondere Ausgestaltungen derselben und in unterschiedlicher Ausführlichkeit beschrieben worden sind, wird es ersichtlich sein, daß die Erfindung nicht auf die beschriebenen Ausgestaltungen beschränkt ist. Die nachfolgenden Patentansprüche definieren den Schutzbereich der Erfindung.

Claims (10)

1. Datenverarbeitungssystem, das eine zentrale Verarbeitungseinheit (CPU) enthält, die Operationen durch Ausführen von Instruktionen ausführt, mit einem Datenregistersystem (10), das umfaßt:
einen ersten Registersatz (18), der eine Vielzahl von ersten Registern (24) jeweils zum Halten von Ganzzahldaten enthält, wobei die Ganzzahldaten eine erste Datenbreite aufweisen;
einen zweiten Registersatz (20), der eine Vielzahl von zweiten Registern (48, 50) jeweils zum Halten von Ganzzahldaten oder Gleitkommadaten enthält, wobei die Gleitkommadaten eine zweite Datenbreite aufweisen, die größer als die erste Datenbreite ist, und wobei eine spezifische Instruktion (Fig. 7, I) ein Feld (I[25], I[15], I[5]) enthält, das angibt, auf welches der ersten und zweiten Registersätze in Antwort auf eine Ausführung der spezifischen Instruktion zugegriffen werden soll;
Mittel (74, 76), die auf das Feld ansprechen, zum Zugreifen auf den ersten Registersatz (18) oder den zweiten Registersatz (20) wie durch das Feld angegeben, enthaltend
i) Lesemittel (150, 112) zum Lesen eines Operandenwertes von entweder dem ersten Registersatz (18) oder dem zweiten Registersatz (20) wie durch das Feld angegeben, und
ii) Schreibmittel (148, 110) zum Schreiben eines Ergebniswertes in den ersten Registersatz (18) oder den zweiten Registersatz (20) wie durch das Feld angegeben.
2. Datenverarbeitungssystem nach Anspruch 1, wobei die ersten und zweiten Registersätze (18, 20) jeweils zwei Schreibports (WA0-1, WFB0-1) und fünf Leseports (RDA0-4, RDFB0-4) aufweisen.
3. Datenverarbeitungssystem nach Anspruch 1, weiterhin Ausführungsmittel (66, 68) zum Ausführen der spezifischen Instruktion (I) umfassend, wobei die spezifische Instruktion eine Operation bei Operanden ausführt, um ein Ergebnis zu erzeugen, wobei die spezifische Instruktion eine jeweilige Quelladresse (I[15], I[14:10], I[5], I[4:0]) für jeden Operanden und eine Zieladresse (I[25], I[20:16]) für das Ergebnis der spezifischen Instruktion angibt und wobei jede Adresse einen Registersatz und ein Offset angibt.
4. Datenverarbeitungssystem nach Anspruch 1, wobei die spezifische Instruktion (I) eine erste und eine zweite Quelladresse (I[15], I[14:10], I[5], I[4:0]) und eine Zieladresse (I[25], I[20:16]) angeben kann, wobei jede Adresse einen der ersten oder zweiten Registersätze (18, 20) angibt, so daß die spezifische Instruktion (I) Zugriff auf beide Registersätze erfordert.
5. Datenverarbeitungssystem nach Anspruch 4, wobei die Mittel (74, 76) zum Zugreifen einen parallelen Zugriff auf sowohl den ersten als auch den zweiten Registersatz (18, 20) über die spezifische Instruktion (I) bereitstellt.
6. Datenverarbeitungssystem nach Anspruch 1, wobei die erste Datenbreite zweiunddreißig Bits und die zweite Datenbreite vierundsechzig Bits beträgt.
7. Datenverarbeitungssystem nach Anspruch 1, weiterhin Verarbeitungsmittel (14) zum Ausführen von Instruktionen (I) umfassend, enthaltend:
Boolesche Ausführungsmittel (70) zum Ausführen von Booleschen Kombinationsinstruktionen, die jeweils auf einen oder mehrere Boolesche Operanden wirken, um ein Boolesches Ergebnis zu erzeugen, wobei jede Boolesche Kombinationsinstruktion eines oder mehrere Boolesche Felder enthält, die einen Ort jedes Operanden und Ergebnisses angeben,
Ganzzahlausführungsmittel (66) zum Ausführen von Ganzzahlinstruktionen, die jeweils auf einen oder mehrere Ganzzahloperanden wirken, um ein Ganzzahlergebnis zu erzeugen, wobei jede Ganzzahlinstruktion eines oder mehrere Ganzzahlfelder enthält, die einen Ort jedes Operanden und Ergebnisses angeben, und
Gleitkommaausführungsmittel (68) zum Ausführen von Gleitkommainstruktionen, die jeweils auf einen oder mehrere Gleitkommaoperanden wirken, um ein Gleitkommaergebnis zu erzeugen, wobei jede Gleitkommainstruktion ein oder mehrere Gleitkommafelder enthält, die einen Ort jedes Operanden und Ergebnisses angeben.
8. Datenverarbeitungssystem nach Anspruch 7, weiterhin einen Booleschen Registersatz (22) mit einer Vielzahl von Booleschen Registern (RC) umfassend, wobei jedes Boolesche Register zum Halten eines der Booleschen Operanden oder Booleschen Ergebnisse ist.
9. Datenverarbeitungssystem nach Anspruch 8, wobei die Vielzahl von Booleschen Registern (RC) enthält:
i) einen ersten Satz von Booleschen Registern (54), und
ii) einen zweiten Satz von Booleschen Registern (60),
mit der Vielzahl von Booleschen Registern (RC) verbundene Mittel (62) zum Auswählen des ersten oder zweiten Satzes von Booleschen Registern (54, 60) als einem gegenwärtig aktiven Satz;
wobei die Booleschen Ausführungsmittel (70) auf die Mittel (62) zum Auswählen ansprechen und Ergebnisse in lediglich den gegenwärtig aktiven Satz von den Booleschen Registern speichern, und
auf die Ausführung einer gegebenen Booleschen Instruktion durch die Booleschen Ausführungsmittel (70) ansprechende Mittel (80) zum Speichern des Ergebnisses der gegebenen Booleschen Instruktion in eines der Booleschen Register, wobei das eine Boolesche Register durch sie gegebene Boolesche Instruktion als das Ziel ihres Booleschen Ergebnisses angezeigt wird.
10. Datenverarbeitungssystem nach Anspruch 7, wobei die Verarbeitungsmittel (14) umfassen:
numerische Ausführungsmittel (102, 104) zum Ausführen von numerischen Vergleichsinstruktionen, um zwei numerische Mehrbitoperanden zu vergleichen und entsprechend ein Einzelbit-Boolewertergebnis zu erzeugen.
DE69230057T 1991-07-08 1992-07-08 Risc mikroprozessorarchitektur mit mehrere registersätze von unterschiedlichen typen Expired - Lifetime DE69230057T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US07/726,773 US5493687A (en) 1991-07-08 1991-07-08 RISC microprocessor architecture implementing multiple typed register sets
PCT/US1992/005720 WO1993001543A1 (en) 1991-07-08 1992-07-08 Risc microprocessor architecture implementing multiple typed register sets

Publications (2)

Publication Number Publication Date
DE69230057D1 DE69230057D1 (de) 1999-11-04
DE69230057T2 true DE69230057T2 (de) 2000-03-09

Family

ID=24919957

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69230057T Expired - Lifetime DE69230057T2 (de) 1991-07-08 1992-07-08 Risc mikroprozessorarchitektur mit mehrere registersätze von unterschiedlichen typen

Country Status (7)

Country Link
US (10) US5493687A (de)
EP (2) EP0547216B1 (de)
JP (3) JP3607701B2 (de)
KR (1) KR100294964B1 (de)
AT (1) ATE185205T1 (de)
DE (1) DE69230057T2 (de)
WO (1) WO1993001543A1 (de)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102005050382A1 (de) * 2005-10-20 2007-05-03 Infineon Technologies Ag Prozessor und Verfahren zum Prüfen einer Bedingung für eine bedingte Ausführung eines Programmbefehls
US7786853B2 (en) 2001-10-06 2010-08-31 Robert Bosch Gmbh Method for transmitting data from at least one sensor to a control device
US7941636B2 (en) 1991-07-08 2011-05-10 Intellectual Venture Funding Llc RISC microprocessor architecture implementing multiple typed register sets

Families Citing this family (114)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5539911A (en) * 1991-07-08 1996-07-23 Seiko Epson Corporation High-performance, superscalar-based computer system with out-of-order instruction execution
EP0886209B1 (de) 1991-07-08 2005-03-23 Seiko Epson Corporation RISC-Prozessor mit erweiterbarer Architektur
US5371684A (en) * 1992-03-31 1994-12-06 Seiko Epson Corporation Semiconductor floor plan for a register renaming circuit
EP0636256B1 (de) * 1992-03-31 1997-06-04 Seiko Epson Corporation Befehlsablauffolgeplanung von einem risc-superskalarprozessor
EP0638183B1 (de) * 1992-05-01 1997-03-05 Seiko Epson Corporation Vorrichtung und verfahren zum befehlsabschluss in einem superskalaren prozessor.
US5640582A (en) * 1992-05-21 1997-06-17 Intel Corporation Register stacking in a computer system
DE69320991T2 (de) * 1992-12-31 1999-01-28 Seiko Epson Corp., Tokio/Tokyo System und verfahren zur änderung der namen von registern
US5628021A (en) * 1992-12-31 1997-05-06 Seiko Epson Corporation System and method for assigning tags to control instruction processing in a superscalar processor
GB2286265B (en) * 1994-01-26 1998-02-18 Advanced Risc Mach Ltd selectable processing registers
US5655151A (en) * 1994-01-28 1997-08-05 Apple Computer, Inc. DMA controller having a plurality of DMA channels each having multiple register sets storing different information controlling respective data transfer
US5828856A (en) * 1994-01-28 1998-10-27 Apple Computer, Inc. Dual bus concurrent multi-channel direct memory access controller and method
US5805927A (en) * 1994-01-28 1998-09-08 Apple Computer, Inc. Direct memory access channel architecture and method for reception of network information
US5664159A (en) * 1994-03-08 1997-09-02 Exponential Technology, Inc. Method for emulating multiple debug breakpoints by page partitioning using a single breakpoint register
US5734874A (en) * 1994-04-29 1998-03-31 Sun Microsystems, Inc. Central processing unit with integrated graphics functions
AU4464596A (en) 1994-12-02 1996-06-19 Intel Corporation Microprocessor with packing operation of composite operands
US6081880A (en) * 1995-03-09 2000-06-27 Lsi Logic Corporation Processor having a scalable, uni/multi-dimensional, and virtually/physically addressed operand register file
US5713035A (en) * 1995-03-31 1998-01-27 International Business Machines Corporation Linking program access register number with millicode operand access
US5966529A (en) * 1995-05-15 1999-10-12 Zsp Corporation Processor having auxiliary operand register file and complementary arrangements for non-disruptively performing adjunct execution
US5812871A (en) * 1995-06-30 1998-09-22 Motorola Inc. Data processing system and a method of optimizing an operation of the data processing system
JP3512272B2 (ja) * 1995-08-09 2004-03-29 株式会社日立製作所 比較演算装置およびグラフィック演算システム
US6643765B1 (en) 1995-08-16 2003-11-04 Microunity Systems Engineering, Inc. Programmable processor with group floating point operations
US5742840A (en) * 1995-08-16 1998-04-21 Microunity Systems Engineering, Inc. General purpose, multiple precision parallel operation, programmable media processor
US5900025A (en) * 1995-09-12 1999-05-04 Zsp Corporation Processor having a hierarchical control register file and methods for operating the same
US6792523B1 (en) 1995-12-19 2004-09-14 Intel Corporation Processor with instructions that operate on different data types stored in the same single logical register file
US5852726A (en) * 1995-12-19 1998-12-22 Intel Corporation Method and apparatus for executing two types of instructions that specify registers of a shared logical register file in a stack and a non-stack referenced manner
US5857096A (en) * 1995-12-19 1999-01-05 Intel Corporation Microarchitecture for implementing an instruction to clear the tags of a stack reference register file
US5835748A (en) * 1995-12-19 1998-11-10 Intel Corporation Method for executing different sets of instructions that cause a processor to perform different data type operations on different physical registers files that logically appear to software as a single aliased register file
US5701508A (en) * 1995-12-19 1997-12-23 Intel Corporation Executing different instructions that cause different data type operations to be performed on single logical register file
US5940859A (en) 1995-12-19 1999-08-17 Intel Corporation Emptying packed data state during execution of packed data instructions
US5860000A (en) * 1996-01-31 1999-01-12 Hitachi Micro Systems, Inc. Floating point unit pipeline synchronized with processor pipeline
US5867681A (en) * 1996-05-23 1999-02-02 Lsi Logic Corporation Microprocessor having register dependent immediate decompression
US5896519A (en) * 1996-06-10 1999-04-20 Lsi Logic Corporation Apparatus for detecting instructions from a variable-length compressed instruction set having extended and non-extended instructions
US5794010A (en) * 1996-06-10 1998-08-11 Lsi Logic Corporation Method and apparatus for allowing execution of both compressed instructions and decompressed instructions in a microprocessor
US5838984A (en) * 1996-08-19 1998-11-17 Samsung Electronics Co., Ltd. Single-instruction-multiple-data processing using multiple banks of vector registers
US5948097A (en) * 1996-08-29 1999-09-07 Intel Corporation Method and apparatus for changing privilege levels in a computer system without use of a call gate
US5774694A (en) * 1996-09-25 1998-06-30 Intel Corporation Method and apparatus for emulating status flag
US6052753A (en) * 1997-01-21 2000-04-18 Alliedsignal Inc. Fault tolerant data bus
US5949994A (en) * 1997-02-12 1999-09-07 The Dow Chemical Company Dedicated context-cycling computer with timed context
US5809327A (en) * 1997-03-27 1998-09-15 Atmel Corporation Eight-bit microcontroller having a risc architecture
US6009511A (en) * 1997-06-11 1999-12-28 Advanced Micro Devices, Inc. Apparatus and method for tagging floating point operands and results for rapid detection of special floating point numbers
US6128728A (en) * 1997-08-01 2000-10-03 Micron Technology, Inc. Virtual shadow registers and virtual register windows
US5978901A (en) * 1997-08-21 1999-11-02 Advanced Micro Devices, Inc. Floating point and multimedia unit with data type reclassification capability
KR100492985B1 (ko) * 1997-08-27 2005-08-25 삼성전자주식회사 마이크로콘트롤러또는마이크로프로세서의워킹레지스터블락및워킹레지스터블락제어방법
US6961846B1 (en) * 1997-09-12 2005-11-01 Infineon Technologies North America Corp. Data processing unit, microprocessor, and method for performing an instruction
US6298431B1 (en) * 1997-12-31 2001-10-02 Intel Corporation Banked shadowed register file
US6366999B1 (en) * 1998-01-28 2002-04-02 Bops, Inc. Methods and apparatus to support conditional execution in a VLIW-based array processor with subword execution
US6308261B1 (en) * 1998-01-30 2001-10-23 Hewlett-Packard Company Computer system having an instruction for probing memory latency
US6105129A (en) * 1998-02-18 2000-08-15 Advanced Micro Devices, Inc. Converting register data from a first format type to a second format type if a second type instruction consumes data produced by a first type instruction
US6317824B1 (en) * 1998-03-27 2001-11-13 Intel Corporation Method and apparatus for performing integer operations in response to a result of a floating point operation
US6862563B1 (en) 1998-10-14 2005-03-01 Arc International Method and apparatus for managing the configuration and functionality of a semiconductor design
US6282633B1 (en) * 1998-11-13 2001-08-28 Tensilica, Inc. High data density RISC processor
US7206877B1 (en) 1998-12-22 2007-04-17 Honeywell International Inc. Fault tolerant data communication network
US6327650B1 (en) * 1999-02-12 2001-12-04 Vsli Technology, Inc. Pipelined multiprocessing with upstream processor concurrently writing to local register and to register of downstream processor
US6668316B1 (en) 1999-02-17 2003-12-23 Elbrus International Limited Method and apparatus for conflict-free execution of integer and floating-point operations with a common register file
US6745318B1 (en) * 1999-08-18 2004-06-01 Sanjay Mansingh Method and apparatus of configurable processing
US6457118B1 (en) * 1999-10-01 2002-09-24 Hitachi Ltd Method and system for selecting and using source operands in computer system instructions
US6766440B1 (en) * 2000-02-18 2004-07-20 Texas Instruments Incorporated Microprocessor with conditional cross path stall to minimize CPU cycle time length
US7308559B2 (en) * 2000-02-29 2007-12-11 International Business Machines Corporation Digital signal processor with cascaded SIMD organization
US6665790B1 (en) * 2000-02-29 2003-12-16 International Business Machines Corporation Vector register file with arbitrary vector addressing
US7028170B2 (en) * 2000-03-08 2006-04-11 Sun Microsystems, Inc. Processing architecture having a compare capability
AU2001243463A1 (en) 2000-03-10 2001-09-24 Arc International Plc Memory interface and method of interfacing between functional entities
US7162615B1 (en) * 2000-06-12 2007-01-09 Mips Technologies, Inc. Data transfer bus communication using single request to perform command and return data to destination indicated in context to allow thread context switch
US6633969B1 (en) 2000-08-11 2003-10-14 Lsi Logic Corporation Instruction translation system and method achieving single-cycle translation of variable-length MIPS16 instructions
US6757807B1 (en) * 2000-08-18 2004-06-29 Sun Microsystems, Inc. Explicitly clustered register file and execution unit architecture
US6718429B1 (en) * 2000-08-22 2004-04-06 Antevista Gmbh Configurable register file with multi-range shift register support
US7620832B2 (en) * 2000-09-20 2009-11-17 Mips Technologies, Inc. Method and apparatus for masking a microprocessor execution signature
US7237097B2 (en) * 2001-02-21 2007-06-26 Mips Technologies, Inc. Partial bitwise permutations
US7181484B2 (en) 2001-02-21 2007-02-20 Mips Technologies, Inc. Extended-precision accumulation of multiplier output
US7162621B2 (en) 2001-02-21 2007-01-09 Mips Technologies, Inc. Virtual instruction expansion based on template and parameter selector information specifying sign-extension or concentration
US7711763B2 (en) 2001-02-21 2010-05-04 Mips Technologies, Inc. Microprocessor instructions for performing polynomial arithmetic operations
US6666383B2 (en) 2001-05-31 2003-12-23 Koninklijke Philips Electronics N.V. Selective access to multiple registers having a common name
US7318145B1 (en) 2001-06-01 2008-01-08 Mips Technologies, Inc. Random slip generator
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
US7487339B2 (en) * 2001-10-12 2009-02-03 Mips Technologies, Inc. Method and apparatus for binding shadow registers to vectored interrupts
US7552261B2 (en) * 2001-10-12 2009-06-23 Mips Technologies, Inc. Configurable prioritization of core generated interrupts
US7003691B2 (en) * 2002-06-28 2006-02-21 Hewlett-Packard Development Company, L.P. Method and apparatus for seeding differences in lock-stepped processors
KR20050084121A (ko) * 2002-12-04 2005-08-26 코닌클리즈케 필립스 일렉트로닉스 엔.브이. 회로 장치, 전력 소모 제어 방법, 프로그램 저장 매체 및신호 지속 매체
US7673118B2 (en) * 2003-02-12 2010-03-02 Swarztrauber Paul N System and method for vector-parallel multiprocessor communication
US7024544B2 (en) * 2003-06-24 2006-04-04 Via-Cyrix, Inc. Apparatus and method for accessing registers in a processor
US7163305B2 (en) * 2003-06-25 2007-01-16 Gemtron Corporation Illuminated shelf
TWI259398B (en) * 2004-02-04 2006-08-01 Sunplus Technology Co Ltd Device and method using operation mode in processor to switch register
US7613950B2 (en) * 2004-02-27 2009-11-03 Hewlett-Packard Development Company, L.P. Detecting floating point hardware failures
US20050278505A1 (en) * 2004-05-19 2005-12-15 Lim Seow C Microprocessor architecture including zero impact predictive data pre-fetch mechanism for pipeline data memory
TWI318359B (en) * 2005-04-13 2009-12-11 Ind Tech Res Inst Unified single-core & multi-mode processor and its program execution method
US7461307B2 (en) * 2005-05-06 2008-12-02 Lsi Corporation System and method for improving transition delay fault coverage in delay fault tests through use of an enhanced scan flip-flop
WO2006120367A1 (en) * 2005-05-11 2006-11-16 Arm Limited A data processing apparatus and method employing multiple register sets
US20070074007A1 (en) * 2005-09-28 2007-03-29 Arc International (Uk) Limited Parameterizable clip instruction and method of performing a clip operation using the same
US8595747B2 (en) * 2005-12-29 2013-11-26 Sony Computer Entertainment Inc. Efficient task scheduling by assigning fixed registers to scheduler
US20080126743A1 (en) * 2006-07-18 2008-05-29 Via Technologies, Inc. Reducing Stalls in a Processor Pipeline
US8127113B1 (en) 2006-12-01 2012-02-28 Synopsys, Inc. Generating hardware accelerators and processor offloads
WO2008154543A2 (en) * 2007-06-11 2008-12-18 Abbott Biotechnology Ltd. Methods for treating juvenile idiopathic arthritis
US8117424B2 (en) 2007-09-21 2012-02-14 Siemens Industry, Inc. Systems, devices, and/or methods for managing programmable logic controller processing
US7877582B2 (en) * 2008-01-31 2011-01-25 International Business Machines Corporation Multi-addressable register file
US7849294B2 (en) 2008-01-31 2010-12-07 International Business Machines Corporation Sharing data in internal and memory representations with dynamic data-driven conversion
KR101700405B1 (ko) 2010-03-22 2017-01-26 삼성전자주식회사 레지스터, 프로세서 및 프로세서 제어 방법
US8707013B2 (en) * 2010-07-13 2014-04-22 Texas Instruments Incorporated On-demand predicate registers
US8539206B2 (en) * 2010-09-24 2013-09-17 Intel Corporation Method and apparatus for universal logical operations utilizing value indexing
US20120173851A1 (en) * 2010-12-30 2012-07-05 International Business Machines Corporation Mechanism for maintaining dynamic register-level memory-mode flags in a virtual machine system
US9727336B2 (en) 2011-09-16 2017-08-08 International Business Machines Corporation Fine-grained instruction enablement at sub-function granularity based on an indicated subrange of registers
US9411585B2 (en) 2011-09-16 2016-08-09 International Business Machines Corporation Multi-addressable register files and format conversions associated therewith
US9778877B1 (en) 2011-11-02 2017-10-03 Rambus Inc. High capacity, high performance memory system
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
US9298459B2 (en) * 2012-07-18 2016-03-29 International Business Machines Corporation Managing register pairing
US9323532B2 (en) 2012-07-18 2016-04-26 International Business Machines Corporation Predicting register pairs
US9323529B2 (en) 2012-07-18 2016-04-26 International Business Machines Corporation Reducing register read ports for register pairs
US9477476B2 (en) * 2012-11-27 2016-10-25 Qualcomm Incorporated Fusing immediate value, write-based instructions in instruction processing circuits, and related processor systems, methods, and computer-readable media
US8873750B2 (en) * 2013-03-14 2014-10-28 International Business Machines Corporation Instruction for performing a pseudorandom number generate operation
US9201629B2 (en) 2013-03-14 2015-12-01 International Business Machines Corporation Instruction for performing a pseudorandom number seed operation
US10228941B2 (en) 2013-06-28 2019-03-12 Intel Corporation Processors, methods, and systems to access a set of registers as either a plurality of smaller registers or a combined larger register
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
US10698688B2 (en) 2015-06-24 2020-06-30 International Business Machines Corporation Efficient quantization of compare results
US10620952B2 (en) 2015-06-24 2020-04-14 International Business Machines Corporation Conversion of boolean conditions
US10255462B2 (en) 2016-06-17 2019-04-09 Arm Limited Apparatus and method for obfuscating power consumption of a processor
CN112269596B (zh) * 2020-10-19 2023-11-28 童先娥 一种指令处理方法及处理器

Family Cites Families (230)

* 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
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
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
EP0021843A1 (de) * 1979-07-03 1981-01-07 Metal Closures Limited Leicht zu öffnender Verschluss für Dosen und dgl.
JPS5616248A (en) 1979-07-17 1981-02-17 Matsushita Electric Ind Co Ltd Processing system for interruption
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
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 情報処理装置
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
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 演算処理装置
JPS60144830A (ja) 1984-01-05 1985-07-31 Nec Corp 情報処理装置
US4561051A (en) 1984-02-10 1985-12-24 Prime Computer, Inc. Memory access method and apparatus in multiple processor systems
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 マイクロコンピユ−タ
US4775927A (en) 1984-10-31 1988-10-04 International Business Machines Corporation Processor including fetch operation for branch instruction with control tag
US4991081A (en) * 1984-10-31 1991-02-05 Texas Instruments Incorporated Cache memory addressable by both physical and virtual addresses
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
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 株式会社日立製作所 デ−タ処理装置
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
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
JPS62152043A (ja) 1985-12-26 1987-07-07 Nec Corp 命令コ−ドアクセス制御方式
EP0239081B1 (de) 1986-03-26 1995-09-06 Hitachi, Ltd. Datenprozessor in Pipelinestruktur mit der Fähigkeit mehrere Befehle parallel zu dekodieren und auszuführen
JP2545789B2 (ja) * 1986-04-14 1996-10-23 株式会社日立製作所 情報処理装置
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
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 キヤツシユメモリ
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 株式会社日立製作所 情報処理装置
IL84821A (en) 1986-12-15 1992-07-15 United Technologies Corp Reduced instruction set computing apparatus and methods
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
US4811296A (en) 1987-05-15 1989-03-07 Analog Devices, Inc. Multi-port register file with flow-through of data
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
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
JP2513765B2 (ja) 1988-02-03 1996-07-03 富士通株式会社 パイプライン処理における条件分岐制御方式
US4926323A (en) * 1988-03-03 1990-05-15 Advanced Micro Devices, Inc. Streamlined instruction processor
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
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
US5097409A (en) * 1988-06-30 1992-03-17 Wang Laboratories, Inc. Multi-processor system with cache memories
US5261057A (en) 1988-06-30 1993-11-09 Wang Laboratories, Inc. I/O bus to system interface
JP2761506B2 (ja) 1988-07-08 1998-06-04 株式会社日立製作所 主記憶制御装置
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
US5291615A (en) * 1988-08-11 1994-03-01 Kabushiki Kaisha Toshiba Instruction pipeline microprocessor
JPH0673105B2 (ja) 1988-08-11 1994-09-14 株式会社東芝 命令パイプライン方式のマイクロプロセッサ
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
EP0365188B1 (de) 1988-10-18 1996-09-18 Hewlett-Packard Company Verfahren und Vorrichtung für Zustandskode in einem Zentralprozessor
JPH02118757A (ja) 1988-10-28 1990-05-07 Nec Corp データ処理システム
JP2810068B2 (ja) 1988-11-11 1998-10-15 株式会社日立製作所 プロセッサシステム、コンピュータシステム及び命令処理方法
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
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
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
US5222223A (en) 1989-02-03 1993-06-22 Digital Equipment Corporation Method and apparatus for ordering and queueing multiple memory requests
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
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
US5067069A (en) 1989-02-03 1991-11-19 Digital Equipment Corporation Control of multiple functional units with parallel operation in a microcoded execution unit
US5133074A (en) 1989-02-08 1992-07-21 Acer Incorporated Deadlock resolution with cache snooping
JPH0769825B2 (ja) 1989-02-10 1995-07-31 三菱電機株式会社 並列処理装置
US5293500A (en) * 1989-02-10 1994-03-08 Mitsubishi Denki K.K. Parallel processing method and apparatus
US5226166A (en) 1989-02-10 1993-07-06 Mitsubishi Denki K.K. Parallel operation processor with second command unit
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
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
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
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
JPH0335324A (ja) 1989-06-30 1991-02-15 Sharp Corp マイクロコンピュータ
DE69032812T2 (de) 1989-07-07 1999-04-29 Hitachi, Ltd., Tokio/Tokyo Vorrichtung und Verfahren zur parallelen Verarbeitung
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
US5179530A (en) * 1989-11-03 1993-01-12 Zoran Corporation Architecture for integrated concurrent vector signal processor
DE68928980T2 (de) 1989-11-17 1999-08-19 Texas Instruments Inc. Multiprozessor mit Koordinatenschalter zwischen Prozessoren und Speichern
US5226125A (en) 1989-11-17 1993-07-06 Keith Balmer Switch matrix having integrated crosspoint logic and method of operation
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
US5251306A (en) 1990-01-16 1993-10-05 Advanced Micro Devices, Inc. Apparatus for controlling execution of a program in a computing device
JPH061463B2 (ja) 1990-01-16 1994-01-05 インターナショナル・ビジネス・マシーンズ・コーポレーション マルチプロセッサ・システムおよびそのプライベート・キャッシュ制御方法
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 株式会社東芝 電子計算機
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
DE69128741T2 (de) 1990-05-18 1998-07-16 Koninkl Philips Electronics Nv 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
EP0535107B1 (de) 1990-06-11 1999-12-08 Cray Research, Inc. Verfahren zur optimierung der befehlsablauffolge
CA2038264C (en) 1990-06-26 1995-06-27 Richard James Eickemeyer In-memory preprocessor for a scalable compound instruction set machine processor
CA2045773A1 (en) 1990-06-29 1991-12-30 Compaq Computer Corporation Byte-compare operation for high-performance processor
EP0468831B1 (de) 1990-06-29 1997-10-15 Digital Equipment Corporation Busprotokoll für Prozessor mit write-back cache
US5155843A (en) 1990-06-29 1992-10-13 Digital Equipment Corporation Error transition mode for multi-processor system
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
DE69130138T2 (de) * 1990-06-29 1999-05-06 Digital Equipment Corp., Maynard, Mass. Sprungvorhersageeinheit für hochleistungsfähigen Prozessor
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
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
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
EP0886209B1 (de) 1991-07-08 2005-03-23 Seiko Epson Corporation RISC-Prozessor mit erweiterbarer Architektur
US5539911A (en) 1991-07-08 1996-07-23 Seiko Epson Corporation High-performance, superscalar-based computer system with out-of-order instruction execution
US5826055A (en) 1991-07-08 1998-10-20 Seiko Epson Corporation System and method for retiring instructions in a superscalar microprocessor
US5961629A (en) 1991-07-08 1999-10-05 Seiko Epson Corporation High performance, superscalar-based computer system with out-of-order instruction execution
WO1993001565A1 (en) 1991-07-08 1993-01-21 Seiko Epson Corporation Single chip page printer controller
EP0945787A3 (de) * 1991-07-08 2008-12-31 Seiko Epson Corporation Risc-Mikroprozessorarchitektur mit schneller Unterbrechung und Ausnahmezustand
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
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
JPH05197544A (ja) 1992-01-20 1993-08-06 Pfu Ltd データ処理装置
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
EP0636256B1 (de) * 1992-03-31 1997-06-04 Seiko Epson Corporation Befehlsablauffolgeplanung von einem risc-superskalarprozessor
EP0638183B1 (de) 1992-05-01 1997-03-05 Seiko Epson Corporation Vorrichtung und verfahren zum befehlsabschluss in einem superskalaren prozessor.
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
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
DE69320991T2 (de) 1992-12-31 1999-01-28 Seiko Epson Corp., Tokio/Tokyo System und verfahren zur änderung der namen von registern
US5604912A (en) * 1992-12-31 1997-02-18 Seiko Epson Corporation System and method for assigning tags to instructions to control instruction execution
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 メモリコントローラ
US5446912A (en) 1993-09-30 1995-08-29 Intel Corporation Partial width stalls within register alias table
US5613132A (en) * 1993-09-30 1997-03-18 Intel Corporation Integer and floating point register alias table within processor device
US5630149A (en) 1993-10-18 1997-05-13 Cyrix Corporation Pipelined processor with register renaming hardware to accommodate multiple size registers
EP0651321B1 (de) 1993-10-29 2001-11-14 Advanced Micro Devices, Inc. Superskalarmikroprozessoren
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
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
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
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
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
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
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
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
US5630083A (en) 1994-03-01 1997-05-13 Intel Corporation Decoder for decoding multiple instructions in parallel
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
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
AU4464596A (en) * 1994-12-02 1996-06-19 Intel Corporation Microprocessor with packing operation of composite operands
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
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
US5838936A (en) * 1997-03-10 1998-11-17 Emulex Corporation Elastic bus interface data buffer
US6418529B1 (en) * 1998-03-31 2002-07-09 Intel Corporation Apparatus and method for performing intra-add operation
US7897110B2 (en) 2005-12-20 2011-03-01 Asml Netherlands B.V. System and method for detecting at least one contamination species in a lithographic apparatus
US7685401B2 (en) 2006-12-27 2010-03-23 Intel Corporation Guest to host address translation for devices to access memory in a partitioned system

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7941636B2 (en) 1991-07-08 2011-05-10 Intellectual Venture Funding Llc RISC microprocessor architecture implementing multiple typed register sets
US7786853B2 (en) 2001-10-06 2010-08-31 Robert Bosch Gmbh Method for transmitting data from at least one sensor to a control device
DE102005050382A1 (de) * 2005-10-20 2007-05-03 Infineon Technologies Ag Prozessor und Verfahren zum Prüfen einer Bedingung für eine bedingte Ausführung eines Programmbefehls
DE102005050382B4 (de) * 2005-10-20 2012-08-09 Infineon Technologies Ag Prozessor zum Prüfen einer Bedingung für eine bedingte Ausführung eines Programmbefehls

Also Published As

Publication number Publication date
US20070113047A1 (en) 2007-05-17
JP3880056B2 (ja) 2007-02-14
ATE185205T1 (de) 1999-10-15
KR100294964B1 (ko) 2001-09-17
US5838986A (en) 1998-11-17
US5493687A (en) 1996-02-20
JP3864160B2 (ja) 2006-12-27
US6044449A (en) 2000-03-28
US20100106942A1 (en) 2010-04-29
KR930702717A (ko) 1993-09-09
JP2004185638A (ja) 2004-07-02
WO1993001543A1 (en) 1993-01-21
US5560035A (en) 1996-09-24
US7941636B2 (en) 2011-05-10
US6249856B1 (en) 2001-06-19
EP0911724A2 (de) 1999-04-28
EP0547216B1 (de) 1999-09-29
JP2004185637A (ja) 2004-07-02
US7555631B2 (en) 2009-06-30
DE69230057D1 (de) 1999-11-04
US20030115440A1 (en) 2003-06-19
EP0911724A3 (de) 2000-01-12
US5682546A (en) 1997-10-28
JP3607701B2 (ja) 2005-01-05
EP0547216A1 (de) 1993-06-23
US7685402B2 (en) 2010-03-23
US20010034823A1 (en) 2001-10-25

Similar Documents

Publication Publication Date Title
DE69230057T2 (de) Risc mikroprozessorarchitektur mit mehrere registersätze von unterschiedlichen typen
DE69525277T2 (de) Datenprozessor für Operanden mit variabler Breite
DE68929215T2 (de) Datenprozessor
DE69904189T2 (de) Konfigurierter prozessor zur abbildung von logischen registernummern auf physikalische registernummern unter verwendung von virtuellen registernummern
DE69115344T2 (de) Vorverarbeitungsprozessor zur Verbindung von Befehlen für einen Cache-Speicher
DE69032812T2 (de) Vorrichtung und Verfahren zur parallelen Verarbeitung
DE68927371T2 (de) Verfahren und Vorrichtung zur Verarbeitung von mehreren Zustandscodes wie für einen Parallel-Pipeline-Rechner
DE69032635T2 (de) Verfahren und Vorrichtung zur Erkennung von Betriebsmittelkonflikten in einer Pipeline-Verarbeitungseinheit
DE3687666T2 (de) Verzweigungssteuerung in einem dreiphasen-pipeline-signalprozessor.
DE69907955T2 (de) Globale und locale registersegmentierung in einem vliw prozessor
DE3689923T2 (de) Dreiphasen-Pipeline-Signalprozessor.
DE69227604T2 (de) Rückwärts kompatible Rechnerarchitektur mit erweiterten Wortbreiten und Adressraum
DE2542740C2 (de) Datenverarbeitungsanlage mit einer Mikroprogrammsteuerung
DE69129565T2 (de) Hochleistungsfähiger Emulator mit Pipelining
DE69525097T2 (de) Prozessorarchitektur für gemischte Funktionseinheiten
DE60018078T2 (de) Einstellung von bedingungswerten in einem rechner
DE60010907T2 (de) Sram-steuerungvorrichtung für parallele prozessorarchitektur mit adressen- und befehlswarteschlange und arbiter
DE69622663T2 (de) Zweistufige vorausholungspufferstruktur und verfahren mit bypass
DE68928677T2 (de) Verfahren und digitaler Computer zur Vorverarbeitung mehrerer Befehle
DE19735350B4 (de) Vektorprozessor zum Ausführen paralleler Operationen und Verfahren hierfür
DE68927415T2 (de) Kontextumschaltungsverfahren und -anordnung zur Verwendung in einem Vektorverarbeitungssystem
DE60006270T2 (de) Parallele prozessorarchitektur
DE68927492T2 (de) Verfahren und Vorrichtung zur gleichzeitigen Verteilung von Befehlen an mehrere funktionelle Einheiten
DE69408769T2 (de) Fliessbandsteuerung und Registerübersetzung in Mikroprozessor
DE69636861T2 (de) Mikroprozessor mit Lade-/Speicheroperation zu/von mehreren Registern

Legal Events

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

Ref document number: 547216

Country of ref document: EP