DE112011103206B4 - Prozessor und Rechensystem mit einer Multiplizieraddierfunktionseinheit zum Ausführen von Scale-, Round-, Getexp-, Round-, Getmant-, Reduce-, Range- und Class-Befehlen und Verfahren hierfür - Google Patents

Prozessor und Rechensystem mit einer Multiplizieraddierfunktionseinheit zum Ausführen von Scale-, Round-, Getexp-, Round-, Getmant-, Reduce-, Range- und Class-Befehlen und Verfahren hierfür Download PDF

Info

Publication number
DE112011103206B4
DE112011103206B4 DE112011103206.4T DE112011103206T DE112011103206B4 DE 112011103206 B4 DE112011103206 B4 DE 112011103206B4 DE 112011103206 T DE112011103206 T DE 112011103206T DE 112011103206 B4 DE112011103206 B4 DE 112011103206B4
Authority
DE
Germany
Prior art keywords
instruction
unit
functional unit
rounding
shift
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.)
Active
Application number
DE112011103206.4T
Other languages
English (en)
Other versions
DE112011103206T5 (de
Inventor
Amit Gradstein
Cristina S. Anderson
Zeev Sperber
Simon Rubanovich
Benny Eitan
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.)
Tahoe Research Ltd
Original Assignee
Intel 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 Intel Corp filed Critical Intel Corp
Publication of DE112011103206T5 publication Critical patent/DE112011103206T5/de
Application granted granted Critical
Publication of DE112011103206B4 publication Critical patent/DE112011103206B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/57Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • 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/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/01Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/01Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
    • G06F5/012Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising in floating-point computations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49942Significance control
    • G06F7/49947Rounding
    • G06F7/49957Implementation of IEEE-754 Standard
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3893Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49942Significance control
    • G06F7/49947Rounding

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Nonlinear Science (AREA)
  • Executing Machine-Instructions (AREA)
  • Complex Calculations (AREA)

Abstract

Prozessor, umfassend:eine Funktionseinheit, die eine Exponentendifferenzlogik (203), einen Multiplizierer (206) und einen Addierer (209) zum Unterstützen eines Multiplizieraddierbefehls aufweist, wobei die Funktionseinheit außerdem eine Rundungseinheit (217) zum Unterstützen eines Rundungsbefehls aufweist, der/die angibt, auf wie viele Binärstellen ein Mantissenwert gerundet werden soll, wobei die Exponentendifferenzlogik (203) eine Verschiebungseinheit (205) zum Unterstützen der Ausführung des Multiplizieraddierbefehls und des Rundungsbefehls aufweist;wobei die Exponentendifferenzlogik (203) eingerichtet ist, einen Mantissenterm eines Eingabewerts zu verschieben, um ihn an eine Teilproduktsummierung anzulegen, wenn ein Multiplizieraddierbefehl ausgeführt wird; undwobei die Exponentendifferenzlogik (203) ferner eingerichtet ist, einen Mantissenterm eines Eingabewerts zu verschieben, wenn ein Rundungsbefehl ausgeführt wird, wobei Nachkommaterme geringer Ordnung weggelassen werden, und wobei Runden des Eingabewerts anhand der weggelassenen Nachkommaterme geringerer Ordnung durchgeführt wird.

