DE102013018915A1 - Ein Ansatz zur Leistungsreduzierung in Gleitkommaoperationen - Google Patents

Ein Ansatz zur Leistungsreduzierung in Gleitkommaoperationen Download PDF

Info

Publication number
DE102013018915A1
DE102013018915A1 DE102013018915.2A DE102013018915A DE102013018915A1 DE 102013018915 A1 DE102013018915 A1 DE 102013018915A1 DE 102013018915 A DE102013018915 A DE 102013018915A DE 102013018915 A1 DE102013018915 A1 DE 102013018915A1
Authority
DE
Germany
Prior art keywords
operand
multiply
exponent
integrated circuit
add instruction
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.)
Pending
Application number
DE102013018915.2A
Other languages
English (en)
Inventor
David Conrad Tannenbaum
Colin SPRINKLE
Stuart F. Oberman
Ming Y. Siu
Srinivasan Iyer
Ian-Chi Yan KWONG
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.)
Nvidia Corp
Original Assignee
Nvidia 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 Nvidia Corp filed Critical Nvidia Corp
Publication of DE102013018915A1 publication Critical patent/DE102013018915A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • 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
    • G06F7/487Multiplying; Dividing
    • G06F7/4876Multiplying
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3237Power saving characterised by the action undertaken by disabling clock generation or distribution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3243Power saving in microcontroller unit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3287Power saving characterised by the action undertaken by switching off individual functional units in the computer system
    • 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
    • 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/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Software Systems (AREA)
  • Nonlinear Science (AREA)
  • Computer Hardware Design (AREA)
  • Advance Control (AREA)

Abstract

Es wird ein Ansatz bereitgestellt, um eine Leistungsreduzierung in Gleitkommaoperationen zu ermöglichen. In einem Beispiel empfängt ein System Gleitkommazahlen des vereinigten Multiplizier-Addier-Befehls. Das System ermittelt, ob der vereinigte Multiplizier-Addier-Befehl keine Konformität mit einem Genauigkeitsstandard für Gleitkommazahlen erfordert. Das System erzeugt Ausblendsignale für eine integrierte Schaltung, die ausgebildet ist, Operationen des vereinigten Multiplizier-Addier-Befehls auszuführen. Das System sendet dann die Ausblendsignale an die integrierte Schaltung, um mehrere, in der integrierten Schaltung enthaltene Logikgatter abzuschalten.

