DE69230057T2 - Risc mikroprozessorarchitektur mit mehrere registersätze von unterschiedlichen typen - Google Patents
Risc mikroprozessorarchitektur mit mehrere registersätze von unterschiedlichen typenInfo
- 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
Links
- 238000012545 processing Methods 0.000 claims description 20
- 230000004044 response Effects 0.000 claims description 6
- 238000000034 method Methods 0.000 abstract description 4
- 230000006870 function Effects 0.000 description 35
- 230000008901 benefit Effects 0.000 description 6
- 238000012360 testing method Methods 0.000 description 6
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 2
- 238000013459 approach Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 229910052710 silicon Inorganic materials 0.000 description 2
- 239000010703 silicon Substances 0.000 description 2
- 102100027493 5-hydroxytryptamine receptor 1D Human genes 0.000 description 1
- 102100037733 Fatty acid-binding protein, brain Human genes 0.000 description 1
- 101710098548 Fatty acid-binding protein, brain Proteins 0.000 description 1
- 101000724739 Homo sapiens 5-hydroxytryptamine receptor 1D Proteins 0.000 description 1
- 101100247632 Metacordyceps chlamydosporia rdc3 gene Proteins 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000007717 exclusion Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 239000003607 modifier Substances 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30029—Logical and Boolean instructions, e.g. XOR, NOT
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30105—Register structure
- G06F9/30112—Register structure comprising data of variable length
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30105—Register structure
- G06F9/30116—Shadow registers, e.g. coupled registers, not forming part of the register space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30123—Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/3013—Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30138—Extension of register space, e.g. register cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
- G06F9/30167—Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
- G06F9/30189—Instruction operation extension or modification according to execution mode, e.g. mode flag
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction 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
- 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.
- Die vorliegende Erfindung betrifft allgemein Mikroprozessoren und bezieht sich genauer auf einen RISC-Mikroprozessor mit mehreren symmetrischen Sätzen von Registern.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- Die Fig. 2-5 verdeutlichen weitere Einzelheiten der Datenpfade innerhalb der Gleitkomma-, Ganzzahl- bzw. Booleschen Abschnitte der IEU.
- 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.
- 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.
- 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.
- 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.
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)
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)
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)
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 |
-
1991
- 1991-07-08 US US07/726,773 patent/US5493687A/en not_active Expired - Lifetime
-
1992
- 1992-07-08 EP EP92915765A patent/EP0547216B1/de not_active Expired - Lifetime
- 1992-07-08 DE DE69230057T patent/DE69230057T2/de not_active Expired - Lifetime
- 1992-07-08 AT AT92915765T patent/ATE185205T1/de not_active IP Right Cessation
- 1992-07-08 JP JP50240393A patent/JP3607701B2/ja not_active Expired - Lifetime
- 1992-07-08 KR KR1019930700692A patent/KR100294964B1/ko not_active IP Right Cessation
- 1992-07-08 WO PCT/US1992/005720 patent/WO1993001543A1/en active IP Right Grant
- 1992-07-08 EP EP99102406A patent/EP0911724A3/de not_active Withdrawn
-
1995
- 1995-06-05 US US08/465,239 patent/US5560035A/en not_active Expired - Lifetime
-
1996
- 1996-06-19 US US08/665,845 patent/US5682546A/en not_active Expired - Lifetime
-
1997
- 1997-09-25 US US08/937,361 patent/US5838986A/en not_active Expired - Lifetime
-
1998
- 1998-11-10 US US09/188,708 patent/US6044449A/en not_active Expired - Fee Related
-
2000
- 2000-01-10 US US09/480,136 patent/US6249856B1/en not_active Expired - Fee Related
-
2001
- 2001-04-24 US US09/840,026 patent/US20010034823A1/en not_active Abandoned
-
2002
- 2002-01-31 US US10/060,086 patent/US7555631B2/en not_active Expired - Fee Related
-
2004
- 2004-01-19 JP JP2004010368A patent/JP3864160B2/ja not_active Expired - Lifetime
- 2004-01-19 JP JP2004010369A patent/JP3880056B2/ja not_active Expired - Lifetime
-
2007
- 2007-01-09 US US11/651,009 patent/US7685402B2/en not_active Expired - Fee Related
-
2009
- 2009-12-31 US US12/650,998 patent/US7941636B2/en not_active Expired - Fee Related
Cited By (4)
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 |