Description

  • Gebiet der Erfindung
  • Das Gebiet der Erfindung bezieht sich allgemein auf elektronisches Rechnen und insbesondere auf eine Funktionseinheit, die in der Lage ist, Annäherungen von Funktionen auszuführen.
  • Hintergrund
  • 1 zeigt einen generischen Verarbeitungskern 100, der viele verschiedene Typen von Verarbeitungskernarchitekturen beschreiben soll, wie etwa Complex Instruction Set (CISC), Reduced Instruction Set (RISC) und Very Long Instruction Word (VLIW). Der generische Verarbeitungskern 100 der 1 enthält: 1) eine Holeinheit 103, die Befehle einholt (beispielsweise aus einem Cache und/oder Speicher); 2) eine Dekodiereinheit 104, die Befehle dekodiert; 3) eine Ablaufeinheit 105, die den Ablauf und/oder die Reihenfolge einer Befehlsausgabe an die Ausführungseinheiten 106 bestimmt (insbesondere ist die Ablaufeinheit optional); 4) einen Ausführungsabschnitt 106, der Ausführungseinheiten aufweist, die die Befehle ausführen (typische Befehlsausführungseinheiten enthalten Verzweigungsausführungseinheiten, arithmetische Ganzzahl-Ausführungseinheiten (beispielsweise ALUs), arithmetische Gleitkomma-Ausführungseinheiten (beispielsweise FPUs) und Speicherzugriffs-Ausführungseinheiten); und 5) eine Ausbuchungseinheit (Retirement Unit) 107, die erfolgreichen Abschluss eines Befehls anzeigt. Insbesondere kann der Verarbeitungskern 100 Mikrocode 108 einsetzen oder auch nicht. Im Falle von mikrokodierten Prozessoren werden die Mikro-Ops typischerweise in einem nichtflüchtigen maschinenlesbaren Medium (wie etwa einem Read Only Memory (ROM)) innerhalb des Halbleiterchips gespeichert, auf dem Prozessor konstruiert ist, und veranlassen die Ausführungseinheiten innerhalb des Prozessors dazu, die gewünschte Funktion, die durch den Befehl aufgerufen wird, durchzuführen.
  • US 6 360 189 B1 offenbart in 3c und 3d eine Schaltung zur Verarbeitung von Mantissentermen. Diese Schaltung enthält einen „alignment shifter 90“. Die Schaltung enthält außerdem einen „normalization shifter 457“.
  • Figurenliste
  • Die vorliegende Erfindung wird beispielhaft und nicht beschränkend in den Figuren der beigefügten Zeichnungen gezeigt, in denen gleiche Bezugsziffern ähnliche Elemente kennzeichnen und in denen:
    • 1 eine Ausführungsform eines Prozessors zeigt;
    • 2 eine Ausführungsform einer Multiplizieraddierfunktionseinheit zeigt;
    • 3 ein Flussdiagramm eines GETEXP-Befehls zeigt, der auf der Funktionseinheit der 2 ausführbar ist;
    • 4 ein Flussdiagramm eines SCALE-Befehls zeigt, der auf der Funktionseinheit der 2 ausführbar ist;
    • 5 ein Flussdiagramm eines ROUND-Befehls zeigt, der auf der Funktionseinheit der 2 ausführbar ist;
    • 6 ein Flussdiagramm eines GETMANT-Befehls zeigt, der auf der Funktionseinheit der 2 ausführbar ist;
    • 7 ein Flussdiagramm eines REDUCE-Befehls zeigt, der auf der Funktionseinheit der 2 ausführbar ist;
    • 8 ein Flussdiagramm eines RANGE-Befehls zeigt, der auf der Funktionseinheit der 2 ausführbar ist;
    • 9 ein beispielhaftes Rechensystem zeigt.
  • Ausführliche Beschreibung
  • 2 zeigt eine Ausführungseinheit (auch als Funktionseinheit bezeichnet), die eingerichtet ist, eine Anzahl unterschiedlicher Befehle auszuführen, die im Folgenden beschrieben werden.
  • MADD-Befehl
  • Ein grundlegender Befehl, den die Architektur der 2 in der Lage ist auszuführen, ist ein Multiplizieraddier (MADD)-Befehl, der einen Multiplikanden (A) und Multiplikator (B) multipliziert und das Produkt (AB) zu einem addierten (C) addiert. Das heißt, der MADD-Befehl führt den Befehl R=(AB)+C aus (in einer Ausführungsform kann der MADD-Befehl verwendet werden, um irgendeine der folgenden Berechnungen durchzuführen: AB+C, AB-C, -AB+C, -AB-C). In Gleitkommaform kann ein Wert, wie im Stand der Technik bekannt ist, durch einen Mantissenterm und einen Exponententerm ausgedrückt werden. Somit wird Multiplikand A beispielsweise als (A.mant, A.exp) ausgedrückt; Multiplikator B wird als (B.mant, B.exp) ausgedrückt, und Summand C wird als (C.mant; C.exp) ausgedrückt.
  • Die Architektur der 2 umfasst für Gleitkommaoperationen eine Exponentenberechnungslogik 201 und Mantissenberechnungslogik 202. Gemäß grundlegendem Betrieb eines Gleitkomma-MADD-Befehls bestimmt die Exponentenberechnungslogik 201 den Exponententerm des Gleitkommaergebnisses (R.exp), und die Mantissenberechnungslogik 202 bestimmt den Mantissenterm des Gleitkommaergebnisses (R.mant). Bei dem Gleitkomma-MADD-Befehl bestimmt die Exponentenberechnungslogik 201 anfangs den R.exp-Term als das Maximum von i) C.exp; ii) (A.exp + B.exp).
  • Die Mantissenlogik 202 umfasst eine Exponentendifferenzlogik 203, die sowohl eine Linksverschiebungslogik 204 als auch eine Rechtsverschiebungslogik 205 umfasst. Die Mantissenlogik weist außerdem einen Multiplikator 206 auf. Der Vorgang der Multiplikation kann als die Summierung einer Anzahl von Teilprodukten betrachtet werden. 2 zeigt außerdem einen Ansatz mit einem spezifischen Multiplikatordesign, bei dem die Auswahllogik 207 Teilprodukte der Multiplikation des A.mant-Terms und des B.mant-Terms erzeugt (es ist zu beachten, dass der B.mant-Term außerdem Boothkodiert ist). Eine Wallace-Baumlogik 208 führt effektiv die Summierung der Teilprodukte durch, die durch die Auswahllogik 207 erzeugt wurden. Insbesondere wird der Mantissentermsummand (C.mant) in den Wallace-Baum 208 eingefügt, so dass der Wallace-Baum 208 auch die AB+C-Addition durchführt.
  • Vor der Einfügung wird der C.mant-Term jedoch angepasst, so dass er innerhalb der Teilproduktsummierung richtig anliegt. Hierbei wird die Exponentendifferenzlogik 203, weil die durch den Multiplikator durchgeführte Multiplikation selbstverständlich einen Mantissenterm erzeugt, der in der Größenordnung A.exp + B.exp ist, den C.mant-Term um die Differenz zwischen C.exp und (A.exp + B.exp) verschieben. Insbesondere wird der C.mant-Term, falls C.exp größer ist als (A.exp + B.exp), durch Linksverschiebungslogik 204 um C.exp-(A.exp + B.exp) Binärstellen nach links verschoben (das heißt, das Binärkomma des C.mant-Terms wird nach rechts verschoben, was die Wirkung des Vergrößerns seines Ganzzahlterms hat). In ähnlicher Weise wird der C.mant-Term, falls C.exp kleiner ist als (A.exp + B.exp), durch Rechtsverschiebungslogik 205 um (A.exp + B.exp)-C.exp Dezimalpunkte verschoben (das heißt, das Binärkomma des C.mant-Terms wird nach links verschoben, was die Wirkung des Verkleinerns seines Ganzzahlterms hat). In diesem Fall werden kleinere Nachkommaterme geringerer Ordnung von C.mant durch die Logik 213 zu einem Sticky Bit kombiniert, das durch eine Rundungseinheit 217 für weiter unten beschriebene Befehle verwendet werden soll.
  • Die durch die Wallace-Baumlogik 207 durchgeführte Summierung erzeugt sowohl einen Summierungsterm als auch einen Übertragsterm, die durch den Addierer 209 addiert werden, um ein Ergebnis für die AB+C-Berechnung zu erzeugen. Hierbei wird ein Antizipator 210 führender Änderungen, falls das Ergebnis der AB+C-Berechnung führende Nullen enthält (oder führende Einsen, falls das Ergebnis negativ ist), das Ergebnis dazu bringen, (durch die Linksverschiebungseinheit 211) um die Anzahl führender Nullen/Einsen nach links verschoben zu werden, um diese zu entfernen. Die gleiche Information wird der Exponentenberechnungslogik 201 bereitgestellt, um R.exp entsprechend anzupassen.
  • Es gibt zwei Verschiebungseinheiten, die Linksverschiebungseinheit 204 zum Entfernen führender Nullen/Einsen (wobei R.exp mit einem Shift_Count aktualisiert wird) und eine Rechtsverschiebungseinheit 212 (die benötigt wird, wenn C.exp größer als A+B.exp ist, wobei das Wallace-Baumergebnis bis zu der Stelle nach rechts verschoben wird, die C.exp-(A+B.exp) gleicht). Ein Mux 213 wählt, welche der zwei Verschiebungseinheiten 211, 212 verwendet wurden, um das korrekte Ergebnis zu erzielen. In einer Ausführungsform kann der Addierer 209, falls der C.mant-Term nach links verschoben wird, einen Übertragsterm 214 erzeugen. Der Übertragsterm 214 schaltet einen Inkrementierer 215 ein, der den Übertragsterm zu dem nach links verschobenen C.mant-Term addiert (das heißt, die Ausgabe des Inkrementierers 215 fließt durch den 2:1-Multiplexer 216, falls der Addierer 209 einen Übertragsterm erzeugt). In einer Ausführungsform hat der Addierer 209 108 Bits, und der Inkrementierer 215 ist ein 53-Bit-Inkrementierer.
  • Eine Anzahl weiterer Befehle, die auf der Funktionseinheit der Figur ausgeführt werden können, werden im Folgenden ausführlich beschrieben. Für jeden dieser Befehle, ebenso wie den zuvor erwähnten FMADD-Befehl, ist die Funktionseinheit in einer Ausführungsform eingerichtet, auf irgendeiner Kombination von skalaren oder gepackten Daten (SIMD)-Operanden mit einfacher oder doppelter Präzision zu arbeiten. Die Spezifizierungskombination von Operandenkonfiguration und Präzision wird in dem Befehl angegeben. Darüber hinaus kann die Funktionseinheit der 2 mehrere Male instantiiert werden, um eine Vektorfunktionseinheit zu erstellen. Hierbei kann eine Maskierschicht zwischen der Vektorfunktionseinheitsausgabe und jeder der instantiierten Funktionseinheiten innerhalb der Vektorfunktionseinheit eingerichtet werden.
  • Vektorbetrieb kann von SIMD-Betrieb dadurch unterschieden werden, dass die Dimension des Eingabeoperanden für Vektormaschinen variabel, jedoch für SIMD-Maschinen fest ist. Die zuvor erwähnte Maskierschicht liefert die Fähigkeit, die Anzahl von Elementen in der Vektormaschine zu variieren. Insbesondere kann jedes Ausgabeelement einer der instantiierten Funktionseinheiten mit seinem eigenen Schreiblogikschaltkreis geschrieben werden. In einer Ausführungsform kann der Schreiblogikschaltkreis an irgendeinen Ausgabeelementort der Vektorfunktionseinheit schreiben. Durch Einschalten des Schreiblogikschaltkreises für lediglich diejenigen Elemente, die einem gültigen Vektoroperandenelement entsprechen, können Vektoren variabler Länge verarbeitet werden. Dies hat die Wirkung, den Betrieb lediglich für diejenigen instantiierten Funktionseinheiten zu ermöglichen, die einem gültigen Vektorelement entsprechen. Darüber hinaus kann die Maskierschicht so eingerichtet sein, dass alle arithmetischen Ausnahmen, die durch die einzelnen instantiierten Funktionseinheiten detektiert werden, als gültige Ausgabe für lediglich die eingeschalteten instantiierten Funktionseinheiten dargestellt werden, während Ausnahmen der Deaktivierten unterdrückt werden.
  • SCALE-Befehl
  • Ein Flussdiagramm des SCALE-Befehls ist in 3 gezeigt. Der SCALE-Befehl skaliert einen ersten Gleitkommaterm X mit Floor:Y (was der kleinste Ganzzahlausdruck des Gleitkommaterms Y ist). Der VSCALE-Befehl kann letztlich als ein Befehl betrachtet werden, der das Binärkomma von X um einen Betrag Floor:Y bewegt. Mathematisch kann dies ausgedrückt werden als R = (X .mant E X .exp) 2 (Floor:Y .mant E Y .exp) = X .mant E (X .exp + (floor:Y .mant E Y .exp)) .
    Figure DE112011103206B4_0001
  • Somit ist der Mantissenterm des Ergebnisses R.mant=X.mant, und der Exponententerm des Ergebnisses ist R.exp=X.exp + (floor: Y.mant E Y.exp). Bezüglich der Berechnung von R.exp ist zu beachten, dass der X.exp-Term selbst eine ganze Zahl ist, und Y.mant E Y.exp kann in eine ganze Zahl umgewandelt werden, indem einfach das Binärkomma des Y.mant-Terms verschoben wird, bis keine Nachkommabits mehr existieren. Das heißt beispielsweise, falls Y.mant = 1,01011 und Y.exp = 5, dann ist Y = 101011. Dies entspricht im Wesentlichen einem Verschieben von Y.mant innerhalb einer Verschiebungseinheit um Y.exp nach links. Hierbei entspricht die Floor-Operation im Wesentlichen dem Weglassen der Nachkommabits. Somit kann der R.exp-Term berechnet werden durch: i) Verschieben von Y.mant um einen Betrag von Y.exp; und ii) Addieren des verschobenen Wertes zu X.exp.
  • Dies kann innerhalb der Exponentendifferenzlogik 203 der 2 durch Verarbeiten des Y-Terms mit dem Datenpfad ermöglicht werden, der den Summandenterm des MADD-Befehls (C.mant und C.exp) verarbeitet, während die A.exp- und B.exp-Terme = 0 gebracht werden. In diesem Falle ist C.exp-(A.exp + B.exp) = Y.exp - (0) = Y.exp, was dazu führt, dass Y.mant von der Linksverschiebungseinheit 204 um Y.exp nach links verschoben wird. Die Ausgabe der Verschiebungseinheit 204 wird anschließend an die Exponentenberechnungslogik 201 geliefert, die die Ausgabe der Verschiebungseinheit 204 zum X.exp-Term addiert. Der X.exp-Term kann auf jede der A.exp, B.exp-, C.exp-Eingaben der Exponentenberechnungslogik 201 gebracht werden. Die Summierung wird als R.exp bereitgestellt. R.mant wird einfach als der eingegebene X.mant-Term bereitgestellt.
  • GETEXP-Befehl
  • Ein Flussdiagramm des GETEXP-Befehls ist in 4 gezeigt. Der GETEXP-Befehl akzeptiert einen Eingabeterm (Z.mant, Z.exp), subtrahiert den systematischen Fehler (Bias) von dem Wert von Z.exp und liefert die Antwort in Gleitkommaform. Im Wesentlichen liefert der Befehl den tatächlichen Exponenten des eingegebenen Z in Gleitkommaform. Hierbei sind die Gleitkommaexponentenwerte, wie im Stand der Technik bekannt ist, typischerweise fehlerbehaftet, um Berechnungen, die negative Exponenten einschließen, zu vereinfachen. Beispielsweise sind im Falle einfacher Präzision 8 Bits für den Exponententerm reserviert, was einen Bereich von 254 verschiedenen Werten ermöglicht (spezielle Bedeutung wird zwei weiteren Werten beigemessen). Hierbei wird für einen tatsächlichen Exponentenbereich von -127 bis +127 durch Hardware ein systematischer Fehler (Bias) von 127 zu jedem solchen tatsächlichen Exponentenwert addiert, so dass der numerische Bereich, der physikalisch in Hardware berechnet wird, sich für den Exponenten von 0 bis 254 erstreckt. Somit subtrahiert für einfache Präzision der GETEXP-Befehl einen Wert von 127 von Z.exp und liefert die Antwort in Gleitkommaform. Im Falle doppelter Präzision wird ein Wert von 1023 von Z.exp subtrahiert (es ist zu beachten, dass doppelte Präzision in dem .exp-Term 11 Bits aufweist).
  • Im Falle einfacher Präzision wird ein Wert von 127 von einem weiteren Term subtrahiert, indem ein Wert von -127 addiert wird. In Zweierkomplement-Ganzzahlform, kann -127 als 10000001 ausgedrückt werden, was als 0,10000001 E 8 ausgerichtet werden kann (d.h., falls der wert 10000001 E 0 um acht Dezimalstellen nach rechts verschoben wird). Von daher wird gemäß einem Ansatz für einfache Präzision ein Wert von 0,10000001 als der Multiplikand (A.mant) und ein Wert von 1 als der Multiplikator (B.mant) erzwungen, das Ergebnis der Multiplikation der AB-Terme, das durch den Multiplizierer durchgeführt wurde, ist 0,10000001, was -127 um acht Stellen nach rechts verschoben entspricht.
  • Der Z.exp-Term wird entlang dem Summanden (C.mant)-Datenpfades akzeptiert und ebenfalls durch die Rechtsverschiebungseinheit 205 um acht Stellen nach rechts verschoben, um ihn mit der Multipliziererausgabe auszurichten, bevor er in den Wallace-Baum 208 eingefügt wird. Das Ergebnis des Addierers 209 entspricht dem Z.exp-Term abzüglich des systematischen Fehlers von 127 und um die rechten acht Stellen verschoben. Der Antizipator 210 führender Änderungen und die Linksverschiebungseinheit 211 werden sämtliche führenden Nullen/Einsen entfernen, und das Ergebnis wird als R.mant bereitgestellt. R.exp wird durch die Exponentenberechnungslogik, wiederum für einfache Präzision, als R.exp = 8 - (Anzahl führender Nullen/Einsen aus LCA 210) + 127 + 1 berechnet. Für doppelte Präzision wird die gleiche Operation, die oben beschrieben wurde, angewendet mit dem Unterschied, dass der systematische Fehler 1023 beträgt und die Werte um 11 Bits anstatt um 8 Bits verschoben werden. Von daher ist R.exp = 1 - (Anzahl führender Nullen aus LCA 210) + 1023 + 1.
  • Für den Fall, dass der Eingabeterm (Z.mant, Z.exp) denormal ist (d.h. er weist einen fehlerbehafteten Exponententerm von 0 und eine Mantisse ungleich 0 der Form 0,XXXX...X auf), wird der Z.mant-Term durch die Linksverschiebungseinheit 211 unter der Steuerung von LCA 210 nach links verschoben, bis die erste führende 1 gefunden wird. Das Ergebnis wird als R.mant bereitgestellt. Der Linksverschiebungsbetrag entspricht dem absoluten Wert des Exponenten, der außerdem als negativ anzusehen ist. Somit wird R.exp durch die Exponentenberechnungslogik als R.exp = - (Anzahl führender Nullen aus LCA 210) dargestellt.
  • ROUND-Befehl
  • Ein Flussdiagramm des ROUND-Befehls ist in 5 gezeigt. Der ROUND-Befehl rundet die Mantisse S.mant eines Eingabeterms (S.mant; S.exp) auf eine Anzahl binärer Stellen, die durch einen Eingabeterm Q angegeben sind. Beispielsweise wird der Befehl, falls S = 10111,11001 E 0 und Q = 2 ist, ein Ergebnis von R = 10111,11 E 0 (d.h. R.mant = 10111,11; R.exp = 0) liefern. Um diese Operation zu erzielen, wird der S.mant-Term als die Summanden-Mantisseneingabe (C.mant) akzeptiert und wird durch die Rechtsverschiebungseinheit 205 um einen Betrag = (# von Nachkommabits in S.mant) - Q nach rechts verschoben.
  • In dem oben angegebenen Beispiel ist die Anzahl von Nachkommabits in S.mant 5 (d.h., es gibt fünf Bits in der Kette „11001“) . Somit wird S.mant um 5-Q = 5-2 = 3 Stellen nach rechts verschoben. Verschieben des angegebenen S.mant-Terms von 10111,11001 um 3 Stellen nach rechts erzeugt ein Ergebnis, das 10,11111 E 3 entspricht, was die Wirkung des Weglassens der kleinsten Nachkomma-Bitkette „001“ von der ursprünglichen Eingabe S hat. In einer Ausführungsform unterstützt der Befehl die folgenden Rundungsmodi: 1) Aufrunden; 2) Abrunden; 3) Runden auf die nächste gerade Zahl; und 4) Runden auf Null.
  • Eine vollständige Operation rundet den kleinsten Nachkommawert in Abhängigkeit von dem angegebenen Rundungsmodus und den Nachkommabits, die weggelassen wurden, auf oder ab und stellt das Ergebnis mit dem ursprünglichen Exponenten (d.h. 10111,11 E 0) dar. Hierbei wird eine Maske erstellt, die führende Nullen mit dem Teil des ursprünglichen S.mant ausrichtet, der mit nachfolgenden Einsen verkettet wird, die mit dem Teil des ursprünglichen S.mant-Terms ausgerichtet werden, der weggelassen wurde. In dem hier diskutierten Beispiel entspricht dies 0000000111. Die Maske wird durch ODER mit der ursprünglichen S.mant-Eingabe verbunden, um beispielsweise einen ersten Wert von 1011111111 zu erzeugen. Das NICHT der Maske (1111111000) wird über UND mit dem ursprünglich eingegebenen S.mant-Term verbunden, um einen zweiten Wert von 1011111000 zu erzeugen. Eine Rundungseinheit 217 erhält beide Werte und inkrementiert den ersten Wert, der einem aufgerundeten Wert entspricht. Der zweite Wert entspricht einem nichtaufgerundeten Wert. Der erste oder zweite Wert wird als die korrekte Mantissenantwort anhand eines angegebenen Rundungsmodus und den Bits, die von der Rechtsverschiebungseinheit 205 weggelassen wurden, ausgewählt. In diesem Beispiel entsprechen die weggelassenen Bits „001“, daher sollte ein Aufrunden (im Modus zum Runden auf die nächste Zahl) nicht vorkommen, und der zweite Wert wird als die korrekte Mantisse ausgewählt. Im Falle des Aufrundungsmodus (und einem positiven Eingabevorzeichen) oder Abrundungsmodus (und negativem Eingabevorzeichen) wird der aufgerundete Wert ausgewählt. Der nicht aufgerundete Wert wird immer im Nullrundungsmodus ausgewählt. Die Exponentenberechnungslogik bestimmt den korrekten Exponenten (beispielsweise ist bei Betrachtung von S = 11111,11111 E 0 und Q = 2 im Modus zum Runden auf die nächste Zahl nach Normalisierung R.exp = S.exp+1).
  • Insbesondere entspricht einer der ersten und zweiten Werte einem geraden Mantissenwert und der andere einem ungeraden Mantissenwert. Im Falle des Rundens auf die nächste gerade Zahl basiert die Auswahl auf dem am weitesten links stehenden weggelassenen Bit und dem ODER der anderen weggelassen Bits (Sticky Bit). Falls das am weitesten links stehende weggelassene Bit 1, das Sticky Bit jedoch 0 ist, wird der gerade Wert ausgewählt. Falls das Sticky Bit 1 ist, basiert die Auswahl auf dem am weitesten links stehenden weggelassenen Bit: Falls 1, wird der aufgerundete Wert ausgewählt; falls 0, wird ein abgeschnittener Wert ausgewählt (d.h. nicht aufgerundet). Im Falle des Rundens auf unendlich wird der aufgerundete Wert ausgewählt, falls eines der weggelassenen Nachkommabits 1 ist; andernfalls wird der nicht aufgerundete Wert ausgewählt, falls alle weggelassenen Bits 0 sind. In einer Ausführungsform wird die Regel des Rundens auf unendlich für negative Eingabe in einem Abrundungsmodus und für positive Eingaben in einem Aufrundungsmodus angewendet. Die Regel zum Runden auf Null wird in einem Abrundungsmodus auf positive Eingaben und in einem Aufrundungsmodus auf negative Eingaben angewendet. Das beschriebene Rundungsverhalten stimmt mit den Rundungsmodus-Definitionen überein, die in IEEE Std 754-2008 angegeben sind.
  • GETMANT
  • Ein Flussdiagramm des GETMANT-Befehls ist in 6 gezeigt. GETMANTliefert den Wert einer Mantisse in Gleitkommaform. Die Mantisse, die in Gleitkommaform ausgedrückt wird, wird als die C.mant-Eingabe akzeptiert. Der Mantissenteil des Ergebnisses (im Folgenden als der „Signifikand“ bezeichnet), wird in die Form 1, XXXX...X gebracht. Ein numerischer Bereich, in den der Ausgabewert fallen muss (auch als ein Normalisierungswert bezeichnet), wird ebenfalls als ein Eingabeparameter bereitgestellt. Gemäß einer Ausführungsform existieren vier Intervalle, die spezifiziert werden können:
    • [1, 2); [1/2, 1); [1/2, 2); [3/4, 3/2).
  • Ein Bereich von [1, 2) entspricht einer Ausgabebinärzahl der Form 1,XXXX...X. In dem Fall, dass die C.mant-Eingabe in der Form 1,XXX...X vorliegt, wird der C.mant-Eingabeterm einfach als das Ausgabemontissenergebnis dargestellt. Die Exponentenlogik setzt das Exponentenergebnis auf 0 (oder BIAS), um den Ausgabewert innerhalb des richtigen Bereichs darzustellen.
  • Ein Bereich von [1/2, 1) entspricht einer Ausgabebinärzahl der Form 0,1XXXX...X. In dem Fall, dass die C.mant-Eingabe in der Form 1,XXX...X vorliegt, wird der C.mant-Eingabeterm einfach als das Ausgabemantissenergebnis dargestellt. Das Exponentenergebnis wird als -1 (oder BIAS -1) dargestellt, um den Ausgabewert innerhalb des angegebenen Bereiches bereitzustellen (d.h. eine numerische Zahl der Form 0,1XXXX ... X).
  • Ein Bereich von [1/2, 2) entspricht einer Ausgabebinärzahl der Form 0, 1XXX...X oder 1,XXXX...X. In dem Fall, dass die C.mant-Eingabe in der Form 1,XXX...X vorliegt, wird der C.mant-Eingabeterm einfach als das Ausgabemantissenergebnis dargestellt. Falls der C.mant-Eingabeterm in der Form 0,1XXX...X ist, wird der Exponent als -1 (oder BIAS -1) dargestellt, um das Ausgabeergebnis in dem korrekten numerischen Bereich bereitzustellen. Falls der C.mant-Eingabeterm in der Form 1,XXXX...X ist, wird der Exponent als 0 (oder BIAS) dargestellt, um das Ausgabeergebnis in dem korrekten numerischen Bereich bereitzustellen.
  • Ein Bereich von [3/4, 3/2) entspricht einer Ausgabebinärzahl der Form 0,11XXX...X oder 1,0XXX...X. In dem Fall, dass der C.mant-Eingabeterm in der Form 1.XXX...X vorliegt, wird der C.mant-Eingabeterm als Ausgabemantisseergebnis dargestellt. In dem Fall, dass der C.mant-Eingabeterm in der Form 1,0XXX...X ist, wird der Exponent als 0 (oder BIAS) dargestellt, um das Ausgabeergebnis in dem korrekten numerischen Bereich bereitzustellen. Falls der C.mant-Eingabeterm in der Form 1,1XXX...X ist, wird der Exponent als -1 (oder BIAS-1) dargestellt, um das Ausgabeergebnis in dem korrekten numerischen Bereich bereitzustellen.
  • Für jeden der obigen Befehle, bei dem der Eingabeterm denormal ist (d.h. einen fehlerbehafteten Exponententerm von 0 und eine Mantisse ungleich 0 in der Form 0,XXXX...X aufweist), wird der C.mant-Term durch die Linksverschiebungseinheit 211 unter der Steuerung des LZA 210 nach links verschoben, bis die erste führende 1 gefunden wird, was wiederum dem Darstellen der Ausgabe in der Form 1,XXXX...X entspricht (was die gewünschte Ausgabeform ist). Der korrekte Exponent wird anschließend wie oben für den anzuwendenden Bereich ermittelt.
  • REDUCE
  • Ein Flussdiagramm des REDUCE-Befehls ist in 7 gezeigt. REDUCE extrahiert das reduzierte Argument eines Eingabewertes gemäß der Beziehung R = X - Round(2MX)2-M. Hierbei ist M ein Skalierfaktor, der die Bitposition bestimmt, von der die Extraktion referenziert wurde. Ein Eingabewert gibt außerdem an, ob die Rundungsoperation ein Aufrunden, ein Abrunden oder ein Runden auf die nächste gerade Zahl ist. Beispielsweise ist, falls X = 1,01010101 ist und ein Abrunden mit einem Skalierfaktor von 3 angegeben wurde, Round(23X) = 1010,00000 und Round(23X)23 = 1,01000000. Somit ist X - Round (2MX) 2-M = 1,01010101 - 1,01000000 = 0,00010101. In diesem Fall wird R als 1,0101 mit einem Exponenten von Null ausgedrückt.
  • Unter Bezugnahme auf 2 erhält die Steuerlogik (nicht gezeigt) den Skalierparameter M als eine Eingabe mit dem Befehl. Der Wert X wird an dem C.mant.Input empfangen und durch die Linksverschiebungseinheit 204 unter der Steuerung der Steuerlogik nach links verschoben. Insbesondere veranlasst die Steuerlogik die Linksverschiebungseinheit 204, den Wert X um eine Anzahl binärer Stellen gleich dem Skalierparameter M nach links zu verschieben. Dies erzeugt den 2MX-Term. Die Operation wird dann, wie oben unter Bezugnahme auf den ROUND-Befehl beschrieben, fortgesetzt mit dem Unterschied, dass die Rechtsverschiebungseinheit 205 nicht verwendet wird, weil bei der vorliegenden Operation der Q-Parameter des ROUND-Befehls 0 ist.
  • In einer Ausführungsform ist die Rundungseinheit 217 fähig, einen weiteren Eingabeparameter von dem Befehl als Hinweis zu empfangen, ob sie aufrunden, abrunden oder auf die nächste gerade Zahl runden soll. Der Betrieb der Rundungseinheit für diese verschiedenen Modi verläuft, wie oben für den ROUND-Befehl beschrieben.
  • Nachdem die gerundete Antwort durch die Rundungseinheit 217 bereitgestellt wurde, wird sie durch die Rechtsverschiebungseinheit 205 um eine Anzahl von Dezimalstellen gleich dem Skalierparameter M nach rechts verschoben (insbesondere ist die Ausgabe des Runders 217 mit der Eingabe der Rechtsverschiebungseinheit 205 gekoppelt). Die Ausgabe der Rechtsverschiebungseinheit 205 entspricht ROUND (2MX) 2-M und wird an den Wallace-Baum 209 mit geeigneter Vorzeichenmanipulation übergeben, um dessen negative Darstellung umzusetzen. Der Multiplizierer empfängt den gleichen Eingabewert, der an der C.mant-Eingabe an einer seiner A.mant- oder B.mant-Eingaben empfangen wurde, und die andere Eingabe wird auf einen Wert von 1 festgesetzt. Somit stellt der Addierer 209 X-Round(2MX) 2-M bereit. Im Falle eines Aufrundens wird das Ergebnis des Addierers 209 negativ oder Null sein. Falls das Ergebnis negativ ist, veranlasst das LCA die Längsverschiebungseinheit 211, führende Einsen herauszuschieben. Im Falle eines Abrundens wird das Ergebnis des Addierers positiv oder Null sein. Falls das Ergebnis positiv ist, veranlasst das LCA die Linksverschiebungseinheit 211, führende Nullen herauszuschieben. Im Falle eines Rundens auf die nächste gerade Zahl könnte das Ergebnis des Addierers negativ, positiv oder Null sein. Das LCA 209 veranlasst das richtige Verschieben, wie oben für positive und negative Ergebnisse beschrieben wurde. Die Ausgabe wird anschließend von der Funktionseinheit bereitgestellt.
  • RANGE
  • Ein Flussdiagramm des RANGE-Befehls ist in 8 gezeigt. Der RANGE-Befehl akzeptiert zwei Werte F und G und gibt einen/eines der folgenden zurück: i) den minimalen Wert von F und G; ii) den maximalen Wert von F und G; iii) das Minimum des absoluten Wertes von F und des absoluten Wertes von G; und iv) das Maximum des absoluten Wertes von F und des absoluten Wertes von G. In einer Ausführungsform wird eine bestimmte Ermittlung gemäß i) bis iv) in dem Befehl zur Ausführung bestimmt. Unter Bezugnahme auf 2 wird in einer Ausführungsform für die obigen Befehle i) und ii) F als die C.mant-Eingabe und G als die A.mant-Eingabe bereitgestellt. Die B.mant-Eingabe wird auf einen Wert 1,0 gebracht. Der Vorzeichenterm für G wird gewechselt, um eine Berechnung F-G durch den Wallace-Baum und Addierer 209 umzusetzen. Der Vorzeichenterm für die Ausgabe des Addierers 209 zeigt an, welches von F und G größer ist. Insbesondere ist das positive F größer, falls der Vorzeichenterm positiv ist, oder das negative G ist größer, falls der Vorzeichenterm negativ ist. Somit wird im ersten Fall F als die Ausgabe geführt, und im zweiten Fall wird G als die Ausgabe geführt. Die Befehle iii) und iv) funktionieren ähnlich, außer dass die Vorzeichenterme für die F- und G-Werte als positive Werte interpretiert werden, bevor sie an den Multiplikator gesendet werden.
  • CLASS
  • Der CLASS-Befehl bestimmt einen Typ eines Operanden. In einer Ausführungsform entspricht der Befehl einem Test auf eine Vielzahl verschiedener Datentypen und ein spezielles Ausgabeformat, das im Wesentlichen einen Bitort für jeden Typ reserviert, und die Funktionseinheit setzt, falls der Operand einer der spezifischen getesteten Typen ist, eine 1 an den Bitort der Ausgabe, der dem Typ entspricht. In einer weiteren Ausführungsform gibt es acht verschiedene Datentypen, auf die getestet wird. Diese sind i) QNaN; ii) negativ endlich; iii) denormal; iv) negativ unendlich; v) positiv unendlich; vi) negativ Null; vii) positiv Null; viii) SNAN. In einer Ausführungsform nimmt die Steuerlogik innerhalb der Funktionseinheit (in 2 nicht gezeigt) die Bestimmung für einen Operanden vor, der an der C.mant-Eingabe dargestellt ist, und fertigt als Antwort das spezielle Ausgabeergebnis an.
  • BLENDSEM und FIXUPIMM
  • Dieser BLENDSEM-Befehl vereinigt bedingt das Vorzeichen, den Exponenten und die Matisse gepackter Gleitkommawerte in doppelter Präzision in einem zweiten Ursprungsoperanden sowie Vorzeichen, Exponenten und Mantisse aus gepackten Gleitkommawerten mit doppelter Präzision in einem ersten Ursprungsoperanden gemäß den entsprechenden unmittelbaren Bits [7:0]. Der resultierende gepackte Gleitkommawert mit doppelter Präzision wird in einem Zielregister gespeichert. Die unmittelbaren Bits [7:0] bestimmen, ob das entsprechende Vorzeichen, der Exponent und die Mantisse aus den Werten mit einfacher Präzision in einem zweiten Ursprungsoperanden oder in einem ersten Ursprungseoperanden zum Ziel kopiert werden muss. Spezielle Werte werden außerdem anhand der unmittelbaren Steuerung manipuliert.
  • Der FIXUPIMM-Befehl führt ein elementweises Korrigieren (fix-up) verschiedener realer und spezieller Zahlentypen in einem float64-Vektor zmm2 unter Verwendung von 32-Bit-Tabellenwerten eines int64-Vektors durch. Das Ergebnis wird in einem float64-Vektor zmm1 vereinigt. Dieser Befehl soll insbesondere der Verwendung beim Korrigieren der Ergebnisse arithmetischer Berechnungen dienen, die eine Eingabe enthalten, so dass sie der Spezifikation entsprechen, obwohl es allgemein nützlich ist, die Ergebnisse von Sequenzen mehrerer Befehle zu korrigieren, um Eingaben mit speziellen Zahlen Rechnung zu tragen. Beispielsweise ist rcp(0) zu betrachten. Eingabe 0 für rcp sowie das Ergebnis sollten INF sein. Jedoch ergibt ein Evaluieren von rcp über Newton-Raphson, wobei x=approx(1/0), ein inkorrektes Ergebnis. Um diesem zu begegnen, kann FIXUPIMM nach der reziproken N-R-Sequenz verwendet werden, um das Ergebnis auf den korrekten Wert zu setzen (d.h. INF, falls die Eingabe 0 ist). Denormale Eingabeoperanden zmm1 oder zmm2, werden als normale Eingaben betrachtet und lösen kein Korrigieren oder Fehlerberichten aus.
  • In einer Ausführungsform werden die BLENDSEM- und FIXUPIMM-Befehle auf einer anderen Funktionseinheit ausgeführt, die als „Misch‟ (Shuffle)-Funktionseinheit bezeichnet wird.
  • RCP14 und RSQRT14
  • Der RCP14-Befehl führt eine SIMD-Berechnung der näherungsweisen Reziproken der vier- bzw. zwei-gepackten Gleitkommawerte mit doppelter Präzision in dem Ursprungsoperanden (zweiter Operand) durch, [und] speichert die gepackten Gleitkommaergebnisse mit doppelter Präzision in dem Zieloperanden. Der maximale relative Fehler für diese Annäherung ist kleiner als 2-14. Der Ursprungsoperand kann ein ZMM-Register oder ein 512-Bit-Speicherort sein. Der Zieloperand ist ein ZMM-Register. Der RCP14PD-Befehl wird nicht durch das Runden von Steuerbits beeinflusst. Wenn ein Ursprungswert 0,0 ist, wird ein ∞ mit dem Vorzeichen des Ursprungsswertes zurückgegeben. Wenn ein Eingangswert ein SNaN oder QNAN ist, wird der SNaN zu einem QNaN umgewandelt oder der Eingangs-QNaN zurückgegeben.
  • Dieser RSQRT14-Befehl führt eine SIMD-Berechnung der angenäherten Reziproken der Quadratwurzeln der acht gepackten Gleitkommawerte mit doppelter Präzision in dem Ursprungsoperanden (zweiter Operand) durch und speichert die gepackten Gleitkommaergebnisse mit doppelter Präzision in dem Zieloperanden. Der maximale relative Fehler dieser Annäherung ist kleiner als 2-14. Der Ursprungsoperand kann ein ZMM-Register oder ein 512-Bit-Speicherort sein. Der Zieloperand ist ein ZMM-Register. Der RSQRT14PD-Befehl wird durch Runden von Steuerbits nicht beeinflusst. Wenn ein Ursprungswert 0,0 ist, wird ein ∞ mit dem Vorzeichen des Urprungswertes zurückgegeben. Wenn der Ursprungsoperand ein ∞ ist, wird Null mit dem Vorzeichen des Ursprungswerts zurückgegeben. Wenn ein Ursprungswert ein negativer Wert ist (anders als 0,0), wird eine unbestimmte Gleitkommazahl zurückgegeben. Wenn ein Ursprungswert ein SNaN oder QNaN ist, wird der SNaN zu einem QNaN umgewandelt oder der Eingangs-QNaN zurückgegeben.
  • In einer Ausführungsform werden die VRCP14- und VRSQRT14-Befehle auf einer anderen Funktionseinheit ausgeführt, die als „PFPROMS“-Funktionseinheit bezeichnet wird.
  • Ein Prozessor, der die oben beschriebene Funktionalität aufweist, kann auch in verschiedenen Rechensystemen implementiert sein. 9 zeigt eine Ausführungsform eines Rechensystems (beispielsweise eines Computers). Das beispielhafte Rechensystem der 9 enthält: 1) einen oder mehrere Prozessoren 901, die gestaltet sein können, einen Vektorlogik-Reduktionsbefehl zu enthalten; 2) ein Speicher-Control-Hub (Memory Control Hub (MCH)) 902; 3) einen Systemspeicher 903 (von dem verschiedene Typen existieren, wie etwa DDR-RAM, EDO-RAM, etc.); 4) einen Cache 904; 5) einen I/O-Control-Hub (ICH) 905; 6) einen Grafikprozessor 906; 7) einen Display-Bildschirm 907 (von dem unterschiedliche Typen existieren, wie etwa Kathodenstrahlröhre (CRT), Flachbildschirm, Dünnfilmtransistor (Thin Film Transistor (TFT)), Flüssigkristalldisplay (Liquid Crystal Display (LCD)), DPL, etc.) [und] einen oder mehrere I/O-Einrichtungen 908. Das Rechensystem kann außerdem ein Festplattenlaufwerk enthalten (nicht gezeigt).
  • Die ein oder mehreren Prozessoren 901 führen Befehle aus, um durchzuführen, was immer an Software-Routinen das Rechensystem implementiert. Die Befehle umfassen häufig irgendeine Art von Operation, die auf Daten durchgeführt wird. Sowohl Daten als auch Befehle werden im Systemspeicher 903 und Cache 904 gespeichert. Der Cache 904 ist typischerweise gestaltet, kürzere Latenzzeiten als der Systemspeicher 903 aufzuweisen. Beispielsweise könnte der Cache 904 auf den/dem gleichen Siliziumchip(s) wie die/der Prozessor(en) integriert sein und/oder mit schnelleren SRAM-Zellen konstruiert sein, während der Systemspeicher 903 mit langsameren DRAM-Zellen konstruiert sein könnte. Durch die Tendenz, häufig benutzte Befehle und Daten in dem Cache 904 zu speichern und nicht als in dem Systemspeicher 903, wird die Gesamtleistungseffizienz des Rechensystems gesteigert.
  • Der Systemspeicher 903 ist absichtlich anderen Komponenten innerhalb des Rechensystems zugänglich. Beispielsweise die Daten, die von verschiedenen Schnittstellen des Rechensystems (beispielsweise Tastatur und Maus, Druckeranschluss, LAN-Anschluss, Modemanschluss, etc.) empfangen oder von einem internen Speicherelement des Rechensystems (beispielsweise Festplattenlaufwerk) eingeholt werden, werden häufig vorübergehend im Systemspeicher 903 eingereiht, bevor auf ihnen durch einen oder mehrere Prozessor(en) 901 in der Implementation eines Software-Programms gearbeitet wird. In ähnlicher Weise sollten Daten, die ein Software-Programm bestimmt, von dem Rechensystem durch eine der Rechensystemschnittstellen an eine Außeneinheit gesendet oder in einem internen Speicherelement gespeichert werden, [die Daten] werden häufig vorübergehend im Systemspeicher 903 eingereiht, bevor sie übertragen oder gespeichert werden.
  • Der ICH 905 ist verantwortlich, sicherzustellen, dass solche Daten angemessen zwischen dem Systemspeicher 903 und seiner geeigneten entsprechenden Rechensystemschnittstelle übergeben werden (und der internen Speichervorrichtung, falls das Rechensystem derart gestaltet ist) übergeben werden. Der MCH 902 ist verantwortlich, die verschiedenen konkurrierenden Anforderungen nach Zugriff auf Systemspeicher 903 unter dem/den Prozessor(en) 901, Schnittstellen und internen Speicherelementen zu verwalten, die zeitlich nacheinander auftreten können.
  • Eine oder mehrere I/O-Vorrichtungen 908 werden ebenfalls in einem typischen Rechensystem implementiert. I/O-Vorrichtungen sind allgemein verantwortlich zum Übertragen von Daten an und/oder von dem Rechensystem (beispielsweise einen Netzwerkadapter); oder für großangelegtes nichtflüchtiges Speichern innerhalb des Rechensystems (beispielsweise Festplattenlaufwerk). ICH 905 weist bidirektionale Punktzu-Punkt-Verbindungen zwischen sich selbst und den beobachteten I/O-Vorrichtungen 908 auf.
  • In der vorangehenden Beschreibung wurde die Erfindung unter Bezugnahme auf spezifische beispielhafte Ausführungsformen derselben beschrieben. Es versteht sich jedoch, dass verschiedene Modifikationen und Änderungen daran vorgenommen werden können, ohne aus dem breiteren Geist und Schutzbereich der Erfindung zu gelangen, wie er in den beigefügten Ansprüchen dargelegt ist. Die Beschreibung und Zeichnungen sind somit in einem beispielhaften anstatt einem beschränkenden Sinne zu betrachten.