Description

  • HINTERGRUND DER ERFINDUNG
  • Gebiet der Erfindung
  • Die vorliegende Erfindung betrifft generell integrierte Schaltungen und betrifft insbesondere einen Ansatz zur Leistungsreduzierung in Gleitkommaoperationen integrierter Schaltungen.
  • Beschreibung des Stands der Technik
  • Ein Prozessor in einem Computer ist typischerweise ausgebildet, Gleitkommaoperationen für Anwendungen auszuführen. Beispielsweise kann ein konventionelles Computersystem eine zentrale Recheneinheit (CPU) oder eine grafische Verarbeitungseinheit (GPU) aufweisen, die ausgebildet ist, Gleitkommaoperationen auszuführen. Ein Gleitkomma ist eine Möglichkeit für den Computer, eine reelle Zahl in einer Weise darzustellen, die einen weiten Bereich von Werten umspannen kann.
  • Der Begriff Gleitkomma bezeichnet die Tatsache, dass der Dezimalpunkt (oder der Binärpunkt) „fließen bzw. gleiten” kann. Beispielsweise kann ein Prozessor den Dezimalpunkt irgendwo in Bezug auf die signifikanten Ziffern der Zahl anordnen. Diese Position wird separat in der internen Darstellung der Gleitkommazahl angegeben. Folglich kann die Gleitkommadarstellung als eine Computerrealisierung einer wissenschaftlichen Notation betrachtet werden. Im Laufe der Zeit haben die Computer-Ingenieure eine Vielzahl an Gleitkommadarstellungen in Computern verwendet. Seit den 1990ern ist die häufigste angetroffene Darstellung jene, die durch den Standard des Instituts für elektrische und elektronische Ingenieure (IEEE) 754 definiert ist.
  • Prozessoren, die Gleitkommaoperationen ausführen, müssen typischerweise den Standards des IEEE 754-Standard entsprechen. Bei Hochleistungsberechnungen ist eine vollständige IEEE-Genauigkeit und Rundungskonformität erforderlich. Nachteiligerweise geht dies mit einem Verbrauch von Fläche und Leistung in einer integrierten Schaltung einher. Dieser Aufwand ist eine zusätzliche Belastung, insbesondere wenn die gerade ausgeführten Berechnungen nicht die Genauigkeit und Rundungskonformität benötigen, die durch den Standard vorgegeben ist.
  • Wie das Vorhergehende zeigt, ist das, was im Stand der Technik benötigt wird, ein effizienter Ansatz zur Ausführung von Gleitkommaoperationen in Computersystemen.
  • ÜBERBLICK ÜBER DIE ERFINDUNG
  • Eine Realisierung der vorliegenden Technik umfasst ein Verfahren zur Ermöglichung einer Leistungsreduzierung in Gleitkommaoperationen. Das Verfahren umfasst Empfangen von Gleitkommazahlen, mit einem Operanden A, einem Operanden B und einem Operanden C eines vereinigten Multiplizier-Addier-Befehls, wobei der vereinigte Multiplizier-Addier-Befehl als der Operand A multipliziert mit dem Operanden B plus den Operanden C dargestellt ist; Ermitteln, dass der vereinigte Multiplizier-Addier-Befehl keine Konformität mit einem Standard an Genauigkeit für Gleitkommazahlen benötigt; Erzeugen von Ausblendsignalen für eine integrierte Schaltung, die ausgebildet ist, Operationen des vereinigten Multiplizier-Addier-Befehls auszuführen, indem Bits niedriger Ordnung des Operanden C und Bits niedriger Ordnung eines Produkts des Operanden A multipliziert mit dem Operanden B ermittelt werden; und Senden der Ausblendsignale an die integrierte Schaltung, um mehrere Logikgatter, die in der integrierten Schaltung enthalten sind, abzuschalten.
  • Vorteilhafterweise erlaubt es das System mehrere unterschiedliche unmittelbare Kompromisspunkte zwischen Genauigkeit und Leistungseinsparung zu setzen, wenn Gleitkommaoperationen ausgeführt werden. Die Kompromisspunkte beruhen auf dem Grad, mit welchem Bits niedriger Ordnung von Gleitkommazahlen in dem Bestreben zur Energieeinsparung ignoriert werden können, die ansonsten zur vollständigen Berechnung der Bits niedriger Ordnung aufzuwenden wären. In einer Realisierung beruhen die Kompromisspunkte auf den relativen Differenzen der Exponenten von Operanden eines vereinigten Multiplizier-Addier-(FMA-)Befehls. Durch die Anwendung einer Teilgenauigkeit vollzieht das System weniger Schaltungen in den Flip-Flops in der integrierten Schaltung und arbeitet somit bei reduzierter Leistung.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Um die Art und Weise, in der die oben genannten Merkmale der vorliegenden Erfindung detailliert verstanden werden können, anzugeben, wird eine speziellere Beschreibung der Erfindung, die zuvor kurz zusammengefasst ist, mit Bezug zu Realisierungen angegeben, wovon einige in den angefügten Zeichnungen dargestellt sind. Es sollte jedoch beachtet werden, dass die angefügten Zeichnungen nur typische Realisierungen dieser Erfindung zeigen und daher nicht als beschränkend für ihren Schutzbereich zu betrachten sind, da die Erfindung andere gleichermaßen wirksame Realisierungen zulässt.
  • 1 ist eine Blockansicht, die ein Computersystem darstellt, das zur Realisierung eines oder mehrere Aspekte der vorliegenden Erfindung ausgebildet ist.
  • 2 ist eine Blockansicht, die ein Parallelverarbeitungssubsystem gemäß einer Ausführungsform der vorliegenden Erfindung darstellt.
  • 3 ist eine Ansicht einer anschaulichen Gleitkommazahl gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 4 ist eine Konzeptansicht eines anschaulichen vereinigten Multiplizier-Addier-(FMA-)Befehls gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 5 ist eine Konzeptansicht eines weiteren anschaulichen FMA-Befehls gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 6 ist eine Konzeptansicht eines weiteren Beispiels eines FMA-Befehls gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 7 ist eine Konzeptansicht eines anschaulichen Multiplikations-Arrays gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 8 ist eine Konzeptansicht des arithmetischen Subsystems aus 2 gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 9 ist ein Flussdiagramm von Verfahrensschritten, die eine Leistungsreduzierung bei Gleitkommaoperationen gemäß einer Ausführungsform der vorliegenden Erfindung ermöglichen.
  • DETAILLIERTE BESCHREIBUNG
  • In der folgenden Beschreibung sind zahlreiche spezielle Details angegeben, um ein gründlicheres Verständnis der vorliegenden Erfindung zu ermöglichen. Jedoch erkennt der Fachmann, dass die vorliegende Erfindung auch ohne eines oder mehrere dieser speziellen Details praktiziert werden kann. In anderen Fällen sind gut bekannte Merkmale nicht beschrieben, um eine Verdunkelung der vorliegenden Erfindung zu vermeiden.
  • Systemüberblick
  • 1 ist eine Blockansicht, die ein Computersystem 100 darstellt, das ausgebildet ist, einen oder mehrere Aspekte der vorliegenden Erfindung zu realisieren. Das Computersystem 100 umfasst eine zentrale Recheneinheit (CPU) 102 und einen Systemspeicher 104, der einen Gerätetreiber 103 enthält. Die CPU 102 und der Systemspeicher 104 kommunizieren über einen Verbindungspfad, der eine Speicherbrücke 105 enthalten kann. Die Speicherbrücke 105, die beispielsweise ein Nordbrücken-Chip sein kann, ist über einen Bus oder einen anderen Kommunikationspfad 106 (beispielsweise eine HyperTransport-Verbindung, usw.) mit einer Eingabe/Ausgabe-(I/O-)Brücke 107 verbunden. Die I/O-Brücke 107, die beispielsweise ein Südbrücken-Chip sein kann, empfängt eine Anwendereingabe aus einem oder mehreren Anwender-Eingabegeräten 108 (beispielsweise Tastatur, Maus, usw.) und leitet die Eingabe an die CPU 102 über den Pfad 106 und die Speicherbrücke 105 weiter. Ein Parallelverarbeitungssubsystem 112 ist mit der Speicherbrücke 105 über einen Bus oder einen anderen Kommunikationspfad 113 (beispielsweise einen peripheren Komponenten-Verbindungs-(PCI)Express, einen beschleunigten Graphikport (AGP) und/oder eine HyperTransport-Verbindung, usw.) verbunden. In einer Realisierung ist das Parallelverarbeitungssubsystem 112 ein Grafiksubsystem, das Pixel an ein Anzeigegerät 110 liefert (beispielsweise ein Monitor auf Basis einer konventionellen Kathodenstrahlröhre (CRT) und/oder auf Basis einer Flüssigkristallanzeige (LCD)). Eine Systemdiskette 114 ist ebenfalls mit der I/O-Brücke 107 verbunden. Ein Schalter bzw. eine Schalteinrichtung 116 stellt Verbindungen zwischen der I/O-Brücke 107 und anderen Komponenten, etwa einem Netzwerkadapter 118 und diversen Zusatzkarten 120 und 121 her. Andere Komponenten (nicht explizit gezeigt) einschließlich eines universellen seriellen Busses (USB) und/oder andere Portverbindungen, Kompaktdisketten-(CD)Laufwerke, digitale Video Disketten-(DVD)Laufwerke, Filmaufzeichnungsgeräte und dergleichen, können ebenfalls mit der I/O-Brücke 107 verbunden sein. Kommunikationspfade, die die diversen Komponenten in 1 miteinander verbinden, können unter Anwendung geeigneter Protokolle, etwa PCI, PCI-Express (PCIe), AGP, HyperTransport und/oder anderen Busprotokollen oder Punkt-Zu-Punkt-Kommunikationsprotokollen und Verbindungen zwischen unterschiedlichen Geräten, die unterschiedliche Protokolle verwenden, wie sie im Stand der Technik bekannt sind, realisiert werden. Ein Gerät ist eine Hardware oder eine Kombination aus Hardware und Software.
  • Wie nachfolgend detaillierter in Verbindung mit den 39 beschrieben ist, umfasst das Parallelverarbeitungssubsystem 112 Parallelverarbeitungseinheiten (PPUs), die ausgebildet sind, eine Softwareanwendung auszuführen (beispielsweise den Gerätetreiber 103) durch Verwendung einer Schaltung, die eine Leistungsreduzierung bei Gleitkommaoperationen ermöglicht. Diese Paketarten sind durch das von dem Kommunikationspfad 113 verwendete Kommunikationsprotokoll angegeben. In Situationen, in denen eine neue Paketarten in das Kommunikationsprotokoll eingeführt wird (beispielsweise aufgrund einer Erweiterung des Kommunikationsprotokolls), kann das Parallelverarbeitungssubsystem 112 ausgebildet sein, Pakete auf der Grundlage der neuen Paketarten zu erzeugen und Daten mit der CPU 102 (oder anderen Verarbeitungseinheiten) über den Kommunikationspfad 113 unter Anwendung der neuen Paketarten auszutauschen.
  • In einer Realisierung enthält das Parallelverarbeitungssubsystem 112 eine Schaltung, die für Grafikverarbeitung und Videoverarbeitung optimiert ist, und beispielsweise eine Videoausgabeschaltung umfasst, und sie bildet eine grafische Verarbeitungseinheit (GPU). In einer weiteren Realisierung enthält das Parallelverarbeitungssubsystem 112 eine Schaltung, die für eine Verarbeitung für Allgemeinzwecke optimiert ist, wobei die zugrunde liegende Rechenarchitektur, die nachfolgend detaillierter beschrieben ist, beibehalten wird. In einer noch weiteren Realisierung kann das Parallelverarbeitungssubsystem 112 zusammen mit einem oder mehreren anderen Systemelementen, etwa der Speicherbrücke 105, der CPU 102 und der I/O-Brücke 107 so integriert sein, dass ein System auf einem Chip (SoC) gebildet ist.
  • Zu beachten ist, dass das hierin gezeigte System anschaulicher Natur ist und dass Änderungen und Modifizierungen möglich sind. Die Verbindungstopologie einschließlich der Anzahl und Anordnung von Brücken, die Anzahl von CPUs 102 und die Anzahl von Parallelverarbeitungssubsystemen 112 kann nach Bedarf modifiziert werden. Beispielsweise ist in einigen Realisierungen der Systemspeicher 104 direkt mit der CPU 102 anstatt über eine Brücke verbunden, und andere Geräte kommunizieren mit dem Systemspeicher 104 über die Speicherbrücke 105 und die CPU 102. In anderen alternativen Topologien ist das Parallelverarbeitungssubsystem 112 mit der I/O-Brücke 107 oder direkt mit der CPU 102 anstatt mit der Speicherbrücke 105 verbunden. In noch anderen Ausführungsformen können die I/O-Brücke 107 und die Speicherbrücke 105 in einem einzelnen Chip integriert sein. Große Ausführungsformen können zwei oder mehr CPUs 102 und zwei oder mehr Parallelverarbeitungssubsysteme 112 aufweisen. Die speziellen hierin gezeigten Komponenten sind optional; beispielsweise kann eine beliebige Anzahl an Zusatzkarten oder peripheren Geräten vorgesehen sein. In einigen Realisierungen ist der Schalter 116 weggelassen, und der Netzwerkadapter 118 und die Zusatzkarten 120, 121 sind direkt mit der I/O-Brücke 107 verbunden.
  • 2 ist eine Blockansicht, die ein Parallelverarbeitungssubsystem 112 gemäß einer Ausführungsform der vorliegenden Erfindung darstellt. Wie gezeigt, umfasst das Parallelverarbeitungssubsystem 112 eine oder mehrere Parallelverarbeitungseinheiten (PPUs) 202, wovon jede mit einem lokalen Parallelverarbeitungs-(PP)Speicher 204 verbunden ist. Im allgemeinen enthält ein Parallelverarbeitungssubsystem eine Anzahl U an PPUs, wobei U ≥ 1 ist. (Hierin werden mehrere Instanzen gleicher Objekte mit Bezugszeichen belegt, die das Objekt kennzeichnen, und die Zahlen in Klammern geben bei Bedarf die Instanz an.) Die PPUs 202 und die Parallelverarbeitungsspeicher 204 können unter Anwendung einer oder mehrerer integrierter Schaltungseinrichtungen, etwa programmierbare Prozessoren, anwendungsspezifische integrierte Schaltungen (ASIC) oder Speichereinrichtungen oder in einer anderen technisch machbaren Weise realisiert werden.
  • Es sei wieder auf 1 verwiesen; in einigen Realisierungen sind einige oder alle der PPUs 202 in dem Parallelverarbeitungssubsystem 112 Grafikprozessoren mit Bilderzeugungspipelines, die ausgebildet sein können, diverse Aufgaben auszuführen, die in Beziehung stehen mit: Erzeugung von Pixeldaten aus Grafikdaten, die von der CPU 102 und/oder dem Systemspeicher 104 über die Speicherbrücke 105 und den Bus 113 zugeleitet werden, der Wechselwirkung mit dem lokalen Parallelverarbeitungsspeicher 204 (der als Grafikspeicher verwendbar ist und beispielsweise einen konventionellen Blockpuffer enthält), um Pixeldaten zu speichern und zu aktualisieren, mit der Zuleitung von Pixeldaten zu dem Anzeigegerät 110 usw. In einigen Realisierungen kann das Parallelverarbeitungssubsystem 112 eine oder mehrere PPUs 202 aufweisen, die als Grafikprozessoren arbeiten, und eine oder mehrere andere PPUs 202, die für Berechnungen für Allgemeinzwecke verwendet werden. Die PPUs können identisch oder unterschiedlich sein, und jede PPU kann eine oder mehrere ihr zugewiesene Parallelverarbeitungsspeichereinrichtungen oder keine spezielle zugewiesene Parallelverarbeitungsspeicher aufweisen. Eine oder mehrere PPUs 202 können Daten an das Anzeigegerät 110 ausgeben, oder es kann jede PPU 202 Daten an ein oder mehrere Anzeigegeräte 110 ausgeben.
  • Während des Betriebs ist die CPU 102 der übergeordnete Prozessor des Computersystems 100 und steuert und koordiniert den Betrieb anderer Systemkomponenten. Insbesondere gibt die CPU 102 Befehle aus, die den Betrieb der PPUs 202 steuern. In einigen Realisierungen schreibt die CPU 102 einen Strom von Befehlen für jede PPU 202 in einen Schiebepuffer (in 1 oder 2 nicht explizit gezeigt), der in dem Systemspeicher 104, dem Parallelverarbeitungsspeicher 204 oder einer weiteren Speicherstelle angeordnet sein kann, auf die sowohl die CPU 102 als auch die PPU 202 zugreifen kann. Die PPU 202 liest den Befehlsstrom aus dem Schiebepuffer aus und führt dann Befehle asynchron im Verhältnis zur Arbeitsweise der CPU 102 aus.
  • Es sei nun wieder auf 2 verwiesen; jede PPU 202 enthält eine I/O-Einheit 205, die mit dem Rest des Computersystems 100 über den Kommunikationspfad 113 in Verbindung steht, der mit der Speicherbrücke 105 (oder in einer alternativen Realisierung direkt mit der CPU 102) verbunden ist. Die Verbindung der PPU 202 mit dem Rest des Computersystems 100 kann auch anders sein. In einigen Realisierungen ist das Parallelverarbeitungssubsystem 112 als eine Zusatzkarte realisiert, die in einen Erweiterungssteckplatz des Computersystems 100 eingeführt werden kann. In anderen Realisierungen kann eine PPU 202 in einem einzelnen Chip zusammen mit einer Busbrücke, etwa der Speicherbrücke 105 oder der I/O-Brücke 107 integriert sein. In noch anderen Realisierungen können einige oder alle Elemente der PPU 202 zusammen mit der CPU 102 in einem einzelnen Chip integriert sein.
  • In einer Realisierung ist der Kommunikationspfad 113 eine PCIe-Verbindung, in der spezielle Bahnen jeder PPU 202 zugewiesen sind, wie dies im Stand der Technik bekannt ist. Es können auch andere Kommunikationspfade verwendet werden. Wie zuvor erwähnt ist, kann eine Gegenstrom-Verbindung ebenfalls verwendet werden, um den Kommunikationspfad 113 zu realisieren, sowie einen beliebigen anderen Kommunikationspfad in dem Computersystem 100, der CPU 102 oder der PPU 202. Eine I/O-Einheit 205 erzeugt Pakete (oder andere Signale) zur Übertragung auf dem Kommunikationspfad 113 und empfängt ferner alle eintreffenden Pakete (oder andere Signale) aus dem Kommunikationspfad 113, wobei die eintreffenden Pakete zu geeigneten Komponenten der PPU 202 weitergeleitet werden. Beispielsweise können Befehle, die Verarbeitungsaufgaben betreffen, zu einer Hauptschnittstelle 206 geleitet werden, während Befehle, die Speicheroperationen betreffen (beispielsweise Lesen von oder Schreiben in den Parallelverarbeitungsspeicher 204) zu einer Speicherkreuzungseinheit 210 geleitet werden können. Die Hauptschnittstelle 206 liest jeden Schiebepuffer aus und gibt die Arbeit, die durch den Schiebepuffer angegeben wird, an einen Frontbereich 212 aus.
  • Jede PPU 202 realisiert vorteilhafterweise eine hoch parallele Verarbeitungsarchitektur. Wie detailliert gezeigt ist, umfasst die PPU 202(0) ein arithmetisches Subsystem 230, das eine Anzahl C an allgemeinen Verarbeitungs-Clustern (GPCs) 208 aufweist, wobei C ≥ 1 ist. Jeder GPC 208 ist in der Lage, eine große Anzahl (beispielsweise hunderte oder tausende) Stränge gleichzeitig auszuführen, wobei jeder Strang eine Instanz eines Programms ist. In diversen Ausführungsformen können unterschiedliche GPCs 208 zur Verarbeitung unterschiedlicher Arten von Programmen oder zum Ausführen unterschiedlicher Arten von Berechnungen zugewiesen werden. Die Zuweisung der GPCs 208 kann in Abhängigkeit von der Arbeitslast, die für jede Art von Programm oder Berechnung auftritt, unterschiedlich sein.
  • Die GPCs 208 empfangen auszuführende Verarbeitungsaufgaben über eine Arbeitsverteilungseinheit 200, die Befehle, die Verarbeitungsaufgaben definieren, von der Frontbereichseinheit 212 empfängt. Verarbeitungsaufgaben können Gleitkommaoperationen, etwa A·B + C, das heißt einen vereinigten Multiplizier-Addier-(FMA)Befehl enthalten. Die Arbeitsverteilungseinheit 200 kann ausgebildet sein, die Operanden (beispielsweise A, B und C), die den Aufgaben zugeordnet sind, abzuholen, oder die Arbeitsverteilungseinheit 200 kann die Operanden (beispielsweise A, B und C) aus dem Frontbereich 212 empfangen. Der Frontbereich 212 stellt sicher, dass die GPCs 208 in einen zulässigen Zustand konfiguriert werden, bevor die von den Schiebepuffern spezifizierte Verarbeitung beginnt.
  • Wenn die PPU 202 für eine grafische Verarbeitung verwendet wird, kann beispielsweise die zu verarbeitende Arbeitslast für jede Gleitkommaoperation in ungefähr gleich dimensionierte Aufgaben unterteilt werden, um die Verteilung der Operationen auf mehrere GPCs 208 zu ermöglichen. Eine Arbeitsverteilungseinheit 200 kann ausgebildet sein, Aufgaben mit einer Frequenz zu erzeugen, die geeignet ist, Aufgaben für mehrere GPCs 208 zur Verarbeitung bereitzustellen. In einer Realisierung kann die Arbeitsverteilungseinheit 200 Aufgaben schnell genug erzeugen, so dass sie gleichzeitig mehrere GPCs 208 beschäftigen kann. Im Gegensatz dazu wird in konventionellen Systemen die Verarbeitung typischerweise von einer einzelnen Verarbeitungseinheit ausgeführt, während die anderen Verarbeitungseinheiten untätig bleiben und darauf warten, dass die einzelne Verarbeitungseinheit ihre Aufgaben abschließt, bevor sie mit der Verarbeitung von Aufgaben beginnen. In einigen Realisierungen der vorliegenden Erfindung sind Teile der GPCs 208 ausgebildet, unterschiedliche Arten der Verarbeitung auszuführen.
  • Beispielsweise kann ein erster Teil ausgebildet sein, eine Vertex-Schattierung und eine Topologie-Erzeugung auszuführen. Ein zweiter Teil kann ausgebildet sein, eine Parkettierung und eine Geometrie-Schattierung auszuführen. Ein dritter Teil kann ausgebildet sein, eine Pixel-Schattierung im Bildschirm-Raum auszuführen, um ein erzeugtes Bild bereitzustellen. Zwischendaten, die von den GPCs 208 erzeugt werden, können in Puffern gespeichert werden, so dass die Zwischendaten zwischen den GPCs 208 für die weitere Verarbeitung ausgetauscht werden können.
  • Die Speicherschnittstelle 214 enthält eine Anzahl D an Partitionseinheiten 215, die jeweils direkt mit einem Teil des Parallelverarbeitungsspeichers 204 gekoppelt sind, wobei D ≥ 1 ist. Wie gezeigt, ist im allgemeinen die Anzahl an Partitionseinheiten 215 gleich der Anzahl an DRAM 220. In anderen Realisierungen ist die Anzahl an Partitionseinheiten 215 gegebenenfalls nicht gleich der Anzahl an Speichereinrichtungen. Die dynamischen Speicher mit wahlfreiem Zugriff (DRAM) 220 können durch andere geeignete Speichereinrichtungen ersetzt werden und können von allgemein konventioneller Gestaltungsform sein. Bilderzeugungsziele, etwa Blockpuffer oder Texturzuordnungen können in den DRAMs 220 gespeichert werden, wodurch es den Partitionseinheiten 215 möglich ist, Bereiche jedes Bilderzeugungsziels parallel zu beschreiben, um die verfügbare Bandbreite des Parallelverarbeitungsspeichers 204 effizient auszunutzen.
  • Jeder der GPCs 208 kann Daten, die in einen der DRAMs in den Parallelverarbeitungsspeicher 204 zu schreiben sind, verarbeiten. Die Kreuzungseinheit 210 ist ausgebildet, die Ausgabe jedes GPC 208 dem Eingang einer Partitionseinheit 215 oder einer weiteren GPC 208 für die Weiterverarbeitung zuzuführen. Die GPCs 208 kommunizieren mit der Speicherschnittstelle 214 über die Kreuzungseinheit 210, um diverse externe Speichergeräte auszulesen oder diese zu beschreiben. In einer Realisierung hat die Kreuzungseinheit 210 eine Verbindung zu der Speicherschnittstelle 214, um mit der I/O-Einheit 205 zu kommunizieren, und hat auch eine Verbindung zu dem lokalen Parallelverarbeitungsspeicher 204, wodurch die Verarbeitungskerne in den unterschiedlichen GPCs 208 in die Lage versetzt werden, mit dem Systemspeicher 104 oder mit einem anderen Speicher, der nicht lokal für die PPU 202 ist, zu kommunizieren. In der in 2 gezeigten Realisierung ist die Kreuzungseinheit 210 direkt mit der I/O-Einheit 205 verbunden. Die Kreuzungseinheit 210 kann virtuelle Kanäle benutzen, um Verkehrsströme zwischen den GPCs 208 und den Partitionseinheiten 215 zu trennen.
  • Wiederum können die GPCs 208 so programmiert sein, dass sie Verarbeitungsaufgaben, die eine Fülle von Anwendungen betreffen, ausführen, wozu gehören, ohne einschränkend zu sein, lineare und nichtlineare Datentransformationen, die Filterung von Video- und/oder Audiodaten, Modellierungsoperationen (beispielsweise die Anwendung physikalischer Gesetze zur Bestimmung von Position, Geschwindigkeit und anderen Attributen von Objekten), Bilderzeugungsoperationen (beispielsweise Programme für die Parkettierungs-Schattierung, Vertex-Schattierung, Geometrie-Schattierung und/oder Pixel-Schattierung), usw. Die PPUs 202 können Daten aus dem Systemspeicher 104 und/oder aus den lokalen Parallelverarbeitungsspeichern 204 in einen internen (chipinternen) Speicher übertragen, die Daten verarbeiten und die Ergebnisdaten zurück in den Systemspeicher 104 und/oder in die lokalen Parallelverarbeitungsspeicher 204 schreiben, wo auf derartige Daten von anderen Systemkomponenten einschließlich der CPU 102 oder einem weiteren Parallelverarbeitungssubsystem 112 zugegriffen werden kann.
  • Eine PPU 202 kann mit einer beliebigen Größe eines lokalen Parallelverarbeitungsspeichers 204 ausgestattet sein, wobei auch kein lokaler Speicher mit eingeschlossen ist, und sie kann den lokalen Speicher und den Systemspeicher in beliebiger Kombination benutzen. Beispielsweise kann eine PPU 202 ein Grafikprozessor in einer Realisierung mit vereinheitlichter Speicherarchitektur (UMA) sein. In derartigen Realisierungen wird wenig oder kein spezieller Grafik-(Parallelverarbeitungs-)Speicher bereitgestellt, und die PPU 202 wird in diesem Falle ausschließlich oder nahezu ausschließlich den Systemspeicher benutzen. In UMA-Realisierungen kann eine PPU 202 in einem Brückenchip oder einem Prozessorchip integriert sein oder kann als ein diskreter Chip mit einer Hochgeschwindigkeitsverbindung (beispielsweise PCIe) versehen sein, die die PPU 202 mit dem Systemspeicher über einen Brückenchip oder eine andere Kommunikationseinrichtungen verbindet.
  • Wie zuvor dargestellt ist, kann eine beliebige Anzahl an PPUs 202 in einem Parallelverarbeitungssubsystem 112 enthalten sein. Beispielsweise können mehrere PPUs 202 in einer einzelnen Zusatzkarte vorgesehen sein, oder es können mehrere Zusatzkarten mit dem Kommunikationspfad 113 verbunden sein, oder eine oder mehrere PPUs 202 können in einen Brückenchip integriert sein. Die PPUs 202 in einem Multi-PPU-System können identisch oder unterschiedlich zueinander sein. Beispielsweise können unterschiedliche PPUs 202 eine unterschiedliche Anzahl an Verarbeitungskernen, eine unterschiedliche Größe des lokalen Parallelverarbeitungsspeichers usw. aufweisen. Wenn mehrere PPUs 202 vorhanden sind, können diese PPUs parallel betrieben werden, um Daten mit einem höheren Durchsatz zu verarbeiten, als dies mit einer einzelnen PPU 202 möglich wäre. Systeme, die eine oder mehrere PPUs 202 enthalten, können in einer Vielzahl von Konfigurationen und Formfaktoren realisiert werden, wozu ein Tischrechner, ein tragbarer Rechner, oder Hand-Personalcomputer, Dienstleister-Rechner, Arbeitsplatzrechner, Spielekonsolen, eingebettete Systeme und dergleichen gehören.
  • Eine Ausführungsform der Erfindung kann als ein Programmprodukt zur Verwendung in einem Computersystem realisiert werden, etwa beispielsweise in dem Computersystem 100 aus 1. Ein oder mehrere Programme des Programmprodukts definieren Funktionen der Ausführungsformen (einschließlich der hierin beschriebenen Verfahren) und können in einer Vielzahl von computerlesbaren Speichermedien enthalten sein. Zu anschaulichen computerlesbaren Speichermedien gehören, ohne Einschränkung: (i) nicht-beschreibbare Speichermedien (beispielsweise Nur-Lese-Speichereinrichtungen in einem Computer, etwa CD-ROM-Disketten, die durch ein CD-ROM-Laufwerk lesbar sind, Flash-Speicher, ROM-Chips oder eine andere Art von nicht-flüchtigen Halbleiterspeichern), auf denen Information permanent gespeichert ist; und (ii) beschreibbare Speichermedien (beispielsweise Disketten in einem Diskettenlaufwerk oder einem Festplattenlaufwerk oder eine andere Art an Halbleiterspeicher mit wahlfreiem Zugriff), auf denen änderbare Information gespeichert ist.
  • Aktivierung einer Leistungsreduzierung in Gleitkommaoperationen
  • Die vorliegende Technik wägt Genauigkeit gegenüber Leistungseinsparung bei Anwendungen mit intensiver Gleitkommaberechnung ab, wenn die Leistungseinsparung als das übergeordnete Ziel erachtet wird, das über der Notwendigkeit steht, mit einem IEEE-Standard konform zu sein. Beispielhafte Standards, die Regeln für Gleitkommazahlen bereitstellen, beinhalten, ohne Einschränkung IEEE 754, IEEE 754-1985, IEEE 854-1987, und IEEE 754-2008, wobei es auch andere Standards gibt.
  • In gewissen Anwendungen ist eine strikte Konformität mit einem IEEE-Standard nicht erforderlich. Beispielsweise gibt es bei der Computergrafik Fälle, in denen eine geringfügig kleinere Genauigkeit und/oder numerisch weniger ideale Rundungsoperationen akzeptabel sind. Beispielsweise ist es in einigen Grafikanwendungen ein primäres Ziel, die richtigen Pixel einzuschalten, was typischerweise keine Verarbeitung mit hoher Genauigkeit erfordert. Integrierte Schaltungen, die zur Handhabung dieser Aufgaben ausgebildet sind, verbrauchen dynamische Leistung. Der dynamische Leistungsverbrauch ist proportional zu dem Anteil der Schaltung, der schaltende Komponenten und hin- und herschaltende Flipflops aufweist. Wenn weniger Komponenten in einer integrierten Schaltung geschaltet und/oder umgeschaltet werden, dann verbraucht die integrierte Schaltung mit höherer Wahrscheinlichkeit weniger Leistung. Die vorliegende Technik nutzt die zulässige Verringerung bei der Rundungsgenauigkeit aus, um Einsparungen beim dynamischen Leistungsverbrauch bereitzustellen.
  • Die vorliegende Technik kann in einer GPU realisiert werden, in der es eine spezielle Schaltung zur Erzeugung von Grafik gibt, ohne dass eine strikte Anforderung zur Konformität mit IEEE für alle Operationen gegeben ist. Wie jedoch nachfolgend mit Bezug zu 8 beschrieben ist, kann eine Modus-Auswahleinrichtung 815 es ermöglichen, dass die Arithmetikschaltung modusabhängig ist und sowohl einen IEEE-konformen Modus als auch einen nicht konformen Leistungsverluste reduzierenden Modus unterstützt. Diese Flexibilität (beispielsweise der modusabhängige Betrieb) erlaubt die gelegenheitsabhängige Nutzung von Leistungseinsparung ganz ohne Beeinträchtigung der Fähigkeit, eine korrekte Rundung in jenen Situationen auszuführen, in denen eine korrekte Rundung erforderlich ist. Um dieses Nutzungsargument weiter zu untermauern, ist zu beachten, dass viele iterative Berechnungen, etwa das Newton-Raphson-Verfahren für Zwischenoperationen keine vollständigen IEEE-konformen Berechnungen benötigen. Die nachfolgende Beschreibung enthält eine kurze Erläuterung einer Gleitkommazahl, worauf mehr Details von Techniken folgen, um den Anteil von Schaltvorgängen in einer integrierten Schaltung zu verringern, und um somit den dynamischen Leistungsverbrauch zu reduzieren.
  • 3 ist ein Diagramm einer anschaulichen Gleitkommazahl 300 gemäß einer Ausführungsform der vorliegenden Erfindung. Gleitkommazahlen im IEEE 754-Format bestehen aus drei Feldern: ein Vorzeichen-Bit, ein voreingestellter Exponent und ein Bruchteil. Das folgende Beispiel stellt jeweils die Bedeutung dar. Die Dezimalzahl 0,1562500 ist in der Binärdarstellung 0,00101 zur Basis 2 (d. h. 1/8 +1/32 in Dezimalform). In der wissenschaftlichen Notation, in der Zahlen so geschrieben werden, dass sie eine einzelne Ziffer, die nicht Null ist, links vom Dezimalpunkt besitzen, wird die Zahl so geschrieben, dass die Zahl ein einzelnes Bit links von dem „Binärpunkt” hat. Die Zahl wird dann mit der geeigneten Potenz von 2 multipliziert, um die Verschiebung der Bits nach links um drei Positionen zu kompensieren, wie in der folgenden Gleichung 1 gezeigt ist:
    Figure DE102013018915A1_0002
  • In Gleichung 1 ist .01₂ der Bruchteil und der Exponent ist –3. In dem Beispiel aus 2 sind die drei Felder in der IEEE 754-Darstellung dieser Zahl wie folgt. Ein Vorzeichen = 0, da die Zahl positiv ist. (1 kennzeichnet ein negatives Vorzeichen). Ein voreingestellter Exponent = –3 + die „Voreinstellung”. In einfacher Genauigkeit ist die Voreinstellung 127, so dass in diesem Beispiel der voreingestellte Exponent 124 ist. Bei doppelter Genauigkeit ist die Voreinstellung 1023, so dass der voreingestellte Exponent in diesem Beispiel 1020 ist. Ein Bruchteil = ,01000... in der Basis 2.
  • Der IEEE 754-Standard fügt eine Voreinstellung den Exponenten hinzu, so dass die Zahlen in vielen Fällen bequem mit der gleichen Hardware verglichen werden können, die vorzeichenbehaftete Zweier-Komplement-Ganzzahlen vergleicht. Bei Verwendung eines voreingestellten Exponenten gilt, dass je weniger zwei positive Gleitkommazahlen als „kleiner als” erscheinen, desto besser folgen sie der gleichen Reihenfolge im Hinblick auf das Vorzeichen und den Betrag der Ganzzahl. Wenn zwei Gleitkommazahlen unterschiedliche Vorzeichen besitzen, funktioniert der Vorzeichen-und-Betrags-Vergleich auch mit den voreingestellten Exponenten. Wenn jedoch beide Gleitkommazahlen mit vorangestellten Exponenten negativ sind, dann muss die Reihenfolge vertauscht werden. Wenn der Exponent beispielsweise dargestellt wird als eine Zweier-Komplementzahl, ist ein Vergleich, um zu erkennen, welche der beiden Zahlen größer ist, nicht so bequem. In diesem Beispiel der 3 sind die signifikante Komponente 23 Bits, wobei das führende Bit mit der 1 weggelassen ist. Da alle Zahl mit Ausnahme der null mit einer führenden 1 beginnen, ist die führende 1 implizit und muss nicht gespeichert werden, wodurch ein zusätzliches Bi an Genauigkeit „gratis” erhalten wird. In einer weiteren Realisierung enthält die signifikante Komponente 24 Bits.
  • In typischen Pfaden für Gleitkommadaten gibt es Unterstützung für die Operation A·B + C, wobei jeder Operand A, B und C eine Gleitkommazahl eines vereinigten Multiplizier-Addier-(FMA-)Befehls ist. Zu beachten ist, dass die Buchstaben „A”, „B” und „C”, die als Symbole verwendet werden, die Operanden kennzeichnen; die vorliegende Technik ist nicht auf die Verwendung dieser speziellen Symbole A, B und C beschränkt. Dieser Baustein gilt auch für den vereinigten Addier-(Fadd) und den vereinigten Multiplizier-(Fmul)Befehl mittels der folgenden Gleichungen 2 und 3: Fadd = A·1,0 + C. Gleichung 2. Fmul = A·B + 0,0. Gleichung 3.
  • In einem IEEE-konformen Szenario muss die interne Genauigkeit des A·B-Produkts in seiner Gesamtheit beibehalten werden unabhängig von der relativen Größe des Operanden C, um die korrekte Rundung sicherzustellen. Wie nachfolgend mit Bezug zu den 7 und 8 erläutet ist, wird eine derartige Konformität zu einem relativ großen Multiplikations-Array und zu einem sehr breiten Schiebe-Array für das Produkt oder den Additionsoperanden C oder für beides (abhängig von der speziellen Realisierung).
  • 4 ist eine Konzeptansicht eines anschaulichen vereinigten Multiplizier-Addier-(FMA-)Befehls gemäß einer Ausführungsform der vorliegenden Erfindung. In diesem Beispiel enthält ein signifikanter Operandenteil 410 eines A·B-Produkts 47 Bits, wobei das Bit mit der führenden 1 weggelassen ist. Ein signifikanter Operandenteil 412 ist ein C-Additionsoperand. Der Additionsoperand 412 enthält 23 Bits plus der implizierten 1. Das System bewertet FMA, indem zunächst die Exponenten der eingehenden Operanden betrachtet werden. In einer Realisierung kann das System die Exponenten so einstellen, dass nicht normierten Eingängen Rechnung getragen wird. Das System verschiebt diese signifikanten Operandenteile (410, 412) auf der Grundlage der Differenz zwischen den Exponenten des Produkts A·B (nicht gezeigt) und dem Exponenten des C-Additionsoperanden (nicht gezeigt). Das System ist ausgebildet, zwischen mehreren Stellen der relativen Größe der Exponenten zu unterscheiden, etwa, wenn die beiden Exponenten vergleichbar sind, wenn der Exponent des Additionsoperanden viel größer ist und/oder wesentlich größer ist als (>>) der Exponent des Produkts, und wenn der Exponent des Produkts viel größer und/oder wesentlich größer ist als (>>) der Exponent des Additionsoperanden.
  • In dem Beispiel aus 4 ist der Exponent (nicht gezeigt) des A·B-Produkts vergleichbar mit dem Exponenten (nicht gezeigt) des Additionsoperanden C. Eine kleine Differenz zwischen diesen Exponenten impliziert, dass die Beträge des Produkts A·B und des Additionsoperanden C ähnlich sind. In einem derartigen Fall aktiviert das System unterschiedliche sofortige Kompromisspunkte, wovon jeder einen akzeptablen Kompromiss zwischen Genauigkeit, Rundung und Leistungsersparnis angibt. Das System kann Bits unterhalb des Kompromisspunkts 402 als Bits niedriger Ordnung 406, und Bits über dem Kompromisspunkt 402 als Bits 404 höherer Ordnung bezeichnen. Ein Kompromisspunkt beruht auf den relativen Differenzen der Eingangsexponenten der Gleitkommazahlen. Ein Kompromisspunkt beruht auf dem Grad, mit welchem Bits niedriger Ordnung in dem Versuch der Einsparung von Energie ignoriert werden können, die ansonsten zur Berechnung der Bits niedriger Ordnung für ein gegebenes Szenario aus Eingangswerten aufzuwenden wäre. Zu beachten ist, dass das System nicht einfach so gestaltet ist, dass die Logik für die zugehörigen niedrigen Bits weggelassen ist. Ein derartiger drastischer Aufbau würde das System unflexibel machen. Vielmehr ist in diversen Ausführungsformen das System mit einer modusabhängige Ausblendlogik versehen, die in einigen Fällen eine exakte Rundung ermöglicht, und eine Taktausblendung dieser Logik in anderen Fällen ermöglicht. Beispielsweise kann das System an der Logik (beispielsweise Flipflops) eine Taktausblendung vornehmen, die ansonsten die Bits niedriger Ordnung 406 verarbeiten würde. Ferner aktiviert das System die Logik, die die Bits mit höherer Ordnung 404 verarbeitet. Die Taktausblendung ermöglicht einen leistungsreduzierten Modus für einen nicht-IEEE-konformen Betrieb. Die Leistung wird reduziert, da der Großteil der Hardware, der zum Erzeugen der korrekt gerundeten Ergebnisse verwendet wird, nicht benötigt wird (beispielsweise wird der Takt der Logik ausgeblendet, wie zuvor beschrieben ist), um die tatsächliche Summe zu erzeugen. Folglich kann das System einen Teil der Bits niedriger Ordnung des A·B-Produkts und/oder des Additionsoperanden C aus der gesamten Erzeugung des endgültigen Ergebnisses für A·B + C entfernen.
  • 5 ist eine Konzeptansicht eines weiteren anschaulichen FMA-Befehlsszenarios gemäß einer Ausführungsform der vorliegenden Erfindung. In diesem Beispiel ist der Exponent (nicht gezeigt) des Additionsoperanden C viel größer und/oder wesentlich größer (>>) als der Exponent (nicht gezeigt) des Produkts A·B. Ein signifikanter Anteil 510 eines A·B-Produkts enthält 48 Bits. Ein signifikanter Anteil 512 des Additionsoperanden C enthält 22 Bits des Bruchteils, wobei die führende 1 hinzu addiert wird, um 24 Bits zu bilden. In einer weiteren Realisierung kann der Additionsoperand 512 24 Bits enthalten. Wiederum bewertet das System den FMA, indem zunächst die Exponenten der eingehenden Operanden betrachtet werden. Das System kann Bits unterhalb des Kompromisspunkts 502 als Bits niedriger Ordnung 506 einstufen, und kann Bits über dem Kompromisspunkt 502 als Bits höherer Ordnung 504 einstufen. Somit kann in diesem Falle das System das gesamte Produkt A·B aus der gesamten Erzeugung des endgültigen Ergebnisses für A·B + C entfernen.
  • 6 ist eine Konzeptansicht eines weiteren beispielhaften FMA-Befehlsszenarios gemäß einer Ausführungsform der vorliegenden Erfindung. In diesem Beispiel ist der Exponent (nicht gezeigt) des Additionsoperanden C viel kleiner und/oder wesentlich kleiner als (<<) der Exponent (nicht gezeigt) des Produkts A·B. Ein signifikanter Operandenanteil 610 eines A·B-Produkts enthält 48 Bits. Ein signifikanter Operandenanteil 612 eines C-Additionsoperanden enthält 24 Bits, wobei die führende 1 enthalten ist. Wiederum bewertet das System den FMA zunächst durch Betrachtung der Exponenten der eingehenden Operanden. Das System kann Bits unterhalb des Kompromisspunktes 602 als Bits niedriger Ordnung 606 bewerten, und kann die Bits über dem Kompromisspunkt 602 als Bits höherer Ordnung 604 bewerten. Somit kann in diesem Falle das System den Additionsoperanden C und einen Teil des gesamten Produkts aus der gesamten Erzeugung des endgültigen Ergebnisses für A·B + C entfernen.
  • 7 ist eine Konzeptansicht eines anschaulichen Multiplikations-Arrays 700 gemäß einer Ausführungsform der vorliegenden Erfindung. Das Multiplikations-Array 700 ist eine elektronische Schaltung, die das System verwendet, um zwei Binärzahlen (beispielsweise A·B) zu multiplizieren. Das Multiplikations-Array 700 kann unter Anwendung binärer Addierer aufgebaut sein. Das System kann eine Vielzahl von Computer-Arithmetiktechniken einsetzen, um das Multiplikations-Array 700 zu erzeugen. Die meisten Techniken beinhalten die Berechnung einer Gruppe aus Teilprodukten, und dann das Aufsummieren der Teilprodukte. Wie nachfolgend weiter beschrieben ist, ist die Technik zur Multiplikation von Ganzzahlen mit der Basis 2 (beispielsweise binäre Ganzzahlen) ähnlich zu der Technik für die Ausführung einer langen Multiplikation auf der Grundlage von Ganzzahlen der Basis 10 (beispielsweise dezimale Ganzzahlen).
  • Das Multiplikations-Array 700 ist als ein bekanntes Trapez dargestellt, das rechts anliegt. Der Operand A ist als eine erste Zahl Ai...A0 dargestellt. Der Operand B ist als eine zweite Zahl Bi...B0 dargestellt. Bei der binären Kodierung wird die erste Zahl Ai...A0 mit einer Stelle bzw. Ziffer (entweder 0 oder 1) der zweiten Zahl Bi...B0 multipliziert. Das Ergebnis ist ein Array aus Teilprodukten Mi...M0, wobei jedes Teilprodukt eine geeignet verschobene Reihe ist. Diese Multiplikation unter Verwendung von Teilprodukten ist wesentlich einfacher als im Dezimalsystem, da die Multiplikation mit 0 oder 1 nur 0 oder die erste Zahl Ai...A0. Folglich reduziert sich die Multiplikation zweier Binärzahlen auf die Berechnung von Teilprodukten Mi...M0 (die gleich 0 oder gleich der ersten Zahl sind), auf die Verschiebung der Teilprodukte nach links und dann auf die Addition der Teilprodukte (selbstverständlich eine binäre Addition).
  • Eine Multiplikation im Binärsystem ist wesentlich einfacher als im Dezimalsystem, da keine Tabelle der Multiplikation im Gedächtnis bewahrt werden muss, es gibt nur Schiebe- und Additionsoperationen. Diese Technik hat den Vorteil, dass eine kleine CPU Multiplikationen durch die Anwendung der Schiebe- und Additionseigenschaften der arithmetischen Logikeinheit der CPU anstatt mit einer spezialisierten Schaltung ausführen kann. Die Technik ist jedoch langsam, da die Technik mehrere zwischenliegende Additionsoperationen erfordert, wovon jede eine gewisse Zeit beansprucht. In älteren Multiplizierer-Architekturen werden ein Schiebeelement und ein Akkumulator verwendet, um jedes Teilprodukt aufzusummieren, häufig ein Teilprodukt pro Zyklus, wodurch Geschwindigkeit gegen Chipfläche abgewogen wird. Es können schnellere Multiplizierer entwickelt werden, um weniger Additionen auszuführen. Moderne Multiplizierer-Architekturen verwenden die Baugh-Woolgy-Algorithmus, Wallace-Bäume oder Dadda-Multiplizierer, um die Teilprodukte in einem einzelnen Zyklus auf zu addieren. Die Leistung der Ausführungsform mit dem Wallace-Baum wird häufig verbessert durch modifizierte Booth-Kodierung eines der beiden Multiplikanden, wodurch die Anzahl der Teilprodukte, die aufsummiert werden müssen, reduziert wird.
  • Wie zuvor mit Bezug zu den 26 beschrieben ist, kann das System (beispielsweise das arithmetische Subsystem 230) Bits unterhalb des Kompromisspunktes 702 als Bits niedriger Ordnung 706 und Bits über dem Kompromisspunkt 702 als Bits höherer Ordnung 704 kennzeichnen. Das System kann eine Ausblendschaltung 708 verwenden, um den Takt der Logik (beispielsweise von Flipflops) auszublenden, die ansonsten die Bits niedriger Ordnung 706 verarbeiten würden. Ferner aktiviert das System die Logik, die die Bits höherer Ordnung 704 verarbeitet. Folglich ermöglicht die Taktausblendung einen leistungsreduzierten Modus für einen nicht-IEEE-konformen Betrieb. Der leistungsreduzierte Modus des arithmetischen Subsystems 230 aus 2 ist nachfolgend mit Bezug zu 8 beschrieben.
  • Als ein Beispiel der Verarbeitung unter Anwendung einer Teilgenauigkeit (beispielsweise nicht-IEEE-Konformität) kann das System einen Pixelwert schreiben, wobei beispielsweise nur 32 Bit an Genauigkeit erforderlich sind. Man nehme an, dass das System eine A·B + C-Operation ausführt und das Ergebnis als einen 32-Bit-Farb-(oder Tiefen-)wert in den Blockpuffer schreibt. Es sei angenommen, dass die signifikanten Anteile der Operanden für jeweils A, B und C 24 Bits sind. Es sei angenommen, dass der 32 Bit-Farbwert oder Tiefenwert als der Ganzzahlanteil der A·B + C-Berechnung betrachtet wird. Folglich kann das System die signifikanten Bits rechts von dem Binärpunkt ignorieren. In einer Realisierung kann das System Bereiche einer Multiplikation oder Addition in 12-Bit-Stücken abschneiden, obwohl auch andere Konfigurationen möglich sind.
  • Ein Beispiel der Multiplikation A·B sei die Operation definiert durch die folgenden Gleichungen: A = 1,1·2^20 Gleichung 4. B = 1,01·2^2 Gleichung 5. A·B = 1,111·2^22 Gleichung 6.
  • Eine Berechnung, die IEEE-konform ist (beispielsweise volle Genauigkeit) würde einen signifikanten Anteil des Operanden mit vollen 48 Bit erzeugen. Im Gegensatz dazu ist das vorliegende System ausgebildet, Teilgenauigkeit selektiv oder modusabhängig anzuwenden, wie dies nachfolgend mit Bezug zu 8 beschrieben ist. Durch Betrachtung der Exponenten kann das System bestimmen, dass weniger als 24 Bits des Ergebnisses wichtig sind. Die äußersten rechten 24 Bits des signifikanten Anteils liegen rechts von dem Kompromisspunkt. Das System kann die Flipflops der Bits niedriger Ordnung (beispielsweise die unteren 24 Bits) des Multiplikations-Arrays 700 ausblenden und lässt lediglich die Flipflops der Bits höherer Ordnung (beispielsweise die oberen 24 Bits) die Multiplikationsoperation durchführen. Beispielsweise sind nur die Bits höherer Ordnung 704 der Teilprodukte bei den Additionsoperationen beteiligt.
  • Dann kann das System den Operanden C zu dem Produkt A·B hinzu addieren. Die folgende Gleichung ist ein anschaulicher Operand C: C = 1,101010101·2^10 Gleichung 7.
  • Wenn das System C zu A·B hinzu addiert, werden offensichtlich weniger als 12 Bits benötigt. Die unteren 12 Bits von C liegen rechts von dem Binärpunkt. Folglich kann das System die rechten 12 Bits der Additionsoperation ausblenden.
  • 8 ist eine Konzeptansicht des arithmetischen Subsystems 230 aus 2 gemäß einer Ausführungsform der vorliegenden Erfindung. Das arithmetische Subsystem 230 ist ausgebildet, vereinigte Multiplizier-Addier-(FMA-)Befehle für Gleitkommazahlen auszuführen. Wie zuvor beschrieben ist, kann ein FMA-Befehl durch A·B + C dargestellt werden, wobei A, B und C Gleitkommazahlen sind. Das arithmetische Subsystem 230 umfasst, ohne Einschränkung, eine Operandeneinrichtung 810, eine Modusauswahleinrichtung 815, eine Inspektionseinrichtung 820 und eine FMA-Einrichtung 832.
  • Die Operandeneinrichtung 810 ist ausgebildet, einen Operanden A, einen Operanden B und einen Operanden C zu empfangen. Jeder Operand (A, B oder C) ist eine Gleitkommazahl. Der Operand A enthält, ohne Einschränkung, einen Exponenten Ae und einen signifikanten Anteil AS. Der Operand B enthält einen Exponenten Be und einen signifikanten Anteil BS. Der Operand C enthält einen Exponenten Ce und einen signifikanten Anteil CS. Die Operandeneinrichtung 810 filtert die Operanden, indem die Exponenten (Ae, Be, Ce) zu der Inspektionseinrichtung 820 gesendet werden und indem die signifikanten Anteile (AS, BS, CS) an die FMA-Einrichtung 832 gesendet werden.
  • Die Inspektionseinrichtung 820 enthält Logikeinrichtungen, die ausgebildet sind, die Exponenten (Ae, Be, Ce) der Operanden (A, B, C) und das bzw. die Aktivierungsbits en zu inspizieren bzw. zu betrachten. Die Inspektionseinrichtung 820 ist in dem arithmetischen Subsystem 230 strategisch so angeordnet, dass die Inspektionseinrichtung 820 keine wesentliche zeitliche Belastung dem arithmetischen Subsystem 230 auferlegt. Folglich muss das arithmetische Subsystem 230 nicht notwendigerweise mit Komponenten höherer Leistung versehen sein, die schneller wären aber dadurch die Leistungseinsparung bedeutungslos machen würden, die das arithmetische Subsystem 230 bereitstellen kann. Ferner führt die Inspektionseinrichtung 820 in einer Ausführungsform keine unabhängige Taktausblendung für jedes einzelne Flipflop durch. Es ist ein Aufwand, der nicht Null ist, mit der Logik und der Schaltung verbunden, die zum einen festlegt, wann jedes Flipflop auszublenden ist, und die zum anderen dann tatsächlich die Taktausblendung an dem Flipflop vornimmt. Folglich ist die Inspektionseinrichtung 820 ausgebildet, ein oder mehrere Ausblendsignale an die FMA-Einrichtung 832 zu senden, um für die weitere Zusammenarbeit bei der Ausblendung von Flipflops in der FMA-Einrichtung 832 zu sorgen.
  • In einer Ausführungsform gibt ein Entwurfsingenieur (beispielsweise ein Programmierer und/oder ein Verfasser von Code) den Grad an Feinheit der Taktausblendung für die FMA-Einrichtung 832 an, und gibt den Grad der Feinheit in einen Computer ein, der das arithmetische Subsystem 230 aufweist. Der Grad der Feinheit kann beruhen auf beispielsweise einer Bestimmung an Genauigkeit, die für die eine oder die mehreren speziellen FMA-Operationen erforderlich ist. Die Inspektionseinrichtung 820 ist ausgebildet, den Grad der Feinheit, den der Entwurfsingenieur angibt, zu empfangen. Die Inspektionseinrichtung 820 ist ausgebildet, den Grad der Feinheit und logische Analysen zur Bestimmung der Ausblendsignale zu verwenden, die der FMA-Einrichtung 832 zu senden sind.
  • In einer ersten logischen Betrachtung ermittelt die Inspektionseinrichtung 820, ob das arithmetische Subsystem 230 in einem IEEE-konformen Modus zur Verarbeitung der Operanden arbeiten muss. Folglich ist die Modusauswahleinrichtung 815 ausgebildet, den richtigen Betriebsmodus (beispielsweise IEEE-konform oder nicht-IEEE-konform) auf der Grundlage des bzw. der Freigabebits (UR, CR, PR) zu setzen. Die Modusauswahleinrichtung 815 ermittelt einen Betriebsmodus auf der Grundlage einer Modusanforderung, die die Modusauswahleinrichtung 815 empfangen kann. Die Modusauswahleinrichtung 815 kann eine Anwenderanforderung UR, eine Compiler-Anforderung CR oder eine Anforderung einer Anwendung PR oder andere Arten von Anforderungen empfangen. Die Anwenderanforderung UR kann mit einer manuellen Überschreibung, die von einem Anwendereingabegeräts empfangen wird, verknüpft sein. Beispielsweise kann ein Anwender eines Mobilgeräts (beispielsweise Funktelefon, intelligentes Telefon oder Tablett-Rechner) in erster Linie den Wunsch haben, Leistung einzusparen (beispielsweise Genauigkeit der grafischen Bilderzeugung). Die Compiler-Anforderung CR kann die Inspektionseinrichtung 820 für Operationen konfigurieren, die zur Compile-Zeit bekannt sind, wobei eine volle IEEE-konforme Genauigkeit für die Gleitkommazahlen erforderlich sein kann oder nicht. Die Anforderung einer Anwendung PR kann kundenspezifisch für die spezielle Anwendung sein. Beispielsweise kann ein Verfasser einer Anwendung angeben, ob eine Anwendung eine vollständige IEEE-konforme Genauigkeit für die Gleitkommazahlen benötigt oder nicht. Beispielsweise erfordert gegebenenfalls eine spezielle Anwendung eine grafische Bilderzeugung mit weniger als hoher Wiedergabetreue. Folglich kann die Modusauswahleinrichtung 815 bestimmen in dieser Situation, dass ein Betrieb in einem nicht-IEEE-konformen Modus akzeptabel ist. Die Modusauswahleinrichtung 815 sendet dann den von dem bzw. den Freigabebit(s) repräsentierten Modus an die Inspektionseinrichtung 820.
  • In einer zweiten Logikbetrachtung betrachtet die Inspektionseinrichtung 820 die Exponenten (Ae, Be, Ce) der Eingangswerte A, B und C. Beispielsweise kann die Inspektionseinrichtung 820 die Exponenten (Ae, Be) für die Operanden des Produkts A·B aufsummieren. Die Inspektionseinrichtung 820 kann dann diese Summe mit dem Exponenten Ce des Additionsoperanden C vergleichen. Wie zuvor mit Bezug zu 4 erläutet ist, kann, wenn die zwei Exponenten vergleichbar sind (beispielsweise die Summe von Ae plus Be ist vergleichbar zu Ce), das System dann einen gewissen Teil der Bits niedriger Ordnung des A·B-Produkts und/oder des C-Operationsoperanden aus der Gesamterzeugung des endgültigen Ergebnisses für A·B + C entfernen. Die Inspektionseinrichtung 820 ist ausgebildet, die Ausblendsignale entsprechend so festzulegen, dass die FMA-Einrichtung 832 die geeignete Ausblendung ausführen kann. Wie zuvor mit Bezug zu 5 erläutet ist, kann das System, wenn der Exponent des Additionsoperanden viel größer und/oder wesentlich größer ist als (>>) der Exponent des Produkts, das A·B-Produkt aus der gesamten Erzeugung des endgültigen Ergebnisses für A·B + C entfernen. Die Inspektionseinrichtung 820 ist ausgebildet, die Ausblendsignale entsprechend festzulegen. Wie zuvor mit Bezug zu 6 erläutert ist, kann das System, wenn der Exponent des Additionsoperanden viel kleiner und/oder wesentlich kleiner ist als (<<) der Exponent des Produkts, den Additionsoperanden C aus der gesamten Erzeugung des endgültigen Ergebnisses für A·B + C entfernen.
  • Folglich ist auf der Grundlage des bzw. der Freigabebits und der Exponenten (Ae, Be, Ce) die Inspektionseinrichtung 820 ausgebildet, ein oder mehrere steuernde Ausblendsignale zu erzeugen. Die Inspektionseinrichtung 820 sendet das bzw. die Ausblendsignale an die FMA-Einrichtung 832. Die FMA-Einrichtung 832 ist ausgebildet, unter anderem das bzw. die Ausblendsignale aus der Inspektionseinrichtung 820 und die signifikanten Anteile (AS, BS, CS) zu empfangen. Die FMA-Einrichtung 832 verwendet die Ausblendsignale, um spezielle Schaltungen in einem oder mehreren Multiplikations- und Additions-Arrays auszuschalten (beispielsweise auszublenden), wie zuvor mit Bezug zu den 47 beschrieben ist. Die FMA-Einrichtung 832 kann eine arithmetische Operation mit voller Genauigkeit (beispielsweise IEEE-konform) oder eine arithmetische Operation mit Teilgenauigkeit (beispielsweise nicht-IEEE-konform) erzeugen. Die arithmetische Operation mit Teilgenauigkeit ist allgemein weniger leistungsintensiv. Folglich konfiguriert die Inspektionseinrichtung 820 die FMA-Einrichtung 832 für einen leistungseffizienten Betrieb. Die FMA-Einrichtung 832 ist damit ausgebildet, die tatsächlichen leistungseffizienten Operationen mit dem einen oder den mehreren Multiplikations- und Additions-Arrays auszuführen. Wie zuvor beschrieben ist, beruhen die empfangenen Eingangswerte (beispielsweise Ausblendsignale und signifikante Anteile) auf einer Kombination aus Software-Betrachtungen, Operanden der Compile-Zeit, der Zeit des Erstellens des Codes, der Code-Ausführungszeit, und der Anwenderzeit, sowie aus tatsächlichen Echtzeitoperanden, um einige Faktoren zu nennen.
  • Wie in 8 gezeigt ist, enthält die FMA-Einrichtung 832 ein Multiplikations-Array 800, wie das Multiplikations-Array 700, das zuvor mit Bezug zu 7 beschrieben ist. In einer Ausführungsform ist das Multiplikations-Array 800 in 8 ein typisches Multiplikations-Array, das entsprechend allgemein akzeptierten Standards ausgebildet ist. Die FMA-Einrichtung 832 ist ausgebildet, den unteren Teil des Multiplikations-Arrays 800 zu verwenden, um sowohl die Bits niedriger Ordnung des A·B-Produkts als auch ein Überlaufsignal Mout zu erzeugen, das in Richtung des oberen Teils des Multiplizierers geht.
  • Wenn die Ausblendsignale aus der Inspektionseinrichtung 820 die FMA-Einrichtung 832 konfigurieren, um in einem Leistungssparmodus zu arbeiten (beispielsweise IEEE-nicht-konformen Modus), dann kann die FMA-Einrichtung 832 einen unteren Teil des Multiplikations-Arrays 800, der als getorte bzw. auszublendende Schaltung 808 bezeichnet ist, abschalten. Beispielsweise kann die FMA-Einrichtung 832 den unteren Teil unter Anwendung einer Taktausblendung, mittels einer Spannungsversorgung oder mittels eines anderen geeigneten Mechanismus zur Abschaltung von Schaltungen abschalten, um somit die von der FMA-Einrichtung 822 gesamte aufgenommene Leistung zu reduzieren. Der FMA-Betrieb kann in ähnlicher Weise wie bei der Verwendung des vollständigen Multiplikations-Arrays 800 weitergehen. Jedoch wird im leistungssparenden Modus das Überlaufsignal Mout auf Null gesetzt oder auf einen anderen Wert, der angibt, dass die unteren Bits nicht verwendet werden. Diese Zuweisung kann letztlich zu einem nicht korrekten Wert in der Größenordnung einer einzelnen Einheit der kleinsten Genauigkeit (ULP) führen, was in dem ausgewählten Betriebsmodus für die Leistungseinsparung akzeptabel ist.
  • Die FMA-Einrichtung 832 ist ferner ausgebildet, einen größeren Teil der Schaltung bei Operationen abzuschalten, die die Additionsoperanden C mit dem Produkt A·B beinhalten, wie dies zuvor mit Bezug zu den 46 beschrieben ist. Die FMA-Einrichtung 832 kann den Operanden C zum Produkt A·B in einem Leistungssparmodus hinzu addieren, um das Ergebnis für A·B + C zu erzeugen. Dann ist die FMA-Einrichtung 832 ausgebildet, das Ergebnis für A·B + C auszugeben.
  • Wenn ein Teil der Logikschaltung in dem leistungsreduzierten Fall ausgeblendet ist, ist folglich das System ausgebildet, Maßnahmen zu ergreifen, um sicherzustellen, dass das Ergebnis A·B + C nicht von aktuellen Operandeneingaben abhängig ist, die unmittelbar vor der Taktausblendung empfangen wurden. Wenn dies der Fall wäre, würde das Ergebnis A·B + C von mehr als den vorliegenden Eingangswerten abhängen. Dann wäre es schwierig, die Logikschaltung zu verifizieren und eine Fehlerbehebung durchzuführen, und es ergäbe sich kein klarer Vorteil, wenn das System zustandsbasiert ist.
  • Ein Teil des Systems hängt davon ab, dass er in der Lage ist, die Gleitkommaoperationen zu erkennen, die mit einem speziellen Teil der A·B + C-Berechnung verknüpft sind (beispielsweise FMA-Berechnung) und den Flipflops ein Taktausblendungssignal der FMA-Einrichtung 832 aus 8 zuzuführen. In dem Falle, in welchem alle Logikschaltungen manuell spezifiziert sind, und somit manuell parallel bzw. als Pipeline betrieben werden, kann eine derartige Ausblendung in der Spezifizierungsphase durch den Entwurfsingenieur vorgenommen werden. Bei Berücksichtigung der Komplexität dieser Gestaltungsformen kann das System jedoch in einer Ausführungsform konfiguriert werden, indem kommerziell verfügbare Synthesepackungen zur Erzeugung von Netzlisten auf Datenebene verwendet werden. Das System kann dann einen Nachverarbeitungsschritt ausführen, um diese Flipflops zu ermitteln, die für die Ausblendung geeignet sind, und die Signalzwischenspeicher bzw. Latches hinzuzufügen, die für ein fehlerfreies Ausblenden erforderlich sind.
  • Vorteilhafterweise erlaubt es das System, dass mehrere unterschiedliche unmittelbare Kompromisspunkte zwischen Genauigkeit (beispielsweise) und Leistungseinsparung festgelegt werden. Die Kompromisspunkte beruhen ebenfalls auf dem Grad, mit welchem Bits niedriger Ordnung in dem Bestreben zur Einsparung ignoriert werden können, die ansonsten für die volle Berechnung der Bits niedriger Ordnung für ein gegebenes Szenario von Gleitkommazahlen aufgewendet werden müsste. In einer Ausführungsform beruhen die Kompromisspunkte auf den relativen Differenzen der Exponenten von Operanden eines vereinigten Multiplizier-Addier-(FMA-)Befehls. Beispiele für Kompromisspunkte sind zuvor mit Bezug zu den 46 beschrieben.
  • Obwohl die vorliegende Technik auf eine Arithmetik mit einfacher Genauigkeit und eine Arithmetik mit doppelter Genauigkeit anwendbar ist, ist das System insbesondere geeignet für einfache Genauigkeit. Es gibt für gewöhnlich kein Szenario, in welchem Operanden mit doppelter Genauigkeit verwendet werden, aber eine exakte Rundung nicht erwartet wird. Eine mögliche Ausnahme besteht für Fälle, in denen iterative Algorithmen angewendet werden, etwa die Berechnung des Kehrwertes oder der Quadratwurzel, wobei Zwischenwerte nicht gerundet werden müssen.
  • Überblick über das Verfahren
  • 9 ist ein Flussdiagramm von Verfahrensschritten zur Aktivierung einer Leistungsreduzierung in Gleitkommaoperationen gemäß einer Ausführungsform der vorliegenden Erfindung. Obwohl die Verfahrensschritte in Verbindung mit den Systemen der 18 beschrieben sind, erkennt der Fachmann, dass ein beliebiges System, das zur Realisierung der Verfahrensschritte in beliebiger Reihenfolge ausgebildet ist, im Schutzbereich der vorliegenden Erfindung liegt. In einer Ausführungsform können die Verfahrensschritte von dem arithmetischen Subsystem 230 aus 2 und 8 ausgeführt werden. Das arithmetische Subsystem 230 umfasst unter anderem die Inspektionseinrichtung 820 und die FMA-Einrichtung 832. Da Details von Systemoperationen mit Bezug zu anderen Figuren beschrieben sind, wird das Verfahren 900 aus 9 hier in einer zusammengefassten Weise dargestellt.
  • Wie gezeigt, beginnt ein Verfahren 900 mit einer Aktion 910, in der das arithmetische Subsystem 230 (beispielsweise die Inspektionseinrichtung 820) Gleitkommazahlen eines Befehls und/oder einen Betriebsmodus für einen Befehl empfängt. Beispielsweise können die Gleitkommazahlen einen Operanden A, einen Operanden B und einen Operanden C einer vereinigten Multiplizier-Addier-(FMA-)Operation enthalten. Die FMA-Operation kann mathematisch ausgedrückt als A·B + C repräsentiert werden. Wie zuvor mit Bezug zu 8 beschrieben ist, kann die Inspektionseinrichtung 820 den Betriebsmodus empfangen (beispielsweise ein oder mehrere Freigabebits) aus einer Modusauswahleinrichtung, die ermittelt, ob die Verarbeitung des Befehls IEEE-konform sein muss oder nicht (beispielsweise volle Genauigkeit).
  • Wenn das arithmetische Subsystem 230 (beispielsweise die Inspektionseinrichtung 820) ermittelt, dass der Befehl Konformität mit dem Standard für volle Genauigkeit für die Gleitkommazahlen erfordert, dann geht in einer Entscheidungsoperation 915 das Verfahren 900 zu einer Aktion 920 weiter, in der das arithmetische Subsystem 230 (beispielsweise die FMA-Einrichtung 832) Operationen für den Befehl konform mit dem Standard ausführt.
  • Wenn jedoch das arithmetische Subsystem 230 in der Entscheidungsoperation 915 ermittelt, dass der Befehl keine Konformität mit dem Standard erfordert, dann geht das Verfahren 900 weiter zu einer Aktion 925, in der das arithmetische Subsystem 230 Ausblendsignale für einen Teil einer integrierten Schaltung erzeugt. Wie beispielsweise zuvor mit Bezug zu 8 beschrieben ist, kann die Inspektionseinrichtung 820 Ausblendsignale erzeugen, indem Exponenten der Operanden A, B und C betrachtet werden. Die Inspektionseinrichtung 820 kann bestimmen, dass der vereinigte Multiplizier-Addier-Befehl ohne die Verwendung von Bits niedriger Ordnung des Operanden C und/oder ohne Verwendung der Bits niedriger Ordnung eines Produkts A·B auszuführen ist. Die Inspektionseinheit kann dann geeignete Ausblendsignale für die integrierte Schaltung erzeugen.
  • In einer Aktion 930 sendet das arithmetische Subsystem 230 (beispielsweise die Inspektionseinrichtung 820) die Ausblendsignale an den Teil der integrierten Schaltung. Beispielsweise sendet die Inspektionseinrichtung 820 die Ausblendsignale an Flipflops der integrierten Schaltung, die auszublenden sind.
  • In einer Aktion 935 blendet das arithmetische Subsystem 230 (beispielsweise die FMA-Einrichtung 832) den Teil der integrierten Schaltung aus, indem die Ausblendsignale angewendet werden. Beispielsweise blendet die FMA-Einrichtung 832 Flipflops der integrierten Schaltung aus (beispielsweise schaltet die Leistung ab), die ansonsten Multiplizier- und/oder Addier-Operationen an den Bits niedriger Ordnung ausführen würden. In einer Aktion 940 führt das arithmetische Subsystem 230 Operationen des Befehls ohne Berücksichtigung der Konformität mit dem Standard aus. Beispielsweise führt die FMA-Einrichtung 832 Operationen des Befehls A·B + C unter Anwendung einer Teilgenauigkeit aus. Die FMA-Einrichtung 832 unterliegt durch Anwendung einer Teilgenauigkeit der vorliegenden Technik weniger Schaltvorgängen der Flipflops in der integrierten Schaltung und arbeitet somit mit reduzierter Leistung.
  • Wenn das arithmetische Subsystem 230 bestimmt, dass mehr Operationen für einen weiten Befehl auszuführen sind, dann wird in einer Entscheidungsoperation 945 das Verfahren 900 wieder zu der Aktion 910 zurückgehen, in der das arithmetische Subsystem 230 andere Gleitkommazahlen und/oder einen weiteren Betriebsmodus empfängt. Wenn jedoch das arithmetische Subsystem 230 ermittelt, dass Operationen für einen weiten Befehl nicht auszuführen sind, dann endet das Verfahren 900.
  • Das Verfahren 900 kann andere Aktionen und/oder Details beinhalten, die in dieser Verfahrensübersicht nicht erläutert sind. Andere Aktionen und/oder Details sind mit Bezug zu anderen Figuren erläutert und können ein Teil des Verfahrens 000 sein, wobei dies von der Realisierung abhängt.
  • Die Erfindung ist oben mit Bezug zu speziellen Realisierungen beschrieben. Der Fachmann erkennt jedoch, dass diverse Modifizierungen und Änderungen daran vorgenommen werden können, ohne von dem breiteren Grundgedanken und dem Schutzbereich der Erfindung, wie sie in den angefügten Patentansprüchen angegeben ist, abzuweichen. Die vorhergehende Beschreibung und die Zeichnungen sind daher als anschaulich und nicht als einschränkend zu betrachten.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Nicht-Patentliteratur
    • (IEEE) 754 [0003]
    • IEEE 754-Standard [0004]
    • Standard an Genauigkeit [0006]
    • IEEE 754 [0038]
    • IEEE 754-1985 [0038]
    • IEEE 854-1987 [0038]
    • IEEE 754-2008 [0038]
    • IEEE 754-Format [0041]
    • IEEE 754-Darstellung [0042]
    • IEEE 754-Standard [0043]

