DE69838028T2 - Linearvektorrechnung - Google Patents

Linearvektorrechnung Download PDF

Info

Publication number
DE69838028T2
DE69838028T2 DE69838028T DE69838028T DE69838028T2 DE 69838028 T2 DE69838028 T2 DE 69838028T2 DE 69838028 T DE69838028 T DE 69838028T DE 69838028 T DE69838028 T DE 69838028T DE 69838028 T2 DE69838028 T2 DE 69838028T2
Authority
DE
Germany
Prior art keywords
bit
register
coefficient
address
unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE69838028T
Other languages
English (en)
Other versions
DE69838028D1 (de
Inventor
Karim Djafarian
Gilbert Laurenti
Gael Clave
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.)
Texas Instruments Inc
Original Assignee
Texas Instruments Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Texas Instruments Inc filed Critical Texas Instruments Inc
Application granted granted Critical
Publication of DE69838028D1 publication Critical patent/DE69838028D1/de
Publication of DE69838028T2 publication Critical patent/DE69838028T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/01Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/607Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers number-of-ones counters, i.e. devices for counting the number of input lines set to ONE among a plurality of input lines, also called bit counters or parallel counters
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/74Selecting or encoding within a word the position of one or more bits having a specified value, e.g. most or least significant one or zero detection, priority encoders
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/76Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data
    • G06F7/762Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data having at least two separately controlled rearrangement levels, e.g. multistage interconnection networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/76Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data
    • G06F7/764Masking
    • 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/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • 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/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30018Bit or string instructions
    • 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/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • 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/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • 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
    • 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/30149Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/321Program or instruction counter, e.g. incrementing
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/325Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop counter
    • 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/355Indexed addressing
    • G06F9/3552Indexed addressing using wraparound, e.g. modulo or circular addressing
    • 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 or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • 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 or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • 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 or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming
    • 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 or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
    • 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 or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • 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 or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • G06F9/3879Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set
    • 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 or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or 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 or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
    • G06F9/3891Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute organised in groups of units sharing resources, e.g. clusters

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Physics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Complex Calculations (AREA)
  • Executing Machine-Instructions (AREA)
  • Image Processing (AREA)