Claims (17)

  1. Prozessor, umfassend: eine Funktionseinheit, die eine Exponentendifferenzlogik (203), einen Multiplizierer (206) und einen Addierer (209) zum Unterstützen eines Multiplizieraddierbefehls aufweist, wobei die Funktionseinheit außerdem eine Rundungseinheit (217) zum Unterstützen eines Rundungsbefehls aufweist, der/die angibt, auf wie viele Binärstellen ein Mantissenwert gerundet werden soll, wobei die Exponentendifferenzlogik (203) eine Verschiebungseinheit (205) zum Unterstützen der Ausführung des Multiplizieraddierbefehls und des Rundungsbefehls aufweist; wobei die Exponentendifferenzlogik (203) eingerichtet ist, einen Mantissenterm eines Eingabewerts zu verschieben, um ihn an eine Teilproduktsummierung anzulegen, wenn ein Multiplizieraddierbefehl ausgeführt wird; und wobei die Exponentendifferenzlogik (203) ferner eingerichtet ist, einen Mantissenterm eines Eingabewerts zu verschieben, wenn ein Rundungsbefehl ausgeführt wird, wobei Nachkommaterme geringer Ordnung weggelassen werden, und wobei Runden des Eingabewerts anhand der weggelassenen Nachkommaterme geringerer Ordnung durchgeführt wird.
  2. Prozessor nach Anspruch 1, dadurch gekennzeichnet, dass die Verschiebungseinheit (205) außerdem einen Skalierbefehl unterstützt, der durch die Funktionseinheit ausgeführt werden soll.
  3. Prozessor nach Anspruch 2, dadurch gekennzeichnet, dass die Exponentendifferenzberechnungslogik (203) eine zweite Verschiebungseinheit (204) zum Unterstützen der Ausführung des Multiplizieraddierbefehls aufweist, wobei die zweite Verschiebungseinheit (204) außerdem einen Befehl zum Einholen eines Exponenten unterstützt, der auf der Funktionseinheit ausgeführt werden soll.
  4. Prozessor nach Anspruch 1, dadurch gekennzeichnet, dass die Exponentendifferenzberechnungslogik (203) eine zweite Verschiebungseinheit (204) zum Unterstützen der Ausführung des Multiplizieraddierbefehls aufweist, wobei die zweite Verschiebungseinheit (204) außerdem einen Befehl zum Einholen eines Exponenten unterstützt, der auf der Funktionseinheit ausgeführt werden soll.
  5. Prozessor nach Anspruch 4, dadurch gekennzeichnet, dass die erste Verschiebungseinheit (205), die zweite Verschiebungseinheit (204) und die Rundungseinheit (217) außerdem einen Reduzierbefehl unterstützen, der auf der Funktionseinheit ausgeführt werden soll.
  6. Prozessor nach Anspruch 1, dadurch gekennzeichnet, dass die erste Verschiebungseinheit (205) und die Rundungseinheit (217) außerdem einen Reduzierbefehl unterstützen, der auf der Funktionseinheit ausgeführt werden soll.
  7. Verfahren, umfassend: Ausführen eines ersten Befehls mit einer Funktionseinheit, wobei der erste Befehl ein Multiplizieraddierbefehl ist, wobei ein Mantissenterm eines Eingabewerts durch eine Exponentendifferenzlogik (203) verschoben wird, um den Mantissenterm an eine Teilproduktsummierung anzulegen; und Ausführen eines zweiten Befehls mit der Funktionseinheit, wobei der zweite Befehl ein Rundungsbefehl ist; wobei ein Mantissenterm eines Eingabewerts durch die Exponentendifferenzlogik (203) verschoben wird, wobei Nachkommaterme geringerer Ordnung weggelassen werden, und wobei der Eingabewert anhand der weggelassenen Nachkommaterme gerundet wird.
  8. Verfahren nach Anspruch 7, ferner umfassend Ausführen eines dritten Befehls mit der Funktionseinheit, wobei der dritte Befehl ein Skalierbefehl ist.
  9. Verfahren nach Anspruch 8, ferner umfassend Ausführen eines vierten Befehls mit der Funktionseinheit, wobei der vierte Befehl ein Befehl zum Einholen von Exponenten ist.
  10. Verfahren nach Anspruch 9, ferner umfassend Ausführen eines fünften Befehls mit der Funktionseinheit, wobei der fünfte Befehl ein Reduzierbefehl ist.
  11. Verfahren nach Anspruch 10, ferner umfassend Ausführen eines sechsten Befehls mit der Funktionseinheit, wobei der sechste Befehl ein Befehl zum Einholen von Mantissen ist.
  12. Verfahren nach Anspruch 11, ferner umfassend Ausführen eines siebten Befehls mit der Funktionseinheit, wobei der siebte Befehl ein Bereichsbefehl ist.
  13. Rechensystem, umfassend: ein Festplattenlaufwerk; einen Prozessor, wobei der Prozessor eine Funktionseinheit aufweist, wobei die Funktionseinheit eine Exponentendifferenzlogik (203), einen Multipli-zierer (206) und einen Addierer (209) aufweist, um einen Multiplizieraddierbefehl zu unterstützen, wobei die Funktionseinheit außerdem eine Rundungseinheit (217) zum Unterstützen eines Rundungsbefehls aufweist, der angibt, auf wie viele Binärstellen ein Mantissenwert gerundet werden soll, wobei die Exponentendifferenzlogik (203) eine Verschiebungseinheit (205) aufweist, um Ausführung des Multiplizieraddierbefehls und des Rundungsbefehls zu unterstützen; wobei die Exponentendifferenzlogik (203) eingerichtet ist, einen Mantissenterm eines Eingabewerts zu verschieben, um ihn an eine Teilproduktsummierung anzulegen, wenn ein Multiplizieraddierbefehl ausgeführt wird; und wobei die Exponentendifferenzlogik (203) ferner eingerichtet ist, einen Mantissenterm eines Eingabewerts zu verschieben, wenn ein Rundungsbefehl ausgeführt wird, wobei Nachkommaterme geringer Ordnung weggelassen werden, und wobei Runden des Eingabewerts anhand der weggelassenen Nachkommaterme geringerer Ordnung durchgeführt wird.
  14. Rechensystem nach Anspruch 13, dadurch gekennzeichnet, dass die Verschiebungseinheit (205) außerdem einen Skalierbefehl unterstützt, der auf der Funktionseinheit ausgeführt werden soll.
  15. Rechensystem nach Anspruch 14, dadurch gekennzeichnet, dass die Exponentendifferenzlogik (203) eine zweite Verschiebungseinheit (204) aufweist, um Ausführung des Multiplizieraddierbefehls zu unterstützen, wobei die zweite Verschiebungseinheit (204) außerdem einen Befehl zum Einholen von Exponenten unterstützt, der auf der Funktionseinheit ausgeführt werden soll.
  16. Rechensystem nach Anspruch 13, dadurch gekennzeichnet, dass die Exponentendifferenzlogik (203) eine zweite Verschiebungseinheit (204) aufweist, um Ausführung des Multiplizieraddierbefehls zu unterstützen, wobei die zweite Verschiebungseinheit (204) außerdem einen Befehl zum Einholen von Exponenten unterstützt, der auf der Funktionseinheit ausgeführt werden soll.
  17. Rechensystem nach Anspruch 16, dadurch gekennzeichnet, dass die erste Verschiebungseinheit (205), die zweite Verschiebungseinheit (204) und die Rundungseinheit (217) außerdem einen Reduzierbefehl unterstützen, der auf der Funktionseinheit ausgeführt werden soll.