Claims (10)

  1. Ein computerimplementiertes Verfahren zur Ermöglichung einer Leistungsreduzierung in Gleitkommaoperationen, wobei das Verfahren umfasst: Empfangen von Gleitkommazahlen mit einem Operanden A, einem Operanden B und einem Operanden C eines vereinigten Multiplizier-Addier-Befehls, wobei der vereinigte Multiplizier-Addier-Befehl als der Operand A multipliziert mit dem Operanden B plus den Operanden C repräsentiert ist; Ermitteln, dass der vereinigte Multiplizier-Addier-Befehl keine Konformität mit einem Genauigkeitsstandard für Gleitkommazahlen erfordert; Erzeugen von Ausblendsignalen für eine integrierte Schaltung, die ausgebildet ist, Operationen des vereinigten Multiplizier-Addier-Befehls auszuführen, durch Ermittelung von Bits niedriger Ordnung des Operanden C und Ermittelung von Bits niedriger Ordnung eines Produkts des Operanden A mit dem Operanden B; und Senden der Ausblendsignale an die integrierte Schaltung, um mehrere, in der integrierten Schaltung enthaltene Logikgatter abzuschalten.
  2. Ein arithmetisches Subsystem zur Ermöglichung einer Leistungsreduzierung in Gleitkommaoperationen, wobei das arithmetische Subsystem eine Inspektionseinrichtung aufweist, die ausgebildet ist, Aktionen auszuführen mit: Empfangen von Gleitkommazahlen mit einem Operanden A, einem Operanden B und einem Operanden C eines vereinigten Multiplizier-Addier-Befehls, wobei der vereinigte Multiplizier-Addier-Befehl als der Operand A multipliziert mit dem Operanden B plus den Operanden C repräsentiert ist; Ermitteln, ob der vereinigte Multiplizier-Addier-Befehl Konformität mit einem Genauigkeitsstandard für Gleitkommazahlen erfordert; Erzeugen von Ausblendsignalen für eine integrierte Schaltung, die ausgebildet ist, Operationen des vereinigten Multiplizier-Addier-Befehls auszuführen, indem Bits niedriger Ordnung des Operanden C ermittelt werden und indem Bits niedriger Ordnung eines Produkts aus dem Operanden A und dem Operanden B ermittelt werden; und Senden der Ausblendsignale an die integrierte Schaltung, um mehrere, in der integrierten Schaltung enthaltene Logikgatter abzuschalten.
  3. Das arithmetische Subsystem nach Anspruch 2, wobei die Inspektionseinrichtung ferner ausgebildet ist, die Ausblendsignale zu erzeugen durch Betrachtung von Exponenten von Operanden durch: Empfangen eines Exponenten des Operanden A, eines Exponenten des Operanden B und eines Exponenten des Operanden C; Berechnen einer Summe der Exponenten des Operanden A und des Exponenten des Operanden B; und Vergleichen des Exponenten des Operanden C mit der Summe des Exponenten des Operanden A und des Exponenten des Operanden B.
  4. Das arithmetische Subsystem nach Anspruch 2, das ferner eine Einrichtung für vereinigte Multiplikation-Addition aufweist, die ausgebildet ist, Aktionen auszuführen mit: Abschalten der mehreren, in der integrierten Schaltung enthaltenen Logikgatter mittels der Ausblendsignale; und Ausführen einer oder mehrerer Operationen, die mit dem Befehls verknüpft sind, unabhängig von der Konformität mit dem Genauigkeitsstandard.
  5. Das arithmetische Subsystem nach Anspruch 2, wobei der Genauigkeitsstandard zumindest einen der folgenden umfasst: Institut für Elektro- und Elektronikingenieure (IEEE) 754, IEEE 754–1985, IEEE 854-1987 oder IEEE 754-2008.
  6. Das arithmetische Subsystem nach Anspruch 2, wobei Ermitteln, dass der vereinigte Multiplizier-Addier-Befehl keine Konformität mit dem Genauigkeitsstandard erfordert, umfasst: Empfangen eines Betriebsmodus für den vereinigten Multiplizier-Addier-Befehl, der zumindest verknüpft ist mit: einer manuellen Überschreibung, die von einem Anwendereingabegerät empfangen wird; einer Compiler-Mitteilung, die angibt, dass der vereinigte Multiplizier-Addier-Befehl keine Konformität mit dem Genauigkeitsstandard erfordert; und einer Mitteilung aus einer Anwendung, die angibt, dass die Anwendung keine Konformität mit dem Genauigkeitsstandard erfordert.
  7. Das arithmetische Subsystem nach Anspruch 2, wobei Ermitteln, dass der vereinigte Multiplizier-Addier-Befehl keine Konformität mit dem Genauigkeitsstandard erfordert, mit einer speziellen Anwendung verknüpft ist, die eine Grafikbilderzeugung bei weniger als einer hohen Auflösung erfordert.
  8. Das arithmetische Subsystem nach Anspruch 2, das ferner eine Einrichtung für vereinigte Multiplikation-Addition umfasst, die ausgebildet ist, den Operanden A mit dem Operanden B zu multiplizieren durch Verwenden eines Multiplikations-Arrays, das auf einem oder mehreren Teilprodukten beruht, und wobei die Operandeneinrichtung ferner ausgebildet ist, Bits niedriger Ordnung der Teilprodukte und Bits höherer Ordnung der Teilprodukte zu ermitteln, und wobei die Einrichtung für vereinigte Multiplikation-Addition ferner ausgebildet ist, Flipflops der Bits niedriger Ordnung der Teilprodukte abzuschalten.
  9. Das arithmetische Subsystem nach Anspruch 2, wobei die Inspektionseinrichtung ferner ausgebildet ist, die Ausblendsignale zu erzeugen, indem Exponenten von Operanden betrachtet werden, indem ermittelt wird, dass ein Exponent des Operanden C wesentlich größer als eine Summe eines Exponenten des Operanden A und eines Exponenten des Operanden B ist, und wobei das arithmetische Subsystem ferner eine Einrichtung für vereinigte Multiplikation-Addition aufweist, die ausgebildet ist, Flipflops der integrierten Schaltung abzuschalten, die ausgebildet sind, den Operanden A mit dem Operanden B zu multiplizieren.
  10. Das arithmetische Subsystem nach Anspruch 2, wobei die Inspektionseinrichtung ferner ausgebildet ist, die Ausblendsignale zu erzeugen, indem Exponenten von Operanden betrachtet werden, und wobei die Betrachtung von Exponenten von Operanden umfasst: Ermitteln eines Exponenten eines Operanden C als wesentlich kleiner als eine Summe eines Exponenten des Operanden A plus einen Exponenten des Operanden B, und wobei das arithmetische Subsystem ferner eine Einrichtung für vereinigte Multiplikation-Addition aufweist, die ausgebildet ist, Flipflops der integrierten Schaltung auszublenden, die ausgebildet sind, den Operanden C zu addieren.
