DE212007000102U1 - Rekonfigurierbarer Array-Prozessor für Gleitkomma-Operationen - Google Patents
Rekonfigurierbarer Array-Prozessor für Gleitkomma-Operationen Download PDFInfo
- Publication number
- DE212007000102U1 DE212007000102U1 DE212007000102U DE212007000102U DE212007000102U1 DE 212007000102 U1 DE212007000102 U1 DE 212007000102U1 DE 212007000102 U DE212007000102 U DE 212007000102U DE 212007000102 U DE212007000102 U DE 212007000102U DE 212007000102 U1 DE212007000102 U1 DE 212007000102U1
- Authority
- DE
- Germany
- Prior art keywords
- array
- processing elements
- processor
- logic unit
- floating
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/57—Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/38—Indexing scheme relating to groups G06F7/38 - G06F7/575
- G06F2207/3804—Details
- G06F2207/3808—Details concerning the type of numbers or the way they are handled
- G06F2207/3812—Devices capable of handling different types of numbers
- G06F2207/3824—Accepting both fixed-point and floating-point numbers
Landscapes
- Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Software Systems (AREA)
- Nonlinear Science (AREA)
- Advance Control (AREA)
Abstract
Description
- Technisches Gebiet
- Die vorliegende Erfindung betrifft die digitale Informationsverarbeitung und eine Vorrichtung, die für verschiedene Anwendungen einschließlich von Multimedia-Plattformen geeignet ist.
- Stand der Technik
- Eine digitale Informationsverarbeitung und eine Vorrichtung zum Durchführen einer komplexen Datenverarbeitung kann für verschiedene Anwendungen einschließlich von Multimedia-Plattformen implementiert werden. Mit dem zunehmenden Bedarf an Multimedia-Diensten in hoher Qualität werden Anwendungsprogramme für die effiziente Verarbeitung von Audiodaten und/oder Videodaten in mobilen Systemen wie etwa Mobiltelefonen, Smartphones, PDAs usw. entwickelt. Diese Anwendungsprogramme können datenintensive Berechnungen durchführen und können unter Verwendung einer Software-Implementierung (SI), die auf einem Zielprozessor ausgeführt wird, und/oder unter Verwendung einer Hardware-Implementierung (HI) des ASIC-Typs implementiert werden.
- Beschreibung der Erfindung
- Problemstellung
- Die vorliegende Erfindung gibt einen rekonfigurierbaren Array-Prozessor (RA-Prozessor) an, der Gleitkomma-Operationen relativ schnell ausführen kann und gleichzeitig einen geringen Stromverbrauch und ein hohes Leistung/Kosten-Verhältnis aufweist, wobei der RA-Prozessor eine Hardware-Größe ähnlich wie bei einem herkömmlichen RA-Prozessor aufweist und ein vorhandenes Verarbeitungselement (PE) zum Ausführen einer Ganzzahlarithmetik nutzt. Weiterhin gibt die vorliegende Erfindung eine Multimedia-Plattform mit einem derartigen RA-Prozessor an.
- Problemlösung
- Es werden eine digitale Informationsverarbeitung und eine Vorrichtung zum Ausführen von Gleitkomma-Operationen beschrieben. Gemäß einem Aspekt umfasst ein Prozessor zum Ausführen von Gleitkomma-Operationen ein Array aus Verarbeitungselementen (PEs), die angeordnet sind, um eine Gleitkomma-Operation zu ermöglichen. Jedes Verarbeitungselement enthält eine Arithmetik-Logik-Einheit (ALU), um zwei Eingabewerte zu empfangen und eine Ganzzahlarithmetik auf den empfangenen Eingabewerten auszuführen. Die Verarbeitungselemente in dem Array sind zu Gruppen von zwei oder mehr Verarbeitungselementen verbunden, um eine Gleitkomma-Operation zu ermöglichen.
- Bestimmte Implementierungen können optional eines oder mehrere der folgenden Merkmale umfassen. Die Arithmetik-Logik-Einheit kann eine 16-Bit-Arithmetik-Logik-Einheit sein. Die Verarbeitungselemente des Arrays können in einer Netzstruktur verbunden sein, um Datenkommunikationen zwischen den verbundenen Verarbeitungselementen zu ermöglichen. Außerdem kann das Array wahlweise konfiguriert werden, um eine Ganzzahlarithmetik-Operation unter Verwendung jedes Verarbeitungselements und eine Gleitkomma-Operation unter Verwendung jeder Gruppe von zwei oder mehr miteinander verbundenen Verarbeitungselementen auszuführen. Wenigstens zwei Verarbeitungselemente in einer Reihe oder Spalte des Arrays können miteinander verbunden werden, um die zwei oder mehr Gruppen zum Ausführen von Gleitkomma-Operationen zu bilden. Das Array kann wahlweise konfiguriert sein, um in einer 8 × 5-Anordnung betrieben zu werden, wenn die Ganzzahlarithmetik-Operation ausgeführt wird, und in einer 4 × 5-Anordnung, in der die Verarbeitungselemente in Paaren in jeder Spalte des Arrays verbunden sind, wenn die Gleitkomma-Operationen ausgeführt wird. Weiterhin kann ein Konfigurationscache mit dem Array verbunden sein, um einen Kontext zu speichern, der die durch die Verarbeitungselemente in den Spalten oder Reihen des Arrays ausgeführten Ganzzahlarithmetik-Operationen und/oder Gleitkomma-Operationen steuert. Der Konfigurationscache kann auch die Datenkommunikation zwischen den Verarbeitungselementen steuern. Die Verarbeitungselemente können in Spalten oder Reihen auf der Basis des Kontextes konfiguriert sein, um eine Pipeline zu bilden, und ein Ergebnis einer Pipeline-Operation in einer durch den Kontext angewiesenen Richtung weiterleiten.
- Verschiedene Implementierungen können optional eines oder mehrere der folgenden Merkmale enthalten. Jede der zwei oder mehr Gruppen von zwei oder mehr Verarbeitungseinheiten kann konfiguriert werden, um die Ganzzahlarithmetik-Operation oder die Gleitkommaarithmetik-Operation durch ein zeitliches Mapping auszuführen. Außerdem können jede der zwei oder mehr Gruppen von zwei oder mehr Verarbeitungseinheiten konfiguriert sein, um einen nächsten Kontext zu empfangen, nachdem ein Endwert der Ganzzahlarithmetik-Operation oder der Gleitkommaarithmetik-Operation erhalten wurde. Weiterhin kann jede der zwei oder mehr Gruppen von zwei oder mehr Verarbeitungselementen konfiguriert sein, um ein Steuersignal von dem Kontext zu empfangen, um eine Operation mit mehreren Zyklen auszuführen. Die zwei oder mehr Gruppen von zwei oder mehr Verarbeitungselementen können konfiguriert sein, um die vier Grundrechenarten und transzendente Funktionen für Gleitkomma-Operationen auszuführen. Außerdem kann jede der zwei oder mehr Gruppen von zwei oder mehr Verarbeitungselementen zwei Verarbeitungselemente enthalten, die verbunden sind, um die vier Grundrechenarten auszuführen. Die zwei verbundenen Verarbeitungselemente in jeder Gruppe können ein Mantissen-Verarbeitungselement zum Empfangen von Vorzeichen und Mantissen von zwei Operanden und ein Exponenten-Verarbeitungselement zum Empfangen von Exponenten von den zwei Operanden sein. Das Mantissen-Verarbeitungselement ist mit einem Multiplizierer und/oder einem Dividierer verbunden, um die Mantisse der zwei Operanden zu multiplizieren oder zu dividieren. Das Exponenten-Verarbeitungselement ist konfiguriert, um die Exponenten der zwei Operanden zu addieren oder zu subtrahieren. Weiterhin kann jedes Verarbeitungselement zwei Multiplexer enthalten, die mit der Arithmetik-Logik-Einheit verbunden sind, um wenigstens die zwei Eingabewerte zu der Arithmetik-Logik-Einheit zu geben. Jedes Verarbeitungselement kann außerdem einen Verschieber enthalten, der mit der Arithmetik-Logik-Einheit verbunden ist, um eine Verschiebungsoperation auf einem von der Arithmetik-Logik-Einheit empfangenen Ergebnis auszuführen. Außerdem kann ein temporäres Register mit der Arithmetik-Logik-Einheit und dem Verschieber verbunden sein, um ein Zwischenergebnis der Arithmetik-Logik-Einheit und ein Zwischenergebnis des Verschiebers zu speichern. Weiterhin kann ein Ausgaberegister mit der Arithmetik-Logik-Einheit und dem Verschieber verbunden sein, um ein Endergebnis der Arithmetik-Logik-Einheit und ein Endergebnis des Verschiebers zu speichern. Jeder der Multiplexer kann konfiguriert sein, um Daten aus den von einem Datenbus, anderen Verarbeitungselementen und einer eigenen Registerdatei empfangenen Daten auszuwählen. Die ausgewählten Daten werden als Eingabe zu der Arithmetik-Logik-Einheit gegeben. Die in dem Ausgaberegister gespeicherten Endergebnisse können ebenfalls in andere Verarbeitungselemente eingegeben werden. Alternativ hierzu können die Endergebnisse auch über einen Datenbus ausgegeben werden.
- Gemäß einem anderen Aspekt umfasst ein rekonfigurierbarer Array-Prozessor ein Array von Verarbeitungselementen, die konfiguriert sind, um eine oder mehrere Gleitkomma-Operationen auszuführen. Die Verarbeitungselemente in dem Array können zu Gruppen von zwei oder mehr Verarbeitungselementen verbunden sein. Der rekonfigurierbare Array-Prozessor umfasst weiterhin einen Konfigurationscache, der mit dem Array verbunden ist, um einen Kontext zu speichern. Der gespeicherte Kontext ist konfiguriert, um eine oder mehrere Arithmetik-Operationen, die durch die Verarbeitungselemente in jeder Spalte oder Reihe des Verarbeitungselement-Arrays (PE-Arrays) ausgeführt werden, zu steuern und eine Datenkommunikation zwischen den Verarbeitungselementen zu ermöglichen. Außerdem ist ein Rahmenpuffer mit dem Array verbunden und wird als Cachespeicher zum Speichern eines Zwischenergebnisses der einen oder mehreren durch das Array ausgeführten Arithmetik-Operationen betrieben.
- Verschiedene Implementierungen können optional eines oder mehrere der folgenden Merkmale enthalten. Jedes der Verarbeitungselemente kann eine Arithmetik-Logik-Einheit zum Empfangen und Verarbeiten von zwei Eingabewerten enthalten. Die Verarbeitungselemente des Arrays können in einer Netzstruktur verbunden sein, um Datenkommunikationen zwischen den Verarbeitungselementen zu ermöglichen. Das Array kann wahlweise konfiguriert werden, um eine Ganzzahlarithmetik-Operation unter Verwendung aller Verarbeitungselemente auszuführen. Alternativ hierzu kann das Array wahlweise konfiguriert werden, um die eine oder die mehreren Gleitkomma-Operationen unter Verwendung von jeder der zwei oder mehr Gruppen von zwei oder mehr verbundenen Verarbeitungselementen auszuführen. Jede der zwei oder mehr Gruppen von zwei oder mehr Verarbeitungselementen kann wenigstens zwei Verarbeitungselemente in einer Reihe oder Spalte des Arrays enthalten, die verbunden sind, um die eine oder die mehreren Gleitkomma-Operationen auszuführen. Das Array kann wahlweise konfiguriert werden, um in einer 8 × 5-Anordnung betrieben zu werden, wenn die Ganzzahlarithmetik-Operation ausgeführt wird. Alternativ hierzu kann das Array wahlweise konfiguriert werden, um in einer 4 × 5-Anordnung betrieben zu werden, in der die Verarbeitungselemente in Paaren in jeder Spalte des Arrays verbunden sind, wenn die Gleitkomma-Operation ausgeführt wird. Auf der Basis des Kontexts können die Verarbeitungselemente in Spalten oder Reihen konfiguriert werden, um eine Pipeline zu bilden, wobei das Ergebnis einer Pipeline-Operation in einer durch den Kontext angewiesenen Richtung weitergeleitet wird.
- Verschiedene Implementierungen können optional eines oder mehrere der folgenden Merkmale enthalten. Jede der zwei oder mehr Gruppen von zwei oder mehr Verarbeitungseinheiten kann ausgebildet sein, um die Ganzzahlarithmetik-Operationen oder die eine oder die mehreren Gleitkommaarithmetik-Operationen durch ein zeitliches Mapping auszuführen. Außerdem kann jede Gruppe konfiguriert sein, um einen nächsten Kontext zu empfangen, nachdem ein Endwert der Ganzzahlarithmetik- Operation oder der Gleitkommaarithmetik-Operation erhalten wurde. Weiterhin kann jede Gruppe ausgebildet sein, um ein Steuersignal von der Kontextschicht zu empfangen, um eine Operation mit mehreren Zyklen auszuführen. Die zwei oder mehr Gruppen von zwei oder mehr Verarbeitungselementen können konfiguriert sein, um die vier Grundrechenarten und transzendente Funktionen für Gleitkomma-Operationen auszuführen. Jede Gruppe von zwei oder mehr Verarbeitungselementen kann zwei Verarbeitungselemente enthalten, die verbunden sind, um die Grundrechenarten auszuführen. Die zwei verbundenen Verarbeitungselemente in jeder Gruppe können ein Mantissen-Verarbeitungselement zum Empfangen von Vorzeichen und Mantissen von zwei Operanden und ein Exponenten-Verarbitungselement zum Empfangen von Exponenten von den zwei Operanden enthalten. Das Mantissen-Verarbeitungselement kann mit eine Multiplizierer und/oder einem Dividierer verbunden sein, um die Mantisse der zwei Operanden zu multiplizieren oder zu dividieren. Außerdem kann das Exponenten-Verarbeitungselement konfiguriert sein, um die Exponenten der zwei Operanden zu addieren oder zu subtrahieren.
- Verschiedene Implementierungen können optional eines oder mehrere der folgenden Merkmale enthalten. Der Rahmenpuffer kann konfiguriert sein, um ein 24-Bit-Gleitkommaformat zu enthalten. Das 24-Bit-Gleitkommaformat umfasst ein Vorzeichenbit, acht Exponentenbits und fünfzehn Mantissenbits. Das Mantissen-Verarbeitungselement ist konfiguriert, um die empfangenen Vorzeichen und Mantissen der zwei Operanden zu dem einen Vorzeichenbit und den fünfzehn Mantissenbits des Rahmenpuffers zu konvertieren. Weiterhin können das konvertierte eine Vorzeichenbit und die konvertierten fünfzehn Mantissenbits in dem Rahmenpuffer gespeichert werden. Das Exponenten-Verarbeitungselement kann implementiert werden, um die empfangenen Exponenten der zwei Operanden in die acht Exponentenbits des Rahmenpuffers zu konvertieren und die konvertierten acht Exponentenbits in dem Rahmenpuffer zu speichern. Jedes Verarbeitungselement kann zwei Multiplexer umfassen, die mit der Arithmetik-Logik-Einheit verbunden sind, um wenigstens die zwei Eingabewerte zu der Arithmetik-Logik-Einheit zu geben. Ein Verschieber kann mit der Arithmetik-Logik-Einheit verbunden sein, um eine Verschiebungsoperation auf einem von der Arithmetik-Logik-Einheit empfangenen Ergebnis auszuführen. Weiterhin kann ein temporäres Register mit der Arithmetik-Logik-Einheit und dem Verschieber verbunden sein, um ein Zwischenergebnis der Arithmetik-Logik-Einheit und ein Zwischenergebnis des Verschiebers zu speichern. Außerdem kann ein Ausgaberegister mit der Arithmetik-Logik-Einheit und dem Verschieber verbunden sein, um ein Endergebnis der Arithmetik-Logik-Einheit und ein Endergebnis des Verschiebers zu speichern. Jeder der Multiplexer kann ausgebildet sein, um Daten aus den von einem Datenbus, von anderen Verarbeitungselementen und einer eigenen Registerdatei empfangenen Daten auszuwählen. Weiterhin kann jeder Multiplexer die ausgewählten Daten in die Arithmetik-Logik-Einheit eingeben und kann die in dem Ausgaberegister gespeicherten Endergebnisse in andere Verarbeitungselemente eingeben oder die Endergebnisse über einen Datenbus ausgeben. Das Array kann ein grobkörniges rekonfigurierbares Array sein. Weiterhin kann eine Rekonfigurierbares-Array-Steuereinheit mit dem Array verbunden sein, um Operationen des Arrays, des Konfigurationscaches und des Rahmenpuffers zu steuern.
- In anderen Implementierungen umfasst eine Rechen-Plattform einen rekonfigurierbaren Array-Prozessor, der verschiedene Komponenten einschließlich eines Arrays aus Verarbeitungselementen umfasst, die zum Ausführen von einer oder mehreren Gleitkomma-Operationen konfiguriert sind. Die Verarbeitungselemente in dem Array können miteinander zu Gruppen von zwei oder mehr Verarbeitungselementen verbunden sein. Außerdem ist ein Konfigurationscache mit dem Array verbunden, um einen Kontext zu speichern, der konfiguriert ist, um eine oder mehrere durch die Verarbeitungselemente in jeder Spalte oder Reihe durchgeführte arithmetische Operationen zu steuern. Der Kontext ist auch konfiguriert, um Datenkommunikationen zwischen den Verarbeitungselementen zu ermöglichen. Weiterhin ist ein Rahmenpuffer mit dem Array verbunden und wird als Cachespeicher betrieben, um ein Zwischenergebnis der einen oder mehreren durch das Array durchgeführten arithmetischen Operationen zu speichern. Weiterhin ist ein Systembus mit dem rekonfigurierbaren Array-Prozessor verbunden. Außerdem ist eine Steuer- und Speichereinheit über den Systembus mit dem rekonfigurierbaren Array-Prozessor verbunden, um den rekonfigurierbaren Array-Prozessor zu steuern und Daten zu speichern.
- Verschiedene Implementierungen können optional eines oder mehrere der folgenden Merkmale enthalten. Die Steuer- und Speichereinheit kann einen eingebetteten Kern zum Verarbeitung und Steuern von Daten, einen externen Speicher zum Speichern von Daten und eine Direktspeicherzugriff-Steuerung zum Übertragen von Daten umfassen. Der eingebettete Kern kann einen Computerprozessor mit einem reduzierten Befehlssatz oder einen hybriden Prozessor mit den Eigenschaften eines Computerprozessors mit einem eingeschränkten Befehlssatz und eines Computerprozessors mit einem komplexen Befehlssatz enthalten. Weiterhin kann die Multimedia-Plattform in einem Ein-Chip-Aufbau implementiert werden, wobei die Komponenten des rekonfigurierbaren Array-Prozessors über den Systembus mit den Komponenten der Steuer- und Speichereinheit verbunden sind. Jedes der Verarbeitungselemente kann eine Arithmetik-Logik-Einheit enthalten und zwei Eingabewerte verarbeiten. Die Verarbeitungselemente des Arrays können in einer Netzstruktur verbunden sein, um Datenkommunikationen zwischen den Verarbeitungselementen zu ermöglichen. Das Array kann wahlweise konfiguriert sein, um eine Ganzzahlarithmetik-Operation unter Verwendung jedes der Verarbeitungselemente durchzuführen. Alternativ hierzu kann das Array wahlweise konfiguriert sein, um die eine oder die mehreren Gleitkomma-Operationen unter Verwendung der zwei oder mehr Gruppen von zwei oder mehr Verarbeitungselementen durchzuführen. Die Verarbeitungselemente können in Spalten oder Reihen auf der Basis des Kontexts konfiguriert sein, um eine Pipeline zu bilden. Das Ergebnis der Pipeline-Operation wird in einer durch den Kontext angewiesenen Richtung weitergeleitet. Jede der zwei oder mehr Gruppen von zwei oder mehr Verarbeitungselementen kann konfiguriert werden, um die Ganzzahlarithmetik-Operation oder die eine oder die mehreren Gleitkomma-Operationen durch ein zeitliches Mapping auszuführen. Jede der zwei oder mehr Gruppen empfängt einen nächsten Kontext, nachdem ein Endwert der Ganzzahlarithmetik-Operation oder der Gleitkommaarithmetik-Operation erhalten wurde. Weiterhin kann jede der zwei oder mehr Gruppen konfiguriert sein, um ein Steuersignal von dem Kontext zu empfangen, um eine Operation mit mehreren Zyklen durchzuführen.
- Verschiedene Implementierungen können optional eines oder mehrere der folgenden Merkmale enthalten. Die zwei oder mehr Gruppen von zwei oder mehr Verarbeitungselementen können konfiguriert sein, um die vier Grundrechenarten und transzendente Funktionen für Gleitkomma-Operationen auszuführen. Jeder der zwei oder mehr Gruppen kann zwei Verarbeitungselemente enthalten, die verbunden sind, um die vier Grundrechtenarten auszuführen. Die zwei verbundenen Verarbeitungselemente in jeder Gruppe können ein Mantissen- Verarbeitungselement zum Empfangen von Vorzeichen und Mantissen von zwei Operanden und ein Exponenten-Verarbeitungselement zum Empfangen von Exponenten von den zwei Operanden empfangen. Das Mantissen-Verarbeitungselement kann mit einem Multiplizierer und/oder einem Dividierer verbunden sein, um die Mantisse der zwei Operanden zu multiplizieren oder zu dividieren. Außerdem kann das Exponenten-Verarbeitungselement konfiguriert sein, um die Exponenten der zwei Operanden zu addieren oder zu subtrahieren. Außerdem kann der Rahmenpuffer mit einem 24-Bit-Gleitkommaformat implementiert sein, das ein Vorzeichenbit, acht Exponentenbits und fünfzehn Mantissenbits umfasst. Jedes Verarbeitungselement kann zwei Multiplexer enthalten, die mit der Arithmetik-Logik-Einheit verbunden sind, um wenigstens die zwei Eingabewerte zu der Arithmetik-Logik-Einheit zu geben. Außerdem kann ein Verschieber mit der Arithmetik-Logik-Einheit verbunden sein, um eine Verschiebungsoperation auf einem von der Arithmetik-Logik-Einheit empfangenen Ergebnis auszuführen. Ein temporäres Register kann mit der Arithmetik-Logik-Einheit und dem Verschieber verbunden sein, um ein Zwischenergebnis der Arithmetik-Logik-Einheit und ein Zwischenergebnis des Verschiebers zu speichern. Ein Ausgaberegister kann mit der Arithmetik-Logik-Einheit und dem Verschieber verbunden sein, um ein Endergebnis der Arithmetik-Logik-Einheit und ein Endergebnis des Verschiebers zu speichern. Jeder Multiplexer kann konfiguriert sein, um Daten aus den von einem Datenbus, anderen Verarbeitungselementen und einer eigenen Registerdatei empfangenen Daten auszuwählen. Weiterhin ist jeder Multiplexer auch ausgebildet, um die ausgewählten Daten in die Arithmetik-Logik-Einheit einzugeben. Weiterhin kann jeder Multiplexer in dem Ausgaberegister gespeicherte Endergebnisse in andere Verarbeitungselemente eingeben oder die Endergebnisse über einen Datenbus ausgeben. Der rekonfigurierbare Array-Prozessor umfasst ein grobkörniges rekonfigurierbares Array. Weiterhin kann der rekonfigurierbare Array-Prozessor eine Rekonfigurierbares-Array-Steureinheit enthalten, die mit dem Array verbunden ist, um die Komponenten des rekonfigurierbaren Array-Prozessors zu steuern. Es kann also ein Operationsprozessor mit einer hohen Hardware- und Prozessoreffizienz implementiert werden.
- Weiterhin wird die Multimedia-Plattform einschließlich des RA-Prozessors auf der Basis der vorliegenden Erfindung in einem Ein-Chip-Aufbau implementiert, der den oben beschriebenen Operationsprozessor mit einer hohen Leistung umfasst, sodass die Multimedia-Plattform effektiv auf aktuelle mobile Multimediageräte angewendet werden kann, die einen niedrigen Stromverbrauch und ein hohes Leistung/Kosten-Verhältnis erfordern.
- Die Techniken auf der Basis der vorliegenden Beschreibung können einen oder mehrere der folgenden Vorteile bieten. Ein rekonfigurierbarer Array-Prozessor (RA-Prozessor) kann implementiert werden, um Gleitkomma-Operationen relativ schnell auszuführen. Der RA-Prozessor kann derart implementiert werden, dass er einen niedrigen Stromverbrauch und ein hohes Leistung/Kosten-Verhältnis aufweist, wobei er eine Hardwaregröße aufweist, die derjenigen eines herkömmlichen RA-Prozessors ähnlich ist oder sogar kleiner als diese ist, und ein vorhandenes PE zum Durchführen einer Ganzzahlarithmetik nutzt. Weiterhin kann der RA-Prozessor eine Operation mit einem einzelnen Befehlsstrom und mehreren Datenströmen (SIMD) durchführen und gleichzeitig eine hohe Hardware-Wiederverwendungsfähigkeit aufrechterhalten. Auf diese Weise kann der RA-Prozessor eine hohe Betriebsleistung aufweisen, obwohl er eine kleinere Hardware als eine festverdrahtete Logik aufweist und mit einem Taktsignal betrieben wird, das eine niedrigere Rate als ein für eine Software verwendetes Taktsignal aufweist. Weil diese Eigenschaften eine Reduktion der Chipkosten und des Stromverbrauchs ermöglichen, kann der RA-Prozessor für eine mobile Multimedia-Plattform mit streng beschränkten Hardware-Ressourcen geeignet sein.
- Der RA-Prozessor auf der Basis der vorliegenden Beschreibung kann einige der folgenden Nachteile einer SI oder HI mindern. Eine SI kann aufgrund ihrer Flexibilität verschiedene Anwendungsprogramme unterstützen, wobei die SI aber der Komplexität von verschiedenen Anwendungsprogrammen unter Umständen nicht gerecht wird. Zum Beispiel kann die SI in der Lage sein, einen schnellen und flexiblen CODEC unter Verwendung eines digitalen Signalprozessors (DSP) mit einem dedizierten Kern zu implementieren, wobei die SI aber dennoch ein Taktsignal mit einer hohen Rate benötigt, weil die Software sequentiell verschiedene Operationen ausführt.
- Eine HI kann hinsichtlich des Stromverbrauchs und der Betriebsausführungseffizienz optimiert werden, wobei eine HI aber auf spezifische Anwendungsprogramme beschränkt sein kann. Insbesondere kann ein unter Verwendung einer herkömmlichen festverdrahteten Schaltung implementierter ASIC-IP eine hohe Geschwindigkeit garantieren. Ein derartiger ASIC-IP kann aber eine große Chipgröße und einen hohen Stromverbrauch aufweisen. Weiterhin neigt der ASIC-IP zu einer sehr geringen Hardware-Wiederverwendungsfähigkeit und benötigt eine lange Entwicklungszeit, weil die Schaltung neu entwickelt werden muss, wenn eine neue Funktion hinzugefügt wird. Weiterhin können die Chip-Produktionstechniken dank der Entwicklung eines Ein-Chip-Aufbaus und dem Einfluss der digitalen Konvergenz verschiedene, komplizierte Funktionen zu einem einzelnen Chip integrieren, wodurch die Größe und der Stromverbrauch reduziert werden können.
- Vorteilhafte Effekte
- Der RA-Prozessor
1000 auf der Basis der vorliegenden Beschreibung kann implementiert werden, indem eine einfache Hardware zu dem bestehenden CGRA hinzugefügt wird, der die 16-Bit-PEs zum Durchführen von Ganzzahlarithmetik-Operationen enthält. Die hinzugefügte Hardware ermöglicht die Bildung von FPU-PEs, die jeweils ein PE-Paar zum Ausführen von Gleitkomma-Operationen aufweisen. Dementsprechend sieht der RA-Prozessor1000 der vorliegenden Beschreibung einen effizienten Hardwareaufbau unter Beibehaltung einer Hardwaregröße vor, die derjenigen eines herkömmlichen RA-Prozessors ähnlich ist. Außerdem ermöglicht der RA-Prozessor auf der Basis der vorliegenden Beschreibung eine hohe Betriebseffizienz, indem er die vorhandenen Ganzzahlarithmetik-Logiken vorteilhaft zum Ausführen von Ganzzahlarithmetik-Operationen nutzt. - In einigen Implementierungen kann eine Multimedia-Plattform mit dem RA-Prozessor
1000 in einem Ein-Chip-Aufbau implementiert werden, sodass die Multimedia-Plattform effektiv auf einen mobilen Multimedia-Prozessor angewendet werden kann, der einen niedrigen Stromverbrauch und ein hohes Leistung/Kosten-Verhältnis benötigt. - Außerdem können die Techniken und Systeme auf der Basis der vorliegenden Beschreibung auf Geometrie-Anwendungen in verschiedenen Grafikanwendungen wie etwa auf die physikalische Beschleunigung einer Spielehardware, auf Auswerteeinrichtungen zum Verarbeiten einer gekrümmte Fläche/gekrümmten Linie wie etwa einer Bezier-Kurve, auf die Beschleunigung der Hardware von grafischen Geometrie-Vorprozessoren für eine Kachelung und Interpolation, auf geometrische Einheiten (Matrixtransformation & Beleuchtungseffekte) in einer 3D- Grafik-Pipeline, auf einen 3D-Vertex-Shader usw. angewendet werden.
- Kurzbeschreibung der Zeichnungen
-
1 ist ein Blockdiagramm, das eine Multimedia-Plattform einschließlich eines rekonfigurierbaren Array-Prozessors (RA-Prozessors) zeigt. -
2 ist ein Blockdiagramm, das einen Verarbeitungselement-Arrayaufbau (PE-Arrayaufbau) zeigt. -
3 ist ein Blockdiagramm, das einen PE-Arrayaufbau zeigt, in dem PEs gepaart sind, um Gleitkommaeinheit-Verarbeitungselemente (FPU-PEs) zum Durchführen von Gleitkomma-Operationen zu bilden. -
4 ist ein Blockdiagramm, das eine Operanden-Eingabestruktur für eine Gleitkomma-Operation zeigt. -
5 zeigt einen Datenbetriebsprozess mit einem zeitlichen Mapping in einem FPU-PE-Aufbau. -
6 zeigt eine Datenübertragung unter Verwendung von PEs in einem FPU-PE-Aufbau. -
7A ,7B und7C zeigen eine Verbindung von PEs in dem FPU-PE-Aufbau, um den Vorteil der Anpassung von PE-Positionen zu erläutern. -
8 ist ein Blockdiagramm des PE-Aufbaus. -
9A zeigt ein Gleitkommaformat eines Rahmenpuffers. -
9B zeigt die Konvertierung von Daten einer FPU-PE in Daten eines Rahmenpuffers. -
10 ist ein Flussdiagramm, das einen Prozess zum Erzeugen eines RA-Prozessors zum Ausführen von Gleitkommaarithmetik-Operationen zeigt. -
11 ist ein Flussdiagramm, das einen Prozess zum Ausführen von Gleitkommaarithmetik-Operationen zeigt. - Bevorzugte Ausführungsform
- Verschiedene Techniken, Systeme und Computerprogrammprodukte werden für eine effektive Durchführung von datenintensiven Operationen auf einer Multimedia-Plattform beschrieben. Insbesondere können die Techniken und Systeme auf der Basis der vorliegenden Beschreibung implementiert werden, um einen rekonfigurierbaren Array-Prozessor (RA-Prozessor) vorzusehen, der Gleitkomma-Operationen ermöglicht.
- Kurz gesagt, kann eine Gleitkomma-Repräsentation für eine Berechnung als ein numerisches Repräsentationssystem definiert werden, das eine Kette von Ziffern (oder Bits) für eine Repräsentation einer echten Zahl verwendet. Der IEEE-Standard für die binäre Gleitkomma-Arithmetik (IEEE 754) gibt einen weit verbreiteten Standard für die Gleitkommaberechnung in vielen CPU- und FPU-Implementierungen an. In einer Gleitkomma-Repräsentation kann der Radixpunkt (ein Dezimalpunkt oder Binärpunkt) an einer beliebigen Position relativ zu den Ziffern in einer Kette positioniert werden.
- Die Gleitkomma-Repräsentation bietet verschiedene Vorteile gegenüber Fixpunkt-Ganzzahl-Repräsentationen. Insbesondere kann die Gleitkomma-Repräsentation einen viel breiteren Bereich von Werten unterstützen als Fixpunkt-Repräsentationen. Zum Beispiel kann eine Fixpunkt-Repräsentation, die acht Dezimalziffern und zwei Dezimalstellen zuordnet, Zahlen wie etwa 123456,78, 1234,56, 123,45 usw. wiedergeben. Im Gegensatz dazu kann eine Gleitkomma-Repräsentation mit acht Dezimalziffern nicht nur die oben genannten Zahlen in der Fixpunkt-Repräsentation, sondern auch Zahlen wiedergeben, die nicht durch die Fixpunkt-Repräsentation wiedergegeben werden. Beispiele für eine derartige Gleitkomma-Repräsentation mit acht Dezimalziffern sind 1,2345678, 1234567,8, 0,000012345678, 12345678000000000 usw. Die Gleitkomma-Repräsentation kann als eine wissenschaftliche Notierung aus der Computerwelt betrachtet werden.
- Eine Gleitkomma-Repräsentation einer gewünschten reellen Zahl umfasst eine Kette von Stelen, die als Mantisse bezeichnet wird. Die Repräsentation der Mantisse kann definiert werden, indem eine Basis oder Radix und die in der gewählten Basis gespeicherte Anzahl von Ziffern gewählt werden. Die Gleitkomma-Repräsentation umfasst auch einen als Exponenten bezeichneten Wert. Der Exponent wird verwendet, um die Position oder den Versatz des Fensters von Ziffern in der gewünschten reellen Zahl aufzuzeichnen/zu identifizieren. Der Exponent kann auch als Charakteristik oder Skala bezeichnet werden. Das Fenster von Ziffern wird verwendet, um die höchstwertigen Ziffern in der gewünschten reellen Zahl zu speichern, d. h. die ersten nicht-Null-Ziffern im Dezimalsystem oder nicht-Null-Bits im Binärsystem. Die Mantisse wird mit dem Exponenten multipliziert, der die Potenz der Basis darstellt.
- Um Gleitkommazahlen zu addieren, werden die Operanden zuerst unter Verwendung desselben Exponenten wiedergegeben. Wenn zum Beispiel die zwei Operanden 12,345 und 123,45 addiert werden, können die Operanden als 0,12345 × 102 und 1,2345 × 102 (gleicher Exponent 102) wiedergegeben werden. Die Ziffern des ersten Operanden werden also um 1 Ziffer nach links verschoben. Die Summe von 0,12345 × 102 und 1,2345 × 102 kann dann als (0,12345 + 1,2345) × 102 = 1,35795 × 102 berechnet werden. Die resultierende Exponentialzahl kann zu der technischen Notierung (Exponent = 5 (3 = 5); Mantisse 1,35795 (m = 1,3795)) gewandelt werden. Diese schließlich wahre Summe kann nach Bedarf gerundet und normalisiert werden.
- Um Gleitkommazahlen zu multiplizieren, werden die Mantissen multipliziert, während die Exponenten addiert werden. Zum Beispiel (e = 2; m = 1,111 × e = 2; m = 2,222) = (e = 4; m = 2,468642) vor dem Runden oder Normalisieren.
- Ein RA-Prozessor kann als ein feinkörniger RA-Prozessor (FGRA) oder ein grobkörniger RA-Prozessor (CGRA) implementiert werden. Der FGRA weist ein Verarbeitungselement (PE) auf, das als eine Wahrheitstabellen-Logikschaltung implementiert ist, die Boolesche Operationen und bitweise Operationen durchführt. Der CGRA weist ein PE auf, das als eine Arithmetik-Logik-Einheit (ALU) implementiert ist, die wortweite Arithmetik/Logik-Operationen ausführt.
- Der FGRA kann der flexiblere Aufbau sein, weil er eine beliebige Operation ausführen kann. Der FGRA kann jedoch komplexe Steuer- und Datenpfade aufweisen, sodass der FGRA besser für eine Schaltung geeignet ist, die keine hohe Betriebsgeschwindigkeit erfordert, oder für eine Schaltung, bei der die Funktionsprüfung wichtiger ist als die Betriebsgeschwindigkeit.
- Der CGRA kann ausreichend flexibel auf einer Algorithmusebene sein, kann aber auf einer Widerstand-Transistor-Logik-Ebene (RTL) beschränkt sein. Weiterhin kann der CGRA einfach parallel angeordnet werden und ist damit für Multimedia-Plattformen geeignet. Der CGRA kann also eine höhere Leistung erzielen als die SI und eine größere Flexibilität bieten als die HI.
- Insbesondere kann der CGRA programmierbare PEs und Programme umfassen. Die PEs können also auf der Basis eines Kontexts rekonfiguriert werden, der die Verbindungen und die Operationen der PEs angibt, sodass verschiedene Funktionen einfach dadurch ausgeführt werden, dass der Inhalt des Kontexts geändert wird, ohne eine neue Hardware hinzuzufügen. Typische CGRAs können Morphosys, ADRES (Architecture for Dynamically Reconfigurable Embedded Systems) eine extreme Verarbeitungsplattform (PACT-XPP) usw. umfassen. Ein gewöhnliches RA unterstützt jedoch meist nur eine Ganzzahlarithmetik, sodass sein Anwendungsbereich auf Audio/Video-CODECs beschränkt ist.
- 3D-Grafik, 2D-Vektorgrafik und oder GPS sind eventuell nicht für die Verarbeitung durch einen herkömmlichen Ganzzahl-basierten CGRA geeignet, weil 3D-Grafik-, 2D-Vektorgrafik- und GPS-Geräte meistens auf Gleitkomma-Vektoroperationen beruhen. Um Grafik zu unterstützen, kann ein PE für Gleitkomma-Operationen ausgebildet sein. Dadurch kann jedoch die Hardwaregröße des PE übermäßig vergrößert werden. Und weil der CODEC nur mit Ganzzahlarithmetik-Operationen implementiert ist, neigen die auf Gleitkommas bezogenen Blöcke in der Hardware eines PE zu einer ineffizienten Hardware-Nutzung.
- Ein RA-Prozessor auf der Basis der vorliegenden Beschreibung kann eine Operation mit einem einzelnen Befehlsstrom und mehreren Datenströmen (SIMD) ausführen und gleichzeitig die Hardware-Wiederverwendungsfähigkeit aufrechterhalten. Der RA-Prozessor der vorliegenden Beschreibung kann also eine hohe Betriebsleistung erzielen, obwohl er eine kleinere Hardware als eine festverdrahtete Logik aufweist und ein Taktsignal mit einer niedrigeren Rate als für eine Software verwendet. Weil diese Eigenschaften eine Reduktion der Chipkosten und des Stromverbrauchs ermöglichen, kann der RA-Prozessor für eine mobile Multimedia-Plattform mit streng beschränkten Hardware-Ressourcen geeignet sein.
-
1 ist ein Blockdiagramm, das eine beispielhafte Rechen-Plattform wie etwa eine Multimedia-Plattform zeigt, die einen rekonfigurierbaren Array-Prozessor (RA-Prozessor) umfasst, der auf der Basis der Techniken und Systeme der vorliegenden Beschreibung implementiert wurde. Wie in1 gezeigt, umfasst die Multimedia-Plattform einen RA-Prozessor1000 , der für die Ausführung von Gleitkomma-Operationen ausgebildet und über einen Systembus2000 mit einer Steuer- und Speichereinheit3000 verbunden ist. Die Steuer- und Speichereinheit3000 ist über den Systembus2000 mit dem RA-Prozessor1000 verbunden, um den RA-Prozessor zu steuern und Daten zu speichern. - Der RA-Prozessor
1000 umfasst ein Verarbeitungselement-Array (PE-Array) oder RA100 , einen Konfigurationscache200 , einen Rahmenpuffer300 und einen RA-Controller400 . Das PE-Array100 kann ein rechteckiges Array mit einer ALU-Zelle sein, die gepipelinete SIMD-Operationen spalten- und/oder reihenweise ausführt. Das PE-Array100 kann Gleitkomma-Operationen unterstützen. Das PE-Array100 wird mit Bezug auf2 näher beschrieben. - Der Konfigurationscache
200 ist ausgebildet, um einen Kontext zu speichern, der Datenoperationen und Datenübertragungen in dem PE-Array100 programmiert. Zum Beispiel enthält der Kontext eine Befehl oder ein Programm, das die Konnektivität von PEs, eine Operation für jedes PE und eine Datenübertragung für Operationen in dem PE-Array100 angibt. Der Kontext wird in einer Kontextschicht des Konfigurationscaches200 gespeichert. - Der Rahmenpuffer
300 ist ein Cache-Speicher, der Zwischendaten der in dem PE-Array100 ausgeführten Operationen vorübergehend speichert. Der Rahmenpuffer300 wird mit Bezug auf9A und9B näher beschrieben. - Der RA-Controller
400 ist ausgebildet, um die Komponenten des RA-Prozessors zu steuern. Zum Beispiel kann der RA-Controller400 das Eingaben/Ausgeben des Kontexts des konfigurierbaren Caches200 , die Dateneingabe/-ausgabe des Rahmenpuffers300 und die Datenübertragung zu dem PE-Array100 steuern. - Der RA-Prozessor
1000 kann verschiedene Operationen ausführen, indem den Kontext modifiziert wird und ohne dass die Hardware geändert wird. Weiterhin ist der RA-Prozessor1000 ausgebildet, um Operationen parallel über ein gepipelinetes SIMD-Array auszuführen. Der RA-Prozessor1000 kann also eine Betriebsgeschwindigkeit erzielen, die höher ist als diejenige eines herkömmlichen Prozessors, der Operationen sequentiell ausführt. Weiterhin weist der RA-Prozessor1000 einen Aufbau auf, der eine Wiederverwendung der Hardware und eine hohe Leistung ermöglicht. - Die Komponenten des RA-Prozessors
1000 (z. B. der RA100 , der konfigurierbare Cache200 , der Rahmenpuffer300 , die RA-Steuereinheit400 usw.) sind über den Systembus2000 mit den Komponenten der Steuer- und Speichereinheit3000 (z. B. dem eingebetteten Kern3200 , dem externen Speicher3400 , dem DMA3600 usw.) verbunden. Zum Beispiel kann die Multimedia-Plattform auf der Basis der vorliegenden Beschreibung derart implementiert sein, dass sie einen Ein-Chip-Aufbau aufweist, wobei alle Systemkomponenten über den einzigen Systembus2000 miteinander verbunden sind. - Die Steuer- und Speichereinheit
3000 umfasst einen eingebetteten Kern3200 zum Verarbeiten und Steuern von Daten, einen externen Speicher3400 zum Speichern von Daten und einen DMA(Direktspeicherzugriff)-Controller3600 zum Übertragen von Daten. Der eingebettete Kern3200 kann ein RISC-Prozessor (mit einem reduzierten Befehlssatz) oder ein hybrider Prozessor mit den Eigenschaften des RISC-Prozessors und den Eigenschaften eines CISC-Prozessors (mit einem komplexen Befehlssatz) sein. - Die Multimedia-Plattform von
1 kann verschiedene Operationen einschließlich von Gleitkomma-Operationen unter Verwendung eines PE-Arrayaufbaus für eine Ganzzahlarithmetik ausführen. Es kann also ein effizienter Prozessor unter Beibehaltung einer Hardwaregröße der Multimedia-Plattform ähnlich wie bei einer herkömmlichen Multimedia-Plattform implementiert werden. Außerdem kann die Multimedia-Plattform auf der Basis der Techniken und Systeme der vorliegenden Beschreibung effektiv für aktuelle mobile Multimedia-Geräte verwendet werden, die eine hohe Leistung und gleichzeitig einen geringen Stromverbrauch benötigen. Eine Reduktion des Stromverbrauchs und eine hohe Leistung können erzielt werden, indem die Multimedia-Plattform unter Verwendung eines Ein-Chip-Aufbaus implementiert wird, in dem die Komponenten des RA-Prozessors1000 über den einzigen Systembus2000 mit den Komponenten der Steuer- und Speichereinheit3000 verbunden sind. Die Fähigkeit des RA-Prozessors1000 zum Ausführen von Gleitkomma-Operationen zusätzlich zu dem PE/RA-Aufbau wird im Folgenden mit Bezug auf2 näher beschrieben. -
2 ist ein beispielhaftes Blockdiagramm des PE-Arrays100 (oder RA) von1 . In dem Beispiel von2 umfasst das PE-Array100 verschiedene programmierbare PEs120 , die in einem Array aus Reihen und Spalten (z. B. in einer 8 × 5-Anordnung) angeordnet sind. Das PE-Array100 ist mit einem oder mehreren Multiplizierern140 und Dividierern160 über verschiedene Datenbusse verbunden, um Multiplikationen und Divisionen durchzuführen. Zum Beispiel ist jede Reihe der PEs120 mit einem Multiplizierer140 und einem Dividierer160 verbunden. Weil bei einer Ganzzahlarithmetik jedes PE120 eine Multiplikation und/oder eine Division durchführt, sind in dem Beispiel von2 alle PEs120 mit den Multiplizierern140 und/oder den Dividierern160 verbunden. Wenn dagegen Gleitkomma-Operationen durchgeführt werden, können nur einige der PEs120 mit einigen der Multiplizierer140 und/oder der Dividierer160 verbunden sein. - Jedes PE
120 in dem Array100 umfasst eine Arithmetik-Logik-Einheit wie etwa einen 16-Bit-Addierer (nicht gezeigt), der zwei Eingaben empfängt und verarbeitet und eine 16-Bit-Ganzzahlarithmetik-Operation ausführt. Wenn eine Ganzzahlarithmetik-Operation ausgeführt wird, speichert die Kontextschicht des Konfigurationscaches200 (in1 gezeigt) einen Befehl zum Ausführen einer Ganzzahlarithmetik, wobei die Operationen und Datenflüsse in den PEs120 auf der Basis des Kontexts für die Ganzzahlarithmetik-Operation gesteuert werden. - Das PE-Array
100 kann in einer Netzstruktur verbunden sein, um einen Austausch von Daten zwischen den PEs120 zu ermöglichen. Die Verbindung der PEs und/oder der Datenaustausch unter den PEs kann auf der Basis des Kontexts des Konfigurationscaches200 (in1 gezeigt) erzielt werden. Das heißt, die PEs120 bilden Pipelines in Reihen (horizontal) oder Spalten (vertikal) auf der Basis des durch den Konfigurationscache200 (in1 gezeigt) empfangenen Kontexts und leiten das Ergebnis einer gepipelineten Operation in einer durch den Kontext angegebenen Richtung (horizontal oder vertikal) weiter. -
2 zeigt das PE-Array100 , das mit einer 8 × 5-Anordnung angeordnet ist. Die 8 × 5-Anordnung wird zu einer 4 × 5-Anordnung gewandelt, wenn Gleitkomma-Operationen ausgeführt werden, sodass das PE-Array100 einfach eine 4 × 1-Vektoroperation unterstützen kann, die zum Beispiel für eine 3D-Grafik nützlich ist. Um die 4 × 5-Anordnung zu bilden, werden die PEs in dem Array100 (durch die Bildung von Verbindungen) angeordnet, um verschiedene Gruppen von zwei oder mehr PEs zu bilden. In einigen Implementierungen ist das PE-Array100 in verschiedenen anderen Array-Anordnungen als der gezeigten 8 × 5-Anordnung angeordnet. Der detaillierte Aufbau der PEs120 wird weiter unten mit Bezug auf8 näher beschrieben. -
3 ist ein beispielhaftes Blockdiagramm des PE-Arrays100 , wenn die PEs120 des PE-Arrays100 für Gleitkomma-Operationen angeordnet sind. In dem Beispiel von3 sind die PEs120 zu verschiedenen Gruppen von PEs oder FPU-PEs150 für die Ausführung von Gleitkomma-Operationen verbunden. Jede der FPU-PEs150 wird durch die Verbindung von zwei PEs120 in einer Reihe oder Spalte auf der Basis eines Kontextbefehls gebildet. Um die FPU-PEs150 zu bilden, werden die PEs120 unter Verwendung einer einfachen Hardware-Operation angeordnet. Zum Beispiel sind die zwei PEs120 in jedem Paar von PEs120 physikalisch miteinander verbunden. Weiterhin ist ein einfacher Software-Steuermechanismus implementiert, damit die gebildeten FPU-PEs150 Gleitkomma-Operationen ausführen können. -
3 zeigt ein Strukturergebnis der Umordnung (Umwandlung) der PEs120 des PE-Arrays100 von der 8 × 5-Anordnung (in2 gezeigt) zu einer 4 × 5-Anordnung. Die PEs120 sind gepaart, um die FPU-PEs150 für die Ausführung von Gleitkomma-Operationen zu bilden. Die resultierende 4 × 5-Anordnung kann eine 4 × 1-Vektoroperation unterstützen, die zum Beispiel für 3D-Grafiken nützlich ist. In3 geben X, Y, Z und W entsprechende Komponenten (jede Reihe) eines 4 × 1-Vektorarrays wieder. In einigen Implementierungen können die FPU-PEs150 in dem PE-Array100 unter Verwendung anderer Anordnungsmethoden gebildet werden. Zum Beispiel können drei oder mehr PEs120 miteinander kombiniert werden, um jedes FPU-PE150 zu bilden, um komplexe Gleitkomma-Operationen wie etwa eine transzendente Funktion und eine Quadratwurzelfunktion zu unterstützen. - Die in dem PE-Array
100 gebildeten FPU-PEs150 sind angeordnet, um Operationen durch ein zeitliches Mapping auszuführen. Außerdem sind die FPU-PEs150 nicht ausgebildet, um einen nächsten Kontext zu empfangen, bis Endwerte erhalten werden. Die Operationen mit einem temoporalen Mapping werden weiter unten mit Bezug auf5 beschrieben. -
4 ist ein beispielhaftes Diagramm, das eine Operandeneingabestruktur für eine Gleitkomma-Operation in dem FPU-PE150 von3 zeigt. In dem in4 gezeigten Beispiel werden die PEs120a und120b jedes der FPU-PEs150 unter Verwendung von PEs implementiert, die eine 16-Bit-Ganzzahlarithmetik-Operation ausführen. Jedes der PEs120a und120b empfängt zwei Eingabeoperanden, führt eine vorbestimmte Operation auf den empfangenen zwei Eingaben durch und gibt einen einzelnen Ausgabewert aus. - Ein beispielhafter Aufbau des FPU-PE
150 zum Ausführen von Gleitkomma-Operationen umfasst eine Mantissen-Berechnungskomponente und eine Exponenten-Berechnungskomponente. Insbesondere umfasst das FPU-PE150 ein Mantissen-PE120a , das Vorzeichen und Mantissen der empfangenen zwei Operanden empfängt. Das FPU-PE150 umfasst weiterhin ein Exponenten-PE120b , das die Exponenten der zwei empfangenen Operanden empfängt.4 zeigt zwei Operanden „A” und „B”, die durch das FPU-PE150 empfangen werden. Wenn zum Beispiel angenommen wird, dass die empfangenen Operanden A und B jeweils (11,111 und 222,2222) sind, sind die Vorzeichen für beide Operanden „+” und sind die Mantissen jeweils (0,11111) und (2,22222). Die Vorzeichen (d. h. +) und Mantissen (d. h. MA = 0,11111 und MB = 2,22222) der empfangenen Operanden A und B werden als Eingaben „MA” und „MB” zu dem Mantissen-PE120a gegeben. Auf der Basis der empfangenen Vorzeichen und Mantissen MA und MB berechnet das Mantissen-PE120a eine Ausgabemantisse „MC”. Die Exponenten der empfangenen Operanden A und B werden als Eingaben „EA” und „EB” an das Exponenten-PE120b gegeben. In dem vorstehenden Beispiel sind die Exponenten EA und EB jeweils (EA = 2 und EB = 2). Auf der Basis der empfangenen Exponenten EA und EB der Operanden A und B berechnet das Exponenten-PE120b einen Ausgabeexponenten „EC”. - Das Mantissen-PE
120a und das Exponenten-PE120b können Operationsschaltungen (nicht gezeigt) für das Verarbeiten von Gleitkommas und einen Datenpfad für den Austausch von Daten zwischen denselben umfassen. Die zusätzliche Hardware (z. B. Schaltungsaufbau) kann einfach und kostengünstig zu dem bestehenden PE-Array hinzugefügt werden. - Das FPU-PE
150 kann verschiedene Operationen wie etwa transzendente Funktionen, logische Operationen und die vier Grundrechenarten ausführen, die auf Gleitkommas beruhen. Für ein herkömmliches Gleitkomma-basiertes PE ist die Anzahl der Ganzzahlarithmetik-Operationen, die gleichzeitig ausgeführt werden können (d. h. parallel zueinander unter Verwendung einer Pipeline-Verarbeitung), gleich der Anzahl der Gleitkomma-Operationen, die gleichzeitig ausgeführt werden können. Auf der Basis der Techniken und Systeme, die in dieser Beschreibung beschrieben werden, kann jedes FPU-PE150 in vier PEs zum Ausführen von zwei Ganzzahlarithmetik-Operationen unterteilt werden. Die Anzahl der Ganzzahlarithmetik-Operationen, die gleichzeitig durch die FPU-PEs150 ausgeführt werden können, ist also gleich der Anzahl der Ganzzahlarithmetik-Operationen, die gleichzeitig durch ein Gleitkomma-basiertes PE durchgeführt werden können. Eine derartige Verdoppelung von Ganzzahlarithmetik-Operationen ist ein Beispiel für eine effiziente Hardware-Nutzung. - Ähnlich wie das mit Bezug auf
2 beschriebene PE-Array100 kann das Mantissen-PE120a mit einem Multiplizierer und/oder einem Dividierer (nicht gezeigt) verbunden werden, um Multiplikations- und Divisionsoperationen zu ermöglichen. Außerdem sind das Mantissen-PE120a und das Exponenten-PE120b in jedem FPU-PE150 miteinander verbunden, um das Austauschen eines erzeugten Trägerwerts zu ermöglichen. Wenn eine Multiplikations- oder Divisionsoperation in einer Gleitkommaarithmetik unter Verwendung des FPU-PE150 ausgeführt wird, berechnet das Exponenten-PE120b den Ausgabeexponenten EC durch eine Addition oder Subtraktion der empfangenen Exponenten der Operanden. Außerdem berechnet das Mantissen-PE120a die Ausgabe-Mantisse MC durch eine Multiplikation oder eine Division der empfangenen Vorzeichen und Mantissen der zwei Operanden A und B. - Wenn festgestellt wird, dass die erzeugten Ausgabewerte MC und EC keine Endwerte sind (sondern Zwischenwerte, wobei weitere FPU-PEs übrig bleiben, um zusätzliche Berechnungen auszuführen), werden der Ausgabemantissenwert MC des Mantissen-PE
120a und der Ausgabeexponentenwert EC des Exponenten-PE120b in das nächste FPU-PE150 in dem Array100 (in derselben Reihe oder Spalte) eingegeben, um die nächste Operation auszuführen. Wenn festgestellt wird, dass die berechneten Ausgabewerte EC und MC Endwerte sind (und keine Zwischenwerte, wobei keine FPU-PEs150 übrig bleiben), werden die berechneten Ausgabewerte EC und MC in dem Rahmenpuffer300 gespeichert. -
5 zeigt ein Beispiel für einen Datenoperationsprozess unter Verwendung eines zeitlichen Mappings in dem FPU-PE150 . Der Prozess des Mappings in einem RA-Prozessor kann unter Verwendung eines räumlichen Mappings und/oder eines zeitlichen Mappings implementiert werden. Das FPU-PE verwendet nur das zeitliche Mapping für Gleitkomma-Operationen. - In einem herkömmlichen zeitlichen Mapping-Prozess wird eine der PE-Spalten eines PE-Arrays in Entsprechung zu einer der Kontextschichten eines Konfigurationscaches gewählt und wird ein in derselben Kontextschicht gespeicherter Operationskontext zu der gewählten PE-Spalte gegeben. Dann führt die ausgewählte PE-Spalte sequentiell eine einzelne Operation während mehrerer Zyklen aus. Obwohl die Operation der ausgewählten PE-Spalte nicht abgeschlossen ist, kann eine andere PE-Spalte in Entsprechung zu der nächsten Kontextschicht ausgewählt werden und kann eine Operation in dieser nächsten PE-Spalte ausgeführt werden. Auf diese Weise kann eine gepipelinete Operation spaltenweise ausgeführt werden.
- Wie in
5 gezeigt, werden die in den Schichten des Konfigurationscaches200 und Registern gespeicherten verschiedenen Kontexte sequentiell zeitlich auf entsprechende FPU-PE-Spalten gemappt, um eine gepipelinete Operation durchzuführen. Das zeitliche Mapping durch Register wird um einen Zyklus für jedes Register verzögert. Im Gegensatz zu einem herkömmlichen zeitlichen Mapping empfängt jedes Spalten (z. B. die Spalten 0, 1, 2, 3 und 4) bildende FPU-PE des PE-Arrays100 den Kontext, d. h. Steuersignalsequenzen aus den Kontextschichten, um eine Operation mit mehreren Zyklen auszuführen, wobei sie keinen nächsten Kontext empfängt, bevor Endergebniswerte durch alle Zyklen erhalten wurden. - In der beispielhaften Operation mit mehreren Zyklen von
5 werden zwei PEs (ein Exponenten-PE und ein Mantissen-PE), die ein einzelnes FPU-PE bilden, verwendet, um bei Bedarf Zwischenergebniswerte zu senden und zu empfangen. Für eine Multiplikations- oder Divisionsoperation zum Beispiel berechnet eines der zwei PEs (z. B. das Exponenten-PE) des einzelnen FPU-PE einen Exponenten durch eine Additions- oder Subtraktionsoperation, während das andere PE (z. B. das Mantissen-PE) eine Mantissenausgabe durch eine Multiplikations- oder eine Divisionsoperation berechnet. Der bei der Berechnung der Mantisse berechnete Trägerwert kann gesendet und verwendet werden, um die endgültige Exponentenausgabe zu berechnen. -
6 zeigt eine beispielhafte Datenübertragung unter Verwendung der Konnektivität der PEs120 in den FPU-PEs150 . In dem in6 gezeigten Beispiel sind die Positionen der Mantissen-PEs120a durch den Buchstaben „f” angegeben und sind die Positionen der Exponenten-PEs120b durch den Buchstaben „e” angegeben. Die Positionen f und e der Mantissen-PEs120a und der Exponenten-PEs120b können eingestellt werden, um die Gleitkommadaten unter den PEs120 glatt zu übertragen. - Die PEs an der ersten, vierten, fünften und achten Position sind als Mantissen-PEs
120a gezeigt, die jeweils eine Mantissenausgabe berechnen. Die PEs an der zweiten, dritten, sechsten und siebten Position sind als Exponenten-PEs120b gezeigt, die jeweils eine Exponentenausgabe berechnen. Diese PEs können unter Verwendung einer Netzverbindung von vier PE-Paaren in einer einzelnen PE-Spalte verbunden und angeordnet werden. Zum Beispiel können bidirektionale Verbindungen zwischen (1) dem ersten und dem vierten PE (Mantissen-PEs120a ), (2) dem fünften und dem achten PE (Mantissen-PEs120a ), (3) dem zweiten und dem siebten PE (Exponenten-PEs120b ), (4) dem dritten und dem sechsten PE (Exponenten-PEs120b ), (5) dem ersten und dem achten PE (Mantissen-PEs120a ), (6) dem ersten und dem dritten PE (jeweils ein Mantissen-PE120a und ein Exponenten-PE120b ), (7) dem zweiten und dem vierten PE (jeweils ein Exponenten-PE120b und ein Mantissen-PE120a ), (8) dem fünften und dem siebten PE (jeweils ein Mantissen-PE120a und ein Exponenten-PE120b ) und (9) dem sechsten und dem achten PE (jeweils ein Exponenten-PE120b und ein Mantissen-PE120a ) vorgesehen werden. - Wenn alternativ hierzu das erste, dritte, fünfte und siebte PE angeordnet sind, um eine Mantisse zu berechnen, und das zweite, vierte, sechste und achte PE angeordnet sind, um einen Exponenten zu berechnen, können acht Verbindungen gebildet werden (siehe
7C ). Zum Beispiel werden bidirektionale Verbindungen zwischen dem ersten und dem siebten PE, zwischen dem zweiten und dem achten PE, zwischen dem dritten und dem fünften PE und zwischen dem vierten und dem sechsten PE hinzugefügt, um die Netzverbindung der vier PE-Paare zu bilden. - Wie oben beschrieben, kann das PE-Array
100 in dem RA-Prozessor implementiert werden, um eine Gleitkommaberechnung und eine Datenübertragung glatt auszuführen, ohne dass die bestehende Konnektivität der PEs verändert wird. Wenn das PE-Array10 weiterhin als eine 8 × 5-Anordnung implementiert ist, kann die 8 × 5-Anordnung beibehalten werden, um Ganzzahlarithmetik-Operationen auszuführen. Dieselbe 8 × 5-Anordnung kann zu einer 4 × 5-Anordnung gewandelt werden, indem die PEs gepaart werden, um verschiedene FPU-PEs für die Ausführung von Gleitkomma-Operationen zu bilden. Es kann also eine 4 × 1-Gleitkomma-Vektoroperation glatt ausgeführt werden, indem die ursprüngliche 8 × 5-Anordnung gewandelt wird. -
7A ,7B und7C zeigen eine beispielhafte PE-Konnektivität in einem FPU-PE-Aufbau, um den Vorteil der Einstellung verschiedener PE-Positionen zu zeigen.7A zeigt eine Konnektivität von PEs in einer PE-Spalte für eine Ganzzahlarithmetik.7B zeigt eine Konnektivität von PEs, in der Funktionspositionen der PEs für Gleitkomma-Operationen eingestellt werden.7C zeigt eine Konnektivität von PEs, in der die Funktionspositionen der PEs alternierend angeordnet sind (z. B. folgt auf das Mantissen-PE120a ein Exponenten-PE120b , auf das ein weiteres Mantissen-PE120a folgt, usw.). - Der Verbindungsaufbau von
7A gibt einen typischen PE-Verbindungsaufbau zum Ausführen von Ganzzahlarithmetik-Operationen wieder. In dem Verbindungsaufbau von7A muss nicht zwischen dem Mantissen-PE120a und dem Exponenten-PE120b unterschieden werden, weil die PEs für eine Ganzzahlarithmetik verbunden sind. Zum Beispiel kann eine beliebige Kombination aus Exponenten- und/oder Mantissen-PEs implementiert werden. - Wenn die Funktionspositionen der PEs für Gleitkomma-Operationen wie in
7B gezeigt angeordnet sind, kann eine Netzstruktur erhalten werden, indem wahlweise der Verbindungsaufbau von7A wie oben mit Bezug auf6 beschrieben verwendet wird. Die PEs werden gepaart, um verschiedene FPU-PEs150 zu bilden. Wenn jedoch die Funktionspositionen der Mantissen- und Exponenten-PEs120a in verschiedenen Anordnungen (anders als in6 gezeigt) präsentiert werden, können verschiedene Verbindungsaufbauten erforderlich sein, um eine Netzstruktur zu erzielen. Zum Beispiel können die Funktionspositionen der PEs alternierend (auf ein Mantissen-PE120a folgt ein Exponenten-PE120b , auf das ein weiteres Mantissen-PE120a folgt, usw.) wie in7A gezeigt angeordnet werden. Bei derartigen Anordnungen werden die durch Strichlinien wiedergegebenen Verbindungen (z. B. eine bidirektionale Verbindung zwischen dem ersten und dem siebten PE (Mantissen-PE120a und Exponenten-PE120b ) wie in7C gezeigt neu gebildet, um die Netzstruktur zu erzielen. -
8 ist ein Blockdiagramm, das ein beispielhaftes PE (wie etwa das PE120 von2 ) zeigt. Der PE-Aufbau120 auf der Basis der Techniken und Systeme der vorliegenden Beschreibung umfasst Schaltungen für Gleitkomma-Operationen und Pfade zum Senden/Empfangen von Daten zusätzlich zu der bestehenden PE-Struktur für eine Ganzzahlarithmetik. - Wie in
8 gezeigt, umfasst das PE120 einen 16-Bit-Addierer122 , einen oder mehrere Multiplexer124a und124b , die ausgebildet sind, um zwei Datensignale an einem Addierer (ALU)122a anzulegen, ein temporäres Register125 und ein Ausgaberegister127 zum Speichern der Berechnungsergebnisse des Addierers122 und einen Verschieber126 zum Ausführen einer Verschiebungsoperation. - Die Multiplexer
124a und124b sind ausgebildet, um mehrere Signale von anderen PEs, Datenbussen Data A und Data B, einem Rahmenpuffer FB und dem temporären Register125 für den Addierer122 zu empfangen. Aus den empfangenen Signalen werden zwei Signale als Eingabedatensignale ausgewählt. Der Addierer122 führt eine Operation auf den zwei Eingabedatensignalen durch. Die Operationsergebniswerte des Addierers122 werden in dem temporären Register125 oder dem Ausgaberegister127 gespeichert. Die in dem temporären Register125 gespeicherten Werte werden für durch den Addierer122 ausgeführte Operationen wiederverwendet. Der Verschieber126 führt eine Verschiebungsoperation für eine Multiplikation oder eine Division durch. Ein in dem Ausgaberegister127 gespeicherter Endergebniswert wird über einen Datenbus in andere PEs eingegeben, über einen Datenbus in dem Rahmenpuffer FB gespeichert oder zu einer Ausgabeeinrichtung ausgegeben. - Die für die Ausführung von Gleitkomma-Operationen hinzugefügten Schaltungen und Datenpfade werden durch Bezugszeichen
➀ ,➁ und➂ angegeben. Das Bezugszeichen➀ gibt ein Register und einen Datenpfad für die Verarbeitung eines Vorzeichensignals in den Gleitkomma-Operationen wieder. Insbesondere werden Vorzeichen der zwei empfangenen Operanden empfangen und gespeichert, wobei dann das Ergebnis einer auf den Vorzeichen durchgeführten XODER-Operation gespeichert und/oder über das Register und den Datenpfad übertragen wird. Das Register und der Datenpfad sind nur in einem Mantissen-PE effektiv und bestimmen das Vorzeichen einer Ergebniswerts einer Multiplikations-/Subtraktionsoperation. - Das Bezugszeichen
➁ gibt ein Register und einen Datenpfad für die Verarbeitung eines nicht-verschobenen (d. h. nicht durch den Verschieber126 verarbeiteten) Ausgabesignals an. Während eine ALU eines herkömmlichen PE nur einen einzelnen Ergebniswert ausgibt, ist die ALU122 des PE120 auf der Basis der Techniken und Systeme der vorliegenden Beschreibung ausgebildet, um zwei Ausgabewerte für die Gleitkomma-Operationen auszugeben. Es ist also ein Extradatenpfad in der ALU122 hinzugefügt. Der Verschieber126 ist nur mit einem Datenpfad verbunden, weil die Datenpfade nicht gleichzeitig für eine Verschiebungsoperation verwendet werden. Dementsprechend werden Werte wie etwa Flag-Vektoren, die nicht durch den Verschieber126 zu gehen brauchen, über den neu hinzugefügten Datenpfad, der durch das Bezugszeichen➁ angegeben wird, zu dem Ausgaberegister ausgegeben. - Das Bezugszeichen
➂ gibt einen Datenpfad für die Verarbeitung eines Rundungssignals an. Wenn eine Gleitkomma-Operation ausgeführt wird, kann eine Rundungsoperation nach dem Verschieben eines Exponenten erforderlich sein. Um die Rundungsoperation zu erzielen, werden die zwei unteren Bits zu dem Verschieber126 addiert und wird der Datenpfad➂ für die Verarbeitung von erweiterten Daten neu hinzugefügt. -
9A zeigt ein beispielhaftes Gleitkommaformat eines Rahmenpuffers, der zum Ausführen von Gleitkomma-Operationen verwendet wird. Ein auf der Basis des IEEE 754-Standards bestimmtes Gleitkomma weist ein 32-Bit-Format mit einem Bit für das Vorzeichen, 8 Bit für den Exponenten und 23 Bit für die Mantisse auf. Das IEEE 754-Gleitkommaformat weist jedoch eine zu hohe Genauigkeit auf und ist deshalb nicht für 3D-Grafikanwendungen in mobilen Geräten geeignet, weil sie den Speicher übermäßig belastet. Der Rahmenpuffer in dem RA-Prozessor auf der Basis der Techniken und Systeme der vorliegenden Anmeldung weist ein 24-Bit-Gleitkommaformat auf, das ein Bit für das Vorzeichen, 8 Bit für den Exponenten und 15 Bit für die Mantisse aufweist. Außerdem ist das 24-Bit-Gleitkommaformat der vorliegenden Beschreibung ausgebildet, um Gleitkomma-Operationen zu unterstützen und eine übermäßige Belastung des Speichers zu reduzieren oder zu minimieren. -
9B zeigt eine beispielhafte Wandlung von Gleitkommadaten eines FPU-PE zu Daten eines Rahmenpuffers. Ein Rahmenpuffer ist gewöhnlich ausgebildet, um nur Ganzzahl-Eingaben in einem Ganzzahlarithmetik-Aufbau zu empfangen. In dem RA-Prozessor100 auf der Basis der vorliegenden Beschreibung wird eine einfache Wahlschaltung hinzugefügt, damit ein Multiplexer ein Ganzzahldatenformat oder ein Gleitkommadatenformat wählen kann. Während die in den Rahmenpuffer gespeicherten Daten formal ein 32-Bit-Gleitkommaformat gemäß IEEE 754 aufweisen, werden die Daten intern in Übereinstimmung mit dem 24-Bit-Gleitkommaformat von9A verwendet. Um das 32-Bit-Gleitkommaformat als 24-Bit-Gleitkommaformat zu verwenden, schneidet der Rahmenpuffer in dem RA-Prozessor auf der Basis der vorliegenden Beschreibung wahlweise Stellen der Mantisse ab. Insbesondere werden die niedrigeren 8 Bits der Mantisse des 32-Bit-Rahmenpuffers wahlweise nicht genutzt. -
10 ist ein Flussdiagramm, das einen Prozess1000 zum Erzeugen eines RA-Prozessors zum Ausführen von Gleitkommaarithmetik-Operationen zeigt. Die mehreren PEs in dem PE-Array werden in Schritt1004 gruppiert (z. B. zu Gruppen von zwei oder mehr PEs), um verschiedene FPU-PEs1002 zu bilden. Zum Beispiel können zwei PEs in einer Reihe gepaart werden, um ein FPU-PE zu bilden. Alternativ hierzu können zwei PEs in einer Spalte gepaart werden, um ein FPU-PE zu bilden. In einigen Implementierungen können drei oder mehr PEs in einer Reihe oder Spalte verbunden werden, um die FPU-PEs zu bilden. Die in den Registern des Konfigurationscaches gespeicherten Kontexte werden in Schritt1004 sequentiell zeitlich auf entsprechende FPU-PE-Spalten gemappt, um eine gepipelinete Operation auszuführen. Weiterhin wird eine Konnektivitätsstruktur auf das Array angewendet, um in Schritt1006 die FPU-PEs in einer Reihe und/oder Spalte zu verbinden und dadurch eine Netzstruktur zu erzielen. -
11 ist ein Flussdiagramm, das einen Prozess1100 zum Ausführen von Gleitkommaarithmetik-Operationen zeigt. In Schritt1102 werden zwei Operanden zum Ausführen einer Gleitkomma-Operation empfangen. Exponenten der empfangenen Operanden werden in ein Exponenten-PE eingegeben, um in Schritt1104 einen Ausgabeexponenten durch das Addieren oder Subtrahieren der Exponenten der empfangenen Operanden zu erzeugen. Die Vorzeichen und Mantissen der empfangenen Operanden werden in ein Mantissen-PE eingegeben, um in Schritt1106 eine Ausgabemantisse durch das Multiplizieren oder Dividieren der Vorzeichen und Mantissen der empfangenen Operanden zu erzeugen. Der resultierende Exponent und die resultierende Mantisse werden in Schritt1108 als Endwerte oder als Zwischenwerte für die Operation eines nächsten FPU-PE bestimmt. Wenn bestimmt wird, dass der resultierende Exponent und die resultierende Mantisse Zwischenwerte für die Operation eines nächsten FPU-PE sind, werden die Zwischenwerte in Schritt1110 zu dem nächsten FPU-PE in einer Reihe und/oder Spalte übertragen, um die nächste Operation auszuführen. Wenn bestimmt wird, dass der resultierende Exponent und die resultierende Mantisse Endwerte sind, werden die Endwerte in Schritt1112 in einem Rahmenpuffer gespeichert. - Wie oben beschrieben, kann der RA-Prozessor
1000 auf der Basis der vorliegenden Beschreibung implementiert werden, indem eine einfache Hardware zu dem bestehenden CGRA hinzugefügt wird, der die 16-Bit-PEs zum Ausführen von Ganzzahlarithmetik-Operationen enthält. Die hinzugefügte Hardware ermöglicht die Bildung von FPU-PEs mit jeweils einem PE-Paar zum Ausführen von Gleitkomma-Operationen. Dementsprechend sieht der RA-Prozessor1000 der vorliegenden Beschreibung einen effizienten Hardwareaufbau unter Beibehaltung einer ähnlichen Hardwaregröße wie bei dem herkömmlichen RA-Prozessor vor. Weiterhin ermöglicht der RA-Prozessor auf der Basis der vorliegenden Beschreibung eine hohe Betriebseffizienz, indem die vorhandenen Ganzzahlarithmetik-Logiken für die Ausführung von Ganzzahlarithmetik-Operationen genutzt werden. - In einigen Implementierungen kann eine Multimedia-Plattform einschließlich des RA-Prozessors
1000 in einem Ein-Chip-Aufbau implementiert werden, sodass die Multimedia-Plattform effektiv auf einen mobilen Multimedia-Prozessor angewendet werden kann, der weniger Strom verbraucht und ein hohes Leistung/Kosten-Verhältnis aufweist. - Weiterhin können die Techniken und Systeme auf der Basis der vorliegenden Beschreibung auf Geometrie-Anwendungen in verschiedenen Grafikanwendungen wie etwa auf die physikalische Beschleunigung einer Spielehardware, auf Auswerteeinrichtungen zum Verarbeiten einer gekrümmte Fläche/gekrümmten Linie wie etwa einer Bezier-Kurve, auf die Beschleunigung der Hardware von grafischen Geometrie-Vorprozessoren für eine Kachelung und Interpolation, auf geometrische Einheiten (Matrixtransformation & Beleuchtungseffekte) in einer 3D-Grafik-Pipeline, auf einen 3D-Vertex-Shader usw. angewendet werden.
- Ausführungsformen des in der vorliegenden Beschreibung beschriebenen Gegenstands und der Funktionsoperationen können in einem digitalen, elektronischen Schaltungsaufbau oder in einer Software, Firmware oder Hardware für einen Computer implementiert werden, wobei die in der vorliegenden Beschreibung beschriebenen Aufbauten und deren strukturelle Äquivalente sowie Kombinationen aus denselben verwendet werden können. Ausführungsformen des in der vorliegenden Beschreibung beschriebenen Gegenstands können als ein oder mehrere Computerprogrammprodukte implementiert werden, d. h. als ein oder mehrere Module von Computerprogrammbefehlen, die auf einem physikalische Programmträger für die Ausführungsform oder Steuerung des Betriebs einer Datenverarbeitungsvorrichtung codiert sind. Der physikalische Programmträger kann ein fortgepflanztes Signal oder ein computerlesbares Medium sein. Das fortgepflanzte Signal ist ein künstlich erzeugtes Signal wie etwa ein maschinenerzeugtes elektrisches, optisches oder elektromagnetisches Signal, das erzeugt wird, um Informationen für die Übertragung zu einer geeigneten Empfangsvorrichtung für die Ausführung durch einen Computer zu übertragen. Das computerlesbare Medium kann eine maschinenlesbare Speichereinrichtung, ein maschinenlesbares Speichersubstrat, eine Speichereinrichtung, eine Zusammensetzung, die ein maschinenlesbares fortgepflanztes Signal erzeugt, oder eine Kombination aus denselben sein.
- Unter einer „Datenverarbeitungsvorrichtung” ist eine Vorrichtung, ein Gerät oder eine Maschine zum Verarbeiten von Daten zu verstehen, wobei es sich etwa um einen programmierbaren Prozessor, einen Computer oder mehrere Prozessoren oder Computer handeln kann. Die Vorrichtung kann zusätzlich zu der Hardware einen Code enthalten, der eine Ausführungsumgebung für das betreffende Computerprogramm vorsieht, d. h. einen Code, der eine Prozessor-Firmware, einen Protokollstapel, ein Datenbankverwaltungssystem, ein Betriebssystem oder eine Kombination aus denselben erzeugt.
- Ein Computerprogramm (auch als Programm, Software, Software-Anwendung, Script oder Code bezeichnet) kann in einer beliebigen Programmiersprache einschließlich von kompilierten oder interpretierten Programmiersprachen oder deklarativen oder prozeduralen Programmiersprachen geschrieben sein und in einer beliebigen Form eingesetzt werden, etwa als Standalone-Programm oder als Modul, Komponente, Subroutine oder andere Einheit, die für die Verwendung in einer Computerumgebung geeignet ist. Ein Programm kann in einem Teil einer Datei gespeichert werden, die auch andere Programme oder Daten enthält (z. B. ein oder mehrere Scripts in einer Auszeichnungssprache), in einer einzelnen Datei, die eigens für das betreffende Programm vorgesehen ist, oder in mehreren koordinierten Dateien (z. B. in Dateien, die ein oder mehrere Module, Subprogramme oder Codeteile speichern). Ein Computerprogramm kann auf einem Computer oder auf mehreren Computern, die an einem Standort angeordnet sind oder über mehrere Standorte verteilt und über ein Kommunikationsnetzwerk verbunden sind, ausgeführt werden.
- Die in dieser Beschreibung beschriebenen Prozesse und Logikflüsse können durch einen oder mehrere programmierbare Prozessoren durchgeführt werden, die ein oder mehrere Computerprogramme ausführen, um Funktionen durch Operationen auf Eingabedaten durchzuführen und eine Ausgabe zu erzeugen. Die Prozesse und die Logikflüsse können auch durch einen speziellen Logik-Schaltungsaufbau wie etwa ein FPGA (Feldprogrammierbares Gate-Array) oder eine ASIC (anwendungsspezifische integrierte Schaltung) ausgeführt werden, wobei die genannte Vorrichtung als ein solcher implementiert werden kann.
- Für die Ausführung eines Computerprogramms geeignete Prozessoren sind zum Beispiel allgemeine und spezielle Mikroprozessoren sowie alle Prozessoren in digitalen Computern. Allgemein empfängt ein Prozessor Befehle und Daten von einem Nur-Lese-Speicher und/oder einem Speicher mit wahlfreiem Zugriff. Die wesentlichen Komponenten eines Computers sind ein Prozessor zum Ausführen von Befehlen und eine oder mehrere Speichereinrichtungen zum Speichern von Befehlen und Daten. Allgemein enthält oder ist ein Computer operativ mit einer Massenspeichereinrichtung zum Speichern von Daten wie etwa einer magnetischen, magnetooptischen oder optischen Platte verbunden, um Daten von derselben zu empfangen oder zu derselben zu senden. Ein Computer muss allerdings keine derartigen Einrichtungen enthalten. Außerdem kann ein Computer auch in einer anderen Vorrichtung eingebettet sein.
- Zu den computerlesbaren Medien, die für das Speichern von Computerprogrammbefehlen und Daten geeignet sind, gehören alle Formen von nicht-flüchtigen Speichern, Medien und Speichervorrichtungen: zum Beispiel Halbleiterspeicher wie etwa EPROM, EEPROM oder Flash-Speicher; magnetische Platten wie etwa interne oder externe Festplatten; magnetooptische Platten; und CD-ROM und DVD-ROM-Platten. Der Prozessor und der Speicher können durch eine spezielle Logikschaltung ergänzt werden oder in einer derartigen integriert sein.
- Die vorliegende Beschreibung enthält viele spezielle Angaben, die den Erfindungsumfang jedoch keineswegs einschränken, sondern als beispielhafte Merkmale von bestimmten Ausführungsformen der Erfindung aufzufassen sind. Bestimmte Merkmale, die in der vorliegenden Beschreibung in Zusammenhang mit verschiedenen Ausführungsformen beschrieben werden, können auch in Kombination in einer anderen Ausführungsform implementiert werden. Umgekehrt können verschiedene Merkmale, die im Zusammenhang mit einer einzelnen Ausführungsform beschrieben werden, auch separat in verschiedenen Ausführungsformen oder in einer beliebigen, geeigneten Teilkombination implementiert werden. Und während bestimmte Merkmale vorstehend in bestimmten Kombinationen beschrieben wurden und auch eingangs derart beansprucht wurden, können ein oder mehrere der Merkmale aus einer beanspruchten Kombination unter Umständen aus der Kombination herausgenommen werden und kann die beanspruchte Kombination auf eine Teilkombination oder auf eine Variation einer Teilkombination angewendet werden.
- Entsprechend sind die Operationen in den Zeichnungen in einer bestimmten Reihenfolge wiedergegeben, wobei die Operationen aber nicht in der gezeigten Reihenfolge oder überhaupt in einer sequentiellen Reihenfolge durchgeführt werden müssen und auch nicht alle gezeigten Operationen durchgeführt werden müssen, um erwünschte Ergebnisse zu erzielen. Unter bestimmten Umständen kann ein Multitasking oder eine parallele Verarbeitung vorteilhaft sein. Und wenn in den vorstehend beschriebenen Ausführungsformen verschiedene Systemkomponenten getrennt voneinander vorgesehen sind, heißt das nicht, dass eine derartige Trennung in allen Ausführungsformen erforderlich ist. Die beschriebenen Programmkomponenten und Systeme können allgemein zu einem einzelnen Software-Produkt integriert werden oder in mehrere Software-Produkte unterteilt werden.
- Vorstehend wurden nur einige wenige Implementierungen und Beispiele beschrieben, während andere Implementierungen, Verbesserungen und Variationen auf der Basis des Inhalts der vorliegenden Anmeldung realisiert werden können.
- Industrielle Anwendbarkeit
- Die vorliegende Anmeldung betrifft die digitale Informationsverarbeitung und eine Vorrichtung, die für verschiedene Anwendungen einschließlich von Multimedia-Plattformen geeignet ist. Der RA-Prozessor
1000 auf der Basis der vorliegenden Beschreibung kann implementiert werden, indem eine einfache Hardware zu dem vorhandenen CGRA hinzugefügt wird, der die 16-Bit-PEs zum Ausführen von Ganzzahlarithmetik-Operationen enthält. Die hinzugefügte Hardware ermöglicht die Bildung von FPU-PEs, die jeweils ein PE-Paar zum Ausführen von Gleitkomma-Operationen aufweisen. Dementsprechend sieht der RA-Prozessor1000 der vorliegenden Anmeldung einen effizienten Hardware-Aufbau unter Beibehaltung einer Hardware-Größe ähnlich wie bei einem herkömmlichen RA-Prozessor vor. Weiterhin ermöglicht der RA-Prozessor auf der Basis der vorliegenden Anmeldung eine hohe Betriebsgeschwindigkeit, indem er die bestehende Ganzzahlarithmetik-Logik zum Ausführen von Ganzzahlarithmetik-Operationen nutzt.
Claims (41)
- Prozessor, der umfasst: ein Array von Verarbeitungselementen, die angeordnet sind, um eine Gleitkomma-Operation zu ermöglichen, wobei jedes Verarbeitungselement eine Arithmetik-Logik-Einheit umfasst, um zwei Eingabewerte zu empfangen und eine Ganzzahlarithmetik auf den empfangenen Eingabewerten auszuführen, und wobei die Verarbeitungselemente in dem Array zu Gruppen von zwei oder mehr Verarbeitungselementen verbunden sind, um eine Gleitkomma-Operation zu ermöglichen.
- Prozessor nach Anspruch 1, wobei die Arithmetik-Logik-Einheit eine 16-Bit-Arithmetik-Logik-Einheit ist und die Verarbeitungselemente des Arrays in einer Netzstruktur verbunden sind, um Datenkommunikationen zwischen den verbundenen Verarbeitungselementen zu ermöglichen.
- Prozessor nach Anspruch 2, wobei das Array wahlweise konfiguriert werden kann, um eine Ganzzahlarithmetik-Operation unter Verwendung jedes Verarbeitungselements oder eine Gleitkomma-Operation unter Verwendung jeder Gruppe von zwei oder mehr verbundenen Verarbeitungselementen auszuführen.
- Prozessor nach Anspruch 3, wobei wenigstens zwei Verarbeitungselemente in einer Reihe oder einer Spalte des Arrays miteinander verbunden werden, um die zwei oder mehr Gruppen zum Ausführen von Gleitkomma-Operationen zu bilden.
- Prozessor nach Anspruch 3, wobei das Array wahlweise konfiguriert wird, um in einer 8 × 5-Anordnung betrieben zu werden, wenn die Ganzzahlarithmetik-Operation ausgeführt wird, und um in einer 4 × 5-Anordnung betrieben zu werden, in der die Verarbeitungselemente in Paaren in jeder Spalte des Arrays verbunden sind, wenn die Gleitkomma-Operation ausgeführt wird.
- Prozessor nach Anspruch 3, der weiterhin einen Konfigurationscache umfasst, der mit dem Array verbunden ist und einen Kontext speichert, der die durch die Verarbeitungselemente in den Spalten oder Reihen des Arrays ausgeführten Ganzzahlarithmetik- und/oder Gleitkommaarithmetik-Operationen sowie die Datenkommunikationen zwischen den Verarbeitungselementen steuert, wobei die Verarbeitungselemente in Spalten oder Reihen auf der Basis des Kontexts konfiguriert sind, um eine Pipeline zu bilden, und das Ergebnis einer Pipeline-Operation in einer durch den Kontext angewiesenen Richtung weiterleiten.
- Prozessor nach Anspruch 6, wobei jeder der zwei oder mehr Gruppen von zwei oder mehr Verarbeitungseinheiten konfiguriert ist, um die Ganzzahlarithmetik-Operation oder die Gleitkommaarithmetik-Operation durch ein zeitliches Mapping auszuführen, den Kontext eines Steuersignals zu empfangen, um eine Operation mit mehreren Zyklen auszuführen und einen nächsten Kontext zu empfangen, nachdem Endwerte durch alle Zyklen erhalten wurden.
- Prozessor nach Anspruch 3, wobei die zwei oder mehr Gruppen von zwei oder mehr Verarbeitungselementen konfiguriert sind, um die vier Grundrechenarten und transzendente Funktionen für Gleitkomma-Operationen auszuführen.
- Prozessor nach Anspruch 8, wobei jede der zwei oder mehr Gruppen von zwei oder mehr Verarbeitungselementen zwei Verarbeitungselemente umfasst, die verbunden sind, um die vier Grundrechtenarten auszuführen, wobei die zwei verbundenen Verarbeitungselemente in jeder Gruppe ein Mantissen-Verarbeitungselement zum Empfangen von Vorzeichen und Mantissen von zwei Operanden und ein Exponenten-Verarbeitungselement zum Empfangen von Exponenten von den zwei Operanden sind.
- Prozessor nach Anspruch 9, wobei das Mantissen-Verarbeitungselement mit einem Multiplizierer und/oder einem Dividierer verbunden ist, um die Mantisse der zwei Operanden zu dividieren, und wobei das Verarbeitungselement konfiguriert ist, um die Exponenten der zwei Operanden zu addieren oder zu subtrahieren.
- Prozessor nach Anspruch 1, dadurch gekennzeichnet, dass jedes Verarbeitungselement umfasst: zwei Multiplexer, die mit der Arithmetik-Logik-Einheit verbunden sind, um wenigstens die zwei Eingabewerte zu der Arithmetik-Logik-Einheit zu geben; einen Verschieber, der mit der Arithmetik-Logik-Einheit verbunden ist, um eine Verschiebungsoperation auf einem von der Arithmetik-Logik-Einheit empfangenen Ergebnis auszuführen; ein temporäres Register, das mit der Arithmetik-Logik-Einheit und dem Verschieber verbunden ist, um ein Zwischenergebnis der Arithmetik-Logik-Einheit und ein Zwischenergebnis des Verschiebers zu speichern; und ein Ausgaberegister, das mit der Arithmetik-Logik-Einheit und dem Verschieber verbunden ist, um ein Endergebnis der Arithmetik-Logik-Einheit und ein Endergebnis des Verschiebers zu speichern; wobei jeder der Multiplexer konfiguriert ist, um Daten aus den von einem Datenbus, anderen Verarbeitungselementen und einer eigenen Registerdatei empfangenen Daten auszuwählen und die ausgewählten Daten in die Arithmetik-Logik-Einheit einzugeben, und wobei die in dem Ausgaberegister gespeicherten Endergebnisse in andere Verarbeitungselemente eingegeben oder über einen Datenbus ausgegeben werden.
- Rekonfigurierbarer Prozessor, der umfasst: ein Array von Verarbeitungselementen, die konfiguriert sind, um eine oder mehrere Gleitkomma-Operationen auszuführen, wobei die Verarbeitungselemente in dem Array zu Gruppen von zwei oder mehr Verarbeitungselementen verbunden sind; einen Konfigurationscache, der mit dem Array verbunden ist, um einen Kontext zu speichern, der konfiguriert ist, um eine oder mehrere Arithmetik-Operationen zu steuern, die durch die Verarbeitungselemente in jeder Spalte oder Reihe des PE-Arrays ausgeführt werden, und um Datenkommunikationen zwischen den Verarbeitungselementen zu ermöglichen; und einen Rahmenpuffer, der mit dem Array verbunden ist und einen Cache-Speicher betreibt, um ein Zwischenergebnis der durch das Array ausgeführten einen oder mehreren Arithmetik-Operationen zu speichern.
- Rekonfigurierbarer Array-Prozessor nach Anspruch 12, wobei jedes der Verarbeitungselemente eine Arithmetik-Logik-Einheit umfasst, um zwei Eingabewerte zu empfangen und zu verarbeiten, und wobei die Verarbeitungselemente des Arrays in einer Netzstruktur verbunden sind, um Datenkommunikationen zwischen den Verarbeitungselementen zu ermöglichen.
- Rekonfigurierbarer Array-Prozessor nach Anspruch 13, wobei das Array wahlweise konfiguriert wird, um eine Ganzzahlarithmetik-Operation unter Verwendung jedes der Verarbeitungselemente auszuführen oder um die eine oder die mehreren Gleitkomma-Operationen unter Verwendung der zwei oder mehr Gruppen von zwei oder mehr miteinander verbundenen Verarbeitungselementen auszuführen.
- Rekonfigurierbarer Array-Prozessor nach Anspruch 14, wobei jede der zwei oder mehr Gruppen von zwei oder mehr Verarbeitungselementen wenigstens zwei Verarbeitungselemente in einer Reihe oder einer Spalte des Arrays umfasst, die miteinander verbunden sind, um die eine oder die mehreren Gleitkomma-Operationen auszuführen.
- Rekonfigurierbarer Array-Prozessor nach Anspruch 15, wobei das Array wahlweise konfiguriert ist, um in einer 8 × 5-Anordnung betrieben zu werden, wenn die Ganzzahlarithmetik-Operation ausgeführt wird, und in einer 4 × 5-Anordnung betrieben zu werden, in der die Verarbeitungselemente in Paaren in jeder Spalte des Arrays verbunden sind, wenn die Gleitkomma-Operation ausgeführt wird.
- Rekonfigurierbarer Array-Prozessor nach Anspruch 14, wobei die Verarbeitungselemente in Spalten oder Reihen auf der Basis des Kontexts konfiguriert sind, um eine Pipeline zu bilden, und das Ergebnis einer Pipeline-Operation in einer durch den Kontext angewiesenen Richtung weitergeleitet wird.
- Rekonfigurierbarer Array-Prozessor nach Anspruch 17, wobei jede der zwei Gruppen von zwei oder mehr Verarbeitungseinheiten konfiguriert ist, um die Ganzzahlarithmetik-Operation oder die eine oder die mehreren Gleitkommaarithmetik-Operationen durch ein zeitliches Mapping auszuführen, den Kontext eines Steuersignals zu empfangen, um eine Operation mit mehreren Zyklen auszuführen, und einen nächsten Kontext zu empfangen, nachdem Endwerte durch alle Zyklen erhalten wurden.
- Rekonfigurierbarer Array-Prozessor nach Anspruch 14, wobei die zwei oder mehr Gruppen von zwei oder mehr Verarbeitungselementen konfiguriert sind, um die vier Grundrechenarten und transzendente Funktionen für Gleitkomma-Operationen auszuführen.
- Rekonfigurierbarer Array-Prozessor nach Anspruch 19, wobei jede der zwei oder mehr Gruppen von zwei oder mehr Verarbeitungselementen zwei Verarbeitungselemente umfasst, die verbunden sind, um die vier Grundrechenarten auszuführen, wobei die zwei verbundenen Verarbeitungselemente in jeder Gruppe ein Mantissen-Vearbeitungselement zum Empfangen von Vorzeichen und Mantissen von zwei Operanden und ein Exponenten-Verarbeitungselement zum Empfangen von Exponenten von den zwei Operanden sind.
- Rekonfigurierbarer Prozessor nach Anspruch 20, wobei das Mantissen-Verarbeitungselement mit einem Multiplizierer und/oder einem Dividierer verbunden ist, um die Mantisse der zwei Operanden zu multiplizieren oder zu dividieren, und wobei das Exponenten-Verarbeitungselement konfiguriert ist, um die Exponenten der zwei Operanden zu addieren oder zu subtrahieren.
- Rekonfigurierbarer Prozessor nach Anspruch 21, wobei der Rahmenpuffer ein 24-Bit-Gleitkommaformat aufweist.
- Rekonfigurierbarer Prozessor nach Anspruch 22, wobei das 24-Bit-Gleitkommaformat ein Vorzeichen-Bit, acht Exponenten-Bits und fünfzehn Mantissen-Bits umfasst.
- Rekonfigurierbarer Prozessor nach Anspruch 23, wobei das Mantissen-Verarbeitungselement konfiguriert ist, um die empfangenen Vorzeichen und Mantissen der zwei Operanden zu dem einen Vorzeichen-Bit und den fünfzehn Mantissen-Bits des Rahmenpuffers zu konvertieren und das konvertierte eine Vorzeichen-Bit und die konvertierten fünfzehn Mantissen-Bits in dem Rahmenpuffer zu speichern, und wobei das Exponenten-Verarbeitungselement konfiguriert ist, um die empfangenen Exponenten der zwei Operanden in die acht Exponenten-Bits des Rahmenpuffers zu konvertieren und die konvertierten acht Exponenten-Bits in dem Rahmenpuffer zu speichern.
- Rekonfigurierbarer Prozessor nach Anspruch 14, wobei jedes Verarbeitungselement umfasst: zwei Multiplexer, die mit der Arithmetik-Logik-Einheit verbunden sind, um wenigstens die zwei Eingabewerte zu der Arithmetik-Logik-Einheit zu geben; einen Verschieber, der mit der Arithmetik-Logik-Einheit verbunden ist, um eine Verschiebungsoperation auf einem von der Arithmetik-Logik-Einheit empfangenen Ergebnis auszuführen; ein temporäres Register, das mit der Arithmetik-Logik-Einheit und dem Verschieber verbunden ist, um ein Zwischenergebnis der Arithmetik-Logik-Einheit und ein Zwischenergebnis des Verschiebers zu speichern; und ein Ausgaberegister, das mit der Arithmetik-Logik-Einheit und dem Verschieber verbunden ist, um ein Endergebnis der Arithmetik-Logik-Einheit und ein Endergebnis des Verschiebers zu speichern; wobei jeder der Multiplexer konfiguriert ist, um Daten aus den von einem Datenbus, von anderen Verarbeitungselementen und einer eigenen Registerdatei empfangenen Daten auszuwählen und die ausgewählten Daten in die Arithmetik-Logik-Einheit einzugeben, und wobei die in dem Ausgaberegister gespeicherten Endergebnisse in andere Verarbeitungselemente eingegeben oder über einen Datenbus ausgegeben werden.
- Rekonfigurierbarer Array-Prozessor nach Anspruch 12, wobei das Array ein grobkörniges rekonfigurierbares Array ist.
- Rekonfigurierbarer Array-Prozessor nach Anspruch 26, der weiterhin eine Rekonfigurierbares-Array-Steuereinheit umfasst, die mit dem Array verbunden ist, um Operationen des Arrays, des Konfigurationscaches und des Rahmenpuffers zu steuern.
- Rechen-Plattform, die umfasst: einen rekonfigurierbaren Array-Prozessor, der eine Vielzahl von Komponenten umfasst: ein Array aus Verarbeitungselementen, die konfiguriert sind, um eine oder mehrere Gleitkomma-Operationen auszuführen, wobei die Verarbeitungselemente in dem Array zu Gruppen von zwei oder mehr Verarbeitungselementen verbunden sind; einen Konfigurationscache, der mit dem Array verbunden ist, um einen Kontext zu speichern, der konfiguriert ist, um eine oder mehrere Arithmetik-Operationen zu steuern, die durch die Verarbeitungselemente in jeder Spalte oder Reihe des Verarbeitungselement-Arrays ausgeführt werden, und um Datenkommunikationen zwischen den Verarbeitungselementen zu ermöglichen; einen Rahmenpuffer, der mit dem Array verbunden ist und als Cache-Speicher betrieben wird, um ein Zwischenergebnis der durch das Array durchgeführten einen oder mehreren Arithmetik-Operationen zu speichern; einen Systembus, der mit dem rekonfigurierbaren Array-Prozessor verbunden ist; und eine Steuer- und Speichereinheit, die über den Systembus mit dem rekonfigurierbaren Array-Prozessor verbunden ist, um den rekonfigurierbaren Array-Prozessor zu steuern und Daten zu speichern.
- Rechen-Plattform nach Anspruch 28, wobei die Steuer- und Speichereinheit umfasst: einen eingebetteten Kern zum Verarbeiten und Steuern von Daten; einen externen Speicher zum Speichern von Daten; und einen Direktspeicherzugriff-Controller zum Übertragen von Daten.
- Rechen-Plattform nach Anspruch 29, wobei der eingebettete Kern einen Computerprozessor mit einem reduzierten Befehlssatz oder einen hybriden Prozessor mit den Eigenschaften des Computerprozessors mit einem reduzierten Befehlssatz und eines Computerprozessors mit einem komplexen Befehlssatz umfasst.
- Rechen-Plattform nach Anspruch 30, wobei die Rechen-Plattform in einem Ein-Chip-Aufbau implementiert ist, wobei die Komponenten des rekonfigurierbaren Array-Prozessors über den Systembus mit den Komponenten der Steuer- und Speichereinheit verbunden sind.
- Rechen-Plattform nach Anspruch 28, wobei jedes der Verarbeitungselemente eine Arithmetik-Logik-Einheit zum Empfangen und Verarbeiten von zwei Eingabewerten umfasst und wobei die Verarbeitungselemente des Arrays in einer Netzstruktur verbunden sind, um Datenkommunikationen zwischen den Verarbeitungselementen zu ermöglichen.
- Rechen-Plattform nach Anspruch 32, wobei das Array wahlweise konfiguriert wird, um eine Ganzzahlarithmetik-Operation unter Verwendung jedes der Verarbeitungselemente auszuführen oder um die eine oder die mehreren Gleitkomma-Operationen unter Verwendung jeder der zwei oder mehr Gruppen von zwei oder mehr miteinander verbundenen Verarbeitungselementen auszuführen.
- Rechen-Plattform nach Anspruch 33, wobei die Verarbeitungselemente in Spalten oder Reihen auf der Basis des Kontexts konfiguriert werden, um eine Pipeline zu bilden, wobei das Ergebnis einer Pipeline-Operation in einer durch den Kontext angewiesenen Richtung weitergeleitet wird.
- Rechen-Plattform nach Anspruch 34, wobei jede der zwei oder mehr Gruppen von zwei oder mehr Verarbeitungselementen konfiguriert ist, um die Ganzzahlarithmetik-Operation oder die eine oder die mehreren Gleitkommaarithmetik-Operationen durch ein zeitliches Mapping auszuführen, den Kontext eines Steuersignals zu empfangen, um eine Operation mit mehreren Zyklen auszuführen, und einen nächsten Kontext zu empfangen, nachdem Endwerte durch alle Zyklen erhalten wurden.
- Rechen-Plattform nach Anspruch 30, wobei die zwei oder mehr Gruppen von zwei oder mehr Verarbeitungselementen konfiguriert sind, um die vier Grundrechenarten und transzendente Funktionen für Gleitkomma-Operationen auszuführen.
- Rechen-Plattform nach Anspruch 36, wobei jede der zwei oder mehr Gruppen von zwei oder mehr Verarbeitungselementen zwei Verarbeitungselemente umfasst, die verbunden sind, um die vier Grundrechenarten auszuführen, wobei die zwei verbundenen Verarbeitungselemente in jeder Gruppe ein Mantissen-Verarbeitungselement zum Empfangen von Vorzeichen und Mantissen von zwei Operanden und ein Exponenten-Verarbeitungselement zum Empfangen von Exponenten von den zwei Operanden sind.
- Rechen-Plattform nach Anspruch 37, wobei das Mantissen-Verarbeitungselement mit einem Multiplizierer und/oder einem Dividierer verbunden ist, um die Mantisse der zwei Operanden zu multiplizieren oder zu dividieren, und wobei das Exponenten-Verarbeitungselement konfiguriert ist, um die Exponenten der zwei Operanden zu addieren oder zu subtrahieren.
- Rechen-Plattform nach Anspruch 36, wobei der Rahmenpuffer ein 24-Bit-Gleitkommaformat aufweist, das ein Vorzeichen-Bit, acht Exponenten-Bits und fünfzehn Mantissen-Bits umfasst.
- Rechen-Plattform nach Anspruch 32, wobei jedes Verarbeitungselement umfasst: zwei Multiplexer, die mit der Arithmetik-Logik-Einheit verbunden sind, um wenigstens die zwei Eingabewerte zu der Arithmetik-Logik-Einheit zu geben; einen Verschieber, der mit der Arithmetik-Logik-Einheit verbunden ist, um eine Verschiebungsoperation auf einem von der Arithmetik-Logik-Einheit empfangenen Ergebnis auszuführen; ein temporäres Register, das mit der Arithmetik-Logik-Einheit und dem Verschieber verbunden ist, um ein Zwischenergebnis der Arithmetik-Logik-Einheit und ein Zwischenergebnis des Verschiebers zu speichern; und ein Ausgaberegister, das mit der Arithmetik-Logik-Einheit und dem Verschieber verbunden ist, um ein Endergebnis der Arithmetik-Logik-Einheit und ein Endergebnis des Verschiebers zu speichern; wobei jeder der Multiplexer konfiguriert ist, um Daten aus den von einem Datenbus, anderen Verarbeitungselementen und einer eigenen Registerdatei empfangenen Daten auszuwählen und die ausgewählten Daten in die Arithmetik-Logik-Einheit einzugeben, und wobei die in dem Ausgaberegister gespeicherten Endergebnisse in andere Verarbeitungselemente eingegeben oder über einen Datenbus ausgegeben werden.
- Rechen-Plattform nach Anspruch 28, wobei der rekonfigurierbare Array-Prozessor ein grobkörniges rekonfigurierbares Array umfasst und der rekonfigurierbare Array-Prozessor eine Rekonfigurierbares-Array-Steuereinheit umfasst, die mit dem Array verbunden ist, um die Komponenten des rekonfigurierbaren Array-Prozessors zu steuern.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2007-0092139 | 2007-09-11 | ||
KR20070092139 | 2007-09-11 | ||
PCT/KR2007/006005 WO2009035185A1 (en) | 2007-09-11 | 2007-11-26 | Reconfigurable array processor for floating-point operations |
Publications (1)
Publication Number | Publication Date |
---|---|
DE212007000102U1 true DE212007000102U1 (de) | 2010-03-18 |
Family
ID=40452170
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE212007000102U Expired - Lifetime DE212007000102U1 (de) | 2007-09-11 | 2007-11-26 | Rekonfigurierbarer Array-Prozessor für Gleitkomma-Operationen |
Country Status (5)
Country | Link |
---|---|
US (1) | US8078835B2 (de) |
JP (1) | JP5089776B2 (de) |
KR (1) | KR100948512B1 (de) |
DE (1) | DE212007000102U1 (de) |
WO (1) | WO2009035185A1 (de) |
Families Citing this family (71)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7474488B2 (en) * | 2005-08-30 | 2009-01-06 | International Business Machines Corporation | Magnetic head, tape drive system, and method |
JP4232838B2 (ja) * | 2007-03-29 | 2009-03-04 | 日本電気株式会社 | 再構成可能なsimd型プロセッサ |
US8327126B2 (en) * | 2008-08-25 | 2012-12-04 | International Business Machines Corporation | Multicore processor and method of use that adapts core functions based on workload execution |
CN101782893B (zh) * | 2009-01-21 | 2014-12-24 | 上海芯豪微电子有限公司 | 可重构数据处理平台 |
KR101699910B1 (ko) * | 2010-03-04 | 2017-01-26 | 삼성전자주식회사 | 재구성 가능 프로세서 및 그 제어 방법 |
KR101687995B1 (ko) | 2010-09-27 | 2016-12-20 | 삼성전자주식회사 | 프로세서 및 그 동작 방법 |
US20120271968A1 (en) * | 2011-04-21 | 2012-10-25 | Microchip Technology Incorporated | Logic device for combining various interrupt sources into a single interrupt source and various signal sources to control drive strength |
US9450585B2 (en) | 2011-04-20 | 2016-09-20 | Microchip Technology Incorporated | Selecting four signals from sixteen inputs |
KR101869749B1 (ko) | 2011-10-05 | 2018-06-22 | 삼성전자 주식회사 | 정적 라우터 기반의 코어스 그레인 재구성가능 어레이 |
US9721319B2 (en) | 2011-10-14 | 2017-08-01 | Mastercard International Incorporated | Tap and wireless payment methods and devices |
WO2013100783A1 (en) | 2011-12-29 | 2013-07-04 | Intel Corporation | Method and system for control signalling in a data path module |
JP2014016894A (ja) | 2012-07-10 | 2014-01-30 | Renesas Electronics Corp | 並列演算装置、並列演算装置を備えたデータ処理システム、及び、データ処理プログラム |
EP3014456A4 (de) * | 2013-06-24 | 2017-01-18 | Intel Corporation | Seitenverwaltungsansatz zur vollständigen verwendung eines hardware-cachespeichers für verteilte darstellung |
DE102013212840B4 (de) | 2013-07-02 | 2022-07-07 | Robert Bosch Gmbh | Modellberechnungseinheit und Steuergerät zur Berechnung eines datenbasierten Funktionsmodells mit Daten in verschiedenen Zahlenformaten |
US10331583B2 (en) | 2013-09-26 | 2019-06-25 | Intel Corporation | Executing distributed memory operations using processing elements connected by distributed channels |
US9727460B2 (en) | 2013-11-01 | 2017-08-08 | Samsung Electronics Co., Ltd. | Selecting a memory mapping scheme by determining a number of functional units activated in each cycle of a loop based on analyzing parallelism of a loop |
CN103761075B (zh) * | 2014-02-10 | 2017-01-25 | 东南大学 | 一种粗粒度动态可重构数据规整控制单元结构 |
JP6786955B2 (ja) * | 2016-08-25 | 2020-11-18 | 富士ゼロックス株式会社 | 再構成可能論理回路 |
US10528321B2 (en) * | 2016-12-07 | 2020-01-07 | Microsoft Technology Licensing, Llc | Block floating point for neural network implementations |
US10885985B2 (en) | 2016-12-30 | 2021-01-05 | Western Digital Technologies, Inc. | Processor in non-volatile storage memory |
US10474375B2 (en) | 2016-12-30 | 2019-11-12 | Intel Corporation | Runtime address disambiguation in acceleration hardware |
US10416999B2 (en) | 2016-12-30 | 2019-09-17 | Intel Corporation | Processors, methods, and systems with a configurable spatial accelerator |
US10572376B2 (en) | 2016-12-30 | 2020-02-25 | Intel Corporation | Memory ordering in acceleration hardware |
US10114795B2 (en) | 2016-12-30 | 2018-10-30 | Western Digital Technologies, Inc. | Processor in non-volatile storage memory |
US10558575B2 (en) | 2016-12-30 | 2020-02-11 | Intel Corporation | Processors, methods, and systems with a configurable spatial accelerator |
US10445234B2 (en) | 2017-07-01 | 2019-10-15 | Intel Corporation | Processors, methods, and systems for a configurable spatial accelerator with transactional and replay features |
US10467183B2 (en) | 2017-07-01 | 2019-11-05 | Intel Corporation | Processors and methods for pipelined runtime services in a spatial array |
US10445451B2 (en) | 2017-07-01 | 2019-10-15 | Intel Corporation | Processors, methods, and systems for a configurable spatial accelerator with performance, correctness, and power reduction features |
US10387319B2 (en) | 2017-07-01 | 2019-08-20 | Intel Corporation | Processors, methods, and systems for a configurable spatial accelerator with memory system performance, power reduction, and atomics support features |
US10515049B1 (en) | 2017-07-01 | 2019-12-24 | Intel Corporation | Memory circuits and methods for distributed memory hazard detection and error recovery |
US10515046B2 (en) | 2017-07-01 | 2019-12-24 | Intel Corporation | Processors, methods, and systems with a configurable spatial accelerator |
US10469397B2 (en) | 2017-07-01 | 2019-11-05 | Intel Corporation | Processors and methods with configurable network-based dataflow operator circuits |
US10496574B2 (en) | 2017-09-28 | 2019-12-03 | Intel Corporation | Processors, methods, and systems for a memory fence in a configurable spatial accelerator |
US11086816B2 (en) | 2017-09-28 | 2021-08-10 | Intel Corporation | Processors, methods, and systems for debugging a configurable spatial accelerator |
US10445098B2 (en) | 2017-09-30 | 2019-10-15 | Intel Corporation | Processors and methods for privileged configuration in a spatial array |
US10445250B2 (en) | 2017-12-30 | 2019-10-15 | Intel Corporation | Apparatus, methods, and systems with a configurable spatial accelerator |
US10417175B2 (en) | 2017-12-30 | 2019-09-17 | Intel Corporation | Apparatus, methods, and systems for memory consistency in a configurable spatial accelerator |
US10565134B2 (en) | 2017-12-30 | 2020-02-18 | Intel Corporation | Apparatus, methods, and systems for multicast in a configurable spatial accelerator |
US20190303297A1 (en) * | 2018-04-02 | 2019-10-03 | Intel Corporation | Apparatus, methods, and systems for remote memory access in a configurable spatial accelerator |
US10564980B2 (en) | 2018-04-03 | 2020-02-18 | Intel Corporation | Apparatus, methods, and systems for conditional queues in 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 |
US10853073B2 (en) | 2018-06-30 | 2020-12-01 | Intel Corporation | Apparatuses, methods, and systems for conditional operations in a configurable spatial accelerator |
US10459866B1 (en) | 2018-06-30 | 2019-10-29 | Intel Corporation | Apparatuses, methods, and systems for integrated control and data processing 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 |
US10891240B2 (en) | 2018-06-30 | 2021-01-12 | Intel Corporation | Apparatus, methods, and systems for low latency communication in a configurable spatial accelerator |
US10831507B2 (en) | 2018-11-21 | 2020-11-10 | SambaNova Systems, Inc. | Configuration load of a reconfigurable data processor |
US11188497B2 (en) | 2018-11-21 | 2021-11-30 | SambaNova Systems, Inc. | Configuration unload of a reconfigurable data processor |
CN109523019B (zh) * | 2018-12-29 | 2024-05-21 | 百度在线网络技术(北京)有限公司 | 加速器、基于fpga的加速系统及控制方法、cnn网络系统 |
US10678724B1 (en) | 2018-12-29 | 2020-06-09 | Intel Corporation | Apparatuses, methods, and systems for in-network storage in a configurable spatial accelerator |
US10698853B1 (en) * | 2019-01-03 | 2020-06-30 | SambaNova Systems, Inc. | Virtualization of a reconfigurable data processor |
US10768899B2 (en) | 2019-01-29 | 2020-09-08 | SambaNova Systems, Inc. | Matrix normal/transpose read and a reconfigurable data processor including same |
US10817291B2 (en) | 2019-03-30 | 2020-10-27 | Intel Corporation | Apparatuses, methods, and systems for swizzle operations in a configurable spatial accelerator |
US11029927B2 (en) | 2019-03-30 | 2021-06-08 | Intel Corporation | Methods and apparatus to detect and annotate backedges in a dataflow graph |
US10915471B2 (en) | 2019-03-30 | 2021-02-09 | Intel Corporation | Apparatuses, methods, and systems for memory interface circuit allocation in a configurable spatial accelerator |
US10965536B2 (en) | 2019-03-30 | 2021-03-30 | Intel Corporation | Methods and apparatus to insert buffers in a dataflow graph |
US11386038B2 (en) | 2019-05-09 | 2022-07-12 | SambaNova Systems, Inc. | Control flow barrier and reconfigurable data processor |
US11037050B2 (en) | 2019-06-29 | 2021-06-15 | Intel Corporation | Apparatuses, methods, and systems for memory interface circuit arbitration in a configurable spatial accelerator |
US11055141B2 (en) | 2019-07-08 | 2021-07-06 | SambaNova Systems, Inc. | Quiesce reconfigurable data processor |
KR20210030653A (ko) * | 2019-09-10 | 2021-03-18 | 주식회사 모빌린트 | 복수 개의 코어를 갖는 연산 장치 |
US11269635B1 (en) * | 2019-10-21 | 2022-03-08 | Accenture Global Solutions Limited | Hardware efficient statistical moment computation |
US11907713B2 (en) | 2019-12-28 | 2024-02-20 | Intel Corporation | Apparatuses, methods, and systems for fused operations using sign modification in a processing element of a configurable spatial accelerator |
US11809908B2 (en) | 2020-07-07 | 2023-11-07 | SambaNova Systems, Inc. | Runtime virtualization of reconfigurable data flow resources |
US11782729B2 (en) | 2020-08-18 | 2023-10-10 | SambaNova Systems, Inc. | Runtime patching of configuration files |
KR102639136B1 (ko) * | 2020-12-01 | 2024-02-21 | 한국전자통신연구원 | 멀티 프로세서 시스템 및 그의 부동 소수점 연산 처리 방법 |
US11893392B2 (en) * | 2020-12-01 | 2024-02-06 | Electronics And Telecommunications Research Institute | Multi-processor system and method for processing floating point operation thereof |
CN112286864B (zh) * | 2020-12-24 | 2021-06-04 | 北京清微智能科技有限公司 | 加速可重构处理器运行的稀疏化数据处理方法及系统 |
US11409540B1 (en) | 2021-07-16 | 2022-08-09 | SambaNova Systems, Inc. | Routing circuits for defect repair for a reconfigurable data processor |
US11327771B1 (en) | 2021-07-16 | 2022-05-10 | SambaNova Systems, Inc. | Defect repair circuits for a reconfigurable data processor |
US11556494B1 (en) | 2021-07-16 | 2023-01-17 | SambaNova Systems, Inc. | Defect repair for a reconfigurable data processor for homogeneous subarrays |
CN113504893B (zh) * | 2021-07-23 | 2022-08-26 | 河南亿秒电子科技有限公司 | 一种智能芯片架构和高效处理数据的方法 |
US11487694B1 (en) | 2021-12-17 | 2022-11-01 | SambaNova Systems, Inc. | Hot-plug events in a pool of reconfigurable data flow resources |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5966528A (en) * | 1990-11-13 | 1999-10-12 | International Business Machines Corporation | SIMD/MIMD array processor with vector processing |
US5915123A (en) * | 1997-10-31 | 1999-06-22 | Silicon Spice | Method and apparatus for controlling configuration memory contexts of processing elements in a network of multiple context processing elements |
US8065504B2 (en) * | 1999-01-28 | 2011-11-22 | Ati International Srl | Using on-chip and off-chip look-up tables indexed by instruction address to control instruction execution in a processor |
US6912626B1 (en) * | 2000-08-31 | 2005-06-28 | Micron Technology, Inc. | Method and apparatus for connecting a massively parallel processor array to a memory array in a bit serial manner |
US20070067380A2 (en) * | 2001-12-06 | 2007-03-22 | The University Of Georgia Research Foundation | Floating Point Intensive Reconfigurable Computing System for Iterative Applications |
JP3719509B2 (ja) * | 2002-04-01 | 2005-11-24 | 株式会社ソニー・コンピュータエンタテインメント | シリアル演算パイプライン、演算装置、算術論理演算回路およびシリアル演算パイプラインによる演算方法 |
US7082451B2 (en) * | 2002-09-09 | 2006-07-25 | Freescale Semiconductor, Inc. | Reconfigurable vector-FFT/IFFT, vector-multiplier/divider |
GB0224023D0 (en) * | 2002-10-16 | 2002-11-27 | Roysmith Graeme | Reconfigurable integrated circuit |
US6971083B1 (en) * | 2002-11-13 | 2005-11-29 | Altera Corporation | Method for programming programmable logic device with blocks that perform multiplication and other arithmetic functions |
US7242216B1 (en) * | 2004-11-08 | 2007-07-10 | Herman Schmit | Embedding memory between tile arrangement of a configurable IC |
KR100834412B1 (ko) | 2007-05-23 | 2008-06-04 | 한국전자통신연구원 | 모바일 멀티미디어 연산의 효율적인 처리를 위한 병렬 프로세서 |
-
2007
- 2007-11-26 DE DE212007000102U patent/DE212007000102U1/de not_active Expired - Lifetime
- 2007-11-26 WO PCT/KR2007/006005 patent/WO2009035185A1/en active Application Filing
- 2007-11-26 JP JP2010524767A patent/JP5089776B2/ja not_active Expired - Fee Related
-
2008
- 2008-05-23 US US12/126,825 patent/US8078835B2/en active Active
- 2008-09-11 KR KR1020080090012A patent/KR100948512B1/ko not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
US20090113169A1 (en) | 2009-04-30 |
KR100948512B1 (ko) | 2010-03-25 |
KR20090027184A (ko) | 2009-03-16 |
WO2009035185A1 (en) | 2009-03-19 |
JP2010539582A (ja) | 2010-12-16 |
US8078835B2 (en) | 2011-12-13 |
JP5089776B2 (ja) | 2012-12-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE212007000102U1 (de) | Rekonfigurierbarer Array-Prozessor für Gleitkomma-Operationen | |
DE19540102C2 (de) | Verfahren und Gleitkomma-Recheneinheit mit einer Logik für eine Vierfach-Präzisions-Arithmetik | |
DE69233361T2 (de) | Ein-Chip-Mikrocomputer | |
EP0875031B1 (de) | Prozessor zur bildverarbeitung | |
DE10085322B4 (de) | Schaltungsanordnung, Verfahren und Datenverarbeitungs-Einrichtung zum Durchführen einer Ein-Zyklus-Addition oder -Subtraktion und eines Vergleichs bei einer Arithmetik redundanter Form | |
DE102008059371B4 (de) | Funktionseinheit für verschmolzenes Multiplizieren und Addieren | |
DE69832985T2 (de) | Multiplizier-Akkumulatorschaltungen | |
DE102018006735A1 (de) | Prozessoren und Verfahren für konfigurierbares Clock-Gating in einem räumlichen Array | |
DE102018108431A1 (de) | Mischgenauigkeitsgleitkommaarithmetik-schaltungsanordnung in spezialisierten verarbeitungsblöcken | |
DE102015007943A1 (de) | Mechanismen für eine Gewichtungsverschiebung in faltenden neuronalen Netzwerken | |
DE102019114243A1 (de) | Architektur für tiefe neuronale Netze unter Verwendung stückweiser linearer Approximation | |
CN110337635A (zh) | 用于点积操作的系统、方法和装置 | |
DE19722365A1 (de) | Rekonfigurierbares Rechenbauelement | |
DE112010004887T5 (de) | Verfahren und Vorrichtung zur Durchführung einer Verschiebe- und Exklusiv-ODER-Operation in einer einzelnen Instruktion | |
DE112013005236T5 (de) | Verfahren und Vorrichtung für Integralbild-Berechnungsbefehle | |
DE102013018915A1 (de) | Ein Ansatz zur Leistungsreduzierung in Gleitkommaoperationen | |
DE60021623T2 (de) | Multiplizierer und verschiebungsanordnung mit benutzung von vorzeichenzifferzahlen darstellung | |
DE102005010764A1 (de) | Multipliziereinheit und zugehörige Operationseinheit und Akkumuliereinheit | |
DE102013111605A1 (de) | Reduzierung des Leistungsverbrauchs in einer fusionierten Multiplizier-Addier-(FMA)-Einheit in Reaktion auf Eingangsdatenwerte | |
DE102019120838A1 (de) | Dynamische Gleitkommabereichserweiterung | |
DE112020003600T5 (de) | Hardware für maschinelles lernen mit parameterkomponenten mit reduzierter genauigkeit für effiziente parameteraktualisierung | |
CN109992300A (zh) | 用于点积操作的系统、方法和装置 | |
DE102018128939A1 (de) | Vorrichtung und Verfahren zur Vektormultiplikation vorzeichenbehafteter Wörter, Rundung und Sättigung | |
DE102014002510A1 (de) | Präzise Ausnahmesignalisierung für Mehrfachdatenarchitektur | |
DE112016005521T5 (de) | Multifunktionale Ausführungsbahn für Bildprozessor |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
R207 | Utility model specification |
Effective date: 20100422 |
|
R150 | Utility model maintained after payment of first maintenance fee after three years |
Effective date: 20101214 |
|
R151 | Utility model maintained after payment of second maintenance fee after six years |
Effective date: 20131106 |
|
R082 | Change of representative |
Representative=s name: WEICKMANN & WEICKMANN, DE |
|
R081 | Change of applicant/patentee |
Owner name: PIXELPLUS CO. LTD., KR Free format text: FORMER OWNER: CORE LOGIC, INC., SEOUL, KR Effective date: 20150120 |
|
R082 | Change of representative |
Representative=s name: WEICKMANN & WEICKMANN, DE Effective date: 20150120 Representative=s name: PATENTANWAELTE WEICKMANN & WEICKMANN, DE Effective date: 20150120 Representative=s name: WEICKMANN & WEICKMANN PATENTANWAELTE - RECHTSA, DE Effective date: 20150120 Representative=s name: WEICKMANN & WEICKMANN PATENT- UND RECHTSANWAEL, DE Effective date: 20150120 |
|
R082 | Change of representative |
Representative=s name: PATENTANWAELTE WEICKMANN & WEICKMANN, DE Representative=s name: WEICKMANN & WEICKMANN PATENTANWAELTE - RECHTSA, DE Representative=s name: WEICKMANN & WEICKMANN PATENT- UND RECHTSANWAEL, DE |
|
R152 | Utility model maintained after payment of third maintenance fee after eight years | ||
R071 | Expiry of right |