DE112011103206.4T 2010-09-24 2011-09-23 Prozessor und Rechensystem mit einer Multiplizieraddierfunktionseinheit zum Ausführen von Scale-, Round-, Getexp-, Round-, Getmant-, Reduce-, Range- und Class-Befehlen und Verfahren hierfür Active DE112011103206B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/890,543 2010-09-24
US12/890,543 US8914430B2 (en) 2010-09-24 2010-09-24 Multiply add functional unit capable of executing scale, round, GETEXP, round, GETMANT, reduce, range and class instructions
PCT/US2011/053094 WO2012040632A2 (en) 2010-09-24 2011-09-23 Multiply add functional unit capable of executing scale, round, getexp, round, getmant, reduce, range and class instructions

Publications (2)

Publication Number Publication Date
DE112011103206T5 DE112011103206T5 (de) 2013-10-10
DE112011103206B4 true DE112011103206B4 (de) 2021-02-18

Family

ID=45871876

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112011103206.4T Active DE112011103206B4 (de) 2010-09-24 2011-09-23 Prozessor und Rechensystem mit einer Multiplizieraddierfunktionseinheit zum Ausführen von Scale-, Round-, Getexp-, Round-, Getmant-, Reduce-, Range- und Class-Befehlen und Verfahren hierfür