DE102013018915.2A 2012-11-21 2013-11-13 Ein Ansatz zur Leistungsreduzierung in Gleitkommaoperationen Pending DE102013018915A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/683,362 US9829956B2 (en) 2012-11-21 2012-11-21 Approach to power reduction in floating-point operations
US13/683,362 2012-11-21

Publications (1)

Publication Number Publication Date
DE102013018915A1 true DE102013018915A1 (de) 2014-05-22

Family

ID=50625674

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102013018915.2A Pending DE102013018915A1 (de) 2012-11-21 2013-11-13 Ein Ansatz zur Leistungsreduzierung in Gleitkommaoperationen

Country Status (4)

Country Link
US (1) US9829956B2 (de)
CN (1) CN103838549B (de)
DE (1) DE102013018915A1 (de)
TW (1) TWI529613B (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220309126A1 (en) * 2021-03-26 2022-09-29 Advanced Micro Devices, Inc. Approximation of matrices for matrix multiply operations

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013100783A1 (en) 2011-12-29 2013-07-04 Intel Corporation Method and system for control signalling in a data path module
US10331583B2 (en) 2013-09-26 2019-06-25 Intel Corporation Executing distributed memory operations using processing elements connected by distributed channels
US9389863B2 (en) * 2014-02-10 2016-07-12 Via Alliance Semiconductor Co., Ltd. Processor that performs approximate computing instructions
US9588845B2 (en) 2014-02-10 2017-03-07 Via Alliance Semiconductor Co., Ltd. Processor that recovers from excessive approximate computing error
US10235232B2 (en) 2014-02-10 2019-03-19 Via Alliance Semiconductor Co., Ltd Processor with approximate computing execution unit that includes an approximation control register having an approximation mode flag, an approximation amount, and an error threshold, where the approximation control register is writable by an instruction set instruction
US9519459B2 (en) * 2014-06-20 2016-12-13 Wisconsin Alumni Research Foundation High efficiency computer floating point multiplier unit
US10025367B2 (en) * 2014-08-19 2018-07-17 Intel Corporation Dynamic scaling of graphics processor execution resources
TWI627585B (zh) * 2014-10-23 2018-06-21 上海兆芯集成電路有限公司 處理器與透過處理器執行的方法
US10410081B2 (en) * 2014-12-23 2019-09-10 Intel Corporation Method and apparatus for a high throughput rasterizer
US9779465B2 (en) * 2014-12-23 2017-10-03 Intel Corporation Apparatus and method for implementing power saving techniques when processing floating point values
US10297001B2 (en) * 2014-12-26 2019-05-21 Intel Corporation Reduced power implementation of computer instructions
US20160292812A1 (en) * 2015-03-31 2016-10-06 Qualcomm Incorporated Hybrid 2d/3d graphics rendering
US9996320B2 (en) * 2015-12-23 2018-06-12 Intel Corporation Fused multiply-add (FMA) low functional unit
US11010166B2 (en) * 2016-03-31 2021-05-18 Intel Corporation Arithmetic logic unit with normal and accelerated performance modes using differing numbers of computational circuits
US10402168B2 (en) 2016-10-01 2019-09-03 Intel Corporation Low energy consumption mantissa multiplication for floating point multiply-add operations
US10474458B2 (en) * 2017-04-28 2019-11-12 Intel Corporation Instructions and logic to perform floating-point and integer operations for machine learning
US11086816B2 (en) 2017-09-28 2021-08-10 Intel Corporation Processors, methods, and systems for debugging a configurable spatial accelerator
US11307873B2 (en) 2018-04-03 2022-04-19 Intel Corporation Apparatus, methods, and systems for unstructured data flow in a configurable spatial accelerator with predicate propagation and merging
US10891240B2 (en) 2018-06-30 2021-01-12 Intel Corporation Apparatus, methods, and systems for low latency communication in a configurable spatial accelerator
US11200186B2 (en) 2018-06-30 2021-12-14 Intel Corporation Apparatuses, methods, and systems for operations in a configurable spatial accelerator
US10853073B2 (en) 2018-06-30 2020-12-01 Intel Corporation Apparatuses, methods, and systems for conditional operations in a configurable spatial accelerator
US10713012B2 (en) * 2018-10-15 2020-07-14 Intel Corporation Method and apparatus for efficient binary and ternary support in fused multiply-add (FMA) circuits
US10678724B1 (en) 2018-12-29 2020-06-09 Intel Corporation Apparatuses, methods, and systems for in-network storage in a configurable spatial accelerator
US10915471B2 (en) 2019-03-30 2021-02-09 Intel Corporation Apparatuses, methods, and systems for memory interface circuit allocation in a configurable spatial accelerator
US10817291B2 (en) 2019-03-30 2020-10-27 Intel Corporation Apparatuses, methods, and systems for swizzle operations in a configurable spatial accelerator
US11037050B2 (en) 2019-06-29 2021-06-15 Intel Corporation Apparatuses, methods, and systems for memory interface circuit arbitration in a configurable spatial accelerator
CN110673823B (zh) * 2019-09-30 2021-11-30 上海寒武纪信息科技有限公司 乘法器、数据处理方法及芯片
US11823052B2 (en) * 2019-10-11 2023-11-21 Qualcomm Incorporated Configurable MAC for neural network applications
CN112732220A (zh) * 2019-10-14 2021-04-30 安徽寒武纪信息科技有限公司 用于浮点运算的乘法器、方法、集成电路芯片和计算装置
CN116700665B (zh) * 2022-02-24 2024-06-21 象帝先计算技术(重庆)有限公司 一种确定浮点数平方根倒数的方法及装置
US20230297336A1 (en) * 2022-03-18 2023-09-21 Arm Limited Multiple multiplication arrays

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6779125B1 (en) 2000-06-09 2004-08-17 Cirrus Logic, Inc. Clock generator circuitry
US6922714B2 (en) * 2002-05-09 2005-07-26 International Business Machines Corporation Floating point unit power reduction scheme
US7137021B2 (en) 2003-05-15 2006-11-14 International Business Machines Corporation Power saving in FPU with gated power based on opcodes and data
US20060101244A1 (en) * 2004-11-10 2006-05-11 Nvidia Corporation Multipurpose functional unit with combined integer and floating-point multiply-add pipeline
US7499962B2 (en) * 2004-12-21 2009-03-03 Intel Corporation Enhanced fused multiply-add operation
TWI263164B (en) 2004-12-29 2006-10-01 Ind Tech Res Inst Booth array multiplier with bypass circuits
US7546331B2 (en) * 2005-03-17 2009-06-09 Qualcomm Incorporated Low power array multiplier
US8595279B2 (en) * 2006-02-27 2013-11-26 Qualcomm Incorporated Floating-point processor with reduced power requirements for selectable subprecision
US7912887B2 (en) * 2006-05-10 2011-03-22 Qualcomm Incorporated Mode-based multiply-add recoding for denormal operands
US9152382B2 (en) * 2012-10-31 2015-10-06 Intel Corporation Reducing power consumption in a fused multiply-add (FMA) unit responsive to input data values

Non-Patent Citations (9)

* Cited by examiner, † Cited by third party
Title
(IEEE) 754
IEEE 754
IEEE 754-1985
IEEE 754-2008
IEEE 754-Darstellung
IEEE 754-Format
IEEE 754-Standard
IEEE 854-1987
Standard an Genauigkeit

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220309126A1 (en) * 2021-03-26 2022-09-29 Advanced Micro Devices, Inc. Approximation of matrices for matrix multiply operations

Also Published As

Publication number Publication date
TWI529613B (zh) 2016-04-11
US20140143564A1 (en) 2014-05-22
CN103838549B (zh) 2017-11-03
CN103838549A (zh) 2014-06-04
US9829956B2 (en) 2017-11-28
TW201428612A (zh) 2014-07-16

Similar Documents

Publication Publication Date Title
DE102013018915A1 (de) Ein Ansatz zur Leistungsreduzierung in Gleitkommaoperationen
DE102013114279B4 (de) Oberflächenverarbeitung mit Mehrfachabtastung unter Verwendung einer einzelnen Abtastung
DE102008059371B9 (de) Funktionseinheit für verschmolzenes Multiplizieren und Addieren
DE102009039231B4 (de) Einzeldurchgang-Kachelung
DE102017124573A1 (de) Systeme und verfahren zum beschneiden von neuronalen netzen für eine betriebsmitteleffiziente folgerung
DE102018120859A1 (de) Inline-Dateninspektion zur Arbeitslastvereinfachung
DE102015007943A1 (de) Mechanismen für eine Gewichtungsverschiebung in faltenden neuronalen Netzwerken
DE102016122297A1 (de) Mehrfach-Durchlauf-Rendering in einer Bildschirm-Raum-Pipeline
DE102013114373A1 (de) Konsistente Vertex-Einrastung für Rendering mit variabler Auflösung
DE102013022257A1 (de) Programmierbares Mischen in mehrsträngigen Verarbeitungseinheiten
DE112019001799T5 (de) Erweitertes formatieren von binären gleitkommazahlen mit geringerer genauigkeit
DE102018114286A1 (de) Durchführen einer Traversierungs-Stack-Komprimierung
DE102018124919A1 (de) Skalierbare speicheroptimierte Hardware für Matrix-Solve
DE102013224160A1 (de) System, Verfahren und Computer-Programm-Produkt zum Optimieren des Managements von Thread-Stapel-Speicher
DE19540102A1 (de) Gleitkomma-Recheneinheit mit einer Logik für eine Vierfach-Präzisions-Arithmetik
DE102020112826A1 (de) Verfahren zur effizienten durchführung von datenreduktionen in parallelverarbeitungseinheiten
DE102013020613A1 (de) Umgehung der Pixel-Schattierung für die grafische Bilderzeugung mit geringer Leistung
DE102013020807A1 (de) Handhabung von nachgeordneten Z-Abdeckungsdaten in Rasteroperationen
DE102013017639A1 (de) Zwischenspeicherung von adaptiv dimensionierten Cache-Kacheln in einem vereinheitlichen L2-Cache-Speicher mit Oberflächenkomprimierung
DE102013218594A1 (de) System, Verfahren und Computerprogrammprodukt zur parallelen Rekonstruktion eines gesampelten Suffixarrays
DE102020108526A1 (de) Adaptive pixelabtastreihenfolge für zeitlich dichtes rendern
DE112020000805T5 (de) Kontrolle für „ziffernvalidierungsüberprüfung“ in anweisungsausführung
DE102019103319A1 (de) Stochastisches runden von zahlenwerten
DE112013004920T5 (de) Polygonrasterisierung mit reduzierter Bitanzahl
DE102022120207A1 (de) Effiziente Transformationen und Transponierungen zur Optimierung der Ratenverzerrung und Rekonstruktion in Videocodieren

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R082 Change of representative

Representative=s name: KRAUS & WEISERT PATENTANWAELTE PARTGMBB, DE

R016 Response to examination communication