DE112007001989B4 - Ausführung von Rundungsoperationen entsprechend einer Anweisung - Google Patents
Ausführung von Rundungsoperationen entsprechend einer Anweisung Download PDFInfo
- Publication number
- DE112007001989B4 DE112007001989B4 DE112007001989.1T DE112007001989T DE112007001989B4 DE 112007001989 B4 DE112007001989 B4 DE 112007001989B4 DE 112007001989 T DE112007001989 T DE 112007001989T DE 112007001989 B4 DE112007001989 B4 DE 112007001989B4
- Authority
- DE
- Germany
- Prior art keywords
- rounding
- instruction
- processor
- value
- rounding mode
- 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
Links
- 238000000034 method Methods 0.000 claims abstract description 17
- 230000001629 suppression Effects 0.000 claims abstract description 14
- 230000015654 memory Effects 0.000 description 16
- 238000010586 diagram Methods 0.000 description 6
- 229910003460 diamond Inorganic materials 0.000 description 3
- 239000010432 diamond Substances 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 230000003190 augmentative effect Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000001464 adherent effect Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
- G06F9/30014—Arithmetic instructions with variable precision
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30025—Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
- G06F9/30167—Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
- G06F9/30185—Instruction operation extension or modification according to one or more bits in the instruction, e.g. prefix, sub-opcode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/499—Denomination or exception handling, e.g. rounding or overflow
- G06F7/49942—Significance control
- G06F7/49947—Rounding
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Nonlinear Science (AREA)
- Executing Machine-Instructions (AREA)
- Complex Calculations (AREA)
- Advance Control (AREA)
Abstract
Empfangen (110) einer Nutzerebenenrundungsanweisung einer Befehlssatzarchitektur (ISA) und eines Immediate-Wertes in einem Prozessor;
Bestimmen (115), ob ein in dem Immediate-Wert enthaltener Rundungsmodusübersteuerungsindikator aktiv ist; und
wenn ja, Erhalten eines in dem Immediate-Wert enthaltenen Rundungsmodusfeldes, wobei das Rundungsmodusfeld vom Übersteuerungsindikator getrennt ist, und um einen von einer Mehrzahl von Rundungsmodi anzuzeigen;
Ausführen (130) einer Rundungsoperation an einem Quelloperanden in einer Gleitkommaeinheit des Prozessors entsprechend der Nutzerebenenrundungsanweisung und gemäß einem Rundungsmodus im in dem Immediate-Wert enthaltenen Rundungsmodusfeld; und
Unterdrücken einer Präzisionsausnahme, die aus der Rundungsoperation resultiert, wenn ein vom Rundungsmodusübersteuerungsindikator und dem Rundungsmodusfeld getrennter Präzisionsunterdrückungsindikator, der in dem Immediate-Wert enthalten ist, aktiv ist und, falls der Präzisionsunterdrückungsindikator nicht aktiv ist, und während der Rundungsoperation die Präzisionsausnahme aufgetreten ist, Setzen eines Präzisionsausnahme-Flags in einem Statusregister des Prozessors.
Description
- Hintergrund der Erfindung
- Prozessoren führen verschiedene mathematische Operationen an Daten aus. Die Daten können von verschiedenen Typen sein, umfassend beispielsweise ganzzahlige Werte und Gleitkomma(GK)-Werte mit unterschiedlicher intrinsischer Genauigkeit. Wenn mit GK-Werten gearbeitet wird, ist es möglich, dass ein Ergebnis einer mathematischen Operation beispielsweise einer Multiplikation oder einer Addition neben anderen solchen Operationen, ein Ergebnis erzeugt, welches in ein Format mit niedrigerer Genauigkeit konvertiert werden muss. Entsprechend kann eine Rundungsoperation ausgeführt werden, um das GK-Ergebnis zu runden.
- Während solche Rundungsoperationen als Bestandteil von verschiedenen mathematischen Operationen ausgeführt werden können, ist es in einigen Prozessorarchitekturen begrenzt oder gar nicht möglich, eine Rundungsoperation an einem Datenelement als eine Einzeloperation oder ohne das Erfordernis von mehreren komplexen Schritten auszuführen. Beispielsweise kann ein Prozessor konfiguriert sein, einen GK-Wert zu einem ganzzahligen Wert entsprechend einem Standardrundungsmodus zu runden. Trotzdem muss ein gegebener Quelloperand entsprechend einem anderen Modus aufgrund von verschiedenen Gründen gerundet werden. Um solch eine Operation auszuführen, können verschachtelte Schritte zum Speichern eines aktuellen Konfigurationszustandes des Prozessors, Laden eines neuen Konfigurationszustandes, welcher Informationen bezüglich des gewünschten Rundungsmodus umfasst, Ausführen der Rundungsoperation und Wiederherstellen des ursprünglichen Prozessorzustandes auftreten. Diese Operationen können Zeit verbrauchend sein, erhöhen die Komplexität und verbrauchen zu viele Prozessorzyklen. Weiterhin treten in einem Prozessor ausgeführte Rundungsoperationen typischerweise entsprechend einer begrenzten Anzahl von Rundungsmodi auf, insbesondere solche gemäß dem „Institute of Electrical and Electronics Engineers (IEEE)“-Standard 754-1985 (veröffentlicht 1985), obwohl auch neue Programmiersprachen entwickelt werden, kann eine Unterstützung für andere Rundungsmodi wünschenswert sein.
-
US 5 696 709 A offenbart ein Computersystem mit einem Standard-Fließkomma-Rundungsmodus, der von einem durch einen Befehl festgelegten Rundungsmodus übersteuert werden kann. -
US 6 058 410 A offenbart eine Vorrichtung und ein Verfahren zum Auswählen eines Rundungsmodus für eine numerische Operation. - In „Guide to Assembly Language Programming in Linux", New York, Springer, 2005, S.443 - 458 von Dandamudi, Siwarama P. haben im Kapitel 22 „Floating-Point Operations", Befehle sowie die Register von Fließeinheiten beschrieben.
- Die
US 5 812 439 A befasst sich mit Anweisungen, die Gleitkommainformationen aufweisen. - Die Gleitkommainformationen zeigen an, ob gewisse Ausnahmen auftreten sollen und welche Art zu runden beim Auftreten ungenauer arithmetischer Ergebnisse verwendet werden sollen.
- Es ist die Aufgabe der vorliegenden Erfindung ein verbessertes Verfahren für Rundungsoperationen, mit dem die Notwendigkeit zur Ausführung verschiedener Operationen verhindert werden kann, sowie einen entsprechenden Prozessor bereitzustellen.
- Die Aufgabe wird gelöst durch ein Verfahren mit den Merkmalen gemäß dem Hauptanspruch 1 sowie durch einen Prozessor mit den Merkmalen gemäß Anspruch 4. Ausführungsformen der Erfindung sind in den Unteransprüchen angegeben.
- Figurenliste
-
-
1 ist ein Flussdiagramm eines Verfahrens gemäß einer Ausführungsform der Erfindung. -
2 ist ein Blockdiagramm eines Teils eines Prozessors gemäß einer Ausführungsform der Erfindung. -
3 ist ein Blockdiagramm eines direkten Datenelementes, welches in Verbindung mit einer Anweisung gemäß einer Ausführungsform der Erfindung verwendet wird. -
4 ist ein Flussdiagramm eines Verfahrens zum Ausführen einer Rundungsoperation gemäß einer Ausführungsform der Erfindung. -
5 ist ein Blockdiagramm eines Systems gemäß einer Ausführungsform der Erfindung. - Detaillierte Beschreibung
- In verschiedenen Ausführungsformen können mehrere Rundungsanweisungen einer Befehlssatzarchitektur (ISA) verwendet werden, um Rundungsoperationen in einem Prozessor effizient auszuführen, beispielsweise in einer Gleitkommaeinheit (FPU) des Prozessors. Zusätzlich zu Rundungsmodi gemäß dem „Institute of Electrical and Electronics Engineers“(IEEE)-Standard 754-1985 (veröffentlicht 1985) (hier der IEEE-Standard für binäre Gleitkommaarithmetik oder IEEE std 754) können Ausführungsformen zum Ausführen von Rundungsoperationen gemäß den zusätzlichen Rundungsmodi verwendet werden. Beispielsweise können in einigen Ausführungsformen Anweisungen eine Unterstützung für Rundungsoperationen von „halbwegs weg von Null“ und „weg von Null“ zur Verfügung stellen, wie unten beschrieben. Zusätzlich können diese Rundungsoperationen mit vielen Datentypen verwendet werden. In einigen Implementationen können Rundungsoperationen an Einzelanweisungmultidaten (SIMD)-Datentypen ausgeführt werden, so dass eine Anweisung an erweiterten Datentypen ausgeführt werden kann, beispielsweise gepackte Datenelemente, in welchen mehrere Datenelemente an einem einzelnen Ort gepackt sind, beispielsweise in einem erweiterten Register eines Prozessors.
- Um Flexibilität zu zeigen und eine effiziente Anweisungsausführung bereitzustellen, können Ausführungsformen ISA-basierte Anweisungen zur Verfügung stellen, welche an einem Quelloperanden ausgeführt werden können. Diese ISA-basierten Anweisungen können verschiedene Implementationen von Rundungsoperationen sein, um eine Rundung zu einer nächsten Ganzzahl eines Quelloperanden auszuführen. Solche Quelloperanden können bereits in einem Format mit begrenzter Genauigkeit sein (beispielsweise nicht das Ergebnis einer arithmetischen Operation, aber vielmehr Daten gelesen von einem Register/Speicher). Solche Anweisungen können für verschiedene Anwendungen verwendet werden, umfassend Multimediaanwendungen, Spielanwendungen usw. Zusätzlich können Ausführungsformen in Compiler basierten Primitiven implementiert werden, um Rundungsoperationen zu ermöglichen, welche für verschiedene Programmiersprachen anwendbar sein können. Es sei angemerkt, dass in verschiedenen Ausführungsformen die Rundungsanweisungen eine Gleitkommazahl als einen Quelloperanden nehmen können, ihn zu dem nächsten ganzzahligen Wert runden und das Ergebnis auch als einen Gleitkommawert mit einem ganzzahligen Wert speichern.
- In verschiedenen Ausführungsformen kann die Steuerung der Ausführung zumindest teilweise verarbeitet werden basierend auf Informationen, welche mit der Instruktion erhalten werden, beispielsweise direkte Daten, welche mit der Anweisung erhalten werden. In verschiedenen Implementationen können solche direkte Daten einen Standardrundungsmodus übersteuern, welcher aktuell mittels des Prozessors verwendet wird. In solchen Übersteuerungsfällen können die direkten Werte zusätzlich eine Steuerung des Rundungsmodus bereitstellen. Weiterhin zusätzlich können die direkten Werte zum Übersteuern von Genauigkeitsausnahmen verwendet werden (beispielsweise Genauigkeitsunterdrückung). Folglich können direkte Werte verwendet werden, um eine unkritische Steuerung einer bestimmten Rundungsoperation bereitzustellen, so dass die Operation mit minimalen Zyklen ausgeführt werden kann. Das kann so sein, wenn der direkte Wert, welcher in Verbindung mit einer Instruktion erhalten wird, eine Rundungssteuerungsinfomation umfasst Dann gibt es kein Bedürfnis solche Informationen zu aktualisieren, welche in einem Konfigurationsregister präsent sind, beispielsweise einem erweiterten Steuerungs- und Statusregister (CFSR) beispielsweise der Multimediaerweiterung CFSR (MXCSR), die in einem Prozessor gemäß der Intel® Architektur (beispielsweise einer IA-32 Architektur) vorhanden ist. Trotzdem sollte verstanden sein, dass die Ausführungsformen in verschiedenen Prozessortypen verwendet werden können und der Umfang der Erfindung diesbezüglich nicht begrenzt ist.
- Bezugnehmend auf
1 , ist ein Flussdiagramm eines Verfahrens gemäß einer Ausführungsform der Erfindung gezeigt. Wie in1 gezeigt, beginnt ein Verfahren100 durch Empfangen einer Rundungsanweisung und assoziierter direkter Werte innerhalb eines Prozessors (Block110 ). Beispielsweise kann in verschiedenen Implementationen eine Anweisung auf Benutzerebene verwendet werden, beispielsweise kann eine Anweisung von einem ISA in einem Prozessor empfangen werden. Zusätzlich zu der Anweisung können direkte Daten damit bereitgestellt werden. Wie weiter unten beschrieben wird, können solche direkten Daten mehrere Felder umfassen, um verschiedene Aspekte der Operation zu steuern. - Weiterhin bezugnehmend auf
1 , geht die Steuerung vom Block110 zur Raute115 über. An der Raute115 kann bestimmt werden, ob der direkte Wert einen Rundungsmodus eines Konfigurationsregisters übersteuert. Das heißt, ein Feld des direkten Wertes kann einen Übersteuerungsindikator umfassen, welcher anzeigt, ob ein Standardrundungsmodus übersteuert werden muss. In verschiedenen Ausführungsformen kann ein solcher Standardrundungsmodus in einem Feld eines Konfigurationsregisters vorhanden sein, beispielsweise ein CSR, beispielsweise der MXCSR, obwohl der Umfang der Erfindung diesbezüglich nicht begrenzt ist. Wenn der direkte Wert einen Übersteuerungsindikator umfasst, wird die Steuerung zum Block120 übergeben. Am Block120 kann ein Quelloperand, welcher mittels der Anweisung identifiziert wird, abgeschickt werden, beispielsweise zu einer Gleitkommeinheit (FPU) des Prozessors. Zusätzlich kann der Quelloperand mit Informationen zum Steuern eines Rundungsmodus der Rundungsoperation abgeschickt werden. Die Steuerungsinformation kann von dem direkten Wert erhalten werden, das heißt, wie in einem Rundungsmodusfeld des direkten Wertes bestimmt. Wie weiter unten beschrieben, kann in einigen Implementationen eine Steuerungseinheit, beispielsweise eine Steuerungsauswahleinheit eines Prozessors, die Anweisung und den direkten Wert empfangen und den direkten Wert dekodieren, um zu bestimmen, ob der Standardrundungsmodus übersteuert werden muss, und wenn ja, den Rundungsmodus entsprechend dem direkten Wert zu erhalten. - Weiterhin bezugnehmend auf
1 , wenn, anstatt bei der Raute115 , bestimmt wird, dass der direkte Wert keinen Übersteuerungsindikator umfasst, geht die Steuerung zum Block125 über. Am Block125 kann der Quelloperand abgeschickt werden zur Ausführung in der FPU. Zusätzlich kann die Rundungsoperation basierend auf dem Standardrundungsmodus gemäß beispielsweise dem Konfigurationsregister ausgeführt werden. - In jedem Fall wird die Steuerung von beiden der Blöcke
120 und125 zum Block130 übermittelt, an welchen die Rundungsoperation ausgeführt werden kann. Die Rundungsoperation entfernt eine partielle Genauigkeit der Eingabe (das heißt, des Quelloperanden) entsprechend dem Rundungsmodus. In verschiedenen Ausführungsformen können verschiedene Arten der Ausführung der Rundungsoperationen realisiert werden. Beispielsweise kann eine FPU in vielen Implementationen einen Addierer und eine Rundungseinheit umfassen, um Rundungsoperationen auszuführen. Um Rundungsmodi gemäß dem IEEE std 754 auszuführen, kann der Addierer mit dem Quelloperanden als einen ersten Operanden und einem konstanten Wert, beispielsweise Null, für einen zweiten Operanden bereitgestellt werden. Die Ausgabe des Addierers kann dann der Rundungseinheit zugeführt werden, welche das Ergebnis gemäß dem gewählten Operationsmodus rundet. Die Rundungseinheit kann dann ihren Eingabewert zu einem ganzzahligen Gleitwertergebnis runden. - In anderen Ausführungsformen können weitere Rundungsmodi ausgeführt werden zusätzlich zu den IEEE std 754 Rundungsmodi. In solchen Implementierungen kann der FPU-Addierer dem Quelloperanden und einem bestimmten Datenwert als ein zweiter Operand basierend auf einem Wert des Quelloperanden und dem Rundungsmodus zugeführt werden, wie weiter unten beschrieben. Dann kann eine Rundungsoperation auf das Ergebnis ausgeführt werden, wobei die Rundungsoperation eine IEEE std 754 Operation sein kann. In weiteren Implementierungen von erweiterten Rundungsmodi können der Quelloperand und ein Nullwert an den Eingängen des FPU-Addierers bereitgestellt werden, und der Ergebniswert kann dann gemäß der Steuerungsinformationen, welche zu der Rundungseinheit gesandt wurden, gerundet werden.
- Nach der Ausführung kann das Ergebnis der Rundungsoperation in einem Zieloperanden (Block
140 ) gespeichert werden. In verschiedenen Ausführungsformen kann der Zieloperand ein erweiterter Speicherregister des Prozessors sein, obwohl der Umfang der Erfindung diesbezüglich nicht beschränkt ist. Zusätzlich kann bestimmt werden, ob eine Genauigkeitsausnahme während der Rundungsoperationen (Raute145 ) aufgetreten ist. Das heißt, es kann bestimmt werden, ob die Rundungsoperation ein ungenaues Ergebnis geliefert hat, wodurch eine Ausnahme auftreten würde. Wenn nicht, wird das Verfahren100 beendet. - Wenn stattdessen eine Genauigkeitsausnahme aufgetreten ist, kann die Steuerung zur Raute
150 übergehen. An der Raute150 kann bestimmt werden, ob der direkte Wert ein Feld umfasst, um die Genauigkeitsausnahme zu unterdrücken. Das heißt, in einigen Implementationen kann der direkte Wert ein Unterdrückungsfeld umfassen. Ein Wert dieses Feldes kann anzeigen, ob die assoziierte Rundungsanweisung eine Genauigkeitsausnahme unterdrücken soll, wenn sie auftritt. Wenn der Genauigkeitsunterdrückungsindikator anwesend ist, wird keine Aktion ausgeführt, selbst wenn eine Genauigkeitsausnahme auftritt, und das Verfahren100 kann beendet werden. Wenn stattdessen der direkte Wert keinen Indikator zum Unterdrücken von Genauigkeitsausnahmen umfasst, geht die Steuerung zum Block160 über. Am Block160 kann ein Genauigkeitsausnahmeflag in einen Statusregister gesetzt werden. Beispielsweise kann in einigen Implementationen der Statusregister dem MXCSR entsprechen, obwohl der Umfang der Erfindung diesbezüglich nicht beschränkt ist. Basierend auf dem Zustand dieses Flags in dem Statusregister kann eine Genauigkeitsausnahme auftreten (beispielsweise wenn der Flag demaskiert ist). Wenn ja, kann entsprechendes Verarbeiten, beispielsweise mittels eines Softwareverarbeiters, ausgeführt werden, um die Ausnahme zu verarbeiten. Wenn stattdessen der Flag maskiert ist, wird keine Aktion entsprechend dem gesetzten Flag ausgeführt, selbst wenn eine Genauigkeitsausnahme auftritt und in dem Statusregister geflaggt ist. Obwohl diese bestimmte Implementation im Zusammenhang mit der Ausführungsform der1 beschrieben wurde, soll verstanden sein, dass der Umfang der Erfindung diesbezüglich nicht beschränkt ist. - Nun bezugnehmend auf
2 , ist ein Blockdiagramm eines Bereichs eines Prozessors gemäß einer Ausführungsform der Erfindung gezeigt. Wie in2 gezeigt, kann ein Prozessor200 eine Steuerungsauswahleinheit210 umfassen, welche angeschlossen ist, um eingehende Anweisungsinformationen von einem Register205 (, welches ein allgemeines Prozessorregister sein kann), welche beispielsweise mittels Mikrooperationen (µops) erzeugt sind, und direkte Daten zu empfangen, welche damit assoziiert sind. Die µops können entsprechend einer Einzelanweisung von einem ISA erzeugt werden, um eine bestimmte Rundungsoperation auszuführen. In verschiedenen Ausführungsformen kann die Steuerungsauswahleinheit210 , welche in Hardware, Software, Firmware oder Kombinationen hiervon implementiert sein kann, den direkten Wert dekodieren. Basierend auf dem direkten Wert kann bestimmt werden, ob ein aktueller Rundungsmodus des Prozessors, beispielsweise wie er in einem Steuerungs- oder Konfigurationsregister repräsentiert ist, welcher einen aktuellen Rundungssteuerungsstatus220 speichert, übersteuert werden muss. Wenn ja, kann die Steuerungsauswahleinheit210 ein Modusfeld des direkten Wertes dekodieren, insbesondere ein Rundungsmodusfeld, um den richtigen Rundungsmodus zu bestimmen. - Die Steuerungsauswahleinheit
210 kann mit einer Gleitkommaeinheit (FPU)240 gekoppelt werden, um Steuerungsanweisungen basierend auf der eingehenden Information hier zur Verfügung zu stellen. Wie weiterhin in2 gezeigt, kann eine erweiterte Registerdatei, beispielsweise ein so genanntes erweitertes (XMM) Register230 innerhalb eines Prozessors200 vorhanden sein, welches Register umfasst, welche in einer Anweisung identifiziert sind, um als Quell- und Zieloperanden für eine Rundungsoperation zu agieren. XMM Register230 können dann mit der FPU240 gekoppelt werden, um Quelloperanden hier zur Verfügung zu stellen und Zieloperanden hiervon zu empfangen. - In verschiedenen Ausführungsformen kann die FPU
240 verschiedene Schaltkreise zum Ausführen von Operationen an Daten umfassen. In der Ausführungsform der2 umfasst die FPU240 einen FPU-Addierer242 . Spezifischer, wie in2 gezeigt, kann der FPU-Addierer240 gekoppelt werden, um eingehende Operanden zu empfangen, beispielsweise einen ersten Quelloperanden und einen zweiten Quelloperanden (beispielsweise OperandenS1 undS2 ). Die FPU240 kann auch einen FPU-Rounder244 umfassen, welcher mit einem Ausgang des FPU-Addierers242 gekoppelt ist. In verschiedenen Ausführungsformen kann der FPU-Addierer242 ein unbegrenzt genaues Ergebnis einer Operation erzeugen. Trotzdem können auf Grund von Speicher- und anderer Einschränkungen die Ergebnisse gerundet werden, um ein Endresultat in einem gewünschten Format bereitzustellen, beispielsweise ein Gleitkommaelement mit einfacher Genauigkeit oder doppelter Genauigkeit. Entsprechend kann der FPU-Rounder240 ein unbegrenzt genaues Ergebnis vom FPU-Addierer242 erhalten und eine Rundungsoperation ausführen, wie mittels eines aktuellen Rundungsmodus des Prozessors100 vorgegeben, oder basierend auf einer Steuerung von dem direkten Wert, welcher mittels einer Anweisung erhalten wurde, das heißt mittels der Steuerungsauswahleinheit210 . Es sei angemerkt, dass, während der FPU-Rounder244 im Allgemeinen unbegrenzt genaue Ergebnisse empfängt, welche als ein Ergebnis von mathematischen Operationen im FPU-Addierer242 auftreten, in verschiedenen Implementationen der Quelloperand, welcher mit einer Rundungsanweisung bereitgestellt wird, bereits in einem Format mit begrenzter Genauigkeit sein kann. In diesen Fällen kann der FPU-Rounder244 seinen Eingangswert empfangen (beispielsweise entsprechend einem Quelloperanden der gegebenen Rundungsanweisung) und ein gerundetes Ergebnis entsprechend beispielsweise dem nächsten ganzzahligen Wert erzeugen. - Basierend auf einer gegebenen Rundungsanweisung kann dann die FPU
240 eine Rundungsoperation an einem gegebenen Quelloperanden entsprechend mittels der Information von der Steuerungsauswahleinheit210 gesteuert ausführen, beispielsweise von einem der XMM Register230 . Zusätzlich zur Komplettierung der Rundungsoperation kann das Ergebnis beispielsweise in einem anderen Register innerhalb der XMM Register230 gespeichert werden. Wenn während der Operation eine Genauigkeitsausnahme auftreten sollte, würde normalerweise ein Flag in einem FP-Statusregister225 gesetzt werden, um dieses anzuzeigen. Trotzdem kann in verschiedenen Ausführungsformen solch ein Flag nicht gesetzt sein, wenn der direkte Wert, welcher mit der Rundungsanweisung assoziiert ist, eine Genauigkeitsunterdrückung anzeigt. Obwohl diese spezielle Implementierung in der Ausführungsform der2 beschrieben wurde, soll verstanden sein, dass der Umfang der Erfindung diesbezüglich nicht beschränkt ist. Beispielsweise können in einigen Ausführungsformen der Steuerungs- und Statuszustand, beispielsweise repräsentiert durch den Rundungssteuerungszustand220 und das FP-Statusregister225 , in einem einzelnen CSR, beispielsweise MXCSR, gespeichert sein. - Es ist zu beachten, dass der direkte Wert der Steuerungsauswahleinheit
210 in unterschiedlichen Formen zur Verfügung gestellt werden kann. Beispielsweise kann der direkte Wert in einigen Implementatierung in der Form eines einzelnen Bytedatenelements sein, obwohl der Umfang der Erfindung diesbezüglich nicht beschränkt ist. Zusätzlich können verschiedene Arten der Kodierung von Steuerungsinformationen innerhalb eines direkten Datenelementes realisiert werden. Bezugnehmend auf3 , ist ein Blockdiagramm eines direkten Datenelementes gemäß einer Ausführungsform der Erfindung gezeigt. Wie in3 gezeigt, kann ein direktes Datenelement300 ein 8-Bit-Wort sein umfassend einen Übersteuerungsindikator310 , ein Steuerungsmodusfeld320 , einen Genauigkeitsübersteuerungsindikator330 und ein reserviertes Feld340 . Obwohl diese spezielle Implementation in der Ausführungsform der3 beschrieben ist, ist der Umfang der Erfindung diesbezüglich nicht beschränkt. - In der Ausführungsform der
3 kann der Übersteuerungsindikator310 verwendet werden, um einen Übersteuerungszustand einer Rundungsanweisung, welche mit dem direkten Datenelement300 assoziiert ist, zu bestimmen. Wie weiter unten in Tabelle 1 gezeigt, kann der Übersteuerungsindikator310 auf einen logisch niedrigen Zustand gesetzt werden, um eine Steuerung eines Standardrundungsmodus anzuzeigen (beispielsweise wie mittels eines Konfigurationsregisters, beispielsweise der MXCSR ausgedrückt). Einen logisch hohen Zustand zeigt die Verwendung des Standardmodus an. Tabelle 1Rundungsmodusübersteuerungsindika - or 0: Verwende bits 1:3 vom direkten 1: Verwende Standardrundungsmodus - Wenn der Übersteuerungsindikator
310 anzeigt, dass der Standardrundungsmodus übersteuert werden muss, kann das Rundungsmodusfeld320 dekodiert werden, um den mit einer Rundungsanweisung assoziierten Rundungsmodus zu bestimmen. Wie weiter unten in Tabelle 2 gezeigt, können in einigen Implementationen sechs Rundungsmodi unterstützt werden, umfassend die vier Rundungsmodi, welche mittels der IEEE std 754 spezifiziert sind, zusammen mit zwei erweiterten Rundungsmodi, welche weiter unten beschrieben werden. Tabelle 2Rundungsmodusfeld 000: Nächste Gerade 001: Richtung - ∞ 010: Richtung + ∞ 011: Abbrechen (Auf Null runden) 100: „Halb weg von Null“ 101: „Runde weg von Null“ - Ein direktes Datenelement
300 umfasst zusätzlich einen Genauigkeitsunterdrückungsindikator330 , welcher gesetzt werden kann, um die Erlaubnis von nicht-exakten Ergebnissen anzuzeigen, so dass keine Genauigkeitsausnahme, selbst wenn sie während einer Operation der assoziierten Anweisung auftritt, bewirkt, dass ein Ausnahmeflag innerhalb eines Statusregisters gesetzt wird. Spezifischer, wie in Tabelle 3 weiter unten gezeigt, kann der Genauigkeitsunterdrückungsindikator330 die folgenden Formen annehmen: Tabelle 3Genauigkeitsunterdrückungsindikator 1: Inexaktes (Genauigkeits-)Feld ist nicht aktualisiert 0: normales Verhalten - Es sei angemerkt, dass der Genauigkeitsunterdrückungsindikator
330 in Verbindung mit Anweisungen auf Benutzerebenen in verschiedenen Sprachen verwendet werden kann, beispielsweise C99, Fortran und Java. Schließlich kann ein reserviertes Feld340 in einigen Ausführungsformen für zusätzliche Informationen reserviert sein. Es sei zusätzlich angemerkt, dass der spezifische Wert gemäß Tabellen 1 bis 3 gemeinsam mit dem bestimmten Ort und Größe der Indikatoren und Felder nicht beschränkt ist und verschiedene Abänderungen, Modifikationen und Erweiterungen innerhalb des Umfangs der Erfindung sind. - Wie oben beschrieben können Rundungsoperationen in verschiedenen Implementierungen entsprechend einer Einzelanweisung eines ISA ausgeführt werden. Auf diesem Weg wird eine Unterstützung auf Benutzerebene bereitgestellt und Rundungsoperationen können effizient ausgeführt werden. In einem gegebenen ISA können mehrere solcher Rundungsanweisungen vorhanden und verfügbar sein, um spezifische Rundungsoperationen zu verarbeiten, wie beispielsweise Rundungen mit doppelter Genauigkeit und Gleitkommawerte mit einfacher Genauigkeit und auch gepackte und skalare Werte. Diese Rundungsanweisungen können auch verwendet werden, um den fraktionalen Teil eines Gleitkommadatenelementes abzurunden. Zusätzlich zu der Anwesenheit von Anweisungen auf ISA-Ebene können direkte Daten oder andere Steuerungsfeldinformationen effiziente lokale Steuerungen von Rundungsmodi (neben anderen Attributen) erlauben, ohne dass ein aktueller Standardzustand eines Prozessors modifiziert werden muss.
- Wie in Tabelle 4 weiter unten gezeigt, können verschiedene Arten von Rundungsanweisungen innerhalb einer ISA vorhanden sein, um effiziente Rundungsoperationen an verschiedenen Typen von Datenelementen zu ermöglichen. Tabelle 4
Anweisung Beschreibung ROUNDPD xmm 1, xmm2/m128, imm8 Runde gepackte Gleitkommawerte mit doppelter Genauigkeit in xmm2/m128 und ordne das Ergebnis in xmml an. Der Rundungsmodus wird mittels imm8 bestimmt. ROUNDPS xmm1, xmm2/m128, imm8 Runde gepackte Gleitkommawerte mit einfacher Präzision in xmm2/m128 und ordne das Ergebnis in xmml an. Der Rundungsmodus wird mittels imm8 bestimmt. ROUNDSD xmm7, xmm2/m64, imm8 Runde den niedrig gepackten Gleitkommawert mit doppelter Genauigkeit in xmm2/m64 und ordne das Ergebnis in xmml an. Der Rundungsmodus wird mittels imm8 bestimmt. ROUNDSS xmm1, xmm2/m32, imm8 Runde den niedrig gepackten Gleitkommawert mit einfacher Genauigkeit in xmm2/m32 und ordne das Ergebnis in xmml an. Der Rundungsmodus wird mittels imm8 bestimmt. - Als ein Beispiel wie diese ISA Anweisungen durchgeführt werden, kann die ROUNDP Anweisung verwendet werden, um Gleitkommawerte mit doppelter Genauigkeit in einem Quelloperanden (beispielsweise einem zweiten Operanden, welcher von einem XMM Register oder Speicher erhalten werden kann,) mittels des in dem direkten Element (das heißt IMM8) spezifizierten Rundungsmodus zu runden und um das Ergebnis in dem Zieloperanden (,das heißt, dem ersten Operanden, welcher ein XMM Register sein kann,) anzuordnen. Das direkte Element kann Steuerungsfelder für die Rundungsoperation spezifizieren. Bezugnehmend zu den Tabellen 1 bis 3, kann Bit
4 (das heißt, Indikator330 der3 ) des direkten Wertes ein Prozessorverhalten für eine Genauigkeitsausnahme steuern, während Bit0 (das heißt, Indikator310 der3 ) die Quelle der Rundungsmodussteuerung auswählen kann. Schließlich können Bits3 :1 (das heißt, Feld320 von3 ) einen nichthaftenden Rundungsmoduswert spezifizieren. Es sei angemerkt, dass in einigen Ausführungsformen, wenn irgendein Quelloperand ein „signaling not a number“ (SNaN) ist, dann wird er in ein „quiet NaN“ (QNaN) konvertiert. Wenn ein Konfigurationsregister auf „denormals as zeros“ (DAZ) gesetzt ist, dann können die Denormals vor dem Runden zu Null konvertiert werden. Wenn ein Konfigurationsregister auf „flush denormals to zeros“ (FTZ) gesetzt ist, dann werden die Denormalen nach dem Runden zu Null konvertiert. - Als ein weiteres Beispiel wie diese ISA Anweisungen verarbeitet werden können, können die ROUNDS Anweisungen verwendet werden, um vier gepackte Gleitkommawerte mit einfacher Genauigkeit in einen Quelloperanden zu runden und das Ergebnis in einen Zieloperanden anzuordnen. Zwecks Anschauung kann die spezifische Rundungsanweisung die folgende Form aufweisen:
- ROUNDPS xmm0, xmm1, imm8 (runde zur nächsten Ganzzahl).
- Die Anweisung kann gepackte Werte mit einfacher Genauigkeit in einem ersten Register, das heißt, xmml, aufweisen, jeden Wert zu dem nächsten ganzzahligen Wert entsprechend dem Rundungsmodus des direkten Wertes (das heißt, imm8) runden und das Ergebnis in einen zweiten Register speichern, das heißt, xmm0. Tabelle 5 weiter unten zeigt entsprechende Werte, welche in dem Quelloperanden (das heißt, xmml), vorhanden sind, wobei jeder Wert einem Gleitkommawert mit begrenzter Genauigkeit entspricht und zeigt die resultierenden gerundeten Werte wie in dem Zieloperanden (das heißt, xmm0) gespeichert, entsprechend den ganzzahligen Gleitkommazahlwerten, insbesondere den nächsten Integerwerten zu den ursprünglichen Quellwerten. Tabelle 5
1.01f 2.9f 3.6f 4.2f xmm1 1.0f 3.0f 4.0f 4.0f xmm0 - Es sei angemerkt, dass in weiteren Implementierungen eine Rundungsoperation entsprechend einer Anweisung einen ganzzahligen Wert erzeugt (das heißt, entgegen den integralen FP-Werten) von einem Quell-FP-Wert. Andere Ausführungsformen können das Runden zu einer Gleitkommadarstellung mit niedriger Genauigkeit ermöglichen. Folglich können Ausführungsformen ein effizientes Mittel zum Runden von Quellwerten entsprechend einem Standardrundungsmodus oder einem spezialisierten Rundungsmodus bereitstellen, gesteuert mittels entweder eines Standardrundungsmodus in einem Konfigurationsregister oder eines lokalen Rundungsmodus gemäß einem direkten Wert, welcher mit der Anweisung assoziiert ist.
- In verschiedenen Ausführungsformen kann der direkte Wert Steuerungsinformationen bereitstellen, um einen Rundungsmodus auszuführen, welcher von den IEEE std 754 Rundungsoperationen verschieden ist. Diese Rundungsmodi können einen „Halb-weg-vom-Nullrundungsmodus“ und einen „Runde-weg-von-Null-Rundungsmodus“ umfassen. Bezugnehmend nun auf
4 , ist ein Flussdiagramm eines Verfahrens zur Ausführung von Rundungsoperationen gemäß einer Ausführungsform der Erfindung gezeigt. Wie in4 gezeigt, kann ein Verfahren400 verwendet werden, um diese erweiterten Rundungsmodi auszuführen. Das Verfahren400 kann durch eine Bestimmung beginnen, ob ein Quelloperand größer oder gleich Null ist (Raute410 ). Wenn ja, kann die Steuerung zum Block420 übermittelt werden, an welchem ein vorbestimmter Wert von dem Quelloperanden (Block420 ) abgezogen wird. Beispielsweise kann ein FP-Addierer einen bestimmten Wert von dem Quelloperanden basierend auf dem spezifischen ausgewählten Rundungsmodus subtrahieren. Natürlich kann die Subtraktion auch als eine Addition mit einem negativen Wert für den vorbestimmten Wert ausgeführt werden. Dann wird die gewählte Rundungsoperation auf das Ergebnis des FP-Addierers (Block430 ) ausgeführt. In einigen Implementierungen kann eine IEEE std 754 Rundungsoperation wie ein Abschneiden (, auch auf Null runden genannt,) auf das Ergebnis ausgeführt werden, um das erweiterte Rundungsmodusergebnis zu erhalten. Wenn stattdessen an der Raute410 bestimmt wird, dass der Quelloperand kleiner Null ist, dann wird die Steuerung zum Block440 übermittelt. Am Block440 kann ein vorbestimmter Wert (, welcher der gleiche Wert wie oben sein kann,) zu den Quelloperanden in dem FP-Addierer addiert. Dann wird am Block450 die gewählte Rundungsoperation auf das Ergebnis ausgeführt, um den resultierenden gerundeten Wert zu erhalten. - Während der Umfang der Erfindung diesbezüglich nicht beschränkt ist, kann eine Halb-weg-von-Null-Rundungsoperation einen Wert von 0,5 als seinen vorgewählten Wert verwenden, während eine Runde-weg-von-Null-Operation eine 1- verwendet, welche dem nächsten repräsentierbaren FP-Wert kleiner eins, aber nicht gleich eins, entspricht. Für FP-Werte mit einfacher Genauigkeit und doppelter Genauigkeit kann 0,5 jeweils 0x3f000000 und 0x3fe0000000000000 entsprechen. Für FP-Werte mit einfacher Genauigkeit und doppelter Genauigkeit, kann -0.5 jeweils 0xbf000000 und 0xbfe000000000000 entsprechen. Für FP Werte mit einfacher Genauigkeit und doppelter Genauigkeit entspricht 1- jeweils 0x3f7fffff und 0x3fefffffffffffff. Für FP-Werte mit einfacher Genauigkeit und doppelter Genauigkeit kann -1-jeweils 0xbf7fffff und 0xbfefffffffffffff entsprechen. Quellcodebeispiele zur Ausführung dieser Operationen sind in Tabelle 6 weiter unten gezeigt. Tabelle 6
ROUND_HALF_AWAY_ZERO(A): IF (A < = 0) A←ROUND_TOWARD_ZERO(A-0.5) ELSE IF (A > 0) A←ROUND_TOWARD_ZERO(A + 0.5) 2) Runde weg von Null (A). „Das Ergebnis soll der nächste Wert an und nicht kleiner in der Magnitude sein als das unbegrenzt genaue Ergebnis.“ IF (A < = 0) A←ROUND_TOWARD_ZERO(A-1) ELSE IF (A > 0) A←ROUND_TOWARD_ZERO(A + 1) - In diesen Beispielen ist die Operation ROUND_TOWARD_ZERO die IEEE std 754 Abschneideoperation, welche auf das Ergebnis der Addition/Subtraktionsoperation angewandt wird. Es sei angemerkt, dass für die Ausführung dieser erweiterten Rundungsmodusoperationen die vorgegebenen Werte als zweite Quelloperanden zu dem FP-Addierer (beispielsweise als
S2 in der Ausführungsform von2 ) bereitgestellt werden können. Alternativ, wie in einigen Ausführungsformen mit anderen Rundungsoperationen, können die zweiten Quelloperanden Null sein und Steuerungssignale können zu einer Rundungseinheit gesendet werden, um die gewählte erweiterte Rundungsmodusoperation zu implementieren. - Somit können in verschiedenen Ausführungsformen Verbesserungen zur Ausführung einer Rundung realisiert werden. Diese Verbesserungen können die Notwendigkeit verhindern, dass verschiedene Operationen ausgeführt werden müssen, beispielsweise das Abspeichern eines Steuerungsregisterzustandes, das Ausführen einer Dummy-FP-Operation und das Zurücksetzen des Zustandes oder eben die ungefähre Vereinfachung beim Konvertieren einer Zahl zu einer Ganzzahl und zurück zu einer Gleitkommazahl. Mittels Unterdrückung von inexakten Genauigkeitsausnahmen kann die konforme Unterstützung für verschiedene Sprachen zum Runden vereinfacht werden, während Implementierungen auch den Standardrundungsmodi für einige Rundungsfunktionen anhängen, beispielsweise in der C99 Sprache.
- Ausführungsformen können in vielen verschiedenen Systemtypen implementiert werden. Bezugnehmend nun auf
5 ist ein Blockdiagramm eines Systems gemäß einer Ausführungsform der Erfindung gezeigt. Wie in5 gezeigt, ist ein Multiprozessorsystem500 ein Punkt-zu-Punkt Verbindungssystem und umfasst einen ersten Prozessor570 und einen zweiten Prozessor580 , welche mittels einer Punkt-zu-Punkt Verbindung550 gekoppelt sind. Wie in5 gezeigt, kann jeder der Prozessoren570 und580 ein Multikernprozessor sein, umfassend einen ersten und einen zweiten Prozessorkern (das heißt, Prozessorkerne574a und574b und Prozessorkerne584a und584b) . Es sei angemerkt, dass gemäß einer Ausführungsform der Erfindung jeder der Kerne Rundungsoperationen entsprechend den Anweisungen auf ISA-Ebene ausführen kann. - Der erste Prozessor
570 umfasst weiterhin Punkt-zu-Punkt (P-P) Anschlüsse576 und578 . Ähnlich umfasst der zweite Prozessor580 P-P Anschlüsse586 und588 . Wie in5 gezeigt, koppelt ein Speichersteuerhub (MCH)572 und582 die Prozessoren zu jeweiligen Speichern, nämlich einem Speicher532 und einem Speicher534 , welche Teile von einem Hauptspeicher sein können, welche lokal an den jeweiligen Prozessoren befestigt sind. - Der erste Prozessor
570 und der zweite Prozessor580 können zu einem Chipset590 mittels jeweiligen P-P Verbindungen552 bzw.554 gekoppelt sein. Wie in5 gezeigt, umfasst der Chipset590 P-P Anschlüsse594 und598 . Weiterhin umfasst der Chipset590 einen Anschluss bzw. ein Interface592 , um den Chipset590 mit einer Hochleistungsgrafikmaschine538 zu koppeln. In einer Ausführungsform kann ein „Advanced Graphics Port“ (AGP) Bus539 verwendet werden, um die Grafikvorrichtung538 mit dem Chipset590 zu koppeln. AGP Bus539 kann konform mit dem „Accelerated Graphics Port Interface Specification“, Revision2.0 veröffentlicht am 4. Mai 1998 von Intel Corporation, Santa Clara, Kalifornien sein. Alternativ kann eine Punkt-zu-Punkt Verbindung539 diese Komponenten koppeln. - Wiederum kann der Chipset
590 mit einem ersten Bus516 mittels eines Interfaces596 gekoppelt sein. In einer Ausführungsform kann der erste Bus519 ein „Peripheral Component Interconnect“ (PCI) Bus sein, wie durch die PCI Local Bus Specification, Produktionsversion, Revision2.1 , datiert Juni 1995 definiert, oder einen Bus wie beispielsweise ein PCI Express™ Bus oder andere Eingabe/Ausgabe (E/A) Verbindungsbusse der dritten Generation sein, obwohl der Umfang der Erfindung diesbezüglich nicht beschränkt ist. - Wie in
5 gezeigt, können verschiedene E/A-Vorrichtungen514 mit dem ersten Bus516 gemeinsam mit einer Busbrücke518 , welche den ersten Bus516 mit einem zweiten Bus520 koppelt, gekoppelt sein. In einer Ausführungsform kann der zweite Bus520 ein Niedrigpinzähler (LPC) Bus sein. Verschiedene Vorrichtungen können mit dem zweiten Bus520 gekoppelt sein umfassend beispielsweise eine Tastatur/Maus520 , Kommunikationsvorrichtungen526 und einen Datenspeichereinheit528 wie beispielsweise eine Festplatte oder andere Massenspeichervorrichtungen, welche in einer Ausfuhrungsform Code530 umfassen können. Zusätzlich kann eine Audio E/A524 mit dem zweiten Bus520 gekoppelt sein. Es sei angemerkt, dass andere Architekturen möglich sind. Beispielsweise kann anstatt der Punkt-zu-Punkt Architektur von5 ein System einen Multi-Drop Bus oder andere solche Architekturen implementieren. - Ausführungsformen können in Code implementiert sein und dann auf einem Speichermedium mit gespeicherten Anweisungen gespeichert werden, welche verwendet werden können, um ein System zu programmieren, um die Anweisungen auszuführen. Das Speichermedium kann umfassen, aber ist nicht darauf begrenzt, irgendeine Art von Diskette umfassend Floppy Diskette, optische Disketten, nur lesbare Kompaktdisks (CD-ROMs), wiederbeschreibbare Kompaktdisks (CD-RWs) und magnetooptische Disketten, Halbleitervorrichtungen wie beispielsweise nur lesbare Speicher (ROMs), direkte Zugriffsspeicher (RAMs), wie beispielsweise dynamisch direkte Zugriffsspeicher (DRAMs), statische direkte Zugriffsspeicher (SRAMs), löschbare programmierbare nur lesbare Speicher (EPROMs), Flashspeicher, elektrisch löschbare programmierbare nur lesbare Speicher (EEPROMs), magnetische oder optische Karten oder irgendeinen anderen Typ von Media, welcher für ein Speichern von elektronischen Anweisungen geeignet ist.
Claims (9)
- Verfahren, umfassend: Empfangen (110) einer Nutzerebenenrundungsanweisung einer Befehlssatzarchitektur (ISA) und eines Immediate-Wertes in einem Prozessor; Bestimmen (115), ob ein in dem Immediate-Wert enthaltener Rundungsmodusübersteuerungsindikator aktiv ist; und wenn ja, Erhalten eines in dem Immediate-Wert enthaltenen Rundungsmodusfeldes, wobei das Rundungsmodusfeld vom Übersteuerungsindikator getrennt ist, und um einen von einer Mehrzahl von Rundungsmodi anzuzeigen; Ausführen (130) einer Rundungsoperation an einem Quelloperanden in einer Gleitkommaeinheit des Prozessors entsprechend der Nutzerebenenrundungsanweisung und gemäß einem Rundungsmodus im in dem Immediate-Wert enthaltenen Rundungsmodusfeld; und Unterdrücken einer Präzisionsausnahme, die aus der Rundungsoperation resultiert, wenn ein vom Rundungsmodusübersteuerungsindikator und dem Rundungsmodusfeld getrennter Präzisionsunterdrückungsindikator, der in dem Immediate-Wert enthalten ist, aktiv ist und, falls der Präzisionsunterdrückungsindikator nicht aktiv ist, und während der Rundungsoperation die Präzisionsausnahme aufgetreten ist, Setzen eines Präzisionsausnahme-Flags in einem Statusregister des Prozessors.
- Verfahren nach
Anspruch 1 , wobei die Rundungsoperation entsprechend der Rundungsanweisung und gemäß einem in einem Steuerungsregister des Prozessors bestimmten Rundungsmodus ausgeführt wird, wenn der Rundungsmodusübersteuerungsindikator des Immediate-Wertes nicht aktiv ist. - Verfahren nach
Anspruch 1 , wobei während der Ausführung der Rundungsoperation ein Wert eines Steuerungsregisters beibehalten wird, welcher einen Standardrundungsmodus umfasst. - Prozessor, umfassend: eine Ausführungslogik (240) zum Ausführen einer ersten Nutzerebenenrundungsanweisung einer Befehlssatzarchitektur (ISA), um wenigstens ein Element eines ersten Einzelanweisungsmultidaten (SIMD)-Operanden entsprechend einem von mehreren Modi zu runden, welcher mittels der ersten Nutzerebenenrundungsanweisung vorgegeben ist; und eine mit der Ausführungslogik (240) gekoppelte Steuerung (210), um die erste Nutzerebenenrundungsanweisung und ein Immediate-Datenelement, welches mit der ersten Nutzerebenenrundungsanweisung assoziiert ist, zu empfangen und zu bestimmen, ob ein Standardrundungsmodus basierend auf einem in dem Immediate-Datenelement enthaltenen Übersteuerungsindikator übersteuert werden muss, durch Decodieren des Übersteuerungsindikators und Abgeben einer Steuerungsinformation an die Ausführungslogik (240), um das Runden zu steuern, wobei die Ausführungslogik (240) eingerichtet ist, das zumindest eine Element gemäß einem in dem Immediate-Datenelement enthaltenen Rundungsmodusfeld zu runden, das vom Übersteuerungsindikator getrennt ist, falls der Standardrundungsmodus übersteuert werden soll, wobei die Ausführungslogik (240) eine Präzisionsausnahme, die aus der ersten Nutzerebenenrundungsanweisung resultiert, wenn ein vom Rundungsmodusübersteuerungsindikator und dem Rundungsmodusfeld getrennter in dem Immediate-Datenelement enthaltener Präzisionsunterdrückungsindikator aktiv ist, unterdrücken und, falls der Präzisionsunterdrückungsindikator nicht aktiv ist und die Präzisionsausnahme aus der ersten Nutzerebenenrundungsanweisung resultiert, ein Präzisionsausnahme-Flag in einem Statusregister des Prozessors setzen soll, wobei die Ausführungslogik (240) aufweist: einen Gleitkommaaddierer (242) zum Empfangen des zumindest einen Elements, wobei der Gleitkommaaddierer (242), wenn der Default-Rundungsmodus überschrieben werden soll und das Rundungsmodusfeld einen Runde-weg-von-Null-Modus anzeigt, einen ersten Wert zum zumindest einen Element addieren soll, wenn das zumindest eine Element zumindest gleich einem Schwellwert ist, und ansonsten der Gleitkommaaddierer (242) den ersten Wert von dem zumindest einen Element subtrahieren soll; und eine Rundungseinrichtung (244), die mit einem Ausgang des Gleitkommaaddierers (242) gekoppelt ist, um die Rundungsoperation durchzuführen, wobei die Steuerung (210) der Rundungseinrichtung (244) Steuerungsanweisungen zuführen soll, um die Rundung durchzuführen.
- Prozessor nach
Anspruch 4 , wobei die erste Anweisung einen Übersteuerungsindikator umfasst, um einen anderen Rundungsmodus als einen Standardrundungsmodus der Ausführungslogik (240) anzuzeigen, und ein Modusfeld umfasst, um den Modus der mehreren Modi anzuzeigen. - Prozessor nach
Anspruch 4 , wobei wenigstens einer der mehreren Modi von einem Standardrundungsmodus verschieden ist, welcher in einem Steuerungsregister der Ausführungslogik (240) gespeichert ist. - Prozessor nach
Anspruch 6 , wobei der Standardrundungsmodus konfiguriert ist, in dem Steuerungsregister während der Ausführung der ersten Anweisung entsprechend dem wenigstens einen der mehreren Modi gespeichert zu bleiben. - Prozessor nach
Anspruch 4 , wobei die Ausführungslogik (240) konfiguriert ist, das wenigstens eine Element zu einem ganzzahligen Gleitkommawert zu runden, wobei der erste Einzelanweisungsmultidaten-Operand einen Gleitkommawert mit begrenzter Genauigkeit umfasst. - Prozessor nach
Anspruch 4 , wobei die Ausführungslogik (240) konfiguriert ist, das wenigstens eine Element zu einem Integer-Wert zu runden, wobei der ersten Einzelanweisungsmultidaten-Operand einen Gleitkommawert umfasst.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/525,420 US9223751B2 (en) | 2006-09-22 | 2006-09-22 | Performing rounding operations responsive to an instruction |
US11/525,420 | 2006-09-22 | ||
PCT/US2007/079233 WO2008036944A1 (en) | 2006-09-22 | 2007-09-21 | Performing rounding operations responsive to an instruction |
Publications (2)
Publication Number | Publication Date |
---|---|
DE112007001989T5 DE112007001989T5 (de) | 2009-06-18 |
DE112007001989B4 true DE112007001989B4 (de) | 2019-04-18 |
Family
ID=39200854
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE112007001989.1T Active DE112007001989B4 (de) | 2006-09-22 | 2007-09-21 | Ausführung von Rundungsoperationen entsprechend einer Anweisung |
Country Status (7)
Country | Link |
---|---|
US (11) | US9223751B2 (de) |
JP (6) | JP4990977B2 (de) |
KR (1) | KR100947138B1 (de) |
CN (6) | CN101149674A (de) |
DE (1) | DE112007001989B4 (de) |
RU (2) | RU2447484C1 (de) |
WO (1) | WO2008036944A1 (de) |
Families Citing this family (37)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9223751B2 (en) | 2006-09-22 | 2015-12-29 | Intel Corporation | Performing rounding operations responsive to an instruction |
US8327120B2 (en) | 2007-12-29 | 2012-12-04 | Intel Corporation | Instructions with floating point control override |
US8046400B2 (en) | 2008-04-10 | 2011-10-25 | Via Technologies, Inc. | Apparatus and method for optimizing the performance of x87 floating point addition instructions in a microprocessor |
CN101930354B (zh) * | 2009-07-28 | 2014-03-12 | 威盛电子股份有限公司 | 微处理器及其执行指令的方法 |
US8407271B2 (en) * | 2009-08-28 | 2013-03-26 | Advanced Micro Devices, Inc. | Method for floating point round to integer operation |
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 |
CN103502935B (zh) | 2011-04-01 | 2016-10-12 | 英特尔公司 | 向量友好指令格式及其执行 |
CN109086073B (zh) * | 2011-12-22 | 2023-08-22 | 英特尔公司 | 浮点舍入处理器、方法、系统和指令 |
WO2013101119A1 (en) * | 2011-12-29 | 2013-07-04 | Intel Corporation | Method and apparatus for controlling a mxcsr |
CN104145245B (zh) * | 2011-12-30 | 2018-01-23 | 英特尔公司 | 浮点舍入量确定处理器、方法、系统和指令 |
JP6403764B2 (ja) * | 2013-11-27 | 2018-10-10 | インテル・コーポレーション | プロセッサのバッファの自律的制御 |
US9778908B2 (en) * | 2014-07-02 | 2017-10-03 | Via Alliance Semiconductor Co., Ltd. | Temporally split fused multiply-accumulate operation |
US9817661B2 (en) * | 2015-10-07 | 2017-11-14 | Arm Limited | Floating point number rounding |
CN106355246B (zh) * | 2015-10-08 | 2019-02-15 | 上海兆芯集成电路有限公司 | 三配置神经网络单元 |
US20170177336A1 (en) * | 2015-12-22 | 2017-06-22 | Intel Corporation | Hardware cancellation monitor for floating point operations |
US9996319B2 (en) * | 2015-12-23 | 2018-06-12 | Intel Corporation | Floating point (FP) add low instructions functional unit |
US20180173527A1 (en) * | 2016-12-15 | 2018-06-21 | Optimum Semiconductor Technologies, Inc. | Floating point instruction format with embedded rounding rule |
US10481908B2 (en) | 2017-06-23 | 2019-11-19 | International Business Machines Corporation | Predicted null updated |
US10725739B2 (en) | 2017-06-23 | 2020-07-28 | International Business Machines Corporation | Compiler controls for program language constructs |
US10740067B2 (en) | 2017-06-23 | 2020-08-11 | International Business Machines Corporation | Selective updating of floating point controls |
US10379851B2 (en) | 2017-06-23 | 2019-08-13 | International Business Machines Corporation | Fine-grained management of exception enablement of floating point controls |
US10684852B2 (en) | 2017-06-23 | 2020-06-16 | International Business Machines Corporation | Employing prefixes to control floating point operations |
US10514913B2 (en) | 2017-06-23 | 2019-12-24 | International Business Machines Corporation | Compiler controls for program regions |
US10310814B2 (en) | 2017-06-23 | 2019-06-04 | International Business Machines Corporation | Read and set floating point control register instruction |
US11366663B2 (en) | 2018-11-09 | 2022-06-21 | Intel Corporation | Systems and methods for performing 16-bit floating-point vector dot product instructions |
US11372643B2 (en) | 2018-11-09 | 2022-06-28 | Intel Corporation | Systems and methods for performing instructions to convert to 16-bit floating-point format |
US11099853B2 (en) * | 2019-02-15 | 2021-08-24 | International Business Machines Corporation | Digit validation check control in instruction execution |
CN110134436B (zh) * | 2019-05-05 | 2021-03-02 | 飞依诺科技(苏州)有限公司 | 超声数据打包处理方法及系统 |
US11327923B2 (en) | 2019-09-04 | 2022-05-10 | SambaNova Systems, Inc. | Sigmoid function in hardware and a reconfigurable data processor including same |
US11327713B2 (en) | 2019-10-01 | 2022-05-10 | SambaNova Systems, Inc. | Computation units for functions based on lookup tables |
US11328038B2 (en) | 2019-11-25 | 2022-05-10 | SambaNova Systems, Inc. | Computational units for batch normalization |
US11150872B2 (en) * | 2019-12-17 | 2021-10-19 | SambaNova Systems, Inc. | Computational units for element approximation |
CN113031914B (zh) * | 2019-12-24 | 2023-05-16 | 龙芯中科技术股份有限公司 | 浮点舍入模式的控制方法、装置、设备及存储介质 |
US11836629B2 (en) | 2020-01-15 | 2023-12-05 | SambaNova Systems, Inc. | Computationally efficient softmax loss gradient backpropagation |
US11809908B2 (en) | 2020-07-07 | 2023-11-07 | SambaNova Systems, Inc. | Runtime virtualization of reconfigurable data flow resources |
US11782729B2 (en) | 2020-08-18 | 2023-10-10 | SambaNova Systems, Inc. | Runtime patching of configuration files |
US20220414182A1 (en) * | 2021-06-26 | 2022-12-29 | Intel Corporation | Apparatuses, methods, and systems for instructions for matrix multiplication instructions |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5696709A (en) | 1995-03-31 | 1997-12-09 | International Business Machines Corporation | Program controlled rounding modes |
US5812439A (en) | 1995-10-10 | 1998-09-22 | Microunity Systems Engineering, Inc. | Technique of incorporating floating point information into processor instructions |
US6058410A (en) | 1996-12-02 | 2000-05-02 | Intel Corporation | Method and apparatus for selecting a rounding mode for a numeric operation |
Family Cites Families (43)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS56135236A (en) * | 1980-03-24 | 1981-10-22 | Casio Comput Co Ltd | Numeric data displaying system |
JPH0469734A (ja) * | 1990-07-11 | 1992-03-04 | Toshiba Corp | 浮動小数点加減算のアンダーフロー例外発生予測回路 |
RU2018921C1 (ru) * | 1992-06-19 | 1994-08-30 | Институт точной механики и вычислительной техники им.С.А.Лебедева РАН | Устройство для нормализации и округления вещественных чисел |
US5450607A (en) | 1993-05-17 | 1995-09-12 | Mips Technologies Inc. | Unified floating point and integer datapath for a RISC processor |
US5516658A (en) * | 1993-08-20 | 1996-05-14 | Immunex Corporation | DNA encoding cytokines that bind the cell surface receptor hek |
US5404324A (en) * | 1993-11-01 | 1995-04-04 | Hewlett-Packard Company | Methods and apparatus for performing division and square root computations in a computer |
US5487022A (en) | 1994-03-08 | 1996-01-23 | Texas Instruments Incorporated | Normalization method for floating point numbers |
EP0685794A1 (de) * | 1994-06-01 | 1995-12-06 | Advanced Micro Devices, Inc. | System zum Erzeugen von Fliesskomma-Prüfvektoren |
US5631859A (en) * | 1994-10-27 | 1997-05-20 | Hewlett-Packard Company | Floating point arithmetic unit having logic for quad precision arithmetic |
JPH09128217A (ja) * | 1995-10-31 | 1997-05-16 | Hitachi Ltd | 丸め処理回路 |
US5886915A (en) * | 1995-11-13 | 1999-03-23 | Intel Corporation | Method and apparatus for trading performance for precision when processing denormal numbers in a computer system |
US6012139A (en) * | 1996-01-31 | 2000-01-04 | Hitachi Micro Systems, Inc. | Microprocessor including floating point unit with 16-bit fixed length instruction set |
US6128726A (en) * | 1996-06-04 | 2000-10-03 | Sigma Designs, Inc. | Accurate high speed digital signal processor |
US6058465A (en) * | 1996-08-19 | 2000-05-02 | Nguyen; Le Trong | Single-instruction-multiple-data processing in a multimedia signal processor |
US5838984A (en) * | 1996-08-19 | 1998-11-17 | Samsung Electronics Co., Ltd. | Single-instruction-multiple-data processing using multiple banks of vector registers |
US5782304A (en) | 1996-11-26 | 1998-07-21 | Garcia-Soule; Virgilio | Normally closed retainer valve with fail-safe pump through capability |
JPH10187416A (ja) | 1996-12-20 | 1998-07-21 | Nec Corp | 浮動小数点演算装置 |
US6233672B1 (en) * | 1997-03-06 | 2001-05-15 | Advanced Micro Devices, Inc. | Piping rounding mode bits with floating point instructions to eliminate serialization |
US5864703A (en) * | 1997-10-09 | 1999-01-26 | Mips Technologies, Inc. | Method for providing extended precision in SIMD vector arithmetic operations |
US6055555A (en) | 1997-12-29 | 2000-04-25 | Intel Corporation | Interface for performing parallel arithmetic and round operations |
US6044454A (en) | 1998-02-19 | 2000-03-28 | International Business Machines Corporation | IEEE compliant floating point unit |
US6292815B1 (en) | 1998-04-30 | 2001-09-18 | Intel Corporation | Data conversion between floating point packed format and integer scalar format |
US6282634B1 (en) | 1998-05-27 | 2001-08-28 | Arm Limited | Apparatus and method for processing data having a mixed vector/scalar register file |
JP2000010762A (ja) * | 1998-06-19 | 2000-01-14 | Mitsubishi Electric Corp | 浮動小数点演算装置 |
US7346643B1 (en) * | 1999-07-30 | 2008-03-18 | Mips Technologies, Inc. | Processor with improved accuracy for multiply-add operations |
JP2001236206A (ja) | 1999-10-01 | 2001-08-31 | Hitachi Ltd | データのロード方法及びその記憶方法、データワードのロード方法及びその記憶方法、並びに、浮動小数点数の比較方法 |
US6571265B1 (en) * | 1999-10-29 | 2003-05-27 | Intel Corporation | Mechanism to detect IEEE underflow exceptions on speculative floating-point operations |
US6820106B1 (en) * | 2000-06-27 | 2004-11-16 | Intel Corporation | Method and apparatus for improving the performance of a floating point multiplier accumulator |
US6996591B2 (en) | 2000-12-27 | 2006-02-07 | Intel Corporation | System and method to efficiently approximate the term 2x |
US6879992B2 (en) | 2000-12-27 | 2005-04-12 | Intel Corporation | System and method to efficiently round real numbers |
US6889242B1 (en) * | 2001-06-29 | 2005-05-03 | Koninklijke Philips Electronics N.V. | Rounding operations in computer processor |
WO2003038092A1 (en) * | 2001-11-01 | 2003-05-08 | Sympore Gmbh | Method for identifying transport proteins |
US7120755B2 (en) * | 2002-01-02 | 2006-10-10 | Intel Corporation | Transfer of cache lines on-chip between processing cores in a multi-core system |
US7529912B2 (en) | 2002-02-12 | 2009-05-05 | Via Technologies, Inc. | Apparatus and method for instruction-level specification of floating point format |
JP2004171234A (ja) | 2002-11-19 | 2004-06-17 | Toshiba Corp | マルチプロセッサシステムにおけるタスク割り付け方法、タスク割り付けプログラム及びマルチプロセッサシステム |
CN1503160A (zh) | 2002-11-20 | 2004-06-09 | 英业达股份有限公司 | 计算机可执行的电子书阅读界面的自动排版方法 |
US7523152B2 (en) * | 2002-12-26 | 2009-04-21 | Intel Corporation | Methods for supporting extended precision integer divide macroinstructions in a processor |
US7290023B2 (en) * | 2003-11-20 | 2007-10-30 | International Business Machines Corporation | High performance implementation of exponent adjustment in a floating point design |
US7380240B2 (en) | 2003-12-23 | 2008-05-27 | Intel Corporation | Apparatus and methods to avoid floating point control instructions in floating point to integer conversion |
JP4477959B2 (ja) * | 2004-07-26 | 2010-06-09 | 独立行政法人理化学研究所 | ブロードキャスト型並列処理のための演算処理装置 |
US20060095714A1 (en) * | 2004-11-03 | 2006-05-04 | Stexar Corporation | Clip instruction for processor |
US7447725B2 (en) | 2004-11-05 | 2008-11-04 | International Business Machines Corporation | Apparatus for controlling rounding modes in single instruction multiple data (SIMD) floating-point units |
US9223751B2 (en) | 2006-09-22 | 2015-12-29 | Intel Corporation | Performing rounding operations responsive to an instruction |
-
2006
- 2006-09-22 US US11/525,420 patent/US9223751B2/en active Active
-
2007
- 2007-09-21 RU RU2011102731/08A patent/RU2447484C1/ru not_active IP Right Cessation
- 2007-09-21 CN CNA2007101701526A patent/CN101149674A/zh active Pending
- 2007-09-21 WO PCT/US2007/079233 patent/WO2008036944A1/en active Application Filing
- 2007-09-21 CN CN201010200409XA patent/CN101882064B/zh active Active
- 2007-09-21 CN CN201310524726.0A patent/CN103593165B/zh active Active
- 2007-09-21 KR KR1020070097040A patent/KR100947138B1/ko active IP Right Grant
- 2007-09-21 CN CN201910143641.5A patent/CN109871235A/zh active Pending
- 2007-09-21 CN CN201510697468.5A patent/CN105573715B/zh active Active
- 2007-09-21 DE DE112007001989.1T patent/DE112007001989B4/de active Active
- 2007-09-21 JP JP2009528536A patent/JP4990977B2/ja active Active
- 2007-09-21 RU RU2009115188/08A patent/RU2420790C2/ru not_active IP Right Cessation
- 2007-09-21 CN CN201910766458.0A patent/CN110471643A/zh active Pending
-
2011
- 2011-12-01 JP JP2011263344A patent/JP5475746B2/ja active Active
-
2013
- 2013-03-11 US US13/793,648 patent/US9286267B2/en active Active
-
2014
- 2014-02-06 JP JP2014021474A patent/JP5851536B2/ja active Active
-
2015
- 2015-12-02 JP JP2015235721A patent/JP6162203B2/ja active Active
-
2016
- 2016-01-22 US US15/003,951 patent/US10067761B2/en active Active
-
2017
- 2017-04-12 US US15/485,356 patent/US10108416B2/en active Active
- 2017-04-12 US US15/485,372 patent/US10114640B2/en active Active
- 2017-04-12 US US15/485,378 patent/US10114641B2/en active Active
- 2017-04-27 JP JP2017087793A patent/JP6333439B2/ja active Active
- 2017-07-27 US US15/661,190 patent/US20170322802A1/en not_active Abandoned
- 2017-07-27 US US15/661,199 patent/US20170322803A1/en not_active Abandoned
- 2017-07-27 US US15/661,219 patent/US20170322805A1/en not_active Abandoned
- 2017-07-27 US US15/661,211 patent/US20170322804A1/en not_active Abandoned
-
2018
- 2018-04-24 JP JP2018082706A patent/JP6487097B2/ja active Active
-
2020
- 2020-12-01 US US17/108,083 patent/US20210216314A1/en not_active Abandoned
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5696709A (en) | 1995-03-31 | 1997-12-09 | International Business Machines Corporation | Program controlled rounding modes |
US5812439A (en) | 1995-10-10 | 1998-09-22 | Microunity Systems Engineering, Inc. | Technique of incorporating floating point information into processor instructions |
US6058410A (en) | 1996-12-02 | 2000-05-02 | Intel Corporation | Method and apparatus for selecting a rounding mode for a numeric operation |
Non-Patent Citations (2)
Title |
---|
„Guide to Assembly Language Programming in Linux", New York, Springer, 2005, S.443 - 458 von Dandamudi, Siwarama P. haben im Kapitel 22 „Floating-Point Operations" |
DANDAMUDI, Sivarama P.: Guide to Assembly Language Programming in Linux. New York, NY : Springer, 2005. S. 443-458. - ISBN 0-387-25897-3. - ISBN 978-0-387-25897-3 * |
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE112007001989B4 (de) | Ausführung von Rundungsoperationen entsprechend einer Anweisung | |
DE69233361T2 (de) | Ein-Chip-Mikrocomputer | |
DE102008059371B4 (de) | Funktionseinheit für verschmolzenes Multiplizieren und Addieren | |
DE60018078T2 (de) | Einstellung von bedingungswerten in einem rechner | |
DE19540102C2 (de) | Verfahren und Gleitkomma-Recheneinheit mit einer Logik für eine Vierfach-Präzisions-Arithmetik | |
DE112010002773T5 (de) | Entpacken von gepackten daten auf mehreren spuren | |
DE102013018915A1 (de) | Ein Ansatz zur Leistungsreduzierung in Gleitkommaoperationen | |
DE112006003875T5 (de) | Gleitkommaaddition für unterschiedliche Gleitkommaformate | |
DE102010051476A1 (de) | Addierbefehle, um drei Quelloperanden zu addieren | |
DE102019120838A1 (de) | Dynamische Gleitkommabereichserweiterung | |
DE102018120859A1 (de) | Inline-Dateninspektion zur Arbeitslastvereinfachung | |
DE102014100108A1 (de) | Festkomma-divisionschaltung unter verwendung einer gleitkomma-architektur | |
DE102018125232A1 (de) | Einrichtung und Verfahren für komplexe Multiplikation und Akkumulation | |
DE102009051288A1 (de) | Befehl und Logik zur Ausführung von Bereichserkennung | |
DE102018124919A1 (de) | Skalierbare speicheroptimierte Hardware für Matrix-Solve | |
DE102018125805A1 (de) | Systeme, verfahren, und vorrichtungen für skalarproduktoperationen | |
DE112011103197T5 (de) | Verfahren und Vorrichtung für universelle logische Operationen | |
DE112015003588T5 (de) | Maschinenbefehle zum Umsetzen von einem gepackten Dezimalformat zu einem dezimalen Gleitkommaformat | |
DE102018125971A1 (de) | Systeme und verfahren zum berechnen von skalaprodukten von halbbytes in operanden aus zwei kacheln | |
DE10025249C2 (de) | Verfahren zur Ausführung sowohl von Divisions- als auch Restbefehlen und Datenverarbeitungsgerät, welches das Verfahren anwendet | |
DE10210663A1 (de) | Vorrichtung und Verfahren für Anzeige- und/oder Präzisionsoperationen von numerischen Werten in binären Systemen | |
DE102018130226A1 (de) | Systeme, Verfahren und Einrichtungen für Vektor-Broadcast | |
DE102018129291A1 (de) | Einrichtung und Verfahren zum Addieren mit Drehung und Halbierung von gepackten Datenelementen | |
DE102018006013A1 (de) | Systeme, vorrichtungen und verfahren für dualen komplex durch komplexe konjugationsmultiplikation von vorzeichenbehafteten wörtern | |
DE102018006736A1 (de) | Einrichtung und Verfahren zum Durchführen von Transformationen von gepackten komplexen Daten mit echten und imaginären Komponenten |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OP8 | Request for examination as to paragraph 44 patent law | ||
R016 | Response to examination communication | ||
R016 | Response to examination communication | ||
R016 | Response to examination communication | ||
R130 | Divisional application to |
Ref document number: 112007003807 Country of ref document: DE Ref document number: 112007003810 Country of ref document: DE Ref document number: 112007003815 Country of ref document: DE |
|
R130 | Divisional application to |
Ref document number: 112007003807 Country of ref document: DE Ref document number: 112007003810 Country of ref document: DE Ref document number: 112007003815 Country of ref document: DE |
|
R082 | Change of representative |
Representative=s name: BOEHMERT & BOEHMERT ANWALTSPARTNERSCHAFT MBB -, DE Representative=s name: MUELLER HOFFMANN & PARTNER PATENTANWAELTE MBB, DE |
|
R016 | Response to examination communication | ||
R130 | Divisional application to |
Ref document number: 112007003807 Country of ref document: DE Ref document number: 112007003815 Country of ref document: DE Ref document number: 112007003810 Country of ref document: DE |
|
R018 | Grant decision by examination section/examining division | ||
R020 | Patent grant now final | ||
R082 | Change of representative |
Representative=s name: BOEHMERT & BOEHMERT ANWALTSPARTNERSCHAFT MBB -, DE |