DE60006971T2 - Bedingte befehlsausführung in einem rechner - Google Patents

Bedingte befehlsausführung in einem rechner Download PDF

Info

Publication number
DE60006971T2
DE60006971T2 DE60006971T DE60006971T DE60006971T2 DE 60006971 T2 DE60006971 T2 DE 60006971T2 DE 60006971 T DE60006971 T DE 60006971T DE 60006971 T DE60006971 T DE 60006971T DE 60006971 T2 DE60006971 T2 DE 60006971T2
Authority
DE
Germany
Prior art keywords
condition
command
register
bit
code
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
DE60006971T
Other languages
English (en)
Other versions
DE60006971D1 (de
Inventor
Sophie 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
Application granted granted Critical
Publication of DE60006971D1 publication Critical patent/DE60006971D1/de
Publication of DE60006971T2 publication Critical patent/DE60006971T2/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)
  • Saccharide Compounds (AREA)

Description

  • Die vorliegende Erfindung betrifft ein Computersystem zum bedingten Durchführen einer in einem Computerbefehl definierten Operation, eine Ausführungseinheit zur Verwendung in dem Computersystem und ein Verfahren zum Ausführen von Befehlen.
  • Computersysteme sind bekannt, bei denen die Ausführung eines Befehls auf einem im Befehl identifizierten oder adressierten Wert basiert. Bei diesen Computersystemen wird jedoch die im Befehl definierte Operation entweder durchgeführt oder nicht durchgeführt.
  • Es sind auch Computersysteme bekannt, die nach sogenannten gepackten Operanden handeln. Das heißt, jeder Operand umfasst eine Vielzahl gepackter Objekte, die in jeweiligen Wegen des Operanden gehalten werden. Der Packungsgrad kann variieren, und bei 64 Bit-Operanden ist Bereitstellung von Byte-Packung (acht Objekte pro 64-Bit-Operand), Halbwortpackung (vier Objekte pro 64-Bit-Operand) und Wortpackung (zwei Objekte pro 64 Bit-Operand) bekannt. Wenn bei bestehenden Computersystemen solche gepackte Operanden definierende Befehle prädiziert sind, veranlasst die Prädikation, dass die Operation entweder bei allen Operanden oder überhaupt nicht durchgeführt wird.
  • Ein Aufsatz von LEE R B: "SUBWORD PARALLELISM WITH MAX-2" IEEE MICRO, US, IEEE INC. NEW YORK. Bd. 16, Nr. 4, 1. August 1996 (01.08.1996), SS. 51–59, XP000596513 ISSN: 0272–1732, offenbart bedingte Ausführung mittels Sättigungsarithmetik. Sättigungsarithmetik handhabt effizient die bei paralleler Subwort-Arithmetik auftretenden mehrfachen Überläufe. Vorzeichenbehaftete bzw. vorzeichenlose Sättigung sind bedingte Operationen, die auf der Basis eines Vergleichs entsprechender Subwörter in Registern ein Subwort als das Ergebnis auswählen.
  • Die vorliegende Erfindung versucht, eine verbesserte Vorrichtung und ein verbessertes Verfahren zum bedingten Durchführen von Operationen bereitzustellen.
  • Gemäß einem Aspekt der vorliegenden Erfindung wird eine Ausführungseinheit zur Verwendung in einem Computersystem zum bedingten Durchführen einer in einem Computerbefehl definierten Operation bereitgestellt, wobei die Ausführungseinheit Folgendes beinhaltet: einen ersten und zweiten Eingangsspeicher zum Halten von jeweils einem ersten und zweiten Operanden, auf denen eine in dem Befehl definierte Operation durchgeführt werden soll, wobei jeder Speicher eine Vielzahl von Wegen, von denen jeder ein Objekt hält, definiert; eine Vielzahl von Operatoren, die jeweils mit den Wegen in Verbindung stehen, um eine in dem Befehl spezifizierte Operation auf Objekten in entsprechenden Wegen des ersten und zweiten Quelloperanden durchzuführen; einen Zielpuffer zum Halten der Ergebnisse der Operation auf eine Weg-um-Weg-Basis; und Auswahlmittel, um für jeden Weg in Abhängigkeit von gespeicherten Bedingungswerten festzustellen, ob die Operation auf Objekten in jenem Weg ausgeführt werden soll oder nicht.
  • Die Erfindung stellt auch ein Computersystem bereit, das eine solche Ausführungseinheit aufweist.
  • Das Computersystem kann ein Bedingungscoderegister zum Halten der Bedingungswerte in der Form eines Satzes von Bedingungscodes beinhalten. Jeder Bedingungscode ist vorzugsweise ein Mehrbit-Bedingungscode.
  • Das Computersystem kann auch ein Testregister zum Halten eines Testcodes umfassen, wobei das Testregister durch den Befehl adressiert wird. In diesem Fall kann der Testcode mit ausgewählten Bedingungscodes des Satzes verglichen werden.
  • Die Ausführungseinheit kann einen Bedingungscodegenerator zum Generieren des Satzes von Bedingungscodes, die auf eine Ausführung eines Befehls reagieren, beinhalten. Bei der beschriebenen Ausführungsform entspricht die Zahl der Bedingungscodes im Satz der Höchstzahl von Wegen in dem ersten und zweiten Quelloperanden. Wenn Operanden in einem geringeren Grad gepackt sind, werden Bedingungscodewerte für jeden Weg des gepackten Operanden bewertet, und diese Werte werden dann verwendet, um zwei oder mehr Bedingungscodes zu setzen, so dass jeder einzelne Bedingungscode im Satz ungeachtet des Packungsgrads des Quelloperanden generiert wird. Bei einer anderen Ausführungsform werden Bedingungscodes auch für gepackte Objekte mit weniger als der maximalen Packungsdichte nur für jeden Weg generiert.
  • Ein anderer Aspekt der Erfindung stellt ein Verfahren zum Ausführen von Befehlen auf Operanden, die eine Vielzahl gepackter Objekte enthalten, bereit, wobei das Verfahren Folgendes beinhaltet: Zugreifen auf mindestens einen Quelloperanden, der eine Vielzahl gepackter Objekte in jeweiligen Wegen enthält; Zugreifen auf gespeicherte Bedingungswerte, um für jeden Weg festzustellen, ob eine in dem Befehl definierte Operation auf jenem Weg des Operanden implementiert werden soll oder nicht; und Durchführen der Operation und Aktualisieren eines Zieloperanden lediglich in den Wegen, für die der gespeicherte Bedingungswert anzeigt, dass die Operation implementiert werden sollte.
  • Für ein besseres Verständnis der vorliegenden Erfindung, und um zu zeigen, wie dieselbe verwirklicht werden kann, wird nunmehr beispielhaft auf die beiliegenden Zeichnungen verwiesen; es zeigen:
  • 1 ein schematisches Blockdiagramm zur Veranschaulichung eines Prozessors;
  • 2 ein Diagramm zur Veranschaulichung der Codierung zweier "gepackter" Befehle;
  • 3 eine Veranschaulichung mehrerer unterschiedlicher 32-Bit-Befehlsformate;
  • 4 eine Veranschaulichung des Inhalts eines Textregisters;
  • 5 eine Veranschaulichung des Inhalts eines Bedingungscoderegisters;
  • 6 ein Diagramm zur Veranschaulichung des Setzens von Bedingungscodes; und
  • 7 ein Diagramm zur Veranschaulichung der Verwendung von Bedingungscodes.
  • Das hierin beschriebene Computersystem ist in 1 in einer schematischen Darstellung des Systems schematisch veranschaulicht. In 1 bezeichnet das Bezugszeichen 2 einen Programmspeicher, der Programme in Form einer Vielzahl von Befehlen hält. Der Programmspeicher 2 ist mit einem Befehlscache (Befehlspufferspeicher) 3 verbunden, der mit der Befehlshol-/decodierschaltung 4 verbunden ist. Die Hol-/Decodierschaltung gibt Adressen an den Programmspeicher aus und erhält bei jeder Holoperation einen 64-Bit-Befehl vom Programmspeicher 2 (oder Cache 3). Jeder 64-Bit-Befehl kann zwei Operationen oder eine einzige Operation definieren. Die Decodiereinheit 4 bewertet den Operationscode (Opcode) und überträgt die entsprechenden Steuersignale entlang X- und Y-Kanälen 5x , 5y . Jeder Kanal umfasst eine SIMD-Ausführungseinheit 8x , 8y , die drei Datenverarbeitungseinheiten, MAC, INT und FPU, und eine Lade-/Speichereinheit, LSU 6, enthält. Jede Datenverarbeitungseinheit MAC, INT und FPU und die Lade/Speichereinheiten LSU arbeiten nach einem SIMD- (Ein-Befehl-mehrere-Daten-) Prinzip gemäß dem im SIMD-Weg ausgedrückten Befehl gemäß dem folgenden Protokoll, das den Packungsgrad von Objekten für Verarbeitungsoperationen für gepackte Daten 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
  • Wenn der Befehl eine Datenverarbeitungsoperation definiert, wird sie für jeden Kanal 5x , 5y , an die entsprechende Datenverarbeitungseinheit MAC, INT oder FPU geliefert, und wenn er eine Lade-/Speicher-Operation definiert, wird sie an die Lade-/Speichereinheit LSU geliefert. Datenwerte werden in die und aus den MAC-Datenverarbeitungseinheiten geladen, in eine und aus einer gemeinsamen Registerdatei 10, die sechzehn 64-Bit-Sonderzweckregister entlang Registerzugriffspfaden 12x , 12y , enthält. Datenwerte werden in die und aus den INT- und FPU-Datenverarbeitungseinheiten und den Lade-/Speichereinheiten LSU geladen, in eine und aus einer zweiten Registerdatei 11, die vierundsechzig 64-Bit-Mehrzweckregister enthält. Für diese Zugriffe werden Registerpfade 14x 14y , bereitgestellt. Der den gegenwärtigen Befehl anzeigende Programmzähler PC kann über eines der Mehrzweckregister (das PC-Register) gelesen werden. Ein anderes Mehrzweckregister bildet ein Steuer- und Statusregister. Die Mehrzweckregister beinhalten auch ein Bedingungscoderegister (CCreg) und ein Testregister (TSTreg), die im Folgenden detaillierter besprochen 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 Registerdateien 10, 11, die Quelloperanden für die Verarbeitung durch die Datenverarbeitungseinheit enthalten. Die Zieladresse DST identifiziert ein Zielregister, in das ein Datenverarbeitungsergebnis gegeben wird. Die Operanden und Ergebnisse werden zwischen der Registerdatei 10 oder 11 und der jeweiligen Datenverarbeitungseinheit über die Zugriffspfade 12, 14 befördert. Im Fall von Lade-/Speicheroperationen erlauben die Befehlsformate das Formulieren von Speicherzugriffsadressen Ax, Ay aus in den Registern gehaltenen Datenwerten, wie in unserer gleichzeitig anhängigen Anmeldung Nr. (PWF Ref: 92472)-beschrieben, wie später beschrieben. Die Lade-/Speichereinheiten greifen über einen Dual-Port-Datencache (Datenpufferspeicher mit getrennten Ein-Ausgängen) DCACHE 15 auf einen gemeinsamen Adressraum in Form eines Datenspeichers 16 zu. Zu diesem Zweck hat jede Lade-/Speichereinheit einen 64-Bit-Datenbus Dx, Dy und einen 64-Bit-Adressbus Ax, Ay.
  • Die Architektur unterstützt zwei Typen von Befehlen, sogenannte "lange Befehle" und "Duale-Operation-Befehle". Jeder 64-Bit umfassende Duale-Operation-Befehl definiert zwei 31-Bit-Operationen auf die in 2 veranschaulichten Weise. Das heißt, dass jede 64-Bit-Sequenz zwei 32-Bit-Befehlsabschnitte mit den Bezeichnungen INST1 und INST2 enthält. Jeder Befehl enthält auch einen bezeichneten Satz von Identifikationsbits, die den Typ jeder Operation identifizieren. In 2 gibt es zwei solcher Bits an den Binarstellen 31 und 68, die in 2 mit ID1 und ID2 bezeichnet sind. Bei dieser Ausführungsform sind die Operationen in Datenverarbeitungstypen (DP-Typen) oder Lade-/Speichertypen (LD/ST-Typen) eingeteilt. Die zulässigen 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 mehrere Grundformate der 32-Bit-Datenverarbeitungsabschnitte von Duale-Operation-Befehlen. Jede 32-Bit-Operation erfordert zur Ausführung die Ressourcen von einer Lade-/Speichereinheit oder von einer oder mehreren SIMD-Datenverarbeitungseinheiten (MAC, INT; FPU). Folglich können normalerweise zwei 32-Bit-Operationen gleichzeitig ausgeführt werden, jeweils eine in jedem der X- und Y-Kanäle. Im Folgenden sind die X- und Y-Kanäle manchmal als rechte und linke Seite des Prozessors bezeichnet.
  • Format (1) definiert Register-Register-Operationen. Format (2) definiert registerunmittelbare Operationen. Format (3) definiert eine Speicherzugriffsoperation. Speicherzugriffsoperationen werden hierin nicht weiter besprochen, aber es wird erwähnt, dass sie zum Laden von Daten aus dem Speicher in die Registerdateien und zum Bereitstellen von Speicheroperationen für das Umgekehrte verwendet werden.
  • Die Datenverarbeitungsbefehlsformate haben die folgenden Felder gemeinsam. Es gibt drei Identifizierungsbits, M (Bit 31) und G (Bits 29 und 30), die das Wesen der Datenverarbeitungsoperation kennzeichnen. Ein Operationscodefeld (Bits 22 bis 28), das das Wesen der auszuführenden Operation definiert, ein Bedingungseinstellfeld S (Bit 21), ein Testregisterfeld (Bits 18 bis 20) und Felder, die zwei Quellregister Src1, Src2 und ein Zielregister Dst definieren. Natürlich enthält Format (2) kein ein zweites Quellregister definierendes Feld, sondern es hält stattdessen einen unmittelbaren Wert. Wie oben erwähnt, können die Register in den Registerdateien 10, 11 mehrere gepackte Objekte enthalten, und in diesem Fall wird die im Operationscode des Befehls definierte Operation normalerweise auf jedem "Weg" des Operanden ausgeführt, der auf jedem Paar entsprechender gepackter Objekte in jeweiligen Quellregistern Src1, Src2 oder Quellregister und unmittelbarem Wert ist, je nachdem.
  • Wie oben erwähnt, enthalten die Mehrzweckregister 11 CC-Register und Testregister. Das Testregister hält eine Vielzahl von Testbytes, wobei jedes Testbyte ein Format wie in 4 hat und das niedrigstwertige Bit auf null gesetzt ist. Jedes dieser Bytes wird als ein Treg-Byte [1 ... 7] bezeichnet. Die Treg-Bytes sind programmierbar und werden vor der Befehlsausführung auf die erforderlichen Werte gesetzt. Das Testregister wird verwendet, um bedingte Ausführung von Befehlen zu ermöglichen. Jedes Befehlsformat enthält ein 3-Bit-Feld TST, das die Spezifizierung eines Treg-Bytes [1 bis 7] ermöglicht. Wird im Befehl kein Treg-Byte spezifiziert, wird das TST-Feld im Operationscode auf 0 gesetzt, und der Befehl wird bedingungslos ausgeführt. Ein spezifiziertes Byte kann mit einem ADL-Befehl des Formats (2) modifiziert werden, der einen im unmittelbaren Feld spezifizierten Bytewert zu einem spezifizierten SIMD-Weg, der im TST-Feld (Treg-Byte [1 ... 7]) definiert ist, hinzufügt.
  • Das 8-Bit-Feld jedes Treg ist wie in 4 gezeigt.
  • Das Bedingungsfeld (Bits 0 bis 3) gilt für alle prädizierten Befehle. Es hält einen 4-Bit-Testcode, um das Testen von Bedingungen zu ermöglichen. Wie später detaillierter besprochen, gilt die Bedingung bei Befehlen auf gepackten Objekten für alle Wege auf einer Pro-Weg-Basis.
  • Die vier Bedingungskennzeichen sind:
    • – N (Negativ-Kennzeichen – Bit 3)
    • – Z (Null-Kennzeichen – Bit 2)
    • – C (Übertragskennzeichen – Bit 1)
    • – V (Überlaufkennzeichen – Bit 0)
  • Diese vier Bits rufen 16 Testbedingungen hervor (siehe Tabelle 1).
  • Tabelle 1
    Figure 00060001
  • Figure 00070001
  • Das CC-Selektorfeld (Bits 4 bis 6) gilt nur für Befehle auf nichtgepackten Objekten. Das CC-Selektorfeld bezeichnet den Bedingungscode (in dem später besprochenen CC-Register), das mit dem Code im Treg-Byte zu vergleichen ist.
  • Bei der beschriebenen Ausführungsform gilt das Seitenfeld (S-Bit 7, X = 0, Y = 1) nur für Nicht-SIMD-64-Bit-Befehle. Bei 32-Bit-Operationen wird die Seite gemäß dem Kanal bestimmt, in dem der Befehl ausgeführt wird, ungeachtet dessen, auf was das Seitenfeld gesetzt ist. Bei Nicht-SIMD-64-Bit-Befehlen bezeichnet das Seitenfeld entweder linke oder rechte (X oder Y) Bedingungscodes im CC-Register.
  • Das Bedingungscoderegister ist 64 Bits lang, und die Bitfelder sind in 5 definiert. Jeder Bedingungscode ist vier Bits lang (ein Nibble).
  • Jedes CC{X, Y}{0 .. 7}-Nibble hat die Vier Bedingungskennzeichen (NZCV) in dieser Reihenfolge. Die Bedingungscodes können auf Pro-Weg-Basis gesetzt und verwendet werden.
  • SIMD-Byte-(B)-Operationen aktualisieren 8 Bedingungscodes, wobei X oder Y von der Seite der Maschine abhängen.
    CC{X, Y}0 ... CC{X, Y}7
  • SIMD-Halbwort-(H)-Operationen aktualisieren folgendermaßen vier Paare Bedingungscode (wieder von den Seiten der Maschine abhängig). Das heißt, zwei Bedingungscodes werden bei jeder Operation mit dem selben Wert aktualisiert.
    CCX0 = CCX1 CCY0 = CCY1
    CCX2 = CCS3 CCY2 = CCY3
    CCX4 = CCX5 CCY4 = CCY5
    CCX6 = CCX7 CCT6 = CCY7
  • SIMD-Wort-(W)-Operationen aktualisieren folgendermaßen zwei Vierer Bedingungscode (von der Seite der Maschine abhängig). Das heißt, vier Bedingungskennzeichen werden bei jeder Operation auf denselben Wert aktualisiert.
    CCX0 = CCX1 = CCX2 = CCX3 CCY0 = CCY1 = CCY2 = CCY3
    CCX4 = CCX5 = CCX6 = CCX7 CCY4 = CCY5 = CCY6 = CCY7
  • SIMD-Langwort-(L)-Operationen aktualisieren folgendermaßen alle acht Bedingungscodes (von der Seite der Maschine abhängig).
    CCX0 = CCX1 = CCX2 = CCX3 = CCX4=CCX5=CCX6=CCX7
    CCY0 = CCY1 = CCY2 = CCY3=CCY4=CCY5=CCY6=CCY7
  • Nunmehr wird die Verwendung des Testregisters und des Bedingungscoderegisters unter Bezugnahme auf die folgenden Beispiele beschrieben. Es ist klar, dass das Folgende nur Beispiele sind, die zur Veranschaulichung der Arbeitsprinzipien verwendet werden.
  • Es sei die arithmetische Operation ADD betrachtet. Dieser Befehl kann in einem Register-zu-Register-Format unter Verwendung von Format (1) in 3 oder in einem Register-zu-unmittelbar-Format unter Verwendung von Format (2) von 3 implementiert werden. Im Folgenden wird nur das Register-zu-Register-Format detailliert beschrieben, um die Prinzipien der Verwendung der Testregister und des Bedingungscoderegisters zu veranschaulichen.
  • Der Befehl ADD hat folgende Semantik:
    ADD{B|H|W|L}{S}{Treg,}Dest, Src1, Src2.
  • Wie aus Format (1) in 3 ersichtlich ist, definiert dieser Befehl daher zwei Quellregister in den Feldern SRC1 und SRC2, wobei jedes Quellregister Operanden für die Additionsoperation enthält. Lautet der Befehl ADDL, sind die Register nicht gepackt, sondern jedes enthält ein 64-Bit-Objekt. Für die Befehle ADDB, ADDH und ADDW enthält jedes Quellregister mehrere gepackte Objekte gemäß dem früher festgelegten Packungsgrad. Im folgenden Beispiel wird angenommen, dass jedes Quellregister acht gepackte Objekte b0 ... b7 hält. Im DST-Feld des Befehls ist ein Zielregister DST zum Halten des Ergebnisses der Additionsoperation definiert. Im Zielregister werden acht gepackte Objekte generiert. Vorläufig sei angenommen, dass eine einzige 32-Bit-Operation von einem Kanal (X oder Y) des Prozessors ausgeführt wird.
  • 6 veranschaulicht ein Diagramm von einer der Funktionseinheiten, die zur Ausführung des ADD-Befehls in der Lage ist. Ein erster und zweiter 64-Bit-Puffer 40, 42 sind zum Halten eines ersten und zweiten Quelloperanden bereitgestellt. Im veranschaulichten Beispiel enthalten die Quelloperanden in jedem Fall acht gepackte Objekte b0 bis b7. Eine Additionsschaltung 44 weist acht Operatoren, in diesem Fall Additionsschaltungen, auf, von denen jede so verbunden ist, dass sie jeweils zwei gepackte Objekte von dem selben Weg b0 ... b7 des Eingangspuffers 40, 42 erhält. Nur die Verbindungen der ersten und letzten Objekte sind gezeigt. Ähnliche Verbindungen gelten für jede der anderen Additionsschaltungen. Ein Ausgangspuffer 46 hält das Ergebnis, das gleichfalls in der Form acht gepackter Objekte zum Laden in das im Befehl spezifizierte Zielregister ist. Ein Bedingungscodegenerator 48 untersucht auch die Ergebnisse jeder Addition und generiert Bedingungscodes, die im Bedingungscoderegister CCreg zu halten sind, für die Seite der Maschine, auf der der Befehl ausgeführt wird. Der Bedingungsgenerator 48 generiert immer acht Bedingungscodes für jede Seite der Maschine, ungeachtet des Packungsgrads der Quelloperanden, wie im Folgenden vollständiger beschrieben wird.
  • Das Befehlsformat (1) enthält ein S-Kennzeichen (Bit 21). Wird dieses Kennzeichen gesetzt, werden die Bedingungscodes für die Seite der Maschine, in der der Befehl ausgeführt wird, gesetzt. In diesem Beispiel sei angenommen, dass der Befehl auf der X-Seite der Maschine ausgeführt wird. Der Bedingungscodegenerator 48 generiert Bedingungscodes CCX0 bis CCX7 durch Berücksichtigen der Ergebnisse der Additionsoperationen, die an jedem gepackten Objekt im Quellregister ausgeführt wurden, und Bestimmen der Werte von N, Z, C und V, die die jeden Bedingungscode definierenden Bits sind, anhand dieser Operationen. Im Beispiel von 6 kann für jede Bedingungscodestelle CCX0 ... CCX7 im Bedingungscoderegister ein anderer Bedingungscode generiert werden. Bedingungscodes werden wie folgt gesetzt. Das N- Kennzeichen des Bedingungscodes wird gesetzt, wenn das Ergebnis nagativ ist, d. h. das höchste Bit wird gesetzt (Ereignis für vorzeichenlose Eingänge). Das Z-Kennzeichen wird gesetzt, wenn das Ergebnis null ist. Das C-Kennzeichen wird gesetzt, wenn die Operation einen Ausgangsübertrag generierte. Das V-Kennzeichen wird gesetzt, wenn die Operation vor dem Umrechen oder Sättigen ihren Bereich überlaufen ließ.
  • Wenn das S-Kennzeichen im Befehl nicht gesetzt wird, wird das Bedingungsregister nicht aktualisiert.
  • Für die obige Erklärung wurde angenommen, dass die Additionsoperation ausgeführt wurde. Es ist möglich, den ADD-Befehl selbst von Bedingungscodes zu prädizieren, die durch einen früheren Befehl oder eine frühere Befehlsfolge gesetzt wurden. Zu diesem Zweck enthält das Befehlsformat ein Testregisterfeld TST (Bits 18 bis 20). Diese drei Bits ermöglichen es, eines der Testregisterbytes Treg (1 .. 7) zu adressieren. Wird ein Testregisterbyte im TST-Feld des Befehls spezifiziert, wird jeder Bedingungscode auf der Seite der Maschine, auf der der Befehl ausgeführt wird, mit dem im adressierten Treg-Byte spezifizierten Bedingungscode verglichen. Wird das TST-Feld auf null gesetzt, so dass kein Treg-Byte spezifiziert wird, wird der Befehl immer ausgeführt.
  • Nach dem Vergleichen des im adressierten Treg-Bytes spezifizierten Testcodes mit jedem der Bedingungscodes CCX0 ... CCX7 (angenommen, die Operation wird auf der X-Seite der Maschine ausgeführt), wird die spezifizierte Operation auf den SIMD-Wegen ausgeführt, bei denen es eine Übereinstimmung gibt, und sie wird nicht auf den SIMD-Wegen ausgeführt, bei denen es keine Übereinstimmung gibt. Ein Beispiel ist in 7 veranschaulicht. Angenommen, dass die in 6 veranschaulichte und oben beschriebene Operation ausgeführt worden ist, und dass Bedingungscodes CCX0 bis CCX7 in Abhängigkeit von den Ergebnissen der arithmetischen Operation in jedem der SIMD-Wege b0 ... b7 gesetzt wurden, wie oben beschrieben. Für dieses Beispiel wird angenommen, dass die Bedingungscodes wie folgt lauten: b0 0010, b1 0101, b2 0011, b3 0010, b4 0010 b5 0100. Dies ist im Bedingungscoderegister in 7 veranschaulicht. Ebenfalls angenommen, dass das adressierte Testregisterbyte im TST-Feld des Befehls den Bedingungscode 0011 hält. Dieser kennzeichnet die Bedingung "Übertrag setzen C". SIMD-Wege b0, b2, b3, b4 erfüllen diese Bedingung. Angenommen, dass die darauffolgende auszuführende Operation auch ein ADD-Befehl ist, der auf dem bytegepackten Inhalt zweier Quellregister SRC1, SRC2 wirkt, wobei die Ergebnisse in ein Zielregister DST zu laden sind. Weil ein Testregisterbyte spezifiziert worden ist, ist die Additionsoperation nur auf den SIMD-Wegen betroffen, bei denen der für jenen Weg (CCX0 ... CCX7) gesetzte Bedingungscode die durch den im adressierten Treg-Byte gesetzten Testcode definierte Bedingung erfüllt. Dies wird durch einen Bedingungscodeprüfer 50 bestimmt. Der Ausgang des Bedingungscodeprüfers 50 steuert einen Satz von Schaltern 52, einen für jeden SIMD WEG b0 ... b7. Diese Schalter steuern, ob die Ergebnisse der in dem Befehl angeführten Additionsoperation die Werte in dem entsprechenden Weg im Zielregister DST aktualisieren oder nicht. Dies ist in 7 grafisch dargestellt, wobei ein Kreuz veranschaulicht, dass das Ergebnis der Additionsoperation nicht in das Zielregister geladen wird, und ein durchgehender Pfeil veranschaulicht, dass es heineingeladen wird. Dies ist im Zielregister gekennzeichnet durch DST, das ein ursprüngliches Byte im Zielregister kennzeichnet (das vor der Ausführung des Befehls steht), und RES, das ein Ergebnisbyte kennzeichnet, das nach der Ausführung des Befehls ein Ergebnis der arithmetischen Operation auf jenem Weg ist.
  • Wenn wie oben erwähnt, soll ein Befehl auf weniger dicht gepackten Objekten ausgeführt werden, z. B. H oder W, werden weiterhin acht Bedingungscodes Paar- oder viererweise gesetzt, wie oben erwähnt. Es sei z. B. angenommen, dass eine Operation auf halbwortgepackten Objekten h0 ... h3 ausgeführt wird. Der Bedingungsgenerator 48 bestimmt Bedingungscodewerte durch Setzen der Kennzeichen N, C, Z und V für jeden SIMD-Weg wie vorher. Somit werden vier Bedingungscodewerte generiert. Diese werden zum Setzen von acht Bedingungscodes im Bedingungscoderegister als Bedingungscodepaare verwendet, wie oben erwähnt. Sobald die Bedingungscodes im Bedingungscoderegister gesetzt sind, können sie in nachfolgenden Befehlen verwendet werden, die auf einen beliebigen Packungsgrad wirken. Bei halbwortgepackten Objekten wird der erste Bedingungscode CCX0 und jeder alternierende Bedingungscode danach mit dem Testcode im adressierten Treg-Byte verglichen, um zu bestimmen ob der Befehl auf jenem SIMD-Weg ausgeführt wird oder nicht. Bei wortgepackten Objekten wird der erste Bedingungscode und der vierte Bedingungscode mit dem Testcode im adressierten Treg-Byte verglichen, um zu bestimmen ob die Operation auf jenem SIMD-Weg ausgeführt werden soll.
  • Bei Langwortoperationen wird der erste Bedingungscode CCX0 ausgewertet. Wie oben beschrieben, werden alle Bedingungscodes für eine Seite der Maschine den gleichen Wertsatz haben.
  • Bei Nicht-SIMD-Befehlen, d. h. Befehlen, bei denen die Operanden nicht gepackt sind, können die Bedingungscodes immer noch verwendet werden, um zu bestimmen, ob der Befehl ausgeführt wird oder nicht. In diesem Fall identifiziert das TST-Feld des Befehls wieder ein Treg-Byte. Der Bedingungsselektor im Treg-Byte identifiziert einen Bedingungscode, der auf der rechten oder linken Seite sein kann. Das Seitenbit S kennzeichnet, welche Seite der Maschine (X oder Y). Das heißt, ein beliebiger Bedingungscode von sechzehn Bedingungscodes CCX0 ... CCX7, CCY0 ... CCY7 kann durch den Bedingungsselektor identifiziert werden. Dann wird der in den Bedingungsbits 0 bis 3 des Treg-Bytes gehaltene Code mit dem gewählten Bedingungscode verglichen, um zu bestimmen, ob der Befehl ausgeführt wird oder nicht. Ist die Testbedingung erfüllt, wird der Befehl ausgeführt. Andernfalls wird der Befehl nicht ausgeführt.
  • Aufgrund der obigen Beschreibung ist klar, dass der Prozessor zwar eine rechte und linke Seite (X- und Y-Kanal) hat, aber von beiden Seiten auf das Bedingungscoderegister zugegriffen werden kann. Bei 32-Bit-Operationen erfolgt das Setzen von Bedingungscodes und Zugreifen auf sie gemäß der Seite des Prozessors, die die 32-Bit-Operation tatsächlich ausführt. Daher aktualisieren im X-Kanal 5X ausgeführte 32-Bit-Operationen die Bedingungscodes für den X-Kanal CCX0 ... CCX7, und sie werden nur auf den X-Kanal-Codes CCX0 ... CCY7 bedingt ausgeführt. Entsprechendes gilt für im Y-Kanal 5Y ausgeführte 32-Bit-Operationen. 64-Bit-Operationen haben jedoch eine größere Flexibilität. 64-Bit-Befehle beinhalten auch ein TST-Feld zum Zugreifen auf ein Treg-Byte auf eine ähnliche Weise wie bei den oben besprochenen 32-Bit-Operationen. In diesem Fall bestimmt das Seitenfeld S in dem Treg-Byte, auf das der Zugriff erfolgt, welche Bedingungscodes (X oder Y) verwendet werden. Das heißt, das Seitenfeld S bestimmt, welche Bedingungscodes gemäß eines gerade ausgeführten 64-Bit-Befehls gesetzt werden, und auch durch welche Bedingungscodes (X oder Y) das Wirken des 64-Bit-Befehls prädiziert ist. Daher erhöht dies wesentlich die bei der Ausführung von 64-Bit-Befehlen verfügbaren Optionen.
  • Es versteht sich, dass mehrere Variationen der oben beschriebenen Ausführungsform möglich sind. Das Seitenbit S im Treg-Byte kann z. B. immer zum Bezeichnen des erforderlichen Satzes von Bedingungscodes (X oder Y) verwendet werden, statt nur in Nicht-SIMD-64-Bit-Befehlen, wie oben erwähnt. Ferner besteht kein Bedarf an einem bestimmten Bedingungssetzungskennzeichen S im Befehl – ob Bedingungscodes zu setzen sind oder nicht kann im Operationscode definiert werden, oder die Befehlssemantik kann so ausgelegt werden, dass Bedingungscodes immer gesetzt werden.
  • Wie aus 7 ersichtlich, ist es möglich, bedingte Weg-um-Weg-Ausführung auf mehrfache Weise zu implementieren. Eine andere Alternative zu der beschriebenen bestünde darin, die Operation nur dann auszuführen (und die jeweiligen Operatoren einzuschalten), wenn die Testbedingung für jenen Weg erfüllt ist.

