-
HINTERGRUND
-
Die Offenbarung bezieht sich im Allgemeinen auf eine Auslegung einer Prozessorarithmetik und insbesondere auf ein Verbinden von Ausführungseinheiten, um ein einzelnes breites skalares Ergebnis zu berechnen.
-
Bei modernen Chip-/Kernausgestaltungen ist es möglich, neu entstehende Arbeitslasten wie die kognitive Datenverarbeitung (cognitive computing) zu verarbeiten. Für diese derzeit aufkommenden Arbeitslasten ist jedoch eine enorme Rechenleistung mit unterschiedlichen Anforderungen je nach behandeltem Problem erforderlich, und die Berechnung variiert zwischen mathematischen Berechnungen mit außerordentlich geringer Genauigkeit und sehr hoher Genauigkeit. Die unterschiedlichen Anforderungen erschweren die moderne Chip- /Kernausgestaltung, wenn es darum geht, eine Universaleinheit zu entwickeln. Zu diesen Schwierigkeiten gehört, ein Gleichgewicht zwischen einigen wenigen Einheiten mit hoher Genauigkeit, die nicht den gewünschten Durchsatz mit geringerer Genauigkeit bereitstellen, und vielen Einheiten mit geringer Genauigkeit herzustellen, die einen hohen Software-Aufwand erforderlich machen, um komplexe Berechnungen mit hoher Genauigkeit durchzuführen.
-
Die
US 8 725 990 B1 offenbart eine konfigurierbare SIMD-Einheit in einem Videoprozessor zur Ausführung von Videoverarbeitungsoperationen. Die Einheit enthält eine SIMD-Komponente mit einer Vielzahl von Eingängen zum Empfang von Eingangsdaten und einer Vielzahl von Ausgängen zur Bereitstellung von Ausgangsdaten. In der SIMD-Komponente sind mehrere Ausführungseinheiten enthalten. Jede der Ausführungseinheiten umfasst einen ersten und einen zweiten Datenpfad und ist so konfiguriert, dass sie selektiv arithmetische Operationen an einem Satz von Eingaben mit niedriger oder hoher Genauigkeit ausführt. Jede der Ausführungseinheiten hat eine erste Konfiguration und eine zweite Konfiguration, so dass der erste Datenpfad und der zweite Datenpfad kombiniert werden, um in der ersten Konfiguration eine einzige hochpräzise Ausgabe zu erzeugen, und so, dass der erste Datenpfad und der zweite Datenpfad aufgeteilt werden, um in der zweiten Konfiguration eine entsprechende erste niedrigpräzise Ausgabe und eine zweite niedrigpräzise Ausgabe zu erzeugen.
-
Die
US 7 062 526 B1 offenbart eine Funktionseinheit in einem digitalen System, die mit einem Rundungs-Multiplikationsbefehl versehen ist, bei dem ein höchstwertiges Produkt eines ersten Paares von Elementen mit einem niedrigstwertigen Produkt eines zweiten Paares von Elementen kombiniert wird, das kombinierte Produkt gerundet wird und das Endergebnis in einem Ziel gespeichert wird. Die Rundung erfolgt durch Addition eines Rundungswerts, um ein Zwischenergebnis zu bilden, und anschließende Verschiebung des Zwischenergebnisses nach rechts. Ein kombiniertes Ergebnis wird auf eine feste Länge gerundet, die kürzer als das kombinierte Produkt ist.
-
Die US 2014 / 0 059 106 A1 offenbart eine arithmetische Schaltung zum Durchführen einer Division auf der Grundlage einer Wiederherstellungsdivision, umfassend: ein Zwischenrestregister, das so konfiguriert ist, dass es einen Zwischenrest speichert; eine Quotientenvorhersageschaltung, die so konfiguriert ist, dass sie auf der Grundlage von Informationen über zwei höchstwertige Ziffern des Zwischenrests und einer höchstwertigen Ziffer eines Divisors eine Quotientenvorhersage mit einer geringeren Genauigkeit als der höchsten aus den Informationen erhältlichen Genauigkeit durchführt, wodurch ein Vorhersageergebnis erzeugt wird; eine Festwertmultiplikationsschaltung, die konfiguriert ist, ein oder mehrere N-te (N: ganzzahlige) Vielfache des Divisors auszugeben, die als Reaktion auf das Vorhersageergebnis ausgewählt werden; einen oder mehrere Subtrahierer, die so konfiguriert sind, dass sie von dem Zwischenrest das eine oder die mehreren N-ten Vielfachen des Divisors subtrahieren, die von der Festwert-Multiplikationsschaltung ausgegeben werden; und eine Teilquotienten-Berechnungsschaltung, die so konfiguriert ist, dass sie einen Teilquotienten als Reaktion auf ein oder mehrere Übertragsbits einer oder mehrerer Subtraktionen erhält, die von dem einen oder den mehreren Subtrahierern durchgeführt werden.
-
Die
DE 11 2012 003 837 T5 offenbart ein Verfahren für eine differenzierte Anweisungsaktivierung mit Unterfunktionsgranularität. Eine Anweisung kapselt verschiedene Unterfunktionen einer Funktion, wobei die Unterfunktionen verschiedene Gruppen von Registern einer zusammengesetzten Registerdatei und daher verschiedene Gruppen von Funktionseinheiten verwenden. Mindestens ein Operand der Anweisung gibt an, welche Gruppe von Registern und daher welche Gruppe von Funktionseinheiten zum Ausführen der Unterfunktion zu verwenden ist. Die Anweisung kann verschiedene Funktionen ausführen (z. B. verschieben, laden usw.), und eine Unterfunktion der Funktion gibt den Funktionstyp an (z. B. Gleitkommaverschiebung, Vektorverschiebung usw.).
-
Die
DE 10 2014 003 799 A1 offenbart Systeme und Verfahren für die Eliminierung von Übertragungsoperationen mit Bypass-Mehrfachinstantiierungstabellen-(MIT)-Logik. Ein beispielhaftes Verarbeitungssystem kann eine erste Datenstruktur, die für die Speicherung einer Mehrzahl von physischen Registerwerten konfiguriert ist; eine zweite Datenstruktur, die für die Speicherung einer Mehrzahl von Zeigern konfiguriert ist, wobei jeder Zeiger auf ein Element der ersten Datenstruktur verweist; eine dritte Datenstruktur einschließlich einer Mehrzahl von Übertragungseliminierungssätzen, wobei jeder Übertragungseliminierungssatz eine Mehrzahl von Bits aufweist, die eine Mehrzahl von logischen Registern repräsentieren; und eine Logik, die für die Ausführung einer Datenbearbeitungsoperation konfiguriert ist, indem ein Element der zweiten Datenstruktur dazu veranlasst wird, auf ein Element der ersten Datenstruktur zu verweisen, wobei die Logik weiterhin so konfiguriert ist, dass sie die Ergebnisse von zwei oder mehr Datenbearbeitungsoperationen durch Ausführung einer einzelnen Aktualisierung der dritten Datenstruktur widerspiegelt, aufweisen.
-
KURZDARSTELLUNG
-
Zu den der Erfindung zugrundeliegenden technischen Aufgaben zählt das Bereitstellen einer Schaltung, eines Systems und eines Verfahrens zur parallelen Ausführung komplexer Rechenoperationen mit einer verbesserten Leistungsanpassung zwischen Berechnungen mit verschiedenen Genauigkeitsanforderungen. Die der Erfindung zugrundeliegenden Aufgaben werden jeweils mit den Merkmalen der unabhängigen Patentansprüche gelöst. Ausführungsformen der Erfindung sind Gegenstand der abhängigen Patentansprüche.
-
Gemäß einer oder mehreren Ausführungsformen wird eine Schaltung bereitgestellt. Die Schaltung weist eine Mehrzahl von rekonfigurierbaren Einheiten auf, die rekonfigurierbar sind, um ein zusammengefasstes Ergebnis zu berechnen. Ein erstes Zwischenergebnis einer ersten rekonfigurierbaren Einheit der Mehrzahl von rekonfigurierbaren Einheiten wird mit einem zweiten Zwischenergebnis einer zweiten rekonfigurierbaren Einheit der Mehrzahl von rekonfigurierbaren Einheiten ausgetauscht. Die erste rekonfigurierbare Einheit der Mehrzahl von rekonfigurierbaren Einheiten berechnet einen ersten Teil des zusammengefassten Ergebnisses mithilfe des zweiten Zwischenergebnisses. Die zweite rekonfigurierbare Einheit der Mehrzahl von rekonfigurierbaren Einheiten berechnet einen zweiten Teil des zusammengefassten Ergebnisses mithilfe des ersten Zwischenergebnisses.
-
Gemäß einer oder mehreren Ausführungsformen wird ein System bereitgestellt. Das System weist einen Prozessor und einen Speicher auf. Der Prozessor weist eine Mehrzahl von rekonfigurierbaren Einheiten auf, die rekonfigurierbar sind, um ein zusammengefasstes Ergebnis zu berechnen. Ein erstes Zwischenergebnis einer ersten rekonfigurierbaren Einheit der Mehrzahl von rekonfigurierbaren Einheiten wird mit einem zweiten Zwischenergebnis einer zweiten rekonfigurierbaren Einheit der Mehrzahl von rekonfigurierbaren Einheiten ausgetauscht. Die erste rekonfigurierbare Einheit der Mehrzahl von rekonfigurierbaren Einheiten berechnet einen ersten Teil des zusammengefassten Ergebnisses mithilfe des zweiten Zwischenergebnisses. Die zweite rekonfigurierbare Einheit der Mehrzahl von rekonfigurierbaren Einheiten berechnet einen zweiten Teil des zusammengefassten Ergebnisses mithilfe des ersten Zwischenergebnisses.
-
Gemäß einer oder mehreren Ausführungsformen wird ein Verfahren bereitgestellt. Das Verfahren wird von einem Prozessor umgesetzt, der eine Mehrzahl von rekonfigurierbaren Einheiten aufweist, die rekonfigurierbar sind, um ein zusammengefasstes Ergebnis zu berechnen. Das Verfahren weist ein Austauschen eines ersten Zwischenergebnisses einer ersten rekonfigurierbaren Einheit der Mehrzahl von rekonfigurierbaren Einheiten mit einem zweiten Zwischenergebnis einer zweiten rekonfigurierbaren Einheit der Mehrzahl von rekonfigurierbaren Einheiten auf. Das Verfahren weist ein Berechnen eines ersten Teils des zusammengefassten Ergebnisses mithilfe des zweiten Zwischenergebnisses durch die erste rekonfigurierbare Einheit der Mehrzahl von rekonfigurierbaren Einheiten sowie ein Berechnen eines zweiten Teils des zusammengefassten Ergebnisses mithilfe des ersten Zwischenergebnisses durch die zweite rekonfigurierbare Einheit der Mehrzahl von rekonfigurierbaren Einheiten auf.
-
Figurenliste
-
Der Gegenstand wird in den Ansprüchen am Ende der Beschreibung besonders hervorgehoben und ausdrücklich beansprucht. Das Vorstehende und andere Merkmale und Vorteile der Ausführungsformen hierin ergeben sich aus der nachfolgenden ausführlichen Beschreibung in Verbindung mit den beigefügten Zeichnungen, in denen:
- 1 ein System gemäß einer oder mehreren Ausführungsformen zeigt;
- 2 ein Umsetzungsbeispiel eines Systems gemäß einer oder mehreren Ausführungsformen zeigt;
- 3 einen Prozessablauf eines Systems gemäß einer oder mehreren Ausführungsformen zeigt;
- 4 ein Umsetzungsbeispiel eines Systems gemäß einer oder mehreren Ausführungsformen zeigt; und
- 5 ein System gemäß einer oder mehreren Ausführungsformen zeigt.
-
AUSFÜHRLICHE BESCHREIBUNG
-
Im Allgemeinen handelt es sich bei der parallelen Datenverarbeitung um eine Art von Berechnung, bei der viele Berechnungen und/oder Prozesse gleichzeitig durchgeführt werden, um große Probleme zu lösen. Zu Beispielen für große Probleme gehören das Modellieren der Milchstraßengalaxie, das Aufbauen und Trainieren von Modellen für die kognitive Datenverarbeitung, das Durchführen von Berechnungen im Bereich der Krebsforschung, das Darstellen dreidimensionaler Aminationen usw. Bei der parallelen Datenverarbeitung werden große Probleme in kleinere Berechnungen unterteilt, die dann gleichzeitig gelöst werden können. Je nach Problem (und Algorithmus) ist eine Arithmetik mit niedriger oder hoher Genauigkeit oder eine Mischung aus beidem erforderlich. Es gibt mehrere unterschiedliche parallele Datenverarbeitungsformen (z.B. moderne Chip-/Kernausgestaltungen), die jeweils Nachteile aufweisen.
-
So ist beispielsweise eine moderne System-on-a-Chip-Ausgestaltung für große und kleine Kerne, die in einer mobilen Einheit verwendet wird, bei der Leistung wichtiger als die Siliciumfläche ist, für High-End-Serverchips nicht erschwinglich, bei denen die Fläche auch ein Thema ist, da Chips eine bestimmte physische Größe nicht überschreiten können. Ein moderner Kernchip mit hoher Genauigkeit, der mit Grafikverarbeitungseinheiten verbunden werden kann, um zahlreiche Kerne mit einer Arithmetik von niedriger Genauigkeit bereitzustellen, weist auch einen großen Leistungsnachteil in Bezug auf den relativen „Abstand“ (in Zyklen) und die Bandbreite zwischen diesen Kernen mit niedriger Genauigkeit und dem modernen Kernchip mit hoher Genauigkeit auf. Ein weiterer Ansatz für einen Kernchip mit hoher Leistung besteht darin, die Größe der Recheneinheit mit hoher Genauigkeit auf dem Kern zu minimieren, um so viele Kerne wie möglich aufzunehmen. Damit ist das Problem des Gleichgewichts zwischen der Rechenanforderung nach hoher Genauigkeit und niedriger Genauigkeit noch nicht grundlegend gelöst.
-
Kommen wir nun zu einem Überblick über die Aspekte der vorliegenden Erfindung, wobei die hierin offenbarten Ausführungsformen ein System, ein Verfahren und/oder ein Computerprogrammprodukt (hierin System) beinhalten können, das SIMD-Einheiten (SIMD = single instruction, multiple data = einzelne Anweisung, mehrere Daten) zusammenfasst, um eine einzelne komplexe Rechenoperation mit hoher Genauigkeit zu berechnen, indem Teilergebnisse zwischen den SIMD-Einheiten ausgetauscht werden. SIMD-Einheiten weisen mehrere Verarbeitungselemente auf, die dieselbe Operation an mehreren Datenpunkten gleichzeitig ausführen können. Zu den technischen Auswirkungen und Vorteilen des Systems gehört, einen Aufbau von hocheffizienten kleinen Blöcken mit geringer Genauigkeit für einen Scale-Out-Markt zu ermöglichen, während gleichzeitig die Fähigkeit erhalten bleibt, komplexe Arithmetik mit hoher Genauigkeit (Multiplikation-Addition mit hoher Genauigkeit) durchzuführen. Zu den technischen Auswirkungen und Vorteilen des Systems zählt die Möglichkeit, den sich daraus ergebenden Verschaltungsaufwand und/oder die Verzögerung durch die Parallelverarbeitung der SIMD-Einheiten zu begrenzen und auszublenden. Daher sind die hierin beschriebenen Ausführungsformen notwendigerweise in einem Prozessor des Systems verankert, um proaktive Operationen zum Lösen von Problemen durchzuführen, die speziell im Bereich der Auslegung der Prozessorarithmetik auftreten (z.B. beinhalten diese Probleme ein Gleichgewicht zwischen einigen wenigen Einheiten mit hoher Genauigkeit und zahlreichen Einheiten mit geringer Genauigkeit angesichts unterschiedlicher großer Anforderungen an die Rechengenauigkeit).
-
Mit Bezug nunmehr auf 1 fast ein System 100 n kleine x-Bit-Einheiten mit geringer Genauigkeit (SIMD-Einheiten 120.0 ... 120.n-1, wobei n eine ganze Zahl größer als null ist) zusammen, um eine einzelne komplexe Rechenoperation mit hoher Genauigkeit zu berechnen (z.B. bis zu n*x-Bits, wobei x eine ganze Zahl größer als null ist), indem Teilergebnisse zwischen den n kleinen x-Bit-Einheiten mit niedriger Genauigkeit ausgetauscht werden (siehe Pfeile 140). Das System 100 kann für arithmetische Multiplikationsoperationen und/oder Multiplikations-Additions-Operationen verwendet werden (d.h., durch diese Operationen mit einer Multiplikation unterscheidet sich das System 100 von einer einfachen Übertragweiterleitung (carry propagation) zwischen den SIMD-Einheiten).
-
Die SIMD-Einheiten 120.0 ... 120.n-1 sind zum Beispiel rekonfigurierbar, um mehrere Multiplikationen von x-Bit breiten Zahlen zu berechnen und 2*x-Bit-Ergebnisse zu addieren, um das zusammengefasste Ergebnis zu bilden. Bei dem zusammengefassten Ergebnis kann es sich um ein einzelnes breites komplexes skalares Ergebnis mit höherer Genauigkeit oder um einen Teil des einzelnen breiten komplexen skalaren Ergebnisses mit höherer Genauigkeit handeln. Es ist zu beachten, dass die Zusammenfassung der SIMD-Einheit 120.0 ... 120.n-1 die parallele (d.h. nicht sequenzielle) Berechnung des breiten Ergebnisses ermöglicht.
-
Weiterhin ist jede SIMD-Einheit 120.0 ... 120.n-1 rekonfigurierbar, um ein 2*x-Bit-Akkumulatorergebnis zu dem zusammengefassten Ergebnis zu addieren. Gemäß einer nichteinschränkenden Ausführungsform kann eine Gruppe von vier SIMD-Einheiten die Ausführung von komplexen Rechenoperation mit viermal einfacher Genauigkeit, zweimal zweifacher Genauigkeit und einmal vierfacher Genauigkeit bereitstellen, die eine Multiplikationsoperation aufweist, ohne darauf beschränkt zu sein.
-
Die SIMD-Einheiten 120 des Systems 100 können beispielsweise x-Bit-Einheiten aufweisen, die n x-Bit-Eingangsoperanden (siehe Pfeile 141) oder n*x-Bit-Eingangsoperanden (durch Block 150 dargestellt) empfangen. Die komplexe Rechenoperation wird von den SIMD-Einheiten 120 auf diesen Operanden durchgeführt.
-
Während der komplexen Rechenoperation tauscht jede der SIMD-Einheiten 120 die Zwischenergebnisse aus (siehe Pfeile 140). Wenn n gleich zwei ist, kann eine der SIMD-Einheiten 120 (z.B. SIMD-Einheit 120.0) in einer nichteinschränkenden Ausführungsform einen hochwertigen Teil (high order portion) der komplexen Rechenoperation durchführen, die zu einem ersten Zwischenergebnis führt, und eine andere SIMD-Einheit 120 (z.B. SIMD-Einheit 120.1) kann einen niedrigwertigen Teil (low order portion) der komplexen Rechenoperation durchführen, die zu einem zweiten Zwischenergebnis führt.
-
Die Teilergebnisse werden verwendet, um jeden Teil eines Endergebnisses 160 zu berechnen, bei dem es sich um ein skalares n*x-Bit-Ergebnis handeln kann (siehe Pfeile 151).
-
Die SIMD-Einheit 120.0 kann weiterhin in der nichteinschränkenden Ausführungsform einen Teil des Zwischenergebnisses von der SIMD-Einheit 120.1 verwenden, um einen hochwertigen Teil des Endergebnisses 160 zu erzeugen. Die SIMD-Einheit 120.1 kann einen Teil des Zwischenergebnisses von der SIMD-Einheit 120.0 verwenden, um einen niedrigwertigen Teil des Endergebnisses 160 zu erzeugen. Die niedrigwertigen und hochwertigen Teile werden anschließend verknüpft (zusammengefasst), um das Endergebnis 160 zu erzeugen.
-
Mit Bezug nunmehr auf 2 wird ein Umsetzungsbeispiel des Systems 100 gemäß einer oder mehreren Ausführungsformen gezeigt. Das Umsetzungsbeispiel wird als ein System 200 gezeigt, das eine erste Recheneinheit 201 und eine zweite Recheneinheit 202 aufweist (z.B. binäre Gleitkomma-Recheneinheiten), die jeweils eine Multiplikations-Additions-Rechenschaltung aufweisen. Jede der Multiplikations-Additions-Rechenschaltungen der ersten und zweiten Recheneinheit 201 bzw. 202 weist die Multiplikatoren 205 und 206 (z.B. Summen- und Übertragmultiplikatoren), die ersten Addierer 213 und 214 (z.B. eingebundene Addierer), die zweiten Addierer 217 und 218, die Formatierer 221 und 222 (z.B. Normalisierer und Runder) sowie die Multiplexer 225 und 226 auf.
-
Gemäß einer nichteinschränken Ausführungsform wird nun mit Bezug auf einen Prozessablauf 300 von 3 ein Arbeitsablauf des Systems 200 beschrieben. Der Prozessablauf 300 beschreibt zwar Operationen aus Sicht der ersten Recheneinheit 201, doch ist zu beachten, dass ähnliche Operationen parallel in der zweiten Recheneinheit 202 durchgeführt werden.
-
Bei jeder der Datenelement-Rechenblöcke mit niedriger Genauigkeit (z.B. die Recheneinheiten 201 und 202) handelt es sich um einen Rechenblock mit niedriger Genauigkeit, der ein Ergebnis in einem der Datenelemente der SIMD (mehrere Datenelemente, einzelne Anweisung) berechnet. Die Zwischenergebnisse dieser Datenelement-Rechenblöcke mit niedriger Genauigkeit (z.B. Recheneinheiten 201 und 202) werden ausgetauscht und zusammengefasst, um ein Datenergebnis mit hoher Genauigkeit zu berechnen.
-
Der Prozessablauf 300 beginnt bei Block 305, wo das System 200 einen Satz Operanden in der ersten Recheneinheit 201 empfängt. Der Operandensatz kann mindestens drei Operanden A, B und C enthalten. In diesem Beispiel verwaltet die erste Recheneinheit 201 die hochwertigen Bits dieser drei Operanden A, B und C. Wie in 2 dargestellt, empfängt die erste Recheneinheit 201 AHOCH, BHOCH und CHOCH. Wenn jeder Operand A, B und C in einer nichteinschränken Ausführungsform aus 2x-Bits besteht (z.B. 128 Bits), werden die hochwertigen Bits gleichmäßig in x-Bits aufgeteilt (z.B. 64 Bits). Bei Block 310 multipliziert der Multiplikator 205 des Systems einen ersten Operanden (z.B. AHOCH) bzw. einen zweiten Operanden (z.B. CHOCH) des Operandensatzes, um ein Produkt zu bilden. Wie in 2 gezeigt, multipliziert der Multiplikator 205 AHOCH und CHOCH, was zu einem ersten 2x-Bit-Produkt (z.B. 128-Bit-Produkt) und einem zweiten 2x-Bit-Produkt führt.
-
Es ist anzumerken, dass das System 200 in einer nichteinschränkenden Ausführungsform das Produkt addieren kann (z.B. das erste und das zweite 2x-Bit-Produkt), um eine Summe zu bilden. Bei Block 320 hängt das System 200 „Null“-Bits an einen dritten Operanden (z.B. BHOCH) des Operandensatzes an, um eine Übereinstimmung mit der Breite des Produkts zu erzielen (und einen erweiterten dritten Operanden zu bilden). Es ist anzumerken, dass die Anhängeoperation zu einer 2x-Bit-Zahl für die zweite Summe führt und dass die Anhängeoperation im ersten Addierer 213 stattfinden kann (z.B. drei Eingangs- und Ausgangsaddierer). Wie zum Beispiel in 2 gezeigt, addiert der erste Addierer 213 das erste und das zweite 2x-Bit-Produkt, um eine erste 2x-Bit-Summe zu bilden, und der erste Addierer 213 addiert BHOCH und „Null“-Bits, um eine zweite 2x-Bit-Summe zu bilden.
-
Bei Block 325 addiert das System 200 das Produkt und den erweiterten dritten Operanden, um ein Zwischenergebnis zu bilden. Es sei darauf hingewiesen, dass es sich bei dem Zwischenergebnis um eine 2x-Bit-Zahl handeln kann. Bei Block 330 tauscht das System 200 einen Teil des Zwischenergebnisses mit einer zweiten Recheneinheit 202 aus. Wie zum Beispiel in 2 gezeigt, addiert der zweite Addierer 213 die erste und die zweite 2x-Bit-Summe, um ein Zwischenergebnis zu bilden. Ein Teil des Zwischenergebnisses vom zweiten Addierer 213 wird der zweiten Recheneinheit 202 bereitgestellt. Zusätzlich wird ein Teil eines Zwischenergebnisses vom zweiten Addierer 214 der ersten Recheneinheit 201 bereitgestellt. Auf diese Art und Weise werden Teile jedes Zwischenergebnisses ausgetauscht. Es ist anzumerken, dass 2 die niedrigwertigen x-Bits (z.B. 64 L, RNIEDRIG) des Zwischenergebnisses von der ersten binären Gleitkommaeinheit 201 zeigt, die mit den hochwertigen x-Bits (z.B. 64 H, RHOCH) des Zwischenergebnisses von der zweiten binären Gleitkommaeinheit 202 ausgetauscht werden. Auf diese Weise werden Teilergebnisse (z.B. RHOCH und RNIEDRIG) verwendet, um breite Ergebnisse für Multiplikation und/oder Multiplikation-Addition zu berechnen.
-
Bei Block 335 addiert das System 200 den Teil des Zwischenergebnisses und einen von der zweiten Recheneinheit empfangenen Teil eines Zwischenergebnisses, um einen Teil eines Endergebnisses zu erzeugen. Wie in 2 gezeigt, addiert der zweite Addierer 217 die hochwertigen 64 Bits (z.B. 64 H) des Zwischenergebnisses von der ersten binären Gleitkommaeinheit 201 und die hochwertigen 64 Bits (z.B. 64 H, RHOCH) des Zwischenergebnisses von der zweiten binären Gleitkommaeinheit 202, um ein Endergebnis zu erzeugen. Der zweite Addierer 217 kann auch ein Übertragbit (z.B. CNIEDRIG) vom zweiten Addierer 218 verwenden. Das Endergebnis wird anschließend vom Multiplexer 225 einem Multiplexing unterzogen, wobei der Formatierer 221 ein normalisiertes Zwischenergebnis ausgibt, um die hochwertigen Bits des Endergebnisses (z.B. RESHOCH) zu erzeugen. Wie vorstehend festgestellt, werden ähnliche Operationen parallel in der zweiten Recheneinheit 202 durchgeführt, um niedrigwertige Bits des Endergebnisses (z.B. RESNIEDRIG) zu erzeugen.
-
Mit Bezug nunmehr auf 4 wird ein Umsetzungsbeispiel des Systems 100 gemäß einer oder mehreren Ausführungsformen gezeigt. Das Umsetzungsbeispiel wird als ein System 400 gezeigt, das eine erste Recheneinheit 401 und eine zweite Recheneinheit 402 aufweist (z.B. binäre Gleitkomma-Recheneinheiten). Die erste und die zweite Recheneinheiten 401 bzw. 402 weisen jeweils die Multiplikatoren 405 und 406, die ersten Addierer 409 und 410, die zweiten Addierer 409 und 410, die Formatierer 421 und 422 sowie die Multiplexer 425 und 426 auf.
-
Im Rahmen einer beispielhaften Operation empfängt das System 400 einen Operandensatz in der ersten Recheneinheit 401 und in der zweiten Recheneinheit 402. Der Operandensatz kann eine Zahl 402 zusammen mit einem Operanden A 403a, Operanden B 403b, Operanden C 403c und Operanden D 403d enthalten. In diesem Beispiel verwaltet die erste Recheneinheit 401 die hochwertigen Bits der Zahl 402 und die zweite Recheneinheit 402 verwaltet die niedrigwertigen Bits der Zahl 402.
-
Wie in 4 gezeigt, werden Operand A 403a und Operand B 403b vom Multiplikator 405 des Systems 400 multipliziert, um ein erstes Produkt zu erzeugen. Operand C 403c und Operand D 403d werden vom Multiplikator 406 des Systems 400 multipliziert, um ein zweites Produkt zu erzeugen.
-
Das System 400 addiert das erste Produkt, um eine erste Summe zu erzeugen, die sich aus den hochwertigen Bits der Zahl 402 ergibt, an die „Null“-Bits angehängt werden. Das System 400 addiert weiterhin das zweite Produkt, um eine zweite Summe zu erzeugen, die sich aus den niedrigwertigen Bits der Zahl 402 ergibt, der „Null“-Bits vorangestellt werden.
-
Das System 400 verwendet den ersten Addierer 409, um die erste Summe und das erste Produkt zu addieren, um ein erstes Zwischenergebnis zu bilden. Das System 400 verwendet den ersten Addierer 410, um die zweite Summe und das zweite Produkt zu addieren, um ein zweites Zwischenergebnis zu bilden. Das erste und das zweite Zwischenergebnis werden jeweils so geteilt, dass Teile des ersten und des zweiten Zwischenergebnisses ausgetauscht und den zweiten Addierern 417 und 418 bereitgestellt werden. Ein niedrigwertiger Teil des ersten Zwischenergebnisses kann beispielsweise der zweiten binären Gleitkommaeinheit 402 bereitgestellt werden, während ein hochwertiger Teil des ersten Zwischenergebnisses dem zweiten Addierer 417 bereitgestellt werden kann. Ein hochwertiger Teil des zweiten Zwischenergebnisses kann der ersten binären Gleitkommaeinheit 401 bereitgestellt werden, während ein niedrigwertiger Teil des zweiten Zwischenergebnisses dem zweiten Addierer 418 bereitgestellt werden kann. Es ist anzumerken, dass das erste und zweite Zwischenergebnis den Formatierern 421 und 422 vollständig bereitgestellt werden kann.
-
Der zweite Addierer 418 addiert den niedrigwertigen Teil des ersten Zwischenergebnisses und den niedrigwertigen Teil des zweiten Zwischenergebnisses, um den niedrigwertigen Teil des Endergebnisses zu erzeugen. Das zweite Endergebnis wird anschließend vom Multiplexer 426 einem Multiplexing unterzogen, wobei der Formatierer 421 ein normalisiertes Zwischenergebnis ausgibt, um die niedrigwertigen Bits des zusammengefassten Endergebnisses 490 zu erzeugen. Der zweite Addierer 417 addiert den hochwertigen Teil des ersten Zwischenergebnisses, das Übertragbit des zweiten Zwischenergebnisses und den hochwertigen Teil des zweiten Zwischenergebnisses, um den hochwertigen Teil des Endergebnisses zu erzeugen. Das erste Endergebnis wird anschließend vom Multiplexer 425 einem Multiplexing unterzogen, wobei der Formatierer 421 ein normalisiertes Zwischenergebnis ausgibt, um die hochwertigen Bits eines zusammengefassten Endergebnisses 490 zu erzeugen.
-
5 zeigt ein Beispiel eines Systems 500 gemäß einer oder mehreren Ausführungsformen. Das System 500 weist eine oder mehrere Zentraleinheiten (CPUs) 501a, 501b, 501c usw. auf (die zusammen oder einzeln allgemein als Prozessor(en) 501 bezeichnet werden). Die Prozessoren 501, die auch als Verarbeitungsschaltungen bezeichnet werden, sind über einen Systembus 502 mit dem Systemspeicher 503 und verschiedenen anderen Komponenten verbunden. Der Systemspeicher 503 kann einen Nur-Lese-Speicher (ROM) 504 und einen Direktzugriffsspeicher (RAM) 505 enthalten. Der ROM 504 ist mit dem Systembus 502 verbunden und kann ein grundlegendes Eingabe-/Ausgabesystem (BIOS) enthalten, das bestimmte Grundfunktionen des Systems 500 steuert. Bei dem RAM handelt es sich um einen Lese-Schreib-Speicher, der mit dem Systembus 502 verbunden ist, um von den Prozessoren 501 verwendet zu werden.
-
5 zeigt weiterhin einen Eingabe-/Ausgabe(E/A)-Adapter 506 und einen Datenübertragungsadapter 507, der mit dem Systembus 502 verbunden ist. Bei dem E/A-Adapter 506 kann es sich um einen Small-Computer-System-Interface(SCSI)-Adapter handeln, der mit einer Festplatte 508 und/oder anderen ähnlichen Komponenten Daten austauscht. Der E/A-Adapter 506 und die Festplatte 508 werden hierin zusammen als Massenspeicher 510 bezeichnet. Im Massenspeicher 510 kann eine Software 511 zum Ausführen im System 500 gespeichert werden. Der Massenspeicher 510 stellt ein Beispiel eines physischen Speichermediums dar, das von den Prozessoren 501 gelesen werden kann, wobei die Software 511 als Anweisungen gespeichert ist, die von den Prozessoren 501 ausgeführt werden, um das System 500 zu veranlassen, in der wie hierin mit Bezug auf 3 beschriebenen Form zu funktionieren. Beispiele für ein Computerprogrammprodukt und die Ausführung dieser Anweisung werden hierin im Einzelnen beschrieben. Mit erneutem Bezug auf 5 verbindet ein Datenübertragungsadapter 507 den Systembus 502 mit einem Netzwerk 512, bei dem es sich um ein externes Netzwerk handeln kann, das das System 500 in die Lage versetzt, mit anderen Systemen dieser Art Daten auszutauschen. Eine Anzeige (z.B. ein Bildschirm, ein Anzeigemonitor) 515 ist über einen Anzeigenadapter 516 mit dem Systembus 502 verbunden, wobei der Anzeigenadapter eine Grafiksteuereinheit enthalten kann, um die Leistung grafikintensiver Anwendungen zu verbessern, sowie eine Videosteuereinheit. In einer Ausführungsform können die Adapter 506, 507 und 516 mit einem oder mehreren E/A-Bussen verbunden sein, die über eine Buszwischenbrücke (nicht dargestellt) mit dem Systembus 502 verbunden sind. Zu geeigneten E/A-Bussen zum Verbinden von Peripherieeinheiten wie Festplattensteuereinheiten, Netzwerkadaptern und Grafikadaptern gehören in der Regel gemeinsame Protokolle wie Peripheral Component Interconnect (PCI). Zusätzliche Eingabe-/Ausgabeeinheiten sind in der Darstellung über einen Schnittstellenadapter 520 und den Anzeigenadapter 516 mit dem Systembus 502 verbunden. Über den Schnittstellenadapter 520, der zum Beispiel einen Super-E/A-Chip enthalten kann, der mehrere Einheitenadapter in einer einzigen integrierten Schaltung integriert, können eine Tastatur, eine Maus, ein Lautsprecher usw. mit dem Systembus 502 verbunden sein.
-
Wie daher in 5 konfiguriert, beinhaltet das System 500 eine Verarbeitungsfähigkeit in Form der Prozessoren 501 sowie eine Speicherfähigkeit mit dem Systemspeicher 503 und dem Massenspeicher 510, Eingabemittel wie die Tastatur und die Maus sowie eine Ausgabefähigkeit mit dem Lautsprecher und der Anzeige 515. In einer Ausführungsform speichert ein Teil des Systemspeichers 503 und des Massenspeichers 510 gemeinsam ein Betriebssystem wie das Betriebssystem z/OS oder AIX der IBM Corporation, um die Funktionen der verschiedenen in 5 gezeigten Komponenten zu koordinieren.
-
Bei der vorliegenden Erfindung kann es sich um ein System, ein Verfahren und/oder ein Computerprogrammprodukt auf jedem möglichen technischen Detaillierungsgrad der Integration handeln. Das Computerprogrammprodukt kann (ein) durch einen Computer lesbare(s) Speichermedium (oder -medien) beinhalten, auf dem/denen durch einen Computer lesbare Programmanweisungen gespeichert ist/sind, um einen Prozessor dazu zu veranlassen, Aspekte der vorliegenden Erfindung auszuführen.
-
Bei dem durch einen Computer lesbaren Speichermedium kann es sich um eine physische Einheit handeln, die Anweisungen zur Verwendung durch eine Einheit zur Ausführung von Anweisungen behalten und speichern kann. Bei dem durch einen Computer lesbaren Speichermedium kann es sich zum Beispiel um eine elektronische Speichereinheit, eine magnetische Speichereinheit, eine optische Speichereinheit, eine elektromagnetische Speichereinheit, eine Halbleiterspeichereinheit oder jede geeignete Kombination daraus handeln, ohne auf diese beschränkt zu sein. Zu einer nicht erschöpfenden Liste spezifischerer Beispiele des durch einen Computer lesbaren Speichermediums gehören die Folgenden: eine tragbare Computerdiskette, eine Festplatte, ein Direktzugriffsspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM bzw. Flash-Speicher), ein statischer Direktzugriffsspeicher (SRAM), ein tragbarer Kompaktspeicherplatte-Nur-Lese-Speicher (CD-ROM), eine DVD (digital versatile disc), ein Speicher-Stick, eine Diskette, eine mechanisch codierte Einheit wie zum Beispiel Lochkarten oder gehobene Strukturen in einer Rille, auf denen Anweisungen gespeichert sind, und jede geeignete Kombination daraus. Ein durch einen Computer lesbares Speichermedium soll in der Verwendung hierin nicht als flüchtige Signale an sich aufgefasst werden, wie zum Beispiel Funkwellen oder andere sich frei ausbreitende elektromagnetische Wellen, elektromagnetische Wellen, die sich durch einen Wellenleiter oder ein anderes Übertragungsmedium ausbreiten (z.B. ein Lichtwellenleiterkabel durchlaufende Lichtimpulse) oder durch einen Draht übertragene elektrische Signale.
-
Hierin beschriebene, durch einen Computer lesbare Programmanweisungen können von einem durch einen Computer lesbaren Speichermedium auf jeweilige Datenverarbeitungs- /Verarbeitungseinheiten oder über ein Netzwerk wie zum Beispiel das Internet, ein lokales Netzwerk, ein Weitverkehrsnetz und/oder ein drahtloses Netzwerk auf einen externen Computer oder eine externe Speichereinheit heruntergeladen werden. Das Netzwerk kann Kupferübertragungskabel, Lichtwellenübertragungsleiter, drahtlose Übertragung, Leitwegrechner, Firewalls, Vermittlungseinheiten, Gateway-Computer und/oder Edge-Server aufweisen. Eine Netzwerkadapterkarte oder Netzwerkschnittstelle in jeder Datenverarbeitungs-/Verarbeitungseinheit empfängt durch einen Computer lesbare Programmanweisungen aus dem Netzwerk und leitet die durch einen Computer lesbaren Programmanweisungen zur Speicherung in einem durch einen Computer lesbaren Speichermedium innerhalb der entsprechenden Datenverarbeitungs-/Verarbeitungseinheit weiter.
-
Bei durch einen Computer lesbaren Programmanweisungen zum Ausführen von Arbeitsschritten der vorliegenden Erfindung kann es sich um Assembler-Anweisungen, ISA-Anweisungen (Instruction-Set-Architecture), Maschinenanweisungen, maschinenabhängige Anweisungen, Mikrocode, Firmware-Anweisungen, zustandssetzende Daten, Konfigurationsdaten für integrierte Schaltungen oder entweder Quellcode oder Objektcode handeln, die in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen geschrieben werden, darunter objektorientierte Programmiersprachen wie Smalltalk, C++ o. ä. sowie prozedurale Programmiersprachen wie die Programmiersprache „C“ oder ähnliche Programmiersprachen. Die durch einen Computer lesbaren Programmanweisungen können vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Software-Paket, teilweise auf dem Computer des Benutzers und teilweise auf einem entfernt angeordneten Computer oder vollständig auf dem entfernt angeordneten Computer oder Server ausgeführt werden. In letzterem Fall kann der entfernt angeordnete Computer mit dem Computer des Benutzers durch eine beliebige Art Netzwerk verbunden sein, darunter ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetz (WAN), oder die Verbindung kann mit einem externen Computer hergestellt werden (zum Beispiel über das Internet unter Verwendung eines Internet-Dienstanbieters). In einigen Ausführungsformen können elektronische Schaltungen, darunter zum Beispiel programmierbare Logikschaltungen, vor Ort programmierbare Gatter-Anordnungen (FPGA, field programmable gate arrays) oder programmierbare Logikanordnungen (PLA, programmable logic arrays) die durch einen Computer lesbaren Programmanweisungen ausführen, indem sie Zustandsinformationen der durch einen Computer lesbaren Programmanweisungen nutzen, um die elektronischen Schaltungen zu personalisieren, um Aspekte der vorliegenden Erfindung durchzuführen.
-
Aspekte der vorliegenden Erfindung sind hierin unter Bezugnahme auf Ablaufpläne und/oder Blockschaltbilder bzw. Schaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es wird darauf hingewiesen, dass jeder Block der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder sowie Kombinationen von Blöcken in den Ablaufplänen und/oder den Blockschaltbildern bzw. Schaubildern mittels durch einen Computer lesbare Programmanweisungen ausgeführt werden können.
-
Diese durch einen Computer lesbaren Programmanweisungen können einem Prozessor eines Universalcomputers, eines Spezialcomputers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, sodass die über den Prozessor des Computers bzw. der anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführten Anweisungen ein Mittel zur Umsetzung der in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder festgelegten Funktionen/Schritte erzeugen. Diese durch einen Computer lesbaren Programmanweisungen können auch auf einem durch einen Computer lesbaren Speichermedium gespeichert sein, das einen Computer, eine programmierbare Datenverarbeitungsvorrichtung und/oder andere Einheiten so steuern kann, dass sie auf eine bestimmte Art funktionieren, sodass das durch einen Computer lesbare Speichermedium, auf dem Anweisungen gespeichert sind, einen Herstellungsartikel aufweist, darunter Anweisungen, welche Aspekte der/des in dem Block bzw. den Blöcken des Ablaufplans und/oder der Blockschaltbilder bzw. Schaubilder angegebenen Funktion/Schritts umsetzen.
-
Die durch einen Computer lesbaren Programmanweisungen können auch auf einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder eine andere Einheit geladen werden, um das Ausführen einer Reihe von Prozessschritten auf dem Computer bzw. der anderen programmierbaren Vorrichtung oder anderen Einheit zu verursachen, um einen auf einem Computer ausgeführten Prozess zu erzeugen, sodass die auf dem Computer, einer anderen programmierbaren Vorrichtung oder einer anderen Einheit ausgeführten Anweisungen die in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder festgelegten Funktionen/Schritte umsetzen.
-
Die Ablaufpläne und die Blockschaltbilder bzw. Schaubilder in den Figuren veranschaulichen die Architektur, die Funktionalität und den Betrieb möglicher Ausführungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. In diesem Zusammenhang kann jeder Block in den Ablaufplänen oder Blockschaltbildern bzw. Schaubildern ein Modul, ein Segment oder einen Teil von Anweisungen darstellen, die eine oder mehrere ausführbare Anweisungen zur Ausführung der bestimmten logischen Funktion(en) aufweisen. In einigen alternativen Ausführungen können die in dem Block angegebenen Funktionen in einer anderen Reihenfolge als in den Figuren gezeigt stattfinden. Zwei nacheinander gezeigte Blöcke können zum Beispiel in Wirklichkeit im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können manchmal je nach entsprechender Funktionalität in umgekehrter Reihenfolge ausgeführt werden. Es ist ferner anzumerken, dass jeder Block der Blockschaltbilder bzw. Schaubilder und/oder der Ablaufpläne sowie Kombinationen aus Blöcken in den Blockschaltbildern bzw. Schaubildern und/oder den Ablaufplänen durch spezielle auf Hardware beruhende Systeme umgesetzt werden können, welche die festgelegten Funktionen oder Schritte durchführen, oder Kombinationen aus Spezial-Hardware und Computeranweisungen ausführen.