Description

  • HINTERGRUND DER ERFINDUNG
  • Die vorliegende Erfindung bezieht sich auf die Berechnung linearer Vektoren in einem digitalen Verarbeitungssystem.
  • Insbesondere bezieht sich die Erfindung auf die Berechnung irgendeines Vektors Y →, der als eine Linearkombination von N Vektoren (XX →i)1≤i≤N mit N Koef fizienten (Ci)1≤i≤N ∊ {–1; + 1} definiert ist:
    Figure 00010001
  • Einige Signalverarbeitungsanwendungen, z. B. Verarbeitungsoperationen für einen GSM-Vocoder (Global System for Mobiles-Vocoder) mit halber Rate, müssen eine algorithmische abhängige Verarbeitung von (Ci)1≤i≤N Koeffizienten bewirken. Beispiele solcher Verarbeitungsoperationen sind:
    die zirkuläre Permutation der Koeffizienten; und
    die Komplementbildung des Werts eines Koeffizienten.
  • Eine typische Implementierung eines digitalen Signalprozessors (DSP) wird wie folgt ausgeführt:
    Zunächst werden die (Ci)1≤i≤N Koeffizienten aus einer Bitdarstellung (0, 1) in gebrochene Zahlen (1/2, –1/2) umgewandelt, die in mehreren Bits (16, 32, ...) codiert sind. Daraufhin wird mit einem N-Schritt-Algorithmus jede Y →-Vektor-Koordinate (Yj)1≤j≤M berechnet. Die Berechnung wird mit einer Multiplikations- und Akkumulationseinheit ausgeführt, wie sie durch die folgende Gleichung dargestellt ist:
    Figure 00010002
    wobei (Xij)1≤j≤M die Koordinaten des Vektors X →i sind.
  • Es wird angemerkt, dass für jeden Schritt der Berechnung zwei Speicheroperanden (Ci, Xij) und eine Multiplikationsoperation erforderlich sind. Die Koeffizientenadressierung wird nach Bedarf unter Verwendung einer Adressenerzeu gungseinheit mit indirekter Speicheradressierung, z. B. mit zirkulärer Adressierung mit Nachmodifikation, ausgeführt.
  • Die Nachteile dieses bekannten Zugangs sind, dass eine große Anzahl von Speicheradressierungsoperationen und Operandenholoperationen erforderlich sind. Dies verringert die Verfügbarkeit der Busse und erfordert einen hohen Leistungsverbrauch zum Ansteuern aller Busoperationen. Die Verwendung einer Multiplikationsoperation erfordert ebenfalls einen hohen Leistungsverbrauch.
  • Im modernen Verarbeitungsmaschinenentwurf ist es sowohl aus ökologischen als auch aus wirtschaftlichen Gründen wünschenswert, den Leistungsverbrauch zu verringern. Insbesondere, aber nicht ausschließlich, in mobilen Verarbeitungsanwendungen, z. B. in Mobiltelekommunikationsanwendungen, ist es erwünscht, den Leistungsverbrauch so niedrig wie möglich zu halten, ohne mehr Leistungsfähigkeit als notwendig zu opfern.
  • Ein Dokument von Shah, I. A., und Bhattacharya, A. K., mit dem Titel "A fast multiplierless architecture for general purpose VLSI FIR digital filters", veröffentlicht in IEEE Transactions an Consumer Electronics, August 1987, Bd. CE-33, Nr. 3, S. 129-135, beschreibt einen multiplikatorlosen Algorithmus zum Berechnen der Faltung eines digitalen Filters mit endlicher Impulsantwort (FIR). Der Algorithmus beruht auf dem teilweisen Abschneiden von Eingangsdaten-Vektorwörtern und auf der Ausführung der Faltung auf verteilte Weise.
  • Ein Dokument von Zohar, S., mit dem Titel "New hardware realizations of nonrecursive digital filters", veröffentlicht in IEEE Transactions an Computers, April 1973, Bd. C22, Nr. 4, S 328-338, beschreibt die Analyse von Operationen auf der Bitebene, die an einer Faltung beteiligt sind, die ein nicht rekursives digitales Filter realisiert. Es sind zwei verschiedene Entwürfe dargestellt. Die Grundentwürfe nutzen für die Daten und für die Filterkoeffizienten eine Festkommadarstellung. Varianten, die eine Gleitkommadarstellung der Koeffizienten zulassen, sind ebenfalls beschrieben.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • In den beigefügten unabhängigen und abhängigen Ansprüchen sind besondere und bevorzugte Aspekte der Erfindung dargelegt. Kombinationen von Merkmalen aus den abhängigen Ansprüchen können nach Bedarf mit Merkmalen der unabhängigen Ansprüche und nicht lediglich wie explizit in den Ansprüchen dargelegt kombiniert werden.
  • Gemäß einer Ausführungsform der Erfindung kann eine Verarbeitungsmaschine für die Berechnung eines Ausgangsvektors als Linearkombination von N Eingangsvektoren mit N Koeffizienten geschaffen werden. Die Verarbeitungsmaschine kann ein Koeffizientenregister zum Halten einer Darstellung von N Koeffizienten für einen ersten Eingangsvektor umfassen. Zum Testen ausgewählter Teile des Koeffizientenregisters für jeweilige Koeffizientendarstellungen kann eine Testeinheit vorgesehen sein. Zum Berechnen jeweiliger Koordinaten eines Ausgangsvektors durch wahlweise Addition und/oder Subtraktion von Eingangsvektor-Koordinaten für einen zweiten Eingangsvektor je nach den Ergebnissen der Tests an den Koeffizientendarstellungen kann eine Arithmetikeinheit vorgesehen sein.
  • Eine Ausführungsform der Erfindung kann hinsichtlich der Berechnung einer Kombination linearer Vektoren ermöglichen, in Bezug auf den Stand der Technik eine Anzahl von Vorteilen zu erzielen.
  • Da eher ein Testbefehl (z. B. ein Bittestbefehl) in Kombination mit einem ALU-Befehl als ein MAC-Befehl verwendet wird, kann der Leistungsverbrauch in Bezug auf eine Verarbeitungsmaschine, die in Übereinstimmung mit der wie in der Einleitung beschriebenen früheren Technik arbeitet, verringert sein. Außerdem kann pro Schritt der Berechnung eher als zwei Datenspeicherzugriffe nur ein Datenspeicherzugriff erforderlich sein.
  • Da es keine Prozessorblockierungen wegen Speicherbetriebsmittel-Zugriffskonflikten gibt, ist die Ausführungsleistungsfähigkeit umfassend äquivalent zu der einer Verarbeitungsmaschine, die in Übereinstimmung mit der in der Einleitung beschriebenen früheren Technik arbeitet. Außerdem kann durch Bereitstellung einer parallelen Ausführung bei Bedarf ein minimaler Organisationsaufwand eines Zyklus verborgen sein.
  • Dadurch, dass zum Erzeugen von Speicheradressen und Bitadressen in CPU-Registern eine Adressenerzeugungseinheit verwendet werden kann, wird eine flexible Adressierung geschaffen.
  • Der Hardwareorganisationsaufwand ist minimal.
  • In einer Ausführungsform der Erfindung:
    werden (Ci)1≤i≤N Koeffizienten, die als Bits (0, 1) dargestellt sind, für einen ersten Eingangsvektor in ein CPU-Register gepackt.
  • Jede Koordinate eines Ausgangsvektors Y → wird mit einem N + 1-Schritt-Algorithmus berechnet.
  • Die Berechnung erfolgt mit einer Bittesteinheit, die parallel zu einer ALU-Einheit arbeitet:
    Figure 00040001
  • In Schritt (i + 1)1≤i≤N der Berechnung:
    wird das Bit Ci+1 des CPU-Registers adressiert;
    wird das getestete Bit in einem temporären Register gespeichert;
    wird auf der Grundlage des getesteten Bits eine bedingte Addition/Subtraktion einer Koordinate des zweiten Eingangsvektors Xij ausgeführt.
  • Es kann ein Teststatusregister für die Speicherung eines Koeffiziententestergebnisses vor der wahlweisen Addition/Subtraktion einer Koordinate des zweiten Eingangsvektors je nach dem Koeffiziententestergebnis vorgesehen sein.
  • Es kann ein Adressengenerator zum Erzeugen einer Registerbitzeigeradresse zum Auswählen eines Teils (z. B. einer Binärstelle oder eines Binärfelds) des Koeffizientenregisters, der eine geeignete Koeffizientendarstellung (z. B. eines oder mehr Bits) zum Testen durch die Testeinheit hält, vorgesehen sein. Derselbe oder ein anderer Adressengenerator kann ebenfalls eine Speicheradresse zum Wiedergewinnen einer Koordinate für den zweiten Eingangsvektor erzeugen. Wo dieselbe Datenadressenerzeugungshardware verwendet wird, führt dies zur wirtschaftlichen Verwendung von Silicium und außerdem zur Wirtschaftlichkeit des Leistungsverbrauchs in der Verwendung. Das Koeffizientenregister kann mehr als N Bits enthalten. Die zirkuläre Bitadressierung mit Nachmodifikation kann verwendet werden, um eine effiziente Verwendung des Registers sicherzustellen, die die Koeffizienten in einer Umschling- oder Moduloweise modifiziert.
  • Für jeden Schritt der Berechnung kann ein Speicheroperand geholt werden und wird eine Koeffizientendarstellung (z. B. ein Bit) getestet. Die Testeinheit kann eine Bittesteinheit sein.
  • In einem Beispiel der Erfindung ist die Bittesteinheit in einem Schritt i + 1 einer Berechnung einer Koordinate Y →j eines Vektors Y → zum Testen eines Koeffizienten Ci+1 betreibbar und ist eine Arithmetikeinheit parallel dazu zum Ausführen einer bedingten Addition/Subtraktion eines Operanden Xij je nach dem Ergebnis eines Tests an einem Bit Ci eines Koeffizientenregisters, der in einem Schritt i der Berechnung ausgeführt wird, betreibbar.
  • Somit kann die Berechnung einer Ausgangsvektor-Koordinate als eine Reihe von N + 1 Schritten ausgeführt werden.
  • Die Verarbeitungsmaschine kann die Form eines digitalen Signalprozessors haben und kann in eine integrierte Schaltung integriert sein.
  • Gemäß einer Ausführungsform der Erfindung kann eine Telekommunikationsvorrichtung geschaffen werden, die eine Dateneingabevorrichtung, eine Anzeige, eine Antenne und eine wie oben definierte Verarbeitungsmaschine umfasst.
  • In Übereinstimmung mit einer Ausführungsform der Erfindung kann ein Verfahren zum Berechnen eines Ausgangsvektors als eine Linearkombination von Eingangsvektoren mit N Koeffizienten in einer Verarbeitungsmaschine geschaffen werden. Das Verfahren kann umfassen:
    Halten einer Darstellung jedes von N Koeffizienten eines ersten Eingangsvektors in einem Koeffizientenregister;
    wahlweises Testen jeweiliger Koeffizientendarstellungen des ersten Eingangsvektors; und
    Berechnen von Koordinaten eines Ausgangsvektors durch wahlweise Addition und/oder Subtraktion von Koordinaten eines zweiten Vektors je nach den Ergebnissen der Tests der Koeffizientendarstellungen für den ersten Eingangsvektor.
  • In einer Ausführungsform der Erfindung wird die Berechnung einer Koordinate eines Ausgangsvektors Y → als eine Reihe von N + 1 Schritten ausgeführt, wobei in einem Schritt (i + 1)1≤i≤N der Berechnung:
    ein Bit Ci+1, das einen Koeffizienten des ersten Eingangsvektors darstellt, in dem Koeffizientenregister zum Testen dieses Bits adressiert wird;
    ein getestetes Bit in einem Bittestergebnisregister gespeichert wird; und
    je nach einem Bit, das im Ergebnis eines Tests an einem Bit Ci des Koeffizientenregisters, der in einem Schritt i der Berechnung ausgeführt worden ist, in dem Bittestregister gespeichert worden ist, eine bedingte Addition oder eine bedingte Subtraktion einer Koordinate Xij eines zweiten Eingangsvektors ausgeführt wird.
  • Es wird angemerkt, dass für jeden Schritt der Berechnung nur ein Speicheroperand (Xij) erforderlich ist. Die Koeffizientenadressierung kann durch eine Adressenerzeugungseinheit erfolgen, wobei irgendeine indirekte Registerbitadressierung (z. B. zirkulär nach Änderung) verwendet wird.
  • KURZBESCHREIBUNG DER ZEICHNUNG
  • Es werden nun besondere Ausführungsformen in Übereinstimmung mit der Erfindung lediglich beispielhaft anhand der beigefügten Zeichnung beschrieben, in der zur Bezeichnung gleicher Teile, sofern nichts anderes angegeben ist, gleiche Bezugszeichen verwendet sind und in der:
  • 1 ein schematischer Blockschaltplan eines Prozessors in Übereinstimmung mit einer Ausführungsform der Erfindung ist;
  • 2 ein schematisches Diagramm eines Kerns des Prozessors aus 1 ist;
  • 3 ein ausführlicherer schematischer Blockschaltplan verschiedener Ausführungseinheiten des Kerns des Prozessors aus 1 ist;
  • 4 ein schematisches Diagramm einer Befehlspufferwarteschlange und einer Befehlsdecodierer-Steuereinheit des Prozessors aus 1 ist;
  • 5 eine Darstellung von Pipeline-Stufen des Prozessors aus 1 ist;
  • 6 eine schematische Darstellung eines Beispiels des Betriebs einer Pipeline in dem Prozessor aus 1 ist;
  • 7 eine schematische Darstellung des Kerns des Prozessors zur Erläuterung des Betriebs der Pipeline des Prozessors aus 1 ist;
  • 8 eine schematische Darstellung eines Bittestbefehls ist;
  • 9 eine herkömmliche Darstellung einer Linearkombination von Vektoren ist;
  • 10 eine alternative Darstellung der Linearkombination von Vektoren ist, wie sie in Übereinstimmung mit einer Ausführungsform der Erfindung ausgeführt wird;
  • 11 eine schematische Übersicht über die Elemente des Prozessors aus 1 ist;
  • 12 ein schematisches Diagramm ist, das die Folge von Schritten in einem Berechnungsverfahren eines linearen Vektors gemäß der Erfindung veranschaulicht;
  • 13 eine schematische Darstellung einer integrierten Schaltung ist, die den Prozessor aus 1 enthält; und
  • 14 eine schematische Darstellung einer Telekommunikationsvorrichtung ist, die den Prozessor aus 1 enthält.
  • BESCHREIBUNG BESONDERER AUSFÜHRUNGSFORMEN
  • Obgleich die Erfindung besondere Anwendung auf digitale Signalprozessoren (DSPs) findet, die z. B. in einer anwendungsspezifischen integrierten Schaltung (ASIC) implementiert sind, findet sie ebenfalls Anwendung in anderen Formen von Verarbeitungsmaschinen.
  • Es wird nun die Grundarchitektur eines Beispiels eines Prozessors gemäß der Erfindung beschrieben.
  • 1 ist eine schematische Übersicht über einen Prozessor 10, der eine beispielhafte Ausführungsform der vorliegenden Erfindung bildet. Der Prozessor 10 enthält eine Verarbeitungsmaschine 100 und eine Prozessorrückwandplatine 20.
  • In der vorliegenden Ausführungsform ist der Prozessor ein digitaler Signalprozessor 10, der in einer anwendungsspezifischen integrierten Schaltung (ASIC) realisiert ist.
  • Wie in 1 gezeigt ist, bildet die Verarbeitungsmaschine 100 eine Zentraleinheit (CPU) mit einem Verarbeitungskern 102 und mit einer Speicherschnittstellen- oder Speichermanagementeinheit 104 als Schnittstelle zu dem Verarbeitungskern 102, wobei die Speichereinheiten extern gegenüber dem Prozessorkern 102 sind.
  • Die Prozessorrückwandplatine 20 umfasst einen Rückwandplatinenbus 22, mit dem die Speichermanagementeinheit 104 der Verarbeitungsmaschine verbunden ist. Außerdem sind mit dem Rückwandplatinenbus 22 ein Befehls-Cache-Speicher 24, Peripherievorrichtungen 26 und eine externe Schnittstelle 28 verbunden.
  • Es ist klar, dass die Erfindung in anderen Ausführungsformen unter Verwendung anderer Konfigurationen und/oder anderer Technologien realisiert werden könnte. Zum Beispiel könnte die Verarbeitungsmaschine 100 den Prozessor 10 bilden, wobei die Prozessorrückwandplatine 20 getrennt davon ist. Die Verarbeitungsmaschine 100 könnte z. B. ein DSP sein, der von einer Rückwandplatine 20, die einen Rückwandplatinenbus 22, Peripherieschnittstellen und externe Schnittstellen unterstützt, getrennt und daran angebracht ist. Die Verarbeitungsmaschine 100 könnte z. B. eher ein Mikroprozessor als ein DSP sein und könnte in anderen Technologien als in der ASIC-Technologie realisiert sein. Die Verarbeitungsmaschine oder ein Prozessor, der die Verarbeitungsmaschine enthält, könnte in einer oder in mehreren integrierten Schaltungen realisiert sein.
  • 2 veranschaulicht die Grundstruktur einer Ausführungsform des Verarbeitungskerns 102. Wie veranschaulicht ist, enthält der Verarbeitungskern 102 vier Elemente, d. h. eine Befehlspuffereinheit (I-Einheit) 106 und drei Ausführungseinheiten. Die Ausführungseinheiten sind eine Programmablaufeinheit (P-Einheit) 108, eine Adressendatenflusseinheit (A-Einheit) 110 und eine Datenberechnungseinheit (D-Einheit) 112 zur Ausführung von Befehlen, die von der Befehlspuffereinheit (I-Einheit) 106 decodiert worden sind, und zum Steuern und Überwachen des Programmablaufs.
  • 3 veranschaulicht die P-Einheit 108, die A-Einheit 110 und die D-Einheit 112 des Verarbeitungskerns 102 ausführlicher und zeigt die Busstruktur, die die verschiedenen Elemente des Verarbeitungskerns 102 verbindet. Die P-Einheit 108 enthält z. B. eine Schleifen-Steuerschaltungsanordnung, eine GoTo/Verzweigungs-Steuerschaltungsanordnung und verschiedene Register zum Steuern und Überwachen des Programmablaufs wie etwa Wiederholungszählerregister und Unterbrechungsmasken-, Merker- oder Vektorregister. Die P-Einheit 108 ist mit Universaldatenschreibbussen (EB, FB) 130, 132, mit Datenlesebussen (CB, DB) 134, 136 und mit einem Koeffizientenprogrammbus (BB) 138 gekoppelt. Außerdem ist die P-Einheit 108 über verschiedene mit CSR, ACB und RGD bezeichnete Busse mit Untereinheiten in der A-Einheit 110 und in der D-Einheit 112 gekoppelt.
  • Wie in 3 veranschaulicht ist, enthält die A-Einheit 110 in der vorliegenden Ausführungsform eine Registerdatei 30, eine Datenadressenerzeugungs-Untereinheit (DAGEN) 32 und eine Arithmetik- und Logikeinheit (ALU) 34. Die A-Einheits-Registerdatei 30 enthält verschiedene Register, unter denen 16-Bit-Zeigerregister (AR0..., AR7) und -Datenregister (DR0, ..., DR3) sind, die auch für den Datenfluss sowie für die Adressenerzeugung verwendet werden können. Außerdem enthält die Registerdatei zirkuläre 16-Bit-Pufferregister und 7-Bit-Datenseitenregister. Ebenso sind mit der A-Einheits-Registerdatei 30 die Universalbusse (EB, FB, CB, DB) 130, 132, 134, 136, ein Koeffizientendatenbus 140 und ein Koeffizientenadressenbus 142 gekoppelt. Die A-Einheits-Registerdatei 30 ist durch einfachgerichtete Busse 144 und 146, die jeweils in entgegengesetzten Richtungen arbeiten, mit der A-Einheits-DAGEN-Einheit 32 gekoppelt. Die DAGEN-Einheit 32 enthält 16-Bit-X/Y-Register und -Koeffizientenregister und -Stapelzeigerregister, um z. B. die Adressenerzeugung in der Verarbeitungsmaschine 100 zu steuern und zu überwachen.
  • Außerdem umfasst die A-Einheit 110 die ALU 34, die eine Verschiebungsfunktion sowie die einer ALU üblicherweise zugeordneten Funktionen wie etwa Addition, Subtraktion und UND-, ODER- und XOR-Logikoperatoren enthält. Die ALU 34 ist ebenfalls mit den Universalbussen (EB, DB) 130, 136 und mit einem Befehlskonstanten-Datenbus (KDB) 140 gekoppelt. Die A-Einheits-ALU ist durch einen PDA-Bus mit der P-Einheit 108 gekoppelt, um den Registerinhalt aus der Registerdatei der P-Einheit 108 zu empfangen. Die ALU 34 ist außerdem durch Busse RGA und RGB zum Empfangen von Adressen- und Datenregisterinhalten und durch einen Bus RGD zum Weiterleiten von Adressen- und Datenregistern in der Registerdatei 30 mit der A-Einheits-Registerdatei 30 gekoppelt.
  • Wie veranschaulicht ist, enthält die D-Einheit 112 eine D-Einheits-Registerdatei 36, eine D-Einheits-ALU 38, eine D-Einheits-Schiebeeinrichtung 40 und zwei Multiplikations- und Akkumulationseinheiten (MAC1, MAC2) 42 und 44. Die D-Einheits-Registerdatei 36, die D-Einheits-ALU 38 und die D-Einheits-Schiebeeinrichtung 40 sind mit Bussen (EB, FB, CB, DB und KDB) 130, 132, 134, 136 und 140 gekoppelt und die MAC-Einheiten 42 und 44 sind mit den Bussen (CB, DB, KDB) 134, 136, 140 und mit dem Datenlesebus (BB) 144 gekoppelt. Die D-Einheits-Registerdatei 36 enthält 40-Bit-Akkumulatoren (AC0, ..., AC3) und ein 16-Bit-Übergangsregister. Außer den 40-Bit-Akkumulatoren kann die D-Einheit 112 ebenfalls die 16-Bit-Zeigerregister und -Datenregister in der A-Einheit 110 als Quell- oder Zielregister nutzen. Die D-Einheits-Registerdatei 36 empfängt über Akkumulatorschreibbusse (ACW0, ACW1) 146, 148 Daten von der D-Einheits-ALU 38 und von den MACs 1 und 2 42, 44 sowie über den Akkumulatorschreibbus (ACW1) 148 Daten von der D-Einheits-Schiebeeinrichtung 40. Von den D-Einheits-Registerdateiakkumulatoren werden Daten über Akkumulatorlesebusse (ACR0, ACR1) 150, 152 in die D-Einheits-ALU 38, in die D-Einheits-Schiebeeinrichtung 40 und in die MACs 1 und 2 42 und 44 gelesen. Die D-Einheits-ALU 38 und die D-Einheits-Schiebeeinrichtung 40 sind außerdem über verschiedene mit EFC, DRB, DR2 und ACB bezeichnete Busse mit Untereinheiten der A-Einheit 108 gekoppelt.
  • Nunmehr anhand von 4 ist eine Befehlspuffereinheit 106 veranschaulicht, die eine 32-Wort-Befehlspufferwarteschlange (IBQ) 502 umfasst. Die IBQ 502 umfasst 32 × 16-Bit-Register 504, die logisch in 8-Bit-Bytes 506 geteilt sind. Bei der IBQ 502 kommen über den 32-Bit-Programmbus (32-Bit-PB) 122 Befehle an. Die Befehle werden in einem 32-Bit-Zyklus an eine Stelle geholt, auf die der lokale Schreibprogrammzähler (LWPC) 532 zeigt. Der LWPC 532 ist in einem Register enthalten, das sich in der P-Einheit 108 befindet. Außerdem enthält die P-Einheit 108 das Register des lokalen Leseprogrammzählers (LRPC) 536 und die Register des Schreibprogrammzählers (WPC) 530 und des Leseprogrammzählers (RPC) 534. Der LRPC 536 zeigt in der IBQ 502 auf die Stelle des nächsten Befehls oder der nächsten Befehle, der/die in den/die Befehlsdecodierer 512 und 514 geladen werden soll(en). Das heißt, der LRPC 534 zeigt in der IBQ 502 auf die Stelle des Befehls, der momentan an die Decodierer 512, 514 abgesendet wird. Der WPC zeigt im Programmspeicher auf die Adresse des Anfangs der nächsten 4 Bytes des Befehlcodes für die Pipeline. Für jedes Holen in die IBQ werden unabhängig von Befehlsgrenzen die nächsten 4 Bytes aus dem Programmspeicher geholt. Der RPC 534 zeigt im Programmspeicher auf die Adresse des Befehls, der momentan an den/die Decodierer 512 und 514 abgesendet wird.
  • Die Befehle werden zu einem 48-Bit-Wort geformt und über einen 48-Bit-Bus 516 über Multiplexer 520 und 521 in die Befehlsdecodierer 512, 514 geladen. Für den Durchschnittsfachmann auf dem Gebiet ist klar, dass die Befehle zu Wörtern geformt werden können, die mehr als 48 Bits umfassen, und dass die vorliegende Erfindung nicht auf die oben beschriebene spezifische Ausführungsform beschränkt ist.
  • Der Bus 516 kann während irgendeines Befehlszyklus maximal zwei Befehle, einen pro Decodierer, laden. Die Kombination von Befehlen kann in irgendeiner Kombination von Formaten, 8, 16, 24, 32, 40 und 48 Bits, sein, die über den 48-Bit-Bus passen. Falls während eines Zyklus nur ein Befehl geladen werden kann, wird der Decodierer 1, 512 gegenüber dem Decodierer 2, 514 bevorzugt geladen. Daraufhin werden die jeweiligen Befehle zu den jeweiligen Funktionseinheiten weitergeleitet, um sie auszuführen und um auf die Daten zuzugreifen, für die der Befehl oder die Operation ausgeführt werden soll. Bevor die Befehle an die Befehlsdecodierer übergeben werden, werden sie an den Bytegrenzen ausgerichtet. Die Ausrichtung erfolgt anhand des Formats, das für den vorherigen Befehl während dessen Codierung abgeleitet worden ist. Die Multiplexierung, die der Ausrichtung der Befehle auf die Bytegrenzen zugeordnet ist, wird in den Multiplexern 520 und 521 ausgeführt.
  • Der Prozessorkern 102 führt Befehle über eine 7-Stufen-Pipeline aus, deren jeweilige Stufen nun anhand von 5 beschrieben werden.
  • Die erste Stufe der Pipeline ist eine PRE-FETCH-Stufe (P0-Stufe) 202, während der durch Aktivieren einer Adresse auf dem Adressenbus (PAB) 118 einer Speicherschnittstelle oder einer Speichermanagementeinheit 104 eine nächste Programmspeicherstelle adressiert wird.
  • In der nächsten Stufe, der FETCH-Stufe (P1-Stufe) 204, wird über den PB-Bus 122 von der Speichermanagementeinheit 104 der Programmspeicher gelesen und die I-Einheit 106 gefüllt.
  • Die PRE-FETCH- und die FETCH-Stufe sind vom Rest der Pipeline-Stufen dahingehend getrennt, dass die Pipeline während der PRE-FETCH- und der FETCH-Stufe unterbrochen werden kann, um den sequentiellen Programmablauf zu unterbrechen und, z. B. für einen Verzweigensbefehl, auf andere Befehle in dem Programmspeicher zu zeigen.
  • Daraufhin wird der nächste Befehl in den Befehlspuffer an den/die Decodierer 512/514 in der dritten Stufe, DECODE (P2) 206, abgesendet, wo der Befehl decodiert und zur Ausführung dieses Befehls an die Ausführungseinheit, z. B. an die P-Einheit 108, an die A-Einheit 110 oder an die D-Einheit 112, abgesendet wird. Die Decodierungsstufe 206 enthält die Decodierung wenigstens eines Teils des Befehls, der einen ersten Teil, der die Klasse des Befehls angibt, einen zweiten Teil, der das Format des Befehls angibt, und einen dritten Teil, der eine Adressierungsbetriebsart für den Befehl angibt, enthält.
  • Die nächste Stufe ist eine ADDRESS-Stufe (P3-Stufe) 208, in der die Adresse der Daten berechnet wird, die in dem Befehl verwendet werden sollen, oder in der eine neue Programmadresse berechnet wird, falls der Befehl eine Programmverzweigung oder einen Programmsprung erfordern sollte. Die jeweiligen Berechnungen finden in der A-Einheit 110 bzw. in der P-Einheit 108 statt.
  • In einer ACCESS-Stufe (P4-Stufe) 210 wird die Adresse eines gelesenen Operanden ausgegeben und wird der Speicheroperand, dessen Adresse in einem DAGEN-X-Operator mit einer indirekten Xmem-Adressierungsbetriebsart erzeugt worden ist, daraufhin aus dem indirekt adressierten X-Speicher (Xmem) gelesen (READ).
  • Die nächste Stufe der Pipeline ist die READ-Stufe (P5-Stufe) 212, in der ein Speicheroperand gelesen wird (READ), dessen Adresse in einem DAGEN-Y-Operator mit einer indirekten Ymem-Adressierungsbetriebsart oder in einem DAGEN-C-Operator mit einer Koeffizientenadressenbetriebsart erzeugt worden ist. Die Adresse der Speicherstelle, zu der das Ergebnis des Befehls geschrieben werden soll, wird ausgegeben.
  • Im Fall des Doppelzugriffs können Leseoperanden ebenfalls in dem Y-Weg und Schreiboperanden in dem X-Weg erzeugt werden.
  • Schließlich gibt es eine Ausführungs-EXEC-Stufe (Ausführungs-P6-Stufe) 214, in der der Befehl entweder in der A-Einheit 110 oder in der D-Einheit 112 ausgeführt wird. Das Ergebnis wird daraufhin in einem Datenregister oder Akkumulator gespeichert oder für Lese-/Änderungs-/Schreib- oder Speicherbefehle in den Speicher geschrieben. Außerdem werden während der EXEC-Stufe an Daten in Akkumulatoren Schiebeoperationen ausgeführt.
  • Anhand von 6 wird nun das Grundprinzip des Betriebs für einen Pipeline-Prozessor beschrieben. Wie aus 6 zu sehen ist, finden die aufeinander folgenden Pipeline-Stufen für einen ersten Befehl 302 über die Zeitperioden T1-T7 statt. Jede Zeitperiode ist ein Taktzyklus für den Prozessormaschinentakt. Da der vorherige Befehl nun zu der nächsten Pipeline-Stufe übergegangen ist, kann in der Zeitperiode T2 ein zweiter Befehl 304 in die Pipeline eintreten. Für den Befehl 3, 306, findet in der Zeitperiode T3 die PRE-FETCH-Stufe 202 statt. Wie aus 6 zu sehen ist, können für eine siebenstufige Pipeline insgesamt 7 Befehle gleichzeitig verarbeitet werden. 6 zeigt sie für alle 7 Befehle 302-314 in der Verarbeitung in der Zeitperiode T7. Eine solche Struktur fügt zu der Verarbeitung der Befehle eine Form von Parallelismus hinzu.
  • Wie in 7 gezeigt ist, enthält die vorliegende Ausführungsform der Erfindung eine Speichermanagementeinheit 104, die über einen 24-Bit-Adressenbus 114 und einen doppeltgerichteten 16-Bit-Datenbus 116 mit externen Speichereinheiten gekoppelt ist. Außerdem ist die Speichermanagementeinheit 104 über einen 24-Bit-Adressenbus 118 und über einen doppeltgerichteten 32-Bit-Datenbus 120 mit dem Programmablagespeicher (nicht gezeigt) gekoppelt. Außerdem ist die Speichermanagementeinheit 104 über einen 32-Bit-Programmlesebus (PB) 122 mit der I-Einheit 106 des Maschinenprozessorkerns 102 gekoppelt. Die P-Einheit 108, die A-Einheit 110 und die D-Einheit 112 sind über Datenlese- und Datenschreibbusse und über entsprechende Adressenbusse mit der Speichermanagementeinheit 104 gekoppelt. Die P-Einheit 108 ist ferner mit einem Programmadressenbus 128 gekoppelt.
  • Insbesondere ist die P-Einheit 108 durch einen 24-Bit-Programmadressenbus 128, durch die zwei 16-Bit-Datenschreibbusse (EB, FB) 130, 132 und durch die zwei 16-Bit-Datenlesebusse (CB, DB) 134, 136 mit der Speichermanagementeinheit 104 gekoppelt. Die A-Einheit 110 ist über zwei 24-Bit-Datenschreibadressenbusse (EAB, FAB) 160, 162, über die zwei 16-Bit-Datenschreibbusse (EB, FB) 130, 132, über die drei Datenleseadressenbusse (BAB, CAB, DAB) 164, 166, 168 und über die zwei 16-Bit-Datenlesebusse (CB, DB) 134, 136 mit der Speichermanagementeinheit 104 gekoppelt. Die D-Einheit 112 ist über die zwei Datenschreibbusse (EB, FB) 130, 132 und über die drei Datenlesebusse (BB, CB, DB) 144, 134, 136 mit der Speichermanagementeinheit 104 gekoppelt.
  • 7 stellt die Übergabe von Befehlen von der I-Einheit 106 an die P-Einheit 108 bei 124, z. B. zur Weiterleitung von Verzweigungsbefehlen, dar. Außerdem stellt 7 bei 126 bzw. bei 128 die Übergabe von Daten von der I-Einheit 106 an die A-Einheit 110 und an die D-Einheit 112 dar.
  • In einer besonderen Ausführungsform der Erfindung reagiert die Verarbeitungsmaschine 100 auf Maschinenbefehle in einer Anzahl von Formaten. Im Folgenden sind Beispiele solcher Befehle in verschiedenen Formaten veranschaulicht.
    8-Bit-Befehl: OOOO OOOO
  • Dies stellt einen Achtbit-Befehl, z. B. einen Speicherabbildkennzeichner (MMAP()) oder einen Leseportkennzeichner (readport()), dar. Ein solcher Kennzeichner umfasst lediglich einen Achtbit-Opcode (OOOO OOOO). In diesem Fall ist der Parallelismus implizit.
    16-Bit-Befehl: OOOO OOOE FSSS FDDD
  • Dies stellt ein Beispiel eines Sechzehnbit-Befehls dar, z. B. eines Befehls, bei dem der Inhalt eines Zielregisters (z. B. dst) die Summe des früheren Inhalts dieses Registers (dst) und des Inhalts eines Quellregisters (src) wird, d. h.: dst = dst + src
  • Ein solcher Befehl umfasst einen Siebenbit-Opcode (OOOO OOOO) mit einem Einbit-Parallelfreigabefeld (E), einen Vierbit-Quellregisterkennzeichner (FSSS) und einen Vierbit-Zielregisterkennzeichner (FDDD).
    16-Bit-Befehl: OOOO FDDD PPPM MMMI
  • Dies stellt ein weiteres Beispiel eines Sechzehnbit-Befehls dar, bei dem z. B. der Inhalt eines Zielregisters (z. B. dst) der Inhalt eines Speicherplatzes (Smem) wird, d. h.: dst = Smem
  • Ein solcher Befehl umfasst einen Vierbit-Opcode (OOOO), einen Vierbit-Zielregisterkennzeichner (FDDD), eine Dreibit-Zeigeradresse (PPP), einen Vierbit-Adressenmodifikator (M MMM) und einen Indikator (I) für direkte/indirekte Adressen.
    24-Bit-Befehl: OOOO OOOE LLLL LLLL oCCC CCCC
  • Dies stellt ein Beispiel eines 24-Bit-Befehls, z. B. eines bedingten Befehls für eine Verzweigung zu und einer Relativadresse (L8), wo eine Bedingung erfüllt ist, dar, d. h.
    if (cond) goto L8
    ist. Ein solcher Befehl umfasst einen Siebenbit-Opcode (OOOO OOO) mit einem Einbit-Parallelfreigabefeld (E), eine Acht-Bit-Verzweigungsdistanzadresse (L.LLL LLLL), eine Einbit-Opcode-Erweiterung (o) und ein Siebenbit-Bedingungsfeld (CCC CCCC).
    24-Bit-Befehl: OOOO OOOO PPPM MMMI SSDD ooU%
  • Dies ist ein weiteres Beispiel eines Vierundzwanzigbit-Befehls, z. B. eines einzelnen Speicheroperandenbefehls, bei dem der Inhalt eines Akkumulators (ACy) das Ergebnis der Rundung der Summe des Inhalts eines weiteren Akkumulators (ACx) und des Quadrats des Inhalts eines Speicherplatzes (mit optionaler Rundung) wird, wobei optional der Inhalt eines Datenregisters (DR3) der Inhalt des Speicherplatzes werden kann, d. h. ACy = rnd(ACx·Smem·Smem)[, DR3 = Smem]
  • Ein solcher Befehl umfasst einen Achtbit-Opcode (OOOO OOOO), eine Dreibit-Zeigeradresse (PPP), einen Vierbit-Adressenmodifikator (M MMM), ein Einbit-Indikatorfeld (I) für direkte/indirekte Adressen, einen Zweibit-Quellakkumulatorkennzeichner (SS), einen Zweibit-Zielakkumulatorkennzeichner (DD), eine Zwei bit-Opcode-Erweiterung (oo), ein Aktualisierungsbedingungsfeld (u) und ein Einbit-Rundungsoptionsfeld (%).
    32-Bit-Befehl: OOOO OOOO PPPM MMMI KKKK KKKK KKKK KKKK
  • Dies ist ein Beispiel eines Zweiunddreißigbit-Befehls, z. B. eines Befehls, bei dem der Inhalt eines Testregisters (TC1) je nach dem Vorzeichenvergleich eines Speicherplatzes (Smem) mit einem konstanten Wert (K16) auf 1 oder 0 gesetzt wird, d. h.
    TC1 = (Smem == K16)
  • Ein solcher Befehl umfasst einen Achtbit-Opcode (OOOO OOOO), eine Dreibit-Zeigeradresse (PPP), einen Vierbit-Adressenmodifikator (M MMM), ein Einbit-Indikatorfeld (I) für direkte/indirekte Adressen und ein Sechzehnbit-Konstantenfeld (KKKK KKKK KKKK KKKK).
  • Bitmanipulationsbefehle haben dasselbe Format wie ein Einzelspeicherbefehl, der einen Speicherzugriff vornimmt. 8 veranschaulicht ein Beispiel eines solchen Befehls. Beispiele von Bitmanipulationsbefehlen sind ein Bittestbefehl, ein Bitsetzbefehl, ein Bitlöschbefehl und ein Bitkomplementbefehl. Wie in 8 gezeigt ist, enthält ein Bitmanipulationsbefehl 900 ein Operationsfeld 902 für einen Operationscode, ein Adressierungsfeld 904 und ein Datenregisterauswahlfeld 906. Wie in der folgenden Tabelle 1 veranschaulicht ist, steuert das Adressierungsfeld des Befehls die Adressenerzeugung der CPU unabhängig von dem ausgeführten Befehl. TABELLE 1
    Adressierungsbetriebsart Befehlsadressierungsfeld Befehlsbeispiele
    direkte Adressierung Dies spezifiziert direkt die Adresse eines Bits, das aus einem anwenderdefinierten Register ausgekoppelt werden soll. Es ist eine Konstante. BIT(register, #bit address value) = 1 Cbit (register, #3)
    indirekte Adressierung Dies speziefiert indirekt die Adresse eines Bits, das aus einem anwenderdefinierten Register ausgekoppelt werden soll. Es bezeichnet ein Zeigerregister und die Modifikation, die an ihm vorgenommen werden soll. Bit(register, *ARI) = 0 TC1 = bit(register, *AR3 + DR0) TC1.TC2 = bit(register, Pair(*AR2 + %))
  • Wie in der Erleitung erwähnt wurde, bezieht sich die vorliegende Erfindung auf die Berechnung linearer Vektoren in einem digitalen Verarbeitungssystem.
  • Wie im Folgenden beschrieben wird, verwendet eine besondere Ausführungsform der Erfindung Befehle, die je nach dem Ergebnis eines Bittests eine Addition oder eine Subtraktion ausführen.
  • In der folgenden Tabelle 2 sind mehrere Befehlsformate dieses Typs veranschaulicht: TABELLE 2
    Figure 00170001
  • 9 ist eine Darstellung einer herkömmlichen Realisierung einer Linearkombination von Vektoren.
  • Zunächst werden die (Ci)1≤i≤N Koeffizienten aus einer Bitdarstellung (0, 1) in gebrochene Zahlen (1/2, –1/2) umgewandelt, die in N Bits in 2n-Komplementform codiert sind. Daraufhin wird mit einem N-Schritt-Algorithmus jede Y →-Vektor-Koordinate (Yj)1≤j≤M berechnet. Die Berechnung wird mit einer Multiplikations- und Akkumulationseinheit ausgeführt, wie sie durch die folgende Gleichung dargestellt ist:
    Figure 00180001
    wobei (Xij)1≤j≤M die Koordinaten des Vektors X →i sind.
  • 10 ist eine alternative Darstellung der Linearkombination von Vektoren, wie sie in Übereinstimmung mit einer Ausführungsform der Erfindung ausgeführt wird. Mit anderen Worten, in einer Ausführungsform der Erfindung wird eine Linearkombination von Vektoren in Übereinstimmung mit der folgenden Gleichung berechnet:
    Figure 00180002
  • Für die erste hier verwendete Gleichung stellt ein Koeffizient Ci = 0 eine Multiplikation mit –1 dar. In der alternativen Gleichung würde ein Koeffizient Ci = 0 eine Multiplikation mit +1 darstellen.
  • (Ci)1≤i≤N Koeffizienten, die als Bits (0, 1) dargestellt sind, werden in ein CPU-Register gepackt, wobei jede Y →-Vektor-Koordinate mit einem N + 1-Schritt-Algorithmus mit einer Bittesteinheit berechnet wird, die parallel zu einer ALU-Einheit arbeitet.
  • Ein Schritt (i + 1)1≤i≤N der Berechnung:
    • – das Bit Ci + 1 des CPU-Registers wird adressiert;
    • – dieses Bit wird in einem temporären Register getestet; und
    • – es wird eine bedingte Addition/Subtraktion des Operanden Xij ausgeführt.
  • 11 ist eine schematische Übersicht über die Art und Weise, in der ein Verbundbefehl, genauer ein Bittestbefehl parallel zu einem bedingten Additions/Subtraktions-Befehl, zur Steuerung der Elemente der oben anhand von 3 beschriebenen Verarbeitungsmaschine verwendet wird.
  • Es wird angemerkt, dass die Reihenfolge der Felder in den Befehlen 900 in 11 in Bezug auf 8 zur Erleichterung der Darstellung geändert worden ist.
  • Das Adressierungsfeld 904 enthält zwei Adressen, d. h. eine Bitadresse und eine Speicheroperandenadresse.
  • Der Inhalt des Adressenfelds 904 wird auf den Leitungen 912 zum ersten und zum zweiten Multiplexer 918 und 922 und außerdem zu den Adressenerzeugungseinheiten 910 (die einen Teil der A-Einheits-DAGEN 32 aus 3 bilden) geliefert. Bei 916 wird ein Direkt/Indirekt-Bit an den ersten Multiplexer 918 geliefert. Außerdem werden die Adressenbits von den Leitungen 912 über die Leitungen 914 an den ersten Multiplexer 918 geliefert. Wenn die Adresse, wie durch das Direkt/Indirekt-Adressenbit angegeben wird, eine direkte Adresse ist, ermöglicht das auf der Leitung 916 gelieferte Direkt/Indirekt-Adressenbit, dass der Multiplexer 918 die auf der Leitung 914 gelieferten direkten Adressenbits auswählt. Wenn die Adresse eine indirekte Adresse ist, wählen die auf den Leitungen 924 zu dem zweiten Multiplexer 922 gelieferten Bits den Inhalt eines Registers in einer Zeigerregisterdatei 920 aus. Die Eingabe in den zweiten Multiplexer 922 wird durch d e Leitungen 925 von der Zeigerregisterdatei 920 gebildet. Der Inhalt des Zeigerregisters 920 (das eines der Adressenzeigerregister ARx[16] in der A-Einheits-Registerdatei 30 aus 3 sein kann), das durch die Bits auf den Leitungen 924 identifiziert wird, wird über einen Eingang 926 für indirekte Adressen an den ersten Multiplexer 918 geliefert. In diesem Fall wählt das auf der Leitung 916 gelieferte Direkt/Indirekt-Bit den Eingang 926 für indirekte Adressen zu dem Multiplexer 918 aus. Im Ergebnis wird die geeignete direkte oder indirekte Adresse an die Adressenerzeugungseinheiten 910 geliefert. Die von dem Adressierungsfeld 904 gelieferten Modifikationsoperationsbits werden bei 909 ebenfalls an die Adressenerzeugungseinheit 910 geliefert. Auf der Leitung 928 wird eine modifizierte Adresse, die sich aus der Modifikationsoperation ergibt, von den Adressenerzeugungseinheiten 910 zur Eingabe in die Zeigerregisterdatei 920 geliefert. Außerdem wird von den Adressenerzeugungseinheiten 910 eine erzeugte Adresse ausgegeben. Die erzeugte Adresse auf den Leitungen 930 wird entweder an einen Datenspeicheradressenbus 932, wo sie sich auf Speicheroperanden bezieht, oder auf den Leitungen 934 zu einer Bitmanipulationseinheit 950, wo sie sich auf eine Bitadresse bezieht, geliefert. Die Adressenerzeugungseinheiten 910 können so eingerichtet werden, dass sie eine zirkuläre Adressierung mit Nachmodifikation liefern. Zum Erzeugen der Adressen für die Bitregisteradressierung oder für die Speicheroperandenadressierung kann dieselbe oder eine andere Hardware verwendet werden.
  • Der Inhalt des Datenregisterauswahlfelds 906 wird an einen dritten und an einen vierten Multiplexer 946 und 947 geliefert. Die an den dritten Multiplexer 946 gelieferten Registerauswahlbits ermöglichen die Auswahl eines Datenregisters 940 (das eines der Datenregister DRx[16] oder ARx[16] der A-Einheits-Registerdatei 30 aus 3 sein kann) für die Ausgabe über die Leitungen 948 an die Bitmanipulationseinheit 950. Dieses Register enthält die Koeffizienten (Ci)1≤i≤N. Das Register kann länger sein, als es für die Koeffizienten absolut notwendig ist (z. B. eher N + 1 als N Bits). Dies ermöglicht, dass für die Adressierung der Register eine zirkuläre Bitadressierung mit Nachmodifikation genutzt wird, wobei die Koeffizienten so angeordnet werden, dass sie das Register "umschlingen". Mit anderen Worten, sollen die Koeffizienten (Ci)1≤i≤N anfangs in den Bits 1 bis N eines N + 1-Bitregisters gehalten werden, könnte ein erstes modifiziertes Bit dann bei der Bitstelle N + 1, ein zweites modifiziertes Bit bei der Bitstelle 1 (wobei das zuvor gespeicherte Bit bei der Bitstelle 1 bereits in einem vorangehenden Schritt verwendet worden ist) usw. gespeichert werden. Die Bitmanipulationseinheit kann einen Teil der A-Einheits-ALU 34 aus 3 bilden. Zu diesem Zweck wird auf dem Weg 952 von der Bitmanipulationseinheit 950 zu der Datenregisterdatei 940 ein Komplement rückgekoppelt. Die Bitmanipulationsoperationsbits werden auf den Leitungen 952 und 954 von dem Operationsfeld 902 des Befehls 900 an die Bitmanipulationseinheit 950 geliefert. Die Ausgabe der Bitmanipulationseinheit 958 wird an eine Teststatusregisterdatei 960 geliefert (die ein Testregister TC1 oder TC2 des Statusregisters für die A-Einheit aus 3 sein kann). Die auf den Leitungen 942 von dem Datenregisterauswahlfeld 906 gelieferten Registerauswahlbits werden ebenfalls an den vierten Multiplexer 947 geliefert. Dies ermöglicht die Auswahl einer Ausgabe von einer Akkumulatorregisterdatei ACx[40] zur Auswahl einer Teilkoordinate Y →j eines Vektors Y → zur Eingabe über einen Weg 964 in eine ALU 970 (die die D-Einheits-ALU 38 aus 3 sein kann). Die ALU-Operationsbits werden ebenfalls über die Leitungen 952 von dem Operationsfeld 902 geliefert. Außerdem werden über einen Datenspeicherlesebus 968 und über die Leitungen 966 Speicherkoordinaten Xij an die ALU 970 geliefert. Auf den Leitungen 962 werden die Ausgaben von der Teststatusregisterdatei 960, die den getesteten Koeffizienten Ci enthält, an die ALU 970 geliefert. Die modifizierten Daten werden von der ALU 970 an die Datenregisterdatei 940 zur Speicherung darin ausgegeben 972.
  • 12 ist ein Ablaufplan, der die Folge der Schritte in einem Berechnungsverfahren linearer Vektoren veranschaulicht. Anhand von 11 werden die verschiedenen Schritte in dem Verfahren erläutert.
  • In Übereinstimmung mit diesem Verfahren wird ∀1 ≤ j ≤ M jede Koordinate des Vektors Y →, eine nach der anderen, berechnet.
  • Bei S0 werden die Koeffizienten für einen ersten Eingangsvektor in der Datenregisterdatei 940 gespeichert.
  • Bei S1 beginnt der Prozess für die erste Vektor-Koordinate J = 1.
  • Bei S2 enthält der erste Schritt (Schritt i = 1) des Prozesses der Berechnung dieser Koordinate das Adressierungsbit C1 in einem Datenregister 940 in der Datenregisterdatei 940, wie es unter Verwendung der Registerbitadresseninformationen aus dem Adressierungsfeld 904 des Befehls 900 durch die Adressenberechnung in der Datenadressenerzeugungseinheit 910 bestimmt wird. Dieses Bit wird getestet und das Ergebnis (in dem vorliegenden Fall der getestete Bitwert) wird in der Teststatusregisterdatei 960 gespeichert. Außerdem wird unter Verwendung der Adresseninformationen in dem Adressierungsfeld 904 des Befehls 900 in der Adressenerzeugungseinheit die Adresse für den ersten Speicheroperanden erzeugt und das Holen dieses Operanden ausgeführt.
  • Bei S3 wird der Prozess für den Schritt i + 1 fortgesetzt, wobei die bei S2 angegebenen Schritte für das Bit Ci+1, ausgeführt werden und das Operandenholen für den Operanden Xi+1,j initiiert wird. Parallel wird eine bedingte Addition/Subtraktion des Operanden Xij ausgeführt. Dies wird für die Schritte i + 1 = 2 bis N dieses Prozesses wiederhol. Das heißt, in einem Schritt i + 1 = 2 bis N gilt:
    Das Bit Ci+1 in einem Datenregister in der Datenregisterdatei 940 wird, wie durch die Adressenberechnung in der Datenerzeugungseinheit 910 unter Verwendung der Registerbitadresseninformationen aus dem Adressierungsfeld 904 des Befehls 900 bestimmt wird, adressiert. Das Bit wird getestet und das Ergebnis (im vorliegenden Fall der getestete Bitwert) wird in der Teststatusregisterdatei 960 gespeichert. Außerdem wird in der Adressenerzeugungseinheit unter Verwendung der Adresseninformationen in dem Adressierungsfeld 904 des Befehls 900 die Adresse für den ersten Speicheroperanden erzeugt und das Holen die ses Operanden ausgeführt. Außerdem wird in der ALU 970 die bedingte Addition/Subtraktion des Operanden Xij ausgeführt. In dem vorliegenden Fall wird der Operandenwert Xij addiert, falls der in dem vorigen Schritt gespeicherte getestete Bitwert für Ci eins ist, während er subtrahiert wird, falls der in dem vorherigen Schritt gespeicherte getestete Bitwert für Ci null ist. (Selbstverständlich könnte in einer weiteren Ausführungsform in der Bitstatusregisterdatei natürlich ein anderer Wert als der getestete Wert für das Bit gespeichert werden, sodass die Bestimmung, ob in der ALU zu addieren oder zu subtrahieren ist, verschieden sein könnte. Allerdings ist der unkomplizierteste Zugang der, wie er für diese Ausführungsform beschrieben ist.)
  • Mit anderen Worten, in Schritt (i + 1)1≤i≤N der Berechnung:
    wird das Bit Ci+1 des CPU-Registers adressiert;
    wird dieses Bit in einem temporären Register getestet; und
    wird eine bedingte Addition/Subtraktion des Operanten Xij ausgeführt.
  • Falls in S4 I < N ist, wird I in S5 inkrementiert und geht die Steuerung zu S3 zurück. Falls andernfalls I = 1 ist, geht die Steuerung zu S6. In S5 wird die letzte bedingte Addition/Subtraktion von Xij (1 = N) ausgeführt.
  • Falls in S6 weitere Koordinaten des Vektors Y → berechnet werden sollen (d. h. < M), veranlasst die Komplimentrückkopplung auf dem Weg 956 bei S7 die Aktualisierung der Koeffizienten in dem Datenregister in der Datenregisterdatei 940. Wie zuvor erwähnt wurde, kann dies durch zirkuläre Bitadressierung mit Nachmodifikation erzielt werden. Außerdem wird der Wert von j inkrementiert und geht die Steuerung zu S2 zurück.
  • Falls keine weiteren Koordinaten berechnet werden sollen, d. h. falls j = M ist, wird die Berechnung des Vektors Y → bei S8 abgeschlossen.
  • Somit kann dieser Prozess die folgende Berechnung ausführen:
    Figure 00220001
  • 13 ist eine schematische Darstellung einer integrierten Schaltung 40, die den Prozessor 10 aus 1 enthält. Die integrierte Schaltung kann unter Verwendung der Technologie anwendungsspezifischer integrierter Schaltungen (ASIC) realisiert werden. Wie gezeigt ist, enthält die integrierte Schaltung mehrere Kontakte 42 für die Oberflächenmontage. Allerdings könnte die integrierte Schaltung andere Konfigurationen, z. B. mehrere Anschlussstifte an einer unteren Oberfläche der Schaltung zur Anbringung in einem ZIF-Sockel, oder tatsächlich irgendeine andere geeignete Konfiguration aufweisen.
  • Eine Anwendung für eine Verarbeitungsmaschine wie etwa den Prozessor 10, wie er z. B. in eine integrierte Schaltung wie in 13 integriert ist, ist in einer Telekommunikationsvorrichtung, z. B. in einer drahtlosen Mobiltelekommunikationsvorrichtung. 14 veranschaulicht ein Beispiel einer solchen Telekommunikationsvorrichtung. In dem spezifischen in 14 veranschaulichten Beispiel ist die Telekommunikationsvorrichtung ein Mobiltelephon 11 mit einer integrierten Anwendereingabevorrichtung wie etwa einem Tastenfeld oder einer Tastatur 12 und einer Anzeige 14. Die Anzeige könnte unter Verwendung einer geeigneten Technologie wie etwa z. B. einer Flüssigkristallanzeige oder einer TFT-Anzeige realisiert sein. Der Prozessor 10 ist, wo geeignet über einen Tastenfeldadapter (nicht gezeigt), mit dem Tastenfeld 12, wo geeignet über einen Anzeigeadapter (nicht gezeigt), mit der Anzeige 14 und mit einer Telekommunikationsschnittstelle oder mit einem Sender-Empfänger 16, z. B. mit einer drahtlosen Telekommunikationsschnittstelle, die eine Hochfrequenz-Schaltungsanordnung (HF-Schaltungsanordnung) enthält, verbunden. Die Hochfrequenz-Schaltungsanordnung könnte in einer integrierten Schaltung 40, die den Prozessor 10 umfasst, enthalten oder getrennt von ihr sein. Die HF-Schaltungsanordnung 16 ist mit einer Antenne 18 verbunden.
  • Dementsprechend sind ein Verfahren, ein System und eine Vorrichtung zum effizienten Berechnen einer Linearkombination zweier Vektoren beschrieben worden. Obgleich diese im Kontext einer besonderen Ausführungsform beschrieben worden ist, ist klar, dass die Erfindung darauf nicht beschränkt ist und dass im Umfang der Erfindung viele Änderungen/Hinzufügungen und/oder Ersetzungen vorgenommen werden können.

Claims (11)

  1. Digitales System, das eine Verarbeitungsmaschine zum Berechnen eines Ausgangsvektors als eine Kombination von N Eingangsvektoren mit jeweils M Koordinaten enthält, wobei die Verarbeitungsmaschine umfasst: ein Koeffizientenregister (940) zum Halten einer Darstellung von N Koeffizienten, derart, dass für jeden der N Eingangsvektoren ein entsprechender Einbit-Koeffizient vorhanden ist, der in der Koeffizientendarstellung enthalten ist; eine Testeinheit (960) zum Testen eines ausgewählten Bits des Koeffizientenregisters für jeden Koeffizienten, um zu bestimmen, wann das ausgewählte Bit einen ersten digitalen Zustand oder einen zu dem ersten digitalen Zustand entgegengesetzten zweiten digitalen Zustand hat; einen Adressengenerator (910) zum Erzeugen einer Registerbitadresse, um ein Bit des Koeffizientenregisters für einen Test durch die Testeinheit auszuwählen und um eine Speicheradresse zum Wiedergewinnen einer Eingangsvektor-Koordinate zu erzeugen; und eine Arithmetikeinheit (970) zum Berechnen von Koordinaten des Ausgangsvektors, wobei die Arithmetikeinheit für jeden Eingangsvektor so betreibbar ist, dass sie eine von der Speicheradresse des Adressengenerators abgerufene Eingangsvektor-Koordinate zu einem akkumulierten Wert addiert, falls die Testeinheit bestimmt, dass das ausgewählte Bit des Koeffizientenregisters den ersten digitalen Zustand hat, und eine von der Speicheradresse des Adressengenerators abgerufene Eingangsvektor-Koordinate von dem akkumulierten Wert subtrahiert, falls die Testeinheit bestimmt, dass das ausgewählte Bit des Koeffizientenregisters den zweiten digitalen Zustand hat.
  2. Digitales System nach Anspruch 1, bei dem die Verarbeitungsmaschine ferner wenigstens ein Teststatusregister (960) zum Speichern des bestimmten digitalen Zustands des Bits des Koeffizientenregisters vor dem wahlweisen Addieren/Subtrahieren zu bzw. von dem Eingangsvektor umfasst.
  3. Digitales System nach Anspruch 1 oder Anspruch 2, bei dem der Adressengenerator eine zirkuläre Bitadressierung ausführt.
  4. Digitales System nach einem vorhergehenden Anspruch, bei dem das Register ein aus mehreren Registern auswählbares Register ist.
  5. Digitales System nach einem vorhergehenden Anspruch, bei dem die Verarbeitungsmaschine die Form eines digitalen Signalprozessors hat.
  6. Digitales System nach einem vorhergehenden Anspruch, bei dem die Verarbeitungsmaschine eine integrierte Schaltung enthält.
  7. Telekommunikationsvorrichtung, die ein digitales System nach einem vorhergehenden Anspruch enthält.
  8. Telekommunikationsvorrichtung nach Anspruch 7, die eine Anwendereingabevorrichtung, eine Anzeige, eine drahtlose Telekommunikationsschnittstelle und eine Antenne umfasst.
  9. Mobiltelephon, das ein digitales System nach einem der Ansprüche 1 bis 6 enthält und ferner umfasst: ein Tastenfeld, das mit der Verarbeitungsmaschine über einen Tastaturadapter verbunden ist; eine Anzeige, die mit der Verarbeitungsmaschine über einen Anzeigeadapter verbunden ist; eine Hochfrequenz-Schaltungsanordnung (HF-Schaltungsanordnung), die mit der Verarbeitungsmaschine verbunden ist; und eine Antenne, die mit der HF-Schaltungsanordnung verbunden ist.
  10. Verfahren, um in einer Verarbeitungsmaschine aus mehreren Eingangsvektoren, wovon jeder M Koordinaten besitzt, einen Ausgangsvektor zu berechnen, wobei das Verfahren die folgenden Schritte umfasst: Speichern einer Einbit-Koeffizienten-Darstellung jedes von N Koeffizienten für jeden Eingangsvektor in einem Koeffizientenregister; Erzeugen einer Speicheradresse und einer Bitadresse in dem einem nächsten Eingangsvektor entsprechenden Koeffizientenregister; Testen eines Bits des Koeffizientenregisters, das der Bitadresse entspricht, um zu bestimmen, wann das Bit einen ersten digitalen Zustand oder einen zu dem ersten digitalen Zustand entgegengesetzten zweiten digitalen Zustand hat; Abrufen einer Eingangsvektor-Koordinate aus dem Speicher an der Speicheradresse; und Berechnen von Koordinaten des Ausgangsvektors durch Addieren der Eingangsvektor-Koordinate zu einem akkumulierten Wert, falls die Testeinheit bestimmt, dass das ausgewählte Bit des Koeffizientenregisters den ersten digitalen Zustand hat, und durch Subtrahieren der Eingangsvektor-Koordinate von dem akkumulierten Wert, falls die Testeinheit bestimmt, dass das ausgewählte Bit des Koeffizientenregisters den zweiten digitalen Zustand hat.
  11. Verfahren nach Anspruch 10, das den Schritt des Speicherns des bestimmten digitalen Zustands des Bits des Koeffizientenregisters vor dem wahlweisen Addieren/Subtrahieren einer Koordinate des Eingangsvektors umfasst.
DE69838028T 1998-10-06 1998-10-06 Linearvektorrechnung Expired - Lifetime DE69838028T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
EP98402465A EP0992917B1 (de) 1998-10-06 1998-10-06 Linearvektorrechnung

Publications (2)

Publication Number Publication Date
DE69838028D1 DE69838028D1 (de) 2007-08-16
DE69838028T2 true DE69838028T2 (de) 2008-03-13

Family

ID=8235521

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69838028T Expired - Lifetime DE69838028T2 (de) 1998-10-06 1998-10-06 Linearvektorrechnung

Country Status (4)

Country Link
US (1) US6557097B1 (de)
EP (1) EP0992917B1 (de)
JP (1) JP4355410B2 (de)
DE (1) DE69838028T2 (de)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6681319B1 (en) * 1998-10-06 2004-01-20 Texas Instruments Incorporated Dual access instruction and compound memory access instruction with compatible address fields
DE10206830B4 (de) * 2002-02-18 2004-10-14 Systemonic Ag Verfahren und Anordnung zur Zusammenführung von Daten aus parallelen Datenpfaden
GB2474901B (en) * 2009-10-30 2015-01-07 Advanced Risc Mach Ltd Apparatus and method for performing multiply-accumulate operations
JP6275474B2 (ja) * 2013-12-25 2018-02-07 ルネサスエレクトロニクス株式会社 半導体装置及びデータ転送装置
US10268602B2 (en) * 2016-09-29 2019-04-23 Micron Technology, Inc. System and method for individual addressing
EP3428792B1 (de) 2017-07-10 2022-05-04 Arm Ltd Prüfung von bit-werten in vektorelementen

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5623650A (en) * 1989-12-29 1997-04-22 Cray Research, Inc. Method of processing a sequence of conditional vector IF statements
JPH04242861A (ja) * 1990-12-28 1992-08-31 Sony Corp 内積演算回路
JP3494787B2 (ja) * 1995-07-13 2004-02-09 富士写真フイルム株式会社 画像データの補間演算方法およびその方法を使用した装置
US5905757A (en) * 1996-10-04 1999-05-18 Motorola, Inc. Filter co-processor
US6286346B1 (en) * 1998-04-30 2001-09-11 Medtronic, Inc. Interruptable multiply and/or divide operations for use with an interrupt in a medical device processor

Also Published As

Publication number Publication date
US6557097B1 (en) 2003-04-29
JP2000322408A (ja) 2000-11-24
EP0992917B1 (de) 2007-07-04
EP0992917A1 (de) 2000-04-12
JP4355410B2 (ja) 2009-11-04
DE69838028D1 (de) 2007-08-16

Similar Documents

Publication Publication Date Title
DE69932481T2 (de) Kellerzeigerverwaltung
DE69233361T2 (de) Ein-Chip-Mikrocomputer
DE3786594T3 (de) Speicherverwaltungseinheit für Digitalsignalprozessor.
DE19735350B4 (de) Vektorprozessor zum Ausführen paralleler Operationen und Verfahren hierfür
DE19735348B4 (de) Vektorprozessor zur Einzelbefehl-Mehrdaten-Verarbeitung unter Verwendung von mehreren Bänken von Vektorregistern und zugehöriges Verfahren zum Betreiben desselben
DE19540102C2 (de) Verfahren und Gleitkomma-Recheneinheit mit einer Logik für eine Vierfach-Präzisions-Arithmetik
DE2755273C2 (de)
DE69709078T2 (de) Verwaltungssystem zur datenverarbeitung
DE69627807T2 (de) Datenprozessor zum gleichzeitigen Dataladen und Durchführung einer multiplizier-addier Operation
DE69801673T2 (de) Co-prozessordatenzugangskontrolle
DE19839627B4 (de) Digitaler Signalprozessor
DE69824193T2 (de) Datenverarbeitungseinheit mit der fähigkeit von digitaler signalverarbeitung
DE69430838T2 (de) Schaltung und Verfahren zur parallelen Verschiebung und Addition
DE60033961T2 (de) Verzweigungs- und zurückbefehl
DE60210494T2 (de) Hochgeschwindigkeitsberechnung in einer arithmetik- und logikschaltung
DE69435047T2 (de) Schaltung und Verfahren zur parallelen Addition und Mittelwertbildung
DE69628325T2 (de) Signalverarbeitungssystem mit multiplizierung- addierungsoperationen
DE69624578T2 (de) Multiplixier-addierungsvorrichtung für gepackte daten
DE112013005236T5 (de) Verfahren und Vorrichtung für Integralbild-Berechnungsbefehle
DE69722859T2 (de) Formatumwandlung von Datenwörtern graphischer Bilder
DE69418146T2 (de) Temporärer Registersatz für einen superpipeline-superskalaren Prozessor
DE112004001648T5 (de) Verfahren, Vorrichtung und Befehle für parallele Datenumwandlung
DE102018125805A1 (de) Systeme, verfahren, und vorrichtungen für skalarproduktoperationen
DE69718485T2 (de) Registeraddressierung in einer datenverarbeitungsvorrichtung
DE19983870B4 (de) Berechnung impliziter Datentypbits für Simd-Operationen

Legal Events

Date Code Title Description
8364 No opposition during term of opposition