Claims (12)

  1. Eine Ausführungseinheit zur Verwendung in einem Computersystem zum bedingten Durchführen einer in einem Computerbefehl definierten Operation, wobei die Ausführungseinheit Folgendes beinhaltet: einen ersten und zweiten Eingangsspeicher (40, 42) zum Halten von jeweils einem ersten und zweiten Operanden, auf denen eine in dem Befehl definierte Operation durchgeführt werden soll, wobei jeder Speicher eine Vielzahl von Wegen, von denen jeder ein Objekt (b0 ... b1) hält, definiert; eine Vielzahl von Operatoren (44), die jeweils mit den Wegen in Verbindung stehen, um eine in dem Befehl spezifizierte Operation auf Objekten in entsprechenden Wegen des ersten und zweiten Quelloperanden durchzuführen; einen Zielpuffer (46) zum Halten der Ergebnisse der Operation auf einer Weg um Weg Basis; und Auswahlmittel (50, 52), um für jeden Weg in Abhängigkeit von gespeicherten Bedingungswerten festzustellen, ob die Operation auf Objekten in jenem Weg ausgeführt werden soll oder nicht.
  2. Ausführungseinheit gemäß Anspruch 1, bei der die Bedingungswerte einen Satz von Bedingungscodes (CC) beinhalten.
  3. Ausführungseinheit gemäß Anspruch 2, bei der das Auswahlmittel ein Mittel (50) zum Vergleichen ausgewählter Bedingungscodes des Satzes mit einem in dem Befehl identifizierten Testcode beinhaltet.
  4. Ausführungseinheit gemäß Anspruch 2 oder 3, die einen Bedingungscodegenerator (48) zum Generieren des Satzes von Bedingungscodes, die auf eine Ausführung eines Befehls reagieren, beinhaltet.
  5. Ausführungseinheit gemäß Anspruch 2, 3 oder 4, bei der die Zahl der Bedingungscodes (CC) im Satz der Höchstzahl von Wegen in dem ersten und zweiten Quelloperanden entspricht.
  6. Ausführungseinheit gemäß Ansprüchen 4 und 5, wobei der Bedingungscodegenerator (48) betriebsfähig ist, um den Satz von Bedingungscodes (CC) so zu generieren, dass, wenn die Operanden weniger als die Höchstzahl von Wegen aufweisen, zwei oder mehr Bedingungscodes auf denselben Wert gesetzt sind, so dass jeder individuelle Bedingungscode im Satz unabhängig vom Grad des Packens des ersten und zweiten Quelloperanden generiert wird.
  7. Ein Computersystem zum bedingten Durchführen einer in einem Computerbefehl definierten Operation, wobei das Computersystem Folgendes beinhaltet: eine Abruf- und Decodier-Schaltungsanordnung (4) zum Abrufen und Decodieren einer Befehlssequenz aus einem Programmspeicher (2); mindestens eine Ausführungseinheit gemäß einem der Ansprüche 1 bis 6; und mindestens eine Speicherzugriffseinheit zum Realisieren von Speicherzugriffsvorgängen, die auf Speicherzugriffsbefehle reagieren.
  8. Computersystem gemäß Anspruch 7, das ein Bedingungscoderegister (CC-REG) zum Halten der Bedingungswerte in der Form eines Satzes von Bedingungscodes (CC) beinhaltet.
  9. Computersystem gemäß Anspruch 7 oder 8, das ein Testregister (T-REG) zum Halten eines Testcodes umfasst, wobei das Testregister durch einen Computerbefehl adressiert wird und der Testcode im Vergleich mit den Bedingungswerten verwendet wird, um für jeden Weg festzustellen, ob die Operation auf Objekten in jenem Weg ausgeführt werden soll oder nicht.
  10. Ein Verfahren zum Ausführen von Befehlen auf Operanden, die eine Vielzahl gepackter Objekte enthalten, wobei das Verfahren Folgendes beinhaltet: Zugreifen auf mindestens einen Quelloperanden, der eine Vielzahl gepackter Objekte (b0 ... b1) in jeweiligen Wegen enthält; Zugreifen auf gespeicherte Bedingungswerte, um für jeden Weg festzustellen, ob eine in dem Befehl definierte Operation auf jenem Weg des Operanden implementiert werden soll oder nicht; und Durchführen der Operation und Aktualisieren eines Zieloperanden lediglich in den Wegen, für die der gespeicherte Bedingungswert anzeigt, dass die Operation implementiert werden sollte.
  11. Verfahren gemäß Anspruch 10, bei dem der Schritt des Zugreifens auf die gespeicherten Bedingungswerte das Zugreifen auf einen Satz von in einem Bedingungscoderegister (CC-REG) gehaltenen Bedingungscodes (CCs) und das Vergleichen der ausgewählten Codes mit einem in dem Befehl identifizierten Testcode beinhaltet.
  12. Verfahren gemäß Anspruch 11, bei dem der Testcode in einem Testregister (T-REG), das durch eine Adresse im Befehl identifiziert wird, gehalten wird.
