DE60018078T2 - Einstellung von bedingungswerten in einem rechner - Google Patents

Einstellung von bedingungswerten in einem rechner Download PDF

Info

Publication number
DE60018078T2
DE60018078T2 DE60018078T DE60018078T DE60018078T2 DE 60018078 T2 DE60018078 T2 DE 60018078T2 DE 60018078 T DE60018078 T DE 60018078T DE 60018078 T DE60018078 T DE 60018078T DE 60018078 T2 DE60018078 T2 DE 60018078T2
Authority
DE
Germany
Prior art keywords
condition
operand
command
instruction
execution
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE60018078T
Other languages
English (en)
Other versions
DE60018078D1 (de
Inventor
Sophie Lode WILSON
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Broadcom Corp
Original Assignee
Broadcom Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Broadcom Corp filed Critical Broadcom Corp
Publication of DE60018078D1 publication Critical patent/DE60018078D1/de
Application granted granted Critical
Publication of DE60018078T2 publication Critical patent/DE60018078T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30094Condition code generation, e.g. Carry, Zero flag
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • G06F9/30038Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Executing Machine-Instructions (AREA)
  • Oscillators With Electromechanical Resonators (AREA)
  • Electrophonic Musical Instruments (AREA)
  • Channel Selection Circuits, Automatic Tuning Circuits (AREA)
  • Advance Control (AREA)
  • Epoxy Resins (AREA)
  • Dc-Dc Converters (AREA)

Description

  • Die vorliegende Erfindung betrifft ein Computersystem zum bedingten Ausführen von Befehlen, eine Ausführungseinheit zur Verwendung in dem Computersystem sowie Verfahren zum Ausführen von Befehlen.
  • Es sind Computersysteme bekannt, bei denen die Ausführung eines Befehls auf einen Wert hin, der in dem Befehl identifiziert oder adressiert wird, mit "predicated"-Anweisungen implementiert wird (im folgenden "prädikatieren" genannt). Es sind auch Computersysteme bekannt, die auf sogenannte gepackte Operanden ansprechen. Das bedeutet, jeder Operand umfasst eine Vielzahl von gepackten Objekten, die an entsprechenden Stellen ("Lanes")des Operanden enthalten sind. Der Packungsgrad kann variieren, und für 64-Bit-Operanden werden bekanntermaßen Byte-Packungen (acht Objekte pro 64-Bit-Operand), Halbwort-Packungen (vier Objekte pro 64-Bit-Operand) und Wort-Packungen (zwei Objekte pro 64-Bit-Operand) vorgesehen. Bei bestehenden Computersystemen bewirkt das Prädikatieren ("Predication") dann, wenn die Befehle, die solche gepackten Operanden definieren, prädikatiert werden, entweder, dass die Operation mit allen Operanden durchgeführt wird oder dass diese überhaupt nicht ausgeführt wird. Darüber hinaus werden Bedingungswerte in Abhängigkeit von den Ergebnissen der Operation eines Befehls eingestellt. Bei dem System, das in der GB 2 317 466 beschrieben wird, setzt zum Beispiel eine arithmetische Logikeinheit Bedingungscode-Flags in Abhängigkeit von dem Ergebnis einer Operation.
  • Es gibt auch Computersysteme, bei denen ein Befehl einen speziellen Test durchführt (z.B. Größer-als-Vergleich) und ein einzelnes Bit für das Ergebnis wahr/falsch setzt. Derartige Befehle können bei gepackten Objekten implementiert werden. Zum Beispiel vergleichen die gepackten Vergleichsbefehle in der Intel MMX-Maschine die entsprechenden Datenobjekte in den Quell- und Zieloperanden jeweils bezüglich Gleichheit oder einem Größer-als-Wert und erzeugen eine Maske von Einsen oder Nullen, die in den Zieloperand geschrieben werden. Logische Operationen können die Maske verwenden, um Elemente auszuwählen. Es gibt nur eine kleine Gruppe derartiger Befehle, und diese Befehle haben immer den Nebeneffekt, dass sie Wahr/Falsch-Flags setzen.
  • Gemäß einer Ausführungsform der Erfindung ist ein Verfahren zum Ausführen von Behlen in einem Computersystem mit Operanden vorgesehen, die eine Vielzahl von gepackten Objekten an jeweiligen Stellen des Operanden enthalten, wobei jeder Befehl eine Operation definiert und einen Bedingungseinstellungsindikator enthält, der unabhängig von der Operation eingestellt werden kann, wobei das Verfahren umfasst: Bestimmen des Status des Bedingungseinstellungsindikators und, wenn der Bedingungseinstellungsindikator eingestellt ist, Durchführen einer in dem Befehl spezifizierten Operation an jeder Stelle des Operanden und Erzeugen eines Satzes von Multibit-Bedingungscodes in Abhängigkeit von den Ergebnissen der Durchführung der Operation für jede Stelle.
  • Die Anordnung gemäß der Erfindung sieht eine Anzahl von Vorteilen vor. In erster Linie sieht sie eine auswählbare Fähigkeit vor, Bedingungscodes zusammen mit gewöhnlichen Operationen einstellen zu können, die in einem Befehl definiert sind. Der Bedingungseinstellungsindikator bestimmt, ob Bedingungscodes eingestellt werden oder nicht.
  • Darüber hinaus sind die Bedingungscodes vorzugsweise, aber nicht notwendigerweise, Multibit-Bedingungscodes, die es erlauben, dass eine Anzahl von unterschiedlichen Testbedingungen durch Folgebefehle ausgewertet bzw. abgeschätzt werden können.
  • Wenn der Operand eine maximale Anzahl N von gepackten Objekten enthält, wird ein Bedingungscode individuell für jede Stelle erzeugt, wodurch jeder Satz von Bedingungscodes N Bedingungscodes enthält.
  • Gemäß dem im folgenden beschriebenen Ausführungsbeispiel wird dann, wenn die Operanden weniger als die maximale Anzahl von gepackten Objekten enthalten (z.B. Halbwort- oder Wort-Packungen), für jede Stelle des Operanden ein Bedingungscode erzeugt, und der Wert dieses Codes wird verwendet, um zwei oder mehrere Bedingungscodes in dem Bedingungscodesatz einzustellen, so dass sich in dem endgültigen Satz von Bedingungscodes N (die größtmögliche Anzahl von) Bedingungscodes befinden. Dadurch wird es möglich, dass Bedingungscodes bei einem geringeren Packungsgrad eingestellt und von einem Operanden mit einem höheren Packungsgrad verwendet werden können. In einem anderen Ausführungsbeispiel wird pro Stelle des gepackten Operanden ein Bedingungscode eingestellt, so dass die Anzahl der eingestellten Bedingungscodes vom Packungsgrad abhängen.
  • Für ein Computersystem, das erste und zweite Ausführungskanäle enthält, können jeweilige Sätze von Bedingungscodes für jeden Ausführungskanal erzeugt werden. Außerdem kann der Zugriff auf einen Satz von Bedingungscodes, der einem der Ausführungskanäle zugeordnet ist, durch einen Befehl erfolgen, der in einem anderen der Ausführungskanäle ausgeführt wird.
  • Die Erfindung erwägt auch den Zugriff auf die Bedingungscodes in einem Folgebefehl, um zu bestimmen, an welchen Stellen des Operanden die in diesem Folgebefehl spezifizierte (angegebene) Operation ausgeführt werden soll.
  • Die Erfindung sieht ein Verfahren zum Ausführen von Befehlen in einem Computersystem mit Operanden vor, die eine Vielzahl von gepackten Objekten an jeweiligen Stellen des Operanden enthalten, wobei die Anzahl der gepackten Objekte in dem Operanden kleiner ist als die größtmögliche Anzahl (N), wobei das Verfahren aufweist: Durchführen einer in dem Befehl spezifizierten Operation an jeder Stelle des Operanden und Abschätzen (Auswerten) von Bedingungscodewerten für jede Stelle in Abhängigkeit von den Ergebnissen der Durchführung der Operation für diese Stelle; Erzeugen eines Satzes von Bedingungscodes, der eine Anzahl von Bedingungscodes enthält, die der größtmöglichen Anzahl von gepackten Objekten in einem Operanden entspricht, unter Verwendung des für jede Stelle des Operanden eingestellten Bedingungscodewertes, um zwei oder mehrere Bedingungscodes in dem Satz von Bedingungscodes einzustellen; und Zugreifen auf jeden der Sätze von Bedingungscodes in einem Folgebefehl, der einen Operanden identifiziert, der in höherem Maße gepackt ist als der Operand des ersten Befehls, um zu bestimmen, an welcher Stelle des Operanden für den Folgebefehl die in diesem Folgebefehl spezifizierte Operation durchgeführt werden soll, in Abhängigkeit von den Ergebnissen des Vergleichs eines in dem Folgebefehl identifizierten Testcodes mit dem erzeugten Satz von Bedingungscodes.
  • Eine weitere Ausführungsform der Erfindung sieht ein Computersystem vor mit: einem Programmspeicher, der eine Befehlsfolge zur Ausführung durch das Computersystem enthält, wobei die Befehle einen ersten Befehl aufweisen, der wenigstens einen Quelloperanden identifiziert, der eine Vielzahl von gepackten Objekten an jeweiligen Stellen des Operanden enthält und ein Bedingungseinstellungsfeld aufweist, das ein Bedingungseinstell-Flag enthält, sowie einen zweiten Befehl, der eine auszuführende Operation definiert und ein Testfeld aufweist, das einen Testcode identifiziert; und wenigstens einer Ausführungseinheit zum Ausführen der ersten und zweiten Befehle, wobei gemäß der Ausführung des ersten Befehls ein Satz von Bedingungscodes erzeugt wird, in Abhängigkeit von den Ergebnissen der Durchführung der Operation für jede Stelle des Operanden, wenn das Bedingungssatz-Flag eingestellt bzw. gesetzt ist, und wobei bei der Ausführung des zweiten Befehls der in dem Testfeld identifizierte Testcode mit den Bedingungscodes verglichen wird, um zu bestimmen, an welchen Stellen des Operanden die in dem zweiten Befehl spezifizierte Operation durchgeführt werden soll.
  • Eine weitere Ausführungsform der Erfindung sieht ein Computerprogramm-Erzeugnis vor, das in ein Computersystem geladen werden kann und das Programmcode-Einrichtungen aufweist, die eine Befehlsfolge aufweisen, mit: einem ersten Befehl, der wenigstens einen Quelloperanden identifiziert, der eine Vielzahl von gepackten Objekten an jeweiligen Stellen des Operarden enthält und ein Bedingungseinstellungsfeld aufweist, das ein Bedingungseinstell-Flag enthält, und einem zweiten Befehl, der eine durchzuführende Operation definiert und ein Testfeld aufweist, das einen Testcode identifiziert, wobei, wenn das Computerprogramm-Erzeugnis in ein Computersystem geladen wird und das Bedingungseinstell-Flag gesetzt ist, die Ausführung des ersten Befehls dazu führt, dass ein Satz von Bedingungscodes erzeugt wird, in Abhängigkeit von den Ergebnissen des Durchführens der in dem ersten Befehl spezifizierten Operation für jede Stelle des in dem ersten Befehl definierten Operanden; und der zweite Befehl die in dem zweiten Befehl definierte Operation bedingt an einzelnen Stellen des Operanden implementiert, in Abhängigkeit von den Ergebnissen des Vergleichs des in dem zweiten Befehl identifizierten Testcodes mit dem erzeugten Satz von Bedingungscodes.
  • Zum besseren Verständnis der vorliegenden Erfindung und zur Veranschaulichung, wie diese ausgeführt werden kann, wird nun beispielhalber auf die beigefügten Zeichnungen Bezug genommen, in denen:
  • 1 ein schematisches Blockdiagramm ist, das einen Prozessor veranschaulicht;
  • 2 ein Diagramm ist, das die Codierung; von zwei "gepackten" Befehlen veranschaulicht;
  • 3 eine Anzahl von verschiedenen 32-Bit-Befehlsformaten veranschaulicht;
  • 4 den Inhalt eines Textregisters veranschaulicht;
  • 5 den Inhalt eines Bedingungscoderegisters veranschaulicht;
  • 6 ein Diagramm ist, das das Einstellen von Bedingungscodes veranschaulicht; und
  • 7 ein Diagramm ist, das die Verwendung von Bedingungscodes veranschaulicht.
  • Das hier beschriebene Computersystem ist schematisch in 1 veranschaulicht und ist ein schematisches Diagramm des Systems. In 1 bezeichnet das Bezugszeichen 2 einen Programmspeicher, der Programme in Form einer Vielzahl von Befehlen enthält. Der Programmspeicher 2 ist mit einem Befehlscache 3 verbunden, der mit einem Befehlsabruf-/Dekodierschaltkreis 4 verbunden ist. Der Abruf-/Dekodierschaltkreis gibt Adressen an den Programmspeicher aus und erhält bei jeder Abrufoperation einen 64-Bit-Befehl von dem Programmspeicher 2 (oder dem Cache 3). Jeder 64-Bit-Befehl kann zwei Operationen oder eine einzelne Operation definieren. Die Dekodiereinheit 4 wertet den Operationscode ("Opcode") aus und überträgt die geeigneten Steuersignale entlang der X- und Y-Kanäle 5x , 5y . Jeder Kanal umfasst eine SIMD-Ausführeinheit 8x , 8Y , die drei Datenverarbeitungseinheiten MAC, INT und FPU und eine Lade-/Speichereinheit LSU 6 umfasst. Jede Datenverarbeitungseinheit MAC, INT und FPU sowie die Lade-/Speichereinheiten LSU werden nach einem "Single Instruction Multiple Data (SIMD)"-Prinzip ("Single Instruction Multiple Data" = Einzelbefehl/Mehrfachdaten) gemäß der in dem Befehl ausgedrückten SIMD-Stelle betrieben, und zwar gemäß dem nachfolgenden Protokoll, das den Packungsgrad von Objekten für gepackte Datenverarbeitungsoperationen definiert:
    (B) – 8-Bit-Objekte (b0 ... b7)
    (H) – 16-Bit-Objekte (h0 .., h3)
    (W) – 32-Bit-Objekte (w0 ... w1)
    (L) – 64-Bit-Objekte (I)
    (S) – 32-Bit-Gleitpunkt
    (D) – 64-Bit-Gleitpunkt
  • Bei jedem Kanal 5x , 5y wird dann, wenn der Befehl eine Datenverarbeitungsoperation definiert, diese der geeigneten Datenverarbeitungseinheit MAC, INT oder FPU zugeführt, und wenn dieser eine Lade-/Speicheroperation definiert, wird sie der Lade-/ Speichereinheit LSU zugeführt. Die Datenwerte werden in die und aus den MAC-Datenverarbeitungseinheiten in ein gemeinsames und aus einem gemeinsamen Registerfile 10 geladen, das sechzehn 64-Bit-Spezialregister entlang den Registerzugriffspfaden 12x , 12y umfasst. Die Datenwerte werden in die und aus den INT- und FPU-Datenverarbeitungseinheiten und den Lade-/Speichereinheiten LSU in ein zweites und aus einem zweiten Registerfile 11 geladen, das vierundsechzig 64-Bit-Mehrzweckregister umfasst. Die Registerzugriffspfade 14x , 14y sind für diese Zugriffe vorgesehen. Der Programmzähler PC, der den aktuellen Befehl anzeigt, kann über eines der Mehrzweckregister (das PC-Register) gelesen werden. Ein anderes der Mehrzweckregister bildet ein Steuer- und Statusregister. Die Mehrzweckregister umfassen auch ein Bedingungscoderegister (CCreg) und ein Testregister TSTreg, die im folgenden noch genauer beschrieben werden.
  • Jeder Registerzugriffspfad 12, 14 trägt drei Adressen von der Zugriffseinheit, zwei Quelladressen SRC1, SRC2 und eine Zieladresse DST. Im Falle von Datenverarbeitungsoperationen definieren die Quelladressen SRC1, SRC2 Register in den Registerfiles 10, 11, die Quelloperanden für die Verarbeitung durch die Datenverarbeitungseinheit enthalten. Die Zieladresse DST identifiziert ein Zielregister, in das ein Ergebnis der Datenverarbeitung eingebracht wird. Die Operanden und Ergebnisse werden zwischen den Registerfiles 10 oder 11 und der jeweiligen Datenverarbeitungseinheit über die Zugriffspfade 12, 14 übertragen. Im Falle von Lade-/Speicheroperationen erlauben die Befehlsformate die Formulierung von Speicher-zugriffsadressen Ax, Ay, aus den Datenwerten, die in den Registern enthalten sind, wie dies in unserer ebenfalls anhängigen Anmeldung Nr. (PWF-Aktenzeichen: 92472) beschrieben ist, wie später beschrieben wird. Die Lade-/Speichereinheiten greifen auf einen gemeinsamen Adressraum in der Form eines Datenspeichers 16 über einen Dual-Ported-Datencache DCACHE 15 zu. Zu diesem Zweck besitzt jede Lade-/Speichereinheit einen 64-Bit-Datenbus Dx, Dy und einen 64-Bit-Adressbus Ax, Ay.
  • Die Architektur unterstützt zwei Arten von Befehlen, nämlich sogenannte "lange Befehle" und "Doppeloperations-Befehle". Jeder 64-Bit-Doppeloperations-Befehl definiert zwei 31-Bit-Operationen in der Art und Weise, wie dies in 2 dargestellt ist. Das heißt, jede 64-Bit-Sequenz enthält zwei 32-Bit-Befehlsabschnitte, die INST1 und INST2 genannt werden. Jeder Befehl umfasst auch einen bestimmten Satz von Identifikationsbits, die den Typ jeder Operation identifizieren. In 2 gibt es an den Bit-Stellen 31 und 63 zwei solcher Bits, die in 2 ID1 und ID2 genannt sind. In diesem Ausführungsbeispiel sind die Operationen in Datenverarbeitungs-(DP)-Typen oder Lade-/Speicher-(LD/ST)-Typen unterteilt. Die erlaubten Kombinationen sind zwei Datenverarbeitungsoperationen (ID1, ID2, beide auf "0" gesetzt), zwei Lade-/Speicheroperationen (ID1, ID2, beide auf "1" gesetzt) oder eine Datenverarbeitungs- und eine Lade-/Speicheroperation (ID1=0, ID2=1).
  • 3 veranschaulicht eine Anzahl von Basisformaten für die 32-Bit-Datenverarbeitungsabschnitte der Doppeloperations-Befehle. Jede 32-Bit-Operation benötigt zur Ausführung die Ressourcen einer Lade-/Speichereinheit oder eine oder mehrere der SIMD-Datenverarbeitungseinheiten (MAC, INT, FPU). Somit können normalerweise zwei 32-Bit-Operationen gleichzeitig ausgeführt werden, eine in jeweils einem der X- oder Y-Kanäle. Im folgenden wird auf die X- und Y-Kanäle manchmal als die rechte und die linke Seite des Prozessors Bezug genommen.
  • Das Format (1) definiert Register-Register-Operationen. Das Format (2) definiert Register-Immediate-Operationen. Das Format (3) definiert eine Speicherzugriffsoperation. Die Speicherzugriffsoperationen werden hier nicht näher erläutert, aber es sei angemerkt, dass sie dazu verwendet werden, um Daten aus dem Speicher in die Registerfiles zu laden und um Speicheroperationen für den umgekehrten Vorgang vorzusehen.
  • Die Datenverarbeitungsbefehlsformate haben die folgenden Felder gemeinsam. Es gibt drei Identifikationsbits, nämlich M (Bit 31) und G (Bits 29 und 30), die die An der Datenverarbeitungsoperation bezeichnen. Ein Operationscode-Feld (Bits 22 bis 28), das die Art der auszuführenden Operation definiert, ein Bedingungseinstellungsfeld S (Bit 21), ein Testregisterfeld (Bits 18 bis 20) und Felder, die zwei Quellregister Src1, Src2 und ein Zielregister Dst definieren. Natürlich umfasst das Format (2) nicht ein Feld, das ein zweites Quellregister identifiziert, sondern enthält stattdessen einen Immediate-Wert. Wie oben erwähnt ist, können die Register in den Registerfiles 10, 11 eine Anzahl von gepackten Objekten enthalten, und in diesem Fall wird die Operation, die in dem Operationscode des Befehls definiert ist, normalerweise an jeder "Stelle" des Operanden ausgeführt, das heißt, bei jedem Paar von entsprechenden gepackten Objekten in jeweiligen Quellregistern Src1, Src2 oder Quellregister und Immediate-Wert, je nachdem, wie der Fall liegt.
  • Wie oben erwähnt wurde, umfassen die Mehrzweckregister 11 CC-Register und Testregister. Das Testregister enthält eine Vielzahl von Test-Bytes, wobei jedes Byte ein Format wie in 4 aufweist und das niedrigstwertige Byte auf Null gesetzt ist. Auf jedes dieser Bytes wird als ein Treg-Byte [1...7] Bezug genommen. Die Treg-Bytes sind programmierbar und werden vor der Befehlsausführung auf die benötigten Werte eingestellt. Das Testregister wird dazu benutzt, die bedingte Ausführung der Befehle zu erlauben. Jedes Befehlsformat enthält ein 3-Bit-TST-Feld, das die Spezifizierung eines Treg-Byte [1 bis 7] erlaubt. Wenn ein Treg-Byte in dem Befehl nicht spezifiziert wird, wird das TST-Feld in dem Operationscode auf 0 gesetzt, und der Befehl wird unbedingt ausgeführt. Ein spezifiziertes Byte kann unter Verwendung eines ADL-Befehls vom Format (2) modifiziert werden, der einen Byte-Wert, der in dem Immediate-Feld angegeben ist, zu einer spezifizierten SIMD-Stelle hinzufügt, die in dem TST-Feld (Treg-Byte [1...7]) definiert ist.
  • Das 8 Bit-Feld jedes Treg ist derart, wie es in 4 gezeigt ist.
  • Das Bedingungsfeld (Bits 0 bis 3) gilt für alle prädikatierten Befehle (predicated instructions). Es enthält einen 4-Bit-Testcode, um zu erlauben, dass die Bedingungen getestet werden können. Wie an späterer Stelle noch genauer erläutert wird, gilt die Bedingung für Befehle bei gepackten Objekten für alle Stellen auf einer Pro-Stelle-Basis.
  • Die vier Bedingungsflags sind:
    • • N (Negativ-Flag -- Bit 3)
    • • Z (Zero-Flag -- Bit 2)
    • • C (Carry-Flag -- Bit 1)
    • • V (Überlauf-Flag -- Bit 0)
  • Diese vier Bits bewirken 16 Testbedingungen (siehe Tabelle 1).
  • Tabelle 1
    Figure 00090001
  • Das CC-Selektorfeld (Bits 4 bis 6) gilt nur für Befehle bei ungepackten Objekten. Das CC-Selektorfeld bezeichnet den Bedingungscode (in dem CC-Register, Erläuterungen siehe unten), der mit dem Code in dem Treg-Byte verglichen werden soll.
  • In dem beschriebenen Ausführungsbeispiel gilt das Seitenfeld (S-Bit 7, X=0, Y=1) nur für Nicht-SIMD-64-Bit-Befehle. Für 32-Bit-Operationen wird die Seite gemäß dem Kanal entschieden, in dem der Befehl ausgeführt wird, ungeachtet dessen, auf was das Seitenfeld eingestellt ist. Für Nicht-SIMD-64-Bit-Befehle bestimmt das Seitenfeld entweder linke oder rechte (X- oder Y-) Bedingungscodes in dem CC-Register.
  • Das Bedingungscoderegister ist 64 Bits lang und die Bitfelder werden in 5 definiert. Jeder Bedingungscode ist vier Bits lang (ein Halbbyte ("Nibble")).
  • Jedes CC{X,Y}{0..7}-Halbbyte weist die vier Bedingungs-Flags (NZCV) in dieser Reihenfolge auf. Die Bedingungscodes können auf einer Pro-Stelle-Basis eingestellt und benutzt werden.
  • SIMD-Byte-(B)-Operationen aktualisieren 8 Bedingungscodes, X oder Y, in Abhängigkeit von der Seite der Maschine.
    CC{X,Y}0...CC{X,Y}7
  • SIMD-Halbwort-(H)-Operationen aktualisieren vier Paare von Bedingungscodes wie folgt (wiederum in Abhängigkeit von den Seiten der Maschine). Das heißt, zwei Bedingungscodes werden mit dem gleichen Wert für jede Operation aktualisiert.
    CCX0=CCX1 CCY0=CCY1
    CCX2=CCS3 CCY2=CCY3
    CCX4=CCX5 CCY4=CCY5
    CCX6=CCX7 CCT6=CCY7
  • SIMD-Wort-(W)-Operationen aktualisieren zweimal vier Bedingungscodes wie folgt (in Abhängigkeit von der Seite der Maschine). Das heißt, vier Bedingungsflags werden auf den gleichen Wert für jede Operation aktualisiert.
    CCX0=CCX1=CCX2=CCX3 CCY0=CCY1=CCY2=CCY3
    CCX4=CCX5=CCX6=CCX7 CCY4=CCY5=CCY6=CCY7
  • SIMD-Langwort-(L)-Operationen aktualisieren alle acht Bedingungscodes wie folgt (in Abhängigkeit von der Seite der Maschine).
    CCX0=CCX1=CCX2=CCX3=CCX4=CCX5=CCX6=CCX7
    CCY0=CCY1=CCY2=CCY3=CCY4=CCY5=CCY6=CCY7
  • Im folgenden wird nun die Verwendung des Testregisters und des Bedingungscoderegisters unter Bezugnahme auf die nachfolgenden Beispiele beschrieben. Es ist selbstverständlich, dass die nachfolgenden Erläuterungen Beispiele sind, die lediglich zur Veranschaulichung der Prinzipien der Operation verwendet werden.
  • Es wird nun die arithmetische Operation ADD betrachtet. Dieser Befehl kann in einem Register-zu-Register-Format unter Verwendung von Format (1) in 3, oder in einer Register-zu-Immediate-Format unter Verwendung von Format (2) von 3 implementiert werden. Nur das Register-zu-Register-Format wird nachfolgend genauer beschrieben, um die Prinzipien der Verwendung der Testregister und des Bedingungscoderegisters zu veranschaulichen.
  • Der Befehl ADD hat die folgende Semantik:
    ADD{B|H|W|L}{S}{Treg} Dest, Src1, Src2.
  • Wenn man das Format (1) in 3 betrachtet, so definiert dieser Befehl zwei Quellregister in den Feldern SRC1 und SRC2, wobei jedes Quellregister Operanden für die Additionsoperation enthält. Wenn der Befehl ADDL ist, sind die Register nicht gepackt, sondern jeder enthält ein 64-Bit-Objekt. Für die ADDB-, ADDH- und ADDW-Befehle enthält jedes Quellregister eine Anzahl von gepackten Objekten gemäß dem früher definierten Packungsgrad. Im folgenden Beispiel wird angenommen, dass jedes Quellregister acht gepackte Objekte b0 ... b7 enthält. Ein Zielregister DST wird in dem DST-Feld des Befehls definiert, um das Ergebnis der Additionsoperation zu enthalten. In dem Zielregister werden acht gepackte Objekte generiert. Unter den gegebenen Umständen sei angenommen, dass eine einzelne 32-Bit-Operation durch einen Kanal(X oder Y) des Prozessors bewirkt wird.
  • 6 veranschaulicht ein Diagramm einer der Funktionseinheiten, die in der Lage ist, den ADD-Befehl auszuführen. Ein erster und ein zweiter Bitpuffer 40, 42 sind vorgesehen, um den ersten und den zweiten Quelloperanden zu enthalten. In dem veranschaulichten Beispiel enthalten die Quelloperanden in jedem Fall acht gepackte Objekte b0 bis b7. Die Additionsschaltung 44 umfasst acht Operatoren, in diesem Fall Additionsschaltkreise, von denen jeder angeschlossen ist, um jeweils zwei gepackte Objekte von der gleichen Stelle b0 ... b7 der Eingabe-Puffer 40, 42 zu erhalten. Nur die Verbindungen des ersten und des letzten Objekts sind gezeigt. Ähnliche Verbindungen gelten für jede der anderen Additionsschaltkreise. Ein Ausgabe-Puffer 46 enthält das Ergebnis, das in ähnlicher Weise in der Form von acht gepackten Objekten zum Laden in das Zielregister vorliegt, das im Befehl spezifiziert ist. Ein Bedingungscodegenerator 48 untersucht auch die Ergebnisse jeder Addition und erzeugt Bedingungscodes für die Seite der Maschine, auf der der Befehl ausgeführt wird, die in dem Bedingungscoderegister CCreg gehalten werden sollen. Der Bedingungsgenerator 48 erzeugt immer acht Bedingungscodes für jede Seite der Maschine, ungeachtet des Packungsgrades der Quelloperanden, wie nachfolgend noch genauer beschrieben werden wird.
  • Das Befehlsformat (1) enthält ein S-Flag (Bit 21). Wenn dieses Flag gesetzt ist, dann werden die Bedingungscodes für die Seite der Maschine eingestellt, auf der der Befehl ausgeführt werden soll. Bei diesem Beispiel wird angenommen, dass der Befehl auf der X-Seite der Maschine ausgeführt wird. Der Bedingungscodegenerator 48 generiert Bedingungscodes CCX0 bis CCX7, indem er die Ergebnisse der Additionsoperationen berücksichtigt, die für jedes gepackte Objekt in den Quellregistern durchgeführt wurden, und bestimmt aus diesen Operationen die Werte von N, Z, C und V, welche diejenigen Bits sind, die jeden Bedingungscode definieren. In dem Beispiel von 6 kann für jede Bedingungscodestelle CCX0 ... CCX7 in dem Bedingungscoderegister ein anderer Bedingungscode generiert werden. Bedingungscodes werden folgendermaßen eingestellt. Das N-Flag des Bedingungscodes wird gesetzt, wenn das Ergebnis negativ ist, das heißt, das höchste Bit wird gesetzt (Ereignis für vorzeichenlose Eingaben). Das Z-Flag wird gesetzt, wenn das Ergebnis Null ist. Das C-Flag wird gesetzt, wenn die Operation einen Ausgabeübertrag erzeugt hat. Das V-Flag wird gesetzt, wenn es bei der Operation zu einem Bereichsüberlauf gekommen ist, bevor es zum Abschneiden des höchstwertigen Bits ("wrap") oder einer Sättigung ("saturation") gekommen ist.
  • Wenn das S-Flag in dem Befehl nicht gesetzt wird, wird das Bedingungsregister nicht aktualisiert.
  • Für die obige Erklärung wurde angenommen, dass die Additionsoperation durchgeführt wurde. Es ist möglich, den ADD-Befehl selber auf Bedingungscodes hin zu prädikatieren, die von einem früheren Befehl oder einer früheren Befehlsfolge gesetzt wurden. Zu diesem Zweck enthält das Befehlsformat ein Testregisterfeld TST (Bits 18 bis 20). Diese drei Bits erlauben es, dass eines der Testregister-Bytes Treg (1..7) adressiert wird. Wenn ein Testregister-Byte in dem TST-Feld des Befehls spezifiziert wird, dann wird jeder Bedingungscode auf der Seite der Maschine, auf der der Befehl ausgeführt wird, im Verhältnis zu dem Bedingungscode überprüft, der in dem adressierten Treg-Byte spezifiziert ist. Wenn das TST-Feld auf Null gesetzt ist, derart, dass kein Treg-Byte spezifiziert wird, dann wird der Befehl immer ausgeführt.
  • Nach dem Vergleich des in dem adressierten Treg-Byte spezifizierten Testcodes mit jedem der Bedingungscodes CCX0 ... CCX7 (unter der Annahme, dass die Operation auf der X-Seite der Maschine ausgeführt wird), wird die spezifizierte Operation an den SIMD-Stellen ausgeführt, bei denen Übereinstimmung vorliegt, und wird an den SIMD-Stellen, bei denen keine Übereinstimmung vorliegt, nicht ausgeführt. Ein Beispiel ist in 7 veranschaulicht. Es wird angenommen, dass die in 6 veranschaulichte und oben beschriebene Operation durchgeführt worden ist, und dass die Bedingungscodes CCX0 bis CCX7 wie oben beschrieben in Abhängigkeit von den Ergebnissen der arithmetischen Operationen an jeder der SIMD-Stellen b0 ... b7 eingestellt worden sind. Für dieses Beispiel wird angenommen, dass die Bedingungscodes folgendermaßen lauten: b0 0010, b1 0101, b2 0011, b3 0010, b4 0010, b5 0100. Dies ist in dem Bedingungscoderegister in 7 veranschaulicht. Es soll auch angenommen werden, dass das adressierte Testregister-Byte in dem TST-Feld des Befehls den Bedingungscode 0011 enthält. Dies bezeichnet die Bedingung "Übertrag gesetzt C". Die SIMD-Stellen b0,b2,b3,b4 erfüllen diese Bedingung. Es sei auch angenommen, dass die nachfolgende Operation, die ausgeführt werden soll, ebenfalls ein ADD-Befehl ist, der bei byteweise gepackten Inhalten von zwei Quell registern SRC1, SRC2 verarbeitet wird, wobei die Ergebnisse in ein Zielregister DST geladen werden sollen. Da ein Testregister-Byte spezifiziert worden ist, wird die Additionsoperation nur an den SIMD-Stellen bewirkt, an denen der Bedingungscode, der für diese Stelle (CCX0 ... CCX7) eingestellt worden ist, die Bedingung erfüllt, die von dem Testcode definiert wird, der in dem adressierten Treg-Byte eingestellt ist. Dies wird von einem Bedingungscode-Prüfprogramm 50 festgestellt. Die Ausgabe des Bedingungscode-Prüfprogramms 50 steuert einen Satz von Schaltern 52, nämlich jeweils einen für jede SIMD-Stelle b0 ... b7. Diese Schalter sind für die Steuerung zuständig, ob die Ergebnisse der Additionsoperation, die in dem Befehl dargestellt ist, die Werte an der entsprechenden Stelle in dem Zielregister DST aktualisieren oder nicht. Dies ist in Form eines Diagramms in 7 dargestellt, wobei ein Kreuz veranschaulicht, dass das Ergebnis der Additionsoperation nicht in das Zielregister geladen wird, und ein durchgehender Pfeil veranschaulicht, dass das Ergebnis doch in das Zielregister geladen wird. Dies ist in dem Zielregister dadurch gekennzeichnet, dass DST ein Original-Byte in dem Zielregister kennzeichnet (das heißt, vor der Ausführung des Befehls), und dass RES ein Ergebnis-Byte kennzeichnet, das ein Ergebnis der arithmetischen Operation an dieser Stelle nach der Ausführung des Befehls ist.
  • Wie oben erwähnt ist, sind dann, wenn ein Befehl bei weniger dicht gepackten Objekten ausgeführt werden soll, zum Beispiel H oder W, noch acht Bedingungscodes eingestellt, paarweise oder zu viert, wie oben erwähnt ist. Es sei zum Beispiel angenommen, dass eine Operation bei Halbwort-gepackten Objekten h0 ... h3 ausgeführt wird. Der Bedingungsgenerator 48 bestimmt die Bedingungscodewerte durch Setzen der N-, C-, Z- und V-Flags wie oben für jede SIMD-Stelle. Somit werden vier Bedingungscodewerte generiert. Diese werden dazu benutzt, acht Bedingungscodes in dem Bedingungscoderegister als Bedingungscodepaare einzustellen, wie oben erwähnt ist. Wenn die Bedingungscodes in dem Bedingungscoderegister einmal gesetzt sind, können sie in Folgebefehlen benutzt werden, die auf jeden Packungsgrad ansprechen. Bei Halbwort-gepackten Objekten wird der erste Bedingungscode CCX0 und jeder andere Bedingungscode danach im Verhältnis zu dem Testcode in dem adressierten Treg-Byte überprüft, um zu bestimmen, ob der Befehl an dieser SIMD-Stelle ausgeführt wird oder nicht. Bei Wort-gepackten Objekten werden der erste Bedingungscode und der vierte Bedingungscode im Verhältnis zu dem Testcode in dem adressierten Treg-Byte überprüft, um zu bestimmen, ob die Operation an dieser SIMD-Stelle ausgeführt werden soll oder nicht.
  • Bei Langwort-Operationen wird der erste Bedingungscode CCX0 ausgewertet. Wie oben beschrieben worden ist, wird für alle Bedingungscodes für eine Seite der Maschine der gleiche Wert eingestellt.
  • Bei Nicht-SIMD-Befehlen, das heißt Befehlen, bei denen die Operanden nicht gepackt sind, können die Bedingungscodes immer noch dazu verwendet werden zu bestimmen, ob der Befehl ausgeführt wird oder nicht. In diesem Fall identifiziert das TST-Feld des Befehls wiederum ein Treg-Byte. Der Bedingungsselektor in dem Treg-Byte identifiziert einen Bedingungscode, der sich auf der rechten oder linken Seite befinden kann. Das Seitenbit S bezeichnet die entsprechende Seite der Maschine (X oder Y). Das heißt, jeder Bedingungscode der sechzehn Bedingungscodes CCX0 ... CCX7, CCY0 ... CCY7 kann von dem Bedingungsselektor identifiziert werden. Der Code, der in den Bedingungsbits 0 bis 3 des Treg-Bytes enthalten ist, wird dann im Verhältnis zu dem ausgewählten Bedingungscode getestet, um zu bestimmen, ob der Befehl ausgeführt wird oder nicht. Wenn die Testbedingung erfüllt ist, wird der Befehl ausgeführt. Wenn nicht, dann wird der Befehl nicht ausgeführt.
  • Aus der obigen Beschreibung wird es klar, dass, obwohl der Prozessor eine rechte und eine linke Seite (X- und Y-Kanäle) aufweist, auf das Bedingungscoderegister von beiden Seiten zugegriffen werden kann. Bei 32-Bit-Operationen werden die Bedingungscodes gemäß der Seite des Prozessors, die die 32-Bit-Operation tatsächlich verarbeitet, eingestellt und erfolgt der Zugriff auf diese gemäß dieser Seite. Somit aktualisieren 32-Bit-Operationen, die in dem X-Kanal 5X verarbeitet werden, die Bedingungscodes für den X-Kanal CCX0 ... CCX7, und sie werden nur bei den X-Kanal-Codes CCX0 ... CCX7 bedingt ausgeführt. In ähnlicher Weise erfolgt dies bei den 32-Bit-Operationen, die in dem Y-Kanal 5Y ausgeführt werden. Aber 64-Bit-Operationen besitzen eine größere Flexibilität. 64-Bit-Befehle umfassen auch ein TST-Feld für den Zugriff auf ein Treg-Byte in einer Weise, die der ähnlich ist, die oben für die 32-Bit-Operationen beschrieben wurde. In diesem Fall bestimmt das Seitenfeld S in dem Treg-Byte, auf das zugegriffen wurde, welche Bedingungscodes (X oder Y) benutzt werden. Das heißt, das Seitenfeld S bestimmt sowohl, welche Bedingungscodes gemäß einem 64-Bit-Befehl, der ausgeführt wird, eingestellt werden, als auch auf welche Bedingungscodes (X oder Y) die Operation des 64-Bit- Befehls hin prädikatiert wird. Dadurch werden die Optionen, die bei der Ausführung von 64-Bit-Befehlen zur Verfügung stehen, beträchtlich erhöht.
  • Es ist selbstverständlich, dass eine Anzahl von Variationen zu dem oben beschriebenen Ausführungsbeispiel möglich sind. Zum Beispiel kann das Seitenbit S in dem Treg-Byte immer dazu benutzt werden, den benötigten Satz von Bedingungscodes (X oder Y zu bezeichnen, und nicht nur bei Nicht-SIMD-64-Bit-Befehlen, wie dies oben erwähnt ist. Es besteht auch keine Notwendigkeit für ein spezielles Bedingungseinstell-Flag S in dem Befehl – ob Bedingungscodes eingestellt werden sollen oder nicht, kann in dem Operationscode definiert werden, oder die Befehlssemantik kann derart sein, dass Bedingungscodes immer eingestellt werden.
  • Unter Berücksichtigung von 7 ist es möglich, eine bedingte Ausführung Stelle für Stelle auf verschiedene Arten und Weisen zu implementieren. Eine andere Alternative zu der oben Beschriebenen würde darin liegen, die Operation (und das Aktivieren der jeweiligen Operatoren) nur dann durchzuführen, wenn die Testbedingung für diese Stelle erfüllt ist.

Claims (7)

  1. Verfahren zum Ausführen von Befehlen in einem Computersystem mit Operanden, die eine Vielzahl von gepackten Objekten an jeweiligen Stellen des Operanden enthalten, wobei die Anzahl der gepackten Objekte in dem Operanden kleiner ist, als die größtmögliche Anzahl, wobei das Verfahren aufweist: Durchführen einer in dem Befehl spezifizierten Operation an jeder Stelle des Operanden und Abschätzen von Bedingungscodewerten für jede Stelle in Abhängigkeit von den Ergebnissen der Durchführung der Operation für diese Stelle; Erzeugen eines Satzes von Bedingungscodes, der eine Anzahl von Bedingungscodes enthält, die der größtmöglichen Anzahl von gepackten Objekten in einem Operanden entspricht, unter Verwendung des für jede Stelle des Operanden eingestellten Bedingungscodewertes, um zwei oder mehrere Bedingungscodes in dem Satz von Bedingungscodes einzustellen; und Zugreifen auf jeden der Sätze von Bedingungscodes in einem Folgebefehl, der einen Operanden identifiziert, der in höherem Maße gepackt ist, als der Operand des ersten Befehls, um zu bestimmen, an welcher Stelle des Operanden für den Folgebefehl die in diesem Folgebefehl spezifizierte Operation durchgeführt werden soll, in Abhängigkeit von den Ergebnissen des Vergleichs eines in dem Folgebefehl identifizierten Testcodes mit dem erzeugten Satz von Bedingungscodes.
  2. Verfahren nach Anspruch 1, wobei jeder Bedingungscode ein Multibit-Bedingungscode ist.
  3. Verfahren nach Anspruch 1 oder 2, wobei jeweilige Sätze von Bedingungscodes in Verbindung mit jeweiligen Ausführungskanälen (5x, 5y) in einem Computersystem erzeugt werden.
  4. Verfahren nach Anspruch 3, wobei auf den Satz von Bedingungscodes, der mit einem der Ausführungskanäle verbunden ist, durch einen Befehl zugegriffen werden kann, der auf einem anderen Ausführungskanal ausgeführt wird.
  5. Computersystem mit: einem Programmspeicher (2), der eine Befehlsfolge zur Ausführung durch das Computersystem enthält, wobei die Befehle einen ersten Befehl aufweisen, der wenigstens einen Quelloperanden identifiziert, der eine Vielzahl von gepackten Objekten an jeweiligen Stellen des Operanden enthält und ein Bedingungseinstellungsfeld aufweist, das ein Bedingungseinstell-Flag enthält, sowie einen zweiten Befehl, der eine auszuführende Operation definiert und ein Testfeld aufweist, das einen Testcode identifiziert; und wenigstens einer Ausführungseinheit zum Ausführen der ersten und zweiten Befehle, wobei gemäß der Ausführung des ersten Befehls ein Satz von Bedingungscodes erzeugt wird, in Abhängigkeit von den Ergebnissen der Durchführung der Operation für jede Stelle des Operanden, wenn das Bedingungssatz-Flag eingestellt ist, und wobei bei der Ausführung des zweiten Befehls der in dem Testfeld identifizierte Testcode mit den Bedingungscodes verglichen wird, um zu bestimmen, an welchen Stellen des Operanden die in dem zweiten Befehl spezifizierte Operation durchgeführt werden soll.
  6. Computersystem nach Anspruch 5, wobei das Computersystem erste und zweite Ausführungskanäle (5x, 5y) zum Durchführen jeweiliger Operationen aufweist, und wobei der Satz von Bedingungscodes bei der Ausführung des ersten Befehls in dem ersten Ausführungskanal erzeugt wird, wobei das System weiterhin aufweist: ein Registerfile (11), auf das von jedem der ersten und zweiten Ausführungskanäle zugegriffen werden kann, wobei das Registerfile ein Bedingungscoderegister aufweist, das den Satz von Bedingungscodes enthält, so dass von jedem der ersten und zweiten Ausführungskanäle darauf zugegriffen werden kann, und wobei auf den Satz von Bedingungscodes, der durch die Ausführung des ersten Befehls in dem ersten Ausführungskanal eingestellt wird, durch den zweiten Ausführungskanal zugegriffen werden kann.
  7. Computerprogramm-Erzeugnis, das in ein Computersystem geladen werden kann, und das Programmcode-Einrichtungen aufweist, die eine Befehlsfolge aufweisen, mit: einem ersten Befehl, der wenigstens einen Quelloperanden identifiziert, der eine Vielzahl von gepackten Objekten an jeweiligen Stellen des Operanden enthält und ein Bedingungseinstellfeld aufweist, das ein Bedingungseinstell- Flag enthält, und einem zweiten Befehl, der eine durchzuführende Operation definiert und ein Testfeld aufweist, das einen Testcode identifiziert, wobei, wenn das Computer-Erzeugnis in ein Computersystem geladen wird und das Bedingungseinstell-Flag eingestellt ist, die Ausführung des ersten Befehls dazu führt, dass ein Satz von Bedingungscodes erzeugt wird, in Abhängigkeit von den Ergebnissen des Durchführens der in dem ersten Befehl spezifizierten Operation für jede Stelle des in dem ersten Befehl definierten Operanden; und der zweite Befehl die in dem zweiten Befehl definierte Operation bedingt an einzelnen Stellen des Operanden implementiert, in Abhängigkeit von den Ergebnissen des Vergleichs des in dem zweiten Befehl identifizierten Testcodes mit dem erzeugten Satz von Bedingungscodes.
DE60018078T 1999-07-21 2000-07-18 Einstellung von bedingungswerten in einem rechner Expired - Lifetime DE60018078T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB9917129A GB2355084B (en) 1999-07-21 1999-07-21 Setting condition values in a computer
GB9917129 1999-07-21
PCT/GB2000/002765 WO2001006354A1 (en) 1999-07-21 2000-07-18 Setting condition values in a computer

Publications (2)

Publication Number Publication Date
DE60018078D1 DE60018078D1 (de) 2005-03-17
DE60018078T2 true DE60018078T2 (de) 2006-05-04

Family

ID=10857676

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60018078T Expired - Lifetime DE60018078T2 (de) 1999-07-21 2000-07-18 Einstellung von bedingungswerten in einem rechner

Country Status (7)

Country Link
US (3) US6530012B1 (de)
EP (1) EP1206737B1 (de)
AT (1) ATE289092T1 (de)
AU (1) AU6002300A (de)
DE (1) DE60018078T2 (de)
GB (1) GB2355084B (de)
WO (1) WO2001006354A1 (de)

Families Citing this family (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2355084B (en) * 1999-07-21 2004-04-28 Element 14 Ltd Setting condition values in a computer
US20020083311A1 (en) * 2000-12-27 2002-06-27 Paver Nigel C. Method and computer program for single instruction multiple data management
GB2382886B (en) * 2001-10-31 2006-03-15 Alphamosaic Ltd Vector processing system
GB2382673B (en) * 2001-10-31 2005-10-26 Alphamosaic Ltd A vector processing system
AU2003256870A1 (en) * 2002-08-09 2004-02-25 Intel Corporation Multimedia coprocessor control mechanism including alignment or broadcast instructions
US7392368B2 (en) * 2002-08-09 2008-06-24 Marvell International Ltd. Cross multiply and add instruction and multiply and subtract instruction SIMD execution on real and imaginary components of a plurality of complex data elements
US6986023B2 (en) 2002-08-09 2006-01-10 Intel Corporation Conditional execution of coprocessor instruction based on main processor arithmetic flags
US7002595B2 (en) 2002-10-04 2006-02-21 Broadcom Corporation Processing of color graphics data
US7269719B2 (en) * 2002-10-30 2007-09-11 Stmicroelectronics, Inc. Predicated execution using operand predicates
TW594570B (en) * 2003-04-15 2004-06-21 Sunplus Technology Co Ltd Processor for executing conditional instruction and the method thereof
US7216218B2 (en) * 2004-06-02 2007-05-08 Broadcom Corporation Microprocessor with high speed memory integrated in load/store unit to efficiently perform scatter and gather operations
US7747843B2 (en) * 2004-06-02 2010-06-29 Broadcom Corporation Microprocessor with integrated high speed memory
US7346763B2 (en) * 2004-06-02 2008-03-18 Broadcom Corporation Processor instruction with repeated execution code
US7565514B2 (en) * 2006-04-28 2009-07-21 Freescale Semiconductor, Inc. Parallel condition code generation for SIMD operations
JP2008071130A (ja) * 2006-09-14 2008-03-27 Ricoh Co Ltd Simd型マイクロプロセッサ
US9069547B2 (en) 2006-09-22 2015-06-30 Intel Corporation Instruction and logic for processing text strings
JP5304239B2 (ja) * 2008-12-26 2013-10-02 富士通株式会社 プロセッサ試験装置、プロセッサ試験方法、プロセッサ試験プログラム
US8819399B1 (en) * 2009-07-31 2014-08-26 Google Inc. Predicated control flow and store instructions for native code module security
US9336180B2 (en) 2011-04-07 2016-05-10 Via Technologies, Inc. Microprocessor that makes 64-bit general purpose registers available in MSR address space while operating in non-64-bit mode
US9043580B2 (en) 2011-04-07 2015-05-26 Via Technologies, Inc. Accessing model specific registers (MSR) with different sets of distinct microinstructions for instructions of different instruction set architecture (ISA)
US9645822B2 (en) 2011-04-07 2017-05-09 Via Technologies, Inc Conditional store instructions in an out-of-order execution microprocessor
US9274795B2 (en) 2011-04-07 2016-03-01 Via Technologies, Inc. Conditional non-branch instruction prediction
US9898291B2 (en) 2011-04-07 2018-02-20 Via Technologies, Inc. Microprocessor with arm and X86 instruction length decoders
US9032189B2 (en) 2011-04-07 2015-05-12 Via Technologies, Inc. Efficient conditional ALU instruction in read-port limited register file microprocessor
US9141389B2 (en) 2011-04-07 2015-09-22 Via Technologies, Inc. Heterogeneous ISA microprocessor with shared hardware ISA registers
US9317288B2 (en) 2011-04-07 2016-04-19 Via Technologies, Inc. Multi-core microprocessor that performs x86 ISA and ARM ISA machine language program instructions by hardware translation into microinstructions executed by common execution pipeline
US9378019B2 (en) 2011-04-07 2016-06-28 Via Technologies, Inc. Conditional load instructions in an out-of-order execution microprocessor
US9244686B2 (en) 2011-04-07 2016-01-26 Via Technologies, Inc. Microprocessor that translates conditional load/store instructions into variable number of microinstructions
US8924695B2 (en) 2011-04-07 2014-12-30 Via Technologies, Inc. Conditional ALU instruction condition satisfaction propagation between microinstructions in read-port limited register file microprocessor
US9146742B2 (en) 2011-04-07 2015-09-29 Via Technologies, Inc. Heterogeneous ISA microprocessor that preserves non-ISA-specific configuration state when reset to different ISA
US9176733B2 (en) 2011-04-07 2015-11-03 Via Technologies, Inc. Load multiple and store multiple instructions in a microprocessor that emulates banked registers
US9128701B2 (en) 2011-04-07 2015-09-08 Via Technologies, Inc. Generating constant for microinstructions from modified immediate field during instruction translation
EP2508980B1 (de) * 2011-04-07 2018-02-28 VIA Technologies, Inc. Konditionale vorschichterzeugte Arithmetik- und Logikeinheit- (ALU) -Anweisungs-Fahnenträgerpropagation zwischen Mikroanweisungen in leseanschlussbegrenztem Registerdatei-Mikroprozessor
US9292470B2 (en) 2011-04-07 2016-03-22 Via Technologies, Inc. Microprocessor that enables ARM ISA program to access 64-bit general purpose registers written by x86 ISA program
US8880857B2 (en) 2011-04-07 2014-11-04 Via Technologies, Inc. Conditional ALU instruction pre-shift-generated carry flag propagation between microinstructions in read-port limited register file microprocessor
US8880851B2 (en) 2011-04-07 2014-11-04 Via Technologies, Inc. Microprocessor that performs X86 ISA and arm ISA machine language program instructions by hardware translation into microinstructions executed by common execution pipeline
KR101476113B1 (ko) 2011-08-02 2014-12-23 캐비엄, 인코포레이티드 룩업 클러스터 컴플렉스
US20140280271A1 (en) * 2013-03-15 2014-09-18 Intel Corporation Instruction and logic for processing text strings
US9544402B2 (en) 2013-12-31 2017-01-10 Cavium, Inc. Multi-rule approach to encoding a group of rules
US9667446B2 (en) 2014-01-08 2017-05-30 Cavium, Inc. Condition code approach for comparing rule and packet data that are provided in portions
US9684514B2 (en) 2014-09-10 2017-06-20 International Business Machines Corporation Inference based condition code generation
US10402199B2 (en) 2015-10-22 2019-09-03 Texas Instruments Incorporated Conditional execution specification of instructions using conditional extension slots in the same execute packet in a VLIW processor
US11593105B2 (en) * 2018-12-29 2023-02-28 Intel Corporation Vector logical operation and test instructions with result negation

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4791550A (en) * 1985-02-13 1988-12-13 Rational Higher order language-directed computer
DE3650473T2 (de) * 1985-11-08 1996-08-14 Nec Corp Mikroprogrammsteuereinheit
US5001662A (en) * 1989-04-28 1991-03-19 Apple Computer, Inc. Method and apparatus for multi-gauge computation
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
US5471593A (en) * 1989-12-11 1995-11-28 Branigin; Michael H. Computer processor with an efficient means of executing many instructions simultaneously
CA2073516A1 (en) * 1991-11-27 1993-05-28 Peter Michael Kogge Dynamic multi-mode parallel processor array architecture computer system
JP2832899B2 (ja) * 1993-05-31 1998-12-09 松下電器産業株式会社 データ処理装置およびデータ処理方法
US5793661A (en) * 1995-12-26 1998-08-11 Intel Corporation Method and apparatus for performing multiply and accumulate operations on packed data
EP0810518B1 (de) * 1996-05-30 2004-03-17 Matsushita Electric Industrial Co., Ltd. Verfahren und Schaltkreis zur Steuerung verzögerter Verzweigungsbefehle
GB2317466B (en) * 1996-09-23 2000-11-08 Advanced Risc Mach Ltd Data processing condition code flags
AUPO648397A0 (en) * 1997-04-30 1997-05-22 Canon Information Systems Research Australia Pty Ltd Improvements in multiprocessor architecture operation
GB2355084B (en) * 1999-07-21 2004-04-28 Element 14 Ltd Setting condition values in a computer

Also Published As

Publication number Publication date
US6530012B1 (en) 2003-03-04
EP1206737A1 (de) 2002-05-22
DE60018078D1 (de) 2005-03-17
US20030079108A1 (en) 2003-04-24
GB2355084B (en) 2004-04-28
EP1206737B1 (de) 2005-02-09
AU6002300A (en) 2001-02-05
ATE289092T1 (de) 2005-02-15
US7441098B2 (en) 2008-10-21
GB9917129D0 (en) 1999-09-22
US20050198478A1 (en) 2005-09-08
US6918031B2 (en) 2005-07-12
GB2355084A (en) 2001-04-11
WO2001006354A1 (en) 2001-01-25

Similar Documents

Publication Publication Date Title
DE60018078T2 (de) Einstellung von bedingungswerten in einem rechner
DE60006971T2 (de) Bedingte befehlsausführung in einem rechner
DE2714805C2 (de)
DE2900324C2 (de)
DE69833008T2 (de) Prozessor mit instruktionskodierung mittels eines schablonenfeldes
DE102018005977A1 (de) Gleitkomma- zu festkomma-umwandlung
DE112013005236T5 (de) Verfahren und Vorrichtung für Integralbild-Berechnungsbefehle
DE102010051476A1 (de) Addierbefehle, um drei Quelloperanden zu addieren
DE112011105818T5 (de) Systeme, Vorrichtungen und Verfahren zum Expandieren einer Speicherquelle in ein Zielregister und komprimieren eines Quellenregisters in eine Zielspeicherstelle
DE4342250A1 (de) Rechnerarchitektur und Verfahren zum Betreiben eines Parallelrechners
DE102018125232A1 (de) Einrichtung und Verfahren für komplexe Multiplikation und Akkumulation
DE19735348A1 (de) Einzelbefehl-Mehrdaten-Verarbeitung unter Verwendung von mehreren Bänken von Vektorregistern
DE1499201B2 (de) Schaltungsanordnung zur Umwandlung von Informationen in gepackter Bytedar stellung in eine ungepackte Darstellung
DE102014004564A1 (de) Prozessoren, verfahren und systeme zum implementieren von teilregisterzugriffen mit maskierten gesamtregisterzugriffen
DE102018125817A1 (de) Systeme und Verfahren zum Laden eines Kachelregisterpaars
DE112013005343T5 (de) Befehle für Codierungsalgorithemen mit gleitendem Fenster
DE112011103197T5 (de) Verfahren und Vorrichtung für universelle logische Operationen
DE3709675C2 (de)
DE102018125805A1 (de) Systeme, verfahren, und vorrichtungen für skalarproduktoperationen
DE4403917C2 (de) Vorrichtung zum Berechnen einer Bit-Besetzungszählung
DE102018006744A1 (de) Bitmatrixmultiplikation
EP0010185A1 (de) Virtuell-Adressiervorrichtung für einen Computer
DE112005003130B4 (de) Verfahren und Vorrichtung zum Bewerten von Flag-Registern in einer Einzelbefehl-Mehrdaten-Ausführungsmaschine
DE4430195B4 (de) Verfahren zur Auswertung von Booleschen Ausdrücken
DE102018129298A1 (de) Vorrichtung und Verfahren zum Vektormultiplizieren und Akkumulieren von vorzeichenbehafteten Doppelwörtern

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8328 Change in the person/name/address of the agent

Representative=s name: BOSCH JEHLE PATENTANWALTSGESELLSCHAFT MBH, 80639 M