Country Status (8)

Country Link
US (4) US8914430B2 (de)
JP (1) JP5684393B2 (de)
KR (1) KR101533516B1 (de)
CN (1) CN106528044A (de)
DE (1) DE112011103206B4 (de)
GB (1) GB2497469B (de)
TW (1) TWI544413B (de)
WO (1) WO2012040632A2 (de)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8914430B2 (en) 2010-09-24 2014-12-16 Intel Corporation Multiply add functional unit capable of executing scale, round, GETEXP, round, GETMANT, reduce, range and class instructions
US10209986B2 (en) 2011-12-22 2019-02-19 Intel Corporation Floating point rounding processors, methods, systems, and instructions
CN108647044B (zh) 2011-12-28 2022-09-13 英特尔公司 浮点缩放处理器、方法、系统和指令
WO2013101233A1 (en) 2011-12-30 2013-07-04 Intel Corporation Floating point round-off amount determination processors, methods, systems, and instructions
US8924454B2 (en) 2012-01-25 2014-12-30 Arm Finance Overseas Limited Merged floating point operation using a modebit
US10289412B2 (en) * 2012-02-09 2019-05-14 Qualcomm Incorporated Floating point constant generation instruction
US9542154B2 (en) * 2013-06-25 2017-01-10 Intel Corporation Fused multiply add operations using bit masks
WO2015116176A1 (en) * 2014-01-31 2015-08-06 Hewlett-Packard Development Company, L.P. Device provided script to convert command
US10489114B2 (en) * 2014-06-27 2019-11-26 International Business Machines Corporation Shift amount correction for multiply-add
CN106293610B (zh) 2014-07-02 2019-03-15 上海兆芯集成电路有限公司 微处理器及其方法
US11061672B2 (en) 2015-10-02 2021-07-13 Via Alliance Semiconductor Co., Ltd. Chained split execution of fused compound arithmetic operations
WO2017184011A1 (en) * 2016-04-21 2017-10-26 Oracle International Corporation Iterative division with reduced latency
US10078512B2 (en) * 2016-10-03 2018-09-18 Via Alliance Semiconductor Co., Ltd. Processing denormal numbers in FMA hardware
CN106775587B (zh) * 2016-11-30 2020-04-14 上海兆芯集成电路有限公司 计算机指令的执行方法以及使用此方法的装置
US20180173527A1 (en) * 2016-12-15 2018-06-21 Optimum Semiconductor Technologies, Inc. Floating point instruction format with embedded rounding rule
US11366663B2 (en) 2018-11-09 2022-06-21 Intel Corporation Systems and methods for performing 16-bit floating-point vector dot product instructions
CN109840067B (zh) * 2019-01-14 2021-04-20 中国人民解放军国防科技大学 一种基于数学近似的浮点程序精度缺陷修复方法
US11625244B2 (en) * 2021-06-22 2023-04-11 Intel Corporation Native support for execution of get exponent, get mantissa, and scale instructions within a graphics processing unit via reuse of fused multiply-add execution unit hardware logic
TWI794967B (zh) * 2021-09-10 2023-03-01 臺灣發展軟體科技股份有限公司 資料處理電路及故障修補方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6360189B1 (en) * 1998-05-27 2002-03-19 Arm Limited Data processing apparatus and method for performing multiply-accumulate operations

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63189936A (ja) 1987-02-03 1988-08-05 Fujitsu Ltd 浮動少数点乗算装置
US5673407A (en) * 1994-03-08 1997-09-30 Texas Instruments Incorporated Data processor having capability to perform both floating point operations and memory access in response to a single instruction
US5598362A (en) * 1994-12-22 1997-01-28 Motorola Inc. Apparatus and method for performing both 24 bit and 16 bit arithmetic
GB2338094B (en) * 1998-05-27 2003-05-28 Advanced Risc Mach Ltd Vector register addressing
US7346643B1 (en) 1999-07-30 2008-03-18 Mips Technologies, Inc. Processor with improved accuracy for multiply-add operations
US6996596B1 (en) 2000-05-23 2006-02-07 Mips Technologies, Inc. Floating-point processor with operating mode having improved accuracy and high performance
US6738795B1 (en) 2000-05-30 2004-05-18 Hewlett-Packard Development Company, L.P. Self-timed transmission system and method for processing multiple data sets
CA2327924A1 (en) * 2000-12-08 2002-06-08 Ibm Canada Limited-Ibm Canada Limitee Processor design for extended-precision arithmetic
US20060047738A1 (en) * 2004-08-31 2006-03-02 International Business Machines Corporation Decimal rounding mode which preserves data information for further rounding to less precision
US7499962B2 (en) 2004-12-21 2009-03-03 Intel Corporation Enhanced fused multiply-add operation
US7401107B2 (en) 2004-12-22 2008-07-15 Arm Limited Data processing apparatus and method for converting a fixed point number to a floating point number
US7461117B2 (en) 2005-02-11 2008-12-02 International Business Machines Corporation Floating point unit with fused multiply add and method for calculating a result with a floating point unit
US7720900B2 (en) 2005-09-09 2010-05-18 International Business Machines Corporation Fused multiply add split for multiple precision arithmetic
US9223751B2 (en) 2006-09-22 2015-12-29 Intel Corporation Performing rounding operations responsive to an instruction
EP2110740B1 (de) 2007-02-09 2013-05-29 Fujitsu Limited Berechnungsprozessor, informationsprozessor und berechnungsverfahren
CN101021832A (zh) * 2007-03-19 2007-08-22 中国人民解放军国防科学技术大学 支持局部寄存和条件执行的64位浮点整数融合运算群
US8838663B2 (en) * 2007-03-30 2014-09-16 Intel Corporation Method and apparatus for performing multiplicative functions
US7917568B2 (en) * 2007-04-10 2011-03-29 Via Technologies, Inc. X87 fused multiply-add instruction
CN101174200B (zh) * 2007-05-18 2010-09-08 清华大学 一种具有五级流水线结构的浮点乘加融合单元
CN101221490B (zh) * 2007-12-20 2010-11-10 清华大学 一种具有数据前送结构的浮点乘加单元
US8032854B2 (en) 2008-08-29 2011-10-04 International Business Machines Corporation 3-stack floorplan for floating point unit
CN101692202B (zh) * 2009-09-27 2011-12-28 龙芯中科技术有限公司 一种64比特浮点乘加器及其浮点运算流水节拍处理方法
US8914430B2 (en) 2010-09-24 2014-12-16 Intel Corporation Multiply add functional unit capable of executing scale, round, GETEXP, round, GETMANT, reduce, range and class instructions

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6360189B1 (en) * 1998-05-27 2002-03-19 Arm Limited Data processing apparatus and method for performing multiply-accumulate operations