DE60006971T 1999-07-21 2000-06-26 Bedingte befehlsausführung in einem rechner Expired - Lifetime DE60006971T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB9917127A GB2352536A (en) 1999-07-21 1999-07-21 Conditional instruction execution
GB9917127 1999-07-21
PCT/GB2000/002441 WO2001006353A1 (en) 1999-07-21 2000-06-26 Conditional instruction execution in a computer

Publications (2)

Publication Number Publication Date
DE60006971D1 DE60006971D1 (de) 2004-01-15
DE60006971T2 true DE60006971T2 (de) 2004-10-28

Family

ID=10857675

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60006971T Expired - Lifetime DE60006971T2 (de) 1999-07-21 2000-06-26 Bedingte befehlsausführung in einem rechner

Country Status (7)

Country Link
US (2) US7191317B1 (de)
EP (1) EP1204918B1 (de)
AT (1) ATE255738T1 (de)
AU (1) AU5552000A (de)
DE (1) DE60006971T2 (de)
GB (1) GB2352536A (de)
WO (1) WO2001006353A1 (de)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2352536A (en) * 1999-07-21 2001-01-31 Element 14 Ltd Conditional instruction execution
US7856543B2 (en) * 2001-02-14 2010-12-21 Rambus Inc. Data processing architectures for packet handling wherein batches of data packets of unpredictable size are distributed across processing elements arranged in a SIMD array operable to process different respective packet protocols at once while executing a single common instruction stream
US7017032B2 (en) * 2001-06-11 2006-03-21 Broadcom Corporation Setting execution conditions
US7861071B2 (en) 2001-06-11 2010-12-28 Broadcom Corporation Conditional branch instruction capable of testing a plurality of indicators in a predicate register
US6986025B2 (en) 2001-06-11 2006-01-10 Broadcom Corporation Conditional execution per lane
US7127593B2 (en) 2001-06-11 2006-10-24 Broadcom Corporation Conditional execution with multiple destination stores
US20100274988A1 (en) * 2002-02-04 2010-10-28 Mimar Tibet Flexible vector modes of operation for SIMD processor
US6957321B2 (en) * 2002-06-19 2005-10-18 Intel Corporation Instruction set extension using operand bearing NOP instructions
US7793084B1 (en) * 2002-07-22 2010-09-07 Mimar Tibet Efficient handling of vector high-level language conditional constructs in a SIMD processor
US7002595B2 (en) 2002-10-04 2006-02-21 Broadcom Corporation Processing of color graphics data
US7043518B2 (en) * 2003-07-31 2006-05-09 Cradle Technologies, Inc. Method and system for performing parallel integer multiply accumulate operations on packed data
GB2409066B (en) * 2003-12-09 2006-09-27 Advanced Risc Mach Ltd A data processing apparatus and method for moving data between registers and memory
US7302627B1 (en) * 2004-04-05 2007-11-27 Mimar Tibet Apparatus for efficient LFSR calculation in a SIMD processor
US7873812B1 (en) 2004-04-05 2011-01-18 Tibet MIMAR Method and system for efficient matrix multiplication in a SIMD processor architecture
US7725691B2 (en) * 2005-01-28 2010-05-25 Analog Devices, Inc. Method and apparatus for accelerating processing of a non-sequential instruction stream on a processor with multiple compute units
US7447873B1 (en) * 2005-11-29 2008-11-04 Nvidia Corporation Multithreaded SIMD parallel processor with loading of groups of threads
US10360039B2 (en) * 2009-09-28 2019-07-23 Nvidia Corporation Predicted instruction execution in parallel processors with reduced per-thread state information including choosing a minimum or maximum of two operands based on a predicate value
SE536099C2 (sv) * 2011-12-20 2013-05-07 Mediatek Sweden Ab Digital signalprocessor och basbandskommunikationsanordning
US9395988B2 (en) 2013-03-08 2016-07-19 Samsung Electronics Co., Ltd. Micro-ops including packed source and destination fields
FR3021432B1 (fr) 2014-05-20 2017-11-10 Bull Sas Processeur a instructions conditionnelles
EP3001307B1 (de) 2014-09-25 2019-11-13 Intel Corporation Bit-Shuffle-Prozessoren, Verfahren, Systeme und Anweisungen

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3699526A (en) * 1971-03-26 1972-10-17 Ibm Program selection based upon intrinsic characteristics of an instruction stream
US4907148A (en) * 1985-11-13 1990-03-06 Alcatel U.S.A. Corp. Cellular array processor with individual cell-level data-dependent cell control and multiport input memory
US4792894A (en) * 1987-03-17 1988-12-20 Unisys Corporation Arithmetic computation modifier based upon data dependent operations for SIMD architectures
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
US5001662A (en) 1989-04-28 1991-03-19 Apple Computer, Inc. Method and apparatus for multi-gauge computation
US5471593A (en) * 1989-12-11 1995-11-28 Branigin; Michael H. Computer processor with an efficient means of executing many instructions simultaneously
US5649142A (en) * 1991-10-24 1997-07-15 Intel Corporation Method and apparatus for translating addresses using mask and replacement value registers and for accessing a service routine in response to a page fault
WO1993008525A2 (en) * 1991-10-24 1993-04-29 Intel Corporation Data processing system
GB2273377A (en) * 1992-12-11 1994-06-15 Hughes Aircraft Co Multiple masks for array processors
JP2832899B2 (ja) 1993-05-31 1998-12-09 松下電器産業株式会社 データ処理装置およびデータ処理方法
US5509129A (en) * 1993-11-30 1996-04-16 Guttag; Karl M. Long instruction word controlling plural independent processor operations
US5659722A (en) * 1994-04-28 1997-08-19 International Business Machines Corporation Multiple condition code branching system in a multi-processor environment
US5974240A (en) * 1995-06-07 1999-10-26 International Business Machines Corporation Method and system for buffering condition code data in a data processing system having out-of-order and speculative instruction execution
US5901318A (en) * 1996-05-06 1999-05-04 Hewlett-Packard Company Method and system for optimizing code
JP3442225B2 (ja) * 1996-07-11 2003-09-02 株式会社日立製作所 演算処理装置
GB2317466B (en) 1996-09-23 2000-11-08 Advanced Risc Mach Ltd Data processing condition code flags
US5996066A (en) * 1996-10-10 1999-11-30 Sun Microsystems, Inc. Partitioned multiply and add/subtract instruction for CPU with integrated graphics functions
JPH10124315A (ja) * 1996-10-18 1998-05-15 Hitachi Ltd 分岐処理方法およびそのための情報処理装置
US6374346B1 (en) * 1997-01-24 2002-04-16 Texas Instruments Incorporated Processor with conditional execution of every instruction
US5898853A (en) * 1997-06-25 1999-04-27 Sun Microsystems, Inc. Apparatus for enforcing true dependencies in an out-of-order processor
US6272514B1 (en) * 1997-11-18 2001-08-07 Intrinsity, Inc. Method and apparatus for interruption of carry propagation on partition boundaries
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
US6173393B1 (en) * 1998-03-31 2001-01-09 Intel Corporation System for writing select non-contiguous bytes of data with single instruction having operand identifying byte mask corresponding to respective blocks of packed data
US6115812A (en) * 1998-04-01 2000-09-05 Intel Corporation Method and apparatus for efficient vertical SIMD computations
US6317820B1 (en) * 1998-06-05 2001-11-13 Texas Instruments Incorporated Dual-mode VLIW architecture providing a software-controlled varying mix of instruction-level and task-level parallelism
GB2352308B (en) * 1999-07-21 2004-06-30 Element 14 Ltd Accessing a test condition
GB2352536A (en) * 1999-07-21 2001-01-31 Element 14 Ltd Conditional instruction execution

