DE212007000102U1 - Rekonfigurierbarer Array-Prozessor für Gleitkomma-Operationen - Google Patents

Rekonfigurierbarer Array-Prozessor für Gleitkomma-Operationen Download PDF

Info

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
Application number
DE212007000102U
Other languages
English (en)
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Pixelplus Co Ltd
Original Assignee
Core Logic Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Core Logic Inc filed Critical Core Logic Inc
Publication of DE212007000102U1 publication Critical patent/DE212007000102U1/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/57Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/3804Details
    • G06F2207/3808Details concerning the type of numbers or the way they are handled
    • G06F2207/3812Devices capable of handling different types of numbers
    • G06F2207/3824Accepting 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

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.

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-Prozessor 1000 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 und 7C 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 in 1 gezeigt, umfasst die Multimedia-Plattform einen RA-Prozessor 1000, der für die Ausführung von Gleitkomma-Operationen ausgebildet und über einen Systembus 2000 mit einer Steuer- und Speichereinheit 3000 verbunden ist. Die Steuer- und Speichereinheit 3000 ist über den Systembus 2000 mit dem RA-Prozessor 1000 verbunden, um den RA-Prozessor zu steuern und Daten zu speichern.
  • Der RA-Prozessor 1000 umfasst ein Verarbeitungselement-Array (PE-Array) oder RA 100, einen Konfigurationscache 200, einen Rahmenpuffer 300 und einen RA-Controller 400. Das PE-Array 100 kann ein rechteckiges Array mit einer ALU-Zelle sein, die gepipelinete SIMD-Operationen spalten- und/oder reihenweise ausführt. Das PE-Array 100 kann Gleitkomma-Operationen unterstützen. Das PE-Array 100 wird mit Bezug auf 2 näher beschrieben.
  • Der Konfigurationscache 200 ist ausgebildet, um einen Kontext zu speichern, der Datenoperationen und Datenübertragungen in dem PE-Array 100 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-Array 100 angibt. Der Kontext wird in einer Kontextschicht des Konfigurationscaches 200 gespeichert.
  • Der Rahmenpuffer 300 ist ein Cache-Speicher, der Zwischendaten der in dem PE-Array 100 ausgeführten Operationen vorübergehend speichert. Der Rahmenpuffer 300 wird mit Bezug auf 9A und 9B näher beschrieben.
  • Der RA-Controller 400 ist ausgebildet, um die Komponenten des RA-Prozessors zu steuern. Zum Beispiel kann der RA-Controller 400 das Eingaben/Ausgeben des Kontexts des konfigurierbaren Caches 200, die Dateneingabe/-ausgabe des Rahmenpuffers 300 und die Datenübertragung zu dem PE-Array 100 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-Prozessor 1000 ausgebildet, um Operationen parallel über ein gepipelinetes SIMD-Array auszuführen. Der RA-Prozessor 1000 kann also eine Betriebsgeschwindigkeit erzielen, die höher ist als diejenige eines herkömmlichen Prozessors, der Operationen sequentiell ausführt. Weiterhin weist der RA-Prozessor 1000 einen Aufbau auf, der eine Wiederverwendung der Hardware und eine hohe Leistung ermöglicht.
  • Die Komponenten des RA-Prozessors 1000 (z. B. der RA 100, der konfigurierbare Cache 200, der Rahmenpuffer 300, die RA-Steuereinheit 400 usw.) sind über den Systembus 2000 mit den Komponenten der Steuer- und Speichereinheit 3000 (z. B. dem eingebetteten Kern 3200, dem externen Speicher 3400, dem DMA 3600 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 Systembus 2000 miteinander verbunden sind.
  • Die Steuer- und Speichereinheit 3000 umfasst einen eingebetteten Kern 3200 zum Verarbeiten und Steuern von Daten, einen externen Speicher 3400 zum Speichern von Daten und einen DMA(Direktspeicherzugriff)-Controller 3600 zum Übertragen von Daten. Der eingebettete Kern 3200 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-Prozessors 1000 über den einzigen Systembus 2000 mit den Komponenten der Steuer- und Speichereinheit 3000 verbunden sind. Die Fähigkeit des RA-Prozessors 1000 zum Ausführen von Gleitkomma-Operationen zusätzlich zu dem PE/RA-Aufbau wird im Folgenden mit Bezug auf 2 näher beschrieben.
  • 2 ist ein beispielhaftes Blockdiagramm des PE-Arrays 100 (oder RA) von 1. In dem Beispiel von 2 umfasst das PE-Array 100 verschiedene programmierbare PEs 120, die in einem Array aus Reihen und Spalten (z. B. in einer 8 × 5-Anordnung) angeordnet sind. Das PE-Array 100 ist mit einem oder mehreren Multiplizierern 140 und Dividierern 160 über verschiedene Datenbusse verbunden, um Multiplikationen und Divisionen durchzuführen. Zum Beispiel ist jede Reihe der PEs 120 mit einem Multiplizierer 140 und einem Dividierer 160 verbunden. Weil bei einer Ganzzahlarithmetik jedes PE 120 eine Multiplikation und/oder eine Division durchführt, sind in dem Beispiel von 2 alle PEs 120 mit den Multiplizierern 140 und/oder den Dividierern 160 verbunden. Wenn dagegen Gleitkomma-Operationen durchgeführt werden, können nur einige der PEs 120 mit einigen der Multiplizierer 140 und/oder der Dividierer 160 verbunden sein.
  • Jedes PE 120 in dem Array 100 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 Konfigurationscaches 200 (in 1 gezeigt) einen Befehl zum Ausführen einer Ganzzahlarithmetik, wobei die Operationen und Datenflüsse in den PEs 120 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 PEs 120 zu ermöglichen. Die Verbindung der PEs und/oder der Datenaustausch unter den PEs kann auf der Basis des Kontexts des Konfigurationscaches 200 (in 1 gezeigt) erzielt werden. Das heißt, die PEs 120 bilden Pipelines in Reihen (horizontal) oder Spalten (vertikal) auf der Basis des durch den Konfigurationscache 200 (in 1 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-Array 100, 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-Array 100 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 Array 100 (durch die Bildung von Verbindungen) angeordnet, um verschiedene Gruppen von zwei oder mehr PEs zu bilden. In einigen Implementierungen ist das PE-Array 100 in verschiedenen anderen Array-Anordnungen als der gezeigten 8 × 5-Anordnung angeordnet. Der detaillierte Aufbau der PEs 120 wird weiter unten mit Bezug auf 8 näher beschrieben.
  • 3 ist ein beispielhaftes Blockdiagramm des PE-Arrays 100, wenn die PEs 120 des PE-Arrays 100 für Gleitkomma-Operationen angeordnet sind. In dem Beispiel von 3 sind die PEs 120 zu verschiedenen Gruppen von PEs oder FPU-PEs 150 für die Ausführung von Gleitkomma-Operationen verbunden. Jede der FPU-PEs 150 wird durch die Verbindung von zwei PEs 120 in einer Reihe oder Spalte auf der Basis eines Kontextbefehls gebildet. Um die FPU-PEs 150 zu bilden, werden die PEs 120 unter Verwendung einer einfachen Hardware-Operation angeordnet. Zum Beispiel sind die zwei PEs 120 in jedem Paar von PEs 120 physikalisch miteinander verbunden. Weiterhin ist ein einfacher Software-Steuermechanismus implementiert, damit die gebildeten FPU-PEs 150 Gleitkomma-Operationen ausführen können.
  • 3 zeigt ein Strukturergebnis der Umordnung (Umwandlung) der PEs 120 des PE-Arrays 100 von der 8 × 5-Anordnung (in 2 gezeigt) zu einer 4 × 5-Anordnung. Die PEs 120 sind gepaart, um die FPU-PEs 150 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. In 3 geben X, Y, Z und W entsprechende Komponenten (jede Reihe) eines 4 × 1-Vektorarrays wieder. In einigen Implementierungen können die FPU-PEs 150 in dem PE-Array 100 unter Verwendung anderer Anordnungsmethoden gebildet werden. Zum Beispiel können drei oder mehr PEs 120 miteinander kombiniert werden, um jedes FPU-PE 150 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-PEs 150 sind angeordnet, um Operationen durch ein zeitliches Mapping auszuführen. Außerdem sind die FPU-PEs 150 nicht ausgebildet, um einen nächsten Kontext zu empfangen, bis Endwerte erhalten werden. Die Operationen mit einem temoporalen Mapping werden weiter unten mit Bezug auf 5 beschrieben.
  • 4 ist ein beispielhaftes Diagramm, das eine Operandeneingabestruktur für eine Gleitkomma-Operation in dem FPU-PE 150 von 3 zeigt. In dem in 4 gezeigten Beispiel werden die PEs 120a und 120b jedes der FPU-PEs 150 unter Verwendung von PEs implementiert, die eine 16-Bit-Ganzzahlarithmetik-Operation ausführen. Jedes der PEs 120a und 120b 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-PE 150 ein Mantissen-PE 120a, das Vorzeichen und Mantissen der empfangenen zwei Operanden empfängt. Das FPU-PE 150 umfasst weiterhin ein Exponenten-PE 120b, das die Exponenten der zwei empfangenen Operanden empfängt. 4 zeigt zwei Operanden „A” und „B”, die durch das FPU-PE 150 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-PE 120a gegeben. Auf der Basis der empfangenen Vorzeichen und Mantissen MA und MB berechnet das Mantissen-PE 120a eine Ausgabemantisse „MC”. Die Exponenten der empfangenen Operanden A und B werden als Eingaben „EA” und „EB” an das Exponenten-PE 120b 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-PE 120b einen Ausgabeexponenten „EC”.
  • Das Mantissen-PE 120a und das Exponenten-PE 120b 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-PE 150 in vier PEs zum Ausführen von zwei Ganzzahlarithmetik-Operationen unterteilt werden. Die Anzahl der Ganzzahlarithmetik-Operationen, die gleichzeitig durch die FPU-PEs 150 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-Array 100 kann das Mantissen-PE 120a mit einem Multiplizierer und/oder einem Dividierer (nicht gezeigt) verbunden werden, um Multiplikations- und Divisionsoperationen zu ermöglichen. Außerdem sind das Mantissen-PE 120a und das Exponenten-PE 120b in jedem FPU-PE 150 miteinander verbunden, um das Austauschen eines erzeugten Trägerwerts zu ermöglichen. Wenn eine Multiplikations- oder Divisionsoperation in einer Gleitkommaarithmetik unter Verwendung des FPU-PE 150 ausgeführt wird, berechnet das Exponenten-PE 120b den Ausgabeexponenten EC durch eine Addition oder Subtraktion der empfangenen Exponenten der Operanden. Außerdem berechnet das Mantissen-PE 120a 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-PE 120b in das nächste FPU-PE 150 in dem Array 100 (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-PEs 150 übrig bleiben), werden die berechneten Ausgabewerte EC und MC in dem Rahmenpuffer 300 gespeichert.
  • 5 zeigt ein Beispiel für einen Datenoperationsprozess unter Verwendung eines zeitlichen Mappings in dem FPU-PE 150. 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 Konfigurationscaches 200 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-Arrays 100 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 PEs 120 in den FPU-PEs 150. In dem in 6 gezeigten Beispiel sind die Positionen der Mantissen-PEs 120a durch den Buchstaben „f” angegeben und sind die Positionen der Exponenten-PEs 120b durch den Buchstaben „e” angegeben. Die Positionen f und e der Mantissen-PEs 120a und der Exponenten-PEs 120b können eingestellt werden, um die Gleitkommadaten unter den PEs 120 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-PEs 120b 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-PEs 120a), (2) dem fünften und dem achten PE (Mantissen-PEs 120a), (3) dem zweiten und dem siebten PE (Exponenten-PEs 120b), (4) dem dritten und dem sechsten PE (Exponenten-PEs 120b), (5) dem ersten und dem achten PE (Mantissen-PEs 120a), (6) dem ersten und dem dritten PE (jeweils ein Mantissen-PE 120a und ein Exponenten-PE 120b), (7) dem zweiten und dem vierten PE (jeweils ein Exponenten-PE 120b und ein Mantissen-PE 120a), (8) dem fünften und dem siebten PE (jeweils ein Mantissen-PE 120a und ein Exponenten-PE 120b) und (9) dem sechsten und dem achten PE (jeweils ein Exponenten-PE 120b und ein Mantissen-PE 120a) 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-Array 10 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 und 7C 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-PE 120a ein Exponenten-PE 120b, auf das ein weiteres Mantissen-PE 120a folgt, usw.).
  • Der Verbindungsaufbau von 7A gibt einen typischen PE-Verbindungsaufbau zum Ausführen von Ganzzahlarithmetik-Operationen wieder. In dem Verbindungsaufbau von 7A muss nicht zwischen dem Mantissen-PE 120a und dem Exponenten-PE 120b 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 von 7A wie oben mit Bezug auf 6 beschrieben verwendet wird. Die PEs werden gepaart, um verschiedene FPU-PEs 150 zu bilden. Wenn jedoch die Funktionspositionen der Mantissen- und Exponenten-PEs 120a in verschiedenen Anordnungen (anders als in 6 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-PE 120a folgt ein Exponenten-PE 120b, auf das ein weiteres Mantissen-PE 120a folgt, usw.) wie in 7A 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-PE 120a und Exponenten-PE 120b) wie in 7C gezeigt neu gebildet, um die Netzstruktur zu erzielen.
  • 8 ist ein Blockdiagramm, das ein beispielhaftes PE (wie etwa das PE 120 von 2) zeigt. Der PE-Aufbau 120 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 PE 120 einen 16-Bit-Addierer 122, einen oder mehrere Multiplexer 124a und 124b, die ausgebildet sind, um zwei Datensignale an einem Addierer (ALU) 122a anzulegen, ein temporäres Register 125 und ein Ausgaberegister 127 zum Speichern der Berechnungsergebnisse des Addierers 122 und einen Verschieber 126 zum Ausführen einer Verschiebungsoperation.
  • Die Multiplexer 124a und 124b sind ausgebildet, um mehrere Signale von anderen PEs, Datenbussen Data A und Data B, einem Rahmenpuffer FB und dem temporären Register 125 für den Addierer 122 zu empfangen. Aus den empfangenen Signalen werden zwei Signale als Eingabedatensignale ausgewählt. Der Addierer 122 führt eine Operation auf den zwei Eingabedatensignalen durch. Die Operationsergebniswerte des Addierers 122 werden in dem temporären Register 125 oder dem Ausgaberegister 127 gespeichert. Die in dem temporären Register 125 gespeicherten Werte werden für durch den Addierer 122 ausgeführte Operationen wiederverwendet. Der Verschieber 126 führt eine Verschiebungsoperation für eine Multiplikation oder eine Division durch. Ein in dem Ausgaberegister 127 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 Verschieber 126 verarbeiteten) Ausgabesignals an. Während eine ALU eines herkömmlichen PE nur einen einzelnen Ergebniswert ausgibt, ist die ALU 122 des PE 120 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 ALU 122 hinzugefügt. Der Verschieber 126 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 Verschieber 126 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 Verschieber 126 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-Prozessor 100 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 von 9A 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 Prozess 1000 zum Erzeugen eines RA-Prozessors zum Ausführen von Gleitkommaarithmetik-Operationen zeigt. Die mehreren PEs in dem PE-Array werden in Schritt 1004 gruppiert (z. B. zu Gruppen von zwei oder mehr PEs), um verschiedene FPU-PEs 1002 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 Schritt 1004 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 Schritt 1006 die FPU-PEs in einer Reihe und/oder Spalte zu verbinden und dadurch eine Netzstruktur zu erzielen.
  • 11 ist ein Flussdiagramm, das einen Prozess 1100 zum Ausführen von Gleitkommaarithmetik-Operationen zeigt. In Schritt 1102 werden zwei Operanden zum Ausführen einer Gleitkomma-Operation empfangen. Exponenten der empfangenen Operanden werden in ein Exponenten-PE eingegeben, um in Schritt 1104 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 Schritt 1106 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 Schritt 1108 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 Schritt 1110 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 Schritt 1112 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-Prozessor 1000 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-Prozessor 1000 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)

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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.
  6. 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.
  7. 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.
  8. 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.
  9. 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.
  10. 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.
  11. 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.
  12. 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.
  13. 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.
  14. 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.
  15. 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.
  16. 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.
  17. 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.
  18. 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.
  19. 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.
  20. 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.
  21. 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.
  22. Rekonfigurierbarer Prozessor nach Anspruch 21, wobei der Rahmenpuffer ein 24-Bit-Gleitkommaformat aufweist.
  23. Rekonfigurierbarer Prozessor nach Anspruch 22, wobei das 24-Bit-Gleitkommaformat ein Vorzeichen-Bit, acht Exponenten-Bits und fünfzehn Mantissen-Bits umfasst.
  24. 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.
  25. 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.
  26. Rekonfigurierbarer Array-Prozessor nach Anspruch 12, wobei das Array ein grobkörniges rekonfigurierbares Array ist.
  27. 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.
  28. 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.
  29. 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.
  30. 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.
  31. 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.
  32. 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.
  33. 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.
  34. 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.
  35. 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.
  36. 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.
  37. 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.
  38. 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.
  39. 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.
  40. 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.
  41. 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.
DE212007000102U 2007-09-11 2007-11-26 Rekonfigurierbarer Array-Prozessor für Gleitkomma-Operationen Expired - Lifetime DE212007000102U1 (de)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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 한국전자통신연구원 모바일 멀티미디어 연산의 효율적인 처리를 위한 병렬 프로세서

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