Also Published As

Publication number Publication date
US10318244B2 (en) 2019-06-11
US20170199726A1 (en) 2017-07-13
CN106528044A (zh) 2017-03-22
TW201224922A (en) 2012-06-16
JP2013543176A (ja) 2013-11-28
KR20130079511A (ko) 2013-07-10
US20120079251A1 (en) 2012-03-29
US9606770B2 (en) 2017-03-28
CN103119532A (zh) 2013-05-22
US10649733B2 (en) 2020-05-12
GB2497469A (en) 2013-06-12
WO2012040632A2 (en) 2012-03-29
WO2012040632A3 (en) 2012-05-18
US20150088947A1 (en) 2015-03-26
JP5684393B2 (ja) 2015-03-11
US8914430B2 (en) 2014-12-16
GB2497469B (en) 2019-06-05
GB201304865D0 (en) 2013-05-01
KR101533516B1 (ko) 2015-07-02
US20190361676A1 (en) 2019-11-28
TWI544413B (zh) 2016-08-01
DE112011103206T5 (de) 2013-10-10

Similar Documents

Publication Publication Date Title
DE112011103206B4 (de) Prozessor und Rechensystem mit einer Multiplizieraddierfunktionseinheit zum Ausführen von Scale-, Round-, Getexp-, Round-, Getmant-, Reduce-, Range- und Class-Befehlen und Verfahren hierfür
DE19540102C2 (de) Verfahren und Gleitkomma-Recheneinheit mit einer Logik für eine Vierfach-Präzisions-Arithmetik
DE102008059371B9 (de) Funktionseinheit für verschmolzenes Multiplizieren und Addieren
DE112012005014B4 (de) Verfahren zum Ausführen arithmetischer Operationen unter Verwendung sowohl von großen als auch kleinen Gleitkommawerten und Vorrichtung sowie Computerprogrammprodukt hierfür
DE112011103196T5 (de) Funktionseinheit für eine Multiply-ADD-Anweisung für ganzzahlige Vektoren
DE112008002158B4 (de) Verfahren und System zur Multiplikation großer Zahlen
DE19735350B4 (de) Vektorprozessor zum Ausführen paralleler Operationen und Verfahren hierfür
DE112007001989B4 (de) Ausführung von Rundungsoperationen entsprechend einer Anweisung
DE4414172C2 (de) Gleit-Komma-Arithmetikeinheit und Verfahren zur Division und Quadratwurzelberechnung, die eine modifizierte Newton-Raphson Technik verwendet
DE102019114243A1 (de) Architektur für tiefe neuronale Netze unter Verwendung stückweiser linearer Approximation
DE69233361T2 (de) Ein-Chip-Mikrocomputer
DE112011103195T5 (de) Funktionseinheit zur Berechnung von führenden Nullen von Vektoren, von abschließenden Nullen von Vektoren, der Anzahl von Einsen von Vektoroperanden und der Vektorparität
DE102009030525A1 (de) Effizientes Paralleles Behandeln von Gleitkomma-Ausnahmen in einem Prozessor
DE102009051288A1 (de) Befehl und Logik zur Ausführung von Bereichserkennung
DE112012003864T5 (de) Mehrfach adressierbare Registerdateien und dazugehörige Formatumwandlungen
DE112011103211T5 (de) Auf einem Halbleiterchip implementierte vektorlogische Reduktionsoperation
DE102018110607A1 (de) Verallgemeinerte Beschleunigung von Matrix-Multiplikations-und-Akkumulations-Operationen
DE102014100108A1 (de) Festkomma-divisionschaltung unter verwendung einer gleitkomma-architektur
EP1499954B1 (de) Berechnung eines ergebnisses einer modularen multiplikation
DE102014002510A1 (de) Präzise Ausnahmesignalisierung für Mehrfachdatenarchitektur
DE112016005521T5 (de) Multifunktionale Ausführungsbahn für Bildprozessor
DE19735349B4 (de) Vektorprozessor und Verfahren zu dessen Betrieb
DE10303053B4 (de) Prozessorarchitektur mit einem Array von Pipelines und einer Registerdatei zum Vermeiden von Datenrisiken und Verfahren zur Datenweiterleitung in einer derartigen Prozessorarchitektur
DE68926289T2 (de) Gleitkommadivisions-Verfahren und -Anordnung
DE102013212840B4 (de) Modellberechnungseinheit und Steuergerät zur Berechnung eines datenbasierten Funktionsmodells mit Daten in verschiedenen Zahlenformaten

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06F0001000000

Ipc: G06F0007380000

R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final
R081 Change of applicant/patentee

Owner name: TAHOE RESEARCH, LTD., IE

Free format text: FORMER OWNER: INTEL CORPORATION, SANTA CLARA, CALIF., US

R082 Change of representative

Representative=s name: DENNEMEYER & ASSOCIATES S.A., DE