Also Published As

Publication number Publication date
EP1204918A1 (de) 2002-05-15
US7979679B2 (en) 2011-07-12
GB9917127D0 (en) 1999-09-22
GB2352536A (en) 2001-01-31
WO2001006353A1 (en) 2001-01-25
ATE255738T1 (de) 2003-12-15
US7191317B1 (en) 2007-03-13
AU5552000A (en) 2001-02-05
EP1204918B1 (de) 2003-12-03
DE60006971D1 (de) 2004-01-15
US20060168426A1 (en) 2006-07-27

Similar Documents

Publication Publication Date Title
DE60006971T2 (de) Bedingte befehlsausführung in einem rechner
DE60018078T2 (de) Einstellung von bedingungswerten in einem rechner
DE69833008T2 (de) Prozessor mit instruktionskodierung mittels eines schablonenfeldes
DE2900324C2 (de)
DE3486457T2 (de) Integrierter Einchip-Prozessor für die Verarbeitung von digitalen Signalen entweder in einem schnellen oder einem langsamen Betrieb
DE3687666T2 (de) Verzweigungssteuerung in einem dreiphasen-pipeline-signalprozessor.
DE2714805C2 (de)
DE69027932T2 (de) Cpu-pipeline mit registerfile-bypass durch adressvergleich bei aktualisierungen/zugriffen
DE69525277T2 (de) Datenprozessor für Operanden mit variabler Breite
DE68921776T2 (de) Prozessorssimulation.
DE2724125C2 (de)
DE68921775T2 (de) Prozessorssimulation.
DE2755273C2 (de)
DE3751503T2 (de) Datenprozessor in Pipelinestruktur mit der Fähigkeit mehrere Befehle parallel zu dekodieren und auszuführen.
DE102018005977A1 (de) Gleitkomma- zu festkomma-umwandlung
DE69824193T2 (de) Datenverarbeitungseinheit mit der fähigkeit von digitaler signalverarbeitung
DE68928727T2 (de) Cachespeicheranlage zum Versorgen eines Festworts eines Befehlscodes mit variabler Länge und Befehlsabrufanlage
DE69738188T2 (de) Verfahren und apparat für eine erhöhte genauigkeit bei der verzweigungsvorhersage in einem superskalaren mirkroprozessor
DE3486211T2 (de) Kodebestimmung mit einem auf Halbaddierer basierten Operandenvergleicher.
DE602004005025T2 (de) Instruktionen zur verarbeitung einer verschlusselten nachricht
DE69418146T2 (de) Temporärer Registersatz für einen superpipeline-superskalaren Prozessor
DE1499201B2 (de) Schaltungsanordnung zur Umwandlung von Informationen in gepackter Bytedar stellung in eine ungepackte Darstellung
DE102010051476A1 (de) Addierbefehle, um drei Quelloperanden zu addieren
EP0010185B1 (de) Virtuell-Adressiervorrichtung für einen Computer
DE19983098B4 (de) Mehrfach-Bitanzeige zur Behandlung von Schreib-nach-Schreib-Fehlern und zur Eliminierung von Bypass-Komparatoren

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