DE102011081585A1 - Prozessorarchitektur mit erhöhter Effizienz - Google Patents

Prozessorarchitektur mit erhöhter Effizienz Download PDF

Info

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
Application number
DE102011081585A
Other languages
English (en)
Other versions
DE102011081585B4 (de
Inventor
Simon Knowles
Edward Andrews
Stephen Felix
Simon Huckett
Colman Hegarty
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nvidia Technology UK Ltd
Original Assignee
Icera LLC
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 Icera LLC filed Critical Icera LLC
Publication of DE102011081585A1 publication Critical patent/DE102011081585A1/de
Application granted granted Critical
Publication of DE102011081585B4 publication Critical patent/DE102011081585B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8053Vector processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8053Vector processors
    • G06F15/8092Array of vector units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30163Decoding the operand specifier, e.g. specifier format with implied specifier, e.g. top of stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30185Instruction operation extension or modification according to one or more bits in the instruction, e.g. prefix, sub-opcode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/345Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent 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

Ein Prozessor umfasst: einen ersten und mindestens einen zweiten Datenverarbeitungskanal mit einer Aktivierungslogik zum selektiven Aktivieren des zweiten Kanals; eine Logik zum Erzeugen einer ersten und einer zweiten Speicheradresse mit einem variablen Offset dazwischen auf der Grundlage eines gleichen einzelnen oder gleicher mehrerer Adressenoperanden des gleichen Speicherzugriffsbefehls; und eine Schaltung zum Übertragen von Daten zwischen der ersten Adresse und einem Register des ersten Datenverarbeitungskanals und zwischen der zweiten Adresse und einem entsprechenden Register des zweiten Kanals auf der Grundlage eines gleichen einzelnen oder gleicher mehrerer Registerspezifizieroperanden des Zugriffsbefehls. Der erste Datenverarbeitungskanal führt eine Operation unter Anwendung eines oder mehrerer Register des ersten Datenverarbeitungskanals aus, und wenn der zweite Kanal aktiviert ist, führt dieser die gleiche Operation aus unter Anwendung eines oder mehrerer entsprechender Register seiner eigenen Register auf der Grundlage des einen gleichen oder den mehreren gleichen Operanden des Datenverarbeitungsbefehls.

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 Steuereinheit 2, die für das Verarbeiten der Steuerungscodierung bzw. des Steuerungscodes vorgesehen ist, und einen Datenverarbeitungspfad in Form einer Datenverarbeitungseinheit 4, 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öffentlichungsnummer WO 2005/096141 beschrieben.
  • In dem dargestellten Prozessor ist die Steuereinheit 2 mit einem Befehlsspeicher 6 verbunden, der auf dem gleichen Chip wie der Prozessor integriert sein kann oder der alternativ außerhalb des Chips vorgesehen ist. Die Steuereinheit 2 sowie auch die Datenverarbeitungseinheit 4 sind mit einem Datenspeicher 8 verbunden, der wiederum auf dem gleichen Chip wie der Prozessor integriert sein kann oder der alternativ außerhalb des Chips angeordnet ist. Die Steuereinheit 2 und umfasst einen Satz bzw. eine Gruppe aus Steuerregistern 10, einen Befehlsdecodierer 12 und eine Adressenerzeugungseinheit 14. 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 Datenverarbeitungseinheit 4 umfasst eine Gruppe aus Datenregistern 16 und eine Datenverarbeitungslogik 18. Eine Gruppe bzw. ein Satz aus Registern wird manchmal auch als Registerdatei bezeichnet. Der Befehlsdecodierer 12 ist mit den Datenregistern 16 und der Datenverarbeitungslogik 18 sowie auch mit dem Befehlsspeicher 6 über eine Abholschaltung (nicht gezeigt) verbunden. Der Befehlsdecodierer 12 ist ferner mit der internen Logik der Steuereinheit 2 verbunden, wozu auch die Verbindung mit den Steuerregistern 10 und der Adressenerzeugungseinheit 14 gehört. Die Adressenerzeugungseinheit 14 sowie die Gruppe aus Steuerregistern 10 sind jeweils mit dem Datenspeicher 8 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 Befehlsdecodierer 12. Der Befehlsdecodierer 12 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 Datenverarbeitungseinheit 4 zum Ausführen weitergeleitet werden; und
    • (iii) Speicherzugriffsbefehle (Ladebefehle und Speicherbefehle bzw. Schreibbefehle), für die die Steuereinheit 2 Speicheradressen des Datenspeichers 8 berechnet, wobei die entsprechenden Speicherdaten dann zu oder von jeweils den Steuerregistern 10 oder den Datenregistern 16 ü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 Datenverarbeitungseinheit 4 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 Steuereinheit 2 und die Datenverarbeitungseinheit 4 einwirken können.
  • Wie schematisch in den 2a und 2b gezeigt ist, umfasst jeder Befehl einen Operationscode bzw. Op-Code 28 und einen oder mehrere zugehörige Operanden 30 (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 Befehlsdecodierer 12 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 Befehlsdecodierer 12 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 Steuerregister 10 oder Datenregister 16 mittels eines oder mehreren Ladebefehlen (eine Art von Speicherzugriffsbefehl) eingeladen. Ein Ladebefehl 24 ist schematisch in 2a gezeigt. Er enthält einen Operationscode 28, der, wenn er decodiert ist, eine Ladeoperation und zwei Operandenfelder 30 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 Adressenerzeugungseinheit 14. 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 Steuereinheit 2. Die Adressenerzeugungseinheit 14 berechnet die relevante Speicheradresse aus dem einen oder mehreren Ausgangsoperanden und bewirkt, dass die Daten aus dieser Adresse des Speichers 8 in eines der Steuerregister 10 geladen werden, das durch den Zieloperanden spezifiziert ist. Wenn ein Ladevorgang in die Datenregister 16 stattfindet, wirken die Ladebefehle sowohl auf die Steuereinheit 2 als auch auf die Datenverarbeitungseinheit 4. Die Adressenerzeugungseinheit 14 berechnet die relevante Speicheradresse aus dem einen oder den mehreren Ausgangsoperanden und bewirkt, dass Daten aus dieser Adresse des Speichers 8 in eines der Datenregister 16 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 oder 16 eingeladen sind, können sodann Operationen unter Anwendung des Inhalts dieser Register ausgeführt werden. Wenn der Befehlsdecodierer 12 einen Steuerbefehl antrifft, dann wird der Befehl auf dem Steuerungspfad gehalten, indem dieser Befehl intern in der Steuereinheit 2 unter Anwendung der der Steuereinheit innewohnenden internen Logik durch Verwendung von Werten in den Steuerregistern 10 ausgeführt wird. Wenn andererseits der Befehlsdecodierer 12 einen Datenverarbeitungsbefehl antrifft, wird dieser von dem Befehlsdecodierer 12 auf den Datenverarbeitungspfad geleitet, indem der decodierte Operationscode der Datenverarbeitungslogik 18 der Datenverarbeitungseinheit 4 zugeführt wird und indem der decodierte Operand oder die Operanden in Form einer oder mehrerer Operandenregisteradressen der Gruppe aus Datenregistern 16 zugeleitet werden. Alternativ können ein oder mehrere der Operanden 30 unmittelbare (tatsächliche) Werte sein. Ein Datenverarbeitungsbefehl 26 ist schematisch in 2b 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 Datenregistersatzes 16 abgelegt.
  • Das Ergebnis einer Datenverarbeitungsoperation kann von dem Ziel innerhalb des Datenregistersatzes 16 in den Datenspeicher 8 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 Registern 16 und/oder dem Datenspeicher 8 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 Steuereinheit 2 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 Operationscode 28 und einen zugehörigen Operanden oder mehrere Operanden 30 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 Befehlswort 34 (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 Steuerbefehl 32 und einen Datenverarbeitungsbefehl 26 enthält, dann leitet der Befehlsdecodierer 12 diese parallel der Steuereinheit 2 und der Datenverarbeitungseinheit 4 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 Gruppe 16 einen Vektor enthalten, der mehrere konstituierende Datenelemente aufweist. Die Datenverarbeitungslogik 18 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 Gruppe 16 einladen, und eine einzelne Datenverarbeitungsoperation (mit einem einzelnen Operationscode) kann die Datenverarbeitungslogik 18 veranlassen, die gleiche Operation im Wesentlichen gleichzeitig an jedem Element des eingeladenen Vektors auszuführen. Wie beispielsweise schematisch in 2d 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 auf WO 2005/096141 verwiesen).
  • 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 in 3 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 Datenverarbeitungseinheit 4a (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 Datenspeichers 8 implementiert ist;
    • (c) ein (Multi-Bit) Adressenoffsetregister 22, das durch Steuerbefehle programmiert werden kann, und einen Addierer 20, der die zweite Adresse (Adresse1) erzeugt durch Addieren des Adressenoffsets zu der ursprünglichen Adresse (Adresse 0), die von der Adressenerzeugungseinheit 14 berechnet wird; und
    • (d) ein (Bool'sches) Aktivierungsregister 24, das durch Steuerbefehle programmiert werden kann und das die zweite Datenverarbeitungseinheit 4b (DPU1) veranlassen kann, auf die Registeradresse(n) und den Operationscode, die mit der ersten Datenverarbeitungseinheit 4a (DPU0) gemeinsam verwendet werden, zu reagieren. Vorzugsweise sollt das Aktivierungsregister 24 auch den zweiten Speicheranschluss und den Adressenoffsetaddierer 20 steuern, so dass diese keine Energie verschwenden, wenn die zweite Datenverarbeitungseinheit 4b (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 Steuereinheit 2; und einen verbesserten Datenverarbeitungspfad mit doppeltem Kanal oder dualem Kanal mit einem ersten Datenverarbeitungskanal in Form einer ersten konstituierenden Datenverarbeitungseinheit 4a (DPU0), und einen zweiten parallelen Datenverarbeitungskanal in Form einer zweiten konstituierenden Datenverarbeitungseinheit 4b (DPU1). Die erste Datenverarbeitungseinheit DPU0 umfasst die erste Datenverarbeitungslogik 18a, die mit einer entsprechenden dazugehörigen ersten Gruppe aus Datenregistern 16a verbunden ist; und die zweite Datenverarbeitungseinheit DPU1 umfasst eine zweite parallele Datenverarbeitungslogik 18b, die mit einer entsprechenden zugehörigen zweiten Gruppe aus Datenregistern 16b 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 Befehlsdecodierer 12 der Steuereinheit 2 mit der ersten Gruppe aus Datenregistern 16a der ersten Datenverarbeitungseinheit DPU0 und mit der zweiten Gruppe aus Datenregistern 16b 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 Befehlsdecodierer 12 ist ferner mit der ersten Datenverarbeitungslogik 18a der ersten Datenverarbeitungseinheit DPU0 und der zweiten Datenverarbeitungslogik 18b 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 Addierer 20. Das Adressenoffsetregister besitzt einen Eingang, der mit der Steuereinheit 2 verbunden ist und ein Ausgang, der mit einem Eingang des Addierers 20 verbunden ist. Der andere Eingang des Addierers 20 ist mit dem Ausgang der Adressenerzeugungseinheit verbunden.
  • Gemäß 4 umfasst der Ausgang des Datenspeichers 8 in der dargestellten Ausführungsform der vorliegenden Erfindung eine Speicherbank 17 (d. h. das eigentliche Array aus Speicherzellen, in denen Daten gespeichert sind); und zwei Speicheranschlüsse, einen ersten Speicheranschluss 19a und einen zweiten Speicheranschluss 19b, die mit der Speicherbank 17 verbunden sind. Der erste Speicheranschluss 19a ist mit dem Ausgang der Adressenerzeugungseinheit 14 und der ersten Gruppe der Datenregister 16a in der ersten Datenverarbeitungseinheit DPU0 verbunden, und der zweite Speicheranschluss 19b ist mit dem Ausgang des Addierers 20 und der zweiten Gruppe der Datenregister 16b 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 Datenspeichers 8 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 Speicheranschluss 19a aber auch zu dem Addierer 20. Der Addierer 20 erzeugt eine zweite Adresse (Adresse1) durch Addieren eines Offsetwertes, der in dem Adressenoffsetregister 22 gespeichert ist, zu der ersten Adresse (Adresse0) und leitet die zweite Adresse dem zweiten Speicheranschluss 19b zu. In Reaktion darauf ruft der erste Speicheranschluss 19a Daten aus der ersten Adresse innerhalb der Speicherbank 17 des Datenspeichers 8 ab und lädt diese Daten in das spezifizierte Register der ersten Datenregistergruppe 16a, während der zweite Speicheranschluss 19b Daten aus der ersetzten zweiten Adresse innerhalb der Speicherbank 17b abruft und diese Daten in das spezifizierte Register der zweiten Datenregistergruppen 16b lädt (wobei dieses das Register ist, das die gleiche Registeradresse innerhalb der zweiten Gruppe 16b wie das erste spezifizierte Register innerhalb der ersten Gruppe 16a 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 Addierer 20 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 Datenregister 16b geladen sind. Das Einladen aus den Offsetadressen des Speichers 8 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 Offsetregister 22 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 Steuereinheit 2 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 den 3 und 4 erläutert ist. Wenn das Aktivierungsbit nicht gesetzt ist (nicht aktiviert ist), dann arbeitet die erste Datenverarbeitungseinheit DPU0 alleine, wie dies zuvor im Bezug zu 1 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 Steuereinheit 2 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 Aktivierungsregister 24 gesetzt ist, ein erstes Gebiet des Speichers 17a verwendet, um Daten für die Verarbeitung in der ersten Datenverarbeitungseinheit DPU0 bereitzustellen, und ein zweites Gebiet des Speichers 17b wird verwendet, um Daten für die Verarbeitung in der zweiten Datenverarbeitungseinheit DPU1 bereitzustellen, wobei das zweite Gebiet 17b im Adressenraum von dem ersten Gebiet 17a entsprechend einem programmierbaren Wert verschoben ist, der in dem Adressenoffsetregister 22 gespeichert ist. In einem Einzelkanalmodus ist andererseits, wenn das Aktivierungsbit in dem Aktivierungsregister 24 deaktiviert ist, potentiell jedes Gebiet des Speichers minus dem zweiten Gebiet 17b 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 mit 2d beschrieben ist. In derartigen Ausführungsformen der vorliegenden Erfindung verbleibt der Steuerbefehl 33 in dem Steuerungspfad 2, aber der Datenverarbeitungsbefehl 26 wird entlang den Datenverarbeitungspfaden 4a, 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 Speichers 8: ein erster Vektor aus der ersten Speicheradresse (Adresse0) wird in eines aus der ersten Gruppe aus Datenregistern 16 eingeladen, und ein zweiter Vektor wird aus der zweiten mit Offset versehenen Speicheradresse (Adresse1) in eines der zweiten Gruppe aus Datenregistern 16b 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 beschrieben ist. Dies kann so aufgefasst werden, dass eine weitere orthogonale Dimension an Parallelität in dem Sinne hinzugefügt wird, dass mehrere unterschiedliche Arten an konstituierenden Datenverarbeitungsoperatoreinheiten (beispielsweise eine Multipliziereinheit, eine Alu-Einheit, eine Schiebe/Vertauschungseinheit) so konfiguriert werden, dass diese konsekutiv auf den Daten operieren, die von einem einzelnen Befehl ausgegeben werden, bevor das Ergebnis in das Zielregister zurückgegeben wird. Somit kann eine größere komplexere Operation, etwa eine Operation mit finiter Impulsantwort (FIR) so aufbereitet werden, dass sie von einem einzelnen Befehl ausgelöst wird. Die FIR-Operation umfasst zugehörige Operationen aus möglicherweise vielen kaskadierten Multiplikationen und Additionen. Zu anderen Beispielen einer „tiefen” Operation gehört etwa eine schnelle Fourier-Transformation (FRT), eine Codierungs- oder Decodierungsoperation auf Basis von Trellis (beispielsweise Viterbi oder Turbo), oder eine Korrelation.
  • 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 Adressenoffsetregister 22 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)

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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.
  6. 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.
  7. 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.
  8. 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.
  9. 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.
  10. 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.
  11. 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.
  12. 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.
  13. 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.
  14. 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.
  15. 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.
  16. 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.
  17. 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.
  18. 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.
  19. 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.
  20. 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.
  21. 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.
  22. 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.
  23. 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.
  24. 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.
  25. Kabelloses Anwenderendgerät nach Anspruch 24, wobei die Sequenz aus Befehlen eine Trellis-Decodieroperation und/oder eine schnelle Fourier-Transformation ausführen.
  26. 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.
DE102011081585.6A 2010-08-27 2011-08-25 Prozessorarchitektur mit erhöhter Effizienz Active DE102011081585B4 (de)

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)

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

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

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

Patent Citations (2)

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