DE102011081585A1 - Prozessorarchitektur mit erhöhter Effizienz - Google Patents
Prozessorarchitektur mit erhöhter Effizienz Download PDFInfo
- Publication number
- DE102011081585A1 DE102011081585A1 DE102011081585A DE102011081585A DE102011081585A1 DE 102011081585 A1 DE102011081585 A1 DE 102011081585A1 DE 102011081585 A DE102011081585 A DE 102011081585A DE 102011081585 A DE102011081585 A DE 102011081585A DE 102011081585 A1 DE102011081585 A1 DE 102011081585A1
- Authority
- DE
- Germany
- Prior art keywords
- data processing
- data
- register
- same
- address
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8053—Vector processors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8053—Vector processors
- G06F15/8092—Array of vector units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
- G06F9/30163—Decoding the operand specifier, e.g. specifier format with implied specifier, e.g. top of stack
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
- G06F9/30185—Instruction operation extension or modification according to one or more bits in the instruction, e.g. prefix, sub-opcode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/345—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
- G06F9/3889—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
Abstract
Description
- Gebiet der Erfindung
- Die vorliegende Erfindung betrifft eine verbesserte Architektur zum Steigern der Datenverarbeitungsleistung eines Prozessors.
- Hintergrund
-
1 ist eine schematische Blockansicht, in der eine bekannte Prozessorarchitektur gezeigt ist. In dem Prozessor ist eine duale Pfadarchitektur bzw. eine Architektur mit zwei Pfaden verwendet, so dass der Prozessor zwei unterschiedliche separate Hardwareverarbeitungspfade umfasst: einen Steuerungsverarbeitungspfad in Form einer Steuereinheit2 , die für das Verarbeiten der Steuerungscodierung bzw. des Steuerungscodes vorgesehen ist, und einen Datenverarbeitungspfad in Form einer Datenverarbeitungseinheit4 , die zum Verarbeiten von Daten vorgesehen ist. Die Unterscheidung zwischen Datenverarbeitung und Steuerungsverarbeitung wird anschließend erörtert. Eine anschauliche Ausführungsform einer derartigen Architektur ist beispielsweise in der internationalen Patentanmeldung mit der VeröffentlichungsnummerWO 2005/096141 - In dem dargestellten Prozessor ist die Steuereinheit
2 mit einem Befehlsspeicher6 verbunden, der auf dem gleichen Chip wie der Prozessor integriert sein kann oder der alternativ außerhalb des Chips vorgesehen ist. Die Steuereinheit2 sowie auch die Datenverarbeitungseinheit4 sind mit einem Datenspeicher8 verbunden, der wiederum auf dem gleichen Chip wie der Prozessor integriert sein kann oder der alternativ außerhalb des Chips angeordnet ist. Die Steuereinheit2 und umfasst einen Satz bzw. eine Gruppe aus Steuerregistern10 , einen Befehlsdecodierer12 und eine Adressenerzeugungseinheit14 . Eine anschauliche Steuereinheit besitzt auch eine Steuerungsverarbeitungslogik, die nicht gezeigt ist, beispielsweise zum Ausführen von Verzweigungsoperationen, und kann auch eine skalare Datenverarbeitungseinheit aufweisen. Die Datenverarbeitungseinheit4 umfasst eine Gruppe aus Datenregistern16 und eine Datenverarbeitungslogik18 . Eine Gruppe bzw. ein Satz aus Registern wird manchmal auch als Registerdatei bezeichnet. Der Befehlsdecodierer12 ist mit den Datenregistern16 und der Datenverarbeitungslogik18 sowie auch mit dem Befehlsspeicher6 über eine Abholschaltung (nicht gezeigt) verbunden. Der Befehlsdecodierer12 ist ferner mit der internen Logik der Steuereinheit2 verbunden, wozu auch die Verbindung mit den Steuerregistern10 und der Adressenerzeugungseinheit14 gehört. Die Adressenerzeugungseinheit14 sowie die Gruppe aus Steuerregistern10 sind jeweils mit dem Datenspeicher8 verbunden. - Während des Betriebs holt die Abholschaltung (nicht gezeigt) eine Sequenz aus Befehlen von dem Befehlsspeicher
6 ab und lädt diese in den Befehlsdecodierer12 . Der Befehlsdecodierer12 decodiert jeden Befehl in der Sequenz und bestimmt, abhängig von der bzw. dem in dem Befehl enthaltenen decodierten Operationscodierung bzw. Operationscode, auch als Op-Code bezeichnet, welche Einheit zum Ausführen des Befehls erforderlich ist. Der Prozessor führt somit eine Mischung aus drei Arten von Befehlen aus, die wie folgt sind: - (i) Steuerbefehle, etwa Verzweigungen, die von der Steuereinheit
2 ausgeführt werden, - (ii) Datenverarbeitungsbefehle, die von der Steuereinheit
2 decodiert werden, aber dann (als Registeradressen und Operationscodes) zu der Datenverarbeitungseinheit4 zum Ausführen weitergeleitet werden; und - (iii) Speicherzugriffsbefehle (Ladebefehle und Speicherbefehle bzw. Schreibbefehle), für die die Steuereinheit
2 Speicheradressen des Datenspeichers8 berechnet, wobei die entsprechenden Speicherdaten dann zu oder von jeweils den Steuerregistern10 oder den Datenregistern16 übertragen werden. - Der Begriff „Steuerung”, wie er hierin verwendet ist, bezeichnet die Steuerung des Programmablaufs, wozu die Erzeugung von Verzweigungen und Adressen gehört, und bezeichnet auch eine gewisse Logik und Arithmetik, die für diesen Zweck erforderlich ist. Im Gegensatz dazu bezeichnet der Begriff „Datenverarbeitung” oder ein ähnlicher Begriff, wie sie hierin verwendet sind, andere arithmetische oder logische Operationen, die an Daten auszuführen sind, die Gegenstand des Programms sind, d. h. Daten, die etwas anderes als den Steuerungsablauf des Programms selbst repräsentieren. Eine Datenverarbeitung in diesem Sinne beinhaltet keine Steuerung des Ablaufs (kann jedoch Ergebnisse erzeugen, die verwendet werden, um Entscheidungen für den Steuerungsablauf zu fällen, beispielsweise Verzweigungsbedingungen). Beispielsweise können im Falle eines Softwaremodems für eine kabellose Kommunikation die Daten Signale repräsentieren, die über eine kabellose Schnittstelle empfangen oder übertragen werden, und die Datenverarbeitungsoperationen können Signalverarbeitungsoperationen umfassen. Die Ergebnisse einer derartigen Signalverarbeitung können der Steuereinheit zugeführt werden, so dass diese Steuerablaufentscheidungen treffen kann (beispielsweise im Hinblick darauf, ob eine weitere Signalverarbeitung erforderlich ist), jedoch wird der Steuerungsablauf selbst (einschließlich der Sequenz aus Programmverzweigungen und Speicheradressen) durch die Steuereinheit bewirkt. Als weiteres Beispiel sei erwähnt, dass die Daten Information aus einem Peripheriegerät oder Information repräsentieren können, die auszugeben ist, um ein peripheres Gerät zu manipulieren. Typischerweise drückt sich die Unterscheidung zwischen dem Steuerungspfad und dem Datenpfad so aus, dass die Steuereinheit
2 lediglich eine skalare Verarbeitung anwendet, wohingegen die Datenverarbeitungseinheit4 ausgebildet ist, eine Vektorverarbeitung bzw. eine parallele Verarbeitung (siehe unten) anzuwenden. In einigen Anwendungen wird ein gewisser Grad an Datenverarbeitung tatsächlich in dem Steuerungspfad ausgeführt, obwohl kein Ablaufsteuerungscode in dem Datenverarbeitungspfad abgearbeitet wird. - Speicherzugriffsbefehle, etwa Ladebefehle und Speicherbefehle bzw. Schreibbefehle, können als eine dritte Art an Befehlen betrachtet werden zusätzlich zu den Steuerbefehlen und den Datenverarbeitungsbefehlen, die auf die Steuereinheit
2 oder die Steuereinheit2 und die Datenverarbeitungseinheit4 einwirken können. - Wie schematisch in den
2a und2b gezeigt ist, umfasst jeder Befehl einen Operationscode bzw. Op-Code28 und einen oder mehrere zugehörige Operanden30 (oder im Falle für wenige Arten von Befehlen ist es möglich, dass kein Operand erforderlich ist). Der Operationscode ist eine Sequenz aus Bits, die, wenn sie von dem Befehlsdecodierer12 decodiert werden, die Art der auszuführenden Operation angeben. Der eine oder die mehreren zugehörigen Operanden sind eine Sequenz aus Bits, die, wenn sie von dem Befehlsdecodierer12 decodiert werden, die Daten angeben, auf denen von dieser Operation zu operieren ist, indem für gewöhnlich ein Register und/oder eine Speicherstelle angegeben wird, in der die betrachteten Daten aktuell enthalten sind, und wobei abhängig von der Art des Befehls ein Register und/oder eine Speicherstelle angegeben wird, um das Ergebnis der Operation zu speichern. - Die Daten werden von dem Datenspeicher
8 in die Steuerregister10 oder Datenregister16 mittels eines oder mehreren Ladebefehlen (eine Art von Speicherzugriffsbefehl) eingeladen. Ein Ladebefehl24 ist schematisch in2a gezeigt. Er enthält einen Operationscode28 , der, wenn er decodiert ist, eine Ladeoperation und zwei Operandenfelder30 kennzeichnet. Das erste Operandenfeld enthält einen oder mehrere Zieloperanden und das zweite Operandenfeld enthält einen oder mehreren Ausgangsoperanden bzw. Quellenoperanden. Beispielsweise ist die Ausgangsspeicherstelle häufiger für gewöhnlich durch zwei Registeradressen gekennzeichnet, wobei die Register eine Basis und einen Offset bzw. Abstand angegeben, die, wenn sie addiert werden, auf die Speicherstelle zeigen – dies ist der Zweck der Adressenerzeugungseinheit14 . Manchmal ist der Offset ein unmittelbarer Wert anstelle einer Registeradresse. Das Ausgangsoperandenfeld bzw. Quellenoperandenfeld gibt eine Speicherstelle an, aus der Daten zu entnehmen sind, und das Zieloperandenfeld gibt ein Register an, in welchem diese Daten abzulegen sind. - Beim Laden der Steuerregister
10 wirken die Ladebefehle lediglich auf die Steuereinheit2 . Die Adressenerzeugungseinheit14 berechnet die relevante Speicheradresse aus dem einen oder mehreren Ausgangsoperanden und bewirkt, dass die Daten aus dieser Adresse des Speichers8 in eines der Steuerregister10 geladen werden, das durch den Zieloperanden spezifiziert ist. Wenn ein Ladevorgang in die Datenregister16 stattfindet, wirken die Ladebefehle sowohl auf die Steuereinheit2 als auch auf die Datenverarbeitungseinheit4 . Die Adressenerzeugungseinheit14 berechnet die relevante Speicheradresse aus dem einen oder den mehreren Ausgangsoperanden und bewirkt, dass Daten aus dieser Adresse des Speichers8 in eines der Datenregister16 geladen werden, das durch den Zieloperanden bezeichnet ist. - Als einfaches Beispiel seien die beiden Ladebefehle betrachtet.
Load $r1, A1
Load $r2, A2 - Der erste dieser Ladebefehle besitzt einen einzelnen Zieloperanden $r1, und ein einzelnes Ausgangsoperandenfeld bzw. Quellenoperandenfeld A1 (typischerweise spezifiziert durch $Basis + $Offset). Bei der Ausführung wird ein Datenwort von der Speicheradressenstelle A1 in das Register $r1 eingeladen. Der zweite dieser Ladebefehle besitzt einen einzelnen Zieloperanden $r2 und einen einzelnen Ausgangsoperanden A2. Bei der Ausführung wird ein Datenwort aus Speicheradressenstelle A2 in das Register $r2 eingeladen.
- Sobald Daten in die Register
10 oder16 eingeladen sind, können sodann Operationen unter Anwendung des Inhalts dieser Register ausgeführt werden. Wenn der Befehlsdecodierer12 einen Steuerbefehl antrifft, dann wird der Befehl auf dem Steuerungspfad gehalten, indem dieser Befehl intern in der Steuereinheit2 unter Anwendung der der Steuereinheit innewohnenden internen Logik durch Verwendung von Werten in den Steuerregistern10 ausgeführt wird. Wenn andererseits der Befehlsdecodierer12 einen Datenverarbeitungsbefehl antrifft, wird dieser von dem Befehlsdecodierer12 auf den Datenverarbeitungspfad geleitet, indem der decodierte Operationscode der Datenverarbeitungslogik18 der Datenverarbeitungseinheit4 zugeführt wird und indem der decodierte Operand oder die Operanden in Form einer oder mehrerer Operandenregisteradressen der Gruppe aus Datenregistern16 zugeleitet werden. Alternativ können ein oder mehrere der Operanden30 unmittelbare (tatsächliche) Werte sein. Ein Datenverarbeitungsbefehl26 ist schematisch in2b gezeigt. - Bezugnehmend auf das obige Beispiel und unter der Annahme, dass $r1 und $r2 Datenregister in der Datenregistergruppe
16 sind, dann können die Datenverarbeitungsbefehle auf diesen operieren. Für anschauliche Zwecke wäre etwa ein einfaches Beispiel:
Not $d1, $r1
Add $d2, $r1, $r2 - Der erste dieser Datenverarbeitungsbefehle besitzt einen Ausgangsoperanden $r1 und einen Zieloperanden $d1. Bei der Ausführung wird das bitweise Kompliment des Wertes im Register $r1 genommen und das Ergebnis wird im Zielregister $d1 des Datenregistersatzes
16 abgelegt. Der zweite dieser Datenverarbeitungsbefehle besitzt zwei Ausgangsoperanden $r1 und $r2 und einen Zieloperanden $d2. Bei der Ausführung wird der Inhalt der Register $r1 und $r2 addiert und das Ergebnis wird im Zielregister $d2 des Datenregistersatzes16 abgelegt. - Das Ergebnis einer Datenverarbeitungsoperation kann von dem Ziel innerhalb des Datenregistersatzes
16 in den Datenspeicher8 mittels eines Speicherbefehls bzw. Schreibbefehls gespeichert werden, und/oder es kann darauf mittels weiterer Datenverarbeitungsbefehlen operiert werden. Schließlich werden die Ergebnisse einer derartigen Datenverarbeitung von den Registern16 und/oder dem Datenspeicher8 zu einem externen Gerät ausgegeben, beispielsweise um ein decodiertes Audiosignal oder visuelles Signal auf einen Lautsprecher oder einen Bildschirm auszugeben, wenn eintreffende Signale, die über ein kabelloses Kommunikationssystems empfangen werden, verarbeitet werden, oder um ein codiertes Signal zur Übertragung über ein kabelloses Kommunikationssystem auszusenden, oder um einem Radiofrequenz-(RF)Eingangsbereich zum Übermitteln derartiger kabelloser Signale zu manipulieren. - Der Steuerungspfad und der Datenpfad können Befehlssatzarchitekturen mit asymmetrischer Befehlsbreite aufweisen und können asymmetrische Register- und Verarbeitungspfadbreiten besitzen. Der Gedanke dahinter ist, dass der Steuerungscode kürzere einfachere Befehle favorisiert; wohingegen für den Datenverarbeitungscode längere, spezialisiertere Befehlssätze und Vektordatenwerte, die breitere Datenregister erfordern, günstiger sind.
- Um die Datenmenge zu erhöhen, die pro Zeiteinheit verarbeitet werden kann, kann der Prozessor mit einem gewissen Grad an Parallelität versehen sein.
- Mit Bezug zu
2c ist ein Beispiel von Parallelität der Art einer Verarbeitung mit „langem Befehlswort” (LIW) dargestellt. Beispielsweise holt in dem dargestellten Prozessor die Abholschaltung der Steuereinheit2 mehrere Befehle gleichzeitig in Form von Befehlspaketen ab, wobei jedes Paket mehrere konstituierende bzw. zugehörige Befehle enthält und jeder Befehl seinen eigenen entsprechenden Operationscode28 und einen zugehörigen Operanden oder mehrere Operanden30 zum Ausführen seiner eigenen entsprechenden Operation enthält. Ein geeigneter Programmkompilierer kann (beispielsweise) Paare von Befehlen erkennen, die parallel ausgeführt werden können, und kann derartige Paare in Pakete in einem Befehlsspeicher für die atomare bzw. nicht-teilbare Ausführung anordnen. Der Kompilierer garantiert, dass es keine Datenabhängigkeiten zwischen den Befehlen innerhalb eines Pakets gibt, so dass die Maschine keine Prüfung auf derartige Abhängigkeiten ausführen muss und die konstituierenden Befehle gleichzeitig oder in einer beliebigen Reihenfolge in Bezug aufeinander abarbeiten kann, sofern die Ausführung im Hinblick auf andere Pakete in der richtigen Reihenfolge erfolgt. Derartige Pakete können als langes Befehlswort34 (manchmal auch als „sehr langes Befehlswort”, VLIW bezeichnet, insbesondere wenn mehr als zwei Befehle in einem atomaren Paket enthalten sind) bezeichnet werden. Wenn daher in dem dargestellten Prozessor das Paket einen Steuerbefehl32 und einen Datenverarbeitungsbefehl26 enthält, dann leitet der Befehlsdecodierer12 diese parallel der Steuereinheit2 und der Datenverarbeitungseinheit4 entsprechend für die parallele Abarbeitung durch die jeweiligen Einheiten zu (obwohl, wenn beispielsweise das Paket lediglich Steuerbefehle enthält, diese dann sequenziell ausgeführt werden müssen). - Es ist daher zu beachten, dass es streng genommen nicht genau ist, dies als einen „LIW-Befehl” zu bezeichnen, sondern dieses ist ein LIW-Paket. Jedes LIW-Paket enthält tatsächlich mehrere Befehle in dem Sinne, dass ein Befehl eine diskrete Einheit eines Codes bzw. einer Codierung ist, die einen einfachen Operationscode und zugehörige entsprechende Operanden aufweist.
- In
2d ist ein weiteres Beispiel der Parallelität einer Art an Vektorverarbeitung gezeigt, die als SIMD-(einzelner Befehl, mehrere Daten)Verarbeitung bezeichnet wird. Gemäß der SIMD-Anordnung kann anstelle eines einzelnen Datenelements jedes Datenregister in der Gruppe16 einen Vektor enthalten, der mehrere konstituierende Datenelemente aufweist. Die Datenverarbeitungslogik18 und die Speicher-Lade/Schreib-Pfade operieren auf jedem Element der kurzen Vektoroperanden im Wesentlichen parallel in Reaktion auf einen einzelnen gemeinsamen Operationscode. D. h., ein einzelner Ladebefehl kann einen ganzen Vektor in ein Vektorregister der Gruppe16 einladen, und eine einzelne Datenverarbeitungsoperation (mit einem einzelnen Operationscode) kann die Datenverarbeitungslogik18 veranlassen, die gleiche Operation im Wesentlichen gleichzeitig an jedem Element des eingeladenen Vektors auszuführen. Wie beispielsweise schematisch in2d gezeigt ist, operiert, wenn ein erstes Ausgangsregister s einen Vektor enthält (S1, s2, s3, s4) und ein zweites Ausgangsregister t einen Vektor enthält (t1, t2, t3, t4) ein einzelner Addierbefehl (mit einem einzelnen Operationscode, wobei lediglich die beiden Ausgangsregister s, t und ein einzelnes Zielregister d spezifiziert sind) derart, dass die einzelnen Elemente der beiden Ausgangsvektoren addiert werden und die Elemente des resultierenden Vektors (s1 + t1, s2 + t2, s3 + t3, s4 + t4) in den entsprechenden Elementen des Zielregisters d, d. h. in (d1, d2, d3, d4) entsprechend gespeichert werden. - Es sind auch andere Formen der Parallelität bekannt, beispielsweise unter Anwendung von superskalaren Prozessoren. Diese sind ähnlich zu den LIW-artigen Prozessoren, indem diese mehrere Befehle parallel abarbeiten, mit der Ausnahme, dass diese zusätzliche Hardwarekomponenten aufweisen, um Abhängigkeitskonflikte zwischen den parallelen Befehlen zu erkennen und zu vermeiden (wohingegen in LIW-Prozessoren es erforderlich ist, Abhängigkeitskonflikte im Voraus durch den Kompilierer zu vermeiden).
- Es gibt daher eine Reihe von Techniken zur Verbesserung der Datenverarbeitungsleistung eines Prozessors mittels Parallelität. Jedoch haben die Erfinder erkannt, dass es dennoch Raum gibt, um die Parallelität bzw. den Parallelismus eines Prozessors zu erweitern.
- Überblick
- Die vorliegende Erfindung stellt darauf ab, das Datenverarbeitungsverhalten eines Prozessors zu verbessern, indem die Datenverarbeitungs- und Speicherressourcen des Prozessors verdoppelt (oder mehr als verdoppelt) werden, ohne dass eine wesentliche Vergrößerung der Prozessorsteuerungshardware oder des Programmspeichers erfolgt und ohne dass wesentliche Modifizierungen in der Befehlssatzarchitektur des Prozessors vorzunehmen sind.
- Gemäß einem Aspekt der vorliegenden Erfindung wird ein Prozessor bereitgestellt, der umfasst: eine Decodiereinheit, die ausgebildet ist, eine Sequenz aus Befehlen zu empfangen; einen ersten und mindestens einen zweiten Datenverarbeitungskanal, die jeweils mit der Decodiereinheit verbunden sind, wobei der zweite Datenverarbeitungskanal eine Aktivierungslogik umfasst, die ausgebildet ist, selektiv den zweiten Datenbearbeitungskanal zu aktivieren bzw. freizugeben; eine variable Offsetadressierlogik, die mit der Decodiereinheit verbunden und ausgebildet ist, eine erste und eine zweite Speicheradresse mit einem variablen Offset bzw. variablen Abstand dazwischen auf Grundlage eines gleichen einzelnen oder gleicher mehrerer Adressenoperanden eines gleichen Speicherzugriffsbefehls zu erzeugen; und eine Speicherzugriffsschaltung, die mit der variablen Offsetadressierlogik und mit dem ersten und dem zweiten Datenverarbeitungskanal verbunden und ausgebildet ist, Daten zwischen der ersten Speicheradresse und einem Register des ersten Datenverarbeitungskanals auszutauschen und Daten zwischen der zweiten Speicheradresse und einem entsprechenden Register des zweiten Datenverarbeitungskanals auf der Grundlage eines gleichen einzelnen oder gleicher mehrerer Registerspezifizieroperanden des Speicherzugriffsbefehls auszutauschen; wobei die Decodiereinheit ausgebildet ist, einen gleichen Operationscode und einen gleichen einzelnen oder gleiche mehrere Operanden eines gleichen Datenverarbeitungsbefehls sowohl zu dem ersten als auch zu dem zweiten Datenverarbeitungskanal zuzuleiten derart, dass der erste Datenverarbeitungskanal eine Operation, die durch diesen Operationscode spezifiziert ist, an Daten in einem oder mehreren Registern des ersten Datenverarbeitungskanals ausführt und unter der Bedingung, dass der zweite Datenverarbeitungskanal aktiviert ist, dieser die gleiche Operation an Daten in einem entsprechenden einzelnen oder mehreren Registern des zweiten Datenverarbeitungskanals auf der Grundlage des gleichen einzelnen oder der mehreren Operanden des Datenverarbeitungsbefehls ausführt.
- Somit ermöglicht es die vorliegende Erfindung dem Prozessor in vorteilhafter Weise, den gleichen Bereich des Codes zu verwenden, um auf mehreren unterschiedlichen Bereichen von Daten zu operieren, wobei die unterschiedlichen Bereiche der Daten in dem Speicher durch einen gewissen steuerbaren Betrag voneinander beabstandet sind bzw. einen Offset besitzen.
- In Ausführungsformen ist jeder der Datenverarbeitungskanäle ein Vektorverarbeitungskanal derart, dass die zu und von jeweils der ersten und der zweiten Speicheradresse übertragenen Daten ein entsprechender Vektor sind, der mehrere Datenelemente aufweist, wobei die in jeweils dem ersten und dem zweiten Datenverarbeitungskanal ausgeführte Operation eine Vektorverarbeitungsoperation umfasst, die an jedem der mehreren Datenelemente in Reaktion auf den gleichen Operationscode ausgeführt wird.
- In weiteren Ausführungsformen umfasst die variable Offsetadressierlogik ein programmierbares Offsetregister zum Speichern des variablen Offsets, wobei das programmierbare Offsetregister so ausgebildet ist, dass es unter Programmsteuerung beschrieben werden kann.
- Ferner kann die variable Offsetadressierlogik ausgebildet sein, eine erste und eine zweite Ladeadresse mit einem variablen Ladeoffset dazwischen auf der Grundlage eines gleichen einzelnen oder gleichen mehreren Adressenoperanden eines gleichen Ladebefehls zu erzeugen und eine erste und eine zweite Speicheradresse bzw. Schreibadresse mit einem dazwischen erzeugten variablen Schreiboffset basierend auf einem gleichen einzelnen oder gleichen mehreren Adressenoperanden eines gleichen Schreibbefehls zu erzeugen; wobei die Speicherzugriffschaltung ausgebildet ist, Daten von der ersten Ladeadresse in ein Register des ersten Datenverarbeitungskanals und Daten von der zweiten Ladeadresse in ein entsprechendes Register des zweiten Datenverarbeitungskanals auf der Grundlage eines gleichen einzelnen oder gleicher mehrerer Registerspezifizieroperanden des Ladebefehls einzuladen; und wobei die Speicherzugriffsschaltung ferner ausgebildet ist, Daten aus einem Register des ersten Datenverarbeitungskanals in der ersten Schreibadresse bzw. Speicheradresse zu speichern und Daten aus einem entsprechenden Register des zweiten Datenverarbeitungskanals in einer zweiten Schreibadresse bzw. Speicheradresse auf der Grundlage eines gleichen einzelnen oder gleicher mehrerer Registerspezifizieroperanden des Schreibbefehls zu speichern.
- Die variable Offsetadressierlogik kann separate programmierbare Offsetregister für Lade- und Schreiboperationen umfassen, wobei ein Register zum Speichern des variablen Ladeoffsets und ein Register zum Speichern des variablen Schreiboffsets vorgesehen sind. Alternativ sind die variablen Lade- und Schreiboffsets der gleiche Offsetwert, der in dem gleichen programmierbaren Offsetregister enthalten ist.
- Die variable Offsetadressierlogik kann ferner eine Decodierlogik aufweisen, die ausgebildet ist, den Offset aus einem Feld des Speicherzugriffsbefehls zu bestimmen.
- Die erste Speicheradresse kann durch den einen oder die mehreren Adressenoperanden des Speicherzugriffsbefehls gekennzeichnet werden, und die variable Offsetadressierlogik kann ausgebildet sein, die zweite Speicheradresse zu erzeugen, indem der variable Offset auf die erste Speicheradresse angewendet wird.
- Die Aktivierungslogik kann ein programmierbares Aktivierregister bzw. Freigaberegister zur Speicherung zumindest eines einzelnen Aktivierungsbits umfassen und kann ausgebildet sein, den zweiten Datenverarbeitungskanal in Abhängigkeit von dem Aktivierungsbit bzw. Freigabebit zu aktivieren bzw. freizugeben.
- Die Aktivierungslogik kann ferner eine Decodierlogik umfassen, die ausgebildet ist, wahlweise den zweiten Datenverarbeitungskanal in Abhängigkeit von mindestens einem Aktivierungsbit in dem Datenverarbeitungsbefehl zu aktivieren bzw. freizugeben.
- Der erste Datenverarbeitungskanal umfasst ggf. eine erste Datenverarbeitungslogik und einen Satz bzw. eine Gruppe aus ersten Datenregistern; der zweite Datenverarbeitungskanal kann eine zweite Datenverarbeitungslogik und eine zweite Gruppe aus Datenregistern aufweisen; die variable Offsetadressierlogik kann ausgebildet sein, eine erste und eine zweite Speicheradresse mit einem variablen Offset dazwischen auf der Grundalge eines gleichen einzelnen oder gleichen mehreren Ausgangsadressenoperanden eines gleichen Ladebefehls zu erzeugen; und die Speicherzugriffsschaltung kann ausgebildet sein, Daten von der ersten Speicheradresse in ein oder mehrere der ersten Datenregister, die von einem oder mehreren Zielregisterspezifizieroperanden des gleichen Ladebefehls spezifiziert sind, einzuladen und um Daten von der zweiten Speicheradresse in ein oder mehrere entsprechende Register der zweiten Datenregister, die von dem gleichen einen oder gleichen mehreren Zielregisterspezifizieroperanden des gleichen Ladebefehls spezifiziert sind, einzuladen; so dass die erste Datenverarbeitungslogik eine Operation, die durch den Operationscode spezifiziert ist, an den Daten ausführt, die von der ersten Speicheradresse in das spezifizierte erste Datenregister eingeladen sind, und unter der Bedingung, dass der zweite Ausführungskanal aktiviert ist, die zweite Datenverarbeitungslogik die gleiche Operation an den Daten ausführt, die von der zweiten Speicheradresse in das entsprechende zweite Datenregister eingeladen sind.
- Der eine oder die mehreren Operanden des Datenverarbeitungsbefehls können einen oder mehrere Ausgangsoperanden aufweisen; und der erste Datenverarbeitungskanal ist ggf. ausgebildet, das spezifizierte erste Datenregister als ein Ausgangsregister für die Operation auszuwählen, die von der ersten Datenverarbeitungslogik ausgeführt wird, auf der Grundlage des einen oder der mehreren Ausgangsoperanden des Datenverarbeitungsbefehls, und der zweite Datenverarbeitungskanal ist ggf. ausgebildet, das entsprechende zweite Datenregister als Ausgangsregister für die gleiche Operation auszuwählen, die von der zweiten Datenverarbeitungslogik auf der Grundlage des gleichen Ausgangsoperanden des gleichen Datenverarbeitungsbefehls ausgeführt wird.
- Der eine oder die mehreren Operanden des Datenverarbeitungsbefehls können mindestens einen Zieloperanden enthalten; die Speicherzugriffschaltung ist ggf. ferner ausgebildet, Daten von einem weiteren der ersten Datenregister an der ersten Speicheradresse zu speichern und Daten von einem entsprechenden der zweiten Datenregister an einer zweiten Speicheradresse zu speichern; und der erste Datenverarbeitungskanal ist ggf. ausgebildet, das weitere erste Register als ein Ziel für ein Ergebnis der Operation auszuwählen, die von der ersten Datenverarbeitungslogik auf der Grundlage des Zieloperanden des Datenverarbeitungsbefehls ausgeführt wird, und der zweite Datenverarbeitungskanal kann ausgebildet sein, das entsprechende zweite Datenregister als Ziel für ein Ergebnis der Operation auszuwählen, die von der zweiten Datenverarbeitungslogik auf der Grundlage des gleichen Zieloperanden des gleichen Datenverarbeitungsbefehls ausgeführt wird.
- Die variable Offsetadressierlogik kann ausgebildet sein, um in Reaktion auf jeden von mehreren Speicherzugriffsbefehlen eine erste und eine zweite Speicheradresse mit einem variablen Offset dazwischen auf der Grundlage des gleichen einen oder den gleichen mehreren Adressenoperanden des gleichen entsprechenden Speicherzugriffbefehls zu erzeugen; die Speicherzugriffsschaltung ist ggf. ausgebildet, in Reaktion auf jeden der Speicherzugriffsbefehle Daten zwischen der jeweiligen ersten Speicheradresse und einem entsprechenden Register des ersten Datenverarbeitungskanals auszutauschen und Daten zwischen der entsprechenden zweiten Speicheradresse und einem entsprechenden Register des zweiten Datenverarbeitungskanals auf der Grundlage des gleichen entsprechenden Registerspezifizieroperanden auszutauschen; die Decodiereinheit kann ausgebildet sein, den gleichen Operationscode und die gleichen mehreren Ausgangsoperanden des gleichen Datenverarbeitungsbefehls zu dem ersten und zu dem zweiten Datenverarbeitungskanal zu übertragen, so dass die erste Datenverarbeitungslogik eine Operation, die von diesem Operationscode angegeben ist, an Daten in einem Register des ersten Datenverarbeitungskanals auszuführen, und wenn die zweite Datenverarbeitungslogik aktiviert ist, wird diese die gleiche Operation an Daten in einem entsprechenden Register des zweiten Datenverarbeitungskanals auf der Grundlage des einen gleichen oder den gleichen mehreren Operanden des Verarbeitungsbefehls ausgeführt.
- Der Prozessor kann einen Datenausführungspfad zum Ausführen bzw. Abarbeiten von Datenverarbeitungsbefehlen und einen separaten Steuerungsausführungspfad zum Ausführen von Steuerbefehlen umfassen, wobei der Datenausführungspfad aus dem ersten und dem zweiten oder den mehreren Datenverarbeitungskanälen aufgebaut ist.
- Die Decodiereinheit kann so angeordnet sein, dass sie eine Sequenz aus Befehlspaketen empfängt, wovon jedes mehrere dazugehörende Befehle aufweist, wobei zumindest einige der Befehlspakete jeweils ein langes Befehlswort enthalten, das aus einem Steuerbefehl und einem Datenverarbeitungsbefehl gebildet ist, und die Decodiereinheit ist ausgebildet, beim Decodieren eines langen Befehlswortes den Steuerbefehl dem Steuerungspfad zum Ausführen zuzuleiten und den Datenverarbeitungsbefehl den Datenverarbeitungskanälen des Datenverarbeitungspfades zum Ausführen parallel zu dem Steuerbefehl zuzuleiten.
- Jeder der Datenverarbeitungskanäle kann eine Datenverarbeitungslogik in Form einer konfigurierbaren Ausführungseinheit aufweisen, die konfigurierbar ist, so dass mehrere konstituierende Operationen in Reaktion auf den gleichen Operationscode ausgeführt werden.
- Der zweite oder die mehreren Datenverarbeitungskanäle stellen somit eine vierte Dimension an Parallelität orthogonal zu der Vektorverarbeitung, zur Ausführung des langen Befehlswortes und der konfigurierbaren Ausführung bereit.
- Der Prozessor kann mehrere zweite Datenverarbeitungskanäle parallel zu dem ersten Datenverarbeitungskanal aufweisen; wobei die Speicherzugriffsschaltung ausgebildet ist, Daten zwischen jedem zweiten Datenverarbeitungskanal und einer entsprechenden zweiten Speicheradresse auszutauschen; und jeder zweite Datenverarbeitungskanal kann die gleiche Operation an den Daten der entsprechenden zweiten Speicheradresse ausführen.
- Die variable Offsetadressierlogik kann ausgebildet sein, eine erste Speicheradresse und mehrere unterschiedliche zweite Speicheradressen zu erzeugen, wobei jede für einen entsprechenden der Datenverarbeitungskanäle vorgesehen aber von einem gemeinsamen variablen Offset abgeleitet ist. Die variable Offsetadressierlogik kann ausgebildet sein, eine erste Speicheradresse und mehrere unabhängige zweite Speicheradressen zu erzeugen, wovon jede aus einem unabhängigen variablen Offset für jeden der zweiten Datenverarbeitungskanäle abgeleitet ist.
- Die zweiten Datenverarbeitungskanäle sind so ausgebildet, dass sie gemeinsam durch ein gemeinsames Aktivierungsbit oder Bits aktiviert bzw. freigegeben werden können.
- Jeder zweite Datenverarbeitungskanal ist ausgebildet, durch ein entsprechendes Aktivierungsbit oder Bits unabhängig aktiviert oder deaktiviert zu werden.
- Gemäß einem weiteren Aspekt der vorliegenden Erfindung wird ein Prozessor bereitgestellt, der umfasst: eine Decodiereinheit, die ausgebildet ist, eine Sequenz aus Befehlen zu empfangen; einen ersten und mindestens einen zweiten Datenverarbeitungskanal, die jeweils mit der Decodiereinheit verbunden sind, wobei der zweite Datenverarbeitungskanal eine Aktivierungslogik aufweist, die ausgebildet ist, in selektiver Weise den zweiten Datenverarbeitungskanal zu aktivieren; wobei die Decodiereinheit ausgebildet ist, einen gleichen Operationscode und einen gleichen einzelnen oder gleiche mehrere Operanden eines gleichen Verarbeitungsbefehls sowohl zu dem ersten Datenverarbeitungskanal als auch dem zweiten Verarbeitungskanal zuzuführen derart, dass der erste Datenverarbeitungskanal eine Operation, die durch diesen Operationscode spezifiziert ist, ausführt unter Anwendung eines oder mehrerer der Register des ersten Datenverarbeitungskanals, und wenn der zweite Datenverarbeitungskanal aktiviert ist, dieser die gleiche Operation unter Anwendung eines oder mehrerer entsprechender Register des zweiten Datenverarbeitungskanals auf der Grundlage des einen gleichen oder den mehreren Operanden des Datenverarbeitungsbefehls ausführt. In diesem Aspekt ist die Beteiligung der variablen Offsetadressierlogik und/oder der Speicherzugriffsschaltung optional, so dass die vorliegende Erfindung auch auf Operationstypen anwendbar ist, die nur Register betreffen.
- Gemäß einem weiteren Aspekt der vorliegenden Erfindung wird ein Prozessor bereitgestellt, der umfasst: mehrere Datenverarbeitungskanäle, wovon jeder eine Vektorverarbeitungslogik aufweist; wobei die Datenverarbeitungskanäle so ausgebildet sind, dass sie in Reaktion auf die gleichen Befehle, im Wesentlichen parallel auf Vektoren von jeweiligen Speicherstellen operieren, die voneinander durch einen programmierbaren Offset bzw. Abstand getrennt sind; und wobei zumindest einer der Datenverarbeitungskanäle ausgebildet ist, selektiv aktiviert und deaktiviert zu werden unabhängig von zumindest einem anderen der Datenverarbeitungskanäle.
- Gemäß einem weiteren Aspekt der vorliegenden Erfindung wird ein Dualkanal- oder Mehrkanal-SIMD-Prozessor bereitgestellt.
- Gemäß einem weiteren Aspekt der vorliegenden Erfindung wird ein kabelloses Anwenderendgerät bzw. Nutzerendgerät mit einem Prozessor bereitgestellt, der die oben genannten Merkmale aufweist, und wobei ein Speicher bereitgestellt wird, der mit der Adressierlogik verbunden ist, wobei der Speicher Daten speichert, die kabellose Signale darstellen, die Von dem kabellosen Anwenderendgerät empfangen werden, und wobei die Decodiereinheit ausgebildet ist, eine Sequenz aus Befehlen zum Ausführen einer Signalverarbeitung an diesen Daten zu empfangen.
- In Ausführungsformen ist die Sequenz aus Befehlen so gestaltet, dass eine Trellis-Decodieroperation und/oder eine schnelle Fourier-Transformation ausgeführt werden.
- Gemäß einem weiteren Aspekt der vorliegenden Erfindung wird ein Computerprogrammprodukt bereitgestellt, das eine Codierung bzw. einen Code enthält, der ein nicht-transientes computerlesbares Medium verkörpert, das eine Codierung bzw. einen Code aufweist, der ausgebildet ist, den variablen Adressenoffset eines Prozessors zu programmieren, der die oben genannten Eigenschaften aufweist.
- Kurze Beschreibung der Zeichnungen
- Für ein besseres Verständnis der vorliegenden Erfindung und zum Aufzeigen ihrer Umsetzung wird beispielhaft auf die begleitenden Zeichnungen Bezug genommen, in denen:
-
1 eine schematische Blockansicht eines bekannten Prozessors ist, -
2a eine schematische Darstellung eines Ladebefehls ist, -
2b eine schematische Darstellung eines Datenverarbeitungsbefehls ist, -
2c eine schematische Darstellung eines langen Befehlswortes ist, -
2d eine schematische Darstellung einer Vektoroperation ist, -
3 eine schematische Blockdarstellung eines Prozessors mit einem dualen Datenkanal ist, -
4 eine schematische Blockansicht eines Datenspeichers mit dualem Anschluss ist, und -
5 eine schematische Darstellung einer beispielhaften Speicherzuordnung ist. - Detaillierte Beschreibung bevorzugter Ausführungsformen
- Eine bevorzugte Ausführungsform der vorliegenden Erfindung ist schematisch in der Blockansicht aus
3 gezeigt. - Der Prozessor umfasst eine Architektur mit dualem Pfad ähnlich zu der Architektur aus
1 , wobei ein Befehlstrom zwischen zwei unterschiedlichen Hardwareausführungspfaden aufgeteilt ist: ein Steuerausführpfad, der zur Verarbeitung eines Steuerungscodes vorgesehen ist, und ein Datenausführpfad, der zum Verarbeiten von Daten vorgesehen ist (es sei wieder aufWO 2005/096141 - Zusätzlich zu dieser doppelten oder dualen Daten- und Steuerungspfadarchitektur umfasst der Datenverarbeitungspfad selbst zumindest zwei gleiche Datenverarbeitungskanäle.
- Über den Prozessor der
1 hinausgehend enthalten die bevorzugten Ausführungsformen der folgenden Erfindung die folgenden Merkmale (die in3 fettgedruckt gezeigt sind): - (a) eine zweite (oder mehrere) Datenverarbeitungseinheit
4b (DPU1), die in Reaktion auf den gleichen Operationscode und gleiche(n) Registeradresse(n) wie die erste Datenverarbeitungseinheit4a (DPU0) arbeitet; - (b) einen zweiten Zugriffsanschluss für den Datenspeicher
8 (mit Eingängen, die angeordnet sind, Daten1 und Adressen1 zu empfangen), wobei der zweite Zugriffsanschluss durch Speicherschaltungen mit doppeltem Anschluss oder vorzugsweise durch eine kollisionsfreie Bankenanordnung innerhalb des Datenspeichers8 implementiert ist; - (c) ein (Multi-Bit) Adressenoffsetregister
22 , das durch Steuerbefehle programmiert werden kann, und einen Addierer20 , der die zweite Adresse (Adresse1) erzeugt durch Addieren des Adressenoffsets zu der ursprünglichen Adresse (Adresse 0), die von der Adressenerzeugungseinheit14 berechnet wird; und - (d) ein (Bool'sches) Aktivierungsregister
24 , das durch Steuerbefehle programmiert werden kann und das die zweite Datenverarbeitungseinheit4b (DPU1) veranlassen kann, auf die Registeradresse(n) und den Operationscode, die mit der ersten Datenverarbeitungseinheit4a (DPU0) gemeinsam verwendet werden, zu reagieren. Vorzugsweise sollt das Aktivierungsregister24 auch den zweiten Speicheranschluss und den Adressenoffsetaddierer20 steuern, so dass diese keine Energie verschwenden, wenn die zweite Datenverarbeitungseinheit4b (DPU1) deaktiviert wird (für Leseoperationen würde das Register Energie verbrauchen und für Schreiboperationen könnte der Speicherzustand verändert werden). - Es sei detaillierter auf
3 verwiesen; der Prozessor umfasst: einen Steuerungsverarbeitungspfad in Form einer Steuereinheit2 ; und einen verbesserten Datenverarbeitungspfad mit doppeltem Kanal oder dualem Kanal mit einem ersten Datenverarbeitungskanal in Form einer ersten konstituierenden Datenverarbeitungseinheit4a (DPU0), und einen zweiten parallelen Datenverarbeitungskanal in Form einer zweiten konstituierenden Datenverarbeitungseinheit4b (DPU1). Die erste Datenverarbeitungseinheit DPU0 umfasst die erste Datenverarbeitungslogik18a , die mit einer entsprechenden dazugehörigen ersten Gruppe aus Datenregistern16a verbunden ist; und die zweite Datenverarbeitungseinheit DPU1 umfasst eine zweite parallele Datenverarbeitungslogik18b , die mit einer entsprechenden zugehörigen zweiten Gruppe aus Datenregistern16b verbunden ist. Der erste und der zweite Datenverarbeitungskanal sind vorzugsweise im Wesentlichen identisch, wobei jeder vorzugsweise eine entsprechende Instanz einer Vektorverarbeitungseinheit ist, die zum Ausführen einer Vektorverarbeitung ausgebildet ist. Somit umfasst der Prozessor zwei (oder mehr) im Wesentlichen parallele Vektorverarbeitungskanäle, so dass zusätzlich zur (SIMD) Vektorverarbeitung eine weitere Dimension an Parallelismus hinzugefügt wird. - Zusätzlich zu den Verbindungen, die im Zusammenhang mit der
1 beschrieben sind, ist der Befehlsdecodierer12 der Steuereinheit2 mit der ersten Gruppe aus Datenregistern16a der ersten Datenverarbeitungseinheit DPU0 und mit der zweiten Gruppe aus Datenregistern16b der zweiten Datenverarbeitungseinheit DPU1 verbunden und ist ferner ausgebildet, die gleiche Registeradresse oder Adressen von dem einen oder den mehreren Operanden des gleichen Befehls zu sowohl der Datenverarbeitungseinheit DPU0 als auch der Datenverarbeitungseinheit DPU1 im Wesentlichen parallel zuzuleiten. Der Befehlsdecodierer12 ist ferner mit der ersten Datenverarbeitungslogik18a der ersten Datenverarbeitungseinheit DPU0 und der zweiten Datenverarbeitungslogik18b der zweiten Datenverarbeitungseinheit DPU1 verbunden und ausgebildet, den gleichen Operationscode von dem gleichen Befehl sowohl der Datenverarbeitungseinheit DPU0 als auch der Datenverarbeitungseinheit DPU1 im Wesentlichen parallel zuzuführen. - Zu beachten ist daher die Unterscheidung zwischen einerseits den Daten- und Steuerungspfaden, die unterschiedliche Arten an Operationen in Reaktion auf das Ausführen unterschiedlicher Befehle mit unterschiedlichen Operationscodes ausführen; und andererseits den dualen Datenverarbeitungskanälen innerhalb des Datenverarbeitungspfades, die den gleichen Befehl verwalten und die gleiche Operation im Wesentlichen simultan ausführen.
- Der Prozessor umfasst ferner ein Adressenoffsetregister
22 und einen Addierer20 . Das Adressenoffsetregister besitzt einen Eingang, der mit der Steuereinheit2 verbunden ist und ein Ausgang, der mit einem Eingang des Addierers20 verbunden ist. Der andere Eingang des Addierers20 ist mit dem Ausgang der Adressenerzeugungseinheit verbunden. - Gemäß
4 umfasst der Ausgang des Datenspeichers8 in der dargestellten Ausführungsform der vorliegenden Erfindung eine Speicherbank17 (d. h. das eigentliche Array aus Speicherzellen, in denen Daten gespeichert sind); und zwei Speicheranschlüsse, einen ersten Speicheranschluss19a und einen zweiten Speicheranschluss19b , die mit der Speicherbank17 verbunden sind. Der erste Speicheranschluss19a ist mit dem Ausgang der Adressenerzeugungseinheit14 und der ersten Gruppe der Datenregister16a in der ersten Datenverarbeitungseinheit DPU0 verbunden, und der zweite Speicheranschluss19b ist mit dem Ausgang des Addierers20 und der zweiten Gruppe der Datenregister16b in der zweiten Datenverarbeitungseinheit DPU1 verbunden. Wie zuvor erwähnt, können diese beiden Speicherschaltungen mit Doppelanschluss oder vorzugsweise durch eine kollisionsfreie Bankenanordnung innerhalb des Datenspeichers8 eingerichtet werden. - Während des Betriebs besteht die Wirkung der zusätzlich beschriebenen Schaltung darin, dass, wenn ein Ladebefehl ausgeführt wird, die einzelne Ausgangsadresse (Adresse0), die explizit durch das Ausgangsoperandenfeld (dieses Ladebefehls) angegeben ist, ebenfalls verwendet wird, um implizit eine zusätzliche zweite Ausgangsadresse (Adresse1) zu erzeugen. D. h., in Reaktion auf den Ladebefehl liefert die Adressenerzeugungseinheit
14 die erste Adresse (Adresse0) zu dem ersten Speicheranschluss19a aber auch zu dem Addierer20 . Der Addierer20 erzeugt eine zweite Adresse (Adresse1) durch Addieren eines Offsetwertes, der in dem Adressenoffsetregister22 gespeichert ist, zu der ersten Adresse (Adresse0) und leitet die zweite Adresse dem zweiten Speicheranschluss19b zu. In Reaktion darauf ruft der erste Speicheranschluss19a Daten aus der ersten Adresse innerhalb der Speicherbank17 des Datenspeichers8 ab und lädt diese Daten in das spezifizierte Register der ersten Datenregistergruppe16a , während der zweite Speicheranschluss19b Daten aus der ersetzten zweiten Adresse innerhalb der Speicherbank17b abruft und diese Daten in das spezifizierte Register der zweiten Datenregistergruppen16b lädt (wobei dieses das Register ist, das die gleiche Registeradresse innerhalb der zweiten Gruppe16b wie das erste spezifizierte Register innerhalb der ersten Gruppe16a aufweist). - Zu beachten ist, dass das Ausgangsoperandenfeld des Ladebefehls tatsächlich die Adresse0 in Form einer Summe eines Basisregisters und eines Offsetregisters angibt, wobei jedes dieser Register durch die zugehörigen Ausgangsoperanden dieses Ladebefehls angegeben ist. In diesem Falle ist der Offset, der von dem Offsetregister
22 und dem Addierer20 zum Erzeugen der Adresse1 addiert wird, ein dazu zusätzlich hinzu gefügter Offset. - Wenn nachfolgend eine Datenverarbeitung ausgeführt wird, ist das Ergebnis, dass ein einzelner Datenverarbeitungsbefehl (mit einem einzelnen Operationscode und einer einzelnen Instanz des zugehörigen Operanden oder der Operanden) auf den relevanten Daten operiert, die sowohl in die erste Gruppe der Datenregister
16a als auch in die zweite Gruppe der Datenregister16b geladen sind. Das Einladen aus den Offsetadressen des Speichers8 bedeutet, dass ein einzelner Befehl die gleiche Operation an unterschiedlichen Bereichen der Daten ausführt, wodurch es vorteilhafter Weise möglich ist, dass der gleiche Code an mehreren Bereichen der Daten wieder verwendet wird. - Zu beachten ist, dass eine ähnliche Anordnung auch für Speicherschreiboperationen gilt, wobei Registerwerte jeweils von DPU0 und DPU1 in zwei separaten Stellen im Speicher abgelegt werden, wobei diese durch den Adressenoffsetwert
22 getrennt sind. In einigen Ausführungsformen wird ein anderer Offset für Schreiboperationen bzw. Speicheroperationen verwendet, als er für Ladeoperationen verwendet wird, so dass es zwei Offsetregister22 gibt. In anderen Ausführungsformen wird ein einzelner Offsetwert von einem einzelnen Register sowohl für Ladeoperationen als auch Schreiboperationen verwendet. - In einer speziellen Ausführungsform erhält die DPU1 den Operationscode eine festgelegte Anzahl an Taktzyklen später als die DPU0 und führt diesen Operationscode dementsprechend später aus. Dieses praktische Implementierungsdetail ermöglicht es, dass Zeit verfügbar ist, um die Offsetadresse zu berechnen und um den decodierten Operationscode und die Registeradressen zwischenzuspeichern, die der DPU1 zugeleitet sind, und es ist optional möglich, die DPU1 in einem leistungsgetorten oder taktgetorten Betrieb zu betreiben.
- Vorzugsweise ist das Adressenoffsetregister als programmierbares Register ausgebildet, beispielsweise indem es für generische Ladebefehle adressierbar gemacht wird. Alternativ kann eine spezielle Art an Ladebefehl in die Befehlsarchitektur integriert werden mit einem Feld, das den Offset für diesen Ladebefehl oder die Adresse eines Registers, das den Offset enthält, angibt.
- Der Prozessor umfasst ferner ein Ein-Bit-Aktivierungsregister
24 , das zwischen der Logik der Steuereinheit2 und der zweiten Datenverarbeitungseinheit DPU1 angeschlossen ist. Wenn das Aktivierungsbit gesetzt (aktiv) ist, arbeiten die dualen Datenverarbeitungseinheiten DPU0 und DPU1 beide so, dass eine parallele Datenverarbeitung in der Weise ausgeführt wird, wie dies zuvor mit Bezug zu den3 und4 erläutert ist. Wenn das Aktivierungsbit nicht gesetzt ist (nicht aktiviert ist), dann arbeitet die erste Datenverarbeitungseinheit DPU0 alleine, wie dies zuvor im Bezug zu1 erläutert ist, und die zweite Datenverarbeitungseinheit DPU1 ist deaktiviert. - Das Aktivierungsregister
24 ist vorzugsweise als programmierbares Register ausgebildet, beispielsweise indem es wiederum durch generische Ladebefehle adressierbar gemacht wird, oder indem ein spezieller Umschaltbefehl in die Befehlssatzarchitektur integriert wird. Alternativ kann die Befehlssatzarchitektur so modifiziert werden, dass sie ein spezielles Ein-Bit-Feld in jedem relevanten Datenverarbeitungsbefehl enthält, das die Steuereinheit2 veranlasst, die zweite Datenverarbeitungseinheit DPU1 zu aktivieren oder zu deaktivieren, wodurch es möglich ist, dass die zweite Datenverarbeitungseinheit DPU1 von Befehl zu Befehl eingeschaltet oder ausgeschaltet werden kann. - Eine anschauliche Speicherzuordnung ist schematisch in
5 gezeigt. Hier wird in einem dualen Kanalmodus, wenn das Aktivierungsbit in dem Aktivierungsregister24 gesetzt ist, ein erstes Gebiet des Speichers17a verwendet, um Daten für die Verarbeitung in der ersten Datenverarbeitungseinheit DPU0 bereitzustellen, und ein zweites Gebiet des Speichers17b wird verwendet, um Daten für die Verarbeitung in der zweiten Datenverarbeitungseinheit DPU1 bereitzustellen, wobei das zweite Gebiet17b im Adressenraum von dem ersten Gebiet17a entsprechend einem programmierbaren Wert verschoben ist, der in dem Adressenoffsetregister22 gespeichert ist. In einem Einzelkanalmodus ist andererseits, wenn das Aktivierungsbit in dem Aktivierungsregister24 deaktiviert ist, potentiell jedes Gebiet des Speichers minus dem zweiten Gebiet17b zur Verwendung durch die erste Datenverarbeitungseinheit DPU0 verfügbar. - Zu beachten ist, dass zusätzlich zu der Parallelität bzw. Parallelverarbeitung, der durch die duale Datenverarbeitungskanalarchitektur bereitgestellt wird, wie sie hierin offenbart ist, in bevorzugten Ausführungsformen die Erfindung auch andere Arten an Parallelität bzw. Parallelverarbeitung ausnutzen kann.
- Vorzugsweise ist der Prozessor so ausgebildet, dass er eine LIW-artige Verarbeitung durchführt, wodurch Steuer- und Datenbefehle aus einem gemeinsamen Befehlswort
34 für die parallele Ausführung durch den Steuerungspfad und den Datenpfad vorgesehen werden ähnlich zu der Idee, die in Verbindung mit2d beschrieben ist. In derartigen Ausführungsformen der vorliegenden Erfindung verbleibt der Steuerbefehl33 in dem Steuerungspfad2 , aber der Datenverarbeitungsbefehl26 wird entlang den Datenverarbeitungspfaden4a ,4b mit dualem Kanal aufgeteilt, um potentiell sowohl auf der Datenverarbeitungseinheit DPU0 als auch auf der Datenverarbeitungseinheit DPU1 in der hierin offenbarte Weise zu operieren. - Ferner kann zusätzlich zu der Parallelität der dualen Datenkanalverarbeitungsarchitektur und zusätzlich zu der Parallelität der LIW-Architektur jede der einzelnen Datenverarbeitungseinheiten DPU0 und DPU1 intern auch gemäß einer oder mehreren weiteren Arten an Parallelverarbeitung ausgebildet sein.
- Insbesondere ist jede Datenverarbeitungseinheit DPU0 und DPU1 vorzugsweise als eine SIMD-Vektorverarbeitungseinheit ausgebildet, so dass jede der beiden duplizierten Operationen eine Vektoroperation an mehreren Datenelementen aufweist, wie dies vorher mit Bezug zu
2d erläutert ist. D. h., ein einzelner Ladebefehl lädt zwei Vektoren aus voneinander beabstandeten bzw. mit Offset versehenen Speicheradressen innerhalb des Speichers8 : ein erster Vektor aus der ersten Speicheradresse (Adresse0) wird in eines aus der ersten Gruppe aus Datenregistern16 eingeladen, und ein zweiter Vektor wird aus der zweiten mit Offset versehenen Speicheradresse (Adresse1) in eines der zweiten Gruppe aus Datenregistern16b eingeladen. Somit wird durch einen einzelnen Befehl wirksam eine zweidimensionale Matrix aus Datenelementen eingeladen, anstatt dass lediglich ein eindimensionaler Vektor eingeladen wird, wie dies in einem konventionellen SIMD-Prozessor der Fall ist. Ein einzelner Datenverarbeitungsbefehl, der einen einzelnen Operationscode und zugehörige Operanden aufweist, kann dann im Wesentlichen gleichzeitig auf jedem Element der Vektoren operieren, die in zwei parallelen Kanäle eingeladen wurden. Das Bereitstellen zweier (oder mehrerer) Vektorverarbeitungseinheiten DPU0 und DPU1 in paralleler Konfiguration erzeugt somit eine Konfiguration, die als Matrixprozessor betrachtet werden kann, in welchem ein einzelner Befehl auf einer Matrix aus Datenelementen operieren kann. - Ferner kann jede der Datenverarbeitungseinheiten DPU0 und DPU1 eine konfigurierbare „tiefe” Ausführungseinheit aufweisen, wie dies beispielsweise in der internationalen Patentanmeldung mit der Veröffentlichungsnummer
WO 2006/117562 - Somit kann die duale Kanalverarbeitungsarchitektur, die hierin offenbart ist, so aufgefasst werden, dass diese eine vierte Dimension an Parallelität bereitstellt, die senkrecht zu jeder der Arten an Parallelität ist, die durch die LIW-Verarbeitung, durch die SIMD-Verarbeitung und/oder durch die konfigurierbare „tiefe” Ausführung bereitgestellt werden.
- Einige Vorteile, die unter Anwendung der vorliegenden Erfindung erreicht werden können, sind wie folgt.
- Zunächst vergrößert die zweite (oder die mehreren) Datenverarbeitungseinheit die wirksame SIMD-Breite der Maschine, wodurch ein größerer Anteil an Berechnungsarbeit oder Speicherzugriffsarbeit in jedem Prozessorzyklus in Reaktion auf jeden Befehl ausgeführt werden kann. Es gibt viele Möglichkeiten beispielsweise in der Signalverarbeitung für Funkmodems, um wirksam die gleiche Befehlssequenz für zwei unterschiedliche Datensätzen auszuführen. Dies kann besonders vorteilhaft in Modems für Langzeitentwicklungs-(LTE)Standards sein. Beispielsweise kann eine Turbo-Decodierung gleichzeitig an mehreren Datenströmen ausgeführt werden, und die schnellen Fourier-Transformationen (FFT's), die für die orthogonale Frequenzmultiplexaufteilung (OFDM) erforderlich sind, können gleichzeitig an mehreren Datenströmen ausgeführt werden.
- Die zwei (oder mehr) Datenverarbeitungseinheiten müssen auf unterschiedliche Gebiete des Speichers zugreifen. Das Erzeugen der Adresse1 als ein Offset zur Adresse0 vermeidet vorteilhafter Weise die Notwendigkeit, dass zwei Adressenerzeugungseinheiten in der Steuereinheit
2 vorzusehen sind, und vermeidet, was besonders wichtig ist, das Erfordernis für eine zusätzliche Adresseninformation in jedem Datenverarbeitungsbefehl. - Indem, dass der Offset programmierbar gemacht wird, wird eine nützliche Flexibilität bei der Organisation der Datenstrukturen in einem Speicher bereitgestellt. Beispielsweise wird dadurch ermöglicht, dass der Speicher in der in
5 gezeigten Weise zugeordnet werden kann, wodurch nützlicher Weise der Adressenraum der DPU0 zusammenhängend gehalten wird, wenn der für die DPU1 erforderliche Speicherplatz kleiner ist als die Hälfte des Speichers. In einer Weiterentwicklung der Erfindung können zwei unterschiedliche Adressenoffsetregister22 vorgesehen werden, wobei eines für Ladeoperationen und das andere für Schreiboperationen verwendet wird. - Wie zuvor erwähnt ist, besteht eine alternative Anordnung darin, dass für jeden geeigneten Datenverarbeitungsbefehl oder Speicherzugriffsbefehl ein Feld vorgesehen ist, das entweder einen Offset zwischen der Adresse0 und der Adresse1 angibt, oder ein Steuerregister spezifiziert, das den zu verwendenden Offset enthält. Diese Alternative ist flexibler als die Verwendung eines Adressenoffsetregisters, ist aber sehr aufwendig im Hinblick auf den Bereich für die Befehlscodierung, der für gewöhnlich wertvoll ist.
- Die Möglichkeit, den zweiten Pfad unter Anwendung des Aktivierungsregisters
24 zu steuern, ist aus zwei Gründen vorteilhaft. - Der erste Grund besteht darin, dass Energie gespart wird, wenn eine gleichzeitige Berechnung an zwei Datensätzen nicht erforderlich ist.
- Der zweite Grund besteht darin, dass gewisse Signalverarbeitungsaufgaben, beispielsweise die Turbo-Decodierung in 3G-Funkmodems, gibt, für die die gleiche Codesequenz manchmal in geeigneter Weise gleichzeitig auf zwei Datensätze und manchmal nur auf einen Datensatz angewendet werden kann, wenn ein Programm abgearbeitet wird. Um Befehlsspeicherplatz einzusparen, der für einen eingebetteten Prozessor äußerst wertvoll ist, ist es vorteilhaft, in der Lage zu sein, die genau gleiche Codeprozedur für diese beiden Situationen wieder verwenden zu können – obwohl die Befehle selbst nicht unterscheiden können, ob sie eine oder beide Datenverarbeitungseinheiten DPU0 und/oder DPU1 steuern. In ähnlicher Weise gibt es eine Einsparung bei den Softwareentwicklungskosten, wenn die gleiche Prozedur in der Lage ist, beide Situationen zu berücksichtigen. Daher kann das Aktivierungsregister
24 gesetzt (oder zurückgesetzt) werden, bevor die Codeprozedur aufgerufen wird, um zu bestimmen, ob der Aufruf auf einer oder beiden Datenverarbeitungseinheiten DPU0 und/oder DPU1 operiert. Optional kann eine Erweiterung auf eine Mehrfachbitaktivierung für mehr als zwei Datenverarbeitungseinheiten ebenfalls vorgesehen werden. - Eine alternative Ausführungsform führt dazu, dass ein Bit bei der Codierung geeigneter Datenvearbeitungs- und Datenspeicherzugriffsbefehle zugeordnet wird, um anzugeben, ob eine oder beide DPU's auf den Befehl reagieren sollen. In diesem Falle gibt es dann kein Aktivierungsregister mehr. Eine derartige Alternative ist nicht mehr in der Lage, den zweiten zuvor genannten Punkt des Wiederverwendens der gleichen Codeprozedur zu bewirken, kann aber dennoch vorteilhaft sein im Vergleich zu bestehenden Prozessoren, beispielsweise durch Vergrößern des Grades an Parallelität und daher der Datenverarbeitungsleistung pro Zyklus.
- Es sollte beachtet werden, dass die vorhergehenden Ausführungsformen lediglich in Form von Beispielen erläutert sind.
- Obwohl es z. B. vorteilhaft ist, muss die Erfindung nicht notwendiger Weise in Verbindung mit der beschriebenen Steuer- und Datenverarbeitung mit dualem Pfad verwendet werden, und auch nicht mit einer LIW-Verarbeitung oder auch nicht mit einer SIW-Verarbeitung oder auch nicht in Verbindung mit einer konfigurierbaren „tiefen” Ausführung. Die Erfindung kann alternativ in Verbindung mit keiner oder einer beliebigen Kombination lediglich einiger dieser Optionen verwendet werden. Beispielsweise können die Steuer- und Datenverarbeitungsfunktionen in einer Reihe entlang des gleichen Verarbeitungspfads angeordnet sein, die Ausführungseinheiten der beiden Datenverarbeitungskanäle können ggf. lediglich skalare Ausführungseinheiten sein und/oder diese Ausführungseinheiten können fixierte Ausführungseinheiten sein.
- Des Weiteren ist die Erfindung nicht beschränkt auf lediglich eine einzelne zusätzliche Datenverarbeitungseinheit DPU1. Im Prinzip kann es eine beliebige Anzahl an weiteren Datenverarbeitungseinheiten DPU2, DPU3, etc. geben, so dass mehrere zusätzliche parallele Datenverarbeitungskanäle geschaffen werden. In diesem Falle ist jeder zusätzliche Datenverarbeitungskanal ausgebildet, eine Adresse zu verwenden, die aus einem gemeinsamen Offset in Bezug auf ein gemeinsames Adressenoffsetregister berechnet ist, beispielsweise als Intervalle des gemeinsamen Offsets in dem Speicher; oder alternativ ist jeder Datenkanal ausgebildet, seinen eigenen unabhängig programmierbaren Offset in Bezug auf ein eigenes entsprechendes Adressenoffsetregister aus den mehreren Adressenoffsetregistern zu verwenden. In ähnlicher Weise kann jeder zusätzliche Datenverarbeitungskanal in gemeinsamer Weise aktiviert oder deaktiviert werden mittels eines gemeinsamen Aktivierungsbits oder einer gemeinsamen Aktivierungslogik; oder jeder Verarbeitungskanal kann unabhängig durch ein entsprechendes Aktivierungsbit oder eine Logik aktiviert oder deaktiviert werden; oder die Aktivierungslogik kann die Kanäle so beschränken, dass diese nur in gewissen Mustern aktiviert oder deaktiviert werden, beispielsweise kann zwischen vorbestimmten Anordnungen aus einem, zwei, vier oder acht Kanälen ausgewählt werde, etc.
- Zu beachten ist, dass dort, wo Operationen oder die Verarbeitung so beschrieben sind, dass diese im Wesentlichen gleichzeitig oder parallel ausgeführt wird, dies nicht notwendiger Weise erfordert, dass die Operationen zeitlich exakt ausgerichtet sind. Beispielsweise ist es möglich, dass Pipeline Stufen in Form getakteter Zwischenspeicher entlang den diversen Signalpfaden vorgesehen sind, in welchem Falle eine gewisse zeitliche Verschiebung zwischen den Operationen, die in einem parallelen Kanal und einem weiteren parallelen Kanal vorgenommen werden, auftreten kann. Vorzugsweise sind die Operationen gleichzeitig derart, dass sie zumindest zeitlich überlappen, obwohl, abhängig von der Pipeline-Verarbeitung, es möglich ist, dass die zeitliche Verschiebung größer sei kann. Dennoch stellen die zwei oder mehr Kanäle eine parallele Datenverarbeitung in dem Sinne bereit, dass die Hardwareressourcen in jedem der zwei oder den mehreren parallelen Kanälen dupliziert werden (und keine Disponierung in einer verschachtelten Weise für den gleichen Kanal erfolgt). In dem Falle, in welchem jeder der zwei oder mehr Datenverarbeitungskanäle eine entsprechende Instanz eines Vektorverarbeitungskanals ist, bedeutet dies, dass die Vektorverarbeitungshardware in jedem der zwei oder mehr parallelen Vektorverarbeitungskanäle dupliziert wird, so dass eine Anordnung geschaffen wird, die als ein Matrixprozessor betrachtet werden kann.
- Zu beachten ist ferner, dass der Begriff „Wort”, wie er in der vorliegenden Anmeldung verwendet wird, nicht auf eine spezielle Länge beschränkt ist, sondern jede Länge umfasst, die durch eine Datenbreite der in Frage stehenden Architektur definiert ist. Beispielsweise wird der Begriff „Wort” manchmal verwendet, um eine 32-Bit-Dateneinheit zu bezeichnen, wobei in einer bevorzugten Ausführungsform der vorliegenden Erfindung die langen Befehlswortpakete
34 jeweils eine Länge von 64 Bits aufweisen. - Zu beachten ist ferner, dass im Allgemeinen Operanden von Befehlen entweder unmittelbare (wörtliche) Operanden sind oder, was häufiger der Fall ist, ein Register angeben, in welchem ein Wert gespeichert ist. beispielsweise enthält ein Adressenoperand, der eine Lade- oder Schreibadresse angibt, zwei Teile, die eine Basis plus einen Offset entsprechend angeben, wobei jeder Teil einen unmittelbaren Operanden, der die Basis oder den Offset direkt enthält, oder ein Register angibt, das diesen Teil der Adresse enthält. Zu beachten ist ferner, dass einige Operationen separate Ausgangs- und Zielregister verwenden, während andere Arten ein einzelnes Register verwenden, das sowohl einen Ausgangs- als auch einen Zieloperanden für den gleichen Befehl enthält (beispielsweise ein Befehl mit einem einzelnen Registerspezifizieroperandenfeld, das alle Bits in dem spezifizierten Register invertiert).
- Wenn das Vorhergehende im Hinblick auf Speicheradressen und Speicherzugriffe beschrieben ist, soll dies nicht notwendiger Weise eine Begrenzung auf eine spezielle Art von Speicher bedeuten, und im Allgemeinen betrifft die vorliegend Erfindung Lade- und Schreiboperationen von und zu einer Speicheradresse einer beliebigen Art an elektronischem Speichermedium.
- Andere Konfigurationen und Anwendungen der vorliegenden Erfindung werden für den Fachmann angesichts der hierin offenbarten Lehre ersichtlich. Der Schutzbereich der Erfindung ist nicht durch die beschriebenen Ausführungsformen, sondern lediglich durch die angefügten Patentansprüche festgelegt.
- ZITATE ENTHALTEN IN DER BESCHREIBUNG
- Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
- Zitierte Patentliteratur
-
- WO 2005/096141 [0002, 0062]
- WO 2006/117562 [0083]
Claims (26)
- Prozessor mit: einer Decodiereinheit, die ausgebildet ist, eine Sequenz aus Befehlen zu empfangen; einem ersten und mindestens einem zweiten Datenverarbeitungskanal, wovon jeder mit der Decodiereinheit verbunden ist, wobei der zweite Datenverarbeitungskanal eine Aktivierungslogik aufweist, die ausgebildet ist, den zweiten Datenverarbeitungskanal selektiv zu aktivieren; einer variablen Offsetadressierlogik, die mit der Decodiereinheit verbunden und ausgebildet ist, eine erste und eine zweite Speicheradresse mit einem variablen Offset dazwischen auf der Grundlage eines gleichen einzelnen oder gleicher mehrerer Adressenoperanden eines gleichen Speicherzugriffsbefehls zu erzeugen; und einer Speicherzugriffsschaltung, die mit der variablen Offsetadressierlogik und dem ersten und dem zweiten Datenverarbeitungskanal verbunden und ausgebildet ist, Daten zwischen der ersten Speicheradresse und einem Register des ersten Datenverarbeitungskanals und Daten zwischen der zweiten Speicheradresse und einem entsprechenden Register des zweiten Datenverarbeitungskanals zu übertragen auf der Grundlage eines gleichen einzelnen oder gleicher mehrerer Registerspezifizieroperanden des Speicherzugriffsbefehls; wobei die Decodiereinheit ausgebildet ist, einen gleichen Operationscode und einen gleichen einzelnen oder gleiche mehrere Operanden eines gleichen Datenverarbeitungsbefehls dem ersten und dem zweiten Datenverarbeitungskanal zuzuleiten, so dass der erste Datenverarbeitungskanal eine durch diesen Operationscode spezifizierte Operation an Daten in einem oder mehreren Registern des ersten Datenverarbeitungskanals ausführt, und, wenn der zweite Datenverarbeitungskanal aktiviert ist, dieser die gleiche Operation an Daten in einem entsprechenden einen oder mehreren Registern des zweiten Datenverarbeitungskanals auf der Grundlage des gleichen einzelnen oder der gleichen mehreren Operanden des Datenverarbeitungsbefehls ausführt.
- Prozessor nach Anspruch 1, wobei jeder der Datenverarbeitungskanäle ein Vektorverarbeitungskanal derart ist, dass die zu und von jeweils von der ersten und der zweiten Speicheradresse übertragenen Daten ein entsprechender Vektor sind, der mehrere Datenelemente aufweist, wobei die Operation, die jeweils in dem ersten und dem zweiten Verarbeitungskanal ausgeführt wird, eine Vektorverarbeitungsoperation umfasst, die an jedem der mehreren Datenelemente in Reaktion auf den gleichen Operationscode aufgeführt wird.
- Prozessor nach Anspruch 1 oder 2, wobei die variable Offsetadressierlogik ein programmierbares Offsetregister zum Speichern des variablen Offsets aufweist, wobei das programmierbare Offsetregister so ausgebildet ist, dass es unter Programmsteuerung beschreibbar ist.
- Prozessor nach Anspruch 1, 2 oder 3, wobei: die variable Offsetadressierlogik ausgebildet ist, eine erste und eine zweite Ladeadresse mit einem variablen Ladeoffset dazwischen auf der Grundlage eines gleichen einzelnen oder gleicher mehrerer Adressenoperanden eines gleichen Ladebefehls zu erzeugen und eine erste und eine zweite Schreibadresse mit einem variablen Schreiboffset dazwischen auf der Grundlage eines gleichen einzelnen oder gleicher mehrerer Adressenoperanden eines gemeinsamen Schreibbefehls zu erzeugen; die Speicherzugriffsschaltung ausgebildet ist, Daten von der ersten Ladeadresse in ein Register des ersten Datenverarbeitungskanals zu laden und Daten von der zweiten Ladeadresse in ein entsprechendes Register des zweiten Datenverarbeitungskanals auf der Grundlage eines gleichen einzelnen oder gleicher mehrerer Registerspezifizieroperanden des Ladebefehls zu laden; und die Speicherzugriffschaltung ferner ausgebildet ist, Daten von einem Register des ersten Verarbeitungskanals in die erste Schreibadresse zu speichern und Daten von einem entsprechenden Register des zweiten Datenverarbeitungskanals an der zweiten Schreibadresse auf der Grundlage eines gleichen einzelnen oder gleicher mehrerer Registerspezifizieroperanden des Schreibbefehls zu speichern.
- Prozessor nach Anspruch 3 und 4, wobei: die variable Offsetadressierlogik separate programmierbare Offsetregister für Lade- und Schreiboperationen aufweist, wobei eines für das Speichern des variablen Ladeoffsets und eines für das Speichern des variablen Schreiboffsets vorgesehen ist.
- Prozessor nach Anspruch 3 und 4, wobei der variable Ladeoffset und der variable Schreiboffset der gleiche Offsetwert sind, der in dem programmierbaren Offsetregister gespeichert ist.
- Prozessor nach Anspruch 1 oder 2, wobei die variable Offset-Adressierlogik eine weitere Decodierlogik umfasst, die ausgebildet ist, den Offset aus einem Feld des Speicherzugriffsbefehls zu bestimmen.
- Prozessor nach einem der vorhergehenden Ansprüche, wobei die erste Speicheradresse durch den einen oder die mehreren Adressenoperanden des Speicherzugriffsbefehls gekennzeichnet ist, und wobei die variable Offsetadressierlogik ausgebildet ist, die zweite Speicheradresse durch Anwenden des variablen Offsets auf die erste Speicheradresse zu erzeugen.
- Prozessor nach einem der vorhergehenden Ansprüche, wobei die Aktivierungslogik ein programmierbares Aktivierungsregister zum Speichern mindestens eines Aktivierungsbits umfasst und ausgebildet ist, den zweiten Datenverarbeitungskanal in Abhängigkeit von dem Aktivierungsbit selektiv zu aktivieren.
- Prozessor nach einem der Ansprüche 1 bis 8, wobei die Aktivierungslogik eine weitere Decodierlogik aufweist, die ausgebildet ist, den zweiten Datenverarbeitungskanal in Abhängigkeit von zumindest einem Aktivierungsbit in dem Datenverarbeitungsbefehl selektiv zu aktivieren.
- Prozessor nach einem der vorhergehenden Ansprüche, wobei: der erste Datenverarbeitungskanal eine erste Datenverarbeitungslogik und eine Gruppe aus ersten Datenregistern aufweist; der zweite Datenverarbeitungskanal eine zweite Datenverarbeitungslogik und eine zweite Gruppe aus Datenregistern aufweist; die variable Offsetadressierlogik ausgebildet ist, eine erste und eine zweite Speicheradresse mit einem variablen Offset dazwischen auf der Grundlage eines gleichen einzelnen oder gleicher mehrerer Ausgangsadressenoperanden eines gemeinsamen Ladebefehls zu erzeugen; und die Speicherzugriffsschaltung ausgebildet ist, Daten von der ersten Speicheradresse in eines oder mehrere der ersten Datenregister, die von einem oder mehreren Zielregisterspezifizieroperanden des gleichen Ladebefehls angegeben sind, zu laden und um Daten von der zweiten Speicheradresse in ein oder mehrere entsprechende zweiten Datenregister, die von dem gleichen einzelnen oder den gleichen mehreren Zielregisterspezifizieroperanden des gleichen Ladebefehls angegeben sind, zu laden; derart, dass die erste Datenverarbeitungslogik eine Operation, die von dem Operationscode spezifiziert ist, an den aus der ersten Speicheradresse in das spezifizierte erste Datenregister eingeladenen Daten ausführt, und, wenn der zweite Datenverarbeitungskanal aktiviert ist, die zweite Datenverarbeitungslogik die gleiche Operation an den von der zweiten Speicheradresse in das entsprechende zweite Datenregister eingeladen Daten ausführt.
- Prozessor nach Anspruch 11, wobei: der eine oder die mehreren Operanden des Datenverarbeitungsbefehls einen oder mehrere Ausgangsoperanden aufweisen; und der erste Datenverarbeitungskanal ausgebildet ist, das spezifizierte erste Datenregister als eine Ausgangsquelle für die Operation, die von der ersten Datenverarbeitungslogik auf der Grundlage des einen oder der mehreren Ausgangsoperanden des Datenverarbeitungsbefehls ausgeführt wird, auszuwählen, und der zweite Datenverarbeitungskanal ausgebildet ist, das entsprechende zweite Datenregister als Ausgangsquelle für die gleiche Operation, die von der zweiten Datenverarbeitungslogik auf der Grundlage des gleichen Ausgangsoperanden des gleichen Datenverarbeitungsbefehls ausgeführt wird, auszuwählen.
- Prozessor nach Anspruch 4 und nach Anspruch 11 oder 12, wobei: der eine oder die mehreren Operanden des Datenverarbeitungsbefehls mindestens einen Zieloperanden enthalten; die Speicherzugriffsschaltung ferner ausgebildet ist, Daten von einem weiteren der ersten Datenregister an der ersten Speicheradresse zu speichern und Daten von einem entsprechenden zweiten Datenregister an der zweiten Speicheradresse zu speichern; und der erste Datenverarbeitungskanal ausgebildet ist, das weitere erste Register als ein Ziel für ein Ergebnis der Operation auszuwählen, die von der ersten Datenverarbeitungslogik auf der Grundlage des Zieloperanden des Datenverarbeitungsbefehls ausgeführt wird, und der zweite Datenverarbeitungskanal ausgebildet ist, das entsprechende zweite Datenregister als Ziel für ein Ergebnis der Operation auszuwählen, die von der zweiten Datenverarbeitungslogik auf der Grundlage des gleichen Zieloperanden des gleichen Datenverarbeitungsbefehls ausgeführt wird.
- Prozessor nach einem der vorhergehenden Ansprüche, wobei: die variable Offsetadressierlogik ausgebildet ist, in Reaktion auf jeden von mehreren Speicherzugriffsbefehlen eine erste und eine zweite Speicheradresse mit einem variablen Offset dazwischen auf der Grundlage des gleichen einzelnen oder der gleichen mehreren Adressenoperanden des gleichen entsprechenden Speicherzugriffsbefehls zu erzeugen; die Speicherzugriffsschaltung ausgebildet ist, in Reaktion auf jeden der Speicherzugriffsbefehle Daten zwischen der entsprechenden ersten Speicheradresse in ein entsprechendes Register des ersten Datenverarbeitungskanals zu übertragen und Daten zwischen der entsprechenden zweiten Speicheradresse und einem entsprechenden zugeordneten Register des zweiten Datenverarbeitungskanals auf der Grundlage des gleichen entsprechenden Registerspezifizieroperanden zu übertragen; die Decodiereinheit ausgebildet ist, den gleichen Operationscode und die gleichen mehreren Ausgangsoperanden des gleichen Datenverarbeitungsbefehls dem ersten und dem zweiten Datenverarbeitungskanal zuzuleiten derart, dass die erste Datenverarbeitungslogik eine Operation, die durch diesen Operationscode spezifiziert ist, an Daten in einem Register des ersten Datenverarbeitungskanals ausführt, und, wenn die zweite Datenverarbeitungslogik aktiviert ist, diese die gleiche Operation an Daten in einem entsprechenden Register des zweiten Datenverarbeitungskanals auf der Grundlage des gleichen einen oder den gleichen mehreren Operanden des Datenverarbeitungsbefehls ausführt.
- Prozessor nach einem der vorhergehenden Ansprüche, der einen Datenausführungspfad zum Ausführen von Datenverarbeitungsbefehlen und einen separaten Steuerungsausführungspfad zum Ausführen von Steuerbefehlen umfasst, wobei der Datenausführungspfad aus dem ersten und dem zweiten oder den mehreren Verarbeitungskanälen gebildet ist.
- Prozessor nach Anspruch 15, wobei: die Decodiereinheit ausgebildet ist, eine Sequenz aus Befehlspaketen zu empfangen, wovon jedes mehrere konstituierende Befehle enthält, wobei mindestens einige der Befehlspakete jeweils ein langes Befehlswort enthalten, das aus einem Steuerbefehl und einem Datenverarbeitungsbefehl gebildet ist, und die Decodiereinheit ferner ausgebildet ist, beim Decodieren eines langen Befehlsworts den Steuerbefehl dem Steuerungspfad für die Ausführung und den Datenverarbeitungsbefehl den Datenverarbeitungskanälen des Datenverarbeitungspfads zur parallelen Ausführung in Bezug auf den Steuerbefehl zuzuleiten.
- Prozessor nach einem der vorhergehenden Ansprüche, wobei jeder der Datenverarbeitungskanäle eine Datenverarbeitungslogik in Form einer konfigurierbaren Ausführungseinheit aufweist, die konfigurierbar ist, so dass mehrere konstituierende Operationen in Reaktion auf den gleichen Operationscode ausgeführt werden.
- Prozessor nach Ansprüchen 2, 16 und 17, der derart ausgebildet ist, dass der zweite oder die mehreren Datenverarbeitungskanäle eine vierte Dimension an Parallelität orthogonal zu der Vektorverarbeitung, der Ausführung des langen Befehlswortes und der konfigurierbaren Ausführung bereitstellen.
- Prozessor nach einem der vorhergehenden Ansprüche, der mehrere zweite Datenverarbeitungskanäle parallel zu dem ersten Datenverarbeitungskanal aufweist; wobei die Steuerzugriffschaltung ausgebildet ist, Daten zwischen jedem zweiten Datenverarbeitungskanal und einer entsprechenden zweiten Speicheradresse zu übertragen; und jeder zweite Datenverarbeitungskanal die gleiche Operation an den Daten der entsprechenden zweiten Speicheradresse ausführt.
- Prozessor nach Anspruch 19, wobei die variable Offsetadressierlogik ausgebildet ist, eine erste Speicheradresse und mehrere unterschiedliche zweite Speicheradressen zu erzeugen, wovon jede für einen entsprechenden der Datenverarbeitungskanäle vorgesehen aber von einem gemeinsamen variablen Offset abgeleitet ist.
- Prozessor nach Anspruch 19, wobei die variable Offsetadressierlogik ausgebildet ist, eine erste Speicheradresse und mehrere unabhängige zweite Speicheradressen zu erzeugen, wovon jede von einem unabhängigen variablen Offset für jeden der zweiten Datenverarbeitungskanäle abgeleitet ist.
- Prozessor nach einem der Ansprüche 19 bis 21, wobei die zweiten Datenverarbeitungskanäle so ausgebildet sind, dass sie gemeinsam von einem gemeinsamen Aktivierungsbit oder Aktivierungsbits aktivierbar sind.
- Prozessor nach einem der Ansprüche 19 bis 22, wobei jeder zweite Datenverarbeitungskanal so ausgebildet ist, dass er durch ein entsprechendes Aktivierungsbit oder Aktivierungsbits unabhängig aktivierbar und deaktivierbar ist.
- Kabelloses Anwenderendgerät mit einem Prozessor gemäß einem der vorhergehenden Ansprüche, und einem Speicher, der mit der Adressierlogik verbunden ist, wobei der Speicher Daten enthält, die kabellose Signale darstellen, die von dem kabellosen Anwenderendgerät empfangen sind, und wobei die Decodiereinheit ausgebildet ist, eine Sequenz aus Befehlen für eine Signalverarbeitung an diesen Daten zu empfangen.
- Kabelloses Anwenderendgerät nach Anspruch 24, wobei die Sequenz aus Befehlen eine Trellis-Decodieroperation und/oder eine schnelle Fourier-Transformation ausführen.
- Computerprogrammprodukt mit einem Code, der auf einem nicht transienten computerlesbaren Medium eingerichtet ist und das eine Codierung enthält, die ausgebildet ist, den variablen Adressenoffset eines Prozessors gemäß einem der vorhergehenden Ansprüche zu programmieren.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1014318.8 | 2010-08-27 | ||
GB1014318.8A GB2483225B (en) | 2010-08-27 | 2010-08-27 | Improved processor architecture |
Publications (2)
Publication Number | Publication Date |
---|---|
DE102011081585A1 true DE102011081585A1 (de) | 2012-05-03 |
DE102011081585B4 DE102011081585B4 (de) | 2023-10-12 |
Family
ID=43013348
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE102011081585.6A Active DE102011081585B4 (de) | 2010-08-27 | 2011-08-25 | Prozessorarchitektur mit erhöhter Effizienz |
Country Status (4)
Country | Link |
---|---|
US (1) | US8782376B2 (de) |
CN (1) | CN102385504B (de) |
DE (1) | DE102011081585B4 (de) |
GB (1) | GB2483225B (de) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9285793B2 (en) * | 2010-10-21 | 2016-03-15 | Bluewireless Technology Limited | Data processing unit including a scalar processing unit and a heterogeneous processor unit |
CN104461460B (zh) * | 2014-11-11 | 2017-07-28 | 盛科网络(苏州)有限公司 | 同时配置多个内核寄存器的方法及装置 |
GB2543303B (en) * | 2015-10-14 | 2017-12-27 | Advanced Risc Mach Ltd | Vector data transfer instruction |
TWI584291B (zh) * | 2015-12-28 | 2017-05-21 | 群聯電子股份有限公司 | 記憶體管理方法、記憶體控制電路單元及記憶體儲存裝置 |
US20180005059A1 (en) * | 2016-07-01 | 2018-01-04 | Google Inc. | Statistics Operations On Two Dimensional Image Processor |
US10191740B2 (en) * | 2017-02-28 | 2019-01-29 | Intel Corporation | Deinterleave strided data elements processors, methods, systems, and instructions |
KR20190052315A (ko) * | 2017-11-08 | 2019-05-16 | 에스케이하이닉스 주식회사 | 메모리 장치 및 그것을 포함하는 메모리 시스템 |
CN111813446A (zh) * | 2019-04-12 | 2020-10-23 | 杭州中天微系统有限公司 | 一种数据加载和存储指令的处理方法和处理装置 |
CN111813464B (zh) * | 2020-08-31 | 2020-12-11 | 新华三半导体技术有限公司 | 一种芯片配置方法、监测模块及芯片 |
CN112307421B (zh) * | 2020-10-21 | 2023-03-31 | 电子科技大学 | 一种基4频率抽取快速傅里叶变换处理器 |
CN113571071B (zh) * | 2021-07-02 | 2023-11-14 | 湖南优象科技有限公司 | 一种音视频信号处理芯片及方法 |
CN114675890B (zh) * | 2022-05-26 | 2022-09-23 | 飞腾信息技术有限公司 | 一种指令执行方法、装置、设备及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2005096141A2 (en) | 2004-03-31 | 2005-10-13 | Icera Inc. | Apparatus and method for asymmetric dual path processing |
WO2006117562A1 (en) | 2005-05-05 | 2006-11-09 | Icera Inc | Apparatus and method for configurable processing |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5537606A (en) * | 1995-01-31 | 1996-07-16 | International Business Machines Corporation | Scalar pipeline replication for parallel vector element processing |
TW380237B (en) * | 1996-09-23 | 2000-01-21 | Advanced Risc Mach Ltd | Data processing system register control |
GB2352065B (en) * | 1999-07-14 | 2004-03-03 | Element 14 Ltd | A memory access system |
US6574724B1 (en) * | 2000-02-18 | 2003-06-03 | Texas Instruments Incorporated | Microprocessor with non-aligned scaled and unscaled addressing |
US6839828B2 (en) | 2001-08-14 | 2005-01-04 | International Business Machines Corporation | SIMD datapath coupled to scalar/vector/address/conditional data register file with selective subpath scalar processing mode |
US7216218B2 (en) * | 2004-06-02 | 2007-05-08 | Broadcom Corporation | Microprocessor with high speed memory integrated in load/store unit to efficiently perform scatter and gather operations |
US7434024B2 (en) * | 2004-08-30 | 2008-10-07 | Ati Technologies, Inc. | SIMD processor with register addressing, buffer stall and methods |
US7493475B2 (en) * | 2006-11-15 | 2009-02-17 | Stmicroelectronics, Inc. | Instruction vector-mode processing in multi-lane processor by multiplex switch replicating instruction in one lane to select others along with updated operand address |
-
2010
- 2010-08-27 GB GB1014318.8A patent/GB2483225B/en active Active
-
2011
- 2011-08-25 DE DE102011081585.6A patent/DE102011081585B4/de active Active
- 2011-08-26 US US13/219,321 patent/US8782376B2/en active Active
- 2011-08-29 CN CN201110250431.XA patent/CN102385504B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2005096141A2 (en) | 2004-03-31 | 2005-10-13 | Icera Inc. | Apparatus and method for asymmetric dual path processing |
WO2006117562A1 (en) | 2005-05-05 | 2006-11-09 | Icera Inc | Apparatus and method for configurable processing |
Also Published As
Publication number | Publication date |
---|---|
DE102011081585B4 (de) | 2023-10-12 |
GB201014318D0 (en) | 2010-10-13 |
GB2483225A (en) | 2012-03-07 |
CN102385504A (zh) | 2012-03-21 |
GB2483225B (en) | 2018-07-11 |
US20120221834A1 (en) | 2012-08-30 |
US8782376B2 (en) | 2014-07-15 |
CN102385504B (zh) | 2016-01-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE102011081585B4 (de) | Prozessorarchitektur mit erhöhter Effizienz | |
DE69933088T2 (de) | Vliw-verarbeiter verarbeitet befehle von verschiedenen breiten | |
DE60018078T2 (de) | Einstellung von bedingungswerten in einem rechner | |
DE2755273C2 (de) | ||
DE60115982T2 (de) | Verfahren und Vorrichtung zum Zuordnen funktioneller Einheiten in einem Mehrfachthread-VLIM-Prozessor | |
DE3638572C2 (de) | ||
DE102015112202A1 (de) | Kombinieren von Pfaden | |
DE2542751C2 (de) | Datenverarbeitungsanlage | |
DE69835425T2 (de) | Verbesserter befehlszuteilungsmechanismus für eine geschützte vliw-architektur | |
DE102013200029A1 (de) | Bereitstellen leistungsangepasster versionen kompilierten codes für eine cpu in einem system heterogener kerne | |
DE102015111333A1 (de) | Betreiben eines 32-bit betriebssystems auf einer 64-bit maschine | |
DE3248215A1 (de) | Vektorprozessor | |
DE4342250A1 (de) | Rechnerarchitektur und Verfahren zum Betreiben eines Parallelrechners | |
DE2357003A1 (de) | Programmierbarer prozessor | |
DE19506990A1 (de) | Einrichtung zur Datenumleitung in einem Prozessor mit mehreren Ausführungseinheiten | |
DE112013004770T5 (de) | Lese- und -Schreibmaskenaktualisierungsbefehl zur Vektorisierung rekursiver Berechnungen über unabhängige Daten | |
EP1116128A2 (de) | Verfahren zum konfigurieren eines konfigurierbaren hardware-blocks | |
EP1599794B1 (de) | Prozessor mit verschiedenartigen steuerwerken für gemeinsam genutzte ressourcen | |
DE4430195B4 (de) | Verfahren zur Auswertung von Booleschen Ausdrücken | |
DE112004001040B4 (de) | Verfahren und Datenprozessor mit reduzierter Operationsunterbrechung auf Grund von Operanden-Abhängigkeiten | |
DE2536622A1 (de) | Mikroprogrammsteuerung mit flexibler auswahl von steuerworten | |
DE102015109969A1 (de) | Replizieren von Logikblöcken zum Ermöglichen eines erhöhten Durchsatzes | |
DE112020005055T5 (de) | Prozessoreinheit für multiplizier- und akkumulieroperationen | |
DE102020131154A1 (de) | Gefährdungsabschwächung für leichte Prozessorkerne | |
DE102004009610A1 (de) | Heterogener paralleler Multithread-Prozessor (HPMT) mit geteilten Kontexten |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
R012 | Request for examination validly filed | ||
R016 | Response to examination communication | ||
R081 | Change of applicant/patentee |
Owner name: NVIDIA TECHNOLOGY UK LIMITED, GB Free format text: FORMER OWNER: ICERA INC., NEW CASTLE, DEL., US Effective date: 20130321 Owner name: NVIDIA TECHNOLOGY UK LIMITED, GB Free format text: FORMER OWNER: ICERA INC., NEW CASTLE, US Effective date: 20130321 |
|
R082 | Change of representative |
Representative=s name: KRAUS & WEISERT PATENTANWAELTE PARTGMBB, DE Effective date: 20130321 Representative=s name: DILG HAEUSLER SCHINDELMANN PATENTANWALTSGESELL, DE Effective date: 20130321 |
|
R082 | Change of representative |
Representative=s name: KRAUS & WEISERT PATENTANWAELTE PARTGMBB, DE |
|
R016 | Response to examination communication | ||
R018 | Grant decision by examination section/examining division |